about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications')
-rw-r--r--nixpkgs/pkgs/applications/accessibility/contrast/default.nix72
-rw-r--r--nixpkgs/pkgs/applications/accessibility/dasher/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/accessibility/mousetweaks/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/audio/AMB-plugins/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/audio/FIL-plugins/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/audio/MMA/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/audio/a2jmidid/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/audio/aacgain/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/audio/abcde/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/audio/adlplug/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/audio/aeolus/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/audio/airwave/default.nix92
-rw-r--r--nixpkgs/pkgs/applications/audio/aj-snapshot/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/audio/amarok/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/audio/ams-lv2/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/audio/ams/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/audio/ardour/5.nix162
-rw-r--r--nixpkgs/pkgs/applications/audio/ardour/as-flags.patch12
-rw-r--r--nixpkgs/pkgs/applications/audio/ardour/default.nix187
-rw-r--r--nixpkgs/pkgs/applications/audio/ario/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/audio/artyFX/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/audio/asunder/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/audio/aucatctl/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/audio/audacious/default.nix71
-rw-r--r--nixpkgs/pkgs/applications/audio/audacious/qt-5.nix92
-rw-r--r--nixpkgs/pkgs/applications/audio/audacity/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/audio/audio-recorder/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/audio/aumix/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/autotalent/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/axoloti/default.nix101
-rw-r--r--nixpkgs/pkgs/applications/audio/axoloti/dfu-util.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/axoloti/libusb1.nix38
-rw-r--r--nixpkgs/pkgs/applications/audio/baudline/default.nix70
-rw-r--r--nixpkgs/pkgs/applications/audio/beast/patch.patch187
-rw-r--r--nixpkgs/pkgs/applications/audio/bitmeter/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio1.nix98
-rw-r--r--nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio2.nix16
-rw-r--r--nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix23
-rw-r--r--nixpkgs/pkgs/applications/audio/bjumblr/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/audio/bristol/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/audio/bs1770gain/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/audio/bsequencer/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/audio/bshapr/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/audio/bslizr/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/audio/cadence/default.nix100
-rw-r--r--nixpkgs/pkgs/applications/audio/calf/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/audio/cantata/default.nix95
-rw-r--r--nixpkgs/pkgs/applications/audio/caps/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/carla/default.nix83
-rw-r--r--nixpkgs/pkgs/applications/audio/caudec/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/audio/cava/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/audio/cd-discid/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/cdparanoia/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/audio/cdparanoia/fix_private_keyword.patch468
-rw-r--r--nixpkgs/pkgs/applications/audio/cdparanoia/utils.patch68
-rw-r--r--nixpkgs/pkgs/applications/audio/cheesecutter/0001-fix-impure-build-date-display.patch26
-rw-r--r--nixpkgs/pkgs/applications/audio/cheesecutter/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/audio/chuck/darwin-limits.patch13
-rw-r--r--nixpkgs/pkgs/applications/audio/chuck/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/audio/clementine/clementine-spotify-blob.patch13
-rw-r--r--nixpkgs/pkgs/applications/audio/clementine/default.nix135
-rw-r--r--nixpkgs/pkgs/applications/audio/clerk/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/cmt/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/audio/cmus/default.nix136
-rw-r--r--nixpkgs/pkgs/applications/audio/cmus/option-debugging.patch42
-rw-r--r--nixpkgs/pkgs/applications/audio/cmusfm/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/audio/cozy-audiobooks/default.nix82
-rw-r--r--nixpkgs/pkgs/applications/audio/crip/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/audio/csa/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/audio/csound/csound-manual/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/audio/csound/csound-qt/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/audio/csound/csound-qt/rtmidipath.patch17
-rw-r--r--nixpkgs/pkgs/applications/audio/csound/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/audio/curseradio/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/audio/curseradio/mpv.patch11
-rw-r--r--nixpkgs/pkgs/applications/audio/deadbeef/default.nix117
-rw-r--r--nixpkgs/pkgs/applications/audio/deadbeef/plugins/headerbar-gtk3.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/deadbeef/plugins/infobar.nix34
-rw-r--r--nixpkgs/pkgs/applications/audio/deadbeef/plugins/lyricbar.nix26
-rw-r--r--nixpkgs/pkgs/applications/audio/deadbeef/plugins/mpris2.nix23
-rw-r--r--nixpkgs/pkgs/applications/audio/deadbeef/wrapper.nix14
-rw-r--r--nixpkgs/pkgs/applications/audio/denemo/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/audio/dfasma/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/audio/dirt/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/audio/distrho/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/audio/dr14_tmeter/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/audio/dragonfly-reverb/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/audio/drumgizmo/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/audio/drumkv1/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/audio/easytag/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/audio/ecasound/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/audio/eflite/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/audio/eflite/format.patch11
-rw-r--r--nixpkgs/pkgs/applications/audio/ekho/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/audio/ensemble-chorus/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/audio/eq10q/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/audio/espeak-ng/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/audio/espeak/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/audio/espeak/edit.nix60
-rw-r--r--nixpkgs/pkgs/applications/audio/espeak/espeakedit-configurable-path-espeak-data.patch15
-rw-r--r--nixpkgs/pkgs/applications/audio/espeak/espeakedit-configurable-sox-path.patch27
-rw-r--r--nixpkgs/pkgs/applications/audio/espeak/espeakedit-fix-makefile.patch26
-rw-r--r--nixpkgs/pkgs/applications/audio/espeak/espeakedit-gcc6.patch57
-rw-r--r--nixpkgs/pkgs/applications/audio/espeak/gcc6.patch13
-rw-r--r--nixpkgs/pkgs/applications/audio/eteroj.lv2/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/audio/faust/faust1.nix208
-rw-r--r--nixpkgs/pkgs/applications/audio/faust/faust2.nix222
-rw-r--r--nixpkgs/pkgs/applications/audio/faust/faust2alqt.nix15
-rw-r--r--nixpkgs/pkgs/applications/audio/faust/faust2alsa.nix29
-rw-r--r--nixpkgs/pkgs/applications/audio/faust/faust2csound.nix20
-rw-r--r--nixpkgs/pkgs/applications/audio/faust/faust2firefox.nix14
-rw-r--r--nixpkgs/pkgs/applications/audio/faust/faust2jack.nix26
-rw-r--r--nixpkgs/pkgs/applications/audio/faust/faust2jackrust.nix18
-rw-r--r--nixpkgs/pkgs/applications/audio/faust/faust2jaqt.nix26
-rw-r--r--nixpkgs/pkgs/applications/audio/faust/faust2ladspa.nix12
-rw-r--r--nixpkgs/pkgs/applications/audio/faust/faust2lv2.nix15
-rw-r--r--nixpkgs/pkgs/applications/audio/faust/faustlive.nix35
-rw-r--r--nixpkgs/pkgs/applications/audio/fdkaac/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/flac/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/audio/flac123/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/audio/flacon/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/audio/fluidsynth/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/audio/fmit/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/audio/fmsynth/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/audio/fomp/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/audio/foo-yc20/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/audio/freewheeling/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/audio/friture/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/audio/friture/factorial.patch13
-rw-r--r--nixpkgs/pkgs/applications/audio/ft2-clone/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/game-music-emu/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/audio/gbsplay/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/audio/giada/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/audio/gigedit/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/audio/gjay/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/audio/gmpc/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/audio/gmpc/libmpd-11.8.17-remove-strndup.patch15
-rw-r--r--nixpkgs/pkgs/applications/audio/gmu/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/gnome-podcasts/default.nix81
-rw-r--r--nixpkgs/pkgs/applications/audio/goattracker/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/audio/google-musicmanager/default.nix77
-rw-r--r--nixpkgs/pkgs/applications/audio/google-play-music-desktop-player/default.nix82
-rw-r--r--nixpkgs/pkgs/applications/audio/gpodder/default.nix81
-rw-r--r--nixpkgs/pkgs/applications/audio/gpodder/disable-autoupdate.patch55
-rw-r--r--nixpkgs/pkgs/applications/audio/gradio/0001-Remove-post-install-script-that-hardcodes-paths.patch23
-rw-r--r--nixpkgs/pkgs/applications/audio/gradio/default.nix72
-rw-r--r--nixpkgs/pkgs/applications/audio/grandorgue/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/audio/greg/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/audio/gspeech/default.nix73
-rw-r--r--nixpkgs/pkgs/applications/audio/gtklick/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/audio/gtkpod/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/audio/guitarix/default.nix137
-rw-r--r--nixpkgs/pkgs/applications/audio/guitarix/fix-build.patch10
-rw-r--r--nixpkgs/pkgs/applications/audio/gxmatcheq-lv2/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/gxplugins-lv2/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/audio/helio-workstation/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/audio/helm/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/audio/hybridreverb2/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/audio/hydrogen/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/audio/hydrogen/unstable.nix34
-rw-r--r--nixpkgs/pkgs/applications/audio/i-score/default.nix85
-rw-r--r--nixpkgs/pkgs/applications/audio/iannix/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/id3v2/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/audio/infamousPlugins/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/audio/ingen/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/audio/ir.lv2/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/audio/jaaa/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/audio/jack-capture/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/jack-oscrolloscope/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/audio/jack-rack/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/audio/jackmeter/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/audio/jackmix/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/jackmix/no_error.patch13
-rw-r--r--nixpkgs/pkgs/applications/audio/jalv/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/audio/jamin/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/jamulus/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/audio/japa/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/keyfinder-cli/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/keyfinder/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/audio/kid3/default.nix72
-rw-r--r--nixpkgs/pkgs/applications/audio/klick/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/audio/klystrack/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/audio/ladspa-plugins/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/ladspa-sdk/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/audio/ladspa-sdk/ladspah.nix26
-rw-r--r--nixpkgs/pkgs/applications/audio/lash/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/audio/lash/gcc-47.patch11
-rw-r--r--nixpkgs/pkgs/applications/audio/lash/socket.patch16
-rw-r--r--nixpkgs/pkgs/applications/audio/lastfmsubmitd/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/audio/lingot/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/audio/linuxband/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/audio/linuxsampler/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/audio/lmms/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/audio/lollypop/default.nix102
-rw-r--r--nixpkgs/pkgs/applications/audio/lsp-plugins/default.nix148
-rw-r--r--nixpkgs/pkgs/applications/audio/ltc-tools/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/audio/luppp/build-install.patch16
-rw-r--r--nixpkgs/pkgs/applications/audio/luppp/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/audio/lv2bm/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/audio/magnetophonDSP/CharacterCompressor/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/audio/magnetophonDSP/CompBus/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/audio/magnetophonDSP/ConstantDetuneChorus/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/audio/magnetophonDSP/LazyLimiter/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/audio/magnetophonDSP/MBdistortion/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/audio/magnetophonDSP/RhythmDelay/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/audio/magnetophonDSP/VoiceOfFaust/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/audio/magnetophonDSP/faustCompressors/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/audio/magnetophonDSP/pluginUtils/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/audio/magnetophonDSP/shelfMultiBand/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/audio/mda-lv2/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/audio/meterbridge/buf_rect.patch12
-rw-r--r--nixpkgs/pkgs/applications/audio/meterbridge/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/audio/meterbridge/fix_build_with_gcc-5.patch31
-rw-r--r--nixpkgs/pkgs/applications/audio/meters_lv2/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/audio/mhwaveedit/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/audio/mi2ly/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/audio/mi2ly/default.upstream3
-rw-r--r--nixpkgs/pkgs/applications/audio/mid2key/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/audio/midas/generic.nix43
-rw-r--r--nixpkgs/pkgs/applications/audio/midas/m32edit.nix9
-rw-r--r--nixpkgs/pkgs/applications/audio/midas/x32edit.nix9
-rw-r--r--nixpkgs/pkgs/applications/audio/midisheetmusic/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/audio/mikmod/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/audio/milkytracker/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/audio/mimic/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/audio/mimms/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/mixxx/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/audio/moc/default.nix104
-rw-r--r--nixpkgs/pkgs/applications/audio/moc/moc-ffmpeg4.patch33
-rw-r--r--nixpkgs/pkgs/applications/audio/moc/pulseaudio.patch800
-rw-r--r--nixpkgs/pkgs/applications/audio/mod-distortion/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/audio/monkeys-audio/buildfix.diff49
-rw-r--r--nixpkgs/pkgs/applications/audio/monkeys-audio/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/gmusic.nix29
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/iris.nix29
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/local-images.nix32
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/local-sqlite.nix25
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/moped.nix26
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/mopidy.nix44
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/mopify.nix23
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/mpd.nix24
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/mpris.nix27
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/musicbox-webclient.nix23
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/somafm.nix26
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/soundcloud.nix23
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/spotify-tunigo.nix23
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/spotify.nix23
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/youtube.nix29
-rw-r--r--nixpkgs/pkgs/applications/audio/mp3blaster/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/audio/mp3gain/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/audio/mp3info/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/audio/mp3splt/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/audio/mp3val/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/audio/mpc/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/audio/mpc123/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/audio/mpc123/use-gcc.patch13
-rw-r--r--nixpkgs/pkgs/applications/audio/mpg123/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/audio/mpg321/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/audio/munt/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/audio/mup/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/audio/mup/ghostscript-permit-file-write.patch5
-rw-r--r--nixpkgs/pkgs/applications/audio/muse/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/audio/muse/fix-parallel-building.patch93
-rw-r--r--nixpkgs/pkgs/applications/audio/musescore/darwin.nix34
-rw-r--r--nixpkgs/pkgs/applications/audio/musescore/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/audio/musescore/remove_qtwebengine_install_hack.patch19
-rw-r--r--nixpkgs/pkgs/applications/audio/musikcube/default.nix57
-rw-r--r--nixpkgs/pkgs/applications/audio/musly/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/audio/ncmpc/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/audio/ncmpcpp/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/audio/ncpamixer/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/audio/ncspot/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/audio/netease-cloud-music/default.nix81
-rw-r--r--nixpkgs/pkgs/applications/audio/ninjas2/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/audio/noise-repellent/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/audio/non/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/audio/nootka/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/nootka/unstable.nix33
-rw-r--r--nixpkgs/pkgs/applications/audio/normalize/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/audio/nova-filters/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/openmpt123/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/opus-tools/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/audio/opusfile/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/audio/opusfile/include-multistream.patch12
-rw-r--r--nixpkgs/pkgs/applications/audio/orca-c/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/osmid/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/audio/padthv1/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/audio/pamix/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/pamixer/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/audio/paprefs/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/audio/parlatype/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/audio/patchage/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/audio/paulstretch/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/audio/pavucontrol/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/audio/pd-plugins/cyclone/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/audio/pd-plugins/helmholtz/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/audio/pd-plugins/maxlib/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/audio/pd-plugins/mrpeach/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/audio/pd-plugins/puremapping/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/pd-plugins/timbreid/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/audio/pd-plugins/zexy/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/audio/petrifoo/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/audio/pianobar/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/audio/pianobooster/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/picard/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/audio/pithos/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/audio/playbar2/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/audio/plugin-torture/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/pmidi/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/audio/polyphone/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/audio/ponymix/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/audio/praat/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/projectm/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/audio/pt2-clone/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/puddletag/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/audio/pulseaudio-ctl/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/audio/pulseaudio-dlna/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/audio/pulseaudio-dlna/zeroconf.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/pulseaudio-modules-bt/default.nix87
-rw-r--r--nixpkgs/pkgs/applications/audio/pulseaudio-modules-bt/fix-install-path.patch11
-rw-r--r--nixpkgs/pkgs/applications/audio/pulseeffects/default.nix115
-rw-r--r--nixpkgs/pkgs/applications/audio/puredata/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/audio/puredata/wrapper.nix16
-rw-r--r--nixpkgs/pkgs/applications/audio/qjackctl/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/audio/qmidiarp/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/audio/qmidinet/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/audio/qmidiroute/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/qmmp/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/audio/qsampler/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/audio/qsynth/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/audio/qtractor/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/audio/qtscrobbler/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/audio/quodlibet/default.nix79
-rw-r--r--nixpkgs/pkgs/applications/audio/r128gain/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/audio/r128gain/ffmpeg-location.patch31
-rw-r--r--nixpkgs/pkgs/applications/audio/radiotray-ng/default.nix100
-rw-r--r--nixpkgs/pkgs/applications/audio/radiotray-ng/no-dl-googletest.patch55
-rw-r--r--nixpkgs/pkgs/applications/audio/rakarrack/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/audio/rakarrack/fltk-path.patch35
-rw-r--r--nixpkgs/pkgs/applications/audio/reaper/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/audio/redoflacs/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/audio/renoise/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/audio/rhvoice/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/audio/rhvoice/honor_nix_environment.patch14
-rw-r--r--nixpkgs/pkgs/applications/audio/rhythmbox/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/audio/rkrlv2/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/audio/rofi-mpd/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/audio/rosegarden/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/audio/rubyripper/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/audio/samplv1/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/audio/sayonara/default.nix82
-rw-r--r--nixpkgs/pkgs/applications/audio/schismtracker/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/audio/seq24/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/audio/seq24/mutex_no_nameclash.patch58
-rw-r--r--nixpkgs/pkgs/applications/audio/setbfree/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/audio/sfizz/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/audio/sfxr-qt/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/audio/sfxr/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/audio/shntool/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/audio/shortwave/default.nix87
-rw-r--r--nixpkgs/pkgs/applications/audio/sidplayfp/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/audio/sisco.lv2/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/audio/snapcast/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/audio/snd/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/sndpeek/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/audio/sndpeek/pthread.patch13
-rw-r--r--nixpkgs/pkgs/applications/audio/sonata/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/audio/sonic-lineup/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/audio/sonic-pi/default.nix116
-rw-r--r--nixpkgs/pkgs/applications/audio/sonic-visualiser/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/audio/sooperlooper/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/audio/sorcer/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/audio/sound-juicer/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/audio/soundkonverter/default.nix97
-rw-r--r--nixpkgs/pkgs/applications/audio/soundscape-renderer/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/audio/soundtracker/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/audio/spectmorph/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/audio/spectrojack/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/speech-denoiser/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/audio/spek/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/audio/split2flac/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/audio/spotify-tui/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/audio/spotify/default.nix167
-rwxr-xr-xnixpkgs/pkgs/applications/audio/spotify/update.sh88
-rw-r--r--nixpkgs/pkgs/applications/audio/spotifyd/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/audio/spotifywm/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/squeezelite/default.nix70
-rw-r--r--nixpkgs/pkgs/applications/audio/squishyball/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/audio/squishyball/gnu-screen.patch20
-rw-r--r--nixpkgs/pkgs/applications/audio/ssrc/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/audio/stone-phaser/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/audio/strawberry/default.nix99
-rw-r--r--nixpkgs/pkgs/applications/audio/streamripper/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/audio/string-machine/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/audio/sunvox/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/audio/svox/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/audio/swh-lv2/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/audio/synthv1/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/audio/tambura/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/audio/tetraproc/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/audio/timemachine/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/audio/tony/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/audio/transcode/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/audio/transcribe/default.nix73
-rw-r--r--nixpkgs/pkgs/applications/audio/traverso/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/tree-from-tags/Gemfile3
-rw-r--r--nixpkgs/pkgs/applications/audio/tree-from-tags/Gemfile.lock13
-rw-r--r--nixpkgs/pkgs/applications/audio/tree-from-tags/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/audio/tree-from-tags/gemset.nix10
-rw-r--r--nixpkgs/pkgs/applications/audio/uade123/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/audio/vcv-rack/default.nix103
-rw-r--r--nixpkgs/pkgs/applications/audio/vcv-rack/rack-minimize-vendoring.patch13
-rw-r--r--nixpkgs/pkgs/applications/audio/vimpc/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/vkeybd/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/audio/vmpk/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/audio/vocal/default.nix80
-rw-r--r--nixpkgs/pkgs/applications/audio/vorbis-tools/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/audio/waon/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/wavegain/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/audio/whipper/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/audio/whipper/paths.patch32
-rw-r--r--nixpkgs/pkgs/applications/audio/wolf-shaper/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/audio/x42-avldrums/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/x42-gmsynth/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/x42-plugins/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/audio/xmp/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/audio/xsynth-dssi/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/audio/yasr/10_fix_openpty_forkpty_declarations25
-rw-r--r--nixpkgs/pkgs/applications/audio/yasr/20_maxpathlen11
-rw-r--r--nixpkgs/pkgs/applications/audio/yasr/30_conf18
-rw-r--r--nixpkgs/pkgs/applications/audio/yasr/40_dectalk_extended_chars14
-rw-r--r--nixpkgs/pkgs/applications/audio/yasr/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/audio/ympd/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/audio/yoshimi/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/audio/zam-plugins/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/audio/zita-ajbridge/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/zita-at1/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/audio/zita-njbridge/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/audio/zynaddsubfx/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/backup/areca/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/backup/areca/fix-javah-bug.diff24
-rw-r--r--nixpkgs/pkgs/applications/backup/deja-dup/default.nix112
-rw-r--r--nixpkgs/pkgs/applications/backup/deja-dup/fix-paths.patch11
-rw-r--r--nixpkgs/pkgs/applications/backup/deja-dup/hardcode-gsettings.patch16
-rw-r--r--nixpkgs/pkgs/applications/backup/vdmfec/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/backup/vorta/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/blockchains/aeon/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/blockchains/bitcoin-abc.nix46
-rw-r--r--nixpkgs/pkgs/applications/blockchains/bitcoin-classic.nix54
-rw-r--r--nixpkgs/pkgs/applications/blockchains/bitcoin-gold.nix70
-rw-r--r--nixpkgs/pkgs/applications/blockchains/bitcoin-unlimited.nix66
-rw-r--r--nixpkgs/pkgs/applications/blockchains/bitcoin.nix98
-rw-r--r--nixpkgs/pkgs/applications/blockchains/btc1.nix41
-rw-r--r--nixpkgs/pkgs/applications/blockchains/btcdeb/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/blockchains/clightning.nix50
-rw-r--r--nixpkgs/pkgs/applications/blockchains/cryptop/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/blockchains/dashpay.nix44
-rw-r--r--nixpkgs/pkgs/applications/blockchains/dcrd.nix34
-rw-r--r--nixpkgs/pkgs/applications/blockchains/dcrwallet.nix43
-rw-r--r--nixpkgs/pkgs/applications/blockchains/dero.nix27
-rw-r--r--nixpkgs/pkgs/applications/blockchains/digibyte.nix69
-rw-r--r--nixpkgs/pkgs/applications/blockchains/dogecoin.nix41
-rw-r--r--nixpkgs/pkgs/applications/blockchains/ergo/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/blockchains/ethabi.nix23
-rw-r--r--nixpkgs/pkgs/applications/blockchains/exodus/default.nix80
-rw-r--r--nixpkgs/pkgs/applications/blockchains/fix-bitcoin-qt-build.patch15
-rw-r--r--nixpkgs/pkgs/applications/blockchains/freicoin.nix41
-rw-r--r--nixpkgs/pkgs/applications/blockchains/go-ethereum.nix58
-rw-r--r--nixpkgs/pkgs/applications/blockchains/ledger-live-desktop/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/blockchains/litecoin.nix55
-rw-r--r--nixpkgs/pkgs/applications/blockchains/lnd.nix24
-rw-r--r--nixpkgs/pkgs/applications/blockchains/masari.nix27
-rw-r--r--nixpkgs/pkgs/applications/blockchains/mist.nix72
-rw-r--r--nixpkgs/pkgs/applications/blockchains/monero-gui/default.nix88
-rw-r--r--nixpkgs/pkgs/applications/blockchains/monero-gui/move-log-file.patch14
-rw-r--r--nixpkgs/pkgs/applications/blockchains/monero/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/blockchains/namecoin.nix48
-rw-r--r--nixpkgs/pkgs/applications/blockchains/nano-wallet/CMakeLists.txt.patch13
-rw-r--r--nixpkgs/pkgs/applications/blockchains/nano-wallet/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/blockchains/parity-ui/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/blockchains/parity-ui/env.nix19
-rw-r--r--nixpkgs/pkgs/applications/blockchains/parity/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/blockchains/particl/particl-core.nix53
-rw-r--r--nixpkgs/pkgs/applications/blockchains/pivx.nix64
-rw-r--r--nixpkgs/pkgs/applications/blockchains/polkadot/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/blockchains/quorum.nix35
-rw-r--r--nixpkgs/pkgs/applications/blockchains/stellar-core-dirty-version.patch15
-rw-r--r--nixpkgs/pkgs/applications/blockchains/stellar-core.nix47
-rw-r--r--nixpkgs/pkgs/applications/blockchains/sumokoin.nix35
-rw-r--r--nixpkgs/pkgs/applications/blockchains/tessera.nix26
-rw-r--r--nixpkgs/pkgs/applications/blockchains/vertcoin.nix69
-rw-r--r--nixpkgs/pkgs/applications/blockchains/wasabiwallet/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/blockchains/wownero.nix60
-rw-r--r--nixpkgs/pkgs/applications/blockchains/zcash/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/blockchains/zcash/librustzcash/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/display-managers/lightdm-enso-os-greeter/default.nix70
-rw-r--r--nixpkgs/pkgs/applications/display-managers/lightdm-enso-os-greeter/fix-paths.patch24
-rw-r--r--nixpkgs/pkgs/applications/display-managers/lightdm-mini-greeter/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/display-managers/lightdm-tiny-greeter/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/display-managers/lightdm/default.nix137
-rw-r--r--nixpkgs/pkgs/applications/display-managers/lightdm/fix-paths.patch13
-rw-r--r--nixpkgs/pkgs/applications/display-managers/lightdm/gtk-greeter.nix72
-rw-r--r--nixpkgs/pkgs/applications/display-managers/ly/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/display-managers/sddm/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/display-managers/sddm/sddm-ignore-config-mtime.patch43
-rw-r--r--nixpkgs/pkgs/applications/editors/aewan/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/editors/amp/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/editors/android-studio/common.nix212
-rw-r--r--nixpkgs/pkgs/applications/editors/android-studio/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/editors/apostrophe/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/editors/aseprite/allegro-glibc-2.30.patch8
-rw-r--r--nixpkgs/pkgs/applications/editors/aseprite/default.nix128
-rw-r--r--nixpkgs/pkgs/applications/editors/aseprite/skia-deps.nix23
-rwxr-xr-xnixpkgs/pkgs/applications/editors/aseprite/skia-make-deps.sh37
-rw-r--r--nixpkgs/pkgs/applications/editors/aseprite/skia.nix76
-rw-r--r--nixpkgs/pkgs/applications/editors/atom/default.nix83
-rw-r--r--nixpkgs/pkgs/applications/editors/atom/env.nix21
-rw-r--r--nixpkgs/pkgs/applications/editors/bless/default.nix80
-rw-r--r--nixpkgs/pkgs/applications/editors/bluefish/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/editors/bonzomatic/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/editors/brackets/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/editors/bvi/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/editors/bviplus/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/editors/codeblocks/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/editors/codeblocks/writable-projects.patch18
-rw-r--r--nixpkgs/pkgs/applications/editors/deadpixi-sam/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/editors/dhex/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/editors/dit/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/editors/eclipse/build-eclipse.nix61
-rw-r--r--nixpkgs/pkgs/applications/editors/eclipse/default.nix144
-rw-r--r--nixpkgs/pkgs/applications/editors/eclipse/plugins.nix664
-rw-r--r--nixpkgs/pkgs/applications/editors/ed/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/editors/edbrowse/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/editors/edit/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/editors/elvis/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/cedet/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/cedille/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/color-theme-solarized/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/elpa-generated.nix3891
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/elpa-packages.nix62
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/emacs2nix.nix23
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/emacspeak/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/ess-R-object-popup/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/font-lock-plus/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/helm-words/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/hsc3/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/ido-ubiquitous/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/libgenerated.nix95
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/manual-packages.nix177
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/melpa-packages.nix600
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/org-generated.nix33
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/org-mac-link/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/org-packages.nix32
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/perl-completion/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/pod-mode/default.nix18
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/prolog/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/railgun/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/recipes-archive-melpa.json104816
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/rect-mark/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/session-management-for-emacs/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/sunrise-commander/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/sv-kalender/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/tramp/default.nix16
-rwxr-xr-xnixpkgs/pkgs/applications/editors/emacs-modes/update-elpa4
-rwxr-xr-xnixpkgs/pkgs/applications/editors/emacs-modes/update-from-overlay19
-rwxr-xr-xnixpkgs/pkgs/applications/editors/emacs-modes/update-melpa6
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/update-melpa.el434
-rwxr-xr-xnixpkgs/pkgs/applications/editors/emacs-modes/update-org4
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/updater-emacs.nix40
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/zeitgeist/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/25.nix146
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/at-fdcwd.patch15
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/clean-env.patch15
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/default.nix161
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/macport.nix111
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/site-start.el60
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/tramp-detect-wrapped-gvfsd.patch14
-rw-r--r--nixpkgs/pkgs/applications/editors/featherpad/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/editors/flpsed/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/editors/focuswriter/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/editors/fte/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/editors/geany/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/editors/geany/with-vte.nix24
-rw-r--r--nixpkgs/pkgs/applications/editors/ghostwriter/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/editors/glow/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/editors/gnome-builder/default.nix158
-rw-r--r--nixpkgs/pkgs/applications/editors/gnome-latex/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/editors/gobby/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/editors/hecate/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/editors/hecate/deps.nix29
-rw-r--r--nixpkgs/pkgs/applications/editors/heme/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/editors/hexcurse/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/editors/hexdino/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/editors/hexedit/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/editors/howl/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/editors/ht/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/editors/ht/gcc7.patch11
-rw-r--r--nixpkgs/pkgs/applications/editors/jedit/build.xml.patch257
-rw-r--r--nixpkgs/pkgs/applications/editors/jedit/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/editors/jetbrains/common.nix82
-rw-r--r--nixpkgs/pkgs/applications/editors/jetbrains/default.nix425
-rwxr-xr-xnixpkgs/pkgs/applications/editors/jetbrains/update.pl92
-rw-r--r--nixpkgs/pkgs/applications/editors/joe/default.nix18
-rw-r--r--nixpkgs/pkgs/applications/editors/jucipp/default.nix73
-rw-r--r--nixpkgs/pkgs/applications/editors/jupp/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/editors/jupyter/default.nix18
-rw-r--r--nixpkgs/pkgs/applications/editors/jupyter/kernel.nix74
-rw-r--r--nixpkgs/pkgs/applications/editors/kakoune/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/editors/kakoune/plugins/default.nix13
-rw-r--r--nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-ansi.nix32
-rw-r--r--nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-auto-pairs.nix24
-rw-r--r--nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-buffers.nix24
-rw-r--r--nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-fzf.nix38
-rw-r--r--nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-plumb.nix31
-rw-r--r--nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-powerline.nix29
-rw-r--r--nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-vertical-selection.nix24
-rw-r--r--nixpkgs/pkgs/applications/editors/kakoune/wrapper.nix44
-rw-r--r--nixpkgs/pkgs/applications/editors/kakoune/wrapper.sh30
-rw-r--r--nixpkgs/pkgs/applications/editors/kdevelop5/kdev-php.nix22
-rw-r--r--nixpkgs/pkgs/applications/editors/kdevelop5/kdev-python.nix26
-rw-r--r--nixpkgs/pkgs/applications/editors/kdevelop5/kdevelop-pg-qt.nix31
-rw-r--r--nixpkgs/pkgs/applications/editors/kdevelop5/kdevelop.nix73
-rw-r--r--nixpkgs/pkgs/applications/editors/kdevelop5/wrapper.nix7
-rw-r--r--nixpkgs/pkgs/applications/editors/kile/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/editors/kodestudio/default.nix134
-rw-r--r--nixpkgs/pkgs/applications/editors/leafpad/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/editors/leo-editor/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/editors/lighttable/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/editors/lite/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/editors/manuskript/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/editors/mg/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/editors/micro/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/editors/micro/deps.nix336
-rw-r--r--nixpkgs/pkgs/applications/editors/mindforger/build.patch91
-rw-r--r--nixpkgs/pkgs/applications/editors/mindforger/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/editors/mle/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/editors/moe/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/editors/monodevelop/default.nix81
-rw-r--r--nixpkgs/pkgs/applications/editors/monodevelop/git-revert-12d610fb3f6dce121df538e36f21d8c2eeb0a6e3.patch57
-rw-r--r--nixpkgs/pkgs/applications/editors/music/tuxguitar/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/editors/nano/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/editors/nano/nanorc/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/editors/ne/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/editors/nedit/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/editors/neovim/default.nix135
-rw-r--r--nixpkgs/pkgs/applications/editors/neovim/gnvim/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/editors/neovim/gnvim/wrapper.nix41
-rw-r--r--nixpkgs/pkgs/applications/editors/neovim/neovim-remote.nix30
-rw-r--r--nixpkgs/pkgs/applications/editors/neovim/qt.nix79
-rw-r--r--nixpkgs/pkgs/applications/editors/neovim/ruby_provider/Gemfile3
-rw-r--r--nixpkgs/pkgs/applications/editors/neovim/ruby_provider/Gemfile.lock17
-rw-r--r--nixpkgs/pkgs/applications/editors/neovim/ruby_provider/gemset.nix27
-rw-r--r--nixpkgs/pkgs/applications/editors/neovim/system_rplugin_manifest.patch29
-rw-r--r--nixpkgs/pkgs/applications/editors/neovim/wrapper.nix144
-rw-r--r--nixpkgs/pkgs/applications/editors/netbeans/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/editors/notepadqq/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/editors/nvi/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/editors/nvpy/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/editors/okteta/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/editors/quartus-prime/default.nix180
-rw-r--r--nixpkgs/pkgs/applications/editors/quartus-prime/vsim.patch11
-rw-r--r--nixpkgs/pkgs/applications/editors/quilter/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/editors/qxmledit/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/editors/qxmledit/qxmledit.json6
-rw-r--r--nixpkgs/pkgs/applications/editors/rednotebook/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/editors/retext/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/editors/rstudio/clang-location.patch25
-rw-r--r--nixpkgs/pkgs/applications/editors/rstudio/default.nix143
-rw-r--r--nixpkgs/pkgs/applications/editors/rstudio/r-location.patch25
-rw-r--r--nixpkgs/pkgs/applications/editors/scite/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/editors/setzer/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/editors/sigil/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/editors/standardnotes/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/editors/sublime/2/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/editors/sublime/3/common.nix158
-rw-r--r--nixpkgs/pkgs/applications/editors/sublime/3/packages.nix19
-rw-r--r--nixpkgs/pkgs/applications/editors/supertux-editor/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/editors/tecoc/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/editors/texmacs/common.nix68
-rw-r--r--nixpkgs/pkgs/applications/editors/texmacs/darwin.nix60
-rw-r--r--nixpkgs/pkgs/applications/editors/texmacs/darwin.patch29
-rw-r--r--nixpkgs/pkgs/applications/editors/texmacs/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/editors/texmaker/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/editors/texstudio/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/editors/textadept/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/editors/textadept/deps.nix42
-rw-r--r--nixpkgs/pkgs/applications/editors/texworks/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/editors/thonny/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/editors/tiled/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/editors/tweak/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/editors/typora/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/editors/uemacs/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/editors/vbindiff/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/editors/vim/cflags-prune.diff15
-rw-r--r--nixpkgs/pkgs/applications/editors/vim/common.nix30
-rw-r--r--nixpkgs/pkgs/applications/editors/vim/configurable.nix186
-rw-r--r--nixpkgs/pkgs/applications/editors/vim/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/editors/vim/ft-nix-support.patch20
-rw-r--r--nixpkgs/pkgs/applications/editors/vim/macvim.nix172
-rw-r--r--nixpkgs/pkgs/applications/editors/vim/macvim.patch203
-rw-r--r--nixpkgs/pkgs/applications/editors/vim/qvim.nix113
-rw-r--r--nixpkgs/pkgs/applications/editors/vim/vimacs.nix34
-rw-r--r--nixpkgs/pkgs/applications/editors/vis/default.nix71
-rw-r--r--nixpkgs/pkgs/applications/editors/vscode/generic.nix96
-rw-r--r--nixpkgs/pkgs/applications/editors/vscode/vscode.nix57
-rw-r--r--nixpkgs/pkgs/applications/editors/vscode/vscodium.nix60
-rw-r--r--nixpkgs/pkgs/applications/editors/vscode/with-extensions.nix75
-rw-r--r--nixpkgs/pkgs/applications/editors/wily/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/editors/wxhexeditor/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/editors/wxhexeditor/missing-semicolon.patch35
-rw-r--r--nixpkgs/pkgs/applications/editors/xmlcopyeditor/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/editors/xmlcopyeditor/xmlcopyeditor.patch36
-rw-r--r--nixpkgs/pkgs/applications/editors/yi/wrapper.nix33
-rw-r--r--nixpkgs/pkgs/applications/editors/zile/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/gis/grass/default.nix108
-rw-r--r--nixpkgs/pkgs/applications/gis/grass/no_symbolic_links.patch37
-rw-r--r--nixpkgs/pkgs/applications/gis/openorienteering-mapper/default.nix93
-rw-r--r--nixpkgs/pkgs/applications/gis/openorienteering-mapper/fix-qttranslations-path.diff13
-rw-r--r--nixpkgs/pkgs/applications/gis/qgis/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/gis/qgis/unwrapped.nix57
-rw-r--r--nixpkgs/pkgs/applications/gis/saga/clang_patch.patch19
-rw-r--r--nixpkgs/pkgs/applications/gis/saga/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/gis/saga/finite.patch13
-rw-r--r--nixpkgs/pkgs/applications/gis/whitebox-tools/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/graphics/ImageMagick/7.0.nix88
-rw-r--r--nixpkgs/pkgs/applications/graphics/ImageMagick/default.nix104
-rw-r--r--nixpkgs/pkgs/applications/graphics/ahoviewer/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/graphics/akira/default.nix76
-rw-r--r--nixpkgs/pkgs/applications/graphics/akira/fix-build-with-vala-0-44-or-later.patch88
-rw-r--r--nixpkgs/pkgs/applications/graphics/alchemy/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/graphics/animbar/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/graphics/antimony/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/graphics/antimony/paths-fix.patch21
-rw-r--r--nixpkgs/pkgs/applications/graphics/apitrace/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/graphics/apngasm/2.nix35
-rw-r--r--nixpkgs/pkgs/applications/graphics/apngasm/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/graphics/autopanosiftc/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/graphics/autotrace/autofig.nix10
-rw-r--r--nixpkgs/pkgs/applications/graphics/autotrace/default.nix125
-rw-r--r--nixpkgs/pkgs/applications/graphics/avocode/default.nix102
-rw-r--r--nixpkgs/pkgs/applications/graphics/awesomebump/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/graphics/awesomebump/qtnproperty-parallel-building.patch9
-rw-r--r--nixpkgs/pkgs/applications/graphics/azpainter/default.nix33
-rwxr-xr-xnixpkgs/pkgs/applications/graphics/batik/builder.sh7
-rw-r--r--nixpkgs/pkgs/applications/graphics/batik/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/graphics/c3d/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/graphics/comical/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/graphics/comical/wxgtk-2.8.patch36
-rw-r--r--nixpkgs/pkgs/applications/graphics/cq-editor/default.nix57
-rw-r--r--nixpkgs/pkgs/applications/graphics/darktable/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/graphics/deskew/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/graphics/dia/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/graphics/digikam/default.nix131
-rw-r--r--nixpkgs/pkgs/applications/graphics/displaycal/default.nix72
-rw-r--r--nixpkgs/pkgs/applications/graphics/djview/default.nix74
-rw-r--r--nixpkgs/pkgs/applications/graphics/dosage/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/graphics/draftsight/default.nix88
-rw-r--r--nixpkgs/pkgs/applications/graphics/drawing/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/graphics/drawio/default.nix94
-rw-r--r--nixpkgs/pkgs/applications/graphics/drawpile/default.nix96
-rw-r--r--nixpkgs/pkgs/applications/graphics/epeg/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/graphics/exrdisplay/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/graphics/exrtools/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/graphics/fbida/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/graphics/feh/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/graphics/fig2dev/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/graphics/fluxus/default.nix96
-rw-r--r--nixpkgs/pkgs/applications/graphics/fluxus/fix-build.patch16
-rw-r--r--nixpkgs/pkgs/applications/graphics/fondo/default.nix73
-rw-r--r--nixpkgs/pkgs/applications/graphics/fontmatrix/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/graphics/freecad/default.nix85
-rw-r--r--nixpkgs/pkgs/applications/graphics/freepv/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/graphics/fstl/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/graphics/gcolor2/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/graphics/gcolor2/gcolor2-amd64.patch46
-rw-r--r--nixpkgs/pkgs/applications/graphics/gcolor3/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/graphics/geeqie/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/graphics/gimp/default.nix178
-rw-r--r--nixpkgs/pkgs/applications/graphics/gimp/plugins/default.nix248
-rw-r--r--nixpkgs/pkgs/applications/graphics/gimp/plugins/patches/focusblur-glib.patch200
-rw-r--r--nixpkgs/pkgs/applications/graphics/gimp/remove-cc-reference.patch13
-rw-r--r--nixpkgs/pkgs/applications/graphics/gimp/wrapper.nix29
-rw-r--r--nixpkgs/pkgs/applications/graphics/glabels/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/graphics/gnome-photos/default.nix125
-rw-r--r--nixpkgs/pkgs/applications/graphics/gnome-photos/installed-tests-path.patch23
-rw-r--r--nixpkgs/pkgs/applications/graphics/gnuclad/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/graphics/gocr/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/graphics/goxel/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/graphics/goxel/disable-imgui_ini.patch13
-rw-r--r--nixpkgs/pkgs/applications/graphics/gpicview/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/graphics/gqview/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/graphics/grafx2/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/graphics/graphicsmagick/compat.nix37
-rw-r--r--nixpkgs/pkgs/applications/graphics/graphicsmagick/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/graphics/graphicsmagick/disable-popen.patch12
-rw-r--r--nixpkgs/pkgs/applications/graphics/gscan2pdf/default.nix107
-rw-r--r--nixpkgs/pkgs/applications/graphics/gthumb/default.nix111
-rw-r--r--nixpkgs/pkgs/applications/graphics/guetzli/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/graphics/hugin/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/graphics/ideogram/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/graphics/image_optim/Gemfile2
-rw-r--r--nixpkgs/pkgs/applications/graphics/image_optim/Gemfile.lock23
-rw-r--r--nixpkgs/pkgs/applications/graphics/image_optim/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/graphics/image_optim/gemset.nix51
-rw-r--r--nixpkgs/pkgs/applications/graphics/imagej/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/graphics/imgcat/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/graphics/imgp/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/graphics/imlibsetroot/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/graphics/imv/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/graphics/inkscape/default.nix133
-rw-r--r--nixpkgs/pkgs/applications/graphics/ipe/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/graphics/jpeg-archive/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/graphics/jpeginfo/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/graphics/jpegoptim/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/graphics/jpegrescan/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/graphics/k3d/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/graphics/kcc/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/graphics/kgraphviewer/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/graphics/kodelife/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/graphics/krita/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/graphics/krop/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/graphics/ktikz/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/graphics/leocad/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/graphics/luminance-hdr/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/graphics/mandelbulber/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/graphics/meh/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/graphics/meme/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/graphics/meshlab/default.nix134
-rw-r--r--nixpkgs/pkgs/applications/graphics/minidjvu/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/graphics/mozjpeg/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/graphics/mtpaint/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/graphics/mypaint/default.nix94
-rw-r--r--nixpkgs/pkgs/applications/graphics/nomacs/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/graphics/ocrad/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/graphics/openimageio/2.x.nix66
-rw-r--r--nixpkgs/pkgs/applications/graphics/openimageio/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/graphics/openscad/default.nix87
-rw-r--r--nixpkgs/pkgs/applications/graphics/panotools/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/graphics/paraview/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/graphics/pbrt/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/graphics/pbrt/openexr-cmake-3.12.patch26
-rw-r--r--nixpkgs/pkgs/applications/graphics/pdfcpu/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/graphics/pencil/default.nix106
-rw-r--r--nixpkgs/pkgs/applications/graphics/photivo/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/graphics/photivo/gcc6.patch13
-rw-r--r--nixpkgs/pkgs/applications/graphics/photoflow/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/graphics/photoqt/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/graphics/phototonic/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/graphics/pick-colour-picker/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/graphics/pinta/default.nix83
-rw-r--r--nixpkgs/pkgs/applications/graphics/potrace/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/graphics/pqiv/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/graphics/processing/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/graphics/qcomicbook/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/graphics/qimgv/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/graphics/qimgv/qt5-12-compat.diff13
-rw-r--r--nixpkgs/pkgs/applications/graphics/qiv/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/graphics/qiv/default.upstream3
-rw-r--r--nixpkgs/pkgs/applications/graphics/qscreenshot/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/graphics/qview/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/graphics/rapcad/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/graphics/rapid-photo-downloader/default.nix88
-rw-r--r--nixpkgs/pkgs/applications/graphics/rawtherapee/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/graphics/renderdoc/default.nix79
-rw-r--r--nixpkgs/pkgs/applications/graphics/runwayml/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/graphics/rx/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/graphics/sane/backends/airscan/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/graphics/sane/backends/brscan4/default.nix94
-rw-r--r--nixpkgs/pkgs/applications/graphics/sane/backends/brscan4/preload.c170
-rw-r--r--nixpkgs/pkgs/applications/graphics/sane/backends/brscan4/udev_rules_type1.nix55
-rw-r--r--nixpkgs/pkgs/applications/graphics/sane/backends/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/graphics/sane/backends/dsseries/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/graphics/sane/backends/generic.nix95
-rw-r--r--nixpkgs/pkgs/applications/graphics/sane/backends/git.nix10
-rw-r--r--nixpkgs/pkgs/applications/graphics/sane/config.nix46
-rw-r--r--nixpkgs/pkgs/applications/graphics/sane/frontends.nix29
-rw-r--r--nixpkgs/pkgs/applications/graphics/sane/xsane.nix33
-rw-r--r--nixpkgs/pkgs/applications/graphics/scantailor/advanced.nix26
-rw-r--r--nixpkgs/pkgs/applications/graphics/scantailor/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/graphics/screencloud/default.nix77
-rw-r--r--nixpkgs/pkgs/applications/graphics/shotwell/default.nix108
-rw-r--r--nixpkgs/pkgs/applications/graphics/shutter/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/graphics/smartdeblur/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/graphics/solvespace/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/graphics/swingsane/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/graphics/sxiv/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/graphics/synfigstudio/default.nix127
-rw-r--r--nixpkgs/pkgs/applications/graphics/tesseract/default.nix18
-rwxr-xr-xnixpkgs/pkgs/applications/graphics/tesseract/fetch-language-hashes35
-rw-r--r--nixpkgs/pkgs/applications/graphics/tesseract/languages.nix289
-rw-r--r--nixpkgs/pkgs/applications/graphics/tesseract/tesseract3.nix29
-rw-r--r--nixpkgs/pkgs/applications/graphics/tesseract/tesseract4.nix27
-rw-r--r--nixpkgs/pkgs/applications/graphics/tesseract/wrapper.nix58
-rw-r--r--nixpkgs/pkgs/applications/graphics/tev/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/graphics/timelapse-deflicker/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/graphics/ufraw/default.nix86
-rw-r--r--nixpkgs/pkgs/applications/graphics/unigine-valley/default.nix115
-rw-r--r--nixpkgs/pkgs/applications/graphics/viewnior/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/graphics/vimiv/default.nix73
-rw-r--r--nixpkgs/pkgs/applications/graphics/wings/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/graphics/write_stylus/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/graphics/xaos/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/graphics/xara/debian-patches.nix30
-rw-r--r--nixpkgs/pkgs/applications/graphics/xara/debian-patches.txt7
-rw-r--r--nixpkgs/pkgs/applications/graphics/xara/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/graphics/xfig/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/graphics/xfractint/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/graphics/xournal/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/graphics/xournalpp/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/graphics/xzgv/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/graphics/yacreader/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/graphics/yed/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/graphics/yeetgif/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/graphics/zgrviewer/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/graphics/zgv/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/graphics/zgv/switch.patch14
-rw-r--r--nixpkgs/pkgs/applications/kde/akonadi-calendar.nix20
-rw-r--r--nixpkgs/pkgs/applications/kde/akonadi-contacts.nix25
-rw-r--r--nixpkgs/pkgs/applications/kde/akonadi-import-wizard.nix20
-rw-r--r--nixpkgs/pkgs/applications/kde/akonadi-mime.nix16
-rw-r--r--nixpkgs/pkgs/applications/kde/akonadi-notes.nix18
-rw-r--r--nixpkgs/pkgs/applications/kde/akonadi-search.nix20
-rw-r--r--nixpkgs/pkgs/applications/kde/akonadi/0001-Revert-Make-Akonadi-installation-properly-relocatabl.patch49
-rw-r--r--nixpkgs/pkgs/applications/kde/akonadi/akonadi-paths.patch172
-rw-r--r--nixpkgs/pkgs/applications/kde/akonadi/akonadi-timestamps.patch14
-rw-r--r--nixpkgs/pkgs/applications/kde/akonadi/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/kde/akonadi/series3
-rw-r--r--nixpkgs/pkgs/applications/kde/akonadiconsole.nix21
-rw-r--r--nixpkgs/pkgs/applications/kde/akregator.nix30
-rw-r--r--nixpkgs/pkgs/applications/kde/ark/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/kde/baloo-widgets.nix18
-rw-r--r--nixpkgs/pkgs/applications/kde/calendarsupport.nix20
-rw-r--r--nixpkgs/pkgs/applications/kde/default.nix188
-rw-r--r--nixpkgs/pkgs/applications/kde/dolphin-plugins.nix18
-rw-r--r--nixpkgs/pkgs/applications/kde/dolphin.nix31
-rw-r--r--nixpkgs/pkgs/applications/kde/dragon.nix25
-rw-r--r--nixpkgs/pkgs/applications/kde/elisa.nix46
-rw-r--r--nixpkgs/pkgs/applications/kde/eventviews.nix20
-rw-r--r--nixpkgs/pkgs/applications/kde/fetch.sh1
-rw-r--r--nixpkgs/pkgs/applications/kde/ffmpeg-path.patch25
-rw-r--r--nixpkgs/pkgs/applications/kde/ffmpegthumbs.nix15
-rw-r--r--nixpkgs/pkgs/applications/kde/filelight.nix18
-rw-r--r--nixpkgs/pkgs/applications/kde/grantleetheme/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/kde/grantleetheme/grantlee-merge-theme-dirs.patch155
-rw-r--r--nixpkgs/pkgs/applications/kde/grantleetheme/series1
-rw-r--r--nixpkgs/pkgs/applications/kde/gwenview.nix21
-rw-r--r--nixpkgs/pkgs/applications/kde/incidenceeditor.nix20
-rw-r--r--nixpkgs/pkgs/applications/kde/k3b.nix48
-rw-r--r--nixpkgs/pkgs/applications/kde/kaddressbook.nix22
-rw-r--r--nixpkgs/pkgs/applications/kde/kalarm.nix37
-rw-r--r--nixpkgs/pkgs/applications/kde/kalarmcal.nix19
-rw-r--r--nixpkgs/pkgs/applications/kde/kate.nix36
-rw-r--r--nixpkgs/pkgs/applications/kde/kbreakout.nix22
-rw-r--r--nixpkgs/pkgs/applications/kde/kcachegrind.nix16
-rw-r--r--nixpkgs/pkgs/applications/kde/kcalc.nix19
-rw-r--r--nixpkgs/pkgs/applications/kde/kcalutils.nix20
-rw-r--r--nixpkgs/pkgs/applications/kde/kcharselect.nix19
-rw-r--r--nixpkgs/pkgs/applications/kde/kcolorchooser.nix15
-rw-r--r--nixpkgs/pkgs/applications/kde/kdav.nix16
-rw-r--r--nixpkgs/pkgs/applications/kde/kdebugsettings.nix20
-rw-r--r--nixpkgs/pkgs/applications/kde/kdegraphics-mobipocket.nix16
-rw-r--r--nixpkgs/pkgs/applications/kde/kdegraphics-thumbnailers.nix22
-rw-r--r--nixpkgs/pkgs/applications/kde/kdenetwork-filesharing.nix15
-rw-r--r--nixpkgs/pkgs/applications/kde/kdenlive.nix94
-rw-r--r--nixpkgs/pkgs/applications/kde/kdepim-addons.nix25
-rw-r--r--nixpkgs/pkgs/applications/kde/kdepim-apps-libs/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/kde/kdepim-apps-libs/kdepim-apps-libs-grantlee-merge-theme-dirs.patch62
-rw-r--r--nixpkgs/pkgs/applications/kde/kdepim-apps-libs/series1
-rw-r--r--nixpkgs/pkgs/applications/kde/kdepim-runtime/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/kde/kdf.nix15
-rw-r--r--nixpkgs/pkgs/applications/kde/kdialog.nix18
-rw-r--r--nixpkgs/pkgs/applications/kde/keditbookmarks.nix17
-rw-r--r--nixpkgs/pkgs/applications/kde/kfind.nix17
-rw-r--r--nixpkgs/pkgs/applications/kde/kgeography.nix15
-rw-r--r--nixpkgs/pkgs/applications/kde/kget.nix22
-rw-r--r--nixpkgs/pkgs/applications/kde/kgpg.nix24
-rw-r--r--nixpkgs/pkgs/applications/kde/khelpcenter.nix15
-rw-r--r--nixpkgs/pkgs/applications/kde/kidentitymanagement.nix20
-rw-r--r--nixpkgs/pkgs/applications/kde/kig.nix19
-rw-r--r--nixpkgs/pkgs/applications/kde/kimap.nix17
-rw-r--r--nixpkgs/pkgs/applications/kde/kio-extras.nix23
-rw-r--r--nixpkgs/pkgs/applications/kde/kipi-plugins.nix23
-rw-r--r--nixpkgs/pkgs/applications/kde/kitinerary.nix23
-rw-r--r--nixpkgs/pkgs/applications/kde/kldap.nix17
-rw-r--r--nixpkgs/pkgs/applications/kde/kleopatra.nix19
-rw-r--r--nixpkgs/pkgs/applications/kde/kmahjongg.nix19
-rw-r--r--nixpkgs/pkgs/applications/kde/kmail-account-wizard.nix21
-rw-r--r--nixpkgs/pkgs/applications/kde/kmail.nix30
-rw-r--r--nixpkgs/pkgs/applications/kde/kmail.patch24
-rw-r--r--nixpkgs/pkgs/applications/kde/kmailtransport.nix19
-rw-r--r--nixpkgs/pkgs/applications/kde/kmbox.nix16
-rw-r--r--nixpkgs/pkgs/applications/kde/kmime.nix16
-rw-r--r--nixpkgs/pkgs/applications/kde/kmix.nix20
-rw-r--r--nixpkgs/pkgs/applications/kde/kmplot.nix15
-rw-r--r--nixpkgs/pkgs/applications/kde/knotes.nix29
-rw-r--r--nixpkgs/pkgs/applications/kde/kolf.nix16
-rw-r--r--nixpkgs/pkgs/applications/kde/kolourpaint.nix17
-rw-r--r--nixpkgs/pkgs/applications/kde/kompare.nix15
-rw-r--r--nixpkgs/pkgs/applications/kde/konqueror.nix28
-rw-r--r--nixpkgs/pkgs/applications/kde/konquest.nix18
-rw-r--r--nixpkgs/pkgs/applications/kde/konsole.nix24
-rw-r--r--nixpkgs/pkgs/applications/kde/kontact.nix23
-rw-r--r--nixpkgs/pkgs/applications/kde/kontactinterface.nix17
-rw-r--r--nixpkgs/pkgs/applications/kde/korganizer.nix29
-rw-r--r--nixpkgs/pkgs/applications/kde/kpat.nix25
-rw-r--r--nixpkgs/pkgs/applications/kde/kpimtextedit.nix22
-rw-r--r--nixpkgs/pkgs/applications/kde/kpkpass.nix15
-rw-r--r--nixpkgs/pkgs/applications/kde/kqtquickcharts.nix15
-rw-r--r--nixpkgs/pkgs/applications/kde/krdc.nix25
-rw-r--r--nixpkgs/pkgs/applications/kde/krfb.nix16
-rw-r--r--nixpkgs/pkgs/applications/kde/kruler.nix17
-rw-r--r--nixpkgs/pkgs/applications/kde/ksmtp/0001-Use-KDE_INSTALL_TARGETS_DEFAULT_ARGS-when-installing.patch25
-rw-r--r--nixpkgs/pkgs/applications/kde/ksmtp/default.nix17
-rw-r--r--nixpkgs/pkgs/applications/kde/kspaceduel.nix22
-rw-r--r--nixpkgs/pkgs/applications/kde/ksudoku.nix18
-rw-r--r--nixpkgs/pkgs/applications/kde/ksystemlog.nix17
-rw-r--r--nixpkgs/pkgs/applications/kde/ktnef.nix18
-rw-r--r--nixpkgs/pkgs/applications/kde/ktouch.nix28
-rw-r--r--nixpkgs/pkgs/applications/kde/kwalletmanager.nix26
-rw-r--r--nixpkgs/pkgs/applications/kde/libgravatar.nix18
-rw-r--r--nixpkgs/pkgs/applications/kde/libkcddb.nix17
-rw-r--r--nixpkgs/pkgs/applications/kde/libkdcraw.nix13
-rw-r--r--nixpkgs/pkgs/applications/kde/libkdegames.nix26
-rw-r--r--nixpkgs/pkgs/applications/kde/libkdepim.nix21
-rw-r--r--nixpkgs/pkgs/applications/kde/libkexiv2.nix13
-rw-r--r--nixpkgs/pkgs/applications/kde/libkgapi.nix16
-rw-r--r--nixpkgs/pkgs/applications/kde/libkipi.nix12
-rw-r--r--nixpkgs/pkgs/applications/kde/libkleo.nix21
-rw-r--r--nixpkgs/pkgs/applications/kde/libkmahjongg.nix18
-rw-r--r--nixpkgs/pkgs/applications/kde/libkomparediff2.nix7
-rw-r--r--nixpkgs/pkgs/applications/kde/libksane.nix16
-rw-r--r--nixpkgs/pkgs/applications/kde/libksieve.nix23
-rw-r--r--nixpkgs/pkgs/applications/kde/mailcommon.nix22
-rw-r--r--nixpkgs/pkgs/applications/kde/mailimporter.nix19
-rw-r--r--nixpkgs/pkgs/applications/kde/marble.nix20
-rw-r--r--nixpkgs/pkgs/applications/kde/mbox-importer.nix17
-rw-r--r--nixpkgs/pkgs/applications/kde/messagelib.nix29
-rw-r--r--nixpkgs/pkgs/applications/kde/minuet.nix24
-rw-r--r--nixpkgs/pkgs/applications/kde/mlt-path.patch22
-rw-r--r--nixpkgs/pkgs/applications/kde/okular.nix36
-rw-r--r--nixpkgs/pkgs/applications/kde/pim-data-exporter.nix23
-rw-r--r--nixpkgs/pkgs/applications/kde/pim-sieve-editor.nix19
-rw-r--r--nixpkgs/pkgs/applications/kde/pimcommon.nix26
-rw-r--r--nixpkgs/pkgs/applications/kde/print-manager.nix26
-rw-r--r--nixpkgs/pkgs/applications/kde/rocs.nix25
-rw-r--r--nixpkgs/pkgs/applications/kde/spectacle.nix24
-rw-r--r--nixpkgs/pkgs/applications/kde/srcs.nix1734
-rw-r--r--nixpkgs/pkgs/applications/kde/yakuake.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/1password/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/misc/ArchiSteamFarm/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/misc/abook/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/adobe-reader/builder.sh42
-rw-r--r--nixpkgs/pkgs/applications/misc/adobe-reader/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/airtame/default.nix79
-rw-r--r--nixpkgs/pkgs/applications/misc/alacritty/default.nix143
-rw-r--r--nixpkgs/pkgs/applications/misc/albert/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/misc/almanah/default.nix82
-rw-r--r--nixpkgs/pkgs/applications/misc/aminal/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/misc/antfs-cli/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/ape/apeclex.nix8
-rw-r--r--nixpkgs/pkgs/applications/misc/ape/clex.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/ape/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/misc/appeditor/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/misc/appeditor/fix-build-vala-0.46.patch22
-rw-r--r--nixpkgs/pkgs/applications/misc/apvlv/default.nix74
-rw-r--r--nixpkgs/pkgs/applications/misc/apvlv/fix-build-with-poppler-0.73.0.patch13
-rw-r--r--nixpkgs/pkgs/applications/misc/archiver/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/misc/artha/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/misc/artha/gio-underlink.patch13
-rw-r--r--nixpkgs/pkgs/applications/misc/asciiquarium/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/audio/sox/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/misc/audio/soxr/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/audio/wavesurfer/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/audio/wavrsocvt/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/ausweisapp2/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/autospotting/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/autospotting/deps.nix75
-rw-r--r--nixpkgs/pkgs/applications/misc/avrdudess/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/misc/azuredatastudio/default.nix115
-rw-r--r--nixpkgs/pkgs/applications/misc/barrier/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/bashSnippets/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/misc/bb/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/bemenu/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/misc/bibletime/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/bicon/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/birdtray/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/bleachbit/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/misc/blender/darwin.patch96
-rw-r--r--nixpkgs/pkgs/applications/misc/blender/default.nix147
-rw-r--r--nixpkgs/pkgs/applications/misc/blender/fix-include.patch12
-rw-r--r--nixpkgs/pkgs/applications/misc/blugon/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/brewtarget/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/buku/default.nix80
-rw-r--r--nixpkgs/pkgs/applications/misc/calcurse/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/calibre/default.nix178
-rw-r--r--nixpkgs/pkgs/applications/misc/calibre/disable_plugins.patch17
-rw-r--r--nixpkgs/pkgs/applications/misc/calibre/dont_build_unrar_plugin.patch12
-rw-r--r--nixpkgs/pkgs/applications/misc/calibre/no_updates_dialog.patch15
-rw-r--r--nixpkgs/pkgs/applications/misc/candle/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/cardpeek/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/cataract/build.nix43
-rw-r--r--nixpkgs/pkgs/applications/misc/cataract/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/misc/cataract/unstable.nix8
-rw-r--r--nixpkgs/pkgs/applications/misc/catclock/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/cbatticon/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/cgminer/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/misc/cheat/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/cherrytree/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/cherrytree/subprocess.patch14
-rw-r--r--nixpkgs/pkgs/applications/misc/cipher/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/misc/cli-visualizer/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/clight/clightd.nix75
-rw-r--r--nixpkgs/pkgs/applications/misc/clight/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/misc/clipit/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/clipmenu/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/cmatrix/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/cointop/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/colort/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/confclerk/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/cool-retro-term/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/misc/copyq/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/coursera-dl/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/misc/cpp-ethereum/default.nix85
-rw-r--r--nixpkgs/pkgs/applications/misc/cpu-x/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/crumbs/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/ctodo/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/cum/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/cura/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/misc/cura/lulzbot/curaengine-openmp-compat.patch47
-rw-r--r--nixpkgs/pkgs/applications/misc/cura/lulzbot/curaengine.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/cura/lulzbot/default.nix82
-rw-r--r--nixpkgs/pkgs/applications/misc/cura/lulzbot/libarcus.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/cura/lulzbot/libsavitar.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/cura/lulzbot/uranium.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/cura/numpy-cast.patch12
-rw-r--r--nixpkgs/pkgs/applications/misc/cura/plugins.nix37
-rw-r--r--nixpkgs/pkgs/applications/misc/cura/stable.nix73
-rw-r--r--nixpkgs/pkgs/applications/misc/curabydagoma/default.nix76
-rw-r--r--nixpkgs/pkgs/applications/misc/curaengine/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/misc/curaengine/stable.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/dbeaver/default.nix70
-rw-r--r--nixpkgs/pkgs/applications/misc/dbvisualizer/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/ddgr/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/deco/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/devilspie2/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/dfilemanager/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/diff-pdf/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/diffpdf/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/misc/diffpdf/fix_path_poppler_qt5.patch16
-rw-r--r--nixpkgs/pkgs/applications/misc/digitalbitbox/default.nix143
-rw-r--r--nixpkgs/pkgs/applications/misc/ding/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/misc/ding/dict.patch26
-rw-r--r--nixpkgs/pkgs/applications/misc/direwolf/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-15142.patch72
-rw-r--r--nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-15143.patch39
-rw-r--r--nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-15144.patch111
-rw-r--r--nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-15145.patch28
-rw-r--r--nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-18804.patch32
-rw-r--r--nixpkgs/pkgs/applications/misc/djvulibre/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/misc/djvulibre/fix_hongfuzz_crash.patch51
-rw-r--r--nixpkgs/pkgs/applications/misc/dmensamenu/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/dmensamenu/dmenu-path.patch13
-rw-r--r--nixpkgs/pkgs/applications/misc/dmenu/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/dmenu/wayland.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/dmenu/xim.patch31
-rw-r--r--nixpkgs/pkgs/applications/misc/dockbarx/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/doing/Gemfile2
-rw-r--r--nixpkgs/pkgs/applications/misc/doing/Gemfile.lock25
-rw-r--r--nixpkgs/pkgs/applications/misc/doing/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/doing/gemset.nix60
-rw-r--r--nixpkgs/pkgs/applications/misc/doomseeker/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/doomseeker/fix_paths.patch40
-rw-r--r--nixpkgs/pkgs/applications/misc/doomseeker/qt_build_fix.patch47
-rw-r--r--nixpkgs/pkgs/applications/misc/dotfiles/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/misc/dozenal/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/misc/dozenal/lua-header.patch16
-rw-r--r--nixpkgs/pkgs/applications/misc/dstask/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/misc/dunst/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/misc/dupeguru/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/misc/eaglemode/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/misc/electron-cash/default.nix88
-rw-r--r--nixpkgs/pkgs/applications/misc/electrum/dash.nix47
-rw-r--r--nixpkgs/pkgs/applications/misc/electrum/default.nix151
-rw-r--r--nixpkgs/pkgs/applications/misc/electrum/ltc.nix57
-rw-r--r--nixpkgs/pkgs/applications/misc/electrum/update.nix59
-rw-r--r--nixpkgs/pkgs/applications/misc/elogind/default.nix82
-rw-r--r--nixpkgs/pkgs/applications/misc/emem/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/epdfview/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/epr/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/misc/et/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/eterm/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/misc/etesync-dav/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/eureka-editor/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/evilvte/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/evtest-qt/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/evtest/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/exercism/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/extract_url/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/far2l/default.nix88
-rw-r--r--nixpkgs/pkgs/applications/misc/fbmenugen/0001-Fix-paths.patch69
-rw-r--r--nixpkgs/pkgs/applications/misc/fbmenugen/default.nix75
-rw-r--r--nixpkgs/pkgs/applications/misc/fbreader/default.nix75
-rw-r--r--nixpkgs/pkgs/applications/misc/fbreader/typecheck.patch11
-rw-r--r--nixpkgs/pkgs/applications/misc/fehlstart/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/fehlstart/use-nix-profiles.patch21
-rw-r--r--nixpkgs/pkgs/applications/misc/fetchmail/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/fff/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/filet/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/misc/firestarter/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/fitnesstrax/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/misc/flamerobin/default.nix33
-rwxr-xr-xnixpkgs/pkgs/applications/misc/fluxboxlauncher/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/misc/fme/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/font-manager/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/misc/formatter/default.nix77
-rw-r--r--nixpkgs/pkgs/applications/misc/formatter/fix-paths.patch53
-rw-r--r--nixpkgs/pkgs/applications/misc/foxtrotgps/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/misc/freemind/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/misc/fsv/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/misc/fusee-interfacee-tk/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/misc/gImageReader/default.nix70
-rw-r--r--nixpkgs/pkgs/applications/misc/galculator/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/gallery-dl/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/misc/gammu/bashcomp-dir.patch11
-rw-r--r--nixpkgs/pkgs/applications/misc/gammu/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/misc/gammu/systemd.patch30
-rw-r--r--nixpkgs/pkgs/applications/misc/ganttproject-bin/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/misc/garmin-plugin/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/misc/gcal/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/gcalcli/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/genxword/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/misc/geoipupdate/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/misc/get_iplayer/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/getxbook/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/girara/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/misc/gitit/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/misc/gkrellm/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/misc/gksu/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/misc/gksu/gksu-2.0.2-glib-2.31.patch29
-rw-r--r--nixpkgs/pkgs/applications/misc/glava/default.nix92
-rw-r--r--nixpkgs/pkgs/applications/misc/glom/default.nix132
-rw-r--r--nixpkgs/pkgs/applications/misc/gmrun/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/misc/gmrun/find-config-file-in-system-etc-dir.patch18
-rw-r--r--nixpkgs/pkgs/applications/misc/gmrun/gcc43.patch51
-rw-r--r--nixpkgs/pkgs/applications/misc/gmrun/gmrun-0.9.2-xdg.patch58
-rw-r--r--nixpkgs/pkgs/applications/misc/gmtp/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/gnome-firmware-updater/default.nix75
-rw-r--r--nixpkgs/pkgs/applications/misc/gnome-multi-writer/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/misc/gnome-recipes/default.nix79
-rw-r--r--nixpkgs/pkgs/applications/misc/gnome-usage/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/misc/go-jira/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/golden-cheetah/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/misc/goldendict/0001-dont-check-for-updates.patch49
-rw-r--r--nixpkgs/pkgs/applications/misc/goldendict/0001-dont-use-maclibs.patch62
-rw-r--r--nixpkgs/pkgs/applications/misc/goldendict/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/misc/gollum/Gemfile2
-rw-r--r--nixpkgs/pkgs/applications/misc/gollum/Gemfile.lock113
-rw-r--r--nixpkgs/pkgs/applications/misc/gollum/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/misc/gollum/gemset.nix475
-rw-r--r--nixpkgs/pkgs/applications/misc/gomatrix/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/googleearth/default.nix107
-rw-r--r--nixpkgs/pkgs/applications/misc/googler/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/gopacked/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/misc/gosmore/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/gosmore/pointer_int_comparison.patch11
-rw-r--r--nixpkgs/pkgs/applications/misc/gpa/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/misc/gpg-mdp/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/gphoto2/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/gphoto2/gphotofs.nix23
-rw-r--r--nixpkgs/pkgs/applications/misc/gpsbabel/default.nix77
-rw-r--r--nixpkgs/pkgs/applications/misc/gpsbabel/gui.nix49
-rw-r--r--nixpkgs/pkgs/applications/misc/gpscorrelate/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/misc/gpsprune/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/misc/gpx-viewer/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/gpx/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/misc/gpxlab/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/misc/gpxsee/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/misc/gpxsee/fix-qttranslations-path.diff18
-rw-r--r--nixpkgs/pkgs/applications/misc/gramps/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/misc/green-pdfviewer/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/green-pdfviewer/gdk-libs.patch55
-rw-r--r--nixpkgs/pkgs/applications/misc/gremlin-console/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/grip/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/grsync/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/gsctl/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/gsimplecal/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/gtk2fontsel/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/guake/default.nix74
-rw-r--r--nixpkgs/pkgs/applications/misc/gummi/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/misc/gv/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/misc/gxmessage/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/gxneur/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/hamster/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/misc/havoc/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/haxor-news/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/misc/hdate/default.nix16
-rw-r--r--nixpkgs/pkgs/applications/misc/heimer/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/hello-unfree/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/misc/hello/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/misc/hivemind/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/houdini/default.nix14
-rw-r--r--nixpkgs/pkgs/applications/misc/houdini/runtime.nix87
-rw-r--r--nixpkgs/pkgs/applications/misc/hovercraft/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/hr/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/hstr/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/hubstaff/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/misc/hubstaff/revision.json5
-rwxr-xr-xnixpkgs/pkgs/applications/misc/hubstaff/update.sh18
-rw-r--r--nixpkgs/pkgs/applications/misc/hugo/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/misc/hyper/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/icesl/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/ikiwiki/default.nix91
-rw-r--r--nixpkgs/pkgs/applications/misc/ikiwiki/remove-markdown-tests.patch37
-rw-r--r--nixpkgs/pkgs/applications/misc/img2pdf/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/ipmicfg/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/ipmiview/default.nix72
-rw-r--r--nixpkgs/pkgs/applications/misc/iterm2/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/misc/iterm2/disable_updates.patch11
-rw-r--r--nixpkgs/pkgs/applications/misc/j4-dmenu-desktop/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/jbidwatcher/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/misc/jekyll/basic/Gemfile8
-rw-r--r--nixpkgs/pkgs/applications/misc/jekyll/basic/Gemfile.lock103
-rw-r--r--nixpkgs/pkgs/applications/misc/jekyll/basic/gemset.nix434
-rw-r--r--nixpkgs/pkgs/applications/misc/jekyll/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/misc/jekyll/full/Gemfile27
-rw-r--r--nixpkgs/pkgs/applications/misc/jekyll/full/Gemfile.lock154
-rw-r--r--nixpkgs/pkgs/applications/misc/jekyll/full/gemset.nix726
-rwxr-xr-xnixpkgs/pkgs/applications/misc/jekyll/update.sh15
-rw-r--r--nixpkgs/pkgs/applications/misc/jgmenu/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/misc/jigdo/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/jigdo/sizewidth.patch40
-rw-r--r--nixpkgs/pkgs/applications/misc/joplin-desktop/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/misc/josm/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/misc/jotta-cli/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/jp2a/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/jrnl/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/k2pdfopt/default.nix82
-rw-r--r--nixpkgs/pkgs/applications/misc/k2pdfopt/k2pdfopt-mupdf-1.16.1.patch151
-rw-r--r--nixpkgs/pkgs/applications/misc/k2pdfopt/k2pdfopt.patch99
-rw-r--r--nixpkgs/pkgs/applications/misc/k2pdfopt/leptonica.patch254
-rw-r--r--nixpkgs/pkgs/applications/misc/k2pdfopt/mupdf.patch1060
-rw-r--r--nixpkgs/pkgs/applications/misc/k2pdfopt/tesseract.patch675
-rw-r--r--nixpkgs/pkgs/applications/misc/kanboard/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/kdbplus/default.nix75
-rw-r--r--nixpkgs/pkgs/applications/misc/kdeconnect/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/misc/keepass-plugins/keeagent/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/keepass-plugins/keepasshttp/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/keepass-plugins/keepassrpc/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/keepass-plugins/otpkeyprov/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/keepass/default.nix118
-rwxr-xr-xnixpkgs/pkgs/applications/misc/keepass/extractWinRscIconsToStdFreeDesktopDir.sh61
-rw-r--r--nixpkgs/pkgs/applications/misc/keepass/fix-paths.patch144
-rw-r--r--nixpkgs/pkgs/applications/misc/keepass/keepass-plugins-load.patch1
-rw-r--r--nixpkgs/pkgs/applications/misc/keepass/keepass-plugins.patch25
-rw-r--r--nixpkgs/pkgs/applications/misc/keepassx/2.0.nix21
-rw-r--r--nixpkgs/pkgs/applications/misc/keepassx/community.nix134
-rw-r--r--nixpkgs/pkgs/applications/misc/keepassx/darwin.patch53
-rw-r--r--nixpkgs/pkgs/applications/misc/keepassx/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/keepassx/random.patch13
-rw-r--r--nixpkgs/pkgs/applications/misc/khal/default.nix76
-rw-r--r--nixpkgs/pkgs/applications/misc/khal/skip-broken-test.patch21
-rw-r--r--nixpkgs/pkgs/applications/misc/khard/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/kitty/default.nix131
-rw-r--r--nixpkgs/pkgs/applications/misc/kitty/fix-paths.patch16
-rw-r--r--nixpkgs/pkgs/applications/misc/kitty/library-paths.patch38
-rw-r--r--nixpkgs/pkgs/applications/misc/kitty/no-lto.patch13
-rw-r--r--nixpkgs/pkgs/applications/misc/kiwix/default.nix109
-rw-r--r--nixpkgs/pkgs/applications/misc/kjv/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/misc/klayout/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/misc/kondo/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/krename/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/krusader/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/ksmoothdock/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/misc/kupfer/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/misc/latte-dock/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/lenmus/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/misc/libosmocore/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/misc/librecad/default.nix94
-rw-r--r--nixpkgs/pkgs/applications/misc/librecad/fix_qt_5_11_build.patch36
-rw-r--r--nixpkgs/pkgs/applications/misc/lifelines/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/lighthouse/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/lilyterm/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/misc/llpp/default.nix57
-rw-r--r--nixpkgs/pkgs/applications/misc/llpp/fix-build-bash.patch78
-rw-r--r--nixpkgs/pkgs/applications/misc/loxodo/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/misc/lsd2dsl/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/ltwheelconf/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/lutris/chrootenv.nix120
-rw-r--r--nixpkgs/pkgs/applications/misc/lutris/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/misc/lxterminal/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/misc/lxterminal/respect-xml-catalog-files-var.patch15
-rw-r--r--nixpkgs/pkgs/applications/misc/lyx/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/misc/madonctl/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/madonctl/deps.nix228
-rw-r--r--nixpkgs/pkgs/applications/misc/makeself/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/mako/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/mapproxy/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/misc/marktext/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/masterpdfeditor/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/misc/mbutil/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/mdp/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/mediainfo-gui/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/mediainfo/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/megacmd/default.nix88
-rw-r--r--nixpkgs/pkgs/applications/misc/megasync/default.nix96
-rw-r--r--nixpkgs/pkgs/applications/misc/megasync/install-megasync.patch21
-rw-r--r--nixpkgs/pkgs/applications/misc/megasync/noinstall-distro-version.patch13
-rw-r--r--nixpkgs/pkgs/applications/misc/memo/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/misc/mencal/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/menumaker/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/misc/merkaartor/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/metamorphose2/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/misc/metar/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/michabo/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/misc/microcom/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/milu/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/misc/minder/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/misc/minergate-cli/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/minergate/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/mkgmap/build.xml.patch11
-rw-r--r--nixpkgs/pkgs/applications/misc/mkgmap/default.nix57
-rw-r--r--nixpkgs/pkgs/applications/misc/mlterm/default.nix93
-rw-r--r--nixpkgs/pkgs/applications/misc/moolticute/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/misc/moonlight-embedded/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/mop/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/mop/deps.nix11
-rw-r--r--nixpkgs/pkgs/applications/misc/mps-youtube/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/mpvc/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/mqtt-bench/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/mqtt-bench/deps.nix21
-rw-r--r--nixpkgs/pkgs/applications/misc/mrxvt/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/misc/mu-repo/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/misc/mucommander/default.nix86
-rw-r--r--nixpkgs/pkgs/applications/misc/multibootusb/default.nix114
-rw-r--r--nixpkgs/pkgs/applications/misc/mupdf/darwin.patch30
-rw-r--r--nixpkgs/pkgs/applications/misc/mupdf/default.nix91
-rw-r--r--nixpkgs/pkgs/applications/misc/mupdf/default.upstream7
-rw-r--r--nixpkgs/pkgs/applications/misc/mupdf/mupdf-1.14-shared_libs.patch39
-rw-r--r--nixpkgs/pkgs/applications/misc/mwic/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/mysql-workbench/default.nix189
-rw-r--r--nixpkgs/pkgs/applications/misc/mysql-workbench/fix-gdal-includes.patch47
-rw-r--r--nixpkgs/pkgs/applications/misc/mysql-workbench/fix-swig-build.patch12
-rw-r--r--nixpkgs/pkgs/applications/misc/mysql-workbench/hardcode-paths.patch187
-rw-r--r--nixpkgs/pkgs/applications/misc/mystem/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/misc/nanoblogger/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/navipowm/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/navit/CMakeLists.txt.patch13
-rw-r--r--nixpkgs/pkgs/applications/misc/navit/default.nix90
-rw-r--r--nixpkgs/pkgs/applications/misc/neap/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/misc/netsurf/browser/default.nix90
-rw-r--r--nixpkgs/pkgs/applications/misc/netsurf/buildsystem/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/netsurf/libcss/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/netsurf/libdom/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/netsurf/libhubbub/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/netsurf/libnsbmp/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/netsurf/libnsfb/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/netsurf/libnsgif/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/netsurf/libnslog/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/netsurf/libnspsl/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/netsurf/libnsutils/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/netsurf/libparserutils/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/netsurf/libsvgtiny/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/netsurf/libutf8proc/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/netsurf/libwapcaplet/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/netsurf/nsgenbind/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/nix-tour/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/nixnote2/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/misc/nnn/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/noice/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/notable/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/misc/notejot/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/misc/notify-osd-customizable/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/misc/notify-osd/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/nrsc5/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/misc/nut/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/misc/obinskit/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/misc/ocropus/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/misc/octoprint/default.nix108
-rw-r--r--nixpkgs/pkgs/applications/misc/octoprint/m33-fio-one-library.patch175
-rw-r--r--nixpkgs/pkgs/applications/misc/octoprint/plugins.nix255
-rw-r--r--nixpkgs/pkgs/applications/misc/octoprint/printtimegenius-logging.patch17
-rw-r--r--nixpkgs/pkgs/applications/misc/ola/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/omegat.nix40
-rw-r--r--nixpkgs/pkgs/applications/misc/onboard/default.nix181
-rw-r--r--nixpkgs/pkgs/applications/misc/onboard/fix-paths.patch11
-rw-r--r--nixpkgs/pkgs/applications/misc/onboard/hunspell-use-xdg-datadirs.patch20
-rw-r--r--nixpkgs/pkgs/applications/misc/oneko/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/openbox-menu/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/openbox-menu/with-svg.patch11
-rw-r--r--nixpkgs/pkgs/applications/misc/openbrf/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/misc/opencpn/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/openjump/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/opentx/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/misc/orca/default.nix117
-rw-r--r--nixpkgs/pkgs/applications/misc/orca/fix-paths.patch78
-rw-r--r--nixpkgs/pkgs/applications/misc/orpie/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/misc/osm2xmap/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/osmctools/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/osmium-tool/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/misc/overmind/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/overmind/deps.nix147
-rw-r--r--nixpkgs/pkgs/applications/misc/pastel/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/misc/pbpst/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/misc/pcmanfm/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/pcmanx-gtk2/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/pdf-quench/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/misc/pdfarranger/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/misc/pdfdiff/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/pdfmod/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/misc/pdfpc/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/misc/pdfsam-basic/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/misc/pell/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/misc/perkeep/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/misc/pgadmin/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/misc/pgmanage/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/pgmodeler/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/phwmon/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/misc/pinfo/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/plank/default.nix89
-rw-r--r--nixpkgs/pkgs/applications/misc/plank/hide-in-pantheon.patch9
-rw-r--r--nixpkgs/pkgs/applications/misc/plasma-applet-volumewin7mixer/cmake.patch20
-rw-r--r--nixpkgs/pkgs/applications/misc/plasma-applet-volumewin7mixer/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/misc/playonlinux/default.nix113
-rw-r--r--nixpkgs/pkgs/applications/misc/plover/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/misc/polar-bookshelf/default.nix91
-rw-r--r--nixpkgs/pkgs/applications/misc/polybar/default.nix84
-rw-r--r--nixpkgs/pkgs/applications/misc/posterazor/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/printrun/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/misc/procmail/CVE-2014-3618.patch18
-rw-r--r--nixpkgs/pkgs/applications/misc/procmail/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/projectlibre/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/misc/prusa-slicer/default.nix98
-rw-r--r--nixpkgs/pkgs/applications/misc/pstree/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/pt/.bundle/config2
-rw-r--r--nixpkgs/pkgs/applications/misc/pt/Gemfile3
-rw-r--r--nixpkgs/pkgs/applications/misc/pt/Gemfile.lock69
-rw-r--r--nixpkgs/pkgs/applications/misc/pt/default.nix17
-rw-r--r--nixpkgs/pkgs/applications/misc/pt/gemset.nix273
-rw-r--r--nixpkgs/pkgs/applications/misc/ptask/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/ptask/json_c_is_error.patch13
-rw-r--r--nixpkgs/pkgs/applications/misc/ptask/tw-version.patch11
-rw-r--r--nixpkgs/pkgs/applications/misc/pueue/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/pwsafe/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/misc/pydf/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/pyditz/cerberus.nix19
-rw-r--r--nixpkgs/pkgs/applications/misc/pyditz/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/pytrainer/default.nix94
-rw-r--r--nixpkgs/pkgs/applications/misc/pytrainer/fix-paths.patch11
-rw-r--r--nixpkgs/pkgs/applications/misc/qMasterPassword/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/misc/qcad/application-dir.patch35
-rw-r--r--nixpkgs/pkgs/applications/misc/qcad/default.nix92
-rw-r--r--nixpkgs/pkgs/applications/misc/qdirstat/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/misc/qlandkartegt/default.nix91
-rw-r--r--nixpkgs/pkgs/applications/misc/qlandkartegt/garmindev.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/qlcplus/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/misc/qmapshack/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/misc/qmetro/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/qolibri/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/qpdfview/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/misc/qsudo/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/misc/qsyncthingtray/default.nix74
-rw-r--r--nixpkgs/pkgs/applications/misc/qsyncthingtray/qsyncthingtray-0.5.8-qt-5.6.3.patch13
-rw-r--r--nixpkgs/pkgs/applications/misc/qt-box-editor/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/qtbitcointrader/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/qtpass/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/misc/quicksynergy/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/misc/raiseorlaunch/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/misc/ranger/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/misc/razergenie/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/redis-desktop-manager/default.nix83
-rw-r--r--nixpkgs/pkgs/applications/misc/redshift-plasma-applet/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/misc/redshift/575.patch51
-rw-r--r--nixpkgs/pkgs/applications/misc/redshift/default.nix121
-rw-r--r--nixpkgs/pkgs/applications/misc/regextester/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/misc/remarkable/remarkable-mouse/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/misc/remarkable/rmapi/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/rescuetime/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/misc/robo3t/default.nix79
-rw-r--r--nixpkgs/pkgs/applications/misc/robomongo/default.nix77
-rw-r--r--nixpkgs/pkgs/applications/misc/rofi-emoji/0001-Patch-plugindir-to-output.patch25
-rw-r--r--nixpkgs/pkgs/applications/misc/rofi-emoji/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/misc/rofi-file-browser/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/rofi-menugen/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/rofi/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/rofi/wrapper.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/roxterm/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/misc/rsclock/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/rsibreak/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/rtv/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-autocomplete-all-the-things/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-bidi/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-font-size/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-perl/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-perls/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-resize-font/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-tabbedex/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-theme-switch/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-vtwheel/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt-unicode/default.nix88
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt-unicode/patches/256-color-resources.patch255
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt-unicode/patches/9.06-font-width.patch21
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt-unicode/patches/makefile-phony.patch10
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt-unicode/wrapper.nix58
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/safeeyes/default.nix70
-rw-r--r--nixpkgs/pkgs/applications/misc/sakura/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/sampler/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/sbagen/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/sc-im/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/misc/sdcv/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/sent/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/sequeler/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/misc/sequelpro/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/sidequest/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/misc/sigal/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/simplenote/default.nix96
-rw-r--r--nixpkgs/pkgs/applications/misc/slade/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/misc/slade/git.nix26
-rw-r--r--nixpkgs/pkgs/applications/misc/sleepyhead/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/misc/slic3r/boost-compile-error.patch12
-rw-r--r--nixpkgs/pkgs/applications/misc/slic3r/default.nix90
-rw-r--r--nixpkgs/pkgs/applications/misc/slmenu/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/slstatus/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/solaar/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/misc/spacefm/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/misc/spacefm/glibc-fix.patch12
-rw-r--r--nixpkgs/pkgs/applications/misc/speedread/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/sqliteman/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/ssocr/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/ssw/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/misc/st/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/st/xst.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/stag/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/stog/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/stog/install.patch18
-rw-r--r--nixpkgs/pkgs/applications/misc/stretchly/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/misc/stupidterm/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/styx/default.nix71
-rw-r--r--nixpkgs/pkgs/applications/misc/subsurface/0001-core-fix-libgit-ifdef-to-handle-libgit2-v1.0-and-onw.patch41
-rw-r--r--nixpkgs/pkgs/applications/misc/subsurface/default.nix114
-rw-r--r--nixpkgs/pkgs/applications/misc/super_user_spark/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/sweethome3d/default.nix98
-rw-r--r--nixpkgs/pkgs/applications/misc/sweethome3d/editors.nix93
-rw-r--r--nixpkgs/pkgs/applications/misc/synapse/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/misc/syncthing-tray/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/syncthing-tray/deps.nix93
-rw-r--r--nixpkgs/pkgs/applications/misc/syncthingtray/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/misc/synergy/build-tests.patch97
-rw-r--r--nixpkgs/pkgs/applications/misc/synergy/default.nix81
-rw-r--r--nixpkgs/pkgs/applications/misc/synergy/macos_build_fix.patch29
-rw-r--r--nixpkgs/pkgs/applications/misc/systembus-notify/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/tabula/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/taizen/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/taskell/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/misc/taskjuggler/2.x/default.nix75
-rw-r--r--nixpkgs/pkgs/applications/misc/taskjuggler/2.x/timezone-glibc.patch48
-rw-r--r--nixpkgs/pkgs/applications/misc/taskjuggler/3.x/Gemfile2
-rw-r--r--nixpkgs/pkgs/applications/misc/taskjuggler/3.x/Gemfile.lock21
-rw-r--r--nixpkgs/pkgs/applications/misc/taskjuggler/3.x/default.nix15
-rw-r--r--nixpkgs/pkgs/applications/misc/taskjuggler/3.x/gemset.nix47
-rw-r--r--nixpkgs/pkgs/applications/misc/taskjuggler/Gemfile2
-rw-r--r--nixpkgs/pkgs/applications/misc/taskjuggler/Gemfile.lock21
-rw-r--r--nixpkgs/pkgs/applications/misc/taskjuggler/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/misc/taskjuggler/gemset.nix55
-rw-r--r--nixpkgs/pkgs/applications/misc/tasknc/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/misc/taskopen/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/tasksh/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/taskwarrior/0001-bash-completion-quote-pattern-argument-to-grep.patch28
-rw-r--r--nixpkgs/pkgs/applications/misc/taskwarrior/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/tdrop/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/teleprompter/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/misc/termdown/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/terminal-notifier/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/terminal-parrot/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/misc/terminator/default.nix77
-rw-r--r--nixpkgs/pkgs/applications/misc/terminus/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/misc/termite/add_errno_header.patch24
-rw-r--r--nixpkgs/pkgs/applications/misc/termite/default.nix84
-rw-r--r--nixpkgs/pkgs/applications/misc/termite/remove_ldflags_macos.patch25
-rw-r--r--nixpkgs/pkgs/applications/misc/termite/url_regexp_trailing.patch27
-rw-r--r--nixpkgs/pkgs/applications/misc/termite/wrapper.nix15
-rw-r--r--nixpkgs/pkgs/applications/misc/termonad/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/misc/termpdf.py/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/misc/teseq/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/misc/thinking-rock/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/tilda/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/tilix/default.nix74
-rw-r--r--nixpkgs/pkgs/applications/misc/timewarrior/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/tint2/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/tipp10/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/tippecanoe/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/tmatrix/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/misc/tnef/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/todiff/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/todoist-electron/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/misc/todoist/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/todolist/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/toggldesktop/TogglDesktop.pro19
-rw-r--r--nixpkgs/pkgs/applications/misc/toggldesktop/default.nix148
-rw-r--r--nixpkgs/pkgs/applications/misc/toggldesktop/libtoggl.pro20
-rw-r--r--nixpkgs/pkgs/applications/misc/tomboy/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/misc/toot/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/tootle/default.nix77
-rw-r--r--nixpkgs/pkgs/applications/misc/topydo/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/tpmmanager/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/translate-shell/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/misc/tthsum/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/tuir/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/tut/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/tut/deps.nix318
-rw-r--r--nixpkgs/pkgs/applications/misc/tvbrowser/bin.nix56
-rw-r--r--nixpkgs/pkgs/applications/misc/twmn/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/tzupdate/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/misc/udevil/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/udevil/device-info-sys-stat.patch14
-rw-r--r--nixpkgs/pkgs/applications/misc/udiskie/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/misc/ulauncher/0001-Adjust-get_data_path-for-NixOS.patch55
-rw-r--r--nixpkgs/pkgs/applications/misc/ulauncher/default.nix113
-rw-r--r--nixpkgs/pkgs/applications/misc/ulauncher/fix-extensions.patch13
-rw-r--r--nixpkgs/pkgs/applications/misc/ulauncher/fix-path.patch13
-rw-r--r--nixpkgs/pkgs/applications/misc/upwork/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/misc/urlscan/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/urlview/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/misc/usync/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/valentina/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/misc/variety/default.nix73
-rw-r--r--nixpkgs/pkgs/applications/misc/vcal/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/misc/veracrypt/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/misc/verbiste/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/misc/vifm/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/misc/viking/default.nix74
-rw-r--r--nixpkgs/pkgs/applications/misc/visidata/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/misc/vit/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/volnoti/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/vp/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/vue/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/vym/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/misc/waybar/default.nix71
-rw-r--r--nixpkgs/pkgs/applications/misc/wcalc/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/misc/weather/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/web-media-controller/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/wego/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/misc/wego/deps.nix48
-rw-r--r--nixpkgs/pkgs/applications/misc/wikicurses/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/with-shell/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/misc/wmname/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/misc/wofi/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/wordnet/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/misc/worker/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/misc/workrave/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/misc/wtf/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/xastir/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/xautoclick/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/xca/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/xchm/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/xcruiser/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/xdgmenumaker/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/misc/xfe/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/xfontsel/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/xiphos/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/misc/xkbd/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/xkblayout-state/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/misc/xkbmon/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/xmind/default.nix92
-rw-r--r--nixpkgs/pkgs/applications/misc/xmind/java-env-config-fixes.patch40
-rw-r--r--nixpkgs/pkgs/applications/misc/xmr-stak/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/misc/xmrig/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/xmrig/proxy.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/xneur/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/xpad/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/xpdf/cmake_version.patch15
-rw-r--r--nixpkgs/pkgs/applications/misc/xpdf/default.nix83
-rw-r--r--nixpkgs/pkgs/applications/misc/xpdf/libxpdf.nix52
-rw-r--r--nixpkgs/pkgs/applications/misc/xpdf/libxpdf.patch45
-rw-r--r--nixpkgs/pkgs/applications/misc/xpdf/xpdf-3.02-protection.patch74
-rw-r--r--nixpkgs/pkgs/applications/misc/xrandr-invert-colors/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/misc/xrq/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/xscope/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/misc/xsuspender/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/xsw/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/xsw/parse.patch21
-rw-r--r--nixpkgs/pkgs/applications/misc/xteddy/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/misc/xterm/default.nix71
-rw-r--r--nixpkgs/pkgs/applications/misc/xterm/sixel-256.support.patch11
-rw-r--r--nixpkgs/pkgs/applications/misc/xtermcontrol/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/xxkb/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/xygrib/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/yaft/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/yarssr/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/misc/yate/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/misc/yokadi/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/yubioath-desktop/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/misc/zathura/cb/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/zathura/core/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/misc/zathura/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/zathura/djvu/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/zathura/pdf-mupdf/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/misc/zathura/pdf-poppler/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/zathura/ps/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/zathura/wrapper.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/zk-shell/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/zola/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/zscroll/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/3proxy/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/Sylk/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/apache-directory-studio/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/networking/brig/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/arora/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/brave/default.nix161
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/browsh/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/browsh/deps.nix264
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/captive-browser/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/browser.nix94
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/common.nix346
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/default.nix217
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/patches/dont-use-ANGLE-by-default.patch26
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/patches/enable-vdpau-support-for-nvidia.patch74
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/patches/enable-video-acceleration-on-linux.patch48
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/patches/nix_plugin_paths_68.patch61
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/patches/no-build-timestamps.patch17
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/patches/remove-webp-include-69.patch11
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/patches/widevine-79.patch13
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/plugins.nix93
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/update.nix271
-rwxr-xr-xnixpkgs/pkgs/applications/networking/browsers/chromium/update.sh4
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.nix18
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/dillo/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/elinks/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/elinks/gc-init.patch17
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/elinks/openssl-1.1.patch51
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/eolie/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/ephemeral/default.nix70
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/falkon/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix965
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox-bin/default.nix210
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox-bin/devedition_sources.nix965
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix965
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox-bin/update.nix90
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox/common.nix314
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox/env_var_for_system_dir.patch6
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-ffx65.patch23
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-ffx76.patch23
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-min-65.patch25
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox/packages.nix94
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox/update.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox/wrapper.nix183
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/google-chrome/default.nix144
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/kristall/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/links2/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/luakit/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/lynx/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/midori/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/default.nix147
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/standalone.nix106
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/next/default.nix95
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/next/next-gtk-webkit.nix50
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/opera/default.nix122
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/palemoon/default.nix151
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/qtchan/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/qutebrowser/default.nix113
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/qutebrowser/fix-restart.patch19
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/surf/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix413
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle/extensions.nix111
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/browser.nix94
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/common.nix366
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/default.nix215
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/dont-use-ANGLE-by-default.patch26
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/enable-vdpau-support-for-nvidia.patch74
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/enable-video-acceleration-on-linux.patch48
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/nix_plugin_paths_68.patch61
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/no-build-timestamps.patch17
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/remove-webp-include-69.patch11
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/widevine-79.patch13
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/plugins.nix93
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled-src.nix6
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled.nix42
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/update.nix271
-rwxr-xr-xnixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/update.sh4
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/upstream-info.nix18
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/vimb/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/vivaldi/default.nix96
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix32
-rwxr-xr-xnixpkgs/pkgs/applications/networking/browsers/vivaldi/update.sh46
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/vivaldi/widevine.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/w3m/RAND_egd.libressl.patch11
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/w3m/default.nix100
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/w3m/no-x11.patch14
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/webmacs/default.nix75
-rw-r--r--nixpkgs/pkgs/applications/networking/c14/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/networking/c14/deps.nix1
-rw-r--r--nixpkgs/pkgs/applications/networking/calls/default.nix85
-rw-r--r--nixpkgs/pkgs/applications/networking/cawbird/default.nix76
-rw-r--r--nixpkgs/pkgs/applications/networking/charles/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/networking/cloudflared/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/argo/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/argocd/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/argocd/use-go-module.patch3058
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/atlantis/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/chronos/chronos-deps.nix14
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/chronos/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/chronos/fetch-chronos-deps.sh1672
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/click/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/cni/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/cni/plugins.nix48
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/docker-machine/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/docker-machine/hyperkit.nix23
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm-deps.nix21
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm2.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/docker-machine/xhyve.nix39
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/flink/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/fluxctl/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/habitat/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/hadoop/default.nix161
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/helm/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/helmfile/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/helmsman/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/heptio-ark/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/hetzner-kube/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/jx/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/k3s/default.nix265
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/k3s/patches/0001-Use-rm-from-path-in-go-generate.patch25
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/k3s/patches/0002-Add-nixpkgs-patches.patch87
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/k9s/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kanif/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kompose/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kontemplate/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kontemplate/deps.nix111
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kops/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kube-router/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kube3d/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kubecfg/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kubectl/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kubeless/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kubernetes/default.nix79
-rwxr-xr-xnixpkgs/pkgs/applications/networking/cluster/kubernetes/mk-docker-opts.sh113
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kubernix/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kubeseal/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kubetail/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kubeval/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kubeval/schema.nix15
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/linkerd/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/luigi/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/marathon/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/mesos/default.nix263
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/mesos/fetch-mesos-deps.sh1359
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/mesos/mesos-deps.nix14
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/mesos/nixos.patch731
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/mesos/rb36610.patch12
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/minikube/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/minishift/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/node-problem-detector/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/nomad/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/openshift/default.nix77
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/pachyderm/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/pig/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/prow/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/qbec/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/sonobuoy/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/spacegun/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/spacegun/generate-dependencies.sh10
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/spacegun/node-composition.nix17
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/spacegun/node-packages.nix11477
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/spacegun/package.json3
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/spark/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/ssm-agent/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/ssm-session-manager-plugin/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/stern/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/stern/deps.nix336
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/taktuk/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-docs/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-inventory/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-inventory/deps.nix20
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/Gemfile2
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/Gemfile.lock25
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/default.nix18
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/gemset.nix61
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ansible/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ansible/deps.nix11
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/data.nix1163
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix150
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/elasticsearch/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/deps.nix21
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/lxd/default.nix25
-rwxr-xr-xnixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-all177
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/vpsadmin/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform/default.nix153
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform/provider-path.patch16
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terragrunt/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/tilt/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/compactor/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/networking/datovka/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/davmail/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/dnscontrol/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/networking/drive/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/drive/deps.nix192
-rw-r--r--nixpkgs/pkgs/applications/networking/droopy/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/dropbox/cli.nix70
-rw-r--r--nixpkgs/pkgs/applications/networking/dropbox/default.nix85
-rw-r--r--nixpkgs/pkgs/applications/networking/dropbox/fix-cli-paths.patch11
-rw-r--r--nixpkgs/pkgs/applications/networking/dsvpn/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/dyndns/cfdyndns/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/enhanced-ctorrent/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/errbot/default.nix76
-rw-r--r--nixpkgs/pkgs/applications/networking/esniper/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/esniper/find-ca-bundle.patch26
-rw-r--r--nixpkgs/pkgs/applications/networking/feedreaders/canto-curses/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/feedreaders/canto-daemon/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/feedreaders/castget/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/networking/feedreaders/feedreader/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/networking/feedreaders/newsboat/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/networking/feedreaders/rawdog/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/networking/feedreaders/rss2email/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/networking/feedreaders/rssguard/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/feedreaders/rsstail/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/firehol/default.nix108
-rw-r--r--nixpkgs/pkgs/applications/networking/firehol/iprange.nix18
-rw-r--r--nixpkgs/pkgs/applications/networking/flent/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/flent/http-getter.nix23
-rw-r--r--nixpkgs/pkgs/applications/networking/flexget/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/networking/ftp/filezilla/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/networking/ftp/taxi/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/networking/gdrive/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/networking/gmailctl/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/gns3/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/networking/gns3/gui.nix47
-rw-r--r--nixpkgs/pkgs/applications/networking/gns3/server.nix56
-rw-r--r--nixpkgs/pkgs/applications/networking/google-drive-ocamlfuse/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/gopher/gopher/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/hpmyroom/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/networking/hydroxide/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/ids/daq/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/ids/snort/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/ids/suricata/bpf_stubs_workaround.patch19
-rw-r--r--nixpkgs/pkgs/applications/networking/ids/suricata/default.nix158
-rw-r--r--nixpkgs/pkgs/applications/networking/ids/zeek/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/networking/ids/zeek/script.nix62
-rw-r--r--nixpkgs/pkgs/applications/networking/ike/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/SkypeExport/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/amsn/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/baresip/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-discord/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-facebook/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-mastodon/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-steam/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee/plugins.nix20
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/blink/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/blink/pythonpath.patch49
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/bluejeans/default.nix126
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/bluejeans/localtime64_stub.c12
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/centerim/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/chatterino2/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/coyim/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/deltachat-electron/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/dino/default.nix82
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/discord/base.nix79
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/discord/default.nix36
-rwxr-xr-xnixpkgs/pkgs/applications/networking/instant-messengers/discord/update-discord.sh36
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/fractal/default.nix87
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/franz/default.nix57
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/freetalk/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/gajim/default.nix70
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/gitter/default.nix70
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/go-neb/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/go-neb/go-mod.patch50
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/gomuks/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/gomuks/gomod.patch12
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/gtmess/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/hipchat/default.nix88
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/jackline/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/jitsi-meet-electron/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/jitsi/default.nix71
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/jitsi/jitsi.patch27
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/linphone/default.nix238
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/linphone/fix_minizip_linking.patch13
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/matrix-dl/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/composition.nix21
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/node-env.nix540
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/node-packages.nix1426
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/package.json27
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/matrixcli/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mattermost-desktop/default.nix98
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mcabber/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/Gemfile39
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/Gemfile.lock103
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/default.nix82
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/gemset.nix422
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/mikutter.desktop9
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/plugin/gtk/Gemfile4
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/plugin/image_file_cache/Gemfile1
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/plugin/photo_support/Gemfile4
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/plugin/uitranslator/Gemfile6
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mm/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/nheko/default.nix82
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/oysttyer/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pantalaimon/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/carbons/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/msn-pecan/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/otr/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-latex/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-mra/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-opensteamworks/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-osd/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-skypeweb/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-xmpp-receipts/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-discord/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-facebook/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-hangouts/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-lurch/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-matrix/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-plugin-pack/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-slack/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-vk-plugin/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-xmpp-http-upload/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/sipe/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/telegram-purple/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/tox-prpl/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/window-merge/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/add-search-path.patch20
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/default.nix81
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/pidgin-makefile.patch64
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/wrapper.nix20
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/poezio/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pond/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pond/deps.nix47
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/profanity/default.nix80
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/profanity/patches/packages-osx.patch13
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/profanity/patches/undefined-macros.patch40
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/psi-plus/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/psi/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/psi/fix-cmake-hunspell-1.7.patch12
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pybitmessage/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/qtox/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/quaternion/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/rambox/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/rambox/pro.nix53
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/ratox/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/ricochet/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/default.nix150
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/notestsapps.patch106
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/restbed.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop-package.json112
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop-yarndeps.nix5669
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop.nix84
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-web.nix40
-rwxr-xr-xnixpkgs/pkgs/applications/networking/instant-messengers/riot/update-riot-desktop.sh17
-rwxr-xr-xnixpkgs/pkgs/applications/networking/instant-messengers/ripcord/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/salut-a-toi/requirements.nix67
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/scudcloud/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/signal-cli/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix139
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/silc-client/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/sky/default.nix86
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/skype-call-recorder/conference.patch148
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/skype-call-recorder/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/skypeforlinux/default.nix120
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/slack-term/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/slack/default.nix166
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/spectral/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/stride/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/qt-5.11.patch10
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/scons.patch53
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/teams/default.nix85
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/teamspeak/client.nix148
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/teamspeak/server.nix96
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix107
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/gabble/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/haze/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/idle/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/logger/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/mission-control/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/salut/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/tensor/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/torchat/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/toxic/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/turses/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/twinkle/default.nix84
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/utox/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/vacuum/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/viber/default.nix104
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/vk-messenger/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/wavebox/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/wire-desktop/default.nix151
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/xmpp-client/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/xmpp-client/deps.nix20
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/default.nix132
-rwxr-xr-xnixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/update.sh17
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/zulip/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/networking/insync/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/networking/ipfs-cluster/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/networking/ipfs-migrator/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/ipfs/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/networking/ipget/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/networking/iptraf-ng/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/networking/iptraf/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/bip/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/communi/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/epic5/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/glowing-bear/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/hexchat/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/ii/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/irccloud/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/irssi/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/irssi/fish/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/konversation/default.nix87
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/kvirc/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/quassel/default.nix97
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/qweechat/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/sic/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/tiny/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/default.nix87
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/colorize_nicks/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/go/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/hardcode-json-file-path.patch12
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/libpath.patch13
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-autosort/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix-bridge/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix-bridge/library-path.patch28
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix/default.nix79
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-otr/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-otr/libpath.patch13
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/zncplayback/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/wrapper.nix91
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/wraith/configure.patch58
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/wraith/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/wraith/dlopen.patch48
-rw-r--r--nixpkgs/pkgs/applications/networking/jmeter/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/networking/jnetmap/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/libcoap/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/lieer/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/linssid/0001-unbundled-qwt.patch43
-rw-r--r--nixpkgs/pkgs/applications/networking/linssid/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/networking/maestral/default.nix57
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/aerc/default.nix78
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/aerc/runtime-sharedir.patch56
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/afew/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/alpine/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/astroid/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/balsa/default.nix77
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/default.nix112
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/gtk3.nix121
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/mime.patch28
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/hasmail/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/imapfilter.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/inboxer/default.nix87
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/lumail/default.nix82
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/mailcheck/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/mailcheck/mailcheck-Makefile.patch22
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/mailnag/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/mailpile/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/mblaze/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/meli/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/mlarchive2maildir/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/mmh/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/msgviewer/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/mutt/default.nix96
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/neomutt/default.nix103
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/notbit/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/notmuch-addrlookup/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/notmuch-bower/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/notmuch/default.nix102
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/notmuch/muchsync.nix23
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/notmuch/mutt.nix46
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/sylpheed/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/thunderbird-bin/default.nix191
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix615
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/thunderbird/default.nix342
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/thunderbird/no-buildconfig.patch35
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/trojita/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/networking/modem-manager-gui/default.nix72
-rw-r--r--nixpkgs/pkgs/applications/networking/mpop/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/msmtp/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/networking/msmtp/paths.patch97
-rw-r--r--nixpkgs/pkgs/applications/networking/mullvad-vpn/default.nix92
-rw-r--r--nixpkgs/pkgs/applications/networking/mumble/default.nix145
-rw-r--r--nixpkgs/pkgs/applications/networking/mumble/fix-rnnoise-argument.patch16
-rw-r--r--nixpkgs/pkgs/applications/networking/mumble/overlay.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/ndppd/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/networking/netperf/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/newsreaders/liferea/default.nix86
-rw-r--r--nixpkgs/pkgs/applications/networking/newsreaders/pan/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/networking/newsreaders/quiterss/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/newsreaders/slrn/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/networking/nextcloud-client/0001-Explicitly-copy-dbus-files-into-the-store-dir.patch25
-rw-r--r--nixpkgs/pkgs/applications/networking/nextcloud-client/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/networking/nload/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/networking/nntp-proxy/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/nym/default.nix56
-rwxr-xr-xnixpkgs/pkgs/applications/networking/nym/update.sh37
-rw-r--r--nixpkgs/pkgs/applications/networking/offrss/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/omping/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/onionshare/default.nix113
-rw-r--r--nixpkgs/pkgs/applications/networking/onionshare/fix-paths.patch134
-rw-r--r--nixpkgs/pkgs/applications/networking/openbazaar/client.nix57
-rw-r--r--nixpkgs/pkgs/applications/networking/openbazaar/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/networking/ostinato/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/networking/ostinato/drone_ini.patch14
-rw-r--r--nixpkgs/pkgs/applications/networking/owamp/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/owncloud-client/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/deluge/1/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/deluge/2/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/eiskaltdcpp/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/freenet/default.nix80
-rwxr-xr-xnixpkgs/pkgs/applications/networking/p2p/freenet/freenetWrapper18
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/frostwire/default.nix94
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/frostwire/frostwire-bin.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/gnunet/default.nix72
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/gnunet/git.nix92
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/ktorrent/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/magnetico/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/mldonkey/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/ncdc/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/opentracker/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/qbittorrent/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/retroshare/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/soulseekqt/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/stig/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/synapse-bt/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/tixati/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/torrential/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/transgui/default.nix76
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/transmission-remote-cli/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/transmission-remote-gtk/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/transmission/default.nix97
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/tribler/default.nix88
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/twister/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/vuze/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/zeronet/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/ping/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/networking/pjsip/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/networking/pjsip/fix-aarch64.patch13
-rw-r--r--nixpkgs/pkgs/applications/networking/protocol/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/networking/protonmail-bridge/default.nix73
-rw-r--r--nixpkgs/pkgs/applications/networking/protonvpn-cli-ng/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/protonvpn-cli/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/networking/ps2client/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/pyload/beautifulsoup.nix20
-rw-r--r--nixpkgs/pkgs/applications/networking/pyload/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/anydesk/default.nix89
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/citrix-workspace/default.nix253
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/citrix-workspace/wrapper.nix19
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/freerdp/default.nix109
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/putty/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/rdesktop/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/remmina/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/teamviewer/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/waypipe/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/wayvnc/add-missing-librt.patch20
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/wayvnc/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/x2goclient/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/x2goserver/default.nix93
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/xrdp/default.nix105
-rw-r--r--nixpkgs/pkgs/applications/networking/resilio-sync/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/networking/scaleft/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/seafile-client/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/networking/sieve-connect/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/networking/siproxd/cheaders.patch14
-rw-r--r--nixpkgs/pkgs/applications/networking/siproxd/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/networking/sniffers/etherape/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/networking/sniffers/ettercap/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/networking/sniffers/kismet/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/networking/sniffers/sngrep/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/networking/sniffers/whsniff/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/sniffers/wireshark/default.nix122
-rw-r--r--nixpkgs/pkgs/applications/networking/sniffers/wireshark/wireshark-lookup-dumpcap-in-path.patch63
-rw-r--r--nixpkgs/pkgs/applications/networking/sniproxy/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/soapui/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/networking/soulseek/nicotine-plus/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/networking/spideroak/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/networking/ssb-patchwork/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/networking/station/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/networking/super-productivity/default.nix106
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/acd_cli/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/backintime/common.nix46
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/backintime/qt4.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/casync/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/desync/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/desync/deps.nix312
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/lsyncd/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/onedrive/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/rclone/browser.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/rclone/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/rsync/base.nix22
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/rsync/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/rsync/rrsync.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/unison/4.08-compatibility.patch52
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/unison/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/unison/lablgtk.patch31
-rw-r--r--nixpkgs/pkgs/applications/networking/syncplay/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/syncthing-gtk/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/networking/syncthing-gtk/paths.patch22
-rw-r--r--nixpkgs/pkgs/applications/networking/syncthing/add-stcli-target.patch17
-rw-r--r--nixpkgs/pkgs/applications/networking/syncthing/default.nix106
-rw-r--r--nixpkgs/pkgs/applications/networking/tcpkali/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/networking/termius/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/networking/testssl/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/networking/trebleshot/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/tsung/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/networking/umurmur/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/vnstat/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/wayback_machine_downloader/Gemfile5
-rw-r--r--nixpkgs/pkgs/applications/networking/wayback_machine_downloader/Gemfile.lock13
-rw-r--r--nixpkgs/pkgs/applications/networking/wayback_machine_downloader/default.nix16
-rw-r--r--nixpkgs/pkgs/applications/networking/wayback_machine_downloader/gemset.nix12
-rw-r--r--nixpkgs/pkgs/applications/networking/weather/meteo/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/networking/websocketd/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/networking/znc/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/networking/znc/modules.nix198
-rw-r--r--nixpkgs/pkgs/applications/office/abiword/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/office/aesop/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/office/agenda/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/office/antiword/10_fix_buffer_overflow_wordole_c_CVE-2014-8123.patch18
-rw-r--r--nixpkgs/pkgs/applications/office/antiword/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/office/atlassian-cli/default.nix49
-rwxr-xr-xnixpkgs/pkgs/applications/office/atlassian-cli/wrapper.sh20
-rw-r--r--nixpkgs/pkgs/applications/office/autokey/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/office/autokey/remove-requires-dbus-python.patch11
-rw-r--r--nixpkgs/pkgs/applications/office/beancount/bean-add.nix31
-rw-r--r--nixpkgs/pkgs/applications/office/bookworm/default.nix70
-rw-r--r--nixpkgs/pkgs/applications/office/calligra/default.nix70
-rw-r--r--nixpkgs/pkgs/applications/office/calligra/qt5_11.patch98
-rw-r--r--nixpkgs/pkgs/applications/office/cb2bib/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/office/csv2odf/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/office/docear/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/office/elementary-planner/default.nix76
-rw-r--r--nixpkgs/pkgs/applications/office/envelope/default.nix80
-rw-r--r--nixpkgs/pkgs/applications/office/fava/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/office/flexibee/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/office/gnucash/cmake_check_symbol_exists.patch12
-rw-r--r--nixpkgs/pkgs/applications/office/gnucash/default.nix110
-rw-r--r--nixpkgs/pkgs/applications/office/gnumeric/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/office/grisbi/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/office/homebank/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/office/ib/controller/default.nix162
-rw-r--r--nixpkgs/pkgs/applications/office/ib/tws/default.nix96
-rw-r--r--nixpkgs/pkgs/applications/office/impressive/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/office/jabref/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/office/jameica/default.nix75
-rw-r--r--nixpkgs/pkgs/applications/office/keepnote/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/office/kexi/default.nix57
-rw-r--r--nixpkgs/pkgs/applications/office/khronos/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/office/kmymoney/default.nix73
-rw-r--r--nixpkgs/pkgs/applications/office/ktimetracker/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/office/ledger-autosync/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/office/ledger-web/Gemfile3
-rw-r--r--nixpkgs/pkgs/applications/office/ledger-web/Gemfile.lock61
-rw-r--r--nixpkgs/pkgs/applications/office/ledger-web/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/office/ledger-web/gemset.nix211
-rw-r--r--nixpkgs/pkgs/applications/office/ledger/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/office/libreoffice/README.md9
-rw-r--r--nixpkgs/pkgs/applications/office/libreoffice/default.nix422
-rw-r--r--nixpkgs/pkgs/applications/office/libreoffice/download-list-builder.sh3
-rw-r--r--nixpkgs/pkgs/applications/office/libreoffice/gen-shell.nix29
-rwxr-xr-xnixpkgs/pkgs/applications/office/libreoffice/generate-libreoffice-srcs.py328
-rw-r--r--nixpkgs/pkgs/applications/office/libreoffice/libreoffice-srcs-additions.json5
-rw-r--r--nixpkgs/pkgs/applications/office/libreoffice/src-fresh/download.nix870
-rw-r--r--nixpkgs/pkgs/applications/office/libreoffice/src-fresh/override.nix10
-rw-r--r--nixpkgs/pkgs/applications/office/libreoffice/src-fresh/primary.nix36
-rw-r--r--nixpkgs/pkgs/applications/office/libreoffice/src-still/download.nix856
-rw-r--r--nixpkgs/pkgs/applications/office/libreoffice/src-still/override.nix12
-rw-r--r--nixpkgs/pkgs/applications/office/libreoffice/src-still/primary.nix36
-rw-r--r--nixpkgs/pkgs/applications/office/libreoffice/wrapper.nix19
-rw-r--r--nixpkgs/pkgs/applications/office/libreoffice/wrapper.sh31
-rw-r--r--nixpkgs/pkgs/applications/office/libreoffice/xdg-open-brief.patch13
-rw-r--r--nixpkgs/pkgs/applications/office/marp/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/office/mendeley/default.nix147
-rw-r--r--nixpkgs/pkgs/applications/office/mendeley/update.nix61
-rw-r--r--nixpkgs/pkgs/applications/office/minetime/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/office/mmex/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/office/moneyplex/default.nix122
-rw-r--r--nixpkgs/pkgs/applications/office/mytetra/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/office/notes-up/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/office/osmo/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/office/paperless/default.nix174
-rw-r--r--nixpkgs/pkgs/applications/office/paperless/python-modules/django-crispy-forms.nix36
-rw-r--r--nixpkgs/pkgs/applications/office/paperless/python-modules/django-filter.nix26
-rw-r--r--nixpkgs/pkgs/applications/office/paperless/withConfig.nix68
-rw-r--r--nixpkgs/pkgs/applications/office/paperwork/backend.nix48
-rw-r--r--nixpkgs/pkgs/applications/office/paperwork/default.nix102
-rw-r--r--nixpkgs/pkgs/applications/office/pinpoint/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/office/planner/default.nix79
-rw-r--r--nixpkgs/pkgs/applications/office/portfolio/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/office/pympress/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/office/qnotero/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/office/qownnotes/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/office/scribus/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/office/scribus/unstable.nix128
-rw-r--r--nixpkgs/pkgs/applications/office/skanlite/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/office/skrooge/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/office/softmaker/desktop_items.nix42
-rw-r--r--nixpkgs/pkgs/applications/office/softmaker/freeoffice.nix15
-rw-r--r--nixpkgs/pkgs/applications/office/softmaker/generic.nix121
-rw-r--r--nixpkgs/pkgs/applications/office/softmaker/softmaker_office.nix15
-rw-r--r--nixpkgs/pkgs/applications/office/spice-up/default.nix77
-rw-r--r--nixpkgs/pkgs/applications/office/tagainijisho/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/office/timetable/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/office/timetrap/Gemfile2
-rw-r--r--nixpkgs/pkgs/applications/office/timetrap/Gemfile.lock19
-rw-r--r--nixpkgs/pkgs/applications/office/timetrap/default.nix17
-rw-r--r--nixpkgs/pkgs/applications/office/timetrap/gemset.nix43
-rw-r--r--nixpkgs/pkgs/applications/office/todo.txt-cli/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/office/todoman/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/office/treesheets/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/office/trilium/0001-Use-console-logger-instead-of-rolling-files.patch69
-rw-r--r--nixpkgs/pkgs/applications/office/trilium/default.nix119
-rw-r--r--nixpkgs/pkgs/applications/office/tryton/default.nix77
-rw-r--r--nixpkgs/pkgs/applications/office/trytond/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/office/tudu/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/office/tusk/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/office/vnote/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/office/watson/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/office/wordgrinder/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/office/wpsoffice/default.nix173
-rw-r--r--nixpkgs/pkgs/applications/office/zanshin/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/office/zim/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/office/zotero/default.nix140
-rw-r--r--nixpkgs/pkgs/applications/office/zotero/zotero.sh3
-rw-r--r--nixpkgs/pkgs/applications/qubes/qubes-core-vchan-xen/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/radio/airspy/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/radio/aldo/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/radio/chirp/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/radio/cubicsdr/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/radio/dablin/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/radio/dabtools/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/radio/dmrconfig/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/radio/dump1090/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/radio/ebook2cw/configfile.patch11
-rw-r--r--nixpkgs/pkgs/applications/radio/ebook2cw/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/radio/fldigi/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/radio/fllog/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/radio/flmsg/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/radio/flrig/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/radio/flwrap/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/radio/gnss-sdr/default.nix80
-rw-r--r--nixpkgs/pkgs/applications/radio/gnuradio/ais.nix40
-rw-r--r--nixpkgs/pkgs/applications/radio/gnuradio/default.nix165
-rw-r--r--nixpkgs/pkgs/applications/radio/gnuradio/gsm.nix39
-rw-r--r--nixpkgs/pkgs/applications/radio/gnuradio/limesdr.nix40
-rw-r--r--nixpkgs/pkgs/applications/radio/gnuradio/nacl.nix39
-rw-r--r--nixpkgs/pkgs/applications/radio/gnuradio/osmosdr.nix47
-rw-r--r--nixpkgs/pkgs/applications/radio/gnuradio/rds.nix38
-rw-r--r--nixpkgs/pkgs/applications/radio/gnuradio/wrapper.nix24
-rw-r--r--nixpkgs/pkgs/applications/radio/gqrx/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/radio/hackrf/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/radio/inspectrum/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/radio/kalibrate-hackrf/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/radio/kalibrate-rtl/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/radio/limesuite/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/radio/minimodem/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/radio/multimon-ng/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/radio/pyradio/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/radio/qradiolink/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/radio/qsstv/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/radio/rtl-ais/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/radio/rtl-sdr/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/radio/rtl_433/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/radio/sdrangel/default.nix76
-rw-r--r--nixpkgs/pkgs/applications/radio/soapyairspy/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/radio/soapybladerf/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/radio/soapyhackrf/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/radio/soapyremote/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/radio/soapyrtlsdr/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/radio/soapysdr/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/radio/soapyuhd/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/radio/svxlink/default.nix71
-rw-r--r--nixpkgs/pkgs/applications/radio/tlf/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/radio/tqsl/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/radio/uhd/default.nix160
-rw-r--r--nixpkgs/pkgs/applications/radio/uhd/neon.patch19
-rw-r--r--nixpkgs/pkgs/applications/radio/unixcw/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/radio/unixcw/remove-use-of-dlopen.patch677
-rw-r--r--nixpkgs/pkgs/applications/radio/urh/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/radio/welle-io/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/radio/wsjtx/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/radio/wsjtx/super.patch12
-rw-r--r--nixpkgs/pkgs/applications/radio/wsjtx/wsjtx.patch13
-rw-r--r--nixpkgs/pkgs/applications/radio/xlog/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/astronomy/astrolabe-generator/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/astronomy/celestia/default.nix75
-rw-r--r--nixpkgs/pkgs/applications/science/astronomy/gildas/aarch64.patch12
-rw-r--r--nixpkgs/pkgs/applications/science/astronomy/gildas/clang.patch22
-rw-r--r--nixpkgs/pkgs/applications/science/astronomy/gildas/default.nix70
-rw-r--r--nixpkgs/pkgs/applications/science/astronomy/gildas/wrapper.patch19
-rw-r--r--nixpkgs/pkgs/applications/science/astronomy/gpredict/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/science/astronomy/gravit/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/science/astronomy/kstars/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/science/astronomy/openspace/assets.patch100
-rw-r--r--nixpkgs/pkgs/applications/science/astronomy/openspace/config.patch49
-rw-r--r--nixpkgs/pkgs/applications/science/astronomy/openspace/constexpr.patch91
-rw-r--r--nixpkgs/pkgs/applications/science/astronomy/openspace/default.nix90
-rw-r--r--nixpkgs/pkgs/applications/science/astronomy/openspace/vrpn.patch13
-rw-r--r--nixpkgs/pkgs/applications/science/astronomy/stellarium/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/science/astronomy/xearth/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/astronomy/xplanet/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/science/biology/EZminc/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/biology/N3/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/science/biology/ants/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/science/biology/aragorn/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/science/biology/bayescan/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/science/biology/bcftools/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/science/biology/bedtools/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/science/biology/bftools/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/science/biology/blast/default.nix108
-rw-r--r--nixpkgs/pkgs/applications/science/biology/blast/no_slash_bin.patch184
-rw-r--r--nixpkgs/pkgs/applications/science/biology/bowtie2/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/science/biology/bppsuite/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/science/biology/bwa/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/science/biology/cd-hit/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/science/biology/clustal-omega/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/science/biology/cmtk/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/science/biology/conglomerate/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/science/biology/dcm2niix/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/science/biology/deeptools/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/science/biology/delly/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/science/biology/diamond/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/science/biology/diamond/diamond-0.8.36-no-warning.patch20
-rw-r--r--nixpkgs/pkgs/applications/science/biology/ecopcr/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/science/biology/eggnog-mapper/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/science/biology/emboss/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/science/biology/est-sfs/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/science/biology/exonerate/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/science/biology/freebayes/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/science/biology/hisat2/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/science/biology/hmmer/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/science/biology/igv/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/science/biology/inormalize/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/science/biology/inormalize/lgmask-interp.patch10
-rw-r--r--nixpkgs/pkgs/applications/science/biology/inormalize/nu_correct_norm-interp.patch10
-rw-r--r--nixpkgs/pkgs/applications/science/biology/itsx/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/science/biology/iv/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/science/biology/kallisto/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/science/biology/kssd/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/science/biology/last/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/science/biology/macse/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/science/biology/manta/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/science/biology/megahit/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/science/biology/messer-slim/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/science/biology/migrate/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/science/biology/minc-tools/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/science/biology/minc-tools/fix-netcdf-header.patch12
-rw-r--r--nixpkgs/pkgs/applications/science/biology/minc-widgets/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/science/biology/minia/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/science/biology/minia/no-bundle.patch222
-rw-r--r--nixpkgs/pkgs/applications/science/biology/minimap2/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/science/biology/mni_autoreg/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/science/biology/mosdepth/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/science/biology/mrbayes/builder.sh9
-rw-r--r--nixpkgs/pkgs/applications/science/biology/mrbayes/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/science/biology/mrtrix/default.nix92
-rw-r--r--nixpkgs/pkgs/applications/science/biology/muscle/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/science/biology/muscle/muscle-3.8.31-no-static.patch21
-rw-r--r--nixpkgs/pkgs/applications/science/biology/ncbi-tools/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/science/biology/neuron/default.nix87
-rw-r--r--nixpkgs/pkgs/applications/science/biology/neuron/neuron-carbon-disable.patch21
-rw-r--r--nixpkgs/pkgs/applications/science/biology/niftyreg/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/science/biology/niftyseg/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/science/biology/octopus/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/science/biology/paml/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/science/biology/picard-tools/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/biology/platypus/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/science/biology/plink-ng/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/science/biology/plink/default.nix25
-rwxr-xr-xnixpkgs/pkgs/applications/science/biology/poretools/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/science/biology/prodigal/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/science/biology/quast/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/science/biology/raxml/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/science/biology/samtools/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/science/biology/samtools/samtools-0.1.19-no-curses.patch22
-rw-r--r--nixpkgs/pkgs/applications/science/biology/samtools/samtools_0_1_19.nix33
-rw-r--r--nixpkgs/pkgs/applications/science/biology/seaview/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/science/biology/snpeff/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/science/biology/somatic-sniper/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/science/biology/somatic-sniper/somatic-sniper.patch26
-rw-r--r--nixpkgs/pkgs/applications/science/biology/sortmerna/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/science/biology/spades/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/science/biology/stacks/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/science/biology/star/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/science/biology/strelka/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/science/biology/sumatools/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/science/biology/svaba/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/science/biology/tebreak/default.nix42
-rwxr-xr-xnixpkgs/pkgs/applications/science/biology/trimal/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/biology/truvari/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/science/biology/varscan/default.nix36
-rwxr-xr-xnixpkgs/pkgs/applications/science/biology/vcftools/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/science/biology/xenomapper/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/science/chemistry/avogadro/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/science/chemistry/gwyddion/codegen.patch22
-rw-r--r--nixpkgs/pkgs/applications/science/chemistry/gwyddion/default.nix86
-rw-r--r--nixpkgs/pkgs/applications/science/chemistry/jmol/default.nix53
-rwxr-xr-xnixpkgs/pkgs/applications/science/chemistry/marvin/LicenseManager.desktop9
-rwxr-xr-xnixpkgs/pkgs/applications/science/chemistry/marvin/MarvinSketch.desktop10
-rwxr-xr-xnixpkgs/pkgs/applications/science/chemistry/marvin/MarvinView.desktop10
-rw-r--r--nixpkgs/pkgs/applications/science/chemistry/marvin/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/science/chemistry/molden/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/science/chemistry/molden/dont_register_file_types.patch29
-rw-r--r--nixpkgs/pkgs/applications/science/chemistry/octopus/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/science/chemistry/openmolcas/default.nix85
-rw-r--r--nixpkgs/pkgs/applications/science/chemistry/pymol/default.nix57
-rw-r--r--nixpkgs/pkgs/applications/science/chemistry/quantum-espresso/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/science/chemistry/siesta/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/adms/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/alliance/default.nix74
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/archimedes/default.nix17
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/bitscope/common.nix64
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/bitscope/packages.nix146
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/caneda/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/caneda/gcc6.patch13
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/dsview/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/dsview/install.patch15
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/dsview/libsigrok4dsl.nix28
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/dsview/libsigrokdecode4dsl.nix27
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/eagle/eagle.nix80
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/eagle/eagle7.nix97
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/eagle/eagle7_fixer.c134
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/fparser/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/fped/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/fritzing/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/geda/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/gerbv/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/gtkwave/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/kicad/base.nix130
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/kicad/default.nix146
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/kicad/libraries.nix70
-rwxr-xr-xnixpkgs/pkgs/applications/science/electronics/kicad/update.sh197
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/kicad/versions.nix52
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/librepcb/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/magic-vlsi/0001-strip-bin-prefix.patch10
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/magic-vlsi/0002-fix-format-security.patch19
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/magic-vlsi/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/ngspice/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/pcb/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/pulseview/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/qfsm/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/qfsm/drop-hardcoded-prefix.patch20
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/qfsm/gcc6-fixes.patch20
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/qucs/cmakelists.patch34
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/qucs/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/tkgate/1.x.nix42
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/verilator/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/verilog/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/xcircuit/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/xoscope/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/xoscope/gtkdepre.diff58
-rw-r--r--nixpkgs/pkgs/applications/science/geometry/drgeo/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/science/geometry/drgeo/struct.patch68
-rw-r--r--nixpkgs/pkgs/applications/science/geometry/tetgen/1.4.nix22
-rw-r--r--nixpkgs/pkgs/applications/science/geometry/tetgen/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/science/logic/abc/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/science/logic/abella/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/science/logic/acgtk/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/science/logic/aiger/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/science/logic/alt-ergo/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/science/logic/aspino/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/science/logic/avy/0001-no-static-boost-libs.patch12
-rw-r--r--nixpkgs/pkgs/applications/science/logic/avy/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/science/logic/avy/glucose-fenv.patch65
-rw-r--r--nixpkgs/pkgs/applications/science/logic/avy/minisat-fenv.patch65
-rw-r--r--nixpkgs/pkgs/applications/science/logic/beluga/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/science/logic/boolector/cmake-gtest.patch16
-rw-r--r--nixpkgs/pkgs/applications/science/logic/boolector/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/science/logic/btor2tools/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/science/logic/cadical/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/science/logic/cedille/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/science/logic/celf/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/science/logic/clprover/clprover.nix27
-rw-r--r--nixpkgs/pkgs/applications/science/logic/coq/default.nix171
-rw-r--r--nixpkgs/pkgs/applications/science/logic/coq2html/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/science/logic/cryptominisat/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/science/logic/cryptoverif/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/science/logic/cubicle/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/science/logic/cvc3/cvc3-2.4.1-gccv6-fix.patch76
-rw-r--r--nixpkgs/pkgs/applications/science/logic/cvc3/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/science/logic/cvc4/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/science/logic/cvc4/minisat-fenv.patch65
-rw-r--r--nixpkgs/pkgs/applications/science/logic/drat-trim/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/science/logic/ekrhyper/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/science/logic/ekrhyper/default.upstream3
-rw-r--r--nixpkgs/pkgs/applications/science/logic/elan/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/science/logic/eprover/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/science/logic/fast-downward/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/science/logic/gappa/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/science/logic/glucose/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/science/logic/glucose/syrup.nix24
-rw-r--r--nixpkgs/pkgs/applications/science/logic/hol/default.nix88
-rw-r--r--nixpkgs/pkgs/applications/science/logic/hol_light/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/science/logic/iprover/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/science/logic/isabelle/default.nix82
-rw-r--r--nixpkgs/pkgs/applications/science/logic/jonprl/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/science/logic/lci/default.nix16
-rw-r--r--nixpkgs/pkgs/applications/science/logic/lean/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/science/logic/lean2/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/science/logic/leo2/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/science/logic/leo2/default.upstream6
-rw-r--r--nixpkgs/pkgs/applications/science/logic/leo3/binary.nix29
-rw-r--r--nixpkgs/pkgs/applications/science/logic/lingeling/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/science/logic/logisim/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/science/logic/ltl2ba/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/logic/mcrl2/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/science/logic/mcy/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/science/logic/metis-prover/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/science/logic/minisat/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/science/logic/monosat/default.nix79
-rw-r--r--nixpkgs/pkgs/applications/science/logic/open-wbo/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/science/logic/opensmt/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/science/logic/ott/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/science/logic/otter/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/science/logic/petrinizer/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/logic/petrinizer/sbv-7.13.nix26
-rw-r--r--nixpkgs/pkgs/applications/science/logic/petrinizer/z3.nix24
-rw-r--r--nixpkgs/pkgs/applications/science/logic/picosat/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/science/logic/poly/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/science/logic/potassco/clingcon.nix43
-rw-r--r--nixpkgs/pkgs/applications/science/logic/potassco/clingo.nix25
-rw-r--r--nixpkgs/pkgs/applications/science/logic/potassco/clingo.upstream6
-rw-r--r--nixpkgs/pkgs/applications/science/logic/prooftree/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/science/logic/prover9/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/science/logic/proverif/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/science/logic/redprl/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/science/logic/sad/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/science/logic/sad/monoid.patch51
-rw-r--r--nixpkgs/pkgs/applications/science/logic/sad/patch.patch200
-rw-r--r--nixpkgs/pkgs/applications/science/logic/satallax/default.nix71
-rw-r--r--nixpkgs/pkgs/applications/science/logic/satallax/fix-declaration-gcc9.patch21
-rw-r--r--nixpkgs/pkgs/applications/science/logic/saw-tools/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/science/logic/spass/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/science/logic/statverif/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/science/logic/stp/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/science/logic/symbiyosys/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/science/logic/tamarin-prover/default.nix109
-rw-r--r--nixpkgs/pkgs/applications/science/logic/tamarin-prover/sapic-native.patch77
-rw-r--r--nixpkgs/pkgs/applications/science/logic/tlaplus/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/science/logic/tlaplus/tlaps.nix54
-rw-r--r--nixpkgs/pkgs/applications/science/logic/tlaplus/toolbox.nix81
-rw-r--r--nixpkgs/pkgs/applications/science/logic/tptp/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/science/logic/twelf/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/science/logic/vampire/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/science/logic/verifast/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/science/logic/verit/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/logic/why3/configure.patch11
-rw-r--r--nixpkgs/pkgs/applications/science/logic/why3/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/science/logic/why3/with-provers.nix30
-rw-r--r--nixpkgs/pkgs/applications/science/logic/workcraft/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/science/logic/yices/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/science/logic/z3/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/science/logic/z3/tptp.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/machine-learning/fasttext/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/science/machine-learning/labelimg/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/science/machine-learning/sc2-headless/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/science/machine-learning/sc2-headless/maps.nix63
-rw-r--r--nixpkgs/pkgs/applications/science/machine-learning/shogun/default.nix98
-rw-r--r--nixpkgs/pkgs/applications/science/machine-learning/streamlit/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/science/math/LiE/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/science/math/R/default.nix118
-rw-r--r--nixpkgs/pkgs/applications/science/math/R/fix-failing-test.patch25
-rw-r--r--nixpkgs/pkgs/applications/science/math/R/no-usr-local-search-paths.patch24
-rw-r--r--nixpkgs/pkgs/applications/science/math/R/setup-hook.sh7
-rw-r--r--nixpkgs/pkgs/applications/science/math/almonds/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/science/math/bcal/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/science/math/bliss/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/science/math/caffe/darwin.patch47
-rw-r--r--nixpkgs/pkgs/applications/science/math/caffe/default.nix142
-rw-r--r--nixpkgs/pkgs/applications/science/math/caffe/python.patch70
-rw-r--r--nixpkgs/pkgs/applications/science/math/calc/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/science/math/calculix/calculix.patch31
-rw-r--r--nixpkgs/pkgs/applications/science/math/calculix/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/science/math/cbc/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/science/math/cemu/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/science/math/clp/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/science/math/cntk/default.nix105
-rw-r--r--nixpkgs/pkgs/applications/science/math/colpack/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/math/cplex/default.nix87
-rw-r--r--nixpkgs/pkgs/applications/science/math/csdp/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/science/math/ecm/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/math/eukleides/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/science/math/form/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/science/math/fricas/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/science/math/gap/default.nix185
-rw-r--r--nixpkgs/pkgs/applications/science/math/geogebra/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/science/math/getdp/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/science/math/gfan/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/science/math/giac/default.nix110
-rw-r--r--nixpkgs/pkgs/applications/science/math/ginac/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/science/math/glsurf/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/math/gmsh/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/science/math/gurobi/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/science/math/hmetis/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/science/math/jags/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/science/math/lp_solve/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/science/math/lp_solve/isnan.patch13
-rw-r--r--nixpkgs/pkgs/applications/science/math/lrcalc/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/science/math/mathematica/10.nix136
-rw-r--r--nixpkgs/pkgs/applications/science/math/mathematica/11.nix150
-rw-r--r--nixpkgs/pkgs/applications/science/math/mathematica/9.nix122
-rw-r--r--nixpkgs/pkgs/applications/science/math/mathematica/default.nix156
-rw-r--r--nixpkgs/pkgs/applications/science/math/mathematica/l10ns.nix60
-rw-r--r--nixpkgs/pkgs/applications/science/math/maxima/5.41.nix102
-rw-r--r--nixpkgs/pkgs/applications/science/math/maxima/default.nix104
-rw-r--r--nixpkgs/pkgs/applications/science/math/maxima/known-ecl-failures.patch21
-rw-r--r--nixpkgs/pkgs/applications/science/math/msieve/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/science/math/mxnet/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/science/math/nasc/default.nix70
-rw-r--r--nixpkgs/pkgs/applications/science/math/nauty/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/science/math/nota/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/science/math/palp/default.nix90
-rw-r--r--nixpkgs/pkgs/applications/science/math/pari/default.nix91
-rw-r--r--nixpkgs/pkgs/applications/science/math/pari/gp2c.nix27
-rw-r--r--nixpkgs/pkgs/applications/science/math/pcalc/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/science/math/perseus/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/science/math/polymake/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/science/math/pspp/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/science/math/pynac/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/science/math/qalculate-gtk/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/science/math/ratpoints/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/science/math/ries/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/science/math/ripser/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/science/math/rofi-calc/0001-Patch-plugindir-to-output.patch25
-rw-r--r--nixpkgs/pkgs/applications/science/math/rofi-calc/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/README.md78
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/default.nix172
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/dist-tests.nix17
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/env-locations.nix49
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/flask-oldsessions.nix36
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/flask-openid.nix28
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/patches/Only-test-py2-py3-optional-tests-when-all-of-sage-is.patch35
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/patches/configurationpy-error-verbose.patch19
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/patches/do-not-test-find-library.patch95
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/patches/docutils-0.15.patch24
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/patches/fix-ecl-race.patch19
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/patches/ignore-cmp-deprecation.patch24
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/patches/ignore-werkzeug-immutable-dict-deprecation.patch12
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/patches/pari-stackwarn.patch20
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/patches/python-5755-hotpatch.patch28
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/patches/sagenb-cmp-deprecation.patch13
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/patches/sphinx-docbuild-subprocesses.patch58
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/patches/sympow-cache.patch21
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/pybrial.nix25
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/python-openid.nix40
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/sage-env.nix187
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/sage-src.nix179
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/sage-tests.nix61
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/sage-with-env.nix137
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/sage.nix68
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/sagedoc.nix84
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/sagelib.nix156
-rw-r--r--nixpkgs/pkgs/applications/science/math/sage/sagenb.nix57
-rw-r--r--nixpkgs/pkgs/applications/science/math/scilab-bin/default.nix104
-rw-r--r--nixpkgs/pkgs/applications/science/math/scilab/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/science/math/scotch/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/science/math/singular/default.nix118
-rw-r--r--nixpkgs/pkgs/applications/science/math/speedcrunch/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/science/math/symmetrica/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/science/math/weka/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/math/wxmaxima/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/math/yacas/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/science/medicine/aliza/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/science/medicine/dcmtk/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/misc/boinc/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/science/misc/colmap/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/science/misc/cytoscape/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/science/misc/cytoscape/gen_vmoptions_to_homedir.patch19
-rw-r--r--nixpkgs/pkgs/applications/science/misc/fityk/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/science/misc/foldingathome/client.nix59
-rw-r--r--nixpkgs/pkgs/applications/science/misc/foldingathome/control.nix60
-rw-r--r--nixpkgs/pkgs/applications/science/misc/foldingathome/viewer.nix55
-rw-r--r--nixpkgs/pkgs/applications/science/misc/gephi/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/science/misc/golly/beta.nix51
-rw-r--r--nixpkgs/pkgs/applications/science/misc/golly/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/science/misc/golly/default.upstream5
-rw-r--r--nixpkgs/pkgs/applications/science/misc/gplates/boostfix.patch612
-rw-r--r--nixpkgs/pkgs/applications/science/misc/gplates/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/science/misc/megam/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/science/misc/megam/ocaml-3.12.patch12
-rw-r--r--nixpkgs/pkgs/applications/science/misc/megam/ocaml-includes.patch21
-rw-r--r--nixpkgs/pkgs/applications/science/misc/netlogo/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/science/misc/openmodelica/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/science/misc/openmodelica/fakegit.nix81
-rw-r--r--nixpkgs/pkgs/applications/science/misc/openmodelica/src-libs-git.nix71
-rw-r--r--nixpkgs/pkgs/applications/science/misc/openmodelica/src-libs-svn.nix5
-rw-r--r--nixpkgs/pkgs/applications/science/misc/openmodelica/src-main.nix6
-rwxr-xr-xnixpkgs/pkgs/applications/science/misc/openmodelica/update-src-libs-git.sh64
-rwxr-xr-xnixpkgs/pkgs/applications/science/misc/openmodelica/update-src-libs-svn.sh50
-rw-r--r--nixpkgs/pkgs/applications/science/misc/openmvg/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/science/misc/openmvs/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/science/misc/rink/cargo-lock.patch2631
-rw-r--r--nixpkgs/pkgs/applications/science/misc/rink/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/misc/root/5.nix96
-rw-r--r--nixpkgs/pkgs/applications/science/misc/root/default.nix93
-rw-r--r--nixpkgs/pkgs/applications/science/misc/root/disable_libc_dicts_root5.patch27
-rw-r--r--nixpkgs/pkgs/applications/science/misc/root/purify_include_paths_root5.patch204
-rw-r--r--nixpkgs/pkgs/applications/science/misc/root/setup-hook.sh13
-rw-r--r--nixpkgs/pkgs/applications/science/misc/root/sw_vers.patch101
-rw-r--r--nixpkgs/pkgs/applications/science/misc/root/sw_vers_root5.patch104
-rw-r--r--nixpkgs/pkgs/applications/science/misc/sasview/default.nix75
-rw-r--r--nixpkgs/pkgs/applications/science/misc/sasview/local_config.patch22
-rw-r--r--nixpkgs/pkgs/applications/science/misc/sasview/pyparsing-fix.patch13
-rw-r--r--nixpkgs/pkgs/applications/science/misc/sasview/xhtml2pdf.nix33
-rw-r--r--nixpkgs/pkgs/applications/science/misc/simgrid/default.nix112
-rw-r--r--nixpkgs/pkgs/applications/science/misc/snakemake/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/science/misc/tulip/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/science/misc/vite/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/science/molecular-dynamics/dl-poly-classic/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/science/molecular-dynamics/gromacs/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/science/molecular-dynamics/lammps/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/science/physics/elmerfem/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/science/physics/elmerfem/fix-cmake.patch13
-rw-r--r--nixpkgs/pkgs/applications/science/physics/quantomatic/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/physics/sacrifice/compat.patch12
-rw-r--r--nixpkgs/pkgs/applications/science/physics/sacrifice/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/science/physics/sherpa/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/physics/xfitter/default.nix57
-rw-r--r--nixpkgs/pkgs/applications/science/physics/xfitter/undefined_behavior.patch454
-rw-r--r--nixpkgs/pkgs/applications/science/physics/xflr5/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/science/programming/fdr/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/science/programming/groove/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/science/programming/plm/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/science/programming/scyther/cli.nix33
-rw-r--r--nixpkgs/pkgs/applications/science/programming/scyther/default.nix80
-rw-r--r--nixpkgs/pkgs/applications/science/robotics/apmplanner2/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/science/robotics/betaflight-configurator/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/science/robotics/mavproxy/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/science/robotics/qgroundcontrol/default.nix75
-rw-r--r--nixpkgs/pkgs/applications/science/robotics/sumorobot-manager/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/science/robotics/yarp/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/search/doodle/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/search/grepcidr/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/search/grepm/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/search/recoll/default.nix77
-rw-r--r--nixpkgs/pkgs/applications/system/glances/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/system/glances/skip-failing-tests.patch52
-rw-r--r--nixpkgs/pkgs/applications/system/monitor/default.nix75
-rw-r--r--nixpkgs/pkgs/applications/version-management/arch/configure-tmpdir.patch11
-rw-r--r--nixpkgs/pkgs/applications/version-management/arch/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/version-management/bcompare/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/version-management/bitkeeper/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/version-management/blackbox/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/version-management/cvs-fast-export/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/version-management/cvs/CVE-2012-0804.patch16
-rw-r--r--nixpkgs/pkgs/applications/version-management/cvs/CVE-2017-12836.patch29
-rw-r--r--nixpkgs/pkgs/applications/version-management/cvs/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/version-management/cvs/getcwd-chroot.patch302
-rw-r--r--nixpkgs/pkgs/applications/version-management/cvs2svn/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/version-management/cvsps/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/version-management/cvsq/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/version-management/dvc/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/version-management/dvc/dvc-daemon.patch21
-rw-r--r--nixpkgs/pkgs/applications/version-management/fossil/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/version-management/gerrit/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/bfg-repo-cleaner/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/Gemfile2
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/Gemfile.lock27
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/gemset.nix66
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/bump2version/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/cgit/default.nix80
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/darcs-to-git/default.nix80
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/default.nix242
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/delta/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/diff-so-fancy/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/fast-export/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/gh/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/ghq/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-absorb/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-metadata-gui/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-remote-b2/default.nix17
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-remote-b2/deps.nix20
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-remote-dbx/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-remote-rclone/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-utils/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-appraise/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-big-picture/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-bug/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-bz/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-cinnabar/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-codeowners/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-codereview/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-cola/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-crypt/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-dit/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-extras/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-fame/Gemfile4
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-fame/Gemfile.lock26
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-fame/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-fame/gemset.nix60
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-filter-repo/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-gone/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-hub/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-ignore/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-imerge/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-interactive-rebase-tool/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-machete/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-my/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-octopus/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-open/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-radar/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-recent/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-remote-gcrypt/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-remote-hg/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-reparent/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-secret/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-secrets/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-standup/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-stree/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-subrepo/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-subrepo/zsh-completion.patch32
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-subset/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-subtrac/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-sync/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-test/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-trim/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git-workspace/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git/default.nix349
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git/docbook2texi.patch38
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git/git-send-email-honor-PATH.patch28
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git/git-sh-i18n.patch23
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git/installCheck-path.patch13
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git/ssh-path.patch26
-rwxr-xr-xnixpkgs/pkgs/applications/version-management/git-and-tools/git/update.sh19
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/git2cl/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/gita/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/gitbatch/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/gitbatch/deps.nix543
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/gitflow/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/gitin/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/gitin/deps.nix121
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/gitstatus/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/gitstatus/romkatv_libgit2.nix22
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/gitui/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/gitweb/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/grv/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/hub/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/lab/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/lefthook/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/legit/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/pass-git-helper/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/qgit/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/scmpuff/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/scmpuff/deps.nix273
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/stgit/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/subgit/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/svn-all-fast-export/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/svn2git/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/thicket/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/thicket/shards.nix8
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/tig/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/topgit/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/transcrypt/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-and-tools/transcrypt/helper-scripts_depspathprefix.patch37
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-backup/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-crecord/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-lfs/1.nix31
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-lfs/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-repo/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-repo/import-ssl-module.patch12
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-review/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-sizer/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-up/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitea/default.nix74
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitea/static-root-path.patch13
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitinspector/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitkraken/default.nix117
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/data.json13
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/default.nix191
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/fix-grpc-ar.patch10
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/gitaly/Gemfile42
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/gitaly/Gemfile.lock239
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/gitaly/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/gitaly/deps.nix2100
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/gitaly/fix-executable-check.patch13
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/gitaly/gemset.nix927
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/gitlab-shell/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/gitlab-shell/deps.nix714
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/gitlab-shell/remove-hardcoded-locations.patch57
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/gitlab-workhorse/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/gitlab-workhorse/deps.nix1614
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch163
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/reset_token.rake43
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/rubyEnv/Gemfile500
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/rubyEnv/Gemfile.lock1411
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/rubyEnv/gemset.nix5158
-rwxr-xr-xnixpkgs/pkgs/applications/version-management/gitlab/update.py243
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitlab/yarnPkgs.nix13381
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitless/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitolite/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitstats/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/version-management/gogs/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/version-management/gogs/static-root-path.patch13
-rw-r--r--nixpkgs/pkgs/applications/version-management/gource/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/version-management/guitone/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/version-management/guitone/parallel-building.patch7
-rw-r--r--nixpkgs/pkgs/applications/version-management/meld/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/version-management/mercurial/4.9.nix71
-rw-r--r--nixpkgs/pkgs/applications/version-management/mercurial/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/version-management/monotone-viz/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/version-management/monotone-viz/graphviz-2.0.nix41
-rw-r--r--nixpkgs/pkgs/applications/version-management/monotone/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/version-management/monotone/default.upstream8
-rw-r--r--nixpkgs/pkgs/applications/version-management/monotone/monotone-1.1-Adapt-to-changes-in-pcre-8.42.patch66
-rw-r--r--nixpkgs/pkgs/applications/version-management/mr/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/version-management/nbstripout/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/version-management/nitpick/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/version-management/p4v/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/version-management/peru/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/version-management/pijul/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/version-management/pijul/thrussh-build-fix.patch12
-rw-r--r--nixpkgs/pkgs/applications/version-management/rabbitvcs/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/version-management/rapidsvn/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/version-management/rapidsvn/fix-build.patch122
-rw-r--r--nixpkgs/pkgs/applications/version-management/rcs/default.nix73
-rw-r--r--nixpkgs/pkgs/applications/version-management/rcs/disable-t810.patch10
-rw-r--r--nixpkgs/pkgs/applications/version-management/redmine/Gemfile75
-rw-r--r--nixpkgs/pkgs/applications/version-management/redmine/Gemfile.lock231
-rw-r--r--nixpkgs/pkgs/applications/version-management/redmine/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/version-management/redmine/gemset.nix878
-rw-r--r--nixpkgs/pkgs/applications/version-management/reposurgeon/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/version-management/reposurgeon/fix-makefile.patch12
-rw-r--r--nixpkgs/pkgs/applications/version-management/sit/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/version-management/smartgithg/default.nix94
-rw-r--r--nixpkgs/pkgs/applications/version-management/sourcehut/builds.nix60
-rw-r--r--nixpkgs/pkgs/applications/version-management/sourcehut/core.nix70
-rw-r--r--nixpkgs/pkgs/applications/version-management/sourcehut/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/version-management/sourcehut/disable-npm-install.patch14
-rw-r--r--nixpkgs/pkgs/applications/version-management/sourcehut/dispatch.nix38
-rw-r--r--nixpkgs/pkgs/applications/version-management/sourcehut/fetchNodeModules.nix26
-rw-r--r--nixpkgs/pkgs/applications/version-management/sourcehut/git.nix82
-rw-r--r--nixpkgs/pkgs/applications/version-management/sourcehut/hg.nix39
-rw-r--r--nixpkgs/pkgs/applications/version-management/sourcehut/lists.nix40
-rw-r--r--nixpkgs/pkgs/applications/version-management/sourcehut/man.nix37
-rw-r--r--nixpkgs/pkgs/applications/version-management/sourcehut/meta.nix47
-rw-r--r--nixpkgs/pkgs/applications/version-management/sourcehut/paste.nix37
-rw-r--r--nixpkgs/pkgs/applications/version-management/sourcehut/scm.nix36
-rw-r--r--nixpkgs/pkgs/applications/version-management/sourcehut/todo.nix48
-rwxr-xr-xnixpkgs/pkgs/applications/version-management/sourcehut/update.sh54
-rw-r--r--nixpkgs/pkgs/applications/version-management/sourcehut/use-srht-path.patch43
-rw-r--r--nixpkgs/pkgs/applications/version-management/src/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/version-management/srcml/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/version-management/srcml/gcc6.patch26
-rw-r--r--nixpkgs/pkgs/applications/version-management/sublime-merge/common.nix117
-rw-r--r--nixpkgs/pkgs/applications/version-management/sublime-merge/default.nix16
-rw-r--r--nixpkgs/pkgs/applications/version-management/subversion/apr-1.patch11
-rw-r--r--nixpkgs/pkgs/applications/version-management/subversion/default.nix130
-rw-r--r--nixpkgs/pkgs/applications/version-management/tailor/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/version-management/tkcvs/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/version-management/tortoisehg/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/version-management/vcprompt/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/version-management/vcsh/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/version-management/yadm/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/video/aegisub/default.nix131
-rw-r--r--nixpkgs/pkgs/applications/video/avidemux/bootstrap_logging.patch26
-rw-r--r--nixpkgs/pkgs/applications/video/avidemux/default.nix99
-rw-r--r--nixpkgs/pkgs/applications/video/avidemux/dynamic_install_dir.patch12
-rw-r--r--nixpkgs/pkgs/applications/video/avxsynth/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/video/bino3d/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/video/bombono/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/video/bomi/default.nix118
-rw-r--r--nixpkgs/pkgs/applications/video/byzanz/add-amflags.patch12
-rw-r--r--nixpkgs/pkgs/applications/video/byzanz/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/video/catt/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/video/ccextractor/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/video/celluloid/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/video/cinelerra/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/video/clickshare-csc1/default.nix124
-rw-r--r--nixpkgs/pkgs/applications/video/clipgrab/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/video/coriander/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/video/devede/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/video/dvb-apps/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/video/dvd-slideshow/default.nix72
-rw-r--r--nixpkgs/pkgs/applications/video/dvdauthor/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-0.7.1-automake-1.13.patch10
-rw-r--r--nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-0.7.1-mga-strndup.patch24
-rw-r--r--nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-imagemagick-0.7.0.patch11
-rw-r--r--nixpkgs/pkgs/applications/video/dvdbackup/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/video/dvdstyler/default.nix85
-rw-r--r--nixpkgs/pkgs/applications/video/ffmpeg-normalize/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/video/gnome-mplayer/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/video/gnome-mplayer/fix-paths.patch87
-rw-r--r--nixpkgs/pkgs/applications/video/gnomecast/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/video/gpac/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/video/handbrake/default.nix142
-rw-r--r--nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/video/jftui/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/video/k9copy/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/video/k9copy/gcc6.patch26
-rw-r--r--nixpkgs/pkgs/applications/video/kazam/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/video/kazam/fix-paths.patch22
-rw-r--r--nixpkgs/pkgs/applications/video/kino/default.nix95
-rw-r--r--nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libav-0.7.patch60
-rw-r--r--nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libav-0.8.patch57
-rw-r--r--nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libavcodec-pkg-config.patch11
-rw-r--r--nixpkgs/pkgs/applications/video/kino/kino-1.3.4-v4l1.patch21
-rw-r--r--nixpkgs/pkgs/applications/video/kmplayer/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/video/kmplayer/kmplayer_part-plugin_metadata.patch11
-rw-r--r--nixpkgs/pkgs/applications/video/kmplayer/no-docs.patch12
-rw-r--r--nixpkgs/pkgs/applications/video/kodi/default.nix295
-rw-r--r--nixpkgs/pkgs/applications/video/kodi/plugins.nix552
-rw-r--r--nixpkgs/pkgs/applications/video/kodi/wrapper.nix30
-rw-r--r--nixpkgs/pkgs/applications/video/kodi/yatp/dont-monkey.patch29
-rw-r--r--nixpkgs/pkgs/applications/video/lightworks/default.nix87
-rw-r--r--nixpkgs/pkgs/applications/video/linuxstopmotion/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/video/linuxstopmotion/linuxstopmotion-fix-wrong-isProcess-logic.patch33
-rw-r--r--nixpkgs/pkgs/applications/video/lxdvdrip/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/video/makemkv/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/video/manim/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/video/manim/remove-dependency-constraints.patch26
-rw-r--r--nixpkgs/pkgs/applications/video/mapmap/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/video/mediathekview/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/video/minitube/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/video/mjpg-streamer/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/video/mkclean/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/video/mkvtoolnix/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/video/mlv-app/aarch64-flags.patch13
-rw-r--r--nixpkgs/pkgs/applications/video/mlv-app/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/video/motion/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/video/mpc-qt/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/video/mplayer/default.nix226
-rw-r--r--nixpkgs/pkgs/applications/video/mpv/default.nix237
-rw-r--r--nixpkgs/pkgs/applications/video/mpv/scripts/convert.nix43
-rw-r--r--nixpkgs/pkgs/applications/video/mpv/scripts/convert.patch67
-rw-r--r--nixpkgs/pkgs/applications/video/mpv/scripts/mpris.nix39
-rw-r--r--nixpkgs/pkgs/applications/video/mpv/scripts/simple-mpv-webui.nix33
-rw-r--r--nixpkgs/pkgs/applications/video/mpv/wrapper.nix83
-rw-r--r--nixpkgs/pkgs/applications/video/mythtv/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/video/mythtv/disable-os-detection.patch51
-rw-r--r--nixpkgs/pkgs/applications/video/mythtv/exiv2.patch19
-rw-r--r--nixpkgs/pkgs/applications/video/natron/config.pri20
-rw-r--r--nixpkgs/pkgs/applications/video/natron/default.nix129
-rw-r--r--nixpkgs/pkgs/applications/video/obs-studio/default.nix107
-rw-r--r--nixpkgs/pkgs/applications/video/obs-studio/fix-search-path.patch13
-rw-r--r--nixpkgs/pkgs/applications/video/obs-studio/hardcode-ndi-path.patch17
-rw-r--r--nixpkgs/pkgs/applications/video/obs-studio/linuxbrowser.nix49
-rw-r--r--nixpkgs/pkgs/applications/video/obs-studio/obs-ndi.nix41
-rw-r--r--nixpkgs/pkgs/applications/video/obs-studio/v4l2sink.nix55
-rw-r--r--nixpkgs/pkgs/applications/video/obs-studio/wlrobs.nix42
-rw-r--r--nixpkgs/pkgs/applications/video/ogmtools/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/video/olive-editor/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/video/omxplayer/default.nix86
-rw-r--r--nixpkgs/pkgs/applications/video/openshot-qt/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/video/openshot-qt/libopenshot-audio.nix35
-rw-r--r--nixpkgs/pkgs/applications/video/openshot-qt/libopenshot.nix51
-rw-r--r--nixpkgs/pkgs/applications/video/p2pvc/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/video/peek/default.nix78
-rw-r--r--nixpkgs/pkgs/applications/video/pitivi/default.nix81
-rw-r--r--nixpkgs/pkgs/applications/video/pitivi/prevent-closure-contamination.patch23
-rw-r--r--nixpkgs/pkgs/applications/video/plex-media-player/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/video/plex-media-player/deps.nix28
-rwxr-xr-xnixpkgs/pkgs/applications/video/plex-media-player/update.sh71
-rw-r--r--nixpkgs/pkgs/applications/video/plex-mpv-shim/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/video/pyca/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/video/qarte/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/video/qmediathekview/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/video/qstopmotion/default.nix82
-rw-r--r--nixpkgs/pkgs/applications/video/quvi/library.nix22
-rw-r--r--nixpkgs/pkgs/applications/video/quvi/scripts.nix21
-rw-r--r--nixpkgs/pkgs/applications/video/quvi/tool.nix25
-rw-r--r--nixpkgs/pkgs/applications/video/screenkey/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/video/screenkey/paths.patch20
-rw-r--r--nixpkgs/pkgs/applications/video/shotcut/0001-encodedock.cpp-connect-to-VAAPI-via-DRM-not-X11.patch33
-rw-r--r--nixpkgs/pkgs/applications/video/shotcut/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/video/simplescreenrecorder/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/video/simplescreenrecorder/fix-paths.patch35
-rw-r--r--nixpkgs/pkgs/applications/video/smplayer/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/video/smtube/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/video/streamlink/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/video/subdl/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/video/subtitleeditor/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/video/tartube/default.nix74
-rw-r--r--nixpkgs/pkgs/applications/video/tivodecode/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/video/uvccapture/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/video/vdr/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/video/vdr/plugins.nix338
-rw-r--r--nixpkgs/pkgs/applications/video/vdr/wrapper.nix30
-rw-r--r--nixpkgs/pkgs/applications/video/vdr/xineliboutput/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/video/vlc/default.nix103
-rw-r--r--nixpkgs/pkgs/applications/video/vokoscreen/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/video/vokoscreen/ffmpeg-out-of-box.patch24
-rw-r--r--nixpkgs/pkgs/applications/video/w_scan/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/video/webcamoid/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/video/webtorrent_desktop/default.nix88
-rw-r--r--nixpkgs/pkgs/applications/video/wf-recorder/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/video/wxcam/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/video/xawtv/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/video/xine-ui/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/video/xscast/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/video/xvidcap/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/video/xvidcap/xlib.patch15
-rw-r--r--nixpkgs/pkgs/applications/virtualization/8086tiny/builder.sh30
-rw-r--r--nixpkgs/pkgs/applications/virtualization/8086tiny/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/virtualization/OVMF/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/virtualization/aqemu/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/virtualization/arion/default.nix83
-rw-r--r--nixpkgs/pkgs/applications/virtualization/bochs/bochs-2.6.11-glibc-2.26.patch13
-rw-r--r--nixpkgs/pkgs/applications/virtualization/bochs/default.nix129
-rw-r--r--nixpkgs/pkgs/applications/virtualization/bochs/fix-build-smp.patch21
-rw-r--r--nixpkgs/pkgs/applications/virtualization/charliecloud/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/virtualization/cntr/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/virtualization/conmon/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/virtualization/containerd/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/virtualization/cri-o/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/virtualization/cri-o/wrapper.nix53
-rw-r--r--nixpkgs/pkgs/applications/virtualization/crosvm/default-seccomp-policy-dir.diff15
-rw-r--r--nixpkgs/pkgs/applications/virtualization/crosvm/default.nix93
-rwxr-xr-xnixpkgs/pkgs/applications/virtualization/crosvm/update.py91
-rw-r--r--nixpkgs/pkgs/applications/virtualization/crosvm/upstream-info.json23
-rw-r--r--nixpkgs/pkgs/applications/virtualization/crun/default.nix75
-rw-r--r--nixpkgs/pkgs/applications/virtualization/docker-compose/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/virtualization/docker-slim/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/virtualization/docker/default.nix210
-rw-r--r--nixpkgs/pkgs/applications/virtualization/docker/distribution.nix23
-rw-r--r--nixpkgs/pkgs/applications/virtualization/docker/gc.nix33
-rw-r--r--nixpkgs/pkgs/applications/virtualization/docker/proxy.nix29
-rw-r--r--nixpkgs/pkgs/applications/virtualization/driver/win-pvdrivers/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/virtualization/driver/win-qemu/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/virtualization/driver/win-signed-gplpv-drivers/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/virtualization/driver/win-spice/default.nix70
-rw-r--r--nixpkgs/pkgs/applications/virtualization/driver/win-virtio/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/virtualization/dumb-init/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/virtualization/dynamips/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/virtualization/ecs-agent/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/virtualization/firecracker/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/virtualization/firectl/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/virtualization/firectl/gomod.patch15
-rw-r--r--nixpkgs/pkgs/applications/virtualization/gvisor/containerd-shim.nix36
-rw-r--r--nixpkgs/pkgs/applications/virtualization/gvisor/default.nix101
-rw-r--r--nixpkgs/pkgs/applications/virtualization/hercules/default.nix18
-rw-r--r--nixpkgs/pkgs/applications/virtualization/lkl/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/virtualization/looking-glass-client/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/virtualization/nvidia-docker/config.toml13
-rw-r--r--nixpkgs/pkgs/applications/virtualization/nvidia-docker/default.nix84
-rw-r--r--nixpkgs/pkgs/applications/virtualization/nvidia-docker/libnvc-ldconfig-and-path-fixes.patch130
-rw-r--r--nixpkgs/pkgs/applications/virtualization/nvidia-docker/libnvc.nix55
-rw-r--r--nixpkgs/pkgs/applications/virtualization/open-vm-tools/default.nix76
-rw-r--r--nixpkgs/pkgs/applications/virtualization/open-vm-tools/recognize_nixos.patch33
-rw-r--r--nixpkgs/pkgs/applications/virtualization/podman-compose/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/virtualization/podman/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/virtualization/podman/wrapper.nix52
-rw-r--r--nixpkgs/pkgs/applications/virtualization/qboot/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/virtualization/qemu/9p-ignore-noatime.patch44
-rw-r--r--nixpkgs/pkgs/applications/virtualization/qemu/default.nix166
-rw-r--r--nixpkgs/pkgs/applications/virtualization/qemu/fix-qemu-ga.patch36
-rw-r--r--nixpkgs/pkgs/applications/virtualization/qemu/force-uid0-on-9p.patch81
-rw-r--r--nixpkgs/pkgs/applications/virtualization/qemu/no-etc-install.patch12
-rw-r--r--nixpkgs/pkgs/applications/virtualization/qemu/sigrtminmax.patch30
-rw-r--r--nixpkgs/pkgs/applications/virtualization/qemu/utils.nix18
-rw-r--r--nixpkgs/pkgs/applications/virtualization/qtemu/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/virtualization/railcar/cargo-lock.patch435
-rw-r--r--nixpkgs/pkgs/applications/virtualization/railcar/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/virtualization/remotebox/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/virtualization/runc/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/virtualization/seabios/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/virtualization/singularity/default.nix76
-rw-r--r--nixpkgs/pkgs/applications/virtualization/singularity/deps.nix1
-rw-r--r--nixpkgs/pkgs/applications/virtualization/spice-vdagent/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/virtualization/spice-vdagent/timeout.diff84
-rw-r--r--nixpkgs/pkgs/applications/virtualization/spike/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/virtualization/tini/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/virtualization/tinyemu/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/virtualization/umoci/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/virtualization/virt-manager/default.nix71
-rw-r--r--nixpkgs/pkgs/applications/virtualization/virt-manager/qt.nix43
-rw-r--r--nixpkgs/pkgs/applications/virtualization/virt-top/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/virtualization/virt-viewer/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/virtualization/virt-what/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/virtualization/virtinst/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/virtualization/virtualbox/default.nix236
-rw-r--r--nixpkgs/pkgs/applications/virtualization/virtualbox/extpack.nix25
-rw-r--r--nixpkgs/pkgs/applications/virtualization/virtualbox/extra_symbols.patch21
-rw-r--r--nixpkgs/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix165
-rw-r--r--nixpkgs/pkgs/applications/virtualization/virtualbox/hardened.patch182
-rw-r--r--nixpkgs/pkgs/applications/virtualization/virtualbox/qt-env-vars.patch14
-rw-r--r--nixpkgs/pkgs/applications/virtualization/virtualbox/qtx11extras.patch16
-rwxr-xr-xnixpkgs/pkgs/applications/virtualization/virtualbox/update.sh44
-rw-r--r--nixpkgs/pkgs/applications/virtualization/vpcs/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/virtualization/vpcs/vpcs-0.8-glibc-2.26.patch14
-rw-r--r--nixpkgs/pkgs/applications/virtualization/x11docker/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/virtualization/xen/0000-fix-install-python.patch16
-rw-r--r--nixpkgs/pkgs/applications/virtualization/xen/0000-fix-ipxe-src.patch27
-rw-r--r--nixpkgs/pkgs/applications/virtualization/xen/0000-qemu-seabios-enable-ATA_DMA.patch19
-rw-r--r--nixpkgs/pkgs/applications/virtualization/xen/0001-libxl-Spice-image-compression-setting-support-for-up.patch104
-rw-r--r--nixpkgs/pkgs/applications/virtualization/xen/0002-libxl-Spice-streaming-video-setting-support-for-upst.patch104
-rw-r--r--nixpkgs/pkgs/applications/virtualization/xen/0003-Add-qxl-vga-interface-support-for-upstream-qem.patch165
-rw-r--r--nixpkgs/pkgs/applications/virtualization/xen/4.10.nix181
-rw-r--r--nixpkgs/pkgs/applications/virtualization/xen/4.8.nix198
-rw-r--r--nixpkgs/pkgs/applications/virtualization/xen/acpica-utils-20180427.patch63
-rw-r--r--nixpkgs/pkgs/applications/virtualization/xen/generic.nix240
-rw-r--r--nixpkgs/pkgs/applications/virtualization/xen/packages.nix105
-rw-r--r--nixpkgs/pkgs/applications/virtualization/xen/qemu-gluster-6-compat.diff95
-rw-r--r--nixpkgs/pkgs/applications/virtualization/xen/xsa-patches.nix488
-rw-r--r--nixpkgs/pkgs/applications/virtualization/xhyve/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/window-managers/2bwm/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/window-managers/afterstep/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/window-managers/awesome/default.nix92
-rw-r--r--nixpkgs/pkgs/applications/window-managers/berry/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/window-managers/bevelbar/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/window-managers/bspwm/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/window-managers/bspwm/unstable.nix31
-rw-r--r--nixpkgs/pkgs/applications/window-managers/btops/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/window-managers/btops/deps.nix120
-rw-r--r--nixpkgs/pkgs/applications/window-managers/cage/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/window-managers/clfswm/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/window-managers/clfswm/require-clx.patch13
-rw-r--r--nixpkgs/pkgs/applications/window-managers/cwm/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/window-managers/dwm/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/window-managers/dwm/dwm-status.nix37
-rw-r--r--nixpkgs/pkgs/applications/window-managers/dwm/git.nix37
-rw-r--r--nixpkgs/pkgs/applications/window-managers/dzen2/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/window-managers/evilwm/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/window-managers/fbpanel/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/window-managers/fluxbox/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/window-managers/fvwm/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/window-managers/herbstluftwm/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/window-managers/hikari/default.nix75
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/blocks-gaps.nix51
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/blocks.nix33
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/default.nix74
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/easyfocus.nix32
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/gaps.nix33
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/i3ipc-glib.nix34
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/layout-manager.nix39
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/lock-color.nix62
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/lock-fancy.nix41
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/lock.nix37
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/pystatus.nix59
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/status-rust.nix30
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/status.nix29
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/wk-switch.nix31
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/wmfocus.nix32
-rw-r--r--nixpkgs/pkgs/applications/window-managers/icewm/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/window-managers/ion-3/default.nix18
-rw-r--r--nixpkgs/pkgs/applications/window-managers/jwm/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/window-managers/jwm/jwm-settings-manager.nix44
-rw-r--r--nixpkgs/pkgs/applications/window-managers/kbdd/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/window-managers/larswm/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/window-managers/leftwm/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/window-managers/lemonbar/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/window-managers/lemonbar/xft.nix23
-rw-r--r--nixpkgs/pkgs/applications/window-managers/lwm/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/window-managers/matchbox/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/window-managers/neocomp/default.nix85
-rw-r--r--nixpkgs/pkgs/applications/window-managers/notion/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/window-managers/openbox/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/window-managers/oroborus/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/window-managers/pekwm/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/window-managers/picom/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/window-managers/qtile/0001-Substitution-vars-for-absolute-paths.patch30
-rw-r--r--nixpkgs/pkgs/applications/window-managers/qtile/0002-Restore-PATH-and-PYTHONPATH.patch60
-rw-r--r--nixpkgs/pkgs/applications/window-managers/qtile/0003-Restart-executable.patch13
-rw-r--r--nixpkgs/pkgs/applications/window-managers/qtile/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/window-managers/ratpoison/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sawfish/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/window-managers/smallwm/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/window-managers/spectrwm/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/window-managers/stalonetray/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/window-managers/stumpish/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/window-managers/stumpish/paths.patch87
-rw-r--r--nixpkgs/pkgs/applications/window-managers/stumpwm/default.nix103
-rw-r--r--nixpkgs/pkgs/applications/window-managers/stumpwm/fix-module-path.patch16
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sway/bg.nix36
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sway/contrib.nix107
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sway/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sway/idle.nix38
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sway/load-configuration-from-etc.patch42
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sway/lock-effects.nix40
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sway/lock-fancy.nix47
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sway/lock.nix41
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sway/sway-config-no-nix-store-references.patch21
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sway/wrapper.nix53
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sxhkd/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/window-managers/tabbed/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/window-managers/taffybar/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/window-managers/tinywm/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/window-managers/trayer/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/window-managers/vwm/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/window-managers/weston/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/window-managers/windowlab/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/window-managers/windowmaker/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/window-managers/windowmaker/dockapps/alsamixer.app.nix27
-rw-r--r--nixpkgs/pkgs/applications/window-managers/windowmaker/dockapps/wmcalclock.nix32
-rw-r--r--nixpkgs/pkgs/applications/window-managers/windowmaker/dockapps/wmsm.app.nix29
-rw-r--r--nixpkgs/pkgs/applications/window-managers/windowmaker/dockapps/wmsystemtray.nix20
-rw-r--r--nixpkgs/pkgs/applications/window-managers/wmfs/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/window-managers/wmii-hg/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/window-managers/xmonad/log-applet/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/window-managers/xmonad/log-applet/fix-paths.patch57
-rw-r--r--nixpkgs/pkgs/applications/window-managers/xmonad/wrapper.nix20
-rw-r--r--nixpkgs/pkgs/applications/window-managers/yabar/build.nix55
-rw-r--r--nixpkgs/pkgs/applications/window-managers/yabar/default.nix18
-rw-r--r--nixpkgs/pkgs/applications/window-managers/yabar/unstable.nix25
-rw-r--r--nixpkgs/pkgs/applications/window-managers/yeahwm/default.nix58
3601 files changed, 353002 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/accessibility/contrast/default.nix b/nixpkgs/pkgs/applications/accessibility/contrast/default.nix
new file mode 100644
index 000000000000..192bf041c64e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/accessibility/contrast/default.nix
@@ -0,0 +1,72 @@
+{ stdenv
+, fetchFromGitLab
+, cairo
+, dbus
+, desktop-file-utils
+, gettext
+, glib
+, gtk3
+, libhandy
+, meson
+, ninja
+, pango
+, pkgconfig
+, python3
+, rustc
+, rustPlatform
+, wrapGAppsHook
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "contrast";
+  version = "0.0.3";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    group = "World";
+    owner = "design";
+    repo = "contrast";
+    rev = version;
+    sha256 = "0kk3mv7a6y258109xvgicmsi0lw0rcs00gfyivl5hdz7qh47iccy";
+  };
+
+  cargoSha256 = "0vi8nv4hkhsgqgz36xacwkk5cxirg6li44nbmk3x7vx7c64hzybq";
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    gettext
+    meson
+    ninja
+    pkgconfig
+    python3
+    wrapGAppsHook
+    glib # for glib-compile-resources
+  ];
+
+  buildInputs = [
+    cairo
+    dbus
+    glib
+    gtk3
+    libhandy
+    pango
+  ];
+
+  postPatch = ''
+    patchShebangs build-aux/meson_post_install.py
+  '';
+
+  # Don't use buildRustPackage phases, only use it for rust deps setup
+  configurePhase = null;
+  buildPhase = null;
+  checkPhase = null;
+  installPhase = null;
+
+  meta = with stdenv.lib; {
+    description = "Checks whether the contrast between two colors meet the WCAG requirements";
+    homepage = "https://gitlab.gnome.org/World/design/contrast";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ jtojnar ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/accessibility/dasher/default.nix b/nixpkgs/pkgs/applications/accessibility/dasher/default.nix
new file mode 100644
index 000000000000..43844d0c66bb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/accessibility/dasher/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, lib, fetchFromGitHub
+, autoreconfHook, pkgconfig, wrapGAppsHook
+, glib, gtk3, expat, gnome-doc-utils, which
+, at-spi2-core, dbus
+, libxslt, libxml2
+, speechSupport ? true, speechd ? null
+}:
+
+assert speechSupport -> speechd != null;
+
+stdenv.mkDerivation {
+  pname = "dasher";
+  version = "2018-04-03";
+
+  src = fetchFromGitHub {
+    owner = "dasher-project";
+    repo = "dasher";
+    rev = "9ab12462e51d17a38c0ddc7f7ffe1cb5fe83b627";
+    sha256 = "1r9xn966nx3pv2bidd6i3pxmprvlw6insnsb38zabmac609h9d9s";
+  };
+
+  prePatch = ''
+    # tries to invoke git for something, probably fetching the ref
+    echo "true" > build-aux/mkversion
+  '';
+
+  configureFlags = lib.optional (!speechSupport) "--disable-speech";
+
+  nativeBuildInputs = [
+    autoreconfHook
+    wrapGAppsHook
+    pkgconfig
+    # doc generation
+    gnome-doc-utils
+    which
+    libxslt libxml2
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    expat
+    # at-spi2 needs dbus to be recognized by pkg-config
+    at-spi2-core dbus
+  ] ++ lib.optional speechSupport speechd;
+
+  meta = {
+    homepage = "http://www.inference.org.uk/dasher/";
+    description = "Information-efficient text-entry interface, driven by natural continuous pointing gestures";
+    license = lib.licenses.gpl2;
+    maintainers = [ lib.maintainers.Profpatsch ];
+    platforms = lib.platforms.all;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/accessibility/mousetweaks/default.nix b/nixpkgs/pkgs/applications/accessibility/mousetweaks/default.nix
new file mode 100644
index 000000000000..b645bc61848b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/accessibility/mousetweaks/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchurl, pkgconfig
+, glib, gtk3, gnome3, gsettings-desktop-schemas, wrapGAppsHook
+, libX11, libXtst, libXfixes, libXcursor
+}:
+
+stdenv.mkDerivation rec {
+  pname = "mousetweaks";
+  version = "3.32.0";
+
+  src = fetchurl {
+   url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+   sha256 = "005fhmvb45sa9mq17dpa23n1xnspiissx5rnpiy7hiqmy3g5rg8f";
+  };
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+
+  buildInputs = [
+    glib gtk3 gsettings-desktop-schemas
+    libX11 libXtst libXfixes libXcursor
+  ];
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Provides mouse accessibility enhancements for the GNOME desktop";
+    longDescription = ''
+      Mousetweaks provides mouse accessibility enhancements for the GNOME
+      desktop. These enhancements are:
+
+      - It offers a way to perform the various clicks without using any
+      physical mouse buttons. (Hover Click)
+
+      - It allows users to perform a secondary click by keeping the primary
+      mouse button pressed for a predetermined amount of time. (Simulated
+      Secondary Click)
+
+      The features can be activated and configured through the Universal Access
+      panel of the GNOME Control Center.
+    '';
+    homepage = "https://wiki.gnome.org/Projects/Mousetweaks";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.johnazoidberg ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/AMB-plugins/default.nix b/nixpkgs/pkgs/applications/audio/AMB-plugins/default.nix
new file mode 100644
index 000000000000..2e2af8f3a9a2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/AMB-plugins/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, ladspaH
+}:
+
+stdenv.mkDerivation rec {
+  pname = "AMB-plugins";
+  version = "0.8.1";
+  src = fetchurl {
+    url = "http://kokkinizita.linuxaudio.org/linuxaudio/downloads/${pname}-${version}.tar.bz2";
+    sha256 = "0x4blm4visjqj0ndqr0cg776v3b7lvplpc8cgi9n51llhavn0jpl";
+  };
+
+  buildInputs = [ ladspaH ];
+
+  patchPhase = ''
+    sed -i 's@/usr/bin/install@install@g' Makefile
+    sed -i 's@/bin/rm@rm@g' Makefile
+    sed -i 's@/usr/lib/ladspa@$(out)/lib/ladspa@g' Makefile
+  '';
+
+  preInstall="mkdir -p $out/lib/ladspa";
+
+  meta = {
+    description = ''A set of ambisonics ladspa plugins'';
+    longDescription = ''
+      Mono and stereo to B-format panning, horizontal rotator, square, hexagon and cube decoders.
+    '';
+    version = version;
+    homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/ladspa/index.html";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/FIL-plugins/default.nix b/nixpkgs/pkgs/applications/audio/FIL-plugins/default.nix
new file mode 100644
index 000000000000..253e724cd313
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/FIL-plugins/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, ladspaH
+}:
+
+stdenv.mkDerivation rec {
+  pname = "FIL-plugins";
+  version = "0.3.0";
+  src = fetchurl {
+    url = "http://kokkinizita.linuxaudio.org/linuxaudio/downloads/${pname}-${version}.tar.bz2";
+    sha256 = "1scfv9j7jrp50r565haa4rvxn1vk2ss86xssl5qgcr8r45qz42qw";
+  };
+
+  buildInputs = [ ladspaH ];
+
+  patchPhase = ''
+    sed -i 's@/usr/bin/install@install@g' Makefile
+    sed -i 's@/bin/rm@rm@g' Makefile
+    sed -i 's@/usr/lib/ladspa@$(out)/lib/ladspa@g' Makefile
+  '';
+
+  preInstall="mkdir -p $out/lib/ladspa";
+
+  meta = {
+    description = ''a four-band parametric equaliser, which has the nice property of being stable even while parameters are being changed'';
+    longDescription = ''
+      Each section has an active/bypass switch, frequency, bandwidth and gain controls.
+      There is also a global bypass switch and gain control.
+      The 2nd order resonant filters are implemented using a Mitra-Regalia style lattice filter.
+      All switches and controls are internally smoothed, so they can be used 'live' whithout any clicks or zipper noises.
+      This should make this plugin a good candidate for use in systems that allow automation of plugin control ports, such as Ardour, or for stage use.
+    '';
+    version = version;
+    homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/ladspa/index.html";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/MMA/default.nix b/nixpkgs/pkgs/applications/audio/MMA/default.nix
new file mode 100644
index 000000000000..8b7629bc908b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/MMA/default.nix
@@ -0,0 +1,69 @@
+{ stdenv, fetchurl, makeWrapper, python3, alsaUtils, timidity }:
+
+  stdenv.mkDerivation rec {
+  version = "20.02";
+  pname = "mma";
+
+  src = fetchurl {
+    url = "https://www.mellowood.ca/mma/mma-bin-${version}.tar.gz";
+    sha256 = "0i9c3f14j7wy2c86ky83f2vgmg5bihnnwsmpkq13fgqjsaf0qwnv";
+  };
+
+  buildInputs = [ makeWrapper python3 alsaUtils timidity ];
+
+  patchPhase = ''
+    sed -i 's@/usr/bin/aplaymidi@/${alsaUtils}/bin/aplaymidi@g' mma-splitrec
+    sed -i 's@/usr/bin/aplaymidi@/${alsaUtils}/bin/aplaymidi@g' util/mma-splitrec.py
+    sed -i 's@/usr/bin/arecord@/${alsaUtils}/bin/arecord@g' mma-splitrec
+    sed -i 's@/usr/bin/arecord@/${alsaUtils}/bin/arecord@g' util/mma-splitrec.py
+    sed -i 's@/usr/bin/timidity@/${timidity}/bin/timidity@g' mma-splitrec
+    sed -i 's@/usr/bin/timidity@/${timidity}/bin/timidity@g' util/mma-splitrec.py
+    find . -type f | xargs sed -i 's@/usr/bin/env python@${python3.interpreter}@g'
+    find . -type f | xargs sed -i 's@/usr/bin/python@${python3.interpreter}@g'
+  '';
+
+  installPhase = ''
+    mkdir -p $out/{bin,share/mma,share/man/man1,share/man/man8}
+    mkdir -p $out/etc
+
+    cp mma.py $out/bin/mma
+    cp mma-gb $out/bin/mma-gb
+    cp mma-libdoc $out/bin/mma-libdoc
+    cp mma-renum $out/bin/mma-renum
+    cp mma-splitrec $out/bin/mma-splitrec
+    cp util/mma-mnx.py $out/bin/mma-mnx
+    cp util/mma-rm2std.py $out/bin/mma-rm2std
+    cp util/mmatabs.py $out/bin/mmatabs
+    cp util/mup2mma.py $out/bin/mup2mma
+    cp util/pg2mma.py $out/bin/pg2mma
+    cp util/synthsplit.py $out/bin/mma-synthsplit
+    cp -r {docs,egs,includes,lib,MMA,text} $out/share/mma
+    rmdir $out/share/mma/includes/aria
+
+    cp util/README.* $out/share/mma/docs
+    mv $out/share/mma/docs/man/mma-libdoc.8 $out/share/man/man8
+    mv $out/share/mma/docs/man/mma-renum.1 $out/share/man/man1
+    mv $out/share/mma/docs/man/mma.1 $out/share/man/man1
+    mv $out/share/mma/docs/man/mma-gb.1 $out/share/man/man1
+    rm -rf $out/share/mma/docs/man
+    find $out -type f | xargs sed -i "s@/usr/share/mma@$out/share/mma@g"
+  '';
+
+  preFixup = ''
+    PYTHONPATH=$out/share/mma/:$PYTHONPATH
+    for f in $out/bin/*; do
+          wrapProgram $f \
+           --prefix PYTHONPATH : $PYTHONPATH
+    done
+    cd $out/share/mma/
+    $out/bin/mma -G
+  '';
+
+  meta = {
+    description = "Creates MIDI tracks for a soloist to perform over from a user supplied file containing chords";
+    homepage =  "https://www.mellowood.ca/mma/index.html";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/a2jmidid/default.nix b/nixpkgs/pkgs/applications/audio/a2jmidid/default.nix
new file mode 100644
index 000000000000..64468bddc852
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/a2jmidid/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, fetchpatch, makeWrapper, pkgconfig, alsaLib, dbus, libjack2
+, wafHook
+, python2Packages}:
+
+let
+  inherit (python2Packages) python dbus-python;
+in stdenv.mkDerivation {
+  pname = "a2jmidid";
+  version = "8";
+
+  src = fetchurl {
+    url = "https://repo.or.cz/a2jmidid.git/snapshot/7383d268c4bfe85df9f10df6351677659211d1ca.tar.gz";
+    sha256 = "06dgf5655znbvrd7fhrv8msv6zw8vk0hjqglcqkh90960mnnmwz7";
+  };
+
+  nativeBuildInputs = [ pkgconfig makeWrapper wafHook ];
+  buildInputs = [ alsaLib dbus libjack2 python dbus-python ];
+
+  patches = [
+    (fetchpatch {
+      url = "https://repo.or.cz/a2jmidid.git/patch/24e3b8e543256ae8fdfb4b75eb9fd775f07c46e2";
+      sha256 = "1nxrvnhxlgqc9wbxnp1gnpw4wjyzxvymwcg1gh2nqzmssgfykfkc";
+    })
+    (fetchpatch {
+      url = "https://repo.or.cz/a2jmidid.git/patch/7f82da7eb2f540a94db23331be98d42a58ddc269";
+      sha256 = "1nab9zf0agbcj5pvhl90pz0cx1d204d4janqflc5ymjhy8jyrsdv";
+    })
+  ];
+
+  postInstall = ''
+    wrapProgram $out/bin/a2j_control --set PYTHONPATH $PYTHONPATH
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Daemon for exposing legacy ALSA sequencer applications in JACK MIDI system";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.goibhniu ];
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/aacgain/default.nix b/nixpkgs/pkgs/applications/audio/aacgain/default.nix
new file mode 100644
index 000000000000..194514c65b53
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/aacgain/default.nix
@@ -0,0 +1,63 @@
+{ stdenv, fetchFromGitHub, fetchpatch }:
+
+stdenv.mkDerivation {
+  name = "aacgain-1.9.0";
+
+  src = fetchFromGitHub {
+    owner = "mulx";
+    repo = "aacgain";
+    rev = "7c29dccd878ade1301710959aeebe87a8f0828f5";
+    sha256 = "07hl432vsscqg01b6wr99qmsj4gbx0i02x4k565432y6zpfmaxm0";
+  };
+
+  hardeningDisable = [ "format" ];
+
+  postPatch = ''
+    (
+      cd mp4v2
+      patch -p0 < ${fetchpatch {
+        name = "fix_missing_ptr_deref.patch";
+        url = "https://aur.archlinux.org/cgit/aur.git/plain/fix_missing_ptr_deref.patch?h=aacgain-cvs&id=e1a19c920f57063e64bab75cb0d8624731f6e3d7";
+        sha256 = "1cq7r005nvmwdjb25z80grcam7jv6k57jnl2bh349mg3ajmslbq9";
+      }}
+    )
+  '';
+
+  configurePhase = ''
+    runHook preConfigure
+    cd mp4v2
+    ./configure
+
+    cd ../faad2
+    ./configure
+
+    cd ..
+    ./configure
+    runHook postConfigure
+  '';
+
+  buildPhase = ''
+    runHook preBuild
+    cd mp4v2
+    make libmp4v2.la
+
+    cd ../faad2
+    make LDFLAGS=-static
+
+    cd ..
+    make
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    install -D aacgain/aacgain "$out/bin/aacgain"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "ReplayGain for AAC files";
+    homepage = "https://aacgain.altosdesign.com";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.robbinch ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/abcde/default.nix b/nixpkgs/pkgs/applications/audio/abcde/default.nix
new file mode 100644
index 000000000000..4cb28e512a72
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/abcde/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, fetchurl, libcdio-paranoia, cddiscid, wget, which, vorbis-tools, id3v2, eyeD3
+, lame, flac, glyr
+, perlPackages
+, makeWrapper }:
+
+let version = "2.9.3";
+in
+  stdenv.mkDerivation {
+    pname = "abcde";
+    inherit version;
+    src = fetchurl {
+      url = "https://abcde.einval.com/download/abcde-${version}.tar.gz";
+      sha256 = "091ip2iwb6b67bhjsj05l0sxyq2whqjycbzqpkfbpm4dlyxx0v04";
+    };
+
+    # FIXME: This package does not support `distmp3', `eject', etc.
+
+    configurePhase = ''
+      sed -i "s|^[[:blank:]]*prefix *=.*$|prefix = $out|g ;
+              s|^[[:blank:]]*etcdir *=.*$|etcdir = $out/etc|g ;
+              s|^[[:blank:]]*INSTALL *=.*$|INSTALL = install -c|g" \
+        "Makefile";
+
+      echo 'CDPARANOIA=${libcdio-paranoia}/bin/cd-paranoia' >>abcde.conf
+      echo CDROMREADERSYNTAX=cdparanoia >>abcde.conf
+
+      substituteInPlace "abcde" \
+        --replace "/etc/abcde.conf" "$out/etc/abcde.conf"
+    '';
+
+    nativeBuildInputs = [ makeWrapper ];
+
+    buildInputs = with perlPackages; [ perl MusicBrainz MusicBrainzDiscID ];
+
+    installFlags = [ "sysconfdir=$(out)/etc" ];
+
+    postFixup = ''
+      for cmd in abcde cddb-tool abcde-musicbrainz-tool; do
+        wrapProgram "$out/bin/$cmd" \
+          --prefix PERL5LIB : "$PERL5LIB" \
+          --prefix PATH ":" ${stdenv.lib.makeBinPath [
+            "$out" which libcdio-paranoia cddiscid wget
+            vorbis-tools id3v2 eyeD3 lame flac glyr
+          ]}
+      done
+    '';
+
+    meta = with stdenv.lib; {
+      homepage = "http://abcde.einval.com/wiki/";
+      license = licenses.gpl2Plus;
+      maintainers = with maintainers; [ gebner ];
+      description = "Command-line audio CD ripper";
+      longDescription = ''
+        abcde is a front-end command-line utility (actually, a shell
+        script) that grabs tracks off a CD, encodes them to
+        Ogg/Vorbis, MP3, FLAC, Ogg/Speex and/or MPP/MP+ (Musepack)
+        format, and tags them, all in one go.
+      '';
+      platforms = platforms.linux;
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/audio/adlplug/default.nix b/nixpkgs/pkgs/applications/audio/adlplug/default.nix
new file mode 100644
index 000000000000..bc626cbad114
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/adlplug/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, libjack2, alsaLib
+, freetype, libX11, libXrandr, libXinerama, libXext, libXcursor
+, fetchpatch
+, adlplugChip ? "-DADLplug_CHIP=OPL3"
+, pname ? "ADLplug" }:
+
+stdenv.mkDerivation rec {
+  inherit pname;
+  version = "1.0.1";
+
+  src = fetchFromGitHub {
+    owner = "jpcima";
+    repo = "ADLplug";
+    rev = "v${version}";
+    sha256 = "0n9srdlgl1j528ap5xmllrqs1w6ibc5yf9sphvl1q9kjnizxrs2c";
+    fetchSubmodules = true;
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://raw.githubusercontent.com/jpcima/ADLplug/83636c55bec1b86cabf634b9a6d56d07f00ecc61/resources/patch/juce-gcc9.patch";
+      sha256 = "15hkdb76n9lgjsrpczj27ld9b4804bzrgw89g95cj4sc8wwkplyy";
+      extraPrefix = "thirdparty/JUCE/";
+      stripLen = 1;
+    })
+  ];
+
+  cmakeFlags = [ adlplugChip ];
+
+  buildInputs = [
+    libjack2 alsaLib freetype libX11 libXrandr libXinerama libXext
+    libXcursor
+  ];
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  meta = with stdenv.lib; {
+    description = "OPL3 and OPN2 FM Chip Synthesizer";
+    homepage = src.meta.homepage;
+    license = licenses.boost;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ gnidorah ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/aeolus/default.nix b/nixpkgs/pkgs/applications/audio/aeolus/default.nix
new file mode 100644
index 000000000000..bfd75b4e75cf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/aeolus/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, libclthreads, zita-alsa-pcmi, alsaLib, libjack2
+, libclxclient, libX11, libXft, readline
+}:
+
+stdenv.mkDerivation rec {
+  pname = "aeolus";
+  version = "0.9.8";
+
+  src = fetchurl {
+    url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${pname}-${version}.tar.bz2";
+    sha256 = "1zfr3567mwbqsfybkhg03n5dvmhllk88c9ayb10qzz2nh6d7g2qn";
+  };
+
+  buildInputs = [
+    libclthreads zita-alsa-pcmi alsaLib libjack2 libclxclient
+    libX11 libXft readline
+  ];
+
+  patchPhase = ''sed "s@ldconfig.*@@" -i source/Makefile'';
+
+  preBuild = "cd source";
+
+  makeFlags = [ "DESTDIR=" "PREFIX=$(out)" ];
+
+  meta = {
+    description = "Synthetized (not sampled) pipe organ emulator";
+    homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/aeolus/index.html";
+    license = stdenv.lib.licenses.lgpl3;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.nico202 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/airwave/default.nix b/nixpkgs/pkgs/applications/audio/airwave/default.nix
new file mode 100644
index 000000000000..176d1d4cfb37
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/airwave/default.nix
@@ -0,0 +1,92 @@
+{ stdenv, multiStdenv, cmake, fetchFromGitHub, file, libX11, makeWrapper
+, qt5, requireFile, unzip, wine
+}:
+
+let
+
+  version = "1.3.3";
+
+  airwave-src = fetchFromGitHub {
+    owner = "phantom-code";
+    repo = "airwave";
+    rev = version;
+    sha256 = "1ban59skw422mak3cp57lj27hgq5d3a4f6y79ysjnamf8rpz9x4s";
+  };
+
+  vst-sdk = stdenv.mkDerivation rec {
+    name = "vstsdk368_08_11_2017_build_121";
+    src = requireFile {
+      name = "${name}.zip";
+      url = "http://www.steinberg.net/en/company/developers.html";
+      sha256 = "e0f235d8826d70f1ae0ae5929cd198acae1ecff74612fde5c60cbfb45c2f4a70";
+    };
+    nativeBuildInputs = [ unzip ];
+    installPhase = "cp -r . $out";
+    meta.license = stdenv.lib.licenses.unfree;
+  };
+
+  wine-wow64 = wine.override {
+    wineRelease = "stable";
+    wineBuild = "wineWow";
+  };
+
+  wine-xembed = wine-wow64.overrideDerivation (oldAttrs: {
+    patchFlags = [ "-p2" ];
+    patches = [ "${airwave-src}/fix-xembed-wine-windows.patch" ];
+  });
+
+in
+
+multiStdenv.mkDerivation {
+  name = "airwave-${version}";
+
+  src = airwave-src;
+
+  nativeBuildInputs = [ cmake makeWrapper ];
+
+  buildInputs = [ file libX11 qt5.qtbase wine-xembed ];
+
+  postPatch = ''
+    # Binaries not used directly should land in libexec/.
+    substituteInPlace src/common/storage.cpp --replace '"/bin"' '"/libexec"'
+
+    # For airwave-host-32.exe.so, point wineg++ to 32-bit versions of
+    # these libraries, as $NIX_LDFLAGS contains only 64-bit ones.
+    substituteInPlace src/host/CMakeLists.txt --replace '-m32' \
+      '-m32 -L${wine-xembed}/lib -L${wine-xembed}/lib/wine -L${multiStdenv.cc.libc.out}/lib/32'
+  '';
+
+  # libstdc++.so link gets lost in 64-bit executables during
+  # shrinking.
+  dontPatchELF = true;
+
+  # Cf. https://github.com/phantom-code/airwave/issues/57
+  hardeningDisable = [ "format" ];
+
+  cmakeFlags = [ "-DVSTSDK_PATH=${vst-sdk}/VST2_SDK" ];
+
+  postInstall = ''
+    mv $out/bin $out/libexec
+    mkdir $out/bin
+    mv $out/libexec/airwave-manager $out/bin
+    wrapProgram $out/libexec/airwave-host-32.exe --set WINELOADER ${wine-xembed}/bin/wine
+    wrapProgram $out/libexec/airwave-host-64.exe --set WINELOADER ${wine-xembed}/bin/wine64
+  '';
+
+  meta = with stdenv.lib; {
+    description = "WINE-based VST bridge for Linux VST hosts";
+    longDescription = ''
+      Airwave is a wine based VST bridge, that allows for the use of
+      Windows 32- and 64-bit VST 2.4 audio plugins with Linux VST
+      hosts. Due to the use of shared memory, only one extra copying
+      is made for each data transfer. Airwave also uses the XEMBED
+      protocol to correctly embed the plugin editor into the host
+      window.
+    '';
+    homepage = "https://github.com/phantom-code/airwave";
+    license = licenses.mit;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ michalrus ];
+    hydraPlatforms = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/aj-snapshot/default.nix b/nixpkgs/pkgs/applications/audio/aj-snapshot/default.nix
new file mode 100644
index 000000000000..f781aad905d0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/aj-snapshot/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, alsaLib, jack2Full, minixml, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  name =  packageName + "-" + version ;
+  packageName = "aj-snapshot" ;
+  version = "0.9.9";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${packageName}/${name}.tar.bz2";
+    sha256 = "0z8wd5yvxdmw1h1rj6km9h01xd4xmp4d86gczlix7hsc7zrf0wil";
+  };
+
+  doCheck = false;
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ alsaLib minixml jack2Full ];
+
+  meta = with stdenv.lib; {
+    description = "Tool for storing/restoring JACK and/or ALSA connections to/from cml files";
+    longDescription = ''
+    Aj-snapshot is a small program that can be used to make snapshots of the connections made between JACK and/or ALSA clients. 
+    Because JACK can provide both audio and MIDI support to programs, aj-snapshot can store both types of connections for JACK. 
+    ALSA, on the other hand, only provides routing facilities for MIDI clients. 
+    You can also run aj-snapshot in daemon mode if you want to have your connections continually restored.
+    '';
+
+    homepage = "http://aj-snapshot.sourceforge.net/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.mrVanDalo ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/amarok/default.nix b/nixpkgs/pkgs/applications/audio/amarok/default.nix
new file mode 100644
index 000000000000..063cfcaa9fae
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/amarok/default.nix
@@ -0,0 +1,41 @@
+{ mkDerivation, fetchgit, lib
+, extra-cmake-modules, kdoctools
+, qca-qt5, qjson, qtquickcontrols2, qtscript, qtwebengine
+, karchive, kcmutils, kconfig, kdnssd, kguiaddons, kinit, kirigami2, knewstuff, knotifyconfig, ktexteditor, kwindowsystem
+, fftw, phonon, plasma-framework, threadweaver
+, curl, ffmpeg_3, gdk-pixbuf, libaio, liblastfm, libmtp, loudmouth, lzo, lz4, mysql57, pcre, snappy, taglib, taglib_extras
+}:
+
+mkDerivation rec {
+  pname = "amarok-unstable";
+  version = "2020-06-12";
+
+  src = fetchgit {
+    # master has the Qt5 version as of April 2018 but a formal release has not
+    # yet been made so change this back to the proper upstream when such a
+    # release is out
+    url    = "https://invent.kde.org/multimedia/amarok.git";
+    # url = "mirror://kde/stable/${pname}/${version}/src/${name}.tar.xz";
+    rev    = "fece39b0e81db310b6a6e08f93d83b0d498cd02b";
+    sha256 = "12casnq6w5yp2jlvnr466pjpkn0vriry8jzfq2qkjl564y0vhy9x";
+  };
+
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+
+  propagatedBuildInputs = [
+    qca-qt5 qjson qtquickcontrols2 qtscript qtwebengine
+    karchive kcmutils kconfig kdnssd kguiaddons kinit kirigami2 knewstuff knotifyconfig ktexteditor kwindowsystem
+    phonon plasma-framework threadweaver
+    curl fftw ffmpeg_3 gdk-pixbuf libaio liblastfm libmtp loudmouth lz4 lzo mysql57.server mysql57.server.static
+    pcre snappy taglib taglib_extras
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    homepage = "https://amarok.kde.org";
+    description = "A powerful music player with an intuitive interface";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ams-lv2/default.nix b/nixpkgs/pkgs/applications/audio/ams-lv2/default.nix
new file mode 100644
index 000000000000..34f5667bfcaa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ams-lv2/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, cairo, fftw, gtkmm2, lv2, lvtk, pkgconfig
+, wafHook }:
+
+stdenv.mkDerivation  rec {
+  pname = "ams-lv2";
+  version = "1.2.2";
+
+  src = fetchFromGitHub {
+    owner = "blablack";
+    repo = "ams-lv2";
+    rev = version;
+    sha256 = "1lz2mvk4gqsyf92yxd3aaldx0d0qi28h4rnnvsaz4ls0ccqm80nk";
+  };
+
+  nativeBuildInputs = [ pkgconfig wafHook ];
+  buildInputs = [ cairo fftw gtkmm2 lv2 lvtk ];
+
+  meta = with stdenv.lib; {
+    description = "An LV2 port of the internal modules found in Alsa Modular Synth";
+    homepage = "https://github.com/blablack/ams-lv2";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
+    # Build uses `-msse` and `-mfpmath=sse`
+    badPlatforms = [ "aarch64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ams/default.nix b/nixpkgs/pkgs/applications/audio/ams/default.nix
new file mode 100644
index 000000000000..e6c4fbe802e1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ams/default.nix
@@ -0,0 +1,48 @@
+{ stdenv
+, fetchgit
+, automake
+, alsaLib
+, ladspaH
+, libjack2
+, fftw
+, zita-alsa-pcmi
+, qt5
+, pkg-config
+, autoreconfHook
+}:
+
+stdenv.mkDerivation rec {
+  name = "ams";
+  version = "unstable-2019-04-27";
+
+  src = fetchgit {
+    url = "https://git.code.sf.net/p/alsamodular/ams.git";
+    sha256 = "0qdyz5llpa94f3qx1xi1mz97vl5jyrj1mqff28p5g9i5rxbbk8z9";
+    rev = "3250bbcfea331c4fcb9845305eebded80054973d";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    pkg-config
+    qt5.wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    alsaLib
+    ladspaH
+    libjack2
+    fftw
+    zita-alsa-pcmi
+  ] ++ (with qt5; [
+    qtbase
+    qttools
+  ]);
+
+  meta = with stdenv.lib; {
+    description = "Realtime modular synthesizer for ALSA";
+    homepage = "http://alsamodular.sourceforge.net";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ sjfloat ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ardour/5.nix b/nixpkgs/pkgs/applications/audio/ardour/5.nix
new file mode 100644
index 000000000000..86879e4e5bd8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ardour/5.nix
@@ -0,0 +1,162 @@
+{ stdenv
+, fetchgit
+, alsaLib
+, aubio
+, boost
+, cairomm
+, curl
+, doxygen
+, fftwSinglePrec
+, flac
+, glibc
+, glibmm
+, graphviz
+, gtkmm2
+, libjack2
+, liblo
+, libogg
+, libsamplerate
+, libsigcxx
+, libsndfile
+, libusb1
+, fluidsynth_1
+, hidapi
+, libltc
+, qm-dsp
+, libxml2
+, lilv
+, lrdf
+, lv2
+, perl
+, pkg-config
+, itstool
+, python2
+, rubberband
+, serd
+, sord
+, sratom
+, taglib
+, vamp-plugin-sdk
+, dbus
+, fftw
+, pango
+, suil
+, libarchive
+, wafHook
+}:
+let
+  # Ardour git repo uses a mix of annotated and lightweight tags. Annotated
+  # tags are used for MAJOR.MINOR versioning, and lightweight tags are used
+  # in-between; MAJOR.MINOR.REV where REV is the number of commits since the
+  # last annotated tag. A slightly different version string format is needed
+  # for the 'revision' info that is built into the binary; it is the format of
+  # "git describe" when _not_ on an annotated tag(!): MAJOR.MINOR-REV-HASH.
+
+  # Version to build.
+  tag = "5.12";
+in stdenv.mkDerivation rec {
+  pname = "ardour_5";
+  version = "5.12";
+
+  src = fetchgit {
+    url = "git://git.ardour.org/ardour/ardour.git";
+    rev = "ae0dcdc0c5d13483271065c360e378202d20170a";
+    sha256 = "0mla5lm51ryikc2rrk53max2m7a5ds6i1ai921l2h95wrha45nkr";
+  };
+
+  nativeBuildInputs = [
+    wafHook
+    pkg-config
+    itstool
+    doxygen
+    graphviz # for dot
+    perl
+    python2
+  ];
+
+  buildInputs = [
+    alsaLib
+    aubio
+    boost
+    cairomm
+    curl
+    dbus
+    fftw
+    fftwSinglePrec
+    flac
+    glibmm
+    gtkmm2
+    libjack2
+    liblo
+    libogg
+    libsamplerate
+    libsigcxx
+    libsndfile
+    libusb1
+    fluidsynth_1
+    hidapi
+    libltc
+    qm-dsp
+    libxml2
+    lilv
+    lrdf
+    lv2
+    pango
+    rubberband
+    serd
+    sord
+    sratom
+    suil
+    taglib
+    vamp-plugin-sdk
+    libarchive
+  ];
+
+  wafConfigureFlags = [
+    "--optimize"
+    "--docs"
+    "--use-external-libs"
+    "--freedesktop"
+    "--with-backends=jack,alsa,dummy"
+  ];
+
+  NIX_CFLAGS_COMPILE = "-I${qm-dsp}/include/qm-dsp";
+
+  # ardour's wscript has a "tarball" target but that required the git revision
+  # be available. Since this is an unzipped tarball fetched from github we
+  # have to do that ourself.
+  postPatch = ''
+    printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = \"${tag}-${builtins.substring 0 8 src.rev}\"; }\n' > libs/ardour/revision.cc
+    patchShebangs ./tools/
+  '';
+
+  postInstall = ''
+    # wscript does not install these for some reason
+    install -vDm 644 "build/gtk2_ardour/ardour.xml" \
+      -t "$out/share/mime/packages"
+    install -vDm 644 "build/gtk2_ardour/ardour5.desktop" \
+      -t "$out/share/applications"
+    for size in 16 22 32 48 256 512; do
+      install -vDm 644 "gtk2_ardour/resources/Ardour-icon_''${size}px.png" \
+        "$out/share/icons/hicolor/''${size}x''${size}/apps/ardour5.png"
+    done
+    install -vDm 644 "ardour.1"* -t "$out/share/man/man1"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Multi-track hard disk recording software";
+    longDescription = ''
+      Ardour is a digital audio workstation (DAW), You can use it to
+      record, edit and mix multi-track audio and midi. Produce your
+      own CDs. Mix video soundtracks. Experiment with new ideas about
+      music and sound.
+
+      Please consider supporting the ardour project financially:
+      https://community.ardour.org/donate
+    '';
+    homepage = "https://ardour.org/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ goibhniu fps ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ardour/as-flags.patch b/nixpkgs/pkgs/applications/audio/ardour/as-flags.patch
new file mode 100644
index 000000000000..b8aab70ddca6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ardour/as-flags.patch
@@ -0,0 +1,12 @@
+--- a/libs/ardour/wscript
++++ b/libs/ardour/wscript
+@@ -379,8 +379,7 @@ def build(bld):
+
+     # remove '${DEFINES_ST:DEFINES}' from run_str.
+     # x86_64-w64-mingw32-as (mingw) -D flag is for debug messages
+-    if bld.env['build_target'] == 'mingw':
+-        class asm(Task.classes['asm']): run_str = '${AS} ${ASFLAGS} ${ASMPATH_ST:INCPATHS} ${AS_SRC_F}${SRC} ${AS_TGT_F}${TGT}'
++    class asm(Task.classes['asm']): run_str = '${AS} ${ASFLAGS} ${ASMPATH_ST:INCPATHS} ${AS_SRC_F}${SRC} ${AS_TGT_F}${TGT}'
+
+     # operate on copy to avoid adding sources twice
+     sources = list(libardour_sources)
diff --git a/nixpkgs/pkgs/applications/audio/ardour/default.nix b/nixpkgs/pkgs/applications/audio/ardour/default.nix
new file mode 100644
index 000000000000..5090ef6a2ec8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ardour/default.nix
@@ -0,0 +1,187 @@
+{ stdenv
+, fetchgit
+, alsaLib
+, aubio
+, boost
+, cairomm
+, cppunit
+, curl
+, dbus
+, doxygen
+, ffmpeg_3
+, fftw
+, fftwSinglePrec
+, flac
+, fluidsynth
+, glibc
+, glibmm
+, graphviz
+, gtkmm2
+, hidapi
+, itstool
+, libarchive
+, libjack2
+, liblo
+, libltc
+, libogg
+, libpulseaudio
+, librdf_raptor
+, librdf_rasqal
+, libsamplerate
+, libsigcxx
+, libsndfile
+, libusb1
+, libuv
+, libwebsockets
+, libxml2
+, libxslt
+, lilv
+, lrdf
+, lv2
+, pango
+, perl
+, pkg-config
+, python3
+, qm-dsp
+, readline
+, rubberband
+, serd
+, sord
+, sratom
+, suil
+, taglib
+, vamp-plugin-sdk
+, wafHook
+}:
+stdenv.mkDerivation rec {
+  pname = "ardour";
+  version = "6.0";
+
+  # don't fetch releases from the GitHub mirror, they are broken
+  src = fetchgit {
+    url = "git://git.ardour.org/ardour/ardour.git";
+    rev = version;
+    sha256 = "162jd96zahl05fdmjwvpdfjxbhd6ifbav6xqa0vv6rsdl4zk395q";
+  };
+
+  patches = [
+    # AS=as in the environment causes build failure https://tracker.ardour.org/view.php?id=8096
+    ./as-flags.patch
+  ];
+
+  nativeBuildInputs = [
+    doxygen
+    graphviz # for dot
+    itstool
+    perl
+    pkg-config
+    python3
+    wafHook
+  ];
+
+  buildInputs = [
+    alsaLib
+    aubio
+    boost
+    cairomm
+    cppunit
+    curl
+    dbus
+    ffmpeg_3
+    fftw
+    fftwSinglePrec
+    flac
+    fluidsynth
+    glibmm
+    gtkmm2
+    hidapi
+    itstool
+    libarchive
+    libjack2
+    liblo
+    libltc
+    libogg
+    libpulseaudio
+    librdf_raptor
+    librdf_rasqal
+    libsamplerate
+    libsigcxx
+    libsndfile
+    libusb1
+    libuv
+    libwebsockets
+    libxml2
+    libxslt
+    lilv
+    lrdf
+    lv2
+    pango
+    perl
+    python3
+    qm-dsp
+    readline
+    rubberband
+    serd
+    sord
+    sratom
+    suil
+    taglib
+    vamp-plugin-sdk
+  ];
+
+  wafConfigureFlags = [
+    "--cxx11"
+    "--docs"
+    "--freedesktop"
+    "--no-phone-home"
+    "--optimize"
+    "--ptformat"
+    "--qm-dsp-include=${qm-dsp}/include/qm-dsp"
+    "--run-tests"
+    "--test"
+    "--use-external-libs"
+  ];
+
+  # Ardour's wscript requires git revision and date to be available.
+  # Since they are not, let's generate the file manually.
+  postPatch = ''
+    printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = "${version}"; const char* date = ""; }\n' > libs/ardour/revision.cc
+    sed 's|/usr/include/libintl.h|${glibc.dev}/include/libintl.h|' -i wscript
+    patchShebangs ./tools/
+    substituteInPlace libs/ardour/video_tools_paths.cc \
+      --replace 'ffmpeg_exe = X_("");' 'ffmpeg_exe = X_("${ffmpeg_3}/bin/ffmpeg");' \
+      --replace 'ffprobe_exe = X_("");' 'ffprobe_exe = X_("${ffmpeg_3}/bin/ffprobe");'
+  '';
+
+  postInstall = ''
+    # wscript does not install these for some reason
+    install -vDm 644 "build/gtk2_ardour/ardour.xml" \
+      -t "$out/share/mime/packages"
+    install -vDm 644 "build/gtk2_ardour/ardour6.desktop" \
+      -t "$out/share/applications"
+    for size in 16 22 32 48 256 512; do
+      install -vDm 644 "gtk2_ardour/resources/Ardour-icon_''${size}px.png" \
+        "$out/share/icons/hicolor/''${size}x''${size}/apps/ardour6.png"
+    done
+    install -vDm 644 "ardour.1"* -t "$out/share/man/man1"
+  '';
+
+  LINKFLAGS = "-lpthread";
+
+  meta = with stdenv.lib; {
+    description = "Multi-track hard disk recording software";
+    longDescription = ''
+      Ardour is a digital audio workstation (DAW), You can use it to
+      record, edit and mix multi-track audio and midi. Produce your
+      own CDs. Mix video soundtracks. Experiment with new ideas about
+      music and sound.
+
+      Please consider supporting the ardour project financially:
+      https://community.ardour.org/donate
+    '';
+    homepage = "https://ardour.org/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ goibhniu magnetophon ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ario/default.nix b/nixpkgs/pkgs/applications/audio/ario/default.nix
new file mode 100644
index 000000000000..99a09e7ee330
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ario/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, pkgconfig, gettext, gtk3, intltool,
+  wrapGAppsHook, libxml2, curl, mpd_clientlib, dbus-glib,
+  libsoup, avahi, taglib
+  }:
+
+stdenv.mkDerivation rec {
+  version = "1.6";
+  pname = "ario";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/ario-player/${pname}-${version}.tar.gz";
+    sha256 = "16nhfb3h5pc7flagfdz7xy0iq6kvgy6h4bfpi523i57rxvlfshhl";
+  };
+
+  nativeBuildInputs = [ pkgconfig gettext intltool wrapGAppsHook ];
+  buildInputs = [
+    gtk3 libxml2 curl mpd_clientlib dbus-glib libsoup avahi taglib
+  ];
+
+  meta = {
+    description = "GTK client for MPD (Music player daemon)";
+    homepage = "http://ario-player.sourceforge.net/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [ stdenv.lib.maintainers.garrison ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/artyFX/default.nix b/nixpkgs/pkgs/applications/audio/artyFX/default.nix
new file mode 100644
index 000000000000..8cf9bec2e3df
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/artyFX/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub , cairomm, cmake, libjack2, libpthreadstubs, libXdmcp, libxshmfence, libsndfile, lv2, ntk, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "artyFX";
+  # Fix build with lv2 1.18: https://github.com/openAVproductions/openAV-ArtyFX/pull/41/commits/492587461b50d140455aa3c98d915eb8673bebf0
+  version = "unstable-2020-04-28";
+
+  src = fetchFromGitHub {
+    owner = "openAVproductions";
+    repo = "openAV-ArtyFX";
+    rev = "492587461b50d140455aa3c98d915eb8673bebf0";
+    sha256 = "0wwg8ivnpyy0235bapjy4g0ij85zq355jwi6c1nkrac79p4z9ail";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ cairomm cmake libjack2 libpthreadstubs libXdmcp libxshmfence libsndfile lv2 ntk   ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://openavproductions.com/artyfx/";
+    description = "A LV2 plugin bundle of artistic realtime effects";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+    # Build uses `-msse` and `-mfpmath=sse`
+    badPlatforms = [ "aarch64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/asunder/default.nix b/nixpkgs/pkgs/applications/audio/asunder/default.nix
new file mode 100644
index 000000000000..998535a8eb0b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/asunder/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchurl, makeWrapper, gtk2, libcddb, intltool, pkgconfig, cdparanoia
+, mp3Support ? false, lame
+, oggSupport ? true, vorbis-tools
+, flacSupport ? true, flac
+, opusSupport ? false, opusTools
+, wavpackSupport ? false, wavpack
+#, musepackSupport ? false, TODO: mpcenc
+, monkeysAudioSupport ? false, monkeysAudio
+#, aacSupport ? false, TODO: neroAacEnc
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  version = "2.9.6";
+  pname = "asunder";
+  src = fetchurl {
+    url = "http://littlesvr.ca/asunder/releases/${pname}-${version}.tar.bz2";
+    sha256 = "1ycnd82lh7qy1pcbngd4b41s16j9hnm2kyfrncg4cwr3bfk7yg7a";
+  };
+
+  nativeBuildInputs = [ intltool makeWrapper pkgconfig ];
+  buildInputs = [ gtk2 libcddb ];
+
+  runtimeDeps =
+    optional mp3Support lame ++
+    optional oggSupport vorbis-tools ++
+    optional flacSupport flac ++
+    optional opusSupport opusTools ++
+    optional wavpackSupport wavpack ++
+    optional monkeysAudioSupport monkeysAudio ++
+    [ cdparanoia ];
+
+  postInstall = ''
+    wrapProgram "$out/bin/asunder" \
+      --prefix PATH : "${makeBinPath runtimeDeps}"
+  '';
+
+  meta = {
+    description = "A graphical Audio CD ripper and encoder for Linux";
+    homepage = "http://littlesvr.ca/asunder/index.php";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ mudri ];
+    platforms = platforms.linux;
+
+    longDescription = ''
+      Asunder is a graphical Audio CD ripper and encoder for Linux. You can use
+      it to save tracks from an Audio CD as any of WAV, MP3, OGG, FLAC, Opus,
+      WavPack, Musepack, AAC, and Monkey's Audio files.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/aucatctl/default.nix b/nixpkgs/pkgs/applications/audio/aucatctl/default.nix
new file mode 100644
index 000000000000..4aff3e1f7bfb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/aucatctl/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, sndio, libbsd }:
+
+stdenv.mkDerivation rec {
+  pname = "aucatctl";
+  version = "0.1";
+
+  src = fetchurl {
+    url = "http://www.sndio.org/${pname}-${version}.tar.gz";
+    sha256 = "524f2fae47db785234f166551520d9605b9a27551ca438bd807e3509ce246cf0";
+  };
+
+  buildInputs = [ sndio ]
+    ++ stdenv.lib.optional (!stdenv.isDarwin && !stdenv.targetPlatform.isBSD)
+    libbsd;
+
+  outputs = [ "out" "man" ];
+
+  preBuild = ''
+    makeFlagsArray+=("PREFIX=$out")
+  '' + stdenv.lib.optionalString
+    (!stdenv.isDarwin && !stdenv.targetPlatform.isBSD) ''
+      makeFlagsArray+=(LDADD="-lsndio -lbsd")
+
+      # Fix warning about implicit declaration of function 'strlcpy'
+      substituteInPlace aucatctl.c \
+        --replace '#include <string.h>' '#include <bsd/string.h>'
+    '';
+
+  meta = with stdenv.lib; {
+    description =
+      "The aucatctl utility sends MIDI messages to control sndiod and/or aucat volumes";
+    homepage = "http://www.sndio.org";
+    license = licenses.isc;
+    maintainers = with maintainers; [ sna ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/audacious/default.nix b/nixpkgs/pkgs/applications/audio/audacious/default.nix
new file mode 100644
index 000000000000..ba000d1ffb48
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/audacious/default.nix
@@ -0,0 +1,71 @@
+{ stdenv, fetchurl, pkgconfig, wrapGAppsHook, gettext, glib, gtk3
+, libmowgli, dbus-glib, libxml2, xorg, gnome3, alsaLib
+, libpulseaudio, libjack2, fluidsynth, libmad, libogg, libvorbis
+, libcdio, libcddb, flac, ffmpeg_3, mpg123, libcue, libmms, libbs2b
+, libsndfile, libmodplug, libsamplerate, soxr, lirc, curl, wavpack
+, neon, faad2, lame, libnotify, libsidplayfp
+}:
+
+stdenv.mkDerivation rec {
+  pname = "audacious";
+  version = "3.9";
+
+  src = fetchurl {
+    url = "https://distfiles.audacious-media-player.org/audacious-${version}-gtk3.tar.bz2";
+    sha256 = "0dc7fg0v2l2j4h9cz1baz7rf4n0a5jgk09qvsj806sh6jp7w6ipm";
+  };
+
+  pluginsSrc = fetchurl {
+    url = "http://distfiles.audacious-media-player.org/audacious-plugins-${version}-gtk3.tar.bz2";
+    sha256 = "1gck37c5pnzxdhrnb1g75b5hi31s2dc952wifxns45pkdlayrmra";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gettext glib gtk3 libmowgli dbus-glib libxml2
+    xorg.libXcomposite gnome3.adwaita-icon-theme alsaLib libjack2
+    libpulseaudio fluidsynth libmad libogg libvorbis libcdio
+    libcddb flac ffmpeg_3 mpg123 libcue libmms libbs2b libsndfile
+    libmodplug libsamplerate soxr lirc curl wavpack neon faad2
+    lame libnotify libsidplayfp
+  ];
+
+  configureFlags = [ "--enable-statusicon" ];
+
+  # Here we build both audacious and audacious-plugins in one
+  # derivations, since they really expect to be in the same prefix.
+  # This is slighly tricky.
+  builder = builtins.toFile "builder.sh" ''
+    # First build audacious.
+    (
+      source $stdenv/setup
+      genericBuild
+    )
+
+    # Then build the plugins.
+    (
+      dontWrapGApps=true
+      nativeBuildInputs="$out $nativeBuildInputs" # to find audacious
+      source $stdenv/setup
+      rm -rfv audacious-*
+      src=$pluginsSrc
+      genericBuild
+    )
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Audio player";
+    homepage = "https://audacious-media-player.org/";
+    maintainers = with maintainers; [ eelco ramkromberg ];
+    platforms = with platforms; linux;
+    license = with licenses; [
+      bsd2 bsd3 #https://github.com/audacious-media-player/audacious/blob/master/COPYING
+      gpl2 gpl3 lgpl2Plus #http://redmine.audacious-media-player.org/issues/46
+    ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/audacious/qt-5.nix b/nixpkgs/pkgs/applications/audio/audacious/qt-5.nix
new file mode 100644
index 000000000000..5c5cd65b4121
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/audacious/qt-5.nix
@@ -0,0 +1,92 @@
+{
+  mkDerivation, lib, fetchurl, fetchpatch,
+  gettext, pkgconfig,
+  qtbase,
+  alsaLib, curl, faad2, ffmpeg_3, flac, fluidsynth, gdk-pixbuf, lame, libbs2b,
+  libcddb, libcdio, libcue, libjack2, libmad, libmms, libmodplug,
+  libmowgli, libnotify, libogg, libpulseaudio, libsamplerate, libsidplayfp,
+  libsndfile, libvorbis, libxml2, lirc, mpg123, neon, qtmultimedia, soxr,
+  wavpack
+}:
+
+let
+  version = "3.9";
+  sources = {
+    "audacious-${version}" = fetchurl {
+      url = "http://distfiles.audacious-media-player.org/audacious-${version}.tar.bz2";
+      sha256 = "0pmhrhsjhqnrq3zh4rhfys5jas53ph5ijkq010dxg1n779kl901d";
+    };
+
+    "audacious-plugins-${version}" = fetchurl {
+      url = "http://distfiles.audacious-media-player.org/audacious-plugins-${version}.tar.bz2";
+      sha256 = "1f17r7ar0mngcf7z41s6xh073vjafw3i7iy9ijb0cd6bi48g5xwb";
+    };
+  };
+
+  qt510_plugins_patch = fetchpatch {
+    url = "https://github.com/audacious-media-player/audacious-plugins/commit/971f7ff7c3d8a0b9b420bf4fd19ab97755607637.patch";
+    sha256 = "15fy37syj9ygl2ibkkz3g3b9wd22vk9bjfmvqhhkpxphry2zwb17";
+  };
+in
+
+mkDerivation {
+  inherit version;
+  name = "audacious-qt5-${version}";
+
+  sourceFiles = lib.attrValues sources;
+  sourceRoots = lib.attrNames sources;
+
+  nativeBuildInputs = [ gettext pkgconfig ];
+
+  inherit qt510_plugins_patch;
+
+  buildInputs = [
+    # Core dependencies
+    qtbase
+
+    # Plugin dependencies
+    alsaLib curl faad2 ffmpeg_3 flac fluidsynth gdk-pixbuf lame libbs2b libcddb
+    libcdio libcue libjack2 libmad libmms libmodplug libmowgli
+    libnotify libogg libpulseaudio libsamplerate libsidplayfp libsndfile
+    libvorbis libxml2 lirc mpg123 neon qtmultimedia soxr wavpack
+  ];
+
+  configureFlags = [ "--enable-qt" "--disable-gtk" ];
+
+  # Here we build both audacious and audacious-plugins in one
+  # derivations, since they really expect to be in the same prefix.
+  # This is slighly tricky.
+  builder = builtins.toFile "builder.sh" ''
+    sourceFiles=( $sourceFiles )
+    sourceRoots=( $sourceRoots )
+    for (( i=0 ; i < ''${#sourceFiles[*]} ; i++ )); do
+
+      (
+        # only patch the plugins
+        if [ "$i" -eq "1" ]; then
+          patches=( $qt510_plugins_patch )
+        fi
+        src=''${sourceFiles[$i]}
+        sourceRoot=''${sourceRoots[$i]}
+        source $stdenv/setup
+        genericBuild
+      )
+
+      if [ $i == 0 ]; then
+        nativeBuildInputs="$out $nativeBuildInputs"
+      fi
+
+    done
+  '';
+
+  meta = with lib; {
+    description = "Audio player";
+    homepage = "https://audacious-media-player.org/";
+    maintainers = with maintainers; [ ttuegel ];
+    platforms = with platforms; linux;
+    license = with licenses; [
+      bsd2 bsd3 #https://github.com/audacious-media-player/audacious/blob/master/COPYING
+      gpl2 gpl3 lgpl2Plus #http://redmine.audacious-media-player.org/issues/46
+    ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/audacity/default.nix b/nixpkgs/pkgs/applications/audio/audacity/default.nix
new file mode 100644
index 000000000000..18f2b4f67cdb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/audacity/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, fetchzip, wxGTK30, pkgconfig, file, gettext,
+  libvorbis, libmad, libjack2, lv2, lilv, serd, sord, sratom, suil, alsaLib, libsndfile, soxr, flac, lame,
+  expat, libid3tag, ffmpeg_3, soundtouch, /*, portaudio - given up fighting their portaudio.patch */
+  autoconf, automake, libtool
+  }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  version = "2.4.1";
+  pname = "audacity";
+
+  src = fetchzip {
+    url = "https://github.com/audacity/audacity/archive/Audacity-${version}.tar.gz";
+    sha256 = "1xk0piv72d2xd3p7igr916fhcbrm76fhjr418k1rlqdzzg1hfljn";
+  };
+
+  preConfigure = /* we prefer system-wide libs */ ''
+    autoreconf -vi # use system libraries
+
+    # we will get a (possibly harmless) warning during configure without this
+    substituteInPlace configure \
+      --replace /usr/bin/file ${file}/bin/file
+  '';
+
+  configureFlags = [
+    "--with-libsamplerate"
+  ];
+
+  # audacity only looks for lame and ffmpeg at runtime, so we need to link them in manually
+  NIX_LDFLAGS = toString [
+    # LAME
+    "-lmp3lame"
+    # ffmpeg
+    "-lavcodec"
+    "-lavdevice"
+    "-lavfilter"
+    "-lavformat"
+    "-lavresample"
+    "-lavutil"
+    "-lpostproc"
+    "-lswresample"
+    "-lswscale"
+  ];
+
+  nativeBuildInputs = [ pkgconfig autoconf automake libtool ];
+  buildInputs = [
+    file gettext wxGTK30 expat alsaLib
+    libsndfile soxr libid3tag libjack2 lv2 lilv serd sord sratom suil wxGTK30.gtk
+    ffmpeg_3 libmad lame libvorbis flac soundtouch
+  ]; #ToDo: detach sbsms
+
+  enableParallelBuilding = true;
+
+  dontDisableStatic = true;
+  doCheck = false; # Test fails
+
+  meta = with stdenv.lib; {
+    description = "Sound editor with graphical UI";
+    homepage = "http://audacityteam.org/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ lheckemann ];
+    platforms = intersectLists platforms.linux platforms.x86; # fails on ARM
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/audio-recorder/default.nix b/nixpkgs/pkgs/applications/audio/audio-recorder/default.nix
new file mode 100644
index 000000000000..eee293b76c2f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/audio-recorder/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchurl
+, pkgconfig, intltool
+, glib, dbus, gtk3, libappindicator-gtk3, gst_all_1
+, librsvg, wrapGAppsHook
+, pulseaudioSupport ? true, libpulseaudio ? null }:
+
+stdenv.mkDerivation rec {
+  pname = "audio-recorder";
+  version = "2.1.3";
+
+  src = fetchurl {
+    name = "${pname}-${version}.tar.gz";
+    url = "${meta.homepage}/+archive/ubuntu/ppa/+files/audio-recorder_${version}%7Ebionic.tar.gz";
+    sha256 = "160pnmnmc9zwzyclsci3w1qwlgxkfx1y3x5ck6i587w78570an1r";
+  };
+
+  # https://bugs.launchpad.net/audio-recorder/+bug/1784622
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ];
+
+  buildInputs = [
+    glib dbus gtk3 librsvg libappindicator-gtk3
+  ] ++ (with gst_all_1; [
+    gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav
+  ]) ++ stdenv.lib.optional pulseaudioSupport libpulseaudio;
+
+  meta = with stdenv.lib; {
+    description = "Audio recorder for GNOME and Unity Desktops";
+    longDescription = ''
+      This program allows you to record your favourite music or audio to a file.
+      It can record audio from your system soundcard, microphones, browsers and
+      webcams. Put simply; if it plays out of your loudspeakers you can record it.
+      This program has a timer that can start, stop or pause recording on certain
+      conditions such as audio level, file size and clock time. This recorder can
+      automatically record your Skype calls. It supports several audio (output)
+      formats such as OGG audio, Flac, MP3 and WAV.
+    '';
+    homepage = "https://launchpad.net/~audio-recorder";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.msteen ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/aumix/default.nix b/nixpkgs/pkgs/applications/audio/aumix/default.nix
new file mode 100644
index 000000000000..5bc7f8432582
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/aumix/default.nix
@@ -0,0 +1,30 @@
+{stdenv, fetchurl, gettext, ncurses
+, gtkGUI ? false
+, pkgconfig ? null
+, gtk2 ? null}:
+
+assert gtkGUI -> pkgconfig != null && gtk2 != null;
+
+stdenv.mkDerivation rec {
+  name = "aumix-2.9.1";
+  src = fetchurl {
+    url = "http://www.jpj.net/~trevor/aumix/releases/${name}.tar.bz2";
+    sha256 = "0a8fwyxnc5qdxff8sl2sfsbnvgh6pkij4yafiln0fxgg6bal7knj";
+  };
+
+  buildInputs = [ gettext ncurses ]
+    ++ (if gtkGUI then [pkgconfig gtk2] else []);
+
+  meta = {
+    description = "Audio mixer for X and the console";
+    longDescription = ''
+      Aumix adjusts an audio mixer from X, the console, a terminal,
+      the command line or a script.
+    '';
+    homepage = "http://www.jpj.net/~trevor/aumix.html";
+    license = stdenv.lib.licenses.gpl2Plus;
+
+    maintainers = [ ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/autotalent/default.nix b/nixpkgs/pkgs/applications/audio/autotalent/default.nix
new file mode 100644
index 000000000000..8efa26777864
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/autotalent/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchzip }:
+
+stdenv.mkDerivation rec {
+  pname = "autotalent";
+  version = "0.2";
+
+  src = fetchzip {
+    url = "http://tombaran.info/${pname}-${version}.tar.gz";
+    sha256 = "19srnkghsdrxxlv2c7qimvyslxz63r97mkxfq78vbg654l3qz1a6";
+  };
+
+  makeFlags = [
+    "INSTALL_PLUGINS_DIR=$(out)/lib/ladspa"
+  ];
+
+  # To avoid name clashes, plugins should be compiled with symbols hidden, except for `ladspa_descriptor`:
+  preConfigure = ''
+    sed -r 's/^CFLAGS.*$/\0 -fvisibility=hidden/' -i Makefile
+
+    sed -r 's/^const LADSPA_Descriptor \*/__attribute__ ((visibility ("default"))) \0/' -i autotalent.c
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://tombaran.info/autotalent.html";
+    description = "A real-time pitch correction LADSPA plugin (no MIDI control)";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.michalrus ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/axoloti/default.nix b/nixpkgs/pkgs/applications/audio/axoloti/default.nix
new file mode 100644
index 000000000000..3d907e421b3e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/axoloti/default.nix
@@ -0,0 +1,101 @@
+{ stdenv, fetchFromGitHub, fetchurl, makeWrapper, unzip
+, gnumake, gcc-arm-embedded, binutils-arm-embedded
+, dfu-util-axoloti, jdk, ant, libfaketime }:
+
+stdenv.mkDerivation rec {
+  version = "1.0.12-2";
+  pname = "axoloti";
+
+  src = fetchFromGitHub {
+    owner = "axoloti";
+    repo = "axoloti";
+    rev = version;
+    sha256 = "1qffis277wshldr3i939b0r2x3a2mlr53samxqmr2nk1sfm2b4w9";
+  };
+
+  chibi_version = "2.6.9";
+  chibi_name = "ChibiOS_${chibi_version}";
+
+  chibios = fetchurl {
+    url = "mirror://sourceforge/project/chibios/ChibiOS_RT%20stable/Version%20${chibi_version}/${chibi_name}.zip";
+    sha256 = "0lb5s8pkj80mqhsy47mmq0lqk34s2a2m3xagzihalvabwd0frhlj";
+  };
+
+  nativeBuildInputs = [
+    makeWrapper
+    unzip
+    gcc-arm-embedded
+    binutils-arm-embedded
+    dfu-util-axoloti
+    ant
+  ];
+  buildInputs = [jdk libfaketime ];
+
+  patchPhase = ''
+    unzip ${chibios}
+    mv ${chibi_name} chibios
+    (cd chibios/ext; unzip -q -o fatfs-0.9-patched.zip)
+
+    # Remove source of non-determinism in ChibiOS
+    substituteInPlace "chibios/os/various/shell.c" \
+      --replace "#ifdef __DATE__" "#if 0"
+
+    # Hardcode path to "make"
+    for f in "firmware/compile_firmware_linux.sh" \
+             "firmware/compile_patch_linux.sh"; do
+      substituteInPlace "$f" \
+        --replace "make" "${gnumake}/bin/make"
+    done
+
+    # Hardcode dfu-util path
+    substituteInPlace "platform_linux/upload_fw_dfu.sh" \
+      --replace "/bin/dfu-util" ""
+    substituteInPlace "platform_linux/upload_fw_dfu.sh" \
+      --replace "./dfu-util" "${dfu-util-axoloti}/bin/dfu-util"
+
+    # Fix build version
+    substituteInPlace "build.xml" \
+      --replace "(git missing)" "${version}"
+
+    # Remove build time
+    substituteInPlace "build.xml" \
+      --replace "<tstamp>" ""
+    substituteInPlace "build.xml" \
+      --replace \
+        '<format property="build.time" pattern="dd/MM/yyyy HH:mm:ss z"/>' \
+        '<property name="build.time" value=""/>'
+    substituteInPlace "build.xml" \
+      --replace "</tstamp>" ""
+    substituteInPlace "build.xml" \
+      --replace \
+       '{line.separator}</echo>' \
+       '{line.separator}</echo> <touch file="src/main/java/axoloti/Version.java" millis="0" />'
+  '';
+
+  buildPhase = ''
+    find . -exec touch -d '1970-01-01 00:00' {} \;
+    (cd platform_linux; sh compile_firmware.sh)
+    faketime "1970-01-01 00:00:00" ant -Dbuild.runtime=true
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/axoloti
+
+    cp -r doc firmware chibios platform_linux CMSIS *.txt $out/share/axoloti/
+    install -vD dist/Axoloti.jar $out/share/axoloti/
+
+    makeWrapper ${jdk}/bin/java $out/bin/axoloti --add-flags "-Daxoloti_release=$out/share/axoloti -Daxoloti_runtime=$out/share/axoloti -jar $out/share/axoloti/Axoloti.jar"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.axoloti.com";
+    description = ''
+      Sketching embedded digital audio algorithms.
+
+      To fix permissions of the Axoloti USB device node, add a similar udev rule to <literal>services.udev.extraRules</literal>:
+      <literal>SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="0442", OWNER="someuser", GROUP="somegroup"</literal>
+    '';
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/axoloti/dfu-util.nix b/nixpkgs/pkgs/applications/audio/axoloti/dfu-util.nix
new file mode 100644
index 000000000000..80ec696c6459
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/axoloti/dfu-util.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, pkgconfig, libusb1-axoloti }:
+
+stdenv.mkDerivation rec {
+  pname = "dfu-util";
+  version = "0.8";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libusb1-axoloti ];
+
+  src = fetchurl {
+    url = "http://dfu-util.sourceforge.net/releases/${pname}-${version}.tar.gz";
+    sha256 = "0n7h08avlzin04j93m6hkq9id6hxjiiix7ff9gc2n89aw6dxxjsm";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Device firmware update (DFU) USB programmer";
+    longDescription = ''
+      dfu-util is a program that implements the host (PC) side of the USB
+      DFU 1.0 and 1.1 (Universal Serial Bus Device Firmware Upgrade) protocol.
+
+      DFU is intended to download and upload firmware to devices connected over
+      USB. It ranges from small devices like micro-controller boards up to mobile
+      phones. With dfu-util you are able to download firmware to your device or
+      upload firmware from it.
+    '';
+    homepage = "http://dfu-util.sourceforge.net";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/axoloti/libusb1.nix b/nixpkgs/pkgs/applications/audio/axoloti/libusb1.nix
new file mode 100644
index 000000000000..49b788f66537
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/axoloti/libusb1.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, pkgconfig, systemd ? null, libobjc, IOKit, fetchpatch }:
+
+stdenv.mkDerivation rec {
+  name = "libusb-1.0.19";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/libusb/${name}.tar.bz2";
+    sha256 = "0h38p9rxfpg9vkrbyb120i1diq57qcln82h5fr7hvy82c20jql3c";
+  };
+
+  outputs = [ "out" "dev" ]; # get rid of propagating systemd closure
+
+  buildInputs = [ pkgconfig ];
+  propagatedBuildInputs =
+    stdenv.lib.optional stdenv.isLinux systemd ++
+    stdenv.lib.optionals stdenv.isDarwin [ libobjc IOKit ];
+
+  patches = [
+    (fetchpatch {
+      name = "libusb.stdfu.patch";
+      url = "https://raw.githubusercontent.com/axoloti/axoloti/1.0.12/platform_linux/src/libusb.stdfu.patch";
+      sha256 = "194j7j61i4q6x0ihm9ms8dxd4vliw20n2rj6cm9h17qzdl9xr33d";
+    })
+  ];
+
+  NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isLinux "-lgcc_s";
+
+  preFixup = stdenv.lib.optionalString stdenv.isLinux ''
+    sed 's,-ludev,-L${systemd.lib}/lib -ludev,' -i $out/lib/libusb-1.0.la
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.libusb.info";
+    description = "User-space USB library";
+    platforms = platforms.unix;
+    license = licenses.lgpl21;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/baudline/default.nix b/nixpkgs/pkgs/applications/audio/baudline/default.nix
new file mode 100644
index 000000000000..0d95675d1e67
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/baudline/default.nix
@@ -0,0 +1,70 @@
+{ stdenv, fetchurl, libXmu, libXt, libX11, libXext, libXxf86vm, libjack2
+, makeWrapper
+}:
+
+let
+  rpath = stdenv.lib.makeLibraryPath
+    [ libXmu libXt libX11 libXext libXxf86vm libjack2 ];
+in
+stdenv.mkDerivation rec {
+  pname = "baudline";
+  version = "1.08";
+
+  src =
+    if stdenv.hostPlatform.system == "x86_64-linux" then
+      fetchurl {
+        url = "http://www.baudline.com/baudline_${version}_linux_x86_64.tar.gz";
+        sha256 = "09fn0046i69in1jpizkzbaq5ggij0mpflcsparyskm3wh71mbzvr";
+      }
+    else if stdenv.hostPlatform.system == "i686-linux" then
+      fetchurl {
+        url = "http://www.baudline.com/baudline_${version}_linux_i686.tar.gz";
+        sha256 = "1waip5pmcf5ffcfvn8lf1rvsaq2ab66imrbfqs777scz7k8fhhjb";
+      }
+    else
+      throw "baudline isn't supported (yet?) on ${stdenv.hostPlatform.system}";
+
+  buildInputs = [ makeWrapper ];
+
+  # Prebuilt binary distribution.
+  # "patchelf --set-rpath" seems to break the application (cannot start), using
+  # LD_LIBRARY_PATH wrapper script instead.
+  dontBuild = true;
+  installPhase = ''
+    mkdir -p "$out/bin"
+    mkdir -p "$out/libexec/baudline"
+
+    cp -r . "$out/libexec/baudline/"
+
+    interpreter="$(echo ${stdenv.glibc.out}/lib/ld-linux*)"
+    for prog in "$out"/libexec/baudline/baudline*; do
+        patchelf --interpreter "$interpreter" "$prog"
+        ln -sr "$prog" "$out/bin/"
+    done
+    for prog in "$out"/bin/*; do
+        wrapProgram "$prog" --prefix LD_LIBRARY_PATH : ${rpath}
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Scientific signal analysis application";
+    longDescription = ''
+      Baudline is a time-frequency browser designed for scientific
+      visualization of the spectral domain.  Signal analysis is performed by
+      Fourier, correlation, and raster transforms that create colorful
+      spectrograms with vibrant detail.  Conduct test and measurement
+      experiments with the built in function generator, or play back audio
+      files with a multitude of effects and filters.  The baudline signal
+      analyzer combines fast digital signal processing, versatile high speed
+      displays, and continuous capture tools for hunting down and studying
+      elusive signal characteristics.
+    '';
+    homepage = "http://www.baudline.com/";
+    # See http://www.baudline.com/faq.html#licensing_terms.
+    # (Do NOT (re)distribute on hydra.)
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" "i686-linux" ];
+    maintainers = [ maintainers.bjornfor ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/audio/beast/patch.patch b/nixpkgs/pkgs/applications/audio/beast/patch.patch
new file mode 100644
index 000000000000..9d9f82cf4b4b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/beast/patch.patch
@@ -0,0 +1,187 @@
+Index: beast-0.7.1/shell/Makefile.in
+===================================================================
+--- beast-0.7.1.orig/shell/Makefile.in
++++ beast-0.7.1/shell/Makefile.in
+@@ -859,10 +859,7 @@ check-before: check-installation
+ check-installation:
+ 	@for p in $(bin_PROGRAMS) ; do					\
+ 	  pp="$(DESTDIR)$(bindir)/$$p" ;				\
+-	  echo "TEST: test -x \"$$pp\"" ;				\
+-	  test -x "$$pp" ||						\
+-	    { echo "Failed to verify installation of executable: $$pp";	\
+-	      exit 1 ; }						\
++	  echo "TEST: test -x \"$$pp\" Test disabled" ;				\
+ 	done
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+Index: beast-0.7.1/shell/Makefile.am
+===================================================================
+--- beast-0.7.1.orig/shell/Makefile.am
++++ beast-0.7.1/shell/Makefile.am
+@@ -859,10 +859,7 @@ check-before: check-installation
+ check-installation:
+ 	@for p in $(bin_PROGRAMS) ; do					\
+ 	  pp="$(DESTDIR)$(bindir)/$$p" ;				\
+-	  echo "TEST: test -x \"$$pp\"" ;				\
+-	  test -x "$$pp" ||						\
+-	    { echo "Failed to verify installation of executable: $$pp";	\
+-	      exit 1 ; }						\
++	  echo "TEST: test -x \"$$pp\" Test disabled" ;				\
+ 	done
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+Index: beast-0.7.1/birnet/birnettests.h
+===================================================================
+--- beast-0.7.1.orig/birnet/birnettests.h
++++ beast-0.7.1/birnet/birnettests.h
+@@ -27,6 +27,7 @@
+ 
+ #include <glib.h>
+ #include <string.h>
++#include <signal.h>
+ 
+ BIRNET_EXTERN_C_BEGIN();
+ 
+Index: beast-0.7.1/tools/bseloopfuncs.c
+===================================================================
+--- beast-0.7.1.orig/tools/bseloopfuncs.c
++++ beast-0.7.1/tools/bseloopfuncs.c
+@@ -21,6 +21,7 @@
+ #include <string.h>
+ #include <stdio.h>
+ #include <math.h>
++#include <signal.h>
+ 
+ typedef struct {
+   gdouble score;
+--- beast-0.7.1.orig/bse/Makefile.am	2008-06-01 13:12:28.116708321 +0200
++++ beast-0.7.1/bse/Makefile.am	2008-06-01 13:12:40.000000000 +0200
+@@ -10,7 +10,7 @@
+ # need -I$(top_builddir) for <sfi/sficonfig.h>
+ # need -I$(srcdir) for "bseserver.h" in .genprc.c
+ # need -I. (builddir) for "bsecore.genidl.hh" in bsecore.cc
+-INCLUDES += -I$(top_srcdir) -I$(top_builddir) -I$(srcdir) -I. $(BSE_CFLAGS) -DG_DISABLE_DEPRECATED -DG_DISABLE_CONST_RETURNS
++INCLUDES += -I$(top_srcdir) -I$(top_builddir) -I$(srcdir) -I. $(BSE_CFLAGS) -DG_DISABLE_CONST_RETURNS
+ DEFS     += $(strip \
+ 	$(patsubst %, -DG_LOG_DOMAIN=\"BSE\" -DBSE_COMPILATION, \
+ 	              $(filter $(<F), $(bse_sources) $(bse_sources))) \
+--- beast-0.7.1.orig/bse/zintern/Makefile.am	2008-06-01 13:14:25.880028999 +0200
++++ beast-0.7.1/bse/zintern/Makefile.am	2008-06-01 13:14:38.000000000 +0200
+@@ -4,7 +4,7 @@
+ ## GNU Lesser General Public License version 2 or any later version.
+ include $(top_srcdir)/Makefile.decl
+ 
+-INCLUDES += -I$(top_srcdir) -I$(top_builddir) $(BSE_CFLAGS) -DG_DISABLE_DEPRECATED -DG_DISABLE_CONST_RETURNS
++INCLUDES += -I$(top_srcdir) -I$(top_builddir) $(BSE_CFLAGS) -DG_DISABLE_CONST_RETURNS
+ 
+ ZFILE_DEFS = $(strip \
+ 	wave-mono		$(srcdir)/wave-mono.bse		\
+--- a/configure.in	2008-06-01 15:19:46.000000000 +0200
++++ b/configure.in	2008-06-01 15:27:45.000000000 +0200
+@@ -159,39 +159,33 @@
+ dnl # Define package requirements.
+ dnl #
+ dnl ## include acintltool.m4 to provide IT_PROG_INTLTOOL
+-builtin(include, acintltool.m4)dnl
+-AC_DEFUN([AC_I18N_REQUIREMENTS],
+-[
+-    ALL_LINGUAS=`cat "$srcdir/po/LINGUAS" | grep -v '^#' | xargs echo -n `
+-    AC_SUBST(ALL_LINGUAS)
+-    AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/po/LINGUAS'])
+-
+-    dnl # versioned BEAST gettext domain (po/)
+-    BST_GETTEXT_DOMAIN=beast-v$BIN_VERSION    # version without -rcZ
+-    AC_SUBST(BST_GETTEXT_DOMAIN)
+-    AC_DEFINE_UNQUOTED(BST_GETTEXT_DOMAIN, "$BST_GETTEXT_DOMAIN", [Versioned BEAST gettext domain])
+-    GETTEXT_PACKAGE=$BST_GETTEXT_DOMAIN
+-    AC_SUBST(GETTEXT_PACKAGE)
+-
+-    dnl # locale directory for all domains
+-    dnl # (AM_GLIB_DEFINE_LOCALEDIR() could do this if it would do AC_SUBST())
+-    saved_prefix="$prefix"
+-    saved_exec_prefix="$exec_prefix"
+-    test "x$prefix" = xNONE && prefix=$ac_default_prefix
+-    test "x$exec_prefix" = xNONE && exec_prefix=$prefix
+-    if test "x$CATOBJEXT" = "x.mo" ; then
+-      beastlocaledir=`eval echo "${libdir}/locale"`
+-    else
+-      beastlocaledir=`eval echo "${datadir}/locale"`
+-    fi
+-    exec_prefix="$saved_exec_prefix"
+-    prefix="$saved_prefix"
+-    AC_SUBST(beastlocaledir)
+-
+-    dnl # do gettext checks and prepare for intltool
+-    AM_GLIB_GNU_GETTEXT
+-    IT_PROG_INTLTOOL
+-])
++IT_PROG_INTLTOOL([0.35.0])
++
++dnl # versioned BEAST gettext domain (po/)
++BST_GETTEXT_DOMAIN=beast-v$BIN_VERSION    # version without -rcZ
++AC_SUBST(BST_GETTEXT_DOMAIN)
++AC_DEFINE_UNQUOTED(BST_GETTEXT_DOMAIN, "$BST_GETTEXT_DOMAIN", [Versioned BEAST gettext domain])
++GETTEXT_PACKAGE=$BST_GETTEXT_DOMAIN
++AC_SUBST(GETTEXT_PACKAGE)
++
++dnl # locale directory for all domains
++dnl # (AM_GLIB_DEFINE_LOCALEDIR() could do this if it would do AC_SUBST())
++saved_prefix="$prefix"
++saved_exec_prefix="$exec_prefix"
++test "x$prefix" = xNONE && prefix=$ac_default_prefix
++test "x$exec_prefix" = xNONE && exec_prefix=$prefix
++if test "x$CATOBJEXT" = "x.mo" ; then
++  beastlocaledir=`eval echo "${libdir}/locale"`
++else
++  beastlocaledir=`eval echo "${datadir}/locale"`
++fi
++exec_prefix="$saved_exec_prefix"
++prefix="$saved_prefix"
++AC_SUBST(beastlocaledir)
++
++dnl # do gettext checks and prepare for intltool
++AM_GLIB_GNU_GETTEXT
++
+ AC_DEFUN([AC_SFI_REQUIREMENTS],
+ [
+     dnl # check for GLib libs, libbirnet already provides gthread-2.0 and glib-2.0
+@@ -570,7 +564,6 @@
+ AC_BIRNET_REQUIREMENTS
+ 
+ # Check requirement sets
+-AC_I18N_REQUIREMENTS
+ AC_SFI_REQUIREMENTS
+ AC_BSE_REQUIREMENTS
+ AC_BSESCM_REQUIREMENTS
+--- a/po/POTFILES.in	2008-06-22 15:12:10.000000000 +0200
++++ b/po/POTFILES.in	2008-06-22 15:13:28.000000000 +0200
+@@ -131,3 +131,29 @@
+ plugins/davxtalstrings.c
+ plugins/freeverb/bsefreeverb.c
+ tools/bsewavetool.cc
++
++beast-gtk/bstgentypes.c
++birnet/birnetcpu.cc
++birnet/birnetutils.hh
++bse/bsebus.genprc.c
++bse/bsebusmodule.genidl.hh
++bse/bsecontainer.genprc.c
++bse/bsecore.genidl.hh
++bse/bseieee754.h
++bse/bseladspamodule.c
++bse/bseparasite.genprc.c
++bse/bsesong.genprc.c
++bse/bsesource.genprc.c
++bse/bsetrack.genprc.c
++plugins/artscompressor.genidl.hh
++plugins/bseamplifier.genidl.hh
++plugins/bsebalance.genidl.hh
++plugins/bsecontribsampleandhold.genidl.hh
++plugins/bsenoise.genidl.hh
++plugins/bsequantizer.genidl.hh
++plugins/bsesummation.genidl.hh
++plugins/davbassfilter.genidl.hh
++plugins/davchorus.genidl.hh
++plugins/standardguspatchenvelope.genidl.hh
++plugins/standardsaturator.genidl.hh
++tests/latency/bselatencytest.genidl.hh
diff --git a/nixpkgs/pkgs/applications/audio/bitmeter/default.nix b/nixpkgs/pkgs/applications/audio/bitmeter/default.nix
new file mode 100644
index 000000000000..ac05a9367cc9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/bitmeter/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, autoreconfHook, fetchurl, libjack2, gtk2, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "bitmeter";
+  version = "1.2";
+
+  src = fetchurl {
+    url = "https://devel.tlrmx.org/audio/source/${pname}-${version}.tar.gz";
+    sha256 = "09ck2gxqky701dc1p0ip61rrn16v0pdc7ih2hc2sd63zcw53g2a7";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ libjack2 gtk2 ];
+
+  patches = [
+    (fetchurl {
+      url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/media-sound/bitmeter/files/bitmeter-1.2-fix-build-system.patch";
+      sha256 = "021mz6933iw7mpk6b9cbjr8naj6smbq1hwqjszlyx72qbwrrid7k";
+    })
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://devel.tlrmx.org/audio/bitmeter/";
+    description = "Also known as jack bitscope. Useful to detect denormals";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio1.nix b/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio1.nix
new file mode 100644
index 000000000000..61d522f677fe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio1.nix
@@ -0,0 +1,98 @@
+{ stdenv, fetchurl, alsaLib, bzip2, cairo, dpkg, freetype, gdk-pixbuf
+, wrapGAppsHook, gtk2, gtk3, harfbuzz, jdk, lib, xorg
+, libbsd, libjack2, libpng, ffmpeg_3
+, libxkbcommon
+, makeWrapper, pixman, autoPatchelfHook
+, xdg_utils, zenity, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "bitwig-studio";
+  version = "1.3.16";
+
+  src = fetchurl {
+    url    = "https://downloads.bitwig.com/stable/${version}/bitwig-studio-${version}.deb";
+    sha256 = "0n0fxh9gnmilwskjcayvjsjfcs3fz9hn00wh7b3gg0cv3qqhich8";
+  };
+
+  nativeBuildInputs = [ dpkg makeWrapper autoPatchelfHook wrapGAppsHook ];
+
+  unpackCmd = "mkdir root ; dpkg-deb -x $curSrc root";
+
+  dontBuild    = true;
+  dontWrapGApps = true; # we only want $gappsWrapperArgs here
+
+  buildInputs = with xorg; [
+    alsaLib bzip2.out cairo freetype gdk-pixbuf gtk2 gtk3 harfbuzz libX11 libXau
+    libXcursor libXdmcp libXext libXfixes libXrender libbsd libjack2 libpng libxcb
+    libxkbfile pixman xcbutil xcbutilwm zlib
+  ];
+
+  binPath = lib.makeBinPath [
+    xdg_utils zenity ffmpeg_3
+  ];
+
+  installPhase = ''
+    mkdir -p $out
+    cp -r opt/bitwig-studio $out/libexec
+
+    # Use NixOS versions of these libs instead of the bundled ones.
+    (
+      cd $out/libexec/lib/bitwig-studio
+      rm libbz2.so* libxkbfile.so* libXcursor.so* libXau.so* \
+         libXdmcp.so* libpng16.so* libxcb*.so* libharfbuzz.so* \
+         libcairo.so* libfreetype.so*
+      ln -s ${bzip2.out}/lib/libbz2.so.1.0.6 libbz2.so.1.0
+    )
+
+    # Use our OpenJDK instead of Bitwig’s bundled—and commercial!—one.
+    rm -rf $out/libexec/lib/jre
+    ln -s ${jdk.home}/jre $out/libexec/lib/jre
+
+    mkdir -p $out/bin
+    ln -s $out/libexec/bitwig-studio $out/bin/bitwig-studio
+
+    cp -r usr/share $out/share
+    substitute usr/share/applications/bitwig-studio.desktop \
+      $out/share/applications/bitwig-studio.desktop \
+      --replace /usr/bin/bitwig-studio $out/bin/bitwig-studio
+  '';
+
+  postFixup = ''
+    # Bitwig’s `libx11-windowing-system.so` has several problems:
+    #
+    #   • has some old version of libxkbcommon linked statically (ಠ_ಠ),
+    #
+    #   • hardcodes path to `/usr/share/X11/xkb`,
+    #
+    #   • even if we redirected it with libredirect (after adding
+    #     `eaccess()` to libredirect!), their version of libxkbcommon
+    #     is unable to parse our xkeyboardconfig. Been there, done that.
+    #
+    # However, it suffices to override theirs with our libxkbcommon
+    # in LD_PRELOAD. :-)
+
+    find $out -type f -executable \
+      -not -name '*.so.*' \
+      -not -name '*.so' \
+      -not -path '*/resources/*' | \
+    while IFS= read -r f ; do
+      wrapProgram $f \
+        --prefix PATH : "${binPath}" \
+        "''${gappsWrapperArgs[@]}" \
+        --set LD_PRELOAD "${libxkbcommon.out}/lib/libxkbcommon.so" || true
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A digital audio workstation";
+    longDescription = ''
+      Bitwig Studio is a multi-platform music-creation system for
+      production, performance and DJing, with a focus on flexible
+      editing tools and a super-fast workflow.
+    '';
+    homepage = "https://www.bitwig.com/";
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ michalrus mrVanDalo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio2.nix b/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio2.nix
new file mode 100644
index 000000000000..345750e9e2a9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio2.nix
@@ -0,0 +1,16 @@
+{ fetchurl, bitwig-studio1,
+  pulseaudio }:
+
+bitwig-studio1.overrideAttrs (oldAttrs: rec {
+  name = "bitwig-studio-${version}";
+  version = "2.5";
+
+  src = fetchurl {
+    url    = "https://downloads.bitwig.com/stable/${version}/bitwig-studio-${version}.deb";
+    sha256 = "1zkiz36lhck3qvl0cp0dq6pwbv4lx4sh9wh0ga92kx5zhvbjm098";
+  };
+
+  runtimeDependencies = [
+    pulseaudio
+  ];
+})
diff --git a/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix b/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix
new file mode 100644
index 000000000000..59136596b0e1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix
@@ -0,0 +1,23 @@
+{ fetchurl, bitwig-studio1, pulseaudio, xorg }:
+
+bitwig-studio1.overrideAttrs (oldAttrs: rec {
+  name = "bitwig-studio-${version}";
+  version = "3.1.3";
+
+  src = fetchurl {
+    url = "https://downloads.bitwig.com/stable/${version}/bitwig-studio-${version}.deb";
+    sha256 = "11z5flmp55ywgxyccj3pzhijhaggi42i2pvacg88kcpj0cin57vl";
+  };
+
+  buildInputs = oldAttrs.buildInputs ++ [ xorg.libXtst ];
+
+  runtimeDependencies = [ pulseaudio ];
+
+  installPhase = ''
+    ${oldAttrs.installPhase}
+
+    # recover commercial jre
+    rm -f $out/libexec/lib/jre
+    cp -r opt/bitwig-studio/lib/jre $out/libexec/lib
+  '';
+})
diff --git a/nixpkgs/pkgs/applications/audio/bjumblr/default.nix b/nixpkgs/pkgs/applications/audio/bjumblr/default.nix
new file mode 100644
index 000000000000..de0cae7a21a3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/bjumblr/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, libX11, cairo, lv2, pkgconfig, libsndfile }:
+
+stdenv.mkDerivation rec {
+  pname = "BJumblr";
+  version = "0.2";
+
+  src = fetchFromGitHub {
+    owner = "sjaehn";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "14z8113zkwykbhm1a8h2xs972dgifvlfij92b08jckyc7cbz84ys";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    libX11 cairo lv2 libsndfile
+  ];
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/sjaehn/BJumblr";
+    description = "Pattern-controlled audio stream / sample re-sequencer LV2 plugin";
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/bristol/default.nix b/nixpkgs/pkgs/applications/audio/bristol/default.nix
new file mode 100644
index 000000000000..704b888e2293
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/bristol/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, alsaLib, libjack2, pkgconfig, libpulseaudio, xorg }:
+
+stdenv.mkDerivation  rec {
+  pname = "bristol";
+  version = "0.60.11";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/bristol/${pname}-${version}.tar.gz";
+    sha256 = "1fi2m4gmvxdi260821y09lxsimq82yv4k5bbgk3kyc3x1nyhn7vx";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    alsaLib libjack2 libpulseaudio xorg.libX11 xorg.libXext
+    xorg.xorgproto
+  ];
+
+  patchPhase = "sed -i '41,43d' libbristolaudio/audioEngineJack.c"; # disable alsa/iatomic
+
+  configurePhase = "./configure --prefix=$out --enable-jack-default-audio --enable-jack-default-midi";
+
+  preInstall = ''
+    sed -e "s@\`which bristol\`@$out/bin/bristol@g" -i bin/startBristol
+    sed -e "s@\`which brighton\`@$out/bin/brighton@g" -i bin/startBristol
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A range of synthesiser, electric piano and organ emulations";
+    homepage = "http://bristol.sourceforge.net";
+    license = licenses.gpl3;
+    platforms = ["x86_64-linux" "i686-linux"];
+    maintainers = [ maintainers.goibhniu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/bs1770gain/default.nix b/nixpkgs/pkgs/applications/audio/bs1770gain/default.nix
new file mode 100644
index 000000000000..47de14ecb25c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/bs1770gain/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, ffmpeg_3, sox }:
+
+stdenv.mkDerivation rec {
+  pname = "bs1770gain";
+  version = "0.5.2";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/bs1770gain/${pname}-${version}.tar.gz";
+    sha256 = "1p6yz5q7czyf9ard65sp4kawdlkg40cfscr3b24znymmhs3p7rbk";
+  };
+
+  buildInputs = [ ffmpeg_3 sox ];
+
+  NIX_CFLAGS_COMPILE = "-Wno-error";
+
+  meta = with stdenv.lib; {
+    description = "A audio/video loudness scanner implementing ITU-R BS.1770";
+    license = licenses.gpl2Plus;
+    homepage = "http://bs1770gain.sourceforge.net/";
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/bsequencer/default.nix b/nixpkgs/pkgs/applications/audio/bsequencer/default.nix
new file mode 100644
index 000000000000..bb45a846b1b8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/bsequencer/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, xorg, cairo, lv2, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "BSEQuencer";
+  version = "1.4.2";
+
+  src = fetchFromGitHub {
+    owner = "sjaehn";
+    repo = pname;
+    rev = "${version}";
+    sha256 = "1fz0p0ba00b7k7a8q9mxwj01jwl8xwh9a2npn00pbbdrg9zv4fdr";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    xorg.libX11 cairo lv2
+  ];
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/sjaehn/BSEQuencer";
+    description = "Multi channel MIDI step sequencer LV2 plugin";
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/bshapr/default.nix b/nixpkgs/pkgs/applications/audio/bshapr/default.nix
new file mode 100644
index 000000000000..aa4374c79bc1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/bshapr/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, xorg, cairo, lv2, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "BShapr";
+  version = "0.9";
+
+  src = fetchFromGitHub {
+    owner = "sjaehn";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "04zd3a178i2nivg5rjailzqvc5mlnilmhj1ziygmbhshbrywplri";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    xorg.libX11 cairo lv2
+  ];
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/sjaehn/BShapr";
+    description = "Beat / envelope shaper LV2 plugin";
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/bslizr/default.nix b/nixpkgs/pkgs/applications/audio/bslizr/default.nix
new file mode 100644
index 000000000000..bae2407ec7b9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/bslizr/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, xorg, cairo, lv2, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "BSlizr";
+  version = "1.2.6";
+
+  src = fetchFromGitHub {
+    owner = "sjaehn";
+    repo = pname;
+    rev = "${version}";
+    sha256 = "1l0znwvvqd2s24c652q54pkizlh86mvmr8h0qqp9xma0i575fcrh";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    xorg.libX11 cairo lv2
+  ];
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/sjaehn/BSlizr";
+    description = "Sequenced audio slicing effect LV2 plugin (step sequencer effect)";
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/cadence/default.nix b/nixpkgs/pkgs/applications/audio/cadence/default.nix
new file mode 100644
index 000000000000..4f4ad4b8c5b0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/cadence/default.nix
@@ -0,0 +1,100 @@
+{ stdenv
+, a2jmidid
+, coreutils
+, lib
+, libjack2
+, fetchpatch
+, fetchzip
+, jack_capture
+, pkgconfig
+, pulseaudioFull
+, qtbase
+, makeWrapper
+, mkDerivation
+, python3
+}:
+#ladish missing, claudia can't work.
+#pulseaudio needs fixes (patchShebangs .pa ...)
+#desktop needs icons and exec fixing.
+
+mkDerivation rec {
+  version = "0.9.1";
+  pname = "cadence";
+
+  src = fetchzip {
+    url = "https://github.com/falkTX/Cadence/archive/v${version}.tar.gz";
+    sha256 = "07z8grnnpkd0nf3y3r6qjlk1jlzrbhdrp9mnhrhhmws54p1bhl20";
+  };
+
+  patches = [
+    # Fix installation without DESTDIR
+    (fetchpatch {
+      url = "https://github.com/falkTX/Cadence/commit/1fd3275e7daf4b75f59ef1f85a9e2e93bd5c0731.patch";
+      sha256 = "0q791jsh8vmjg678dzhbp1ykq8xrrlxl1mbgs3g8if1ccj210vd8";
+    })
+  ];
+
+  postPatch = ''
+      libjackso=$(realpath ${lib.makeLibraryPath [libjack2]}/libjack.so.0);
+      substituteInPlace ./src/jacklib.py --replace libjack.so.0 $libjackso
+      substituteInPlace ./src/cadence.py --replace "/usr/bin/pulseaudio" \
+        "${lib.makeBinPath[pulseaudioFull]}/pulseaudio"
+      substituteInPlace ./c++/jackbridge/JackBridge.cpp --replace libjack.so.0 $libjackso
+  '';
+
+  nativeBuildInputs = [
+    pkgconfig
+  ];
+
+  buildInputs = [
+    qtbase
+    jack_capture
+    pulseaudioFull
+    ((python3.withPackages (ps: with ps; [
+          pyqt5
+          dbus-python
+        ])))
+  ];
+
+  makeFlags = [
+    "PREFIX=${placeholder "out"}"
+    "SYSCONFDIR=${placeholder "out"}/etc"
+  ];
+
+  dontWrapQtApps = true;
+
+  # Replace with our own wrappers. They need to be changed manually since it wouldn't work otherwise.
+  preFixup = let
+    outRef = placeholder "out";
+    prefix = "${outRef}/share/cadence/src";
+    scriptAndSource = lib.mapAttrs' (script: source:
+      lib.nameValuePair ("${outRef}/bin/" + script) ("${prefix}/" + source)
+    ) {
+      "cadence" = "cadence.py";
+      "claudia" = "claudia.py";
+      "catarina" = "catarina.py";
+      "catia" = "catia.py";
+      "cadence-jacksettings" = "jacksettings.py";
+      "cadence-aloop-daemon" = "cadence_aloop_daemon.py";
+      "cadence-logs" = "logs.py";
+      "cadence-render" = "render.py";
+      "claudia-launcher" = "claudia_launcher.py";
+      "cadence-session-start" = "cadence_session_start.py";
+    };
+  in lib.mapAttrsToList (script: source: ''
+    rm -f ${script}
+    makeQtWrapper ${source} ${script} \
+      --prefix PATH : "${lib.makeBinPath [
+        jack_capture # cadence-render
+        pulseaudioFull # cadence, cadence-session-start
+        ]}"
+  '') scriptAndSource;
+
+  meta = {
+    homepage = "https://github.com/falkTX/Cadence/";
+    description = "Collection of tools useful for audio production";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = with stdenv.lib.maintainers; [ genesis worldofpeace ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/calf/default.nix b/nixpkgs/pkgs/applications/audio/calf/default.nix
new file mode 100644
index 000000000000..bbeef4c395a2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/calf/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, cairo, expat, fftwSinglePrec, fluidsynth, glib
+, gtk2, libjack2, ladspaH , libglade, lv2, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "calf";
+  version = "0.90.3";
+
+  src = fetchurl {
+    url = "https://calf-studio-gear.org/files/${pname}-${version}.tar.gz";
+    sha256 = "17x4hylgq4dn9qycsdacfxy64f5cv57n2qgkvsdp524gnqzw4az3";
+  };
+
+  enableParallelBuilding = true;
+
+  buildInputs = [
+    cairo expat fftwSinglePrec fluidsynth glib gtk2 libjack2 ladspaH
+    libglade lv2 pkgconfig
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://calf-studio-gear.org";
+    description = "A set of high quality open source audio plugins for musicians";
+    license = licenses.lgpl2;
+    maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/cantata/default.nix b/nixpkgs/pkgs/applications/audio/cantata/default.nix
new file mode 100644
index 000000000000..e5d62b15f450
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/cantata/default.nix
@@ -0,0 +1,95 @@
+{ mkDerivation, lib, fetchFromGitHub, cmake, pkgconfig
+, qtbase, qtsvg, qttools
+
+# Cantata doesn't build with cdparanoia enabled so we disable that
+# default for now until I (or someone else) figure it out.
+, withCdda ? false, cdparanoia
+, withCddb ? false, libcddb
+, withLame ? false, lame
+, withMusicbrainz ? false, libmusicbrainz5
+
+, withTaglib ? true, taglib, taglib_extras
+, withHttpStream ? true, qtmultimedia
+, withReplaygain ? true, ffmpeg_3, speex, mpg123
+, withMtp ? true, libmtp
+, withOnlineServices ? true
+, withDevices ? true, udisks2
+, withDynamic ? true
+, withHttpServer ? true
+, withLibVlc ? false, vlc
+, withStreams ? true
+}:
+
+# Inter-dependencies.
+assert withCddb -> withCdda && withTaglib;
+assert withCdda -> withCddb && withMusicbrainz;
+assert withLame -> withCdda && withTaglib;
+assert withMtp -> withTaglib;
+assert withMusicbrainz -> withCdda && withTaglib;
+assert withOnlineServices -> withTaglib;
+assert withReplaygain -> withTaglib;
+assert withLibVlc -> withHttpStream;
+
+let
+  version = "2.4.1";
+  pname = "cantata";
+  fstat = x: fn: "-DENABLE_" + fn + "=" + (if x then "ON" else "OFF");
+  fstats = x: map (fstat x);
+
+  withUdisks = (withTaglib && withDevices);
+
+in mkDerivation {
+  name = "${pname}-${version}";
+
+  src = fetchFromGitHub {
+    owner  = "CDrummond";
+    repo   = "cantata";
+    rev    = "v${version}";
+    sha256 = "0ix7xp352bziwz31mw79y7wxxmdn6060p8ry2px243ni1lz1qx1c";
+  };
+
+  buildInputs = [ qtbase qtsvg ]
+    ++ lib.optionals withTaglib [ taglib taglib_extras ]
+    ++ lib.optionals withReplaygain [ ffmpeg_3 speex mpg123 ]
+    ++ lib.optional  withHttpStream qtmultimedia
+    ++ lib.optional  withCdda cdparanoia
+    ++ lib.optional  withCddb libcddb
+    ++ lib.optional  withLame lame
+    ++ lib.optional  withMtp libmtp
+    ++ lib.optional  withMusicbrainz libmusicbrainz5
+    ++ lib.optional  withUdisks udisks2
+    ++ lib.optional  withLibVlc vlc;
+
+  nativeBuildInputs = [ cmake pkgconfig qttools ];
+
+  enableParallelBuilding = true;
+
+  cmakeFlags = lib.flatten [
+    (fstats withTaglib        [ "TAGLIB" "TAGLIB_EXTRAS" ])
+    (fstats withReplaygain    [ "FFMPEG" "MPG123" "SPEEXDSP" ])
+    (fstat withHttpStream     "HTTP_STREAM_PLAYBACK")
+    (fstat withCdda           "CDPARANOIA")
+    (fstat withCddb           "CDDB")
+    (fstat withLame           "LAME")
+    (fstat withMtp            "MTP")
+    (fstat withMusicbrainz    "MUSICBRAINZ")
+    (fstat withOnlineServices "ONLINE_SERVICES")
+    (fstat withDynamic        "DYNAMIC")
+    (fstat withDevices        "DEVICES_SUPPORT")
+    (fstat withHttpServer     "HTTP_SERVER")
+    (fstat withLibVlc         "LIBVLC")
+    (fstat withStreams        "STREAMS")
+    (fstat withUdisks         "UDISKS2")
+    "-DENABLE_HTTPS_SUPPORT=ON"
+  ];
+
+  meta = with lib; {
+    homepage    = "https://github.com/cdrummond/cantata";
+    description = "A graphical client for MPD";
+    license     = licenses.gpl3;
+    maintainers = with maintainers; [ peterhoeg ];
+    # Technically Cantata can run on Windows so if someone wants to
+    # bother figuring that one out, be my guest.
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/caps/default.nix b/nixpkgs/pkgs/applications/audio/caps/default.nix
new file mode 100644
index 000000000000..dc8511bf5007
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/caps/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl }:
+stdenv.mkDerivation rec {
+  pname = "caps";
+  version = "0.9.26";
+  src = fetchurl {
+    url = "http://www.quitte.de/dsp/caps_${version}.tar.bz2";
+    sha256 = "1jcq9y51vdnk93q27r566y9qmddvadhr4ddnvkiypaq5rrdnqjg7";
+  };
+
+  configurePhase = ''
+    echo "PREFIX = $out" > defines.make
+  '';
+
+  meta = {
+    description = "A selection of LADSPA plugins implementing classic effects";
+    longDescription = ''
+      The C* Audio Plugin Suite is a selection of classic effects,
+      unique filters and signal generators.  The digital guitarist
+      finds in CAPS a range of processors recreating key aspects of
+      the formation of tone in traditional electronic instrument
+      amplification.  Beyond sound quality, central design
+      considerations are latency-free realtime operation, modesty of
+      resource demands and meaningful control interfaces.
+    '';
+    homepage = "http://www.quitte.de/dsp/caps.html";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.astsmtl ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/carla/default.nix b/nixpkgs/pkgs/applications/audio/carla/default.nix
new file mode 100644
index 000000000000..110507616616
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/carla/default.nix
@@ -0,0 +1,83 @@
+{ stdenv, fetchFromGitHub, alsaLib, file, fluidsynth, ffmpeg_3, jack2,
+  liblo, libpulseaudio, libsndfile, pkgconfig, python3Packages,
+  which, withFrontend ? true,
+  withQt ? true, qtbase ? null, wrapQtAppsHook ? null,
+  withGtk2 ? true, gtk2 ? null,
+  withGtk3 ? true, gtk3 ? null }:
+
+with stdenv.lib;
+
+assert withFrontend -> python3Packages ? pyqt5;
+assert withQt -> qtbase != null;
+assert withQt -> wrapQtAppsHook != null;
+assert withGtk2 -> gtk2 != null;
+assert withGtk3 -> gtk3 != null;
+
+stdenv.mkDerivation rec {
+  pname = "carla";
+  version = "2.1.1";
+
+  src = fetchFromGitHub {
+    owner = "falkTX";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0c3y4a6cgi4bv1mg57i3qn5ia6pqjqlaylvkapj6bmpsw71ig22g";
+  };
+
+  nativeBuildInputs = [
+    python3Packages.wrapPython pkgconfig which wrapQtAppsHook
+  ];
+
+  pythonPath = with python3Packages; [
+    rdflib pyliblo
+  ] ++ optional withFrontend pyqt5;
+
+  buildInputs = [
+    file liblo alsaLib fluidsynth ffmpeg_3 jack2 libpulseaudio libsndfile
+  ] ++ pythonPath
+    ++ optional withQt qtbase
+    ++ optional withGtk2 gtk2
+    ++ optional withGtk3 gtk3;
+
+  enableParallelBuilding = true;
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  dontWrapQtApps = true;
+  postFixup = ''
+    # Also sets program_PYTHONPATH and program_PATH variables
+    wrapPythonPrograms
+    wrapPythonProgramsIn "$out/share/carla/resources" "$out $pythonPath"
+
+    find "$out/share/carla" -maxdepth 1 -type f -not -name "*.py" -print0 | while read -d "" f; do
+      patchPythonScript "$f"
+    done
+    patchPythonScript "$out/share/carla/carla_settings.py"
+
+    for program in $out/bin/*; do
+      wrapQtApp "$program" \
+        --prefix PATH : "$program_PATH:${which}/bin" \
+        --set PYTHONNOUSERSITE true
+    done
+
+    find "$out/share/carla/resources" -maxdepth 1 -type f -not -name "*.py" -print0 | while read -d "" f; do
+      wrapQtApp "$f" \
+        --prefix PATH : "$program_PATH:${which}/bin" \
+        --set PYTHONNOUSERSITE true
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://kxstudio.sf.net/carla";
+    description = "An audio plugin host";
+    longDescription = ''
+      It currently supports LADSPA (including LRDF), DSSI, LV2, VST2/3
+      and AU plugin formats, plus GIG, SF2 and SFZ file support.
+      It uses JACK as the default and preferred audio driver but also
+      supports native drivers like ALSA, DirectSound or CoreAudio.
+    '';
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.minijackson ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/caudec/default.nix b/nixpkgs/pkgs/applications/audio/caudec/default.nix
new file mode 100644
index 000000000000..c95390958637
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/caudec/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, makeWrapper, bash, bc, findutils, flac, lame, opusTools, procps, sox }:
+
+let
+  version = "1.7.5";
+in
+
+stdenv.mkDerivation {
+  pname = "caudec";
+  inherit version;
+
+  src = fetchurl {
+    url = "http://caudec.net/downloads/caudec-${version}.tar.gz";
+    sha256 = "5d1f5ab3286bb748bd29cbf45df2ad2faf5ed86070f90deccf71c60be832f3d5";
+  };
+
+  preBuild = ''
+    patchShebangs ./install.sh
+  '';
+
+  buildInputs = [ bash makeWrapper ];
+
+  installPhase = ''
+    ./install.sh --prefix=$out/bin
+  '';
+
+  postFixup = ''
+    for executable in $(cd $out/bin && ls); do
+	wrapProgram $out/bin/$executable \
+	  --prefix PATH : "${stdenv.lib.makeBinPath [ bc findutils sox procps opusTools lame flac ]}"
+    done
+  '';
+
+   meta = with stdenv.lib; {
+    homepage = "http://caudec.net/";
+    description = "A multiprocess audio converter that supports many formats (FLAC, MP3, Ogg Vorbis, Windows codecs and many more)";
+    license     = licenses.gpl3;
+    platforms   = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/cava/default.nix b/nixpkgs/pkgs/applications/audio/cava/default.nix
new file mode 100644
index 000000000000..2bdca386bf45
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/cava/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, alsaLib, fftw,
+  libpulseaudio, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "cava";
+  version = "0.6.1";
+
+  buildInputs = [
+    alsaLib
+    fftw
+    libpulseaudio
+    ncurses
+  ];
+
+  src = fetchFromGitHub {
+    owner = "karlstav";
+    repo = "cava";
+    rev = version;
+    sha256 = "1kvhqgijs29909w3sq9m0bslx2zxxn4b3i07kdz4hb0dqkppxpjy";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+
+  postConfigure = ''
+    substituteInPlace Makefile.am \
+      --replace "-L/usr/local/lib -Wl,-rpath /usr/local/lib" ""
+    substituteInPlace configure.ac \
+      --replace "/usr/share/consolefonts" "$out/share/consolefonts"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Console-based Audio Visualizer for Alsa";
+    homepage = "https://github.com/karlstav/cava";
+    license = licenses.mit;
+    maintainers = with maintainers; [ offline mirrexagon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/cd-discid/default.nix b/nixpkgs/pkgs/applications/audio/cd-discid/default.nix
new file mode 100644
index 000000000000..2ceb5f6d09a2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/cd-discid/default.nix
@@ -0,0 +1,31 @@
+{ fetchurl, stdenv
+, IOKit ? null }:
+
+stdenv.mkDerivation rec {
+  pname = "cd-discid";
+  version = "1.4";
+
+  src = fetchurl {
+    url = "http://linukz.org/download/${pname}-${version}.tar.gz";
+    sha256 = "0qrcvn7227qaayjcd5rm7z0k5q89qfy5qkdgwr5pd7ih0va8rmpz";
+  };
+
+  installFlags = [ "PREFIX=$(out)" "INSTALL=install" ];
+
+  buildInputs = []
+    ++ stdenv.lib.optional stdenv.isDarwin IOKit;
+
+  meta = with stdenv.lib; {
+    homepage = "http://linukz.org/cd-discid.shtml";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.rycee ];
+    platforms = platforms.unix;
+    description = "Command-line utility to get CDDB discid information from a CD-ROM disc";
+
+    longDescription = ''
+      cd-discid is a backend utility to get CDDB discid information
+      from a CD-ROM disc.  It was originally designed for cdgrab (now
+      abcde), but can be used for any purpose requiring CDDB data.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/cdparanoia/default.nix b/nixpkgs/pkgs/applications/audio/cdparanoia/default.nix
new file mode 100644
index 000000000000..0658305723c4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/cdparanoia/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, autoreconfHook, gnu-config, IOKit, Carbon }:
+
+stdenv.mkDerivation rec {
+  name = "cdparanoia-III-10.2";
+
+  src = fetchurl {
+    url = "http://downloads.xiph.org/releases/cdparanoia/${name}.src.tgz";
+    sha256 = "1pv4zrajm46za0f6lv162iqffih57a8ly4pc69f7y0gfyigb8p80";
+  };
+
+  patches = stdenv.lib.optionals stdenv.isDarwin [
+    (fetchurl {
+      url = "https://trac.macports.org/export/70964/trunk/dports/audio/cdparanoia/files/osx_interface.patch";
+      sha256 = "1n86kzm2ssl8fdf5wlhp6ncb2bf6b9xlb5vg0mhc85r69prqzjiy";
+    })
+    (fetchurl {
+      url = "https://trac.macports.org/export/70964/trunk/dports/audio/cdparanoia/files/patch-paranoia_paranoia.c.10.4.diff";
+      sha256 = "17l2qhn8sh4jy6ryy5si6ll6dndcm0r537rlmk4a6a8vkn852vad";
+    })
+    ] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl ./utils.patch
+    ++ [./fix_private_keyword.patch];
+
+  nativeBuildInputs = stdenv.lib.optional stdenv.isAarch64 autoreconfHook;
+
+  propagatedBuildInputs = stdenv.lib.optionals stdenv.isDarwin [
+    Carbon
+    IOKit
+  ];
+
+  hardeningDisable = [ "format" ];
+
+  preConfigure = "unset CC" + stdenv.lib.optionalString stdenv.isAarch64 '';
+    cp ${gnu-config}/config.sub configure.sub
+    cp ${gnu-config}/config.guess configure.guess
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://xiph.org/paranoia";
+    description = "A tool and library for reading digital audio from CDs";
+    license = with licenses; [ gpl2Plus lgpl21Plus ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/cdparanoia/fix_private_keyword.patch b/nixpkgs/pkgs/applications/audio/cdparanoia/fix_private_keyword.patch
new file mode 100644
index 000000000000..3e9cbe2bd8c2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/cdparanoia/fix_private_keyword.patch
@@ -0,0 +1,468 @@
+--- cdparanoia-III-10.2/interface/cdda_interface.h	(revision 15337)
++++ cdparanoia-III-10.2/interface/cdda_interface.h	(revision 15338)
+@@ -85,5 +85,5 @@
+   int is_mmc;
+ 
+-  cdda_private_data_t *private;
++  cdda_private_data_t *private_data;
+   void         *reserved;
+   unsigned char inqbytes[4];
+--- cdparanoia-III-10.2/interface/cooked_interface.c	(revision 15337)
++++ cdparanoia-III-10.2/interface/cooked_interface.c	(revision 15338)
+@@ -14,11 +14,11 @@
+   struct timespec tv1;
+   struct timespec tv2;
+-  int ret1=clock_gettime(d->private->clock,&tv1);
++  int ret1=clock_gettime(d->private_data->clock,&tv1);
+   int ret2=ioctl(fd, command,arg);
+-  int ret3=clock_gettime(d->private->clock,&tv2);
++  int ret3=clock_gettime(d->private_data->clock,&tv2);
+   if(ret1<0 || ret3<0){
+-    d->private->last_milliseconds=-1;
++    d->private_data->last_milliseconds=-1;
+   }else{
+-    d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
++    d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
+   }
+   return ret2;
+--- cdparanoia-III-10.2/interface/interface.c	(revision 15337)
++++ cdparanoia-III-10.2/interface/interface.c	(revision 15338)
+@@ -40,7 +40,7 @@
+     if(d->cdda_fd!=-1)close(d->cdda_fd);
+     if(d->ioctl_fd!=-1 && d->ioctl_fd!=d->cdda_fd)close(d->ioctl_fd);
+-    if(d->private){
+-      if(d->private->sg_hd)free(d->private->sg_hd);
+-      free(d->private);
++    if(d->private_data){
++      if(d->private_data->sg_hd)free(d->private_data->sg_hd);
++      free(d->private_data);
+     }
+ 
+@@ -128,5 +128,5 @@
+       }	
+     }
+-    if(ms)*ms=d->private->last_milliseconds;
++    if(ms)*ms=d->private_data->last_milliseconds;
+     return(sectors);
+   }
+--- cdparanoia-III-10.2/interface/scan_devices.c	(revision 15337)
++++ cdparanoia-III-10.2/interface/scan_devices.c	(revision 15338)
+@@ -265,9 +265,9 @@
+   d->bigendianp=-1; /* We don't know yet... */
+   d->nsectors=-1;
+-  d->private=calloc(1,sizeof(*d->private));
++  d->private_data=calloc(1,sizeof(*d->private_data));
+   {
+     /* goddamnit */
+     struct timespec tv;
+-    d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
++    d->private_data->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
+   }
+   idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",description);
+@@ -675,13 +675,13 @@
+   d->nsectors=-1;
+   d->messagedest = messagedest;
+-  d->private=calloc(1,sizeof(*d->private));
++  d->private_data=calloc(1,sizeof(*d->private_data));
+   {
+     /* goddamnit */
+     struct timespec tv;
+-    d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
++    d->private_data->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
+   }
+   if(use_sgio){
+     d->interface=SGIO_SCSI;
+-    d->private->sg_buffer=(unsigned char *)(d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE));
++    d->private_data->sg_buffer=(unsigned char *)(d->private_data->sg_hd=malloc(MAX_BIG_BUFF_SIZE));
+     g_fd=d->cdda_fd=dup(d->ioctl_fd);
+   }else{
+@@ -697,6 +697,6 @@
+ 
+     /* malloc our big buffer for scsi commands */
+-    d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE);
+-    d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF;
++    d->private_data->sg_hd=malloc(MAX_BIG_BUFF_SIZE);
++    d->private_data->sg_buffer=((unsigned char *)d->private_data->sg_hd)+SG_OFF;
+   }
+ 
+@@ -773,7 +773,7 @@
+   if(g_fd!=-1)close(g_fd);
+   if(d){
+-    if(d->private){
+-      if(d->private->sg_hd)free(d->private->sg_hd);
+-      free(d->private);
++    if(d->private_data){
++      if(d->private_data->sg_hd)free(d->private_data->sg_hd);
++      free(d->private_data);
+     }
+     free(d);
+@@ -822,5 +822,5 @@
+   d->bigendianp=-1; /* We don't know yet... */
+   d->nsectors=-1;
+-  d->private=calloc(1,sizeof(*d->private));
++  d->private_data=calloc(1,sizeof(*d->private_data));
+   d->drive_model=copystring("File based test interface");
+   idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",d->drive_model);
+--- cdparanoia-III-10.2/interface/scsi_interface.c	(revision 15337)
++++ cdparanoia-III-10.2/interface/scsi_interface.c	(revision 15338)
+@@ -16,11 +16,11 @@
+   struct timespec tv1;
+   struct timespec tv2;
+-  int ret1=clock_gettime(d->private->clock,&tv1);
++  int ret1=clock_gettime(d->private_data->clock,&tv1);
+   int ret2=ioctl(fd, command,arg);
+-  int ret3=clock_gettime(d->private->clock,&tv2);
++  int ret3=clock_gettime(d->private_data->clock,&tv2);
+   if(ret1<0 || ret3<0){
+-    d->private->last_milliseconds=-1;
++    d->private_data->last_milliseconds=-1;
+   }else{
+-    d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
++    d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
+   }
+   return ret2;
+@@ -97,5 +97,5 @@
+   fd_set fdset;
+   struct timeval tv;
+-  struct sg_header *sg_hd=d->private->sg_hd;
++  struct sg_header *sg_hd=d->private_data->sg_hd;
+   int flag=0;
+ 
+@@ -186,5 +186,5 @@
+   int tret1,tret2;
+   int status = 0;
+-  struct sg_header *sg_hd=d->private->sg_hd;
++  struct sg_header *sg_hd=d->private_data->sg_hd;
+   long writebytes=SG_OFF+cmd_len+in_size;
+ 
+@@ -196,5 +196,5 @@
+   memset(sg_hd,0,sizeof(sg_hd)); 
+   memset(sense_buffer,0,SG_MAX_SENSE); 
+-  memcpy(d->private->sg_buffer,cmd,cmd_len+in_size);
++  memcpy(d->private_data->sg_buffer,cmd,cmd_len+in_size);
+   sg_hd->twelve_byte = cmd_len == 12;
+   sg_hd->result = 0;
+@@ -210,5 +210,5 @@
+ 
+   if(bytecheck && out_size>in_size){
+-    memset(d->private->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size); 
++    memset(d->private_data->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size); 
+     /* the size does not remove cmd_len due to the way the kernel
+        driver copies buffers */
+@@ -244,5 +244,5 @@
+ 
+   sigprocmask (SIG_BLOCK, &(d->sigset), NULL );
+-  tret1=clock_gettime(d->private->clock,&tv1);  
++  tret1=clock_gettime(d->private_data->clock,&tv1);  
+   errno=0;
+   status = write(d->cdda_fd, sg_hd, writebytes );
+@@ -290,5 +290,5 @@
+   }
+ 
+-  tret2=clock_gettime(d->private->clock,&tv2);  
++  tret2=clock_gettime(d->private_data->clock,&tv2);  
+   errno=0;
+   status = read(d->cdda_fd, sg_hd, SG_OFF + out_size);
+@@ -314,5 +314,5 @@
+     long i,flag=0;
+     for(i=in_size;i<out_size;i++)
+-      if(d->private->sg_buffer[i]!=bytefill){
++      if(d->private_data->sg_buffer[i]!=bytefill){
+ 	flag=1;
+ 	break;
+@@ -327,7 +327,7 @@
+   errno=0;
+   if(tret1<0 || tret2<0){
+-    d->private->last_milliseconds=-1;
++    d->private_data->last_milliseconds=-1;
+   }else{
+-    d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000;
++    d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000;
+   }
+   return(0);
+@@ -348,5 +348,5 @@
+   memset(&hdr,0,sizeof(hdr));
+   memset(sense,0,sizeof(sense));
+-  memcpy(d->private->sg_buffer,cmd+cmd_len,in_size);
++  memcpy(d->private_data->sg_buffer,cmd+cmd_len,in_size);
+ 
+   hdr.cmdp = cmd;
+@@ -356,5 +356,5 @@
+   hdr.timeout = 50000;
+   hdr.interface_id = 'S';
+-  hdr.dxferp =  d->private->sg_buffer;
++  hdr.dxferp =  d->private_data->sg_buffer;
+   hdr.flags = SG_FLAG_DIRECT_IO;  /* direct IO if we can get it */
+ 
+@@ -401,5 +401,5 @@
+     long i,flag=0;
+     for(i=in_size;i<out_size;i++)
+-      if(d->private->sg_buffer[i]!=bytefill){
++      if(d->private_data->sg_buffer[i]!=bytefill){
+ 	flag=1;
+ 	break;
+@@ -413,5 +413,5 @@
+ 
+   /* Can't rely on .duration because we can't be certain kernel has HZ set to something useful */
+-  /* d->private->last_milliseconds = hdr.duration; */
++  /* d->private_data->last_milliseconds = hdr.duration; */
+ 
+   errno = 0;
+@@ -446,7 +446,7 @@
+   handle_scsi_cmd(d, cmd, 6, 0, 56, 0,0, sense);
+ 
+-  key = d->private->sg_buffer[2] & 0xf;
+-  ASC = d->private->sg_buffer[12];
+-  ASCQ = d->private->sg_buffer[13];
++  key = d->private_data->sg_buffer[2] & 0xf;
++  ASC = d->private_data->sg_buffer[12];
++  ASCQ = d->private_data->sg_buffer[13];
+   
+   if(key == 2 && ASC == 4 && ASCQ == 1) return 0;
+@@ -493,5 +493,5 @@
+ 
+   {
+-    unsigned char *b=d->private->sg_buffer;
++    unsigned char *b=d->private_data->sg_buffer;
+     if(b[0])return(1); /* Handles only up to 256 bytes */
+     if(b[6])return(1); /* Handles only up to 256 bytes */
+@@ -605,6 +605,6 @@
+   if(mode_sense(d,12,0x01))return(-1);
+ 
+-  d->orgdens = d->private->sg_buffer[4];
+-  return(d->orgsize = ((int)(d->private->sg_buffer[10])<<8)+d->private->sg_buffer[11]);
++  d->orgdens = d->private_data->sg_buffer[4];
++  return(d->orgsize = ((int)(d->private_data->sg_buffer[10])<<8)+d->private_data->sg_buffer[11]);
+ }
+ 
+@@ -665,6 +665,6 @@
+   }
+ 
+-  first=d->private->sg_buffer[2];
+-  last=d->private->sg_buffer[3];
++  first=d->private_data->sg_buffer[2];
++  last=d->private_data->sg_buffer[3];
+   tracks=last-first+1;
+ 
+@@ -684,5 +684,5 @@
+     }
+     {
+-      scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4);
++      scsi_TOC *toc=(scsi_TOC *)(d->private_data->sg_buffer+4);
+ 
+       d->disc_toc[i-first].bFlags=toc->bFlags;
+@@ -705,5 +705,5 @@
+   }
+   {
+-    scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4);
++    scsi_TOC *toc=(scsi_TOC *)(d->private_data->sg_buffer+4);
+     
+     d->disc_toc[i-first].bFlags=toc->bFlags;
+@@ -739,5 +739,5 @@
+ 
+   /* copy to our structure and convert start sector */
+-  tracks = d->private->sg_buffer[1];
++  tracks = d->private_data->sg_buffer[1];
+   if (tracks > MAXTRK) {
+     cderror(d,"003: CDROM reporting illegal number of tracks\n");
+@@ -755,31 +755,31 @@
+     }
+     
+-    d->disc_toc[i].bFlags = d->private->sg_buffer[10];
++    d->disc_toc[i].bFlags = d->private_data->sg_buffer[10];
+     d->disc_toc[i].bTrack = i + 1;
+ 
+     d->disc_toc[i].dwStartSector= d->adjust_ssize * 
+-	(((signed char)(d->private->sg_buffer[2])<<24) | 
+-	 (d->private->sg_buffer[3]<<16)|
+-	 (d->private->sg_buffer[4]<<8)|
+-	 (d->private->sg_buffer[5]));
++	(((signed char)(d->private_data->sg_buffer[2])<<24) | 
++	 (d->private_data->sg_buffer[3]<<16)|
++	 (d->private_data->sg_buffer[4]<<8)|
++	 (d->private_data->sg_buffer[5]));
+   }
+ 
+   d->disc_toc[i].bFlags = 0;
+   d->disc_toc[i].bTrack = i + 1;
+-  memcpy (&foo, d->private->sg_buffer+2, 4);
+-  memcpy (&bar, d->private->sg_buffer+6, 4);
++  memcpy (&foo, d->private_data->sg_buffer+2, 4);
++  memcpy (&bar, d->private_data->sg_buffer+6, 4);
+   d->disc_toc[i].dwStartSector = d->adjust_ssize * (be32_to_cpu(foo) +
+ 						    be32_to_cpu(bar));
+ 
+   d->disc_toc[i].dwStartSector= d->adjust_ssize * 
+-    ((((signed char)(d->private->sg_buffer[2])<<24) | 
+-      (d->private->sg_buffer[3]<<16)|
+-      (d->private->sg_buffer[4]<<8)|
+-      (d->private->sg_buffer[5]))+
++    ((((signed char)(d->private_data->sg_buffer[2])<<24) | 
++      (d->private_data->sg_buffer[3]<<16)|
++      (d->private_data->sg_buffer[4]<<8)|
++      (d->private_data->sg_buffer[5]))+
+      
+-     ((((signed char)(d->private->sg_buffer[6])<<24) | 
+-       (d->private->sg_buffer[7]<<16)|
+-       (d->private->sg_buffer[8]<<8)|
+-       (d->private->sg_buffer[9]))));
++     ((((signed char)(d->private_data->sg_buffer[6])<<24) | 
++       (d->private_data->sg_buffer[7]<<16)|
++       (d->private_data->sg_buffer[8]<<8)|
++       (d->private_data->sg_buffer[9]))));
+ 
+ 
+@@ -818,5 +818,5 @@
+   if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -837,5 +837,5 @@
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -855,5 +855,5 @@
+   if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -873,5 +873,5 @@
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -891,5 +891,5 @@
+   if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -909,5 +909,5 @@
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -923,5 +923,5 @@
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -937,5 +937,5 @@
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -951,5 +951,5 @@
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -965,5 +965,5 @@
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -979,5 +979,5 @@
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -993,5 +993,5 @@
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -1027,5 +1027,5 @@
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -1040,5 +1040,5 @@
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -1053,5 +1053,5 @@
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -1276,5 +1276,5 @@
+   long i;
+   for(i=2351;i>=0;i--)
+-    if(d->private->sg_buffer[i]!=(unsigned char)'\177')
++    if(d->private_data->sg_buffer[i]!=(unsigned char)'\177')
+       return(((i+3)>>2)<<2);
+ 
+@@ -1285,5 +1285,5 @@
+   long i,flag=0;
+   for(i=0;i<2352;i++)
+-    if(d->private->sg_buffer[i]!=0){
++    if(d->private_data->sg_buffer[i]!=0){
+       flag=1;
+       break;
+@@ -1622,5 +1622,5 @@
+   if(mode_sense(d,22,0x2A)==0){
+   
+-    b=d->private->sg_buffer;
++    b=d->private_data->sg_buffer;
+     b+=b[3]+4;
+     
+@@ -1670,5 +1670,5 @@
+     return(NULL);
+   }
+-  return (d->private->sg_buffer);
++  return (d->private_data->sg_buffer);
+ }
+ 
+@@ -1726,6 +1726,6 @@
+ 
+   d->error_retry=1;
+-  d->private->sg_hd=realloc(d->private->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128);
+-  d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF;
++  d->private_data->sg_hd=realloc(d->private_data->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128);
++  d->private_data->sg_buffer=((unsigned char *)d->private_data->sg_hd)+SG_OFF;
+   d->report_all=1;
+   return(0);
+--- cdparanoia-III-10.2/interface/test_interface.c	(revision 15337)
++++ cdparanoia-III-10.2/interface/test_interface.c	(revision 15338)
+@@ -67,7 +67,7 @@
+ 
+   if(begin<lastread)
+-    d->private->last_milliseconds=20;
++    d->private_data->last_milliseconds=20;
+   else
+-    d->private->last_milliseconds=sectors;
++    d->private_data->last_milliseconds=sectors;
+ 
+ #ifdef CDDA_TEST_UNDERRUN
diff --git a/nixpkgs/pkgs/applications/audio/cdparanoia/utils.patch b/nixpkgs/pkgs/applications/audio/cdparanoia/utils.patch
new file mode 100644
index 000000000000..338e5303dcd0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/cdparanoia/utils.patch
@@ -0,0 +1,68 @@
+diff --git cdparanoia-III-10.2/interface/utils.h cdparanoia-III-10.2/interface/utils.h
+index c9647da..68c1a3a 100644
+--- cdparanoia-III-10.2/interface/utils.h
++++ cdparanoia-III-10.2/interface/utils.h
+@@ -1,4 +1,6 @@
+-#include <endian.h>
++#include <unistd.h>
++#include <stdint.h>
++#include <stdlib.h>
+ #include <stdio.h>
+ #include <errno.h>
+ #include <string.h>
+@@ -14,15 +16,15 @@ static inline int bigendianp(void){
+ }
+ 
+ static inline int32_t swap32(int32_t x){
+-  return((((u_int32_t)x & 0x000000ffU) << 24) | 
+-	 (((u_int32_t)x & 0x0000ff00U) <<  8) | 
+-	 (((u_int32_t)x & 0x00ff0000U) >>  8) | 
+-	 (((u_int32_t)x & 0xff000000U) >> 24));
++  return((((uint32_t)x & 0x000000ffU) << 24) | 
++	 (((uint32_t)x & 0x0000ff00U) <<  8) | 
++	 (((uint32_t)x & 0x00ff0000U) >>  8) | 
++	 (((uint32_t)x & 0xff000000U) >> 24));
+ }
+ 
+ static inline int16_t swap16(int16_t x){
+-  return((((u_int16_t)x & 0x00ffU) <<  8) | 
+-	 (((u_int16_t)x & 0xff00U) >>  8));
++  return((((uint16_t)x & 0x00ffU) <<  8) | 
++	 (((uint16_t)x & 0xff00U) >>  8));
+ }
+ 
+ #if BYTE_ORDER == LITTLE_ENDIAN
+diff --git cdparanoia-III-10.2/utils.h cdparanoia-III-10.2/utils.h
+index 10dce58..6211ce3 100644
+--- cdparanoia-III-10.2/utils.h
++++ cdparanoia-III-10.2/utils.h
+@@ -1,5 +1,6 @@
++#include <unistd.h>
++#include <stdint.h>
+ #include <stdlib.h>
+-#include <endian.h>
+ #include <stdio.h>
+ #include <errno.h>
+ #include <string.h>
+@@ -18,15 +19,15 @@ static inline int bigendianp(void){
+ }
+ 
+ static inline int32_t swap32(int32_t x){
+-  return((((u_int32_t)x & 0x000000ffU) << 24) | 
+-	 (((u_int32_t)x & 0x0000ff00U) <<  8) | 
+-	 (((u_int32_t)x & 0x00ff0000U) >>  8) | 
+-	 (((u_int32_t)x & 0xff000000U) >> 24));
++  return((((uint32_t)x & 0x000000ffU) << 24) | 
++	 (((uint32_t)x & 0x0000ff00U) <<  8) | 
++	 (((uint32_t)x & 0x00ff0000U) >>  8) | 
++	 (((uint32_t)x & 0xff000000U) >> 24));
+ }
+ 
+ static inline int16_t swap16(int16_t x){
+-  return((((u_int16_t)x & 0x00ffU) <<  8) | 
+-	 (((u_int16_t)x & 0xff00U) >>  8));
++  return((((uint16_t)x & 0x00ffU) <<  8) | 
++	 (((uint16_t)x & 0xff00U) >>  8));
+ }
+ 
+ #if BYTE_ORDER == LITTLE_ENDIAN
diff --git a/nixpkgs/pkgs/applications/audio/cheesecutter/0001-fix-impure-build-date-display.patch b/nixpkgs/pkgs/applications/audio/cheesecutter/0001-fix-impure-build-date-display.patch
new file mode 100644
index 000000000000..2e2746f43417
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/cheesecutter/0001-fix-impure-build-date-display.patch
@@ -0,0 +1,26 @@
+diff --git a/src/ct2util.d b/src/ct2util.d
+index 523cadc..e462b09 100644
+--- a/src/ct2util.d
++++ b/src/ct2util.d
+@@ -105,7 +105,7 @@ int main(string[] args) {
+ 	speeds.length = 32;
+ 	masks.length = 32;
+ 	void printheader() {
+-		enum hdr = "CheeseCutter 2 utilities" ~ com.util.versionInfo;
++		enum hdr = "CheeseCutter 2 utilities";
+ 		writefln(hdr);
+ 		writefln("\nUsage: \t%s <command> <options> <infile> <-o outfile>",args[0]);
+ 		writefln("\t%s import <infile> <infile2> <-o outfile>",args[0]);
+diff --git a/src/ui/ui.d b/src/ui/ui.d
+index e418dda..21af408 100644
+--- a/src/ui/ui.d
++++ b/src/ui/ui.d
+@@ -231,7 +231,7 @@ class Infobar : Window {
+ 	  
+ 		screen.clrtoeol(0, headerColor);
+ 
+-		enum hdr = "CheeseCutter 2.9" ~ com.util.versionInfo;
++		enum hdr = "CheeseCutter 2.9";
+ 		screen.cprint(4, 0, 1, headerColor, hdr);
+ 		screen.cprint(screen.width - 14, 0, 1, headerColor, "F12 = Help");
+ 		int c1 = audio.player.isPlaying ? 13 : 12;
diff --git a/nixpkgs/pkgs/applications/audio/cheesecutter/default.nix b/nixpkgs/pkgs/applications/audio/cheesecutter/default.nix
new file mode 100644
index 000000000000..732c2968fde4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/cheesecutter/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, lib, fetchFromGitHub, fetchpatch
+, acme, ldc, patchelf
+, SDL
+}:
+
+stdenv.mkDerivation rec {
+  pname = "cheesecutter";
+  version = "unstable-2019-12-06";
+
+  src = fetchFromGitHub {
+    owner = "theyamo";
+    repo = "CheeseCutter";
+    rev = "6b433c5512d693262742a93c8bfdfb353d4be853";
+    sha256 = "1szlcg456b208w1237581sg21x69mqlh8cr6v8yvbhxdz9swxnwy";
+  };
+
+  nativeBuildInputs = [ acme ldc patchelf ];
+
+  buildInputs = [ SDL ];
+
+  patches = [
+    ./0001-fix-impure-build-date-display.patch
+  ];
+
+  makefile = "Makefile.ldc";
+
+  installPhase = ''
+    for exe in {ccutter,ct2util}; do
+      install -D $exe $out/bin/$exe
+    done
+
+    mkdir -p $out/share/cheesecutter/example_tunes
+    cp -r tunes/* $out/share/cheesecutter/example_tunes
+  '';
+
+  postFixup = ''
+    rpath=$(patchelf --print-rpath $out/bin/ccutter)
+    patchelf --set-rpath "$rpath:${lib.makeLibraryPath buildInputs}" $out/bin/ccutter
+  '';
+
+  meta = with lib; {
+    description = "A tracker program for composing music for the SID chip.";
+    homepage = "https://github.com/theyamo/CheeseCutter/";
+    license = licenses.gpl2;
+    platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
+    maintainers = with maintainers; [ OPNA2608 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/chuck/darwin-limits.patch b/nixpkgs/pkgs/applications/audio/chuck/darwin-limits.patch
new file mode 100644
index 000000000000..dc98a1726913
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/chuck/darwin-limits.patch
@@ -0,0 +1,13 @@
+--- a/src/core/util_string.cpp	2014-10-27 22:52:11.875981552 +0100
++++ b/src/core/util_string.cpp	2014-10-27 22:54:18.613001994 +0100
+@@ -40,6 +40,10 @@
+ #include <linux/limits.h>
+ #endif // __PLATFORM_LINUX__
+ 
++#ifdef __PLATFORM_MACOSX__
++#include <limits.h>
++#endif // __PLATFORM_MACOSX__
++
+ #include <stdio.h>
+ using namespace std;
+ 
diff --git a/nixpkgs/pkgs/applications/audio/chuck/default.nix b/nixpkgs/pkgs/applications/audio/chuck/default.nix
new file mode 100644
index 000000000000..f30b5dba5b6b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/chuck/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, lib, fetchurl, alsaLib, bison, flex, libsndfile, which
+, AppKit, Carbon, CoreAudio, CoreMIDI, CoreServices, Kernel
+}:
+
+stdenv.mkDerivation rec {
+  version = "1.4.0.1";
+  pname = "chuck";
+
+  src = fetchurl {
+    url = "http://chuck.cs.princeton.edu/release/files/chuck-${version}.tgz";
+    sha256 = "1m0fhndbqaf0lii1asyc50c66bv55ib6mbnm8fzk5qc5ncs0r8hi";
+  };
+
+  nativeBuildInputs = [ flex bison which ];
+
+  buildInputs = [ libsndfile ]
+    ++ lib.optional (!stdenv.isDarwin) alsaLib
+    ++ lib.optional stdenv.isDarwin [ AppKit Carbon CoreAudio CoreMIDI CoreServices Kernel ];
+
+  patches = [ ./darwin-limits.patch ];
+
+  NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-Wno-missing-sysroot";
+  NIX_LDFLAGS = lib.optionalString stdenv.isDarwin "-framework MultitouchSupport";
+
+  postPatch = ''
+    substituteInPlace src/core/makefile.x/makefile.osx \
+      --replace "weak_framework" "framework" \
+      --replace "MACOSX_DEPLOYMENT_TARGET=10.9" "MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET"
+  '';
+
+  makeFlags = [ "-C src" "DESTDIR=$(out)/bin" ];
+  buildFlags = [ (if stdenv.isDarwin then "osx" else "linux-alsa") ];
+
+  meta = with lib; {
+    description = "Programming language for real-time sound synthesis and music creation";
+    homepage = "http://chuck.cs.princeton.edu";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ ftrvxmtrx ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/clementine/clementine-spotify-blob.patch b/nixpkgs/pkgs/applications/audio/clementine/clementine-spotify-blob.patch
new file mode 100644
index 000000000000..344fc31d70dc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/clementine/clementine-spotify-blob.patch
@@ -0,0 +1,13 @@
+diff --git a/src/internet/spotify/spotifyservice.cpp b/src/internet/spotify/spotifyservice.cpp
+index 88c7383..6e0893c 100644
+--- a/src/internet/spotify/spotifyservice.cpp
++++ b/src/internet/spotify/spotifyservice.cpp
+@@ -94,7 +94,7 @@ SpotifyService::SpotifyService(Application* app, InternetModel* parent)
+   system_blob_path_ = QCoreApplication::applicationDirPath() +
+                       "/../PlugIns/clementine-spotifyblob";
+ #else
+-  system_blob_path_ = QCoreApplication::applicationDirPath() +
++  system_blob_path_ = qgetenv("CLEMENTINE_SPOTIFYBLOB") +
+                       "/clementine-spotifyblob" CMAKE_EXECUTABLE_SUFFIX;
+ #endif
+ 
diff --git a/nixpkgs/pkgs/applications/audio/clementine/default.nix b/nixpkgs/pkgs/applications/audio/clementine/default.nix
new file mode 100644
index 000000000000..0c1690f1462a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/clementine/default.nix
@@ -0,0 +1,135 @@
+{ stdenv, mkDerivation, fetchFromGitHub, fetchpatch, boost, cmake, chromaprint, gettext, gst_all_1, liblastfm
+, qtbase, qtx11extras
+, taglib, fftw, glew, qjson, sqlite, libgpod, libplist, usbmuxd, libmtp
+, libpulseaudio, gvfs, libcdio, libechonest, libspotify, pcre, projectm, protobuf
+, qca2, pkgconfig, sparsehash, config, makeWrapper, gst_plugins }:
+
+let
+  withIpod = config.clementine.ipod or false;
+  withMTP = config.clementine.mtp or true;
+  withCD = config.clementine.cd or true;
+  withCloud = config.clementine.cloud or true;
+
+  version = "1.4.0rc1";
+
+  src = fetchFromGitHub {
+    owner = "clementine-player";
+    repo = "Clementine";
+    rev = version;
+    sha256 = "1rqk0hrsn8f8bjk0j0vq1af0ygy6xx7qi9fw0jjw2cmj6kzckyi2";
+  };
+
+  patches = [
+    ./clementine-spotify-blob.patch
+  ];
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [
+    boost
+    chromaprint
+    fftw
+    gettext
+    glew
+    gst_all_1.gst-plugins-base
+    gst_all_1.gstreamer
+    gvfs
+    libechonest
+    liblastfm
+    libpulseaudio
+    pcre
+    projectm
+    protobuf
+    qca2
+    qjson
+    qtbase
+    qtx11extras
+    sqlite
+    taglib
+  ]
+  ++ stdenv.lib.optionals (withIpod) [libgpod libplist usbmuxd]
+  ++ stdenv.lib.optionals (withMTP) [libmtp]
+  ++ stdenv.lib.optionals (withCD) [libcdio]
+  ++ stdenv.lib.optionals (withCloud) [sparsehash];
+
+  postPatch = ''
+    sed -i src/CMakeLists.txt \
+      -e 's,-Werror,,g' \
+      -e 's,-Wno-unknown-warning-option,,g' \
+      -e 's,-Wno-unused-private-field,,g'
+    sed -i CMakeLists.txt \
+      -e 's,libprotobuf.a,protobuf,g'
+  '';
+
+  free = mkDerivation {
+    pname = "clementine-free";
+    inherit version;
+    inherit src patches nativeBuildInputs postPatch;
+
+    # gst_plugins needed for setup-hooks
+    buildInputs = buildInputs ++ [ makeWrapper ] ++ gst_plugins;
+
+    preConfigure = ''
+      rm -rf ext/{,lib}clementine-spotifyblob
+    '';
+
+    cmakeFlags = [
+      "-DUSE_SYSTEM_PROJECTM=ON"
+      "-DSPOTIFY_BLOB=OFF"
+    ];
+
+    enableParallelBuilding = true;
+
+    passthru.unfree = unfree;
+
+    postInstall = ''
+      wrapProgram $out/bin/clementine \
+        --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0"
+    '';
+
+    meta = with stdenv.lib; {
+      homepage = "https://www.clementine-player.org";
+      description = "A multiplatform music player";
+      license = licenses.gpl3Plus;
+      platforms = platforms.linux;
+      maintainers = [ maintainers.ttuegel ];
+    };
+  };
+
+  # Unfree Spotify blob for Clementine
+  unfree = mkDerivation {
+    pname = "clementine-blob";
+    inherit version;
+    # Use the same patches and sources as Clementine
+    inherit src nativeBuildInputs patches postPatch;
+
+    buildInputs = buildInputs ++ [ libspotify makeWrapper ];
+    # Only build and install the Spotify blob
+    preBuild = ''
+      cd ext/clementine-spotifyblob
+    '';
+    postInstall = ''
+      mkdir -p $out/libexec/clementine
+      mv $out/bin/clementine-spotifyblob $out/libexec/clementine
+      rmdir $out/bin
+
+      makeWrapper ${free}/bin/clementine $out/bin/clementine \
+        --set CLEMENTINE_SPOTIFYBLOB $out/libexec/clementine
+
+      mkdir -p $out/share
+      for dir in applications icons kde4; do
+        ln -s "${free}/share/$dir" "$out/share/$dir"
+      done
+    '';
+    enableParallelBuilding = true;
+    meta = with stdenv.lib; {
+      homepage = "https://www.clementine-player.org";
+      description = "Spotify integration for Clementine";
+      # The blob itself is Apache-licensed, although libspotify is unfree.
+      license = licenses.asl20;
+      platforms = platforms.linux;
+      maintainers = [ maintainers.ttuegel ];
+    };
+  };
+
+in free
diff --git a/nixpkgs/pkgs/applications/audio/clerk/default.nix b/nixpkgs/pkgs/applications/audio/clerk/default.nix
new file mode 100644
index 000000000000..3c78295db674
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/clerk/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, makeWrapper, rofi, mpc_cli, perl,
+utillinux, pythonPackages, libnotify }:
+
+stdenv.mkDerivation {
+  name = "clerk-2016-10-14";
+
+  src = fetchFromGitHub {
+    owner = "carnager";
+    repo = "clerk";
+    rev = "875963bcae095ac1db174627183c76ebe165f787";
+    sha256 = "0y045my65hr3hjyx13jrnyg6g3wb41phqb1m7azc4l6vx6r4124b";
+  };
+
+  buildInputs = [ makeWrapper pythonPackages.mpd2 ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    DESTDIR=$out PREFIX=/ make install
+    wrapProgram $out/bin/clerk \
+      --prefix PATH : "${stdenv.lib.makeBinPath [ rofi mpc_cli perl utillinux libnotify ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An MPD client built on top of rofi";
+    homepage    = "https://github.com/carnager/clerk";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ anderspapitto ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/cmt/default.nix b/nixpkgs/pkgs/applications/audio/cmt/default.nix
new file mode 100644
index 000000000000..96cc3c573198
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/cmt/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, fetchurl
+, ladspaH
+}:
+
+stdenv.mkDerivation rec {
+  name = "cmt";
+  version = "1.17";
+
+  src = fetchurl {
+    url = "http://www.ladspa.org/download/${name}_${version}.tgz";
+    sha256 = "07xd0xmwpa0j12813jpf87fr9hwzihii5l35mp8ady7xxfmxfmpb";
+  };
+
+  buildInputs = [ ladspaH ];
+
+  preBuild = ''
+    cd src
+  '';
+
+  installFlags = [ "INSTALL_PLUGINS_DIR=${placeholder "out"}/lib/ladspa" ];
+  preInstall = ''
+    mkdir -p $out/lib/ladspa
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Computer Music Toolkit";
+    homepage = "https://www.ladspa.org/cmt";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ sjfloat ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/cmus/default.nix b/nixpkgs/pkgs/applications/audio/cmus/default.nix
new file mode 100644
index 000000000000..3e5916ba0983
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/cmus/default.nix
@@ -0,0 +1,136 @@
+{ config, stdenv, fetchFromGitHub, runCommand, ncurses, pkgconfig
+, libiconv, CoreAudio
+
+, alsaSupport ? stdenv.isLinux, alsaLib ? null
+# simple fallback for everyone else
+, aoSupport ? !stdenv.isLinux, libao ? null
+, jackSupport ? false, libjack ? null
+, samplerateSupport ? jackSupport, libsamplerate ? null
+, ossSupport ? false, alsaOss ? null
+, pulseaudioSupport ? config.pulseaudio or false, libpulseaudio ? null
+, mprisSupport ? stdenv.isLinux, systemd ? null
+
+# TODO: add these
+#, artsSupport
+#, roarSupport
+#, sndioSupport
+#, sunSupport
+#, waveoutSupport
+
+, cddbSupport ? true, libcddb ? null
+, cdioSupport ? true, libcdio ? null, libcdio-paranoia ? null
+, cueSupport ? true, libcue ? null
+, discidSupport ? (!stdenv.isDarwin), libdiscid ? null
+, ffmpegSupport ? true, ffmpeg ? null
+, flacSupport ? true, flac ? null
+, madSupport ? true, libmad ? null
+, mikmodSupport ? true, libmikmod ? null
+, modplugSupport ? true, libmodplug ? null
+, mpcSupport ? true, libmpcdec ? null
+, tremorSupport ? false, tremor ? null
+, vorbisSupport ? true, libvorbis ? null
+, wavpackSupport ? true, wavpack ? null
+, opusSupport ? true, opusfile ? null
+
+, aacSupport ? false, faad2 ? null # already handled by ffmpeg
+, mp4Support ? false, mp4v2 ? null # ffmpeg does support mp4 better
+
+# not in nixpkgs
+#, vtxSupport ? true, libayemu ? null
+}:
+
+with stdenv.lib;
+
+assert samplerateSupport -> jackSupport;
+
+# vorbis and tremor are mutually exclusive
+assert vorbisSupport -> !tremorSupport;
+assert tremorSupport -> !vorbisSupport;
+
+let
+
+  mkFlag = b: f: dep: if b
+    then { flags = [ f ]; deps = [ dep ]; }
+    else { flags = []; deps = []; };
+
+  opts = [
+    # Audio output
+    (mkFlag alsaSupport       "CONFIG_ALSA=y"       alsaLib)
+    (mkFlag aoSupport         "CONFIG_AO=y"         libao)
+    (mkFlag jackSupport       "CONFIG_JACK=y"       libjack)
+    (mkFlag samplerateSupport "CONFIG_SAMPLERATE=y" libsamplerate)
+    (mkFlag ossSupport        "CONFIG_OSS=y"        alsaOss)
+    (mkFlag pulseaudioSupport "CONFIG_PULSE=y"      libpulseaudio)
+    (mkFlag mprisSupport      "CONFIG_MPRIS=y"      systemd)
+
+    #(mkFlag artsSupport      "CONFIG_ARTS=y")
+    #(mkFlag roarSupport      "CONFIG_ROAR=y")
+    #(mkFlag sndioSupport     "CONFIG_SNDIO=y")
+    #(mkFlag sunSupport       "CONFIG_SUN=y")
+    #(mkFlag waveoutSupport   "CONFIG_WAVEOUT=y")
+
+    # Input file formats
+    (mkFlag cddbSupport    "CONFIG_CDDB=y"    libcddb)
+    (mkFlag cdioSupport    "CONFIG_CDIO=y"    [ libcdio libcdio-paranoia ])
+    (mkFlag cueSupport     "CONFIG_CUE=y"     libcue)
+    (mkFlag discidSupport  "CONFIG_DISCID=y"  libdiscid)
+    (mkFlag ffmpegSupport  "CONFIG_FFMPEG=y"  ffmpeg)
+    (mkFlag flacSupport    "CONFIG_FLAC=y"    flac)
+    (mkFlag madSupport     "CONFIG_MAD=y"     libmad)
+    (mkFlag mikmodSupport  "CONFIG_MIKMOD=y"  libmikmod)
+    (mkFlag modplugSupport "CONFIG_MODPLUG=y" libmodplug)
+    (mkFlag mpcSupport     "CONFIG_MPC=y"     libmpcdec)
+    (mkFlag tremorSupport  "CONFIG_TREMOR=y"  tremor)
+    (mkFlag vorbisSupport  "CONFIG_VORBIS=y"  libvorbis)
+    (mkFlag wavpackSupport "CONFIG_WAVPACK=y" wavpack)
+    (mkFlag opusSupport   "CONFIG_OPUS=y"    opusfile)
+
+    (mkFlag mp4Support    "CONFIG_MP4=y"     mp4v2)
+    (mkFlag aacSupport    "CONFIG_AAC=y"     faad2)
+
+    #(mkFlag vtxSupport    "CONFIG_VTX=y"     libayemu)
+  ];
+
+  clangGCC = runCommand "clang-gcc" {} ''
+    #! ${stdenv.shell}
+    mkdir -p $out/bin
+    ln -s ${stdenv.cc}/bin/clang $out/bin/gcc
+    ln -s ${stdenv.cc}/bin/clang++ $out/bin/g++
+  '';
+
+in
+
+stdenv.mkDerivation rec {
+  pname = "cmus";
+  version = "2.8.0";
+
+  src = fetchFromGitHub {
+    owner  = "cmus";
+    repo   = "cmus";
+    rev    = "v${version}";
+    sha256 = "1ydnvq13ay8b8mfmmgwi5qsgyf220yi1d01acbnxqn775dghmwar";
+  };
+
+  patches = [ ./option-debugging.patch ];
+
+  configurePhase = "./configure " + concatStringsSep " " ([
+    "prefix=$out"
+    "CONFIG_WAV=y"
+  ] ++ concatMap (a: a.flags) opts);
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ ncurses ]
+    ++ stdenv.lib.optional stdenv.cc.isClang clangGCC
+    ++ stdenv.lib.optionals stdenv.isDarwin [ libiconv CoreAudio ]
+    ++ flatten (concatMap (a: a.deps) opts);
+
+  makeFlags = [ "LD=$(CC)" ];
+
+  meta = with stdenv.lib; {
+    description = "Small, fast and powerful console music player for Linux and *BSD";
+    homepage = "https://cmus.github.io/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.oxij ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/cmus/option-debugging.patch b/nixpkgs/pkgs/applications/audio/cmus/option-debugging.patch
new file mode 100644
index 000000000000..84115e1480e1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/cmus/option-debugging.patch
@@ -0,0 +1,42 @@
+Shows build and link errors in configure for ease of debugging which
+options require what.
+diff --git a/scripts/checks.sh b/scripts/checks.sh
+index 64cbbf3..fab4d9b 100644
+--- a/scripts/checks.sh
++++ b/scripts/checks.sh
+@@ -425,7 +425,7 @@ try_compile()
+ 		echo "$1" > $__src || exit 1
+ 		shift
+ 		__cmd="$CC -c $CFLAGS $@ $__src -o $__obj"
+-		$CC -c $CFLAGS "$@" $__src -o $__obj 2>/dev/null
++		$CC -c $CFLAGS "$@" $__src -o $__obj
+ 		;;
+ 	cxx)
+ 		__src=`tmp_file prog.cc`
+@@ -433,7 +433,7 @@ try_compile()
+ 		echo "$1" > $__src || exit 1
+ 		shift
+ 		__cmd="$CXX -c $CXXFLAGS $@ $__src -o $__obj"
+-		$CXX -c $CXXFLAGS "$@" $__src -o $__obj 2>/dev/null
++		$CXX -c $CXXFLAGS "$@" $__src -o $__obj
+ 		;;
+ 	esac
+ 	return $?
+@@ -451,7 +451,7 @@ try_compile_link()
+ 		echo "$1" > $__src || exit 1
+ 		shift
+ 		__cmd="$CC $__src -o $__exe $CFLAGS $LDFLAGS $@"
+-		$CC $__src -o $__exe $CFLAGS $LDFLAGS "$@" 2>/dev/null
++		$CC $__src -o $__exe $CFLAGS $LDFLAGS "$@"
+ 		;;
+ 	cxx)
+ 		__src=`tmp_file prog.cc`
+@@ -459,7 +459,7 @@ try_compile_link()
+ 		echo "$1" > $__src || exit 1
+ 		shift
+ 		__cmd="$CXX $__src -o $__exe $CXXFLAGS $CXXLDFLAGS $@"
+-		$CXX $__src -o $__exe $CXXFLAGS $CXXLDFLAGS "$@" 2>/dev/null
++		$CXX $__src -o $__exe $CXXFLAGS $CXXLDFLAGS "$@"
+ 		;;
+ 	esac
+ 	return $?
diff --git a/nixpkgs/pkgs/applications/audio/cmusfm/default.nix b/nixpkgs/pkgs/applications/audio/cmusfm/default.nix
new file mode 100644
index 000000000000..6695b9a7237c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/cmusfm/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, curl, libnotify, gdk-pixbuf }:
+
+stdenv.mkDerivation {
+  version = "2018-10-11";
+  pname = "cmusfm-unstable";
+  src = fetchFromGitHub {
+    owner = "Arkq";
+    repo = "cmusfm";
+    rev = "ad2fd0aad3f4f1a25add1b8c2f179e8859885873";
+    sha256 = "0wpwdwgyrp64nvwc6shy0n387p31j6aw6cnmfi9x2y1jhl5hbv6b";
+  };
+  # building
+  configureFlags = [ "--enable-libnotify" ];
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ curl libnotify gdk-pixbuf ];
+
+  meta = with stdenv.lib; {
+    description = "Last.fm and Libre.fm standalone scrobbler for the cmus music player";
+    longDescription = ''
+      Features:
+      + Listening now notification support
+      + Off-line played track cache for later submission
+      + POSIX ERE-based file name parser
+      + Desktop notification support (optionally)
+      + Customizable scrobbling service
+      + Small memory footprint
+      Configuration:
+      + run `cmusfm init` to generate configuration file under ~/.config/cmus/cmusfm.conf
+      + Inside cmus run `:set status_display_program=cmusfm` to set up cmusfm
+    '';
+    homepage = "https://github.com/Arkq/cmusfm/";
+    maintainers = with stdenv.lib.maintainers; [ CharlesHD ];
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/cozy-audiobooks/default.nix b/nixpkgs/pkgs/applications/audio/cozy-audiobooks/default.nix
new file mode 100644
index 000000000000..a5947bd37f19
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/cozy-audiobooks/default.nix
@@ -0,0 +1,82 @@
+{ stdenv, fetchFromGitHub
+, ninja
+, meson
+, pkgconfig
+, wrapGAppsHook
+, appstream-glib
+, desktop-file-utils
+, gtk3
+, gst_all_1
+, gobject-introspection
+, python3Packages
+, file
+, cairo
+, gettext
+, gnome3
+}:
+
+python3Packages.buildPythonApplication rec {
+
+  format = "other"; # no setup.py
+
+  pname = "cozy";
+  version = "0.6.7";
+
+  # Temporary fix
+  # See https://github.com/NixOS/nixpkgs/issues/57029
+  # and https://github.com/NixOS/nixpkgs/issues/56943
+  strictDeps = false;
+
+  src = fetchFromGitHub {
+    owner = "geigi";
+    repo = pname;
+    rev = version;
+    sha256 = "0f8dyqj6111czn8spgsnic1fqs3kimjwl1b19mw55fa924b9bhsa";
+  };
+
+  nativeBuildInputs = [
+    meson ninja pkgconfig
+    wrapGAppsHook
+    appstream-glib
+    desktop-file-utils
+    gobject-introspection
+  ];
+
+  buildInputs = [
+    gtk3
+    cairo
+    gettext
+    gnome3.adwaita-icon-theme
+  ] ++ (with gst_all_1; [
+    gstreamer
+    gst-plugins-good
+    gst-plugins-ugly
+    gst-plugins-base
+  ]);
+
+  propagatedBuildInputs = with python3Packages; [
+    gst-python
+    pygobject3
+    dbus-python
+    mutagen
+    peewee
+    magic
+  ];
+
+  postPatch = ''
+    chmod +x data/meson_post_install.py
+    patchShebangs data/meson_post_install.py
+    substituteInPlace cozy/magic/magic.py --replace "ctypes.util.find_library('magic')" "'${file}/lib/libmagic${stdenv.hostPlatform.extensions.sharedLibrary}'"
+  '';
+
+  postInstall = ''
+    ln -s $out/bin/com.github.geigi.cozy $out/bin/cozy
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A modern audio book player for Linux using GTK 3";
+    homepage = "https://cozy.geigi.de/";
+    maintainers = [ maintainers.makefu ];
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/crip/default.nix b/nixpkgs/pkgs/applications/audio/crip/default.nix
new file mode 100644
index 000000000000..0181ede26dda
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/crip/default.nix
@@ -0,0 +1,67 @@
+{ stdenv
+, fetchurl
+, makeWrapper
+
+, perlPackages
+
+, cdparanoia
+, coreutils
+, eject
+, flac
+, gnugrep
+, nano
+, sox
+, vorbis-tools
+, vorbisgain
+, which
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "crip-3.9";
+  src = fetchurl {
+    url = "http://bach.dynet.com/crip/src/${name}.tar.gz";
+    sha256 = "0pk9152wll6fmkj1pki3fz3ijlf06jyk32v31yarwvdkwrk7s9xz";
+  };
+
+  buildInputs = [ perlPackages.perl perlPackages.CDDB_get ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  toolDeps = makeBinPath [
+    cdparanoia
+    coreutils
+    eject
+    flac
+    gnugrep
+    sox
+    vorbis-tools
+    vorbisgain
+    which
+  ];
+
+  scripts = [ "crip" "editcomment" "editfilenames" ];
+
+  installPhase = ''
+    mkdir -p $out/bin/
+
+    for script in ${escapeShellArgs scripts}; do
+      cp $script $out/bin/
+
+      substituteInPlace $out/bin/$script \
+        --replace '$editor = "vim";' '$editor = "${nano}/bin/nano";'
+
+      wrapProgram $out/bin/$script \
+        --set PERL5LIB "${perlPackages.makePerlPath [ perlPackages.CDDB_get ]}" \
+        --set PATH "${toolDeps}"
+    done
+  '';
+
+  meta = {
+    homepage = "http://bach.dynet.com/crip/";
+    description = "Terminal-based ripper/encoder/tagger tool for creating Ogg Vorbis/FLAC files";
+    license = stdenv.lib.licenses.gpl1;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ maintainers.endgame ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/csa/default.nix b/nixpkgs/pkgs/applications/audio/csa/default.nix
new file mode 100644
index 000000000000..756c21892fb2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/csa/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "csa";
+  version = "0.5.100810";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/csa/${pname}-${version}.tar.gz";
+    sha256 = "1syg81dzdil0dyx1mlx1n7if3qsf2iz243p2zv34a1acfqm509r3";
+  };
+
+  # after running either cellular leveler mono or stereo, the other stops working,
+  # so we remove one of them:
+  postInstall = "rm $out/lib/ladspa/celllm_3890.*";
+
+  meta = with stdenv.lib; {
+    homepage = "https://sourceforge.net/projects/csa/";
+    description = "A group of LADSPA Audio plugins for FM broadcast and more";
+    longDescription = ''
+      CSA means : Contrôle Signal Audio.
+      It contains the following plugins:
+      Emphazised Limiter, Cellular Leveler, Simple right/left amplifier. Blind Peak Meter.
+    '';
+    license = licenses.gpl3;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/csound/csound-manual/default.nix b/nixpkgs/pkgs/applications/audio/csound/csound-manual/default.nix
new file mode 100644
index 000000000000..5cc8d71383b7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/csound/csound-manual/default.nix
@@ -0,0 +1,44 @@
+{
+  stdenv, fetchFromGitHub, docbook_xsl,
+  docbook_xml_dtd_45, python, pygments,
+  libxslt
+}:
+
+stdenv.mkDerivation {
+  pname = "csound-manual";
+  version = "unstable-2019-02-22";
+
+  src = fetchFromGitHub {
+    owner = "csound";
+    repo = "manual";
+    rev = "3b0bdc83f9245261b4b85a57c3ed636d5d924a4f";
+    sha256 = "074byjhaxraapyg54dxgg7hi1d4978aa9c1rmyi50p970nsxnacn";
+  };
+
+  prePatch = ''
+    substituteInPlace manual.xml \
+      --replace "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" \
+                "${docbook_xml_dtd_45}/xml/dtd/docbook/docbookx.dtd"
+  '';
+
+  nativeBuildInputs = [ libxslt.bin ];
+
+  buildInputs = [ docbook_xsl python pygments ];
+
+  buildPhase = ''
+    make XSL_BASE_PATH=${docbook_xsl}/share/xml/docbook-xsl html-dist
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/doc/csound
+    cp -r ./html $out/share/doc/csound
+  '';
+
+  meta = {
+    description = "The Csound Canonical Reference Manual";
+    homepage = "https://github.com/csound/manual";
+    license = stdenv.lib.licenses.fdl12Plus;
+    maintainers = [ stdenv.lib.maintainers.hlolli ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/csound/csound-qt/default.nix b/nixpkgs/pkgs/applications/audio/csound/csound-qt/default.nix
new file mode 100644
index 000000000000..895609d3c023
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/csound/csound-qt/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, csound, desktop-file-utils,
+  fetchFromGitHub, python, python-qt, qmake,
+  qtwebengine, qtxmlpatterns, rtmidi, fetchpatch }:
+
+stdenv.mkDerivation rec {
+  pname = "csound-qt";
+  version = "0.9.6-beta3";
+
+  src = fetchFromGitHub {
+    owner = "CsoundQt";
+    repo = "CsoundQt";
+    rev = version;
+    sha256 = "007jhkh0k6qk52r77i067999dwdiimazix6ggp2hvyc4pj6n5dip";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "examplepath.patch";
+      url = "https://github.com/CsoundQt/CsoundQt/commit/09f2d515bff638cbcacb450979d66e273a59fdec.diff";
+      sha256 = "0y23kf8m1mh9mklsvf908b2b8m2w2rji8qvws44paf1kpwnwdmgm";
+    })
+    ./rtmidipath.patch
+  ];
+
+  nativeBuildInputs = [ qmake qtwebengine qtxmlpatterns ];
+
+  buildInputs = [ csound desktop-file-utils rtmidi ];
+
+  qmakeFlags = [ "qcs.pro" "CONFIG+=rtmidi" "CONFIG+=pythonqt"
+                 "CONFIG+=record_support" "CONFIG+=html_webengine"
+                 "CSOUND_INCLUDE_DIR=${csound}/include/csound"
+                 "CSOUND_LIBRARY_DIR=${csound}/lib"
+                 "RTMIDI_DIR=${rtmidi.src}"
+                 "PYTHONQT_SRC_DIR=${python-qt}/include/PythonQt"
+                 "PYTHONQT_LIB_DIR=${python-qt}/lib"
+                 "LIBS+=-L${python-qt}/lib"
+                 "INCLUDEPATH+=${python-qt}/include/PythonQt"
+                 "INCLUDEPATH+=${python}/include/python2.7"
+                 "INSTALL_DIR=${placeholder "out"}"
+                 "SHARE_DIR=${placeholder "out"}/share"
+                 ];
+
+  meta = with stdenv.lib; {
+    description = "CsoundQt is a frontend for Csound with editor, integrated help, widgets and other features.";
+    homepage = "https://csoundqt.github.io/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ hlolli ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/csound/csound-qt/rtmidipath.patch b/nixpkgs/pkgs/applications/audio/csound/csound-qt/rtmidipath.patch
new file mode 100644
index 000000000000..4cbab8a128fc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/csound/csound-qt/rtmidipath.patch
@@ -0,0 +1,17 @@
+diff --git a/src/src.pri b/src/src.pri
+index e5e0c896..9a9fa513 100644
+--- a/src/src.pri
++++ b/src/src.pri
+@@ -155,9 +155,9 @@ pythonqt {
+         "src/pyqcsobject.cpp"

+ }

+ rtmidi {

+-    HEADERS += "src/../$${RTMIDI_DIR}/RtMidi.h"

+-    SOURCES += "src/../$${RTMIDI_DIR}/RtMidi.cpp"

+-    INCLUDEPATH += src/../$${RTMIDI_DIR}

++    HEADERS += "$${RTMIDI_DIR}/RtMidi.h"

++    SOURCES += "$${RTMIDI_DIR}/RtMidi.cpp"

++    INCLUDEPATH += $${RTMIDI_DIR}

+ }

+ 

+ perfThread_build {

diff --git a/nixpkgs/pkgs/applications/audio/csound/default.nix b/nixpkgs/pkgs/applications/audio/csound/default.nix
new file mode 100644
index 000000000000..4b426609fea4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/csound/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchFromGitHub, cmake, libsndfile, libsamplerate, flex, bison, boost, gettext
+, alsaLib ? null
+, libpulseaudio ? null
+, libjack2 ? null
+, liblo ? null
+, ladspa-sdk ? null
+, fluidsynth ? null
+# , gmm ? null  # opcodes don't build with gmm 5.1
+, eigen ? null
+, curl ? null
+, tcltk ? null
+, fltk ? null
+}:
+
+stdenv.mkDerivation rec {
+  pname = "csound";
+  # When updating, please check if https://github.com/csound/csound/issues/1078
+  # has been fixed in the new version so we can use the normal fluidsynth
+  # version and remove fluidsynth 1.x from nixpkgs again.
+  version = "6.13.0";
+
+  enableParallelBuilding = true;
+
+  hardeningDisable = [ "format" ];
+
+  src = fetchFromGitHub {
+    owner = "csound";
+    repo = "csound";
+    rev = version;
+    sha256 = "14822ybqyp31z18gky2y9zadr9dkbhabg97y139py73w7v3af1bh";
+  };
+
+  cmakeFlags = [ "-DBUILD_CSOUND_AC=0" ] # fails to find Score.hpp
+    ++ stdenv.lib.optional (libjack2 != null) "-DJACK_HEADER=${libjack2}/include/jack/jack.h";
+
+  nativeBuildInputs = [ cmake flex bison gettext ];
+  buildInputs = [ libsndfile libsamplerate boost ]
+    ++ builtins.filter (optional: optional != null) [
+      alsaLib libpulseaudio libjack2
+      liblo ladspa-sdk fluidsynth eigen
+      curl tcltk fltk ];
+
+  meta = with stdenv.lib; {
+    description = "Sound design, audio synthesis, and signal processing system, providing facilities for music composition and performance on all major operating systems and platforms";
+    homepage = "http://www.csounds.com/";
+    license = licenses.gpl2;
+    maintainers = [maintainers.marcweber];
+    platforms = platforms.linux;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/audio/curseradio/default.nix b/nixpkgs/pkgs/applications/audio/curseradio/default.nix
new file mode 100644
index 000000000000..1dd5f9ee5eb2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/curseradio/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, substituteAll, python3Packages, mpv }:
+
+python3Packages.buildPythonApplication rec {
+  version = "0.2";
+  pname = "curseradio";
+
+  src = fetchFromGitHub {
+    owner = "chronitis";
+    repo = pname;
+    rev = "1bd4bd0faeec675e0647bac9a100b526cba19f8d";
+    sha256 = "11bf0jnj8h2fxhpdp498189r4s6b47vy4wripv0z4nx7lxajl88i";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    requests
+    lxml
+    pyxdg
+  ];
+
+  patches = [
+    (substituteAll {
+      src = ./mpv.patch;
+      inherit mpv;
+    })
+  ];
+
+  # No tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Command line radio player";
+    homepage = "https://github.com/chronitis/curseradio";
+    license = licenses.mit;
+    maintainers = [ maintainers.eyjhb ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/curseradio/mpv.patch b/nixpkgs/pkgs/applications/audio/curseradio/mpv.patch
new file mode 100644
index 000000000000..d085dc791099
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/curseradio/mpv.patch
@@ -0,0 +1,11 @@
+--- a/curseradio/curseradio.py
++++ b/curseradio/curseradio.py
+@@ -30,7 +30,7 @@ import re
+ 
+ CONFIG_DEFAULT = {
+     'opml': {'root': "http://opml.radiotime.com/"},
+-    'playback': {'command': '/usr/bin/mpv'},
++    'playback': {'command': '@mpv@/bin/mpv'},
+     'interface': {'keymap': 'default'},
+     'keymap.default': {
+         'up': 'KEY_UP',
diff --git a/nixpkgs/pkgs/applications/audio/deadbeef/default.nix b/nixpkgs/pkgs/applications/audio/deadbeef/default.nix
new file mode 100644
index 000000000000..c88b884444ef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/deadbeef/default.nix
@@ -0,0 +1,117 @@
+{ config, stdenv, fetchFromGitHub
+, autoconf
+, automake
+, libtool
+, intltool
+, pkgconfig
+, jansson
+# deadbeef can use either gtk2 or gtk3
+, gtk2Support ? false, gtk2 ? null
+, gtk3Support ? true, gtk3 ? null, gsettings-desktop-schemas ? null, wrapGAppsHook ? null
+# input plugins
+, vorbisSupport ? true, libvorbis ? null
+, mp123Support ? true, libmad ? null
+, flacSupport ? true, flac ? null
+, wavSupport ? true, libsndfile ? null
+, cdaSupport ? true, libcdio ? null, libcddb ? null
+, aacSupport ? true, faad2 ? null
+, opusSupport ? true, opusfile ? null
+, wavpackSupport ? false, wavpack ? null
+, ffmpegSupport ? false, ffmpeg_3 ? null
+, apeSupport ? true, yasm ? null
+# misc plugins
+, zipSupport ? true, libzip ? null
+, artworkSupport ? true, imlib2 ? null
+, hotkeysSupport ? true, libX11 ? null
+, osdSupport ? true, dbus ? null
+# output plugins
+, alsaSupport ? true, alsaLib ? null
+, pulseSupport ? config.pulseaudio or stdenv.isLinux, libpulseaudio ? null
+# effect plugins
+, resamplerSupport ? true, libsamplerate ? null
+, overloadSupport ? true, zlib ? null
+# transports
+, remoteSupport ? true, curl ? null
+}:
+
+assert gtk2Support || gtk3Support;
+assert gtk2Support -> gtk2 != null;
+assert gtk3Support -> gtk3 != null && gsettings-desktop-schemas != null && wrapGAppsHook != null;
+assert vorbisSupport -> libvorbis != null;
+assert mp123Support -> libmad != null;
+assert flacSupport -> flac != null;
+assert wavSupport -> libsndfile != null;
+assert cdaSupport -> (libcdio != null && libcddb != null);
+assert aacSupport -> faad2 != null;
+assert opusSupport -> opusfile != null;
+assert zipSupport -> libzip != null;
+assert ffmpegSupport -> ffmpeg_3 != null;
+assert apeSupport -> yasm != null;
+assert artworkSupport -> imlib2 != null;
+assert hotkeysSupport -> libX11 != null;
+assert osdSupport -> dbus != null;
+assert alsaSupport -> alsaLib != null;
+assert pulseSupport -> libpulseaudio != null;
+assert resamplerSupport -> libsamplerate != null;
+assert overloadSupport -> zlib != null;
+assert wavpackSupport -> wavpack != null;
+assert remoteSupport -> curl != null;
+
+stdenv.mkDerivation rec {
+  pname = "deadbeef";
+  version = "1.8.3";
+
+  src = fetchFromGitHub {
+    owner = "DeaDBeeF-Player";
+    repo = "deadbeef";
+    rev = version;
+    sha256 = "0n0q7zfl56gnadcqqp5rg7sbh1xvfcmp7cvmh2ax07037b346qig";
+  };
+
+  buildInputs = with stdenv.lib; [ jansson ]
+    ++ optional gtk2Support gtk2
+    ++ optionals gtk3Support [ gtk3 gsettings-desktop-schemas ]
+    ++ optional vorbisSupport libvorbis
+    ++ optional mp123Support libmad
+    ++ optional flacSupport flac
+    ++ optional wavSupport libsndfile
+    ++ optionals cdaSupport [ libcdio libcddb ]
+    ++ optional aacSupport faad2
+    ++ optional opusSupport opusfile
+    ++ optional zipSupport libzip
+    ++ optional ffmpegSupport ffmpeg_3
+    ++ optional apeSupport yasm
+    ++ optional artworkSupport imlib2
+    ++ optional hotkeysSupport libX11
+    ++ optional osdSupport dbus
+    ++ optional alsaSupport alsaLib
+    ++ optional pulseSupport libpulseaudio
+    ++ optional resamplerSupport libsamplerate
+    ++ optional overloadSupport zlib
+    ++ optional wavpackSupport wavpack
+    ++ optional remoteSupport curl
+    ;
+
+  nativeBuildInputs = [
+    autoconf
+    automake
+    intltool
+    libtool
+    pkgconfig
+  ] ++ stdenv.lib.optional gtk3Support wrapGAppsHook;
+
+  enableParallelBuilding = true;
+
+  preConfigure = ''
+    ./autogen.sh
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Ultimate Music Player for GNU/Linux";
+    homepage = "http://deadbeef.sourceforge.net/";
+    license = licenses.gpl2;
+    platforms = [ "x86_64-linux" "i686-linux" ];
+    maintainers = [ maintainers.abbradar ];
+    repositories.git = "https://github.com/Alexey-Yakovenko/deadbeef";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/deadbeef/plugins/headerbar-gtk3.nix b/nixpkgs/pkgs/applications/audio/deadbeef/plugins/headerbar-gtk3.nix
new file mode 100644
index 000000000000..337d570a9353
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/deadbeef/plugins/headerbar-gtk3.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, autoconf, automake, libtool, pkgconfig, libxml2, deadbeef, glib, gtk3 }:
+
+stdenv.mkDerivation rec {
+  pname = "deadbeef-headerbar-gtk3-plugin";
+  version = "1.2";
+
+  src = fetchFromGitHub {
+    owner = "saivert";
+    repo = "ddb_misc_headerbar_GTK3";
+    rev = "v${version}";
+    sha256 = "1v1schvnps7ypjqgcbqi74a45w8r2gbhrawz7filym22h1qr9wn0";
+  };
+
+  nativeBuildInputs = [ autoconf automake libtool pkgconfig libxml2 ];
+  buildInputs = [ deadbeef glib gtk3 ];
+
+  # Choose correct installation path
+  # https://github.com/saivert/ddb_misc_headerbar_GTK3/commit/50ff75f76aa9d40761e352311670a894bfcd5cf6#r30319680
+  makeFlags = [ "pkglibdir=$(out)/lib/deadbeef" ];
+
+  preConfigure = "./autogen.sh";
+
+  meta = with stdenv.lib; {
+    description = "Plug-in that adds GTK 3 header bar to the DeaDBeeF music player";
+    homepage = "https://github.com/saivert/ddb_misc_headerbar_GTK3";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.jtojnar ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/deadbeef/plugins/infobar.nix b/nixpkgs/pkgs/applications/audio/deadbeef/plugins/infobar.nix
new file mode 100644
index 000000000000..294d3a0ad8bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/deadbeef/plugins/infobar.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, pkgconfig, deadbeef, gtk3, libxml2 }:
+
+stdenv.mkDerivation rec {
+  pname = "deadbeef-infobar-plugin";
+  version = "1.4";
+
+  src = fetchurl {
+    url = "https://bitbucket.org/dsimbiriatin/deadbeef-infobar/downloads/deadbeef-infobar-${version}.tar.gz";
+    sha256 = "0c9wh3wh1hdww7v96i8cy797la06mylhfi0880k8vwh88079aapf";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ deadbeef gtk3 libxml2 ];
+
+  buildFlags = [ "gtk3" ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/lib/deadbeef
+    cp gtk3/ddb_infobar_gtk3.so $out/lib/deadbeef
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    broken = true; # crashes DeaDBeeF and is abandoned (https://bitbucket.org/dsimbiriatin/deadbeef-infobar/issues/38/infobar-causes-deadbeef-180-to-crash)
+    description = "DeaDBeeF Infobar Plugin";
+    homepage = "https://bitbucket.org/dsimbiriatin/deadbeef-infobar";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.jtojnar ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/deadbeef/plugins/lyricbar.nix b/nixpkgs/pkgs/applications/audio/deadbeef/plugins/lyricbar.nix
new file mode 100644
index 000000000000..699f9d86f68d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/deadbeef/plugins/lyricbar.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, pkgconfig, deadbeef, gtkmm3, libxmlxx3 }:
+
+stdenv.mkDerivation {
+  pname = "deadbeef-lyricbar-plugin";
+  version = "unstable-2019-01-29";
+
+  src = fetchFromGitHub {
+    owner = "C0rn3j";
+    repo = "deadbeef-lyricbar";
+    rev = "8f99b92ef827c451c43fc7dff38ae4f15c355e8e";
+    sha256 = "108hx5530f4xm8p9m2bk79nq7jkhcj39ad3vmxb2y6h6l2zv5kwl";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ deadbeef gtkmm3 libxmlxx3 ];
+
+  buildFlags = [ "gtk3" ];
+
+  meta = with stdenv.lib; {
+    description = "Plugin for DeaDBeeF audio player that fetches and shows the song’s lyrics";
+    homepage = "https://github.com/C0rn3j/deadbeef-lyricbar";
+    license = licenses.mit;
+    maintainers = [ maintainers.jtojnar ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/deadbeef/plugins/mpris2.nix b/nixpkgs/pkgs/applications/audio/deadbeef/plugins/mpris2.nix
new file mode 100644
index 000000000000..95606a869b7f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/deadbeef/plugins/mpris2.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, pkgconfig, deadbeef, glib }:
+
+stdenv.mkDerivation rec {
+  pname = "deadbeef-mpris2-plugin";
+  version = "1.12";
+
+  src = fetchurl {
+    url = "https://github.com/Serranya/deadbeef-mpris2-plugin/releases/download/v${version}/${pname}-${version}.tar.xz";
+    sha256 = "0s3y4ka4qf38cypc0xspy79q0g5y1kqx6ldad7yr6a45nw6j95jh";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ deadbeef glib ];
+
+  meta = with stdenv.lib; {
+    description = "MPRISv2 plugin for the DeaDBeeF music player";
+    homepage = "https://github.com/Serranya/deadbeef-mpris2-plugin/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/deadbeef/wrapper.nix b/nixpkgs/pkgs/applications/audio/deadbeef/wrapper.nix
new file mode 100644
index 000000000000..cd45ef5926b0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/deadbeef/wrapper.nix
@@ -0,0 +1,14 @@
+{ symlinkJoin, deadbeef, makeWrapper, plugins }:
+
+symlinkJoin {
+  name = "deadbeef-with-plugins-${deadbeef.version}";
+
+  paths = [ deadbeef ] ++ plugins;
+
+  buildInputs = [ makeWrapper ];
+
+  postBuild = ''
+    wrapProgram $out/bin/deadbeef \
+      --set DEADBEEF_PLUGIN_DIR "$out/lib/deadbeef"
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/audio/denemo/default.nix b/nixpkgs/pkgs/applications/audio/denemo/default.nix
new file mode 100644
index 000000000000..313c7cbfd42f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/denemo/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, pkgconfig
+, libjack2, gettext, intltool, guile_2_0, lilypond
+, glib, libxml2, librsvg, libsndfile, aubio
+, gtk3, gtksourceview, evince, fluidsynth, rubberband
+, portaudio, portmidi, fftw, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "denemo";
+  version = "2.4.0";
+
+  src = fetchurl {
+    url = "https://ftp.gnu.org/gnu/denemo/denemo-${version}.tar.gz";
+    sha256 = "145kq0zfgdadykl3i6na221i4s5wzdrcqq48amzyfarnrqk2rmpd";
+  };
+
+  buildInputs = [
+    libjack2 guile_2_0 lilypond glib libxml2 librsvg libsndfile
+    aubio gtk3 gtksourceview evince fluidsynth rubberband portaudio fftw portmidi
+  ];
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      --prefix PATH : "${lilypond}/bin"
+    )
+  '';
+
+  nativeBuildInputs = [
+    wrapGAppsHook
+    intltool
+    gettext
+    pkgconfig
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Music notation and composition software used with lilypond";
+    homepage = "http://denemo.org";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.olynch ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/dfasma/default.nix b/nixpkgs/pkgs/applications/audio/dfasma/default.nix
new file mode 100644
index 000000000000..6df4679d1d5f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/dfasma/default.nix
@@ -0,0 +1,66 @@
+{ mkDerivation, stdenv, fetchFromGitHub, fftw, libsndfile, qtbase, qtmultimedia, qmake }:
+
+let
+
+  reaperFork = {
+    src = fetchFromGitHub {
+      sha256 = "07m2wf2gqyya95b65gawrnr4pvc9jyzmg6h8sinzgxlpskz93wwc";
+      rev = "39053e8896eedd7b3e8a9e9a9ffd80f1fc6ceb16";
+      repo = "REAPER";
+      owner = "gillesdegottex";
+    };
+    meta = with stdenv.lib; {
+     license = licenses.asl20;
+    };
+  };
+
+  libqaudioextra = {
+    src = fetchFromGitHub {
+      sha256 = "0m6x1qm7lbjplqasr2jhnd2ndi0y6z9ybbiiixnlwfm23sp15wci";
+      rev = "9ae051989a8fed0b2f8194b1501151909a821a89";
+      repo = "libqaudioextra";
+      owner = "gillesdegottex";
+    };
+    meta = with stdenv.lib; {
+     license = licenses.gpl3Plus;
+    };
+  };
+
+in mkDerivation rec {
+  pname = "dfasma";
+  version = "1.4.5";
+
+  src = fetchFromGitHub {
+    sha256 = "09fcyjm0hg3y51fnjax88m93im39nbynxj79ffdknsazmqw9ac0h";
+    rev = "v${version}";
+    repo = "dfasma";
+    owner = "gillesdegottex";
+  };
+
+  buildInputs = [ fftw libsndfile qtbase qtmultimedia ];
+
+  nativeBuildInputs = [ qmake ];
+
+  postPatch = ''
+    cp -Rv "${reaperFork.src}"/* external/REAPER
+    cp -Rv "${libqaudioextra.src}"/* external/libqaudioextra
+    substituteInPlace dfasma.pro --replace "CONFIG += file_sdif" "";
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Analyse and compare audio files in time and frequency";
+    longDescription = ''
+      DFasma is free open-source software to compare audio files by time and
+      frequency. The comparison is first visual, using wavforms and spectra. It
+      is also possible to listen to time-frequency segments in order to allow
+      perceptual comparison. It is basically dedicated to analysis. Even though
+      there are basic functionalities to align the signals in time and
+      amplitude, this software does not aim to be an audio editor.
+    '';
+    homepage = "http://gillesdegottex.github.io/dfasma/";
+    license = [ licenses.gpl3Plus reaperFork.meta.license ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/dirt/default.nix b/nixpkgs/pkgs/applications/audio/dirt/default.nix
new file mode 100644
index 000000000000..5e0cf3616fe5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/dirt/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, libsndfile, libsamplerate, liblo, libjack2 }:
+
+stdenv.mkDerivation {
+  name = "dirt-2018-01-01";
+  src = fetchFromGitHub {
+    repo = "Dirt";
+    owner = "tidalcycles";
+    rev = "b09604c7d8e581bc7799d7e2ad293e7cdd254bda";
+    sha256 = "13adglk2d31d7mswfvi02b0rjdhzmsv11cc8smhidmrns3f9s96n";
+    fetchSubmodules = true;
+  };
+  buildInputs = [ libsndfile libsamplerate liblo libjack2 ];
+  postPatch = ''
+    sed -i "s|./samples|$out/share/dirt/samples|" dirt.c
+  '';
+  makeFlags = ["PREFIX=$(out)"];
+  postInstall = ''
+    mkdir -p $out/share/dirt/
+    cp -r samples $out/share/dirt/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An unimpressive thingie for playing bits of samples with some level of accuracy";
+    homepage = "https://github.com/tidalcycles/Dirt";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ anderspapitto ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/distrho/default.nix b/nixpkgs/pkgs/applications/audio/distrho/default.nix
new file mode 100644
index 000000000000..0f651f47a488
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/distrho/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, fetchFromGitHub, alsaLib, fftwSinglePrec, freetype, libjack2
+, pkgconfig, ladspa-sdk, premake3
+, libX11, libXcomposite, libXcursor, libXext, libXinerama, libXrender
+}:
+
+let
+  premakeos = if stdenv.hostPlatform.isDarwin then "osx"
+              else if stdenv.hostPlatform.isWindows then "mingw"
+              else "linux";
+in stdenv.mkDerivation rec {
+  pname = "distrho-ports";
+  version = "unstable-2019-10-09";
+
+  src = fetchFromGitHub {
+    owner = "DISTRHO";
+    repo = "DISTRHO-Ports";
+    rev = "7e62235e809e59770d0d91d2c48c3f50ce7c027a";
+    sha256 = "10hpsjcmk0cgcsic9r1wxyja9x6q9wb8w8254dlrnzyswl54r1f8";
+  };
+
+  configurePhase = ''
+    runHook preConfigure
+
+    sh ./scripts/premake-update.sh ${premakeos}
+
+    runHook postConfigure
+  '';
+
+  postPatch = ''
+    sed -e "s#@./scripts#sh scripts#" -i Makefile
+  '';
+
+  nativeBuildInputs = [ pkgconfig premake3 ];
+  buildInputs = [
+    alsaLib fftwSinglePrec freetype libjack2
+    libX11 libXcomposite libXcursor libXext
+    libXinerama libXrender ladspa-sdk
+  ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://distrho.sourceforge.net";
+    description = "A collection of cross-platform audio effects and plugins";
+    longDescription = ''
+      Includes:
+      Dexed drowaudio-distortion drowaudio-distortionshaper drowaudio-flanger
+      drowaudio-reverb drowaudio-tremolo drumsynth EasySSP eqinox HiReSam
+      JuceDemoPlugin KlangFalter LUFSMeter LUFSMeterMulti Luftikus Obxd
+      PitchedDelay ReFine StereoSourceSeparation TAL-Dub-3 TAL-Filter
+      TAL-Filter-2 TAL-NoiseMaker TAL-Reverb TAL-Reverb-2 TAL-Reverb-3
+      TAL-Vocoder-2 TheFunction ThePilgrim Vex Wolpertinger
+    '';
+    license = with licenses; [ gpl2 gpl3 gpl2Plus lgpl3 mit ];
+    maintainers = [ maintainers.goibhniu ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/dr14_tmeter/default.nix b/nixpkgs/pkgs/applications/audio/dr14_tmeter/default.nix
new file mode 100644
index 000000000000..272701b36804
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/dr14_tmeter/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, python3Packages, pkgs }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "dr14_tmeter";
+  version = "1.0.16";
+
+  disabled = !python3Packages.isPy3k;
+
+  src = fetchFromGitHub {
+    owner = "simon-r";
+    repo = "dr14_t.meter";
+    rev = "v${version}";
+    sha256 = "1nfsasi7kx0myxkahbd7rz8796mcf5nsadrsjjpx2kgaaw5nkv1m";
+  };
+
+  propagatedBuildInputs = with pkgs; [
+    python3Packages.numpy flac vorbis-tools ffmpeg_3 faad2 lame
+  ];
+
+  # There are no tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Compute the DR14 of a given audio file according to the procedure described by the Pleasurize Music Foundation";
+    license = licenses.gpl3Plus;
+    homepage = "http://dr14tmeter.sourceforge.net/";
+    maintainers = [ maintainers.adisbladis ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/dragonfly-reverb/default.nix b/nixpkgs/pkgs/applications/audio/dragonfly-reverb/default.nix
new file mode 100644
index 000000000000..b42929ff2040
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/dragonfly-reverb/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, libjack2, libGL, pkgconfig, xorg }:
+
+stdenv.mkDerivation rec {
+  pname = "dragonfly-reverb";
+  version = "3.1.1";
+
+  src = fetchFromGitHub {
+    owner = "michaelwillis";
+    repo = "dragonfly-reverb";
+    rev = version;
+    sha256 = "188cm45hr0i33m4h2irql1wrsmsfis65s706wjiid0z59q47rf9p";
+    fetchSubmodules = true;
+  };
+
+  patchPhase = ''
+    patchShebangs dpf/utils/generate-ttl.sh
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    libjack2 xorg.libX11 libGL
+  ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mkdir -p $out/lib/lv2/
+    mkdir -p $out/lib/vst/
+    cd bin
+    for bin in DragonflyEarlyReflections DragonflyPlateReverb DragonflyHallReverb DragonflyRoomReverb; do
+      cp -a $bin        $out/bin/
+      cp -a $bin-vst.so $out/lib/vst/
+      cp -a $bin.lv2/   $out/lib/lv2/ ;
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/michaelwillis/dragonfly-reverb";
+    description = "A hall-style reverb based on freeverb3 algorithms";
+    maintainers = [ maintainers.magnetophon ];
+    license = licenses.gpl3;
+    platforms = ["x86_64-linux"];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/drumgizmo/default.nix b/nixpkgs/pkgs/applications/audio/drumgizmo/default.nix
new file mode 100644
index 000000000000..9e24c4a1c295
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/drumgizmo/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, fetchpatch, alsaLib, expat, glib, libjack2, libXext, libX11, libpng
+, libpthreadstubs, libsmf, libsndfile, lv2, pkgconfig, zita-resampler
+}:
+
+stdenv.mkDerivation rec {
+  version = "0.9.18.1";
+  pname = "drumgizmo";
+
+  src = fetchurl {
+    url = "https://www.drumgizmo.org/releases/${pname}-${version}/${pname}-${version}.tar.gz";
+    sha256 = "0bpbkzcr3znbwfdk79c14n5k5hh80iqlk2nc03q95vhimbadk8k7";
+  };
+
+  patches = [
+    # Fix build for lv2 1.18.0
+    (fetchpatch {
+      url = "http://cgit.drumgizmo.org/plugingizmo.git/patch/?id=be64ddf9da525cd5c6757464efc966052731ba71";
+      sha256 = "17w8g78i5avssc7m8rpw64ka3rai8dff81wfzir9cpxp8s2h44qf";
+      extraPrefix = "plugin/plugingizmo/";
+      stripLen = 1;
+    })
+  ];
+
+  configureFlags = [ "--enable-lv2" ];
+
+  buildInputs = [
+    alsaLib expat glib libjack2 libXext libX11 libpng libpthreadstubs
+    libsmf libsndfile lv2 pkgconfig zita-resampler
+  ];
+
+  meta = with stdenv.lib; {
+    description = "An LV2 sample based drum plugin";
+    homepage = "https://www.drumgizmo.org";
+    license = licenses.lgpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.goibhniu maintainers.nico202 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/drumkv1/default.nix b/nixpkgs/pkgs/applications/audio/drumkv1/default.nix
new file mode 100644
index 000000000000..04277badfbe9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/drumkv1/default.nix
@@ -0,0 +1,23 @@
+{ mkDerivation, lib, fetchurl, pkgconfig, libjack2, alsaLib, libsndfile, liblo, lv2, qt5 }:
+
+mkDerivation rec {
+  pname = "drumkv1";
+  version = "0.9.14";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/drumkv1/${pname}-${version}.tar.gz";
+    sha256 = "0fr7pkp55zvjxf7p22drs93fsjgvqhbd55vxi0srhp2s2wzz5qak";
+  };
+
+  buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = with lib; {
+    description = "An old-school drum-kit sampler synthesizer with stereo fx";
+    homepage = "http://drumkv1.sourceforge.net/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.goibhniu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/easytag/default.nix b/nixpkgs/pkgs/applications/audio/easytag/default.nix
new file mode 100644
index 000000000000..3f294342da70
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/easytag/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gtk3, glib, libid3tag, id3lib, taglib
+, libvorbis, libogg, opusfile, flac, itstool, libxml2, gsettings-desktop-schemas
+, gnome3, wrapGAppsHook
+}:
+
+let
+  pname = "easytag";
+  version = "2.4.3";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
+    sha256 = "1mbxnqrw1fwcgraa1bgik25vdzvf97vma5pzknbwbqq5ly9fwlgw";
+  };
+
+  NIX_LDFLAGS = "-lid3tag -lz";
+
+  nativeBuildInputs = [ pkgconfig intltool itstool libxml2 wrapGAppsHook ];
+  buildInputs = [
+    gtk3 glib libid3tag id3lib taglib libvorbis libogg opusfile flac
+    gsettings-desktop-schemas gnome3.adwaita-icon-theme
+  ];
+
+  doCheck = false; # fails 1 out of 9 tests
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      versionPolicy = "none";
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "View and edit tags for various audio files";
+    homepage = "https://wiki.gnome.org/Apps/EasyTAG";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ecasound/default.nix b/nixpkgs/pkgs/applications/audio/ecasound/default.nix
new file mode 100644
index 000000000000..13c48fc12af3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ecasound/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, fetchurl
+, alsaLib
+, audiofile
+, libjack2
+, liblo
+, liboil
+, libsamplerate
+, libsndfile
+, lilv
+, lv2
+}:
+
+# TODO: fix readline, ncurses, lilv, liblo, liboil and python. See configure log.
+
+stdenv.mkDerivation rec {
+  pname = "ecasound";
+  version = "2.9.3";
+
+  src = fetchurl {
+    url = "https://ecasound.seul.org/download/ecasound-${version}.tar.gz";
+    sha256 = "1m7njfjdb7sqf0lhgc4swihgdr4snkg8v02wcly08wb5ar2fr2s6";
+  };
+
+  buildInputs = [ alsaLib audiofile libjack2 liblo liboil libsamplerate libsndfile lilv lv2 ];
+
+  meta = {
+    description = "Ecasound is a software package designed for multitrack audio processing";
+    license = with stdenv.lib.licenses;  [ gpl2 lgpl21 ];
+    homepage = "http://nosignal.fi/ecasound/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/eflite/default.nix b/nixpkgs/pkgs/applications/audio/eflite/default.nix
new file mode 100644
index 000000000000..f9a579512cab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/eflite/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchurl, fetchpatch, flite, alsaLib, debug ? false }:
+
+stdenv.mkDerivation rec {
+  pname = "eflite";
+  version = "0.4.1";
+
+  src = fetchurl {
+    url = "https://sourceforge.net/projects/eflite/files/eflite/${version}/${pname}-${version}.tar.gz";
+    sha256 = "088p9w816s02s64grfs28gai3lnibzdjb9d1jwxzr8smbs2qbbci";
+  };
+
+  buildInputs = [ flite alsaLib ];
+
+  configureFlags = [
+    "flite_dir=${flite}"
+    "--with-audio=alsa"
+    "--with-vox=cmu_us_kal16"
+  ];
+
+  patches = [
+    (fetchpatch {
+      url = "https://sources.debian.org/data/main/e/eflite/0.4.1-8/debian/patches/cvs-update";
+      sha256 = "0r631vzmky7b7qyhm152557y4fr0xqrpi3y4w66fcn6p4rj03j05";
+    })
+    (fetchpatch {
+      url = "https://sources.debian.org/data/main/e/eflite/0.4.1-8/debian/patches/buf-overflow";
+      sha256 = "071qk133kb7n7bq6kxgh3p9bba6hcl1ixsn4lx8vp8klijgrvkmx";
+    })
+    (fetchpatch {
+      url = "https://sources.debian.org/data/main/e/eflite/0.4.1-8/debian/patches/link";
+      sha256 = "0p833dp4pdsya72bwh3syvkq85927pm6snxvx13lvcppisbhj0fc";
+    })
+    ./format.patch
+  ];
+
+  CFLAGS = stdenv.lib.optionalString debug " -DDEBUG=2";
+
+  meta = {
+    homepage = "http://eflite.sourceforge.net";
+    description = "EFlite is a speech server for screen readers";
+    longDescription = ''
+      EFlite is a speech server for Emacspeak and other screen
+      readers that allows them to interface with Festival Lite,
+      a free text-to-speech engine developed at the CMU Speech
+      Center as an off-shoot of Festival.
+    '';
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = with stdenv.lib.maintainers; [ jhhuh ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/eflite/format.patch b/nixpkgs/pkgs/applications/audio/eflite/format.patch
new file mode 100644
index 000000000000..d1a81aac4801
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/eflite/format.patch
@@ -0,0 +1,11 @@
+--- eflite-0.4.1.orig/es.c	2017-03-02 14:38:36.009731423 +0100
++++ eflite-0.4.1/es.c	2017-03-02 14:39:06.285894934 +0100
+@@ -449,7 +449,7 @@
+   fclose(fp);
+   if (flags & LOG_STDERR)
+   {
+-    fprintf(stderr, buf);
++    fprintf(stderr, "%s", buf);
+     fprintf(stderr, "\n");
+   }
+ #endif
diff --git a/nixpkgs/pkgs/applications/audio/ekho/default.nix b/nixpkgs/pkgs/applications/audio/ekho/default.nix
new file mode 100644
index 000000000000..0e2c950051a5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ekho/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, pkgconfig
+, libsndfile, libpulseaudio
+}:
+
+let
+  version = "5.8.2";
+in stdenv.mkDerivation rec {
+  pname = "ekho";
+  inherit version;
+
+  meta = with stdenv.lib; {
+    description = "Chinese text-to-speech software";
+    homepage    = "http://www.eguidedog.net/ekho.php";
+    longDescription = ''
+      Ekho (余音) is a free, open source and multilingual text-to-speech (TTS)
+      software. It supports Cantonese (Chinese dialect spoken in Hong Kong and
+      part of Guangdong province), Mandarin (standard Chinese), Zhaoan Hakka
+      (a dialect in Taiwan), Tibetan, Ngangien (an ancient Chinese before
+      Yuan Dynasty) and Korean (in trial).
+    '';
+    license        = licenses.gpl2Plus;
+    platforms      = platforms.linux;
+    hydraPlatforms = [];
+  };
+
+  src = fetchurl {
+    url = "mirror://sourceforge/e-guidedog/Ekho/${version}/${pname}-${version}.tar.xz";
+    sha256 = "0ym6lpcpsvwvsiwlzkl1509a2hljwcw7synngrmqjq1n49ww00nj";
+  };
+
+  preConfigure = with stdenv.lib; ''
+    NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE ${optionalString stdenv.is64bit "-D_x86_64"}"
+    NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -DEKHO_DATA_PATH=\"$out/share/ekho-data\""
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ libsndfile libpulseaudio ];
+}
diff --git a/nixpkgs/pkgs/applications/audio/ensemble-chorus/default.nix b/nixpkgs/pkgs/applications/audio/ensemble-chorus/default.nix
new file mode 100644
index 000000000000..e2413a4fe87f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ensemble-chorus/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, fltk, alsaLib, freetype, libXrandr, libXinerama, libXcursor, lv2, libjack2, cmake, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "ensemble-chorus";
+  version = "unstable-15-02-2019";
+
+  src = fetchFromGitHub {
+    owner = "jpcima";
+    repo = pname;
+    rev = "59baeb86b8851f521bc8162e22e3f15061662cc3";
+    sha256 = "0c1y10vyhrihcjvxqpqf6b52yk5yhwh813cfp6nla5ax2w88dbhr";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [
+    fltk alsaLib freetype libXrandr libXinerama libXcursor lv2 libjack2
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/jpcima/ensemble-chorus";
+    description = "Digital model of electronic string ensemble chorus";
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+    license = licenses.boost;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/eq10q/default.nix b/nixpkgs/pkgs/applications/audio/eq10q/default.nix
new file mode 100644
index 000000000000..c614b96f6385
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/eq10q/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchurl, fetchpatch, cmake, fftw, gtkmm2, libxcb, lv2, pkgconfig
+, xorg }:
+stdenv.mkDerivation rec {
+  pname = "eq10q";
+  version = "2.2";
+  src = fetchurl {
+    url = "mirror://sourceforge/project/eq10q/${pname}-${version}.tar.gz";
+    sha256 = "16mhcav8gwkp29k9ki4dlkajlcgh1i2wvldabxb046d37dq4qzrk";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ cmake fftw gtkmm2 libxcb lv2 xorg.libpthreadstubs xorg.libXdmcp xorg.libxshmfence ];
+
+  patches = [
+    (fetchpatch {
+      # glibc 2.27 compatibility
+      url = "https://sources.debian.org/data/main/e/eq10q/2.2~repack0-2.1/debian/patches/05-pow10.patch";
+      sha256 = "07b0wf6k4xqgigv4h095bzfaw8r218wa36r9w1817jcys13r6c5r";
+    })
+  ];
+
+  postPatch = ''
+     # Fix build with lv2 1.18: https://sourceforge.net/p/eq10q/bugs/23/
+     find . -type f -exec fgrep -q LV2UI_Descriptor {} \; \
+       -exec sed -i {} -e 's/const _\?LV2UI_Descriptor/const LV2UI_Descriptor/' \;
+   '';
+
+  installFlags = [ "DESTDIR=$(out)" ];
+
+  fixupPhase = ''
+    cp -r $out/var/empty/local/lib $out
+    rm -R $out/var
+  '';
+
+  meta = {
+    description = "LV2 EQ plugins and more, with 64 bit processing";
+    longDescription = ''
+      Up to 10-Bands parametric equalizer with mono and stereo versions.
+      Versatile noise-gate plugin with mono and stereo versions.
+      Compressor plugin with mono and stereo versions.
+      BassUp plugin - Enhanceing the bass guitar sound or other low frequency sounding instruments.
+      Improved high frequency response for peaking filter (in equalizers).
+      64 bits floating point internal audio processing.
+      Nice GUI with powerful metering for every plugin.
+    '';
+    homepage = "http://eq10q.sourceforge.net/";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/espeak-ng/default.nix b/nixpkgs/pkgs/applications/audio/espeak-ng/default.nix
new file mode 100644
index 000000000000..32cec811d002
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/espeak-ng/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, lib, fetchFromGitHub, autoconf, automake, which, libtool, pkgconfig
+, ronn
+, pcaudiolibSupport ? true, pcaudiolib
+, sonicSupport ? true, sonic }:
+
+stdenv.mkDerivation rec {
+  pname = "espeak-ng";
+  version = "1.50";
+
+  src = fetchFromGitHub {
+    owner = "espeak-ng";
+    repo = "espeak-ng";
+    rev = version;
+    sha256 = "0jkqhf2h94vbqq7mg7mmm23bq372fa7mdk941my18c3vkldcir1b";
+  };
+
+  nativeBuildInputs = [ autoconf automake which libtool pkgconfig ronn ];
+
+  buildInputs = lib.optional pcaudiolibSupport pcaudiolib
+             ++ lib.optional sonicSupport sonic;
+
+  preConfigure = "./autogen.sh";
+
+  postInstall = ''
+    patchelf --set-rpath "$(patchelf --print-rpath $out/bin/espeak-ng)" $out/bin/speak-ng
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Open source speech synthesizer that supports over 70 languages, based on eSpeak";
+    homepage = src.meta.homepage;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ aske ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/espeak/default.nix b/nixpkgs/pkgs/applications/audio/espeak/default.nix
new file mode 100644
index 000000000000..aa68fd5363d6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/espeak/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, unzip, portaudio }:
+
+stdenv.mkDerivation rec {
+  name = "espeak-1.48.04";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/espeak/${name}-source.zip";
+    sha256 = "0n86gwh9pw0jqqpdz7mxggllfr8k0r7pc67ayy7w5z6z79kig6mz";
+  };
+
+  buildInputs = [ unzip portaudio ];
+
+  patches = [
+    ./gcc6.patch
+  ];
+
+  prePatch = ''
+    sed -e s,/bin/ln,ln,g -i src/Makefile
+    sed -e 's,^CXXFLAGS=-O2,CXXFLAGS=-O2 -D PATH_ESPEAK_DATA=\\\"$(DATADIR)\\\",' -i src/Makefile
+  '' + (if portaudio.api_version == 19 then ''
+    cp src/portaudio19.h src/portaudio.h
+  '' else "");
+
+  configurePhase = ''
+    cd src
+    makeFlags="PREFIX=$out DATADIR=$out/share/espeak-data"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Compact open source software speech synthesizer";
+    homepage = "http://espeak.sourceforge.net/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/espeak/edit.nix b/nixpkgs/pkgs/applications/audio/espeak/edit.nix
new file mode 100644
index 000000000000..6bcffcbc5c34
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/espeak/edit.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchurl, pkgconfig, unzip, portaudio, wxGTK, sox }:
+
+stdenv.mkDerivation rec {
+  name = "espeakedit-1.48.03";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/espeak/${name}.zip";
+    sha256 = "0x8s7vpb7rw5x37yjzy1f98m4f2csdg89libb74fm36gn8ly0hli";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ unzip portaudio wxGTK ];
+
+  # TODO:
+  # Uhm, seems like espeakedit still wants espeak-data/ in $HOME, even thought
+  # it should use $espeak/share/espeak-data. Have to contact upstream to get
+  # this fixed.
+  #
+  # Workaround:
+  #  cp -r $(nix-build -A espeak)/share/espeak-data ~
+  #  chmod +w ~/espeak-data
+
+  patches = [
+    ./gcc6.patch
+    ./espeakedit-fix-makefile.patch
+    ./espeakedit-configurable-sox-path.patch
+    ./espeakedit-configurable-path-espeak-data.patch
+    ./espeakedit-gcc6.patch
+  ];
+
+  postPatch = ''
+    # Disable -Wall flag because it's noisy
+    sed -i "s/-Wall//g" src/Makefile
+
+    # Fixup paths (file names from above espeak-configurable* patches)
+    for file in src/compiledata.cpp src/readclause.cpp src/speech.h; do
+        sed -e "s|@sox@|${sox}/bin/sox|" \
+            -e "s|@prefix@|$out|" \
+            -i "$file"
+    done
+  '' + stdenv.lib.optionalString (portaudio.api_version == 19) ''
+    cp src/portaudio19.h src/portaudio.h
+  '';
+
+  buildPhase = ''
+    make -C src
+  '';
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    cp src/espeakedit "$out/bin"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Phoneme editor for espeak";
+    homepage = "http://espeak.sourceforge.net/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/espeak/espeakedit-configurable-path-espeak-data.patch b/nixpkgs/pkgs/applications/audio/espeak/espeakedit-configurable-path-espeak-data.patch
new file mode 100644
index 000000000000..e5c761a11b35
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/espeak/espeakedit-configurable-path-espeak-data.patch
@@ -0,0 +1,15 @@
+Don't hardcode /usr, use @prefix@.
+
+Author: Bjørn Forsman
+diff -uNr espeakedit-1.48.03.orig/src/speech.h espeakedit-1.48.03/src/speech.h
+--- espeakedit-1.48.03.orig/src/speech.h	2014-03-04 17:48:12.000000000 +0100
++++ espeakedit-1.48.03/src/speech.h	2014-07-22 18:21:40.860790719 +0200
+@@ -58,7 +58,7 @@
+ 
+ // will look for espeak_data directory here, and also in user's home directory
+ #ifndef PATH_ESPEAK_DATA
+-   #define PATH_ESPEAK_DATA  "/usr/share/espeak-data"
++   #define PATH_ESPEAK_DATA  "@prefix@/share/espeak-data"
+ #endif
+ 
+ typedef unsigned short USHORT;
diff --git a/nixpkgs/pkgs/applications/audio/espeak/espeakedit-configurable-sox-path.patch b/nixpkgs/pkgs/applications/audio/espeak/espeakedit-configurable-sox-path.patch
new file mode 100644
index 000000000000..1c5dfc21941a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/espeak/espeakedit-configurable-sox-path.patch
@@ -0,0 +1,27 @@
+Make the path to 'sox' configurable by marking it '@sox@' (easy to match with sed).
+
+Author: Bjørn Forsman
+diff -uNr espeakedit-1.48.03.orig/src/compiledata.cpp espeakedit-1.48.03/src/compiledata.cpp
+--- espeakedit-1.48.03.orig/src/compiledata.cpp	2014-03-04 17:48:11.000000000 +0100
++++ espeakedit-1.48.03/src/compiledata.cpp	2014-07-22 16:38:50.261388452 +0200
+@@ -1884,7 +1884,7 @@
+             fname2 = msg;
+         }
+ 
+-        sprintf(command,"sox \"%s%s.wav\" -r %d -c1 -t wav %s\n",path_source,fname2,samplerate_native, fname_temp);
++        sprintf(command,"@sox@ \"%s%s.wav\" -r %d -c1 -t wav %s\n",path_source,fname2,samplerate_native, fname_temp);
+         if(system(command) != 0)
+         {
+             failed = 1;
+diff -uNr espeakedit-1.48.03.orig/src/readclause.cpp espeakedit-1.48.03/src/readclause.cpp
+--- espeakedit-1.48.03.orig/src/readclause.cpp	2014-03-04 17:48:11.000000000 +0100
++++ espeakedit-1.48.03/src/readclause.cpp	2014-07-22 16:38:37.190440504 +0200
+@@ -892,7 +892,7 @@
+ 			if((fd_temp = mkstemp(fname_temp)) >= 0)
+ 			{
+ 				close(fd_temp);
+-				sprintf(command,"sox \"%s\" -r %d -c1 -t wav %s\n", fname, samplerate, fname_temp);
++				sprintf(command,"@sox@ \"%s\" -r %d -c1 -t wav %s\n", fname, samplerate, fname_temp);
+ 				if(system(command) == 0)
+ 				{
+ 					fname = fname_temp;
diff --git a/nixpkgs/pkgs/applications/audio/espeak/espeakedit-fix-makefile.patch b/nixpkgs/pkgs/applications/audio/espeak/espeakedit-fix-makefile.patch
new file mode 100644
index 000000000000..9f8a65d2b0ca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/espeak/espeakedit-fix-makefile.patch
@@ -0,0 +1,26 @@
+Fix broken Makefile:
+
+* fix syntax error (missing '\' to continue line):
+    Makefile:19: *** recipe commences before first target.  Stop.
+* Get portaudio library flags from pkg-config (to get -Lpath/to/portaudio/lib etc.)
+
+Author: Bjørn Forsman
+diff -uNr espeakedit-1.48.03.orig/src/Makefile espeakedit-1.48.03/src/Makefile
+--- espeakedit-1.48.03.orig/src/Makefile	2013-03-13 15:52:02.000000000 +0100
++++ espeakedit-1.48.03/src/Makefile	2014-07-22 15:34:17.524114822 +0200
+@@ -12,12 +12,11 @@
+ 
+ WX_LIBS = -pthread   `wx-config --libs`
+ 
+-LIBS=-lstdc++ -lportaudio
++LIBS=-lstdc++ `pkg-config --libs portaudio-2.0`
+ #LIBS=-lstdc++ /usr/lib/x86_64-linux-gnu/libportaudio.so.2
+ 
+-CPPFLAGS =  -Wall -g -fexceptions `wx-config --cflags`
+-	-I/usr/include/wx-2.8 \
+-	-DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES
++CPPFLAGS =  -Wall -g -fexceptions `wx-config --cflags` \
++	-DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES \
+ 	-D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA -D_ESPEAKEDIT
+ 
+ CXXFLAGS = -O2  -Wall -fexceptions `wx-config --cflags` \
diff --git a/nixpkgs/pkgs/applications/audio/espeak/espeakedit-gcc6.patch b/nixpkgs/pkgs/applications/audio/espeak/espeakedit-gcc6.patch
new file mode 100644
index 000000000000..1e0cb20bbf76
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/espeak/espeakedit-gcc6.patch
@@ -0,0 +1,57 @@
+diff --git i/src/compiledata.cpp w/src/compiledata.cpp
+index f1bcb30..30e9e2d 100755
+--- i/src/compiledata.cpp
++++ w/src/compiledata.cpp
+@@ -212,7 +212,7 @@ enum {
+ 	kTUNE_SPLIT,
+ };
+ 
+-static const char utf8_bom[] = {0xef,0xbb,0xbf,0};
++static const char utf8_bom[] = {char(0xef),char(0xbb),char(0xbf),0};
+ 
+ static keywtab_t k_intonation[] = {
+ 	{"tune",      0,   kTUNE},
+diff --git i/src/espeakedit.cpp w/src/espeakedit.cpp
+index bde03ea..071689d 100755
+--- i/src/espeakedit.cpp
++++ w/src/espeakedit.cpp
+@@ -744,7 +744,7 @@ void MyFrame::OnTools(wxCommandEvent& event)
+ 	int debug_flag=0;
+ 	char fname_log[sizeof(path_dsource)+12];
+ 	char err_fname[sizeof(path_home)+15];
+-	static const char utf8_bom[] = {0xef,0xbb,0xbf,0};
++	static const char utf8_bom[] = {char(0xef),char(0xbb),char(0xbf),0};
+ 
+ 	switch(event.GetId())
+ 	{
+diff --git i/src/extras.cpp w/src/extras.cpp
+index fa6ac3b..ee68f59 100644
+--- i/src/extras.cpp
++++ w/src/extras.cpp
+@@ -335,16 +335,16 @@ void Lexicon_It(int pass)
+ 	static const char *vowels1 = "aeiou";
+ 	static const char *vowels2 = "aeou";
+ 
+-	static const char ex1[] = {'a',0xc3,0xac,0};  // aì
+-	static const char ex2[] = {'e',0xc3,0xac,0};  // eì
+-	static const char ex3[] = {0xc3,0xb9,'a',0};  // ùa
+-	static const char ex4[] = {0xc3,0xb9,'e',0};  // ùe
+-	static const char ex5[] = {0xc3,0xb9,'i',0};  // ùi
+-	static const char ex6[] = {0xc3,0xb9,'o',0};  // ùo
+-	static const char ex7[] = {'c',0xc3,0xac,'a',0};  // cìa
+-	static const char ex8[] = {'c',0xc3,0xac,'o',0};  // cìo
+-	static const char ex9[] = {'c',0xc3,0xac,'u',0};  // cìu
+-	static const char ex10[] = {'g','l',0xc3,0xac,0};  // glì
++	static const char ex1[] = {'a',char(0xc3),char(0xac),0};  // aì
++	static const char ex2[] = {'e',char(0xc3),char(0xac),0};  // eì
++	static const char ex3[] = {char(0xc3),char(0xb9),'a',0};  // ùa
++	static const char ex4[] = {char(0xc3),char(0xb9),'e',0};  // ùe
++	static const char ex5[] = {char(0xc3),char(0xb9),'i',0};  // ùi
++	static const char ex6[] = {char(0xc3),char(0xb9),'o',0};  // ùo
++	static const char ex7[] = {'c',char(0xc3),char(0xac),'a',0};  // cìa
++	static const char ex8[] = {'c',char(0xc3),char(0xac),'o',0};  // cìo
++	static const char ex9[] = {'c',char(0xc3),char(0xac),'u',0};  // cìu
++	static const char ex10[] = {'g','l',char(0xc3),char(0xac),0};  // glì
+ 
+ 
+ 	static const char *exceptions[] = {ex1, ex2, ex3, ex4, ex5, ex6, ex7, ex8, ex9, ex10, NULL};
diff --git a/nixpkgs/pkgs/applications/audio/espeak/gcc6.patch b/nixpkgs/pkgs/applications/audio/espeak/gcc6.patch
new file mode 100644
index 000000000000..58036ecbe509
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/espeak/gcc6.patch
@@ -0,0 +1,13 @@
+diff --git c/src/tr_languages.cpp i/src/tr_languages.cpp
+index ec210a5..9503f47 100755
+--- c/src/tr_languages.cpp
++++ i/src/tr_languages.cpp
+@@ -198,7 +198,7 @@ static const unsigned short chars_ignore_zwnj_hyphen[] = {
+ 	0x200d,  1, // zero width joiner
+ 	0, 0 };
+ 
+-const char string_ordinal[] = {0xc2,0xba,0};  // masculine ordinal character, UTF-8
++const char string_ordinal[] = {char(0xc2),char(0xba),0};  // masculine ordinal character, UTF-8
+ 
+ 
+ static Translator* NewTranslator(void)
diff --git a/nixpkgs/pkgs/applications/audio/eteroj.lv2/default.nix b/nixpkgs/pkgs/applications/audio/eteroj.lv2/default.nix
new file mode 100644
index 000000000000..c86e7b5e9ba1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/eteroj.lv2/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, libuv, lv2 }:
+
+stdenv.mkDerivation rec {
+  pname = "eteroj.lv2";
+  version = "0.4.0";
+
+  src = fetchFromGitHub {
+    owner  = "OpenMusicKontrollers";
+    repo   = pname;
+    rev    = version;
+    sha256 = "0lzdk7hlz3vqgshrfpj0izjad1fmsnzk2vxqrry70xgz8xglvnmn";
+  };
+
+  buildInputs = [ libuv lv2 ];
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  meta = with stdenv.lib; {
+    description = "OSC injection/ejection from/to UDP/TCP/Serial for LV2";
+    homepage = "https://open-music-kontrollers.ch/lv2/eteroj";
+    license = licenses.artistic2;
+    maintainers = with maintainers; [ magnetophon ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/faust/faust1.nix b/nixpkgs/pkgs/applications/audio/faust/faust1.nix
new file mode 100644
index 000000000000..64b8e7244311
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/faust/faust1.nix
@@ -0,0 +1,208 @@
+{ stdenv
+, coreutils
+, fetchurl
+, makeWrapper
+, pkgconfig
+}:
+
+with stdenv.lib.strings;
+
+let
+
+  version = "0.9.90";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/faudiostream/faust-${version}.tgz";
+    sha256 = "0d1fqwymyfb73zkmpwv4zk4gsg4ji7qs20mfsr20skmnqx30xvna";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = "http://faust.grame.fr/";
+    downloadPage = "https://sourceforge.net/projects/faudiostream/files/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ magnetophon pmahoney ];
+  };
+
+  faust = stdenv.mkDerivation {
+    pname = "faust";
+    inherit version;
+
+    inherit src;
+
+    buildInputs = [ makeWrapper ];
+
+    passthru = {
+      inherit wrap wrapWithBuildEnv;
+    };
+
+    preConfigure = ''
+      makeFlags="$makeFlags prefix=$out"
+
+      # The faust makefiles use 'system ?= $(shell uname -s)' but nix
+      # defines 'system' env var, so undefine that so faust detects the
+      # correct system.
+      unset system
+    '';
+
+    # Remove most faust2appl scripts since they won't run properly
+    # without additional paths setup. See faust.wrap,
+    # faust.wrapWithBuildEnv.
+    postInstall = ''
+      # syntax error when eval'd directly
+      pattern="faust2!(*@(atomsnippets|graph|graphviewer|md|plot|sig|sigviewer|svg))"
+      (shopt -s extglob; rm "$out"/bin/$pattern)
+    '';
+
+    postFixup = ''
+      # Set faustpath explicitly.
+      substituteInPlace "$out"/bin/faustpath \
+        --replace "/usr/local /usr /opt /opt/local" "$out"
+
+      # The 'faustoptflags' is 'source'd into other faust scripts and
+      # not used as an executable, so patch 'uname' usage directly
+      # rather than use makeWrapper.
+      substituteInPlace "$out"/bin/faustoptflags \
+        --replace uname "${coreutils}/bin/uname"
+
+      # wrapper for scripts that don't need faust.wrap*
+      for script in "$out"/bin/faust2*; do
+        wrapProgram "$script" \
+          --prefix PATH : "$out"/bin
+      done
+    '';
+
+    meta = meta // {
+      description = "A functional programming language for realtime audio signal processing";
+      longDescription = ''
+        FAUST (Functional Audio Stream) is a functional programming
+        language specifically designed for real-time signal processing
+        and synthesis. FAUST targets high-performance signal processing
+        applications and audio plug-ins for a variety of platforms and
+        standards.
+        The Faust compiler translates DSP specifications into very
+        efficient C++ code. Thanks to the notion of architecture,
+        FAUST programs can be easily deployed on a large variety of
+        audio platforms and plugin formats (jack, alsa, ladspa, maxmsp,
+        puredata, csound, supercollider, pure, vst, coreaudio) without
+        any change to the FAUST code.
+
+        This package has just the compiler, libraries, and headers.
+        Install faust2* for specific faust2appl scripts.
+      '';
+    };
+
+  };
+
+  # Default values for faust2appl.
+  faust2ApplBase =
+    { baseName
+    , dir ? "tools/faust2appls"
+    , scripts ? [ baseName ]
+    , ...
+    }@args:
+
+    args // {
+      name = "${baseName}-${version}";
+
+      inherit src;
+
+      dontBuild = true;
+
+      installPhase = ''
+        runHook preInstall
+
+        mkdir -p "$out/bin"
+        for script in ${concatStringsSep " " scripts}; do
+          cp "${dir}/$script" "$out/bin/"
+        done
+
+        runHook postInstall
+      '';
+
+      postInstall = ''
+        # For the faust2appl script, change 'faustpath' and
+        # 'faustoptflags' to absolute paths.
+        for script in "$out"/bin/*; do
+          substituteInPlace "$script" \
+            --replace ". faustpath" ". '${faust}/bin/faustpath'" \
+            --replace ". faustoptflags" ". '${faust}/bin/faustoptflags'"
+        done
+      '';
+
+      meta = meta // {
+        description = "The ${baseName} script, part of faust functional programming language for realtime audio signal processing";
+      };
+    };
+
+  # Some 'faust2appl' scripts, such as faust2alsa, run faust to
+  # generate cpp code, then invoke the c++ compiler to build the code.
+  # This builder wraps these scripts in parts of the stdenv such that
+  # when the scripts are called outside any nix build, they behave as
+  # if they were running inside a nix build in terms of compilers and
+  # paths being configured (e.g. rpath is set so that compiled
+  # binaries link to the libs inside the nix store)
+  #
+  # The function takes two main args: the appl name (e.g.
+  # 'faust2alsa') and an optional list of propagatedBuildInputs. It
+  # returns a derivation that contains only the bin/${appl} script,
+  # wrapped up so that it will run as if it was inside a nix build
+  # with those build inputs.
+  #
+  # The build input 'faust' is automatically added to the
+  # propagatedBuildInputs.
+  wrapWithBuildEnv =
+    { baseName
+    , propagatedBuildInputs ? [ ]
+    , ...
+    }@args:
+
+    stdenv.mkDerivation ((faust2ApplBase args) // {
+
+      nativeBuildInputs = [ pkgconfig ];
+      buildInputs = [ makeWrapper ];
+
+      propagatedBuildInputs = [ faust ] ++ propagatedBuildInputs;
+
+      postFixup = ''
+
+        # export parts of the build environment
+        for script in "$out"/bin/*; do
+          wrapProgram "$script" \
+            --set FAUSTLIB "${faust}/lib/faust" \
+            --set FAUSTINC "${faust}/include/faust" \
+            --prefix PATH : "$PATH" \
+            --prefix PKG_CONFIG_PATH : "$PKG_CONFIG_PATH" \
+            --set NIX_CFLAGS_COMPILE "$NIX_CFLAGS_COMPILE" \
+            --set NIX_LDFLAGS "$NIX_LDFLAGS"
+        done
+      '';
+    });
+
+  # Builder for 'faust2appl' scripts, such as faust2firefox that
+  # simply need to be wrapped with some dependencies on PATH.
+  #
+  # The build input 'faust' is automatically added to the PATH.
+  wrap =
+    { baseName
+    , runtimeInputs ? [ ]
+    , ...
+    }@args:
+
+    let
+
+      runtimePath = concatStringsSep ":" (map (p: "${p}/bin") ([ faust ] ++ runtimeInputs));
+
+    in stdenv.mkDerivation ((faust2ApplBase args) // {
+
+      buildInputs = [ makeWrapper ];
+
+      postFixup = ''
+        for script in "$out"/bin/*; do
+          wrapProgram "$script" --prefix PATH : "${runtimePath}"
+        done
+      '';
+
+    });
+
+in faust
diff --git a/nixpkgs/pkgs/applications/audio/faust/faust2.nix b/nixpkgs/pkgs/applications/audio/faust/faust2.nix
new file mode 100644
index 000000000000..e65414b2bcab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/faust/faust2.nix
@@ -0,0 +1,222 @@
+{ stdenv
+, coreutils
+, fetchFromGitHub
+, makeWrapper
+, pkgconfig
+, cmake
+, llvm
+, emscripten
+, openssl
+, libsndfile
+, libmicrohttpd
+, gnutls
+, libtasn1
+, p11-kit
+, vim
+, which
+}:
+
+with stdenv.lib.strings;
+
+let
+
+  version = "unstable-2020-06-08";
+
+  src = fetchFromGitHub {
+    owner = "grame-cncm";
+    repo = "faust";
+    rev = "f0037e289987818b65d3f6fb1ad943aaad2a2b28";
+    sha256 = "0h08902rgx7rhzpng4h1qw8i2nzv50f79vrlbzdk5d35wa4zibh4";
+    fetchSubmodules = true;
+  };
+
+  meta = with stdenv.lib; {
+    homepage = "http://faust.grame.fr/";
+    downloadPage = "https://github.com/grame-cncm/faust/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ magnetophon pmahoney ];
+  };
+
+  faust = stdenv.mkDerivation {
+
+    pname = "faust";
+    inherit version;
+
+    inherit src;
+
+    nativeBuildInputs = [ makeWrapper pkgconfig cmake vim which ];
+    buildInputs = [ llvm emscripten openssl libsndfile libmicrohttpd gnutls libtasn1 p11-kit ];
+
+
+    passthru = {
+      inherit wrap wrapWithBuildEnv;
+    };
+
+
+    preConfigure = ''
+      cd build
+    '';
+
+    cmakeFlags = ''
+      -C ../backends/all.cmake -C  ../targets/all.cmake ..
+    '';
+
+    postInstall = ''
+      # syntax error when eval'd directly
+      pattern="faust2!(*@(atomsnippets|graph|graphviewer|md|plot|sig|sigviewer|svg))"
+      (shopt -s extglob; rm "$out"/bin/$pattern)
+    '';
+
+    postFixup = ''
+      # The 'faustoptflags' is 'source'd into other faust scripts and
+      # not used as an executable, so patch 'uname' usage directly
+      # rather than use makeWrapper.
+      substituteInPlace "$out"/bin/faustoptflags \
+        --replace uname "${coreutils}/bin/uname"
+
+      # wrapper for scripts that don't need faust.wrap*
+      for script in "$out"/bin/faust2*; do
+        wrapProgram "$script" \
+          --prefix PATH : "$out"/bin
+      done
+    '';
+
+    meta = meta // {
+      description = "A functional programming language for realtime audio signal processing";
+      longDescription = ''
+        FAUST (Functional Audio Stream) is a functional programming
+        language specifically designed for real-time signal processing
+        and synthesis. FAUST targets high-performance signal processing
+        applications and audio plug-ins for a variety of platforms and
+        standards.
+        The Faust compiler translates DSP specifications into very
+        efficient C++ code. Thanks to the notion of architecture,
+        FAUST programs can be easily deployed on a large variety of
+        audio platforms and plugin formats (jack, alsa, ladspa, maxmsp,
+        puredata, csound, supercollider, pure, vst, coreaudio) without
+        any change to the FAUST code.
+
+        This package has just the compiler, libraries, and headers.
+        Install faust2* for specific faust2appl scripts.
+      '';
+    };
+
+  };
+
+  # Default values for faust2appl.
+  faust2ApplBase =
+    { baseName
+    , dir ? "tools/faust2appls"
+    , scripts ? [ baseName ]
+    , ...
+    }@args:
+
+    args // {
+      name = "${baseName}-${version}";
+
+      inherit src;
+
+      dontBuild = true;
+
+      installPhase = ''
+        runHook preInstall
+
+        mkdir -p "$out/bin"
+        for script in ${concatStringsSep " " scripts}; do
+          cp "${dir}/$script" "$out/bin/"
+        done
+
+        runHook postInstall
+      '';
+
+      postInstall = ''
+        # For the faust2appl script, change 'faustpath' and
+        # 'faustoptflags' to absolute paths.
+        for script in "$out"/bin/*; do
+          substituteInPlace "$script" \
+            --replace " error " "echo"
+        done
+      '';
+
+      meta = meta // {
+        description = "The ${baseName} script, part of faust functional programming language for realtime audio signal processing";
+      };
+    };
+
+  # Some 'faust2appl' scripts, such as faust2alsa, run faust to
+  # generate cpp code, then invoke the c++ compiler to build the code.
+  # This builder wraps these scripts in parts of the stdenv such that
+  # when the scripts are called outside any nix build, they behave as
+  # if they were running inside a nix build in terms of compilers and
+  # paths being configured (e.g. rpath is set so that compiled
+  # binaries link to the libs inside the nix store)
+  #
+  # The function takes two main args: the appl name (e.g.
+  # 'faust2alsa') and an optional list of propagatedBuildInputs. It
+  # returns a derivation that contains only the bin/${appl} script,
+  # wrapped up so that it will run as if it was inside a nix build
+  # with those build inputs.
+  #
+  # The build input 'faust' is automatically added to the
+  # propagatedBuildInputs.
+  wrapWithBuildEnv =
+    { baseName
+    , propagatedBuildInputs ? [ ]
+    , ...
+    }@args:
+
+    stdenv.mkDerivation ((faust2ApplBase args) // {
+
+      nativeBuildInputs = [ pkgconfig ];
+      buildInputs = [ makeWrapper ];
+
+      propagatedBuildInputs = [ faust ] ++ propagatedBuildInputs;
+
+      libPath = stdenv.lib.makeLibraryPath propagatedBuildInputs;
+
+      postFixup = ''
+
+        # export parts of the build environment
+        for script in "$out"/bin/*; do
+          wrapProgram "$script" \
+            --set FAUSTLDDIR "${faust}/lib" \
+            --set FAUSTLIB "${faust}/share/faust" \
+            --set FAUSTINC "${faust}/include/faust" \
+            --set FAUSTARCH "${faust}/share/faust" \
+            --prefix PATH : "$PATH" \
+            --prefix PKG_CONFIG_PATH : "$PKG_CONFIG_PATH" \
+            --set NIX_CFLAGS_COMPILE "$NIX_CFLAGS_COMPILE" \
+            --set NIX_LDFLAGS "$NIX_LDFLAGS -lpthread" \
+            --prefix LIBRARY_PATH $libPath
+        done
+      '';
+    });
+
+  # Builder for 'faust2appl' scripts, such as faust2firefox that
+  # simply need to be wrapped with some dependencies on PATH.
+  #
+  # The build input 'faust' is automatically added to the PATH.
+  wrap =
+    { baseName
+    , runtimeInputs ? [ ]
+    , ...
+    }@args:
+
+    let
+
+      runtimePath = concatStringsSep ":" (map (p: "${p}/bin") ([ faust ] ++ runtimeInputs));
+
+    in stdenv.mkDerivation ((faust2ApplBase args) // {
+
+      buildInputs = [ makeWrapper ];
+
+      postFixup = ''
+        for script in "$out"/bin/*; do
+          wrapProgram "$script" --prefix PATH : "${runtimePath}"
+        done
+      '';
+
+    });
+
+in faust
diff --git a/nixpkgs/pkgs/applications/audio/faust/faust2alqt.nix b/nixpkgs/pkgs/applications/audio/faust/faust2alqt.nix
new file mode 100644
index 000000000000..8ac26e488b37
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/faust/faust2alqt.nix
@@ -0,0 +1,15 @@
+{ faust
+, alsaLib
+, qt4
+}:
+
+faust.wrapWithBuildEnv {
+
+  baseName = "faust2alqt";
+
+  propagatedBuildInputs = [
+    alsaLib
+    qt4
+  ];
+
+}
diff --git a/nixpkgs/pkgs/applications/audio/faust/faust2alsa.nix b/nixpkgs/pkgs/applications/audio/faust/faust2alsa.nix
new file mode 100644
index 000000000000..6af5af9bbafb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/faust/faust2alsa.nix
@@ -0,0 +1,29 @@
+{ faust
+, alsaLib
+, atk
+, cairo
+, fontconfig
+, freetype
+, gdk-pixbuf
+, glib
+, gtk2
+, pango
+}:
+
+faust.wrapWithBuildEnv {
+
+  baseName = "faust2alsa";
+
+  propagatedBuildInputs = [
+    alsaLib
+    atk
+    cairo
+    fontconfig
+    freetype
+    gdk-pixbuf
+    glib
+    gtk2
+    pango
+  ];
+
+}
diff --git a/nixpkgs/pkgs/applications/audio/faust/faust2csound.nix b/nixpkgs/pkgs/applications/audio/faust/faust2csound.nix
new file mode 100644
index 000000000000..eb5e5831cddd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/faust/faust2csound.nix
@@ -0,0 +1,20 @@
+{ faust
+, csound
+}:
+
+faust.wrapWithBuildEnv {
+
+  baseName = "faust2csound";
+
+  propagatedBuildInputs = [
+    csound
+  ];
+
+  # faust2csound generated .cpp files have
+  #   #include "csdl.h"
+  # but that file is in the csound/ subdirectory
+  preFixup = ''
+    NIX_CFLAGS_COMPILE="$(printf '%s' "$NIX_CFLAGS_COMPILE" | sed 's%${csound}/include%${csound}/include/csound%')"
+  '';
+
+}
diff --git a/nixpkgs/pkgs/applications/audio/faust/faust2firefox.nix b/nixpkgs/pkgs/applications/audio/faust/faust2firefox.nix
new file mode 100644
index 000000000000..b2cc6f464575
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/faust/faust2firefox.nix
@@ -0,0 +1,14 @@
+{ faust
+, xdg_utils
+}:
+
+# This just runs faust2svg, then attempts to open a browser using
+# 'xdg-open'.
+
+faust.wrap {
+
+  baseName = "faust2firefox";
+
+  runtimeInputs = [ xdg_utils ];
+
+}
diff --git a/nixpkgs/pkgs/applications/audio/faust/faust2jack.nix b/nixpkgs/pkgs/applications/audio/faust/faust2jack.nix
new file mode 100644
index 000000000000..370c25ecd749
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/faust/faust2jack.nix
@@ -0,0 +1,26 @@
+{ faust
+, gtk2
+, jack2Full
+, alsaLib
+, opencv2
+, libsndfile
+}:
+
+faust.wrapWithBuildEnv {
+
+  baseName = "faust2jack";
+
+  scripts = [
+    "faust2jack"
+    "faust2jackconsole"
+  ];
+
+  propagatedBuildInputs = [
+    gtk2
+    jack2Full
+    alsaLib
+    opencv2
+    libsndfile
+  ];
+
+}
diff --git a/nixpkgs/pkgs/applications/audio/faust/faust2jackrust.nix b/nixpkgs/pkgs/applications/audio/faust/faust2jackrust.nix
new file mode 100644
index 000000000000..2562237424e5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/faust/faust2jackrust.nix
@@ -0,0 +1,18 @@
+{ stdenv
+, faust
+, libjack2
+, cargo
+, binutils
+, gcc
+, gnumake
+, openssl
+, pkgconfig
+
+}:
+
+faust.wrapWithBuildEnv {
+
+  baseName = "faust2jackrust";
+
+  propagatedBuildInputs = [ libjack2 cargo binutils gcc gnumake openssl pkgconfig ];
+}
diff --git a/nixpkgs/pkgs/applications/audio/faust/faust2jaqt.nix b/nixpkgs/pkgs/applications/audio/faust/faust2jaqt.nix
new file mode 100644
index 000000000000..a2f1c2139a1a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/faust/faust2jaqt.nix
@@ -0,0 +1,26 @@
+{ faust
+, jack2Full
+, opencv2
+, qt4
+, libsndfile
+, which
+}:
+
+faust.wrapWithBuildEnv {
+
+  baseName = "faust2jaqt";
+
+  scripts = [
+    "faust2jaqt"
+    "faust2jackserver"
+  ];
+
+  propagatedBuildInputs = [
+    jack2Full
+    opencv2
+    qt4
+    libsndfile
+    which
+  ];
+
+}
diff --git a/nixpkgs/pkgs/applications/audio/faust/faust2ladspa.nix b/nixpkgs/pkgs/applications/audio/faust/faust2ladspa.nix
new file mode 100644
index 000000000000..67de98cab9a2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/faust/faust2ladspa.nix
@@ -0,0 +1,12 @@
+{ boost
+, faust
+, ladspaH
+}:
+
+faust.wrapWithBuildEnv {
+
+  baseName = "faust2ladspa";
+
+  propagatedBuildInputs = [ boost ladspaH ];
+
+}
diff --git a/nixpkgs/pkgs/applications/audio/faust/faust2lv2.nix b/nixpkgs/pkgs/applications/audio/faust/faust2lv2.nix
new file mode 100644
index 000000000000..51d956b14036
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/faust/faust2lv2.nix
@@ -0,0 +1,15 @@
+{ boost
+, faust
+, lv2
+, qt4
+, which
+
+}:
+
+faust.wrapWithBuildEnv {
+
+  baseName = "faust2lv2";
+
+  propagatedBuildInputs = [ boost lv2 qt4 which ];
+
+}
diff --git a/nixpkgs/pkgs/applications/audio/faust/faustlive.nix b/nixpkgs/pkgs/applications/audio/faust/faustlive.nix
new file mode 100644
index 000000000000..90bd8bc60ad0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/faust/faustlive.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub
+, llvm, qt48Full, qrencode, libmicrohttpd, libjack2, alsaLib, faust, curl
+, bc, coreutils, which
+}:
+
+stdenv.mkDerivation {
+  pname = "faustlive";
+  version = "2017-12-05";
+  src = fetchFromGitHub {
+    owner = "grame-cncm";
+    repo = "faustlive";
+    rev = "281fcb852dcd94f8c57ade1b2a7a3937542e1b2d";
+    sha256 = "0sw44yd9928rid9ib0b5mx2x129m7zljrayfm6jz6hrwdc5q3k9a";
+  };
+
+  buildInputs = [
+    llvm qt48Full qrencode libmicrohttpd libjack2 alsaLib faust curl
+    bc coreutils which
+  ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  preBuild = "patchShebangs Build/Linux/buildversion";
+
+  meta = with stdenv.lib; {
+    description = "A standalone just-in-time Faust compiler";
+    longDescription = ''
+      FaustLive is a standalone just-in-time Faust compiler. It tries to bring
+      together the convenience of a standalone interpreted language with the
+      efficiency of a compiled language. It's ideal for fast prototyping.
+    '';
+    homepage = "http://faust.grame.fr/";
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/fdkaac/default.nix b/nixpkgs/pkgs/applications/audio/fdkaac/default.nix
new file mode 100644
index 000000000000..55c0d7c597c2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/fdkaac/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, autoreconfHook, fetchFromGitHub, fdk_aac }:
+
+stdenv.mkDerivation rec {
+  pname = "fdkaac";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "nu774";
+    repo = pname;
+    rev = version;
+    sha256 = "16iwqmwagnb929byz8kj79pmmr0anbyv26drbavhppmxhk7rrpgh";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+
+  buildInputs = [ fdk_aac ];
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    description = "Command line encoder frontend for libfdk-aac encder";
+    longDescription = ''
+      fdkaac reads linear PCM audio in either WAV, raw PCM, or CAF format,
+      and encodes it into either M4A / AAC file.
+    '';
+    homepage = "https://github.com/nu774/fdkaac";
+    license = licenses.zlib;
+    platforms = platforms.all;
+    maintainers = [ maintainers.lunik1 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/flac/default.nix b/nixpkgs/pkgs/applications/audio/flac/default.nix
new file mode 100644
index 000000000000..bd8b9bea82b7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/flac/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, libogg }:
+
+stdenv.mkDerivation rec {
+  name = "flac-1.3.3";
+
+  src = fetchurl {
+    url = "http://downloads.xiph.org/releases/flac/${name}.tar.xz";
+    sha256 = "0j0p9sf56a2fm2hkjnf7x3py5ir49jyavg4q5zdyd7bcf6yq4gi1";
+  };
+
+  buildInputs = [ libogg ];
+
+  #doCheck = true; # takes lots of time
+
+  outputs = [ "bin" "dev" "out" "man" "doc" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://xiph.org/flac/";
+    description = "Library and tools for encoding and decoding the FLAC lossless audio file format";
+    platforms = platforms.all;
+    license = licenses.bsd3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/flac123/default.nix b/nixpkgs/pkgs/applications/audio/flac123/default.nix
new file mode 100644
index 000000000000..6f13b710effc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/flac123/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, autoreconfHook, flac, libao, libogg, popt }:
+
+stdenv.mkDerivation rec {
+  pname = "flac123";
+  version = "0.0.12";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/flac-tools/${pname}-${version}-release.tar.gz";
+    sha256 = "0zg4ahkg7v81za518x32wldf42g0rrvlrcqhrg9sv3li9bayyxhr";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ flac libao libogg popt ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://flac-tools.sourceforge.net/";
+    description = "A command-line program for playing FLAC audio files";
+    license = licenses.gpl2Plus;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/flacon/default.nix b/nixpkgs/pkgs/applications/audio/flacon/default.nix
new file mode 100644
index 000000000000..df563bc38406
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/flacon/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, lib, fetchFromGitHub, cmake, libuchardet, pkgconfig, shntool, flac
+, opusTools, vorbis-tools, mp3gain, lame, wavpack, vorbisgain, gtk3, qtbase
+, qttools, wrapQtAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "flacon";
+  version = "6.0.0";
+
+  src = fetchFromGitHub {
+    owner = "flacon";
+    repo = "flacon";
+    rev = "v${version}";
+    sha256 = "0p5z6rwckda0lkljrrvx6i90fazj53cxg9pasfmi8154j1z72dj2";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig wrapQtAppsHook ];
+  buildInputs = [ qtbase qttools libuchardet ];
+
+  bin_path = lib.makeBinPath [
+    shntool
+    flac
+    opusTools
+    vorbis-tools
+    mp3gain
+    lame
+    wavpack
+    vorbisgain
+  ];
+
+  postInstall = ''
+    wrapProgram $out/bin/flacon \
+      --suffix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}" \
+      --prefix PATH : "$bin_path";
+  '';
+
+  meta = with stdenv.lib; {
+    description =
+      "Extracts audio tracks from an audio CD image to separate tracks";
+    homepage = "https://flacon.github.io/";
+    license = licenses.lgpl21;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ snglth ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/fluidsynth/default.nix b/nixpkgs/pkgs/applications/audio/fluidsynth/default.nix
new file mode 100644
index 000000000000..9d9772cde29a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/fluidsynth/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, lib, fetchFromGitHub, pkgconfig, cmake
+, alsaLib, glib, libjack2, libsndfile, libpulseaudio
+, AudioUnit, CoreAudio, CoreMIDI, CoreServices
+, version ? "2"
+}:
+
+let
+  versionMap = {
+    "1" = {
+      fluidsynthVersion = "1.1.11";
+      sha256 = "0n75jq3xgq46hfmjkaaxz3gic77shs4fzajq40c8gk043i84xbdh";
+    };
+    "2" = {
+      fluidsynthVersion = "2.0.6";
+      sha256 = "0nas9pp9r8rnziznxm65x2yzf1ryg98zr3946g0br3s38sjf8l3a";
+    };
+  };
+in
+
+with versionMap.${version};
+
+stdenv.mkDerivation  {
+  name = "fluidsynth-${fluidsynthVersion}";
+  version = fluidsynthVersion;
+
+  src = fetchFromGitHub {
+    owner = "FluidSynth";
+    repo = "fluidsynth";
+    rev = "v${fluidsynthVersion}";
+    inherit sha256;
+  };
+
+  nativeBuildInputs = [ pkgconfig cmake ];
+
+  buildInputs = [ glib libsndfile libpulseaudio libjack2 ]
+    ++ lib.optionals stdenv.isLinux [ alsaLib ]
+    ++ lib.optionals stdenv.isDarwin [ AudioUnit CoreAudio CoreMIDI CoreServices ];
+
+  cmakeFlags = [ "-Denable-framework=off" ];
+
+  meta = with lib; {
+    description = "Real-time software synthesizer based on the SoundFont 2 specifications";
+    homepage    = "http://www.fluidsynth.org";
+    license     = licenses.lgpl21Plus;
+    maintainers = with maintainers; [ goibhniu lovek323 ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/fmit/default.nix b/nixpkgs/pkgs/applications/audio/fmit/default.nix
new file mode 100644
index 000000000000..114cf5e192ff
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/fmit/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, mkDerivation, fetchFromGitHub, fftw, qtbase, qtmultimedia, qmake, itstool, wrapQtAppsHook
+, alsaSupport ? true, alsaLib ? null
+, jackSupport ? false, libjack2 ? null
+, portaudioSupport ? false, portaudio ? null }:
+
+assert alsaSupport -> alsaLib != null;
+assert jackSupport -> libjack2 != null;
+assert portaudioSupport -> portaudio != null;
+
+with stdenv.lib;
+
+mkDerivation rec {
+  pname = "fmit";
+  version = "1.2.13";
+
+  src = fetchFromGitHub {
+    owner = "gillesdegottex";
+    repo = "fmit";
+    rev = "v${version}";
+    sha256 = "1qyskam053pvlap1av80rgp12pzhr92rs88vqs6s0ia3ypnixcc6";
+  };
+
+  nativeBuildInputs = [ qmake itstool wrapQtAppsHook ];
+  buildInputs = [ fftw qtbase qtmultimedia ]
+    ++ optionals alsaSupport [ alsaLib ]
+    ++ optionals jackSupport [ libjack2 ]
+    ++ optionals portaudioSupport [ portaudio ];
+
+  postPatch = ''
+    substituteInPlace fmit.pro --replace '$$FMITVERSIONGITPRO' '${version}'
+  '';
+
+  preConfigure = ''
+    qmakeFlags="$qmakeFlags \
+      CONFIG+=${optionalString alsaSupport "acs_alsa"} \
+      CONFIG+=${optionalString jackSupport "acs_jack"} \
+      CONFIG+=${optionalString portaudioSupport "acs_portaudio"} \
+      PREFIXSHORTCUT=$out"
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Free Musical Instrument Tuner";
+    longDescription = ''
+      FMIT is a graphical utility for tuning musical instruments, with error
+      and volume history, and advanced features.
+    '';
+    homepage = "http://gillesdegottex.github.io/fmit/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/fmsynth/default.nix b/nixpkgs/pkgs/applications/audio/fmsynth/default.nix
new file mode 100644
index 000000000000..d957c7ec33d8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/fmsynth/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchFromGitHub, gtkmm2, lv2, lvtk, pkgconfig }:
+stdenv.mkDerivation {
+  pname = "fmsynth-unstable";
+  version = "2015-02-07";
+  src = fetchFromGitHub {
+    owner = "Themaister";
+    repo = "libfmsynth";
+    rev = "9ffa1d2fea287f1209b210d2dbde2f0f60f37176";
+    sha256 = "1bk0bpr069hzx2508rgfbwpxiqgr7dmdkhqdywmd2i4rmibgrm1q";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gtkmm2 lv2 lvtk ];
+
+  buildPhase = ''
+    cd lv2
+    substituteInPlace GNUmakefile --replace "/usr/lib/lv2" "$out/lib/lv2"
+    make  SIMD=0
+  '';
+
+  preInstall = "mkdir -p $out/lib/lv2";
+
+  meta = {
+    description = "a flexible 8 operator FM synthesizer for LV2";
+    longDescription = ''
+      The synth core supports:
+
+      - Arbitrary amounts of polyphony
+      - 8 operators
+      - No fixed "algorithms"
+      - Arbitrary modulation, every operator can modulate any other operator, even itself
+      - Arbitrary carrier selection, every operator can be a carrier
+      - Sine LFO, separate LFO per voice, modulates amplitude and frequency of operators
+      - Envelope per operator
+      - Carrier stereo panning
+      - Velocity sensitivity per operator
+      - Mod wheel sensitivity per operator
+      - Pitch bend
+      - Keyboard scaling
+      - Sustain, sustained keys can overlap each other for a very rich sound
+      - Full floating point implementation optimized for SIMD
+      - Hard real-time constraints
+    '';
+    homepage = "https://github.com/Themaister/libfmsynth";
+    license = stdenv.lib.licenses.mit;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/fomp/default.nix b/nixpkgs/pkgs/applications/audio/fomp/default.nix
new file mode 100644
index 000000000000..a712eef06501
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/fomp/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, lv2, pkgconfig, python2, wafHook }:
+
+stdenv.mkDerivation rec {
+  pname = "fomp";
+  version = "1.2.0";
+
+  src = fetchurl {
+    url = "https://download.drobilla.net/${pname}-${version}.tar.bz2";
+    sha256 = "01ld6yjrqrki6zwac8lmwmqkr5rv0sdham4pfbfkjwck4hi1gqqw";
+  };
+
+  nativeBuildInputs = [ pkgconfig wafHook ];
+  buildInputs = [ lv2 python2 ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://drobilla.net/software/fomp/";
+    description = "An LV2 port of the MCP, VCO, FIL, and WAH plugins by Fons Adriaensen";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/foo-yc20/default.nix b/nixpkgs/pkgs/applications/audio/foo-yc20/default.nix
new file mode 100644
index 000000000000..643b648fa88d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/foo-yc20/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub,  libjack2, gtk2, lv2, faust, pkgconfig }:
+
+stdenv.mkDerivation {
+  version = "git-2015-05-21";
+  pname = "foo-yc20";
+  src = fetchFromGitHub {
+    owner = "sampov2";
+    repo = "foo-yc20";
+    rev = "edd9d14c91229429b14270a181743e1046160ca8";
+    sha256 = "0i8261n95n4xic766h70xkrpbvw3sag96n1883ahmg6h7yb94avq";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libjack2 gtk2 lv2 faust ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  # remove lv2 until https://github.com/sampov2/foo-yc20/issues/6 is resolved
+  postInstallFixup = "rm -rf $out/lib/lv2";
+
+  meta = {
+    broken = true; # see: https://github.com/sampov2/foo-yc20/issues/7
+    description = "A Faust implementation of a 1969 designed Yamaha combo organ, the YC-20";
+    homepage = "https://github.com/sampov2/foo-yc20";
+    license     = "BSD";
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/freewheeling/default.nix b/nixpkgs/pkgs/applications/audio/freewheeling/default.nix
new file mode 100644
index 000000000000..071a4a9caab5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/freewheeling/default.nix
@@ -0,0 +1,52 @@
+{ lib, stdenv, fetchFromGitHub, pkgconfig, autoreconfHook, gnutls, freetype
+, SDL, SDL_gfx, SDL_ttf, liblo, libxml2, alsaLib, libjack2, libvorbis
+, libSM, libsndfile, libogg, libtool
+}:
+let
+  makeSDLFlags = map (p: "-I${lib.getDev p}/include/SDL");
+in
+
+stdenv.mkDerivation rec {
+  pname = "freewheeling";
+  version = "0.6.6";
+
+  src = fetchFromGitHub {
+    owner = "free-wheeling";
+    repo = "freewheeling";
+    rev = "v${version}";
+    sha256 = "1xff5whr02cixihgd257dc70hnyf22j3zamvhsvg4lp7zq9l2in4";
+  };
+
+  nativeBuildInputs = [ pkgconfig autoreconfHook libtool ];
+  buildInputs = [
+    freetype SDL SDL_gfx SDL_ttf
+    liblo libxml2 libjack2 alsaLib libvorbis libsndfile libogg libSM
+    (gnutls.overrideAttrs (oldAttrs: {
+      configureFlags = oldAttrs.configureFlags ++ [ "--enable-openssl-compatibility" ];
+    }))
+  ];
+  NIX_CFLAGS_COMPILE = toString
+    (makeSDLFlags [ SDL SDL_ttf SDL_gfx ] ++ [ "-I${libxml2.dev}/include/libxml2" ]);
+
+  hardeningDisable = [ "format" ];
+
+  meta = {
+    description = "A live looping instrument with JACK and MIDI support";
+    longDescription = ''
+        Freewheeling allows us to build repetitive grooves
+        by sampling and directing loops from within spirited improvisation.
+
+        It works because, down to the core, it's built around
+        improv. We leave mice and menus, and dive into our own process
+        of making sound.
+
+        Freewheeling runs under macOS and Linux, and is open source
+        software, released under the GNU GPL license.
+    '' ;
+
+    homepage = "http://freewheeling.sourceforge.net";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.sepi ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/friture/default.nix b/nixpkgs/pkgs/applications/audio/friture/default.nix
new file mode 100644
index 000000000000..eae4b6516858
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/friture/default.nix
@@ -0,0 +1,45 @@
+{ lib, fetchFromGitHub, python3Packages, wrapQtAppsHook }:
+
+let
+  py = python3Packages;
+in py.buildPythonApplication rec {
+  pname = "friture";
+  version = "0.37";
+
+  src = fetchFromGitHub {
+    owner = "tlecomte";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1ivy5qfd90w1s1icsphvvdnnqz563v3fhg5pws2zn4483cgnzc2y";
+  };
+
+  # module imports scipy.misc.factorial, but it has been removed since scipy
+  # 1.3.0; use scipy.special.factorial instead
+  patches = [ ./factorial.patch ];
+
+  nativeBuildInputs = (with py; [ numpy cython scipy ]) ++
+    [ wrapQtAppsHook ];
+
+  propagatedBuildInputs = with py; [
+    sounddevice
+    pyopengl
+    docutils
+    numpy
+    pyqt5
+    appdirs
+    pyrr
+  ];
+
+  postFixup = ''
+    wrapQtApp $out/bin/friture
+    wrapQtApp $out/bin/.friture-wrapped
+  '';
+
+  meta = with lib; {
+    description = "A real-time audio analyzer";
+    homepage = "http://friture.org/";
+    license = licenses.gpl3;
+    platforms = platforms.linux; # fails on Darwin
+    maintainers = [ maintainers.laikq ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/friture/factorial.patch b/nixpkgs/pkgs/applications/audio/friture/factorial.patch
new file mode 100644
index 000000000000..de053802932d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/friture/factorial.patch
@@ -0,0 +1,13 @@
+diff --git a/friture/filter_design.py b/friture/filter_design.py
+index 9876c43..1cc749a 100644
+--- a/friture/filter_design.py
++++ b/friture/filter_design.py
+@@ -2,7 +2,7 @@
+ from numpy import pi, exp, arange, cos, sin, sqrt, zeros, ones, log, arange, set_printoptions
+ # the three following lines are a workaround for a bug with scipy and py2exe
+ # together. See http://www.pyinstaller.org/ticket/83 for reference.
+-from scipy.misc import factorial
++from scipy.special import factorial
+ import scipy
+ scipy.factorial = factorial
+ 
diff --git a/nixpkgs/pkgs/applications/audio/ft2-clone/default.nix b/nixpkgs/pkgs/applications/audio/ft2-clone/default.nix
new file mode 100644
index 000000000000..acf373fc41af
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ft2-clone/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, alsaLib
+, SDL2
+}:
+
+stdenv.mkDerivation rec {
+  pname = "ft2-clone";
+  version = "1.25_fix";
+
+  src = fetchFromGitHub {
+    owner = "8bitbubsy";
+    repo = "ft2-clone";
+    rev = "v${version}";
+    sha256 = "0q2mcp3xpgwilmiwzr9nnxlyg9c1kynh6cxzlyd95n520j00s6i7";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ SDL2 ] ++ stdenv.lib.optional stdenv.isLinux alsaLib;
+
+  meta = with stdenv.lib; {
+    description = "A highly accurate clone of the classic Fasttracker II software for MS-DOS";
+    homepage = "https://16-bits.org/ft2.php";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fgaz ];
+    platforms = platforms.all;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/audio/game-music-emu/default.nix b/nixpkgs/pkgs/applications/audio/game-music-emu/default.nix
new file mode 100644
index 000000000000..51f895ea2d5f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/game-music-emu/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, cmake }:
+
+stdenv.mkDerivation rec {
+  version = "0.6.1";
+  pname = "game-music-emu";
+
+  src = fetchurl {
+    url = "https://bitbucket.org/mpyne/game-music-emu/downloads/${pname}-${version}.tar.bz2";
+    sha256 = "08fk7zddpn7v93d0fa7fcypx7hvgwx9b5psj9l6m8b87k2hbw4fw";
+  };
+
+  buildInputs = [ cmake ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://bitbucket.org/mpyne/game-music-emu/wiki/Home";
+    description = "A collection of video game music file emulators";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.all;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/gbsplay/default.nix b/nixpkgs/pkgs/applications/audio/gbsplay/default.nix
new file mode 100644
index 000000000000..f89b8ed399b4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/gbsplay/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, libpulseaudio }:
+
+stdenv.mkDerivation {
+  name = "gbsplay-2016-12-17";
+
+  src = fetchFromGitHub {
+    owner = "mmitch";
+    repo = "gbsplay";
+    rev = "2c4486e17fd4f4cdea8c3fd79ae898c892616b70";
+    sha256 = "1214j67sr87zfhvym41cw2g823fmqh4hr451r7y1s9ql3jpjqhpz";
+  };
+
+  buildInputs = [ libpulseaudio ];
+
+  configureFlags =
+   [ "--without-test" "--without-contrib" "--disable-devdsp"
+     "--enable-pulse" "--disable-alsa" "--disable-midi"
+     "--disable-nas" "--disable-dsound" "--disable-i18n" ];
+
+  makeFlags = [ "tests=" ];
+
+  meta = with stdenv.lib; {
+    description = "gameboy sound player";
+    license = licenses.gpl1;
+    platforms = ["i686-linux" "x86_64-linux"];
+    maintainers = with maintainers; [ dasuxullebt ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/giada/default.nix b/nixpkgs/pkgs/applications/audio/giada/default.nix
new file mode 100644
index 000000000000..fcf4d0b86520
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/giada/default.nix
@@ -0,0 +1,68 @@
+{ stdenv
+, fetchFromGitHub
+, autoreconfHook
+, fltk
+, jansson
+, rtmidi
+, libsamplerate
+, libsndfile
+, jack2
+, alsaLib
+, libpulseaudio
+, libXpm
+, libXinerama
+, libXcursor
+, catch2
+, nlohmann_json
+}:
+
+stdenv.mkDerivation rec {
+  pname = "giada";
+  version = "0.16.2.2";
+
+  src = fetchFromGitHub {
+    owner = "monocasual";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0rpg5qmw3b76xcra869shb8fwk5wfzpzw216n96hxa5s6k69cm0p";
+  };
+
+  configureFlags = [
+    "--target=linux"
+    "--enable-system-catch"
+  ];
+
+  nativeBuildInputs = [
+    autoreconfHook
+  ];
+
+  buildInputs = [
+    fltk
+    libsndfile
+    libsamplerate
+    jansson
+    rtmidi
+    libXpm
+    jack2
+    alsaLib
+    libpulseaudio
+    libXinerama
+    libXcursor
+    catch2
+    nlohmann_json
+  ];
+
+  postPatch = ''
+    sed -i 's:"deps/json/single_include/nlohmann/json\.hpp":<nlohmann/json.hpp>:' \
+        src/core/{conf,init,midiMapConf,patch}.cpp
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A free, minimal, hardcore audio tool for DJs, live performers and electronic musicians";
+    homepage = "https://giadamusic.com/";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ petabyteboy ];
+    platforms = platforms.all;
+    broken = stdenv.hostPlatform.isAarch64; # produces build failure on aarch64-linux
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/gigedit/default.nix b/nixpkgs/pkgs/applications/audio/gigedit/default.nix
new file mode 100644
index 000000000000..08eec3135081
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/gigedit/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, autoconf, automake, intltool, libtool, pkgconfig, which
+, docbook_xml_dtd_45, docbook_xsl, gtkmm2, libgig, libsndfile, libxslt
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gigedit";
+  version = "1.1.1";
+
+  src = fetchurl {
+    url = "https://download.linuxsampler.org/packages/${pname}-${version}.tar.bz2";
+    sha256 = "08db12crwf0dy1dbyrmivqqpg5zicjikqkmf2kb1ywpq0a9hcxrb";
+  };
+
+  preConfigure = "make -f Makefile.svn";
+
+  nativeBuildInputs = [ autoconf automake intltool libtool pkgconfig which ];
+
+  buildInputs = [ docbook_xml_dtd_45 docbook_xsl gtkmm2 libgig libsndfile libxslt ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.linuxsampler.org";
+    description = "Gigasampler file access library";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/gjay/default.nix b/nixpkgs/pkgs/applications/audio/gjay/default.nix
new file mode 100644
index 000000000000..9e016c68608b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/gjay/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, pkgconfig, mpd_clientlib, dbus-glib, audacious, gtk2, gsl
+, libaudclient }:
+
+stdenv.mkDerivation {
+  name = "gjay-0.3.2";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/gjay/gjay-0.3.2.tar.gz";
+    sha256 = "1a1vv4r0vnxjdyl0jyv7gga3zfd5azxlwjm1l6hjrf71lb228zn8";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ mpd_clientlib dbus-glib audacious gtk2 gsl libaudclient ];
+
+  hardeningDisable = [ "format" ];
+
+  meta = with stdenv.lib; {
+    description = "Generates playlists such that each song sounds good following the previous song";
+    homepage = "http://gjay.sourceforge.net/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ pSub ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/gmpc/default.nix b/nixpkgs/pkgs/applications/audio/gmpc/default.nix
new file mode 100644
index 000000000000..7ae02ae38d85
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/gmpc/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, libtool, intltool, pkgconfig, glib
+, gtk2, curl, mpd_clientlib, libsoup, gob2, vala, libunique
+, libSM, libICE, sqlite, hicolor-icon-theme, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gmpc";
+  version = "11.8.16";
+
+  libmpd = stdenv.mkDerivation {
+    name = "libmpd-11.8.17";
+    src = fetchurl {
+      url = "http://download.sarine.nl/Programs/gmpc/11.8/libmpd-11.8.17.tar.gz";
+      sha256 = "10vspwsgr8pwf3qp2bviw6b2l8prgdiswgv7qiqiyr0h1mmk487y";
+    };
+    patches = [ ./libmpd-11.8.17-remove-strndup.patch ];
+
+    nativeBuildInputs = [ pkgconfig ];
+    buildInputs = [ glib ];
+  };
+
+  src = fetchurl {
+    url = "http://download.sarine.nl/Programs/gmpc/11.8/gmpc-11.8.16.tar.gz";
+    sha256 = "0b3bnxf98i5lhjyljvgxgx9xmb6p46cn3a9cccrng14nagri9556";
+  };
+
+  nativeBuildInputs = [ pkgconfig libtool intltool gob2 vala wrapGAppsHook ];
+  buildInputs = [
+    glib gtk2 curl mpd_clientlib libsoup
+    libunique libmpd libSM libICE sqlite hicolor-icon-theme
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://gmpclient.org";
+    description = "A GTK2 frontend for Music Player Daemon";
+    license = licenses.gpl2;
+    maintainers = [];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/gmpc/libmpd-11.8.17-remove-strndup.patch b/nixpkgs/pkgs/applications/audio/gmpc/libmpd-11.8.17-remove-strndup.patch
new file mode 100644
index 000000000000..ad4fdc02ef3e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/gmpc/libmpd-11.8.17-remove-strndup.patch
@@ -0,0 +1,15 @@
+diff --git a/src/libmpd-internal.h b/src/libmpd-internal.h
+index c84c3a4..51be441 100644
+--- a/src/libmpd-internal.h
++++ b/src/libmpd-internal.h
+@@ -206,10 +206,6 @@ int mpd_unlock_conn(MpdObj *mi);
+ MpdData * mpd_misc_sort_tag_list(MpdData *data);
+ 
+ 
+-#ifndef HAVE_STRNDUP
+-char * 		strndup					(const char *s, size_t n);
+-#endif
+-
+ int mpd_server_get_allowed_commands(MpdObj *mi);
+ typedef enum _MpdSearchType {
+ 	MPD_SEARCH_TYPE_NONE,
diff --git a/nixpkgs/pkgs/applications/audio/gmu/default.nix b/nixpkgs/pkgs/applications/audio/gmu/default.nix
new file mode 100644
index 000000000000..bfe9f72d6646
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/gmu/default.nix
@@ -0,0 +1,31 @@
+{stdenv, fetchurl, SDL, SDL_gfx, SDL_image, tremor, flac, mpg123, libmikmod
+, speex, ncurses
+, keymap ? "default"
+, conf ? "unknown"
+}:
+
+stdenv.mkDerivation rec {
+  name = "gmu-0.10.1";
+
+  src = fetchurl {
+    url = "http://wejp.k.vu/files/${name}.tar.gz";
+    sha256 = "03x0mc0xw2if0bpf0a15yprcyx1xccki039zvl2099dagwk6xskv";
+  };
+
+  buildInputs = [ SDL SDL_gfx SDL_image tremor flac mpg123 libmikmod speex ncurses ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  postInstall = ''
+    cp ${keymap}.keymap $out/share/gmu/default.keymap
+    cp gmuinput.${conf}.conf $out/share/gmu/gmuinput.conf
+    mkdir -p $out/etc/gmu
+    cp gmu.${conf}.conf $out/etc/gmu/gmu.conf
+  '';
+
+  meta = {
+    homepage = "http://wejp.k.vu/projects/gmu";
+    description = "Open source music player for portable gaming consoles and handhelds";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/gnome-podcasts/default.nix b/nixpkgs/pkgs/applications/audio/gnome-podcasts/default.nix
new file mode 100644
index 000000000000..d5bec0c09e5f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/gnome-podcasts/default.nix
@@ -0,0 +1,81 @@
+{ stdenv
+, rustPlatform
+, fetchFromGitLab
+, fetchpatch
+, meson
+, ninja
+, gettext
+, cargo
+, rustc
+, python3
+, pkgconfig
+, glib
+, libhandy
+, gtk3
+, dbus
+, openssl
+, sqlite
+, gst_all_1
+, wrapGAppsHook
+}:
+
+rustPlatform.buildRustPackage rec {
+  version = "0.4.7";
+  pname = "gnome-podcasts";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "World";
+    repo = "podcasts";
+    rev = version;
+    sha256 = "0vy5i77bv8c22ldhrnr4z6kx22zqnb1lg3s7y8673bqjgd7dppi0";
+  };
+
+  cargoSha256 = "1dlbdxsf9p2jzrsclm43k95y8m3zcd41qd9ajg1ii3fpnahi58kd";
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkgconfig
+    gettext
+    cargo
+    rustc
+    python3
+    wrapGAppsHook
+    glib
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    libhandy
+    dbus
+    openssl
+    sqlite
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-bad
+  ];
+
+  # use Meson/Ninja phases
+  configurePhase = null;
+  buildPhase = null;
+  checkPhase = null;
+  installPhase = null;
+
+  # tests require network
+  doCheck = false;
+
+  postPatch = ''
+    chmod +x scripts/compile-gschema.py # patchShebangs requires executable file
+    patchShebangs scripts/compile-gschema.py scripts/cargo.sh scripts/test.sh
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Listen to your favorite podcasts";
+    homepage = "https://wiki.gnome.org/Apps/Podcasts";
+    license = licenses.gpl3;
+    maintainers = teams.gnome.members;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/goattracker/default.nix b/nixpkgs/pkgs/applications/audio/goattracker/default.nix
new file mode 100644
index 000000000000..77a04221b84b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/goattracker/default.nix
@@ -0,0 +1,69 @@
+{ stdenv
+, fetchurl
+, unzip
+, makeDesktopItem
+, imagemagick
+, SDL
+, isStereo ? false
+}:
+
+with stdenv.lib;
+let
+  pname = "goattracker" + optionalString isStereo "-stereo";
+  desktopItem = makeDesktopItem {
+    type = "Application";
+    name = pname;
+    desktopName = "GoatTracker 2" + optionalString isStereo " Stereo";
+    genericName = "Music Tracker";
+    exec = if isStereo
+      then "gt2stereo"
+      else "goattrk2";
+    icon = "goattracker";
+    categories = "AudioVideo;AudioVideoEditing;";
+    extraEntries = "Keywords=tracker;music;";
+  };
+
+in stdenv.mkDerivation rec {
+  inherit pname;
+  version = if isStereo
+    then "2.76"  # stereo
+    else "2.75"; # normal
+
+  src = fetchurl {
+    url = "mirror://sourceforge/goattracker2/GoatTracker_${version}${optionalString isStereo "_Stereo"}.zip";
+    sha256 = if isStereo
+      then "12cz3780x5k047jqdv69n6rjgbfiwv67z850kfl4i37lxja432l7"  # stereo
+      else "1km97nl7qvk6qc5l5j69wncbm76hf86j47sgzgr968423g0bxxlk"; # normal
+  };
+  sourceRoot = (if isStereo then "gt2stereo/trunk" else "goattrk2") + "/src";
+
+  nativeBuildInputs = [ unzip imagemagick ];
+  buildInputs = [ SDL ];
+
+  # PREFIX gets treated as BINDIR.
+  makeFlags = [ "PREFIX=$(out)/bin/" ];
+
+  # The zip contains some build artifacts.
+  prePatch = "make clean";
+
+  # The destination does not get created automatically.
+  preBuild = "mkdir -p $out/bin";
+
+  # Other files get installed during the build phase.
+  installPhase = ''
+    convert goattrk2.bmp goattracker.png
+    install -Dm644 goattracker.png $out/share/icons/hicolor/32x32/apps/goattracker.png
+    ${desktopItem.buildCommand}
+  '';
+
+  meta = {
+    description = "A crossplatform music editor for creating Commodore 64 music. Uses reSID library by Dag Lem and supports alternatively HardSID & CatWeasel devices"
+      + optionalString isStereo " - Stereo version";
+    homepage = "https://cadaver.github.io/tools.html";
+    downloadPage = "https://sourceforge.net/projects/goattracker2/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ fgaz ];
+    platforms = platforms.all;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/audio/google-musicmanager/default.nix b/nixpkgs/pkgs/applications/audio/google-musicmanager/default.nix
new file mode 100644
index 000000000000..b4fe78dcbfcd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/google-musicmanager/default.nix
@@ -0,0 +1,77 @@
+{ stdenv, fetchurl
+, flac, expat, libidn, qtbase, qtwebkit, libvorbis }:
+assert stdenv.hostPlatform.system == "x86_64-linux";
+
+stdenv.mkDerivation rec {
+  version = "beta_1.0.467.4929-r0"; # friendly to nix-env version sorting algo
+  product = "google-musicmanager";
+  name    = "${product}-${version}";
+
+  # When looking for newer versions, since google doesn't let you list their repo dirs,
+  # curl http://dl.google.com/linux/musicmanager/deb/dists/stable/Release
+  # fetch an appropriate packages file such as main/binary-amd64/Packages:
+  # curl http://dl.google.com/linux/musicmanager/deb/dists/stable/main/binary-amd64/Packages
+  # which will contain the links to all available *.debs for the arch.
+
+  src = fetchurl {
+    url    = "http://dl.google.com/linux/musicmanager/deb/pool/main/g/google-musicmanager-beta/${name}_amd64.deb";
+    sha256 = "0yaprpbp44var88kdj1h11fqkhgcklixr69jyia49v9m22529gg2";
+  };
+
+  unpackPhase = ''
+    ar vx ${src}
+    tar xvf data.tar.xz
+    tar xvf control.tar.gz
+  '';
+
+  prePatch = ''
+    sed -i "s@\(Exec=\).*@\1$out/bin/google-musicmanager@" opt/google/musicmanager/google-musicmanager.desktop
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mkdir -p $out/lib
+    mkdir -p $out/share/applications
+
+    cp -r opt $out
+    find -name "*.so*" -exec cp "{}" $out/lib \;
+    ln -s $out/opt/google/musicmanager/google-musicmanager $out/bin
+    ln -s $out/opt/google/musicmanager/google-musicmanager.desktop $out/share/applications
+
+    for i in 16 32 48 128
+    do
+      iconDirectory=$out/usr/share/icons/hicolor/"$i"x"$i"/apps
+
+      mkdir -p $iconDirectory
+      ln -s $out/opt/google/musicmanager/product_logo_"$i".png $iconDirectory/google-musicmanager.png
+    done
+  '';
+
+  postFixup = ''
+    patchelf \
+      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "$(patchelf --print-rpath $out/opt/google/musicmanager/minidump_upload):${stdenv.lib.makeLibraryPath [ stdenv.cc.cc.lib ]}" \
+      $out/opt/google/musicmanager/minidump_upload
+
+    patchelf \
+      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "$(patchelf --print-rpath $out/opt/google/musicmanager/MusicManager):$out/lib:${stdenv.lib.makeLibraryPath [
+        flac
+        expat
+        libidn
+        qtbase
+        qtwebkit
+        libvorbis
+        stdenv.cc.cc.lib
+      ]}" \
+      $out/opt/google/musicmanager/MusicManager
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Uploads music from your computer to Google Play";
+    homepage    = "https://support.google.com/googleplay/answer/1229970";
+    license     = licenses.unfree;
+    maintainers = with maintainers; [ lovek323 ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/google-play-music-desktop-player/default.nix b/nixpkgs/pkgs/applications/audio/google-play-music-desktop-player/default.nix
new file mode 100644
index 000000000000..509d3ddcf751
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/google-play-music-desktop-player/default.nix
@@ -0,0 +1,82 @@
+{ stdenv, alsaLib, atk, at-spi2-atk, cairo, cups, dbus, dpkg, expat, fontconfig, freetype
+, fetchurl, GConf, gdk-pixbuf, glib, gtk2, gtk3, libpulseaudio, makeWrapper, nspr
+, nss, pango, udev, xorg
+}:
+
+let
+  version = "4.7.1";
+
+  deps = [
+    alsaLib
+    atk
+    at-spi2-atk
+    cairo
+    cups
+    dbus
+    expat
+    fontconfig
+    freetype
+    GConf
+    gdk-pixbuf
+    glib
+    gtk2
+    gtk3
+    libpulseaudio
+    nspr
+    nss
+    pango
+    stdenv.cc.cc
+    udev
+    xorg.libX11
+    xorg.libxcb
+    xorg.libXcomposite
+    xorg.libXcursor
+    xorg.libXdamage
+    xorg.libXext
+    xorg.libXfixes
+    xorg.libXi
+    xorg.libXrandr
+    xorg.libXrender
+    xorg.libXScrnSaver
+    xorg.libXtst
+  ];
+
+in
+
+stdenv.mkDerivation {
+  pname = "google-play-music-desktop-player";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://github.com/MarshallOfSound/Google-Play-Music-Desktop-Player-UNOFFICIAL-/releases/download/v${version}/google-play-music-desktop-player_${version}_amd64.deb";
+    sha256 = "1ljm9c5sv6wa7pa483yq03wq9j1h1jdh8363z5m2imz407yzgm5r";
+  };
+
+  dontBuild = true;
+  buildInputs = [ dpkg makeWrapper ];
+
+  unpackPhase = ''
+    dpkg -x $src .
+  '';
+
+  installPhase = ''
+    mkdir -p $out
+    cp -r ./usr/share $out
+    cp -r ./usr/bin $out
+
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+             "$out/share/google-play-music-desktop-player/Google Play Music Desktop Player"
+
+    wrapProgram $out/bin/google-play-music-desktop-player \
+      --prefix LD_LIBRARY_PATH : "$out/share/google-play-music-desktop-player" \
+      --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath deps}"
+  '';
+
+  meta = {
+    homepage = "https://www.googleplaymusicdesktopplayer.com/";
+    description = "A beautiful cross platform Desktop Player for Google Play Music";
+    license = stdenv.lib.licenses.mit;
+    platforms = [ "x86_64-linux" ];
+    maintainers = [ stdenv.lib.maintainers.SuprDewd ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/gpodder/default.nix b/nixpkgs/pkgs/applications/audio/gpodder/default.nix
new file mode 100644
index 000000000000..933c9ac02035
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/gpodder/default.nix
@@ -0,0 +1,81 @@
+{ stdenv, fetchFromGitHub, python3, python3Packages, intltool
+, glibcLocales, gnome3, gtk3, wrapGAppsHook
+, gobject-introspection
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "gpodder";
+  version = "3.10.15";
+  format = "other";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = version;
+    sha256 = "0ghbanj142n0hgydzfjmnkdgri2kswsjal3mn10c723kih4ir4yr";
+  };
+
+  patches = [
+    ./disable-autoupdate.patch
+  ];
+
+  postPatch = with stdenv.lib; ''
+    sed -i -re 's,^( *gpodder_dir *= *).*,\1"'"$out"'",' bin/gpodder
+  '';
+
+  nativeBuildInputs = [
+    intltool
+    wrapGAppsHook
+    glibcLocales
+  ];
+
+  buildInputs = [
+    python3
+    gobject-introspection
+    gnome3.adwaita-icon-theme
+  ];
+
+  checkInputs = with python3Packages; [
+    coverage minimock
+  ];
+
+  doCheck = true;
+
+  propagatedBuildInputs = with python3Packages; [
+    feedparser
+    dbus-python
+    mygpoclient
+    pygobject3
+    eyeD3
+    podcastparser
+    html5lib
+    gtk3
+  ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "share/applications/gpodder-url-handler.desktop"
+    "share/applications/gpodder.desktop"
+    "share/dbus-1/services/org.gpodder.service"
+  ];
+
+  preBuild = ''
+    export LC_ALL="en_US.UTF-8"
+  '';
+
+  installCheckPhase = ''
+    LC_ALL=C PYTHONPATH=./src:$PYTHONPATH python3 -m gpodder.unittests
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A podcatcher written in python";
+    longDescription = ''
+      gPodder downloads and manages free audio and video content (podcasts)
+      for you. Listen directly on your computer or on your mobile devices.
+    '';
+    homepage = "http://gpodder.org/";
+    license = licenses.gpl3;
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = with maintainers; [ skeidel mic92 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/gpodder/disable-autoupdate.patch b/nixpkgs/pkgs/applications/audio/gpodder/disable-autoupdate.patch
new file mode 100644
index 000000000000..8f77518d03e5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/gpodder/disable-autoupdate.patch
@@ -0,0 +1,55 @@
+--- a/share/gpodder/ui/gtk/menus.ui
++++ b/share/gpodder/ui/gtk/menus.ui
+@@ -13,10 +13,6 @@
+         <attribute name="action">app.gotoMygpo</attribute>
+         <attribute name="label" translatable="yes">Go to gpodder.net</attribute>
+       </item>
+-      <item>
+-        <attribute name="action">app.checkForUpdates</attribute>
+-        <attribute name="label" translatable="yes">Software updates</attribute>
+-      </item>
+     </section>
+     <section>
+       <item>
+@@ -201,4 +197,4 @@
+     </submenu>
+   </menu>
+ </interface>
+-<!-- :noTabs=true:tabSize=2:indentSize=2: -->
+\ No newline at end of file
++<!-- :noTabs=true:tabSize=2:indentSize=2: -->
+--- a/src/gpodder/config.py
++++ b/src/gpodder/config.py
+@@ -91,13 +91,6 @@
+         'retries': 3,  # number of retries when downloads time out
+     },
+ 
+-    # Software updates from gpodder.org
+-    'software_update': {
+-        'check_on_startup': True,  # check for updates on start
+-        'last_check': 0,  # unix timestamp of last update check
+-        'interval': 5,  # interval (in days) to check for updates
+-    },
+-
+     'ui': {
+         # Settings for the Command-Line Interface
+         'cli': {
+--- a/src/gpodder/gtkui/main.py
++++ b/src/gpodder/gtkui/main.py
+@@ -224,7 +224,7 @@
+             util.idle_add(self.subscribe_to_url, self.options.subscribe)
+         elif not self.channels:
+             self.on_itemUpdate_activate()
+-        elif self.config.software_update.check_on_startup:
++        elif False and self.config.software_update.check_on_startup:
+             # Check for software updates from gpodder.org
+             diff = time.time() - self.config.software_update.last_check
+             if diff > (60 * 60 * 24) * self.config.software_update.interval:
+@@ -3288,6 +3288,7 @@
+         If silent=False, a message will be shown even if no updates are
+         available (set silent=False when the check is manually triggered).
+         """
++        return
+         try:
+             up_to_date, version, released, days = util.get_update_info()
+         except Exception as e:
diff --git a/nixpkgs/pkgs/applications/audio/gradio/0001-Remove-post-install-script-that-hardcodes-paths.patch b/nixpkgs/pkgs/applications/audio/gradio/0001-Remove-post-install-script-that-hardcodes-paths.patch
new file mode 100644
index 000000000000..3a6296baaa64
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/gradio/0001-Remove-post-install-script-that-hardcodes-paths.patch
@@ -0,0 +1,23 @@
+From 184c64718ee68b2738647f4a106b260c47f00437 Mon Sep 17 00:00:00 2001
+From: Sam Parkinson <sam@sam.today>
+Date: Thu, 26 Oct 2017 14:50:13 +1100
+Subject: [PATCH] Remove post-install script that hardcodes paths
+
+---
+ meson.build | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 25f3e1a..18b43bd 100644
+--- a/meson.build
++++ b/meson.build
+@@ -21,4 +21,5 @@ subdir('src')
+ # subdir('tests')
+ # TODO: unit tests
+ 
+-meson.add_install_script('meson_post_install.sh')
++# This does not work for nixos; it hard-codes paths
++# meson.add_install_script('meson_post_install.sh')
+-- 
+2.14.2
+
diff --git a/nixpkgs/pkgs/applications/audio/gradio/default.nix b/nixpkgs/pkgs/applications/audio/gradio/default.nix
new file mode 100644
index 000000000000..384235fc0650
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/gradio/default.nix
@@ -0,0 +1,72 @@
+{ stdenv, fetchFromGitHub, pkgconfig
+, python3
+, gsettings-desktop-schemas
+, desktop-file-utils
+, glib
+, gtk3
+, intltool
+, libsoup
+, json-glib
+, wrapGAppsHook
+, meson
+, ninja
+, vala
+, sqlite
+, gst_all_1
+, gst_plugins ? with gst_all_1; [ gst-plugins-good gst-plugins-ugly ]
+}:
+let
+  version = "7.3";
+
+in stdenv.mkDerivation {
+  pname = "gradio";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "haecker-felix";
+    repo = "gradio";
+    rev = "v${version}";
+    sha256 = "00982dynl36lpsrx3mkd2a479zsrc8jvwfb8i7pi6w7fzzd8n8bl";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+
+    meson
+    ninja
+    vala
+
+    python3
+  ];
+  buildInputs = [
+    sqlite
+
+    glib
+    intltool
+    libsoup
+    json-glib
+
+    gtk3
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base
+
+    wrapGAppsHook
+    desktop-file-utils
+    gsettings-desktop-schemas
+  ] ++ gst_plugins;
+
+  enableParallelBuilding = true;
+  postInstall = ''
+    glib-compile-schemas "$out"/share/glib-2.0/schemas
+  '';
+
+  patches = [ ./0001-Remove-post-install-script-that-hardcodes-paths.patch ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/haecker-felix/gradio";
+    description = "A GTK3 app for finding and listening to internet radio stations";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.samdroid-apps ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/grandorgue/default.nix b/nixpkgs/pkgs/applications/audio/grandorgue/default.nix
new file mode 100644
index 000000000000..e2ba4ee2244e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/grandorgue/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenv, fetchsvn, cmake, pkg-config, gcc, pkgconfig, fftwFloat, alsaLib
+, zlib, wavpack, wxGTK31, udev, jackaudioSupport ? false, libjack2
+, includeDemo ? true }:
+
+stdenv.mkDerivation rec {
+  pname = "grandorgue";
+  rev = "2333";
+  version = "0.3.1-r${rev}";
+  src = fetchsvn {
+    url = "https://svn.code.sf.net/p/ourorgan/svn/trunk";
+    inherit rev;
+    sha256 = "0xzjdc2g4gja2lpmn21xhdskv43qpbpzkbb05jfqv6ma2zwffzz1";
+  };
+
+  nativeBuildInputs = [ cmake pkg-config ];
+
+  buildInputs = [ pkgconfig fftwFloat alsaLib zlib wavpack wxGTK31 udev ]
+    ++ lib.optional jackaudioSupport libjack2;
+
+  cmakeFlags = lib.optional (!jackaudioSupport) [
+    "-DRTAUDIO_USE_JACK=OFF"
+    "-DRTMIDI_USE_JACK=OFF"
+  ] ++ lib.optional (!includeDemo) "-DINSTALL_DEMO=OFF";
+
+  meta = {
+    description = "Virtual Pipe Organ Software";
+    homepage = "https://sourceforge.net/projects/ourorgan";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.puzzlewolf ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/greg/default.nix b/nixpkgs/pkgs/applications/audio/greg/default.nix
new file mode 100644
index 000000000000..e027680f5fe6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/greg/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, pythonPackages }:
+
+with pythonPackages; buildPythonApplication rec {
+  pname = "greg";
+  version = "0.4.7";
+
+  disabled = !isPy3k;
+
+  src = fetchFromGitHub {
+    owner = "manolomartinez";
+    repo = pname;
+    rev = "v" + version;
+    sha256 = "0bdzgh2k1ppgcvqiasxwp3w89q44s4jgwjidlips3ixx1bzm822v";
+  };
+
+  buildInputs = with pythonPackages; [ feedparser ];
+  propagatedBuildInputs = buildInputs;
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/manolomartinez/greg";
+    description = "A command-line podcast aggregator";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ edwtjo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/gspeech/default.nix b/nixpkgs/pkgs/applications/audio/gspeech/default.nix
new file mode 100644
index 000000000000..f51eb338d286
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/gspeech/default.nix
@@ -0,0 +1,73 @@
+{ lib
+, fetchFromGitHub
+, python3
+, gtk3
+, wrapGAppsHook
+, glibcLocales
+, gobject-introspection
+, gettext
+, pango
+, gdk-pixbuf
+, librsvg
+, atk
+, libnotify
+, libappindicator-gtk3
+, gst_all_1
+, makeWrapper
+, picotts
+, sox
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "gSpeech";
+  version = "0.9.2";
+
+  src = fetchFromGitHub {
+    owner = "mothsart";
+    repo = pname;
+    rev = version;
+    sha256 = "11pvdpb9jjssp8nmlj21gs7ncgfm89kw26mfc8c2x8w2q4h92ja3";
+  };
+
+  nativeBuildInputs = [
+    wrapGAppsHook
+    gobject-introspection
+    pango
+    gdk-pixbuf
+    atk
+    gettext
+    libnotify
+    libappindicator-gtk3
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+    makeWrapper
+  ];
+
+  buildInputs = [
+    glibcLocales
+    gtk3
+    python3
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    pygobject3
+    librsvg
+  ];
+
+  postFixup = ''
+    wrapProgram $out/bin/gspeech --prefix PATH : ${lib.makeBinPath [ picotts ]}
+    wrapProgram $out/bin/gspeech-cli --prefix PATH : ${lib.makeBinPath [ picotts ]}
+  '';
+
+  strictDeps = false;
+
+  meta = with lib; {
+    description = "A minimal GUI for the Text To Speech 'Svox Pico'. Read clipboard or selected text in different languages and manage it : pause, stop, replay.";
+    homepage = "https://github.com/mothsART/gSpeech";
+    maintainers = with maintainers; [ mothsart ];
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/audio/gtklick/default.nix b/nixpkgs/pkgs/applications/audio/gtklick/default.nix
new file mode 100644
index 000000000000..a81834c1fff7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/gtklick/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, pythonPackages, gettext, klick}:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "gtklick";
+  version = "0.6.4";
+
+  src = fetchurl {
+    url = "http://das.nasophon.de/download/${pname}-${version}.tar.gz";
+    sha256 = "7799d884126ccc818678aed79d58057f8cf3528e9f1be771c3fa5b694d9d0137";
+  };
+
+  pythonPath = with pythonPackages; [
+    pyliblo
+    pyGtkGlade
+  ];
+
+  nativeBuildInputs = [ gettext ];
+
+  propagatedBuildInputs = [ klick ];
+
+  # wrapPythonPrograms breaks gtklick in the postFixup phase.
+  # To fix it, apply wrapPythonPrograms and then clean up the wrapped file.
+  postFixup = ''
+    wrapPythonPrograms
+
+    sed -i "/import sys; sys.argv\[0\] = 'gtklick'/d" $out/bin/.gtklick-wrapped
+  '';
+
+  meta = {
+    homepage = "http://das.nasophon.de/gtklick/";
+    description = "Simple metronome with an easy-to-use GTK interface";
+    license = stdenv.lib.licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/gtkpod/default.nix b/nixpkgs/pkgs/applications/audio/gtkpod/default.nix
new file mode 100644
index 000000000000..1f293fe2d796
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/gtkpod/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, pkgconfig, wrapGAppsHook, intltool, libgpod, curl, flac,
+  gnome3, gtk3, gettext, perlPackages, flex, libid3tag, gdl,
+  libvorbis, gdk-pixbuf }:
+
+stdenv.mkDerivation rec {
+  version = "2.1.5";
+  pname = "gtkpod";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/gtkpod/${pname}-${version}.tar.gz";
+    sha256 = "0xisrpx069f7bjkyc8vqxb4k0480jmx1wscqxr6cpq1qj6pchzd5";
+  };
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook intltool ];
+  buildInputs = [
+    curl gettext
+    flex libgpod libid3tag flac libvorbis gtk3 gdk-pixbuf
+    gdl gnome3.adwaita-icon-theme gnome3.anjuta
+  ] ++ (with perlPackages; [ perl XMLParser ]);
+
+  patchPhase = ''
+    sed -i 's/which/type -P/' scripts/*.sh
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "GTK Manager for an Apple ipod";
+    homepage = "http://gtkpod.sourceforge.net";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.skeidel ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/guitarix/default.nix b/nixpkgs/pkgs/applications/audio/guitarix/default.nix
new file mode 100644
index 000000000000..9b8475006ccf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/guitarix/default.nix
@@ -0,0 +1,137 @@
+{ stdenv
+, fetchurl
+, avahi
+, bluez
+, boost
+, curl
+, eigen
+, fftw
+, gettext
+, glib
+, glib-networking
+, glibmm
+, gnome3
+, gsettings-desktop-schemas
+, gtk3
+, gtkmm3
+, hicolor-icon-theme
+, intltool
+, ladspaH
+, libav
+, libjack2
+, libsndfile
+, lilv
+, lrdf
+, lv2
+, pkgconfig
+, python2
+, sassc
+, serd
+, sord
+, sratom
+, wafHook
+, wrapGAppsHook
+, zita-convolver
+, zita-resampler
+, optimizationSupport ? false # Enable support for native CPU extensions
+}:
+
+let
+  inherit (stdenv.lib) optional;
+in
+
+stdenv.mkDerivation rec {
+  pname = "guitarix";
+  version = "0.40.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/guitarix/guitarix2-${version}.tar.xz";
+    sha256 = "0q9050499hcj19hvbxb069vxh5yclawjg04vryh46lxm4sfy9g57";
+  };
+
+  # see: https://sourceforge.net/p/guitarix/bugs/105
+  patches = [ ./fix-build.patch ];
+
+  nativeBuildInputs = [
+    gettext
+    hicolor-icon-theme
+    intltool
+    pkgconfig
+    python2
+    wafHook
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    avahi
+    bluez
+    boost
+    curl
+    eigen
+    fftw
+    glib
+    glib-networking.out
+    glibmm
+    gnome3.adwaita-icon-theme
+    gsettings-desktop-schemas
+    gtk3
+    gtkmm3
+    ladspaH
+    libav
+    libjack2
+    libsndfile
+    lilv
+    lrdf
+    lv2
+    sassc
+    serd
+    sord
+    sratom
+    zita-convolver
+    zita-resampler
+  ];
+
+  # this doesnt build, probably because we have the wrong faust version:
+  #       "--faust"
+  # aproved versions are 2.20.2 and 2.15.11
+  wafConfigureFlags = [
+    "--no-faust"
+    "--no-font-cache-update"
+    "--shared-lib"
+    "--no-desktop-update"
+    "--enable-nls"
+    "--install-roboto-font"
+    "--includeresampler"
+    "--includeconvolver"
+  ] ++ optional optimizationSupport "--optimization";
+
+  meta = with stdenv.lib; {
+    description = "A virtual guitar amplifier for Linux running with JACK";
+    longDescription = ''
+        guitarix is a virtual guitar amplifier for Linux running with
+      JACK (Jack Audio Connection Kit). It is free as in speech and
+      free as in beer. Its free sourcecode allows to build it for
+      other UNIX-like systems also, namely for BSD and for MacOSX.
+
+        It takes the signal from your guitar as any real amp would do:
+      as a mono-signal from your sound card. Your tone is processed by
+      a main amp and a rack-section. Both can be routed separately and
+      deliver a processed stereo-signal via JACK. You may fill the
+      rack with effects from more than 25 built-in modules spanning
+      from a simple noise-gate to brain-slashing modulation-fx like
+      flanger, phaser or auto-wah. Your signal is processed with
+      minimum latency. On any properly set-up Linux-system you do not
+      need to wait for more than 10 milli-seconds for your playing to
+      be delivered, processed by guitarix.
+
+        guitarix offers the range of sounds you would expect from a
+      full-featured universal guitar-amp. You can get crisp
+      clean-sounds, nice overdrive, fat distortion and a diversity of
+      crazy sounds never heard before.
+    '';
+    homepage = "http://guitarix.sourceforge.net/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ astsmtl goibhniu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/guitarix/fix-build.patch b/nixpkgs/pkgs/applications/audio/guitarix/fix-build.patch
new file mode 100644
index 000000000000..4a0e42677765
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/guitarix/fix-build.patch
@@ -0,0 +1,10 @@
+--- a/src/LV2/xputty/xfilepicker.cpp
++++ b/src/LV2/xputty/xfilepicker.cpp
+@@ -191,6 +191,6 @@
+     filepicker->selected_file = NULL;
+     filepicker->path = NULL;
+     filepicker->filter = NULL;
+-    asprintf(&filepicker->path, path);
++    asprintf(&filepicker->path, "%s", path);
+     assert(filepicker->path != NULL);
+ }
diff --git a/nixpkgs/pkgs/applications/audio/gxmatcheq-lv2/default.nix b/nixpkgs/pkgs/applications/audio/gxmatcheq-lv2/default.nix
new file mode 100644
index 000000000000..b2d99e0eba86
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/gxmatcheq-lv2/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, xorg, xorgproto, cairo, lv2, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "GxMatchEQ.lv2";
+  version = "0.1";
+
+  src = fetchFromGitHub {
+    owner = "brummer10";
+    repo = pname;
+    rev = "V${version}";
+    sha256 = "0azdmgzqwjn26nx38iw13666a1i4y2bv39wk89pf6ihdi46klf72";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    xorg.libX11 xorgproto cairo lv2
+  ];
+
+  # error: format not a string literal and no format arguments [-Werror=format-security]
+  hardeningDisable = [ "format" ];
+
+  installFlags = [ "INSTALL_DIR=$(out)/lib/lv2" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/brummer10/GxMatchEQ.lv2";
+    description = "Matching Equalizer to apply EQ curve from one source to another source";
+    maintainers = [ maintainers.magnetophon ];
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/gxplugins-lv2/default.nix b/nixpkgs/pkgs/applications/audio/gxplugins-lv2/default.nix
new file mode 100644
index 000000000000..077bb407020e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/gxplugins-lv2/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, xorg, xorgproto, cairo, lv2, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "GxPlugins.lv2";
+  version = "0.7";
+
+  src = fetchFromGitHub {
+    owner = "brummer10";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0jqdqnkg7pg9plcbxy49p7gcs1aj6h0xf7y9gndmjmkw5yjn2940";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    xorg.libX11 xorgproto cairo lv2
+  ];
+
+  installFlags = [ "INSTALL_DIR=$(out)/lib/lv2" ];
+
+  configurePhase = ''
+    for i in GxBoobTube GxValveCaster; do
+      substituteInPlace $i.lv2/Makefile --replace "\$(shell which echo) -e" "echo -e"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/brummer10/GxPlugins.lv2";
+    description = "A set of extra lv2 plugins from the guitarix project";
+    maintainers = [ maintainers.magnetophon ];
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/helio-workstation/default.nix b/nixpkgs/pkgs/applications/audio/helio-workstation/default.nix
new file mode 100644
index 000000000000..3ada3224e33e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/helio-workstation/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchFromGitHub
+, alsaLib, freetype, xorg, curl, libGL, libjack2, gnome3
+, pkgconfig, makeWrapper
+}:
+
+stdenv.mkDerivation rec {
+  pname = "helio-workstation";
+  version = "2.2";
+
+  src = fetchFromGitHub {
+    owner = "helio-fm";
+    repo = pname;
+    rev = version;
+    fetchSubmodules = true;
+    sha256 = "16iwj4mjs1nm8dlk70q97svp3vkcgs7hdj9hfda9h67acn4a8vvk";
+  };
+
+  buildInputs = [
+    alsaLib freetype xorg.libX11 xorg.libXext xorg.libXinerama xorg.libXrandr
+    xorg.libXcursor xorg.libXcomposite curl libGL libjack2 gnome3.zenity
+  ];
+
+  nativeBuildInputs = [ pkgconfig makeWrapper ];
+
+  preBuild = "cd Projects/LinuxMakefile";
+  buildFlags = [ "CONFIG=Release64" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install -Dm755 build/Helio $out/bin
+    wrapProgram $out/bin/Helio --prefix PATH ":" ${gnome3.zenity}/bin
+
+    mkdir -p $out/share
+    cp -r ../Deployment/Linux/Debian/x64/usr/share/* $out/share
+    substituteInPlace $out/share/applications/Helio.desktop \
+      --replace "/usr/bin/helio" "$out/bin/Helio"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "One music sequencer for all major platforms, both desktop and mobile";
+    homepage = "https://helio.fm/";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.suhr ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/helm/default.nix b/nixpkgs/pkgs/applications/audio/helm/default.nix
new file mode 100644
index 000000000000..8459967a363c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/helm/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchFromGitHub , xorg, freetype, alsaLib, curl, libjack2
+, lv2, pkgconfig, libGLU, libGL }:
+
+  stdenv.mkDerivation {
+  version = "0.9.0";
+  pname = "helm";
+
+  src = fetchFromGitHub {
+    owner = "mtytel";
+    repo = "helm";
+    rev = "927d2ed27f71a735c3ff2a1226ce3129d1544e7e";
+    sha256 = "17ys2vvhncx9i3ydg3xwgz1d3gqv4yr5mqi7vr0i0ca6nad6x3d4";
+  };
+
+  buildInputs = [
+    xorg.libX11 xorg.libXcomposite xorg.libXcursor xorg.libXext
+    xorg.libXinerama xorg.libXrender xorg.libXrandr
+    freetype alsaLib curl libjack2 pkgconfig libGLU libGL lv2
+  ];
+
+  CXXFLAGS = "-DHAVE_LROUND";
+
+  patchPhase = ''
+    sed -i 's|usr/||g' Makefile
+  '';
+
+  buildPhase = ''
+    make lv2
+    make standalone
+  '';
+
+  installPhase = ''
+   make DESTDIR="$out" install
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://tytel.org/helm";
+    description = "A free, cross-platform, polyphonic synthesizer";
+    longDescription = ''
+      A free, cross-platform, polyphonic synthesizer.
+      Features:
+        32 voice polyphony
+        Interactive visual interface
+        Powerful modulation system with live visual feedback
+        Dual oscillators with cross modulation and up to 15 oscillators each
+        Unison and Harmony mode for oscillators
+        Oscillator feedback and saturation for waveshaping
+        12 different waveforms
+        7 filter types with keytracking
+        2 monophonic and 1 polyphonic LFO
+        Step sequencer
+        Lots of modulation sources including polyphonic aftertouch
+        Simple arpeggiator
+        Effects: Formant filter, stutter, delay
+    '';
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/hybridreverb2/default.nix b/nixpkgs/pkgs/applications/audio/hybridreverb2/default.nix
new file mode 100644
index 000000000000..3f1fac79623d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/hybridreverb2/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchFromGitHub, fetchzip, cmake, pkgconfig, lv2, alsaLib, libjack2,
+  freetype, libX11, gtk3, pcre, libpthreadstubs, libXdmcp, libxkbcommon,
+  epoxy, at-spi2-core, dbus, curl, fftwFloat }:
+
+let
+  pname = "HybridReverb2";
+  version = "2.1.1";
+  owner = "jpcima";
+  DBversion = "1.0.0";
+in
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+
+  impulseDB = fetchzip {
+    url = "https://github.com/${owner}/${pname}-impulse-response-database/archive/v${DBversion}.zip";
+    sha256 = "1hlfxbbkahm1k2sk3c3n2mjaz7k80ky3r55xil8nfbvbv0qan89z";
+  };
+
+  src = fetchFromGitHub {
+    inherit owner;
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "15mba9qvlis0qrklr50wp3jdysvmk33m7pvclp0k1is9pirj97cb";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ pkgconfig cmake ];
+  buildInputs = [ lv2 alsaLib libjack2 freetype libX11 gtk3 pcre
+    libpthreadstubs libXdmcp libxkbcommon epoxy at-spi2-core dbus curl fftwFloat ];
+
+  cmakeFlags = [
+    "-DHybridReverb2_AdvancedJackStandalone=ON"
+    "-DHybridReverb2_UseLocalDatabase=ON"
+  ];
+
+  postInstall = ''
+    mkdir -p $out/share/${pname}/
+    cp  -r ${impulseDB}/* $out/share/${pname}/
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://www2.ika.ruhr-uni-bochum.de/HybridReverb2";
+    description = "Reverb effect using hybrid impulse convolution";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/hydrogen/default.nix b/nixpkgs/pkgs/applications/audio/hydrogen/default.nix
new file mode 100644
index 000000000000..b3aff4e4c509
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/hydrogen/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, pkgconfig, cmake
+, alsaLib, boost, glib, lash, libjack2, libarchive, libsndfile, lrdf, qt4
+}:
+
+stdenv.mkDerivation rec {
+  version = "0.9.7";
+  pname = "hydrogen";
+
+  src = fetchurl {
+    url = "https://github.com/hydrogen-music/hydrogen/archive/${version}.tar.gz";
+    sha256 = "1dy2jfkdw0nchars4xi4isrz66fqn53a9qk13bqza7lhmsg3s3qy";
+  };
+
+  nativeBuildInputs = [ pkgconfig cmake ];
+  buildInputs = [
+    alsaLib boost glib lash libjack2 libarchive libsndfile lrdf qt4
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Advanced drum machine";
+    homepage = "http://www.hydrogen-music.org";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.goibhniu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/hydrogen/unstable.nix b/nixpkgs/pkgs/applications/audio/hydrogen/unstable.nix
new file mode 100644
index 000000000000..2f220f8d31aa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/hydrogen/unstable.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, wrapQtAppsHook
+, alsaLib, ladspa-sdk, lash, libarchive, libjack2, liblo, libpulseaudio, libsndfile, lrdf
+, qtbase, qttools, qtxmlpatterns
+}:
+
+stdenv.mkDerivation rec {
+  pname = "hydrogen";
+  version = "1.0.0-beta2";
+
+  src = fetchFromGitHub {
+    owner = "hydrogen-music";
+    repo = pname;
+    rev = version;
+    sha256 = "1s3jrdyjpm92flw9mkkxchnj0wz8nn1y1kifii8ws252iiqjya4a";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig wrapQtAppsHook ];
+  buildInputs = [
+    alsaLib ladspa-sdk lash libarchive libjack2 liblo libpulseaudio libsndfile lrdf
+    qtbase qttools qtxmlpatterns
+  ];
+
+  cmakeFlags = [
+    "-DWANT_DEBUG=OFF"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Advanced drum machine";
+    homepage = "http://www.hydrogen-music.org";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ goibhniu orivej ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/i-score/default.nix b/nixpkgs/pkgs/applications/audio/i-score/default.nix
new file mode 100644
index 000000000000..daedb9b98206
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/i-score/default.nix
@@ -0,0 +1,85 @@
+{
+  alsaLib,
+  boost,
+  cln,
+  cmake,
+  fetchFromGitHub,
+  gcc,
+  ginac,
+  jamomacore,
+  kdnssd,
+  libsndfile,
+  ninja,
+  portaudio,
+  portmidi,
+  qtbase,
+  qtdeclarative,
+  qtimageformats,
+  qtmultimedia,
+  qtquickcontrols2,
+  qtserialport,
+  qtsvg,
+  qttools,
+  qtwebsockets,
+  rtaudio,
+  stdenv
+}:
+
+stdenv.mkDerivation rec {
+  version = "1.0.0-b31";
+  pname = "i-score";
+
+  src = fetchFromGitHub {
+    owner = "OSSIA";
+    repo = "i-score";
+    rev = "v${version}";
+    sha256 = "0g7s6n11w3wflrv5i2047dxx56lryms7xj0mznnlk5bii7g8dxzb";
+    fetchSubmodules = true;
+  };
+
+  buildInputs = [
+    alsaLib
+    boost
+    cln
+    cmake
+    ginac
+    gcc
+    jamomacore
+    kdnssd
+    libsndfile
+    ninja
+    portaudio
+    portmidi
+    qtbase
+    qtdeclarative
+    qtimageformats
+    qtmultimedia
+    qtquickcontrols2
+    qtserialport
+    qtsvg
+    qttools
+    qtwebsockets
+    rtaudio
+  ];
+
+  cmakeFlags = [
+    "-GNinja"
+    "-DISCORE_CONFIGURATION=static-release"
+    "-DISCORE_ENABLE_LTO=OFF"
+    "-DISCORE_BUILD_FOR_PACKAGE_MANAGER=True"
+  ];
+
+  preConfigure = ''
+    export CMAKE_PREFIX_PATH="''${CMAKE_PREFIX_PATH-}:$(echo "${jamomacore}/jamoma/share/cmake/Jamoma")"
+  '';
+
+  postInstall = ''rm $out/bin/i-score.sh'';
+
+  meta = {
+    description = "An interactive sequencer for the intermedia arts";
+    homepage = "http://i-score.org/";
+    license = stdenv.lib.licenses.cecill20;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/iannix/default.nix b/nixpkgs/pkgs/applications/audio/iannix/default.nix
new file mode 100644
index 000000000000..fa779a7f0f4e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/iannix/default.nix
@@ -0,0 +1,30 @@
+{ mkDerivation, stdenv, fetchFromGitHub, alsaLib, pkgconfig, qtbase, qtscript, qmake
+}:
+
+mkDerivation {
+  pname = "iannix";
+  version = "2016-01-31";
+  src = fetchFromGitHub {
+    owner = "iannix";
+    repo = "IanniX";
+    rev = "f84becdcbe154b20a53aa2622068cb8f6fda0755";
+    sha256 = "184ydb9f1303v332k5k3f1ki7cb6nkxhh6ij0yn72v7dp7figrgj";
+  };
+
+  nativeBuildInputs = [ pkgconfig qmake ];
+  buildInputs = [ alsaLib qtbase qtscript ];
+
+  qmakeFlags = [ "PREFIX=/" ];
+
+  installFlags = [ "INSTALL_ROOT=$(out)" ];
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Graphical open-source sequencer,";
+    homepage = "https://www.iannix.org/";
+    license = stdenv.lib.licenses.lgpl3;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.nico202 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/id3v2/default.nix b/nixpkgs/pkgs/applications/audio/id3v2/default.nix
new file mode 100644
index 000000000000..75d999ede1d7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/id3v2/default.nix
@@ -0,0 +1,28 @@
+{stdenv, fetchurl, id3lib, groff, zlib}:
+
+stdenv.mkDerivation rec {
+  pname = "id3v2";
+  version = "0.1.12";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/id3v2/${pname}-${version}.tar.gz";
+    sha256 = "1gr22w8gar7zh5pyyvdy7cy26i47l57jp1l1nd60xfwx339zl1c1";
+  };
+
+  nativeBuildInputs = [ groff ];
+  buildInputs = [ id3lib zlib ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+  buildFlags = [ "clean" "all" ];
+
+  preInstall = ''
+    mkdir -p $out/{bin,share/man/man1}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A command line editor for id3v2 tags";
+    homepage = "http://id3v2.sourceforge.net/";
+    license = licenses.gpl2Plus;
+    platforms = with platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/infamousPlugins/default.nix b/nixpkgs/pkgs/applications/audio/infamousPlugins/default.nix
new file mode 100644
index 000000000000..9ba835eb7eae
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/infamousPlugins/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, fetchpatch, pkgconfig, cairomm, cmake, lv2, libpthreadstubs, libXdmcp, libXft, ntk, pcre, fftwFloat, zita-resampler }:
+
+stdenv.mkDerivation rec {
+  pname = "infamousPlugins";
+  version = "0.3.0";
+
+  src = fetchFromGitHub {
+    owner = "ssj71";
+    repo = "infamousPlugins";
+    rev = "v${version}";
+    sha256 = "1r72agk5nxf5k0mghcc2j90z43j5d9i7rqjmf49jfyqnd443isip";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/ssj71/infamousPlugins/commit/06dd967b4736ea886dc1dc07f882cb1563961582.patch";
+      sha256 = "08xwh6px13y1gykaw103nhvjms7vgbgkcm0avh9f5d2d7aadq0l2";
+    })
+  ];
+  nativeBuildInputs = [ pkgconfig cmake ];
+  buildInputs = [ cairomm lv2 libpthreadstubs libXdmcp libXft ntk pcre fftwFloat zita-resampler ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://ssj71.github.io/infamousPlugins";
+    description = "A collection of open-source LV2 plugins";
+    longDescription = ''
+      These are audio plugins in the LV2 format, developed for linux. Most are suitable for live use.
+      This collection contains:
+        * Cellular Automaton Synth - additive synthesizer, where 16 harmonics are added according to rules of elementary cellular automata
+        * Envelope Follower - a fully featured envelope follower plugin
+        * Hip2B - a distortion/destroyer plugin
+        * cheap distortion - another distortion plugin, but this one I wanted to get it as light as possible
+        * stuck - a clone of the electro-harmonix freeze
+        * power cut - this effect is commonly called tape stop
+        * power up - the opposite of the power cut
+        * ewham - a whammy style pitchshifter
+        * lushlife - a simulated double tracking plugin capable of everything from a thin beatle effect to thick lush choruses to weird outlandish effects
+    '';
+    license = licenses.gpl2;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ingen/default.nix b/nixpkgs/pkgs/applications/audio/ingen/default.nix
new file mode 100644
index 000000000000..c5d4b3f87f49
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ingen/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchgit, boost, ganv, glibmm, gtkmm2, libjack2, lilv
+, lv2, makeWrapper, pkgconfig, python, raul, rdflib, serd, sord, sratom
+, wafHook
+, suil
+}:
+
+stdenv.mkDerivation  rec {
+  pname = "ingen";
+  version = "unstable-2019-12-09";
+  name = "${pname}-${version}";
+
+  src = fetchgit {
+    url = "https://gitlab.com/drobilla/ingen.git";
+    rev = "e32f32a360f2bf8f017ea347b6d1e568c0beaf68";
+    sha256 = "0wjn2i3j7jb0bmxymg079xpk4iplb91q0xqqnvnpvyldrr7gawlb";
+    deepClone = true;
+  };
+
+  nativeBuildInputs = [ pkgconfig wafHook ];
+  buildInputs = [
+    boost ganv glibmm gtkmm2 libjack2 lilv lv2 makeWrapper
+    python raul serd sord sratom suil
+  ];
+
+  preConfigure = ''
+    sed -e "s@{PYTHONDIR}/'@out/'@" -i wscript
+  '';
+
+  propagatedBuildInputs = [ rdflib ];
+
+  postInstall = ''
+    for program in ingenams ingenish
+    do
+      wrapProgram $out/bin/$program \
+        --prefix PYTHONPATH : $out/${python.sitePackages}:$PYTHONPATH
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A modular audio processing system using JACK and LV2 or LADSPA plugins";
+    homepage = "http://drobilla.net/software/ingen";
+    license = licenses.agpl3Plus;
+    maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ir.lv2/default.nix b/nixpkgs/pkgs/applications/audio/ir.lv2/default.nix
new file mode 100644
index 000000000000..aa5eeae0a46c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ir.lv2/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, fftw, gtk2, lv2, libsamplerate, libsndfile, pkgconfig, zita-convolver }:
+
+stdenv.mkDerivation rec {
+  pname = "ir.lv2";
+  version = "1.2.4";
+
+  src = fetchFromGitHub {
+    owner = "tomszilagyi";
+    repo = "ir.lv2";
+    rev = version;
+    sha256 = "1p6makmgr898fakdxzl4agh48qqwgv1k1kwm8cgq187n0mhiknp6";
+  };
+
+  buildInputs = [ fftw gtk2 lv2 libsamplerate libsndfile zita-convolver ];
+
+  nativeBuildInputs = [  pkgconfig ];
+
+  postPatch = ''
+     # Fix build with lv2 1.18: https://github.com/tomszilagyi/ir.lv2/pull/20
+     find . -type f -exec fgrep -q LV2UI_Descriptor {} \; \
+       -exec sed -i {} -e 's/const struct _\?LV2UI_Descriptor/const LV2UI_Descriptor/' \;
+   '';
+
+
+  postBuild = "make convert4chan";
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    mkdir "$out/include"
+    mkdir -p "$out/share/doc"
+
+    make PREFIX="$out" INSTDIR="$out/lib/lv2" install
+    install -Dm755 convert4chan "$out/bin/convert4chan"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://factorial.hu/plugins/lv2/ir";
+    description = "Zero-latency, realtime, high performance signal convolver especially for creating reverb effects";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/jaaa/default.nix b/nixpkgs/pkgs/applications/audio/jaaa/default.nix
new file mode 100644
index 000000000000..80f15935af23
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/jaaa/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, alsaLib, libclthreads, libclxclient, libX11, libXft, libXrender, fftwFloat, libjack2, zita-alsa-pcmi }:
+
+stdenv.mkDerivation rec {
+  pname = "jaaa";
+  version = "0.9.2";
+
+  src = fetchurl {
+    url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${pname}-${version}.tar.bz2";
+    sha256 = "1czksxx2g8na07k7g57qlz0vvkkgi5bzajcx7vc7jhb94hwmmxbc";
+  };
+
+  buildInputs = [
+    alsaLib libclthreads libclxclient libX11 libXft libXrender fftwFloat libjack2 zita-alsa-pcmi
+  ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "SUFFIX=''"
+  ];
+
+  preConfigure = ''
+    cd ./source/
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/index.html";
+    description = "JACK and ALSA Audio Analyser";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/jack-capture/default.nix b/nixpkgs/pkgs/applications/audio/jack-capture/default.nix
new file mode 100644
index 000000000000..e443a0a52694
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/jack-capture/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, libjack2, libsndfile, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "jack_capture";
+  version = "0.9.73";
+
+  src = fetchurl {
+    url = "https://archive.notam02.no/arkiv/src/${pname}-${version}.tar.gz";
+    sha256 = "1pji0zdwm3kxjrkbzj7fnxhr8ncrc8pyqnwyrh47fhypgqjv1br1";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libjack2 libsndfile ];
+
+  buildPhase = "PREFIX=$out make jack_capture";
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp jack_capture $out/bin/
+  '';
+
+  hardeningDisable = [ "format" ];
+
+  meta = with stdenv.lib; {
+    description = "A program for recording soundfiles with jack";
+    homepage = "http://archive.notam02.no/arkiv/src";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.goibhniu ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/jack-oscrolloscope/default.nix b/nixpkgs/pkgs/applications/audio/jack-oscrolloscope/default.nix
new file mode 100644
index 000000000000..08263f2abddc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/jack-oscrolloscope/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, SDL, libjack2, libGLU, libGL, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "jack_oscrolloscope";
+  version = "0.7";
+
+  src = fetchurl {
+    url = "http://das.nasophon.de/download/${pname}-${version}.tar.gz";
+    sha256 = "1pl55in0sj7h5r06n1v91im7d18pplvhbjhjm1fdl39zwnyxiash";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ SDL libjack2 libGLU libGL ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mv jack_oscrolloscope $out/bin/
+  '';
+
+  meta = with stdenv.lib; { 
+    description = "A simple waveform viewer for JACK";
+    homepage = "http://das.nasophon.de/jack_oscrolloscope";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.goibhniu ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/jack-rack/default.nix b/nixpkgs/pkgs/applications/audio/jack-rack/default.nix
new file mode 100644
index 000000000000..d13dbcc16889
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/jack-rack/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, pkgconfig, libjack2, ladspaH, gtk2, alsaLib, libxml2, lrdf }:
+stdenv.mkDerivation rec {
+  name = "jack-rack-1.4.7";
+  src = fetchurl {
+    url = "mirror://sourceforge/jack-rack/${name}.tar.bz2";
+    sha256 = "1lmibx9gicagcpcisacj6qhq6i08lkl5x8szysjqvbgpxl9qg045";
+  };
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libjack2 ladspaH gtk2 alsaLib libxml2 lrdf ];
+  NIX_LDFLAGS = "-ldl -lm -lpthread";
+
+  meta = {
+    description = ''An effects "rack" for the JACK low latency audio API'';
+    longDescription = ''
+      JACK Rack is an effects "rack" for the JACK low latency audio
+      API. The rack can be filled with LADSPA effects plugins and can
+      be controlled using the ALSA sequencer. It's phat; it turns your
+      computer into an effects box.
+    '';
+    homepage = "http://jack-rack.sourceforge.net/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [ stdenv.lib.maintainers.astsmtl ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/jackmeter/default.nix b/nixpkgs/pkgs/applications/audio/jackmeter/default.nix
new file mode 100644
index 000000000000..2a75b384af5c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/jackmeter/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, libjack2, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  name = "jackmeter-0.4";
+
+  src = fetchurl {
+    url = "https://www.aelius.com/njh/jackmeter/${name}.tar.gz";
+    sha256 = "1cnvgx3jv0yvxlqy0l9k285zgvazmh5k8m4l7lxckjfm5bn6hm1r";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libjack2 ];
+
+  meta = { 
+    description = "Console jack loudness meter";
+    homepage = "https://www.aelius.com/njh/jackmeter/";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.marcweber ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/jackmix/default.nix b/nixpkgs/pkgs/applications/audio/jackmix/default.nix
new file mode 100644
index 000000000000..c3a46439ba70
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/jackmix/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, pkgconfig, scons, qt4, lash, libjack2, jack ? libjack2 }:
+
+stdenv.mkDerivation {
+  name = "jackmix-0.5.2";
+  src = fetchurl {
+    url = "https://github.com/kampfschlaefer/jackmix/archive/v0.5.2.tar.gz";
+    sha256 = "18f5v7g66mgarhs476frvayhch7fy4nyjf2xivixc061ipn0m82j";
+  };
+
+  patches = [ ./no_error.patch ];
+
+  nativeBuildInputs = [ scons.py2 pkgconfig ];
+  buildInputs = [
+    qt4
+    lash
+    jack
+  ];
+
+  installPhase = ''
+    install -D jackmix/jackmix $out/bin/jackmix
+  '';
+
+  meta = {
+    description = "Matrix-Mixer for the Jack-Audio-connection-Kit";
+    homepage = "http://www.arnoldarts.de/jackmix/";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.kampfschlaefer ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/jackmix/no_error.patch b/nixpkgs/pkgs/applications/audio/jackmix/no_error.patch
new file mode 100644
index 000000000000..d1a714ded9ca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/jackmix/no_error.patch
@@ -0,0 +1,13 @@
+diff --git a/SConstruct b/SConstruct
+index 4290fa5..0a7a679 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -16,7 +16,7 @@ env = Environment(
+ env.Replace( LIBS="" )
+ env.Replace( LIBPATH="" )
+
+-env.MergeFlags( ['-Wall', '-Werror', '-g', '-fpic'] )
++env.MergeFlags( ['-g', '-fpic'] )
+
+ tests = { }
+ tests.update( env['PKGCONFIG_TESTS'] )
diff --git a/nixpkgs/pkgs/applications/audio/jalv/default.nix b/nixpkgs/pkgs/applications/audio/jalv/default.nix
new file mode 100644
index 000000000000..bbf66a74bc50
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/jalv/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, gtk3, libjack2, lilv, lv2, pkgconfig, python
+, serd, sord , sratom, suil, wafHook }:
+
+stdenv.mkDerivation  rec {
+  pname = "jalv";
+  version = "1.6.4";
+
+  src = fetchurl {
+    url = "https://download.drobilla.net/${pname}-${version}.tar.bz2";
+    sha256 = "1wwfn7yzbs37s2rdlfjgks63svd5g14yyzd2gdl7h0z12qncwsy2";
+  };
+
+  nativeBuildInputs = [ pkgconfig wafHook ];
+  buildInputs = [
+    gtk3 libjack2 lilv lv2 python serd sord sratom suil
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A simple but fully featured LV2 host for Jack";
+    homepage = "http://drobilla.net/software/jalv";
+    license = licenses.isc;
+    maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/jamin/default.nix b/nixpkgs/pkgs/applications/audio/jamin/default.nix
new file mode 100644
index 000000000000..a9b423320a0e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/jamin/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, fftwFloat, gtk2, ladspaPlugins, libjack2, liblo, libxml2
+, makeWrapper, pkgconfig, perlPackages
+}:
+
+stdenv.mkDerivation {
+  name = "jamin-0.95.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/jamin/jamin-0.95.0.tar.gz";
+    sha256 = "0g5v74cm0q3p3pzl6xmnp4rqayaymfli7c6z8s78h9rgd24fwbvn";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ fftwFloat gtk2 ladspaPlugins libjack2 liblo libxml2 makeWrapper ]
+    ++ (with perlPackages; [ perl XMLParser ]);
+
+  NIX_LDFLAGS = "-ldl";
+
+  postInstall = ''
+    wrapProgram $out/bin/jamin --set LADSPA_PATH ${ladspaPlugins}/lib/ladspa
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://jamin.sourceforge.net";
+    description = "JACK Audio Mastering interface";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.nico202 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/jamulus/default.nix b/nixpkgs/pkgs/applications/audio/jamulus/default.nix
new file mode 100644
index 000000000000..498d980676d7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/jamulus/default.nix
@@ -0,0 +1,27 @@
+{ mkDerivation, stdenv, fetchFromGitHub, fetchpatch, pkg-config, qtscript, qmake, libjack2
+}:
+
+mkDerivation rec {
+  pname = "jamulus";
+  version = "3.5.6";
+  src = fetchFromGitHub {
+    owner = "corrados";
+    repo = "jamulus";
+    rev = "r${stdenv.lib.replaceStrings [ "." ] [ "_" ] version}";
+    sha256 = "00vd6kffsf3vqfwaxjvln63x3n0q32f385qc51fn5iyj54410x0f";
+  };
+
+  nativeBuildInputs = [ pkg-config qmake ];
+  buildInputs = [ qtscript libjack2 ];
+
+  qmakeFlags = [ "CONFIG+=noupcasename" ];
+
+  meta = {
+    description = "Enables musicians to perform real-time jam sessions over the internet";
+    longDescription = "You also need to enable JACK and should enable several real-time optimizations. See project website for details";
+    homepage = "https://github.com/corrados/jamulus/wiki";
+    license = stdenv.lib.licenses.gpl2; # linked in git repo, at least
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.seb314 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/japa/default.nix b/nixpkgs/pkgs/applications/audio/japa/default.nix
new file mode 100644
index 000000000000..426fea21107f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/japa/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl,   alsaLib, libjack2, fftwFloat, libclthreads, libclxclient, libX11,  libXft, zita-alsa-pcmi, }:
+
+stdenv.mkDerivation rec {
+  version = "0.9.2";
+  pname = "japa";
+
+  src = fetchurl {
+    url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${pname}-${version}.tar.bz2";
+    sha256 = "1zmi4wg23hwsypg3h6y3qb72cbrihqcs19qrbzgs5a67d13q4897";
+  };
+
+  buildInputs = [ alsaLib libjack2 fftwFloat libclthreads libclxclient libX11 libXft zita-alsa-pcmi ];
+
+  preConfigure = ''
+    cd ./source/
+  '';
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "SUFFIX=''"
+  ];
+
+  meta = {
+    description = "A 'perceptual' or 'psychoacoustic' audio spectrum analyser for JACK and ALSA";
+    homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/index.html";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/keyfinder-cli/default.nix b/nixpkgs/pkgs/applications/audio/keyfinder-cli/default.nix
new file mode 100644
index 000000000000..4bb1d63a1e71
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/keyfinder-cli/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, libav, libkeyfinder }:
+
+stdenv.mkDerivation rec {
+  pname = "keyfinder-cli";
+  version = "2015-09-13";
+
+  src = fetchFromGitHub {
+    repo = "keyfinder-cli";
+    owner = "EvanPurkhiser";
+    rev = "8579282f15ab3ebad937fed398ec5c88843be03d";
+    sha256 = "0jylykigxmsqvdny265k58vpxa4cqs1hq2f7mph1nl3apfx2shrh";
+  };
+
+  buildInputs = [ libav libkeyfinder ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    inherit (src.meta) homepage;
+    description = "Musical key detection for digital audio (command-line tool)";
+    longDescription = ''
+      This small utility is the automation-oriented DJ's best friend. By making
+      use of Ibrahim Sha'ath's high quality libKeyFinder library, it can be
+      used to estimate the musical key of many different audio formats.
+    '';
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/keyfinder/default.nix b/nixpkgs/pkgs/applications/audio/keyfinder/default.nix
new file mode 100644
index 000000000000..710c1e807929
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/keyfinder/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, libav_0_8, libkeyfinder, qtbase, qtxmlpatterns, qmake, taglib }:
+
+stdenv.mkDerivation rec {
+  pname = "keyfinder";
+  version = "2.2";
+
+  src = fetchFromGitHub {
+    sha256 = "0vjszk1h8vj2qycgbffzy6k7amg75jlvlnzwaqhz9nll2pcvw0zl";
+    rev = version;
+    repo = "is_KeyFinder";
+    owner = "ibsh";
+  };
+
+  nativeBuildInputs = [ qmake ];
+  buildInputs = [ libav_0_8 libkeyfinder qtbase qtxmlpatterns taglib ];
+
+  postPatch = ''
+    substituteInPlace is_KeyFinder.pro \
+       --replace "keyfinder.0" "keyfinder" \
+       --replace "-stdlib=libc++" "" \
+       --replace "\$\$[QT_INSTALL_PREFIX]" "$out"
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Musical key detection for digital audio (graphical UI)";
+    longDescription = ''
+      KeyFinder is an open source key detection tool, for DJs interested in
+      harmonic and tonal mixing. Designed primarily for electronic and dance
+      music, it is highly configurable and can be applied to many genres. It
+      supports a huge range of codecs thanks to LibAV, and writes to metadata
+      tags using TagLib. It's intended to be very focused: no library
+      management, no track suggestions, no media player. Just a fast,
+      efficient workflow tool.
+    '';
+    homepage = "http://www.ibrahimshaath.co.uk/keyfinder/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/kid3/default.nix b/nixpkgs/pkgs/applications/audio/kid3/default.nix
new file mode 100644
index 000000000000..589354cf2348
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/kid3/default.nix
@@ -0,0 +1,72 @@
+{ stdenv, fetchurl
+, pkgconfig, cmake, python, ffmpeg_3, phonon, automoc4
+, chromaprint, docbook_xml_dtd_45, docbook_xsl, libxslt
+, id3lib, taglib, mp4v2, flac, libogg, libvorbis
+, zlib, readline , qtbase, qttools, qtmultimedia, qtquickcontrols
+, wrapQtAppsHook
+}:
+
+stdenv.mkDerivation rec {
+
+  pname = "kid3";
+  version = "3.8.3";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/kid3/kid3/${version}/${pname}-${version}.tar.gz";
+    sha256 = "0i0c4bmsm36jj1v535kil47ig0ig70ykrzcw2f56spr25xns06ka";
+  };
+
+  nativeBuildInputs = [ wrapQtAppsHook ];
+  buildInputs = with stdenv.lib;
+  [ pkgconfig cmake python ffmpeg_3 phonon automoc4
+    chromaprint docbook_xml_dtd_45 docbook_xsl libxslt
+    id3lib taglib mp4v2 flac libogg libvorbis zlib readline
+    qtbase qttools qtmultimedia qtquickcontrols ];
+
+  cmakeFlags = [ "-DWITH_APPS=Qt;CLI" ];
+  NIX_LDFLAGS = "-lm -lpthread";
+
+  preConfigure = ''
+    export DOCBOOKDIR="${docbook_xsl}/xml/xsl/docbook/"
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "A simple and powerful audio tag editor";
+    longDescription = ''
+      If you want to easily tag multiple MP3, Ogg/Vorbis, FLAC, MPC,
+      MP4/AAC, MP2, Opus, Speex, TrueAudio, WavPack, WMA, WAV and AIFF
+      files (e.g. full albums) without typing the same information
+      again and again and have control over both ID3v1 and ID3v2 tags,
+      then Kid3 is the program you are looking for.
+
+      With Kid3 you can:
+      - Edit ID3v1.1 tags;
+      - Edit all ID3v2.3 and ID3v2.4 frames;
+      - Convert between ID3v1.1, ID3v2.3 and ID3v2.4 tags
+      - Edit tags in MP3, Ogg/Vorbis, FLAC, MPC, MP4/AAC, MP2, Opus,
+        Speex, TrueAudio, WavPack, WMA, WAV, AIFF files and tracker
+        modules (MOD, S3M, IT, XM);
+      -  Edit tags of multiple files, e.g. the artist, album, year and
+         genre of all files of an album typically have the same values
+         and can be set together;
+      - Generate tags from filenames;
+      - Generate tags from the contents of tag fields;
+      - Generate filenames from tags;
+      - Rename and create directories from tags;
+      - Generate playlist files;
+      - Automatically convert upper and lower case and replace strings;
+      - Import from gnudb.org, TrackType.org, MusicBrainz, Discogs,
+        Amazon and other sources of album data;
+      - Export tags as CSV, HTML, playlists, Kover XML and in other
+        formats;
+      - Edit synchronized lyrics and event timing codes, import and
+        export LRC files
+    '';
+    homepage = "http://kid3.sourceforge.net/";
+    license = licenses.lgpl2Plus;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/klick/default.nix b/nixpkgs/pkgs/applications/audio/klick/default.nix
new file mode 100644
index 000000000000..9ff063c1c807
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/klick/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, sconsPackages, pkgconfig
+, libsamplerate, libsndfile, liblo, libjack2, boost }:
+
+stdenv.mkDerivation rec {
+  pname = "klick";
+  version = "0.12.2";
+
+  src = fetchurl {
+    url = "http://das.nasophon.de/download/${pname}-${version}.tar.gz";
+    sha256 = "1289533c0849b1b66463bf27f7ce5f71736b655cfb7672ef884c7e6eb957ac42";
+  };
+
+  nativeBuildInputs = [ sconsPackages.scons_3_0_1 pkgconfig ];
+  buildInputs = [ libsamplerate libsndfile liblo libjack2 boost ];
+  prefixKey = "PREFIX=";
+  NIX_CFLAGS_COMPILE = "-fpermissive";
+
+  meta = {
+    homepage = "http://das.nasophon.de/klick/";
+    description = "Advanced command-line metronome for JACK";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/klystrack/default.nix b/nixpkgs/pkgs/applications/audio/klystrack/default.nix
new file mode 100644
index 000000000000..5e8dc060c28c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/klystrack/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchFromGitHub, fetchpatch
+, SDL2, SDL2_image
+, pkgconfig
+}:
+
+stdenv.mkDerivation rec {
+  pname = "klystrack";
+  version = "1.7.6";
+
+  src = fetchFromGitHub {
+    owner = "kometbomb";
+    repo = pname;
+    rev = version;
+    fetchSubmodules = true;
+    sha256 = "1h99sm2ddaq483hhk2s3z4bjbgn0d2h7qna7l7qq98wvhqix8iyz";
+  };
+
+  buildInputs = [
+    SDL2 SDL2_image
+  ];
+  nativeBuildInputs = [ pkgconfig ];
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/kometbomb/klystrack/commit/bb537595d02140176831c4a1b8e9121978b32d22.patch";
+      sha256 = "06gl9q0jwg039kpxb13lg9x0k59s11968qn4lybgkadvzmhxkgmi";
+    })
+  ];
+
+  buildFlags = [ "PREFIX=${placeholder "out"}" "CFG=release" ];
+
+  installPhase = ''
+    install -Dm755 bin.release/klystrack $out/bin/klystrack
+
+    mkdir -p $out/lib/klystrack
+    cp -R res $out/lib/klystrack
+    cp -R key $out/lib/klystrack
+
+    install -DT icon/256x256.png $out/share/icons/hicolor/256x256/apps/klystrack.png
+    mkdir -p $out/share/applications
+    substitute linux/klystrack.desktop $out/share/applications/klystrack.desktop \
+      --replace "klystrack %f" "$out/bin/klystrack %f"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A chiptune tracker";
+    homepage = "https://kometbomb.github.io/klystrack";
+    license = licenses.mit;
+    maintainers = with maintainers; [ suhr ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ladspa-plugins/default.nix b/nixpkgs/pkgs/applications/audio/ladspa-plugins/default.nix
new file mode 100644
index 000000000000..a0fc8631fb39
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ladspa-plugins/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, autoreconfHook, automake, fftw, ladspaH, libxml2, pkgconfig
+, perlPackages }:
+
+stdenv.mkDerivation rec {
+  pname = "swh-plugins";
+  version = "0.4.17";
+
+
+  src = fetchurl {
+    url = "https://github.com/swh/ladspa/archive/v${version}.tar.gz";
+    sha256 = "1rqwh8xrw6hnp69dg4gy336bfbfpmbx4fjrk0nb8ypjcxkz91c6i";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ fftw ladspaH libxml2 perlPackages.perl  perlPackages.XMLParser ];
+
+  patchPhase = ''
+    patchShebangs .
+    patchShebangs ./metadata/
+    cp ${automake}/share/automake-*/mkinstalldirs .
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://plugin.org.uk/";
+    description = "LADSPA format audio plugins";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ladspa-sdk/default.nix b/nixpkgs/pkgs/applications/audio/ladspa-sdk/default.nix
new file mode 100644
index 000000000000..76acd1daba7f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ladspa-sdk/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl }:
+stdenv.mkDerivation rec {
+  pname = "ladspa-sdk";
+  version = "1.15";
+  src = fetchurl {
+    url = "https://www.ladspa.org/download/ladspa_sdk_${version}.tgz";
+    sha256 = "1vgx54cgsnc3ncl9qbgjbmq12c444xjafjkgr348h36j16draaa2";
+  };
+
+  patchPhase = ''
+    cd src
+    sed -i 's@/usr/@$(out)/@g'  Makefile
+    sed -i 's@-mkdirhier@mkdir -p@g'  Makefile
+  '';
+
+  meta = {
+    description = "The SDK for the LADSPA audio plugin standard";
+    longDescription = ''
+      The LADSPA SDK, including the ladspa.h API header file,
+      ten example LADSPA plugins and
+      three example programs (applyplugin, analyseplugin and listplugins).
+    '';
+    homepage = "http://www.ladspa.org/ladspa_sdk/overview.html";
+    license = stdenv.lib.licenses.lgpl2;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ladspa-sdk/ladspah.nix b/nixpkgs/pkgs/applications/audio/ladspa-sdk/ladspah.nix
new file mode 100644
index 000000000000..d51aa3b75e1f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ladspa-sdk/ladspah.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl }:
+stdenv.mkDerivation rec {
+  pname = "ladspa.h";
+  version = "1.15";
+  src = fetchurl {
+    url = "https://www.ladspa.org/download/ladspa_sdk_${version}.tgz";
+    sha256 = "1vgx54cgsnc3ncl9qbgjbmq12c444xjafjkgr348h36j16draaa2";
+  };
+
+  installPhase = ''
+    mkdir -p $out/include
+    cp src/ladspa.h $out/include/ladspa.h
+  '';
+
+  meta = {
+    description = "LADSPA format audio plugins header file";
+    longDescription = ''
+      The ladspa.h API header file from the LADSPA SDK.
+      For the full SDK, use the ladspa-sdk package.
+    '';
+    homepage = "http://www.ladspa.org/ladspa_sdk/overview.html";
+    license = stdenv.lib.licenses.lgpl2;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/lash/default.nix b/nixpkgs/pkgs/applications/audio/lash/default.nix
new file mode 100644
index 000000000000..cb0a3ee05e12
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/lash/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, alsaLib, gtk2, libjack2, libuuid, libxml2
+, makeWrapper, pkgconfig, readline }:
+
+assert libuuid != null;
+
+stdenv.mkDerivation  rec {
+  pname = "lash";
+  version = "0.5.4";
+
+  src = fetchurl {
+    url = "mirror://savannah/lash/${pname}-${version}.tar.gz";
+    sha256 = "05kc4brcx8mncai0rj2gz4s4bsrsy9q8xlnaddf75i0m8jl7snhh";
+  };
+
+  # http://permalink.gmane.org/gmane.linux.redhat.fedora.extras.cvs/822346
+  patches = [ ./socket.patch ./gcc-47.patch ];
+
+  buildInputs = [ alsaLib gtk2 libjack2 libxml2 makeWrapper
+    pkgconfig readline ];
+  propagatedBuildInputs = [ libuuid ];
+  NIX_LDFLAGS = "-lm -lpthread -luuid";
+
+  postInstall = ''
+    for i in lash_control lash_panel
+      do wrapProgram "$out/bin/$i" --prefix LD_LIBRARY_PATH ":" "${libuuid}/lib"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A Linux Audio Session Handler";
+    longDescription = ''
+      Session management system for GNU/Linux audio applications.
+    '';
+    homepage = "https://www.nongnu.org/lash";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.goibhniu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/lash/gcc-47.patch b/nixpkgs/pkgs/applications/audio/lash/gcc-47.patch
new file mode 100644
index 000000000000..774add431fab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/lash/gcc-47.patch
@@ -0,0 +1,11 @@
+diff -rupN liblash/lash.c lash-0.5.4/liblash/lash.c
+--- a/liblash/lash.c	2007-03-09 10:34:40.000000000 -0500
++++ b/liblash/lash.c	2012-07-22 18:17:46.003963521 -0400
+@@ -22,6 +22,7 @@
+ #include <string.h>
+ #include <strings.h>
+ #include <pthread.h>
++#include <sys/resource.h>
+ #include <sys/types.h>
+ #include <sys/wait.h>
+ #include <sys/socket.h>
diff --git a/nixpkgs/pkgs/applications/audio/lash/socket.patch b/nixpkgs/pkgs/applications/audio/lash/socket.patch
new file mode 100644
index 000000000000..c28259214443
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/lash/socket.patch
@@ -0,0 +1,16 @@
+Via http://bugs.gentoo.org/show_bug.cgi?id=229603
+
+--- lash-0.5.4/liblash/socket.c	2008-06-26 15:20:44.227064193 +0200
++++ lash-0.5.4/liblash/socket.c	2008-06-26 15:21:18.245063129 +0200
+@@ -20,6 +20,11 @@ 
+ 
+ #define _POSIX_SOURCE /* addrinfo */
+ 
++#ifdef LASH_BUILD
++#define _GNU_SOURCE
++#include "config.h"
++#endif /* LASH_BUILD */
++
+ #include <stdint.h>
+ #include <sys/types.h>
+ #include <sys/socket.h>
diff --git a/nixpkgs/pkgs/applications/audio/lastfmsubmitd/default.nix b/nixpkgs/pkgs/applications/audio/lastfmsubmitd/default.nix
new file mode 100644
index 000000000000..efafc5b05b18
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/lastfmsubmitd/default.nix
@@ -0,0 +1,21 @@
+{ lib, fetchurl, pythonPackages }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "lastfmsubmitd";
+  version = "1.0.6";
+
+  src = fetchurl {
+    url = "https://www.red-bean.com/decklin/lastfmsubmitd/lastfmsubmitd-${version}.tar.gz";
+    sha256 = "c2636d5095a95167366bacd458624d67b046e060244fa54ba2c2e3efb79f9b0e";
+  };
+
+  doCheck = false;
+
+  installCommand = "python setup.py install --prefix=$out";
+
+  meta = {
+    homepage = "https://www.red-bean.com/decklin/lastfmsubmitd/";
+    license = lib.licenses.mit;
+    description = "An last.fm audio scrobbler and daemon";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/lingot/default.nix b/nixpkgs/pkgs/applications/audio/lingot/default.nix
new file mode 100644
index 000000000000..256f5766c410
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/lingot/default.nix
@@ -0,0 +1,45 @@
+{ stdenv
+, fetchurl
+, pkg-config
+, intltool
+, gtk3
+, wrapGAppsHook
+, alsaLib
+, libpulseaudio
+, fftw
+}:
+
+stdenv.mkDerivation rec {
+  pname = "lingot";
+  version = "1.0.1";
+
+  src = fetchurl {
+    url = "mirror://savannah/${pname}/${pname}-${version}.tar.gz";
+    sha256 = "03x0qqb9iarjapvii3ja522vkxrqv1hwix6b1r53is48p5xwgf3i";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    alsaLib
+    libpulseaudio
+    fftw
+  ];
+
+  configureFlags = [
+    "--disable-jack"
+  ];
+
+  meta = {
+    description = "Not a Guitar-Only tuner";
+    homepage = "https://www.nongnu.org/lingot/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = with stdenv.lib.platforms; linux;
+    maintainers = with stdenv.lib.maintainers; [ viric ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/linuxband/default.nix b/nixpkgs/pkgs/applications/audio/linuxband/default.nix
new file mode 100644
index 000000000000..cd9ca5e26748
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/linuxband/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, makeWrapper, pkgconfig, MMA, libjack2, libsmf, python2Packages }:
+
+let
+  inherit (python2Packages) pyGtkGlade pygtksourceview python;
+in stdenv.mkDerivation rec {
+  version = "12.02.1";
+  pname = "linuxband";
+
+  src = fetchurl {
+    url = "http://linuxband.org/assets/sources/${pname}-${version}.tar.gz";
+    sha256 = "1r71h4yg775m4gax4irrvygmrsclgn503ykmc2qwjsxa42ri4n2n";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ makeWrapper MMA libjack2 libsmf python pyGtkGlade pygtksourceview ];
+
+  patchPhase = ''
+    sed -i 's@/usr/@${MMA}/@g' src/main/config/linuxband.rc.in
+    cat src/main/config/linuxband.rc.in
+  '';
+
+  postFixup = ''
+    PYTHONPATH=$pyGtkGlade/share/:pygtksourceview/share/:$PYTHONPATH
+    for f in $out/bin/*; do
+      wrapProgram $f \
+      --prefix PYTHONPATH : $PYTHONPATH
+    done
+  '';
+
+  meta = {
+    description = "A GUI front-end for MMA: Type in the chords, choose the groove and it will play an accompaniment";
+    homepage = "http://linuxband.org/";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/linuxsampler/default.nix b/nixpkgs/pkgs/applications/audio/linuxsampler/default.nix
new file mode 100644
index 000000000000..6b6cfd55926b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/linuxsampler/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, autoconf, automake, bison, libtool, pkgconfig, which
+, alsaLib, asio, libjack2, libgig, libsndfile, lv2 }:
+
+stdenv.mkDerivation rec {
+  pname = "linuxsampler";
+  version = "2.1.1";
+
+  src = fetchurl {
+    url = "https://download.linuxsampler.org/packages/${pname}-${version}.tar.bz2";
+    sha256 = "1gijf50x5xbpya5dj3v2mzj7azx4qk9p012csgddp73f0qi0n190";
+  };
+
+  preConfigure = ''
+    make -f Makefile.svn
+  '';
+
+  nativeBuildInputs = [ autoconf automake bison libtool pkgconfig which ];
+
+  buildInputs = [ alsaLib asio libjack2 libgig libsndfile lv2 ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.linuxsampler.org";
+    description = "Sampler backend";
+    longDescription = ''
+      Includes sampler engine, audio and MIDI drivers, network layer
+      (LSCP) API and native C++ API.
+
+      LinuxSampler is licensed under the GNU GPL with the exception
+      that USAGE of the source code, libraries and applications FOR
+      COMMERCIAL HARDWARE OR SOFTWARE PRODUCTS IS NOT ALLOWED without
+      prior written permission by the LinuxSampler authors. If you
+      have questions on the subject, that are not yet covered by the
+      FAQ, please contact us.
+    '';
+    license = licenses.unfree;
+    maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/lmms/default.nix b/nixpkgs/pkgs/applications/audio/lmms/default.nix
new file mode 100644
index 000000000000..c243e9beb233
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/lmms/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, alsaLib ? null, fftwFloat, fltk13
+, fluidsynth_1 ? null, lame ? null, libgig ? null, libjack2 ? null, libpulseaudio ? null
+, libsamplerate, libsoundio ? null, libsndfile, libvorbis ? null, portaudio ? null
+, qtbase, qtx11extras, qttools, SDL ? null, mkDerivation }:
+
+mkDerivation rec {
+  pname = "lmms";
+  version = "1.2.1";
+
+  src = fetchFromGitHub {
+    owner = "LMMS";
+    repo = "lmms";
+    rev = "v${version}";
+    sha256 = "08k2nfj0rw9mahr7pr90n79wviqmjmflrgcljc6y3x30v84wbp26";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ cmake qttools pkgconfig ];
+
+  buildInputs = [
+    alsaLib
+    fftwFloat
+    fltk13
+    fluidsynth_1
+    lame
+    libgig
+    libjack2
+    libpulseaudio
+    libsamplerate
+    libsndfile
+    libsoundio
+    libvorbis
+    portaudio
+    qtbase
+    qtx11extras
+    SDL # TODO: switch to SDL2 in the next version
+  ];
+
+  cmakeFlags = [ "-DWANT_QT5=ON" ];
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "DAW similar to FL Studio (music production software)";
+    homepage = "https://lmms.io";
+    license = licenses.gpl2Plus;
+    platforms = [ "x86_64-linux" "i686-linux" ];
+    maintainers = with maintainers; [ goibhniu yegortimoshenko ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/lollypop/default.nix b/nixpkgs/pkgs/applications/audio/lollypop/default.nix
new file mode 100644
index 000000000000..e4b8b906fa64
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/lollypop/default.nix
@@ -0,0 +1,102 @@
+{ lib
+, fetchgit
+, meson
+, ninja
+, pkgconfig
+, python3
+, gtk3
+, gst_all_1
+, libsecret
+, libsoup
+, appstream-glib
+, desktop-file-utils
+, totem-pl-parser
+, gobject-introspection
+, glib-networking
+, gdk-pixbuf
+, glib
+, pango
+, wrapGAppsHook
+, lastFMSupport ? true
+, youtubeSupport ? true
+}:
+
+python3.pkgs.buildPythonApplication rec  {
+  pname = "lollypop";
+  version = "1.2.35";
+
+  format = "other";
+  doCheck = false;
+
+  src = fetchgit {
+    url = "https://gitlab.gnome.org/World/lollypop";
+    rev = "refs/tags/${version}";
+    fetchSubmodules = true;
+    sha256 = "19nw9qh17yyi9ih1nwngbbwjx1vr26haqhmzsdqf0yjgsgf9vldx";
+  };
+
+  nativeBuildInputs = [
+    appstream-glib
+    desktop-file-utils
+    gobject-introspection
+    meson
+    ninja
+    pkgconfig
+    wrapGAppsHook
+  ];
+
+  buildInputs = with gst_all_1; [
+    gdk-pixbuf
+    glib
+    glib-networking
+    gst-libav
+    gst-plugins-bad
+    gst-plugins-base
+    gst-plugins-good
+    gst-plugins-ugly
+    gstreamer
+    gtk3
+    libsoup
+    pango
+    totem-pl-parser
+  ] ++ lib.optional lastFMSupport libsecret;
+
+  propagatedBuildInputs = with python3.pkgs; [
+    beautifulsoup4
+    pillow
+    pycairo
+    pygobject3
+  ]
+  ++ lib.optional lastFMSupport pylast
+  ++ lib.optional youtubeSupport youtube-dl
+  ;
+
+  postPatch = ''
+    chmod +x meson_post_install.py
+    patchShebangs meson_post_install.py
+  '';
+
+  postFixup = ''
+    wrapPythonProgramsIn $out/libexec "$out $propagatedBuildInputs"
+  '';
+
+  strictDeps = false;
+
+  # Produce only one wrapper using wrap-python passing
+  # gappsWrapperArgs to wrap-python additional wrapper
+  # argument
+  dontWrapGApps = true;
+
+  preFixup = ''
+    makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
+  meta = with lib; {
+    changelog = "https://gitlab.gnome.org/World/lollypop/tags/${version}";
+    description = "A modern music player for GNOME";
+    homepage = "https://wiki.gnome.org/Apps/Lollypop";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ worldofpeace ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/lsp-plugins/default.nix b/nixpkgs/pkgs/applications/audio/lsp-plugins/default.nix
new file mode 100644
index 000000000000..435da6440736
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/lsp-plugins/default.nix
@@ -0,0 +1,148 @@
+{ stdenv, fetchFromGitHub, pkgconfig, makeWrapper
+, libsndfile, jack2Full
+, libGLU, libGL, lv2, cairo
+, ladspaH, php }:
+
+stdenv.mkDerivation rec {
+  pname = "lsp-plugins";
+  version = "1.1.22";
+
+  src = fetchFromGitHub {
+    owner = "sadko4u";
+    repo = pname;
+    rev = "${pname}-${version}";
+    sha256 = "0s0i0kf5nqxxywckg03fds1w7696ly60rnlljzqvp7qfgzps1r6c";
+  };
+
+  nativeBuildInputs = [ pkgconfig php makeWrapper ];
+  buildInputs = [ jack2Full libsndfile libGLU libGL lv2 cairo ladspaH ];
+
+  makeFlags = [
+    "PREFIX=${placeholder ''out''}"
+    "ETC_PATH=$(out)/etc"
+  ];
+
+  NIX_CFLAGS_COMPILE = "-DLSP_NO_EXPERIMENTAL";
+
+  doCheck = true;
+
+  checkPhase = ''
+    runHook preCheck
+    TEST_PATH=$(pwd)".build-test"
+    make OBJDIR=$TEST_PATH test
+    $TEST_PATH/lsp-plugins-test utest
+    runHook postCheck
+  '';
+
+  buildFlags = [ "release" ];
+
+  meta = with stdenv.lib;
+    { description = "Collection of open-source audio plugins";
+      longDescription = ''
+        Compatible with follwing formats:
+
+        - LADSPA - set of plugins for Linux Audio Developer's Simple Plugin API
+        - LV2 - set of plugins and UIs for Linux Audio Developer's Simple Plugin API (LADSPA) version 2
+        - LinuxVST - set of plugins and UIs for Steinberg's VST 2.4 format ported on GNU/Linux Platform
+        - JACK - Standalone versions for JACK Audio connection Kit with UI
+
+        Contains the following plugins:
+
+        - Limiter Mono - Begrenzer Mono
+        - Limiter Stereo - Begrenzer Stereo
+        - Dynamic Processor LeftRight - Dynamikprozessor LeftRight
+        - Dynamic Processor MidSide - Dynamikprozessor MidSide
+        - Dynamic Processor Mono - Dynamikprozessor Mono
+        - Dynamic Processor Stereo - Dynamikprozessor Stereo
+        - Expander LeftRight - Expander LeftRight
+        - Expander MidSide - Expander MidSide
+        - Expander Mono - Expander Mono
+        - Expander Stereo - Expander Stereo
+        - Gate LeftRight - Gate LeftRight
+        - Gate MidSide - Gate MidSide
+        - Gate Mono - Gate Mono
+        - Gate Stereo - Gate Stereo
+        - Graphic Equalizer x16 LeftRight - Grafischer Entzerrer x16 LeftRight
+        - Graphic Equalizer x16 MidSide - Grafischer Entzerrer x16 MidSide
+        - Graphic Equalizer x16 Mono - Grafischer Entzerrer x16 Mono
+        - Graphic Equalizer x16 Stereo - Grafischer Entzerrer x16 Stereo
+        - Graphic Equalizer x32 LeftRight - Grafischer Entzerrer x32 LeftRight
+        - Graphic Equalizer x32 MidSide - Grafischer Entzerrer x32 MidSide
+        - Graphic Equalizer x32 Mono - Grafischer Entzerrer x32 Mono
+        - Graphic Equalizer x32 Stereo - Grafischer Entzerrer x32 Stereo
+        - Impulse Responses Mono - Impulsantworten Mono
+        - Impulse Responses Stereo - Impulsantworten Stereo
+        - Impulse Reverb Mono - Impulsnachhall Mono
+        - Impulse Reverb Stereo - Impulsnachhall Stereo
+        - Sampler Mono - Klangerzeuger Mono
+        - Sampler Stereo - Klangerzeuger Stereo
+        - Compressor LeftRight - Kompressor LeftRight
+        - Compressor MidSide - Kompressor MidSide
+        - Compressor Mono - Kompressor Mono
+        - Compressor Stereo - Kompressor Stereo
+        - Latency Meter - Latenzmessgerät
+        - Multiband Compressor LeftRight x8 - Multi-band Kompressor LeftRight x8
+        - Multiband Compressor MidSide x8 - Multi-band Kompressor MidSide x8
+        - Multiband Compressor Mono x8 - Multi-band Kompressor Mono x8
+        - Multiband Compressor Stereo x8 - Multi-band Kompressor Stereo x8
+        - Oscillator Mono - Oszillator Mono
+        - Parametric Equalizer x16 LeftRight - Parametrischer Entzerrer x16 LeftRight
+        - Parametric Equalizer x16 MidSide - Parametrischer Entzerrer x16 MidSide
+        - Parametric Equalizer x16 Mono - Parametrischer Entzerrer x16 Mono
+        - Parametric Equalizer x16 Stereo - Parametrischer Entzerrer x16 Stereo
+        - Parametric Equalizer x32 LeftRight - Parametrischer Entzerrer x32 LeftRight
+        - Parametric Equalizer x32 MidSide - Parametrischer Entzerrer x32 MidSide
+        - Parametric Equalizer x32 Mono - Parametrischer Entzerrer x32 Mono
+        - Parametric Equalizer x32 Stereo - Parametrischer Entzerrer x32 Stereo
+        - Phase Detector - Phasendetektor
+        - Profiler Mono - Profiler Mono
+        - Multi-Sampler x12 DirectOut - Schlagzeug x12 Direktausgabe
+        - Multi-Sampler x12 Stereo - Schlagzeug x12 Stereo
+        - Multi-Sampler x24 DirectOut - Schlagzeug x24 Direktausgabe
+        - Multi-Sampler x24 Stereo - Schlagzeug x24 Stereo
+        - Multi-Sampler x48 DirectOut - Schlagzeug x48 Direktausgabe
+        - Multi-Sampler x48 Stereo - Schlagzeug x48 Stereo
+        - Sidechain Multiband Compressor LeftRight x8 - Sidechain Multi-band Kompressor LeftRight x8
+        - Sidechain Multiband Compressor MidSide x8 - Sidechain Multi-band Kompressor MidSide x8
+        - Sidechain Multiband Compressor Mono x8 - Sidechain Multi-band Kompressor Mono x8
+        - Sidechain Multiband Compressor Stereo x8 - Sidechain Multi-band Kompressor Stereo x8
+        - Sidechain Limiter Mono - Sidechain-Begrenzer Mono
+        - Sidechain Limiter Stereo - Sidechain-Begrenzer Stereo
+        - Sidechain Dynamic Processor LeftRight - Sidechain-Dynamikprozessor LeftRight
+        - Sidechain Dynamic Processor MidSide - Sidechain-Dynamikprozessor MidSide
+        - Sidechain Dynamic Processor Mono - Sidechain-Dynamikprozessor Mono
+        - Sidechain Dynamic Processor Stereo - Sidechain-Dynamikprozessor Stereo
+        - Sidechain Expander LeftRight - Sidechain-Expander LeftRight
+        - Sidechain Expander MidSide - Sidechain-Expander MidSide
+        - Sidechain Expander Mono - Sidechain-Expander Mono
+        - Sidechain Expander Stereo - Sidechain-Expander Stereo
+        - Sidechain Gate LeftRight - Sidechain-Gate LeftRight
+        - Sidechain Gate MidSide - Sidechain-Gate MidSide
+        - Sidechain Gate Mono - Sidechain-Gate Mono
+        - Sidechain Gate Stereo - Sidechain-Gate Stereo
+        - Sidechain Compressor LeftRight - Sidechain-Kompressor LeftRight
+        - Sidechain Compressor MidSide - Sidechain-Kompressor MidSide
+        - Sidechain Compressor Mono - Sidechain-Kompressor Mono
+        - Sidechain Compressor Stereo - Sidechain-Kompressor Stereo
+        - Slapback Delay Mono - Slapback-Delay Mono
+        - Slapback Delay Stereo - Slapback-Delay Stereo
+        - Spectrum Analyzer x1 - Spektrumanalysator x1
+        - Spectrum Analyzer x12 - Spektrumanalysator x12
+        - Spectrum Analyzer x16 - Spektrumanalysator x16
+        - Spectrum Analyzer x2 - Spektrumanalysator x2
+        - Spectrum Analyzer x4 - Spektrumanalysator x4
+        - Spectrum Analyzer x8 - Spektrumanalysator x8
+        - Trigger MIDI Mono - Triggersensor MIDI Mono
+        - Trigger MIDI Stereo - Triggersensor MIDI Stereo
+        - Trigger Mono - Triggersensor Mono
+        - Trigger Stereo - Triggersensor Stereo
+        - Delay Compensator Mono - Verzögerungsausgleicher Mono
+        - Delay Compensator Stereo - Verzögerungsausgleicher Stereo
+        - Delay Compensator x2 Stereo - Verzögerungsausgleicher x2 Stereo
+      '';
+      homepage = "https://lsp-plug.in";
+      maintainers = with maintainers; [ magnetophon ];
+      license = licenses.gpl2;
+      platforms = platforms.linux;
+    };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ltc-tools/default.nix b/nixpkgs/pkgs/applications/audio/ltc-tools/default.nix
new file mode 100644
index 000000000000..c986e3af288e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ltc-tools/default.nix
@@ -0,0 +1,25 @@
+{stdenv, fetchFromGitHub, pkgconfig, libltc, libsndfile, jack2}:
+
+stdenv.mkDerivation rec {
+  pname = "ltc-tools";
+  version = "0.7.0";
+
+  src = fetchFromGitHub {
+    owner = "x42";
+    repo = "ltc-tools";
+    rev = "v${version}";
+    sha256 = "0vp25b970r1hv5ndzs4di63rgwnl31jfaj3jz5dka276kx34q4al";
+  };
+
+  buildInputs = [ pkgconfig libltc libsndfile jack2 ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/x42/ltc-tools";
+    description = "Tools to deal with linear-timecode (LTC)";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ tg-x ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/luppp/build-install.patch b/nixpkgs/pkgs/applications/audio/luppp/build-install.patch
new file mode 100644
index 000000000000..4dae65438cb5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/luppp/build-install.patch
@@ -0,0 +1,16 @@
+commit 4ec09e6f6e00e40622a5207ed24dc657da9a9090
+Author: Pavol Rusnak <stick@gk2.sk>
+Date:   Tue Dec 4 12:06:22 2018 +0100
+
+    build: add install: true to executable in meson.build
+
+diff --git a/meson.build b/meson.build
+index 050e1b1..9224ed5 100644
+--- a/meson.build
++++ b/meson.build
+@@ -39,4 +39,5 @@ endforeach
+ 
+ # compile the main project
+ executable('luppp', luppp_src + [version_hxx],
++    install: true,
+     dependencies: deps)
diff --git a/nixpkgs/pkgs/applications/audio/luppp/default.nix b/nixpkgs/pkgs/applications/audio/luppp/default.nix
new file mode 100644
index 000000000000..c1494ffc3334
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/luppp/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub
+, meson
+, ninja
+, pkgconfig
+, jack2
+, cairo
+, liblo
+, libsndfile
+, libsamplerate
+, ntk
+}:
+
+stdenv.mkDerivation rec {
+  pname = "luppp";
+  version = "1.2.0";
+  patches = [ ./build-install.patch ];
+
+  src = fetchFromGitHub {
+    owner = "openAVproductions";
+    repo = "openAV-Luppp";
+    rev = "release-${version}";
+    sha256 = "194yq0lqc2psq9vyxmzif40ccawcvd9jndcn18mkz4f8h5w5rc1a";
+  };
+
+  nativeBuildInputs = [
+    meson ninja pkgconfig
+  ];
+
+  buildInputs = [
+    jack2 cairo liblo libsndfile libsamplerate ntk
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://openavproductions.com/luppp/";
+    description = "A music creation tool, intended for live use";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ prusnak ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/lv2bm/default.nix b/nixpkgs/pkgs/applications/audio/lv2bm/default.nix
new file mode 100644
index 000000000000..aee910f56eb6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/lv2bm/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, glib, lilv, lv2, pkgconfig, serd, sord, sratom }:
+
+stdenv.mkDerivation {
+  pname = "lv2bm";
+  version = "git-2015-11-29";
+
+  src = fetchFromGitHub {
+    owner = "moddevices";
+    repo = "lv2bm";
+    rev = "e844931503b7597f45da6d61ff506bb9fca2e9ca";
+    sha256 = "1rrz5sp04zjal6v34ldkl6fjj9xqidb8xm1iscjyljf6z4l516cx";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ glib lilv lv2 serd sord sratom ];
+
+  installPhase = ''
+    make install PREFIX=$out
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/portalmod/lv2bm";
+    description = "A benchmark tool for LV2 plugins";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/magnetophonDSP/CharacterCompressor/default.nix b/nixpkgs/pkgs/applications/audio/magnetophonDSP/CharacterCompressor/default.nix
new file mode 100644
index 000000000000..e16198696a69
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/magnetophonDSP/CharacterCompressor/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+stdenv.mkDerivation rec {
+  pname = "CharacterCompressor";
+  version = "0.3.3";
+
+  src = fetchFromGitHub {
+    owner = "magnetophon";
+    repo = "CharacterCompressor";
+    rev = "V${version}";
+    sha256 = "1h0bhjhx023476gbijq842b6f8z71zcyn4c9mddwyb18w9cdamp5";
+  };
+
+  buildInputs = [ faust2jaqt faust2lv2 ];
+
+  buildPhase = ''
+    faust2jaqt -vec -time -t 99999 CharacterCompressor.dsp
+    faust2jaqt -vec -time -t 99999 CharacterCompressorMono.dsp
+    faust2lv2 -vec -time -gui -t 99999 CharacterCompressor.dsp
+    faust2lv2 -vec -time -gui -t 99999 CharacterCompressorMono.dsp
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp CharacterCompressor $out/bin/
+    cp CharacterCompressorMono $out/bin/
+    mkdir -p $out/lib/lv2
+    cp -r CharacterCompressor.lv2/ $out/lib/lv2
+    cp -r CharacterCompressorMono.lv2/ $out/lib/lv2
+  '';
+
+  meta = {
+    description = "A compressor with character. For jack and lv2";
+    homepage = "https://github.com/magnetophon/CharacterCompressor";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/magnetophonDSP/CompBus/default.nix b/nixpkgs/pkgs/applications/audio/magnetophonDSP/CompBus/default.nix
new file mode 100644
index 000000000000..1ccc9f3fcd5b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/magnetophonDSP/CompBus/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+stdenv.mkDerivation rec {
+  pname = "CompBus";
+  version = "1.1.1";
+
+  src = fetchFromGitHub {
+    owner = "magnetophon";
+    repo = "CompBus";
+    rev = "V${version}";
+    sha256 = "0yhj680zgk4dn4fi8j3apm72f3z2mjk12amf2a7p0lwn9iyh4a2z";
+  };
+
+  buildInputs = [ faust2jaqt faust2lv2 ];
+
+  buildPhase = ''
+    for f in *.dsp;
+    do
+      faust2jaqt -time -vec -double -t 99999 $f
+    done
+
+    for f in *.dsp;
+    do
+      faust2lv2  -time -vec -double -gui -t 99999 $f
+    done
+  '';
+
+  installPhase = ''
+    mkdir -p $out/lib/lv2
+    mv *.lv2/ $out/lib/lv2
+    mkdir -p $out/bin
+    for f in $(find . -executable -type f);
+    do
+      cp $f $out/bin/
+    done
+  '';
+
+  meta = {
+    description = "A group of compressors mixed into a bus, sidechained from that mix bus. For jack and lv2";
+    homepage = "https://github.com/magnetophon/CompBus";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/magnetophonDSP/ConstantDetuneChorus/default.nix b/nixpkgs/pkgs/applications/audio/magnetophonDSP/ConstantDetuneChorus/default.nix
new file mode 100644
index 000000000000..d5ed7e85b696
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/magnetophonDSP/ConstantDetuneChorus/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+stdenv.mkDerivation rec {
+  pname = "constant-detune-chorus";
+  version = "0.1.3";
+
+  src = fetchFromGitHub {
+    owner = "magnetophon";
+    repo = "constant-detune-chorus";
+    rev = "V${version}";
+    sha256 = "1sipmc25fr7w7xqx1r0y6i2zwfkgszzwvhk1v15mnsb3cqvk8ybn";
+  };
+
+  buildInputs = [ faust2jaqt faust2lv2 ];
+
+  buildPhase = ''
+    faust2jaqt -time -vec -t 99999 ConstantDetuneChorus.dsp
+    faust2lv2  -time -vec -t 99999 -gui ConstantDetuneChorus.dsp
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp ConstantDetuneChorus $out/bin/
+    mkdir -p $out/lib/lv2
+    cp -r ConstantDetuneChorus.lv2/ $out/lib/lv2
+  '';
+
+  meta = {
+    description = "A chorus algorithm that maintains constant and symmetric detuning depth (in cents), regardless of modulation rate. For jack and lv2";
+    homepage = "https://github.com/magnetophon/constant-detune-chorus";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/magnetophonDSP/LazyLimiter/default.nix b/nixpkgs/pkgs/applications/audio/magnetophonDSP/LazyLimiter/default.nix
new file mode 100644
index 000000000000..6d119394d5de
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/magnetophonDSP/LazyLimiter/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+stdenv.mkDerivation rec {
+  pname = "LazyLimiter";
+  version = "0.3.2";
+
+  src = fetchFromGitHub {
+    owner = "magnetophon";
+    repo = "LazyLimiter";
+    rev = "V${version}";
+    sha256 = "10xdydwmsnkx8hzsm74pa546yahp29wifydbc48yywv3sfj5anm7";
+  };
+
+  buildInputs = [ faust2jaqt faust2lv2 ];
+
+  buildPhase = ''
+    faust2jaqt -vec -time -t 99999 LazyLimiter.dsp
+    faust2lv2 -vec -time -t 99999  -gui LazyLimiter.dsp
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp LazyLimiter $out/bin/
+    mkdir -p $out/lib/lv2
+    cp -r LazyLimiter.lv2/ $out/lib/lv2
+  '';
+
+  meta = {
+    description = "A fast yet clean lookahead limiter for jack and lv2";
+    homepage = "https://magnetophon.github.io/LazyLimiter/";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/magnetophonDSP/MBdistortion/default.nix b/nixpkgs/pkgs/applications/audio/magnetophonDSP/MBdistortion/default.nix
new file mode 100644
index 000000000000..0eb68e65eae6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/magnetophonDSP/MBdistortion/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+stdenv.mkDerivation rec {
+  pname = "MBdistortion";
+  version = "1.1.1";
+
+  src = fetchFromGitHub {
+    owner = "magnetophon";
+    repo = "MBdistortion";
+    rev = "V${version}";
+    sha256 = "0mdzaqmxzgspfgx9w1hdip18y17hwpdcgjyq1rrfm843vkascwip";
+  };
+
+  buildInputs = [ faust2jaqt faust2lv2 ];
+
+  buildPhase = ''
+    faust2jaqt -time -vec -t 99999 MBdistortion.dsp
+    faust2lv2 -time -vec -gui -t 99999 MBdistortion.dsp
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp MBdistortion $out/bin/
+    mkdir -p $out/lib/lv2
+    cp -r MBdistortion.lv2/ $out/lib/lv2
+  '';
+
+  meta = {
+    description = "Mid-side multiband distortion for jack and lv2";
+    homepage = "https://github.com/magnetophon/MBdistortion";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/magnetophonDSP/RhythmDelay/default.nix b/nixpkgs/pkgs/applications/audio/magnetophonDSP/RhythmDelay/default.nix
new file mode 100644
index 000000000000..be8ad72d28df
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/magnetophonDSP/RhythmDelay/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+stdenv.mkDerivation rec {
+  pname = "RhythmDelay";
+  version = "2.1";
+
+  src = fetchFromGitHub {
+    owner = "magnetophon";
+    repo = "RhythmDelay";
+    rev = "V${version}";
+    sha256 = "1j0bjl9agz43dcrcrbiqd7fv7xsxgd65s4ahhv5pvcr729y0fxg4";
+  };
+
+  buildInputs = [ faust2jaqt faust2lv2 ];
+
+  buildPhase = ''
+    faust2jaqt -time -vec -t 99999 RhythmDelay.dsp
+    faust2lv2  -time -vec -t 99999 -gui RhythmDelay.dsp
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp RhythmDelay $out/bin/
+    mkdir -p $out/lib/lv2
+    cp -r RhythmDelay.lv2/ $out/lib/lv2
+  '';
+
+  meta = {
+    description = "Tap a rhythm into your delay! For jack and lv2";
+    homepage = "https://github.com/magnetophon/RhythmDelay";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/magnetophonDSP/VoiceOfFaust/default.nix b/nixpkgs/pkgs/applications/audio/magnetophonDSP/VoiceOfFaust/default.nix
new file mode 100644
index 000000000000..dce2db4cb770
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/magnetophonDSP/VoiceOfFaust/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchFromGitHub, faust2jack, faust2lv2, helmholtz, mrpeach, puredata-with-plugins }:
+stdenv.mkDerivation rec {
+  pname = "VoiceOfFaust";
+  version = "1.1.4";
+
+  src = fetchFromGitHub {
+    owner = "magnetophon";
+    repo = "VoiceOfFaust";
+    rev = "V${version}";
+    sha256 = "0la9b806qwrlsxgbir7n1db8v3w24wmd6k43p6qpr1fjjpkhrrgw";
+  };
+
+  plugins = [ helmholtz mrpeach ];
+
+  pitchTracker = puredata-with-plugins plugins;
+
+  buildInputs = [ faust2jack faust2lv2 ];
+
+  runtimeInputs = [ pitchTracker ];
+
+  patchPhase = ''
+    sed -i "s@pd -nodac@${pitchTracker}/bin/pd -nodac@g" launchers/synthWrapper
+    sed -i "s@../PureData/OscSendVoc.pd@$out/PureData/OscSendVoc.pd@g" launchers/pitchTracker
+  '';
+
+  buildPhase = ''
+    sh install.sh
+    # so it doesn;t end up in /bin/ :
+    rm -f install.sh
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+
+    for file in ./*; do
+      if test -x "$file" && test -f "$file"; then
+        cp "$file" "$out/bin"
+      fi
+    done
+
+    cp launchers/* $out/bin/
+    mkdir $out/PureData/
+    # cp PureData/OscSendVoc.pd $out/PureData/OscSendVoc.pd
+    cp PureData/* $out/PureData/
+
+    mkdir -p $out/lib/lv2
+    cp -r *.lv2/ $out/lib/lv2
+  '';
+
+  meta = {
+    description = "Turn your voice into a synthesizer";
+    homepage = "https://github.com/magnetophon/VoiceOfFaust";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/magnetophonDSP/faustCompressors/default.nix b/nixpkgs/pkgs/applications/audio/magnetophonDSP/faustCompressors/default.nix
new file mode 100644
index 000000000000..172b5ed38913
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/magnetophonDSP/faustCompressors/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+stdenv.mkDerivation rec {
+  name = "faustCompressors-v${version}";
+  version = "1.2";
+
+  src = fetchFromGitHub {
+    owner = "magnetophon";
+    repo = "faustCompressors";
+    rev = "v${version}";
+    sha256 = "144f6g17q4m50kxzdncsfzdyycdfprnpwdaxcwgxj4jky1xsha1d";
+  };
+
+  buildInputs = [ faust2jaqt faust2lv2 ];
+
+  buildPhase = ''
+    echo "hack out autoComp.dsp due to https://github.com/grame-cncm/faust/407/issues "
+    rm autoComp.dsp
+    for f in *.dsp;
+    do
+      echo "compiling standalone from" $f
+      faust2jaqt -time -double -t 99999 $f
+    done
+
+    for f in *.dsp;
+    do
+      echo "Compiling plugin from" $f
+      faust2lv2  -time -double -gui -t 99999 $f
+    done
+  '';
+
+  installPhase = ''
+    mkdir -p $out/lib/lv2
+    mv *.lv2/ $out/lib/lv2
+    mkdir -p $out/bin
+    rm newlib.sh
+    for f in $(find . -executable -type f);
+    do
+      cp $f $out/bin/
+    done
+  '';
+
+  meta = {
+    description = "A collection of bread and butter compressors";
+    homepage = "https://github.com/magnetophon/faustCompressors";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/magnetophonDSP/pluginUtils/default.nix b/nixpkgs/pkgs/applications/audio/magnetophonDSP/pluginUtils/default.nix
new file mode 100644
index 000000000000..11d51d756abc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/magnetophonDSP/pluginUtils/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+stdenv.mkDerivation rec {
+  pname = "pluginUtils";
+  version = "1.1";
+
+  src = fetchFromGitHub {
+    owner = "magnetophon";
+    repo = "pluginUtils";
+    rev = "V${version}";
+    sha256 = "1hnr5sp7k6ypf4ks61lnyqx44dkv35yllf3a3xcbrw7yqzagwr1c";
+  };
+
+  buildInputs = [ faust2jaqt faust2lv2 ];
+
+  buildPhase = ''
+    for f in *.dsp
+      do
+        echo "Building jack standalone for $f"
+        faust2jaqt -vec -time -t 99999 "$f"
+        echo "Building lv2 for $f"
+        faust2lv2 -vec -time -gui -t 99999 "$f"
+      done
+  '';
+
+  installPhase = ''
+    rm -f *.dsp
+    rm -f *.lib
+    mkdir -p $out/lib/lv2
+    mv *.lv2/ $out/lib/lv2
+    mkdir -p $out/bin
+    cp * $out/bin/
+  '';
+
+  meta = {
+    description = "Some simple utility lv2 plugins";
+    homepage = "https://github.com/magnetophon/pluginUtils";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/magnetophonDSP/shelfMultiBand/default.nix b/nixpkgs/pkgs/applications/audio/magnetophonDSP/shelfMultiBand/default.nix
new file mode 100644
index 000000000000..360cee243c33
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/magnetophonDSP/shelfMultiBand/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+stdenv.mkDerivation rec {
+  pname = "shelfMultiBand";
+  version = "0.6.1";
+
+  src = fetchFromGitHub {
+    owner = "magnetophon";
+    repo = "shelfMultiBand";
+    rev = "V${version}";
+    sha256 = "1b1h4z5fs2xm7wvw11p9wnd0bxs3m88124f5phh0gwvpsdrd0im5";
+  };
+
+  buildInputs = [ faust2jaqt faust2lv2 ];
+
+  buildPhase = ''
+    faust2jaqt -vec -double -time -t 99999 shelfMultiBand.dsp
+    faust2jaqt -vec -double -time -t 99999 shelfMultiBandMono.dsp
+    faust2lv2 -vec -double -time -gui -t 99999 shelfMultiBandMono.dsp
+    faust2lv2 -vec -double -time -gui -t 99999 shelfMultiBand.dsp
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp shelfMultiBand $out/bin/
+    cp shelfMultiBandMono $out/bin/
+    mkdir -p $out/lib/lv2
+    cp -r shelfMultiBand.lv2/ $out/lib/lv2
+    cp -r shelfMultiBandMono.lv2/ $out/lib/lv2
+  '';
+
+  meta = {
+    description = "A multiband compressor made from shelving filters.";
+    homepage = "https://github.com/magnetophon/shelfMultiBand";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mda-lv2/default.nix b/nixpkgs/pkgs/applications/audio/mda-lv2/default.nix
new file mode 100644
index 000000000000..2464abb6585c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mda-lv2/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, fftwSinglePrec, lv2, pkgconfig, wafHook }:
+
+stdenv.mkDerivation rec {
+  pname = "mda-lv2";
+  version = "1.2.4";
+
+  src = fetchurl {
+    url = "https://download.drobilla.net/${pname}-${version}.tar.bz2";
+    sha256 = "1a3cv6w5xby9yn11j695rbh3c4ih7rxfxmkca9s1324ljphh06m8";
+  };
+
+  nativeBuildInputs = [ pkgconfig wafHook ];
+  buildInputs = [ fftwSinglePrec lv2 ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://drobilla.net/software/mda-lv2/";
+    description = "An LV2 port of the MDA plugins by Paul Kellett";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/meterbridge/buf_rect.patch b/nixpkgs/pkgs/applications/audio/meterbridge/buf_rect.patch
new file mode 100644
index 000000000000..f108b80c1019
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/meterbridge/buf_rect.patch
@@ -0,0 +1,12 @@
+--- ../tmp-orig/meterbridge-0.9.2/src/main.h	2003-06-05 11:42:41.000000000 +0200
++++ ./src/main.h	2004-12-29 10:27:24.160912488 +0100
+@@ -8,7 +8,7 @@
+ 
+ extern SDL_Surface *screen;
+ extern SDL_Surface *image, *meter, *meter_buf;
+-extern SDL_Rect win, buf_rect[MAX_METERS], dest[MAX_METERS];
++extern SDL_Rect win, dest[MAX_METERS];
+ 
+ extern jack_port_t *input_ports[MAX_METERS];
+ extern jack_port_t *output_ports[MAX_METERS];
+
diff --git a/nixpkgs/pkgs/applications/audio/meterbridge/default.nix b/nixpkgs/pkgs/applications/audio/meterbridge/default.nix
new file mode 100644
index 000000000000..9d807358cd5a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/meterbridge/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, pkgconfig, SDL, SDL_image, libjack2
+}:
+
+stdenv.mkDerivation rec {
+  version = "0.9.3";
+  pname = "meterbridge";
+
+  src = fetchurl {
+    url = "http://plugin.org.uk/meterbridge/${pname}-${version}.tar.gz";
+    sha256 = "0s7n3czfpil94vsd7iblv4xrck9c7zvsz4r3yfbkqcv85pjz1viz";
+  };
+
+  patches = [ ./buf_rect.patch ./fix_build_with_gcc-5.patch];
+
+  buildInputs =
+    [ pkgconfig SDL SDL_image libjack2
+    ];
+
+  meta = with stdenv.lib; {
+    description = "Various meters (VU, PPM, DPM, JF, SCO) for Jack Audio Connection Kit";
+    homepage = "http://plugin.org.uk/meterbridge/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.nico202 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/meterbridge/fix_build_with_gcc-5.patch b/nixpkgs/pkgs/applications/audio/meterbridge/fix_build_with_gcc-5.patch
new file mode 100644
index 000000000000..a738cd0b82a9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/meterbridge/fix_build_with_gcc-5.patch
@@ -0,0 +1,31 @@
+Description: Fix build with gcc-5
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=778003
+Author: Jaromír Mikeš <mira.mikes@seznam.cz>
+Forwarded: No
+
+Index: meterbridge/src/linedraw.h
+===================================================================
+--- meterbridge.orig/src/linedraw.h
++++ meterbridge/src/linedraw.h
+@@ -1,7 +1,7 @@
+ #ifndef LINEDRAW_H
+ #define LINEDRAW_H
+ 
+-inline void set_rgba(SDL_Surface *surface, Uint32 x, Uint32 y, Uint32 col);
++void set_rgba(SDL_Surface *surface, Uint32 x, Uint32 y, Uint32 col);
+ 
+ void draw_ptr(SDL_Surface *surface, int x1, int y1, int x2, int y2, Uint32 nedle_col, Uint32 aa_col);
+ 
+Index: meterbridge/src/linedraw.c
+===================================================================
+--- meterbridge.orig/src/linedraw.c
++++ meterbridge/src/linedraw.c
+@@ -4,7 +4,7 @@
+ /* set a pixel on an SDL_Surface, assumes that the surface is 32bit RGBA,
+  * ordered ABGR (I think), probably wont work on bigendian systems */
+ 
+-inline void set_rgba(SDL_Surface *surface, Uint32 x, Uint32 y, Uint32 col)
++void set_rgba(SDL_Surface *surface, Uint32 x, Uint32 y, Uint32 col)
+ {
+ 	Uint32 *bufp = (Uint32 *)surface->pixels + y*surface->pitch/4 + x;
+ 	*bufp = col;
diff --git a/nixpkgs/pkgs/applications/audio/meters_lv2/default.nix b/nixpkgs/pkgs/applications/audio/meters_lv2/default.nix
new file mode 100644
index 000000000000..cd9523d27108
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/meters_lv2/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, pkgconfig
+, lv2, libGLU, libGL, gtk2, cairo, pango, fftwFloat, libjack2 }:
+
+let
+  version = "0.9.10";
+  name = "meters.lv2-${version}";
+
+  # robtk submodule is pegged to this version
+  robtkVersion = "0.6.2";
+  robtkName = "robtk-${robtkVersion}";
+
+  src = fetchurl {
+    name = "${name}.tar.gz";
+    url = "https://github.com/x42/meters.lv2/archive/v${version}.tar.gz";
+    sha256 = "0yfyn7j8g50w671b1z7ph4ppjx8ddj5c6nx53syp5y5mfr1b94nx";
+  };
+
+  robtkSrc = fetchurl {
+    name = "${robtkName}.tar.gz";
+    url = "https://github.com/x42/robtk/archive/v${robtkVersion}.tar.gz";
+    sha256 = "1v79xys1k2923wpivdjd44vand6c4agwvnrqi4c8kdv9r07b559v";
+  };
+
+in
+stdenv.mkDerivation {
+  inherit name;
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ lv2 libGLU libGL gtk2 cairo pango fftwFloat libjack2 ];
+
+  srcs = [ src robtkSrc ];
+  sourceRoot = name;
+
+  postUnpack = "mv ${robtkName}/* ${name}/robtk"; # */
+
+  preConfigure = "makeFlagsArray=( PREFIX=$out )";
+  meter_VERSION = version;
+
+  meta = with stdenv.lib;
+    { description = "Collection of audio level meters with GUI in LV2 plugin format";
+      homepage = "http://x42.github.io/meters.lv2/";
+      maintainers = with maintainers; [ ehmry ];
+      license = licenses.gpl2;
+      platforms = platforms.linux;
+    };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mhwaveedit/default.nix b/nixpkgs/pkgs/applications/audio/mhwaveedit/default.nix
new file mode 100644
index 000000000000..67204260da24
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mhwaveedit/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, makeWrapper, SDL, alsaLib, autoreconfHook, gtk2, libjack2, ladspaH
+, ladspaPlugins, libsamplerate, libsndfile, pkgconfig, libpulseaudio, lame
+, vorbis-tools }:
+
+stdenv.mkDerivation rec {
+  pname = "mhwaveedit";
+  version = "1.4.24";
+
+  src = fetchFromGitHub {
+    owner = "magnush";
+    repo = "mhwaveedit";
+    rev = "v${version}";
+    sha256 = "037pbq23kh8hsih994x2sv483imglwcrqrx6m8visq9c46fi0j1y";
+  };
+
+  nativeBuildInputs = [ autoreconfHook makeWrapper pkgconfig ];
+
+  preAutoreconf = "(cd docgen && sh gendocs.sh)";
+
+  buildInputs = [
+    SDL alsaLib gtk2 libjack2 ladspaH libsamplerate libsndfile libpulseaudio
+  ];
+
+  configureFlags = [ "--with-default-ladspa-path=${ladspaPlugins}/lib/ladspa" ];
+
+  postInstall = ''
+    wrapProgram $out/bin/mhwaveedit \
+      --prefix PATH : ${lame}/bin/ \
+      --prefix PATH : ${vorbis-tools}/bin/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Graphical program for editing, playing and recording sound files";
+    homepage = "https://github.com/magnush/mhwaveedit";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.goibhniu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mi2ly/default.nix b/nixpkgs/pkgs/applications/audio/mi2ly/default.nix
new file mode 100644
index 000000000000..58c1690a9bb0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mi2ly/default.nix
@@ -0,0 +1,41 @@
+{stdenv, fetchurl}:
+let
+  s = # Generated upstream information
+  rec {
+    baseName="mi2ly";
+    version="0.12";
+    name="${baseName}-${version}";
+    hash="1b14zcwlvnxhjxr3ymyzg0mg4sbijkinzpxm641s859jxcgylmll";
+    url="https://download.savannah.gnu.org/releases/mi2ly/mi2ly.0.12.tar.bz2";
+    sha256="1b14zcwlvnxhjxr3ymyzg0mg4sbijkinzpxm641s859jxcgylmll";
+  };
+  buildInputs = [
+  ];
+in
+stdenv.mkDerivation {
+  inherit (s) name version;
+  inherit buildInputs;
+  src = fetchurl {
+    inherit (s) url sha256;
+  };
+
+  sourceRoot=".";
+
+  hardeningDisable = [ "format" ];
+
+  buildPhase = "./cc";
+  installPhase = ''
+    mkdir -p "$out"/{bin,share/doc/mi2ly}
+    cp mi2ly "$out/bin"
+    cp README Doc.txt COPYING Manual.txt "$out/share/doc/mi2ly"
+  '';
+
+  meta = {
+    inherit (s) version;
+    description = ''MIDI to Lilypond converter'';
+    license = stdenv.lib.licenses.gpl2Plus ;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    broken = true; # 2018-04-11
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mi2ly/default.upstream b/nixpkgs/pkgs/applications/audio/mi2ly/default.upstream
new file mode 100644
index 000000000000..0b2607989aa2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mi2ly/default.upstream
@@ -0,0 +1,3 @@
+url https://download.savannah.gnu.org/releases/mi2ly/
+ensure_choice
+version '.*/mi2ly[.]([0-9.]+)[.]tar.*' '\1'
diff --git a/nixpkgs/pkgs/applications/audio/mid2key/default.nix b/nixpkgs/pkgs/applications/audio/mid2key/default.nix
new file mode 100644
index 000000000000..071b18e5a8a6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mid2key/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, alsaLib, libX11, libXi, libXtst, xorgproto }:
+
+stdenv.mkDerivation rec {
+  name = "mid2key-r1";
+
+  src = fetchurl {
+    url = "http://mid2key.googlecode.com/files/${name}.tar.gz";
+    sha256 = "0j2vsjvdgx51nd1qmaa18mcy0yw9pwrhbv2mdwnf913bwsk4y904";
+  };
+
+  unpackPhase = "tar xvzf $src";
+
+  buildInputs = [ alsaLib libX11 libXi libXtst xorgproto ];
+
+  buildPhase = "make";
+
+  installPhase = "mkdir -p $out/bin && mv mid2key $out/bin";
+
+  meta = with stdenv.lib; {
+    homepage = "http://code.google.com/p/mid2key/";
+    description = "A simple tool which maps midi notes to simulated keystrokes";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/midas/generic.nix b/nixpkgs/pkgs/applications/audio/midas/generic.nix
new file mode 100644
index 000000000000..293d1b0b6c82
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/midas/generic.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, lib, libX11, libXext, alsaLib, freetype, brand, type, version, homepage, sha256, ... }:
+stdenv.mkDerivation rec {
+  inherit type;
+  baseName = "${type}-Edit";
+  name = "${lib.toLower baseName}-${version}";
+
+  src = fetchurl {
+    url = "http://downloads.music-group.com/software/behringer/${type}/${type}-Edit_LINUX_64bit_${version}.tar.gz";
+    inherit sha256;
+  };
+
+  sourceRoot = ".";
+  dontBuild = true;
+  dontStrip = true;
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp ${baseName} $out/bin
+  '';
+  preFixup = let
+    # we prepare our library path in the let clause to avoid it become part of the input of mkDerivation
+    libPath = lib.makeLibraryPath [
+      libX11           # libX11.so.6
+      libXext          # libXext.so.6
+      alsaLib          # libasound.so.2
+      freetype         # libfreetype.so.6
+      stdenv.cc.cc.lib # libstdc++.so.6
+    ];
+  in ''
+    patchelf \
+      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${libPath}" \
+      $out/bin/${baseName}
+  '';
+
+  meta = with stdenv.lib; {
+    inherit homepage;
+    description = "Editor for the ${brand} ${type} digital mixer";
+    license = licenses.unfree;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.magnetophon ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/midas/m32edit.nix b/nixpkgs/pkgs/applications/audio/midas/m32edit.nix
new file mode 100644
index 000000000000..6af11d42e31f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/midas/m32edit.nix
@@ -0,0 +1,9 @@
+{ callPackage, ... } @ args:
+
+callPackage ./generic.nix (args // {
+  brand = "Midas";
+  type = "M32";
+  version = "3.2";
+  sha256 = "1cds6qinz37086l6pmmgrzrxadygjr2z96sjjyznnai2wz4z2nrd";
+  homepage = "http://www.musictri.be/Categories/Midas/Mixers/Digital/M32/p/P0B3I/downloads";
+})
diff --git a/nixpkgs/pkgs/applications/audio/midas/x32edit.nix b/nixpkgs/pkgs/applications/audio/midas/x32edit.nix
new file mode 100644
index 000000000000..7e364ff984a5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/midas/x32edit.nix
@@ -0,0 +1,9 @@
+{ callPackage, ... } @ args:
+
+callPackage ./generic.nix (args // {
+  brand = "Behringer";
+  type = "X32";
+  version = "3.2";
+  sha256 = "1lzmhd0sqnlzc0khpwm82sfi48qhv7rg153a57qjih7hhhy41mzk";
+  homepage = "http://www.musictri.be/Categories/Behringer/Mixers/Digital/X32/p/P0ASF/downloads";
+})
diff --git a/nixpkgs/pkgs/applications/audio/midisheetmusic/default.nix b/nixpkgs/pkgs/applications/audio/midisheetmusic/default.nix
new file mode 100644
index 000000000000..388fc2a1b3ea
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/midisheetmusic/default.nix
@@ -0,0 +1,62 @@
+{ stdenv, fetchurl
+, mono, dotnetPackages, makeWrapper
+, gtk2, cups, timidity }:
+
+let
+  version = "2.6";
+in stdenv.mkDerivation {
+  pname = "midisheetmusic";
+  inherit version;
+
+  src = fetchurl {
+    url = "mirror://sourceforge/midisheetmusic/MidiSheetMusic-${version}-linux-src.tar.gz";
+    sha256 = "05c6zskj50g29f51lx8fvgzsi3f31z01zj6ssjjrgr7jfs7ak70p";
+  };
+
+  checkInputs = (with dotnetPackages; [ NUnitConsole ]);
+  nativeBuildInputs = [ mono makeWrapper ];
+
+  buildPhase = ''
+    for i in Classes/MidiPlayer.cs Classes/MidiSheetMusic.cs
+    do
+      substituteInPlace $i --replace "/usr/bin/timidity" "${timidity}/bin/timidity"
+    done
+
+    ./build.sh
+  '';
+
+  # include missing file with unit tests for building
+  # switch from mono nunit dll to standalone dll otherwise mono compiler barks
+  # run via nunit3 console, because mono nunit console wants access $HOME
+  checkPhase = ''
+    substituteInPlace UnitTestDLL.csproj \
+      --replace "</Compile>" '</Compile><Compile Include="Classes\UnitTest.cs"/>' \
+      --replace nunit.framework.dll "${dotnetPackages.NUnit}/lib/dotnet/NUnit/nunit.framework.dll"
+    ./build_unit_test.sh
+    nunit3-console bin/Debug/UnitTest.dll
+  '';
+
+  # 2 tests of 47 are still failing
+  doCheck = false;
+
+  installPhase = ''
+    mkdir -p $out/share/applications $out/share/pixmaps $out/bin
+
+    cp deb/midisheetmusic.desktop $out/share/applications
+    cp NotePair.png $out/share/pixmaps/midisheetmusic.png
+    cp bin/Debug/MidiSheetMusic.exe $out/bin/.MidiSheetMusic.exe
+
+    makeWrapper ${mono}/bin/mono $out/bin/midisheetmusic.mono.exe \
+      --prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath [ gtk2 cups ]} \
+      --prefix PATH : ${stdenv.lib.makeBinPath [ timidity ]} \
+      --add-flags $out/bin/.MidiSheetMusic.exe
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Convert MIDI Files to Piano Sheet Music for two hands";
+    homepage = "http://midisheetmusic.com";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.gnidorah ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mikmod/default.nix b/nixpkgs/pkgs/applications/audio/mikmod/default.nix
new file mode 100644
index 000000000000..9be303cb652a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mikmod/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, libmikmod, ncurses }:
+
+stdenv.mkDerivation rec {
+  name = "mikmod-3.2.8";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/mikmod/${name}.tar.gz";
+    sha256 = "1k54p8pn3jinha0f2i23ad15pf1pamibzcxjrbzjbklpcz1ipc6v";
+  };
+
+  buildInputs = [ libmikmod ncurses ];
+
+  meta = {
+    description = "Tracker music player for the terminal";
+    homepage = "http://mikmod.shlomifish.org/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = with stdenv.lib.maintainers; [ ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/milkytracker/default.nix b/nixpkgs/pkgs/applications/audio/milkytracker/default.nix
new file mode 100644
index 000000000000..d7b9e5a6355b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/milkytracker/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, makeWrapper
+, SDL2, alsaLib, libjack2, lhasa, perl, rtmidi, zlib, zziplib }:
+
+stdenv.mkDerivation rec {
+  version = "1.02.00";
+  pname = "milkytracker";
+
+  src = fetchFromGitHub {
+    owner  = "milkytracker";
+    repo   = "MilkyTracker";
+    rev    = "v${version}";
+    sha256 = "05a6d7l98k9i82dwrgi855dnccm3f2lkb144gi244vhk1156n0ca";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig makeWrapper ];
+
+  buildInputs = [ SDL2 alsaLib libjack2 lhasa perl rtmidi zlib zziplib ];
+
+  # Somehow this does not get set automatically
+  cmakeFlags = [ "-DSDL2MAIN_LIBRARY=${SDL2}/lib/libSDL2.so" ];
+
+  meta = with stdenv.lib; {
+    description = "Music tracker application, similar to Fasttracker II";
+    homepage = "http://milkytracker.org";
+    license = licenses.gpl3Plus;
+    platforms = [ "x86_64-linux" "i686-linux" ];
+    maintainers = with maintainers; [ zoomulator ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mimic/default.nix b/nixpkgs/pkgs/applications/audio/mimic/default.nix
new file mode 100644
index 000000000000..e33e69ad78c3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mimic/default.nix
@@ -0,0 +1,34 @@
+{ config, stdenv, autoreconfHook, fetchFromGitHub, pkgconfig
+, alsaLib, libtool, icu
+, pulseaudioSupport ? config.pulseaudio or false, libpulseaudio }:
+
+stdenv.mkDerivation rec {
+  pname = "mimic";
+  version = "1.2.0.2";
+
+  src = fetchFromGitHub {
+    rev = version;
+    repo = "mimic";
+    owner = "MycroftAI";
+    sha256 = "1wkpbwk88lsahzkc7pzbznmyy0lc02vsp0vkj8f1ags1gh0lc52j";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    pkgconfig
+  ];
+
+  buildInputs = [
+    alsaLib
+    libtool
+    icu
+  ] ++ stdenv.lib.optional pulseaudioSupport libpulseaudio;
+
+  meta = {
+    description = "Mycroft's TTS engine, based on CMU's Flite (Festival Lite)";
+    homepage = "https://mimic.mycroft.ai/";
+    license = stdenv.lib.licenses.free;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.noneucat ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mimms/default.nix b/nixpkgs/pkgs/applications/audio/mimms/default.nix
new file mode 100644
index 000000000000..47e9fa306dc4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mimms/default.nix
@@ -0,0 +1,31 @@
+{ fetchurl, stdenv, pythonPackages, libmms }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "mimms";
+  version = "3.2";
+
+  src = fetchurl {
+    url = "https://download.savannah.gnu.org/releases/mimms/mimms-${version}.tar.bz2";
+    sha256 = "0zmcd670mpq85cs3nvdq3i805ba0d1alqahfy1m9cpf7kxrivfml";
+  };
+
+  postInstall = ''
+    wrapProgram $out/bin/mimms \
+      --prefix LD_LIBRARY_PATH : ${libmms}/lib
+  '';
+
+  meta = {
+    homepage = "https://savannah.nongnu.org/projects/mimms/";
+    license = stdenv.lib.licenses.gpl3;
+    description = "An mms (e.g. mms://) stream downloader";
+
+    longDescription = ''
+      mimms is a program designed to allow you to download streams
+      using the MMS protocol and save them to your computer, as
+      opposed to watching them live. Similar functionality is
+      available in full media player suites such as Xine, MPlayer,
+      and VLC, but mimms is quick and easy to use and, for the time
+      being, remains a useful program.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mixxx/default.nix b/nixpkgs/pkgs/applications/audio/mixxx/default.nix
new file mode 100644
index 000000000000..f889d9e1e8d2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mixxx/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, mkDerivation, fetchurl, fetchFromGitHub, chromaprint
+, fftw, flac, faad2, glibcLocales, mp4v2
+, libid3tag, libmad, libopus, libshout, libsndfile, libusb1, libvorbis
+, libGLU, libxcb, lilv, lv2, opusfile
+, pkgconfig, portaudio, portmidi, protobuf, qtbase, qtscript, qtsvg
+, qtx11extras, rubberband, scons, sqlite, taglib, upower, vamp-plugin-sdk
+}:
+
+let
+  # Because libshout 2.4.2 and newer seem to break streaming in mixxx, build it
+  # with 2.4.1 instead.
+  libshout241 = libshout.overrideAttrs (o: rec {
+    name = "libshout-2.4.1";
+    src = fetchurl {
+      url = "http://downloads.xiph.org/releases/libshout/${name}.tar.gz";
+      sha256 = "0kgjpf8jkgyclw11nilxi8vyjk4s8878x23qyxnvybbgqbgbib7k";
+    };
+  });
+in
+mkDerivation rec {
+  pname = "mixxx";
+  version = "2.2.3";
+
+  src = fetchFromGitHub {
+    owner = "mixxxdj";
+    repo = "mixxx";
+    rev = "release-${version}";
+    sha256 = "1h7q25fv62c5m74d4cn1m6mpanmqpbl2wqbch4qvn488jb2jw1dv";
+  };
+
+  nativeBuildInputs = [ scons.py2 ];
+  buildInputs = [
+    chromaprint fftw flac faad2 glibcLocales mp4v2 libid3tag libmad libopus libshout241 libsndfile
+    libusb1 libvorbis libxcb libGLU lilv lv2 opusfile pkgconfig portaudio portmidi protobuf qtbase qtscript qtsvg
+    qtx11extras rubberband sqlite taglib upower vamp-plugin-sdk
+  ];
+
+  enableParallelBuilding = true;
+
+  sconsFlags = [
+    "build=release"
+    "qtdir=${qtbase}"
+    "faad=1"
+    "opus=1"
+  ];
+
+  qtWrapperArgs = [
+    "--set LOCALE_ARCHIVE ${glibcLocales}/lib/locale/locale-archive"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://mixxx.org";
+    description = "Digital DJ mixing software";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.aszlig maintainers.goibhniu maintainers.bfortz ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/moc/default.nix b/nixpkgs/pkgs/applications/audio/moc/default.nix
new file mode 100644
index 000000000000..9f68f8bb8e8e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/moc/default.nix
@@ -0,0 +1,104 @@
+{ stdenv, fetchurl, pkgconfig
+, ncurses, db , popt, libtool
+# Sound sub-systems
+, alsaSupport ? true, alsaLib
+, pulseSupport ? true, libpulseaudio, autoreconfHook
+, jackSupport ? true, libjack2
+, ossSupport ? true
+# Audio formats
+, aacSupport ? true, faad2, libid3tag
+, flacSupport ? true, flac
+, midiSupport ? true, timidity
+, modplugSupport ? true, libmodplug
+, mp3Support ? true, libmad
+, musepackSupport ? true, libmpc, libmpcdec, taglib
+, vorbisSupport ? true, libvorbis
+, speexSupport ? true, speex
+, ffmpegSupport ? true, ffmpeg_3
+, sndfileSupport ? true, libsndfile
+, wavpackSupport ? true, wavpack
+# Misc
+, withffmpeg4 ? false, ffmpeg_4
+, curlSupport ? true, curl
+, samplerateSupport ? true, libsamplerate
+, withDebug ? false
+}:
+
+let
+  opt = stdenv.lib.optional;
+  mkFlag = c: f: if c then "--with-${f}" else "--without-${f}";
+
+in stdenv.mkDerivation rec {
+
+  pname = "moc";
+  version = "2.5.2";
+
+  src = fetchurl {
+    url = "http://ftp.daper.net/pub/soft/moc/stable/moc-${version}.tar.bz2";
+    sha256 = "026v977kwb0wbmlmf6mnik328plxg8wykfx9ryvqhirac0aq39pk";
+  };
+
+  patches = []
+    ++ opt withffmpeg4 ./moc-ffmpeg4.patch
+    ++ opt pulseSupport ./pulseaudio.patch;
+
+  nativeBuildInputs = [ pkgconfig ]
+    ++ opt pulseSupport autoreconfHook;
+
+  buildInputs = [ ncurses db popt libtool ]
+    # Sound sub-systems
+    ++ opt alsaSupport alsaLib
+    ++ opt pulseSupport libpulseaudio
+    ++ opt jackSupport libjack2
+    # Audio formats
+    ++ opt (aacSupport || mp3Support) libid3tag
+    ++ opt aacSupport faad2
+    ++ opt flacSupport flac
+    ++ opt midiSupport timidity
+    ++ opt modplugSupport libmodplug
+    ++ opt mp3Support libmad
+    ++ stdenv.lib.optionals musepackSupport [ libmpc libmpcdec taglib ]
+    ++ opt vorbisSupport libvorbis
+    ++ opt speexSupport speex
+    ++ opt (ffmpegSupport && !withffmpeg4) ffmpeg_3
+    ++ opt (ffmpegSupport && withffmpeg4) ffmpeg_4
+    ++ opt sndfileSupport libsndfile
+    ++ opt wavpackSupport wavpack
+    # Misc
+    ++ opt curlSupport curl
+    ++ opt samplerateSupport libsamplerate;
+
+  configureFlags = [
+    # Sound sub-systems
+    (mkFlag alsaSupport "alsa")
+    (mkFlag pulseSupport "pulse")
+    (mkFlag jackSupport "jack")
+    (mkFlag ossSupport "oss")
+    # Audio formats
+    (mkFlag aacSupport "aac")
+    (mkFlag flacSupport "flac")
+    (mkFlag midiSupport "timidity")
+    (mkFlag modplugSupport "modplug")
+    (mkFlag mp3Support "mp3")
+    (mkFlag musepackSupport "musepack")
+    (mkFlag vorbisSupport "vorbis")
+    (mkFlag speexSupport "speex")
+    (mkFlag ffmpegSupport "ffmpeg")
+    (mkFlag sndfileSupport "sndfile")
+    (mkFlag wavpackSupport "wavpack")
+    # Misc
+    (mkFlag curlSupport "curl")
+    (mkFlag samplerateSupport "samplerate")
+    ("--enable-debug=" + (if withDebug then "yes" else "no"))
+    "--disable-cache"
+    "--without-rcc"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "An ncurses console audio player designed to be powerful and easy to use";
+    homepage = "http://moc.daper.net/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ aethelz pSub jagajaga ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/moc/moc-ffmpeg4.patch b/nixpkgs/pkgs/applications/audio/moc/moc-ffmpeg4.patch
new file mode 100644
index 000000000000..7499f9c539bc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/moc/moc-ffmpeg4.patch
@@ -0,0 +1,33 @@
+Index: decoder_plugins/ffmpeg/ffmpeg.c
+===================================================================
+--- /decoder_plugins/ffmpeg/ffmpeg.c	(revisión: 2963)
++++ /decoder_plugins/ffmpeg/ffmpeg.c	(copia de trabajo)
+@@ -697,7 +697,7 @@
+ 	 * FFmpeg/LibAV in use.  For some versions this will be caught in
+ 	 * *_find_stream_info() above and misreported as an unfound codec
+ 	 * parameters error. */
+-	if (data->codec->capabilities & CODEC_CAP_EXPERIMENTAL) {
++	if (data->codec->capabilities & AV_CODEC_CAP_EXPERIMENTAL) {
+ 		decoder_error (&data->error, ERROR_FATAL, 0,
+ 				"The codec is experimental and may damage MOC: %s",
+ 				data->codec->name);
+@@ -705,8 +705,8 @@
+ 	}
+ 
+ 	set_downmixing (data);
+-	if (data->codec->capabilities & CODEC_CAP_TRUNCATED)
+-		data->enc->flags |= CODEC_FLAG_TRUNCATED;
++	if (data->codec->capabilities & AV_CODEC_CAP_TRUNCATED)
++		data->enc->flags |= AV_CODEC_FLAG_TRUNCATED;
+ 
+ 	if (avcodec_open2 (data->enc, data->codec, NULL) < 0)
+ 	{
+@@ -725,7 +725,7 @@
+ 
+ 	data->sample_width = sfmt_Bps (data->fmt);
+ 
+-	if (data->codec->capabilities & CODEC_CAP_DELAY)
++	if (data->codec->capabilities & AV_CODEC_CAP_DELAY)
+ 		data->delay = true;
+ 	data->seek_broken = is_seek_broken (data);
+ 	data->timing_broken = is_timing_broken (data->ic);
diff --git a/nixpkgs/pkgs/applications/audio/moc/pulseaudio.patch b/nixpkgs/pkgs/applications/audio/moc/pulseaudio.patch
new file mode 100644
index 000000000000..37d81dddf2bc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/moc/pulseaudio.patch
@@ -0,0 +1,800 @@
+diff --git a/audio.c b/audio.c
+--- a/audio.c
++++ b/audio.c
+@@ -32,6 +32,9 @@
+ #include "log.h"
+ #include "lists.h"
+ 
++#ifdef HAVE_PULSE
++# include "pulse.h"
++#endif
+ #ifdef HAVE_OSS
+ # include "oss.h"
+ #endif
+@@ -893,6 +896,15 @@
+ 		}
+ #endif
+ 
++#ifdef HAVE_PULSE
++		if (!strcasecmp(name, "pulseaudio")) {
++			pulse_funcs (funcs);
++			printf ("Trying PulseAudio...\n");
++			if (funcs->init(&hw_caps))
++				return;
++		}
++#endif
++
+ #ifdef HAVE_OSS
+ 		if (!strcasecmp(name, "oss")) {
+ 			oss_funcs (funcs);
+diff --git a/configure.in b/configure.in
+--- a/configure.in
++++ b/configure.in
+@@ -162,6 +162,21 @@
+ 		       AC_MSG_ERROR([BerkeleyDB (libdb) not found.]))
+ fi
+ 
++AC_ARG_WITH(pulse, AS_HELP_STRING(--without-pulse,
++				  Compile without PulseAudio support.))
++
++if test "x$with_pulse" != "xno"
++then
++	PKG_CHECK_MODULES(PULSE, [libpulse],
++		 [SOUND_DRIVERS="$SOUND_DRIVERS PULSE"
++		  EXTRA_OBJS="$EXTRA_OBJS pulse.o"
++		  AC_DEFINE([HAVE_PULSE], 1, [Define if you have PulseAudio.])
++		  EXTRA_LIBS="$EXTRA_LIBS $PULSE_LIBS"
++		  CFLAGS="$CFLAGS $PULSE_CFLAGS"],
++		  [true])
++fi
++
++
+ AC_ARG_WITH(oss, AS_HELP_STRING([--without-oss],
+                                 [Compile without OSS support]))
+ 
+diff --git a/options.c b/options.c
+--- a/options.c
++++ b/options.c
+@@ -572,10 +572,11 @@
+ 
+ #ifdef OPENBSD
+ 	add_list ("SoundDriver", "SNDIO:JACK:OSS",
+-	          CHECK_DISCRETE(5), "SNDIO", "Jack", "ALSA", "OSS", "null");
++		  CHECK_DISCRETE(5), "SNDIO", "PulseAudio", "Jack", "ALSA", "OSS", "null");
++
+ #else
+ 	add_list ("SoundDriver", "Jack:ALSA:OSS",
+-	          CHECK_DISCRETE(5), "SNDIO", "Jack", "ALSA", "OSS", "null");
++	          CHECK_DISCRETE(5), "SNDIO", "PulseAudio", "Jack", "ALSA", "OSS", "null");
+ #endif
+ 
+ 	add_str  ("JackClientName", "moc", CHECK_NONE);
+diff --git a/pulse.c b/pulse.c
+new file mode 100644
+--- /dev/null
++++ b/pulse.c
+@@ -0,0 +1,705 @@
++/*
++ * MOC - music on console
++ * Copyright (C) 2011 Marien Zwart <marienz@marienz.net>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ */
++
++/* PulseAudio backend.
++ *
++ * FEATURES:
++ *
++ * Does not autostart a PulseAudio server, but uses an already-started
++ * one, which should be better than alsa-through-pulse.
++ *
++ * Supports control of either our stream's or our entire sink's volume
++ * while we are actually playing. Volume control while paused is
++ * intentionally unsupported: the PulseAudio documentation strongly
++ * suggests not passing in an initial volume when creating a stream
++ * (allowing the server to track this instead), and we do not know
++ * which sink to control if we do not have a stream open.
++ *
++ * IMPLEMENTATION:
++ *
++ * Most client-side (resource allocation) errors are fatal. Failure to
++ * create a server context or stream is not fatal (and MOC should cope
++ * with these failures too), but server communication failures later
++ * on are currently not handled (MOC has no great way for us to tell
++ * it we no longer work, and I am not sure if attempting to reconnect
++ * is worth it or even a good idea).
++ *
++ * The pulse "simple" API is too simple: it combines connecting to the
++ * server and opening a stream into one operation, while I want to
++ * connect to the server when MOC starts (and fall back to a different
++ * backend if there is no server), and I cannot open a stream at that
++ * time since I do not know the audio format yet.
++ *
++ * PulseAudio strongly recommends we use a high-latency connection,
++ * which the MOC frontend code might not expect from its audio
++ * backend. We'll see.
++ *
++ * We map MOC's percentage volumes linearly to pulse's PA_VOLUME_MUTED
++ * (0) .. PA_VOLUME_NORM range. This is what the PulseAudio docs recommend
++ * ( http://pulseaudio.org/wiki/WritingVolumeControlUIs ). It does mean
++ * PulseAudio volumes above PA_VOLUME_NORM do not work well with MOC.
++ *
++ * Comments in audio.h claim "All functions are executed only by one
++ * thread" (referring to the function in the hw_funcs struct). This is
++ * a blatant lie. Most of them are invoked off the "output buffer"
++ * thread (out_buf.c) but at least the "playing" thread (audio.c)
++ * calls audio_close which calls our close function. We can mostly
++ * ignore this problem because we serialize on the pulseaudio threaded
++ * mainloop lock. But it does mean that functions that are normally
++ * only called between open and close (like reset) are sometimes
++ * called without us having a stream. Bulletproof, therefore:
++ * serialize setting/unsetting our global stream using the threaded
++ * mainloop lock, and check for that stream being non-null before
++ * using it.
++ *
++ * I am not convinced there are no further dragons lurking here: can
++ * the "playing" thread(s) close and reopen our output stream while
++ * the "output buffer" thread is sending output there? We can bail if
++ * our stream is simply closed, but we do not currently detect it
++ * being reopened and no longer using the same sample format, which
++ * might have interesting results...
++ *
++ * Also, read_mixer is called from the main server thread (handling
++ * commands). This crashed me once when it got at a stream that was in
++ * the "creating" state and therefore did not have a valid stream
++ * index yet. Fixed by only assigning to the stream global when the
++ * stream is valid.
++ */
++
++#ifdef HAVE_CONFIG_H
++# include "config.h"
++#endif
++
++#define DEBUG
++
++#include <pulse/pulseaudio.h>
++#include "common.h"
++#include "log.h"
++#include "audio.h"
++
++
++/* The pulse mainloop and context are initialized in pulse_init and
++ * destroyed in pulse_shutdown.
++ */
++static pa_threaded_mainloop *mainloop = NULL;
++static pa_context *context = NULL;
++
++/* The stream is initialized in pulse_open and destroyed in pulse_close. */
++static pa_stream *stream = NULL;
++
++static int showing_sink_volume = 0;
++
++/* Callbacks that do nothing but wake up the mainloop. */
++
++static void context_state_callback (pa_context *context ATTR_UNUSED,
++				    void *userdata)
++{
++	pa_threaded_mainloop *m = userdata;
++
++	pa_threaded_mainloop_signal (m, 0);
++}
++
++static void stream_state_callback (pa_stream *stream ATTR_UNUSED,
++				   void *userdata)
++{
++	pa_threaded_mainloop *m = userdata;
++
++	pa_threaded_mainloop_signal (m, 0);
++}
++
++static void stream_write_callback (pa_stream *stream ATTR_UNUSED,
++				   size_t nbytes ATTR_UNUSED, void *userdata)
++{
++	pa_threaded_mainloop *m = userdata;
++
++	pa_threaded_mainloop_signal (m, 0);
++}
++
++/* Initialize pulse mainloop and context. Failure to connect to the
++ * pulse daemon is nonfatal, everything else is fatal (as it
++ * presumably means we ran out of resources).
++ */
++static int pulse_init (struct output_driver_caps *caps)
++{
++	pa_context *c;
++	pa_proplist *proplist;
++
++	assert (!mainloop);
++	assert (!context);
++
++	mainloop = pa_threaded_mainloop_new ();
++	if (!mainloop)
++		fatal ("Cannot create PulseAudio mainloop");
++
++	if (pa_threaded_mainloop_start (mainloop) < 0)
++		fatal ("Cannot start PulseAudio mainloop");
++
++	/* TODO: possibly add more props.
++	 *
++	 * There are a few we could set in proplist.h but nothing I
++	 * expect to be very useful.
++	 *
++	 * http://pulseaudio.org/wiki/ApplicationProperties recommends
++	 * setting at least application.name, icon.name and media.role.
++	 *
++	 * No need to set application.name here, the name passed to
++	 * pa_context_new_with_proplist overrides it.
++	 */
++	proplist = pa_proplist_new ();
++	if (!proplist)
++		fatal ("Cannot allocate PulseAudio proplist");
++
++	pa_proplist_sets (proplist,
++			  PA_PROP_APPLICATION_VERSION, PACKAGE_VERSION);
++	pa_proplist_sets (proplist, PA_PROP_MEDIA_ROLE, "music");
++	pa_proplist_sets (proplist, PA_PROP_APPLICATION_ID, "net.daper.moc");
++
++	pa_threaded_mainloop_lock (mainloop);
++
++	c = pa_context_new_with_proplist (
++		pa_threaded_mainloop_get_api (mainloop),
++		PACKAGE_NAME, proplist);
++	pa_proplist_free (proplist);
++
++	if (!c)
++		fatal ("Cannot allocate PulseAudio context");
++
++	pa_context_set_state_callback (c, context_state_callback, mainloop);
++
++	/* Ignore return value, rely on state being set properly */
++	pa_context_connect (c, NULL, PA_CONTEXT_NOAUTOSPAWN, NULL);
++
++	while (1) {
++		pa_context_state_t state = pa_context_get_state (c);
++
++		if (state == PA_CONTEXT_READY)
++			break;
++
++		if (!PA_CONTEXT_IS_GOOD (state)) {
++			error ("PulseAudio connection failed: %s",
++			       pa_strerror (pa_context_errno (c)));
++
++			goto unlock_and_fail;
++		}
++
++		debug ("waiting for context to become ready...");
++		pa_threaded_mainloop_wait (mainloop);
++	}
++
++	/* Only set the global now that the context is actually ready */
++	context = c;
++
++	pa_threaded_mainloop_unlock (mainloop);
++
++	/* We just make up the hardware capabilities, since pulse is
++	 * supposed to be abstracting these out. Assume pulse will
++	 * deal with anything we want to throw at it, and that we will
++	 * only want mono or stereo audio.
++	 */
++	caps->min_channels = 1;
++	caps->max_channels = 2;
++	caps->formats = (SFMT_S8 | SFMT_S16 | SFMT_S32 |
++			 SFMT_FLOAT | SFMT_BE | SFMT_LE);
++
++	return 1;
++
++unlock_and_fail:
++
++	pa_context_unref (c);
++
++	pa_threaded_mainloop_unlock (mainloop);
++
++	pa_threaded_mainloop_stop (mainloop);
++	pa_threaded_mainloop_free (mainloop);
++	mainloop = NULL;
++
++	return 0;
++}
++
++static void pulse_shutdown (void)
++{
++	pa_threaded_mainloop_lock (mainloop);
++
++	pa_context_disconnect (context);
++	pa_context_unref (context);
++	context = NULL;
++
++	pa_threaded_mainloop_unlock (mainloop);
++
++	pa_threaded_mainloop_stop (mainloop);
++	pa_threaded_mainloop_free (mainloop);
++	mainloop = NULL;
++}
++
++static int pulse_open (struct sound_params *sound_params)
++{
++	pa_sample_spec ss;
++	pa_buffer_attr ba;
++	pa_stream *s;
++
++	assert (!stream);
++	/* Initialize everything to -1, which in practice gets us
++	 * about 2 seconds of latency (which is fine). This is not the
++	 * same as passing NULL for this struct, which gets us an
++	 * unnecessarily short alsa-like latency.
++	 */
++	ba.fragsize = (uint32_t) -1;
++	ba.tlength = (uint32_t) -1;
++	ba.prebuf = (uint32_t) -1;
++	ba.minreq = (uint32_t) -1;
++	ba.maxlength = (uint32_t) -1;
++
++	ss.channels = sound_params->channels;
++	ss.rate = sound_params->rate;
++	switch (sound_params->fmt) {
++	case SFMT_U8:
++		ss.format = PA_SAMPLE_U8;
++		break;
++	case SFMT_S16 | SFMT_LE:
++		ss.format = PA_SAMPLE_S16LE;
++		break;
++	case SFMT_S16 | SFMT_BE:
++		ss.format = PA_SAMPLE_S16BE;
++		break;
++	case SFMT_FLOAT | SFMT_LE:
++		ss.format = PA_SAMPLE_FLOAT32LE;
++		break;
++	case SFMT_FLOAT | SFMT_BE:
++		ss.format = PA_SAMPLE_FLOAT32BE;
++		break;
++	case SFMT_S32 | SFMT_LE:
++		ss.format = PA_SAMPLE_S32LE;
++		break;
++	case SFMT_S32 | SFMT_BE:
++		ss.format = PA_SAMPLE_S32BE;
++		break;
++
++	default:
++		fatal ("pulse: got unrequested format");
++	}
++
++	debug ("opening stream");
++
++	pa_threaded_mainloop_lock (mainloop);
++
++	/* TODO: figure out if there are useful stream properties to set.
++	 *
++	 * I do not really see any in proplist.h that we can set from
++	 * here (there are media title/artist/etc props but we do not
++	 * have that data available here).
++	 */
++	s = pa_stream_new (context, "music", &ss, NULL);
++	if (!s)
++		fatal ("pulse: stream allocation failed");
++
++	pa_stream_set_state_callback (s, stream_state_callback, mainloop);
++	pa_stream_set_write_callback (s, stream_write_callback, mainloop);
++
++	/* Ignore return value, rely on failed stream state instead. */
++	pa_stream_connect_playback (
++		s, NULL, &ba,
++		PA_STREAM_INTERPOLATE_TIMING |
++		PA_STREAM_AUTO_TIMING_UPDATE |
++		PA_STREAM_ADJUST_LATENCY,
++		NULL, NULL);
++
++	while (1) {
++		pa_stream_state_t state = pa_stream_get_state (s);
++
++		if (state == PA_STREAM_READY)
++			break;
++
++		if (!PA_STREAM_IS_GOOD (state)) {
++			error ("PulseAudio stream connection failed");
++
++			goto fail;
++		}
++
++		debug ("waiting for stream to become ready...");
++		pa_threaded_mainloop_wait (mainloop);
++	}
++
++	/* Only set the global stream now that it is actually ready */
++	stream = s;
++
++	pa_threaded_mainloop_unlock (mainloop);
++
++	return 1;
++
++fail:
++	pa_stream_unref (s);
++
++	pa_threaded_mainloop_unlock (mainloop);
++	return 0;
++}
++
++static void pulse_close (void)
++{
++	debug ("closing stream");
++
++	pa_threaded_mainloop_lock (mainloop);
++
++	pa_stream_disconnect (stream);
++	pa_stream_unref (stream);
++	stream = NULL;
++
++	pa_threaded_mainloop_unlock (mainloop);
++}
++
++static int pulse_play (const char *buff, const size_t size)
++{
++	size_t offset = 0;
++
++	debug ("Got %d bytes to play", (int)size);
++
++	pa_threaded_mainloop_lock (mainloop);
++
++	/* The buffer is usually writable when we get here, and there
++	 * are usually few (if any) writes after the first one. So
++	 * there is no point in doing further writes directly from the
++	 * callback: we can just do all writes from this thread.
++	 */
++
++	/* Break out of the loop if some other thread manages to close
++	 * our stream underneath us.
++	 */
++	while (stream) {
++		size_t towrite = MIN(pa_stream_writable_size (stream),
++				     size - offset);
++		debug ("writing %d bytes", (int)towrite);
++
++		/* We have no working way of dealing with errors
++		 * (see below). */
++		if (pa_stream_write(stream, buff + offset, towrite,
++				    NULL, 0, PA_SEEK_RELATIVE))
++			error ("pa_stream_write failed");
++
++		offset += towrite;
++
++		if (offset >= size)
++			break;
++
++		pa_threaded_mainloop_wait (mainloop);
++	}
++
++	pa_threaded_mainloop_unlock (mainloop);
++
++	debug ("Done playing!");
++
++	/* We should always return size, calling code does not deal
++	 * well with anything else. Only read the rest if you want to
++	 * know why.
++	 *
++	 * The output buffer reader thread (out_buf.c:read_thread)
++	 * repeatedly loads some 64k/0.1s of audio into a buffer on
++	 * the stack, then calls audio_send_pcm repeatedly until this
++	 * entire buffer has been processed (similar to the loop in
++	 * this function). audio_send_pcm applies the softmixer and
++	 * equalizer, then feeds the result to this function, passing
++	 * through our return value.
++	 *
++	 * So if we return less than size the equalizer/softmixer is
++	 * re-applied to the remaining data, which is silly. Also,
++	 * audio_send_pcm checks for our return value being zero and
++	 * calls fatal() if it is, so try to always process *some*
++	 * data. Also, out_buf.c uses the return value of this
++	 * function from the last run through its inner loop to update
++	 * its time attribute, which means it will be interestingly
++	 * off if that loop ran more than once.
++	 *
++	 * Oh, and alsa.c seems to think it can return -1 to indicate
++	 * failure, which will cause out_buf.c to rewind its buffer
++	 * (to before its start, usually).
++	 */
++	return size;
++}
++
++static void volume_cb (const pa_cvolume *v, void *userdata)
++{
++	int *result = userdata;
++
++	if (v)
++		*result = 100 * pa_cvolume_avg (v) / PA_VOLUME_NORM;
++
++	pa_threaded_mainloop_signal (mainloop, 0);
++}
++
++static void sink_volume_cb (pa_context *c ATTR_UNUSED,
++			    const pa_sink_info *i, int eol ATTR_UNUSED,
++			    void *userdata)
++{
++	volume_cb (i ? &i->volume : NULL, userdata);
++}
++
++static void sink_input_volume_cb (pa_context *c ATTR_UNUSED,
++				  const pa_sink_input_info *i,
++				  int eol ATTR_UNUSED,
++				  void *userdata ATTR_UNUSED)
++{
++	volume_cb (i ? &i->volume : NULL, userdata);
++}
++
++static int pulse_read_mixer (void)
++{
++	pa_operation *op;
++	int result = 0;
++
++	debug ("read mixer");
++
++	pa_threaded_mainloop_lock (mainloop);
++
++	if (stream) {
++		if (showing_sink_volume)
++			op = pa_context_get_sink_info_by_index (
++				context, pa_stream_get_device_index (stream),
++				sink_volume_cb, &result);
++		else
++			op = pa_context_get_sink_input_info (
++				context, pa_stream_get_index (stream),
++				sink_input_volume_cb, &result);
++
++		while (pa_operation_get_state (op) == PA_OPERATION_RUNNING)
++			pa_threaded_mainloop_wait (mainloop);
++
++		pa_operation_unref (op);
++	}
++
++	pa_threaded_mainloop_unlock (mainloop);
++
++	return result;
++}
++
++static void pulse_set_mixer (int vol)
++{
++	pa_cvolume v;
++	pa_operation *op;
++
++	/* Setting volume for one channel does the right thing. */
++	pa_cvolume_set(&v, 1, vol * PA_VOLUME_NORM / 100);
++
++	pa_threaded_mainloop_lock (mainloop);
++
++	if (stream) {
++		if (showing_sink_volume)
++			op = pa_context_set_sink_volume_by_index (
++				context, pa_stream_get_device_index (stream),
++				&v, NULL, NULL);
++		else
++			op = pa_context_set_sink_input_volume (
++				context, pa_stream_get_index (stream),
++				&v, NULL, NULL);
++
++		pa_operation_unref (op);
++	}
++
++	pa_threaded_mainloop_unlock (mainloop);
++}
++
++static int pulse_get_buff_fill (void)
++{
++	/* This function is problematic. MOC uses it to for the "time
++	 * remaining" in the UI, but calls it more than once per
++	 * second (after each chunk of audio played, not for each
++	 * playback time update). We have to be fairly accurate here
++	 * for that time remaining to not jump weirdly. But PulseAudio
++	 * cannot give us a 100% accurate value here, as it involves a
++	 * server roundtrip. And if we call this a lot it suggests
++	 * switching to a mode where the value is interpolated, making
++	 * it presumably more inaccurate (see the flags we pass to
++	 * pa_stream_connect_playback).
++	 *
++	 * MOC also contains what I believe to be a race: it calls
++	 * audio_get_buff_fill "soon" (after playing the first chunk)
++	 * after starting playback of the next song, at which point we
++	 * still have part of the previous song buffered. This means
++	 * our position into the new song is negative, which fails an
++	 * assert (in out_buf.c:out_buf_time_get). There is no sane
++	 * way for us to detect this condition. I believe no other
++	 * backend triggers this because the assert sits after an
++	 * implicit float -> int seconds conversion, which means we
++	 * have to be off by at least an entire second to get a
++	 * negative value, and none of the other backends have buffers
++	 * that large (alsa buffers are supposedly a few 100 ms).
++	 */
++	pa_usec_t buffered_usecs = 0;
++	int buffered_bytes = 0;
++
++	pa_threaded_mainloop_lock (mainloop);
++
++	/* Using pa_stream_get_timing_info and returning the distance
++	 * between write_index and read_index would be more obvious,
++	 * but because of how the result is actually used I believe
++	 * using the latency value is slightly more correct, and it
++	 * makes the following crash-avoidance hack more obvious.
++	 */
++
++	/* This function will frequently fail the first time we call
++	 * it (pulse does not have the requested data yet). We ignore
++	 * that and just return 0.
++	 *
++	 * Deal with stream being NULL too, just in case this is
++	 * called in a racy fashion similar to how reset() is.
++	 */
++	if (stream &&
++	    pa_stream_get_latency (stream, &buffered_usecs, NULL) >= 0) {
++		/* Crash-avoidance HACK: floor our latency to at most
++		 * 1 second. It is usually more, but reporting that at
++		 * the start of playback crashes MOC, and we cannot
++		 * sanely detect when reporting it is safe.
++		 */
++		if (buffered_usecs > 1000000)
++			buffered_usecs = 1000000;
++
++		buffered_bytes = pa_usec_to_bytes (
++			buffered_usecs,
++			pa_stream_get_sample_spec (stream));
++	}
++
++	pa_threaded_mainloop_unlock (mainloop);
++
++	debug ("buffer fill: %d usec / %d bytes",
++	       (int) buffered_usecs, (int) buffered_bytes);
++
++	return buffered_bytes;
++}
++
++static void flush_callback (pa_stream *s ATTR_UNUSED, int success,
++			    void *userdata)
++{
++	int *result = userdata;
++
++	*result = success;
++
++	pa_threaded_mainloop_signal (mainloop, 0);
++}
++
++static int pulse_reset (void)
++{
++	pa_operation *op;
++	int result = 0;
++
++	debug ("reset requested");
++
++	pa_threaded_mainloop_lock (mainloop);
++
++	/* We *should* have a stream here, but MOC is racy, so bulletproof */
++	if (stream) {
++		op = pa_stream_flush (stream, flush_callback, &result);
++
++		while (pa_operation_get_state (op) == PA_OPERATION_RUNNING)
++			pa_threaded_mainloop_wait (mainloop);
++
++		pa_operation_unref (op);
++	} else
++		logit ("pulse_reset() called without a stream");
++
++	pa_threaded_mainloop_unlock (mainloop);
++
++	return result;
++}
++
++static int pulse_get_rate (void)
++{
++	/* This is called once right after open. Do not bother making
++	 * this fast. */
++
++	int result;
++
++	pa_threaded_mainloop_lock (mainloop);
++
++	if (stream)
++		result = pa_stream_get_sample_spec (stream)->rate;
++	else {
++		error ("get_rate called without a stream");
++		result = 0;
++	}
++
++	pa_threaded_mainloop_unlock (mainloop);
++
++	return result;
++}
++
++static void pulse_toggle_mixer_channel (void)
++{
++	showing_sink_volume = !showing_sink_volume;
++}
++
++static void sink_name_cb (pa_context *c ATTR_UNUSED,
++			  const pa_sink_info *i, int eol ATTR_UNUSED,
++			  void *userdata)
++{
++	char **result = userdata;
++
++	if (i && !*result)
++		*result = xstrdup (i->name);
++
++	pa_threaded_mainloop_signal (mainloop, 0);
++}
++
++static void sink_input_name_cb (pa_context *c ATTR_UNUSED,
++				const pa_sink_input_info *i,
++				int eol ATTR_UNUSED,
++				void *userdata)
++{
++	char **result = userdata;
++
++	if (i && !*result)
++		*result = xstrdup (i->name);
++
++	pa_threaded_mainloop_signal (mainloop, 0);
++}
++
++static char *pulse_get_mixer_channel_name (void)
++{
++	char *result = NULL;
++	pa_operation *op;
++
++	pa_threaded_mainloop_lock (mainloop);
++
++	if (stream) {
++		if (showing_sink_volume)
++			op = pa_context_get_sink_info_by_index (
++				context, pa_stream_get_device_index (stream),
++				sink_name_cb, &result);
++		else
++			op = pa_context_get_sink_input_info (
++				context, pa_stream_get_index (stream),
++				sink_input_name_cb, &result);
++
++		while (pa_operation_get_state (op) == PA_OPERATION_RUNNING)
++			pa_threaded_mainloop_wait (mainloop);
++
++		pa_operation_unref (op);
++	}
++
++	pa_threaded_mainloop_unlock (mainloop);
++
++	if (!result)
++		result = xstrdup ("disconnected");
++
++	return result;
++}
++
++void pulse_funcs (struct hw_funcs *funcs)
++{
++	funcs->init = pulse_init;
++	funcs->shutdown = pulse_shutdown;
++	funcs->open = pulse_open;
++	funcs->close = pulse_close;
++	funcs->play = pulse_play;
++	funcs->read_mixer = pulse_read_mixer;
++	funcs->set_mixer = pulse_set_mixer;
++	funcs->get_buff_fill = pulse_get_buff_fill;
++	funcs->reset = pulse_reset;
++	funcs->get_rate = pulse_get_rate;
++	funcs->toggle_mixer_channel = pulse_toggle_mixer_channel;
++	funcs->get_mixer_channel_name = pulse_get_mixer_channel_name;
++}
+diff --git a/pulse.h b/pulse.h
+new file mode 100644
+--- /dev/null
++++ b/pulse.h
+@@ -0,0 +1,14 @@
++#ifndef PULSE_H
++#define PULSE_H
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++void pulse_funcs (struct hw_funcs *funcs);
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif
diff --git a/nixpkgs/pkgs/applications/audio/mod-distortion/default.nix b/nixpkgs/pkgs/applications/audio/mod-distortion/default.nix
new file mode 100644
index 000000000000..765def25d600
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mod-distortion/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, lv2 }:
+
+stdenv.mkDerivation {
+  pname = "mod-distortion-git";
+  version = "2016-08-19";
+
+  src = fetchFromGitHub {
+    owner = "portalmod";
+    repo = "mod-distortion";
+    rev = "e672d5feb9d631798e3d56eb96e8958c3d2c6821";
+    sha256 = "005wdkbhn9dgjqv019cwnziqg86yryc5vh7j5qayrzh9v446dw34";
+  };
+
+  buildInputs = [ lv2 ];
+
+  installFlags = [ "INSTALL_PATH=$(out)/lib/lv2" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/portalmod/mod-distortion";
+    description = "Analog distortion emulation lv2 plugins";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/monkeys-audio/buildfix.diff b/nixpkgs/pkgs/applications/audio/monkeys-audio/buildfix.diff
new file mode 100644
index 000000000000..9684e5bf8e43
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/monkeys-audio/buildfix.diff
@@ -0,0 +1,49 @@
+diff --git a/src/MACLib/APELink.cpp b/src/MACLib/APELink.cpp
+index d349f4b..b00ec83 100644
+--- a/src/MACLib/APELink.cpp
++++ b/src/MACLib/APELink.cpp
+@@ -63,10 +63,10 @@ void CAPELink::ParseData(const char * pData, const str_utf16 * pFilename)
+     if (pData != NULL)
+     {
+         // parse out the information
+-        char * pHeader = strstr(pData, APE_LINK_HEADER);
+-        char * pImageFile = strstr(pData, APE_LINK_IMAGE_FILE_TAG);
+-        char * pStartBlock = strstr(pData, APE_LINK_START_BLOCK_TAG);
+-        char * pFinishBlock = strstr(pData, APE_LINK_FINISH_BLOCK_TAG);
++        const char * pHeader = strstr(pData, APE_LINK_HEADER);
++        const char * pImageFile = strstr(pData, APE_LINK_IMAGE_FILE_TAG);
++        const char * pStartBlock = strstr(pData, APE_LINK_START_BLOCK_TAG);
++        const char * pFinishBlock = strstr(pData, APE_LINK_FINISH_BLOCK_TAG);
+ 
+         if (pHeader && pImageFile && pStartBlock && pFinishBlock)
+         {
+@@ -81,7 +81,7 @@ void CAPELink::ParseData(const char * pData, const str_utf16 * pFilename)
+                 
+                 // get the path
+                 char cImageFile[MAX_PATH + 1]; int nIndex = 0;
+-                char * pImageCharacter = &pImageFile[strlen(APE_LINK_IMAGE_FILE_TAG)];
++                const char * pImageCharacter = &pImageFile[strlen(APE_LINK_IMAGE_FILE_TAG)];
+                 while ((*pImageCharacter != 0) && (*pImageCharacter != '\r') && (*pImageCharacter != '\n'))
+                     cImageFile[nIndex++] = *pImageCharacter++;
+                 cImageFile[nIndex] = 0;
+diff --git a/src/Shared/All.h b/src/Shared/All.h
+index 328addc..7730e89 100644
+--- a/src/Shared/All.h
++++ b/src/Shared/All.h
+@@ -21,6 +21,8 @@ Global includes
+     #include <windows.h>
+ #endif
+ 
++#include <stdlib.h>
++
+ #ifdef _WIN32
+     #include <mmsystem.h>
+     #include <tchar.h>
+@@ -34,7 +36,6 @@ Global includes
+     #include "NoWindows.h"
+ #endif
+ 
+-#include <stdlib.h>
+ #include <memory.h>
+ #include <stdio.h>
+ #include <math.h>
diff --git a/nixpkgs/pkgs/applications/audio/monkeys-audio/default.nix b/nixpkgs/pkgs/applications/audio/monkeys-audio/default.nix
new file mode 100644
index 000000000000..adc8eb2087e5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/monkeys-audio/default.nix
@@ -0,0 +1,20 @@
+{stdenv, fetchurl}:
+
+stdenv.mkDerivation rec {
+  version = "3.99-u4-b5";
+  pname = "monkeys-audio";
+
+  patches = [ ./buildfix.diff ];
+
+  src = fetchurl {
+    url = "https://deb-multimedia.org/pool/main/m/${pname}/${pname}_${version}.orig.tar.gz";
+    sha256 = "0kjfwzfxfx7f958b2b1kf8yj655lp0ppmn0sh57gbkjvj8lml7nz";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Lossless audio codec";
+    platforms = platforms.linux;
+    license = licenses.lgpl2;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/default.nix b/nixpkgs/pkgs/applications/audio/mopidy/default.nix
new file mode 100644
index 000000000000..6c2a7d9fe334
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/default.nix
@@ -0,0 +1,45 @@
+{ newScope, python }:
+
+# Create a custom scope so we are consistent in which python version is used
+
+let
+  callPackage = newScope self;
+
+  self = {
+
+    inherit python;
+    pythonPackages = python.pkgs;
+
+    mopidy = callPackage ./mopidy.nix { };
+
+    mopidy-gmusic = callPackage ./gmusic.nix { };
+
+    mopidy-local-images = callPackage ./local-images.nix { };
+
+    mopidy-local-sqlite = callPackage ./local-sqlite.nix { };
+
+    mopidy-spotify = callPackage ./spotify.nix { };
+
+    mopidy-moped = callPackage ./moped.nix { };
+
+    mopidy-mopify = callPackage ./mopify.nix { };
+
+    mopidy-mpd = callPackage ./mpd.nix { };
+
+    mopidy-mpris = callPackage ./mpris.nix { };
+
+    mopidy-somafm = callPackage ./somafm.nix { };
+
+    mopidy-spotify-tunigo = callPackage ./spotify-tunigo.nix { };
+
+    mopidy-youtube = callPackage ./youtube.nix { };
+
+    mopidy-soundcloud = callPackage ./soundcloud.nix { };
+
+    mopidy-musicbox-webclient = callPackage ./musicbox-webclient.nix { };
+
+    mopidy-iris = callPackage ./iris.nix { };
+
+  };
+
+in self
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/gmusic.nix b/nixpkgs/pkgs/applications/audio/mopidy/gmusic.nix
new file mode 100644
index 000000000000..1e5e42ac2f34
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/gmusic.nix
@@ -0,0 +1,29 @@
+{ stdenv, python3Packages, mopidy }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "mopidy-gmusic";
+  version = "4.0.0";
+
+  src = python3Packages.fetchPypi {
+    inherit version;
+    pname = "Mopidy-GMusic";
+    sha256 = "14yswmlfs659rs3k595606m77lw9c6pjykb5pikqw21sb97haxl3";
+  };
+
+  propagatedBuildInputs = [
+    mopidy
+    python3Packages.requests
+    python3Packages.gmusicapi
+    python3Packages.cachetools
+  ];
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.mopidy.com/";
+    description = "Mopidy extension for playing music from Google Play Music";
+    license = licenses.asl20;
+    maintainers = [ maintainers.jgillich ];
+    hydraPlatforms = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/iris.nix b/nixpkgs/pkgs/applications/audio/mopidy/iris.nix
new file mode 100644
index 000000000000..5cc3a957d260
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/iris.nix
@@ -0,0 +1,29 @@
+{ stdenv, python3Packages, mopidy, mopidy-local-images }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "Mopidy-Iris";
+  version = "3.49.0";
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "0zddm7286iwx437gjz47m4g28s8gdcxnm2hmly9w1dzi08aa4fas";
+  };
+
+  propagatedBuildInputs = [
+    mopidy
+  ] ++ (with python3Packages; [
+    configobj
+    requests
+    tornado_4
+  ]);
+
+  # no tests implemented
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/jaedb/Iris";
+    description = "A fully-functional Mopidy web client encompassing Spotify and many other backends";
+    license = licenses.asl20;
+    maintainers = [ maintainers.rvolosatovs ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/local-images.nix b/nixpkgs/pkgs/applications/audio/mopidy/local-images.nix
new file mode 100644
index 000000000000..085fe855e8a8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/local-images.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, pythonPackages, mopidy, gobject-introspection }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "mopidy-local-images";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "mopidy";
+    repo = "mopidy-local-images";
+    rev = "v${version}";
+    sha256 = "0gdqxws0jish50mmi57mlqcs659wrllzv00czl18niz94vzvyc0d";
+  };
+
+  buildInputs = [ gobject-introspection ];
+
+  checkInputs = [
+    pythonPackages.mock
+  ];
+
+  propagatedBuildInputs = [
+    mopidy
+    pythonPackages.pykka
+    pythonPackages.uritools
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/mopidy/mopidy-local-images";
+    description = "Mopidy local library proxy extension for handling embedded album art";
+    license = licenses.asl20;
+    maintainers = [ maintainers.rvolosatovs ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/local-sqlite.nix b/nixpkgs/pkgs/applications/audio/mopidy/local-sqlite.nix
new file mode 100644
index 000000000000..23e01c02a0f5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/local-sqlite.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, pythonPackages, mopidy }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "mopidy-local-sqlite";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "mopidy";
+    repo = "mopidy-local-sqlite";
+    rev = "v${version}";
+    sha256 = "1fjd9ydbfwd1n9b9zw8zjn4l7c5hpam2n0xs51pjkjn82m3zq9zv";
+  };
+
+  propagatedBuildInputs = [
+    mopidy
+    pythonPackages.uritools
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/mopidy/mopidy-local-sqlite";
+    description = "Mopidy SQLite local library extension";
+    license = licenses.asl20;
+    maintainers = [ maintainers.rvolosatovs ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/moped.nix b/nixpkgs/pkgs/applications/audio/mopidy/moped.nix
new file mode 100644
index 000000000000..ffd9af76d173
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/moped.nix
@@ -0,0 +1,26 @@
+{ stdenv, pythonPackages, mopidy, glibcLocales }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "Mopidy-Moped";
+  version = "0.7.1";
+
+  src = pythonPackages.fetchPypi {
+    inherit pname version;
+    sha256 = "15461174037d87af93dd59a236d4275c5abf71cea0670ffff24a7d0399a8a2e4";
+  };
+
+  LC_ALL = "en_US.UTF-8";
+  buildInputs = [ glibcLocales ];
+  propagatedBuildInputs = [ mopidy ];
+
+  # no tests implemented
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/martijnboland/moped";
+    description = "A web client for Mopidy";
+    license = licenses.mit;
+    maintainers = [];
+    hydraPlatforms = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/mopidy.nix b/nixpkgs/pkgs/applications/audio/mopidy/mopidy.nix
new file mode 100644
index 000000000000..ae65d9b2f6ed
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/mopidy.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitHub, pythonPackages, wrapGAppsHook
+, gst_all_1, glib-networking, gobject-introspection
+}:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "mopidy";
+  version = "3.0.2";
+
+  src = fetchFromGitHub {
+    owner = "mopidy";
+    repo = "mopidy";
+    rev = "v${version}";
+    sha256 = "1n9lpgq0p112cjgsrc1cd6mnffk56y36g2c5skk9cqzw27qrkd15";
+  };
+
+  nativeBuildInputs = [ wrapGAppsHook ];
+
+  buildInputs = with gst_all_1; [
+    gst-plugins-base gst-plugins-good gst-plugins-ugly gst-plugins-bad
+    glib-networking gobject-introspection
+  ];
+
+  propagatedBuildInputs = with pythonPackages; [
+    gst-python pygobject3 pykka tornado_4 requests setuptools
+  ] ++ stdenv.lib.optional (!stdenv.isDarwin) dbus-python;
+
+  # There are no tests
+  doCheck = false;
+
+  preFixup = ''
+    gappsWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH")
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.mopidy.com/";
+    description = ''
+      An extensible music server that plays music from local disk, Spotify,
+      SoundCloud, Google Play Music, and more
+    '';
+    license = licenses.asl20;
+    maintainers = [ maintainers.fpletz ];
+    hydraPlatforms = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/mopify.nix b/nixpkgs/pkgs/applications/audio/mopidy/mopify.nix
new file mode 100644
index 000000000000..a9902ca41721
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/mopify.nix
@@ -0,0 +1,23 @@
+{ stdenv, pythonPackages, mopidy }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "Mopidy-Mopify";
+  version = "1.6.1";
+
+  src = pythonPackages.fetchPypi {
+    inherit pname version;
+    sha256 = "93ad2b3d38b1450c8f2698bb908b0b077a96b3f64cdd6486519e518132e23a5c";
+  };
+
+  propagatedBuildInputs = with pythonPackages; [ mopidy configobj ];
+
+  # no tests implemented
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/dirkgroenen/mopidy-mopify";
+    description = "A mopidy webclient based on the Spotify webbased interface";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.Gonzih ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/mpd.nix b/nixpkgs/pkgs/applications/audio/mopidy/mpd.nix
new file mode 100644
index 000000000000..4dd32ea3aa35
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/mpd.nix
@@ -0,0 +1,24 @@
+{ stdenv, python3Packages, mopidy }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "Mopidy-MPD";
+  version = "3.0.0";
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "0prjli4352521igcsfcgmk97jmzgbfy4ik8hnli37wgvv252wiac";
+  };
+
+  propagatedBuildInputs = [mopidy];
+
+  # no tests implemented
+  doCheck = false;
+  pythonImportsCheck = [ "mopidy_mpd" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/mopidy/mopidy-mpd";
+    description = "Mopidy extension for controlling playback from MPD clients";
+    license = licenses.asl20;
+    maintainers = [ maintainers.tomahna ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/mpris.nix b/nixpkgs/pkgs/applications/audio/mopidy/mpris.nix
new file mode 100644
index 000000000000..16fbfab380ba
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/mpris.nix
@@ -0,0 +1,27 @@
+{ stdenv, python3Packages, mopidy }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "mopidy-mpris";
+  version = "3.0.1";
+
+  src = python3Packages.fetchPypi {
+    inherit version;
+    pname = "Mopidy-MPRIS";
+    sha256 = "0qk46aq5r92qgkldzl41x09naww1gv92l4c4hknyl7yymyvm9lr2";
+  };
+
+  propagatedBuildInputs = [
+    mopidy
+    python3Packages.pydbus
+  ];
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://www.mopidy.com/;
+    description = "Mopidy extension for controlling Mopidy through D-Bus using the MPRIS specification";
+    license = licenses.asl20;
+    maintainers = [ maintainers.nickhu ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/musicbox-webclient.nix b/nixpkgs/pkgs/applications/audio/mopidy/musicbox-webclient.nix
new file mode 100644
index 000000000000..b0abefd7a1fd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/musicbox-webclient.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, pythonPackages, mopidy }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "mopidy-musicbox-webclient";
+  version = "2.3.0";
+
+  src = fetchFromGitHub {
+    owner = "pimusicbox";
+    repo = "mopidy-musicbox-webclient";
+    rev = "v${version}";
+    sha256 = "1jcfrwsi7axiph3jplqzmcqia9pc46xb2yf13d8h6lnh3h49rwvz";
+  };
+
+  propagatedBuildInputs = [ mopidy ];
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Mopidy extension for playing music from SoundCloud";
+    license = licenses.mit;
+    maintainers = [ maintainers.spwhitt ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/somafm.nix b/nixpkgs/pkgs/applications/audio/mopidy/somafm.nix
new file mode 100644
index 000000000000..2e3380fa20f8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/somafm.nix
@@ -0,0 +1,26 @@
+{ stdenv, python3Packages, mopidy }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "mopidy-somafm";
+  version = "2.0.0";
+
+  src = python3Packages.fetchPypi {
+    inherit version;
+    pname = "Mopidy-SomaFM";
+    sha256 = "1j88rrliys8hqvnb35k1xqw88bvrllcb4rb53lgh82byhscsxlf3";
+  };
+
+  propagatedBuildInputs = [
+    mopidy
+  ];
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://www.mopidy.com/;
+    description = "Mopidy extension for playing music from SomaFM";
+    license = licenses.mit;
+    maintainers = [ maintainers.nickhu ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/soundcloud.nix b/nixpkgs/pkgs/applications/audio/mopidy/soundcloud.nix
new file mode 100644
index 000000000000..8002feb0f901
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/soundcloud.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, pythonPackages, mopidy }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "mopidy-soundcloud";
+  version = "2.1.0";
+
+  src = fetchFromGitHub {
+    owner = "mopidy";
+    repo = "mopidy-soundcloud";
+    rev = "v${version}";
+    sha256 = "131qdm9i0j3ayff0js11qcmbjv50ws5s6iiqr6x5b66ymjl4scfv";
+  };
+
+  propagatedBuildInputs = [ mopidy ];
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Mopidy extension for playing music from SoundCloud";
+    license = licenses.mit;
+    maintainers = [ maintainers.spwhitt ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/spotify-tunigo.nix b/nixpkgs/pkgs/applications/audio/mopidy/spotify-tunigo.nix
new file mode 100644
index 000000000000..4b75af5ed579
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/spotify-tunigo.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, pythonPackages, mopidy, mopidy-spotify }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "mopidy-spotify-tunigo";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "trygveaa";
+    repo = "mopidy-spotify-tunigo";
+    rev = "v${version}";
+    sha256 = "1jwk0b2iz4z09qynnhcr07w15lx6i1ra09s9lp48vslqcf2fp36x";
+  };
+
+  propagatedBuildInputs = [ mopidy mopidy-spotify pythonPackages.tunigo ];
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Mopidy extension for providing the browse feature of Spotify";
+    license = licenses.asl20;
+    maintainers = [ maintainers.spwhitt ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/spotify.nix b/nixpkgs/pkgs/applications/audio/mopidy/spotify.nix
new file mode 100644
index 000000000000..32019c74f86d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/spotify.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, pythonPackages, mopidy }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "mopidy-spotify";
+  version = "4.0.1";
+
+  src = fetchurl {
+    url = "https://github.com/mopidy/mopidy-spotify/archive/v${version}.tar.gz";
+    sha256 = "1ac8r8050i5r3ag1hlblbcyskqjqz7wgamndbzsmw52qi6hxk44f";
+  };
+
+  propagatedBuildInputs = [ mopidy pythonPackages.pyspotify ];
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.mopidy.com/";
+    description = "Mopidy extension for playing music from Spotify";
+    license = licenses.asl20;
+    maintainers = [];
+    hydraPlatforms = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/youtube.nix b/nixpkgs/pkgs/applications/audio/mopidy/youtube.nix
new file mode 100644
index 000000000000..ac16c182a50e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/youtube.nix
@@ -0,0 +1,29 @@
+{ stdenv, python3Packages, mopidy }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "mopidy-youtube";
+  version = "3.0";
+
+  src = python3Packages.fetchPypi {
+    inherit version;
+    pname = "Mopidy-YouTube";
+    sha256 = "0x1q9rfnjx65n6hi8s5rw5ff4xv55h63zy52fwm8aksdnzppr7gd";
+  };
+
+  patchPhase = "sed s/bs4/beautifulsoup4/ -i setup.cfg";
+
+  propagatedBuildInputs = [
+    mopidy
+    python3Packages.beautifulsoup4
+    python3Packages.cachetools
+    python3Packages.youtube-dl
+  ];
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Mopidy extension for playing music from YouTube";
+    license = licenses.asl20;
+    maintainers = [ maintainers.spwhitt ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mp3blaster/default.nix b/nixpkgs/pkgs/applications/audio/mp3blaster/default.nix
new file mode 100644
index 000000000000..74814a1b7ceb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mp3blaster/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, ncurses, libvorbis, SDL }:
+
+stdenv.mkDerivation rec {
+  pname = "mp3blaster";
+  version = "3.2.6";
+
+  src = fetchFromGitHub {
+    owner = "stragulus";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0pzwml3yhysn8vyffw9q9p9rs8gixqkmg4n715vm23ib6wxbliqs";
+  };
+
+  buildInputs = [
+    ncurses
+    libvorbis
+  ] ++ stdenv.lib.optional stdenv.isDarwin SDL;
+
+  NIX_CFLAGS_COMPILE = toString ([
+    "-Wno-narrowing"
+  ] ++ stdenv.lib.optionals stdenv.cc.isClang [
+    "-Wno-reserved-user-defined-literal"
+  ]);
+
+  meta = with stdenv.lib; {
+    description = "An audio player for the text console";
+    homepage = "http://www.mp3blaster.org/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ earldouglas ];
+    platforms = with platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mp3gain/default.nix b/nixpkgs/pkgs/applications/audio/mp3gain/default.nix
new file mode 100644
index 000000000000..f2b4564c7ccf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mp3gain/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, unzip, mpg123 }:
+
+stdenv.mkDerivation {
+  name = "mp3gain-1.6.2";
+  src = fetchurl {
+    url = "mirror://sourceforge/mp3gain/mp3gain-1_6_2-src.zip";
+    sha256 = "0varr6y7k8zarr56b42r0ad9g3brhn5vv3xjg1c0v19jxwr4gh2w";
+  };
+
+  buildInputs = [ unzip mpg123 ];
+
+  sourceRoot = ".";
+
+  buildFlags = [ "OSTYPE=linux" ];
+
+  installPhase = ''
+    install -vD mp3gain "$out/bin/mp3gain"
+  '';
+
+  meta = {
+    description = "Lossless mp3 normalizer with statistical analysis";
+    homepage = "http://mp3gain.sourceforge.net/";
+    license = stdenv.lib.licenses.lgpl21;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.devhell ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mp3info/default.nix b/nixpkgs/pkgs/applications/audio/mp3info/default.nix
new file mode 100644
index 000000000000..69ca271d27dd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mp3info/default.nix
@@ -0,0 +1,45 @@
+{ fetchurl, stdenv, ncurses, pkgconfig, gtk2 }:
+
+stdenv.mkDerivation rec {
+  name = "mp3info-0.8.5a";
+
+  src = fetchurl {
+    url = "ftp://ftp.ibiblio.org/pub/linux/apps/sound/mp3-utils/mp3info/${name}.tgz";
+    sha256 = "042f1czcs9n2sbqvg4rsvfwlqib2gk976mfa2kxlfjghx5laqf04";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ ncurses gtk2 ];
+
+  hardeningDisable = [ "format" ];
+
+  configurePhase =
+    '' sed -i Makefile \
+           -e "s|^prefix=.*$|prefix=$out|g ;
+               s|/bin/rm|rm|g ;
+               s|/usr/bin/install|install|g"
+    '';
+
+  preInstall =
+    '' mkdir -p "$out/bin"
+       mkdir -p "$out/man/man1"
+    '';
+
+  meta = {
+    description = "MP3 technical info viewer and ID3 1.x tag editor";
+
+    longDescription =
+      '' MP3Info is a little utility used to read and modify the ID3 tags of
+         MP3 files.  MP3Info can also display various techincal aspects of an
+         MP3 file including playing time, bit-rate, sampling frequency and
+         other attributes in a pre-defined or user-specifiable output format.
+      '';
+
+    homepage = "http://www.ibiblio.org/mp3info/";
+
+    license = stdenv.lib.licenses.gpl2Plus;
+
+    maintainers = [ ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mp3splt/default.nix b/nixpkgs/pkgs/applications/audio/mp3splt/default.nix
new file mode 100644
index 000000000000..323854575ea7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mp3splt/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, pkgconfig, libmp3splt }:
+
+stdenv.mkDerivation rec {
+  pname = "mp3splt";
+  version = "2.6.2";
+
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
+    sha256 = "1aiv20gypb6r84qabz8gblk8vi42cg3x333vk2pi3fyqvl82phry";
+  };
+
+  configureFlags = [ "--enable-oggsplt-symlink" "--enable-flacsplt-symlink" ];
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libmp3splt ];
+
+  outputs = [ "out" "man" ];
+
+  meta = with stdenv.lib; {
+    description = "Utility to split mp3, ogg vorbis and FLAC files without decoding";
+    homepage = "https://sourceforge.net/projects/mp3splt/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.bosu ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mp3val/default.nix b/nixpkgs/pkgs/applications/audio/mp3val/default.nix
new file mode 100644
index 000000000000..636fb7d9b9a1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mp3val/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "mp3val";
+  version = "0.1.8";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/mp3val/${pname}-${version}-src.tar.gz";
+    sha256 = "17y3646ghr38r620vkrxin3dksxqig5yb3nn4cfv6arm7kz6x8cm";
+  };
+
+  makefile = "Makefile.linux";
+
+  installPhase = ''
+    install -Dv mp3val "$out/bin/mp3val"
+  '';
+
+  hardeningDisable = [ "fortify" ];
+
+  meta = {
+    description = "A tool for validating and repairing MPEG audio streams";
+    longDescription = ''
+      MP3val is a small, high-speed, free software tool for checking MPEG audio
+      files' integrity. It can be useful for finding corrupted files (e.g.
+      incompletely downloaded, truncated, containing garbage). MP3val is
+      also able to fix most of the problems. Being a multiplatform application,
+      MP3val can be runned both under Windows and under Linux (or BSD). The most
+      common MPEG audio file type is MPEG 1 Layer III (mp3), but MP3val supports
+      also other MPEG versions and layers. The tool is also aware of the most
+      common types of tags (ID3v1, ID3v2, APEv2).
+    '';
+    homepage = "http://mp3val.sourceforge.net/index.shtml";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.devhell ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mpc/default.nix b/nixpkgs/pkgs/applications/audio/mpc/default.nix
new file mode 100644
index 000000000000..a226b720df9b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mpc/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, mpd_clientlib, sphinx, libiconv }:
+
+stdenv.mkDerivation rec {
+  pname = "mpc";
+  version = "0.33";
+
+  src = fetchFromGitHub {
+    owner  = "MusicPlayerDaemon";
+    repo   = "mpc";
+    rev    = "v${version}";
+    sha256 = "1qbi0i9cq54rj8z2kapk8x8g1jkw2jz781niwb9i7kw4xfhvy5zx";
+  };
+
+  buildInputs = [ mpd_clientlib ] ++ stdenv.lib.optionals stdenv.isDarwin [ libiconv ];
+
+  nativeBuildInputs = [ meson ninja pkgconfig sphinx ];
+
+  meta = with stdenv.lib; {
+    description = "A minimalist command line interface to MPD";
+    homepage = "https://www.musicpd.org/clients/mpc/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ algorith ];
+    platforms = with platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mpc123/default.nix b/nixpkgs/pkgs/applications/audio/mpc123/default.nix
new file mode 100644
index 000000000000..ef5cb169a2cf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mpc123/default.nix
@@ -0,0 +1,33 @@
+{ fetchurl, stdenv, gettext, libmpcdec, libao }:
+
+let version = "0.2.4"; in
+stdenv.mkDerivation rec {
+  pname = "mpc123";
+  inherit version;
+
+  src = fetchurl {
+    url = "mirror://sourceforge/mpc123/version%20${version}/${pname}-${version}.tar.gz";
+    sha256 = "0sf4pns0245009z6mbxpx7kqy4kwl69bc95wz9v23wgappsvxgy1";
+  };
+
+  patches = [ ./use-gcc.patch ];
+
+  buildInputs = [ gettext libmpcdec libao ];
+
+  installPhase =
+    # XXX: Should install locales too (though there's only 1 available).
+    '' mkdir -p "$out/bin"
+       cp -v mpc123 "$out/bin"
+    '';
+
+  meta = {
+    homepage = "http://mpc123.sourceforge.net/";
+
+    description = "A Musepack (.mpc) audio player";
+
+    license = stdenv.lib.licenses.gpl2Plus;
+
+    maintainers = [ ];
+    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux; # arbitrary choice
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mpc123/use-gcc.patch b/nixpkgs/pkgs/applications/audio/mpc123/use-gcc.patch
new file mode 100644
index 000000000000..ca4cf84591ce
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mpc123/use-gcc.patch
@@ -0,0 +1,13 @@
+Don't worry, just use GCC and everything's gonna be alright.
+
+--- mpc123-0.2.4/Makefile	2008-03-21 22:14:38.000000000 +0100
++++ mpc123-0.2.4/Makefile	2010-01-28 23:26:49.000000000 +0100
+@@ -17,7 +17,7 @@
+ # along with this program; if not, write to the Free Software Foundation,
+ # Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ 
+-CC := $(shell which colorgcc || which cc)
++CC := gcc
+ 
+ TAGSPRG := ctags
+ 
diff --git a/nixpkgs/pkgs/applications/audio/mpg123/default.nix b/nixpkgs/pkgs/applications/audio/mpg123/default.nix
new file mode 100644
index 000000000000..53e66e580da8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mpg123/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, fetchurl, alsaLib
+}:
+
+stdenv.mkDerivation rec {
+  name = "mpg123-1.25.13";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/mpg123/${name}.tar.bz2";
+    sha256 = "02l915jq0ymndb082g6w89bpf66z04ifa1lr7ga3yycw6m46hc4h";
+  };
+
+  buildInputs = stdenv.lib.optional (!stdenv.isDarwin) alsaLib;
+
+  configureFlags = stdenv.lib.optional
+    (stdenv.hostPlatform ? mpg123)
+    "--with-cpu=${stdenv.hostPlatform.mpg123.cpu}";
+
+  meta = {
+    description = "Fast console MPEG Audio Player and decoder library";
+    homepage = "http://mpg123.org";
+    license = stdenv.lib.licenses.lgpl21;
+    maintainers = [ stdenv.lib.maintainers.ftrvxmtrx ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mpg321/default.nix b/nixpkgs/pkgs/applications/audio/mpg321/default.nix
new file mode 100644
index 000000000000..63b8e2d867a7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mpg321/default.nix
@@ -0,0 +1,43 @@
+{stdenv, fetchurl, fetchpatch, libao, libmad, libid3tag, zlib, alsaLib
+# Specify default libao output plugin to use (e.g. "alsa", "pulse" …).
+# If null, it will use the libao system default.
+, defaultAudio ? null
+}:
+
+stdenv.mkDerivation rec {
+  pname = "mpg321";
+  version = "0.3.2";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/mpg321/${version}/mpg321_${version}.orig.tar.gz";
+    sha256 = "0ki8mh76bbmdh77qsiw682dvi8y468yhbdabqwg05igmwc1wqvq5";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "CVE-2018-7263.patch";
+      url = "https://sources.debian.org/data/main/m/mpg321/0.3.2-3/debian/patches/handle_illegal_bitrate_value.patch";
+      sha256 = "15simp5fjvm9b024ryfh441rkh2d5bcrizqkzlrh07n9sm7fkw6x";
+    })
+  ];
+
+  hardeningDisable = [ "format" ];
+
+  configureFlags =
+    [ ("--enable-alsa=" + (if stdenv.isLinux then "yes" else "no")) ]
+    ++ (stdenv.lib.optional (defaultAudio != null)
+         "--with-default-audio=${defaultAudio}");
+
+  buildInputs = [libao libid3tag libmad zlib]
+    ++ stdenv.lib.optional stdenv.isLinux alsaLib;
+
+  installTargets = [ "install" "install-man" ];
+
+  meta = with stdenv.lib; {
+    description = "Command-line MP3 player";
+    homepage = "http://mpg321.sourceforge.net/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.rycee ];
+    platforms = platforms.gnu ++ platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/munt/default.nix b/nixpkgs/pkgs/applications/audio/munt/default.nix
new file mode 100644
index 000000000000..bf9710fb17ee
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/munt/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, mkDerivation, fetchFromGitHub, cmake, qtbase, alsaLib, makeDesktopItem }:
+
+let
+  desktopItem = makeDesktopItem rec {
+    name = "Munt";
+    exec = "mt32emu-qt";
+    desktopName = name;
+    genericName = "Munt synthesiser";
+    categories = "Audio;AudioVideo;";
+  };
+in mkDerivation rec {
+  version = "2.4.0";
+  pname = "munt";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = with stdenv.lib.versions; "libmt32emu_${major version}_${minor version}_${patch version}";
+    sha256 = "0521i7js5imlsxj6n7181w5szfjikam0k4vq1d2ilkqgcwrkg6ln";
+  };
+
+  postInstall = ''
+    ln -s ${desktopItem}/share/applications $out/share
+  '';
+
+  dontFixCmake = true;
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ qtbase alsaLib ];
+
+  meta = with stdenv.lib; {
+    description = "Multi-platform software synthesiser emulating Roland MT-32, CM-32L, CM-64 and LAPC-I devices";
+    homepage = "http://munt.sourceforge.net/";
+    license = with licenses; [ lgpl21 gpl3 ];
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ gnidorah ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mup/default.nix b/nixpkgs/pkgs/applications/audio/mup/default.nix
new file mode 100644
index 000000000000..0227255d38dc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mup/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, autoreconfHook, bison, flex, ghostscript, groff, netpbm
+, fltk, libXinerama, libXpm, libjpeg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "mup";
+  version = "6.8";
+
+  src = fetchurl {
+    url = "http://www.arkkra.com/ftp/pub/unix/mup${builtins.replaceStrings ["."] [""] version}src.tar.gz";
+    sha256 = "06bv5nyl8rcibyb83zzrfdq6x6f93g3rgnv47i5gsjcaw5w6l31y";
+  };
+
+  nativeBuildInputs = [ autoreconfHook bison flex ghostscript groff netpbm ];
+
+  buildInputs = [ fltk libXinerama libXpm libjpeg ];
+
+  patches = [ ./ghostscript-permit-file-write.patch ];
+
+  postPatch = ''
+    for f in Makefile.am doc/Makefile.am doc/htmldocs/Makefile.am src/mupmate/Preferences.C; do
+      substituteInPlace $f --replace doc/packages doc
+    done
+    substituteInPlace src/mupprnt/mupprnt --replace 'mup ' $out/bin/mup' '
+    substituteInPlace src/mupdisp/genfile.c --replace '"mup"' '"'$out/bin/mup'"'
+    substituteInPlace src/mupmate/Preferences.C \
+      --replace '"mup"' '"'$out/bin/mup'"' \
+      --replace '"gv"' '"xdg-open"' \
+      --replace /usr/share/doc $out/share/doc
+  '';
+
+  enableParallelBuilding = false; # Undeclared dependencies + https://stackoverflow.com/a/19822767/1687334 for prolog.ps.
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.arkkra.com/";
+    description = "Music typesetting program (ASCII to PostScript and MIDI)";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mup/ghostscript-permit-file-write.patch b/nixpkgs/pkgs/applications/audio/mup/ghostscript-permit-file-write.patch
new file mode 100644
index 000000000000..5059e71001f0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mup/ghostscript-permit-file-write.patch
@@ -0,0 +1,5 @@
+--- a/src/mup/Makefile.am
++++ b/src/mup/Makefile.am
+@@ -39 +39 @@ fontdata.c:	prolog.ps ../../tools/mup/getfontinfo.ps ../../LICENSE
+-	$(GS) -sDEVICE=nullpage -sOutputFile=/dev/null -dQUIET - < ../../tools/mup/getfontinfo.ps | $(SED) -e "/Warning:/d" >> fontdata.c
++	$(GS) -sDEVICE=nullpage -sOutputFile=/dev/null -dQUIET --permit-file-write=charnames:fontinit - < ../../tools/mup/getfontinfo.ps | $(SED) -e "/Warning:/d" >> fontdata.c
diff --git a/nixpkgs/pkgs/applications/audio/muse/default.nix b/nixpkgs/pkgs/applications/audio/muse/default.nix
new file mode 100644
index 000000000000..87f86306b482
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/muse/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, qttools, wrapQtAppsHook
+, alsaLib, dssi, fluidsynth, ladspaH, lash, libinstpatch, libjack2, liblo
+, libsamplerate, libsndfile, lilv, lrdf, lv2, qtsvg, rtaudio, rubberband, sord
+}:
+
+stdenv.mkDerivation rec {
+  pname = "muse-sequencer";
+  version = "3.1.0";
+
+  src = fetchFromGitHub {
+    owner = "muse-sequencer";
+    repo = "muse";
+    rev = "muse_${builtins.replaceStrings ["."] ["_"] version}";
+    sha256 = "08k25652w88xf2i79lw305x1phpk7idrww9jkqwcs8q6wzgmz8aq";
+  };
+
+  sourceRoot = "source/muse3";
+
+  prePatch = ''
+    chmod u+w $NIX_BUILD_TOP
+  '';
+
+  patches = [ ./fix-parallel-building.patch ];
+
+  nativeBuildInputs = [ cmake pkgconfig qttools wrapQtAppsHook ];
+
+  buildInputs = [
+    alsaLib dssi fluidsynth ladspaH lash libinstpatch libjack2 liblo
+    libsamplerate libsndfile lilv lrdf lv2 qtsvg rtaudio rubberband sord
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.muse-sequencer.org/";
+    description = "MIDI/Audio sequencer with recording and editing capabilities";
+    longDescription = ''
+      MusE is a MIDI/Audio sequencer with recording and editing capabilities
+      written originally by Werner Schweer now developed and maintained
+      by the MusE development team.
+
+      MusE aims to be a complete multitrack virtual studio for Linux,
+      it is published under the GNU General Public License.
+    '';
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ orivej ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/muse/fix-parallel-building.patch b/nixpkgs/pkgs/applications/audio/muse/fix-parallel-building.patch
new file mode 100644
index 000000000000..a11970b7111a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/muse/fix-parallel-building.patch
@@ -0,0 +1,93 @@
+To confirm these dependencies, run in a fresh build tree:
+
+
+ninja muse/components/CMakeFiles/components.dir/confmport.o
+
+In file included from ../muse/components/confmport.cpp:48:
+../muse/mplugins/midifilterimpl.h:28:10: fatal error:
+ui_midifilter.h: No such file or directory
+
+
+ninja muse/waveedit/CMakeFiles/waveedit.dir/wavecanvas.o
+
+In file included from ../muse/waveedit/wavecanvas.cpp:72:
+../muse/components/copy_on_write.h:26:10: fatal error:
+ui_copy_on_write_base.h: No such file or directory
+
+
+ninja muse/instruments/CMakeFiles/instruments.dir/editinstrument.o
+
+In file included from ../muse/instruments/editinstrument.cpp:58:
+../muse/components/editevent.h:26:10: fatal error:
+ui_editnotedialogbase.h: No such file or directory
+
+
+ninja muse/liste/CMakeFiles/liste.dir/listedit.o
+
+In file included from ../muse/liste/listedit.cpp:37:
+../muse/components/editevent.h:26:10: fatal error:
+ui_editnotedialogbase.h: No such file or directory
+
+
+ninja muse/mixer/CMakeFiles/mixer.dir/rack.o
+
+In file included from ../muse/mixer/rack.cpp:49:
+../muse/components/plugindialog.h:4:10: fatal error:
+ui_plugindialogbase.h: No such file or directory
+
+
+ninja muse/midiedit/CMakeFiles/midiedit.dir/drumedit.o
+
+In file included from /build/source/muse3/muse/midiedit/drumedit.cpp:64:
+/build/source/muse3/muse/components/filedialog.h:29:10: fatal error:
+ui_fdialogbuttons.h: No such file or directory
+
+
+--- a/muse/components/CMakeLists.txt
++++ b/muse/components/CMakeLists.txt
+@@ -343,4 +343,5 @@ set_target_properties( components
+ target_link_libraries ( components
+       ${QT_LIBRARIES}
++      mplugins
+       widgets
+       xml_module
+--- a/muse/waveedit/CMakeLists.txt
++++ b/muse/waveedit/CMakeLists.txt
+@@ -79,4 +79,5 @@ set_target_properties( waveedit
+ target_link_libraries( waveedit
+       ${QT_LIBRARIES}
++      components
+       widgets
+       )
+--- a/muse/instruments/CMakeLists.txt
++++ b/muse/instruments/CMakeLists.txt
+@@ -78,4 +78,5 @@ set_target_properties( instruments
+ target_link_libraries ( instruments
+       ${QT_LIBRARIES}
++      components
+       icons
+       widgets
+--- a/muse/liste/CMakeLists.txt
++++ b/muse/liste/CMakeLists.txt
+@@ -65,4 +65,5 @@ set_target_properties( liste
+ target_link_libraries ( liste
+       ${QT_LIBRARIES}
++      components
+       awl
+       widgets
+--- a/muse/mixer/CMakeLists.txt
++++ b/muse/mixer/CMakeLists.txt
+@@ -87,4 +87,5 @@ set_target_properties ( mixer
+ target_link_libraries ( mixer
+       ${QT_LIBRARIES}
++      components
+       widgets
+       )
+--- a/muse/midiedit/CMakeLists.txt
++++ b/muse/midiedit/CMakeLists.txt
+@@ -93,4 +93,5 @@ set_target_properties( midiedit
+ target_link_libraries ( midiedit
+       ${QT_LIBRARIES}
++      components
+       al
+       ctrl
diff --git a/nixpkgs/pkgs/applications/audio/musescore/darwin.nix b/nixpkgs/pkgs/applications/audio/musescore/darwin.nix
new file mode 100644
index 000000000000..8870a144c9f5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/musescore/darwin.nix
@@ -0,0 +1,34 @@
+{ stdenv, lib, fetchurl, undmg }:
+
+let
+  versionComponents = [ "2" "1" ];
+  appName = "MuseScore ${builtins.head versionComponents}";
+in
+
+with lib;
+
+stdenv.mkDerivation rec {
+  pname = "musescore-darwin";
+  version = concatStringsSep "." versionComponents;
+
+  src = fetchurl {
+    url =  "ftp://ftp.osuosl.org/pub/musescore/releases/MuseScore-${concatStringsSep "." (take 3 versionComponents)}/MuseScore-${version}.dmg";
+    sha256 = "19xkaxlkbrhvfip6n3iw6q7463ngr6y5gfisrpjqg2xl2igyl795";
+  };
+
+  buildInputs = [ undmg ];
+  installPhase = ''
+    mkdir -p "$out/Applications/${appName}.app"
+    cp -R . "$out/Applications/${appName}.app"
+    chmod a+x "$out/Applications/${appName}.app/Contents/MacOS/mscore"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Music notation and composition software";
+    homepage = "https://musescore.org/";
+    license = licenses.gpl2;
+    platforms = platforms.darwin;
+    maintainers = with maintainers; [ yurrriq ];
+    repositories.git = "https://github.com/musescore/MuseScore";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/musescore/default.nix b/nixpkgs/pkgs/applications/audio/musescore/default.nix
new file mode 100644
index 000000000000..063a05a72f3a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/musescore/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, mkDerivation, lib, fetchzip, cmake, pkgconfig
+, alsaLib, freetype, libjack2, lame, libogg, libpulseaudio, libsndfile, libvorbis
+, portaudio, portmidi, qtbase, qtdeclarative, qtscript, qtsvg, qttools
+, qtwebengine, qtxmlpatterns
+}:
+
+mkDerivation rec {
+  pname = "musescore";
+  version = "3.4.2";
+
+  src = fetchzip {
+    url = "https://github.com/musescore/MuseScore/releases/download/v${version}/MuseScore-${version}.zip";
+    sha256 = "1laskvp40dncs12brkgvk7wl0qrvzy52rn7nf3b67ps1vmd130gp";
+    stripRoot = false;
+  };
+
+  patches = [
+    ./remove_qtwebengine_install_hack.patch
+  ];
+
+  cmakeFlags = [
+  ] ++ lib.optional (lib.versionAtLeast freetype.version "2.5.2") "-DUSE_SYSTEM_FREETYPE=ON";
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [
+    alsaLib libjack2 freetype lame libogg libpulseaudio libsndfile libvorbis
+    portaudio portmidi # tesseract
+    qtbase qtdeclarative qtscript qtsvg qttools qtwebengine qtxmlpatterns
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Music notation and composition software";
+    homepage = "https://musescore.org/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ vandenoever turion ];
+    platforms = platforms.linux;
+    repositories.git = "https://github.com/musescore/MuseScore";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/musescore/remove_qtwebengine_install_hack.patch b/nixpkgs/pkgs/applications/audio/musescore/remove_qtwebengine_install_hack.patch
new file mode 100644
index 000000000000..57a6092d5852
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/musescore/remove_qtwebengine_install_hack.patch
@@ -0,0 +1,19 @@
+--- a/main/CMakeLists.txt
++++ b/main/CMakeLists.txt
+@@ -220,16 +219,0 @@ else (MINGW)
+-      ## install qwebengine core
+-      if (NOT APPLE AND USE_WEBENGINE)
+-         install(PROGRAMS
+-            ${QT_INSTALL_LIBEXECS}/QtWebEngineProcess
+-            DESTINATION bin
+-            )
+-         install(DIRECTORY
+-            ${QT_INSTALL_DATA}/resources
+-            DESTINATION lib/qt5
+-            )
+-         install(DIRECTORY
+-            ${QT_INSTALL_TRANSLATIONS}/qtwebengine_locales
+-            DESTINATION lib/qt5/translations
+-            )
+-      endif(NOT APPLE AND USE_WEBENGINE)
+-
diff --git a/nixpkgs/pkgs/applications/audio/musikcube/default.nix b/nixpkgs/pkgs/applications/audio/musikcube/default.nix
new file mode 100644
index 000000000000..0c4e2c71dd95
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/musikcube/default.nix
@@ -0,0 +1,57 @@
+{ cmake
+, pkg-config
+, alsaLib
+, boost
+, curl
+, fetchFromGitHub
+, ffmpeg_3
+, lame
+, libev
+, libmicrohttpd
+, ncurses
+, pulseaudio
+, stdenv
+, taglib
+, systemdSupport ? stdenv.isLinux, systemd
+}:
+
+stdenv.mkDerivation rec {
+  pname = "musikcube";
+  version = "0.92.1";
+
+  src = fetchFromGitHub {
+    owner = "clangen";
+    repo = pname;
+    rev = version;
+    sha256 = "0l4ncxqxvp5m014j7vlglhzxhhrxl0c2m71xn0i0a27hn4nc72mr";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+  ];
+  buildInputs = [
+    alsaLib
+    boost
+    curl
+    ffmpeg_3
+    lame
+    libev
+    libmicrohttpd
+    ncurses
+    pulseaudio
+    taglib
+  ] ++ stdenv.lib.optional systemdSupport systemd;
+
+  cmakeFlags = [
+    "-DDISABLE_STRIP=true"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A fully functional terminal-based music player, library, and streaming audio server";
+    homepage = "https://musikcube.com/";
+    maintainers = [ maintainers.aanderse ];
+    license = licenses.bsd3;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/musly/default.nix b/nixpkgs/pkgs/applications/audio/musly/default.nix
new file mode 100644
index 000000000000..b1e8822cdcf8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/musly/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, cmake, eigen, libav_all }:
+stdenv.mkDerivation {
+  pname = "musly";
+  version = "unstable-2017-04-26";
+  src = fetchFromGitHub {
+    owner = "dominikschnitzer";
+    repo = "musly";
+    rev = "f911eacbbe0b39ebe87cb37d0caef09632fa40d6";
+    sha256 = "1q42wvdwy2pac7bhfraqqj2czw7w2m33ms3ifjl8phm7d87i8825";
+  };
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ eigen (libav_all.override { vaapiSupport = stdenv.isLinux; }).libav_11 ];
+  fixupPhase = if stdenv.isDarwin then ''
+    install_name_tool -change libmusly.dylib $out/lib/libmusly.dylib $out/bin/musly
+    install_name_tool -change libmusly_resample.dylib $out/lib/libmusly_resample.dylib $out/bin/musly
+    install_name_tool -change libmusly_resample.dylib $out/lib/libmusly_resample.dylib $out/lib/libmusly.dylib
+  '' else "";
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.musly.org";
+    description = "A fast and high-quality audio music similarity library written in C/C++";
+    longDescription = ''
+      Musly analyzes the the audio signal of music pieces to estimate their similarity.
+      No meta-data about the music piece is included in the similarity estimation.
+      To use Musly in your application, have a look at the library documentation
+      or try the command line application included in the package and start generating
+      some automatic music playlists right away.
+    '';
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ ggpeti ];
+    platforms = with platforms; darwin ++ linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ncmpc/default.nix b/nixpkgs/pkgs/applications/audio/ncmpc/default.nix
new file mode 100644
index 000000000000..aea50d71d75d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ncmpc/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, glib, ncurses
+, mpd_clientlib, gettext, boost
+, pcreSupport ? false
+, pcre ? null
+}:
+
+with stdenv.lib;
+
+assert pcreSupport -> pcre != null;
+
+stdenv.mkDerivation rec {
+  pname = "ncmpc";
+  version = "0.38";
+
+  src = fetchFromGitHub {
+    owner  = "MusicPlayerDaemon";
+    repo   = "ncmpc";
+    rev    = "v${version}";
+    sha256 = "1kidpd1xrfax3v31q93r9g9b7jd841476q47wgd94h1a86b70gs9";
+  };
+
+  buildInputs = [ glib ncurses mpd_clientlib boost ]
+    ++ optional pcreSupport pcre;
+  nativeBuildInputs = [ meson ninja pkgconfig gettext ];
+
+  mesonFlags = [
+    "-Dlirc=disabled"
+    "-Ddocumentation=disabled"
+  ] ++ optional (!pcreSupport) "-Dregex=disabled";
+
+  meta = with stdenv.lib; {
+    description = "Curses-based interface for MPD (music player daemon)";
+    homepage    = "https://www.musicpd.org/clients/ncmpc/";
+    license     = licenses.gpl2Plus;
+    platforms   = platforms.all;
+    maintainers = with maintainers; [ fpletz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ncmpcpp/default.nix b/nixpkgs/pkgs/applications/audio/ncmpcpp/default.nix
new file mode 100644
index 000000000000..f8adc522fcb5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ncmpcpp/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, boost, mpd_clientlib, ncurses, pkgconfig, readline
+, libiconv, icu, curl
+, outputsSupport ? true # outputs screen
+, visualizerSupport ? false, fftw ? null # visualizer screen
+, clockSupport ? true # clock screen
+, taglibSupport ? true, taglib ? null # tag editor
+}:
+
+assert visualizerSupport -> (fftw != null);
+assert taglibSupport -> (taglib != null);
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  pname = "ncmpcpp";
+  version = "0.8.2";
+
+  src = fetchurl {
+    url = "https://ncmpcpp.rybczak.net/stable/${pname}-${version}.tar.bz2";
+    sha256 = "0m0mjb049sl62vx13h9waavysa30mk0rphacksnvf94n13la62v5";
+  };
+
+  configureFlags = [ "BOOST_LIB_SUFFIX=" ]
+    ++ optional outputsSupport "--enable-outputs"
+    ++ optional visualizerSupport "--enable-visualizer --with-fftw"
+    ++ optional clockSupport "--enable-clock"
+    ++ optional taglibSupport "--with-taglib";
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ boost mpd_clientlib ncurses readline libiconv icu curl ]
+    ++ optional visualizerSupport fftw
+    ++ optional taglibSupport taglib;
+
+  meta = {
+    description = "A featureful ncurses based MPD client inspired by ncmpc";
+    homepage    = "https://ncmpcpp.rybczak.net/";
+    license     = licenses.gpl2Plus;
+    maintainers = with maintainers; [ jfrankenau koral lovek323 ];
+    platforms   = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ncpamixer/default.nix b/nixpkgs/pkgs/applications/audio/ncpamixer/default.nix
new file mode 100644
index 000000000000..32d8df2f0487
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ncpamixer/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, cmake, ncurses, libpulseaudio, pkgconfig }:
+
+stdenv.mkDerivation rec {
+
+  pname = "ncpamixer";
+  version = "1.3.3";
+
+  src = fetchFromGitHub {
+    owner = "fulhax";
+    repo = "ncpamixer";
+    rev = version;
+    sha256 = "19pxfvfhhrbfk1wz5awx60y51jccrgrcvlq7lb622sw2z0wzw4ac";
+  };
+
+  buildInputs = [ ncurses libpulseaudio ];
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  configurePhase = ''
+    make PREFIX=$out build/Makefile
+  '';
+
+  buildPhase = ''
+    make build
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An ncurses mixer for PulseAudio inspired by pavucontrol";
+    homepage = "https://github.com/fulhax/ncpamixer";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ StijnDW ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ncspot/default.nix b/nixpkgs/pkgs/applications/audio/ncspot/default.nix
new file mode 100644
index 000000000000..bee1065328a7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ncspot/default.nix
@@ -0,0 +1,46 @@
+{ lib, fetchFromGitHub, rustPlatform, pkg-config, ncurses, openssl
+, withALSA ? true, alsaLib ? null
+, withPulseAudio ? false, libpulseaudio ? null
+, withPortAudio ? false, portaudio ? null
+, withMPRIS ? false, dbus ? null
+}:
+
+let
+  features = [ "cursive/pancurses-backend" ]
+    ++ lib.optional withALSA "alsa_backend"
+    ++ lib.optional withPulseAudio "pulseaudio_backend"
+    ++ lib.optional withPortAudio "portaudio_backend"
+    ++ lib.optional withMPRIS "mpris";
+in
+rustPlatform.buildRustPackage rec {
+  pname = "ncspot";
+  version = "0.1.3";
+
+  src = fetchFromGitHub {
+    owner = "hrkfdn";
+    repo = "ncspot";
+    rev = "v${version}";
+    sha256 = "144a7wn5l64fhvj8vgwl7z4bp8lbq0pb0dl38x9y4wkqmdh6wrli";
+  };
+
+  cargoSha256 = "19gn0v7j1ly3ywgflfj27pnrwjiiy17m3g1z0kzagxpjy2xi2qxy";
+
+  cargoBuildFlags = [ "--no-default-features" "--features" "${lib.concatStringsSep "," features}" ];
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ ncurses openssl ]
+    ++ lib.optional withALSA alsaLib
+    ++ lib.optional withPulseAudio libpulseaudio
+    ++ lib.optional withPortAudio portaudio
+    ++ lib.optional withMPRIS dbus;
+
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Cross-platform ncurses Spotify client written in Rust, inspired by ncmpc and the likes";
+    homepage = "https://github.com/hrkfdn/ncspot";
+    license = licenses.bsd2;
+    maintainers = [ maintainers.marsam ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/netease-cloud-music/default.nix b/nixpkgs/pkgs/applications/audio/netease-cloud-music/default.nix
new file mode 100644
index 000000000000..c4cc291d026c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/netease-cloud-music/default.nix
@@ -0,0 +1,81 @@
+{ stdenv, lib, fontconfig, zlib, libGL, glib, pango
+, gdk-pixbuf, freetype, atk, cairo, libsForQt5, xorg
+, sqlite, taglib, nss, nspr, cups, dbus, alsaLib
+, libpulseaudio, deepin, qt5, harfbuzz, p11-kit
+, libgpgerror, libudev0-shim, makeWrapper, dpkg, fetchurl }:
+let
+  rpath = lib.makeLibraryPath [
+    fontconfig.lib
+    zlib
+    stdenv.cc.cc.lib
+    libGL
+    glib
+    pango
+    gdk-pixbuf
+    freetype
+    atk
+    cairo
+    libsForQt5.vlc
+    sqlite
+    taglib
+    nss
+    nspr
+    cups.lib
+    dbus.lib
+    alsaLib
+    libpulseaudio
+    xorg.libX11
+    xorg.libXext
+    xorg.libXtst
+    xorg.libXdamage
+    xorg.libXScrnSaver
+    xorg.libxcb
+    xorg.libXi
+    deepin.qcef
+    qt5.qtwebchannel
+    qt5.qtbase
+    qt5.qtx11extras
+    qt5.qtdeclarative
+    harfbuzz
+    p11-kit
+    libgpgerror
+  ];   
+
+  runtimeLibs = lib.makeLibraryPath [ libudev0-shim ];
+
+in stdenv.mkDerivation rec {
+  pname = "netease-cloud-music";
+  version = "1.2.0";
+  src = fetchurl {
+    url    = "http://d1.music.126.net/dmusic/netease-cloud-music_1.2.0_amd64_deepin_stable_20190424.deb";
+    sha256 = "0hg8jqim77vd0fmk8gfbz2fmlj99byxcm9jn70xf7vk1sy7wp6h1";
+    curlOpts = "-A 'Mozilla/5.0'";
+  };
+  unpackCmd = "${dpkg}/bin/dpkg -x $src .";
+  sourceRoot = ".";
+
+  nativeBuildInputs = [ qt5.wrapQtAppsHook makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out
+    cp -r usr/* $out
+  '';
+
+  preFixup = ''
+    local exefile="$out/bin/netease-cloud-music"
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$exefile"
+    patchelf --set-rpath "$out/libs:$(patchelf --print-rpath "$exefile"):${rpath}" "$exefile"
+
+    wrapProgram $out/bin/netease-cloud-music \
+      --prefix LD_LIBRARY_PATH : "${runtimeLibs}" \
+      --set QCEF_INSTALL_PATH "${deepin.qcef}/lib/qcef"
+  '';
+
+  meta = {
+    description = "Client for Netease Cloud Music service";
+    homepage = "https://music.163.com";
+    platforms = [ "i686-linux" "x86_64-linux" ];
+    maintainers = [ stdenv.lib.maintainers.mlatus ];
+    license = stdenv.lib.licenses.unfreeRedistributable;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ninjas2/default.nix b/nixpkgs/pkgs/applications/audio/ninjas2/default.nix
new file mode 100644
index 000000000000..3a23347c1e76
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ninjas2/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, libjack2, libGL, pkgconfig, xorg, mesa, libsndfile, libsamplerate }:
+
+stdenv.mkDerivation rec {
+  pname = "ninjas2";
+  version = "0.2.0";
+
+  src = fetchFromGitHub {
+    owner = "clearly-broken-software";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1kwp6pmnfar2ip9693gprfbcfscklgri1k1ycimxzlqr61nkd2k9";
+    fetchSubmodules = true;
+  };
+
+  patchPhase = ''
+    patchShebangs dpf/utils/generate-ttl.sh
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    libjack2 xorg.libX11 libGL mesa libsndfile libsamplerate
+  ];
+
+  installPhase = ''
+    install -dD bin/ninjas2.lv2 $out/lib/lv2/ninjas2.lv2
+    install -D bin/ninjas2-vst.so  $out/lib/vst/ninjas2-vst.so
+    install -D bin/ninjas2 $out/bin/ninjas2
+  '';
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/clearly-broken-software/ninjas2";
+    description = "sample slicer plugin for LV2, VST, and jack standalone";
+    license = with licenses; [ gpl3 ];
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/noise-repellent/default.nix b/nixpkgs/pkgs/applications/audio/noise-repellent/default.nix
new file mode 100644
index 000000000000..3b2f233c6afe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/noise-repellent/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, fftwFloat, lv2 }:
+
+stdenv.mkDerivation rec {
+  pname = "noise-repellent";
+  version = "0.1.5";
+
+  src = fetchFromGitHub {
+    owner = "lucianodato";
+    repo = pname;
+    rev = version;
+    sha256 = "0hb89x9i2knzan46q4nwscf5zmnb2nwf4w13xl2c0y1mx1ls1mwl";
+    fetchSubmodules = true;
+  };
+
+  mesonFlags = ("--prefix=${placeholder "out"}/lib/lv2");
+
+  nativeBuildInputs = [ meson ninja pkgconfig ];
+  buildInputs = [
+    fftwFloat lv2
+  ];
+
+  meta = with stdenv.lib; {
+    description = "An lv2 plugin for broadband noise reduction";
+    homepage    = "https://github.com/lucianodato/noise-repellent";
+    license     = licenses.gpl3;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" "i686-darwin"  ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/non/default.nix b/nixpkgs/pkgs/applications/audio/non/default.nix
new file mode 100644
index 000000000000..9b4b147c2304
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/non/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, pkgconfig, python2, cairo, libjpeg, ntk, libjack2
+, libsndfile, ladspaH, liblo, libsigcxx, lrdf, wafHook
+}:
+
+stdenv.mkDerivation {
+  pname = "non";
+  version = "2018-02-15";
+  src = fetchFromGitHub {
+    owner = "original-male";
+    repo = "non";
+    rev = "5ae43bb27c42387052a73e5ffc5d33efb9d946a9";
+    sha256 = "1cljkkyi9dxqpqhx8y6l2ja4zjmlya26m26kqxml8gx08vyvddhx";
+  };
+
+  nativeBuildInputs = [ pkgconfig wafHook ];
+  buildInputs = [ python2 cairo libjpeg ntk libjack2 libsndfile
+    ladspaH liblo libsigcxx lrdf
+  ];
+
+  meta = {
+    description = "Lightweight and lightning fast modular Digital Audio Workstation";
+    homepage = "http://non.tuxfamily.org";
+    license = stdenv.lib.licenses.lgpl21;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.nico202 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/nootka/default.nix b/nixpkgs/pkgs/applications/audio/nootka/default.nix
new file mode 100644
index 000000000000..b0d4843aecd5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/nootka/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, cmake
+, alsaLib, fftwSinglePrec, libjack2, libpulseaudio, libvorbis, soundtouch, qtbase
+}:
+
+stdenv.mkDerivation rec {
+  name = "nootka-1.4.7";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/nootka/${name}-source.tar.bz2";
+    sha256 = "1y9wlwri74v2z9dwbcfjs7xri54yra24vpwq19xi2lfv1nbs518x";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [
+    alsaLib fftwSinglePrec libjack2 libpulseaudio libvorbis soundtouch qtbase
+  ];
+
+  cmakeFlags = [
+    "-DCMAKE_INCLUDE_PATH=${libjack2}/include/jack;${libpulseaudio.dev}/include/pulse"
+    "-DENABLE_JACK=ON"
+    "-DENABLE_PULSEAUDIO=ON"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Application for practicing playing musical scores and ear training";
+    homepage = "https://nootka.sourceforge.io/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/nootka/unstable.nix b/nixpkgs/pkgs/applications/audio/nootka/unstable.nix
new file mode 100644
index 000000000000..16df55c1dfba
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/nootka/unstable.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, cmake
+, alsaLib, fftwSinglePrec, libjack2, libpulseaudio, libvorbis, soundtouch
+, qtbase, qtdeclarative, qtquickcontrols2
+}:
+
+stdenv.mkDerivation rec {
+  name = "nootka-1.7.0-beta1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/nootka/${name}-source.tar.bz2";
+    sha256 = "13b50vnpr1zx2mrgkc8fmhsyfa19rqq1rksvn31145dy6fk1f3gc";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [
+    alsaLib fftwSinglePrec libjack2 libpulseaudio libvorbis soundtouch
+    qtbase qtdeclarative qtquickcontrols2
+  ];
+
+  cmakeFlags = [
+    "-DCMAKE_INCLUDE_PATH=${libjack2}/include/jack;${libpulseaudio.dev}/include/pulse"
+    "-DENABLE_JACK=ON"
+    "-DENABLE_PULSEAUDIO=ON"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Application for practicing playing musical scores and ear training";
+    homepage = "https://nootka.sourceforge.io/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/normalize/default.nix b/nixpkgs/pkgs/applications/audio/normalize/default.nix
new file mode 100644
index 000000000000..0aa264116932
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/normalize/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, libmad }:
+
+stdenv.mkDerivation rec {
+  pname = "normalize";
+  version = "0.7.7";
+
+  src = fetchurl {
+    url = "mirror://savannah/normalize/${pname}-${version}.tar.gz";
+    sha256 = "1n5khss10vjjp6w69q9qcl4kqfkd0pr555lgqghrchn6rjms4mb0";
+  };
+
+  buildInputs = [ libmad ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.nongnu.org/normalize/";
+    description = "Audio file normalizer";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/nova-filters/default.nix b/nixpkgs/pkgs/applications/audio/nova-filters/default.nix
new file mode 100644
index 000000000000..bc5a3efc59a3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/nova-filters/default.nix
@@ -0,0 +1,31 @@
+{stdenv, fetchurl, sconsPackages, boost, ladspaH, pkgconfig }:
+
+stdenv.mkDerivation {
+  version = "0.2-2";
+  pname = "nova-filters";
+
+  src = fetchurl {
+    url = "https://klingt.org/~tim/nova-filters/nova-filters_0.2-2.tar.gz";
+    sha256 = "16064vvl2w5lz4xi3lyjk4xx7fphwsxc14ajykvndiz170q32s6i";
+  };
+
+  nativeBuildInputs = [ pkgconfig sconsPackages.scons_3_0_1 ];
+  buildInputs = [ boost ladspaH ];
+
+  patchPhase = ''
+    # remove TERM:
+    sed -i -e '4d' SConstruct
+    sed -i "s@mfpmath=sse@mfpmath=sse -I ${boost.dev}/include@g" SConstruct
+    sed -i "s@ladspa.h@${ladspaH}/include/ladspa.h@g" filters.cpp
+    sed -i "s@LADSPA_HINT_SAMPLE_RATE, 0, 0.5@LADSPA_HINT_SAMPLE_RATE, 0.0001, 0.5@g" filters.cpp
+    sed -i "s/= check/= detail::filter_base<internal_type, checked>::check/" nova/source/dsp/filter.hpp
+  '';
+
+  meta = with stdenv.lib; {
+    description = "LADSPA plugins based on filters of nova";
+    homepage = "http://klingt.org/~tim/nova-filters/";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/openmpt123/default.nix b/nixpkgs/pkgs/applications/audio/openmpt123/default.nix
new file mode 100644
index 000000000000..6fec4df060d9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/openmpt123/default.nix
@@ -0,0 +1,31 @@
+{ config, stdenv, fetchurl, zlib, pkgconfig, mpg123, libogg, libvorbis, portaudio, libsndfile, flac
+, usePulseAudio ? config.pulseaudio or false, libpulseaudio }:
+
+let
+  version = "0.5.0";
+in stdenv.mkDerivation {
+  pname = "openmpt123";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-${version}+release.autotools.tar.gz";
+    sha256 = "0zl3djy9z7cpqk8g8pxrzmmikxsskb0y5qdabg6c683j7x5abjs3";
+  };
+
+  enableParallelBuilding = true;
+  doCheck = true;
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ zlib mpg123 libogg libvorbis portaudio libsndfile flac ]
+  ++ stdenv.lib.optional usePulseAudio libpulseaudio;
+
+  configureFlags = stdenv.lib.optional (!usePulseAudio) "--without-pulseaudio";
+
+  meta = with stdenv.lib; {
+    description = "A cross-platform command-line based module file player";
+    homepage = "https://lib.openmpt.org/libopenmpt/";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ gnidorah ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/opus-tools/default.nix b/nixpkgs/pkgs/applications/audio/opus-tools/default.nix
new file mode 100644
index 000000000000..9d95c362d928
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/opus-tools/default.nix
@@ -0,0 +1,20 @@
+{stdenv, fetchurl, libogg, libao, pkgconfig, flac, opusfile, libopusenc}:
+
+stdenv.mkDerivation rec {
+  name = "opus-tools-0.2";
+  src = fetchurl {
+    url = "http://downloads.xiph.org/releases/opus/${name}.tar.gz";
+    sha256 = "11pzl27s4vcz4m18ch72nivbhww2zmzn56wspb7rll1y1nq6rrdl";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libogg libao flac opusfile libopusenc ];
+
+  meta = {
+    description = "Tools to work with opus encoded audio streams";
+    homepage = "http://www.opus-codec.org/";
+    license = stdenv.lib.licenses.bsd2;
+    maintainers = with stdenv.lib.maintainers; [ ];
+    platforms = with stdenv.lib.platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/opusfile/default.nix b/nixpkgs/pkgs/applications/audio/opusfile/default.nix
new file mode 100644
index 000000000000..c09b3f415d86
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/opusfile/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, pkgconfig, openssl, libogg, libopus }:
+
+stdenv.mkDerivation rec {
+  name = "opusfile-0.11";
+  src = fetchurl {
+    url = "http://downloads.xiph.org/releases/opus/${name}.tar.gz";
+    sha256 = "1gq3aszzl5glgbajw5p1f5a1kdyf23w5vjdmwwrk246syin9pkkl";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ openssl libogg ];
+  propagatedBuildInputs = [ libopus ];
+  patches = [ ./include-multistream.patch ];
+  configureFlags = [ "--disable-examples" ];
+
+  meta = with stdenv.lib; {
+    description = "High-level API for decoding and seeking in .opus files";
+    homepage = "http://www.opus-codec.org/";
+    license = licenses.bsd3;
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/opusfile/include-multistream.patch b/nixpkgs/pkgs/applications/audio/opusfile/include-multistream.patch
new file mode 100644
index 000000000000..7c6dd8475963
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/opusfile/include-multistream.patch
@@ -0,0 +1,12 @@
+diff -Naur a/include/opusfile.h b/include/opusfile.h
+--- a/include/opusfile.h	2014-04-29 19:07:09.000000000 +0200
++++ b/include/opusfile.h	2016-09-05 17:50:15.147553798 +0200
+@@ -107,7 +107,7 @@
+ # include <stdarg.h>
+ # include <stdio.h>
+ # include <ogg/ogg.h>
+-# include <opus_multistream.h>
++# include <opus/opus_multistream.h>
+ 
+ /**@cond PRIVATE*/
+ 
diff --git a/nixpkgs/pkgs/applications/audio/orca-c/default.nix b/nixpkgs/pkgs/applications/audio/orca-c/default.nix
new file mode 100644
index 000000000000..3a4f4b2ce2b8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/orca-c/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, ncurses, portmidi }:
+stdenv.mkDerivation {
+  pname = "orca-c";
+
+  version = "git-2020-05-01";
+
+  src = fetchFromGitHub {
+    owner = "hundredrabbits";
+    repo = "Orca-c";
+    rev = "d7a3b169c5ed0b06a9ad0fdb3057704da9a0b6ce";
+    sha256 = "101y617a295hzwr98ykvza1sycxlk29kzxn2ybjwc718r0alkbzz";
+  };
+
+  buildInputs = [ ncurses portmidi ];
+
+  patchPhase = ''
+    patchShebangs tool
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install build/orca $out/bin/orca
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An esoteric programming language designed to quickly create procedural sequencers.";
+    homepage = "https://github.com/hundredrabbits/Orca-c";
+    license = licenses.mit;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/osmid/default.nix b/nixpkgs/pkgs/applications/audio/osmid/default.nix
new file mode 100644
index 000000000000..7e49b872a6a5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/osmid/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, alsaLib
+, libX11
+}:
+
+stdenv.mkDerivation rec {
+  pname = "osmid";
+  version = "0.6.8";
+
+  src = fetchFromGitHub {
+    owner = "llloret";
+    repo = "osmid";
+    rev = "v${version}";
+    sha256 = "1yl25abf343yvd49nfsgxsz7jf956zrsi5n4xyqb5ldlp2hifk15";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ alsaLib libX11 ];
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/bin
+    cp {m2o,o2m} $out/bin/
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/llloret/osmid";
+    description = "A lightweight, portable, easy to use tool to convert MIDI to OSC and OSC to MIDI";
+    license = licenses.mit;
+    maintainers = with maintainers; [ c0deaddict ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/padthv1/default.nix b/nixpkgs/pkgs/applications/audio/padthv1/default.nix
new file mode 100644
index 000000000000..19bd6ecc0c8a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/padthv1/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, pkgconfig, libjack2, alsaLib, libsndfile, liblo, lv2, qt5, fftw, mkDerivation }:
+
+mkDerivation rec {
+  pname = "padthv1";
+  version = "0.9.14";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/padthv1/${pname}-${version}.tar.gz";
+    sha256 = "079iwwlkl1gscyv70v9ambad8shxbs0ixdfp0vsl6dbh87b09qzh";
+  };
+
+  buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools fftw ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = with stdenv.lib; {
+    description = "polyphonic additive synthesizer";
+    homepage = "http://padthv1.sourceforge.net/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.magnetophon ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pamix/default.nix b/nixpkgs/pkgs/applications/audio/pamix/default.nix
new file mode 100644
index 000000000000..cc5d84d9471b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pamix/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub
+, pkgconfig, cmake
+, libpulseaudio, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "pamix";
+  version = "1.6";
+
+  src = fetchFromGitHub {
+    owner  = "patroclos";
+    repo   = "pamix";
+    rev    = version;
+    sha256 = "1d44ggnwkf2gff62959pj45v3a2k091q8v154wc5pmzamam458wp";
+  };
+
+  preConfigure = ''
+    substituteInPlace CMakeLists.txt --replace "/etc" "$out/etc/xdg"
+  '';
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [ libpulseaudio ncurses ];
+
+  meta = with stdenv.lib; {
+    description = "Pulseaudio terminal mixer";
+    homepage    = "https://github.com/patroclos/PAmix";
+    license     = licenses.mit;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ ericsagnes ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pamixer/default.nix b/nixpkgs/pkgs/applications/audio/pamixer/default.nix
new file mode 100644
index 000000000000..71d852485991
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pamixer/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, fetchpatch, boost, libpulseaudio }:
+
+stdenv.mkDerivation rec {
+  pname = "pamixer";
+  version = "1.4";
+
+  src = fetchFromGitHub {
+    owner = "cdemoulins";
+    repo = "pamixer";
+    rev = version;
+    sha256 = "1i14550n8paijwwnhksv5izgfqm3s5q2773bdfp6vyqybkll55f7";
+  };
+
+  buildInputs = [ boost libpulseaudio ];
+
+  installPhase = ''
+    install -Dm755 pamixer -t $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Pulseaudio command line mixer";
+    longDescription = ''
+      Features:
+        - Get the current volume of the default sink, the default source or a selected one by his id
+        - Set the volume for the default sink, the default source or any other device
+        - List the sinks
+        - List the sources
+        - Increase / Decrease the volume for a device
+        - Mute or unmute a device
+    '';
+    homepage = "https://github.com/cdemoulins/pamixer";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/paprefs/default.nix b/nixpkgs/pkgs/applications/audio/paprefs/default.nix
new file mode 100644
index 000000000000..b5ec1206ce3d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/paprefs/default.nix
@@ -0,0 +1,50 @@
+{ fetchurl
+, stdenv
+, meson
+, ninja
+, gettext
+, pkgconfig
+, pulseaudioFull
+, glibmm
+, gtkmm3
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  name = "paprefs-1.1";
+
+  src = fetchurl {
+    url = "https://freedesktop.org/software/pulseaudio/paprefs/${name}.tar.xz";
+    sha256 = "189z5p20hk0xv9vwvym293503j4pwl03xqk9hl7cl6dwgv0l7wkf";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    gettext
+    pkgconfig
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    pulseaudioFull
+    glibmm
+    gtkmm3
+  ];
+
+  meta = with stdenv.lib; {
+    description = "PulseAudio Preferences";
+
+    longDescription = ''
+      PulseAudio Preferences (paprefs) is a simple GTK based configuration
+      dialog for the PulseAudio sound server.
+    '';
+
+    homepage = "http://freedesktop.org/software/pulseaudio/paprefs/";
+
+    license = licenses.gpl2Plus;
+
+    maintainers = [ maintainers.abbradar ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/parlatype/default.nix b/nixpkgs/pkgs/applications/audio/parlatype/default.nix
new file mode 100644
index 000000000000..e4728b9b9c45
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/parlatype/default.nix
@@ -0,0 +1,69 @@
+{ stdenv, fetchFromGitHub, pkgconfig, meson, gtk3, at-spi2-core, dbus, gst_all_1, sphinxbase, pocketsphinx, ninja, gettext, appstream-glib, python3, glib, gobject-introspection, gsettings-desktop-schemas, itstool, wrapGAppsHook, hicolor-icon-theme }:
+
+stdenv.mkDerivation rec {
+  pname = "parlatype";
+  version = "2.0";
+
+  src = fetchFromGitHub {
+    owner  = "gkarsay";
+    repo   = pname;
+    rev    = "v${version}";
+    sha256 = "026i19vkdq35rldbjp1wglamr22a1330iv736mmgbd8fs7vz22nx";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    meson
+    ninja
+    gettext
+    appstream-glib
+    python3
+    gobject-introspection
+    itstool
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    at-spi2-core
+    dbus
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+    gst_all_1.gst-plugins-bad
+    gst_all_1.gst-plugins-ugly
+    gst_all_1.gst-libav
+    sphinxbase
+    pocketsphinx
+    glib
+    gsettings-desktop-schemas
+    hicolor-icon-theme
+  ];
+
+  mesonFlags = [ "-Dlibreoffice=false" ];
+
+  postPatch = ''
+    chmod +x data/meson_post_install.py
+    patchShebangs data/meson_post_install.py
+  '';
+
+  doCheck = false;
+  enableParallelBuilding = true;
+
+  buildPhase = ''
+    export GST_PLUGIN_SYSTEM_PATH_1_0="$out/lib/gstreamer-1.0/:$GST_PLUGIN_SYSTEM_PATH_1_0"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "GNOME audio player for transcription";
+    longDescription = ''
+      Parlatype is a minimal audio player for manual speech transcription, written for the GNOME desktop environment.
+      It plays audio sources to transcribe them in your favourite text application.
+      It’s intended to be useful for journalists, students, scientists and whoever needs to transcribe audio files.
+    '';
+    homepage = "https://gkarsay.github.io/parlatype/";
+    license = licenses.gpl3Plus;
+    maintainers = [ maintainers.melchips ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/patchage/default.nix b/nixpkgs/pkgs/applications/audio/patchage/default.nix
new file mode 100644
index 000000000000..ac679d6dd949
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/patchage/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, alsaLib, boost, dbus-glib, fetchsvn, ganv, glibmm
+, gtkmm2, libjack2, pkgconfig, python2, wafHook
+}:
+
+stdenv.mkDerivation {
+  pname = "patchage";
+  version = "1.0.1";
+  src = fetchsvn {
+    url = "http://svn.drobilla.net/lad/trunk/patchage/";
+    rev = "5821";
+    sha256 = "1ar64l0sg468qzxj7i6ppgfqjpm92awcp5lzskamrf3ln17lrgj7";
+  };
+
+  buildInputs = [
+    alsaLib boost dbus-glib ganv glibmm gtkmm2 libjack2
+    pkgconfig python2 wafHook
+  ];
+
+  meta = {
+    description = "Modular patch bay for Jack and ALSA systems";
+    homepage = "http://non.tuxfamily.org";
+    license = stdenv.lib.licenses.lgpl3;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.nico202 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/paulstretch/default.nix b/nixpkgs/pkgs/applications/audio/paulstretch/default.nix
new file mode 100644
index 000000000000..f6cee7672f7c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/paulstretch/default.nix
@@ -0,0 +1,59 @@
+{ stdenv, fetchFromGitHub, fetchpatch
+, audiofile, libvorbis, fltk, fftw, fftwFloat
+, minixml, pkgconfig, libmad, libjack2, portaudio, libsamplerate
+}:
+
+stdenv.mkDerivation {
+  pname = "paulstretch";
+  version = "2.2-2";
+
+  src = fetchFromGitHub {
+    owner = "paulnasca";
+    repo = "paulstretch_cpp";
+    rev = "7f5c3993abe420661ea0b808304b0e2b4b0048c5";
+    sha256 = "06dy03dbz1yznhsn0xvsnkpc5drzwrgxbxdx0hfpsjn2xcg0jrnc";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [
+    audiofile
+    libvorbis
+    fltk
+    fftw
+    fftwFloat
+    minixml
+    libmad
+    libjack2
+    portaudio
+    libsamplerate
+  ];
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/paulnasca/paulstretch_cpp/pull/12.patch";
+      sha256 = "0lx1rfrs53afkiz1drp456asqgj5yv6hx3lkc01165cv1jsbw6q4";
+    })
+  ];
+
+  buildPhase = ''
+    bash compile_linux_fftw_jack.sh
+  '';
+
+  installPhase = ''
+    install -Dm555 ./paulstretch $out/bin/paulstretch
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Produces high quality extreme sound stretching";
+    longDescription = ''
+      This is a program for stretching the audio. It is suitable only for
+      extreme sound stretching of the audio (like 50x) and for applying
+      special effects by "spectral smoothing" the sounds.
+      It can transform any sound/music to a texture.
+    '';
+    homepage = "http://hypermammut.sourceforge.net/paulstretch/";
+    platforms = platforms.linux;
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pavucontrol/default.nix b/nixpkgs/pkgs/applications/audio/pavucontrol/default.nix
new file mode 100644
index 000000000000..301e44168d39
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pavucontrol/default.nix
@@ -0,0 +1,36 @@
+{ fetchurl, stdenv, pkgconfig, intltool, libpulseaudio, gtkmm3
+, libcanberra-gtk3, gnome3, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "pavucontrol";
+  version = "4.0";
+
+  src = fetchurl {
+    url = "https://freedesktop.org/software/pulseaudio/${pname}/${pname}-${version}.tar.xz";
+    sha256 = "1qhlkl3g8d7h72xjskii3g1l7la2cavwp69909pzmbi2jyn5pi4g";
+  };
+
+  buildInputs = [ libpulseaudio gtkmm3 libcanberra-gtk3
+                  gnome3.adwaita-icon-theme ];
+
+  nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ];
+
+  configureFlags = [ "--disable-lynx" ];
+
+  meta = with stdenv.lib; {
+    description = "PulseAudio Volume Control";
+
+    longDescription = ''
+      PulseAudio Volume Control (pavucontrol) provides a GTK
+      graphical user interface to connect to a PulseAudio server and
+      easily control the volume of all clients, sinks, etc.
+    '';
+
+    homepage = "http://freedesktop.org/software/pulseaudio/pavucontrol/";
+
+    license = stdenv.lib.licenses.gpl2Plus;
+
+    maintainers = with maintainers; [ abbradar globin ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pd-plugins/cyclone/default.nix b/nixpkgs/pkgs/applications/audio/pd-plugins/cyclone/default.nix
new file mode 100644
index 000000000000..56f1ec518de0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pd-plugins/cyclone/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, puredata }:
+
+stdenv.mkDerivation rec {
+  pname = "cyclone";
+  version = "0.3beta-2";
+
+  src = fetchFromGitHub {
+    owner = "porres";
+    repo = "pd-cyclone";
+    rev = "cyclone${version}";
+    sha256 = "192jrq3bdsv626js1ymq10gwp9wwcszjs63ys6ap9ig8xdkbhr3q";
+  };
+
+  buildInputs = [ puredata ];
+
+  makeFlags = [
+    "pdincludepath=${puredata}/include/pd"
+    "prefix=$(out)"
+  ];
+
+  postInstall = ''
+    mv "$out/lib/pd-externals/cyclone" "$out/"
+    rm -rf $out/lib
+  '';
+
+  meta = {
+    description = "A library of PureData classes, bringing some level of compatibility between Max/MSP and Pd environments";
+    homepage = "http://puredata.info/downloads/cyclone";
+    license = stdenv.lib.licenses.tcltk;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pd-plugins/helmholtz/default.nix b/nixpkgs/pkgs/applications/audio/pd-plugins/helmholtz/default.nix
new file mode 100644
index 000000000000..be5a385d3088
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pd-plugins/helmholtz/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, unzip, puredata }:
+
+stdenv.mkDerivation {
+  name = "helmholtz";
+
+  src = fetchurl {
+    url = "https://www.katjaas.nl/helmholtz/helmholtz~.zip";
+    name = "helmholtz.zip";
+    curlOpts = "--user-agent ''";
+    sha256 = "0h1fj7lmvq9j6rmw33rb8k0byxb898bi2xhcwkqalb84avhywgvs";
+  };
+
+  buildInputs = [ unzip puredata ];
+
+  unpackPhase = ''
+    unzip $src
+    mv helmholtz~/src/helmholtz\~.cpp .
+    mv helmholtz~/src/Helmholtz.cpp .
+    mv helmholtz~/src/include/ .
+    mv helmholtz~/src/Makefile .
+    rm -rf helmholtz~/src/
+    rm helmholtz~/helmholtz~.pd_darwin
+    rm helmholtz~/helmholtz~.pd_linux
+    rm helmholtz~/helmholtz~.dll
+    rm -rf __MACOSX
+  '';
+
+  patchPhase = ''
+    mkdir -p $out/helmholtz~
+    sed -i "s@current: pd_darwin@current: pd_linux@g" Makefile
+    sed -i "s@-Wl@@g" Makefile
+    sed -i "s@\$(NAME).pd_linux \.\./\$(NAME).pd_linux@helmholtz~.pd_linux $out/helmholtz~/@g" Makefile
+  '';
+
+  installPhase = ''
+    cp -r helmholtz~/ $out/
+  '';
+
+  meta = {
+    description = "Time domain pitch tracker for Pure Data";
+    homepage = "http://www.katjaas.nl/helmholtz/helmholtz.html";
+    license = stdenv.lib.licenses.bsd3;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pd-plugins/maxlib/default.nix b/nixpkgs/pkgs/applications/audio/pd-plugins/maxlib/default.nix
new file mode 100644
index 000000000000..aec793c4ee8a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pd-plugins/maxlib/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, puredata }:
+
+stdenv.mkDerivation rec {
+  pname = "maxlib";
+  version = "1.5.7";
+
+  src = fetchFromGitHub {
+    owner = "electrickery";
+    repo = "pd-maxlib";
+    rev = "v${version}";
+    sha256 = "10w9qfgn26lj3zqjksf2r1wsjpf5xy4dx22jay9l6idy9q62mxsn";
+  };
+
+  buildInputs = [ puredata ];
+
+  hardeningDisable = [ "format" ];
+
+  makeFlags = [ "prefix=$(out)" ];
+
+  postInstall = ''
+    mv $out/lib/pd-externals/maxlib/ $out
+    rm -rf $out/local/
+    rm -rf $out/lib/
+  '';
+
+  meta = {
+    description = "A library of non-tilde externals for puredata, by Miller Puckette";
+    homepage = "http://puredata.info/downloads/maxlib";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pd-plugins/mrpeach/default.nix b/nixpkgs/pkgs/applications/audio/pd-plugins/mrpeach/default.nix
new file mode 100644
index 000000000000..cefee430ad5f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pd-plugins/mrpeach/default.nix
@@ -0,0 +1,62 @@
+{ stdenv, fetchurl, puredata }:
+
+stdenv.mkDerivation {
+  pname = "mrpeach";
+  version = "1.1";
+
+  # this was to only usable url I could find:
+  # - The main url changes hash: http://pure-data.cvs.sourceforge.net/viewvc/pure-data/externals/mrpeach/?view=tar
+  # - There are lot's of places where this SW is available as part of a big pkg: pd-extended, pd-l2ork
+  # - It's just 211K
+
+  src = fetchurl {
+    url = "http://slackonly.com/pub/korgie/sources/pd_mrpeach-2011.10.21.tar.gz";
+    sha256 = "12jqba3jsdrk20ib9wc2wiivki88ypcd4mkzgsri9siywbbz9w8x";
+  };
+
+  buildInputs = [ puredata ];
+
+  hardeningDisable = [ "format" ];
+
+  patchPhase = ''
+    for D in net osc
+    do
+      sed -i "s@prefix = /usr/local@prefix = $out@g" $D/Makefile
+      for i in ${puredata}/include/pd/*; do
+        ln -s $i $D/
+      done
+    done
+  '';
+
+  buildPhase = ''
+    for D in net osc
+    do
+      cd $D
+      make
+      cd ..
+    done
+  '';
+
+  installPhase = ''
+    for D in net osc
+    do
+      cd $D
+      make install
+      cd ..
+    done
+  '';
+
+  fixupPhase = ''
+    mv $out/lib/pd-externals/net $out
+    mv $out/lib/pd-externals/osc $out
+    rm -rf $out/lib
+  '';
+
+  meta = {
+    description = "A collection of Pd objectclasses for OSC-messages";
+    homepage = "http://puredata.info/downloads/osc";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pd-plugins/puremapping/default.nix b/nixpkgs/pkgs/applications/audio/pd-plugins/puremapping/default.nix
new file mode 100644
index 000000000000..7a5014664d55
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pd-plugins/puremapping/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, unzip, puredata }:
+
+stdenv.mkDerivation rec {
+  pname = "puremapping";
+  version = "20160130";
+
+  src = fetchurl {
+    url = "https://www.chnry.net/data/puremapping-${version}-generic.zip";
+    name = "puremapping";
+    sha256 = "1h7qgqd8srrxw2y1rkdw5js4k6f5vc8x6nlm2mq9mq9vjck7n1j7";
+  };
+
+  buildInputs = [ unzip puredata ];
+
+  unpackPhase = ''
+    unzip $src
+  '';
+
+  installPhase = ''
+    mkdir -p $out/puremapping
+    mv puremapping/ $out
+  '';
+
+  meta = {
+    description = "Set of externals to facilitate the use of sensors within Pure Data and to create complex relations between input and output of a dynamic system";
+    homepage = "http://www.chnry.net/ch/?090-Pure-Mapping&lang=en";
+    license = stdenv.lib.licenses.gpl1;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pd-plugins/timbreid/default.nix b/nixpkgs/pkgs/applications/audio/pd-plugins/timbreid/default.nix
new file mode 100644
index 000000000000..e68610a02269
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pd-plugins/timbreid/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, unzip, puredata, fftw }:
+
+stdenv.mkDerivation rec {
+  version = "0.7.0";
+  pname = "timbreid";
+
+  src = fetchurl {
+    url = "http://williambrent.conflations.com/pd/timbreID-${version}-src.zip";
+    sha256 = "14k2xk5zrzrw1zprdbwx45hrlc7ck8vq4drpd3l455i5r8yk4y6b";
+  };
+
+  buildInputs = [ unzip puredata fftw ];
+
+  unpackPhase = ''
+    mkdir source
+    cd source
+    unzip $src
+  '';
+
+  buildPhase = ''
+    make tIDLib.o all
+ '';
+
+  installPhase = ''
+    mkdir -p $out/
+    cp -r *.pd $out/
+    cp -r *.pd_linux $out/
+    cp -r audio/ $out/
+    cp -r data/ $out/
+    cp -r doc/ $out/
+  '';
+
+  postFixup = ''
+    mv $out/share/doc/ $out/
+    rm -rf $out/share/
+    '';
+
+  meta = {
+    description = "A collection of audio feature analysis externals for puredata";
+    homepage = "http://williambrent.conflations.com/pages/research.html";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pd-plugins/zexy/default.nix b/nixpkgs/pkgs/applications/audio/pd-plugins/zexy/default.nix
new file mode 100644
index 000000000000..4f8269081362
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pd-plugins/zexy/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, autoconf, automake, puredata }:
+
+stdenv.mkDerivation rec {
+  pname = "zexy";
+  version = "2.2.4";
+
+  src = fetchurl {
+    url = "https://puredata.info/downloads/zexy/releases/${version}/${pname}-${version}.tar.gz";
+    sha256 = "1xpgl82c2lc6zfswjsa7z10yhv5jb7a4znzh3nc7ffrzm1z8vylp";
+  };
+
+  buildInputs = [ autoconf automake puredata ];
+
+  preBuild = ''
+    export LD=$CXX
+    cd src/
+    for i in ${puredata}/include/pd/*; do
+      ln -s $i .
+    done
+    ./bootstrap.sh
+    ./configure --enable-lpt=no --prefix=$out
+  '';
+
+  postInstall = ''
+    mv $out/lib/pd/extra/zexy $out
+    rm -rf $out/lib
+  '';
+
+  meta = {
+    description = "The swiss army knife for puredata";
+    homepage = "http://puredata.info/downloads/zexy";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/petrifoo/default.nix b/nixpkgs/pkgs/applications/audio/petrifoo/default.nix
new file mode 100644
index 000000000000..322eba2b9521
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/petrifoo/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, alsaLib, cmake, gtk2, libjack2, libgnomecanvas
+, libpthreadstubs, libsamplerate, libsndfile, libtool, libxml2
+, pkgconfig, openssl }:
+
+stdenv.mkDerivation  rec {
+  pname = "petri-foo";
+  version = "0.1.87";
+
+  src = fetchurl {
+    url =  "mirror://sourceforge/petri-foo/${pname}-${version}.tar.bz2";
+    sha256 = "0b25iicgn8c42487fdw32ycfrll1pm2zjgy5djvgw6mfcaa4gizh";
+  };
+
+  buildInputs =
+   [ alsaLib cmake gtk2 libjack2 libgnomecanvas libpthreadstubs
+     libsamplerate libsndfile libtool libxml2 pkgconfig openssl
+   ];
+
+  meta = with stdenv.lib; {
+    description = "MIDI controllable audio sampler";
+    longDescription = "a fork of Specimen";
+    homepage = "http://petri-foo.sourceforge.net";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.goibhniu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pianobar/default.nix b/nixpkgs/pkgs/applications/audio/pianobar/default.nix
new file mode 100644
index 000000000000..4cdf415d26bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pianobar/default.nix
@@ -0,0 +1,27 @@
+{ fetchurl, stdenv, pkgconfig, libao, json_c, libgcrypt, ffmpeg_3, curl }:
+
+stdenv.mkDerivation rec {
+  name = "pianobar-2020.04.05";
+
+  src = fetchurl {
+    url = "http://6xq.net/projects/pianobar/${name}.tar.bz2";
+    sha256 = "1034f9ilj9xjw12d6n4vadhl5jzrx0jv8gq1w0rg9hfc55mkn5vc";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    libao json_c libgcrypt ffmpeg_3 curl
+  ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  CC = "gcc";
+  CFLAGS = "-std=c99";
+
+  meta = with stdenv.lib; {
+    description = "A console front-end for Pandora.com";
+    homepage = "https://6xq.net/pianobar/";
+    platforms = platforms.unix;
+    license = licenses.mit; # expat version
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pianobooster/default.nix b/nixpkgs/pkgs/applications/audio/pianobooster/default.nix
new file mode 100644
index 000000000000..4832fce1e962
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pianobooster/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, cmake, pkg-config, qttools
+, alsaLib, ftgl, libGLU, libjack2, qtbase, rtmidi
+}:
+
+stdenv.mkDerivation rec {
+  pname = "pianobooster";
+  version = "0.7.2b";
+
+  src = fetchFromGitHub {
+    owner = "captnfab";
+    repo = "PianoBooster";
+    rev = "v${version}";
+    sha256 = "03xcdnlpsij22ca3i6xj19yqzn3q2ch0d32r73v0c96nm04gvhjj";
+  };
+
+  nativeBuildInputs = [ cmake pkg-config qttools ];
+
+  buildInputs = [ alsaLib ftgl libGLU libjack2 qtbase rtmidi ];
+
+  cmakeFlags = [
+    "-DOpenGL_GL_PREFERENCE=GLVND"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A MIDI file player that teaches you how to play the piano";
+    homepage = "https://github.com/captnfab/PianoBooster";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ goibhniu orivej ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/picard/default.nix b/nixpkgs/pkgs/applications/audio/picard/default.nix
new file mode 100644
index 000000000000..c080d0a95f3b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/picard/default.nix
@@ -0,0 +1,63 @@
+{ stdenv, python3Packages, fetchFromGitHub, gettext, chromaprint, qt5
+, enablePlayback ? true
+, gst_all_1
+}:
+
+let
+  pythonPackages = python3Packages;
+  pyqt5 = if enablePlayback then
+    pythonPackages.pyqt5_with_qtmultimedia
+  else
+    pythonPackages.pyqt5
+  ;
+in pythonPackages.buildPythonApplication rec {
+  pname = "picard";
+  version = "2.3.2";
+
+  src = fetchFromGitHub {
+    owner = "metabrainz";
+    repo = pname;
+    rev = "release-${version}";
+    sha256 = "1785wnxhasp4j8w2a8bgbfp3gyhc7zac18r5fqw5qcndz2hfk5mc";
+  };
+
+  nativeBuildInputs = [ gettext qt5.wrapQtAppsHook qt5.qtbase ]
+    ++ stdenv.lib.optionals (pyqt5.multimediaEnabled) [
+      qt5.qtmultimedia.bin
+      gst_all_1.gstreamer
+      gst_all_1.gst-vaapi
+      gst_all_1.gst-libav
+      gst_all_1.gst-plugins-base
+      gst_all_1.gst-plugins-good
+    ]
+  ;
+
+  propagatedBuildInputs = with pythonPackages; [
+    pyqt5
+    mutagen
+    chromaprint
+    discid
+  ];
+
+  prePatch = ''
+    # Pesky unicode punctuation.
+    substituteInPlace setup.cfg --replace "‘" "'"
+  '';
+
+  # In order to spare double wrapping, we use:
+  preFixup = ''
+    makeWrapperArgs+=("''${qtWrapperArgs[@]}")
+  ''
+    + stdenv.lib.optionalString (pyqt5.multimediaEnabled) ''
+      makeWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
+    ''
+  ;
+
+  meta = with stdenv.lib; {
+    homepage = "https://picard.musicbrainz.org/";
+    description = "The official MusicBrainz tagger";
+    maintainers = with maintainers; [ ehmry ];
+    license = licenses.gpl2;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pithos/default.nix b/nixpkgs/pkgs/applications/audio/pithos/default.nix
new file mode 100644
index 000000000000..6c3ffebc8c95
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pithos/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, appstream-glib
+, wrapGAppsHook, pythonPackages, gtk3, gnome3, gobject-introspection
+, libnotify, libsecret, gst_all_1 }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "pithos";
+  version = "1.5.0";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo  = pname;
+    rev = version;
+    sha256 = "10nnm55ql86x1qfmq6dx9a1igf7myjxibmvyhd7fyv06vdhfifgy";
+  };
+
+  format = "other";
+
+  postPatch = ''
+    chmod +x meson_post_install.py
+    patchShebangs meson_post_install.py
+  '';
+
+  nativeBuildInputs = [ meson ninja pkgconfig appstream-glib wrapGAppsHook ];
+
+  propagatedBuildInputs =
+    [ gtk3 gobject-introspection libnotify libsecret gnome3.adwaita-icon-theme ] ++
+    (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-good gst-plugins-ugly gst-plugins-bad ]) ++
+    (with pythonPackages; [ pygobject3 pylast ]);
+
+  meta = with stdenv.lib; {
+    description = "Pandora Internet Radio player for GNOME";
+    homepage = "https://pithos.github.io/";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ obadz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/playbar2/default.nix b/nixpkgs/pkgs/applications/audio/playbar2/default.nix
new file mode 100644
index 000000000000..15385e91927c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/playbar2/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, cmake
+, extra-cmake-modules
+, plasma-framework
+, kwindowsystem
+, fetchFromGitHub
+}:
+
+stdenv.mkDerivation rec {
+  pname = "playbar2";
+  version = "2.5";
+
+  src = fetchFromGitHub {
+    owner = "audoban";
+    repo = "PlayBar2";
+    rev = "v${version}";
+    sha256 = "0iv2m4flgaz2r0k7f6l0ca8p6cw8j8j2gin1gci2pg3l5g5khbch";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    extra-cmake-modules
+  ];
+
+  buildInputs = [
+    plasma-framework
+    kwindowsystem
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Mpris2 Client for Plasma5";
+    homepage = "https://github.com/audoban/PlayBar2";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ pjones ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/plugin-torture/default.nix b/nixpkgs/pkgs/applications/audio/plugin-torture/default.nix
new file mode 100644
index 000000000000..3c852cf450e9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/plugin-torture/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, boost, ladspaH, lilv, lv2, pkgconfig, serd, sord, sratom }:
+
+stdenv.mkDerivation {
+  pname = "plugin-torture";
+  version = "2016-07-25";
+
+  src = fetchFromGitHub {
+    owner = "cth103";
+    repo = "plugin-torture";
+    rev = "8b9c43197dca372da6b9c8212224ec86b5f16b4a";
+    sha256 = "1xyhvhm85d9z0kw716cjllrrzksn4s4bw34layg8hf4m5m31sp2p";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ boost ladspaH lilv lv2 serd sord sratom ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp plugin-torture $out/bin/
+    cp find-safe-plugins $out/bin/
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/cth103/plugin-torture";
+    description = "A tool to test LADSPA and LV2 plugins";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pmidi/default.nix b/nixpkgs/pkgs/applications/audio/pmidi/default.nix
new file mode 100644
index 000000000000..0da86ca9bd1a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pmidi/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, alsaLib
+, version ? "1.7.1"
+, sourceSha256 ? "051mv6f13c8y13c1iv3279k1hhzpz4fm9sfczhgp9sim2bjdj055"
+}:
+stdenv.mkDerivation {
+  pname = "pmidi";
+  inherit version;
+
+  src = fetchurl {
+    url = "mirror://sourceforge/pmidi/${version}/pmidi-${version}.tar.gz";
+    sha256 = sourceSha256;
+  };
+
+  buildInputs = [ alsaLib ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.parabola.me.uk/alsa/pmidi.html";
+    description = "A straightforward command line program to play midi files through the ALSA sequencer";
+    maintainers = with maintainers; [ lheckemann ];
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/polyphone/default.nix b/nixpkgs/pkgs/applications/audio/polyphone/default.nix
new file mode 100644
index 000000000000..270d51840d78
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/polyphone/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, mkDerivation, fetchFromGitHub, qmake, pkgconfig, alsaLib, libjack2, portaudio, libogg, flac, libvorbis, rtmidi, qtsvg }:
+
+mkDerivation rec {
+  version = "2.2.0";
+  pname = "polyphone";
+
+  src = fetchFromGitHub {
+    owner = "davy7125";
+    repo = "polyphone";
+    rev = version;
+    sha256 = "0w5pidzhpwpggjn5la384fvjzkvprvrnidb06068whci11kgpbp7";
+  };
+
+  buildInputs = [
+    alsaLib
+    libjack2
+    portaudio
+    libogg
+    flac
+    libvorbis
+    rtmidi
+    qtsvg
+  ];
+
+  nativeBuildInputs = [ qmake pkgconfig ];
+
+  preConfigure = ''
+    cd ./sources/
+  '';
+
+  installPhase = ''
+    install -d $out/bin
+    install -m755 bin/polyphone $out/bin/
+  '';
+
+  qmakeFlags = [
+    "DEFINES+=USE_LOCAL_STK"
+    "DEFINES+=USE_LOCAL_QCUSTOMPLOT"
+    "INCLUDEPATH+=${libjack2}/include/jack"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A soundfont editor for creating musical instruments";
+    homepage = "https://www.polyphone-soundfonts.com/";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.maxdamantus ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ponymix/default.nix b/nixpkgs/pkgs/applications/audio/ponymix/default.nix
new file mode 100644
index 000000000000..6c289a97384f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ponymix/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, libpulseaudio, libnotify, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "ponymix";
+  version = "5";
+
+  src = fetchFromGitHub {
+    owner  = "falconindy";
+    repo   = "ponymix";
+    rev    = version;
+    sha256 = "08yp7fprmzm6px5yx2rvzri0l60bra5h59l26pn0k071a37ks1rb";
+  };
+
+  buildInputs = [ libpulseaudio libnotify ];
+  nativeBuildInputs = [ pkgconfig ];
+
+  postPatch = ''substituteInPlace Makefile --replace "\$(DESTDIR)/usr" "$out"'';
+
+  meta = with stdenv.lib; {
+    description = "CLI PulseAudio Volume Control";
+    homepage = "https://github.com/falconindy/ponymix";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ericsagnes ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/praat/default.nix b/nixpkgs/pkgs/applications/audio/praat/default.nix
new file mode 100644
index 000000000000..2fb8e30a64d8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/praat/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, alsaLib, gtk2, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "praat";
+  version = "6.0.43";
+
+  src = fetchurl {
+    url = "https://github.com/praat/praat/archive/v${version}.tar.gz";
+    sha256 = "1l13bvnl7sv8v6s5z63201bhzavnj6bnqcj446akippsam13z4sf";
+  };
+
+  configurePhase = ''
+    cp makefiles/makefile.defs.linux.alsa makefile.defs
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp praat $out/bin
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ alsaLib gtk2 ];
+
+  meta = {
+    description = "Doing phonetics by computer";
+    homepage = "http://www.fon.hum.uva.nl/praat/";
+    license = stdenv.lib.licenses.gpl2Plus; # Has some 3rd-party code in it though
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/projectm/default.nix b/nixpkgs/pkgs/applications/audio/projectm/default.nix
new file mode 100644
index 000000000000..57d27ee272c6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/projectm/default.nix
@@ -0,0 +1,63 @@
+{ mkDerivation
+, lib
+, fetchFromGitHub
+, autoreconfHook
+, pkgconfig
+, SDL2
+, qtdeclarative
+, libpulseaudio
+, glm
+, which
+}:
+
+mkDerivation rec {
+  pname = "projectm";
+  version = "3.1.3";
+
+  src = fetchFromGitHub {
+    owner = "projectM-visualizer";
+    repo = "projectM";
+    rev = "v${version}";
+    sha256 = "1mjnahr694phksmvc069y89rv85s4l2z9fixkc3l1f5qj2vgn4sy";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    autoreconfHook
+    which
+  ];
+
+  buildInputs = [
+    SDL2
+    qtdeclarative
+    libpulseaudio
+    glm
+  ];
+
+  configureFlags = [
+    "--enable-qt"
+    "--enable-sdl"
+  ];
+
+  fixupPhase = ''
+    # NOTE: 2019-10-05: Upstream inserts the src path buring build into ELF rpath, so must delete it out
+    # upstream report: https://github.com/projectM-visualizer/projectm/issues/245
+    for entry in $out/bin/* ; do
+      patchelf --set-rpath "$(patchelf --print-rpath $entry | tr ':' '\n' | grep -v 'src/libprojectM' | tr '\n' ':')" "$entry"
+    done
+    wrapQtApp $out/bin/projectM-pulseaudio
+    rm $out/bin/projectM-unittest
+  '';
+
+  meta = {
+    homepage = "https://github.com/projectM-visualizer/projectm";
+    description = "Cross-platform Milkdrop-compatible music visualizer";
+    license = lib.licenses.lgpl21;
+    platforms = lib.platforms.unix;
+    maintainers = with lib.maintainers; [ ajs124 ];
+    longDescription = ''
+      The open-source project that reimplements the esteemed Winamp Milkdrop by Geiss in a more modern, cross-platform reusable library.
+      Read an audio input and produces mesmerizing visuals, detecting tempo, and rendering advanced equations into a limitless array of user-contributed visualizations.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pt2-clone/default.nix b/nixpkgs/pkgs/applications/audio/pt2-clone/default.nix
new file mode 100644
index 000000000000..8121c0caeec8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pt2-clone/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, alsaLib
+, SDL2
+}:
+
+stdenv.mkDerivation rec {
+  pname = "pt2-clone";
+  version = "1.19";
+
+  src = fetchFromGitHub {
+    owner = "8bitbubsy";
+    repo = "pt2-clone";
+    rev = "v${version}";
+    sha256 = "0lr8gq4immc5cx1wr5ng6ccxs9afbd2dk6i0n5np25z14dvbvk3k";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ SDL2 ] ++ stdenv.lib.optional stdenv.isLinux alsaLib;
+
+  meta = with stdenv.lib; {
+    description = "A highly accurate clone of the classic ProTracker 2.3D software for Amiga";
+    homepage = "https://16-bits.org/pt2.php";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fgaz ];
+    platforms = platforms.all;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/audio/puddletag/default.nix b/nixpkgs/pkgs/applications/audio/puddletag/default.nix
new file mode 100644
index 000000000000..a0813fa0c801
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/puddletag/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, python2Packages, chromaprint }:
+
+python2Packages.buildPythonApplication rec {
+  pname = "puddletag";
+  version = "1.2.0";
+
+  src = fetchFromGitHub {
+    owner  = "keithgg";
+    repo   = "puddletag";
+    rev    = "v${version}";
+    sha256 = "1g6wa91awy17z5b704yi9kfynnvfm9lkrvpfvwccscr1h8s3qmiz";
+  };
+
+  setSourceRoot = ''
+    sourceRoot=$(echo */source)
+  '';
+
+  disabled = python2Packages.isPy3k; # work to support python 3 has not begun
+
+  propagatedBuildInputs = [ chromaprint ] ++ (with python2Packages; [
+    configobj
+    mutagen
+    pyparsing
+    pyqt4
+  ]);
+
+  doCheck = false;   # there are no tests
+  dontStrip = true;  # we are not generating any binaries
+
+  meta = with stdenv.lib; {
+    description = "An audio tag editor similar to the Windows program, Mp3tag";
+    homepage    = "https://docs.puddletag.net";
+    license     = licenses.gpl3;
+    maintainers = with maintainers; [ peterhoeg ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pulseaudio-ctl/default.nix b/nixpkgs/pkgs/applications/audio/pulseaudio-ctl/default.nix
new file mode 100644
index 000000000000..125dafc132e0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pulseaudio-ctl/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, makeWrapper
+, bc, dbus, gawk, gnused, libnotify, pulseaudio }:
+
+let
+  path = stdenv.lib.makeBinPath [ bc dbus gawk gnused libnotify pulseaudio ];
+  pname = "pulseaudio-ctl";
+
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  version = "1.67";
+
+  src = fetchFromGitHub {
+    owner = "graysky2";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1mf5r7x6aiqmx9mz7gpckrqvvzxnr5gs2q1k4m42rjk6ldkpdb46";
+  };
+
+  postPatch = ''
+    substituteInPlace Makefile \
+      --replace /usr $out
+
+    substituteInPlace common/${pname}.in \
+      --replace '$0' ${pname}
+  '';
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  postFixup = ''
+    wrapProgram $out/bin/${pname} \
+      --prefix PATH : ${path}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Control pulseaudio volume from the shell or mapped to keyboard shortcuts. No need for alsa-utils.";
+    homepage = "https://bbs.archlinux.org/viewtopic.php?id=124513";
+    license = licenses.mit;
+    maintainers = with maintainers; [ peterhoeg ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pulseaudio-dlna/default.nix b/nixpkgs/pkgs/applications/audio/pulseaudio-dlna/default.nix
new file mode 100644
index 000000000000..75990d593dfe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pulseaudio-dlna/default.nix
@@ -0,0 +1,54 @@
+{ fetchFromGitHub, stdenv, pythonPackages
+, mp3Support ? true, lame ? null
+, opusSupport ? true, opusTools ? null
+, faacSupport ? false, faac ? null
+, flacSupport ? true, flac ? null
+, soxSupport ? true, sox ? null
+, vorbisSupport ? true, vorbisTools ? null
+}:
+
+assert mp3Support -> lame != null;
+assert opusSupport -> opusTools != null;
+assert faacSupport -> faac != null;
+assert flacSupport -> flac != null;
+assert soxSupport -> sox != null;
+assert vorbisSupport -> vorbisTools != null;
+
+let
+  zeroconf = pythonPackages.callPackage ./zeroconf.nix { };
+in
+pythonPackages.buildPythonApplication {
+  pname = "pulseaudio-dlna";
+  version = "unstable-2017-11-01";
+
+  src = fetchFromGitHub {
+    owner = "masmu";
+    repo = "pulseaudio-dlna";
+    rev = "4472928dd23f274193f14289f59daec411023ab0";
+    sha256 = "1dfn7036vrq49kxv4an7rayypnm5dlawsf02pfsldw877hzdamqk";
+  };
+
+  propagatedBuildInputs = with pythonPackages; [
+    dbus-python docopt requests setproctitle protobuf psutil futures
+    chardet notify2 netifaces pyroute2 pygobject2 lxml setuptools ]
+    ++ [ zeroconf ]
+    ++ stdenv.lib.optional mp3Support lame
+    ++ stdenv.lib.optional opusSupport opusTools
+    ++ stdenv.lib.optional faacSupport faac
+    ++ stdenv.lib.optional flacSupport flac
+    ++ stdenv.lib.optional soxSupport sox
+    ++ stdenv.lib.optional vorbisSupport vorbisTools;
+
+  # upstream has no tests
+  checkPhase = ''
+    $out/bin/pulseaudio-dlna --help > /dev/null
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A lightweight streaming server which brings DLNA / UPNP and Chromecast support to PulseAudio and Linux";
+    homepage = "https://github.com/masmu/pulseaudio-dlna";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ mog ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pulseaudio-dlna/zeroconf.nix b/nixpkgs/pkgs/applications/audio/pulseaudio-dlna/zeroconf.nix
new file mode 100644
index 000000000000..efe39aa1600e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pulseaudio-dlna/zeroconf.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, ifaddr
+, typing
+, pythonOlder
+, netifaces
+, six
+, enum-compat
+}:
+
+buildPythonPackage rec {
+  pname = "zeroconf";
+  version = "0.19.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0ykzg730n915qbrq9bn5pn06bv6rb5zawal4sqjyfnjjm66snkj3";
+  };
+
+  propagatedBuildInputs = [ netifaces six enum-compat ifaddr ]
+    ++ stdenv.lib.optionals (pythonOlder "3.5") [ typing ];
+
+  meta = with stdenv.lib; {
+    description = "A pure python implementation of multicast DNS service discovery";
+    homepage = "https://github.com/jstasiak/python-zeroconf";
+    license = licenses.lgpl21;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pulseaudio-modules-bt/default.nix b/nixpkgs/pkgs/applications/audio/pulseaudio-modules-bt/default.nix
new file mode 100644
index 000000000000..556dd5f10619
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pulseaudio-modules-bt/default.nix
@@ -0,0 +1,87 @@
+{ stdenv
+, runCommand
+, fetchFromGitHub
+, pulseaudio
+, pkgconfig
+, ffmpeg
+, patchelf
+, fdk_aac
+, libtool
+, ldacbt
+, cmake
+, bluez
+, dbus
+, sbc
+, lib
+}:
+
+let
+  pulseSources = runCommand "pulseaudio-sources" {} ''
+    mkdir $out
+    tar -xf ${pulseaudio.src}
+    mv pulseaudio*/* $out/
+  '';
+
+in stdenv.mkDerivation rec {
+  pname = "pulseaudio-modules-bt";
+  version = "1.4";
+
+  src = fetchFromGitHub {
+    owner = "EHfive";
+    repo = "pulseaudio-modules-bt";
+    rev = "v${version}";
+    sha256 = "0bzg6x405j39axnkvc6n6vkl1hv1frk94y1i9sl170081bk23asd";
+  };
+
+  patches = [
+    ./fix-install-path.patch
+  ];
+
+  nativeBuildInputs = [
+    pkgconfig
+    patchelf
+    cmake
+  ];
+
+  buildInputs = [
+    pulseaudio
+    ffmpeg
+    fdk_aac
+    libtool
+    ldacbt
+    bluez
+    dbus
+    sbc
+  ];
+
+  postPatch = ''
+    # Upstream bundles pulseaudio as a submodule
+    rm -r pa
+    ln -s ${pulseSources} pa
+
+    # Pulseaudio version is detected with a -rebootstrapped suffix which build system assumptions
+    substituteInPlace config.h.in --replace PulseAudio_VERSION ${pulseaudio.version}
+    substituteInPlace CMakeLists.txt --replace '${"\${PulseAudio_VERSION}"}' ${pulseaudio.version}
+
+    # Fraunhofer recommends to enable afterburner but upstream has it set to false by default
+    substituteInPlace src/modules/bluetooth/a2dp/a2dp_aac.c \
+      --replace "info->aac_afterburner = false;" "info->aac_afterburner = true;"
+  '';
+
+  postFixup = ''
+    for so in $out/lib/pulse-${pulseaudio.version}/modules/*.so; do
+      orig_rpath=$(patchelf --print-rpath "$so")
+      patchelf \
+        --set-rpath "${ldacbt}/lib:${lib.getLib ffmpeg}/lib:$out/lib/pulse-${pulseaudio.version}/modules:$orig_rpath" \
+        "$so"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/EHfive/pulseaudio-modules-bt";
+    description = "LDAC, aptX, aptX HD, AAC codecs (A2DP Audio) support for Linux PulseAudio";
+    platforms = platforms.linux;
+    license = licenses.mit;
+    maintainers = with maintainers; [ adisbladis ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pulseaudio-modules-bt/fix-install-path.patch b/nixpkgs/pkgs/applications/audio/pulseaudio-modules-bt/fix-install-path.patch
new file mode 100644
index 000000000000..3c498fe8af1b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pulseaudio-modules-bt/fix-install-path.patch
@@ -0,0 +1,11 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 8d20dbf..63fe7ba 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -213,5 +213,4 @@ INSTALL(TARGETS
+         module-bluez5-device
+         module-bluetooth-discover
+         module-bluetooth-policy
+-        LIBRARY DESTINATION ${PulseAudio_modlibexecdir})
+-
++        LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pulse-${PulseAudio_VERSION}/modules/)
diff --git a/nixpkgs/pkgs/applications/audio/pulseeffects/default.nix b/nixpkgs/pkgs/applications/audio/pulseeffects/default.nix
new file mode 100644
index 000000000000..eaedcb426b81
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pulseeffects/default.nix
@@ -0,0 +1,115 @@
+{ stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkgconfig
+, itstool
+, python3
+, libxml2
+, desktop-file-utils
+, wrapGAppsHook
+, gst_all_1
+, pulseaudio
+, gtk3
+, glib
+, glibmm
+, gtkmm3
+, lilv
+, lv2
+, serd
+, sord
+, sratom
+, libbs2b
+, libsamplerate
+, libsndfile
+, libebur128
+, boost
+, dbus
+, fftwFloat
+, calf
+, zita-convolver
+, zam-plugins
+, rubberband
+, mda_lv2
+, lsp-plugins
+}:
+
+let
+  lv2Plugins = [
+    calf # limiter, compressor exciter, bass enhancer and others
+    mda_lv2 # loudness
+    lsp-plugins # delay
+  ];
+  ladspaPlugins = [
+    rubberband # pitch shifting
+    zam-plugins # maximizer
+  ];
+in stdenv.mkDerivation rec {
+  pname = "pulseeffects";
+  version = "4.7.2";
+
+  src = fetchFromGitHub {
+    owner = "wwmm";
+    repo = "pulseeffects";
+    rev = "v${version}";
+    sha256 = "1yga25da5bpg12zkikp6dn4wqhn9f7r10awvjzfcz8s6w9xlz6rx";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkgconfig
+    libxml2
+    itstool
+    python3
+    desktop-file-utils
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    pulseaudio
+    glib
+    glibmm
+    gtk3
+    gtkmm3
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base # gst-fft
+    gst_all_1.gst-plugins-good # pulsesrc
+    gst_all_1.gst-plugins-bad
+    lilv lv2 serd sord sratom
+    libbs2b
+    libebur128
+    libsamplerate
+    libsndfile
+    boost
+    dbus
+    fftwFloat
+    zita-convolver
+  ];
+
+  postPatch = ''
+    chmod +x meson_post_install.py
+    patchShebangs meson_post_install.py
+  '';
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      --set LV2_PATH "${stdenv.lib.makeSearchPath "lib/lv2" lv2Plugins}"
+      --set LADSPA_PATH "${stdenv.lib.makeSearchPath "lib/ladspa" ladspaPlugins}"
+    )
+  '';
+
+  # Meson is no longer able to pick up Boost automatically.
+  # https://github.com/NixOS/nixpkgs/issues/86131
+  BOOST_INCLUDEDIR = "${stdenv.lib.getDev boost}/include";
+  BOOST_LIBRARYDIR = "${stdenv.lib.getLib boost}/lib";
+
+  meta = with stdenv.lib; {
+    description = "Limiter, compressor, reverberation, equalizer and auto volume effects for Pulseaudio applications";
+    homepage = "https://github.com/wwmm/pulseeffects";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ jtojnar ];
+    platforms = platforms.linux;
+    badPlatforms = [ "aarch64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/puredata/default.nix b/nixpkgs/pkgs/applications/audio/puredata/default.nix
new file mode 100644
index 000000000000..4b221cd1a76b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/puredata/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, autoreconfHook, gettext, makeWrapper
+, alsaLib, libjack2, tk, fftw
+}:
+
+stdenv.mkDerivation  rec {
+  pname = "puredata";
+  version = "0.50-2";
+
+  src = fetchurl {
+    url = "http://msp.ucsd.edu/Software/pd-${version}.src.tar.gz";
+    sha256 = "0dz6r6jy0zfs1xy1xspnrxxks8kddi9c7pxz4vpg2ygwv83ghpg5";
+  };
+
+  nativeBuildInputs = [ autoreconfHook gettext makeWrapper ];
+
+  buildInputs = [ alsaLib libjack2 fftw ];
+
+  configureFlags = [
+    "--enable-alsa"
+    "--enable-jack"
+    "--enable-fftw"
+    "--disable-portaudio"
+    "--disable-oss"
+  ];
+
+  postInstall = ''
+    wrapProgram $out/bin/pd --prefix PATH : ${tk}/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = ''A real-time graphical programming environment for
+                    audio, video, and graphical processing'';
+    homepage = "http://puredata.info";
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.goibhniu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/puredata/wrapper.nix b/nixpkgs/pkgs/applications/audio/puredata/wrapper.nix
new file mode 100644
index 000000000000..80968e2700b4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/puredata/wrapper.nix
@@ -0,0 +1,16 @@
+{ symlinkJoin, puredata, makeWrapper, plugins }:
+
+let
+puredataFlags = map (x: "-path ${x}/") plugins;
+in symlinkJoin {
+  name = "puredata-with-plugins-${puredata.version}";
+
+  paths = [ puredata ] ++ plugins;
+
+  buildInputs = [ makeWrapper ];
+
+  postBuild = ''
+    wrapProgram $out/bin/pd \
+      --add-flags "${toString puredataFlags}"
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/audio/qjackctl/default.nix b/nixpkgs/pkgs/applications/audio/qjackctl/default.nix
new file mode 100644
index 000000000000..87666940c151
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/qjackctl/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, mkDerivation, fetchurl, pkgconfig, alsaLib, libjack2, dbus, qtbase, qttools, qtx11extras }:
+
+mkDerivation rec {
+  version = "0.6.2";
+  pname = "qjackctl";
+
+  # some dependencies such as killall have to be installed additionally
+
+  src = fetchurl {
+    url = "mirror://sourceforge/qjackctl/${pname}-${version}.tar.gz";
+    sha256 = "1rjhdyp0wzhlqr4cn80rh1qhby998cpqv81j1bbb9hfsiq77viqy";
+  };
+
+  buildInputs = [
+    qtbase
+    qtx11extras
+    qttools
+    alsaLib
+    libjack2
+    dbus
+  ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  configureFlags = [ "--enable-jack-version" ];
+
+  meta = with stdenv.lib; {
+    description = "A Qt application to control the JACK sound server daemon";
+    homepage = "http://qjackctl.sourceforge.net/";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/qmidiarp/default.nix b/nixpkgs/pkgs/applications/audio/qmidiarp/default.nix
new file mode 100644
index 000000000000..4bbfe79a2c9f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/qmidiarp/default.nix
@@ -0,0 +1,49 @@
+{ stdenv
+, fetchgit
+, automake
+, autoreconfHook
+, lv2
+, pkg-config
+, qt5
+, alsaLib
+, libjack2
+}:
+
+stdenv.mkDerivation rec {
+  name = "qmidiarp";
+  version = "0.6.5";
+
+  src = fetchgit {
+    url = "https://git.code.sf.net/p/qmidiarp/code";
+    sha256 = "1g2143gzfbihqr2zi3k2v1yn1x3mwfbb2khmcd4m4cq3hcwhhlx9";
+    rev = "qmidiarp-0.6.5";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    pkg-config
+    qt5.wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    alsaLib
+    lv2
+    libjack2
+  ] ++ (with qt5; [
+    qttools
+  ]);
+
+  meta = with stdenv.lib; {
+    description = "An advanced MIDI arpeggiator";
+    longDescription = ''
+      An advanced MIDI arpeggiator, programmable step sequencer and LFO for Linux.
+      It can hold any number of arpeggiator, sequencer, or LFO modules running in
+      parallel.
+    '';
+
+    homepage = "http://qmidiarp.sourceforge.net";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ sjfloat ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/qmidinet/default.nix b/nixpkgs/pkgs/applications/audio/qmidinet/default.nix
new file mode 100644
index 000000000000..479a8a2bb04f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/qmidinet/default.nix
@@ -0,0 +1,25 @@
+{ mkDerivation, lib, fetchurl, pkgconfig, qtbase, qttools, alsaLib, libjack2 }:
+
+mkDerivation rec {
+  version = "0.6.2";
+  pname = "qmidinet";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/qmidinet/${pname}-${version}.tar.gz";
+    sha256 = "0siqzyhwg3l9av7jbca3bqdww7xspjlpi9ya4mkj211xc3a3a1d6";
+  };
+
+  hardeningDisable = [ "format" ];
+
+  buildInputs = [  qtbase qttools alsaLib libjack2 ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = with lib; {
+    description = "A MIDI network gateway application that sends and receives MIDI data (ALSA Sequencer and/or JACK MIDI) over the network";
+    homepage = "http://qmidinet.sourceforge.net/";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/qmidiroute/default.nix b/nixpkgs/pkgs/applications/audio/qmidiroute/default.nix
new file mode 100644
index 000000000000..2a83d98b6ea3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/qmidiroute/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, pkgconfig, qt4, alsaLib }:
+
+stdenv.mkDerivation rec {
+  version = "0.4.0";
+  pname = "qmidiroute";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/alsamodular/QMidiRoute/${version}/${pname}-${version}.tar.gz";
+    sha256 = "0vmjwarsxr5540rafhmdcc62yarf0w2l05bjjl9s28zzr5m39z3n";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ qt4 alsaLib ];
+
+  meta = with stdenv.lib; {
+    description = "MIDI event processor and router";
+    longDescription = ''
+    qmidiroute is a versatile MIDI event processor and router for the ALSA
+    sequencer.  The graphical  interface  is  based  on  the  Qt4  toolkit.
+    qmidiroute permits setting up an unlimited number of MIDI maps in which
+    incoming events are selected, modified or even changed in  type  before
+    being  directed  to  a  dedicated  ALSA  output  port. The maps work in
+    parallel, and they are organized in tabs.
+    '';
+
+    license = licenses.gpl2;
+    maintainers = [ maintainers.lebastr ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/qmmp/default.nix b/nixpkgs/pkgs/applications/audio/qmmp/default.nix
new file mode 100644
index 000000000000..7b4d823006de
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/qmmp/default.nix
@@ -0,0 +1,64 @@
+{ stdenv, mkDerivation, fetchurl, cmake, pkgconfig, xlibsWrapper
+, qtbase, qttools, qtmultimedia, qtx11extras
+# transports
+, curl, libmms
+# input plugins
+, libmad, taglib, libvorbis, libogg, flac, libmpcdec, libmodplug, libsndfile
+, libcdio, cdparanoia, libcddb, faad2, ffmpeg_3, wildmidi
+# output plugins
+, alsaLib, libpulseaudio
+# effect plugins
+, libsamplerate
+}:
+
+# Additional plugins that can be added:
+#  wavpack (http://www.wavpack.com/)
+#  gme (Game music support)
+#  Ogg Opus support
+#  BS2B effect plugin (http://bs2b.sourceforge.net/)
+#  JACK audio support
+#  ProjectM visualization plugin
+
+# To make MIDI work we must tell Qmmp what instrument configuration to use (and
+# this can unfortunately not be set at configure time):
+# Go to settings (ctrl-p), navigate to the WildMidi plugin and click on
+# Preferences. In the instrument configuration field, type the path to
+# /nix/store/*wildmidi*/etc/wildmidi.cfg (or your own custom cfg file).
+
+# Qmmp installs working .desktop file(s) all by itself, so we don't need to
+# handle that.
+
+mkDerivation rec {
+  name = "qmmp-1.4.0";
+
+  src = fetchurl {
+    url = "http://qmmp.ylsoftware.com/files/${name}.tar.bz2";
+    sha256 = "13rhnk55d44svksl13w23w2qkfpkq4mc0jy5mi89nzqkzshwvfd8";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs =
+    [ # basic requirements
+      qtbase qttools qtmultimedia qtx11extras xlibsWrapper
+      # transports
+      curl libmms
+      # input plugins
+      libmad taglib libvorbis libogg flac libmpcdec libmodplug libsndfile
+      libcdio cdparanoia libcddb faad2 ffmpeg_3 wildmidi
+      # output plugins
+      alsaLib libpulseaudio
+      # effect plugins
+      libsamplerate
+    ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Qt-based audio player that looks like Winamp";
+    homepage = "http://qmmp.ylsoftware.com/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bjornfor ];
+    repositories.svn = "http://qmmp.googlecode.com/svn/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/qsampler/default.nix b/nixpkgs/pkgs/applications/audio/qsampler/default.nix
new file mode 100644
index 000000000000..1f65b3748381
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/qsampler/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, autoconf, automake, libtool, pkgconfig, qttools
+, liblscp, libgig, qtbase, mkDerivation }:
+
+mkDerivation rec {
+  pname = "qsampler";
+  version = "0.6.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/qsampler/${pname}-${version}.tar.gz";
+    sha256 = "1wr7k739zx2nz00b810f60g9k3y92w05nfci987hw7y2sks9rd8j";
+  };
+
+  nativeBuildInputs = [ autoconf automake libtool pkgconfig qttools ];
+  buildInputs = [ liblscp libgig qtbase ];
+
+  preConfigure = "make -f Makefile.svn";
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.linuxsampler.org";
+    description = "Graphical frontend to LinuxSampler";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/qsynth/default.nix b/nixpkgs/pkgs/applications/audio/qsynth/default.nix
new file mode 100644
index 000000000000..5da8f4cd4626
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/qsynth/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, alsaLib, fluidsynth, libjack2, autoconf, pkgconfig
+, mkDerivation, qtbase, qttools, qtx11extras
+}:
+
+mkDerivation  rec {
+  pname = "qsynth";
+  version = "0.6.2";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/qsynth/${pname}-${version}.tar.gz";
+    sha256 = "0cp6vrqrj37rv3a7qfvqrg64j7zwpfj60y5b83mlkzvmg1sgjnlv";
+  };
+
+  nativeBuildInputs = [ autoconf pkgconfig ];
+
+  buildInputs = [ alsaLib fluidsynth libjack2 qtbase qttools qtx11extras ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Fluidsynth GUI";
+    homepage = "https://sourceforge.net/projects/qsynth";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ goibhniu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/qtractor/default.nix b/nixpkgs/pkgs/applications/audio/qtractor/default.nix
new file mode 100644
index 000000000000..f2ee5eac70fa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/qtractor/default.nix
@@ -0,0 +1,35 @@
+{ alsaLib, autoconf, automake, dssi, fetchurl, libjack2
+, ladspaH, ladspaPlugins, liblo, libmad, libsamplerate, libsndfile
+, libtool, libvorbis, lilv, lv2, pkgconfig, qttools, qtbase, rubberband, serd
+, sord, sratom, stdenv, suil, wrapQtAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "qtractor";
+  version = "0.9.14";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
+    sha256 = "1gh268gdpj7nw19xfh7k2l3aban4yrs1lmx33qswrnngs2izj1fk";
+  };
+
+  nativeBuildInputs = [
+    autoconf automake libtool pkgconfig qttools wrapQtAppsHook
+  ];
+
+  buildInputs =
+    [ alsaLib dssi libjack2 ladspaH
+      ladspaPlugins liblo libmad libsamplerate libsndfile libtool
+      libvorbis lilv lv2 qtbase rubberband serd sord sratom
+      suil
+    ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Audio/MIDI multi-track sequencer";
+    homepage = "http://qtractor.sourceforge.net";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.goibhniu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/qtscrobbler/default.nix b/nixpkgs/pkgs/applications/audio/qtscrobbler/default.nix
new file mode 100644
index 000000000000..5b84989a7c41
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/qtscrobbler/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, lib, fetchurl, withMtp ? true, libmtp, pkgconfig, which, qt4, qmake4Hook }:
+
+stdenv.mkDerivation rec {
+  pname = "qtscrobbler";
+  version = "0.11";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/qtscrob/qtscrob/${version}/qtscrob-${version}.tar.bz2";
+    sha256 = "01c8e48f616ed09504833d27d92fd62f455bd645ea2d1cc2a5f4c287d641daba";
+  };
+
+  nativeBuildInputs = [ qmake4Hook ] ++ lib.optionals withMtp [ pkgconfig which ];
+  buildInputs = [ qt4 ] ++ lib.optional withMtp libmtp;
+
+  enableParallelBuilding = true;
+
+  postPatch = ''
+    cd src
+    sed -i -e "s,/usr/local,$out," -e "s,/usr,," common.pri
+  '';
+
+  meta = with lib; {
+    description = "Qt based last.fm scrobbler";
+    longDescription = ''
+      QTScrobbler is a tool to upload information about the tracks you have played from your Digital Audio Player (DAP) to your last.fm account.
+      It is able to gather this information from Apple iPods or DAPs running the Rockbox replacement firmware.
+    '';
+
+    homepage = "http://qtscrob.sourceforge.net";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.vanzef ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/quodlibet/default.nix b/nixpkgs/pkgs/applications/audio/quodlibet/default.nix
new file mode 100644
index 000000000000..704e20cc8c56
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/quodlibet/default.nix
@@ -0,0 +1,79 @@
+{ stdenv, fetchurl, python3, wrapGAppsHook, gettext, libsoup, gnome3, gtk3, gdk-pixbuf,
+  tag ? "", xvfb_run, dbus, glibcLocales, glib, glib-networking, gobject-introspection,
+  gst_all_1, withGstPlugins ? true,
+  xineBackend ? false, xineLib,
+  withDbusPython ? false, withPyInotify ? false, withMusicBrainzNgs ? false, withPahoMqtt ? false,
+  webkitgtk ? null,
+  keybinder3 ? null, gtksourceview ? null, libmodplug ? null, kakasi ? null, libappindicator-gtk3 ? null }:
+
+let optionals = stdenv.lib.optionals; in
+python3.pkgs.buildPythonApplication rec {
+  pname = "quodlibet${tag}";
+  version = "4.2.1";
+
+  src = fetchurl {
+    url = "https://github.com/quodlibet/quodlibet/releases/download/release-${version}/quodlibet-${version}.tar.gz";
+    sha256 = "0b1rvr4hqs2bjmhayms7vxxkn3d92k9v7p1269rjhf11hpk122l7";
+  };
+
+  nativeBuildInputs = [ wrapGAppsHook gettext ];
+
+  checkInputs = [ gdk-pixbuf ] ++ (with python3.pkgs; [ pytest pytest_xdist polib xvfb_run dbus.daemon glibcLocales ]);
+
+  buildInputs = [ gnome3.adwaita-icon-theme libsoup glib glib-networking gtk3 webkitgtk gdk-pixbuf keybinder3 gtksourceview libmodplug libappindicator-gtk3 kakasi gobject-introspection ]
+    ++ (if xineBackend then [ xineLib ] else with gst_all_1;
+    [ gstreamer gst-plugins-base ] ++ optionals withGstPlugins [ gst-plugins-good gst-plugins-ugly gst-plugins-bad ]);
+
+  propagatedBuildInputs = with python3.pkgs; [ pygobject3 pycairo mutagen gst-python feedparser ]
+      ++ optionals withDbusPython [ dbus-python ]
+      ++ optionals withPyInotify [ pyinotify ]
+      ++ optionals withMusicBrainzNgs [ musicbrainzngs ]
+      ++ optionals stdenv.isDarwin [ pyobjc ]
+      ++ optionals withPahoMqtt [ paho-mqtt ];
+
+  LC_ALL = "en_US.UTF-8";
+
+  pytestFlags = stdenv.lib.optionals (xineBackend || !withGstPlugins) [
+    "--ignore=tests/plugin/test_replaygain.py"
+  ] ++ [
+    # upstream does actually not enforce source code linting
+    "--ignore=tests/quality"
+    # build failure on Arch Linux
+    # https://github.com/NixOS/nixpkgs/pull/77796#issuecomment-575841355
+    "--ignore=tests/test_operon.py"
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+    env XDG_DATA_DIRS="$out/share:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_ICON_DIRS:$XDG_DATA_DIRS" \
+      HOME=$(mktemp -d) \
+      xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
+        --config-file=${dbus.daemon}/share/dbus-1/session.conf \
+        py.test $pytestFlags
+    runHook postCheck
+  '';
+
+  preFixup = stdenv.lib.optionalString (kakasi != null) "gappsWrapperArgs+=(--prefix PATH : ${kakasi}/bin)";
+
+  meta = with stdenv.lib; {
+    description = "GTK-based audio player written in Python, using the Mutagen tagging library";
+    license = licenses.gpl2Plus;
+
+    longDescription = ''
+      Quod Libet is a GTK-based audio player written in Python, using
+      the Mutagen tagging library. It's designed around the idea that
+      you know how to organize your music better than we do. It lets
+      you make playlists based on regular expressions (don't worry,
+      regular searches work too). It lets you display and edit any
+      tags you want in the file. And it lets you do this for all the
+      file formats it supports. Quod Libet easily scales to libraries
+      of thousands (or even tens of thousands) of songs. It also
+      supports most of the features you expect from a modern media
+      player, like Unicode support, tag editing, Replay Gain, podcasts
+      & internet radio, and all major audio formats.
+    '';
+
+    maintainers = with maintainers; [ coroa sauyon ];
+    homepage = "https://quodlibet.readthedocs.io/en/latest/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/r128gain/default.nix b/nixpkgs/pkgs/applications/audio/r128gain/default.nix
new file mode 100644
index 000000000000..17f6840d4e22
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/r128gain/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, fetchFromGitHub
+, substituteAll
+, ffmpeg_3
+, python3Packages
+, sox
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "r128gain";
+  version = "1.0.1";
+
+  src = fetchFromGitHub {
+    owner = "desbma";
+    repo = "r128gain";
+    rev = version;
+    sha256 = "0fnxis2g7mw8mb0cz9bws909lrndli7ml54nnzda49vc2fhbjwxr";
+  };
+
+  patches = [
+    (
+      substituteAll {
+        src = ./ffmpeg-location.patch;
+        ffmpeg = ffmpeg_3;
+      }
+    )
+  ];
+
+  propagatedBuildInputs = with python3Packages; [ crcmod ffmpeg-python mutagen tqdm ];
+  checkInputs = with python3Packages; [ requests sox ];
+
+  # Testing downloads media files for testing, which requires the
+  # sandbox to be disabled.
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Fast audio loudness scanner & tagger (ReplayGain v2 / R128)";
+    homepage = "https://github.com/desbma/r128gain";
+    license = licenses.lgpl2Plus;
+    maintainers = [ maintainers.AluisioASG ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/r128gain/ffmpeg-location.patch b/nixpkgs/pkgs/applications/audio/r128gain/ffmpeg-location.patch
new file mode 100644
index 000000000000..ff118024011e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/r128gain/ffmpeg-location.patch
@@ -0,0 +1,31 @@
+diff --git i/r128gain/__init__.py w/r128gain/__init__.py
+index 53fc3ef..f144e15 100755
+--- i/r128gain/__init__.py
++++ w/r128gain/__init__.py
+@@ -78,7 +78,7 @@ def get_ffmpeg_lib_versions(ffmpeg_path=None):
+   Example: 0x3040100 for FFmpeg 3.4.1
+   """
+   r = collections.OrderedDict()
+-  cmd = (ffmpeg_path or "ffmpeg", "-version")
++  cmd = (ffmpeg_path or "@ffmpeg@/bin/ffmpeg", "-version")
+   output = subprocess.run(cmd,
+                           check=True,
+                           stdout=subprocess.PIPE,
+@@ -156,7 +156,7 @@ def get_r128_loudness(audio_filepaths, *, calc_peak=True, enable_ffmpeg_threadin
+                                      os.devnull,
+                                      **additional_ffmpeg_args,
+                                      f="null"),
+-                       cmd=ffmpeg_path or "ffmpeg")
++                       cmd=ffmpeg_path or "@ffmpeg@/bin/ffmpeg")
+ 
+   # run
+   logger().debug(cmd_to_string(cmd))
+@@ -740,7 +740,7 @@ def cl_main():
+                           help="Maximum number of tracks to scan in parallel. If not specified, autodetect CPU count")
+   arg_parser.add_argument("-f",
+                           "--ffmpeg-path",
+-                          default=shutil.which("ffmpeg"),
++                          default="@ffmpeg@/bin/ffmpeg",
+                           help="""Full file path of ffmpeg executable (only needed if not in PATH).
+                                   If not specified, autodetect""")
+   arg_parser.add_argument("-d",
diff --git a/nixpkgs/pkgs/applications/audio/radiotray-ng/default.nix b/nixpkgs/pkgs/applications/audio/radiotray-ng/default.nix
new file mode 100644
index 000000000000..014906594a7d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/radiotray-ng/default.nix
@@ -0,0 +1,100 @@
+{ stdenv, fetchFromGitHub
+, cmake, pkgconfig
+# Transport
+, curl
+# Libraries
+, boost
+, jsoncpp
+, libbsd
+, pcre
+# GUI/Desktop
+, dbus
+, glibmm
+, gsettings-desktop-schemas
+, hicolor-icon-theme
+, libappindicator-gtk3
+, libnotify
+, libxdg_basedir
+, wxGTK
+# GStreamer
+, gst_all_1
+# User-agent info
+, lsb-release
+# rt2rtng
+, python3
+# Testing
+, gtest
+# Fixup
+, wrapGAppsHook
+, makeWrapper
+}:
+
+let
+  gstInputs = with gst_all_1; [
+    gstreamer gst-plugins-base
+    gst-plugins-good gst-plugins-bad gst-plugins-ugly
+    gst-libav
+  ];
+  # For the rt2rtng utility for converting bookmark file to -ng format
+  pythonInputs = with python3.pkgs; [ python lxml ];
+in
+stdenv.mkDerivation rec {
+  pname = "radiotray-ng";
+  version = "0.2.7";
+
+  src = fetchFromGitHub {
+    owner = "ebruck";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1v2nsz7s0jj0wmqabzk6akcf1353rachm1lfq77hxbq9z5pw8pgb";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig wrapGAppsHook makeWrapper ];
+
+  buildInputs = [
+    curl
+    boost jsoncpp libbsd pcre
+    glibmm hicolor-icon-theme gsettings-desktop-schemas libappindicator-gtk3 libnotify
+    libxdg_basedir
+    lsb-release
+    wxGTK
+  ] ++ gstInputs
+    ++ pythonInputs;
+
+  patches = [ ./no-dl-googletest.patch ];
+
+  postPatch = ''
+    for x in package/CMakeLists.txt include/radiotray-ng/common.hpp data/*.desktop; do
+      substituteInPlace $x --replace /usr $out
+    done
+    substituteInPlace package/CMakeLists.txt --replace /etc/xdg/autostart $out/etc/xdg/autostart
+
+    # We don't find the radiotray-ng-notification icon otherwise
+    substituteInPlace data/radiotray-ng.desktop \
+      --replace radiotray-ng-notification radiotray-ng-on
+    substituteInPlace data/rtng-bookmark-editor.desktop \
+      --replace radiotray-ng-notification radiotray-ng-on
+  '';
+
+  cmakeFlags = [
+    "-DBUILD_TESTS=${if doCheck then "ON" else "OFF"}"
+  ];
+
+  enableParallelBuilding = true;
+
+  checkInputs = [ gtest ];
+  doCheck = !stdenv.isAarch64; # single failure that I can't explain
+
+  preFixup = ''
+    gappsWrapperArgs+=(--suffix PATH : ${stdenv.lib.makeBinPath [ dbus ]})
+    wrapProgram $out/bin/rt2rtng --prefix PYTHONPATH : $PYTHONPATH
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An internet radio player for linux";
+    homepage = "https://github.com/ebruck/radiotray-ng";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ dtzWill ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/radiotray-ng/no-dl-googletest.patch b/nixpkgs/pkgs/applications/audio/radiotray-ng/no-dl-googletest.patch
new file mode 100644
index 000000000000..3aee97516560
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/radiotray-ng/no-dl-googletest.patch
@@ -0,0 +1,55 @@
+From b6f7a9e2e0194c6baed63a33b7beff359080b8d9 Mon Sep 17 00:00:00 2001
+From: Will Dietz <w@wdtz.org>
+Date: Sat, 16 Mar 2019 11:40:00 -0500
+Subject: [PATCH] don't download googletest
+
+---
+ CMakeLists.txt       | 18 ------------------
+ tests/CMakeLists.txt |  1 -
+ 2 files changed, 19 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index ddba1be..3396705 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -70,25 +70,7 @@ endif()
+ 
+ # build tests? Then we need googletest...
+ if (BUILD_TESTS)
+-    include(ExternalProject)
+-
+-    ExternalProject_Add(googletest
+-        PREFIX "${CMAKE_CURRENT_BINARY_DIR}/googletest"
+-        URL https://github.com/google/googletest/archive/release-1.8.1.tar.gz
+-        URL_HASH SHA256=9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c
+-        TIMEOUT 30
+-        DOWNLOAD_NO_PROGRESS true
+-        INSTALL_COMMAND "")
+-
+-    ExternalProject_Get_Property(googletest SOURCE_DIR)
+-    include_directories(${SOURCE_DIR}/googlemock/include ${SOURCE_DIR}/googletest/include)
+-    ExternalProject_Get_Property(googletest BINARY_DIR)
+-    link_directories(${BINARY_DIR}/googlemock ${BINARY_DIR}/googlemock/gtest)
+     set(GMOCK_BOTH_LIBRARIES gmock_main gmock gtest)
+-    set_property(DIRECTORY PROPERTY CLEAN_NO_CUSTOM "${CMAKE_CURRENT_BINARY_DIR}/googletest")
+-    unset(SOURCE_DIR)
+-    unset(BINARY_DIR)
+-
+     enable_testing()
+     add_subdirectory(tests)
+     add_subdirectory(tests/runners/)
+diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
+index 859c048..58ab5c2 100644
+--- a/tests/CMakeLists.txt
++++ b/tests/CMakeLists.txt
+@@ -2,7 +2,6 @@ include(GoogleTest)
+ 
+ function(add_gmock_test target)
+     add_executable(${target} ${ARGN})
+-    add_dependencies(${target} googletest)
+     target_link_libraries(${target} config playlist bookmarks event_bus ${GMOCK_BOTH_LIBRARIES} ${XDG_BASEDIR_LIBRARIES} ${Boost_LIBRARIES} ${CURL_LIBRARIES} ${JSONCPP_LIBRARIES} pthread)
+     target_include_directories(${target} PRIVATE ${JSONCPP_INCLUDE_DIRS})
+     gtest_discover_tests(${target})
+-- 
+2.22.0
+
diff --git a/nixpkgs/pkgs/applications/audio/rakarrack/default.nix b/nixpkgs/pkgs/applications/audio/rakarrack/default.nix
new file mode 100644
index 000000000000..4548f9ba624f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/rakarrack/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, alsaLib, alsaUtils, fltk, libjack2, libXft,
+libXpm, libjpeg, libpng, libsamplerate, libsndfile, zlib }:
+
+stdenv.mkDerivation  rec {
+  pname = "rakarrack";
+  version = "0.6.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/rakarrack/${pname}-${version}.tar.bz2";
+    sha256 = "1rpf63pdn54c4yg13k7cb1w1c7zsvl97c4qxcpz41c8l91xd55kn";
+  };
+
+  hardeningDisable = [ "format" ];
+
+  patches = [ ./fltk-path.patch ];
+
+  buildInputs = [ alsaLib alsaUtils fltk libjack2 libXft libXpm libjpeg
+    libpng libsamplerate libsndfile zlib ];
+
+  meta = with stdenv.lib; {
+    description = "Multi-effects processor emulating a guitar effects pedalboard";
+    homepage = "http://rakarrack.sourceforge.net";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.goibhniu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/rakarrack/fltk-path.patch b/nixpkgs/pkgs/applications/audio/rakarrack/fltk-path.patch
new file mode 100644
index 000000000000..8f042bd3a669
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/rakarrack/fltk-path.patch
@@ -0,0 +1,35 @@
+commit 47245c3fd30dc326fedd7cdae444ddcf0fd97490
+Author: holborn <holborn@users.sourceforge.net>
+Date:   Tue Apr 19 15:02:26 2011 +0100
+
+            Fix FL path
+    
+    	modified:   src/global.h
+    	modified:   src/process.C
+
+diff --git a/src/global.h b/src/global.h
+index fc74b06..3e33da9 100644
+--- a/src/global.h
++++ b/src/global.h
+@@ -176,7 +176,7 @@ return y;
+ #include <X11/xpm.h>
+ #include <jack/jack.h>
+ #include <jack/midiport.h>
+-#include <Fl/Fl_Preferences.H>
++#include <FL/Fl_Preferences.H>
+ #include "FPreset.h"
+ #include "Reverb.h"
+ #include "Chorus.h"
+diff --git a/src/process.C b/src/process.C
+index 51bbc65..c993ff8 100644
+--- a/src/process.C
++++ b/src/process.C
+@@ -28,7 +28,7 @@
+ #include <fcntl.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+-#include <Fl/Fl_Preferences.H>
++#include <FL/Fl_Preferences.H>
+ #include "global.h"
+ 
+ int Pexitprogram, preset;
diff --git a/nixpkgs/pkgs/applications/audio/reaper/default.nix b/nixpkgs/pkgs/applications/audio/reaper/default.nix
new file mode 100644
index 000000000000..9de70d83ee5e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/reaper/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchurl, autoPatchelfHook, makeWrapper
+, alsaLib, xorg, libjack2
+, gtk3, pango, gdk-pixbuf, cairo, glib, freetype
+, libpulseaudio, xdg_utils
+}:
+
+stdenv.mkDerivation rec {
+  pname = "reaper";
+  version = "6.10";
+
+  src = fetchurl {
+    url = "https://www.reaper.fm/files/${stdenv.lib.versions.major version}.x/reaper${builtins.replaceStrings ["."] [""] version}_linux_x86_64.tar.xz";
+    sha256 = "1p54phmsa6xbqxb5cpgwnz7ny4famb8zi25y3cmxwgr4pfy94b2p";
+  };
+
+  nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
+
+  buildInputs = [
+    alsaLib
+
+    xorg.libX11
+    xorg.libXi
+
+    gdk-pixbuf
+    pango
+    cairo
+    glib
+    freetype
+
+    xdg_utils
+  ];
+
+  runtimeDependencies = [
+    gtk3
+  ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    XDG_DATA_HOME="$out/share" ./install-reaper.sh \
+      --install $out/opt \
+      --integrate-user-desktop
+    rm $out/opt/REAPER/uninstall-reaper.sh
+
+    wrapProgram $out/opt/REAPER/reaper \
+      --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ libpulseaudio libjack2 ]}"
+
+    mkdir $out/bin
+    ln -s $out/opt/REAPER/reaper $out/bin/
+    ln -s $out/opt/REAPER/reamote-server $out/bin/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Digital audio workstation";
+    homepage = "https://www.reaper.fm/";
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ jfrankenau ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/redoflacs/default.nix b/nixpkgs/pkgs/applications/audio/redoflacs/default.nix
new file mode 100644
index 000000000000..140b163e25cd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/redoflacs/default.nix
@@ -0,0 +1,49 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, makeWrapper
+, installShellFiles
+, flac
+, sox
+, withAucdtect ? false
+, aucdtect ? null
+}:
+
+stdenv.mkDerivation rec {
+  pname = "redoflacs";
+  version = "0.30.20190903";
+
+  src = fetchFromGitHub {
+    owner = "sirjaren";
+    repo = "redoflacs";
+    rev = "4ca544cbc075d0865884906208cb2b8bc318cf9e";
+    sha256 = "19lcl09d4ngz2zzwd8dnnxx41ddvznhar6ggrlf1xvkr5gd7lafp";
+  };
+
+  dontBuild = true;
+
+  nativeBuildInputs = [ installShellFiles makeWrapper ];
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm755 -t $out/bin redoflacs
+    install -Dm644 -t $out/share/doc/redoflacs LICENSE *.md
+    installManPage redoflacs.1
+
+    runHook postInstall
+  '';
+
+  postFixup = ''
+    wrapProgram $out/bin/redoflacs \
+      --prefix PATH : ${stdenv.lib.makeBinPath ([ flac sox ] ++ lib.optional withAucdtect aucdtect)}
+  '';
+
+  meta = with lib; {
+    description = "Parallel BASH commandline FLAC compressor, verifier, organizer, analyzer, and retagger";
+    homepage = src.meta.homepage;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ peterhoeg ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/renoise/default.nix b/nixpkgs/pkgs/applications/audio/renoise/default.nix
new file mode 100644
index 000000000000..1cbd5b3afa28
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/renoise/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, fetchurl, libX11, libXext, libXcursor, libXrandr, libjack2, alsaLib
+, mpg123, releasePath ? null }:
+
+with stdenv.lib;
+
+# To use the full release version:
+# 1) Sign into https://backstage.renoise.com and download the release version to some stable location.
+# 2) Override the releasePath attribute to point to the location of the newly downloaded bundle.
+# Note: Renoise creates an individual build for each license which screws somewhat with the
+# use of functions like requireFile as the hash will be different for every user.
+let
+  urlVersion = replaceStrings [ "." ] [ "_" ];
+in
+
+stdenv.mkDerivation rec {
+  pname = "renoise";
+  version = "3.2.1";
+
+  src =
+    if stdenv.hostPlatform.system == "x86_64-linux" then
+        if releasePath == null then
+		    fetchurl {
+		      urls = [
+		          "https://files.renoise.com/demo/Renoise_${urlVersion version}_Demo_Linux.tar.gz"
+		          "https://web.archive.org/web/https://files.renoise.com/demo/Renoise_${urlVersion version}_Demo_Linux.tar.gz"
+		      ];
+		      sha256 = "0dhcidgnjzd4abw0xw1waj9mazp03nbvjcr2xx09l8gnfrkvny46";
+		    }
+        else
+        	releasePath
+    else throw "Platform is not supported by Renoise";
+
+  buildInputs = [ alsaLib libjack2 libX11 libXcursor libXext libXrandr ];
+
+  installPhase = ''
+    cp -r Resources $out
+
+    mkdir -p $out/lib/
+
+    mv $out/AudioPluginServer* $out/lib/
+
+    cp renoise $out/renoise
+
+    for path in ${toString buildInputs}; do
+      ln -s $path/lib/*.so* $out/lib/
+    done
+
+    ln -s ${stdenv.cc.cc.lib}/lib/libstdc++.so.6 $out/lib/
+
+    mkdir $out/bin
+    ln -s $out/renoise $out/bin/renoise
+  '';
+
+  postFixup = ''
+    patchelf \
+      --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+      --set-rpath ${mpg123}/lib:$out/lib \
+      $out/renoise
+  '';
+
+  meta = {
+    description = "Modern tracker-based DAW";
+    homepage = "https://www.renoise.com/";
+    license = licenses.unfree;
+    maintainers = [];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/rhvoice/default.nix b/nixpkgs/pkgs/applications/audio/rhvoice/default.nix
new file mode 100644
index 000000000000..7a0a8a59a084
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/rhvoice/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, lib, pkgconfig, fetchFromGitHub, scons
+, python, glibmm, libpulseaudio, libao }:
+
+let
+  version = "unstable-2018-02-10";
+in stdenv.mkDerivation {
+  pname = "rhvoice";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "Olga-Yakovleva";
+    repo = "RHVoice";
+    rev = "7a25a881b0465e47a12d8029b56f3b71a1d02312";
+    sha256 = "1gkrlmv7msh9qlm0gkjqpl9gswghpclfdwszr1p85v8vk6m63v0b";
+  };
+
+  nativeBuildInputs = [
+    scons.py2 pkgconfig
+  ];
+
+  buildInputs = [
+    python glibmm libpulseaudio libao
+  ];
+
+  # SConstruct patch
+  #     Scons creates an independent environment that assumes standard POSIX paths.
+  #     The patch is needed to push the nix environment.
+  #     - PATH
+  #     - PKG_CONFIG_PATH, to find available (sound) libraries
+  #     - RPATH, to link to the newly built libraries
+
+  patches = [ ./honor_nix_environment.patch ];
+
+  meta = {
+    description = "A free and open source speech synthesizer for Russian language and others";
+    homepage = "https://github.com/Olga-Yakovleva/RHVoice/wiki";
+    license = lib.licenses.gpl3;
+    maintainers = with lib.maintainers; [ berce ];
+    platforms = with lib.platforms; all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/rhvoice/honor_nix_environment.patch b/nixpkgs/pkgs/applications/audio/rhvoice/honor_nix_environment.patch
new file mode 100644
index 000000000000..ed180c92debc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/rhvoice/honor_nix_environment.patch
@@ -0,0 +1,14 @@
+diff --git a/SConstruct b/SConstruct
+index 2421399..ba39254 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -147,6 +147,9 @@ def create_base_env(vars):
+     env_args["package_name"]="RHVoice"
+     env_args["CPPDEFINES"]=[("RHVOICE","1")]
+     env=Environment(**env_args)
++    env.PrependENVPath("PATH", os.environ["PATH"])
++    env["ENV"]["PKG_CONFIG_PATH"]=os.environ["PKG_CONFIG_PATH"]
++    env["RPATH"]=env["libdir"]
+     env["package_version"]=get_version(env["release"])
+     env.Append(CPPDEFINES=("PACKAGE",env.subst(r'\"$package_name\"')))
+     env.Append(CPPDEFINES=("VERSION",env.subst(r'\"$package_version\"')))
diff --git a/nixpkgs/pkgs/applications/audio/rhythmbox/default.nix b/nixpkgs/pkgs/applications/audio/rhythmbox/default.nix
new file mode 100644
index 000000000000..79560451e540
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/rhythmbox/default.nix
@@ -0,0 +1,67 @@
+{ stdenv, fetchurl, pkgconfig
+, python3
+, perl
+, perlPackages
+, gtk3
+, intltool
+, libpeas
+, libsoup
+, gnome3
+, totem-pl-parser
+, tdb
+, json-glib
+, itstool
+, wrapGAppsHook
+, gst_all_1
+, gst_plugins ? with gst_all_1; [ gst-plugins-good gst-plugins-ugly ]
+}:
+let
+  pname = "rhythmbox";
+  version = "3.4.4";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
+    sha256 = "142xcvw4l19jyr5i72nbnrihs953pvrrzcbijjn9dxmxszbv03pf";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    intltool perl perlPackages.XMLParser
+    itstool
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    python3
+    libsoup
+    tdb
+    json-glib
+
+    gtk3
+    libpeas
+    totem-pl-parser
+    gnome3.adwaita-icon-theme
+
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base
+  ] ++ gst_plugins;
+
+  enableParallelBuilding = true;
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      versionPolicy = "none";
+    };
+  };
+
+  meta = with stdenv.lib; {
+    homepage = "https://wiki.gnome.org/Apps/Rhythmbox";
+    description = "A music playing application for GNOME";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.rasendubi ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/rkrlv2/default.nix b/nixpkgs/pkgs/applications/audio/rkrlv2/default.nix
new file mode 100644
index 000000000000..59979c410838
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/rkrlv2/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub,
+automake, pkgconfig, lv2, fftw, cmake, xorg, libjack2, libsamplerate, libsndfile
+}:
+
+stdenv.mkDerivation rec {
+  repo = "rkrlv2";
+  name = "${repo}-b2.0";
+
+  src = fetchFromGitHub {
+    owner = "ssj71";
+    inherit repo;
+    rev = "beta_2";
+    sha256 = "128jcilbrd1l65c01w2bazsb21x78mng0jjkhi3x9crf1n9qbh2m";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = with xorg; [ automake lv2 fftw cmake libXpm libjack2 libsamplerate libsndfile libXft ];
+
+  meta = {
+    description = "Rakarrak effects ported to LV2";
+    homepage = "https://github.com/ssj71/rkrlv2";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.joelmo ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/rofi-mpd/default.nix b/nixpkgs/pkgs/applications/audio/rofi-mpd/default.nix
new file mode 100644
index 000000000000..8f9819bd913b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/rofi-mpd/default.nix
@@ -0,0 +1,26 @@
+{ lib, python3Packages, fetchFromGitHub }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "rofi-mpd";
+  version = "2.2.1";
+
+  src = fetchFromGitHub {
+    owner = "JakeStanger";
+    repo = "Rofi_MPD";
+    rev = "v${version}";
+    sha256 = "0jabyn6gqh8ychn2a06xws3avz0lqdnx3qvqkavfd2xr6sp2q7lg";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ mutagen mpd2 toml appdirs ];
+
+  # upstream doesn't contain a test suite
+  doCheck = false;
+
+  meta = with lib; {
+    description = "A rofi menu for interacting with MPD written in Python";
+    homepage = "https://github.com/JakeStanger/Rofi_MPD";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jakestanger ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/rosegarden/default.nix b/nixpkgs/pkgs/applications/audio/rosegarden/default.nix
new file mode 100644
index 000000000000..921c8fff67a1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/rosegarden/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl, cmake, makedepend, perl, pkgconfig, qttools, wrapQtAppsHook
+, dssi, fftwSinglePrec, ladspaH, ladspaPlugins, libjack2, alsaLib
+, liblo, libsamplerate, libsndfile, lirc ? null, lrdf, qtbase }:
+
+stdenv.mkDerivation (rec {
+  version = "19.12";
+  pname = "rosegarden";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/rosegarden/${pname}-${version}.tar.bz2";
+    sha256 = "1qcaxc6hdzva7kwxxhgl95437fagjbxzv4mihsgpr7y9qk08ppw1";
+  };
+
+  patchPhase = ''
+    substituteInPlace src/CMakeLists.txt --replace svnheader svnversion
+  '';
+
+  nativeBuildInputs =
+    [ cmake makedepend perl pkgconfig qttools wrapQtAppsHook ];
+
+  buildInputs = [
+    dssi
+    fftwSinglePrec
+    ladspaH
+    ladspaPlugins
+    libjack2
+    liblo
+    libsamplerate
+    libsndfile
+    lirc
+    lrdf
+    qtbase
+    alsaLib
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.rosegardenmusic.com/";
+    description = "Music composition and editing environment";
+    longDescription = ''
+      Rosegarden is a music composition and editing environment based around
+      a MIDI sequencer that features a rich understanding of music notation
+      and includes basic support for digital audio.
+
+      Rosegarden is an easy-to-learn, attractive application that runs on Linux,
+      ideal for composers, musicians, music students, and small studio or home
+      recording environments.
+    '';
+    maintainers = with maintainers; [ lebastr ];
+    license = licenses.lgpl2Plus;
+    platforms = platforms.linux;
+  };
+})
diff --git a/nixpkgs/pkgs/applications/audio/rubyripper/default.nix b/nixpkgs/pkgs/applications/audio/rubyripper/default.nix
new file mode 100644
index 000000000000..eb6de8431803
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/rubyripper/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, ruby, cdparanoia, makeWrapper }:
+stdenv.mkDerivation rec {
+  version = "0.6.2";
+  pname = "rubyripper";
+  src = fetchurl {
+    url = "https://rubyripper.googlecode.com/files/rubyripper-${version}.tar.bz2";
+    sha256 = "1fwyk3y0f45l2vi3a481qd7drsy82ccqdb8g2flakv58m45q0yl1";
+  };
+
+  preConfigure = "patchShebangs .";
+
+  configureFlags = [ "--enable-cli" ];
+  buildInputs = [ ruby cdparanoia makeWrapper ];
+  postInstall = ''
+    wrapProgram "$out/bin/rrip_cli" \
+      --prefix PATH : "${ruby}/bin" \
+      --prefix PATH : "${cdparanoia}/bin"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "High quality CD audio ripper";
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/samplv1/default.nix b/nixpkgs/pkgs/applications/audio/samplv1/default.nix
new file mode 100644
index 000000000000..86f8f666d80d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/samplv1/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, pkgconfig, libjack2, alsaLib, liblo, libsndfile, lv2, qt5 }:
+
+stdenv.mkDerivation rec {
+  pname = "samplv1";
+  version = "0.9.13";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/samplv1/${pname}-${version}.tar.gz";
+    sha256 = "0clsp6s5qfnh0xaxbd35vq2ppi72q9dfayrzlgl73800a8p7gh9m";
+  };
+
+  buildInputs = [ libjack2 alsaLib liblo libsndfile lv2 qt5.qtbase qt5.qttools];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = with stdenv.lib; {
+    description = "An old-school all-digital polyphonic sampler synthesizer with stereo fx";
+    homepage = "http://samplv1.sourceforge.net/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.goibhniu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/sayonara/default.nix b/nixpkgs/pkgs/applications/audio/sayonara/default.nix
new file mode 100644
index 000000000000..c4258174500f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sayonara/default.nix
@@ -0,0 +1,82 @@
+{ mkDerivation
+, cmake
+, fetchgit
+, gst_all_1
+, lib
+, libpulseaudio
+, ninja
+, pcre
+, pkgconfig
+, qtbase
+, qttools
+, taglib
+, zlib
+}:
+
+mkDerivation rec {
+  pname = "sayonara-player";
+  version = "1.5.1-stable5";
+
+  src = fetchgit {
+    url = "https://git.sayonara-player.com/sayonara.git";
+    rev = version;
+    sha256 = "13l7r3gaszrkyf4z8rdijfzxvcnilax4ki2mcm30wqk8d4g4qdzj";
+  };
+
+  # all this can go with version 1.5.2
+  postPatch = ''
+    # if we don't delete this, sayonara will look here instead of the provided taglib
+    rm -r src/3rdParty/taglib
+
+    for f in \
+      src/DBus/DBusNotifications.cpp \
+      src/Gui/Resources/Icons/CMakeLists.txt \
+      src/Utils/Utils.cpp \
+      test/Util/FileHelperTest.cpp \
+      ; do
+
+      substituteInPlace $f --replace /usr $out
+    done
+
+    substituteInPlace src/Components/Shutdown/Shutdown.cpp \
+      --replace /usr/bin/systemctl systemctl
+  '';
+
+  nativeBuildInputs = [ cmake ninja pkgconfig qttools ];
+
+  buildInputs = [
+    libpulseaudio
+    pcre
+    qtbase
+    taglib
+    zlib
+  ]
+  ++ (with gst_all_1; [
+    gstreamer
+    gst-plugins-base
+    gst-plugins-good
+    gst-plugins-bad
+    gst-plugins-ugly
+  ]);
+
+  # we carry the patched taglib 1.11.1 that doesn't break ogg but sayonara just
+  # checks for the version
+  cmakeFlags = [
+    "-DWITH_SYSTEM_TAGLIB=ON"
+  ];
+
+  # gstreamer cannot otherwise be found
+  NIX_CFLAGS_COMPILE = "-I${gst_all_1.gst-plugins-base.dev}/include/gstreamer-1.0";
+
+  postInstall = ''
+    qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
+  '';
+
+  meta = with lib; {
+    description = "Sayonara music player";
+    homepage = "https://sayonara-player.com/";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ deepfire ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/schismtracker/default.nix b/nixpkgs/pkgs/applications/audio/schismtracker/default.nix
new file mode 100644
index 000000000000..7f6762958a34
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/schismtracker/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub
+, autoreconfHook
+, alsaLib, python, SDL }:
+
+stdenv.mkDerivation rec {
+  pname = "schismtracker";
+  version = "20200412";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = version;
+    sha256 = "1n6cgjiw3vkv7a1h1nki5syyjxjb6icknr9s049w2jrag10bxssn";
+  };
+
+  configureFlags = [ "--enable-dependency-tracking" ];
+
+  nativeBuildInputs = [ autoreconfHook python ];
+
+  buildInputs = [ SDL ] ++ stdenv.lib.optional stdenv.isLinux alsaLib;
+
+  meta = with stdenv.lib; {
+    description = "Music tracker application, free reimplementation of Impulse Tracker";
+    homepage = "http://schismtracker.org/";
+    license = licenses.gpl2;
+    platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
+    maintainers = with maintainers; [ ftrvxmtrx ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/seq24/default.nix b/nixpkgs/pkgs/applications/audio/seq24/default.nix
new file mode 100644
index 000000000000..c8347d70b1d9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/seq24/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, alsaLib, gtkmm2, libjack2, pkgconfig }:
+
+stdenv.mkDerivation  rec {
+  pname = "seq24";
+  version = "0.9.3";
+
+  src = fetchurl {
+    url = "https://launchpad.net/seq24/trunk/${version}/+download/${pname}-${version}.tar.gz";
+    sha256 = "1qpyb7355s21sgy6gibkybxpzx4ikha57a8w644lca6qy9mhcwi3";
+  };
+
+  patches = [ ./mutex_no_nameclash.patch ];
+
+  buildInputs = [ alsaLib gtkmm2 libjack2 ];
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = with stdenv.lib; {
+    description = "Minimal loop based midi sequencer";
+    homepage = "http://www.filter24.org/seq24";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/seq24/mutex_no_nameclash.patch b/nixpkgs/pkgs/applications/audio/seq24/mutex_no_nameclash.patch
new file mode 100644
index 000000000000..dd82b1b0e09f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/seq24/mutex_no_nameclash.patch
@@ -0,0 +1,58 @@
+--- a/src/mutex.cpp
++++ b/src/mutex.cpp
+@@ -20,23 +20,23 @@
+ 
+ #include "mutex.h"
+ 
+-const pthread_mutex_t mutex::recmutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
++const pthread_mutex_t mutex_no_nameclash::recmutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
+ const pthread_cond_t condition_var::cond  = PTHREAD_COND_INITIALIZER;
+ 
+-mutex::mutex( )
++mutex_no_nameclash::mutex_no_nameclash( )
+ {
+     m_mutex_lock = recmutex;
+ }
+ 
+ void
+-mutex::lock( )
++mutex_no_nameclash::lock( )
+ {
+     pthread_mutex_lock( &m_mutex_lock );
+ }
+ 
+ 
+ void
+-mutex::unlock( )
++mutex_no_nameclash::unlock( )
+ {
+     pthread_mutex_unlock( &m_mutex_lock );
+ }
+--- a/src/mutex.h
++++ b/src/mutex.h
+@@ -24,7 +24,7 @@
+ 
+ #include <pthread.h>
+ 
+-class mutex {
++class mutex_no_nameclash {
+ 
+ private:
+ 
+@@ -37,14 +37,14 @@
+ 
+ public:
+ 
+-    mutex();
++    mutex_no_nameclash();
+ 
+     void lock();
+     void unlock();
+ 
+ };
+ 
+-class condition_var : public mutex {
++class condition_var : public mutex_no_nameclash {
+ 
+ private:
+ 
diff --git a/nixpkgs/pkgs/applications/audio/setbfree/default.nix b/nixpkgs/pkgs/applications/audio/setbfree/default.nix
new file mode 100644
index 000000000000..a7500f8c6a5e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/setbfree/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchzip, alsaLib, freetype, ftgl, libjack2, libX11, lv2
+, libGLU, libGL, pkgconfig, ttf_bitstream_vera
+}:
+
+stdenv.mkDerivation  rec {
+  pname = "setbfree";
+  version = "0.8.11";
+
+  src = fetchzip {
+    url = "https://github.com/pantherb/setBfree/archive/v${version}.tar.gz";
+    sha256 = "0c2wc8nkrzsy0yic4y7hjz320m3d20r8152j9dk8nsnmgjmyr2ir";
+  };
+
+  postPatch = ''
+    sed 's#/usr/local#$(out)#g' -i common.mak
+    sed 's#/usr/share/fonts/truetype/ttf-bitstream-vera#${ttf_bitstream_vera}/share/fonts/truetype#g' \
+      -i b_synth/Makefile
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    alsaLib freetype ftgl libjack2 libX11 lv2 libGLU libGL
+    ttf_bitstream_vera
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A DSP tonewheel organ emulator";
+    homepage = "http://setbfree.org";
+    license = licenses.gpl2;
+    platforms = [ "x86_64-linux" "i686-linux" ]; # fails on ARM and Darwin
+    maintainers = [ maintainers.goibhniu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/sfizz/default.nix b/nixpkgs/pkgs/applications/audio/sfizz/default.nix
new file mode 100644
index 000000000000..acec8c54e53c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sfizz/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub , cmake, libjack2, libsndfile, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "sfizz";
+  version = "0.3.2";
+
+  src = fetchFromGitHub {
+    owner = "sfztools";
+    repo = pname;
+    rev = version;
+    sha256 = "1px22x9lb6wyqfbv1jg1sbl1rsnwrzs8sm4dnas1w4ifchiv3ymd";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [ libjack2 libsndfile ];
+
+  cmakeFlags = [
+    "-DCMAKE_BUILD_TYPE=Release"
+    "-DSFIZZ_TESTS=ON"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/sfztools/sfizz";
+    description = "SFZ jack client and LV2 plugin";
+    license = licenses.bsd2;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.all;
+    badPlatforms = platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/sfxr-qt/default.nix b/nixpkgs/pkgs/applications/audio/sfxr-qt/default.nix
new file mode 100644
index 000000000000..165f8446c763
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sfxr-qt/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, qtbase
+, qtquickcontrols2
+, SDL
+, python3
+}:
+
+mkDerivation rec {
+  pname = "sfxr-qt";
+  version = "1.3.0";
+  src = fetchFromGitHub {
+    owner = "agateau";
+    repo = "sfxr-qt";
+    rev = version;
+    sha256 = "15yjgjl1c5k816mnpc09104zq0ack2a3mjsxmhcik7cmjkfiipr5";
+    fetchSubmodules = true;
+  };
+  nativeBuildInputs = [
+    cmake
+    (python3.withPackages (pp: with pp; [ pyyaml jinja2 setuptools ]))
+  ];
+  buildInputs = [
+    qtbase
+    qtquickcontrols2
+    SDL
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/agateau/sfxr-qt";
+    description = "A sound effect generator, QtQuick port of sfxr";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ fgaz ];
+    platforms = platforms.linux;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/audio/sfxr/default.nix b/nixpkgs/pkgs/applications/audio/sfxr/default.nix
new file mode 100644
index 000000000000..fbd0f3c5def3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sfxr/default.nix
@@ -0,0 +1,56 @@
+{ stdenv
+, fetchurl
+, pkgconfig
+, desktop-file-utils
+, SDL
+, gtk3
+, gsettings-desktop-schemas
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "sfxr";
+  version = "1.2.1";
+
+  src = fetchurl {
+    url = "http://www.drpetter.se/files/sfxr-sdl-${version}.tar.gz";
+    sha256 = "0dfqgid6wzzyyhc0ha94prxax59wx79hqr25r6if6by9cj4vx4ya";
+  };
+
+  postPatch = ''
+    substituteInPlace Makefile --replace "usr/" ""
+    substituteInPlace sdlkit.h --replace \
+      "/usr/share/sfxr/sfxr.bmp" \
+      "$out/share/sfxr/sfxr.bmp"
+    substituteInPlace main.cpp \
+      --replace \
+      "/usr/share/sfxr/font.tga" \
+      "$out/share/sfxr/font.tga" \
+      --replace \
+      "/usr/share/sfxr/ld48.tga" \
+      "$out/share/sfxr/ld48.tga"
+  '';
+
+  nativeBuildInputs = [
+    pkgconfig
+    desktop-file-utils
+  ];
+
+  buildInputs = [
+    SDL
+    gtk3
+    gsettings-desktop-schemas
+    wrapGAppsHook
+  ];
+
+  makeFlags = [ "DESTDIR=$(out)" ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.drpetter.se/project_sfxr.html";
+    description = "A videogame sound effect generator";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fgaz ];
+    platforms = platforms.unix;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/audio/shntool/default.nix b/nixpkgs/pkgs/applications/audio/shntool/default.nix
new file mode 100644
index 000000000000..de18f3c2ce8d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/shntool/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, flac }:
+
+stdenv.mkDerivation {
+  version = "3.0.10";
+  pname = "shntool";
+
+  src = fetchurl {
+    url = "http://www.etree.org/shnutils/shntool/dist/src/shntool-3.0.10.tar.gz";
+    sha256 = "00i1rbjaaws3drkhiczaign3lnbhr161b7rbnjr8z83w8yn2wc3l";
+  };
+
+  buildInputs = [ flac ];
+
+  meta = {
+    description = "Multi-purpose WAVE data processing and reporting utility";
+    homepage = "http://www.etree.org/shnutils/shntool/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.all;
+    maintainers = with stdenv.lib.maintainers; [ jcumming ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/shortwave/default.nix b/nixpkgs/pkgs/applications/audio/shortwave/default.nix
new file mode 100644
index 000000000000..d26d314cd3e4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/shortwave/default.nix
@@ -0,0 +1,87 @@
+{ stdenv
+, fetchFromGitLab
+, cargo
+, dbus
+, desktop-file-utils
+, gdk-pixbuf
+, gettext
+, glib
+, gst_all_1
+, gtk3
+, libhandy
+, meson
+, ninja
+, openssl
+, pkg-config
+, python3
+, rust
+, rustc
+, rustPlatform
+, sqlite
+, wrapGAppsHook
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "shortwave";
+  version = "1.0.1";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "World";
+    repo = "Shortwave";
+    rev = version;
+    sha256 = "13lhlh75vw02vkcknl4nvy0yvpdf0qx811mmyja8bzs4rj1j9kr8";
+  };
+
+  cargoSha256 = "0aph5z54a6i5p8ga5ghhx1c9hjc8zdw5pkv9inmanca0bq3hkdlh";
+
+  nativeBuildInputs = [
+    cargo
+    desktop-file-utils
+    gettext
+    glib # for glib-compile-schemas
+    meson
+    ninja
+    pkg-config
+    python3
+    rustc
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    dbus
+    gdk-pixbuf
+    glib
+    gtk3
+    libhandy
+    openssl
+    sqlite
+  ] ++ (with gst_all_1; [
+    gstreamer
+    gst-plugins-base
+    gst-plugins-good
+    gst-plugins-bad
+  ]);
+
+  # Don't use buildRustPackage phases, only use it for rust deps setup
+  configurePhase = null;
+  buildPhase = null;
+  checkPhase = null;
+  installPhase = null;
+
+  postPatch = ''
+    patchShebangs build-aux/meson/postinstall.py
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://gitlab.gnome.org/World/Shortwave";
+    description = "Find and listen to internet radio stations";
+    longDescription = ''
+      Shortwave is a streaming audio player designed for the GNOME
+      desktop. It is the successor to the older Gradio application.
+    '';
+    maintainers = with maintainers; [ lasandell ];
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/sidplayfp/default.nix b/nixpkgs/pkgs/applications/audio/sidplayfp/default.nix
new file mode 100644
index 000000000000..b0a50bbf128e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sidplayfp/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pkgconfig, libsidplayfp }:
+
+stdenv.mkDerivation rec {
+  version = "1.4.4";
+  pname = "sidplayfp";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/sidplay-residfp/sidplayfp/1.4/${pname}-${version}.tar.gz";
+    sha256 = "0arsrg3f0fsinal22qjmj3r6500bcbgqnx26fsz049ldl716kz1m";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libsidplayfp ];
+
+  meta = with stdenv.lib; {
+    description = "A SID player using libsidplayfp";
+    homepage = "https://sourceforge.net/projects/sidplay-residfp/";
+    license = with licenses; [ gpl2Plus ];
+    maintainers = with maintainers; [ dezgeg ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/sisco.lv2/default.nix b/nixpkgs/pkgs/applications/audio/sisco.lv2/default.nix
new file mode 100644
index 000000000000..07215fc42f87
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sisco.lv2/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitHub, lv2, pkgconfig, libGLU, libGL, cairo, pango, libjack2 }:
+
+let
+  name = "sisco.lv2-${version}";
+  version = "0.7.0";
+
+  robtkVersion = "80a2585253a861c81f0bfb7e4579c75f5c73af89";
+  robtkName = "robtk-${robtkVersion}";
+
+  src = fetchFromGitHub {
+    owner = "x42";
+    repo = "sisco.lv2";
+    rev = "v${version}";
+    sha256 = "1r6g29yqbdqgkh01x6d3nvmvc58rk2dp94fd0qyyizq37a1qplj1";
+  };
+
+  robtkSrc = fetchFromGitHub {
+    owner = "x42";
+    repo = "robtk";
+    rev = robtkVersion;
+    sha256 = "0gk16nrvnrffqqw0yd015kja9wkgbzvb648bl1pagriabhznhfxl";
+  };
+in
+stdenv.mkDerivation rec {
+  inherit name;
+
+  srcs = [ src robtkSrc ];
+  sourceRoot = src.name;
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ lv2 pango cairo libjack2 libGLU libGL ];
+
+  postUnpack = "chmod u+w -R ${robtkName}-src; mv ${robtkName}-src/* ${sourceRoot}/robtk";
+  sisco_VERSION = version;
+  preConfigure = "makeFlagsArray=(PREFIX=$out)";
+
+  meta = with stdenv.lib; {
+    description = "Simple audio oscilloscope with variable time scale, triggering, cursors and numeric readout in LV2 plugin format";
+    homepage = "http://x42.github.io/sisco.lv2/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.e-user ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/snapcast/default.nix b/nixpkgs/pkgs/applications/audio/snapcast/default.nix
new file mode 100644
index 000000000000..531a633f05da
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/snapcast/default.nix
@@ -0,0 +1,66 @@
+{ stdenv, lib, fetchFromGitHub, cmake, pkgconfig
+, alsaLib, asio, avahi, flac, libogg, libvorbis }:
+
+let
+
+  dependency = { name, version, sha256 }:
+  stdenv.mkDerivation {
+    name = "${name}-${version}";
+
+    src = fetchFromGitHub {
+      owner = "badaix";
+      repo  = name;
+      rev   = "v${version}";
+      inherit sha256;
+    };
+
+    nativeBuildInputs = [ cmake ];
+  };
+
+  aixlog = dependency {
+    name    = "aixlog";
+    version = "1.2.1";
+    sha256  = "1rh4jib5g41b85bqrxkl5g74hk5ryf187y9fw0am76g59xlymfpr";
+  };
+
+  popl = dependency {
+    name    = "popl";
+    version = "1.2.0";
+    sha256  = "1z6z7fwffs3d9h56mc2m24d5gp4fc5bi8836zyfb276s6fjyfcai";
+  };
+
+in
+
+stdenv.mkDerivation rec {
+  pname = "snapcast";
+  version = "0.15.0";
+
+  src = fetchFromGitHub {
+    owner  = "badaix";
+    repo   = "snapcast";
+    rev    = "v${version}";
+    sha256 = "11rnpy6w3wm240qgmkp74k5w8wh5b7hzfx05qrnh6l7ng7m25ky2";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  # snapcast also supports building against tremor but as we have libogg, that's
+  # not needed
+  buildInputs = [
+    alsaLib asio avahi flac libogg libvorbis
+    aixlog popl
+  ];
+
+  # Upstream systemd unit files are pretty awful, so we provide our own in a
+  # NixOS module. It might make sense to get that upstreamed...
+  postInstall = ''
+    install -d $out/share/doc/snapcast
+    cp -r ../doc/* ../*.md $out/share/doc/snapcast
+  '';
+
+  meta = with lib; {
+    description = "Synchronous multi-room audio player";
+    homepage = "https://github.com/badaix/snapcast";
+    maintainers = with maintainers; [ fpletz ];
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/snd/default.nix b/nixpkgs/pkgs/applications/audio/snd/default.nix
new file mode 100644
index 000000000000..9bc8fcb66946
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/snd/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, pkgconfig
+, gtk2, alsaLib
+, fftw, gsl
+}:
+
+stdenv.mkDerivation rec {
+  name = "snd-20.2";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/snd/${name}.tar.gz";
+    sha256 = "0ip4sfyxqlbghlggipmvvqjqs1a7qas0zcmzw8d1nwg6krjkfj0r";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [
+    gtk2 alsaLib
+    fftw gsl
+  ];
+
+  meta = {
+    description = "Sound editor";
+    homepage = "http://ccrma.stanford.edu/software/snd";
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.free;
+    maintainers = with stdenv.lib.maintainers; [ ];
+  };
+
+
+}
diff --git a/nixpkgs/pkgs/applications/audio/sndpeek/default.nix b/nixpkgs/pkgs/applications/audio/sndpeek/default.nix
new file mode 100644
index 000000000000..d239fda11aee
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sndpeek/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchurl, libsndfile, freeglut, alsaLib, mesa, libGLU, libX11, libXmu
+, libXext, libXi }:
+
+stdenv.mkDerivation rec {
+  pname = "sndpeek";
+  version = "1.4";
+
+  src = fetchurl {
+    url = "https://soundlab.cs.princeton.edu/software/sndpeek/files/sndpeek-${version}.tgz";
+    sha256 = "2d86cf74854fa00dcdc05a35dd92bc4cf6115e87102b17023be5cba9ead8eedf";
+  };
+  sourceRoot = "sndpeek-${version}/src/sndpeek";
+
+  # this patch adds -lpthread to the list of libraries, without it a
+  # symbol-not-found-error is thrown
+  patches = [ ./pthread.patch ];
+
+  buildInputs = [
+    freeglut
+    alsaLib
+    mesa
+    libGLU
+    libsndfile
+    libX11
+    libXmu
+    libXext
+    libXi
+  ];
+  buildFlags = [ "linux-alsa" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mv sndpeek $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Real-time 3D animated audio display/playback";
+    longDescription = ''
+       sndpeek is just what it sounds (and looks) like:
+         * real-time 3D animated display/playback
+         * can use mic-input or wav/aiff/snd/raw/mat file (with playback)
+         * time-domain waveform
+         * FFT magnitude spectrum
+         * 3D waterfall plot
+         * lissajous! (interchannel correlation)
+         * rotatable and scalable display
+         * freeze frame! (for didactic purposes)
+         * real-time spectral feature extraction (centroid, rms, flux, rolloff)
+         * available on MacOS X, Linux, and Windows under GPL
+         * part of the sndtools distribution.
+    '';
+    homepage = "https://soundlab.cs.princeton.edu/software/sndpeek/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.laikq ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/sndpeek/pthread.patch b/nixpkgs/pkgs/applications/audio/sndpeek/pthread.patch
new file mode 100644
index 000000000000..b2f1d37da6be
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sndpeek/pthread.patch
@@ -0,0 +1,13 @@
+diff --git a/makefile.alsa b/makefile.alsa
+index 34fb848..cdaeaec 100644
+--- a/makefile.alsa
++++ b/makefile.alsa
+@@ -4,7 +4,7 @@ CPP=g++
+ INCLUDES=-I../marsyas/
+ MARSYAS_DIR=../marsyas/
+ CFLAGS=-D__LINUX_ALSA__ -D__LITTLE_ENDIAN__ $(INCLUDES) -O3 -c
+-LIBS=-L/usr/X11R6/lib -lglut -lGL -lGLU -lasound -lXmu -lX11 -lXext -lXi -lm -lsndfile
++LIBS=-L/usr/X11R6/lib -lglut -lGL -lGLU -lasound -lXmu -lX11 -lXext -lXi -lm -lsndfile -lpthread
+ 
+ OBJS=chuck_fft.o RtAudio.o Thread.o sndpeek.o Stk.o \
+ 	Centroid.o DownSampler.o Flux.o LPC.o MFCC.o RMS.o Rolloff.o \
diff --git a/nixpkgs/pkgs/applications/audio/sonata/default.nix b/nixpkgs/pkgs/applications/audio/sonata/default.nix
new file mode 100644
index 000000000000..68eefadf4110
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sonata/default.nix
@@ -0,0 +1,69 @@
+{ stdenv, fetchFromGitHub, pkgconfig, gettext, intltool, wrapGAppsHook
+, python3Packages, gnome3, gtk3, gsettings-desktop-schemas, gobject-introspection }:
+
+let
+  inherit (python3Packages) buildPythonApplication isPy3k dbus-python pygobject3 mpd2 setuptools;
+in buildPythonApplication rec {
+  pname = "sonata";
+  version = "1.7b1";
+
+  src = fetchFromGitHub {
+    owner = "multani";
+    repo = "sonata";
+    rev = "v${version}";
+    sha256 = "1npbxlrg6k154qybfd250nq2p96kxdsdkj9wwnp93gljnii3g8wh";
+  };
+
+  disabled = !isPy3k;
+
+  nativeBuildInputs = [ pkgconfig gettext ];
+  buildInputs = [
+    intltool wrapGAppsHook
+    gnome3.adwaita-icon-theme
+    gsettings-desktop-schemas
+  ];
+
+  postPatch = ''
+    # Remove "Local MPD" tab which is not suitable for NixOS.
+    sed -i '/localmpd/d' sonata/consts.py
+  '';
+
+  propagatedBuildInputs = [
+    gobject-introspection gtk3 pygobject3 setuptools
+  ];
+
+  # The optional tagpy dependency (for editing metadata) is not yet
+  # included because it's difficult to build.
+  pythonPath = [ dbus-python pygobject3 mpd2 ];
+
+  meta = {
+    description = "An elegant client for the Music Player Daemon";
+    longDescription = ''
+      Sonata is an elegant client for the Music Player Daemon.
+
+      Written in Python and using the GTK 3 widget set, its features
+      include:
+
+       - Expanded and collapsed views
+       - Automatic remote and local album art
+       - Library browsing by folders, or by genre/artist/album
+       - User-configurable columns
+       - Automatic fetching of lyrics
+       - Playlist and stream support
+       - Support for editing song tags (not in NixOS version)
+       - Drag and drop to copy files
+       - Popup notification
+       - Library and playlist searching, filter as you type
+       - Audioscrobbler (last.fm) 1.2 support
+       - Multiple MPD profiles
+       - Keyboard friendly
+       - Support for multimedia keys
+       - Commandline control
+       - Available in 24 languages
+    '';
+    homepage = "https://www.nongnu.org/sonata/";
+    license = stdenv.lib.licenses.gpl3;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.rvl ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/sonic-lineup/default.nix b/nixpkgs/pkgs/applications/audio/sonic-lineup/default.nix
new file mode 100644
index 000000000000..b837eb07cf1b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sonic-lineup/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, alsaLib, boost, bzip2, fftw, fftwFloat, libfishsound
+, libid3tag, liblo, libmad, liboggz, libpulseaudio, libsamplerate
+, libsndfile, lrdf, opusfile, portaudio, rubberband, serd, sord, capnproto
+, wrapQtAppsHook, pkgconfig
+}:
+
+stdenv.mkDerivation rec {
+  pname = "sonic-lineup";
+  version = "1.0.1";
+
+  src = fetchurl {
+    url = "https://code.soundsoftware.ac.uk/attachments/download/2610/${pname}-${version}.tar.gz";
+    sha256 = "0w4v5zr81d8fh97y820r0vj1rrbl0kwgvhfkdnyl4hiabs97b1i7";
+  };
+
+  buildInputs =
+    [ alsaLib boost bzip2 fftw fftwFloat libfishsound libid3tag liblo
+      libmad liboggz libpulseaudio libsamplerate libsndfile lrdf opusfile
+      portaudio rubberband serd sord capnproto
+    ];
+
+  nativeBuildInputs = [ pkgconfig wrapQtAppsHook ];
+
+  enableParallelBuilding = true;
+
+  # comment out the tests
+  preConfigure = ''
+    sed -i 's/sub_test_svcore_/#sub_test_svcore_/' sonic-lineup.pro
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Comparative visualisation of related audio recordings";
+    homepage = "https://www.sonicvisualiser.org/sonic-lineup/";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.vandenoever ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/sonic-pi/default.nix b/nixpkgs/pkgs/applications/audio/sonic-pi/default.nix
new file mode 100644
index 000000000000..d80632a08f59
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sonic-pi/default.nix
@@ -0,0 +1,116 @@
+{ mkDerivation
+, lib
+, qtbase
+, fetchFromGitHub
+, fftwSinglePrec
+, ruby
+, aubio
+, cmake
+, pkgconfig
+, boost
+, bash
+, jack2Full
+, supercollider
+, qwt
+, osmid
+}:
+
+let
+
+  supercollider_single_prec = supercollider.override {  fftw = fftwSinglePrec; };
+
+in
+
+mkDerivation rec {
+  version = "3.2.2";
+  pname = "sonic-pi";
+
+  src = fetchFromGitHub {
+    owner = "samaaron";
+    repo = "sonic-pi";
+    rev = "v${version}";
+    sha256 = "1nlkpkpg9iz2hvf5pymvk6lqhpdpjbdrvr0hrnkc3ymj7llvf1cm";
+  };
+
+  buildInputs = [
+    bash
+    cmake
+    pkgconfig
+    qtbase
+    qwt
+    ruby
+    aubio
+    supercollider_single_prec
+    boost
+  ];
+
+  dontUseCmakeConfigure = true;
+
+  preConfigure = ''
+    patchShebangs .
+    substituteInPlace app/gui/qt/mainwindow.cpp \
+      --subst-var-by ruby "${ruby}/bin/ruby" \
+      --subst-var out
+  '';
+
+  buildPhase = ''
+    export SONIC_PI_HOME=$TMPDIR
+    export AUBIO_LIB=${aubio}/lib/libaubio.so
+    export OSMID_DIR=app/server/native/osmid
+
+    mkdir -p $OSMID_DIR
+    cp ${osmid}/bin/{m2o,o2m} $OSMID_DIR
+
+    pushd app/server/ruby/bin
+      ./compile-extensions.rb
+      ./i18n-tool.rb -t
+    popd
+
+    pushd app/gui/qt
+      cp -f utils/ruby_help.tmpl utils/ruby_help.h
+      ../../server/ruby/bin/qt-doc.rb -o utils/ruby_help.h
+
+      lrelease lang/*.ts
+
+      mkdir build
+      pushd build
+        cmake -G "Unix Makefiles" ..
+        make
+      popd
+    popd
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir $out
+    cp -r {bin,etc} $out/
+
+    # Copy server whole.
+    mkdir -p $out/app
+    cp -r app/server $out/app/
+
+    # Copy only necessary files for the gui app.
+    mkdir -p $out/app/gui/qt/build
+    cp -r app/gui/qt/{book,fonts,help,html,images,image_source,info,lang,theme} $out/app/gui/qt/
+    cp app/gui/qt/build/sonic-pi $out/app/gui/qt/build/sonic-pi
+
+    runHook postInstall
+  '';
+
+  # $out/bin/sonic-pi is a shell script, and wrapQtAppsHook doesn't wrap them.
+  dontWrapQtApps = true;
+  preFixup = ''
+    wrapQtApp "$out/bin/sonic-pi" \
+      --prefix PATH : ${ruby}/bin:${bash}/bin:${supercollider}/bin:${jack2Full}/bin \
+      --set AUBIO_LIB "${aubio}/lib/libaubio.so"
+  '';
+
+  meta = {
+    homepage = "https://sonic-pi.net/";
+    description = "Free live coding synth for everyone originally designed to support computing and music lessons within schools";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ Phlogistique kamilchm c0deaddict ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/sonic-visualiser/default.nix b/nixpkgs/pkgs/applications/audio/sonic-visualiser/default.nix
new file mode 100644
index 000000000000..e8b6a4d4313b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sonic-visualiser/default.nix
@@ -0,0 +1,56 @@
+# TODO add plugins having various licenses, see http://www.vamp-plugins.org/download.html
+
+{ stdenv, fetchurl, alsaLib, bzip2, fftw, libjack2, libX11, liblo
+, libmad, libogg, lrdf, librdf_raptor, librdf_rasqal, libsamplerate
+, libsndfile, pkgconfig, libpulseaudio, qtbase, qtsvg, redland
+, rubberband, serd, sord, vamp-plugin-sdk, fftwFloat
+, capnproto, liboggz, libfishsound, libid3tag, opusfile
+, wrapQtAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "sonic-visualiser";
+  version = "4.0.1";
+
+  src = fetchurl {
+    url = "https://code.soundsoftware.ac.uk/attachments/download/2607/${pname}-${version}.tar.gz";
+    sha256 = "14674adzp3chilymna236qyvci3b1zmi3wyz696wk7bcd3ndpsg6";
+  };
+
+  buildInputs =
+    [ libsndfile qtbase qtsvg fftw fftwFloat bzip2 lrdf rubberband
+      libsamplerate vamp-plugin-sdk alsaLib librdf_raptor librdf_rasqal redland
+      serd
+      sord
+      # optional
+      libjack2
+      # portaudio
+      libpulseaudio
+      libmad
+      libogg # ?
+      libfishsound
+      liblo
+      libX11
+      capnproto
+      liboggz
+      libid3tag
+      opusfile
+    ];
+
+  nativeBuildInputs = [ pkgconfig wrapQtAppsHook ];
+
+  enableParallelBuilding = true;
+
+  # comment out the tests
+  preConfigure = ''
+    sed -i 's/sub_test_svcore_/#sub_test_svcore_/' sonic-visualiser.pro
+  '';
+
+  meta = with stdenv.lib; {
+    description = "View and analyse contents of music audio files";
+    homepage = "https://www.sonicvisualiser.org/";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.goibhniu maintainers.marcweber ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/sooperlooper/default.nix b/nixpkgs/pkgs/applications/audio/sooperlooper/default.nix
new file mode 100644
index 000000000000..e7a43ad8a595
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sooperlooper/default.nix
@@ -0,0 +1,68 @@
+{ stdenv
+, fetchFromGitHub
+, autoreconfHook
+, pkgconfig
+, which
+, libtool
+, liblo
+, libxml2
+, libjack2
+, libsndfile
+, wxGTK30
+, libsigcxx
+, libsamplerate
+, rubberband
+, gettext
+, ncurses
+, alsaLib
+, fftw
+}:
+
+stdenv.mkDerivation rec {
+  pname = "sooperlooper";
+  version = "unstable-2019-09-30";
+
+  src = fetchFromGitHub {
+    owner = "essej";
+    repo = "sooperlooper";
+    rev = "4d1da14176e16b0f56b727bb1e6c2e8957515625";
+    sha256 = "1gsgqa7hdymzw2al1ymzv0f33y161dyhh3fmy88lpjwv3bfchamg";
+  };
+
+  autoreconfPhase = ''
+    patchShebangs ./autogen.sh
+    ./autogen.sh
+  '';
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig which libtool ];
+
+  buildInputs = [
+    liblo
+    libxml2
+    libjack2
+    libsndfile
+    wxGTK30
+    libsigcxx
+    libsamplerate
+    rubberband
+    gettext
+    ncurses
+    alsaLib
+    fftw
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A live looping sampler capable of immediate loop recording, overdubbing, multiplying, reversing and more";
+    longDescription = ''
+      It allows for multiple simultaneous multi-channel loops limited only by your computer's available memory.
+      The application is a standalone JACK client with an engine controllable via OSC and MIDI.
+      It also includes a GUI which communicates with the engine via OSC (even over a network) for user-friendly control on a desktop.
+      However, this kind of live performance looping tool is most effectively used via hardware (midi footpedals, etc)
+      and the engine can be run standalone on a computer without a monitor.
+    '';
+    homepage = "http://essej.net/sooperlooper/"; # https is broken
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/sorcer/default.nix b/nixpkgs/pkgs/applications/audio/sorcer/default.nix
new file mode 100644
index 000000000000..ad5f8fda1a99
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sorcer/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub , boost, cairomm, cmake, libsndfile, lv2, ntk, pkgconfig, python }:
+
+stdenv.mkDerivation rec {
+  pname = "sorcer";
+  version = "1.1.3";
+
+  src = fetchFromGitHub {
+    owner = "openAVproductions";
+    repo = "openAV-Sorcer";
+    rev = "release-${version}";
+    sha256 = "1x7pi77nal10717l02qpnhrx6d7w5nqrljkn9zx5w7gpb8fpb3vp";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ boost cairomm cmake libsndfile lv2 ntk python ];
+
+  postPatch = ''
+     # Fix build with lv2 1.18: https://github.com/brummer10/guitarix/commit/c0334c72
+     find . -type f -exec fgrep -q LV2UI_Descriptor {} \; \
+       -exec sed -i {} -e 's/const struct _\?LV2UI_Descriptor/const LV2UI_Descriptor/' \;
+   '';
+
+  installPhase = ''
+    make install
+    cp -a ../presets/* "$out/lib/lv2"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://openavproductions.com/sorcer/";
+    description = "A wavetable LV2 plugin synth, targeted at the electronic / dubstep genre";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/sound-juicer/default.nix b/nixpkgs/pkgs/applications/audio/sound-juicer/default.nix
new file mode 100644
index 000000000000..89653a59f437
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sound-juicer/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, pkgconfig, glib, gtk3, intltool, itstool, libxml2, brasero
+, libcanberra-gtk3, gnome3, gst_all_1, libmusicbrainz5, libdiscid, isocodes
+, gsettings-desktop-schemas, wrapGAppsHook }:
+
+let
+  pname = "sound-juicer";
+  version = "3.24.0";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
+    sha256 = "19qg4xv0f9rkq34lragkmhii1llxsa87llbl28i759b0ks4f6sny";
+  };
+
+  nativeBuildInputs = [ pkgconfig intltool itstool libxml2 wrapGAppsHook ];
+  buildInputs = [
+    glib gtk3 brasero libcanberra-gtk3 gnome3.adwaita-icon-theme
+    gsettings-desktop-schemas libmusicbrainz5 libdiscid isocodes
+    gst_all_1.gstreamer gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad
+    gst_all_1.gst-libav
+  ];
+
+  NIX_CFLAGS_COMPILE="-Wno-error=format-nonliteral";
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "A Gnome CD Ripper";
+    homepage = "https://wiki.gnome.org/Apps/SoundJuicer";
+    maintainers = [ maintainers.bdimcheff ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/soundkonverter/default.nix b/nixpkgs/pkgs/applications/audio/soundkonverter/default.nix
new file mode 100644
index 000000000000..df5806b50b9e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/soundkonverter/default.nix
@@ -0,0 +1,97 @@
+# currently needs to be installed into an environment and needs a `kbuildsycoca5` run afterwards for plugin discovery
+{
+  mkDerivation, fetchFromGitHub, lib, makeWrapper,
+  cmake, extra-cmake-modules, pkgconfig,
+  libkcddb, kconfig, kconfigwidgets, ki18n, kdelibs4support, kio, solid, kwidgetsaddons, kxmlgui,
+  qtbase, phonon, 
+  taglib,
+  # optional backends
+  withCD ? true, cdparanoia,
+  withFlac ? true, flac,
+  withMidi ? true, fluidsynth, timidity,
+  withSpeex ? false, speex,
+  withVorbis ? true, vorbis-tools, vorbisgain,
+  withMp3 ? true, lame, mp3gain,
+  withAac ? true, faad2, aacgain,
+  withUnfreeAac ? false, faac,
+  withFfmpeg ? true, ffmpeg-full,
+  withMplayer ? false, mplayer,
+  withSox ? true, sox,
+  withOpus ? true, opusTools,
+  withTwolame ? false, twolame,
+  withApe ? false, mac,
+  withWavpack ? false, wavpack
+}:
+
+assert withAac -> withFfmpeg || withUnfreeAac;
+assert withUnfreeAac -> withAac;
+
+let runtimeDeps = []
+    ++ lib.optional withCD cdparanoia
+    ++ lib.optional withFlac flac
+    ++ lib.optional withSpeex speex
+    ++ lib.optional withFfmpeg ffmpeg-full
+    ++ lib.optional withMplayer mplayer
+    ++ lib.optional withSox sox
+    ++ lib.optional withOpus opusTools
+    ++ lib.optional withTwolame twolame
+    ++ lib.optional withApe mac
+    ++ lib.optional withWavpack wavpack
+    ++ lib.optional withUnfreeAac faac
+    ++ lib.optionals withMidi [ fluidsynth timidity ]
+    ++ lib.optionals withVorbis [ vorbis-tools vorbisgain ]
+    ++ lib.optionals withMp3 [ lame mp3gain ]
+    ++ lib.optionals withAac [  faad2 aacgain ];
+
+in 
+mkDerivation rec {
+  name = "soundkonverter";
+  version = "3.0.1";
+  src = fetchFromGitHub {
+    owner = "dfaust";
+    repo = "soundkonverter";
+    rev = "v" + version;
+    sha256 = "1g2khdsjmsi4zzynkq8chd11cbdhjzmi37r9jhpal0b730nq9x7l";
+  };
+  enableParallelBuilding = true;
+  nativeBuildInputs = [ cmake extra-cmake-modules pkgconfig kdelibs4support makeWrapper ];
+  propagatedBuildInputs = [ libkcddb kconfig kconfigwidgets ki18n kdelibs4support kio solid kwidgetsaddons kxmlgui qtbase phonon];
+  buildInputs = [ taglib ] ++ runtimeDeps;
+  # encoder plugins go to ${out}/lib so they're found by kbuildsycoca5
+  cmakeFlags = [ "-DCMAKE_INSTALL_PREFIX=$out" ]; 
+  sourceRoot = "source/src";
+  # add runt-time deps to PATH
+  postInstall = ''
+    wrapProgram $out/bin/soundkonverter --prefix PATH : ${lib.makeBinPath runtimeDeps }
+    '';
+  meta = {
+    license = lib.licenses.gpl2;
+    maintainers = [ lib.maintainers.schmittlauch ];
+    description = "Audio file converter, CD ripper and Replay Gain tool";
+    longDescription = ''
+      soundKonverter is a frontend to various audio converters.
+      
+      The key features are:
+      - Audio file conversion
+      - Replay Gain calculation
+      - CD ripping
+      
+      soundKonverter supports reading and writing tags and covers for many formats, so they are preserved when converting files.
+      
+      It is extendable by plugins and supports many backends including:
+      
+      - Audio file conversion
+        Backends: faac, faad, ffmpeg, flac, lame, mplayer, neroaac, timidity, fluidsynth, vorbistools, opustools, sox, twolame,
+        flake, mac, shorten, wavpack and speex
+        Formats: ogg vorbis, mp3, flac, wma, aac, ac3, opus, alac, mp2, als, amr nb, amr wb, ape, speex, m4a, mp1, musepack shorten,
+        tta, wavpack, ra, midi, mod, 3gp, rm, avi, mkv, ogv, mpeg, mov, mp4, flv, wmv and rv
+      
+      - Replay Gain calculation
+        Backends: aacgain, metaflac, mp3gain, vorbisgain, wvgain, mpcgain
+        Formats: aac, mp3, flac, ogg vorbis, wavpack, musepack
+      
+      - CD ripping
+        Backends: cdparanoia
+      '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/soundscape-renderer/default.nix b/nixpkgs/pkgs/applications/audio/soundscape-renderer/default.nix
new file mode 100644
index 000000000000..741211bd90d7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/soundscape-renderer/default.nix
@@ -0,0 +1,54 @@
+{ stdenv
+, fetchgit
+, autoreconfHook
+, help2man
+, pkgconfig
+, libsndfile
+, fftwFloat
+, libjack2
+, libxml2
+, qt4
+, boost
+, ecasound
+, glibcLocales
+, libGLU, libGL # Needed because help2man basically does a ./ssr-binaural  --help and ssr-binaural needs libGL
+}:
+
+stdenv.mkDerivation {
+  pname = "soundscape-renderer-unstable";
+
+  version = "2016-11-03";
+
+  src = fetchgit {
+    url = "https://github.com/SoundScapeRenderer/ssr";
+    rev = "0dd0136dd24e47b63d8a4e05de467f5c7b047ec9";
+    sha256 = "095x2spv9bmg6pi71mpajnghbqj58ziflg16f9854awx0qp9d8x7";
+  };
+
+  # Without it doesn't find all of the boost libraries.
+  BOOST_LIB_DIR="${boost}/lib";
+  # uses the deprecated get_generic_category() in boost_system
+  NIX_CFLAGS_COMPILE="-DBOOST_SYSTEM_ENABLE_DEPRECATED=1";
+
+  LC_ALL = "en_US.UTF-8";
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ boost boost.dev ecasound libGLU libGL help2man libsndfile fftwFloat libjack2 libxml2 qt4 glibcLocales ];
+
+  # 1) Fix detecting version. https://github.com/SoundScapeRenderer/ssr/pull/53
+  # 2) Make it find ecasound headers
+  # 3) Fix locale for help2man
+  prePatch = ''
+    substituteInPlace configure.ac --replace 'git describe ||' 'git describe 2> /dev/null ||';
+    substituteInPlace configure.ac --replace '/{usr,opt}/{,local/}' '${ecasound}/'
+    substituteInPlace man/Makefile.am --replace '--locale=en' '--locale=en_US.UTF-8'
+  '';
+
+  meta = {
+    homepage = "http://spatialaudio.net/ssr/";
+    description = "The SoundScape Renderer (SSR) is a tool for real-time spatial audio reproduction";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.fridh ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/audio/soundtracker/default.nix b/nixpkgs/pkgs/applications/audio/soundtracker/default.nix
new file mode 100644
index 000000000000..ce73203c9590
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/soundtracker/default.nix
@@ -0,0 +1,51 @@
+{ stdenv
+, fetchurl
+, pkg-config
+, autoconf
+, gtk2
+, alsaLib
+, SDL
+, jack2
+, goocanvas # graphical envelope editing
+}:
+
+stdenv.mkDerivation rec {
+  pname = "soundtracker";
+  version = "1.0.0.1";
+
+  src = fetchurl {
+    # Past releases get moved to the "old releases" directory.
+    # Only the latest release (currently a prerelease) is at the top level.
+    url = "mirror://sourceforge/soundtracker/old%20releases/soundtracker-${version}.tar.bz2";
+    sha256 = "1ggliswz5ngmlnrnyhv3x1arh5w77an0ww9p53cddp9aas5q11jm";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    autoconf
+  ];
+  buildInputs = [
+    gtk2
+    SDL
+    jack2
+    goocanvas
+  ] ++ stdenv.lib.optional stdenv.isLinux alsaLib;
+
+  meta = with stdenv.lib; {
+    description = "A music tracking tool similar in design to the DOS program FastTracker and the Amiga legend ProTracker";
+    longDescription = ''
+      SoundTracker is a pattern-oriented music editor (similar to the DOS
+      program 'FastTracker'). Samples are lined up on tracks and patterns
+      which are then arranged to a song. Supported module formats are XM and
+      MOD; the player code is the one from OpenCP. A basic sample recorder
+      and editor is also included.
+    '';
+    homepage = "http://www.soundtracker.org/";
+    downloadPage = "https://sourceforge.net/projects/soundtracker/files/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ fgaz ];
+    platforms = platforms.all;
+    # gdk/gdkx.h not found
+    broken = stdenv.isDarwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/spectmorph/default.nix b/nixpkgs/pkgs/applications/audio/spectmorph/default.nix
new file mode 100644
index 000000000000..d8209dad02de
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/spectmorph/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pkgconfig, libjack2, lv2, glib, qt5, libao, cairo, libsndfile, fftwFloat }:
+
+stdenv.mkDerivation rec {
+  pname = "spectmorph";
+  version = "0.5.1";
+  src = fetchurl {
+    url = "http://spectmorph.org/files/releases/${pname}-${version}.tar.bz2";
+    sha256 = "06jrfx5g9c56swxn78lix0gyrjkhi21l9wqs56knp8iqcgfi3m0s";
+  };
+
+  buildInputs = [  libjack2 lv2 glib qt5.qtbase libao cairo libsndfile fftwFloat ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = with stdenv.lib; {
+    description = "Allows to analyze samples of musical instruments, and to combine them (morphing) to construct hybrid sounds";
+    homepage = "http://spectmorph.org";
+    license = licenses.gpl3;
+    platforms = [ "x86_64-linux" "i686-linux" ];
+    maintainers = [ maintainers.magnetophon ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/spectrojack/default.nix b/nixpkgs/pkgs/applications/audio/spectrojack/default.nix
new file mode 100644
index 000000000000..35534750d0c6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/spectrojack/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, pkgconfig, libjack2, fftwFloat, gtk2 }:
+
+stdenv.mkDerivation rec {
+  pname = "spectrojack";
+  version = "0.4.1";
+
+  src = fetchurl {
+    url = "http://sed.free.fr/spectrojack/${pname}-${version}.tar.gz";
+    sha256 = "1kiwx0kag7kq7rhg0bvckfm8r7pqmbk76ppa39cq2980jb5v8rfp";
+  };
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libjack2 fftwFloat gtk2 ];
+  configurePhase= ''
+    sed -i 's/.*home.*/#&/' ./Makefile
+    substituteInPlace ./Makefile \
+      --replace "/usr/share" "$out/usr/share"
+  '';
+  installPhase= ''
+    install -Dm755 spectrojack $out/bin/spectrojack
+    install -Dm644 spectrojack_icon.svg $out/usr/share/spectrojack/icon.svg
+    install -Dm644 -t $out/usr/share/spectrojack/colormaps colormaps/*
+  '';
+
+  meta = {
+    description = "A little spectrogram/audiogram/sonogram/whatever for JACK";
+    homepage = "http://sed.free.fr/spectrojack";
+    license = stdenv.lib.licenses.publicDomain;
+    maintainers = with stdenv.lib.maintainers; [ sleexyz ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/speech-denoiser/default.nix b/nixpkgs/pkgs/applications/audio/speech-denoiser/default.nix
new file mode 100644
index 000000000000..9c18665d3993
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/speech-denoiser/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, lv2, meson, ninja }:
+
+let
+  speech-denoiser-src = fetchFromGitHub {
+    owner = "lucianodato";
+    repo = "speech-denoiser";
+    rev = "04cfba929630404f8d4f4ca5bac8d9b09a99152f";
+    sha256 = "189l6lz8sz5vr6bjyzgcsrvksl1w6crqsg0q65r94b5yjsmjnpr4";
+  };
+
+  rnnoise-nu = stdenv.mkDerivation {
+    pname = "rnnoise-nu";
+    version = "unstable-07-10-2019";
+    src = speech-denoiser-src;
+    sourceRoot = "source/rnnoise";
+    nativeBuildInputs = [ autoreconfHook ];
+    configureFlags = [ "--disable-examples" "--disable-doc" "--disable-shared" "--enable-static" ];
+    installTargets = [ "install-rnnoise-nu" ];
+  };
+in
+stdenv.mkDerivation  {
+  pname = "speech-denoiser";
+  version = "unstable-07-10-2019";
+
+  src = speech-denoiser-src;
+
+  nativeBuildInputs = [ pkgconfig meson ninja ];
+  buildInputs = [ lv2 rnnoise-nu ];
+
+  mesonFlags = ("--prefix=${placeholder "out"}/lib/lv2");
+
+  postPatch = ''
+    substituteInPlace meson.build \
+      --replace "cc.find_library('rnnoise-nu',dirs: meson.current_source_dir() + '/rnnoise/.libs/',required : true)" "cc.find_library('rnnoise-nu', required : true)"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Speech denoise lv2 plugin based on RNNoise library";
+    homepage = "https://github.com/lucianodato/speech-denoiser";
+    license = licenses.lgpl3;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/spek/default.nix b/nixpkgs/pkgs/applications/audio/spek/default.nix
new file mode 100644
index 000000000000..d6918b192315
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/spek/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, intltool, pkgconfig, ffmpeg, wxGTK30-gtk3, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "spek";
+  version = "unstable-2018-12-29";
+
+  src = fetchFromGitHub {
+    owner = "alexkay";
+    repo = "spek";
+    rev = "f071c2956176ad53c7c8059e5c00e694ded31ded";
+    sha256 = "1l9gj9c1n92zlcjnyjyk211h83dk0idk644xnm5rs7q40p2zliy5";
+  };
+
+  # needed for autoreconfHook
+  AUTOPOINT="intltoolize --automake --copy";
+
+  nativeBuildInputs = [ autoreconfHook intltool pkgconfig wrapGAppsHook ];
+
+  buildInputs = [ ffmpeg wxGTK30-gtk3 wxGTK30-gtk3.gtk ];
+
+  meta = with stdenv.lib; {
+    description = "Analyse your audio files by showing their spectrogram";
+    homepage = "http://spek.cc/";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ bjornfor ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/split2flac/default.nix b/nixpkgs/pkgs/applications/audio/split2flac/default.nix
new file mode 100644
index 000000000000..efad434e3079
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/split2flac/default.nix
@@ -0,0 +1,62 @@
+{ stdenv, fetchFromGitHub, makeWrapper
+, shntool, cuetools
+, flac, faac, mp4v2, wavpack, mac
+, imagemagick, libiconv, enca, lame, pythonPackages, vorbis-tools
+, aacgain, mp3gain, vorbisgain
+}:
+
+let
+  wrapSplit2flac =  format: ''
+    makeWrapper $out/bin/.split2flac-wrapped $out/bin/split2${format} \
+      --set SPLIT2FLAC_FORMAT ${format} \
+      --prefix PATH : ${stdenv.lib.makeBinPath [
+        shntool cuetools
+        flac faac mp4v2 wavpack mac
+        imagemagick libiconv enca lame pythonPackages.mutagen vorbis-tools
+        aacgain mp3gain vorbisgain
+      ]}
+  '';
+
+in stdenv.mkDerivation rec {
+  pname = "split2flac";
+  version = "122";
+
+  src = fetchFromGitHub {
+    owner = "ftrvxmtrx";
+    repo = "split2flac";
+    rev = version;
+    sha256 = "1a71amamip25hhqx7wwzfcl3d5snry9xsiha0kw73iq2m83r2k63";
+  };
+
+  dontBuild = true;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  patchPhase = ''
+    substituteInPlace split2flac \
+      --replace 'FORMAT="''${0##*split2}"' 'FORMAT=''${SPLIT2FLAC_FORMAT:-flac}'
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/bash-completion/completions
+    cp split2flac-bash-completion.sh \
+      $out/share/bash-completion/completions/split2flac-bash-completion.sh
+
+    mkdir -p $out/bin
+    cp split2flac $out/bin/.split2flac-wrapped
+
+    ${wrapSplit2flac "flac"}
+    ${wrapSplit2flac "mp3"}
+    ${wrapSplit2flac "ogg"}
+    ${wrapSplit2flac "m4a"}
+    ${wrapSplit2flac "wav"}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Split flac/ape/wv/wav + cue sheet into separate tracks";
+    homepage = "https://github.com/ftrvxmtrx/split2flac";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ jfrankenau ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/spotify-tui/default.nix b/nixpkgs/pkgs/applications/audio/spotify-tui/default.nix
new file mode 100644
index 000000000000..693de28bf472
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/spotify-tui/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, rustPlatform, pkgconfig, openssl, python3, libxcb, AppKit, Security }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "spotify-tui";
+  version = "0.20.0";
+
+  src = fetchFromGitHub {
+    owner = "Rigellute";
+    repo = "spotify-tui";
+    rev = "v${version}";
+    sha256 = "1gdsk620md5nv1r05jysmfhpbcidh15wzyiklkazsb6cppm6qsiy";
+  };
+
+  cargoSha256 = "0irfdmik6nrpfs9yzva5q351cfyf1cijxa2a08prwdccrivdk98a";
+
+  nativeBuildInputs = stdenv.lib.optionals stdenv.isLinux [ pkgconfig python3 ];
+  buildInputs = [ ]
+    ++ stdenv.lib.optionals stdenv.isLinux [ openssl libxcb ]
+    ++ stdenv.lib.optionals stdenv.isDarwin [ AppKit Security ];
+
+  meta = with stdenv.lib; {
+    description = "Spotify for the terminal written in Rust";
+    homepage = "https://github.com/Rigellute/spotify-tui";
+    changelog = "https://github.com/Rigellute/spotify-tui/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jwijenbergh ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/spotify/default.nix b/nixpkgs/pkgs/applications/audio/spotify/default.nix
new file mode 100644
index 000000000000..245d96dee018
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/spotify/default.nix
@@ -0,0 +1,167 @@
+{ fetchurl, stdenv, squashfsTools, xorg, alsaLib, makeWrapper, openssl, freetype
+, glib, pango, cairo, atk, gdk-pixbuf, gtk2, cups, nspr, nss, libpng, libnotify
+, libgcrypt, systemd, fontconfig, dbus, expat, ffmpeg_3, curl, zlib, gnome3
+, at-spi2-atk, at-spi2-core, libpulseaudio
+}:
+
+let
+  # TO UPDATE: just execute the ./update.sh script (won't do anything if there is no update)
+  # "rev" decides what is actually being downloaded
+  # If an update breaks things, one of those might have valuable info:
+  # https://aur.archlinux.org/packages/spotify/
+  # https://community.spotify.com/t5/Desktop-Linux
+  version = "1.1.26.501.gbe11e53b-15";
+  # To get the latest stable revision:
+  # curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=stable' | jq '.download_url,.version,.last_updated'
+  # To get general information:
+  # curl -H 'Snap-Device-Series: 16' 'https://api.snapcraft.io/v2/snaps/info/spotify' | jq '.'
+  # More examples of api usage:
+  # https://github.com/canonical-websites/snapcraft.io/blob/master/webapp/publisher/snaps/views.py
+  rev = "41";
+
+
+  deps = [
+    alsaLib
+    atk
+    at-spi2-atk
+    at-spi2-core
+    cairo
+    cups
+    curl
+    dbus
+    expat
+    ffmpeg_3
+    fontconfig
+    freetype
+    gdk-pixbuf
+    glib
+    gtk2
+    libgcrypt
+    libnotify
+    libpng
+    libpulseaudio
+    nss
+    pango
+    stdenv.cc.cc
+    systemd
+    xorg.libX11
+    xorg.libXcomposite
+    xorg.libXcursor
+    xorg.libXdamage
+    xorg.libXext
+    xorg.libXfixes
+    xorg.libXi
+    xorg.libXrandr
+    xorg.libXrender
+    xorg.libXScrnSaver
+    xorg.libXtst
+    xorg.libxcb
+    xorg.libSM
+    xorg.libICE
+    zlib
+  ];
+
+in
+
+stdenv.mkDerivation {
+  pname = "spotify";
+  inherit version;
+
+  # fetch from snapcraft instead of the debian repository most repos fetch from.
+  # That is a bit more cumbersome. But the debian repository only keeps the last
+  # two versions, while snapcraft should provide versions indefinately:
+  # https://forum.snapcraft.io/t/how-can-a-developer-remove-her-his-app-from-snap-store/512
+
+  # This is the next-best thing, since we're not allowed to re-distribute
+  # spotify ourselves:
+  # https://community.spotify.com/t5/Desktop-Linux/Redistribute-Spotify-on-Linux-Distributions/td-p/1695334
+  src = fetchurl {
+    url = "https://api.snapcraft.io/api/v1/snaps/download/pOBIoZ2LrCB3rDohMxoYGnbN14EHOgD7_${rev}.snap";
+    sha512 = "41bc8d20388bab39058d0709d99b1c8e324ea37af217620797356b8bc0b24aedbe801eaaa6e00a93e94e26765602e5dc27ad423ce2e777b4bec1b92daf04f81e";
+  };
+
+  buildInputs = [ squashfsTools makeWrapper ];
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  unpackPhase = ''
+    runHook preUnpack
+    unsquashfs "$src" '/usr/share/spotify' '/usr/bin/spotify' '/meta/snap.yaml'
+    cd squashfs-root
+    if ! grep -q 'grade: stable' meta/snap.yaml; then
+      # Unfortunately this check is not reliable: At the moment (2018-07-26) the
+      # latest version in the "edge" channel is also marked as stable.
+      echo "The snap package is marked as unstable:"
+      grep 'grade: ' meta/snap.yaml
+      echo "You probably chose the wrong revision."
+      exit 1
+    fi
+    if ! grep -q '${version}' meta/snap.yaml; then
+      echo "Package version differs from version found in snap metadata:"
+      grep 'version: ' meta/snap.yaml
+      echo "While the nix package specifies: ${version}."
+      echo "You probably chose the wrong revision or forgot to update the nix version."
+      exit 1
+    fi
+    runHook postUnpack
+  '';
+
+  installPhase =
+    ''
+      runHook preInstall
+
+      libdir=$out/lib/spotify
+      mkdir -p $libdir
+      mv ./usr/* $out/
+
+      cp meta/snap.yaml $out
+
+      # Work around Spotify referring to a specific minor version of
+      # OpenSSL.
+
+      ln -s ${openssl.out}/lib/libssl.so $libdir/libssl.so.1.0.0
+      ln -s ${openssl.out}/lib/libcrypto.so $libdir/libcrypto.so.1.0.0
+      ln -s ${nspr.out}/lib/libnspr4.so $libdir/libnspr4.so
+      ln -s ${nspr.out}/lib/libplc4.so $libdir/libplc4.so
+
+      ln -s ${ffmpeg_3.out}/lib/libavcodec.so* $libdir
+      ln -s ${ffmpeg_3.out}/lib/libavformat.so* $libdir
+
+      rpath="$out/share/spotify:$libdir"
+
+      patchelf \
+        --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        --set-rpath $rpath $out/share/spotify/spotify
+
+      librarypath="${stdenv.lib.makeLibraryPath deps}:$libdir"
+      wrapProgram $out/share/spotify/spotify \
+        --prefix LD_LIBRARY_PATH : "$librarypath" \
+        --prefix PATH : "${gnome3.zenity}/bin"
+
+      # fix Icon line in the desktop file (#48062)
+      sed -i "s:^Icon=.*:Icon=spotify-client:" "$out/share/spotify/spotify.desktop"
+
+      # Desktop file
+      mkdir -p "$out/share/applications/"
+      cp "$out/share/spotify/spotify.desktop" "$out/share/applications/"
+
+      # Icons
+      for i in 16 22 24 32 48 64 128 256 512; do
+        ixi="$i"x"$i"
+        mkdir -p "$out/share/icons/hicolor/$ixi/apps"
+        ln -s "$out/share/spotify/icons/spotify-linux-$i.png" \
+          "$out/share/icons/hicolor/$ixi/apps/spotify-client.png"
+      done
+
+      runHook postInstall
+    '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.spotify.com/";
+    description = "Play music from the Spotify music service";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ eelco ftrvxmtrx sheenobu mudri timokau ma27 ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/spotify/update.sh b/nixpkgs/pkgs/applications/audio/spotify/update.sh
new file mode 100755
index 000000000000..a8836214f2fc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/spotify/update.sh
@@ -0,0 +1,88 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i bash -p curl jq git gnused gnugrep
+
+
+# executing this script without arguments will
+# - find the newest stable spotify version avaiable on snapcraft (https://snapcraft.io/spotify)
+# - read the current spotify version from the current nix expression
+# - update the nix expression if the versions differ
+# - try to build the updated version, exit if that fails
+# - give instructions for upstreaming
+
+# Please test the update manually before pushing. There have been errors before
+# and because the service is proprietary and a paid account is necessary to do
+# anything with spotify automatic testing is not possible.
+
+# As an optional argument you can specify the snapcraft channel to update to.
+# Default is `stable` and only stable updates should be pushed to nixpkgs. For
+# testing you may specify `candidate` or `edge`.
+
+
+channel="${1:-stable}" # stable/candidate/edge
+nixpkgs="$(git rev-parse --show-toplevel)"
+spotify_nix="$nixpkgs/pkgs/applications/audio/spotify/default.nix"
+
+
+#
+# find the newest stable spotify version avaiable on snapcraft
+#
+
+# create bash array from snap info
+snap_info=($(
+  curl -s -H 'X-Ubuntu-Series: 16' \
+    "https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=$channel" \
+  | jq --raw-output \
+    '.revision,.download_sha512,.version,.last_updated'
+))
+
+# "revision" is the actual version identifier on snapcraft, the "version" is
+# just for human consumption. Revision is just an integer that gets increased
+# by one every (stable or unstable) release.
+revision="${snap_info[0]}"
+sha512="${snap_info[1]}"
+upstream_version="${snap_info[2]}"
+last_updated="${snap_info[3]}"
+
+echo "Latest $channel release is $upstream_version from $last_updated."
+
+#
+# read the current spotify version from the currently *committed* nix expression
+#
+
+current_nix_version=$(
+  grep 'version\s*=' "$spotify_nix" \
+  | sed -Ene 's/.*"(.*)".*/\1/p'
+)
+
+echo "Current nix version: $current_nix_version"
+
+#
+# update the nix expression if the versions differ
+#
+
+if [[ "$current_nix_version" = "$upstream_version" ]]; then
+  echo "Spotify is already up-to-date"
+  exit 0
+fi
+
+echo "Updating from ${current_nix_version} to ${upstream_version}, released on ${last_updated}"
+
+# search-and-replace revision, hash and version
+sed --regexp-extended \
+  -e 's/rev\s*=\s*"[0-9]+"\s*;/rev = "'"${revision}"'";/' \
+  -e 's/sha512\s*=\s*"[^"]*"\s*;/sha512 = "'"${sha512}"'";/' \
+  -e 's/version\s*=\s*".*"\s*;/version = "'"${upstream_version}"'";/' \
+  -i "$spotify_nix"
+
+#
+# try to build the updated version
+#
+
+if ! nix-build -A spotify "$nixpkgs"; then
+  echo "The updated spotify failed to build."
+  exit 1
+fi
+
+# Commit changes
+git add "$spotify_nix"
+git commit -m "spotify: ${current_nix_version} -> ${upstream_version}"
diff --git a/nixpkgs/pkgs/applications/audio/spotifyd/default.nix b/nixpkgs/pkgs/applications/audio/spotifyd/default.nix
new file mode 100644
index 000000000000..121f9cbc960f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/spotifyd/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchFromGitHub, rustPlatform, pkgconfig, openssl
+, withALSA ? true, alsaLib ? null
+, withPulseAudio ? false, libpulseaudio ? null
+, withPortAudio ? false, portaudio ? null
+, withMpris ? false
+, withKeyring ? false
+, dbus ? null
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "spotifyd";
+  version = "0.2.24";
+
+  src = fetchFromGitHub {
+    owner = "Spotifyd";
+    repo = "spotifyd";
+    rev = "v${version}";
+    sha256 = "08i0zm7kgprixqjpgaxk7xid1njgj6lmi896jf9fsjqzdzlblqk8";
+  };
+
+  cargoSha256 = "0200apqbx769ggjnjr0m72g61ikhml2xak5n1il2pvfx1yf5nw0n";
+
+  cargoBuildFlags = [
+    "--no-default-features"
+    "--features"
+    "${stdenv.lib.optionalString withALSA "alsa_backend,"}${stdenv.lib.optionalString withPulseAudio "pulseaudio_backend,"}${stdenv.lib.optionalString withPortAudio "portaudio_backend,"}${stdenv.lib.optionalString withMpris "dbus_mpris,"}${stdenv.lib.optionalString withKeyring "dbus_keyring,"}"
+  ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ openssl ]
+    ++ stdenv.lib.optional withALSA alsaLib
+    ++ stdenv.lib.optional withPulseAudio libpulseaudio
+    ++ stdenv.lib.optional withPortAudio portaudio
+    ++ stdenv.lib.optional (withMpris || withKeyring) dbus;
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "An open source Spotify client running as a UNIX daemon";
+    homepage = "https://github.com/Spotifyd/spotifyd";
+    license = with licenses; [ gpl3 ];
+    maintainers = with maintainers; [ anderslundstedt filalex77 marsam ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/spotifywm/default.nix b/nixpkgs/pkgs/applications/audio/spotifywm/default.nix
new file mode 100644
index 000000000000..a51e82f29c4b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/spotifywm/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, spotify, xorg, runtimeShell }:
+stdenv.mkDerivation {
+  pname = "spotifywm-unstable";
+  version = "2016-11-28";
+
+  src = fetchFromGitHub {
+    owner  = "dasJ";
+    repo   = "spotifywm";
+    rev    = "91dd5532ffb7a398d775abe94fe7781904ab406f";
+    sha256 = "01z088i83410bpx1vbp7c6cq01r431v55l7340x3izp53lnpp379";
+  };
+
+  buildInputs = [ xorg.libX11 ];
+
+  propagatedBuildInputs = [ spotify ];
+
+  installPhase = ''
+    echo "#!${runtimeShell}" > spotifywm
+    echo "LD_PRELOAD="$out/lib/spotifywm.so" ${spotify}/bin/spotify \$*" >> spotifywm
+    install -Dm644 spotifywm.so $out/lib/spotifywm.so
+    install -Dm755 spotifywm $out/bin/spotifywm
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/dasJ/spotifywm";
+    description = "Wrapper around Spotify that correctly sets class name before opening the window";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ jqueiroz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/squeezelite/default.nix b/nixpkgs/pkgs/applications/audio/squeezelite/default.nix
new file mode 100644
index 000000000000..c6a78f090058
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/squeezelite/default.nix
@@ -0,0 +1,70 @@
+{ stdenv, fetchFromGitHub
+, alsaLib, flac, libmad, libvorbis, mpg123
+, dsdSupport ? true
+, faad2Support ? true, faad2
+, ffmpegSupport ? true, ffmpeg_3
+, opusSupport ? true, opusfile
+, resampleSupport ? true, soxr
+, sslSupport ? true, openssl
+}:
+
+let
+  concatStringsSep = stdenv.lib.concatStringsSep;
+  optional = stdenv.lib.optional;
+  opts = [ "-DLINKALL" ]
+    ++ optional dsdSupport "-DDSD"
+    ++ optional (!faad2Support) "-DNO_FAAD"
+    ++ optional ffmpegSupport "-DFFMPEG"
+    ++ optional opusSupport "-DOPUS"
+    ++ optional resampleSupport "-DRESAMPLE"
+    ++ optional sslSupport "-DUSE_SSL";
+
+in stdenv.mkDerivation {
+  pname = "squeezelite";
+
+  # versions are specified in `squeezelite.h`
+  # see https://github.com/ralph-irving/squeezelite/issues/29
+  version = "1.9.6.1196";
+
+  src = fetchFromGitHub {
+    owner  = "ralph-irving";
+    repo   = "squeezelite";
+    rev    = "2b508464dce2cbdb2a3089c58df2a6fbc36328c0";
+    sha256 = "024ypr1da2r079k3hgiifzd3d3wcfprhbl5zdm40zm0c7frzmr8i";
+  };
+
+  buildInputs = [ alsaLib flac libmad libvorbis mpg123 ]
+    ++ optional faad2Support faad2
+    ++ optional ffmpegSupport ffmpeg_3
+    ++ optional opusSupport opusfile
+    ++ optional resampleSupport soxr
+    ++ optional sslSupport openssl;
+
+  enableParallelBuilding = true;
+
+  postPatch = ''
+    substituteInPlace opus.c \
+      --replace "<opusfile.h>" "<opus/opusfile.h>"
+  '';
+
+  preBuild = ''
+    export OPTS="${concatStringsSep " " opts}"
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm755 -t $out/bin                   squeezelite
+    install -Dm644 -t $out/share/doc/squeezelite *.txt *.md
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Lightweight headless squeezebox client emulator";
+    homepage = "https://github.com/ralph-irving/squeezelite";
+    license = with licenses; [ gpl3 ] ++ optional dsdSupport bsd2;
+    maintainers = with maintainers; [ samdoshi ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/squishyball/default.nix b/nixpkgs/pkgs/applications/audio/squishyball/default.nix
new file mode 100644
index 000000000000..e6dd48018e74
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/squishyball/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, autoreconfHook, fetchsvn, flac, libao, libvorbis, ncurses
+, opusfile, pkgconfig
+}:
+
+stdenv.mkDerivation rec {
+  name = "squishyball-${rev}";
+  rev = "19580";
+
+  src = fetchsvn {
+    url = "https://svn.xiph.org/trunk/squishyball";
+    rev = rev;
+    sha256 = "013vq52q9z6kpg9iyc2jnb3m2gihcjblvwpg4yj4wy1q2c05pzqp";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+
+  buildInputs = [ flac libao libvorbis ncurses opusfile ];
+
+  NIX_CFLAGS_COMPILE = "-DNCURSES_INTERNALS";
+
+  patches = [ ./gnu-screen.patch ];
+
+  postInstall = ''
+    # Why doesn’t this happen automagically?
+    mkdir -p $out/share/man/man1
+    cp squishyball.1 $out/share/man/man1
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A tool to perform sample comparison testing on the command line";
+    longDescription = ''
+       squishyball is a simple command-line utility for performing
+       double-blind A/B, A/B/X or X/X/Y testing on the command line.
+       The user specifies two input files to be compared and uses the
+       keyboard during playback to flip between the randomized samples
+       to perform on-the-fly compar‐ isons.  After a predetermined
+       number of trials, squishyball prints the trial results to
+       stdout and exits.  Results (stdout) may be redirected to a file
+       without affecting interactive use of the terminal.
+
+       squishyball can also be used to perform casual, non-randomized
+       comparisons of groups of up to ten samples; this is the default
+       mode of operation.
+    '';
+    homepage = "https://svn.xiph.org/trunk/squishyball";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ michalrus ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/squishyball/gnu-screen.patch b/nixpkgs/pkgs/applications/audio/squishyball/gnu-screen.patch
new file mode 100644
index 000000000000..addc30d604c6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/squishyball/gnu-screen.patch
@@ -0,0 +1,20 @@
+diff -Naur a/main.c b/main.c
+--- a/main.c	2016-09-06 13:37:32.259895631 +0200
++++ b/main.c	2016-09-07 01:41:51.014309863 +0200
+@@ -693,6 +693,11 @@
+     }
+ 
+     /* set up terminal */
++    if (!strncmp(getenv("TERM"), "screen", 6)) {
++      char term[256];
++      snprintf(term, sizeof(term), "xterm%s", getenv("TERM") + 6);
++      setenv("TERM", term, 1);
++    }
+     atexit(min_panel_remove);
+     panel_init(pcm, test_files, test_mode, start, end>0 ? end : len, len,
+                beep_mode, restart_mode, tests, running_score);
+@@ -1170,4 +1175,3 @@
+     fprintf(stderr,"Done.\n");
+   return 0;
+ }
+-
diff --git a/nixpkgs/pkgs/applications/audio/ssrc/default.nix b/nixpkgs/pkgs/applications/audio/ssrc/default.nix
new file mode 100644
index 000000000000..9d519e14147b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ssrc/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "ssrc";
+  version = "1.33";
+
+  src = fetchFromGitHub {
+    owner = "shibatch";
+    repo = "SSRC";
+    rev = "4adf75116dfc0ef709fef74a0e2f3360bd15007f";
+    sha256 = "0hgma66v7sszkpz5jkyscj0q6lmjfqdwf1hw57535c012pa2vdrh";
+  };
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp ssrc ssrc_hp $out/bin
+    '';
+
+  meta = with stdenv.lib; {
+    description = "A high quality audio sampling rate converter";
+    longDescription = ''
+      This program converts sampling rates of PCM wav files. This
+      program also has a function to apply dither to its output and
+      extend perceived dynamic range.
+
+      Sampling rates of 44.1kHz and 48kHz are popularly used, but the
+      ratio between these two frequencies is 147:160, which are not
+      small numbers. As a result, sampling rate conversion without
+      degradation of sound quality requires filter with very large
+      order, and it is difficult to have both quality and speed. This
+      program quickly converts between these sampling frequencies
+      without audible degradation.
+    '';
+
+    version = version;
+    homepage = "http://shibatch.sourceforge.net/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ leenaars];
+    platforms = with platforms; [ linux ] ;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/stone-phaser/default.nix b/nixpkgs/pkgs/applications/audio/stone-phaser/default.nix
new file mode 100644
index 000000000000..d36b28df978a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/stone-phaser/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, xorg, cairo, lv2, libjack2, mesa, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "stone-phaser";
+  version = "0.1.2";
+
+  src = fetchFromGitHub {
+    owner = "jpcima";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "180b32z8h9zi8p0q55r1dzxfckamnngm52zjypjjvvy7qdj3mfcd";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    xorg.libX11 cairo lv2 libjack2 mesa
+  ];
+
+  postPatch = ''
+    patch -d dpf -p 1 -i "$src/resources/patch/DPF-bypass.patch"
+    patchShebangs ./dpf/utils/generate-ttl.sh
+  '';
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/jpcima/stone-phaser";
+    description = "A classic analog phaser effect, made with DPF and Faust";
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+    license = licenses.boost;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/strawberry/default.nix b/nixpkgs/pkgs/applications/audio/strawberry/default.nix
new file mode 100644
index 000000000000..4a195b4c3456
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/strawberry/default.nix
@@ -0,0 +1,99 @@
+{ mkDerivation
+, stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkgconfig
+, alsaLib
+, boost
+, chromaprint
+, fftw
+, gnutls
+, libcdio
+, libmtp
+, libpthreadstubs
+, libtasn1
+, libXdmcp
+, ninja
+, pcre
+, protobuf
+, sqlite
+, taglib
+, libpulseaudio ? null
+, libselinux ? null
+, libsepol ? null
+, p11-kit ? null
+, utillinux ? null
+, qtbase
+, qtx11extras
+, qttools
+, withGstreamer ? true
+, gst_all_1 ? null
+, withVlc ? true
+, vlc ? null
+}:
+
+mkDerivation rec {
+  pname = "strawberry";
+  version = "0.6.12";
+
+  src = fetchFromGitHub {
+    owner = "jonaski";
+    repo = pname;
+    rev = version;
+    sha256 = "0p09xp7andfg0gvarzc979pwglr0xjj1c0cziqj0c9z7p1v0fkws";
+  };
+
+  buildInputs = [
+    alsaLib
+    boost
+    chromaprint
+    fftw
+    gnutls
+    libcdio
+    libmtp
+    libpthreadstubs
+    libtasn1
+    libXdmcp
+    pcre
+    protobuf
+    sqlite
+    taglib
+    qtbase
+    qtx11extras
+  ]
+  ++ lib.optionals stdenv.isLinux [
+    libpulseaudio
+    libselinux
+    libsepol
+    p11-kit
+    utillinux
+  ]
+  ++ lib.optionals withGstreamer (with gst_all_1; [
+    gstreamer
+    gst-plugins-base
+    gst-plugins-good
+    gst-plugins-ugly
+  ])
+  ++ lib.optional withVlc vlc;
+
+  nativeBuildInputs = [ cmake ninja pkgconfig qttools ];
+
+  cmakeFlags = [
+    "-DUSE_SYSTEM_TAGLIB=ON"
+  ];
+
+  postInstall = ''
+    qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
+  '';
+
+  meta = with lib; {
+    description = "Music player and music collection organizer";
+    homepage = "https://www.strawberrymusicplayer.org/";
+    changelog = "https://raw.githubusercontent.com/jonaski/strawberry/${version}/Changelog";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ peterhoeg ];
+    # upstream says darwin should work but they lack maintainers as of 0.6.6
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/streamripper/default.nix b/nixpkgs/pkgs/applications/audio/streamripper/default.nix
new file mode 100644
index 000000000000..1411fe59b30f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/streamripper/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl , glib, pkgconfig, libogg, libvorbis, libmad }:
+
+stdenv.mkDerivation rec {
+  pname = "streamripper";
+  version = "1.64.6";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/streamripper/${pname}-${version}.tar.gz";
+    sha256 = "0hnyv3206r0rfprn3k7k6a0j959kagsfyrmyjm3gsf3vkhp5zmy1";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ glib libogg libvorbis libmad ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://streamripper.sourceforge.net/";
+    description = "Application that lets you record streaming mp3 to your hard drive";
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/string-machine/default.nix b/nixpkgs/pkgs/applications/audio/string-machine/default.nix
new file mode 100644
index 000000000000..67053baa35ff
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/string-machine/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, boost, cairo, lv2, pkg-config }:
+
+stdenv.mkDerivation rec {
+  pname = "string-machine";
+  version = "unstable-2020-01-20";
+
+  src = fetchFromGitHub {
+    owner = "jpcima";
+    repo = pname;
+    rev = "188082dd0beb9a3c341035604841c53675fe66c4";
+    sha256 = "0l9xrzp3f0hk6h320qh250a0n1nbd6qhjmab21sjmrlb4ngy672v";
+    fetchSubmodules = true;
+  };
+
+  postPatch = ''
+    patchShebangs ./dpf/utils/generate-ttl.sh
+  '';
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [
+    boost cairo lv2
+  ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/jpcima/string-machine";
+    description = "Digital model of electronic string ensemble instrument";
+    maintainers = [ maintainers.magnetophon ];
+    platforms = intersectLists platforms.linux platforms.x86;
+    license = licenses.boost;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/sunvox/default.nix b/nixpkgs/pkgs/applications/audio/sunvox/default.nix
new file mode 100644
index 000000000000..48ad9bc971c2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sunvox/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchurl, unzip, alsaLib, libX11, libXi, SDL2 }:
+
+let
+  libPath = stdenv.lib.makeLibraryPath [ stdenv.cc.cc alsaLib libX11 libXi SDL2 ];
+  arch =
+    if stdenv.isAarch64
+    then "arm64"
+    else if stdenv.isAarch32
+    then "arm_armhf_raspberry_pi"
+    else if stdenv.is64bit
+    then "x86_64"
+    else "x86";
+in
+stdenv.mkDerivation rec {
+  pname = "SunVox";
+  version = "1.9.5d";
+
+  src = fetchurl {
+    url = "http://www.warmplace.ru/soft/sunvox/sunvox-${version}.zip";
+    sha256 = "15pyc3dk4dqlivgzki8sv7xpwg3bbn5xv9338g16a0dbn7s3kich";
+  };
+
+  buildInputs = [ unzip ];
+
+  unpackPhase = "unzip $src";
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/share $out/bin
+    mv sunvox $out/share/
+
+    bin="$out/share/sunvox/sunvox/linux_${arch}/sunvox"
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+             --set-rpath "${libPath}" \
+             "$bin"
+
+    ln -s "$bin" $out/bin/sunvox
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Small, fast and powerful modular synthesizer with pattern-based sequencer";
+    license = licenses.unfreeRedistributable;
+    homepage = "http://www.warmplace.ru/soft/sunvox/";
+    maintainers = with maintainers; [ puffnfresh ];
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/svox/default.nix b/nixpkgs/pkgs/applications/audio/svox/default.nix
new file mode 100644
index 000000000000..0f8e51438830
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/svox/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchgit }:
+
+stdenv.mkDerivation {
+  pname = "svox";
+  version = "2017-07-18";
+
+  src = fetchgit {
+    url = "https://android.googlesource.com/platform/external/svox";
+    rev = "7e68d0e9aac1b5d2ad15e92ddaa3bceb27973fcb";
+    sha256 = "1bqj12w23nn27x64ianm2flrqvkskpvgrnly7ah8gv6k8s8chh3r";
+  };
+
+  postPatch = ''
+    cd pico
+  '';
+
+  buildPhase = ''
+    cd lib
+    for i in *.c; do
+      $CC -O2 -fPIC -c -o ''${i%.c}.o $i
+    done
+    $CC -shared -o libttspico.so *.o
+    cd ..
+  '';
+
+  installPhase = ''
+    install -Dm755 lib/libttspico.so $out/lib/libttspico.so
+    mkdir -p $out/include
+    cp lib/*.h $out/include
+    mkdir -p $out/share/pico/lang
+    cp lang/*.bin $out/share/pico/lang
+  '';
+
+  NIX_CFLAGS_COMPILE = "-include stdint.h";
+
+  meta = with stdenv.lib; {
+    description = "Text-to-speech engine";
+    homepage = "https://android.googlesource.com/platform/external/svox";
+    platforms = platforms.linux;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/swh-lv2/default.nix b/nixpkgs/pkgs/applications/audio/swh-lv2/default.nix
new file mode 100644
index 000000000000..02499d54476f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/swh-lv2/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, fftwSinglePrec, libxslt, lv2, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "swh-lv2";
+  version = "1.0.16";
+
+  src = fetchurl {
+    url = "https://github.com/swh/lv2/archive/v${version}.tar.gz";
+    sha256 = "0j1mih0lp4fds07knp5i32in515sh0df1qi6694pmyz2wqnm295w";
+  };
+
+  patchPhase = ''
+    sed -e "s#xsltproc#${libxslt.bin}/bin/xsltproc#" -i Makefile
+    sed -e "s#PREFIX = /usr/local#PREFIX = $out#" -i Makefile
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ fftwSinglePrec lv2 ];
+
+  installPhase = "make install-system";
+
+  meta = with stdenv.lib; {
+    homepage = "http://plugin.org.uk";
+    description = "LV2 version of Steve Harris' SWH plugins";
+    longDescription = ''
+      SWH plugins include:
+      amp, fast overdrive, overdrive (with colourisation), comb
+      filter, waveshaper, ringmod, divider, diode, decliper, pitch
+      scaler, 16 band equaliser, sinus wavewrapper, hermes filter,
+      chorus, flanger, decimater, oscillator, gverb, phasers, harmonic
+      generators, surround encoders and more.
+    '';
+    license = licenses.gpl3;
+    maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/synthv1/default.nix b/nixpkgs/pkgs/applications/audio/synthv1/default.nix
new file mode 100644
index 000000000000..c7e936d28e50
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/synthv1/default.nix
@@ -0,0 +1,23 @@
+{ mkDerivation, stdenv, fetchurl, pkgconfig, qtbase, qttools, libjack2, alsaLib, liblo, lv2 }:
+
+mkDerivation rec {
+  pname = "synthv1";
+  version = "0.9.14";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/synthv1/${pname}-${version}.tar.gz";
+    sha256 = "08n83krkak20924flb9azhm9hn40lyfvn29m63zs3lw3wajf0b40";
+  };
+
+  buildInputs = [ qtbase qttools libjack2 alsaLib liblo lv2 ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = with stdenv.lib; {
+    description = "An old-school 4-oscillator subtractive polyphonic synthesizer with stereo fx";
+    homepage = "https://synthv1.sourceforge.io/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.goibhniu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/tambura/default.nix b/nixpkgs/pkgs/applications/audio/tambura/default.nix
new file mode 100644
index 000000000000..96f9bb7053e0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/tambura/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+stdenv.mkDerivation rec {
+  pname = "Tambura";
+  version = "1.0";
+
+  src = fetchFromGitHub {
+    owner = "olilarkin";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1w80cmiyzca1wirf5gypg3hcix1ky777id8wnd3k92mn1jf4a24y";
+  };
+
+  buildInputs = [ faust2jaqt faust2lv2 ];
+
+  buildPhase = ''
+    faust2jaqt -vec -time -t 99999 ${pname}.dsp
+    faust2lv2 -vec -time -gui -t 99999 ${pname}.dsp
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp ${pname} $out/bin/
+    mkdir -p $out/lib/lv2
+    cp -r ${pname}.lv2/ $out/lib/lv2
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A FAUST patch inspired by the Indian Tambura/Tanpura - a four string drone instrument, known for its unique rich harmonic timbre";
+    homepage = "https://github.com/olilarkin/Tambura";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.magnetophon ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/tetraproc/default.nix b/nixpkgs/pkgs/applications/audio/tetraproc/default.nix
new file mode 100644
index 000000000000..8780e54bb7c3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/tetraproc/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, makeWrapper
+, expat, fftwFloat, fontconfig, freetype, libjack2, jack2Full, libclthreads, libclxclient
+, libsndfile, libxcb, xorg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tetraproc";
+  version = "0.8.6";
+
+  src = fetchurl {
+    url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${pname}-${version}.tar.bz2";
+    sha256 = "02155ljfwgvfgq9z258fb4z7jrz7qx022d054fj5gr0v007cv0r7";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildInputs = [
+    expat libjack2 libclthreads libclxclient fftwFloat fontconfig libsndfile freetype
+    libxcb xorg.libX11 xorg.libXau xorg.libXdmcp xorg.libXft xorg.libXrender
+  ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "SUFFIX=''"
+  ];
+
+  preConfigure = ''
+    cd ./source/
+  '';
+
+  postInstall = ''
+    # Make sure Jack is avalable in $PATH for tetraproc
+    wrapProgram $out/bin/tetraproc --prefix PATH : "${jack2Full}/bin"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Converts the A-format signals from a tetrahedral Ambisonic microphone into B-format signals ready for recording";
+    homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/timemachine/default.nix b/nixpkgs/pkgs/applications/audio/timemachine/default.nix
new file mode 100644
index 000000000000..8be43346bc04
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/timemachine/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, autoconf, automake, pkgconfig, gtk2
+, libjack2, libsndfile
+}:
+
+stdenv.mkDerivation rec {
+  pname = "timemachine";
+  version = "0.3.4";
+  src = fetchFromGitHub {
+    owner = "swh";
+    repo = "timemachine";
+    rev = "v${version}";
+    sha256 = "16fgyw6jnscx9279dczv72092dddghwlp53rkfw469kcgvjhwx0z";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+    buildInputs = [ autoconf automake gtk2 libjack2
+      libsndfile
+    ];
+
+  preConfigure = "./autogen.sh";
+
+  NIX_LDFLAGS = "-lm";
+
+  meta = {
+    description = "JACK audio recorder";
+    homepage = "http://plugin.org.uk/timemachine/";
+    license = stdenv.lib.licenses.lgpl2;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.nico202 ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/audio/tony/default.nix b/nixpkgs/pkgs/applications/audio/tony/default.nix
new file mode 100644
index 000000000000..011d80253647
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/tony/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, pkgconfig, wrapQtAppsHook
+, alsaLib, boost, bzip2, fftw, fftwFloat, libX11, libfishsound, libid3tag
+, libjack2, liblo, libmad, libogg, liboggz, libpulseaudio, libsamplerate
+, libsndfile, lrdf, opusfile, qtbase, qtsvg, rubberband, serd, sord
+}:
+
+stdenv.mkDerivation rec {
+  name = "tony-2.1.1";
+
+  src = fetchurl {
+    url = "https://code.soundsoftware.ac.uk/attachments/download/2616/${name}.tar.gz";
+    sha256 = "03g2bmlj08lmgvh54dyd635xccjn730g4wwlhpvsw04bffz8b7fp";
+  };
+
+  nativeBuildInputs = [ pkgconfig wrapQtAppsHook ];
+
+  buildInputs = [
+    alsaLib boost bzip2 fftw fftwFloat libX11 libfishsound libid3tag
+    libjack2 liblo libmad libogg liboggz libpulseaudio libsamplerate
+    libsndfile lrdf opusfile qtbase qtsvg rubberband serd sord
+  ];
+
+  # comment out the tests
+  preConfigure = ''
+    sed -i 's/sub_test_svcore_/#sub_test_svcore_/' tony.pro
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Pitch and note annotation of unaccompanied melody";
+    homepage = "https://www.sonicvisualiser.org/tony/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/transcode/default.nix b/nixpkgs/pkgs/applications/audio/transcode/default.nix
new file mode 100644
index 000000000000..c7ee3914f25c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/transcode/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, flac, lame, zlib, libjpeg, libvorbis, libtheora, libxml2
+, lzo, libdvdread, pkgconfig, x264, libmpeg2, xvidcore }:
+
+stdenv.mkDerivation rec {
+  name = "transcode-1.1.7";
+  src = fetchurl {
+    url = "https://bitbucket.org/france/transcode-tcforge/downloads/${name}.tar.bz2";
+    sha256 = "1e4e72d8e0dd62a80b8dd90699f5ca64c9b0cb37a5c9325c184166a9654f0a92";
+  };
+
+  buildInputs = [ flac lame zlib libjpeg libvorbis libtheora libxml2 lzo
+                  libdvdread pkgconfig x264 libmpeg2 xvidcore ];
+  configureFlags = [
+    "--disable-ffmpeg" "--disable-libavcodec" "--disable-libavformat"
+    "--enable-lzo" "--enable-ogg" "--enable-vorbis" "--enable-theora" "--enable-libxml2"
+    "--enable-x264" "--enable-libmpeg2" "--enable-xvid"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Suite of command line utilities for transcoding video and audio codecs, and for converting between different container formats";
+    homepage = "http://www.transcoding.org/";
+    license = licenses.lgpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/transcribe/default.nix b/nixpkgs/pkgs/applications/audio/transcribe/default.nix
new file mode 100644
index 000000000000..d9469fa4b7ae
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/transcribe/default.nix
@@ -0,0 +1,73 @@
+{ stdenv, fetchzip, wrapGAppsHook, alsaLib, atk, cairo, gdk-pixbuf
+, glib, gst_all_1,  gtk3, libSM, libX11, libpng12, pango, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "transcribe";
+  version = "8.72";
+
+  src = if stdenv.hostPlatform.system == "i686-linux" then
+    fetchzip {
+      url = "https://www.seventhstring.com/xscribe/downlinux32/xscsetup.tar.gz";
+      sha256 = "1h5l7ry9c9awpxfnd29b0wm973ifrhj17xl5d2fdsclw2swsickb";
+    }
+  else if stdenv.hostPlatform.system == "x86_64-linux" then
+    fetchzip {
+      url = "https://www.seventhstring.com/xscribe/downlinux64/xsc64setup.tar.gz";
+      sha256 = "1rpd3ppnx5i5yrnfbjrx7h7dk48kwl99i9lnpa75ap7nxvbiznm0";
+    }
+  else throw "Platform not supported";
+
+  nativeBuildInputs = [ wrapGAppsHook ];
+
+  buildInputs = with gst_all_1; [ gst-plugins-base gst-plugins-good
+    gst-plugins-bad gst-plugins-ugly ];
+
+  dontPatchELF = true;
+
+  libPath = with gst_all_1; stdenv.lib.makeLibraryPath [
+    stdenv.cc.cc glib gtk3 atk pango cairo gdk-pixbuf alsaLib
+    libX11 libSM libpng12 gstreamer gst-plugins-base zlib
+  ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/libexec $out/share/doc
+    cp transcribe $out/libexec
+    cp xschelp.htb readme_gtk.html $out/share/doc
+    cp -r gtkicons $out/share/icons
+
+    ln -s $out/share/doc/xschelp.htb $out/libexec
+
+    patchelf \
+      --set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) \
+      $out/libexec/transcribe
+  '';
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH_1_0"
+      --prefix LD_LIBRARY_PATH : "${libPath}"
+    )
+  '';
+
+  postFixup = ''
+    ln -s $out/libexec/transcribe $out/bin/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Software to help transcribe recorded music";
+    longDescription = ''
+      The Transcribe! application is an assistant for people who want
+      to work out a piece of music from a recording, in order to write
+      it out, or play it themselves, or both. It doesn't do the
+      transcribing for you, but it is essentially a specialised player
+      program which is optimised for the purpose of transcription. It
+      has many transcription-specific features not found on
+      conventional music players.
+    '';
+    homepage = "https://www.seventhstring.com/xscribe/";
+    license = licenses.unfree;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ michalrus ];
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/traverso/default.nix b/nixpkgs/pkgs/applications/audio/traverso/default.nix
new file mode 100644
index 000000000000..63ba44bec35a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/traverso/default.nix
@@ -0,0 +1,31 @@
+{ mkDerivation, stdenv, fetchurl, cmake, pkgconfig
+, alsaLib, fftw, flac, lame, libjack2, libmad, libpulseaudio
+, libsamplerate, libsndfile, libvorbis, portaudio, qtbase, wavpack
+}:
+mkDerivation {
+  pname = "traverso";
+  version = "0.49.6";
+
+  src = fetchurl {
+    url = "https://traverso-daw.org/traverso-0.49.6.tar.gz";
+    sha256 = "12f7x8kw4fw1j0xkwjrp54cy4cv1ql0zwz2ba5arclk4pf6bhl7q";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [ alsaLib fftw flac.dev libjack2 lame
+                  libmad libpulseaudio libsamplerate.dev libsndfile.dev libvorbis
+                  portaudio qtbase wavpack ];
+
+  cmakeFlags = [ "-DWANT_PORTAUDIO=1" "-DWANT_PULSEAUDIO=1" "-DWANT_MP3_ENCODE=1" "-DWANT_LV2=0" ];
+
+  enableParallelBuilding = true;
+  hardeningDisable = [ "format" ];
+
+  meta = with stdenv.lib; {
+    description = "Cross-platform multitrack audio recording and audio editing suite";
+    homepage = "https://traverso-daw.org/";
+    license = with licenses; [ gpl2Plus lgpl21Plus ];
+    platforms = platforms.all;
+    maintainers = with maintainers; [ coconnor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/tree-from-tags/Gemfile b/nixpkgs/pkgs/applications/audio/tree-from-tags/Gemfile
new file mode 100644
index 000000000000..24f308f3f423
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/tree-from-tags/Gemfile
@@ -0,0 +1,3 @@
+source "https://rubygems.org"
+
+gem "taglib-ruby"
diff --git a/nixpkgs/pkgs/applications/audio/tree-from-tags/Gemfile.lock b/nixpkgs/pkgs/applications/audio/tree-from-tags/Gemfile.lock
new file mode 100644
index 000000000000..0ae90c1aebbe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/tree-from-tags/Gemfile.lock
@@ -0,0 +1,13 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    taglib-ruby (0.7.1)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  taglib-ruby
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/applications/audio/tree-from-tags/default.nix b/nixpkgs/pkgs/applications/audio/tree-from-tags/default.nix
new file mode 100644
index 000000000000..3b25b4218f19
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/tree-from-tags/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, bundlerEnv, ruby, fetchFromGitHub }:
+let
+  version = "1.1";
+  gems = bundlerEnv {
+    name = "tree-from-tags-${version}-gems";
+    inherit ruby;
+    gemdir  = ./.;
+  };
+in stdenv.mkDerivation {
+  pname = "tree-from-tags";
+  inherit version;
+  src = fetchFromGitHub {
+    owner  = "dbrock";
+    repo   = "bongo";
+    rev    = version;
+    sha256 = "1nszph9mn98flyhn1jq3y6mdh6jymjkvj5ng36ql016dj92apvhv";
+  };
+  buildInputs = [ gems ruby ];
+  installPhase = ''
+    mkdir -p $out/{bin,share}
+    cp tree-from-tags.rb $out/share/
+    bin=$out/bin/tree-from-tags
+# we are using bundle exec to start in the bundled environment
+    cat > $bin <<EOF
+#!/bin/sh -e
+exec ${gems}/bin/bundle exec ${ruby}/bin/ruby "$out"/share/tree-from-tags.rb "\$@"
+EOF
+    chmod +x $bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Create file hierarchies from media tags";
+    homepage = "https://www.emacswiki.org/emacs/Bongo";
+    platforms = ruby.meta.platforms;
+    maintainers = [ maintainers.livnev maintainers.dbrock ];
+    license = licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/tree-from-tags/gemset.nix b/nixpkgs/pkgs/applications/audio/tree-from-tags/gemset.nix
new file mode 100644
index 000000000000..20e10e9d93b0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/tree-from-tags/gemset.nix
@@ -0,0 +1,10 @@
+{
+  taglib-ruby = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0r8g7zdncc6243d000jn0grc1n70rn9mx16vggy3q7c4wgsa37xi";
+      type = "gem";
+    };
+    version = "0.7.1";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/audio/uade123/default.nix b/nixpkgs/pkgs/applications/audio/uade123/default.nix
new file mode 100644
index 000000000000..9130461e4d72
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/uade123/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, which, libao, pkgconfig }:
+
+let
+  version = "2.13";
+in stdenv.mkDerivation {
+  pname = "uade123";
+  inherit version;
+  src = fetchurl {
+    url = "http://zakalwe.fi/uade/uade2/uade-${version}.tar.bz2";
+    sha256 = "04nn5li7xy4g5ysyjjngmv5d3ibxppkbb86m10vrvadzxdd4w69v";
+  };
+  nativeBuildInputs = [ pkgconfig which ];
+  buildInputs = [ libao ];
+
+  enableParallelBuilding = true;
+  hardeningDisable = [ "format" ];
+
+  meta = with stdenv.lib; {
+    description = "Plays old Amiga tunes through UAE emulation and cloned m68k-assembler Eagleplayer API";
+    homepage = "http://zakalwe.fi/uade/";
+    license = licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.gnidorah ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/vcv-rack/default.nix b/nixpkgs/pkgs/applications/audio/vcv-rack/default.nix
new file mode 100644
index 000000000000..2aa09ec0be81
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/vcv-rack/default.nix
@@ -0,0 +1,103 @@
+{ stdenv, makeWrapper, fetchFromBitbucket, fetchFromGitHub, pkgconfig
+, alsaLib, curl, glew, glfw, gtk2-x11, jansson, libjack2, libXext, libXi
+, libzip, rtaudio, rtmidi, speex, libsamplerate }:
+
+let
+  # The package repo vendors some of the package dependencies as submodules.
+  # Others are downloaded with `make deps`. Due to previous issues with the
+  # `glfw` submodule (see above) and because we can not access the network when
+  # building in a sandbox, we fetch the dependency source manually.
+  pfft-source = fetchFromBitbucket {
+    owner = "jpommier";
+    repo = "pffft";
+    rev = "29e4f76ac53bef048938754f32231d7836401f79";
+    sha256 = "084csgqa6f1a270bhybjayrh3mpyi2jimc87qkdgsqcp8ycsx1l1";
+  };
+  nanovg-source = fetchFromGitHub {
+    owner = "memononen";
+    repo = "nanovg";
+    rev = "1f9c8864fc556a1be4d4bf1d6bfe20cde25734b4";
+    sha256 = "08r15zrr6p1kxigxzxrg5rgya7wwbdx7d078r362qbkmws83wk27";
+  };
+  nanosvg-source = fetchFromGitHub {
+    owner = "memononen";
+    repo = "nanosvg";
+    rev = "25241c5a8f8451d41ab1b02ab2d865b01600d949";
+    sha256 = "114qgfmazsdl53rm4pgqif3gv8msdmfwi91lyc2jfadgzfd83xkg";
+  };
+  osdialog-source = fetchFromGitHub {
+    owner = "AndrewBelt";
+    repo = "osdialog";
+    rev = "e5db5de6444f4b2c4e1390c67b3efd718080c3da";
+    sha256 = "0iqxn1md053nl19hbjk8rqsdcmjwa5l5z0ci4fara77q43rc323i";
+  };
+  oui-blendish-source = fetchFromGitHub {
+    owner = "AndrewBelt";
+    repo = "oui-blendish";
+    rev = "79ec59e6bc7201017fc13a20c6e33380adca1660";
+    sha256 = "17kd0lh2x3x12bxkyhq6z8sg6vxln8m9qirf0basvcsmylr6rb64";
+  };
+in
+with stdenv.lib; stdenv.mkDerivation rec {
+  pname = "VCV-Rack";
+  version = "1.1.6";
+
+  src = fetchFromGitHub {
+    owner = "VCVRack";
+    repo = "Rack";
+    rev = "v${version}";
+    sha256 = "0ji64prr74qzxf5bx1sw022kbslx9nzll16lmk5in78hbl137b3i";
+  };
+
+  patches = [
+    ./rack-minimize-vendoring.patch
+  ];
+
+  prePatch = ''
+    # As we can't use `make dep` to set up the dependencies (as explained
+    # above), we do it here manually
+    mkdir -p dep/include
+
+    cp -r ${pfft-source} dep/jpommier-pffft-source
+    cp -r ${nanovg-source}/* dep/nanovg
+    cp -r ${nanosvg-source}/* dep/nanosvg
+    cp -r ${osdialog-source}/* dep/osdialog
+    cp -r ${oui-blendish-source}/* dep/oui-blendish
+
+    cp dep/jpommier-pffft-source/*.h dep/include
+    cp dep/nanosvg/**/*.h dep/include
+    cp dep/nanovg/src/*.h dep/include
+    cp dep/osdialog/*.h dep/include
+    cp dep/oui-blendish/*.h dep/include
+
+    substituteInPlace include/audio.hpp --replace "<RtAudio.h>" "<rtaudio/RtAudio.h>"
+    substituteInPlace compile.mk --replace "-march=nocona" ""
+  '';
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ makeWrapper pkgconfig ];
+  buildInputs = [ alsaLib curl glew glfw gtk2-x11 jansson libjack2 libsamplerate libzip rtaudio rtmidi speex ];
+
+  buildFlags = [ "Rack" ];
+
+  installPhase = ''
+    install -D -m755 -t $out/bin Rack
+
+    mkdir -p $out/share/vcv-rack
+    cp -r res Core.json template.vcv LICENSE* cacert.pem $out/share/vcv-rack
+
+    # Override the default global resource file directory
+    wrapProgram $out/bin/Rack --add-flags "-s $out/share/vcv-rack"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Open-source virtual modular synthesizer";
+    homepage = "https://vcvrack.com/";
+    # The source is BSD-3 licensed, some of the art is CC-BY-NC 4.0 or under a
+    # no-derivatives clause
+    license = with licenses; [ bsd3 cc-by-nc-40 unfreeRedistributable ];
+    maintainers = with maintainers; [ moredread nathyong ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/vcv-rack/rack-minimize-vendoring.patch b/nixpkgs/pkgs/applications/audio/vcv-rack/rack-minimize-vendoring.patch
new file mode 100644
index 000000000000..d310d57835e4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/vcv-rack/rack-minimize-vendoring.patch
@@ -0,0 +1,13 @@
+diff -ru a/Makefile b/Makefile
+--- a/Makefile	1970-01-01 01:00:01.000000000 +0100
++++ b/Makefile	1970-01-01 01:00:01.000000000 +0100
+@@ -21,8 +21,8 @@
+ build/dep/osdialog/osdialog_gtk2.c.o: FLAGS += $(shell pkg-config --cflags gtk+-2.0)
+ 
+ 	LDFLAGS += -rdynamic \
+-		dep/lib/libGLEW.a dep/lib/libglfw3.a dep/lib/libjansson.a dep/lib/libcurl.a dep/lib/libssl.a dep/lib/libcrypto.a dep/lib/libzip.a dep/lib/libz.a dep/lib/libspeexdsp.a dep/lib/libsamplerate.a dep/lib/librtmidi.a dep/lib/librtaudio.a \
++		-lGLEW -lglfw -ljansson -lcurl -lssl -lcrypto -lzip -lz -lspeexdsp -lsamplerate -lrtmidi -lrtaudio \
+		-lpthread -lGL -ldl -lX11 -lasound -ljack \
+ 		$(shell pkg-config --libs gtk+-2.0)
+ 	TARGET := Rack
+ endif
diff --git a/nixpkgs/pkgs/applications/audio/vimpc/default.nix b/nixpkgs/pkgs/applications/audio/vimpc/default.nix
new file mode 100644
index 000000000000..bcbfa6d3874f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/vimpc/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, mpd_clientlib, ncurses, pcre, pkgconfig
+, taglib, curl }:
+
+stdenv.mkDerivation rec {
+  version = "0.09.2";
+  pname = "vimpc";
+
+  src = fetchFromGitHub {
+    owner = "boysetsfrog";
+    repo = "vimpc";
+    rev = "v${version}";
+    sha256 = "0lswzkap2nm7v5h7ppb6a64cb35rajysd09nb204rxgrkij4m6nx";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ mpd_clientlib ncurses pcre taglib curl ];
+
+  postInstall = ''
+    mkdir -p $out/etc
+    cp doc/vimpcrc.example $out/etc
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A vi/vim inspired client for the Music Player Daemon (mpd)";
+    homepage = "https://github.com/boysetsfrog/vimpc";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ pSub ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/vkeybd/default.nix b/nixpkgs/pkgs/applications/audio/vkeybd/default.nix
new file mode 100644
index 000000000000..0e8f12823d1e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/vkeybd/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, alsaLib, libX11, makeWrapper, tcl, tk }:
+
+stdenv.mkDerivation  rec {
+  pname = "vkeybd";
+  version = "0.1.18d";
+
+  src = fetchurl {
+    url = "ftp://ftp.suse.com/pub/people/tiwai/vkeybd/${pname}-${version}.tar.bz2";
+    sha256 = "0107b5j1gf7dwp7qb4w2snj4bqiyps53d66qzl2rwj4jfpakws5a";
+  };
+
+  buildInputs = [ alsaLib libX11 makeWrapper tcl tk ];
+
+  configurePhase = ''
+    mkdir -p $out/bin
+    sed -e "s@/usr/local@$out@" -i Makefile
+  '';
+
+  makeFlags = [ "TKLIB=-l${tk.libPrefix}" "TCLLIB=-l${tcl.libPrefix}" ];
+
+  postInstall = ''
+    wrapProgram $out/bin/vkeybd --set TK_LIBRARY "${tk}/lib/${tk.libPrefix}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Virtual MIDI keyboard";
+    homepage = "https://www.alsa-project.org/~tiwai/alsa.html";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.goibhniu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/vmpk/default.nix b/nixpkgs/pkgs/applications/audio/vmpk/default.nix
new file mode 100644
index 000000000000..2bc40a78af48
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/vmpk/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, cmake, pkgconfig
+, qt4, libjack2
+}:
+
+let
+  version = "0.5.1";
+in stdenv.mkDerivation rec {
+  pname = "vmpk";
+  inherit version;
+
+  meta = with stdenv.lib; {
+    description = "Virtual MIDI Piano Keyboard";
+    homepage    = "http://vmpk.sourceforge.net/";
+    license     = licenses.gpl3Plus;
+    platforms   = platforms.linux;
+  };
+
+  src = fetchurl {
+    url = "mirror://sourceforge/vmpk/${version}/${pname}-${version}.tar.bz2";
+    sha256 = "11fqnxgs9hr9255d93n7lazxzjwn8jpmn23nywdksh0pb1ffvfrc";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [ qt4 libjack2 ];
+}
diff --git a/nixpkgs/pkgs/applications/audio/vocal/default.nix b/nixpkgs/pkgs/applications/audio/vocal/default.nix
new file mode 100644
index 000000000000..6ef992ffff67
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/vocal/default.nix
@@ -0,0 +1,80 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, ninja
+, vala
+, pkgconfig
+, pantheon
+, gtk3
+, glib
+, glib-networking
+, libxml2
+, webkitgtk
+, clutter-gtk
+, clutter-gst
+, libunity
+, libnotify
+, sqlite
+, gst_all_1
+, json-glib
+, libgee
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "vocal";
+  version = "2.4.2";
+
+  src = fetchFromGitHub {
+    owner = "needle-and-thread";
+    repo = pname;
+    rev = version;
+    sha256 = "1c4n89rdl9r13kmmh2qymmy9sa6shjwai7df48k2kfn0pnzq5mad";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    libxml2
+    ninja
+    vala
+    pkgconfig
+    wrapGAppsHook
+  ];
+
+  buildInputs = with gst_all_1; [
+    clutter-gst
+    clutter-gtk
+    glib
+    gst-plugins-base
+    gst-plugins-good
+    gstreamer
+    gtk3
+    json-glib
+    libgee
+    libnotify
+    libunity
+    pantheon.elementary-icon-theme
+    pantheon.granite
+    sqlite
+    webkitgtk
+    glib-networking
+  ];
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+
+  meta = with stdenv.lib; {
+    description = "The podcast client for the modern free desktop";
+    longDescription = ''
+      Vocal is a powerful, fast, and intuitive application that helps users find new podcasts, manage their libraries, and enjoy the best that indepedent audio and video publishing has to offer. Vocal features full support for both episode downloading and streaming, native system integration, iTunes store search and top 100 charts (with international results support), iTunes link parsing, OPML importing and exporting, and so much more. Plus, it has great smart features like automatically keeping your library clean from old files, and the ability to set custom skip intervals.
+    '';
+    homepage = "https://github.com/needle-and-thread/vocal";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ worldofpeace ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/vorbis-tools/default.nix b/nixpkgs/pkgs/applications/audio/vorbis-tools/default.nix
new file mode 100644
index 000000000000..2270e56e62ac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/vorbis-tools/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, fetchzip, libogg, libvorbis, libao, pkgconfig, curl
+, speex, flac }:
+
+let
+  debPatch = fetchzip {
+    url = "mirror://debian/pool/main/v/vorbis-tools/vorbis-tools_1.4.0-11.debian.tar.xz";
+    sha256 = "0kvmd5nslyqplkdb7pnmqj47ir3y5lmaxd12wmrnqh679a8jhcyi";
+  };
+in
+stdenv.mkDerivation {
+  name = "vorbis-tools-1.4.0";
+  src = fetchurl {
+    url = "http://downloads.xiph.org/releases/vorbis/vorbis-tools-1.4.0.tar.gz";
+    sha256 = "1g12bnh5ah08v529y72kfdz5lhvy75iaz7f9jskyby23m9dkk2d3";
+  };
+
+  postPatch = ''
+    for patch in $(ls "${debPatch}"/patches/*.{diff,patch} | grep -v debian_subdir)
+    do patch -p1 < "$patch"
+    done
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libogg libvorbis libao curl speex flac ];
+
+  meta = with stdenv.lib; {
+    description = "Extra tools for Ogg-Vorbis audio codec";
+    longDescription = ''
+      A set of command-line tools to manipulate Ogg Vorbis audio
+      files, notably the `ogg123' player and the `oggenc' encoder.
+    '';
+    homepage = "https://xiph.org/vorbis/";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/audio/waon/default.nix b/nixpkgs/pkgs/applications/audio/waon/default.nix
new file mode 100644
index 000000000000..bc05547e641d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/waon/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, fftw, gtk2, libao, libsamplerate
+, libsndfile, ncurses, pkgconfig
+}:
+
+stdenv.mkDerivation rec {
+  pname = "waon";
+  version = "0.11";
+
+  src = fetchFromGitHub {
+    owner = "kichiki";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1xmq8d2rj58xbp4rnyav95y1vnz3r9s9db7xxfa2rd0ilq0ps4y7";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ fftw gtk2 libao libsamplerate libsndfile ncurses ];
+
+  installPhase = ''
+    install -Dt $out/bin waon pv gwaon
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A Wave-to-Notes transcriber";
+    homepage = "https://kichiki.github.io/WaoN/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.puckipedia ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/wavegain/default.nix b/nixpkgs/pkgs/applications/audio/wavegain/default.nix
new file mode 100644
index 000000000000..d9b13f532735
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/wavegain/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation {
+  name = "wavegain-1.3.1";
+  src = fetchFromGitHub {
+    owner = "MestreLion";
+    repo = "wavegain";
+    rev = "c928eaf97aeec5732625491b64c882e08e314fee";
+    sha256 = "0wghqnsbypmr4xcrhb568bfjdnxzzp8qgnws3jslzmzf34dpk5ls";
+  };
+
+  installPhase = ''
+    strip -s wavegain
+    install -vD wavegain "$out/bin/wavegain"
+  '';
+
+  meta = {
+    description = "ReplayGain for wave files";
+    homepage = "https://github.com/MestreLion/wavegain";
+    license = stdenv.lib.licenses.lgpl21;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.robbinch ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/whipper/default.nix b/nixpkgs/pkgs/applications/audio/whipper/default.nix
new file mode 100644
index 000000000000..5cbc9a07b6c7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/whipper/default.nix
@@ -0,0 +1,62 @@
+{ stdenv, fetchFromGitHub, python3, cdparanoia, cdrdao, flac
+, sox, accuraterip-checksum, libsndfile, utillinux, substituteAll }:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "whipper";
+  version = "0.9.1.dev7+g${stdenv.lib.substring 0 7 src.rev}";
+
+  src = fetchFromGitHub {
+    owner = "whipper-team";
+    repo = "whipper";
+    rev = "9e95f0604fa30ab06445fe46e3bc93bba6092a05";
+    sha256 = "1c2qldw9vxpvdfh5wl6mfcd7zzz3v8r86ffqll311lcp2zin33dg";
+  };
+
+  pythonPath = with python3.pkgs; [
+    musicbrainzngs
+    mutagen
+    pycdio
+    pygobject3
+    requests
+    ruamel_yaml
+    setuptools
+    setuptools_scm
+  ];
+
+  buildInputs = [ libsndfile ];
+
+  checkInputs = with python3.pkgs; [
+    twisted
+  ];
+
+  patches = [
+    (substituteAll {
+      src = ./paths.patch;
+      inherit cdparanoia;
+    })
+  ];
+
+  makeWrapperArgs = [
+    "--prefix" "PATH" ":" (stdenv.lib.makeBinPath [ accuraterip-checksum cdrdao utillinux flac sox ])
+  ];
+
+  preBuild = ''
+    export SETUPTOOLS_SCM_PRETEND_VERSION="${version}"
+  '';
+
+  # some tests require internet access
+  # https://github.com/JoeLametta/whipper/issues/291
+  doCheck = false;
+
+  preCheck = ''
+    HOME=$TMPDIR
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/whipper-team/whipper";
+    description = "A CD ripper aiming for accuracy over speed";
+    maintainers = with maintainers; [ rycee emily ];
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/whipper/paths.patch b/nixpkgs/pkgs/applications/audio/whipper/paths.patch
new file mode 100644
index 000000000000..14b5384330da
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/whipper/paths.patch
@@ -0,0 +1,32 @@
+--- a/whipper/program/cdparanoia.py
++++ b/whipper/program/cdparanoia.py
+@@ -280,10 +280,10 @@
+ 
+         bufsize = 1024
+         if self._overread:
+-            argv = ["cd-paranoia", "--stderr-progress",
++            argv = ["@cdparanoia@/bin/cdparanoia", "--stderr-progress",
+                     "--sample-offset=%d" % self._offset, "--force-overread", ]
+         else:
+-            argv = ["cd-paranoia", "--stderr-progress",
++            argv = ["@cdparanoia@/bin/cdparanoia", "--stderr-progress",
+                     "--sample-offset=%d" % self._offset, ]
+         if self._device:
+             argv.extend(["--force-cdrom-device", self._device, ])
+@@ -560,7 +560,7 @@
+ 
+ def getCdParanoiaVersion():
+     getter = common.VersionGetter('cd-paranoia',
+-                                  ["cd-paranoia", "-V"],
++                                  ["@cdparanoia@/bin/cdparanoia", "-V"],
+                                   _VERSION_RE,
+                                   "%(version)s %(release)s")
+ 
+@@ -585,7 +585,7 @@
+     def __init__(self, device=None):
+         # cdparanoia -A *always* writes cdparanoia.log
+         self.cwd = tempfile.mkdtemp(suffix='.whipper.cache')
+-        self.command = ['cd-paranoia', '-A']
++        self.command = ['@cdparanoia@/bin/cdparanoia', '-A']
+         if device:
+             self.command += ['-d', device]
diff --git a/nixpkgs/pkgs/applications/audio/wolf-shaper/default.nix b/nixpkgs/pkgs/applications/audio/wolf-shaper/default.nix
new file mode 100644
index 000000000000..7d42a3c4e7bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/wolf-shaper/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchFromGitHub , libjack2, lv2, xorg, liblo, libGL, libXcursor, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "wolf-shaper";
+  version = "0.1.7";
+
+  src = fetchFromGitHub {
+    owner = "pdesaulniers";
+    repo = "wolf-shaper";
+    rev = "v${version}";
+    sha256 = "0lllgcbnnh1m95bp29hh17x170hl7170zizjrvy892qfkn36830d";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libjack2 lv2 xorg.libX11 liblo libGL libXcursor  ];
+
+  makeFlags = [
+    "BUILD_LV2=true"
+    "BUILD_DSSI=true"
+    "BUILD_VST2=true"
+    "BUILD_JACK=true"
+  ];
+
+  patchPhase = ''
+    patchShebangs ./dpf/utils/generate-ttl.sh
+  '';
+
+  installPhase = ''
+    mkdir -p $out/lib/lv2
+    mkdir -p $out/lib/dssi
+    mkdir -p $out/lib/vst
+    mkdir -p $out/bin/
+    cp -r bin/wolf-shaper.lv2    $out/lib/lv2/
+    cp -r bin/wolf-shaper-dssi*  $out/lib/dssi/
+    cp -r bin/wolf-shaper-vst.so $out/lib/vst/
+    cp -r bin/wolf-shaper        $out/bin/
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://pdesaulniers.github.io/wolf-shaper/";
+    description = "Waveshaper plugin with spline-based graph editor";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/x42-avldrums/default.nix b/nixpkgs/pkgs/applications/audio/x42-avldrums/default.nix
new file mode 100644
index 000000000000..fb05a50b4e59
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/x42-avldrums/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, pkgconfig, cairo, glib, libGLU, lv2, pango }:
+
+stdenv.mkDerivation rec {
+  pname = "x42-avldrums";
+  version = "0.4.1";
+
+  src = fetchFromGitHub {
+    owner = "x42";
+    repo = "avldrums.lv2";
+    rev = "v${version}";
+    sha256 = "1vwdp3d8qzd493qa99ddya7iql67bbfxmbcl8hk96lxif2lhmyws";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ cairo glib libGLU lv2 pango ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Drum sample player LV2 plugin dedicated to Glen MacArthur's AVLdrums";
+    homepage = "https://x42-plugins.com/x42/x42-avldrums";
+    maintainers = with maintainers; [ magnetophon orivej ];
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/x42-gmsynth/default.nix b/nixpkgs/pkgs/applications/audio/x42-gmsynth/default.nix
new file mode 100644
index 000000000000..7a96e3fd4f2f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/x42-gmsynth/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, pkgconfig, glib, lv2 }:
+
+stdenv.mkDerivation rec {
+  pname = "x42-gmsynth";
+  version = "0.4.1";
+
+  src = fetchFromGitHub {
+    owner = "x42";
+    repo = "gmsynth.lv2";
+    rev = "v${version}";
+    sha256 = "08dvdj8r17sfl6l18g2b8abgls2irkbrq5vhrfai01hp2m0rlm34";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ glib lv2 ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Chris Colins' General User soundfont player LV2 plugin";
+    homepage = "https://x42-plugins.com/x42/x42-gmsynth";
+    maintainers = with maintainers; [ orivej ];
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/x42-plugins/default.nix b/nixpkgs/pkgs/applications/audio/x42-plugins/default.nix
new file mode 100644
index 000000000000..20f87725f991
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/x42-plugins/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, pkgconfig
+, libltc, libsndfile, libsamplerate, ftgl, freefont_ttf, libjack2
+, libGLU, lv2, gtk2, cairo, pango, fftwFloat, zita-convolver }:
+
+stdenv.mkDerivation rec {
+  version = "20200411";
+  pname = "x42-plugins";
+
+  src = fetchurl {
+    url = "https://gareus.org/misc/x42-plugins/${pname}-${version}.tar.xz";
+    sha256 = "0y6778l2zc80kvp31mqw3vkcyi7g613jxn3g3lxqfa31i617gh6j";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libGLU ftgl freefont_ttf libjack2 libltc libsndfile libsamplerate lv2 gtk2 cairo pango fftwFloat zita-convolver ];
+
+  # Don't remove this. The default fails with 'do not know how to unpack source archive'
+  # every now and then on Hydra. No idea why.
+  unpackPhase = ''
+    tar xf $src
+    sourceRoot=$(echo x42-plugins-*)
+    chmod -R u+w $sourceRoot
+  '';
+
+  makeFlags = [ "PREFIX=$(out)" "FONTFILE=${freefont_ttf}/share/fonts/truetype/FreeSansBold.ttf" ];
+
+  patchPhase = ''
+    patchShebangs ./stepseq.lv2/gridgen.sh
+    patchShebangs ./matrixmixer.lv2/genttl.sh
+    patchShebangs ./matrixmixer.lv2/genhead.sh
+    sed -i 's|/usr/include/zita-convolver.h|${zita-convolver}/include/zita-convolver.h|g' ./convoLV2/Makefile
+  '';
+
+  meta = with stdenv.lib;
+    { description = "Collection of LV2 plugins by Robin Gareus";
+      homepage = "https://github.com/x42/x42-plugins";
+      maintainers = with maintainers; [ magnetophon ];
+      license = licenses.gpl2;
+      platforms = [ "i686-linux" "x86_64-linux" ];
+    };
+}
diff --git a/nixpkgs/pkgs/applications/audio/xmp/default.nix b/nixpkgs/pkgs/applications/audio/xmp/default.nix
new file mode 100644
index 000000000000..d234f6b6b8cc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/xmp/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, pkgconfig, alsaLib, libxmp }:
+
+stdenv.mkDerivation rec {
+  name = "xmp-4.1.0";
+
+  meta = with stdenv.lib; {
+    description = "Extended module player";
+    homepage    = "http://xmp.sourceforge.net/";
+    license     = licenses.gpl2Plus;
+    platforms   = platforms.linux;
+  };
+
+  src = fetchurl {
+    url = "mirror://sourceforge/xmp/xmp/${name}.tar.gz";
+    sha256 = "17i8fc7x7yn3z1x963xp9iv108gxfakxmdgmpv3mlm438w3n3g8x";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ alsaLib libxmp ];
+}
diff --git a/nixpkgs/pkgs/applications/audio/xsynth-dssi/default.nix b/nixpkgs/pkgs/applications/audio/xsynth-dssi/default.nix
new file mode 100644
index 000000000000..c0803ffa4185
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/xsynth-dssi/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, alsaLib, autoconf, automake, dssi, gtk2, libjack2,
+ladspaH, ladspaPlugins, liblo, pkgconfig }:
+
+stdenv.mkDerivation  rec {
+  pname = "xsynth-dssi";
+  version = "0.9.4";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/dssi/${pname}-${version}.tar.gz";
+    sha256 = "00nwv2pqjbmxqdc6xdm0cljq6z05lv4y6bibmhz1kih9lm0lklnk";
+  };
+
+  buildInputs = [ alsaLib autoconf automake dssi gtk2 libjack2 ladspaH
+    ladspaPlugins liblo pkgconfig ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mkdir -p $out/lib
+    cp src/Xsynth_gtk $out/bin
+    cp src/.libs/* $out/lib
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Classic-analog (VCOs-VCF-VCA) style software synthesizer";
+    longDescription = ''
+      Xsynth-DSSI is a classic-analog (VCOs-VCF-VCA) style software
+      synthesizer which operates as a plugin for the DSSI Soft Synth
+      Interface.  DSSI is a plugin API for software instruments (soft
+      synths) with user interfaces, permitting them to be hosted
+      in-process by audio applications.
+    '';
+    homepage = "http://dssi.sourceforge.net/download.html#Xsynth-DSSI";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.goibhniu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/yasr/10_fix_openpty_forkpty_declarations b/nixpkgs/pkgs/applications/audio/yasr/10_fix_openpty_forkpty_declarations
new file mode 100644
index 000000000000..f575af5ecd31
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/yasr/10_fix_openpty_forkpty_declarations
@@ -0,0 +1,25 @@
+Disable openpty() and forkpty() prototypes when needed.
+--- a/yasr/yasr.h
++++ b/yasr/yasr.h
+@@ -308,8 +308,10 @@ extern void opt_set(int num, void *val);
+ extern void opt_queue_empty(int ll);
+ extern void opt_write(FILE * fp);
+ 
++#ifndef HAVE_OPENPTY
+ /* openpty.c prototypes */
+ extern int openpty(int *, int *, char *, struct termios *, struct winsize *);
++#endif
+ 
+ /* cfmakeraw.c prototypes */
+ extern void cfmakeraw(struct termios *);
+@@ -317,8 +319,10 @@ extern void cfmakeraw(struct termios *);
+ /* login_tty.c prototypes */
+ extern int login_tty(int);
+ 
++#ifndef HAVE_FORKPTY
+ /* forkpty.c prototypes */
+ extern int forkpty(int *, char *, struct termios *, struct winsize *);
++#endif
+ 
+ /* tbc - Would it be more efficient to ensure that "blank" grids always held
+    ascii 0x20 rather than ascii 0x00? */
diff --git a/nixpkgs/pkgs/applications/audio/yasr/20_maxpathlen b/nixpkgs/pkgs/applications/audio/yasr/20_maxpathlen
new file mode 100644
index 000000000000..386c6cbf22bd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/yasr/20_maxpathlen
@@ -0,0 +1,11 @@
+--- a/yasr/config.c.orig	2011-11-28 03:56:58.764995828 +0100
++++ a/yasr/config.c	2011-11-28 03:57:00.048967703 +0100
+@@ -60,7 +60,7 @@
+   int args, arg[16], *argp;
+   int i, key, ln = 0, mode = 0;
+   char *home, *ptr, *s;
+-  char confname[MAXPATHLEN];
++  char confname[strlen(PACKAGE_DATA_DIR) + 10 + 1];
+ 
+   if ((home = getenv("HOME")) != NULL)
+   {
diff --git a/nixpkgs/pkgs/applications/audio/yasr/30_conf b/nixpkgs/pkgs/applications/audio/yasr/30_conf
new file mode 100644
index 000000000000..98e959f55f31
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/yasr/30_conf
@@ -0,0 +1,18 @@
+diff --git a/yasr.conf b/yasr.conf
+index 1e07fc6..72f5922 100644
+--- a/yasr.conf
++++ b/yasr.conf
+@@ -59,11 +59,11 @@ synthesizer=emacspeak server
+ #synthesizer=speech dispatcher
+ #synthesizer port=S0
+ #synthesizer port=l0
+-synthesizer port=|/usr/local/bin/eflite
++synthesizer port=|eflite
+ # Below line appropriate for Speech Dispatcher in its default configuration
+ #synthesizer port=127.0.0.1:6560
+ key echo=off
+-shell=/bin/bash
++shell=/bin/sh
+ special=off
+ up and down arrows=speak line
+ DisableKey=6925
diff --git a/nixpkgs/pkgs/applications/audio/yasr/40_dectalk_extended_chars b/nixpkgs/pkgs/applications/audio/yasr/40_dectalk_extended_chars
new file mode 100644
index 000000000000..cc1f0af86065
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/yasr/40_dectalk_extended_chars
@@ -0,0 +1,14 @@
+Index: yasr-0.6.9/yasr/tts.c
+===================================================================
+--- yasr-0.6.9.orig/yasr/tts.c	2008-02-03 00:10:07.000000000 +1100
++++ yasr-0.6.9/yasr/tts.c	2012-02-05 10:59:06.059007839 +1100
+@@ -281,6 +281,9 @@
+   char *p = synth[tts.synth].unspeakable;
+ 
+   if (ch < 32) return 1;
++  /* characters with high bit set cause DECTALK to crash */
++  if (tts.synth == TTS_DECTALK && ch & 0x80)
++    return 1;
+   while (*p)
+   {
+     if (*p++ == ch) return 1;
diff --git a/nixpkgs/pkgs/applications/audio/yasr/default.nix b/nixpkgs/pkgs/applications/audio/yasr/default.nix
new file mode 100644
index 000000000000..68423197f3c8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/yasr/default.nix
@@ -0,0 +1,28 @@
+{stdenv,fetchurl}:
+
+stdenv.mkDerivation rec {
+  pname = "yasr";
+
+  version = "0.6.9";
+
+  src = fetchurl {
+    url = "https://sourceforge.net/projects/yasr/files/yasr/${version}/${pname}-${version}.tar.gz";
+    sha256 = "1prv9r9y6jb5ga5578ldiw507fa414m60xhlvjl29278p3x7rwa1";
+  };
+
+  patches = [
+    ./10_fix_openpty_forkpty_declarations
+    ./20_maxpathlen
+    ./30_conf
+    ./40_dectalk_extended_chars
+  ]; # taken from the debian yasr package
+
+  meta = {
+    homepage = "http://yasr.sourceforge.net";
+    description = "A general-purpose console screen reader";
+    longDescription = "Yasr is a general-purpose console screen reader for GNU/Linux and other Unix-like operating systems.";
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [ jhhuh ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ympd/default.nix b/nixpkgs/pkgs/applications/audio/ympd/default.nix
new file mode 100644
index 000000000000..8f86d6e7ba93
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ympd/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, mpd_clientlib, openssl }:
+
+stdenv.mkDerivation rec {
+  pname = "ympd";
+  version = "1.3.0";
+
+  src = fetchFromGitHub {
+    owner = "notandy";
+    repo = "ympd";
+    rev = "v${version}";
+    sha256 = "1nvb19jd556v2h2bi7w4dcl507p3p8xvjkqfzrcsy7ccy3502brq";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ cmake mpd_clientlib openssl ];
+
+  meta = {
+    homepage = "https://www.ympd.org";
+    description = "Standalone MPD Web GUI written in C, utilizing Websockets and Bootstrap/JS";
+    maintainers = [ stdenv.lib.maintainers.siddharthist ];
+    platforms = stdenv.lib.platforms.unix;
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/yoshimi/default.nix b/nixpkgs/pkgs/applications/audio/yoshimi/default.nix
new file mode 100644
index 000000000000..2b0a89bbaf5b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/yoshimi/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchFromGitHub , alsaLib, boost, cairo, cmake, fftwSinglePrec, fltk, pcre
+, libjack2, libsndfile, libXdmcp, readline, lv2, libGLU, libGL, minixml, pkgconfig, zlib, xorg
+}:
+
+assert stdenv ? glibc;
+
+stdenv.mkDerivation  rec {
+  pname = "yoshimi";
+  # Fix build with lv2 1.18: https://github.com/Yoshimi/yoshimi/pull/102/commits/86996cbb235f0fe138ae814a6758c2c8ba1c2a38
+  version = "unstable-2020-05-10";
+
+  src = fetchFromGitHub {
+    owner = "Yoshimi";
+    repo = pname;
+    rev = "86996cbb235f0fe138ae814a6758c2c8ba1c2a38";
+    sha256 = "0bgcc5fbgwpdjircq00wlii30pakf45yzligpbnf02a554hh4j01";
+  };
+  buildInputs = [
+    alsaLib boost cairo fftwSinglePrec fltk libjack2 libsndfile libXdmcp readline lv2 libGLU libGL
+    minixml zlib xorg.libpthreadstubs pcre
+  ];
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  patchPhase = ''
+    substituteInPlace src/Misc/Config.cpp --replace /usr $out
+    substituteInPlace src/Misc/Bank.cpp --replace /usr $out
+  '';
+
+  preConfigure = "cd src";
+
+  cmakeFlags = [ "-DFLTK_MATH_LIBRARY=${stdenv.glibc.out}/lib/libm.so" ];
+
+  meta = with stdenv.lib; {
+    description = "High quality software synthesizer based on ZynAddSubFX";
+    longDescription = ''
+      Yoshimi delivers the same synthesizer capabilities as
+      ZynAddSubFX along with very good Jack and Alsa midi/audio
+      functionality on Linux
+    '';
+    homepage = "http://yoshimi.sourceforge.net";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.goibhniu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/zam-plugins/default.nix b/nixpkgs/pkgs/applications/audio/zam-plugins/default.nix
new file mode 100644
index 000000000000..a34773513d93
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/zam-plugins/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchgit , boost, libX11, libGL, liblo, libjack2, ladspaH, lv2, pkgconfig, rubberband, libsndfile, fftwFloat, libsamplerate }:
+
+stdenv.mkDerivation {
+  pname = "zam-plugins";
+  version = "3.12";
+
+  src = fetchgit {
+    url = "https://github.com/zamaudio/zam-plugins.git";
+    deepClone = true;
+    rev = "87fdee6e87dbee75c1088e2327ea59c1ab1522e4";
+    sha256 = "0kz0xygff3ca1v9nqi0dvrzy9whbzqxrls5b7hydi808d795893n";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ boost libX11 libGL liblo libjack2 ladspaH lv2 rubberband libsndfile fftwFloat libsamplerate ];
+
+  postPatch = ''
+    patchShebangs ./dpf/utils/generate-ttl.sh
+  '';
+
+  makeFlags = [
+    "PREFIX=${placeholder ''out''}"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.zamaudio.com/?p=976";
+    description = "A collection of LV2/LADSPA/VST/JACK audio plugins by ZamAudio";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/zita-ajbridge/default.nix b/nixpkgs/pkgs/applications/audio/zita-ajbridge/default.nix
new file mode 100644
index 000000000000..ad2ea53e9f7e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/zita-ajbridge/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, alsaLib, libjack2, zita-alsa-pcmi, zita-resampler }:
+
+stdenv.mkDerivation rec {
+  name = "zita-ajbridge-0.8.4";
+
+  src = fetchurl {
+    url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${name}.tar.bz2";
+    sha256 = "0g5v0l0zmqh049mhv62n8s5bpm0yrlby7mkxxhs5qwadp8v4w9mw";
+  };
+
+  buildInputs = [ alsaLib libjack2 zita-alsa-pcmi zita-resampler ];
+
+  preConfigure = ''
+    cd ./source/
+  '';
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "MANDIR=$(out)/share/man/man1"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Connect additional ALSA devices to JACK";
+    homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/index.html";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/zita-at1/default.nix b/nixpkgs/pkgs/applications/audio/zita-at1/default.nix
new file mode 100644
index 000000000000..d357febd882e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/zita-at1/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl
+, cairo, fftwSinglePrec, libX11, libXft, libclthreads, libclxclient, libjack2
+, xorgproto, zita-resampler
+}:
+
+stdenv.mkDerivation rec {
+  name = "zita-at1-0.6.2";
+
+  src = fetchurl {
+    url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${name}.tar.bz2";
+    sha256 = "0mxfn61zvhlq3r1mqipyqzjbanrfdkk8x4nxbz8nlbdk0bf3vfqr";
+  };
+
+  buildInputs = [
+    cairo fftwSinglePrec libX11 libXft libclthreads libclxclient libjack2
+    xorgproto zita-resampler
+  ];
+
+  preConfigure = ''
+    cd ./source/
+  '';
+
+  makeFlags = [
+    "PREFIX=$(out)"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Autotuner Jack application to correct the pitch of vocal tracks";
+    homepage = "https://kokkinizita.linuxaudio.org/linuxaudio/index.html";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/zita-njbridge/default.nix b/nixpkgs/pkgs/applications/audio/zita-njbridge/default.nix
new file mode 100644
index 000000000000..3a293cfc026f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/zita-njbridge/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, libjack2, zita-resampler }:
+
+stdenv.mkDerivation rec {
+  version = "0.4.4";
+  pname = "zita-njbridge";
+
+  src = fetchurl {
+    url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${pname}-${version}.tar.bz2";
+    sha256 = "1l8rszdjhp0gq7mr54sdgfs6y6cmw11ssmqb1v9yrkrz5rmwzg8j";
+  };
+
+  buildInputs = [ libjack2 zita-resampler ];
+
+  preConfigure = ''
+    cd ./source/
+  '';
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "MANDIR=$(out)"
+    "SUFFIX=''"
+  ];
+
+
+  meta = with stdenv.lib; {
+    description = "command line Jack clients to transmit full quality multichannel audio over a local IP network";
+    homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/index.html";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/zynaddsubfx/default.nix b/nixpkgs/pkgs/applications/audio/zynaddsubfx/default.nix
new file mode 100644
index 000000000000..9a432f73d3f0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/zynaddsubfx/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, alsaLib, cairo, cmake, libjack2, fftw, fltk13, lash,  libjpeg
+, libXpm, minixml, ntk, pkgconfig, zlib, liblo
+}:
+
+stdenv.mkDerivation  rec {
+  pname = "zynaddsubfx";
+  version = "3.0.5";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/zynaddsubfx/zynaddsubfx-${version}.tar.bz2";
+    sha256 = "0qwzg14h043rmyf9jqdylxhyfy4sl0vsr0gjql51wjhid0i34ivl";
+  };
+
+  buildInputs = [ alsaLib cairo libjack2 fftw fltk13 lash libjpeg libXpm minixml ntk zlib liblo ];
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  patchPhase = ''
+    substituteInPlace src/Misc/Config.cpp --replace /usr $out
+  '';
+
+  hardeningDisable = [ "format" ];
+
+  meta = with stdenv.lib; {
+    description = "High quality software synthesizer";
+    homepage = "http://zynaddsubfx.sourceforge.net";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.goibhniu maintainers.nico202 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/backup/areca/default.nix b/nixpkgs/pkgs/applications/backup/areca/default.nix
new file mode 100644
index 000000000000..b4d644430dd1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/backup/areca/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl, ant, jre, jdk, swt, acl, attr }:
+
+stdenv.mkDerivation {
+  name = "areca-7.5";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/areca/areca-stable/areca-7.5/areca-7.5-src.tar.gz";
+    sha256 = "1q4ha9s96c1syplxm04bh1v1gvjq16l4pa8w25w95d2ywwvyq1xb";
+  };
+
+  sourceRoot = ".";
+
+  buildInputs = [ jdk ant acl attr ];
+
+  patches = [ ./fix-javah-bug.diff ];
+
+  postPatch = ''
+    substituteInPlace build.xml --replace "/usr/lib/java/swt.jar" "${swt}/jars/swt.jar"
+    substituteInPlace build.xml --replace "gcc" "${stdenv.cc}/bin/gcc"
+    substituteInPlace areca.sh --replace "bin/" ""
+    substituteInPlace bin/areca_run.sh --replace "/usr/java" "${jre}/lib/openjdk"
+    substituteInPlace bin/areca_run.sh --replace "/usr/lib/java/swt.jar" "${swt}/jars/swt.jar"
+
+    # Fix for NixOS/nixpkgs/issues/53716
+    sed -i -e 's;^;#include <attr/attributes.h>;' jni/com_myJava_file_metadata_posix_jni_wrapper_FileAccessWrapper.c
+    substituteInPlace jni/com_myJava_file_metadata_posix_jni_wrapper_FileAccessWrapper.c --replace attr/xattr.h sys/xattr.h
+
+    sed -i "s#^PROGRAM_DIR.*#PROGRAM_DIR=$out#g" bin/areca_run.sh
+    sed -i "s#^LIBRARY_PATH.*#LIBRARY_PATH=$out/lib:${stdenv.lib.makeLibraryPath [ swt acl ]}#g" bin/areca_run.sh
+
+    # https://sourceforge.net/p/areca/bugs/563/
+    substituteInPlace bin/areca_run.sh --replace '[ "$JAVA_IMPL" = "java" ]' \
+      '[[ "$JAVA_IMPL" = "java" || "$JAVA_IMPL" = "openjdk" ]]'
+  '';
+
+  buildPhase = "ant";
+
+  installPhase = ''
+    mkdir -p $out/bin $out/lib $out/translations
+    cp areca.sh $out/bin/areca
+    cp -r bin $out
+    cp -r lib $out
+    cp -r translations $out
+    cp COPYING $out
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.areca-backup.org/";
+    description = "An Open Source personal backup solution";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ pSub ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/backup/areca/fix-javah-bug.diff b/nixpkgs/pkgs/applications/backup/areca/fix-javah-bug.diff
new file mode 100644
index 000000000000..5d5feaf9b943
--- /dev/null
+++ b/nixpkgs/pkgs/applications/backup/areca/fix-javah-bug.diff
@@ -0,0 +1,24 @@
+diff --git a/build.xml b/build.xml
+index 1ba08e0..9248b76 100644
+--- a/build.xml
++++ b/build.xml
+@@ -56,10 +56,16 @@
+
+     <target name="compilejni" unless="isWindows">
+         <description>JNI compilation task (builds libarecafs.so ... for unix-like operating systems only)</description>
++
+         <!--Generate the JNI header-->
+-        <javah destdir="${root}/jni" force="yes" classpath="${root}/lib/areca.jar">
+-            <class name="com.myJava.file.metadata.posix.jni.wrapper.FileAccessWrapper"/>
+-        </javah>
++	<exec executable="javah">
++		<arg value="-d"/>
++		<arg value="${root}/jni"/>
++		<arg value="-force"/>
++		<arg value="-classpath"/>
++		<arg value="${root}/lib/areca.jar"/>
++		<arg value="com.myJava.file.metadata.posix.jni.wrapper.FileAccessWrapper"/>
++	</exec>
+
+         <!-- Compile the JNI code -->
+         <exec dir="${root}/jni" executable="gcc">
diff --git a/nixpkgs/pkgs/applications/backup/deja-dup/default.nix b/nixpkgs/pkgs/applications/backup/deja-dup/default.nix
new file mode 100644
index 000000000000..d283dc7107d7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/backup/deja-dup/default.nix
@@ -0,0 +1,112 @@
+{ stdenv
+, fetchFromGitLab
+, substituteAll
+, meson
+, ninja
+, pkgconfig
+, vala
+, gettext
+, gnome3
+, libnotify
+, itstool
+, glib
+, gtk3
+, libxml2
+, gnome-online-accounts
+, coreutils
+, libsoup
+, libsecret
+, pcre
+, libxkbcommon
+, wrapGAppsHook
+, libpthreadstubs
+, libXdmcp
+, epoxy
+, at-spi2-core
+, dbus
+, libgpgerror
+, json-glib
+, appstream-glib
+, desktop-file-utils
+, duplicity
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deja-dup";
+  version = "40.6";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "World";
+    repo = pname;
+    rev = version;
+    sha256 = "1d4g34g660wv42a4k2511bxrh90z0vdl3v7ahg0m45phijg9n2n1";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      inherit coreutils;
+    })
+
+    # Hardcode GSettings path for Nautilus extension to avoid crashes from missing schemas
+    ./hardcode-gsettings.patch
+  ];
+
+  postPatch = ''
+    # substitute variable from hardcode-gsettings.patch
+    substituteInPlace deja-dup/nautilus/NautilusExtension.c --subst-var-by DEJA_DUP_GSETTINGS_PATH "${glib.makeSchemaPath (placeholder "out") "${pname}-${version}"}"
+  '';
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkgconfig
+    vala
+    gettext
+    itstool
+    appstream-glib
+    desktop-file-utils
+    libxml2
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    libnotify
+    libsoup
+    glib
+    gtk3
+    libsecret
+    pcre
+    libxkbcommon
+    libpthreadstubs
+    libXdmcp
+    epoxy
+    gnome3.nautilus
+    at-spi2-core
+    dbus
+    gnome-online-accounts # GOA not used any more, only for transferring legacy keys
+    libgpgerror
+    json-glib
+  ];
+
+  # TODO: hard code the path
+  # https://gitlab.gnome.org/World/deja-dup/merge_requests/32
+  propagatedUserEnvPkgs = [ duplicity ];
+
+  # install nautilus plug-in to correct path
+  PKG_CONFIG_LIBNAUTILUS_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/lib/nautilus/extensions-3.0";
+
+  meta = with stdenv.lib; {
+    description = "A simple backup tool";
+    longDescription = ''
+      Déjà Dup is a simple backup tool. It hides the complexity \
+      of backing up the Right Way (encrypted, off-site, and regular) \
+      and uses duplicity as the backend.
+    '';
+    homepage = "https://wiki.gnome.org/Apps/DejaDup";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ jtojnar joncojonathan ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/backup/deja-dup/fix-paths.patch b/nixpkgs/pkgs/applications/backup/deja-dup/fix-paths.patch
new file mode 100644
index 000000000000..26126fdc9d56
--- /dev/null
+++ b/nixpkgs/pkgs/applications/backup/deja-dup/fix-paths.patch
@@ -0,0 +1,11 @@
+--- a/libdeja/tools/duplicity/DuplicityInstance.vala
++++ b/libdeja/tools/duplicity/DuplicityInstance.vala
+@@ -159,7 +159,7 @@
+     // We already are pretty sure we don't have other duplicities in our
+     // archive directories, because we use our own and we ensure we only have
+     // one deja-dup running at a time via DBus.
+-    Posix.system("/bin/rm -f " + Shell.quote(cache_dir) + "/*/lockfile.lock");
++    Posix.system("@coreutils@/bin/rm -f " + Shell.quote(cache_dir) + "/*/lockfile.lock");
+ 
+     Process.spawn_async_with_pipes(null, real_argv, real_envp,
+                         SpawnFlags.SEARCH_PATH |
diff --git a/nixpkgs/pkgs/applications/backup/deja-dup/hardcode-gsettings.patch b/nixpkgs/pkgs/applications/backup/deja-dup/hardcode-gsettings.patch
new file mode 100644
index 000000000000..f74dbf73543e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/backup/deja-dup/hardcode-gsettings.patch
@@ -0,0 +1,16 @@
+--- a/deja-dup/nautilus/NautilusExtension.c
++++ b/deja-dup/nautilus/NautilusExtension.c
+@@ -313,7 +313,12 @@
+   bindtextdomain(GETTEXT_PACKAGE, LOCALE_DIR);
+   bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
+ 
+-  settings = g_settings_new(APPLICATION_ID);
++  g_autoptr (GSettingsSchemaSource) schema_source = g_settings_schema_source_new_from_directory ("@DEJA_DUP_GSETTINGS_PATH@",
++    g_settings_schema_source_get_default (), TRUE, NULL);
++
++  g_autoptr (GSettingsSchema) schema = g_settings_schema_source_lookup (schema_source, APPLICATION_ID, FALSE);
++
++  settings = g_settings_new_full (schema, NULL, NULL);
+   g_signal_connect(settings, "changed::include-list",
+                    update_include_excludes, NULL);
+   g_signal_connect(settings, "changed::exclude-list",
diff --git a/nixpkgs/pkgs/applications/backup/vdmfec/default.nix b/nixpkgs/pkgs/applications/backup/vdmfec/default.nix
new file mode 100644
index 000000000000..1366bb484a91
--- /dev/null
+++ b/nixpkgs/pkgs/applications/backup/vdmfec/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "vdmfec";
+  version = "1.0";
+
+  src = fetchurl {
+    url = "http://members.tripod.com/professor_tom/archives/${pname}-${version}.tgz";
+    sha256 = "0i7q4ylx2xmzzq778anpkj4nqir5gf573n1lbpxnbc10ymsjq2rm";
+  };
+
+  meta = with stdenv.lib; {
+    description = "A program that adds error correction blocks";
+    homepage = "http://members.tripod.com/professor_tom/archives/index.html";
+    maintainers = [ maintainers.ar1a ];
+    license = with licenses; [ gpl2 /* for vdmfec */ bsd2 /* for fec */ ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/backup/vorta/default.nix b/nixpkgs/pkgs/applications/backup/vorta/default.nix
new file mode 100644
index 000000000000..f1c0b056c820
--- /dev/null
+++ b/nixpkgs/pkgs/applications/backup/vorta/default.nix
@@ -0,0 +1,42 @@
+{ buildPythonApplication, fetchFromGitHub, lib, paramiko, peewee, pyqt5
+, python-dateutil, APScheduler, psutil, qdarkstyle, secretstorage
+, appdirs, setuptools, qt5
+}:
+
+buildPythonApplication rec {
+  pname = "vorta";
+  version = "0.6.26";
+
+  src = fetchFromGitHub {
+    owner = "borgbase";
+    repo = "vorta";
+    rev = "v${version}";
+    sha256 = "189kzwdmissg9142cd7wvxa1rvc2y7lysgr7if99zc7ks59mv6dq";
+  };
+
+  postPatch = ''
+    sed -i -e '/setuptools_git/d' -e '/pytest-runner/d' setup.cfg
+  '';
+
+  nativeBuildInputs = [ qt5.wrapQtAppsHook ];
+
+  propagatedBuildInputs = [
+    paramiko peewee pyqt5 python-dateutil APScheduler psutil qdarkstyle
+    secretstorage appdirs setuptools
+  ];
+
+  # QT setup in tests broken.
+  doCheck = false;
+
+  postFixup = ''
+    wrapQtApp $out/bin/vorta
+  '';
+
+  meta = with lib; {
+    license = licenses.gpl3;
+    homepage = "https://vorta.borgbase.com/";
+    maintainers = with maintainers; [ ma27 ];
+    description = "Desktop Backup Client for Borg";
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/aeon/default.nix b/nixpkgs/pkgs/applications/blockchains/aeon/default.nix
new file mode 100644
index 000000000000..5e0c25466ebe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/aeon/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, git, doxygen, graphviz
+, boost, miniupnpc, openssl, unbound, cppzmq
+, zeromq, pcsclite, readline, libsodium
+}:
+
+let
+  version = "0.13.0.0";
+in
+stdenv.mkDerivation {
+  pname = "aeon";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "aeonix";
+    repo = "aeon";
+    rev = "v${version}-aeon";
+    fetchSubmodules = true;
+    sha256 = "07d87n1j4dc9gfwj6xy5jdpryn45095xdh961g6xjnjzc5fivjch";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig git doxygen graphviz ];
+
+  buildInputs = [
+    boost miniupnpc openssl unbound
+    cppzmq zeromq pcsclite readline libsodium
+  ];
+
+  cmakeFlags = [
+    "-DCMAKE_BUILD_TYPE=Release"
+    "-DBUILD_GUI_DEPS=ON"
+    "-DReadline_ROOT_DIR=${readline.dev}"
+  ];
+
+  hardeningDisable = [ "fortify" ];
+
+  meta = with stdenv.lib; {
+    description = "Private, secure, untraceable currency";
+    homepage = "http://www.aeon.cash/";
+    license = licenses.bsd3;
+    maintainers = [ maintainers.aij ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/bitcoin-abc.nix b/nixpkgs/pkgs/applications/blockchains/bitcoin-abc.nix
new file mode 100644
index 000000000000..aee73cecdfc7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/bitcoin-abc.nix
@@ -0,0 +1,46 @@
+{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, autoreconfHook, openssl, db53, boost
+, zlib, miniupnpc, qtbase ? null , qttools ? null, utillinux, protobuf, qrencode, libevent
+, withGui }:
+
+with stdenv.lib;
+
+mkDerivation rec {
+
+  name = "bitcoin" + (toString (optional (!withGui) "d")) + "-abc-" + version;
+  version = "0.21.5";
+
+  src = fetchFromGitHub {
+    owner = "bitcoin-ABC";
+    repo = "bitcoin-abc";
+    rev = "v${version}";
+    sha256 = "1jx33n8dhn16iaxvmc56cxw0i5qk0ga5nf7qf9frwwq6zkglknga";
+  };
+
+  patches = [ ./fix-bitcoin-qt-build.patch ];
+
+  nativeBuildInputs = [ pkgconfig autoreconfHook ];
+  buildInputs = [ openssl db53 boost zlib
+                  miniupnpc utillinux protobuf libevent ]
+                  ++ optionals withGui [ qtbase qttools qrencode ];
+
+  configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ]
+                     ++ optionals withGui [ "--with-gui=qt5" ];
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Peer-to-peer electronic cash system (Cash client)";
+    longDescription= ''
+      Bitcoin ABC is the name of open source software which enables the use of Bitcoin.
+      It is designed to facilite a hard fork to increase Bitcoin's block size limit.
+      "ABC" stands for "Adjustable Blocksize Cap".
+
+      Bitcoin ABC is a fork of the Bitcoin Core software project.
+    '';
+    homepage = "https://bitcoinabc.org/";
+    maintainers = with maintainers; [ lassulus ];
+    license = licenses.mit;
+    broken = stdenv.isDarwin;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/bitcoin-classic.nix b/nixpkgs/pkgs/applications/blockchains/bitcoin-classic.nix
new file mode 100644
index 000000000000..01c1264567ce
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/bitcoin-classic.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchFromGitHub, pkgconfig, autoreconfHook, openssl, db48, boost
+, zlib, miniupnpc, qtbase ? null, qttools ? null, utillinux, protobuf, qrencode, libevent
+, withGui }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+
+  name = "bitcoin" + (toString (optional (!withGui) "d")) + "-classic-" + version;
+  version = "1.3.8";
+
+  src = fetchFromGitHub {
+    owner = "bitcoinclassic";
+    repo = "bitcoinclassic";
+    rev = "v${version}";
+    sha256 = "06ij9v7zbdnhxq9429nnxiw655cp8idldj18l7fmj94gqx07n5vh";
+  };
+
+  nativeBuildInputs = [ pkgconfig autoreconfHook ];
+  buildInputs = [ openssl db48 boost zlib
+                  miniupnpc utillinux protobuf libevent ]
+                  ++ optionals withGui [ qtbase qttools qrencode ];
+
+  configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ]
+                     ++ optionals withGui [ "--with-gui=qt5"
+                                            "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin"
+                                          ];
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Peer-to-peer electronic cash system (Classic client)";
+    longDescription= ''
+      Bitcoin is a free open source peer-to-peer electronic cash system that is
+      completely decentralized, without the need for a central server or trusted
+      parties. Users hold the crypto keys to their own money and transact directly
+      with each other, with the help of a P2P network to check for double-spending.
+
+      Bitcoin Classic stands for the original Bitcoin as Satoshi described it,
+      "A Peer-to-Peer Electronic Cash System". We are writing the software that
+      miners and users say they want. We will make sure it solves their needs, help
+      them deploy it, and gracefully upgrade the bitcoin network's capacity
+      together. The data shows that Bitcoin can grow, on-chain, to welcome many
+      more users onto our coin in a safe and distributed manner. In the future we
+      will continue to release updates that are in line with Satoshi’s whitepaper &
+      vision, and are agreed upon by the community.
+    '';
+    homepage = "https://bitcoinclassic.com/";
+    maintainers = with maintainers; [ jefdaj ];
+    license = licenses.mit;
+    broken = stdenv.isDarwin;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/bitcoin-gold.nix b/nixpkgs/pkgs/applications/blockchains/bitcoin-gold.nix
new file mode 100644
index 000000000000..7205e882c314
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/bitcoin-gold.nix
@@ -0,0 +1,70 @@
+{ stdenv
+, fetchFromGitHub
+, openssl
+, boost
+, libevent
+, autoreconfHook
+, db4
+, pkgconfig
+, protobuf
+, hexdump
+, zeromq
+, libsodium
+, withGui
+, qtbase ? null
+, qttools ? null
+, wrapQtAppsHook ? null
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  
+  pname = "bitcoin" + toString (optional (!withGui) "d") + "-gold";
+  version = "0.15.2";
+
+  src = fetchFromGitHub {
+    owner = "BTCGPU";
+    repo = "BTCGPU";
+    rev = "v${version}";
+    sha256 = "0grd1cd8d2nsrxl27la85kcan09z73fn70ncr9km4iccaj5pg12h";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    pkgconfig
+    hexdump
+  ] ++ optionals withGui [
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    openssl
+    boost
+    libevent
+    db4
+    zeromq
+    libsodium
+  ] ++ optionals withGui [
+    qtbase
+    qttools
+    protobuf
+  ];
+
+  enableParallelBuilding = true;
+
+  configureFlags = [
+      "--with-boost-libdir=${boost.out}/lib"
+  ] ++ optionals withGui [
+      "--with-gui=qt5"
+      "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin"
+  ];
+
+  meta = {
+    description = "BTG is a cryptocurrency with Bitcoin fundamentals, mined on common GPUs instead of specialty ASICs";
+    homepage = "https://bitcoingold.org/";
+    license = licenses.mit;
+    maintainers = [ maintainers.mmahut ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/bitcoin-unlimited.nix b/nixpkgs/pkgs/applications/blockchains/bitcoin-unlimited.nix
new file mode 100644
index 000000000000..f755efaa0e12
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/bitcoin-unlimited.nix
@@ -0,0 +1,66 @@
+{ stdenv, fetchFromGitHub, pkgconfig, autoreconfHook, openssl, db48, boost
+, zlib, miniupnpc, utillinux, protobuf, qrencode, libevent, python3
+, withGui, wrapQtAppsHook ? null, qtbase ? null, qttools ? null
+, Foundation, ApplicationServices, AppKit }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "bitcoin" + (toString (optional (!withGui) "d")) + "-unlimited-" + version;
+  version = "1.7.0.0";
+
+  src = fetchFromGitHub {
+    owner = "bitcoinunlimited";
+    repo = "bitcoinunlimited";
+    rev = "bucash${version}";
+    sha256 = "0lil6rivrj4cnr8a7n8zn9rp9f4h2nk88jjxc29m6dwqn5gk6f1i";
+  };
+
+  nativeBuildInputs = [ pkgconfig autoreconfHook python3 ]
+    ++ optionals withGui [ wrapQtAppsHook qttools ];
+  buildInputs = [ openssl db48 boost zlib
+                  miniupnpc utillinux protobuf libevent ]
+                  ++ optionals withGui [ qtbase qttools qrencode ]
+                  ++ optionals stdenv.isDarwin [ Foundation ApplicationServices AppKit ];
+
+  configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ]
+                     ++ optionals withGui [ "--with-gui=qt5"
+                                            "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin"
+                                          ];
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Peer-to-peer electronic cash system (Unlimited client)";
+    longDescription= ''
+      Bitcoin is a free open source peer-to-peer electronic cash system that is
+      completely decentralized, without the need for a central server or trusted
+      parties. Users hold the crypto keys to their own money and transact directly
+      with each other, with the help of a P2P network to check for double-spending.
+
+      The Bitcoin Unlimited (BU) project seeks to provide a voice to all
+      stakeholders in the Bitcoin ecosystem.
+
+      Every node operator or miner can currently choose their own blocksize limit
+      by modifying their client. Bitcoin Unlimited makes the process easier by
+      providing a configurable option for the accepted and generated blocksize via
+      a GUI menu. Bitcoin Unlimited further provides a user-configurable failsafe
+      setting allowing you to accept a block larger than your maximum accepted
+      blocksize if it reaches a certain number of blocks deep in the chain.
+
+      The Bitcoin Unlimited client is not a competitive block scaling proposal
+      like BIP-101, BIP-102, etc. Instead it tracks consensus. This means that it
+      tracks the blockchain that the hash power majority follows, irrespective of
+      blocksize, and signals its ability to accept larger blocks via protocol and
+      block versioning fields.
+
+      If you support an increase in the blocksize limit by any means - or just
+      support Bitcoin conflict resolution as originally envisioned by its founder -
+      consider running a Bitcoin Unlimited client.
+    '';
+    homepage = "https://www.bitcoinunlimited.info/";
+    maintainers = with maintainers; [ DmitryTsygankov ];
+    license = licenses.mit;
+    broken = stdenv.isDarwin;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/bitcoin.nix b/nixpkgs/pkgs/applications/blockchains/bitcoin.nix
new file mode 100644
index 000000000000..7a4386d23866
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/bitcoin.nix
@@ -0,0 +1,98 @@
+{ stdenv
+, fetchurl
+, pkgconfig
+, autoreconfHook
+, db48
+, boost
+, zeromq
+, hexdump
+, zlib
+, miniupnpc
+, qtbase ? null
+, qttools ? null
+, wrapQtAppsHook ? null
+, utillinux
+, python3
+, qrencode
+, libevent
+, withGui
+}:
+
+with stdenv.lib;
+let
+  version = "0.20.0";
+  majorMinorVersion = versions.majorMinor version;
+  desktop = fetchurl {
+    url = "https://raw.githubusercontent.com/bitcoin-core/packaging/${majorMinorVersion}/debian/bitcoin-qt.desktop";
+    sha256 = "0cpna0nxcd1dw3nnzli36nf9zj28d2g9jf5y0zl9j18lvanvniha";
+  };
+  pixmap = fetchurl {
+    url = "https://raw.githubusercontent.com/bitcoin/bitcoin/v${version}/share/pixmaps/bitcoin128.png";
+    sha256 = "08p7j7dg50jlj783kkgdw037klmx0spqjikaprmbkzgcb620r25d";
+  };
+in
+stdenv.mkDerivation rec {
+  pname = if withGui then "bitcoin" else "bitcoind";
+  inherit version;
+
+  src = fetchurl {
+    urls = [
+      "https://bitcoincore.org/bin/bitcoin-core-${version}/bitcoin-${version}.tar.gz"
+      "https://bitcoin.org/bin/bitcoin-core-${version}/bitcoin-${version}.tar.gz"
+    ];
+    sha256 = "ec5a2358ee868d845115dc4fc3ed631ff063c57d5e0a713562d083c5c45efb28";
+  };
+
+  nativeBuildInputs =
+    [ pkgconfig autoreconfHook ]
+    ++ optional stdenv.isDarwin hexdump
+    ++ optional withGui wrapQtAppsHook;
+  buildInputs = [ db48 boost zlib zeromq miniupnpc libevent ]
+    ++ optionals stdenv.isLinux [ utillinux ]
+    ++ optionals withGui [ qtbase qttools qrencode ];
+
+  postInstall = optional withGui ''
+    install -Dm644 ${desktop} $out/share/applications/bitcoin-qt.desktop
+    install -Dm644 ${pixmap} $out/share/pixmaps/bitcoin128.png
+  '';
+
+  configureFlags = [
+    "--with-boost-libdir=${boost.out}/lib"
+    "--disable-bench"
+  ] ++ optionals (!doCheck) [
+    "--disable-tests"
+    "--disable-gui-tests"
+  ]
+  ++ optionals withGui [
+    "--with-gui=qt5"
+    "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin"
+  ];
+
+  checkInputs = [ python3 ];
+
+  doCheck = true;
+
+  checkFlags =
+    [ "LC_ALL=C.UTF-8" ]
+    # QT_PLUGIN_PATH needs to be set when executing QT, which is needed when testing Bitcoin's GUI.
+    # See also https://github.com/NixOS/nixpkgs/issues/24256
+    ++ optional withGui "QT_PLUGIN_PATH=${qtbase}/${qtbase.qtPluginPrefix}";
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Peer-to-peer electronic cash system";
+    longDescription = ''
+      Bitcoin is a free open source peer-to-peer electronic cash system that is
+      completely decentralized, without the need for a central server or trusted
+      parties. Users hold the crypto keys to their own money and transact directly
+      with each other, with the help of a P2P network to check for double-spending.
+    '';
+    homepage = "https://bitcoin.org/";
+    downloadPage = "https://bitcoincore.org/bin/bitcoin-core-${version}/";
+    changelog = "https://bitcoincore.org/en/releases/${version}/";
+    maintainers = with maintainers; [ roconnor AndersonTorres ];
+    license = licenses.mit;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/btc1.nix b/nixpkgs/pkgs/applications/blockchains/btc1.nix
new file mode 100644
index 000000000000..3442c9ba807f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/btc1.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, pkgconfig, autoreconfHook, hexdump, openssl, db48
+, boost, zlib, miniupnpc, qt4, protobuf, qrencode, libevent
+, AppKit
+, withGui ? !stdenv.isDarwin
+}:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  name = "bit1" + (toString (optional (!withGui) "d")) + "-" + version;
+  version = "1.15.1";
+
+  src = fetchurl {
+    url = "https://github.com/btc1/bitcoin/archive/v${version}.tar.gz";
+    sha256 = "0v0g2wb4nsnhddxzb63vj2bc1mgyj05vqm5imicjfz8prvgc0si8";
+  };
+
+  nativeBuildInputs = [ pkgconfig autoreconfHook hexdump ];
+  buildInputs = [ openssl db48 boost zlib miniupnpc protobuf libevent ]
+    ++ optionals withGui [ qt4 qrencode ]
+    ++ optional stdenv.isDarwin AppKit;
+
+  configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ]
+                     ++ optionals withGui [ "--with-gui=qt4" ];
+
+  meta = {
+    description = "Peer-to-peer electronic cash system (btc1 client)";
+    longDescription= ''
+      Bitcoin is a free open source peer-to-peer electronic cash system that is
+      completely decentralized, without the need for a central server or trusted
+      parties. Users hold the crypto keys to their own money and transact directly
+      with each other, with the help of a P2P network to check for double-spending.
+
+      btc1 is an implementation of a Bitcoin full node with segwit2x hard fork
+      support.
+    '';
+    homepage = "https://github.com/btc1/bitcoin";
+    license = licenses.mit;
+    maintainers = with maintainers; [ sorpaas ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/btcdeb/default.nix b/nixpkgs/pkgs/applications/blockchains/btcdeb/default.nix
new file mode 100644
index 000000000000..9a8db94401cd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/btcdeb/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, fetchFromGitHub
+, autoreconfHook
+, pkgconfig
+, openssl
+}:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  pname = "btcdeb";
+  version = "0.2.19";
+
+  src = fetchFromGitHub {
+    owner = "kallewoof";
+    repo = pname;
+    rev = "fb2dace4cd115dc9529a81515cee855b8ce94784";
+    sha256 = "0l0niamcjxmgyvc6w0wiygfgwsjam3ypv8mvjglgsj50gyv1vnb3";
+  };
+
+  nativeBuildInputs = [ pkgconfig autoreconfHook ];
+  buildInputs = [ openssl ];
+
+  meta = {
+    description = "Bitcoin Script Debugger";
+    homepage = "https://github.com/kallewoof/btcdeb";
+    license = licenses.mit;
+    maintainers = with maintainers; [ akru ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/clightning.nix b/nixpkgs/pkgs/applications/blockchains/clightning.nix
new file mode 100644
index 000000000000..6777e5998cef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/clightning.nix
@@ -0,0 +1,50 @@
+{ stdenv, python3, pkgconfig, which, libtool, autoconf, automake,
+  autogen, sqlite, gmp, zlib, fetchurl, unzip, fetchpatch, gettext }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  pname = "clightning";
+  version = "0.8.2.1";
+
+  src = fetchurl {
+    url = "https://github.com/ElementsProject/lightning/releases/download/v${version}/clightning-v${version}.zip";
+    sha256 = "02incjr59fv75q6hlrln9h4b5gq7ipd778scbz8b8dahj7x1a6i5";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ autoconf autogen automake libtool pkgconfig which unzip gettext ];
+  buildInputs =
+    let py3 = python3.withPackages (p: [ p.Mako ]);
+    in [ sqlite gmp zlib py3 ];
+
+  makeFlags = [ "prefix=$(out) VERSION=v${version}" ];
+
+  configurePhase = ''
+    ./configure --prefix=$out --disable-developer --disable-valgrind
+  '';
+
+  postPatch = ''
+    patchShebangs \
+      tools/generate-wire.py \
+      tools/update-mocks.sh \
+      tools/mockup.sh \
+      devtools/sql-rewrite.py
+  '';
+
+  doCheck = false;
+
+  meta = {
+    description = "A Bitcoin Lightning Network implementation in C";
+    longDescription= ''
+      c-lightning is a standard compliant implementation of the Lightning
+      Network protocol. The Lightning Network is a scalability solution for
+      Bitcoin, enabling secure and instant transfer of funds between any two
+      parties for any amount.
+    '';
+    homepage = "https://github.com/ElementsProject/lightning";
+    maintainers = with maintainers; [ jb55 ];
+    license = licenses.mit;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/cryptop/default.nix b/nixpkgs/pkgs/applications/blockchains/cryptop/default.nix
new file mode 100644
index 000000000000..f0bcda579301
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/cryptop/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonApplication, fetchPypi, requests, requests-cache }:
+
+buildPythonApplication rec {
+  pname = "cryptop";
+  version = "0.2.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0akrrz735vjfrm78plwyg84vabj0x3qficq9xxmy9kr40fhdkzpb";
+  };
+
+  propagatedBuildInputs = [ requests requests-cache ];
+
+  # No tests in archive
+  doCheck = false;
+
+  meta = {
+    homepage = "https://github.com/huwwp/cryptop";
+    description = "Command line Cryptocurrency Portfolio";
+    license = with lib.licenses; [ mit ];
+    maintainers = with lib.maintainers; [ bhipple ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/dashpay.nix b/nixpkgs/pkgs/applications/blockchains/dashpay.nix
new file mode 100644
index 000000000000..b88aa3af19e3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/dashpay.nix
@@ -0,0 +1,44 @@
+{ fetchFromGitHub, stdenv, pkgconfig, autoreconfHook
+, openssl, db48, boost, zlib, miniupnpc
+, qrencode, glib, protobuf, yasm, libevent
+, utillinux
+, enable_Upnp ? false
+, disable_Wallet ? false
+, disable_Daemon ? false }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  pname = "dashpay";
+  version = "0.12.2.3";
+
+  src = fetchFromGitHub {
+    owner = "dashpay";
+    repo= "dash";
+    rev = "v${version}";
+    sha256 = "0l1gcj2xf2bal9ph9y11x8yd28fd25f55f48xbm45bfw3ij7nbaa";
+  };
+
+  nativeBuildInputs = [ pkgconfig autoreconfHook ];
+  buildInputs = [ glib openssl db48 yasm boost zlib libevent
+                  miniupnpc protobuf qrencode utillinux ];
+
+
+  configureFlags = [ "--with-boost-libdir=${boost.out}/lib --with-gui=no" ]
+                    ++ optional enable_Upnp "--enable-upnp-default"
+                    ++ optional disable_Wallet "--disable-wallet"
+                    ++ optional disable_Daemon "--disable-daemon"
+                    ;
+
+  meta = {
+    description = "A decentralized key/value registration and transfer system";
+    longDescription = ''
+      Dash (DASH) is an open sourced, privacy-centric digital currency
+      with instant transactions.  It allows you to keep your finances
+      private as you make transactions without waits, similar to cash.
+    '';
+    homepage = "https://www.dash.org";
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = platforms.unix;
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/dcrd.nix b/nixpkgs/pkgs/applications/blockchains/dcrd.nix
new file mode 100644
index 000000000000..16d39e85da15
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/dcrd.nix
@@ -0,0 +1,34 @@
+{ stdenv, lib, go, buildGoPackage, dep, fetchgit, git, cacert }:
+
+buildGoPackage rec {
+  pname = "dcrd";
+  version = "1.1.2";
+  rev = "refs/tags/v${version}";
+  goPackagePath = "github.com/decred/dcrd";
+
+  buildInputs = [ go git dep cacert ];
+
+  GIT_SSL_CAINFO = "${cacert}/etc/ssl/certs/ca-bundle.crt";
+  NIX_SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
+
+  src = fetchgit {
+    inherit rev;
+    url = "https://${goPackagePath}";
+    sha256 = "0xcynipdn9zmmralxj0hjrwyanvhkwfj2b1vvjk5zfc95s2xc1q9";
+  };
+
+  preBuild = ''
+    export CWD=$(pwd)
+    cd go/src/github.com/decred/dcrd
+    dep ensure
+    go install . ./cmd/...
+    cd $CWD
+  '';
+
+  meta = {
+    homepage = "https://decred.org";
+    description = "Decred daemon in Go (golang)";
+    license = with lib.licenses; [ isc ];
+    broken = stdenv.isLinux; # 2018-04-10
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/dcrwallet.nix b/nixpkgs/pkgs/applications/blockchains/dcrwallet.nix
new file mode 100644
index 000000000000..258aad8e1bd9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/dcrwallet.nix
@@ -0,0 +1,43 @@
+{ stdenv, lib, go, buildGoPackage, dep, fetchgit, git, cacert }:
+
+buildGoPackage rec {
+  pname = "dcrwallet";
+  version = "1.1.2";
+  rev = "refs/tags/v${version}";
+  goPackagePath = "github.com/decred/dcrwallet";
+
+  buildInputs = [ go git dep cacert ];
+
+  GIT_SSL_CAINFO = "${cacert}/etc/ssl/certs/ca-bundle.crt";
+  NIX_SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
+
+  src = fetchgit {
+    inherit rev;
+    url = "https://${goPackagePath}";
+    sha256 = "058im4vmcmxcl5ir14h17wik5lagp2ay0p8qc3r99qmpfwvvz39x";
+  };
+
+  preBuild = ''
+    export CWD=$(pwd)
+    cd go/src/github.com/decred/dcrwallet
+    dep ensure
+  '';
+
+  buildPhase = ''
+    runHook preBuild
+    go build
+  '';
+
+  installPhase = ''
+    mkdir -pv $out/bin
+    cp -v dcrwallet $out/bin
+  '';
+
+
+  meta = {
+    homepage = "https://decred.org";
+    description = "Decred daemon in Go (golang)";
+    license = with lib.licenses; [ isc ];
+    broken = stdenv.isLinux; # 2018-04-10
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/dero.nix b/nixpkgs/pkgs/applications/blockchains/dero.nix
new file mode 100644
index 000000000000..8aa693d28714
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/dero.nix
@@ -0,0 +1,27 @@
+{ lib, stdenv, fetchFromGitHub, cmake, pkgconfig, unbound, openssl, boost
+, lmdb, miniupnpc, readline }:
+
+stdenv.mkDerivation rec {
+  pname = "dero";
+  version = "0.11.7";
+
+  src = fetchFromGitHub {
+    owner = "deroproject";
+    repo = "dero";
+    rev = "v${version}";
+    sha256 = "1v8b9wbmqbpyf4jpc0v276qzk3hc5fpddcmwvv5k5yfi30nmbh5c";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [ boost miniupnpc openssl lmdb unbound readline ];
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "Secure, private blockchain with smart contracts based on Monero";
+    homepage = "https://dero.io/";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fpletz ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/digibyte.nix b/nixpkgs/pkgs/applications/blockchains/digibyte.nix
new file mode 100644
index 000000000000..0d0fc081a118
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/digibyte.nix
@@ -0,0 +1,69 @@
+{ stdenv
+, fetchFromGitHub
+, openssl
+, boost
+, libevent
+, autoreconfHook
+, db4
+, pkgconfig
+, protobuf
+, hexdump
+, zeromq
+, withGui
+, qtbase ? null
+, qttools ? null
+, wrapQtAppsHook ? null
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "digibyte";
+  version = "7.17.2";
+
+  name = pname + toString (optional (!withGui) "d") + "-" + version;
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "04czj7mx3wpbx4832npk686p9pg5zb6qwlcvnmvqf31hm5qylbxj";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    pkgconfig
+    hexdump
+  ] ++ optionals withGui [
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    openssl
+    boost
+    libevent
+    db4
+    zeromq
+  ] ++ optionals withGui [
+    qtbase
+    qttools
+    protobuf
+  ];
+
+  enableParallelBuilding = true;
+
+  configureFlags = [
+      "--with-boost-libdir=${boost.out}/lib"
+  ] ++ optionals withGui [
+      "--with-gui=qt5"
+      "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin"
+  ];
+
+  meta = {
+    description = "DigiByte (DGB) is a rapidly growing decentralized, global blockchain";
+    homepage = "https://digibyte.io/";
+    license = licenses.mit;
+    maintainers = [ maintainers.mmahut ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/dogecoin.nix b/nixpkgs/pkgs/applications/blockchains/dogecoin.nix
new file mode 100644
index 000000000000..b1ebebdd213a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/dogecoin.nix
@@ -0,0 +1,41 @@
+{ stdenv , fetchFromGitHub
+, pkgconfig, autoreconfHook
+, db5, openssl, boost, zlib, miniupnpc, libevent
+, protobuf, utillinux, qt4, qrencode
+, withGui }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  name = "dogecoin" + (toString (optional (!withGui) "d")) + "-" + version;
+  version = "1.14.2";
+
+  src = fetchFromGitHub {
+    owner = "dogecoin";
+    repo = "dogecoin";
+    rev = "v${version}";
+    sha256 = "1gw46q63mjzwvb17ck6p1bap2xpdrap08szw2kjhasa3yvd5swyy";
+  };
+
+  nativeBuildInputs = [ pkgconfig autoreconfHook ];
+  buildInputs = [ openssl db5 openssl utillinux
+                  protobuf boost zlib miniupnpc libevent ]
+                  ++ optionals withGui [ qt4 qrencode ];
+
+  configureFlags = [ "--with-incompatible-bdb"
+                     "--with-boost-libdir=${boost.out}/lib" ]
+                     ++ optionals withGui [ "--with-gui" ];
+
+  meta = {
+    description = "Wow, such coin, much shiba, very rich";
+    longDescription = ''
+      Dogecoin is a decentralized, peer-to-peer digital currency that
+      enables you to easily send money online. Think of it as "the
+      internet currency."
+      It is named after a famous Internet meme, the "Doge" - a Shiba Inu dog.
+    '';
+    homepage = "http://www.dogecoin.com/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ edwtjo offline AndersonTorres ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/ergo/default.nix b/nixpkgs/pkgs/applications/blockchains/ergo/default.nix
new file mode 100644
index 000000000000..29990dae4049
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/ergo/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, makeWrapper, jre }:
+
+stdenv.mkDerivation rec {
+  pname = "ergo";
+  version = "3.2.6";
+
+  src = fetchurl {
+    url = "https://github.com/ergoplatform/ergo/releases/download/v${version}/ergo-${version}.jar";
+    sha256 = "1a38j7dy6ax9xvcjbdkiz0z33ln4rlmgrxznvqhdf11j70g1sr6x";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  dontUnpack = true;
+
+  installPhase = ''
+    makeWrapper ${jre}/bin/java $out/bin/ergo --add-flags "-jar $src"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Open protocol that implements modern scientific ideas in the blockchain area";
+    homepage = "https://ergoplatform.org/en/";
+    license = licenses.cc0;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ mmahut ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/ethabi.nix b/nixpkgs/pkgs/applications/blockchains/ethabi.nix
new file mode 100644
index 000000000000..ad574c82b464
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/ethabi.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, rustPlatform }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "ethabi";
+  version = "11.0.0";
+
+  src = fetchFromGitHub {
+    owner = "paritytech";
+    repo = "ethabi";
+    rev = "v${version}";
+    sha256 = "1gqd3vwsvv1wvi659qcdywgmh41swblpwmmxb033k8irw581dwq4";
+  };
+
+  cargoSha256 = "1hx8qw51rl7sn9jmnclw0hc4rx619hf78hpaih5mvny3k0zgiwpm";
+
+  meta = with stdenv.lib; {
+    description = "Ethereum function call encoding (ABI) utility";
+    homepage = "https://github.com/ethcore/ethabi/";
+    maintainers = [ maintainers.dbrock ];
+    license = licenses.gpl3;
+    inherit version;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/exodus/default.nix b/nixpkgs/pkgs/applications/blockchains/exodus/default.nix
new file mode 100644
index 000000000000..758673229afa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/exodus/default.nix
@@ -0,0 +1,80 @@
+{ stdenv, lib, fetchurl, unzip, glib, systemd, nss, nspr, gtk3-x11, gnome2,
+atk, cairo, gdk-pixbuf, xorg, xorg_sys_opengl, utillinux, alsaLib, dbus, at-spi2-atk,
+cups, vivaldi-ffmpeg-codecs, libpulseaudio, at-spi2-core }:
+
+stdenv.mkDerivation rec {
+  pname = "exodus";
+  version = "20.1.30";
+
+  src = fetchurl {
+    url = "https://downloads.exodus.io/releases/${pname}-linux-x64-${version}.zip";
+    sha256 = "0jns5zqjm0gqn18ypghbgk6gb713mh7p44ax1r8y4vcwijlp5nql";
+  };
+
+  sourceRoot = ".";
+  unpackCmd = ''
+      ${unzip}/bin/unzip "$src" -x "Exodus*/lib*so"
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/applications
+    cd Exodus-linux-x64
+    cp -r . $out
+    ln -s $out/Exodus $out/bin/Exodus
+    ln -s $out/bin/Exodus $out/bin/exodus
+    ln -s $out/exodus.desktop $out/share/applications
+    substituteInPlace $out/share/applications/exodus.desktop \
+          --replace 'Exec=bash -c "cd `dirname %k` && ./Exodus"' "Exec=Exodus"
+  '';
+
+  dontPatchELF = true;
+  dontBuild = true;
+
+  preFixup = let
+    libPath = lib.makeLibraryPath [
+      glib
+      nss
+      nspr
+      gtk3-x11
+      gnome2.pango
+      atk
+      cairo
+      gdk-pixbuf
+      xorg.libX11
+      xorg.libxcb
+      xorg.libXcomposite
+      xorg.libXcursor
+      xorg.libXdamage
+      xorg.libXext
+      xorg.libXfixes
+      xorg.libXi
+      xorg.libXrender
+      xorg.libXtst
+      xorg_sys_opengl
+      utillinux
+      xorg.libXrandr
+      xorg.libXScrnSaver
+      alsaLib
+      dbus.lib
+      at-spi2-atk
+      at-spi2-core
+      cups.lib
+      libpulseaudio
+      systemd
+      vivaldi-ffmpeg-codecs
+    ];
+  in ''
+    patchelf \
+      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${libPath}" \
+      $out/Exodus
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.exodus.io/";
+    description = "Top-rated cryptocurrency wallet with Trezor integration and built-in Exchange";
+    license = licenses.unfree;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.mmahut ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/fix-bitcoin-qt-build.patch b/nixpkgs/pkgs/applications/blockchains/fix-bitcoin-qt-build.patch
new file mode 100644
index 000000000000..c49bbc432519
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/fix-bitcoin-qt-build.patch
@@ -0,0 +1,15 @@
+--- bitcoin-abc-v0.15.0-src/build-aux/m4/bitcoin_qt.m4	1970-01-01 01:00:01.000000000 +0100
++++ bitcoin-abc-v0.15.0-src.org/build-aux/m4/bitcoin_qt.m4	2017-09-27 23:38:44.748384197 +0100
+@@ -35,11 +35,7 @@
+ dnl Output: $1 is set to the path of $2 if found. $2 are searched in order.
+ AC_DEFUN([BITCOIN_QT_PATH_PROGS],[
+   BITCOIN_QT_CHECK([
+-    if test "x$3" != x; then
+-      AC_PATH_PROGS($1,$2,,$3)
+-    else
+-      AC_PATH_PROGS($1,$2)
+-    fi
++    AC_PATH_PROGS($1,$2)
+     if test "x$$1" = x && test "x$4" != xyes; then
+       BITCOIN_QT_FAIL([$1 not found])
+     fi
diff --git a/nixpkgs/pkgs/applications/blockchains/freicoin.nix b/nixpkgs/pkgs/applications/blockchains/freicoin.nix
new file mode 100644
index 000000000000..cc28fff96c47
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/freicoin.nix
@@ -0,0 +1,41 @@
+{ fetchFromGitHub, stdenv, db, boost, gmp, mpfr, qt4, qmake4Hook }:
+
+stdenv.mkDerivation rec {
+  version = "0.8.6-2";
+  pname = "freicoin";
+
+  src = fetchFromGitHub {
+    owner = "freicoin";
+    repo = "freicoin";
+    rev = "v${version}";
+    sha256 = "1v1qwv4x5agjba82s1vknmdgq67y26wzdwbmwwqavv7f7y3y860h";
+  };
+
+  enableParallelBuilding = false;
+
+  qmakeFlags = ["USE_UPNP=-"];
+
+  # I think that openssl and zlib are required, but come through other
+  # packages
+
+  preBuild = "unset AR";
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp freicoin-qt $out/bin
+  '';
+
+  nativeBuildInputs = [ qmake4Hook ];
+  buildInputs = [ db boost gmp mpfr qt4 ];
+
+  meta = with stdenv.lib; {
+    description = "Peer-to-peer currency with demurrage fee";
+    homepage = "http://freicoi.in/";
+    license = licenses.mit;
+    maintainers = [ maintainers.viric ];
+    platforms = platforms.linux;
+
+    # upstream doesn't support newer openssl versions, use 1.0.1 for testing
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/go-ethereum.nix b/nixpkgs/pkgs/applications/blockchains/go-ethereum.nix
new file mode 100644
index 000000000000..d29292439c0e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/go-ethereum.nix
@@ -0,0 +1,58 @@
+{ stdenv, buildGoModule, fetchFromGitHub, libobjc, IOKit }:
+
+buildGoModule rec {
+  pname = "go-ethereum";
+  version = "1.9.15";
+
+  src = fetchFromGitHub {
+    owner = "ethereum";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1c69rfnx9130b87pw9lnaxyrbzwfhqb2dxyl7qyiscq85hqs16f9";
+  };
+
+  usb = fetchFromGitHub {
+    owner = "karalabe";
+    repo = "usb";
+    rev = "911d15fe12a9c411cf5d0dd5635231c759399bed";
+    sha256 = "0asd5fz2rhzkjmd8wjgmla5qmqyz4jaa6qf0n2ycia16jsck6wc2";
+  };
+
+  vendorSha256 = "1pjgcx6sydfipsx8s0kl7n6r3lk61klsfrkd7cg4l934k590q2n7";
+
+  overrideModAttrs = (_: {
+      postBuild = ''
+      cp -r --reflink=auto ${usb}/libusb vendor/github.com/karalabe/usb
+      cp -r --reflink=auto ${usb}/hidapi vendor/github.com/karalabe/usb
+      '';
+    });
+
+  subPackages = [
+    "cmd/abidump"
+    "cmd/abigen"
+    "cmd/bootnode"
+    "cmd/checkpoint-admin"
+    "cmd/clef"
+    "cmd/devp2p"
+    "cmd/ethkey"
+    "cmd/evm"
+    "cmd/faucet"
+    "cmd/geth"
+    "cmd/p2psim"
+    "cmd/puppeth"
+    "cmd/rlpdump"
+    "cmd/utils"
+    "cmd/wnode"
+  ];
+
+  # Fix for usb-related segmentation faults on darwin
+  propagatedBuildInputs =
+    stdenv.lib.optionals stdenv.isDarwin [ libobjc IOKit ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://geth.ethereum.org/";
+    description = "Official golang implementation of the Ethereum protocol";
+    license = with licenses; [ lgpl3 gpl3 ];
+    maintainers = with maintainers; [ adisbladis lionello xrelkd ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/ledger-live-desktop/default.nix b/nixpkgs/pkgs/applications/blockchains/ledger-live-desktop/default.nix
new file mode 100644
index 000000000000..1c76ef8df284
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/ledger-live-desktop/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, makeDesktopItem, appimageTools, imagemagick }:
+
+let
+  pname = "ledger-live-desktop";
+  version = "2.3.2";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/LedgerHQ/${pname}/releases/download/v${version}/${pname}-${version}-linux-x86_64.AppImage";
+    sha256 = "0xd3w564zij614ajg57n1qlvz0hd9l7219qxx81ai6b02b9a5g9h";
+  };
+
+  appimageContents = appimageTools.extractType2 {
+    inherit name src;
+  };
+in appimageTools.wrapType2 rec {
+  inherit name src;
+
+  extraInstallCommands = ''
+    mv $out/bin/${name} $out/bin/${pname}
+    install -m 444 -D ${appimageContents}/ledger-live-desktop.desktop $out/share/applications/ledger-live-desktop.desktop
+    install -m 444 -D ${appimageContents}/ledger-live-desktop.png $out/share/icons/hicolor/1024x1024/apps/ledger-live-desktop.png
+    ${imagemagick}/bin/convert ${appimageContents}/ledger-live-desktop.png -resize 512x512 ledger-live-desktop_512.png
+    install -m 444 -D ledger-live-desktop_512.png $out/share/icons/hicolor/512x512/apps/ledger-live-desktop.png
+    substituteInPlace $out/share/applications/ledger-live-desktop.desktop \
+      --replace 'Exec=AppRun' 'Exec=${pname}'
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Wallet app for Ledger Nano S and Ledger Blue";
+    homepage = "https://www.ledger.com/live";
+    license = licenses.mit;
+    maintainers = with maintainers; [ thedavidmeister nyanloutre ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/litecoin.nix b/nixpkgs/pkgs/applications/blockchains/litecoin.nix
new file mode 100644
index 000000000000..22cfa3dbb91e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/litecoin.nix
@@ -0,0 +1,55 @@
+{ stdenv, mkDerivation, fetchFromGitHub
+, pkgconfig, autoreconfHook
+, openssl, db48, boost, zlib, miniupnpc
+, glib, protobuf, utillinux, qrencode
+, AppKit
+, withGui ? true, libevent
+, qtbase, qttools
+, zeromq
+}:
+
+with stdenv.lib;
+
+mkDerivation rec {
+
+  name = "litecoin" + (toString (optional (!withGui) "d")) + "-" + version;
+  version = "0.18.1";
+
+  src = fetchFromGitHub {
+    owner = "litecoin-project";
+    repo = "litecoin";
+    rev = "v${version}";
+    sha256 = "11753zhyx1kmrlljc6kbjwrcb06dfcrsqvmw3iaki9a132qk6l5c";
+  };
+
+  nativeBuildInputs = [ pkgconfig autoreconfHook ];
+  buildInputs = [ openssl db48 boost zlib zeromq
+                  miniupnpc glib protobuf utillinux libevent ]
+                  ++ optionals stdenv.isDarwin [ AppKit ]
+                  ++ optionals withGui [ qtbase qttools qrencode ];
+
+  configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ]
+                   ++ optionals withGui [
+                      "--with-gui=qt5"
+                      "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin" ];
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "A lite version of Bitcoin using scrypt as a proof-of-work algorithm";
+    longDescription= ''
+      Litecoin is a peer-to-peer Internet currency that enables instant payments
+      to anyone in the world. It is based on the Bitcoin protocol but differs
+      from Bitcoin in that it can be efficiently mined with consumer-grade hardware.
+      Litecoin provides faster transaction confirmations (2.5 minutes on average)
+      and uses a memory-hard, scrypt-based mining proof-of-work algorithm to target
+      the regular computers and GPUs most people already have.
+      The Litecoin network is scheduled to produce 84 million currency units.
+    '';
+    homepage = "https://litecoin.org/";
+    platforms = platforms.unix;
+    license = licenses.mit;
+    broken = stdenv.isDarwin;
+    maintainers = with maintainers; [ offline AndersonTorres ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/lnd.nix b/nixpkgs/pkgs/applications/blockchains/lnd.nix
new file mode 100644
index 000000000000..1f249223df58
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/lnd.nix
@@ -0,0 +1,24 @@
+{ buildGoModule, fetchFromGitHub, lib }:
+
+buildGoModule rec {
+  pname = "lnd";
+  version = "0.10.0-beta";
+
+  src = fetchFromGitHub {
+    owner = "lightningnetwork";
+    repo = "lnd";
+    rev = "v${version}";
+    sha256 = "1amciz924s2h6qhy7w34jpv1jc25p5ayfxzvjph6hhx0bccrm88w";
+  };
+
+  vendorSha256 = "1iyghg11cxvbzi0gl40fvv8pl3d3k52j179w3x5m1f09r5ji223y";
+
+  subPackages = ["cmd/lncli" "cmd/lnd"];
+
+  meta = with lib; {
+    description = "Lightning Network Daemon";
+    homepage = "https://github.com/lightningnetwork/lnd";
+    license = lib.licenses.mit;
+    maintainers = with maintainers; [ cypherpunk2140 ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/blockchains/masari.nix b/nixpkgs/pkgs/applications/blockchains/masari.nix
new file mode 100644
index 000000000000..dfa005abb6ec
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/masari.nix
@@ -0,0 +1,27 @@
+{ lib, stdenv, fetchFromGitHub, cmake, pkgconfig, unbound, openssl, boost
+, lmdb, miniupnpc, readline }:
+
+stdenv.mkDerivation rec {
+  pname = "masari";
+  version = "0.1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "masari-project";
+    repo = "masari";
+    rev = "v${version}";
+    sha256 = "0l6i21wkq5f6z8xr756i7vqgkzk7lixaa31ydy34fkfcqxppgxz3";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [ boost miniupnpc openssl lmdb unbound readline ];
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "scalability-focused, untraceable, secure, and fungible cryptocurrency using the RingCT protocol";
+    homepage = "https://www.getmasari.org/";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fpletz ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/mist.nix b/nixpkgs/pkgs/applications/blockchains/mist.nix
new file mode 100644
index 000000000000..9dd564d715cc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/mist.nix
@@ -0,0 +1,72 @@
+{ stdenv, makeWrapper, fetchurl, unzip, atomEnv, makeDesktopItem, buildFHSUserEnv, gtk2 }:
+
+let
+  version = "0.11.1";
+  pname = "mist";
+
+  throwSystem = throw "Unsupported system: ${stdenv.hostPlatform.system}";
+
+  meta = with stdenv.lib; {
+    description = "Browse and use Ðapps on the Ethereum network";
+    homepage = "https://github.com/ethereum/mist";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [];
+    platforms = [ "x86_64-linux" "i686-linux" ];
+  };
+
+  urlVersion = builtins.replaceStrings ["."] ["-"] version;
+
+  desktopItem = makeDesktopItem rec {
+    name = "Mist";
+    exec = "mist";
+    icon = "mist";
+    desktopName = name;
+    genericName = "Mist Browser";
+    categories = "Network;";
+  };
+
+  mist = stdenv.lib.appendToName "unwrapped" (stdenv.mkDerivation {
+    inherit pname version meta;
+
+    src = {
+      i686-linux = fetchurl {
+        url = "https://github.com/ethereum/mist/releases/download/v${version}/Mist-linux32-${urlVersion}.zip";
+        sha256 = "1ffzp9aa0g6w3d5pzp69fljk3sd51cbqdgxa1x16vj106sqm0gj7";
+      };
+      x86_64-linux = fetchurl {
+        url = "https://github.com/ethereum/mist/releases/download/v${version}/Mist-linux64-${urlVersion}.zip";
+        sha256 = "0yx4x72l8gk68yh9saki48zgqx8k92xnkm79dc651wdpd5c25cz3";
+      };
+    }.${stdenv.hostPlatform.system} or throwSystem;
+
+    buildInputs = [ unzip makeWrapper ];
+
+    buildCommand = ''
+      mkdir -p $out/lib/mist $out/bin
+      unzip -d $out/lib/mist $src
+      ln -s $out/lib/mist/mist $out/bin
+      fixupPhase
+      mkdir -p $out/share/applications
+      ln -s ${desktopItem}/share/applications/* $out/share/applications
+      patchelf \
+        --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        --set-rpath "${atomEnv.libPath}:${gtk2}/lib:$out/lib/mist" \
+        $out/lib/mist/mist
+    '';
+  });
+in
+buildFHSUserEnv {
+  name = "mist";
+  inherit meta;
+
+  targetPkgs = pkgs: with pkgs; [
+     mist
+  ];
+
+  extraInstallCommands = ''
+    mkdir -p "$out/share/applications"
+    cp "${desktopItem}/share/applications/"* $out/share/applications
+  '';
+
+  runScript = "mist";
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/monero-gui/default.nix b/nixpkgs/pkgs/applications/blockchains/monero-gui/default.nix
new file mode 100644
index 000000000000..cfd3998ee368
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/monero-gui/default.nix
@@ -0,0 +1,88 @@
+{ stdenv, wrapQtAppsHook, makeDesktopItem
+, fetchFromGitHub, qmake, qttools, pkgconfig
+, qtbase, qtdeclarative, qtgraphicaleffects
+, qtmultimedia, qtxmlpatterns
+, qtquickcontrols, qtquickcontrols2
+, monero, unbound, readline, boost, libunwind
+, libsodium, pcsclite, zeromq, cppzmq
+, hidapi, libusb-compat-0_1, protobuf, randomx
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "monero-gui";
+  version = "0.15.0.4";
+
+  src = fetchFromGitHub {
+    owner  = "monero-project";
+    repo   = "monero-gui";
+    rev    = "v${version}";
+    sha256 = "12m5fgnxkr11q2arx1m5ccpxqm5ljcvm6l547dwqn297zs5jim4z";
+  };
+
+  nativeBuildInputs = [ qmake pkgconfig wrapQtAppsHook ];
+
+  buildInputs = [
+    qtbase qtdeclarative qtgraphicaleffects
+    qtmultimedia qtquickcontrols qtquickcontrols2
+    qtxmlpatterns
+    monero unbound readline
+    boost libunwind libsodium pcsclite zeromq
+    cppzmq hidapi libusb-compat-0_1 protobuf randomx
+  ];
+
+  NIX_CFLAGS_COMPILE = [ "-Wno-error=format-security" ];
+
+  patches = [ ./move-log-file.patch ];
+
+  postPatch = ''
+    echo '
+      var GUI_VERSION = "${version}";
+      var GUI_MONERO_VERSION = "${getVersion monero}";
+    ' > version.js
+    substituteInPlace monero-wallet-gui.pro \
+      --replace '$$[QT_INSTALL_BINS]/lrelease' '${getDev qttools}/bin/lrelease'
+    substituteInPlace src/daemon/DaemonManager.cpp \
+      --replace 'QApplication::applicationDirPath() + "' '"${monero}/bin'
+  '';
+
+  makeFlags = [ "INSTALL_ROOT=$(out)" ];
+
+  preBuild = ''
+    sed -i s#/opt/monero-wallet-gui##g Makefile
+    make -C src/zxcvbn-c
+  '';
+
+  desktopItem = makeDesktopItem {
+    name = "monero-wallet-gui";
+    exec = "monero-wallet-gui";
+    icon = "monero";
+    desktopName = "Monero";
+    genericName = "Wallet";
+    categories  = "Application;Network;Utility;";
+  };
+
+  postInstall = ''
+    # install desktop entry
+    mkdir -p $out/share/applications
+    cp ${desktopItem}/share/applications/* $out/share/applications
+
+    # install icons
+    for n in 16 24 32 48 64 96 128 256; do
+      size=$n"x"$n
+      mkdir -p $out/share/icons/hicolor/$size/apps
+      cp $src/images/appicons/$size.png \
+         $out/share/icons/hicolor/$size/apps/monero.png
+    done;
+  '';
+
+  meta = {
+    description  = "Private, secure, untraceable currency";
+    homepage     = "https://getmonero.org/";
+    license      = licenses.bsd3;
+    platforms    = platforms.all;
+    badPlatforms = platforms.darwin;
+    maintainers  = with maintainers; [ rnhmjoj ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/monero-gui/move-log-file.patch b/nixpkgs/pkgs/applications/blockchains/monero-gui/move-log-file.patch
new file mode 100644
index 000000000000..6d3313624e37
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/monero-gui/move-log-file.patch
@@ -0,0 +1,14 @@
+diff --git a/src/main/main.cpp b/src/main/main.cpp
+index c5210e5f..45794d72 100644
+--- a/src/main/main.cpp
++++ b/src/main/main.cpp
+@@ -220,6 +220,9 @@ int main(int argc, char *argv[])
+     QCommandLineOption logPathOption(QStringList() << "l" << "log-file",
+         QCoreApplication::translate("main", "Log to specified file"),
+         QCoreApplication::translate("main", "file"));
++    logPathOption.setDefaultValue(
++        QStandardPaths::writableLocation(QStandardPaths::CacheLocation)
++        + "/monero-wallet-gui.log");
+ 
+     QCommandLineOption testQmlOption("test-qml");
+     testQmlOption.setFlags(QCommandLineOption::HiddenFromHelp);
diff --git a/nixpkgs/pkgs/applications/blockchains/monero/default.nix b/nixpkgs/pkgs/applications/blockchains/monero/default.nix
new file mode 100644
index 000000000000..d1abd3956570
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/monero/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchFromGitHub
+, cmake, pkgconfig
+, boost, miniupnpc, openssl, unbound, cppzmq
+, zeromq, pcsclite, readline, libsodium, hidapi
+, pythonProtobuf, randomx, rapidjson, libusb-compat-0_1
+, CoreData, IOKit, PCSC
+}:
+
+assert stdenv.isDarwin -> IOKit != null;
+
+stdenv.mkDerivation rec {
+  pname = "monero";
+  version = "0.15.0.1";
+
+  src = fetchFromGitHub {
+    owner = "monero-project";
+    repo = "monero";
+    rev = "v${version}";
+    sha256 = "0sypa235lf2bbib4b71xpaw39h9304slgsvnsz8wmy9fq1zx009m";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [
+    boost miniupnpc openssl unbound
+    cppzmq zeromq pcsclite readline
+    libsodium hidapi randomx rapidjson
+    pythonProtobuf libusb-compat-0_1
+  ] ++ stdenv.lib.optionals stdenv.isDarwin [ IOKit CoreData PCSC ];
+
+  cmakeFlags = [
+    "-DCMAKE_BUILD_TYPE=Release"
+    "-DBUILD_GUI_DEPS=ON"
+    "-DReadline_ROOT_DIR=${readline.dev}"
+  ] ++ stdenv.lib.optional stdenv.isDarwin "-DBoost_USE_MULTITHREADED=OFF";
+
+  meta = with stdenv.lib; {
+    description = "Private, secure, untraceable currency";
+    homepage    = "https://getmonero.org/";
+    license     = licenses.bsd3;
+    platforms   = platforms.all;
+    maintainers = with maintainers; [ ehmry rnhmjoj ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/namecoin.nix b/nixpkgs/pkgs/applications/blockchains/namecoin.nix
new file mode 100644
index 000000000000..d52d87b9571c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/namecoin.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchFromGitHub, openssl, boost, libevent, autoreconfHook, db4, miniupnpc, eject, pkgconfig, qt4, protobuf, qrencode, hexdump
+, withGui }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  version = "nc0.20.0";
+  name = "namecoin" + toString (optional (!withGui) "d") + "-" + version;
+
+  src = fetchFromGitHub {
+    owner = "namecoin";
+    repo = "namecoin-core";
+    rev = version;
+    sha256 = "115nlsq5g169mj4qjmkhxx1bnx740871zqyng9zbm2y4i0xf71c4";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    pkgconfig
+    hexdump
+  ];
+
+  buildInputs = [
+    openssl
+    boost
+    libevent
+    db4
+    miniupnpc
+    eject
+  ] ++ optionals withGui [
+    qt4
+    protobuf
+    qrencode
+  ];
+
+  enableParallelBuilding = true;
+
+  configureFlags = [
+    "--with-boost-libdir=${boost.out}/lib"
+  ];
+
+  meta = {
+    description = "Decentralized open source information registration and transfer system based on the Bitcoin cryptocurrency";
+    homepage = "https://namecoin.org";
+    license = licenses.mit;
+    maintainers = with maintainers; [ doublec AndersonTorres infinisil ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/nano-wallet/CMakeLists.txt.patch b/nixpkgs/pkgs/applications/blockchains/nano-wallet/CMakeLists.txt.patch
new file mode 100644
index 000000000000..5bbec1d39bea
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/nano-wallet/CMakeLists.txt.patch
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b43f02f6..4470abbf 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -119,7 +119,7 @@ endif (RAIBLOCKS_SECURE_RPC)
+ 
+ include_directories (${CMAKE_SOURCE_DIR})
+ 
+-set(Boost_USE_STATIC_LIBS        ON)
++add_definitions(-DBOOST_LOG_DYN_LINK)
+ set(Boost_USE_MULTITHREADED      ON)
+ 
+ if (BOOST_CUSTOM)
diff --git a/nixpkgs/pkgs/applications/blockchains/nano-wallet/default.nix b/nixpkgs/pkgs/applications/blockchains/nano-wallet/default.nix
new file mode 100644
index 000000000000..664e26740629
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/nano-wallet/default.nix
@@ -0,0 +1,64 @@
+{ lib, stdenv, fetchFromGitHub, cmake, pkgconfig, wrapQtAppsHook, boost, libGL
+, qtbase}:
+
+stdenv.mkDerivation rec {
+
+  pname = "nano-wallet";
+  version = "20.0";
+
+  src = fetchFromGitHub {
+    owner = "nanocurrency";
+    repo = "raiblocks";
+    rev = "V${version}";
+    sha256 = "12nrjjd89yjzx20d85ccmp395pl0djpx0x0qb8dgka8xfy11k7xn";
+    fetchSubmodules = true;
+  };
+
+  # Use a patch to force dynamic linking
+  patches = [
+    ./CMakeLists.txt.patch
+  ];
+
+  cmakeFlags = let
+    options = {
+      BOOST_ROOT = boost;
+      Boost_USE_STATIC_LIBS = "OFF";
+      RAIBLOCKS_GUI = "ON";
+      RAIBLOCKS_TEST = "ON";
+      Qt5_DIR = "${qtbase.dev}/lib/cmake/Qt5";
+      Qt5Core_DIR = "${qtbase.dev}/lib/cmake/Qt5Core";
+      Qt5Gui_INCLUDE_DIRS = "${qtbase.dev}/include/QtGui";
+      Qt5Widgets_INCLUDE_DIRS = "${qtbase.dev}/include/QtWidgets";
+    };
+    optionToFlag = name: value: "-D${name}=${value}";
+  in lib.mapAttrsToList optionToFlag options;
+
+  nativeBuildInputs = [ cmake pkgconfig wrapQtAppsHook ];
+  buildInputs = [ boost libGL qtbase ];
+
+  buildPhase = ''
+    make nano_wallet
+  '';
+
+  # Move executables under bin directory
+  postInstall = ''
+    mkdir -p $out/bin
+    mv $out/nano* $out/bin/
+  '';
+
+  checkPhase = ''
+    ./core_test
+  '';
+
+  meta = {
+    inherit version;
+    description = "Wallet for Nano cryptocurrency";
+    homepage = "https://nano.org/en/wallet/";
+    license = lib.licenses.bsd2;
+    # Fails on Darwin. See:
+    # https://github.com/NixOS/nixpkgs/pull/39295#issuecomment-386800962
+    platforms = lib.platforms.linux;
+    maintainers = with lib.maintainers; [ jluttine ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/parity-ui/default.nix b/nixpkgs/pkgs/applications/blockchains/parity-ui/default.nix
new file mode 100644
index 000000000000..b18c121607ab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/parity-ui/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, pkgs, fetchurl, makeWrapper, nodePackages }:
+
+let
+
+uiEnv = pkgs.callPackage ./env.nix { };
+
+in stdenv.mkDerivation rec {
+  pname = "parity-ui";
+  version = "0.3.4";
+
+  src = fetchurl {
+    url = "https://github.com/parity-js/shell/releases/download/v${version}/parity-ui_${version}_amd64.deb";
+    sha256 = "1xbd00r9ph8w2d6d2c5xg4b5l74ljzs50rpc6kahfznypmh4kr73";
+    name = "${pname}-${version}.deb";
+  };
+
+  nativeBuildInputs = [ makeWrapper nodePackages.asar ];
+
+  buildCommand = ''
+    mkdir -p $out/usr/
+    ar p $src data.tar.xz | tar -C $out -xJ .
+    substituteInPlace $out/usr/share/applications/parity-ui.desktop \
+      --replace "/opt/Parity UI" $out/bin
+    mv $out/usr/* $out/
+    mv "$out/opt/Parity UI" $out/share/parity-ui
+    rm -r $out/usr/
+    rm -r $out/opt/
+
+    fixupPhase
+
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${uiEnv.libPath}:$out/share/parity-ui" \
+      $out/share/parity-ui/parity-ui
+
+    find $out/share/parity-ui -name "*.node" -exec patchelf --set-rpath "${uiEnv.libPath}:$out/share/parity-ui" {} \;
+
+    mkdir -p $out/bin
+    ln -s $out/share/parity-ui/parity-ui $out/bin/parity-ui
+  '';
+
+  meta = with stdenv.lib; {
+    description = "UI for Parity. Fast, light, robust Ethereum implementation";
+    homepage = "http://parity.io";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.sorpaas ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/parity-ui/env.nix b/nixpkgs/pkgs/applications/blockchains/parity-ui/env.nix
new file mode 100644
index 000000000000..a878bbf2e3e3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/parity-ui/env.nix
@@ -0,0 +1,19 @@
+{ stdenv, lib, zlib, glib, alsaLib, dbus, gtk2, atk, pango, freetype, fontconfig
+, libgnome-keyring3, gdk-pixbuf, cairo, cups, expat, libgpgerror, nspr
+, nss, xorg, libcap, systemd, libnotify, libsecret, gnome2 }:
+
+let
+  packages = [
+    stdenv.cc.cc zlib glib dbus gtk2 atk pango freetype libgnome-keyring3
+    fontconfig gdk-pixbuf cairo cups expat libgpgerror alsaLib nspr nss
+    xorg.libXrender xorg.libX11 xorg.libXext xorg.libXdamage xorg.libXtst
+    xorg.libXcomposite xorg.libXi xorg.libXfixes xorg.libXrandr
+    xorg.libXcursor xorg.libxkbfile xorg.libXScrnSaver libcap systemd libnotify
+    xorg.libxcb libsecret gnome2.GConf
+  ];
+
+  libPathNative = lib.makeLibraryPath packages;
+  libPath64 = lib.makeSearchPathOutput "lib" "lib64" packages;
+  libPath = "${libPathNative}:${libPath64}";
+
+in { inherit packages libPath; }
diff --git a/nixpkgs/pkgs/applications/blockchains/parity/default.nix b/nixpkgs/pkgs/applications/blockchains/parity/default.nix
new file mode 100644
index 000000000000..a2428ed01ed5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/parity/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, fetchFromGitHub
+, rustPlatform
+, cmake
+, llvmPackages
+, openssl
+, pkg-config
+, systemd
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "parity";
+  version = "3.0.0";
+
+  src = fetchFromGitHub {
+    owner = "paritytech";
+    repo = "parity-ethereum";
+    rev = "v${version}";
+    sha256 = "124km8c2d7877yzd885wzlcl3gky15isx0z2l1qg1q3cqdsb5mjf";
+  };
+
+  cargoSha256 = "0m4pms7agfyqk6gz6fwxdl8jmcyhphhzh3x4vykbi6186y7a8ihq";
+
+  LIBCLANG_PATH = "${llvmPackages.libclang}/lib";
+  nativeBuildInputs = [
+    cmake
+    llvmPackages.clang
+    llvmPackages.libclang
+    pkg-config
+  ];
+
+  buildInputs = [ openssl systemd ];
+
+  cargoBuildFlags = [ "--features final" ];
+
+  # test result: FAILED. 88 passed; 13 failed; 0 ignored; 0 measured; 0 filtered out
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Fast, light, robust Ethereum implementation";
+    homepage = "http://parity.io";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ akru xrelkd ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/particl/particl-core.nix b/nixpkgs/pkgs/applications/blockchains/particl/particl-core.nix
new file mode 100644
index 000000000000..f30e9a609808
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/particl/particl-core.nix
@@ -0,0 +1,53 @@
+{ stdenv
+, autoreconfHook
+, boost
+, db48
+, fetchurl
+, libevent
+, miniupnpc
+, openssl
+, pkgconfig
+, zeromq
+, zlib
+, unixtools
+, python3
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "particl-core";
+  version = "0.19.1.1";
+
+  src = fetchurl {
+    url = "https://github.com/particl/particl-core/archive/v${version}.tar.gz";
+    sha256 = "11y5q2srkh6r2samppjb5mg6hl79y16j2lj1r23p0968vb9c45kl";
+  };
+
+  nativeBuildInputs = [ pkgconfig autoreconfHook ];
+  buildInputs = [ openssl db48 boost zlib miniupnpc libevent zeromq unixtools.hexdump python3 ];
+
+  configureFlags = [
+    "--disable-bench"
+    "--with-boost-libdir=${boost.out}/lib"
+  ] ++ optionals (!doCheck) [
+    "--enable-tests=no"
+  ];
+
+  # Always check during Hydra builds
+  doCheck = true;
+  preCheck = "patchShebangs test";
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Privacy-Focused Marketplace & Decentralized Application Platform";
+    longDescription= ''
+      An open source, decentralized privacy platform built for global person to person eCommerce.
+      RPC daemon and CLI client only.
+    '';
+    homepage = "https://particl.io/";
+    maintainers = with maintainers; [ demyanrogozhin ];
+    license = licenses.mit;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/pivx.nix b/nixpkgs/pkgs/applications/blockchains/pivx.nix
new file mode 100644
index 000000000000..600e462b390e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/pivx.nix
@@ -0,0 +1,64 @@
+{ fetchFromGitHub, stdenv, pkgconfig, autoreconfHook, wrapQtAppsHook ? null
+, openssl_1_0_2, db48, boost, zlib, miniupnpc, gmp
+, qrencode, glib, protobuf, yasm, libevent
+, utillinux, qtbase ? null, qttools ? null
+, enableUpnp ? false
+, disableWallet ? false
+, disableDaemon ? false 
+, withGui ? false }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  name = "pivx-${version}";
+  version = "4.0.2";
+
+  src = fetchFromGitHub {
+    owner = "PIVX-Project";
+    repo= "PIVX";
+    rev = "v${version}";
+    sha256 = "12lnp318k8dx1sar24zfmv2imnzs30srssnlpb31y7hcxhz0wpc5";
+  };
+
+  nativeBuildInputs = [ pkgconfig autoreconfHook ] ++ optionals withGui [ wrapQtAppsHook ];
+  buildInputs = [ glib gmp openssl_1_0_2 db48 yasm boost zlib libevent miniupnpc protobuf utillinux ]
+                  ++ optionals withGui [ qtbase qttools qrencode ];
+
+  configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ]
+                    ++ optional enableUpnp "--enable-upnp-default"
+                    ++ optional disableWallet "--disable-wallet"
+                    ++ optional disableDaemon "--disable-daemon"
+                    ++ optionals withGui [ "--with-gui=yes"
+                                           "--with-unsupported-ssl" # TODO remove this ASAP
+                                           "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin"
+                                         ];
+  
+  enableParallelBuilding = true;
+  doChecks = true;
+  postBuild = ''
+    mkdir -p $out/share/applications $out/share/icons
+    cp contrib/debian/pivx-qt.desktop $out/share/applications/
+    cp share/pixmaps/*128.png $out/share/icons/
+  '';
+
+  doInstallCheck = true;
+  installCheckPhase = ''
+    $out/bin/test_pivx
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An open source crypto-currency focused on fast private transactions";
+    longDescription = ''
+      PIVX is an MIT licensed, open source, blockchain-based cryptocurrency with
+      ultra fast transactions, low fees, high network decentralization, and
+      Zero Knowledge cryptography proofs for industry-leading transaction anonymity.
+    '';
+    license = licenses.mit;
+    homepage = "https://www.dash.org";
+    maintainers = with maintainers; [ wucke13 ];
+    platforms = platforms.unix;
+    # TODO
+    # upstream doesn't support newer openssl versions
+    # https://github.com/PIVX-Project/PIVX/issues/748
+    # openssl_1_0_2 should be replaced with openssl ASAP
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/polkadot/default.nix b/nixpkgs/pkgs/applications/blockchains/polkadot/default.nix
new file mode 100644
index 000000000000..a919a3054196
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/polkadot/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, fetchFromGitHub
+, rustPlatform
+, pkgconfig
+, openssl
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "polkadot";
+  version = "0.2.17";
+
+  src = fetchFromGitHub {
+    owner = "paritytech";
+    # N.B. In 2018, the thing that was "polkadot" was split off into its own
+    # repo, so if this package is ever updated it should be changed to
+    # paritytech/polkadot, as per comment here:
+    # https://github.com/paritytech/polkadot#note
+    repo = "substrate";
+    rev = "19f4f4d4df3bb266086b4e488739f73d3d5e588c";
+    sha256 = "0v7g03rbml2afw0splmyjh9nqpjg0ldjw09hyc0jqd3qlhgxiiyj";
+  };
+
+  cargoSha256 = "1h5v7c7xi2r2wzh1pj6xidrg7dx23w3rjm88mggpq7574arijk4i";
+
+  buildInputs = [ pkgconfig openssl openssl.dev ];
+
+  meta = with stdenv.lib; {
+    description = "Polkadot Node Implementation";
+    homepage = "https://polkadot.network";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.akru ];
+    platforms = platforms.linux;
+    # Last attempt at building this was on v0.7.22
+    # https://github.com/paritytech/polkadot/releases
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/quorum.nix b/nixpkgs/pkgs/applications/blockchains/quorum.nix
new file mode 100644
index 000000000000..f745860f6612
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/quorum.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, buildGoPackage, git, which }:
+  
+buildGoPackage rec {
+  pname = "quorum";
+  version = "2.5.0";
+
+  goPackagePath = "github.com/jpmorganchase/quorum";
+
+  src = fetchFromGitHub {
+    owner = "jpmorganchase";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0xfdaqp9bj5dkw12gy19lxj73zh7w80j051xclsvnd41sfah86ll";
+  };
+
+  buildInputs = [ git which ];
+
+  buildPhase = ''
+    cd "go/src/$goPackagePath"
+    make geth bootnode swarm
+  '';
+
+  installPhase = ''
+    mkdir -pv $out/bin
+    cp -v build/bin/geth build/bin/bootnode build/bin/swarm $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A permissioned implementation of Ethereum supporting data privacy";
+    homepage = "https://www.goquorum.com/";
+    license = licenses.lgpl3;
+    maintainers = with maintainers; [ mmahut ];
+    platforms = subtractLists ["aarch64-linux"] platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/stellar-core-dirty-version.patch b/nixpkgs/pkgs/applications/blockchains/stellar-core-dirty-version.patch
new file mode 100644
index 000000000000..57d66ce5919a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/stellar-core-dirty-version.patch
@@ -0,0 +1,15 @@
+Subject: Prevent "-dirty" from being erroneously added to the version
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index d36d1a3..00048fc 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -28,7 +28,7 @@ always:
+ # Always rebuild because .git/HEAD is a symbolic ref one can't depend on
+ StellarCoreVersion.h: always
+ 	@vers=$$(cd "$(srcdir)" \
+-		&& git describe --always --dirty --tags 2>/dev/null \
++		&& git describe --always --tags 2>/dev/null \
+ 		|| echo "$(PACKAGE) $(VERSION)"); \
+ 	    echo "#define STELLAR_CORE_VERSION \"$$vers\"" > $@~
+ 	@if cmp -s $@~ $@; then rm -f $@~; else \
diff --git a/nixpkgs/pkgs/applications/blockchains/stellar-core.nix b/nixpkgs/pkgs/applications/blockchains/stellar-core.nix
new file mode 100644
index 000000000000..6bb717a0344b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/stellar-core.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchgit, autoconf, libtool, automake, pkgconfig, git
+, bison, flex, postgresql }:
+
+let
+  pname = "stellar-core";
+  version = "0.5.1";
+
+in stdenv.mkDerivation {
+  name = "${pname}-${version}";
+
+  src = fetchgit {
+    url = "https://github.com/stellar/stellar-core.git";
+    rev = "refs/tags/v${version}";
+    sha256 = "0ldw3qr0sajgam38z2w2iym0214ial6iahbzx3b965cw92n8n88z";
+    fetchSubmodules = true;
+    leaveDotGit = true;
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ autoconf automake libtool git ];
+
+  propagatedBuildInputs = [ bison flex postgresql ];
+
+  patches = [ ./stellar-core-dirty-version.patch ];
+
+  preConfigure = ''
+    # Everything needs to be staged in git because the build uses
+    # `git ls-files` to search for source files to compile.
+    git add .
+
+    ./autogen.sh
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Implements the Stellar Consensus Protocol, a federated consensus protocol";
+    longDescription = ''
+      Stellar-core is the backbone of the Stellar network. It maintains a
+      local copy of the ledger, communicating and staying in sync with other
+      instances of stellar-core on the network. Optionally, stellar-core can
+      store historical records of the ledger and participate in consensus.
+    '';
+    homepage = "https://www.stellar.org/";
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ chris-martin ];
+    license = licenses.asl20;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/sumokoin.nix b/nixpkgs/pkgs/applications/blockchains/sumokoin.nix
new file mode 100644
index 000000000000..ad65da057aec
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/sumokoin.nix
@@ -0,0 +1,35 @@
+{ lib, stdenv, fetchFromGitHub, cmake, unbound, openssl, boost
+, libunwind, lmdb, miniupnpc }:
+
+stdenv.mkDerivation rec {
+  pname = "sumokoin";
+  version = "0.2.0.0";
+
+  src = fetchFromGitHub {
+    owner = "sumoprojects";
+    repo = "sumokoin";
+    rev = "v${version}";
+    sha256 = "0ndgcawhxh3qb3llrrilrwzhs36qpxv7f53rxgcansbff9b3za6n";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ unbound openssl boost libunwind lmdb miniupnpc ];
+
+  postPatch = ''
+    substituteInPlace src/blockchain_db/lmdb/db_lmdb.cpp --replace mdb_size_t size_t
+  '';
+
+  cmakeFlags = [
+    "-DLMDB_INCLUDE=${lmdb}/include"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "Sumokoin is a fork of Monero and a truely fungible cryptocurrency";
+    homepage = "https://www.sumokoin.org/";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fpletz ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/tessera.nix b/nixpkgs/pkgs/applications/blockchains/tessera.nix
new file mode 100644
index 000000000000..84f7925d2180
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/tessera.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, makeWrapper, jre }:
+
+stdenv.mkDerivation rec {
+  pname = "tessera";
+  version = "0.10.2";
+
+  src = fetchurl {
+    url = "https://oss.sonatype.org/service/local/repositories/releases/content/com/jpmorgan/quorum/${pname}-app/${version}/${pname}-app-${version}-app.jar";
+    sha256 = "1zn8w7q0q5man0407kb82lw4mlvyiy9whq2f6izf2b5415f9s0m4";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  dontUnpack = true;
+
+  installPhase = ''
+    makeWrapper ${jre}/bin/java $out/bin/tessera --add-flags "-jar $src"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Enterprise Implementation of Quorum's transaction manager";
+    homepage = "https://github.com/jpmorganchase/tessera";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ mmahut ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/vertcoin.nix b/nixpkgs/pkgs/applications/blockchains/vertcoin.nix
new file mode 100644
index 000000000000..21104012f4d2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/vertcoin.nix
@@ -0,0 +1,69 @@
+{ stdenv
+, fetchFromGitHub
+, openssl
+, boost
+, libevent
+, autoreconfHook
+, db4
+, pkgconfig
+, protobuf
+, hexdump
+, zeromq
+, withGui
+, qtbase ? null
+, qttools ? null
+, wrapQtAppsHook ? null
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "vertcoin";
+  version = "0.15.0.1";
+
+  name = pname + toString (optional (!withGui) "d") + "-" + version;
+
+  src = fetchFromGitHub {
+    owner = pname + "-project";
+    repo = pname + "-core";
+    rev = version;
+    sha256 = "09q7qicw52gv225hq6wlpsf4zr4hjc8miyim5cygi5nxxrlw7kd3";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    pkgconfig
+    hexdump
+  ] ++ optionals withGui [
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    openssl
+    boost
+    libevent
+    db4
+    zeromq
+  ] ++ optionals withGui [
+    qtbase
+    qttools
+    protobuf
+  ];
+
+  enableParallelBuilding = true;
+
+  configureFlags = [
+      "--with-boost-libdir=${boost.out}/lib"
+  ] ++ optionals withGui [
+      "--with-gui=qt5"
+      "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin"
+  ];
+
+  meta = {
+    description = "A digital currency with mining decentralisation and ASIC resistance as a key focus";
+    homepage = "https://vertcoin.org/";
+    license = licenses.mit;
+    maintainers = [ maintainers.mmahut ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/wasabiwallet/default.nix b/nixpkgs/pkgs/applications/blockchains/wasabiwallet/default.nix
new file mode 100644
index 000000000000..db3eb37f0ae8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/wasabiwallet/default.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, fetchurl
+, makeDesktopItem
+, curl
+, dotnet-netcore
+, fontconfig
+, krb5
+, openssl
+, xorg
+, zlib
+}:
+
+let
+  libPath = stdenv.lib.makeLibraryPath [
+    curl
+    dotnet-netcore
+    fontconfig.lib
+    krb5
+    openssl
+    stdenv.cc.cc.lib
+    xorg.libX11
+    zlib
+  ];
+in
+stdenv.mkDerivation rec {
+  pname = "wasabiwallet";
+  version = "1.1.11.1";
+
+  src = fetchurl {
+    url = "https://github.com/zkSNACKs/WalletWasabi/releases/download/v${version}/WasabiLinux-${version}.tar.gz";
+    sha256 = "04v8f2h67aqvcb5a8vmzbp2sqnq7g4m0v1ng52ccb4ii668ya8hy";
+  };
+
+  dontBuild = true;
+  dontPatchELF = true;
+
+  desktopItem = makeDesktopItem {
+    name = "wasabi";
+    exec = "wasabiwallet";
+    desktopName = "Wasabi";
+    genericName = "Bitcoin wallet";
+    comment = meta.description;
+    categories = "Application;Network;Utility;";
+  };
+
+  installPhase = ''
+    mkdir -p $out/opt/${pname} $out/bin $out/share/applications
+    cp -Rv . $out/opt/${pname}
+    cd $out/opt/${pname}
+    for i in $(find . -type f -name '*.so') wassabee
+      do
+        patchelf --set-rpath ${libPath} $i
+      done
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" wassabee
+    ln -s $out/opt/${pname}/wassabee $out/bin/${pname}
+    cp -v $desktopItem/share/applications/* $out/share/applications
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Privacy focused Bitcoin wallet";
+    homepage = "https://wasabiwallet.io/";
+    license = licenses.mit;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ mmahut ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/wownero.nix b/nixpkgs/pkgs/applications/blockchains/wownero.nix
new file mode 100644
index 000000000000..e0d124918160
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/wownero.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchFromGitHub, cmake, boost, miniupnpc_2, openssl, unbound
+, readline, libsodium, rapidjson, fetchurl
+}:
+
+with stdenv.lib;
+
+let
+  randomwowVersion = "1.1.6";
+  randomwow = fetchurl {
+    url = "https://github.com/wownero/RandomWOW/archive/${randomwowVersion}.tar.gz";
+    sha256 = "1c55y2dwrayh6k1avpchs89gq1mvy5c305h92jm2k48kzhw6a792";
+  };
+in
+
+stdenv.mkDerivation rec {
+  pname = "wownero";
+  version = "0.8.0.0";
+
+  src = fetchFromGitHub {
+    owner = "wownero";
+    repo = "wownero";
+    rev    = "v${version}";
+    sha256 = "14nggivilgzaqhjd4ng3g2p884yp2hc322hpcpwjdnz2zfc3qq6c";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    boost miniupnpc_2 openssl unbound rapidjson readline libsodium
+  ];
+
+  postUnpack = ''
+    rm -r $sourceRoot/external/RandomWOW
+    unpackFile ${randomwow}
+    mv RandomWOW-${randomwowVersion} $sourceRoot/external/RandomWOW
+  '';
+
+  cmakeFlags = [
+    "-DReadline_ROOT_DIR=${readline.dev}"
+    "-DMANUAL_SUBMODULES=ON"
+  ];
+
+  meta = {
+    description = ''
+      A privacy-centric memecoin that was fairly launched on April 1, 2018 with
+      no pre-mine, stealth-mine or ICO
+    '';
+    longDescription = ''
+      Wownero has a maximum supply of around 184 million WOW with a slow and
+      steady emission over 50 years. It is a fork of Monero, but with its own
+      genesis block, so there is no degradation of privacy due to ring
+      signatures using different participants for the same tx outputs on
+      opposing forks.
+    '';
+    homepage    = "https://wownero.org/";
+    license     = licenses.bsd3;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ fuwa ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/zcash/default.nix b/nixpkgs/pkgs/applications/blockchains/zcash/default.nix
new file mode 100644
index 000000000000..e2c57d514cda
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/zcash/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, libsodium, fetchFromGitHub, wget, pkgconfig, autoreconfHook, openssl, db62, boost17x
+, zlib, gtest, gmock, callPackage, gmp, qt4, utillinux, protobuf, qrencode, libevent }:
+
+let librustzcash = callPackage ./librustzcash {};
+in
+with stdenv.lib;
+stdenv.mkDerivation rec {
+
+  pname = "zcash";
+  version = "2.1.1-1";
+
+  src = fetchFromGitHub {
+    owner = "zcash";
+    repo  = "zcash";
+    rev = "v${version}";
+    sha256 = "1g5zlfzfp31my8w8nlg5fncpr2y95iv9fm04x57sjb93rgmjdh5n";
+  };
+
+  patchPhase = ''
+    sed -i"" 's,-fvisibility=hidden,,g'            src/Makefile.am
+  '';
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ gtest gmock gmp openssl wget db62 boost17x zlib
+                  protobuf libevent libsodium librustzcash ]
+                  ++ optionals stdenv.isLinux [ utillinux ];
+
+  configureFlags = [ "--with-boost-libdir=${boost17x.out}/lib" ];
+
+  postInstall = ''
+    cp zcutil/fetch-params.sh $out/bin/zcash-fetch-params
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Peer-to-peer, anonymous electronic cash system";
+    homepage = "https://z.cash/";
+    maintainers = with maintainers; [ rht tkerber ];
+    license = licenses.mit;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/blockchains/zcash/librustzcash/default.nix b/nixpkgs/pkgs/applications/blockchains/zcash/librustzcash/default.nix
new file mode 100644
index 000000000000..526adc715d45
--- /dev/null
+++ b/nixpkgs/pkgs/applications/blockchains/zcash/librustzcash/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, rustPlatform }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "librustzcash";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "zcash";
+    repo = "librustzcash";
+    rev = version;
+    sha256 = "0d28k29sgzrg9clynz29kpw50kbkp0a4dfdayqhmpjmsh05y6261";
+  };
+
+  cargoSha256 = "1wzyrcmcbrna6rjzw19c4lq30didzk4w6fs6wmvxp0xfg4qqdlax";
+
+  installPhase = ''
+    mkdir -p $out/lib
+    cp $releaseDir/librustzcash.a $out/lib/
+    mkdir -p $out/include
+    cp librustzcash/include/librustzcash.h $out/include/
+  '';
+
+  # The tests do pass, but they take an extremely long time to run.
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Rust-language assets for Zcash";
+    homepage = "https://github.com/zcash/librustzcash";
+    maintainers = with maintainers; [ rht tkerber ];
+    license = with licenses; [ mit asl20 ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/display-managers/lightdm-enso-os-greeter/default.nix b/nixpkgs/pkgs/applications/display-managers/lightdm-enso-os-greeter/default.nix
new file mode 100644
index 000000000000..488ef4cfedd4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/display-managers/lightdm-enso-os-greeter/default.nix
@@ -0,0 +1,70 @@
+{ stdenv, fetchgit, pkgconfig, linkFarm, lightdm-enso-os-greeter
+, dbus, pcre, epoxy, libXdmcp, at-spi2-core, libxklavier, libxkbcommon, libpthreadstubs
+, gtk3, vala, cmake, libgee, libX11, lightdm, gdk-pixbuf, clutter-gtk, wrapGAppsHook, librsvg }:
+
+stdenv.mkDerivation {
+  version = "0.2.1";
+  pname = "lightdm-enso-os-greeter";
+
+  src = fetchgit {
+    url = "https://github.com/nick92/Enso-OS";
+    rev = "ed48330bfd986072bd82ac542ed8f8a7365c6427";
+    sha256 = "11jm181jq1vbn83h235avpdxz7pqq6prqyzki5yryy53mkj4kgxz";
+  };
+
+  patches = [
+    ./fix-paths.patch
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    pkgconfig
+    vala
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    dbus
+    gtk3
+    pcre
+    epoxy
+    libgee
+    libX11
+    lightdm
+    libXdmcp
+    gdk-pixbuf
+    clutter-gtk
+    libxklavier
+    at-spi2-core
+    libxkbcommon
+    libpthreadstubs
+    librsvg
+  ];
+
+  preConfigure = ''
+    cd greeter
+  '';
+
+  passthru.xgreeters = linkFarm "enso-os-greeter-xgreeters" [{
+    path = "${lightdm-enso-os-greeter}/share/xgreeters/pantheon-greeter.desktop";
+    name = "pantheon-greeter.desktop";
+  }];
+
+  postFixup = ''
+    substituteInPlace $out/share/xgreeters/pantheon-greeter.desktop \
+      --replace "pantheon-greeter" "$out/bin/pantheon-greeter"
+  '';
+
+  meta = with stdenv.lib; {
+    description = ''
+      A fork of pantheon greeter that positions elements in a central and
+      vertigal manner and adds a blur effect to the background
+    '';
+    homepage = "https://github.com/nick92/Enso-OS";
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [
+      eadwu
+    ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/display-managers/lightdm-enso-os-greeter/fix-paths.patch b/nixpkgs/pkgs/applications/display-managers/lightdm-enso-os-greeter/fix-paths.patch
new file mode 100644
index 000000000000..ab3ad2b10e41
--- /dev/null
+++ b/nixpkgs/pkgs/applications/display-managers/lightdm-enso-os-greeter/fix-paths.patch
@@ -0,0 +1,24 @@
+diff --git a/greeter/CMakeLists.txt b/greeter/CMakeLists.txt
+index 57aebb0..ab50bff 100644
+--- a/greeter/CMakeLists.txt
++++ b/greeter/CMakeLists.txt
+@@ -9,7 +9,6 @@ list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
+ set (CONF_DIR "/etc/lightdm")
+ set (DATADIR "${CMAKE_INSTALL_PREFIX}/share")
+ set (PKGDATADIR "${DATADIR}/enso/greeter")
+-set (CMAKE_INSTALL_PREFIX /usr)
+ set (VERSION "1.0.6")
+ 
+ 
+@@ -94,9 +93,9 @@ glib_compile_resources (GLIB_RESOURCES_CSS SOURCE data/css.gresource.xml)
+ add_executable (pantheon-greeter ${VALA_C} ${GLIB_RESOURCES_CSS})
+ target_link_libraries(pantheon-greeter m)
+ 
+-install (TARGETS pantheon-greeter RUNTIME DESTINATION sbin)
++install (TARGETS pantheon-greeter RUNTIME DESTINATION bin)
+ install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/pantheon-greeter.desktop DESTINATION share/xgreeters)
+-install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/greeter.conf DESTINATION ${CONF_DIR})
++install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/greeter.conf DESTINATION etc/lightdm)
+ install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/fingerprint.svg DESTINATION ${PKGDATADIR})
+ install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/power.svg DESTINATION ${PKGDATADIR})
+ install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/checked.svg DESTINATION ${PKGDATADIR})
diff --git a/nixpkgs/pkgs/applications/display-managers/lightdm-mini-greeter/default.nix b/nixpkgs/pkgs/applications/display-managers/lightdm-mini-greeter/default.nix
new file mode 100644
index 000000000000..256ecd59f4e9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/display-managers/lightdm-mini-greeter/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, linkFarm, lightdm-mini-greeter, fetchFromGitHub, autoreconfHook, pkgconfig, lightdm, gtk3, glib, gdk-pixbuf, wrapGAppsHook, librsvg }:
+
+stdenv.mkDerivation rec {
+  pname = "lightdm-mini-greeter";
+  version = "0.4.0";
+
+  src = fetchFromGitHub {
+    owner = "prikhi";
+    repo = "lightdm-mini-greeter";
+    rev = version;
+    sha256 = "10hga7pmfyjdvj4xwm3djwrhk50brcpycj3p3c57pa0vnx4ill3s";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig wrapGAppsHook ];
+  buildInputs = [ lightdm gtk3 glib gdk-pixbuf librsvg ];
+
+  configureFlags = [ "--sysconfdir=/etc" ];
+  makeFlags = [ "configdir=${placeholder "out"}/etc" ];
+
+  postInstall = ''
+    substituteInPlace "$out/share/xgreeters/lightdm-mini-greeter.desktop" \
+      --replace "Exec=lightdm-mini-greeter" "Exec=$out/bin/lightdm-mini-greeter"
+  '';
+
+  passthru.xgreeters = linkFarm "lightdm-mini-greeter-xgreeters" [{
+    path = "${lightdm-mini-greeter}/share/xgreeters/lightdm-mini-greeter.desktop";
+    name = "lightdm-mini-greeter.desktop";
+  }];
+
+  meta = with stdenv.lib; {
+    description = "A minimal, configurable, single-user GTK3 LightDM greeter";
+    homepage = "https://github.com/prikhi/lightdm-mini-greeter";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ mnacamura prikhi ];
+    platforms = platforms.linux;
+    changelog = "https://github.com/prikhi/lightdm-mini-greeter/blob/master/CHANGELOG.md";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/display-managers/lightdm-tiny-greeter/default.nix b/nixpkgs/pkgs/applications/display-managers/lightdm-tiny-greeter/default.nix
new file mode 100644
index 000000000000..7e37d1348749
--- /dev/null
+++ b/nixpkgs/pkgs/applications/display-managers/lightdm-tiny-greeter/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, linkFarm, lightdm-tiny-greeter, fetchFromGitHub
+, pkgconfig, lightdm, gtk3, glib, wrapGAppsHook, conf ? "" }:
+
+stdenv.mkDerivation rec {
+  pname = "lightdm-tiny-greeter";
+  version = "1.2";
+
+  src = fetchFromGitHub {
+    owner = "off-world";
+    repo = "lightdm-tiny-greeter";
+    rev = version;
+    sha256 = "08azpj7b5qgac9bgi1xvd6qy6x2nb7iapa0v40ggr3d1fabyhrg6";
+  };
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+  buildInputs = [ lightdm gtk3 glib ];
+
+  postUnpack = if conf != "" then ''
+    cp ${builtins.toFile "config.h" conf} source/config.h
+  '' else "";
+
+  buildPhase = ''
+    mkdir -p $out/bin $out/share/xgreeters
+    make ${pname}
+    mv ${pname} $out/bin/.
+    mv lightdm-tiny-greeter.desktop $out/share/xgreeters
+  '';
+
+  installPhase = ''
+    substituteInPlace "$out/share/xgreeters/lightdm-tiny-greeter.desktop" \
+      --replace "Exec=lightdm-tiny-greeter" "Exec=$out/bin/lightdm-tiny-greeter"
+  '';
+
+  passthru.xgreeters = linkFarm "lightdm-tiny-greeter-xgreeters" [{
+    path = "${lightdm-tiny-greeter}/share/xgreeters/lightdm-tiny-greeter.desktop";
+    name = "lightdm-tiny-greeter.desktop";
+  }];
+
+  meta = with stdenv.lib; {
+    description = "A tiny multi user lightdm greeter";
+    homepage = "https://github.com/off-world/lightdm-tiny-greeter";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ edwtjo ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/display-managers/lightdm/default.nix b/nixpkgs/pkgs/applications/display-managers/lightdm/default.nix
new file mode 100644
index 000000000000..1a65ebd33577
--- /dev/null
+++ b/nixpkgs/pkgs/applications/display-managers/lightdm/default.nix
@@ -0,0 +1,137 @@
+{ stdenv
+, fetchFromGitHub
+, substituteAll
+, plymouth
+, pam
+, pkgconfig
+, autoconf
+, automake
+, libtool
+, libxcb
+, glib
+, libXdmcp
+, itstool
+, intltool
+, libxklavier
+, libgcrypt
+, audit
+, busybox
+, polkit
+, accountsservice
+, gtk-doc
+, gnome3
+, gobject-introspection
+, vala
+, fetchpatch
+, withQt4 ? false
+, qt4
+, withQt5 ? false
+, qtbase
+, yelp-tools
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "lightdm";
+  version = "1.30.0";
+
+  outputs = [ "out" "dev" ];
+
+  src = fetchFromGitHub {
+    owner = "CanonicalLtd";
+    repo = pname;
+    rev = version;
+    sha256 = "0i1yygmjbkdjnqdl9jn8zsa1mfs2l19qc4k2capd8q1ndhnjm2dx";
+  };
+
+  nativeBuildInputs = [
+    autoconf
+    automake
+    yelp-tools
+    gnome3.yelp-xsl
+    gobject-introspection
+    gtk-doc
+    intltool
+    itstool
+    libtool
+    pkgconfig
+    vala
+  ];
+
+  buildInputs = [
+    accountsservice
+    audit
+    glib
+    libXdmcp
+    libgcrypt
+    libxcb
+    libxklavier
+    pam
+    polkit
+  ] ++ optional withQt4 qt4
+    ++ optional withQt5 qtbase;
+
+  patches = [
+    # Adds option to disable writing dmrc files
+    (fetchpatch {
+      url = "https://src.fedoraproject.org/rpms/lightdm/raw/4cf0d2bed8d1c68970b0322ccd5dbbbb7a0b12bc/f/lightdm-1.25.1-disable_dmrc.patch";
+      sha256 = "06f7iabagrsiws2l75sx2jyljknr9js7ydn151p3qfi104d1541n";
+    })
+
+    # Don't use etc/dbus-1/system.d
+    (fetchpatch {
+      url = "https://github.com/canonical/lightdm/commit/a99376f5f51aa147aaf81287d7ce70db76022c47.patch";
+      sha256 = "1zyx1qqajrmqcf9hbsapd39gmdanswd9l78rq7q6rdy4692il3yn";
+    })
+
+    # https://github.com/canonical/lightdm/pull/104
+    (fetchpatch {
+      url = "https://github.com/canonical/lightdm/commit/03f218981733e50d810767f9d04e42ee156f7feb.patch";
+      sha256 = "07w18m2gpk29z6ym4y3lzsmg5dk3ffn39sq6lac26ap7narf4ma7";
+    })
+
+    # Hardcode plymouth to fix transitions.
+    # For some reason it can't find `plymouth`
+    # even when it's in PATH in environment.systemPackages.
+    (substituteAll {
+      src = ./fix-paths.patch;
+      plymouth = "${plymouth}/bin/plymouth";
+    })
+  ];
+
+  preConfigure = "NOCONFIGURE=1 ./autogen.sh";
+
+  configureFlags = [
+    "--localstatedir=/var"
+    "--sysconfdir=/etc"
+    "--disable-tests"
+    "--disable-dmrc"
+  ] ++ optional withQt4 "--enable-liblightdm-qt"
+    ++ optional withQt5 "--enable-liblightdm-qt5";
+
+  installFlags = [
+    "sysconfdir=${placeholder "out"}/etc"
+    "localstatedir=\${TMPDIR}"
+  ];
+
+  prePatch = ''
+    substituteInPlace autogen.sh \
+      --replace "which" "${busybox}/bin/which"
+
+    substituteInPlace src/shared-data-manager.c \
+      --replace /bin/rm ${busybox}/bin/rm
+  '';
+
+  postInstall = ''
+    rm -rf $out/etc/apparmor.d $out/etc/init $out/etc/pam.d
+  '';
+
+  meta = {
+    homepage = "https://github.com/CanonicalLtd/lightdm";
+    description = "A cross-desktop display manager";
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ ocharles worldofpeace ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/display-managers/lightdm/fix-paths.patch b/nixpkgs/pkgs/applications/display-managers/lightdm/fix-paths.patch
new file mode 100644
index 000000000000..4498bc4d1a3e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/display-managers/lightdm/fix-paths.patch
@@ -0,0 +1,13 @@
+diff --git a/src/plymouth.c b/src/plymouth.c
+index d1ed91f4..318f9409 100644
+--- a/src/plymouth.c
++++ b/src/plymouth.c
+@@ -24,7 +24,7 @@ static gboolean has_active_vt = FALSE;
+ static gboolean
+ plymouth_run_command (const gchar *command, gint *exit_status)
+ {
+-    g_autofree gchar *command_line = g_strdup_printf ("plymouth %s", command);
++    g_autofree gchar *command_line = g_strdup_printf ("@plymouth@ %s", command);
+     g_autoptr(GError) error = NULL;
+     gboolean result = g_spawn_command_line_sync (command_line, NULL, NULL, exit_status, &error);
+ 
diff --git a/nixpkgs/pkgs/applications/display-managers/lightdm/gtk-greeter.nix b/nixpkgs/pkgs/applications/display-managers/lightdm/gtk-greeter.nix
new file mode 100644
index 000000000000..ab7dd90801ce
--- /dev/null
+++ b/nixpkgs/pkgs/applications/display-managers/lightdm/gtk-greeter.nix
@@ -0,0 +1,72 @@
+{ stdenv
+, lightdm_gtk_greeter
+, fetchurl
+, lightdm
+, pkgconfig
+, intltool
+, linkFarm
+, wrapGAppsHook
+, useGTK2 ? false
+, gtk2
+, gtk3 # gtk3 seems better supported
+, exo
+, at-spi2-core
+, librsvg
+, hicolor-icon-theme
+}:
+
+#ToDo: bad icons with gtk2;
+#  avatar icon is missing in standard hicolor theme, I don't know where gtk3 takes it from
+
+let
+  ver_branch = "2.0";
+  version = "2.0.7";
+in
+stdenv.mkDerivation rec {
+  pname = "lightdm-gtk-greeter";
+  inherit version;
+
+  src = fetchurl {
+    url = "${meta.homepage}/${ver_branch}/${version}/+download/${pname}-${version}.tar.gz";
+    sha256 = "1g7wc3d3vqfa7mrdhx1w9ywydgjbffla6rbrxq9k3sc62br97qms";
+  };
+
+  nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ];
+  buildInputs = [ lightdm exo librsvg hicolor-icon-theme ]
+    ++ (if useGTK2 then [ gtk2 ] else [ gtk3 ]);
+
+  configureFlags = [
+    "--localstatedir=/var"
+    "--sysconfdir=/etc"
+    "--disable-indicator-services-command"
+    "--sbindir=${placeholder "out"}/bin" # for wrapGAppsHook to wrap automatically
+  ] ++ stdenv.lib.optional useGTK2 "--with-gtk2";
+
+  preConfigure = ''
+    configureFlagsArray+=( --enable-at-spi-command="${at-spi2-core}/libexec/at-spi-bus-launcher --launch-immediately" )
+  '';
+
+  NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations";
+
+  installFlags = [
+    "localstatedir=\${TMPDIR}"
+    "sysconfdir=${placeholder "out"}/etc"
+  ];
+
+  postInstall = ''
+    substituteInPlace "$out/share/xgreeters/lightdm-gtk-greeter.desktop" \
+      --replace "Exec=lightdm-gtk-greeter" "Exec=$out/bin/lightdm-gtk-greeter"
+  '';
+
+  passthru.xgreeters = linkFarm "lightdm-gtk-greeter-xgreeters" [{
+    path = "${lightdm_gtk_greeter}/share/xgreeters/lightdm-gtk-greeter.desktop";
+    name = "lightdm-gtk-greeter.desktop";
+  }];
+
+  meta = with stdenv.lib; {
+    homepage = "https://launchpad.net/lightdm-gtk-greeter";
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ ocharles ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/display-managers/ly/default.nix b/nixpkgs/pkgs/applications/display-managers/ly/default.nix
new file mode 100644
index 000000000000..f16dd62bb1a4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/display-managers/ly/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, lib, fetchFromGitHub, linux-pam }:
+
+stdenv.mkDerivation rec { 
+  pname = "ly";
+  version = "0.2.1";
+
+  src = fetchFromGitHub {
+    owner = "cylgom";
+    repo = "ly";
+    rev = version;
+    sha256 = "16gjcrd4a6i4x8q8iwlgdildm7cpdsja8z22pf2izdm6rwfki97d";
+    fetchSubmodules = true;
+  }; 
+
+  buildInputs = [ linux-pam ];
+  makeFlags = [ "FLAGS=-Wno-error" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp bin/ly $out/bin 
+  '';
+
+  meta = with lib; {
+    description = "TUI display manager";
+    license = licenses.wtfpl;
+    homepage = "https://github.com/cylgom/ly";
+    maintainers = [ maintainers.spacekookie ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/display-managers/sddm/default.nix b/nixpkgs/pkgs/applications/display-managers/sddm/default.nix
new file mode 100644
index 000000000000..3ebeaa6262b7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/display-managers/sddm/default.nix
@@ -0,0 +1,68 @@
+{ mkDerivation, lib, fetchFromGitHub
+, cmake, extra-cmake-modules, pkgconfig, libxcb, libpthreadstubs
+, libXdmcp, libXau, qtbase, qtdeclarative, qtquickcontrols2, qttools, pam, systemd
+}:
+
+let
+  version = "0.18.1";
+
+in mkDerivation {
+  pname = "sddm";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "sddm";
+    repo = "sddm";
+    rev = "v${version}";
+    sha256 = "0an1zafz0yhxd9jgd3gzdwmaw5f9vs4c924q56lp2yxxddbmzjcq";
+  };
+
+  patches = [
+    ./sddm-ignore-config-mtime.patch
+  ];
+
+  postPatch =
+    # Fix missing include for gettimeofday()
+    ''
+      sed -e '1i#include <sys/time.h>' -i src/helper/HelperApp.cpp
+    '';
+
+  nativeBuildInputs = [ cmake extra-cmake-modules pkgconfig qttools ];
+
+  buildInputs = [
+    libxcb libpthreadstubs libXdmcp libXau pam qtbase qtdeclarative qtquickcontrols2 systemd
+  ];
+
+  cmakeFlags = [
+    "-DCONFIG_FILE=/etc/sddm.conf"
+    # Set UID_MIN and UID_MAX so that the build script won't try
+    # to read them from /etc/login.defs (fails in chroot).
+    # The values come from NixOS; they may not be appropriate
+    # for running SDDM outside NixOS, but that configuration is
+    # not supported anyway.
+    "-DUID_MIN=1000"
+    "-DUID_MAX=29999"
+
+    "-DQT_IMPORTS_DIR=${placeholder "out"}/${qtbase.qtQmlPrefix}"
+    "-DCMAKE_INSTALL_SYSCONFDIR=${placeholder "out"}/etc"
+    "-DSYSTEMD_SYSTEM_UNIT_DIR=${placeholder "out"}/lib/systemd/system"
+    "-DDBUS_CONFIG_DIR=${placeholder "out"}/share/dbus-1/system.d"
+  ];
+
+  postInstall = ''
+    # remove empty scripts
+    rm "$out/share/sddm/scripts/Xsetup" "$out/share/sddm/scripts/Xstop"
+    for f in $out/share/sddm/themes/**/theme.conf ; do
+      substituteInPlace $f \
+        --replace 'background=' "background=$(dirname $f)/"
+    done
+  '';
+
+  meta = with lib; {
+    description = "QML based X11 display manager";
+    homepage    = "https://github.com/sddm/sddm";
+    maintainers = with maintainers; [ abbradar ttuegel ];
+    platforms   = platforms.linux;
+    license     = licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/display-managers/sddm/sddm-ignore-config-mtime.patch b/nixpkgs/pkgs/applications/display-managers/sddm/sddm-ignore-config-mtime.patch
new file mode 100644
index 000000000000..aac09dfe876b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/display-managers/sddm/sddm-ignore-config-mtime.patch
@@ -0,0 +1,43 @@
+diff --git a/src/common/ConfigReader.cpp b/src/common/ConfigReader.cpp
+index 4b5983c..911c511 100644
+--- a/src/common/ConfigReader.cpp
++++ b/src/common/ConfigReader.cpp
+@@ -147,16 +147,13 @@ namespace SDDM {
+         // * m_path (classic fallback /etc/sddm.conf)
+ 
+         QStringList files;
+-        QDateTime latestModificationTime = QFileInfo(m_path).lastModified();
+ 
+         if (!m_sysConfigDir.isEmpty()) {
+             //include the configDir in modification time so we also reload on any files added/removed
+             QDir dir(m_sysConfigDir);
+             if (dir.exists()) {
+-                latestModificationTime = std::max(latestModificationTime,  QFileInfo(m_sysConfigDir).lastModified());
+                 foreach (const QFileInfo &file, dir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot, QDir::LocaleAware)) {
+                     files << (file.absoluteFilePath());
+-                    latestModificationTime = std::max(latestModificationTime, file.lastModified());
+                 }
+             }
+         }
+@@ -164,21 +161,14 @@ namespace SDDM {
+             //include the configDir in modification time so we also reload on any files added/removed
+             QDir dir(m_configDir);
+             if (dir.exists()) {
+-                latestModificationTime = std::max(latestModificationTime,  QFileInfo(m_configDir).lastModified());
+                 foreach (const QFileInfo &file, dir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot, QDir::LocaleAware)) {
+                     files << (file.absoluteFilePath());
+-                    latestModificationTime = std::max(latestModificationTime, file.lastModified());
+                 }
+             }
+         }
+ 
+         files << m_path;
+ 
+-        if (latestModificationTime <= m_fileModificationTime) {
+-            return;
+-        }
+-        m_fileModificationTime = latestModificationTime;
+-
+         foreach (const QString &filepath, files) {
+             loadInternal(filepath);
+         }
diff --git a/nixpkgs/pkgs/applications/editors/aewan/default.nix b/nixpkgs/pkgs/applications/editors/aewan/default.nix
new file mode 100644
index 000000000000..56a144bdfb8d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/aewan/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, zlib, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "aewan";
+  version = "1.0.01";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/aewan/${pname}-${version}.tar.gz";
+    sha256 = "5266dec5e185e530b792522821c97dfa5f9e3892d0dca5e881d0c30ceac21817";
+  };
+
+  buildInputs = [ zlib ncurses ];
+
+  meta = {
+    description = "Ascii-art Editor Without A Name";
+    homepage = "http://aewan.sourceforge.net/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/amp/default.nix b/nixpkgs/pkgs/applications/editors/amp/default.nix
new file mode 100644
index 000000000000..9be6d56ab345
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/amp/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, rustPlatform, openssl, pkgconfig, python3, xorg, cmake, libgit2, darwin
+, curl }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "amp";
+  version = "0.6.2";
+
+  src = fetchFromGitHub {
+    owner = "jmacdonald";
+    repo = pname;
+    rev = version;
+    sha256 = "0l1vpcfq6jrq2dkrmsa4ghwdpp7c54f46gz3n7nk0i41b12hnigw";
+  };
+
+  cargoSha256 = "09v991rl2w4c4jh7ga7q1lk6wyl2vr71j5cpniij8mcvszrz78qf";
+
+  nativeBuildInputs = [ cmake pkgconfig python3 ];
+  buildInputs = [ openssl xorg.libxcb libgit2 ] ++ stdenv.lib.optionals stdenv.isDarwin
+    (with darwin.apple_sdk.frameworks; [ curl Security AppKit ]);
+
+  # Tests need to write to the theme directory in HOME.
+  preCheck = "export HOME=`mktemp -d`";
+
+  meta = with stdenv.lib; {
+    description = "A modern text editor inspired by Vim";
+    homepage = "https://amp.rs";
+    license = [ licenses.gpl3 ];
+    maintainers = [ maintainers.sb0 ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/android-studio/common.nix b/nixpkgs/pkgs/applications/editors/android-studio/common.nix
new file mode 100644
index 000000000000..1a6904b21768
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/android-studio/common.nix
@@ -0,0 +1,212 @@
+{ channel, pname, version, build, sha256Hash }:
+
+{ alsaLib
+, bash
+, buildFHSUserEnv
+, cacert
+, coreutils
+, dbus
+, expat
+, fetchurl
+, findutils
+, file
+, fontsConf
+, git
+, glxinfo
+, gnugrep
+, gnused
+, gnutar
+, gtk2, gnome_vfs, glib, GConf
+, gzip
+, fontconfig
+, freetype
+, libpulseaudio
+, libGL
+, libuuid
+, libX11
+, libxcb
+, libXcomposite
+, libXcursor
+, libXdamage
+, libXext
+, libXfixes
+, libXi
+, libXrandr
+, libXrender
+, libXtst
+, makeWrapper
+, nspr
+, nss
+, pciutils
+, pkgsi686Linux
+, ps
+, setxkbmap
+, stdenv
+, systemd
+, unzip
+, which
+, runCommand
+, xkeyboard_config
+, zlib
+, makeDesktopItem
+}:
+
+let
+  drvName = "android-studio-${channel}-${version}";
+  androidStudio = stdenv.mkDerivation {
+    name = "${drvName}-unwrapped";
+
+    src = fetchurl {
+      url = "https://dl.google.com/dl/android/studio/ide-zips/${version}/android-studio-ide-${build}-linux.tar.gz";
+      sha256 = sha256Hash;
+    };
+
+    buildInputs = [
+      makeWrapper
+      unzip
+    ];
+    installPhase = ''
+      cp -r . $out
+      wrapProgram $out/bin/studio.sh \
+        --set ANDROID_EMULATOR_USE_SYSTEM_LIBS 1 \
+        --prefix PATH : "${stdenv.lib.makeBinPath [
+
+          # Checked in studio.sh
+          coreutils
+          findutils
+          gnugrep
+          which
+          gnused
+
+          # For Android emulator
+          file
+          glxinfo
+          pciutils
+          setxkbmap
+
+          # Used during setup wizard
+          gnutar
+          gzip
+
+          # Runtime stuff
+          git
+          ps
+        ]}" \
+        --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [
+
+          # Crash at startup without these
+          fontconfig
+          freetype
+          libXext
+          libXi
+          libXrender
+          libXtst
+
+          # Gradle wants libstdc++.so.6
+          stdenv.cc.cc.lib
+          # mksdcard wants 32 bit libstdc++.so.6
+          pkgsi686Linux.stdenv.cc.cc.lib
+
+          # aapt wants libz.so.1
+          zlib
+          pkgsi686Linux.zlib
+          # Support multiple monitors
+          libXrandr
+
+          # For Android emulator
+          alsaLib
+          dbus
+          expat
+          libpulseaudio
+          libuuid
+          libX11
+          libxcb
+          libXcomposite
+          libXcursor
+          libXdamage
+          libXfixes
+          libGL
+          nspr
+          nss
+          systemd
+
+          # For GTKLookAndFeel
+          gtk2
+          gnome_vfs
+          glib
+          GConf
+        ]}" \
+        --set QT_XKB_CONFIG_ROOT "${xkeyboard_config}/share/X11/xkb" \
+        --set FONTCONFIG_FILE ${fontsConf}
+    '';
+  };
+
+  desktopItem = makeDesktopItem {
+    name = drvName;
+    exec = pname;
+    icon = drvName;
+    desktopName = "Android Studio (${channel} channel)";
+    comment = "The official Android IDE";
+    categories = "Development;IDE;";
+    startupNotify = "true";
+    extraEntries="StartupWMClass=jetbrains-studio";
+  };
+
+  # Android Studio downloads prebuilt binaries as part of the SDK. These tools
+  # (e.g. `mksdcard`) have `/lib/ld-linux.so.2` set as the interpreter. An FHS
+  # environment is used as a work around for that.
+  fhsEnv = buildFHSUserEnv {
+    name = "${drvName}-fhs-env";
+    multiPkgs = pkgs: [
+      pkgs.ncurses5
+
+      # Flutter can only search for certs Fedora-way.
+      (runCommand "fedoracert" {}
+        ''
+        mkdir -p $out/etc/pki/tls/
+        ln -s ${cacert}/etc/ssl/certs $out/etc/pki/tls/certs
+        '')
+    ];
+  };
+in runCommand
+  drvName
+  {
+    startScript = ''
+      #!${bash}/bin/bash
+      ${fhsEnv}/bin/${drvName}-fhs-env ${androidStudio}/bin/studio.sh
+    '';
+    preferLocalBuild = true;
+    allowSubstitutes = false;
+    passthru = {
+      unwrapped = androidStudio;
+    };
+    meta = with stdenv.lib; {
+      description = "The Official IDE for Android (${channel} channel)";
+      longDescription = ''
+        Android Studio is the official IDE for Android app development, based on
+        IntelliJ IDEA.
+      '';
+      homepage = if channel == "stable"
+        then "https://developer.android.com/studio/index.html"
+        else "https://developer.android.com/studio/preview/index.html";
+      license = with licenses; [ asl20 unfree ]; # The code is under Apache-2.0, but:
+      # If one selects Help -> Licenses in Android Studio, the dialog shows the following:
+      # "Android Studio includes proprietary code subject to separate license,
+      # including JetBrains CLion(R) (www.jetbrains.com/clion) and IntelliJ(R)
+      # IDEA Community Edition (www.jetbrains.com/idea)."
+      # Also: For actual development the Android SDK is required and the Google
+      # binaries are also distributed as proprietary software (unlike the
+      # source-code itself).
+      platforms = [ "x86_64-linux" ];
+      maintainers = with maintainers; [ primeos ];
+    };
+  }
+  ''
+    mkdir -p $out/{bin,share/pixmaps}
+
+    echo -n "$startScript" > $out/bin/${pname}
+    chmod +x $out/bin/${pname}
+
+    ln -s ${androidStudio}/bin/studio.png $out/share/pixmaps/${drvName}.png
+    ln -s ${desktopItem}/share/applications $out/share/applications
+  ''
diff --git a/nixpkgs/pkgs/applications/editors/android-studio/default.nix b/nixpkgs/pkgs/applications/editors/android-studio/default.nix
new file mode 100644
index 000000000000..a64b361f8a77
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/android-studio/default.nix
@@ -0,0 +1,47 @@
+{ callPackage, makeFontsConf, gnome2 }:
+
+let
+  mkStudio = opts: callPackage (import ./common.nix opts) {
+    fontsConf = makeFontsConf {
+      fontDirectories = [];
+    };
+    inherit (gnome2) GConf gnome_vfs;
+  };
+  stableVersion = {
+    version = "4.0.0.16"; # "Android Studio 4.0"
+    build = "193.6514223";
+    sha256Hash = "1sqj64vddwfrr9821habfz7dms9csvbp7b8gf1d027188b2lvh3h";
+  };
+  betaVersion = {
+    version = "4.0.0.16"; # "Android Studio 4.0"
+    build = "193.6514223";
+    sha256Hash = "1sqj64vddwfrr9821habfz7dms9csvbp7b8gf1d027188b2lvh3h";
+  };
+  latestVersion = { # canary & dev
+    version = "4.1.0.10"; # "Android Studio 4.1 Canary 10"
+    build = "201.6507185";
+    sha256Hash = "19yawwsjsdqc0brr0ahviljv4v4p085k3izdpmm915c0bjm89y72";
+  };
+in {
+  # Attributes are named by their corresponding release channels
+
+  stable = mkStudio (stableVersion // {
+    channel = "stable";
+    pname = "android-studio";
+  });
+
+  beta = mkStudio (betaVersion // {
+    channel = "beta";
+    pname = "android-studio-beta";
+  });
+
+  dev = mkStudio (latestVersion // {
+    channel = "dev";
+    pname = "android-studio-dev";
+  });
+
+  canary = mkStudio (latestVersion // {
+    channel = "canary";
+    pname = "android-studio-canary";
+  });
+}
diff --git a/nixpkgs/pkgs/applications/editors/apostrophe/default.nix b/nixpkgs/pkgs/applications/editors/apostrophe/default.nix
new file mode 100644
index 000000000000..b3902293718e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/apostrophe/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchFromGitLab, meson, ninja, cmake
+, wrapGAppsHook, pkgconfig, desktop-file-utils
+, appstream-glib, pythonPackages, glib, gobject-introspection
+, gtk3, webkitgtk, glib-networking, gnome3, gspell, texlive
+, shared-mime-info, haskellPackages}:
+
+let
+  pythonEnv = pythonPackages.python.withPackages(p: with p;
+    [ regex setuptools python-Levenshtein pyenchant pygobject3 pycairo pypandoc ]);
+  texliveDist = texlive.combined.scheme-medium;
+
+in stdenv.mkDerivation rec {
+  pname = "apostrophe";
+  version = "2.2.0.3";
+
+  src = fetchFromGitLab {
+    owner  = "somas";
+    repo   = pname;
+    domain = "gitlab.gnome.org";
+    rev    = "v${version}";
+    sha256 = "06bl1hc69ixk2vcb2ig74mwid14sl5zq6rfna7lx9na6j3l04879";
+  };
+
+  nativeBuildInputs = [ meson ninja cmake pkgconfig desktop-file-utils
+    appstream-glib wrapGAppsHook ];
+
+  buildInputs = [ glib pythonEnv gobject-introspection gtk3
+    gnome3.adwaita-icon-theme webkitgtk gspell texliveDist
+    glib-networking ];
+
+  postPatch = ''
+    patchShebangs --build build-aux/meson_post_install.py
+
+    substituteInPlace ${pname}/config.py --replace "/usr/share/${pname}" "$out/share/${pname}"
+
+    # get rid of unused distributed dependencies
+    rm -r ${pname}/pylocales
+  '';
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      --prefix PYTHONPATH : "$out/lib/python${pythonEnv.pythonVersion}/site-packages/"
+      --prefix PATH : "${texliveDist}/bin"
+      --prefix PATH : "${haskellPackages.pandoc-citeproc}/bin"
+      --prefix XDG_DATA_DIRS : "${shared-mime-info}/share"
+    )
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://gitlab.gnome.org/somas/apostrophe";
+    description = "A distraction free Markdown editor for GNU/Linux";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.sternenseemann ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/aseprite/allegro-glibc-2.30.patch b/nixpkgs/pkgs/applications/editors/aseprite/allegro-glibc-2.30.patch
new file mode 100644
index 000000000000..94c70da276c9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/aseprite/allegro-glibc-2.30.patch
@@ -0,0 +1,8 @@
+diff --git a/src/she/CMakeLists.txt b/src/she/CMakeLists.txt
+index 4909ff1..02fa145 100644
+--- a/src/she/CMakeLists.txt
++++ b/src/she/CMakeLists.txt
+@@ -23,2 +23,3 @@ if(USE_ALLEG4_BACKEND)
+     add_definitions(-DUSE_MOUSE_POLLER)

++    add_definitions(-DALLEGRO_NO_FIX_ALIASES)

+   endif()

diff --git a/nixpkgs/pkgs/applications/editors/aseprite/default.nix b/nixpkgs/pkgs/applications/editors/aseprite/default.nix
new file mode 100644
index 000000000000..4ba8932fec25
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/aseprite/default.nix
@@ -0,0 +1,128 @@
+{ stdenv, lib, callPackage, fetchFromGitHub, fetchpatch, cmake, ninja, pkgconfig
+, curl, freetype, giflib, libjpeg, libpng, libwebp, pixman, tinyxml, zlib
+, harfbuzzFull, glib, fontconfig, pcre
+, libX11, libXext, libXcursor, libXxf86vm, libGL
+, unfree ? false
+, cmark
+}:
+
+# Unfree version is not redistributable:
+# https://dev.aseprite.org/2016/09/01/new-source-code-license/
+# Consider supporting the developer: https://aseprite.org/#buy
+
+let
+  skia = callPackage ./skia.nix {};
+in
+stdenv.mkDerivation rec {
+  pname = "aseprite";
+  version = if unfree then "1.2.16.3" else "1.1.7";
+
+  src = fetchFromGitHub {
+    owner = "aseprite";
+    repo = "aseprite";
+    rev = "v${version}";
+    fetchSubmodules = true;
+    sha256 = if unfree
+      then "16yn7y9xdc5jd50cq7bmsm320gv23pp71lr8hg2nmynzc8ibyda8"
+      else "0gd49lns2bpzbkwax5jf9x1xmg1j8ij997kcxr2596cwiswnw4di";
+  };
+
+  nativeBuildInputs = [
+    cmake pkgconfig
+  ] ++ lib.optionals unfree [ ninja ];
+
+  buildInputs = [
+    curl freetype giflib libjpeg libpng libwebp pixman tinyxml zlib
+    libX11 libXext libXcursor libXxf86vm
+  ] ++ lib.optionals unfree [
+    cmark
+    harfbuzzFull glib fontconfig pcre
+    skia libGL
+  ];
+
+  patches = if !unfree then [
+    ./allegro-glibc-2.30.patch
+  ] else [
+    (fetchpatch {
+      url = "https://github.com/lfont/aseprite/commit/f1ebc47012d3fed52306ed5922787b4b98cc0a7b.patch";
+      sha256 = "03xg7x6b9iv7z18vzlqxhcfphmx4v3qhs9f5rgf38ppyklca5jyw";
+    })
+    (fetchpatch {
+      url = "https://github.com/orivej/aseprite/commit/ea87e65b357ad0bd65467af5529183b5a48a8c17.patch";
+      sha256 = "1vwn8ivap1pzdh444sdvvkndp55iz146nhmd80xbm8cyzn3qmg91";
+    })
+  ];
+
+  postPatch = ''
+    sed -i src/config.h -e "s-\\(#define VERSION\\) .*-\\1 \"$version\"-"
+  '';
+
+  cmakeFlags = [
+    "-DENABLE_UPDATER=OFF"
+    "-DUSE_SHARED_CURL=ON"
+    "-DUSE_SHARED_FREETYPE=ON"
+    "-DUSE_SHARED_GIFLIB=ON"
+    "-DUSE_SHARED_JPEGLIB=ON"
+    "-DUSE_SHARED_LIBPNG=ON"
+    "-DUSE_SHARED_LIBWEBP=ON"
+    "-DUSE_SHARED_PIXMAN=ON"
+    "-DUSE_SHARED_TINYXML=ON"
+    "-DUSE_SHARED_ZLIB=ON"
+    "-DWITH_DESKTOP_INTEGRATION=ON"
+    "-DWITH_WEBP_SUPPORT=ON"
+  ] ++ lib.optionals unfree [
+    "-DUSE_SHARED_CMARK=ON"
+    "-DUSE_SHARED_HARFBUZZ=ON"
+    # Aseprite needs internal freetype headers.
+    "-DUSE_SHARED_FREETYPE=OFF"
+    # Disable libarchive programs.
+    "-DENABLE_CAT=OFF"
+    "-DENABLE_CPIO=OFF"
+    "-DENABLE_TAR=OFF"
+    # UI backend.
+    "-DLAF_OS_BACKEND=skia"
+    "-DSKIA_DIR=${skia}"
+  ];
+
+  postInstall = ''
+    # Install desktop icons.
+    src="$out/share/aseprite/data/icons"
+    for size in 16 32 48 64; do
+      dst="$out"/share/icons/hicolor/"$size"x"$size"
+      install -Dm644 "$src"/ase"$size".png "$dst"/apps/aseprite.png
+      install -Dm644 "$src"/doc"$size".png "$dst"/mimetypes/aseprite.png
+    done
+    # Delete unneeded artifacts of bundled libraries.
+    rm -rf "$out"/include "$out"/lib
+  '';
+
+  enableParallelBuilding = true;
+
+  passthru = { inherit skia; };
+
+  meta = with lib; {
+    homepage = "https://www.aseprite.org/";
+    description = "Animated sprite editor & pixel art tool";
+    license = if unfree then licenses.unfree else licenses.gpl2;
+    longDescription =
+      ''Aseprite is a program to create animated sprites. Its main features are:
+
+          - Sprites are composed by layers & frames (as separated concepts).
+          - Supported color modes: RGBA, Indexed (palettes up to 256 colors), and Grayscale.
+          - Load/save sequence of PNG files and GIF animations (and FLC, FLI, JPG, BMP, PCX, TGA).
+          - Export/import animations to/from Sprite Sheets.
+          - Tiled drawing mode, useful to draw patterns and textures.
+          - Undo/Redo for every operation.
+          - Real-time animation preview.
+          - Multiple editors support.
+          - Pixel-art specific tools like filled Contour, Polygon, Shading mode, etc.
+          - Onion skinning.
+      '' + lib.optionalString unfree
+      ''
+        This version is not redistributable: https://dev.aseprite.org/2016/09/01/new-source-code-license/
+        Consider supporting the developer: https://aseprite.org/#buy
+      '';
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/aseprite/skia-deps.nix b/nixpkgs/pkgs/applications/editors/aseprite/skia-deps.nix
new file mode 100644
index 000000000000..e5655ca8315d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/aseprite/skia-deps.nix
@@ -0,0 +1,23 @@
+{ fetchgit }:
+{
+  angle2 = fetchgit {
+    url = "https://chromium.googlesource.com/angle/angle.git";
+    rev = "956ab4d9fab36be9929e63829475d4d69b2c681c";
+    sha256 = "0fcw04wwkn3ixr9l9k0d32n78r9g72p31ii9i5spsq2d0wlylr38";
+  };
+  dng_sdk = fetchgit {
+    url = "https://android.googlesource.com/platform/external/dng_sdk.git";
+    rev = "96443b262250c390b0caefbf3eed8463ba35ecae";
+    sha256 = "1rsr7njhj7c5p87hfznj069fdc3qqhvvnq9sa2rb8c4q849rlzx6";
+  };
+  piex = fetchgit {
+    url = "https://android.googlesource.com/platform/external/piex.git";
+    rev = "bb217acdca1cc0c16b704669dd6f91a1b509c406";
+    sha256 = "05ipmag6k55jmidbyvg5mkqm69zfw03gfkqhi9jnjlmlbg31y412";
+  };
+  sfntly = fetchgit {
+    url = "https://chromium.googlesource.com/external/github.com/googlei18n/sfntly.git";
+    rev = "b18b09b6114b9b7fe6fc2f96d8b15e8a72f66916";
+    sha256 = "0zf1h0dibmm38ldypccg4faacvskmd42vsk6zbxlfcfwjlqm6pp4";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/aseprite/skia-make-deps.sh b/nixpkgs/pkgs/applications/editors/aseprite/skia-make-deps.sh
new file mode 100755
index 000000000000..5e12c4f5c858
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/aseprite/skia-make-deps.sh
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+
+FILTER=$1
+OUT=skia-deps.nix
+REVISION=89e4ca4352d05adc892f5983b108433f29b2c0c2
+DEPS=$(curl -s https://raw.githubusercontent.com/aseprite/skia/$REVISION/DEPS)
+THIRD_PARTY_DEPS=$(echo "$DEPS" | grep third_party | grep "#" -v | sed 's/"//g')
+
+function write_fetch_defs ()
+{
+  while read -r DEP; do
+    NAME=$(echo "$DEP" | cut -d: -f1 | cut -d/ -f3 | sed 's/ //g')
+    URL=$(echo "$DEP" | cut -d: -f2- | cut -d@ -f1 | sed 's/ //g')
+    REV=$(echo "$DEP" | cut -d: -f2- | cut -d@ -f2 | sed 's/[ ,]//g')
+
+    echo "Fetching $NAME@$REV"
+    PREFETCH=$(nix-prefetch-git --rev "$REV" "$URL")
+
+(
+cat <<EOF
+  $NAME = fetchgit {
+    url = "$URL";
+    rev = "$REV";
+    sha256 = $(echo $PREFETCH | jq '.sha256');
+  };
+EOF
+) >> "$OUT"
+
+  echo "----------"
+  echo
+  done <<< "$1"
+}
+
+echo "{ fetchgit }:" > "$OUT"
+echo "{" >> "$OUT"
+write_fetch_defs "$(echo "$THIRD_PARTY_DEPS" | grep -E "$FILTER")"
+echo "}" >> "$OUT"
diff --git a/nixpkgs/pkgs/applications/editors/aseprite/skia.nix b/nixpkgs/pkgs/applications/editors/aseprite/skia.nix
new file mode 100644
index 000000000000..141d51bed0f8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/aseprite/skia.nix
@@ -0,0 +1,76 @@
+{ stdenv, lib, fetchFromGitHub, fetchgit, python2, gn, ninja
+, fontconfig, expat, icu58, libglvnd, libjpeg, libpng, libwebp, zlib
+, mesa, libX11
+}:
+
+let
+  # skia-deps.nix is generated by: ./skia-make-deps.sh 'angle2|dng_sdk|piex|sfntly'
+  depSrcs = import ./skia-deps.nix { inherit fetchgit; };
+  gnOld = gn.overrideAttrs (oldAttrs: rec {
+    version = "20190403";
+    src = fetchgit {
+      url = "https://gn.googlesource.com/gn";
+      rev = "64b846c96daeb3eaf08e26d8a84d8451c6cb712b";
+      sha256 = "1v2kzsshhxn0ck6gd5w16gi2m3higwd9vkyylmsczxfxnw8skgpy";
+    };
+  });
+in
+stdenv.mkDerivation {
+  name = "skia-aseprite-m71";
+
+  src = fetchFromGitHub {
+    owner = "aseprite";
+    repo = "skia";
+    # latest commit from aseprite-m71 branch
+    rev = "89e4ca4352d05adc892f5983b108433f29b2c0c2"; # TODO: Remove the gnOld override
+    sha256 = "0n3vrkswvi6rib9zv2pzi18h3j5wm7flmgkgaikcm6q7iw4l2c7x";
+  };
+
+  nativeBuildInputs = [ python2 gnOld ninja ];
+
+  buildInputs = [
+    fontconfig expat icu58 libglvnd libjpeg libpng libwebp zlib
+    mesa libX11
+  ];
+
+  preConfigure = with depSrcs; ''
+    mkdir -p third_party/externals
+    ln -s ${angle2} third_party/externals/angle2
+    ln -s ${dng_sdk} third_party/externals/dng_sdk
+    ln -s ${piex} third_party/externals/piex
+    ln -s ${sfntly} third_party/externals/sfntly
+  '';
+
+  configurePhase = ''
+    runHook preConfigure
+    gn gen out/Release --args="is_debug=false is_official_build=true"
+    runHook postConfigure
+  '';
+
+  buildPhase = ''
+    runHook preBuild
+    ninja -C out/Release skia
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    mkdir -p $out
+
+    # Glob will match all subdirs.
+    shopt -s globstar
+
+    # All these paths are used in some way when building aseprite.
+    cp -r --parents -t $out/ \
+      include/codec \
+      include/config \
+      include/core \
+      include/effects \
+      include/gpu \
+      include/private \
+      include/utils \
+      out/Release/*.a \
+      src/gpu/**/*.h \
+      third_party/externals/angle2/include \
+      third_party/skcms/**/*.h
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/editors/atom/default.nix b/nixpkgs/pkgs/applications/editors/atom/default.nix
new file mode 100644
index 000000000000..dec3c7955011
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/atom/default.nix
@@ -0,0 +1,83 @@
+{ stdenv, pkgs, fetchurl, wrapGAppsHook, gvfs, gtk3, atomEnv }:
+
+let
+  versions = {
+    atom = {
+      version = "1.48.0";
+      sha256 = "1693bxbylf6jhld9bdcr5pigk36wqlbj89praldpz9s96yxig9s1";
+    };
+
+    atom-beta = {
+      version = "1.49.0";
+      beta = 0;
+      sha256 = "1fr6m4a7shdj3wpn6g4n95cqpkkg2x9srwjf7bqxv9f3d5jb1y33";
+    };
+  };
+
+  common = pname: {version, sha256, beta ? null}:
+      let fullVersion = version + stdenv.lib.optionalString (beta != null) "-beta${toString beta}";
+      name = "${pname}-${fullVersion}";
+  in stdenv.mkDerivation {
+    inherit name;
+    version = fullVersion;
+
+    src = fetchurl {
+      url = "https://github.com/atom/atom/releases/download/v${fullVersion}/atom-amd64.deb";
+      name = "${name}.deb";
+      inherit sha256;
+    };
+
+    nativeBuildInputs = [
+      wrapGAppsHook  # Fix error: GLib-GIO-ERROR **: No GSettings schemas are installed on the system
+    ];
+
+    buildInputs = [
+      gtk3  # Fix error: GLib-GIO-ERROR **: Settings schema 'org.gtk.Settings.FileChooser' is not installed
+    ];
+
+    preFixup = ''
+      gappsWrapperArgs+=(
+        --prefix "PATH" : "${gvfs}/bin" \
+      )
+    '';
+
+    buildCommand = ''
+      mkdir -p $out/usr/
+      ar p $src data.tar.xz | tar -C $out -xJ ./usr
+      sed -i -e "s|Exec=.*$|Exec=$out/bin/${pname}|" $out/usr/share/applications/${pname}.desktop
+      mv $out/usr/* $out/
+      rm -r $out/share/lintian
+      rm -r $out/usr/
+      sed -i "s/${pname})/.${pname}-wrapped)/" $out/bin/${pname}
+
+      fixupPhase
+
+      share=$out/share/${pname}
+
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        --set-rpath "${atomEnv.libPath}:$share" \
+        $share/atom
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        --set-rpath "${atomEnv.libPath}" \
+        $share/resources/app/apm/bin/node
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        $share/resources/app.asar.unpacked/node_modules/symbols-view/vendor/ctags-linux
+
+      dugite=$share/resources/app.asar.unpacked/node_modules/dugite
+      rm -f $dugite/git/bin/git
+      ln -s ${pkgs.git}/bin/git $dugite/git/bin/git
+      rm -f $dugite/git/libexec/git-core/git
+      ln -s ${pkgs.git}/bin/git $dugite/git/libexec/git-core/git
+
+      find $share -name "*.node" -exec patchelf --set-rpath "${atomEnv.libPath}:$share" {} \;
+    '';
+
+    meta = with stdenv.lib; {
+      description = "A hackable text editor for the 21st Century";
+      homepage = "https://atom.io/";
+      license = licenses.mit;
+      maintainers = with maintainers; [ offline nequissimus ysndr ];
+      platforms = platforms.x86_64;
+    };
+  };
+in stdenv.lib.mapAttrs common versions
diff --git a/nixpkgs/pkgs/applications/editors/atom/env.nix b/nixpkgs/pkgs/applications/editors/atom/env.nix
new file mode 100644
index 000000000000..5e3c1070ad2b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/atom/env.nix
@@ -0,0 +1,21 @@
+{ stdenv, lib, zlib, glib, alsaLib, dbus, gtk3, atk, pango, freetype, fontconfig
+, libgnome-keyring3, gdk-pixbuf, cairo, cups, expat, libgpgerror, nspr
+, gconf, nss, xorg, libcap, systemd, libnotify, libsecret, libuuid, at-spi2-atk
+, at-spi2-core
+}:
+
+let
+  packages = [
+    stdenv.cc.cc zlib glib dbus gtk3 atk pango freetype libgnome-keyring3
+    fontconfig gdk-pixbuf cairo cups expat libgpgerror alsaLib nspr gconf nss
+    xorg.libXrender xorg.libX11 xorg.libXext xorg.libXdamage xorg.libXtst
+    xorg.libXcomposite xorg.libXi xorg.libXfixes xorg.libXrandr
+    xorg.libXcursor xorg.libxkbfile xorg.libXScrnSaver libcap systemd libnotify
+    xorg.libxcb libsecret libuuid at-spi2-atk at-spi2-core
+  ];
+
+  libPathNative = lib.makeLibraryPath packages;
+  libPath64 = lib.makeSearchPathOutput "lib" "lib64" packages;
+  libPath = "${libPathNative}:${libPath64}";
+
+in { inherit packages libPath; }
diff --git a/nixpkgs/pkgs/applications/editors/bless/default.nix b/nixpkgs/pkgs/applications/editors/bless/default.nix
new file mode 100644
index 000000000000..b3c3caae4e45
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/bless/default.nix
@@ -0,0 +1,80 @@
+{ stdenv
+, fetchFromGitHub
+, autoreconfHook
+, pkgconfig
+, mono
+, gtk-sharp-2_0
+, gettext
+, makeWrapper
+, glib
+, gtk2-x11
+, gnome2
+}:
+
+stdenv.mkDerivation rec {
+  pname = "bless";
+  version = "0.6.2";
+
+  src = fetchFromGitHub {
+    owner = "afrantzis";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "04ra2mcx3pkhzbhcz0zwfmbpqj6cwisrypi6xbc2d6pxd4hdafn1";
+  };
+
+  buildInputs = [
+    gtk-sharp-2_0
+    mono
+    # runtime only deps
+    glib
+    gtk2-x11
+    gnome2.libglade
+  ];
+
+  nativeBuildInputs = [
+    pkgconfig
+    autoreconfHook
+    gettext
+    makeWrapper
+  ];
+
+  configureFlags = [
+    # scrollkeeper is a gnome2 package, so it must be old and we shouldn't really support it
+    # NOTE: that sadly doesn't turn off the compilation of the manual with scrollkeeper, so we have to fake the binaries below
+    "--without-scrollkeeper"
+  ];
+
+  autoreconfPhase = ''
+    mkdir _bin
+
+    # this fakes the scrollkeeper commands, to keep the build happy
+    for f in scrollkeeper-preinstall scrollkeeper-update; do
+      echo "true" > ./_bin/$f
+      chmod +x ./_bin/$f
+    done
+
+    export PATH="$PWD/_bin:$PATH"
+
+    # and it also wants to install that file
+    touch ./doc/user/bless-manual.omf
+
+    # patch mono path
+    sed "s|^mono|${mono}/bin/mono|g" -i src/bless-script.in
+
+    ./autogen.sh
+    '';
+
+  preFixup = ''
+    MPATH="${gtk-sharp-2_0}/lib/mono/gtk-sharp-2.0:${glib.out}/lib:${gtk2-x11}/lib:${gnome2.libglade}/lib:${gtk-sharp-2_0}/lib"
+    wrapProgram $out/bin/bless --prefix MONO_PATH : "$MPATH" --prefix LD_LIBRARY_PATH : "$MPATH"
+    '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/afrantzis/bless";
+    description = "Gtk# Hex Editor";
+    maintainers = [ maintainers.mkg20001 ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    badPlatforms = [ "aarch64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/bluefish/default.nix b/nixpkgs/pkgs/applications/editors/bluefish/default.nix
new file mode 100644
index 000000000000..c7ac671c15bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/bluefish/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, intltool, wrapGAppsHook, pkgconfig , gtk, libxml2
+, enchant, gucharmap, python, gnome3
+}:
+
+stdenv.mkDerivation rec {
+  name = "bluefish-2.2.11";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/bluefish/${name}.tar.bz2";
+    sha256 = "1zy2ppdg3nq9iy3zgfhnw93bq5zbbhyampf7bk3grpfvq5zqfk25";
+  };
+
+  nativeBuildInputs = [ intltool pkgconfig wrapGAppsHook ];
+  buildInputs = [ gnome3.adwaita-icon-theme gtk libxml2
+    enchant gucharmap python ];
+
+  meta = with stdenv.lib; {
+    description = "A powerful editor targeted towards programmers and webdevelopers";
+    homepage = "http://bluefish.openoffice.nl/";
+    license = licenses.gpl3Plus;
+    maintainers = [maintainers.vbgl];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/bonzomatic/default.nix b/nixpkgs/pkgs/applications/editors/bonzomatic/default.nix
new file mode 100644
index 000000000000..a12ccd257f8a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/bonzomatic/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, makeWrapper, fetchFromGitHub, cmake, alsaLib, mesa_glu, libXcursor, libXinerama, libXrandr, xorgserver }:
+
+stdenv.mkDerivation rec {
+  pname = "bonzomatic";
+  version = "2018-03-29";
+
+  src = fetchFromGitHub {
+    owner = "Gargaj";
+    repo = pname;
+    rev = version;
+    sha256 = "12mdfjvbhdqz1585772rj4cap8m4ijfci6ib62jysxjf747k41fg";
+  };
+
+  buildInputs = [ cmake makeWrapper alsaLib mesa_glu libXcursor libXinerama libXrandr xorgserver ];
+
+  postFixup = ''
+    wrapProgram $out/bin/Bonzomatic --prefix LD_LIBRARY_PATH : "${alsaLib}/lib"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A live-coding tool for writing 2D fragment/pixel shaders";
+    license = with licenses; [
+      unlicense
+      unfreeRedistributable # contains libbass.so in repository
+    ];
+    maintainers = [ maintainers.nocent ];
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/brackets/default.nix b/nixpkgs/pkgs/applications/editors/brackets/default.nix
new file mode 100644
index 000000000000..3e01bcdb0f9d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/brackets/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, fetchurl, gtk2, glib, gdk-pixbuf, alsaLib, nss, nspr, gconf
+, cups, libgcrypt_1_5, systemd, dbus, libXdamage, expat }:
+with stdenv.lib;
+
+let
+  bracketsLibs = makeLibraryPath [
+    gtk2 glib gdk-pixbuf stdenv.cc.cc.lib alsaLib nss nspr gconf cups libgcrypt_1_5 dbus systemd libXdamage expat
+  ];
+in
+stdenv.mkDerivation rec {
+  pname = "brackets";
+  version = "1.9";
+
+  src = fetchurl {
+    url = "https://github.com/adobe/brackets/releases/download/release-${version}/Brackets.Release.${version}.64-bit.deb";
+    sha256 = "0c4l2rr0853xd21kw8hhxlmrx8mqwb7iqa2k24zvwyjp4nnwkgbp";
+    name = "${pname}-${version}.deb";
+  };
+
+  phases = [ "installPhase" "fixupPhase" ];
+
+  installPhase = ''
+    mkdir -p $out
+    ar p $src data.tar.xz | tar -C $out -xJ
+
+    mv $out/usr/* $out/
+    rmdir $out/usr
+    ln -sf $out/opt/brackets/brackets $out/bin/brackets
+
+    ln -s ${systemd.lib}/lib/libudev.so.1 $out/opt/brackets/lib/libudev.so.0
+
+    substituteInPlace $out/opt/brackets/brackets.desktop \
+      --replace "Exec=/opt/brackets/brackets" "Exec=brackets"
+    mkdir -p $out/share/applications
+    ln -s $out/opt/brackets/brackets.desktop $out/share/applications/
+  '';
+
+  postFixup = ''
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${bracketsLibs}:$out/opt/brackets/lib" \
+      $out/opt/brackets/Brackets
+
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${bracketsLibs}" \
+      $out/opt/brackets/Brackets-node
+
+    patchelf --set-rpath "${bracketsLibs}" \
+      $out/opt/brackets/lib/libcef.so
+  '';
+
+  meta = {
+    description = "An open source code editor for the web, written in JavaScript, HTML and CSS";
+    homepage = "http://brackets.io/";
+    license = licenses.mit;
+    maintainers = [ maintainers.matejc ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/bvi/default.nix b/nixpkgs/pkgs/applications/editors/bvi/default.nix
new file mode 100644
index 000000000000..8a61e0252bc3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/bvi/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "bvi";
+  version = "1.4.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/bvi/${pname}-${version}.src.tar.gz";
+    sha256 = "0a0yl0dcyff31k3dr4dpgqmlwygp8iaslnr5gmb6814ylxf2ad9h";
+  };
+
+  buildInputs = [ ncurses ];
+
+  meta = with stdenv.lib; {
+    description = "Hex editor with vim style keybindings";
+    homepage = "http://bvi.sourceforge.net/download.html";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ pSub ];
+    platforms = with platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/bviplus/default.nix b/nixpkgs/pkgs/applications/editors/bviplus/default.nix
new file mode 100644
index 000000000000..2cf094c091a6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/bviplus/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "bviplus";
+  version = "1.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/bviplus/bviplus/${version}/bviplus-${version}.tgz";
+    sha256 = "08q2fdyiirabbsp5qpn3v8jxp4gd85l776w6gqvrbjwqa29a8arg";
+  };
+
+  buildInputs = [
+    ncurses
+  ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  buildFlags = [ "CFLAGS=-fgnu89-inline" ];
+
+  meta = with stdenv.lib; {
+    description = "Ncurses based hex editor with a vim-like interface";
+    homepage = "http://bviplus.sourceforge.net";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ cstrahan ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/codeblocks/default.nix b/nixpkgs/pkgs/applications/editors/codeblocks/default.nix
new file mode 100644
index 000000000000..4e2ac8a50f14
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/codeblocks/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, autoreconfHook, libtool, pkgconfig, file, zip, wxGTK, gtk2
+, contribPlugins ? false, hunspell, gamin, boost
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${stdenv.lib.optionalString contribPlugins "full-"}${version}";
+  version = "17.12";
+  pname = "codeblocks";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/codeblocks/Sources/${version}/codeblocks_${version}.tar.xz";
+    sha256 = "1q2pph7md1p10i83rir2l4gvy7ym2iw8w6sk5vl995knf851m20k";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig libtool file zip ];
+  buildInputs = [ wxGTK gtk2 ]
+    ++ optionals contribPlugins [ hunspell gamin boost ];
+  enableParallelBuilding = true;
+  patches = [ ./writable-projects.patch ];
+  preConfigure = "substituteInPlace ./configure --replace /usr/bin/file ${file}/bin/file";
+  postConfigure = optionalString stdenv.isLinux "substituteInPlace libtool --replace ldconfig ${stdenv.cc.libc.bin}/bin/ldconfig";
+  configureFlags = [ "--enable-pch=no" ]
+    ++ optionals contribPlugins [ "--with-contrib-plugins" "--with-boost-libdir=${boost}/lib" ];
+
+  meta = {
+    maintainers = [ maintainers.linquize ];
+    platforms = platforms.all;
+    description = "The open source, cross platform, free C, C++ and Fortran IDE";
+    longDescription =
+      ''
+        Code::Blocks is a free C, C++ and Fortran IDE built to meet the most demanding needs of its users.
+        It is designed to be very extensible and fully configurable.
+        Finally, an IDE with all the features you need, having a consistent look, feel and operation across platforms.
+      '';
+    homepage = "http://www.codeblocks.org";
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/codeblocks/writable-projects.patch b/nixpkgs/pkgs/applications/editors/codeblocks/writable-projects.patch
new file mode 100644
index 000000000000..3b6364a52a1c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/codeblocks/writable-projects.patch
@@ -0,0 +1,18 @@
+diff --git a/src/plugins/scriptedwizard/wiz.cpp b/src/plugins/scriptedwizard/wiz.cpp
+index 0eb4b27..7d469fe 100644
+--- a/src/plugins/scriptedwizard/wiz.cpp
++++ b/src/plugins/scriptedwizard/wiz.cpp
+@@ -785,6 +785,13 @@ void Wiz::CopyFiles(cbProject* theproject, const wxString&  prjdir, const wxStri
+             }
+         }
+         if (do_copy) wxCopyFile(srcfile, dstfile, true);
++        // Noticed! Files in Nix Store are readonly, so make the copied file writable
++        if (do_copy)
++        {
++            struct stat statbuf;
++            if (!::stat(dstfile.mb_str(), &statbuf))
++                ::chmod(dstfile.mb_str(), statbuf.st_mode | 0200);
++        }
+ 
+         // and add it to the project
+         fname.MakeRelativeTo(prjdir);
diff --git a/nixpkgs/pkgs/applications/editors/deadpixi-sam/default.nix b/nixpkgs/pkgs/applications/editors/deadpixi-sam/default.nix
new file mode 100644
index 000000000000..65ec43939127
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/deadpixi-sam/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, freetype, libX11, libXi, libXt, libXft }:
+
+stdenv.mkDerivation rec {
+  version = "2017-10-27";
+  pname = "deadpixi-sam-unstable";
+
+  src = fetchFromGitHub {
+    owner = "deadpixi";
+    repo = "sam";
+    rev = "51693780fb1457913389db6634163998f9b775b8";
+    sha256 = "0nfkj93j4bgli4ixbk041nwi14rabk04kqg8krq4mj0044m1qywr";
+  };
+
+  postPatch = ''
+    substituteInPlace config.mk.def \
+      --replace "/usr/include/freetype2" "${freetype.dev}/include/freetype2" \
+      --replace "CC=gcc" ""
+  '';
+
+  CFLAGS = "-D_DARWIN_C_SOURCE";
+  makeFlags = [ "DESTDIR=$(out)" ];
+  buildInputs = [ libX11 libXi libXt libXft ];
+
+  postInstall = ''
+    mkdir -p $out/share/applications
+    mv deadpixi-sam.desktop $out/share/applications
+  '';
+
+  meta = with stdenv.lib; {
+    inherit (src.meta) homepage;
+    description = "Updated version of the sam text editor";
+    license = with licenses; lpl-102;
+    maintainers = with maintainers; [ ramkromberg ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/dhex/default.nix b/nixpkgs/pkgs/applications/editors/dhex/default.nix
new file mode 100644
index 000000000000..0a635b7ba82e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/dhex/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "dhex";
+  version = "0.69";
+
+  src = fetchurl {
+    url = "http://www.dettus.net/dhex/dhex_${version}.tar.gz";
+    sha256 = "06y4lrp29f2fh303ijk1xhspa1d4x4dm6hnyw3dd8szi3k6hnwsj";
+  };
+
+  buildInputs = [ ncurses ];
+ 
+  installPhase = ''
+    mkdir -p $out/bin
+    mkdir -p $out/share/man/man1
+    mkdir -p $out/share/man/man5
+
+    cp dhex $out/bin
+    cp dhex.1 $out/share/man/man1
+    cp dhexrc.5 $out/share/man/man5
+    cp dhex_markers.5 $out/share/man/man5
+    cp dhex_searchlog.5 $out/share/man/man5
+  '';
+
+  meta = {
+    description = "A themeable hex editor with diff mode";
+    homepage = "http://www.dettus.net/dhex/";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [qknight];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/dit/default.nix b/nixpkgs/pkgs/applications/editors/dit/default.nix
new file mode 100644
index 000000000000..e89267d04c50
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/dit/default.nix
@@ -0,0 +1,28 @@
+{ lib, fetchurl, stdenv, libiconv, ncurses, lua }:
+
+stdenv.mkDerivation rec {
+  pname = "dit";
+  version = "0.7";
+
+  src = fetchurl {
+    url = "https://hisham.hm/dit/releases/${version}/${pname}-${version}.tar.gz";
+    sha256 = "0cmbyzqfz2qa83cg8lpjifn34wmx34c5innw485zh4vk3c0k8wlj";
+  };
+
+  buildInputs = [ ncurses lua ]
+    ++ lib.optional stdenv.isDarwin libiconv;
+
+  # fix paths
+  prePatch = ''
+    patchShebangs tools/GenHeaders
+    substituteInPlace Prototypes.h --replace 'tail' "$(type -P tail)"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A console text editor for Unix that you already know how to use";
+    homepage = "https://hisham.hm/dit/";
+    license = licenses.gpl2;
+    platforms = with platforms; linux;
+    maintainers = with maintainers; [ davidak ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/eclipse/build-eclipse.nix b/nixpkgs/pkgs/applications/editors/eclipse/build-eclipse.nix
new file mode 100644
index 000000000000..8b6a0c164e90
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/eclipse/build-eclipse.nix
@@ -0,0 +1,61 @@
+{ stdenv, makeDesktopItem, freetype, fontconfig, libX11, libXrender
+, zlib, jdk, glib, gtk, libXtst, gsettings-desktop-schemas, webkitgtk
+, makeWrapper, ... }:
+
+{ name, src ? builtins.getAttr stdenv.hostPlatform.system sources, sources ? null, description }:
+
+stdenv.mkDerivation rec {
+  inherit name src;
+
+  desktopItem = makeDesktopItem {
+    name = "Eclipse";
+    exec = "eclipse";
+    icon = "eclipse";
+    comment = "Integrated Development Environment";
+    desktopName = "Eclipse IDE";
+    genericName = "Integrated Development Environment";
+    categories = "Application;Development;";
+  };
+
+  buildInputs = [
+    fontconfig freetype glib gsettings-desktop-schemas gtk jdk libX11
+    libXrender libXtst makeWrapper zlib
+  ] ++ stdenv.lib.optional (webkitgtk != null) webkitgtk;
+
+  buildCommand = ''
+    # Unpack tarball.
+    mkdir -p $out
+    tar xfvz $src -C $out
+
+    # Patch binaries.
+    interpreter=$(echo ${stdenv.glibc.out}/lib/ld-linux*.so.2)
+    libCairo=$out/eclipse/libcairo-swt.so
+    patchelf --set-interpreter $interpreter $out/eclipse/eclipse
+    [ -f $libCairo ] && patchelf --set-rpath ${stdenv.lib.makeLibraryPath [ freetype fontconfig libX11 libXrender zlib ]} $libCairo
+
+    # Create wrapper script.  Pass -configuration to store
+    # settings in ~/.eclipse/org.eclipse.platform_<version> rather
+    # than ~/.eclipse/org.eclipse.platform_<version>_<number>.
+    productId=$(sed 's/id=//; t; d' $out/eclipse/.eclipseproduct)
+    productVersion=$(sed 's/version=//; t; d' $out/eclipse/.eclipseproduct)
+
+    makeWrapper $out/eclipse/eclipse $out/bin/eclipse \
+      --prefix PATH : ${jdk}/bin \
+      --prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath ([ glib gtk libXtst ] ++ stdenv.lib.optional (webkitgtk != null) webkitgtk)} \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \
+      --add-flags "-configuration \$HOME/.eclipse/''${productId}_$productVersion/configuration"
+
+    # Create desktop item.
+    mkdir -p $out/share/applications
+    cp ${desktopItem}/share/applications/* $out/share/applications
+    mkdir -p $out/share/pixmaps
+    ln -s $out/eclipse/icon.xpm $out/share/pixmaps/eclipse.xpm
+  ''; # */
+
+  meta = {
+    homepage = "http://www.eclipse.org/";
+    inherit description;
+    platforms = [ "x86_64-linux" ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/editors/eclipse/default.nix b/nixpkgs/pkgs/applications/editors/eclipse/default.nix
new file mode 100644
index 000000000000..66bdfb15c69b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/eclipse/default.nix
@@ -0,0 +1,144 @@
+{ stdenv, fetchurl, makeDesktopItem, makeWrapper
+, freetype, fontconfig, libX11, libXrender, zlib
+, glib, gtk3, gtk2, libXtst, jdk, jdk8, gsettings-desktop-schemas
+, webkitgtk ? null  # for internal web browser
+, buildEnv, runCommand
+, callPackage
+}:
+
+assert stdenv ? glibc;
+
+# http://download.eclipse.org/eclipse/downloads/ is the main place to
+# find the downloads needed for new versions
+
+let
+  platform_major = "4";
+  platform_minor = "15";
+  year = "2020";
+  month = "03";
+  timestamp = "${year}${month}050155";
+  gtk = gtk3;
+in rec {
+
+  buildEclipse = callPackage ./build-eclipse.nix {
+    inherit stdenv makeDesktopItem freetype fontconfig libX11 libXrender zlib
+            jdk glib gtk libXtst gsettings-desktop-schemas webkitgtk
+            makeWrapper;
+  };
+
+  ### Eclipse CPP
+
+  eclipse-cpp = buildEclipse {
+    name = "eclipse-cpp-${platform_major}.${platform_minor}";
+    description = "Eclipse IDE for C/C++ Developers";
+    src =
+      fetchurl {
+        url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-cpp-${year}-${month}-R-incubation-linux-gtk-x86_64.tar.gz";
+        sha512 = "2wy4a3p347fajr9zsfz1zlvz6jpy3vficdry27m5fs0azfmxmy2cfns5hh18sin4xqq3jvqppfqxh41rzcpcmiq12zhc6cz42brqgxw";
+      };
+  };
+
+  ### Eclipse Modeling
+
+  eclipse-modeling = buildEclipse {
+    name = "eclipse-modeling-${platform_major}.${platform_minor}";
+    description = "Eclipse Modeling Tools";
+    src =
+      fetchurl {
+        url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-modeling-${year}-${month}-R-linux-gtk-x86_64.tar.gz";
+        sha512 = "0qccsclay9000sqrymm8hkg70a4jcvd70vymw1kkxsklcs7dnrhch55an98gbzf9r0jgd1ap62a4hyxlnm6hdqqniwcgdza0i4nwwgj";
+      };
+  };
+
+  ### Eclipse Platform
+
+  eclipse-platform = buildEclipse {
+    name = "eclipse-platform-${platform_major}.${platform_minor}";
+    description = "Eclipse Platform ${year}-${month}";
+    src =
+      fetchurl {
+        url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops${platform_major}/R-${platform_major}.${platform_minor}-${timestamp}/eclipse-platform-${platform_major}.${platform_minor}-linux-gtk-x86_64.tar.gz";
+        sha512 = "01rv5x7qqm0a2p30828z2snms3nb2kjx9si63sr5rdkdgr3vbh6xq8n8fn757dqazmpz9zskmwxxmbxnwycfllhgb8msb77pcy3fpg7";
+      };
+  };
+
+  ### Eclipse Scala SDK
+
+  eclipse-scala-sdk =
+    buildEclipse.override { jdk = jdk8; gtk = gtk2; } {
+      name = "eclipse-scala-sdk-4.7.0";
+      description = "Eclipse IDE for Scala Developers";
+      src =
+        fetchurl {
+          url = "https://downloads.typesafe.com/scalaide-pack/4.7.0-vfinal-oxygen-212-20170929/scala-SDK-4.7.0-vfinal-2.12-linux.gtk.x86_64.tar.gz";
+          sha256  = "1n5w2a7mh9ajv6fxcas1gpgwb04pdxbr9v5dzr67gsz5bhahq4ya";
+        };
+  };
+
+  ### Eclipse SDK
+
+  eclipse-sdk = buildEclipse {
+    name = "eclipse-sdk-${platform_major}.${platform_minor}";
+    description = "Eclipse ${year}-${month} Classic";
+    src =
+      fetchurl {
+        url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops${platform_major}/R-${platform_major}.${platform_minor}-${timestamp}/eclipse-SDK-${platform_major}.${platform_minor}-linux-gtk-x86_64.tar.gz";
+        sha512 = "33ra8qslwz73240xzjvr751lpl94drlcf425a7kxngq1qla2cda7gxr71bxlr9fm2hrqq0h097ihmg0ix9hv2dmwnc76gp4hwwrlk41";
+      };
+  };
+
+  ### Eclipse Java
+
+  eclipse-java = buildEclipse {
+    name = "eclipse-java-${platform_major}.${platform_minor}";
+    description = "Eclipse IDE for Java Developers";
+    src =
+      fetchurl {
+        url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-java-${year}-${month}-R-linux-gtk-x86_64.tar.gz";
+        sha512 = "0ffa1q19z31j8i552mp9zg4v0p4iv002cvlzh49ia8hi0hgk75pbkp6vxlr75jz0as03n71f0ww8xbflji31qgwfmy6rs1rzqihfff9";
+      };
+  };
+
+  ### Environments
+
+  # Function that assembles a complete Eclipse environment from an
+  # Eclipse package and list of Eclipse plugins.
+  eclipseWithPlugins = { eclipse, plugins ? [], jvmArgs ? [] }:
+    let
+      # Gather up the desired plugins.
+      pluginEnv = buildEnv {
+        name = "eclipse-plugins";
+        paths =
+          with stdenv.lib;
+            filter (x: x ? isEclipsePlugin) (closePropagation plugins);
+      };
+
+      # Prepare the JVM arguments to add to the ini file. We here also
+      # add the property indicating the plugin directory.
+      dropinPropName = "org.eclipse.equinox.p2.reconciler.dropins.directory";
+      dropinProp = "-D${dropinPropName}=${pluginEnv}/eclipse/dropins";
+      jvmArgsText = stdenv.lib.concatStringsSep "\n" (jvmArgs ++ [dropinProp]);
+
+      # Base the derivation name on the name of the underlying
+      # Eclipse.
+      name = (stdenv.lib.meta.appendToName "with-plugins" eclipse).name;
+    in
+      runCommand name { buildInputs = [ makeWrapper ]; } ''
+        mkdir -p $out/bin $out/etc
+
+        # Prepare an eclipse.ini with the plugin directory.
+        cat ${eclipse}/eclipse/eclipse.ini - > $out/etc/eclipse.ini <<EOF
+        ${jvmArgsText}
+        EOF
+
+        makeWrapper ${eclipse}/bin/eclipse $out/bin/eclipse \
+          --add-flags "--launcher.ini $out/etc/eclipse.ini"
+
+        ln -s ${eclipse}/share $out/
+      '';
+
+  ### Plugins
+
+  plugins = callPackage ./plugins.nix { };
+
+}
diff --git a/nixpkgs/pkgs/applications/editors/eclipse/plugins.nix b/nixpkgs/pkgs/applications/editors/eclipse/plugins.nix
new file mode 100644
index 000000000000..fab7317868a9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/eclipse/plugins.nix
@@ -0,0 +1,664 @@
+{ stdenv, fetchurl, fetchzip, unzip }:
+
+rec {
+
+  # A primitive builder of Eclipse plugins. This function is intended
+  # to be used when building more advanced builders.
+  buildEclipsePluginBase =  { name
+                            , buildInputs ? []
+                            , passthru ? {}
+                            , ... } @ attrs:
+    stdenv.mkDerivation (attrs // {
+      name = "eclipse-plugin-" + name;
+
+      buildInputs = buildInputs ++ [ unzip ];
+
+      passthru = {
+        isEclipsePlugin = true;
+      } // passthru;
+    });
+
+  # Helper for the common case where we have separate feature and
+  # plugin JARs.
+  buildEclipsePlugin =
+    { name, srcFeature, srcPlugin ? null, srcPlugins ? [], ... } @ attrs:
+      assert srcPlugin == null -> srcPlugins != [];
+      assert srcPlugin != null -> srcPlugins == [];
+
+      let
+
+        pSrcs = if (srcPlugin != null) then [ srcPlugin ] else srcPlugins;
+
+      in
+
+        buildEclipsePluginBase (attrs // {
+          srcs = [ srcFeature ] ++ pSrcs;
+
+          buildCommand = ''
+            dropinDir="$out/eclipse/dropins/${name}"
+
+            mkdir -p $dropinDir/features
+            unzip ${srcFeature} -d $dropinDir/features/
+
+            mkdir -p $dropinDir/plugins
+            for plugin in ${toString pSrcs}; do
+              cp -v $plugin $dropinDir/plugins/$(stripHash $plugin)
+            done
+          '';
+        });
+
+  # Helper for the case where the build directory has the layout of an
+  # Eclipse update site, that is, it contains the directories
+  # `features` and `plugins`. All features and plugins inside these
+  # directories will be installed.
+  buildEclipseUpdateSite = { name, ... } @ attrs:
+    buildEclipsePluginBase (attrs // {
+      dontBuild = true;
+      doCheck = false;
+
+      installPhase = ''
+        dropinDir="$out/eclipse/dropins/${name}"
+
+        # Install features.
+        cd features
+        for feature in *.jar; do
+          featureName=''${feature%.jar}
+          mkdir -p $dropinDir/features/$featureName
+          unzip $feature -d $dropinDir/features/$featureName
+        done
+        cd ..
+
+        # Install plugins.
+        mkdir -p $dropinDir/plugins
+
+        # A bundle should be unpacked if the manifest matches this
+        # pattern.
+        unpackPat="Eclipse-BundleShape:\\s*dir"
+
+        cd plugins
+        for plugin in *.jar ; do
+          pluginName=''${plugin%.jar}
+          manifest=$(unzip -p $plugin META-INF/MANIFEST.MF)
+
+          if [[ $manifest =~ $unpackPat ]] ; then
+            mkdir $dropinDir/plugins/$pluginName
+            unzip $plugin -d $dropinDir/plugins/$pluginName
+          else
+            cp -v $plugin $dropinDir/plugins/
+          fi
+        done
+        cd ..
+      '';
+    });
+
+  acejump = buildEclipsePlugin rec {
+    name = "acejump-${version}";
+    version = "1.0.0.201610261941";
+
+    srcFeature = fetchurl {
+      url = "https://tobiasmelcher.github.io/acejumpeclipse/features/acejump.feature_${version}.jar";
+      sha256 = "1szswjxp9g70ibfbv3p8dlq1bngq7nc22kp657z9i9kp8309md2d";
+    };
+
+    srcPlugin = fetchurl {
+      url = "https://tobiasmelcher.github.io/acejumpeclipse/plugins/acejump_${version}.jar";
+      sha256 = "1cn64xj2bm69vnn9db2xxh6kq148v83w5nx3183mrqb59ym3v9kf";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "https://github.com/tobiasmelcher/EclipseAceJump";
+      description = "Provides fast jumps to text based on initial letter";
+      license = licenses.mit;
+      platforms = platforms.all;
+      maintainers = [ maintainers.rycee ];
+    };
+  };
+
+  ansi-econsole = buildEclipsePlugin rec {
+    name = "ansi-econsole-${version}";
+    version = "1.3.5.201612301822";
+
+    srcFeature = fetchurl {
+      url = "https://mihnita.github.io/ansi-econsole/install/features/net.mihai-nita.ansicon_${version}.jar";
+      sha256 = "086ylxpsrlpbvwv5mw7v6b44j63cwzgi8apg2mq058ydr5ak6hxs";
+    };
+
+    srcPlugin = fetchurl {
+      url = "https://mihnita.github.io/ansi-econsole/install/plugins/net.mihai-nita.ansicon.plugin_${version}.jar";
+      sha256 = "1j42l0xxzs89shqkyn91lb0gia10mifzy0i73c3n7gj7sv2ddbjq";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "https://mihai-nita.net/java/#ePluginAEC";
+      description = "Adds support for ANSI escape sequences in the Eclipse console";
+      license = licenses.asl20;
+      platforms = platforms.all;
+      maintainers = [ maintainers.rycee ];
+    };
+  };
+
+  antlr-runtime_4_5 = buildEclipsePluginBase rec {
+    name = "antlr-runtime-4.5.3";
+
+    src = fetchurl {
+      url = "https://www.antlr.org/download/${name}.jar";
+      sha256 = "0lm78i2annlczlc2cg5xvby0g1dyl0sh1y5xc2pymjlmr67a1g4k";
+    };
+
+    buildCommand = ''
+      dropinDir="$out/eclipse/dropins/"
+      mkdir -p $dropinDir
+      cp -v $src $dropinDir/${name}.jar
+    '';
+
+    meta = with stdenv.lib; {
+      description = "A powerful parser generator for processing structured text or binary files";
+      homepage = "https://www.antlr.org/";
+      license = licenses.bsd3;
+      platforms = platforms.all;
+      maintainers = [ maintainers.rycee ];
+    };
+  };
+
+  antlr-runtime_4_7 = buildEclipsePluginBase rec {
+    name = "antlr-runtime-4.7.1";
+
+    src = fetchurl {
+      url = "https://www.antlr.org/download/${name}.jar";
+      sha256 = "07f91mjclacrvkl8a307w2abq5wcqp0gcsnh0jg90ddfpqcnsla3";
+    };
+
+    buildCommand = ''
+      dropinDir="$out/eclipse/dropins/"
+      mkdir -p $dropinDir
+      cp -v $src $dropinDir/${name}.jar
+    '';
+
+    meta = with stdenv.lib; {
+      description = "A powerful parser generator for processing structured text or binary files";
+      homepage = "https://www.antlr.org/";
+      license = licenses.bsd3;
+      platforms = platforms.all;
+      maintainers = [ maintainers.rycee ];
+    };
+  };
+
+  anyedittools = buildEclipsePlugin rec {
+    name = "anyedit-${version}";
+    version = "2.7.1.201709201439";
+
+    srcFeature = fetchurl {
+      url = "http://andrei.gmxhome.de/eclipse/features/AnyEditTools_${version}.jar";
+      sha256 = "1wqzl7wq85m9gil8rnvly45ps0a2m0svw613pg6djs5i7amhnayh";
+    };
+
+    srcPlugin = fetchurl {
+      url = "https://github.com/iloveeclipse/anyedittools/releases/download/2.7.1/de.loskutov.anyedit.AnyEditTools_${version}.jar";
+      sha256 = "03iyb6j2srq74iigmg7dk098c2svyv0ygdfql5jqr44a32n07k8q";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "http://andrei.gmxhome.de/anyedit/";
+      description = "Adds new tools to the context menu of text-based editors";
+      license = licenses.epl10;
+      platforms = platforms.all;
+      maintainers = [ maintainers.rycee ];
+    };
+  };
+
+  autodetect-encoding = buildEclipsePlugin rec {
+    name = "autodetect-encoding-${version}";
+    version = "1.8.5.201801191359";
+
+    srcFeature = fetchurl {
+      url = "https://github.com/cypher256/eclipse-encoding-plugin/raw/master/eclipse.encoding.updatesite.snapshot/features/eclipse.encoding.plugin.feature_${version}.jar";
+      sha256 = "1m8ypsc1dwz0y6yhjgxsdi9813d38jllv7javgwvcd30g042a3kx";
+    };
+
+    srcPlugin = fetchurl {
+      url = "https://github.com/cypher256/eclipse-encoding-plugin/raw/master/eclipse.encoding.updatesite.snapshot/plugins/mergedoc.encoding_${version}.jar";
+      sha256 = "1n2rzybfcwp3ss2qi0fhd8vm38vdwav8j837lqiqlfcnvzwsk86m";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "https://github.com/cypher256/eclipse-encoding-plugin";
+      description = "Show file encoding and line ending for the active editor in the eclipse status bar";
+      license = licenses.epl10;
+      platforms = platforms.all;
+      maintainers = [ maintainers.rycee ];
+    };
+  };
+
+  bytecode-outline = buildEclipsePlugin rec {
+    name = "bytecode-outline-${version}";
+    version = "2.5.0.201711011753-5a57fdf";
+
+    srcFeature = fetchurl {
+      url = "http://andrei.gmxhome.de/eclipse/features/de.loskutov.BytecodeOutline.feature_${version}.jar";
+      sha256 = "0yciqhcq0n5i326mwy57r4ywmkz2c2jky7r4pcmznmhvks3z65ps";
+    };
+
+    srcPlugin = fetchurl {
+      url = "http://dl.bintray.com/iloveeclipse/plugins/de.loskutov.BytecodeOutline_${version}.jar";
+      sha256 = "1vmsqv32jfl7anvdkw0vir342miv5sr9df7vd1w44lf1yf97vxlw";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "http://andrei.gmxhome.de/bytecode/";
+      description = "Shows disassembled bytecode of current java editor or class file";
+      license = licenses.bsd2;
+      platforms = platforms.all;
+      maintainers = [ maintainers.rycee ];
+    };
+  };
+
+  cdt = buildEclipseUpdateSite rec {
+    name = "cdt-${version}";
+    version = "9.11.0";
+
+    src = fetchzip {
+      stripRoot = false;
+      url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/tools/cdt/releases/9.11/${name}/${name}.zip";
+      sha256 = "1730w6rbv649nzfalfd10p2ph0z9rbrrcflga0n1dpmg181xh9lk";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "https://eclipse.org/cdt/";
+      description = "C/C++ development tooling";
+      license = licenses.epl10;
+      platforms = platforms.all;
+      maintainers = [ maintainers.bjornfor ];
+    };
+  };
+
+  checkstyle = buildEclipseUpdateSite rec {
+    name = "checkstyle-${version}";
+    version = "8.7.0.201801131309";
+
+    src = fetchzip {
+      stripRoot = false;
+      url = "mirror://sourceforge/project/eclipse-cs/Eclipse%20Checkstyle%20Plug-in/8.7.0/net.sf.eclipsecs-updatesite_${version}.zip";
+      sha256 = "07fymk705x4mwq7vh2i6frsf67jql4bzrkdzhb4n74zb0g1dib60";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "https://eclipse-cs.sourceforge.net/";
+      description = "Checkstyle integration into the Eclipse IDE";
+      license = licenses.lgpl21;
+      platforms = platforms.all;
+      maintainers = [ maintainers.rycee ];
+    };
+
+  };
+
+  color-theme = buildEclipsePlugin rec {
+    name = "color-theme-${version}";
+    version = "1.0.0.201410260308";
+
+    srcFeature = fetchurl {
+      url = "https://eclipse-color-theme.github.io/update/features/com.github.eclipsecolortheme.feature_${version}.jar";
+      sha256 = "128b9b1cib5ff0w1114ns5mrbrhj2kcm358l4dpnma1s8gklm8g2";
+    };
+
+    srcPlugin = fetchurl {
+      url = "https://eclipse-color-theme.github.io/update/plugins/com.github.eclipsecolortheme_${version}.jar";
+      sha256 = "0wz61909bhqwzpqwll27ia0cn3anyp81haqx3rj1iq42cbl42h0y";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "http://eclipsecolorthemes.org/";
+      description = "Plugin to switch color themes conveniently and without side effects";
+      license = licenses.epl10;
+      platforms = platforms.all;
+      maintainers = [ maintainers.rycee ];
+    };
+  };
+
+  cup = buildEclipsePlugin rec {
+    name = "cup-${version}";
+    version = "1.1.0.201604221613";
+    version_ = "1.0.0.201604221613";
+
+    srcFeature = fetchurl {
+      url = "http://www2.in.tum.de/projects/cup/eclipse/features/CupEclipsePluginFeature_${version}.jar";
+      sha256 = "13nnsf0cqg02z3af6xg45rhcgiffsibxbx6h1zahjv7igvqgkyna";
+    };
+
+    srcPlugins = [
+      (fetchurl {
+        url = "http://www2.in.tum.de/projects/cup/eclipse/plugins/CupReferencedLibraries_${version_}.jar";
+        sha256 = "0kif8kivrysprva1pxzajm88gi967qf7idhb6ga2xpvsdcris91j";
+      })
+
+      (fetchurl {
+        url = "http://www2.in.tum.de/projects/cup/eclipse/plugins/de.tum.in.www2.CupPlugin_${version}.jar";
+        sha256 = "022phbrsny3gb8npb6sxyqqxacx138q5bd7dq3gqxh3kprx5chbl";
+      })
+    ];
+
+    propagatedBuildInputs = [ zest ];
+
+    meta = with stdenv.lib; {
+      homepage = "http://www2.cs.tum.edu/projects/cup/eclipse.php";
+      description = "IDE for developing CUP based parsers";
+      platforms = platforms.all;
+      maintainers = [ maintainers.romildo ];
+    };
+  };
+
+  drools = buildEclipseUpdateSite rec {
+    name = "drools-${version}";
+    version = "7.17.0.Final";
+
+    src = fetchzip {
+      url = "https://download.jboss.org/drools/release/${version}/droolsjbpm-tools-distribution-${version}.zip";
+      sha512 = "2qzc1iszqfrfnw8xip78n3kp6hlwrvrr708vlmdk7nv525xhs0ssjaxriqdhcr0s6jripmmazxivv3763rnk2bfkh31hmbnckpx4r3m";
+      extraPostFetch = ''
+        # work around https://github.com/NixOS/nixpkgs/issues/38649
+        chmod go-w $out;
+
+        # update site is a couple levels deep, alongside some other irrelevant stuff
+        cd $out;
+        find . -type f -not -path ./binaries/org.drools.updatesite/\* -exec rm {} \;
+        rmdir sources;
+        mv binaries/org.drools.updatesite/* .;
+        rmdir binaries/org.drools.updatesite binaries;
+      '';
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "https://www.drools.org/";
+      description = "Drools is a Business Rules Management System (BRMS) solution";
+      license = licenses.asl20;
+    };
+  };
+
+  eclemma = buildEclipseUpdateSite rec {
+    name = "eclemma-${version}";
+    version = "2.3.2.201409141915";
+
+    src = fetchzip {
+      stripRoot = false;
+      url = "mirror://sourceforge/project/eclemma/01_EclEmma_Releases/2.3.2/eclemma-2.3.2.zip";
+      sha256 = "0w1kwcjh45p7msv5vpc8i6dsqwrnfmjama6vavpnxlji56jd3c43";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "https://www.eclemma.org/";
+      description = "EclEmma is a free Java code coverage tool for Eclipse";
+      license = licenses.epl10;
+      platforms = platforms.all;
+      maintainers = [ maintainers.rycee ];
+    };
+  };
+
+  findbugs = buildEclipsePlugin rec {
+    name = "findbugs-${version}";
+    version = "3.0.1.20150306-5afe4d1";
+
+    srcFeature = fetchurl {
+      url = "http://findbugs.cs.umd.edu/eclipse/features/edu.umd.cs.findbugs.plugin.eclipse_${version}.jar";
+      sha256 = "1m9fav2xlb9wrx2d00lpnh2sy0w5yzawynxm6xhhbfdzd0vpfr9v";
+    };
+
+    srcPlugin = fetchurl {
+      url = "http://findbugs.cs.umd.edu/eclipse/plugins/edu.umd.cs.findbugs.plugin.eclipse_${version}.jar";
+      sha256 = "10p3mrbp9wi6jhlmmc23qv7frh605a23pqsc7w96569bsfb5wa8q";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "http://findbugs.sourceforge.net/";
+      description = "Plugin that uses static analysis to look for bugs in Java code";
+      license = licenses.epl10;
+      platforms = platforms.all;
+      maintainers = [ maintainers.rycee ];
+    };
+  };
+
+  gnuarmeclipse = buildEclipseUpdateSite rec {
+    name = "gnuarmeclipse-${version}";
+    version = "3.1.1-201606210758";
+
+    src = fetchzip {
+      stripRoot = false;
+      url = "https://github.com/gnuarmeclipse/plug-ins/releases/download/v${version}/ilg.gnuarmeclipse.repository-${version}.zip";
+      sha256 = "1g77jlhfa3csaxxps1z5lasrd9l2p5ajnddnq9ra5syw8ggkdc2h";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "http://gnuarmeclipse.livius.net/";
+      description = "GNU ARM Eclipse Plug-ins";
+      license = licenses.epl10;
+      platforms = platforms.all;
+      maintainers = [ maintainers.bjornfor ];
+    };
+  };
+
+  jsonedit = buildEclipsePlugin rec {
+    name = "jsonedit-${version}";
+    version = "1.1.1";
+
+    srcFeature = fetchurl {
+      url = "https://boothen.github.io/Json-Eclipse-Plugin/features/jsonedit-feature_${version}.jar";
+      sha256 = "0zkg8d8x3l5jpfxi0mz9dn62wmy4fjgpwdikj280fvsklmcw5b86";
+    };
+
+    srcPlugins =
+      let
+        fetch = { n, h }:
+          fetchurl {
+            url = "https://boothen.github.io/Json-Eclipse-Plugin/plugins/jsonedit-${n}_${version}.jar";
+            sha256 = h;
+          };
+      in
+        map fetch [
+          { n = "core"; h = "0svs0aswnhl26cqw6bmw30cisx4cr50kc5njg272sy5c1dqjm1zq"; }
+          { n = "editor"; h = "1q62dinrbb18aywbvii4mlr7rxa20rdsxxd6grix9y8h9776q4l5"; }
+          { n = "folding"; h = "1qh4ijfb1gl9xza5ydi87v1kyima3a9sh7lncwdy1way3pdhln1y"; }
+          { n = "model"; h = "1pr6k2pdfdwx8jqs7gx7wzn3gxsql3sk6lnjha8m15lv4al6d4kj"; }
+          { n = "outline"; h = "1jgr2g16j3id8v367jbgd6kx6g2w636fbzmd8jvkvkh7y1jgjqxm"; }
+          { n = "preferences"; h = "027fhaqa5xbil6dmhvkbpha3pgw6dpmc2im3nlliyds57mdmdb1h"; }
+          { n = "text"; h = "0clywylyidrxlqs0n816nhgjmk1c3xl7sn904ki4q050amfy0wb2"; }
+        ];
+
+    propagatedBuildInputs = [ antlr-runtime_4_7 ];
+
+    meta = with stdenv.lib; {
+      description = "Adds support for JSON files to Eclipse";
+      homepage = "https://github.com/boothen/Json-Eclipse-Plugin";
+      license = licenses.epl10;
+      platforms = platforms.all;
+      maintainers = [ maintainers.rycee ];
+    };
+  };
+
+  jdt = buildEclipseUpdateSite rec {
+    name = "jdt-${version}";
+    version = "4.15";
+
+    src = fetchzip {
+      stripRoot = false;
+      url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-${version}-202003050155/org.eclipse.jdt-${version}.zip";
+      sha256 = "1dm4qgfb6rm7w0dk8br071c7wy0ybp7zrwvr3i02c2bxzy2psz7q";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "https://www.eclipse.org/jdt/";
+      description = "Eclipse Java development tools";
+      license = licenses.epl10;
+      platforms = platforms.all;
+      maintainers = [ maintainers.rycee ];
+    };
+  };
+
+  jdt-codemining = buildEclipsePlugin rec {
+    name = "jdt-codemining-${version}";
+    version = "1.0.0.201806221018";
+
+    srcFeature = fetchurl {
+      url = "http://oss.opensagres.fr/jdt-codemining/snapshot/features/jdt-codemining-feature_${version}.jar";
+      sha256 = "1vy30rsb9xifn4r1r2n84d48g6riadzli1xvhfs1mf5pkm5ljwl6";
+    };
+
+    srcPlugin = fetchurl {
+      url = "http://oss.opensagres.fr/jdt-codemining/snapshot/plugins/org.eclipse.jdt.codemining_${version}.jar";
+      sha256 = "0qdzlqcjcm2i4mwhmcdml0am83z1dayrcmf37ji7vmw6iwdk1xmp";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "https://github.com/angelozerr/jdt-codemining";
+      description = "Provides JDT Java CodeMining";
+      license = licenses.epl10;
+      platforms = platforms.all;
+      maintainers = [ maintainers.rycee ];
+    };
+  };
+
+  rustdt = buildEclipseUpdateSite rec {
+    name = "rustdt-${version}";
+    version = "0.6.2";
+    owner = "RustDT";
+    repo = "rustdt.github.io";
+    rev = "5cbe753008c40555c493092a6f4ae1ffbff0b3ce";
+
+    src = fetchzip {
+      stripRoot = false;
+      url = "https://github.com/${owner}/${repo}/archive/${rev}.zip";
+      sha256 = "1xfj4j27d1h4bdf2v7f78zi8lz4zkkj7s9kskmsqx5jcs2d459yp";
+      extraPostFetch =
+        ''
+          mv "$out/${repo}-${rev}/releases/local-repo/"* "$out/"
+        '';
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "https://github.com/RustDT";
+      description = "Rust development tooling";
+      license = licenses.epl10;
+      platforms = platforms.all;
+    };
+  };
+
+  scala = buildEclipseUpdateSite rec {
+    name = "scala-${version}";
+    version = "4.4.1.201605041056";
+
+    src = fetchzip {
+      url = "http://download.scala-ide.org/sdk/lithium/e44/scala211/stable/base-20160504-1321.zip";
+      sha256 = "13xgx2rwlll0l4bs0g6gyvrx5gcc0125vzn501fdj0wv2fqxn5lw";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "http://scala-ide.org/";
+      description = "The Scala IDE for Eclipse";
+      license = licenses.bsd3;
+      platforms = platforms.all;
+      maintainers = [ maintainers.rycee ];
+    };
+  };
+
+  spotbugs = buildEclipseUpdateSite rec {
+    name = "spotbugs-${version}";
+    version = "3.1.11";
+
+    src = fetchzip {
+      stripRoot = false;
+      url = "https://github.com/spotbugs/spotbugs/releases/download/${version}/eclipsePlugin.zip";
+      sha256 = "0aanqwx3gy1arpbkqd846381hiy6272lzwhfjl94x8jhfykpqqbj";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "https://spotbugs.github.io/";
+      description = "Plugin that uses static analysis to look for bugs in Java code";
+      license = licenses.lgpl21;
+      platforms = platforms.all;
+      maintainers = [ maintainers.rycee ];
+    };
+  };
+
+  testng = buildEclipsePlugin rec {
+    name = "testng-${version}";
+    version = "6.9.13.201609291640";
+
+    srcFeature = fetchurl {
+      url = "http://beust.com/eclipse-old/eclipse_${version}/features/org.testng.eclipse_${version}.jar";
+      sha256 = "02wzcysl7ga3wnvnwp6asl8d77wgc547c5qqawixw94lw6fn1a15";
+    };
+
+    srcPlugin = fetchurl {
+      url = "http://beust.com/eclipse-old/eclipse_${version}/plugins/org.testng.eclipse_${version}.jar";
+      sha256 = "1j4zw6392q3q6z3pcy803k3g0p220gk1x19fs99p0rmmdz83lc8d";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "https://testng.org/doc/";
+      description = "Eclipse plugin for the TestNG testing framework";
+      license = licenses.asl20;
+      platforms = platforms.all;
+      maintainers = [ maintainers.rycee ];
+    };
+  };
+
+  vrapper = buildEclipseUpdateSite rec {
+    name = "vrapper-${version}";
+    version = "0.72.0";
+    owner = "vrapper";
+    repo = "vrapper";
+    date = "20170311";
+
+    src = fetchzip {
+      stripRoot = false;
+      url = "https://github.com/${owner}/${repo}/releases/download/${version}/vrapper_${version}_${date}.zip";
+      sha256 = "0nyirf6km97q211cxfy01kidxac20m8ba3kk9xj73ykrhsk3cxjp";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "https://github.com/vrapper/vrapper";
+      description = "A wrapper to provide a Vim-like input scheme for moving around and editing text";
+      license = licenses.gpl3;
+      platforms = platforms.all;
+      maintainers = [ maintainers.stumoss ];
+    };
+  };
+
+  yedit = buildEclipsePlugin rec {
+    name = "yedit-${version}";
+    version = "1.0.20.201509041456";
+
+    srcFeature = fetchurl {
+      url = "http://dadacoalition.org/yedit/features/org.dadacoalition.yedit.feature_${version}-RELEASE.jar";
+      sha256 = "0rps73y19gwlrdr8jjrg3rhcaaagghnmri8297inxc5q2dvg0mlk";
+    };
+
+    srcPlugin = fetchurl {
+      url = "http://dadacoalition.org/yedit/plugins/org.dadacoalition.yedit_${version}-RELEASE.jar";
+      sha256 = "1wpyw4z28ka60z36f8m71kz1giajcm26wb9bpv18sjiqwdgx9v0z";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "https://github.com/oyse/yedit";
+      description = "A YAML editor plugin for Eclipse";
+      license = licenses.epl10;
+      platforms = platforms.all;
+      maintainers = [ maintainers.rycee ];
+    };
+  };
+
+  zest = buildEclipseUpdateSite rec {
+    name = "zest-${version}";
+    version = "3.9.101";
+
+    src = fetchurl {
+      url = "http://archive.eclipse.org/tools/gef/downloads/drops/${version}/R201408150207/GEF-${name}.zip";
+      sha256 = "01scn7cmcrjcp387spjm8ifgwrwwi77ypildandbisfvhj3qqs7m";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "https://www.eclipse.org/gef/zest/";
+      description = "The Eclipse Visualization Toolkit";
+      platforms = platforms.all;
+      maintainers = [ maintainers.romildo ];
+    };
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/editors/ed/default.nix b/nixpkgs/pkgs/applications/editors/ed/default.nix
new file mode 100644
index 000000000000..37d055e26852
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/ed/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, lzip
+}:
+
+stdenv.mkDerivation (rec {
+  name = "ed-${version}";
+  version = "1.16";
+
+  src = fetchurl {
+    url = "mirror://gnu/ed/${name}.tar.lz";
+    sha256 = "0b4b1lwizvng9bvpcjnmpj2i80xz9xw2w8nfff27b2h4mca7mh6g";
+  };
+
+  nativeBuildInputs = [ lzip ];
+
+  doCheck = true; # not cross;
+
+  meta = {
+    description = "An implementation of the standard Unix editor";
+
+    longDescription = ''
+      GNU ed is a line-oriented text editor.  It is used to create,
+      display, modify and otherwise manipulate text files, both
+      interactively and via shell scripts.  A restricted version of ed,
+      red, can only edit files in the current directory and cannot
+      execute shell commands.  Ed is the "standard" text editor in the
+      sense that it is the original editor for Unix, and thus widely
+      available.  For most purposes, however, it is superseded by
+      full-screen editors such as GNU Emacs or GNU Moe.
+    '';
+
+    license = stdenv.lib.licenses.gpl3Plus;
+
+    homepage = "https://www.gnu.org/software/ed/";
+
+    maintainers = [ ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+} // stdenv.lib.optionalAttrs (stdenv.hostPlatform != stdenv.buildPlatform) {
+  # This may be moved above during a stdenv rebuild.
+  preConfigure = ''
+    configureFlagsArray+=("CC=$CC")
+  '';
+})
diff --git a/nixpkgs/pkgs/applications/editors/edbrowse/default.nix b/nixpkgs/pkgs/applications/editors/edbrowse/default.nix
new file mode 100644
index 000000000000..c43640b65245
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/edbrowse/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, duktape, curl, pcre, readline, openssl, perl, html-tidy }:
+
+stdenv.mkDerivation rec {
+  pname = "edbrowse";
+  version = "3.7.6";
+
+  buildInputs = [ curl pcre readline openssl duktape perl html-tidy ];
+
+  postPatch = ''
+    for i in ./tools/*.pl
+    do
+      substituteInPlace $i --replace "/usr/bin/perl" "${perl}/bin/perl"
+    done
+  '';
+
+  makeFlags = [
+    "-C" "src"
+    "prefix=${placeholder "out"}"
+  ];
+
+  src = fetchFromGitHub {
+    owner = "CMB";
+    repo = "edbrowse";
+    rev = "v${version}";
+    sha256 = "0yk4djb9q8ll94fs57y706bsqlar4pfx6ysasvkzj146926lrh8a";
+  };
+  meta = with stdenv.lib; {
+    description = "Command Line Editor Browser";
+    longDescription = ''
+      Edbrowse is a combination editor, browser, and mail client that is 100% text based.
+      The interface is similar to /bin/ed, though there are many more features, such as editing multiple files simultaneously, and rendering html.
+      This program was originally written for blind users, but many sighted users have taken advantage of the unique scripting capabilities of this program, which can be found nowhere else.
+      A batch job, or cron job, can access web pages on the internet, submit forms, and send email, with no human intervention whatsoever.
+      edbrowse can also tap into databases through odbc. It was primarily written by Karl Dahlke.
+      '';
+    license = licenses.gpl1Plus;
+    homepage = "https://edbrowse.org/";
+    maintainers = with maintainers; [ schmitthenner vrthra equirosa ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/edit/default.nix b/nixpkgs/pkgs/applications/editors/edit/default.nix
new file mode 100644
index 000000000000..052206002610
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/edit/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchgit, unzip, pkgconfig, ncurses, libX11, libXft, cwebbin }:
+
+stdenv.mkDerivation {
+  pname = "edit-nightly";
+  version = "20160425";
+
+  src = fetchgit {
+    url = "git://c9x.me/ed.git";
+    rev = "323d49b68c5e804ed3b8cada0e2274f1589b3484";
+    sha256 = "0wv8i3ii7cd9bqhjpahwp2g5fcmyk365nc7ncmvl79cxbz3f7y8v";
+  };
+
+  buildInputs = [
+     unzip
+     pkgconfig
+     ncurses
+     libX11
+     libXft
+     cwebbin
+  ];
+
+  buildPhase = ''
+    ctangle *.w
+    make
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin/
+    cp obj/edit $out/bin/edit
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A relaxing mix of Vi and ACME";
+    homepage = "http://c9x.me/edit";
+    license = licenses.publicDomain;
+    maintainers = [ maintainers.vrthra ];
+    platforms = platforms.linux;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/editors/elvis/default.nix b/nixpkgs/pkgs/applications/editors/elvis/default.nix
new file mode 100644
index 000000000000..3a6c8c97b221
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/elvis/default.nix
@@ -0,0 +1,46 @@
+{ fetchurl, fetchpatch, stdenv, ncurses }:
+
+stdenv.mkDerivation {
+  name = "elvis-2.2_0";
+
+  src = fetchurl {
+    url = "http://www.the-little-red-haired-girl.org/pub/elvis/elvis-2.2_0.tar.gz";
+    sha256 = "182fj9qzyq6cjq1r849gpam6nq9smwv9f9xwaq84961p56r6d14s";
+  };
+
+  buildInputs = [ ncurses ];
+
+  patches = [ (fetchpatch {
+    url = "https://github.com/mbert/elvis/commit/076cf4ad5cc993be0c6195ec0d5d57e5ad8ac1eb.patch";
+    sha256 = "0yzkc1mxjwg09mfmrk20ksa0vfnb2x83ndybwvawq4xjm1qkcahc";
+  }) ];
+
+  postPatch = ''
+    substituteInPlace configure \
+      --replace '-lcurses' '-lncurses'
+  '';
+
+  preConfigure = ''
+    mkdir -p $out/share/man/man1
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/elvis $out/share/elvis/doc
+    cp elvis ref elvtags elvfmt $out/bin
+    cp -R data/* $out/share/elvis
+    cp doc/* $out/share/elvis/doc
+
+    mkdir -p $out/share/man/man1
+    for a in doc/*.man; do
+      cp $a $out/share/man/man1/`basename $a .man`.1
+    done
+  '';
+
+  configureFlags = [ "--ioctl=termios" ];
+
+  meta = {
+    homepage = "http://elvis.vi-editor.org/";
+    description = "A vi clone for Unix and other operating systems";
+    license = stdenv.lib.licenses.free;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/cedet/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/cedet/default.nix
new file mode 100644
index 000000000000..45f20fccad90
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/cedet/default.nix
@@ -0,0 +1,51 @@
+{ fetchurl, stdenv, emacs, python }:
+
+stdenv.mkDerivation rec {
+  name = "cedet-1.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/cedet/${name}.tar.gz";
+    sha256 = "0p2bwlpwwa019axvgj09xkxbr53j0pq23d46s4la9jfhl47nbh22";
+  };
+
+  buildInputs = [ emacs python ];
+
+  doCheck = true;
+  checkPhase = "make utest";
+
+  installPhase = ''
+    mkdir -p "$out/share/emacs/site-lisp"
+    cp -v */*.el */*/*.el */*.elc */*/*.elc "$out/share/emacs/site-lisp"
+    chmod a-x "$out/share/emacs/site-lisp/"*
+
+    mkdir -p "$out/share/info"
+    cp -v */*.info* */*/*.info* "$out/share/info"
+  '';
+
+  meta = {
+    description = "CEDET, a Collection of Emacs Development Environment Tools";
+
+    longDescription = ''
+      CEDET is a collection of tools written with the end goal of
+      creating an advanced development environment in Emacs.
+
+      Emacs already is a great environment for writing software, but
+      there are additional areas that need improvement.  Many new
+      ideas for integrated environments have been developed in newer
+      products, such as JBuilder, Eclipse, or KDevelop.  CEDET is a
+      project which brings together several different tools needed to
+      implement advanced features.
+
+      CEDET includes EIEIO (Enhanced Implementation of Emacs
+      Interpreted Objects), Semantic, SRecode, Speedbar, EDE (Emacs
+      Development Environment), and COGRE (COnnected GRaph Editor).
+    '';
+
+    license = stdenv.lib.licenses.gpl2Plus;
+
+    homepage = "http://cedet.sourceforge.net/";
+
+    # Fails with `semantic-idle.el:42:1:Error: Invalid function: class-p`
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/cedille/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/cedille/default.nix
new file mode 100644
index 000000000000..3af53cda492f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/cedille/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, cedille, emacs }:
+
+stdenv.mkDerivation {
+  pname = "cedille-mode";
+  version = cedille.version;
+
+  src = cedille.src;
+
+  buildInputs = [ emacs ];
+
+  buildPhase = ":";
+
+  installPhase = ''
+    install -d $out/share/emacs/site-lisp
+    install se-mode/*.el se-mode/*.elc $out/share/emacs/site-lisp
+    install cedille-mode/*.el cedille-mode/*.elc $out/share/emacs/site-lisp
+    install *.el *.elc $out/share/emacs/site-lisp
+    substituteInPlace $out/share/emacs/site-lisp/cedille-mode.el \
+      --replace /usr/bin/cedille ${cedille}/bin/cedille \
+
+  '';
+
+  meta = {
+    description = "Emacs major mode for Cedille";
+    homepage    = cedille.meta.homepage;
+    license     = cedille.meta.license ;
+    platforms   = cedille.meta.platforms;
+    maintainers = cedille.meta.maintainers;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/color-theme-solarized/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/color-theme-solarized/default.nix
new file mode 100644
index 000000000000..ba54e5f43412
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/color-theme-solarized/default.nix
@@ -0,0 +1,33 @@
+{stdenv, fetchzip, emacs, color-theme}:
+let
+  commit = "f3ca8902ea056fb8e46cb09f09c96294e31cd4ee";
+in
+stdenv.mkDerivation {
+  name = "color-theme-solarized-1.0.0";
+
+  src = fetchzip {
+
+    url = "https://github.com/sellout/emacs-color-theme-solarized/archive/${commit}.zip";
+    sha256 = "16d7adqi07lzzr0qipl1fbag9l8kiyr3xrqxi528pimcisbg85d3";
+  };
+
+  buildInputs = [ emacs ];
+  propagatedUserEnvPkgs = [ color-theme ];
+
+  buildPhase = ''
+    emacs -L . -L ${color-theme}/share/emacs/site-lisp/elpa/color-theme-* --batch -f batch-byte-compile *.el
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/emacs/site-lisp
+    install *.el* $out/share/emacs/site-lisp
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Precision colors for machines and people";
+    homepage = "http://ethanschoonover.com/solarized";
+    maintainers = [ maintainers.samuelrivas ];
+    license = licenses.mit;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/elpa-generated.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/elpa-generated.nix
new file mode 100644
index 000000000000..b1b33dc9354b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/elpa-generated.nix
@@ -0,0 +1,3891 @@
+{ callPackage }:
+  {
+    ace-window = callPackage ({ avy, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "ace-window";
+        ename = "ace-window";
+        version = "0.9.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/ace-window-0.9.0.el";
+          sha256 = "1m7fc4arcxn7fp0hnzyp20czjp4zx3rjaspfzpxzgc8sbghi81a3";
+        };
+        packageRequires = [ avy ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/ace-window.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    ack = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "ack";
+        ename = "ack";
+        version = "1.8";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/ack-1.8.tar";
+          sha256 = "1d4218km7j1bx1fsna29j3gi3k2ak2fzbk1gyki327pnnlma6bav";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/ack.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    ada-mode = callPackage ({ elpaBuild
+                            , emacs
+                            , fetchurl
+                            , lib
+                            , uniquify-files
+                            , wisi }:
+      elpaBuild {
+        pname = "ada-mode";
+        ename = "ada-mode";
+        version = "7.1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/ada-mode-7.1.1.tar";
+          sha256 = "11ch0dn478ddzkcjcyqf2rjim7w0fjb8xfijqxxi07847w4gkklp";
+        };
+        packageRequires = [ emacs uniquify-files wisi ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/ada-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    ada-ref-man = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "ada-ref-man";
+        ename = "ada-ref-man";
+        version = "2012.5";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/ada-ref-man-2012.5.tar";
+          sha256 = "0n7izqc44i3l6fxbzkq9gwwlcf04rr9g1whrk8biz84jhbyh23x8";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/ada-ref-man.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    adaptive-wrap = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "adaptive-wrap";
+        ename = "adaptive-wrap";
+        version = "0.7";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/adaptive-wrap-0.7.el";
+          sha256 = "10fb8gzvkbnrgzv28n1rczs03dvapr7rvi0kd73j6yf1zg2iz6qp";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/adaptive-wrap.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    adjust-parens = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "adjust-parens";
+        ename = "adjust-parens";
+        version = "3.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/adjust-parens-3.1.tar";
+          sha256 = "059v0njd52vxidr5xwv2jmknm2shnwpj3101069q6lsmz1wq242a";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/adjust-parens.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    advice-patch = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "advice-patch";
+        ename = "advice-patch";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/advice-patch-0.1.el";
+          sha256 = "0mb7linzsnf72vzkn9h6w2i2b0h92h6qzkapyrv61vh5a67k1m0s";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/advice-patch.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    aggressive-indent = callPackage ({ cl-lib ? null
+                                     , elpaBuild
+                                     , emacs
+                                     , fetchurl
+                                     , lib }:
+      elpaBuild {
+        pname = "aggressive-indent";
+        ename = "aggressive-indent";
+        version = "1.8.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/aggressive-indent-1.8.3.el";
+          sha256 = "0jnzccl50x0wapprgwxinp99pwwa6j43q6msn4gv437j7swy8wnj";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/aggressive-indent.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    ahungry-theme = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "ahungry-theme";
+        ename = "ahungry-theme";
+        version = "1.10.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/ahungry-theme-1.10.0.tar";
+          sha256 = "14q5yw56n82qph09bk7wmj5b1snhh9w0nk5s1l7yn9ldg71xq6pm";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/ahungry-theme.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    all = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "all";
+        ename = "all";
+        version = "1.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/all-1.0.el";
+          sha256 = "17h4cp0xnh08szh3snbmn1mqq2smgqkn45bq7v0cpsxq1i301hi3";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/all.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    ampc = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "ampc";
+        ename = "ampc";
+        version = "0.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/ampc-0.2.el";
+          sha256 = "1pdy5mvi6h8m7qjnxiy217fgcp9w91375hq29bacfgh7bix56jlr";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/ampc.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    arbitools = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "arbitools";
+        ename = "arbitools";
+        version = "0.977";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/arbitools-0.977.el";
+          sha256 = "0nvdy14lqvy2ca4vw2qlr2kg2vv4y4sr8sa7kqrpf8cg7k9q3mbv";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/arbitools.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    ascii-art-to-unicode = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "ascii-art-to-unicode";
+        ename = "ascii-art-to-unicode";
+        version = "1.12";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/ascii-art-to-unicode-1.12.el";
+          sha256 = "1w9h2lyriafxj71r79774gh822cz8mry3gdfzyj6ym6v9mvqypna";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/ascii-art-to-unicode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    async = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib, nadvice }:
+      elpaBuild {
+        pname = "async";
+        ename = "async";
+        version = "1.9.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/async-1.9.3.tar";
+          sha256 = "1pmfjrlapvhkjqcal8x95w190hm9wsgxb3byc22rc1gf5z0p52c8";
+        };
+        packageRequires = [ cl-lib nadvice ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/async.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    auctex = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "auctex";
+        ename = "auctex";
+        version = "12.2.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/auctex-12.2.1.tar";
+          sha256 = "14y0kdri2zvz81qwpncsr3ly4ciqab6g8yxl956k3ddn36b3a56s";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/auctex.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    aumix-mode = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "aumix-mode";
+        ename = "aumix-mode";
+        version = "7";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/aumix-mode-7.el";
+          sha256 = "0qyjw2g3pzcxqdg1cpp889nmb524jxqq32dz7b7cg2m903lv5gmv";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/aumix-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    auto-correct = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "auto-correct";
+        ename = "auto-correct";
+        version = "1.1.4";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/auto-correct-1.1.4.el";
+          sha256 = "1ml35l6lk4sf51sh6cal1ylsn61iddz0s01wwly199i3nim0qnw8";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/auto-correct.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    auto-overlays = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "auto-overlays";
+        ename = "auto-overlays";
+        version = "0.10.9";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/auto-overlays-0.10.9.tar";
+          sha256 = "0aqjp3bkd7mi191nm971z857s09py390ikcd93hyhmknblk0v14p";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/auto-overlays.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    avy = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "avy";
+        ename = "avy";
+        version = "0.5.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/avy-0.5.0.tar";
+          sha256 = "1xfcml38qmrwdd0rkhwrvv2s7dbznwhk3vy9pjd6ljpg22wkb80d";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/avy.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    bbdb = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "bbdb";
+        ename = "bbdb";
+        version = "3.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/bbdb-3.2.tar";
+          sha256 = "1p56dg0mja2b2figy7yhdx714zd5j6njzn0k07zjka3jc06izvjx";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/bbdb.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    beacon = callPackage ({ elpaBuild, fetchurl, lib, seq }:
+      elpaBuild {
+        pname = "beacon";
+        ename = "beacon";
+        version = "1.3.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/beacon-1.3.3.el";
+          sha256 = "10r4fpf8pcf1qn5ncpm5g7skzba749mrc1ggykq92jlha3q98s02";
+        };
+        packageRequires = [ seq ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/beacon.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    bluetooth = callPackage ({ dash, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "bluetooth";
+        ename = "bluetooth";
+        version = "0.1.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/bluetooth-0.1.2.el";
+          sha256 = "1vp2vpyq0ybjni35ics1mg1kiwgvc7x12dlmvygy78sqp52sfkcv";
+        };
+        packageRequires = [ dash emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/bluetooth.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    bnf-mode = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "bnf-mode";
+        ename = "bnf-mode";
+        version = "0.4.4";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/bnf-mode-0.4.4.tar";
+          sha256 = "0acr3x96zknxs90dc9mpnrwiaa81883h36lx5q1lxfn78vjfw14x";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/bnf-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    brief = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "brief";
+        ename = "brief";
+        version = "5.87";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/brief-5.87.tar";
+          sha256 = "02z8fzzf1zsk2r0cnssz3i2nd4qwsnya4i2r4qi4ndc1xjlsvgwc";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/brief.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    buffer-expose = callPackage ({ cl-lib ? null
+                                 , elpaBuild
+                                 , emacs
+                                 , fetchurl
+                                 , lib }:
+      elpaBuild {
+        pname = "buffer-expose";
+        ename = "buffer-expose";
+        version = "0.4.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/buffer-expose-0.4.3.el";
+          sha256 = "1blpvan31mvqhzal16sdn564jnfnn7xsfn8zb65ijndh23drljwd";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/buffer-expose.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    bug-hunter = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib, seq }:
+      elpaBuild {
+        pname = "bug-hunter";
+        ename = "bug-hunter";
+        version = "1.3.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/bug-hunter-1.3.1.el";
+          sha256 = "0xplsnmj144r90vxxkmpdxlaq6gyx4ca6iklq60wd0w05fw9q02x";
+        };
+        packageRequires = [ cl-lib seq ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/bug-hunter.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    caps-lock = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "caps-lock";
+        ename = "caps-lock";
+        version = "1.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/caps-lock-1.0.el";
+          sha256 = "1i4hwam81p4dr0bk8257fkiz4xmv6knkjxj7a00fa35kgx5blpva";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/caps-lock.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    captain = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "captain";
+        ename = "captain";
+        version = "1.0.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/captain-1.0.3.el";
+          sha256 = "02b4s4pfnwfwc3xgh4g96wrqll37m35dc2x09pjwkdjxglki7045";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/captain.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    chess = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "chess";
+        ename = "chess";
+        version = "2.0.4";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/chess-2.0.4.tar";
+          sha256 = "1sq1bjmp513vldfh7hc2bbfc54665abqiz0kqgqq3gijckaxn5js";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/chess.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    cl-generic = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "cl-generic";
+        ename = "cl-generic";
+        version = "0.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/cl-generic-0.3.el";
+          sha256 = "0vb338bhjpsnrf60qgxny4z5rjrnifahnrv9axd4shay89d894zq";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/cl-generic.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    cl-lib = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "cl-lib";
+        ename = "cl-lib";
+        version = "0.6.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/cl-lib-0.6.1.el";
+          sha256 = "00w7bw6wkig13pngijh7ns45s1jn5kkbbjaqznsdh6jk5x089j9y";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/cl-lib.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    cl-print = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "cl-print";
+        ename = "cl-print";
+        version = "1.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/cl-print-1.0.el";
+          sha256 = "0ib8j7rv5f4c4xg3kban58jm6cam756i3xz6j8100846g3jn9zcc";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/cl-print.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    clipboard-collector = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "clipboard-collector";
+        ename = "clipboard-collector";
+        version = "0.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/clipboard-collector-0.2.el";
+          sha256 = "19scspkxgm3b1jkv10jy6nw9gv1q6sfjys09l37mvsva3djxa1dl";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/clipboard-collector.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    cobol-mode = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "cobol-mode";
+        ename = "cobol-mode";
+        version = "1.0.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/cobol-mode-1.0.0.el";
+          sha256 = "1zmcfpl7v787yacc7gxm8mkp53fmrznp5mnad628phf3vj4kwnxi";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/cobol-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    coffee-mode = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "coffee-mode";
+        ename = "coffee-mode";
+        version = "0.4.1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/coffee-mode-0.4.1.1.el";
+          sha256 = "1jffd8rqmc3l597db26rggis6apf91glyzm1qvpf5g3iz55g6slz";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/coffee-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    compact-docstrings = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "compact-docstrings";
+        ename = "compact-docstrings";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/compact-docstrings-0.1.el";
+          sha256 = "1qmxn1i07nnzfckl06lg3xpvccx2hjgpypgc9v4pdihjfdwnifm5";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/compact-docstrings.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    company = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "company";
+        ename = "company";
+        version = "0.9.12";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/company-0.9.12.tar";
+          sha256 = "1vcgfccdc06alba3jl6dg7ms20wdzdhaqikh7id5lbawb00hc10j";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/company.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    company-ebdb = callPackage ({ company, ebdb, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "company-ebdb";
+        ename = "company-ebdb";
+        version = "1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/company-ebdb-1.1.el";
+          sha256 = "146qpiigz12zp1823ggxfrx090g0mxs7gz1ba7sa0iq6ibgzwwm9";
+        };
+        packageRequires = [ company ebdb ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/company-ebdb.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    company-math = callPackage ({ company
+                                , elpaBuild
+                                , fetchurl
+                                , lib
+                                , math-symbol-lists }:
+      elpaBuild {
+        pname = "company-math";
+        ename = "company-math";
+        version = "1.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/company-math-1.3.tar";
+          sha256 = "0fc9ms0s9w81sxp3qcfva3n3d2qys0pj19pnm621a6v1xdsc7i1l";
+        };
+        packageRequires = [ company math-symbol-lists ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/company-math.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    company-statistics = callPackage ({ company
+                                      , elpaBuild
+                                      , emacs
+                                      , fetchurl
+                                      , lib }:
+      elpaBuild {
+        pname = "company-statistics";
+        ename = "company-statistics";
+        version = "0.2.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/company-statistics-0.2.3.tar";
+          sha256 = "0780xp09f739jys469x4fqpgj1lysi8gnhiaz0735jib07lmh4ww";
+        };
+        packageRequires = [ company emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/company-statistics.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    context-coloring = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "context-coloring";
+        ename = "context-coloring";
+        version = "8.1.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/context-coloring-8.1.0.tar";
+          sha256 = "01wm36qgxsg7lgdxkn7avzfmxcpilsmvfwz3s7y04i0sdrsjvzp4";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/context-coloring.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    crisp = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "crisp";
+        ename = "crisp";
+        version = "1.3.6";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/crisp-1.3.6.el";
+          sha256 = "0jf4668h0mzh8han2vbvpzz8m02b8rsbdrj0ddar30w5i6v2f8kz";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/crisp.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    csv-mode = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "csv-mode";
+        ename = "csv-mode";
+        version = "1.12";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/csv-mode-1.12.tar";
+          sha256 = "0bya12smlrzwv4cbcmch4kg1fazp4k0ndrh1z17ix9p8c14d0v1j";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/csv-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    cycle-quotes = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "cycle-quotes";
+        ename = "cycle-quotes";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/cycle-quotes-0.1.tar";
+          sha256 = "0aa6ykblgb6anqmi4qxakbvyrq9v02skgayhfb2qddffiww404ka";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/cycle-quotes.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    darkroom = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "darkroom";
+        ename = "darkroom";
+        version = "0.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/darkroom-0.3.el";
+          sha256 = "0l1xg5kqmjw22k78qnsln0ifx2dx74xxqj0qp8xxcpqvzzx0xh86";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/darkroom.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    dash = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "dash";
+        ename = "dash";
+        version = "2.12.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/dash-2.12.0.tar";
+          sha256 = "02r547vian59zr55z6ri4p2b7q5y5k256wi9j8a317vjzyh54m05";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/dash.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    dbus-codegen = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "dbus-codegen";
+        ename = "dbus-codegen";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/dbus-codegen-0.1.el";
+          sha256 = "1gi7jc6rn6hlgh01zfwb7cczb5hi3c05wlnzw6akj1h9kai1lmzw";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/dbus-codegen.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    debbugs = callPackage ({ elpaBuild, emacs, fetchurl, lib, soap-client }:
+      elpaBuild {
+        pname = "debbugs";
+        ename = "debbugs";
+        version = "0.22";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/debbugs-0.22.tar";
+          sha256 = "05ik9qv539b5c1nzxkk3lk23bqj4vqgmfmd8x367abhb7c9gix2z";
+        };
+        packageRequires = [ emacs soap-client ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/debbugs.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    delight = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib, nadvice }:
+      elpaBuild {
+        pname = "delight";
+        ename = "delight";
+        version = "1.5";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/delight-1.5.el";
+          sha256 = "0kzlvzwmn6zj0874086q2xw0pclyi7wlkq48zh2lkd2796xm8vw7";
+        };
+        packageRequires = [ cl-lib nadvice ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/delight.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    dict-tree = callPackage ({ elpaBuild, fetchurl, heap, lib, tNFA, trie }:
+      elpaBuild {
+        pname = "dict-tree";
+        ename = "dict-tree";
+        version = "0.14";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/dict-tree-0.14.el";
+          sha256 = "1k00k3510bgq7rijvrxbx4b7qlq2abq1dyyn51zgm8q0qk68p5jq";
+        };
+        packageRequires = [ heap tNFA trie ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/dict-tree.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    diff-hl = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "diff-hl";
+        ename = "diff-hl";
+        version = "1.8.7";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/diff-hl-1.8.7.tar";
+          sha256 = "1qcwicflvm6dxcflnlg891hyzwp2q79fdkdbdwp1440a0j09riam";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/diff-hl.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    diffview = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "diffview";
+        ename = "diffview";
+        version = "1.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/diffview-1.0.el";
+          sha256 = "1gkdmzmgjixz9nak7dxvqy28kz0g7i672gavamwgnc1jl37wkcwi";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/diffview.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    dired-du = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "dired-du";
+        ename = "dired-du";
+        version = "0.5.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/dired-du-0.5.2.tar";
+          sha256 = "0vhph7vcicsiq28b10h3b4dvnhckcy4gccpdgsad5j7pwa5k26m1";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/dired-du.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    dired-git-info = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "dired-git-info";
+        ename = "dired-git-info";
+        version = "0.3.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/dired-git-info-0.3.1.el";
+          sha256 = "1kd0rpw7l32wvwi7q8s0inx4bc66xrl7hkllnlicyczsnzw2z52z";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/dired-git-info.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    disk-usage = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "disk-usage";
+        ename = "disk-usage";
+        version = "1.3.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/disk-usage-1.3.3.el";
+          sha256 = "0h1jwznd41gi0vg830ilfgm01q05zknikzahwasm9cizwm2wyizj";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/disk-usage.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    dismal = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "dismal";
+        ename = "dismal";
+        version = "1.5";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/dismal-1.5.tar";
+          sha256 = "1vhs6w6c2klsrfjpw8vr5c4gwiw83ppdjhsn2la0fvkm60jmc476";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/dismal.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    djvu = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "djvu";
+        ename = "djvu";
+        version = "1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/djvu-1.1.el";
+          sha256 = "0njgyx09q225hliacsnjk8wallg5i6xkz6bj501pb05nwqfbvfk7";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/djvu.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    docbook = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "docbook";
+        ename = "docbook";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/docbook-0.1.el";
+          sha256 = "01x0g8dhw65mzp9mk6qhx9p2bsvkw96hz1awrrf2ji17sp8hd1v6";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/docbook.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    dts-mode = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "dts-mode";
+        ename = "dts-mode";
+        version = "0.1.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/dts-mode-0.1.0.el";
+          sha256 = "08xwqbdg0gwipc3gfacs3gpc6zz6lhkw7pyj7n9qhg020c4qv7hq";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/dts-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    easy-kill = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "easy-kill";
+        ename = "easy-kill";
+        version = "0.9.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/easy-kill-0.9.3.tar";
+          sha256 = "17nw0mglmg877axwg1d0gs03yc0p04lzmd3pl0nsnqbh3303fnqb";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/easy-kill.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    ebdb = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib, seq }:
+      elpaBuild {
+        pname = "ebdb";
+        ename = "ebdb";
+        version = "0.6.17";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/ebdb-0.6.17.tar";
+          sha256 = "07335pcqvvj1apzbwy4dc4i6pc6w21hr7v9fvgkc9c2x7fqlqg24";
+        };
+        packageRequires = [ cl-lib emacs seq ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/ebdb.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    ebdb-gnorb = callPackage ({ ebdb, elpaBuild, fetchurl, gnorb, lib }:
+      elpaBuild {
+        pname = "ebdb-gnorb";
+        ename = "ebdb-gnorb";
+        version = "1.0.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/ebdb-gnorb-1.0.2.el";
+          sha256 = "0bma7mqilp3lfgv0z2mk6nnqzh1nn1prkz2aiwrs4hxwydmda13i";
+        };
+        packageRequires = [ ebdb gnorb ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/ebdb-gnorb.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    ebdb-i18n-chn = callPackage ({ ebdb, elpaBuild, fetchurl, lib, pyim }:
+      elpaBuild {
+        pname = "ebdb-i18n-chn";
+        ename = "ebdb-i18n-chn";
+        version = "1.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/ebdb-i18n-chn-1.3.el";
+          sha256 = "1w7xgagscyjxrw4xl8bz6wf7skvdvk5qdcp5p7kxl4r9nhjffj20";
+        };
+        packageRequires = [ ebdb pyim ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/ebdb-i18n-chn.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    ediprolog = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "ediprolog";
+        ename = "ediprolog";
+        version = "1.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/ediprolog-1.2.el";
+          sha256 = "039ffvp7c810mjyargmgw1i87g0z8qs8qicq826sd9aiz9hprfaz";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/ediprolog.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    eev = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "eev";
+        ename = "eev";
+        version = "20200224";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/eev-20200224.tar";
+          sha256 = "1r1wh001ikg34axihffrhzl0n8r0w42s2hac2jys8sil1hqvx306";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/eev.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    eglot = callPackage ({ elpaBuild
+                         , emacs
+                         , fetchurl
+                         , flymake ? null
+                         , jsonrpc
+                         , lib }:
+      elpaBuild {
+        pname = "eglot";
+        ename = "eglot";
+        version = "1.6";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/eglot-1.6.tar";
+          sha256 = "15hd6sx7qrpvlvhwwkcgdiki8pswwf4mm7hkm0xvznskfcp44spx";
+        };
+        packageRequires = [ emacs flymake jsonrpc ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/eglot.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    el-search = callPackage ({ cl-print
+                             , elpaBuild
+                             , emacs
+                             , fetchurl
+                             , lib
+                             , stream }:
+      elpaBuild {
+        pname = "el-search";
+        ename = "el-search";
+        version = "1.12.6.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/el-search-1.12.6.1.tar";
+          sha256 = "150f4rirg107hmzpv8ifa32k2mgf07smbf9z44ln5rh8n17xwqah";
+        };
+        packageRequires = [ cl-print emacs stream ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/el-search.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    eldoc = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "eldoc";
+        ename = "eldoc";
+        version = "1.0.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/eldoc-1.0.0.el";
+          sha256 = "0jdqnndvpz929rbfgrm2bgw3z2vp7dvvgk3wnhvlhf63mdiza89m";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/eldoc.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    eldoc-eval = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "eldoc-eval";
+        ename = "eldoc-eval";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/eldoc-eval-0.1.el";
+          sha256 = "1mnhxdsn9h43iq941yqmg92v3hbzwyg7acqfnz14q5g52bnagg19";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/eldoc-eval.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    electric-spacing = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "electric-spacing";
+        ename = "electric-spacing";
+        version = "5.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/electric-spacing-5.0.el";
+          sha256 = "1jk6v84z0n8jljzsz4wk7rgzh7drpfvxf4bp6xis8gapnd3ycfyv";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/electric-spacing.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    elisp-benchmarks = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "elisp-benchmarks";
+        ename = "elisp-benchmarks";
+        version = "1.4";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/elisp-benchmarks-1.4.tar";
+          sha256 = "18ia04aq4pqa8374x60g3g66jqmm17c6n904naa0jhqphlgam8pb";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/elisp-benchmarks.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    enwc = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "enwc";
+        ename = "enwc";
+        version = "2.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/enwc-2.0.tar";
+          sha256 = "17w35b06am5n19nlq00ni5w3jvys9i7swyw4glb7081d2jbij2mn";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/enwc.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    epoch-view = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "epoch-view";
+        ename = "epoch-view";
+        version = "0.0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/epoch-view-0.0.1.el";
+          sha256 = "1wy25ryyg9f4v83qjym2pwip6g9mszhqkf5a080z0yl47p71avfx";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/epoch-view.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    ergoemacs-mode = callPackage ({ cl-lib ? null
+                                  , elpaBuild
+                                  , emacs
+                                  , fetchurl
+                                  , lib
+                                  , undo-tree }:
+      elpaBuild {
+        pname = "ergoemacs-mode";
+        ename = "ergoemacs-mode";
+        version = "5.16.10.12";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/ergoemacs-mode-5.16.10.12.tar";
+          sha256 = "1zfzjmi30lllrbyzicmp11c9lpa82g57wi134q9bajvzn9ryx4jr";
+        };
+        packageRequires = [ cl-lib emacs undo-tree ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/ergoemacs-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    excorporate = callPackage ({ elpaBuild
+                               , emacs
+                               , fetchurl
+                               , fsm
+                               , lib
+                               , nadvice
+                               , soap-client
+                               , url-http-ntlm }:
+      elpaBuild {
+        pname = "excorporate";
+        ename = "excorporate";
+        version = "0.8.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/excorporate-0.8.3.tar";
+          sha256 = "04bsbiwgfbfd501qvwh0iwyk0xh442kjfj73b3876idwj3p8alr5";
+        };
+        packageRequires = [ emacs fsm nadvice soap-client url-http-ntlm ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/excorporate.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    expand-region = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "expand-region";
+        ename = "expand-region";
+        version = "0.11.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/expand-region-0.11.0.tar";
+          sha256 = "1q6xaqkv40z4c6rgdkxqqkvxgsaj8yjqjrxi40kz5y0ck3bjrk0i";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/expand-region.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    exwm = callPackage ({ elpaBuild, fetchurl, lib, xelb }:
+      elpaBuild {
+        pname = "exwm";
+        ename = "exwm";
+        version = "0.23";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/exwm-0.23.tar";
+          sha256 = "05w1v3wrp1lzz20zd9lcvr5nhk809kgy6svvkbs15xhnr6x55ad5";
+        };
+        packageRequires = [ xelb ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/exwm.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    f90-interface-browser = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "f90-interface-browser";
+        ename = "f90-interface-browser";
+        version = "1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/f90-interface-browser-1.1.el";
+          sha256 = "0mf32w2bgc6b43k0r4a11bywprj7y3rvl21i0ry74v425r6hc3is";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/f90-interface-browser.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    filladapt = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "filladapt";
+        ename = "filladapt";
+        version = "2.12.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/filladapt-2.12.2.el";
+          sha256 = "1cxyxfdjg1dsmn1jrl6b7xy03xr42fb6vyggh27s4dk417ils6yg";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/filladapt.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    flylisp = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "flylisp";
+        ename = "flylisp";
+        version = "0.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/flylisp-0.2.el";
+          sha256 = "0hh09qy1xwlv52lsh49nr11h4lk8qlmk06b669q494d79hxyv4v6";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/flylisp.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    flymake = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "flymake";
+        ename = "flymake";
+        version = "1.0.8";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/flymake-1.0.8.el";
+          sha256 = "1hqxrqb227v4ncjjqx8im3c4mhg8w5yjbz9hpfcm5x8xnr2yd6bp";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/flymake.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    fountain-mode = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "fountain-mode";
+        ename = "fountain-mode";
+        version = "2.7.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/fountain-mode-2.7.3.el";
+          sha256 = "1sz3qp3y52d05jd006zc99r4ryignpa2jgfk72rw3zfqmikzv15j";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/fountain-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    frame-tabs = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "frame-tabs";
+        ename = "frame-tabs";
+        version = "1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/frame-tabs-1.1.el";
+          sha256 = "0fx9zc7mvyl703k7sjjcvffm2qw42ncr7r3d4fm0h45p9pi83svz";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/frame-tabs.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    frog-menu = callPackage ({ avy, elpaBuild, emacs, fetchurl, lib, posframe }:
+      elpaBuild {
+        pname = "frog-menu";
+        ename = "frog-menu";
+        version = "0.2.10";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/frog-menu-0.2.10.el";
+          sha256 = "050qikvgh9v7kgvhznjsfrpyhs7iq1x63bryqdkrwlf668yhzi1m";
+        };
+        packageRequires = [ avy emacs posframe ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/frog-menu.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    fsm = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "fsm";
+        ename = "fsm";
+        version = "0.2.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/fsm-0.2.1.el";
+          sha256 = "1jyxyqdbfl8nv7c50q0sg3w5p7whp1sqgi7w921k5hfar4d11qqp";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/fsm.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    ggtags = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "ggtags";
+        ename = "ggtags";
+        version = "0.8.13";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/ggtags-0.8.13.el";
+          sha256 = "1qa7lcrcmf76sf6dy8sxbg4adq7rg59fm0n5848w3qxgsr0h45fg";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/ggtags.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    gited = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "gited";
+        ename = "gited";
+        version = "0.6.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/gited-0.6.0.tar";
+          sha256 = "187asqrxfpxv53hhnrcid1sy46vcy07qx5yqgnrczi54jpcc57j5";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/gited.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    gle-mode = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "gle-mode";
+        ename = "gle-mode";
+        version = "1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/gle-mode-1.1.el";
+          sha256 = "0p9glalhkf8i4486pjwvrb9z4lqxl6jcqfk6jrjl6b1xi72xmdi0";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/gle-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    gnome-c-style = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "gnome-c-style";
+        ename = "gnome-c-style";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/gnome-c-style-0.1.tar";
+          sha256 = "09w68jbpzyyhcaqw335qpr840j7xx0j81zxxkxq4ahqv6ck27v4x";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/gnome-c-style.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    gnorb = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "gnorb";
+        ename = "gnorb";
+        version = "1.6.7";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/gnorb-1.6.7.tar";
+          sha256 = "17pz6i51z298rk7j3rraw1gxlssn88yi4bbpzyxv9cs7y1lfy8ld";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/gnorb.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    gnu-elpa = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "gnu-elpa";
+        ename = "gnu-elpa";
+        version = "1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/gnu-elpa-1.1.tar";
+          sha256 = "0b0law1xwwqa42wb09b3w73psq2kx16lkiwxjxl0sshjcmarhv8r";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/gnu-elpa.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    gnu-elpa-keyring-update = callPackage ({ elpaBuild
+                                           , fetchurl
+                                           , lib }:
+      elpaBuild {
+        pname = "gnu-elpa-keyring-update";
+        ename = "gnu-elpa-keyring-update";
+        version = "2019.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/gnu-elpa-keyring-update-2019.3.tar";
+          sha256 = "1zw65kag25abimg088m4h8vj2nd4y5nc4qal6fsda0dldckfv1w0";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/gnu-elpa-keyring-update.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    gnugo = callPackage ({ ascii-art-to-unicode
+                         , cl-lib ? null
+                         , elpaBuild
+                         , fetchurl
+                         , lib
+                         , xpm }:
+      elpaBuild {
+        pname = "gnugo";
+        ename = "gnugo";
+        version = "3.1.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/gnugo-3.1.0.tar";
+          sha256 = "0xpjvs250gg71qwapdsb1hlc61gs0gpkjds01srf784fvyxx2gf1";
+        };
+        packageRequires = [ ascii-art-to-unicode cl-lib xpm ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/gnugo.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    gnus-mock = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "gnus-mock";
+        ename = "gnus-mock";
+        version = "0.4.5";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/gnus-mock-0.4.5.tar";
+          sha256 = "1hfh315vrxd54r2f1wpdfk06b7lhpab7knygav58vdwwdbndlqiz";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/gnus-mock.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    gpastel = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "gpastel";
+        ename = "gpastel";
+        version = "0.5.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/gpastel-0.5.0.el";
+          sha256 = "1wky6047071vgyyw2m929nbwg4d9qqp1mjqwk7a5rs8hfr4xqxfw";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/gpastel.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    greader = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "greader";
+        ename = "greader";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/greader-0.1.tar";
+          sha256 = "0mwhmidzv9vnmx6xls8pq4ra4m0f4yg677xgv34ivv34vsgg1mhb";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/greader.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    guess-language = callPackage ({ cl-lib ? null
+                                  , elpaBuild
+                                  , emacs
+                                  , fetchurl
+                                  , lib
+                                  , nadvice }:
+      elpaBuild {
+        pname = "guess-language";
+        ename = "guess-language";
+        version = "0.0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/guess-language-0.0.1.el";
+          sha256 = "11a6m2337j4ncppaf59yr2vavvvsph2qh51d12zmq58g9wh3d7wz";
+        };
+        packageRequires = [ cl-lib emacs nadvice ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/guess-language.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    heap = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "heap";
+        ename = "heap";
+        version = "0.5";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/heap-0.5.el";
+          sha256 = "13qv0w3fi87c85jcy7lv359r6rpsgnp5zzs2f2zq4dl3540wzrxg";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/heap.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    highlight-escape-sequences = callPackage ({ elpaBuild
+                                              , fetchurl
+                                              , lib }:
+      elpaBuild {
+        pname = "highlight-escape-sequences";
+        ename = "highlight-escape-sequences";
+        version = "0.4";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/highlight-escape-sequences-0.4.el";
+          sha256 = "1z8r9rnppn7iy7xv4kprfsqxday16h7c471i7rkyi3rv3l0pfxd0";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/highlight-escape-sequences.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    hook-helpers = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "hook-helpers";
+        ename = "hook-helpers";
+        version = "1.1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/hook-helpers-1.1.1.tar";
+          sha256 = "05nqlshdqh32smav58hzqg8wp04h7w9sxr239qrz4wqxwlxlv9im";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/hook-helpers.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    html5-schema = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "html5-schema";
+        ename = "html5-schema";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/html5-schema-0.1.tar";
+          sha256 = "19k1jal6j64zq78w8h0lw7cljivmp2jzs5sa1ppc0mqkpn2hyq1i";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/html5-schema.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    hydra = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "hydra";
+        ename = "hydra";
+        version = "0.14.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/hydra-0.14.0.tar";
+          sha256 = "1r2vl2cpzqzayfzc0bijigxc7c0mkgcv96g4p65gnw99jk8d78kb";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/hydra.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    hyperbole = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "hyperbole";
+        ename = "hyperbole";
+        version = "7.0.6";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/hyperbole-7.0.6.tar";
+          sha256 = "08gi4v76s53nfmn3s0qcxc3zii0pspjfd6ry7jq1kgm3z34x8hab";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/hyperbole.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    ioccur = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "ioccur";
+        ename = "ioccur";
+        version = "2.4";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/ioccur-2.4.el";
+          sha256 = "1isid3kgsi5qkz27ipvmp9v5knx0qigmv7lz12mqdkwv8alns1p9";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/ioccur.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    iterators = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "iterators";
+        ename = "iterators";
+        version = "0.1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/iterators-0.1.1.el";
+          sha256 = "1r2cz2n6cr6wal5pqiqi5pn28pams639czgrvd60xcqmlr3li3g5";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/iterators.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    ivy = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "ivy";
+        ename = "ivy";
+        version = "0.13.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/ivy-0.13.0.tar";
+          sha256 = "18r9vb9v7hvdkylchn436sgh7ji9avhry1whjip8zrn0c1bnqmk8";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/ivy.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    ivy-explorer = callPackage ({ elpaBuild, emacs, fetchurl, ivy, lib }:
+      elpaBuild {
+        pname = "ivy-explorer";
+        ename = "ivy-explorer";
+        version = "0.3.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/ivy-explorer-0.3.2.el";
+          sha256 = "0q9gy9w22hnq30bfmnpqknk0qc1rcbjcybpjgb8hnlldvcci95l7";
+        };
+        packageRequires = [ emacs ivy ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/ivy-explorer.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    javaimp = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "javaimp";
+        ename = "javaimp";
+        version = "0.7.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/javaimp-0.7.1.tar";
+          sha256 = "0i93akp9jhlpgbm454wkjhir8cbzhfjb97cxxlk8n4pgzbh481l3";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/javaimp.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    jgraph-mode = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "jgraph-mode";
+        ename = "jgraph-mode";
+        version = "1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/jgraph-mode-1.1.el";
+          sha256 = "0479irjz5r79x6ngl3lfkl1gqsmvcw8kn6285sm6nkn66m1dfs8l";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/jgraph-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    js2-mode = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "js2-mode";
+        ename = "js2-mode";
+        version = "20190219";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/js2-mode-20190219.tar";
+          sha256 = "0jgqs7cwykw5ihdq9wp5qc05y6br9gsyfiylqhjq43z59673chcc";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/js2-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    json-mode = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "json-mode";
+        ename = "json-mode";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/json-mode-0.1.el";
+          sha256 = "025bwpx7nc1qhdyf2yaqjdr6x1qr6q45776yvy427xdh4nbk054l";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/json-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    jsonrpc = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "jsonrpc";
+        ename = "jsonrpc";
+        version = "1.0.11";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/jsonrpc-1.0.11.el";
+          sha256 = "04cy1mqd6y8k5lcpg076szjk9av9345mmsnzzh6vgbcw3dcgbr23";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/jsonrpc.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    jumpc = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "jumpc";
+        ename = "jumpc";
+        version = "3.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/jumpc-3.0.el";
+          sha256 = "1vhggw3mzaq33al8f16jbg5qq5f95s8365is9qqyb8yq77gqym6a";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/jumpc.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    kmb = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "kmb";
+        ename = "kmb";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/kmb-0.1.el";
+          sha256 = "1wjfk28illfd5bkka3rlhhq59r0pad9zik1njlxym0ha8kbhzsj8";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/kmb.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    landmark = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "landmark";
+        ename = "landmark";
+        version = "1.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/landmark-1.0.el";
+          sha256 = "0mz1l9zc1nvggjhg4jcly8ncw38xkprlrha8l8vfl9k9rg7s1dv4";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/landmark.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    let-alist = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "let-alist";
+        ename = "let-alist";
+        version = "1.0.6";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/let-alist-1.0.6.el";
+          sha256 = "0szj7vnjzz4zci5fvz7xqgcpi4pzdyyf4qi2s8xar2hi7v3yaawr";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/let-alist.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    lex = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "lex";
+        ename = "lex";
+        version = "1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/lex-1.1.tar";
+          sha256 = "1i6ri3k2b2nginhnmwy67mdpv5p75jkxjfwbf42wymza8fxzwbb7";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/lex.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    lmc = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "lmc";
+        ename = "lmc";
+        version = "1.4";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/lmc-1.4.el";
+          sha256 = "0fm4sclx9gg0d0615smz105x320sk45y4ivpjk3nbc67c5l0sh2h";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/lmc.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    load-dir = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "load-dir";
+        ename = "load-dir";
+        version = "0.0.5";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/load-dir-0.0.5.el";
+          sha256 = "1575ipn155nzzb5yghblxc7v1vpq4i16w1ff7y56qw2498ligpc5";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/load-dir.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    load-relative = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "load-relative";
+        ename = "load-relative";
+        version = "1.3.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/load-relative-1.3.1.el";
+          sha256 = "1m37scr82lqqy954fchjxrmdh4lngrl4d1yzxhp3yfjhsydizhrj";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/load-relative.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    loc-changes = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "loc-changes";
+        ename = "loc-changes";
+        version = "1.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/loc-changes-1.2.el";
+          sha256 = "1x8fn8vqasayf1rb8a6nma9n6nbvkx60krmiahyb05vl5rrsw6r3";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/loc-changes.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    loccur = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "loccur";
+        ename = "loccur";
+        version = "1.2.4";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/loccur-1.2.4.el";
+          sha256 = "00f1ifa4z5ay90bd2002fmj83d7xqzrcr9018q8crlypmpxkyh7j";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/loccur.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    map = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "map";
+        ename = "map";
+        version = "2.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/map-2.1.el";
+          sha256 = "0ydz5w1n4vwhhzxxj003s7jv8n1wjijwfryk5z93bwhnr0cak0i0";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/map.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    markchars = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "markchars";
+        ename = "markchars";
+        version = "0.2.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/markchars-0.2.1.el";
+          sha256 = "0dpq3brblcxjkcqv3xsmlsx5z9zbv94v0kg4j1sic3brz6hbl4lk";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/markchars.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    math-symbol-lists = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "math-symbol-lists";
+        ename = "math-symbol-lists";
+        version = "1.2.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/math-symbol-lists-1.2.1.el";
+          sha256 = "015q44qg9snrpz04syz89f9f79pzg5h7w88nh84p38klynkx2f86";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/math-symbol-lists.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    memory-usage = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "memory-usage";
+        ename = "memory-usage";
+        version = "0.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/memory-usage-0.2.el";
+          sha256 = "03qwb7sprdh1avxv3g7hhnhl41pwvnpxcpnqrikl7picy78h1gwj";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/memory-usage.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    metar = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "metar";
+        ename = "metar";
+        version = "0.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/metar-0.3.el";
+          sha256 = "07gv0v0xwb5yzynwagmvf0n5c9wljy1jg4ympnxpa2d9r1zqc02g";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/metar.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    midi-kbd = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "midi-kbd";
+        ename = "midi-kbd";
+        version = "0.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/midi-kbd-0.2.el";
+          sha256 = "1783k07gyiaq784wqv8qqc89cw5d6q1bdqz68b7n1lx4vmvfrhmh";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/midi-kbd.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    mines = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "mines";
+        ename = "mines";
+        version = "1.6";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/mines-1.6.tar";
+          sha256 = "1199s1v4my0qpvc5aaxzbqayjn59vilxbqnywvyhvm7hz088aps2";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/mines.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    minibuffer-line = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "minibuffer-line";
+        ename = "minibuffer-line";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/minibuffer-line-0.1.el";
+          sha256 = "1ny4iirp26na5118wfgxlv6fxlrdclzdbd9m0lkrv51w0qw7spil";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/minibuffer-line.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    minimap = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "minimap";
+        ename = "minimap";
+        version = "1.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/minimap-1.3.el";
+          sha256 = "15azlmi6kk9pg1c4zrw952qsh9wq6ggqb4qqc84a7l67nhqb9bqp";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/minimap.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    mmm-mode = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "mmm-mode";
+        ename = "mmm-mode";
+        version = "0.5.7";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/mmm-mode-0.5.7.tar";
+          sha256 = "0c4azrkgagyfm9znh7hmw93gkvddpsxlr0dwjp96winymih7mahf";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/mmm-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    modus-operandi-theme = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "modus-operandi-theme";
+        ename = "modus-operandi-theme";
+        version = "0.8.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/modus-operandi-theme-0.8.1.el";
+          sha256 = "0i8s6blkhx53m1jk1bblqs7fwlbn57xkxxhsp9famcj5m0xyfimb";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/modus-operandi-theme.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    modus-vivendi-theme = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "modus-vivendi-theme";
+        ename = "modus-vivendi-theme";
+        version = "0.8.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/modus-vivendi-theme-0.8.1.el";
+          sha256 = "121nlr5w58j4q47rh9xjjf9wzb97yl2m1n2l6g58ck4vnarwndl1";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/modus-vivendi-theme.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    multishell = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "multishell";
+        ename = "multishell";
+        version = "1.1.5";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/multishell-1.1.5.tar";
+          sha256 = "0g38p5biyxqkjdkmxlikvhkhkmafyy3ibd012q83skaf8fi4cv1y";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/multishell.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    muse = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "muse";
+        ename = "muse";
+        version = "3.20.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/muse-3.20.2.tar";
+          sha256 = "0g2ff6x45x2k5dnkp31sk3bjj92jyhhnar7l5hzn8vp22l0rv8wn";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/muse.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    myers = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "myers";
+        ename = "myers";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/myers-0.1.el";
+          sha256 = "0yrxklkksj16cfbvwmdxjj43vngjd6q0fivib1xim3c9g3c9b670";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/myers.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    nadvice = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "nadvice";
+        ename = "nadvice";
+        version = "0.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/nadvice-0.3.el";
+          sha256 = "0gi3csnxbs8h7iy0scsl35sic3gv90swa89hhdjwb7qvpirfdcgw";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/nadvice.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    nameless = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "nameless";
+        ename = "nameless";
+        version = "1.0.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/nameless-1.0.2.el";
+          sha256 = "13c1payc46ry5bf8ia8cwqpshm2ya74fi5r4sxq5n410z5f0pgqx";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/nameless.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    names = callPackage ({ cl-lib ? null
+                         , elpaBuild
+                         , emacs
+                         , fetchurl
+                         , lib
+                         , nadvice }:
+      elpaBuild {
+        pname = "names";
+        ename = "names";
+        version = "20151201.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/names-20151201.0.tar";
+          sha256 = "13smsf039x4yd7pzvllgn1vz8lhkwghnhip9y2bka38vk37w912d";
+        };
+        packageRequires = [ cl-lib emacs nadvice ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/names.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    nhexl-mode = callPackage ({ cl-lib ? null
+                              , elpaBuild
+                              , emacs
+                              , fetchurl
+                              , lib }:
+      elpaBuild {
+        pname = "nhexl-mode";
+        ename = "nhexl-mode";
+        version = "1.5";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/nhexl-mode-1.5.el";
+          sha256 = "0qvxfg7sv4iqyjxzaim6b4v9k5hav36qd4vkf9jwzw6p5fri8w8d";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/nhexl-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    nlinum = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "nlinum";
+        ename = "nlinum";
+        version = "1.9";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/nlinum-1.9.el";
+          sha256 = "03zqlz58fvh4cpfl43h7py2fpnc7m37f1ys8zhrc511ccq9cwkdn";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/nlinum.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    notes-mode = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "notes-mode";
+        ename = "notes-mode";
+        version = "1.30";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/notes-mode-1.30.tar";
+          sha256 = "1aqivlfa0nk0y27gdv68k5rg3m5wschh8cw196a13qb7kaghk9r6";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/notes-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    ntlm = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "ntlm";
+        ename = "ntlm";
+        version = "2.1.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/ntlm-2.1.0.el";
+          sha256 = "01d0bcmh8a36qf871w6bc05kjk9bmnh843m9869xw06zyvqwg9mv";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/ntlm.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    num3-mode = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "num3-mode";
+        ename = "num3-mode";
+        version = "1.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/num3-mode-1.3.el";
+          sha256 = "0x2jpnzvpbj03pbmhsny5gygh63c4dbl4g3k0cfs3vh4qmp2dg6w";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/num3-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    oauth2 = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "oauth2";
+        ename = "oauth2";
+        version = "0.13";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/oauth2-0.13.el";
+          sha256 = "0y5nbdwxz2hfr09xgsqgyv60vgx0rsaisibcpkz00klvgg26w33r";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/oauth2.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    objed = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "objed";
+        ename = "objed";
+        version = "0.8.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/objed-0.8.3.tar";
+          sha256 = "1s38d6bvggdk5p45ww1jb4gxifzgjwgw1m6ar920nlg0j4fgbcvr";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/objed.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    olivetti = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "olivetti";
+        ename = "olivetti";
+        version = "1.7.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/olivetti-1.7.1.el";
+          sha256 = "1bk41bqri0ycpab46c7a6i5k3js1pm5k6d76y91mp3l2izy2bxwj";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/olivetti.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    omn-mode = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "omn-mode";
+        ename = "omn-mode";
+        version = "1.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/omn-mode-1.2.el";
+          sha256 = "0p7lmqabdcn625q9z7libn7q1b6mjc74bkic2kjhhckzvlfjk742";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/omn-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    on-screen = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "on-screen";
+        ename = "on-screen";
+        version = "1.3.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/on-screen-1.3.3.el";
+          sha256 = "0ga4hw23ki583li2z2hr7l6hk1nc2kdg4afndg06cm9jn158wza7";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/on-screen.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    org = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "org";
+        ename = "org";
+        version = "9.3.6";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/org-9.3.6.tar";
+          sha256 = "0jwpgfzjvf1hd3mx582pw86hysdryaqzp69hk6azi9kmq4bzk87d";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/org.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    org-edna = callPackage ({ elpaBuild, emacs, fetchurl, lib, org, seq }:
+      elpaBuild {
+        pname = "org-edna";
+        ename = "org-edna";
+        version = "1.1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/org-edna-1.1.1.tar";
+          sha256 = "1hfkdjbjnhbwb27vgs43ywl4kn2lqc037f4xppp2v0s97850za8r";
+        };
+        packageRequires = [ emacs org seq ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/org-edna.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    orgalist = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "orgalist";
+        ename = "orgalist";
+        version = "1.12";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/orgalist-1.12.el";
+          sha256 = "1hwm7j0hbv2pg9w885ky1c9qga3grcfq8v216jv2ivkw8xzavysd";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/orgalist.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    osc = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "osc";
+        ename = "osc";
+        version = "0.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/osc-0.2.el";
+          sha256 = "1b1ck9kb9mkyd7nlj4cqahsshar6h8mpvqss6n3dp4cl3r6dk1sw";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/osc.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    other-frame-window = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "other-frame-window";
+        ename = "other-frame-window";
+        version = "1.0.6";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/other-frame-window-1.0.6.el";
+          sha256 = "04h0jr73xv8inm52h8b8zbc9lsnlzkn40qy99x4x0lkkdqqxw1ny";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/other-frame-window.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    pabbrev = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "pabbrev";
+        ename = "pabbrev";
+        version = "4.2.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/pabbrev-4.2.1.el";
+          sha256 = "19v5adk61y8fpigw7k6wz6dj79jwr450hnbi7fj0jvb21cvjmfxh";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/pabbrev.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    paced = callPackage ({ async, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "paced";
+        ename = "paced";
+        version = "1.1.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/paced-1.1.3.tar";
+          sha256 = "1gaszf68h0nnv6p6yzv48m24csw6v479nsq0f02y6slixxaflnwl";
+        };
+        packageRequires = [ async emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/paced.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    parsec = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "parsec";
+        ename = "parsec";
+        version = "0.1.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/parsec-0.1.3.tar";
+          sha256 = "032m9iks5a05vbc4159dfs9b7shmqm6mk05jgbs9ndvy400drwd6";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/parsec.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    path-iterator = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "path-iterator";
+        ename = "path-iterator";
+        version = "1.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/path-iterator-1.0.tar";
+          sha256 = "0kgl7rhv9x23jyr6ahfy6ql447zpz9fnmfwldkpn69g7jdx6a3cc";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/path-iterator.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    peg = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "peg";
+        ename = "peg";
+        version = "1.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/peg-1.0.tar";
+          sha256 = "0skr5dz9k34r409hisnj37n1b7n62l3md0glnfx578xkbmxlpcxl";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/peg.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    persist = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "persist";
+        ename = "persist";
+        version = "0.4";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/persist-0.4.tar";
+          sha256 = "0gpxy41qawzss2526j9a7lys60vqma1lvamn4bfabwza7gfhac0q";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/persist.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    phps-mode = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "phps-mode";
+        ename = "phps-mode";
+        version = "0.3.48";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/phps-mode-0.3.48.tar";
+          sha256 = "1mnbrsgh6lx7kgkfsfq5zk78a97iwh8mxgxzyf1zq4jj6ziwd6bv";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/phps-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    pinentry = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "pinentry";
+        ename = "pinentry";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/pinentry-0.1.el";
+          sha256 = "0iiw11prk4w32czk69mvc3x6ja9xbhbvpg9b0nidrsg5njjjh76d";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/pinentry.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    poker = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "poker";
+        ename = "poker";
+        version = "0.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/poker-0.2.el";
+          sha256 = "0sikspimvnzvwhyivi1gvr0630zz2pr3q2fwagl57iv06jas9f00";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/poker.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    posframe = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "posframe";
+        ename = "posframe";
+        version = "0.7.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/posframe-0.7.0.el";
+          sha256 = "1kwl83jb5k1hnx0s2qw972v0gjqbbvk4sdcdb1qbdxsyw36sylc9";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/posframe.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    project = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "project";
+        ename = "project";
+        version = "0.1.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/project-0.1.2.el";
+          sha256 = "0713hwim1chf6lxpg1rb234aa1gj92c153fjlc4jddp6dzzgn50d";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/project.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    psgml = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "psgml";
+        ename = "psgml";
+        version = "1.3.4";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/psgml-1.3.4.tar";
+          sha256 = "1pgg9g040zsnvilvmwa73wyrvv9xh7gf6w1rkcx57qzg7yq4yaaj";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/psgml.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    python = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "python";
+        ename = "python";
+        version = "0.26.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/python-0.26.1.el";
+          sha256 = "1dpw2w2nk6ggr8pz293qysjkiya3i7k25i447fbycjil59anzpb3";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/python.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    quarter-plane = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "quarter-plane";
+        ename = "quarter-plane";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/quarter-plane-0.1.el";
+          sha256 = "0hj3asdzf05h8j1fsxx9y71arnprg2xwk2dcb81zj04hzggzpwmm";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/quarter-plane.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    queue = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "queue";
+        ename = "queue";
+        version = "0.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/queue-0.2.el";
+          sha256 = "0cx2848sqnnkkr4zisvqadzxngjyhmb36mh0q3if7q19yjjhmrkb";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/queue.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    rainbow-mode = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "rainbow-mode";
+        ename = "rainbow-mode";
+        version = "1.0.4";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/rainbow-mode-1.0.4.el";
+          sha256 = "0rp76gix1ph1wrmdax6y2m3i9y1dmgv7ikjz8xsl5lizkygsy9cg";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/rainbow-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    rbit = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "rbit";
+        ename = "rbit";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/rbit-0.1.el";
+          sha256 = "0h0f9jx4xmkbyxk39wibrvnj65b1ylkz4sk4np7qcavfjs6dz3lm";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/rbit.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    rcirc-color = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "rcirc-color";
+        ename = "rcirc-color";
+        version = "0.4.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/rcirc-color-0.4.1.el";
+          sha256 = "1zs3i3xr8zbjr8hzr1r1qx7mqb2wckpn25qh9444c9as2dnh9sn9";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/rcirc-color.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    rcirc-menu = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "rcirc-menu";
+        ename = "rcirc-menu";
+        version = "1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/rcirc-menu-1.1.el";
+          sha256 = "0w77qlwlmx59v5894i96fldn6x4lliv4ddv8967vq1kfchn4w5mc";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/rcirc-menu.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    realgud = callPackage ({ elpaBuild
+                           , emacs
+                           , fetchurl
+                           , lib
+                           , load-relative
+                           , loc-changes
+                           , test-simple }:
+      elpaBuild {
+        pname = "realgud";
+        ename = "realgud";
+        version = "1.5.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/realgud-1.5.1.tar";
+          sha256 = "01155sydricdvxy3djk64w2zc6x0q4j669bvz8m8rd766wsmida8";
+        };
+        packageRequires = [ emacs load-relative loc-changes test-simple ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/realgud.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    realgud-ipdb = callPackage ({ elpaBuild
+                                , emacs
+                                , fetchurl
+                                , lib
+                                , load-relative
+                                , realgud }:
+      elpaBuild {
+        pname = "realgud-ipdb";
+        ename = "realgud-ipdb";
+        version = "1.0.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/realgud-ipdb-1.0.0.tar";
+          sha256 = "1ljh2igm6na92jdvnn4f51019v3klc6k03nayxf6qxzaxwq2w254";
+        };
+        packageRequires = [ emacs load-relative realgud ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/realgud-ipdb.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    realgud-jdb = callPackage ({ cl-lib ? null
+                               , elpaBuild
+                               , emacs
+                               , fetchurl
+                               , lib
+                               , load-relative
+                               , realgud }:
+      elpaBuild {
+        pname = "realgud-jdb";
+        ename = "realgud-jdb";
+        version = "1.0.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/realgud-jdb-1.0.0.tar";
+          sha256 = "081lqsxbg6cxv8hz8s0z2gbdif9drp5b0crbixmwf164i4h8l4gc";
+        };
+        packageRequires = [ cl-lib emacs load-relative realgud ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/realgud-jdb.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    realgud-lldb = callPackage ({ elpaBuild
+                                , emacs
+                                , fetchurl
+                                , lib
+                                , load-relative
+                                , realgud }:
+      elpaBuild {
+        pname = "realgud-lldb";
+        ename = "realgud-lldb";
+        version = "1.0.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/realgud-lldb-1.0.2.tar";
+          sha256 = "0nqbvknhvw5lwf4i44q8wvh4y4s9mvs5kn7lskg3xicl464ag1d0";
+        };
+        packageRequires = [ emacs load-relative realgud ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/realgud-lldb.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    realgud-node-debug = callPackage ({ cl-lib ? null
+                                      , elpaBuild
+                                      , emacs
+                                      , fetchurl
+                                      , lib
+                                      , load-relative
+                                      , realgud }:
+      elpaBuild {
+        pname = "realgud-node-debug";
+        ename = "realgud-node-debug";
+        version = "1.0.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/realgud-node-debug-1.0.0.tar";
+          sha256 = "1wyh6apy289a3qa1bnwv68x8pjkpqy4m18ygqnr4x759hjkq3nir";
+        };
+        packageRequires = [ cl-lib emacs load-relative realgud ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/realgud-node-debug.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    realgud-node-inspect = callPackage ({ cl-lib ? null
+                                        , elpaBuild
+                                        , emacs
+                                        , fetchurl
+                                        , lib
+                                        , load-relative
+                                        , realgud }:
+      elpaBuild {
+        pname = "realgud-node-inspect";
+        ename = "realgud-node-inspect";
+        version = "1.0.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/realgud-node-inspect-1.0.0.tar";
+          sha256 = "16cx0rq4zx5k0y75j044dbqzrzs1df3r95rissmhfgsi5m2qf1h2";
+        };
+        packageRequires = [ cl-lib emacs load-relative realgud ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/realgud-node-inspect.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    realgud-trepan-ni = callPackage ({ cl-lib ? null
+                                     , elpaBuild
+                                     , emacs
+                                     , fetchurl
+                                     , lib
+                                     , load-relative
+                                     , realgud }:
+      elpaBuild {
+        pname = "realgud-trepan-ni";
+        ename = "realgud-trepan-ni";
+        version = "1.0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/realgud-trepan-ni-1.0.1.tar";
+          sha256 = "0vakfzlk4pgqi66mdvwqhzgdsnks6clgnj7cjjbi80v3ipkfdnak";
+        };
+        packageRequires = [ cl-lib emacs load-relative realgud ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/realgud-trepan-ni.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    register-list = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "register-list";
+        ename = "register-list";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/register-list-0.1.el";
+          sha256 = "1azgfm4yvhp2bqqplmfbz1fij8gda527lks82bslnpnabd8m6sjh";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/register-list.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    relint = callPackage ({ elpaBuild, emacs, fetchurl, lib, xr }:
+      elpaBuild {
+        pname = "relint";
+        ename = "relint";
+        version = "1.17";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/relint-1.17.tar";
+          sha256 = "1nv13dqdhf72c1jgk1ml4k6jqb8wsyphcx2vhsyhig5198lg4kd7";
+        };
+        packageRequires = [ emacs xr ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/relint.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    rich-minority = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "rich-minority";
+        ename = "rich-minority";
+        version = "1.0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/rich-minority-1.0.1.el";
+          sha256 = "1pr89k3jz044vf582klphl1zf0r7hj2g7ga8j1dwbrpr9ngiicgc";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/rich-minority.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    rnc-mode = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "rnc-mode";
+        ename = "rnc-mode";
+        version = "0.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/rnc-mode-0.2.el";
+          sha256 = "0xhvcfqjkb010wc7r218xcjidv1c8597vayyv09vk97z4qxqkrbd";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/rnc-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    rudel = callPackage ({ cl-generic
+                         , cl-lib ? null
+                         , cl-print
+                         , elpaBuild
+                         , emacs
+                         , fetchurl
+                         , lib }:
+      elpaBuild {
+        pname = "rudel";
+        ename = "rudel";
+        version = "0.3.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/rudel-0.3.1.tar";
+          sha256 = "0glqa68g509p0s2vcc0i8kzlddnc9brd9jqhnm5rzxz4i050cvnz";
+        };
+        packageRequires = [ cl-generic cl-lib cl-print emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/rudel.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    scanner = callPackage ({ dash, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "scanner";
+        ename = "scanner";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/scanner-0.1.tar";
+          sha256 = "0hv4w7yzfdnz8vrfhw6i6agj9hs09vzsqr63nrp6dd93q0gk71mw";
+        };
+        packageRequires = [ dash emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/scanner.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    scroll-restore = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "scroll-restore";
+        ename = "scroll-restore";
+        version = "1.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/scroll-restore-1.0.el";
+          sha256 = "0h55szlmkmzmcvd6gvv8l74n7y64i0l78nwwmq7xsbzprlmj6khn";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/scroll-restore.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    sed-mode = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "sed-mode";
+        ename = "sed-mode";
+        version = "1.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/sed-mode-1.0.el";
+          sha256 = "1zpdai5k9zhy5hw0a5zx7qv3rcf8cn29hncfjnhk9k6sjq0302lg";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/sed-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    seq = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "seq";
+        ename = "seq";
+        version = "2.20";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/seq-2.20.tar";
+          sha256 = "0vrpx6nnyjb0gsypknzagimlhvcvi5y1rcdkpxyqr42415zr8d0n";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/seq.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    shelisp = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "shelisp";
+        ename = "shelisp";
+        version = "0.9.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/shelisp-0.9.1.el";
+          sha256 = "15z8rpx8nhx53q77z5fqcpww255di80lb5mm28mnn2myalrr8b59";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/shelisp.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    shen-mode = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "shen-mode";
+        ename = "shen-mode";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/shen-mode-0.1.tar";
+          sha256 = "1dr24kkah4hr6vrfxwhl9vzjnwn4n773bw23c3j9bkmlgnbvn0kz";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/shen-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    sisu-mode = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "sisu-mode";
+        ename = "sisu-mode";
+        version = "7.1.8";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/sisu-mode-7.1.8.el";
+          sha256 = "12zs6y4rzng1d7djl9wh3wc0f9fj0bqb7h754rvixvndlr5c10nj";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/sisu-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    sm-c-mode = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "sm-c-mode";
+        ename = "sm-c-mode";
+        version = "1.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/sm-c-mode-1.0.el";
+          sha256 = "1lq65dhcvrh6ybla37lvni7wmbjb5nhm75ja9cl79148da1zrg91";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/sm-c-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    smalltalk-mode = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "smalltalk-mode";
+        ename = "smalltalk-mode";
+        version = "3.2.92";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/smalltalk-mode-3.2.92.tar";
+          sha256 = "0zlp1pk88m1gybhnvcmm0bhrj6zvnjzhc26r1i4d56pyh6vwivfj";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/smalltalk-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    smart-yank = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "smart-yank";
+        ename = "smart-yank";
+        version = "0.1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/smart-yank-0.1.1.el";
+          sha256 = "1v7hbn8pl4bzal31m132dn04rgsgjjcc7k2knd1jqzk1wq6azpdn";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/smart-yank.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    sml-mode = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "sml-mode";
+        ename = "sml-mode";
+        version = "6.10";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/sml-mode-6.10.el";
+          sha256 = "01yf0s474r9xhj6nbs14ljn9ccxb5yy758i17c8nmgmqvm8fx7sb";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/sml-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    soap-client = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "soap-client";
+        ename = "soap-client";
+        version = "3.1.5";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/soap-client-3.1.5.tar";
+          sha256 = "0nnf075ywxmsfd6vmzk2yg3khx6sycl5l6qrgp5rqqmw0wzhxlh0";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/soap-client.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    sokoban = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "sokoban";
+        ename = "sokoban";
+        version = "1.4.8";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/sokoban-1.4.8.tar";
+          sha256 = "1w3vrkg239x1saqka21zbl380fxqmbz3lr7820spxd8p5w9v55pn";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/sokoban.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    sotlisp = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "sotlisp";
+        ename = "sotlisp";
+        version = "1.6.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/sotlisp-1.6.2.el";
+          sha256 = "05cr4dmhg4wbmw7jbcfh0yrnbq6dhzp2wrbzvhwrfznz51j03nhi";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/sotlisp.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    spinner = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "spinner";
+        ename = "spinner";
+        version = "1.7.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/spinner-1.7.3.el";
+          sha256 = "19kp1mmndbmw11sgvv2ggfjl4pyf5zrsbh3871f0965pw9z8vahd";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/spinner.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    sql-indent = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "sql-indent";
+        ename = "sql-indent";
+        version = "1.5";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/sql-indent-1.5.tar";
+          sha256 = "07k5rn9hbxppnka7nq0a3a6zyqqa1hp8j6qrb344js6zyak0cb63";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/sql-indent.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    ssh-deploy = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "ssh-deploy";
+        ename = "ssh-deploy";
+        version = "3.1.11";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/ssh-deploy-3.1.11.tar";
+          sha256 = "1xd09kfn7lqw6jzfkrn0p5agdpcz1z9zbazqigylpqfcywr5snhk";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/ssh-deploy.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    stream = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "stream";
+        ename = "stream";
+        version = "2.2.5";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/stream-2.2.5.tar";
+          sha256 = "00c3n4gyxzv7vczqms0d62kl8zsmjfyxa92mwxn2snyx857a9jfw";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/stream.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    svg = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "svg";
+        ename = "svg";
+        version = "1.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/svg-1.0.el";
+          sha256 = "1hh0x7sz2rqb7zdhcm2q9knr8nnwqrsbz1zfp29k8l1318li9f62";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/svg.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    svg-clock = callPackage ({ elpaBuild, emacs, fetchurl, lib, svg }:
+      elpaBuild {
+        pname = "svg-clock";
+        ename = "svg-clock";
+        version = "1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/svg-clock-1.1.el";
+          sha256 = "12wf4dd3vgbq1v3363cil4wr2skx60xy546jc69ycyk0jq7plcq3";
+        };
+        packageRequires = [ emacs svg ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/svg-clock.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    system-packages = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "system-packages";
+        ename = "system-packages";
+        version = "1.0.11";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/system-packages-1.0.11.tar";
+          sha256 = "0xf2q5bslxpw0wycgi2k983lnfpw182rgdzq0f99f64kb7ifns9y";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/system-packages.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    tNFA = callPackage ({ elpaBuild, fetchurl, lib, queue }:
+      elpaBuild {
+        pname = "tNFA";
+        ename = "tNFA";
+        version = "0.1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/tNFA-0.1.1.el";
+          sha256 = "01n4p8lg8f2k55l2z77razb2sl202qisjqm5lff96a2kxnxinsds";
+        };
+        packageRequires = [ queue ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/tNFA.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    temp-buffer-browse = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "temp-buffer-browse";
+        ename = "temp-buffer-browse";
+        version = "1.5";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/temp-buffer-browse-1.5.el";
+          sha256 = "1drfvqxc6g4vfijmx787b1ygq7x2s5wq26l45qnz4wdrqqmcqx3c";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/temp-buffer-browse.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    test-simple = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "test-simple";
+        ename = "test-simple";
+        version = "1.3.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/test-simple-1.3.0.el";
+          sha256 = "1yd61jc9ds95a5n09052kwc5gasy57g4lxr0jsff040brlyi9czz";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/test-simple.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    timerfunctions = callPackage ({ cl-lib ? null
+                                  , elpaBuild
+                                  , emacs
+                                  , fetchurl
+                                  , lib }:
+      elpaBuild {
+        pname = "timerfunctions";
+        ename = "timerfunctions";
+        version = "1.4.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/timerfunctions-1.4.2.el";
+          sha256 = "122q8nv08pz1mkgilvi9qfrs7rsnc5picr7jyz2jpnvpd9qw6jw5";
+        };
+        packageRequires = [ cl-lib emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/timerfunctions.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    tiny = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "tiny";
+        ename = "tiny";
+        version = "0.2.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/tiny-0.2.1.tar";
+          sha256 = "1cr73a8gba549ja55x0c2s554f3zywf69zbnd7v82jz5q1k9wd2v";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/tiny.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    tramp = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "tramp";
+        ename = "tramp";
+        version = "2.4.3.4";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/tramp-2.4.3.4.tar";
+          sha256 = "01il42xb6s38qnb7bhn9d7gscc5p5y4da5a4dp1i1cyi823sfp8f";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/tramp.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    tramp-theme = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "tramp-theme";
+        ename = "tramp-theme";
+        version = "0.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/tramp-theme-0.2.el";
+          sha256 = "1q1j0vcdyv5gnfbnfl08rnwd5j4ayc1gi1vpinr99ny70wsv7gbf";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/tramp-theme.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    transcribe = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "transcribe";
+        ename = "transcribe";
+        version = "1.5.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/transcribe-1.5.2.el";
+          sha256 = "08m1n6adab46bfywm47gygswf10vnxcfh16yjxglvcsg4prkn2vh";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/transcribe.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    trie = callPackage ({ elpaBuild, fetchurl, heap, lib, tNFA }:
+      elpaBuild {
+        pname = "trie";
+        ename = "trie";
+        version = "0.4";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/trie-0.4.el";
+          sha256 = "0869fh3bghxil94wd9vgbb5bk1hx2qkh75vbvp0psmcima8dgzgw";
+        };
+        packageRequires = [ heap tNFA ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/trie.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    undo-tree = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "undo-tree";
+        ename = "undo-tree";
+        version = "0.7.4";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/undo-tree-0.7.4.el";
+          sha256 = "018ixl802f076sfyf4gkacpgrdpybin88jd8vq9zgyvc6x2dalfa";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/undo-tree.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    uni-confusables = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "uni-confusables";
+        ename = "uni-confusables";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/uni-confusables-0.1.tar";
+          sha256 = "0s3scvzhd4bggk0qafcspf97cmcvdw3w8bbf5ark4p22knvg80zp";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/uni-confusables.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    uniquify-files = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "uniquify-files";
+        ename = "uniquify-files";
+        version = "1.0.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/uniquify-files-1.0.3.tar";
+          sha256 = "04yfys615ncz3jyh3hx5sg6x6szx028223184zv52skb4j99vkwq";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/uniquify-files.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    url-http-ntlm = callPackage ({ cl-lib ? null
+                                 , elpaBuild
+                                 , fetchurl
+                                 , lib
+                                 , ntlm ? null }:
+      elpaBuild {
+        pname = "url-http-ntlm";
+        ename = "url-http-ntlm";
+        version = "2.0.4";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/url-http-ntlm-2.0.4.el";
+          sha256 = "1cakq2ykraci7d1gl8rnpv4f2f5ffyaidhqb1282g7i72adwmb98";
+        };
+        packageRequires = [ cl-lib ntlm ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/url-http-ntlm.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    validate = callPackage ({ cl-lib ? null
+                            , elpaBuild
+                            , emacs
+                            , fetchurl
+                            , lib
+                            , seq }:
+      elpaBuild {
+        pname = "validate";
+        ename = "validate";
+        version = "1.0.4";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/validate-1.0.4.el";
+          sha256 = "0vksssk98hcnz804g62k8kika13argf6p7bx8rf9hwidvzdsv6mi";
+        };
+        packageRequires = [ cl-lib emacs seq ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/validate.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    vcard = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "vcard";
+        ename = "vcard";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/vcard-0.1.tar";
+          sha256 = "1awcm2s292r2nkyz5bwjaga46jsh5rn92469wrg1ag843mlyxbd0";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/vcard.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    vcl-mode = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "vcl-mode";
+        ename = "vcl-mode";
+        version = "1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/vcl-mode-1.1.el";
+          sha256 = "1r70pmvr95k5f2xphvhliqvyh7al0qabm7wvkamximcssvs38q1h";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/vcl-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    vdiff = callPackage ({ elpaBuild, emacs, fetchurl, hydra, lib }:
+      elpaBuild {
+        pname = "vdiff";
+        ename = "vdiff";
+        version = "0.2.3";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/vdiff-0.2.3.el";
+          sha256 = "197wszzhm2kbfvvlg3f0dzfs3lf4536yq5fd67k2rycj421fr9qz";
+        };
+        packageRequires = [ emacs hydra ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/vdiff.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    verilog-mode = callPackage ({ elpaBuild
+                                , fetchurl
+                                , lib }:
+      elpaBuild {
+        pname = "verilog-mode";
+        ename = "verilog-mode";
+        version = "2020.2.23.232634261";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/verilog-mode-2020.2.23.232634261.el";
+          sha256 = "07r2nzyfwmpv1299q1v768ai14rdgq7y4bvz5xsnp4qj3g06p0f6";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/verilog-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    vigenere = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "vigenere";
+        ename = "vigenere";
+        version = "1.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/vigenere-1.0.el";
+          sha256 = "1i5s6h1nngcp74gf53dw9pvj5y0ywk9j8pyvkfr7gqq49bz22hmm";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/vigenere.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    visual-filename-abbrev = callPackage ({ elpaBuild
+                                          , emacs
+                                          , fetchurl
+                                          , lib }:
+      elpaBuild {
+        pname = "visual-filename-abbrev";
+        ename = "visual-filename-abbrev";
+        version = "1.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/visual-filename-abbrev-1.0.el";
+          sha256 = "086cmyv08jd3qadjrd14b7c932i8msxjdvxxa36pyac18d3i50kj";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/visual-filename-abbrev.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    visual-fill = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "visual-fill";
+        ename = "visual-fill";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/visual-fill-0.1.el";
+          sha256 = "1y4xqcr1am74y9jy7kdkjigvx7h3208si5lm4p6a0kzxa3xizhvx";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/visual-fill.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    vlf = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "vlf";
+        ename = "vlf";
+        version = "1.7.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/vlf-1.7.1.tar";
+          sha256 = "0cnwxk20573iqkwk0c0h7pyjk0rkr8l2qd0xmyqj8mvdxjb8nnkz";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/vlf.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    w3 = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "w3";
+        ename = "w3";
+        version = "4.0.49";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/w3-4.0.49.tar";
+          sha256 = "01n334b3gwx288xysa1vxsvb14avsz3syfigw85i7m5nizhikqbb";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/w3.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    wcheck-mode = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "wcheck-mode";
+        ename = "wcheck-mode";
+        version = "2019.6.17";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/wcheck-mode-2019.6.17.el";
+          sha256 = "0579a3p9swq0j0fca9s885kzv69y9lhhnqa6m4pzdgrr6pfrirqv";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/wcheck-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    wconf = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "wconf";
+        ename = "wconf";
+        version = "0.2.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/wconf-0.2.1.el";
+          sha256 = "13p1xycp3mcrg8jv65mcyqvln4h7awhjz35dzr5bi86zb824ryxf";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/wconf.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    web-server = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "web-server";
+        ename = "web-server";
+        version = "0.1.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/web-server-0.1.2.tar";
+          sha256 = "10lcsl4dg2yr9zjd99gq9jz150wvvh6r5y9pd88l8y9vz16f2lim";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/web-server.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    webfeeder = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "webfeeder";
+        ename = "webfeeder";
+        version = "1.0.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/webfeeder-1.0.0.tar";
+          sha256 = "06y5vxw9m6pmbrzb8v2i3w9dnhgqxz06vyx1knmgi9cczlrj4a64";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/webfeeder.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    websocket = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "websocket";
+        ename = "websocket";
+        version = "1.12";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/websocket-1.12.tar";
+          sha256 = "0ap4z80c6pzpb69wrx0hsvwzignxmd2b9xy974by9gf5xm2wpa8w";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/websocket.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    which-key = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "which-key";
+        ename = "which-key";
+        version = "3.3.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/which-key-3.3.0.tar";
+          sha256 = "0436hvqdn2jafgfwdr0m9mwz8k2swl661xnrkypyrwg66j9wi1qz";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/which-key.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    windower = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "windower";
+        ename = "windower";
+        version = "0.0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/windower-0.0.1.el";
+          sha256 = "19xizbfbnzhhmhlqy20ir1a1y87bjwrq67bcawxy6nxpkwbizsv7";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/windower.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    windresize = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "windresize";
+        ename = "windresize";
+        version = "0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/windresize-0.1.el";
+          sha256 = "0b5bfs686nkp7s05zgfqvr1mpagmkd74j1grq8kp2w9arj0qfi3x";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/windresize.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    wisi = callPackage ({ elpaBuild, emacs, fetchurl, lib, seq }:
+      elpaBuild {
+        pname = "wisi";
+        ename = "wisi";
+        version = "3.1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/wisi-3.1.1.tar";
+          sha256 = "0abm9xfyk2izi0w9172sfhdq83abcxgbngngbh2gby54df0ycn0q";
+        };
+        packageRequires = [ emacs seq ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/wisi.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    wisitoken-grammar-mode = callPackage ({ elpaBuild
+                                          , emacs
+                                          , fetchurl
+                                          , lib
+                                          , mmm-mode
+                                          , wisi }:
+      elpaBuild {
+        pname = "wisitoken-grammar-mode";
+        ename = "wisitoken-grammar-mode";
+        version = "1.1.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/wisitoken-grammar-mode-1.1.0.tar";
+          sha256 = "123z9j76cm0p22d9n4kqvn2477fdkgp5jarw564nd71cxrrb52ms";
+        };
+        packageRequires = [ emacs mmm-mode wisi ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/wisitoken-grammar-mode.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    wpuzzle = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "wpuzzle";
+        ename = "wpuzzle";
+        version = "1.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/wpuzzle-1.1.el";
+          sha256 = "1wjg411dc0fvj2n8ak73igfrzc31nizzvvr2qa87fhq99bgh62kj";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/wpuzzle.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    xclip = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "xclip";
+        ename = "xclip";
+        version = "1.10";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/xclip-1.10.el";
+          sha256 = "0i3i9kwfg8qmhcmqhhnrb1kljgwkccv63s9q1mjwqfjldyfh8j8i";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/xclip.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    xelb = callPackage ({ cl-generic, elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "xelb";
+        ename = "xelb";
+        version = "0.18";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/xelb-0.18.tar";
+          sha256 = "1fp5mzl63sh0h3ws4l5p4qgvi7ny8a3fj6k4dhqa98xgw2bx03v7";
+        };
+        packageRequires = [ cl-generic emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/xelb.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    xpm = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "xpm";
+        ename = "xpm";
+        version = "1.0.4";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/xpm-1.0.4.tar";
+          sha256 = "075miyashh9cm3b0gk6ngld3rm8bfgnh4qxnhxmmvjgzf6a64grh";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/xpm.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    xr = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
+      elpaBuild {
+        pname = "xr";
+        ename = "xr";
+        version = "1.19";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/xr-1.19.tar";
+          sha256 = "1aa3iqh0r635jw8k89zh8y4am9d4hfrqpk9mrdh2b51invjn8llq";
+        };
+        packageRequires = [ emacs ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/xr.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    xref = callPackage ({ elpaBuild, emacs, fetchurl, lib, project }:
+      elpaBuild {
+        pname = "xref";
+        ename = "xref";
+        version = "1.0.1";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/xref-1.0.1.el";
+          sha256 = "17wlwilm2d1gvin8mkkqnpw2skjx0klxfs1pqpy8rrzdfpsb55li";
+        };
+        packageRequires = [ emacs project ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/xref.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    yasnippet = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "yasnippet";
+        ename = "yasnippet";
+        version = "0.14.0";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/yasnippet-0.14.0.tar";
+          sha256 = "1lbil3dyz43nmr2lvx9vhpybqynpb7shg7m1xl1f7j4vm4dh0r08";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/yasnippet.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    yasnippet-classic-snippets = callPackage ({ elpaBuild
+                                              , fetchurl
+                                              , lib
+                                              , yasnippet }:
+      elpaBuild {
+        pname = "yasnippet-classic-snippets";
+        ename = "yasnippet-classic-snippets";
+        version = "1.0.2";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/yasnippet-classic-snippets-1.0.2.tar";
+          sha256 = "1kk1sf9kgj6qp3z2d9nbswigl444sqq11pdrhx0gny2jsgi3283l";
+        };
+        packageRequires = [ yasnippet ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/yasnippet-classic-snippets.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    zones = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "zones";
+        ename = "zones";
+        version = "2019.7.13";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/zones-2019.7.13.el";
+          sha256 = "0qp1ba2pkqx9d35g7z8hf8qs2k455krf2a92l4rka3ipsbnmq5k1";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/zones.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    ztree = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "ztree";
+        ename = "ztree";
+        version = "1.0.5";
+        src = fetchurl {
+          url = "https://elpa.gnu.org/packages/ztree-1.0.5.tar";
+          sha256 = "14pbbsyav1dzz8m8waqdcmcx9bhw5g8m2kh1ahpxc3i2lfhdan1x";
+        };
+        packageRequires = [ cl-lib ];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/ztree.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+  }
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/elpa-packages.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/elpa-packages.nix
new file mode 100644
index 000000000000..57f5d7b85941
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/elpa-packages.nix
@@ -0,0 +1,62 @@
+/*
+
+# Updating
+
+To update the list of packages from MELPA,
+
+1. Run `./update-elpa`.
+2. Check for evaluation errors: `nix-instantiate ../../../.. -A emacsPackagesNg.elpaPackages`.
+3. `git commit -m "elpa-packages $(date -Idate)" -- elpa-generated.nix`
+
+## Update from overlay
+
+Alternatively, run the following command:
+
+./update-from-overlay
+
+It will update both melpa and elpa packages using
+https://github.com/nix-community/emacs-overlay. It's almost
+instantenous and formats commits for you.
+
+*/
+
+{ lib, stdenv, texinfo }:
+
+self: let
+
+  markBroken = pkg: pkg.override {
+    elpaBuild = args: self.elpaBuild (args // {
+      meta = (args.meta or {}) // { broken = true; };
+    });
+  };
+
+  elpaBuild = import ../../../build-support/emacs/elpa.nix {
+    inherit lib stdenv texinfo;
+    inherit (self) emacs;
+  };
+
+  generateElpa = lib.makeOverridable ({
+    generated ? ./elpa-generated.nix
+  }: let
+
+    imported = import generated {
+      inherit (self) callPackage;
+    };
+
+    super = removeAttrs imported [ "dash" ];
+
+    overrides = {
+      rcirc-menu = markBroken super.rcirc-menu; # Missing file header
+      cl-lib = null; # builtin
+      tle = null; # builtin
+      advice = null; # builtin
+      seq = if lib.versionAtLeast self.emacs.version "27"
+            then null
+            else super.seq;
+    };
+
+    elpaPackages = super // overrides;
+
+  in elpaPackages // { inherit elpaBuild; });
+
+in generateElpa { }
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/emacs2nix.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/emacs2nix.nix
new file mode 100644
index 000000000000..852f395c4a22
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/emacs2nix.nix
@@ -0,0 +1,23 @@
+let
+  pkgs = import ../../../.. { };
+
+  src = pkgs.fetchgit {
+    url = "https://github.com/ttuegel/emacs2nix.git";
+    fetchSubmodules = true;
+    rev = "d4c52a7b22b0622aecf0b0d59941a4a2b250617c";
+    sha256 = "133m0bmm8ahy0jbappgcdjqppkpxf5s9wg4gg254afx3f7yfqzbh";
+  };
+
+in pkgs.mkShell {
+
+  buildInputs = [
+    pkgs.bash
+  ];
+
+  EMACS2NIX = src;
+
+  shellHook = ''
+    export PATH=$PATH:${src}
+  '';
+
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/emacspeak/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/emacspeak/default.nix
new file mode 100644
index 000000000000..f2ae3712cac4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/emacspeak/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, makeWrapper, emacs, tcl, tclx, espeak-ng, lib }:
+
+stdenv.mkDerivation rec {
+  pname = "emacspeak";
+  version = "51.0";
+
+  src = fetchurl {
+    url = "https://github.com/tvraman/emacspeak/releases/download/${version}/${pname}-${version}.tar.bz2";
+    sha256 = "09a0ywxlqa8jmc0wmvhaf7bdydnkyhy9nqfsdqcpbsgdzj6qpg90";
+  };
+
+  nativeBuildInputs = [ makeWrapper emacs ];
+  buildInputs = [ tcl tclx espeak-ng ];
+
+  preConfigure = ''
+    make config
+  '';
+
+  postBuild = ''
+    make -C servers/native-espeak PREFIX=$out "TCL_INCLUDE=${tcl}/include"
+  '';
+
+  postInstall = ''
+    make -C servers/native-espeak PREFIX=$out install
+    local d=$out/share/emacs/site-lisp/emacspeak/
+    install -d -- "$d"
+    cp -a .  "$d"
+    find "$d" \( -type d -or \( -type f -executable \) \) -execdir chmod 755 {} +
+    find "$d" -type f -not -executable -execdir chmod 644 {} +
+    makeWrapper ${emacs}/bin/emacs $out/bin/emacspeak \
+        --set DTK_PROGRAM "${espeak-ng}/bin/espeak" \
+        --add-flags '-l "${placeholder "out"}/share/emacs/site-lisp/emacspeak/lisp/emacspeak-setup.elc"'
+  '';
+
+  meta = {
+    homepage = "https://github.com/tvraman/emacspeak/";
+    description = "Emacs extension that provides spoken output";
+    license = lib.licenses.gpl2;
+    maintainers = [ ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/ess-R-object-popup/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/ess-R-object-popup/default.nix
new file mode 100644
index 000000000000..5beaed582407
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/ess-R-object-popup/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchgit }:
+
+stdenv.mkDerivation {
+  name = "ess-R-object-popup-20130302";
+
+  src = fetchgit {
+    url = "https://github.com/myuhe/ess-R-object-popup.el.git";
+    rev = "7e1f601bfba72de0fda44d9c82f96028ecbb9948";
+    sha256 = "0q8pbaa6wahli6fh0kng5zmnypsxi1fr2bzs2mfk3h8vf4nikpv0";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/emacs/site-lisp
+    cp *.el *.elc $out/share/emacs/site-lisp/
+  '';
+
+  meta = {
+    description = "Popup descriptions of R objects";
+    homepage = "https://github.com/myuhe/ess-R-object-popup.el";
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/font-lock-plus/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/font-lock-plus/default.nix
new file mode 100644
index 000000000000..fdb28f447192
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/font-lock-plus/default.nix
@@ -0,0 +1,19 @@
+{ fetchurl, lib, melpaBuild, writeText }:
+
+melpaBuild {
+  pname = "font-lock+";
+  version = "20180101.25";
+
+  src = fetchurl {
+    url = "https://www.emacswiki.org/emacs/download/font-lock%2b.el?revision=25";
+    sha256 = "0197yzn4hbjmw5h3m08264b7zymw63pdafph5f3yzfm50q8p7kp4";
+    name = "font-lock+.el";
+  };
+
+  recipe = writeText "recipe" "(font-lock+ :fetcher github :repo \"\")";
+
+  meta = {
+    homepage = "https://melpa.org/#/font-lock+";
+    license = lib.licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/helm-words/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/helm-words/default.nix
new file mode 100644
index 000000000000..00879463276c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/helm-words/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchgit }:
+
+stdenv.mkDerivation {
+  name = "helm-words-20190917";
+
+  src = fetchgit {
+    url = "https://github.com/pronobis/helm-words.git";
+    rev = "e6387ece1940a06695b9d910de3d90252efb8d29";
+    sha256 = "1ly0mbzlgc26fqvf7rxpmy698g0cf9qldrwrx022ar6r68l1h7xf";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/emacs/site-lisp
+    cp *.el *.elc $out/share/emacs/site-lisp/
+  '';
+
+  meta = {
+    description = "Emacs major mode for jade and stylus";
+    homepage = "https://github.com/brianc/helm-words";
+    license = stdenv.lib.licenses.gpl3;
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/hsc3/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/hsc3/default.nix
new file mode 100644
index 000000000000..6c2db85d7942
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/hsc3/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, emacs }:
+
+# this package installs the emacs-mode which
+# resides in the hsc3 sources.
+
+let version = "0.15";
+
+in stdenv.mkDerivation {
+  pname = "hsc3-mode";
+  inherit version;
+  src = fetchurl {
+    url = "mirror://hackage/hsc3-0.15/hsc3-0.15.tar.gz";
+    sha256 = "2f3b15655419cf8ebe25ab1c6ec22993b2589b4ffca7c3a75ce478ca78a0bde6";
+  };
+
+  buildInputs = [ emacs ];
+
+  installPhase = ''
+    mkdir -p "$out/share/emacs/site-lisp"
+    cp "emacs/hsc3.el" "$out/share/emacs/site-lisp"
+  '';
+
+  meta = {
+    homepage = "http://rd.slavepianos.org/?t=hsc3";
+    description = "hsc3 mode package for Emacs";
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/ido-ubiquitous/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/ido-ubiquitous/default.nix
new file mode 100644
index 000000000000..eaa0f2c2a5b1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/ido-ubiquitous/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, emacs }:
+
+let
+  version = "3.6-4-gb659bf8";
+in
+stdenv.mkDerivation {
+  pname = "ido-ubiquitous";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "DarwinAwardWinner";
+    repo = "ido-ubiquitous";
+    rev = version;
+    sha256 = "06r8qpfr60gc673w881m0nplj91b6bfw77bxgl6irz1z9bp7cc4y";
+  };
+
+  buildInputs = [ emacs ];
+
+  buildPhase = ''
+    emacs -L . --batch -f batch-byte-compile *.el
+  '';
+
+  installPhase = ''
+    install -d $out/share/emacs/site-lisp
+    install *.el *.elc $out/share/emacs/site-lisp
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/libgenerated.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/libgenerated.nix
new file mode 100644
index 000000000000..2ddafc4796c0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/libgenerated.nix
@@ -0,0 +1,95 @@
+lib: self:
+
+let
+
+    fetcherGenerators = { repo ? null
+                        , url ? null
+                        , ... }:
+                        { sha256
+                        , commit
+                        , ...}: {
+      github = self.callPackage ({ fetchFromGitHub }:
+        fetchFromGitHub {
+          owner = lib.head (lib.splitString "/" repo);
+          repo = lib.head (lib.tail (lib.splitString "/" repo));
+          rev = commit;
+          inherit sha256;
+        }
+      ) {};
+      gitlab = self.callPackage ({ fetchFromGitLab }:
+        fetchFromGitLab {
+          owner = lib.head (lib.splitString "/" repo);
+          repo = lib.head (lib.tail (lib.splitString "/" repo));
+          rev = commit;
+          inherit sha256;
+        }
+      ) {};
+      git = self.callPackage ({ fetchgit }:
+        (fetchgit {
+          rev = commit;
+          inherit sha256 url;
+        }).overrideAttrs(_: {
+          GIT_SSL_NO_VERIFY = true;
+        })
+      ) {};
+      bitbucket = self.callPackage ({ fetchhg }:
+        fetchhg {
+          rev = commit;
+          url = "https://bitbucket.com/${repo}";
+          inherit sha256;
+        }
+      ) {};
+      hg = self.callPackage ({ fetchhg }:
+        fetchhg {
+          rev = commit;
+          inherit sha256 url;
+        }
+      ) {};
+    };
+
+in {
+
+  melpaDerivation = variant:
+                      { ename, fetcher
+                      , commit ? null
+                      , sha256 ? null
+                      , ... }@args:
+      let
+        sourceArgs = args.${variant};
+        version = sourceArgs.version or null;
+        deps = sourceArgs.deps or null;
+        error = sourceArgs.error or args.error or null;
+        hasSource = lib.hasAttr variant args;
+        pname = builtins.replaceStrings [ "@" ] [ "at" ] ename;
+        broken = ! isNull error;
+      in
+      if hasSource then
+        lib.nameValuePair ename (
+          self.callPackage ({ melpaBuild, fetchurl, ... }@pkgargs:
+          melpaBuild {
+            inherit pname;
+            ename = ename;
+            version = if isNull version then "" else
+              lib.concatStringsSep "." (map toString version);
+            # TODO: Broken should not result in src being null (hack to avoid eval errors)
+            src = if (isNull sha256 || broken) then null else
+              lib.getAttr fetcher (fetcherGenerators args sourceArgs);
+            recipe = if isNull commit then null else
+              fetchurl {
+                name = pname + "-recipe";
+                url = "https://raw.githubusercontent.com/melpa/melpa/${commit}/recipes/${ename}";
+                inherit sha256;
+              };
+            packageRequires = lib.optionals (! isNull deps)
+              (map (dep: pkgargs.${dep} or self.${dep} or null)
+                   deps);
+            meta = (sourceArgs.meta or {}) // {
+              inherit broken;
+            };
+          }
+        ) {}
+      )
+    else
+      null;
+
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/manual-packages.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/manual-packages.nix
new file mode 100644
index 000000000000..dfe287a7f402
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/manual-packages.nix
@@ -0,0 +1,177 @@
+{ lib, external, pkgs }: self: with self; with lib.licenses; {
+
+  elisp-ffi = melpaBuild rec {
+    pname = "elisp-ffi";
+    version = "1.0.0";
+    src = pkgs.fetchFromGitHub {
+      owner = "skeeto";
+      repo = "elisp-ffi";
+      rev = version;
+      sha256 = "0z2n3h5l5fj8wl8i1ilfzv11l3zba14sgph6gz7dx7q12cnp9j22";
+    };
+    buildInputs = [ external.libffi ];
+    preBuild = "make";
+    recipe = pkgs.writeText "recipe" ''
+      (elisp-ffi
+      :repo "skeeto/elisp-ffi"
+      :fetcher github
+      :files ("ffi-glue" "ffi.el"))
+    '';
+    meta = {
+      description = "Emacs Lisp Foreign Function Interface";
+      longDescription = ''
+        This library provides an FFI for Emacs Lisp so that Emacs
+        programs can invoke functions in native libraries. It works by
+        driving a subprocess to do the heavy lifting, passing result
+        values on to Emacs.
+      '';
+      license = publicDomain;
+    };
+  };
+
+  agda2-mode = with external; trivialBuild {
+    pname = "agda-mode";
+    version = Agda.version;
+
+    phases = [ "buildPhase" "installPhase" ];
+
+    # already byte-compiled by Agda builder
+    buildPhase = ''
+      agda=`${Agda}/bin/agda-mode locate`
+      cp `dirname $agda`/*.el* .
+    '';
+
+    meta = {
+      description = "Agda2-mode for Emacs extracted from Agda package";
+      longDescription = ''
+        Wrapper packages that liberates init.el from `agda-mode locate` magic.
+        Simply add this to user profile or systemPackages and do `(require 'agda2)` in init.el.
+      '';
+      homepage = Agda.meta.homepage;
+      license = Agda.meta.license;
+    };
+  };
+
+  agda-input = self.trivialBuild {
+    pname = "agda-input";
+
+    inherit (external.Agda) src version;
+
+    postUnpack = "mv $sourceRoot/src/data/emacs-mode/agda-input.el $sourceRoot";
+
+    meta = {
+      description = "Standalone package providing the agda-input method without building Agda.";
+      inherit (external.Agda.meta) homepage license;
+    };
+  };
+
+  emacspeak = callPackage ./emacspeak {};
+
+  ess-R-object-popup =
+    callPackage ./ess-R-object-popup { };
+
+  font-lock-plus = callPackage ./font-lock-plus { };
+
+  ghc-mod = melpaBuild {
+    pname = "ghc";
+    version = external.ghc-mod.version;
+    src = external.ghc-mod.src;
+    packageRequires = [ haskell-mode ];
+    propagatedUserEnvPkgs = [ external.ghc-mod ];
+    recipe = pkgs.writeText "recipe" ''
+      (ghc-mod :repo "DanielG/ghc-mod" :fetcher github :files ("elisp/*.el"))
+    '';
+    fileSpecs = [ "elisp/*.el" ];
+    meta = {
+      description = "An extension of haskell-mode that provides completion of symbols and documentation browsing";
+      license = bsd3;
+    };
+  };
+
+  haskell-unicode-input-method = melpaBuild {
+    pname = "emacs-haskell-unicode-input-method";
+    version = "20110905.2307";
+    src = pkgs.fetchFromGitHub {
+      owner = "roelvandijk";
+      repo = "emacs-haskell-unicode-input-method";
+      rev = "d8d168148c187ed19350bb7a1a190217c2915a63";
+      sha256 = "09b7bg2s9aa4s8f2kdqs4xps3jxkq5wsvbi87ih8b6id38blhf78";
+    };
+    recipe = pkgs.writeText "recipe" ''
+      (emacs-haskell-unicode-input-method
+       :repo "roelvandijk/emacs-haskell-unicode-input-method"
+       :fetcher github)
+    '';
+    packageRequires = [];
+    meta = {
+      homepage = "https://melpa.org/#haskell-unicode-input-method/";
+      license = lib.licenses.free;
+    };
+  };
+
+  helm-words = callPackage ./helm-words { };
+
+  org-mac-link =
+    callPackage ./org-mac-link { };
+
+  perl-completion =
+    callPackage ./perl-completion { };
+
+  pod-mode = callPackage ./pod-mode { };
+
+  railgun = callPackage ./railgun { };
+
+  structured-haskell-mode = self.shm;
+
+  sv-kalender = callPackage ./sv-kalender { };
+
+  tramp = callPackage ./tramp { };
+
+  zeitgeist = callPackage ./zeitgeist { };
+
+  # From old emacsPackages (pre emacsPackagesNg)
+  cedet = callPackage ./cedet { };
+  cedille = callPackage ./cedille { cedille = pkgs.cedille; };
+  colorThemeSolarized = callPackage ./color-theme-solarized { };
+  emacsSessionManagement = callPackage ./session-management-for-emacs { };
+  hsc3-mode = callPackage ./hsc3 { };
+  ido-ubiquitous = callPackage ./ido-ubiquitous { };
+  prolog-mode = callPackage ./prolog { };
+  rectMark = callPackage ./rect-mark { };
+  sunriseCommander = callPackage ./sunrise-commander { };
+
+  # Legacy aliases, these try to mostly map to melpa stable because it's
+  # closer to the old outdated package infra.
+  #
+  # Ideally this should be dropped some time during/after 20.03
+  bbdb3 = self.melpaStablePackages.bbdb;
+  jade = self.jade-mode;
+  # scalaMode2 = null;  # No clear mapping as of now
+  flymakeCursor = self.melpaStablePackages.flymake-cursor;
+  cryptol = self.melpaStablePackages.cryptol-mode;
+  maudeMode = self.maude-mode;
+  phpMode = self.melpaStablePackages.php-mode;
+  idris = self.melpaStablePackages.idris-mode;
+  rainbowDelimiters = self.melpaStablePackages.rainbow-delimiters;
+  colorTheme = self.color-theme;
+  sbtMode = self.melpaStablePackages.sbt-mode;
+  markdownMode = self.melpaStablePackages.markdown-mode;
+  scalaMode1 = self.melpaStablePackages.scala-mode;
+  prologMode = self.prolog-mode;
+  hsc3Mode = self.hsc3-mode;
+  graphvizDot = self.melpaStablePackages.graphviz-dot-mode;
+  proofgeneral_HEAD = self.proof-general;
+  proofgeneral = self.melpaStablePackages.proof-general;
+  haskellMode = self.melpaStablePackages.haskell-mode;
+  writeGood = self.melpaStablePackages.writegood-mode;
+  erlangMode = self.melpaStablePackages.erlang;
+  d = self.melpaStablePackages.d-mode;
+  autoComplete = self.melpaStablePackages.auto-complete;
+  tuaregMode = self.melpaStablePackages.tuareg;
+  structuredHaskellMode = self.melpaStablePackages.shm;
+  xmlRpc = self.melpaStablePackages.xml-rpc;
+  emacsw3m = self.w3m;
+  loremIpsum = self.lorem-ipsum;
+  js2 = self.melpaStablePackages.js2-mode;
+
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/melpa-packages.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/melpa-packages.nix
new file mode 100644
index 000000000000..f228d34a654e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/melpa-packages.nix
@@ -0,0 +1,600 @@
+/*
+
+# Updating
+
+To update the list of packages from MELPA,
+
+1. Run ./update-melpa
+2. Check for evaluation errors:
+env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPackages.melpaStablePackages
+env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPackages.melpaPackages
+3. `git commit -m "melpa-packages: $(date -Idate)" recipes-archive-melpa.json`
+
+## Update from overlay
+
+Alternatively, run the following command:
+
+./update-from-overlay
+
+It will update both melpa and elpa packages using
+https://github.com/nix-community/emacs-overlay. It's almost
+instantenous and formats commits for you.
+
+*/
+
+{ lib, external, pkgs }: variant: self:
+let
+  dontConfigure = pkg:
+    if pkg != null then pkg.override (args: {
+      melpaBuild = drv: args.melpaBuild (drv // {
+        dontConfigure = true;
+      });
+    }) else null;
+
+  markBroken = pkg:
+    if pkg != null then pkg.override (args: {
+      melpaBuild = drv: args.melpaBuild (drv // {
+        meta = (drv.meta or { }) // { broken = true; };
+      });
+    }) else null;
+
+  externalSrc = pkg: epkg:
+    if pkg != null then pkg.override (args: {
+      melpaBuild = drv: args.melpaBuild (drv // {
+        inherit (epkg) src version;
+
+        propagatedUserEnvPkgs = [ epkg ];
+      });
+    }) else null;
+
+  fix-rtags = pkg:
+    if pkg != null then dontConfigure (externalSrc pkg external.rtags)
+    else null;
+
+  generateMelpa = lib.makeOverridable ({ archiveJson ? ./recipes-archive-melpa.json
+                                       }:
+    let
+      inherit (import ./libgenerated.nix lib self) melpaDerivation;
+      super = (
+        lib.listToAttrs (builtins.filter
+          (s: s != null)
+          (map
+            (melpaDerivation variant)
+            (lib.importJSON archiveJson)
+          )
+        )
+      );
+
+      overrides = {
+        # Expects bash to be at /bin/bash
+        ac-rtags = fix-rtags super.ac-rtags;
+
+        airline-themes = super.airline-themes.override {
+          inherit (self.melpaPackages) powerline;
+        };
+
+        auto-complete-clang-async = super.auto-complete-clang-async.overrideAttrs (old: {
+          buildInputs = old.buildInputs ++ [ external.llvmPackages.llvm ];
+          CFLAGS = "-I${external.llvmPackages.clang}/include";
+          LDFLAGS = "-L${external.llvmPackages.clang}/lib";
+        });
+
+        # part of a larger package
+        caml = dontConfigure super.caml;
+
+        # part of a larger package
+        # upstream issue: missing package version
+        cmake-mode = dontConfigure super.cmake-mode;
+
+        company-rtags = fix-rtags super.company-rtags;
+
+        easy-kill-extras = super.easy-kill-extras.override {
+          inherit (self.melpaPackages) easy-kill;
+        };
+
+        dune = dontConfigure super.dune;
+
+        emacsql-sqlite = super.emacsql-sqlite.overrideAttrs (old: {
+          buildInputs = old.buildInputs ++ [ pkgs.sqlite ];
+
+          postBuild = ''
+            cd source/sqlite
+            make
+            cd -
+          '';
+
+          postInstall = ''
+            install -m=755 -D source/sqlite/emacsql-sqlite \
+              $out/share/emacs/site-lisp/elpa/emacsql-sqlite-${old.version}/sqlite/emacsql-sqlite
+          '';
+
+          stripDebugList = [ "share" ];
+        });
+
+        # https://github.com/syl20bnr/evil-escape/pull/86
+        evil-escape = super.evil-escape.overrideAttrs (attrs: {
+          postPatch = ''
+            substituteInPlace evil-escape.el \
+              --replace ' ;;; evil' ';;; evil'
+          '';
+          packageRequires = with self; [ evil ];
+        });
+
+        evil-magit = super.evil-magit.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        eopengrok = super.eopengrok.overrideAttrs (attrs: {
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        ess-R-data-view = super.ess-R-data-view.override {
+          inherit (self.melpaPackages) ess ctable popup;
+        };
+
+        forge = super.forge.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        flycheck-rtags = fix-rtags super.flycheck-rtags;
+
+        gnuplot = super.gnuplot.overrideAttrs (old: {
+          nativeBuildInputs =
+            (old.nativeBuildInputs or [ ]) ++ [ pkgs.autoreconfHook ];
+        });
+
+        pdf-tools = super.pdf-tools.overrideAttrs (old: {
+          nativeBuildInputs = [ external.pkgconfig ];
+          buildInputs = with external; old.buildInputs ++ [ autoconf automake libpng zlib poppler ];
+          preBuild = "make server/epdfinfo";
+          recipe = pkgs.writeText "recipe" ''
+            (pdf-tools
+            :repo "politza/pdf-tools" :fetcher github
+            :files ("lisp/pdf-*.el" "server/epdfinfo"))
+          '';
+        });
+
+        # Build same version as Haskell package
+        hindent = (externalSrc super.hindent external.hindent).overrideAttrs (attrs: {
+          packageRequires = [ self.haskell-mode ];
+        });
+
+        irony = super.irony.overrideAttrs (old: {
+          cmakeFlags = old.cmakeFlags or [ ] ++ [ "-DCMAKE_INSTALL_BINDIR=bin" ];
+          NIX_CFLAGS_COMPILE = "-UCLANG_RESOURCE_DIR";
+          preConfigure = ''
+            cd server
+          '';
+          preBuild = ''
+            make
+            install -D bin/irony-server $out/bin/irony-server
+            cd ..
+          '';
+          checkPhase = ''
+            cd source/server
+            make check
+            cd ../..
+          '';
+          preFixup = ''
+            rm -rf $out/share/emacs/site-lisp/elpa/*/server
+          '';
+          dontUseCmakeBuildDir = true;
+          doCheck = true;
+          packageRequires = [ self.emacs ];
+          nativeBuildInputs = [ external.cmake external.llvmPackages.llvm external.llvmPackages.clang ];
+        });
+
+        # tries to write a log file to $HOME
+        insert-shebang = super.insert-shebang.overrideAttrs (attrs: {
+          HOME = "/tmp";
+        });
+
+        ivy-rtags = fix-rtags super.ivy-rtags;
+
+        magit = super.magit.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-find-file = super.magit-find-file.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-gh-pulls = super.magit-gh-pulls.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-imerge = super.magit-imerge.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-lfs = super.magit-lfs.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-org-todos = super.magit-org-todos.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-stgit = super.magit-stgit.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-tbdiff = super.magit-tbdiff.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-topgit = super.magit-topgit.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-vcsh = super.magit-vcsh.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-gerrit = super.magit-gerrit.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-annex = super.magit-annex.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-todos = super.magit-todos.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-filenotify = super.magit-filenotify.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-gitflow = super.magit-gitflow.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magithub = super.magithub.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-svn = super.magit-svn.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        kubernetes = super.kubernetes.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        kubernetes-evil = super.kubernetes-evil.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        # upstream issue: missing file header
+        mhc = super.mhc.override {
+          inherit (self.melpaPackages) calfw;
+        };
+
+        # missing .NET
+        nemerle = markBroken super.nemerle;
+
+        # part of a larger package
+        notmuch = dontConfigure super.notmuch;
+
+        rtags = dontConfigure (externalSrc super.rtags external.rtags);
+
+        rtags-xref = dontConfigure super.rtags;
+
+        shm = super.shm.overrideAttrs (attrs: {
+          propagatedUserEnvPkgs = [ external.structured-haskell-mode ];
+        });
+
+        # Telega has a server portion for it's network protocol
+        telega = super.telega.overrideAttrs (old: {
+          buildInputs = old.buildInputs ++ [ pkgs.tdlib ];
+
+          postBuild = ''
+            cd source/server
+            make
+            cd -
+          '';
+
+          postInstall = ''
+            mkdir -p $out/bin
+            install -m755 -Dt $out/bin ./source/server/telega-server
+          '';
+        });
+
+        treemacs-magit = super.treemacs-magit.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        vdiff-magit = super.vdiff-magit.overrideAttrs (attrs: {
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        zmq = super.zmq.overrideAttrs (old: {
+          stripDebugList = [ "share" ];
+          preBuild = ''
+            make
+          '';
+          nativeBuildInputs = [
+            external.autoconf
+            external.automake
+            external.pkgconfig
+            external.libtool
+            (external.zeromq.override { enableDrafts = true; })
+          ];
+          postInstall = ''
+            mv $out/share/emacs/site-lisp/elpa/zmq-*/src/.libs/emacs-zmq.so $out/share/emacs/site-lisp/elpa/zmq-*
+            rm -r $out/share/emacs/site-lisp/elpa/zmq-*/src
+            rm $out/share/emacs/site-lisp/elpa/zmq-*/Makefile
+          '';
+        });
+
+        # Map legacy renames from emacs2nix since code generation was ported to emacs lisp
+        _0blayout = super."0blayout";
+        desktop-plus = super."desktop+";
+        ghub-plus = super."ghub+";
+        git-gutter-plus = super."git-gutter+";
+        git-gutter-fringe-plus = super."git-gutter-fringe+";
+        ido-completing-read-plus = super."ido-completing-read+";
+        image-plus = super."image+";
+        image-dired-plus = super."image-dired+";
+        markdown-mode-plus = super."markdown-mode+";
+        package-plus = super."package+";
+        rect-plus = super."rect+";
+
+        # upstream issue: missing file header
+        bufshow = markBroken super.bufshow;
+
+        # upstream issue: missing file header
+        connection = markBroken super.connection;
+
+        # upstream issue: missing file header
+        dictionary = markBroken super.dictionary;
+
+        # upstream issue: missing file header
+        elmine = markBroken super.elmine;
+
+        # upstream issue: missing file header
+        ido-complete-space-or-hyphen = markBroken super.ido-complete-space-or-hyphen;
+
+        # upstream issue: missing file header
+        initsplit = markBroken super.initsplit;
+
+        # upstream issue: missing file header
+        jsfmt = markBroken super.jsfmt;
+
+        # upstream issue: missing file header
+        maxframe = markBroken super.maxframe;
+
+        # upstream issue: doesn't build
+        eterm-256color = markBroken super.eterm-256color;
+
+        # upstream issue: missing file header
+        qiita = markBroken super.qiita;
+
+        # upstream issue: missing file header
+        speech-tagger = markBroken super.speech-tagger;
+
+        # upstream issue: missing file header
+        textmate = markBroken super.textmate;
+
+        # upstream issue: missing file header
+        link = markBroken super.link;
+
+        # upstream issue: missing file header
+        voca-builder = markBroken super.voca-builder;
+
+        # upstream issue: missing file header
+        window-numbering = markBroken super.window-numbering;
+
+        editorconfig = super.editorconfig.overrideAttrs (attrs: {
+          propagatedUserEnvPkgs = [ external.editorconfig-core-c ];
+        });
+
+        egg = super.egg.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        # missing dependencies
+        evil-search-highlight-persist = super.evil-search-highlight-persist.overrideAttrs (attrs: {
+          packageRequires = with self; [ evil highlight ];
+        });
+
+        kapacitor = super.kapacitor.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        gerrit = super.gerrit.overrideAttrs (attrs: {
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        gerrit-download = super.gerrit-download.overrideAttrs (attrs: {
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        github-pullrequest = super.github-pullrequest.overrideAttrs (attrs: {
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        helm-rtags = fix-rtags super.helm-rtags;
+
+        jist = super.jist.overrideAttrs (attrs: {
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        mandoku = super.mandoku.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        mandoku-tls = super.mandoku-tls.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-p4 = super.magit-p4.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-rbr = super.magit-rbr.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-diff-flycheck = super.magit-diff-flycheck.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-reviewboard = super.magit-reviewboard.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-patch-changelog = super.magit-patch-changelog.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        magit-circleci = super.magit-circleci.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+        });
+
+        orgit =
+          (super.orgit.overrideAttrs (attrs: {
+            # searches for Git at build time
+            nativeBuildInputs =
+              (attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
+          }));
+
+        # tries to write to $HOME
+        php-auto-yasnippets = super.php-auto-yasnippets.overrideAttrs (attrs: {
+          HOME = "/tmp";
+        });
+
+        racer = super.racer.overrideAttrs (attrs: {
+          postPatch = attrs.postPatch or "" + ''
+            substituteInPlace racer.el \
+              --replace /usr/local/src/rust/src ${external.rustPlatform.rustcSrc}
+          '';
+        });
+
+        spaceline = super.spaceline.override {
+          inherit (self.melpaPackages) powerline;
+        };
+
+        vterm = super.vterm.overrideAttrs (old: {
+          buildInputs = old.buildInputs ++ [ self.emacs pkgs.cmake pkgs.libvterm-neovim ];
+          cmakeFlags = [
+            "-DEMACS_SOURCE=${self.emacs.src}"
+            "-DUSE_SYSTEM_LIBVTERM=ON"
+          ];
+          # we need the proper out directory to exist, so we do this in the
+          # postInstall instead of postBuild
+          postInstall = ''
+            pushd source/build >/dev/null
+            make
+            install -m444 -t $out/share/emacs/site-lisp/elpa/vterm-** ../*.so
+            popd > /dev/null
+            rm -rf $out/share/emacs/site-lisp/elpa/vterm-**/{CMake*,build,*.c,*.h}
+          '';
+        });
+
+        w3m = super.w3m.override (args: {
+          melpaBuild = drv: args.melpaBuild (drv // {
+            prePatch =
+              let w3m = "${lib.getBin external.w3m}/bin/w3m"; in
+              ''
+                substituteInPlace w3m.el \
+                --replace 'defcustom w3m-command nil' \
+                'defcustom w3m-command "${w3m}"'
+              '';
+          });
+        });
+      };
+
+      # Deprecated legacy aliases for backwards compat
+      aliases = lib.listToAttrs (lib.attrValues (lib.mapAttrs (n: v: { name = v; value = builtins.trace "Melpa attribute '${v}' is a legacy alias that will be removed in 21.03, use '${n}' instead" melpaPackages.${n}; }) (lib.filterAttrs (n: v: lib.hasAttr n melpaPackages) {
+        "auto-complete-clang-async" = "emacsClangCompleteAsync";
+        "vterm" = "emacs-libvterm";
+        "0xc" = "_0xc";
+        "2048-game" = "_2048-game";
+        "4clojure" = "_4clojure";
+        "@" = "at";
+        "term+" = "term-plus";
+        "term+key-intercept" = "term-plus-key-intercept";
+        "term+mux" = "term-plus-mux";
+        "xml+" = "xml-plus";
+      })));
+
+      melpaPackages = lib.mapAttrs (n: v: if lib.hasAttr n overrides then overrides.${n} else v) super;
+
+    in
+    melpaPackages // aliases);
+
+in
+generateMelpa { }
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/org-generated.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/org-generated.nix
new file mode 100644
index 000000000000..4beb5750166d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/org-generated.nix
@@ -0,0 +1,33 @@
+{ callPackage }:
+  {
+    org = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "org";
+        ename = "org";
+        version = "20200511";
+        src = fetchurl {
+          url = "https://orgmode.org/elpa/org-20200511.tar";
+          sha256 = "147k6nmq00milw5knyhw01z481rcdl6s30vk4fkjidw508nkmg9c";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/org.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+    org-plus-contrib = callPackage ({ elpaBuild, fetchurl, lib }:
+      elpaBuild {
+        pname = "org-plus-contrib";
+        ename = "org-plus-contrib";
+        version = "20200511";
+        src = fetchurl {
+          url = "https://orgmode.org/elpa/org-plus-contrib-20200511.tar";
+          sha256 = "1hsdp7n985404zdqj6gyfw1bxxbs0p3bf4fyizvgji21zxwnf63f";
+        };
+        packageRequires = [];
+        meta = {
+          homepage = "https://elpa.gnu.org/packages/org-plus-contrib.html";
+          license = lib.licenses.free;
+        };
+      }) {};
+  }
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/org-mac-link/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/org-mac-link/default.nix
new file mode 100644
index 000000000000..93af03ce229f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/org-mac-link/default.nix
@@ -0,0 +1,31 @@
+{stdenv, fetchurl, emacs}:
+
+stdenv.mkDerivation {
+  name = "org-mac-link-1.2";
+
+  src = fetchurl {
+    url = "https://raw.githubusercontent.com/stuartsierra/org-mode/master/contrib/lisp/org-mac-link.el";
+    sha256 = "1gkzlfbhg289r1hbqd25szan1wizgk6s99h9xxjip5bjv0jywcx5";
+  };
+
+  phases = [ "buildPhase" "installPhase"];
+
+  buildInputs = [ emacs ];
+
+  buildPhase = ''
+    cp $src org-mac-link.el
+    emacs --batch -f batch-byte-compile org-mac-link.el
+  '';
+
+  installPhase = ''
+    install -d $out/share/emacs/site-lisp
+    install org-mac-link.el $out/share/emacs/site-lisp
+  '';
+
+  meta = {
+    description = "Insert org-mode links to items selected in various Mac apps";
+    homepage = "https://orgmode.org/worg/org-contrib/org-mac-link.html";
+    license = stdenv.lib.licenses.gpl3;
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/org-packages.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/org-packages.nix
new file mode 100644
index 000000000000..1f37cf624f9f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/org-packages.nix
@@ -0,0 +1,32 @@
+/*
+
+# Updating
+
+To update the list of packages from Org (ELPA),
+
+1. Run `./update-org`.
+2. Check for evaluation errors: `nix-instantiate ../../../.. -A emacsPackagesNg.orgPackages`.
+3. `git commit -m "org-packages $(date -Idate)" -- org-generated.nix`
+
+*/
+
+{ lib }:
+
+self: let
+
+  generateOrg = lib.makeOverridable ({
+    generated ? ./org-generated.nix
+  }: let
+
+    imported = import generated {
+      inherit (self) callPackage;
+    };
+
+    super = imported;
+
+    overrides = {
+    };
+
+  in super // overrides);
+
+in generateOrg { }
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/perl-completion/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/perl-completion/default.nix
new file mode 100644
index 000000000000..7f2454c811a7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/perl-completion/default.nix
@@ -0,0 +1,23 @@
+{stdenv, fetchurl}:
+
+stdenv.mkDerivation {
+  name = "perl-completion";
+
+  src = fetchurl {
+    url = "http://emacswiki.org/emacs/download/perl-completion.el";
+    sha256 = "0x6qsgs4hm87k0z9q3g4p6508kc3y123j5jayll3jf3lcl2vm6ks";
+  };
+
+  phases = [ "installPhase"];
+
+  installPhase = ''
+    install -d $out/share/emacs/site-lisp
+    install $src $out/share/emacs/site-lisp/perl-completion.el
+  '';
+
+  meta = {
+    description = "Minor mode provides useful features for editing perl codes";
+    homepage = "http://emacswiki.org/emacs/PerlCompletion";
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/pod-mode/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/pod-mode/default.nix
new file mode 100644
index 000000000000..549633b7dfbd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/pod-mode/default.nix
@@ -0,0 +1,18 @@
+{ trivialBuild, lib, fetchurl }:
+
+trivialBuild rec {
+  pname = "pod-mode";
+  version = "1.04";
+
+  src = fetchurl {
+    url = "mirror://cpan/authors/id/F/FL/FLORA/pod-mode-${version}.tar.gz";
+    sha256 = "1wr0khymkaa65blrc5nya607c1a3sjsww49bbf8f0a6176as71sv";
+  };
+
+  meta = with lib; {
+    description = "Major mode for editing .pod-files";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ qyliss ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/prolog/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/prolog/default.nix
new file mode 100644
index 000000000000..7f5a097daa93
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/prolog/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation {
+  name = "prolog-mode-1.25";
+
+  src = fetchurl {
+    url = "http://bruda.ca/_media/emacs/prolog.el";
+    sha256 = "0hfd2dr3xc5qxgvc08nkb2l5a05hfldahdc6ymi9vd8798cc46yh";
+  };
+
+  buildCommand = ''
+    mkdir -p $out/share/emacs/site-lisp/
+    cp $src $out/share/emacs/site-lisp/prolog.el
+  '';
+
+  meta = {
+    homepage = "http://bruda.ca/emacs/prolog_mode_for_emacs/";
+    description = "Prolog mode for Emacs";
+    license = stdenv.lib.licenses.gpl2Plus;
+
+    # Has wrong sha256
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/railgun/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/railgun/default.nix
new file mode 100644
index 000000000000..8ca8d1feaa1e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/railgun/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchgit }:
+
+stdenv.mkDerivation {
+  name = "railgun-2012-10-17";
+
+  src = fetchgit {
+    url = "https://github.com/mbriggs/railgun.el.git";
+    rev = "66aaa1b091baef53a69d0d7425f48d184b865fb8";
+    sha256 = "00x09vjd3jz5f73qkf5v1y402zn8vl8dsyfwlq9z646p18ba7gyh";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/emacs/site-lisp
+    cp *.el *.elc $out/share/emacs/site-lisp/
+  '';
+
+  meta = {
+    description = "Propel yourself through a rails project with the power of magnets";
+    homepage = "https://github.com/mbriggs/railgun.el";
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/recipes-archive-melpa.json b/nixpkgs/pkgs/applications/editors/emacs-modes/recipes-archive-melpa.json
new file mode 100644
index 000000000000..a10df7791039
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/recipes-archive-melpa.json
@@ -0,0 +1,104816 @@
+[
+ {
+  "ename": "0blayout",
+  "commit": "6521ec44ae8b0ba2e0523517f0f3d5b94ddbe1be",
+  "sha256": "027k85h34998i8vmbg2hi4q1m4f7jfva5jm38k0g9m1db700gk92",
+  "fetcher": "github",
+  "repo": "etu/0blayout-mode",
+  "unstable": {
+   "version": [
+    20190703,
+    527
+   ],
+   "commit": "fd9a8f353dbd45b4628b5f84b8d8c2525ebf571d",
+   "sha256": "18jkq140s2hwgdxs5s13hprjmq2qnxnqhrmdiyrhvl176r3wbh37"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    2
+   ],
+   "commit": "b8bb44b5336965b5519b9a826a0f46f8ee31c471",
+   "sha256": "1apv5zd3zzni2llj9is7h2bzq1xxbx67kr7c07dfjd26n7l0zvfi"
+  }
+ },
+ {
+  "ename": "0x0",
+  "commit": "a48b10b770038efc606fbbbedf79178d3b05186c",
+  "sha256": "1nkc5hfz77s37a1rp8m69f7zbk05jc1y1fcj0b46h9khyz6zbm01",
+  "fetcher": "git",
+  "url": "https://git.sr.ht/~zge/nullpointer-emacs",
+  "unstable": {
+   "version": [
+    20200411,
+    1227
+   ],
+   "commit": "59136313132c08ab5fddaa875f6abeb22916a04b",
+   "sha256": "0acdh1r28v6xcsh39r13xppzqb6m00jgxgsxl17779isw98w9a3y"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "commit": "1d29192a3c28ba088d93410bfcdd4bee0abb6610",
+   "sha256": "02kmfzkrl35y599w5yal5d7rjb3xi02zhvb8q0m3iw4mbm16sw28"
+  }
+ },
+ {
+  "ename": "0xc",
+  "commit": "3fbb2c86a50a8df9a3967787fc10f33beab2c933",
+  "sha256": "0lxcz1x1dymsh9idhkn7jn8vphr724d6sb88a4g55x2m1rlmzg3w",
+  "fetcher": "github",
+  "repo": "AdamNiederer/0xc",
+  "unstable": {
+   "version": [
+    20190219,
+    117
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "167e93ce863381a58988655927042514d984ad49",
+   "sha256": "0msx29il7c01njlc4pwxs3f3qcvyakgjcivxaa287jibf67yg0ph"
+  }
+ },
+ {
+  "ename": "2048-game",
+  "commit": "d3828ad7599d13728b5571b882344c3ada434b85",
+  "sha256": "0i7g7fg21ndpfbdydij3fb683pqgd1sicb7x6rradbc8jpmcf5sq",
+  "fetcher": "hg",
+  "url": "https://hg.sr.ht/~zck/game-2048",
+  "unstable": {
+   "version": [
+    20200417,
+    259
+   ],
+   "commit": "aad4a590ea91f9a3256233b9b345e9159c6993f2",
+   "sha256": "1jd50m5w0g0yplzms4qvkxx16f7xsbm9h7sdrw1p130gbij252l3"
+  }
+ },
+ {
+  "ename": "4clojure",
+  "commit": "3fea8d290fe4d71b954ad6b68a8d182e40ee1e13",
+  "sha256": "1cqab8kh4varf5hasvhkia39fa8qmmqycica7mbcvp33n8w3941j",
+  "fetcher": "github",
+  "repo": "emacsorphanage/4clojure",
+  "unstable": {
+   "version": [
+    20200123,
+    2008
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "557eecb5da50fedd92840021c8b08d87dfdc782b",
+   "sha256": "19x653lzc1dxil4ix257hciidbdmbhaxhs6qhlkwi9ygjrlrgvnk"
+  }
+ },
+ {
+  "ename": "@",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0da0xqk8fhz8aij3zmpp4bz3plpvfq2riyy17i7ny4ralxb3g08z",
+  "fetcher": "github",
+  "repo": "skeeto/at-el",
+  "unstable": {
+   "version": [
+    20181225,
+    1438
+   ],
+   "commit": "0a6189f8be42dbbc5d9358cbd447d471236135a2",
+   "sha256": "11s46n3j6ij0ynxwl35wxbzg97pkmnhxh43l5vvaz9kizf6mhpbj"
+  }
+ },
+ {
+  "ename": "a",
+  "commit": "a226f1d81cd1ae81b91c1102fbe40aac2eddcaa8",
+  "sha256": "1xqja47iw1c78kiv4854z47iblvvzrc1l35zjdhmhkh9hh10z886",
+  "fetcher": "github",
+  "repo": "plexus/a.el",
+  "unstable": {
+   "version": [
+    20180907,
+    953
+   ],
+   "commit": "18966975db7110d0aac726be95b593e2fc3d44ed",
+   "sha256": "0d8ffpc8r7xial9q0miyxab6mbh9rm6sckvw9g10cgp8f1rrk7h4"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "8583685c32069a73ccae0100e990e7b39c901737",
+   "sha256": "00v9w6qg3bkwdhypq0ssf0phdh0f4bcq59c20lngd6vhk0204dqi"
+  }
+ },
+ {
+  "ename": "aa-edit-mode",
+  "commit": "20d00f782f2db87264c7fb1aac7455e44b8b24e7",
+  "sha256": "00b99ik04xx4b2a1cm1z8dl42hjnb5r32qypjyyx8924n1dhxzgn",
+  "fetcher": "github",
+  "repo": "zonuexe/aa-edit-mode",
+  "unstable": {
+   "version": [
+    20170119,
+    320
+   ],
+   "deps": [
+    "navi2ch"
+   ],
+   "commit": "1dd801225b7ad3c23ad09698f5e77f0df7012a65",
+   "sha256": "17kxpyfprdyj96c4ivv8bxwyls69cgh2r3gwrgj6bwinbiszh9rr"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "navi2ch"
+   ],
+   "commit": "2e56f3b627f0f19fbfce4968180b4d736f7afb5d",
+   "sha256": "1rh9n97z1vi7w60qzam5vc025wwm346fgzym2zs1cm7ykyfh3mgd"
+  }
+ },
+ {
+  "ename": "abc-mode",
+  "commit": "aaee9dc5de06747374f311d86a550d3cc15beed1",
+  "sha256": "0qf5lbszyscmagiqhc0d05vzkhdky7ini4w33z1h3j5417sscrcx",
+  "fetcher": "github",
+  "repo": "mkjunker/abc-mode",
+  "unstable": {
+   "version": [
+    20171020,
+    1019
+   ],
+   "commit": "15691b32431b50f9106cb9fa50ee7244957a8ac8",
+   "sha256": "089l4rmxrnm4fmrbgw98rjigy3hzkx4lkw9hv8gn36cv2fp61h71"
+  },
+  "stable": {
+   "version": [
+    20140225,
+    944
+   ],
+   "commit": "6b5ab7402287dab5a091e94fec9982dc45d9d287",
+   "sha256": "13f4l9xzx4xm5m80kkb49zh31w0bn0kw9m5ca28rrx4aysqmwryv"
+  }
+ },
+ {
+  "ename": "abgaben",
+  "commit": "2b0aa60aa0edf33205e0fcb309be779ad8da08ec",
+  "sha256": "1xywghyp6aahzin1ygwzqfg9640dliycl4g02jz3gpix8hd3g8gy",
+  "fetcher": "gitlab",
+  "repo": "akoehn/abgaben",
+  "unstable": {
+   "version": [
+    20171119,
+    646
+   ],
+   "deps": [
+    "f",
+    "pdf-tools",
+    "s"
+   ],
+   "commit": "20d14830f07d66e2a04bcad1498a4a6fbf4b4451",
+   "sha256": "0apcbfaa70kgrpjjsfbr0lg9lcfiijpx5bms4sbzc606vlnxxn0d"
+  }
+ },
+ {
+  "ename": "abl-mode",
+  "commit": "70a52edb381daa9c4dcc9f7e511175b38fc141be",
+  "sha256": "0h25lc87pa8irgxflnmnmkr9dcv4kz841nfc45fcz4awrn75kkzb",
+  "fetcher": "github",
+  "repo": "afroisalreadyinu/abl-mode",
+  "unstable": {
+   "version": [
+    20190403,
+    904
+   ],
+   "commit": "44b7d946bc3a693f5a931c4a62c0a67d42e8d4dc",
+   "sha256": "070c408bq5pliq0xbd1861l6db4sbfpnj3r6aknbqh2vb7l4yimb"
+  }
+ },
+ {
+  "ename": "abs-mode",
+  "commit": "aabccc4061e7764069796e12ee9688b67651cf70",
+  "sha256": "148y99iaxcnjaacw017chwq0sq05ywgy5jx1lhp9ly7innrl9i1k",
+  "fetcher": "github",
+  "repo": "abstools/abs-mode",
+  "unstable": {
+   "version": [
+    20200220,
+    1701
+   ],
+   "deps": [
+    "erlang",
+    "flymake",
+    "maude-mode"
+   ],
+   "commit": "2db38537e9c481c38477997467bc98ee00607d7a",
+   "sha256": "006l73nacbr45y81ypj3x91nd1pnqppvgrlc6wmysma14lndazqx"
+  },
+  "stable": {
+   "version": [
+    1,
+    5
+   ],
+   "deps": [
+    "erlang",
+    "flymake",
+    "maude-mode"
+   ],
+   "commit": "a9a512992f681669dc59fe9ca86f12b9688b5454",
+   "sha256": "0v6d7cxnj4mil7c7y4m1csiznl6rmzxg9snwhhv6wdqfw112kn8j"
+  }
+ },
+ {
+  "ename": "abyss-theme",
+  "commit": "f390e5153b6360a27abc74983f5fef11226634f3",
+  "sha256": "0ckrgfd7fjls6g510v8fqpkd0fd18lr0spg3lf5s88gky8ihdg6c",
+  "fetcher": "github",
+  "repo": "mgrbyte/emacs-abyss-theme",
+  "unstable": {
+   "version": [
+    20170808,
+    1345
+   ],
+   "commit": "18791c6e8d9cc2b4815c9f08627a2e94fc0eeb14",
+   "sha256": "07z0djv7h3yrv4iw9n633j6dxzxb4nnzijsqkmz22ik6fbwxg5mh"
+  },
+  "stable": {
+   "version": [
+    0,
+    7
+   ],
+   "commit": "18791c6e8d9cc2b4815c9f08627a2e94fc0eeb14",
+   "sha256": "07z0djv7h3yrv4iw9n633j6dxzxb4nnzijsqkmz22ik6fbwxg5mh"
+  }
+ },
+ {
+  "ename": "ac-alchemist",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "0cakni8lvkhgdrzwa2cdqwnkbaiac1fn4j2lqgmx33z7hmrk8am6",
+  "fetcher": "github",
+  "repo": "emacsorphanage/ac-alchemist",
+  "unstable": {
+   "version": [
+    20150908,
+    656
+   ],
+   "deps": [
+    "alchemist",
+    "auto-complete",
+    "cl-lib"
+   ],
+   "commit": "b1891c3d41aed83f61d78a609ea97be5cc2758d9",
+   "sha256": "19msfx3f3px1maj41bzh139s6sv2pjk9vm3bphn7758fqhzyin0f"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "alchemist",
+    "auto-complete",
+    "cl-lib"
+   ],
+   "commit": "31114f3e1e7cc1e101d0b81819d7876d8861df92",
+   "sha256": "0a8widshsm39cbala17pmnk1sazazhhyqppwalysli170whk49c5"
+  }
+ },
+ {
+  "ename": "ac-c-headers",
+  "commit": "d7736fb9ea3a59c36c0b8b824d83bb1bb0099d43",
+  "sha256": "1cq5rz2w79bj185va7y13x7bciihrpsvyxwk6msmcxb4g86s9phv",
+  "fetcher": "github",
+  "repo": "zk-phi/ac-c-headers",
+  "unstable": {
+   "version": [
+    20151021,
+    834
+   ],
+   "deps": [
+    "auto-complete"
+   ],
+   "commit": "de13a1d35b311e6601556d8ef163de102057deea",
+   "sha256": "1z6rj15p5gjv0jwnnck8789n9csf1pwxfvsz37graihgfy2khj0y"
+  }
+ },
+ {
+  "ename": "ac-capf",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "08a1ywyv5l1npbkpmg3wmprnqk837bmbwjpcgf5di9a2j33xqbin",
+  "fetcher": "github",
+  "repo": "emacsorphanage/ac-capf",
+  "unstable": {
+   "version": [
+    20151101,
+    217
+   ],
+   "deps": [
+    "auto-complete",
+    "cl-lib"
+   ],
+   "commit": "17571dba0a8f98111f2ab758e9bea285b263781b",
+   "sha256": "0nyq34yq4jcp3p30ygma3iz1h0q551p33792byj76pa5ps09g1da"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "auto-complete",
+    "cl-lib"
+   ],
+   "commit": "17571dba0a8f98111f2ab758e9bea285b263781b",
+   "sha256": "0nyq34yq4jcp3p30ygma3iz1h0q551p33792byj76pa5ps09g1da"
+  }
+ },
+ {
+  "ename": "ac-cider",
+  "commit": "e8adefaf2e284ef91baec3dbd3e10c868de69926",
+  "sha256": "1dszpb706h34miq2bxqyq1ycbran5ax36vcniwp8vvhgcjsw5sz6",
+  "fetcher": "github",
+  "repo": "clojure-emacs/ac-cider",
+  "unstable": {
+   "version": [
+    20161006,
+    719
+   ],
+   "deps": [
+    "auto-complete",
+    "cider",
+    "cl-lib"
+   ],
+   "commit": "fa13e067dd9c8c76151c7d140a2803da1d109b84",
+   "sha256": "1pklmjldnm8bf34f5q8x983d1m72l3kf51ns9vh6z704mkhv658f"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    3
+   ],
+   "deps": [
+    "auto-complete",
+    "cider",
+    "cl-lib"
+   ],
+   "commit": "4be034e5f82421b0a836ec7ff45815c67caffcee",
+   "sha256": "12s7wy7fyk5z9q287j871gcsrvj90f4c81h39p66d99jw0cl93qj"
+  }
+ },
+ {
+  "ename": "ac-clang",
+  "commit": "ffe0485048b85825f5e8ba95917d8c9dc64fe5de",
+  "sha256": "070s06xhkzaqfc3j8c4i44rks6gn8z66lwd54j17p8d91x3qjpr4",
+  "fetcher": "github",
+  "repo": "yaruopooner/ac-clang",
+  "unstable": {
+   "version": [
+    20180710,
+    546
+   ],
+   "deps": [
+    "auto-complete",
+    "cl-lib",
+    "pos-tip",
+    "yasnippet"
+   ],
+   "commit": "3294b968eb1a8317049190940193f9da47c085ef",
+   "sha256": "160hda911vsc2zcs56560cpv7kj0966vjzwmc0md6fkz3wrj7w0n"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    3
+   ],
+   "deps": [
+    "auto-complete",
+    "cl-lib",
+    "pos-tip",
+    "yasnippet"
+   ],
+   "commit": "3294b968eb1a8317049190940193f9da47c085ef",
+   "sha256": "160hda911vsc2zcs56560cpv7kj0966vjzwmc0md6fkz3wrj7w0n"
+  }
+ },
+ {
+  "ename": "ac-dcd",
+  "commit": "64142a4b14531409f45f02a8053ed8948f48221d",
+  "sha256": "086jp9c6bilc361n1hscza3pbhgvqlq944z7cil2jm1kicsf8s7r",
+  "fetcher": "github",
+  "repo": "atilaneves/ac-dcd",
+  "unstable": {
+   "version": [
+    20190902,
+    1124
+   ],
+   "deps": [
+    "auto-complete",
+    "flycheck-dmd-dub"
+   ],
+   "commit": "d378d33c7bedc6c108eda7f674bd0aa1d8664857",
+   "sha256": "1gpqxfc83p7gzjrhs95gimwg46v9pq58m81m0fhz6slk7i005mdl"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "deps": [
+    "auto-complete",
+    "flycheck-dmd-dub"
+   ],
+   "commit": "d378d33c7bedc6c108eda7f674bd0aa1d8664857",
+   "sha256": "1gpqxfc83p7gzjrhs95gimwg46v9pq58m81m0fhz6slk7i005mdl"
+  }
+ },
+ {
+  "ename": "ac-emacs-eclim",
+  "commit": "1e9d3075587fbd9ca188535fd945a7dc451c6d7e",
+  "sha256": "0bkh7x6zj5drdvm9ji4vwqdxv7limd9a1idy8lsg0lcca3rjq3s5",
+  "fetcher": "github",
+  "repo": "emacs-eclim/emacs-eclim",
+  "unstable": {
+   "version": [
+    20180911,
+    1121
+   ],
+   "deps": [
+    "auto-complete",
+    "eclim"
+   ],
+   "commit": "222ddd48fcf0ee01592dec77c58e0cf3f2ea1100",
+   "sha256": "0jdddf8krvg379wlay1xs27qlxpi87nz6v2i526pk59mmg8jrnvc"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "auto-complete",
+    "eclim"
+   ],
+   "commit": "8203fbf8544e65324a948a67718f7a16ba2d52e6",
+   "sha256": "10bbbxhvlwm526g1wib1f87grnayirlg8jbsvmpzxr9nmdjgikz3"
+  }
+ },
+ {
+  "ename": "ac-emmet",
+  "commit": "39861b4f0a458c8ccf02f7a3443c54b0e74daa11",
+  "sha256": "09ycjllfpdgqaf5iis5bkkhal1vxvl3qkxrn2759p67s97c49f3x",
+  "fetcher": "github",
+  "repo": "yasuyk/ac-emmet",
+  "unstable": {
+   "version": [
+    20131015,
+    1558
+   ],
+   "deps": [
+    "auto-complete",
+    "emmet-mode"
+   ],
+   "commit": "88f24876ee3b759978d4614a758280b5d512d543",
+   "sha256": "1lkhqmfkjga7qi4r1m7mjax3pyf9m6minsn57cbzm2z2kvkhq22g"
+  }
+ },
+ {
+  "ename": "ac-emoji",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "06cwaasv2bsxr86wsjc21ggibcyqfp352wnc8i5fbr4ypd3vbk42",
+  "fetcher": "github",
+  "repo": "emacsorphanage/ac-emoji",
+  "unstable": {
+   "version": [
+    20150823,
+    711
+   ],
+   "deps": [
+    "auto-complete",
+    "cl-lib"
+   ],
+   "commit": "40a639764eb654f1b4bb705c817b66032a26ff2b",
+   "sha256": "1gk84bv6w9lg5wrygd7cfab3h46j84k1dwmhzr7jay6n02q6y499"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "auto-complete",
+    "cl-lib"
+   ],
+   "commit": "53677f754929ead403ccde64b714ebb6b8fc808e",
+   "sha256": "0cc3jpc4pihbyznyzvf6i3xwc2x78gb5m36ba9gkvxhabsljnlfg"
+  }
+ },
+ {
+  "ename": "ac-etags",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "1qy6v37v7lx93lnpgh5bf2ccxpg2ldzwgdyigqmby9fy0wzwr8sf",
+  "fetcher": "github",
+  "repo": "emacsorphanage/ac-etags",
+  "unstable": {
+   "version": [
+    20161001,
+    1507
+   ],
+   "deps": [
+    "auto-complete"
+   ],
+   "commit": "7983e631c226fe0fa53af3b2d56bf4eca3d785ce",
+   "sha256": "1vvgcy5hybrip4jn4pj9r3fahr6rc70k28w5aw951h0x7g7laipr"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "deps": [
+    "auto-complete"
+   ],
+   "commit": "8cd188b2e4908285ba8178bbd18a555edd7282e8",
+   "sha256": "0ijni3qgd68jhznhirhgcl59cr7hwfvbwgf6z120x56jmp8h01d2"
+  }
+ },
+ {
+  "ename": "ac-geiser",
+  "commit": "586ef409e3ae758b459b625d4bf0108f0525a085",
+  "sha256": "0v558qz1mp8b1bgk8kgdk5sx5mpd353mw77n5b0pw4b2ikzpz2mx",
+  "fetcher": "github",
+  "repo": "xiaohanyu/ac-geiser",
+  "unstable": {
+   "version": [
+    20200318,
+    824
+   ],
+   "deps": [
+    "auto-complete",
+    "geiser"
+   ],
+   "commit": "93818c936ee7e2f1ba1b315578bde363a7d43d05",
+   "sha256": "00n2qa26yilaj837n1yp6lbqa4gf30nkkbvanl7m9ih7k48ssqmw"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "auto-complete",
+    "geiser"
+   ],
+   "commit": "0e2e36532336f27e3dc3b01fff55ad1a4329817d",
+   "sha256": "02ifz25rq64z0ifxs52aqdz0iz4mi6xvj88hcn3aakkmsj749vvn"
+  }
+ },
+ {
+  "ename": "ac-haskell-process",
+  "commit": "98bd259b6bfd9b49a8ae421807a4ab3821f09608",
+  "sha256": "0kv4z850kv03wiax1flnrp6sgqja25j23l719w7rkr7ck110q8rw",
+  "fetcher": "github",
+  "repo": "purcell/ac-haskell-process",
+  "unstable": {
+   "version": [
+    20150423,
+    1402
+   ],
+   "deps": [
+    "auto-complete",
+    "haskell-mode"
+   ],
+   "commit": "0362d4323511107ec70e7165cb612f3ab01b712f",
+   "sha256": "0m33v9iy3y37sicfmpx7kvmn8v1a8k6cs7d0v9v5k93p4d5ila41"
+  },
+  "stable": {
+   "version": [
+    0,
+    7
+   ],
+   "deps": [
+    "auto-complete",
+    "haskell-mode"
+   ],
+   "commit": "0362d4323511107ec70e7165cb612f3ab01b712f",
+   "sha256": "0m33v9iy3y37sicfmpx7kvmn8v1a8k6cs7d0v9v5k93p4d5ila41"
+  }
+ },
+ {
+  "ename": "ac-helm",
+  "commit": "50427d365c79aff84ac759d19ce177b4f7ed2751",
+  "sha256": "16ajxlhcah5zbvywpc6l4l1arr308gjpgvdx6l1nrv2zvpckhlwq",
+  "fetcher": "github",
+  "repo": "yasuyk/ac-helm",
+  "unstable": {
+   "version": [
+    20160319,
+    233
+   ],
+   "deps": [
+    "auto-complete",
+    "cl-lib",
+    "helm",
+    "popup"
+   ],
+   "commit": "baf2b1e04bcffa835084389c0fab415f26efbf32",
+   "sha256": "1fyikdwn0gzng7pbmfg7zb7jphjv228776vsjc12j7g1aqz92n4l"
+  },
+  "stable": {
+   "version": [
+    2,
+    1
+   ],
+   "deps": [
+    "auto-complete",
+    "helm",
+    "popup"
+   ],
+   "commit": "f2110576b0eb35850a7f638c1a991a9fa0c8da3a",
+   "sha256": "1gw38phyaslpql7szvlpwgyfngdgd21f6lq406vq0gjwwmxgig34"
+  }
+ },
+ {
+  "ename": "ac-html",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "1vidmvylwwvraf8k63dvxv47ism49n6pp0f38l5rl4iaznhkdr84",
+  "fetcher": "github",
+  "repo": "zhangkaiyulw/ac-html",
+  "unstable": {
+   "version": [
+    20151005,
+    731
+   ],
+   "deps": [
+    "auto-complete",
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "668154cba123c321d1b07c2dc8b26d14092253b8",
+   "sha256": "0lz1a8a4bqxiw20jh65r7cg7jnid3vz4h8b7dkfcrzwn0agx8frw"
+  },
+  "stable": {
+   "version": [
+    0,
+    31
+   ],
+   "deps": [
+    "auto-complete",
+    "web-completion-data"
+   ],
+   "commit": "415a78c3b84855b0c0411832d21a0fb63239b184",
+   "sha256": "19v9515ixg22m7h7riix8w3vyhzax1m2pbwdirp59v532xn9b0cz"
+  }
+ },
+ {
+  "ename": "ac-html-angular",
+  "commit": "0805ba6674d1298d730770e8ea46b9bbd68cd1d3",
+  "sha256": "05rbxf5kbr4jlskrhvfvhf82qvb55zl5cb6z1ymfh9l3h9j9xk3s",
+  "fetcher": "github",
+  "repo": "osv/ac-html-angular",
+  "unstable": {
+   "version": [
+    20151225,
+    719
+   ],
+   "deps": [
+    "web-completion-data"
+   ],
+   "commit": "6bafe09afe03112ca4183d58461c1a6f6c2b3c67",
+   "sha256": "1v3ia439h4n2i204n0sazzbwwm0l5k6j31gq58iv2rqrq2ysikny"
+  }
+ },
+ {
+  "ename": "ac-html-bootstrap",
+  "commit": "6cf8aed547ca2390395dcf52d6c542b6944697af",
+  "sha256": "0z71m6xws0k9smhsswaivpikr64mv0wh6klnmi5cwhwcqas6kdi1",
+  "fetcher": "github",
+  "repo": "osv/ac-html-bootstrap",
+  "unstable": {
+   "version": [
+    20160302,
+    1701
+   ],
+   "deps": [
+    "web-completion-data"
+   ],
+   "commit": "481e6e441cd566554ce71cd8cb28c9e7ebb1c24b",
+   "sha256": "0ry398awbsyswc87v275x4mdyv64kr0s647y6nagqg1h3n3jhvsq"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    3
+   ],
+   "deps": [
+    "web-completion-data"
+   ],
+   "commit": "591e1e996c820da218ea1eee0a500c556769f128",
+   "sha256": "1zmjqnlbfchnb7n2v7ms7q06xma1lmf9ry3v6f4pfnwlmz5lsf3a"
+  }
+ },
+ {
+  "ename": "ac-html-csswatcher",
+  "commit": "fba8b9bf212e6fa389eae8394d0b3bbce9eb0f92",
+  "sha256": "0jb9dnm2lxadrxssf0rjqw8yvvskcq4hys8c21shjyj3gkvwbfqn",
+  "fetcher": "github",
+  "repo": "osv/ac-html-csswatcher",
+  "unstable": {
+   "version": [
+    20151208,
+    2113
+   ],
+   "deps": [
+    "web-completion-data"
+   ],
+   "commit": "b0f3e7e1a3fe49e88b6eb6432377232fc715f221",
+   "sha256": "0swbw62zh5rjjf73pvmp8brrrmk6bp061k793z4z83v7ic0cicrr"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    7
+   ],
+   "deps": [
+    "web-completion-data"
+   ],
+   "commit": "dadc3c595cf1708291096c03987f1981f3cabc6b",
+   "sha256": "0p18wxyyc1jmcwx9y5i77s25v4jszv7cmm4bkwm4dzhkxd33kh1f"
+  }
+ },
+ {
+  "ename": "ac-inf-ruby",
+  "commit": "1a72abe0fe1253149afb45b0d9e81b6846a926c0",
+  "sha256": "04jclf0yxz78x1fsaf5sh1p466947nqrcx337kyhqn0nkj3hplqr",
+  "fetcher": "github",
+  "repo": "purcell/ac-inf-ruby",
+  "unstable": {
+   "version": [
+    20131115,
+    1150
+   ],
+   "deps": [
+    "auto-complete",
+    "inf-ruby"
+   ],
+   "commit": "ee53fc9c61950da9a96df3ff5ef186f9a9faf151",
+   "sha256": "13xgv1c4gr075gffq95njra7bw1fkb5yp3xdlh3qndzw4bpary1l"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "auto-complete",
+    "inf-ruby"
+   ],
+   "commit": "3e22b66d3d3e2712a0fe783b5cdd0583a0d4c318",
+   "sha256": "1acm13n59sdgvvzicscxzrr5j1x5sa5x4rc4cnkbwb28nw5a5ysm"
+  }
+ },
+ {
+  "ename": "ac-ispell",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "0npbrvwww6mi8q8x3cc6sf02x1b3ns2w7499lip7ymbr1zi9gdxg",
+  "fetcher": "github",
+  "repo": "emacsorphanage/ac-ispell",
+  "unstable": {
+   "version": [
+    20151101,
+    226
+   ],
+   "deps": [
+    "auto-complete",
+    "cl-lib"
+   ],
+   "commit": "22bace7387e9012002a6a444922f75f9913077b0",
+   "sha256": "1cq73bdv3lkn8v3nx6aznygqaac9s5i7pvirl8wz9ib31hsgwpbk"
+  },
+  "stable": {
+   "version": [
+    0,
+    7
+   ],
+   "deps": [
+    "auto-complete",
+    "cl-lib"
+   ],
+   "commit": "a8c84f7f0b96dc091abc51b1698f24e9c994e6aa",
+   "sha256": "16qsj3wni4xhcrjx2rnxdzq6jb7jrl4bngi4an37vgdlrx3w8m6l"
+  }
+ },
+ {
+  "ename": "ac-js2",
+  "commit": "255588a330e4c9a03517885092d5678375aa7850",
+  "sha256": "0gcr0xdi89nj3854v2z3nndfgazmcdzmd6wdndl0i4s7pdfl96fa",
+  "fetcher": "github",
+  "repo": "ScottyB/ac-js2",
+  "unstable": {
+   "version": [
+    20190101,
+    933
+   ],
+   "deps": [
+    "js2-mode",
+    "skewer-mode"
+   ],
+   "commit": "2b56d09a16c1a0ce514cc1b85d64cb1be4502723",
+   "sha256": "11q4aaiqr4xnw5j0yqj35gc4a290az75qdyhadj09xr2j2jay35x"
+  }
+ },
+ {
+  "ename": "ac-math",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "02c821zabxp9qkwx252pxjmssdbmas0iwanw09r03bmiby9d4nsl",
+  "fetcher": "github",
+  "repo": "vspinu/ac-math",
+  "unstable": {
+   "version": [
+    20141116,
+    2127
+   ],
+   "deps": [
+    "auto-complete",
+    "math-symbol-lists"
+   ],
+   "commit": "c012a8f620a48cb18db7d78995035d65eae28f11",
+   "sha256": "0p5cdaw9v8jgnmjqpb95bxy4khwbdgg19wzg8jkr2j2p55dpfbd6"
+  }
+ },
+ {
+  "ename": "ac-mozc",
+  "commit": "4b3f74039d397037e640cc371d24bdb60ac90bf1",
+  "sha256": "1v3iiid8cq50i076q98ycks9m827xzncgxqwqs2rqhab0ncy3h0f",
+  "fetcher": "github",
+  "repo": "igjit/ac-mozc",
+  "unstable": {
+   "version": [
+    20150227,
+    1619
+   ],
+   "deps": [
+    "auto-complete",
+    "cl-lib",
+    "mozc"
+   ],
+   "commit": "4c6c8be4701010d9362184437c0f783e0335c631",
+   "sha256": "19cb8kq8gmrplkxil22ahvbyq5cng1l2vh2lrfiyqpjsap7zfjz5"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    4
+   ],
+   "deps": [
+    "auto-complete",
+    "cl-lib",
+    "mozc"
+   ],
+   "commit": "4c6c8be4701010d9362184437c0f783e0335c631",
+   "sha256": "19cb8kq8gmrplkxil22ahvbyq5cng1l2vh2lrfiyqpjsap7zfjz5"
+  }
+ },
+ {
+  "ename": "ac-octave",
+  "commit": "634bd324148d6b74e1098362e06dc512456cde31",
+  "sha256": "1g5s4dk1rcgkjn17jfw6g201pw0vfhqcx1nhigmnizpnzy0man9z",
+  "fetcher": "github",
+  "repo": "coldnew/ac-octave",
+  "unstable": {
+   "version": [
+    20180406,
+    334
+   ],
+   "deps": [
+    "auto-complete"
+   ],
+   "commit": "fe0f931f2024f43de3c4fff4b1ace672413adeae",
+   "sha256": "1yj5fapbp79k88k1cxrmmf91fb0j6s4s7f2dhk2afcf7z83mqkwb"
+  },
+  "stable": {
+   "version": [
+    0,
+    7
+   ],
+   "deps": [
+    "auto-complete"
+   ],
+   "commit": "6d09b94a86f43de84c60e9a699b5e1be61c0f138",
+   "sha256": "1kg5q0bw0ymynsn3j7bjavb6wr8b0bjwm6jfj254g80y1inn4bp4"
+  }
+ },
+ {
+  "ename": "ac-php",
+  "commit": "ac283f1b65c3ba6278e9d3236e5a19734e42b123",
+  "sha256": "1wqwwgdln98snlq5msdx94b7985krvqfn264hxs1h94r85kgn1ba",
+  "fetcher": "github",
+  "repo": "xcwen/ac-php",
+  "unstable": {
+   "version": [
+    20190424,
+    222
+   ],
+   "deps": [
+    "ac-php-core",
+    "auto-complete",
+    "yasnippet"
+   ],
+   "commit": "8db6d911f2e19bbef5fe915e42c4e12f283bfd41",
+   "sha256": "0yzad3bc48xdmkgcsffdj9zx9j853w1k2p2v586bcfl2vmvvq3zj"
+  },
+  "stable": {
+   "version": [
+    2,
+    2,
+    2
+   ],
+   "deps": [
+    "ac-php-core",
+    "auto-complete",
+    "yasnippet"
+   ],
+   "commit": "4490d168778a61a4ee8623defe760164cd9745b8",
+   "sha256": "1mkxayqrvz246gxr9wjabsn015hnjq96ys71syb6r4ykjn892a6m"
+  }
+ },
+ {
+  "ename": "ac-php-core",
+  "commit": "ac283f1b65c3ba6278e9d3236e5a19734e42b123",
+  "sha256": "0vk3jsxb7dgk5a6pap3bdqkqwpszil0rck1c3y0wyxrlj2y1jcvn",
+  "fetcher": "github",
+  "repo": "xcwen/ac-php",
+  "unstable": {
+   "version": [
+    20200516,
+    52
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "php-mode",
+    "popup",
+    "s",
+    "xcscope"
+   ],
+   "commit": "8db6d911f2e19bbef5fe915e42c4e12f283bfd41",
+   "sha256": "0yzad3bc48xdmkgcsffdj9zx9j853w1k2p2v586bcfl2vmvvq3zj"
+  },
+  "stable": {
+   "version": [
+    2,
+    2,
+    2
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "php-mode",
+    "popup",
+    "s",
+    "xcscope"
+   ],
+   "commit": "4490d168778a61a4ee8623defe760164cd9745b8",
+   "sha256": "1mkxayqrvz246gxr9wjabsn015hnjq96ys71syb6r4ykjn892a6m"
+  }
+ },
+ {
+  "ename": "ac-racer",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "0vxnc6q2khxf5xl3k8lwvjg5biqxasr4vm9k3c8033xwl6in299r",
+  "fetcher": "github",
+  "repo": "emacsorphanage/ac-racer",
+  "unstable": {
+   "version": [
+    20170114,
+    809
+   ],
+   "deps": [
+    "auto-complete",
+    "racer"
+   ],
+   "commit": "4408c2d652dec0432e20c05e001db8222d778c6b",
+   "sha256": "01154kqzh3pjy57vxhv27nm69p85a1fwl7r95c7pzmzxgxigfz1p"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "auto-complete",
+    "racer"
+   ],
+   "commit": "4408c2d652dec0432e20c05e001db8222d778c6b",
+   "sha256": "01154kqzh3pjy57vxhv27nm69p85a1fwl7r95c7pzmzxgxigfz1p"
+  }
+ },
+ {
+  "ename": "ac-rtags",
+  "commit": "3dea16daf0d72188c8b4043534f0833fe9b04e07",
+  "sha256": "1w9v32di9135mm598c4506gxf0xr5jyz8dyd9dhga5d60q7g9641",
+  "fetcher": "github",
+  "repo": "Andersbakken/rtags",
+  "unstable": {
+   "version": [
+    20191222,
+    920
+   ],
+   "deps": [
+    "auto-complete",
+    "rtags"
+   ],
+   "commit": "ed229d2e4070cc07ba76e537e8f5f93835ff0710",
+   "sha256": "1jf1mg2pib2rsrn280j2ywmnqgkr5jwmiaqf252jsb7ndq7p5gcr"
+  },
+  "stable": {
+   "version": [
+    2,
+    38
+   ],
+   "deps": [
+    "auto-complete",
+    "rtags"
+   ],
+   "commit": "9687ccdb9e539981e7934e768ea5c84464a61139",
+   "sha256": "1r6l7dgr2ch586zrdi5l8fhdj4qdva8ldz7cjvi2byc2pd2xs8rx"
+  }
+ },
+ {
+  "ename": "ac-skk",
+  "commit": "1d9d8268d2db4b38ca18156964483b0b067f6f5d",
+  "sha256": "0iycyfgv8v15ygngvyx66m3w3sv8p9h6q6j1hbpzwd8azl8fzj5z",
+  "fetcher": "github",
+  "repo": "myuhe/ac-skk.el",
+  "unstable": {
+   "version": [
+    20141230,
+    119
+   ],
+   "deps": [
+    "auto-complete",
+    "cl-lib",
+    "ddskk",
+    "tinysegmenter"
+   ],
+   "commit": "d25a265930430d080329789fb253d786c01dfa24",
+   "sha256": "1nvz0jfz4x99xc5ywspl8fdpyqns5zd0j7i4bwzlwplmy3qakjwm"
+  }
+ },
+ {
+  "ename": "ac-slime",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "0mk3k1lcbqa16xvsbgk28x09vzqyaidqaqpq934xdbrwhdgwgckg",
+  "fetcher": "github",
+  "repo": "purcell/ac-slime",
+  "unstable": {
+   "version": [
+    20171027,
+    2100
+   ],
+   "deps": [
+    "auto-complete",
+    "cl-lib",
+    "slime"
+   ],
+   "commit": "6c80cb602ddad46486288f94ad7546396c6e4b1a",
+   "sha256": "11w1z653klghi6inv9n92cigz8m3c67j3r18mdk39inc3izwplkj"
+  },
+  "stable": {
+   "version": [
+    0,
+    8
+   ],
+   "deps": [
+    "auto-complete",
+    "cl-lib",
+    "slime"
+   ],
+   "commit": "df6c4e88b5ba2d15d47a651ecf7edc0986624112",
+   "sha256": "13yghv7p6c91fn8mrxbwrb6ldk5n3b6nj6a7pwsvks1q73i1pl88"
+  }
+ },
+ {
+  "ename": "ac-sly",
+  "commit": "bb26741e841d4886c14f0a059a52805732f179b1",
+  "sha256": "1ng81b5f8w2s9mm9s7h5kwyx8fdwndnlsbzx50slmqyaz2ad15mx",
+  "fetcher": "github",
+  "repo": "qoocku/ac-sly",
+  "unstable": {
+   "version": [
+    20170728,
+    1027
+   ],
+   "deps": [
+    "auto-complete",
+    "cl-lib",
+    "sly"
+   ],
+   "commit": "bf69c687c4ecf1994349d20c182e9b567399912e",
+   "sha256": "09g6v2yp3wl566488zsb79lklqpai9dgz6xwv1y5h6zkghxvkhpy"
+  }
+ },
+ {
+  "ename": "academic-phrases",
+  "commit": "fe4323043fb875c0252861800e61fdd0a51ed453",
+  "sha256": "18y6lff7xwg6hczwgavwp32848gnlmc30afra9x7m8wmdddps1bh",
+  "fetcher": "github",
+  "repo": "nashamri/academic-phrases",
+  "unstable": {
+   "version": [
+    20180723,
+    1021
+   ],
+   "deps": [
+    "dash",
+    "ht",
+    "s"
+   ],
+   "commit": "25d9cf67feac6359cb213f061735e2679c84187f",
+   "sha256": "0m32jpg6n0azz2f4y57y92zfvzm54ankx5cm06gli2zw2v1218fw"
+  }
+ },
+ {
+  "ename": "ace-flyspell",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1zgywb90cg64nllbbk0x9ipm6znyc5yh7vkajrrnw06r5vabyp9y",
+  "fetcher": "github",
+  "repo": "cute-jumper/ace-flyspell",
+  "unstable": {
+   "version": [
+    20170309,
+    509
+   ],
+   "deps": [
+    "avy"
+   ],
+   "commit": "538d4f8508d305262ba0228dfe7c819fb65b53c9",
+   "sha256": "1yplf5klgjjzx3cb1ihqb9f9cwn898l0vhasc3cwiqz6ldyq2na8"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    3
+   ],
+   "deps": [
+    "avy"
+   ],
+   "commit": "044d38fb8eb390ef1f51cf92cfe5c4ffd103044c",
+   "sha256": "0yy7g2903v78a8pavhxi8c7vqbmifn2sjk84zhw5aygihp3d6vf0"
+  }
+ },
+ {
+  "ename": "ace-isearch",
+  "commit": "344f0cf784a027cde196b7d766024fb415fa1968",
+  "sha256": "0n8qf08z9n8c2sp5ks29nxcfks5mil1jj6wq348apda8safk36hm",
+  "fetcher": "github",
+  "repo": "tam17aki/ace-isearch",
+  "unstable": {
+   "version": [
+    20200420,
+    518
+   ],
+   "commit": "58e4f1ad5cbbd2f86d161881d3f3ded3a3db984c",
+   "sha256": "0mlswnyd89ir060kiinzlrh70mdy8nfm2zpwr9jj2p19hrslmc4r"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    4
+   ],
+   "deps": [
+    "ace-jump-mode",
+    "avy",
+    "helm-swoop"
+   ],
+   "commit": "7e041d058492c5c35ec70de0e7c5586043e7e5ec",
+   "sha256": "0233ai62zhsy5yhv72016clygwp2pcg80y6kr4cjm2k1k2wwy7m9"
+  }
+ },
+ {
+  "ename": "ace-jump-buffer",
+  "commit": "31100b5b899e942de7796bcbf6365625d1b62574",
+  "sha256": "0hkxa0ps0v1hwmjafqbnyr6rc4s0w95igk8y3w53asl7f5sj5mpi",
+  "fetcher": "github",
+  "repo": "waymondo/ace-jump-buffer",
+  "unstable": {
+   "version": [
+    20171031,
+    1550
+   ],
+   "deps": [
+    "avy",
+    "dash"
+   ],
+   "commit": "0d335064230caf3efdd5a732e8fbd67e3948ed6a",
+   "sha256": "04rlg8mlx3kggn04krvi3zgx263j1ysbgfccawaarzixas2r9gd9"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "deps": [
+    "avy",
+    "dash"
+   ],
+   "commit": "02797c22c10a817dbbdfbd8fddceeba6c4f0499a",
+   "sha256": "13wq92ia18q9vyhmvnz1grl1l18hxnaisb7hv13dhfc06alcsrw2"
+  }
+ },
+ {
+  "ename": "ace-jump-helm-line",
+  "commit": "8925f3daa92ff39776b55642aa9ec0e49245c0c7",
+  "sha256": "04q8wh6jskvbiq6y2xsp2ir23vgz5zw09rm127sgiqrmn0jc61b9",
+  "fetcher": "github",
+  "repo": "cute-jumper/ace-jump-helm-line",
+  "unstable": {
+   "version": [
+    20160918,
+    1836
+   ],
+   "deps": [
+    "avy",
+    "helm"
+   ],
+   "commit": "1483055255df3f8ae349f7520f05b1e43ea3ed37",
+   "sha256": "191a2g1if1jliikbxkpwmvlp4v1sp541j71xrlymili8ygm0idq5"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "deps": [
+    "avy",
+    "helm"
+   ],
+   "commit": "8779050e4794279946892b6a156d0086554a9c9e",
+   "sha256": "1d4bxxcnjbdr6cjr3jmz2zrnzjv5pwrypbp4xqgqyv9rz02n7ac1"
+  }
+ },
+ {
+  "ename": "ace-jump-mode",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "0yk0kppjyblr5wamncrjm3ym3n8jcl0r0g0cbnwni89smvpngij6",
+  "fetcher": "github",
+  "repo": "winterTTr/ace-jump-mode",
+  "unstable": {
+   "version": [
+    20140616,
+    815
+   ],
+   "commit": "8351e2df4fbbeb2a4003f2fb39f46d33803f3dac",
+   "sha256": "17axrgd99glnl6ma4ls3k01ysdqmiqr581wnrbsn3s4gp53mm2x6"
+  },
+  "stable": {
+   "version": [
+    2,
+    0
+   ],
+   "commit": "a62a6867811cd739dd98a5e00a2d2e17edfb5b71",
+   "sha256": "1bwvzh056ls2v7y26a0s4j5mj582dmds04lx4x6iqihs04ss74bb"
+  }
+ },
+ {
+  "ename": "ace-jump-zap",
+  "commit": "3b435db3b79333a20aa27a72f33c431f0a019ba1",
+  "sha256": "07bkmly3lvlbby2m13nj3m1q0gcnwy5sas7d6ws6vr9jh0d36byb",
+  "fetcher": "github",
+  "repo": "waymondo/ace-jump-zap",
+  "unstable": {
+   "version": [
+    20170717,
+    1849
+   ],
+   "deps": [
+    "ace-jump-mode",
+    "dash"
+   ],
+   "commit": "52b5d4c6c73bd0fc833a0dcb4e803a5287d8cae8",
+   "sha256": "1iw90mk6hdrbskxgv67xj27qd26w5dlh4s6a6xqqsj8ld56nzbvr"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "deps": [
+    "ace-jump-mode",
+    "dash"
+   ],
+   "commit": "1a9bf779d8f9225ede9ec482b840942bb58111df",
+   "sha256": "0r875w4aq3p091hcrpkpqsivn1q9hmq2ppa1rvxzdaq0rhl9kfz4"
+  }
+ },
+ {
+  "ename": "ace-link",
+  "commit": "68032f40c0ce4170a22db535be4bfa7099f61f85",
+  "sha256": "1jl805r2s3wa0xyhss1q28rcy6y2fngf0yfcrcd9wf8kamhpajk5",
+  "fetcher": "github",
+  "repo": "abo-abo/ace-link",
+  "unstable": {
+   "version": [
+    20200515,
+    1854
+   ],
+   "deps": [
+    "avy"
+   ],
+   "commit": "b610dcb99510328d07ab1e1ea67b2f87ecb1cc5b",
+   "sha256": "0r7cyvrkbqq0dsm5963wn2i1wqgq0md5r8b2afjbr3m9b6v5lnq4"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "deps": [
+    "avy"
+   ],
+   "commit": "7b9bc8d916b60a501c32b63ce81f315486ad44e9",
+   "sha256": "147dz79vg4ym5wg3d544bw2khdb2j3hr73rw4qfm64wf0q2dj0vk"
+  }
+ },
+ {
+  "ename": "ace-mc",
+  "commit": "62e3a5f23ce219b16081cb0bba9fc4699e11fafa",
+  "sha256": "1kca6ha2glhv7lkamqx3sxp7dy05c7f6xxy3lr3v2bik8r50jss8",
+  "fetcher": "github",
+  "repo": "mm--/ace-mc",
+  "unstable": {
+   "version": [
+    20190206,
+    749
+   ],
+   "deps": [
+    "ace-jump-mode",
+    "dash",
+    "multiple-cursors"
+   ],
+   "commit": "6877880efd99e177e4e9116a364576def3da391b",
+   "sha256": "180licc7w5b6f42ifwvllbnmf3aq8cbr8jhkbk37lzick4sv10d2"
+  }
+ },
+ {
+  "ename": "ace-pinyin",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1b3asvzm3k66lsdkmlsgmnf8xlyic8zv294j1iahzkwm6bzqj8wd",
+  "fetcher": "github",
+  "repo": "cute-jumper/ace-pinyin",
+  "unstable": {
+   "version": [
+    20190917,
+    318
+   ],
+   "deps": [
+    "avy",
+    "pinyinlib"
+   ],
+   "commit": "8b2e9335b02486730ea4ceee790130cc5328f9ea",
+   "sha256": "1p2h4bva0v8yad075is1zkhn69x78ddwa8ncdfm0zzysddw5w8bq"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    5
+   ],
+   "deps": [
+    "ace-jump-mode",
+    "avy",
+    "pinyinlib"
+   ],
+   "commit": "c444d8d6861dafd06dd41e694dc9db32652e3b7c",
+   "sha256": "1d2g873zwq78ggs47954lccmaky20746wg0gafyj93d1qyc3m8rn"
+  }
+ },
+ {
+  "ename": "ace-popup-menu",
+  "commit": "53742e2242101c4b3b3901f5c74e24facf62c7d6",
+  "sha256": "1cq1mpv7v98bqrpsm598krq1741b6rwih71cx3yjifpbagrv4m5s",
+  "fetcher": "github",
+  "repo": "mrkkrp/ace-popup-menu",
+  "unstable": {
+   "version": [
+    20190713,
+    1337
+   ],
+   "deps": [
+    "avy-menu"
+   ],
+   "commit": "02b22bdb40a5828dbd0a2af290034adb761743f0",
+   "sha256": "12b6s99d0wzs4q827kn5zr56vrp3x1kf2pxp4cr8z5hikylfswcs"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "deps": [
+    "avy-menu"
+   ],
+   "commit": "e7cc8bace9dda5c9fbe545c6fbd41c12679c3d7d",
+   "sha256": "1khqh5b9c7ass3q2gc04ayc8idanabkyfpaqvfnag063x16fv40c"
+  }
+ },
+ {
+  "ename": "ace-window",
+  "commit": "42fe131d3c2ea498e4df30ba539a6b91c00f5b07",
+  "sha256": "1k0x8m1phmvgdxb5aj841iai9q96a5lfq8i4b5vnlbc3w888n3xa",
+  "fetcher": "github",
+  "repo": "abo-abo/ace-window",
+  "unstable": {
+   "version": [
+    20200311,
+    1025
+   ],
+   "deps": [
+    "avy"
+   ],
+   "commit": "7003c88cd9cad58dc35c7cd13ebc61c355fb5be7",
+   "sha256": "0f3r40d5yxp2pm2j0nn86s29nqj8py0jxjbj50v4ci3hsd92d8jl"
+  },
+  "stable": {
+   "version": [
+    0,
+    10,
+    0
+   ],
+   "deps": [
+    "avy"
+   ],
+   "commit": "7003c88cd9cad58dc35c7cd13ebc61c355fb5be7",
+   "sha256": "0f3r40d5yxp2pm2j0nn86s29nqj8py0jxjbj50v4ci3hsd92d8jl"
+  }
+ },
+ {
+  "ename": "achievements",
+  "commit": "2790c00a79df237cf853a00f094fdeca9e532a9a",
+  "sha256": "1cl2rlmfhs5mhh5rjdr66a0mszy9hb50z8fxn1c081cnqd6iw8a2",
+  "fetcher": "gitlab",
+  "repo": "gvol/emacs-achievements",
+  "unstable": {
+   "version": [
+    20150531,
+    1317
+   ],
+   "deps": [
+    "keyfreq"
+   ],
+   "commit": "c8275ee492d56255999d58f2988129ab29145182",
+   "sha256": "14p9lmnrpsnx94ycvsqmfxnk5kws0cman4a6fbnikl35ma8zc01x"
+  }
+ },
+ {
+  "ename": "ack-menu",
+  "commit": "8ff331ed45e5b7697e4862e723408602ecc98bc7",
+  "sha256": "1d2kw04ndxji2qjcm1b65qnxpp08zx8gbia8bl6x6mnjb2isc2d9",
+  "fetcher": "github",
+  "repo": "chumpage/ack-menu",
+  "unstable": {
+   "version": [
+    20150504,
+    2022
+   ],
+   "deps": [
+    "mag-menu"
+   ],
+   "commit": "f77be93a4697926ecf3195a355eb69580f695f4d",
+   "sha256": "02ba4d8qkvgy52g0zcbyfvsnhr9685gq569nkwa2as30xdcq3khm"
+  }
+ },
+ {
+  "ename": "actionscript-mode",
+  "commit": "2c11e74f2156f109b713380cebf83022d7159d4a",
+  "sha256": "1dkiay9jmizvslji5kzab4dxm1dq0jm8ps7sjq6710g7a5aqdvwq",
+  "fetcher": "github",
+  "repo": "austinhaas/actionscript-mode",
+  "unstable": {
+   "version": [
+    20180527,
+    1701
+   ],
+   "commit": "65abd58e198458a8e46748c5962c41d80d60c4ea",
+   "sha256": "0cb8kkhh43wg63abjx6d4x55f0l3r6ziqcaz8rz1zr12jffnac8z"
+  },
+  "stable": {
+   "version": [
+    7,
+    2,
+    2
+   ],
+   "commit": "fddd7220342d29e7eca734f6b798b7a2849717a5",
+   "sha256": "0zybch8hz3mj63i0pxynb4d76ywqcy7b4fsa4hh71c2kb0bnczb3"
+  }
+ },
+ {
+  "ename": "activity-watch-mode",
+  "commit": "9780c413da8001651191fb8f9708fe9691d714cf",
+  "sha256": "0k0ai6658gb43c4ylrq66zqzrfh6ksvkf0kxj2qx8a5a1aw9bd4d",
+  "fetcher": "github",
+  "repo": "pauldub/activity-watch-mode",
+  "unstable": {
+   "version": [
+    20200416,
+    637
+   ],
+   "deps": [
+    "cl-lib",
+    "json",
+    "request"
+   ],
+   "commit": "9d591c5ec9a2b2c7b55a754dd37c7434b2ef9fdc",
+   "sha256": "0a1ylq0il5aca5y9acykaa47p8d9xb3jy4wgi1lpm60z06n4m99y"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "json",
+    "request"
+   ],
+   "commit": "9d591c5ec9a2b2c7b55a754dd37c7434b2ef9fdc",
+   "sha256": "0a1ylq0il5aca5y9acykaa47p8d9xb3jy4wgi1lpm60z06n4m99y"
+  }
+ },
+ {
+  "ename": "adafruit-wisdom",
+  "commit": "18483af52c26f719fbfde626db84a67750bf4754",
+  "sha256": "0ckh420cirspwg2yd5q9y1az03j2l1jzd67g8dpvqjkgdp485gad",
+  "fetcher": "github",
+  "repo": "gonewest818/adafruit-wisdom.el",
+  "unstable": {
+   "version": [
+    20200217,
+    306
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "86bb7249bd4b0c8ebaf749f69f00c8faeff11063",
+   "sha256": "062m653pyzddwjf75a6clsdkihfg35b3phbbff6vdyymg77608f2"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "50414eaac3dbeb67a1329833b912d26b164873eb",
+   "sha256": "0s6xrg9g7f4cv745k4zmxhgqr68qajfr6hi6wpyab330y0hd1m0v"
+  }
+ },
+ {
+  "ename": "add-hooks",
+  "commit": "901f846aef46d512dc0a1770bab7f07c0ae330cd",
+  "sha256": "09a5b3prznibkb5igfn8x3vsjrlkh3534zycs8g25g4li87mcb6p",
+  "fetcher": "github",
+  "repo": "nickmccurdy/add-hooks",
+  "unstable": {
+   "version": [
+    20171217,
+    123
+   ],
+   "commit": "1845137703461fc44bd77cf24014ba58f19c369d",
+   "sha256": "02s9mv26ycypn4qfshrh17v1hsys2q9vffxj3g4lgq0lykplvkkm"
+  },
+  "stable": {
+   "version": [
+    3,
+    1,
+    1
+   ],
+   "commit": "a1043b7cdb1ea98055a2c99f8d37584a553ca362",
+   "sha256": "1jv9fpcsm572zg0j1mbpbfkqgdlqapy89xhhj19pswkhjns1y2wl"
+  }
+ },
+ {
+  "ename": "add-node-modules-path",
+  "commit": "63e99d8fc0678d7b1831cae8940e9e6547780861",
+  "sha256": "0gbl875fgqr5np6r4cs8njs6fil1qmy8a5wir88x78ybdwwxsmbl",
+  "fetcher": "github",
+  "repo": "codesuki/add-node-modules-path",
+  "unstable": {
+   "version": [
+    20180710,
+    2342
+   ],
+   "commit": "f31e69ccb681f882aebb806ce6e9478e3ac39708",
+   "sha256": "0p106bqmvdr8by5iv02bshm339qbrjcch2d15mrm4h3nav03v306"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    0
+   ],
+   "commit": "6f7801b2c41e3711406b7e1654257ad5557f5bb3",
+   "sha256": "1pfgy1k7vp34k4zb9835y3x4jmf81na60vsf80wlgvfafwk170z6"
+  }
+ },
+ {
+  "ename": "addressbook-bookmark",
+  "commit": "a497aec6e27efa627068542cae5a16c01c3c6d3c",
+  "sha256": "15p00v4ndrsbadal0ss176mks4ynj39786bmrnil29b6sqibd43r",
+  "fetcher": "github",
+  "repo": "thierryvolpiatto/addressbook-bookmark",
+  "unstable": {
+   "version": [
+    20190612,
+    1638
+   ],
+   "commit": "d8e502fc2f3d3ab1508ce9e50ebf8a9addc6e5b3",
+   "sha256": "1bgx4vn7q3nqfawip2m4a8wdm91vjnz1nv8957c748707x7rlkrr"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "ad3c73369b804a48803fdfdf2ab613e6220260de",
+   "sha256": "012kfqkmpagn8jrp09acpx631qmjim7b33j0pahv1fcqhin89pn6"
+  }
+ },
+ {
+  "ename": "adoc-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0jd3zr4zpb4qqn504azl0y02cryv7n9wphv64b0fbpipr7w5hm2c",
+  "fetcher": "github",
+  "repo": "sensorflo/adoc-mode",
+  "unstable": {
+   "version": [
+    20160314,
+    2130
+   ],
+   "deps": [
+    "markup-faces"
+   ],
+   "commit": "745884359a1b8826ede2c4cfd2f0b5478953ac40",
+   "sha256": "199da15f6p84809z33w3m35lrk9bgx8qpgnxsxgisli373mpzvd8"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    6
+   ],
+   "deps": [
+    "markup-faces"
+   ],
+   "commit": "995785538489e573ad208f73c4e833ba60c5cfdb",
+   "sha256": "0kp2aafjhqxz3mjr9hkkss85r4n51chws5a2qj1xzb63dh36liwm"
+  }
+ },
+ {
+  "ename": "aes",
+  "commit": "33ca3106852f82624b36c7e3f03f5c0c620f304f",
+  "sha256": "11vl9x3ldrv7q7rd29xk4xmlvfxs0m6iys84f6mlgf00190l5r5v",
+  "fetcher": "github",
+  "repo": "Sauermann/emacs-aes",
+  "unstable": {
+   "version": [
+    20171029,
+    623
+   ],
+   "commit": "b7d5da89c3443292e4f0b1c9d254d459933cf5af",
+   "sha256": "0nz1lf77qr3vm90rm02d4inw8glav722rxsiqds76m4xsjrq02m7"
+  },
+  "stable": {
+   "version": [
+    0,
+    9
+   ],
+   "commit": "b7d5da89c3443292e4f0b1c9d254d459933cf5af",
+   "sha256": "0nz1lf77qr3vm90rm02d4inw8glav722rxsiqds76m4xsjrq02m7"
+  }
+ },
+ {
+  "ename": "afternoon-theme",
+  "commit": "583256b7fa48501c8bfad305d76d2e16b6441539",
+  "sha256": "13xgdw8px58sxpl7nyhkcdxwqdpp13i8wghvlb3l4471plw3vqgj",
+  "fetcher": "github",
+  "repo": "osener/emacs-afternoon-theme",
+  "unstable": {
+   "version": [
+    20140104,
+    1859
+   ],
+   "commit": "89b1d778a1f8b385775c122f2bd1c62f0fbf931a",
+   "sha256": "19d5d6qs5nwmpf26rsb86ranb5p4236qp7p2b4i88cimcmzspylb"
+  }
+ },
+ {
+  "ename": "ag",
+  "commit": "67f410ac3a58a038e194bcf174bc0a8ceceafb9a",
+  "sha256": "1r4ai09vdckkg4h4i7dp781qqmm4kky53p4q8azp3n2c78i1vz6g",
+  "fetcher": "github",
+  "repo": "Wilfred/ag.el",
+  "unstable": {
+   "version": [
+    20190726,
+    9
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "s"
+   ],
+   "commit": "bd81d68466e44301505629454dfc689b6c17d94b",
+   "sha256": "1p918y24vcn2pdliaymd210xp9fvhd4a1srqbv2lfiqrh59yjidx"
+  },
+  "stable": {
+   "version": [
+    0,
+    48
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "s"
+   ],
+   "commit": "bd81d68466e44301505629454dfc689b6c17d94b",
+   "sha256": "1p918y24vcn2pdliaymd210xp9fvhd4a1srqbv2lfiqrh59yjidx"
+  }
+ },
+ {
+  "ename": "aggressive-fill-paragraph",
+  "commit": "982f5936f2d83222263df2886ca0b629076366bb",
+  "sha256": "1df4bk3ks09805y67af6z1gpfln0lz773jzbbckfl0fy3yli0dja",
+  "fetcher": "github",
+  "repo": "davidshepherd7/aggressive-fill-paragraph-mode",
+  "unstable": {
+   "version": [
+    20180910,
+    816
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "2d65d925318006e2f6fa261ad192fbc2d212877b",
+   "sha256": "0x4630lz9s59hidpf4pqc3697fgd09ac3zjax0xq3kk1993hrpa2"
+  }
+ },
+ {
+  "ename": "aggressive-indent",
+  "commit": "1e6aed365c42987d64d0cd9a8a6178339b1b39e8",
+  "sha256": "1qi8jbr28gax35siim3hnnkiy8pa2vcrzqzc6axr98wzny46x0i2",
+  "fetcher": "github",
+  "repo": "Malabarba/aggressive-indent-mode",
+  "unstable": {
+   "version": [
+    20200512,
+    1207
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "12a64b4e5c1a1e124baa74336738b6ae1972607f",
+   "sha256": "1pkqjg30l9sjh5m8w4p8qrlw92sxr28c3d7mq6h8sfc8dkgivd33"
+  },
+  "stable": {
+   "version": [
+    1,
+    9,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d6778ae89cd2d40949aa076a43e327f7acff59c3",
+   "sha256": "0xya19w1bwpqrrqvmms0lfhqb168iv7j6kvnn49zbynnf9dhgr9w"
+  }
+ },
+ {
+  "ename": "agtags",
+  "commit": "eb6677262303a0cad2d844db77693c00d9bc575a",
+  "sha256": "07kpdbchplkbspid8gnjsprbdwf244nr2q596pw6jl17bysbbbk7",
+  "fetcher": "github",
+  "repo": "vietor/agtags",
+  "unstable": {
+   "version": [
+    20191112,
+    142
+   ],
+   "commit": "8813eb055dfd3faf1021c7d02fed0dabd8e518c1",
+   "sha256": "0xj394fiqsyh32g21mcp64srs8dlf0ixaildyla1gm27v8cgiakb"
+  }
+ },
+ {
+  "ename": "ah",
+  "commit": "029c328e87ceb346e162c47162af727af22b65ac",
+  "sha256": "0h5kjf3sa17n8swkynb0fqk2jiwwgib3lzmrhwlk6k8pvzsgvlhj",
+  "fetcher": "github",
+  "repo": "takaxp/ah",
+  "unstable": {
+   "version": [
+    20191212,
+    652
+   ],
+   "commit": "938c78327aad94d5f8e8d86ffd9808a687f3e953",
+   "sha256": "1zzhy5ajr6ivmj4jbbmaznxfqgxl4xy21s2r4wip668w8kw02h4m"
+  }
+ },
+ {
+  "ename": "ahg",
+  "commit": "eb2493e54641d6ca54461f237d3b7d30067a639f",
+  "sha256": "1za0hsk6mz6h958mqh4wcv3jv02qdbwi28cwnk90fpkkn43grwdi",
+  "fetcher": "git",
+  "url": "https://bitbucket.org/agriggio/ahg",
+  "unstable": {
+   "version": [
+    20200304,
+    741
+   ],
+   "commit": "0ece48646ef7a8c813005934cc13f984b9998707",
+   "sha256": "0ypck79bmv4pa8l555kgij69jbpkv4fz9w91qs30lacjmrj0nha5"
+  }
+ },
+ {
+  "ename": "ahk-mode",
+  "commit": "e608f40d00a3b2a80a6997da00e7d04f76d8ef0d",
+  "sha256": "0jx5vhlfw5r6l4125bjjbf7dl1589ac6j419swx26k3p8p58d93r",
+  "fetcher": "github",
+  "repo": "ralesi/ahk-mode",
+  "unstable": {
+   "version": [
+    20200412,
+    1832
+   ],
+   "commit": "729007b5f22a49f5187ff47fca18c0d674e73047",
+   "sha256": "0989iva0igmd3y61hihwnc7mhn11midimrnbpvq7d062iy7g4vaw"
+  },
+  "stable": {
+   "version": [
+    1,
+    5,
+    6
+   ],
+   "commit": "bf3205efe7b7a40f3c8978f68f14ea3a939cffa8",
+   "sha256": "02nkcin0piv7s93c9plhy361dbqr78m0gd19myc7qb7gnm36kzpn"
+  }
+ },
+ {
+  "ename": "ahungry-theme",
+  "commit": "520295978fd7de3f4266dd69cc30d0b4fdf09db0",
+  "sha256": "0fhim0qscpqx9siprp3ax1azxzmqkzvrjx517d9bnd68z7xxbpqy",
+  "fetcher": "github",
+  "repo": "ahungry/color-theme-ahungry",
+  "unstable": {
+   "version": [
+    20180131,
+    328
+   ],
+   "commit": "a038d91ec593d1f1b19ca66a0576d59bbc24c523",
+   "sha256": "0f86xp7l8bv4z5dgf3pamjgqyiq3kfx9gbi9wcw0m6lbza8db15a"
+  },
+  "stable": {
+   "version": [
+    1,
+    10,
+    0
+   ],
+   "commit": "45bf75f17752c8e8dd4c8a4531c0aa419cdccb84",
+   "sha256": "03xypgq6vy7819r42g23kgn7p775bc0v9blzhi0zp5c61p4cw8v3"
+  }
+ },
+ {
+  "ename": "aio",
+  "commit": "95744cc13e7ac8d9acd794004d951f62e5880fa4",
+  "sha256": "0sd8g2w4n9r2ndmp353v89xvky8043vmd92v2ggbl45chhpjl5zw",
+  "fetcher": "github",
+  "repo": "skeeto/emacs-aio",
+  "unstable": {
+   "version": [
+    20200410,
+    1409
+   ],
+   "commit": "9367005c44c42c46c8ca1e7d3f780731c7d123dd",
+   "sha256": "063avjlizpjc53myjzvkqsp64gkxwcc7w7shjdf1xgjb9b58pbc1"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "077722896e649e7a33dcafbc4585686a29423979",
+   "sha256": "1y7j10j74r3fy0rcb8g3cm9nlls34qb0pz9xkia7psp77syrlz54"
+  }
+ },
+ {
+  "ename": "airline-themes",
+  "commit": "addeb923176132a52807308fa5e71d41c9511802",
+  "sha256": "0jkhb6nigyjmwqny7g59h4ssfy64vl3qnwcw46wnx5k9i73cjyih",
+  "fetcher": "github",
+  "repo": "AnthonyDiGirolamo/airline-themes",
+  "unstable": {
+   "version": [
+    20200511,
+    1543
+   ],
+   "deps": [
+    "powerline"
+   ],
+   "commit": "a6a3bd55baee29bd372869c835aded0f7d5e5f76",
+   "sha256": "1yg9wdagysfa5xswdrnwngbzf7gmdhjsl40ivqnxxvb74adxcwp6"
+  },
+  "stable": {
+   "version": [
+    1,
+    8
+   ],
+   "deps": [
+    "powerline"
+   ],
+   "commit": "5ea031bcbdf665afea7e47e519a49e2c33978833",
+   "sha256": "1jx17g8a6pxkw4zlx3fwhqgxfzcf3019k8fklykamfrkharzsc2l"
+  }
+ },
+ {
+  "ename": "airplay",
+  "commit": "b7f9d8229e4c91f4e3e8925b07e59d2a81cc745e",
+  "sha256": "095nibgs197iplphk6csvkgsrgh1fcfyy33py860v6qmihvk538f",
+  "fetcher": "github",
+  "repo": "gongo/airplay-el",
+  "unstable": {
+   "version": [
+    20130212,
+    1226
+   ],
+   "deps": [
+    "deferred",
+    "request",
+    "simple-httpd"
+   ],
+   "commit": "bd690aafcae3a887946e1bba8327597932d964ad",
+   "sha256": "1lxpfswp1bjrz192px79f155dycf2kazpr7dfrcr1gyshlgxkpf7"
+  }
+ },
+ {
+  "ename": "alan-mode",
+  "commit": "6e52314db81dad3517ab400099b032260c3e3e6f",
+  "sha256": "1528rh26kr9zj43djbrfb7vmq78spfay3k3ps5apc580ipx1a4hg",
+  "fetcher": "github",
+  "repo": "M-industries/AlanForEmacs",
+  "unstable": {
+   "version": [
+    20190407,
+    555
+   ],
+   "deps": [
+    "flycheck",
+    "s"
+   ],
+   "commit": "a5a705b64230bb14ad1d19bcc0613e3261e8cbe5",
+   "sha256": "1jhsrb26fpm9yykp974rx77ika76zq3gq7pcjgixw4d4ga737d95"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "0089e7c874c6d35e55be6ecd479ada2b97688a1f",
+   "sha256": "0mw9ja0f2jsj0vqk1zqwpzxm9j2yfahiibd8xkhx0wan0dggx592"
+  }
+ },
+ {
+  "ename": "alarm-clock",
+  "commit": "440fe05fa0d10d54e9c52e2e54e71a1321325376",
+  "sha256": "1cgrj6dzpx0q15qzr9d342wg8w92c2r4zmk7rif2h87qxr66fbrg",
+  "fetcher": "github",
+  "repo": "wlemuel/alarm-clock",
+  "unstable": {
+   "version": [
+    20191204,
+    716
+   ],
+   "deps": [
+    "f"
+   ],
+   "commit": "644f331071f8b09a898fae490541908b5054d2e6",
+   "sha256": "0yf2mikpxnfl673rv0w7xp1cvlkgvlmzgaixva3ppz6f0wg3vgz6"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "f"
+   ],
+   "commit": "2621d3a492d7f4e10a34d9d1d4af015df55a2b1b",
+   "sha256": "1l1q9hkip9yikvppxscf6vy6wls16ryhgyp1x8640v81xh1jy8jb"
+  }
+ },
+ {
+  "ename": "alchemist",
+  "commit": "6616dc61d17c5bd89bc4d226baab24a1f8e49b3e",
+  "sha256": "18jxw0zb7y34qbm4bcpfpb2656f0h9grmrbfskgp4ra4q5q3n369",
+  "fetcher": "github",
+  "repo": "tonini/alchemist.el",
+  "unstable": {
+   "version": [
+    20180312,
+    1304
+   ],
+   "deps": [
+    "company",
+    "dash",
+    "elixir-mode",
+    "pkg-info",
+    "s"
+   ],
+   "commit": "6f99367511ae209f8fe2c990779764bbb4ccb6ed",
+   "sha256": "12f95rwxs11sqf1w9pnf6cxc2lh2jz4nqkq33p8b5yamnl8cq9kg"
+  },
+  "stable": {
+   "version": [
+    1,
+    8,
+    2
+   ],
+   "deps": [
+    "company",
+    "dash",
+    "elixir-mode",
+    "pkg-info"
+   ],
+   "commit": "34caeed1bd231c7dfa8d2b9aa5c5de2b2a059601",
+   "sha256": "1cci0sq568ghx6x7my96m0iiwvqz2f4dh6k3gn3mmfyvi7bmrpww"
+  }
+ },
+ {
+  "ename": "alda-mode",
+  "commit": "848cb17d871287c401496e4483e400b44696e89d",
+  "sha256": "0qvaxh4392rpxikylcnn31z13wabaydj5aa4jyn499ggqdz7liw9",
+  "fetcher": "gitlab",
+  "repo": "jgkamat/alda-mode",
+  "unstable": {
+   "version": [
+    20180608,
+    605
+   ],
+   "commit": "1692b9003d2c3de403251ec452c6ce43ec819c84",
+   "sha256": "0kz0b2c1np088wbmnlvznizsv8nwiidgs67cn4dz46k66g9yg3g5"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "97c20b1fd9ad3f138e1100e3a837d05108c4c564",
+   "sha256": "1wsvs756cbwbxlaxij352kman7196m39684m6sqnfb685cfrwzdj"
+  }
+ },
+ {
+  "ename": "alect-themes",
+  "commit": "84c25a290ae4bcc4674434c83c66ae128e4c4282",
+  "sha256": "04fq65qnxlvl5nc2q037c6yb4nf422dfw2913gv6zfh9rdmxsks8",
+  "fetcher": "github",
+  "repo": "alezost/alect-themes",
+  "unstable": {
+   "version": [
+    20190506,
+    1440
+   ],
+   "commit": "da7305075d292cc1909bf26dc5634bc3cc8d2603",
+   "sha256": "06nsfmydlcdqi4fp3nn6yz4xys38f3q196pf3bmmdqgg7pbcm259"
+  },
+  "stable": {
+   "version": [
+    0,
+    9
+   ],
+   "commit": "a24065dc780738e914140d617bfe119c889d9c78",
+   "sha256": "0nffxpdm0sa7bynwi0rmlwpc4qmvbda5ankhzz7fmk4ap9fkjxv9"
+  }
+ },
+ {
+  "ename": "alert",
+  "commit": "113953825ac4ff98d90a5375eb48d8b7bfa224e7",
+  "sha256": "0x3cvczq09jvshz435jw2fjm69457x2wxdvvbbjq46nfnybhi118",
+  "fetcher": "github",
+  "repo": "jwiegley/alert",
+  "unstable": {
+   "version": [
+    20200303,
+    2118
+   ],
+   "deps": [
+    "cl-lib",
+    "gntp",
+    "log4e"
+   ],
+   "commit": "7046393272686c7a1a9b3e7f7b1d825d2e5250a6",
+   "sha256": "1s93ijkax0s78qn79c364ainmq7jq4gc95akl9wra642ql6hz3iq"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "deps": [
+    "cl-lib",
+    "gntp",
+    "log4e"
+   ],
+   "commit": "9f329be87820474925f29b52a1131084c8ea95b9",
+   "sha256": "0lc0p5cl4hfrzw1z2ghb11k1lvljn5m08jw5fmgwgxv667kwh49r"
+  }
+ },
+ {
+  "ename": "alert-termux",
+  "commit": "d43e98a7142cf0edc89fa9e2f2817787c073667f",
+  "sha256": "19dfxbpp1kn1ara0fj9xr0ishpk1yiykg2al8g43rcy615vkpk8j",
+  "fetcher": "github",
+  "repo": "gergelypolonkai/alert-termux",
+  "unstable": {
+   "version": [
+    20181119,
+    951
+   ],
+   "commit": "47c414285c2f5971f3be52aaf0a4066ea6989238",
+   "sha256": "1gxw730b865zlaz0fdh95y7jhfwjpc3j2pkw0s3zz2xah9y0751b"
+  }
+ },
+ {
+  "ename": "align-cljlet",
+  "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a",
+  "sha256": "0pnhhv33rvlmb3823xpy9v5h6q99fa7fn38djbwry4rymi4jmlih",
+  "fetcher": "github",
+  "repo": "gstamp/align-cljlet",
+  "unstable": {
+   "version": [
+    20160112,
+    2101
+   ],
+   "deps": [
+    "clojure-mode"
+   ],
+   "commit": "602d72a7ad52788a0265e3c6da519464a98166b8",
+   "sha256": "0l2rgs0rd4nmv4v7m10zhf2znzfvdifv1vlhpa3zbppg0fj8zph1"
+  }
+ },
+ {
+  "ename": "all-ext",
+  "commit": "f8e4328cae9b4759a75da0b26ea8b68821bc71af",
+  "sha256": "0vmpa5p7likg2xgck18sa0jvmvnhjs9v1fbl82sxx7qy2f3cggql",
+  "fetcher": "github",
+  "repo": "rubikitch/all-ext",
+  "unstable": {
+   "version": [
+    20200315,
+    1443
+   ],
+   "deps": [
+    "all"
+   ],
+   "commit": "c865c62506af2c9edc7705a7c24dc8b70d5d4de2",
+   "sha256": "16r0ll7wsfsrymwm78gnnrfawafan9gbwiymqfmij3m9riqss7y0"
+  }
+ },
+ {
+  "ename": "all-the-icons",
+  "commit": "604c01aa15927bd122260529ff0f4bb6a8168b7e",
+  "sha256": "00ba4gkfvg38l4s0gsb4asvv1hfw9yjl2786imybzy7bkg9f9x3q",
+  "fetcher": "github",
+  "repo": "domtronn/all-the-icons.el",
+  "unstable": {
+   "version": [
+    20200508,
+    1157
+   ],
+   "deps": [
+    "memoize"
+   ],
+   "commit": "d6cb6d4a779eaa3570d8e451fd4d38b2b4554860",
+   "sha256": "0pnzsnklqjlks6ipaj242vlrk5skmwflpn1sdd00xw9gmb5mxb3m"
+  },
+  "stable": {
+   "version": [
+    4,
+    0,
+    1
+   ],
+   "deps": [
+    "memoize"
+   ],
+   "commit": "d363bb3e73909be013fcf35e1458bb654ec5bbaa",
+   "sha256": "0yh7gnv9xfqn8q4rzaa6wpyn9575vyfxy7d3afly2mqsb367fgm5"
+  }
+ },
+ {
+  "ename": "all-the-icons-dired",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1qj639z24ln29hv6c51g1vsa2jsy4qrlhf8c7d5w9bxcrcn2fnr9",
+  "fetcher": "github",
+  "repo": "jtbm37/all-the-icons-dired",
+  "unstable": {
+   "version": [
+    20200403,
+    1018
+   ],
+   "deps": [
+    "all-the-icons"
+   ],
+   "commit": "fc2dfa1e9eb8bf1c402a675e7089638d702a27a5",
+   "sha256": "0zhyhz4lhx0d8wwh1xxxf7ck4s621fk9757ql2ypxbr4iqh7sjlp"
+  }
+ },
+ {
+  "ename": "all-the-icons-gnus",
+  "commit": "f8ed74d39d165343c81c2a21aa47e3d3895d8119",
+  "sha256": "0vdqhpa49p8vzbad426gl0dvniapyk73kbscvjv7mdl4bwhcr309",
+  "fetcher": "github",
+  "repo": "nlamirault/all-the-icons-gnus",
+  "unstable": {
+   "version": [
+    20180511,
+    654
+   ],
+   "deps": [
+    "all-the-icons",
+    "dash"
+   ],
+   "commit": "27f78996da0725943bcfb2d18038e6f7bddfa9c7",
+   "sha256": "0yi3nbhx7cdxq2192kh5ra2n0a3qg20p342prz3a0bm3w7q2ym11"
+  }
+ },
+ {
+  "ename": "all-the-icons-ibuffer",
+  "commit": "3b3899fbae1e54e4385e1edfc8cc88d5ff0080d1",
+  "sha256": "08p4jj932x6xrq8ylx1hl9a3i2x8mm6l1jxi21akgjszf4s41mix",
+  "fetcher": "github",
+  "repo": "seagle0128/all-the-icons-ibuffer",
+  "unstable": {
+   "version": [
+    20200319,
+    1625
+   ],
+   "deps": [
+    "all-the-icons"
+   ],
+   "commit": "3ee9e32f480329e94e45f86538343b0ddc7ddd4f",
+   "sha256": "1cs9027q26nfm5k3182mbmmhj8s8y2nv47gsyamwpjqdma0sbl73"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    0
+   ],
+   "deps": [
+    "all-the-icons"
+   ],
+   "commit": "ee0409588ebaee1aada351f1a75abcdc999ac9e2",
+   "sha256": "0afq5wjh74ks8hrsb9m41h1m9gyc0hvp2qmy4b1ls9kffgnk7ri2"
+  }
+ },
+ {
+  "ename": "all-the-icons-ivy",
+  "commit": "9496e6bb6f03f35444fb204860bc50e5e1b36214",
+  "sha256": "1xv67gxd2sqj6zld4i3qcid0x5qsbd7baz55m93y1ivdqi7x7gr2",
+  "fetcher": "github",
+  "repo": "asok/all-the-icons-ivy",
+  "unstable": {
+   "version": [
+    20190508,
+    1803
+   ],
+   "deps": [
+    "all-the-icons",
+    "ivy"
+   ],
+   "commit": "a70cbfa1effe36efc946a823a580cec686d5e88d",
+   "sha256": "17h7gscrvdi9rygagwzcqzbw6dbfvwmv7jbi8pjkj1c06p3kbq8i"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "deps": [
+    "all-the-icons",
+    "ivy"
+   ],
+   "commit": "b768b83716100701a5cda9c071da2bcac34bd6a4",
+   "sha256": "03fssygwia1gv35y6mzifnkg5cb4klaq240jfqmyfji9jq95jzrd"
+  }
+ },
+ {
+  "ename": "all-the-icons-ivy-rich",
+  "commit": "66c873f1b542404d8982385ff7f6defe5b68f0ff",
+  "sha256": "16q294s61310aisqkhznzml2g05x24grzm93ga1wnyksn20wm9l2",
+  "fetcher": "github",
+  "repo": "seagle0128/all-the-icons-ivy-rich",
+  "unstable": {
+   "version": [
+    20200324,
+    550
+   ],
+   "deps": [
+    "all-the-icons",
+    "ivy-rich"
+   ],
+   "commit": "a9a4389c1930a5a071857b4d450eaecb21f4d6b9",
+   "sha256": "133vl3awl3qxxd2ka8zdr33v6s8hrjpsv4bv2db5j8jz35m0hx9d"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    0
+   ],
+   "deps": [
+    "all-the-icons",
+    "ivy-rich"
+   ],
+   "commit": "3e02da9a166df7ebea25aae476efd7b8d74d63e0",
+   "sha256": "0p91yvpqy7xjkz2mcpq6c8kjfxqfw9byxprqg2qqnzg421c5yv6x"
+  }
+ },
+ {
+  "ename": "almost-mono-themes",
+  "commit": "71ca87a0dd28f911dd988e1c208896b1ec5bfcc7",
+  "sha256": "1lv7c63lii8463mmsmxnldkwark2c6n46j9zvf990dhacwl4q1mg",
+  "fetcher": "github",
+  "repo": "cryon/almost-mono-themes",
+  "unstable": {
+   "version": [
+    20200211,
+    2126
+   ],
+   "commit": "2f5935a1a9d042751c7135cac79875886edb2556",
+   "sha256": "1q1ry37rcpzwwl2bwf3j8nmhap7v72fg0hdzxlls89gm3jl3nb97"
+  }
+ },
+ {
+  "ename": "alsamixer",
+  "commit": "61a07f01ee94173fa59716d30b14a34ec967578e",
+  "sha256": "1kil28lpxaqnwgyw2h69dmx78q5lpn5k0l6y0fwyz2n6vayxw4yj",
+  "fetcher": "github",
+  "repo": "remvee/alsamixer-el",
+  "unstable": {
+   "version": [
+    20191002,
+    1133
+   ],
+   "commit": "1bdb99e433acd38685f05408562746cfbf2bc820",
+   "sha256": "0c40vycphv5nf374rp8pnzvi50vlmgab3wrdq92hyprjw76gwxhk"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "commit": "1bdb99e433acd38685f05408562746cfbf2bc820",
+   "sha256": "0c40vycphv5nf374rp8pnzvi50vlmgab3wrdq92hyprjw76gwxhk"
+  }
+ },
+ {
+  "ename": "alt-codes",
+  "commit": "6c2287c7b4c543e92ccfab120388b2c05174d2db",
+  "sha256": "1h1hs0vxzmmrkf7mkm44lqb9d41jg02sk7iwb54s9g92rc7c10rg",
+  "fetcher": "github",
+  "repo": "jcs-elpa/alt-codes",
+  "unstable": {
+   "version": [
+    20190701,
+    1246
+   ],
+   "commit": "ded8cbff05f4f2fc4d023c5ee08ebe8b1bdb9ca9",
+   "sha256": "1v8sir3c0akv5sb8yg01zh0n6qqd4hp95sahbx01z1200g0phcaw"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    4
+   ],
+   "commit": "7dcd9cdcc41cfb991801ea1e2f5b3c925a5309ee",
+   "sha256": "19xg4ng3p49zvn1y7vagrfiiwvc2fynwibr6cmj7qam1y64lw90c"
+  }
+ },
+ {
+  "ename": "amd-mode",
+  "commit": "e4d6e9935e4935c9de769c7bf1c1b6dd256e10da",
+  "sha256": "17ry6vm5xlmdfs0mykdyn05cik38yswq5axdgn8hxrvvb6f58d06",
+  "fetcher": "github",
+  "repo": "NicolasPetton/amd-mode.el",
+  "unstable": {
+   "version": [
+    20180111,
+    1402
+   ],
+   "deps": [
+    "f",
+    "js2-mode",
+    "js2-refactor",
+    "makey",
+    "projectile",
+    "s",
+    "seq"
+   ],
+   "commit": "01fd19e0d635ccaf8e812364d8720733f2e84126",
+   "sha256": "040g07k2hcwqspansjqfpng0lxzkmip26ipz26q6mvkpwm2wilv4"
+  },
+  "stable": {
+   "version": [
+    2,
+    8
+   ],
+   "deps": [
+    "f",
+    "js2-mode",
+    "js2-refactor",
+    "makey",
+    "projectile",
+    "s",
+    "seq"
+   ],
+   "commit": "977b53e28b3141408fff4814be8b67ee23650cac",
+   "sha256": "0m80bwar80qsga735cqrn6rbvfz4w9a036zh8inhsigylv3vwqjv"
+  }
+ },
+ {
+  "ename": "ameba",
+  "commit": "043b5acb0552272c523d642fd9f9dca438087068",
+  "sha256": "1c2bmv04g30108qhcr0a67s1acmwzaz39dbvb03b7llhgmn5s92y",
+  "fetcher": "github",
+  "repo": "crystal-ameba/ameba.el",
+  "unstable": {
+   "version": [
+    20200103,
+    1454
+   ],
+   "commit": "0c4925ae0e998818326adcb47ed27ddf9761c7dc",
+   "sha256": "0jh0pfyqdks9xk43765vgm4569a8ny01pk3gy2p3vr5gdgfdm4a3"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "ca5faaa0d5115dc2c301e06e062e653a7b9cb927",
+   "sha256": "07207h1643amlairnmpf8lnnkgf69kc04z3ri9k6fm4gmh6c9dy0"
+  }
+ },
+ {
+  "ename": "ammonite-term-repl",
+  "commit": "cf0ece0efb1fcf0ea7364df0d35fca69862f5e9a",
+  "sha256": "004cvhyh4afgpb31m1q31g98x8c9m6lmsb5fzc4a1r5pb4p3iimp",
+  "fetcher": "github",
+  "repo": "zwild/ammonite-term-repl",
+  "unstable": {
+   "version": [
+    20200416,
+    559
+   ],
+   "deps": [
+    "s",
+    "scala-mode"
+   ],
+   "commit": "b552fe21977e005c1c460bf6607557e67241a6b6",
+   "sha256": "0g6ldvzcm6arm6hxiz1y168mj73kipgbjzxciif2b4sd3z7wpnp6"
+  }
+ },
+ {
+  "ename": "ample-regexps",
+  "commit": "6a5c72dfb52d55b2b22c91f115b32fff14f2f61e",
+  "sha256": "00y07pd438v7ldkn5f1w84cpxa1mvcnzjkj6sf5l5pm97xqiz7j2",
+  "fetcher": "github",
+  "repo": "immerrr/ample-regexps.el",
+  "unstable": {
+   "version": [
+    20200508,
+    1021
+   ],
+   "commit": "153969ce547afe410b8986f01c9ed4087c9cd20b",
+   "sha256": "0dkp7bcd7h2ds40wyszy11nmh7c2jxrwy04ayz7pbxh53ir7s2k0"
+  }
+ },
+ {
+  "ename": "ample-theme",
+  "commit": "d448c03202137a461ed814ce87acfac23faf676e",
+  "sha256": "055c6jy2q761za4cl1vlqdskcd3mc1j58k8b4418q7h2lv2zc0ry",
+  "fetcher": "github",
+  "repo": "jordonbiondo/ample-theme",
+  "unstable": {
+   "version": [
+    20180207,
+    1745
+   ],
+   "commit": "f5a163626e04abda2d3c168f703c3f330f302a7c",
+   "sha256": "1z08mdl3i4nfs4ln64sks3b4vbir4r8czscrdqyvq4izr6j05j2f"
+  }
+ },
+ {
+  "ename": "ample-zen-theme",
+  "commit": "b3b8c21f5dfbe9d4845a01548c8b7d9ddfe172a7",
+  "sha256": "0xygk80mh05qssrbfj4h6k50pg557dyj6kzc2pdlmnr5r4gnzdn3",
+  "fetcher": "github",
+  "repo": "mjwall/ample-zen",
+  "unstable": {
+   "version": [
+    20150119,
+    2154
+   ],
+   "commit": "b277bb7abd4b6624e8d59f02474b79af50a007bd",
+   "sha256": "18z9jl5d19a132k6g1dvwqfbbdh5cx66b2qxlcjsfiqxlxglc2sa"
+  }
+ },
+ {
+  "ename": "amread-mode",
+  "commit": "2155dbd9bdf7b1f6f500c11ad1796c2ba2ddadec",
+  "sha256": "19wafb0aszphdmx9ayiazvq2avj9kqhanszh714n397810ak7k0v",
+  "fetcher": "github",
+  "repo": "stardiviner/amread-mode",
+  "unstable": {
+   "version": [
+    20200404,
+    1143
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a595828fcc2257f765139b576beb6c33b4fc3bce",
+   "sha256": "1mwlj48hjp59mcafia612qqzmqxh30k0jshzrnzsnwlfbbsdxjwj"
+  }
+ },
+ {
+  "ename": "amx",
+  "commit": "c55bfad05343b2b0f3150fd2b4adb07a1768c1c0",
+  "sha256": "1ikhjvkca0lsb9j719yf6spg6nwc0qaydkd8aax162sis7kp9fap",
+  "fetcher": "github",
+  "repo": "DarwinAwardWinner/amx",
+  "unstable": {
+   "version": [
+    20200417,
+    1513
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "7fb7b874291e0cdeb1f0acb18564a686ec86788d",
+   "sha256": "0yc2b814zcl3c6lgamrr63cl4r3ayzlyfqql8875fzflc541nnnc"
+  },
+  "stable": {
+   "version": [
+    3,
+    3
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "394734e42aa8c43940df358e77a69248b42f2a9c",
+   "sha256": "0ikjzs119g57cwh2v3jmy63lggqc0ib99q5gsl93slkk4y2ihavw"
+  }
+ },
+ {
+  "ename": "anaconda-mode",
+  "commit": "c756ccbae044bc23131060355532261aa9a12409",
+  "sha256": "1cr4qyk2brm1kvm7i9cmvihid8799df7yhmmdizv3sj5l6qnsyfr",
+  "fetcher": "github",
+  "repo": "pythonic-emacs/anaconda-mode",
+  "unstable": {
+   "version": [
+    20200129,
+    1718
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "pythonic",
+    "s"
+   ],
+   "commit": "10299bd9ff38c4f0da1d892905d02ef828e7fdce",
+   "sha256": "0s5pxfjcsmyrqc5pa2lqx6mxzwy3g8mc3iaxbj313sn1nly26vjw"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    12
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "pythonic",
+    "s"
+   ],
+   "commit": "6be586123f606317c51e62239490af9843ba2d13",
+   "sha256": "1vydyyxd5n0pz0jlib3yvw8vnklp15nvyyj7qkm4wcyssi70q1rf"
+  }
+ },
+ {
+  "ename": "anakondo",
+  "commit": "197ff9f72a46a5732495d97c6b0ecb526e6995f4",
+  "sha256": "14kypppdgvzj2plydcpd22b9wpkircr0nc6gs4rcw416h157l2bv",
+  "fetcher": "github",
+  "repo": "didibus/anakondo",
+  "unstable": {
+   "version": [
+    20200503,
+    123
+   ],
+   "deps": [
+    "clojure-mode",
+    "projectile"
+   ],
+   "commit": "ba6b56c18f2b0ae035b448813b27114d19fb821c",
+   "sha256": "0dbhkinfn6ahvi9pi7kghlc0fccil15lx0pd1rpgv4d7n3bnsdna"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "projectile"
+   ],
+   "commit": "87760e8326a0e303ca66dda298a79742888b7254",
+   "sha256": "1l58l0gj3my61yi55hak0c8y26dc2sn8kzbs80v3vsfr6pq916vx"
+  }
+ },
+ {
+  "ename": "anaphora",
+  "commit": "8505db1945071a15ba0f2bb74b58d4a6875ca7d6",
+  "sha256": "1wb7fb3pc4gxvpjlm6gjbyx0rbhjiwd93qwc4vfw6p865ikl19y2",
+  "fetcher": "github",
+  "repo": "rolandwalker/anaphora",
+  "unstable": {
+   "version": [
+    20180618,
+    2200
+   ],
+   "commit": "3b2da3f759b244975852e79721c4a2dbad3905cf",
+   "sha256": "11fgiy029sqz7nvdm7dcal95lacryz9zql0x5h05z48nrrcl4bib"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    4
+   ],
+   "commit": "3b2da3f759b244975852e79721c4a2dbad3905cf",
+   "sha256": "11fgiy029sqz7nvdm7dcal95lacryz9zql0x5h05z48nrrcl4bib"
+  }
+ },
+ {
+  "ename": "android-env",
+  "commit": "570ad0e94736d9fd16f3909bcfa928a9153ea703",
+  "sha256": "1gfxrfg42rn2rzh5fr4w6h8ngczhl56jghfgrffz9x8wcxxmqgpr",
+  "fetcher": "github",
+  "repo": "fernando-jascovich/android-env.el",
+  "unstable": {
+   "version": [
+    20190720,
+    1927
+   ],
+   "commit": "dcb0bff0e77257266201cf1ccf17e7ca94e67fb1",
+   "sha256": "132fshzb4f0miqn3ijvwfdigldrvx7dsx06dczr9z9v9xw61ar8j"
+  }
+ },
+ {
+  "ename": "android-mode",
+  "commit": "77633aa340803a433570327943fbe31b396f4355",
+  "sha256": "1nqrvq411yg4b9xb5cvc7ai7lfalwc2rfhclzprvymc4vxh6k4cc",
+  "fetcher": "github",
+  "repo": "remvee/android-mode",
+  "unstable": {
+   "version": [
+    20190903,
+    811
+   ],
+   "commit": "d5332e339a1f5e30559a53feffb8442ca79265d6",
+   "sha256": "10jhnxmxcjv9jpnsz2hrfb3rdl8306m8j30aclhvrvh4gcy1vwck"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    2
+   ],
+   "commit": "d5332e339a1f5e30559a53feffb8442ca79265d6",
+   "sha256": "10jhnxmxcjv9jpnsz2hrfb3rdl8306m8j30aclhvrvh4gcy1vwck"
+  }
+ },
+ {
+  "ename": "angry-police-captain",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "00r3dx33h0wjxj0687ln8nbl1ff2badm3mk3r3bplfrd61z2qzld",
+  "fetcher": "github",
+  "repo": "rolpereira/angry-police-captain-el",
+  "unstable": {
+   "version": [
+    20120829,
+    1252
+   ],
+   "commit": "d11931c5cb63368dcc4a48797962428cca6d3e9d",
+   "sha256": "1m0c7ns7aiycg86cgglir8bkw730fslyg1n15m9ki0da4cnmm97a"
+  }
+ },
+ {
+  "ename": "angular-mode",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "0pq4lyhppzi806n1k07n0gdhr8z8z71ri12my0pl81rl5j2z69l2",
+  "fetcher": "github",
+  "repo": "rudolfolah/angularjs-mode",
+  "unstable": {
+   "version": [
+    20200510,
+    1729
+   ],
+   "commit": "b24020768217f16b1b86aa236e9729b3d40e17b3",
+   "error": [
+    "exited abnormally with code 1\n",
+    "",
+    "error: unable to download 'https://github.com/rudolfolah/angularjs-mode/archive/b24020768217f16b1b86aa236e9729b3d40e17b3.tar.gz': HTTP error 404\n"
+   ]
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "7c0fb37f59dfd9e69f00b50e90a0e88c4e25d8c2",
+   "sha256": "1798nv4djhxzbin68zf6w7dbfm9sc39d0kygky52ii36arg5r1zp"
+  }
+ },
+ {
+  "ename": "angular-snippets",
+  "commit": "96a0ad5fdbc52f803846e580856fb9c58181c020",
+  "sha256": "057phgizn1c6njvdfigb23ljs31knq247gr0rcpqfrdaxsnnzm5c",
+  "fetcher": "github",
+  "repo": "magnars/angular-snippets.el",
+  "unstable": {
+   "version": [
+    20140514,
+    523
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "af5ae0a4a8603b040446c28afcf6ca01a8b4bd7b",
+   "sha256": "0hdm1a323mzxjfdply8ri3addk146f21d8cmpd18r7dw3j3cdfrn"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    3
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "8f737c2cf5fce758a7a3833ebad2952b5398568d",
+   "sha256": "0h9i0iimanbvhbqy0cj9na335rs961pvhxjj4k8y53qc73xm102a"
+  }
+ },
+ {
+  "ename": "anki-connect",
+  "commit": "1f2c391b543a6b98b9f171f8638c003737424e52",
+  "sha256": "09mvw1qppn1nrjyn7gfq1bfxn9hyh5kpxz30m1rrfwjjgw4lw4x6",
+  "fetcher": "github",
+  "repo": "lujun9972/anki-connect.el",
+  "unstable": {
+   "version": [
+    20191123,
+    1858
+   ],
+   "commit": "1324f0c248aa2c6e73d6cf93fad6119d699f7dae",
+   "sha256": "055nzb0dki4fmgmfhq83x7gciyp74r36a233hnl9lyd8wmb2hvqf"
+  }
+ },
+ {
+  "ename": "anki-editor",
+  "commit": "8155d649e4b129d0c72da6bb2b1aac66c8483491",
+  "sha256": "18c5p82llq11vg1svqvbjrcnm7695nbbc6pwwl9jdjplasar585l",
+  "fetcher": "github",
+  "repo": "louietan/anki-editor",
+  "unstable": {
+   "version": [
+    20190922,
+    1223
+   ],
+   "deps": [
+    "dash",
+    "request"
+   ],
+   "commit": "546774a453ef4617b1bcb0d1626e415c67cc88df",
+   "sha256": "1if610hq5j8rbjh1caw5bwbgnsn231awwxqbpwvrh966kdxzl4qf"
+  }
+ },
+ {
+  "ename": "anki-mode",
+  "commit": "fc02d06e7c7e9230e4b082923b889e1e83676263",
+  "sha256": "1d429ws6kmswcyk0dnb303z01kq475n60a520hj258x23vp8802q",
+  "fetcher": "github",
+  "repo": "davidshepherd7/anki-mode",
+  "unstable": {
+   "version": [
+    20200413,
+    1019
+   ],
+   "deps": [
+    "dash",
+    "markdown-mode",
+    "request",
+    "s"
+   ],
+   "commit": "fcbcfa7cd7fb5c282e1138322e61242942729e3d",
+   "sha256": "06ab3zdaz5wf30zbci7cav3dvvnknnbzq18zfzzfi4xjcsi0zkvr"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "dash",
+    "markdown-mode",
+    "request",
+    "s"
+   ],
+   "commit": "06dd1bd49b7a2b43cf9b744dd5caf67809f39d74",
+   "sha256": "0ryyyihvvrcipj2bkx24cx1ibgcymnsbn79ibvmhb3wbad3hr072"
+  }
+ },
+ {
+  "ename": "anki-vocabulary",
+  "commit": "2ee1509faf58c4ea1bddcfd6f103e63c5c466c69",
+  "sha256": "11rl81s268l605lwzni29w366h2csnj4snl0nq12m9mvywv2dx2n",
+  "fetcher": "github",
+  "repo": "lujun9972/anki-vocabulary.el",
+  "unstable": {
+   "version": [
+    20200103,
+    325
+   ],
+   "deps": [
+    "anki-connect",
+    "s",
+    "youdao-dictionary"
+   ],
+   "commit": "863fe0219577f996ab126f1b7902db3c2cc59b2b",
+   "sha256": "0mfch10hvs5czgc3lj75s02bbf36gfdk3xvry717g8gqqa37j581"
+  }
+ },
+ {
+  "ename": "annalist",
+  "commit": "2298cf2894029267c77a8aa06f4fa8d9d7c3e4f0",
+  "sha256": "1102yd0vas3kyml8flf3mdswnc2kizbdq996740plzwnnnbw34vj",
+  "fetcher": "github",
+  "repo": "noctuid/annalist.el",
+  "unstable": {
+   "version": [
+    20190929,
+    207
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "134fa3f0fb91a636a1c005c483516d4b64905a6d",
+   "sha256": "06dvk7hd3bqjng87apf5dsbdn0rv0gcrj66m7dz26c8bg19mddcc"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "08df07e4530953a2c0b1aa553adcab37b7b614b0",
+   "sha256": "1jlb5w4972l8m2aa18q2l6arfpm65g4nk21dn1yi8c9dbpk2g67c"
+  }
+ },
+ {
+  "ename": "annotate",
+  "commit": "3aae88b8e3b080501195d291012deab31aaf35f7",
+  "sha256": "1ajykgara2m713blj2kfmdz12fzm8jw7klyakkyi6i3c3a9m44jy",
+  "fetcher": "github",
+  "repo": "bastibe/annotate.el",
+  "unstable": {
+   "version": [
+    20200330,
+    1640
+   ],
+   "commit": "f0a71bb14806c79f09cb6aacb5ef98a852ef66e2",
+   "sha256": "1v2rbrhqg4kipk4l901xzfdc4wm5fkvvx4j3l8mfp7nvc2x8gcbw"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    7
+   ],
+   "commit": "e6af7f8ef7d241fdc9f866d57dce24beb4bb6b87",
+   "sha256": "19a419rnqqsmvrcl2vwy3gl7mvbfg669vyin2h2xpm56rxsinvy1"
+  }
+ },
+ {
+  "ename": "annotate-depth",
+  "commit": "bb37bd77aea642ca72d74112bdd8a02eab8d1a80",
+  "sha256": "1j1pwnj7k6gl1p4npxsgrib0j1rzisq40pkm2wchjh86j3ybv2l4",
+  "fetcher": "github",
+  "repo": "netromdk/annotate-depth",
+  "unstable": {
+   "version": [
+    20160520,
+    2040
+   ],
+   "commit": "fcb24fa36287250e40d195590c4ca4a8a696277b",
+   "sha256": "18cav5wl3d0yq15273rqmdwvrgw96lmqiq9x5fxhf3wjb543mifl"
+  }
+ },
+ {
+  "ename": "annoying-arrows-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1vswlfypn6ijn0wwa3dsqkz5n3pillpmli2ha4q9snhd3a667vyh",
+  "fetcher": "github",
+  "repo": "magnars/annoying-arrows-mode.el",
+  "unstable": {
+   "version": [
+    20161024,
+    646
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "3c42e9807d7696da2da2a21b63beebf9cdb3f5dc",
+   "sha256": "06gs5ln3w1xvq8f8k9225rwiipbh9cs0dzyyb7z05717rmqixcc4"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "fe59f3fd464e7a87cc43fb8a1f135b3bdf8a2fb3",
+   "sha256": "1ppq3kszzj2fgr7mwj565bjs8bs285ymy384cnnw7paddgcr9z02"
+  }
+ },
+ {
+  "ename": "ansi",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "0b5xnv6z471jm53g37njxin6l8yflsgm80y4wxahfgy8apipcq89",
+  "fetcher": "github",
+  "repo": "rejeep/ansi.el",
+  "unstable": {
+   "version": [
+    20150703,
+    826
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "12b4c5d91b3da1902838f421e5af6d40e2cd57dd",
+   "sha256": "19k71dj83kvc8mks6zhl45vsrsb61via53dqxjv9bny1ybh2av85"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "a042c5954453bab9a74177e2b78ad17a824caebc",
+   "sha256": "1hbddxarr40ygvaw4pwaivq2l4f0brszw73w1r50lkjlggb7bl3g"
+  }
+ },
+ {
+  "ename": "ansible",
+  "commit": "8e45bf58b980ff542a5e887707a6361eb5ac0492",
+  "sha256": "1xdc05fdglqfbizra6s1zl6knnvaq526dkxqnw9g7w269j8f4z8g",
+  "fetcher": "github",
+  "repo": "k1LoW/emacs-ansible",
+  "unstable": {
+   "version": [
+    20191003,
+    1430
+   ],
+   "deps": [
+    "f",
+    "s"
+   ],
+   "commit": "c6532e52161a381ed3dddfeaa7c92ae636d3f052",
+   "sha256": "16i0r019lj9fdkxcga2jb8ha0r2lf1mz7jywg44hnj7r3lzdcmwp"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "f",
+    "s"
+   ],
+   "commit": "c6532e52161a381ed3dddfeaa7c92ae636d3f052",
+   "sha256": "16i0r019lj9fdkxcga2jb8ha0r2lf1mz7jywg44hnj7r3lzdcmwp"
+  }
+ },
+ {
+  "ename": "ansible-doc",
+  "commit": "29dc2ef3801a1cd7cf8edd2eae68b03bf00e96a0",
+  "sha256": "1gn334v5k1i3wsh1i53vnjj2y7kv4vba9yiwgiwz0pn7wd26wk5s",
+  "fetcher": "github",
+  "repo": "emacsorphanage/ansible-doc",
+  "unstable": {
+   "version": [
+    20160924,
+    824
+   ],
+   "commit": "86083a7bb2ed0468ca64e52076b06441a2f8e9e0",
+   "sha256": "0lap404ch74w99n3xip176jr42b38xhyzkfnkyqg0g3wk2cd3aq8"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "bc8128a85a79b14f4a121105d87a5eddc33975ad",
+   "sha256": "0z3y69sfzka764wjbx31dywdq4d6bfsafv2gmmbpmxqmwfmy8sz4"
+  }
+ },
+ {
+  "ename": "ansible-vault",
+  "commit": "2bff0da29a9b883e53a3d211c5577a3e0bc263a0",
+  "sha256": "0pmsvpc866rgcajb2ihhb62g3rwhda7vvq2kxkvr566y609vv021",
+  "fetcher": "github",
+  "repo": "zellio/ansible-vault-mode",
+  "unstable": {
+   "version": [
+    20200305,
+    2240
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "c4fe4b0af2ac7f9d32acee234716ab31fa824cef",
+   "sha256": "1xif6vv53rpc2k974pqckmzck55zhdhzyfl54kdp25w93xbs3js4"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "9a50ed6b73222e9973c08d79b6955e57ed3b7d97",
+   "sha256": "1xif6vv53rpc2k974pqckmzck55zhdhzyfl54kdp25w93xbs3js4"
+  }
+ },
+ {
+  "ename": "ant",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "06028xjic14yv3rfqyc3k6jyjgm6fqfrf1mv8lvbh2sri2d5ifqa",
+  "fetcher": "github",
+  "repo": "apg/ant-el",
+  "unstable": {
+   "version": [
+    20160211,
+    1543
+   ],
+   "commit": "510b5a3f57ee4b2855422d88d359a28922c1ab70",
+   "sha256": "0jb5vl3cq5m3r23fjhcxgxl4g011zkjkkyn5mqqxx22a1sydsvab"
+  }
+ },
+ {
+  "ename": "anti-zenburn-theme",
+  "commit": "6f6f803dc99a1b1fdb5b4e79f1c9cf72b702d091",
+  "sha256": "1sp9p6m2jy4m9fdn1hz25cmasy0mwwgn46qmvm92i56f5x6jlzzk",
+  "fetcher": "github",
+  "repo": "m00natic/anti-zenburn-theme",
+  "unstable": {
+   "version": [
+    20180712,
+    1838
+   ],
+   "commit": "dbafbaa86be67c1d409873f57a5c0bbe1e7ca158",
+   "sha256": "1h4lachmrpjiblah4rjd2cpvz6n6qh3i5cdp4wra2dk177h7kj6h"
+  },
+  "stable": {
+   "version": [
+    2,
+    5,
+    1
+   ],
+   "commit": "c80cc51bb1aaf11dd53b9d08e01d61bc9b32622f",
+   "sha256": "1c97d2jkh7iawgsbcg19gha9ffnxypbcfz0sgcsgf9vy4bvnc350"
+  }
+ },
+ {
+  "ename": "anx-api",
+  "commit": "2e3b329ff11818a1553c74a02475cb4110173076",
+  "sha256": "1vzg3wsqyfb9rsfxrpz8k2gazjlz2nwnf4gnn1dypsjspjnzcb8r",
+  "fetcher": "github",
+  "repo": "rmloveland/emacs-appnexus-api",
+  "unstable": {
+   "version": [
+    20140208,
+    1514
+   ],
+   "commit": "b2411ebc966ac32c3ffc61bc22bf183834df0fa0",
+   "sha256": "0fzxzar8m9qznfxv3wr7vfj9y2110wf6mm5cj55k3sd5djdjhmf1"
+  }
+ },
+ {
+  "ename": "anybar",
+  "commit": "5516e309df9ac8bf0fafb9ec9037094d82913b67",
+  "sha256": "0prnr8wjhishpf2zmn4b7054vfahk10w05nzsg2p6whaxywcachm",
+  "fetcher": "github",
+  "repo": "tie-rack/anybar-el",
+  "unstable": {
+   "version": [
+    20160816,
+    1421
+   ],
+   "commit": "7a0743e0d31bcb36ab1bb2e351f3e7139c422ac5",
+   "sha256": "1s7vnp2xzffdj4pqdqn6mrirw33ms0yqlpxzz5pwj6xrbp2x5r6s"
+  }
+ },
+ {
+  "ename": "anyins",
+  "commit": "a367da2cb71fc0b144f9e608dc4857624991f19c",
+  "sha256": "0ncf3kn8rackcidkgda2zs60km3hx87rwr9daj7ksmbb6am09s7c",
+  "fetcher": "github",
+  "repo": "antham/anyins",
+  "unstable": {
+   "version": [
+    20131229,
+    1041
+   ],
+   "commit": "83844c17ac9b5b6c7655ee556b75689e4c8ea663",
+   "sha256": "05lq0bllgn44zs85mgnfdcyjasm6j8m70jdcxksf798i0qdqnk7n"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "1ff4673ca197c9bf64c65f718573bf7d478fc562",
+   "sha256": "1z6l72dn98icqsmxb3rrj6l63ijc3xgfa3vdl19yqa2rfy6ya721"
+  }
+ },
+ {
+  "ename": "anzu",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "0m9wwq5fl7g6gfzv6m9hlrjf8nvqn1q7nqif1x93sh7q3vfwgxzl",
+  "fetcher": "github",
+  "repo": "emacsorphanage/anzu",
+  "unstable": {
+   "version": [
+    20200514,
+    1801
+   ],
+   "commit": "7b8688c84d6032300d0c415182c7c1ad6cb7f819",
+   "sha256": "09x4hhycnv4sc472fqv7z8jpjx8viap5hb143yri3wkwa15bqd3b"
+  },
+  "stable": {
+   "version": [
+    0,
+    63
+   ],
+   "commit": "a5a22fd537cb3bd2194d1eecc91dca418bedf442",
+   "sha256": "11k30174a0z738gcmvpvk8wxsnsdnaf4qphrz0aq8yy0k1pidav2"
+  }
+ },
+ {
+  "ename": "aozora-view",
+  "commit": "c6c13f8a0dd90c1c1f39711a5de69c1e0b785601",
+  "sha256": "0pd2574a6dkhrfr0jf5gvv34ganp6ddylyb6cfpg2d4znwbc2r2w",
+  "fetcher": "github",
+  "repo": "kawabata/aozora-view",
+  "unstable": {
+   "version": [
+    20140310,
+    1317
+   ],
+   "commit": "b0390616d19e45f15f9a2f5d5688274831e721fd",
+   "sha256": "0528z3axjmplg2fdbv4jxgy1p39vr4rnsm4a3ps2fanf8bwsyx3l"
+  }
+ },
+ {
+  "ename": "apache-mode",
+  "commit": "eb13cb0dba1696cc51132cd1ff723fa17f892a7c",
+  "sha256": "0wzfx3kaiwvya30ihq3vpdhy6znkzf25w5x43x457ifdn2vrh9zi",
+  "fetcher": "github",
+  "repo": "emacs-php/apache-mode",
+  "unstable": {
+   "version": [
+    20190711,
+    1111
+   ],
+   "commit": "a66dc1f246cd4ce0960773989bc43188f0394948",
+   "sha256": "0d0wc2zhwxy6ag8hh6g6k7dqpxf5yilxkaziy26pp5khryb7j7p9"
+  },
+  "stable": {
+   "version": [
+    2,
+    2,
+    0
+   ],
+   "commit": "354f9302a8d805ac80d846adcd1cef10830b3d51",
+   "sha256": "1grs2x51k8pa6sgfa82s5pwwdfv7zw46ccw0zvd2rvzbhpq21p2z"
+  }
+ },
+ {
+  "ename": "apdl-mode",
+  "commit": "2fd3f323919b8eebba081689c93bb918d0af1359",
+  "sha256": "11in64hcs5gmvviv986043r68l34byi31v5vibwqx63qg8k3gqfn",
+  "fetcher": "github",
+  "repo": "dieter-wilhelm/apdl-mode",
+  "unstable": {
+   "version": [
+    20200501,
+    1904
+   ],
+   "commit": "ee5f546f6659b9ca3c6895a1959087531b4a016a",
+   "sha256": "1qpqji2qx4srxk22684gh3sjj8sa87kd5fbr1xh8dscn19h5yvx9"
+  },
+  "stable": {
+   "version": [
+    20,
+    5,
+    0
+   ],
+   "commit": "ee5f546f6659b9ca3c6895a1959087531b4a016a",
+   "sha256": "1qpqji2qx4srxk22684gh3sjj8sa87kd5fbr1xh8dscn19h5yvx9"
+  }
+ },
+ {
+  "ename": "apel",
+  "commit": "4976446a8ae40980d502186615902fc05c15ec7c",
+  "sha256": "0zrm8m66p3aqr0108s3cj6z4xqbg2hx37z1pam4c65bqlhh74s8y",
+  "fetcher": "github",
+  "repo": "wanderlust/apel",
+  "unstable": {
+   "version": [
+    20190407,
+    1056
+   ],
+   "commit": "d146ddbf8818e81d3577d5eee7825d377bec0c73",
+   "sha256": "04ic76gzn3m4rnmm2xjc72vrxazxjvsjabd3lbxvwj6c1fb11fnw"
+  }
+ },
+ {
+  "ename": "apib-mode",
+  "commit": "dc2ebb04f975d8226a76260895399c937d6a1940",
+  "sha256": "0y3n0xmyc4gkypq07v4sp0i6291qaj2m13zkg6mxp61zm669v2fb",
+  "fetcher": "github",
+  "repo": "w-vi/apib-mode",
+  "unstable": {
+   "version": [
+    20200101,
+    1017
+   ],
+   "deps": [
+    "markdown-mode"
+   ],
+   "commit": "c6dd05201f6eb9295736d8668a79a7510d11159e",
+   "sha256": "0f5zph67h0pr445ykllz0pix2dg2kdxl0g5mhxaggdydizf24p45"
+  },
+  "stable": {
+   "version": [
+    0,
+    8
+   ],
+   "deps": [
+    "markdown-mode"
+   ],
+   "commit": "c6dd05201f6eb9295736d8668a79a7510d11159e",
+   "sha256": "0f5zph67h0pr445ykllz0pix2dg2kdxl0g5mhxaggdydizf24p45"
+  }
+ },
+ {
+  "ename": "apiwrap",
+  "commit": "0197fd3657e65e3826375d9b6f19da3058366c91",
+  "sha256": "0n50n1n5pvcgcp1gmna3ci36pnbanjdbjpgv7zyarlb80hywbiyw",
+  "fetcher": "github",
+  "repo": "vermiculus/apiwrap.el",
+  "unstable": {
+   "version": [
+    20180602,
+    2231
+   ],
+   "commit": "a4fb21d96027369307b22439a4a6c765ee272f44",
+   "sha256": "19v92dgbwrb66bj5zs4fh0knba286i32afi42mvjmgagf228x6ka"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "commit": "e4c9c57d6620a788ec8a715ff1bb50542edea3a6",
+   "sha256": "0xpb8mmssajy42r2h1m9inhv1chx19wkp5p0p63nwpk7mhjj8bis"
+  }
+ },
+ {
+  "ename": "apples-mode",
+  "commit": "5ca765a6a2f312f585624ec8b82dc9eb6b9bbc0c",
+  "sha256": "05ssnxs9ybc26jhr69xl9jpb41bz1688minmlc9msq2nvyfnj97s",
+  "fetcher": "github",
+  "repo": "tequilasunset/apples-mode",
+  "unstable": {
+   "version": [
+    20110121,
+    418
+   ],
+   "commit": "83a9ab0d6ba82496e2f7df386909b1a55701fccb",
+   "sha256": "0br0jl6xnajdx37s5cvs13srn9lldg58y9587a11s3s651xjdq0z"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "commit": "fac47b6255e79a373c5d5e1abe66ea5d74588e9f",
+   "sha256": "13j2r4nx2x6j3qx50d5rdnqd8nl5idxdkhizsk7ccz3v2607fbyy"
+  }
+ },
+ {
+  "ename": "applescript-mode",
+  "commit": "3fea8d290fe4d71b954ad6b68a8d182e40ee1e13",
+  "sha256": "1ihf4b2r14ikjkqpibqv1ipjgdq7q1pkhw7rs3ph1gzg5j552waf",
+  "fetcher": "github",
+  "repo": "emacsorphanage/applescript-mode",
+  "unstable": {
+   "version": [
+    20090321,
+    632
+   ],
+   "commit": "8f888cd80af1e0902b5609143facd3051bc94892",
+   "sha256": "0d3bqx6346vmniv001jgd6wggp80kv1kqc38sdgd88862gkqnqyg"
+  }
+ },
+ {
+  "ename": "aproject",
+  "commit": "de10c48976352f273e8363c2f6fa60602ee86c9b",
+  "sha256": "0v3gx2mff2s7knm69y253pm1yr4svy8w00pqbn1chrvymb62jhp2",
+  "fetcher": "github",
+  "repo": "vietor/aproject",
+  "unstable": {
+   "version": [
+    20190730,
+    152
+   ],
+   "commit": "b534e2a62738ad59a8a3cddd386466c145dad3b2",
+   "sha256": "08nhfa845cn20kx0q9rchs24imfmvpywi1b8mn40d1lw587yr519"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "702caf5392288dfd821b1e744fef0bb4fd9f9281",
+   "sha256": "18n3gsghj7sxxd6kpp21b2p7qwv93giwyr1zfvgbs8pzsbc8i9rx"
+  }
+ },
+ {
+  "ename": "apropospriate-theme",
+  "commit": "1da33013f15825ab656260ce7453b8127e0286f4",
+  "sha256": "10bj2bsi7b104m686z8mgvbh493liidsvivxfvfxzbndc8wyjsw9",
+  "fetcher": "github",
+  "repo": "waymondo/apropospriate-theme",
+  "unstable": {
+   "version": [
+    20191220,
+    2017
+   ],
+   "commit": "543341f0836b24e001375c530c4706e9345ec1e3",
+   "sha256": "03917db85x4c2a1ba94wmik21wwnwf9xpz6wc0d0ay0zkkvqsn5g"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "0d918da74a7a225fe5a586e26f5d834e579c5323",
+   "sha256": "0hqsq7y89crcmqcfbgn885dlvj7f7b0zd9q6adbhyscphk7kasjw"
+  }
+ },
+ {
+  "ename": "apt-sources-list",
+  "commit": "141a22e593415302d64cf8ebd2635a1baf35eb38",
+  "sha256": "1gnl6zqv6imk2qpv4lj7qyjgf1ldxib3k14gsmwqm0c1zwjsid3j",
+  "fetcher": "git",
+  "url": "https://git.korewanetadesu.com/apt-sources-list.git",
+  "unstable": {
+   "version": [
+    20180527,
+    1241
+   ],
+   "commit": "5289443ceff230dfc8a2c1c6b524c90560eb08a5",
+   "sha256": "1svicgmiibnim47fhlik3fgs0d6427and5h61s3rhvfj3352d9li"
+  }
+ },
+ {
+  "ename": "aqi",
+  "commit": "4218547747cdbe33aab3c59338cd2dc9da869cda",
+  "sha256": "1dzvf3i648ssavrdy4v1ckvf2gkywa3cc4zgddb8dj4ihpivm6bc",
+  "fetcher": "github",
+  "repo": "zzkt/aqi",
+  "unstable": {
+   "version": [
+    20200215,
+    1334
+   ],
+   "deps": [
+    "let-alist",
+    "request"
+   ],
+   "commit": "5fe8b035b2b6bc165728444bb8e9792d14b7409d",
+   "sha256": "1wbpjz5jgpph6c6wk29dxz8r368ai6jx9cb4y2mdcpngig8kmazm"
+  }
+ },
+ {
+  "ename": "arc-dark-theme",
+  "commit": "f8c9060669b262f0588643bd8758edac578834bc",
+  "sha256": "0a61kxdyzm6gf8gf8fniqz5mqkxk24k8hpxww3996v9mqs1bn05s",
+  "fetcher": "github",
+  "repo": "cfraz89/arc-dark-theme",
+  "unstable": {
+   "version": [
+    20190314,
+    1632
+   ],
+   "commit": "ee17dcca35dd0304145efc468b3f25af6907a59d",
+   "sha256": "0cfj5c6rz68095wxs8m733lwc5ymbgi5v82drxhjqcascvrdr1v1"
+  }
+ },
+ {
+  "ename": "arch-packer",
+  "commit": "6d1796688ed0d6957557d960ca28e450f9bcb6cf",
+  "sha256": "04kv22vpcpjhc047yz6k6dizmwwdjk6vcm8imri76gi9ns1w5n5z",
+  "fetcher": "github",
+  "repo": "brotzeit/arch-packer",
+  "unstable": {
+   "version": [
+    20170730,
+    1321
+   ],
+   "deps": [
+    "async",
+    "dash",
+    "s"
+   ],
+   "commit": "940e96f7d357c6570b675a0f942181c787f1bfd7",
+   "sha256": "0m80ka51m7a1797q6br41x96znvqfmpwzh3vk4mz66mdx2r4xk77"
+  }
+ },
+ {
+  "ename": "archive-region",
+  "commit": "f8e4328cae9b4759a75da0b26ea8b68821bc71af",
+  "sha256": "1aiz6a0vdc2zm2q5r80cj5xixqfhsgmr7ldj9ff40k4sf3z5xny3",
+  "fetcher": "github",
+  "repo": "rubikitch/archive-region",
+  "unstable": {
+   "version": [
+    20200316,
+    1425
+   ],
+   "commit": "53cd2d96ea7c33f320353982b36854f25c900c2e",
+   "sha256": "1c3ji0asnhdls8pa5hbqg65kc35jc6yndib7cx1zvnpb8pjlvbbr"
+  }
+ },
+ {
+  "ename": "archive-rpm",
+  "commit": "e5f5653e62afdc022eac30bda3d21bd2d2625d2e",
+  "sha256": "0s53zbn71lb008gw3f0b5w4q0pw0vgiqbffgnyib24sh03ijl7z7",
+  "fetcher": "github",
+  "repo": "legoscia/archive-rpm",
+  "unstable": {
+   "version": [
+    20180706,
+    1232
+   ],
+   "commit": "59f83caebbd2f92fd634f6968e6d17b50ffa3dc7",
+   "sha256": "11ssqaax4jl7r3z5agzmc74sjsfvl0m3xvp015ncqzpzysla47g3"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "59f83caebbd2f92fd634f6968e6d17b50ffa3dc7",
+   "sha256": "11ssqaax4jl7r3z5agzmc74sjsfvl0m3xvp015ncqzpzysla47g3"
+  }
+ },
+ {
+  "ename": "arduino-mode",
+  "commit": "2db785f52c2facc55459e945ccb4d4b088506747",
+  "sha256": "1amqah0sx95866ikdlc7h7n9hmrwaqizc0rj0gliv15kjjggv55v",
+  "fetcher": "github",
+  "repo": "stardiviner/arduino-mode",
+  "unstable": {
+   "version": [
+    20180509,
+    36
+   ],
+   "deps": [
+    "cl-lib",
+    "spinner"
+   ],
+   "commit": "23ae47c9f28f559e70b790b471f20310e163a39b",
+   "sha256": "08vnbz9gpah1l93fzfd87aawrhcnh2v1kyfxgsn88pdwg8awz8rx"
+  }
+ },
+ {
+  "ename": "aria2",
+  "commit": "89a55e7c313066ae1bc0db0af5c289814c85fcb1",
+  "sha256": "1gsqdqs3q86k7q88rf7qamc0sp5ca00xn9kr1r717vf6qq6a0c3c",
+  "fetcher": "gitlab",
+  "repo": "ukaszg/aria2",
+  "unstable": {
+   "version": [
+    20190816,
+    25
+   ],
+   "commit": "32e08d5a8ad2f305578e0f783e087c1d312238c7",
+   "sha256": "00135gq4xfblv50dwxq02dd1y18xv29lrl7iir3caq4pr3nhrshg"
+  }
+ },
+ {
+  "ename": "ariadne",
+  "commit": "89635cd11621b04a8575629ec1bf196fb3ea5d43",
+  "sha256": "0lfhving19wcfr40gjb2gnginiz8cncixiyyxhwx08lm84qb3a7p",
+  "fetcher": "github",
+  "repo": "manzyuk/ariadne-el",
+  "unstable": {
+   "version": [
+    20131117,
+    1711
+   ],
+   "deps": [
+    "bert"
+   ],
+   "commit": "6fe401c7f996bcbc2f685e7971324c6f5e5eaf15",
+   "sha256": "0vh9wfc3657sd12ybjcrxpg6f757x2ghkcl1lw01szmyy5vmj27h"
+  }
+ },
+ {
+  "ename": "arjen-grey-theme",
+  "commit": "ed9804061cfadd26c69bb1bfe63dbe22f916f723",
+  "sha256": "18q66f7hhys2ab9ljsdp9013mp7d6v6d1lrb0d1bb035r1b4pfj7",
+  "fetcher": "github",
+  "repo": "credmp/arjen-grey-theme",
+  "unstable": {
+   "version": [
+    20170522,
+    2047
+   ],
+   "commit": "4cd0be72b65d42390e2105cfdaa408a1ead8d8d1",
+   "sha256": "1n5axwn498ahb6984ir1zfl8vvwgbvq9bbrdfzydkmjljhgrp0rd"
+  }
+ },
+ {
+  "ename": "artbollocks-mode",
+  "commit": "22b237ab91ddd3c17986ea12e6a32f2ce62d3a79",
+  "sha256": "0dlnxicn6nzyiz44y92pbl4nzr9jxfb9a99wacjrwq2ahdrwhhjp",
+  "fetcher": "github",
+  "repo": "sachac/artbollocks-mode",
+  "unstable": {
+   "version": [
+    20170524,
+    422
+   ],
+   "commit": "33a41ca4f8206f57e5498a526d3b0ea18d08bb93",
+   "sha256": "06a2dp6nwy8xjr01k6d2c611qr2n9m7hdkrz9fci9r4rv1ikx5xv"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    2
+   ],
+   "commit": "583c7048a1b09cd79554423d5115f5ddd129d190",
+   "sha256": "133c1n4ra7z3vb6y47400y71a6ac19pyji0bgd4kr9fcbx0flx91"
+  }
+ },
+ {
+  "ename": "arview",
+  "commit": "31574cd756f4f93e2c6bcad5eca33a3294cccd54",
+  "sha256": "0d935lj0x3rbar94l7288xrgbcp1wmz6r2l0b7i89r5piczyiy1y",
+  "fetcher": "github",
+  "repo": "afainer/arview",
+  "unstable": {
+   "version": [
+    20160419,
+    2109
+   ],
+   "commit": "5437b4221b64b238c273a651d4792c577dba6d45",
+   "sha256": "1yvirfmvf6v5khl7zhx2ddv9bbxnx1qhwfzi0gy2nmbxlykb6s2j"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "commit": "5437b4221b64b238c273a651d4792c577dba6d45",
+   "sha256": "1yvirfmvf6v5khl7zhx2ddv9bbxnx1qhwfzi0gy2nmbxlykb6s2j"
+  }
+ },
+ {
+  "ename": "ascii-table",
+  "commit": "d6d5599ff68bf9125a9825ddd2a00009242bf2e1",
+  "sha256": "0p3dyxzs5xaq17209nnf2cqs87hz2b1k3x1nkq4jvhn71v4jcaj1",
+  "fetcher": "github",
+  "repo": "lassik/emacs-ascii-table",
+  "unstable": {
+   "version": [
+    20200329,
+    1744
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "572b62c8305b8c26082a17e15bc2f53066ddcb5a",
+   "sha256": "1k1wfbwzn9gjv7hmc7ffr3r211vxrxassryar6gnajmj9xbzwcgi"
+  }
+ },
+ {
+  "ename": "asilea",
+  "commit": "858e673c66e876d80f41d47d307c944d7bdb147d",
+  "sha256": "1lb8nr6r6yy06m4pxg8w9ja4zv8k5xwhl95v2wv95y1qwhgnwg3j",
+  "fetcher": "github",
+  "repo": "Fanael/asilea",
+  "unstable": {
+   "version": [
+    20150105,
+    1525
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "2aab1cc63b64ef08d12e84fd7ba5c94065f6039f",
+   "sha256": "1s973vzivibaqjb8acn4ylrdasxh17jcfmmvqp4wm05nwhg75597"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "2aab1cc63b64ef08d12e84fd7ba5c94065f6039f",
+   "sha256": "1s973vzivibaqjb8acn4ylrdasxh17jcfmmvqp4wm05nwhg75597"
+  }
+ },
+ {
+  "ename": "asn1-mode",
+  "commit": "b694baceceb54810be8f8c7152b2ac0b4063f01c",
+  "sha256": "0iswisb08dqz7jc5ra4wcdhbmglildgyrb547dm5362xmvm9ifmy",
+  "fetcher": "github",
+  "repo": "kawabata/asn1-mode",
+  "unstable": {
+   "version": [
+    20170729,
+    226
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "d5d4a8259daf708411699bcea85d322f18beb972",
+   "sha256": "067khpi4ghzyifrk1vhi57n3alp67qks4k4km11hasiavi5gsjmp"
+  }
+ },
+ {
+  "ename": "assess",
+  "commit": "6f917a34506193f2674b195569dfd3c13ba62c1d",
+  "sha256": "0xj3f48plwxmibax00qn15ya7s0h560xzwr8nkwl5r151v1mc9rr",
+  "fetcher": "github",
+  "repo": "phillord/assess",
+  "unstable": {
+   "version": [
+    20200211,
+    1817
+   ],
+   "deps": [
+    "m-buffer"
+   ],
+   "commit": "5bac045b273623772b6a2d820997d50f7ab4e466",
+   "sha256": "0mq59wz9anvywazl7d01fis1z7z7fsp9c7pymrc8rgmz77xpwnqx"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "deps": [
+    "m-buffer"
+   ],
+   "commit": "5bac045b273623772b6a2d820997d50f7ab4e466",
+   "sha256": "0mq59wz9anvywazl7d01fis1z7z7fsp9c7pymrc8rgmz77xpwnqx"
+  }
+ },
+ {
+  "ename": "astyle",
+  "commit": "b495f29653edd15cef8eb3c9ea4d8aea35b0ac75",
+  "sha256": "0vchbm2lb9qa66fspyylyv0snmrxjfpzc332j0k7pkp6cmi08fnh",
+  "fetcher": "github",
+  "repo": "storvik/emacs-astyle",
+  "unstable": {
+   "version": [
+    20200328,
+    616
+   ],
+   "deps": [
+    "reformatter"
+   ],
+   "commit": "04ff2941f08c4b731fe6a18ee1697436d1ca1cc0",
+   "sha256": "0midga1dz9yl7mzn6syb3iwnfpzvnfpqnxi9rsv63rqnrm36qy4q"
+  }
+ },
+ {
+  "ename": "asx",
+  "commit": "2eda72c3574c41184104532bb129cbe0efc8afd4",
+  "sha256": "0kijqfwkwm5kd1h3v0rab9fm8ivmqnmijy065iz5xhmi3yicx4aq",
+  "fetcher": "github",
+  "repo": "ragone/asx",
+  "unstable": {
+   "version": [
+    20191024,
+    1100
+   ],
+   "commit": "ec4bf74de602b97df1f306d51acf4cda45184aac",
+   "sha256": "1j505ijrgd0rwh69jl7677sgf5ryjwp160nrp0w0bskisrf028d7"
+  }
+ },
+ {
+  "ename": "async",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0s2qrmkqqfgi1ilzbj0rfk27f89p4dycdl1lqkbsm23j0zya53w4",
+  "fetcher": "github",
+  "repo": "jwiegley/emacs-async",
+  "unstable": {
+   "version": [
+    20200113,
+    1745
+   ],
+   "commit": "86aef2c38e7d35e8509b7feeee3e989d825eba91",
+   "sha256": "1slxlpxjggyg5q8xppn9csh54j93b2hc4v8lcn85ymw2hp3rsib9"
+  },
+  "stable": {
+   "version": [
+    1,
+    9,
+    4
+   ],
+   "commit": "67c369555de998eaabd60056dead038c6c50b8fd",
+   "sha256": "0hhpyxb3d531jb2f3wvzx25183f0anm8nxv6mh0p825q2gkm6ly7"
+  }
+ },
+ {
+  "ename": "async-await",
+  "commit": "9d74ecf94e5dbb46a939d26833b7cd0efd159ca1",
+  "sha256": "1534rhr4j74qbndafdj9q2wggcn8gphhjn3id8p27wyxr5sh93ms",
+  "fetcher": "github",
+  "repo": "chuntaro/emacs-async-await",
+  "unstable": {
+   "version": [
+    20200117,
+    828
+   ],
+   "deps": [
+    "iter2",
+    "promise"
+   ],
+   "commit": "deef2bb343463f5196545f1dd8c2a32d0cb3b146",
+   "sha256": "0aav9qdswnw7ynqlzn0sm34as5fj2d85syxgg8zjabzp6646ay29"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "iter2",
+    "promise"
+   ],
+   "commit": "deef2bb343463f5196545f1dd8c2a32d0cb3b146",
+   "sha256": "0aav9qdswnw7ynqlzn0sm34as5fj2d85syxgg8zjabzp6646ay29"
+  }
+ },
+ {
+  "ename": "atcoder-tools",
+  "commit": "314396ec5a51460ad679ee9fcf3aa3970cd44229",
+  "sha256": "1rlsqqc7p351yyzmad4dvxrp5aj2788sg04019ybk83kacy0y5hf",
+  "fetcher": "github",
+  "repo": "sei40kr/emacs-atcoder-tools",
+  "unstable": {
+   "version": [
+    20200109,
+    1236
+   ],
+   "deps": [
+    "f",
+    "s"
+   ],
+   "commit": "cfe61ed18ea9b3b1bfb6f9e7d80a47599680cd1f",
+   "sha256": "04v775vsy01h7wv2p4nc26d0p9ss8106v4whqfgd0c1rrkh5012p"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "deps": [
+    "f",
+    "s"
+   ],
+   "commit": "780fabbe5b3c890b3ae764e26b188603be294daa",
+   "sha256": "1pvnwzp0i1s19cyyzrkcannhx1jizvylxsr7qcipfiy2kmf8sbhz"
+  }
+ },
+ {
+  "ename": "atom-dark-theme",
+  "commit": "d1f565871559d6ea4ca4bb2fbaebce58f2f383eb",
+  "sha256": "1ci61blm7wc83wm2iyax017ai4jljyag5j1mvw86rimmmjzr0v8f",
+  "fetcher": "github",
+  "repo": "whitlockjc/atom-dark-theme-emacs",
+  "unstable": {
+   "version": [
+    20181022,
+    1602
+   ],
+   "commit": "5c8610d0b45a536b8f7f9777297c86362685a357",
+   "sha256": "15mjn5z7f7x8k4lbab5xv2r88s9ch9b58znv6vwpqakp63rx8hsx"
+  }
+ },
+ {
+  "ename": "atom-one-dark-theme",
+  "commit": "3ba1c4625c9603372746a6c2edb69d65f0ef79f5",
+  "sha256": "0wwnkhq7vyysqiqcxc1jsn98155ri4mf4w03k7inl1f8ffpwahvw",
+  "fetcher": "github",
+  "repo": "jonathanchu/atom-one-dark-theme",
+  "unstable": {
+   "version": [
+    20190705,
+    554
+   ],
+   "commit": "623fc08252e30174401750a09168279571288c7f",
+   "sha256": "09y4zh0i07vq8njvi4y1vmjqip057y3w2rhd7qzz6326bjz75cxk"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "commit": "c2ae343971f8cda7f5b5392552ce9281f52e53de",
+   "sha256": "1xyn8qiikng6vf5rbpfqz9ac10c69aip0w6v9l46w0qxsy8svyaj"
+  }
+ },
+ {
+  "ename": "atomic-chrome",
+  "commit": "35785773942a5510e2317ded5bdf872ffe434e8c",
+  "sha256": "0dx12mjdc4vhbvrcl61a7j247mgs71vvy0qqj6czbpfawfl46am9",
+  "fetcher": "github",
+  "repo": "alpha22jp/atomic-chrome",
+  "unstable": {
+   "version": [
+    20180617,
+    724
+   ],
+   "deps": [
+    "let-alist",
+    "websocket"
+   ],
+   "commit": "a505f638866f9e7b913784be0dc84f338e9ad449",
+   "sha256": "081465ahis2rvlklzn2vakbwn5dgr43ks4csp3arnlj11b43f3ai"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "deps": [
+    "let-alist",
+    "websocket"
+   ],
+   "commit": "38ce9127285e1ff45f0f39b9da36a682103bdb96",
+   "sha256": "01zwpdmq13iy3hsgijnqsg0yahjxngfbrnn1dd2x1bzpmr8hpxnz"
+  }
+ },
+ {
+  "ename": "attrap",
+  "commit": "b7420eca80a8c1776d68b1f121511cc265cc70dc",
+  "sha256": "1gxnrlsn9xcnnx0nhjxnhrz9bdpk2kpzjhj8jhjmwws9y361fimh",
+  "fetcher": "github",
+  "repo": "jyp/attrap",
+  "unstable": {
+   "version": [
+    20200114,
+    1928
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "flycheck",
+    "s"
+   ],
+   "commit": "4cf3e4a16255997e7c3c39682a72866a0a37dd4b",
+   "sha256": "0wqc7bqx9rvk8r7fd3x84h8p01v97s6w2jf29nnjb59xakwp22i7"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "flycheck",
+    "s"
+   ],
+   "commit": "4cf3e4a16255997e7c3c39682a72866a0a37dd4b",
+   "sha256": "0wqc7bqx9rvk8r7fd3x84h8p01v97s6w2jf29nnjb59xakwp22i7"
+  }
+ },
+ {
+  "ename": "auctex-cluttex",
+  "commit": "d08e481ad618a44f9bfa38c68ca30e67a6727538",
+  "sha256": "05cbiihq0k9d13l8xgd67yanxmj57hajcm2x2v3ils3lfkphqm5w",
+  "fetcher": "github",
+  "repo": "tsuu32/auctex-cluttex",
+  "unstable": {
+   "version": [
+    20200311,
+    1453
+   ],
+   "deps": [
+    "auctex"
+   ],
+   "commit": "76fba4a1a918ce8a276fa0e22f026ad9a45a47dc",
+   "sha256": "1rd92s2c08z3l2r2wxcs46bbri4rj0d0aym36v89pwq0fcqqx2ry"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "auctex"
+   ],
+   "commit": "e358f7148092d8ed64703641b5621e130cce458d",
+   "sha256": "1whzcp9wvpwn1c33n7mqxx8v6g4apg3cq5h2ffl74423ysymry71"
+  }
+ },
+ {
+  "ename": "auctex-latexmk",
+  "commit": "3f48af615c56f093dff417a5d3b705f9993c518f",
+  "sha256": "1rdlgkiwlgm06i1gjxcfciz6wgdskfhln8qhixyfxk7pnz0ax327",
+  "fetcher": "github",
+  "repo": "tom-tan/auctex-latexmk",
+  "unstable": {
+   "version": [
+    20170618,
+    1636
+   ],
+   "deps": [
+    "auctex"
+   ],
+   "commit": "4d353522650d7685acbf1d38f7dbc504f734bd84",
+   "sha256": "0qvscgffmzqk8lkcg3yk91vciim5ygk2m4crk02qn72ipkw5q13m"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    2
+   ],
+   "deps": [
+    "auctex"
+   ],
+   "commit": "4d353522650d7685acbf1d38f7dbc504f734bd84",
+   "sha256": "0qvscgffmzqk8lkcg3yk91vciim5ygk2m4crk02qn72ipkw5q13m"
+  }
+ },
+ {
+  "ename": "auctex-lua",
+  "commit": "102c7b05f5bfff12ac2820cae58c0205ca450559",
+  "sha256": "0v999jvinljkvhbn205p36a6jfzppn0xvflvzr8mid1hnqlrpjhf",
+  "fetcher": "github",
+  "repo": "vermiculus/auctex-lua",
+  "unstable": {
+   "version": [
+    20151121,
+    1610
+   ],
+   "deps": [
+    "auctex",
+    "lua-mode"
+   ],
+   "commit": "799cd8ac10c96991bb63d9aa60528ae5d8c786b5",
+   "sha256": "0lgfgvnaln5rhhwgcrzwrhbj0gz8sgaf6xxdl7njf3sa6bfgngsz"
+  }
+ },
+ {
+  "ename": "audio-notes-mode",
+  "commit": "1e6aed365c42987d64d0cd9a8a6178339b1b39e8",
+  "sha256": "0q88xmi7jbrx47nvbbmwggbm6i7agzpnv5y7cpdh73lg165xsz2h",
+  "fetcher": "github",
+  "repo": "Malabarba/audio-notes-mode",
+  "unstable": {
+   "version": [
+    20170611,
+    2159
+   ],
+   "commit": "fa38350829c7e97257efc746a010471d33748a68",
+   "sha256": "1srg6rg3j9ri2cyr4g78dfqq3fhpn6hf3mq4iz2jfqjayppfv38b"
+  }
+ },
+ {
+  "ename": "aurel",
+  "commit": "d1612acd2cf1fea739739608113923ec51d307e9",
+  "sha256": "13zyi55ksv426pcksbm3l9s6bmp102w7j1xbry46bc48al6i2nnl",
+  "fetcher": "github",
+  "repo": "alezost/aurel",
+  "unstable": {
+   "version": [
+    20170114,
+    937
+   ],
+   "deps": [
+    "bui",
+    "dash"
+   ],
+   "commit": "fc7ad208f43f8525f84a18941c9b55f956df8961",
+   "sha256": "0mcbw8p4wrnnr39wzkfz9kc899w0k1jb00q1926mchf202cmnz94"
+  },
+  "stable": {
+   "version": [
+    0,
+    9
+   ],
+   "deps": [
+    "bui",
+    "dash"
+   ],
+   "commit": "fc7ad208f43f8525f84a18941c9b55f956df8961",
+   "sha256": "0mcbw8p4wrnnr39wzkfz9kc899w0k1jb00q1926mchf202cmnz94"
+  }
+ },
+ {
+  "ename": "aurora-config-mode",
+  "commit": "10a44bed8edee646bf68abf7dffbe352a137a278",
+  "sha256": "1hpjwidqmjxanijsc1imc7ww9abbylmkin1p0846fbz1hz3a603c",
+  "fetcher": "github",
+  "repo": "bdd/aurora-config-mode.el",
+  "unstable": {
+   "version": [
+    20180216,
+    2302
+   ],
+   "commit": "8273ec7937a21b469b9dbb6c11714255b890f410",
+   "sha256": "1dlhf35hhjgkd9bqbpwrb825g1z6nh14mg31jg2avv55s28j0riy"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "commit": "0a7ca7987c3a0824e25470389c7d25c337a81593",
+   "sha256": "0ns1xhpk1awbj3kv946dv11a99p84dhm54vjk72kslxwx42nia28"
+  }
+ },
+ {
+  "ename": "auth-source-pass",
+  "commit": "5e268441634a6e58a00e577d6e2292fa226c11b8",
+  "sha256": "0icwdwz2zy3f9ynksr81pgq482iapsbx8lpyssiklyw0xgd1k8ak",
+  "fetcher": "github",
+  "repo": "DamienCassou/auth-password-store",
+  "unstable": {
+   "version": [
+    20191126,
+    1242
+   ],
+   "commit": "ff4940c647786914b3cbef69103d96a4ea334111",
+   "sha256": "1swrr8wjrfzjy3x11lfby2jckw5fgvpaywhg2pzmwwvf9mr9xzdg"
+  },
+  "stable": {
+   "version": [
+    5,
+    0,
+    0
+   ],
+   "commit": "df074612114c3cc2fa1c3023f26ff182f9b1190a",
+   "sha256": "0qnqqdpbfr06nqw4hq7c1s7yh7zyrv4gqjj06v70cavjml7pagp6"
+  }
+ },
+ {
+  "ename": "auth-source-xoauth2",
+  "commit": "8ba0273c8aa2a50b9dc9b8312b860d94dfd808d5",
+  "sha256": "0g06240ix4gzw3fb74jcadiq7nissi20i1vsbzhkx35j10mv7wn3",
+  "fetcher": "github",
+  "repo": "ccrusius/auth-source-xoauth2",
+  "unstable": {
+   "version": [
+    20200509,
+    2304
+   ],
+   "commit": "5e646a32c9ba31a015a09fce1ad711b85717119a",
+   "sha256": "0nl859csl8xcd6ybpjj15ph8l8fxwkwf45kbylss68alkyf1rl3v"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "5e646a32c9ba31a015a09fce1ad711b85717119a",
+   "sha256": "0nl859csl8xcd6ybpjj15ph8l8fxwkwf45kbylss68alkyf1rl3v"
+  }
+ },
+ {
+  "ename": "auto-async-byte-compile",
+  "commit": "f8e4328cae9b4759a75da0b26ea8b68821bc71af",
+  "sha256": "0ks6xsxzayiyd0jl8m36xlc5p57p21qbhgq2mmz50a2lhpxxfiyg",
+  "fetcher": "github",
+  "repo": "rubikitch/auto-async-byte-compile",
+  "unstable": {
+   "version": [
+    20160916,
+    454
+   ],
+   "commit": "8681e74ddb8481789c5dbb3cafabb327db4c4484",
+   "sha256": "1g98gla9qdqmifsxakhkbxlljy2ln1s3wfahk9zycrwgzfjlsdf4"
+  }
+ },
+ {
+  "ename": "auto-auto-indent",
+  "commit": "2ad2ea105b895cb958ce0ab2bf2fad2b40d41b2f",
+  "sha256": "08s73pnyrmklb660jl5rshncpq31z3m9fl55v7453ch8syp7gzh7",
+  "fetcher": "github",
+  "repo": "sabof/auto-auto-indent",
+  "unstable": {
+   "version": [
+    20131106,
+    1903
+   ],
+   "deps": [
+    "cl-lib",
+    "es-lib"
+   ],
+   "commit": "0139378577f936d34b20276af6f022fb457af490",
+   "sha256": "1whbvqylwnxg8d8gn55kcky39rgyc49rakyxlbkplh813lk6lxb7"
+  }
+ },
+ {
+  "ename": "auto-compile",
+  "commit": "57a2fb9524df3fdfdc54c403112e12bd70888b23",
+  "sha256": "08k9wqk4yysps8n5n50v7lpadwsnm553pv9p7m242fwbgbsgz6nf",
+  "fetcher": "github",
+  "repo": "emacscollective/auto-compile",
+  "unstable": {
+   "version": [
+    20191020,
+    1040
+   ],
+   "deps": [
+    "packed"
+   ],
+   "commit": "3e92c5b1a94b0cf43f2d624180a1cb01df92afd8",
+   "sha256": "1f270axx8cpl1fgrwaxjbwyhkacp1b9whmn9f3mjpwkr55ih7wgl"
+  },
+  "stable": {
+   "version": [
+    1,
+    5,
+    2
+   ],
+   "deps": [
+    "packed"
+   ],
+   "commit": "3e92c5b1a94b0cf43f2d624180a1cb01df92afd8",
+   "sha256": "1f270axx8cpl1fgrwaxjbwyhkacp1b9whmn9f3mjpwkr55ih7wgl"
+  }
+ },
+ {
+  "ename": "auto-complete",
+  "commit": "083fb071191bccd6feb3fb84569373a597440fb1",
+  "sha256": "1c4ij5bnclg94jdzhkqvq2vxwv6wvs051mbki1ibjm5f2hlacvh3",
+  "fetcher": "github",
+  "repo": "auto-complete/auto-complete",
+  "unstable": {
+   "version": [
+    20170125,
+    245
+   ],
+   "deps": [
+    "cl-lib",
+    "popup"
+   ],
+   "commit": "2f11a4e6ff7f5d4939c3e1724158411a7efed057",
+   "sha256": "067ymm5swi9yq3sndzghqxlyyywzk434ip68nf6fxbj51raxzzq8"
+  },
+  "stable": {
+   "version": [
+    1,
+    5,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "popup"
+   ],
+   "commit": "0655b7f1e6c0f8475adc55f2b86404a877f26a77",
+   "sha256": "04i9b11iksg6acn885wl3qgi5xpsm3yszlqmd2x21yhprndlz7gb"
+  }
+ },
+ {
+  "ename": "auto-complete-auctex",
+  "commit": "77167fb2e84bed32ace9490c1ed4148719e4cf8e",
+  "sha256": "00npvryds5wd3d5a13r9prlvw6vvjlag8d32x5xf9bfmmvs0fgqh",
+  "fetcher": "github",
+  "repo": "monsanto/auto-complete-auctex",
+  "unstable": {
+   "version": [
+    20140223,
+    1758
+   ],
+   "deps": [
+    "auto-complete",
+    "yasnippet"
+   ],
+   "commit": "855633f668bcc4b9408396742a7cb84e0c4a2f77",
+   "sha256": "1wri8q5llpy1q1h4ac4kjnnkgj6fby8i9vrpr6mrb13d4gnk4gr2"
+  }
+ },
+ {
+  "ename": "auto-complete-c-headers",
+  "commit": "0174b70fec45ddec9c1e9555adc82fef59054135",
+  "sha256": "02pkrxvzrpyjrr2fkxnl1qw06aspzv8jlp2c1piln6zcjd92l3j7",
+  "fetcher": "github",
+  "repo": "mooz/auto-complete-c-headers",
+  "unstable": {
+   "version": [
+    20150912,
+    323
+   ],
+   "deps": [
+    "auto-complete"
+   ],
+   "commit": "52fef720c6f274ad8de52bef39a343421006c511",
+   "sha256": "12mzi6bwg702sp0f0wd1ag555blbpk252rr9rqs03bn8pkw89h4n"
+  }
+ },
+ {
+  "ename": "auto-complete-chunk",
+  "commit": "306e2528638d97c28372df55a9376750d3fde1d4",
+  "sha256": "1937j1xm20vfcqm9ig4nvciqfkz7rpw0nsfhlg69gkmv0nqszdr3",
+  "fetcher": "github",
+  "repo": "tkf/auto-complete-chunk",
+  "unstable": {
+   "version": [
+    20140225,
+    946
+   ],
+   "deps": [
+    "auto-complete"
+   ],
+   "commit": "a9aa77ffb84a1037984a7ce4dda25074272f13fe",
+   "sha256": "1zhbpxpl443ghpkl9i68jcjfcw1vnf8ky06pf5qjjmqbxlcyd9li"
+  }
+ },
+ {
+  "ename": "auto-complete-clang",
+  "commit": "eab7d88a893fdf76c22f0aa5ac3577efd60fc9b4",
+  "sha256": "1rnmphl7ml5ryjl5ka2l58hddir8b34iz1rm905wdwh164piljva",
+  "fetcher": "github",
+  "repo": "brianjcj/auto-complete-clang",
+  "unstable": {
+   "version": [
+    20140409,
+    752
+   ],
+   "deps": [
+    "auto-complete"
+   ],
+   "commit": "a195db1d0593b4fb97efe50885e12aa6764d998c",
+   "sha256": "12y6f47xbjl4gy14j2f5wlisy5vl6rhx74n27w61pjv38m0a7mi1"
+  }
+ },
+ {
+  "ename": "auto-complete-clang-async",
+  "commit": "23aa24b025216359c5e600eee2f2cd4ecc7556e3",
+  "sha256": "1jj0jn1v3070g7g0j5gvpybv145kki8nsjxqb8fjf9qag8ilfkjh",
+  "fetcher": "github",
+  "repo": "Golevka/emacs-clang-complete-async",
+  "unstable": {
+   "version": [
+    20130526,
+    1514
+   ],
+   "commit": "5d9c5cabbb6b31e0ac3637631c0c8b25184aa8b4",
+   "sha256": "1sw0wxrjcjqk0w1llfj376g6axa5bnk2lq2vv66746bkz14h0s8f"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "commit": "a5114e3477793ccb9420acc5cd6a1cb26be65964",
+   "sha256": "1kp2l1cgzlg2g3wllz4gl1ssn4lnx2sn26xqigfrpr8y5rj2bsfj"
+  }
+ },
+ {
+  "ename": "auto-complete-distel",
+  "commit": "90fff35dd9709b06802edef89d1fe6a96b7115a6",
+  "sha256": "0ca242gl8dl4rmg8qqyhgxvf46fprl2npbq2w8f6s546s9nql4jk",
+  "fetcher": "github",
+  "repo": "sebastiw/distel-completion",
+  "unstable": {
+   "version": [
+    20180827,
+    1344
+   ],
+   "deps": [
+    "auto-complete",
+    "distel-completion-lib"
+   ],
+   "commit": "acc4c0a5521904203d797fe96b08e5fae4233c7e",
+   "sha256": "0yvp3dwa9mwfyrqla27ycwyjad4bp1267bxv0chxcr4528hnygl3"
+  }
+ },
+ {
+  "ename": "auto-complete-exuberant-ctags",
+  "commit": "1cc9786ed8cea2461b592f860d8e2a0897c57068",
+  "sha256": "1i2s3ycc8jafkzdsz3kbvx1hh95ydi5s6rq6n0wzw1kyy3km35gd",
+  "fetcher": "github",
+  "repo": "k1LoW/auto-complete-exuberant-ctags",
+  "unstable": {
+   "version": [
+    20140320,
+    724
+   ],
+   "deps": [
+    "auto-complete"
+   ],
+   "commit": "ff6121ff8b71beb5aa606d28fd389c484ed49765",
+   "sha256": "1fqgyg986fg1dzac5wa97bx82mfddqb6qrfnpr3zksmw3vgykxr0"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    7
+   ],
+   "deps": [
+    "auto-complete"
+   ],
+   "commit": "ff6121ff8b71beb5aa606d28fd389c484ed49765",
+   "sha256": "1fqgyg986fg1dzac5wa97bx82mfddqb6qrfnpr3zksmw3vgykxr0"
+  }
+ },
+ {
+  "ename": "auto-complete-nxml",
+  "commit": "c89dcbf03a802a4361e44174a332a312e352be36",
+  "sha256": "0viscr5k1carn9vhflry16kgihr6fvh6h36b049pgnk6ww085k6a",
+  "fetcher": "github",
+  "repo": "aki2o/auto-complete-nxml",
+  "unstable": {
+   "version": [
+    20140221,
+    458
+   ],
+   "deps": [
+    "auto-complete"
+   ],
+   "commit": "ac7b09a23e45f9bd02affb31847263de4180163a",
+   "sha256": "18bf1kw85mab0zp7rn85cm1nxjxg5c1dmiv0j0mjwzsv8an4px5y"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "deps": [
+    "auto-complete"
+   ],
+   "commit": "ac7b09a23e45f9bd02affb31847263de4180163a",
+   "sha256": "18bf1kw85mab0zp7rn85cm1nxjxg5c1dmiv0j0mjwzsv8an4px5y"
+  }
+ },
+ {
+  "ename": "auto-complete-pcmp",
+  "commit": "f5c53a8aeaaab23e032a8e7cb5cad7e531a1662c",
+  "sha256": "1mpgkwj8jwpvxphlm6iaprwjrldmihbgg97jav0fbm1kjnm4azna",
+  "fetcher": "github",
+  "repo": "aki2o/auto-complete-pcmp",
+  "unstable": {
+   "version": [
+    20140227,
+    651
+   ],
+   "deps": [
+    "auto-complete",
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "2595d3dab1ef3549271ca922f212928e9d830eec",
+   "sha256": "1hf2f903hy9afahrgy2fx9smgn631drs6733188zgqi3nkyizj26"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "auto-complete",
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "2595d3dab1ef3549271ca922f212928e9d830eec",
+   "sha256": "1hf2f903hy9afahrgy2fx9smgn631drs6733188zgqi3nkyizj26"
+  }
+ },
+ {
+  "ename": "auto-complete-rst",
+  "commit": "4c948dc47f67aa47a1607cbdacdc95241d1a658f",
+  "sha256": "0dazkpnzzr0imb2a01qq8l60jxhhlknzjx7wccnbm7d2rk3338m6",
+  "fetcher": "github",
+  "repo": "tkf/auto-complete-rst",
+  "unstable": {
+   "version": [
+    20140225,
+    944
+   ],
+   "deps": [
+    "auto-complete"
+   ],
+   "commit": "4803ce41a96224e6fa54e6741a5b5f40ebed7351",
+   "sha256": "107svb82cgfns9kcrmy3hh56cab81782jkbz5i9959ms81xizfb8"
+  }
+ },
+ {
+  "ename": "auto-complete-sage",
+  "commit": "f1cd78dcd58d559c47873f8fcfcab089a8493dd6",
+  "sha256": "02sxbir3arvmnkvxgndlkln9y05jnlv6i8czd6a0wcxk4nj43lq1",
+  "fetcher": "github",
+  "repo": "stakemori/auto-complete-sage",
+  "unstable": {
+   "version": [
+    20160514,
+    751
+   ],
+   "deps": [
+    "auto-complete",
+    "sage-shell-mode"
+   ],
+   "commit": "51b8e3905196d266e1f8aa47881189833151b398",
+   "sha256": "139in1jgxg43v7ji4i1qmxbgspr71h95lzlz0fvdk78vkxc5842b"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    5
+   ],
+   "deps": [
+    "auto-complete",
+    "sage-shell-mode"
+   ],
+   "commit": "a61a4e58b14134712e0737280281c0b10e56da93",
+   "sha256": "0l49ciic7g30vklxq6l1ny3mz87l5p8qc30rmkjvkzvg8r52ksn3"
+  }
+ },
+ {
+  "ename": "auto-dictionary",
+  "commit": "1711d710ac09fe407fde89ee351ccdcb78555d35",
+  "sha256": "1va485a8lxvb3507kr83cr6wpssxnf8y4l42mamn9daa8sjx3q16",
+  "fetcher": "github",
+  "repo": "nschum/auto-dictionary-mode",
+  "unstable": {
+   "version": [
+    20150410,
+    1610
+   ],
+   "commit": "b364e08009fe0062cf0927d8a0582fad5a12b8e7",
+   "sha256": "0rfjx0x2an28821shgb4v5djza4kwn5nnrsl2cvh3px4wrvw3izp"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "0e3567a81f7bb0ad53ed9f20c7d3d1ac40c26ad1",
+   "sha256": "191294k92qp8gmfypf0q8j8qrym96aqikzvyb9p03wqvbr3r1dsk"
+  }
+ },
+ {
+  "ename": "auto-dim-other-buffers",
+  "commit": "acc9b816796b9f142c53f90593952b43c962d2d8",
+  "sha256": "0n9d23sfcmkjfqlm80vrgf856wy08ak4n4rk0z7vadq07yj46zxh",
+  "fetcher": "github",
+  "repo": "mina86/auto-dim-other-buffers.el",
+  "unstable": {
+   "version": [
+    20200516,
+    1608
+   ],
+   "commit": "f712de72d4618ce6c5d55ba20c848c83a87c5f32",
+   "sha256": "17dsdfs9l3g4jnna5b2pzifvxv13rr5rja76frl5wwp2brfmq8qv"
+  }
+ },
+ {
+  "ename": "auto-highlight-symbol",
+  "commit": "fdf73ee62f0a4e762e3a1aa94284abea8da8ce7c",
+  "sha256": "02mkji4sxym07jf5ww5kgv1c18x0xdfn8cmvgns5h4gij64lnr66",
+  "fetcher": "github",
+  "repo": "gennad/auto-highlight-symbol",
+  "unstable": {
+   "version": [
+    20130313,
+    943
+   ],
+   "commit": "26573de912d760e04321b350897aea70958cee8b",
+   "sha256": "0jfiax1qqnyznhlnqkjsr9nnv7fpjywvfhj9jq59460j0nbrgs5c"
+  }
+ },
+ {
+  "ename": "auto-indent-mode",
+  "commit": "49af78177278e7072c70fde0eaa5bb82490ebe9d",
+  "sha256": "1nk78p8lqs8cx90asfs8iaqnwwyy8fi5bafaprm9c0nrxz299ibz",
+  "fetcher": "github",
+  "repo": "mattfidler/auto-indent-mode.el",
+  "unstable": {
+   "version": [
+    20191112,
+    1418
+   ],
+   "commit": "ebb1ee5ca24f3040c34b9455502a0e94f19903d0",
+   "sha256": "19p73jws7iddgs14cnfz9lb5ggyicqk08pasf66fkcvyhzydnwkm"
+  },
+  "stable": {
+   "version": [
+    0,
+    126
+   ],
+   "commit": "ad7032ee058a74405d04d775b0b384351536bc53",
+   "sha256": "1hlsgsdxpx42kmqkjgy9b9ldz5i4dbi879v87pjd2qbkj8iywb6y"
+  }
+ },
+ {
+  "ename": "auto-minor-mode",
+  "commit": "b3ab5f048034777551e344101d8415cac92362c8",
+  "sha256": "1dpdylrpw1pvlmhh229b3lqs07drx9kdhw4vcv5a48qah14dz6qa",
+  "fetcher": "github",
+  "repo": "joewreschnig/auto-minor-mode",
+  "unstable": {
+   "version": [
+    20180527,
+    1123
+   ],
+   "commit": "17cfa1b54800fdef2975c0c0531dad34846a5065",
+   "sha256": "1jgq9b262pjr6npza3k0p2glb6mpp0dfpslgx3i2p8a5ipwhwaqa"
+  },
+  "stable": {
+   "version": [
+    20180527,
+    1
+   ],
+   "commit": "c62f4e04c7b73835c399f0348bea0ade2720bcbb",
+   "sha256": "0vqqy6nbb884h8qhzqvjycvfqbm9pbhqxr3dlxrhfx8m6c3iasq1"
+  }
+ },
+ {
+  "ename": "auto-org-md",
+  "commit": "39f934f86b5dc04078c204bcbd268af60857e268",
+  "sha256": "1yh9g8407kym6r0b8kr18qshxlrkw47ac17a9lvql0ksshfmnqvk",
+  "fetcher": "github",
+  "repo": "jamcha-aa/auto-org-md",
+  "unstable": {
+   "version": [
+    20180213,
+    2343
+   ],
+   "commit": "9318338bdb7fe8bd698d88f3af89b2d6413efdd2",
+   "sha256": "1dzxc1f4yvj8xww5drcpzmn3fyi8ziimh1cmy6l3i399l1zl0njj"
+  }
+ },
+ {
+  "ename": "auto-package-update",
+  "commit": "78f549a299a06941edce13381f597f3a61e8c723",
+  "sha256": "0fdcniq5mrwbc7yvma4088r0frdfvc2ydfil0s003faz0nrjcp8k",
+  "fetcher": "github",
+  "repo": "rranelli/auto-package-update.el",
+  "unstable": {
+   "version": [
+    20200421,
+    309
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "cf7f7486ed699f2ed7cc8af950740aece0de6124",
+   "sha256": "14sq8p3qbhlfmpisanjxpginiibngmb84mjga97aq5sgpxy38wix"
+  },
+  "stable": {
+   "version": [
+    1,
+    6,
+    1
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "cdef79f9fc6f8347fdd05664978fb9a948ea0410",
+   "sha256": "05llpa6g4nb4qswmcn7j3bs7hnmkrkax7hsk7wvklr0wrljyg9a2"
+  }
+ },
+ {
+  "ename": "auto-pause",
+  "commit": "275d1b1bf1eb47cd9c769286c03b2b9aff9d74dd",
+  "sha256": "0cdak2kicxylj5f161kia0bzzqad426y8cj4zf04gcl0nndijyrc",
+  "fetcher": "github",
+  "repo": "lujun9972/auto-pause",
+  "unstable": {
+   "version": [
+    20160426,
+    1216
+   ],
+   "commit": "a4d778de774ca3895542cb559a953e0d98657338",
+   "sha256": "1pxhqwvg059pslin6z87jd8d0q44ljwvdn6y23ffrz9kfpn3m5m2"
+  }
+ },
+ {
+  "ename": "auto-read-only",
+  "commit": "189e394eb9fac09783c75ff1b64facdd745a0454",
+  "sha256": "1cvh2c7pgdxgnl0fr1lymz9pf573hj6dn8cjcb64wdczkrci7yk5",
+  "fetcher": "github",
+  "repo": "zonuexe/auto-read-only.el",
+  "unstable": {
+   "version": [
+    20170306,
+    443
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "79654f8fc024f383ae7af05487c1345738236500",
+   "sha256": "123822s9xkzw25swn1h1szxmmajnn9rq85vasygvy5cn2l6lar3l"
+  }
+ },
+ {
+  "ename": "auto-rename-tag",
+  "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228",
+  "sha256": "05ln7dj57f3rjhmvbwy6fpn71ln4fw94qiw120qby199da1an28f",
+  "fetcher": "github",
+  "repo": "jcs-elpa/auto-rename-tag",
+  "unstable": {
+   "version": [
+    20190525,
+    628
+   ],
+   "commit": "27ca700cb2f61a1040013600c5744d68a27cbd8d",
+   "sha256": "1hydigzi82zana6ivcj4nxqvdnh3973594ag6zlgw9nijilih64r"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "commit": "4bd41b3107d3971c9533f9d0c8718c299669cb78",
+   "sha256": "1g6kllnl625h6vmnps15a7ivpxq3k6s4vdxj50dj2i76g19wi2cn"
+  }
+ },
+ {
+  "ename": "auto-save-buffers-enhanced",
+  "commit": "d221a217e9f6a686fa2a8b120a1f0b43c4482ce6",
+  "sha256": "123vf6nnvdhrrfjn8n8h8a11mkqmy2zm3w3yn99np0zj31x8z7bb",
+  "fetcher": "github",
+  "repo": "kentaro/auto-save-buffers-enhanced",
+  "unstable": {
+   "version": [
+    20161109,
+    710
+   ],
+   "commit": "461e8c816c1b7c650be5f209078b381fe55da8c6",
+   "sha256": "0ckjijjpqpbv9yrqfnl3x9hcdwwdgvm5r2vyx1a9nk4d3i0hd9i5"
+  }
+ },
+ {
+  "ename": "auto-scroll-mode",
+  "commit": "195041c70d2807184d4d8c711bcd3f54b8dfc73a",
+  "sha256": "1hvnhszn1cqzw42wn7w0hrq7wn161alg2w6xpd53ydg61g31i68n",
+  "fetcher": "github",
+  "repo": "stardiviner/auto-scroll-mode",
+  "unstable": {
+   "version": [
+    20200316,
+    134
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a23669a8747e71ca5b1003b923f7a3d3834740e3",
+   "sha256": "033msm39fdhm6iqd7khjsqvxrv4314h8klsq3g06zsrgpmjki1xr"
+  }
+ },
+ {
+  "ename": "auto-shell-command",
+  "commit": "ea710bfa77fee7c2688eea8258ca9d2105d1896e",
+  "sha256": "1i78fh72i8yv91rnabf0vs78r43qrjkr36hndmn5ya2xs3b1g41j",
+  "fetcher": "github",
+  "repo": "ongaeshi/auto-shell-command",
+  "unstable": {
+   "version": [
+    20180817,
+    1502
+   ],
+   "deps": [
+    "deferred",
+    "popwin"
+   ],
+   "commit": "a8f9213e3c773b5687b81881240e6e648f2f56ba",
+   "sha256": "1b0kgqh521y16cx84rbsr244i4fs3l8h4wqjy2zdpwbpbikx1hxk"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    2
+   ],
+   "deps": [
+    "deferred",
+    "popwin"
+   ],
+   "commit": "59d4abce779a3ce3e920592bf5696b54b2e192c7",
+   "sha256": "1h8zsgw30axprs7a5kkygbhvilillzazxgqz01ng36il65fi28s6"
+  }
+ },
+ {
+  "ename": "auto-sudoedit",
+  "commit": "7cf6bc8bb7b618d74427622b9b2812daa79a3767",
+  "sha256": "1clp52fqxsilyi62p1cabhan55lbwax6fqlhccyjbl36yrdig3fh",
+  "fetcher": "github",
+  "repo": "ncaq/auto-sudoedit",
+  "unstable": {
+   "version": [
+    20200427,
+    635
+   ],
+   "deps": [
+    "f"
+   ],
+   "commit": "0ad8247fdd0f1d747cd1ff73adb6b5efcecc7f3b",
+   "sha256": "10p0hc95j382km8655pqld9wxg10j1f36czzppkdd6a55cxarv9f"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "f"
+   ],
+   "commit": "0ad8247fdd0f1d747cd1ff73adb6b5efcecc7f3b",
+   "sha256": "10p0hc95j382km8655pqld9wxg10j1f36czzppkdd6a55cxarv9f"
+  }
+ },
+ {
+  "ename": "auto-virtualenv",
+  "commit": "ccb91515d9a8195061429ed8df3471867d211f9a",
+  "sha256": "0xv51g74l5pxa3s185867dpc98m6y26xbj5wgz7f9177qchvdbhk",
+  "fetcher": "github",
+  "repo": "marcwebbie/auto-virtualenv",
+  "unstable": {
+   "version": [
+    20170125,
+    1917
+   ],
+   "deps": [
+    "cl-lib",
+    "pyvenv",
+    "s"
+   ],
+   "commit": "3826db66b417788e2b2eb138717255b1f52a55c3",
+   "sha256": "12691m4z0zr3prmdhmjlpcx0ajj1ddrbj9gy827xmgr0vaqbr7b2"
+  }
+ },
+ {
+  "ename": "auto-virtualenvwrapper",
+  "commit": "02a209ae8f9fc68feb3bb64d32d129fedef2b80b",
+  "sha256": "1v82z922d9sadwvyrl4iddsa19f5k43s6iwn8w146jcl0v42bkmd",
+  "fetcher": "github",
+  "repo": "robert-zaremba/auto-virtualenvwrapper.el",
+  "unstable": {
+   "version": [
+    20200510,
+    1006
+   ],
+   "deps": [
+    "cl-lib",
+    "s",
+    "virtualenvwrapper"
+   ],
+   "commit": "30fb54aa3c99f3c614ea9a92669d634df30c9439",
+   "sha256": "19qycxf6ln60s604j5rn3qfsy2rbzdbw4gwkiprdiq1bkmphbwzj"
+  }
+ },
+ {
+  "ename": "auto-yasnippet",
+  "commit": "d33c0aee6a5d27217bbae28fc8f448c3badc8a4b",
+  "sha256": "02281gyy07cy72a29fjsixg9byqq3izb9m1jxv98ni8pcy3bpsqa",
+  "fetcher": "github",
+  "repo": "abo-abo/auto-yasnippet",
+  "unstable": {
+   "version": [
+    20191015,
+    942
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "db9e0dd4335b2202cd5dac95bbbc87a1032d9bbe",
+   "sha256": "0az8pip0gsq5xqpfizcz4rmj5hmkvz1fdkg996k9qqacp17p2caj"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "5cc54edbe03c0061bf69883a3e39d3bb16019e0f",
+   "sha256": "0n3r7j83csby2s7284hy5pycynazyrkljxkn6xqn08gvxbbbdpdq"
+  }
+ },
+ {
+  "ename": "autobookmarks",
+  "commit": "e40e6ebeb30b3f23ad37a695e011431a48c5a62e",
+  "sha256": "11zhg3y9fb5mq67fwsnjrql9mnwkp3hwib7fpllb3yyf2yywc8zp",
+  "fetcher": "github",
+  "repo": "Fuco1/autobookmarks",
+  "unstable": {
+   "version": [
+    20190919,
+    841
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "224b24950d3ae57cd16d7417c07fda337fe0ea09",
+   "sha256": "0cfx447185shbiadhbar72bgqwzmbia82f8a2py215hgw9wrgqr9"
+  }
+ },
+ {
+  "ename": "autobuild",
+  "commit": "c738dea2608e68ec0758cb9d5fde1af472f49f1e",
+  "sha256": "0k5s86xcva3v0zg3dcpkrrcvxxk93gfp7nb80dvac8dyk1qx99bd",
+  "fetcher": "github",
+  "repo": "erjoalgo/autobuild",
+  "unstable": {
+   "version": [
+    20200209,
+    2005
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "9e7a101e1563eaf6f5d671e5877d652079cea78b",
+   "sha256": "0khhmhh5fv004xhs3v8v8y3m8i1ibi19w74sv4shpy0ixd5zq1bj"
+  }
+ },
+ {
+  "ename": "autocrypt",
+  "commit": "c5aac210984709f020f96f3ca166185900accddf",
+  "sha256": "1y5p5n2p2qk638i1as3wbfz82r08jv4q91470xz9r1gkdnn1xyx8",
+  "fetcher": "git",
+  "url": "https://git.sr.ht/~zge/autocrypt",
+  "unstable": {
+   "version": [
+    20200505,
+    1717
+   ],
+   "commit": "d77140654405cabd007621606aca9beb512dff7a",
+   "sha256": "0cr2q5dfvh85m6zlc2glssxj81py0hrvg9kh7bk6r33j0zygbr7r"
+  }
+ },
+ {
+  "ename": "autodisass-java-bytecode",
+  "commit": "a094845521d76754a29435012af5fba9f7975a8e",
+  "sha256": "1k19nkbxnysm3qkpdhz4gv2x9nnrp94xl40x84q8n84s6xaan4dc",
+  "fetcher": "github",
+  "repo": "gbalats/autodisass-java-bytecode",
+  "unstable": {
+   "version": [
+    20151005,
+    1612
+   ],
+   "commit": "3d61dbe266133c950b39e880f78d142751c7dc4c",
+   "sha256": "1pf2mwnicj5x2kksxwmrzz2vfxj9y9r6rzgc1fl8028mfrmrmg8s"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "commit": "3d61dbe266133c950b39e880f78d142751c7dc4c",
+   "sha256": "1pf2mwnicj5x2kksxwmrzz2vfxj9y9r6rzgc1fl8028mfrmrmg8s"
+  }
+ },
+ {
+  "ename": "autodisass-llvm-bitcode",
+  "commit": "657e8f6bd0e44f11db8480ca42fb29d85fc3ec29",
+  "sha256": "0bh73nzll9jp7kiqfnb5dwkipw85p3c3cyq58s0nghig02z63j01",
+  "fetcher": "github",
+  "repo": "gbalats/autodisass-llvm-bitcode",
+  "unstable": {
+   "version": [
+    20150411,
+    125
+   ],
+   "commit": "d2579e3a1427af2dc947c343e49eb3434078bf04",
+   "sha256": "1fq4h5fmamyh7z8nq6pigx74p5v8k3qfm64k66vwsm8bl5jdkw17"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "14bb1bfe2be3b04d6e0c87a7a9d1e88ce15506d0",
+   "sha256": "1hyp49bidwc53cr25wwwyzcd0cbbqzxkfcpnccimphv24qfsai85"
+  }
+ },
+ {
+  "ename": "automargin",
+  "commit": "0937e63ec686cc3e183bddb029a514c64934fc81",
+  "sha256": "0llqz01wmacc0f8j3h7r0j57vkmzksl9vj1h0igfxzpm347mm9q8",
+  "fetcher": "github",
+  "repo": "zk-phi/automargin",
+  "unstable": {
+   "version": [
+    20131112,
+    814
+   ],
+   "commit": "4901d969ad69f5244e6300baab4ba04efed800c3",
+   "sha256": "02nnyncfh6g0xizy7wa8721ahpnwk451kngd6n0y0249f50p3962"
+  }
+ },
+ {
+  "ename": "autopair",
+  "commit": "4150455d424326667390f72f6edd22b274d9fa01",
+  "sha256": "0l2ypsj3dkasm0lj9jmnaqjs3rv97ldfw8cmayv77mzfd6lhjmh3",
+  "fetcher": "github",
+  "repo": "joaotavora/autopair",
+  "unstable": {
+   "version": [
+    20160304,
+    1237
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "2b6d72bccb0ebba6e7e711528872b898b0c65b0a",
+   "sha256": "09p56vi5zgm2djglimwyhv4n4gyydjndzn46vg9qzzlxvvmw66i1"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "2d1eb81d12f71248ad305e70cceddf08d4fe2b39",
+   "sha256": "0g6kd1r0wizamw26bhp5jkvpsd98rcybkfchc622b9v5b89a07nq"
+  }
+ },
+ {
+  "ename": "autotest",
+  "commit": "5fc2c4a590cbeccfb43003972a78f5d76ec4a9e7",
+  "sha256": "0f46m5pc40i531dzfnhkcn192dcs1q20y083c1c0wg2zhjcdr5iy",
+  "fetcher": "github",
+  "repo": "zenspider/elisp",
+  "unstable": {
+   "version": [
+    20190331,
+    2230
+   ],
+   "commit": "bcd3d76a47b4f0e7c382fb680b14f40208dae568",
+   "sha256": "0sgzjddd34icbbm4pc7v1662k6288pkr70ki4p2j3q4mh9qqc8q7"
+  }
+ },
+ {
+  "ename": "autotetris-mode",
+  "commit": "4c5c698b7dfb179f43b9fdf4652b96e2d7f8e7c6",
+  "sha256": "0k4yq4pvrs1zaf9aqxmlb6l2v4k774zbxj4zcx49w3l1h8gwxpbb",
+  "fetcher": "github",
+  "repo": "skeeto/autotetris-mode",
+  "unstable": {
+   "version": [
+    20141114,
+    1646
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "0c3a746dcc304a67d2a6e7ad4ef93f512486343a",
+   "sha256": "055kzs1qgx8jbwsxrnnqzbl8hgmaigkz3mqll2i0fdac5a605vxc"
+  }
+ },
+ {
+  "ename": "autothemer",
+  "commit": "9a15a17a5aa78aed72958b2a1bde53f0c0ab5be7",
+  "sha256": "0wahmbihyr3dx4lgiwi7041gvmmqlzlv7ss25fw90srs9n2h05gj",
+  "fetcher": "github",
+  "repo": "jasonm23/autothemer",
+  "unstable": {
+   "version": [
+    20180920,
+    923
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "69488c71dfc182cf2e7be2d745037f230ade678e",
+   "sha256": "0l3xsnp5j46jcjc1nkfbfg0pyzdi94rn0h5idfpqikj6f3ralh10"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "8c467f57571c154129d660dfccebd151c998f2d9",
+   "sha256": "0cd2pqh6k32sjidkcd8682y4l6mx52xw4a05f38kk8nsrk28m74k"
+  }
+ },
+ {
+  "ename": "autumn-light-theme",
+  "commit": "52a7598dc550c76f4e081fe1c4a6d8697bd30561",
+  "sha256": "0g3wqv1yw3jycq30mcj3w4sn9nj6i6gyd2ljzimf547ggcai536a",
+  "fetcher": "github",
+  "repo": "aalpern/emacs-color-theme-autumn-light",
+  "unstable": {
+   "version": [
+    20150515,
+    1447
+   ],
+   "commit": "1e3b2a43a3001e4a97a5ff073ba3f0d2ea3888f9",
+   "sha256": "1lip7282g41ghn64dvx2ab437s83cj9l8ps1rd8rbhqyz4bx5wb9"
+  }
+ },
+ {
+  "ename": "avandu",
+  "commit": "e1344e49e6a41ce390a047cb8d48090160b37b50",
+  "sha256": "174bd3vbvh0l9282bg8575nqc71zkg90bwbxbv1b7dz8qaaczhcy",
+  "fetcher": "github",
+  "repo": "ryuslash/avandu",
+  "unstable": {
+   "version": [
+    20170101,
+    1903
+   ],
+   "commit": "f44588d8e747fa880411cb4542cc39962252b90a",
+   "sha256": "097wls9k6qrf12nn8mpszfbqsaqc81956yqxns1sjs6dmjqi0c7z"
+  }
+ },
+ {
+  "ename": "avk-emacs-themes",
+  "commit": "ef362a76a3881c7596dcc2639df588227b3713c0",
+  "sha256": "0yimnfm50qsq505fc67b3qnxx2aiyz5a7bw87zkjrdnar12vv144",
+  "fetcher": "github",
+  "repo": "avkoval/avk-emacs-themes",
+  "unstable": {
+   "version": [
+    20191220,
+    625
+   ],
+   "commit": "e97ec20d07cc9093661f51853375063bcdc91993",
+   "sha256": "14011k7rafibjpfd7g903a81pml176m7hxvvgd8a65vgqx52q4d3"
+  }
+ },
+ {
+  "ename": "avy",
+  "commit": "77fac7a702d4086fb860514e377037acedc60412",
+  "sha256": "0gjq79f8jagbngp0shkcqmwhisc3hpgwfk34kq30nb929nbnlmag",
+  "fetcher": "github",
+  "repo": "abo-abo/avy",
+  "unstable": {
+   "version": [
+    20200422,
+    1153
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "509471bad0e8094b8639729ec39ca141fae7d4bd",
+   "sha256": "0kj4nbp8g22xyvjdy8vh54v6zgd4f3z6srrw5pd55gbczm5csnbj"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f2cf43b5372a6e2a7c101496c47caaf03338de36",
+   "sha256": "09qdni1s74i5pv8741szl5g4ynj8fxn0x65qmwa9rmfkbimnc0fs"
+  }
+ },
+ {
+  "ename": "avy-flycheck",
+  "commit": "05755bed49219072d2ec98f0be5ecba4deda7cd1",
+  "sha256": "0xvgysbx8yxhypms6639kk3cn0x6y6njnhnn9lf6hxsi96wd9y96",
+  "fetcher": "github",
+  "repo": "magicdirac/avy-flycheck",
+  "unstable": {
+   "version": [
+    20160720,
+    1500
+   ],
+   "deps": [
+    "avy",
+    "flycheck",
+    "seq"
+   ],
+   "commit": "5522f3bbbed1801d9278ed696ec0cbba38352985",
+   "sha256": "1nwc8xid0k6bnnpgsrrlwx71a04llkiapjsbchp9jgcf11l5mghw"
+  }
+ },
+ {
+  "ename": "avy-menu",
+  "commit": "2f0b4cfb30c405d44803b36ebcaccef0cf87fe2d",
+  "sha256": "1g2bsm0jpig51jwn9f9mx6z5glb0bn4s21194xam768qin0rf4iw",
+  "fetcher": "github",
+  "repo": "mrkkrp/avy-menu",
+  "unstable": {
+   "version": [
+    20190713,
+    1348
+   ],
+   "deps": [
+    "avy"
+   ],
+   "commit": "aee6878a8c2f18c3ac3bd34d608783b52cd708e0",
+   "sha256": "1526a6cqaa16x5gi2fsdi9brqa54n3m0dvrnkd85w6sgaz33cpiz"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "avy"
+   ],
+   "commit": "71b71e64900d0637e17013781042e086e9bf56e7",
+   "sha256": "1mxrq2fpx3qa9vy121wnv02r43sb7djc2j8z7c2vh8x56h8bpial"
+  }
+ },
+ {
+  "ename": "avy-migemo",
+  "commit": "6a02db29eb3e4b76b4a9cdbc966df5a1bd35dec0",
+  "sha256": "1zvgkhma445gj1zjl8j25prw95bdpjbvfy8yr0r5liay6g2hf296",
+  "fetcher": "github",
+  "repo": "momomo5717/avy-migemo",
+  "unstable": {
+   "version": [
+    20180716,
+    1455
+   ],
+   "deps": [
+    "avy",
+    "migemo"
+   ],
+   "commit": "922a6dd82c0bfa316b0fbb56a9d4dd4ffa5707e7",
+   "sha256": "1a4421h15ba7lsnbh8kqm3hvs06fp830wb1nvwgpsk7vmqqi2qgl"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    2
+   ],
+   "deps": [
+    "avy",
+    "migemo"
+   ],
+   "commit": "ce87777bea76c45be5f185e9fe356a8efe5c2d16",
+   "sha256": "0s6m44b49jm5cnrx1pvk7rfw3zhwiw5xasdlgmlvv7wws7m5snd9"
+  }
+ },
+ {
+  "ename": "avy-zap",
+  "commit": "10a2a57c78ac1d8ab621031caa21e8574daeb9a0",
+  "sha256": "1zbkf21ggrmg1w0xaw40i3swgc1g4fz0j8p0r9djm9j120d94zkx",
+  "fetcher": "github",
+  "repo": "cute-jumper/avy-zap",
+  "unstable": {
+   "version": [
+    20190801,
+    329
+   ],
+   "deps": [
+    "avy"
+   ],
+   "commit": "7c8d1f40e43d03e2f6c1696bfa547526528ce8cb",
+   "sha256": "1b9yc8wkcddd81060r03myxcdxas6vdhgybl44da412p0hx4bccb"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    4
+   ],
+   "deps": [
+    "avy"
+   ],
+   "commit": "67fed60d0dfe9087ca4fe3332f4a78e775b8d239",
+   "sha256": "0lmv34pi9qdh76fi3w4lrfyfhzr824nsiif4nyjvpnmrabxgk309"
+  }
+ },
+ {
+  "ename": "aws-ec2",
+  "commit": "90ac00160cbf692baa1f3953122ac828356944e0",
+  "sha256": "040c69g8rhpcmrdjjg4avdmqarxx3dfzylmz62yxhfpn02qh48xd",
+  "fetcher": "github",
+  "repo": "Yuki-Inoue/aws.el",
+  "unstable": {
+   "version": [
+    20161007,
+    1914
+   ],
+   "deps": [
+    "dash",
+    "tblui"
+   ],
+   "commit": "5601d4f268fc34b86a02ca90cde7d3771619a368",
+   "sha256": "15idbbxsghzn737s9jppnx820nnm1srcl1418458hwfy3wqhq38g"
+  }
+ },
+ {
+  "ename": "aws-snippets",
+  "commit": "485aa401a6a14cd4a916474d9a7df12cdf45d591",
+  "sha256": "1p2il4ig3nafsapa87hgghw6ri9d5qqi0hl8zjyypa06rcnag9g9",
+  "fetcher": "github",
+  "repo": "baron42bba/aws-snippets",
+  "unstable": {
+   "version": [
+    20191203,
+    1553
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "557d19a0bc486e0fddb597b2be5087769d9bd47e",
+   "sha256": "1s71h8limqxql9qhkp7bmq9k9j1mkazvc0lh92a6wd7hk6xg1hi1"
+  }
+ },
+ {
+  "ename": "awscli-capf",
+  "commit": "286c5963541f099032890c6df3bbe39648fb8684",
+  "sha256": "1mggykjjdl74rbgnw4k0q01iqdhl09q9zgp51xakgy07vpjs49w0",
+  "fetcher": "github",
+  "repo": "sebasmonia/awscli-capf",
+  "unstable": {
+   "version": [
+    20190930,
+    1517
+   ],
+   "commit": "1a75f88f53a2969fe821c31e6857861d0a0c0a5e",
+   "sha256": "13ry0lhh8ss93h9c60gc02i28bwc70jb4fzqmvw778fk0shj8jxn"
+  }
+ },
+ {
+  "ename": "axiom-environment",
+  "commit": "8b4c6b03c5ff78ce327dcf66b175e266bbc53dbf",
+  "sha256": "1hzfxdwhgv0z9136k7bdjhqjrkawsjmvqch6za6p7nkpd9ikr2zb",
+  "fetcher": "git",
+  "url": "https://bitbucket.org/pdo/axiom-environment",
+  "unstable": {
+   "version": [
+    20200411,
+    1031
+   ],
+   "commit": "25932da0dc40c6877463cbf019b14ab05a6b0164",
+   "sha256": "1xbps0k4x982gh1a0pscpx4kayjjyykvm5pyj516wwkya7bac4a6"
+  }
+ },
+ {
+  "ename": "babel",
+  "commit": "b0d748fa06b3cbe336cb01a7e3ed7b0421d885cc",
+  "sha256": "0sdpp4iym61ni32zv75n48ylj4jib8ca6n9hyqwj1b7nqg76mm1c",
+  "fetcher": "github",
+  "repo": "juergenhoetzel/babel",
+  "unstable": {
+   "version": [
+    20181201,
+    919
+   ],
+   "commit": "c25dedb5c7f2465b122102f02cd9845668818c20",
+   "sha256": "1ydb8zbg8n56wf5hb8i3i2s40mspqfkszfdd8v8jjqb5wm8q32rc"
+  },
+  "stable": {
+   "version": [
+    1,
+    4
+   ],
+   "commit": "65b55ad89017c9b3a1c8c241ac4b4541eabdaf5f",
+   "sha256": "0px1xggk6qyrwkma1p3d7b4z2id2gbrsxkliw3nwc1q4zndg1zr7"
+  }
+ },
+ {
+  "ename": "babel-repl",
+  "commit": "dfd4ac01ea16fcbc6e9343a953a2f278c5874d3d",
+  "sha256": "0h11i8w8s4ia1x0lm5n7bnc3db4bv0a7f7hzl27qrg38m3c7dl6x",
+  "fetcher": "github",
+  "repo": "hung-phan/babel-repl",
+  "unstable": {
+   "version": [
+    20160504,
+    2201
+   ],
+   "commit": "e619c16e349a1ee7bd0ee0d7f3650d33bff73fc3",
+   "sha256": "1174r0gjpn5z3pnf32qlpqhmdfvskcd2vqgicvmqzjsrysj3fypn"
+  }
+ },
+ {
+  "ename": "back-button",
+  "commit": "c9db386ab3910940addae6e925b2ac17e64e0f87",
+  "sha256": "0vyhvm445d0rs14j5xi419akk5nd88d4hvm4251z62fmnvs50j85",
+  "fetcher": "github",
+  "repo": "rolandwalker/back-button",
+  "unstable": {
+   "version": [
+    20150804,
+    2004
+   ],
+   "deps": [
+    "list-utils",
+    "nav-flash",
+    "pcache",
+    "persistent-soft",
+    "smartrep",
+    "ucs-utils"
+   ],
+   "commit": "98d92984a740acd1547bd7ed05cca0affdb21c3e",
+   "sha256": "0rj6a8rdwa0h2ckz7h4d91hnxqcin98l4ikbfyak2whfb47z909l"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    6
+   ],
+   "deps": [
+    "nav-flash",
+    "pcache",
+    "persistent-soft",
+    "smartrep",
+    "ucs-utils"
+   ],
+   "commit": "c7b50a3e087a8dc5588d7292379cd387a1afff87",
+   "sha256": "0hmn3jlsqgpc602lbcs9wzw0hgr5qpjdcxi2hjlc1cp27ilyscnf"
+  }
+ },
+ {
+  "ename": "backlight",
+  "commit": "4b33ef75760ff02983d8c4c6f98621bb441751c3",
+  "sha256": "0gzshxs9vw5wrb6pnxdaw5q4c8i0vsmc7wb0y2jyhxsr81mlxdpi",
+  "fetcher": "github",
+  "repo": "mschuldt/backlight.el",
+  "unstable": {
+   "version": [
+    20190905,
+    519
+   ],
+   "commit": "3e5b971b4ee89299240a89614db92d2c4034e954",
+   "sha256": "0hsb1vd1mk4mcgr4l93b81hz2bq7cpd7b3kdhabv9z489mxiy3fa"
+  }
+ },
+ {
+  "ename": "backline",
+  "commit": "f252e45e8bd6e8af1267755d108f378a974ddaf1",
+  "sha256": "0y5y048s6r3mcgjfxpmwarnhn6lh00j9cla6qjsd83f79hw5cq4y",
+  "fetcher": "github",
+  "repo": "tarsius/backline",
+  "unstable": {
+   "version": [
+    20200104,
+    1851
+   ],
+   "deps": [
+    "outline-minor-faces"
+   ],
+   "commit": "dc541a6daf82ab73774904ae9ccecd13e3c2af48",
+   "sha256": "0410p7144k2kh1bz050h45zrfd98j10sbx409la5x01l9xrmb03y"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    5
+   ],
+   "deps": [
+    "outline-minor-faces"
+   ],
+   "commit": "cde271f5e01ed44de239f776c3d0bb27e30953de",
+   "sha256": "0j1w2ig3rick6lnq668jkzjhrfy8cg3xgra5sj1qpxygdspfjyp9"
+  }
+ },
+ {
+  "ename": "backup-each-save",
+  "commit": "caa478356d20b5b0e9a450f7b4a8b25937e583a4",
+  "sha256": "1l7lx3vd27qypkxa0cdm8zbd9fv08xn1bf6xj6g9c49ql95xbyiv",
+  "fetcher": "github",
+  "repo": "conornash/backup-each-save",
+  "unstable": {
+   "version": [
+    20180227,
+    557
+   ],
+   "commit": "3c414b9d6b278911c95c5b8b71819e6af6f8a02a",
+   "sha256": "13pliz2ra020hhxcidkyhfa0767n188l1w5r0vpvv6zqyc2p414i"
+  }
+ },
+ {
+  "ename": "backup-walker",
+  "commit": "9428a70292cf6b796d7d994ad6b73d7d45970c19",
+  "sha256": "0hfr27yiiblrd0p3zhpapbj4vijfdk7wqh406xnlwf2yvnfsqycd",
+  "fetcher": "github",
+  "repo": "lewang/backup-walker",
+  "unstable": {
+   "version": [
+    20130720,
+    1516
+   ],
+   "commit": "934a4128c122972ac32bb9952addf279a60a94da",
+   "sha256": "0z4d8x9lkad50720lgvr8f85p1ligv07865i30lgr9ck0q04w68v"
+  }
+ },
+ {
+  "ename": "backward-forward",
+  "commit": "cb44d7b604c50d4e07404c0dff071fbc66ea903d",
+  "sha256": "0kpy761xdk2s21s92cw03fgw5xq9glybrhnjv2v89xrg16vdvamf",
+  "fetcher": "gitlab",
+  "repo": "vancan1ty/emacs-backward-forward",
+  "unstable": {
+   "version": [
+    20161229,
+    550
+   ],
+   "commit": "58489957a62a0da25dfb5df902624d2548d800b4",
+   "sha256": "14v9q58vd0iggs8x8hjh24cv58g2pbwnr6zghd2anaygbj74ij24"
+  }
+ },
+ {
+  "ename": "badger-theme",
+  "commit": "298e43769c6cd855526d847e8e3b237912360777",
+  "sha256": "01h5bsqllgn6gs0wpl0y2h041007mn3ldjswkz6f3mayrgl4c6yf",
+  "fetcher": "github",
+  "repo": "ccann/badger-theme",
+  "unstable": {
+   "version": [
+    20140717,
+    232
+   ],
+   "commit": "493d672d5a5478976da7d5ca752008cc7837c57f",
+   "sha256": "0mrn3sl1xq19k6v4mw98zqgs11fidnarvidmxayx805k21pana6v"
+  }
+ },
+ {
+  "ename": "badwolf-theme",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "15n33l0iaq2pk70rpw7qdm8dlwcinfclpnlr3bs7vcb1dknp4g9v",
+  "fetcher": "github",
+  "repo": "bkruczyk/badwolf-emacs",
+  "unstable": {
+   "version": [
+    20161004,
+    715
+   ],
+   "commit": "ea01a3d9358e968f75e3ed15dec6a2a96ce3d9a1",
+   "sha256": "0a6adsxvmw3mgji17is75jrq3ifmzpch8rwqqyfgc99xzndvab7l"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "commit": "24a557f92a702f632901a5b7bee59945a0a8cde9",
+   "sha256": "1plh7i4zhs5p7qkv7p7lnfrmkszn8b3znwvbxgp7wpxay5safc5j"
+  }
+ },
+ {
+  "ename": "baidu-translate",
+  "commit": "c9cdf13f64a1de8c57dcb90229da0f62a8e14e7a",
+  "sha256": "0m8pqnp57bmk41wij5a0dcilg09p992q5413llfac41b6biqf2yd",
+  "fetcher": "github",
+  "repo": "liShiZhensPi/baidu-translate",
+  "unstable": {
+   "version": [
+    20190817,
+    1318
+   ],
+   "commit": "b04a74d09ff5e3fbefd1b39b2abe79a9e272321a",
+   "sha256": "0qja8xw2sk2wn7w6qa5zj2i0j5c8a7cnldrag99ip2b5m02f1z4l"
+  }
+ },
+ {
+  "ename": "balanced-windows",
+  "commit": "2dc9c15d14d4417df74b73cde983ef4f25eda363",
+  "sha256": "0y53als0cmd4h0z1w55f4z5w6zkk7ig0ygjrzjv2khwig8hl2b8h",
+  "fetcher": "github",
+  "repo": "wbolster/emacs-balanced-windows",
+  "unstable": {
+   "version": [
+    20190903,
+    1120
+   ],
+   "commit": "1da5354ad8a9235d13928e2ee0863f3642ccdd13",
+   "sha256": "1hsjg48jlfi6lc6izp9xcfqvxj7c0ivjrfsr2q3yv3s1iy2fz37l"
+  }
+ },
+ {
+  "ename": "bang",
+  "commit": "d9830cce42339243091f4463490954a8a955c65f",
+  "sha256": "1dx1130095ij09ix20jyqradkjw9gpdfpw0d9f3krrx6xjqfn2sk",
+  "fetcher": "git",
+  "url": "https://git.sr.ht/~zge/bang",
+  "unstable": {
+   "version": [
+    20200510,
+    1107
+   ],
+   "commit": "f80c7c394b57057499db6409f386ade9ac32f763",
+   "sha256": "0mj2kr13gpvy4kpzxvy1jmz0c9cdnikazlsb9j0dx94f9777sy04"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    2
+   ],
+   "commit": "1fb0162ffd2115080d4e1ddf65935277cf3c75db",
+   "sha256": "12nr5la6y5dnh46rfij3p1srgpwdc3fiaf4ckfx6f9kl0n1zyrls"
+  }
+ },
+ {
+  "ename": "banner-comment",
+  "commit": "4bb69f15cb6be38a86abf4d15450a29c9a819068",
+  "sha256": "0i5nkfdwfr9mcir2ijdhw563azmr5p7hyl6rfy1r04fzs8j7w2pc",
+  "fetcher": "github",
+  "repo": "WJCFerguson/banner-comment",
+  "unstable": {
+   "version": [
+    20190606,
+    1809
+   ],
+   "commit": "35d3315683d3f97605207691b77e9f447af18fe2",
+   "sha256": "0f48mvzy5wxx5f975hsqp00p9vmjda2wlxsprws5jgmpn95hbbs8"
+  },
+  "stable": {
+   "version": [
+    2,
+    7
+   ],
+   "commit": "ac52f6b24e590787a385c08cc3751d6f2ddca815",
+   "sha256": "1630py97ldh3w71s26jbcxk58529g03sl0padnzqj0rbqy82yw8w"
+  }
+ },
+ {
+  "ename": "bap-mode",
+  "commit": "05b1b5885a9d5e3bda38bc8a2f987bffd9353cc0",
+  "sha256": "1n0sv6d6vnv40iks18vws16psbv83v401pdd8w2d2cfhhsmmi4ii",
+  "fetcher": "github",
+  "repo": "fkie-cad/bap-mode",
+  "unstable": {
+   "version": [
+    20200128,
+    1354
+   ],
+   "commit": "8969679f60db0aa918d35f40d959c0a9c723b111",
+   "sha256": "1i5yhqig104j33cyhkhil4d1wfvnldkvrk2wgxbm4p01xw1rs6cq"
+  }
+ },
+ {
+  "ename": "bar-cursor",
+  "commit": "932e7b128f092ec724ebf18c9c5ca84e16edc82c",
+  "sha256": "0f7z3mlnh3p28pmn1bnqbszcy1j68dwm8xra1wz8jgykvrdlyf2s",
+  "fetcher": "github",
+  "repo": "ajsquared/bar-cursor",
+  "unstable": {
+   "version": [
+    20180227,
+    45
+   ],
+   "commit": "20cb59bedc3532a712fe7feeff3660ebd72a8107",
+   "sha256": "06b0nkcp8yjixps72nrgk2zmljc9f71cdr96jdpgssydfhn4pcdf"
+  }
+ },
+ {
+  "ename": "bart-mode",
+  "commit": "8f9cb09c07cb9fdef15de3e8dbfb6725d97dff6f",
+  "sha256": "0wyfsf7kqfghnci9rlk9x0rkai6x7hy3vfzkgh7s2yz081p1kfam",
+  "fetcher": "github",
+  "repo": "mschuldt/bart-mode",
+  "unstable": {
+   "version": [
+    20190601,
+    1004
+   ],
+   "commit": "f70b6c42452e47c0c6b3ebd4c90e555a9bedeec7",
+   "sha256": "0s47ijlnspndia6f1116g6nr6hnirmba6fkvdcvw4qm7mhn5xrc9"
+  }
+ },
+ {
+  "ename": "base16-theme",
+  "commit": "30862f6be74882cfb57fb031f7318d3fd15551e3",
+  "sha256": "115dhr3gfvdz5wv76fwpv3b4dywiwbk69qrhkfhij8vpcfybrpzx",
+  "fetcher": "github",
+  "repo": "belak/base16-emacs",
+  "unstable": {
+   "version": [
+    20200414,
+    2048
+   ],
+   "commit": "d68512c0856f57a19cd49d1034199836352c15a0",
+   "sha256": "1h98ra53i7hc7zi9yjc6p29f70r04hivdczhw4imds13akq6j034"
+  },
+  "stable": {
+   "version": [
+    2,
+    2
+   ],
+   "commit": "10180e88d6d9434cec367b6c91222dd2fc3bd8ae",
+   "sha256": "01w89g413s1da6rf94y1xnhw79cjy2bqb01yfjs58cy492cm0vr6"
+  }
+ },
+ {
+  "ename": "bash-completion",
+  "commit": "8b528544841995045fb1f8344aaaa38946bb3915",
+  "sha256": "0l41yj0sb87i27hw6dh35l32hg4qkka6r3bpkckjnfm0xifrd9hj",
+  "fetcher": "github",
+  "repo": "szermatt/emacs-bash-completion",
+  "unstable": {
+   "version": [
+    20191126,
+    1824
+   ],
+   "commit": "96ce14af9674f3e605bacca87abc0c23b8f13cd5",
+   "sha256": "1w3yvpcdjq9a6m2q2lz23dib2ijmfgn4w2z2g5y9wkpdmx48k655"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    0
+   ],
+   "commit": "6aedd690006e07199b2fcd319b9b840a527650e5",
+   "sha256": "1a1wxcqzh0javjmxwi3lng5i99xiylm8lm04kv4q1lh9bli6vmv0"
+  }
+ },
+ {
+  "ename": "basic-c-compile",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0g595d1vd97b5qqydpb6cr3ibgcm08cw8c154h35vz3cl4w86mwd",
+  "fetcher": "github",
+  "repo": "nick96/basic-c-compile",
+  "unstable": {
+   "version": [
+    20170302,
+    1112
+   ],
+   "deps": [
+    "cl-lib",
+    "f"
+   ],
+   "commit": "0129786aeee50d7bb0020d9fc2b7508875d403e8",
+   "sha256": "0q6scyva1psyam7jzygqcr1wayf70vrp237hm01q5i9cin8j4j1z"
+  }
+ },
+ {
+  "ename": "basic-ide",
+  "commit": "9aaac29f5711f93f9ba7c14e5a332888e8920a86",
+  "sha256": "1pvgbc3vxqm4l8qc43g7b4viz4ilw828k9qlmb6ynzmij5ykrfrq",
+  "fetcher": "gitlab",
+  "repo": "sasanidas/emacs-c64-basic-ide",
+  "unstable": {
+   "version": [
+    20200429,
+    1104
+   ],
+   "deps": [
+    "basic-mode",
+    "company",
+    "dash",
+    "f",
+    "flycheck"
+   ],
+   "commit": "0f75c944239960445f1e9c8a0b5f7a5b4d37ff89",
+   "sha256": "0xmi27b3zs8bsvcf9405rg88cjz1x2nivj5pvy6gjy07r9dl7ngf"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "deps": [
+    "basic-mode",
+    "company",
+    "dash",
+    "f",
+    "flycheck"
+   ],
+   "commit": "5bfd5f91b9f91e46158e0419c6bb5c350e7684a1",
+   "sha256": "0nb6dbk8aclkq7jki52y4lwgbxg61xh1598l08yfv2l1ykhgg0n0"
+  }
+ },
+ {
+  "ename": "basic-mode",
+  "commit": "71801bdc0720f150edeab6796487c753c6e7c3f5",
+  "sha256": "1l0ylzww7jg6l804fdrklhay4is0wx1drfi9l9wn7gcdjh76mr6g",
+  "fetcher": "github",
+  "repo": "dykstrom/basic-mode",
+  "unstable": {
+   "version": [
+    20180919,
+    1752
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "812f078240f9de09491701853569335ba6d9b5ff",
+   "sha256": "1492klgbkxb46x02kmhngccx4p9fmjvf6m4ay89j7pyaixvcqj8v"
+  }
+ },
+ {
+  "ename": "basic-theme",
+  "commit": "451d1b67fefec5d3a346b1261d1284e8df6927a0",
+  "sha256": "16rgff1d0s65alh328lr93zc06zmgbzgwx1rf3k3l4d10ki4cc27",
+  "fetcher": "github",
+  "repo": "fgeller/basic-theme.el",
+  "unstable": {
+   "version": [
+    20160817,
+    827
+   ],
+   "commit": "e2a855bd39f4b78296228d4b790f9123156f7d7e",
+   "sha256": "1dfk73bkyhmhxnizbcp5zky8qyrgl7cf0dl9y6drqqc1lrcgz3jl"
+  }
+ },
+ {
+  "ename": "bats-mode",
+  "commit": "d742fb825e163beb33c3873aa48a1c411711e312",
+  "sha256": "1l5winy30w8fs3f5cylc3a3j3mfkvchwanlgsin7q76jivn87h7w",
+  "fetcher": "github",
+  "repo": "dougm/bats-mode",
+  "unstable": {
+   "version": [
+    20160514,
+    615
+   ],
+   "commit": "d519f7c89f5ae17dfc33400596df4564b478315f",
+   "sha256": "1ikb4rb20ng1yq95g3ydwpk37axmiw38rjzn1av9m4cs81qby4jv"
+  }
+ },
+ {
+  "ename": "battle-haxe",
+  "commit": "75781ee881a8f3215ab40d47273c8a9d1fed7949",
+  "sha256": "02x7hchk3jninas4mybn98m09wn1bfqqdjfq45b6rgw1am6mvvwz",
+  "fetcher": "github",
+  "repo": "AlonTzarafi/battle-haxe",
+  "unstable": {
+   "version": [
+    20200222,
+    56
+   ],
+   "deps": [
+    "async",
+    "cl-lib",
+    "company",
+    "dash",
+    "dash-functional",
+    "f",
+    "helm",
+    "s"
+   ],
+   "commit": "64d20c9ea3fd503fdefafda122e7095c192e72a3",
+   "sha256": "15ykwqg100vjl014awwwzmch84vwqyrlm46c22w9x3dgqk8yxyi2"
+  }
+ },
+ {
+  "ename": "bazel-mode",
+  "commit": "10f3918c55426c8c4754ef0dfccf19300e516012",
+  "sha256": "1gylmwlhzg6kgj9936799ppahbhicrxn2zpbr3417qycib84nl8x",
+  "fetcher": "github",
+  "repo": "bazelbuild/emacs-bazel-mode",
+  "unstable": {
+   "version": [
+    20200515,
+    1408
+   ],
+   "commit": "39d4649f4a179e22fabbef1166afe1725c8dbea6",
+   "sha256": "0n5kqjcmwfbr58my3yisgfigh77rhy5b18jr4kh2b327r76ssqwl"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "6103da2dd9c9461e35a45fc0544ddf33410baa25",
+   "sha256": "0lbiih6lj7qf2h1l2nxcwfkhdzccrs01lcdqsyhp5hysp0zdcr66"
+  }
+ },
+ {
+  "ename": "bbcode-mode",
+  "commit": "57c307eecfc0fccfdc525ce6ff63a69ff3b78874",
+  "sha256": "0rrhvwb4hrg2sbjbpgdghcgrc6gwpq3vax28r5mlacn5w5x31qjb",
+  "fetcher": "github",
+  "repo": "lassik/emacs-bbcode-mode",
+  "unstable": {
+   "version": [
+    20190304,
+    2122
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "e16619c80ea21154b4a4ccc2e13d0077e97c9caf",
+   "sha256": "0l7jygskxmbckf3xhbjzgwzkrj2m6z1n3i2l7qc9ii4i3mhpx0ai"
+  },
+  "stable": {
+   "version": [
+    2,
+    3,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "e16619c80ea21154b4a4ccc2e13d0077e97c9caf",
+   "sha256": "0l7jygskxmbckf3xhbjzgwzkrj2m6z1n3i2l7qc9ii4i3mhpx0ai"
+  }
+ },
+ {
+  "ename": "bbdb",
+  "commit": "caaa21f235c4864f6008fb454d0a970a2fd22a86",
+  "sha256": "0mm8n3dbi8lap3pjr97n2f675iy7sg476sm1vxygbc3j67rq1zb2",
+  "fetcher": "git",
+  "url": "https://git.savannah.nongnu.org/git/bbdb.git",
+  "unstable": {
+   "version": [
+    20200102,
+    403
+   ],
+   "commit": "45529e315ba861f9df2914f9b88d2f7b991d5595",
+   "sha256": "0iim6394q02yw5rcyjs7ym16v9jbq5pwqsbpwc98ckg26063p3fi"
+  },
+  "stable": {
+   "version": [
+    3,
+    2
+   ],
+   "commit": "f18720ff5cd963a0bf6fc0e41293e50c0172b8ae",
+   "sha256": "1s5qi8njiqdpgnzlik36islzh13zfhybnynqisr61p602pn4ghk7"
+  }
+ },
+ {
+  "ename": "bbdb-",
+  "commit": "01e7a8cc1dde506cb2fcfd9270f15dc61c43ec17",
+  "sha256": "1vzbalcchay4pxl9f1sxg0zclgc095f59dlj15pj0bqq61sbl9jf",
+  "fetcher": "github",
+  "repo": "aki2o/bbdb-",
+  "unstable": {
+   "version": [
+    20140221,
+    2354
+   ],
+   "deps": [
+    "bbdb",
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "2839e84c894de2513af41053e80a277a1b483d22",
+   "sha256": "17nbnkg0zn6p89r27mk9hl6qhv6xscwdsq8iyikdw03svpr16lnp"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "bbdb",
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "2839e84c894de2513af41053e80a277a1b483d22",
+   "sha256": "17nbnkg0zn6p89r27mk9hl6qhv6xscwdsq8iyikdw03svpr16lnp"
+  }
+ },
+ {
+  "ename": "bbdb-csv-import",
+  "commit": "76ac7178ee5381e08ae881f3fc6061106eeb1c1d",
+  "sha256": "0r7pc2ypd1ydqrnvcqmsg69rm047by7k0zhm563538ra82597wnm",
+  "fetcher": "gitlab",
+  "repo": "iankelling/bbdb-csv-import",
+  "unstable": {
+   "version": [
+    20180122,
+    49
+   ],
+   "deps": [
+    "bbdb",
+    "dash",
+    "pcsv"
+   ],
+   "commit": "dbc2e0fe9e8ae65e494011044d905ae79b3cee3e",
+   "sha256": "0n52arydcsmarkpqqwxvw686cypl7iz73kzizirdjhcqmzimx9pl"
+  }
+ },
+ {
+  "ename": "bbdb-ext",
+  "commit": "b1ba0575cb6f0270bab8bf00726842b2a4d0bef3",
+  "sha256": "0fnxcvzdyh0602rdfz3lz3vmvza4s0syz1vn2fgsn2lg3afqq7li",
+  "fetcher": "github",
+  "repo": "vapniks/bbdb-ext",
+  "unstable": {
+   "version": [
+    20151220,
+    2013
+   ],
+   "deps": [
+    "bbdb"
+   ],
+   "commit": "fee97b1b3faa83edaea00fbc5ad3cbca5e791a55",
+   "sha256": "1ydf89mmp3zjfqdymnrwg18wclyf7psarz9f2k82pl58h0khh71g"
+  }
+ },
+ {
+  "ename": "bbdb-vcard",
+  "commit": "dd5d9027c49beae89f78d2a30dfa4bd070dff1bd",
+  "sha256": "1kn98b7mh9a28933r4yl8qfl9p92rpix4vkp71sar9cka0m71ilj",
+  "fetcher": "github",
+  "repo": "tohojo/bbdb-vcard",
+  "unstable": {
+   "version": [
+    20190410,
+    2054
+   ],
+   "deps": [
+    "bbdb"
+   ],
+   "commit": "853cbcd882be137a5488c70328c25f5982aca657",
+   "sha256": "0r8xcxvzalf5g12mqy6w7yv34nxd8n2wcqa5ib06nf40n162nrwg"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "9e11fafef1a94bc6395bd1eeacd00f94848ac560",
+   "sha256": "0fg72qnb40djyciy4gzj359lqlcbbrq0indbkzd0dj09zipkx0df"
+  }
+ },
+ {
+  "ename": "bbdb2erc",
+  "commit": "04867a574773e8794335a2664d4f5e8b243f3ec9",
+  "sha256": "0k1f6mq9xd3568vg01dqqvcdbdshbdsi4ivkjyxis6dqfnqhlfdd",
+  "fetcher": "github",
+  "repo": "unhammer/bbdb2erc",
+  "unstable": {
+   "version": [
+    20190822,
+    907
+   ],
+   "deps": [
+    "bbdb"
+   ],
+   "commit": "40b89e961762af3e7ade3a1844a9fbcd4084ac65",
+   "sha256": "1faa32ya515rkx5pwz6bsav0ffyajq8vq8d3vzn9j81d9in2rh5j"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    5
+   ],
+   "deps": [
+    "bbdb"
+   ],
+   "commit": "40b89e961762af3e7ade3a1844a9fbcd4084ac65",
+   "sha256": "1faa32ya515rkx5pwz6bsav0ffyajq8vq8d3vzn9j81d9in2rh5j"
+  }
+ },
+ {
+  "ename": "bbyac",
+  "commit": "92c10c13a1bd19c8bdbca128852d1c91b76f7002",
+  "sha256": "1pb12b8xrcgyniwqc90z3kr3rq9kkzxjawwcz7xwzymq39fx0897",
+  "fetcher": "github",
+  "repo": "baohaojun/bbyac",
+  "unstable": {
+   "version": [
+    20180206,
+    1441
+   ],
+   "deps": [
+    "browse-kill-ring",
+    "cl-lib"
+   ],
+   "commit": "9f0de9cad13801891ffb590dc09f51ff9a7cb225",
+   "sha256": "0q0i1j8ljfd61rk6d5fys7wvdbym9pz5nhwyfvmm0ijmy19d1ppz"
+  }
+ },
+ {
+  "ename": "bdo",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1n2kpaps6992nxl0v1003czcbw1k4xq906an56694wkh05az505j",
+  "fetcher": "github",
+  "repo": "chrisdone/bdo",
+  "unstable": {
+   "version": [
+    20140126,
+    901
+   ],
+   "commit": "c96cb6aa9e97fa3491185c50dee0f77a13241010",
+   "sha256": "0d5b7zyl2vg621w1ll2lw3kjz5hx6lqxc0jivh0i449gckk5pzkm"
+  }
+ },
+ {
+  "ename": "beacon",
+  "commit": "d09cfab21be800831644218e9c8c4433087951c0",
+  "sha256": "1pwxvdfzs9qjd44wvgimipi2hg4qw5sh5wlsl8h8mq2kyx09s7hq",
+  "fetcher": "github",
+  "repo": "Malabarba/beacon",
+  "unstable": {
+   "version": [
+    20190104,
+    1931
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "bde78180c678b233c94321394f46a81dc6dce1da",
+   "sha256": "19m90jjbsjzhzf7phlg79l8d2kxgrqnrrg1ipa3sf7vzxxkmsdld"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    4
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "729338b02a0e331a4faf475da9f54771a3470106",
+   "sha256": "0mypzfasclq7bmw0i8hfyp8c1ycd3kdgd5h1faygzh9r0phh7ciy"
+  }
+ },
+ {
+  "ename": "beeminder",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "1cb8xmgsv23b464hpchm9f9i64p3fyf7aillrwk1aa2l1008kyww",
+  "fetcher": "github",
+  "repo": "Sodaware/beeminder.el",
+  "unstable": {
+   "version": [
+    20180413,
+    1929
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "3fcee7a7003a37171ddb59171c7f4b5dd4b34349",
+   "sha256": "0phiyv4n5y052fgxngl3yy74akb378sr6manx21s360gnxzcblwd"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "3e95a669474e27cd51a16caea030456377f83062",
+   "sha256": "1bj9yzjvglnb0f4glh8fg478xlm5nqmd9jqm1casdj5m30i4kafn"
+  }
+ },
+ {
+  "ename": "beginend",
+  "commit": "31c1157d4fd9e47a780bbd91075252acdc7899dd",
+  "sha256": "1y81kr9q0zrsr3c3s14rm6l86y5wf1a0kia6d98112fy4fwdm7kq",
+  "fetcher": "github",
+  "repo": "DamienCassou/beginend",
+  "unstable": {
+   "version": [
+    20200415,
+    1752
+   ],
+   "commit": "bb51f7ee9229ff0b6ec5ba4a730f7360246fb9ea",
+   "sha256": "0l7lbmn6ljh8yv7ch2fax47mr7kxly5b5ps5vg61ra15nv8v5vfr"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    0
+   ],
+   "commit": "0710e25138c1cec40ccf78d704741143c5bac735",
+   "sha256": "1ic5z3qb5sc3mjrjdlg0rqm2l59a43gwnakagns4cilln2a3xdg8"
+  }
+ },
+ {
+  "ename": "belarus-holidays",
+  "commit": "6987c5fbafc602ff6b48c347b4e3e7c4471681e8",
+  "sha256": "0ls4y0bjdz37zvzp2xppsa4qdgmpwkz2l6ycjf9134brdnhm9gqy",
+  "fetcher": "git",
+  "url": "https://bitbucket.org/EugeneMakei/belarus-holidays.el",
+  "unstable": {
+   "version": [
+    20190102,
+    1343
+   ],
+   "commit": "35a18273e19edc3b4c761030ffbd11116483b83e",
+   "sha256": "1mddjgv2q0sr5v4gxvrzz8y0ybj2bjb5klqsrjajcpbpgbim1qgf"
+  }
+ },
+ {
+  "ename": "benchmark-init",
+  "commit": "54b9ae6fc10b0c56fcc7a0ad73743ffc85a3e9a0",
+  "sha256": "0dknch4b1j7ff1079z2fhqng7kp4903b3v7mhj15b5vzspbp3wal",
+  "fetcher": "github",
+  "repo": "dholm/benchmark-init-el",
+  "unstable": {
+   "version": [
+    20150905,
+    938
+   ],
+   "commit": "7a0f263282bbc86b01b662636306f22813082647",
+   "sha256": "1kyn1izm5sbqbp9whnhk9dn3yc7zy8bz5san5w3ivi3rpx15fh94"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "7a0f263282bbc86b01b662636306f22813082647",
+   "sha256": "1kyn1izm5sbqbp9whnhk9dn3yc7zy8bz5san5w3ivi3rpx15fh94"
+  }
+ },
+ {
+  "ename": "benchstat",
+  "commit": "d9180fbedf95f9b1f5810bbf4929dfee513f89e3",
+  "sha256": "0h2zi4gh23bas1zfj7j2x994lwgd3xyys96ipg1vq7z2b06572k9",
+  "fetcher": "github",
+  "repo": "Quasilyte/benchstat.el",
+  "unstable": {
+   "version": [
+    20171014,
+    312
+   ],
+   "commit": "a5b67cf7972ca2bbc9f5bc6a0f521ab02b76d4f0",
+   "sha256": "02v5l9qvzcr58qr973phgj1c846pqp3cj16khn4h9v3f3gb180n1"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "b39a97f3072c2d3c1d3f86790b9e134d05b8d7e6",
+   "sha256": "0j508n860dp4in1psnkcriqck6by1jvnscalyff5na8hx6xgyysm"
+  }
+ },
+ {
+  "ename": "bencoding",
+  "commit": "a668dc6c90a3be1a51be7478e385b9ab395f6852",
+  "sha256": "1qjk71gkzqq07yy84i0bkyg2wh0jn4gvglcknpcia38dd80m8b7z",
+  "fetcher": "github",
+  "repo": "xuchunyang/bencoding.el",
+  "unstable": {
+   "version": [
+    20200331,
+    1102
+   ],
+   "commit": "f0af19511831f3ade590879e7d1636387682a8e7",
+   "sha256": "1sfj694a6yjc4qwkxn2yvnl8xp8rzrkdgnsaj8ncwdyaa50xgw78"
+  }
+ },
+ {
+  "ename": "bento",
+  "commit": "aad104fd26adb419c5da1e3472807244794e8949",
+  "sha256": "0a7yaikvaxxk8wmr7f9darpwb4r17rkzxcxaagfypn8n5kswddj4",
+  "fetcher": "github",
+  "repo": "returntocorp/bento-emacs",
+  "unstable": {
+   "version": [
+    20191024,
+    2123
+   ],
+   "deps": [
+    "f",
+    "flycheck"
+   ],
+   "commit": "31546a03475fc2b3ffd3159fe1beda55f7762224",
+   "sha256": "0ny0bably9h4ak2fr01z4a80mp9kjalzhw232a92n8dvmz4b7mq7"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "f",
+    "flycheck"
+   ],
+   "commit": "116839c7d50342e62a2832715ba850d8bf04362e",
+   "sha256": "0gxqy2l1a4pddh4pdci2nyflmv76rhl8wx3zmh5j0aqk5ahh1ln5"
+  }
+ },
+ {
+  "ename": "berrys-theme",
+  "commit": "d7043d5fcdf995a6278c8a92aa451ce4b58694b3",
+  "sha256": "1fn2n7li6fs9zibjzp07y6wdn3a64nsib8d23l7sl7jyzib6vbqa",
+  "fetcher": "github",
+  "repo": "vbuzin/berrys-theme",
+  "unstable": {
+   "version": [
+    20191201,
+    1609
+   ],
+   "commit": "888a14206b2fb3dc45b5273aeb05075f3e0b5f60",
+   "sha256": "1a75pa7gckdqwrcm25a2ic4cq1la42z939qqzj6nnqyjsj3sbn00"
+  }
+ },
+ {
+  "ename": "bert",
+  "commit": "89635cd11621b04a8575629ec1bf196fb3ea5d43",
+  "sha256": "1zhz1dcy1nf84p244x6lc4ajancv5fgmqmbrm080yhb2ral1z8x7",
+  "fetcher": "github",
+  "repo": "manzyuk/bert-el",
+  "unstable": {
+   "version": [
+    20131117,
+    1014
+   ],
+   "commit": "a3eec6980a725aa4abd2019e4c00246450260490",
+   "sha256": "06izbc0ksyhgh4gsjiifhj11v0gx9x5xjx9aqci5mc4kc6mg05sf"
+  }
+ },
+ {
+  "ename": "better-defaults",
+  "commit": "7bb729c1ad8602a5c0c27e81c9442981a54a924a",
+  "sha256": "13bqcmx2gagm2ykg921ik3awp8zvw5d4lb69rr6gkpjlqp7nq2cm",
+  "fetcher": "github",
+  "repo": "technomancy/better-defaults",
+  "unstable": {
+   "version": [
+    20200209,
+    1717
+   ],
+   "commit": "fc9a03138c959f0d24301c6401f800eb6e7d3af9",
+   "sha256": "1hi1xxc99z0pkbj8w63fx3qsy4sq5b3gdc2ccyk0gnbzw2sfc93j"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    3
+   ],
+   "commit": "90df5752a0a0602feb47aadfd3542aa7fc841bd8",
+   "sha256": "1rxznx2l0cdpiz8mad8s6q17m1fngpgb1cki7ch6yh18r3qz8ysr"
+  }
+ },
+ {
+  "ename": "better-jumper",
+  "commit": "b08970e3bd5d64e640158d98d7e3ab5031d82895",
+  "sha256": "0javbi799yijc3lb4dzkjwj4f4wxxrga9iixik544z98412ia8an",
+  "fetcher": "github",
+  "repo": "gilbertw1/better-jumper",
+  "unstable": {
+   "version": [
+    20200103,
+    1413
+   ],
+   "commit": "6d240032ca213ccb3347e25f26c29b6822bf03a7",
+   "sha256": "0vdrdd0q4rlpyxgwbc31zz8f6sr7sy0gdw84sb1dy9bpq6qvdbdw"
+  }
+ },
+ {
+  "ename": "better-shell",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0si8nj18i3jlhdb8m6f21rmi0lxians34vhw4xhvxw2yr9l85lj6",
+  "fetcher": "github",
+  "repo": "killdash9/better-shell",
+  "unstable": {
+   "version": [
+    20191025,
+    1737
+   ],
+   "commit": "70c787b981caeef8c5f8012b170eb7b9f167cd13",
+   "sha256": "0i87d1xrg4gvszm52wdrx81g49lh75ycdfxkxhlrckbw7nkrjchz"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    1
+   ],
+   "commit": "70c787b981caeef8c5f8012b170eb7b9f167cd13",
+   "sha256": "0i87d1xrg4gvszm52wdrx81g49lh75ycdfxkxhlrckbw7nkrjchz"
+  }
+ },
+ {
+  "ename": "bf-mode",
+  "commit": "f7fe1763891c7343c0ad0c7970b8a3c9035b4e8a",
+  "sha256": "0b1yf9bx1ldkzry7v5qvcnl059rq62a50dvpa10i2f5v0y96n1q9",
+  "fetcher": "github",
+  "repo": "emacs-jp/bf-mode",
+  "unstable": {
+   "version": [
+    20130403,
+    1442
+   ],
+   "commit": "7cc4d09aed64d9db6be95646f5f5067de68f8895",
+   "sha256": "02b2m0cq04ynjcmr4j8gpdzjv9mpf1fysn736xv724xgaymj396n"
+  }
+ },
+ {
+  "ename": "bfbuilder",
+  "commit": "3e77dd911b850846f1719b2ee943b74028d94f04",
+  "sha256": "16ckybqd0a8l75ascm3k4cdzp969lzq7m050aymdyjhwif6ld2r7",
+  "fetcher": "github",
+  "repo": "zk-phi/bfbuilder",
+  "unstable": {
+   "version": [
+    20150924,
+    1650
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "49560bdef131fa5672dab660e0c62376dbdcd906",
+   "sha256": "1y9fxs1nbf0xsn8mw45m9ghmji3h64wdbfnyr1npmf5fb27rmd17"
+  }
+ },
+ {
+  "ename": "bibclean-format",
+  "commit": "a96cc66b22e7ec145ffa3031089a3d60e77b8c42",
+  "sha256": "1lvi1r612jb6w0j6mbq93gk9f7hmb1pn42lfs47gvf0prmjf1zyb",
+  "fetcher": "github",
+  "repo": "peterwvj/bibclean-format",
+  "unstable": {
+   "version": [
+    20190302,
+    2017
+   ],
+   "deps": [
+    "reformatter"
+   ],
+   "commit": "b4003950a925d1c659bc359ab5e88e4441775d77",
+   "sha256": "1x5hbs9j4ms93p080267kjyqpk81il3x7q87awf6qzz5xhc20d3b"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "reformatter"
+   ],
+   "commit": "b4003950a925d1c659bc359ab5e88e4441775d77",
+   "sha256": "1x5hbs9j4ms93p080267kjyqpk81il3x7q87awf6qzz5xhc20d3b"
+  }
+ },
+ {
+  "ename": "biblio",
+  "commit": "c5fbaa8c59b0e64d13beb0e0f18b0734afa84f51",
+  "sha256": "0ym7xvcfd7hh3qdpfb8zpa7w8s4lpg0vngh9d0ns3s3lnhz4mi0g",
+  "fetcher": "github",
+  "repo": "cpitclaudel/biblio.el",
+  "unstable": {
+   "version": [
+    20200416,
+    1407
+   ],
+   "deps": [
+    "biblio-core"
+   ],
+   "commit": "eb9baf1d2bf6a073d24ccb717025baa693e98f3e",
+   "sha256": "0s7wld8ikfyn2rz8zr4g3lj59b2g95mj1jnqw6xvmxys0ahnb0r5"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "biblio-core"
+   ],
+   "commit": "a5a68fcf677f286f205f32dc7486f6c9f66aa6af",
+   "sha256": "1gxjind6r235az59dr8liv03d8994mqb8a7m28j3c12q7p70aziz"
+  }
+ },
+ {
+  "ename": "biblio-bibsonomy",
+  "commit": "e4867fd81cf56c8a74dcc71774790aa602b068a7",
+  "sha256": "0xfycxsslmr5si636l9pv9w5s5hmlk3253wq2vg8dm7b7ag5gr4s",
+  "fetcher": "github",
+  "repo": "andreasjansson/biblio-bibsonomy.el",
+  "unstable": {
+   "version": [
+    20190105,
+    1200
+   ],
+   "deps": [
+    "biblio-core"
+   ],
+   "commit": "778cc944db3c6dababe2e7fec5877fba42e8c00d",
+   "sha256": "0141nphan49br71bx89ias78wvchfsir3snssn3kf6l97ha1afgn"
+  }
+ },
+ {
+  "ename": "biblio-core",
+  "commit": "f4f086d3e8fd6a95ce198e148cd3ede35dd73fb8",
+  "sha256": "0zpfamrb2gka41h834a05hxdbw4h55777kh6rhjikjfmy765nl97",
+  "fetcher": "github",
+  "repo": "cpitclaudel/biblio.el",
+  "unstable": {
+   "version": [
+    20200416,
+    307
+   ],
+   "deps": [
+    "dash",
+    "let-alist",
+    "seq"
+   ],
+   "commit": "eb9baf1d2bf6a073d24ccb717025baa693e98f3e",
+   "sha256": "0s7wld8ikfyn2rz8zr4g3lj59b2g95mj1jnqw6xvmxys0ahnb0r5"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "dash",
+    "let-alist",
+    "seq"
+   ],
+   "commit": "a5a68fcf677f286f205f32dc7486f6c9f66aa6af",
+   "sha256": "1gxjind6r235az59dr8liv03d8994mqb8a7m28j3c12q7p70aziz"
+  }
+ },
+ {
+  "ename": "bibliothek",
+  "commit": "8b8308e72c4437237fded29db1f60b3eba0edd26",
+  "sha256": "011wnya65vfnn17fn1vhq0sk8c1mli81x0nb44yi6zl1hwxivb55",
+  "fetcher": "github",
+  "repo": "cadadr/elisp",
+  "unstable": {
+   "version": [
+    20190124,
+    1828
+   ],
+   "deps": [
+    "a",
+    "pdf-tools"
+   ],
+   "commit": "61a14d1a8c17930caca5c5daf893cedc9c23c5f3",
+   "sha256": "0acq8d8vlx3hd405wmi5w36gg88bz1c1crmlxbd2whgi8kyf506z"
+  }
+ },
+ {
+  "ename": "bibretrieve",
+  "commit": "e548e0cf8babaf32f1db58099599a72cebdbb84d",
+  "sha256": "1mf884c6adx7rq5c2z5wrnjpb6znljy30mscxskwqiyfs8c62mii",
+  "fetcher": "github",
+  "repo": "pzorin/bibretrieve",
+  "unstable": {
+   "version": [
+    20191124,
+    1855
+   ],
+   "deps": [
+    "auctex"
+   ],
+   "commit": "81dc8e0db3629cc180eafb2bc34b60dcd8980316",
+   "sha256": "00zya2h6f5fpfxyi893fz3kpbbdhd8yq6b8g42bvxc5bfbknfhwc"
+  }
+ },
+ {
+  "ename": "bibslurp",
+  "commit": "67f473e839d6325f193c641792671f43fbf83b6d",
+  "sha256": "178nhng87bdi8s0r2bdh2gk31w9mmjkyi6ncnddk3v7p8fsh4jjp",
+  "fetcher": "github",
+  "repo": "mkmcc/bibslurp",
+  "unstable": {
+   "version": [
+    20151202,
+    2346
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "0116bbb04840d20a6b087e6d9c921bb1c2489a8f",
+   "sha256": "0vcdi0q6rbs3qqlpccy9hdv82zrx61gdj3fn444qashk84s085vf"
+  }
+ },
+ {
+  "ename": "bibtex-completion",
+  "commit": "873ae2af16e03c8e10494be3f0e7840eb27172a3",
+  "sha256": "06mg9fwp6jwr6fbnzh4z8am47bspcl8hv0icmdpc9lmzbcyfpg8f",
+  "fetcher": "github",
+  "repo": "tmalsburg/helm-bibtex",
+  "unstable": {
+   "version": [
+    20200513,
+    852
+   ],
+   "deps": [
+    "biblio",
+    "cl-lib",
+    "dash",
+    "f",
+    "parsebib",
+    "s"
+   ],
+   "commit": "8a0dd9841316793aacddea744d6b8ca4a7857a35",
+   "sha256": "1av058d7888kr3q15y1122r8jkarfw1s83gvkillj7kyzj3i53m5"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "f",
+    "parsebib",
+    "s"
+   ],
+   "commit": "d6a98ac6f28d2a6a05e203115211c98333d40aca",
+   "sha256": "0arhy051945lxjqg77b275ny9nsv60cqj0qfpmvd8xkc07lqfn23"
+  }
+ },
+ {
+  "ename": "bibtex-utils",
+  "commit": "5764b6a880e8143db66e9011cc1c2bf0bcd61082",
+  "sha256": "13llsyyvy0xc9s51cqqc1rz13m3qdqh8jw07gwywfbixlma59z8l",
+  "fetcher": "github",
+  "repo": "plantarum/bibtex-utils",
+  "unstable": {
+   "version": [
+    20190703,
+    2117
+   ],
+   "commit": "26a8f0909b6adbf545a2b5e57ce7f779bf7a65af",
+   "sha256": "19p9v49j7yq41wifw34nwxhqnv18zjqzy6z8xbwm1j7fn78lafk3"
+  }
+ },
+ {
+  "ename": "bicycle",
+  "commit": "ec9b4138ffaf81b556e01b85ce4b112e77909260",
+  "sha256": "16ikqbmsjyknj3580wdnp8ffs85bq9idf9hvxm0ihgw5gy469xqj",
+  "fetcher": "github",
+  "repo": "tarsius/bicycle",
+  "unstable": {
+   "version": [
+    20200429,
+    1021
+   ],
+   "commit": "1bd8836171cf8da0be836fc407f2f140f52bdeb1",
+   "sha256": "0zd8ls2qyxgdzkmhl7mxlh7wbkp627kync8zg95kvrh3qymf5vys"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "commit": "91d9f946690df0a1ed866f2cd1eab1b2e7c7480a",
+   "sha256": "0pkn99srwyvyibz5zxkh58csbf598x26f31mpizacx3bs4nys0qb"
+  }
+ },
+ {
+  "ename": "bifocal",
+  "commit": "79e71995bd8452bad2e717884f148ec74c9735fc",
+  "sha256": "07qrxsby611l3cwsmw3d53h1n7cd1vg53j4vlc2isg56l2m4qks5",
+  "fetcher": "github",
+  "repo": "riscy/bifocal-mode",
+  "unstable": {
+   "version": [
+    20200325,
+    539
+   ],
+   "commit": "de8d09b08b0b30714c4f9b98c97e9577d47b9be6",
+   "sha256": "1z3jk232i0h2zakvbkfpb5a5qdbzfqn4zvbja1hms9349x54a07i"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    6
+   ],
+   "commit": "773a6dde790c4a240e643a9071e4c7bce09d40de",
+   "sha256": "11dirb13hblfa95hqqshrsjri4d4qzcq5qhhnd4xqajdchr62758"
+  }
+ },
+ {
+  "ename": "binclock",
+  "commit": "95dfa38d795172dca6a09cd02e21630747723949",
+  "sha256": "1s0072kcd1xp8355j8aph94gb3a1wqmzx1hhfp9d6bzqf6cij8gk",
+  "fetcher": "github",
+  "repo": "davep/binclock.el",
+  "unstable": {
+   "version": [
+    20170802,
+    1116
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "87042230d7f3fe3e9a77fae0dbab7d8f7e7794ad",
+   "sha256": "0bbcn3aif3qvmgbga7znivcbgn1n79278x7xvbha52zpj584xp8d"
+  },
+  "stable": {
+   "version": [
+    1,
+    11
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b964e437311e5406a31c0ec7038b3bf1fd02b876",
+   "sha256": "0ljxb70vx7x0yn8y1ilf4phk0hamprl43dh23fm3njqqgw60hzbk"
+  }
+ },
+ {
+  "ename": "bind-chord",
+  "commit": "6240afa625290187785e4b7535ee7b0d7aad8969",
+  "sha256": "1hyhs3iypyg5730a20axcfzrrglm4nbgdz8x1ifkaa0iy5zc9hb0",
+  "fetcher": "github",
+  "repo": "jwiegley/use-package",
+  "unstable": {
+   "version": [
+    20171204,
+    2010
+   ],
+   "deps": [
+    "bind-key",
+    "key-chord"
+   ],
+   "commit": "c873d5529c9c80cb58222f22873a4f081c307cb2",
+   "sha256": "0jbq3w9ijsbl5gblhr24b0rh4gyp1xx696g20l438a7sbsk4b531"
+  },
+  "stable": {
+   "version": [
+    2,
+    4
+   ],
+   "deps": [
+    "bind-key",
+    "key-chord"
+   ],
+   "commit": "39a8b8812c2c9f6f0b299e6a04e504ef393694ce",
+   "sha256": "1b7mjjh0d6fmkkd9vyj64vca27xqhga0nvyrrcqxpqjn62zq046y"
+  }
+ },
+ {
+  "ename": "bind-key",
+  "commit": "d39d33af6b6c9af9fe49bda319ea05c711a1b16e",
+  "sha256": "1qw2c27016d3yfg0w10is1v72y2jvzhq07ca4h6v17yi94ahj5xm",
+  "fetcher": "github",
+  "repo": "jwiegley/use-package",
+  "unstable": {
+   "version": [
+    20191110,
+    416
+   ],
+   "commit": "c873d5529c9c80cb58222f22873a4f081c307cb2",
+   "sha256": "0jbq3w9ijsbl5gblhr24b0rh4gyp1xx696g20l438a7sbsk4b531"
+  },
+  "stable": {
+   "version": [
+    2,
+    4
+   ],
+   "commit": "39a8b8812c2c9f6f0b299e6a04e504ef393694ce",
+   "sha256": "1b7mjjh0d6fmkkd9vyj64vca27xqhga0nvyrrcqxpqjn62zq046y"
+  }
+ },
+ {
+  "ename": "bind-map",
+  "commit": "f58800af5965a6e7c9314aa00e971196ea0d036e",
+  "sha256": "1jzkp010b4vs1bdhccf5igmymfxab4vxs1pccpk9n5n5a4xaa358",
+  "fetcher": "github",
+  "repo": "justbur/emacs-bind-map",
+  "unstable": {
+   "version": [
+    20161207,
+    1511
+   ],
+   "commit": "bf4181e3a41463684adfffc6c5c305b30480e30f",
+   "sha256": "0vrk17yg3jbww92p433p64ijmjf7cjg2wmzi9w418235w1xdfzz8"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "commit": "bf4181e3a41463684adfffc6c5c305b30480e30f",
+   "sha256": "0vrk17yg3jbww92p433p64ijmjf7cjg2wmzi9w418235w1xdfzz8"
+  }
+ },
+ {
+  "ename": "bing-dict",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1cqjndq8xm2bwjvdj95dn377bp9r6rrkp1z4a45faj408mipahli",
+  "fetcher": "github",
+  "repo": "cute-jumper/bing-dict.el",
+  "unstable": {
+   "version": [
+    20200216,
+    110
+   ],
+   "commit": "1d581aaa9622b34f8fb83af5579fa252aa24cfef",
+   "sha256": "1v0ncgnj9vv2r0qbwiipg63rlhnfjz8q23jx3la2l22l0i2lyivb"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    4
+   ],
+   "commit": "52718ae3a3abfa5e5457239ee7ddf8f0c23a79a7",
+   "sha256": "1kn8kmljn0pj0hz7dj7r7nxw43xd6acndaqq92d02mla12hiqayz"
+  }
+ },
+ {
+  "ename": "birds-of-paradise-plus-theme",
+  "commit": "3932853232c269f158806aebe416b456c752a9bb",
+  "sha256": "0vdv2siy30kf1qhzrc39sygjk17lwm3ix58pcs3shwkg1y5amj3m",
+  "fetcher": "github",
+  "repo": "jimeh/birds-of-paradise-plus-theme.el",
+  "unstable": {
+   "version": [
+    20130419,
+    2129
+   ],
+   "commit": "bb9f9d4ef7f7872a388ec4eee1253069adcadb6f",
+   "sha256": "1n5icy29ks5rxrxp7v4sf0523z7wxn0fh9lx4y6jb7ppdjnff12s"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "ba2c4443388a73f2c5e2de0c24d3106676aeb6fa",
+   "sha256": "1r3f5d67x257g8kvdbdsl4w3y1dvc1d6s9x8bygbkvyahfi5m5hn"
+  }
+ },
+ {
+  "ename": "bison-mode",
+  "commit": "d08592cabbc0779c67c260f9648d2273c0dd9e3e",
+  "sha256": "097gimlzmyrsfnl76cbzyyi9dm0d2y3f9107672h56ncri35mh66",
+  "fetcher": "github",
+  "repo": "Wilfred/bison-mode",
+  "unstable": {
+   "version": [
+    20200226,
+    47
+   ],
+   "commit": "675df47193accaf30ca44e142523b2b3bb122979",
+   "sha256": "08yg51pzpry5gy29fdbrrb7s5j5c5fxsrhgy0ncp0vl082fs1bv9"
+  }
+ },
+ {
+  "ename": "bitbake",
+  "commit": "da099b66180ed537f8962ab4ca727d2441f9691d",
+  "sha256": "1k2n1i8g0jc78sp1icm64rlhi1q0vqar2a889nldp134a1l7bfah",
+  "fetcher": "github",
+  "repo": "canatella/bitbake-el",
+  "unstable": {
+   "version": [
+    20190107,
+    1155
+   ],
+   "deps": [
+    "dash",
+    "mmm-mode",
+    "s"
+   ],
+   "commit": "4896ff48712a6be37009605ba697a7104462e2fd",
+   "sha256": "0hrqgi3xck8sfs56igxhmvb3vpwm8kj00sqi6f13r7szpxy6cnrq"
+  }
+ },
+ {
+  "ename": "bitbucket",
+  "commit": "9cf87389e6a5d868850d27e077202e1e52eaf4aa",
+  "sha256": "1d0v6hvmxky3k2m89b7xm1igx9fmzvhdpn1bi8zln61m4zgr3yz0",
+  "fetcher": "github",
+  "repo": "tjaartvdwalt/bitbucket.el",
+  "unstable": {
+   "version": [
+    20170405,
+    446
+   ],
+   "deps": [
+    "request",
+    "s"
+   ],
+   "commit": "5e663da1bd38a14c1ecf4d66a79d4321ac833bcf",
+   "sha256": "1sikayb6i1k40zdl4j9n04xcmsf74py5vmcjbvli7k8b3ar7l5l5"
+  }
+ },
+ {
+  "ename": "bitlbee",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "1lmbmlshr8b645qsb88rswmbbcbbawzl04xdjlygq4dnpkxc8w0f",
+  "fetcher": "github",
+  "repo": "pjones/bitlbee-el",
+  "unstable": {
+   "version": [
+    20151203,
+    0
+   ],
+   "commit": "3a92a4119e0c007df2c7dcf1b1c3a5f23ee40e05",
+   "sha256": "0mccvpf8f87i7rqga3s4slrqz80rp3kyj071rrimhzpx8pnsrxx9"
+  }
+ },
+ {
+  "ename": "blackboard-bold-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "08fmzm5lblkk503zr4d6hkp45075pwwd8zinngasrsf1r01isksj",
+  "fetcher": "github",
+  "repo": "grettke/blackboard-bold-mode",
+  "unstable": {
+   "version": [
+    20160813,
+    206
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "5299cb064ba71baa3e331b8560bf8dd38cbbc4ed",
+   "sha256": "00xbcgx4snz4sd7q7ys24rsnf5wdxjn402v8y5dgn4ayx88y1rrj"
+  }
+ },
+ {
+  "ename": "blackboard-theme",
+  "commit": "eca8cbcc1282bb061f769daf86b1938d1f30f704",
+  "sha256": "19cnfxrm85985ic55y5x7nwxdynjp7djyd33dhj8r7s92cs25fn7",
+  "fetcher": "github",
+  "repo": "don9z/blackboard-theme",
+  "unstable": {
+   "version": [
+    20161216,
+    656
+   ],
+   "commit": "7a0d79410feb728ff5cce75c140fadc19a3f9a6d",
+   "sha256": "00hws9fbf7hy11hnicgk2q3din0z8hdq7my00aaw7b8nnb8q4g89"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "d8b984f2541bb86eb4363a2b4c94631e49843d4a",
+   "sha256": "1jh2960yab6rhdq7ci1slpmnr43619cza0g8bfbq759yz5b7xryh"
+  }
+ },
+ {
+  "ename": "blacken",
+  "commit": "c756ccbae044bc23131060355532261aa9a12409",
+  "sha256": "0lk7rhrzysdg4zmvv75bkpxcs6fcd6jaf0nh0bp15c3kp2v9zsn5",
+  "fetcher": "github",
+  "repo": "pythonic-emacs/blacken",
+  "unstable": {
+   "version": [
+    20191123,
+    1547
+   ],
+   "commit": "a09f8e2564739792a1b86bc8a6ce41039db3bbf8",
+   "sha256": "0cs9nmi30dknrw6p2xvx9np1zmzpsn3bs93lhfiqy2a4ylf96brl"
+  }
+ },
+ {
+  "ename": "blackout",
+  "commit": "9128d87569dc74b90f57dd65edead7199f5c7911",
+  "sha256": "06gxgald2vchfwhbiaap7rfjk7kirfv4yjc4r98g998v96bilw64",
+  "fetcher": "github",
+  "repo": "raxod502/blackout",
+  "unstable": {
+   "version": [
+    20200404,
+    1550
+   ],
+   "commit": "d99ab1aad84e4bd2bd4a499877764c213cce50ff",
+   "sha256": "0ay49ars61vr43n4bd3k4n1w89ilmw7d8s53ifixgw0vvjkz74z1"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "87822abd1ed46411368ef91752a7f51c0ef2aee0",
+   "sha256": "0n0889vsm3lzswkcdgdykgv3vz4pb9s88wwkinc5bn70vc187byp"
+  }
+ },
+ {
+  "ename": "blgrep",
+  "commit": "e78ed9dc4a7ff57524e79213973157ab364ae14d",
+  "sha256": "0w7453vh9c73hdfgr06693kwvhznn9xr1hqa65izlsx2fjhqc9gm",
+  "fetcher": "github",
+  "repo": "ataka/blgrep",
+  "unstable": {
+   "version": [
+    20150401,
+    1416
+   ],
+   "deps": [
+    "clmemo"
+   ],
+   "commit": "605beda210610a5829750a987f5fcebea97af546",
+   "sha256": "1pslwyaq18d1z7fay2ih3n27i6b49ss62drqqb095l1jxk42xxm0"
+  }
+ },
+ {
+  "ename": "blimp",
+  "commit": "4fe28626950659c5ba4aa9cc7ba6126ce4737fb7",
+  "sha256": "1k70x0gs9ns7652ahq2b8fhmichsmajzqmm46v1imji238zr7kb1",
+  "fetcher": "github",
+  "repo": "walseb/blimp",
+  "unstable": {
+   "version": [
+    20180903,
+    2240
+   ],
+   "deps": [
+    "eimp"
+   ],
+   "commit": "39562f02acc1113595cb253a85bb3b9da743ddd2",
+   "sha256": "0wzdln3rqqvckkc63q5sb83kimnyk6hrc4slbxhwapdfk53gz0j9"
+  }
+ },
+ {
+  "ename": "bliss-theme",
+  "commit": "641d1959bd31598fcdacd39a3d1bb077dcccfa5c",
+  "sha256": "1kzvi6zymfgirr41l8r2kazfz1y4xkigbp5qa1fafcdmw81anmdh",
+  "fetcher": "github",
+  "repo": "emacsfodder/emacs-bliss-theme",
+  "unstable": {
+   "version": [
+    20170808,
+    1307
+   ],
+   "commit": "c3cf6d8a666ab26909b7da158f9e94df71a5fbbf",
+   "sha256": "1bpyhsjfdjfa1iw9kv7fsl30vz48qllqgjg1rsxdl3vcripcbc9z"
+  }
+ },
+ {
+  "ename": "blitzmax-mode",
+  "commit": "a1a59a8ac5bb12507e58cde85b09e7f19ce72a82",
+  "sha256": "1isqkmc6g412l7gbg0bmyfsl975wjv7fv753z1mi0bzr7ihv5ckz",
+  "fetcher": "github",
+  "repo": "Sodaware/blitzmax-mode",
+  "unstable": {
+   "version": [
+    20200415,
+    1529
+   ],
+   "commit": "5f67bb3c8e4baf1f6881cc998f9f031641a7b08a",
+   "sha256": "1hcx6b3ka0n6sbi9p0z2wqlsxk5d2pvkjawpcyh40b5f1r6dpfmc"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "d772deff2464d48d018bbe43b1e4b3745a4ac886",
+   "sha256": "0gzm2qzwbaqfmfi1vhcx23w9v1mcs6kx5kijncn9hbvhi0640j76"
+  }
+ },
+ {
+  "ename": "bln-mode",
+  "commit": "ee12ef97df241b7405feee69c1e66b3c1a67204b",
+  "sha256": "0w4abaqx9gz04ls1hn1qz8qg9jpvi80b9jb597ddjcbnwqq9z83r",
+  "fetcher": "github",
+  "repo": "mgrachten/bln-mode",
+  "unstable": {
+   "version": [
+    20181121,
+    918
+   ],
+   "commit": "a601b0bf975dd1432f6552ab6afe3f4f71133b4a",
+   "sha256": "19y1fs5bzp2sqvh6svmj0cpvgq13zmsn852027hi11zvwi6dzqz8"
+  }
+ },
+ {
+  "ename": "blockdiag-mode",
+  "commit": "2a0adb94f2a435e846944a1c544e6591b131a10e",
+  "sha256": "0v48w4slzx8baxrf10jrzcpqmcv9d3z2pz0xqn8czlzm2f6id3ya",
+  "fetcher": "github",
+  "repo": "xcezx/blockdiag-mode",
+  "unstable": {
+   "version": [
+    20160427,
+    524
+   ],
+   "commit": "f3b21ba433d60327cebd103ae4492200750e24a9",
+   "sha256": "111i897dnkbx4xq62jfkqq4li4gm16lxbgkgg2gn13zv0f0lzgvy"
+  }
+ },
+ {
+  "ename": "blog-admin",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "03wnci5903c6jikkvlzc2vfma9h9qk673cc3wm756rx94jxinmyk",
+  "fetcher": "github",
+  "repo": "CodeFalling/blog-admin",
+  "unstable": {
+   "version": [
+    20170923,
+    1409
+   ],
+   "deps": [
+    "cl-lib",
+    "ctable",
+    "f",
+    "names",
+    "s"
+   ],
+   "commit": "b5f2e1dad7d68ec903619f7280bb0bcb7e398a1e",
+   "sha256": "0fgzmmjxhl8i9yqx1bvb7hgkk9w4ylx73xy990qf1bl7fg21v636"
+  }
+ },
+ {
+  "ename": "blog-minimal",
+  "commit": "56217a33b0669a782621dd65d83419ae371ed60a",
+  "sha256": "1qj25b6n3slvmbqvzfd37v4xmy1vvz37686jdr29bw5qk4prgxff",
+  "fetcher": "github",
+  "repo": "thiefuniverse/blog-minimal",
+  "unstable": {
+   "version": [
+    20181021,
+    849
+   ],
+   "deps": [
+    "ht",
+    "mustache",
+    "org",
+    "s",
+    "simple-httpd"
+   ],
+   "commit": "356c878322258159021eecdd15757e11cf02e335",
+   "sha256": "1phiraki6l6bp7mw90spw0r99wahl47ycpz0lxr3zljb5ip8jddp"
+  }
+ },
+ {
+  "ename": "bm",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "07459r7m12j2nsb7qrb26bx32alylhaaq3z448n42lz02a8dc63g",
+  "fetcher": "github",
+  "repo": "joodland/bm",
+  "unstable": {
+   "version": [
+    20190807,
+    1217
+   ],
+   "commit": "8129428182e1b8a647d16fceb2d08cc0a2a5f3c7",
+   "sha256": "048n596psrnvz5hi7i7vs0dyk6i6m9krzfh8fld95yggyyikf0iw"
+  },
+  "stable": {
+   "version": [
+    201905
+   ],
+   "commit": "637dacf4cb9112fdfb949706a704dd53cbe79c7e",
+   "sha256": "180b3rc13asrmsdh7v405d54jkrininvaj52xhp71vw91ng51dkn"
+  }
+ },
+ {
+  "ename": "bmx-mode",
+  "commit": "7f456d2b2b8f5a33bcb0f2ffd19e6e0276950f24",
+  "sha256": "04g8l4cw20k3yhbija9mz1l4nx3bzhzj7nb35s0xdyvwbc2mhrwb",
+  "fetcher": "github",
+  "repo": "josteink/bmx-mode",
+  "unstable": {
+   "version": [
+    20180929,
+    1132
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "dash",
+    "s"
+   ],
+   "commit": "536b332edc3b98cc97588c937c7368803ba5961c",
+   "sha256": "0hbkh4fb1cb1fd7fq1999i9rffr2xc0l16b0m5sajcrsir3gq4nr"
+  }
+ },
+ {
+  "ename": "bnf-mode",
+  "commit": "217bde4ccd2d68dc14b1bfee22fbc99cd4109952",
+  "sha256": "027pn2lvqsxyj9ii5svql2sw4xm9wrd9zy7ms8vayv737w5xd3n1",
+  "fetcher": "github",
+  "repo": "sergeyklay/bnf-mode",
+  "unstable": {
+   "version": [
+    20200323,
+    1348
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d88eef69ae66ea1ffa21a65317afe84c9ddb0814",
+   "sha256": "1bci2w8drwgcli9hqg55izaxpwq4fvqdigvlrfc0524s7021ij24"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    4
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "4a7aff6a3a691826ea4add9f519c854b9611d780",
+   "sha256": "1hnkvwl0as2s4aayqahclqclsriigqv51h8yafx0za1xfh4snfzv"
+  }
+ },
+ {
+  "ename": "bnfc",
+  "commit": "7871b6372a391ace76edea40c6f92ceb10b70bf9",
+  "sha256": "0h6qhyi7vcikg7zhv8lywdz033kp27a8z1ymq5wgs4aqs184igm6",
+  "fetcher": "github",
+  "repo": "jmitchell/bnfc-mode",
+  "unstable": {
+   "version": [
+    20160605,
+    1927
+   ],
+   "commit": "1b58df1dd0cb9b81900632fb2843a03b94f56fdb",
+   "sha256": "0lmqrcy80nw6vmf81kh6q39x8pwhzrj6lbk31xpl8mvwnpqaykmn"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "1b58df1dd0cb9b81900632fb2843a03b94f56fdb",
+   "sha256": "0lmqrcy80nw6vmf81kh6q39x8pwhzrj6lbk31xpl8mvwnpqaykmn"
+  }
+ },
+ {
+  "ename": "bog",
+  "commit": "19fd0bf2f8e52c79120c492a6dcabdd51b465d35",
+  "sha256": "1ci8xxca7dclmi5v37y5k45qlmzs6a9hi6m7czgiwxii902w5pkl",
+  "fetcher": "github",
+  "repo": "kyleam/bog",
+  "unstable": {
+   "version": [
+    20180815,
+    2213
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "6c8fa1b4961e279ae63130902996c5f71a2e64e4",
+   "sha256": "0kph9898s2m086p8gj97bbzr7mba9y7hmyxh1z4mgpv5808zvd05"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "6ed4d3edbe771e586d873b826330f3ef23aa1611",
+   "sha256": "0s4jwlaq3mqyzkyg3x4nh4nx7vw825jhz7ggakay7a2cfvpa4i2j"
+  }
+ },
+ {
+  "ename": "bolt-mode",
+  "commit": "ec9e35f0e37db90d906fccd08fb25b673c88d3b8",
+  "sha256": "03x89k8v0m9kv1fhyys2gwympb70qlmg7gdib8wsmdxs34ys5igz",
+  "fetcher": "github",
+  "repo": "mpontus/bolt-mode",
+  "unstable": {
+   "version": [
+    20180310,
+    810
+   ],
+   "commit": "85a5a752bfbebb4aed884326c25db64c000e9934",
+   "sha256": "03nxcmpm5n8jcca39ivrl7cjqz3gzsl3w6qc30hcp278qf2jq6va"
+  }
+ },
+ {
+  "ename": "bongo",
+  "commit": "692428769cd792dc0644641682c2793103dd00c6",
+  "sha256": "07i9gw067r2igp6s2g2iakm1ybvw04q6zznna2cfdf08nax64ghv",
+  "fetcher": "github",
+  "repo": "dbrock/bongo",
+  "unstable": {
+   "version": [
+    20190722,
+    1644
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "9afbf269d33cd3196962423a2c261824611cffe4",
+   "sha256": "1nszph9mn98flyhn1jq3y6mdh6jymjkvj5ng36ql016dj92apvhv"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "9afbf269d33cd3196962423a2c261824611cffe4",
+   "sha256": "1nszph9mn98flyhn1jq3y6mdh6jymjkvj5ng36ql016dj92apvhv"
+  }
+ },
+ {
+  "ename": "bonjourmadame",
+  "commit": "34c4cfd7bbf5b442a9304598ba0a23ba9b8dfae4",
+  "sha256": "0d36yradh37359fjk59s54hxkbh4qcc17sblj2ylcdyw7181iwfn",
+  "fetcher": "github",
+  "repo": "pierre-lecocq/bonjourmadame",
+  "unstable": {
+   "version": [
+    20170919,
+    1134
+   ],
+   "commit": "d3df185fce78aefa689fded8e56a654f0fde4ac0",
+   "sha256": "1acn63hd7s2z8viy52hmhncdic7m86rcqczxnz9aivikqy4hfnsi"
+  }
+ },
+ {
+  "ename": "boogie-friends",
+  "commit": "5bdd06b82d002677c046876642efe1dc01bc3e77",
+  "sha256": "0cfs7gvjxsx2027dbzh4yypz500nmk503ikiiprbww8jyvc8grk7",
+  "fetcher": "github",
+  "repo": "boogie-org/boogie-friends",
+  "unstable": {
+   "version": [
+    20190909,
+    1432
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "dash",
+    "flycheck",
+    "yasnippet"
+   ],
+   "commit": "45ee305eba1cce63f89e49daef9eaeaa90e34265",
+   "sha256": "0dnmg84ynxr4vhdgrzdvrq68jrrmp9vkz0lbwhlxpljckpmfdf03"
+  }
+ },
+ {
+  "ename": "bool-flip",
+  "commit": "f56377a7c3f4b75206ad9ba570c35dbf752079e9",
+  "sha256": "1xfspqxshx7m8gh6g1snkaahka9f71fnq7hx81nik4s9s8pmxj9c",
+  "fetcher": "github",
+  "repo": "michaeljb/bool-flip",
+  "unstable": {
+   "version": [
+    20161215,
+    1539
+   ],
+   "commit": "f58a9a7b9ab875bcfbd57c8262697ae404eb4485",
+   "sha256": "06q86a6dhc7jvq25yqqq3dsmrbm67h0ayb6nhd0q5l90yrmfqfjh"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "commit": "0f7cc9b387429239fb929896511727d4e49a795b",
+   "sha256": "1051gy7izy25jwh079231d4lh9azchbqc6nvfrkv8s9ck407a65a"
+  }
+ },
+ {
+  "ename": "boon",
+  "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a",
+  "sha256": "0gryw7x97jd46jgrm93cjagj4p7w93cjc36i2ps9ajf0d8m4gajb",
+  "fetcher": "github",
+  "repo": "jyp/boon",
+  "unstable": {
+   "version": [
+    20200514,
+    1227
+   ],
+   "deps": [
+    "dash",
+    "expand-region",
+    "multiple-cursors"
+   ],
+   "commit": "57271ed2ddca96c77b83b282019852d1cffffd26",
+   "sha256": "0mmyxi75hlg1lkvpk4lq5nagmcsmjijmkcmmkkq25llf7nmik8as"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "dash",
+    "expand-region",
+    "multiple-cursors"
+   ],
+   "commit": "270ae67b3136ac355d2aed5b4690ae28edaf7c29",
+   "sha256": "1ss9bjs34q41pa0g0nbdzd8fwpjcbd2239rdlx5aykfv9v0b8j77"
+  }
+ },
+ {
+  "ename": "borg",
+  "commit": "878ab90d444f3a1fd2c9f9068ca7b477e218f1da",
+  "sha256": "0gn4hf7hn190gl0kg59nr6jzjnb39c0hy9b3brrsfld9hyxga9jr",
+  "fetcher": "github",
+  "repo": "emacscollective/borg",
+  "unstable": {
+   "version": [
+    20200513,
+    1954
+   ],
+   "deps": [
+    "epkg",
+    "magit"
+   ],
+   "commit": "f6a2e0cb8c3db5840c717114caba93793f2e9661",
+   "sha256": "1sa0wk7xj3qsk9fr4z2av80gp8n0804zylx3d27pdwm8bjyfzf7b"
+  },
+  "stable": {
+   "version": [
+    3,
+    1,
+    2
+   ],
+   "deps": [
+    "dash",
+    "epkg",
+    "magit"
+   ],
+   "commit": "3f9fc2281e9ae873873998782c98c57c5ebb0555",
+   "sha256": "1k889m4095lm97lphcwcrsl53vhgas7iha594mmk8cs7sm5csjy1"
+  }
+ },
+ {
+  "ename": "borland-blue-theme",
+  "commit": "f2ff5916fd2caee778479bc2ad3ef13ee514052c",
+  "sha256": "1sc8qngm40bwdym8k1dgbahg48i73c00zxd99kqqwm9fnd6nm7qx",
+  "fetcher": "github",
+  "repo": "fourier/borland-blue-theme",
+  "unstable": {
+   "version": [
+    20160117,
+    1321
+   ],
+   "commit": "db74eefebbc89d3c62575f8f50b319e87b4a3470",
+   "sha256": "0yzfxxv2bw4x320268bixfc7yf97851804bz3829vbdhnr4kp6y5"
+  }
+ },
+ {
+  "ename": "boron-theme",
+  "commit": "641d1959bd31598fcdacd39a3d1bb077dcccfa5c",
+  "sha256": "1rrqlq08jnh9ihb99ji1vvmamj742assnm4a7xqz6gp7f248nb81",
+  "fetcher": "github",
+  "repo": "emacsfodder/emacs-boron-theme",
+  "unstable": {
+   "version": [
+    20170808,
+    1308
+   ],
+   "commit": "87ae1a765e07429fec25d2f29b004f84b52d2e0a",
+   "sha256": "1kdf71af1s67vshgwkdgi7swxx942i605awhmhrhdjbkra29v4yn"
+  }
+ },
+ {
+  "ename": "boxquote",
+  "commit": "d2148f8f17b16154bfc337df69a5ad31e25a9b05",
+  "sha256": "0s6cxb8y1y8w9vxxhj1izs8d0gzk4z2zm0cm9gkw1h7k2kyggx6s",
+  "fetcher": "github",
+  "repo": "davep/boxquote.el",
+  "unstable": {
+   "version": [
+    20170802,
+    1117
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "7e47e0e2853bc1215739b2e28f260e9eed93b2c5",
+   "sha256": "1aqhg24gajvllbqxb0zxrnx6sddas37k2ldfinqyszd856sjhsg3"
+  },
+  "stable": {
+   "version": [
+    2,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b6a4ad3ee5b327bd3b1bf65f8733bd301fe59883",
+   "sha256": "1f61k3sw9zvn6jq60ygi6p66blr52497fadimzcaspa79k9y1cfm"
+  }
+ },
+ {
+  "ename": "bpe",
+  "commit": "1a99263c2672d4c2433835cf948101130126e14b",
+  "sha256": "08zfqcgs7i2ram2qpy8vrzksx5722aahr66vdi4d9bcxm03s19fm",
+  "fetcher": "github",
+  "repo": "yuutayamada/bpe",
+  "unstable": {
+   "version": [
+    20141228,
+    2205
+   ],
+   "commit": "7b5b25f83506e6c9f4075d3803fa32404943a189",
+   "sha256": "0chmarbpqingdma54d6chbr6v6jg8lapbw56cpvcpbl04fz980r0"
+  }
+ },
+ {
+  "ename": "bpftrace-mode",
+  "commit": "560a126db20ff4da100eeb3edaa0716d7a27eb94",
+  "sha256": "1p1d5xnypfq1lbrkn9i9sdwkyxyrg92f069r21f7nf6a4r2dlf9s",
+  "fetcher": "gitlab",
+  "repo": "jgkamat/bpftrace-mode",
+  "unstable": {
+   "version": [
+    20190608,
+    2201
+   ],
+   "commit": "587b39ea7a1d786df5c04796d51bf2a5a4eda0d7",
+   "sha256": "0bvg2vpak2bv3s7wc0zzrqb3pys5s7vi6rs7k7l4fmaj5amaq9vb"
+  }
+ },
+ {
+  "ename": "bpr",
+  "commit": "05eed39bae37cc8359d2cc678052cbbcc946e379",
+  "sha256": "0rjxn40n4s4xdq51bq0w3455g9pli2pvcf1gnbr96zawbngrw6x2",
+  "fetcher": "github",
+  "repo": "ilya-babanov/emacs-bpr",
+  "unstable": {
+   "version": [
+    20180220,
+    1844
+   ],
+   "commit": "7f3c787ed80ac0e83447192ac5450dfa7110ade1",
+   "sha256": "1jb14vd1d35jk3mnb2ja293p2l57yvi7w1idrajapz41ggvfyqbb"
+  }
+ },
+ {
+  "ename": "bracketed-paste",
+  "commit": "6446db573d97ceb21cd39ce05fb39627113bbd74",
+  "sha256": "1v7zwi29as0218vy6ch21iqqcxfhyh373m3dbcdzm2pb8bpcg58j",
+  "fetcher": "github",
+  "repo": "hchbaw/bracketed-paste.el",
+  "unstable": {
+   "version": [
+    20160407,
+    2348
+   ],
+   "commit": "843ce3bbb63d560face889e13a57a2f7543957d5",
+   "sha256": "1l6j2zs12psc15cfhqq6hm1bg012jr49zd2i36cmappbsiax1l8m"
+  }
+ },
+ {
+  "ename": "brainfuck-mode",
+  "commit": "279ae8faabbfa2f894999e1534a964606722a150",
+  "sha256": "08jzx329mrr3c2pifs3hb4i79dsw606b0iviagaaja8s808m40cd",
+  "fetcher": "github",
+  "repo": "tom-tan/brainfuck-mode",
+  "unstable": {
+   "version": [
+    20150113,
+    842
+   ],
+   "deps": [
+    "langdoc"
+   ],
+   "commit": "36e69552bb3b97a4f888d362c59845651bd0d492",
+   "sha256": "1nzgjgzidyrplfs4jl8nikd5wwvb4rmrnm51qxmw9y2if0hpq0jd"
+  }
+ },
+ {
+  "ename": "brazilian-holidays",
+  "commit": "111f2736e864e7cc8be6beb00eebb62f4d614e8c",
+  "sha256": "1akqv0xd03vq46s8rzpk2hmjvy676dgnivaq8n5myagjkj9bmw3r",
+  "fetcher": "github",
+  "repo": "jadler/brazilian-holidays",
+  "unstable": {
+   "version": [
+    20191211,
+    330
+   ],
+   "commit": "13a480f03eb3729e6f203ce77dfd4de5e1203a3d",
+   "sha256": "1980267q70b7m16jsxc433cdqzr15q8dz5cwpkhla52wfdf1s184"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    0
+   ],
+   "commit": "13a480f03eb3729e6f203ce77dfd4de5e1203a3d",
+   "sha256": "1980267q70b7m16jsxc433cdqzr15q8dz5cwpkhla52wfdf1s184"
+  }
+ },
+ {
+  "ename": "brf",
+  "commit": "203e7d21e2387866107740ead4ec28787d82ebfb",
+  "sha256": "0439bzzzy6kx536zh9azxrdmfpb69xrr8axxg5q7989892iaqi5m",
+  "fetcher": "git",
+  "url": "https://bitbucket.org/MikeWoolley/brf-mode",
+  "unstable": {
+   "version": [
+    20200329,
+    1531
+   ],
+   "deps": [
+    "fringe-helper"
+   ],
+   "commit": "f1ae0c5eb74f62af109ebaf18e8663d6f51270cb",
+   "sha256": "1pzxz5irx6ysa8nhl9x50v8l5r2cvd6pafj71q4i5lrxv9a1dkl1"
+  }
+ },
+ {
+  "ename": "brightscript-mode",
+  "commit": "9acbba1c180ea7c03156009c08285697a7aae419",
+  "sha256": "0g0lwmd53v6lqihksqdirl12rz6a9ljp9zdm1xpd4wbqz72w17jw",
+  "fetcher": "github",
+  "repo": "viseztrance/brightscript-mode",
+  "unstable": {
+   "version": [
+    20200321,
+    2126
+   ],
+   "commit": "3b34032bdde6a37b4566c45ce93cb38da21d4965",
+   "sha256": "16p4404mxqgl1zqdalnq3bvbhwv11wgfl42871lxv3nndcsd30gr"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "01405633a14269ab26d053ca6f1494c987d24195",
+   "sha256": "0952smngj32an30v2bqgfc14xrl90xwr4a038w01cdgg9k848g7y"
+  }
+ },
+ {
+  "ename": "broadcast",
+  "commit": "6ed51896112e702a8b853059884aad50d37738c2",
+  "sha256": "1h2c3mb49q3vlpalrsrx8q3rmy1zg0y45ayvzbvzdkfgs8idgbib",
+  "fetcher": "github",
+  "repo": "killdash9/broadcast.el",
+  "unstable": {
+   "version": [
+    20151205,
+    212
+   ],
+   "commit": "f6f9cd2e0e3f8c31d6b8e7446c27eb0e50b25f16",
+   "sha256": "0w6b9rxdciy1365kgf6fh3vgrjr8xd5ar6xcn0g4h56f2zg9hdmj"
+  }
+ },
+ {
+  "ename": "browse-at-remote",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0s088ba047azba60rlfn3jbqr321vnm953i7dqw2gj9xml90kbm4",
+  "fetcher": "github",
+  "repo": "rmuslimov/browse-at-remote",
+  "unstable": {
+   "version": [
+    20200308,
+    639
+   ],
+   "deps": [
+    "cl-lib",
+    "f",
+    "s"
+   ],
+   "commit": "6aecae4b5d202e582425fc8aa2c9c2b6a4779f25",
+   "sha256": "0c93ilvxmfv28a05fs2lbdyc2q308anjw0xvbkg7dc0blg0fgb05"
+  },
+  "stable": {
+   "version": [
+    0,
+    14,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "f",
+    "s"
+   ],
+   "commit": "771a3079e27f397d2f5a9470b945980fa68ee048",
+   "sha256": "0bx4ns0jb0sqrjk1nsspvl3mhz3n12925azf7brlwb1vcgnji09v"
+  }
+ },
+ {
+  "ename": "browse-kill-ring",
+  "commit": "294dc32a672e6b6b0ebfc46cdf0ff9ceacf73e89",
+  "sha256": "1d97ap0vrg5ymp96z7y6si98fspxzy02jh1i4clvw5lggjfibhq4",
+  "fetcher": "github",
+  "repo": "browse-kill-ring/browse-kill-ring",
+  "unstable": {
+   "version": [
+    20200210,
+    921
+   ],
+   "commit": "1ef72cc6accd94cd7032c02b1b2c78ae7f1d1965",
+   "sha256": "0mil32g7hcw376jibs5hdyv00xbaql3m4a27rwqaafg0x59avxdj"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "commit": "2a7acf98c348c4f405a6b2ab216224ca14915be8",
+   "sha256": "0y9m6cv70pzcm0v2v8nwmyh1xx40831chx72m85h5ic5db03gy7b"
+  }
+ },
+ {
+  "ename": "browse-url-dwim",
+  "commit": "a082c2dc0458e3007a947923f5b97e88217199e8",
+  "sha256": "13bv2ka5pp9k4kwrxfqfawwxzsqlakvpi9a32gxgx7qfi0dcb1rf",
+  "fetcher": "github",
+  "repo": "rolandwalker/browse-url-dwim",
+  "unstable": {
+   "version": [
+    20140731,
+    1922
+   ],
+   "deps": [
+    "string-utils"
+   ],
+   "commit": "3d611dbb167c286109ac53995ad68286d87aafb9",
+   "sha256": "1rcihwdxrzhgcz573rh1yp3770ihkwqjqvd39yhic1d3sgwxz2hy"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    8
+   ],
+   "deps": [
+    "string-utils"
+   ],
+   "commit": "11f1c53126619c7ef1bb5f5d6914ce0b3cce0e30",
+   "sha256": "08qz9l0gb7fvknzkp67srhldzkk8cylnbn0qwkflxgcs6ndfk95y"
+  }
+ },
+ {
+  "ename": "brutal-theme",
+  "commit": "e415b9a4d269cfee5ee2b0e58acb18804c2a8cb7",
+  "sha256": "1xjj2ssw3lbx21w6g4m6vqc471v8jgmgk0zw1z1hkmygg0xipgl3",
+  "fetcher": "github",
+  "repo": "topikettunen/brutal-emacs",
+  "unstable": {
+   "version": [
+    20200415,
+    602
+   ],
+   "commit": "ee63563b7cb07aeec342722ae684426cb0465a98",
+   "sha256": "1wx6771iv4psvlwhng0n09g0w3yml1pw3ga5lghjz9j6hba0bc6s"
+  }
+ },
+ {
+  "ename": "brutalist-theme",
+  "commit": "ec889956a5685c3a60003ad2bfa04b03b57aa8e8",
+  "sha256": "0dg0432r3cpjgdlpz583vky4hj5vld9d25dvaj6nxlir2ph9g9hn",
+  "fetcher": "git",
+  "url": "https://git.madhouse-project.org/algernon/brutalist-theme.el.git",
+  "unstable": {
+   "version": [
+    20181023,
+    1222
+   ],
+   "commit": "6568844b83dc916a5d6aa69960cbc85ded5f7d73",
+   "sha256": "1b76hvk87p3glrlbm8gj4w6r7y7gqa5yq8hdxq31m2swqg8h3k52"
+  }
+ },
+ {
+  "ename": "bshell",
+  "commit": "cf0ed51304f752af3e1f56caf2856d1521d782a4",
+  "sha256": "1ds8xvh74i6wqswjp8i30knr74l4gbalkb2jil8qjb9wp9l1gw9z",
+  "fetcher": "github",
+  "repo": "plandes/bshell",
+  "unstable": {
+   "version": [
+    20190617,
+    238
+   ],
+   "deps": [
+    "buffer-manage"
+   ],
+   "commit": "5cdffa393ec3f923736bc6459bc958829a321327",
+   "sha256": "0nfj00fgg7lsd5201qds7pniyn9lbnmmdbps5lkiqmbp6phksba9"
+  },
+  "stable": {
+   "version": [
+    0,
+    9
+   ],
+   "deps": [
+    "buffer-manage"
+   ],
+   "commit": "8d359f8a76749dcd5ca046b280a11fdb3f87cd23",
+   "sha256": "10nidam7zyqxc085v6f4mzz5d62p92k88vvcrv95i1sbzma7lz4f"
+  }
+ },
+ {
+  "ename": "btc-ticker",
+  "commit": "f78796a8835ec44f4d13c99559fd4d113c6f4f29",
+  "sha256": "1vfnx114bvnly1k3fmcpkqq4m9558wqr5c9k9yj8f046dgfh8dp1",
+  "fetcher": "github",
+  "repo": "niedbalski/emacs-btc-ticker",
+  "unstable": {
+   "version": [
+    20151113,
+    1459
+   ],
+   "deps": [
+    "json",
+    "request"
+   ],
+   "commit": "845235b545f070d0812cd1654cbaa4997565824f",
+   "sha256": "022j0gw5qkxjz8f70vqjxysifv2mz6cigf9n5z03zmpvwwvxmx2z"
+  }
+ },
+ {
+  "ename": "bts",
+  "commit": "0d2f9c2f465b06c97cd03c5644155cd6c7fade24",
+  "sha256": "1i1lbjracrgdxr52agxhxxgkra4w291dmz85s195lcx38rva7ib3",
+  "fetcher": "github",
+  "repo": "aki2o/emacs-bts",
+  "unstable": {
+   "version": [
+    20151109,
+    1333
+   ],
+   "deps": [
+    "dash",
+    "log4e",
+    "pos-tip",
+    "s",
+    "widget-mvc",
+    "yaxception"
+   ],
+   "commit": "df42d58a36447697f93b56e69f5e700b2baef1f9",
+   "sha256": "1qgasaqhqm0birjmb6k6isd2f5pn58hva8db8qfhva9g5kg1f38w"
+  }
+ },
+ {
+  "ename": "bts-github",
+  "commit": "6f3e87699181877e50d75a89e2ee76e403fc9317",
+  "sha256": "03lz12bbkjqbs82alc97k6s1pmk721qip3h9cifq8a5ww5cbq9ln",
+  "fetcher": "github",
+  "repo": "aki2o/emacs-bts-github",
+  "unstable": {
+   "version": [
+    20170401,
+    1249
+   ],
+   "deps": [
+    "bts",
+    "gh"
+   ],
+   "commit": "ef2cf9202dc2128e5efdb613bfde9276a8cd95ad",
+   "sha256": "173i9n4c8mg93gpc7ljxh3nhm4lq2c04yhrvjz6fwwwqvmnkha5f"
+  }
+ },
+ {
+  "ename": "bubbleberry-theme",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "1mjygck5ra30j44msccqas8v6gkpyv74p6y6hidm8v4f8n6m8dcz",
+  "fetcher": "github",
+  "repo": "emacsfodder/emacs-bubbleberry-theme",
+  "unstable": {
+   "version": [
+    20141017,
+    944
+   ],
+   "commit": "22e9adf4586414024e4592972022ec297321b320",
+   "sha256": "1aha8rzilv4k300rr4l9qjfygydfwllkbw17lhm8jz0kh9w6bd28"
+  }
+ },
+ {
+  "ename": "buckwalter",
+  "commit": "7dd38487731cc978e104afa39f8954cfc33ba27f",
+  "sha256": "08pnmfy910n5l00kmkn4533x48m3scsxzyra0nl6iry2n39y2kr1",
+  "fetcher": "github",
+  "repo": "joehakimrahme/buckwalter.el",
+  "unstable": {
+   "version": [
+    20191119,
+    1950
+   ],
+   "commit": "1ef6f210f38c0686bc5b445b9704190f168f30ea",
+   "sha256": "054gbfdaqfj5psb3f06ba46x38gd9xak28h1la5b1szdzj61f23i"
+  }
+ },
+ {
+  "ename": "buffer-buttons",
+  "commit": "d518e81c8342a93455108e769c8b42747982c924",
+  "sha256": "1p0ydbrff9197sann3s0d7hpav7r9g461w4llncafmy31w7m1dn6",
+  "fetcher": "github",
+  "repo": "rpav/buffer-buttons",
+  "unstable": {
+   "version": [
+    20150106,
+    1439
+   ],
+   "commit": "2feb8494fa7863b98256bc85da670d74a3a8a975",
+   "sha256": "1p5a29bpjqr1gs6sb6rr7y0j06nlva23wxkwfskap25zvjpgwbvq"
+  }
+ },
+ {
+  "ename": "buffer-flip",
+  "commit": "3924870cac1392a7eaeeda34b92614c26c674d63",
+  "sha256": "0ka9ynj528yp1p31hbhm89627v6dpwspybly806n92vxavxrn098",
+  "fetcher": "github",
+  "repo": "killdash9/buffer-flip.el",
+  "unstable": {
+   "version": [
+    20180307,
+    2251
+   ],
+   "commit": "e093360e05164c78255866c1ac8f966aa38ba514",
+   "sha256": "1s35llycdhhclf9kl1q9l7zzzfqrnnvbiqv5csfw0mngfj0lz77f"
+  },
+  "stable": {
+   "version": [
+    2,
+    1
+   ],
+   "commit": "e093360e05164c78255866c1ac8f966aa38ba514",
+   "sha256": "1s35llycdhhclf9kl1q9l7zzzfqrnnvbiqv5csfw0mngfj0lz77f"
+  }
+ },
+ {
+  "ename": "buffer-manage",
+  "commit": "28f8f376df810e6ebebba9fb2c93eabbe3526cc9",
+  "sha256": "0fwri332faybv2apjh8zajqpryi0g4kk3and8djibpvci40l42jb",
+  "fetcher": "github",
+  "repo": "plandes/buffer-manage",
+  "unstable": {
+   "version": [
+    20191015,
+    1730
+   ],
+   "deps": [
+    "choice-program",
+    "dash"
+   ],
+   "commit": "4fd0e6f9f3da31bc805be2000adf2c91088dd39b",
+   "sha256": "1an2w2s2xnmcj2knnax4mpv4wzcq31bvqcbhwasm39yzjlz7j5s9"
+  },
+  "stable": {
+   "version": [
+    0,
+    10
+   ],
+   "deps": [
+    "choice-program",
+    "dash"
+   ],
+   "commit": "f21bac39b3c890704a7b1b50e8d6bc39e6417a3d",
+   "sha256": "0hs3glwwp1b0i1gxp0ypyjwaw8pyi26a66y9dqv7sz0xsvnm3zbs"
+  }
+ },
+ {
+  "ename": "buffer-move",
+  "commit": "e30e053eab078a8bef73e42b90299231ea0997ee",
+  "sha256": "0wysywff2bggrha7lpl83c8x6ln7zgdj9gsqmjva6gramqb260fg",
+  "fetcher": "github",
+  "repo": "lukhas/buffer-move",
+  "unstable": {
+   "version": [
+    20160615,
+    1803
+   ],
+   "commit": "cb517ecf8409b5fdcda472d7190c6021f0c49751",
+   "sha256": "0gxy58v8nyv6pmzfn8552m8a14f5lzcbkndp5xpzq4g9qvmifmj6"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    2
+   ],
+   "commit": "9bf3ff940011c7af3fdd172fa3ea2511c7a8a190",
+   "sha256": "0xdks4jfqyhkh34y48iq3gz8swp0f526kwnaai5mhgvazvs4za8c"
+  }
+ },
+ {
+  "ename": "buffer-sets",
+  "commit": "61d07bbe7201fc991c7ab7ee6299a89d63ddb5e5",
+  "sha256": "1xj9fn2x4kbx8kp999wvz1j68znp7j81zl6rnbaipbx7hjpqrsin",
+  "fetcher": "git",
+  "url": "https://git.flintfam.org/swf-projects/buffer-sets.git",
+  "unstable": {
+   "version": [
+    20170718,
+    340
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "4a4ccb0d6916c3e9fba737bb7b48e8aac921954e",
+   "sha256": "1rg6iwswi82w8938pavwhvvr2z3ismb42asam2fkad47h2sgn0gz"
+  }
+ },
+ {
+  "ename": "buffer-utils",
+  "commit": "a082c2dc0458e3007a947923f5b97e88217199e8",
+  "sha256": "0cfipdn4fc4fvz513mwiaihvbdi05mza3z5z1379wlljw6r539z2",
+  "fetcher": "github",
+  "repo": "rolandwalker/buffer-utils",
+  "unstable": {
+   "version": [
+    20140512,
+    1400
+   ],
+   "commit": "685b13457e3a2085b7584e41365d2aa0779a1b6f",
+   "sha256": "1mnf0dgr6g58k0jyia7985jsinrla04vm5sjl2iajwphbhadjk8p"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "b4d325543e25518d725a2122b49cd72a0d6a079a",
+   "sha256": "0rp9hiysy13c4in7b420r7yjza2knlmvphj7l01xbxphbilplqk5"
+  }
+ },
+ {
+  "ename": "buffer-watcher",
+  "commit": "c8681776d467951d14d8247e6939bd9a6f2a80ec",
+  "sha256": "0v096021xk7k821bxb5zddw6sljqa6fs8f7s8j0w3pv6lmhra1ln",
+  "fetcher": "github",
+  "repo": "NicolasPetton/buffer-watcher",
+  "unstable": {
+   "version": [
+    20170913,
+    839
+   ],
+   "deps": [
+    "cl-lib",
+    "f"
+   ],
+   "commit": "b32c67c8a5d724257d759f4c903d0dedc32246ef",
+   "sha256": "0mygs48mk2z8cw1csz2wfyn7kln9662d16hwpmbxs5x8k71aq8jx"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "f"
+   ],
+   "commit": "353d76882c65d44341b6f28bd86279dda00c3440",
+   "sha256": "0x9bcnya47pf78p6ksdvs1ca5arvbgyi1q8b9yxq55fg3k9523ln"
+  }
+ },
+ {
+  "ename": "buffer-wrap",
+  "commit": "446fb5528644d9e51a10ade59de97e248729d3f3",
+  "sha256": "1fdk490hwz1mf4ldw8bh0w2byxi03qwdapgdgcvzir3s913gagrw",
+  "fetcher": "github",
+  "repo": "jcs-elpa/buffer-wrap",
+  "unstable": {
+   "version": [
+    20200223,
+    605
+   ],
+   "commit": "460f90bc024b6c287ed8afac3ff1bed2a147c777",
+   "sha256": "07r50iiiyhbqbia9c8c3kz1hvqjs6dkb8rkqpq4yyv3vd1kc9qnb"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "813a3dab3007a34fa27cf0a1ae687dc0eae98240",
+   "sha256": "0m2ryic16083ab0x6qwfrxrpsgq84s518vn0cbfcxycblpdh89al"
+  }
+ },
+ {
+  "ename": "bufler",
+  "commit": "4ba5657f237eea9073a46a4127be5795be07c687",
+  "sha256": "1zxvkrgwk7v3404vcwyv5nag60ri72qqi5fkpwwmzc9cs2bckj20",
+  "fetcher": "github",
+  "repo": "alphapapa/bufler.el",
+  "unstable": {
+   "version": [
+    20200409,
+    1253
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "f",
+    "magit-section",
+    "pretty-hydra"
+   ],
+   "commit": "b2b260e4f9e8ba76bb8b4d71344c7b75e05ac44f",
+   "sha256": "0ww7z2xz185i97wa1rnmqwlx2mvwx69hhlyi5m3sm0nkyckb2hjs"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "f",
+    "magit-section",
+    "pretty-hydra"
+   ],
+   "commit": "d6c79f04b7d288174d8294fb30488b567586364d",
+   "sha256": "0l35ssjry15wqcxnr8rf5lrv856pgnm0k2d4d6ag14ypjx9nfhw3"
+  }
+ },
+ {
+  "ename": "bufshow",
+  "commit": "543a734795eed11aa47a8e1348d14e362b341af0",
+  "sha256": "027cd0jzb8yxm66q1bhyi75f2m9f2pq3aswgav1d18na3ybwg65h",
+  "fetcher": "github",
+  "repo": "pjones/bufshow",
+  "unstable": {
+   "version": [
+    20130726,
+    1838
+   ],
+   "commit": "d60a554e7239e6f7520d9c3436d5ecdbc9cf6957",
+   "sha256": "1rh848adjqdl42rw8yf1fqbr143m0pnbrlznx0d97v4vszvbby2s"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "d8424e412d63dcc721c64fbd2ddd2420a03b4e8b",
+   "sha256": "0x9q4amsmawi8jqj9xxg81khvb3gyyf9hjvb0w6vhrgjwpxiq8sy"
+  }
+ },
+ {
+  "ename": "bug-reference-github",
+  "commit": "5dfce86371692dddef78a6c1d772138b487b82cb",
+  "sha256": "18yzxwanbrxsab6ba75z1196x0m6dapdhbvy6df5b5x5viz99cf6",
+  "fetcher": "github",
+  "repo": "arnested/bug-reference-github",
+  "unstable": {
+   "version": [
+    20200206,
+    2158
+   ],
+   "commit": "c9512a010f19633e69f1d4b1597eff7048b21112",
+   "sha256": "0nyxd9dnvvdvjik94m9frbbhcf9axi50vpcs0mk0xy5raxq3scf7"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "f570a0532bfb44f095b42cf68ab1f69799101137",
+   "sha256": "09rbxgrk7jp9xajya6nccj0ak7fc48wyxq4sfmjmy3q1qfszdsc3"
+  }
+ },
+ {
+  "ename": "bui",
+  "commit": "38b7c9345de75a707b4a73e8bb8e2f213e4fd739",
+  "sha256": "0a4g55k02hi3cwvk4d35lk2x5kc4fabskl2025i83hx0rqw4w3f1",
+  "fetcher": "github",
+  "repo": "alezost/bui.el",
+  "unstable": {
+   "version": [
+    20200426,
+    2219
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "28a9b0a36cb69b931cf32db7546ad5c6589752cf",
+   "sha256": "1gwb95pjwv9k0iq290mcyyl0xasr3jldr086rrhabxpcc9ih3yv8"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    1
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "9162c24b75799857d54838d961c60776ffcd657e",
+   "sha256": "0sszdl4kvqbihdh8d7mybpp0d8yw2p3gyiipjcxz9xhvvmw3ww4x"
+  }
+ },
+ {
+  "ename": "build-farm",
+  "commit": "bc97bf56ea50788ecbbbb1f46e188e8487370936",
+  "sha256": "0dbq3sc1x0cj06hv3mlk0zw0cijdwjszicylv14m1wahal33xjrw",
+  "fetcher": "github",
+  "repo": "alezost/build-farm.el",
+  "unstable": {
+   "version": [
+    20181218,
+    2002
+   ],
+   "deps": [
+    "bui",
+    "magit-popup"
+   ],
+   "commit": "5c268a3c235ace0d79ef1ec82c440120317e06f5",
+   "sha256": "0i0bwbav5861j2y15j9nd5m9rdqg9q97zgcbld8pivr9nyxy63lz"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "bui",
+    "magit-popup"
+   ],
+   "commit": "5c268a3c235ace0d79ef1ec82c440120317e06f5",
+   "sha256": "0i0bwbav5861j2y15j9nd5m9rdqg9q97zgcbld8pivr9nyxy63lz"
+  }
+ },
+ {
+  "ename": "build-helper",
+  "commit": "af56cde18ae0efb0ae91c818e6804c55cdb3b8c2",
+  "sha256": "1asgpf2k4i7p88ask1i6ra4krhsxr6j2d2qv0gfxlsa5p330mmgh",
+  "fetcher": "github",
+  "repo": "afonso360/build-helper",
+  "unstable": {
+   "version": [
+    20161009,
+    1755
+   ],
+   "deps": [
+    "projectile"
+   ],
+   "commit": "7a6fe71125a26ed1c492dab77cc688a7fe1d68ac",
+   "sha256": "0pipdzjf7arli6b88fp21as5d4v8ylsy19hixywhfgb7917qsrkv"
+  }
+ },
+ {
+  "ename": "build-status",
+  "commit": "23bbe012f313cf0cf4c45a66eb0bee9361ced564",
+  "sha256": "0ckyf0asll50gifx1v0qqzpimjms8i1rgw9bnqiyj861qn5hch92",
+  "fetcher": "github",
+  "repo": "sshaw/build-status",
+  "unstable": {
+   "version": [
+    20190807,
+    1231
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1a1d2473aa62f2fdda47d8bfeb9fe352d2579b48",
+   "sha256": "03mxvqiknca5dzcr5j3xdwfyjpq172rbj3dgdfjms8lbgxgm4kgw"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "c29a0146c5d0be274f5e17921e01698f572c23a1",
+   "sha256": "03f0h7sp0sr9kjyhvcx7i34lvc26f5x8nikfidihgzhrqpprv2b6"
+  }
+ },
+ {
+  "ename": "bundler",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "1jvcrxwsf9yd5vhirfdmjl52n6hffr1vikd386qbn32vgqcsba7a",
+  "fetcher": "github",
+  "repo": "endofunky/bundler.el",
+  "unstable": {
+   "version": [
+    20200129,
+    1338
+   ],
+   "deps": [
+    "cl-lib",
+    "inf-ruby"
+   ],
+   "commit": "43efb6be4ed118b06d787ce7fbcffd68a31732a7",
+   "sha256": "1r7x3xw4l5bp4dfqk2v2nrd2yl0rs064gw75nx99ifm92n7nkmgh"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "inf-ruby"
+   ],
+   "commit": "4cb4fafe092d587cc9e58ff61cf900fb7f409adf",
+   "sha256": "18d74nwcpk1i8adxzfwz1lgqqcxsc4wkrb490v64pph79dxsi80h"
+  }
+ },
+ {
+  "ename": "bury-successful-compilation",
+  "commit": "f66e2e23c7a1fa0ce6fa8a0e814242b7c46c299c",
+  "sha256": "1gkq4r1573m6m57fp7x69k7kcpqchpcqfcz3792v0wxr22zhkwr3",
+  "fetcher": "github",
+  "repo": "EricCrosson/bury-successful-compilation",
+  "unstable": {
+   "version": [
+    20181106,
+    403
+   ],
+   "commit": "674644c844184605a1bb4f9487a60f7a780a6fe7",
+   "sha256": "13ilv4zbzwb5rz0gf69z8pvxazvwlmb5shkb055l42ksxslp49hh"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "commit": "064817b44a431476305099301311def0a2d9d543",
+   "sha256": "13ilv4zbzwb5rz0gf69z8pvxazvwlmb5shkb055l42ksxslp49hh"
+  }
+ },
+ {
+  "ename": "buster-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0nylkxy9qlj1h5v0pja4g315xcj5qzvkys4dsnzbh3xq4xzyj6xj",
+  "fetcher": "github",
+  "repo": "magnars/buster-mode",
+  "unstable": {
+   "version": [
+    20140928,
+    1213
+   ],
+   "commit": "de6958ef8369400922618b8d1e99abfa91b97ac5",
+   "sha256": "1viq7cb41r8klr8i38c5zjrhdnww31gh4j51xdgy4v2lc3z321zi"
+  }
+ },
+ {
+  "ename": "buster-snippets",
+  "commit": "67dabf33096113e68fe282309246094711751e1f",
+  "sha256": "0k36c2k7wwix10rgmjxipc77fkn9jahjyvl191af6w41wla47x4x",
+  "fetcher": "github",
+  "repo": "magnars/buster-snippets.el",
+  "unstable": {
+   "version": [
+    20151125,
+    1010
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "bb8769dae132659858e74d52f3f4e8790399423a",
+   "sha256": "11djqlw4qf3qs2rwiz7dn5q2zw5i8sykwdf4hg4awsgv8g0bbxn6"
+  }
+ },
+ {
+  "ename": "busybee-theme",
+  "commit": "36e2089b998d98575aa6dd3cc79fb7f6847f7aa3",
+  "sha256": "0w0z5x2fbnalv404av3mapfkqbfgyk81a1mzvngll8x0pirbyi10",
+  "fetcher": "github",
+  "repo": "mswift42/busybee-theme",
+  "unstable": {
+   "version": [
+    20170719,
+    928
+   ],
+   "commit": "66b2315b030582d0ebee605cf455d386d8c30fcd",
+   "sha256": "1cvj5m45f5ky3w86khh6crvdqrdjxg2z6b34jlm32qpgmn0s5g45"
+  }
+ },
+ {
+  "ename": "butler",
+  "commit": "c86e3f5083e59568afac69eed9aa8c1a0bd76e2e",
+  "sha256": "1jv74l9jy55qpwf5np9nlj6a1wqsm3xirm7wm89d1h2mbsfcr0mq",
+  "fetcher": "github",
+  "repo": "AshtonKem/Butler",
+  "unstable": {
+   "version": [
+    20150812,
+    8
+   ],
+   "deps": [
+    "deferred",
+    "json"
+   ],
+   "commit": "8ceb35737107572455cca9a61ff46b3ff78f1016",
+   "sha256": "0pp604r2gzzdpfajw920607pklwflk842difdyl4hy9w87fgc0jg"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    4
+   ],
+   "deps": [
+    "deferred",
+    "json"
+   ],
+   "commit": "0e91e0f01ac9c09422f076a096ee567ee138e7a4",
+   "sha256": "1pii9dw4skq7nr4na6qxqasl36av8cwjp71bf1fgppqpcd9z8skj"
+  }
+ },
+ {
+  "ename": "buttercup",
+  "commit": "d4b187cb5b3cc5b546bfa6b94b6792e6363242d1",
+  "sha256": "1grrrdk5pl9l1jvnwzl8g0102gipvxb5qn6k2nmv28jpl57v8dkb",
+  "fetcher": "github",
+  "repo": "jorgenschaefer/emacs-buttercup",
+  "unstable": {
+   "version": [
+    20200509,
+    2224
+   ],
+   "commit": "e71a40f1ffef4847df28c9d4ad7edc1e360ee52a",
+   "sha256": "0avmxbxxsazd14h5avsrqh2yyfnp8jan64sbp5ih2c9hm7xv5p1k"
+  },
+  "stable": {
+   "version": [
+    1,
+    21
+   ],
+   "commit": "0dbd474460e4c314bf8bc6e4d3dec647081538c9",
+   "sha256": "1ra5r56k539q6l98msxdn4vfd7k6jm00g8cdhs6hpwvb1blj8di2"
+  }
+ },
+ {
+  "ename": "buttercup-junit",
+  "commit": "f1030960afe994da338d78607233319b3f7f0c8b",
+  "sha256": "1v848vbwxqrw9sdsvjaggkspavmbwkmqshf321m4n8srvi51383w",
+  "fetcher": "git",
+  "url": "https://bitbucket.org/olanilsson/buttercup-junit",
+  "unstable": {
+   "version": [
+    20190802,
+    2258
+   ],
+   "deps": [
+    "buttercup"
+   ],
+   "commit": "3ae4f84813c9e04e03a6e703990ca998b62b6deb",
+   "sha256": "0ndxbh2jff6qryczawzbg580744h18z7grg82dpg7fv0rbxnyi3j"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "deps": [
+    "buttercup"
+   ],
+   "commit": "6bc28b6b0f36fb71b0915c9e45963c840c64a8df",
+   "sha256": "1rayxq1va7jpikfr37p8nq2pv339mhq7zqy082kzwvj5q6qfw88s"
+  }
+ },
+ {
+  "ename": "button-lock",
+  "commit": "83459421dd2eb3d60ec668c3d5bb38d99ee64aff",
+  "sha256": "1arrdmb3nm570hgs18y9sz3z9v0wlkr3vwa2zgfnc15lmf0y34mp",
+  "fetcher": "github",
+  "repo": "rolandwalker/button-lock",
+  "unstable": {
+   "version": [
+    20200309,
+    1323
+   ],
+   "commit": "9afe0f4d05910b0cccc94cb6d4d880119f3b0528",
+   "sha256": "1d893isxvchrqxw6iaknbv8l31rgalfc4hmppf0l87gxp5y9hxa2"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    2
+   ],
+   "commit": "cd0bf4a3c2f224d851e6ed8a54a6e80c129b225f",
+   "sha256": "1kqcc1d56jz107bswlzvdng6ny6qwp93yck2i2j921msn62qvbb2"
+  }
+ },
+ {
+  "ename": "buttons",
+  "commit": "3b8f9437268a51654b2bebdd024c35060b078962",
+  "sha256": "0pp7x4z6vzdfav5ljxsk1q6xby7gcxnkyl5fcbsd4r98ja4zmyq4",
+  "fetcher": "github",
+  "repo": "erjoalgo/emacs-buttons",
+  "unstable": {
+   "version": [
+    20190319,
+    41
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a14d0c21cc30d33b57481f535f2a838d65b2032f",
+   "sha256": "17b6km8qvkh43g276fmv552lffd2jq5x863fc7zm7xf2khwmpwbh"
+  }
+ },
+ {
+  "ename": "c-c-combo",
+  "commit": "da105eab0e7a5a3a1fc562973d99cbbbe9019b5f",
+  "sha256": "09rvh6n2hqls7qki5dc34s2hmcmlvdsbgzcxgglhcmrhwx5w4vxn",
+  "fetcher": "github",
+  "repo": "CestDiego/c-c-combo.el",
+  "unstable": {
+   "version": [
+    20151224,
+    255
+   ],
+   "commit": "a261a833499a7fdc29610863b3aafc74818770ba",
+   "sha256": "040mcq2cwzbrf96f9mghb4314cd8xwp7ki2ix9fxpmbwiy323ld5"
+  }
+ },
+ {
+  "ename": "c-eldoc",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "13grkww14w39y2x6mrbfa9nzljsnl5l7il8dnj6sjdyv0hz9x8vm",
+  "fetcher": "github",
+  "repo": "nflath/c-eldoc",
+  "unstable": {
+   "version": [
+    20181109,
+    439
+   ],
+   "commit": "e35c0e40f71c25804919f6c01fd27e95c2e2adb7",
+   "sha256": "0rwxlq8w6507lkvvj0krwvg4ai1wyj466nhns1f857kry7cssnzy"
+  }
+ },
+ {
+  "ename": "c0-mode",
+  "commit": "268115452d9c22a6f2627cec1eb122b47e85b88c",
+  "sha256": "0s3h4b3lpz4jsk222yyfdxh780dvykhaqgyv6r3ambz95vrmmpl4",
+  "fetcher": "github",
+  "repo": "catern/c0-mode",
+  "unstable": {
+   "version": [
+    20151110,
+    1852
+   ],
+   "commit": "c214093c36864d6208fcb9e6a72413ed17ed5d60",
+   "sha256": "10k90r4ckkkdjn9pqcbfyp6ynvrd5k0ngqcn5d0v1qvkn6jifxjx"
+  }
+ },
+ {
+  "ename": "cabledolphin",
+  "commit": "0c8bd2715aec4793abc37d6899adabd568955a08",
+  "sha256": "04slrx0vkcm66q59158limn0cpxn18ghlqyx7z8nrn7frrc03z03",
+  "fetcher": "github",
+  "repo": "legoscia/cabledolphin",
+  "unstable": {
+   "version": [
+    20160204,
+    938
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "fffc192cafa61558e924323d6da8166fe5f2a6f9",
+   "sha256": "1h395hvia7r76zlgr10qdr9q2159qyrs89znhkp2czikwm8kjiqk"
+  }
+ },
+ {
+  "ename": "cache",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "15pj7f4n0lk8qqsfafdj19iy0hz4xpfcf2fnby7ziq2dldyqrax9",
+  "fetcher": "github",
+  "repo": "nflath/cache",
+  "unstable": {
+   "version": [
+    20111019,
+    2300
+   ],
+   "commit": "7499586b6c8224df9f5c5bc4dec96b008258d580",
+   "sha256": "1hp6dk84vvgkmj5lzghvqlpq3axwzgx9c7gly2yx6497fgf9jlby"
+  }
+ },
+ {
+  "ename": "cacoo",
+  "commit": "2bd55f5c29876c2483001cd9deaca68cab5054b9",
+  "sha256": "0kri4vi6dpsf0zk24psm16f3aa27cq5b54ga7zygmr02csq24a6z",
+  "fetcher": "github",
+  "repo": "kiwanami/emacs-cacoo",
+  "unstable": {
+   "version": [
+    20120319,
+    2359
+   ],
+   "deps": [
+    "concurrent"
+   ],
+   "commit": "c9fa04fbe97639b24698709530361c2bb5f3273c",
+   "sha256": "07kzhyqr8ycjvkknijqhsfr26zd5jc8wxm9sl8bp6pzn4jbs1dmx"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    2
+   ],
+   "deps": [
+    "concurrent"
+   ],
+   "commit": "c2e6a8830144810cd4e51de3646cb8200bcebbc6",
+   "sha256": "1k2hmc87ifww95k3m8ksiswkk2z0y8grssba7381g8dnlp6jgprx"
+  }
+ },
+ {
+  "ename": "caddyfile-mode",
+  "commit": "ec771222056dcb6c67e133cd6aa6b4e4d03ac264",
+  "sha256": "12d57xcpp78lmcr95nfp0r9g7lkw8kfxf9c3rc7g53kh5xaaj4i2",
+  "fetcher": "github",
+  "repo": "Schnouki/caddyfile-mode",
+  "unstable": {
+   "version": [
+    20181204,
+    858
+   ],
+   "deps": [
+    "loop"
+   ],
+   "commit": "976ad0664c3f44bfa11cb9b8787ddfb094d0a666",
+   "sha256": "1k9nkqgnighwj0jj4yl8v2vncy5cnlayx3vw4884hf9amkbv6bg1"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "b0371063adc18d3cbd6dd673ea4fe39d27825d1b",
+   "sha256": "1w0jfh8z9q2b0av66gckmb9d9dvx0wqmjf54avgynlmh3a7gv7lz"
+  }
+ },
+ {
+  "ename": "cake-inflector",
+  "commit": "77c46238b632047160d6dfac9b257f57b0c4283b",
+  "sha256": "04mrqcm1igb638skaq2b3nr5yzxnck2vwhln61rnh7lkfxq7wbwf",
+  "fetcher": "github",
+  "repo": "k1LoW/emacs-cake-inflector",
+  "unstable": {
+   "version": [
+    20140415,
+    858
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "a1d338ec4840b1b1bc14f7f9298c07e2c1d2d8fc",
+   "sha256": "0m8ss9aky24f5i6b8fyy8mhv9ygj158crjyddnj9xx73vsjf96bs"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "40bf11890842ba305954528694e1c39a8b73737b",
+   "sha256": "1w7yq35gzzwyf480d8gc5r6jbnawg09l6663q068ir6zr9pp4far"
+  }
+ },
+ {
+  "ename": "cakecrumbs",
+  "commit": "c970907affeb4a21fa1b7c350edf171dbdcd8de5",
+  "sha256": "1s5j8w0y47qpdq4f34l7hmdhxp560wg1lgzqz6p3p3lg1l89sv47",
+  "fetcher": "github",
+  "repo": "kuanyui/cakecrumbs.el",
+  "unstable": {
+   "version": [
+    20180929,
+    139
+   ],
+   "commit": "cf8c1df885eee004602f73c4f841301e200e5850",
+   "sha256": "0s5ga39dpn9rjxjk5inkylqh56w3qgaq2wmwwgv5gsydqdyil31f"
+  }
+ },
+ {
+  "ename": "cal-china-x",
+  "commit": "c1098d34012fa72f8c8c30d5f0f495fdbe1d3d65",
+  "sha256": "06mh2p14m2axci8vy1hr7jpy53jj215z0djyn8h7zpr0k62ajhka",
+  "fetcher": "github",
+  "repo": "xwl/cal-china-x",
+  "unstable": {
+   "version": [
+    20190518,
+    1057
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "177f60e011606126f23c8ffed69458439f1c12e0",
+   "sha256": "1a0qdiihyc5qwz5j68hnpfp0fx3qbzgvzflrbfv072r7ldxzfi57"
+  }
+ },
+ {
+  "ename": "calc-at-point",
+  "commit": "9ab725281ae66c1b97875518614a0f6312ace3a8",
+  "sha256": "1yzb2gmmdrcckgq1kd1gcbnbqf65aia7nx4j2lgrh2n9dlp40d03",
+  "fetcher": "github",
+  "repo": "walseb/calc-at-point",
+  "unstable": {
+   "version": [
+    20200406,
+    1618
+   ],
+   "deps": [
+    "dash",
+    "dash-functional"
+   ],
+   "commit": "11e40c8db9493ada71964b73069c6db529016492",
+   "sha256": "06dmm6b2xflkwgk5mysi3ycbi6yz5n0sci191a15nnzxg7vh1fbf"
+  }
+ },
+ {
+  "ename": "calendar-norway",
+  "commit": "c5d01230027d5cec9da2545a9ce9270a611f6567",
+  "sha256": "1i23ks0bnq62bvn3szvqf0ikcam4s92yvr998mkjxhdhc94zd19c",
+  "fetcher": "github",
+  "repo": "unhammer/calendar-norway.el",
+  "unstable": {
+   "version": [
+    20180906,
+    1502
+   ],
+   "commit": "8d1fda8268caa74ba5e712c7675ed3c34e46e2d4",
+   "sha256": "011c8pz1g805a7c3djai39yasd2idfp4c2dcrvf7kbls27ayrl6d"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    4
+   ],
+   "commit": "8d1fda8268caa74ba5e712c7675ed3c34e46e2d4",
+   "sha256": "011c8pz1g805a7c3djai39yasd2idfp4c2dcrvf7kbls27ayrl6d"
+  }
+ },
+ {
+  "ename": "calfw",
+  "commit": "cc64274abdc7c8fb904b43d2d036aac98e738131",
+  "sha256": "0am1nafc16zax8082gjlz0pi85lryjhrx0v80nzgr23iybj5mfx4",
+  "fetcher": "github",
+  "repo": "kiwanami/emacs-calfw",
+  "unstable": {
+   "version": [
+    20180118,
+    45
+   ],
+   "commit": "03abce97620a4a7f7ec5f911e669da9031ab9088",
+   "sha256": "0wiggihw9ackjdssqgp2cqccd3sil13n3pfn33d3r320fmxfjbch"
+  },
+  "stable": {
+   "version": [
+    1,
+    6
+   ],
+   "commit": "c538d3746449b4f0e16b16aad3073d4f7379d805",
+   "sha256": "0r42cagvmvvib76kd15nd9ix55ys6i549vxnls4z16s864695zpa"
+  }
+ },
+ {
+  "ename": "calfw-cal",
+  "commit": "cc64274abdc7c8fb904b43d2d036aac98e738131",
+  "sha256": "1wylkd7jl1ifq56jj04l5b9wfrjkhwncxzrjgnbgg1cl2klf6v4m",
+  "fetcher": "github",
+  "repo": "kiwanami/emacs-calfw",
+  "unstable": {
+   "version": [
+    20170320,
+    1206
+   ],
+   "commit": "03abce97620a4a7f7ec5f911e669da9031ab9088",
+   "sha256": "0wiggihw9ackjdssqgp2cqccd3sil13n3pfn33d3r320fmxfjbch"
+  },
+  "stable": {
+   "version": [
+    1,
+    6
+   ],
+   "commit": "c538d3746449b4f0e16b16aad3073d4f7379d805",
+   "sha256": "0r42cagvmvvib76kd15nd9ix55ys6i549vxnls4z16s864695zpa"
+  }
+ },
+ {
+  "ename": "calfw-gcal",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0pzjs8kvf9vxdzziq7zd59vniq21k4a6yygpv4fz2by3s3bvnrid",
+  "fetcher": "github",
+  "repo": "myuhe/calfw-gcal.el",
+  "unstable": {
+   "version": [
+    20120111,
+    1000
+   ],
+   "commit": "14aab20687d6cc9e6c5ddb9e11984c4e14c3d870",
+   "sha256": "14n5rci4bkbl7037xvkd69gfxnjlgvd2j1xzciqcgz92f06ir3xi"
+  }
+ },
+ {
+  "ename": "calfw-howm",
+  "commit": "cc64274abdc7c8fb904b43d2d036aac98e738131",
+  "sha256": "08cv16cq211sy2v1i0gk7d81f0gyywv0i9szmamnrbjif3rrv2m0",
+  "fetcher": "github",
+  "repo": "kiwanami/emacs-calfw",
+  "unstable": {
+   "version": [
+    20170704,
+    4
+   ],
+   "commit": "03abce97620a4a7f7ec5f911e669da9031ab9088",
+   "sha256": "0wiggihw9ackjdssqgp2cqccd3sil13n3pfn33d3r320fmxfjbch"
+  },
+  "stable": {
+   "version": [
+    1,
+    6
+   ],
+   "commit": "c538d3746449b4f0e16b16aad3073d4f7379d805",
+   "sha256": "0r42cagvmvvib76kd15nd9ix55ys6i549vxnls4z16s864695zpa"
+  }
+ },
+ {
+  "ename": "calfw-ical",
+  "commit": "cc64274abdc7c8fb904b43d2d036aac98e738131",
+  "sha256": "1bh9ahwp9b5knjxph79kl19fgs48x3w7dga299l0xvbxq2jhs95q",
+  "fetcher": "github",
+  "repo": "kiwanami/emacs-calfw",
+  "unstable": {
+   "version": [
+    20150703,
+    819
+   ],
+   "commit": "03abce97620a4a7f7ec5f911e669da9031ab9088",
+   "sha256": "0wiggihw9ackjdssqgp2cqccd3sil13n3pfn33d3r320fmxfjbch"
+  },
+  "stable": {
+   "version": [
+    1,
+    6
+   ],
+   "commit": "c538d3746449b4f0e16b16aad3073d4f7379d805",
+   "sha256": "0r42cagvmvvib76kd15nd9ix55ys6i549vxnls4z16s864695zpa"
+  }
+ },
+ {
+  "ename": "calfw-org",
+  "commit": "cc64274abdc7c8fb904b43d2d036aac98e738131",
+  "sha256": "1cfpjh08djz3k067w3580yb15p1csks3gzch9c4cbrbcjvg8inh5",
+  "fetcher": "github",
+  "repo": "kiwanami/emacs-calfw",
+  "unstable": {
+   "version": [
+    20160303,
+    258
+   ],
+   "commit": "03abce97620a4a7f7ec5f911e669da9031ab9088",
+   "sha256": "0wiggihw9ackjdssqgp2cqccd3sil13n3pfn33d3r320fmxfjbch"
+  },
+  "stable": {
+   "version": [
+    1,
+    6
+   ],
+   "commit": "c538d3746449b4f0e16b16aad3073d4f7379d805",
+   "sha256": "0r42cagvmvvib76kd15nd9ix55ys6i549vxnls4z16s864695zpa"
+  }
+ },
+ {
+  "ename": "call-graph",
+  "commit": "a6acf099e2510c82b4b03e2f35051afc3d28af45",
+  "sha256": "0cklr79gqqrb94jq8aq65wqriamay78vv9sd3jrvp86ixl3ig5xc",
+  "fetcher": "github",
+  "repo": "beacoder/call-graph",
+  "unstable": {
+   "version": [
+    20200402,
+    910
+   ],
+   "deps": [
+    "anaconda-mode",
+    "cl-lib",
+    "hierarchy",
+    "ivy",
+    "tree-mode"
+   ],
+   "commit": "2f47dcb65ed8dc5393df846b4175a4872e254c05",
+   "sha256": "0xn8xk2x3ih22vlfjvnl6853ddpk57q70z9b0vwhjvwmi4idz7xp"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "hierarchy",
+    "ivy",
+    "tree-mode"
+   ],
+   "commit": "0bbe292b1b9c7ba1d8a65ed5e475f6a53f5f9f27",
+   "sha256": "0kckjs7yg8d04nir5z3f00k05272kgma98794g0ycgfn1vrck0h0"
+  }
+ },
+ {
+  "ename": "calmer-forest-theme",
+  "commit": "edb51491e575ef64a705cd0b972de07993f185cf",
+  "sha256": "0riz5n8fzvxdnzgg650xqc2zwc4xvhwjlrrzls5h0pl5adaxz96p",
+  "fetcher": "github",
+  "repo": "caldwell/calmer-forest-theme",
+  "unstable": {
+   "version": [
+    20130926,
+    510
+   ],
+   "commit": "87ba7bae389084d13fe3bc34e0c923017eda6ba0",
+   "sha256": "0n6y4z3qg04qnlsrjysf8ldxl2f2bk7n8crijydwabyy672qxd9h"
+  }
+ },
+ {
+  "ename": "camcorder",
+  "commit": "1e6aed365c42987d64d0cd9a8a6178339b1b39e8",
+  "sha256": "1kbnpz3kn8ycpy8nlp8bsnnd1k1h7m02h7w5f7raw97sk4cnpvbi",
+  "fetcher": "github",
+  "repo": "Malabarba/camcorder.el",
+  "unstable": {
+   "version": [
+    20190317,
+    2138
+   ],
+   "deps": [
+    "cl-lib",
+    "names"
+   ],
+   "commit": "b11ca61491a27681bb3131b72b51c105fd996bed",
+   "sha256": "11p42cmk9sj2ilpx6nnlbzff85qi0m27wk49da2ipal28wcx2452"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "names"
+   ],
+   "commit": "b11ca61491a27681bb3131b72b51c105fd996bed",
+   "sha256": "11p42cmk9sj2ilpx6nnlbzff85qi0m27wk49da2ipal28wcx2452"
+  }
+ },
+ {
+  "ename": "caml",
+  "commit": "42667ee0d64bce19ad9081a4fae163a9655641d4",
+  "sha256": "0hpxvvgq9nxcbxq9dm1sia3ph2h7p07pp48jz77pr786lrw67la0",
+  "fetcher": "github",
+  "repo": "ocaml/caml-mode",
+  "unstable": {
+   "version": [
+    20190413,
+    1205
+   ],
+   "commit": "38ebde12d3d529e6ef8078967997d32226e69e82",
+   "sha256": "13gz0s7bnjsnab7wn8mk0zva7756hf68izqp9agd8vqnm0c75nlp"
+  },
+  "stable": {
+   "version": [
+    4,
+    7,
+    1
+   ],
+   "commit": "9803cf37ac52bbfa5130fde0f228dc51c4590c2d",
+   "error": [
+    "exited abnormally with code 1\n",
+    "",
+    "error: unable to download 'https://github.com/ocaml/caml-mode/archive/9803cf37ac52bbfa5130fde0f228dc51c4590c2d.tar.gz': HTTP error 404\n"
+   ]
+  }
+ },
+ {
+  "ename": "cangjie",
+  "commit": "ed79fc972f7fe69d7bad5d1cdde3a276885a9fe8",
+  "sha256": "0gdp6dlkzkkd8r3cmwakwxlxsbysb351n1lr9sq4d60gbbskklln",
+  "fetcher": "github",
+  "repo": "kisaragi-hiu/cangjie.el",
+  "unstable": {
+   "version": [
+    20190929,
+    1221
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "0a703f4d1162259d77bfb3f862d13c1b1f11a711",
+   "sha256": "19f7xzc1204zdv8bbd5vfzxqrinhk8m9mw911dc77jab2in22348"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    4
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "b34a28dd06bd95a16b655f1917227925975314bc",
+   "sha256": "0xz62fivll6yv1x94f7f5m07zg7383llyz6wa1n5q1ysix2p20j1"
+  }
+ },
+ {
+  "ename": "capture",
+  "commit": "bdfe43be6c5f77845e82745534a1b1a9eb190466",
+  "sha256": "1hxrvyq8my5886q7wj5w3mhyja7d6cf19gyclap492ci7kmrkdk2",
+  "fetcher": "github",
+  "repo": "pashinin/capture.el",
+  "unstable": {
+   "version": [
+    20130828,
+    1644
+   ],
+   "commit": "1bb26060311da76767f70096218313fc93b0c806",
+   "sha256": "08cp45snhyir5w8gyp6xws1q7c54pz06q099l0m3zmwn9277g68z"
+  }
+ },
+ {
+  "ename": "carbon-now-sh",
+  "commit": "b79bb8af3c149b2d131813c5308141e0e06adccf",
+  "sha256": "1casq1b71rlwanayixs6rrn96jn1w7bzkq77lg0ini5hrfd3w18p",
+  "fetcher": "github",
+  "repo": "veelenga/carbon-now-sh.el",
+  "unstable": {
+   "version": [
+    20180331,
+    1735
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "71dee6bc4f2a2cb02b9b7b5e643c4c92b880e6a4",
+   "sha256": "1aij3590c7fqga7sla5f4hibyq7m77kxfyiiviv6xrdzwrd98w37"
+  }
+ },
+ {
+  "ename": "cargo",
+  "commit": "e997b356b009b3d2ab467fe49b79d728a8cfe24b",
+  "sha256": "06zq657cxfk5l4867qqsvhskcqc9wswyl030wj27a43idj8n41jx",
+  "fetcher": "github",
+  "repo": "kwrooijen/cargo.el",
+  "unstable": {
+   "version": [
+    20191224,
+    47
+   ],
+   "deps": [
+    "markdown-mode",
+    "rust-mode"
+   ],
+   "commit": "dc9ff35c2861d524ac4d65020c5320eec71acacf",
+   "sha256": "0nng284i5jygsnbda6ycrm2wv8rw47z8ilcs6r1z0w1gv3p012fd"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "deps": [
+    "rust-mode"
+   ],
+   "commit": "b0487f95a7de7a1d6f03cdd05220f633977d65a2",
+   "sha256": "0r9v7q7hkdw2q3iifyrb6n9jrssz2rcv2xcc7n1nmg1v40av3ijd"
+  }
+ },
+ {
+  "ename": "caroline-theme",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "178nxcz73lmvnjcr6x6as25d8m5knc21jpr66b4rg0rmlmhchkal",
+  "fetcher": "github",
+  "repo": "xjackk/caroline-theme",
+  "unstable": {
+   "version": [
+    20160318,
+    520
+   ],
+   "commit": "222fd483db304509f9e422dc82883d808e023ceb",
+   "sha256": "055w1spba0q9rqqg4rjds0iakr9d8xg66959xahxq8268mq5446n"
+  }
+ },
+ {
+  "ename": "caseformat",
+  "commit": "ba158fbeebcda6b6122b18c97ab8042b1c0a0bc0",
+  "sha256": "1qwyr74jbx4jpfcw8sccg47q1vdg094rr06m111gsz2yaj9m0gfk",
+  "fetcher": "github",
+  "repo": "HKey/caseformat",
+  "unstable": {
+   "version": [
+    20160115,
+    1615
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "s"
+   ],
+   "commit": "92a31f6a7cae0b4e2af106cd6f2b0abe6c2d8921",
+   "sha256": "1cp9i69npvyn72fqv0w8q1hlkcawkhbah4jblc341ycxwxb48mkl"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "s"
+   ],
+   "commit": "72707c9f0f0819b4e2aa45876432a293aa07f814",
+   "sha256": "0mg49rpz362ipn5qzqhyfs3d6fpb51rfa73kna3gxdw0wxq2sa7g"
+  }
+ },
+ {
+  "ename": "cask",
+  "commit": "69e996727e40fa28cb5356f664ffdc3d5aca21b2",
+  "sha256": "0c1fxikcba3xcd3xpspnjhaahyl5n3r91c2b40xvadyjarkhxhgc",
+  "fetcher": "github",
+  "repo": "cask/cask",
+  "unstable": {
+   "version": [
+    20191004,
+    1155
+   ],
+   "deps": [
+    "ansi",
+    "cl-lib",
+    "dash",
+    "epl",
+    "f",
+    "package-build",
+    "s",
+    "shut-up"
+   ],
+   "commit": "a4715f7c6c9797639c3636399cb21c2b0332b354",
+   "sha256": "1zjz3mp8hgnsfyapq7qdfysj31g9f6syvrik2w057r3w3bxp8vkf"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    4
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "epl",
+    "f",
+    "package-build",
+    "s",
+    "shut-up"
+   ],
+   "commit": "ba5f6eb78178deb954ab9ac02e0e370315097ebe",
+   "sha256": "1p37lq8xpyq0rc7phxgsw3b73h8vf9rkpa5959rb5k46w6ps9686"
+  }
+ },
+ {
+  "ename": "cask-mode",
+  "commit": "2d8bc1afaf69b4f29ba1bb0243c25574bc1197cc",
+  "sha256": "0fs9zyihipr3klnh3w22h43qz0wnxplm62x4kx7pm1chq9bc9kz6",
+  "fetcher": "github",
+  "repo": "Wilfred/cask-mode",
+  "unstable": {
+   "version": [
+    20160410,
+    1449
+   ],
+   "commit": "7c6719d3bb4fe552958634bd5a11abc56681f3a7",
+   "sha256": "0gywc2mzdzq3ny0jjffa3151vi7zb9i8ddy5d63x4yhicf5sxlh1"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "5203b1beac4dd2ee07a6e993bc86719f5f35dbbf",
+   "sha256": "09y4cr32i2cw06lnq698lajxmqyzq2ah426f4dm176xfbrim89d5"
+  }
+ },
+ {
+  "ename": "cask-package-toolset",
+  "commit": "ed71e45389626e700b93b29d5e2659b6706274d8",
+  "sha256": "13ix093c0a58rjqj7zfp3914xj3hvj276gb2d8zhvrx9vvs1345g",
+  "fetcher": "github",
+  "repo": "AdrieanKhisbe/cask-package-toolset.el",
+  "unstable": {
+   "version": [
+    20170921,
+    2256
+   ],
+   "deps": [
+    "ansi",
+    "cl-lib",
+    "commander",
+    "dash",
+    "f",
+    "s",
+    "shut-up"
+   ],
+   "commit": "2c74cd827e88c7f8360581a841e45f0b794510e7",
+   "sha256": "1hk5q6p1j7cqg5srr3v21xfyy7aas4hfj1a66h21c2xvfjra3hxw"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    2
+   ],
+   "deps": [
+    "ansi",
+    "cl-lib",
+    "commander",
+    "dash",
+    "f",
+    "s",
+    "shut-up"
+   ],
+   "commit": "2c74cd827e88c7f8360581a841e45f0b794510e7",
+   "sha256": "1hk5q6p1j7cqg5srr3v21xfyy7aas4hfj1a66h21c2xvfjra3hxw"
+  }
+ },
+ {
+  "ename": "caskxy",
+  "commit": "1d61aea505e4913879f68081497e85542e9fd786",
+  "sha256": "0x4s3c8m75zxsvqpgfc5xwll0489zzdnngmnq048z9gkgcd7pd2s",
+  "fetcher": "github",
+  "repo": "aki2o/caskxy",
+  "unstable": {
+   "version": [
+    20140513,
+    1539
+   ],
+   "deps": [
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "dc18dcab7ed526070ab76de071c9c5272e6ac40e",
+   "sha256": "15sq5vrkhb7c5j6ny6wy4bkyl5pggch4l7zw46an29rzni3pffr3"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    5
+   ],
+   "deps": [
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "279f3ab79bd77fe69cb3148a79896b9bf118a9b3",
+   "sha256": "1j1lw5zifp7q1ykm6si0nzxfp7n3z2lzla2njkkxmc2s6m7w4x1a"
+  }
+ },
+ {
+  "ename": "catmacs",
+  "commit": "e62e45ea234a574ed602f27c3c6bc240bcd4fa43",
+  "sha256": "0ym1szmq9ib75yiyy5jw647fcs7gg0d5dkskqc293pg81qf3im50",
+  "fetcher": "git",
+  "url": "https://bitbucket.org/pymaximus/catmacs",
+  "unstable": {
+   "version": [
+    20170826,
+    1157
+   ],
+   "commit": "65d3e0563abe6ff9577202cf2278074d4130fbdd",
+   "sha256": "0954qck9j417c17niy28ccrhmsbjyh95z4dbqc5j4mib06j37587"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "c6e8277bd2aab3f5fbf10d419111110f3b33564f",
+   "sha256": "0kdlmmqgpgmhbbvafywllqdwkkd5a41rf8zhfmxhs3ydza86hmlg"
+  }
+ },
+ {
+  "ename": "cbm",
+  "commit": "f28dbc97dc23cdb0b4c74f8805775c787635871e",
+  "sha256": "02ch0gdw610c8dfxxjxs7ijsc9lzbhklj7hqgwfwksnyc36zcjmn",
+  "fetcher": "github",
+  "repo": "akermu/cbm.el",
+  "unstable": {
+   "version": [
+    20171116,
+    1240
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "5b41c936ba9f6d170309a85ffebc9939c1050b31",
+   "sha256": "091ln3d0jhdgahbwfdm1042b19886n3kwipw5gk8d0jnq5vwrkws"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "5b41c936ba9f6d170309a85ffebc9939c1050b31",
+   "sha256": "091ln3d0jhdgahbwfdm1042b19886n3kwipw5gk8d0jnq5vwrkws"
+  }
+ },
+ {
+  "ename": "cc-cedict",
+  "commit": "368aaef30c5c4f38d9d2dd09f966e3dcc2463e11",
+  "sha256": "1h8i9nfd66ayka5vkm1lp5crr4nm1bzi4sak0xid85fzgmx364vr",
+  "fetcher": "github",
+  "repo": "xuchunyang/cc-cedict.el",
+  "unstable": {
+   "version": [
+    20181217,
+    1112
+   ],
+   "commit": "0dd9bcd5337c8f16fc9c8d27daba4a9362695c99",
+   "sha256": "16qp0r413lqrym2xh2vpx0hg295g8mr428fg6q07w1hnzz10dpc2"
+  }
+ },
+ {
+  "ename": "ccc",
+  "commit": "7375cab750a67ede1a021b6a4371b678a7b991b0",
+  "sha256": "0fckhmz4svcg059v4acbn13yf3ijs09fxmq1axc1b9bm3xxig2cq",
+  "fetcher": "github",
+  "repo": "skk-dev/ddskk",
+  "unstable": {
+   "version": [
+    20200314,
+    1557
+   ],
+   "commit": "11d91b4cce988e15d7c5fc4345535c9d7a92d53b",
+   "sha256": "19fgk6m951q9swr958337a3jk9b4xgvswkc73al6wsdkigygmhji"
+  }
+ },
+ {
+  "ename": "ccls",
+  "commit": "be27a4022d58860917a659fce2b7d7791fbea4e2",
+  "sha256": "0kiv0n6pdpa75wjcimpwccwbjbhga4gjnphjrkpj4qz5qv42rbnm",
+  "fetcher": "github",
+  "repo": "MaskRay/emacs-ccls",
+  "unstable": {
+   "version": [
+    20200327,
+    1915
+   ],
+   "deps": [
+    "dash",
+    "lsp-mode",
+    "projectile"
+   ],
+   "commit": "17ec7bb4cf362b7268c24e070e841f0dfac1c919",
+   "sha256": "08pndwbw6wcpysnvhkqfvrw91ac0np31swiq0yv3dr2x0sq70cp5"
+  }
+ },
+ {
+  "ename": "cd-compile",
+  "commit": "bca4c9e8b071497ac50a85741bf46be6eaae2135",
+  "sha256": "1a24rv1jbb883vwhjkw6qxv3h3qy039iqkhkx3jkq1ydidr9f0hv",
+  "fetcher": "github",
+  "repo": "jamienicol/emacs-cd-compile",
+  "unstable": {
+   "version": [
+    20141108,
+    1957
+   ],
+   "commit": "10284ccae86afda4a37b09ba90acd1e2efedec9f",
+   "sha256": "1a93cim1w96aaj81clhjv25r7v9bwqm9a818mn8lk4aj1bmhgc4c"
+  }
+ },
+ {
+  "ename": "cdb",
+  "commit": "b48fe069ecd95ea0f9768ecad969e0838344e45d",
+  "sha256": "1gx34062h25gqsl3j1fjlklha19snvmfaw068q6bv6x9r92niqnf",
+  "fetcher": "github",
+  "repo": "skk-dev/ddskk",
+  "unstable": {
+   "version": [
+    20200314,
+    1557
+   ],
+   "commit": "11d91b4cce988e15d7c5fc4345535c9d7a92d53b",
+   "sha256": "19fgk6m951q9swr958337a3jk9b4xgvswkc73al6wsdkigygmhji"
+  }
+ },
+ {
+  "ename": "cdlatex",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "021gj0jw93r8gk0cacw1ldfibpwr6fpkcrnign7b4nqqnb3135k9",
+  "fetcher": "github",
+  "repo": "cdominik/cdlatex",
+  "unstable": {
+   "version": [
+    20200506,
+    739
+   ],
+   "commit": "480387b39f6ddd9cd2a9511ecee064ad8e1dd324",
+   "sha256": "1y5c2ycvmij7klvc9rhg265ha23xlh2hi4q5w50xljzh2mmlp3fb"
+  },
+  "stable": {
+   "version": [
+    4,
+    7
+   ],
+   "commit": "b7183c2200392b6d85fca69390f4a65fac7a7b19",
+   "sha256": "1jj9vmhc4s3ych08bjm1c2xwi81z1p20rj7bvxrgvb5aga2ghi9d"
+  }
+ },
+ {
+  "ename": "cdnjs",
+  "commit": "66e4ce4e2c7e4aaac9dc0ce476c4759b000ff5d6",
+  "sha256": "1clm86n643z1prxrlxlg59jg43l9wwm34x5d88bj6yvix8g6wkb7",
+  "fetcher": "github",
+  "repo": "yasuyk/cdnjs.el",
+  "unstable": {
+   "version": [
+    20161031,
+    1522
+   ],
+   "deps": [
+    "dash",
+    "deferred",
+    "f",
+    "pkg-info"
+   ],
+   "commit": "ce19880d3ec3d81e6c665d0b1dfea99cc7a3f908",
+   "sha256": "02j45ngddx7n5gvy42r8y3s22bmxlnvg2pqjfh0li8m599fnd11h"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "deps": [
+    "dash",
+    "deferred",
+    "f",
+    "pkg-info"
+   ],
+   "commit": "ce19880d3ec3d81e6c665d0b1dfea99cc7a3f908",
+   "sha256": "02j45ngddx7n5gvy42r8y3s22bmxlnvg2pqjfh0li8m599fnd11h"
+  }
+ },
+ {
+  "ename": "cedit",
+  "commit": "0de4796054f0c616849904bacf05c74c7d2cdcf6",
+  "sha256": "169sy7a1bgczwfxkkzjiggb7vdjxhrx7i3a39g6zv9f1zs6byk6m",
+  "fetcher": "github",
+  "repo": "zk-phi/cedit",
+  "unstable": {
+   "version": [
+    20141231,
+    1614
+   ],
+   "commit": "0878d851b6307c162bfbddd2bb02789e5e27bc2c",
+   "sha256": "1f8gdj3p54q3410c66716y3l7i7nnkmq6hqz0dg1a1sc6jwdij3v"
+  }
+ },
+ {
+  "ename": "celery",
+  "commit": "4b896b2b89d990a7ce2f4bf4ce0aee0d126f3e55",
+  "sha256": "0m3hmvp6xz2m7z1kbb0ii0j3c95zi19652gfixq5a5x23kz8y59h",
+  "fetcher": "github",
+  "repo": "ardumont/emacs-celery",
+  "unstable": {
+   "version": [
+    20170225,
+    924
+   ],
+   "deps": [
+    "dash-functional",
+    "deferred",
+    "s"
+   ],
+   "commit": "51197d74f5eaa8ae09144af7663a2f4277f07d16",
+   "sha256": "1845qz0ih30z1jgm1zi11q4gvw9gy6w3vyj2mc1aiv5r170qj8as"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "deps": [
+    "dash-functional",
+    "deferred",
+    "s"
+   ],
+   "commit": "163ebede3f6a7f59202ff319675b0873dd1de365",
+   "sha256": "07h5g905i1jglsryl0dnqxz8yya5kkyjjggzbk4nl3rcj41lyas7"
+  }
+ },
+ {
+  "ename": "celestial-mode-line",
+  "commit": "cdb1d057f76166ba32d5028f18eec7d09857f990",
+  "sha256": "1s6vn71mxfvvafjs25j12z1gnmxnkvnw716zy5ifx1bs8s5960kq",
+  "fetcher": "github",
+  "repo": "ecraven/celestial-mode-line",
+  "unstable": {
+   "version": [
+    20180518,
+    822
+   ],
+   "commit": "3f5794aca99b977f1592cf1ab4516ae7922196a1",
+   "sha256": "01kdpfjnfnjll40n1zdp641gw8pk2vnv93a59lyx1mw1f30yvfr6"
+  }
+ },
+ {
+  "ename": "centaur-tabs",
+  "commit": "6685b1fa14f8b0b2ca1eacb426ca6856ada72190",
+  "sha256": "1dxngm93k6jaf6nvr8wwyh5y1yxlki8y0b8ls02x7lb7nfgdgj7n",
+  "fetcher": "github",
+  "repo": "ema2159/centaur-tabs",
+  "unstable": {
+   "version": [
+    20200511,
+    1242
+   ],
+   "deps": [
+    "cl-lib",
+    "powerline"
+   ],
+   "commit": "57afd81c7fd6449239af7adcda4cd2192976dbb8",
+   "sha256": "1sa4anfqvhidn7kxqnchk0d8kc2v0l3cxbf0bnwwx7nk04gjvshg"
+  },
+  "stable": {
+   "version": [
+    3,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "powerline"
+   ],
+   "commit": "af50f87d40697a4e5d6097e2042111fc4a930b40",
+   "sha256": "1c3szcv87gjlm2bndasrx9q46x699cxapmhfs2zs08yk6gc1yfji"
+  }
+ },
+ {
+  "ename": "centered-cursor-mode",
+  "commit": "9a7a28caba49a20413dec3c3d0cc9c36b859834d",
+  "sha256": "1yy50p3xprkqiak3vfly5s5kpbbdmxmw6fhgz13fw97553hr3w5x",
+  "fetcher": "github",
+  "repo": "andre-r/centered-cursor-mode.el",
+  "unstable": {
+   "version": [
+    20200507,
+    1529
+   ],
+   "commit": "f376bdb882047347345d5f0e3ec3fcef63ee93ba",
+   "sha256": "1dnc0vjy6z6kdh8h8bmwi5vgyvy2z4405qpxb20d0dbly8qz9fns"
+  }
+ },
+ {
+  "ename": "centered-window",
+  "commit": "58bfd795d4d620f0c83384fb03008e129c71dc09",
+  "sha256": "0w6na4ld79bpmkiv6glbrphc32v6g2rcrpi28259i94jhgy1kxqk",
+  "fetcher": "github",
+  "repo": "anler/centered-window-mode",
+  "unstable": {
+   "version": [
+    20200426,
+    1053
+   ],
+   "commit": "f50859941ab5c7cbeaee410f2d38716252b552ac",
+   "sha256": "1l7m3gfn7j1mxs0rj1pm5avknplw2f34dd2k24n5rldfm41pf8i8"
+  }
+ },
+ {
+  "ename": "centimacro",
+  "commit": "de048d6e5d11a42d92de1938fd74fd37146a5a89",
+  "sha256": "1qbyfi6s4hdp5sv394w3sib8g2kx06i06q8gh6hdv5pis5kq9fx6",
+  "fetcher": "github",
+  "repo": "abo-abo/centimacro",
+  "unstable": {
+   "version": [
+    20140306,
+    1427
+   ],
+   "commit": "1b97a9b558ed9c49d5da1bfbf29b2506575c2742",
+   "sha256": "0zqrpaq9c3lm12jxnvysh8f3m3193k22zaj0ycscdqd1jpq4wcgh"
+  }
+ },
+ {
+  "ename": "cerbere",
+  "commit": "4145e270a2113f30f8bb4d0f6c335f1c76f77b1c",
+  "sha256": "1g3svmh5dlh5mvyag3hmiy90dfkk6f7ppd9qpwckxqyll9vl7r06",
+  "fetcher": "github",
+  "repo": "nlamirault/cerbere",
+  "unstable": {
+   "version": [
+    20181113,
+    1641
+   ],
+   "deps": [
+    "pkg-info"
+   ],
+   "commit": "c667c165d9c1657f13d2d46f09ba21b61f9402cc",
+   "sha256": "0kqwcy96fy9mdhwsxh1zj2zn5qr7wvss22qq2ij2kpyh3jh8gxya"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "f",
+    "go-mode",
+    "pkg-info",
+    "s"
+   ],
+   "commit": "11de1e7ec5126083ae697f5a9993facdb9895f9d",
+   "sha256": "08hqgsjvs62l1cfzshbpj80xd8365qmx2b5r5jq20d5cj68s36wl"
+  }
+ },
+ {
+  "ename": "ceylon-mode",
+  "commit": "09cd1a2ccf33b209a470780a66d54e1b1d597a86",
+  "sha256": "0dgqmmb8qmvzn557h0fw1mx4y0p96870l8f8glizkk3fifg7wgq4",
+  "fetcher": "github",
+  "repo": "lucaswerkmeister/ceylon-mode",
+  "unstable": {
+   "version": [
+    20180606,
+    1324
+   ],
+   "commit": "948515672bc596dc118e8e3ede3ede5ec6a3c95a",
+   "sha256": "1a9f9h5kywfy8c2kmaxc9vf5zcykbhghpi3ra2l3z5hm0knq54ay"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "00f790b3ed5ec48e2461e20a4d466ba45c634e13",
+   "sha256": "08zk6aspy59gv3989zxz0ibxxwkbjasa83ilpzvpcwszrzq8x640"
+  }
+ },
+ {
+  "ename": "cfengine-code-style",
+  "commit": "c737839aeda583e61257ad40157e24df7f918b0f",
+  "sha256": "1ny8xvdnz740qmw9m81xnwd0gh0a516arpvl3nfimglaai5bfc9a",
+  "fetcher": "github",
+  "repo": "cfengine/core",
+  "unstable": {
+   "version": [
+    20171115,
+    2108
+   ],
+   "commit": "dc0e180cbaf73e86d22f1d2996c7582dd0eb07b5",
+   "sha256": "0n9f87syrj30dn5k4vq1l7i02hzwfnadanfjbwv4a9wfjl77xy53"
+  },
+  "stable": {
+   "version": [
+    3,
+    15,
+    1
+   ],
+   "commit": "e766ee2484f9a7609688ac1832ff2ca7528624c5",
+   "sha256": "18iv6s2g7gz2dmqhipn6ln6g4qngywcj7fm4gqwrph04bx5dfqac"
+  }
+ },
+ {
+  "ename": "cff",
+  "commit": "c4e056132be11481aa26e89d5af1cd03925f92d1",
+  "sha256": "04b2ck1jkhsrka6dbyn6rpsmmc2bn13kpyhzibd781hj73d93jgc",
+  "fetcher": "github",
+  "repo": "fourier/cff",
+  "unstable": {
+   "version": [
+    20160118,
+    2018
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b6ab2a28e64ef06f281ec74cfe3114e450644dfa",
+   "sha256": "019vqjmq6hb2f5lddqy0ya5q0fd47xix29cashlchz0r034rc32r"
+  }
+ },
+ {
+  "ename": "cfml-mode",
+  "commit": "0d28507e1109195004a371fa201d914b995c2b4e",
+  "sha256": "0q88lxhkzzab4jjihk0livdpn6lsmd8l2s4brcbl8402m285sylp",
+  "fetcher": "github",
+  "repo": "am2605/cfml-mode",
+  "unstable": {
+   "version": [
+    20190617,
+    1130
+   ],
+   "commit": "b06d7cee2af0ed5d55a94f0db80fc1f429a1829a",
+   "sha256": "0gzkjyai3njllbifm66mjwndy8xl06ph1957l75il9797jzxw4sc"
+  }
+ },
+ {
+  "ename": "cframe",
+  "commit": "6e39555b2538cc8a955766c5533871396e8fe712",
+  "sha256": "0pngdaflk1pk2xmwbij4b520b3mlacnjab4r3jby0phah44ziv4l",
+  "fetcher": "github",
+  "repo": "plandes/cframe",
+  "unstable": {
+   "version": [
+    20190616,
+    1946
+   ],
+   "deps": [
+    "buffer-manage",
+    "dash"
+   ],
+   "commit": "38026cbd004231c5525bea31723ced39311bb408",
+   "sha256": "1j5g1gdd1fhqfwxgjjvy7ywhb3cfvdl5rxlklacy5qfs4dva8z06"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "buffer-manage",
+    "dash"
+   ],
+   "commit": "bb99672502046e87c8f029ce98c637f762a4fc54",
+   "sha256": "088px3wlvr4km913y7hajrjqnxnv6n325rk6353bkbah2d75vxq4"
+  }
+ },
+ {
+  "ename": "cfrs",
+  "commit": "3ce16d27a9d73a5eaffebf7b0ff36d90c292248f",
+  "sha256": "03mi5iz0yny2ddvp41l3yc49583zw0wqsv33rkycjfj562903syx",
+  "fetcher": "github",
+  "repo": "Alexander-Miller/cfrs",
+  "unstable": {
+   "version": [
+    20191125,
+    2007
+   ],
+   "deps": [
+    "dash",
+    "posframe",
+    "s"
+   ],
+   "commit": "fc5effdc25a926eada4936e5506dcccdf3902137",
+   "sha256": "1d18wvx2szmpvj5v26qqp2qkdmb764sfkp2f864by2hpad0rx034"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "deps": [
+    "dash",
+    "posframe",
+    "s"
+   ],
+   "commit": "de83b587affe374d1cf6e6c2d747696e6c33a817",
+   "sha256": "130g09i38k77y2kyirg54dglksl6vrypdhh4h2j8hzy1mipc5a43"
+  }
+ },
+ {
+  "ename": "cg",
+  "commit": "be27e728327016b819535ef8cae10020e5a07c2e",
+  "sha256": "1xffjilr9f2s3w7j8f3clq7qvsnr0lr8gadlybpzzy8x5fbmk4n3",
+  "fetcher": "github",
+  "repo": "emacsmirror/cg",
+  "unstable": {
+   "version": [
+    20200305,
+    1845
+   ],
+   "commit": "b0e4cca3d8a28054b3af2f592b528903c7e7c111",
+   "sha256": "06ff0blmixn38z013pxj0a5qqn6aw09kv50zzyx5prdyzb57fx6h"
+  }
+ },
+ {
+  "ename": "challenger-deep-theme",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "02k0irp27wv1b5g2a6g86zp7cdprv17c0mlhkjsq2brls274ch3y",
+  "fetcher": "github",
+  "repo": "challenger-deep-theme/emacs",
+  "unstable": {
+   "version": [
+    20191114,
+    1339
+   ],
+   "commit": "b8427b5c87948a183e2dd2b8920a54fbaae2738b",
+   "sha256": "05vgax8arz6l0a4x0gsh7gs0qasjf09xj973nb7k3w8gyzmy1z95"
+  }
+ },
+ {
+  "ename": "change-inner",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "09y076vhhvp21jsvw9f5z4yk6cnmmjavg7600flxg5g27ydgix57",
+  "fetcher": "github",
+  "repo": "magnars/change-inner.el",
+  "unstable": {
+   "version": [
+    20150707,
+    1544
+   ],
+   "deps": [
+    "expand-region"
+   ],
+   "commit": "52c543a4b9808c0d15b565fcdf646c9779de33e8",
+   "sha256": "1m9sq93bwajbld3lnlzkjbsby5zlm9sxjzqynryyvsb9zr1d0a9z"
+  }
+ },
+ {
+  "ename": "chapel-mode",
+  "commit": "ff32db72ad55a7191b5105192480e17535c7edde",
+  "sha256": "0hmnsv8xf85fc4jqkaqz5j3sf56hgib4jp530vvyc2dl2sps6vzz",
+  "fetcher": "github",
+  "repo": "russel/Emacs-Chapel-Mode",
+  "unstable": {
+   "version": [
+    20160504,
+    808
+   ],
+   "commit": "6e095edd7639f5f0a81e14d6412410b49466697e",
+   "sha256": "0r3yja2ak3z62lav2s8vimmjyi4rd5s82fbs8r6p2k0shm6lj7hz"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "936a76a26bdc4f9570c4d54369f74bcd1cb0a698",
+   "sha256": "0n93qz5hzsnrs6c3y5yighfpdpkkmabxyi5i755hfcs5007v199v"
+  }
+ },
+ {
+  "ename": "char-menu",
+  "commit": "f6676747e853045b3b19e7fc9524c793c6a08303",
+  "sha256": "11jkwghrmmvpv7piznkpa0wilwjdsps9rix3950pfabhlllw268l",
+  "fetcher": "github",
+  "repo": "mrkkrp/char-menu",
+  "unstable": {
+   "version": [
+    20190713,
+    1343
+   ],
+   "deps": [
+    "avy-menu"
+   ],
+   "commit": "22d0e061f170d59d7cf6bcd948c11fa0266b7771",
+   "sha256": "1m29vg4cispsd8nl8lpmv5fify1208nrf8h7nkl17pplrk7hqhwb"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "avy-menu"
+   ],
+   "commit": "f4d8bf8fa6787e2aaca2ccda5223646541d7a4b2",
+   "sha256": "0zyi1ha17jk3zz7nirasrrx43j3jkrsfz7ypbc4mk44w7hsvx2hj"
+  }
+ },
+ {
+  "ename": "charmap",
+  "commit": "11c549fca81c4276054f614d86d17fa7af4ab32e",
+  "sha256": "1j7762d2i17ysn9ys8j7wfv989avmax8iylml2hc26mwbpyfpm84",
+  "fetcher": "github",
+  "repo": "lateau/charmap",
+  "unstable": {
+   "version": [
+    20160309,
+    946
+   ],
+   "commit": "bd4b3e466d7a9433cf35167e3a68ec74fe631bb2",
+   "sha256": "0vqsfk83lg3gvcv62jsgxxwz7icpkpswgg30hmcq0qfg0dfwwcl9"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "commit": "165193d91ef96f563ae8366ed4c1a2df5a4eaed2",
+   "sha256": "0crnd64cnsnaj5mcy55q0sc1rnamxa1xbpwpmirhyhxz780klww6"
+  }
+ },
+ {
+  "ename": "chatwork",
+  "commit": "77ae72e62b8771e890525c063522e7091ca8f674",
+  "sha256": "0p71swcpfqbx2zmp5nh57f0m30cn68g3019005wa5x4fg7dx746p",
+  "fetcher": "github",
+  "repo": "ataka/chatwork",
+  "unstable": {
+   "version": [
+    20170511,
+    442
+   ],
+   "commit": "fea231d479f06bf40dbfcf45de143eecc9ed744c",
+   "sha256": "163xr18lm4awfgh4lcp7pr04jirpvlk8w1g4445zbxbpjfvv268z"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "fea231d479f06bf40dbfcf45de143eecc9ed744c",
+   "sha256": "163xr18lm4awfgh4lcp7pr04jirpvlk8w1g4445zbxbpjfvv268z"
+  }
+ },
+ {
+  "ename": "cheat-sh",
+  "commit": "ebac62fb3828d81e30145b9948d60e781e20eda2",
+  "sha256": "0f6wqyh3c3ap0l6khikqlw8sqqi6fsl468gn157faza4x63j9z80",
+  "fetcher": "github",
+  "repo": "davep/cheat-sh.el",
+  "unstable": {
+   "version": [
+    20200226,
+    1021
+   ],
+   "commit": "52293c366044e44c8f6b648a312433345e4718ad",
+   "sha256": "098b70gvyr74ygzbpyfvpn2zzlij47bzvqqj89igh10s4lxj0lzb"
+  },
+  "stable": {
+   "version": [
+    1,
+    8
+   ],
+   "commit": "bd970d7c576b8720d63a1e7fd88ea8a943f2160b",
+   "sha256": "027ws9hz84d4j00bfl5s0id8jcv2yqjkjmph1890w37miwj62cjf"
+  }
+ },
+ {
+  "ename": "cheatsheet",
+  "commit": "0d2cd657fcadb2dd3fd12864fe94a3465f8c9bd7",
+  "sha256": "11z3svlzvmhdy0pkxbx9qz9bnq056cgkbfyw9z34aq1yxazi2cpq",
+  "fetcher": "github",
+  "repo": "darksmile/cheatsheet",
+  "unstable": {
+   "version": [
+    20170126,
+    2150
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "e4f8e0110167ea16a17a74517d1f10cb7ff805b8",
+   "sha256": "1vy2qmx9872hfrfcycpsmy0si481rwv4q4gwiy8f2w04zb92szbn"
+  }
+ },
+ {
+  "ename": "checkbox",
+  "commit": "81c4a9d10238836865716f5ea45f8e0e625a87c6",
+  "sha256": "17gw6w1m6bs3sfx8nqa8nzdq26m8w85a0fca5qw3bmd18bcmknqa",
+  "fetcher": "github",
+  "repo": "camdez/checkbox.el",
+  "unstable": {
+   "version": [
+    20141117,
+    58
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "335afa4404adf72973195a580458927004664d98",
+   "sha256": "0660ix17ksxy5a5v8yqy7adr9d4bs6p1mnkc6lpyw96k4pn62h45"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "2afc2011fa35ccfa0ce9ef46cb1896911fa340d1",
+   "sha256": "09ypxhfad3v1pz0xhw4xgxvfj7ad2kb3ff9zy1mnw7fzsa7gw6nj"
+  }
+ },
+ {
+  "ename": "chee",
+  "commit": "25b445a1dea5e8f1042bed6b5372471c25129fd8",
+  "sha256": "1sw84qaca2cwgrw332wfqjp3kg3axgi9n6wx5a6h2n3liq5yr1wj",
+  "fetcher": "github",
+  "repo": "eikek/chee",
+  "unstable": {
+   "version": [
+    20171123,
+    2233
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "669ff9ee429f24c3c2d03b83d9cb9aec5f86bb8b",
+   "sha256": "1k64mjzqmjirsld40dvmpq4llpb7ggx80r1hvsjqazc4mr16pbri"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "beeaa5bb2ce92f1a745440c7ff7468e5f6524701",
+   "sha256": "1n0n6rnhms2mgh9yjc5whhf3n37y5lp9jk3ban6f6hn55f8p1gmk"
+  }
+ },
+ {
+  "ename": "cheerilee",
+  "commit": "da435df8d78b7c8d4834e00e35c69248a7043c0a",
+  "sha256": "15igjlnq35cg9nslyqa63i1inqipx3y8g7zg4r26m69k25simqrv",
+  "fetcher": "github",
+  "repo": "Vannil/cheerilee.el",
+  "unstable": {
+   "version": [
+    20160313,
+    1835
+   ],
+   "deps": [
+    "xelb"
+   ],
+   "commit": "41bd81b5b0bb657241ceda5be6af5e07254d7376",
+   "sha256": "1jdlp5cnsiza55vx4kxacqgk7yqg9fvd9swhwdxkczadb2d5l9p1"
+  }
+ },
+ {
+  "ename": "chef-mode",
+  "commit": "4044056af824d552a2852ef1f2e7166899f56d8c",
+  "sha256": "1pz82s82d4z3vkm8mpmwdxb9pd11kq09g23mg461lzqxjjw734rr",
+  "fetcher": "github",
+  "repo": "mpasternacki/chef-mode",
+  "unstable": {
+   "version": [
+    20180628,
+    1453
+   ],
+   "commit": "048d691cb63981ae235763d4a6ced4af5c729924",
+   "sha256": "1niin51xwkd8q3wbwcgb0gyk3sw1829qj2p2zv7fm8ljy1jicn2d"
+  }
+ },
+ {
+  "ename": "cherry-blossom-theme",
+  "commit": "401ae22f11f7ee808eb696a4c1f869cd824702c0",
+  "sha256": "1i3kafj3m7iij5mr0vhg45zdnkl9pg9ndrq0b0i3k3mw7d5siq7w",
+  "fetcher": "github",
+  "repo": "inlinestyle/emacs-cherry-blossom-theme",
+  "unstable": {
+   "version": [
+    20150622,
+    342
+   ],
+   "commit": "eea7653e00f35973857ee23b27bc2fae5e753e50",
+   "sha256": "0m97xr6lddy2jdmd4bl4kbp2568p4n110yfa9k7fqc20ihq8jkyd"
+  }
+ },
+ {
+  "ename": "chicken-scheme",
+  "commit": "03f4992471185bf41720ff6fc725fd5fa1291a41",
+  "sha256": "0ns49p7nsifpi7wrzr02ljrr0p6hxanrg54zaixakvjkxwcgfabr",
+  "fetcher": "github",
+  "repo": "dleslie/chicken-scheme.el",
+  "unstable": {
+   "version": [
+    20141116,
+    1939
+   ],
+   "commit": "19b0b08b5592063e852cae094b394c7d1f923639",
+   "sha256": "0j61lvr99viaharg4553whcppp7lxhimkk5lps0izz9mnd8y2wm5"
+  }
+ },
+ {
+  "ename": "chinese-conv",
+  "commit": "a798158829f8fd84dd3e5e3ec5987d98ff54e641",
+  "sha256": "1lqpq7pg0nqqqj29f8is6c724vl75wscmm1v08j480pfks3l8cnr",
+  "fetcher": "github",
+  "repo": "gucong/emacs-chinese-conv",
+  "unstable": {
+   "version": [
+    20170807,
+    2128
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b56815bbb163d642e97fa73093b5a7e87cc32574",
+   "sha256": "1bc3yn8y60y6a4vpqv39arn1pkcpl4s4n0sz9446f6m1lcal4c3r"
+  }
+ },
+ {
+  "ename": "chinese-number",
+  "commit": "e608f40d00a3b2a80a6997da00e7d04f76d8ef0d",
+  "sha256": "0cjfxhd5izahkncs2nzpdv8brsxlwr2dx4hi07ymr62cr0hh0jgy",
+  "fetcher": "github",
+  "repo": "zhcosin/chinese-number",
+  "unstable": {
+   "version": [
+    20161008,
+    509
+   ],
+   "commit": "7311c2a0c5eea5f016a90d733dfe75144c302fb2",
+   "sha256": "01i7nycjnx4cpfgwakj14jv9dwybjl5jnslcxic9pr1n77mz53wk"
+  }
+ },
+ {
+  "ename": "chinese-wbim",
+  "commit": "3b6b1d100ddf29d6936569d61bf4be19a24d002d",
+  "sha256": "1pax3kpmvg170mpvfrjbpj9czq0xykmfbany2f7vbn96jb5xfmsb",
+  "fetcher": "github",
+  "repo": "zilongshanren/chinese-wbim",
+  "unstable": {
+   "version": [
+    20190727,
+    854
+   ],
+   "commit": "5d496364b0b6bbaaf0f9b37e5a6d260d4994f260",
+   "sha256": "1gmdklcldnzngki0rwa7f7lc71wb6qbyxcwlyqdw908ppkk40vbl"
+  }
+ },
+ {
+  "ename": "chinese-word-at-point",
+  "commit": "c9b7785eca577218feade982c979694389f37ec3",
+  "sha256": "0pjs4ckncv84qrdj0pyibrbiy86f1gmjla9n2cgh10xbc7j9y0c4",
+  "fetcher": "github",
+  "repo": "xuchunyang/chinese-word-at-point.el",
+  "unstable": {
+   "version": [
+    20170811,
+    941
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "8223d7439e005555b86995a005b225ae042f0538",
+   "sha256": "13gva1ld4f9wwb2m4fpk6bd9342qvvmaf5i1r3x3h84czmk0nq1r"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    3
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "36a03cce32fe059d2b581cb2e029715c0be81074",
+   "sha256": "1jsy43avingxxccs0zw2qm5ysx8g76xhhh1mnyypxskl9m60qb4j"
+  }
+ },
+ {
+  "ename": "chinese-yasdcv",
+  "commit": "b6d727c30d2ec0f885a927a16a442fe220a740d5",
+  "sha256": "1y2qywldf8b8b0km1lcf74p0w6rd8gr86qcj7ikwhhbvd19dfglm",
+  "fetcher": "github",
+  "repo": "tumashu/chinese-yasdcv",
+  "unstable": {
+   "version": [
+    20171015,
+    144
+   ],
+   "deps": [
+    "cl-lib",
+    "pyim"
+   ],
+   "commit": "5ab830daf1273d5a5cddcb94b56a9737f12d996f",
+   "sha256": "1mv1n6m73aamxj18i851ww53q7p4ydiqgaapxyvjbm6sx8ddz9ak"
+  }
+ },
+ {
+  "ename": "chocolate-theme",
+  "commit": "77ad3eb92e1f7016ed703705697b3cdfe811c387",
+  "sha256": "14slzm0c1lwclmk73ivhflf2kkwmxr3fxy3c2h9r6x7p1z4l32d7",
+  "fetcher": "github",
+  "repo": "SavchenkoValeriy/emacs-chocolate-theme",
+  "unstable": {
+   "version": [
+    20191021,
+    1346
+   ],
+   "deps": [
+    "autothemer"
+   ],
+   "commit": "1c6cd8d2fdc939bd4d26117d61e57c11cfe26512",
+   "sha256": "1knnj1kzjccr7hg5zbj4qfnkgjkf221bf7wv83km9hs7zs7brj5x"
+  }
+ },
+ {
+  "ename": "choice-program",
+  "commit": "6e39555b2538cc8a955766c5533871396e8fe712",
+  "sha256": "0a21yd3b8sb15vms9mclaa7xnnk0as08p6q38mwdwjp9sgcfyh1b",
+  "fetcher": "github",
+  "repo": "plandes/choice-program",
+  "unstable": {
+   "version": [
+    20190817,
+    2153
+   ],
+   "commit": "583242445e7890a12bb674b43244bf27c84d91f6",
+   "sha256": "08pbh4z3xbpk62a2m6shdpw2g44158di8pb9rjszfcpd5m6m2lf2"
+  },
+  "stable": {
+   "version": [
+    0,
+    9
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "215e8ab6acc47f240b12bd11ab387da7f5de885d",
+   "sha256": "14sp47l7j7sv3bsrnwzqz6mzn3wwv4s75r5my6vjh39pn0qshfh1"
+  }
+ },
+ {
+  "ename": "chronometer",
+  "commit": "b20fa4885e2cdc0429d988c76b365bf34d9343db",
+  "sha256": "1kgfq9srch0amdgb4cvizlrg5xqq0hkkdq85yjr2xwsljh09m83k",
+  "fetcher": "github",
+  "repo": "marcelotoledo/chronometer",
+  "unstable": {
+   "version": [
+    20190304,
+    1528
+   ],
+   "commit": "8457b296ef87be339cbe47730b922757d60bdcd5",
+   "sha256": "1apzb0jccw91gdynqa1722bbalzj4kp9fq25zzw1rxsrgh3mgmc5"
+  }
+ },
+ {
+  "ename": "chronometrist",
+  "commit": "35d03fe9c066e7388d5ff4adad1afa1e30145995",
+  "sha256": "09dil46qjn7y55y7qax92l7mcw8g1bsb1mjqc92zgln96asi25kj",
+  "fetcher": "git",
+  "url": "https://framagit.org/contrapunctus/chronometrist/",
+  "unstable": {
+   "version": [
+    20200503,
+    633
+   ],
+   "deps": [
+    "dash",
+    "s",
+    "seq"
+   ],
+   "commit": "16f2ca86540001b40725c4099d04154aab0a6ba5",
+   "sha256": "19z8wmhsqbm12h0vvzfgjmzj7g3mcpa9qgcz3cnmrr4hgkx4b9a5"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    3
+   ],
+   "deps": [
+    "dash",
+    "s",
+    "seq"
+   ],
+   "commit": "282c338c21d01932049392f271f66e1725562efd",
+   "sha256": "1ljjqzghcap4admv0hvw6asm148b80mfgjgxjjcw6qc95fkjjjlr"
+  }
+ },
+ {
+  "ename": "chronos",
+  "commit": "53648c5699fc03e50774270f9560c727e2c22873",
+  "sha256": "1fwpll0mk6pc37qagbq3b3z32d2qwz993nxp9pjw4qbmlnq6sy9d",
+  "fetcher": "github",
+  "repo": "dxknight/chronos",
+  "unstable": {
+   "version": [
+    20150602,
+    1529
+   ],
+   "commit": "b360d9dae57aa553cf2a14ffa0756a51ad71de09",
+   "sha256": "1mqdz3rvx0jm80fgzw3s3lqn448kqrlrifdwcg36cqq4qmkpalq4"
+  }
+ },
+ {
+  "ename": "chruby",
+  "commit": "1989a3c6fa4cd7aaf6b0b202f197eb7db51936b9",
+  "sha256": "0pk6vdvmifiq52n452lbrkklxa69c40bfyzra9qhrghxr2q5v3mk",
+  "fetcher": "github",
+  "repo": "plexus/chruby.el",
+  "unstable": {
+   "version": [
+    20180114,
+    1652
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "42bc6d521f832eca8e2ba210f30d03ad5529788f",
+   "sha256": "06pvjw40qk017py9km26vjrh90acycnkr5r04nxf664qqkjlg2mc"
+  }
+ },
+ {
+  "ename": "chyla-theme",
+  "commit": "5c55eebf8df165360ce1e5d18e484c90f296fe52",
+  "sha256": "1mgr6483bjjwk8bi6kijyw61s52nq6g2svhy5n1jnffi3gaw7hl5",
+  "fetcher": "github",
+  "repo": "chyla/ChylaThemeForEmacs",
+  "unstable": {
+   "version": [
+    20180302,
+    1658
+   ],
+   "commit": "ae5e7ecace2ab474151eb0ac5ef07fba2dc32f8a",
+   "sha256": "1gqzwwr3fnhd9iqn7zmqpxgxvmrhq7g849ndjwizksk0bfj3b596"
+  }
+ },
+ {
+  "ename": "cider",
+  "commit": "55a937aed818dbe41530037da315f705205f189b",
+  "sha256": "1a6hb728a3ir18c2dn9zfd3jn79fi5xjn5gqr7ljy6qb063xd4qx",
+  "fetcher": "github",
+  "repo": "clojure-emacs/cider",
+  "unstable": {
+   "version": [
+    20200511,
+    1025
+   ],
+   "deps": [
+    "clojure-mode",
+    "parseedn",
+    "pkg-info",
+    "queue",
+    "seq",
+    "sesman",
+    "spinner"
+   ],
+   "commit": "25fb15d915117310069254016391c9d76abcebcc",
+   "sha256": "1hz2l2ryllwyv1zk0la376klg7yndz9q32pd1vypwymwnac93c0y"
+  },
+  "stable": {
+   "version": [
+    0,
+    24,
+    0
+   ],
+   "deps": [
+    "clojure-mode",
+    "parseedn",
+    "pkg-info",
+    "queue",
+    "seq",
+    "sesman",
+    "spinner"
+   ],
+   "commit": "bfcf9157a970c9423fe27c5021f445b509e71280",
+   "sha256": "1y7fngd47c5dz6sdf4b5w5lxdw5jmm4wa98l4h48badl8cn6m1vl"
+  }
+ },
+ {
+  "ename": "cider-decompile",
+  "commit": "0b7f7f23bb15922ce7a7dad1ae23093db72aa10c",
+  "sha256": "0jhsm31zcfwkbpsdh1lvmjm1fv2m7y849930sjvf5nxv3ffhx3b4",
+  "fetcher": "github",
+  "repo": "clojure-emacs/cider-decompile",
+  "unstable": {
+   "version": [
+    20151122,
+    537
+   ],
+   "deps": [
+    "cider",
+    "javap-mode"
+   ],
+   "commit": "5d87035f3c3c14025e8f01c0c53d0ce2c8f56651",
+   "sha256": "1w4y65s3m2irga4iqfqqkcmvl6ss24zmaxqzbfib8jmi84r4lpac"
+  }
+ },
+ {
+  "ename": "cider-eval-sexp-fu",
+  "commit": "947f4d106d70f95ca8aac124ab0d90b2975208df",
+  "sha256": "1n4sgv042qd9560pllabysx0c5snly6i22bk126y8f8rn0zj58iq",
+  "fetcher": "github",
+  "repo": "clojure-emacs/cider-eval-sexp-fu",
+  "unstable": {
+   "version": [
+    20190311,
+    2152
+   ],
+   "deps": [
+    "eval-sexp-fu"
+   ],
+   "commit": "7fd229f1441356866aedba611fd0cf4e89b50921",
+   "sha256": "01gky548v3758fyr317lkwsc9aacab6m9d9vk1mrr3qyvmciwd51"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "deps": [
+    "eval-sexp-fu"
+   ],
+   "commit": "7fd229f1441356866aedba611fd0cf4e89b50921",
+   "sha256": "01gky548v3758fyr317lkwsc9aacab6m9d9vk1mrr3qyvmciwd51"
+  }
+ },
+ {
+  "ename": "cider-hydra",
+  "commit": "51d5e6471f88337c478ee5c189f037aaec937f56",
+  "sha256": "1qjgfrj3ck70vkyc9c00mif0jq5hc2yan2hql31qzbpqzg3pi2r7",
+  "fetcher": "github",
+  "repo": "clojure-emacs/cider-hydra",
+  "unstable": {
+   "version": [
+    20190816,
+    1121
+   ],
+   "deps": [
+    "cider",
+    "hydra"
+   ],
+   "commit": "c3b8a15d72dddfbc390ab6a454bd7e4c765a2c95",
+   "sha256": "0qrxja9bxx07m1ij8ly36sib901a6qhczgxsp4ap4wszy63lx93r"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "cider",
+    "hydra"
+   ],
+   "commit": "5956c3909cd9beae11f64973e4f0d830cea7860d",
+   "sha256": "1hnari85c4y5sc8cdv2idkg2qv058crz54xdidnphr1wgw5zhvpk"
+  }
+ },
+ {
+  "ename": "ciel",
+  "commit": "9c70c007a557ea9fb9eb4d3f8b7adbe4dac39c8a",
+  "sha256": "0rz7z3shhsvky91b581nn3hw760nlsc94fl35flm1973kvm9lvdp",
+  "fetcher": "github",
+  "repo": "cs14095/ciel.el",
+  "unstable": {
+   "version": [
+    20180914,
+    815
+   ],
+   "commit": "429773a3c551691a463ecfddd634b8bae2f48503",
+   "sha256": "0xykdwsjgx44c0l5v9swkjjv0xa673krzlc71b1sc4dw9l526s4m"
+  }
+ },
+ {
+  "ename": "cil-mode",
+  "commit": "ccbf4a7c9df3c85207c7160ee68ecc4ba4f3801a",
+  "sha256": "1h18r086bqspyn5n252yzw8x2zgyaqzdd8pbcf5gqlh1w8kapq4y",
+  "fetcher": "github",
+  "repo": "ForNeVeR/cil-mode",
+  "unstable": {
+   "version": [
+    20160622,
+    1430
+   ],
+   "commit": "a78a88ca9a66a82f069329a96e34b67478ae2d9b",
+   "sha256": "06p6hz6jrnvnlbxdr1pjgf5wh4n34kf6al4589qg1s88r2lf86bl"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "a78a88ca9a66a82f069329a96e34b67478ae2d9b",
+   "sha256": "06p6hz6jrnvnlbxdr1pjgf5wh4n34kf6al4589qg1s88r2lf86bl"
+  }
+ },
+ {
+  "ename": "cinspect",
+  "commit": "1e5b5bdbfeb59ed8e98e50d0cc773d78c72d1699",
+  "sha256": "0djh61mrfgcm3767ll1l5apw6646j4fdcaripksrmvn5aqfn8rjj",
+  "fetcher": "github",
+  "repo": "inlinestyle/cinspect-mode",
+  "unstable": {
+   "version": [
+    20150716,
+    233
+   ],
+   "deps": [
+    "cl-lib",
+    "deferred",
+    "python-environment"
+   ],
+   "commit": "4e199a90f89b335cccda1518aa0963e0a1d4fbab",
+   "sha256": "190n4kdcqdwglhnawnj9mqjarmcaqylxipc07whmrii0jv279kjw"
+  }
+ },
+ {
+  "ename": "circadian",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "1xxrhifw371yc4i2cddzcdmqh5dfc905wyl88765098685q8k4bp",
+  "fetcher": "github",
+  "repo": "guidoschmidt/circadian.el",
+  "unstable": {
+   "version": [
+    20181024,
+    1256
+   ],
+   "commit": "414127acad8e2e0092ca60918e6a7cb89da6e28a",
+   "sha256": "08cfhk33xawj0jbgywfn1w0j7gjyj9bcghbrwn96fd7wwj3wh5j2"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    2
+   ],
+   "commit": "9894361dcd6ffb6d4629b4cbbabda2153699eb8e",
+   "sha256": "0wpsykmai3idz0bgfl07hwl9nr4x9sgprvqgw8jln4dz2wf5gdic"
+  }
+ },
+ {
+  "ename": "circe",
+  "commit": "a2b295656d53fddc76cacc86b239e5648e49e3a4",
+  "sha256": "1f54d8490gfx0r0cdvgmcjdxqpni43msy0k2mgqd1qz88a4b5l07",
+  "fetcher": "github",
+  "repo": "jorgenschaefer/circe",
+  "unstable": {
+   "version": [
+    20200125,
+    2110
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "e5bf5f89741a9c43aa406491e94dd8d58c302fb4",
+   "sha256": "104l0b9n9ia7zrha20yaxp6c09wg1h5l5a8b988k6mhyj9a1w1aw"
+  },
+  "stable": {
+   "version": [
+    2,
+    11
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "6ccd4b494cbae9d28091217654f052eaea321007",
+   "sha256": "0cr9flk310yn2jgvj4hbqw9nj5wlfi0fazdkqafzidgz6iq150wd"
+  }
+ },
+ {
+  "ename": "circe-notifications",
+  "commit": "76c0408423c4e0728789de7b356b2971d6c446c7",
+  "sha256": "06y525x5yc0xgbw0cf16mc72ca9bv8j8z4gpgznbad2qp7psf53c",
+  "fetcher": "github",
+  "repo": "eqyiel/circe-notifications",
+  "unstable": {
+   "version": [
+    20180102,
+    2318
+   ],
+   "deps": [
+    "alert",
+    "circe"
+   ],
+   "commit": "291149ac12877bbd062da993479d3533a26862b0",
+   "sha256": "18mva5nn919c86sgk6kdh437vdnlh9bk7fg10xqcpics1yv3viaw"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "alert",
+    "circe"
+   ],
+   "commit": "80c44441ecd3ae04ae63760aa20afa837c1ed05b",
+   "sha256": "0s0iw5vclciziga78f1lvj6sdg84a132in39k4vz0pj598ypin1w"
+  }
+ },
+ {
+  "ename": "citeproc",
+  "commit": "20aa56e9a4809cee1082224b1b4e65921a48bda1",
+  "sha256": "1qphg2bg7vvjzgvnsscbyf40llxxh4aa2s2ffk8vsbfd4p8208cq",
+  "fetcher": "github",
+  "repo": "andras-simonyi/citeproc-el",
+  "unstable": {
+   "version": [
+    20200305,
+    2126
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "org",
+    "queue",
+    "s",
+    "string-inflection"
+   ],
+   "commit": "1884b5c88ad4eb35450a7acf053594369ccb1b22",
+   "sha256": "0dr4fx14kmahg533ij92ycn1a8kagbadfml9iyziisllxypmjrzf"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "queue",
+    "s",
+    "string-inflection"
+   ],
+   "commit": "6d68f52ebd150e035b33dcaa59d9e2aceab69b84",
+   "sha256": "04xz3y3j8k1pv5v6v9wqscqlpmgqi85fs3igrv8c9y0xagild29k"
+  }
+ },
+ {
+  "ename": "cl-format",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "09jwy0fgaz2f04dvcdns6w859s6izvrkp8ib4lws3x8kx8z918fy",
+  "fetcher": "github",
+  "repo": "alvinfrancis/cl-format",
+  "unstable": {
+   "version": [
+    20160413,
+    45
+   ],
+   "commit": "4380cb8009c47cc6d9098b383082b93b1aefa460",
+   "sha256": "108s96viral3s62a77jfgvjam08hdk97frfmxjg3xpp2ifccjs7h"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "4380cb8009c47cc6d9098b383082b93b1aefa460",
+   "sha256": "108s96viral3s62a77jfgvjam08hdk97frfmxjg3xpp2ifccjs7h"
+  }
+ },
+ {
+  "ename": "cl-lib-highlight",
+  "commit": "696c79669478b0d1c9769cc6f0fe581ee056cf32",
+  "sha256": "13qdrvpxq928p27b1xdcbsscyhqk042rwfa17037gp9h02fd42j8",
+  "fetcher": "github",
+  "repo": "skeeto/cl-lib-highlight",
+  "unstable": {
+   "version": [
+    20200210,
+    1951
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "72afc4dd0107c357543244d09903767f49651c5c",
+   "sha256": "1ndjjdada219fgs68np4r7vg50s2h6060wd6wf0x3pnj8b0ca5wm"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "c117451df8455769701af6c8e92a8fb29c05e1fa",
+   "sha256": "12vgi5dicx3lxzngjcg9g3nflrhfy9wdw6ldm72zarp1h96jy5cw"
+  }
+ },
+ {
+  "ename": "cl-libify",
+  "commit": "22088f8779652072871d5c472c67f34bd0470129",
+  "sha256": "0p3b57vfzhk348hb7bcnkq4ihi4qzsy4hcdvwa1h85i84vwyzk5d",
+  "fetcher": "github",
+  "repo": "purcell/cl-libify",
+  "unstable": {
+   "version": [
+    20181130,
+    230
+   ],
+   "commit": "f215866d7d7c52e84220cd541f40608a5b85abf0",
+   "sha256": "1k8x48cayanwajz81h5kfysqvnf58wrb9j4f9rbaqzg2nrnqw5sm"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "f7df5d868ada173bc81860ef81ece359f13ae4e4",
+   "sha256": "1xp0zajp4rsnxkfzrmz0m5bihk0n1hgwc1cm9q163b2azsvixxmw"
+  }
+ },
+ {
+  "ename": "clang-format",
+  "commit": "be27e728327016b819535ef8cae10020e5a07c2e",
+  "sha256": "0v8nvgjadzmsz088q6cgli5s99z45bz9qb508qln1yips42zn258",
+  "fetcher": "github",
+  "repo": "emacsmirror/clang-format",
+  "unstable": {
+   "version": [
+    20191121,
+    1708
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "2d6a4526a2518b7c0059a8a0dfee156e90a49369",
+   "sha256": "1l64r9rr59g26mlph6r8pkn8vzadmh3mh8gvv398kz8skayfa55f"
+  }
+ },
+ {
+  "ename": "clang-format+",
+  "commit": "9ee8e3de203fb3259202bf847f020259a7f07a74",
+  "sha256": "0r9n962q0nq8x3r4vyrdfmw74wsvxw7lxizvklxcsm421qpnzyfa",
+  "fetcher": "github",
+  "repo": "SavchenkoValeriy/emacs-clang-format-plus",
+  "unstable": {
+   "version": [
+    20190824,
+    2216
+   ],
+   "deps": [
+    "clang-format"
+   ],
+   "commit": "ddd4bfe1a13c2fd494ce339a320a51124c1d2f68",
+   "sha256": "0y97f86qnpcscwj41icb4i6j40qhvpkyhg529hwibpf6f53j7ckl"
+  }
+ },
+ {
+  "ename": "clean-aindent-mode",
+  "commit": "ee9dac7c10e652f026643620418dfea9237a0d23",
+  "sha256": "1whzbs2gg2ar24kw29ffv94dgvrlfy2v4zdn0g7ksjjmmdr8ahh4",
+  "fetcher": "github",
+  "repo": "pmarinov/clean-aindent-mode",
+  "unstable": {
+   "version": [
+    20171017,
+    2043
+   ],
+   "commit": "a97bcae8f43a9ff64e95473e4ef0d8bafe829211",
+   "sha256": "07dgx09j6nn5dl9vpqfcs5yqm79kza3h3r1lb7r09wpkmrg0c2cr"
+  }
+ },
+ {
+  "ename": "clean-buffers",
+  "commit": "7fcabd17d7de9af443198ac9c2996bfbd94324de",
+  "sha256": "025sxrqxm24yg1wpfncrjw1nm91h0h7jy2xd5g20xqlinqqvdihj",
+  "fetcher": "github",
+  "repo": "lujun9972/clean-buffers",
+  "unstable": {
+   "version": [
+    20160529,
+    2259
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1be6c54e3095761b6b64bf749faae3dfce94e72a",
+   "sha256": "1h7kmj53fqwfzam3ywz3yn4abl2n94v0lxnyv7x4qzwi2ggizc3l"
+  }
+ },
+ {
+  "ename": "clear-text",
+  "commit": "d2ae86a3001587ba753fcd0ca5137cb65d38910d",
+  "sha256": "1cx2lbcbhd024pq9njan7xrlvj3k4c3wdsvgbz5qyna0k06ix8dv",
+  "fetcher": "github",
+  "repo": "xuchunyang/clear-text.el",
+  "unstable": {
+   "version": [
+    20160406,
+    2043
+   ],
+   "commit": "b50669b6077d6948f72cb3c649281d206e0c2f2b",
+   "sha256": "0y5z2pfhzpv67w2lnw1q06mflww90sfcilj89kqx2jhhrnrnn2ka"
+  }
+ },
+ {
+  "ename": "clevercss",
+  "commit": "ec88232feb9d0a04278d5f615bb0ee0833ecb8ca",
+  "sha256": "189f2l4za1j9ds0bhxrzyp7da9p6svh5dx2vnzf4vql7qhjk3gf0",
+  "fetcher": "github",
+  "repo": "jschaf/CleverCSS-Mode",
+  "unstable": {
+   "version": [
+    20131229,
+    155
+   ],
+   "commit": "b8a3c0dd674367c62b1a1ffec84d88fe0c0219bc",
+   "sha256": "19q6zbnl9fg4cwgi56d7p4qp6y3g0fdyihinpakby49xv2n2k8dx"
+  }
+ },
+ {
+  "ename": "click-mode",
+  "commit": "1859bb26e3efd66394d7d9f4d2296cbeeaf5ba4d",
+  "sha256": "1p5dz4a74w5zxdlw17h5z9dglapia4p29880liw3bif2c7dzkg0r",
+  "fetcher": "github",
+  "repo": "bmalehorn/click-mode",
+  "unstable": {
+   "version": [
+    20180611,
+    44
+   ],
+   "commit": "b94ea8cce89cf0e753b2ab915202d49ffc470fb6",
+   "sha256": "0bz0wp40khha96k74g9vgnzm7xzsrh0wh4vks205pjhaxabhb5vh"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    4
+   ],
+   "commit": "c074e7b5b0a88434d0d3411f18884d1f6e288b33",
+   "sha256": "0w34ixzk8vs2nv5xr7l1b3k0crl1lqvbq6gs5r4b8rhsx9b6c1mb"
+  }
+ },
+ {
+  "ename": "clipetty",
+  "commit": "3f6895244ad88e79d9e5d98dd0ba28be96c79595",
+  "sha256": "0471hrl5nw4v83fglgnsa5yh810idbsliwvrm2b5i6zwgn3mndci",
+  "fetcher": "github",
+  "repo": "spudlyo/clipetty",
+  "unstable": {
+   "version": [
+    20200327,
+    2241
+   ],
+   "commit": "01b39044b9b65fa4ea7d3166f8b1ffab6f740362",
+   "sha256": "1g1awdcqzrnw1a6gl4n87a97lniyn0ck5a51l9n6jz2m8k3idmsg"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "8430e1c01ae701fb85bb12703fe59a0f04fd0a6f",
+   "sha256": "0k3srxvy5r7hbwbr8r65l9gc7nynqrqx5hc39s3xgx3ddq66wq4i"
+  }
+ },
+ {
+  "ename": "cliphist",
+  "commit": "82d86dae4ad8efc8ef342883c164c56e43079171",
+  "sha256": "0mg6pznijba3kvp3r57pi54v6mgih2vfwj2kg6qmcy1abrc0xq29",
+  "fetcher": "github",
+  "repo": "redguardtoo/cliphist",
+  "unstable": {
+   "version": [
+    20190920,
+    149
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "3105e5c4b4d2d0338edb6effd9329426854b80b1",
+   "sha256": "0jbn2nczhsv9adhkc6mnrmxyjbpkbqq475gry0khhqlmzm49y618"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    6
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "232ab0b3f6d502de61ebe76681a6a04d4223b877",
+   "sha256": "0is772r0b7i8rvra9zb94g9aczv8b6q0dmdk67wbli5rv5drfjyq"
+  }
+ },
+ {
+  "ename": "clipmon",
+  "commit": "e608f40d00a3b2a80a6997da00e7d04f76d8ef0d",
+  "sha256": "0qhav3scmk3zsa7v3hg3zczps0as3mzrz3cl34n3xlvf4f6ifd9k",
+  "fetcher": "github",
+  "repo": "bburns/clipmon",
+  "unstable": {
+   "version": [
+    20180129,
+    1054
+   ],
+   "commit": "95dc56c7ed84a654ec90f4740eb6df1050de8cf1",
+   "sha256": "0mfb4k0i71y49hn0xk5a1mv4zaj249qcan0y0nzvgf7mmvr32n9w"
+  }
+ },
+ {
+  "ename": "clippy",
+  "commit": "e3743596c4b6387351684b1bf00f17275b8e59e8",
+  "sha256": "0nqmc8f2qrsp25vzc66xw6b232n7fyw6g06mwn2cdpm3d2pgb7rg",
+  "fetcher": "github",
+  "repo": "Fuco1/clippy.el",
+  "unstable": {
+   "version": [
+    20161028,
+    1954
+   ],
+   "deps": [
+    "pos-tip"
+   ],
+   "commit": "e77f6b63e54d74e243be98accad474e38f7e2a86",
+   "sha256": "052xqscb63kjj6z9m0kk5jlfsy84g848lnpcn5yhz3km2r6nigqm"
+  }
+ },
+ {
+  "ename": "clips-mode",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "1ckk8ajr1x8y2h8jx2q233xs69nip3kjn0wp3xgfbwx7hjcbk7kr",
+  "fetcher": "github",
+  "repo": "clips-mode/clips-mode",
+  "unstable": {
+   "version": [
+    20170909,
+    823
+   ],
+   "commit": "dd38e2822640a38f7d8bfec4f69d8dd24be27074",
+   "sha256": "1q2jz72wi8d2pdrjic9kwqixp5sczjkkx8rf67rgaz37ysjpcbf6"
+  },
+  "stable": {
+   "version": [
+    0,
+    7
+   ],
+   "commit": "a3ab4a3e958d54a16544ec38fe6338f27df20817",
+   "sha256": "0i6sj5rs4b9v8aqq9l6wr15080qb101hdxspx6innhijhajgmssd"
+  }
+ },
+ {
+  "ename": "clj-refactor",
+  "commit": "e608f40d00a3b2a80a6997da00e7d04f76d8ef0d",
+  "sha256": "05x0820x34pidcz03z96qs685y2700g7ha0dx4vy1xr7fg356c3z",
+  "fetcher": "github",
+  "repo": "clojure-emacs/clj-refactor.el",
+  "unstable": {
+   "version": [
+    20200405,
+    1419
+   ],
+   "deps": [
+    "cider",
+    "clojure-mode",
+    "hydra",
+    "inflections",
+    "multiple-cursors",
+    "paredit",
+    "parseedn",
+    "seq",
+    "yasnippet"
+   ],
+   "commit": "8259791e054382457b87d1f78061b5e3ce948907",
+   "sha256": "0vn32b8vhlp75vj4schy8blmiddc6dn92jl4f935yd4sg7pm04cj"
+  },
+  "stable": {
+   "version": [
+    2,
+    5,
+    0
+   ],
+   "deps": [
+    "cider",
+    "clojure-mode",
+    "hydra",
+    "inflections",
+    "multiple-cursors",
+    "paredit",
+    "parseedn",
+    "seq",
+    "yasnippet"
+   ],
+   "commit": "92d372393a031e5fa73ef926447afe72b574cb45",
+   "sha256": "0lnis1qwk1gyxgapl06d7ww1mlb9a8ahl8zwa7y2n3jrgfm25qp4"
+  }
+ },
+ {
+  "ename": "cljr-helm",
+  "commit": "d99b67e295ef59916211bf22b57b4d093e3d53ab",
+  "sha256": "108a1xgnc6qy088vs41j3npwk25a5vny0xx4r3yh76jsmpdpcgnc",
+  "fetcher": "github",
+  "repo": "philjackson/cljr-helm",
+  "unstable": {
+   "version": [
+    20160913,
+    828
+   ],
+   "deps": [
+    "cl-lib",
+    "clj-refactor",
+    "helm-core"
+   ],
+   "commit": "f2fc7b698a56e4a44d5dfbc6a55d77a93c0fa9a4",
+   "sha256": "0jy6hkz8sr1bplymwxnjg4q408cw2dgfrv70chlw3y5ddc4cingj"
+  },
+  "stable": {
+   "version": [
+    0,
+    11
+   ],
+   "deps": [
+    "cl-lib",
+    "clj-refactor",
+    "helm-core"
+   ],
+   "commit": "f2fc7b698a56e4a44d5dfbc6a55d77a93c0fa9a4",
+   "sha256": "0jy6hkz8sr1bplymwxnjg4q408cw2dgfrv70chlw3y5ddc4cingj"
+  }
+ },
+ {
+  "ename": "cljsbuild-mode",
+  "commit": "d801a2e0ba5ae7c65b5d312fbf41261278a8b1ba",
+  "sha256": "0qvb990dgq4v75lwnd661wxszbdbhlgxpsyv4zaj6h10gp1vi214",
+  "fetcher": "github",
+  "repo": "kototama/cljsbuild-mode",
+  "unstable": {
+   "version": [
+    20160402,
+    1700
+   ],
+   "commit": "fa2315660cb3ce944b5e16c679dcf5afd6a97f4c",
+   "sha256": "0flnfivz6w3pkham3g08m3xzy3jg1rzvxfa00vkr7ll8iyv4ypqc"
+  }
+ },
+ {
+  "ename": "clmemo",
+  "commit": "e98b438990dc0dbda264fb4bf7a3237a2661baab",
+  "sha256": "03qa79ip0gqinj1kk898lcvixk98hf6gknz0yc2fnqcrm642k2vs",
+  "fetcher": "github",
+  "repo": "ataka/clmemo",
+  "unstable": {
+   "version": [
+    20160326,
+    1623
+   ],
+   "commit": "846a81b984d71edf8278a4d9f9b886e44d5b8365",
+   "sha256": "152qf7i5bf7xvr35gyawl8abkh7v5dsz957zxslrbbnc8bb1k6bz"
+  }
+ },
+ {
+  "ename": "cloc",
+  "commit": "0dd7a641efd13aa0bd7509d8a5b0a28e3a0493c8",
+  "sha256": "1ny5wixa9x4fq5jvhs01jmyvwkfvwwi9aamrcqsl42s9sx6ygz7a",
+  "fetcher": "github",
+  "repo": "cosmicexplorer/cloc-emacs",
+  "unstable": {
+   "version": [
+    20170728,
+    1824
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f30f0472e465cc8d433d2473e9d3b8dfe2c94491",
+   "sha256": "0g8hklc0914dsi3ks7g251w58ixa78qsh87dx914cc8sahpc0ws2"
+  }
+ },
+ {
+  "ename": "clocker",
+  "commit": "dadd3f5abad2e1f7863c4d654ff065f641395f64",
+  "sha256": "0cckrk40k1labiqjh7ghzpx5zi136xz70j3ipp117x52qf24k10k",
+  "fetcher": "github",
+  "repo": "roman/clocker.el",
+  "unstable": {
+   "version": [
+    20190214,
+    1833
+   ],
+   "deps": [
+    "dash",
+    "projectile",
+    "spaceline"
+   ],
+   "commit": "c4d76968a49287ce3bac0832bb5d5d076054c96f",
+   "sha256": "1wp74fmnk21n5lrpmyk9j25dc79jffbmmhbgg5avzv63az6ffkdk"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    11
+   ],
+   "deps": [
+    "dash",
+    "projectile"
+   ],
+   "commit": "4a4831ed4e42e18976edd16b844cb16cb78f3c17",
+   "sha256": "0hz6a7gj0zfsdaifkhwf965c96rkjc3kivvqlf50zllsw0ysbnn0"
+  }
+ },
+ {
+  "ename": "clojars",
+  "commit": "7f766319c3e18a41017684ea503b0382e96ab31b",
+  "sha256": "1skvd29347hwapgdqznbzwfcp2nf077qkdzknxc8ylmqa32yf5w1",
+  "fetcher": "github",
+  "repo": "joshuamiller/clojars.el",
+  "unstable": {
+   "version": [
+    20180825,
+    1951
+   ],
+   "deps": [
+    "request-deferred"
+   ],
+   "commit": "696c5b056e45067512a7d6dcce2515f3c639f61b",
+   "sha256": "0qkkdlifii6wkfxaj95zphiw3psmf9qnds3whmp6jq2lq9wpd74f"
+  }
+ },
+ {
+  "ename": "clojure-mode",
+  "commit": "5e3cd2e6ee52692dc7b2a04245137130a9f521c7",
+  "sha256": "11n0rjhs1mmlzdqy711g432an5ybdka5xj0ipsk8dx6xcyab70np",
+  "fetcher": "github",
+  "repo": "clojure-emacs/clojure-mode",
+  "unstable": {
+   "version": [
+    20200419,
+    559
+   ],
+   "commit": "da9f1ec717dac1194404b4a4562dba6bd9a4ee3a",
+   "sha256": "0v4q031rvy34llbxhksqlzf3ign4q5xcwf6b3fzblb9k5nz2b3hr"
+  },
+  "stable": {
+   "version": [
+    5,
+    11,
+    0
+   ],
+   "commit": "721287c7a756678d5fe8fa0dcb2d8dc846d239a2",
+   "sha256": "1x1yszp6waa778ki6sw66w1pzcz389wd01gkcldfxxnd7z89ad5d"
+  }
+ },
+ {
+  "ename": "clojure-mode-extra-font-locking",
+  "commit": "5e3cd2e6ee52692dc7b2a04245137130a9f521c7",
+  "sha256": "00nff9mkj61i76dj21x87vhz0bbkzgvkx1ypkxcv6yf3pfhq7r8n",
+  "fetcher": "github",
+  "repo": "clojure-emacs/clojure-mode",
+  "unstable": {
+   "version": [
+    20200320,
+    823
+   ],
+   "deps": [
+    "clojure-mode"
+   ],
+   "commit": "da9f1ec717dac1194404b4a4562dba6bd9a4ee3a",
+   "sha256": "0v4q031rvy34llbxhksqlzf3ign4q5xcwf6b3fzblb9k5nz2b3hr"
+  },
+  "stable": {
+   "version": [
+    5,
+    11,
+    0
+   ],
+   "deps": [
+    "clojure-mode"
+   ],
+   "commit": "721287c7a756678d5fe8fa0dcb2d8dc846d239a2",
+   "sha256": "1x1yszp6waa778ki6sw66w1pzcz389wd01gkcldfxxnd7z89ad5d"
+  }
+ },
+ {
+  "ename": "clojure-quick-repls",
+  "commit": "e618430057eb3ac235ab4a44767524919c870036",
+  "sha256": "10glzyd4y3918pwp048pc1y7y7fa34fkqckn1nbys841dbssmay0",
+  "fetcher": "github",
+  "repo": "symfrog/clojure-quick-repls",
+  "unstable": {
+   "version": [
+    20150814,
+    736
+   ],
+   "deps": [
+    "cider",
+    "dash"
+   ],
+   "commit": "730311dd3ac4e0aceb0204f818b422017873467f",
+   "sha256": "1qxhgqldvzzbpr3cxkj3a1zhpjck04pcqli9nnnb75hawi7vi8si"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "cider",
+    "dash"
+   ],
+   "commit": "90f82e294cfdfb65231adc456177580cd69bfc00",
+   "sha256": "0sw34yjp8934xd2n76lbwyvxkbyz5pxszj6gkflas8lfjvms9z7d"
+  }
+ },
+ {
+  "ename": "clojure-snippets",
+  "commit": "4898fc6746b30b0d0453b3b56d02479bfb0f70b9",
+  "sha256": "15622mdd6b3fpwp22d32p78yap08pyscs2vc83sv1xz4338i0lij",
+  "fetcher": "github",
+  "repo": "mpenet/clojure-snippets",
+  "unstable": {
+   "version": [
+    20180314,
+    1308
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "6068dca90467a0f4ebc2cd39338a173d6f5ddc04",
+   "sha256": "0vvadcydpsz4b17dlm1jd4fbddzfqibh3mlzv3k4gvp67vv10cqy"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "83785faa607884308a42b81f160854f2cecfd098",
+   "sha256": "1sdgf1avfw7w3m3i7nqb9m9nhqk8lr0bri686lrkq23ds2b44454"
+  }
+ },
+ {
+  "ename": "clomacs",
+  "commit": "345f9797e87e3f5f957c167a5e3d33d1e31b50a3",
+  "sha256": "1vfjzrzp58ap75i0dh5bwnlkb8qbpfmrd3fg9n6aaibvvd2m3hyh",
+  "fetcher": "github",
+  "repo": "clojure-emacs/clomacs",
+  "unstable": {
+   "version": [
+    20191201,
+    200
+   ],
+   "deps": [
+    "cider",
+    "s",
+    "simple-httpd"
+   ],
+   "commit": "88b8fc6d1b7105adae009578ef24fedaf157f341",
+   "sha256": "13rhnncqj8666g2v7493i8xh79mczjrmg24p12knzhkslxdnv9hp"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    4
+   ],
+   "deps": [
+    "cider",
+    "s",
+    "simple-httpd"
+   ],
+   "commit": "292c8f5370a2c74094da46ede990b5e7cc8b55b8",
+   "sha256": "1rv57wqr09vl0caz4wjr0kqvhgvl5y1x6818v8m55rm2z8rim11i"
+  }
+ },
+ {
+  "ename": "closql",
+  "commit": "2df16abf56e53d4a1cc267a78797419520ff8a1c",
+  "sha256": "13ybna20w2d1b3n0y5p1ybhkw0j0zh5nd43p1yvf8h1haj983l87",
+  "fetcher": "github",
+  "repo": "emacscollective/closql",
+  "unstable": {
+   "version": [
+    20191229,
+    1814
+   ],
+   "deps": [
+    "emacsql-sqlite"
+   ],
+   "commit": "1e78f96dc976badb59067c986f7766cce89405cc",
+   "sha256": "03nknirj5jd3yf842amb274269fyiinr325g1x2snf1zgqfm3csn"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "emacsql-sqlite"
+   ],
+   "commit": "92f8f2dba684b7c9cc60821aa5668d336544ab99",
+   "sha256": "0q8val0v4hryr0miliqjf38y4aybrihzncr0p1mwba861jlpy86n"
+  }
+ },
+ {
+  "ename": "closure-lint-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "11kxgvfwngdjryrrihlpn0509axwv4zwkxzs4h1pw5vi7sv1n6xd",
+  "fetcher": "github",
+  "repo": "r0man/closure-lint-mode",
+  "unstable": {
+   "version": [
+    20101118,
+    2124
+   ],
+   "commit": "bc3d2fd5c35580bf1b8af43b12484c95a343b4b5",
+   "sha256": "0v0wdq0b5jz4x0d7dl3ilgf3aqp2hk375db366ij6gxwd0b9i3na"
+  }
+ },
+ {
+  "ename": "cloud-theme",
+  "commit": "2b003217d0d518b23385e9486c84db7036a479ad",
+  "sha256": "1q0y04rx4xj251fbnv01shk0l7xvqqsr4xm3m2m5q5gf18s66hrp",
+  "fetcher": "github",
+  "repo": "vallyscode/cloud-theme",
+  "unstable": {
+   "version": [
+    20200221,
+    2201
+   ],
+   "commit": "bdac53baf1c38f83a16091db515047f7d42dac14",
+   "sha256": "0ikhngr4cq4v6dgj59fffbdd6z9pdfcckgblsk3xs26frqqqxknf"
+  }
+ },
+ {
+  "ename": "cloud-to-butt-erc",
+  "commit": "b12354152cce6e9a281dc26018c763b6f93e3cee",
+  "sha256": "061mmw39dq8sqzi2589lf7svy15n2iyiwbfiram48r2yhma5dd0f",
+  "fetcher": "github",
+  "repo": "leathekd/cloud-to-butt-erc",
+  "unstable": {
+   "version": [
+    20130627,
+    2308
+   ],
+   "commit": "6710c03d1bc91736435cbfe845924940cae34e5c",
+   "sha256": "07kvnb6p35swkyj92c4wymsqq4r2885wdpqhv7nhicvi6n658kpf"
+  }
+ },
+ {
+  "ename": "clues-theme",
+  "commit": "6f26b8281f9bd05e3c8f2ef21838275711e622c9",
+  "sha256": "0b0gypmxx8qjd8hgxf4kbvci1nwacsxl7rm5s1bcnk9cwc6k2jpr",
+  "fetcher": "github",
+  "repo": "emacsfodder/emacs-clues-theme",
+  "unstable": {
+   "version": [
+    20161213,
+    1127
+   ],
+   "commit": "abd61f2b7f3e98de58ca26e6d1230e70c6406cc7",
+   "sha256": "118k5bnlk9sc2n04saaxjncmc1a4m1wlf2y7xyklpffkazbd0m72"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "commit": "abd61f2b7f3e98de58ca26e6d1230e70c6406cc7",
+   "sha256": "118k5bnlk9sc2n04saaxjncmc1a4m1wlf2y7xyklpffkazbd0m72"
+  }
+ },
+ {
+  "ename": "cm-mode",
+  "commit": "42dda804ec0c7338c39c57eec6ba479609a38555",
+  "sha256": "1rgfpxbnp8wiq9j8aywm2n07rxzkhqljigwynrkyvrnsgxlq2a9x",
+  "fetcher": "github",
+  "repo": "joostkremers/criticmarkup-emacs",
+  "unstable": {
+   "version": [
+    20170203,
+    2107
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "276d49c859822265070ae5dfbb403fd7d8d06436",
+   "sha256": "0mqbjw9wiaq735v307hd7g0g6i3a4k7h71bi4g9rr2jbgiljmql4"
+  },
+  "stable": {
+   "version": [
+    1,
+    6
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "276d49c859822265070ae5dfbb403fd7d8d06436",
+   "sha256": "0mqbjw9wiaq735v307hd7g0g6i3a4k7h71bi4g9rr2jbgiljmql4"
+  }
+ },
+ {
+  "ename": "cmake-font-lock",
+  "commit": "383a7f191c10916ad40284fba94f967765ffeb7e",
+  "sha256": "0ws4kd94m8fh55d7whsf3rj9qrxjp1wsgxh0valsjxyp2ck9zrz0",
+  "fetcher": "github",
+  "repo": "Lindydancer/cmake-font-lock",
+  "unstable": {
+   "version": [
+    20200103,
+    1702
+   ],
+   "deps": [
+    "cmake-mode"
+   ],
+   "commit": "9e0fcd1ee2cf316f661f2d652368b12f83a4ec9c",
+   "sha256": "0m1i5ijiwsxral544xd4nygcr1qbackaghjfgr8pfb5yfwgdxifh"
+  }
+ },
+ {
+  "ename": "cmake-ide",
+  "commit": "17e8a8a5205d222950dc8e9245549a48894b864a",
+  "sha256": "0xvy7l80zw67jgvk1rkhwzjvsqjqckmd8zj6s67rgbm56z6ypmcg",
+  "fetcher": "github",
+  "repo": "atilaneves/cmake-ide",
+  "unstable": {
+   "version": [
+    20200515,
+    951
+   ],
+   "deps": [
+    "cl-lib",
+    "levenshtein",
+    "s",
+    "seq"
+   ],
+   "commit": "a8f9e83848b513f810170988679a9ef455025975",
+   "sha256": "1dzqqcj9l7hr73cj65rx5iy58bsiif5521d18jym4pajhzj3mkx0"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "deps": [
+    "cl-lib",
+    "levenshtein",
+    "seq"
+   ],
+   "commit": "a2e476ad42e61075cae9beb35fb83e3c1bf8619e",
+   "sha256": "0n169i4y2c450bk5r284bakjk3hsg74pply5fqxvdm6p5p1z2vr1"
+  }
+ },
+ {
+  "ename": "cmake-mode",
+  "commit": "9b95a562119259839dcaa08d27871282a5ca5391",
+  "sha256": "1nhnrkyfd8f2vgxvl5y78vvmjjhqjjpxqcdl7i7kwm243l2zy5g3",
+  "fetcher": "git",
+  "url": "https://gitlab.kitware.com/cmake/cmake.git",
+  "unstable": {
+   "version": [
+    20190710,
+    1319
+   ],
+   "commit": "135b5835a42d6e3c7efb85f80f3fe0885d45d644",
+   "sha256": "18mgkn5cy14f5l4qajhdphxvw66hhhw2yf12qfvpd2n5bx3b8dcs"
+  },
+  "stable": {
+   "version": [
+    3,
+    17,
+    2
+   ],
+   "commit": "615129f3ebd308abeaaee7f5f0689e7fc4616c28",
+   "sha256": "1akclhrc9gx0asvmwcsbvw90wgazlyqd044wql7qj6vibv47cdjd"
+  }
+ },
+ {
+  "ename": "cmake-project",
+  "commit": "0857c4db1027981ea73bc32bcaa15e5df53edea3",
+  "sha256": "13n6j9ljvzjzkknbm9zkhxljcn12avl39gxqq95hah44dr11rns3",
+  "fetcher": "github",
+  "repo": "alamaison/emacs-cmake-project",
+  "unstable": {
+   "version": [
+    20171121,
+    1115
+   ],
+   "commit": "d3f408f226eff3f77f7e00dd519f4efc78fd292d",
+   "sha256": "1r8a3arpkkn91k619z4b6ywnq15glc4n1ji33l0q2m59f5sfk8mp"
+  },
+  "stable": {
+   "version": [
+    0,
+    7
+   ],
+   "commit": "ec61f687772cccdb699f64ebe1e8dc8ba83f790f",
+   "sha256": "10xlny2agxjknvnjdnw41cyb3d361yy0wvpc8l1d0xwnmmfh3bxk"
+  }
+ },
+ {
+  "ename": "cmd-to-echo",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1b4mw1ips4695ixgw2hyinq9ry3bx4d1842kr7k6155a1v34s4zh",
+  "fetcher": "github",
+  "repo": "mallt/cmd-to-echo",
+  "unstable": {
+   "version": [
+    20161203,
+    2133
+   ],
+   "deps": [
+    "s",
+    "shell-split-string"
+   ],
+   "commit": "e0e874fc0e1ad6d291e39ed76023445297ad438a",
+   "sha256": "0wi097yk9p1xcfmps1g58xvvlv60akwky4y0pxdz6pa31w9jd1q8"
+  }
+ },
+ {
+  "ename": "cmm-mode",
+  "commit": "07579854200302cf69e120648f4983961e628f7d",
+  "sha256": "184b8x19cnvx8z4dr9alv62wchzc7vr7crzz8jiyqw9d544zs50h",
+  "fetcher": "github",
+  "repo": "bgamari/cmm-mode",
+  "unstable": {
+   "version": [
+    20150225,
+    746
+   ],
+   "commit": "c3ad514dff3eb30434f6b20d953276d4c00de1ee",
+   "sha256": "0xdcw329d2gssx86iajwrgpr7yv69b9nflmzjgb4jvg4pskj4pgx"
+  }
+ },
+ {
+  "ename": "cnfonts",
+  "commit": "0d5787ffeeee68ffa41f3e777071815084e0ed7a",
+  "sha256": "1pryn08fkdrdj7w302205nj1qhfbk1jzqxx6717crrxakkdqmn9w",
+  "fetcher": "github",
+  "repo": "tumashu/cnfonts",
+  "unstable": {
+   "version": [
+    20200327,
+    101
+   ],
+   "commit": "d741332ad4bcd9a136d5dc4974a050da8ca28888",
+   "sha256": "1f2nrklzvm0b09d1s5rxvzahc32rs5qdqx910a45fj95hlw2w2wc"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    1
+   ],
+   "commit": "cbe1ddd49e33b790a568c55351146aa5b909f173",
+   "sha256": "11d44lf0m0kbzq1mvyqkl4aprys0xqaarp08nij57xnynin1rynx"
+  }
+ },
+ {
+  "ename": "cobalt",
+  "commit": "b2435d98e7564d333c8224b67ac6ad9c95debda1",
+  "sha256": "0r3fx1xx24x4qapbj2p8krc67rjmrjm88y89baf1x2swk7xdza92",
+  "fetcher": "github",
+  "repo": "cobalt-org/cobalt.el",
+  "unstable": {
+   "version": [
+    20180304,
+    1155
+   ],
+   "commit": "634ace275697e188746ca22a30ff94380ec756be",
+   "sha256": "1mrydmzldgabkkdpmlwfrfb6iddj4by7scc14k9bak5y6hj6ix7l"
+  }
+ },
+ {
+  "ename": "cobra-mode",
+  "commit": "e986942c391f50fb633097f2f31969a8aeecb99e",
+  "sha256": "11jscpbclxlq2xqy2nsfa4y575bp8h0kpkp8cfjqb05lm5ybcp89",
+  "fetcher": "github",
+  "repo": "Nekroze/cobra-mode",
+  "unstable": {
+   "version": [
+    20140116,
+    2116
+   ],
+   "commit": "acd6e53f6286af5176471d01f25257e5ddb6dd01",
+   "sha256": "1sx8grp3j7zcma3nb7zj6kijkdqx166vw1qgmm29hvx48bys6vlp"
+  }
+ },
+ {
+  "ename": "codcut",
+  "commit": "0fcd1c7a483dd377674a71a07fd86297f05cc83b",
+  "sha256": "1pmbsv7pzmlbkfcw4ihpi5k7pgcrwlcg1hp0wkhkii8w61dq62x6",
+  "fetcher": "github",
+  "repo": "codcut/codcut-emacs",
+  "unstable": {
+   "version": [
+    20190915,
+    1009
+   ],
+   "commit": "7ca7db69e8c38ec45eb572ad16ab2b56086f2131",
+   "sha256": "1jfglmsknvyh3srqn7m6yr02j7n8xa7iznzyhhr34mwg2q71ihzr"
+  }
+ },
+ {
+  "ename": "code-archive",
+  "commit": "a8d0832eff966874d90e1d5ac1043c03e96b1c25",
+  "sha256": "0rj7cvwzhgam25jxjw5aqx9cxa86008gx2mwcyjlbnjrkhcbi97a",
+  "fetcher": "github",
+  "repo": "mschuldt/code-archive",
+  "unstable": {
+   "version": [
+    20190612,
+    308
+   ],
+   "commit": "1ad9af6679d0294c3056eab9cad673f29c562721",
+   "sha256": "0s0zakrmbx9gr7ippnyqngc09xj9f7bsv0mv11p062a8pkilg219"
+  }
+ },
+ {
+  "ename": "code-library",
+  "commit": "197bdc508c4fd9712125553a108ca6c9fedcaefc",
+  "sha256": "0gi8lz2q0vis4nyziykq15jp3m3vykfwycbk6amhf1ybkn9k3ywj",
+  "fetcher": "github",
+  "repo": "lujun9972/code-library",
+  "unstable": {
+   "version": [
+    20160426,
+    1218
+   ],
+   "deps": [
+    "gist"
+   ],
+   "commit": "32d59c5c845d6dbdda18f9bd1c03a58d55417fc5",
+   "sha256": "1n00bb39jgx02zdgla85zx0a338xir0zh0af6xca14kg5bx07vsv"
+  }
+ },
+ {
+  "ename": "code-stats",
+  "commit": "20af5580926e9975605c0a245f6ac15c25f4921e",
+  "sha256": "0mwjlhpmrbh3mbw3hjlsbv1fr4mxh068c9g0zcxq7wkksxx707if",
+  "fetcher": "github",
+  "repo": "xuchunyang/code-stats-emacs",
+  "unstable": {
+   "version": [
+    20200216,
+    2020
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "0d5be395d4233ea533e6eddf50af725c51304205",
+   "sha256": "12b2skhp9x17ffh1jxpl0nw7cybq9a2iyqmp3fwmvrr51mdg6va1"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "20d60ded0743f01206c3c2e92ab73788def9adcb",
+   "sha256": "0g8pqqpwmc646krdpfkri8q7pwnj8sb3pma5mfkwg8lvj6ddcx27"
+  }
+ },
+ {
+  "ename": "codebug",
+  "commit": "35cd654bd7b390518eb5ddca8842bdfcc9e9e6f1",
+  "sha256": "1cb2wvawp3wqslhgbmbw9xwcqgwfscqg0jfgqzi3nr42mjp9zgqj",
+  "fetcher": "github",
+  "repo": "shano/emacs-codebug",
+  "unstable": {
+   "version": [
+    20140929,
+    2137
+   ],
+   "commit": "ac0e4331ba94ccb5203fa492570e1ca6b90c3d52",
+   "sha256": "11v671c4338bsizbmm7ypp4x9s5hiwyddsg2ig6h157gfv2597pp"
+  }
+ },
+ {
+  "ename": "codesearch",
+  "commit": "0da1c6971ac2d3e9ee67731d00a9e8ca2d169826",
+  "sha256": "1zm7fqwiknk07c8aks1silnkxifkfbdzvbzg77wrap48k8mnw03l",
+  "fetcher": "github",
+  "repo": "abingham/emacs-codesearch",
+  "unstable": {
+   "version": [
+    20181006,
+    1431
+   ],
+   "deps": [
+    "log4e"
+   ],
+   "commit": "f6eb96f034a925444412cfa03e45e0ccbbafe3f2",
+   "sha256": "1xdkm1f04z1h3ivd6zm8hckf3n3fbi5rwybg4dwi5mim6w84i7j9"
+  }
+ },
+ {
+  "ename": "codic",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "05pa2a74c4ra7qqv3da3bx623vf36qrk5dm1jx1a4x1vbpgv5mz0",
+  "fetcher": "github",
+  "repo": "emacsorphanage/codic",
+  "unstable": {
+   "version": [
+    20150926,
+    1127
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "52bbb6997ef4ab9fb7fea43bbfff7f04671aa557",
+   "sha256": "14jcxrs3b02pbppvdsabr7c74i3c6d1lmd6l1p9dj8gv413pghsz"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "52bbb6997ef4ab9fb7fea43bbfff7f04671aa557",
+   "sha256": "14jcxrs3b02pbppvdsabr7c74i3c6d1lmd6l1p9dj8gv413pghsz"
+  }
+ },
+ {
+  "ename": "coffee-fof",
+  "commit": "9024e5a71c992509a1dea5f673a31b806d5e175e",
+  "sha256": "02cqza46qp8y69jd33cg4nmcgvrpwz23vyxqnmzwwvlmnbky96yc",
+  "fetcher": "github",
+  "repo": "yasuyk/coffee-fof",
+  "unstable": {
+   "version": [
+    20131012,
+    1230
+   ],
+   "deps": [
+    "coffee-mode"
+   ],
+   "commit": "211529594bc074721c6cbc4edb73a63cc05f89ac",
+   "sha256": "010v886ak0rbbhqwxwj6m0mkgh19s232igy7wwbv07l2pdqszf3p"
+  }
+ },
+ {
+  "ename": "coffee-mode",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "1px50hs0x30psa5ljndpcc22c0qwcaxslpjf28cfgxinawnp74g1",
+  "fetcher": "github",
+  "repo": "defunkt/coffee-mode",
+  "unstable": {
+   "version": [
+    20200315,
+    1133
+   ],
+   "commit": "35a41c7d8233eac0b267d9593e67fb8b6235e134",
+   "sha256": "11jppi95j9229qmj1747kfa602640kjz1xf5254ph3nhljxb0nsv"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    3
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "adfb7ae73d6ee2ef790c780dd3c967e62930e94a",
+   "sha256": "0yhmg5j051mviqp5laz7y1zjs1w9ykbbxqm7vrgf2py0hpd1kcrg"
+  }
+ },
+ {
+  "ename": "coin-ticker",
+  "commit": "fd783998658b69159e39d9440da7a0dd04135e49",
+  "sha256": "0v4zyswhghknlsal9xfsgwf8ckjwrjkjrg8w7p6yjqrxmfsbw93b",
+  "fetcher": "github",
+  "repo": "eklitzke/coin-ticker-mode",
+  "unstable": {
+   "version": [
+    20170611,
+    727
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "9efab90fe4e6f29464af14e0d8fd1e20c0147b80",
+   "sha256": "0xnrh6v4s2s3fgvw0v9fl48dlk4r2p6axp7xf41gzb1ai81yczhv"
+  }
+ },
+ {
+  "ename": "colemak-evil",
+  "commit": "0f0750a3f9537782ee61d6e56c51ce7b86def12e",
+  "sha256": "1bfzs5px1k6g3cnwjdaq2m78bbnfy3lxhjzkcch7zdv3nyacwl5z",
+  "fetcher": "github",
+  "repo": "patbl/colemak-evil",
+  "unstable": {
+   "version": [
+    20200326,
+    2359
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "981bdcb1a48c6d9139493abe7e25fabe126e43c3",
+   "sha256": "0dqyqaqr71z4mipb4g5jxdw96lzb108fd5w4wi27023hfll3j1hc"
+  }
+ },
+ {
+  "ename": "colonoscopy-theme",
+  "commit": "641d1959bd31598fcdacd39a3d1bb077dcccfa5c",
+  "sha256": "0x9bfr4j0sp41jkgnyjlaxnnjjrc102x6sznn6cgcmqk5qhswl4q",
+  "fetcher": "github",
+  "repo": "emacsfodder/emacs-colonoscopy-theme",
+  "unstable": {
+   "version": [
+    20170808,
+    1309
+   ],
+   "commit": "64bbb322b13dae91ce9f1e3581f836f94f800ead",
+   "sha256": "1r0is6zjkzikm565fvmj0gx8ms5ig9l5xihnka4fig7jy6ak33z5"
+  }
+ },
+ {
+  "ename": "color-identifiers-mode",
+  "commit": "5c735755e414fdf169aca5ec6f742533d21472e0",
+  "sha256": "1hxp8lzn7kfckn5ngxic6qiz3nbynilqlxhlq9k1n1llfg216gfq",
+  "fetcher": "github",
+  "repo": "ankurdave/color-identifiers-mode",
+  "unstable": {
+   "version": [
+    20200129,
+    144
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "923ed4789c5ab66369ac4dda7eedb910951684a6",
+   "sha256": "1d502n6bpdscgpqfanax1h0iirgpq8x56vh6bbpzg9i042i3z7ls"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "536151410dbb198b328dc62b829d9692cec0b1bd",
+   "sha256": "1zwgyp65jivds9zvbp5k5q3gazffh3w0mvs739ddq93lkf165rwh"
+  }
+ },
+ {
+  "ename": "color-moccur",
+  "commit": "19105272fd8def5c7b22bfe5eeed5212e6ccae9c",
+  "sha256": "17b9walfc5c9qfdvl9pcwb2gjikc3wxk1d3v878ckypmxd38vciq",
+  "fetcher": "github",
+  "repo": "myuhe/color-moccur.el",
+  "unstable": {
+   "version": [
+    20141223,
+    35
+   ],
+   "commit": "4f1c59ffd1ccc2ab1a171cd6b721e8cb9e002fb7",
+   "sha256": "1p1f30qz4nd5a8ym2iwrgp6vhws0dls2qlc0apblj9nj3b0ziv0x"
+  }
+ },
+ {
+  "ename": "color-theme",
+  "commit": "90fc6a19838f8e5ffe3b96747784d2f5628f7434",
+  "sha256": "0sgjyiqi65ylvd926ywfjzh752bpch3szvx4z3la1r9gpkrnwspd",
+  "fetcher": "github",
+  "repo": "emacsattic/color-theme",
+  "unstable": {
+   "version": [
+    20190220,
+    1115
+   ],
+   "commit": "3a2f6b615f5e2401e30d93a3e0adc210bbb4b7aa",
+   "sha256": "09imx996afh3j207163kg8sc92hd7wljkpban1pnn6f67bgyrvlv"
+  }
+ },
+ {
+  "ename": "color-theme-approximate",
+  "commit": "f10631b740eea56e7209d7e84f0da8613274ef1d",
+  "sha256": "1wdnia9q42x7vky3ks555iic5s50g4mx7ss5ppaljvgxvbxyxqh1",
+  "fetcher": "github",
+  "repo": "tungd/color-theme-approximate",
+  "unstable": {
+   "version": [
+    20140228,
+    436
+   ],
+   "commit": "f54301ca39bc5d2ffb000f233f8114184a3e7d71",
+   "sha256": "1b0ymwszqsjcihcbfp7s4fjam983ixh3yb7sdc0rmqlyric1zwxq"
+  }
+ },
+ {
+  "ename": "color-theme-buffer-local",
+  "commit": "e43060d80b3345ef4e8df9f5a9d66af8a44a9c41",
+  "sha256": "1448rffyzn5k5mr31hwd28wlj7if7rp5sjlqcsvbxd2mnbgkgjz0",
+  "fetcher": "github",
+  "repo": "vic/color-theme-buffer-local",
+  "unstable": {
+   "version": [
+    20170126,
+    601
+   ],
+   "deps": [
+    "color-theme"
+   ],
+   "commit": "e606dec66f16a06140b9aad625a4fd52bca4f936",
+   "sha256": "0c04fy3hc8wc0aabilqx9mcipmd41rmshqjxc3z8m1w0bm4288g1"
+  }
+ },
+ {
+  "ename": "color-theme-modern",
+  "commit": "2db82e101916d8709b711034da5ca6e4072e1077",
+  "sha256": "0f662ham430fgxpqw96zcl1whcm28cv710g6wvg4fma60sblaxcm",
+  "fetcher": "github",
+  "repo": "emacs-jp/replace-colorthemes",
+  "unstable": {
+   "version": [
+    20200315,
+    929
+   ],
+   "commit": "40464198e7bf2121694a7e6d87588342140a84ff",
+   "sha256": "0fhr0rvfrb9fmbh9zgzxx2c2zl28v16hxmn9jx6k73nsfwpy498j"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "commit": "4f7da6f955f7c584c5dfab2dc170f9a3debd80f8",
+   "sha256": "08wmllq3smg7cp7jspmvd67z5vzmxvi136c6j87r1gsgprhgmhw4"
+  }
+ },
+ {
+  "ename": "color-theme-sanityinc-solarized",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "0xg79hgb893f1nqx6q4q6hp4w6rvgp1aah1v2r3scg2jk057qxkf",
+  "fetcher": "github",
+  "repo": "purcell/color-theme-sanityinc-solarized",
+  "unstable": {
+   "version": [
+    20200304,
+    2156
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "c688337aaae9f47128a841479e4191858ac147f6",
+   "sha256": "0a16fn7h0yljlgg1scy82w5r6awd7gk6xf1qd83cx8kj2cg7k7vb"
+  },
+  "stable": {
+   "version": [
+    2,
+    29
+   ],
+   "commit": "554e941131d009c0a5d7129ed96796182b4cc590",
+   "sha256": "13jmg05skv409z8pg5m9rzkajj9knyln0ff8a3i1pbpyrnpngmmc"
+  }
+ },
+ {
+  "ename": "color-theme-sanityinc-tomorrow",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "1k8iwjc7iidq5sxybs47rnswa6c5dwqfdzfw7w0by2h1id2z6nqd",
+  "fetcher": "github",
+  "repo": "purcell/color-theme-sanityinc-tomorrow",
+  "unstable": {
+   "version": [
+    20200507,
+    608
+   ],
+   "commit": "e4e577c24db6ad7f6940a13e1d58418d42ff0c81",
+   "sha256": "0363fi2q4wprnkrdlvvbsib42czsf4fwhy61c6b9bbj8fvmflzj8"
+  },
+  "stable": {
+   "version": [
+    1,
+    17
+   ],
+   "commit": "81d8990085960824f700520d08027e6aca58feaa",
+   "sha256": "1x3aq6hadp158vh8mf9hmj5rikq0qz7a1frv7vbl39xr3wcnjj23"
+  }
+ },
+ {
+  "ename": "color-theme-x",
+  "commit": "321900baf4149f8b58b075b9fb27716cf708f2a2",
+  "sha256": "0nb2hqmmj1rhqjcbv5m8r9g2bf993lp45ka9rrxqp0pkmyd9fvs2",
+  "fetcher": "github",
+  "repo": "ajsquared/color-theme-x",
+  "unstable": {
+   "version": [
+    20180227,
+    46
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "6c2264aa6c5d9a72caeae67ebaa4472090e70350",
+   "sha256": "1fyz8bampcqzpbyg0l1g0nvv2m5n8000xy5yl05217dlxb448nnd"
+  }
+ },
+ {
+  "ename": "colorless-themes",
+  "commit": "996d2a04de493d6ce8f5638df4500774010dcfe9",
+  "sha256": "1f3yz20379hx7gb5621apd1qvfv8kapgkcpni06p870w5p7ppmcl",
+  "fetcher": "git",
+  "url": "https://git.sr.ht/~lthms/colorless-themes.el",
+  "unstable": {
+   "version": [
+    20200325,
+    1307
+   ],
+   "commit": "2b4c341640c8191a39e4bc28d6cd04c7d6dcbb37",
+   "sha256": "0ni9cnrv464fk840i1ll241kzkiy1zc6nfrbdv3ciixxdxbshxbn"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "8e539097185704444a5dd5545924de92c11ba767",
+   "sha256": "1p16vxai8dj1vy4ahflwij1ldx00jzrjcinpgpc7wgh6ka748v11"
+  }
+ },
+ {
+  "ename": "colormaps",
+  "commit": "f4c795d9e323b08bc8354a6933a061644705a2ec",
+  "sha256": "16plhgpfz1wb58p6h8wxjhplhgv0mbj3f2xj34p6vydh44l8w8q2",
+  "fetcher": "github",
+  "repo": "lepisma/colormaps.el",
+  "unstable": {
+   "version": [
+    20171008,
+    2224
+   ],
+   "commit": "19fbb64a6288d505b9cf45c9b5a3eed0bfb135e2",
+   "sha256": "0kbhy8bpxqdr1kjczz2vm7chfpjprx2frpbh1gh9i1gwwx5k4myp"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "commit": "3a88961ba66b09a49ea5aa92b2b8776b2c92d68c",
+   "sha256": "083hks2zzalizdsgabiwc1kd114r748v5i3w3kfk8pv37i2gay35"
+  }
+ },
+ {
+  "ename": "column-enforce-mode",
+  "commit": "91bebef8e97665a5d076c557d559367911a25ea2",
+  "sha256": "1qh7kwr65spbbnzvq744gkksx50x04zs0nwn5ly60swc05d05lcg",
+  "fetcher": "github",
+  "repo": "jordonbiondo/column-enforce-mode",
+  "unstable": {
+   "version": [
+    20171030,
+    1900
+   ],
+   "commit": "2341a2b6a33d4b8b74c35062ec9cfe1bffd61944",
+   "sha256": "0rcxb7daxxrp5f1i5cbv25viwawbbsn4ij1mnlclp5wz7ilcy2rs"
+  }
+ },
+ {
+  "ename": "com-css-sort",
+  "commit": "6c2287c7b4c543e92ccfab120388b2c05174d2db",
+  "sha256": "11cdp3cgcwwi06njjpwryh3vwmkdh2rzlin77p630590bynagw8c",
+  "fetcher": "github",
+  "repo": "jcs-elpa/com-css-sort",
+  "unstable": {
+   "version": [
+    20190723,
+    1714
+   ],
+   "deps": [
+    "cl-lib",
+    "s"
+   ],
+   "commit": "b0491d5340c5f5c516b44aa7bfef6f6cf2998484",
+   "sha256": "0d6pxwi5mbb98zzx3j55w221541674d69pxmf55yji6hly8yqavv"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    5
+   ],
+   "deps": [
+    "cl-lib",
+    "s"
+   ],
+   "commit": "e3c6a3a88c8f7e3ce7a5c6756b47a7aba7ffe149",
+   "sha256": "0c3pcgr95nhf2yx66hxiwwl6k2fqz8cpmr0y0fxzahkmvc4c9zi6"
+  }
+ },
+ {
+  "ename": "comb",
+  "commit": "1b236a1f3953475cbd7eb5c4289b092818ae08cf",
+  "sha256": "0n4pkigr07hwj5nb0ngs6ay80psqv7nppp82rg5w38qf0mjs3pkp",
+  "fetcher": "github",
+  "repo": "cyrus-and/comb",
+  "unstable": {
+   "version": [
+    20200411,
+    1040
+   ],
+   "commit": "59e025c3afb867706b869ac4bf2623665eb99821",
+   "sha256": "16swixv88nbs6gscgzy5lizi66pw0c9fm03xpm1kinan8v2s9m3v"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "8a68d313bf429763eb8aa78ece00230a668f2a1f",
+   "sha256": "1hh1lkan1ch5xyzrpfgzibf8dxmvaa1jfwlxyyhpnfs5h69h3245"
+  }
+ },
+ {
+  "ename": "comint-hyperlink",
+  "commit": "3c3bc7c897bfc5fafcda33d9837e6f3ff4da3692",
+  "sha256": "17fvg00r2wjwxa747v8yvgv70rd287crhhxxmp6nchfklw408ai6",
+  "fetcher": "github",
+  "repo": "matthewbauer/comint-hyperlink",
+  "unstable": {
+   "version": [
+    20191104,
+    2224
+   ],
+   "commit": "a7878825788ff6b9d6b8a5adf0214a028bad895e",
+   "sha256": "19fww5aciqx4h67hpmzf564n0ygzg69v1sk1qjyhbs27pq5zrjmq"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    6
+   ],
+   "commit": "a7878825788ff6b9d6b8a5adf0214a028bad895e",
+   "sha256": "19fww5aciqx4h67hpmzf564n0ygzg69v1sk1qjyhbs27pq5zrjmq"
+  }
+ },
+ {
+  "ename": "comint-intercept",
+  "commit": "7d38188ec2d6e16714de9bb24ebd1ea89c7df3da",
+  "sha256": "1m2fn02n7aphlqmiaxgwp8jqg60sq4001cnkdxn5wb3w1hxy5qvq",
+  "fetcher": "github",
+  "repo": "hying-caritas/comint-intercept",
+  "unstable": {
+   "version": [
+    20200106,
+    454
+   ],
+   "commit": "3c9a6125e450435b79ab5e6466f830e57c5e0a30",
+   "sha256": "06cvphbnhb89h4ss3y87lladb0dcsrkij8pfv65ky06brc1jl0hx"
+  }
+ },
+ {
+  "ename": "command-log-mode",
+  "commit": "8426ca3c543178018f7feae6f0076af67a898483",
+  "sha256": "11jq6055bvpwvrm0b8cgab25wa2mcyylpz4j56h1nqj7cnhb6ppj",
+  "fetcher": "github",
+  "repo": "lewang/command-log-mode",
+  "unstable": {
+   "version": [
+    20160413,
+    447
+   ],
+   "commit": "af600e6b4129c8115f464af576505ea8e789db27",
+   "sha256": "06hll2frlx4sg9fj13a7ipq9y24isbjkjm6034xswhak40m7g1ii"
+  }
+ },
+ {
+  "ename": "command-queue",
+  "commit": "8fd6a70036e88039c850d280fbac782d04790a5f",
+  "sha256": "1jaywdg8vcf1v6ayy1zd5mjs0x3s96845ig9ssb08397lfqasx1k",
+  "fetcher": "github",
+  "repo": "Yuki-Inoue/command-queue",
+  "unstable": {
+   "version": [
+    20160328,
+    1725
+   ],
+   "commit": "f327c6f852592229a755ec6de0c62c6aeafd6659",
+   "sha256": "0216hzdl4h1jssw5g2y95z4yx7abqsaxpk1s78r35w5cnx7kplrc"
+  }
+ },
+ {
+  "ename": "commander",
+  "commit": "8b308e05dd85856addbc04a9438f5026803cebd7",
+  "sha256": "17y0hg6a90hflgwn24ww23qmvc1alzivpipca8zvpf0nih4fl393",
+  "fetcher": "github",
+  "repo": "rejeep/commander.el",
+  "unstable": {
+   "version": [
+    20140120,
+    1852
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "c93985dc318fe89e5a29abc21d19fb41e2fd14d2",
+   "sha256": "0mlabiraagqwl17payils5589fr2mivvkzrfic6ndsipryab6rfc"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "2c8a57b9c619e29ccbe2d5a85921b9c689e95bf9",
+   "sha256": "1j6hhyzww7wfwk6bllbb5mk4hw4qs8hsgfbfdifsam9c6i4spm45"
+  }
+ },
+ {
+  "ename": "comment-dwim-2",
+  "commit": "4ac6ac97875117013515a36c9a4452fbd6c0d74c",
+  "sha256": "1w9w2a72ygsj5w47vjqcljajmmbz0mi8dhz5gjnpwxjwsr6fn6lj",
+  "fetcher": "github",
+  "repo": "remyferre/comment-dwim-2",
+  "unstable": {
+   "version": [
+    20190105,
+    1653
+   ],
+   "commit": "3dfdd58495c46a37708344a57c5c52beca6b2c1c",
+   "sha256": "08pi3y12i6wx69aj09nk5qd6lplwxq5wz3m7w5701988q39x62xl"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    0
+   ],
+   "commit": "3dfdd58495c46a37708344a57c5c52beca6b2c1c",
+   "sha256": "08pi3y12i6wx69aj09nk5qd6lplwxq5wz3m7w5701988q39x62xl"
+  }
+ },
+ {
+  "ename": "comment-or-uncomment-sexp",
+  "commit": "d1e87e59e1a7c7c7d6eab7dd6b37114e567e5c13",
+  "sha256": "150gg1i593wgfzy0bg8jwgfc7a6hjnz84m2digjf3fpggvwv0rf8",
+  "fetcher": "github",
+  "repo": "Malabarba/comment-or-uncomment-sexp",
+  "unstable": {
+   "version": [
+    20190225,
+    1122
+   ],
+   "commit": "bec730d3fc1e6c17ff1339eb134af16c034a4d95",
+   "sha256": "1jhyr854qraza75hjza8fjz2s06iydmdsa61vf5bf2kj5g1bfqkj"
+  }
+ },
+ {
+  "ename": "comment-tags",
+  "commit": "6ac71f4ffc19bce4f571001f9270d5be855dfc3c",
+  "sha256": "13slv150zch0b7zpxa2dbqjzpqh0iy559m6rc0zs0dwdagzryp3i",
+  "fetcher": "github",
+  "repo": "vincekd/comment-tags",
+  "unstable": {
+   "version": [
+    20170910,
+    1735
+   ],
+   "commit": "7d914097f0a03484af71e621db533737fc692f58",
+   "sha256": "0s86a7078arck9z4gzkp2hnxyklprl0zh5hsw7nkyyscjydly80i"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "pkg-info"
+   ],
+   "commit": "293a30026d7750f6657d6c2e6d6428abf1d7db5a",
+   "sha256": "06s0phgqpzkkv81gl0cm6x8rjs53lhs8b2j56xamflqiydq0fz7n"
+  }
+ },
+ {
+  "ename": "commentary-theme",
+  "commit": "852b5f83c9870209080d2ed39fede3215ae43e64",
+  "sha256": "1s3g40f0r0v8m1qqldvw64vs43i5xza7rwkvhxqcqmj6p1a7mqqw",
+  "fetcher": "github",
+  "repo": "pzel/commentary-theme",
+  "unstable": {
+   "version": [
+    20181213,
+    1045
+   ],
+   "commit": "dede0f8ecb72156fa6ae81198ea570ead02997ff",
+   "sha256": "1ykicd6yp495s7795mlfwd54lp0427j8mw6ajbqsw2c2w0f7jcjr"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "commit": "9a825ae98166c9dbbf106e7be62ee69dd9f0342f",
+   "sha256": "1x30iyvvxggbh7xvp8lwpirvpqijchqf2fdaw4xrlbw5vajlaxcx"
+  }
+ },
+ {
+  "ename": "commenter",
+  "commit": "437afab17b22c0c559617afa06923b5bc73a3ae8",
+  "sha256": "01bm8jbj6xw23nls4fps6zwjkgvcsjhmn3l3ncqd764kwhxdx8q3",
+  "fetcher": "github",
+  "repo": "yuutayamada/commenter",
+  "unstable": {
+   "version": [
+    20160219,
+    1627
+   ],
+   "deps": [
+    "let-alist"
+   ],
+   "commit": "6d1885419434ba779270c6fda0e30d390bb074bd",
+   "sha256": "1jwd3whag39qhzhbsfivzdlcr6vj37dv5ychkhmilw8v6dfdnpdb"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    2
+   ],
+   "deps": [
+    "let-alist"
+   ],
+   "commit": "6d1885419434ba779270c6fda0e30d390bb074bd",
+   "sha256": "1jwd3whag39qhzhbsfivzdlcr6vj37dv5ychkhmilw8v6dfdnpdb"
+  }
+ },
+ {
+  "ename": "commify",
+  "commit": "fec4b048e1dc78a07acce7d2e6527b9f417d06d5",
+  "sha256": "1jc6iqa4hna3277hx13scfcqzkr43yv6gndbxv7qf4ydi01ysd0m",
+  "fetcher": "github",
+  "repo": "ddoherty03/commify",
+  "unstable": {
+   "version": [
+    20161106,
+    2334
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "78732c2fa6c1a10288b7436d7c561ec9ebdd41be",
+   "sha256": "1kb3cbjp69niq8ravh273dma0mnkf1v2ja372ahxfsq1janrkkm6"
+  }
+ },
+ {
+  "ename": "common-lisp-snippets",
+  "commit": "48d0166ccd3dcdd3df4719349778c6c5ab6872ca",
+  "sha256": "0ig8cz00cbfx0jckqk1xhsvm18ivl2mjvcn65s941nblsywfvxjl",
+  "fetcher": "github",
+  "repo": "mrkkrp/common-lisp-snippets",
+  "unstable": {
+   "version": [
+    20180226,
+    1523
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "c82ebf18f4ad49f390dd96ffcc59f8683c1a868b",
+   "sha256": "0xz4jv0l7vgq7rivx8c1m3hahyyk7cj9cadrq3rg9rybhzski57d"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "fc5c2683952328927a6d1c1f2694b85ddf7e9053",
+   "sha256": "1835kg05794p1wdi7fsmpzlnnqy79dgfnfrxjfjj2j1gzcwmynsw"
+  }
+ },
+ {
+  "ename": "company",
+  "commit": "96e7b4184497d0d0db532947f2801398b72432e4",
+  "sha256": "0v4x038ly970lkzb0n8fbqssfqwx1p46xldr7nss32jiqvavr4m4",
+  "fetcher": "github",
+  "repo": "company-mode/company-mode",
+  "unstable": {
+   "version": [
+    20200510,
+    1614
+   ],
+   "commit": "1c7a87283146f429c5076e8ea0a559556a4d4272",
+   "sha256": "0dvvdyg8fc6jzcl1hgrh0cr3nz4vyw5i9xz5w3mc3mn7fixbdcr3"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    12
+   ],
+   "commit": "490d3e4e7ef3fbc90fb3e8747f902bf839a924cc",
+   "sha256": "0c31amc6gyfkmb1ii6mm56c75za1yxkj2iyhrjc45nn2mrh7yj7a"
+  }
+ },
+ {
+  "ename": "company-anaconda",
+  "commit": "c756ccbae044bc23131060355532261aa9a12409",
+  "sha256": "0kq8vh4i92n0b42jyy8a2ra2jk27l6hmzq8r2hsyl6zj7qqzymrx",
+  "fetcher": "github",
+  "repo": "pythonic-emacs/company-anaconda",
+  "unstable": {
+   "version": [
+    20200404,
+    1859
+   ],
+   "deps": [
+    "anaconda-mode",
+    "cl-lib",
+    "company",
+    "dash",
+    "s"
+   ],
+   "commit": "da1566db41a68809ef7f91ebf2de28118067c89b",
+   "sha256": "1x260p0fj33xg6hkrz9q9dqrpibp4yn2n9is3a6s4xxfb485rz0g"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "anaconda-mode",
+    "cl-lib",
+    "company",
+    "dash",
+    "s"
+   ],
+   "commit": "182a8fdabc01630f255beeb2708728c0cd5c6316",
+   "sha256": "1rqf9i4l32njpwx4aiwxqr994g3jzispwprs6nwjfvg70xkvm4m0"
+  }
+ },
+ {
+  "ename": "company-ansible",
+  "commit": "7b44cd4bd9f9a7c942ca3f3bd88b2ce61ffff130",
+  "sha256": "084l9dr2hvm00952y4m3jhchzxjhcd61sfn5ywj9b9a1d4sr110d",
+  "fetcher": "github",
+  "repo": "krzysztof-magosa/company-ansible",
+  "unstable": {
+   "version": [
+    20200306,
+    1441
+   ],
+   "deps": [
+    "company"
+   ],
+   "commit": "79dd421b161efa49fbdffad57fa40edb41f484a3",
+   "sha256": "0b05n6m47vyhirxfqzapzl4gf179aks1296qsw1sw8v84kb5kl0x"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    0
+   ],
+   "deps": [
+    "company"
+   ],
+   "commit": "2ea0be24f003dc64a30412df76298152be29103c",
+   "sha256": "1h3cl975k7lbk8x0r0f2yjw8nc5w455npc3nn4jx5nynirvz3i7n"
+  }
+ },
+ {
+  "ename": "company-arduino",
+  "commit": "45350f816c4f5249792d29f97ef91f8c0685b983",
+  "sha256": "1bch447lllikip1xd90kdgssgc67sl04a70fxqkqlrc1bs6gkkws",
+  "fetcher": "github",
+  "repo": "yuutayamada/company-arduino",
+  "unstable": {
+   "version": [
+    20160306,
+    1739
+   ],
+   "deps": [
+    "arduino-mode",
+    "cl-lib",
+    "company",
+    "company-c-headers",
+    "company-irony",
+    "irony"
+   ],
+   "commit": "d7e369702b8eee63e6dfdeba645ce28b6dc66fb1",
+   "sha256": "06v7y7gxlxrxdaqy8c93niy1di80r738cq7rkghnhqi174pwl1wv"
+  }
+ },
+ {
+  "ename": "company-auctex",
+  "commit": "189e1a60894db0787a4468b120fbab84be1b5d59",
+  "sha256": "1jia80sqmm83kzjcf1h1d9iz2k4k9albzvfka5hx6hpa4h8nm5q4",
+  "fetcher": "github",
+  "repo": "alexeyr/company-auctex",
+  "unstable": {
+   "version": [
+    20180725,
+    1912
+   ],
+   "deps": [
+    "auctex",
+    "company",
+    "yasnippet"
+   ],
+   "commit": "48c42c58ce2f0e693301b0cb2d085055410c1b25",
+   "sha256": "10qn7frn5wcmrlci3v6iliqzj7r9dls87h9zp3xkgrgn4bqprfp8"
+  }
+ },
+ {
+  "ename": "company-axiom",
+  "commit": "8b4c6b03c5ff78ce327dcf66b175e266bbc53dbf",
+  "sha256": "061n8zn11r5a9m96sqnw8kx252n1m401cmcyqla8n9valjbnvsag",
+  "fetcher": "git",
+  "url": "https://bitbucket.org/pdo/axiom-environment",
+  "unstable": {
+   "version": [
+    20191027,
+    1928
+   ],
+   "deps": [
+    "axiom-environment",
+    "company"
+   ],
+   "commit": "25932da0dc40c6877463cbf019b14ab05a6b0164",
+   "sha256": "1xbps0k4x982gh1a0pscpx4kayjjyykvm5pyj516wwkya7bac4a6"
+  }
+ },
+ {
+  "ename": "company-bibtex",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1b96p5qyxl6jlq0kz0dbma5pwvgqcy4x4gmpknjqrjabafbq1ynn",
+  "fetcher": "github",
+  "repo": "gbgar/company-bibtex",
+  "unstable": {
+   "version": [
+    20171105,
+    644
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "parsebib"
+   ],
+   "commit": "da67faf3a6faba8e7f1b222dedfc5521b02c7655",
+   "sha256": "0p1kwcpjd2rya6dlp1w48pxd5x0qxyyamrfzwha5wbd5y7m2lh62"
+  }
+ },
+ {
+  "ename": "company-box",
+  "commit": "a54879f4dd4dcb6867680567731547d604ad02bb",
+  "sha256": "0v39gja3jp8b2xfn9da93xsh8mihizwbg0gqp2yyczaxjm8ga23i",
+  "fetcher": "github",
+  "repo": "sebastiencs/company-box",
+  "unstable": {
+   "version": [
+    20200511,
+    401
+   ],
+   "deps": [
+    "company",
+    "dash",
+    "dash-functional"
+   ],
+   "commit": "452f083f6c11793a3723224bce42898a2bedc0e1",
+   "sha256": "07il7z52ywvkqy5zpkvzsaxsjqx8dqgd91cpba05vywpsl3lis30"
+  }
+ },
+ {
+  "ename": "company-c-headers",
+  "commit": "d97b5c53967e0ff767b3654c52622f4b5ddf1985",
+  "sha256": "1715vnjr5cjiq8gjcd3idnpnijg5cg3sw3f8gr5x2ixcrip1hx3a",
+  "fetcher": "github",
+  "repo": "randomphrase/company-c-headers",
+  "unstable": {
+   "version": [
+    20190825,
+    1631
+   ],
+   "deps": [
+    "company"
+   ],
+   "commit": "5e676ab0c2f287c868b1e3931afd4c78895910cd",
+   "sha256": "18zyzhjnlbwblgqgr876ynrc7k736lg5s6bgxmxph7gymdz4fb4h"
+  }
+ },
+ {
+  "ename": "company-cabal",
+  "commit": "ee888b1ba57b6af3a3330607898810cd248862db",
+  "sha256": "0pbjidj88c9qri6xw8023yqwnczad5ig224cbsz6vsmdla2nlxra",
+  "fetcher": "github",
+  "repo": "iquiw/company-cabal",
+  "unstable": {
+   "version": [
+    20170917,
+    1317
+   ],
+   "deps": [
+    "cl-lib",
+    "company"
+   ],
+   "commit": "62112a7259e24bd6c08885629a185afe512b7d3d",
+   "sha256": "1gf45xwjzdm8i4q6c6khk4dbg1mmp2r0awz2sjr4dcr2dbd1n7mg"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "company"
+   ],
+   "commit": "f458de88cad16ed48a605e8347e56433e73dcef8",
+   "sha256": "0ll9dxzsgrpy4psz3dqhzny990lfccn63swcyfvl8mnqgwbrq8k0"
+  }
+ },
+ {
+  "ename": "company-coq",
+  "commit": "7f89e3097c654774981953ef125679fec0b5b7c9",
+  "sha256": "1iagm07ckf60kg4i8m4n0gfmv0brqc4dcn7lkcz229r3f4kyqksa",
+  "fetcher": "github",
+  "repo": "cpitclaudel/company-coq",
+  "unstable": {
+   "version": [
+    20200130,
+    2058
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "company-math",
+    "dash",
+    "yasnippet"
+   ],
+   "commit": "f9dba9ddff7da99a93d8a6e26d9b1d813bc96b2f",
+   "sha256": "1hl8gr8afx2i5bia7vq3vn4shbaz8fps3h30ldvq141kfvmcp8jm"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "company-math",
+    "dash",
+    "yasnippet"
+   ],
+   "commit": "a4e0625725e4f54d202e746bb41b8bc14c14ddef",
+   "sha256": "0dxi4h8xqq5647k7h89s4pi8nwyj3brlhsckrv3p3b1g4dr6mk3b"
+  }
+ },
+ {
+  "ename": "company-ctags",
+  "commit": "b548dbf4a388d2f69205786351a1d4336e0c0e88",
+  "sha256": "17j7cl5b6vd7ymbci83s0nfs8zn4h8zvir57cp9wl2z5wcjyxzcn",
+  "fetcher": "github",
+  "repo": "redguardtoo/company-ctags",
+  "unstable": {
+   "version": [
+    20200407,
+    803
+   ],
+   "deps": [
+    "company"
+   ],
+   "commit": "b159e45b38226e046cf6fb7d08a0cf864ebbf772",
+   "sha256": "0h0k06c9fabyz6akka1bpwkz69wzl7ajcm0p108xdf5lymc75v5h"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "deps": [
+    "company"
+   ],
+   "commit": "3d21eaa511b5f0ca55205f203d28fd10ea1d3b39",
+   "sha256": "0lj5gkj2dl0c7sva8bi3bng2gm90sjq15g7w8r9nz70666szdr1i"
+  }
+ },
+ {
+  "ename": "company-dcd",
+  "commit": "ad5be8c53911271fba03a88da7e9d518c6508ffe",
+  "sha256": "03849k4jzs23iglk9ghcq6283c9asffcq4dznypcjax7y4x113vd",
+  "fetcher": "github",
+  "repo": "tsukimizake/company-dcd",
+  "unstable": {
+   "version": [
+    20190116,
+    256
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "flycheck-dmd-dub",
+    "ivy",
+    "popwin",
+    "yasnippet"
+   ],
+   "commit": "11e90949e546fcff1b1cd40887ad7b6701aa1653",
+   "sha256": "1n4f2hqmvwysbb1l6c5ah58b1bq8vxznk3ysszz8rs5gpqsizqd4"
+  }
+ },
+ {
+  "ename": "company-dict",
+  "commit": "212c077def5b4933c6001056132181e1a5850a7c",
+  "sha256": "1377b40f1j4rmw7lnhy1zsm6r234ds5zsn02v1ajm3bzrpkkmin0",
+  "fetcher": "github",
+  "repo": "hlissner/emacs-company-dict",
+  "unstable": {
+   "version": [
+    20190302,
+    5
+   ],
+   "deps": [
+    "company",
+    "parent-mode"
+   ],
+   "commit": "cd7b8394f6014c57897f65d335d6b2bd65dab1f4",
+   "sha256": "11whnjmy5dyg4wkwabpip8hqsmqys193m7aqbd7jl4hmq24hrwsw"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    8
+   ],
+   "deps": [
+    "company",
+    "parent-mode"
+   ],
+   "commit": "cd7b8394f6014c57897f65d335d6b2bd65dab1f4",
+   "sha256": "11whnjmy5dyg4wkwabpip8hqsmqys193m7aqbd7jl4hmq24hrwsw"
+  }
+ },
+ {
+  "ename": "company-distel",
+  "commit": "90fff35dd9709b06802edef89d1fe6a96b7115a6",
+  "sha256": "1jklxwkm2dvpcasmy9vl48dxq3q9s4dlk159ica39z0kqpkpzmgw",
+  "fetcher": "github",
+  "repo": "sebastiw/distel-completion",
+  "unstable": {
+   "version": [
+    20180827,
+    1344
+   ],
+   "deps": [
+    "distel-completion-lib"
+   ],
+   "commit": "acc4c0a5521904203d797fe96b08e5fae4233c7e",
+   "sha256": "0yvp3dwa9mwfyrqla27ycwyjad4bp1267bxv0chxcr4528hnygl3"
+  }
+ },
+ {
+  "ename": "company-emacs-eclim",
+  "commit": "1e9d3075587fbd9ca188535fd945a7dc451c6d7e",
+  "sha256": "1l56hcy0y3cr38z1pjf0ilsdqdzvj3zwd40markm6si2xhdr8xig",
+  "fetcher": "github",
+  "repo": "emacs-eclim/emacs-eclim",
+  "unstable": {
+   "version": [
+    20180911,
+    1121
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "eclim"
+   ],
+   "commit": "222ddd48fcf0ee01592dec77c58e0cf3f2ea1100",
+   "sha256": "0jdddf8krvg379wlay1xs27qlxpi87nz6v2i526pk59mmg8jrnvc"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "eclim"
+   ],
+   "commit": "8203fbf8544e65324a948a67718f7a16ba2d52e6",
+   "sha256": "10bbbxhvlwm526g1wib1f87grnayirlg8jbsvmpzxr9nmdjgikz3"
+  }
+ },
+ {
+  "ename": "company-emoji",
+  "commit": "5733dccdffe97911a30352fbcda2900c33d79810",
+  "sha256": "1mflqqw9gnfcqjb6g8ivdfl7s4mdyjg7j0457hamgyvgvpxsh8x3",
+  "fetcher": "github",
+  "repo": "dunn/company-emoji",
+  "unstable": {
+   "version": [
+    20191226,
+    1915
+   ],
+   "deps": [
+    "cl-lib",
+    "company"
+   ],
+   "commit": "fc45b56f3e2081d794f243bce705e77d4e29fc06",
+   "sha256": "0r9zcbm3nb3zw5cwrkl098v5b49jbga5404bj7j55g6k4rwkjar2"
+  },
+  "stable": {
+   "version": [
+    2,
+    5,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "company"
+   ],
+   "commit": "fc45b56f3e2081d794f243bce705e77d4e29fc06",
+   "sha256": "0r9zcbm3nb3zw5cwrkl098v5b49jbga5404bj7j55g6k4rwkjar2"
+  }
+ },
+ {
+  "ename": "company-erlang",
+  "commit": "ca96ed0b5d6f8aea4de56ddeaa003b9c81d96219",
+  "sha256": "0qlc89c05523kjzsb7j3yfi022la47kgixl74ggkafhn60scwdm7",
+  "fetcher": "github",
+  "repo": "s-kostyaev/company-erlang",
+  "unstable": {
+   "version": [
+    20170123,
+    538
+   ],
+   "deps": [
+    "company",
+    "ivy-erlang-complete"
+   ],
+   "commit": "bc0524a16f17b66c7397690e4ca0e004f09ea6c5",
+   "sha256": "04wm3i65fpzln7sdcny88hfjfm0n7wy44ffsr3697x4l95d0bnyh"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "company",
+    "ivy-erlang-complete"
+   ],
+   "commit": "bc0524a16f17b66c7397690e4ca0e004f09ea6c5",
+   "sha256": "04wm3i65fpzln7sdcny88hfjfm0n7wy44ffsr3697x4l95d0bnyh"
+  }
+ },
+ {
+  "ename": "company-flow",
+  "commit": "63d346c14af1c5c138d14591a4d6dbc44d9bc429",
+  "sha256": "07brjfgiwv4dxjf0sca84allcy3qlp4jrkz7ki1qc5wmb5sd209l",
+  "fetcher": "github",
+  "repo": "aaronjensen/company-flow",
+  "unstable": {
+   "version": [
+    20180225,
+    2159
+   ],
+   "deps": [
+    "company",
+    "dash"
+   ],
+   "commit": "76ef585c70d2a3206c2eadf24ba61e59124c3a16",
+   "sha256": "0zs9cblnbkxa0dxw4lyllmybqizxcdx96gv8jlhx20nrjpi78piw"
+  }
+ },
+ {
+  "ename": "company-flx",
+  "commit": "f27d718ee67f8c91b208a35adbbcdac67bbb89ce",
+  "sha256": "1r4jcfzrhdpclblfrmi4qbl8dnhc2d7d4c1425xnslg7bhwd2vxn",
+  "fetcher": "github",
+  "repo": "PythonNut/company-flx",
+  "unstable": {
+   "version": [
+    20180103,
+    518
+   ],
+   "deps": [
+    "company",
+    "flx"
+   ],
+   "commit": "16ca0d2f84e8e768bf2db8c5cfe421230a00bded",
+   "sha256": "09zaaqi8587n1fv5pxnrdmdll319s8f66xkc41p51gcs2p7qa5w1"
+  }
+ },
+ {
+  "ename": "company-fuzzy",
+  "commit": "6c2287c7b4c543e92ccfab120388b2c05174d2db",
+  "sha256": "1xr5bilhj0xps0i0rgdvspq8yfiqkybq682jhzqjs1qzrm91apn0",
+  "fetcher": "github",
+  "repo": "jcs-elpa/company-fuzzy",
+  "unstable": {
+   "version": [
+    20190812,
+    204
+   ],
+   "deps": [
+    "company",
+    "s"
+   ],
+   "commit": "2af24f053465ab370566a49c231d541ca9509850",
+   "sha256": "0ki049jpd4xymagaxd4zvnj3bm7d7d797xa1bm8lfi701m2jjlgg"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    3
+   ],
+   "deps": [
+    "company",
+    "s"
+   ],
+   "commit": "a97f55b60f427e536e637898d12792154d134aab",
+   "sha256": "1iw1vk1pgdacvfh17n45kk98rxml3f6kxnijmpp7fzz4q07yiv7w"
+  }
+ },
+ {
+  "ename": "company-ghc",
+  "commit": "28f6a983444f796c81df7e5ee94d74c480b21298",
+  "sha256": "07adykza4dqs64bk8vjmgryr54khxmcy28hms5z8i1qpsk9vmvnn",
+  "fetcher": "github",
+  "repo": "iquiw/company-ghc",
+  "unstable": {
+   "version": [
+    20170918,
+    833
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "ghc"
+   ],
+   "commit": "8b264b5c3c0e42c0d0c4e9315559896c9b0edfdc",
+   "sha256": "0cmyrz251ls6ygyas455mj4pnmzfdqag1sp8v5zggw74wsl5wm23"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "ghc"
+   ],
+   "commit": "64e4f9d0cf9377138a8dee34c69e7d578fd71090",
+   "sha256": "0y9i0q37xjbnlnlxq7xjvnpn6ykzbd55g6nbw10z1wg0m2v7f96r"
+  }
+ },
+ {
+  "ename": "company-ghci",
+  "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228",
+  "sha256": "1qps4bgnmwbaml3dhx3lkcznngl8w5j58pacw35kbk4q8r69s4kx",
+  "fetcher": "github",
+  "repo": "horellana/company-ghci",
+  "unstable": {
+   "version": [
+    20190707,
+    311
+   ],
+   "deps": [
+    "company",
+    "haskell-mode"
+   ],
+   "commit": "a1d25652583ab4666c5a78cac18cd8039776b50d",
+   "sha256": "0sbkmsrvjikf6y53nsd5n0zhdp4hms7cw88w9qln136xjp5vgxqj"
+  }
+ },
+ {
+  "ename": "company-glsl",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "1wzfdp6xz4nydfdcba8vs1za60lbfa0v4b8007dzn2fyg26rl326",
+  "fetcher": "github",
+  "repo": "guidoschmidt/company-glsl",
+  "unstable": {
+   "version": [
+    20171015,
+    1749
+   ],
+   "deps": [
+    "company",
+    "glsl-mode"
+   ],
+   "commit": "a262c12c3bcd0807718c4edcaf2b054e30ef0e26",
+   "sha256": "0338bym8ifvkgpbc4vyzf3nmlp6rc8lihyxcbym5m08612ln78mk"
+  }
+ },
+ {
+  "ename": "company-go",
+  "commit": "ef45683cbfe82bf8a9d6f3f1c59e3cf340accbe3",
+  "sha256": "1zhdckq1c9jzi5cf90w2m77fq6l67rjri4lnf8maq82gxqzk6wa5",
+  "fetcher": "github",
+  "repo": "mdempsky/gocode",
+  "unstable": {
+   "version": [
+    20190203,
+    19
+   ],
+   "deps": [
+    "company",
+    "go-mode"
+   ],
+   "commit": "4acdcbdea79de6b3dee1c637eca5cbea0fdbe37c",
+   "sha256": "0i1hc089gb6a4mcgg56vn5l0q96wrlza2n08l4349s3dc2j559fb"
+  },
+  "stable": {
+   "version": [
+    20150303
+   ],
+   "deps": [
+    "company"
+   ],
+   "commit": "eef10fdde96a12528a6da32f51bf638b2863a3b1",
+   "sha256": "03snnra31b5j6iy94gql240vhkynbjql9b4b5j8bsqp9inmbsia3"
+  }
+ },
+ {
+  "ename": "company-inf-ruby",
+  "commit": "ec0f597ceed00c68faa030ff0bc5676c513919f1",
+  "sha256": "0cb1w0sxgb5jf0p2a5s2i4d511lsjjhyaqkqlwjz8nk4w14n0zxm",
+  "fetcher": "github",
+  "repo": "company-mode/company-inf-ruby",
+  "unstable": {
+   "version": [
+    20140805,
+    2054
+   ],
+   "deps": [
+    "company",
+    "inf-ruby"
+   ],
+   "commit": "fe3e4863bc971fbb81edad447efad5795ead1b17",
+   "sha256": "0fnv4rvvs9rqzrs86g23jcrpg0rcgk25299hm6jm08ia0kjjby1m"
+  }
+ },
+ {
+  "ename": "company-irony",
+  "commit": "d2b6a8d57b192325dcd30fddc9ff8dd1516ad680",
+  "sha256": "15adamk1b9y1i6k06i5ahf1wn70cgwlhgk0x6fk8pl5izg05z1km",
+  "fetcher": "github",
+  "repo": "Sarcasm/company-irony",
+  "unstable": {
+   "version": [
+    20190124,
+    2346
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "irony"
+   ],
+   "commit": "b44711dfce445610c1ffaec4951c6ff3882b216a",
+   "sha256": "0s8v6kfgngpz6ic0g0l6xi6j9692xpmcamidmbk3l2blb172mggr"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "irony"
+   ],
+   "commit": "52aca45bcd0f2cb0648fcafa2bbb4f8ad4b2fee7",
+   "sha256": "1qgyam2vyjw90kpxns5cd6bq3qiqjhzpwrlvmi18vyb69qcgqd8a"
+  }
+ },
+ {
+  "ename": "company-irony-c-headers",
+  "commit": "9f9f62d8ef438a9ba4872bd7731768eddc5905de",
+  "sha256": "0kiag5ggmc2f5c3gd8nn40x16i686jpdrfrflgrz2aih8p3g6af8",
+  "fetcher": "github",
+  "repo": "hotpxl/company-irony-c-headers",
+  "unstable": {
+   "version": [
+    20151018,
+    909
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "irony"
+   ],
+   "commit": "72c386aeb079fb261d9ec02e39211272f76bbd97",
+   "sha256": "1f462v8xq2hdsr4ks4i79icpfz6fjpb4q7khnx6si55agxj3rvaq"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "irony"
+   ],
+   "commit": "ba304fe7eebdff90bbc7dea063b45b82638427fa",
+   "sha256": "1x2dfjmy86icyv2g1y5bjlr87w8rixqdcndkwm1sba6ha277wp9i"
+  }
+ },
+ {
+  "ename": "company-jedi",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "0a1p00jcvslm7h08kzdf6by9v4lf850jb2ki8gl8hgdcf5yvkdyi",
+  "fetcher": "github",
+  "repo": "emacsorphanage/company-jedi",
+  "unstable": {
+   "version": [
+    20200324,
+    25
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "jedi-core"
+   ],
+   "commit": "5232fbc1fdbfc81b1dd883afb720338c3e39556b",
+   "sha256": "155dba3qim7r8xhrv6dkhzhcc2km9761g5d3qmgd37jnk0mmd8l0"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "jedi-core"
+   ],
+   "commit": "ad49407451c7f28fe137f9c8f3a7fc89e8693a1b",
+   "sha256": "1ihqapp4dv92794rsgyq0rmhwika60cmradqd4bn9b72ss6plxs1"
+  }
+ },
+ {
+  "ename": "company-lean",
+  "commit": "42f4d6438c8aeb94ebc1782f2f5e2abd17f0ffde",
+  "sha256": "1hqkn7w5dyznf7i3r3132q8x31r74q188jsm5kdrjqgbwak2p91a",
+  "fetcher": "github",
+  "repo": "leanprover/lean-mode",
+  "unstable": {
+   "version": [
+    20171102,
+    1454
+   ],
+   "deps": [
+    "company",
+    "dash",
+    "dash-functional",
+    "f",
+    "lean-mode",
+    "s"
+   ],
+   "commit": "65b55b1711fb61129312044d5ac7e6a2c2ee245c",
+   "sha256": "1zmw8950qhry2ixk2ng0pg4j0vwx11nvjlrpab9jg6x47ys9j65n"
+  }
+ },
+ {
+  "ename": "company-lsp",
+  "commit": "5125f53307c1af3d9ccf2bae3c25e7d23dfe1932",
+  "sha256": "09nbi6vxw8l26gfgsc1k3bx4m8i1px1b0jxaywszky5bv4fdy03l",
+  "fetcher": "github",
+  "repo": "tigersoldier/company-lsp",
+  "unstable": {
+   "version": [
+    20190612,
+    1553
+   ],
+   "deps": [
+    "company",
+    "dash",
+    "lsp-mode",
+    "s"
+   ],
+   "commit": "f921ffa0cdc542c21dc3dd85f2c93df4288e83bd",
+   "sha256": "0dd2plznnnc2l1gqhsxnvrs8n1scp6zbcd4457wrq9z2f7pb5ig2"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    0
+   ],
+   "deps": [
+    "company",
+    "dash",
+    "lsp-mode",
+    "s"
+   ],
+   "commit": "4eb6949f19892be7bf682381cde005791a48583a",
+   "sha256": "1hy1x2w0yp5brm7714d1hziz3rpkywb5jp3yj78ibmi9ifny9vri"
+  }
+ },
+ {
+  "ename": "company-lua",
+  "commit": "c8191ab2aaa72041be46091e363d216cf1b73fde",
+  "sha256": "13sm7ya2ndqxwdjarhxbmg7fvr3413c7p3n6yf1i4rabbliqsf2c",
+  "fetcher": "github",
+  "repo": "ptrv/company-lua",
+  "unstable": {
+   "version": [
+    20171108,
+    2306
+   ],
+   "deps": [
+    "company",
+    "f",
+    "lua-mode",
+    "s"
+   ],
+   "commit": "29f6819de4d691e5fd0b62893a9f4fbc1c6fcb52",
+   "sha256": "0ny2dcc7c585p7v3j6q0rpkbj1qmf2ismy8a5020jpr585xvz0hh"
+  }
+ },
+ {
+  "ename": "company-math",
+  "commit": "fadff01600d57f5b9ea9c0c47ed109e058114998",
+  "sha256": "0chig8k8l65bnd0a6734fiy0ikl20k9v2wlndh3ckz5a8h963g87",
+  "fetcher": "github",
+  "repo": "vspinu/company-math",
+  "unstable": {
+   "version": [
+    20200131,
+    2337
+   ],
+   "deps": [
+    "company",
+    "math-symbol-lists"
+   ],
+   "commit": "a796053590012e6a15c8b527b521ffc15d137bd0",
+   "sha256": "1y1fw926insgdl7ib9ynxjrxf3p6wfjkfxvf5vgdca7267cvcll1"
+  },
+  "stable": {
+   "version": [
+    1,
+    4
+   ],
+   "deps": [
+    "company",
+    "math-symbol-lists"
+   ],
+   "commit": "a796053590012e6a15c8b527b521ffc15d137bd0",
+   "sha256": "1y1fw926insgdl7ib9ynxjrxf3p6wfjkfxvf5vgdca7267cvcll1"
+  }
+ },
+ {
+  "ename": "company-nand2tetris",
+  "commit": "90421372b3f60b59762279ac805c61a984606d11",
+  "sha256": "1g2i33jjh7kbpzk835kbnqicf0w4cq5rqv934bqzz5kavj9cg886",
+  "fetcher": "github",
+  "repo": "CestDiego/nand2tetris.el",
+  "unstable": {
+   "version": [
+    20171201,
+    1813
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "nand2tetris"
+   ],
+   "commit": "33acee34d24b1c6a87db833b7d23449cf858f64f",
+   "sha256": "0sfa674g1qm280s0pc3n6qiiphj5i9ibknckx5capkrkxb5cwpkw"
+  }
+ },
+ {
+  "ename": "company-native-complete",
+  "commit": "b112834a7ab05829fbc9101151bf82440bf6e551",
+  "sha256": "18f62r8y9k5flkqhzz6sr2w3srdhb6cpzrcyl98pv0zy3dq49lp4",
+  "fetcher": "github",
+  "repo": "CeleritasCelery/emacs-native-shell-complete",
+  "unstable": {
+   "version": [
+    20200315,
+    2144
+   ],
+   "deps": [
+    "company",
+    "native-complete"
+   ],
+   "commit": "0f290514564d3733b35e4b48d70446c1a6eb4b41",
+   "sha256": "0i8bss7ipwsjfrgfri7d3f9pbpkdbfh8aqz8cawr2wvf4yayk8q5"
+  }
+ },
+ {
+  "ename": "company-nginx",
+  "commit": "fb8843cddfa9133ea9e2790e8a1d8051cd4dabea",
+  "sha256": "15pxz0v3zpshwri0v15yh995k7ih9h46y81n4xywlyyh34wys3sj",
+  "fetcher": "github",
+  "repo": "stardiviner/company-nginx",
+  "unstable": {
+   "version": [
+    20180604,
+    2
+   ],
+   "commit": "3074a5d322562f36867ef67bffeb25f1c0d8aca9",
+   "sha256": "04nq6cihb5kymi3rjfx53337fx4g042cw1jxiv016sq88z24lznx"
+  }
+ },
+ {
+  "ename": "company-ngram",
+  "commit": "937e6a23782450525c4a90392c414173481e101b",
+  "sha256": "1y9k9s8c248m91xld4f5l75j4swml333rpwq590bsx7mrsq131xx",
+  "fetcher": "github",
+  "repo": "kshramt/company-ngram",
+  "unstable": {
+   "version": [
+    20170129,
+    1913
+   ],
+   "deps": [
+    "cl-lib",
+    "company"
+   ],
+   "commit": "09a68b802e64799e95f205b438d469bbd78cd2e6",
+   "sha256": "0qg1ws7xi418lbnx130xqkwgpsl0p218gqxwy0fpwky01iahwcw9"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "company"
+   ],
+   "commit": "d15182df3eac72b29772802759b77c9eafef5066",
+   "sha256": "05108s2a3c857n9j3c34hdni3fyq149pva4m3f51lis4wqrm4zv7"
+  }
+ },
+ {
+  "ename": "company-nixos-options",
+  "commit": "6846c7d86e70a9dd8300b89b61435aa7e146be96",
+  "sha256": "1yrqqdadmf7qfxpqp8wwb325zjnwwjmn2hhnl7i3j0ckg6hqyqf0",
+  "fetcher": "github",
+  "repo": "travisbhartwell/nix-emacs",
+  "unstable": {
+   "version": [
+    20160215,
+    857
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "nixos-options"
+   ],
+   "commit": "977b9a505ffc8b33b70ec7742f90e469b3168297",
+   "sha256": "07vidk3bnby1ch51i67llfdx2q8xc4ax5hvlrc3f72y9gkcpir4x"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "nixos-options"
+   ],
+   "commit": "5fc8fa29bea9dd8e9c822af92f9bc6ddc223635f",
+   "sha256": "1lm7rkgf7q5g4ji6v1masfbhxdpwni8d77dapsy5k9p73cr2aqld"
+  }
+ },
+ {
+  "ename": "company-org-roam",
+  "commit": "aeb95e34be27dd78a237c0bfe1da94802fa68eae",
+  "sha256": "0k4w9g1rl94rpcvbcdmvsy47vzs53wz4b4hy9khj4yjn023nbsj7",
+  "fetcher": "github",
+  "repo": "org-roam/company-org-roam",
+  "unstable": {
+   "version": [
+    20200511,
+    743
+   ],
+   "deps": [
+    "company",
+    "dash",
+    "org-roam"
+   ],
+   "commit": "674c2bd493f571c5323d69279557a6c18ccbd14e",
+   "sha256": "1x88kvxawbpg4sagi0kh4y7inyhy05dxcg8hl0ih4x40cwxyxrs5"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "company",
+    "org-roam"
+   ],
+   "commit": "a4c3f60883de783b190d4eb8bcc85f5912d9393a",
+   "sha256": "087z699i7y0q72s5qc7ks09bzin9cl3gm3aqs4ka99lzg676lrl8"
+  }
+ },
+ {
+  "ename": "company-php",
+  "commit": "ac283f1b65c3ba6278e9d3236e5a19734e42b123",
+  "sha256": "1gnhklfkg17vxfx7fw65lr4nr07jx71y84mhs9zszwcr9p840hh5",
+  "fetcher": "github",
+  "repo": "xcwen/ac-php",
+  "unstable": {
+   "version": [
+    20190424,
+    222
+   ],
+   "deps": [
+    "ac-php-core",
+    "cl-lib",
+    "company"
+   ],
+   "commit": "8db6d911f2e19bbef5fe915e42c4e12f283bfd41",
+   "sha256": "0yzad3bc48xdmkgcsffdj9zx9j853w1k2p2v586bcfl2vmvvq3zj"
+  },
+  "stable": {
+   "version": [
+    2,
+    2,
+    2
+   ],
+   "deps": [
+    "ac-php-core",
+    "cl-lib",
+    "company"
+   ],
+   "commit": "4490d168778a61a4ee8623defe760164cd9745b8",
+   "sha256": "1mkxayqrvz246gxr9wjabsn015hnjq96ys71syb6r4ykjn892a6m"
+  }
+ },
+ {
+  "ename": "company-phpactor",
+  "commit": "dc6edd22befea0aee9b11bc8df7d42c400e12f43",
+  "sha256": "1a6szs85hmxm2xpkmc3dyx2daap7bjvpnrl4gcmbq26zbz2f0z0a",
+  "fetcher": "github",
+  "repo": "emacs-php/phpactor.el",
+  "unstable": {
+   "version": [
+    20200121,
+    1218
+   ],
+   "deps": [
+    "company",
+    "phpactor"
+   ],
+   "commit": "860d7e8784b261ee71deba354d01c3038cd777ab",
+   "sha256": "1d3fijh11g70xhx3a47l75mrp64bvkk7hh9lg83nl30qhn2vrbn3"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "company"
+   ],
+   "commit": "61e4eab638168b7034eef0f11e35a89223fa7687",
+   "sha256": "0dsa1mygb96nlz5gppf0sny3lxaacvmvnkg84c0cs6x223s6zfx8"
+  }
+ },
+ {
+  "ename": "company-plsense",
+  "commit": "9cf9d671d81e07c704676c557a9f0d686067ce5c",
+  "sha256": "0k8k2vpkknd4nyxzwdj7698lgm5d85byxd49x7w5nrxmh2h1w3c7",
+  "fetcher": "github",
+  "repo": "CeleritasCelery/company-plsense",
+  "unstable": {
+   "version": [
+    20180118,
+    58
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "dash",
+    "s"
+   ],
+   "commit": "b48e3181e08ec597269621d621aa06636f02d883",
+   "sha256": "14rawd5xfgnkhdpp43mz4a5mf480949ny5hr5w6v5djmsibqxw5s"
+  }
+ },
+ {
+  "ename": "company-pollen",
+  "commit": "97bda0616abe3bb632fc4231e5317d9472dfd14f",
+  "sha256": "1pz5d8j7scrv2ci9mxvyikwsk8badkrbp8dznnb5qq1ycqv24bl1",
+  "fetcher": "github",
+  "repo": "lijunsong/pollen-mode",
+  "unstable": {
+   "version": [
+    20160812,
+    1510
+   ],
+   "deps": [
+    "company",
+    "pollen-mode"
+   ],
+   "commit": "d0a33591498013886c2c4676e204cd684954e82a",
+   "sha256": "0lg65hzdjwbc3dav79f3jm7251yyq8ghcbccvkb32vwz281xhjnh"
+  }
+ },
+ {
+  "ename": "company-posframe",
+  "commit": "68c1203ae710e5f7af3f0e5e2877aba6deaf1ac8",
+  "sha256": "1pd68m3hcn6wggw8a026x5kxn73f3zs278vs96q6cb5gbxyyhirs",
+  "fetcher": "github",
+  "repo": "tumashu/company-posframe",
+  "unstable": {
+   "version": [
+    20200514,
+    2116
+   ],
+   "deps": [
+    "company",
+    "posframe"
+   ],
+   "commit": "4e506d661ed9cd2e4cf16281f3a11009210e9c30",
+   "sha256": "1h6pls6vg593cbmvq2kh5z67jvcyljvwbdxypqqsls5d22hvvbh5"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "company",
+    "posframe"
+   ],
+   "commit": "361de25739e866843b770638669f5bdf7ed95610",
+   "sha256": "0azmln9mssc52563vs5g3z3ajv4p6908c94v3fij1q0bdvlmcv6g"
+  }
+ },
+ {
+  "ename": "company-prescient",
+  "commit": "b92c34e493bbefab1d7747b0855d1ab2f984cb7c",
+  "sha256": "0cp918ihbjqxfgqnifknl5hphmvq5bl42dhp5ylvijsfa8kvbsb9",
+  "fetcher": "github",
+  "repo": "raxod502/prescient.el",
+  "unstable": {
+   "version": [
+    20200404,
+    1550
+   ],
+   "deps": [
+    "company",
+    "prescient"
+   ],
+   "commit": "3ab7605d997fb8337bf5ded2ad960b98ac0e1fd7",
+   "sha256": "081v916gnjvx2rzjbqkqhdwijz57w7iryxzg71729gwvavs25lsv"
+  },
+  "stable": {
+   "version": [
+    4,
+    1
+   ],
+   "deps": [
+    "company",
+    "prescient"
+   ],
+   "commit": "aa3110281a0622fa7b5da115cefb71a319b5b1a0",
+   "sha256": "1rf5cz262hjpck7vpxg15bccdrwrmlhiyxc20liwcjb2ig36nis3"
+  }
+ },
+ {
+  "ename": "company-qml",
+  "commit": "5b53477eaba4ef62f8317c9454e15ac015442fed",
+  "sha256": "0sva7i93dam8mc2z3cp785vmgcg7cphrpkwyvqyqhq8w51qg8mxx",
+  "fetcher": "github",
+  "repo": "cute-jumper/company-qml",
+  "unstable": {
+   "version": [
+    20170428,
+    1708
+   ],
+   "deps": [
+    "company",
+    "qml-mode"
+   ],
+   "commit": "4af4f32a7ad86d86bb9293fb0b675aec513b5736",
+   "sha256": "09d733r07gr4cxp7npyhi93xchvirxh1v00fr487v4a0mdaahpxf"
+  }
+ },
+ {
+  "ename": "company-quickhelp",
+  "commit": "651679c2430c69294d1a1870fd206b7ea69ab017",
+  "sha256": "0g4l12j85g129p9li4p7rsji263qy05hgkb7qi7k1ik5s2bm7jdw",
+  "fetcher": "github",
+  "repo": "company-mode/company-quickhelp",
+  "unstable": {
+   "version": [
+    20180525,
+    1003
+   ],
+   "deps": [
+    "company",
+    "pos-tip"
+   ],
+   "commit": "479676cade80a9f03802ca3d956591820ed5c537",
+   "sha256": "0hbqpnaf4hnin3nmdzmfj3v22kk9a97b6zssqs96ns36d9h52xcp"
+  },
+  "stable": {
+   "version": [
+    2,
+    3,
+    0
+   ],
+   "deps": [
+    "company",
+    "pos-tip"
+   ],
+   "commit": "b2953c725654650677e3d66eaeec666826d5f65f",
+   "sha256": "08ccsfvwdpzpj0gai3xrdb2bv1nl6myjkxsc5774pbvlq9nkfdvr"
+  }
+ },
+ {
+  "ename": "company-quickhelp-terminal",
+  "commit": "f5fa4121cd4e2a49adfd23929c73f385cf7d1264",
+  "sha256": "13pig4bkfhwvpak78v85dzmrv7hwqd3pz4s5y8cb7xa033i1v78s",
+  "fetcher": "github",
+  "repo": "jcs-elpa/company-quickhelp-terminal",
+  "unstable": {
+   "version": [
+    20200309,
+    245
+   ],
+   "deps": [
+    "company-quickhelp",
+    "popup"
+   ],
+   "commit": "0a7c86258b3069adbeb0889e21c6977390d00f4f",
+   "sha256": "0zbzbm4hchp1a8m0bdcp9d97i0yx3kkhp5vbs0m5pr2h13xdc7vj"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "company-quickhelp",
+    "popup"
+   ],
+   "commit": "344e30202fb38e1947b8b17f403bb7b2208936fe",
+   "sha256": "1gzmx8zz93261m9kks2hdgdhfs9vz8gsdxx5xkldbnz4g1wbmh2a"
+  }
+ },
+ {
+  "ename": "company-racer",
+  "commit": "c4671a674dbc1620a41e0ff99508892a25eec2ad",
+  "sha256": "0zc8dzvsjz5qsrwhv7x9f7djzvb9awacc3pgjirsv8f8sp7p3am4",
+  "fetcher": "github",
+  "repo": "emacs-pe/company-racer",
+  "unstable": {
+   "version": [
+    20171205,
+    310
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "deferred"
+   ],
+   "commit": "a00381c9d416f375f783fcb6ae8d40669ce1f567",
+   "sha256": "13m3yzn4xbyl13z7h1cl6vqjbzikjycy7wydpy4a44yhr466zjr5"
+  }
+ },
+ {
+  "ename": "company-reftex",
+  "commit": "84c938612d46d45b5bb05ee35178eaa2284023e0",
+  "sha256": "0xfl8cfpd2bdk91aj0nygp5gm808pnbi7zjdp4z6l21dsrawhbxz",
+  "fetcher": "github",
+  "repo": "TheBB/company-reftex",
+  "unstable": {
+   "version": [
+    20181222,
+    906
+   ],
+   "deps": [
+    "company",
+    "s"
+   ],
+   "commit": "275ef708f08d3bf0eb30632148e5c6184eeaacdb",
+   "sha256": "118cgw5lsffqdqz95mnkw36mmnsbg9m52r2np4m7v14mjjwr9fby"
+  }
+ },
+ {
+  "ename": "company-restclient",
+  "commit": "3dd063bc3789772fdcc6a8555817588962e60825",
+  "sha256": "1md0n4k4wmbh9rmbwqh3kg2fj0c34rzqfd56jsq8lcdg14k0kdcb",
+  "fetcher": "github",
+  "repo": "iquiw/company-restclient",
+  "unstable": {
+   "version": [
+    20190426,
+    1312
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "know-your-http-well",
+    "restclient"
+   ],
+   "commit": "e5a3ec54edb44776738c13e13e34c85b3085277b",
+   "sha256": "0yp0hlrgcr6yy1xkjvfckys2k24x9xg7y6336ma61bdwn5lpv0x0"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "know-your-http-well",
+    "restclient"
+   ],
+   "commit": "e5a3ec54edb44776738c13e13e34c85b3085277b",
+   "sha256": "0yp0hlrgcr6yy1xkjvfckys2k24x9xg7y6336ma61bdwn5lpv0x0"
+  }
+ },
+ {
+  "ename": "company-rtags",
+  "commit": "3dea16daf0d72188c8b4043534f0833fe9b04e07",
+  "sha256": "0dicxbp3xn02pflrpfndj7hs494prvz64llsk1xpc2z23kfarp6f",
+  "fetcher": "github",
+  "repo": "Andersbakken/rtags",
+  "unstable": {
+   "version": [
+    20191222,
+    920
+   ],
+   "deps": [
+    "company",
+    "rtags"
+   ],
+   "commit": "ed229d2e4070cc07ba76e537e8f5f93835ff0710",
+   "sha256": "1jf1mg2pib2rsrn280j2ywmnqgkr5jwmiaqf252jsb7ndq7p5gcr"
+  },
+  "stable": {
+   "version": [
+    2,
+    38
+   ],
+   "deps": [
+    "company",
+    "rtags"
+   ],
+   "commit": "9687ccdb9e539981e7934e768ea5c84464a61139",
+   "sha256": "1r6l7dgr2ch586zrdi5l8fhdj4qdva8ldz7cjvi2byc2pd2xs8rx"
+  }
+ },
+ {
+  "ename": "company-shell",
+  "commit": "bbaa05d158f3806b9f79a2c826763166dbee56ca",
+  "sha256": "0my9jghf3s4idkgrpki8mj1lm5ichfvznb09lfwf07fjhg0q1apz",
+  "fetcher": "github",
+  "repo": "Alexander-Miller/company-shell",
+  "unstable": {
+   "version": [
+    20170518,
+    541
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "dash"
+   ],
+   "commit": "52f3bf26b74adc30a275f5f4290a1fc72a6876ff",
+   "sha256": "0nv8vwmqgdb33cl1wfdbmncbrpfdciid48f6w8vmw39ks53i2z32"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "dash"
+   ],
+   "commit": "acdbf8cba6ad9831d81a77bab7bbfd50f19edd86",
+   "sha256": "1dk927da7g4a39sva9bda978bx6hpiz5kf341fj8sb7xhryvh5r2"
+  }
+ },
+ {
+  "ename": "company-solidity",
+  "commit": "e561d869f4e32bad5d1a8678f67e591ff586d6de",
+  "sha256": "1rkja48j2m0g0azc34i715ckkqwjkb44y3b4a9vlxs8cjqza4w7q",
+  "fetcher": "github",
+  "repo": "ethereum/emacs-solidity",
+  "unstable": {
+   "version": [
+    20181117,
+    1518
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "solidity-mode"
+   ],
+   "commit": "022b3159832384a7dcdc2168809e698600826047",
+   "sha256": "144w84abffbrbb4wflgipndaasx82axf36xm373ybdih4131mi69"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    10
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "solidity-mode"
+   ],
+   "commit": "93412f211fad7dfc3b02aa226856fc52b6a15c22",
+   "sha256": "06zqs7p22h1jkm3zs1i16wvch6rnzzb3m8d5r9r51clzpasf6zy8"
+  }
+ },
+ {
+  "ename": "company-sourcekit",
+  "commit": "45969cd5cd936ea61fbef4722843b0b0092d7b72",
+  "sha256": "0hr5j1ginf43h4qf3fvsh3z53z0c7w5a9lhrvdwmlzj396qhqmzs",
+  "fetcher": "github",
+  "repo": "nathankot/company-sourcekit",
+  "unstable": {
+   "version": [
+    20170126,
+    1153
+   ],
+   "deps": [
+    "company",
+    "dash",
+    "dash-functional",
+    "sourcekit"
+   ],
+   "commit": "abf9bc5a0102eb666d3aa6d6bf22f6efcc852781",
+   "sha256": "1g8a4fgy2c5nqk8gysbnzn5jvfw6ynmfhc6j3hkrbswgf9188v5n"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "company",
+    "dash",
+    "dash-functional",
+    "sourcekit"
+   ],
+   "commit": "8ba62ac25bf533b7f148f333bcb5c1db799f749b",
+   "sha256": "01dh0wdaydiai4v13r8g05rpiwqr5qqi34wif8vbk2mrr25wc7i9"
+  }
+ },
+ {
+  "ename": "company-stan",
+  "commit": "33fd0382da97c7397b1e4435860e7344d70399b8",
+  "sha256": "064476s2gccjmwhrc406460k3aqc80giqqyjbii8243964rdx4p0",
+  "fetcher": "github",
+  "repo": "stan-dev/stan-mode",
+  "unstable": {
+   "version": [
+    20200221,
+    2025
+   ],
+   "deps": [
+    "company",
+    "stan-mode"
+   ],
+   "commit": "599a0440086c660e6823622b35058f6d2d6d9637",
+   "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y"
+  },
+  "stable": {
+   "version": [
+    10,
+    1,
+    0
+   ],
+   "deps": [
+    "company",
+    "stan-mode"
+   ],
+   "commit": "599a0440086c660e6823622b35058f6d2d6d9637",
+   "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y"
+  }
+ },
+ {
+  "ename": "company-statistics",
+  "commit": "89d05b43f31ec157ce8e7bfba4b7c9119bda6dd2",
+  "sha256": "1fl4ldj17m3xhi6xbw3bp9c2jir34xv3jh9daiw8g912fv2l5dcj",
+  "fetcher": "github",
+  "repo": "company-mode/company-statistics",
+  "unstable": {
+   "version": [
+    20170210,
+    1933
+   ],
+   "deps": [
+    "company"
+   ],
+   "commit": "e62157d43b2c874d2edbd547c3bdfb05d0a7ae5c",
+   "sha256": "12mwviz1mwx4ywks2lkmybbgh1wny67wkzlq5y3ml8gvyc288n3i"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "company"
+   ],
+   "commit": "906d8137224c1a5bd1dc913940e0d32ffecf5523",
+   "sha256": "0c98kfg7gimjx9cf8dmbk9mdsrybhphshrdl8dhif3zqvn6gxyd7"
+  }
+ },
+ {
+  "ename": "company-suggest",
+  "commit": "9579e3366db055364829e20d3ce228bf17060b0a",
+  "sha256": "1w5fp4mydc4av14sjb8di6jjvzfqwnasnxpf9720pk0rsj05i972",
+  "fetcher": "github",
+  "repo": "juergenhoetzel/company-suggest",
+  "unstable": {
+   "version": [
+    20180527,
+    1631
+   ],
+   "deps": [
+    "company"
+   ],
+   "commit": "e1fa663b48639c76d91d1f5ac3b23215aa3dabc3",
+   "sha256": "0jn7rx4m3121lx6hhabvnfq73vd0rj2364hbvza2myylw4f4qav9"
+  }
+ },
+ {
+  "ename": "company-tabnine",
+  "commit": "94476897a71a271b985967334632836252eb131b",
+  "sha256": "1x37xacrscmh9hq9mljbgdcl3pwfn2kmn567qv0jqys8ihbzi3v7",
+  "fetcher": "github",
+  "repo": "TommyX12/company-tabnine",
+  "unstable": {
+   "version": [
+    20200327,
+    2137
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "dash",
+    "s",
+    "unicode-escape"
+   ],
+   "commit": "e986a4ad0d0e0174b08f1fb94c4f804a98a344e4",
+   "sha256": "1g5qv1fg22x1nkj696n12ixa2akgzivdc5q7yzy502kqjg67mkx5"
+  }
+ },
+ {
+  "ename": "company-terraform",
+  "commit": "1d9732da975dcf59d3b311b19e20abbb29c33656",
+  "sha256": "198ppqn6f7y9bg582z5s4cl9gg1q9ibsr7mmn68b50zvma7ankzh",
+  "fetcher": "github",
+  "repo": "rafalcieslak/emacs-company-terraform",
+  "unstable": {
+   "version": [
+    20190607,
+    1037
+   ],
+   "deps": [
+    "company",
+    "terraform-mode"
+   ],
+   "commit": "2d11a21fee2f298e48968e479ddcaeda4d736e12",
+   "sha256": "0hxilq7289djrn6kgw7n926zpz0pr7iyd1wm6cy8yfhxf546a4px"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "deps": [
+    "company",
+    "terraform-mode"
+   ],
+   "commit": "2d11a21fee2f298e48968e479ddcaeda4d736e12",
+   "sha256": "0hxilq7289djrn6kgw7n926zpz0pr7iyd1wm6cy8yfhxf546a4px"
+  }
+ },
+ {
+  "ename": "company-try-hard",
+  "commit": "d65c26aee15a27cbf27fa81110b607bf38099079",
+  "sha256": "1rwn521dc8kxh43vcd3rf0h8jc53d4gmid3szj2msi0da1sk0mmj",
+  "fetcher": "github",
+  "repo": "Wilfred/company-try-hard",
+  "unstable": {
+   "version": [
+    20200417,
+    1603
+   ],
+   "deps": [
+    "company",
+    "dash"
+   ],
+   "commit": "2b41136b5ed6e02032d99bcdb0599ecf00394fa5",
+   "sha256": "07c4vsrixqw6d6d2mqm6xzzzc9l9mgwgabcc6jlnw78cxij1wrsx"
+  }
+ },
+ {
+  "ename": "company-web",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1q2am684l4d038a3ymyy6gg2ds9lq5mcfc4in8dmvap5grdhia4b",
+  "fetcher": "github",
+  "repo": "osv/company-web",
+  "unstable": {
+   "version": [
+    20180402,
+    1155
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "dash",
+    "web-completion-data"
+   ],
+   "commit": "f0cc9187c9c34f72ad71f5649a69c74f996bae9a",
+   "sha256": "1xcwwcy2866vzaqgn7hrl7j8k48mk74i4shm40v7ybacws47s9nr"
+  },
+  "stable": {
+   "version": [
+    2,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "company",
+    "dash",
+    "web-completion-data"
+   ],
+   "commit": "f0cc9187c9c34f72ad71f5649a69c74f996bae9a",
+   "sha256": "1xcwwcy2866vzaqgn7hrl7j8k48mk74i4shm40v7ybacws47s9nr"
+  }
+ },
+ {
+  "ename": "company-ycm",
+  "commit": "44e168f757cb51249db2deb9f781eff99cf6fb7c",
+  "sha256": "1q4d63c7nr3g7q0smd55pp636vqa9lf1pkwjn9iq265369npvina",
+  "fetcher": "github",
+  "repo": "neuromage/ycm.el",
+  "unstable": {
+   "version": [
+    20140904,
+    1817
+   ],
+   "deps": [
+    "ycm"
+   ],
+   "commit": "4da8a14abcd0f4fa3235042ade2e12b5068c0601",
+   "sha256": "0znchya89zzk30mwl4qfm0q9sfa5m3jspapb892ydj0mck5n4nyj"
+  }
+ },
+ {
+  "ename": "company-ycmd",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1dycbp2q8grvv94mwp9n8s7xpz2zjs05l3lf471j3nlbk6xfsn5d",
+  "fetcher": "github",
+  "repo": "abingham/emacs-ycmd",
+  "unstable": {
+   "version": [
+    20180520,
+    1053
+   ],
+   "deps": [
+    "company",
+    "dash",
+    "deferred",
+    "f",
+    "let-alist",
+    "s",
+    "ycmd"
+   ],
+   "commit": "bc81b992f79100c98f56b7b83caf64cb8ea60477",
+   "sha256": "0kwm5q2sv2xrsmnr0gc2fimp6b2cvwh5mhqsmcc3lgs32m4j1kwv"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "deps": [
+    "company",
+    "dash",
+    "deferred",
+    "f",
+    "let-alist",
+    "s",
+    "ycmd"
+   ],
+   "commit": "d042a673b4d717c3ca9d641f120bfe16c994c740",
+   "sha256": "0rxw86xi9xgr0fp6wmd6hgqgqr9flk7p4lcr0052jhlwknj1nrx0"
+  }
+ },
+ {
+  "ename": "compdef",
+  "commit": "462b3d92c8c5f72ae1b70fa4d48b803c2f3d07e2",
+  "sha256": "04cav3f1ggyjfgnbx1wsyfaj8d63sxwfqkjar869p6kz9gajy4qr",
+  "fetcher": "gitlab",
+  "repo": "jjzmajic/compdef",
+  "unstable": {
+   "version": [
+    20200304,
+    611
+   ],
+   "commit": "30fb5846ed851efee641ce8c5d8879ad36cd7ac6",
+   "sha256": "0qn99jynafjyxc6fy9z888h7j7drs2mz34acwq8yh22v314x2639"
+  }
+ },
+ {
+  "ename": "competitive-programming-snippets",
+  "commit": "9a6d2467c37bf095c0a1e4605744474999ce04e2",
+  "sha256": "1yblnm1ar466fgwvhxybqv8sp2hn40p10p6hhnn9gi1xj9napam7",
+  "fetcher": "github",
+  "repo": "sei40kr/competitive-programming-snippets",
+  "unstable": {
+   "version": [
+    20200501,
+    1205
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "22bbf4c5edcc895b67b9f22599f284655ca48858",
+   "sha256": "14vbpy1y9dq9ip0bkmap7l2y2qx9jxzvisarbwlqqxj0xl7gbwc6"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    4
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "b0245fcbabf035d89b80150add5d6a47859ab555",
+   "sha256": "07l495vv3by6r62i48jbfyr5pp1p6896cz25gkc7p3xqwrhi2min"
+  }
+ },
+ {
+  "ename": "completions-frame",
+  "commit": "dcbb088900f76c05b04ffe25d32e43a477a0556f",
+  "sha256": "1ng5wmk1vp6yqrcyld23mrs8xdfa010l9acjy1vgkcsxjp3nmv3x",
+  "fetcher": "github",
+  "repo": "muffinmad/emacs-completions-frame",
+  "unstable": {
+   "version": [
+    20200507,
+    1703
+   ],
+   "commit": "192a70060d2a8710ca75aa2336a10c21a4d30eed",
+   "sha256": "0bi7q2napzfqbsdi4si1kfzdjq39hxg3czwbpmybrljg6rwgr9xf"
+  }
+ },
+ {
+  "ename": "composable",
+  "commit": "1fc0f076198e4be46a33a26eea9f2d273dda12b8",
+  "sha256": "1fs4pczjn9sv12sladf6zbkz0cmzxr0jaqkiwryydal1l5nqqxcy",
+  "fetcher": "github",
+  "repo": "paldepind/composable.el",
+  "unstable": {
+   "version": [
+    20190904,
+    701
+   ],
+   "commit": "46f82d86c285ceba3e0e46adf993a98cd8816390",
+   "sha256": "14n5sckdaxx291wmj7mnsn06sprpdxf6s44hgxdksv0pvln2m0wx"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "commit": "4739b6a730498e7526d06222810c3ccf3723d509",
+   "sha256": "1mii790r6gaz0nidlaib50wj4vryfvw7ls6b4mg1nw5km7hplpgq"
+  }
+ },
+ {
+  "ename": "composer",
+  "commit": "eb13cb0dba1696cc51132cd1ff723fa17f892a7c",
+  "sha256": "01w9cywhfngkrl9az8kfpzm12nc0zwmax01pyxlbi2l2icmvp5s1",
+  "fetcher": "github",
+  "repo": "emacs-php/composer.el",
+  "unstable": {
+   "version": [
+    20200214,
+    1119
+   ],
+   "deps": [
+    "cl-lib",
+    "f",
+    "php-runtime",
+    "request",
+    "s",
+    "seq"
+   ],
+   "commit": "8b4867e30efcdf10c6d9a74822aa281404377818",
+   "sha256": "1605fk7nkzjshn6faxw0ycn45a1wbivpmlmyaxcqzjhmawavky6b"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "f",
+    "php-runtime",
+    "request",
+    "s",
+    "seq"
+   ],
+   "commit": "d88741009cf7cae0a75e3cc7a19dd9143fcc92f9",
+   "sha256": "0iqm8997pl3pni7a49igj8q6sp37bjdshjwl6d95bqrjkjf9ll08"
+  }
+ },
+ {
+  "ename": "comware-router-mode",
+  "commit": "47d74f54efc324d39b66d88051edbe6ff2cad9e0",
+  "sha256": "0i3isavwhdwzz8dzwkss4sajj9v3phk8hvq7cxrwrh09lwpp4kxs",
+  "fetcher": "github",
+  "repo": "daviderestivo/comware-router-mode",
+  "unstable": {
+   "version": [
+    20200106,
+    2011
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "e6e2d9ca71a7a46c0e4ebeb30e4994c2a8b5fe0d",
+   "sha256": "16x9xbf3km6k8xjivlf2ill7pmvrmaf3c35baznixm6hwdcv4wib"
+  }
+ },
+ {
+  "ename": "concurrent",
+  "commit": "8bc29a8d518ce7a584277089bd4654f52ac0f358",
+  "sha256": "09wjw69bqrr3424h0mpb2kr5ixh96syjjsqrcyd7z2lsas5ldpnf",
+  "fetcher": "github",
+  "repo": "kiwanami/emacs-deferred",
+  "unstable": {
+   "version": [
+    20161229,
+    330
+   ],
+   "deps": [
+    "deferred"
+   ],
+   "commit": "2239671d94b38d92e9b28d4e12fd79814cfb9c16",
+   "sha256": "0vz59lm7pfz0gbsgrb44y555js85wbdjn0zm6p8wfqjiqf63ds3i"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    1
+   ],
+   "deps": [
+    "deferred"
+   ],
+   "commit": "d012a1ab50edcc2c44e3e49006f054dbff47cb6c",
+   "sha256": "0xy9zb6wwkgwhcxdnslqk52bq3z24chgk6prqi4ks0qcf2bwyh5h"
+  }
+ },
+ {
+  "ename": "conda",
+  "commit": "fcf762e34837975f5440a1d81a7f09699778123e",
+  "sha256": "1hi292h6ccl7vkvyxcwwcdxw8q2brv3hy0mnlikzj2qy5pbnfg4y",
+  "fetcher": "github",
+  "repo": "necaris/conda.el",
+  "unstable": {
+   "version": [
+    20200509,
+    1836
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "pythonic",
+    "s"
+   ],
+   "commit": "8dad784b75a42d1cb6f7a6b8a2c2e39f589727f9",
+   "sha256": "1k1hsargcqciyz48zkdsnhinv8h4fr9786x8s7c63864fbxxby3v"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    10
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "pythonic",
+    "s"
+   ],
+   "commit": "8dad784b75a42d1cb6f7a6b8a2c2e39f589727f9",
+   "sha256": "1k1hsargcqciyz48zkdsnhinv8h4fr9786x8s7c63864fbxxby3v"
+  }
+ },
+ {
+  "ename": "config-general-mode",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "1pqivnyb1yljzs3fd554s0971wr9y6g1dx3lgym9gi5jhpyza38z",
+  "fetcher": "github",
+  "repo": "TLINDEN/config-general-mode",
+  "unstable": {
+   "version": [
+    20171024,
+    1840
+   ],
+   "commit": "b4a8e6ba0bb027a77e4a0f701409f3e57bb2e4c0",
+   "sha256": "115sk0h6i1bfnxw1v11719926cvnq7gyisjcysvkam40hp3d5fx5"
+  }
+ },
+ {
+  "ename": "config-parser",
+  "commit": "8fc040eebe72b278e3bd69212b207446cf4a5f06",
+  "sha256": "0wncg1v4wccb9j16rcmwz8fcmrscj7knfisq0r4qqx3skrmpccah",
+  "fetcher": "github",
+  "repo": "lujun9972/el-config-parser",
+  "unstable": {
+   "version": [
+    20160426,
+    1219
+   ],
+   "commit": "85d559e7889d8f5b98b8794b79426ae25ec3caa5",
+   "sha256": "09vq7hcsw4027whn3xrnfz9hkgkakva619hyz0zfgpvppqah9n1p"
+  }
+ },
+ {
+  "ename": "confluence",
+  "commit": "30de78c9cf83de30093a5647976eeaf552d4b2cb",
+  "sha256": "0xa2g168mm31kh5h7smhx35cjsk1js88nzs19yakjljf56b1khlf",
+  "fetcher": "github",
+  "repo": "emacsorphanage/confluence",
+  "unstable": {
+   "version": [
+    20151021,
+    128
+   ],
+   "deps": [
+    "xml-rpc"
+   ],
+   "commit": "4518d270a07760644c4204985c83d234ece4738b",
+   "sha256": "1lrq23cxlp2vkyv7g56r06bp7chhw10kii3ymkydf24y4pyn1zpg"
+  }
+ },
+ {
+  "ename": "conkeror-minor-mode",
+  "commit": "1e6aed365c42987d64d0cd9a8a6178339b1b39e8",
+  "sha256": "1ch108f20k7xbf79azsp31hh4wmw7iycsxddcszgxkbm7pj11933",
+  "fetcher": "github",
+  "repo": "Malabarba/conkeror-minor-mode",
+  "unstable": {
+   "version": [
+    20150114,
+    1604
+   ],
+   "commit": "476e81c27b056e21c192391fe674a2bf875466b0",
+   "sha256": "0sz3qx1bn0lwjhka2l6wfl4b5486ji9dklgjs7fdlkg3dgpp1ahx"
+  },
+  "stable": {
+   "version": [
+    1,
+    6,
+    2
+   ],
+   "commit": "476e81c27b056e21c192391fe674a2bf875466b0",
+   "sha256": "0sz3qx1bn0lwjhka2l6wfl4b5486ji9dklgjs7fdlkg3dgpp1ahx"
+  }
+ },
+ {
+  "ename": "conllu-mode",
+  "commit": "444f943baddfeafe29708d6d68aeeeedbb7aa7bd",
+  "sha256": "1wffvvs8d0xcnz6mcm9rbr8imyj4npyc148yh0gzfzlgjm0fiz1v",
+  "fetcher": "github",
+  "repo": "odanoburu/conllu-mode",
+  "unstable": {
+   "version": [
+    20200501,
+    2328
+   ],
+   "deps": [
+    "cl-lib",
+    "flycheck",
+    "hydra",
+    "s"
+   ],
+   "commit": "0db3063572b0de08874822e20570bb153747e6ed",
+   "sha256": "0l7d88p010z47qhk33k8s13h9596g3dxz3mx9winsm82px8fvcpp"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "flycheck",
+    "hydra",
+    "s"
+   ],
+   "commit": "d1b5b682e0a481ab74caed20bbca6177edb83080",
+   "sha256": "1n98aqh3pyvaz1lwsqpcpv1nzrij79r342iiw2h90v4mf2r665dy"
+  }
+ },
+ {
+  "ename": "connection",
+  "commit": "5b08ed7b90e3283e177eff57cb02b12a093dc258",
+  "sha256": "1y68d2kay8p5vapailxhrc5dl7b8k8nkvp7pa54md3fsivwp1d0q",
+  "fetcher": "github",
+  "repo": "myrkr/dictionary-el",
+  "unstable": {
+   "version": [
+    20191111,
+    446
+   ],
+   "commit": "c9cad101100975e88873636bfd426b7a19304ebd",
+   "sha256": "0zsjbpq0s0xdxd9r541f04bj1khhgzhdlzr0m4p17zjh1zardbpi"
+  },
+  "stable": {
+   "version": [
+    1,
+    11
+   ],
+   "commit": "c9cad101100975e88873636bfd426b7a19304ebd",
+   "sha256": "0zsjbpq0s0xdxd9r541f04bj1khhgzhdlzr0m4p17zjh1zardbpi"
+  }
+ },
+ {
+  "ename": "constant-theme",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "13m4r37gscnqg3qmb0rs2r8sslp0irm7n4p6p496mmvljvjmpv6b",
+  "fetcher": "github",
+  "repo": "Jannis/emacs-constant-theme",
+  "unstable": {
+   "version": [
+    20180921,
+    1012
+   ],
+   "commit": "23543a09729569b566175abe1efbe774048d3fa8",
+   "sha256": "1456kydn5k5sq8dgaf45nzqaw1035945dhwkh07vz11ivvcrz3xs"
+  }
+ },
+ {
+  "ename": "contextual",
+  "commit": "de20db067590624bbd2ca5a7a537b7f11ada84f2",
+  "sha256": "1xwjjchmn3xqxbgvqishh8i75scc4kjgdzlp5j64d443pfgyr56a",
+  "fetcher": "github",
+  "repo": "e-user/contextual",
+  "unstable": {
+   "version": [
+    20180726,
+    800
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "e3c0de4a2e06757a0e8407c3c6e75930026191e3",
+   "sha256": "1nl2748s5x252f6sx4xpgzfdcas9ky38bnqfdx9l562agmcp9615"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "8134a2d8034c624f4fdbbb0b3893de12f4257909",
+   "sha256": "0s4b7dkndhnh8q3plvg2whjx8zd7ffz4hnbn3xh86xd3k7sch7av"
+  }
+ },
+ {
+  "ename": "contextual-menubar",
+  "commit": "cba21d98f3abbf1f45d1fdd9164d4660b7d3e368",
+  "sha256": "0r9bsnvf45h7gsdfhsz7h02nskjvflfa2yjarjv9fcl7aipz8rr6",
+  "fetcher": "github",
+  "repo": "aaronjensen/contextual-menubar",
+  "unstable": {
+   "version": [
+    20180205,
+    709
+   ],
+   "commit": "f76f55232ac07df76ef9a334a0c527dfab97c40b",
+   "sha256": "0zks4w99nbhz1xvr67isgg6yjghpzbh5s5wd839zi0ly30x4riqf"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "cc2e7c952b59401188b81d84be81dead9d0da3db",
+   "sha256": "01mk5xzsg52vfqjri1my193y6jczg2dp3pa2d0v0vw11m1k433h3"
+  }
+ },
+ {
+  "ename": "contrast-color",
+  "commit": "7a13602e10a5fa889d0e094eff5b74a39023a477",
+  "sha256": "0pa88mfla7g7wpia0q1lkv2dncw63ivvh83hf73f75a22rvl8jcx",
+  "fetcher": "github",
+  "repo": "yuutayamada/contrast-color-el",
+  "unstable": {
+   "version": [
+    20160903,
+    1807
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "c5fb77a211ebbef3185ada37bea7420534c33f94",
+   "sha256": "06grlp93n50d7c5z43fia0d6r1hmfpnqa062fzrz8gypy5kqxi1f"
+  }
+ },
+ {
+  "ename": "control-mode",
+  "commit": "acc9b816796b9f142c53f90593952b43c962d2d8",
+  "sha256": "1biq4p2w8rqcbvr09gxbchjqlaixjf1fzv7xv8lpv81dlhi7dgz6",
+  "fetcher": "github",
+  "repo": "stephendavidmarsh/control-mode",
+  "unstable": {
+   "version": [
+    20160624,
+    1710
+   ],
+   "commit": "72d6179b60adc438aada74083b2bf4264b575de3",
+   "sha256": "0pqdh9bx2j9kla57sn349m90azk02wajapmazdm26cjdc2npw7jh"
+  }
+ },
+ {
+  "ename": "copy-as-format",
+  "commit": "42fe8a2113d1c15701abe7a7e0a68e939c3d789b",
+  "sha256": "1yij5mqm0dg6326yms0a2w8gs42kdxq0ih8dhkpdar54r0bk3m8k",
+  "fetcher": "github",
+  "repo": "sshaw/copy-as-format",
+  "unstable": {
+   "version": [
+    20190523,
+    258
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a0962b670e26b723ce304b14e3397da453aef84e",
+   "sha256": "0amgnl9d9sh69dh76vfb7ar6m995nka5zs3swa1pmqqnrmp8nr1w"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    8
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d2376c64334fe3de65d89d6d138a2187f9bf802f",
+   "sha256": "0i158bkra7zgq75j08knq2camvlhbs2v8zrsxiyp0mc4q949xysd"
+  }
+ },
+ {
+  "ename": "copy-file-on-save",
+  "commit": "eb13cb0dba1696cc51132cd1ff723fa17f892a7c",
+  "sha256": "1mcwgkhd241aijnmzrrqqn9f7hiq5k1w4fj83v50aixrcs049gc3",
+  "fetcher": "github",
+  "repo": "emacs-php/emacs-auto-deployment",
+  "unstable": {
+   "version": [
+    20180604,
+    1419
+   ],
+   "deps": [
+    "cl-lib",
+    "f",
+    "s"
+   ],
+   "commit": "5af6d5fcc35ddf9050eada96fd5f334bf0661b62",
+   "sha256": "1q9liby1dmwwmg2jz13gx2ld47bpcqb9c7vx4qgky75wb5c2q1xz"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    5
+   ],
+   "deps": [
+    "cl-lib",
+    "f",
+    "s"
+   ],
+   "commit": "5af6d5fcc35ddf9050eada96fd5f334bf0661b62",
+   "sha256": "1q9liby1dmwwmg2jz13gx2ld47bpcqb9c7vx4qgky75wb5c2q1xz"
+  }
+ },
+ {
+  "ename": "copyit",
+  "commit": "69bd50fd1f3865d48cec9fe2680d260d746248e5",
+  "sha256": "1m28irqixzl44c683dxvc5x6l3qcqlpy6jzk6629paqkdi5mx1c0",
+  "fetcher": "github",
+  "repo": "zonuexe/emacs-copyit",
+  "unstable": {
+   "version": [
+    20190919,
+    1258
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "c4f2c28e5b6270e8e3364341619f1154bb4e682e",
+   "sha256": "17xqpshwc48srwljpbad7vhx3rkxqav0ygp0ff4xh7wgy21fp2mp"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "c4f2c28e5b6270e8e3364341619f1154bb4e682e",
+   "sha256": "17xqpshwc48srwljpbad7vhx3rkxqav0ygp0ff4xh7wgy21fp2mp"
+  }
+ },
+ {
+  "ename": "copyit-pandoc",
+  "commit": "69bd50fd1f3865d48cec9fe2680d260d746248e5",
+  "sha256": "03v448gh6glq126r95w4y6s2p08jgjhkc6zgsplx0v9d5f2mwaqk",
+  "fetcher": "github",
+  "repo": "zonuexe/emacs-copyit",
+  "unstable": {
+   "version": [
+    20190919,
+    1258
+   ],
+   "deps": [
+    "copyit",
+    "pandoc"
+   ],
+   "commit": "c4f2c28e5b6270e8e3364341619f1154bb4e682e",
+   "sha256": "17xqpshwc48srwljpbad7vhx3rkxqav0ygp0ff4xh7wgy21fp2mp"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "copyit",
+    "pandoc"
+   ],
+   "commit": "c4f2c28e5b6270e8e3364341619f1154bb4e682e",
+   "sha256": "17xqpshwc48srwljpbad7vhx3rkxqav0ygp0ff4xh7wgy21fp2mp"
+  }
+ },
+ {
+  "ename": "coq-commenter",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "1d6a40f8b4r8x08sy7qs335c9z744xmll326qzsjmxiqdkjv7h2k",
+  "fetcher": "github",
+  "repo": "Ailrun/coq-commenter",
+  "unstable": {
+   "version": [
+    20170822,
+    2309
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "s"
+   ],
+   "commit": "7fe9a2cc0ebdb0b1e54a24eb7971d757fb588ac3",
+   "sha256": "1rq0j6ds9snv21k2lzyja96qxxz8nrai5aj1k1si9zshld28mapx"
+  }
+ },
+ {
+  "ename": "corral",
+  "commit": "7b0d7e326f0401de0488b77d39af7bd7b8e8fdd4",
+  "sha256": "1drccqk4qzkgvkgkzlrrfd1dcgj8ziqriijrjihrzjgjsbpzv6da",
+  "fetcher": "github",
+  "repo": "nivekuil/corral",
+  "unstable": {
+   "version": [
+    20160502,
+    701
+   ],
+   "commit": "e7ab6aa118e46b93d4933d1364bc273f57cd6911",
+   "sha256": "00055gzv032xxzqm1hffipljy8fzgsm58cbv8dzajh035jvdgpv7"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    20
+   ],
+   "commit": "e7ab6aa118e46b93d4933d1364bc273f57cd6911",
+   "sha256": "00055gzv032xxzqm1hffipljy8fzgsm58cbv8dzajh035jvdgpv7"
+  }
+ },
+ {
+  "ename": "cort",
+  "commit": "1c99109a816303b1a14ff15e7a8300c73910e3a7",
+  "sha256": "1r1plngky2djgpbja0xr2j7hgj79d0l2jcjq4kj97q6874r4fswq",
+  "fetcher": "github",
+  "repo": "conao3/cort.el",
+  "unstable": {
+   "version": [
+    20200330,
+    1641
+   ],
+   "commit": "eb94d2a5b3a048a495fb0218b2df9021f8c864f4",
+   "sha256": "0rc1jfqkc05ml41cp8dc8akrxx3ifziyjy1w4vvgpbb5z49m83ky"
+  },
+  "stable": {
+   "version": [
+    3,
+    0,
+    5
+   ],
+   "commit": "1df178e296feaf4465967567b1cfdce1dda5a09b",
+   "sha256": "0y23w34dcifk6cxw2kcgwydqdc8hn0mj5129z560fm6iwxd6cgkx"
+  }
+ },
+ {
+  "ename": "cosmo",
+  "commit": "3ab914dfefcddf6ecd65261bc11bd3eb12929c79",
+  "sha256": "1pk34d0kv1jm2fq72qa5lj0y39x1yf2nbkjjg8jcj8ari28h9vfk",
+  "fetcher": "gitlab",
+  "repo": "montanari/cosmo-el",
+  "unstable": {
+   "version": [
+    20170922,
+    744
+   ],
+   "commit": "dd83b09a49a2843606b28279b674b2207040b36b",
+   "sha256": "0phcg81g3dy67s1hfymvj0lkcpwygwql8iixf940nv31qllgzvd7"
+  }
+ },
+ {
+  "ename": "counsel",
+  "commit": "06c50f32b8d603db0d70e77907e36862cd66b811",
+  "sha256": "0y8cb2q4mqvzan5n8ws5pjpm7bkjcghg5q19mzc3gqrq9vrvyzi6",
+  "fetcher": "github",
+  "repo": "abo-abo/swiper",
+  "unstable": {
+   "version": [
+    20200512,
+    1130
+   ],
+   "deps": [
+    "swiper"
+   ],
+   "commit": "04ca16420053a3a6d34a96f0d680dd449c2e5851",
+   "sha256": "1sjaf026zim28c9cld0w5hlk9inp1map70ip99smlk483ib6lbj3"
+  },
+  "stable": {
+   "version": [
+    0,
+    13,
+    0
+   ],
+   "deps": [
+    "swiper"
+   ],
+   "commit": "cd634c6f51458f81898ecf2821ac3169cb65a1eb",
+   "sha256": "0ghcwrg8a6r5q6fw2x8s08cwlmnz2d8qjhisnjwbnc2l4cgqpd9p"
+  }
+ },
+ {
+  "ename": "counsel-bbdb",
+  "commit": "0ed9bcdb1f25a6dd743c1dac2bb6cda73a5a5dc2",
+  "sha256": "14d9mk44skpmyj0zkqwz97j80r630j7s5hfrrhlsafdpl5aafjxp",
+  "fetcher": "github",
+  "repo": "redguardtoo/counsel-bbdb",
+  "unstable": {
+   "version": [
+    20181128,
+    1320
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "df2890deb73b09f8055243bd91942ea887d9b7a1",
+   "sha256": "0bki658mvlchqf3prkzxz4217a95cxm58c1qmf84yp2n8h6gd0d8"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    4
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "df2890deb73b09f8055243bd91942ea887d9b7a1",
+   "sha256": "0bki658mvlchqf3prkzxz4217a95cxm58c1qmf84yp2n8h6gd0d8"
+  }
+ },
+ {
+  "ename": "counsel-codesearch",
+  "commit": "d3404c3cdfa6654ad80378ab258f0df68a6beeb9",
+  "sha256": "0y547cfxjq59zvi36av0rd1wdydf8d96ma438ja0x726f53nxd3g",
+  "fetcher": "github",
+  "repo": "abingham/emacs-counsel-codesearch",
+  "unstable": {
+   "version": [
+    20180925,
+    803
+   ],
+   "deps": [
+    "codesearch",
+    "counsel",
+    "ivy"
+   ],
+   "commit": "b7989fad3e06f301c31d5e896c42b6cc549a0e0c",
+   "sha256": "1qv82nvj0kddmajm6pniadnz96mqz8rhl0g2w2z5834r48higxqv"
+  }
+ },
+ {
+  "ename": "counsel-css",
+  "commit": "519a05a9f0e43f3e1dfac75759346476bfc40772",
+  "sha256": "1sckfq8kv68q1anqmslrvhcf83m7b5r0clny6q33b9x0qypkv9xp",
+  "fetcher": "github",
+  "repo": "hlissner/emacs-counsel-css",
+  "unstable": {
+   "version": [
+    20200331,
+    632
+   ],
+   "deps": [
+    "cl-lib",
+    "counsel"
+   ],
+   "commit": "6427dfcbda0d2bbd81db03f9d6b56b06c260ac02",
+   "sha256": "1g8gz5mz2qclia64qmgw02h5ivywgn46d6djlr7vcdfyp774cf64"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    7
+   ],
+   "deps": [
+    "cl-lib",
+    "counsel"
+   ],
+   "commit": "61a38c9d50fa9d1e38b2fa550d07130eb9322524",
+   "sha256": "0c8assn7dc8dhzyzk37x7y8s266pvr6hs0vh13y65z0sgxk59i2w"
+  }
+ },
+ {
+  "ename": "counsel-dash",
+  "commit": "0f8af4d854f972bfed3d2122b4c089f72d8b5f2a",
+  "sha256": "0pzh8ww1p2jb859gdjr5ypya3rwhiyg3c79xhx8filxrqxgjv5fk",
+  "fetcher": "github",
+  "repo": "nathankot/counsel-dash",
+  "unstable": {
+   "version": [
+    20200103,
+    1411
+   ],
+   "deps": [
+    "cl-lib",
+    "counsel",
+    "dash-docs"
+   ],
+   "commit": "370d5f6f14b5294d0eb717f7b2a6a8e93df1ed24",
+   "sha256": "1fn38vbz46ijarjvhgw7iy7dj9s2a2miy95fyy9f8b5sj8nrdfvz"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    3
+   ],
+   "deps": [
+    "counsel",
+    "dash",
+    "dash-functional",
+    "helm-dash"
+   ],
+   "commit": "a342340bbd8e50e4d1015e0b91d8ecd8f6cdf9f2",
+   "sha256": "1ma67lc4y9y3byrz8v6635w8q2scp6f2cqagq09k723k5nnwisfj"
+  }
+ },
+ {
+  "ename": "counsel-etags",
+  "commit": "87528349a3ab305bfe98f30c5404913272817a38",
+  "sha256": "1h3dlczm1m21d4h41vz9ngg5fi02g6f95qalfxdnsvz0d4w4yxk0",
+  "fetcher": "github",
+  "repo": "redguardtoo/counsel-etags",
+  "unstable": {
+   "version": [
+    20200514,
+    1224
+   ],
+   "deps": [
+    "counsel"
+   ],
+   "commit": "362fc857a271e509d05fa190212629dc6b0778f2",
+   "sha256": "0c9p6pfnzdbxaib1vgm1npp8lgyw0hpczi210c26x8p9d8xx19lw"
+  },
+  "stable": {
+   "version": [
+    1,
+    9,
+    8
+   ],
+   "deps": [
+    "counsel"
+   ],
+   "commit": "362fc857a271e509d05fa190212629dc6b0778f2",
+   "sha256": "0c9p6pfnzdbxaib1vgm1npp8lgyw0hpczi210c26x8p9d8xx19lw"
+  }
+ },
+ {
+  "ename": "counsel-fd",
+  "commit": "b2e58e2a0bf3825d6ef43455fd3e60b33c88aaa2",
+  "sha256": "1ywyg2l1dx2rziw23b0i5m4xg4n8laarkq9wbbq80ma5pjb18ims",
+  "fetcher": "github",
+  "repo": "CsBigDataHub/counsel-fd",
+  "unstable": {
+   "version": [
+    20200505,
+    1344
+   ],
+   "deps": [
+    "counsel"
+   ],
+   "commit": "afba62f73d348cd7dfd10db039769788f5ae7ad4",
+   "sha256": "1v5iy8axlrapaav0vwhns32xbsnsay62dc9g50bv7n84cn1pvmmy"
+  }
+ },
+ {
+  "ename": "counsel-ffdata",
+  "commit": "f91f760ed71543b9c11661ab8131206a13d2e6e3",
+  "sha256": "0pmlvlpz22j7jk96456j2l365sq47rq0i9k5byfmzvm1s2p8nqvl",
+  "fetcher": "github",
+  "repo": "cireu/counsel-ffdata",
+  "unstable": {
+   "version": [
+    20191017,
+    1237
+   ],
+   "deps": [
+    "counsel",
+    "emacsql"
+   ],
+   "commit": "88c2348c4039d9e562bd3d9a364708b01037c283",
+   "sha256": "0sbp3f72dcln8y789vjdmg73lxvyb4qs4pb5mg452b3y8c8xlj30"
+  }
+ },
+ {
+  "ename": "counsel-gtags",
+  "commit": "fe8fe6af7826a4b73ac784fde8859130b9ad7096",
+  "sha256": "1vxxcqijn3nab4146p06vhw6dn8zwb7arbk1610bajsvkyid428y",
+  "fetcher": "github",
+  "repo": "FelipeLema/emacs-counsel-gtags",
+  "unstable": {
+   "version": [
+    20200101,
+    1701
+   ],
+   "deps": [
+    "counsel",
+    "seq"
+   ],
+   "commit": "5d2a8c2c2d358e374a576cf8a3a67f7997a8839b",
+   "sha256": "0qx7gdxgd28grz8pn57kb9qrsvdiysci6hya1fif3iqb1hbyg2mn"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "counsel"
+   ],
+   "commit": "8066dd4cd6eb157345fb43788bacf2c5d746b497",
+   "sha256": "07kxv56p340a913673h30q65814ji7lwc6gsn9vcr18rsdaj7qwi"
+  }
+ },
+ {
+  "ename": "counsel-jq",
+  "commit": "556a010fac8da34a655e5bb2bee331c8af24b283",
+  "sha256": "07lmpzrz03kqa0xklrz0vxpgiadsnvy96vlwwp14nswr6i3r5hia",
+  "fetcher": "github",
+  "repo": "200ok-ch/counsel-jq",
+  "unstable": {
+   "version": [
+    20191207,
+    1334
+   ],
+   "deps": [
+    "ivy",
+    "swiper"
+   ],
+   "commit": "b14dfc5c18d991c3b3051c3cbb244d5923b3a327",
+   "sha256": "0f5h7nnqrkzbyxi4mgzahqzylszrqb25l3i24ml8yra2a23nl2w8"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "swiper"
+   ],
+   "commit": "33d709f5b73a68093ec9414c774844d5f4983aee",
+   "sha256": "120i4j4bw3v1ybcwrfpn0v7jphhk7hhlp738m60fck97p9lwfyy0"
+  }
+ },
+ {
+  "ename": "counsel-notmuch",
+  "commit": "54fe0be4e8e8b90cd2dc3cc8b9c573694c8f773b",
+  "sha256": "1n4jp9fa5fbv55am0w1b832ncdih8gi6xflwabpwqqj4k5mj94p1",
+  "fetcher": "github",
+  "repo": "fuxialexander/counsel-notmuch",
+  "unstable": {
+   "version": [
+    20181203,
+    935
+   ],
+   "deps": [
+    "ivy",
+    "notmuch",
+    "s"
+   ],
+   "commit": "a4a1562935e4180c42524c51609d1283e9be0688",
+   "sha256": "01k1321d961kc2i660a5595bqk0d85f16snsxngsn5si6y83kqr7"
+  }
+ },
+ {
+  "ename": "counsel-org-capture-string",
+  "commit": "380d58ac9487f2fb1d4a791008fa60fb7165e7e3",
+  "sha256": "1jqp4qscv8shx1kfnrm6642a83ba3rpzm7v9hz46j3aw6f3psw9g",
+  "fetcher": "github",
+  "repo": "akirak/counsel-org-capture-string",
+  "unstable": {
+   "version": [
+    20180816,
+    724
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "0fd5d72397a9268a89dd26de2a6c355f127453ac",
+   "sha256": "19ijjiidxxysvkz9vnsgiymxd7w7zcs5bazn7dmahp5yaprlsjld"
+  }
+ },
+ {
+  "ename": "counsel-org-clock",
+  "commit": "d21e10ba82b4ae0f8101031be16bc5f7e80ba5d5",
+  "sha256": "16pai05qqaw31ghdy1h164qy56mqsdsf2925i0qhlhysslkki8gh",
+  "fetcher": "github",
+  "repo": "akirak/counsel-org-clock",
+  "unstable": {
+   "version": [
+    20190407,
+    348
+   ],
+   "deps": [
+    "dash",
+    "ivy"
+   ],
+   "commit": "ddf6b89652e4dbc0be5e8719213e7673c83959f1",
+   "sha256": "1fd8ll7jcfmy2dhhhsqh1l6wqfklma54bqpb4jnxmdn2w9p3ndmn"
+  }
+ },
+ {
+  "ename": "counsel-osx-app",
+  "commit": "926d0ab3d62d7114d6997944521b66ab969f6830",
+  "sha256": "0zc74szalyazbvi0lh3zy08kb8kzlwcwnc8d1sj5n23ymvvs5nn3",
+  "fetcher": "github",
+  "repo": "d12frosted/counsel-osx-app",
+  "unstable": {
+   "version": [
+    20160821,
+    809
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "b1c54cbc033c4939966910d85ce035503079e108",
+   "sha256": "0p3j60hjai3v8yny9zlzbxppy0pl9s3yf4x6z5rac6n86xx0iix8"
+  }
+ },
+ {
+  "ename": "counsel-projectile",
+  "commit": "389f16f886a385b02f466540f042a16eea8ba792",
+  "sha256": "1gshphxaa902kq878rnizn3k1zycakwqkciz92z3xxb3bdyy0hnl",
+  "fetcher": "github",
+  "repo": "ericdanan/counsel-projectile",
+  "unstable": {
+   "version": [
+    20200430,
+    2133
+   ],
+   "deps": [
+    "counsel",
+    "projectile"
+   ],
+   "commit": "126e825bbab872b3befd9ef88660571391ebfdc3",
+   "sha256": "0shmndgr1plx8kzppn990ybb2144h8p49v4vd37099y5pj6w3zri"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "deps": [
+    "counsel",
+    "projectile"
+   ],
+   "commit": "d71a3274cfa9d7425f1bcee3eb2dfed9714ac16d",
+   "sha256": "1k4n5lw6wwbgpwv0dg9dw0bjzi0hvbgkzrs1zmq36yhfz6y8gwnh"
+  }
+ },
+ {
+  "ename": "counsel-pydoc",
+  "commit": "110939c12b4e042a486e97be4c2a2426c5978ca6",
+  "sha256": "1a3vwh4jf5y03z95bd4blk75n6wjd24l6yw6vpr3991bi4qrxclz",
+  "fetcher": "github",
+  "repo": "co-dh/pydoc_utils",
+  "unstable": {
+   "version": [
+    20171018,
+    2042
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "1d8ff8ca3b9d69453cde423b1887fbb490a95c9e",
+   "sha256": "06kf93y8wb9nwvs70xi4lkd5x4g6sl8f83diy2wl7ha657dwx3m8"
+  }
+ },
+ {
+  "ename": "counsel-spotify",
+  "commit": "b386462518a5ebb6454f4d01582df98395239bcc",
+  "sha256": "1xs4km5vjhn6dnlmrscz7airip07n1ppybp8mr17hinb8scfpv47",
+  "fetcher": "github",
+  "repo": "Lautaro-Garcia/counsel-spotify",
+  "unstable": {
+   "version": [
+    20200326,
+    156
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "5d23a898483de19cb60773492c9846facb8ae281",
+   "sha256": "0k9m8xi9p5w2qnpz0zmdf52ip6viws06qq5rssgvb0cr888iqib2"
+  }
+ },
+ {
+  "ename": "counsel-test",
+  "commit": "5b21ac3eaacfff27ca4def04f6cf7b4888b7fcf4",
+  "sha256": "0604kmj0ydfps2si0wvgjw41x2ds7dmsd53x50219f65d4w44nqr",
+  "fetcher": "github",
+  "repo": "xmagpie/counsel-test",
+  "unstable": {
+   "version": [
+    20190819,
+    1920
+   ],
+   "deps": [
+    "ivy",
+    "s"
+   ],
+   "commit": "7fc4e5d0d65c53edbcb4c25917bcf7faaea36ec7",
+   "sha256": "1xlcn99iizfv3wi701r6q176wicvpdsrz9k1jbyr65r6aw8am8fl"
+  }
+ },
+ {
+  "ename": "counsel-tramp",
+  "commit": "e1822b735b6bd533f658bd64ddccda29e19e9a5e",
+  "sha256": "1ga57v6whnpigciw54k3hs0idq4cbl35qrysarik72f46by859v5",
+  "fetcher": "github",
+  "repo": "masasam/emacs-counsel-tramp",
+  "unstable": {
+   "version": [
+    20190616,
+    122
+   ],
+   "deps": [
+    "counsel"
+   ],
+   "commit": "719b38ba2242cc1c6d1d79cab106c8c8b1afa775",
+   "sha256": "1jjgyps59xiyqdi392cfbx19n0znw3kj3fxbc5v3l56i3qm24bd4"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    5
+   ],
+   "deps": [
+    "counsel"
+   ],
+   "commit": "da451df4c5f0ba32056ec600e8eb6a2c7ca4df08",
+   "sha256": "18qlwyjqxap2qfbz14ma6yqp4p3v4q2y8idc355s4szjdd2as2lr"
+  }
+ },
+ {
+  "ename": "counsel-web",
+  "commit": "0dc010d5e4de5c5830ffac3ec0565faac4da7c19",
+  "sha256": "0phrna7bm20vmbnnxrri90i7qnbwcwkxrmycbaxkai5l2rk0ijy8",
+  "fetcher": "github",
+  "repo": "mnewt/counsel-web",
+  "unstable": {
+   "version": [
+    20200313,
+    5
+   ],
+   "deps": [
+    "counsel",
+    "request"
+   ],
+   "commit": "35c648b4cdd9f266ab54512a0fec2a3ca55d5bc6",
+   "sha256": "128vl9a5w8v2xzfi5xn9cqshxmcfq2pcmnkkqcxfmi401m2lm0bx"
+  }
+ },
+ {
+  "ename": "counsel-world-clock",
+  "commit": "7d9da8c45e7d06647f9591d80e83f851a7f3af85",
+  "sha256": "151vm7g7g0jwjlp0wrwlxrjnh9qsckc10whkfgaz9czzvvmsf4cv",
+  "fetcher": "github",
+  "repo": "kchenphy/counsel-world-clock",
+  "unstable": {
+   "version": [
+    20190709,
+    2211
+   ],
+   "deps": [
+    "ivy",
+    "s"
+   ],
+   "commit": "674e4c6b82a92ea765af97cc5f017b357284c7dc",
+   "sha256": "1wm6g6g5jlk3k2h2zb6mjzdnl95yr3x7hk8x1ikpbpfd4xdc64kb"
+  }
+ },
+ {
+  "ename": "countdown",
+  "commit": "ce30233b21be706ab3aaeeb61d5110143fa47c89",
+  "sha256": "0rjhc54f5dj55442b44yhvpicg98jg1jj1n0bv6alx699575vmym",
+  "fetcher": "github",
+  "repo": "xuchunyang/countdown.el",
+  "unstable": {
+   "version": [
+    20190626,
+    244
+   ],
+   "deps": [
+    "stream"
+   ],
+   "commit": "139dea91fc818d65944aca5f16c9626abbdfbf04",
+   "sha256": "0khwqwwsp2zhz7x2w7qcsdh5vmk3ybshj9isa6zr2ygag8aag13h"
+  }
+ },
+ {
+  "ename": "cov",
+  "commit": "d0f35ce436ac157955d6f92de96e14bef9ad69e3",
+  "sha256": "02wk8ikanl5lcwqb9wqc8xx5vwzhn2hpqpxdchg5mdi7fifa1rni",
+  "fetcher": "github",
+  "repo": "AdamNiederer/cov",
+  "unstable": {
+   "version": [
+    20191004,
+    36
+   ],
+   "deps": [
+    "elquery",
+    "f",
+    "s"
+   ],
+   "commit": "9e6f4af7a07e281913f9f50f20dbbf6f26807563",
+   "sha256": "1w27hi64wcd86pw4ds2w4yldfm0wsk15f9mpcinyb68sj1p7sn9y"
+  }
+ },
+ {
+  "ename": "coverage",
+  "commit": "cd70e138534551dd12ba4d165ba56fbd1e033241",
+  "sha256": "0ja7wsx2sj0h01sk1l3c0aidbs1ld4gj3kiwq6brs7r018sz45pm",
+  "fetcher": "github",
+  "repo": "trezona-lecomte/coverage",
+  "unstable": {
+   "version": [
+    20191113,
+    1958
+   ],
+   "deps": [
+    "cl-lib",
+    "ov"
+   ],
+   "commit": "6e3c6f2dcb759a76086adeeb1fdfe83e4f082482",
+   "sha256": "1l2vpyv22f77r2nd1bxf4mggmarb621dl7fnskp5hizhc5sfxi4f"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "cl-lib",
+    "ov"
+   ],
+   "commit": "c73d984168955ca0f47f44b0464aa45282df42b6",
+   "sha256": "1kn61j91x4r4kc498y2jas5il4pc4qzhkj8392g2qiq5m3lbv4vl"
+  }
+ },
+ {
+  "ename": "coverlay",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1n0fblacwps94mhbdwpi22frhqp3pxg4323ghb79rvszb7in9i8j",
+  "fetcher": "github",
+  "repo": "twada/coverlay.el",
+  "unstable": {
+   "version": [
+    20190414,
+    940
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "0beae208d0e7d746a94385428bd61aa5cd7ea828",
+   "sha256": "1qf1s0997n6bfx50bd0jln25p7z6y8pfibijnbqcg2011xmv5dqh"
+  },
+  "stable": {
+   "version": [
+    3,
+    0,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "0beae208d0e7d746a94385428bd61aa5cd7ea828",
+   "sha256": "1qf1s0997n6bfx50bd0jln25p7z6y8pfibijnbqcg2011xmv5dqh"
+  }
+ },
+ {
+  "ename": "cp5022x",
+  "commit": "761fcb0ff07d9746d68e9946c8b46e50c67cd1d8",
+  "sha256": "0v1jhkix01l299m67jag43rnps68m19zy83vvdglxa8dj3naz5dl",
+  "fetcher": "github",
+  "repo": "awasira/cp5022x.el",
+  "unstable": {
+   "version": [
+    20120323,
+    2335
+   ],
+   "commit": "ea7327dd75e54539576916f592ae1be98179ae35",
+   "sha256": "1z67x4a0aricd9q6i2w33k74alddl6w0rijjhzyxwml7ibhbvphz"
+  }
+ },
+ {
+  "ename": "cpanfile-mode",
+  "commit": "673e828a076ad806cdb69102a9d55f80ace45670",
+  "sha256": "1sflykfrhx9sn5dqlaa4s7w34nczh4xqwcig5rmlpwj9yl2mk2dm",
+  "fetcher": "github",
+  "repo": "zakame/cpanfile-mode",
+  "unstable": {
+   "version": [
+    20161001,
+    710
+   ],
+   "commit": "eda675703525198df1f76ddf250bffa40217ec5d",
+   "sha256": "07xivp1i9f884gs17lhp5jm0zk916c7gwazxnkm6m8rl3z2mcq0l"
+  }
+ },
+ {
+  "ename": "cpp-auto-include",
+  "commit": "e745bff580b3fa8a982f2bdfafbc9e238de47b7f",
+  "sha256": "0nzq7k656iy5x4hp7646rxqd0wyf0aspbjdsr8xfkgdp8m3yvaz5",
+  "fetcher": "github",
+  "repo": "emacsorphanage/cpp-auto-include",
+  "unstable": {
+   "version": [
+    20191221,
+    2319
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "08208ca7b9dc4ac940ce9ca1f79424d2f3d3d391",
+   "sha256": "0yspf51h5b7wbqvi9lbd22chyw799n5d05xdzl5axg0i33lzk7bq"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "08208ca7b9dc4ac940ce9ca1f79424d2f3d3d391",
+   "sha256": "0yspf51h5b7wbqvi9lbd22chyw799n5d05xdzl5axg0i33lzk7bq"
+  }
+ },
+ {
+  "ename": "cpp-capf",
+  "commit": "7a456977e00708d2a0b764553048f3be11d96ebc",
+  "sha256": "0gc5grf9viiqsjwydyv3q3qgjwkla4n54d48dc7m6mq6fl8f3p23",
+  "fetcher": "git",
+  "url": "https://git.sr.ht/~zge/cpp-capf",
+  "unstable": {
+   "version": [
+    20200405,
+    8
+   ],
+   "commit": "0a4fd531e9e47369ff29d9f8583efd0bacd6bc50",
+   "sha256": "0q6kgh2mdx3pr8ywr3fhn96chvrf6zx6xxs2lyfviwmfq2c3pyph"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "bee4a7d5e9a52d955325396121a901a7679295b2",
+   "sha256": "0lk6q8jy53iqn9gzh7nd1qpfn5lmsc1h1qn8b6br82v0i1wd96gb"
+  }
+ },
+ {
+  "ename": "cpputils-cmake",
+  "commit": "9b84a159e97f7161d0705da5dd5e8c34ae5cb848",
+  "sha256": "0fswmmmrjv897n51nidmn8gs8yp00595g35vwjafsq6rzfg58j60",
+  "fetcher": "github",
+  "repo": "redguardtoo/cpputils-cmake",
+  "unstable": {
+   "version": [
+    20181006,
+    328
+   ],
+   "commit": "64b2b05eff5398b4cd522e66efaf14553ab18ff4",
+   "sha256": "0kmqk0ba9cacss3m34a8sdnmdir4ci7mv3j176ylm5af0x9yqc45"
+  },
+  "stable": {
+   "version": [
+    5,
+    5
+   ],
+   "commit": "55e5c69554379632692a0fa20bfadeef9194fbdd",
+   "sha256": "1rk0bwdvfrp24z69flh7jg3c8vgvwk6vciixmmmldnrlwhpnbh6i"
+  }
+ },
+ {
+  "ename": "cpu-sos",
+  "commit": "612eddcec84562a1f060c9eb5a63f77ce88da7ea",
+  "sha256": "1mjbcyz8j1d0l6jnfa3bk4ba5dbb8xih56rvfri61caqmy73s6pz",
+  "fetcher": "github",
+  "repo": "oitofelix/cpu-sos",
+  "unstable": {
+   "version": [
+    20200409,
+    2356
+   ],
+   "commit": "1594b76d4ad3a6e3c471d82da366226d156e6226",
+   "sha256": "1pqw1gilj3m35fqaj5j51ggmxzwhdiks0k36hxmw3ihr63am0j5f"
+  }
+ },
+ {
+  "ename": "cql-mode",
+  "commit": "1084dd0ec0f2e8fe6fa8e97b322833c14e8e59d1",
+  "sha256": "0wdal8w0i73xjak2g0wazs54z957f4lj4n8qdmzpcylzpl1lqd88",
+  "fetcher": "github",
+  "repo": "Yuki-Inoue/cql-mode",
+  "unstable": {
+   "version": [
+    20190315,
+    225
+   ],
+   "commit": "d400c046850d3cf404778b2c47d6be4ff84ca04b",
+   "sha256": "016fs984fbn9k6q17mpxq8gbpspai71r52da8aq31f3jijxmrh5a"
+  }
+ },
+ {
+  "ename": "cquery",
+  "commit": "3cd3bffff0d2564c39735f844f9a02a660272caa",
+  "sha256": "01mw6aqiazpzcn6h5h5xcnra8a04yg1ibvpfajx70m5iw9f5w6l6",
+  "fetcher": "github",
+  "repo": "cquery-project/emacs-cquery",
+  "unstable": {
+   "version": [
+    20190118,
+    542
+   ],
+   "deps": [
+    "dash",
+    "lsp-mode"
+   ],
+   "commit": "555e50984ebda177421fdcdc8c76cb29235d9694",
+   "sha256": "1d1m1lgc93fkg7dxb8d6ch68vh6w1zp3yy31bv78vaz8siqrmk16"
+  }
+ },
+ {
+  "ename": "crappy-jsp-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "17m404kdz9avihz52xd7hn5qx06a6k74gmn0gbhly4gl84w3zc6y",
+  "fetcher": "github",
+  "repo": "magnars/crappy-jsp-mode",
+  "unstable": {
+   "version": [
+    20140311,
+    931
+   ],
+   "commit": "6c45ab92b452411cc0fab9bcee2f456276b4fc40",
+   "sha256": "12g6l6xlbs9h24q5lk8yjgk91xqd7r3v7r6czy10r09cmfjmkxbb"
+  }
+ },
+ {
+  "ename": "creamsody-theme",
+  "commit": "488f95b9e425726d641120130d894babcc3b3e85",
+  "sha256": "0l3mq43bszxrz0bxmxb76drp4c8721cw8akgk3l5a800wqbfp2l7",
+  "fetcher": "github",
+  "repo": "emacsfodder/emacs-theme-creamsody",
+  "unstable": {
+   "version": [
+    20170222,
+    1058
+   ],
+   "deps": [
+    "autothemer"
+   ],
+   "commit": "32fa3f4e461da92700523b1b20e7b28974c19a26",
+   "sha256": "01q1l8ajw6lpp1bb4yp8r70d86hcl4hy0mz7x1hzqsvb7flhppp0"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    7
+   ],
+   "deps": [
+    "autothemer"
+   ],
+   "commit": "32fa3f4e461da92700523b1b20e7b28974c19a26",
+   "sha256": "01q1l8ajw6lpp1bb4yp8r70d86hcl4hy0mz7x1hzqsvb7flhppp0"
+  }
+ },
+ {
+  "ename": "creds",
+  "commit": "81b032049ccc3837e8693f010b39716912f76bba",
+  "sha256": "0n11xxaf93bbc9ih25wj09zzw4sj32wb99qig4zcy8bpkl5y3llk",
+  "fetcher": "github",
+  "repo": "ardumont/emacs-creds",
+  "unstable": {
+   "version": [
+    20140510,
+    1706
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "b059397a7d59481f05fbb1bb9c8d3c2c69226482",
+   "sha256": "0l4bvk3m355b25d7pdnhczn3fckbq0rg2l4r0a0d94004ksvylqa"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    6,
+    1
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "00ebefd10005c170b790a01380cb6a98f798ce5c",
+   "sha256": "169ai0xkh3988racnhaapxw0v1pbxvcaq470x1qacdzdpka4a7bs"
+  }
+ },
+ {
+  "ename": "creole",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1q1c6f953g39xal1p7rj8dlcx2crk5cz1q07zp8bgp5jx4nd2z9n",
+  "fetcher": "github",
+  "repo": "nicferrier/elwikicreole",
+  "unstable": {
+   "version": [
+    20140924,
+    1500
+   ],
+   "deps": [
+    "kv",
+    "noflet"
+   ],
+   "commit": "7d5cffe93857f6c75ca09ac79c0e47b8d4410e53",
+   "sha256": "18c4jfjnhb7asdhwj41g06cp9rz5xd7bbx2s1xvk6gahay27rlrv"
+  }
+ },
+ {
+  "ename": "creole-mode",
+  "commit": "f04f93ab9482dbabfdbe3f0c8186c62a9a80c8b3",
+  "sha256": "1lj9a0bgn7lmc2wyjzzvmpaz1f1spj02l51ki2wydjbfhxq61k0s",
+  "fetcher": "github",
+  "repo": "nicferrier/creole-mode",
+  "unstable": {
+   "version": [
+    20130722,
+    50
+   ],
+   "commit": "b5e79b2ec5f19fb5aacf689b5febc3e0b61515c4",
+   "sha256": "0japww5x89vd1ahjm2bc3biz6wxv94vvqq5fyyzkqsblgk5bys0h"
+  }
+ },
+ {
+  "ename": "cricbuzz",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "18nmr7rpbylqgfx5q3ps38wx9q1ndj06msgyjyc8lqpipbsz0pip",
+  "fetcher": "github",
+  "repo": "lepisma/cricbuzz.el",
+  "unstable": {
+   "version": [
+    20180804,
+    2254
+   ],
+   "deps": [
+    "dash",
+    "enlive",
+    "f",
+    "s"
+   ],
+   "commit": "0b95d45991bbcd2fa58d96ce921f6a57ba42c153",
+   "sha256": "1s77a2lfy7nnaxm3ai9dg8lbdxp0892z4gr0yxqrgzawc4qcbb3x"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    6
+   ],
+   "deps": [
+    "dash",
+    "enlive",
+    "f",
+    "s"
+   ],
+   "commit": "0b95d45991bbcd2fa58d96ce921f6a57ba42c153",
+   "sha256": "1s77a2lfy7nnaxm3ai9dg8lbdxp0892z4gr0yxqrgzawc4qcbb3x"
+  }
+ },
+ {
+  "ename": "crm-custom",
+  "commit": "5e0752ba601a8d518d3c7fb54fd008602e7dc19f",
+  "sha256": "14w15skxr44p9ilhpswlgdbqfw8jghxi69l37yk4m449m7g9694c",
+  "fetcher": "github",
+  "repo": "DarwinAwardWinner/crm-custom",
+  "unstable": {
+   "version": [
+    20160117,
+    6
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f1aaccf64306a5f99d9bf7ba815d7ea41c15518d",
+   "sha256": "1kl6blr4dlz40gfc845071nhfms4fm59284ja2177bhghy3wmw6r"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f1aaccf64306a5f99d9bf7ba815d7ea41c15518d",
+   "sha256": "1kl6blr4dlz40gfc845071nhfms4fm59284ja2177bhghy3wmw6r"
+  }
+ },
+ {
+  "ename": "crontab-mode",
+  "commit": "0831d0f869cad4681b22296225307aa5bf185f3f",
+  "sha256": "1lwkj5c8435xgqi9d4zgnp9dzi06byibf69fv9p3x79kv565g3gd",
+  "fetcher": "github",
+  "repo": "emacs-pe/crontab-mode",
+  "unstable": {
+   "version": [
+    20200330,
+    920
+   ],
+   "commit": "9625228cbfce29ac3b443c6eff893ff828268f7d",
+   "sha256": "01s32ivn1fdqq99ms3s6a73hrqdc2r5khrg4jv3sniviql2k3i31"
+  }
+ },
+ {
+  "ename": "crux",
+  "commit": "575e3442a925500a5806e0b900208c1e6bfd11ae",
+  "sha256": "10lim1sngqbdqqwyq6ksqjjqpkm97aj1jk550sgwj28338lnw73c",
+  "fetcher": "github",
+  "repo": "bbatsov/crux",
+  "unstable": {
+   "version": [
+    20181108,
+    827
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "903db7b1a2052f4959d934cae26ec40a3f323ed4",
+   "sha256": "15wq0z9mnx60mi9xfkvgfgsfxdbiigwxr0wqabv3n2091dbzfas4"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "5b3c8155a9e9fe6f189645d175976026a2dc7b8d",
+   "sha256": "0809pb8626i6z1dics3i1cs30p4qd8bzqcgr20lx9k3yq2abq2k7"
+  }
+ },
+ {
+  "ename": "cryptol-mode",
+  "commit": "de12333bb429d84b2c214ac7ebb0219f67838f4f",
+  "sha256": "08iq69gqmps8cckybhj9065b8a2a49p0rpzgx883qxnypsmjfmf2",
+  "fetcher": "github",
+  "repo": "thoughtpolice/cryptol-mode",
+  "unstable": {
+   "version": [
+    20190531,
+    2051
+   ],
+   "commit": "81ebbde83f7cb75b2dfaefc09de6a1703068c769",
+   "sha256": "1y24hssckqi8bapm24b6zw7lagdsh3gaacvq5pscgnjbqpk2rlvp"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "a54d000d24757fad2a91ae2853b16a97ebe52771",
+   "sha256": "00wgbcw09xn9xi52swi4wyi9dj9p9hyin7i431xi6zkhxysw4q7w"
+  }
+ },
+ {
+  "ename": "crystal-mode",
+  "commit": "d4b9b47d7deecf0cf24a42b26d50021cb1219a69",
+  "sha256": "1fgpz7zab6nc6kvjzjsbvrbg8shf4by0f20cvjvyky8kym72q0hk",
+  "fetcher": "github",
+  "repo": "crystal-lang-tools/emacs-crystal-mode",
+  "unstable": {
+   "version": [
+    20191121,
+    1447
+   ],
+   "commit": "2428b016243e78a0312cf6b3ba6939e7169a1405",
+   "sha256": "0al65ldsbmm15h4y79i8avk63qq1y7fqzzad8p327z6d42zfm1qj"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "0fe6815201bebe4c5ff6857bd541d95b05132b10",
+   "sha256": "0r75dvc0jqcqi1qjns8zj132dnm0s6mvqlqynkis16nigbawix8m"
+  }
+ },
+ {
+  "ename": "crystal-playground",
+  "commit": "3e8d3a41e3307f415a144ff55e7a5fa95216cd6c",
+  "sha256": "0789x443qrvxgrcha6rag11fwyr0aj1ixw6xc0l4d34fsy76ppwh",
+  "fetcher": "github",
+  "repo": "jasonrobot/crystal-playground",
+  "unstable": {
+   "version": [
+    20180830,
+    501
+   ],
+   "deps": [
+    "crystal-mode"
+   ],
+   "commit": "fb3691b1281207b459c5be50015a626f356dc40d",
+   "sha256": "19bla2xhvr34vi33cibr2pc8jgasbwjj24vwnwx25w9471sbaszi"
+  }
+ },
+ {
+  "ename": "csgo-conf-mode",
+  "commit": "2298e3f840da549707ec3270c8303f4f63a674dc",
+  "sha256": "0djx6jraqlh9da2jqagj72vjnc8n3px2jp23jdy9rk40z10m5sbr",
+  "fetcher": "github",
+  "repo": "wynro/emacs-csgo-conf-mode",
+  "unstable": {
+   "version": [
+    20161209,
+    1619
+   ],
+   "commit": "57e7224f87a3ccc76b5564cc95fa0ff43bb6807c",
+   "sha256": "14wzh3rlq7xb8djncbjkfiq9hl5frp7gp42sz2ic7aky4qajbcdv"
+  }
+ },
+ {
+  "ename": "csharp-mode",
+  "commit": "736716bbcfd9c9fb1d10ce290cb4f66fe1c68f44",
+  "sha256": "17j84qrprq492dsn103dji8mvh29mbdlqlpsszbgfdgnpvfr1rv0",
+  "fetcher": "github",
+  "repo": "josteink/csharp-mode",
+  "unstable": {
+   "version": [
+    20200402,
+    919
+   ],
+   "commit": "31124dba6833a4de144ca508edb90d5adfeec209",
+   "sha256": "0jrj2ayna8bzhi441hhszhch3na08iciqnd7fsqrm8xbwlrq7l2x"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    2
+   ],
+   "commit": "5e47b7764b3f4c97c260a902e8072d444dbd0f1b",
+   "sha256": "1dnhpxcinrwc7dmwgzbg4lnly05h38f00zrfsjincvii6d8rjiw0"
+  }
+ },
+ {
+  "ename": "csound-mode",
+  "commit": "c940d29de11e43b4abf2901c466c94d426a21818",
+  "sha256": "047a78nhkn6qycsz8w9a0r1xyz5wyf4rds3z5yx9sn5wkv54w95d",
+  "fetcher": "github",
+  "repo": "hlolli/csound-mode",
+  "unstable": {
+   "version": [
+    20200402,
+    1509
+   ],
+   "deps": [
+    "dash",
+    "highlight",
+    "multi",
+    "shut-up"
+   ],
+   "commit": "81bec1a71934a56f677f442e2c22fb6336b366c4",
+   "sha256": "1cxg2c8sz76b3ml8blb4f268xl6ql959p2hi5i4llil4fggw6df2"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "deps": [
+    "highlight",
+    "multi",
+    "shut-up"
+   ],
+   "commit": "389be230aecfea03e8043e8ea6884ea21ea9230b",
+   "sha256": "1c88ak0jaj51fwiqniqxd7xyk23wjl9m57znzm8j267ld8g12znp"
+  }
+ },
+ {
+  "ename": "csproj-mode",
+  "commit": "49823bd653c3599bbc6662c99d0406e9886f1bab",
+  "sha256": "08w22bfk6fs6cxyqxrcv3314vwmh868200axss5fsdfgbggs4vy1",
+  "fetcher": "github",
+  "repo": "omajid/csproj-mode",
+  "unstable": {
+   "version": [
+    20191012,
+    49
+   ],
+   "commit": "95e797af7cc30d4675247b64496c39b77b82e18e",
+   "sha256": "08cxkvq7k14lixavv7nwi5kmmxqvkgmqr4i46ihsgv7jcmxyy8gx"
+  }
+ },
+ {
+  "ename": "css-autoprefixer",
+  "commit": "122e3813a5b8a57303345e9cd855f4d85eced6f0",
+  "sha256": "0q40k8jvs4nc57kcljsx5qzylz9ms0kbr3dic3mr3bj0w062b1qg",
+  "fetcher": "github",
+  "repo": "kkweon/emacs-css-autoprefixer",
+  "unstable": {
+   "version": [
+    20180311,
+    1600
+   ],
+   "commit": "386a5defc8543a3b87820f1761c075c7d1d93b38",
+   "sha256": "0ymba9bhzfi7kkrha4d4sn0hrc3sid4b5k8lhakwwdwafhym0jjb"
+  }
+ },
+ {
+  "ename": "css-comb",
+  "commit": "0afc24de7f847feaa128168d0fd8b2110242cca6",
+  "sha256": "1axwrvbc3xl1ixhh72bii3hhbi9d96y6i1my1rpvwqyd6f7wb2cf",
+  "fetcher": "github",
+  "repo": "channikhabra/css-comb.el",
+  "unstable": {
+   "version": [
+    20160416,
+    559
+   ],
+   "commit": "6fa45e5af8a8bd3af6c1154cde3540e32c4206ee",
+   "sha256": "0nvl6y90p9crk12j7aw0cqdjhli7xbrx3hqckxsnvrnxy4zax7nk"
+  }
+ },
+ {
+  "ename": "css-eldoc",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0k0yzpqwfh5rg8sbv60simdslag514768i0naimm8vyrvv87fzny",
+  "fetcher": "github",
+  "repo": "zenozeng/css-eldoc",
+  "unstable": {
+   "version": [
+    20150125,
+    323
+   ],
+   "commit": "c558ac4c470742c98a37290e6b409db28183df30",
+   "sha256": "1mgc6bd0dzrp1dq1yj8m2qxjnpysd8ppdk2yp96d3zd07zllw4rx"
+  }
+ },
+ {
+  "ename": "cssh",
+  "commit": "da3fcf6252f83d80de8a3ec564244e6cd22391eb",
+  "sha256": "10yvvyzqr06jvijmzis9clb1slzp2mn80yclis8wvrmg4p8djljk",
+  "fetcher": "github",
+  "repo": "dimitri/cssh",
+  "unstable": {
+   "version": [
+    20150810,
+    1709
+   ],
+   "commit": "2fe2754235225a59b63f08b130cfd4352e2e1c3f",
+   "sha256": "1xf2hy077frfz8qf91c0l0qppcjxzr4bsbb622bx6fidqkpa3a1a"
+  }
+ },
+ {
+  "ename": "csv",
+  "commit": "233f9de5f65fd8374f2c1912503c30905aa6691d",
+  "sha256": "1rvi5p27lsb284zqgv4cdqkbqc9r92axmvg7sv52rm7qcj8njwqd",
+  "fetcher": "gitlab",
+  "repo": "u11/csv.el",
+  "unstable": {
+   "version": [
+    20161113,
+    1510
+   ],
+   "commit": "aa1dfa1263565d5fac3879c21d8ddf5f8915e411",
+   "sha256": "1vmazjrfcsa9aa9aw8bq5sazdhqvhxyj837dyw5lmh8gk7z0xdaa"
+  },
+  "stable": {
+   "version": [
+    2,
+    1
+   ],
+   "commit": "aa1dfa1263565d5fac3879c21d8ddf5f8915e411",
+   "sha256": "1vmazjrfcsa9aa9aw8bq5sazdhqvhxyj837dyw5lmh8gk7z0xdaa"
+  }
+ },
+ {
+  "ename": "ctable",
+  "commit": "8bc29a8d518ce7a584277089bd4654f52ac0f358",
+  "sha256": "040qmlgfvjc1f908n52m5ll2fizbrhjzbd0kgrsw37bvm3029rx1",
+  "fetcher": "github",
+  "repo": "kiwanami/emacs-ctable",
+  "unstable": {
+   "version": [
+    20171006,
+    11
+   ],
+   "commit": "b8830d1ca95abb100a81bc32011bd17d5ecba000",
+   "sha256": "0pg303pnqscrsbx9579hc815angszsgf9vpd2z2f8p4f4ka6a00h"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "commit": "08a017bde6d24ea585e39ce2637bebe28774d316",
+   "sha256": "13zq8kym1y6bzrpxbcdz32323a6azy5px4ridff6xh8bfprwlay3"
+  }
+ },
+ {
+  "ename": "ctags-update",
+  "commit": "e5d0c347ff8cf6e0ade80853775fd6b84f387fa5",
+  "sha256": "07548jjpx4var2817y47i6br8iicjlj66n1b33h0av6r1h514nci",
+  "fetcher": "github",
+  "repo": "jixiuf/ctags-update",
+  "unstable": {
+   "version": [
+    20190609,
+    613
+   ],
+   "commit": "67faf248b92388442958a069263c62a345425a1b",
+   "sha256": "0442jdxvn33i0bnb4fspvpdn66gxqyazyc6n3wqjmpn3fqvzwsrp"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "67faf248b92388442958a069263c62a345425a1b",
+   "sha256": "0442jdxvn33i0bnb4fspvpdn66gxqyazyc6n3wqjmpn3fqvzwsrp"
+  }
+ },
+ {
+  "ename": "ctl-mode",
+  "commit": "38d2279fd05bb48f0d0e2276c605cd92892d0196",
+  "sha256": "0fydq779b0y6hmh8srfdimr5rl9mk3sj08rbvlljxv3kqv5ajczj",
+  "fetcher": "github",
+  "repo": "yyr/emacs-grads",
+  "unstable": {
+   "version": [
+    20151202,
+    1006
+   ],
+   "commit": "1a13051db21b999c7682a015b33a03096ff9d891",
+   "sha256": "1d89gxyzv0z0nk7v1aa4qa0xfms2g2dsrr07cw0d99xsnyxfky31"
+  }
+ },
+ {
+  "ename": "ctrlf",
+  "commit": "46073c430c271aa1971e27948e7f6d4b65b3d533",
+  "sha256": "01d2zv7x588r55namcda58l21lg5sbwcn1ycnvg5md69pv5cg461",
+  "fetcher": "github",
+  "repo": "raxod502/ctrlf",
+  "unstable": {
+   "version": [
+    20200417,
+    1549
+   ],
+   "commit": "0bf26a5688b7f34695310100dc8c28381bfafe34",
+   "sha256": "1rknqa4qj3gfhlxfb8fqhdcy936sr0a2vi89rcqh5izl76zynisr"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "41eecedf44f2235ce13e021906c4ce92deddefdc",
+   "sha256": "10gnhafas54zj3z9173h1g7b519ac4i26afclmw3w1pk6qyyb03z"
+  }
+ },
+ {
+  "ename": "ctune",
+  "commit": "927ecd888bc00abff13f5fc335a88dffc2bf6779",
+  "sha256": "1ymy508h19w6c7z93nww9fzirzk84w24j3dpbj08d08bifndhj1q",
+  "fetcher": "github",
+  "repo": "maurooaranda/ctune",
+  "unstable": {
+   "version": [
+    20190914,
+    1305
+   ],
+   "commit": "d7643461f5aa33cc04e4d808123e4ed1d85500ee",
+   "sha256": "03gby644xqah7q9sjba9w6c7askc1s7ka4bx814x6vrlla6089h4"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "d7643461f5aa33cc04e4d808123e4ed1d85500ee",
+   "sha256": "03gby644xqah7q9sjba9w6c7askc1s7ka4bx814x6vrlla6089h4"
+  }
+ },
+ {
+  "ename": "ctxmenu",
+  "commit": "6fc4f51bb6ce8fa9e37c0aeb51696b1980aece0c",
+  "sha256": "03g9px858mg19wapqszwav3599slljdyam8bvn1ri85fpa5ydvdp",
+  "fetcher": "github",
+  "repo": "aki2o/emacs-ctxmenu",
+  "unstable": {
+   "version": [
+    20140303,
+    2142
+   ],
+   "deps": [
+    "log4e",
+    "popup",
+    "yaxception"
+   ],
+   "commit": "5c2376859562b98c07c985d2b483658e4c0e888e",
+   "sha256": "1jlr2miwqsg06hk2clvsrw9fa98m2n76qfq8qv5svrb8dpil04wb"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "log4e",
+    "popup",
+    "yaxception"
+   ],
+   "commit": "5c2376859562b98c07c985d2b483658e4c0e888e",
+   "sha256": "1jlr2miwqsg06hk2clvsrw9fa98m2n76qfq8qv5svrb8dpil04wb"
+  }
+ },
+ {
+  "ename": "cubicaltt",
+  "commit": "1be42b49c206fc4f0df6fb50fed80b3d9b76710b",
+  "sha256": "1wgy6965cnw201wx4a2pn71sa40mh2712y0d0470klr156krj0n9",
+  "fetcher": "github",
+  "repo": "mortberg/cubicaltt",
+  "unstable": {
+   "version": [
+    20171108,
+    1402
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a5c6f94bfc0da84e214641e0b87aa9649ea114ea",
+   "sha256": "1jwyqc86fyrxx9vkirgg97v6d1zdyg2f1l9nhvpjzm7zf77vmb98"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "3257eadf70826fb3ef060c46f85b7a4d60464b1d",
+   "sha256": "1c5nfzsj4bi2rk3d3r2iw03kkpc5dg9p3q3xzj7cxfg2wmg1xaxk"
+  }
+ },
+ {
+  "ename": "cubicle-mode",
+  "commit": "81c29c912b83cbb536d30ba04130b39c0e5e5969",
+  "sha256": "0xcmd0s6dfryl1ihfaqq0pfqc906yzzwk3d3nv8g6b6w78pv1lzv",
+  "fetcher": "github",
+  "repo": "cubicle-model-checker/cubicle",
+  "unstable": {
+   "version": [
+    20171009,
+    1957
+   ],
+   "commit": "c2fba597da83b9ddc1195f1c8710d5330db24735",
+   "sha256": "0gprqhm38y5dcpkmhy1i6rv7pa5l8271b71284p1g90p2iyvm89g"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    2
+   ],
+   "commit": "b043b0247bf9b144a5c3360e5096a4b141dd1fb6",
+   "sha256": "0zsfz1h68xpbgdb1ln8l081vwrgd7i01ap4rjlyrsk8j3q3ry5wz"
+  }
+ },
+ {
+  "ename": "cucumber-goto-step",
+  "commit": "d78d7abccfd9bcebf6888032639923327ad25309",
+  "sha256": "1ydsd455dvaw6a180b6570bfgg0kxn01sn6cb57smqj835am6gx8",
+  "fetcher": "github",
+  "repo": "gstamp/cucumber-goto-step",
+  "unstable": {
+   "version": [
+    20131210,
+    519
+   ],
+   "deps": [
+    "pcre2el"
+   ],
+   "commit": "f2713ffb26ebe1b757d1f2ea80e900b55e5895aa",
+   "sha256": "184plai32sn0indvi1dma6ykz907zgnrdyxdw6f5mghwca96g5kx"
+  }
+ },
+ {
+  "ename": "cuda-mode",
+  "commit": "d21cf17a4a9ae391e2e9cf9be3399095fa23ef55",
+  "sha256": "0ip4vax93x72bjrh6prik6ddmrvszpsmgm0fxfz772rp24smc300",
+  "fetcher": "github",
+  "repo": "chachi/cuda-mode",
+  "unstable": {
+   "version": [
+    20151214,
+    321
+   ],
+   "commit": "9ae9eacfdba3559b5456342d0d03296290df8ff5",
+   "sha256": "1ms0z5zplcbdwwdbgsjsbm32i57z9i2i8j9y3wm0pwzyz4zr36zy"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "c8cf7d92b8039cdd0bd525c258ab42f49a0f91cf",
+   "sha256": "1y685qfdkjyl7dwyvivlgc2lwp102vy6hvcb9zynw84c49f726sn"
+  }
+ },
+ {
+  "ename": "curl-to-elisp",
+  "commit": "11453864d71c7853bc743341db7ca071126ca160",
+  "sha256": "16qyw6yx5vlm32ikmgxhf162jjl1nq7lmrcn6g43fkk93id0374n",
+  "fetcher": "github",
+  "repo": "xuchunyang/curl-to-elisp",
+  "unstable": {
+   "version": [
+    20200427,
+    219
+   ],
+   "commit": "25449962e758607762b3df76fc5501cfeedbbd38",
+   "sha256": "1yk5j8sb1li2zh1w5awwn83rhcwr1g492an4ajxkyikj3b7ljyfv"
+  }
+ },
+ {
+  "ename": "cursor-test",
+  "commit": "6439f7561cfab4f6f3beb132d2a65e94b3deba9e",
+  "sha256": "1c1d5xq4alamlwyqxjx557aykz5dw87acp0lyglsrzzkdynbwlb1",
+  "fetcher": "github",
+  "repo": "ainame/cursor-test.el",
+  "unstable": {
+   "version": [
+    20131207,
+    1732
+   ],
+   "commit": "e09956e048b88fd2ee8dd90b5678baed8b04d31b",
+   "sha256": "0wmnhizv4jfcl1w9za4ydxf6xwxgm5vwmn1zi5vn70zmv4d6r49l"
+  }
+ },
+ {
+  "ename": "cwl-mode",
+  "commit": "2309764cd56d9631dd97981a78b50b9fe793a280",
+  "sha256": "0x8akxxmphpgsc2m78h6b0fs6vvcfvmi1q2jrz8hwlmai8f7zi9j",
+  "fetcher": "github",
+  "repo": "tom-tan/cwl-mode",
+  "unstable": {
+   "version": [
+    20171205,
+    945
+   ],
+   "deps": [
+    "yaml-mode"
+   ],
+   "commit": "bdeb9c0734126f940db80bfb8b1dc735dab671c7",
+   "sha256": "0x9rvyhgy7ijq2r9pin94jz7nisrw6z91jch7d27lkhrmyb1rwk3"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    5
+   ],
+   "deps": [
+    "yaml-mode"
+   ],
+   "commit": "bdeb9c0734126f940db80bfb8b1dc735dab671c7",
+   "sha256": "0x9rvyhgy7ijq2r9pin94jz7nisrw6z91jch7d27lkhrmyb1rwk3"
+  }
+ },
+ {
+  "ename": "cyberpunk-2019-theme",
+  "commit": "1821a436d3d9f7c46cbd198f93951aa35bbf6ad7",
+  "sha256": "09bg3avrsca308y3g86mrzi6klzr4ky8k5y2nbsmwarrarv29qyy",
+  "fetcher": "github",
+  "repo": "the-frey/cyberpunk-2019",
+  "unstable": {
+   "version": [
+    20191008,
+    1133
+   ],
+   "commit": "7e40c37210c363b2819fd9bb98a73101d7a3c206",
+   "sha256": "0fgh39lyq49b4zm10fiqhqzafwrg2vmpfn8k1frdkadansq4jl7z"
+  }
+ },
+ {
+  "ename": "cyberpunk-theme",
+  "commit": "4c632d1e501d48dab54432ab111ce589aa229125",
+  "sha256": "0l2bwb5afkkhrbh99v2gns1vil9s5911hbnlq5w35nmg1wvbmbc9",
+  "fetcher": "github",
+  "repo": "n3mo/cyberpunk-theme.el",
+  "unstable": {
+   "version": [
+    20200115,
+    1720
+   ],
+   "commit": "07edefdec3956fba9076fe98cdc33df7bf617afc",
+   "sha256": "0swjbc61ii88j4myxfl5inn2j46jpf7giqd1kf0rjdyrc8zmj08h"
+  },
+  "stable": {
+   "version": [
+    1,
+    21
+   ],
+   "commit": "17f68f8ac70b712d2870ecb6adb3841b992074fa",
+   "sha256": "05mfgr9aj7knn7niadv9p6z3qrfpq2lbbi2wxxx62xywim9maw2y"
+  }
+ },
+ {
+  "ename": "cycbuf",
+  "commit": "39f1919271df023898e60f5e7635928dc905083f",
+  "sha256": "0gyj48h5wgjawqq3j4hgk5a8d23nffmhd1q53kg7b9vfsda51hbw",
+  "fetcher": "github",
+  "repo": "martinp26/cycbuf",
+  "unstable": {
+   "version": [
+    20131203,
+    2037
+   ],
+   "commit": "1079b41c3eb27d65b66d4399959bb6253f84858e",
+   "sha256": "1d5i8sm1xrsp4v4myidfyb40hm3wp7hgva7dizg9gbb7prmn1p5w"
+  }
+ },
+ {
+  "ename": "cycle-resize",
+  "commit": "8806af6662c8250c7533f643fe1c277ff0466651",
+  "sha256": "0vp57plwqx4nf3pbv5g4frjriq8niiia9xc3bv6c3gzd4a0zm7xi",
+  "fetcher": "github",
+  "repo": "pierre-lecocq/cycle-resize",
+  "unstable": {
+   "version": [
+    20160521,
+    1557
+   ],
+   "commit": "7d255d6fe85f12c967a0f7fcfcf18633be194c88",
+   "sha256": "1bmdjr99g50dzr4y1jxixfjhqmhrzblmpiyjhh5l5gqmdhammm4k"
+  }
+ },
+ {
+  "ename": "cycle-themes",
+  "commit": "f24c358fd616a86f6594001deddee4d62dbb0bc6",
+  "sha256": "1whp9q26sgyf59wygbrvdf9gc94bn4dmhr2f2qivpajx550fjfbc",
+  "fetcher": "github",
+  "repo": "toroidal-code/cycle-themes.el",
+  "unstable": {
+   "version": [
+    20150403,
+    309
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "6e125d11fdbc6b78fc9f219eb2609a5e29815898",
+   "sha256": "125s6vwbb9zpx6h3vrxnn7nr8pb45vhxd70ba2r3f87dlxah93am"
+  }
+ },
+ {
+  "ename": "cyphejor",
+  "commit": "ad7cacfa39d8f85e26372ef21898663aebb68e43",
+  "sha256": "18l5km4xm5j3vv19k3fxs8i3rg4qnhrvx7b62vmyfcqmpiasrh6g",
+  "fetcher": "github",
+  "repo": "mrkkrp/cyphejor",
+  "unstable": {
+   "version": [
+    20190713,
+    1339
+   ],
+   "commit": "78e3705cca65e1456ce26221690dca74c71735c1",
+   "sha256": "1mr0q76p7yw9wv48qwp66nw95c1k3x2yly1vfvdq3phbb8xr6g4q"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "commit": "d7842388a1872b165489624a1a68f536de97e28d",
+   "sha256": "1gi7rp0vf3iahljzjhs3rj9c0rvfcfs93hr8a3hl0ch3h9qq8ng2"
+  }
+ },
+ {
+  "ename": "cypher-mode",
+  "commit": "ef558e7425adfe87202475babfbc1a679dc4cde5",
+  "sha256": "174rfbm7yzkznkfjmh9bdnm5fgqv9bjwm85h39317pv1g8c3mgv0",
+  "fetcher": "github",
+  "repo": "fxbois/cypher-mode",
+  "unstable": {
+   "version": [
+    20151110,
+    1142
+   ],
+   "commit": "ce8543d7877c736c574a17b49874c9dcdc7a06d6",
+   "sha256": "0vbcq807jpjssabmyjcdkpp6nnx1288is2c6x79dkrviw2xxw3qf"
+  }
+ },
+ {
+  "ename": "cython-mode",
+  "commit": "be9bfabe3f79153cb859efc7c3051db244a63879",
+  "sha256": "0asai1f1pncrfxx296fn6ky09hj1qam5j0dpxxkzhy0a34xz0k2i",
+  "fetcher": "github",
+  "repo": "cython/cython",
+  "unstable": {
+   "version": [
+    20190111,
+    2150
+   ],
+   "commit": "d6e6de9237bde72e7878f7b1fe0e58fdccd36dd2",
+   "sha256": "0lac5lqina90w8mdjkqa9qk4b52lmh6kibcph1xcjghqlw7agjfn"
+  },
+  "stable": {
+   "version": [
+    0,
+    29,
+    17
+   ],
+   "commit": "b648b65ac39291aa546b58e44c8576869c351b66",
+   "sha256": "1kc172hh7nj8vlf781rr8jal4f7nl7dbh6csxj0qz4h4cyxrsl6z"
+  }
+ },
+ {
+  "ename": "czech-holidays",
+  "commit": "7224fd77b3d8a37fac2fe0cf832e3487513afd8c",
+  "sha256": "10c0zscbn7pr9xqdqksy4kh0cxjg9bhw8p4qzlk18fd4c8rhqn84",
+  "fetcher": "github",
+  "repo": "hydandata/czech-holidays",
+  "unstable": {
+   "version": [
+    20160113,
+    1752
+   ],
+   "commit": "d136fa09a152b3cd80db6d55c7b4ddfe07b90fbf",
+   "sha256": "1ck1a61m0kjynqwzbw9hnc7y2a6gd6l1430wm7mw3qqsq959qwm6"
+  }
+ },
+ {
+  "ename": "d-mode",
+  "commit": "3c13e9ccc358743de660b1f0e89d6bb709c42bff",
+  "sha256": "060k9ndjx0n5vlpzfxlv5zxnizx72d7y9vk7gz7gdvpm6w2ha0a2",
+  "fetcher": "github",
+  "repo": "Emacs-D-Mode-Maintainers/Emacs-D-Mode",
+  "unstable": {
+   "version": [
+    20191009,
+    903
+   ],
+   "commit": "cfd1d0869d51b7548b3fb738b2f2593c76533d44",
+   "sha256": "0vkl470vvmxap8ca773a0jvjvalmvdbbax3qvgjdclp54ml75al4"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    10
+   ],
+   "commit": "b5d936dfd4c1d0b68a0d911aadd4ba25df7af0e4",
+   "sha256": "0915kb9jcaixgindhj85fmykkhvj31ckp1yg6746fznwdgfrlifv"
+  }
+ },
+ {
+  "ename": "dactyl-mode",
+  "commit": "72d503380511d2d6580b9522b6e0bd2d800bdebe",
+  "sha256": "0ppcabddcpwshfd04x42nbrbkagbyi1bg4vslysnlxn4kaxjs7pm",
+  "fetcher": "github",
+  "repo": "luxbock/dactyl-mode",
+  "unstable": {
+   "version": [
+    20140906,
+    1725
+   ],
+   "commit": "cc55fe6b987271d9647492b8df4c812d884f661f",
+   "sha256": "0fp40cyamchc9qq5vbpxgq3yp6vs8p3ncg46mjzr54psy3fc86dm"
+  }
+ },
+ {
+  "ename": "dad-joke",
+  "commit": "484d571b2737f7c613816333afdde6460c64e635",
+  "sha256": "1cg8iaq79w5zx1s3dirdl7ymcp162mmsy5c4vly90v20yrijblad",
+  "fetcher": "github",
+  "repo": "davep/dad-joke.el",
+  "unstable": {
+   "version": [
+    20170928,
+    658
+   ],
+   "commit": "bee47e7b746b403228fa7d7361cb095de19ac9ba",
+   "sha256": "14snnnjs28jg6k8x6g90m3dbcx10306ipcd256d3l6czk9p17vpd"
+  },
+  "stable": {
+   "version": [
+    1,
+    4
+   ],
+   "commit": "bee47e7b746b403228fa7d7361cb095de19ac9ba",
+   "sha256": "14snnnjs28jg6k8x6g90m3dbcx10306ipcd256d3l6czk9p17vpd"
+  }
+ },
+ {
+  "ename": "daemons",
+  "commit": "1f780485e72ae2885f698fdab0156855f70831f1",
+  "sha256": "14givkrw9p0m261hawahzi0n8jarapb63kv1s62faq57mqnq23jr",
+  "fetcher": "github",
+  "repo": "cbowdon/daemons.el",
+  "unstable": {
+   "version": [
+    20200421,
+    912
+   ],
+   "commit": "a26155d04cec399ffe25b88f71cbfa4ada784569",
+   "sha256": "0bvfcrr3blyz0861ysfw2qbfh1iq8nfdh1kw9wz4m7g6big27qgd"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "commit": "dcf42cb3178d7245d6d49de346d5e2b44e5b7498",
+   "sha256": "00bkzfaw3bqykcks610vk9wlpa2z360xn32bpsrycacwfv29j7g4"
+  }
+ },
+ {
+  "ename": "dakrone-light-theme",
+  "commit": "f3a88022a5f68d2fe01e08c2e99cfe380e3697b7",
+  "sha256": "1njlpvfa4ar14zn51fdmby55vjgfkpskizg5rif2f3zn6y4np2xw",
+  "fetcher": "github",
+  "repo": "dakrone/dakrone-light-theme",
+  "unstable": {
+   "version": [
+    20170808,
+    2140
+   ],
+   "commit": "06f198dc8b4ca7421990b30a23d89c8e0b8c5de4",
+   "sha256": "01vqlsv44h2ah79c8jqv8vkqvgmhqx2w3qbq07l7fx3zkpgjfmpy"
+  }
+ },
+ {
+  "ename": "dakrone-theme",
+  "commit": "dcc07077b47d7c710c7f2d4919d791ed16ed5b26",
+  "sha256": "0ma4rfmgwd6k24jzn6pgk46b88jfix7mz0ib7c7r90h5vmpiq814",
+  "fetcher": "github",
+  "repo": "dakrone/dakrone-theme",
+  "unstable": {
+   "version": [
+    20170801,
+    1933
+   ],
+   "commit": "232ad1be5f3572dcbdf528f1655109aa355a6937",
+   "sha256": "0p51zni42hv090vv6mk9v0v88achmgxlsmlr40y8y6ng57w51r4s"
+  }
+ },
+ {
+  "ename": "danneskjold-theme",
+  "commit": "557244a3b60c7cd3ca964ff843aa1e9d5a1e32ec",
+  "sha256": "0cwab7qp293g92n9mjjz2vpg1pz2q3d40hfszf29rci89wsf3yxl",
+  "fetcher": "github",
+  "repo": "rails-to-cosmos/danneskjold-theme",
+  "unstable": {
+   "version": [
+    20200507,
+    2144
+   ],
+   "commit": "06bcd1c00397a528cf8863b08e93e9a4b1032a57",
+   "sha256": "1y3xnya33qszxnn2kyzgk339gfxxq485b2fydhc32ayfav6hjfn7"
+  }
+ },
+ {
+  "ename": "dante",
+  "commit": "5afa8226077cbda4b76f52734cf8e0b745ab88e8",
+  "sha256": "1j0qwjshh2227k63vd06bvrsccymqssx26yfzams1xf7bp6y0krs",
+  "fetcher": "github",
+  "repo": "jyp/dante",
+  "unstable": {
+   "version": [
+    20200416,
+    1217
+   ],
+   "deps": [
+    "company",
+    "dash",
+    "f",
+    "flycheck",
+    "haskell-mode",
+    "lcr",
+    "s"
+   ],
+   "commit": "7411904bfbde25cdb986e001ec682593dcb7c5e3",
+   "sha256": "0dhkp9g1cc1vlfk1fjncl3x3s7zd9a633ya85pjyxl70kky2qhnz"
+  },
+  "stable": {
+   "version": [
+    1,
+    6
+   ],
+   "deps": [
+    "company",
+    "dash",
+    "f",
+    "flycheck",
+    "haskell-mode",
+    "lcr",
+    "s"
+   ],
+   "commit": "38b589417294c7ea44bf65b73b8046d950f9531b",
+   "sha256": "1mnmn635552zlwd4zr68jbvdjipl6gi4mi6wiyck28fsmq8kw96h"
+  }
+ },
+ {
+  "ename": "dap-mode",
+  "commit": "67942b34975015dd6f2b5f6b43829cc13b1832c6",
+  "sha256": "041mmla70ld5783gn8g360klk3cw39pir5d41544zf3yssk12qpn",
+  "fetcher": "github",
+  "repo": "emacs-lsp/dap-mode",
+  "unstable": {
+   "version": [
+    20200514,
+    1655
+   ],
+   "deps": [
+    "bui",
+    "dash",
+    "dash-functional",
+    "f",
+    "lsp-mode",
+    "lsp-treemacs",
+    "s"
+   ],
+   "commit": "86fc65d525e30c0249e7ec6acac5e4e55cd7c3e2",
+   "sha256": "1jfrjrbjscjsa52wjvvmhcl4cqrw43wz4f34z8yzsxmsalgpf0nw"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "bui",
+    "dash",
+    "dash-functional",
+    "f",
+    "lsp-mode",
+    "lsp-treemacs",
+    "s"
+   ],
+   "commit": "6cbf83784788dc2bba85a2baa1492b276252680c",
+   "sha256": "0w0a9x8lp1z05jv50biidj7vh4yfwkzfkmzwv04il028cy509yh0"
+  }
+ },
+ {
+  "ename": "darcsum",
+  "commit": "be27e728327016b819535ef8cae10020e5a07c2e",
+  "sha256": "1qr3jh05awxxh2qi1sv542vkryfja44zswa5wxwj7g2dr6ck9jr1",
+  "fetcher": "github",
+  "repo": "emacsmirror/darcsum",
+  "unstable": {
+   "version": [
+    20190316,
+    2215
+   ],
+   "commit": "6a8b690539d133c5e3d17cb23fe4365fbb6fb493",
+   "sha256": "1ajdm0p8rdyaqy0wwfslb1mqj9b2dpk8xkljjw6ddacph5hflhcm"
+  }
+ },
+ {
+  "ename": "darcula-theme",
+  "commit": "23c8f10205187babb17e3abc3dc40eb1938e6640",
+  "sha256": "1n9mpkdyf5jpxc5azfs38ccp9p0b5ii87sz4c7z4khs94y0gxqh3",
+  "fetcher": "gitlab",
+  "repo": "fommil/emacs-darcula-theme",
+  "unstable": {
+   "version": [
+    20171227,
+    1845
+   ],
+   "commit": "d9b82b58ded9014985be6658f4ab17e26ed9e93e",
+   "sha256": "1y8rsc63nl4n43pvn283f1vcpqyjnv6xl60fwyscwrqaz19bsnl1"
+  },
+  "stable": {
+   "version": [
+    2,
+    0
+   ],
+   "commit": "2ecd466ffa7a3157b9ddcd7545b6fb8ad308c976",
+   "sha256": "1h5lssnc1am54hkprnp61bsj5fnm8j556q2gbhljfjgrdwnqv8ky"
+  }
+ },
+ {
+  "ename": "dark-krystal-theme",
+  "commit": "641d1959bd31598fcdacd39a3d1bb077dcccfa5c",
+  "sha256": "056aql35502sgvdpbgphpqdxzbjf4ay01rra6pm11c1dya8avv0j",
+  "fetcher": "github",
+  "repo": "emacsfodder/emacs-dark-krystal-theme",
+  "unstable": {
+   "version": [
+    20170808,
+    1300
+   ],
+   "commit": "79084b99665dc9ffb0ec62cc092349a5ecebebbc",
+   "sha256": "1d3cdsaba71qxdqrbj1jrlq8a0iw3h50l5grcdjvxixdnf5nsa4c"
+  }
+ },
+ {
+  "ename": "dark-mint-theme",
+  "commit": "de74e734ae75df051475e60e79d4f5ad5bc128ae",
+  "sha256": "0rljpwycarbn8rnac9vz7n23j69wmx35gn5dx77v0f0ws8ni4k9m",
+  "fetcher": "github",
+  "repo": "shaunvxc/dark-mint-theme",
+  "unstable": {
+   "version": [
+    20160302,
+    642
+   ],
+   "commit": "95c30a26de31549cd341184ba9ab2be8fdc67eba",
+   "sha256": "052k8mqxx8lkadxyz6rwa7l741rwbd1blk2ggpsj2s1g6p9l68a1"
+  }
+ },
+ {
+  "ename": "dark-souls",
+  "commit": "535577ce57bd772aca9f66e27485b0f58a7d35c5",
+  "sha256": "1ilsn657mpl7v8vkbzqf3gp0gmvy0dgynfsn8w4cb49qaiy337xc",
+  "fetcher": "github",
+  "repo": "tomjakubowski/dark-souls.el",
+  "unstable": {
+   "version": [
+    20140314,
+    1128
+   ],
+   "commit": "94122b1215423e58dcf18584a2bd022029d54d4b",
+   "sha256": "1w0y2j0j9n107dbk7ksr9bipshjfs9dk08qbs9m6h5aqh4hmwa4r"
+  }
+ },
+ {
+  "ename": "darkburn-theme",
+  "commit": "a04dd517e02bc4b4a62d956aa901a727354202b0",
+  "sha256": "18hwdnwmkf640vcyx8d66i424wwazbzjq3k0w0xjmwsn2mpyhm9w",
+  "fetcher": "github",
+  "repo": "gorauskas/darkburn-theme",
+  "unstable": {
+   "version": [
+    20170423,
+    1652
+   ],
+   "commit": "0af794ff7fac19778ac8a7efb92455c6f6c2158f",
+   "sha256": "0nv917r8pbj6mfncjl8d7hq4763c69q491d4iwnff1n3wzlcp42s"
+  }
+ },
+ {
+  "ename": "darkmine-theme",
+  "commit": "e527d1335f5fd2aba5b00255a7d69adbc20585ff",
+  "sha256": "06vzldyqlmfd11g8dqrqh5x244ikfa20qwpsmbgsiry3041k8iw5",
+  "fetcher": "github",
+  "repo": "pierre-lecocq/darkmine-theme",
+  "unstable": {
+   "version": [
+    20160406,
+    624
+   ],
+   "commit": "7f7e82ca03bcad52911fa41fb3e204e32d6ee63e",
+   "sha256": "0d2g4iyp8gyfrcc1gkvl40p1shlw1sadswzhry0m1lgbyxiiklrz"
+  }
+ },
+ {
+  "ename": "darkokai-theme",
+  "commit": "81387a5a70f7c42fbae16b52db765136795a37e1",
+  "sha256": "0jw71xl4ihkyq4m0w8c35x5hr8ic07wcabmvpwmvspnj8hkfccwf",
+  "fetcher": "github",
+  "repo": "sjrmanning/darkokai",
+  "unstable": {
+   "version": [
+    20190603,
+    1919
+   ],
+   "commit": "a53815fbfb06604d7f51519c62cc11e507204a70",
+   "sha256": "01jd3y3kr4fplvdv32smbaxqa2dafs8vvp967jma7xm7r1frnbdw"
+  }
+ },
+ {
+  "ename": "darktooth-theme",
+  "commit": "b7f62ac1566ced7332e83253f79078dc30cb7889",
+  "sha256": "1vss0mg1vz4wvsal1r0ya8lid2c18ig11ip5v9nc80b5slbixzvs",
+  "fetcher": "github",
+  "repo": "emacsfodder/emacs-theme-darktooth",
+  "unstable": {
+   "version": [
+    20190412,
+    142
+   ],
+   "deps": [
+    "autothemer"
+   ],
+   "commit": "5cc7fbfb08d2f1a33b85eac92b6450407b915119",
+   "sha256": "164y8hrdz46gg1b6sfi7gdv7pj54hrin0lcmhxp6gc9x5dg3l354"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    10
+   ],
+   "deps": [
+    "autothemer"
+   ],
+   "commit": "ae14a9be19b6fbd287e0f5ad156e7942cd6a5bc6",
+   "sha256": "1jisiz0blksjl6d8q7bnvnlfrwalqfpd93fs66i8pgllhf5z7j19"
+  }
+ },
+ {
+  "ename": "dart-mode",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "0zpvp86067a6l63wrpqxsm9fhv3n4ggbq8pg21vgiz54hk4x1xpp",
+  "fetcher": "github",
+  "repo": "bradyt/dart-mode",
+  "unstable": {
+   "version": [
+    20190827,
+    2102
+   ],
+   "commit": "04fcd649f19d49390079fbf2920a10bf37f6a634",
+   "sha256": "1rpdrq8w8vishjpakxvj20dgnnp2qksi1nrd0qllllb5sjyih56d"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    5
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "flycheck",
+    "s"
+   ],
+   "commit": "d414a5faf22f7fafbb0a8208b88cecd6324704bf",
+   "sha256": "1qmdlwjmmqyyb65sqvfpygifai5m0llc815vp0jqwp8ldd8ls172"
+  }
+ },
+ {
+  "ename": "dart-server",
+  "commit": "e798e4fbe5a1d1dbe08c9bfc5c54d32cfe4bde62",
+  "sha256": "1w7qxd78cnxycg34hxlcw8yda2ixkl683k7mxm20wfqyg5f46bxm",
+  "fetcher": "github",
+  "repo": "bradyt/dart-server",
+  "unstable": {
+   "version": [
+    20190817,
+    1254
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "flycheck",
+    "s"
+   ],
+   "commit": "aba838e8ee2f30309f366e8a91c17616549003ce",
+   "sha256": "0lwss1s1n2kfy0i8nwwfmz5fnw137zkhjs6zv81piniad6hrmn1l"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "flycheck",
+    "s"
+   ],
+   "commit": "bbc66eb981d17046ab98584c950baf963ac5da61",
+   "sha256": "18my32ni61z9dbr8cfkx0cjk4pqhdcmmz3l1hh57vzysscdxldh5"
+  }
+ },
+ {
+  "ename": "dash",
+  "commit": "2853d2fcf46eda788e5a3ea08815d0a2bf9d9d32",
+  "sha256": "1z55hwp6xzbn44xbz6fzpcgbp1b1sf37amryl8p54likj3i21i8n",
+  "fetcher": "github",
+  "repo": "magnars/dash.el",
+  "unstable": {
+   "version": [
+    20200426,
+    2244
+   ],
+   "commit": "fe9bbc2414af645d255de68cd59cf0edd5d8548b",
+   "sha256": "048yglafray643mbjggcf516rymbckn5ypnkiq390h9bd0hz7qy8"
+  },
+  "stable": {
+   "version": [
+    2,
+    17,
+    0
+   ],
+   "commit": "721436b04da4e2795387cb48a98ac6de37ece0fd",
+   "sha256": "153f55dqkhs8w2xlf6b88wp5vlkap7h8vjd9wxh4jp2ram5g4l1n"
+  }
+ },
+ {
+  "ename": "dash-alfred",
+  "commit": "5c93798af21ba97773ccb761841a54650ffec6d7",
+  "sha256": "10s7gfzpzdhvr5v3w4mqkaqjr2xs9j6p8n4mqwi4xw4aps8p0mnr",
+  "fetcher": "github",
+  "repo": "xuchunyang/dash-alfred.el",
+  "unstable": {
+   "version": [
+    20191024,
+    450
+   ],
+   "commit": "fcd21bd6c7eb5cd31377be970406ff3d2454bd5c",
+   "sha256": "0cvkj0d45aan6g5c7930v9syp0m3l1w6zkdgsdvbbiav0i6kpqrx"
+  }
+ },
+ {
+  "ename": "dash-at-point",
+  "commit": "0b2b0c544a76802df5ff3b1bf68a0418a653ea98",
+  "sha256": "0x4nq42nbh2qgbg111lgbknc7w7m7lxd14mp9s8dcrpwsaxz960m",
+  "fetcher": "github",
+  "repo": "stanaka/dash-at-point",
+  "unstable": {
+   "version": [
+    20180710,
+    1356
+   ],
+   "commit": "4d795a23a8428c421d5107f1b005c9d8e0d1816c",
+   "sha256": "09rxyr22qxc9pdrkg0c4smifh2r797ggz5hg74q8j8jybvixsbls"
+  }
+ },
+ {
+  "ename": "dash-docs",
+  "commit": "2f597ec52f4bf55a748231751b6e51328e8f6f59",
+  "sha256": "0vms4yr67l95rybvavd34a9gm57j7524swlf1c0rj8fff1wrmhn0",
+  "fetcher": "github",
+  "repo": "gilbertw1/dash-docs",
+  "unstable": {
+   "version": [
+    20190516,
+    1702
+   ],
+   "deps": [
+    "async",
+    "cl-lib"
+   ],
+   "commit": "111fd9b97001f1ad887b45e5308a14ddd68ce70a",
+   "sha256": "0sckb7z0ylflva212bns7iq9mfnffgjghi0qspsbfwra35zb9xng"
+  }
+ },
+ {
+  "ename": "dash-functional",
+  "commit": "57eed8767c3e98614259c408dc0b5c54d3473883",
+  "sha256": "0hx36hs12mf4nmskaaqrqpcgwrfjdqj6qcxn6bwb0s5m2jf9hs8p",
+  "fetcher": "github",
+  "repo": "magnars/dash.el",
+  "unstable": {
+   "version": [
+    20191109,
+    1327
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "fe9bbc2414af645d255de68cd59cf0edd5d8548b",
+   "sha256": "048yglafray643mbjggcf516rymbckn5ypnkiq390h9bd0hz7qy8"
+  },
+  "stable": {
+   "version": [
+    2,
+    17,
+    0
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "721436b04da4e2795387cb48a98ac6de37ece0fd",
+   "sha256": "153f55dqkhs8w2xlf6b88wp5vlkap7h8vjd9wxh4jp2ram5g4l1n"
+  }
+ },
+ {
+  "ename": "dashboard",
+  "commit": "ef3c6af6ff5d880e6336f8db32b22b64b182794e",
+  "sha256": "19l7mv57ra3i8bz35zfq0wrrp8mk0bzhng6wqpbf9dax4pq3pnp9",
+  "fetcher": "github",
+  "repo": "emacs-dashboard/emacs-dashboard",
+  "unstable": {
+   "version": [
+    20200306,
+    1344
+   ],
+   "deps": [
+    "page-break-lines"
+   ],
+   "commit": "bf38867ae80902d58207974b4a2bba4249324599",
+   "sha256": "1ksa1rq6xmyxc4srj1n3l0rd66zcz9br8k2bp3pzriljqvk8l753"
+  },
+  "stable": {
+   "version": [
+    1,
+    7,
+    0
+   ],
+   "deps": [
+    "page-break-lines"
+   ],
+   "commit": "8dda82fcd4d0954f37a472ad68fb8df55195820e",
+   "sha256": "1qv4cqjy2s2d2bysbq10vq1axpbd8qc3jn1s1r81lxqkcja8zasa"
+  }
+ },
+ {
+  "ename": "dashboard-hackernews",
+  "commit": "a5ba74a9b76458bfd53e9cea7bd704d1488c9c98",
+  "sha256": "0j5ai05g84cl6dhzw1cjvvhchg0sy7zwv355x87c5mg1kx0mrdpk",
+  "fetcher": "github",
+  "repo": "hyakt/emacs-dashboard-hackernews",
+  "unstable": {
+   "version": [
+    20190109,
+    205
+   ],
+   "deps": [
+    "dashboard",
+    "request"
+   ],
+   "commit": "b71814716d8f78181b9d1990f06072460de0797e",
+   "sha256": "1dvv10xn2mh0nh85cd78y23cn8p9ygdhj4k7xs4fa6r7bhp0xvqm"
+  }
+ },
+ {
+  "ename": "dashboard-ls",
+  "commit": "656977197e0030525c52b14de8f6e1faa042daeb",
+  "sha256": "10dsdzps7kh3v5p5grdjwf2xjr7rvaiqp57fg9vh4pficvhylqaa",
+  "fetcher": "github",
+  "repo": "jcs-elpa/dashboard-ls",
+  "unstable": {
+   "version": [
+    20200515,
+    1430
+   ],
+   "deps": [
+    "dashboard",
+    "f",
+    "s"
+   ],
+   "commit": "8b2922abb75847787626fe241d609cff7eabf840",
+   "sha256": "19i6rd0yk90yw9cib2xg72mc667jarfwgh30xh4jfkpdl1j2481h"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    3
+   ],
+   "deps": [
+    "dashboard",
+    "f",
+    "s"
+   ],
+   "commit": "8b2922abb75847787626fe241d609cff7eabf840",
+   "sha256": "19i6rd0yk90yw9cib2xg72mc667jarfwgh30xh4jfkpdl1j2481h"
+  }
+ },
+ {
+  "ename": "dashboard-project-status",
+  "commit": "dfc05873c6532c866d89c4cc07eb84b447a25c70",
+  "sha256": "1r25xmscz3lrjm6jjix416py26za5l1ck3xa77qbyrr4rf1gsakg",
+  "fetcher": "github",
+  "repo": "functionreturnfunction/dashboard-project-status",
+  "unstable": {
+   "version": [
+    20190202,
+    1354
+   ],
+   "deps": [
+    "dashboard",
+    "git"
+   ],
+   "commit": "7675c138e9df8fe2c626e7ba9bbb8b6717671a41",
+   "sha256": "1sbjrc1l57q2ifmw6pf3n105qk3q7rskqy9811qijpsbcl1m819d"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "dashboard",
+    "git"
+   ],
+   "commit": "42fc624937b965d05c9f9d017661fa0420164df7",
+   "sha256": "07n1xqwgmsdiv55fg2vwbg17nyq5jij1ml6mrbzjn726bm88zz4w"
+  }
+ },
+ {
+  "ename": "date-at-point",
+  "commit": "a6dbeddd236f312fac1d5542dfd2edf81df8fad2",
+  "sha256": "0r26df6px6q5jlxj29nhl3qbp6kzy9hs5vd72kpiirgn4wlmagp0",
+  "fetcher": "github",
+  "repo": "alezost/date-at-point.el",
+  "unstable": {
+   "version": [
+    20150308,
+    1243
+   ],
+   "commit": "38df823d05df08ec0748a4185113fae5f99090e9",
+   "sha256": "024jx6q0dik4w2wb8nrk1q73asvjgrsl5mslns0ci3zsya343rch"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "662f8350a83311503dc0aae47a28752f9f1270c9",
+   "sha256": "06aprbhhxb6bbzmf0r5yq2ry6x7708vp4d94ja3ir6zcwc96wn0k"
+  }
+ },
+ {
+  "ename": "date-field",
+  "commit": "fe790729a67d2210cbccefce43805daa20db647d",
+  "sha256": "0fmw13sa4ajs1xkrkdpcjpbp0jl9d81cgvwh93myg8yjjn7wbmvk",
+  "fetcher": "github",
+  "repo": "aki2o/emacs-date-field",
+  "unstable": {
+   "version": [
+    20141129,
+    105
+   ],
+   "deps": [
+    "dash",
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "11c9170d1f7b343233f7716d4c0a62be024c1654",
+   "sha256": "1lmwnj2fnvijj9qp4rjggl7c4x91vnpb47rqaam6m2wmr5wbrx3w"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "dash",
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "11c9170d1f7b343233f7716d4c0a62be024c1654",
+   "sha256": "1lmwnj2fnvijj9qp4rjggl7c4x91vnpb47rqaam6m2wmr5wbrx3w"
+  }
+ },
+ {
+  "ename": "date2name",
+  "commit": "b62dc50387e7f432ca470042f10c9a310981f64d",
+  "sha256": "0xlhq0k8ww7br3xqzn7wkscnsf1d948x3x4li60a9r4287ngjj3l",
+  "fetcher": "github",
+  "repo": "DerBeutlin/date2name.el",
+  "unstable": {
+   "version": [
+    20190630,
+    933
+   ],
+   "commit": "386dbe73678705d6107cd5c9bdeb4f7c97632360",
+   "sha256": "0mdsvrwn6g33arcby02v6m9kfyymq7svgnvpvkvkvfdswcrns4mn"
+  }
+ },
+ {
+  "ename": "datetime",
+  "commit": "91ef4352603cc69930ab3d63f0a90eee63f5f328",
+  "sha256": "0c000fnqg936dhjw5qij4lydzllw1x1jgnyy960zh6r61pk062xj",
+  "fetcher": "github",
+  "repo": "doublep/datetime",
+  "unstable": {
+   "version": [
+    20200208,
+    1629
+   ],
+   "deps": [
+    "extmap"
+   ],
+   "commit": "0ae7addb2c46133393f59011b2aecc08de49b8d1",
+   "sha256": "1df6c5wsn6nwqvfx11d7x3wkjazri3946fwy0m9i6mx18yac38h0"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    5
+   ],
+   "deps": [
+    "extmap"
+   ],
+   "commit": "4a480b66179f016100a582af170a76cda19c980a",
+   "sha256": "0j7k6157fvzl1395ybnrgcz697h6cjk9v445nnfi7q0l8vylbfvm"
+  }
+ },
+ {
+  "ename": "datetime-format",
+  "commit": "eb13cb0dba1696cc51132cd1ff723fa17f892a7c",
+  "sha256": "19qccjz2lzh01glgkixya7bxd6pvyjqgmw8bmqlwag6cb68bwsyv",
+  "fetcher": "github",
+  "repo": "emacs-php/emacs-datetime",
+  "unstable": {
+   "version": [
+    20160612,
+    1715
+   ],
+   "commit": "e6427538b547cbe02e1bd6ed4b765c73620bdae8",
+   "sha256": "1573z8wq5m8qzbzmnsz2fmbwrj9c0ava0jjfchzmwm2b3jyvqh5r"
+  }
+ },
+ {
+  "ename": "datomic-snippets",
+  "commit": "4da8ec133ec5e1204966c1b12c9bc0ca1b50d643",
+  "sha256": "0lax0pj4k9c9n0gmrvil240pc9p25535q3n5m8nb2ar4sli8dn8r",
+  "fetcher": "github",
+  "repo": "magnars/datomic-snippets",
+  "unstable": {
+   "version": [
+    20180817,
+    1045
+   ],
+   "deps": [
+    "dash",
+    "s",
+    "yasnippet"
+   ],
+   "commit": "4a14228840d5252e13d2bf6209670f26345bbb84",
+   "sha256": "1nvng479sy7ykwy9a86qq48yzv8n0903g724srhf42v9c81fc9s7"
+  }
+ },
+ {
+  "ename": "dayone",
+  "commit": "a7c34ae046b75994cf04d16642bf28d4645d1821",
+  "sha256": "0hi09dj00h6g5r84jxglwkgbijhfxknx4mq5gcl5jzjis5affk8l",
+  "fetcher": "github",
+  "repo": "mori-dev/emacs-dayone",
+  "unstable": {
+   "version": [
+    20160105,
+    1240
+   ],
+   "deps": [
+    "ht",
+    "mustache",
+    "uuid"
+   ],
+   "commit": "ab628274f0806451f23bce16f62a6a11cbf91a2b",
+   "sha256": "1j0mk8vyr6sniliq0ix77jldx8vzl73nd5yhh82klzgyymal58ms"
+  }
+ },
+ {
+  "ename": "db",
+  "commit": "79ac40439b65c217e1caaa7175d26556b6a6c889",
+  "sha256": "05jhga9n6gh1bmj8gda14sb703gn7jgjlvy55mlr5kdb2z3rqw1n",
+  "fetcher": "github",
+  "repo": "nicferrier/emacs-db",
+  "unstable": {
+   "version": [
+    20140421,
+    2111
+   ],
+   "deps": [
+    "kv"
+   ],
+   "commit": "b3a423fb8e72f9013009cbe033d654df2ce31438",
+   "sha256": "0syv4kr319d34yqi4q61b8jh5yy22wvd148x1m3pc511znh2ry5k"
+  }
+ },
+ {
+  "ename": "db-pg",
+  "commit": "c4eb90ea7b8ed5c529c74c3faeaf3eac3955eb31",
+  "sha256": "06nfibw01ijv7nr0m142y80jbbpg9kk1dh19s5wq7i6fqf7g08xg",
+  "fetcher": "github",
+  "repo": "nicferrier/emacs-db-pg",
+  "unstable": {
+   "version": [
+    20130131,
+    1902
+   ],
+   "deps": [
+    "db",
+    "pg"
+   ],
+   "commit": "7d5ab86b74b05fe003b3b434d4835f37f3f3eded",
+   "sha256": "15r0qwjkl33p8kh2k5kxz9wnbkv1k470b1h0i6svvljkx9ynk68a"
+  }
+ },
+ {
+  "ename": "dbc",
+  "commit": "0f82920ec0b8544c7008a57a412fe3ba15fc5e0f",
+  "sha256": "0xba153ky52iiyjndryzm6n3v019d0710r4k91chvv8gvyb4jr9z",
+  "fetcher": "gitlab",
+  "repo": "matsievskiysv/display-buffer-control",
+  "unstable": {
+   "version": [
+    20200331,
+    1826
+   ],
+   "deps": [
+    "cl-lib",
+    "ht"
+   ],
+   "commit": "17c6640a409424ec32fdb6bfd6065562e726bf1f",
+   "sha256": "18mamp8j3lmmcpcyfrwrqppxvyx7zirn30rwp4wndczpyapkwv4n"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "ht"
+   ],
+   "commit": "5123477396a562fae350a89fbed79464cc498bc9",
+   "sha256": "0xd94cpqpv0yw70ajrvs69ygds62m40fk0m4s59zvdn5qs7ivj4k"
+  }
+ },
+ {
+  "ename": "ddskk",
+  "commit": "6eccccb79881eaa04af3ed6395cd2ab981d9c894",
+  "sha256": "01pb00p126q7swsl12yjrhghln2wgaj65jhjr0k7dkk64x4psyc9",
+  "fetcher": "github",
+  "repo": "skk-dev/ddskk",
+  "unstable": {
+   "version": [
+    20200403,
+    1308
+   ],
+   "deps": [
+    "ccc",
+    "cdb"
+   ],
+   "commit": "11d91b4cce988e15d7c5fc4345535c9d7a92d53b",
+   "sha256": "19fgk6m951q9swr958337a3jk9b4xgvswkc73al6wsdkigygmhji"
+  }
+ },
+ {
+  "ename": "ddskk-posframe",
+  "commit": "24a819d5032b4f0c72a68ef05a2dd1d0272decea",
+  "sha256": "1b98pkwxmmgngzsqmlmlyr1llml67alkanl34dfvhyyqvmm6p5v2",
+  "fetcher": "github",
+  "repo": "conao3/ddskk-posframe.el",
+  "unstable": {
+   "version": [
+    20191123,
+    1632
+   ],
+   "deps": [
+    "ddskk",
+    "posframe"
+   ],
+   "commit": "8a37953b37d397ba406bc308eb908bd966d34af6",
+   "sha256": "0qm2hb2m3gqzqblgy3d5krxkjbwyhiivzbjfiq9yygh5v729d3as"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "ddskk"
+   ],
+   "commit": "322a9ef8cdb7416dd137e7d2b1be1120126c05fc",
+   "sha256": "0d8ng5m8y88zda286qdjmj0m0wdm3xnv1jzl6m7yv8z8967lj1az"
+  }
+ },
+ {
+  "ename": "deadgrep",
+  "commit": "93389fae7233b83ea904e17bdaf83f8247cda3d8",
+  "sha256": "01m5ds7lic9g11a5iwzw86k6xcv56wbbzjm1343ckbbi255h9i09",
+  "fetcher": "github",
+  "repo": "Wilfred/deadgrep",
+  "unstable": {
+   "version": [
+    20200411,
+    652
+   ],
+   "deps": [
+    "dash",
+    "s",
+    "spinner"
+   ],
+   "commit": "bdcdf138cd71b0a5a80ca64b3bd68b7355084757",
+   "sha256": "1f0gbl2s6h945h1d4pg6cms3w2jwppqiddy3ja9b02ckcld1c227"
+  },
+  "stable": {
+   "version": [
+    0,
+    8
+   ],
+   "deps": [
+    "dash",
+    "s",
+    "spinner"
+   ],
+   "commit": "094ad453e8bc0451a2c062d06db3079f003566d2",
+   "sha256": "18prsg8kyngz8f0l9kjhaz23al9fna2naazy324bjj0sn9yiqgd4"
+  }
+ },
+ {
+  "ename": "debian-el",
+  "commit": "1a381ec81eb160365f478c6a3af638c14558d7d6",
+  "sha256": "0x74a4nm2p4w82kzrdqy90969sminsrhdzppld2mg63jg0wxb8ga",
+  "fetcher": "git",
+  "url": "https://salsa.debian.org/emacsen-team/debian-el.git",
+  "unstable": {
+   "version": [
+    20200401,
+    1622
+   ],
+   "commit": "d7117ab18b15f449f194cd7d91ff22e55fcfa817",
+   "sha256": "09i2n4990d5ra4zqswzv8sjk4psd9lf71xdsgnfbr88pdv1q8bhf"
+  },
+  "stable": {
+   "version": [
+    37,
+    4
+   ],
+   "commit": "9690c4adb71e0fc7d00fea24b49ba944f913f4f5",
+   "sha256": "118yyhmfwpdlqvz5xjqfr4mmpjznkja3jn63n43z66q0apfhhk61"
+  }
+ },
+ {
+  "ename": "debpaste",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0h3hx3vgdhchmndabmzprddq3bxd80jnv4xvma9v6k1v07bl721v",
+  "fetcher": "github",
+  "repo": "alezost/debpaste.el",
+  "unstable": {
+   "version": [
+    20160113,
+    2347
+   ],
+   "deps": [
+    "xml-rpc"
+   ],
+   "commit": "6f2a400665062468ebd03a2ce1de2a73d9084958",
+   "sha256": "1wi70r56pd5z0x4dp4m58p9asq03j74kdm4fi9vai83vsl2z9amq"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    5
+   ],
+   "deps": [
+    "xml-rpc"
+   ],
+   "commit": "6f2a400665062468ebd03a2ce1de2a73d9084958",
+   "sha256": "1wi70r56pd5z0x4dp4m58p9asq03j74kdm4fi9vai83vsl2z9amq"
+  }
+ },
+ {
+  "ename": "debug-print",
+  "commit": "aaaaa43f6ce7db654b651969797978164143b269",
+  "sha256": "01dsqq2qdsbxny6j9dhvg770493awxjhk1m85c14ysgh6sl199rm",
+  "fetcher": "github",
+  "repo": "kenoss/debug-print",
+  "unstable": {
+   "version": [
+    20140126,
+    19
+   ],
+   "commit": "d817fd9ea2d3f8d2c1ace4d8af155684f3a99dc5",
+   "sha256": "1n99nrp42slmyp5228d1nz174bysjn122jgs8fn1x0qxywg7jyxp"
+  }
+ },
+ {
+  "ename": "decide",
+  "commit": "6adcd300e2ac2c718989cf855fd7b3eef654df00",
+  "sha256": "1gjkays48lhrifi9jwja5n2dpxjbl7f9rmka1nsqg9vf7s59vhhc",
+  "fetcher": "github",
+  "repo": "lifelike/decide-mode",
+  "unstable": {
+   "version": [
+    20190201,
+    2137
+   ],
+   "commit": "4bfcc826dd5b1c30caec455d8baa4f363159eac6",
+   "sha256": "07rwflgqlsgqrw2v7rbshrbcr1qkgsx59y904jspvj310s8bsczg"
+  },
+  "stable": {
+   "version": [
+    0,
+    7
+   ],
+   "commit": "90133687118c236142b8110571c463304b3192f9",
+   "sha256": "04yakjnh9c165ssmcwkkm03lnlhgfx5bnk0v3cm73kmwdmfd2q7s"
+  }
+ },
+ {
+  "ename": "decl",
+  "commit": "8c2ecd46180643a0c493e05ec86fe50bc1e55146",
+  "sha256": "0wdhmp226wmrjvjgpbz8ihvhxxv3rrxh97sdqm3mgsav3n071n6k",
+  "fetcher": "github",
+  "repo": "preetpalS/decl.el",
+  "unstable": {
+   "version": [
+    20171212,
+    1458
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "ff7f8a4f1225cbdf141c86172104e67a4cf58c86",
+   "sha256": "1ns1ni6aalr541df3a0ylqy0gj68fcsxdfvm4m1ga5532kxnswnj"
+  }
+ },
+ {
+  "ename": "dedicated",
+  "commit": "5f2a50f62475639af011c99c6cc38928b74b3b0a",
+  "sha256": "1ka8n02r3nd2ksbid23g2qd6707c7xsjx7lbbdi6pcmwam5mglw9",
+  "fetcher": "github",
+  "repo": "emacsorphanage/dedicated",
+  "unstable": {
+   "version": [
+    20151202,
+    110
+   ],
+   "commit": "f47b504c0c56fa5ab9d1028417ca1f65a713a2f0",
+   "sha256": "08ggrfdx8j7zqbid35ph0k8jramm4yf95rjilycywb82n3y6wynz"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "8275fb672f9cc4ba6682ebda0ef91db827e32992",
+   "sha256": "0pba9s0h37sxyqh733vi6k5raa4cs7aradipf3826inw36jcw414"
+  }
+ },
+ {
+  "ename": "dedukti-mode",
+  "commit": "767a685fbe8ae86177e90a17dac3815d41d74df4",
+  "sha256": "17adfmrhfks5f45ddr6ygjq870ac50vfzc5872ycv414zg0w4sa9",
+  "fetcher": "github",
+  "repo": "rafoo/dedukti-mode",
+  "unstable": {
+   "version": [
+    20171103,
+    1212
+   ],
+   "commit": "d7c3505a1046187de3c3aeb144455078d514594e",
+   "sha256": "1842wikq24c8rg0ac84vb1qby9ng1nssxswyyni4kq85lng5lcrp"
+  }
+ },
+ {
+  "ename": "default-text-scale",
+  "commit": "db5e0b70e2d9c80aa41ae2c397f822789c2d3cc2",
+  "sha256": "18r90ic38fnlsbg4gi3r962vban398x2bf3rqhrc6z4jk4aiv3mi",
+  "fetcher": "github",
+  "repo": "purcell/default-text-scale",
+  "unstable": {
+   "version": [
+    20191226,
+    2234
+   ],
+   "commit": "bfc0987c37e93742255d3b23d86c17096fda8e7e",
+   "sha256": "1kbmq9ssp1i58bcmnk0g0ijhwsa80qm5xwwzhzcskrmxb6dg88j2"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "f425d3765c4dea3f2e550720278f9d424579ee5d",
+   "sha256": "0h42jiwxrxjmk7ccwh3h25n7dy2rq61ncm5wx27jhkncc5jdm4h6"
+  }
+ },
+ {
+  "ename": "deferred",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1i8jfapzmw86iqwhnnlqmcj6zh4hyhizdcwjxcnxdj6kvxmwyysm",
+  "fetcher": "github",
+  "repo": "kiwanami/emacs-deferred",
+  "unstable": {
+   "version": [
+    20170901,
+    1330
+   ],
+   "commit": "2239671d94b38d92e9b28d4e12fd79814cfb9c16",
+   "sha256": "0vz59lm7pfz0gbsgrb44y555js85wbdjn0zm6p8wfqjiqf63ds3i"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    1
+   ],
+   "commit": "d012a1ab50edcc2c44e3e49006f054dbff47cb6c",
+   "sha256": "0xy9zb6wwkgwhcxdnslqk52bq3z24chgk6prqi4ks0qcf2bwyh5h"
+  }
+ },
+ {
+  "ename": "define-it",
+  "commit": "c3b4c0c6a715b4302cc6cb6171b185883f2a87e2",
+  "sha256": "0y9l0dy4l1k9j5fis652rypxm5r6qmdxgb5msihbyl8acbwdhhr2",
+  "fetcher": "github",
+  "repo": "jcs-elpa/define-it",
+  "unstable": {
+   "version": [
+    20191230,
+    1409
+   ],
+   "deps": [
+    "google-translate",
+    "popup",
+    "pos-tip",
+    "request",
+    "s",
+    "wiki-summary"
+   ],
+   "commit": "4e769b94c4ec81d9c1eac9dda0e22c869a07aa7c",
+   "sha256": "0amwslk4hawjzjbdakx7ggclw3y9ackl2vnmrr0pw17m5ccsr10b"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    4
+   ],
+   "deps": [
+    "google-translate",
+    "popup",
+    "pos-tip",
+    "request",
+    "s",
+    "wiki-summary"
+   ],
+   "commit": "ec13795cd1185706fcc81ea627d3680f65283891",
+   "sha256": "05wq0apnljclpjn3ifwl31vx3rlwv9kns5yva26sd8ks7kjyqizj"
+  }
+ },
+ {
+  "ename": "define-word",
+  "commit": "e318b30d8b2b89981f4b89d78e5a46e77d3de412",
+  "sha256": "035fdfwnxw0mir1dyvrimygx2gafcgnvlcsmwmry1rsfh39n5b9a",
+  "fetcher": "github",
+  "repo": "abo-abo/define-word",
+  "unstable": {
+   "version": [
+    20200417,
+    844
+   ],
+   "commit": "08c71b1ff4fd07bf0c78d1fcf77efeaafc8f7443",
+   "sha256": "053kyg2jqayphdkm7s8fz8yl97yspib6qszcajyr77m6n7j4i764"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "38e2f94779652fc6280a51b68dc910431513a8e1",
+   "sha256": "1lyqd9cgj7cb2lasf6ycw5j8wnsx2nrfm8ra4sg3dgcspm01a89g"
+  }
+ },
+ {
+  "ename": "defproject",
+  "commit": "86465b351e668d6c19a6fc8e1b1a4aa7904cd139",
+  "sha256": "1gld2fkssrjh4smpp54017549d6aw3n1zisp5s4kkb6cmszwj5gm",
+  "fetcher": "github",
+  "repo": "kotfic/defproject",
+  "unstable": {
+   "version": [
+    20151201,
+    2219
+   ],
+   "commit": "674d48a5e34cb4bba76faa38ee901322ec649086",
+   "sha256": "07jzr571q02l0lg5d40rnmzg16hmybi1nkjgslmvlx46z3c4xvyr"
+  }
+ },
+ {
+  "ename": "defrepeater",
+  "commit": "f0d9cf994233ad098826c6933dfd57665044f598",
+  "sha256": "1zlp206dy5qipb7m3m77j4har258rxgwxg5ipflym4jj183maa39",
+  "fetcher": "github",
+  "repo": "alphapapa/defrepeater.el",
+  "unstable": {
+   "version": [
+    20180830,
+    410
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "9c027a2561fe141dcfb79f75fcaee36cd0386ec1",
+   "sha256": "1fync4i8ds718pdr2v25ily71jng0506hw5k9qpa0a533nsh7p30"
+  }
+ },
+ {
+  "ename": "deft",
+  "commit": "1e2a0e4698d4e71ec28656594f6a83504a823490",
+  "sha256": "0f6z9hsigbwdsmg0abk1ddl9j19d0rpj4gzkl0d5arcpqbla26hp",
+  "fetcher": "github",
+  "repo": "jrblevin/deft",
+  "unstable": {
+   "version": [
+    20200515,
+    1513
+   ],
+   "commit": "fca9ea05ef4fdac825e2ad3921baa7042f6b82c8",
+   "sha256": "0h5znwc4sa92l2472204yn60z30ysvkr9hphjga7kn4j4jgvqak1"
+  },
+  "stable": {
+   "version": [
+    0,
+    8
+   ],
+   "commit": "c4b30d780bfa732ff52d85f0311e4a045f44a7b4",
+   "sha256": "0z7cilgiz6krvl5h2z72hkch43qxmypb0k6p5vxn5lx1p6v0mrf2"
+  }
+ },
+ {
+  "ename": "delim-kill",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "1pplc456771hi52ap1p87y7pabxlvm6raszcxjvnxff3xzw56pig",
+  "fetcher": "github",
+  "repo": "thomas11/delim-kill",
+  "unstable": {
+   "version": [
+    20100517,
+    620
+   ],
+   "commit": "1dbe47344f2d2cbc8c54beedf0cf0bf10fd203c1",
+   "sha256": "06a20sd8nc273azrgha40l1fbqvv9qmxsmkjiqbf6dcf1blkwjyf"
+  }
+ },
+ {
+  "ename": "demangle-mode",
+  "commit": "6ced9f4ffb051a8474d3f72695156416cf2dd8be",
+  "sha256": "0ky0bb6rc99vrdli4lhs656qjndnla9b7inc2ji9l4n1zki5qxzk",
+  "fetcher": "github",
+  "repo": "liblit/demangle-mode",
+  "unstable": {
+   "version": [
+    20190528,
+    306
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "06903d731dfde110e10b979dcc7624ef6dbb5ac8",
+   "sha256": "1j0fszql941kmbd3sf3rjynm4g01cgpkq20lvy9ayj3f2cy46ad4"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "06903d731dfde110e10b979dcc7624ef6dbb5ac8",
+   "sha256": "1j0fszql941kmbd3sf3rjynm4g01cgpkq20lvy9ayj3f2cy46ad4"
+  }
+ },
+ {
+  "ename": "demo-it",
+  "commit": "1dec5877db00c29d81d76be0ee2504399bad9cc4",
+  "sha256": "063v115xy9mcga4qv16v538k12rn9maz92khzwa35wx56bwz4gg7",
+  "fetcher": "github",
+  "repo": "howardabrams/demo-it",
+  "unstable": {
+   "version": [
+    20190828,
+    26
+   ],
+   "commit": "9cfa5c3f92a0dca7eebb1f1a2011643c9b009d26",
+   "sha256": "1fcmrhm6h0j7jjw6kijrcacv628fy80ssxn6h5bilwmw0r4c7wm6"
+  }
+ },
+ {
+  "ename": "describe-number",
+  "commit": "d5ed9063f7e9f540bc90c1df4e3604d4af9bcfe5",
+  "sha256": "0gvriailni2ppz69g0bwnb1ik1ghjkj341k45vllz30j0frp9iji",
+  "fetcher": "github",
+  "repo": "netromdk/describe-number",
+  "unstable": {
+   "version": [
+    20151101,
+    55
+   ],
+   "deps": [
+    "yabin"
+   ],
+   "commit": "40618345a37831804b29589849a785ef5aa5ac24",
+   "sha256": "13fasbhdjwc4jh3cy25gm5sbbg56hq8la271098qpx6dhqm2wycq"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "deps": [
+    "yabin"
+   ],
+   "commit": "40618345a37831804b29589849a785ef5aa5ac24",
+   "sha256": "13fasbhdjwc4jh3cy25gm5sbbg56hq8la271098qpx6dhqm2wycq"
+  }
+ },
+ {
+  "ename": "desktop+",
+  "commit": "0b009b42c73490d56d4613dcf5a57447fb4ccab4",
+  "sha256": "0w7i6k4814hwb19l7ly9yq59674xiw57ylrwxq7yprwx52sgs2r8",
+  "fetcher": "github",
+  "repo": "ffevotte/desktop-plus",
+  "unstable": {
+   "version": [
+    20170107,
+    2132
+   ],
+   "deps": [
+    "dash",
+    "f"
+   ],
+   "commit": "88055cee526a000056201898499cebbd35e3ea76",
+   "sha256": "1nkljslx8cwmm4z18mhnwrc1lmd6lxdyhk8bwhzms7g1p6yi99d8"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "dash",
+    "f"
+   ],
+   "commit": "a9cb8dd0af5071d9f148211b408c54306239381c",
+   "sha256": "10f5dkrwfd6a1ab98j2kywkh1h01pnanvj2i7fv9a9vxnmiywrcf"
+  }
+ },
+ {
+  "ename": "desktop-environment",
+  "commit": "dfe988e0dd4a1272ecf7b2fe758ef0c81e2acad2",
+  "sha256": "0iai1awpkv4n8k263854mx95c8yh2vvif6z91mgn6hck8774v9zp",
+  "fetcher": "github",
+  "repo": "DamienCassou/desktop-environment",
+  "unstable": {
+   "version": [
+    20200225,
+    1042
+   ],
+   "commit": "dbcf3d9411d53908de09ab0d34932d19c8117144",
+   "sha256": "12lqwc3aqrly85ihdrh4k4vwglqypbi250fl0aasbbiwpbnraawa"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "commit": "57de5e018baa1c7667230cae657c80ca765ae912",
+   "sha256": "195n99xvxyh4cfxjpfa1h1maalqrxf7nyi0bh3lqa1z6z5bdb6x2"
+  }
+ },
+ {
+  "ename": "desktop-registry",
+  "commit": "0fda2b54a0ff0b6fc3bd6d20cfcbbf63cae5380f",
+  "sha256": "1sfj0w6hlrx37js63fn1v5xc9ngmahv07g42z68717md6w3c8g0v",
+  "fetcher": "github",
+  "repo": "ryuslash/desktop-registry",
+  "unstable": {
+   "version": [
+    20140119,
+    2143
+   ],
+   "commit": "244c2e7f9f0a1050aa8a47ad0b38f4e4584682dd",
+   "sha256": "11qvhbz7149vqh61fgqqn4inw0ic6ib9lz2xgr9m54pdw9a901mp"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    0
+   ],
+   "commit": "244c2e7f9f0a1050aa8a47ad0b38f4e4584682dd",
+   "sha256": "11qvhbz7149vqh61fgqqn4inw0ic6ib9lz2xgr9m54pdw9a901mp"
+  }
+ },
+ {
+  "ename": "detour",
+  "commit": "010af7946b10ded846225a19d375434b5d9427a8",
+  "sha256": "0w63vqlzkvx54y8y71gzzdyxzm4430bqfyapzyrzrsmxh773hnmn",
+  "fetcher": "github",
+  "repo": "ska2342/detour",
+  "unstable": {
+   "version": [
+    20181122,
+    2138
+   ],
+   "commit": "1ff23c236e18971ed1077840daf047cde79a45ee",
+   "sha256": "0pi0r443yh8xspqbjy2splksws38j8mwrgzjlsp6fizx2warn6y6"
+  }
+ },
+ {
+  "ename": "devdocs",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "14vab71fy5i1ccmzgfdg37lfs1ix3qwhcyk9lvbahcmwnbnimlzm",
+  "fetcher": "github",
+  "repo": "xuchunyang/DevDocs.el",
+  "unstable": {
+   "version": [
+    20170731,
+    850
+   ],
+   "commit": "a2d51e824f0cc48a9dd611cc740bc8b86143e611",
+   "sha256": "0nzh7pgvj4cs5d29lrrmbas29xdslgqzsqjmpapzqzbnrgprnbx8"
+  }
+ },
+ {
+  "ename": "dfmt",
+  "commit": "a343a752d25185b30b10805c4012f3b21a03651e",
+  "sha256": "06g9yimw6q4wl2prspr8vjyv2pxk8bb0451wplpp70h5ajfwy3dz",
+  "fetcher": "github",
+  "repo": "qsimpleq/elisp-dfmt",
+  "unstable": {
+   "version": [
+    20170728,
+    1023
+   ],
+   "commit": "21b9094e907b7ac53f5ecb4ff4539613a9d12434",
+   "sha256": "11r1i8nlz98z49fqb447abg1pv6838q54ly19wyg82k52875ms7m"
+  }
+ },
+ {
+  "ename": "dhall-mode",
+  "commit": "c7ab435077b2f47d75ddc0ff10c64ee2b46044e2",
+  "sha256": "1zkspjwllcw9k4nlnif6jdwzl08ki39vmx90apw029n87xhvx7mp",
+  "fetcher": "github",
+  "repo": "psibi/dhall-mode",
+  "unstable": {
+   "version": [
+    20191006,
+    2324
+   ],
+   "deps": [
+    "reformatter"
+   ],
+   "commit": "ef4d33debe224c6ba37e51a29b9dc8b74f20f1c2",
+   "sha256": "1232y2k4l3bsz90pgis78zxmrw7jv09dfaip21yc1w4vpxfyr384"
+  }
+ },
+ {
+  "ename": "dianyou",
+  "commit": "059b003c74acdfdd917ecb6fecb782a0f54d155b",
+  "sha256": "1mz3nvr62gfkhbayw7784c8kn8drbiq9hlqv1g5vd9pdfhxqs8jl",
+  "fetcher": "github",
+  "repo": "redguardtoo/dianyou",
+  "unstable": {
+   "version": [
+    20191120,
+    39
+   ],
+   "commit": "da7443a680bd8db75884355314e9352cd8c68d05",
+   "sha256": "099iiwp52rfnxgwhiaxdaridhcjdp3qchmskxmb1j5dz757c6w1c"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "commit": "1a1fe6da3196f91db7b76b6c552ca4f2629e36bf",
+   "sha256": "1bgyq4zrhzlqmfgv3az4csgsrqidlshwjbx4r9l2rydk3k3gl78n"
+  }
+ },
+ {
+  "ename": "diary-manager",
+  "commit": "a014f4d862a2480f7edb1266f79ce0801cca13c2",
+  "sha256": "1sk0pvadx4jmv93dj796ysn3jh2wvywayd7dd20v22kdvnlii73d",
+  "fetcher": "github",
+  "repo": "raxod502/diary-manager",
+  "unstable": {
+   "version": [
+    20200404,
+    1549
+   ],
+   "commit": "2850e8f27662eb1e8a34425b3032a361a5c989cc",
+   "sha256": "0p4l6gsfazq6aigvyy8mjkr9jpqs8cbmpzsfwdr7yvr5llxg77ds"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    2
+   ],
+   "commit": "919f724bb58e36b8626dd8d7c8475f71c0c54443",
+   "sha256": "12zg022bhfn4gsclb5wk8wh0bqyy0v5j37369haq6rb5jcc6x5fb"
+  }
+ },
+ {
+  "ename": "dic-lookup-w3m",
+  "commit": "30de78c9cf83de30093a5647976eeaf552d4b2cb",
+  "sha256": "1kwbmzzf8sj4bn5kicmlp2hzv8ydcikwmdy7s40ggkgf1mk9zvqr",
+  "fetcher": "github",
+  "repo": "emacsorphanage/dic-lookup-w3m",
+  "unstable": {
+   "version": [
+    20180526,
+    1621
+   ],
+   "deps": [
+    "stem",
+    "w3m"
+   ],
+   "commit": "3254ab10cbf0078c7162557dd1f68dac28459cf9",
+   "sha256": "0g8kzaxjka7n9jdldh45m22nizgv0m0v94ns7vmmhf1hpsf3zfxz"
+  }
+ },
+ {
+  "ename": "dictcc",
+  "commit": "5e867df96915a0c4f22fdccd4e2096878895bda6",
+  "sha256": "0x1y742hb3dm7xmh5810dlqki38kybw68rmg9adcchm2rn86jqlm",
+  "fetcher": "github",
+  "repo": "cqql/dictcc.el",
+  "unstable": {
+   "version": [
+    20200421,
+    1422
+   ],
+   "deps": [
+    "cl-lib",
+    "ivy"
+   ],
+   "commit": "3950011197ba81f27cc82b4e6075c9100945f936",
+   "sha256": "0xmmkzsg48q6awhkbi5naqjm0yjdnwb437k17razgd6y99vyh0ns"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "ivy"
+   ],
+   "commit": "33df7c64ee5bb9faf77a4b80cd123d35a15ad706",
+   "sha256": "1dxn41p4bmi7l8lz6kp56qhb4v2qi7x8wijyicd3715amsagl2jc"
+  }
+ },
+ {
+  "ename": "dictionary",
+  "commit": "5b08ed7b90e3283e177eff57cb02b12a093dc258",
+  "sha256": "0zr9sm5rmr0frxdr0za72wiffip9391fn9dm5y5x0aj1z4c1n28w",
+  "fetcher": "github",
+  "repo": "myrkr/dictionary-el",
+  "unstable": {
+   "version": [
+    20191111,
+    446
+   ],
+   "deps": [
+    "connection",
+    "link"
+   ],
+   "commit": "c9cad101100975e88873636bfd426b7a19304ebd",
+   "sha256": "0zsjbpq0s0xdxd9r541f04bj1khhgzhdlzr0m4p17zjh1zardbpi"
+  },
+  "stable": {
+   "version": [
+    1,
+    11
+   ],
+   "deps": [
+    "connection",
+    "link"
+   ],
+   "commit": "c9cad101100975e88873636bfd426b7a19304ebd",
+   "sha256": "0zsjbpq0s0xdxd9r541f04bj1khhgzhdlzr0m4p17zjh1zardbpi"
+  }
+ },
+ {
+  "ename": "didyoumean",
+  "commit": "6030fcde06d23b98b0c81d40e1cdb5eb4412b9a1",
+  "sha256": "0hfd6kgqry0mcg77lqf0rvcb9clhjh7krq41hlz4wkrjyw0xbngg",
+  "fetcher": "gitlab",
+  "repo": "kisaragi-hiu/didyoumean.el",
+  "unstable": {
+   "version": [
+    20191020,
+    531
+   ],
+   "commit": "4a6049f2de36801e0a50e93b17a375501f16cf28",
+   "sha256": "0plwn23h96m71vx0jxilnl6nj7lsq4mpjv8mjaiankrxhvjcv6f0"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "commit": "6d0c4203eb192d73d89261b3a9bad52951e394af",
+   "sha256": "1rdmhsrlqn19a140i3099fp7f9wnlglp760rnrjp5p840wzfm74q"
+  }
+ },
+ {
+  "ename": "diff-at-point",
+  "commit": "d342698c94e145ecfebf204c1099dbe765b39c71",
+  "sha256": "1gjjnxafsxrhpxz3zs5kbdmy5wmhcqqfkgryzzc0mmm9iqbskd3j",
+  "fetcher": "gitlab",
+  "repo": "ideasman42/emacs-diff-at-point",
+  "unstable": {
+   "version": [
+    20200413,
+    200
+   ],
+   "commit": "5b06de513297a80cf3a2081b8ee0914e90da810b",
+   "sha256": "1ib8297alpsvcxl9c56n2bjh5j4m49k92nz1mgdybiqwg3z4is21"
+  }
+ },
+ {
+  "ename": "diff-hl",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "135jgjfaiq6kj72ji5k22v4pqc8gjjmcv80r5rkjbjigzlvcvvj2",
+  "fetcher": "github",
+  "repo": "dgutov/diff-hl",
+  "unstable": {
+   "version": [
+    20200510,
+    1540
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "ab2f4f0db9b0c3484db837252ce2dc75f4696b1d",
+   "sha256": "1pb1hp79b3r0nn7dclk3x0d0yrvx6nasgzwi1f918k9n7kzz7n4g"
+  },
+  "stable": {
+   "version": [
+    1,
+    8,
+    7
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "374b1d4b34876219218da7a539e7301259b56958",
+   "sha256": "0i7x6qgr3nydcwhw72sbc8z9x9dfhgkf0dqj9nakvx36vn1bblbq"
+  }
+ },
+ {
+  "ename": "difflib",
+  "commit": "df1924ddff6fd1b5fa32481d3b3d6fbe89a127d3",
+  "sha256": "07bm5hib3ihrrx0lhfsl6km9gfckl73qd4cb37h93zw0hc9xwhy6",
+  "fetcher": "github",
+  "repo": "dieggsy/difflib.el",
+  "unstable": {
+   "version": [
+    20171227,
+    1518
+   ],
+   "deps": [
+    "cl-generic",
+    "ht",
+    "s"
+   ],
+   "commit": "b08850251812d71e62fd6956081299590acdf37b",
+   "sha256": "03k5iy610f1m2nmkdk69p49fcfqfyxmy3h6fqvqsr2v1hix8i54a"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    8
+   ],
+   "deps": [
+    "cl-generic",
+    "ht",
+    "s"
+   ],
+   "commit": "b08850251812d71e62fd6956081299590acdf37b",
+   "sha256": "03k5iy610f1m2nmkdk69p49fcfqfyxmy3h6fqvqsr2v1hix8i54a"
+  }
+ },
+ {
+  "ename": "diffscuss-mode",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "1mycjis38gqwha7jgj05fzv0041ghk6khy5d2dlcyy2nh3bb68rb",
+  "fetcher": "github",
+  "repo": "tomheon/diffscuss",
+  "unstable": {
+   "version": [
+    20141014,
+    2357
+   ],
+   "commit": "e0aacd8b3d9f886f27222c1397f0655e849e0af7",
+   "sha256": "14ccak3cmv36pd085188lypal9gd3flyikcrxn0wi6hn60w2dgvr"
+  }
+ },
+ {
+  "ename": "diffview",
+  "commit": "0ea5dd4c9c114618ac20f565c878f509ce8d9872",
+  "sha256": "0vlzmykvxjwjww313brl1nr13kz41jypsk0s3l8q3rbsnkpfic5k",
+  "fetcher": "github",
+  "repo": "mgalgs/diffview-mode",
+  "unstable": {
+   "version": [
+    20150929,
+    511
+   ],
+   "commit": "031b70913e755c5e55222680f80185032a7d1728",
+   "sha256": "0diw887x4q7kbgdvxbbnxdw51z33kqwxw3v9m45fczxbywyi4cxf"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "471dc36af93e68849bf2da0db991e186283b3546",
+   "sha256": "1ci2gmyl0i736b2sxh77fyg4hs2pkn6rn9z7v2hzv6xlgqd6j3z6"
+  }
+ },
+ {
+  "ename": "digistar-mode",
+  "commit": "851fa17152b664df99b80a654e5c055bb5227181",
+  "sha256": "0khzxlrm09h31i1nqz6rnzhrdssb3kppc4klpxza612l306fih0s",
+  "fetcher": "github",
+  "repo": "retroj/digistar-mode",
+  "unstable": {
+   "version": [
+    20200322,
+    2109
+   ],
+   "commit": "567fff3933f80f00f53610e7b08f75bb636b12c0",
+   "sha256": "0252lhkv2r8gy4512frhdh381xrf64nspvfm2hp7bkhz47dlrs7y"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    1
+   ],
+   "commit": "8b350b7a143219b3f927cb3a1aeb16a299363f05",
+   "sha256": "1sxfzirl8kgzmq8l9l868yl92mz1r8yk58fnxf7p6z4y0pdlcqfg"
+  }
+ },
+ {
+  "ename": "digit-groups",
+  "commit": "e5768c2d9f77e7fc58b7b293763cab64634e00da",
+  "sha256": "032dcnbwrm0fbg6dlghrcvslpwxlhw5bp4ank1mnkp5m39iwdn60",
+  "fetcher": "github",
+  "repo": "adamsmd/digit-groups",
+  "unstable": {
+   "version": [
+    20200506,
+    37
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "7b81930cad19b8b7913b7eedbcb498964bfdcbdb",
+   "sha256": "1ss8ym7zayhvyrl4lzxjqiy8azx2zciwcp1x6s8vw649gmyi98jc"
+  }
+ },
+ {
+  "ename": "digitalocean",
+  "commit": "bc81950b42e4fdc9e6710ba1b859f0fba98be3fa",
+  "sha256": "086v4wrzkjgjks6lfp2hn97pcbplxmc7y7bbiriw4gixgqds6yx9",
+  "fetcher": "gitlab",
+  "repo": "olymk2/emacs-digitalocean",
+  "unstable": {
+   "version": [
+    20190607,
+    726
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "6c32d3593286e2a62d9afab0057c829407b0d1e8",
+   "sha256": "08708nfqfgcd6hzh91li0yhr4kz9lxw6i80brlnis9bfk3cs4m9x"
+  }
+ },
+ {
+  "ename": "digitalocean-helm",
+  "commit": "bc81950b42e4fdc9e6710ba1b859f0fba98be3fa",
+  "sha256": "0q1ir6i9x1ql5c8vg1bff9px2jpwb0rxfiavk9fj3mqbjdifrz0w",
+  "fetcher": "gitlab",
+  "repo": "olymk2/emacs-digitalocean-helm",
+  "unstable": {
+   "version": [
+    20180610,
+    746
+   ],
+   "deps": [
+    "digitalocean",
+    "helm"
+   ],
+   "commit": "b125c9882eded7d73ec109d152b26625f333440b",
+   "sha256": "072v1800gjv566fqjxp8dvzkilwhbvl7lc5fqc0mr4xw8lpldkx9"
+  }
+ },
+ {
+  "ename": "dim",
+  "commit": "3a740ab40cab3a1890f56df808f41a2d541aa77c",
+  "sha256": "0gsyily47g3g55qmhp1wzfz319l1pkgjz4lbigafjzlzqxyclz52",
+  "fetcher": "github",
+  "repo": "alezost/dim.el",
+  "unstable": {
+   "version": [
+    20160818,
+    949
+   ],
+   "commit": "5515f2e8657ef14adcc34aa5b05383a2684328ae",
+   "sha256": "044f337k5swz9bgfmisk6mqr5gjfv3y7zclqspdw846ka4kwpr2z"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "0c19a510580ebdc77e6db536f0f8ed2840b9b33e",
+   "sha256": "1vrd74vmm60gb69a4in412mjncnhkjbfpakpaa6w9rj7w4kyfiz1"
+  }
+ },
+ {
+  "ename": "dim-autoload",
+  "commit": "66b1a81dfd09a2859ae996d5d8e3d704857a340f",
+  "sha256": "0lhzzjrgfvbqnzwhjywrk3skdb7x10xdq7d21q6kdk3h5r0np9f9",
+  "fetcher": "github",
+  "repo": "tarsius/dim-autoload",
+  "unstable": {
+   "version": [
+    20200103,
+    1239
+   ],
+   "commit": "c8dc02259d6c1aa25fb58742ae8b181f83b39a13",
+   "sha256": "0k9m57zrdpabb6b34j9xy3cmcpzni89wq71pzzwgdi47p1n4r4vd"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    3
+   ],
+   "commit": "c8dc02259d6c1aa25fb58742ae8b181f83b39a13",
+   "sha256": "0k9m57zrdpabb6b34j9xy3cmcpzni89wq71pzzwgdi47p1n4r4vd"
+  }
+ },
+ {
+  "ename": "diminish",
+  "commit": "1bfb4acb381cada46458cf60eae9b88d007294d5",
+  "sha256": "1h6a31jllypk47akjflz89xk6h47na96pim17d6g4rpqcafc2k43",
+  "fetcher": "github",
+  "repo": "myrjola/diminish.el",
+  "unstable": {
+   "version": [
+    20191127,
+    1326
+   ],
+   "commit": "6ec6ebc391371418efc6c98d70b013f34af5a2ee",
+   "sha256": "0q8pihj9fwq9w978ycmvzv8kq8ksrdf8zfadjy8i2iwc4ib0jg7y"
+  },
+  "stable": {
+   "version": [
+    0,
+    45
+   ],
+   "commit": "0211de96b7cfba9c9dc8d2d392dbd4ccdb22bc65",
+   "sha256": "0qpgfgp8hrzz4vdifxq8h25n0a0jlzgf7aa1fpy6r0080v5rqbb6"
+  }
+ },
+ {
+  "ename": "diminish-buffer",
+  "commit": "6c2287c7b4c543e92ccfab120388b2c05174d2db",
+  "sha256": "1z0ini177r9dkn4bpdpcmyi014a3444blij8izvpj31bqkyckmqf",
+  "fetcher": "github",
+  "repo": "jcs-elpa/diminish-buffer",
+  "unstable": {
+   "version": [
+    20190921,
+    1647
+   ],
+   "commit": "0b1262f947b3ce03dca17879caec808a7d091bf4",
+   "sha256": "0yrzp7jdw04hj3ag3379l6kb9vpd1vcvqqf4z5yb3i28b5d7s136"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "commit": "e137baa5e258a7938c713253fc9cc63f8674f841",
+   "sha256": "03068nyfb3cz0lz8z3qcwjlsvqaw9dfg3g8w13gmpwsmxaxlbv3i"
+  }
+ },
+ {
+  "ename": "dimmer",
+  "commit": "8ae80e9202d69ed3214325dd15c4b2f114263954",
+  "sha256": "0w8n5svckk1jp8856pg2gkws9798prqjjkdqf8ili2hjcqnd1a3r",
+  "fetcher": "github",
+  "repo": "gonewest818/dimmer.el",
+  "unstable": {
+   "version": [
+    20200509,
+    1718
+   ],
+   "commit": "4abe51533a972910f9012029a47b533878ec682e",
+   "sha256": "023lrm9s8rdq41d19nlizq2s1d2317s4qlc83m4g6ymw54m61z2m"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    2
+   ],
+   "commit": "e45bf2d064a8ecdea2b4caf646ece2d0adc1d84e",
+   "sha256": "0dw0qh5hm1x76s5cqxvylvmjgy0jwy11xm258g6kmx6w1k6r1d2l"
+  }
+ },
+ {
+  "ename": "dionysos",
+  "commit": "890445eca3c555acd2639a6f509c8e83b687f2bd",
+  "sha256": "1wjgj74dnlwd79gc3l7ymbx75jka8rw9smzbb10dsfppw3rrzfmz",
+  "fetcher": "github",
+  "repo": "nlamirault/dionysos",
+  "unstable": {
+   "version": [
+    20160810,
+    1056
+   ],
+   "deps": [
+    "alert",
+    "cl-lib",
+    "dash",
+    "libmpdee",
+    "pkg-info",
+    "s"
+   ],
+   "commit": "0aac21caadabc5a7f09e18a9dcb02f3dec26588b",
+   "sha256": "1g6p9cr3p85i7ay3jmvn7f8c5k8d49fcynb3ymns7rgsf3ypvpyc"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    0
+   ],
+   "deps": [
+    "alert",
+    "cl-lib",
+    "dash",
+    "libmpdee",
+    "pkg-info",
+    "s"
+   ],
+   "commit": "98bc789d20e41020d6e62d63d3c78f8032fa4bf2",
+   "sha256": "1hma72dyn3w6cwd3vrgg4hdlrxgwqs55cjyxb05vs9csz7r42208"
+  }
+ },
+ {
+  "ename": "dircmp",
+  "commit": "b146db5977003cb48bc37317f3df19b8a8c7fc30",
+  "sha256": "0cnj7b0s8vc83sh9sai1cldw54krk5qbz1qmlvvd1whryf2pc95c",
+  "fetcher": "github",
+  "repo": "matthewlmcclure/dircmp-mode",
+  "unstable": {
+   "version": [
+    20141204,
+    1756
+   ],
+   "commit": "558ee0b601c2de9d247612085aafe2926f56a09f",
+   "sha256": "0mcsfsybpsxhzkd2m9bzc0np49azm6qf5x4x9h9lbxc8vfgh4z8s"
+  }
+ },
+ {
+  "ename": "dired-atool",
+  "commit": "0fe7b0857828a041ee06b30edd2cd488cc3394c7",
+  "sha256": "0qljx6fmz1hal9r2smjyc957wcvcpg16vp5mv65ip6d26k5qsj0w",
+  "fetcher": "github",
+  "repo": "HKey/dired-atool",
+  "unstable": {
+   "version": [
+    20181228,
+    1422
+   ],
+   "commit": "09dbb769fe02f546da470369a12468ab4a0cceb2",
+   "sha256": "0j2dz4vy4i22185hhlwg2kprpis97xb12qvfdhvdcnz2vwy61sxa"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    0
+   ],
+   "commit": "09dbb769fe02f546da470369a12468ab4a0cceb2",
+   "sha256": "0j2dz4vy4i22185hhlwg2kprpis97xb12qvfdhvdcnz2vwy61sxa"
+  }
+ },
+ {
+  "ename": "dired-avfs",
+  "commit": "568e524b7bdf91b31655bdbb30fe9481d7a0ffbf",
+  "sha256": "1q42pvrpmd525887iicd3m5gw4w2a78xb72v7fjfl30ay1kir4bm",
+  "fetcher": "github",
+  "repo": "Fuco1/dired-hacks",
+  "unstable": {
+   "version": [
+    20161012,
+    1104
+   ],
+   "deps": [
+    "dash",
+    "dired-hacks-utils"
+   ],
+   "commit": "f49a8bbf95f70671a74a24f7f4de453b2686be46",
+   "sha256": "0b5mk501sy3b2ak46yyy8qcl5f5fsc9py750n962qfh2zs1amrbs"
+  }
+ },
+ {
+  "ename": "dired-collapse",
+  "commit": "6aab23df1451682ff18d9ad02c35cb7ec612bc38",
+  "sha256": "1k8h5cl8r68rnr1a3jnbc0ydflzm5mad7v7f1q60wks5hv61dsd1",
+  "fetcher": "github",
+  "repo": "Fuco1/dired-hacks",
+  "unstable": {
+   "version": [
+    20190515,
+    1210
+   ],
+   "deps": [
+    "dash",
+    "dired-hacks-utils",
+    "f"
+   ],
+   "commit": "f49a8bbf95f70671a74a24f7f4de453b2686be46",
+   "sha256": "0b5mk501sy3b2ak46yyy8qcl5f5fsc9py750n962qfh2zs1amrbs"
+  }
+ },
+ {
+  "ename": "dired-dups",
+  "commit": "6d01ad74959e17b5708ba9fa6a4958d4cda4e232",
+  "sha256": "05s02gw8b339yvsr7vvka1r2140y7mbjzs8px4kn4acgb5y7rk71",
+  "fetcher": "github",
+  "repo": "vapniks/dired-dups",
+  "unstable": {
+   "version": [
+    20130527,
+    2125
+   ],
+   "commit": "694ad128c822c59348ced16c4a0c1356d43da47a",
+   "sha256": "1lcmpzwj43gix2q56bh2gw3gfqh8vl5j3mqr8s7v3k0aw816j0ni"
+  }
+ },
+ {
+  "ename": "dired-efap",
+  "commit": "5669ca2adc48f3349eb59276850e6174e37f9de7",
+  "sha256": "01j5v6584qi8ia7zmk03kx3i3kmm6hn6ycfgqlh5va6lp2h9sr00",
+  "fetcher": "github",
+  "repo": "juan-leon/dired-efap",
+  "unstable": {
+   "version": [
+    20140122,
+    1656
+   ],
+   "commit": "624757b2e54d9a13e2183118d6c113e37684b90c",
+   "sha256": "0jj9da880b4zwxba140fldai1x9p2sxc6hdf3wz6lnbvz1pyn1mv"
+  },
+  "stable": {
+   "version": [
+    0,
+    8
+   ],
+   "commit": "2b849bc5c09d0b752a177495ea1b851ee821f5bf",
+   "sha256": "1m0nx8wd6q56qbp5mbp9n466kyglrz34nflwvgd1qnmi08jwswgv"
+  }
+ },
+ {
+  "ename": "dired-explorer",
+  "commit": "acd40e02185847dfdcd70b3cacea703133e4356d",
+  "sha256": "12mymmcl663ci543vqzg8jai8kgfbb3gw5wsbcm4ln3j8d5fgzd9",
+  "fetcher": "github",
+  "repo": "jidaikobo-shibata/dired-explorer",
+  "unstable": {
+   "version": [
+    20180607,
+    221
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "3ade0a31b5340271d05e9bf443f2504960f6c6dd",
+   "sha256": "0lbm326na005k3pa11rqq5nbhvm55dydi2a7fzs3bzlqwbx7d6fq"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "3ade0a31b5340271d05e9bf443f2504960f6c6dd",
+   "sha256": "0lbm326na005k3pa11rqq5nbhvm55dydi2a7fzs3bzlqwbx7d6fq"
+  }
+ },
+ {
+  "ename": "dired-fdclone",
+  "commit": "8a0ddc10b11772d72a473e8d24ab4641bf4239a4",
+  "sha256": "11aikq2q3m9h4zpgl24f8npvpwd98jgh8ygjwy2x5q8as8i89vf9",
+  "fetcher": "github",
+  "repo": "knu/dired-fdclone.el",
+  "unstable": {
+   "version": [
+    20180403,
+    608
+   ],
+   "commit": "903d7a736d240ef7352989a4e5d0ff9129c2ee3c",
+   "sha256": "0vkdsm29g1cvvv1j8xgjwr94x20zx8k2wvmncrpakcwq6d47cfxw"
+  },
+  "stable": {
+   "version": [
+    1,
+    5,
+    4
+   ],
+   "commit": "903d7a736d240ef7352989a4e5d0ff9129c2ee3c",
+   "sha256": "0vkdsm29g1cvvv1j8xgjwr94x20zx8k2wvmncrpakcwq6d47cfxw"
+  }
+ },
+ {
+  "ename": "dired-filetype-face",
+  "commit": "4e6c8015af3d5f013272308a97e089a4e3ca847d",
+  "sha256": "1g9wzkkqmlkxlxwx43446q9mlam035zwq0wzpf7m6394rw2xlwx6",
+  "fetcher": "github",
+  "repo": "jixiuf/dired-filetype-face",
+  "unstable": {
+   "version": [
+    20180907,
+    1339
+   ],
+   "commit": "7ade7f7e8c2d7518c65f3f0343a10c272da0f47e",
+   "sha256": "0s8mqz331iw2bk4xdvj9zljklqj8dxv0yaw100lddg37qmdf7lgl"
+  }
+ },
+ {
+  "ename": "dired-filter",
+  "commit": "568e524b7bdf91b31655bdbb30fe9481d7a0ffbf",
+  "sha256": "1mw94210i57wrqfyif6rh689xbwbpv1qp6bgc0j7z6g4xypvd52p",
+  "fetcher": "github",
+  "repo": "Fuco1/dired-hacks",
+  "unstable": {
+   "version": [
+    20191105,
+    1404
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "dired-hacks-utils",
+    "f"
+   ],
+   "commit": "f49a8bbf95f70671a74a24f7f4de453b2686be46",
+   "sha256": "0b5mk501sy3b2ak46yyy8qcl5f5fsc9py750n962qfh2zs1amrbs"
+  }
+ },
+ {
+  "ename": "dired-git",
+  "commit": "640074b41e5b70e3b32484ea850a681e9026a9cf",
+  "sha256": "09qh6zjpyasqlsjnakal6a5i04pkhps51b064470rgg855jfh9li",
+  "fetcher": "github",
+  "repo": "conao3/dired-git.el",
+  "unstable": {
+   "version": [
+    20200130,
+    743
+   ],
+   "deps": [
+    "all-the-icons",
+    "async",
+    "async-await",
+    "ppp"
+   ],
+   "commit": "11938721f7202aa784cc493027e3a0ec2c0d39b5",
+   "sha256": "1b5vc9hc26cs1dq7lmvm5gly4h6ahpp0dnlbxi8p4mza12yhnrwi"
+  }
+ },
+ {
+  "ename": "dired-hacks-utils",
+  "commit": "568e524b7bdf91b31655bdbb30fe9481d7a0ffbf",
+  "sha256": "1vgl0wqf7gc2nbiqjn0rkrdlnxfm3wrgspx5b3cixv2n8rqx8kyi",
+  "fetcher": "github",
+  "repo": "Fuco1/dired-hacks",
+  "unstable": {
+   "version": [
+    20190522,
+    950
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "f49a8bbf95f70671a74a24f7f4de453b2686be46",
+   "sha256": "0b5mk501sy3b2ak46yyy8qcl5f5fsc9py750n962qfh2zs1amrbs"
+  }
+ },
+ {
+  "ename": "dired-hide-dotfiles",
+  "commit": "ba64a50f85fdb0ad54149dfed4051b4c1a719cbb",
+  "sha256": "0yy131cvj9a9sz02ari7pzwf22r5y7acyg757h3jvih317v6jyp0",
+  "fetcher": "github",
+  "repo": "mattiasb/dired-hide-dotfiles",
+  "unstable": {
+   "version": [
+    20170314,
+    2039
+   ],
+   "commit": "b715f643ec805b3b8aca334595e6589320f04a49",
+   "sha256": "1n6l25lrhp1x8nhc54kqal96wq96kkfyvz5yzvlw1qd3yk4s567i"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "32cf3b6f90dc56f6ff271c28d827aab303bc6221",
+   "sha256": "1fpzgmvbgfgl6wdrynlpvvdlbm8npgrmnzfz2133zvf5x3zfzq6r"
+  }
+ },
+ {
+  "ename": "dired-icon",
+  "commit": "8a96249947cba52cd75515b3dc83b0842fedf624",
+  "sha256": "0nyiqcywc1p8kw3psisl4zxwmf2g0x82kanka85zxxdz15s509j1",
+  "fetcher": "gitlab",
+  "repo": "xuhdev/dired-icon",
+  "unstable": {
+   "version": [
+    20170223,
+    526
+   ],
+   "commit": "f60e10757a5011235b519231ad35974ff25963ed",
+   "sha256": "0r9qmr2l5kjwh1frp0k87nyaf13f7f9fjjf9yf9z92djqapfm9dd"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "commit": "dbace8d2250f84487d31b39050fcdc260fcde804",
+   "sha256": "1d9105ibaw858gqp19rx2m6xm3hl57vzsmdqir883cy46qpvwhki"
+  }
+ },
+ {
+  "ename": "dired-imenu",
+  "commit": "e346de86b7f7fd5dad548f0936cde54ac11e3f79",
+  "sha256": "09yix4fkr03jq6j2rmvyg6gkmcnraw49a8m9649r3m525qdnhxs1",
+  "fetcher": "github",
+  "repo": "DamienCassou/dired-imenu",
+  "unstable": {
+   "version": [
+    20140109,
+    1610
+   ],
+   "commit": "610e21fe0988c85931d34894d3eee2442c79ab0a",
+   "sha256": "088h9yn6wndq4pq6f7q4iz17f9f4ci29z9nh595idljp3vwr7qid"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "commit": "610e21fe0988c85931d34894d3eee2442c79ab0a",
+   "sha256": "088h9yn6wndq4pq6f7q4iz17f9f4ci29z9nh595idljp3vwr7qid"
+  }
+ },
+ {
+  "ename": "dired-k",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "1nimv6rzk0rrzvniirrsxzd78f4yil1aajcxyra2nmx7dr4xszqh",
+  "fetcher": "github",
+  "repo": "emacsorphanage/dired-k",
+  "unstable": {
+   "version": [
+    20200322,
+    2035
+   ],
+   "commit": "1f90cf6ac932ad30ccfefec27ea7e514c24ab335",
+   "sha256": "1bmpn18z42i8dy331yrks5gsivpvwj677yc58iw66ckjnyjnyjps"
+  },
+  "stable": {
+   "version": [
+    0,
+    19
+   ],
+   "commit": "3f0b9315f87b0f930d51089e311d41282d5f8b15",
+   "sha256": "09xh097v3fd0mjxqlmbfwjlr1v4a99mj4rvwdb6kqgajmlhgi9hx"
+  }
+ },
+ {
+  "ename": "dired-launch",
+  "commit": "31c9a4945d65aa6afc371c447a572284d38d4d71",
+  "sha256": "0vhf0iai60mp8sp7snishz6nrw0bcriq4cx64f41lk1adjb2mqaw",
+  "fetcher": "github",
+  "repo": "thomp/dired-launch",
+  "unstable": {
+   "version": [
+    20200430,
+    1625
+   ],
+   "commit": "95a411f6d4bb5eec4ef8fdbba9f038ddf60da81f",
+   "sha256": "0rz8d9lj2zbipz6cwrlw2a3z9y4rybbmz73h73l1i7fjg9q1kqm4"
+  }
+ },
+ {
+  "ename": "dired-narrow",
+  "commit": "8994330f90a925df17ae425ccdc87865df8e19cd",
+  "sha256": "1rgqiscbizalh78jwc53zbj599dd13a6vzdgf75vzllc1w7jsg6d",
+  "fetcher": "github",
+  "repo": "Fuco1/dired-hacks",
+  "unstable": {
+   "version": [
+    20181114,
+    1723
+   ],
+   "deps": [
+    "dash",
+    "dired-hacks-utils"
+   ],
+   "commit": "f49a8bbf95f70671a74a24f7f4de453b2686be46",
+   "sha256": "0b5mk501sy3b2ak46yyy8qcl5f5fsc9py750n962qfh2zs1amrbs"
+  }
+ },
+ {
+  "ename": "dired-open",
+  "commit": "568e524b7bdf91b31655bdbb30fe9481d7a0ffbf",
+  "sha256": "0a4ksz2jkva4gvhprywjc1fzrbf95xdk8gn25nv1h1c1ckhr91qx",
+  "fetcher": "github",
+  "repo": "Fuco1/dired-hacks",
+  "unstable": {
+   "version": [
+    20180922,
+    1113
+   ],
+   "deps": [
+    "dash",
+    "dired-hacks-utils"
+   ],
+   "commit": "f49a8bbf95f70671a74a24f7f4de453b2686be46",
+   "sha256": "0b5mk501sy3b2ak46yyy8qcl5f5fsc9py750n962qfh2zs1amrbs"
+  }
+ },
+ {
+  "ename": "dired-quick-sort",
+  "commit": "4d278178128deb03a7b1d2e586dc38da2c7af857",
+  "sha256": "01vrk3wqq2zmcblyp9abi2lvrzr2a5ca8r8gjjnr5223037ppl3l",
+  "fetcher": "gitlab",
+  "repo": "xuhdev/dired-quick-sort",
+  "unstable": {
+   "version": [
+    20161208,
+    2112
+   ],
+   "deps": [
+    "hydra"
+   ],
+   "commit": "1845f978d313f750a5b70b832457ed803c4ffbdb",
+   "sha256": "014frvpszixn8cx7rdx704glmjbslv3py3kw0pb0xqf50k4scynf"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "hydra"
+   ],
+   "commit": "fe39cfb2d4a7ba6b30f98134548b4e4bac67c469",
+   "sha256": "1a9r1kz5irpvb2byabbf27sy7rjzaygfpqimpag41sj955wlgy9a"
+  }
+ },
+ {
+  "ename": "dired-rainbow",
+  "commit": "568e524b7bdf91b31655bdbb30fe9481d7a0ffbf",
+  "sha256": "1b9yh8p2x1dg7dyqhjhnqqiiymyl6bwsam65j0lpvbdx8r4iw882",
+  "fetcher": "github",
+  "repo": "Fuco1/dired-hacks",
+  "unstable": {
+   "version": [
+    20190722,
+    1109
+   ],
+   "deps": [
+    "dash",
+    "dired-hacks-utils"
+   ],
+   "commit": "f49a8bbf95f70671a74a24f7f4de453b2686be46",
+   "sha256": "0b5mk501sy3b2ak46yyy8qcl5f5fsc9py750n962qfh2zs1amrbs"
+  }
+ },
+ {
+  "ename": "dired-ranger",
+  "commit": "c03f6f8c779c8784f52adb20b266404cb537113a",
+  "sha256": "19lbbzqflqda5b0alqfzdhpbgqssghqb4n4viq8x4l1fac8mby6h",
+  "fetcher": "github",
+  "repo": "Fuco1/dired-hacks",
+  "unstable": {
+   "version": [
+    20180401,
+    2206
+   ],
+   "deps": [
+    "dash",
+    "dired-hacks-utils"
+   ],
+   "commit": "f49a8bbf95f70671a74a24f7f4de453b2686be46",
+   "sha256": "0b5mk501sy3b2ak46yyy8qcl5f5fsc9py750n962qfh2zs1amrbs"
+  }
+ },
+ {
+  "ename": "dired-recent",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "1qvw7m6wzahc0xmf37cyl9lv1k9442j0kkzx6dl6f0wclw0v6hgs",
+  "fetcher": "github",
+  "repo": "Vifon/dired-recent.el",
+  "unstable": {
+   "version": [
+    20191004,
+    1500
+   ],
+   "commit": "5c799f96da08a0a3200cb5f609baf6c184f558ea",
+   "sha256": "0kc97v80rh10ksfw49pp551ay0b1apwi6ba66rwbyix50d7drimw"
+  }
+ },
+ {
+  "ename": "dired-rifle",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "1x6i68i7f1c3k0w3w4zph16s046ccajyb2641fx0j8dl5367qgbc",
+  "fetcher": "github",
+  "repo": "Vifon/dired-rifle.el",
+  "unstable": {
+   "version": [
+    20200308,
+    2358
+   ],
+   "commit": "99e4110c80d65ca43e2b0ec078e3202995e392d7",
+   "sha256": "034qak8kdp7laz1ylqy9np5ajhwf741mdl0bj5kb7rrrsijxada6"
+  }
+ },
+ {
+  "ename": "dired-rmjunk",
+  "commit": "75d501ae9b64d9aa083f43358881a467a7cd2a04",
+  "sha256": "1m07z6gcsd5i1xshgfxqrpcrqpl0ffa9ls2443za5wkgbalhxx47",
+  "fetcher": "git",
+  "url": "https://git.sr.ht/~jakob/dired-rmjunk",
+  "unstable": {
+   "version": [
+    20191007,
+    1232
+   ],
+   "commit": "92af5fcc2bd0bc3826f4ce238a850e9a362533a4",
+   "sha256": "0720lnnm0sjf8yazr0xjwfrzqwia283jj3c6hcbgfp5l0z162m5b"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "commit": "6a9fa6a35498e53e8c57282e3b08dedc896d880d",
+   "sha256": "0kpkd7qasrb303d0b01d62r82prhrmaasxqa14nf5lh01c213nr4"
+  }
+ },
+ {
+  "ename": "dired-rsync",
+  "commit": "ce9f41ad832cef527dde97f829a8b8339e6ac48b",
+  "sha256": "0lykj7nfpaspwn90macvr7iir4jlrx88i0s9spii7iic2fnm51ql",
+  "fetcher": "github",
+  "repo": "stsquad/dired-rsync",
+  "unstable": {
+   "version": [
+    20200308,
+    1150
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "bfd5c155be1cb6b71c83e5f41116c81b6532b6d5",
+   "sha256": "096lqsq4bh5fgxhfscvmscd5v8d4ji88wks2chi92h9v85sha3b6"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "707f527a5448f8fd881321f1d60e49821d3efe60",
+   "sha256": "1nq3d8py2zsji835wilg514z5j180k371pwqsqrmnnhq1cj4fkia"
+  }
+ },
+ {
+  "ename": "dired-sidebar",
+  "commit": "30e15c8361b01195f198197e704828fbcac0e8d6",
+  "sha256": "19a4gsx9wmpc94jd992c7dj5mxfnnij2nc6qnb2lhk8ad69h1lmc",
+  "fetcher": "github",
+  "repo": "jojojames/dired-sidebar",
+  "unstable": {
+   "version": [
+    20200409,
+    801
+   ],
+   "deps": [
+    "dired-subtree"
+   ],
+   "commit": "6e569c851418890c21fd37d03a62f85343aa0900",
+   "sha256": "0jxljpmzncbh9xb22y4xr9bzcxwijy68pn8chqsvqmivss5py7n9"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "dired-subtree"
+   ],
+   "commit": "347f56480228c2aac97e14f4f5a762c4582d1323",
+   "sha256": "1ahmvbwwdnjddn8qk6gq5gjfkvi1mvm13a968n7zpcpnphk6ygzb"
+  }
+ },
+ {
+  "ename": "dired-single",
+  "commit": "41669decbb7ad5c4dbe152a863f16d87e7bba493",
+  "sha256": "13h8dsn7bkz8ji2rrb7vyrqb2znxarpiynqi65mfli7dn5k086vf",
+  "fetcher": "github",
+  "repo": "crocket/dired-single",
+  "unstable": {
+   "version": [
+    20200303,
+    1144
+   ],
+   "commit": "90ade369ba478fdebf61957f837c0b10cef128b1",
+   "sha256": "08qm8s77kfx9yfhm10vivhq15jrndvd29azkv4y1wd9qsrh5ylk0"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "27120d6a079541e994105e3f969032d3ae7edaa4",
+   "sha256": "14q8lp1x1b78ra9mk90n6dyrm1j9ny5pr7valgpkg8agqyqn7xmn"
+  }
+ },
+ {
+  "ename": "dired-subtree",
+  "commit": "d6a947ac9476f10b95a3c153ec784d2a8330dd4c",
+  "sha256": "1vqcnkh3g6dwi2hwfkb534q0j19pkqzqk3yb7ah8ck4z4ln4ppfk",
+  "fetcher": "github",
+  "repo": "Fuco1/dired-hacks",
+  "unstable": {
+   "version": [
+    20180922,
+    1615
+   ],
+   "deps": [
+    "dash",
+    "dired-hacks-utils"
+   ],
+   "commit": "f49a8bbf95f70671a74a24f7f4de453b2686be46",
+   "sha256": "0b5mk501sy3b2ak46yyy8qcl5f5fsc9py750n962qfh2zs1amrbs"
+  }
+ },
+ {
+  "ename": "dired-toggle",
+  "commit": "17ae4c5ff42e0c48e53d93c88853f649f59034e6",
+  "sha256": "18v571kp440n5g1d7pj86rr8dgbbm324f9vblkdbdvn13c5dczf5",
+  "fetcher": "github",
+  "repo": "fasheng/dired-toggle",
+  "unstable": {
+   "version": [
+    20190616,
+    303
+   ],
+   "commit": "b694ba91a45d0762bd032ff1bb4109e4c62ca686",
+   "sha256": "0kcyd6a3c46dz54c2h74bxm62c0shl85rgi1dhy9gmjshlmwn24k"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    5
+   ],
+   "commit": "5bcdd9f13c0b0149c5125004e93bc2dfd22f3fce",
+   "sha256": "0dghbrx364fihzp5r8ar6vxkavd7mn74qjkijy1wvy34vl0b4911"
+  }
+ },
+ {
+  "ename": "dired-toggle-sudo",
+  "commit": "5cdee2d52c0c53566fdd77a5d42edf365764acff",
+  "sha256": "0fy05af9aq9791ij4j9pscdk5j44pbg0kmhpqli41qiazjw7v2va",
+  "fetcher": "github",
+  "repo": "renard/dired-toggle-sudo",
+  "unstable": {
+   "version": [
+    20200401,
+    1353
+   ],
+   "commit": "13bbe52c54893f5aa3e56228450ffdd0c9e1d169",
+   "sha256": "1fw1pb1z6krqd1pfxxhr6rrfr9ckkcb0zsjzbjk0i2i1q5cg6car"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "02449dbda4e168f99fe5352c9628df5d39e11483",
+   "sha256": "0ajj8d6k5in2hclcrqckinfh80ylddplva0ryfbkzsjkfq167cv2"
+  }
+ },
+ {
+  "ename": "diredfl",
+  "commit": "3da86e18d423198766455929da1dcb3a9a3be381",
+  "sha256": "0cybq15yq07x2mnrnwapy020d598yymcy8y9wwf1m7f59p3h9hvn",
+  "fetcher": "github",
+  "repo": "purcell/diredfl",
+  "unstable": {
+   "version": [
+    20191227,
+    2028
+   ],
+   "commit": "83567d00affce66a4e501563eddd0bd436ac48d0",
+   "sha256": "11xkvywcfv27gr0dpgprmmnjqfxmxdmcpa2kq0vqnxrblg6ijwbr"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "45e9c46f58c655694758d4986b9195c8bb40ddf3",
+   "sha256": "1zb2lz7rp58zqvpniqcsmqabi7nqg2d8bfd0hgmq68bn2hd25b5z"
+  }
+ },
+ {
+  "ename": "diredful",
+  "commit": "76f3d178e7c3982b53c7ee0096c839397534d732",
+  "sha256": "0y8x6q1yfsk0srxsh4g5nbsms1g9pk9d103jx7cfdac79mcigw7x",
+  "fetcher": "github",
+  "repo": "thamer/diredful",
+  "unstable": {
+   "version": [
+    20160529,
+    2017
+   ],
+   "commit": "c08e163d9d6c62f7b07e94d54c96c2e364e67e0e",
+   "sha256": "1h2hnm8r3anfbk5x7d2dnv38bdllsbwaam6ivpbgzn12r23wrsr2"
+  },
+  "stable": {
+   "version": [
+    1,
+    10
+   ],
+   "commit": "b17b3087e0084a5571a9ac4d47ccfc36d96b109e",
+   "sha256": "1d8n8wj5k82a1sfg93kn3ajci804mpp9j206x5f185zd48wb25z8"
+  }
+ },
+ {
+  "ename": "direnv",
+  "commit": "5419809ee62b920463e359c8e1314cd0763657c1",
+  "sha256": "0zzmi5m6fh42kyf8dyjrjyrl03pkbipnh4mnssrhp83ljczxkyhd",
+  "fetcher": "github",
+  "repo": "wbolster/emacs-direnv",
+  "unstable": {
+   "version": [
+    20200319,
+    2357
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "1daf479b9b7600ce9681f2a980deae7fcb2f3d59",
+   "sha256": "08hwjd1xmq6hxab537zm11kwqhwnc1dfznfqzy66c4agl9z9a7vx"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    0
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "1f93e3f9cae5ec171939fe5c1fe9744a28fa6576",
+   "sha256": "0xkqn4604k2imas6azy1www56br8ls4iv9a44pxcd8h94j1fp44d"
+  }
+ },
+ {
+  "ename": "direx",
+  "commit": "7856a62fb86415c88aa72b574895328c93c10a09",
+  "sha256": "0qp3pidsa9gwz8vhcfg3l5vl6w8071gk04amba8cpc0w3a9pps95",
+  "fetcher": "github",
+  "repo": "emacsorphanage/direx",
+  "unstable": {
+   "version": [
+    20170422,
+    1327
+   ],
+   "commit": "a79bfdb5980cf6ed7bfb3b41ddc471a7b6c0ede4",
+   "sha256": "0fl9hdnrq54awx43635p6pmc8bqyppa02gs1d76nifi0q4g9v4m7"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "423caeed13249e37afc937dc8134cb3c53e0f111",
+   "sha256": "0p8c2hjgr81idm1psv3i3v5hr5rv0875ig8app2yqjwzvl0nn73f"
+  }
+ },
+ {
+  "ename": "direx-grep",
+  "commit": "6a88a29090a0d6c636f4aeb5214433db66367d9e",
+  "sha256": "0y2wrzq06prm55akwgaqjg56znknyvbayav13asirqzg258skvm2",
+  "fetcher": "github",
+  "repo": "aki2o/direx-grep",
+  "unstable": {
+   "version": [
+    20140515,
+    1506
+   ],
+   "deps": [
+    "direx"
+   ],
+   "commit": "1109a512a80b2673a70b18b8568514049017faad",
+   "sha256": "0swdh0qynpijsv6a2d308i42hfa0jwqsnmf4sm8vrhaf3vv25f5h"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "direx"
+   ],
+   "commit": "1109a512a80b2673a70b18b8568514049017faad",
+   "sha256": "0swdh0qynpijsv6a2d308i42hfa0jwqsnmf4sm8vrhaf3vv25f5h"
+  }
+ },
+ {
+  "ename": "dirtree",
+  "commit": "ae489be43b1aee93614e40f492ebdf0b98a3fbc1",
+  "sha256": "1fm003rix3sdfx8fq3ab5s8b2q65gbkjsn1j3fg5qmhv56p7lrs9",
+  "fetcher": "github",
+  "repo": "emacsorphanage/dirtree",
+  "unstable": {
+   "version": [
+    20140129,
+    832
+   ],
+   "deps": [
+    "tree-mode",
+    "windata"
+   ],
+   "commit": "ba55f1e716e386fdd37cb8e7f48616e405dc7251",
+   "sha256": "0abs3r4zzfnf4igiakrv3bpyxz7qlnw26l57rynsk7c3w3s5ya29"
+  }
+ },
+ {
+  "ename": "dirtree-prosjekt",
+  "commit": "6d359ec827573dd8c871c4f23df5d1737f1830e7",
+  "sha256": "0pyb6c0gvc16z5rc5h0kpl8021hz2hzv86cmjsd20gbhz7imrqwk",
+  "fetcher": "github",
+  "repo": "abingham/prosjekt",
+  "unstable": {
+   "version": [
+    20140129,
+    904
+   ],
+   "deps": [
+    "dirtree",
+    "prosjekt"
+   ],
+   "commit": "a864a8be5842223043702395f311e3350c28e9db",
+   "sha256": "1m8zvrv5aws7b0dffk8y6b5mncdk2c4k90mx69jys10fs0gc5hb3"
+  }
+ },
+ {
+  "ename": "disable-mouse",
+  "commit": "dbbc396373212fdf731e135cde391f27708ff015",
+  "sha256": "0c0ps39s6wg3grspvgck0cwxnas73nfaahfa87l0mmgsrsvas5m7",
+  "fetcher": "github",
+  "repo": "purcell/disable-mouse",
+  "unstable": {
+   "version": [
+    20200304,
+    2159
+   ],
+   "commit": "a8318f5f21716316053cc092ab9abb43cb681fe0",
+   "sha256": "0z9749hd3x1z2sf3lyzx2rrcfarixmfg0hnc5xsckkgyb7gbn6hq"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "81639930bcaeedadbcc19728e91719afcac84613",
+   "sha256": "0l6mai68ns3qw3rlvjvzsnqwdy7bxqiy0vdwflq0l1plxb1vazyc"
+  }
+ },
+ {
+  "ename": "disaster",
+  "commit": "a4654b3646b96f967e2c75440e664a417cd0f517",
+  "sha256": "1ad8q81n0s13cwmm216wqx3s92195pda1amc4wxvpb3lq7dbd3yn",
+  "fetcher": "github",
+  "repo": "jart/disaster",
+  "unstable": {
+   "version": [
+    20171016,
+    2152
+   ],
+   "commit": "10a785facc60d89d78e0d5177985ab1af1741bb4",
+   "sha256": "0iz43jdkh5qdllqdchliys84gn9bpj6688rpc4jnycp64141m6cx"
+  }
+ },
+ {
+  "ename": "discourse",
+  "commit": "f5e64fc3fa3fc7d0ac14e7e5d324ee1ca77ea4c3",
+  "sha256": "0j11pyly7qni3gqgywd9bkzfm1dfvhbfjc7pls9n9s26nbqdzcw9",
+  "fetcher": "github",
+  "repo": "lujun9972/discourse-api",
+  "unstable": {
+   "version": [
+    20160911,
+    819
+   ],
+   "deps": [
+    "cl-lib",
+    "request",
+    "s"
+   ],
+   "commit": "a86c7e608851e186fe12e892a573994f08c8e65e",
+   "sha256": "1p4crd7v94hmqzqh8bc7jx1pfhallmj4kn36f8l22z4r2mkyycxc"
+  }
+ },
+ {
+  "ename": "discover",
+  "commit": "688e32e98758aa6fd31218e98608bd54a76c3e83",
+  "sha256": "1hf57p90jn1zzhjl63zv9ascbgkcbr0p0zmd3fvzpjsw84235dga",
+  "fetcher": "github",
+  "repo": "mickeynp/discover.el",
+  "unstable": {
+   "version": [
+    20140103,
+    2139
+   ],
+   "deps": [
+    "makey"
+   ],
+   "commit": "7b0044bbb3b3bd5d811fdfb0f5ac6ec8de1239df",
+   "sha256": "0f7h2rhh37lrs6xclj182li6s1fawv5m8w3hgy6qgm06dam45lka"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "makey"
+   ],
+   "commit": "bbfda2b4e429985a8fa7971d264c942767cfa816",
+   "sha256": "0qxw30zrlcxhxb0alrgyiclrk44dysal8xsbz2mvgrb6jli8wg18"
+  }
+ },
+ {
+  "ename": "discover-clj-refactor",
+  "commit": "3311371cadf00b00bfbece4e4b2f96c226f0e27d",
+  "sha256": "08bz60fxcgzab77690mmv0f7wdxcpygmasazcss427k37z9ysm7r",
+  "fetcher": "github",
+  "repo": "maio/discover-clj-refactor.el",
+  "unstable": {
+   "version": [
+    20150328,
+    1459
+   ],
+   "deps": [
+    "clj-refactor",
+    "discover"
+   ],
+   "commit": "3fbd5c1162739e606d7cf5d4f5d7426547d99647",
+   "sha256": "0l2g58f55p8zmzv2q2hf163ggm9p0wk8hg93wlkyldrgyb94dgf4"
+  }
+ },
+ {
+  "ename": "discover-js2-refactor",
+  "commit": "b84129a8a90f8f66a513c11c299e0acb5f3fbd3a",
+  "sha256": "139zq66cpcn4dnidf22h7x88p812ywrrz4c3c62w3915b75f71ki",
+  "fetcher": "github",
+  "repo": "NicolasPetton/discover-js2-refactor",
+  "unstable": {
+   "version": [
+    20140129,
+    1552
+   ],
+   "deps": [
+    "discover",
+    "js2-refactor"
+   ],
+   "commit": "3812abf61f39f3e73a9f3daefa6fed4f21a429ba",
+   "sha256": "1vnbn4asz3lifscvy4shzisl6r0gkgq0qsa3kpgif3853wcd2rvn"
+  }
+ },
+ {
+  "ename": "discover-my-major",
+  "commit": "f0a8eb0eefe88b4ea683a4743c0f8393506e014b",
+  "sha256": "1b10bwhls5bx83hzhqq1ylc2civ3bsivd6db46f3s5hpgvr4q17n",
+  "fetcher": "git",
+  "url": "https://framagit.org/steckerhalter/discover-my-major.git",
+  "unstable": {
+   "version": [
+    20180606,
+    511
+   ],
+   "deps": [
+    "makey"
+   ],
+   "commit": "c592e5e67454f0d1b68669ac0c270073164b16b3",
+   "sha256": "1lhjrknxw928vmw5h59q98sarh5pwjn0fpdyr38sql5zyv0ikc6w"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "makey"
+   ],
+   "commit": "57d76fd21ec54706289cf9396fc871250569951e",
+   "sha256": "1wlqyl03hhnflbyay3qlvdzqzvv5rbybcjpfddggda7ias9h0pr4"
+  }
+ },
+ {
+  "ename": "disk",
+  "commit": "e6e75695594ce17b618ad8786c8a04e283f68b11",
+  "sha256": "1jzkqgjw8xl0jc6ssl5bsdjp2dxw88nss6szvjv7frrhsncaq28h",
+  "fetcher": "github",
+  "repo": "kensanata/disk",
+  "unstable": {
+   "version": [
+    20171116,
+    731
+   ],
+   "commit": "283e54e3be7d08f959076240b2ab324e25632137",
+   "sha256": "15fkfl9kjlpsg9p5g0xhm384ipvrzclwxvqk8vz1zixq0wam2ajm"
+  }
+ },
+ {
+  "ename": "dispass",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "09c9v41rh63hjpdh377rbfvpial33r41dn5bss3632fi34az5l9n",
+  "fetcher": "github",
+  "repo": "ryuslash/dispass.el",
+  "unstable": {
+   "version": [
+    20140202,
+    1531
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "b6e8f89040ebaaf0e7609b04bc27a8979f0ae861",
+   "sha256": "075gj81rnhrvv061wnldixpfmlsyfbnvacnk107z6f9v3m2m3vl1"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    2
+   ],
+   "commit": "38b880e72cfe5e65179b16791903b0900c73eff4",
+   "sha256": "1b1a1bwc6nv6wkd8jg1cqmjb9m9pxi5i2wbrz97fgii23dwfmlnl"
+  }
+ },
+ {
+  "ename": "display-theme",
+  "commit": "4dd76f49f1c10656ea0004a654d73666e1d188db",
+  "sha256": "07nqscmfa6iykll1m6gyiqca1g5ncx3rx468iyf2ahygpvqvnbxa",
+  "fetcher": "github",
+  "repo": "kawabata/emacs-display-theme",
+  "unstable": {
+   "version": [
+    20140115,
+    1556
+   ],
+   "commit": "b180b3be7a74ae4799a14e7e4bc2fe10e3ff7a15",
+   "sha256": "0r560bpgw5p2pfcgkgcrlpp1bprv1f23dl4y5fjk06dg93fgaysa"
+  }
+ },
+ {
+  "ename": "dispwatch",
+  "commit": "580cee72ac9871f8f256069b371f7fb66367a048",
+  "sha256": "1cq5lbh3r9jjwixn2q30gryy4j4l8jb70nkhsjbaln1c3jdwrf9p",
+  "fetcher": "github",
+  "repo": "mnp/dispwatch",
+  "unstable": {
+   "version": [
+    20191130,
+    52
+   ],
+   "commit": "93aac853215d0902e7a30a6dd2b99d796da77df4",
+   "sha256": "186294rkmhwbh8x054w1hnqykp1iydxd490irl542j5alinv43qk"
+  }
+ },
+ {
+  "ename": "dist-file-mode",
+  "commit": "dd10fbed2810a642600dba9dfe320fa6299e6d34",
+  "sha256": "1gbnkb0537gw8flv4gdi4jzb7y9dnbf9cfj2jw8y84axyfzbb4mf",
+  "fetcher": "github",
+  "repo": "emacs-php/dist-file-mode.el",
+  "unstable": {
+   "version": [
+    20180830,
+    418
+   ],
+   "deps": [
+    "cl-lib",
+    "s"
+   ],
+   "commit": "e1ce8f592bc5d4d86d2f09e334728ac0d524c761",
+   "sha256": "09rp83d81y9mm81isrwvacl21vgah7nhi5r4j2xbp13kgdn7my1w"
+  }
+ },
+ {
+  "ename": "distel-completion-lib",
+  "commit": "90fff35dd9709b06802edef89d1fe6a96b7115a6",
+  "sha256": "0b06z3k30b4x5zpzk0jgcs7kcaix64xx81iskm1kys57r3gskzpa",
+  "fetcher": "github",
+  "repo": "sebastiw/distel-completion",
+  "unstable": {
+   "version": [
+    20180827,
+    1344
+   ],
+   "commit": "acc4c0a5521904203d797fe96b08e5fae4233c7e",
+   "sha256": "0yvp3dwa9mwfyrqla27ycwyjad4bp1267bxv0chxcr4528hnygl3"
+  }
+ },
+ {
+  "ename": "distinguished-theme",
+  "commit": "8d969e91bbba522a31d6ae7a81c7783034c15b9b",
+  "sha256": "0h03aqgijrmisbgqga42zlb5yz4x3jn9jgr29rq8canyhayr3rk4",
+  "fetcher": "github",
+  "repo": "Lokaltog/distinguished-theme",
+  "unstable": {
+   "version": [
+    20151216,
+    2015
+   ],
+   "commit": "9b1d25ac59465a5016d187ea84b7614c95a29b3b",
+   "sha256": "03d8zb2is7n2y2z0k6j37cijjc3ndgasxsm9gqyq7drlq9bqwzsm"
+  }
+ },
+ {
+  "ename": "ditz-mode",
+  "commit": "ac0d321e7486f297f783c07268563586aa0e3d92",
+  "sha256": "1k6rw2xmhlpcixwgfy6207h0jcqv09jfhi3dzj5n56s108z6hqr4",
+  "fetcher": "hg",
+  "url": "https://hg.sr.ht/~zondo/ditz-mode",
+  "unstable": {
+   "version": [
+    20150729,
+    940
+   ],
+   "commit": "74b6b93b097d595a001c019e3b762abfc60f821a",
+   "sha256": "194i43s99by2rrb112nh6rkwcd5rmmdj6kfc2bc1k6ygnvynnk67"
+  }
+ },
+ {
+  "ename": "dix",
+  "commit": "149eeba213b82aa0bcda1073aaf1aa02c2593f91",
+  "sha256": "0c5fmknpy6kwlz7nx0csbbia1maz0szj7yha1p7wq28s3a5426xq",
+  "fetcher": "github",
+  "repo": "unhammer/dix",
+  "unstable": {
+   "version": [
+    20200108,
+    1057
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "391832823f3f9835d957bc0224e122b376e5d825",
+   "sha256": "1h7wxi1nk6051arzx8671sf3m178ci9gs3a78h4hp8z0jrz364kz"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b973de948deb7aa2995b1895e1e62bbe3129b5a5",
+   "sha256": "1bjxyidcp7y309asbk4pfb4mzgb8j62fmp3w3zl2nahdgv1rja45"
+  }
+ },
+ {
+  "ename": "dix-evil",
+  "commit": "d9dcceb57231bf2082154cab394064a59d84d3a5",
+  "sha256": "1jscaksnl5qmpqgkjkv6sx56llz0w4p5h7j73c4a1hld94gwklh3",
+  "fetcher": "github",
+  "repo": "unhammer/dix",
+  "unstable": {
+   "version": [
+    20170105,
+    1423
+   ],
+   "deps": [
+    "dix",
+    "evil"
+   ],
+   "commit": "391832823f3f9835d957bc0224e122b376e5d825",
+   "sha256": "1h7wxi1nk6051arzx8671sf3m178ci9gs3a78h4hp8z0jrz364kz"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "deps": [
+    "dix",
+    "evil"
+   ],
+   "commit": "b973de948deb7aa2995b1895e1e62bbe3129b5a5",
+   "sha256": "1bjxyidcp7y309asbk4pfb4mzgb8j62fmp3w3zl2nahdgv1rja45"
+  }
+ },
+ {
+  "ename": "dizzee",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "14y10k8s65cyn86m1z77817436m89l0xpwd1wr4d7qp3x2mmn215",
+  "fetcher": "github",
+  "repo": "davidmiller/dizzee",
+  "unstable": {
+   "version": [
+    20171201,
+    916
+   ],
+   "commit": "e3cf1c2ea5d0fc00747524b6f3c5b905d0a8c8e1",
+   "sha256": "1i32msin8ra963w7af6612d038gxb25m1gj97kbjymjq1r8zbdrv"
+  }
+ },
+ {
+  "ename": "django-commands",
+  "commit": "fd217a23a9670c7eb826360b34df1a06ab3e450f",
+  "sha256": "17k9bnig2cfnxbbz6k9vdk5k5gzhvn1h5j9wvww7n137c9vv0qmk",
+  "fetcher": "github",
+  "repo": "muffinmad/emacs-django-commands",
+  "unstable": {
+   "version": [
+    20191107,
+    1830
+   ],
+   "commit": "bef7ca848d6d1721ebb22b181c50dcfbef16e434",
+   "sha256": "1zd98xkbxvikp4sf5nxf6vb2sk7a5s3q9ida0l5f4z4jc48xx5zm"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    3
+   ],
+   "commit": "bef7ca848d6d1721ebb22b181c50dcfbef16e434",
+   "sha256": "1zd98xkbxvikp4sf5nxf6vb2sk7a5s3q9ida0l5f4z4jc48xx5zm"
+  }
+ },
+ {
+  "ename": "django-manage",
+  "commit": "66f88d30a1ab9b7f9281a2b5939c7ab2711b966a",
+  "sha256": "0j95g7fps28xhlrikkg61xgpbpf52xb56swmns2qdib6x1xzd6rh",
+  "fetcher": "github",
+  "repo": "gopar/django-manage",
+  "unstable": {
+   "version": [
+    20160819,
+    212
+   ],
+   "deps": [
+    "hydra"
+   ],
+   "commit": "876fb2cb627d465adfdc905841279784bcdd7ee8",
+   "sha256": "0yi38aif1n0s9yp87wimdbnq7vr7k5gbshfprj9ansibrjxnb6xk"
+  }
+ },
+ {
+  "ename": "django-mode",
+  "commit": "bdc46811612ff96cb1e09552b9f095d68528dcb3",
+  "sha256": "1rdkzqvicjpfh9k66m31ky6jshx9fqw7pza7add36bk6xg8lbara",
+  "fetcher": "github",
+  "repo": "myfreeweb/django-mode",
+  "unstable": {
+   "version": [
+    20170522,
+    714
+   ],
+   "deps": [
+    "helm-make",
+    "projectile",
+    "s"
+   ],
+   "commit": "a71b8dd984e7f724b8321246e5c353a4ae5c986e",
+   "sha256": "0xf33ri5phy2mrb1dwvqb8waba33gj9bwmf6jhl6n0ksm43x0z40"
+  }
+ },
+ {
+  "ename": "django-snippets",
+  "commit": "bdc46811612ff96cb1e09552b9f095d68528dcb3",
+  "sha256": "1qs9fw104kidbr5zbxc1q71yy033nq3wxh98vvzk4z4fppnd29sw",
+  "fetcher": "github",
+  "repo": "myfreeweb/django-mode",
+  "unstable": {
+   "version": [
+    20131229,
+    1611
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "a71b8dd984e7f724b8321246e5c353a4ae5c986e",
+   "sha256": "0xf33ri5phy2mrb1dwvqb8waba33gj9bwmf6jhl6n0ksm43x0z40"
+  }
+ },
+ {
+  "ename": "django-theme",
+  "commit": "4ede3b4fb214b915a8230e7f220ffe71c73ad7c4",
+  "sha256": "1rydl857zfpbvd7aziz6h7n3rrh584z2cbfxlss3wgfclzmbyhgf",
+  "fetcher": "github",
+  "repo": "andrzejsliwa/django-theme.el",
+  "unstable": {
+   "version": [
+    20131022,
+    902
+   ],
+   "commit": "86c8142b3eb1addd94a43aa6f1d98dab06401af0",
+   "sha256": "1azf4p6salga7269l0kf13bqlxf9idp0ys8mm20qpyjpj79p5g9w"
+  }
+ },
+ {
+  "ename": "djangonaut",
+  "commit": "c756ccbae044bc23131060355532261aa9a12409",
+  "sha256": "1ys0s8hx8a8zykwynpan1h95v9fl87m7hlh8zhcg42kzd7b09px2",
+  "fetcher": "github",
+  "repo": "pythonic-emacs/djangonaut",
+  "unstable": {
+   "version": [
+    20200503,
+    921
+   ],
+   "deps": [
+    "f",
+    "magit-popup",
+    "pythonic",
+    "s"
+   ],
+   "commit": "75f642114e3997308a1e7e67c3025738cecee0fe",
+   "sha256": "1bka2nj2hqhpjiwdghp56y7z3jdxrpqw10s9divpa910mk33vay8"
+  }
+ },
+ {
+  "ename": "djinni-mode",
+  "commit": "e6e88f64e21275c6755f2589d1afa16eb4e575b8",
+  "sha256": "19222702dr7hfl7ffqp5z4sslg949p88rwvmg2al82i1a0wkgc98",
+  "fetcher": "github",
+  "repo": "danielmartin/djinni-mode",
+  "unstable": {
+   "version": [
+    20190303,
+    139
+   ],
+   "commit": "6f84bc60d078725cc8b922a259ec5f4c7de83681",
+   "sha256": "1x77f0a0gz9xfmlma6bdvm0x5rn4w08fkmdbjqvllqvca1630s12"
+  }
+ },
+ {
+  "ename": "dkdo",
+  "commit": "2d4f75f6f6349b81ddbaaf35fb5d7ddeb4cde622",
+  "sha256": "0p7ybgldjs046jrkkbpli1iicfmblpxfz9lql8m8sz7lpjn7h300",
+  "fetcher": "github",
+  "repo": "davidkeegan/dkdo",
+  "unstable": {
+   "version": [
+    20131110,
+    1119
+   ],
+   "deps": [
+    "dkmisc"
+   ],
+   "commit": "fd6bb105e8331fafb6385c5238c988c4c5bbe2da",
+   "sha256": "1nbvdnw9g3zbbb0n2sn2kxfzs5wichhl9qid3qjp8dsiq1wpv459"
+  }
+ },
+ {
+  "ename": "dkl",
+  "commit": "e8bd9cf21473f676aa54e142b6f0bf0427f40d29",
+  "sha256": "0bcv4ld8bfj2sk3sh4j1m9qqybw3l0a6b3d12qwy8lc3b8197lr0",
+  "fetcher": "github",
+  "repo": "flexibeast/dkl",
+  "unstable": {
+   "version": [
+    20161005,
+    7
+   ],
+   "commit": "6b4584f86037bda3383960c678d51f340229fb91",
+   "sha256": "1xpidgj5xk0g4ajpglhbhi02s5il8qqcvh2ccf4ac9daa1r34kxp"
+  }
+ },
+ {
+  "ename": "dklrt",
+  "commit": "71f980fdb2180df2429c898e1507dd3b989a5a2c",
+  "sha256": "11ss5x9sxgxp1wx2r1m0vsp5z5qm8m4ww20ybr6bqjw0a1gax561",
+  "fetcher": "github",
+  "repo": "davidkeegan/dklrt",
+  "unstable": {
+   "version": [
+    20131110,
+    1341
+   ],
+   "deps": [
+    "dkmisc",
+    "ledger-mode"
+   ],
+   "commit": "5d6c99f8018335256ab934b4c1049708ae2d48ba",
+   "sha256": "063nnln5m42qf190vr2z0ibacyn7n0xkxm3v5vaa4gxdvdwzhshs"
+  }
+ },
+ {
+  "ename": "dkmisc",
+  "commit": "71f980fdb2180df2429c898e1507dd3b989a5a2c",
+  "sha256": "0nnbl272hldcmhyj47r463yvj7b06rjdkpkl5xk0gw9ikyja7w0z",
+  "fetcher": "github",
+  "repo": "davidkeegan/dkmisc",
+  "unstable": {
+   "version": [
+    20131110,
+    1115
+   ],
+   "commit": "fe3d49c6f8322b6f89466361acd97585bdfe0608",
+   "sha256": "1nz71g8pb19aqjcb4s94hhn6j30cc04q05kmwvcbxpjb11qqrv49"
+  }
+ },
+ {
+  "ename": "dmenu",
+  "commit": "98bcdd71a160b9c04f83cc5b939031c9e7b5eb59",
+  "sha256": "1w1pgaj2yasfhsd1ibvrwy11ykq8v17h913g298h3ycsvqv8gic0",
+  "fetcher": "github",
+  "repo": "lujun9972/el-dmenu",
+  "unstable": {
+   "version": [
+    20190908,
+    44
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "e8cc9b27c79d3ecc252267c082ab8e9c82eab264",
+   "sha256": "098ncygms1r33zhjlq4fj2p4jc91v5whqrm3fazzdk7sd6dilf25"
+  }
+ },
+ {
+  "ename": "dna-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "06vprwv1v4jzqzi2nj9hbhnypnvqxmixls8yf91hzwlk3fdkdywf",
+  "fetcher": "github",
+  "repo": "jhgorrell/dna-mode-el",
+  "unstable": {
+   "version": [
+    20191001,
+    2108
+   ],
+   "commit": "7a48393fcf0015eed2368fcb89b3091c9d029dc4",
+   "sha256": "05p1mllp7vgk69078gn6hc0vx5hfqz6k81i4ghkfkxr5fdm5fdk5"
+  }
+ },
+ {
+  "ename": "docbook-snippets",
+  "commit": "07b832b72773ab41f9cbdefabd30dc1aa29d04c5",
+  "sha256": "1ipqfylgiw9iyjc1nckbay890clfkhda81nr00cq06sjmm71iniq",
+  "fetcher": "github",
+  "repo": "jhradilek/emacs-docbook-snippets",
+  "unstable": {
+   "version": [
+    20150714,
+    1625
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "b06297fdec039a541aaa6312cb328a11062cfab4",
+   "sha256": "1nbm3wzd12rsrhnwlcc6b72b1ala328mfpcp5bwlfcdshw6mfcrq"
+  }
+ },
+ {
+  "ename": "docean",
+  "commit": "d4827fa337d7d25f2aaf67aca3081fbdaeacbcbf",
+  "sha256": "1mqmn2i9axnv5vnkg9gwfdjpzr6gxx4ia9mcdpm200ix297dg7x9",
+  "fetcher": "github",
+  "repo": "emacs-pe/docean.el",
+  "unstable": {
+   "version": [
+    20180605,
+    1744
+   ],
+   "deps": [
+    "cl-lib",
+    "request"
+   ],
+   "commit": "bbe2298fd21f7876fc2d5c52a69b931ff59df979",
+   "sha256": "1fzs6k76nyz2xjvydks6v6d2ib7qqj181s7c8r57w9ylr2zqfacj"
+  }
+ },
+ {
+  "ename": "docker",
+  "commit": "6c74bf8a41c17bc733636f9e7c05f3858d17936b",
+  "sha256": "10x05vli7lg1w3fdbkrl34y4mwbhp2c7nqdwnbdy53i81jisw2lk",
+  "fetcher": "github",
+  "repo": "Silex/docker.el",
+  "unstable": {
+   "version": [
+    20200508,
+    1956
+   ],
+   "deps": [
+    "dash",
+    "docker-tramp",
+    "json-mode",
+    "s",
+    "tablist",
+    "transient"
+   ],
+   "commit": "01a04d0a295f3396833d0b6fa60cf24d52e1a89f",
+   "sha256": "0gh0h64dwn8v67q5569gifdjhzz5g4hfnsiqmg1nyq0nhvpp2b1c"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    0
+   ],
+   "deps": [
+    "dash",
+    "docker-tramp",
+    "json-mode",
+    "magit-popup",
+    "s",
+    "tablist"
+   ],
+   "commit": "e127a157f8d0d9ffd465075ecf6558f36d2d3b24",
+   "sha256": "1g8r1faqp0z0vqp9qrl8m84pa0v2ddvc91klphdkfmldwv7rfipw"
+  }
+ },
+ {
+  "ename": "docker-api",
+  "commit": "3924914124370fc028a7b1ecdc154a53e73037a7",
+  "sha256": "1giqiapm4hf4dhfm3x69qqpir3jg7qz3parhbx88xxqrd1z18my0",
+  "fetcher": "github",
+  "repo": "Silex/docker-api.el",
+  "unstable": {
+   "version": [
+    20160525,
+    720
+   ],
+   "deps": [
+    "dash",
+    "request",
+    "s"
+   ],
+   "commit": "206144346b7fa4165223349cfeb64a75d47ddd1b",
+   "sha256": "0phmpranrgdi2gi89nxr1ii9xbr7h2ccpx1mkpnfxnjlzkdzq2fb"
+  }
+ },
+ {
+  "ename": "docker-cli",
+  "commit": "5664de22600c428b7931085985e6fe779e8876b2",
+  "sha256": "1pyrnxa9iwzp0a810250xy191xcbaq68c76fc5plh70c37gzribp",
+  "fetcher": "github",
+  "repo": "bosko/docker-cli",
+  "unstable": {
+   "version": [
+    20190524,
+    1624
+   ],
+   "commit": "c4b02894466d8642ad3d49df4c4a80e023a672aa",
+   "sha256": "0q1c943m0ncxbwi5mb1vf7lavkcz0dbx14m3i8a981pqkaksl1lw"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "328429219574555c5fb831a421b4b5d9a2338561",
+   "sha256": "15jsp1jsb13qv394js9pd6407ya7dgqk7blzbnyf9i9abyyr0v67"
+  }
+ },
+ {
+  "ename": "docker-compose-mode",
+  "commit": "37dd4c1fc11d22598c6faf03ccc860503a68b950",
+  "sha256": "1hldddl86h0i1ysxklkr1kyz44lzic1zr68x3vb0mha4n5d6bl5g",
+  "fetcher": "github",
+  "repo": "meqif/docker-compose-mode",
+  "unstable": {
+   "version": [
+    20180324,
+    1752
+   ],
+   "deps": [
+    "dash",
+    "yaml-mode"
+   ],
+   "commit": "c9f131d2c90d652435d407fd36c40feebfed1dad",
+   "sha256": "0d5d46i6hplmy7q2ihbvcrnk9jrwa2mswgbf8yca3m4k44wgk6la"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "dash",
+    "yaml-mode"
+   ],
+   "commit": "7f4cd0b1718df2ab93d51bd395b2f37df9482265",
+   "sha256": "1fbcxwfvm33xcdj3cs26d9i1zyrryyjjkv7sc3mfxd45nq8d3ivj"
+  }
+ },
+ {
+  "ename": "docker-tramp",
+  "commit": "6c74bf8a41c17bc733636f9e7c05f3858d17936b",
+  "sha256": "19kky80qm68n2izpjfyiy4gjywav7ljcmp101kmziklpqdldgh1w",
+  "fetcher": "github",
+  "repo": "emacs-pe/docker-tramp.el",
+  "unstable": {
+   "version": [
+    20170207,
+    325
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "8e2b671eff7a81af43b76d9dfcf94ddaa8333a23",
+   "sha256": "1lgjvrss25d4hwgygr1amsbkh1l4kgpsdjpxxpyfgil1542haan1"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d8b510365d8e65551f4f792f251e7212411708c3",
+   "sha256": "0lxvzmfg52fhxrhbvp92zwp7cv4i1rlxnkyyzgngj3sjm7y60yvg"
+  }
+ },
+ {
+  "ename": "dockerfile-mode",
+  "commit": "1406f5a24115d29e3b140c360a51b977a369e4f9",
+  "sha256": "1dxvzn35a9qd3x8pjvrvb2g71yf84404g6vz81y0p353rf2zknpa",
+  "fetcher": "github",
+  "repo": "spotify/dockerfile-mode",
+  "unstable": {
+   "version": [
+    20200106,
+    2126
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "d31f7685ebc5832d957e25070a930aa42984327d",
+   "sha256": "1br73dsls42fn4rwagljkpa3l4wwj6f7jxfn3gmgl6c54z81av3v"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "commit": "9a75fcd119c5b2a1d723d440bbe4b1db56df90cc",
+   "sha256": "1cmh8pwwa6dhl4w66wy8s5yqxs326mnaalg1ig2yhl4bjk8gi4m2"
+  }
+ },
+ {
+  "ename": "doct",
+  "commit": "f075d73b3269eec73dda992ce2bee67ccdfe4911",
+  "sha256": "0z4h2pmlmzaz2726pmd2y7g63k5ncw4fwd5jh5rv744f5pxxfs2m",
+  "fetcher": "github",
+  "repo": "progfolio/doct",
+  "unstable": {
+   "version": [
+    20200514,
+    2215
+   ],
+   "commit": "1bcec209e12200c9b93b0d95f61b964b5de4439c",
+   "sha256": "03lbsww77vq1wrpj94jdx62zmjjhir9i50g85l8yadlp9696zh3s"
+  }
+ },
+ {
+  "ename": "dokuwiki",
+  "commit": "e608f40d00a3b2a80a6997da00e7d04f76d8ef0d",
+  "sha256": "0d92il37z1m1hgcgb6c6zaifllznzk1na4yv4bfsfqg25l0mid75",
+  "fetcher": "github",
+  "repo": "accidentalrebel/emacs-dokuwiki",
+  "unstable": {
+   "version": [
+    20180102,
+    59
+   ],
+   "deps": [
+    "xml-rpc"
+   ],
+   "commit": "594c4d4904dcc2796bbbd2c0845d9e7c09ccf6f7",
+   "sha256": "0vqx8npw0i02dhw2yb7s4z7njw60r3xyncw4z8l6fj99pp6pfh15"
+  }
+ },
+ {
+  "ename": "dokuwiki-mode",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "1jc3sn61mipkhgr91wp74s673jk2w5991p54jlw05qqpf5gmxd7v",
+  "fetcher": "github",
+  "repo": "kai2nenobu/emacs-dokuwiki-mode",
+  "unstable": {
+   "version": [
+    20170223,
+    1301
+   ],
+   "commit": "e4e116f6fcc373e3f5937c1a7daa5c2c9c6d3fa1",
+   "sha256": "0bmcm7lvzm8sg2l1j7bg02jasxb8g81q9ilycblmsl1ckbfwq0yp"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "e4e116f6fcc373e3f5937c1a7daa5c2c9c6d3fa1",
+   "sha256": "0bmcm7lvzm8sg2l1j7bg02jasxb8g81q9ilycblmsl1ckbfwq0yp"
+  }
+ },
+ {
+  "ename": "dollaro",
+  "commit": "b8195000cffa1913060266b17801eb7c1e472a83",
+  "sha256": "06kaqzb0nh8sndhk7p5n4acn5nc27dyxw3ldgcbp81wj6ipii26h",
+  "fetcher": "github",
+  "repo": "laynor/dollaro",
+  "unstable": {
+   "version": [
+    20151123,
+    1302
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "500127f0172ac7a1eec627e026b59136580a74ac",
+   "sha256": "1xyqsnymgdd8ic3az2lgwv7s7vld6d4pcycb234bxm4in9fixgdj"
+  }
+ },
+ {
+  "ename": "doneburn-theme",
+  "commit": "7fc483d5f487f462567bba22d611f90fc8a1a709",
+  "sha256": "0j8fyb6wcjrfhfjp06w0bzp5vrcvydhjwkzg4c4s4j54xaw6laxx",
+  "fetcher": "github",
+  "repo": "manuel-uberti/doneburn-theme",
+  "unstable": {
+   "version": [
+    20181110,
+    1857
+   ],
+   "commit": "da4fa915a2a659001eea04498d790cdd8cac1fce",
+   "sha256": "1xlh20vc43ywljjw13cp0aj4h9qackhqqzm0yi5g881lcyng2ca1"
+  }
+ },
+ {
+  "ename": "doom",
+  "commit": "0960deb3b1d106ad2ffa95a44f34cb9efc026f01",
+  "sha256": "1ji2fdiw5b13n76nv2wvkz6v155b0qgh1rxwmv3m5nnrbmklfjh5",
+  "fetcher": "github",
+  "repo": "kensanata/doom",
+  "unstable": {
+   "version": [
+    20180301,
+    2308
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "e59040aefc92dd9b3134eb623624307fb9e4327b",
+   "sha256": "14lwq30m0s7pkwkbn6vm5gdlkww7sszc6pdhxyinkhj67b0bxpin"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "5e2d3f54e5b84eaa533cbdb6cf17b1b6009f0730",
+   "sha256": "04h1hlsc83w4dppw9m44jq7mkcpy0bblvnzrhvsh06pibjywdd73"
+  }
+ },
+ {
+  "ename": "doom-modeline",
+  "commit": "f4f610757f85fb01bd9b1dd212ddbea8f34f3ecd",
+  "sha256": "0pscrhhgk4wpz1f2r94ficgan4f9blbhqzvav1wjahwp7fn5m29j",
+  "fetcher": "github",
+  "repo": "seagle0128/doom-modeline",
+  "unstable": {
+   "version": [
+    20200513,
+    1103
+   ],
+   "deps": [
+    "all-the-icons",
+    "dash",
+    "shrink-path"
+   ],
+   "commit": "2b308857677e983ca4eaedc36438ed94aadf9e65",
+   "sha256": "1c7mk26drz9yldy3kvcxxnabg8ph900pj1g029xhd1407x417vqc"
+  },
+  "stable": {
+   "version": [
+    3,
+    0,
+    0
+   ],
+   "deps": [
+    "all-the-icons",
+    "dash",
+    "shrink-path"
+   ],
+   "commit": "b44955841a301f4930b054e912fa4c1a700d426d",
+   "sha256": "08m75rl5i812pa87zcsjvb4mm3jjhpwzgx9mf2m7sxj807airz5d"
+  }
+ },
+ {
+  "ename": "doom-themes",
+  "commit": "c5084bc2c3fe378af6ff39d65e40649c6359b7b5",
+  "sha256": "0plqhis9ki3ck1pbv4hiqk4x428fps8qsfx72mamdayyx2nncdrs",
+  "fetcher": "github",
+  "repo": "hlissner/emacs-doom-themes",
+  "unstable": {
+   "version": [
+    20200514,
+    2115
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "95463eac68fe88535d9342c7b4c2cbaae3c80950",
+   "sha256": "0ccq6gzahpsxsgmmd9dl16mfnz1n9sgn0ns62n03s3xgmf4ay3ap"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    6
+   ],
+   "deps": [
+    "all-the-icons",
+    "cl-lib"
+   ],
+   "commit": "39e6971e81181b86a57f65cd0ea31376203a9756",
+   "sha256": "042pzcdhxi2z07jcscgjbaki9nrrm0cbgbbrnymd1r4q8ckkn8l9"
+  }
+ },
+ {
+  "ename": "dot-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "039ylmbvw0wb3i2w4qn3dhckz7y3swbid4hwjcxljy4szc709p6k",
+  "fetcher": "github",
+  "repo": "wyrickre/dot-mode",
+  "unstable": {
+   "version": [
+    20180312,
+    2300
+   ],
+   "commit": "6ca22b73bcdae2363ee9641b822a60685df16a3e",
+   "sha256": "10lmwra48ihxqxyl54m3yn1zy0q5w6cxqd2n5pbs4lva1yck0z4w"
+  }
+ },
+ {
+  "ename": "dotenv-mode",
+  "commit": "9fc022c54b90933e70dcedb6a85167c2d9d7ba79",
+  "sha256": "1lwfzfri6vywcjkc9wassrz0rdrg0kvljxsm6b4smlnphp6pdbbs",
+  "fetcher": "github",
+  "repo": "preetpalS/emacs-dotenv-mode",
+  "unstable": {
+   "version": [
+    20191027,
+    2129
+   ],
+   "commit": "e3701bf739bde44f6484eb7753deadaf691b73fb",
+   "sha256": "0ys1czramj3c8zbnxxc599bqc0nqp3nnn3n45ac9cjglx5iaydq3"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    5
+   ],
+   "commit": "e3701bf739bde44f6484eb7753deadaf691b73fb",
+   "sha256": "0ys1czramj3c8zbnxxc599bqc0nqp3nnn3n45ac9cjglx5iaydq3"
+  }
+ },
+ {
+  "ename": "dotnet",
+  "commit": "6ef473594ec57a747ad7d9d57d7287bcacf4b446",
+  "sha256": "06k1ikwg9bis9kk4r41bm0a0d8a31wscqyr6n99d7836p1h4jfki",
+  "fetcher": "github",
+  "repo": "julienXX/dotnet.el",
+  "unstable": {
+   "version": [
+    20190415,
+    1237
+   ],
+   "commit": "932d776ed739d20d57dbd6ba49f61d1b450571fc",
+   "sha256": "1h7y9vz64bv4slz9mpd7cjyyaxgqk92jn11y5ycfyncq70wyd3j4"
+  }
+ },
+ {
+  "ename": "double-saber",
+  "commit": "19f5c0195ad9b278a7aaa3fd8e70c0004cc03500",
+  "sha256": "0zsmyvlxm3my3xbj7m38539vk2dl7azi1v7jb41kdiavj2cc55zg",
+  "fetcher": "github",
+  "repo": "dp12/double-saber",
+  "unstable": {
+   "version": [
+    20190325,
+    1917
+   ],
+   "commit": "b61df3561ea9bed1848cf69b6bb53f7fdf6916dc",
+   "sha256": "063jw3b94l43j31piygjcjzqp2gf828xr3da1hd3qimp25c9fsv6"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "commit": "5555dc28cbaa228fa8f9390738a4200e071380b8",
+   "sha256": "06ykn84hp4yvf6z2457jqgyck70y30361l8617ilb7g337hk15xl"
+  }
+ },
+ {
+  "ename": "download-region",
+  "commit": "7801d9fac121f213609a802fe9d88bdc5364d1f3",
+  "sha256": "1mrl2x6j708nchyh9y5avbf2cq10kpnhfj553l6akarvl5n5pvkl",
+  "fetcher": "github",
+  "repo": "zk-phi/download-region",
+  "unstable": {
+   "version": [
+    20180124,
+    133
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "bbba3ecd80818d5d940d41fe89a6e2ec5dd2c53c",
+   "sha256": "1cwlbdmdils5rzhjpc3fqjmd3dhalk6i7bxskpahbrr9xxfq0iw4"
+  }
+ },
+ {
+  "ename": "downplay-mode",
+  "commit": "50d67ea3c4d92b4093373d5e4ff07b7d5a3dc537",
+  "sha256": "1v6nga101ljzza8qj3lkmkzzl0vvzj4lsh1m69698s8prnczxr9b",
+  "fetcher": "github",
+  "repo": "tobias/downplay-mode",
+  "unstable": {
+   "version": [
+    20151125,
+    2009
+   ],
+   "commit": "4a2c3addc73c8ca3816345c3c11c08af265baedb",
+   "sha256": "0s7swvfd7h8r0n3cjmkps6ary9vwg61jylfm4qrkp3idsz6is548"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "225a4b3ca09e6f463dfdd54941c98b02be8d574c",
+   "sha256": "13czcxmmvy4g9ysfjr6lb91c0fqv1xv8ppd27wbfsrgxm3aaqimb"
+  }
+ },
+ {
+  "ename": "dpaste",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0wrfy9w0yf5m15vmhg4l880v92cy557g332xniqs77ab0sga4vgc",
+  "fetcher": "github",
+  "repo": "gregnewman/dpaste.el",
+  "unstable": {
+   "version": [
+    20160303,
+    2112
+   ],
+   "commit": "5ebabb466a6ae70882549855b6b2194fc32189f8",
+   "sha256": "03n3k6a40lw9m1ycf62g6vll4gr2kr2509vjp1dkfq722xwrw7zk"
+  }
+ },
+ {
+  "ename": "dpaste_de",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0022dd8l7jsyl0lv9x6iz882ln71js8brqcbiqz001zv45yrgvy0",
+  "fetcher": "github",
+  "repo": "theju/dpaste_de.el",
+  "unstable": {
+   "version": [
+    20131015,
+    1225
+   ],
+   "deps": [
+    "web"
+   ],
+   "commit": "f0c39e8864299f735642f7d9fa490689398ce39d",
+   "sha256": "1avpg0cgzk8d6g1q0ryx41lkcdgkm0mkzr5xr32xm28dzrfmgd4z"
+  }
+ },
+ {
+  "ename": "dpkg-dev-el",
+  "commit": "3e057df3608780a6191f761b9a81262c2eaa053c",
+  "sha256": "1cgfzxlw4m3wsl5fhck08pc2w7fw91mxk58yaprk9lkw4jxd1yjy",
+  "fetcher": "git",
+  "url": "https://salsa.debian.org/emacsen-team/dpkg-dev-el.git",
+  "unstable": {
+   "version": [
+    20190824,
+    2314
+   ],
+   "deps": [
+    "debian-el"
+   ],
+   "commit": "aafb047e03c642e6ae4740a7fbc0a789e0ec1291",
+   "sha256": "1sfan4pil51jrc0b6fxf5vjyrif0dx1xmx92yhgwap684kpsarv4"
+  },
+  "stable": {
+   "version": [
+    37,
+    1
+   ],
+   "deps": [
+    "debian-el"
+   ],
+   "commit": "54b137309b078ec39f4b982368c500df04d4bd5f",
+   "sha256": "03yawrzds5jc5ckck3w7l9rszv4vcibydi15hqnxwfcszyp8wrdn"
+  }
+ },
+ {
+  "ename": "dr-racket-like-unicode",
+  "commit": "6e612ede00c4b44ace741d2b6baabc61571af15c",
+  "sha256": "0cqcbn4hmv99d8z03xc0rqw4yh5by6g09y33h75dhl9nh95rybgf",
+  "fetcher": "github",
+  "repo": "david-christiansen/dr-racket-like-unicode",
+  "unstable": {
+   "version": [
+    20200513,
+    1642
+   ],
+   "commit": "70bc1caea6b277e49e1cb29e1926a7b0c83c5ebc",
+   "sha256": "1an4hk9cjg1lhis0japdr371mnf1p4pl5mzl0l1cfkvprbxhzy65"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "4953f1c8a68472e157a0dcd0a7e35a4ec2577133",
+   "sha256": "1i7k7d2gnzd2izplhdmjbkcxvkwnc3y3y0hrcp2rq60bjpkcl1gv"
+  }
+ },
+ {
+  "ename": "dracula-theme",
+  "commit": "d63cb8906726f106e65f7d9895b49a38ffebf8d5",
+  "sha256": "1px162v7h7136rasafq875yzw0h8n6wvzbyh73c3w093kd30bmh8",
+  "fetcher": "github",
+  "repo": "dracula/emacs",
+  "unstable": {
+   "version": [
+    20200514,
+    1527
+   ],
+   "commit": "c162aff5025a7e9f55785d7177d59f4a3aa60183",
+   "sha256": "11wlrvrz3q054nqkdbd4525kh50cspszrgmqd74plah6jc95wpa3"
+  },
+  "stable": {
+   "version": [
+    1,
+    7,
+    0
+   ],
+   "commit": "7751d4d3115c5e873b73b670248c49ce8910997e",
+   "sha256": "15y2djc5jljlvls1x9kp50m1kp0dcksmyixafsyimj66xpq9ngh0"
+  }
+ },
+ {
+  "ename": "draft-mode",
+  "commit": "cbfefacda071c0f5ee698a4c345a2d6fea6a0d24",
+  "sha256": "19lq1a3rj6fck3xq2vcz8fk30hpx25kyfz6c7hmq36kx4lv0mjpa",
+  "fetcher": "gitlab",
+  "repo": "gaudecker/draft-mode",
+  "unstable": {
+   "version": [
+    20140609,
+    1456
+   ],
+   "commit": "4779fb32daf53746459da2def7e08004492d4f18",
+   "sha256": "0z3w58zplm5ks195zfsaq8kwbc944p3kbzs702jgz02wcrm4c28y"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "4779fb32daf53746459da2def7e08004492d4f18",
+   "sha256": "0z3w58zplm5ks195zfsaq8kwbc944p3kbzs702jgz02wcrm4c28y"
+  }
+ },
+ {
+  "ename": "drag-stuff",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "1q67q20gfhixzkmddhzp6fd8z2qfpsmyyvymmaffjcscnjaz21w4",
+  "fetcher": "github",
+  "repo": "rejeep/drag-stuff.el",
+  "unstable": {
+   "version": [
+    20161108,
+    749
+   ],
+   "commit": "6d06d846cd37c052d79acd0f372c13006aa7e7c8",
+   "sha256": "1fsj88n1j50cxjzx62khzxrajsvf33si8iwgbaz6z7z8pwh91qcd"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "commit": "d49fe376d24f0f8ac5ade67b6d7fccc2487c81db",
+   "sha256": "1jrr59iazih3imkl9ja1lbni9v3xv6b8gmqs015g2mxhlql35jka"
+  }
+ },
+ {
+  "ename": "drawille",
+  "commit": "e45ddc0c886fd2bd89ef24c99110c9faf0a05776",
+  "sha256": "1rsnp3zfp4y6bjdwr2adys91gc4jph3cgwkbj9r1d07xvh5fpfwm",
+  "fetcher": "github",
+  "repo": "emacsattic/drawille",
+  "unstable": {
+   "version": [
+    20160418,
+    1838
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d914845725719d8293e2f0dea3c9c7e0a1e0e62a",
+   "sha256": "1ynjxfvx8b6rq6d4gm1sl96rmlk5pi8j5s1rd1y0p8x2lwqcfv77"
+  }
+ },
+ {
+  "ename": "drill-instructor-AZIK-force",
+  "commit": "fb5ee8a113b98e8df8368c5e17c6d762decf8f5b",
+  "sha256": "1bb698r11m58csd2rm17fmiw691p25npphzqgjiiqbn4vx35ja7f",
+  "fetcher": "github",
+  "repo": "myuhe/drill-instructor-AZIK-force.el",
+  "unstable": {
+   "version": [
+    20151123,
+    514
+   ],
+   "deps": [
+    "popup"
+   ],
+   "commit": "008cea202dc31d7d6fb1e7d8e6334d516403b7a5",
+   "sha256": "0lzq0mkhhj3s5yrcbs576qxkd8h0m2ikc4iplk97ddpzh4nz4127"
+  }
+ },
+ {
+  "ename": "drone",
+  "commit": "3b62e697798627b07000ac72c19ecd1d89c22229",
+  "sha256": "0wjbmgic715i4nxk90nasfamk04lskl8dll9y5klk32w1lsj546q",
+  "fetcher": "github",
+  "repo": "olymk2/emacs-drone",
+  "unstable": {
+   "version": [
+    20161106,
+    918
+   ],
+   "commit": "1d4ee037ad3208847a4235426edf0c4a3e7b1899",
+   "sha256": "1dwxgzf32cvfi7b6zw3qzamj82zs2c0ap6i1w0jqqgzmkz20dqvf"
+  }
+ },
+ {
+  "ename": "dropbox",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1dqjsn7wkjjvbwq3kgdd7bvwrirappwnhcwkj2ai19dpx6jd8wym",
+  "fetcher": "github",
+  "repo": "pavpanchekha/dropbox.el",
+  "unstable": {
+   "version": [
+    20190918,
+    1629
+   ],
+   "deps": [
+    "json",
+    "oauth",
+    "request"
+   ],
+   "commit": "5e0c954a6b819fd3a22b463cce3825984f9ef691",
+   "sha256": "0z1iw5rzdgipqhx4bvshjbrqqr3wyqy75frwmz34g7s6vll1ip0a"
+  }
+ },
+ {
+  "ename": "drupal-mode",
+  "commit": "13e16af340868048eb1f51f9865dfc707e57abe8",
+  "sha256": "14jvk4phq3wcff3yvhygix0c9cpbphh0dvm961i93jpsx7g9awgn",
+  "fetcher": "github",
+  "repo": "arnested/drupal-mode",
+  "unstable": {
+   "version": [
+    20200210,
+    2222
+   ],
+   "deps": [
+    "php-mode"
+   ],
+   "commit": "ee1a24c96a7487bb9df8dd15656be7d8330028f0",
+   "sha256": "1h0p1z0s02vn7b4p2kj6jr49y245wjf5grcv0n5riqds2s863q2v"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    3
+   ],
+   "deps": [
+    "php-mode"
+   ],
+   "commit": "49ce63c659aa0af7a2daf0c9e74e58fbce6deb71",
+   "sha256": "1l2xc24y037b3z62yxmq2bx1x3qqv56d15bf3qmb3mpgm4gh85j6"
+  }
+ },
+ {
+  "ename": "drupal-spell",
+  "commit": "bb859d9755bde3fd852bc7d08f2fab2429ba31b3",
+  "sha256": "117rr2bfnc99g3qsr127grxwaqp54cxjaj3nl2nr6z78nja0fij3",
+  "fetcher": "github",
+  "repo": "arnested/drupal-spell",
+  "unstable": {
+   "version": [
+    20130520,
+    1655
+   ],
+   "commit": "4087c28c89a884ee050961c57166e6b09085f59d",
+   "sha256": "1hjs8jbbflj56dm87mkzray75dlczy6p58lpkr8lvh7wnim4pd6a"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "commit": "a69f5e3b62c4c0da74ce26c1d00d5b8f7395e4ae",
+   "sha256": "156cscpavrp695lp8pgjg5jnq3b8n9c2h8qg8w89dd4vfkc3iikd"
+  }
+ },
+ {
+  "ename": "dsvn",
+  "commit": "be27e728327016b819535ef8cae10020e5a07c2e",
+  "sha256": "189navhhakmkhfc2afsls1jiaxg62wxvpmmn00jlnwlgjm97gdk3",
+  "fetcher": "github",
+  "repo": "emacsmirror/dsvn",
+  "unstable": {
+   "version": [
+    20190316,
+    2201
+   ],
+   "commit": "c37d2412ba92aad647bcf5aeb151e620e8069f8d",
+   "sha256": "1bv4ivv9j5r0ax4vay1kmwv753y44qj6qprr38yh7ky0fpsml34c"
+  }
+ },
+ {
+  "ename": "dtk",
+  "commit": "39333468fb6e9493deb86511f0032610a412ec8a",
+  "sha256": "005x3j5q8dhphhh4c48l6qx7qi3jz9k02m86ww1bzwfzji55p9sp",
+  "fetcher": "github",
+  "repo": "dtk01/dtk",
+  "unstable": {
+   "version": [
+    20200315,
+    1931
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "s",
+    "seq"
+   ],
+   "commit": "d21a5b7958da058bb53d36fe9234089409f62c5e",
+   "sha256": "0w46yr5d108z2pipvh449p15qnm6mnix21pbnq3alczilzxzf9lw"
+  }
+ },
+ {
+  "ename": "dtrace-script-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "00ar2qahgqpf4an6v9lbzgj73ylbavvigsm8kqdq94ghm4awxi4z",
+  "fetcher": "github",
+  "repo": "dotemacs/dtrace-script-mode",
+  "unstable": {
+   "version": [
+    20150214,
+    623
+   ],
+   "commit": "801af1ef16075d31a19830ebb8404bbf3a322f10",
+   "sha256": "1blfx3r2xd3idbfjrx44ma3x1d83xp67il2s2bmdwa8qz92z99lf"
+  }
+ },
+ {
+  "ename": "dtrt-indent",
+  "commit": "61bcbcfa6c0f38a1d87f5b6913b8be6c50ef2994",
+  "sha256": "1npn2jngy1wq0jpwmg1hkn8lx6ncbqsi587jl38lyp2xwchshfk5",
+  "fetcher": "github",
+  "repo": "jscheid/dtrt-indent",
+  "unstable": {
+   "version": [
+    20200430,
+    1023
+   ],
+   "commit": "50c440c80e0d15303d8ab543bce4c56e9c2bf407",
+   "sha256": "0p5v5xwr0s59hv3s0f85byafphc85qv76g41crad9fhnxzab9rly"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "commit": "50c440c80e0d15303d8ab543bce4c56e9c2bf407",
+   "sha256": "0p5v5xwr0s59hv3s0f85byafphc85qv76g41crad9fhnxzab9rly"
+  }
+ },
+ {
+  "ename": "dts-mode",
+  "commit": "864a7ec64c46a0357710bc80ad4880dd35b2fda1",
+  "sha256": "1k8cbiayajbzwkm0s0kyin0qpq9yhymidz0srs4hbvsnb6hvp234",
+  "fetcher": "github",
+  "repo": "bgamari/dts-mode",
+  "unstable": {
+   "version": [
+    20161103,
+    1223
+   ],
+   "commit": "9ee0854446dcc6c53d2b8d2941051768dba50344",
+   "sha256": "1k8lljdbc90nd29xrhdrsscxavzdq532wq2mg7ljc94krj7538b1"
+  }
+ },
+ {
+  "ename": "ducpel",
+  "commit": "2d64adac965e1dac0f29dab9a587cd6ce9c3bb3a",
+  "sha256": "1cqrkgg7n9bhjswnpl7yc6w6yjs4gfbliaqsimmf9z43wk2ml4pc",
+  "fetcher": "github",
+  "repo": "alezost/ducpel",
+  "unstable": {
+   "version": [
+    20140702,
+    1154
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b53b935ab95c02b82ccf38f63c89e39e99477a55",
+   "sha256": "07cgwkfi69xjjxx9hs5rdblsil1h3bpbx9k7hwyv1dg3ivihm04s"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "ece785baaa102bd2e9d54257af3a92bacc5757bc",
+   "sha256": "17yldk76mxakhb90bma7r4z9jgx02wankgk17r2di196mc04bj7b"
+  }
+ },
+ {
+  "ename": "dumb-diff",
+  "commit": "cf7fa0b4235247d82569ed078f92774f10afa45c",
+  "sha256": "1h1dvxbj85kgi04lxh0bpx81f6sl1fd56lhjmq1cw9biwqw0sm0c",
+  "fetcher": "github",
+  "repo": "jacktasia/dumb-diff",
+  "unstable": {
+   "version": [
+    20171211,
+    2122
+   ],
+   "commit": "1a2331d283049b71a07c1b06b1e0627a950d55f4",
+   "sha256": "05gmpp4s9y2ql27vb5vpqn3xh35qjfxgq9gzyvg86df43qfl8wvl"
+  }
+ },
+ {
+  "ename": "dumb-jump",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1j90n8gydsp2v07rysz1k5vf6hspybcl27214sib1iz3hbimid1w",
+  "fetcher": "github",
+  "repo": "jacktasia/dumb-jump",
+  "unstable": {
+   "version": [
+    20200513,
+    2014
+   ],
+   "deps": [
+    "dash",
+    "popup",
+    "s"
+   ],
+   "commit": "194bfdbe305e21d8e6d29893d449686c85273207",
+   "sha256": "0lz5kajhkqh18xyg07bshvl0v5j5g5xj4q8p6min1mapm8shnv2i"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    3
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "popup",
+    "s"
+   ],
+   "commit": "0319569f1332641057c3e23d1e3bffb2404435a8",
+   "sha256": "1njf60264snhxrd36m4z687lqfkis0p9mmrr7cf1c8l0lfdvawxi"
+  }
+ },
+ {
+  "ename": "dummyparens",
+  "commit": "e1f6199a9afece4d6eb581dc8e513601d55a5833",
+  "sha256": "1yah8kpqkk9ygm73iy51fzwc8q5nw0xlwqir2qld1fc5y1lkb7dk",
+  "fetcher": "github",
+  "repo": "snosov1/dummyparens",
+  "unstable": {
+   "version": [
+    20141009,
+    1024
+   ],
+   "commit": "9798ef1d0eaa24e4fe66f8aa6022a8c62714cc89",
+   "sha256": "0g72nnz0j6dvllyxyrw20z1vg6p7sy46yy0fq017pa77sgqm0xzh"
+  }
+ },
+ {
+  "ename": "dune",
+  "commit": "06648d1d37767cbdc7588d7a8f709d679d478a3b",
+  "sha256": "1lqza4fjm9xxmdn8040bvsl467qzjy709dlmiq2241gfhxpmvvr7",
+  "fetcher": "github",
+  "repo": "ocaml/dune",
+  "unstable": {
+   "version": [
+    20191016,
+    1241
+   ],
+   "commit": "e5bec1a57fd4ebeedc848e76e0cf991db7e22fd0",
+   "sha256": "091z6p93sv3aqf7bcw41nwh4kvvpsfncjny2fwcv3vv7zlyj2px2"
+  },
+  "stable": {
+   "version": [
+    2,
+    5,
+    1
+   ],
+   "commit": "4d1ef91df8c732d516ddea4a953f5956e99692b2",
+   "sha256": "1ljhwsyl277lvmii4v439dafyc0y2l2jf2ds5zivpbrh168851di"
+  }
+ },
+ {
+  "ename": "duplicate-thing",
+  "commit": "be28db1bfbd663af5b5c24bad50372fddd341982",
+  "sha256": "1jx2b6h23dj561xhizzbpxp3av69ic8zdw4kkf0py1jm3gnrmlm4",
+  "fetcher": "github",
+  "repo": "ongaeshi/duplicate-thing",
+  "unstable": {
+   "version": [
+    20181031,
+    1500
+   ],
+   "commit": "9d8fd05e3e5caa35d3f2a0c0032c92f0c0908e21",
+   "sha256": "05lflc0r84c95vb81wbn44kh11cbgm42zn3y4ss0ychbf13mzdb5"
+  }
+ },
+ {
+  "ename": "dut-mode",
+  "commit": "ecf49ceab8b25591fab2ed6574cba0e6634d1539",
+  "sha256": "0hlr5qvqcqdh2k1nyq621z6vq2yiflj4jy0pgg6lbiy3j6819mai",
+  "fetcher": "github",
+  "repo": "dut-lang/dut-mode",
+  "unstable": {
+   "version": [
+    20170729,
+    2111
+   ],
+   "commit": "9235c7acaa6690942e9de8b7acd1e4be0c859dc1",
+   "sha256": "0fpqsm6y23anyx57gp4c6whzxrn8x03cp76iwx27c4gkq6ph1z8n"
+  }
+ },
+ {
+  "ename": "dyalog-mode",
+  "commit": "1a8f86df54f1243fea71e1e73ed0b9fb049032bd",
+  "sha256": "00mbkl275g8x3w341nsi90ffm5cfalnrfzx8ww1hnxc86q5ldivw",
+  "fetcher": "github",
+  "repo": "harsman/dyalog-mode",
+  "unstable": {
+   "version": [
+    20200301,
+    1149
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "5dceeefaed6fbedb680bb6cc9aba14fb5f890310",
+   "sha256": "137kgixsdkw2rqj1402gc31gd6hdbna7bx5j1xxhyiig2x2b3aqx"
+  }
+ },
+ {
+  "ename": "dylan-mode",
+  "commit": "94481ba3ebba6a99f11efab5a33e8bc6ea2d857a",
+  "sha256": "0kimvz8vmcvgxi0wvf7dqv6plj31xlksmvgip8h3bhyy7slxj3yy",
+  "fetcher": "github",
+  "repo": "dylan-lang/dylan-mode",
+  "unstable": {
+   "version": [
+    20200425,
+    1347
+   ],
+   "commit": "64f3aed546315c766331c69be3c7e78c7da6c333",
+   "sha256": "1r63gxy1hlij1ck570agvj39rynby6kna5kcfhrr0imi7hl98mzz"
+  }
+ },
+ {
+  "ename": "dynamic-fonts",
+  "commit": "c9db386ab3910940addae6e925b2ac17e64e0f87",
+  "sha256": "0a210ca41maa755lv1n7hhpxp0f7lfxrxbi0x34icbkfkmijhl6q",
+  "fetcher": "github",
+  "repo": "rolandwalker/dynamic-fonts",
+  "unstable": {
+   "version": [
+    20140731,
+    1226
+   ],
+   "deps": [
+    "font-utils",
+    "pcache",
+    "persistent-soft"
+   ],
+   "commit": "ab0c65accbdb59acaed5b263327e22ec019b3e82",
+   "sha256": "150dj1g49q9x9zx9wkymq30l5gc8c4mhsq91fm6q0yj6ip7hlfxh"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    4
+   ],
+   "deps": [
+    "font-utils",
+    "pcache",
+    "persistent-soft"
+   ],
+   "commit": "d318498b377d8941c7420f51616c78e3440d00f5",
+   "sha256": "1ppwlill1z4vqd566h9zi6zx5jb7hggmnmqrga84j5n7fwqvgz7f"
+  }
+ },
+ {
+  "ename": "dynamic-ruler",
+  "commit": "926c43867120db429807ff5aaacc8af65a1738c8",
+  "sha256": "13jc3xbsyc3apkdfy0iafmsfvgqs0zfa5w8jxp7zj4dhb7pxpnmc",
+  "fetcher": "github",
+  "repo": "rocher/dynamic-ruler",
+  "unstable": {
+   "version": [
+    20160602,
+    808
+   ],
+   "commit": "c9c0de6fe5721f06b50e01d9b4684b519c71b367",
+   "sha256": "09skp2d5likqjlrsfis3biqw59sjkgid5249fld9ahqm5f1wq296"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    6
+   ],
+   "commit": "c9c0de6fe5721f06b50e01d9b4684b519c71b367",
+   "sha256": "09skp2d5likqjlrsfis3biqw59sjkgid5249fld9ahqm5f1wq296"
+  }
+ },
+ {
+  "ename": "dynamic-spaces",
+  "commit": "e0b59ce66132cbe2b1f41b665dcb30bdd04bc48b",
+  "sha256": "0l4hwqivzv51j7h5sgd91dxb5slylmrfrvf7r6w0k04bhld6ry0c",
+  "fetcher": "github",
+  "repo": "Lindydancer/dynamic-spaces",
+  "unstable": {
+   "version": [
+    20171027,
+    1851
+   ],
+   "commit": "97ae8480c257ba573ca3d06dbf602f9b23c41d38",
+   "sha256": "0qs7gqjl6ilwwmd21663345az6766j7h1pv7wvd2kyh24yfs1xkj"
+  }
+ },
+ {
+  "ename": "e2ansi",
+  "commit": "5e655a3fdfae80ea120cdb2ce84dd4fd36f9a71e",
+  "sha256": "0ns1sldipx5kyqpi0bw79kdmhi1ry5glwxfzfx8r01hbbkf0cc94",
+  "fetcher": "github",
+  "repo": "Lindydancer/e2ansi",
+  "unstable": {
+   "version": [
+    20190517,
+    1902
+   ],
+   "deps": [
+    "face-explorer"
+   ],
+   "commit": "6e1bb4e4e27885d1786db08b091cfa13b184fb54",
+   "sha256": "1rbbwz8a6gqyxkkh5fapzlbnny816yzqj4170fzrswhib610mcvz"
+  }
+ },
+ {
+  "ename": "e2wm",
+  "commit": "8da85815c39f58552a968ae68ee07c08c53b0f61",
+  "sha256": "0dp360jr3fgxqywkp7g88cp02g37kw2hdsc0f70hjak9n3sy03la",
+  "fetcher": "github",
+  "repo": "kiwanami/emacs-window-manager",
+  "unstable": {
+   "version": [
+    20170215,
+    36
+   ],
+   "deps": [
+    "window-layout"
+   ],
+   "commit": "4353d3394c77a49f8f0291c239858c8c5e877549",
+   "sha256": "12midsrx07pdrsr1qbl2rpi7xyhxqx08bkz7n7gf8vsmqkpfp56s"
+  },
+  "stable": {
+   "version": [
+    1,
+    4
+   ],
+   "deps": [
+    "window-layout"
+   ],
+   "commit": "4353d3394c77a49f8f0291c239858c8c5e877549",
+   "sha256": "12midsrx07pdrsr1qbl2rpi7xyhxqx08bkz7n7gf8vsmqkpfp56s"
+  }
+ },
+ {
+  "ename": "e2wm-R",
+  "commit": "c52a1ea0afa8e5f439b7ac987b79c49eb08fe95a",
+  "sha256": "195qgcdkz1913bvr8pk0yakp83phfn8i7gjv9s0zi8alwwpm3cw9",
+  "fetcher": "github",
+  "repo": "emacsattic/e2wm-R",
+  "unstable": {
+   "version": [
+    20151230,
+    926
+   ],
+   "deps": [
+    "e2wm",
+    "ess",
+    "inlineR"
+   ],
+   "commit": "4350601ee1a96bf89777b3f09f1b79b88e2e6e4d",
+   "sha256": "1g77gf24abwcvf7z52vs762s6jp978pnvza8zmzwkwfvp1mkx233"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "e2wm"
+   ],
+   "commit": "fe17906bf48324032a1beaec9af32b9b49ea9125",
+   "sha256": "1yf081rac0chvkjha9z9xi1p983gmhjph0hai6ppsz5hzf2vikpp"
+  }
+ },
+ {
+  "ename": "e2wm-bookmark",
+  "commit": "45488849da42ac775e532f30f588bfabb7af3cae",
+  "sha256": "1myaqxzrgff5gxcn3zn1bsmyf5122ql1mwr05wamd450lq8nmbw5",
+  "fetcher": "github",
+  "repo": "myuhe/e2wm-bookmark.el",
+  "unstable": {
+   "version": [
+    20151123,
+    521
+   ],
+   "deps": [
+    "e2wm"
+   ],
+   "commit": "bad816b6d8049984d69bcd277b7d325fb84d55eb",
+   "sha256": "121vd44f42bxqvdjswmjlghf1jalbs974b6cip2i049k1n08xgh0"
+  }
+ },
+ {
+  "ename": "e2wm-direx",
+  "commit": "8320cf626050cf455c97ef22e7a8ccfb253e3243",
+  "sha256": "0nv8aciq0swxi9ahwc2pvk9c7i3rmlp7vrzqcan58ml0i3nm17wg",
+  "fetcher": "github",
+  "repo": "aki2o/e2wm-direx",
+  "unstable": {
+   "version": [
+    20170509,
+    1301
+   ],
+   "deps": [
+    "direx",
+    "e2wm"
+   ],
+   "commit": "b47f19d15436cc28233a812a1150689f61d11046",
+   "sha256": "0lihc02b0792kk61vcmhi0jwb7c4w2hi19g6a0q1598b3rci82nf"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    5
+   ],
+   "deps": [
+    "direx",
+    "e2wm"
+   ],
+   "commit": "f319625b56c44e601af7c17fc6dbb88e5d70ebae",
+   "sha256": "09i7d2rc9zd4s3nqrhd3ggs1ykdpxf0pyhxixxw2xy0q6nbswjia"
+  }
+ },
+ {
+  "ename": "e2wm-pkgex4pl",
+  "commit": "8f84b421cb1673d2a9fe820cee11dc4a6e72adad",
+  "sha256": "0hgdbqfw3015fr929m36kfiqqzsid6afs3222iqq0apg7gfj7jil",
+  "fetcher": "github",
+  "repo": "aki2o/e2wm-pkgex4pl",
+  "unstable": {
+   "version": [
+    20140525,
+    1047
+   ],
+   "deps": [
+    "e2wm",
+    "plsense-direx"
+   ],
+   "commit": "7ea994450727190c4f3cb46cb429ba41b692ecc0",
+   "sha256": "1vrlfzy1wynm7x4m7pl8vim7ykqd6qkcilwz7sjc1lbckz11ig0d"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "e2wm",
+    "plsense-direx"
+   ],
+   "commit": "7ea994450727190c4f3cb46cb429ba41b692ecc0",
+   "sha256": "1vrlfzy1wynm7x4m7pl8vim7ykqd6qkcilwz7sjc1lbckz11ig0d"
+  }
+ },
+ {
+  "ename": "e2wm-svg-clock",
+  "commit": "784f5598910ecf208a68fa97448e148a8ebefa32",
+  "sha256": "0q02lksrbn43s8d9rzpglqybalglpi6qi9lix0cllag6i7fzcbms",
+  "fetcher": "github",
+  "repo": "myuhe/e2wm-svg-clock.el",
+  "unstable": {
+   "version": [
+    20150106,
+    1306
+   ],
+   "deps": [
+    "e2wm",
+    "svg-clock"
+   ],
+   "commit": "d425925e3afffcbe2ff74edc80b714e4319d4c94",
+   "sha256": "0h1fnlpvy2mqfxjv64znghmiadh9qimj9q9a60cxhyc0bq0prz6f"
+  }
+ },
+ {
+  "ename": "e2wm-sww",
+  "commit": "cc873e8271e9f372e08da5d0e4b77c8ba0e3a8cb",
+  "sha256": "0x45j62cjivf9v7jp1b41yya3f9akp92md6cbv0v7bwz98g2vsk8",
+  "fetcher": "github",
+  "repo": "aki2o/e2wm-sww",
+  "unstable": {
+   "version": [
+    20140524,
+    858
+   ],
+   "deps": [
+    "e2wm"
+   ],
+   "commit": "1063f9854bd34db5ac771cd1036cecc89834729d",
+   "sha256": "0mz43mwcgyc1c9p9b7nflnjxdxjm2nxbhl0scj6llzphikicr35g"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "e2wm"
+   ],
+   "commit": "1063f9854bd34db5ac771cd1036cecc89834729d",
+   "sha256": "0mz43mwcgyc1c9p9b7nflnjxdxjm2nxbhl0scj6llzphikicr35g"
+  }
+ },
+ {
+  "ename": "e2wm-term",
+  "commit": "c9a800f5af893cb670cedb47e4a723c407be8429",
+  "sha256": "0wrq06yap80a96l9l0hs7x7rng7sx6vi1hz778kknb6il4f2f45g",
+  "fetcher": "github",
+  "repo": "aki2o/e2wm-term",
+  "unstable": {
+   "version": [
+    20200322,
+    729
+   ],
+   "deps": [
+    "e2wm",
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "74362d6271e736272df32ea807c5a22e4df54a50",
+   "sha256": "1cr2mp1visx4fnxc73sk6gw7wnl1mxfb624rm1sxz7wwry8b8fx9"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    5
+   ],
+   "deps": [
+    "e2wm",
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "65b5ac88043d5c4048920a048f3599904ca55981",
+   "sha256": "0qv3kh6q3q7vgfsd8x25x8agi3fp96dkpjnxdidkwk6k8h9n0jzw"
+  }
+ },
+ {
+  "ename": "eacl",
+  "commit": "8223bec7eed97f0bad300af9caa4c8207322d39a",
+  "sha256": "16afsf3diz498jb63q85lm5ifvm487clfl838qzagl1l4aywhlwr",
+  "fetcher": "github",
+  "repo": "redguardtoo/eacl",
+  "unstable": {
+   "version": [
+    20200407,
+    756
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "47b839f305e63e119b6a554497cd4b99512e8e00",
+   "sha256": "1gdppgjdapjx25ns5ja1lnnypq26m8w9s5vbnfg7p0j64kd2mdwh"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    2
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "e074682aa18bed4fd68068a48ccaa970ae6d4e33",
+   "sha256": "1kb14p8004kaqxq765nv5rn8xniw53g4zafcy9wkv9b88bixb7q9"
+  }
+ },
+ {
+  "ename": "easy-after-load",
+  "commit": "384ffc463cc6edb4806f8da68bd251e662718e65",
+  "sha256": "1mn4hpx82nifphzx71yw3rbixbgis8bhvl3iyxcgcd88n5hqwvys",
+  "fetcher": "github",
+  "repo": "pd/easy-after-load",
+  "unstable": {
+   "version": [
+    20170817,
+    1231
+   ],
+   "commit": "29e20145da49ac9ea40463c552130777408040de",
+   "sha256": "00xgd39qc760lmxpbggzn98aks5nad08b5ry54pkszjlmh37yqj7"
+  }
+ },
+ {
+  "ename": "easy-escape",
+  "commit": "c39e3b867fa3143e9dc7c2fefa57b5755f70b433",
+  "sha256": "1zspb79x6s151wwiian45j1nh0xps8y8yd98byyn5lbwbj2pp2gk",
+  "fetcher": "github",
+  "repo": "cpitclaudel/easy-escape",
+  "unstable": {
+   "version": [
+    20161209,
+    1544
+   ],
+   "commit": "a6449f22cb97160ee1c90121968de89e193268df",
+   "sha256": "1spbavcs4a3vn1ggdcgwgb2wvq4lbk74xyfagr4y5b5w2azlkh51"
+  }
+ },
+ {
+  "ename": "easy-hugo",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1m7iw6njxxsk82agyqay277iql578b3wz6z9wjs8ls30ps8s2b8g",
+  "fetcher": "github",
+  "repo": "masasam/emacs-easy-hugo",
+  "unstable": {
+   "version": [
+    20200427,
+    1901
+   ],
+   "deps": [
+    "popup",
+    "request"
+   ],
+   "commit": "2dfdcdbcd8eb81c3fd631372d7dceb4f432d5f1e",
+   "sha256": "19j7r14qxh2cl4zi4vssbbqjhp6r53gjavnwyihk52llxcgrxrr7"
+  },
+  "stable": {
+   "version": [
+    3,
+    9,
+    46
+   ],
+   "deps": [
+    "popup",
+    "request"
+   ],
+   "commit": "9e923e32f21134bb89196a169f5a3f2aecfe45cb",
+   "sha256": "1r8s83dc3ibp687fywfsgs2kc95j2s153ncrgxldqvsp24k1wm8x"
+  }
+ },
+ {
+  "ename": "easy-jekyll",
+  "commit": "c3f281145bad12c27bdbef32ccc07b6a5f13b577",
+  "sha256": "16jj70fr23z5qsaijv4d4xfiiypny2cama8rsaci9fk9haq19lxv",
+  "fetcher": "github",
+  "repo": "masasam/emacs-easy-jekyll",
+  "unstable": {
+   "version": [
+    20200506,
+    117
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "d114ed4ef4470ea429d2dd291a409bc406d0dda0",
+   "sha256": "11wkvrl19c0z2icig2a7i6ccplzgx7j4jjlx97lq41vx679xxiwp"
+  },
+  "stable": {
+   "version": [
+    2,
+    4,
+    26
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "d114ed4ef4470ea429d2dd291a409bc406d0dda0",
+   "sha256": "11wkvrl19c0z2icig2a7i6ccplzgx7j4jjlx97lq41vx679xxiwp"
+  }
+ },
+ {
+  "ename": "easy-kill",
+  "commit": "7d0a74c2a7d8859e9311bc8d71f5e6cf5a8063b6",
+  "sha256": "10jcv7a4vcnaj3wkabip2xwzcwlmvdlqkl409a9lnzfasxcpf32i",
+  "fetcher": "github",
+  "repo": "leoliu/easy-kill",
+  "unstable": {
+   "version": [
+    20181114,
+    2330
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "2a6309d98aa6b71df6bbbcdf15cab3187c521a6b",
+   "sha256": "1j8hl0f52fqb21775xn94sf9g12yqyg6z0ibgmxzmnl02ir4xr86"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    3
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "e3b2442e2096cefff94ea8656e49af07fee58f47",
+   "sha256": "0r56nqrj6iaz57ys6hqdq5qkyliv7dj6dv274l228r7x0axrwd9m"
+  }
+ },
+ {
+  "ename": "easy-kill-extras",
+  "commit": "7b55d93f78fefde47a2bd4ebbfd93c028fab1f40",
+  "sha256": "0xzlzv57nvrc142saydwfib51fyqcdzjccc1hj6xvgcdbwadlnjy",
+  "fetcher": "github",
+  "repo": "knu/easy-kill-extras.el",
+  "unstable": {
+   "version": [
+    20180920,
+    1334
+   ],
+   "deps": [
+    "easy-kill"
+   ],
+   "commit": "b8ce8350cc86e0229f195082557970cd51def960",
+   "sha256": "1f8db92zzk8g8yyj0g334mdbgqmzrs8xamm1d24jai1289hm29xa"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    6
+   ],
+   "deps": [
+    "easy-kill"
+   ],
+   "commit": "b8ce8350cc86e0229f195082557970cd51def960",
+   "sha256": "1f8db92zzk8g8yyj0g334mdbgqmzrs8xamm1d24jai1289hm29xa"
+  }
+ },
+ {
+  "ename": "easy-repeat",
+  "commit": "f1f5e0d19043f6a24ab4069c9c850e96cbe61a8f",
+  "sha256": "1vx57gpw0nbxh976s18va4ali1nqxqffhaxv1c5rhf4pwlk2fa06",
+  "fetcher": "github",
+  "repo": "xuchunyang/easy-repeat.el",
+  "unstable": {
+   "version": [
+    20150516,
+    848
+   ],
+   "commit": "060f0e6801c82c40c06961dc0528a00e18947a8c",
+   "sha256": "18bm5ns1qrxq0rrz9sylshr62wkymh1m6b7ch2y74f8rcwdwjgnq"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "060f0e6801c82c40c06961dc0528a00e18947a8c",
+   "sha256": "18bm5ns1qrxq0rrz9sylshr62wkymh1m6b7ch2y74f8rcwdwjgnq"
+  }
+ },
+ {
+  "ename": "ebal",
+  "commit": "629aa451162a0085488caad4052a56366b7ce392",
+  "sha256": "1kqnlp5n1aig1qbqdq9q50wgqkzd1l6h9wi1gv43cif8qa1kxhwg",
+  "fetcher": "github",
+  "repo": "mrkkrp/ebal",
+  "unstable": {
+   "version": [
+    20180101,
+    616
+   ],
+   "deps": [
+    "f"
+   ],
+   "commit": "1740118125ae7aa6ba82d36e1fe0e69065a6fcaa",
+   "sha256": "1i5r8m34zf7ya1kzgm8hsx707phq5smf2x6y2a1ykbnfkk39gmbf"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "deps": [
+    "f"
+   ],
+   "commit": "4d19565516785348894c4911e757e33a270b3efd",
+   "sha256": "1wj9h8ypi70az387c7pcrpc59lpf89dkp2q4df2ighxw3l648mb7"
+  }
+ },
+ {
+  "ename": "ebf",
+  "commit": "22e2f6383f2a7a01778c0524af19a68af57796ae",
+  "sha256": "072w1hczzb4z0dadvqy8px9zfnfd2z0w8nwa7q2qm5njg30rrqpb",
+  "fetcher": "github",
+  "repo": "rexim/ebf",
+  "unstable": {
+   "version": [
+    20160211,
+    1758
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "dash-functional"
+   ],
+   "commit": "4cd9c26354d8be6571354b2954d21fba882e78a2",
+   "sha256": "1pgn6fcg5cnbpk93hc2vw95sna07x0s1v2i6lq9bmij2msvar611"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "dash-functional"
+   ],
+   "commit": "d0bd4fe1abbe327e7d9228eff09927fec57e8378",
+   "sha256": "16hiwz8a1hyyiflzn53v97704v783pg18yxapn7pqk90fbcf7czw"
+  }
+ },
+ {
+  "ename": "ebib",
+  "commit": "4e39cd8e8b4f61c04fa967def6a653bb22f45f5b",
+  "sha256": "1kdqf5nk9l6mr3698nqngrkw5dicgf7d24krir5wrcfbrsqrfmid",
+  "fetcher": "github",
+  "repo": "joostkremers/ebib",
+  "unstable": {
+   "version": [
+    20200513,
+    2326
+   ],
+   "deps": [
+    "parsebib"
+   ],
+   "commit": "6499e4a67f2772a29128864a8f7606a78fb73b45",
+   "sha256": "0css7pfyqz834f8awc632mwlfcph3mrsqwbxvrlaw59bc3hgxjdv"
+  },
+  "stable": {
+   "version": [
+    2,
+    23,
+    1
+   ],
+   "deps": [
+    "parsebib"
+   ],
+   "commit": "6499e4a67f2772a29128864a8f7606a78fb73b45",
+   "sha256": "0css7pfyqz834f8awc632mwlfcph3mrsqwbxvrlaw59bc3hgxjdv"
+  }
+ },
+ {
+  "ename": "ebuku",
+  "commit": "2f38ff73025a8645e9a93d27dc2c19446920737b",
+  "sha256": "0f9gm24cw81hfczas7w5k7dcr5n255ffskp926ks4wwvl4bpvdpq",
+  "fetcher": "github",
+  "repo": "flexibeast/ebuku",
+  "unstable": {
+   "version": [
+    20200427,
+    1143
+   ],
+   "commit": "9e1878810eaaaa55885d4cbcd6968566e4e3f7a8",
+   "sha256": "0czrchzz7ljynbkkgpp1ifjybp33wx4lhyzyqkxs4q84rs4m7p2p"
+  }
+ },
+ {
+  "ename": "ecb",
+  "commit": "4db5183f35bedbc459843ad9f442f9cb6608c5fc",
+  "sha256": "0z61p9zgv7gcx04m4jv16a3mn9kjvnw0rdd65kpvbmzkgls0nk8d",
+  "fetcher": "github",
+  "repo": "ecb-home/ecb",
+  "unstable": {
+   "version": [
+    20170728,
+    1921
+   ],
+   "commit": "1330a44cf3c171781083b0b926ab7622f64e6e81",
+   "sha256": "0nx1blkvnzrxd2l7ckdihm9fvq5vkcghf6qccagkjzk4zbdalz30"
+  }
+ },
+ {
+  "ename": "eclim",
+  "commit": "1e9d3075587fbd9ca188535fd945a7dc451c6d7e",
+  "sha256": "1n60ci6kjmzy2khr3gs7s8gf21j1f9zjaj5a1yy2dyygsarbxw7b",
+  "fetcher": "github",
+  "repo": "emacs-eclim/emacs-eclim",
+  "unstable": {
+   "version": [
+    20181108,
+    1134
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "json",
+    "popup",
+    "s",
+    "yasnippet"
+   ],
+   "commit": "222ddd48fcf0ee01592dec77c58e0cf3f2ea1100",
+   "sha256": "0jdddf8krvg379wlay1xs27qlxpi87nz6v2i526pk59mmg8jrnvc"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "json",
+    "popup",
+    "s",
+    "yasnippet"
+   ],
+   "commit": "8203fbf8544e65324a948a67718f7a16ba2d52e6",
+   "sha256": "10bbbxhvlwm526g1wib1f87grnayirlg8jbsvmpzxr9nmdjgikz3"
+  }
+ },
+ {
+  "ename": "eclipse-theme",
+  "commit": "81fcf3536ead18a91400f6936b3f789b4b594b9c",
+  "sha256": "0mww0jysxqky1zkkhvhj7fn20w970n2w6501rdm5jwqfb58ivxfx",
+  "fetcher": "github",
+  "repo": "abo-abo/eclipse-theme",
+  "unstable": {
+   "version": [
+    20191113,
+    1518
+   ],
+   "commit": "dcf97865512ed450f9d5137c1a05e12edb5b7f80",
+   "sha256": "0nv0cwn9pjvy54b2pv9ncr6xmh6nnrdcdyqmcahrzmlvgy4ks8ra"
+  }
+ },
+ {
+  "ename": "ecukes",
+  "commit": "14cf66e6929db2a0f377612e786aaed9eb12b799",
+  "sha256": "0ava8hrc7r1mzv6xgbrb84qak5xrf6fj8g9qr4i4g0cr7843nrw0",
+  "fetcher": "github",
+  "repo": "ecukes/ecukes",
+  "unstable": {
+   "version": [
+    20190822,
+    2127
+   ],
+   "deps": [
+    "ansi",
+    "commander",
+    "dash",
+    "espuds",
+    "f",
+    "s"
+   ],
+   "commit": "d835ce619a8f0057a133c08060af4b026e1c9359",
+   "sha256": "1iqrb6lmvmsfk1g6hcc304b091nv3x7f5pv7zpn87kvvw7xw6lqg"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    17
+   ],
+   "deps": [
+    "ansi",
+    "commander",
+    "dash",
+    "espuds",
+    "f",
+    "s"
+   ],
+   "commit": "3a77ba9f1064c2bca47b401974c009e65727c46e",
+   "sha256": "1isscwz4h3nx62lwfrj899lp2yc27zk1ndgr441d848495ccmshn"
+  }
+ },
+ {
+  "ename": "edbi",
+  "commit": "238a11afa52d2c01d69eb16ffd7d07ccd6dff403",
+  "sha256": "0qq0j16n8lyvkqqlcsrq1m7r7f0in6b92d74mpx5c6siv6z2vxlr",
+  "fetcher": "github",
+  "repo": "kiwanami/emacs-edbi",
+  "unstable": {
+   "version": [
+    20160225,
+    141
+   ],
+   "deps": [
+    "concurrent",
+    "ctable",
+    "epc"
+   ],
+   "commit": "6f50aaf4bde75255221f2292c7a4ad3fa9d918c0",
+   "sha256": "0x0igyvdcm4863n7zndvcv6wgzwgn7324cbfjja6xd7r0k936zdy"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "deps": [
+    "concurrent",
+    "ctable",
+    "epc"
+   ],
+   "commit": "39b833d2e51ae5ce66ebdec7c5425ff0d34e02d2",
+   "sha256": "0xy3q68i47a3s81jwr0rdvc1722bp78ng56xm53pri05g1z0db9s"
+  }
+ },
+ {
+  "ename": "ede-compdb",
+  "commit": "3b70138b7d82aec2d60f4a7c0cd21e734a1fc52a",
+  "sha256": "1ypi7rxbgg2qck1b571hcw5m4ipllb48g6sindpdf180kbfbfpn7",
+  "fetcher": "github",
+  "repo": "randomphrase/ede-compdb",
+  "unstable": {
+   "version": [
+    20150920,
+    2033
+   ],
+   "deps": [
+    "cl-lib",
+    "ede",
+    "semantic"
+   ],
+   "commit": "d6d8466cd62876fc90adeff5875a1a584fd846cd",
+   "sha256": "1cfjw9b1lm29s5cbh0qqmkchbq2382s71w4rpb0gyf603s0yg13m"
+  }
+ },
+ {
+  "ename": "ede-php-autoload",
+  "commit": "afc7ddfcf16e92889e54f30599b576a24823f60d",
+  "sha256": "1255a1drpb50650i0yijahbp97chpw89mi9fvdrk3vf64xlysamq",
+  "fetcher": "github",
+  "repo": "emacs-php/ede-php-autoload",
+  "unstable": {
+   "version": [
+    20180901,
+    1255
+   ],
+   "commit": "8a4eeeaa93b8d87b65a107c4ebcbeb14528d9449",
+   "sha256": "109cys3d4pfaa2c6gb33p5b40cd6wmisx63w20cxpj86drx8iabf"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "28a989232c276ee7fc5112c9050b1c29f628be9f",
+   "sha256": "0kc51bb5jxrsra9ycg43n35dd8kngby321qbcixaj68cksf0whrm"
+  }
+ },
+ {
+  "ename": "ede-php-autoload-composer-installers",
+  "commit": "6e0e9058593b32b8d9fd7873d4698b4dd516930f",
+  "sha256": "0s7dv81niz4h8kj0648x2nbmz47hqxchfs2rjmjpy2lcbifvj268",
+  "fetcher": "github",
+  "repo": "xendk/ede-php-autoload-composer-installers",
+  "unstable": {
+   "version": [
+    20170221,
+    2026
+   ],
+   "deps": [
+    "ede-php-autoload",
+    "f",
+    "s"
+   ],
+   "commit": "7840439802c7d11ee086bbf465657f3da12f9f66",
+   "sha256": "1dkq0py1sybmpy59h3szafa59g5g3jp8l9az22l15qgmkpbqydh4"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "ede-php-autoload",
+    "f",
+    "s"
+   ],
+   "commit": "f9942e07d0773444040084ac84652e69f0fd46d5",
+   "sha256": "04gw8ma5c898ai7haxvdagmxx8zw9ncc9v0cv8a5ddg6arvzkl1z"
+  }
+ },
+ {
+  "ename": "ede-php-autoload-drupal",
+  "commit": "532fec4788350cc11893c32e3895f06510a39d35",
+  "sha256": "139sr7jy5hb8h5zmw5mw01r0dy7yvbbyaxzj62m1a589n8w6a964",
+  "fetcher": "github",
+  "repo": "xendk/ede-php-autoload-drupal",
+  "unstable": {
+   "version": [
+    20170316,
+    2158
+   ],
+   "deps": [
+    "ede-php-autoload",
+    "f",
+    "s"
+   ],
+   "commit": "54a04241d94fabc4f4d16ae4dc8ba4f0c6e3b435",
+   "sha256": "1ckfja95zk4f7fgvycia7nxhxjgz4byrz30ic63f6kcq4dx78scs"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "ede-php-autoload",
+    "f",
+    "s"
+   ],
+   "commit": "6b62ffa7a69f52aab79067eaed80b2720f7e3fc2",
+   "sha256": "001yhxngr6h7v1sjz0wskd5dv6fiby7m1mbc8vdz1h93150wzahp"
+  }
+ },
+ {
+  "ename": "edebug-x",
+  "commit": "204e40cd450f4223598be1f385f08ec82b44f70c",
+  "sha256": "0mzrip6y346mix4ny1xj8rkji1w531ix24k3cczmlmm4hm7l29ql",
+  "fetcher": "github",
+  "repo": "ScottyB/edebug-x",
+  "unstable": {
+   "version": [
+    20130616,
+    625
+   ],
+   "commit": "a2c2c42553d3bcbd5ac11898554865acbed1bc46",
+   "sha256": "1zgiifi1k2d9g8sarfpjzamk8g1yx4ilgn60mqhy2pznp30b5qb2"
+  }
+ },
+ {
+  "ename": "edit-at-point",
+  "commit": "2c01af1911a0c8856e3dee09b6d233f821d67814",
+  "sha256": "0ris81wld73h70arvc7zpzvk2wqqmzbpa090vak71w9xgw1jfr36",
+  "fetcher": "github",
+  "repo": "emacsattic/edit-at-point",
+  "unstable": {
+   "version": [
+    20191013,
+    1218
+   ],
+   "commit": "28c85a65c9c61f2aff50bc5e93f61cde26a5d9c0",
+   "sha256": "1wciwx9zk28r21v9ampjd8wn19g19ia7hiq1x0hami479dxwinfc"
+  }
+ },
+ {
+  "ename": "edit-chrome-textarea",
+  "commit": "d9e8d07ed13d190a8a7eab75a59ec5b9a01d97a8",
+  "sha256": "0xp7925y04gr09j204r01jq7hqjp32gqsazwsbih4fkx0n30aqbs",
+  "fetcher": "github",
+  "repo": "xuchunyang/edit-chrome-textarea.el",
+  "unstable": {
+   "version": [
+    20200324,
+    1513
+   ],
+   "deps": [
+    "websocket"
+   ],
+   "commit": "e9ef6a72bdc6b58f932c51aa161869cee11b4bc9",
+   "sha256": "1akyxq0ja06q5bywa6nb4klnbvrw6f6d83bzrjdz2sc7ddk3a4hz"
+  }
+ },
+ {
+  "ename": "edit-color-stamp",
+  "commit": "2ad2ea105b895cb958ce0ab2bf2fad2b40d41b2f",
+  "sha256": "1f8v8w3w7vb8jv29w06mplah8yfcs5qfjz2w4irv0rg7dwzy3zk8",
+  "fetcher": "github",
+  "repo": "sabof/edit-color-stamp",
+  "unstable": {
+   "version": [
+    20130529,
+    1733
+   ],
+   "deps": [
+    "cl-lib",
+    "es-lib"
+   ],
+   "commit": "32dc1ca5bcf3dcf83fad5e39b55dc5b77becb3d3",
+   "sha256": "0vk954f44m2bq7qb122pzlb8fibrisx47ihvn3h96m8nmx0fv32r"
+  }
+ },
+ {
+  "ename": "edit-indirect",
+  "commit": "acc9b816796b9f142c53f90593952b43c962d2d8",
+  "sha256": "0q5jjmrvx5kaajllmhaxihsab2kr1vmcsfqrhxdhw3x3nf41s439",
+  "fetcher": "github",
+  "repo": "Fanael/edit-indirect",
+  "unstable": {
+   "version": [
+    20191103,
+    1013
+   ],
+   "commit": "935ded353b9ed3da67bc61abf245c21b58d88864",
+   "sha256": "0yghm0l4wickhqc29ykjjg98xb91djr1f6n6ihc7ymsv0yhw5wc4"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    5
+   ],
+   "commit": "032ac0ec690d4999d564fd882588c7a197efe8dd",
+   "sha256": "0by1x53pji39fjrj5bd446kz831nv0vdgw2jqasbym4pc1p2947r"
+  }
+ },
+ {
+  "ename": "edit-indirect-region-latex",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0ys0fpfk259g14wvg0nnkc3wk1dbjjd2n4a636jblgq63w6g3h79",
+  "fetcher": "github",
+  "repo": "niitsuma/edit-indirect-region-latex",
+  "unstable": {
+   "version": [
+    20161129,
+    645
+   ],
+   "deps": [
+    "edit-indirect",
+    "ht"
+   ],
+   "commit": "05043f2c0c9838947d3ca4b51b695deb7c47612e",
+   "sha256": "0dgac0nk9x4sz4lisxb5badrzpcjqjwgi79hhl1y6mafzm0ncqs2"
+  }
+ },
+ {
+  "ename": "edit-list",
+  "commit": "6c8aa348ce5289a8b1238f186affac1d544af755",
+  "sha256": "0mi12jfgx06i0yr8k5nk80xryqszjv0xykdnri505862rb90xakv",
+  "fetcher": "github",
+  "repo": "emacsmirror/edit-list",
+  "unstable": {
+   "version": [
+    20100930,
+    1443
+   ],
+   "commit": "f460d3f9e208a4e606fe6ded307f1b011916ca71",
+   "sha256": "0981hy1n50yizc3k06vbxqrpfml817a67kab1hkgkw5v6ymm1hc9"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "f460d3f9e208a4e606fe6ded307f1b011916ca71",
+   "sha256": "0981hy1n50yizc3k06vbxqrpfml817a67kab1hkgkw5v6ymm1hc9"
+  }
+ },
+ {
+  "ename": "edit-server",
+  "commit": "d98d69008b5ca8b92fa7a6045b9d1af86f269386",
+  "sha256": "0ffxcgmnz0f2c1i3vfwm8vlm6jyd7ibf4kq5z8c6n50zkwfdmns0",
+  "fetcher": "github",
+  "repo": "stsquad/emacs_chrome",
+  "unstable": {
+   "version": [
+    20181016,
+    1125
+   ],
+   "commit": "43f180809fcbc7e104f96f95608a97c4c2a2c8b3",
+   "sha256": "0v9nn85pw7lll516p8bb9y6dk44rj2h88ky4zz9wgkrppjs7qdb0"
+  },
+  "stable": {
+   "version": [
+    1,
+    15
+   ],
+   "commit": "4e959de2f78268b348d2eaac4e43c846792d345f",
+   "sha256": "0xxby3ghs38i1l7kag12rnzlzcg9297pm8k6kqq3aqzsg9d2950y"
+  }
+ },
+ {
+  "ename": "edit-server-htmlize",
+  "commit": "219b037401a81ce70bd2106dabffa16d8b0c7cef",
+  "sha256": "007lv3698a88wxan7kplz2117azxxpzzgshin9c1aabg059hszlj",
+  "fetcher": "github",
+  "repo": "frobtech/edit-server-htmlize",
+  "unstable": {
+   "version": [
+    20130329,
+    2248
+   ],
+   "deps": [
+    "edit-server"
+   ],
+   "commit": "e7f8dadfabe869c77ca241cd6fbd4c52bd908392",
+   "sha256": "174xq45xc632zrb916aw7q4bch96pbi6zgy3dk77qla3ky9cfpl3"
+  }
+ },
+ {
+  "ename": "editorconfig",
+  "commit": "50d4f2ed288ef38153a7eab44c036e4f075b51d0",
+  "sha256": "0zv96m07ml8i3k7zm7sdci4hn611n3ypna7zppfkwbdyr7d5k2gc",
+  "fetcher": "github",
+  "repo": "editorconfig/editorconfig-emacs",
+  "unstable": {
+   "version": [
+    20200212,
+    739
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "19de0ec1bac67c5a76a4dd3d8ffe6c5411ace1af",
+   "sha256": "187vcflpbv4zpbzdsxw5i6c9j6dva7v3d3skh3b6wybjzh6ib4jf"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "0b65d5316bcab4d76b5823ea6ecf8f5880f460d2",
+   "sha256": "1djlhkap7zddknzvjsjz0agpfsms1ih05zcpg1bikid2vs4gddyr"
+  }
+ },
+ {
+  "ename": "editorconfig-charset-extras",
+  "commit": "62f27dad806fa135209289933f2131ee4ce8f8bf",
+  "sha256": "15p9qpdwradcnjr0nf0ibhy94yi73l18xz7zxf6khmdirsirpwgh",
+  "fetcher": "github",
+  "repo": "10sr/editorconfig-charset-extras-el",
+  "unstable": {
+   "version": [
+    20180223,
+    457
+   ],
+   "deps": [
+    "editorconfig"
+   ],
+   "commit": "4f75e175ad15ce2038f926fe4f0e5a0c1d0cbc46",
+   "sha256": "12a78187ar4mxdf1sk8bkrdcxly1nc5m9krkry04jklj6h9dayj3"
+  }
+ },
+ {
+  "ename": "editorconfig-custom-majormode",
+  "commit": "fcd47bf4630442ad1a941ad432cef64c7746aa71",
+  "sha256": "0ykvjg3gwxky6w5cm0y5s63q9820b7d25fy9plw8sarxwy2a5lxy",
+  "fetcher": "github",
+  "repo": "10sr/editorconfig-custom-majormode-el",
+  "unstable": {
+   "version": [
+    20180816,
+    244
+   ],
+   "deps": [
+    "editorconfig"
+   ],
+   "commit": "13ad1c83f847bedd4b3a19f9df7fd925853b19de",
+   "sha256": "1zagd6cliwm8xyhzfvpi7n7m58k78wv4ihc2snq00v7321jjh9bp"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "deps": [
+    "editorconfig"
+   ],
+   "commit": "ae613f0a56364afbbab19d4377c108406d5cfc7c",
+   "sha256": "0sm3xdysnqzc6nc2n7rcnr478l7qdy7bv8rhq500240aprzv63y4"
+  }
+ },
+ {
+  "ename": "editorconfig-domain-specific",
+  "commit": "831a7dd7ef853ca44709eabfd48ee97113705319",
+  "sha256": "1rkan6q7z0qfq28zg114iik71nghd7fbs4g8qppzhgr3pwbpn73q",
+  "fetcher": "github",
+  "repo": "lassik/editorconfig-emacs-domain-specific",
+  "unstable": {
+   "version": [
+    20180505,
+    924
+   ],
+   "deps": [
+    "cl-lib",
+    "editorconfig"
+   ],
+   "commit": "e9824160fb2e466afa755240ee3ab7cc5657fb04",
+   "sha256": "0gkwhvywfpnay7rxb2bmsnywcd89qw710bsp53sk5fvilgfwfpkj"
+  }
+ },
+ {
+  "ename": "editorconfig-generate",
+  "commit": "dc1cfe5ce6bc3d247c5b7730ac6cb2d6c6198a0c",
+  "sha256": "1xfm3vnr5ngi1vihs7cack8a6zyipvdq260v43cr0y8dqg3sn89i",
+  "fetcher": "github",
+  "repo": "10sr/editorconfig-generate-el",
+  "unstable": {
+   "version": [
+    20190513,
+    433
+   ],
+   "commit": "47a31f928f46d2a0188db8e2cffa5d6354a81573",
+   "sha256": "01bv064rzxjpqvcs0x62qfqn51js51wmkbg04v28pvmwlmnigkg0"
+  }
+ },
+ {
+  "ename": "edn",
+  "commit": "305dd770d9db86d5ee602e6bd571b7c4f6c4ddbe",
+  "sha256": "00cy8axhy2p3zalzl8k2083l5a7s3aswb9qfk9wsmf678m8pqwqg",
+  "fetcher": "github",
+  "repo": "expez/edn.el",
+  "unstable": {
+   "version": [
+    20160215,
+    1219
+   ],
+   "deps": [
+    "cl-lib",
+    "peg"
+   ],
+   "commit": "be9e32d1b49e35247b263b0243df7cfdc8d413ab",
+   "sha256": "1xp2hjhn52k6l1g6ypva6dsklpawni7gvjafbz6404f9dyxflh7l"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "peg",
+    "s"
+   ],
+   "commit": "bb035dcbeccccdb2c899d2cce8e81486764d0ad7",
+   "sha256": "06v34l9dkykrrdfpnm3zi5wjm0fdvy76pbkfnk92wqkjp8fqimhd"
+  }
+ },
+ {
+  "ename": "edts",
+  "commit": "92b0d3a2af833e0f11e6a935d54eba5e3879d690",
+  "sha256": "1363k9fh1z7r6hxccsqx2a1d688kldr4h6vp91hwph7ihk4868il",
+  "fetcher": "github",
+  "repo": "sebastiw/edts",
+  "unstable": {
+   "version": [
+    20200413,
+    1929
+   ],
+   "deps": [
+    "auto-complete",
+    "auto-highlight-symbol",
+    "dash",
+    "erlang",
+    "f",
+    "popup",
+    "s"
+   ],
+   "commit": "e797eb57ede8332205b3abd7d7adeccbb319ad29",
+   "sha256": "1101yx1dg82msw0bbji9hpnzq029ghh9ca4a6588fik8sn3v786j"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "61855db6f1315ea45f97ed95b47a3f182ec4c6be",
+   "sha256": "1a1apa48n24yisd2zw5k4lfkngx3016x6y11qi80hg75vrnmg7f1"
+  }
+ },
+ {
+  "ename": "edwina",
+  "commit": "050188e81b045bdadf722db552a42864121d9b81",
+  "sha256": "1581cwgfnrlcmbmrnfj57w9hb9jx9sinz6zw6zy2yk7g1r9vgbzl",
+  "fetcher": "github",
+  "repo": "ajgrf/edwina",
+  "unstable": {
+   "version": [
+    20200113,
+    1714
+   ],
+   "commit": "c5368716a504c93407fd8cb4ef925a8d8eb62698",
+   "sha256": "0rsi1v9rr76crbgb7f13g31rfq5bjk0hchqr356h97xlqr39168y"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "cc0a039a400e8ef07b0d96d2169f1407e0af107a",
+   "sha256": "0l8w5f4bkqzb8pglvh516q91s6lvc1s1lfilxc9h881vl3934y7l"
+  }
+ },
+ {
+  "ename": "efire",
+  "commit": "4150455d424326667390f72f6edd22b274d9fa01",
+  "sha256": "0dhgms6s0c889xx75khn1mqfn8i32z4rjlx2w7i0chm2abxbgd3m",
+  "fetcher": "github",
+  "repo": "joaotavora/efire",
+  "unstable": {
+   "version": [
+    20151009,
+    2031
+   ],
+   "deps": [
+    "circe"
+   ],
+   "commit": "91a644662afb352475efad0b377713656f131e5c",
+   "sha256": "1c2iyv392ap35nss4j901h33d3lx9lmq5v43flf2rid1766pam6v"
+  }
+ },
+ {
+  "ename": "eg",
+  "commit": "3d2b6b92b2a71486f260571885bf149ad6afc551",
+  "sha256": "1ic6qzk0zmay3vvbb8jg35irqkc0k68dmgbq4j9isiawy449zvp7",
+  "fetcher": "github",
+  "repo": "davep/eg.el",
+  "unstable": {
+   "version": [
+    20170830,
+    815
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1c7f1613d2aaae728ef540305f6ba030616f86bd",
+   "sha256": "1g2ha6q9k6dmi63i2p4aypwf5mha699wr7yy5dsck39mqk15hx0f"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "0791452498719afb7409d1f723dbea2ec26d56f1",
+   "sha256": "1y16pah8f4jp117vihvlcwvsw2i85gdk45h9y9r1w9mslb24faac"
+  }
+ },
+ {
+  "ename": "egalgo",
+  "commit": "904fac56b9acc8218d0a61ce9953a29f146bb57a",
+  "sha256": "1dhy3m546grpmxwfnvkgpd0hbh9iydag7n5a6arm7ik7sglb9jvd",
+  "fetcher": "github",
+  "repo": "ROCKTAKEY/egalgo",
+  "unstable": {
+   "version": [
+    20190706,
+    1611
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "e683b16ed4265ddb46efcc8cbf9503301cc39e22",
+   "sha256": "12nsbqrk7clr642kmbaa9xqgx7j2r6as6grx5qmghnp7kjfy1d7l"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    2
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "85c8c01c3424e69528f4111a384092dfa721196a",
+   "sha256": "0fdqzv111d37cbl5wzasrppkhkxqgk3aslac7bjpq7jpj5gabwr2"
+  }
+ },
+ {
+  "ename": "egg",
+  "commit": "a1c97870c2641d73685f07a12f010530cc186544",
+  "sha256": "144g1fvs2cmn3px0a98nvxl5cz70kx30v936k5ppyi8gvbj0md5i",
+  "fetcher": "github",
+  "repo": "byplayer/egg",
+  "unstable": {
+   "version": [
+    20181126,
+    500
+   ],
+   "commit": "00e768a78ac3d25f457eed667d02cac568480bf9",
+   "sha256": "1ak23v9gqj6x104mzgihn0hi7w0kr76q1sl929wmbb9h8s3a54q8"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    4
+   ],
+   "commit": "00e768a78ac3d25f457eed667d02cac568480bf9",
+   "sha256": "1ak23v9gqj6x104mzgihn0hi7w0kr76q1sl929wmbb9h8s3a54q8"
+  }
+ },
+ {
+  "ename": "egg-timer",
+  "commit": "a8fbafbeec955fb9bb421519de1e3d09d9812c66",
+  "sha256": "1q3l8hxymk3vxa0nf8pydy4k9qnbzzzpgkp86c9d744smal5xn3v",
+  "fetcher": "github",
+  "repo": "wpcarro/egg-timer.el",
+  "unstable": {
+   "version": [
+    20200217,
+    1650
+   ],
+   "commit": "e3542aeb80905956b94373a222a9cbac04e6497e",
+   "sha256": "0pq6ni2kvdps7j8pdlv16cka198sv29axp9xrp7c755k82pydhk4"
+  }
+ },
+ {
+  "ename": "egison-mode",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "0bch4863l9wxrss63fj46gy3nx3hp635709xr4c2arw0j7n82lzd",
+  "fetcher": "github",
+  "repo": "egison/egison",
+  "unstable": {
+   "version": [
+    20200107,
+    2333
+   ],
+   "commit": "1809fd4c001a4ae2fa5e2b721b67c1059fb8e9b8",
+   "sha256": "0ssh0chavas524jwj3r9bywkd8rgnbjz4xcgxhbnjfcl786pmyw7"
+  },
+  "stable": {
+   "version": [
+    4,
+    0,
+    0
+   ],
+   "commit": "400465de0ece5b03607895bd1c83b1cfae34079a",
+   "sha256": "196jn2cmyjvjai3nbij5kk64djz908ch4kddi4qdpkighwslkh2i"
+  }
+ },
+ {
+  "ename": "eglot",
+  "commit": "6c644530eca56f93d94fac2c9d7663c35c2b8c01",
+  "sha256": "17w39hcgv4p49g841qaicjdx7xac72yxvsc83jf1rrakg713pj7y",
+  "fetcher": "github",
+  "repo": "joaotavora/eglot",
+  "unstable": {
+   "version": [
+    20200516,
+    1013
+   ],
+   "deps": [
+    "eldoc",
+    "flymake",
+    "jsonrpc",
+    "package",
+    "xref"
+   ],
+   "commit": "bf75312b8e7ea5136905d7a55a6d705b51b2b6c9",
+   "sha256": "1xbisdraj04jns0vcpcvnqqiwib3b8jpbian1nnmllvscfdz6c7l"
+  },
+  "stable": {
+   "version": [
+    1,
+    6
+   ],
+   "deps": [
+    "flymake",
+    "jsonrpc"
+   ],
+   "commit": "e02479a8c20cd79c3dfeb553deaaecd7d6e97e51",
+   "sha256": "13r1ysdhnxkc025wypwi6w507v18hm5qf0x29qrycql46f8klrjb"
+  }
+ },
+ {
+  "ename": "eglot-jl",
+  "commit": "5f04bf5d68dc12aa3f3fd66591d45cc894e59df6",
+  "sha256": "0ffbxzhx1fqgqlfk8gqdgyfsc98rqw7mbrdd99qx9gds1pzzx4r8",
+  "fetcher": "github",
+  "repo": "non-Jedi/eglot-jl",
+  "unstable": {
+   "version": [
+    20200514,
+    2034
+   ],
+   "deps": [
+    "eglot",
+    "julia-mode"
+   ],
+   "commit": "844f12d881a3305d319e959b032e01501be1e8ae",
+   "sha256": "0na70zn0s09nihzki6kfnb5hc2j2wqfffj50kwdzjfs53m4sl1s7"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "deps": [
+    "eglot",
+    "julia-mode"
+   ],
+   "commit": "844f12d881a3305d319e959b032e01501be1e8ae",
+   "sha256": "0na70zn0s09nihzki6kfnb5hc2j2wqfffj50kwdzjfs53m4sl1s7"
+  }
+ },
+ {
+  "ename": "ego",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "09k33ggc6n7wgykaawbmh6hyrl9dqp0azaq9zcjhjbc88nszj7fj",
+  "fetcher": "github",
+  "repo": "emacs-china/EGO",
+  "unstable": {
+   "version": [
+    20180301,
+    104
+   ],
+   "deps": [
+    "dash",
+    "ht",
+    "htmlize",
+    "mustache",
+    "org",
+    "simple-httpd"
+   ],
+   "commit": "719809679c1a60887735db41abae53b61f08ef59",
+   "sha256": "10f179kl53la4dyikzl1xysccx4gk04skzwaw3w1pgr8f5fjppxc"
+  }
+ },
+ {
+  "ename": "eide",
+  "commit": "1dd52b48fbac25ee2873645d87a1238351a6ff74",
+  "sha256": "1akmb48rpq05mmb022yh0qnjlbs1wx5x6f1gk2kw5fb5g45swb0c",
+  "fetcher": "git",
+  "url": "https://forge.tedomum.net/eide/eide.git",
+  "unstable": {
+   "version": [
+    20200507,
+    2238
+   ],
+   "commit": "f5f858e238c279a134d34a4ff334428dd811ca07",
+   "sha256": "1y87cbzngn29svx94mqvsk74j7vk912fx29b4fi26hj6myvki1nx"
+  },
+  "stable": {
+   "version": [
+    2,
+    2,
+    0
+   ],
+   "commit": "93b7f4e6013f378f387586011b6389f7ae366bbc",
+   "sha256": "04hsk0dbnv4viypq6x5wrg1dd0q35ihb5lvk74r1h508s6ngbvyd"
+  }
+ },
+ {
+  "ename": "eimp",
+  "commit": "0fda2b54a0ff0b6fc3bd6d20cfcbbf63cae5380f",
+  "sha256": "00g77bg49m38cjfbh17ccnmksz05qx7yvgl6i4i4hysbr2d8pgxd",
+  "fetcher": "github",
+  "repo": "nicferrier/eimp",
+  "unstable": {
+   "version": [
+    20120826,
+    2039
+   ],
+   "commit": "2e7536fe6d8f7faf1bad7a8ae37faba0162c3b4f",
+   "sha256": "154d57yafxbcf39r89n5j43c86rp2fki3lw3gwy7ww2g6qkclcra"
+  }
+ },
+ {
+  "ename": "ein",
+  "commit": "215e163755fe391ce1f049622e7b9bf9a8aea95a",
+  "sha256": "14blq1cbrp00rq0ilk7z9qppqfj0r4n3jidw3abcpchvh5ln086r",
+  "fetcher": "github",
+  "repo": "millejoh/emacs-ipython-notebook",
+  "unstable": {
+   "version": [
+    20200514,
+    2040
+   ],
+   "deps": [
+    "anaphora",
+    "dash",
+    "deferred",
+    "exec-path-from-shell",
+    "polymode",
+    "request",
+    "websocket"
+   ],
+   "commit": "ec3aa36bf37a78e99723563e38f81ee24b855524",
+   "sha256": "0pr14dv4bbxgpki8kd1z9i07x1khb0v2wr82483qf3hhqafv6lrm"
+  },
+  "stable": {
+   "version": [
+    0,
+    16,
+    2,
+    3
+   ],
+   "deps": [
+    "auto-complete",
+    "dash",
+    "deferred",
+    "markdown-mode",
+    "polymode",
+    "request",
+    "s",
+    "skewer-mode",
+    "websocket"
+   ],
+   "commit": "42f8efc54bfb915248972490a4b438b8d5bda381",
+   "sha256": "0jnqi8pq83s8q0dy2y1518yz8lsc0graqrqf8frss21fcj7ny22g"
+  }
+ },
+ {
+  "ename": "ein-mumamo",
+  "commit": "bd8fcf7f6332f94dc37697f9412c8043da8d4f76",
+  "sha256": "029sk90xz9fhv2s56f5hp0aks1d6ybz517009vv4892bbzkpjv1w",
+  "fetcher": "github",
+  "repo": "millejoh/ein-mumamo",
+  "unstable": {
+   "version": [
+    20150302,
+    28
+   ],
+   "deps": [
+    "ein"
+   ],
+   "commit": "028fefec499598add1a87b92ed991891f38f0c7b",
+   "sha256": "1w0b3giy9ca35pp2ni4afnqas64a2vriilab7jiw9anp3ryh6570"
+  }
+ },
+ {
+  "ename": "eink-theme",
+  "commit": "a1349c3f93ab60983f77c28f97048fa258b612a6",
+  "sha256": "0z437cpf1b8bqyi7bv0w0dnc52q4f5g17530lwdcxjkr38s9b1zn",
+  "fetcher": "github",
+  "repo": "maio/eink-emacs",
+  "unstable": {
+   "version": [
+    20190219,
+    858
+   ],
+   "commit": "326b07523dcb076d6209cdbc7fdbb73df296dbdb",
+   "sha256": "1s5w45p0in2ljrbhc7nsc0ppff5wybzwrwv60z1a6dnd8d679qfj"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "93d25c097b105594472c4f99d693f439b4b709f0",
+   "sha256": "0m7qsk378c30fva2n2ag99rsdklx5nsqc395msg1ab11sbpxvis0"
+  }
+ },
+ {
+  "ename": "ejc-sql",
+  "commit": "e01655679087504db1206b22435ba8eb7050aa23",
+  "sha256": "13i55l6hwsxbmdxmvh6aajayivgskw4iagmj9in1qkd9rnrykhn9",
+  "fetcher": "github",
+  "repo": "kostafey/ejc-sql",
+  "unstable": {
+   "version": [
+    20200516,
+    1604
+   ],
+   "deps": [
+    "auto-complete",
+    "clomacs",
+    "dash",
+    "direx",
+    "spinner"
+   ],
+   "commit": "b02e0bbc6df08a4ae44d16ac57886e56cfb8095d",
+   "sha256": "0vs4kcdval7klzbs21jq2rcxs013r7rskpxgjc7lrq1qrsgyyq9d"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    3
+   ],
+   "deps": [
+    "auto-complete",
+    "clomacs",
+    "dash",
+    "direx",
+    "spinner"
+   ],
+   "commit": "ad6473ba40bcc0b300baa83eda13523b9cd2cd2c",
+   "sha256": "18ik1r18yc904048l1yalqm9m7ll4vln73q483yqqywda9hm8saq"
+  }
+ },
+ {
+  "ename": "ejson-mode",
+  "commit": "f932205e18fa8955ecaf439306a0bf3c411ee8d4",
+  "sha256": "1mimixdaldkd8kswhrrvs4v126nyf7zhh1j5ynyrdmg33m0mir1m",
+  "fetcher": "github",
+  "repo": "dantecatalfamo/ejson-mode",
+  "unstable": {
+   "version": [
+    20190720,
+    2138
+   ],
+   "commit": "9630dfac9549779711dbe89e621f516bb4b3a354",
+   "sha256": "1j4v34m7jfiivbpps2pdvzl9q2gwj7rzcna9x93pj0qkw1xaqc3l"
+  }
+ },
+ {
+  "ename": "el-autoyas",
+  "commit": "cc4845343dbb8f8294394f6850788e4f1fe6b99b",
+  "sha256": "0hh5j79f3z82nmb3kqry8k8lgc1qswk6ni3g9jg60pasc3wkbh6c",
+  "fetcher": "github",
+  "repo": "mattfidler/el-autoyas.el",
+  "unstable": {
+   "version": [
+    20120918,
+    1317
+   ],
+   "commit": "bde0251ecb504f585dfa27c205c8e312655310cc",
+   "sha256": "0dbp2zz993cm7mrd58c4iflbzqwg50wzgn2cpwfivk14w1mznh4n"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "commit": "bde0251ecb504f585dfa27c205c8e312655310cc",
+   "sha256": "0dbp2zz993cm7mrd58c4iflbzqwg50wzgn2cpwfivk14w1mznh4n"
+  }
+ },
+ {
+  "ename": "el-fly-indent-mode",
+  "commit": "237311b98eec4b577409f55e16d8e640936d41a2",
+  "sha256": "00iqiawbzijm515lswbkzxf1m6ys242xrg6lzf8k40g2ygyd1q1r",
+  "fetcher": "github",
+  "repo": "jiahaowork/el-fly-indent-mode.el",
+  "unstable": {
+   "version": [
+    20180422,
+    243
+   ],
+   "commit": "4917f486a7be7482dedfea0a7ac3d01cab4ce21c",
+   "sha256": "19ap5l2i0ydkl2whzy44rxc8cgjgrrwi4w7i429ga3pjkac9170g"
+  }
+ },
+ {
+  "ename": "el-get",
+  "commit": "1c61197a2b616d6d3c6b652248cb166196846b44",
+  "sha256": "1438v2sw5n67q404c93y2py226v469nagqwp4w9l6yyy40h4myhz",
+  "fetcher": "github",
+  "repo": "dimitri/el-get",
+  "unstable": {
+   "version": [
+    20181006,
+    225
+   ],
+   "commit": "3f746410a9024af60a1368d02c2c0d9edd93ab66",
+   "sha256": "03zvxdbqjzkr6js8g21dzdiqsbmbhphij8jz98ian7gvzi8ady23"
+  },
+  "stable": {
+   "version": [
+    5,
+    1
+   ],
+   "commit": "bfffd553f4c72b818e9ee94f05458eae7a16056b",
+   "sha256": "1awyh9ffd6a4cia239s89asb88ddqlnrv757d76vcb701pq412bz"
+  }
+ },
+ {
+  "ename": "el-init",
+  "commit": "f0c18cc62ffaaf839284ed7b261cc6f375fab813",
+  "sha256": "121n6z8p9kzi7axp4i2kyi621gw20635w4j81i1bryblaqrv5kl5",
+  "fetcher": "github",
+  "repo": "HKey/el-init",
+  "unstable": {
+   "version": [
+    20150728,
+    920
+   ],
+   "deps": [
+    "anaphora",
+    "cl-lib"
+   ],
+   "commit": "65c48ec47fea84d16ff2d1ef7015b4d220fcf5ff",
+   "sha256": "0awx7ry9xnzw7n9aqiy7i2lfj453jkj15wfy38nlgw9qxv9bri9j"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "anaphora",
+    "cl-lib"
+   ],
+   "commit": "25fd21d820bca1cf576b8f70c8d5a3bc76792597",
+   "sha256": "1mzla7ijmq1mgzr6bf16mjdycbf8ylsf4zdk4j6fh5kw5n4k6c5n"
+  }
+ },
+ {
+  "ename": "el-init-viewer",
+  "commit": "f90e6be757783352c4a7732177ff2e2c0a066247",
+  "sha256": "0kkmsml9xf2n8nlrcicfg2l78s3dlhd6ssx0s62v77v4wdpl297m",
+  "fetcher": "github",
+  "repo": "HKey/el-init-viewer",
+  "unstable": {
+   "version": [
+    20150303,
+    828
+   ],
+   "deps": [
+    "anaphora",
+    "cl-lib",
+    "ctable",
+    "dash",
+    "el-init"
+   ],
+   "commit": "8a2ab457586962bde0da2a1c56a37ce6363ae690",
+   "sha256": "08ni8hmszryf75h1c13q3yrrxgh41as6r8r4vq4gih0jbiz0wx8w"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "anaphora",
+    "cl-lib",
+    "ctable",
+    "dash",
+    "el-init"
+   ],
+   "commit": "dcc595ba51b5aff972292278aa528c7ddb46f1b5",
+   "sha256": "1488wv0f9ihzzf9fl8cki044k61b0kva604hdwpb2qk9gnjr4g1l"
+  }
+ },
+ {
+  "ename": "el-mock",
+  "commit": "b1989beb927657c0ff7e79fe448f62ac58c11be7",
+  "sha256": "07m7w7n202nijnxidy0j0r4nbcvlnbkm9b0n8qb2bwi3d4cfp77l",
+  "fetcher": "github",
+  "repo": "rejeep/el-mock.el",
+  "unstable": {
+   "version": [
+    20170824,
+    1954
+   ],
+   "commit": "5df1d3a956544f1d3ad0bcd81daf47fff33ab8cc",
+   "sha256": "06ldnrpqvbdxfzr8v7pj9xacgvkp36xjlhvjkpxldmqj1l5v8a6w"
+  },
+  "stable": {
+   "version": [
+    1,
+    25,
+    1
+   ],
+   "commit": "3069931de75bb6704ecf565af5390009dc4dae00",
+   "sha256": "13mv1rhgkwiww2wh5w926jz7idppp492wir1vdl245c5x50dh4f7"
+  }
+ },
+ {
+  "ename": "el-patch",
+  "commit": "2f4f57e0edbae35597aa4a7744d22d2f971d5de5",
+  "sha256": "1imijmsni8c8fxjrzprnanf94c1pma3h5w9p75c4y99l8l3xmj7g",
+  "fetcher": "github",
+  "repo": "raxod502/el-patch",
+  "unstable": {
+   "version": [
+    20200404,
+    1548
+   ],
+   "commit": "46d22e7dfc7f9d8e9cbf5042d365f60b1fc7da0f",
+   "sha256": "1xjnzy7gp4sqd0mj3zkw741bj7kbpbdgcqxs6ppvlmr5i0adx2hh"
+  },
+  "stable": {
+   "version": [
+    2,
+    3
+   ],
+   "commit": "278a27477a4d7032fe06bb56ab01701cb10df808",
+   "sha256": "15bwjl6377ngg3qwn1g8wc2wi61pcm6xlhjzj28ap5vz7y7zxps2"
+  }
+ },
+ {
+  "ename": "el-pocket",
+  "commit": "ef362a76a3881c7596dcc2639df588227b3713c0",
+  "sha256": "0fgylpfixsx5l1nrgz6n1c2ayf52p60f9q290hmkn36siyx5hixw",
+  "fetcher": "github",
+  "repo": "pterygota/el-pocket",
+  "unstable": {
+   "version": [
+    20170922,
+    1249
+   ],
+   "deps": [
+    "web"
+   ],
+   "commit": "a80abfb67efe68ada1d7d0a73aecee57e763baaa",
+   "sha256": "0q4nsgqpjmmxml5pcb6im1askk6q7c3ykzv6fgf1w8jgkvdifa6f"
+  }
+ },
+ {
+  "ename": "el-spec",
+  "commit": "407e344bf4e4b3885ebb7df02ebb37feee5e2515",
+  "sha256": "017syizs8qw5phwvpzzffzdnj6rh9q4n7s51qjvj8qfb3088igkh",
+  "fetcher": "github",
+  "repo": "uk-ar/el-spec",
+  "unstable": {
+   "version": [
+    20121018,
+    704
+   ],
+   "commit": "1dbc465401d4aea5560318c4f13ff30920a0718d",
+   "sha256": "1lsq7980pwcwlg7z37hrig8ddm9nyvaqrlczv1w0vy631vc5z2az"
+  }
+ },
+ {
+  "ename": "el-spice",
+  "commit": "4666eee9f6837d6d9dba77e04aa4c8c4a93b47b5",
+  "sha256": "0i0l3y9w1q9pf5zhvmsq4h427imix67jgcfwq21b6j82dzg5l4hg",
+  "fetcher": "github",
+  "repo": "vedang/el-spice",
+  "unstable": {
+   "version": [
+    20180128,
+    1721
+   ],
+   "commit": "4e0852ebf5d8e9cbb3eaaa6ae9c53d126b53f58c",
+   "sha256": "08mkn4qfxax3fgppw79117phm05hihifwj4pgll9ivrilbf75lb8"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "commit": "972dace20ec61cd27b9322432d0c7a688c6f061a",
+   "sha256": "1wrb46y4s4v0lwwyriz2qn1j1l804jyb4dmadf462jxln85rml70"
+  }
+ },
+ {
+  "ename": "el-sprunge",
+  "commit": "547209532faf45b35b55350783ccee532ce2bcbb",
+  "sha256": "0rb1cr7zrfl1s5prxy3xwdqgnm8ddw33pcvk049km2qbccb08v6a",
+  "fetcher": "github",
+  "repo": "eschulte/el-sprunge",
+  "unstable": {
+   "version": [
+    20200312,
+    1212
+   ],
+   "deps": [
+    "htmlize",
+    "web-server"
+   ],
+   "commit": "e4365ea0bdf60969817619376bdcc98003fec33d",
+   "sha256": "13d2dr5r9nv97ma3abcnhqgq86rqwqlwvq64z3hm0qibsxxajdhq"
+  }
+ },
+ {
+  "ename": "el-spy",
+  "commit": "7a90318a38c35e648152ec5fb2dd86c432af9553",
+  "sha256": "1bgv4mgsnkmjdyay7lhkqdszvnwpjy4dxxw11kq45w866ba8645n",
+  "fetcher": "github",
+  "repo": "uk-ar/el-spy",
+  "unstable": {
+   "version": [
+    20131226,
+    2008
+   ],
+   "commit": "b1dead9d1877660856ada22d906ac4e54695aec7",
+   "sha256": "016l3inzb7dby0w58najj2pvymwk6gllsxvqj2fkz3599i36p1pn"
+  }
+ },
+ {
+  "ename": "el-x",
+  "commit": "0346f6349cf39a0414cd055b06d8ed193f4972d4",
+  "sha256": "1721d9mljlcbdwb5b9934q7a48y30x6706pp4bjvgys0r64dml5g",
+  "fetcher": "github",
+  "repo": "sigma/el-x",
+  "unstable": {
+   "version": [
+    20140111,
+    2201
+   ],
+   "commit": "e7c333d4fc31a90f4dca951efe21129164b42605",
+   "sha256": "00wp2swrmalcifx9fsvhz9pgbf6ixvn8dpz1lq6k6pj9h24pq7wh"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "commit": "e96541c1f32e0a3aca4ad0a0eb382bd898250163",
+   "sha256": "1i6j44ssxm1xdg0mf91nh1lnprwsaxsx8vsrf720nan7mfr283h5"
+  }
+ },
+ {
+  "ename": "el2markdown",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1bpfddcvg9wgc5g14clj6wyiw8rsh45rgibvlmyan2m0gmwvmqx6",
+  "fetcher": "github",
+  "repo": "Lindydancer/el2markdown",
+  "unstable": {
+   "version": [
+    20170630,
+    1858
+   ],
+   "commit": "368d99313683cd943c99feaffca356be60bdb636",
+   "sha256": "1h0cr8qcvj9r3acb6bf5nyglvi5gdglwflkfl5jbzp0nm1p9iqcg"
+  }
+ },
+ {
+  "ename": "el2org",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "02kyvzpjws2mrp414i4zm4fmrnzgkaax6bnrlyhp17a8aqaggbnh",
+  "fetcher": "github",
+  "repo": "tumashu/el2org",
+  "unstable": {
+   "version": [
+    20200408,
+    146
+   ],
+   "commit": "7db77fdd73f378d4e60e34c11bbdf00677adc32c",
+   "sha256": "196nrg4cp57calv36if0fkc8bjiz6qzisr29ry49zmkgjlqaafq3"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    0
+   ],
+   "commit": "4a33469cd305e581603d7ef63bc2a1f2156f2e2e",
+   "sha256": "0mzddqny6wpg1fv99xrvlv7rxmaifvmy5bvj4in4pldhm4cx4q1b"
+  }
+ },
+ {
+  "ename": "elbank",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "1i1cdywcbdj9ykfczbagrqdpgf3c88f1kc0mdlj8mzyvjixx7mhk",
+  "fetcher": "github",
+  "repo": "NicolasPetton/elbank",
+  "unstable": {
+   "version": [
+    20180316,
+    1343
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "fa9bc7dec0a8fd489e90b9f178719344cc8d315a",
+   "sha256": "08jxxkbgn2z4kvqkhbimf3lj999yxmyi14wpq8wgbhgcf6q6zx8a"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "f494716105b1a9f4f52f43bc3dd37c9cd0309bf5",
+   "sha256": "0bvx6nq0gjjbjs0mzd1x1ajyjpa181z0n4kv4aknh3is210gbpbb"
+  }
+ },
+ {
+  "ename": "elcontext",
+  "commit": "12bcb0bfc89c1f235e4ac5d7e308e41905725dc6",
+  "sha256": "1firdsrag7r02qb3kjxc3j8l9psvh117z3qwycazhxdz82z0isw7",
+  "fetcher": "github",
+  "repo": "rollacaster/elcontext",
+  "unstable": {
+   "version": [
+    20180526,
+    1304
+   ],
+   "deps": [
+    "f",
+    "ht",
+    "hydra",
+    "osx-location",
+    "uuidgen"
+   ],
+   "commit": "f434ffc655e6349a4dd52285ff68a9194bcfc949",
+   "sha256": "0gbbnx969asq73ypc5lp4qpi4iwwfzm1mmxb1fdifl2lf18p8qwv"
+  }
+ },
+ {
+  "ename": "elcord",
+  "commit": "cf2c52366a8f60b68a33a40ea92cc96e7f0933d2",
+  "sha256": "0a1f99mahaixx6j3lylc7w2zlq8f614m6xhd0x927afv3a6n50l6",
+  "fetcher": "github",
+  "repo": "Mstrodl/elcord",
+  "unstable": {
+   "version": [
+    20200322,
+    2027
+   ],
+   "commit": "94b0afb9bac32fa72354517347646166d6bec986",
+   "sha256": "11gj67d83hx9wfjf4j277jy8jxf97i6bd9r8r057v4i8301qh91p"
+  }
+ },
+ {
+  "ename": "elcouch",
+  "commit": "b5d9a35dd5a272a592d248993ea7e5dda8fdf0ab",
+  "sha256": "1dp7chvnz6gadqgyqbvdxpva3hm3sx60izsa690mp2rifjyxgqf1",
+  "fetcher": "github",
+  "repo": "DamienCassou/elcouch",
+  "unstable": {
+   "version": [
+    20190820,
+    1641
+   ],
+   "deps": [
+    "json-mode",
+    "libelcouch",
+    "navigel"
+   ],
+   "commit": "8e1b7ddec91ae863c3951776a0fcbfead8ca7a80",
+   "sha256": "07psfjynphzpm5jgajf31cigs5jyj8qnq491xrk88jvxm63sq55c"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "json-mode",
+    "libelcouch"
+   ],
+   "commit": "d22e8cab9328966b2e2d5bc4fc17a4abbb222736",
+   "sha256": "0l9ah3ijlidjshwkazfcdasm3hmigw8dcyqgi9pmpv0kw9096y64"
+  }
+ },
+ {
+  "ename": "eldev",
+  "commit": "dd7ae513905a4e4cc23078239ecf2d5f346f1226",
+  "sha256": "11vxhssii5h5c3qm8iwg8d5zrxas3nzl391h9dl83v9h1pg98kg1",
+  "fetcher": "github",
+  "repo": "doublep/eldev",
+  "unstable": {
+   "version": [
+    20200515,
+    1905
+   ],
+   "commit": "a76712621a4851fdb0bc3d76f454898afefedf6e",
+   "sha256": "1jc6l0pcsyv9wgp58ij9wvjj4x4a3zz4svsna2aq86pf8bbbyng9"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    2
+   ],
+   "commit": "f345065592b4bc9a5173b44e12a74400335d4e49",
+   "sha256": "0gf7sfdrnyndgbkpm2pz3056y0d06iy6pwhr63sbm7g4x79j9yjd"
+  }
+ },
+ {
+  "ename": "eldoc-box",
+  "commit": "aac2e64f9e0d06b95bdf0dece214263f75470ea8",
+  "sha256": "11720hi2gvjwc4x2yrxnrhh76wf3sj3yd0vaa3sc22xa5g1wi40r",
+  "fetcher": "github",
+  "repo": "casouri/eldoc-box",
+  "unstable": {
+   "version": [
+    20200316,
+    1956
+   ],
+   "commit": "c1a1b77ec0c7fff9ecf7122d10dcd16eebcd3829",
+   "sha256": "1gg3gxw5ks4fds7lgl9mqxyb2qjrdsdwyyc183nfz6aq0m4w91yb"
+  },
+  "stable": {
+   "version": [
+    1,
+    9,
+    1
+   ],
+   "commit": "8aa2b6d35a557864ff64762774fd5b4960cbeff0",
+   "sha256": "08h42a3mrhcn4qi77fz2s8yz5sbsfcm8vxyc707lhj8cvl8qp9c2"
+  }
+ },
+ {
+  "ename": "eldoc-cmake",
+  "commit": "e19f92097e6003a893907aa46a2df755d2bf0b87",
+  "sha256": "1y47zhxgisvsk0kgvlwrlspmjb2a6wrxwkiahxp9fkdc58r9w7v0",
+  "fetcher": "github",
+  "repo": "ikirill/eldoc-cmake",
+  "unstable": {
+   "version": [
+    20190419,
+    2244
+   ],
+   "commit": "4453c03b5c95ff32842f13db2fc317fb0fe2f79e",
+   "sha256": "01jhfglj1v4p3qmhiri4k05p0dg10k59pj5608hjls6zsmxf2wbg"
+  }
+ },
+ {
+  "ename": "eldoc-eval",
+  "commit": "63ba2004d3db4c5a71676dca82ad880328cf6073",
+  "sha256": "0z4scgi2xgrgd47aqqmyv1ww8alh43s0qny5qmh3f1nnppz3nd7c",
+  "fetcher": "github",
+  "repo": "thierryvolpiatto/eldoc-eval",
+  "unstable": {
+   "version": [
+    20190423,
+    1858
+   ],
+   "commit": "a67fe3637378dcb6c5f9e140acc8131f0d2346b3",
+   "sha256": "0504yyzxp1rk0br6f25395n4aa4w8ixf59vqxxb55a7agxplfpjc"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "deca5e39f31282a06531002d289258cd099433c0",
+   "sha256": "1fh9dx669czkwy4msylcg64azz3az27akx55ipnazb5ghmsi7ivk"
+  }
+ },
+ {
+  "ename": "eldoc-overlay",
+  "commit": "f865b248002d6d3ba9653c2221072a4aa54cd740",
+  "sha256": "0nn6i89xbw8vkd5ybsnc1zpnf3ra4s8pf01jdj2i59ayjs64s28x",
+  "fetcher": "github",
+  "repo": "stardiviner/eldoc-overlay",
+  "unstable": {
+   "version": [
+    20200328,
+    619
+   ],
+   "deps": [
+    "inline-docs",
+    "quick-peek"
+   ],
+   "commit": "ec318acb564ac5679285b51b7d979410d393fac9",
+   "sha256": "0dx1b9d7zyqcwsnhl18hyrkmrc0zy68zwhp81d43fw84gjb4jcx8"
+  }
+ },
+ {
+  "ename": "eldoc-stan",
+  "commit": "e4ae4feacc7d83ad2acc8db83cf6339b6c63ec3e",
+  "sha256": "0ah6fbz039lyb9xf4q379h7y0df18r1vyri6nq3lmhj3zw3042n1",
+  "fetcher": "github",
+  "repo": "stan-dev/stan-mode",
+  "unstable": {
+   "version": [
+    20200221,
+    2025
+   ],
+   "deps": [
+    "stan-mode"
+   ],
+   "commit": "599a0440086c660e6823622b35058f6d2d6d9637",
+   "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y"
+  },
+  "stable": {
+   "version": [
+    10,
+    1,
+    0
+   ],
+   "deps": [
+    "stan-mode"
+   ],
+   "commit": "599a0440086c660e6823622b35058f6d2d6d9637",
+   "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y"
+  }
+ },
+ {
+  "ename": "electric-case",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1ch108ljzg5xkk4pkfpfxm8v2yzqk79q3h2zhzzqhsydq7r07bdn",
+  "fetcher": "github",
+  "repo": "zk-phi/electric-case",
+  "unstable": {
+   "version": [
+    20150417,
+    1112
+   ],
+   "commit": "bac64e772107e3dc721a9819f63b9ebdc28a81f7",
+   "sha256": "0s4y1319sr4xc0k6h2zhzzxsx2kc3pc2m6saah18y4kip0hjyhr8"
+  }
+ },
+ {
+  "ename": "electric-operator",
+  "commit": "906cdf8647524bb76f644373cf8b65397d9053a5",
+  "sha256": "043bkpvvk42lmkll5jnz4q8i0m44y4wdxvkz6hiqhqcp1rv03nw2",
+  "fetcher": "github",
+  "repo": "davidshepherd7/electric-operator",
+  "unstable": {
+   "version": [
+    20200410,
+    928
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "f8454905a147045f25ab03da7aa6406e4f20cc64",
+   "sha256": "1x087fry0yx5sk9vvgqv1zh7fkpgzvykl14fzns1920sxacgms68"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "dash",
+    "names"
+   ],
+   "commit": "21e6b84754118912768263a393442a7aefb4742b",
+   "sha256": "1bgz5vn4piax8jm0ixqlds0qj5my26zczaxs21fah11pwbdc0xyk"
+  }
+ },
+ {
+  "ename": "electric-spacing",
+  "commit": "a78c0044f8b7a0df1af1aba407be4d7865c98c59",
+  "sha256": "0fcsz9wmibqp6ci0pa5r4gzlrsyj5klajxpgfksa0nfj3dc94cvg",
+  "fetcher": "github",
+  "repo": "xwl/electric-spacing",
+  "unstable": {
+   "version": [
+    20200223,
+    838
+   ],
+   "commit": "83568a7f2f0e2f0983e348b6e4adc0fc75b98adf",
+   "sha256": "03710cr8jvr22c9j3c266460aln26j7y9vqj6qm3mmzhsr3v7q2c"
+  }
+ },
+ {
+  "ename": "elein",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "01y5yrmm3biyrfgnl3qjfpn1xvjk2nabwjr8cls53ds697qpz5x2",
+  "fetcher": "github",
+  "repo": "remvee/elein",
+  "unstable": {
+   "version": [
+    20120120,
+    1116
+   ],
+   "commit": "d4c0c0491dbb7c90e953d7a16172107c37103605",
+   "sha256": "1ijrhm9vrzh5wl1rr9ayl11dwm05bh1i43fnbz3ga58l6whgkfpw"
+  }
+ },
+ {
+  "ename": "elf-mode",
+  "commit": "368d1ff91f310e5ffe68f872ab0a91584a41a66e",
+  "sha256": "0xwpaqg4mc0a0d8a4dxbd1sqzvi01gfhwr75f7i3sjzx0fj8vcwd",
+  "fetcher": "github",
+  "repo": "abo-abo/elf-mode",
+  "unstable": {
+   "version": [
+    20161009,
+    748
+   ],
+   "commit": "cd280d683cd3341d8bb31af6db7e3b74a133e6ab",
+   "sha256": "0cbvjbk2893ag1iy8ggixpirfiyhssm7fii96hb9jqdz874cdl0k"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "cd280d683cd3341d8bb31af6db7e3b74a133e6ab",
+   "sha256": "0cbvjbk2893ag1iy8ggixpirfiyhssm7fii96hb9jqdz874cdl0k"
+  }
+ },
+ {
+  "ename": "elfeed",
+  "commit": "407ae027fcec444622c2a822074b95996df9e6af",
+  "sha256": "1psga7fcjk2b8xjg10fndp9l0ib72l5ggf43gxp62i4lxixzv8f9",
+  "fetcher": "github",
+  "repo": "skeeto/elfeed",
+  "unstable": {
+   "version": [
+    20200209,
+    1942
+   ],
+   "commit": "af31f80552f7d081b985d729143a804ad47c0734",
+   "sha256": "13n0yhw9si1cp31m15andwkqan7vmmny5mxzj09cykjd1bk2rpan"
+  },
+  "stable": {
+   "version": [
+    3,
+    3,
+    0
+   ],
+   "commit": "9b5a0ce648cdaa59f7c96414ee868038e08ea29d",
+   "sha256": "0j8a94val4ml7g1vcjgzk1w89h55sxfdrwnncmz6qbh1y2xsz8c5"
+  }
+ },
+ {
+  "ename": "elfeed-goodies",
+  "commit": "e6ebb8d23961fd9bfe101f7917caa3b405493f31",
+  "sha256": "0zpk6nx757hasgzcww90fzkcdn078my33p7yax7xslvi4msm37bi",
+  "fetcher": "github",
+  "repo": "algernon/elfeed-goodies",
+  "unstable": {
+   "version": [
+    20190128,
+    1631
+   ],
+   "deps": [
+    "ace-jump-mode",
+    "cl-lib",
+    "elfeed",
+    "noflet",
+    "popwin",
+    "powerline"
+   ],
+   "commit": "95b4ea632fbd5960927952ec8f3394eb88da4752",
+   "sha256": "0mfigkp77acqlnkj07vjzbcamwxp37zqxramp1qdf95psnz177q7"
+  }
+ },
+ {
+  "ename": "elfeed-org",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0rnxr2q2ib6xrdx41ams1z2ivw5zhcsmqdylyvbw62h20rlmlgm8",
+  "fetcher": "github",
+  "repo": "remyhonig/elfeed-org",
+  "unstable": {
+   "version": [
+    20181015,
+    1100
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "elfeed",
+    "org",
+    "s"
+   ],
+   "commit": "77b6bbf222487809813de260447d31c4c59902c9",
+   "sha256": "0a2ibka82xq1dhy2z7rd2y9zhcj8rna8357881yz49wf55ccgm53"
+  }
+ },
+ {
+  "ename": "elfeed-protocol",
+  "commit": "3f1eef8add7cd2cfefe6fad6d8e69d65696e9677",
+  "sha256": "1gd2ny764qsnnqf3j7rbdqhh7hqd5c0fzwxx6wacd0dpbq4w56qi",
+  "fetcher": "github",
+  "repo": "fasheng/elfeed-protocol",
+  "unstable": {
+   "version": [
+    20200503,
+    304
+   ],
+   "deps": [
+    "cl-lib",
+    "elfeed"
+   ],
+   "commit": "2df5237dfa8c51a151bcf9d8fb6746447a8aa3d0",
+   "sha256": "0n4f621787v3gqfyqg7f37z6nxjqxl0bxxnl5j3gxqrif0ml2725"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    6
+   ],
+   "deps": [
+    "cl-lib",
+    "elfeed"
+   ],
+   "commit": "fc0beb392386b8ed387e52e7e100354b8549fd7e",
+   "sha256": "1kh524fkhsq3l9w0dv12b8shdyqfvnkhdr19xzfbhzw10hfdl5js"
+  }
+ },
+ {
+  "ename": "elfeed-score",
+  "commit": "e981f8adeb5015d966e733496280d5cea457228d",
+  "sha256": "0jag1ksmnql61303a51i2lizd2yk4cjlsm2hksqqjk46cwv2cvl7",
+  "fetcher": "github",
+  "repo": "sp1ff/elfeed-score",
+  "unstable": {
+   "version": [
+    20200328,
+    1855
+   ],
+   "deps": [
+    "cl-lib",
+    "elfeed"
+   ],
+   "commit": "916c47b3590b2ff3c5075dcc1def4b36a4b14947",
+   "sha256": "1vhchbyy3c79cgvdz12wnryklr5g1bwh02d604zj2wca3b0199w4"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    4
+   ],
+   "deps": [
+    "cl-lib",
+    "elfeed"
+   ],
+   "commit": "916c47b3590b2ff3c5075dcc1def4b36a4b14947",
+   "sha256": "1vhchbyy3c79cgvdz12wnryklr5g1bwh02d604zj2wca3b0199w4"
+  }
+ },
+ {
+  "ename": "elfeed-web",
+  "commit": "62459d16ee44d5fcf170c0ebc981ca2c7d4672f2",
+  "sha256": "14ydwvjjc6wbhkj4g4xdh0c3nh4asqsz8ln7my5vjib881vmaq1n",
+  "fetcher": "github",
+  "repo": "skeeto/elfeed",
+  "unstable": {
+   "version": [
+    20191123,
+    1738
+   ],
+   "deps": [
+    "elfeed",
+    "simple-httpd"
+   ],
+   "commit": "af31f80552f7d081b985d729143a804ad47c0734",
+   "sha256": "13n0yhw9si1cp31m15andwkqan7vmmny5mxzj09cykjd1bk2rpan"
+  },
+  "stable": {
+   "version": [
+    3,
+    3,
+    0
+   ],
+   "deps": [
+    "elfeed",
+    "simple-httpd"
+   ],
+   "commit": "9b5a0ce648cdaa59f7c96414ee868038e08ea29d",
+   "sha256": "0j8a94val4ml7g1vcjgzk1w89h55sxfdrwnncmz6qbh1y2xsz8c5"
+  }
+ },
+ {
+  "ename": "elgrep",
+  "commit": "0d9ab623b2d634936a79ff6f4b98b31825d44b6d",
+  "sha256": "0b8dma52zv57sh1jbrabfy6k5lzixs7f541s8dsqyrg0fzlq460j",
+  "fetcher": "github",
+  "repo": "TobiasZawada/elgrep",
+  "unstable": {
+   "version": [
+    20191203,
+    1227
+   ],
+   "deps": [
+    "async"
+   ],
+   "commit": "c475cee98bc607746901318ef9da463c96d5e04e",
+   "sha256": "02jfpi8bvjxw5jnjjpzq87xf1xjly745k8s74jc9lpginip3kj95"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "c2c5858f335ac1d0013dc631e5bc2dc16d9b3198",
+   "sha256": "1rlj9cniwk8fzfn1i4apffrikv08r9c2dmwxhqc6nmrhfjr2rf1k"
+  }
+ },
+ {
+  "ename": "elhome",
+  "commit": "527cc08a3424f87fe2e99119b931530840ad07ba",
+  "sha256": "1k7936wxgslr29511dz9az38i9vi35rcxk68gzv35v9lpj89lalh",
+  "fetcher": "github",
+  "repo": "demyanrogozhin/elhome",
+  "unstable": {
+   "version": [
+    20161025,
+    2042
+   ],
+   "deps": [
+    "initsplit"
+   ],
+   "commit": "e789e806469af3e9705f72298683c21f6c3a516d",
+   "sha256": "1q9glli1czbfp62aalblaak55j8rj2nl8bm8nifnnb8jrzj1qrn0"
+  }
+ },
+ {
+  "ename": "elisp-def",
+  "commit": "1f027b844efdc5946d2ad80d7052a8f3b96aac3d",
+  "sha256": "1y29nsgjv9nb03g0jc5hb1a8k23r54ivdlv9h0a384cig8i91hsz",
+  "fetcher": "github",
+  "repo": "Wilfred/elisp-def",
+  "unstable": {
+   "version": [
+    20180806,
+    723
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "368b04da68783601b52e3169312183381871cf9e",
+   "sha256": "0l1kj7xd4332xk821z24c14lhkpcmca5gmivpb8shlk10cvjvxjw"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "5e0d766a5db537f4e7145c2053c22829d736ceba",
+   "sha256": "0l9az09yw40rr2xrvf01c3idfqplddr1kk880qscnzj8v9p06l4x"
+  }
+ },
+ {
+  "ename": "elisp-demos",
+  "commit": "e1bd1c7a4576d4874a8c5fc8ab2dbc65f0e5bc8c",
+  "sha256": "1571l826x8ixlqd3nkqgizkzrq37af13ihrm1rvgaf5gl0va9ik8",
+  "fetcher": "github",
+  "repo": "xuchunyang/elisp-demos",
+  "unstable": {
+   "version": [
+    20200427,
+    151
+   ],
+   "commit": "4cd55a30d5dbd8d36a0e6f87261c4fef17fc6db0",
+   "sha256": "0g1wnx37pdl3zxmym4fnqvhlw9hj6aw51vpxa18fpsh7fadfjjdp"
+  },
+  "stable": {
+   "version": [
+    2020,
+    2,
+    19
+   ],
+   "commit": "7cc5ae4eac5bd8f38ade9ba1c28ad6faaba82160",
+   "sha256": "0mckgaz92v3y2vlkggx9kd51fd1mahylw39c42l51dyv8wscm7sc"
+  }
+ },
+ {
+  "ename": "elisp-depend",
+  "commit": "7ea159f0cc8c6e4b8483401a6e6687ab4ed73b7f",
+  "sha256": "0zpafwnm52g6v867f1ghfb492nnmm66imcwlhm5v9hhgwy3z17jm",
+  "fetcher": "github",
+  "repo": "emacsorphanage/elisp-depend",
+  "unstable": {
+   "version": [
+    20190325,
+    1114
+   ],
+   "commit": "6679da9a6be5a845bb4804224c8394a9bc62168f",
+   "sha256": "09xbrk1li76fwa85kvd5xpr0zswrkh51p7a62sb8g422wpaqxiwx"
+  }
+ },
+ {
+  "ename": "elisp-depmap",
+  "commit": "8c86ca9b1ad39282f965d36ec2a8df807cc0ebb1",
+  "sha256": "08qjrc3vrn18apnb856qd2m0wzza8755fbh8ly9nh58dlbjhkkd7",
+  "fetcher": "github",
+  "repo": "mtekman/elisp-depmap.el",
+  "unstable": {
+   "version": [
+    20200413,
+    1215
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "e47616c968dd82e30cb10961452e2b46c7900163",
+   "sha256": "1jpqdi15lvyd48jsbndlallnjc8bkmv0mxwyf51m483vz9v8nn2i"
+  }
+ },
+ {
+  "ename": "elisp-docstring-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0mdh3ikn6zfd3fbmifvivqih2fsijvlzalljdvm32crs9cy6fa96",
+  "fetcher": "github",
+  "repo": "Fuco1/elisp-docstring-mode",
+  "unstable": {
+   "version": [
+    20170304,
+    1615
+   ],
+   "commit": "f512e509dd690f65133e55563ebbfd2dede5034f",
+   "sha256": "0al8m75p359h4n82rf0dsl22qfdg9cwwywn5pn7x6gb96c7qrqaa"
+  }
+ },
+ {
+  "ename": "elisp-format",
+  "commit": "ff353f4228529c51577f7104cdf52c677be8a500",
+  "sha256": "1l0596y4yjn3jdyy6pgws1pgz6i12fxfy27566lmxklbxp8sxgy8",
+  "fetcher": "github",
+  "repo": "Yuki-Inoue/elisp-format",
+  "unstable": {
+   "version": [
+    20160508,
+    952
+   ],
+   "commit": "03cc293eb2f78ec58fc1d84279af06816a04b979",
+   "sha256": "17l2xsixx3p93dmx9jsg0a3xqdg19nwp1di2pymlg41pw0kdf3x3"
+  }
+ },
+ {
+  "ename": "elisp-lint",
+  "commit": "61595c78ac7f15eef47bf28636ad796f74741509",
+  "sha256": "13cxcn0qp63f2nkv37c3w47dby9cqm4l1f8xilgpczdaxd86kd63",
+  "fetcher": "github",
+  "repo": "gonewest818/elisp-lint",
+  "unstable": {
+   "version": [
+    20200324,
+    2217
+   ],
+   "deps": [
+    "dash",
+    "package-lint"
+   ],
+   "commit": "35a3fcc3131c243206fa914b8562cda771eab8c5",
+   "sha256": "09ibaq3mjnw3vm1rwrljdcgybxly2fk9gjdim39s9fpgar4ys12p"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "deps": [
+    "dash",
+    "package-lint"
+   ],
+   "commit": "2b645266be8010a6a49c6d0ebf6a3ad5bd290ff4",
+   "sha256": "1gg9ik0x67cnldzsclp45i7gf190y9pxl11k3grdkrkqjiph1375"
+  }
+ },
+ {
+  "ename": "elisp-refs",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "1pj3dm2z6m24179ibl7zhr8lhan2v2rjnm3abfciwp228piz1sfz",
+  "fetcher": "github",
+  "repo": "Wilfred/elisp-refs",
+  "unstable": {
+   "version": [
+    20200428,
+    1707
+   ],
+   "deps": [
+    "dash",
+    "loop",
+    "s"
+   ],
+   "commit": "0e7ea1574717108ddc2eda5e1bc883d44cd28257",
+   "sha256": "0qkgsac3g02p4w8rkkmwv0p0brmi3rb1yijq45nvyy8kkf331g0g"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "deps": [
+    "dash",
+    "loop",
+    "s"
+   ],
+   "commit": "0b6fcdee29d8156ef37477f4e128a148e295c62b",
+   "sha256": "0w7k91xf69zc0zkjrw8h8sjdjf9xq9qs5zhvajhd718lzf93564b"
+  }
+ },
+ {
+  "ename": "elisp-sandbox",
+  "commit": "4b0e7c52ff8034a1c0d1e5d7bc0c58f166986b28",
+  "sha256": "1bazm1cf9ghh9b7jzqqgyfcalnrfg7vmxqbn4fiy2c76gbzlr2bp",
+  "fetcher": "github",
+  "repo": "joelmccracken/elisp-sandbox",
+  "unstable": {
+   "version": [
+    20131116,
+    1842
+   ],
+   "commit": "d894d68934ef09c42f72ac4e1173a0bedc23f139",
+   "sha256": "0r70axda1piwxznksygby9vid49q4lzjwcrhx7gl5midjs961531"
+  }
+ },
+ {
+  "ename": "elisp-slime-nav",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "009zgp68i4naprpjr8lcp06lh3i5ickn0nh0lgvrqs0niprnzh8c",
+  "fetcher": "github",
+  "repo": "purcell/elisp-slime-nav",
+  "unstable": {
+   "version": [
+    20200304,
+    2201
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "9ab52362600af9f97f1590f05a295538025170b3",
+   "sha256": "08k4zlawjkb0ldn4lgrhih8nzln398x7dwzpipqfyrmp0xziywma"
+  },
+  "stable": {
+   "version": [
+    0,
+    10
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "9ab52362600af9f97f1590f05a295538025170b3",
+   "sha256": "08k4zlawjkb0ldn4lgrhih8nzln398x7dwzpipqfyrmp0xziywma"
+  }
+ },
+ {
+  "ename": "elixir-mode",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "0d25p6sal1qg1xsq5yk343afnrxa0lzpx5gsh72khnx2i8pi40vz",
+  "fetcher": "github",
+  "repo": "elixir-editors/emacs-elixir",
+  "unstable": {
+   "version": [
+    20200121,
+    623
+   ],
+   "deps": [
+    "pkg-info"
+   ],
+   "commit": "231291ecadc479295d83fee619049030940bfbe5",
+   "sha256": "0lzzgdd1fkswij0d9rh6gyyvhf6z5m0az1hhvyighi45al3mj78s"
+  },
+  "stable": {
+   "version": [
+    2,
+    3,
+    1
+   ],
+   "deps": [
+    "pkg-info"
+   ],
+   "commit": "a1f4d60ec555574c945201359d2e32b183c69f4b",
+   "sha256": "06bi68x49v6f7flpz279mm4jpg31ll3s274givm3pvr8slcxs6xg"
+  }
+ },
+ {
+  "ename": "elixir-yasnippets",
+  "commit": "6c37a13d56e9a0a4e7e2c11349ed87610a0f6b2c",
+  "sha256": "0vmkcd88wfafv31lyw0983p4qjj387qf258q7py1ij47fcmfp579",
+  "fetcher": "github",
+  "repo": "hisea/elixir-yasnippets",
+  "unstable": {
+   "version": [
+    20150417,
+    1239
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "980ca7626c14ef0573bec0035ec7942796062783",
+   "sha256": "1sdq4372i19wdxpdp3347a1rf5zf5w6sa0da6lr511m7ri0lj6hd"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "6b55c88ce483932f226b6bca0212b589d1d393ea",
+   "sha256": "0dx5h3sfccc2bp1jxnqqki95x5hp1skw8n5n4lnh703yjga5gkrz"
+  }
+ },
+ {
+  "ename": "ellocate",
+  "commit": "fac47d8b4937c714df7b61ce4914831bfd7fcd20",
+  "sha256": "1i31gr3hdl1mjqwkkrfb7x1dpddyxnl1n9l7p7jiqbg3nn85gsxx",
+  "fetcher": "github",
+  "repo": "walseb/ellocate",
+  "unstable": {
+   "version": [
+    20200112,
+    1931
+   ],
+   "deps": [
+    "f",
+    "s"
+   ],
+   "commit": "81405082f68f0577c9f176d3d4f034a7142aba59",
+   "sha256": "0amzbazg53956h1h5ppxd9psr1d1fwvlpm27kpfvhw5ipqzp3ws4"
+  }
+ },
+ {
+  "ename": "elm-mode",
+  "commit": "5d1a4d786b137f61ed3a1dd4ec236d0db120e571",
+  "sha256": "1gw9szkyr1spcx7qijddhxlm36h0hmfd53b4yzp1336yx44mlnd1",
+  "fetcher": "github",
+  "repo": "jcollard/elm-mode",
+  "unstable": {
+   "version": [
+    20200406,
+    214
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "reformatter",
+    "s"
+   ],
+   "commit": "7782be0814b52f7c35a09b21a4839c1502a4707f",
+   "sha256": "0g3mxp80hfjwf3adaslwykk01w5fh5y6nwj4687wbm5dldvhr42i"
+  },
+  "stable": {
+   "version": [
+    0,
+    21,
+    0
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "reformatter",
+    "s"
+   ],
+   "commit": "5df694e307cf8fa5a3555d800984aa4ebb40664f",
+   "sha256": "0iwk4fmw8hq3ry4ky1zc7lgl4cpbnrjyk74c2xzddfspi3ks41fd"
+  }
+ },
+ {
+  "ename": "elm-test-runner",
+  "commit": "064db8f60438927255458a7fbd8ae871f8264d67",
+  "sha256": "1axzp93a0xmbprskql4bdfnxnmcpfnq6xf7c4x7cgn5pbd1p6inz",
+  "fetcher": "github",
+  "repo": "juanedi/elm-test-runner",
+  "unstable": {
+   "version": [
+    20190105,
+    1923
+   ],
+   "commit": "a31d567a64d86d36e3675347abd696824a731e0c",
+   "sha256": "15kgz44ylni4anz461hihrhvg24jvd7jzykqdjacsznyphfv94m9"
+  }
+ },
+ {
+  "ename": "elm-yasnippets",
+  "commit": "340664dd1c57b539de191dd6faa9eb8ed9ae6914",
+  "sha256": "0nnr0sxkxviw2i7b5s8jgvsv7lgqxqvirmvmband84q9gxlz24zb",
+  "fetcher": "github",
+  "repo": "abingham/elm-yasnippets",
+  "unstable": {
+   "version": [
+    20160401,
+    524
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "45a11a0cef0c36633fb3477d3dc4167e82779ba4",
+   "sha256": "1zb5yra6znkr7yaq6wqlmlr054wkv9cy1dih8h4j2gp2wnfwg968"
+  }
+ },
+ {
+  "ename": "elmacro",
+  "commit": "566cc5bc0f71c5a4191ad93b917dc268f6e1a2da",
+  "sha256": "0644rgwawivrq1shsjx1x2p53z7jgr6bxqgn2smzql8pp6azy7xz",
+  "fetcher": "github",
+  "repo": "Silex/elmacro",
+  "unstable": {
+   "version": [
+    20191208,
+    1057
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "ba4086ef241dadfc2b1ce1bcfa56e12dbb89ef58",
+   "sha256": "0q29h3y6q1xkz2jx9bvrk8nvmisv1di2l79yc3zrw5k4hirq8j2a"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "5bf9ba6009226b95e5ba0f50489ccced475753e3",
+   "sha256": "1x4wnsshf9h10mp51x92vs5rxw5had4gmw6zz4f53czx1ymcv16a"
+  }
+ },
+ {
+  "ename": "elmine",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1xkx1wwrzd2dl13z8n4qh3gl202j0i9crab5b3788z8mq0g4v4bn",
+  "fetcher": "github",
+  "repo": "leoc/elmine",
+  "unstable": {
+   "version": [
+    20190212,
+    1740
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "2f020e41940b182deeca39786a3092a2d68b5eb7",
+   "sha256": "0x2av6zjd4kkyzxm2hcwjx9x8j2fzqg85pka57hqpk2fhfhsmy3s"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "091f61c70c9e7630a74b7b127488051d143a35e7",
+   "sha256": "080nnw6ddsczbm7gk50x4dkahi77fsybfiki5iyp39fjpa7lfzq3"
+  }
+ },
+ {
+  "ename": "elnode",
+  "commit": "987a93afa134fdda466fbdc6dd9c48a572b0be61",
+  "sha256": "11avrs18cjlk6v2y4y202ay38375pdzh49lizy7w1w2mwy0q40am",
+  "fetcher": "github",
+  "repo": "jcaw/elnode",
+  "unstable": {
+   "version": [
+    20190702,
+    1509
+   ],
+   "deps": [
+    "creole",
+    "dash",
+    "db",
+    "fakir",
+    "kv",
+    "noflet",
+    "s",
+    "web"
+   ],
+   "commit": "29ef0f51a65a24fca7fdcdb4140d2e4556e4bb29",
+   "sha256": "1bks7aakhvdab56gbsa44ca9kbilajisdd9bns485d9wr62d2lgj"
+  }
+ },
+ {
+  "ename": "elog",
+  "commit": "4f3d560bf56b1b4e7540dc5ae16258895c106f1f",
+  "sha256": "0hixsi60nf0khm9xmya3saf95ahn1gydp0l5wxawsc491qwg4vqd",
+  "fetcher": "github",
+  "repo": "lujun9972/elog",
+  "unstable": {
+   "version": [
+    20160724,
+    2255
+   ],
+   "deps": [
+    "eieio"
+   ],
+   "commit": "a67237d9813c7591614d95e2ef31cc5e5ed3f31b",
+   "sha256": "0alg5nbmq56zsc032pvah92h5fw155fbfjc275k9vbh915hs6y0w"
+  }
+ },
+ {
+  "ename": "elogcat",
+  "commit": "4855c75dc22a7089cf9e4fa80dbe0ccd2830fe83",
+  "sha256": "0sqdqlpg4firswr742nrb6b8sz3bpijf6pbxvandq3ddpm0rx9ia",
+  "fetcher": "github",
+  "repo": "youngker/elogcat.el",
+  "unstable": {
+   "version": [
+    20151121,
+    41
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "4f311b7a07565b0d060334bc68edb36f2bff703f",
+   "sha256": "1jcr8bxffvnfs0ym6zkgs79hd6a0m81r4x4jr3v5l9zwxw04sy15"
+  }
+ },
+ {
+  "ename": "eloud",
+  "commit": "f1e80fba9bc541594129756f5c668f3192919bc8",
+  "sha256": "1h8wd5mfi1cn9bzrckgc5mdrr5jkqsx92ay008p650wvjl689rn2",
+  "fetcher": "github",
+  "repo": "smythp/eloud",
+  "unstable": {
+   "version": [
+    20190706,
+    1707
+   ],
+   "commit": "b8f4af1f652268d73281de91fb333b5984970847",
+   "sha256": "0sdzn8546ww3x4q4c9h69i9wdr51mjq19vi6r3bbba8iwl2rf67w"
+  }
+ },
+ {
+  "ename": "elpa-audit",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "18a8n22g53d8fxzr3snb2px28gvxbkx44grrx8lywaprz1f1lwdi",
+  "fetcher": "github",
+  "repo": "purcell/elpa-audit",
+  "unstable": {
+   "version": [
+    20141023,
+    1331
+   ],
+   "commit": "727da50e626977351aff2675b6540a36818bbbe6",
+   "sha256": "0wlhdzsrlj266jfvp925zrgzg2mxfba93klgky0hc8zialmmb50b"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "a7a1806278c73ea6cb6d235714e7bc8088971df5",
+   "sha256": "1q4krfrc2dy0vr7q148msfpkcwj55mlsrn4n5xjnya4xj0134ib7"
+  }
+ },
+ {
+  "ename": "elpa-clone",
+  "commit": "11861edd9c7f9deebd44fd1f8ef648e7a04caf2b",
+  "sha256": "172gpmpwf75y41n3v05l47w34x83vy63bqk97fd8a6b4dkj91lqa",
+  "fetcher": "github",
+  "repo": "dochang/elpa-clone",
+  "unstable": {
+   "version": [
+    20191006,
+    1953
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "827e2723b123618aaa32642d78c447cf2979a00a",
+   "sha256": "08psgia9vwwil16nymy0z12p823in3bxf9k7phjrmdicqqc01k42"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    9
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "827e2723b123618aaa32642d78c447cf2979a00a",
+   "sha256": "08psgia9vwwil16nymy0z12p823in3bxf9k7phjrmdicqqc01k42"
+  }
+ },
+ {
+  "ename": "elpa-deploy",
+  "commit": "d1708e6fa8778a79cd2423a56497140e3302b579",
+  "sha256": "1yv4sfipaxqgx3zwjfr3wzc25f59pl03snq0ja2s13r7l5kg6im8",
+  "fetcher": "github",
+  "repo": "oitofelix/elpa-deploy",
+  "unstable": {
+   "version": [
+    20191022,
+    718
+   ],
+   "deps": [
+    "f"
+   ],
+   "commit": "f5126a2da1e0e52981fad9c12028814be80328c2",
+   "sha256": "0s1cv983cgz8iysjllqbpbq80bcmsynqb6d3c8z177xqvvr4zaw8"
+  }
+ },
+ {
+  "ename": "elpa-mirror",
+  "commit": "d64ce7042c45f29fb394be25ce415912182bac8b",
+  "sha256": "1jnviav2ybr13cgllg26kfjrwrl25adggnqiiwyjwgbbzxfycah8",
+  "fetcher": "github",
+  "repo": "redguardtoo/elpa-mirror",
+  "unstable": {
+   "version": [
+    20200502,
+    115
+   ],
+   "commit": "9b25a8a2619e1f723528e8a093d31181223d5c85",
+   "sha256": "0frafk7a86l2g02c1c6vrinp609v480klhkh3y823b5k4bx3m3b7"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    1
+   ],
+   "commit": "83a38b5721c459d311833522903de96f874e1a4e",
+   "sha256": "0j2nk1nhbihfqajkmzp3501mhv5617qhb7qbj46qz8azs8a1dvri"
+  }
+ },
+ {
+  "ename": "elpher",
+  "commit": "d87a0f3142e0a59842608576961707c98374f954",
+  "sha256": "1i52q6xsyabl8gg8cd29d24gnw6aac69pjif2yh0rijxvbcl2a86",
+  "fetcher": "git",
+  "url": "git://thelambdalab.xyz/elpher.git",
+  "unstable": {
+   "version": [
+    20200516,
+    1232
+   ],
+   "commit": "bea10793f68037947b6fec30a86316ca2123bbfa",
+   "sha256": "0n5z9vf5yzmdccmzfvs7xb6gxvlvgsfcdfw8m25zi1lajpjajhq6"
+  },
+  "stable": {
+   "version": [
+    2,
+    7,
+    1
+   ],
+   "commit": "bea10793f68037947b6fec30a86316ca2123bbfa",
+   "sha256": "0n5z9vf5yzmdccmzfvs7xb6gxvlvgsfcdfw8m25zi1lajpjajhq6"
+  }
+ },
+ {
+  "ename": "elpl",
+  "commit": "b1e3a1b614f6ad19bcfaa414d9faf0b70236aa3d",
+  "sha256": "0lzxl19mr56p28jh99k1sp1f1r9idl32im6b847sbw6mqx47p5mx",
+  "fetcher": "github",
+  "repo": "twlz0ne/elpl",
+  "unstable": {
+   "version": [
+    20191229,
+    1929
+   ],
+   "commit": "48ecee2aa7b3d085a3deff809fb3ae31ae4ef9dd",
+   "sha256": "06xqww1r3i2hlr4hyg4n2l9zbpiki3g90b51jylaiabj4gqfswzv"
+  }
+ },
+ {
+  "ename": "elpy",
+  "commit": "1d8fcd8745bb15402c9f3b6f4573ea151415237a",
+  "sha256": "1ri3dwnkw005plj1g5grmmq9np41sqk4s2v18pwsvr18ysnq6nnr",
+  "fetcher": "github",
+  "repo": "jorgenschaefer/elpy",
+  "unstable": {
+   "version": [
+    20200510,
+    1559
+   ],
+   "deps": [
+    "company",
+    "highlight-indentation",
+    "pyvenv",
+    "s",
+    "yasnippet"
+   ],
+   "commit": "6b7db2f23a9f248fd756e0bc537fd8d53d98eb96",
+   "sha256": "044qm7kgdnsh4yipxklyfvkrvzgw4abn6gjawkkvgniii2pf39hj"
+  },
+  "stable": {
+   "version": [
+    1,
+    33,
+    0
+   ],
+   "deps": [
+    "company",
+    "highlight-indentation",
+    "pyvenv",
+    "s",
+    "yasnippet"
+   ],
+   "commit": "b69ae7652e5efdda2e3dc650cd425b987ddd65ad",
+   "sha256": "1g9x67dvg5al6i9hnjcyi0zjsz71iv2jbinpzj7gcx77d0dn3cpk"
+  }
+ },
+ {
+  "ename": "elpygen",
+  "commit": "e670bd79a85c4e2a9ca3355feb8aaefa709f49cb",
+  "sha256": "01fak1dz9mna3p4c2r0scb0j10qk3lvpq270jy6rvzlcbwri4akl",
+  "fetcher": "github",
+  "repo": "vkazanov/elpygen",
+  "unstable": {
+   "version": [
+    20171225,
+    1736
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "21929c997a05968f9eefe52b85a76ceaab3b0d81",
+   "sha256": "093ck4dkdvbgafb1bmkmszg1ba81ns5kjbk2iq2b5p9dvfcjjr3k"
+  }
+ },
+ {
+  "ename": "elquery",
+  "commit": "121f7d2091b83143402b44542db12e8f78275103",
+  "sha256": "19yik9w4kcj7i9d3bwwdszznwcrh75hxd0540iqk5by861z5f3zr",
+  "fetcher": "github",
+  "repo": "AdamNiederer/elquery",
+  "unstable": {
+   "version": [
+    20180917,
+    2217
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "eac429d8550fbf1582c57d5e16fed9f320d6eb30",
+   "sha256": "1jkbrv5r5vzqjhadb4dcgks47gaj7aavzdkzc5gjn5zv5fmm1in2"
+  }
+ },
+ {
+  "ename": "elsa",
+  "commit": "f126c49fe01a1c21aca0f45643d44ecf4c3ad95b",
+  "sha256": "0g8l61fg9krqakp6fjvm6jr1lss3mll707rknhm5d2grr6ik3lvl",
+  "fetcher": "github",
+  "repo": "emacs-elsa/Elsa",
+  "unstable": {
+   "version": [
+    20200225,
+    1440
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "f",
+    "trinary"
+   ],
+   "commit": "5ac373088eca10581e848ad42f5e278aedcd85c0",
+   "sha256": "11q5bh1mxc3z8a2zxs157pf7aqld9vddcffibgawh4r8q661ys03"
+  }
+ },
+ {
+  "ename": "elscreen",
+  "commit": "e6140694c1dea0a573586d23d1f63d46c9b22936",
+  "sha256": "1mlqbw14ilk6d3ba38kfw50pnlhb9f6sm5hy9dw58gp59siark5s",
+  "fetcher": "github",
+  "repo": "knu/elscreen",
+  "unstable": {
+   "version": [
+    20181009,
+    451
+   ],
+   "commit": "cc58337faf5ba1eae7e87f75f6ff3758675688f2",
+   "sha256": "15kffci7qlhjwz1rlr0zg0z9rq0vlsxy295dvg96wiiz4fvs4jk2"
+  },
+  "stable": {
+   "version": [
+    20180321
+   ],
+   "commit": "cc58337faf5ba1eae7e87f75f6ff3758675688f2",
+   "sha256": "15kffci7qlhjwz1rlr0zg0z9rq0vlsxy295dvg96wiiz4fvs4jk2"
+  }
+ },
+ {
+  "ename": "elscreen-buffer-group",
+  "commit": "9c6fedb7b6ef58089da4b35ad115f699b4b24ff2",
+  "sha256": "1clmhpk9zp6hsgz6a4jpmbrr9fr6k8b324s0x61n5yi4yzgdmc0v",
+  "fetcher": "github",
+  "repo": "jeffgran/elscreen-buffer-group",
+  "unstable": {
+   "version": [
+    20200109,
+    2338
+   ],
+   "deps": [
+    "cl-lib",
+    "elscreen"
+   ],
+   "commit": "b48e71d4782adfeb2958f227d78c04164d26e4bd",
+   "sha256": "13wfnkg42k1fk1dbf7zspxfp116xm1z4j6pc82wk8lz5k5xjlpzq"
+  }
+ },
+ {
+  "ename": "elscreen-fr",
+  "commit": "18730986df5eb9816eec7ad479abe1e338d3c66f",
+  "sha256": "1kmga1zz9mb3hxd2sxja2vz45pix5a52yl0g9z4vmak32x9rgqrm",
+  "fetcher": "github",
+  "repo": "rocher/elscreen-fr",
+  "unstable": {
+   "version": [
+    20160920,
+    953
+   ],
+   "deps": [
+    "elscreen",
+    "seq"
+   ],
+   "commit": "6dc77e1d3f17b3f76da5ccf92b715572aa55fb85",
+   "sha256": "18d4mz6sk1zvcl80115fy0ar358dqkwb3khgxsn71a67yxg9db15"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "deps": [
+    "elscreen",
+    "seq"
+   ],
+   "commit": "b9c11f80d277086d5d5bf88623e15fc7adbbbe3c",
+   "sha256": "1dz8jqd2agh06hya59vbybrmgyhyz2rk6c9panrm49w37v0bwksb"
+  }
+ },
+ {
+  "ename": "elscreen-mew",
+  "commit": "47404ea3cfb591b780ca7e31095951a708b0a6b7",
+  "sha256": "06g4wcfjs036nn64ac0zsvr08cfmak2hyj83y7a0r35yxr1853w4",
+  "fetcher": "github",
+  "repo": "masutaka/elscreen-mew",
+  "unstable": {
+   "version": [
+    20160504,
+    1835
+   ],
+   "deps": [
+    "elscreen"
+   ],
+   "commit": "c90a23441d836da14a1cb12788432308ba58e2b6",
+   "sha256": "167kgbnh5q3pqirv0f7wpjn7yc76k8mz9qx45i7d4scmx8952d2g"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    2
+   ],
+   "deps": [
+    "elscreen"
+   ],
+   "commit": "89871fad690ae161dc076e16ef481b1965612077",
+   "sha256": "14hwl5jzmm43qa4jbpsyswbz4hk1l2iwqh3ank6502bz58877k6c"
+  }
+ },
+ {
+  "ename": "elscreen-multi-term",
+  "commit": "7a24477cf83df7da931fa33c622ef720839529d2",
+  "sha256": "1zwrzblkag1d18xz450b7khsdssvsxyl1x6a682vy0dkn1y5qh1n",
+  "fetcher": "github",
+  "repo": "wamei/elscreen-multi-term",
+  "unstable": {
+   "version": [
+    20200417,
+    821
+   ],
+   "deps": [
+    "elscreen",
+    "multi-term"
+   ],
+   "commit": "4ea89bae0444d9d4377515929f76cb3e98140f1f",
+   "sha256": "0j5dpikjxwn1679ndy894g55qm9hs0n65lqyxx483h584nqxsdkg"
+  }
+ },
+ {
+  "ename": "elscreen-separate-buffer-list",
+  "commit": "9f5e5c8e2cd45a25e47c74bef59b9114aa7685eb",
+  "sha256": "1d8kc137cd8i3wglir1rlvk7w8mrdhd3xvcihi2f2f2g5nh2n5jk",
+  "fetcher": "github",
+  "repo": "wamei/elscreen-separate-buffer-list",
+  "unstable": {
+   "version": [
+    20161107,
+    358
+   ],
+   "deps": [
+    "elscreen"
+   ],
+   "commit": "7652d827aa1b8c1b04303c5b4b0bda5e8f85565e",
+   "sha256": "1cpmpms3r9lywmxgciz4xq7vjw2c1mxmpd89shssqck16563zwxf"
+  }
+ },
+ {
+  "ename": "elscreen-tab",
+  "commit": "06a8348c6911936e16a98cf216578ea148e20e5d",
+  "sha256": "18krbs462cwi3pf72kn1zf1jf4gv9n3ffdg4v5bgb19i69sq7spi",
+  "fetcher": "github",
+  "repo": "aki-s/elscreen-tab",
+  "unstable": {
+   "version": [
+    20190203,
+    1619
+   ],
+   "deps": [
+    "dash",
+    "elscreen"
+   ],
+   "commit": "da79fb0b9ead2402662ff8e163039635aaae2413",
+   "sha256": "18zzp7ziawb2qb5qlmn9b85pfx4h6ldfxdhv9nr72njgrfp1q5al"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "dash",
+    "elscreen"
+   ],
+   "commit": "29d7a65c3e134dd476049c9aebc8d029238e71f7",
+   "sha256": "0303i61m1qg65d3i3hsy7pzdhw0icpx3im99qkfmy6lxi4h9nd0p"
+  }
+ },
+ {
+  "ename": "elvish-mode",
+  "commit": "0fc724072702a565af471f9ae523a1e6e48e3f04",
+  "sha256": "1f5pyadmbh2ldd51srvlhbjq2849f1f0s8qmpjnsz9bc986yga34",
+  "fetcher": "github",
+  "repo": "ALSchwalm/elvish-mode",
+  "unstable": {
+   "version": [
+    20180809,
+    1612
+   ],
+   "commit": "c3a7e31564256b9755b1ab9fb40d32ad78cd1ad2",
+   "sha256": "0dxa8g49fq4h1ab3sawnbgy1fxaxxsdac3l6im34qfw4km8brp9y"
+  }
+ },
+ {
+  "ename": "elwm",
+  "commit": "0eb45a6141b797243973695be4c0582c9ad6965d",
+  "sha256": "0rf663ih3lfg4n4pj4dpp133967zha5m1wr46riaxpha7xr59al9",
+  "fetcher": "github",
+  "repo": "Fuco1/elwm",
+  "unstable": {
+   "version": [
+    20150817,
+    1007
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "c33b183f006ad476c3a44dab316f580f8b369930",
+   "sha256": "1k7npf93xbmrsq607x8zlgrpzqvplgia3ixz5w1lr1jlv1m2m8x2"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "c33b183f006ad476c3a44dab316f580f8b369930",
+   "sha256": "1k7npf93xbmrsq607x8zlgrpzqvplgia3ixz5w1lr1jlv1m2m8x2"
+  }
+ },
+ {
+  "ename": "elx",
+  "commit": "57a2fb9524df3fdfdc54c403112e12bd70888b23",
+  "sha256": "008nwa2gn3d2ayr8023pxyvph52gh9m56f77h41hp8hcw6hbdwrz",
+  "fetcher": "github",
+  "repo": "emacscollective/elx",
+  "unstable": {
+   "version": [
+    20200422,
+    1352
+   ],
+   "commit": "d5ebd8ab6439fea3dcae0bcaece6e914f4ee1f6c",
+   "sha256": "1h1dx6dpwr4cml2a57mz3lq4f746cja007ckrpk3vii9ap413hf8"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    0
+   ],
+   "commit": "4cbdcd79524db4a71abbf761a3945617086f5d09",
+   "sha256": "1gb2sh2mcx8va8lgyc46pch9fswfm761935806myi9fl1v67ayk6"
+  }
+ },
+ {
+  "ename": "emacsc",
+  "commit": "acc9b816796b9f142c53f90593952b43c962d2d8",
+  "sha256": "1fbf9al3yds0il18jz6hbpj1fsjlpb1kgp450gb6r09lc46x77mk",
+  "fetcher": "github",
+  "repo": "knu/emacsc",
+  "unstable": {
+   "version": [
+    20190917,
+    1102
+   ],
+   "commit": "57940b93881efabb375df18093b99800bfb5d5f7",
+   "sha256": "032g44dad90cas2b80cxhzbim2sxd8rliyxf65ccfrqi1xg3vkff"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    20190917
+   ],
+   "commit": "57940b93881efabb375df18093b99800bfb5d5f7",
+   "sha256": "032g44dad90cas2b80cxhzbim2sxd8rliyxf65ccfrqi1xg3vkff"
+  }
+ },
+ {
+  "ename": "emacsist-view",
+  "commit": "d2157e14d68fa2875c6d5c40c20a39b9a2431c10",
+  "sha256": "0lf280ppi3zksqvx81y8mm9479j26kd5wywfghhwk36kz410hk99",
+  "fetcher": "github",
+  "repo": "lujun9972/emacsist-view",
+  "unstable": {
+   "version": [
+    20160426,
+    1223
+   ],
+   "commit": "f67761259ed779a9bc95c9a4e0474522990c5c6b",
+   "sha256": "1vhs9725fyl2j65lk014qz76iv4hsvyim06361h4lai634hp7ck6"
+  }
+ },
+ {
+  "ename": "emacsql",
+  "commit": "9c3b6175b5c64f03b0b9dfdc10f393081d681309",
+  "sha256": "0c2d0kymzr53wh87fq1wy2x5ahfsymz0cw8qbrqx0k613l3mpr38",
+  "fetcher": "github",
+  "repo": "skeeto/emacsql",
+  "unstable": {
+   "version": [
+    20190625,
+    1859
+   ],
+   "commit": "a118b6c95af1306f0288a383d274b5dd93efbbda",
+   "sha256": "1qz74rk2pskpc1k6kdpqv823i5zc39i885rww05n8lrqw456cpn0"
+  },
+  "stable": {
+   "version": [
+    3,
+    0,
+    0
+   ],
+   "commit": "8c5f095458aa37e4146b80d9319ee63571734127",
+   "sha256": "1c84gxr1majqj4b59wgdy3lzm3ap66w9qsrnkx8hdbk9895ak81g"
+  }
+ },
+ {
+  "ename": "emacsql-mysql",
+  "commit": "9cc47c05fb0d282531c9560252090586e9f6196e",
+  "sha256": "1c20zhpdzfqjds6kcjhiq1m5ch53fsx6n1xk30i35kkg1wxaaqzy",
+  "fetcher": "github",
+  "repo": "skeeto/emacsql",
+  "unstable": {
+   "version": [
+    20171219,
+    227
+   ],
+   "deps": [
+    "emacsql"
+   ],
+   "commit": "a118b6c95af1306f0288a383d274b5dd93efbbda",
+   "sha256": "1qz74rk2pskpc1k6kdpqv823i5zc39i885rww05n8lrqw456cpn0"
+  },
+  "stable": {
+   "version": [
+    3,
+    0,
+    0
+   ],
+   "deps": [
+    "emacsql"
+   ],
+   "commit": "8c5f095458aa37e4146b80d9319ee63571734127",
+   "sha256": "1c84gxr1majqj4b59wgdy3lzm3ap66w9qsrnkx8hdbk9895ak81g"
+  }
+ },
+ {
+  "ename": "emacsql-psql",
+  "commit": "9cc47c05fb0d282531c9560252090586e9f6196e",
+  "sha256": "1aa1g9jyjmz6w0lmi2cf67926ad3xvs0qsg7lrccnllr9k0flly3",
+  "fetcher": "github",
+  "repo": "skeeto/emacsql",
+  "unstable": {
+   "version": [
+    20171219,
+    227
+   ],
+   "deps": [
+    "emacsql"
+   ],
+   "commit": "a118b6c95af1306f0288a383d274b5dd93efbbda",
+   "sha256": "1qz74rk2pskpc1k6kdpqv823i5zc39i885rww05n8lrqw456cpn0"
+  },
+  "stable": {
+   "version": [
+    3,
+    0,
+    0
+   ],
+   "deps": [
+    "emacsql"
+   ],
+   "commit": "8c5f095458aa37e4146b80d9319ee63571734127",
+   "sha256": "1c84gxr1majqj4b59wgdy3lzm3ap66w9qsrnkx8hdbk9895ak81g"
+  }
+ },
+ {
+  "ename": "emacsql-sqlite",
+  "commit": "3cfa28c7314fa57fa9a3aaaadf9ef83f8ae541a9",
+  "sha256": "1y81nabzzb9f7b8azb9giy23ckywcbrrg4b88gw5qyjizbb3h70x",
+  "fetcher": "github",
+  "repo": "skeeto/emacsql",
+  "unstable": {
+   "version": [
+    20190727,
+    1710
+   ],
+   "deps": [
+    "emacsql"
+   ],
+   "commit": "a118b6c95af1306f0288a383d274b5dd93efbbda",
+   "sha256": "1qz74rk2pskpc1k6kdpqv823i5zc39i885rww05n8lrqw456cpn0"
+  },
+  "stable": {
+   "version": [
+    3,
+    0,
+    0
+   ],
+   "deps": [
+    "emacsql"
+   ],
+   "commit": "8c5f095458aa37e4146b80d9319ee63571734127",
+   "sha256": "1c84gxr1majqj4b59wgdy3lzm3ap66w9qsrnkx8hdbk9895ak81g"
+  }
+ },
+ {
+  "ename": "emacsql-sqlite3",
+  "commit": "5a25cf38b4f39b1c4d259143f1586fdad605b101",
+  "sha256": "06zm6vs6sry2lwksikxp0rjyvs1rgiqyapyw7m8hgy336h810v84",
+  "fetcher": "github",
+  "repo": "cireu/emacsql-sqlite3",
+  "unstable": {
+   "version": [
+    20200117,
+    1922
+   ],
+   "deps": [
+    "emacsql"
+   ],
+   "commit": "82b90d493dba404473b515ffd670e0dd0dba1248",
+   "sha256": "1azv9mllvyjzqjkjw9n5rmdj79fa8srbpmx61w6vm25bl9f62vpf"
+  }
+ },
+ {
+  "ename": "emacsshot",
+  "commit": "d94b48f1d01c6f0e7bb2169a4a3181eae3f79c23",
+  "sha256": "1v5cd278fls5hib6f4arv0g5mzjhv22lslbb9s2p274dk4pn1ggc",
+  "fetcher": "gitlab",
+  "repo": "marcowahl/emacsshot",
+  "unstable": {
+   "version": [
+    20191206,
+    944
+   ],
+   "commit": "fe958b11056f3c671ebdd604d5aa574323284ca5",
+   "sha256": "0zg52b3hl0rp9hjz04546kngssxs0l64dm01bwp9hapy7pichbci"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "commit": "f0add6820d250875f7d7c21aa5d813dc73dbcf96",
+   "sha256": "18bnw6yb41ki1xvkhi07v7fqx3var928majgd6613ra9nirnyqnj"
+  }
+ },
+ {
+  "ename": "emamux",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "0y75dnaz65fwk8d9l6n1bkbj32rcmzaf58fhj686b1n55bsz3xz6",
+  "fetcher": "github",
+  "repo": "emacsorphanage/emamux",
+  "unstable": {
+   "version": [
+    20200315,
+    1220
+   ],
+   "commit": "6172131d78038f0b1490e24bac60534bf4ad3b30",
+   "sha256": "1cv9b15lj2663aik9s0s2bj05vv4zfzz2w7wjbj6s5vlnf5byfnl"
+  },
+  "stable": {
+   "version": [
+    0,
+    14
+   ],
+   "commit": "573dd1cf18584a1fd240efb16c7726b6fd790b73",
+   "sha256": "19y69qw79miim9cz5ji54gwspjkcp9g2c1xr5s7jj2fiabnxax6b"
+  }
+ },
+ {
+  "ename": "emamux-ruby-test",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "1lk2fpqnmzh1gsbp9pkh36lgr76sf2mbf12577xs4scia7xr29bc",
+  "fetcher": "github",
+  "repo": "emacsorphanage/emamux-ruby-test",
+  "unstable": {
+   "version": [
+    20130812,
+    1639
+   ],
+   "deps": [
+    "emamux",
+    "projectile"
+   ],
+   "commit": "23b73c650573b340351a919da3da416acfc2ac84",
+   "sha256": "1idsvilsvlxh72waalhl8vrsmh0vfvz56qcv56fc2c0pb1i90icn"
+  }
+ },
+ {
+  "ename": "emaps",
+  "commit": "4faeda02aabc0b6c5003cdf5d1fdfca0fd71b0d7",
+  "sha256": "151rh6lyqi0ps2w022shzjj67nkg6y4m1nfj90qyc7jgl64qb9qw",
+  "fetcher": "github",
+  "repo": "GuiltyDolphin/emaps",
+  "unstable": {
+   "version": [
+    20200508,
+    1759
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "7c561f3ded2015ed3774e5784059d6601082743e",
+   "sha256": "0x4i2c493zb7cf0cnixsxiwl409faljd5sk05flkq88wjm176dcm"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "7c561f3ded2015ed3774e5784059d6601082743e",
+   "sha256": "0x4i2c493zb7cf0cnixsxiwl409faljd5sk05flkq88wjm176dcm"
+  }
+ },
+ {
+  "ename": "ember-mode",
+  "commit": "9ac1eef4ad87b1b6b6d8e63d340ba03dc013425b",
+  "sha256": "0fwd34cim29dg802ibsfd120px9sj54d4wzp3ggmjjzwkl9ky7dx",
+  "fetcher": "github",
+  "repo": "madnificent/ember-mode",
+  "unstable": {
+   "version": [
+    20200208,
+    1423
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a587c423041b2fcb065fd5b6a03b2899b764e462",
+   "sha256": "0x5fnrflbgafwcqr6v0jj6522j2j086s7msh2mr6yysmrfjhx2zk"
+  }
+ },
+ {
+  "ename": "ember-yasnippets",
+  "commit": "6c37a13d56e9a0a4e7e2c11349ed87610a0f6b2c",
+  "sha256": "1jwkzcqcpy7ykdjhsqmg8ds6qyl4jglyjbgg7v301x068dsxkja6",
+  "fetcher": "github",
+  "repo": "ronco/ember-yasnippets.el",
+  "unstable": {
+   "version": [
+    20160526,
+    1658
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "3b5bd01569646237bf1b540d097e12f9118b67f4",
+   "sha256": "0g7hp1aq0zznbhd234dpbblnagn34fxdasc5v4lfhm5ykw5xyb5x"
+  }
+ },
+ {
+  "ename": "embrace",
+  "commit": "e8f07e3b5ba4ec4b0b79fba5a2cca5a3986218b6",
+  "sha256": "1w9zp9n91703d6jd4adl2xk574wsr7fm2a9v32b1i9bi3hr0hdjc",
+  "fetcher": "github",
+  "repo": "cute-jumper/embrace.el",
+  "unstable": {
+   "version": [
+    20171031,
+    1833
+   ],
+   "deps": [
+    "cl-lib",
+    "expand-region"
+   ],
+   "commit": "dd5da196e5bcc5e6d87e1937eca0c21da4334ef2",
+   "sha256": "1m0qyipkp5ydgcav8d0m58fbj1gilipbj7g8mg40iajr8wfqcjdc"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    4
+   ],
+   "deps": [
+    "cl-lib",
+    "expand-region"
+   ],
+   "commit": "dd5da196e5bcc5e6d87e1937eca0c21da4334ef2",
+   "sha256": "1m0qyipkp5ydgcav8d0m58fbj1gilipbj7g8mg40iajr8wfqcjdc"
+  }
+ },
+ {
+  "ename": "emidje",
+  "commit": "5d64b3b42b4b9acd3e9d84921df287f3217db83e",
+  "sha256": "1p2aa4wl2465gm7ljgr5lbvxfgx0g1w1170zdv3596hi07mccabs",
+  "fetcher": "github",
+  "repo": "nubank/emidje",
+  "unstable": {
+   "version": [
+    20190209,
+    1726
+   ],
+   "deps": [
+    "cider",
+    "magit-popup",
+    "seq"
+   ],
+   "commit": "7e92f053964d925c97dc8cca8d4d70a3030021db",
+   "sha256": "0xg2bw9vzwvkx6xh4k2n6qhyhqg5iifl6aa0s7svvdnw35x00hv2"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "cider",
+    "seq"
+   ],
+   "commit": "e8577698bade8a8ea6bf394ab9a441e982058f19",
+   "sha256": "1yz84dnd7jmnhgyssk405mw1c4p55fvfxwx03libj4ik1wq8nj8i"
+  }
+ },
+ {
+  "ename": "emlib",
+  "commit": "46b3738975c8082d9eb6da9fe733edb353aa7069",
+  "sha256": "02l135v3pqpf6ngfq11h4rc843iwh3dgi4rr3gcc63pjl4ws2w2c",
+  "fetcher": "github",
+  "repo": "narendraj9/emlib",
+  "unstable": {
+   "version": [
+    20161126,
+    1523
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "dea2af00f551ea580c641d86dd69219f7d4f3685",
+   "sha256": "0p52pkq3wvnhg0l7cribhc39zl1cjjxgw9qzpmwd0jw1g1lslwbm"
+  }
+ },
+ {
+  "ename": "emmet-mode",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "0wjv4hqddjvbdrmsxzav5rpwnm2n6lr86jzkrnav8f2kyzypdsnr",
+  "fetcher": "github",
+  "repo": "smihica/emmet-mode",
+  "unstable": {
+   "version": [
+    20180613,
+    341
+   ],
+   "commit": "1acb821e0142136344ccf40c1e5fb664d7db2e70",
+   "sha256": "1p25h191bm0h5b3w5apg7wks51k7pb7h4dlww4jbl9ri4d33fzcl"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    8
+   ],
+   "commit": "bf76d717c60f33d223cdac35513105e9f9244885",
+   "sha256": "1dsa85bk33j90h1ypaz1ylqh9yp2xvlga237h3kwa5y3sb0d5ydi"
+  }
+ },
+ {
+  "ename": "emms",
+  "commit": "caaa21f235c4864f6008fb454d0a970a2fd22a86",
+  "sha256": "1xpry8h96gvjnc0v8x0vk5dnmlq1r7m3ljpampdwv9pfwl95fh94",
+  "fetcher": "git",
+  "url": "https://git.savannah.gnu.org/git/emms.git",
+  "unstable": {
+   "version": [
+    20200508,
+    1955
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "64b9ee9c86067118b2d0055f467e60bc211aa59d",
+   "sha256": "16h9hb6d621mfi7805p2iaw814n2pm2g659wcjqxpvm5x5hpn55v"
+  },
+  "stable": {
+   "version": [
+    5,
+    4
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f4924c2e77bdc5806495a74832fba60b2c30aca1",
+   "sha256": "01d8akv046igc13d5ki9wz36v51dlijab892ki5s5c4ysgj42wkr"
+  }
+ },
+ {
+  "ename": "emms-bilibili",
+  "commit": "533f96d1e68eda20b2d2e7f8eb3e7fa118904970",
+  "sha256": "1mx3fn2x526np8awjn0ydsqh59b4aznf3sig410fbr6wk6pa6y47",
+  "fetcher": "github",
+  "repo": "0xDEATHCODE/emms-bilibili",
+  "unstable": {
+   "version": [
+    20180103,
+    418
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "294bca3dfc42fe3a55fb326ab39bc0fcfc8c5090",
+   "sha256": "0q8z3q1agwgb3d0kpvac7a98p3q4ljjnv404cf9kihjjfxvh4vm5"
+  }
+ },
+ {
+  "ename": "emms-info-mediainfo",
+  "commit": "d08c28c6ff4caf14f0bf4b0f40f16660dac2d5d9",
+  "sha256": "17x8vvfhx739hcj9j1nh6j4r6zqnwa5zq9zpi9b6lxc8979k3m4w",
+  "fetcher": "github",
+  "repo": "fgallina/emms-info-mediainfo",
+  "unstable": {
+   "version": [
+    20131223,
+    1300
+   ],
+   "deps": [
+    "emms"
+   ],
+   "commit": "bce16eae9eacd38719fea62a9755225a888da59d",
+   "sha256": "07qbbs2i05bqndr4dxb84z50wav8ffbc56f6saw6pdx6n0sw6n6n"
+  }
+ },
+ {
+  "ename": "emms-mark-ext",
+  "commit": "36b7292160d3dab1a684d09c848a6b0f68b31add",
+  "sha256": "13h6hy8y0as0xfc1cg8balw63as81fzar32q9h4zhnndl3hc1081",
+  "fetcher": "github",
+  "repo": "vapniks/emms-mark-ext",
+  "unstable": {
+   "version": [
+    20130529,
+    327
+   ],
+   "deps": [
+    "emms"
+   ],
+   "commit": "ec68129e3e9e469e5bf160c6a1b7030e322f3541",
+   "sha256": "03a7sn8pl0pnr05rmrrbw4hjyi8vpjqbvkvh0fqnij913a6qc64l"
+  }
+ },
+ {
+  "ename": "emms-mode-line-cycle",
+  "commit": "dab676acd774616a32a0373f30647f3cb4522afc",
+  "sha256": "1jdmfh1i9v84iy7bj2dbc3s2wfzkrby3pabd99gnqzd9gn1cn8ca",
+  "fetcher": "github",
+  "repo": "momomo5717/emms-mode-line-cycle",
+  "unstable": {
+   "version": [
+    20160221,
+    1120
+   ],
+   "deps": [
+    "emms"
+   ],
+   "commit": "2c2f395e484a1d345050ddd61ff5fab71a92a6bc",
+   "sha256": "0q80f0plch6k4lhs8c9qm3mfycfbp3kn5sjrk9zxgxwnn901y9mp"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    5
+   ],
+   "deps": [
+    "emms"
+   ],
+   "commit": "2c2f395e484a1d345050ddd61ff5fab71a92a6bc",
+   "sha256": "0q80f0plch6k4lhs8c9qm3mfycfbp3kn5sjrk9zxgxwnn901y9mp"
+  }
+ },
+ {
+  "ename": "emms-player-mpv-jp-radios",
+  "commit": "09ba6da5057061f055d4a3212d167f9666618d4f",
+  "sha256": "0gdap5cv08pz370fl92v9lyvgkbbyjhp9wsc4kyjm4f4pwx9fybv",
+  "fetcher": "github",
+  "repo": "momomo5717/emms-player-mpv-jp-radios",
+  "unstable": {
+   "version": [
+    20180325,
+    1117
+   ],
+   "deps": [
+    "cl-lib",
+    "emms",
+    "emms-player-simple-mpv"
+   ],
+   "commit": "f6b37f5878c741124d5fca43c5b80af873541edd",
+   "sha256": "1sxzh1bhdwln7kcn07agayyhmgyrbmmhgc3f85336xybc6ljpqs8"
+  }
+ },
+ {
+  "ename": "emms-player-simple-mpv",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1lv1rhd5vya068mnnaysfh56raar79hf2g413ysrk3yhyajk6316",
+  "fetcher": "github",
+  "repo": "momomo5717/emms-player-simple-mpv",
+  "unstable": {
+   "version": [
+    20180316,
+    1549
+   ],
+   "deps": [
+    "cl-lib",
+    "emms"
+   ],
+   "commit": "101d120ccdee1c2c213fd2f0423c858b21649c00",
+   "sha256": "1i6rxkm0ra0jbkkwgkwxg3vk5xfl794h1gkgnlpscynz0v94b6ll"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "emms"
+   ],
+   "commit": "bcc056364df5f405716006a8b7bb90102a57f62f",
+   "sha256": "0kz31qsn3nrpi8r31nlxlkkkah0qcdkq9a9i9ypv4ky7pvnzx6m5"
+  }
+ },
+ {
+  "ename": "emms-soundcloud",
+  "commit": "19e423525255371cf479842885eca07e801f6d00",
+  "sha256": "0nf1f719m4pvxn0mf4qyx8mzwhrhv6kchnrpiy9clx520y8x3dqi",
+  "fetcher": "github",
+  "repo": "osener/emms-soundcloud",
+  "unstable": {
+   "version": [
+    20131221,
+    1145
+   ],
+   "deps": [
+    "emms",
+    "json"
+   ],
+   "commit": "87e5cbf9609d1f26c24dc834fdeb78b33d453c2b",
+   "sha256": "0nx5bb5fjmaa1nhkbfnhd1aydqrq390x4rl1vfh11ilnf52wzzld"
+  }
+ },
+ {
+  "ename": "emms-state",
+  "commit": "8f2798e22c6ccbadf73e65d8a8d901e47f55cb83",
+  "sha256": "080y02hxxqfn0a0dhq5vm0r020v2q3h1612a2zkq5fxi8ssvhp9i",
+  "fetcher": "github",
+  "repo": "alezost/emms-state.el",
+  "unstable": {
+   "version": [
+    20160504,
+    805
+   ],
+   "deps": [
+    "emms"
+   ],
+   "commit": "77930300222333b71eafd495cc1fee3a3585eb23",
+   "sha256": "1kipxa9ax8zi9qqk19mknpg7nnlzgr734kh9bnklydipwnsy00pi"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "emms"
+   ],
+   "commit": "77930300222333b71eafd495cc1fee3a3585eb23",
+   "sha256": "1kipxa9ax8zi9qqk19mknpg7nnlzgr734kh9bnklydipwnsy00pi"
+  }
+ },
+ {
+  "ename": "emoji-cheat-sheet-plus",
+  "commit": "ffbfae9577673ef8d50b55624f94288e315deba4",
+  "sha256": "1ciwlbw0ihm0p5gnnl3safcj7dxwiy53bkj8cmw3i334al0gjnnv",
+  "fetcher": "github",
+  "repo": "syl20bnr/emacs-emoji-cheat-sheet-plus",
+  "unstable": {
+   "version": [
+    20200202,
+    1404
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "ffcc84d7060dfa000148e7f8be4fd6701593a74f",
+   "sha256": "1na7mn9pgnwf9a1fbpb5k36aczzc7506ld5xm7mqpqgwshdxk0hq"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    2
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "ffcc84d7060dfa000148e7f8be4fd6701593a74f",
+   "sha256": "1na7mn9pgnwf9a1fbpb5k36aczzc7506ld5xm7mqpqgwshdxk0hq"
+  }
+ },
+ {
+  "ename": "emoji-display",
+  "commit": "2c34abbda5acbd52f4e79ce9f87f9ae0fa1e48d5",
+  "sha256": "04cf18z26d64l0sv8qkbxjixi2wbw23awd5fznvg1cs8ixss01j9",
+  "fetcher": "github",
+  "repo": "ikazuhiro/emoji-display",
+  "unstable": {
+   "version": [
+    20140117,
+    1013
+   ],
+   "commit": "bb4217f6400151a9cfa6d4524b8427f01feb5193",
+   "sha256": "0sh4q4sb4j58ryvvmlsx7scry9inzgv2ssa87vbyzpxq0435l229"
+  }
+ },
+ {
+  "ename": "emoji-fontset",
+  "commit": "60df435eb82fcc9a8a02a0a271bb6a2d5a161bc4",
+  "sha256": "19affsvlm1rzrzdh1k6xsv79icdkzx4izxivrd2ia6y2wcg9wc5d",
+  "fetcher": "github",
+  "repo": "zonuexe/emoji-fontset.el",
+  "unstable": {
+   "version": [
+    20160726,
+    1924
+   ],
+   "commit": "8f159e8073b9b57a07a54b549df687424eeb98ee",
+   "sha256": "1hwikjy4ah1zkb4aknc9yni3d9cqgvnh5n955bdljyp0lvpvvhpr"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "e460c9a08e48ec4103e38a7a04acae20880149a9",
+   "sha256": "0xdlqsrwdf0smi5z9rjj46nwrrfpl0gzanf0jmdg8zzn62l6ldck"
+  }
+ },
+ {
+  "ename": "emoji-github",
+  "commit": "64d18d6bb06d2d747b101845d3ed298787abaec0",
+  "sha256": "09b9kyx1zzi1i2m4isvnhb5526589vscv81xg35pgxwv6ilkky4z",
+  "fetcher": "github",
+  "repo": "jcs-elpa/emoji-github",
+  "unstable": {
+   "version": [
+    20200323,
+    233
+   ],
+   "deps": [
+    "emojify",
+    "request"
+   ],
+   "commit": "43f63c0dd64aae6c8054c2dad617bf810abdfadd",
+   "sha256": "0wcxsy3q8912kf87bn3mi2si010i5dd99yinf23nhb2nqvqgiw94"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "emojify",
+    "request"
+   ],
+   "commit": "5d1512fb30c65018a507ef549d92c668d8221da3",
+   "sha256": "00dj0kfllyhiklylj4cjcv64zjaxs6a4cc79f8pppmzvf1spivvz"
+  }
+ },
+ {
+  "ename": "emoji-recall",
+  "commit": "8f03b34d3e8e5edf9888c71b6e4bd2e1a5aec016",
+  "sha256": "06cahk2h6q3vlw2p4jmjrpzycxpm884p31yhbp77lagkqhs2fzbk",
+  "fetcher": "github",
+  "repo": "lujun9972/emoji-recall.el",
+  "unstable": {
+   "version": [
+    20160723,
+    2208
+   ],
+   "commit": "d9122f8fb1467309260109a1985cd14f18fdf631",
+   "sha256": "13ajzafm9wmddch8ipjjkv2p13fmyd0ghdr479lll5c7xff2051x"
+  }
+ },
+ {
+  "ename": "emojify",
+  "commit": "488d2751b5fd3bf00f5a6f0545530f44563b86d7",
+  "sha256": "1sgd32qm43hwby75a9q2pz1yfzj988i35d8p9f18zvbxypy7b2yp",
+  "fetcher": "github",
+  "repo": "iqbalansari/emacs-emojify",
+  "unstable": {
+   "version": [
+    20200513,
+    1627
+   ],
+   "deps": [
+    "ht",
+    "seq"
+   ],
+   "commit": "dfa3c6d060914c6082d6837da32df0c337330ee4",
+   "sha256": "0m963cn916m0xa8cb1yslkcla86a34dchwy3ism62a2r9swa7p6s"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "deps": [
+    "ht",
+    "seq"
+   ],
+   "commit": "302d16e9bac72faf94984e0c48ecd0e4b8d66738",
+   "sha256": "1fqnj5x7ivjkm5y927dqqnm85q5hzczlb0hrfpjalrhasa6ijsrm"
+  }
+ },
+ {
+  "ename": "emojify-logos",
+  "commit": "114d5596a7b36f47c150c413c6ecc74de36ca239",
+  "sha256": "0kgci1svi80xnz44bvh19si8bcjllrkm9rbd8761h77iylkqs3q5",
+  "fetcher": "github",
+  "repo": "mxgoldstein/emojify-logos",
+  "unstable": {
+   "version": [
+    20180814,
+    917
+   ],
+   "deps": [
+    "emojify"
+   ],
+   "commit": "a3e78bcbdf863092d4c9b026ac08bf7d1c7c0e8b",
+   "sha256": "1fhxf3nky9wlcn54q60f9254iawcccsrxw370q7cgpsrl1gj3dgp"
+  }
+ },
+ {
+  "ename": "empos",
+  "commit": "461f7849e7be986994dd1e7cf109b66e8c37c719",
+  "sha256": "0wbrszl9rq4is0ymxq9lxpqzlfg93gljh6almjy0hp3cs7pkzyl4",
+  "fetcher": "github",
+  "repo": "dimalik/empos",
+  "unstable": {
+   "version": [
+    20151011,
+    1916
+   ],
+   "commit": "7b99ad30e56937adb7e6349777e5a2045597d564",
+   "sha256": "0bm0cxnv7g2dzfvfhkyy16kzn6shvy9gzypiqyjj42ng54xmhs0n"
+  }
+ },
+ {
+  "ename": "emr",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "02a7yzv6vxdazi26wk1ijadrjffd4iaf1abhpv642xib86pgpfd6",
+  "fetcher": "github",
+  "repo": "Wilfred/emacs-refactor",
+  "unstable": {
+   "version": [
+    20200420,
+    721
+   ],
+   "deps": [
+    "cl-lib",
+    "clang-format",
+    "dash",
+    "iedit",
+    "list-utils",
+    "paredit",
+    "popup",
+    "projectile",
+    "s"
+   ],
+   "commit": "a8f6ab823453decf43f0764d02e554d05009a631",
+   "sha256": "0d1qd9jzmh0vg1in6q1xjlwq85sgds5lfvyg2wi6z8ci5a7m3ahs"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "cl-lib",
+    "clang-format",
+    "dash",
+    "iedit",
+    "list-utils",
+    "paredit",
+    "popup",
+    "projectile",
+    "s"
+   ],
+   "commit": "2b3606252d2dd29898d0ef702918eb13081b6c1a",
+   "sha256": "1yky7vlv91501xb43xk19rr8mxlvrsxhawsc98jivf64nad5dqay"
+  }
+ },
+ {
+  "ename": "enclose",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "1bkrv3cwhbiydgfjhmyjr96cvsgr9zi8n0ir1akgamccm2ln73d6",
+  "fetcher": "github",
+  "repo": "rejeep/enclose.el",
+  "unstable": {
+   "version": [
+    20121008,
+    1614
+   ],
+   "commit": "2747653e84af39017f503064bc66ed1812a77259",
+   "sha256": "0dz5xm05d7irh1j8iy08jk521p19cjai1kw68z2nngnyf1az7cim"
+  }
+ },
+ {
+  "ename": "encourage-mode",
+  "commit": "1e90146c03a3f85313e3d338c48547ccfb73f605",
+  "sha256": "0fwn6w7s61c08z0d8z3awclqrhszia9is30gm2kx4hwr9dhhwh63",
+  "fetcher": "github",
+  "repo": "halbtuerke/encourage-mode.el",
+  "unstable": {
+   "version": [
+    20151128,
+    905
+   ],
+   "commit": "99edacf2d94d168d3da0609860dc7253db7c9815",
+   "sha256": "0k5ns40s5nskn0zialwq96qll1v5k50lfa5xh8hxbpcamsfym6h8"
+  }
+ },
+ {
+  "ename": "engine-mode",
+  "commit": "ea1b5dfb6628cf17e77369f25341835aad425f54",
+  "sha256": "1gg7i93163m7k7lr3pnal1svymnhzwrfpfcdc0798d7ybv26gg8c",
+  "fetcher": "github",
+  "repo": "hrs/engine-mode",
+  "unstable": {
+   "version": [
+    20191105,
+    750
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "96b3488a6de2f50b8ba3a101e04ebcbe9821a989",
+   "sha256": "1xka8i4cdvp5r2v2mkli1zz17x1sdsnmszbhqav2rf94v656d91i"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "96b3488a6de2f50b8ba3a101e04ebcbe9821a989",
+   "sha256": "1xka8i4cdvp5r2v2mkli1zz17x1sdsnmszbhqav2rf94v656d91i"
+  }
+ },
+ {
+  "ename": "enh-ruby-mode",
+  "commit": "cd1ac1ce69b77b11f34c4175611a852e7ec0806c",
+  "sha256": "0r486yajjf7vsaz92ypxpfmz2nsvw9giffpxb9szj7fcry3nfdns",
+  "fetcher": "github",
+  "repo": "zenspider/enhanced-ruby-mode",
+  "unstable": {
+   "version": [
+    20191111,
+    2243
+   ],
+   "commit": "732331b99a0884dd7fc0149658d4090886857656",
+   "sha256": "12wip0l6xyqgvxvjvid1rh61yizk1r9y7xl1jz2sjds7kv6aw0kf"
+  },
+  "stable": {
+   "version": [
+    20191111
+   ],
+   "commit": "4e058f36a455c90816fd9615a4a7a63a8c8b8cc8",
+   "sha256": "1jpiyjb5291jk6pd649d6i8nxaazqjznb3zpksp7ykrqqgw4wgjm"
+  }
+ },
+ {
+  "ename": "enlive",
+  "commit": "388fa2580e687d9608b11cdc069841831b414b29",
+  "sha256": "1dyayk37zik12qfh8zbjmhsch64yqsx3acrlm7hcnavx465hmhnz",
+  "fetcher": "github",
+  "repo": "zweifisch/enlive",
+  "unstable": {
+   "version": [
+    20170725,
+    1417
+   ],
+   "commit": "604a8ca272b6889f114e2b5a13adb5b1dc4bae86",
+   "sha256": "1iwfb5hxhnp4rl3rh5yayik0xl2lg82klxkvqf29536pk8ip710m"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "commit": "60facaf8bc48b660d209551c0ce4d17e5c907ab8",
+   "sha256": "08j6b79vy8ry4ad1abk3hvxjbb4ylrhkvrbrnq1gcikl4h1p2v63"
+  }
+ },
+ {
+  "ename": "eno",
+  "commit": "2c01af1911a0c8856e3dee09b6d233f821d67814",
+  "sha256": "1agnkykmq8d6mw4cwdw772zzsrwdd28v8m37894w2c80cxmjjrbq",
+  "fetcher": "github",
+  "repo": "emacsattic/eno",
+  "unstable": {
+   "version": [
+    20191013,
+    1239
+   ],
+   "deps": [
+    "dash",
+    "edit-at-point"
+   ],
+   "commit": "c5c6193687c0bede1ddf507c430cf8b0a6d272d9",
+   "sha256": "1khi2x0v2f7kn74s5mszp4f5qsdp6v91b98y8gyzhrxic7n083q4"
+  }
+ },
+ {
+  "ename": "enotify",
+  "commit": "f10631b740eea56e7209d7e84f0da8613274ef1d",
+  "sha256": "0mii6m6zw9y8njgzi79rcf1n251iw7qz3yqjjij3c19rk3zpm5qi",
+  "fetcher": "github",
+  "repo": "laynor/enotify",
+  "unstable": {
+   "version": [
+    20130407,
+    1348
+   ],
+   "commit": "7fd2f48ef4ff32c8f013c634ea2dd6b1d1409f80",
+   "sha256": "0v5p97dvzrk3j59yjc6iny71j3fdw9bb8737wnnzm098ff42dfmd"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    3
+   ],
+   "commit": "75c84b53703e5d52cb18acc9251b87ffa400f388",
+   "sha256": "1in4wbwkxn8qfcsfjbczzk73z74w4ixlml61wk666dw0kpscgbs5"
+  }
+ },
+ {
+  "ename": "eopengrok",
+  "commit": "2b87ea158a6fdbc6b4e40fd7c0f6814d135f8545",
+  "sha256": "0756x78113286hwk1i1m5s8xq04gh7zxb4fkmw58lg2ssff8q6av",
+  "fetcher": "github",
+  "repo": "youngker/eopengrok.el",
+  "unstable": {
+   "version": [
+    20200205,
+    624
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "magit",
+    "s"
+   ],
+   "commit": "6fa16c4ccaaebaef64dca0d3d29904c45fd6597d",
+   "sha256": "1y6n5b9pk4c3badzhwm7qv1jw60p34z55ljwhaaqlnmv7nq1qnj3"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "magit",
+    "s"
+   ],
+   "commit": "11c99f7e1e2c1c7d70cbda496cb5b6c7f6e4082a",
+   "sha256": "1c5kzq3h7gr0459z364dyq5m8vq0ydclw5wphqj9fyg28mxjj6ns"
+  }
+ },
+ {
+  "ename": "epc",
+  "commit": "8bc29a8d518ce7a584277089bd4654f52ac0f358",
+  "sha256": "1l9rcx07pa4b9z5654gyw6b64c95lcigzg15amphwr56v2g3rbzx",
+  "fetcher": "github",
+  "repo": "kiwanami/emacs-epc",
+  "unstable": {
+   "version": [
+    20140610,
+    534
+   ],
+   "deps": [
+    "concurrent",
+    "ctable"
+   ],
+   "commit": "e1bfa5ca163273859336e3cc89b4b6460f7f8cda",
+   "sha256": "15nkrjgi64f829isfd6xrhl4zw8jirr8pkas7nisrbk1av868hx0"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "concurrent",
+    "ctable"
+   ],
+   "commit": "16e975efad63093a1f1f7b59f8fda5a3cf34f2a0",
+   "sha256": "0smk23f23jdnvmrisj5d4isna36sr15bbvh53dq5261y8ddxlkvw"
+  }
+ },
+ {
+  "ename": "epic",
+  "commit": "7c7162791d560846fe386746c00a9fe88c8007bb",
+  "sha256": "0gfl8if83jbs0icz6gcjkwxvcz5v744k1kvqnbx3ga481kds9rqf",
+  "fetcher": "github",
+  "repo": "yoshinari-nomura/epic",
+  "unstable": {
+   "version": [
+    20170210,
+    23
+   ],
+   "deps": [
+    "htmlize"
+   ],
+   "commit": "a41826c330eb0ea061d58a08cc861b0c4ac8ec4e",
+   "sha256": "0mvg52f2y3725hlzqcn2mh8jihnbg68wlqmq951sa3qfma7m40pp"
+  }
+ },
+ {
+  "ename": "epkg",
+  "commit": "2df16abf56e53d4a1cc267a78797419520ff8a1c",
+  "sha256": "0vvkjjaffvwvsvld3c6hwd18icmp2lc7f9yqvclifpadi98dhpww",
+  "fetcher": "github",
+  "repo": "emacscollective/epkg",
+  "unstable": {
+   "version": [
+    20200503,
+    1214
+   ],
+   "deps": [
+    "closql"
+   ],
+   "commit": "d987af46d9d763946fbf2930cacc9d6906df4382",
+   "sha256": "1jyb9m6nx91dn4isai36v1yc7shrpgnk76kpkamavrvwqdzvw6nv"
+  },
+  "stable": {
+   "version": [
+    3,
+    2,
+    2
+   ],
+   "deps": [
+    "closql",
+    "dash"
+   ],
+   "commit": "ca211c5225aa550374d77629dd9b87e2b0b0d992",
+   "sha256": "1pxz611qb3m33r6343h0xhwqvvhjl131zyc2klplzgb23rkm8lk0"
+  }
+ },
+ {
+  "ename": "epl",
+  "commit": "9c6cf24e86d8865bd2e4b405466118de1894851f",
+  "sha256": "0zr3r2hn9jaxscrl83hyixznb8l5dzfr6fsac76aa8x12xgsc5hn",
+  "fetcher": "github",
+  "repo": "cask/epl",
+  "unstable": {
+   "version": [
+    20180205,
+    2049
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "78ab7a85c08222cd15582a298a364774e3282ce6",
+   "sha256": "0ksilx9gzdazngxfni5i632jpb1nprcxplsbhgqirs2xdl53q8v8"
+  },
+  "stable": {
+   "version": [
+    0,
+    9
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "fd906d3f92d58ecf24169055744409886ceb06ce",
+   "sha256": "0d3z5z90ln8ipk1yds1n1p8fj9yyh2kpspqjs7agl38indra3nb4"
+  }
+ },
+ {
+  "ename": "epm",
+  "commit": "e12e8ae2e8e8aff7cbd75a951dd328cb9ccf58b0",
+  "sha256": "0k94qhzxjzw5d0c53jnyx1xfciwr9qib845awyjaybzzs34s8r08",
+  "fetcher": "github",
+  "repo": "xuchunyang/epm",
+  "unstable": {
+   "version": [
+    20190509,
+    443
+   ],
+   "deps": [
+    "epl"
+   ],
+   "commit": "6375ddbf93c5f25647f6ebb25b54045b3c93a5be",
+   "sha256": "1m0l0szrwljzsch4xj9a42nflpqfii68g8clizsjwv323h6xff4n"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "epl"
+   ],
+   "commit": "6375ddbf93c5f25647f6ebb25b54045b3c93a5be",
+   "sha256": "1m0l0szrwljzsch4xj9a42nflpqfii68g8clizsjwv323h6xff4n"
+  }
+ },
+ {
+  "ename": "epresent",
+  "commit": "150487558ecda0520c637ffed1ffe2fbf2dc5811",
+  "sha256": "176d1nwsafi6fb0dnv35bfskp0xczyzf2939gi4bz69zh0161jg8",
+  "fetcher": "github",
+  "repo": "dakrone/epresent",
+  "unstable": {
+   "version": [
+    20160411,
+    201
+   ],
+   "deps": [
+    "cl-lib",
+    "org"
+   ],
+   "commit": "6c8abedcf46ff08091fa2bba52eb905c6290057d",
+   "sha256": "1qa1nq63kax767gs53s75ihspirvh69l4xdm89mj57qvrbpz36z5"
+  }
+ },
+ {
+  "ename": "eprime-mode",
+  "commit": "37b4f3dce033fa18d23202ca4c36bc85754d547d",
+  "sha256": "0vswjcs24f3mdyw6ai7p21ab8pdn327lr2d6css0a5nrg539cn2g",
+  "fetcher": "github",
+  "repo": "AndrewHynes/eprime-mode",
+  "unstable": {
+   "version": [
+    20140513,
+    1816
+   ],
+   "commit": "17a481af26496be91c07139a9bfc05cfe722506f",
+   "sha256": "1wwg46xdb488wxvglwvsy08vznrnmdmmbcvm9vb60dy3gqjmz7cw"
+  }
+ },
+ {
+  "ename": "eproject",
+  "commit": "d7e82668617a9b599f8994c720f3f123ba1e008a",
+  "sha256": "0kpg4r57khbyinc73v9kj32b9m3b4nb5014r5fkl5mzzpzmd85b4",
+  "fetcher": "github",
+  "repo": "jrockway/eproject",
+  "unstable": {
+   "version": [
+    20180312,
+    1642
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "068218d2cf2138cb2e8fc29b57e773a0097a7e8b",
+   "sha256": "110b8gn47m5kafmvxr8q9zzrj0pdn6ikw9xsx4z1rc58i02jy307"
+  }
+ },
+ {
+  "ename": "equake",
+  "commit": "2a4a0ec11a9c720d7ed90addcb31d0a9d5594f5b",
+  "sha256": "17r10d3acmhixbi24k19rx720qi8ss4v53n107arqmr04rkd1v2y",
+  "fetcher": "gitlab",
+  "repo": "emacsomancer/equake",
+  "unstable": {
+   "version": [
+    20200429,
+    209
+   ],
+   "deps": [
+    "dash",
+    "tco"
+   ],
+   "commit": "7e8ef8627151748156e7a4a384b6e8c6c344261b",
+   "sha256": "1ds89jk4d7j89mgfkqqc92lizh6fwwr338imzvby1lb8i17nww40"
+  }
+ },
+ {
+  "ename": "erc-colorize",
+  "commit": "e69214e89ec0e00b36609fce3efe22b5c1add1f9",
+  "sha256": "1m941q7ql3yb71s71783nvz822bwhn1krmin18fvh0fbsbbnck2a",
+  "fetcher": "github",
+  "repo": "thisirs/erc-colorize",
+  "unstable": {
+   "version": [
+    20170107,
+    1339
+   ],
+   "commit": "d026a016dcb9d63d9ac66d30627a92a8f1681bbd",
+   "sha256": "1zzmsrlknrpw26kizd4dm1g604y9nkgh85xal9la70k94qcgv138"
+  }
+ },
+ {
+  "ename": "erc-crypt",
+  "commit": "a1a71b46c0370d2ed25aa3f39983048a04576ad5",
+  "sha256": "1mzzqcxjnll4d9r9n5z80zfb3ywkd8jx6b49g02vwf1iak9h7hv3",
+  "fetcher": "github",
+  "repo": "atomontage/erc-crypt",
+  "unstable": {
+   "version": [
+    20200511,
+    2235
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "6d158b39ea2833b753858153eb110da9b8a40fc4",
+   "sha256": "0pj330x5j9rnwcv2la2yc6w3vsg53c9ij0f3q9zi2psxbr268xi0"
+  },
+  "stable": {
+   "version": [
+    2,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "6d158b39ea2833b753858153eb110da9b8a40fc4",
+   "sha256": "0pj330x5j9rnwcv2la2yc6w3vsg53c9ij0f3q9zi2psxbr268xi0"
+  }
+ },
+ {
+  "ename": "erc-hl-nicks",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "03hxsknf31vrja2amfa317ig4c34i5jpdq35zczrp00ap0s31nbq",
+  "fetcher": "github",
+  "repo": "leathekd/erc-hl-nicks",
+  "unstable": {
+   "version": [
+    20200317,
+    16
+   ],
+   "commit": "a67fe361c8f2aa20fc235447fbb898f424b51439",
+   "sha256": "0k57scxa8rm859fqsm8srhps7rlq06jzazhjbwnadzrh8i5fyvra"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    4
+   ],
+   "commit": "a67fe361c8f2aa20fc235447fbb898f424b51439",
+   "sha256": "0k57scxa8rm859fqsm8srhps7rlq06jzazhjbwnadzrh8i5fyvra"
+  }
+ },
+ {
+  "ename": "erc-image",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1k5llh2jg2wxy9v03qrhwqa6g7apkqiqa47jm24z0ydqinm6zl83",
+  "fetcher": "github",
+  "repo": "kidd/erc-image.el",
+  "unstable": {
+   "version": [
+    20180522,
+    1424
+   ],
+   "commit": "82fb3871f02e24b1e880770b9a3d187aab43d0f0",
+   "sha256": "1q8mkf612fb4fjp8h4kbr107wn083iqfdgv8f80pcmil8y33dw9i"
+  }
+ },
+ {
+  "ename": "erc-scrolltoplace",
+  "commit": "848cb17d871287c401496e4483e400b44696e89d",
+  "sha256": "0632i1p26z3f633iinkqka0x2dd55x02xidk9qr66jh0dzfs6q3i",
+  "fetcher": "gitlab",
+  "repo": "jgkamat/erc-scrolltoplace",
+  "unstable": {
+   "version": [
+    20180608,
+    606
+   ],
+   "deps": [
+    "switch-buffer-functions"
+   ],
+   "commit": "feb0fbf1fd4bdf220ae2d31ea7c066d8e62089f9",
+   "sha256": "1wb3xm45g77daw2ncs8a8w0m8d2hi591jmzwy5xli1zgrr5mm8h3"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "switch-buffer-functions"
+   ],
+   "commit": "7539654e4a72edcc5bba07a101961e5bf0a9d449",
+   "sha256": "11zpqwh1mlfifbgnvhc63bvnhg340jgxssm3m43hr1sxsyb52lh6"
+  }
+ },
+ {
+  "ename": "erc-social-graph",
+  "commit": "9f347636c417aaf91728e56fd32313854fde3684",
+  "sha256": "07arn3k89cqxab5x5lczv8bpgrbirmlw9p6c37fgrl3df6f46h4h",
+  "fetcher": "github",
+  "repo": "vibhavp/erc-social-graph",
+  "unstable": {
+   "version": [
+    20150508,
+    1204
+   ],
+   "commit": "e6ef3416a1c5064054bf054d9f0c1c7bf54a9cd0",
+   "sha256": "0k3gp4c74g5awk7v9lzb6py3dvf59nggh6dw7530cswxb6kg2psa"
+  }
+ },
+ {
+  "ename": "erc-status-sidebar",
+  "commit": "29631de8ec4140a8e35cc500902b58115faa3955",
+  "sha256": "04qh70ih74vbavq7ccwj1ixpd8s3g8rck9bxv6zhm1yv34bslw5d",
+  "fetcher": "github",
+  "repo": "drewbarbs/erc-status-sidebar",
+  "unstable": {
+   "version": [
+    20171223,
+    2124
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "ea4189a1dbfe60117359c36e681ad7c389e2968c",
+   "sha256": "1hwlhzgx03z8891sblz56zdp8zj0izh72kxykgcnz5rrkyc3vfi3"
+  }
+ },
+ {
+  "ename": "erc-terminal-notifier",
+  "commit": "f2ba978b1ba63fac3b7f1e9776ddc3b054455ac4",
+  "sha256": "0vrxkg62qr3ki8n9mdn02sdni5fkj79fpkn0drx0a4kqp0nrrj7c",
+  "fetcher": "github",
+  "repo": "julienXX/erc-terminal-notifier.el",
+  "unstable": {
+   "version": [
+    20140115,
+    1024
+   ],
+   "commit": "a3dacb935845e4a20031212bbd82b2170f68d2a8",
+   "sha256": "0cfqbqskh260zfq1lx1s8jz2351w2ij9m73rqim16fy7zr0s0670"
+  }
+ },
+ {
+  "ename": "erc-track-score",
+  "commit": "671afe0ff3889ae8c4b2d7b8617a3a25c16f3f0f",
+  "sha256": "19wjwah2n8ri6gyrsbzxnrvxwr5cj48sxrar1226n9miqvgj5whx",
+  "fetcher": "github",
+  "repo": "jd/erc-track-score.el",
+  "unstable": {
+   "version": [
+    20130328,
+    1215
+   ],
+   "commit": "5b27531ea6b1a4c4b703b270dfa9128cb5bfdaa3",
+   "sha256": "0n107d77z04ahypa7hn2165kkb6490v4vkzdm5zwm4lfhvlmp0x2"
+  }
+ },
+ {
+  "ename": "erc-tweet",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0nmh3r8s69hfmkz0jycn7w2icb5gnw2qbf8xjd52kigkdb2s646c",
+  "fetcher": "github",
+  "repo": "kidd/erc-tweet.el",
+  "unstable": {
+   "version": [
+    20150920,
+    1258
+   ],
+   "commit": "91fed61e139fa788d66a7358f0d50acc896414b8",
+   "sha256": "118q4zj9dh5xnimcsi229j5pflhcd8qz0p212kc4p9dmyrx2iw0n"
+  }
+ },
+ {
+  "ename": "erc-twitch",
+  "commit": "46f8640b24bade45cc729eeb370adf959f99526f",
+  "sha256": "08vlwcxrzc2ndm52112z1r0qnz6jlmjhiwq2j3j59fbw82ys61ia",
+  "fetcher": "github",
+  "repo": "vibhavp/erc-twitch",
+  "unstable": {
+   "version": [
+    20170427,
+    606
+   ],
+   "deps": [
+    "erc",
+    "json"
+   ],
+   "commit": "53c6af0cb72e56d897d30a40e7e5066668d6b5ec",
+   "sha256": "0qirx38czv8m7sgj3rm1zncmyd8z6k4xhd8ixwxl7nigfpqvvv4c"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "erc",
+    "json"
+   ],
+   "commit": "6938191c787d66fef4c13674e0a98a9d64eff364",
+   "sha256": "1xsxykmhz34gmyj4jb26qfai7j95kzlc7vfydrajc6is7xlrwhfk"
+  }
+ },
+ {
+  "ename": "erc-view-log",
+  "commit": "0c0176d8e26014f7b62d14ac3adffa21a84b5741",
+  "sha256": "1k6fawblz0d7kz1y7sa3q43s7ci28jsmzkp9vnl1nf55p9xvv4cf",
+  "fetcher": "github",
+  "repo": "Niluge-KiWi/erc-view-log",
+  "unstable": {
+   "version": [
+    20140227,
+    2039
+   ],
+   "commit": "c5a25f0cbca84ed2e4f72068c02b66bd0ea3b266",
+   "sha256": "0bzi2sh2fhrz49j5y53h6jgf41av6rx78smb3bbk6m74is8vim2y"
+  }
+ },
+ {
+  "ename": "erc-youtube",
+  "commit": "a80ee9617a30a8ad1d457a0b0c7f35e6ec1c0bb2",
+  "sha256": "12ylxkskkgfv5x7vlkib963ichb3rlmdzkf4zh8a39cgl8wsmacx",
+  "fetcher": "github",
+  "repo": "kidd/erc-youtube.el",
+  "unstable": {
+   "version": [
+    20150603,
+    2136
+   ],
+   "commit": "97054ba8475b442e2aa81e5a291f668b7f28697f",
+   "sha256": "0kh4amx3l3a14qaiyvjyak1jbybs6n49mdvzjrd1i2vd1y74zj5w"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "97054ba8475b442e2aa81e5a291f668b7f28697f",
+   "sha256": "0kh4amx3l3a14qaiyvjyak1jbybs6n49mdvzjrd1i2vd1y74zj5w"
+  }
+ },
+ {
+  "ename": "erc-yt",
+  "commit": "ece0a6185a36d52971c35a35f5aa76ddafec3ced",
+  "sha256": "0yrwvahv4l2s1aavy6y6mjlrw8l11i00a249825ab5yaxrkzz7xc",
+  "fetcher": "github",
+  "repo": "yhvh/erc-yt",
+  "unstable": {
+   "version": [
+    20150426,
+    1249
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "43e7d49325b17a3217a6ffb4a9daf75c5ff4e6f8",
+   "sha256": "1dlw34kaslyvnsrahf4rm76r2b7qqqn589i4mmhr23prl8xbz9z9"
+  }
+ },
+ {
+  "ename": "ercn",
+  "commit": "a12f264653d79224adeb5d0ae76518dc408ff1e9",
+  "sha256": "0yvis02bypw6v1zv7i326y8s6j0id558n0bdri52hr5pw85imnlp",
+  "fetcher": "github",
+  "repo": "leathekd/ercn",
+  "unstable": {
+   "version": [
+    20150523,
+    1503
+   ],
+   "commit": "79a4df5609046ae2e2e3375998287be6dda80615",
+   "sha256": "0xw3d9fz4kmn1myrsy44ki4bgg0aclv41wldl6r9nhvkrnri41cv"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "commit": "73b00dadf83b97dd9edd8381a4b27f583c08b7f6",
+   "sha256": "19jninbf0dhdw3kn4d38bxmklg0v7sh3m9dwj6z69w99r5pcw480"
+  }
+ },
+ {
+  "ename": "ereader",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1ai27lyb9xcmjjcnppzzhb6ilsvq9d9g9z7h79lp7axq761vind4",
+  "fetcher": "github",
+  "repo": "bddean/emacs-ereader",
+  "unstable": {
+   "version": [
+    20170810,
+    501
+   ],
+   "deps": [
+    "dash",
+    "s",
+    "xml+"
+   ],
+   "commit": "f3bbd3f13195f8fba3e3c880aab0e4c60430dcf3",
+   "sha256": "18yqqqxsivnq2m8mxz7ifp0bfmn3q9m11w3abryxg2snh4vb5sy6"
+  }
+ },
+ {
+  "ename": "eredis",
+  "commit": "63f06713d06911f836fe2a4bf199b0794ac89cf0",
+  "sha256": "087lln2izn5bv7bprmbaciivf17vv4pz2cjl91hy2f0sww6nsiw8",
+  "fetcher": "github",
+  "repo": "justinhj/eredis",
+  "unstable": {
+   "version": [
+    20181119,
+    131
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "bc86b9f63a3e7a5eb263875030d0e15d6f5f6e37",
+   "sha256": "1a3vvdlld66x0j3i7plhc0fm6mkj64mvd375j8g65nvfn6cwc3h4"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    6
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "cfbfc25832f6fbc507bdd56b02e3a0b851a3c368",
+   "sha256": "1f2f57c0bz3c6p11hr69aar6z5gg33zvfvsm76ma11vx21qilz6i"
+  }
+ },
+ {
+  "ename": "erefactor",
+  "commit": "18063e16a6f556b1871e1a5b74e353a85a794e63",
+  "sha256": "0ma9sbrq4n8y5w7vvbhhgmw25aiykbq5yhxzm0knj32bgpviprw7",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-erefactor",
+  "unstable": {
+   "version": [
+    20200513,
+    1252
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "bfe27a1b8c7cac0fe054e76113e941efa3775fe8",
+   "sha256": "1071gqli1qd498syhysyj2wzyw1nya5070m82xd9qalqdh11b8is"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "fde3fd42c815c76e8015f69518a92f6bfcfde990",
+   "sha256": "17i567nfm0rykimh6bpcc5f2l7wsf8zcdy2jzd7sgrl54dvb0g9i"
+  }
+ },
+ {
+  "ename": "ergoemacs-mode",
+  "commit": "02920517987c7fc698de9952cbb09dfd41517c40",
+  "sha256": "0h99m0n3q41lw5fm33pc1405lrxyc8rzghnc6c7j4a6gr1d82s62",
+  "fetcher": "github",
+  "repo": "ergoemacs/ergoemacs-mode",
+  "unstable": {
+   "version": [
+    20200319,
+    1250
+   ],
+   "deps": [
+    "cl-lib",
+    "undo-tree"
+   ],
+   "commit": "4a6ba06d9c618e9380d059fa25ed677b45d134a7",
+   "sha256": "0wgdzxla6kz1zfc3vfd8wc2j40kq023z7b83m2k435hcqdffark8"
+  },
+  "stable": {
+   "version": [
+    5,
+    16,
+    10,
+    12
+   ],
+   "deps": [
+    "cl-lib",
+    "undo-tree"
+   ],
+   "commit": "ac70b2563fb6e3d69ea382fddc87b5721c20c292",
+   "sha256": "0ydxyylijdd6da4n9by441352shphrpfyk2631ld5aq3gz27z9gi"
+  }
+ },
+ {
+  "ename": "ergoemacs-status",
+  "commit": "f4af9606cfe09cdd294fae6b4b1f477f7861fdb7",
+  "sha256": "065pw31s8dmqpag7zj40iv6dbl0qln7c65gcyp7pz9agg9rp6vbb",
+  "fetcher": "github",
+  "repo": "ergoemacs/ergoemacs-status",
+  "unstable": {
+   "version": [
+    20160318,
+    538
+   ],
+   "deps": [
+    "mode-icons",
+    "powerline"
+   ],
+   "commit": "d952cc2361adf6eb4d6af60950ad4ab699c81320",
+   "sha256": "06pdwrhflpi5rkigqnr5h3jzv3dm1p9nydpvql9w33ixm6qhjj71"
+  }
+ },
+ {
+  "ename": "erlang",
+  "commit": "d9cd526f43981e0826af59cdc4bb702f644781d9",
+  "sha256": "1cs768xxbyrr78ln50k4yknmpbcc1iplws3k07r0gx5f3ca73iaq",
+  "fetcher": "github",
+  "repo": "erlang/otp",
+  "unstable": {
+   "version": [
+    20200313,
+    1030
+   ],
+   "commit": "e5d476b5f22927d341caf1774355d9e69e390cfa",
+   "sha256": "1kcdl56qybvq4m5dp65n3nbg6xijb793xi25yckk5nc17n1nwrzb"
+  },
+  "stable": {
+   "version": [
+    23,
+    0
+   ],
+   "commit": "7a8d04dbcb388a5d837a213ad249c1b96e19e998",
+   "sha256": "0hw0js0man58m5mdrzrig5q1agifp92wxphnbxk1qxxbl6ccs6ls"
+  }
+ },
+ {
+  "ename": "erlstack-mode",
+  "commit": "6ee61c1c5f116082b37fb13d15052ed9bbbc1dac",
+  "sha256": "0b7mj0rs8k3hdv4v3v5vmdqs0y26mss7dzc0sjjxj4d095yddqqf",
+  "fetcher": "github",
+  "repo": "k32/erlstack-mode",
+  "unstable": {
+   "version": [
+    20190812,
+    1117
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "d0a67fb6f91cef02376e71b4b4669b071ebd9737",
+   "sha256": "10b77q2qwwlvj56g9yd6d9lkmk184mjf6x3067vvqs40xiv9bsgl"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "07398e929978b0eaf2bf119e97cba7b9f9e90d2a",
+   "sha256": "1gf9k3z9v1s7d01s551ys87j05xh3lpnvv86dq86rz8xinc09kac"
+  }
+ },
+ {
+  "ename": "eros",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0l79bn72x5m2lzglrwwngz3hax9pf8wv7ci86y5pkwaa8frxycww",
+  "fetcher": "github",
+  "repo": "xiongtx/eros",
+  "unstable": {
+   "version": [
+    20180415,
+    618
+   ],
+   "commit": "dd8910279226259e100dab798b073a52f9b4233a",
+   "sha256": "08chj3a0lw4ygi2sv7wj0i6ihfbi8jhylr8p92inif8b88r6wg3k"
+  }
+ },
+ {
+  "ename": "ert-async",
+  "commit": "2ec669e3fc73b0b499b84cec87d0f8621274732e",
+  "sha256": "004798ckri5j72j0xvzkyciss1iz4lw9gya2749hkjxlamg14cn5",
+  "fetcher": "github",
+  "repo": "rejeep/ert-async.el",
+  "unstable": {
+   "version": [
+    20200105,
+    1031
+   ],
+   "commit": "948cf2faa10e085bda3739034ca5ea1912893433",
+   "sha256": "1ixkh6bghrg1criczhdvr9igjcdsijadaqvywyjj6bfwd8ql5x39"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "commit": "f64a7ed5b0d2900c9a3d8cc33294bf8a79bc8526",
+   "sha256": "0hn9i405nfhjd1h9vnwj43nxbbz00khrwkjq0acfyxjaz1shfac9"
+  }
+ },
+ {
+  "ename": "ert-expectations",
+  "commit": "84f836338818946a6bb31d35d6ae959571128ed5",
+  "sha256": "07mp0azb6wsa1z4s6q8jyh7dpzils0wh2bamfmxzy4gjqjwv8ncn",
+  "fetcher": "github",
+  "repo": "emacsorphanage/ert-expectations",
+  "unstable": {
+   "version": [
+    20121009,
+    734
+   ],
+   "commit": "aed70e002c4305b66aed7f6d0d48e9addd2dc1e6",
+   "sha256": "0qgi3rj49k0hz4azg7ghcj6385p5s9gakqjhrjnhih7dxvihcgxi"
+  }
+ },
+ {
+  "ename": "ert-junit",
+  "commit": "27c627eacab54896a1363dbabc56250a65343dd8",
+  "sha256": "0bv22mhh1ahbjwi6s1csxkh11dmy0srabkddjd33l4havykxlg6g",
+  "fetcher": "git",
+  "url": "https://bitbucket.org/olanilsson/ert-junit",
+  "unstable": {
+   "version": [
+    20190802,
+    2232
+   ],
+   "deps": [
+    "ert"
+   ],
+   "commit": "65f91c35b088b87943dbbbe7e1ce354bc9bc0992",
+   "sha256": "1srmkffzj7xf8iickhyhw1fpg4nxbkp45aiz9w784ra9p99a366y"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "deps": [
+    "ert"
+   ],
+   "commit": "65f91c35b088b87943dbbbe7e1ce354bc9bc0992",
+   "sha256": "1srmkffzj7xf8iickhyhw1fpg4nxbkp45aiz9w784ra9p99a366y"
+  }
+ },
+ {
+  "ename": "ert-modeline",
+  "commit": "3b3a301889d6eea2470017519b080519efbe1bec",
+  "sha256": "06pc50q9ggin20cbfafxd53x35ac3kh85dap0nbws7514f473m7b",
+  "fetcher": "github",
+  "repo": "chrisbarrett/ert-modeline",
+  "unstable": {
+   "version": [
+    20140115,
+    1015
+   ],
+   "deps": [
+    "dash",
+    "projectile",
+    "s"
+   ],
+   "commit": "e7be2b81191afb437b70368a819770f8f750e4af",
+   "sha256": "08yfq3qzscxvzyxvyvdqpkrm787278yhkdd9prbvrgjj80p8n7vq"
+  }
+ },
+ {
+  "ename": "ert-runner",
+  "commit": "0a1acc68f296e80b6ed99a1783e9f67be54ffac9",
+  "sha256": "0fnb8rmjr5lvc3dq0fnyxhws8ync1lj5xp8ycs63z4ax6gmdqr48",
+  "fetcher": "github",
+  "repo": "rejeep/ert-runner.el",
+  "unstable": {
+   "version": [
+    20200321,
+    2158
+   ],
+   "deps": [
+    "ansi",
+    "commander",
+    "dash",
+    "f",
+    "s",
+    "shut-up"
+   ],
+   "commit": "1829f05c46b0baaae160d900f89c8881f4fcdbcc",
+   "sha256": "08gygn9fjank5gpi4v6ynrkn0jbknxbwsn7md4p9ndygdbmnkf98"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    0
+   ],
+   "deps": [
+    "ansi",
+    "commander",
+    "dash",
+    "f",
+    "s",
+    "shut-up"
+   ],
+   "commit": "1829f05c46b0baaae160d900f89c8881f4fcdbcc",
+   "sha256": "08gygn9fjank5gpi4v6ynrkn0jbknxbwsn7md4p9ndygdbmnkf98"
+  }
+ },
+ {
+  "ename": "es-lib",
+  "commit": "f10631b740eea56e7209d7e84f0da8613274ef1d",
+  "sha256": "0mwvgf5385qsp91zsdw75ipif1h90xy277xdmrpwixsxd7abbn0n",
+  "fetcher": "github",
+  "repo": "sabof/es-lib",
+  "unstable": {
+   "version": [
+    20141111,
+    1830
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "753b27363e39c10edc9e4e452bdbbbe4d190df4a",
+   "sha256": "0jq4yp80wiphlpsc0429rg8n50g8l4lf78q0l3nywz2p93smjy9b"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "753b27363e39c10edc9e4e452bdbbbe4d190df4a",
+   "sha256": "0jq4yp80wiphlpsc0429rg8n50g8l4lf78q0l3nywz2p93smjy9b"
+  }
+ },
+ {
+  "ename": "es-mode",
+  "commit": "9912193f73c4beae03b295822bf41cb2298756e2",
+  "sha256": "0zp84k5idqkrvc9qci49ains0b86kpk97lk1jcwyj75s4xsfyp1y",
+  "fetcher": "github",
+  "repo": "dakrone/es-mode",
+  "unstable": {
+   "version": [
+    20191119,
+    2018
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "request",
+    "s",
+    "spark"
+   ],
+   "commit": "9e5bcb290b38d5bd143e0ee480ed49147cfd3504",
+   "sha256": "13f7s8hk5d3psxp4qzzsqnwawsjj59cmjhmg1zi2c90qhvna78vn"
+  },
+  "stable": {
+   "version": [
+    4,
+    3,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "spark"
+   ],
+   "commit": "996730ebce57d810d2c275c7fadb11c2b1134dea",
+   "sha256": "1qhfnd5anp5qrmravv7ks5ix763xnki2f5jwcyj70qyxwr0l60cg"
+  }
+ },
+ {
+  "ename": "es-windows",
+  "commit": "944d4cd54e040d2a58e1778cb282727deee83f92",
+  "sha256": "112ngkan0hv3y7m71479f46x5gwdmf0vhbqrzs5kcjwlacqlrahx",
+  "fetcher": "github",
+  "repo": "sabof/es-windows",
+  "unstable": {
+   "version": [
+    20140211,
+    904
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "239e30408cb1adb4bc8bd63e2df34711fa910b4f",
+   "sha256": "14rsifcx2kwdmwq9zh41fkb848l0f4igp5v9pk3x4jd2yw9gay7m"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "7ebe6c6e0831373847d7adbedeaa2e506b54b2af",
+   "sha256": "0cjchwrhk7bw87bg10zgcwkga50rvs0jn5v2jf6bbsxbcqx2nfc9"
+  }
+ },
+ {
+  "ename": "esa",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0y4mbq0z6vp0faxq6dq5hhxnsbi685amxqbvpxkxahl1nckp76lb",
+  "fetcher": "github",
+  "repo": "nabinno/esa.el",
+  "unstable": {
+   "version": [
+    20180403,
+    1525
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "417e0ac55abe9b17e0b7165d0df26bc018aff42e",
+   "sha256": "0hib8q9fslvw02i1y19z78fv6yy88q09lhfdfmbdyn6yal21855q"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    13
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "0f69f9f45ac15018c48853509ac38e68286f9c0e",
+   "sha256": "0cairmqsaghl2ddb2v8zhcwy5ik756m7gkair8xrbigz4jklpcv9"
+  }
+ },
+ {
+  "ename": "esh-autosuggest",
+  "commit": "dc3776068d6928fc1661a27cccaeb8fb85577099",
+  "sha256": "1rcng1dhy4yw95qg909ck33svpdxhv9v5k7226d29gp4y54dwyrx",
+  "fetcher": "github",
+  "repo": "dieggsy/esh-autosuggest",
+  "unstable": {
+   "version": [
+    20190228,
+    401
+   ],
+   "deps": [
+    "company"
+   ],
+   "commit": "972094808d231a86dc6e43862191167b1997d840",
+   "sha256": "1nkf3n20bc8fhdw8vmmnrwhaddhmqpjsrxm304ci6r6b4zz71nq6"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    1
+   ],
+   "deps": [
+    "company"
+   ],
+   "commit": "a6d5eb3337d010bd2a2d677ff304cd53adc291a0",
+   "sha256": "0l2nnlr3b6df1xn0qjf5d5ryy1wcs1jczyfy795vsasd5gm3g0xh"
+  }
+ },
+ {
+  "ename": "esh-buf-stack",
+  "commit": "61e8f75aa0d5446c61aadc7ac22371e44a3761b8",
+  "sha256": "0zmwlsm98m9vbjk9mldfj2nf6cip7mlvb71j33ddix76yqggp4qg",
+  "fetcher": "github",
+  "repo": "tom-tan/esh-buf-stack",
+  "unstable": {
+   "version": [
+    20140107,
+    1018
+   ],
+   "commit": "ce0ea5aadca3150eaa9d2e6ec20296add4e99176",
+   "sha256": "1k8k9hl9m4vjqdw3x9wg04cy2lb9x64mq0mm0i3i6w59zrsnkn4q"
+  }
+ },
+ {
+  "ename": "esh-help",
+  "commit": "ab94c66d1ed7cfdbc437ee239984ba70408fd28a",
+  "sha256": "1k925wmn8jy9rxxsxxawasxq6r4yzwl116digdx314gd3i04sh3w",
+  "fetcher": "github",
+  "repo": "tom-tan/esh-help",
+  "unstable": {
+   "version": [
+    20190905,
+    22
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "417673ed18a983930a66a6692dbfb288a995cb80",
+   "sha256": "0x7d51a6ljl014zy7mi27vzcqqbcwg9z4drq29fr2ajk82mqhlgd"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "8a8a9d4d9852f8bd96da3b94e95ff57097ac8ec6",
+   "sha256": "02fybhmqm2qmy5qdig7xvwxazqi499pw32kh5mrsbdr14srg9fhs"
+  }
+ },
+ {
+  "ename": "eshell-autojump",
+  "commit": "68bd1a8ec9d17eff2d23e15b3686f7c0b8723126",
+  "sha256": "09l2680hknmdbwr4cncv1v4b0adik0c3sm5i9m3qbwyyxm8m41i5",
+  "fetcher": "github",
+  "repo": "coldnew/eshell-autojump",
+  "unstable": {
+   "version": [
+    20150927,
+    724
+   ],
+   "commit": "c6a8b81a16576df9875e721fbbfe6690d04e7e43",
+   "sha256": "13crzgkx1lham1nfsg6hj2zg875majvnig0v4ydg691zk1qi4hc2"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "c0866d7f2789831665ebb01b812bae89d085bff0",
+   "sha256": "0nkmwwx224r50y2xnrz3v26l3ngqshvy5hs861gy4zagwllqfmvc"
+  }
+ },
+ {
+  "ename": "eshell-bookmark",
+  "commit": "e7bf4702a907727990fcc676980f2b219e22ab0c",
+  "sha256": "1bybxlq1h5chrjxqjb23kq8dmgw2xrjwkrnvpbphblqzpdy5ck0s",
+  "fetcher": "github",
+  "repo": "Fuco1/eshell-bookmark",
+  "unstable": {
+   "version": [
+    20170922,
+    1514
+   ],
+   "commit": "99a491c77e27ecc4626bdd4ad453ac71aa2654d4",
+   "sha256": "0imn9x7lylnzprg54mdmf21nxld1cq3r1037jzix0pq39bgz0vk7"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "commit": "deda4b848b2fb979dbe73ead2cb866610e3596ed",
+   "sha256": "14dmsnixf9vqdhsixw693sml0fn80zcf0b37z049fb40cmppqxdw"
+  }
+ },
+ {
+  "ename": "eshell-did-you-mean",
+  "commit": "a7649eca21a21ddbbc7131f29cbbd91a00a84060",
+  "sha256": "1z1wpn3sj1gi5nn0a71wg0i3av0dijnk79dc32zh3qlh500kz8mz",
+  "fetcher": "github",
+  "repo": "xuchunyang/eshell-did-you-mean",
+  "unstable": {
+   "version": [
+    20150915,
+    1952
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "7cb6ef8e2274d0a50a9e114d412307a6543533d5",
+   "sha256": "0v0wshck5n4hspcv1zk1g2nm6xiigcjp16lx0dc8wzkl6ymljvbg"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "7cb6ef8e2274d0a50a9e114d412307a6543533d5",
+   "sha256": "0v0wshck5n4hspcv1zk1g2nm6xiigcjp16lx0dc8wzkl6ymljvbg"
+  }
+ },
+ {
+  "ename": "eshell-fixed-prompt",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0mhrfxf19p4qqnlnnfc0z70324c7qiiv63riaz4cn5jj1ps3v0iy",
+  "fetcher": "github",
+  "repo": "mallt/eshell-fixed-prompt-mode",
+  "unstable": {
+   "version": [
+    20190111,
+    2235
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "2c860029354bf1f69edc1f12e4a0d9aeb9054f5d",
+   "sha256": "1j1m661rgbfr04357wq2a7vhm04s3vrbw4r6y1k2cx2ap9amkb25"
+  }
+ },
+ {
+  "ename": "eshell-fringe-status",
+  "commit": "9efd9fefab5d449b9f70d9f548aadfea52d66bc0",
+  "sha256": "1vavidnijxzhr4v39q4bxi645vsfcj6vp0wnlhznpxagshr950lg",
+  "fetcher": "github",
+  "repo": "ryuslash/eshell-fringe-status",
+  "unstable": {
+   "version": [
+    20170117,
+    2316
+   ],
+   "commit": "adc6997c68e39c0d52a2af1b2fd5cf2057783797",
+   "sha256": "1cwn4cvjjd4l5kk7s6cxzafjmdv3s7k78i73fvscmsnpwx9p2wj0"
+  }
+ },
+ {
+  "ename": "eshell-git-prompt",
+  "commit": "5272280b19579c302ba41b53c77e42bc5e8ccbda",
+  "sha256": "0a8pyppqvnavvb8rwsjxagb76hra9zhs5gwa0ylyznmql83f8w8s",
+  "fetcher": "github",
+  "repo": "xuchunyang/eshell-git-prompt",
+  "unstable": {
+   "version": [
+    20200109,
+    2250
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "48ee35774c9b8d0e2d96110e3ae84bac60f43dfd",
+   "sha256": "1w0drk4sfljshcnlvvn028v4lzqznglfx8ly0mfridsm85xws3pw"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "b6bb2d7bd4e393b4170b29891cfefb72ae020aab",
+   "sha256": "02i00an9wa8ns66xq900la68m7pd4hwv95g83cvf22bypivx7p2y"
+  }
+ },
+ {
+  "ename": "eshell-prompt-extras",
+  "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228",
+  "sha256": "1k0cig7chdm349bp6rz9z105njs9bxicnpkcm4v0nrnk59ynj2h6",
+  "fetcher": "github",
+  "repo": "zwild/eshell-prompt-extras",
+  "unstable": {
+   "version": [
+    20200319,
+    322
+   ],
+   "commit": "1801b3aeccf1363f138fe01ee99d892d10fc2a07",
+   "sha256": "1dgfd9yf4ikn5whqpxyliyp21vs1h852wjfqy5lmxzhnzic1xsi1"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "356a540f9365b2f37f8a8cfb9c0e0e1994d12f4a",
+   "sha256": "0gb07mns23dgqqr6qfy7d6ndizy15sqgbgfaig6k5xbjnwi02v9g"
+  }
+ },
+ {
+  "ename": "eshell-toggle",
+  "commit": "b7a3cf4c5ed3bb0995eac9dcce939b518a0ef987",
+  "sha256": "06cxjh0cqcafb4skw317f8wria9gv77wbwpc62a276s3zrv961qf",
+  "fetcher": "github",
+  "repo": "4DA/eshell-toggle",
+  "unstable": {
+   "version": [
+    20200107,
+    2230
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "ddfbe0a693497c4d4bc5494a19970ba4f6ab9033",
+   "sha256": "0xqrp8pwbmfxjdqipgpw5nw633mvhjjjm3k3j9sh9xdpmw05hhws"
+  }
+ },
+ {
+  "ename": "eshell-up",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1jyaaw950isissjjgqflfn2bllgdfcyphpbi7il06mv9p0dzpwvy",
+  "fetcher": "github",
+  "repo": "peterwvj/eshell-up",
+  "unstable": {
+   "version": [
+    20170425,
+    1737
+   ],
+   "commit": "9c100bae5c3020e8d9307e4332d3b64e7dc28519",
+   "sha256": "00zdbcncjabgj5mp47l1chymx5na18v2g4kj730dgmj3rnl3iz2q"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "commit": "653121392acd607d5dfbca0832927e06806a2d39",
+   "sha256": "05mfwp8zira7p2ip1rmqa08arlbkv7w1mbx7s5saj655scg7jaq3"
+  }
+ },
+ {
+  "ename": "eshell-z",
+  "commit": "8079cecaa59ad2ef22812960838123effc46a9b3",
+  "sha256": "14ixazj0nscyqsdv7brqnfr0q8llir1pwb91yhl9jdqypmadpm6d",
+  "fetcher": "github",
+  "repo": "xuchunyang/eshell-z",
+  "unstable": {
+   "version": [
+    20191116,
+    333
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "337cb241e17bd472bd3677ff166a0800f684213c",
+   "sha256": "13dwaq8q23rwmrkpy3gvf7aswrkk6b9ak5221xl7n0bld4wdhq3j"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "337cb241e17bd472bd3677ff166a0800f684213c",
+   "sha256": "13dwaq8q23rwmrkpy3gvf7aswrkk6b9ak5221xl7n0bld4wdhq3j"
+  }
+ },
+ {
+  "ename": "eslint-fix",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0ry271jlv95nhdqx6qxmvkpa10lpwkg1q6asnliviwplq2mxw2da",
+  "fetcher": "github",
+  "repo": "codesuki/eslint-fix",
+  "unstable": {
+   "version": [
+    20180514,
+    700
+   ],
+   "commit": "f81f3b47a47460611fbdbdae1d23275ec78f2f8d",
+   "sha256": "0k3asz3mdz4nm8lq37x9rgx4wb8hsfyr0hlfyhzwdb10x57jfzns"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "be90d1e78b1dfd43b6b3b1c06868539e2ac27d3a",
+   "sha256": "1l7pm0ywjby0giilyn6qsz1zh54sgmvmii7y9jhrva13c5kgg9an"
+  }
+ },
+ {
+  "ename": "eslintd-fix",
+  "commit": "c72d2b3ee9b8066d51d09e165e58e9846ca879cc",
+  "sha256": "0lv4xpp9bm1yyn9mj7hpgw1v46yyxr0nlwggbav78jbg4v7ai04v",
+  "fetcher": "github",
+  "repo": "aaronjensen/eslintd-fix",
+  "unstable": {
+   "version": [
+    20190830,
+    2116
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "0c431141be9a408c28aead152ea454df0804364f",
+   "sha256": "0yyssbgfi3fg3dbfrzsy9sms42z87apk6amql8pijwzb3b735jc2"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "97e8aa9b106e3e4b3a44c775ca972bdd2feda9ec",
+   "sha256": "1g6bv58m1052x2f5ffs17ryyqv0ay8vii5bwqs7dyfhlpppsn6c8"
+  }
+ },
+ {
+  "ename": "esonify",
+  "commit": "8a05dadbf515af6202d1cb96d4fdceb07bb7a6da",
+  "sha256": "0facvhl6p4v1h3magvp6lzahdzbgg7a15hbj9rgfncvfzfjzlq5a",
+  "fetcher": "github",
+  "repo": "oflatt/esonify",
+  "unstable": {
+   "version": [
+    20190110,
+    1621
+   ],
+   "deps": [
+    "cl-lib",
+    "deferred"
+   ],
+   "commit": "bdc79d4ab2e3c449b5bef46e5cabc552beeed5c6",
+   "sha256": "03xl6a49pg3y1g3dl7fglrn956ynzj2vlviwlv08ngflvbn5shai"
+  }
+ },
+ {
+  "ename": "espresso-theme",
+  "commit": "e608f40d00a3b2a80a6997da00e7d04f76d8ef0d",
+  "sha256": "1njc1ppi1jvb3mdckr19kbk7g0a3dx8j4d6j101ygszzrr24ycmv",
+  "fetcher": "github",
+  "repo": "dgutov/espresso-theme",
+  "unstable": {
+   "version": [
+    20181025,
+    826
+   ],
+   "commit": "d2fa034eb833bf37cc6842017070725e0da9b046",
+   "sha256": "0fds36w6l2aaa88wjkd2ck561i0wwpxgz5ldadhbi5lvfwj9386m"
+  }
+ },
+ {
+  "ename": "espuds",
+  "commit": "14cf66e6929db2a0f377612e786aaed9eb12b799",
+  "sha256": "16yzw9l64ahf5v92jzb7vyb4zqxxplq6qh0y9rkfmvm59s4nhk6c",
+  "fetcher": "github",
+  "repo": "ecukes/espuds",
+  "unstable": {
+   "version": [
+    20160905,
+    1300
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "78fc53feaf77a98d63894cd410faee2a18107b00",
+   "sha256": "04479z1397vaz48bxx3f1xdvxnq1p01gg1y5f3hcbswjl8j3ahmr"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    3
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "1405972873339e056517217136de4ad3202d744a",
+   "sha256": "16r4j27j9yfdiy841w9q5ykkc6n3wrm7hvfacagb32mydk821ijg"
+  }
+ },
+ {
+  "ename": "espy",
+  "commit": "184718ee62f25b2bfed7d5126e02bce3290c50c4",
+  "sha256": "1icyiygw7brn4lrp28szmk4kk94n5q1zlrzrl6z7y0hdhdsjflgg",
+  "fetcher": "github",
+  "repo": "walseb/espy",
+  "unstable": {
+   "version": [
+    20200317,
+    2333
+   ],
+   "commit": "2c01be937a5e5bde62921684a0b27300705fb4e0",
+   "sha256": "1nnnr184y29g1svxqxlqyg5irzrf1xmay4p78jfv8v07sisl90kp"
+  }
+ },
+ {
+  "ename": "esqlite",
+  "commit": "bbec16cd1682ac15a81304f351f9c4e6b3b70fa9",
+  "sha256": "1dny5qjzl9gaj90ihzbhliwk0n0x7jz333hzf6gaw7wsjmx91wlh",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-esqlite",
+  "unstable": {
+   "version": [
+    20151206,
+    1206
+   ],
+   "deps": [
+    "pcsv"
+   ],
+   "commit": "08a779a821f8d32c1a1985d8d9eb6cf21646ce2e",
+   "sha256": "18dvg2yagk9qyn3xfnhgfv192vyqzahzfy8xgc1fnm7a1l0gcg2x"
+  }
+ },
+ {
+  "ename": "esqlite-helm",
+  "commit": "bbec16cd1682ac15a81304f351f9c4e6b3b70fa9",
+  "sha256": "00y2nwyx13xlny40afczr31lvbpnw1cgmj5wc3iycyznizg5kvhq",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-esqlite",
+  "unstable": {
+   "version": [
+    20151116,
+    850
+   ],
+   "deps": [
+    "esqlite",
+    "helm"
+   ],
+   "commit": "08a779a821f8d32c1a1985d8d9eb6cf21646ce2e",
+   "sha256": "18dvg2yagk9qyn3xfnhgfv192vyqzahzfy8xgc1fnm7a1l0gcg2x"
+  }
+ },
+ {
+  "ename": "ess",
+  "commit": "678b5515b5194da6ca605c2070ce1f3ed730f008",
+  "sha256": "0nw56mjp17xw7ay2ka10rxa0sa764spsvzjrh5hscn7x02qychy9",
+  "fetcher": "github",
+  "repo": "emacs-ess/ESS",
+  "unstable": {
+   "version": [
+    20200516,
+    522
+   ],
+   "deps": [
+    "julia-mode"
+   ],
+   "commit": "8f04fa92a11cdb4a3777755fdbaaa65e076f04ef",
+   "sha256": "10cg90aqlr5y3vmp94zhkwj3l178l9f32igpl38bzxm9hmdgikfr"
+  },
+  "stable": {
+   "version": [
+    18,
+    10,
+    2
+   ],
+   "deps": [
+    "julia-mode"
+   ],
+   "commit": "0728c6fdf8e13f10ee50b27fb3f39e7c229f05b1",
+   "sha256": "1yq41l2bicwjrc0b731iic20cpcnz6ppigri1jn621qv2qv22vy3"
+  }
+ },
+ {
+  "ename": "ess-R-data-view",
+  "commit": "492c90bd0ee97c0b895efa0c5e647b2becc6db11",
+  "sha256": "0r2fzwayf3yb7fqk6f31x4xfqiiczwik8qw4rrvkqx2h3s1kz7i0",
+  "fetcher": "github",
+  "repo": "myuhe/ess-R-data-view.el",
+  "unstable": {
+   "version": [
+    20130509,
+    1158
+   ],
+   "deps": [
+    "ctable",
+    "ess",
+    "popup"
+   ],
+   "commit": "d6e98d3ae1e2a2ea39a56eebcdb73e99d29562e9",
+   "sha256": "1ya2ay52gkrd31pmw45ban8kkxgnzhhwkzkypwdhjfccq3ys835x"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "ctable",
+    "ess",
+    "popup"
+   ],
+   "commit": "d6e98d3ae1e2a2ea39a56eebcdb73e99d29562e9",
+   "sha256": "1ya2ay52gkrd31pmw45ban8kkxgnzhhwkzkypwdhjfccq3ys835x"
+  }
+ },
+ {
+  "ename": "ess-smart-equals",
+  "commit": "4403cf87e05311d7fe0360f35f9634b9fdfc6f81",
+  "sha256": "0mfmxmsqr2byj56psx4h08cjc2j3aac3xqr04yd47k2mlivnyrxp",
+  "fetcher": "github",
+  "repo": "genovese/ess-smart-equals",
+  "unstable": {
+   "version": [
+    20190204,
+    449
+   ],
+   "deps": [
+    "ess"
+   ],
+   "commit": "746cf9e78c3b86cbbf78d69c335a8a4ff3da79d6",
+   "sha256": "1by8bzw3yl86mqzh7lwz5dca243n956jnd2rz4vilpgbh5cka2l3"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "deps": [
+    "ess"
+   ],
+   "commit": "746cf9e78c3b86cbbf78d69c335a8a4ff3da79d6",
+   "sha256": "1by8bzw3yl86mqzh7lwz5dca243n956jnd2rz4vilpgbh5cka2l3"
+  }
+ },
+ {
+  "ename": "ess-smart-underscore",
+  "commit": "b4d6166f5c80cf37c79256402fa633ad2274d065",
+  "sha256": "01pki1xa8zpgvldcbjwg6vmslj7ddf44hsx976xipc95vrdk15r2",
+  "fetcher": "github",
+  "repo": "mattfidler/ess-smart-underscore.el",
+  "unstable": {
+   "version": [
+    20190309,
+    101
+   ],
+   "deps": [
+    "ess"
+   ],
+   "commit": "aa871c5b0448515db439ea9bed6a8574e82ddb47",
+   "sha256": "0knb4zfva2m0vd8awcfy5kyd21rjdhxnc1n74qazr9y82l5w7i9b"
+  },
+  "stable": {
+   "version": [
+    0,
+    81
+   ],
+   "deps": [
+    "ess"
+   ],
+   "commit": "ed4b37e8976124a182196a721068a8e334b6aa97",
+   "sha256": "00hkq5q1ra9mqjj08f357m1lg1wx1sj4nm0rb382vhf31mlj15m7"
+  }
+ },
+ {
+  "ename": "ess-view",
+  "commit": "96960a8799138187b748a47ac007dc25d739fe10",
+  "sha256": "1zx5sbxmbs6ya349ic7yvnx56v3km2cb27p8kan5ygisnwwq2wc4",
+  "fetcher": "github",
+  "repo": "GioBo/ess-view",
+  "unstable": {
+   "version": [
+    20181001,
+    1730
+   ],
+   "deps": [
+    "ess",
+    "f",
+    "s"
+   ],
+   "commit": "d4e5a340b7bcc58c434867b97923094bd0680283",
+   "sha256": "1yzki5f2k7gmj4m0871h4h46zalv2x71rbpa6glkfx7bm9kyc193"
+  }
+ },
+ {
+  "ename": "esup",
+  "commit": "b9d2948a42da5d4864404d2d11a924a4f235fc3b",
+  "sha256": "0cv3zc2zzm38ki3kxq58g9sp4gsk3dffa398wky6z83a3zc02zs0",
+  "fetcher": "github",
+  "repo": "jschaf/esup",
+  "unstable": {
+   "version": [
+    20200318,
+    2256
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "c9c95e245068d15d8e2732098af9a5d2bc8ec931",
+   "sha256": "0i4cwwvs5zs8g2ajrrkqgrpxzywsa255rc1g7a6bxzvg9hk77f4k"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "49e05d4f96adfbf71e608a78d23bbf148a8a7fc0",
+   "sha256": "020svy3r1m7xs38vcinad8kjd4622wvh4scfmjpklbln8r99n178"
+  }
+ },
+ {
+  "ename": "esxml",
+  "commit": "db6556fe1b2403d1bcdade263986fd0faf0d9087",
+  "sha256": "1375gryii984l33gc8f8yhl3vncjmw1w9k6xpvjgmnpx2fwr1vbq",
+  "fetcher": "github",
+  "repo": "tali713/esxml",
+  "unstable": {
+   "version": [
+    20171129,
+    807
+   ],
+   "commit": "193d199305e7abcb5ed795b9bc5434ded20ae60e",
+   "sha256": "1cbzdwfndz6pdmb3vzb6l2smxb2l47sncmkccya0nzlvvhz3p8c0"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    4
+   ],
+   "commit": "5548ceba17deae0c3c6d0092672edc4de3c75ce3",
+   "sha256": "00vv8a75wdklygdyr4km9mc2ismxak69c45jmcny41xl44rp9x8m"
+  }
+ },
+ {
+  "ename": "etable",
+  "commit": "afee0fed80f4fa444116b12653c034d760f5f1fb",
+  "sha256": "0m4h24mmhp680wfhb90im228mrcyxapzyi4kla8xdmss83gc0c32",
+  "fetcher": "github",
+  "repo": "Fuco1/ETable",
+  "unstable": {
+   "version": [
+    20161028,
+    2009
+   ],
+   "deps": [
+    "dash",
+    "interval-list"
+   ],
+   "commit": "d502141f0c69bf95256ba5cb9cd15350c7e942d2",
+   "sha256": "0k0g58qzkkzall715k0864v3b7p5jnfwxqgmkj087x34frcf388k"
+  }
+ },
+ {
+  "ename": "eterm-256color",
+  "commit": "e556383f7e18c0215111aa720d4653465e91eff6",
+  "sha256": "1mxc2hqjcj67jq5k4621a7f089qahcqw7f0dzqpaxn7if11w333b",
+  "fetcher": "github",
+  "repo": "dieggsy/eterm-256color",
+  "unstable": {
+   "version": [
+    20190123,
+    401
+   ],
+   "deps": [
+    "f",
+    "xterm-color"
+   ],
+   "commit": "0f0dab497239ebedbc9c4a48b3ec8cce4a47e980",
+   "sha256": "00ins8n92p5aspr6bjrvn5y5w0ximakk22yklsfmkav4h10al4as"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    13
+   ],
+   "deps": [
+    "f",
+    "xterm-color"
+   ],
+   "commit": "dab96af559deb443c4c9c00e23389926e1607192",
+   "sha256": "0ysxblc90kjcz84siprnyxwh94scflivqbxylzkvjm7hbx93rsh1"
+  }
+ },
+ {
+  "ename": "eterm-fn",
+  "commit": "a1955059915511fd16c2d671c262dde47adf724a",
+  "sha256": "1v4kpix16a07i95lcryj65ln0l31vs9k7jfnmdyrpsf7q2mw7z0j",
+  "fetcher": "github",
+  "repo": "oitofelix/eterm-fn",
+  "unstable": {
+   "version": [
+    20191010,
+    2331
+   ],
+   "deps": [
+    "term"
+   ],
+   "commit": "66f3b2f6308fa2ac4d8a32be5a7e35a96e08a9ee",
+   "sha256": "1vw2ha3x2yfkb20g9hfppkrb3mp9r07shb65wsf1b99mw8m22xwi"
+  }
+ },
+ {
+  "ename": "ethan-wspace",
+  "commit": "9454f3a58e3416fa60d8411b0db19c408935408f",
+  "sha256": "0k4kqkf5c6ysyhh1vpi9v4220yxm5ir3ippq2gmvvhnk77pg6hws",
+  "fetcher": "github",
+  "repo": "glasserc/ethan-wspace",
+  "unstable": {
+   "version": [
+    20190522,
+    1448
+   ],
+   "commit": "0f110fc26b829093c352e8dc9e50ba51a4e483ac",
+   "sha256": "1w26cczq58xyzgmpsks11dnl58kvzk0av2y4bg46cgma4fdg9pb1"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    1
+   ],
+   "commit": "e055ee6730c0b03525d32e67511ef6c51e4c29e4",
+   "sha256": "0ik3y60xd3ap1pg5dr5ab6bq4qh8gblpgz1iiprmv7acr3ckzc41"
+  }
+ },
+ {
+  "ename": "euslisp-mode",
+  "commit": "b04fffe5e52f26e92930a112a64531228f94e340",
+  "sha256": "0v92lry9ynkvsvx060njaw1j5lj9sb1i3srs2hfqqwyqni5ldkri",
+  "fetcher": "github",
+  "repo": "iory/euslisp-mode",
+  "unstable": {
+   "version": [
+    20170830,
+    1929
+   ],
+   "deps": [
+    "exec-path-from-shell",
+    "helm-ag",
+    "s"
+   ],
+   "commit": "db62a2d148482317794727982576494596365a55",
+   "sha256": "187ij4s7mzppgmh0ifny70mw8w31nq86rhsrmnflz26iywnkp8x2"
+  }
+ },
+ {
+  "ename": "eval-expr",
+  "commit": "f56c5312cc8ffc1a8b31fc342e8e2b8827eff846",
+  "sha256": "0zkphbx7ph4p7qkfxqyr6p8420j9qkvx5wghd1sza6y0kb456872",
+  "fetcher": "github",
+  "repo": "jwiegley/eval-expr",
+  "unstable": {
+   "version": [
+    20120619,
+    647
+   ],
+   "commit": "a0e69e83de41df8dbccefc1962ab4f02206a3328",
+   "sha256": "08zw3qrhqmnv2wxmbf74svk2cx5by4831kyw6rx13imkc4x8kngx"
+  }
+ },
+ {
+  "ename": "eval-in-repl",
+  "commit": "0bee5fb7a7874dd20babd1de7f216c5bda3e0115",
+  "sha256": "10h5vy9wdiqf9dgk1d1bsvp93y8sfcxghzg8zbhhn7m5cqg2wh63",
+  "fetcher": "github",
+  "repo": "kaz-yos/eval-in-repl",
+  "unstable": {
+   "version": [
+    20191116,
+    1107
+   ],
+   "deps": [
+    "ace-window",
+    "dash",
+    "paredit"
+   ],
+   "commit": "c8e5f31a2476c922857d921e367b6a2320ce5a6f",
+   "sha256": "1mrssbl0wyc6iij8zk1y3h9bd3rv53nnrxsij7fn67l1m4z0clyn"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    7
+   ],
+   "deps": [
+    "ace-window",
+    "dash",
+    "paredit"
+   ],
+   "commit": "c8e5f31a2476c922857d921e367b6a2320ce5a6f",
+   "sha256": "1mrssbl0wyc6iij8zk1y3h9bd3rv53nnrxsij7fn67l1m4z0clyn"
+  }
+ },
+ {
+  "ename": "eval-sexp-fu",
+  "commit": "4b1a896521cac1f54f7571ad5837ff215d01044d",
+  "sha256": "17cazf81z4cszflnfp66zyq2cclw5sp9539pxskdf267cf7r0ycs",
+  "fetcher": "github",
+  "repo": "hchbaw/eval-sexp-fu.el",
+  "unstable": {
+   "version": [
+    20191128,
+    825
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "36d2fe3bcf602e15ca10a7f487da103515ef391a",
+   "sha256": "19rv0kwajq0j8inglp84sml23ci74wdcvp5bl6zxbw5skqpf6phr"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "36d2fe3bcf602e15ca10a7f487da103515ef391a",
+   "sha256": "19rv0kwajq0j8inglp84sml23ci74wdcvp5bl6zxbw5skqpf6phr"
+  }
+ },
+ {
+  "ename": "evalator",
+  "commit": "544a503d72c0a501f9ca854cd11181a7783294a3",
+  "sha256": "0k6alxwg89gc4v5m2bxmzmj7l6kywhbh4036xgz19q28xnlbr9xk",
+  "fetcher": "github",
+  "repo": "seanirby/evalator",
+  "unstable": {
+   "version": [
+    20160213,
+    128
+   ],
+   "deps": [
+    "helm-core"
+   ],
+   "commit": "f30da4da48c0b3f3cfa1fc1c7cfdb53ffe79df36",
+   "sha256": "1llxxdprs8yw2hqj4dhrkrrzmkl25h7p4rcaa2cw544fmg3kvlz1"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "helm-core"
+   ],
+   "commit": "edf3840f5aa025cf38d0c2677b2f88f59079409e",
+   "sha256": "1a3y69s7lb24zdivxcpsjh9l6adxyjqxbpgradnj0q1n6kdyq679"
+  }
+ },
+ {
+  "ename": "evalator-clojure",
+  "commit": "5f57089f3e5c8342092128d44451b338af8a769f",
+  "sha256": "10mxlgirnsq3z7l1izrf2v1l1yr4sbdjsaszz7llqv6l80y4bji3",
+  "fetcher": "github",
+  "repo": "seanirby/evalator-clojure",
+  "unstable": {
+   "version": [
+    20160208,
+    2148
+   ],
+   "deps": [
+    "cider",
+    "evalator"
+   ],
+   "commit": "caa4e0a137bdfada86593128a654e16aa617ad50",
+   "sha256": "1q5s1ffmfh5dby92853xm8kjhgjfd5vbvcg1xbf8lswc1i41k7n7"
+  }
+ },
+ {
+  "ename": "eve-mode",
+  "commit": "e0f197adfe64ef88d90d24dfd6532bf52a5bce0d",
+  "sha256": "1ch50bm452g8k1xnqcbpmpwkmg8amzv7bq0hphk3y0kiqkwd1gdh",
+  "fetcher": "github",
+  "repo": "witheve/emacs-eve-mode",
+  "unstable": {
+   "version": [
+    20170822,
+    2231
+   ],
+   "deps": [
+    "markdown-mode",
+    "polymode"
+   ],
+   "commit": "a4661114d9c18725691b76321d72167ca5a9070a",
+   "sha256": "19s6cid42q0lm2w94a7f6sxvmy3zpjdj5r5dbwcxxp5n3qfs7nip"
+  }
+ },
+ {
+  "ename": "evil",
+  "commit": "69567536a89f0294726ae58f748386a8d336c55e",
+  "sha256": "0nbfhynlv213rjl6jh4lji1q94s99q4iv18mnd3x23r91sx7ssm3",
+  "fetcher": "github",
+  "repo": "emacs-evil/evil",
+  "unstable": {
+   "version": [
+    20200516,
+    1740
+   ],
+   "deps": [
+    "cl-lib",
+    "goto-chg",
+    "undo-tree"
+   ],
+   "commit": "3f3b2fea87172f155e5f91d75f0fb69d8648acf2",
+   "sha256": "0ihb42v513c9jrh8d0v5a76ykhqi408cdnfpilrwq9499qr22jdg"
+  },
+  "stable": {
+   "version": [
+    1,
+    14,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "goto-chg",
+    "undo-tree"
+   ],
+   "commit": "4dc63903d9688e2ce838a220b0e24d8f14a64c12",
+   "sha256": "17xrn3s6a4afmls8fw8nnxa1jq9dmj2qqrxa2vngh50hxpz8840p"
+  }
+ },
+ {
+  "ename": "evil-anzu",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "08cc33wjq5853c0hqwn30342ylkfldy7xg7yd2ak0apjxnz4qr40",
+  "fetcher": "github",
+  "repo": "emacsorphanage/evil-anzu",
+  "unstable": {
+   "version": [
+    20200514,
+    1902
+   ],
+   "deps": [
+    "anzu",
+    "evil"
+   ],
+   "commit": "d3f6ed4773b48767bd5f4708c7f083336a8a8a86",
+   "sha256": "0ribvnw2slaad4xlcyxhg3linvd810qqn52qpyrjsq0dnqrpmwyl"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "anzu",
+    "evil"
+   ],
+   "commit": "64cc08a3546373f28cd7bfd76a3e93bd78efa251",
+   "sha256": "0lw7fg4gqwj30r0l6k2ni36sxqkf65zf0d0z3rxnpwbxlf8dlkrr"
+  }
+ },
+ {
+  "ename": "evil-args",
+  "commit": "0976c82a22f1a8701b9da0b8ba4753ed48191376",
+  "sha256": "1bwdvf1i3jc77bw2as1wr1djm8z3a7wms60694xkyqh0m909hs2w",
+  "fetcher": "github",
+  "repo": "wcsmith/evil-args",
+  "unstable": {
+   "version": [
+    20180908,
+    2157
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "758ad5ae54ad34202064fec192c88151c08cb387",
+   "sha256": "0k35glgsirc3cph8v5hhjrqfh4ndwh8a28qbr03y3jl8s453xcj7"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "2a88b4d19953a11227cc1e91973b92149116f44c",
+   "sha256": "1nh7wa4ynr7ln42x32znzqsmh7ijzy5ymd7rszf49l8677alvazq"
+  }
+ },
+ {
+  "ename": "evil-avy",
+  "commit": "f86bccc9f2190cfa5487cf8e9c9b7938774533ed",
+  "sha256": "1hc96dd78yxgr8cs9sk9y1i5h1qnyk110vlb3wnlxv1hwn92qvrd",
+  "fetcher": "github",
+  "repo": "louy2/evil-avy",
+  "unstable": {
+   "version": [
+    20150908,
+    748
+   ],
+   "deps": [
+    "avy",
+    "cl-lib",
+    "evil"
+   ],
+   "commit": "2dd955cc3ecaa7ddeb67b295298abdc6d16dd3a5",
+   "sha256": "1q6znbnshk45mdglx519qlbfhb7g47qsm245i93ka4djsjy55j9l"
+  }
+ },
+ {
+  "ename": "evil-better-visual-line",
+  "commit": "c46640394c29643eea4e59066bab9963db67b8d7",
+  "sha256": "00l6gd66apf0gphlx5hk9lcl7rmj7ag8kf558psyzcyvhpmff2bq",
+  "fetcher": "github",
+  "repo": "YourFin/evil-better-visual-line",
+  "unstable": {
+   "version": [
+    20200123,
+    2045
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "4373f930ab1a8d3a2a90e68540967702313b2ce9",
+   "sha256": "0dnh932ib3hhphprm1jjh1hdwnj96d6cnfc64rj2y4mgxji4y19l"
+  }
+ },
+ {
+  "ename": "evil-cleverparens",
+  "commit": "e3b3637d6527b16ea0d606fd87b01004be446b09",
+  "sha256": "10zkyaxy52ixh26hzm9v1y0gakcn5sdwz4ny8v1vcmjqjphnk799",
+  "fetcher": "github",
+  "repo": "luxbock/evil-cleverparens",
+  "unstable": {
+   "version": [
+    20170718,
+    413
+   ],
+   "deps": [
+    "dash",
+    "evil",
+    "paredit",
+    "smartparens"
+   ],
+   "commit": "8c45879d49bfa6d4e414b6c1df700a4a51cbb869",
+   "sha256": "0lhnybpnk4n2yhlcnj9zxn0vi5hpjfaqfhvyfy7ckzz74g8v7iyw"
+  }
+ },
+ {
+  "ename": "evil-colemak-basics",
+  "commit": "945417d19faf492fb678aee3ba692d14e7518d85",
+  "sha256": "1sbbli0hdmpc23f3g5n95svqfdg3rlvf71plyvpv1a6va9jhi83k",
+  "fetcher": "github",
+  "repo": "wbolster/evil-colemak-basics",
+  "unstable": {
+   "version": [
+    20170425,
+    1209
+   ],
+   "deps": [
+    "evil",
+    "evil-snipe"
+   ],
+   "commit": "7844079b47f47bb1dc24c885b0ac2e67524fa960",
+   "sha256": "0phspmd31pcxana2lp6mqywmghhdpj6ydsrl1bjn4b1gcp1fqsy2"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    0
+   ],
+   "deps": [
+    "evil",
+    "evil-snipe"
+   ],
+   "commit": "7844079b47f47bb1dc24c885b0ac2e67524fa960",
+   "sha256": "0phspmd31pcxana2lp6mqywmghhdpj6ydsrl1bjn4b1gcp1fqsy2"
+  }
+ },
+ {
+  "ename": "evil-colemak-minimal",
+  "commit": "828c744062069027f19fe5f2f233179f9149dc16",
+  "sha256": "0qi5k17b9k227zz9binbrd22cwmlqxkay98by9yxcbyhl4hjhdyy",
+  "fetcher": "github",
+  "repo": "bmallred/evil-colemak-minimal",
+  "unstable": {
+   "version": [
+    20171006,
+    1317
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "6d98b6da60f414524a0d718f76024c26dce742b3",
+   "sha256": "0pd05jq4qkw5xx7xqzxzx62fsm77vjz0ry9ayaqgqw5831rbp553"
+  }
+ },
+ {
+  "ename": "evil-collection",
+  "commit": "fbc35279115f6fdf1ce7d1ecef3b413c7ca9c4f1",
+  "sha256": "1l6x782ix873n90k9g00i9065h31dnhv07bgzrp28l7y7bivqwl7",
+  "fetcher": "github",
+  "repo": "emacs-evil/evil-collection",
+  "unstable": {
+   "version": [
+    20200513,
+    804
+   ],
+   "deps": [
+    "annalist",
+    "cl-lib",
+    "evil"
+   ],
+   "commit": "e998952dfe73d296259905e1bd8f96659bfe2661",
+   "sha256": "1r896jbshniaxxh15iw87yklnr2hq5as3a8w6xb202gxz5pvc4ym"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "deps": [
+    "annalist",
+    "cl-lib",
+    "evil"
+   ],
+   "commit": "34d515e99e911f368b335bbccc026b71b42a9821",
+   "sha256": "1737dbwv8fa9kps340jsvjyz4gd5vjf3zrdzbvjcjh56ssvdaw2w"
+  }
+ },
+ {
+  "ename": "evil-commentary",
+  "commit": "fe5b05152c919d49ddd920b1bd5ffc351141fa0d",
+  "sha256": "151iiimmkpn58pl9zn40qssfahbrqy83axyl9dcd6kx2ywv5gcxz",
+  "fetcher": "github",
+  "repo": "linktohack/evil-commentary",
+  "unstable": {
+   "version": [
+    20170413,
+    1451
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "395f91014b69844b81660c155f42eb9b1b3d199d",
+   "sha256": "0zjs9zyqfygnpxapvf0ymmiid40i06cxbhjzd81zw33nafgkf6r4"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    1
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "395f91014b69844b81660c155f42eb9b1b3d199d",
+   "sha256": "0zjs9zyqfygnpxapvf0ymmiid40i06cxbhjzd81zw33nafgkf6r4"
+  }
+ },
+ {
+  "ename": "evil-dvorak",
+  "commit": "69abca9985339c59ee0e2334cabf3c99e1ba1349",
+  "sha256": "1iq9wzcb625vs942khja39db1js8r46vrdiqcm47yfji98g39gsn",
+  "fetcher": "github",
+  "repo": "jbranso/evil-dvorak",
+  "unstable": {
+   "version": [
+    20160416,
+    1841
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "824f7c56980d72a0ff04c662223540cd66f13754",
+   "sha256": "15rnxhqc56g4ydr8drvcgzvjp8blxsarm86dqc36rym7g5gnxr20"
+  }
+ },
+ {
+  "ename": "evil-easymotion",
+  "commit": "e67955ead0b9d69acab40d66d4e0b821229d635c",
+  "sha256": "0zixgdhc228y6yqr044cbyls0pihzacqsgvybhhar916p4h8izgv",
+  "fetcher": "github",
+  "repo": "PythonNut/evil-easymotion",
+  "unstable": {
+   "version": [
+    20200424,
+    135
+   ],
+   "deps": [
+    "avy",
+    "cl-lib"
+   ],
+   "commit": "f96c2ed38ddc07908db7c3c11bcd6285a3e8c2e9",
+   "sha256": "0xsva9bnlfwfmccm38qh3yvn4jr9za5rxqn4pwxbmhnx4rk47cch"
+  }
+ },
+ {
+  "ename": "evil-ediff",
+  "commit": "b3eff8cd4bedff3e2111d96743d94be5053826f1",
+  "sha256": "0yglhxm670996hd7305q38y5f47y87n75hh0q7qlm2vra2m2wa5s",
+  "fetcher": "github",
+  "repo": "emacs-evil/evil-ediff",
+  "unstable": {
+   "version": [
+    20170724,
+    1923
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "50d26cb0654fca8f8fd7227410e5cbf0b8f681cf",
+   "sha256": "0x81ws1kaiklqnsywvjyv5pifsj5hd3wsl1wq11aqik34kjxfy2g"
+  }
+ },
+ {
+  "ename": "evil-embrace",
+  "commit": "d4886f068766514deab5673b4366d6bdd311e3b6",
+  "sha256": "10cfkksh3llyfk26x36b7ri0x6a6hrcv275pxk7ckhs1pyhb14y7",
+  "fetcher": "github",
+  "repo": "cute-jumper/evil-embrace.el",
+  "unstable": {
+   "version": [
+    20160519,
+    1829
+   ],
+   "deps": [
+    "embrace",
+    "evil-surround"
+   ],
+   "commit": "4379adea032b25e359d01a36301b4a5afdd0d1b7",
+   "sha256": "0rj1ippc6yi560xalhd91r7a00lk3d0jk13w464myznkpnasfw3a"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "embrace",
+    "evil-surround"
+   ],
+   "commit": "4379adea032b25e359d01a36301b4a5afdd0d1b7",
+   "sha256": "0rj1ippc6yi560xalhd91r7a00lk3d0jk13w464myznkpnasfw3a"
+  }
+ },
+ {
+  "ename": "evil-escape",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0jiwsgcqw8m6z4z82gx0m0r0vbvkcxc0czhn4mqjwkhhglwzgi8l",
+  "fetcher": "github",
+  "repo": "syl20bnr/evil-escape",
+  "unstable": {
+   "version": [
+    20180910,
+    1234
+   ],
+   "commit": "f4e9116bfbaac8c9d210c17ad488e0982291245f",
+   "sha256": "1whppnlzkjig1yrz0fjvp8cy86215gjahgh88166nzk95wlc3pvf"
+  },
+  "stable": {
+   "version": [
+    3,
+    14
+   ],
+   "deps": [
+    "cl-lib",
+    "evil"
+   ],
+   "commit": "b4d44fc5015341e484495fc86b73d09b2ac062ec",
+   "sha256": "0s8lmmm25qabicwaj9jybpbd8mkc62yl7jnhk1lpablydjkv3w2i"
+  }
+ },
+ {
+  "ename": "evil-ex-fasd",
+  "commit": "8ebdddebb0272765ebbf72073da8c2158a05f624",
+  "sha256": "1zljsrpbsimldpc1wviw87vgm6941zz4wy8vhpplwkfbnywiwnp7",
+  "fetcher": "github",
+  "repo": "yqrashawn/evil-ex-fasd",
+  "unstable": {
+   "version": [
+    20180903,
+    612
+   ],
+   "deps": [
+    "evil",
+    "fasd"
+   ],
+   "commit": "ed8fbbe23a8a268d9dcbf1a6132e928ba2c655c5",
+   "sha256": "0fr57nlg7m65gzhnrwnqi5bgy4vzl0l0mxk63sr3561r8fnm8hbc"
+  }
+ },
+ {
+  "ename": "evil-ex-shell-command",
+  "commit": "6d4205a35cc0c4518ab1424d91bbc627e8cdae42",
+  "sha256": "1lbk31l7g6n6lqm8rvsfqbagqvhkp0s2v6wz8x4fnrjj0ymd4syf",
+  "fetcher": "github",
+  "repo": "yqrashawn/evil-ex-shell-command",
+  "unstable": {
+   "version": [
+    20181226,
+    226
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "a6ca6d27c07f6a0807abfb5b8f8865f1d17f54aa",
+   "sha256": "0jx2cj6p8wag7aphbgf3ij5v71prxkbxpfia8nmcpmrpvjqpsb74"
+  }
+ },
+ {
+  "ename": "evil-exchange",
+  "commit": "9b06397c032d24a8da4074ad97cdb30d0c468e20",
+  "sha256": "1mvw7w23yfbfmhzj6wimslbryb0gppryw24ac0wh4fzl9rdcma4r",
+  "fetcher": "github",
+  "repo": "Dewdrops/evil-exchange",
+  "unstable": {
+   "version": [
+    20200118,
+    252
+   ],
+   "deps": [
+    "cl-lib",
+    "evil"
+   ],
+   "commit": "3030e21ee16a42dfce7f7cf86147b778b3f5d8c1",
+   "sha256": "0zchmnzkq7bz2c4hl95xwnz5w243ya4ryi6hgbdss7mc9rnyyarh"
+  }
+ },
+ {
+  "ename": "evil-expat",
+  "commit": "f08f6396e66479eb9510727968c5bb01ac239476",
+  "sha256": "03niji6wymhlfkvdg90gasccs4683djxcj925c8k0vdgmfr8sx32",
+  "fetcher": "github",
+  "repo": "edkolev/evil-expat",
+  "unstable": {
+   "version": [
+    20190521,
+    714
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "f4fcd0aa3edc359adb5c986b5dd9188d220d84e2",
+   "sha256": "0872ix682hkdz0k8pn6sb54rqkx00rz5fxpd5j2snx406yagpaxz"
+  }
+ },
+ {
+  "ename": "evil-extra-operator",
+  "commit": "fc0b157c3adf8a2899c4dd2ce98e8a81e4f403a3",
+  "sha256": "066apin0yrjx7zr007p2h9p2nq58lz7qikzjzg0spqkb8vy7vkc5",
+  "fetcher": "github",
+  "repo": "Dewdrops/evil-extra-operator",
+  "unstable": {
+   "version": [
+    20161213,
+    403
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "e16a9b36f9901254da9af8a73871061616410fc3",
+   "sha256": "116srvfck3b244shxm9cmw3yvpprjgr840fvcv6jwwpfaphafxw4"
+  }
+ },
+ {
+  "ename": "evil-find-char-pinyin",
+  "commit": "8755d2fca519f23f11c5cbb53443a2ad4340220e",
+  "sha256": "0n52ijdf5hy7mn0rab4493zs2nrf7r1qkmvf0algqaj7bfjscs79",
+  "fetcher": "github",
+  "repo": "cute-jumper/evil-find-char-pinyin",
+  "unstable": {
+   "version": [
+    20160514,
+    2041
+   ],
+   "deps": [
+    "evil",
+    "pinyinlib"
+   ],
+   "commit": "04e277946d658f1a73c68dcbbadea9c21097a31c",
+   "sha256": "1bsy2bynzxr1ibyidv2r21xnfnxbzr0xh5m3h05s5igbmajxr12d"
+  }
+ },
+ {
+  "ename": "evil-fringe-mark",
+  "commit": "70dcc07c389d5454de64fb08cd666d489d6d5483",
+  "sha256": "1ahlbp31ll24vzah4bv1xx58gn8y8fsjb0n9a135zwb3fjla9drb",
+  "fetcher": "github",
+  "repo": "Andrew-William-Smith/evil-fringe-mark",
+  "unstable": {
+   "version": [
+    20190320,
+    453
+   ],
+   "deps": [
+    "evil",
+    "fringe-helper",
+    "goto-chg"
+   ],
+   "commit": "a1689fddb7ee79aaa720a77aada1208b8afd5c20",
+   "sha256": "0pf8bl7bmcn1l0dlxkgbgwb1n2fxpzxwcr4jf06gzyrrmmwah526"
+  }
+ },
+ {
+  "ename": "evil-god-state",
+  "commit": "46b8586e9a821efb67539155f783a32867084bfa",
+  "sha256": "1g547d58zf11qw0zz3fk5kmrzmfx1rhawyh5d2h8bll8hwygnrxf",
+  "fetcher": "github",
+  "repo": "gridaphobe/evil-god-state",
+  "unstable": {
+   "version": [
+    20141117,
+    255
+   ],
+   "deps": [
+    "evil",
+    "god-mode"
+   ],
+   "commit": "3d44197dc0a1fb40e7b7ff8717f8a8c339ce1d40",
+   "sha256": "1cv24qnxxf6n1grf4n5969v8y9xll5zb9mbfdnq9iavdvhnndk2h"
+  }
+ },
+ {
+  "ename": "evil-goggles",
+  "commit": "811b1261705b4c525e165fa9ee23ae191727a623",
+  "sha256": "151xvawyhcjp98skaif08wbxqaw602f51zgwm604hp25a111qmnq",
+  "fetcher": "github",
+  "repo": "edkolev/evil-goggles",
+  "unstable": {
+   "version": [
+    20200101,
+    1935
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "08a22058fd6a167f9f1b684c649008caef571459",
+   "sha256": "1p3vjrij63v9nrcyj3b5jsqzv9y7dgv9i1inx1q7x3s90vndavac"
+  }
+ },
+ {
+  "ename": "evil-iedit-state",
+  "commit": "b0b6b7d09c023cfe34da65fa1eb8f3fdbe7b1290",
+  "sha256": "1dihyh7vqcp7kvfic613k7v33czr93hz04d635awrsyzgy8savhl",
+  "fetcher": "github",
+  "repo": "syl20bnr/evil-iedit-state",
+  "unstable": {
+   "version": [
+    20180607,
+    558
+   ],
+   "deps": [
+    "evil",
+    "iedit"
+   ],
+   "commit": "f75cff4ecbd5beaa9ca64a6c157c4105f078daec",
+   "sha256": "0f6m5wi1q6ac9mkvalm62rlnlkjz1c315a4sa93p6iw9x12llkgw"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "evil",
+    "iedit"
+   ],
+   "commit": "eab7d5e3e7d25c4a852fedb6c0c7f50dd9e9bd7c",
+   "sha256": "0r9gif2sgf84z8qniz6chr32av9g2i38rlyms81m8ssghf0j86ss"
+  }
+ },
+ {
+  "ename": "evil-indent-plus",
+  "commit": "992ea3d372fa3569ad9f838aa2818eaee8b8033a",
+  "sha256": "15vnvch0qsaram22d44k617bqhr9rrf8qc86sf20yvdyy3gi5j12",
+  "fetcher": "github",
+  "repo": "TheBB/evil-indent-plus",
+  "unstable": {
+   "version": [
+    20151109,
+    1906
+   ],
+   "deps": [
+    "cl-lib",
+    "evil"
+   ],
+   "commit": "0c7501e6efed661242c3a20e0a6c79a6455c2c40",
+   "sha256": "1g6r1ydscwjvmhh1zg4q3nap4avk8lb9msdqrh7dff6pla0r2qs6"
+  }
+ },
+ {
+  "ename": "evil-indent-textobject",
+  "commit": "63cfc9c2962780dd5d27da670d5540a0441e7ca2",
+  "sha256": "172a3krid5lrx1w9xcifkhjnvlxg1nbz4w102d99d0grr9465r09",
+  "fetcher": "github",
+  "repo": "cofi/evil-indent-textobject",
+  "unstable": {
+   "version": [
+    20130831,
+    2219
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "70a1154a531b7cfdbb9a31d6922482791e20a3a7",
+   "sha256": "0nghisnc49ivh56mddfdlcbqv3y2vqzjvkpgwv3zp80ga6ghvdmz"
+  }
+ },
+ {
+  "ename": "evil-leader",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "154s2nb170hzksmc87wnzlwg3ic3w3ravgsfvwkyfi2q285vmra6",
+  "fetcher": "github",
+  "repo": "cofi/evil-leader",
+  "unstable": {
+   "version": [
+    20140606,
+    1243
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "39f7014bcf8b36463e0c7512c638bda4bac6c2cf",
+   "sha256": "10xrlimsxk09z9cw6rxdz8qvvn1i0vhc1gdicwxri0j10p0hacl3"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    3
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "753b01eb4958370ae2226b3780ff31fe157c2852",
+   "sha256": "1k2zinchs0jjllp8zkpggckyy63dkyi5yig3p46vh4w45jdzysk5"
+  }
+ },
+ {
+  "ename": "evil-ledger",
+  "commit": "500e99a1b92f0a0c144f843cd7645872034d9fbb",
+  "sha256": "13idy2kbzhckzfwrjnzjrf8h2881w3v8pmhlcj26xcyf4ch0dq9r",
+  "fetcher": "github",
+  "repo": "atheriel/evil-ledger",
+  "unstable": {
+   "version": [
+    20180802,
+    1612
+   ],
+   "deps": [
+    "evil",
+    "ledger-mode"
+   ],
+   "commit": "7a9f9f5d39c42fffdba8004f8982642351f2b233",
+   "sha256": "010r1qn9l3clqqrlia0y25bqjbrixvf8i409v10yxqb949jvw1vk"
+  }
+ },
+ {
+  "ename": "evil-lion",
+  "commit": "8a7a0691775afec6d2c7be3d6739b55bd1d2053d",
+  "sha256": "1rwmpc5ifblb41c1yhhv26ayff4nk9iza7w0wb5ganny2r82fg2v",
+  "fetcher": "github",
+  "repo": "edkolev/evil-lion",
+  "unstable": {
+   "version": [
+    20170811,
+    614
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "6b03593f5dd6e7c9ca02207f9a73615cf94c93ab",
+   "sha256": "1a162hynp0jcsn50c1w5a02mrw9w3q05c7lkqzqd25px3d0p772q"
+  }
+ },
+ {
+  "ename": "evil-lisp-state",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "16h6zi0kkq2zlrwqiz6avnw2ady3h9gmxyinvk5gbkskxf12d1pz",
+  "fetcher": "github",
+  "repo": "syl20bnr/evil-lisp-state",
+  "unstable": {
+   "version": [
+    20160404,
+    248
+   ],
+   "deps": [
+    "bind-map",
+    "evil",
+    "smartparens"
+   ],
+   "commit": "3c65fecd9917a41eaf6460f22187e2323821f3ce",
+   "sha256": "1n6r8xs670r5qp4b5f72nr9g8nlqcrx1v7yqqlbkgv8gns8n5xgh"
+  },
+  "stable": {
+   "version": [
+    8,
+    2
+   ],
+   "deps": [
+    "bind-map",
+    "evil",
+    "smartparens"
+   ],
+   "commit": "3c65fecd9917a41eaf6460f22187e2323821f3ce",
+   "sha256": "1n6r8xs670r5qp4b5f72nr9g8nlqcrx1v7yqqlbkgv8gns8n5xgh"
+  }
+ },
+ {
+  "ename": "evil-lispy",
+  "commit": "377d43f3717b8e17c3adce886aaf3e579383ec64",
+  "sha256": "17z830b0x6lhmqkk07hfbrg63c7q7mpn4zz1ppjd1smv4mcqzyld",
+  "fetcher": "github",
+  "repo": "sp3ctum/evil-lispy",
+  "unstable": {
+   "version": [
+    20190502,
+    739
+   ],
+   "deps": [
+    "evil",
+    "hydra",
+    "lispy"
+   ],
+   "commit": "ed317f7fccbdbeea8aa04a91b1b1f48a0e2ddc4e",
+   "sha256": "0izgd9zwfwykmznv6wjrq9czmjqc1hkw41szrjmrcxy5kbz1p5c0"
+  }
+ },
+ {
+  "ename": "evil-magit",
+  "commit": "50315ec837d2951bf5b2bb75809a35dd7ffc8fe8",
+  "sha256": "02ncki7qrl22804576h76xl4d5lvvk32lzn9gvxn63hb19r0s980",
+  "fetcher": "github",
+  "repo": "emacs-evil/evil-magit",
+  "unstable": {
+   "version": [
+    20200409,
+    1909
+   ],
+   "deps": [
+    "evil",
+    "magit"
+   ],
+   "commit": "253c644807013fe92429acdef418748794b8f254",
+   "sha256": "08mh7phxsdb9w4dfs0pmr4l4fdzzr2rm88z2s8karfi5j5ik2ag5"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    2
+   ],
+   "deps": [
+    "evil",
+    "magit"
+   ],
+   "commit": "a24186be7cc2cdab24b56f6dcc4665eeb8349c1a",
+   "sha256": "12hr2w5r2hgagb3hqbi59v73rxpjml5prc3m7dw3wzsm0rf1rwh3"
+  }
+ },
+ {
+  "ename": "evil-mark-replace",
+  "commit": "e608f40d00a3b2a80a6997da00e7d04f76d8ef0d",
+  "sha256": "14j2d46288shlixb57nh5vlqdi3aiv20djvcbhiw1cm9ar2c3y4v",
+  "fetcher": "github",
+  "repo": "redguardtoo/evil-mark-replace",
+  "unstable": {
+   "version": [
+    20150424,
+    718
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "56cf191724a3e82239ca47a17b071c20aedb0617",
+   "sha256": "01hccc49xxb6lnzr0lwkkwndbk4sv0jyyz3khbcxsgkpzjiydihv"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    4
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "56cf191724a3e82239ca47a17b071c20aedb0617",
+   "sha256": "01hccc49xxb6lnzr0lwkkwndbk4sv0jyyz3khbcxsgkpzjiydihv"
+  }
+ },
+ {
+  "ename": "evil-matchit",
+  "commit": "aeab4a998bffbc784e8fb23927d348540baf9951",
+  "sha256": "01z69n20qs4gngd28ry4kn825cax5km9hn96i87yrvq7nfa64swq",
+  "fetcher": "github",
+  "repo": "redguardtoo/evil-matchit",
+  "unstable": {
+   "version": [
+    20200502,
+    1140
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "943bf5fb2b04e077a797cf192fd7650b41e3c3e4",
+   "sha256": "0iryzs12nn20pj5zcyhdk4mpgyrlah0pzbjawmj0l91clmhwbvhb"
+  },
+  "stable": {
+   "version": [
+    2,
+    3,
+    4
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "5e92e374e6b46176d46323b884c25c44063331da",
+   "sha256": "1nflkmx08n3ya5vaipy1xg19hnqcp6f7ddsx9xjh5gl6ix2iz0az"
+  }
+ },
+ {
+  "ename": "evil-mc",
+  "commit": "96770d778a03ab012fb82a3a0122983db6f9b0c4",
+  "sha256": "0cq4xg6svb5gz4ra607wy768as2igla4h1xcrfnxldknk476fqqs",
+  "fetcher": "github",
+  "repo": "gabesoft/evil-mc",
+  "unstable": {
+   "version": [
+    20200228,
+    1535
+   ],
+   "deps": [
+    "cl-lib",
+    "evil"
+   ],
+   "commit": "4d4c0172e4c7f80acc1d0e73d5fb3e536929b262",
+   "sha256": "1a5glj1n5dyhdaas5b8m3v2p36s1w9qcpmj7gnfxyp75iy0rqlbs"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "deps": [
+    "cl-lib",
+    "evil"
+   ],
+   "commit": "be2259b8cedd62011b25ddbcc1774bbbe9a66c61",
+   "sha256": "0p435ykkq41nksd40qczlhz6kvs2zpkxch661wy0w93wffwnq3b9"
+  }
+ },
+ {
+  "ename": "evil-mc-extras",
+  "commit": "cd7c9aa0f4c17e7f27836e75a0b83c44a68ad744",
+  "sha256": "1px4akqaddqgfd03932d03d3rrvjr5lv5nc94xc448kqcbfn7yjk",
+  "fetcher": "github",
+  "repo": "gabesoft/evil-mc-extras",
+  "unstable": {
+   "version": [
+    20170202,
+    1649
+   ],
+   "deps": [
+    "cl-lib",
+    "evil",
+    "evil-mc",
+    "evil-numbers"
+   ],
+   "commit": "8c1af3232dd1e15b2ea38360b8cd1e857e11c416",
+   "sha256": "0f67ky9w2qapah0l0ym2c6x1j3ngf8whp1ls42f3kzb9gfi36fpn"
+  }
+ },
+ {
+  "ename": "evil-mu4e",
+  "commit": "332f3f9c6dc106e58345abbc2d8fd99056d518c0",
+  "sha256": "1ks4vnga7dkz27a7gza5hakzbcsiqgkq1ysc0lcx7g82ihpmrrcq",
+  "fetcher": "github",
+  "repo": "JorisE/evil-mu4e",
+  "unstable": {
+   "version": [
+    20180613,
+    1039
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "5b22c1e30246318f233264506272d770f63897ca",
+   "sha256": "17qppyw9sx8y6caiwraxnbs4fkhvjsfk4brda7jy9wd0i074mwk4"
+  }
+ },
+ {
+  "ename": "evil-multiedit",
+  "commit": "997f5a6999d1add57fae33ba8eb3e3bc60d7bb56",
+  "sha256": "0p02q9skqw2zhx7sfadqgs7vn518s72856962dam0xw4sqasplfp",
+  "fetcher": "github",
+  "repo": "hlissner/evil-multiedit",
+  "unstable": {
+   "version": [
+    20200229,
+    528
+   ],
+   "deps": [
+    "cl-lib",
+    "evil",
+    "iedit"
+   ],
+   "commit": "9f271e0e6048297692f80ed6c5ae8994ac523abc",
+   "sha256": "03imayy9afv084yl6g4kg6qis3mikllpbbizd2fya7njbsnpbpq1"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    9
+   ],
+   "deps": [
+    "cl-lib",
+    "evil",
+    "iedit"
+   ],
+   "commit": "cb35914ffabb4f65d22ab2f812ff6e7622cc5c26",
+   "sha256": "19h3kqylqzbjv4297wkzzxdmn9yxbg6z4ga4ssrqri90xs7m3rw3"
+  }
+ },
+ {
+  "ename": "evil-nerd-commenter",
+  "commit": "a3e1ff69e7cc95a5b5d628524ad836833f4ee736",
+  "sha256": "1pa5gh065hqn5mhs47qvjllwdwwafl0clk555mb6w7svq58r6i8d",
+  "fetcher": "github",
+  "repo": "redguardtoo/evil-nerd-commenter",
+  "unstable": {
+   "version": [
+    20200417,
+    59
+   ],
+   "commit": "1bd2de52011c39777a3e8779b14cee2790dc873b",
+   "sha256": "0h8hzqjh6qq4fj0imrb5ic5m4zn3ig6s3b7b2x9r6ig9m15jpg6n"
+  },
+  "stable": {
+   "version": [
+    3,
+    5,
+    1
+   ],
+   "commit": "fa40dab8d2f010db17e1e62dfd245c1504d0542f",
+   "sha256": "0dn712k54qsxy82jqbqip77k5i3zv8m7afj2yi39zqx28iqvic0z"
+  }
+ },
+ {
+  "ename": "evil-nl-break-undo",
+  "commit": "a43ea989f52cebadc68c8e9c0f87f8f2e23b0974",
+  "sha256": "0q6b459z06h4l47b5lcxlqbksf8sbazkk569r3h2577zpc56prfn",
+  "fetcher": "github",
+  "repo": "VanLaser/evil-nl-break-undo",
+  "unstable": {
+   "version": [
+    20181125,
+    2054
+   ],
+   "commit": "4a8f2bf99c978a109eeb92965a72a17bedb68762",
+   "sha256": "0xnjzdbn0rzzr1vkd31swdhxj2vm7xijhn5s5gigmsm3i0n4k0sa"
+  }
+ },
+ {
+  "ename": "evil-numbers",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "1lpmkklwjdf7ayhv99g9zh3l9hzrwm0hr0ijvbc7yz3n398zn1b2",
+  "fetcher": "github",
+  "repo": "cofi/evil-numbers",
+  "unstable": {
+   "version": [
+    20140606,
+    1251
+   ],
+   "commit": "6ea1c8c3a9b37bed63d48f1128e9a4910e68187e",
+   "sha256": "1aq95hj8x13py0pwsnc6wvd8cc5yv5qin8ym9js42y5966vwj4np"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "8834eb2e8bd93561a706363946701d0d90546a9f",
+   "sha256": "13jg2xbh4p02x1nj77b6csb93hh56c1nv8kslcq2hjj3caipk4m8"
+  }
+ },
+ {
+  "ename": "evil-opener",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0cld853pyzlaa306rpypw2wm4953i6y06irlk96bql9aa1zx977g",
+  "fetcher": "github",
+  "repo": "0robustus1/opener.el",
+  "unstable": {
+   "version": [
+    20161207,
+    1810
+   ],
+   "deps": [
+    "evil",
+    "opener"
+   ],
+   "commit": "c384f67278046fdcd220275fdd212ab85672cbeb",
+   "sha256": "0gci909a2rbx5i8dyzyrcddwdic7nvpk6y6djvn521yaag4sq87h"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "evil",
+    "opener"
+   ],
+   "commit": "c384f67278046fdcd220275fdd212ab85672cbeb",
+   "sha256": "0gci909a2rbx5i8dyzyrcddwdic7nvpk6y6djvn521yaag4sq87h"
+  }
+ },
+ {
+  "ename": "evil-org",
+  "commit": "1768558ed0a0249421437b66fe45018dd768e637",
+  "sha256": "18glpsnpxap4dvnvkl59h9pnwlp20libsfbbkmvrbzsvbdyspg6z",
+  "fetcher": "github",
+  "repo": "Somelauw/evil-org-mode",
+  "unstable": {
+   "version": [
+    20200101,
+    2017
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "2d70c981587187f4fb7d72b9c5b368e6f7c1460f",
+   "sha256": "1v20iba2b6dwr01zm69ix23xrlkm1ig8n9zn13nkna9iawafqrq9"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    2
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "9d4be14118bf27094a30dbff349b815f098aacbf",
+   "sha256": "1fxxfkinb0gq4p5b686r7z4jrkv98zfgh5z889zkjacncv8ibswn"
+  }
+ },
+ {
+  "ename": "evil-owl",
+  "commit": "306209c3e3669b962dfd0abf649865164ed8bba3",
+  "sha256": "1629ca2n3i6nk1vsxfn9rnzdy40kmiy18hqa4dw9v56jb9p47xh5",
+  "fetcher": "github",
+  "repo": "mamapanda/evil-owl",
+  "unstable": {
+   "version": [
+    20200113,
+    405
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "ed5a98644a9cf321de213b50df6473de9f3a71ed",
+   "sha256": "03afn47fgz3bxifmpwlmckpkl9nc237lc0khmaks0jfpmzcbkagc"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "24c5f43df375194386344e69bc720ea3986c9510",
+   "sha256": "0bqzch14whlmrcasakah3psrzswvkzd7mmi8hx5s64kfp29wbdhi"
+  }
+ },
+ {
+  "ename": "evil-paredit",
+  "commit": "88db86e1351410bcff6f3ed80681946afcec9959",
+  "sha256": "0xvxxa3gjgsrv10a61y0591bn3gj8v1ff2wck8s0svwfl076gyfy",
+  "fetcher": "github",
+  "repo": "roman/evil-paredit",
+  "unstable": {
+   "version": [
+    20150413,
+    2048
+   ],
+   "deps": [
+    "evil",
+    "paredit"
+   ],
+   "commit": "e058fbdcf9dbf7ad6cc77f0172d7517ef233d55f",
+   "sha256": "0b08y4spapl4g2292j3l4cr84gjlvm3rpma3gqld4yb1sxd7v78p"
+  }
+ },
+ {
+  "ename": "evil-python-movement",
+  "commit": "130e6d17735ff86b962859528d7e50869f683251",
+  "sha256": "1qs0z93rpi9dz6hy64816afdr4k5gssyw2dhaxcn152ylg1yzkg3",
+  "fetcher": "git",
+  "url": "https://bitbucket.org/FelipeLema/evil-python-movement.el",
+  "unstable": {
+   "version": [
+    20180724,
+    1420
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "evil",
+    "s"
+   ],
+   "commit": "9936b3b7f8d96415d517c1f3604637889484a637",
+   "sha256": "11ivb95ilsw3svpna9n07yf8s9q3w36ia6js2qv6wf0d0dp2xb9r"
+  }
+ },
+ {
+  "ename": "evil-quickscope",
+  "commit": "ec118caf243c74d243f533c9e12f7de0d6c43bc4",
+  "sha256": "0xym1mh4p68i00l1lshywf5fdg1vw3szxp3fk9fwfcg04z6vd489",
+  "fetcher": "github",
+  "repo": "blorbx/evil-quickscope",
+  "unstable": {
+   "version": [
+    20160202,
+    1924
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "37a20e4c56c6058abf186ad4013c155e695e876f",
+   "sha256": "1ja9ggj70wf0nmma4xnc1zdzg2crq9h1cv3cj7cgwjmllflgkfq7"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    4
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "37a20e4c56c6058abf186ad4013c155e695e876f",
+   "sha256": "1ja9ggj70wf0nmma4xnc1zdzg2crq9h1cv3cj7cgwjmllflgkfq7"
+  }
+ },
+ {
+  "ename": "evil-rails",
+  "commit": "ff526fe800b0535067431f1ae78c4a4b5594b23d",
+  "sha256": "0ah0nvzl30z19566kacyrsznsdm3cpij8n3bw3dfng7263rh60gj",
+  "fetcher": "github",
+  "repo": "antono/evil-rails",
+  "unstable": {
+   "version": [
+    20190512,
+    1517
+   ],
+   "deps": [
+    "evil",
+    "projectile-rails"
+   ],
+   "commit": "b0f1c5de6720714febeb76c4b569b71bb891938c",
+   "sha256": "0mypsbf0mg2b4746r9b9ybj51qkrlxz48lf9g53kzbk3wdf6p5vi"
+  }
+ },
+ {
+  "ename": "evil-replace-with-char",
+  "commit": "0ac1b487e0fe193cc46c8b489686972ed6db3973",
+  "sha256": "0lgazw53j44rc72czwqxs6yaz67l9i1v52wbi7l9w958fnjra84r",
+  "fetcher": "github",
+  "repo": "ninrod/evil-replace-with-char",
+  "unstable": {
+   "version": [
+    20180324,
+    2206
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "ed4a12d5bff11163eb03ad2826c52fd30f51a8d3",
+   "sha256": "1nhnwl39wsi7akzcjqszxxw2b6j9i5y4qabcd8p387zajjpgscwk"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "dddbbafdd620cc48dd0a257baf4010e1b415ebe8",
+   "sha256": "0gcmva2q1bxqp3p8cl1nf19kh4nkgfdm64havyzhnkwq18q84pxi"
+  }
+ },
+ {
+  "ename": "evil-replace-with-register",
+  "commit": "b1bd98aebefc13da5a129d1d3f1c8878e4a70654",
+  "sha256": "0qyym6vwjs0aqf2p28rh96v30pgxg060pxyij0vrfj469wzmlrj9",
+  "fetcher": "github",
+  "repo": "Dewdrops/evil-ReplaceWithRegister",
+  "unstable": {
+   "version": [
+    20170713,
+    925
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "91cc7bf21a94703c441cc9212214075b226b7f67",
+   "sha256": "14rpn76qrf287s3y2agmddcxi27r226i53ixjvd694ss039g0r11"
+  }
+ },
+ {
+  "ename": "evil-rsi",
+  "commit": "24f438b47e8ede0ef84261424c122d2ac28b90cb",
+  "sha256": "0mc39n72420n36kwyf9zpw1pgyih0aigfnmkbywb0yxgj7myc345",
+  "fetcher": "github",
+  "repo": "linktohack/evil-rsi",
+  "unstable": {
+   "version": [
+    20160221,
+    2104
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "65ae60866be494e4622fe383e23975e04d2a42a3",
+   "sha256": "0cc2yxck5brnicllcadb4m5zlzczvdy6v38q34hj8bri1kxfzslz"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "236bf6ed1e2285698db808463e5f2f69f5f5e7c0",
+   "sha256": "1xz629qv1ss1fap397k48piawcwl8lrybraq5449bw1vvn1a4d9f"
+  }
+ },
+ {
+  "ename": "evil-ruby-text-objects",
+  "commit": "ba500b9f3df067e57e84654561091897e39623ef",
+  "sha256": "0icvmrcj2lslill2a26vzb71598l7c2fl2fi1971z8r1vhmckwmq",
+  "fetcher": "github",
+  "repo": "porras/evil-ruby-text-objects",
+  "unstable": {
+   "version": [
+    20200323,
+    1552
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "32983d91be83ed903b6ef9655e00f69beed2572c",
+   "sha256": "0qha7xxqxh7c6n6r26r49y85inxcbr4nvxlv2zzj0qkifw7f9ana"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "e69abb6aad7687222cb47a8a64dc4dd66ef96a9e",
+   "sha256": "0m1ilv4w4rlg8005cqp5l5dwdhqnrf1mb44qmvd8qwkl2rvslsbs"
+  }
+ },
+ {
+  "ename": "evil-search-highlight-persist",
+  "commit": "f2e91974ddb219c88229782b70ade7e14f20c0b5",
+  "sha256": "08l8ymrp9vkpwprq9gp4562yvcnd4hfc3z7n4n5lz7h6ffv3zym3",
+  "fetcher": "github",
+  "repo": "naclander/evil-search-highlight-persist",
+  "unstable": {
+   "version": [
+    20170523,
+    334
+   ],
+   "deps": [
+    "highlight"
+   ],
+   "commit": "979d2dec58d3b9c5ca5fdf4bb802a0209913794e",
+   "sha256": "0ak8r7cgz5xnjyfg3w9mwxhvaw8ny3hy0i2bqn3vf5dps649iy7i"
+  },
+  "stable": {
+   "version": [
+    1,
+    8
+   ],
+   "deps": [
+    "highlight"
+   ],
+   "commit": "0e2b3d4e3dec5f38ae95f62519eb2736f73c0b85",
+   "sha256": "1jfi2k9dm0cc9bx8klppm965ydhdw17a2n664199vhxrap6g27yk"
+  }
+ },
+ {
+  "ename": "evil-smartparens",
+  "commit": "850898fbfc8e0aeb779e8feae56476d989110e79",
+  "sha256": "1viwrd6gfqmwhlil80pk68dikn3cjf9ddsy0z781z3qfx0j35qza",
+  "fetcher": "github",
+  "repo": "expez/evil-smartparens",
+  "unstable": {
+   "version": [
+    20171210,
+    1513
+   ],
+   "deps": [
+    "evil",
+    "smartparens"
+   ],
+   "commit": "026d4a3cfce415a4dfae1457f871b385386e61d3",
+   "sha256": "05habba44zls2d20kgzshrq2psagay16cnvcnkqgrbhvj1rxfmrk"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "deps": [
+    "evil",
+    "smartparens"
+   ],
+   "commit": "9fe4eed1c6327197afe6c13bb0771e18908aff00",
+   "sha256": "1di4qz5fbrlwbg16c2j0m7y8zqfxw027qd7zqmc3rwk9znbhg7wl"
+  }
+ },
+ {
+  "ename": "evil-snipe",
+  "commit": "6748f3febbe2f098761e967b4dc67791186d0aa7",
+  "sha256": "0gcmpjw3iw7rjk86b2k6clfigp48vakfjd1a9n8qramhnc85rgkn",
+  "fetcher": "github",
+  "repo": "hlissner/evil-snipe",
+  "unstable": {
+   "version": [
+    20200422,
+    519
+   ],
+   "deps": [
+    "cl-lib",
+    "evil"
+   ],
+   "commit": "2ba6353bb9253dbbc4193f1d35403e7dcc1317b1",
+   "sha256": "1sqbwg41by88qq7npsw7w9q3zmfk5adzqpqh2m84zk6fd64mc6h2"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    8
+   ],
+   "deps": [
+    "cl-lib",
+    "evil"
+   ],
+   "commit": "dc62ac317fd29f018e9785c1b3b7dd7ad57b3938",
+   "sha256": "18j33smlajj7ynigfgm64z3kfys5idbxin2gd93civ2564n85r33"
+  }
+ },
+ {
+  "ename": "evil-space",
+  "commit": "4e5a4b9427038f90898ac0e237e71ba7152501f5",
+  "sha256": "1asvh873r1xgffvz3nr653yn8h5ifaphnafp6wf1b1mja6as7f23",
+  "fetcher": "github",
+  "repo": "linktohack/evil-space",
+  "unstable": {
+   "version": [
+    20151208,
+    1228
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "a9c07284d308425deee134c9d88a2d538dd229e6",
+   "sha256": "1x4nphjq8lvg8qsm1pj04mk9n59xc6jlxiv5s3bih1nl4xkssrxy"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    6
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "f77860fa00662e2def3e1885adac777f051e1e61",
+   "sha256": "1rchanv0vq9rx6x69608dlpdybvkn8a9ymx8wzm7gqpz9qh6xqrk"
+  }
+ },
+ {
+  "ename": "evil-string-inflection",
+  "commit": "0720a0f5b775fcee8d1cfa0defe80048e2dd0972",
+  "sha256": "0w9x49c0gmv4waspa9fvbhf2adm19cixkwx7a7la9v4qy7da6akh",
+  "fetcher": "github",
+  "repo": "ninrod/evil-string-inflection",
+  "unstable": {
+   "version": [
+    20180313,
+    1755
+   ],
+   "deps": [
+    "evil",
+    "string-inflection"
+   ],
+   "commit": "6913de02a210487c063cd63ecf27b17a24797870",
+   "sha256": "1wyd903yvp8lxbhavsr4grn79hkxcsz71mcvy3hrvnf7ifhw514a"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "evil",
+    "string-inflection"
+   ],
+   "commit": "f6a3eca0f0fa8e56e6938e1dd48537eef1fae05f",
+   "sha256": "1akk0yylwcw4f91hprrrsijhbdcmrx1nnpgfyzpl4k5d4b30y8d5"
+  }
+ },
+ {
+  "ename": "evil-surround",
+  "commit": "2c9dc47a4c837c44429a74fd998fe468c00639f2",
+  "sha256": "0aphv5zinb0lzdx22qbzcr7fn6jbpkdczar7py3df6mzxw5wvcm1",
+  "fetcher": "github",
+  "repo": "emacs-evil/evil-surround",
+  "unstable": {
+   "version": [
+    20191217,
+    1131
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "9b0b17f06cef9bac81ee4800d121265e54718a17",
+   "sha256": "15v2spg5rhddr97pxjfvxj36sh7knp753a9qpw8v5zjnp65kf2kn"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "9b0b17f06cef9bac81ee4800d121265e54718a17",
+   "sha256": "15v2spg5rhddr97pxjfvxj36sh7knp753a9qpw8v5zjnp65kf2kn"
+  }
+ },
+ {
+  "ename": "evil-swap-keys",
+  "commit": "2abff8e3d54ac13c4fe90692a56437844accca25",
+  "sha256": "12cx95mjm4ymggidvf41gh3a364z32h655jmhk417v0ga9jk9fv6",
+  "fetcher": "github",
+  "repo": "wbolster/evil-swap-keys",
+  "unstable": {
+   "version": [
+    20191105,
+    1426
+   ],
+   "commit": "b5ef105499f998b5667da40da30c073229a213ea",
+   "sha256": "1kawq9c64cmkdjy03sfppjn7g9anxnmds3ip7cgj1j0yym0glyfq"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "56bc201e265a6bd482a7c41a7c81d2238341ef3a",
+   "sha256": "0n0hl0plaghz9rjssabxwfzm46kr6564hpfh6hn8lzla4rf1q5zs"
+  }
+ },
+ {
+  "ename": "evil-tabs",
+  "commit": "61eea3ae1c89163736b806aa8ca4f44d17daaba3",
+  "sha256": "0qgvpv5hcai8wmkv2fp6i2vdy7qp4gwidwpzz8j6vl9519x73s62",
+  "fetcher": "github",
+  "repo": "krisajenkins/evil-tabs",
+  "unstable": {
+   "version": [
+    20160217,
+    1520
+   ],
+   "deps": [
+    "elscreen",
+    "evil"
+   ],
+   "commit": "53d3314a810017b6056ab6796aef671f5ea1c063",
+   "sha256": "1qklx0j3fz3mp87v64yqbyyq5csfymbjfwvy2s4nk634wbnrra93"
+  }
+ },
+ {
+  "ename": "evil-terminal-cursor-changer",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "16p9a1dybbqr8r717c5ssfd3p5392bqxxzqs4n0xc7v7g8v1m0cd",
+  "fetcher": "github",
+  "repo": "7696122/evil-terminal-cursor-changer",
+  "unstable": {
+   "version": [
+    20170401,
+    842
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "b49ca4393d2f3cc6014174950059b36a5cb22949",
+   "sha256": "1zra2h0x20whshbc4sfyj6w73jv6ak435mr9n6r6s7brqqqgpa36"
+  }
+ },
+ {
+  "ename": "evil-test-helpers",
+  "commit": "87da8c50f9167ad9c3844b23becb6904f809611d",
+  "sha256": "0l4skyznzgr76z518q22lf90ymlsfcs02w8vqkg8az1nfl3ch7fs",
+  "fetcher": "github",
+  "repo": "emacs-evil/evil",
+  "unstable": {
+   "version": [
+    20200304,
+    911
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "3f3b2fea87172f155e5f91d75f0fb69d8648acf2",
+   "sha256": "0ihb42v513c9jrh8d0v5a76ykhqi408cdnfpilrwq9499qr22jdg"
+  },
+  "stable": {
+   "version": [
+    1,
+    14,
+    0
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "4dc63903d9688e2ce838a220b0e24d8f14a64c12",
+   "sha256": "17xrn3s6a4afmls8fw8nnxa1jq9dmj2qqrxa2vngh50hxpz8840p"
+  }
+ },
+ {
+  "ename": "evil-text-object-python",
+  "commit": "0d0893b07bc4a057561a1c1a85b7520c50f31e12",
+  "sha256": "0jdzs1yn8nrxq890427yjrxdvnzj8jy7bs3jj4w4c0fik26ngqhm",
+  "fetcher": "github",
+  "repo": "wbolster/evil-text-object-python",
+  "unstable": {
+   "version": [
+    20191010,
+    1328
+   ],
+   "deps": [
+    "dash",
+    "evil"
+   ],
+   "commit": "39d22fc524f0413763f291267eaab7f4e7984318",
+   "sha256": "0293hfgczpjghvg28s27c5r6ll1zaq466pasrhzj71sqzyvxq7ax"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "3b3fb01e7ad7eeeeae1143695547fe75148cc44f",
+   "sha256": "1alin2rmx1xa1w3b1nb76bplmg10il55jxxm6jj7qs6z1izzllci"
+  }
+ },
+ {
+  "ename": "evil-textobj-anyblock",
+  "commit": "36b734960313d4cb484cebaac0f112781436631c",
+  "sha256": "03vk30s2wkcszcjxmh5ww39rihnag9cp678wdzq4bnqy0c6rnjwa",
+  "fetcher": "github",
+  "repo": "noctuid/evil-textobj-anyblock",
+  "unstable": {
+   "version": [
+    20170905,
+    1907
+   ],
+   "deps": [
+    "cl-lib",
+    "evil"
+   ],
+   "commit": "ff00980f0634f95bf2ad9956b615a155ea8743be",
+   "sha256": "0wn5lp7kh3ip1bmqi12c9ivpjj0x602h8d7ag39qw36smv4jqvnb"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "evil"
+   ],
+   "commit": "068d26a625cd6202aaf70a8ff399f9130c0ffa68",
+   "sha256": "0vsf7yzlb2j7c5c7cnk81y1979psy6a9v7klg6c2j9lkcn3cqpvj"
+  }
+ },
+ {
+  "ename": "evil-textobj-column",
+  "commit": "de7d6dc0d9c42a89be2959d015efa30960df2de7",
+  "sha256": "13q3nawx05rn3k6kzq1889vxjznr454cib96pc9lmrq7h65lym2h",
+  "fetcher": "github",
+  "repo": "noctuid/evil-textobj-column",
+  "unstable": {
+   "version": [
+    20170905,
+    1905
+   ],
+   "deps": [
+    "evil",
+    "names"
+   ],
+   "commit": "835d7036d0bc9a6e44fc9b7c54ccf2a7c01428cd",
+   "sha256": "0g9d62sgcpzvhbrdk4hf3phphfss74mjz6xv4wd9895rzjsziwkf"
+  }
+ },
+ {
+  "ename": "evil-textobj-entire",
+  "commit": "e1da0063a17d53f30e041e08161ad8fbc9942270",
+  "sha256": "0hkdnkv03b31330pnkijhhbyw00m7bxfvs3cgzfazsvvcsha4gmi",
+  "fetcher": "github",
+  "repo": "supermomonga/evil-textobj-entire",
+  "unstable": {
+   "version": [
+    20150422,
+    1254
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "5b3a98f3a69edc3a788f539f6ffef4a0ef5e853d",
+   "sha256": "0m3krfmc9llpywr0lbya36b2jbnzx1pylvhj0p1ss5rh735m00jy"
+  }
+ },
+ {
+  "ename": "evil-textobj-line",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "1jwhg56nhf5iv7zbfdzi6ygikc49bnrqh1r5kd98n5wxz9vz2h75",
+  "fetcher": "github",
+  "repo": "emacsorphanage/evil-textobj-line",
+  "unstable": {
+   "version": [
+    20150729,
+    1522
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "3d401b6831bdbeec967ec8e64177a8950251e812",
+   "sha256": "1vnk27bizzi321mdq3k39zxv8w20ifxbhxabiy685nyk89cq3mbj"
+  }
+ },
+ {
+  "ename": "evil-textobj-syntax",
+  "commit": "0dba37e5a2ba5ef1f397b37d6845acdc4872e5f2",
+  "sha256": "0d0fg71xmbqhx91ljnkxmakcc0qn3341wjjmzax33qilz5syp3m9",
+  "fetcher": "github",
+  "repo": "laishulu/evil-textobj-syntax",
+  "unstable": {
+   "version": [
+    20181210,
+    1213
+   ],
+   "deps": [
+    "evil",
+    "names"
+   ],
+   "commit": "2d9ba8c75c754b409aea7469f46a5cfa52a872f3",
+   "sha256": "031p5i3274dazp7rz6m5y38shfgszm1clmkcf58qfqlvy978ammc"
+  }
+ },
+ {
+  "ename": "evil-traces",
+  "commit": "29f1f13a99b065f4510f6967d0cfce37eaa59178",
+  "sha256": "1h8mi0qa5aaahhlkaf91ynsddj5fm11yimkqj14xmjyig1m98yyd",
+  "fetcher": "github",
+  "repo": "mamapanda/evil-traces",
+  "unstable": {
+   "version": [
+    20191214,
+    558
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "bc25cae9fa5ab0ba1507827f0944f52ce0ca7462",
+   "sha256": "0xz2yjgz6h2d6h7gfhnvrylh8gj0s7vf45bvqa450j5579gz5sqz"
+  }
+ },
+ {
+  "ename": "evil-tutor",
+  "commit": "4b7bfffdc34e181893b8cf4d1cc091f6c3f91126",
+  "sha256": "1hvc2w5ykrgh62n4sxqqqcdk5sd7nmh6xzv4mir5vf9y2dgqcvsn",
+  "fetcher": "github",
+  "repo": "syl20bnr/evil-tutor",
+  "unstable": {
+   "version": [
+    20150103,
+    650
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "4e124cd3911dc0d1b6817ad2c9e59b4753638f28",
+   "sha256": "00yfq8aflxvp2nnz7smgq0c5wlb7cips5irj8qs6193ixlkpffvx"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "909273bac88b98a565f1b89bbb13d523b7edce2b",
+   "sha256": "1rskvkmz30xyy8xfjf2i35f3dxh663gb3plfy3f0j6z17i086jl2"
+  }
+ },
+ {
+  "ename": "evil-tutor-ja",
+  "commit": "2c98605fd21b38aaa200c6a0ec4c18f8575b0d7a",
+  "sha256": "1yd8aij9q1jdmb387f1zjiq5mf68jvbgbyp5b49hmag4hw5h7vm2",
+  "fetcher": "github",
+  "repo": "kenjimyzk/evil-tutor-ja",
+  "unstable": {
+   "version": [
+    20160917,
+    132
+   ],
+   "deps": [
+    "evil",
+    "evil-tutor"
+   ],
+   "commit": "99af7d82e02ce3bcdfaff47c5c80b57327a7ea8d",
+   "sha256": "1cms98cy4p5dxwfc1zhgdaln8vr2nxzcj0d31imyabb4mwliabfw"
+  }
+ },
+ {
+  "ename": "evil-vimish-fold",
+  "commit": "fcd51e24f88ebbbd3fddfc7c6f3b667d5104cf2b",
+  "sha256": "01wp4h97hjyzbpd7iighjj26m79499wp5pn8m4pa7v59f6r3sdk6",
+  "fetcher": "github",
+  "repo": "alexmurray/evil-vimish-fold",
+  "unstable": {
+   "version": [
+    20200122,
+    117
+   ],
+   "deps": [
+    "evil",
+    "vimish-fold"
+   ],
+   "commit": "b6e0e6b91b8cd047e80debef1a536d9d49eef31a",
+   "sha256": "14qhfhk3d4c7v4jhr909dbxy8222flpqwk73bwg0pqwpkcifyv7n"
+  }
+ },
+ {
+  "ename": "evil-visual-mark-mode",
+  "commit": "293cdd3387f26e4c8f21582d75a194963ac9cff7",
+  "sha256": "1qgr2dfhfz6imnlznicl7lplajd1s8wny7mlxs1bkms3xjcjfi48",
+  "fetcher": "github",
+  "repo": "roman/evil-visual-mark-mode",
+  "unstable": {
+   "version": [
+    20190116,
+    1557
+   ],
+   "deps": [
+    "dash",
+    "evil"
+   ],
+   "commit": "ac5997971972a9251f140b5542d82790ca4a43b4",
+   "sha256": "1gh5614l4zf15109zc64pnnc5rp5ilah9mavgr2rbv2874k3vs4n"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "deps": [
+    "dash",
+    "evil"
+   ],
+   "commit": "094ee37599492885ff3144918fcdd9b74dadaaa0",
+   "sha256": "07cmql8zsqz1qchq2mp3qybbay499dk1yglisig6jfddcmrbbggz"
+  }
+ },
+ {
+  "ename": "evil-visual-replace",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1dq3bd9aqpk3jq1c9yzlpjyw6mi8l428l111vrmfg156k1w22v01",
+  "fetcher": "github",
+  "repo": "troyp/evil-visual-replace",
+  "unstable": {
+   "version": [
+    20171016,
+    613
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "163fc827a1ffc106475da470c37fb26f4cc9b008",
+   "sha256": "1gfyrq7xfzmzh3x8k5f08n027dlbwi0pkkxf9c39fkxp4jngibsz"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    5
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "163fc827a1ffc106475da470c37fb26f4cc9b008",
+   "sha256": "1gfyrq7xfzmzh3x8k5f08n027dlbwi0pkkxf9c39fkxp4jngibsz"
+  }
+ },
+ {
+  "ename": "evil-visualstar",
+  "commit": "578d33f3f8e68ef1b3ca3fb8af9b9ff77b649bd3",
+  "sha256": "135l9hjfbpn0a6p53picnpydi9qs5vrk2rfn64gxa5ag2apcyycy",
+  "fetcher": "github",
+  "repo": "bling/evil-visualstar",
+  "unstable": {
+   "version": [
+    20160223,
+    48
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "06c053d8f7381f91c53311b1234872ca96ced752",
+   "sha256": "0mkbzw12fav945icibc2293m5haxqr3hzkyli2cf4ssk6yvn0x4c"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "eb996eca0081b6e8bab70b2c0a86ef1c71087bf6",
+   "sha256": "11y2jrwbsw4fcx77zkhj1cn2hl1zcdqy00bv3mpbcrs03jywssrk"
+  }
+ },
+ {
+  "ename": "evm",
+  "commit": "bbcead697f745d197459f90ee05b172e35af2411",
+  "sha256": "19l6cs5schbnph0pwhhj66gkxsswd4bmjpy79l9kxzpjf107wc03",
+  "fetcher": "github",
+  "repo": "rejeep/evm.el",
+  "unstable": {
+   "version": [
+    20141007,
+    1156
+   ],
+   "deps": [
+    "dash",
+    "f"
+   ],
+   "commit": "d0623b2355436a5fd9f7238b419782080c79196b",
+   "sha256": "0739v0m9vj70a55z0canslyqgafzys815i7a0r6bxj2f9iwq6rhb"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    2
+   ],
+   "deps": [
+    "dash",
+    "f"
+   ],
+   "commit": "d0623b2355436a5fd9f7238b419782080c79196b",
+   "sha256": "0739v0m9vj70a55z0canslyqgafzys815i7a0r6bxj2f9iwq6rhb"
+  }
+ },
+ {
+  "ename": "ewal",
+  "commit": "33592edc97154b396b469e2352779721d5df670b",
+  "sha256": "1i6j8dgbgj64wa08wl4kzf26q2x73zy2n4zfa4dzvdspm2bn0ddr",
+  "fetcher": "gitlab",
+  "repo": "jjzmajic/ewal",
+  "unstable": {
+   "version": [
+    20200305,
+    230
+   ],
+   "commit": "4ecc355dae9c7d648cd2874e01a15dfa02b9350d",
+   "sha256": "1v444nfrzz0lkybrgfics5kc8gncbvvs23qlq1pkz7ann6q84ip0"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "commit": "732a2f4abb480f9f5a3249af822d8eb1e90324e3",
+   "sha256": "09dgs0g5hcf5hris8i1w6w7wxarzmsagyc3l50rflvxy3djhlbkd"
+  }
+ },
+ {
+  "ename": "ewal-doom-themes",
+  "commit": "5f59228fa54a9733f549c1ba531cd90d4350fb62",
+  "sha256": "14blxk8dkr0hkhf1hd75xk0zzx6qxavynymhbwbvbf3m0mp64x6l",
+  "fetcher": "gitlab",
+  "repo": "jjzmajic/ewal",
+  "unstable": {
+   "version": [
+    20200301,
+    839
+   ],
+   "deps": [
+    "doom-themes",
+    "ewal"
+   ],
+   "commit": "4ecc355dae9c7d648cd2874e01a15dfa02b9350d",
+   "sha256": "1v444nfrzz0lkybrgfics5kc8gncbvvs23qlq1pkz7ann6q84ip0"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "deps": [
+    "doom-themes",
+    "ewal"
+   ],
+   "commit": "732a2f4abb480f9f5a3249af822d8eb1e90324e3",
+   "sha256": "09dgs0g5hcf5hris8i1w6w7wxarzmsagyc3l50rflvxy3djhlbkd"
+  }
+ },
+ {
+  "ename": "ewal-evil-cursors",
+  "commit": "ee7f9833a1dda00e12bcf45c7194ebc38e26168b",
+  "sha256": "177f5m1a3cvgjkgqz61w8gz3q272sk2cafq2z29rk88gcfbm2iqc",
+  "fetcher": "gitlab",
+  "repo": "jjzmajic/ewal",
+  "unstable": {
+   "version": [
+    20190911,
+    1315
+   ],
+   "deps": [
+    "ewal"
+   ],
+   "commit": "4ecc355dae9c7d648cd2874e01a15dfa02b9350d",
+   "sha256": "1v444nfrzz0lkybrgfics5kc8gncbvvs23qlq1pkz7ann6q84ip0"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "deps": [
+    "ewal"
+   ],
+   "commit": "732a2f4abb480f9f5a3249af822d8eb1e90324e3",
+   "sha256": "09dgs0g5hcf5hris8i1w6w7wxarzmsagyc3l50rflvxy3djhlbkd"
+  }
+ },
+ {
+  "ename": "ewal-spacemacs-themes",
+  "commit": "5aebe80668479c02a694fef153cea0e9f9ca7eb0",
+  "sha256": "0a0xpjlw3yfqfn2wcyqzpdisyr5pm1x35k8rpcjhwn5lhh7njlfc",
+  "fetcher": "gitlab",
+  "repo": "jjzmajic/ewal",
+  "unstable": {
+   "version": [
+    20190911,
+    1305
+   ],
+   "deps": [
+    "ewal",
+    "spacemacs-theme"
+   ],
+   "commit": "4ecc355dae9c7d648cd2874e01a15dfa02b9350d",
+   "sha256": "1v444nfrzz0lkybrgfics5kc8gncbvvs23qlq1pkz7ann6q84ip0"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "deps": [
+    "ewal",
+    "spacemacs-theme"
+   ],
+   "commit": "732a2f4abb480f9f5a3249af822d8eb1e90324e3",
+   "sha256": "09dgs0g5hcf5hris8i1w6w7wxarzmsagyc3l50rflvxy3djhlbkd"
+  }
+ },
+ {
+  "ename": "ewmctrl",
+  "commit": "b2a7679f0961b171bf23080e628ae80f50c446e4",
+  "sha256": "1w60pb7szai1kh06jd3qvgpzq3z1ci4a77ysnpqjfk326s6zv7hl",
+  "fetcher": "github",
+  "repo": "flexibeast/ewmctrl",
+  "unstable": {
+   "version": [
+    20170922,
+    217
+   ],
+   "commit": "3d0217c4d6cdb5c308b6cb4293574f470d4faacf",
+   "sha256": "0ilwvx0qryv3v6xf0gxqwnfm6pf96gxap8h9g3f6z6lk9ff4n1wi"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "3d0217c4d6cdb5c308b6cb4293574f470d4faacf",
+   "sha256": "0ilwvx0qryv3v6xf0gxqwnfm6pf96gxap8h9g3f6z6lk9ff4n1wi"
+  }
+ },
+ {
+  "ename": "eww-lnum",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1hhc6q8zlj335v27j4dq6ms7frqpivfabs9w3vkaly5kjr60fw7c",
+  "fetcher": "github",
+  "repo": "m00natic/eww-lnum",
+  "unstable": {
+   "version": [
+    20150102,
+    1512
+   ],
+   "commit": "4b0ecec769919ecb05ca4fb15ec51911ba589929",
+   "sha256": "1i6zf17rwa390c33cbspz81dz86vwlphyhjjsia4gp205nfk3s20"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "daef49974446ed4c1001e0549c3f74679bca6bd3",
+   "sha256": "0gs6bi3s2sszc6v2b26929azmn5513kvyin99n4d0ark1jdbjmv2"
+  }
+ },
+ {
+  "ename": "exato",
+  "commit": "939efbcb9b40a2df5ef14e653fb242a8e37c72f9",
+  "sha256": "1h2dd3yhv1n0sznznw8ncx98g53hgi1rg1zkd0nmldih2rd5qisn",
+  "fetcher": "github",
+  "repo": "ninrod/exato",
+  "unstable": {
+   "version": [
+    20180305,
+    1042
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "d5daea30176d48e74c9d063ac9bfc240ebeb97d0",
+   "sha256": "18mb7ik15yygfyjr5y2awbn5lrr3b9z1f31gnfslvrlav2nl1m7d"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    6
+   ],
+   "deps": [
+    "evil"
+   ],
+   "commit": "70f7ca2a4c6de0392e5e54ac4f16c96daa106be6",
+   "sha256": "0ns43whqcq3cv9vh8wbakj5fgs0lsn8f3q1rgl4rw4mfgbvv85pm"
+  }
+ },
+ {
+  "ename": "exec-path-from-shell",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "014bfcs7znds4if1njyq4s5zrfnr6b3wj6722b4l5r58gh9mlrr5",
+  "fetcher": "github",
+  "repo": "purcell/exec-path-from-shell",
+  "unstable": {
+   "version": [
+    20191229,
+    112
+   ],
+   "commit": "2d152d17814c6d551d525d83201da72c4047c1de",
+   "sha256": "129iccdddpz0hhb25v63a8pk76ayx67jn47rwd3x6wzsnhsg3pp6"
+  },
+  "stable": {
+   "version": [
+    1,
+    12
+   ],
+   "commit": "76cd6e3fa8a7dac937af7e40507843dfae4f9184",
+   "sha256": "1ga8bpxngd3ph2hdiik92c612ki71qxw818i6rgx6f6a5r0sbf3p"
+  }
+ },
+ {
+  "ename": "execline",
+  "commit": "118862adbbd26616a5fe110c29296f5ae53b199a",
+  "sha256": "1wjj826vglnxccyl95k7kqnsa185w8qirvimzqldp6j53asrd0vy",
+  "fetcher": "gitlab",
+  "repo": "KAction/emacs-execline",
+  "unstable": {
+   "version": [
+    20190711,
+    2010
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "c75dd9b2c54d8e59fc35fd4bd98d8e213948a3f5",
+   "sha256": "02q531c9wvdwflhggflnci4a36h2bb90bq25bbhw6i2lvrd9sk55"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "c75dd9b2c54d8e59fc35fd4bd98d8e213948a3f5",
+   "sha256": "02q531c9wvdwflhggflnci4a36h2bb90bq25bbhw6i2lvrd9sk55"
+  }
+ },
+ {
+  "ename": "exiftool",
+  "commit": "4835a76909d020781021e747fbc341111a94dbfa",
+  "sha256": "1zvcps64yvz8lsjhi1j0808983fv2s7kx67yjr8ps454mcl8bpab",
+  "fetcher": "git",
+  "url": "https://git.systemreboot.net/exiftool.el/",
+  "unstable": {
+   "version": [
+    20190520,
+    1106
+   ],
+   "commit": "e043df1bcef40cd5934a74c210e1e35d5eb0e5a6",
+   "sha256": "0am4g25mlmm1iqcm2kxzskrzhrm1f09cdwcqmvk4lidid5xcb6xc"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    2
+   ],
+   "commit": "c1058d99c34e62b99dbfca13ada47519fb51bf73",
+   "sha256": "0bv58is66cz21yhc0qqkp1z4nk13zfi2l7i6pjbhyi0g1n88qqyv"
+  }
+ },
+ {
+  "ename": "exotica-theme",
+  "commit": "9182f92dd62e2f1775a76699a6c8f9c3e71e9030",
+  "sha256": "1fzf1zpllkddkq02hvabbi2bh6rnanlyinb6fjwsyh39wvzhsfhs",
+  "fetcher": "github",
+  "repo": "jbharat/exotica-theme",
+  "unstable": {
+   "version": [
+    20180212,
+    2329
+   ],
+   "commit": "ff3ef4f6fa38c93b99becad977c7810c990a4d2f",
+   "sha256": "1kp6q55g3dcya4y79x877vqwxa4z2rkkvhs49pkwr3wljf4af2pd"
+  }
+ },
+ {
+  "ename": "expand-line",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "0bzz7zrpfdxhjxs7nzlmzjb9jfajhxkivzr5sm87mg3zx8b6gjyi",
+  "fetcher": "github",
+  "repo": "zhangkaiyulw/expand-line",
+  "unstable": {
+   "version": [
+    20151006,
+    207
+   ],
+   "commit": "75a5d0241f35dd0748ab8ecb4ff16891535be372",
+   "sha256": "0wz4h5hrr5ci0w8pynd2nr1b2zl5hl4pa8gc16mcabik5927rf7z"
+  }
+ },
+ {
+  "ename": "expand-region",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "1c7f1nqsqdc75h22fxxnyg0m4yxj6l23sirk3c71fqj14paxqnwg",
+  "fetcher": "github",
+  "repo": "magnars/expand-region.el",
+  "unstable": {
+   "version": [
+    20200304,
+    1839
+   ],
+   "commit": "ea6b4cbb9985ddae532bd2faf9bb00570c9f2781",
+   "sha256": "1pc3nnyb6cy4x6xnm25kdhmjmfm2rar7cnxsfck2wg5nm11p0klm"
+  },
+  "stable": {
+   "version": [
+    0,
+    11,
+    0
+   ],
+   "commit": "0bc14fc7fbbcca5da4fdd9695cfd7cbd36eb3b96",
+   "sha256": "0h40dhc3kn8fq86xnwi5lz7ql8my8737y7wkqr897p15y90swr35"
+  }
+ },
+ {
+  "ename": "express",
+  "commit": "9a97f5f81af13c49f5bea31455d7da0bf2c12e4f",
+  "sha256": "0lhisy4ds96bwpc7k8w9ws1zi1qh0d36nhxsp36bqzfi09ig0nb9",
+  "fetcher": "github",
+  "repo": "rolandwalker/express",
+  "unstable": {
+   "version": [
+    20140508,
+    2041
+   ],
+   "deps": [
+    "string-utils"
+   ],
+   "commit": "93dae7377eace4a5413ba99aecb6f26f90798725",
+   "sha256": "0ah8zayipwp760909llb9whcdvmbsdgkg0x5y4qlcicm1r9kwcc7"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    0
+   ],
+   "deps": [
+    "string-utils"
+   ],
+   "commit": "e6dc9abdc395ef537408befebeb4fd3ed4ee5c60",
+   "sha256": "106yh793scbyharsk1dvrirkj3c6666w8jqilpkaz78vwyw3zs5y"
+  }
+ },
+ {
+  "ename": "exsqlaim-mode",
+  "commit": "7f660d7629bc27144c99ebcba45f1b06b14c5745",
+  "sha256": "0ssn48wcn3x066nsl8y78y57ndasqv5x6ifxbifdxl3f5vjhyvg7",
+  "fetcher": "github",
+  "repo": "ahmadnazir/exsqlaim-mode",
+  "unstable": {
+   "version": [
+    20170607,
+    1003
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "a2e0a62ec8b87193d8eaa695774bfd689324b06c",
+   "sha256": "1gj1q2h1ja30jizkjql12cxlppj07ykr4wxqca9msy043zdhqnkk"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "a2e0a62ec8b87193d8eaa695774bfd689324b06c",
+   "sha256": "1gj1q2h1ja30jizkjql12cxlppj07ykr4wxqca9msy043zdhqnkk"
+  }
+ },
+ {
+  "ename": "extempore-mode",
+  "commit": "7bd3e57171f5283604e9375613a7a94416ee99a7",
+  "sha256": "1z8nzpcj27s74kxfjz7wyr3848jpd6mbyjkssd06ri5p694j9php",
+  "fetcher": "github",
+  "repo": "extemporelang/extempore-emacs-mode",
+  "unstable": {
+   "version": [
+    20200408,
+    2253
+   ],
+   "commit": "09518ae6650d7be33a4633a4c0f31b7130d04c6e",
+   "sha256": "0hfza9lzdsz94gxhmzyp9fwviscv19rmnjgd0q613faayn11sjsp"
+  }
+ },
+ {
+  "ename": "extend-dnd",
+  "commit": "f2d866ca12cb997b7fad878808c0966f3413b73d",
+  "sha256": "0rknpvp8yw051pg3blvmjpp3c9a82jw7f10mq67ggbz98w227417",
+  "fetcher": "github",
+  "repo": "mattfidler/extend-dnd",
+  "unstable": {
+   "version": [
+    20151122,
+    1850
+   ],
+   "commit": "80c966c93b82c9bb5c6225a432557c39144fc602",
+   "sha256": "15dwl1rb3186k328a83dz9xmslc0px60ah16fifvmr3migis9hwz"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "commit": "a1923d57f8f5e862cc66c189b5e6627bc84a2119",
+   "sha256": "1k2j8szavyq2wy5c0skvs03a88cr9njy7y63b7knh2m92nw4830d"
+  }
+ },
+ {
+  "ename": "extmap",
+  "commit": "91ef4352603cc69930ab3d63f0a90eee63f5f328",
+  "sha256": "0c12gfd3480y4fc22ik02n7h85k6s70i5jv5i872h0yi68cgd01j",
+  "fetcher": "github",
+  "repo": "doublep/extmap",
+  "unstable": {
+   "version": [
+    20181028,
+    1645
+   ],
+   "commit": "187f621cb2d9413595cb47917641e5692e3b37cd",
+   "sha256": "1h9d7fgvy9xz9rw6kf5q606j2k54xqmvva028d929h8aibb6pch2"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "1139b57d8f4276fe56b8416fdaf4745f2cdfe7c3",
+   "sha256": "0jgyscjfparnby0whrmbgvsab2a7qkaqhysmh3s3jh635fndm253"
+  }
+ },
+ {
+  "ename": "exunit",
+  "commit": "94e4fd4cf58b280d08d22aff4dd9c47201a29e72",
+  "sha256": "1wyxxy1hd50p17widf31sysp28adr09n8ksyd3hn6pnvyn2m0k81",
+  "fetcher": "github",
+  "repo": "ananthakumaran/exunit.el",
+  "unstable": {
+   "version": [
+    20190919,
+    1238
+   ],
+   "deps": [
+    "f",
+    "s"
+   ],
+   "commit": "c77b0397b80d772c98fcc34c9ab131a8350fbf40",
+   "sha256": "08lhsjmibgvd4cjrvyxhwn7cqrpd83bgsvh2xqppi9mnw1xwgzd5"
+  }
+ },
+ {
+  "ename": "exwm-edit",
+  "commit": "f247915e02e59ebd6a2a219e55870e034d41c938",
+  "sha256": "0bydkznywma0x293m105amppx4qx1iyjpqdfq6np73176xfy6kc5",
+  "fetcher": "github",
+  "repo": "agzam/exwm-edit",
+  "unstable": {
+   "version": [
+    20200126,
+    27
+   ],
+   "commit": "bc25ba094b383be3c650ca0b7e1534efe2bb154f",
+   "sha256": "1z1ya9xgknka3dy3b3x8zzfkxdx5jqsi8q5aqkvxjxa6n7mmqdwv"
+  }
+ },
+ {
+  "ename": "exwm-firefox-core",
+  "commit": "745a2b98c48b00cd794dfb97be4072813ee67ada",
+  "sha256": "1d6j8nrlb7lsyki796vpfidj8y2cz5lnqf8zzfqsbqf92kj5v9zd",
+  "fetcher": "github",
+  "repo": "walseb/exwm-firefox-core",
+  "unstable": {
+   "version": [
+    20190812,
+    2110
+   ],
+   "deps": [
+    "exwm"
+   ],
+   "commit": "e2fe2a895e8f973307ef52f8c9976b26e701cbd0",
+   "sha256": "0k5jkjzx6f8nfmbkc61raj585p9pymycgzv7rr3fhv2drgkaa4yi"
+  }
+ },
+ {
+  "ename": "exwm-firefox-evil",
+  "commit": "09fa63c7bd639c0b7dda540504c74cdbbe4f9875",
+  "sha256": "0wg3jydgj2fi5gxv3kwm1dvpxvc3ypn28kxlzfp801xrrfc241ml",
+  "fetcher": "github",
+  "repo": "walseb/exwm-firefox-evil",
+  "unstable": {
+   "version": [
+    20200206,
+    2212
+   ],
+   "deps": [
+    "evil",
+    "exwm",
+    "exwm-firefox-core"
+   ],
+   "commit": "14643ee53a506ddcb5d2e06cb9f1be7310cd00b1",
+   "sha256": "12rhsy5f662maip1sma0vi364xb8swb7g59r4dmafjv3b52gxik8"
+  }
+ },
+ {
+  "ename": "exwm-mff",
+  "commit": "78f94ec4d5f83020003cbdb7b954213dfb0f242b",
+  "sha256": "10qjdhdkvyavjl43cyq9czvfbx8s0riiby0fss6v0snxdhg4qysd",
+  "fetcher": "github",
+  "repo": "ieure/exwm-mff",
+  "unstable": {
+   "version": [
+    20190810,
+    1744
+   ],
+   "deps": [
+    "exwm"
+   ],
+   "commit": "a6a4b3dda01cbcf411fc2824981eaa9e85199a52",
+   "sha256": "1f4yr4q5dayxmyvrdxbbviks6l02amqhgfa97k7cz9rwscsavg6c"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    6
+   ],
+   "deps": [
+    "exwm"
+   ],
+   "commit": "74a05bb1cc9444bb57d7a5361a15ec38deb4295a",
+   "sha256": "128j1xqg1k2z0lp7ivnszx8aai8y0zg182n1fhwc3iryrz52fn5q"
+  }
+ },
+ {
+  "ename": "exwm-surf",
+  "commit": "4fc27fae2b58c7af87dadba9217cc05f8ab4890c",
+  "sha256": "066qbn1w63irh9b03qs0fv77x71cind22kdj6wygaznrpgwr0kny",
+  "fetcher": "github",
+  "repo": "ecraven/exwm-surf",
+  "unstable": {
+   "version": [
+    20171204,
+    1140
+   ],
+   "deps": [
+    "exwm"
+   ],
+   "commit": "6c17e2c1597fe4b7b454a1dac23b9127ac951e94",
+   "sha256": "0rb921fq3pyzv0w1s6n0zx4j7cvv68mb50hfa8nqnppz5ii1k0lb"
+  }
+ },
+ {
+  "ename": "exwm-x",
+  "commit": "a0e6e23bcffdcd1e17c70599c563609050e5de40",
+  "sha256": "1d9q57vz63sk3h1g5gvp9xnmqkpa73wppmiy2bv8mxk11whl6xa3",
+  "fetcher": "github",
+  "repo": "tumashu/exwm-x",
+  "unstable": {
+   "version": [
+    20190224,
+    1152
+   ],
+   "deps": [
+    "bind-key",
+    "cl-lib",
+    "counsel",
+    "exwm",
+    "ivy",
+    "swiper",
+    "switch-window"
+   ],
+   "commit": "02ec31cd8996b1b3fe305405fef7334c4d08e72b",
+   "sha256": "18cgfnh7bp152gi4zv2skrkjbxs0v2zn6jk35rc48y8nfivps2f4"
+  },
+  "stable": {
+   "version": [
+    1,
+    9,
+    0
+   ],
+   "deps": [
+    "bind-key",
+    "cl-lib",
+    "counsel",
+    "exwm",
+    "ivy",
+    "swiper",
+    "switch-window"
+   ],
+   "commit": "88c8b70be678ce0e9fa31e191ffd3f76bbfee61f",
+   "sha256": "03l3dl7s1qys1kkh40rm1sfx7axy1b8sf5f6nyksj9ps6d30p5i4"
+  }
+ },
+ {
+  "ename": "eyebrowse",
+  "commit": "20b2cc78b41a26e434b984943681fea774fd3c50",
+  "sha256": "18wkfih7i6swg0wadkrs3bq7bmy54v0lph2p14dqpgmxcyh2zzgg",
+  "fetcher": "git",
+  "url": "https://depp.brause.cc/eyebrowse.git",
+  "unstable": {
+   "version": [
+    20200506,
+    1303
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "bde0eb8f56ec7e2501dc33154c273e43cafb1e5d",
+   "sha256": "19x3wfnbcmrrywxbigr3lv0yp6dxmr0iy10ykqg3pajpxbvarcn2"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    8
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "d75e37a048718d6981c366c431b93ccbe884f356",
+   "sha256": "08k6dcz2pzgv0n4rfpq0gmpzs9319h5jk5xznmh2s8y42imvp5l7"
+  }
+ },
+ {
+  "ename": "eyuml",
+  "commit": "b09a8d723e357da67441e65047759ccfa9cb7ef6",
+  "sha256": "0ada2gcl8bw9nn0fz8g9lbqy8a8w1554q03fzd7lv8qla33ri3wx",
+  "fetcher": "github",
+  "repo": "antham/eyuml",
+  "unstable": {
+   "version": [
+    20141028,
+    2227
+   ],
+   "deps": [
+    "request",
+    "s"
+   ],
+   "commit": "eb29c37316e44a14741f16e894fbcfcb7537dc80",
+   "sha256": "19n2dzr3m56g76igh57cvvhqwpbcicwr7r6r4i3l8vsjch99kp6m"
+  }
+ },
+ {
+  "ename": "ez-query-replace",
+  "commit": "c40808c7687ace84e4c59bf8c25332c94b6fdd76",
+  "sha256": "1h9ijr1qagwp9vvikh7ajby0dqgfypjgc45s7d93zb9jrg2n5cgx",
+  "fetcher": "github",
+  "repo": "Wilfred/ez-query-replace.el",
+  "unstable": {
+   "version": [
+    20170814,
+    1321
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "f5dbd2d3e5e62e6b7e7cc1a98fc4d0cd411e5afa",
+   "sha256": "14mikpxrsmjwdpya45cf47v2gjwxmql10xjk907x27iqqxmfif74"
+  }
+ },
+ {
+  "ename": "eziam-theme",
+  "commit": "4e0411583bd4fdbe425eb07de98851136fa1eeb0",
+  "sha256": "0iz3r4r54ai8y4qhnix291ra7qfmk8dbr06f52pgmz3gzin1cqpb",
+  "fetcher": "github",
+  "repo": "thblt/eziam-theme-emacs",
+  "unstable": {
+   "version": [
+    20200327,
+    1810
+   ],
+   "commit": "7a585de01b6fee081eaa167b09d7e12d02cf4149",
+   "sha256": "11v8rbaiaihpky1m7azbflz77mwg76nbg8hsgybs86wyjk5797dv"
+  },
+  "stable": {
+   "version": [
+    3
+   ],
+   "commit": "e0c0daa37c3d70880052b3d55fcda05b92d575a6",
+   "sha256": "0jv0l1hcb33cinqivckhp18a8fkxpg38pkdyva1zripgz1ldjvxc"
+  }
+ },
+ {
+  "ename": "f",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "18qax8i24gpccif4xcxccclpwl00plxjf3zbq9dry37b1r4mj57s",
+  "fetcher": "github",
+  "repo": "rejeep/f.el",
+  "unstable": {
+   "version": [
+    20191110,
+    1357
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "1814209e2ff43cf2e6d38c4cd476218915f550fb",
+   "sha256": "1l9lff15vbji9phpx4jrg8bmw2bkspzmhcgawchf5ylg2sb6yymm"
+  },
+  "stable": {
+   "version": [
+    0,
+    20,
+    0
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "de6d4d40ddc844eee643e92d47b9d6a63fbebb48",
+   "sha256": "1a47xk3yp1rp17fqg7ldl3d3fb888h0fz3sysqfdz1bfdgs8a9bk"
+  }
+ },
+ {
+  "ename": "f3",
+  "commit": "5b40de62a82d6895a37ff795d56f7d0f783461e6",
+  "sha256": "099wibgp9k6sgglaqigic5ay6qg7aqijnis5crwjl7b81ddqp610",
+  "fetcher": "github",
+  "repo": "cosmicexplorer/f3",
+  "unstable": {
+   "version": [
+    20180130,
+    1158
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "000009ce4adf7a57eae80512f29c4ec2a1391ce5",
+   "sha256": "0q3ylw0i1bg7pzsv4gj72jcfjjfh57vsb3fnfnhhh5i5vladiqsf"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "19120dda2d760d3dd6c6aa620121d1de0a40932d",
+   "sha256": "1qg48zbjdjqimw4516ymrsilz41zkib9321q0caf9474s9xyp2bi"
+  }
+ },
+ {
+  "ename": "fabric",
+  "commit": "83939d2a4d5874244a4916eee9ae6b327af18b5d",
+  "sha256": "1mkblsakdhvi10b67bv3j0jsf7hr8lf9sibmprvx8smqsih7l88m",
+  "fetcher": "github",
+  "repo": "nlamirault/fabric.el",
+  "unstable": {
+   "version": [
+    20171116,
+    656
+   ],
+   "commit": "df79be341d0b34ed23850f9894136092fa5fea8c",
+   "sha256": "1mnz81k1jz2sa3zj68ihzgq66l9fcxvzb67ad62p8bvi2aksxx7z"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "004934318f63d8cf955022f87b2c33eb97ada280",
+   "sha256": "0crhkdbxz1ldbrvppi95g005ni5zg99z1271rkrnk5i6cvc4hlq5"
+  }
+ },
+ {
+  "ename": "face-explorer",
+  "commit": "2370fdf6421dc518337e04bd2453a5f74e2df2b2",
+  "sha256": "1jfidkkizgwhkkrgvrmq5vrx5ir4zjw4zzc2alw9gkjn1ddq22q7",
+  "fetcher": "github",
+  "repo": "Lindydancer/face-explorer",
+  "unstable": {
+   "version": [
+    20190517,
+    1857
+   ],
+   "commit": "ad1300e13e5643e4c246cabfd91f833d39113052",
+   "sha256": "0nq36h6kwyi2sv1fklm42spfkllm6jlz0alh2qlpgy4ixq5sp2pv"
+  }
+ },
+ {
+  "ename": "face-shift",
+  "commit": "e55d2d30525602726c3c63025f5fce671efac416",
+  "sha256": "1y0m6yv64q76x6i2r5npn97c2axsy2k7b3m58zxh8p7c5lpwjdpa",
+  "fetcher": "git",
+  "url": "https://git.sr.ht/~zge/face-shift",
+  "unstable": {
+   "version": [
+    20190818,
+    1551
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "8dd6fb5f6277d3a594654aeb3e6a7b7b5581656a",
+   "sha256": "003k8i18s782zf1g0c9wi8p9lyk0viz76dah8hd3y622hmx8sdlb"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "347e9a1c801c80be546fbf3be808f8245fb049d8",
+   "sha256": "0lkrbbhgv2a101rsf78ik27ni66spml3z9ljsajwjwhv3hvky0rq"
+  }
+ },
+ {
+  "ename": "faceup",
+  "commit": "a10bf2928b93c3908e89ca8ad9649bb468ebca05",
+  "sha256": "0l41xp38iji55dv20lk7r187ywcz8s1g2jmwbjwkspzmcf763xvx",
+  "fetcher": "github",
+  "repo": "Lindydancer/faceup",
+  "unstable": {
+   "version": [
+    20170925,
+    1946
+   ],
+   "commit": "6c92dad56a133e14e7b27831e1bcf9b3a71ff154",
+   "sha256": "1yzmy7flrhrh0i10bdszx8idx6r8h6czm4vm4q0z6fp5fw94zwrx"
+  }
+ },
+ {
+  "ename": "factlog",
+  "commit": "9075a42edee1ac7de0812d2eefcba5681859eb6e",
+  "sha256": "163482vfpa52b5ya5xps4qnclbaql1x0q54gqdwwmm04as8qbfz7",
+  "fetcher": "github",
+  "repo": "tkf/factlog",
+  "unstable": {
+   "version": [
+    20130210,
+    140
+   ],
+   "deps": [
+    "deferred"
+   ],
+   "commit": "6503d77ea882c995b051d22e72db336fb28770fc",
+   "sha256": "19zm9my7fl1r3q48axjv2f8x9hcjk6qah4y4r92b90bzfmcdc30y"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "commit": "c834fdab81ec5b1bdc0ee2721a12cecb48a319bf",
+   "sha256": "01l8dlfpyy97b17djbza46rq11xlbkhd5kn2r26r2xac8klj4pka"
+  }
+ },
+ {
+  "ename": "faff-theme",
+  "commit": "0b35c169fe56a5612ff5a4242140f617fdcae14f",
+  "sha256": "1dmwbkp94zsddy0brs3mkdjr09n69maw2mrdfhriqcdk56qpwp4g",
+  "fetcher": "github",
+  "repo": "WJCFerguson/emacs-faff-theme",
+  "unstable": {
+   "version": [
+    20200304,
+    1414
+   ],
+   "commit": "3a2f4b567de490ee7af32ecca46de741e7fd7d6a",
+   "sha256": "0h3i61md4w6zsjarqan0s3p3kxz5af6ic3fww4ly6s8q1nv57xsc"
+  },
+  "stable": {
+   "version": [
+    2,
+    9
+   ],
+   "commit": "0aaa15181eab4088a57ad69ba2c93b2663453c31",
+   "sha256": "0xg20g9qqmi1x94d8f0gqwxgxpyzirs61nj86507bqn2c4n00r7v"
+  }
+ },
+ {
+  "ename": "fakespace",
+  "commit": "778dbe1fd1d2ecebb499ad66bc950e586f231c52",
+  "sha256": "09dsmrqax4wfcw8fd5jf07bjxm5dizpc2qvjkqwg74j2n352wv27",
+  "fetcher": "github",
+  "repo": "skeeto/elisp-fakespace",
+  "unstable": {
+   "version": [
+    20120818,
+    6
+   ],
+   "commit": "d1bd1f4b14b2690d7a67f9a52622ec51ed84813a",
+   "sha256": "11fm0h9rily5731s137mgv8rdbfqi99s6f36bgr0arwbq3f2j3fs"
+  }
+ },
+ {
+  "ename": "fakir",
+  "commit": "d0a8abd5fd77a14b957f53b5bc8474403cc1e18f",
+  "sha256": "07bicglgpm6qkcsxwj6rswhx4hgh27rfg8s1cki7g8qcvk2f7b25",
+  "fetcher": "github",
+  "repo": "nicferrier/emacs-fakir",
+  "unstable": {
+   "version": [
+    20140729,
+    1652
+   ],
+   "deps": [
+    "dash",
+    "kv",
+    "noflet"
+   ],
+   "commit": "1fca406ad7de80fece6319ff75d4230b648534b0",
+   "sha256": "1w5apzbzr1jd983b0rzsy9ldb0z0zcq6mpyb5r8czl5wd4vvj69h"
+  }
+ },
+ {
+  "ename": "fancy-battery",
+  "commit": "29dc2ef3801a1cd7cf8edd2eae68b03bf00e96a0",
+  "sha256": "09qlkij9lbkaq46yb1860nkfiqpcn0h67zmm9lyz28475686759j",
+  "fetcher": "github",
+  "repo": "emacsorphanage/fancy-battery",
+  "unstable": {
+   "version": [
+    20150101,
+    1204
+   ],
+   "commit": "9b88ae77a01aa3edc529840338bcb2db7f445822",
+   "sha256": "1k6prddw277iszh9hq145yqidwiiy9iqz656rpmqwn5hmr1vakhk"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "5b8115bbeb67c52d4202a12dcd5726fb66e0a1ff",
+   "sha256": "05lwcwf412m717yhwpjrswqkm8c3i7391rmiwv2k8xc1vk6dpp4g"
+  }
+ },
+ {
+  "ename": "fancy-dabbrev",
+  "commit": "1ac5a3797d9882235de984739d5a2bf122b64540",
+  "sha256": "038zyg8kmz7k2y2xfs5mmm4fh87a503yri990kyf82pqyrsj3yww",
+  "fetcher": "github",
+  "repo": "jrosdahl/fancy-dabbrev",
+  "unstable": {
+   "version": [
+    20200129,
+    1933
+   ],
+   "deps": [
+    "popup"
+   ],
+   "commit": "158e1e54055cafe5da9122a59519e8b3ed1057cf",
+   "sha256": "06616lzvv6vdc2i37gy47zw3rb4yjml83vn5py2k30ck8gl4fhs2"
+  }
+ },
+ {
+  "ename": "fancy-narrow",
+  "commit": "1e6aed365c42987d64d0cd9a8a6178339b1b39e8",
+  "sha256": "15i86jz6rdpva1az7gqp1wbm8kispcfc8h6v9fqsbag9sbzvgcyv",
+  "fetcher": "github",
+  "repo": "Malabarba/fancy-narrow",
+  "unstable": {
+   "version": [
+    20171031,
+    16
+   ],
+   "commit": "c9b3363752c09045b8ce7a2635afae42d2ae63c7",
+   "sha256": "1icc43dlb38w9ip2077a4n8xk102f4l1wfy4c04vpjykxpda4sxv"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    5
+   ],
+   "commit": "c0f70b4333d4764323b7154e37a378adb1610ab7",
+   "sha256": "0vcr1gnqawvc1yclqs23jvxm6bqix8kpflf1c7znb0wzxmz9kx7y"
+  }
+ },
+ {
+  "ename": "fantom-theme",
+  "commit": "e5cb6a9f6a657b72a00a39c118d90416ae2f343c",
+  "sha256": "18p82f82hr1sx8w9lmjxr3hvvy4ddxvyd245v32vjay5zc730y33",
+  "fetcher": "github",
+  "repo": "adsva/fantom-emacs-theme",
+  "unstable": {
+   "version": [
+    20200328,
+    604
+   ],
+   "commit": "2c1c7fd53086c2ff86ee0961642c3b58e2343c08",
+   "sha256": "1clvpjsf241fdkk3915zjqb4wivsjsvc9phf633pzbvi61qwhaap"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "70cef2886ca90c93bcafc869bcc77bad1e390c33",
+   "sha256": "1q15wx53zq6b9f567anrfmfpj04f3r6wz28w4237f9lg62yqhm9x"
+  }
+ },
+ {
+  "ename": "farmhouse-theme",
+  "commit": "3b0d427db8ab66d2fe323366b0837595b3b59afa",
+  "sha256": "0hbqdrw6x25b331qhbg3yaaa45c2b896wknsjm0a1kg142klq229",
+  "fetcher": "github",
+  "repo": "mattly/emacs-farmhouse-theme",
+  "unstable": {
+   "version": [
+    20160713,
+    2244
+   ],
+   "commit": "7ddc1ff13b4a3d5466bd0d33ecb86100352e83a7",
+   "sha256": "09k6agh205kr2lif354m38l3967b0jajm14rgpl7l1vlajh8wzfd"
+  }
+ },
+ {
+  "ename": "fasd",
+  "commit": "f0a8eb0eefe88b4ea683a4743c0f8393506e014b",
+  "sha256": "0ssb1bbw3cwd4zdy08a0fymwjwgdnx0kil5x3x1b7k8kan942436",
+  "fetcher": "git",
+  "url": "https://framagit.org/steckerhalter/emacs-fasd.git",
+  "unstable": {
+   "version": [
+    20180606,
+    505
+   ],
+   "commit": "020c6a4b5fd1498a84ae142d2e32c7ff678fb029",
+   "sha256": "142zq0zz38j3akgc1gipqhgs05krlkig1i97pgzmi4jcqdgm3lx9"
+  }
+ },
+ {
+  "ename": "fast-scroll",
+  "commit": "1a06816fe50be692f971f08e76f687a3560baceb",
+  "sha256": "1ds8wjc2zdvr31c4c1dwrbf6al9ff3p4njli7mis85kb883k371c",
+  "fetcher": "github",
+  "repo": "ahungry/fast-scroll",
+  "unstable": {
+   "version": [
+    20191016,
+    327
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "3f6ca0d5556fe9795b74714304564f2295dcfa24",
+   "sha256": "08nwjyqdkp1g27jqgq7b2nd90kzsfv9mjkkjpniprhfqdqjjcp63"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    5
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "0f78d1039e5394a6b57d186189a89937453c7002",
+   "sha256": "042dkz12rcj27ymla1lg70vwg3n7vb9i5908ga6vabn7q61bxbsh"
+  }
+ },
+ {
+  "ename": "fastdef",
+  "commit": "f6effb2fbccc71e8a44c53138e3c21f10dc55fbc",
+  "sha256": "1cf4slxhcp2z7h9k3l31h06nnqsyb4smwnj55ivil2lm0fa0vlzj",
+  "fetcher": "github",
+  "repo": "redguardtoo/fastdef",
+  "unstable": {
+   "version": [
+    20160713,
+    1329
+   ],
+   "deps": [
+    "ivy",
+    "w3m"
+   ],
+   "commit": "0696f41dc150d35ce31fe8d2ea74f4173818bb55",
+   "sha256": "1p5vmbx7zdzxnyjzcp2vxscd3dwf7xk82wk9dfiv99svwqv2ki3w"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "ivy",
+    "w3m"
+   ],
+   "commit": "0696f41dc150d35ce31fe8d2ea74f4173818bb55",
+   "sha256": "1p5vmbx7zdzxnyjzcp2vxscd3dwf7xk82wk9dfiv99svwqv2ki3w"
+  }
+ },
+ {
+  "ename": "fastnav",
+  "commit": "d2a7dce6617bf4ed250dba150e6787bf48891c64",
+  "sha256": "08hg256w8k9f5nzgpyl1jykbf28vmvv09kkhzs0s2zhwbl2158a5",
+  "fetcher": "github",
+  "repo": "gleber/fastnav.el",
+  "unstable": {
+   "version": [
+    20120211,
+    1457
+   ],
+   "commit": "1019ba2b61d1a070204099b23da347278a61bc89",
+   "sha256": "0y95lrdqd9i2kbb266s1wdiim4m8vrn3br19d8s55ib6xlywf8cx"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    7
+   ],
+   "commit": "54626e9e7cc7be5bc2bd01732e95ed2afc2312a1",
+   "sha256": "0h32w63vv451797zi6206j529fd4j8l3fp7rqip3s8xn8d4728x1"
+  }
+ },
+ {
+  "ename": "faust-mode",
+  "commit": "b362e7daeabd07c726ad9770d7d4941dfffd5b19",
+  "sha256": "0l8cbf5i6lv6i5vyqp6ngfmrm2y6z2070b8m10w4376kbbnr266z",
+  "fetcher": "github",
+  "repo": "rukano/emacs-faust-mode",
+  "unstable": {
+   "version": [
+    20180205,
+    926
+   ],
+   "commit": "7c31b22bdbfd2f8c16ec117d2975d56dd61ac15c",
+   "sha256": "0a3p69ay88da13cz2cqx00r3qs2swnn7vkcvchcqyrdybfjs7y4z"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "commit": "7c31b22bdbfd2f8c16ec117d2975d56dd61ac15c",
+   "sha256": "0a3p69ay88da13cz2cqx00r3qs2swnn7vkcvchcqyrdybfjs7y4z"
+  }
+ },
+ {
+  "ename": "faustine",
+  "commit": "8b4c6b03c5ff78ce327dcf66b175e266bbc53dbf",
+  "sha256": "1blmz993xrwkyr7snj7rm07s07imgpdlfqi6wxkm4ns6iwa2q60s",
+  "fetcher": "git",
+  "url": "https://bitbucket.org/yphil/faustine",
+  "unstable": {
+   "version": [
+    20171122,
+    1202
+   ],
+   "deps": [
+    "faust-mode"
+   ],
+   "commit": "07a38963111518f86123802f9d477be0d4689a3f",
+   "sha256": "0dj35hwkm5v8758c4ssl873vkvplba5apjsh7l23nsmnzdji99zg"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "faust-mode"
+   ],
+   "commit": "f186461e2bc38ec8ae38bd5ab727cc769218a168",
+   "sha256": "16p7qmljjki4svci3mxzydmvpxaprbnfq6794b3adyyixkmgr6k7"
+  }
+ },
+ {
+  "ename": "fcitx",
+  "commit": "e8c40f09d9397b3ca32a7ed37203f490497dc984",
+  "sha256": "0a8wd588c26p3czfp5hn2n46f2vwyg5v301sv0y07b55b1i3ynmx",
+  "fetcher": "github",
+  "repo": "cute-jumper/fcitx.el",
+  "unstable": {
+   "version": [
+    20190806,
+    1923
+   ],
+   "commit": "12dc2638ddd15c8f6cfaecb20e1f428ab2bb5624",
+   "sha256": "0ahw2pi6i693s4mdjdkisy94yvg0wgmd3c6zi0z4yi60b6irskdn"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    3
+   ],
+   "commit": "6d552ab44234ed78ce9a50f2412f56197266bc9f",
+   "sha256": "08l859rw1lwj6hdxrlxqlxf1cfxv8yv9h1jsgs5zfis3hp7nq39j"
+  }
+ },
+ {
+  "ename": "fcopy",
+  "commit": "f9afd35b7c7075bef9ed878b7122ff9783fdd9fd",
+  "sha256": "13337ymf8vlbk8c4jpj6paqi06xdmk39yf72s40kmfrbvgmi8qy1",
+  "fetcher": "github",
+  "repo": "ataka/fcopy",
+  "unstable": {
+   "version": [
+    20150304,
+    1403
+   ],
+   "commit": "e355f6ec889d8ecbdb096019c2dc660b1cec4941",
+   "sha256": "0c56j8ip2fyma9yvwaanz89jyzgi9k11xwwkflzlzc4smnvgfibr"
+  }
+ },
+ {
+  "ename": "fd-dired",
+  "commit": "1217e0d4f42df68cc22de9b4f27a36c0377509e3",
+  "sha256": "0g8zvg6b9hcxkmqn254y9khjm7jz2lz4mh7dhsxfcy64inaj0481",
+  "fetcher": "github",
+  "repo": "yqrashawn/fd-dired",
+  "unstable": {
+   "version": [
+    20200428,
+    332
+   ],
+   "commit": "001cc95effdd5c4d9974b3f2c40b2ddf1f0e3de2",
+   "sha256": "1ab03jn1kg4bq97d7dzinpxlyg3wcx4cha0a7ibqdbqrci3znigc"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "d90ec902f417c194e44697f73a9d6cbfd0cf7216",
+   "sha256": "1fas0fpvym2lyzybwm44gly9jz6a2fpp72yxnwfbqqjkfgk9910y"
+  }
+ },
+ {
+  "ename": "feather",
+  "commit": "ffb7d037679110473a8c3f9e98f737ecaba37c40",
+  "sha256": "1k3sxwpibk5sdim4pzfi83pzsm4vnq0xl006dy76pv363r9mvs21",
+  "fetcher": "github",
+  "repo": "conao3/feather.el",
+  "unstable": {
+   "version": [
+    20200321,
+    1237
+   ],
+   "deps": [
+    "async",
+    "async-await",
+    "page-break-lines",
+    "ppp"
+   ],
+   "commit": "529b7ec69f1694d7dc8aacb5066cf4ddcf24cc58",
+   "sha256": "0flph6yv5fj5ladksjqfpj9j8p2jcc102kbc833bvx1cnmjx7qk4"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "commit": "4cb69055cfc42841bad1de072f69dd6923899766",
+   "sha256": "1fq5ysxwiaah56rizkc47vjqi8906af3ga1n1frvrvap8m9vdz4m"
+  }
+ },
+ {
+  "ename": "feature-mode",
+  "commit": "0a70991695f9ff305f12cfa45e0a597f4a782ba3",
+  "sha256": "0ryinmpqb3c91qcna6gbijcmqv3skxdc947dlr5s1w623z9nxgqg",
+  "fetcher": "github",
+  "repo": "michaelklishin/cucumber.el",
+  "unstable": {
+   "version": [
+    20190801,
+    1137
+   ],
+   "commit": "11ae1671629bfedaa553c7b819676d64eb320992",
+   "sha256": "0yd4gkxz9xcbgibfgr8apsid3f83nmg5jgqk5nql0linj5gymc28"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "4bd8f19da816115094beb4b0e085822eb298ac37",
+   "sha256": "1cxjygg05v8s96c8z6plk3hl34jaiwg7s7dl7dsk20rj5f54kgw7"
+  }
+ },
+ {
+  "ename": "feebleline",
+  "commit": "782295d8c530878bd0e20cde7e7f7f8f640953dd",
+  "sha256": "0c604ahhv9c89r3hj7091zhhfpbykh4c23sn6ymqw4pp0dq4pgkj",
+  "fetcher": "github",
+  "repo": "tautologyclub/feebleline",
+  "unstable": {
+   "version": [
+    20190822,
+    1401
+   ],
+   "commit": "b2f2db25cac77817bf0c49ea2cea6383556faea0",
+   "sha256": "0f2nynx9sib29qi3zkfkgxlcfrwz607pgg6qvvk4nnads033p1yn"
+  }
+ },
+ {
+  "ename": "fennel-mode",
+  "commit": "cda0732050a17b2dc70b80afd6fc6bb9cf8bb60f",
+  "sha256": "0lg69rjvbg7zl4jxc88m12r4rgv2mg2xdyz591mdmgvxwr2hfrv9",
+  "fetcher": "gitlab",
+  "repo": "technomancy/fennel-mode",
+  "unstable": {
+   "version": [
+    20200405,
+    1935
+   ],
+   "commit": "7fadf2580c3afcae3f6ebc54dad0e519b7600f1d",
+   "sha256": "1qpfpfdm2d8bdqm7h62y3hgbip67yqmblhg66zlmfxfdnsad5ls6"
+  }
+ },
+ {
+  "ename": "fetch",
+  "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228",
+  "sha256": "0mph6kri9p0g38ll1cakpgfaz1krkyhi1382kybg1xyfy17jisg3",
+  "fetcher": "github",
+  "repo": "cbrst/fetch.el",
+  "unstable": {
+   "version": [
+    20131201,
+    730
+   ],
+   "commit": "3f2793afcbbc32f320e572453166f9354ecc6d06",
+   "sha256": "0pjw9fb3n08yd38680ifdn2wlnw2k6q97lzhqb2259mywsycyqy8"
+  }
+ },
+ {
+  "ename": "ffmpeg-player",
+  "commit": "c3b60e5e699e0731ba195e5ea0760c218b3df4e9",
+  "sha256": "03ni2m92rjsz1dclw3gl983aganv9s88mczxw06lpmflrc5w0ac6",
+  "fetcher": "github",
+  "repo": "jcs-elpa/ffmpeg-player",
+  "unstable": {
+   "version": [
+    20200224,
+    554
+   ],
+   "deps": [
+    "f",
+    "s"
+   ],
+   "commit": "9a80e1d42a4b01879a7585485384af6431b34651",
+   "sha256": "129mfslbp15d9z83r38lcqxnfx3n5jldaja5qbdgrmlw14irgx0r"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "f",
+    "s"
+   ],
+   "commit": "214c08b362daa138d2e17883a6b4d096f22f5ebb",
+   "sha256": "0w2afgdd3pasrqi9apnmp0qqg4qvd0skizybrnyi9abnc0bp9v7x"
+  }
+ },
+ {
+  "ename": "fic-mode",
+  "commit": "0fda2b54a0ff0b6fc3bd6d20cfcbbf63cae5380f",
+  "sha256": "0yy1zw0b0s93qkzyq0n17gzn33ma5h56mh40ysz6adwsi68af84c",
+  "fetcher": "github",
+  "repo": "lewang/fic-mode",
+  "unstable": {
+   "version": [
+    20180603,
+    2035
+   ],
+   "commit": "a05fc36ed54ba0c6dc22ac216a6a72cf191ca13d",
+   "sha256": "074dfwdir2dx5cpbjk1ac8d3hkjkrylivy7agir5mnmzjm3bs9gw"
+  }
+ },
+ {
+  "ename": "fifo-class",
+  "commit": "1b4fa87f7d5592bc264805760d191df2a3539cf1",
+  "sha256": "0yyjrvdjiq5166vrys13c3dqy5807a3x99597iw5v6mcxg37jg3h",
+  "fetcher": "github",
+  "repo": "mola-T/fifo-class",
+  "unstable": {
+   "version": [
+    20160425,
+    558
+   ],
+   "commit": "8fe4cf690727f4ac7b67f29c55f845df023c3f21",
+   "sha256": "0dkng4zkd5xdyvqy67bnfp4z6w8byx66bssq1zl7bhga45vihfjg"
+  }
+ },
+ {
+  "ename": "figlet",
+  "commit": "caca0b2bc2aaac563074cbb4ea4296fce749e203",
+  "sha256": "0p5xnq3c4bvvy7nqgi18ylsha7kz9r7apw7lz84kq5hwhni298k5",
+  "fetcher": "github",
+  "repo": "jpkotta/figlet",
+  "unstable": {
+   "version": [
+    20160218,
+    2237
+   ],
+   "commit": "19a38783a90e151faf047ff233a21a729db0cea9",
+   "sha256": "1c18b1h154sdxkksqwk8snyk8n43bwzgavi75l8mnz8dnl1ciaxs"
+  }
+ },
+ {
+  "ename": "filelock",
+  "commit": "bda76dfbf37eaa17bebb4b8c34006704862db433",
+  "sha256": "13ra697y0fhkjwsaqqlphcyfqkaiix5z59qw4q6rgix4k8ypj8db",
+  "fetcher": "github",
+  "repo": "DarwinAwardWinner/emacs-filelock",
+  "unstable": {
+   "version": [
+    20180524,
+    2215
+   ],
+   "deps": [
+    "cl-lib",
+    "f"
+   ],
+   "commit": "17a5ca6e0dee14d2e7d92c84be91143bca9d9663",
+   "sha256": "1smiad56626bc7q6vgj5gc710hnx814d4xlpxdlfzqlmj08y9dyk"
+  }
+ },
+ {
+  "ename": "filetags",
+  "commit": "eabd1c808758bb46fbc25e124bd4532764b8d7da",
+  "sha256": "06qvwhg884plz0bk7lhnp3sb6qv5rypkb0jqq53vmnbw7nz0dlyv",
+  "fetcher": "github",
+  "repo": "DerBeutlin/filetags.el",
+  "unstable": {
+   "version": [
+    20190706,
+    804
+   ],
+   "commit": "01e6a919507a832ee001a2a0fc257657f8b04b72",
+   "sha256": "15557rkbi3d40q2zs5vkgkpbya4c4ksnh2a07d8l7x457zah4fbn"
+  }
+ },
+ {
+  "ename": "fill-column-indicator",
+  "commit": "4ea0c00a7784621fcca0391a9c8ea85e9dd43852",
+  "sha256": "0w8cmijv7ihij9yyncz6lixb6awzzl7n9qpjj2bks1d5rx46blma",
+  "fetcher": "github",
+  "repo": "alpaker/Fill-Column-Indicator",
+  "unstable": {
+   "version": [
+    20191109,
+    10
+   ],
+   "commit": "3d88b8a4a3eeabb8d1c9ef27d3c6f5d98517be77",
+   "sha256": "1rklnjsqz8krqjll35xd5xwg79xqwh0sldwbcnymkjwywbky8yhh"
+  },
+  "stable": {
+   "version": [
+    1,
+    90
+   ],
+   "commit": "f7b3f99b41ff017f50a21ad53eed16f8ef5ab7ee",
+   "sha256": "0snjznxdwwfdgccdcvrnk467416r244r2r5qcm2sga8l0ha9gw9z"
+  }
+ },
+ {
+  "ename": "fill-function-arguments",
+  "commit": "b78eab67517b19516e5d265018afcbff0acfa9ec",
+  "sha256": "1gigzzz2csl3a55jmjx391a5k3ymixnwpblsn0pfgkkk4p3674q0",
+  "fetcher": "github",
+  "repo": "davidshepherd7/fill-function-arguments",
+  "unstable": {
+   "version": [
+    20190710,
+    929
+   ],
+   "commit": "295d55d6056e6f79b68283f7631f6438ea8a7b5f",
+   "sha256": "0nx3krpqn1c0xvr81504m4s84bkxpq42s97igmg6jfsjy7dphp2k"
+  },
+  "stable": {
+   "version": [
+    0,
+    9
+   ],
+   "commit": "e819fca19a138ae67201220e41fe1d4384fb2a42",
+   "sha256": "102aalb7bfvjgf1klqsx6mn5a4vfjq63kwn7wqs9cmlib1mp8vnf"
+  }
+ },
+ {
+  "ename": "fillcode",
+  "commit": "85eb403503aa83799a6072bfe21bf66c8177ca73",
+  "sha256": "0bfsw55vjhx88jpy6npnzfwinvggivbvkk7fa3iwzq19005fkag2",
+  "fetcher": "github",
+  "repo": "snarfed/fillcode",
+  "unstable": {
+   "version": [
+    20171029,
+    1625
+   ],
+   "commit": "d0a9e20f5fcc24a786d09ea19bfb9237681ba823",
+   "sha256": "1mf2gfcjaqbw523vkfbzs2nl1y9bn9gbgmbvn2phbyj78gzq18za"
+  }
+ },
+ {
+  "ename": "finalize",
+  "commit": "1b55869b5183644de02687d2e56f9b68854ccda3",
+  "sha256": "1n0w4kdzc4hv4pprv13lr88gh46slpxdvsc162nqm5mrqp9giqqq",
+  "fetcher": "github",
+  "repo": "skeeto/elisp-finalize",
+  "unstable": {
+   "version": [
+    20170418,
+    1945
+   ],
+   "deps": [
+    "cl-generic",
+    "cl-lib",
+    "eieio"
+   ],
+   "commit": "846731531e7d1d80451787992e07bfe7dedbe9ff",
+   "sha256": "0kqsqmfvnh0slx0hmrsw66rh62sgzyhzck7ii9zylkq72wj60fgl"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "deps": [
+    "cl-generic",
+    "cl-lib",
+    "eieio"
+   ],
+   "commit": "0f7d47c4d50f1c76fc3b43bfc2d4886dd3e8ca27",
+   "sha256": "1gvlm4i62af5jscwz0jccc8ra0grprxpg2rlq91d5nn8dn5lpy79"
+  }
+ },
+ {
+  "ename": "find-by-pinyin-dired",
+  "commit": "0aa68b4603bf4071d7d12b40de0138ecab1989d7",
+  "sha256": "150hvih3mdd1dqffgdcv3nn4qhy86s4lhjkfq0cfzgngfwif8qqq",
+  "fetcher": "github",
+  "repo": "redguardtoo/find-by-pinyin-dired",
+  "unstable": {
+   "version": [
+    20180210,
+    218
+   ],
+   "deps": [
+    "pinyinlib"
+   ],
+   "commit": "3b4781148dddc84a701ad76c0934ed991ecd59d5",
+   "sha256": "03fw1si115padxss6zb9fr0dsyq1bxlhxikgh4i5swp4jd4331k5"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "deps": [
+    "pinyinlib"
+   ],
+   "commit": "2c48434637bd63840fca4d2c6cf9ebd5dd44658f",
+   "sha256": "0ial0lbvg0xbrwn8cm68xc5wxj3xgp110y2zgypkdpak8gkv8b5h"
+  }
+ },
+ {
+  "ename": "find-file-in-project",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "0aznnv82xhnilc9j4cdmcgh6ksv7bhjjm3pa76hynnyrfn7kq7wy",
+  "fetcher": "github",
+  "repo": "technomancy/find-file-in-project",
+  "unstable": {
+   "version": [
+    20200227,
+    1204
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "acedab403f69f242fa41012c20078500d46aa9e8",
+   "sha256": "0p21vm6xz6093nic2wwgly18a85xki3wp0a2vy4hgy0dl7qici86"
+  },
+  "stable": {
+   "version": [
+    5,
+    7,
+    10
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "e5bd59c52ddf3cd59bbaa4247770d7b2957a6ea3",
+   "sha256": "156sfd5xs831sdlkf7p5m20hzznv1zlf9nm3pfm8n8ixp13fnzj0"
+  }
+ },
+ {
+  "ename": "find-file-in-repository",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "02rihpfpckppnf5a2zgd5s3dspdhq4mr6qchlrzg2fd4byjxra9s",
+  "fetcher": "github",
+  "repo": "h/find-file-in-repository",
+  "unstable": {
+   "version": [
+    20190404,
+    828
+   ],
+   "commit": "b44d78682082270dc6b59cdc911333d0d3e7edaa",
+   "sha256": "1icsxp2b3grvdbv6bh9hpxz1hrqa7vvjzajjwi2knvjbq41d99bn"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "commit": "8b888f85029a2ff9159a724b42aeacdb051c3420",
+   "sha256": "0wbmmrd7brf4498pdyilz17rzv7221cj8sd4h11gac2r72f1q2md"
+  }
+ },
+ {
+  "ename": "find-temp-file",
+  "commit": "c01efd0cb3e3bab4661a358c084b645dc7e31736",
+  "sha256": "0c98zm94958rb9kdvqr3pad744nh63y3vy3lshfm0lsg85k9j62p",
+  "fetcher": "github",
+  "repo": "thisirs/find-temp-file",
+  "unstable": {
+   "version": [
+    20200117,
+    2254
+   ],
+   "commit": "2bfcdba0d6a8a0e6faa080cb04ff0f7ed06491ba",
+   "sha256": "1fr48mkrwxmpjk5lrznrr6nhnj8h6d3v984261nm44c0rzziq7vj"
+  }
+ },
+ {
+  "ename": "find-things-fast",
+  "commit": "3b63336dd150e791f3139d675af735b60054eb2b",
+  "sha256": "1fs3wf61lzm1hxh5sx8pr74g7g9np3npdwg7xmk81b5f2jx2vy6m",
+  "fetcher": "github",
+  "repo": "eglaysher/find-things-fast",
+  "unstable": {
+   "version": [
+    20150519,
+    2226
+   ],
+   "commit": "efc7c189019ed65430e2f9e910e8e0a5ca9d2d03",
+   "sha256": "1r6cs7p43pi6n2inbrv9q924m679izxwxqgyr4sjjj3lg6an4cnx"
+  }
+ },
+ {
+  "ename": "findr",
+  "commit": "ae489be43b1aee93614e40f492ebdf0b98a3fbc1",
+  "sha256": "0pw72bdpmc0ymlgjmwwrslhynij5a5b9sc3rx6vyprpv1ad4ac2c",
+  "fetcher": "github",
+  "repo": "emacsorphanage/findr",
+  "unstable": {
+   "version": [
+    20130127,
+    2032
+   ],
+   "commit": "1ddbc0464bb05dcda392b62666ad17239a2152d3",
+   "sha256": "0wx4hd4agrfvk0igyash658cbf7v3bv01rlspllsvzr59fl3faqq"
+  }
+ },
+ {
+  "ename": "fingers",
+  "commit": "f2afd4983d1a5820daafb31e96d54b214a79849f",
+  "sha256": "1r8fy6q6isjxz9mvaa8in4imdghzla3gg1l93dfm1v2rlr7bhzbg",
+  "fetcher": "github",
+  "repo": "fgeller/fingers.el",
+  "unstable": {
+   "version": [
+    20160817,
+    829
+   ],
+   "commit": "fed0f742afb1d72eaef29d8da394467550a030fa",
+   "sha256": "1mx05zfdrkwb50l7f0iycsqw23b1gxzacfnssclb42xdjxxmyhdj"
+  }
+ },
+ {
+  "ename": "fiplr",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "1a4w0yqdkz477lfyin4lb9k9qkfpx4350kfxmrqx6dj3aadkikca",
+  "fetcher": "github",
+  "repo": "grizzl/fiplr",
+  "unstable": {
+   "version": [
+    20140724,
+    645
+   ],
+   "deps": [
+    "cl-lib",
+    "grizzl"
+   ],
+   "commit": "3f50159fd42125440d5b0eb9d6398560461f030b",
+   "sha256": "1m5rcyvfwfqslqn9km413s8wqpzc9z68qpz3584g9sqp37mp6clp"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    4
+   ],
+   "deps": [
+    "grizzl"
+   ],
+   "commit": "100dfc33f43da8c49e50e8a2222b9d95532f6e24",
+   "sha256": "0lwgbd9zwdv7qs39c3fp4hrc17d9wrwwjgba7a14zwrhb27m7j07"
+  }
+ },
+ {
+  "ename": "fira-code-mode",
+  "commit": "0dc34b2d3cfd5e48df0fbe2086b8b4be1358dea4",
+  "sha256": "09i3xyk1xj7j895xmjwmxl1gaw73j9y22c5mgnavq0sm3fbpk4w0",
+  "fetcher": "github",
+  "repo": "jming422/fira-code-mode",
+  "unstable": {
+   "version": [
+    20200415,
+    2356
+   ],
+   "commit": "a61d7fce35eadba39236a6a3e9aa301e161d147b",
+   "sha256": "1bn81qwkvhznc5pi6bq08kp83208pj09vknfszx152r72sv5fpmz"
+  }
+ },
+ {
+  "ename": "firecode-theme",
+  "commit": "641d1959bd31598fcdacd39a3d1bb077dcccfa5c",
+  "sha256": "10lxd93lkrvz8884dv4sh6fzzg355j7ab4p5dpvwry79rhs7f739",
+  "fetcher": "github",
+  "repo": "emacsfodder/emacs-firecode-theme",
+  "unstable": {
+   "version": [
+    20170808,
+    1311
+   ],
+   "commit": "8b7b03ecdd41e70dab145b98906017e1392eaef4",
+   "sha256": "1vrpnv7555mbsksflgdkg7hc65fjcyzvzv2261y043rlh2qrn0sy"
+  }
+ },
+ {
+  "ename": "firefox-controller",
+  "commit": "70a69c20f8dcf73c878f2172dcc9f1796fdc0408",
+  "sha256": "03y96b3l75w9al8ylijnlb8pcfkwddyfnh8xwig1b6k08zxfgal6",
+  "fetcher": "github",
+  "repo": "cute-jumper/emacs-firefox-controller",
+  "unstable": {
+   "version": [
+    20160320,
+    1847
+   ],
+   "deps": [
+    "cl-lib",
+    "moz",
+    "popwin"
+   ],
+   "commit": "a8af8cbf70afaf6b89a26d6ac69af8e92afc181f",
+   "sha256": "0icgl88pwizwzkdqsxbwhnc6pdyqsfd7wgjnkvg3206i7hcqwpsp"
+  },
+  "stable": {
+   "version": [
+    2,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "moz",
+    "popwin"
+   ],
+   "commit": "a8af8cbf70afaf6b89a26d6ac69af8e92afc181f",
+   "sha256": "0icgl88pwizwzkdqsxbwhnc6pdyqsfd7wgjnkvg3206i7hcqwpsp"
+  }
+ },
+ {
+  "ename": "fireplace",
+  "commit": "4c1ac52c1cfe7ccf46092c2d299ebbffdc1b7609",
+  "sha256": "1apcypznq23fc7xgy4xy1c5hvfvjx1xhyq3aaq1lf59v99zchciw",
+  "fetcher": "github",
+  "repo": "johanvts/emacs-fireplace",
+  "unstable": {
+   "version": [
+    20200402,
+    2206
+   ],
+   "commit": "f6c23e259349922aae25cf2898ba815a7d8f2527",
+   "sha256": "16cb8grw2cfgdix1sr5a3fnwhhc93ci8qgbhgs5ilyayy2cb6s4c"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    0
+   ],
+   "commit": "f6c23e259349922aae25cf2898ba815a7d8f2527",
+   "sha256": "16cb8grw2cfgdix1sr5a3fnwhhc93ci8qgbhgs5ilyayy2cb6s4c"
+  }
+ },
+ {
+  "ename": "firestarter",
+  "commit": "20b2cc78b41a26e434b984943681fea774fd3c50",
+  "sha256": "1kaw710za76178ak35nlgr2pj1303z7fcas6474rr3nd82l8sypf",
+  "fetcher": "git",
+  "url": "https://depp.brause.cc/firestarter.git",
+  "unstable": {
+   "version": [
+    20200506,
+    1311
+   ],
+   "commit": "5b117bf8d290af5c104d88c413f40e84da0c4ce8",
+   "sha256": "13axz8c4v4x43x2ami78kwaj6cpmyqykapj94mqrr3b5qzms502b"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    5
+   ],
+   "commit": "4d6b106f325ac1802eabce3c8a7cd0a4c7a32864",
+   "sha256": "13daz15v0sshl7lxcg1xcbpl64gklgh50pzk0qxmn5ygw7nlifn0"
+  }
+ },
+ {
+  "ename": "firrtl-mode",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "19r7wbw9pr05p8fywcnbbpdpklic2vd2bsy80r7xrzgs4fcl12as",
+  "fetcher": "github",
+  "repo": "IBM/firrtl-mode",
+  "unstable": {
+   "version": [
+    20200329,
+    2002
+   ],
+   "commit": "fa40141411a876ce7a1a9d6d3fe47134bc1fa954",
+   "sha256": "1pj7b8ppkbjp8q5dzw5v086v8lp1gv1il6qc65l4nlm8p5iicvzq"
+  }
+ },
+ {
+  "ename": "fish-completion",
+  "commit": "6d17ca0213ba5ef9dce92002e281e6f08c3492be",
+  "sha256": "1y7vwh7w0shnrnp8x1m1sa0p7kdyz5mg1mfs263gm38in2biym9i",
+  "fetcher": "gitlab",
+  "repo": "Ambrevar/emacs-fish-completion",
+  "unstable": {
+   "version": [
+    20191103,
+    1210
+   ],
+   "commit": "10384881817b5ae38cf6197a077a663420090d2c",
+   "sha256": "17lqip1i1rrsvxzz4bx9rqf1fvwd3hriwg3sj6qxmfc8pylnp37q"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "commit": "10384881817b5ae38cf6197a077a663420090d2c",
+   "sha256": "17lqip1i1rrsvxzz4bx9rqf1fvwd3hriwg3sj6qxmfc8pylnp37q"
+  }
+ },
+ {
+  "ename": "fish-mode",
+  "commit": "efac97c0f54a3300251020c4626056526c18b441",
+  "sha256": "0l6k06bs0qdhj3h8vf5fv8c3rbhiqfwszrpb0v2cgnb6xhwzmq14",
+  "fetcher": "github",
+  "repo": "wwwjfy/emacs-fish",
+  "unstable": {
+   "version": [
+    20200213,
+    2137
+   ],
+   "commit": "db257db81058b0b12f788c324c264cc59b9a5bf4",
+   "sha256": "1f6viga13k90ws8v18az3vh3rdc5vd28xkpx9vfv3542bx1np1im"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    5
+   ],
+   "commit": "688c82decad108029b0434e3bce6c3d129ede6f3",
+   "sha256": "1s961nhwxpb9xyc26rxpn6hvwn63sng452l03mm2ply32b247f9p"
+  }
+ },
+ {
+  "ename": "fit-text-scale",
+  "commit": "5ccb1803a5783834685c4bdf40e6b1e876ea3ea4",
+  "sha256": "0w4wg7zl9082q558dyj1hk021ry1sig5w5abnn90plvjc65xs72q",
+  "fetcher": "gitlab",
+  "repo": "marcowahl/fit-text-scale",
+  "unstable": {
+   "version": [
+    20200315,
+    2120
+   ],
+   "commit": "387acab18f9f4064c051771cf666b8550718dc27",
+   "sha256": "0mrl112vjsl6ddjv0j2pg97s6zk8c2qb92wqsq775ahr1cbhvbw7"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    3
+   ],
+   "commit": "75f74aa14bb38ab00f184ae0a51262eaab07a27c",
+   "sha256": "1nc1p4qbpvnqq2vi7pck3zygahhippvy2xgqmha4lpq5f996lmyx"
+  }
+ },
+ {
+  "ename": "fix-input",
+  "commit": "7d31f907997d1d07ec794a4f09824f43818f035c",
+  "sha256": "03xpr7rlv0xq1d9126j1fk0c2j7ssf366n0yc8yzm9vq32n9pp4p",
+  "fetcher": "github",
+  "repo": "mrkkrp/fix-input",
+  "unstable": {
+   "version": [
+    20190713,
+    1349
+   ],
+   "commit": "d3e17161d137fb75baf1449741ccaadb949e127a",
+   "sha256": "18yk3vs4v7n8zmxv80ss7bd94zmr14nring0d5bavax65b4wqk59"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "a70edfa7880ff9b082f358607d2a9ad6a8dcc8f3",
+   "sha256": "121m0h0nwxr27f9d2llbgl63ni1makcg66lnvg24wx07wggf0n8z"
+  }
+ },
+ {
+  "ename": "fix-muscle-memory",
+  "commit": "c6b0501714a6d82657b88d11e3f79d75eea17d8e",
+  "sha256": "0qhasnjw0bj5hzw27r8vj6shhwc3zxcp3wmxijh1rpdw4773f7n8",
+  "fetcher": "github",
+  "repo": "jonnay/fix-muscle-memory",
+  "unstable": {
+   "version": [
+    20160823,
+    439
+   ],
+   "commit": "a123e04f8a1d2982cbf930efb909cad9522ac884",
+   "sha256": "0mm6dl7017x5l43jf89w4nn5hcyi4fm160d2rcqx5w6dwb6f0v27"
+  },
+  "stable": {
+   "version": [
+    0,
+    93
+   ],
+   "commit": "df687aea23c6eac4b751f993893c2fd56e5a8a3b",
+   "sha256": "02nl4vz6fnbjc7w1lk1y9z0qw5bsxr407ww0b2wqw6h8spmcpcrc"
+  }
+ },
+ {
+  "ename": "fix-word",
+  "commit": "22636390e8a15c09293a1506a901286dd72e565f",
+  "sha256": "0a8w09cx8p5pkkd4533nd199axkhdhs2a7blp7syfn40bkscx6xc",
+  "fetcher": "github",
+  "repo": "mrkkrp/fix-word",
+  "unstable": {
+   "version": [
+    20190713,
+    1338
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "8d023f13710a90ae4da644d5485bf2be2646b6a1",
+   "sha256": "0pb5sd5cpz4173xi9kzgl9jx69169aymk94kdr6xgzhqda7iwy7p"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b3b3a3c8e33e425f9a8d0ec653adb6897c8efc03",
+   "sha256": "1nw9ih0knaqaban5nqp3anvr37mivylqs8sc8l3v1i9srlqnsj1m"
+  }
+ },
+ {
+  "ename": "fixmee",
+  "commit": "f5d06db82e237e6c6babd92a1fd2b58c29662e4f",
+  "sha256": "0wnp6h8f547fsi1lkk4ajny7g21dnr76qfhxl82n0l5h1ps4w8mp",
+  "fetcher": "github",
+  "repo": "rolandwalker/fixmee",
+  "unstable": {
+   "version": [
+    20150223,
+    1355
+   ],
+   "deps": [
+    "back-button",
+    "button-lock",
+    "nav-flash",
+    "smartrep",
+    "string-utils",
+    "tabulated-list"
+   ],
+   "commit": "5cddb64e0d52635e9a1529d80cb5cefa6f829341",
+   "sha256": "0kl2b4j93kk9lzw0qclib55ghcwznag3p022jkr0bq5z30m2gdj4"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    6
+   ],
+   "deps": [
+    "back-button",
+    "button-lock",
+    "nav-flash",
+    "smartrep",
+    "string-utils",
+    "tabulated-list"
+   ],
+   "commit": "aa3be8ad9fcc9c0c7ff15f70cda4ba77de96dd74",
+   "sha256": "1hnxdmzqmnp3dr7mpr58pjmigykb3cxwphxzia013kfi37ipf5a0"
+  }
+ },
+ {
+  "ename": "flame",
+  "commit": "b7a14c14368de722855286c088020a5657f7cf8b",
+  "sha256": "1br9c48anscq9vbssr0gq8f5kbq755hjaglbljwwh9nd5riycv5v",
+  "fetcher": "github",
+  "repo": "mschuldt/flame",
+  "unstable": {
+   "version": [
+    20180303,
+    2016
+   ],
+   "commit": "a749b2a77b87e505572d0f1f5d59fac76348bb73",
+   "sha256": "1l9jbzavyi75li64jqfs000s1m8iw9xvsv8mg0bw1div6bc7vq7s"
+  }
+ },
+ {
+  "ename": "flames-of-freedom",
+  "commit": "71883f7c1e28695701244bab6368aa528ff339f3",
+  "sha256": "1xj4kznx94xxzvxgx74dqd4flljzacygfvp6xr1lsvvm9wvb4m9h",
+  "fetcher": "github",
+  "repo": "wiz21b/FlamesOfFreedom",
+  "unstable": {
+   "version": [
+    20191202,
+    1637
+   ],
+   "commit": "5e47ff27cfa2f7c06081be2ffefe91a731efd012",
+   "sha256": "1xgrd2ybf8g488fq698xv30bqzcv1swxqnds61slj99w6k2gm29i"
+  }
+ },
+ {
+  "ename": "flappymacs",
+  "commit": "a63b22f357b2d08b12fb86c27261ab4d687c5f7f",
+  "sha256": "1rp4r5ldhm8nrj26y1vm5d5fj3kl7v45cj1naxczrqbcgkd0r404",
+  "fetcher": "github",
+  "repo": "taksatou/flappymacs",
+  "unstable": {
+   "version": [
+    20171023,
+    1004
+   ],
+   "commit": "27f3e21acb22f786606481e3f4e5dc1edbaaaed4",
+   "sha256": "0zcwsbz93p1l2jb1fs6m4s5y9klcr5qg5nw10qg30j9l2bc1hda8"
+  }
+ },
+ {
+  "ename": "flash-region",
+  "commit": "bf26329a30ec6e39b052e5815d3f113c05e72f84",
+  "sha256": "1rgg7j34ka0nj1yjl688asim07bbz4aavh67kly6dzzwndr0nw8c",
+  "fetcher": "github",
+  "repo": "Fuco1/flash-region",
+  "unstable": {
+   "version": [
+    20130923,
+    1817
+   ],
+   "commit": "261b3597b23cdd40e5c14262a5687bcc6c1d0901",
+   "sha256": "0z77lm6jv2w5z551pwarcx6xg9kx8fgms9dlskngfvnzbqkldj1f"
+  }
+ },
+ {
+  "ename": "flatfluc-theme",
+  "commit": "de15ce71674965c5e0a8564ae2e640bc05dbd589",
+  "sha256": "0rpmiw71scdl3dgrvf2j9d909wmafyvlgraxfg5hsxngcyj5gjk0",
+  "fetcher": "github",
+  "repo": "seblemaguer/flatfluc-theme",
+  "unstable": {
+   "version": [
+    20200419,
+    1033
+   ],
+   "commit": "f81bb130be69e9f321e2085b627387074d23a253",
+   "sha256": "17z5bmcd2c4k26w9xd8npaqwk9wwr2nf0d6vikzj0mxg0pdlbaz2"
+  }
+ },
+ {
+  "ename": "flatland-black-theme",
+  "commit": "641d1959bd31598fcdacd39a3d1bb077dcccfa5c",
+  "sha256": "0cl2qbry56nb4prbsczffx8h35x91pgicw5pld0ndw3pxid9h2da",
+  "fetcher": "github",
+  "repo": "emacsfodder/emacs-flatland-black-theme",
+  "unstable": {
+   "version": [
+    20170808,
+    1312
+   ],
+   "commit": "348c5d5fe615e6ea13cadc17f046e506e789ce07",
+   "sha256": "1g5jqxdk35ahx8qk4vi7whhcpi1qp7rbbjgiih974fs59cg5iki0"
+  }
+ },
+ {
+  "ename": "flatland-theme",
+  "commit": "0a081fd0c5598fdf5bc0ab92f4d009f32132a29e",
+  "sha256": "14drqwcp9nv269aqm34d426a7gx1a7kr9ygnqa2c8ia1fsizybl3",
+  "fetcher": "github",
+  "repo": "gchp/flatland-emacs",
+  "unstable": {
+   "version": [
+    20171113,
+    1521
+   ],
+   "commit": "a98a6f19ad4dff0fa3fad1ea487b7d0ef634a19a",
+   "sha256": "02gbzxd1v003aaj5rn3vr00n4390bhdx2jhpa7nb430fg3s1ppdy"
+  }
+ },
+ {
+  "ename": "flatui-dark-theme",
+  "commit": "5f9dc5abeb37422c63cac74f9a006d54c4a7c5a5",
+  "sha256": "1mswmkhi43fm0cmdgf0ywpy9lmapy0syl65kqh68sa3jqbznhm6y",
+  "fetcher": "github",
+  "repo": "theasp/flatui-dark-theme",
+  "unstable": {
+   "version": [
+    20170513,
+    1422
+   ],
+   "commit": "5b959a9f743f891e4660b1b432086417947872ea",
+   "sha256": "0nz4ql7qf49cwsgjb7dg0jhipr5d472r4fddy6fhr1h17s1cd9qy"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "commit": "af5c84e2a2810748cc71a68ec7ba333097cc1f63",
+   "sha256": "0c0pm67d8w9jdraap0sswvx7ywly9ifimij2c5w9p4hiph8gisr9"
+  }
+ },
+ {
+  "ename": "flatui-theme",
+  "commit": "96dc9a8b1f6e5cdd46fc94fc2979f2a1787f4d21",
+  "sha256": "0s88xihw44ks4b07wcb9swr52f3l1ls0jn629mxvfkv4a6hn7rmz",
+  "fetcher": "github",
+  "repo": "john2x/flatui-theme.el",
+  "unstable": {
+   "version": [
+    20160619,
+    127
+   ],
+   "commit": "9c15db5526c15c8dba55023f5698372b19c2a780",
+   "sha256": "0ybgpnbq3b0ml3lzgkispn667acpjww7z6cr7hgwg3j1zrqpwi75"
+  }
+ },
+ {
+  "ename": "flex-autopair",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0w3l236psqxl7wqdi2aisz8wcv279kw6gdja72viiscrbcm78xh0",
+  "fetcher": "github",
+  "repo": "uk-ar/flex-autopair",
+  "unstable": {
+   "version": [
+    20120809,
+    1218
+   ],
+   "commit": "4bb757f2556a4a51828e2fed8fb81e31e83052cb",
+   "sha256": "187ah7yhmr3ckw23bf4fivx8v79yj0zmilrkjj7k6l198w8wmvql"
+  }
+ },
+ {
+  "ename": "flex-compile",
+  "commit": "259caeebc317e81ab9d532a371ea85656c2b1619",
+  "sha256": "1hlh4k7qgln87xajnjjhf1yyg6bgdwd0iczhlfw8gdwfj5xpjd38",
+  "fetcher": "github",
+  "repo": "plandes/flex-compile",
+  "unstable": {
+   "version": [
+    20200506,
+    1309
+   ],
+   "deps": [
+    "buffer-manage",
+    "dash"
+   ],
+   "commit": "dc6d920b477fe96a71bc37d593beef5ae8b2ae7e",
+   "sha256": "1vcpb0bnklq89vgynnpfs4dmjacaajrzkasgwzix7q4qfzcbid9n"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "deps": [
+    "buffer-manage",
+    "dash"
+   ],
+   "commit": "29caf6573eb9bb730a851dec2a234a7cfe912a13",
+   "sha256": "17s1v4xwgq98jfa3i57dbmy9ls29xsdhp5ng7bz46dhgmkrksbj5"
+  }
+ },
+ {
+  "ename": "flex-isearch",
+  "commit": "caca0b2bc2aaac563074cbb4ea4296fce749e203",
+  "sha256": "0y5j90y4ssw3kwqhji9h4icy8xj2pa5fjvkbkl4x7rxs8kwwm989",
+  "fetcher": "github",
+  "repo": "jpkotta/flex-isearch",
+  "unstable": {
+   "version": [
+    20170308,
+    2010
+   ],
+   "commit": "b1f7e04de762282c276343cc2709af9ff4abc9d2",
+   "sha256": "0xbwrzkfv4i91qxs80p0pfjlvj5pyigvidby8m5lammm8idwx9dh"
+  }
+ },
+ {
+  "ename": "flim",
+  "commit": "94faf56ff9bf94f51ef5253e4c4244faec5eecfd",
+  "sha256": "1gkaq549svflx8qyqrk0ccb52b7wp17wmd5jgzkw1109bpc4k6jc",
+  "fetcher": "github",
+  "repo": "wanderlust/flim",
+  "unstable": {
+   "version": [
+    20200303,
+    319
+   ],
+   "deps": [
+    "apel"
+   ],
+   "commit": "f303f2f6c124bc8635add96d3326a2209749437b",
+   "sha256": "08gxrpzxxfgbxznvpj00bjvh8l7afg2h2vaj6iasis9724f3mgl6"
+  }
+ },
+ {
+  "ename": "flimenu",
+  "commit": "0ffc67a266de3d58553b27325b7fc6937df425be",
+  "sha256": "1xr28kprkq9xwy2f7b3wnjr25a8avm2lfcyi8853jygkm2vmnsx1",
+  "fetcher": "github",
+  "repo": "IvanMalison/flimenu",
+  "unstable": {
+   "version": [
+    20200415,
+    2353
+   ],
+   "commit": "f110bc77415a7594742f3b12551571c4069c9157",
+   "sha256": "1y832w4n10k9lfi90lhq8l9s56zcg24j9j8jklkzby1vf34vq0ql"
+  }
+ },
+ {
+  "ename": "fliptext",
+  "commit": "e36776cbed8eab151f69d0edd5217a7bba7c2451",
+  "sha256": "1wbrvqrvrpk2lx7b6y30rrshr7a25b2191bnx4v8lm3cv16gv8p7",
+  "fetcher": "github",
+  "repo": "andre-r/fliptext.el",
+  "unstable": {
+   "version": [
+    20171124,
+    2056
+   ],
+   "commit": "fd821f645ffebae6ae3894afa7ba7fc06f91afc6",
+   "sha256": "1jf63kp1myxihv6r13cddxgr8cchxcnnmylj5dx50y42595ia4yh"
+  }
+ },
+ {
+  "ename": "floobits",
+  "commit": "95c859e8440049579630b4c2bcc31e7eaa13b1f1",
+  "sha256": "1jpk0q4mkf9ag1rqyai993nz5ngzfvxq9n9avmaaq59gkk9cjraf",
+  "fetcher": "github",
+  "repo": "Floobits/floobits-emacs",
+  "unstable": {
+   "version": [
+    20180801,
+    524
+   ],
+   "deps": [
+    "highlight",
+    "json"
+   ],
+   "commit": "489b294a7f30ecd2af2edc0823dead8102f27af6",
+   "sha256": "1pw88qn6s8ln626c8mgxgpfax39h7ww4m930dp7gg4aklxjbspkn"
+  },
+  "stable": {
+   "version": [
+    1,
+    9,
+    3
+   ],
+   "deps": [
+    "highlight",
+    "json"
+   ],
+   "commit": "489b294a7f30ecd2af2edc0823dead8102f27af6",
+   "sha256": "1pw88qn6s8ln626c8mgxgpfax39h7ww4m930dp7gg4aklxjbspkn"
+  }
+ },
+ {
+  "ename": "flow-js2-mode",
+  "commit": "3487c252f013f6937c6731b57f2a9c1e5227a81d",
+  "sha256": "05wx7z5f4mkiab8ahhhr3fi6awmsdl253fwapad5ag3kaimnmxv7",
+  "fetcher": "github",
+  "repo": "Fuco1/flow-js2-mode",
+  "unstable": {
+   "version": [
+    20191213,
+    1004
+   ],
+   "deps": [
+    "flow-minor-mode",
+    "js2-mode"
+   ],
+   "commit": "7520bdda70287e8d57b3f41033b1e0ca59a3be95",
+   "sha256": "1d0g5v3nwy2wyjgh1f1s27bb8nxcfhq6yq3d7scgbnd6v6anyxxv"
+  }
+ },
+ {
+  "ename": "flow-minor-mode",
+  "commit": "66504f789069922ea56f268f4da90fac52b601ff",
+  "sha256": "190dv225sb37jawzrasd7qkbznrmkrdnb90l44il63vrlmjv3r1s",
+  "fetcher": "github",
+  "repo": "an-sh/flow-minor-mode",
+  "unstable": {
+   "version": [
+    20191214,
+    1309
+   ],
+   "commit": "5db3936d9eba8ccb2beca476afc84675b7b161ca",
+   "sha256": "1rnihrhkr1xpwsl6c4cgg75slsqs31bckrlkgw1252ihpl9laa6p"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "50dded94ad201fdc9453656a8b15179981cd5acd",
+   "sha256": "1vaqml0ypbc14mnwycgm9slkds3bgg6x5qz99kck98acbcfijxk6"
+  }
+ },
+ {
+  "ename": "flower",
+  "commit": "c8a731715d360aea9af2b898242fd4eee5419d14",
+  "sha256": "1cb9ppgspdrg4yrrlq4sfajpa6s7xiwvdf9b3947rmmxizgqgynd",
+  "fetcher": "github",
+  "repo": "PositiveTechnologies/flower",
+  "unstable": {
+   "version": [
+    20190215,
+    1746
+   ],
+   "deps": [
+    "clomacs"
+   ],
+   "commit": "6ef1affa2d7090714ccc4494823de28cfc11da35",
+   "sha256": "1dp3g52j1i49bv802g27b7yszpxz0i28i4j74qp39qlld3k0gys0"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    6
+   ],
+   "deps": [
+    "clomacs"
+   ],
+   "commit": "6ef1affa2d7090714ccc4494823de28cfc11da35",
+   "sha256": "1dp3g52j1i49bv802g27b7yszpxz0i28i4j74qp39qlld3k0gys0"
+  }
+ },
+ {
+  "ename": "flucui-themes",
+  "commit": "77d06aa7405f0badf5ab425ddeeb7a754c17d2af",
+  "sha256": "0ki2vxjhccyi6w2y9qj6xbfqgvjd91wqkzn6qq8ig6ggqir7wc6a",
+  "fetcher": "github",
+  "repo": "MetroWind/flucui-theme",
+  "unstable": {
+   "version": [
+    20200204,
+    1930
+   ],
+   "commit": "01a3df3530474da7b4303e4eea2ed1fae00d1776",
+   "sha256": "1bfnpligs32mpizrz9fb1pyp1zxq2rmympcg9pqrgpkdlxvs6xrf"
+  }
+ },
+ {
+  "ename": "flutter",
+  "commit": "edfe2d6078e8e6231feb614f28a248f3a7b3d94c",
+  "sha256": "0dabx2jsdvbzic282b8q3m9nb44f4lcdyqj5011y2yk97gsg7vf7",
+  "fetcher": "github",
+  "repo": "amake/flutter.el",
+  "unstable": {
+   "version": [
+    20200508,
+    1252
+   ],
+   "commit": "8818bc07727fe748edf4aea629b510b7ada680b3",
+   "sha256": "05pl4w3zmfg24fk1pj053r0f8sx3m1zacfymvpya022y1ggpvnh6"
+  }
+ },
+ {
+  "ename": "flutter-l10n-flycheck",
+  "commit": "6714760b205a2da8727229a4f8d4b656877890cb",
+  "sha256": "13symbzw16h0sl0j6q4n47vwgaifbmj9572n2ihfz0ml5iww1vyy",
+  "fetcher": "github",
+  "repo": "amake/flutter.el",
+  "unstable": {
+   "version": [
+    20200221,
+    1415
+   ],
+   "deps": [
+    "flutter",
+    "flycheck"
+   ],
+   "commit": "8818bc07727fe748edf4aea629b510b7ada680b3",
+   "sha256": "05pl4w3zmfg24fk1pj053r0f8sx3m1zacfymvpya022y1ggpvnh6"
+  }
+ },
+ {
+  "ename": "fluxus-mode",
+  "commit": "a3396e0da67153ad051b8551bf34630d32f974f4",
+  "sha256": "1xn2aw9gxwkmr1miam63lrdx6n0qxsgph3rlaqy9cbs0vkb254an",
+  "fetcher": "github",
+  "repo": "defaultxr/fluxus-mode",
+  "unstable": {
+   "version": [
+    20191001,
+    1716
+   ],
+   "deps": [
+    "osc"
+   ],
+   "commit": "3d05fa15f141ac3e936f908097bb7eb6295cc367",
+   "sha256": "0axjlvhv3xwg16zkpskqp9kvb1x513jl329pmrjzazn5mdh2m8cw"
+  }
+ },
+ {
+  "ename": "flx",
+  "commit": "63bdf3ae2f861e333a8f9c5997f5cc52869d3b3a",
+  "sha256": "04plfhrnw7jx2jaxhbhw4ypydfcb8v0x2m5hyacvrli1mca2iyf9",
+  "fetcher": "github",
+  "repo": "lewang/flx",
+  "unstable": {
+   "version": [
+    20191115,
+    659
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "17f5c9cb2af18aa6f52910ff4a5a63591261ced5",
+   "sha256": "1zny29byq08vic9pzxfkchdary7dsk9ygc1lcb8drai4kd9g5jk8"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "7fce6a4cdb65ac1b52e2b409ba548767581ce34c",
+   "sha256": "0sjybrcnb2sl33swy3q664vqrparajcl0m455gciiih2j87hwadc"
+  }
+ },
+ {
+  "ename": "flx-ido",
+  "commit": "63bdf3ae2f861e333a8f9c5997f5cc52869d3b3a",
+  "sha256": "00wcwbvfjbcx8kyap7rl1b6nsgqdwjzlpv6al2cdpdd19rm1vgdc",
+  "fetcher": "github",
+  "repo": "lewang/flx",
+  "unstable": {
+   "version": [
+    20180117,
+    1519
+   ],
+   "deps": [
+    "cl-lib",
+    "flx"
+   ],
+   "commit": "17f5c9cb2af18aa6f52910ff4a5a63591261ced5",
+   "sha256": "1zny29byq08vic9pzxfkchdary7dsk9ygc1lcb8drai4kd9g5jk8"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "flx"
+   ],
+   "commit": "7fce6a4cdb65ac1b52e2b409ba548767581ce34c",
+   "sha256": "0sjybrcnb2sl33swy3q664vqrparajcl0m455gciiih2j87hwadc"
+  }
+ },
+ {
+  "ename": "flx-isearch",
+  "commit": "2cd1438cc0821b8ae1d01e2a3bc8f07ca8a79134",
+  "sha256": "14cshv5xb57ch5g3m3hfhawnnabdnbacp4kx40d0pw6jxw677gqd",
+  "fetcher": "github",
+  "repo": "PythonNut/flx-isearch",
+  "unstable": {
+   "version": [
+    20191119,
+    515
+   ],
+   "deps": [
+    "cl-lib",
+    "flx"
+   ],
+   "commit": "a44097fb8f539a193c2f09a37ea52a68f2c51839",
+   "sha256": "051cpdggssmbz2zhr26q2831a8g2n66r5f1aqbvczg3kfw1axpkq"
+  }
+ },
+ {
+  "ename": "flycheck",
+  "commit": "649f9c3576e81409ae396606798035173cc6669f",
+  "sha256": "045k214dq8bmrai13da6gwdz97a2i998gggxqswqs4g52l1h6hvr",
+  "fetcher": "github",
+  "repo": "flycheck/flycheck",
+  "unstable": {
+   "version": [
+    20200516,
+    1719
+   ],
+   "deps": [
+    "dash",
+    "let-alist",
+    "pkg-info",
+    "seq"
+   ],
+   "commit": "309d37286729994094b931344c9a664dd7c6c08d",
+   "sha256": "1gsa4lik5f0dzn897lh369nmcn7n61if80ll5jc5qiymm1fx16cr"
+  },
+  "stable": {
+   "version": [
+    31
+   ],
+   "deps": [
+    "dash",
+    "let-alist",
+    "pkg-info",
+    "seq"
+   ],
+   "commit": "401b115d10e202a1b31f57340438420081af21ce",
+   "sha256": "141i6wzqlb0dslmca6930cal7q4y5wbwzmxrpjk3hgm6nxz483p8"
+  }
+ },
+ {
+  "ename": "flycheck-ameba",
+  "commit": "043b5acb0552272c523d642fd9f9dca438087068",
+  "sha256": "0ix0rfsasnifn1l1m31242fyyg7ms251hd3k0mj1mgwrsjibyq3c",
+  "fetcher": "github",
+  "repo": "crystal-ameba/ameba.el",
+  "unstable": {
+   "version": [
+    20191226,
+    1011
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "0c4925ae0e998818326adcb47ed27ddf9761c7dc",
+   "sha256": "0jh0pfyqdks9xk43765vgm4569a8ny01pk3gy2p3vr5gdgfdm4a3"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "ca5faaa0d5115dc2c301e06e062e653a7b9cb927",
+   "sha256": "07207h1643amlairnmpf8lnnkgf69kc04z3ri9k6fm4gmh6c9dy0"
+  }
+ },
+ {
+  "ename": "flycheck-apertium",
+  "commit": "7f6cec0d312f0e86e17829e6fd8f87acabc0174f",
+  "sha256": "1cc15sljqs6gvb3wiw7n1wkd714qkvfpw6l1kg4lfx9r4jalcvw7",
+  "fetcher": "github",
+  "repo": "unhammer/flycheck-apertium",
+  "unstable": {
+   "version": [
+    20181211,
+    1038
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "22b60a17836477ac1edd15dc85b14f88ca871ba9",
+   "sha256": "0313h4yh85xndzvy3yzznar79ys0ng3rdsz0xa237xqsf71ypg4z"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "e146ab1b929c50450ba0708e1bdd9fed85606964",
+   "sha256": "1g1m7pm84mkmjx7hdspb5k6n8aqphphxb5gya725qy1wqi950jqz"
+  }
+ },
+ {
+  "ename": "flycheck-ats2",
+  "commit": "2d3605bdc402e6b13f53910eafb7f1428a5f749f",
+  "sha256": "0xm7zzz6hs5qnqkmv7hwxpvp3jjca57agx71sj0m12v0h53gbzhr",
+  "fetcher": "github",
+  "repo": "drvink/flycheck-ats2",
+  "unstable": {
+   "version": [
+    20170225,
+    1636
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "9f77add8408462af35bdddf87e37a661880255e3",
+   "sha256": "1fv3r49i8dgszaq5rs8dwnwcj6rgx922ww01ikrq3b4c9y17srpz"
+  }
+ },
+ {
+  "ename": "flycheck-bashate",
+  "commit": "54fd062e4ad012d846260c96801d3415756ce981",
+  "sha256": "1c8hf4893zb74g61afr02wqhmdaswxr3nwsnzzwmb8nrrygvfa8j",
+  "fetcher": "github",
+  "repo": "alexmurray/flycheck-bashate",
+  "unstable": {
+   "version": [
+    20160630,
+    440
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "77fa03dbc578c34fe71ca44926bac2aff8f2b021",
+   "sha256": "1jcay4gncpr0fap6qlm6k4r5b94s18zj8j56w462hvxydaxxiql6"
+  }
+ },
+ {
+  "ename": "flycheck-cask",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0d2m7mg91k1nazysayryxagql1vi975n7iv0snknhbw4wisqp82f",
+  "fetcher": "github",
+  "repo": "flycheck/flycheck-cask",
+  "unstable": {
+   "version": [
+    20191030,
+    2253
+   ],
+   "deps": [
+    "dash",
+    "flycheck"
+   ],
+   "commit": "3457ae553c4feaf8168008f063d78fdde8fb5f94",
+   "sha256": "0fw5ikifp0n8jjkcg328hg1sklsgd7b8bsd538dvymk6qhx223zc"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "dash",
+    "flycheck"
+   ],
+   "commit": "b4667500dcf52f96ec7e0fa10dd07edf191cbf5b",
+   "sha256": "1wm5saf29gw0gp0qq5glf9qq3iras99npc2rip7bsnn0czr2mscy"
+  }
+ },
+ {
+  "ename": "flycheck-checkbashisms",
+  "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228",
+  "sha256": "1gjfv3zkgc07wgrxia509pdl2z23a29m5x1p0w8bdjrp5zc4j7pw",
+  "fetcher": "github",
+  "repo": "cuonglm/flycheck-checkbashisms",
+  "unstable": {
+   "version": [
+    20190403,
+    218
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "2e386775f1a0eb5d80e5d70e98474ee32ecafb24",
+   "sha256": "1ai4p0s6wh4sp972fxkjlc4mn6ai1zc27zh4vm63rfrayri1g31z"
+  },
+  "stable": {
+   "version": [
+    1,
+    5
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "39362240b8e38e6ddc1da2e2c2229e3fecdf6057",
+   "sha256": "1s2zq97d7ryif6rlbvriz36dh23wmwi67v4q6krl77dfzcs705b3"
+  }
+ },
+ {
+  "ename": "flycheck-checkpatch",
+  "commit": "193aaae5640434559cd479df1463ee44eab14d86",
+  "sha256": "1apjn26n663rjddv5iagfs65fdf22049ykmzggybbnprvnmasf55",
+  "fetcher": "github",
+  "repo": "zpp0/flycheck-checkpatch",
+  "unstable": {
+   "version": [
+    20170217,
+    1025
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "6461fc7b0d493eb9863814055f8bce5fa35739de",
+   "sha256": "1651xmw01n5h7x81y3cvsamdmb67jcf385ax52dkp8miyq1a090r"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "aca98ea79f8b26a95f9dbdd4142b01fdd2def866",
+   "sha256": "0bs36dp1jy2z9zfq4mnrin9ik0ffl7023h6dx3qbfya1gcxs07py"
+  }
+ },
+ {
+  "ename": "flycheck-clang-analyzer",
+  "commit": "8de7b717a1b0caf30f8f29d3e764b4756b93aeff",
+  "sha256": "0wby4vilvcmmncr6l6abh3v4wznx9m0zbk30vllj8bq98awfcy3a",
+  "fetcher": "github",
+  "repo": "alexmurray/flycheck-clang-analyzer",
+  "unstable": {
+   "version": [
+    20200429,
+    238
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "0c9b6e4626cd5376037464f8d6b8c64aa32768ee",
+   "sha256": "0nr3wipmcalxfp48hi23vmrj2rwbwk6gipdqmic8ay4z9x2csi8v"
+  }
+ },
+ {
+  "ename": "flycheck-clang-tidy",
+  "commit": "a289ac549a7735a12eec85521c32f915b9194b85",
+  "sha256": "0lhf5byydmd380y7qx5x34r0sq7gzrj286pcaxhl388p6j58cb4p",
+  "fetcher": "github",
+  "repo": "ch1bo/flycheck-clang-tidy",
+  "unstable": {
+   "version": [
+    20191030,
+    814
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "2ae5542960785604a2974548f89e10407e2ccfc1",
+   "sha256": "0gpvavwmb4zp5c5b8z60jcsza0zsb29hsg4sapp9d35hk3ranbx5"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "2f89698ab0d78818875d5ef08d0b470a9ffc402f",
+   "sha256": "1l4jla3vlyx37nz9hjaihy9pi3ywbrg3512k2zp9cdis7130mvrb"
+  }
+ },
+ {
+  "ename": "flycheck-clangcheck",
+  "commit": "b42dd133e4fd5579dd1c6cdcbf733571bc890899",
+  "sha256": "1316cj3ynl80j39ha0371ss7cqw5hcr3m8944pdacdzbmp2sak2m",
+  "fetcher": "github",
+  "repo": "kumar8600/flycheck-clangcheck",
+  "unstable": {
+   "version": [
+    20150712,
+    710
+   ],
+   "deps": [
+    "cl-lib",
+    "flycheck",
+    "seq"
+   ],
+   "commit": "24a9424c484420073a24443a829fd5779752362b",
+   "sha256": "1ckzs32wzqpnw89rrw3l7i4gbyn25wagbadsc4mcrixml5nf0mck"
+  }
+ },
+ {
+  "ename": "flycheck-clj-kondo",
+  "commit": "20dca546bbad0fa7b713dc015d1b9a9b7caf5370",
+  "sha256": "0a61jq6g0arrsa97rl3frns8k9l9qxazb96ir99y9kskim4njl6r",
+  "fetcher": "github",
+  "repo": "borkdude/flycheck-clj-kondo",
+  "unstable": {
+   "version": [
+    20200414,
+    1444
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "5472c26ffdf754a0661357564874ffd4f8598805",
+   "sha256": "0nb88mil1nlhv0nalswl3xwndzz91yah52zpri2jfbyvivshpfm4"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "353e3481a20fbd577ad79db8bbc6113ce179c195",
+   "sha256": "1xgvz2mdacyr7jszrpxs9lm30y0p72ahin98lr385gvsa8gknmhm"
+  }
+ },
+ {
+  "ename": "flycheck-clojure",
+  "commit": "c9c642a234f93ed4cf5edcf27a552a8916984946",
+  "sha256": "1b20gcs6fvq9pm4nl2qwsf34sg6wxngdql921q2pyh5n1xsxhm28",
+  "fetcher": "github",
+  "repo": "clojure-emacs/squiggly-clojure",
+  "unstable": {
+   "version": [
+    20191215,
+    2227
+   ],
+   "deps": [
+    "cider",
+    "flycheck",
+    "let-alist"
+   ],
+   "commit": "592c4f89efb5112784cbf94c9ea6fdd045771b62",
+   "sha256": "0yyy1c385jn0m6ql7vf9za4waqznr4mvv7fd234ygcbvhqn4pfdz"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    5
+   ],
+   "deps": [
+    "cider",
+    "flycheck",
+    "let-alist"
+   ],
+   "commit": "fc0f1473c85b5287c8a62c1eee86894c98fbb84c",
+   "sha256": "0dqnv7l82h09janakq2b3ncz3jj99418pb91w0gabvfylww3pm21"
+  }
+ },
+ {
+  "ename": "flycheck-clolyze",
+  "commit": "69fb1a2c590eb1a9a7cae09a7080b24185e49c74",
+  "sha256": "1181g7ni0xihq0mbk6g6h7wh31hrg9q2xxsyrg6gb1zf4qqp2zyv",
+  "fetcher": "github",
+  "repo": "DLaps/flycheck-clolyze",
+  "unstable": {
+   "version": [
+    20190422,
+    2134
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "c8b27602dd505aeae6486feb6f584754079baf51",
+   "sha256": "163qlcjwzg8yg7ygg8h99484basz76fsqwdgv8s7v7kyfsclbjq8"
+  }
+ },
+ {
+  "ename": "flycheck-color-mode-line",
+  "commit": "02b5b60b74581ff0d1815155223e0c6e94a851a1",
+  "sha256": "0hw19nsh5h2l8qbp7brqmml2fhs8a0x850vlvq3qfd7z248gvhrq",
+  "fetcher": "github",
+  "repo": "flycheck/flycheck-color-mode-line",
+  "unstable": {
+   "version": [
+    20171122,
+    707
+   ],
+   "deps": [
+    "dash",
+    "flycheck"
+   ],
+   "commit": "cc474804d4e8088a627485faaf4217a5781aec7d",
+   "sha256": "0lk8p0wb7g9lvxjv9rl59hd9f0m0ksw9rgspis8qshpz8pj5785f"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "dash",
+    "flycheck"
+   ],
+   "commit": "c85319f8d2579e770c9060bfef11bedc1370d8be",
+   "sha256": "11xc08xld758xx9myqjsiqz8vk3gh4d9c4yswswvky6mrx34c0y5"
+  }
+ },
+ {
+  "ename": "flycheck-coverity",
+  "commit": "55e8df91adbcf8b059096e02aba2781424250381",
+  "sha256": "1knd1sqgjkgb5zs8hgsi6lyvkqmrcrdjgx81f26nhg40qv5m2p5l",
+  "fetcher": "github",
+  "repo": "alexmurray/flycheck-coverity",
+  "unstable": {
+   "version": [
+    20170704,
+    59
+   ],
+   "deps": [
+    "dash",
+    "flycheck"
+   ],
+   "commit": "cb211e3dd50413a5042eb20175be518214591c9d",
+   "sha256": "17c5lppa5axw6wga3k8zqmn5f2syadlqbavrqgsi8k8nlcckxy1x"
+  }
+ },
+ {
+  "ename": "flycheck-credo",
+  "commit": "88dfffe034135cc46d661f8173e8b14e0fb7f240",
+  "sha256": "0xmnbib7lx6v10pd3pkr69c4jb4sn3nmjk16qzvscwjgf2dypyax",
+  "fetcher": "github",
+  "repo": "aaronjensen/flycheck-credo",
+  "unstable": {
+   "version": [
+    20170526,
+    1545
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "e88f11ead53805c361ec7706e44c3dfee1daa19f",
+   "sha256": "04i7fbqpkjpsfa8vjpkdhg1sj5isczxwncdp4vr9x3vll3svblm7"
+  }
+ },
+ {
+  "ename": "flycheck-crystal",
+  "commit": "c718f809af30226611358f9aaed7519e52923fd3",
+  "sha256": "04avxav2rayprm09xkphs1ni10j1kk10j7m77afcac0gnma5rwyn",
+  "fetcher": "github",
+  "repo": "crystal-lang-tools/emacs-crystal-mode",
+  "unstable": {
+   "version": [
+    20180627,
+    242
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "2428b016243e78a0312cf6b3ba6939e7169a1405",
+   "sha256": "0al65ldsbmm15h4y79i8avk63qq1y7fqzzad8p327z6d42zfm1qj"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "0fe6815201bebe4c5ff6857bd541d95b05132b10",
+   "sha256": "0r75dvc0jqcqi1qjns8zj132dnm0s6mvqlqynkis16nigbawix8m"
+  }
+ },
+ {
+  "ename": "flycheck-css-colorguard",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "16qgn12jdps61mlbvhji5l8qrqigv382wyiv79rj2bwvdzbl653f",
+  "fetcher": "github",
+  "repo": "Simplify/flycheck-css-colorguard",
+  "unstable": {
+   "version": [
+    20161031,
+    1122
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "ae94fa0396acd99f9ec36d9572459df793f37fe8",
+   "sha256": "1vy5yjf98b7dk9lniz3rgk33agg8f1x8488lvm28ljdq3jfdgcfw"
+  }
+ },
+ {
+  "ename": "flycheck-cstyle",
+  "commit": "5970f4f0967dc3a10dc9554a8f5f06b703872878",
+  "sha256": "0p3lzpcgwk4nkq1w0iq40njz8ll2h3vi9z5fbvv1ar4r80fqd909",
+  "fetcher": "github",
+  "repo": "alexmurray/flycheck-cstyle",
+  "unstable": {
+   "version": [
+    20160905,
+    2341
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "207285140a353d08cf1fc450cacab158bc98ba82",
+   "sha256": "19wwv4r3nh79bdfcqp55qmknl0gwicy7dcaz28hm3sswbjpfv3rw"
+  }
+ },
+ {
+  "ename": "flycheck-cython",
+  "commit": "2d963eb1b8f8f863b37a96803b00d395e9d85e94",
+  "sha256": "1mbrwhpbs8in11mp79cnl4bd3m33qdgrvnbvi1mqvrsvz1ay28g4",
+  "fetcher": "github",
+  "repo": "lbolla/emacs-flycheck-cython",
+  "unstable": {
+   "version": [
+    20170724,
+    958
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "ecc4454d35ab5317ab66a04406f36f0c1dbc0b76",
+   "sha256": "1v17skw0wn7a7nkc1vrs0bbzihnjw0dwvyyd0lydsihzxl5z2r5g"
+  }
+ },
+ {
+  "ename": "flycheck-d-unittest",
+  "commit": "b86c666ee9b0620390a250dddd42b17cbec2409f",
+  "sha256": "0n4m4f0zqcx966582af1nqff5sla7jcr0wrmgzzxnn97yjrlnzk2",
+  "fetcher": "github",
+  "repo": "flycheck/flycheck-d-unittest",
+  "unstable": {
+   "version": [
+    20160522,
+    417
+   ],
+   "deps": [
+    "dash",
+    "flycheck"
+   ],
+   "commit": "3e614f23cb4a5566fd7988dbcaaf254af81c7718",
+   "sha256": "0lrxyrvdkj88qh78jmamrnji770vjsr6h01agl7hvd4n2xvlxcym"
+  }
+ },
+ {
+  "ename": "flycheck-dedukti",
+  "commit": "732832e88a65a8866fa3872ff5f29eb8a26438f2",
+  "sha256": "00nc18w4nsi6vicpbqqpr4xcdh48g95vnay3kirb2xp5hc2rw3x8",
+  "fetcher": "github",
+  "repo": "rafoo/flycheck-dedukti",
+  "unstable": {
+   "version": [
+    20171103,
+    1212
+   ],
+   "deps": [
+    "dedukti-mode",
+    "flycheck"
+   ],
+   "commit": "3dbff5646355f39d57a3ec514f560a6b0082a1cd",
+   "sha256": "1ffpxnwl3wx244n44mbw81g00nhnykd0lnid29f4aw1av7w6nw8l"
+  }
+ },
+ {
+  "ename": "flycheck-demjsonlint",
+  "commit": "9a15a17a5aa78aed72958b2a1bde53f0c0ab5be7",
+  "sha256": "0bcfkc9fch1h6gva64j71kb9l8fc9rz6wk0s9w1c1chx1z4nlill",
+  "fetcher": "github",
+  "repo": "uqix/flycheck-demjsonlint",
+  "unstable": {
+   "version": [
+    20161115,
+    718
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "a3dfe1df8ecdea76c076c0849901427567356228",
+   "sha256": "0zra3rl0kn70kn30wx1lqh9218k06mq3j8jadax61nnynw7bzsa5"
+  }
+ },
+ {
+  "ename": "flycheck-dialyxir",
+  "commit": "fa49551b8f726c235e03ea377bb09a8be37b9f32",
+  "sha256": "0pacxidpgwp7wij17c5r0fm5w3nga3lp4mcim365k3y5r4ralc0c",
+  "fetcher": "github",
+  "repo": "aaronjensen/flycheck-dialyxir",
+  "unstable": {
+   "version": [
+    20170515,
+    1525
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "adfb73374cb2bee75724822972f405f2ec371199",
+   "sha256": "1kzvq99f052mdj4ml1m6nvxhv0kqqblmpdgnwcm89krf0qfl4gjg"
+  }
+ },
+ {
+  "ename": "flycheck-dialyzer",
+  "commit": "bc84fb9fabfac4c008fe0eecb0b59933bfbf95c6",
+  "sha256": "0bn81yzijmnfg5xcnvcvxvqxz995iaafhgbfckgcal974s229kd2",
+  "fetcher": "github",
+  "repo": "lbolla/emacs-flycheck-dialyzer",
+  "unstable": {
+   "version": [
+    20160326,
+    1430
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "a5df0db95ac69f397b5f85d325a6d88cf8974f64",
+   "sha256": "1i5wm2r6rck6864a60mm6kv31vgvqnq49hi9apvhyywfn6sycwkf"
+  }
+ },
+ {
+  "ename": "flycheck-dmd-dub",
+  "commit": "a812594901c1099283bdf51fbea1aa077cfc588d",
+  "sha256": "0pg3sf7h6xqv65yqclhlb7fx1mp2w0m3qk4vji6m438kxy6fhzqm",
+  "fetcher": "github",
+  "repo": "atilaneves/flycheck-dmd-dub",
+  "unstable": {
+   "version": [
+    20180625,
+    1635
+   ],
+   "deps": [
+    "f",
+    "flycheck"
+   ],
+   "commit": "d7df2895d7d27cc39916816e3c32a60ce0e1d2d9",
+   "sha256": "11p1r8gfii7mbh65nrm5hzrz50bmfgx5c4a0zmy6wr219syiggnl"
+  },
+  "stable": {
+   "version": [
+    0,
+    12
+   ],
+   "deps": [
+    "f",
+    "flycheck"
+   ],
+   "commit": "41a839e18eb7159175c59a2f8b2f5f283191e33f",
+   "sha256": "0a78np6nb9ciz440n9ks6kybwggkq99knzv7swbmvngvhg96khbx"
+  }
+ },
+ {
+  "ename": "flycheck-dogma",
+  "commit": "1dd7601c55206fd0b9b59f98e861c52b9d640278",
+  "sha256": "0mpmmz0ssdd3a4fnqzy5kf9r3ddcs9kcl0chhilkw5k8480j3dcy",
+  "fetcher": "github",
+  "repo": "aaronjensen/flycheck-dogma",
+  "unstable": {
+   "version": [
+    20170125,
+    721
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "eea1844a81e87e2488b05e703a93272d0fc3bc74",
+   "sha256": "0wmp4q1jzb6giwrv8ajgqriy155mcc7jnj5sycpfk3hw6q74js66"
+  }
+ },
+ {
+  "ename": "flycheck-drstring",
+  "commit": "2070680f0d883ea61def1b7a9487c4524886a579",
+  "sha256": "08hyh39wyphh2lr879y2havw0wfgppq0v763j0sa5hpvaf0y46h7",
+  "fetcher": "github",
+  "repo": "danielmartin/flycheck-drstring",
+  "unstable": {
+   "version": [
+    20200210,
+    1903
+   ],
+   "deps": [
+    "flycheck",
+    "swift-mode"
+   ],
+   "commit": "d8d5a560e792a6657ef5ac69934c74f1ed51372d",
+   "sha256": "0vcp3zbpi5vb8cs01fzb4268gj9ijq9qndqarwnls8w9wky4548w"
+  }
+ },
+ {
+  "ename": "flycheck-dtrace",
+  "commit": "cdcdd10fbcd58a5c67e4d07632212e7dedf42dbe",
+  "sha256": "14sg7zkq9f5zbcfn8app8m9mdc8cnwcxh7h4glsz32yaqc1dj7h8",
+  "fetcher": "github",
+  "repo": "juergenhoetzel/flycheck-dtrace",
+  "unstable": {
+   "version": [
+    20180903,
+    1630
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "951fab3a15c11d92b9fac1ea4791a80dfe034a00",
+   "sha256": "1qkzir3lzz4lc5kn55qb52cm5y7iy8w1ljq6xxzcjxfbk9980y0y"
+  }
+ },
+ {
+  "ename": "flycheck-elixir",
+  "commit": "da2ab73ab1426f71ea2b2bea2b418941856b3454",
+  "sha256": "0f78fai6q15smh9rvsliv8r0hh3kpwn1lz37yvqkkbx9vl7rlwld",
+  "fetcher": "github",
+  "repo": "lbolla/emacs-flycheck-elixir",
+  "unstable": {
+   "version": [
+    20180810,
+    642
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "11998d7e3e63a33453e934d25b3673f7c558e579",
+   "sha256": "1hdbg0hvb6hwzjma9mxy0h888c8j2z4g38gwixrdixzbw5727r75"
+  }
+ },
+ {
+  "ename": "flycheck-elm",
+  "commit": "78bdcdaa660beda29acecb51761b95d8664d28ac",
+  "sha256": "06dpv19wgbw48gbf701c77vw1dkpddx8056wpim3zbvwwfwk8ra4",
+  "fetcher": "github",
+  "repo": "bsermons/flycheck-elm",
+  "unstable": {
+   "version": [
+    20181107,
+    146
+   ],
+   "deps": [
+    "flycheck",
+    "let-alist",
+    "seq"
+   ],
+   "commit": "1b60050efd4729bfba548f3e5adbcb58436667cb",
+   "sha256": "1kjms9d2c98ffd1qxs879qhg0n4jzic0r5kni9y4gz3v09ww8zms"
+  }
+ },
+ {
+  "ename": "flycheck-elsa",
+  "commit": "2a15c49d2fc800a6b69304edd6dbad90aaa5053f",
+  "sha256": "07a07hmy7cibm7263dw4x8kkv17g5hby8isaks7n2814ifblf30r",
+  "fetcher": "github",
+  "repo": "emacs-elsa/flycheck-elsa",
+  "unstable": {
+   "version": [
+    20200203,
+    1758
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "6274e6d5391bcdca46164b3238b045ca21c353a2",
+   "sha256": "0dr52dqxsgswswbkdbv0dax57k41j58n5wf3gny6yz52626kv8n8"
+  }
+ },
+ {
+  "ename": "flycheck-flawfinder",
+  "commit": "e67a84d1a8c890ea56bd842549d70d9841d1e7a7",
+  "sha256": "1nabj00f5p1klzh6509ywnazxx2m017isdjdzzixg94g5mp0kv5i",
+  "fetcher": "github",
+  "repo": "alexmurray/flycheck-flawfinder",
+  "unstable": {
+   "version": [
+    20170116,
+    327
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "7d964d38023b088adf3ffc2fddeead81f4491a45",
+   "sha256": "0y023brz8adwa6gdaaixk6dnrq4kj2i5h56rj54cxrjkagyklfxl"
+  }
+ },
+ {
+  "ename": "flycheck-flow",
+  "commit": "4d18fb21d8ef9b33aa84bc26f5918e636c5771e5",
+  "sha256": "0p4vvk09vjgk98dwzr2qzldvij3v6af56pradssi6sm3shbqhkk3",
+  "fetcher": "github",
+  "repo": "lbolla/emacs-flycheck-flow",
+  "unstable": {
+   "version": [
+    20190304,
+    1459
+   ],
+   "deps": [
+    "flycheck",
+    "json"
+   ],
+   "commit": "9e8e52cfc98af6a23fd906f9cb5d5d470d8cf82d",
+   "sha256": "14qldlisbmxzammr500gyha2hiv2xgyzfc6mysqii06kbcqn1ik1"
+  }
+ },
+ {
+  "ename": "flycheck-ghcmod",
+  "commit": "b6ed620e038f361c41115430a1fc119a04cf4f20",
+  "sha256": "0mqxg622lqnkb52a0wff7h8b0k6mm1k7fhkfi95fi5sahclja0rp",
+  "fetcher": "github",
+  "repo": "scturtle/flycheck-ghcmod",
+  "unstable": {
+   "version": [
+    20150114,
+    632
+   ],
+   "deps": [
+    "dash",
+    "flycheck"
+   ],
+   "commit": "6bb7b7d879f05bbae54e99eb04806c877adf3ccc",
+   "sha256": "0q1m1f3vhw1wy0pa3njy55z28psznbw2xwmwk2v1p5c86n74ns8d"
+  }
+ },
+ {
+  "ename": "flycheck-golangci-lint",
+  "commit": "fffbecd6cb43866fc9f37ba2d2c998ef6186c6d5",
+  "sha256": "1vg80q4axbzb147fglli2w19n70bc934hb3hfl1r4shhpbfjlcgj",
+  "fetcher": "github",
+  "repo": "weijiangan/flycheck-golangci-lint",
+  "unstable": {
+   "version": [
+    20190330,
+    1412
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "8e446c68311048f0b87febf8ef0379e29d358851",
+   "sha256": "0xxxqk8ag082nwwq3dvhzvnbgn9c90mbda7qvi2y4qbh1p1nccqc"
+  }
+ },
+ {
+  "ename": "flycheck-gometalinter",
+  "commit": "8bfe9f2d030c04fb292297eb9226072bfea2ac64",
+  "sha256": "1bnvj5kwgbh0dv989rsjcvmcij1ahwcz0vpr6a8f2p6wwvksw1h2",
+  "fetcher": "github",
+  "repo": "favadi/flycheck-gometalinter",
+  "unstable": {
+   "version": [
+    20180424,
+    941
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "1e3eede14da405b914a7d8b00300846e4393cb83",
+   "sha256": "10gskp8ch904s3lw7g4sixfhwyx74grdivdl2wnsvd44im9zlw6c"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    4
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "2e863429cc953cf4c14783e249df56d1ae669868",
+   "sha256": "07r2csy2psflvg0pl6n9scfwhnp9mv7hs02hz861v5kbkfx0ajzw"
+  }
+ },
+ {
+  "ename": "flycheck-gradle",
+  "commit": "382d9afd2bbb0c137719c308a67d185b86d84331",
+  "sha256": "0zd92lx0mqjqwzclvvhfwwahq80qspyv9k7qcxjc0bl3avjk6a47",
+  "fetcher": "github",
+  "repo": "jojojames/flycheck-gradle",
+  "unstable": {
+   "version": [
+    20190315,
+    234
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "1ca08bbc343362a923cbdc2010f66e41655e92ab",
+   "sha256": "14zvx7f2nszf8p14aibqa4pdg3ly7yw66a58bw2whjw9zfi9rnr0"
+  }
+ },
+ {
+  "ename": "flycheck-grammalecte",
+  "commit": "ddaffa55c1b99cce9097c019efe9a236e2f5a395",
+  "sha256": "1fblc6mvj9n676ci8597as3rnwh6hmbh2hfwr92gi1dd8ibnd2pn",
+  "fetcher": "git",
+  "url": "https://git.deparis.io/flycheck-grammalecte/",
+  "unstable": {
+   "version": [
+    20200515,
+    1120
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "8608df3144714d79b93afcfe13400693ed763ed8",
+   "sha256": "1ibcalim4mp9676szbvrf69nhfbc8vy47anmpqi9idjvdf6bpm75"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "8608df3144714d79b93afcfe13400693ed763ed8",
+   "sha256": "1ibcalim4mp9676szbvrf69nhfbc8vy47anmpqi9idjvdf6bpm75"
+  }
+ },
+ {
+  "ename": "flycheck-grammarly",
+  "commit": "5fdf51167be86e0871125d5548bddc0c926b79dd",
+  "sha256": "0rdgb9ig3gda33xwl8p9c11gf274v02zibzd660ncp0cipapvqp7",
+  "fetcher": "github",
+  "repo": "jcs-elpa/flycheck-grammarly",
+  "unstable": {
+   "version": [
+    20200203,
+    446
+   ],
+   "deps": [
+    "cl-lib",
+    "flycheck",
+    "grammarly"
+   ],
+   "commit": "72425743364f4fd9516f94546a7432457e1e7df0",
+   "sha256": "17dl0g9f58gc9rkk87kg1bqy6qqz225ng7ymdg2ikhd8i2pd2zkw"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    4
+   ],
+   "deps": [
+    "cl-lib",
+    "flycheck",
+    "grammarly"
+   ],
+   "commit": "1bcb11c3c7878c1b0d73318399e572e9a15587b1",
+   "sha256": "1daw5mmif1nzg4yr5zm42bzzfg1n4qxps3pkcisga11mbp9g553r"
+  }
+ },
+ {
+  "ename": "flycheck-haskell",
+  "commit": "6ca601613788ae830655e148a222625035195f55",
+  "sha256": "12lgirz3j6n5ns2ikq4n41z0d33qp1lb5lfz1q11qvpbpn9d0jn7",
+  "fetcher": "github",
+  "repo": "flycheck/flycheck-haskell",
+  "unstable": {
+   "version": [
+    20200218,
+    753
+   ],
+   "deps": [
+    "dash",
+    "flycheck",
+    "haskell-mode",
+    "let-alist",
+    "seq"
+   ],
+   "commit": "23cfb9387faf6f70b421bb4c11b6847f0db38dfc",
+   "sha256": "0s36fcqvmi3kmvhmmb0vrbgjkxjpx9wkj343f0rjjz1rh4b3n7qv"
+  },
+  "stable": {
+   "version": [
+    0,
+    8
+   ],
+   "deps": [
+    "dash",
+    "flycheck",
+    "haskell-mode",
+    "let-alist",
+    "seq"
+   ],
+   "commit": "ee3401d97cc5e8edc216f2369e9dea3d363e462c",
+   "sha256": "0yryd346cp5zir3icldkhjzwjb0bkq8rlidbr62dry1cw9bic6z0"
+  }
+ },
+ {
+  "ename": "flycheck-hdevtools",
+  "commit": "9e210eb2405cc85dd1d03e9119d2249178950398",
+  "sha256": "0ahvai1q4x59ryiyccvqvjisgqbaiahx4gk8ssaxhblhj0sqga93",
+  "fetcher": "github",
+  "repo": "flycheck/flycheck-hdevtools",
+  "unstable": {
+   "version": [
+    20160926,
+    702
+   ],
+   "deps": [
+    "dash",
+    "flycheck"
+   ],
+   "commit": "8248ebaf8376ee5e37ff47c814a291550a7bdcf2",
+   "sha256": "1al9kyj7n0cjc4s1m41389bzvvrckg28598v506zd5hqvaiynsp0"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "fbf90b9a7d2d90f69ac55b57d18f0f4a47afed61",
+   "sha256": "136mdg21a8sqxhijsjsvpli7r7sb40nmf80p6gmgb1ghwmhlm8k3"
+  }
+ },
+ {
+  "ename": "flycheck-indent",
+  "commit": "b1c1163d5acc402716c4a6cf877f13665138b74b",
+  "sha256": "0d6wa3w377s22psbficabyqi03z8kp32662yxcly1dlv5zyyh6nd",
+  "fetcher": "github",
+  "repo": "conao3/indent-lint.el",
+  "unstable": {
+   "version": [
+    20200129,
+    2046
+   ],
+   "deps": [
+    "flycheck",
+    "indent-lint"
+   ],
+   "commit": "23ef4bab5509e2e7fb1f4a194895a9510fa7c797",
+   "sha256": "00ipp87hjiymraiv6xy0lqzhn9h3wcrw7z4dkzb2934d7bd08j29"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "flycheck",
+    "indent-lint"
+   ],
+   "commit": "5601a716d4daeb444642736ddef420cbc1047968",
+   "sha256": "0ndpdqdcg2rlrw5z86gyj46qsmsilh3a4snyyybi87kk5ajk2k64"
+  }
+ },
+ {
+  "ename": "flycheck-indicator",
+  "commit": "25d59829ca2f4fbedfee500885b45bc358faf47b",
+  "sha256": "1h2d7dw94agrdrks41npjdmf5m628n1jg060pv1mrjysj4xm2n45",
+  "fetcher": "github",
+  "repo": "gexplorer/flycheck-indicator",
+  "unstable": {
+   "version": [
+    20200331,
+    1142
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "e00d9a20cbc21d6814c27cc9206296da394478e8",
+   "sha256": "0y3dzamm7xcac9fcgx88z48l6nkgmz5lx0a6lnxxywkh0h1y2kqn"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "e00d9a20cbc21d6814c27cc9206296da394478e8",
+   "sha256": "0y3dzamm7xcac9fcgx88z48l6nkgmz5lx0a6lnxxywkh0h1y2kqn"
+  }
+ },
+ {
+  "ename": "flycheck-ini-pyinilint",
+  "commit": "c2a1d0b4be0dd3e238ad2e3a157b11ecc82c0639",
+  "sha256": "028ksrlrrsn2wsz7kqf3qk4pp3scs7zvp74c4xj52rm4hh7ycbl7",
+  "fetcher": "gitlab",
+  "repo": "danieljrmay/flycheck-ini-pyinilint",
+  "unstable": {
+   "version": [
+    20190312,
+    1931
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "e1c3adfc148caf721691a55cae686b5f31209204",
+   "sha256": "0b8hs7cdywqblbf5dkgck00x18xirlxi7kqd21cqfd276wvn8wyp"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "54744a78d06373404933fedc3ca836916e83de51",
+   "sha256": "1zdvan6l2s97s7swnccq21z1ja8vl64l757j3hg50ipq8j5yy9dl"
+  }
+ },
+ {
+  "ename": "flycheck-inline",
+  "commit": "a9ecc3a4696d2b3b0f0b8b1ca6e5285380ac046a",
+  "sha256": "14ph2f5aj2mpyxbbq4v0rk5zdz7773lf2m83m30h3r1cbh5jmddj",
+  "fetcher": "github",
+  "repo": "flycheck/flycheck-inline",
+  "unstable": {
+   "version": [
+    20190320,
+    1611
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "cf9eceabff8370f3b834b943a5777b9f914583f9",
+   "sha256": "1sk8r90iqxpzrg0lpq4vd8ywdi08i0bbmgdivmr510jw2bpi3wp4"
+  }
+ },
+ {
+  "ename": "flycheck-irony",
+  "commit": "1e367afce9a792c168ef1e7e20cc5903f7b570d8",
+  "sha256": "0qk814m5s7mjba659llml0gy1g3045w8l1g73w2pnm1pbpqdfn3z",
+  "fetcher": "github",
+  "repo": "Sarcasm/flycheck-irony",
+  "unstable": {
+   "version": [
+    20180604,
+    2152
+   ],
+   "deps": [
+    "flycheck",
+    "irony"
+   ],
+   "commit": "42dbecd4a865cabeb301193bb4d660e26ae3befe",
+   "sha256": "00ggn7v1nj2zb7rvwmjrhybd1vcp07n74krdy28z9xwh7w59wyq7"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "flycheck",
+    "irony"
+   ],
+   "commit": "34940ae5ab8f4c721d9c1118ebfc3496d7e67a84",
+   "sha256": "0qa5a8wzvzxwqql92ibc9s43k8sj3vwn7skz9hfr8av0skkhx996"
+  }
+ },
+ {
+  "ename": "flycheck-jest",
+  "commit": "31e2ac9de5f28ee9d847097cdeb60afa99476a51",
+  "sha256": "19dg8v0xzni7x6zn472n4ach1c1jv4syzarfi8ba8r6n26vz9ss4",
+  "fetcher": "github",
+  "repo": "jojojames/flycheck-jest",
+  "unstable": {
+   "version": [
+    20180411,
+    328
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "08f27c5ed97c83c445f99fab58f0b6c826f14449",
+   "sha256": "1ipr1yyk5vf2i8q7923r18a216sgf759x5f6j5776jcjkhp98c98"
+  }
+ },
+ {
+  "ename": "flycheck-joker",
+  "commit": "599bf33a5d4a4a590b355001e532cab4e1ee9ef6",
+  "sha256": "0war80zdljpjhfihqrind8471ic7l4z7j74zmrysybxvnd5nr7l3",
+  "fetcher": "github",
+  "repo": "candid82/flycheck-joker",
+  "unstable": {
+   "version": [
+    20200412,
+    2346
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "93576295fef7a749bf779eeece5edd85e21868e2",
+   "sha256": "1hz5nlrhbrlwwk8rcjvc3jhj0g9wgm6xw903ap8fxq470mj99gln"
+  },
+  "stable": {
+   "version": [
+    1,
+    5,
+    0
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "93576295fef7a749bf779eeece5edd85e21868e2",
+   "sha256": "1hz5nlrhbrlwwk8rcjvc3jhj0g9wgm6xw903ap8fxq470mj99gln"
+  }
+ },
+ {
+  "ename": "flycheck-julia",
+  "commit": "4e964e3c6f737d0102b4fd7440fa9d434e6382bf",
+  "sha256": "0340bv0lifs8pajk7gh7rngdjg62vaggn5biyysng642dlg5fwqs",
+  "fetcher": "github",
+  "repo": "gdkrmr/flycheck-julia",
+  "unstable": {
+   "version": [
+    20170729,
+    2141
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "213b60a5a9a1cb7887260e1d159b5bb27167cbb6",
+   "sha256": "0wk8mc8j67dmc3mxzrhypgxmyywwrjh5q5llj4m2mgf0j7yp2576"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "213b60a5a9a1cb7887260e1d159b5bb27167cbb6",
+   "sha256": "0wk8mc8j67dmc3mxzrhypgxmyywwrjh5q5llj4m2mgf0j7yp2576"
+  }
+ },
+ {
+  "ename": "flycheck-kotlin",
+  "commit": "f158727cc8892aadba0a613dd08e65e2fc791b48",
+  "sha256": "0vh4f3ap1ciddf2fvfnjz668d6spyx49xs2wfp1hrzxn5yqpnra5",
+  "fetcher": "github",
+  "repo": "whirm/flycheck-kotlin",
+  "unstable": {
+   "version": [
+    20190808,
+    630
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "5104ee9a3fdb7f0a0a3d3bcfd8dd3c45a9929310",
+   "sha256": "193l9amk45b0bkrqqm6cxx8y4a6jvm0mcncwq6kvhq2kj9slw7g2"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "5104ee9a3fdb7f0a0a3d3bcfd8dd3c45a9929310",
+   "sha256": "193l9amk45b0bkrqqm6cxx8y4a6jvm0mcncwq6kvhq2kj9slw7g2"
+  }
+ },
+ {
+  "ename": "flycheck-ledger",
+  "commit": "dc715e6849aa5d6017e2478514c4a0d84c7ddbe5",
+  "sha256": "0807pd2km4r60wgd6jakscbx63ab22d9kvf1cml0ad8wynsap7jl",
+  "fetcher": "github",
+  "repo": "purcell/flycheck-ledger",
+  "unstable": {
+   "version": [
+    20200304,
+    2204
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "628e25ba66604946085571652a94a54f4d1ad96f",
+   "sha256": "1djrj3is0dzrl2703bw7bclf33dp4xqmy144q7xj5pvpb9v3kf50"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "628e25ba66604946085571652a94a54f4d1ad96f",
+   "sha256": "1djrj3is0dzrl2703bw7bclf33dp4xqmy144q7xj5pvpb9v3kf50"
+  }
+ },
+ {
+  "ename": "flycheck-lilypond",
+  "commit": "da99de90193c9ad362afdbbae28dfba52ef3676e",
+  "sha256": "0yx0jbilr8z58df13wcssp3p95skcvl8mnhhr6lijak44sd7klbf",
+  "fetcher": "github",
+  "repo": "hinrik/flycheck-lilypond",
+  "unstable": {
+   "version": [
+    20171203,
+    1332
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "cc1b7677a932c42e5dab1661ad7b923d4aae744c",
+   "sha256": "1yfsg52z4nhbh33fbsig24c9s0mc4xm72ll36h6ibld9fvqsgv6k"
+  }
+ },
+ {
+  "ename": "flycheck-liquidhs",
+  "commit": "d5921fde4068ff1bb288f6f9e2fe03f4a7fdbbda",
+  "sha256": "07dn2ifj49z2jj9zw0f0ydp5rxx9wfmah4fh4vx8slnpjby367yh",
+  "fetcher": "github",
+  "repo": "ucsd-progsys/flycheck-liquidhs.el",
+  "unstable": {
+   "version": [
+    20170412,
+    2326
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "c27252ac24d77f4b6eec76a4ba9cd61761a3fba9",
+   "sha256": "1v5s252w2ai0rrci0rkq6wsx110pw8hp60n67990jg6l6lpvir2s"
+  }
+ },
+ {
+  "ename": "flycheck-mercury",
+  "commit": "a775d12d9b9b6f27a44aeffbbb18de46a9e1b532",
+  "sha256": "1z2y6933f05yv9y2aapmn876jnsydh642zqid3j88bb9kqi67x0h",
+  "fetcher": "github",
+  "repo": "flycheck/flycheck-mercury",
+  "unstable": {
+   "version": [
+    20181118,
+    1952
+   ],
+   "deps": [
+    "dash",
+    "flycheck",
+    "s"
+   ],
+   "commit": "b6807a8db70981e21a91a93324c31e49de85c89f",
+   "sha256": "15pjqglpcwm4wy0cxk1man3ar0n56qi1bjrr1fxfjq2xwsgsfagh"
+  }
+ },
+ {
+  "ename": "flycheck-mix",
+  "commit": "fd2a4d71b7f4c0082b687a23fd367d55186625a9",
+  "sha256": "1wp8lp45lc519w3xsws2c91jlbfmc0pc8764kxsifk74akwcizfl",
+  "fetcher": "github",
+  "repo": "tomekowal/flycheck-mix",
+  "unstable": {
+   "version": [
+    20200211,
+    1414
+   ],
+   "deps": [
+    "elixir-mode",
+    "flycheck"
+   ],
+   "commit": "d3c075f61ace6695919e90239cee6567cce09638",
+   "sha256": "19bvnryfxz4idw1dgp90mpjbp3512423m3xqgczskv4csns4hw1q"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "elixir-mode",
+    "flycheck"
+   ],
+   "commit": "c565ebb12a48fcd49cc65656d79295c3288fcb84",
+   "sha256": "1yncail979sfljmib7b1m9aw376xd4b76apz4d50hj83lrfy169c"
+  }
+ },
+ {
+  "ename": "flycheck-mmark",
+  "commit": "2fd10423ab80e32245bb494005c8f87a8987fffb",
+  "sha256": "0lnw7pz40hijcpi9b92vjxvvyh9v50ww2f2r8z9pyhl9mjy2245x",
+  "fetcher": "github",
+  "repo": "mmark-md/flycheck-mmark",
+  "unstable": {
+   "version": [
+    20190713,
+    1323
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "f8fdd59ccb9ddc7d81efbf3dde096dc66e3f9fa1",
+   "sha256": "08rwmvddla2h0wjiljl8qab87chsyc42hzap2mqih2n7finvzj4f"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "b73b40cb9c5cf6bc6fa501aa87a4c30b210c0c5f",
+   "sha256": "1w75accl67i0qwadwp7dgpxaj0i8zwckvv5isyn93vknzw5dz66x"
+  }
+ },
+ {
+  "ename": "flycheck-mypy",
+  "commit": "b1f5ad8263ee33b8950ff68e39dca5b1f1748c1b",
+  "sha256": "1w418jm6x3vcg2x31nzc8a3b8asx6gznl6m76ip8w98riz7vy02f",
+  "fetcher": "github",
+  "repo": "lbolla/emacs-flycheck-mypy",
+  "unstable": {
+   "version": [
+    20200113,
+    1336
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "5b4e14ab0cbce2ff35fee7e69b5b95eafd609c80",
+   "sha256": "1cx1rm40ns3y5bdbk8hfycdaq16p4zxkjjss02xs6hl96yvc4kaj"
+  }
+ },
+ {
+  "ename": "flycheck-nim",
+  "commit": "68747db46761f28aa2fdf13494d7cecc334cb604",
+  "sha256": "0w6f6998rqx8a3i4xhga7mrmvhxrm690wkqwfzspidid2z7v71az",
+  "fetcher": "github",
+  "repo": "ALSchwalm/flycheck-nim",
+  "unstable": {
+   "version": [
+    20190927,
+    1514
+   ],
+   "deps": [
+    "dash",
+    "flycheck"
+   ],
+   "commit": "ddfade51001571c2399f78bcc509e0aa8eb752a4",
+   "sha256": "19xxwj66q45499s9jvw6rq8im0g7wxl9m66kq2a9ykds4v7sprlm"
+  }
+ },
+ {
+  "ename": "flycheck-nimsuggest",
+  "commit": "cb4170f002dbcd1906e81836f3ce035b1e81c379",
+  "sha256": "099mlzramm6z66zyjb6ypn7qb0hpvwbbgk9ydsanj8sni0dd66hv",
+  "fetcher": "github",
+  "repo": "yuutayamada/flycheck-nimsuggest",
+  "unstable": {
+   "version": [
+    20171027,
+    2208
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "dc9a5de1cb3ee05db5794d824610959a1f603bc9",
+   "sha256": "1bf65hrz0s6f180kn2ir8l5qn7in789w8pyy96b9gqn21z50vb9d"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    1
+   ],
+   "deps": [
+    "flycheck",
+    "nim-mode"
+   ],
+   "commit": "8b1c69e9aa924368bc4dadd4cde818ff158cd3f0",
+   "sha256": "0vnwy7b3xs2smbr6ah6yk8hq7vvsciq7d6m1qr91nfnazdgvxmvg"
+  }
+ },
+ {
+  "ename": "flycheck-objc-clang",
+  "commit": "4ff4412f507371b93cfb85fc744e54110cd87338",
+  "sha256": "07mzwd04a69d7xpkjmhfmf95j69h6accnf9bb9br7jb1hi9vdalp",
+  "fetcher": "github",
+  "repo": "GyazSquare/flycheck-objc-clang",
+  "unstable": {
+   "version": [
+    20191116,
+    1015
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "683d52e7bc3aeabd966c546a1d835d4c7191509b",
+   "sha256": "0aymv9y06gzkh1m0jl693wsqvbh3cc5fp5z2yprmqzc98w1lh8bs"
+  },
+  "stable": {
+   "version": [
+    4,
+    0,
+    0
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "683d52e7bc3aeabd966c546a1d835d4c7191509b",
+   "sha256": "0aymv9y06gzkh1m0jl693wsqvbh3cc5fp5z2yprmqzc98w1lh8bs"
+  }
+ },
+ {
+  "ename": "flycheck-ocaml",
+  "commit": "8ce9283eb1285953a2578eb7c4d280b4d98c801f",
+  "sha256": "1cv2bb66aql2kj1y1gsl4xji8yrzrq6rd8hxxs5vpfsk47052lf7",
+  "fetcher": "github",
+  "repo": "flycheck/flycheck-ocaml",
+  "unstable": {
+   "version": [
+    20170730,
+    2153
+   ],
+   "deps": [
+    "flycheck",
+    "let-alist",
+    "merlin"
+   ],
+   "commit": "8707a7bf545a8639a6a5c600a98d9a2ea1487dc9",
+   "sha256": "13vzxkjq6v1f1i9zgxgjbwpiba04k9frkcl2wx6a9h3vgd7jyay0"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "flycheck",
+    "let-alist",
+    "merlin"
+   ],
+   "commit": "9b4cd83ad2a87cc94b5d4e1ac26ac235475f1e6c",
+   "sha256": "1phfarws2aajkgcl96hqa4ydmb1yncg10q2ldzf8ff6yd6mvk51l"
+  }
+ },
+ {
+  "ename": "flycheck-package",
+  "commit": "d17ec69c9f192625e74dfadf03b11d0d7dc575e7",
+  "sha256": "0068kpia17rsgjdmzsjnw0n6x5z9jvfxggxlzkszvwsx73mvcs2d",
+  "fetcher": "github",
+  "repo": "purcell/flycheck-package",
+  "unstable": {
+   "version": [
+    20200304,
+    2151
+   ],
+   "deps": [
+    "flycheck",
+    "package-lint"
+   ],
+   "commit": "caea75f77dc7668c7aa0ebcd48f677e3522b5d77",
+   "sha256": "1x63rwpyzcn99jzhyxh91l3hp2j55wspxdv5rhvnpbar5nlqlbz1"
+  },
+  "stable": {
+   "version": [
+    0,
+    13
+   ],
+   "deps": [
+    "flycheck",
+    "package-lint"
+   ],
+   "commit": "e867b83dc84f1f8870eea069a71fa2a24cbcd5c9",
+   "sha256": "1b7javiqbcfzh1xkrjld9f5xrmld69gvnjz72mqpqmzbilfvmdpq"
+  }
+ },
+ {
+  "ename": "flycheck-pact",
+  "commit": "0ffc77b2ddcd4f9c27a2306459cf2fcde7880e3e",
+  "sha256": "1nxmh6p2id4cxzs7jxdrk88g8qmvk33nbzmrqhm7962iqizlvnrw",
+  "fetcher": "github",
+  "repo": "kadena-io/flycheck-pact",
+  "unstable": {
+   "version": [
+    20180920,
+    2052
+   ],
+   "deps": [
+    "flycheck",
+    "pact-mode"
+   ],
+   "commit": "0e10045064ef89ec8b6f5a473073d47b976a2ca3",
+   "sha256": "072jc0vrjg531ydk5bjrjpmbvdk81yw75jqjnvb7alkib6jn5f9r"
+  }
+ },
+ {
+  "ename": "flycheck-perl6",
+  "commit": "2f6ecdb2ce6bc74a27dca01ab4942778e986ac8f",
+  "sha256": "0czc0fqx7g543afzkbjyz4bhxfl4s3v5swn9xrkayv8cgk8acvp4",
+  "fetcher": "github",
+  "repo": "hinrik/flycheck-perl6",
+  "unstable": {
+   "version": [
+    20180509,
+    2201
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "b804702305d7a6e26f762ff98cfdeec2e9dd4cb7",
+   "sha256": "0gys38rlx9lx35bia6nj7kfhz1v5xfrirgf8adwk7b2hfjazrsib"
+  }
+ },
+ {
+  "ename": "flycheck-pest",
+  "commit": "f0c1b89d79456ecaa22b95f3c292799f5d1aa133",
+  "sha256": "06nvryshinagp26idjcb1r98k39x4k82cjj735l9kiwpiag53ash",
+  "fetcher": "github",
+  "repo": "ksqsf/pest-mode",
+  "unstable": {
+   "version": [
+    20200317,
+    1503
+   ],
+   "deps": [
+    "flycheck",
+    "pest-mode"
+   ],
+   "commit": "4ae88a9c81d499bbe99978ff0216b645fed70023",
+   "sha256": "1zc7dmgp3s9q33wkvw6i7zzlcaa65ixx3hxb78m62lk2a7fzb3ih"
+  }
+ },
+ {
+  "ename": "flycheck-phpstan",
+  "commit": "5a2b6cc39957e6d7185bd2bdfa3755e5b1f474a6",
+  "sha256": "1dr0h6cnwxdjmhlackv4gpsljwzs27gk41p8q99r0m44dada9gaf",
+  "fetcher": "github",
+  "repo": "emacs-php/phpstan.el",
+  "unstable": {
+   "version": [
+    20200411,
+    531
+   ],
+   "deps": [
+    "flycheck",
+    "phpstan"
+   ],
+   "commit": "2f715a186c5fe6576de83d4c0b64a37e2bfce101",
+   "sha256": "03ix2s068pzmybj0fcb08dlfgdqw0pmqhbdf4id2077f67bfad0w"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "deps": [
+    "flycheck",
+    "phpstan"
+   ],
+   "commit": "bf9e82a63f2ccb12af02c9e79a83e7989eeb7cb1",
+   "sha256": "15kv5xv6lcfgf048wr2zsnpvrplbxypy3wq56zvrzbq18hwprqg1"
+  }
+ },
+ {
+  "ename": "flycheck-pkg-config",
+  "commit": "5b2e88f2f126c9ff8b4261d6adb4c0d8d3049f33",
+  "sha256": "0w7h4fa4mv8377sdbkilqcw4b9qda98c1k01nxic7a8i3iyq02d6",
+  "fetcher": "github",
+  "repo": "Wilfred/flycheck-pkg-config",
+  "unstable": {
+   "version": [
+    20200409,
+    501
+   ],
+   "deps": [
+    "dash",
+    "flycheck",
+    "s"
+   ],
+   "commit": "b76b24ea1f4800f5fb96ce9c6c4788e0e63133d3",
+   "sha256": "01wzzrpfgh3z28qsynxvkfm92xy98vyvkkv31qh53kxxdicnzlh0"
+  }
+ },
+ {
+  "ename": "flycheck-plantuml",
+  "commit": "65f050860a0efda8cf472c2945b79a0a57651556",
+  "sha256": "01l22isiym635471628b951n025ls3lm6gfhfp6f8n8w7v1sb986",
+  "fetcher": "github",
+  "repo": "alexmurray/flycheck-plantuml",
+  "unstable": {
+   "version": [
+    20171018,
+    111
+   ],
+   "deps": [
+    "flycheck",
+    "plantuml-mode"
+   ],
+   "commit": "183be89e1dbba0b38237dd198dff600e0790309d",
+   "sha256": "1fbdbpwrlkvbgv693ndr3zamkf3gp28v94jg911fsav8bk08f6pq"
+  }
+ },
+ {
+  "ename": "flycheck-pony",
+  "commit": "0ef333f9ea8ec691b65e7fbd286fb7f1ddbe5381",
+  "sha256": "0y5nwfjyb3cvyq7a22r5cwfasfnzalsqvbv61bvdirdamn290nc3",
+  "fetcher": "github",
+  "repo": "ponylang/flycheck-pony",
+  "unstable": {
+   "version": [
+    20190227,
+    235
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "43421fb43ab4fec759061a11e9d9166bb7da013d",
+   "sha256": "03byayxvhrkm88s7157cfzi91ziggs872yis9ys04ndk1pdf940f"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "9356cbcd404eaf381ab0c4b0f9c47232f723fa7e",
+   "sha256": "1rzz3cl0pxn3hhrkxcdiy17wl4dzbn8kxm3hq90zmhag1gbfy4zz"
+  }
+ },
+ {
+  "ename": "flycheck-popup-tip",
+  "commit": "9b2269ee9532bb092756ae0c0693cb44b73820e8",
+  "sha256": "1j8pgljnxcbfh08qpbr9jkw56l7d6k8lmdcsjbi6jd7jmyqbqvnx",
+  "fetcher": "github",
+  "repo": "flycheck/flycheck-popup-tip",
+  "unstable": {
+   "version": [
+    20170812,
+    2351
+   ],
+   "deps": [
+    "flycheck",
+    "popup"
+   ],
+   "commit": "ef86aad907f27ca076859d8d9416f4f7727619c6",
+   "sha256": "1bi6f9nm4bylsbjv4qnkar35s6xzdf2cc2cxi3g691p9527apdz6"
+  },
+  "stable": {
+   "version": [
+    0,
+    12,
+    2
+   ],
+   "deps": [
+    "flycheck",
+    "popup"
+   ],
+   "commit": "ef86aad907f27ca076859d8d9416f4f7727619c6",
+   "sha256": "1bi6f9nm4bylsbjv4qnkar35s6xzdf2cc2cxi3g691p9527apdz6"
+  }
+ },
+ {
+  "ename": "flycheck-pos-tip",
+  "commit": "698843f75e17b9e6160487c0153f9d6b4af288f6",
+  "sha256": "09i2jmwj8b915fhyczwdb1j7c551ggbva33avis77ga1s9v3nsf9",
+  "fetcher": "github",
+  "repo": "flycheck/flycheck-pos-tip",
+  "unstable": {
+   "version": [
+    20200516,
+    1600
+   ],
+   "deps": [
+    "flycheck",
+    "pos-tip"
+   ],
+   "commit": "dc57beac0e59669926ad720c7af38b27c3a30467",
+   "sha256": "15h4m5cfk0vh1g630vlwfxmcpa1jdalrrldnvijsqla99mb2jm1w"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "flycheck",
+    "pos-tip"
+   ],
+   "commit": "3f1d5297fdff44a14ee624160eefdc678e2bd0bd",
+   "sha256": "0qxx3xdgk5l793yg5ffbi5qhrxrf6akwdz93n2vibpkdjkvzyh2y"
+  }
+ },
+ {
+  "ename": "flycheck-posframe",
+  "commit": "124f2a7833e3386a0bf57c8111d782ae7a7ee02e",
+  "sha256": "02ym2isn761w2nsfxiqjh0jk4md9wy3hk9na2aw7pyycm5cgmfwp",
+  "fetcher": "github",
+  "repo": "alexmurray/flycheck-posframe",
+  "unstable": {
+   "version": [
+    20191214,
+    1109
+   ],
+   "deps": [
+    "flycheck",
+    "posframe"
+   ],
+   "commit": "2b3e94c2e427ec9831c513007460c5ea9e2225a3",
+   "sha256": "1hmplb61xvz6p2b2pv6pg5bv7q7mirmgr0n1by1hj1w479g8rps3"
+  }
+ },
+ {
+  "ename": "flycheck-prospector",
+  "commit": "45475a408ff287f4f9d2a8bc729b995635579c84",
+  "sha256": "1z028qi40pk7jh0m8w332kr5qi6k6sw1kbymqdxxfakh1976fww9",
+  "fetcher": "github",
+  "repo": "chocoelho/flycheck-prospector",
+  "unstable": {
+   "version": [
+    20180524,
+    450
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "92f2680573290ba4a69a2d6e140f44680efce6a8",
+   "sha256": "00jlw18y68yq0fyvfzhvw89a4nmv1ah4c8h4d6g79rl5djnb48hk"
+  }
+ },
+ {
+  "ename": "flycheck-pycheckers",
+  "commit": "af36dca316b318d25d65c9e842f15f736e19ea63",
+  "sha256": "18ski3bp8x33589pc273i5ia3hffvlb4czrd97wkfgr4k59ww6yq",
+  "fetcher": "github",
+  "repo": "msherry/flycheck-pycheckers",
+  "unstable": {
+   "version": [
+    20200428,
+    40
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "dcf5b097b7c1206f6325547f5cf37b867a6a5ffb",
+   "sha256": "16fwk1prq7gyhs0yk4bmr9j3wxnznjj9ppbxwidnmpbhdis2f0sv"
+  },
+  "stable": {
+   "version": [
+    0,
+    14
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "c5349c0fb3b719469b7e66dbdfbe58d0813f6a74",
+   "sha256": "02886xggdb09880jp57cah3fmf1nm77gvb0aaws8j4abl278g7x5"
+  }
+ },
+ {
+  "ename": "flycheck-pyflakes",
+  "commit": "05e6f3041151006e44f91e5bcbaa7be3750fb403",
+  "sha256": "186h5ky48i1xmjbvvhn1i0rzhsy8bgdv1d8f7rlr2z4brb52f9c1",
+  "fetcher": "github",
+  "repo": "Wilfred/flycheck-pyflakes",
+  "unstable": {
+   "version": [
+    20170330,
+    2311
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "61b045939e3743b2162b7e4e73249c66fc2b8f65",
+   "sha256": "03p0666vpprp6ijkvx9ypaw58bdq42gh533270plv2k5l8r22cl1"
+  }
+ },
+ {
+  "ename": "flycheck-pyre",
+  "commit": "aca6199ebfbf93f844c8f7a3db785dec079ef8af",
+  "sha256": "0h7ccxw9ymlmr2vq3p61cbfxfcjs8pzm73654s13c18rbl6dzfxv",
+  "fetcher": "github",
+  "repo": "linnik/flycheck-pyre",
+  "unstable": {
+   "version": [
+    20190215,
+    1222
+   ],
+   "deps": [
+    "cl-lib",
+    "flycheck"
+   ],
+   "commit": "0560122caae207d99d8af1ac2b4e5d6f6a1ce444",
+   "sha256": "0f58127197q6yfylz53nigyn7v91pcsdd91ywfgq5lrl0f5fvmdy"
+  }
+ },
+ {
+  "ename": "flycheck-relint",
+  "commit": "e20128460e942a78a88bd9e6389a8fcbb14343ad",
+  "sha256": "1q443078jf6cxzwxz6mc4m9drzfcd86q0lcw5vszmfyzn35nwyzb",
+  "fetcher": "github",
+  "repo": "purcell/flycheck-relint",
+  "unstable": {
+   "version": [
+    20200320,
+    2223
+   ],
+   "deps": [
+    "flycheck",
+    "relint"
+   ],
+   "commit": "296cf8e2f9e85ab0c1c591816b50ecd7c766060c",
+   "sha256": "148xh1alng4s3ydnhwjjrcmq1390pn6ymjszaamrzljwfqzh85ky"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "deps": [
+    "flycheck",
+    "relint"
+   ],
+   "commit": "296cf8e2f9e85ab0c1c591816b50ecd7c766060c",
+   "sha256": "148xh1alng4s3ydnhwjjrcmq1390pn6ymjszaamrzljwfqzh85ky"
+  }
+ },
+ {
+  "ename": "flycheck-rtags",
+  "commit": "3dea16daf0d72188c8b4043534f0833fe9b04e07",
+  "sha256": "00v6shfs7piqapmyqyi0fk3182rcfa3p8wr2cm5vqlrana13kbw4",
+  "fetcher": "github",
+  "repo": "Andersbakken/rtags",
+  "unstable": {
+   "version": [
+    20191222,
+    920
+   ],
+   "deps": [
+    "flycheck",
+    "rtags"
+   ],
+   "commit": "ed229d2e4070cc07ba76e537e8f5f93835ff0710",
+   "sha256": "1jf1mg2pib2rsrn280j2ywmnqgkr5jwmiaqf252jsb7ndq7p5gcr"
+  },
+  "stable": {
+   "version": [
+    2,
+    38
+   ],
+   "deps": [
+    "flycheck",
+    "rtags"
+   ],
+   "commit": "9687ccdb9e539981e7934e768ea5c84464a61139",
+   "sha256": "1r6l7dgr2ch586zrdi5l8fhdj4qdva8ldz7cjvi2byc2pd2xs8rx"
+  }
+ },
+ {
+  "ename": "flycheck-rust",
+  "commit": "68d8cdf3d225b13ebbbe5ce81a01366f33266aed",
+  "sha256": "1k0n0y6lbp71v4465dwq7864vp1qqyx7zjz0kssszcpx5gl1596w",
+  "fetcher": "github",
+  "repo": "flycheck/flycheck-rust",
+  "unstable": {
+   "version": [
+    20190319,
+    1546
+   ],
+   "deps": [
+    "dash",
+    "flycheck",
+    "let-alist",
+    "seq"
+   ],
+   "commit": "a139cd53c5062697e9ed94ad80b803c37d999600",
+   "sha256": "1fh6j5w2387nh2fwwjphkhq17cgj5m2q5k0fhidvgc2w65lzbr1r"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "dash",
+    "flycheck",
+    "let-alist",
+    "seq"
+   ],
+   "commit": "a139cd53c5062697e9ed94ad80b803c37d999600",
+   "sha256": "1fh6j5w2387nh2fwwjphkhq17cgj5m2q5k0fhidvgc2w65lzbr1r"
+  }
+ },
+ {
+  "ename": "flycheck-stack",
+  "commit": "b77f55989d11d1efacbad0fd3876dd27006f2679",
+  "sha256": "1r9zppqmp1i5i06jhkrgvwy1p3yc8kmcvgibricydqsij26lhpmf",
+  "fetcher": "github",
+  "repo": "chrisdone/flycheck-stack",
+  "unstable": {
+   "version": [
+    20160520,
+    944
+   ],
+   "deps": [
+    "flycheck",
+    "haskell-mode"
+   ],
+   "commit": "f04235e00998000ee2c305f5a3ee72bb5dbbc926",
+   "sha256": "139q43ldvymfxns8zv7gxasn3sg0rn4i9yz08wgk50psg5zq5mjr"
+  }
+ },
+ {
+  "ename": "flycheck-stan",
+  "commit": "e1d19cd6b80080aad5eff159c1bc7f7585bcd655",
+  "sha256": "15dxj6lklnavs3lfs8l7wq0wmqfmsss919cjw6jy8hgfbnf27wyx",
+  "fetcher": "github",
+  "repo": "stan-dev/stan-mode",
+  "unstable": {
+   "version": [
+    20200221,
+    2025
+   ],
+   "deps": [
+    "flycheck",
+    "stan-mode"
+   ],
+   "commit": "599a0440086c660e6823622b35058f6d2d6d9637",
+   "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y"
+  },
+  "stable": {
+   "version": [
+    10,
+    1,
+    0
+   ],
+   "deps": [
+    "flycheck",
+    "stan-mode"
+   ],
+   "commit": "599a0440086c660e6823622b35058f6d2d6d9637",
+   "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y"
+  }
+ },
+ {
+  "ename": "flycheck-status-emoji",
+  "commit": "5abd6aaa8d2bf55ae75cd217820763531f91958b",
+  "sha256": "0p42424b1fsmfcjyl252vhblppmpjwd6br2yqh10fi60wmprvn2p",
+  "fetcher": "github",
+  "repo": "liblit/flycheck-status-emoji",
+  "unstable": {
+   "version": [
+    20180330,
+    2325
+   ],
+   "deps": [
+    "cl-lib",
+    "flycheck",
+    "let-alist"
+   ],
+   "commit": "4bd113ab42dec9544b66e0a27ed9008ce8148433",
+   "sha256": "0ldy9lhh6mirjz02pnrf7z235jz55k4sdysbqxjhfidsszvp9v6w"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "deps": [
+    "cl-lib",
+    "flycheck",
+    "let-alist"
+   ],
+   "commit": "4bd113ab42dec9544b66e0a27ed9008ce8148433",
+   "sha256": "0ldy9lhh6mirjz02pnrf7z235jz55k4sdysbqxjhfidsszvp9v6w"
+  }
+ },
+ {
+  "ename": "flycheck-swift",
+  "commit": "fd99bea06079c4231363c37e3361bd9e5b1ba490",
+  "sha256": "1s6rn4wyz9la6bw228jfxx8dxjyk5hf8r3vbmq0k808p772zki0z",
+  "fetcher": "github",
+  "repo": "swift-emacs/flycheck-swift",
+  "unstable": {
+   "version": [
+    20170129,
+    549
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "4c5ad401252400a78da395fd56a71e67ff8c2761",
+   "sha256": "094vpmpjq0skhkq634p3zgj3nmsiq1dl8k0z7hzafnaw2y157z1s"
+  },
+  "stable": {
+   "version": [
+    2,
+    0
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "822d1415eabfd464adc52063f9c44da1c87f0ff9",
+   "sha256": "0gf7cxrsrf62kamm4xy1fi4v264szm6qk607ifg4bi5dmdc10b0k"
+  }
+ },
+ {
+  "ename": "flycheck-swift3",
+  "commit": "f1fb8c731c118327dc0bbb726e046fec46bcfb82",
+  "sha256": "05yfrn42svcvdkr8mx16ii8llhzn33lxdawksjqiqg671s6fgdpa",
+  "fetcher": "github",
+  "repo": "GyazSquare/flycheck-swift3",
+  "unstable": {
+   "version": [
+    20191116,
+    1113
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "62c93add8ff65d335f6ef8a3123d2d4f53339df5",
+   "sha256": "0jh8mb9zscj7bzvis6fplc142s7iqy6hhhwfy2lz34yp4n6ap1p0"
+  },
+  "stable": {
+   "version": [
+    3,
+    1,
+    0
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "62c93add8ff65d335f6ef8a3123d2d4f53339df5",
+   "sha256": "0jh8mb9zscj7bzvis6fplc142s7iqy6hhhwfy2lz34yp4n6ap1p0"
+  }
+ },
+ {
+  "ename": "flycheck-swiftlint",
+  "commit": "7e2a979726507e974a0a19dfc2ca6884157025be",
+  "sha256": "1nwxv4l3ml9hlc8qf8a8x1bnnvdj80sb8nfbkcfiqwak315wihr4",
+  "fetcher": "github",
+  "repo": "jojojames/flycheck-swiftlint",
+  "unstable": {
+   "version": [
+    20180830,
+    340
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "8861ddbd9c1c2a951630d9ea29162ad0916580cb",
+   "sha256": "0v1n9q5kcncd9dyfl0xwr378in8law41ciazdfd38ks0xjjppqvh"
+  }
+ },
+ {
+  "ename": "flycheck-swiftx",
+  "commit": "fe5b92702eb8bc9af8f344a4d34c91b69d1e38e2",
+  "sha256": "0f00iir9xxlckn51xs7k72j26jw404nnyyb3kc8wpmy55dhzshw3",
+  "fetcher": "github",
+  "repo": "nhojb/flycheck-swiftx",
+  "unstable": {
+   "version": [
+    20200504,
+    1345
+   ],
+   "deps": [
+    "flycheck",
+    "xcode-project"
+   ],
+   "commit": "1b9174fb37498dc3a3cf8bbbfbb4f0470e8ef139",
+   "sha256": "1qiddgrrf2d0sjmikd9yy53v5vxfh13j1m9qq40ap9vz7x4661va"
+  }
+ },
+ {
+  "ename": "flycheck-tcl",
+  "commit": "fafc86df6c15348711f16302bb86c0ee08c08454",
+  "sha256": "0rmc7rk0n4mgk11jgza1dn1nkjyi7rqs79d3p0cj1081znyj56f3",
+  "fetcher": "github",
+  "repo": "nwidger/flycheck-tcl",
+  "unstable": {
+   "version": [
+    20180327,
+    1259
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "7ca23f4673e178b9f5dcc8a82b86cf05b15d7236",
+   "sha256": "17mmj0yx7d7cwyq35ll1lw4j0yyha172375apvanrkpgpzjpnvrq"
+  }
+ },
+ {
+  "ename": "flycheck-tip",
+  "commit": "024f1e588e94014734fa252ee7bdb00b4991ede9",
+  "sha256": "0zab1zknrnsw5xh5pwzzcpz7p40bbywkf9zx99sgsd6b5j1jz656",
+  "fetcher": "github",
+  "repo": "yuutayamada/flycheck-tip",
+  "unstable": {
+   "version": [
+    20171020,
+    1048
+   ],
+   "deps": [
+    "flycheck",
+    "popup"
+   ],
+   "commit": "9b0072d92e6b4a52834bf5a34120a0f5e1c8c2fd",
+   "sha256": "1adcxz2chy0qcv5z79hhj05gdzk4l0jijy5iy9nd3sg8sclxf6nq"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "deps": [
+    "flycheck",
+    "popup"
+   ],
+   "commit": "0bfddf52ae4ec48d970324f8336a5d62986bbc9e",
+   "sha256": "0azjr5mfb3hnb66m1b2319i035mn5i9qz24y7fj5crhnc9vp8w3s"
+  }
+ },
+ {
+  "ename": "flycheck-title",
+  "commit": "2996b70645cd6fd093e3b31b9586ce5acb036cf6",
+  "sha256": "1cxid9qmzy8pl8qkvr6kgvfqm05pjw8cxpz66x619hbkw2vr7sza",
+  "fetcher": "github",
+  "repo": "Wilfred/flycheck-title",
+  "unstable": {
+   "version": [
+    20170216,
+    2346
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "6faea67be8661faf8152217869d16e993cc2bc49",
+   "sha256": "08b2cq5bzmq9aa8b8glx5js2nhfpgdsd0r2sgvi0ij937yz8lf37"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "2b7a11c39420e517a07d0c95126455c1617f2c61",
+   "sha256": "07p3bwf4mvsdxvqwl9zd35rm6ax6ywqiy8gsh1ag3ygqbmd94cwy"
+  }
+ },
+ {
+  "ename": "flycheck-vale",
+  "commit": "7693eeb536e601589b49f96d0e2734cd08fad4f2",
+  "sha256": "1ny30q81hq62s178rj3jjwsf9f3988dd6pl82r0vq53z3asnsxyd",
+  "fetcher": "github",
+  "repo": "abingham/flycheck-vale",
+  "unstable": {
+   "version": [
+    20190609,
+    1533
+   ],
+   "deps": [
+    "flycheck",
+    "let-alist"
+   ],
+   "commit": "f08249535348d046d0974b9c20fe1b7dd3cd2660",
+   "sha256": "0xjaxckl5rajlxq9a4c9n8l4605n2xkkyd2sdj38kd9w9a428wvz"
+  }
+ },
+ {
+  "ename": "flycheck-vdm",
+  "commit": "f246b9dcf7915a845b9e2cd44cc1a0833b412c8f",
+  "sha256": "15ng1l8gfp8iz50yb5d39dy57763gd2x8j6z6rz0byiykgxhl9zg",
+  "fetcher": "github",
+  "repo": "peterwvj/vdm-mode",
+  "unstable": {
+   "version": [
+    20190304,
+    839
+   ],
+   "deps": [
+    "flycheck",
+    "vdm-mode"
+   ],
+   "commit": "89e7db6ee1a89b8c1f7ce36ce6800c32b5c4ba2d",
+   "sha256": "1vfqkfw39yg7379s6b28n8nyswv1jq7caljfbnyrndsag6z4j50k"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    4
+   ],
+   "deps": [
+    "flycheck",
+    "vdm-mode"
+   ],
+   "commit": "e131edb0d35de28bd47d6128dd70d9a6fc46e0fa",
+   "sha256": "090a0imk7dr6vqq4lf806pvajqc499x2gmi0k7rgc1696rbyzhb5"
+  }
+ },
+ {
+  "ename": "flycheck-xcode",
+  "commit": "5fc66203fdd1721bf1a6f8dcec51694c57d2e690",
+  "sha256": "0n86hn6rf0mrx1385pwxgkx28xrbnksarlzb07h9d63s0yb5shaa",
+  "fetcher": "github",
+  "repo": "jojojames/flycheck-xcode",
+  "unstable": {
+   "version": [
+    20180122,
+    651
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "b76f872c8985801951a095b8b3c1572b94189f9e",
+   "sha256": "1mihq4w8vbcrazx81svx81dnb84ba5h93jxyvaxly5nxxjw1i5bj"
+  }
+ },
+ {
+  "ename": "flycheck-yamllint",
+  "commit": "932ee0a1f13a52d53102b90911da79145208cbb5",
+  "sha256": "1q2sy0hsbnwdlwq99wk8n5gi9fd8bs4jvi859np8bylbhhb3kj8m",
+  "fetcher": "github",
+  "repo": "krzysztof-magosa/flycheck-yamllint",
+  "unstable": {
+   "version": [
+    20170325,
+    1735
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "1e9fe3b2d3e42d551b94473816a8eeee637b446c",
+   "sha256": "1w7b6v1zlq8c95pddx6a2rffmgghv90dpnzz6vczg37hyad3a2np"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "aa211b1243168a4f752888c0014c5b9d2da178b1",
+   "sha256": "1dg2lymb53vp16isdc6k0gq1a43h7vjpksbacskyd4nwmsxaf2bm"
+  }
+ },
+ {
+  "ename": "flycheck-yang",
+  "commit": "e58b4f4294d11424918b399898c0044f5b76ab14",
+  "sha256": "0agfmirjwlz13aq1jh94agav0y1rxkyhj7mngdgys7mwjxy0ac9h",
+  "fetcher": "github",
+  "repo": "andaru/flycheck-yang",
+  "unstable": {
+   "version": [
+    20180312,
+    1831
+   ],
+   "deps": [
+    "flycheck",
+    "yang-mode"
+   ],
+   "commit": "47881fc42ef0163c47064b72b5d6dbef4f83d778",
+   "sha256": "0bkbl1pas44bl6s3xjdb5zjbd6bmfjk39md5ds1ix4wchnkjm3iy"
+  }
+ },
+ {
+  "ename": "flycheck-ycmd",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "114k5y3jy470g5zzhxy03036gcayc08n6g61cidlr2zlyq80glyr",
+  "fetcher": "github",
+  "repo": "abingham/emacs-ycmd",
+  "unstable": {
+   "version": [
+    20181016,
+    618
+   ],
+   "deps": [
+    "dash",
+    "flycheck",
+    "let-alist",
+    "ycmd"
+   ],
+   "commit": "bc81b992f79100c98f56b7b83caf64cb8ea60477",
+   "sha256": "0kwm5q2sv2xrsmnr0gc2fimp6b2cvwh5mhqsmcc3lgs32m4j1kwv"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "deps": [
+    "dash",
+    "flycheck",
+    "let-alist",
+    "ycmd"
+   ],
+   "commit": "d042a673b4d717c3ca9d641f120bfe16c994c740",
+   "sha256": "0rxw86xi9xgr0fp6wmd6hgqgqr9flk7p4lcr0052jhlwknj1nrx0"
+  }
+ },
+ {
+  "ename": "flymake-coffee",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "1aig1d4fgjdg31vrg8k43z5hbqiydgfvxi45p1695s3kbdm8pr2d",
+  "fetcher": "github",
+  "repo": "purcell/flymake-coffee",
+  "unstable": {
+   "version": [
+    20170723,
+    146
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "dee295acf30820ed15fe0de17137d50bc27fc80c",
+   "sha256": "0706jbi3jcmffxmcpvh8w3007q8sh48kgrcjip5c9hhfqpagayld"
+  },
+  "stable": {
+   "version": [
+    0,
+    12
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "d4ef325255ea36d1dd622f29284fe72c3fc9abc0",
+   "sha256": "1svj5n7mmzhq03azlv4n33rz0nyqb00qr8ihdbc8hh2xnp63j5rc"
+  }
+ },
+ {
+  "ename": "flymake-cppcheck",
+  "commit": "2a83d56c6e150de5d4fdbd89f271f18e5304afd8",
+  "sha256": "11brzgq2zl32a8a2dgj2imsldjqaqvxwk2jypf4bmfwa3mkcqh3d",
+  "fetcher": "github",
+  "repo": "senda-akiha/flymake-cppcheck",
+  "unstable": {
+   "version": [
+    20140415,
+    1257
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "7eac8c7b9c74ebb5e600686f1f3891767dc87bb2",
+   "sha256": "1xwpznllgz47f6h7mzwy601179sxdj6i8qvnfa6fn4cx4dz5z3iv"
+  }
+ },
+ {
+  "ename": "flymake-css",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "0kqm3wn9symqc9ivnh11gqgq8ql2bhpqvxfm86d8vwm082hd92c5",
+  "fetcher": "github",
+  "repo": "purcell/flymake-css",
+  "unstable": {
+   "version": [
+    20170723,
+    146
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "de090163ba289910ceeb61b13368ce42d0f2dfd8",
+   "sha256": "18rqzah8p7mqwkddaav1d4r146amvn8jppazvsvc5vs01syj83m9"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "3e56d47d3c53e39741aa4f702bb9fb827cce22ed",
+   "sha256": "054ws88fcfz3hf3cha7dvndm52v5n4jc4vzif1lif44xq0iggwqa"
+  }
+ },
+ {
+  "ename": "flymake-cursor",
+  "commit": "a02597edee67c84bef259d7fc5c5b61bd39a5b86",
+  "sha256": "0v5abg3h9kmybr0cyr7hqy4rn88h84snzxbsmqcbjw24s10v9p0s",
+  "fetcher": "github",
+  "repo": "flymake/emacs-flymake-cursor",
+  "unstable": {
+   "version": [
+    20120322,
+    1757
+   ],
+   "deps": [
+    "flymake"
+   ],
+   "commit": "ecc539082c3fc9e91bba33d72c26989217411593",
+   "sha256": "0cdf5m3rfwsim505qjyyml0r5zzqx7jrlc8ayfvix70f3bmxnibs"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    2
+   ],
+   "deps": [
+    "flymake"
+   ],
+   "commit": "5cac5045398b1436ceb143d48961b50d38ae1396",
+   "sha256": "0xaq8zfd90kqqwg8ik081jblrdyj6p3fh2xpf6a4sdj8826ry93v"
+  }
+ },
+ {
+  "ename": "flymake-diagnostic-at-point",
+  "commit": "b7ae169ca3b59d3b876d52148dac573b7f083ac3",
+  "sha256": "0cdxb9w5sq6z6wramj1bss5vwqzxkmdyzb1di39rghyh243cdrzx",
+  "fetcher": "github",
+  "repo": "meqif/flymake-diagnostic-at-point",
+  "unstable": {
+   "version": [
+    20180815,
+    1004
+   ],
+   "deps": [
+    "popup"
+   ],
+   "commit": "379616b1c6f5ebeaf08fbe54ae765008a78b3be7",
+   "sha256": "1wbzrxxz5z1xg2lwmqgglvixxf1xm3gl6mdyj9idsbym05azm3hg"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    0
+   ],
+   "deps": [
+    "popup"
+   ],
+   "commit": "379616b1c6f5ebeaf08fbe54ae765008a78b3be7",
+   "sha256": "1wbzrxxz5z1xg2lwmqgglvixxf1xm3gl6mdyj9idsbym05azm3hg"
+  }
+ },
+ {
+  "ename": "flymake-easy",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0y7nm2p5x1f0nqfj73zr6xzbpf4wrzx8sn8154yx0qm0qh3id39v",
+  "fetcher": "github",
+  "repo": "purcell/flymake-easy",
+  "unstable": {
+   "version": [
+    20140818,
+    755
+   ],
+   "commit": "de41ea49503f71f997e5c359a2ad08df696c0147",
+   "sha256": "1mylcsklnv3q27q1gvf7wrila39rmxab1ypmvjh5p56d91y6pszc"
+  },
+  "stable": {
+   "version": [
+    0,
+    10
+   ],
+   "commit": "2a24f260cdc3b9c8f9263b653a475d90efa1d392",
+   "sha256": "1j35k52na02b59yglfb48w6m5qzydvzqfsylb8ax5ks0f287yf0c"
+  }
+ },
+ {
+  "ename": "flymake-elixir",
+  "commit": "05dae578f0dd6b5185f666431b3f36aad3aeffa1",
+  "sha256": "15r3m58hnc75l3j02xdr8yg25fbn2sbz1295ac44widzis82m792",
+  "fetcher": "github",
+  "repo": "syl20bnr/flymake-elixir",
+  "unstable": {
+   "version": [
+    20130810,
+    1417
+   ],
+   "commit": "3810566cffe35d04cc3f01e27fe397d68d52f802",
+   "sha256": "04w6g4wixrpfidxbk2bwazhvf0cx3c2v2mxnycqqlqkg0m0sb0fn"
+  }
+ },
+ {
+  "ename": "flymake-eslint",
+  "commit": "1b607c3b859f4564e316532a256a299c73e5f6f0",
+  "sha256": "0avirxxgjk3k8hqpnhay83ij7s3xr4ha4wz5lji1zyx6f6im6gyb",
+  "fetcher": "github",
+  "repo": "orzechowskid/flymake-eslint",
+  "unstable": {
+   "version": [
+    20191129,
+    1558
+   ],
+   "commit": "6e2d376f84ddf9af593072954c97e9c82ab85331",
+   "sha256": "1pkigdarkjk2gpqjrfavg68bwihaazjzf1rr9fmrqkgis5hz3zf7"
+  },
+  "stable": {
+   "version": [
+    1,
+    5,
+    0
+   ],
+   "commit": "6e2d376f84ddf9af593072954c97e9c82ab85331",
+   "sha256": "1pkigdarkjk2gpqjrfavg68bwihaazjzf1rr9fmrqkgis5hz3zf7"
+  }
+ },
+ {
+  "ename": "flymake-gjshint",
+  "commit": "b4673825b15519e9eb2204ade5cc045751771c52",
+  "sha256": "19jcd5z4883z3fzlrdn4fzmsvn16f4hfnhgw4vbs5b0ma6a8ka44",
+  "fetcher": "github",
+  "repo": "yasuyk/flymake-gjshint-el",
+  "unstable": {
+   "version": [
+    20130327,
+    1232
+   ],
+   "commit": "dc957c14cb060819585de8aedb330e24efa4b784",
+   "sha256": "14kbqyw4v1c51dx7pfgqbn8x4j8j3rgyyq2fa9klqzxpldcskl24"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    6
+   ],
+   "commit": "71495ee5303de18293decd57ab9f9abdbaabfa05",
+   "sha256": "002s01cymgx4z4l3j2pqirg7899pljdx2hmbz8k6cksdxlymzmkd"
+  }
+ },
+ {
+  "ename": "flymake-go",
+  "commit": "b42b8b34388803439c249f16fdf14257ef182ed6",
+  "sha256": "030m67d8g60ljm7ny3jh4vwj3cshypsklgbjpcvh32y109ga1hy1",
+  "fetcher": "github",
+  "repo": "robert-zaremba/flymake-go",
+  "unstable": {
+   "version": [
+    20150714,
+    733
+   ],
+   "commit": "ae83761aa908c1a50ff34af04f00dcc46bca2ce9",
+   "sha256": "03gh0y988pksghmmvb5av2vnlbcsncafvn4nwihsis0bhys8k28q"
+  }
+ },
+ {
+  "ename": "flymake-go-staticcheck",
+  "commit": "5c358f178a2debf621e11050334d5def87439230",
+  "sha256": "1rm63fgsn5iss1nbc33wc19g3lzzvrm97wgq9hgxvwq2j8m2y87i",
+  "fetcher": "github",
+  "repo": "s-kostyaev/flymake-go-staticcheck",
+  "unstable": {
+   "version": [
+    20190708,
+    1325
+   ],
+   "commit": "130079fcd29c3e2a72f8325f3041042bcc6286f1",
+   "sha256": "1wxsk6vy9hm8gi5cvhmxmqv9415q8k2yp8636s4fb1xcp1zalysk"
+  }
+ },
+ {
+  "ename": "flymake-golangci",
+  "commit": "76c98b2e204eb2a733295037cbf13b60d1cad97b",
+  "sha256": "13p29d7b3pchyiw1rbdaif7h6jhzfg635ix8z2kzkqg9bvkxxr7y",
+  "fetcher": "gitlab",
+  "repo": "shackra/flymake-golangci",
+  "unstable": {
+   "version": [
+    20191028,
+    1927
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "dfc31a1a6ae3f087b49fe6f5f21b3866780aa91c",
+   "sha256": "1py7ssjz4q5r28c8lzga5qi8x4gmdg3z0ga0cyskiba6krvv45ry"
+  }
+ },
+ {
+  "ename": "flymake-google-cpplint",
+  "commit": "01f8e5c2b63e80f0411860fde38bf694df3bfc8f",
+  "sha256": "0q7v70xbprh03f1yabq216q4q82a58s2c1ykr6ig49cg1jdgzkf3",
+  "fetcher": "github",
+  "repo": "senda-akiha/flymake-google-cpplint",
+  "unstable": {
+   "version": [
+    20140205,
+    1325
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "426e56ae1278d7a078c368e9d495003825ada0bd",
+   "sha256": "1gckz68050pj9pg7yn3wwn13x2nrv6y4ggswkgcyijxi7x0sqana"
+  }
+ },
+ {
+  "ename": "flymake-gradle",
+  "commit": "7cccc8537324e0faf7fd35325e3ccd3b2e05771a",
+  "sha256": "00wpymzw2j2zx37nq8qf77pk04r0hxlmlwykcj6yzq9bfgi75wnf",
+  "fetcher": "github",
+  "repo": "jojojames/flymake-gradle",
+  "unstable": {
+   "version": [
+    20190315,
+    233
+   ],
+   "commit": "dbedd29b78d4828ef57d4de20867be5df3eaab99",
+   "sha256": "0g6h09lz68b4dvqv5sksr7gkab0599fbm07xnc2mk01lzbas43b0"
+  }
+ },
+ {
+  "ename": "flymake-haml",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "0dmdhh12h4xrx6mc0qrwavngk2sx0l4pfqkjjyavabsgcs9wlgp1",
+  "fetcher": "github",
+  "repo": "purcell/flymake-haml",
+  "unstable": {
+   "version": [
+    20170723,
+    146
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "22a81e8484734552d461e7ae7305664dc244447e",
+   "sha256": "0pgp2gl3wdwrzcik5b5csn4qp8iv6pc51brx8p7jrwn7bz4lkb82"
+  },
+  "stable": {
+   "version": [
+    0,
+    8
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "343449920866238db343d61343bc845cc8bc5e1b",
+   "sha256": "1b3lf5jwan03k7rb97g4bb982dacdwsfdddnwc0inx9gs3qq1zni"
+  }
+ },
+ {
+  "ename": "flymake-haskell-multi",
+  "commit": "e879eca5eb11b2ae77ee2cb8d8150d85e9e93ebd",
+  "sha256": "0cyzmmghwkkv6020s6n436lwymi6dr49i7gkci5n0hw5pdywcaij",
+  "fetcher": "github",
+  "repo": "purcell/flymake-haskell-multi",
+  "unstable": {
+   "version": [
+    20170723,
+    146
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "b564a94312259885b1380272eb867bf52a164020",
+   "sha256": "1h21hy5fjwa5qxl31rq3jjp3wwkipdwaliq0ci184rw48kw51xjh"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "d2c9aeffd33440d360c1ea0c5aef6d1f171599f9",
+   "sha256": "0k1qc0r0gr7f9l5if2a67cv4k73z5yxd6vxd6l1bqw500y0aajxz"
+  }
+ },
+ {
+  "ename": "flymake-hlint",
+  "commit": "17820f32d46e845cc44b237d0bfd5c2d898721de",
+  "sha256": "0wq1ijhn3ypy31yk8jywl5hnz0r0vlhcxjyznzccwqbdc5vf7b2x",
+  "fetcher": "github",
+  "repo": "purcell/flymake-hlint",
+  "unstable": {
+   "version": [
+    20170723,
+    146
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "f910736b26784efc9a2fa29503f45c1f1dd0aa38",
+   "sha256": "157f2l6hllwl12h8f502rq2kl33s202k9bcyfy2cmnn6vhky1b8s"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "d540e250a80a09da3036c16bf86f9deb6d738c9c",
+   "sha256": "1ygg51r4ym4x7h4svizwllsvr72x9np6jvjqpk8ayv3w2fpb9l31"
+  }
+ },
+ {
+  "ename": "flymake-joker",
+  "commit": "1b40ad24abac91b6beb550e743cdcece8c3ab849",
+  "sha256": "1wflpdqdczjsvkqnlr6p4qv1s7865lr4gpm9aq7gcfqwb0fm7pbw",
+  "fetcher": "github",
+  "repo": "beetleman/flymake-joker",
+  "unstable": {
+   "version": [
+    20200315,
+    1429
+   ],
+   "deps": [
+    "flymake-quickdef"
+   ],
+   "commit": "fc132beedac9e6f415b72e578e77318fd13af9ee",
+   "sha256": "1pqi6d1kgn5s6bkabi8jxk26ffwqq7g3rl3xgas49rn9vgqwqmq1"
+  }
+ },
+ {
+  "ename": "flymake-jshint",
+  "commit": "144511ce3378b468751b1ee627b77a2d22fe8dfc",
+  "sha256": "0j4djylz6mrq14qmbm35k3gvvsw6i9qc4gd9ma4fykiqzkdjsg7j",
+  "fetcher": "github",
+  "repo": "Wilfred/flymake-jshint.el",
+  "unstable": {
+   "version": [
+    20140319,
+    2200
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "79dd554c227883c487db38ac111306c8d5382c95",
+   "sha256": "0ywm9fpb7d7ry2fly8719fa41q97yj9za3phqhv6j1chzaxvcv3a"
+  }
+ },
+ {
+  "ename": "flymake-jslint",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "1cq8fni4p0qhigx0qh34ypmcsbnilra1ixgnrn9mgg8x3cvcm4cm",
+  "fetcher": "github",
+  "repo": "purcell/flymake-jslint",
+  "unstable": {
+   "version": [
+    20170723,
+    146
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "8edb82be605542b0ef62d38d818adcdde335eecb",
+   "sha256": "0i6bqpbibsbqhpqfy9zl0awiqkmddi3q8xlrslcjd429f0g5f1ad"
+  },
+  "stable": {
+   "version": [
+    0,
+    23
+   ],
+   "commit": "30693f75059bab53a9d2eb676c68751f4d8b091c",
+   "sha256": "00zkm3wqlss386qd6jiq0siga7c48n5ykh0vf9q5v83rmpd79yri"
+  }
+ },
+ {
+  "ename": "flymake-json",
+  "commit": "acb0a4d29159aa6d74f754911f63152dac3425bd",
+  "sha256": "1p5kajiycpqy2id664bs0fb1mbf73a43qqfdi4c57n6j9x7fxp4d",
+  "fetcher": "github",
+  "repo": "purcell/flymake-json",
+  "unstable": {
+   "version": [
+    20180511,
+    911
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "ae58795f948402e987cda4c15f10354f8ec2d0fd",
+   "sha256": "1hr35xxj6w34h7xs13n6sxs69j3z3i0r1qim3hgyiym797xjsa0p"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "ad8e482db1ad29e23bdd9d089b9bc3615649ce65",
+   "sha256": "0rzlw80mi39147yqnpzcvw9wvr5svksd3kn6s3w8191f2kc6xzzv"
+  }
+ },
+ {
+  "ename": "flymake-ktlint",
+  "commit": "7b2e630e5e16044fb8ffe251f4fa58fb8f3d6bb9",
+  "sha256": "07v90pkhmrz59m6hf1lzxq4h3kk4qblihw4qgz5phbj4l5pahivd",
+  "fetcher": "github",
+  "repo": "jojojames/flymake-ktlint",
+  "unstable": {
+   "version": [
+    20180831,
+    346
+   ],
+   "commit": "56aab6f2d22061999050783dbc3166cdb456d0bb",
+   "sha256": "1nri5rq28plaq69a5k5kx65rzk8yyppyqpjhjicr7dqaa00ibnwy"
+  }
+ },
+ {
+  "ename": "flymake-less",
+  "commit": "6d4eae8b7b7d81ebf4d85f38fc3a17b4bc918318",
+  "sha256": "05k5daphxy94164c73ia7f4l1gv2cmlw8xzs8xnddg7ly22gjhi0",
+  "fetcher": "github",
+  "repo": "purcell/flymake-less",
+  "unstable": {
+   "version": [
+    20151111,
+    738
+   ],
+   "deps": [
+    "flymake-easy",
+    "less-css-mode"
+   ],
+   "commit": "32d3c28a9a5c52b82d1741ff9d715013b6498421",
+   "sha256": "0ggi8a4j4glpsar0sqg8q06rscajjaziis5ann31wphx88rc5wd7"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "less-css-mode"
+   ],
+   "commit": "8cbb5e41c8f4b988cee3ef4449cfa9aea3540893",
+   "sha256": "0ggvmsjj6p6a7cwr2bzhlcf8ab4v6a2bz5djsscd2ryy570p367z"
+  }
+ },
+ {
+  "ename": "flymake-lua",
+  "commit": "63889df90a8cd4a39871cc43ccc559eff7b8dd5f",
+  "sha256": "05q6bifr1ywirk6sdn0pr812nlrzsi79bpbgn6ay4jyzmhhfi9z0",
+  "fetcher": "github",
+  "repo": "sroccaserra/flymake-lua",
+  "unstable": {
+   "version": [
+    20170129,
+    154
+   ],
+   "commit": "84589f20066921a5b79cf3a1f914a223a2552d2a",
+   "sha256": "1f4nigl65g1g5w15ddf33ypk2b07xph964pkdq1bw81451vmvzhn"
+  }
+ },
+ {
+  "ename": "flymake-perlcritic",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "1i0bc81cby2nsala2mhghzv7clhbf1gpp54vdxiq2wdanqy25vmk",
+  "fetcher": "github",
+  "repo": "flymake/emacs-flymake-perlcritic",
+  "unstable": {
+   "version": [
+    20120328,
+    814
+   ],
+   "deps": [
+    "flymake"
+   ],
+   "commit": "edfaa86500ddfa8a6a6f51f5581a81a821277df6",
+   "sha256": "1f4l2r4gp03s18255jawc7s5abpjjrw54937wzygmvzvqvmaiikj"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    3
+   ],
+   "deps": [
+    "flymake"
+   ],
+   "commit": "0692d6ad5495f6e5438bde0a10345829b8e1def8",
+   "sha256": "11r982h5fhjkmm9ld8wfdip0ghinw523nm1w4fmy830g0bbkgkrq"
+  }
+ },
+ {
+  "ename": "flymake-pest",
+  "commit": "747e1b060e3aa78b91d61abcf2c9a4dc0d4aaf7e",
+  "sha256": "17bsvrd1g7d5b0z5psx0bvg2ym0bi7dh1vvl8a45dnzpig141f36",
+  "fetcher": "github",
+  "repo": "ksqsf/pest-mode",
+  "unstable": {
+   "version": [
+    20200317,
+    1503
+   ],
+   "deps": [
+    "pest-mode"
+   ],
+   "commit": "4ae88a9c81d499bbe99978ff0216b645fed70023",
+   "sha256": "1zc7dmgp3s9q33wkvw6i7zzlcaa65ixx3hxb78m62lk2a7fzb3ih"
+  }
+ },
+ {
+  "ename": "flymake-php",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "12ds2l5kvs7fz38syp4amasbjkpqd36rlpajnb3xxll0hbk6vffk",
+  "fetcher": "github",
+  "repo": "purcell/flymake-php",
+  "unstable": {
+   "version": [
+    20170723,
+    146
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "c045d01e002ba5e09b05f40e25bf5068d02126bc",
+   "sha256": "03fk8kzlwbs9k91ra91r7djxlpv5mhbha33dnyz50sqwa52cg8ck"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "91f867e209011af31a2ca2d8f6874b994403bcb2",
+   "sha256": "0dzyid0av9icp77wv0zcsygpw46z24qibq1ra0iwnkzl3kqvkyzh"
+  }
+ },
+ {
+  "ename": "flymake-phpcs",
+  "commit": "6e4d444198f593cfb03c7ca84f3e90db13ef5a01",
+  "sha256": "0zzxi3c203fiw6jp1ar9bb9f28x2lg23bczgy8n5cicrq59jfsn9",
+  "fetcher": "github",
+  "repo": "senda-akiha/flymake-phpcs",
+  "unstable": {
+   "version": [
+    20140713,
+    631
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "bba25dbda15955b609ceae0893cf3be74ec67230",
+   "sha256": "1z6m3bggd3gmxvx92j16jmqm5h9jjxnmsd7adyf12ziy5n5rqcbc"
+  }
+ },
+ {
+  "ename": "flymake-phpstan",
+  "commit": "bc0ea837b6813002826d861acb7f3cc506c337ba",
+  "sha256": "0fg2skkzd9xn42a5jdxg69bjg0jw26p5jrq6i5v815vgisxfgjbv",
+  "fetcher": "github",
+  "repo": "emacs-php/phpstan.el",
+  "unstable": {
+   "version": [
+    20200415,
+    1637
+   ],
+   "deps": [
+    "phpstan"
+   ],
+   "commit": "2f715a186c5fe6576de83d4c0b64a37e2bfce101",
+   "sha256": "03ix2s068pzmybj0fcb08dlfgdqw0pmqhbdf4id2077f67bfad0w"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "deps": [
+    "phpstan"
+   ],
+   "commit": "bf9e82a63f2ccb12af02c9e79a83e7989eeb7cb1",
+   "sha256": "15kv5xv6lcfgf048wr2zsnpvrplbxypy3wq56zvrzbq18hwprqg1"
+  }
+ },
+ {
+  "ename": "flymake-puppet",
+  "commit": "302dbe34e7949da9c65e9c7bf2ab924db91b968f",
+  "sha256": "1izq6s33p74dy4wzfnjii8wjs723bm5ggl0w6hkvzgbmyjc01hxv",
+  "fetcher": "github",
+  "repo": "benprew/flymake-puppet",
+  "unstable": {
+   "version": [
+    20170801,
+    554
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "8a772395f4ccc59d883712ab53a92a17c1d9a429",
+   "sha256": "00w87qa7r8rigmpv58vpjwpn9x13sv7db5m6z4cqh76qkgkghgqi"
+  }
+ },
+ {
+  "ename": "flymake-python-pyflakes",
+  "commit": "49091c0eca4158b80269b6ff5f7f3fc8e981420b",
+  "sha256": "0asbjxv03zkbcjayanv13qzbv4z7b6fi0z1j6yv7fl6q9mgvm497",
+  "fetcher": "github",
+  "repo": "purcell/flymake-python-pyflakes",
+  "unstable": {
+   "version": [
+    20170723,
+    146
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "1d65c26bf65a5dcbd29fcd967e2feb90e1e7a33d",
+   "sha256": "0hsvw6rxg3k1ymrav0bf5q3siqr9v2jp4c4h1f98szrj2lp200fm"
+  },
+  "stable": {
+   "version": [
+    0,
+    9
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "78806a25b0f01f03df4210a79a6eaeec59511d7a",
+   "sha256": "0l8qpcbzfi32h3vy7iwydx3hg2w60x9l3v3rabzjx412m5d00gsh"
+  }
+ },
+ {
+  "ename": "flymake-quickdef",
+  "commit": "8e9d6121472d6a82ac5371bef7dc2dbe5acfc63f",
+  "sha256": "08w8i5rr3g7rwmrr29rah1rh68mpvfbabsik81vxlzpq1c7hhqk5",
+  "fetcher": "github",
+  "repo": "karlotness/flymake-quickdef",
+  "unstable": {
+   "version": [
+    20200308,
+    2342
+   ],
+   "commit": "150c5839768a3d32f988f9dc08052978a68f2ad7",
+   "sha256": "19gfd539l97j8xbrq1fw83b54mxbcamlz9m896088d3p01zf8b0g"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "150c5839768a3d32f988f9dc08052978a68f2ad7",
+   "sha256": "19gfd539l97j8xbrq1fw83b54mxbcamlz9m896088d3p01zf8b0g"
+  }
+ },
+ {
+  "ename": "flymake-racket",
+  "commit": "67f2b469ea8df6d0db6b9ece91f544c0e7dd3ab2",
+  "sha256": "173dyn8bxggyh0g97gg5f0si3905116i3k6s3islsblgrz00gjcn",
+  "fetcher": "github",
+  "repo": "jojojames/flymake-racket",
+  "unstable": {
+   "version": [
+    20180912,
+    109
+   ],
+   "commit": "d20fa60d66db3f7c2df0133814564ee5b36d2aba",
+   "sha256": "0fdrlzvznpqfyzy6v7rz4cj83fhdcpyhy37l7jjbb91cqqk2hjc2"
+  }
+ },
+ {
+  "ename": "flymake-ruby",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "1shr6d03vx85nmyxnysglzlc1pz0zy3n28nrcmxqgdm02g197bzr",
+  "fetcher": "github",
+  "repo": "purcell/flymake-ruby",
+  "unstable": {
+   "version": [
+    20170723,
+    146
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "6c320c6fb686c5223bf975cc35178ad6b195e073",
+   "sha256": "0hzyxhg6y1rknvgj2ycivwrlrw7fznw9jrin5n9z627mzpjpfcnk"
+  },
+  "stable": {
+   "version": [
+    0,
+    8
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "e14e8e2abda223bd3920dbad0eefd5af5973ae6d",
+   "sha256": "0d2vmpgr5c2cbpxcqm5x1ckfysbpwcbaa9frcnp2yfp8scvkvqj0"
+  }
+ },
+ {
+  "ename": "flymake-rust",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "0fgpkz1d4y2ywizwwrhqdqncdmhdnbgf3mcv3hjpa82x44yb7j32",
+  "fetcher": "github",
+  "repo": "jxs/flymake-rust",
+  "unstable": {
+   "version": [
+    20170729,
+    2139
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "2f42d1f2dad73ec9de460eda6176e3ab25c446f0",
+   "sha256": "02fgkv9hxwrv8n5h6izb5jyjcpazlf86pjjj4zkv1ycpa6gyzzwn"
+  }
+ },
+ {
+  "ename": "flymake-sass",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "0sz6n5r9pdphgvvaljg9zdwj3dqayaxzxmb4s8x4b05c8yx3ba0d",
+  "fetcher": "github",
+  "repo": "purcell/flymake-sass",
+  "unstable": {
+   "version": [
+    20170723,
+    146
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "2de28148e92deb93bff3d55fe14e7c67ac476056",
+   "sha256": "05v83l05knqv2inharmhjvzmjskjlany7dnwp5dz44bvy0jhnm39"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "1c7664818db539de7f3dab396c013528a3f5b8b4",
+   "sha256": "0c74qdgy9c4hv3nyjnbqdzypbg9399vq3p5ngp5lasc7iz6vi0h8"
+  }
+ },
+ {
+  "ename": "flymake-shell",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "13ff4r0k29yqgx8ybxz7hh50cjsadcjb7pd0075s9xcrzia5x63i",
+  "fetcher": "github",
+  "repo": "purcell/flymake-shell",
+  "unstable": {
+   "version": [
+    20170723,
+    146
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "a16cf453056b9849cc7c912bb127fb0b08fc6dab",
+   "sha256": "1ki0zk5ijfkf4blavl62b55jnjzxw2b7blaxg51arpvvbflqmmlh"
+  },
+  "stable": {
+   "version": [
+    0,
+    8
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "ec097bd77db5523a04ceb15a128e01689d36fb90",
+   "sha256": "0c2lz1p91yhprmlbmp0756d96yiy0w92zf0c9vlp0i9abvd0cvkc"
+  }
+ },
+ {
+  "ename": "flymake-shellcheck",
+  "commit": "8dccb106ff6c9cb4b14440be9026c3e427dddff2",
+  "sha256": "1gvm4sh1sga3gkkg0zi7ynvp9b09sx16cclj2qzawmgfv2c111vy",
+  "fetcher": "github",
+  "repo": "federicotdn/flymake-shellcheck",
+  "unstable": {
+   "version": [
+    20200329,
+    2005
+   ],
+   "commit": "78956f0e5bb9c4d35989657a55929e8e3f5691e6",
+   "sha256": "068mx5p4drwgppy4ry1rfq6qi79w6d82b4rnpl2jm37grsg94lix"
+  }
+ },
+ {
+  "ename": "flymake-solidity",
+  "commit": "3b13f57b77f6648336a049a8dda37757d4dafd90",
+  "sha256": "10d1g14y3l670lqgfdsnyxanzcjs2jpgnliih56n1xhcpyz551l3",
+  "fetcher": "github",
+  "repo": "kootenpv/flymake-solidity",
+  "unstable": {
+   "version": [
+    20170805,
+    644
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "48bfe9525f764d8a68cc0270905dbf45bfd00bb8",
+   "sha256": "0v8sf5m0mygqahjyadxgffdf7p59wb0qnghyxajhc69sbg58hnnd"
+  }
+ },
+ {
+  "ename": "flymake-vala",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1fs4alyf3dckdf1pm6vgh4wjpl22wrlhfx9nv072l0dg48zgyw16",
+  "fetcher": "github",
+  "repo": "daniellawrence/flymake-vala",
+  "unstable": {
+   "version": [
+    20150326,
+    531
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "c3674f461fc84fb0300cd3a562fb903a59782745",
+   "sha256": "0qpr0frcn3w0f6yz8vgavwbxvn6wb0qkfk653v4cfy57dvslr4wf"
+  }
+ },
+ {
+  "ename": "flymake-vnu",
+  "commit": "0cfb4c70ebb75088ef6fb39efde91429802b4671",
+  "sha256": "05i6sfylg716cr0k0hyvkmag25qcqh51plljv6sw8250fwxwn0xn",
+  "fetcher": "github",
+  "repo": "theneosloth/flymake-vnu",
+  "unstable": {
+   "version": [
+    20181128,
+    216
+   ],
+   "commit": "7c4ab9d12611756ad5a80d866890b2f9b73fb611",
+   "sha256": "1jzdypfbvdbm9z6ankl35bzlpf32iymzlvxmdykddzwzbhkj1npf"
+  }
+ },
+ {
+  "ename": "flymake-yaml",
+  "commit": "888bcbcb24866abd990abd5b467461a1e1fc13fa",
+  "sha256": "17wghm797np4hlidf3wwb47w4klwc6qyk6ry1z05psl3nykws1g7",
+  "fetcher": "github",
+  "repo": "yasuyk/flymake-yaml",
+  "unstable": {
+   "version": [
+    20130423,
+    1548
+   ],
+   "deps": [
+    "flymake-easy"
+   ],
+   "commit": "24cb5b744a1796e554e6dbfc6eeb237d06a00b10",
+   "sha256": "0mdam39a85csi9b90wak9j3zkd25lj6x54affwkg3fym8yphmplm"
+  }
+ },
+ {
+  "ename": "flymd",
+  "commit": "07e4121f4cfaf4c33828f84b6b06f9cf2b64a0a2",
+  "sha256": "16wq34xv7hswbxw5w9wnnsw2mhc9qzhmaa6aydhh32blcszhp4rk",
+  "fetcher": "github",
+  "repo": "mola-T/flymd",
+  "unstable": {
+   "version": [
+    20160617,
+    1214
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "84d5a68bcfed4a295952c33ffcd11e880978d9d7",
+   "sha256": "0j2mmr9f0d3zkhb92zc820iw4vkz958rm3ca7l9k3gx37cc4sn2l"
+  }
+ },
+ {
+  "ename": "flyparens",
+  "commit": "8c4565ae5b84eb8733cb7fd28cf6a087fd1fedab",
+  "sha256": "1mvbfq062qj8vmgzk6rymg3idlfc1makfp1scmjvpw98h30j2a0a",
+  "fetcher": "github",
+  "repo": "jiyoo/flyparens",
+  "unstable": {
+   "version": [
+    20140723,
+    1846
+   ],
+   "commit": "af9b8cfd647d0e5f97684d613dc2eea7cfc19398",
+   "sha256": "07hy1kyw4cbxydmhp4scsy3dcbk2s50rmdp8rch1vbcjk5lj4mvb"
+  }
+ },
+ {
+  "ename": "flyspell-correct",
+  "commit": "fa06fbe3bc40ae5e3f6d10dee93a9d49e9288ba5",
+  "sha256": "0d2205h234na9s942s83yvkq89l9w9jnl5yfrxkkdiq8pw0dvymd",
+  "fetcher": "github",
+  "repo": "d12frosted/flyspell-correct",
+  "unstable": {
+   "version": [
+    20200215,
+    1408
+   ],
+   "commit": "76b2b4bc9d6d8e9c6b1f41ed7f887eddb6ac6e13",
+   "sha256": "0zapn6508iafm61z2y2bxcydd45kg5hgx39zm6g6qhvq92ysj2cf"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    1
+   ],
+   "commit": "7b4cf8c9ba5ac65e3bb2b62f5b72d45f4c9cf7b6",
+   "sha256": "1m5da6r82hk0c2x3lw03qnkk79sx67875afw0ybblj3cmfk6szd1"
+  }
+ },
+ {
+  "ename": "flyspell-correct-avy-menu",
+  "commit": "be7986f018c7029a8e581059bec31ed23a464e0a",
+  "sha256": "1mwdg1q7818kl5r9rnsqd11p9b2clcm0bxph4i1rll9rvggfgjp6",
+  "fetcher": "github",
+  "repo": "d12frosted/flyspell-correct",
+  "unstable": {
+   "version": [
+    20200215,
+    1337
+   ],
+   "deps": [
+    "avy-menu",
+    "flyspell-correct"
+   ],
+   "commit": "76b2b4bc9d6d8e9c6b1f41ed7f887eddb6ac6e13",
+   "sha256": "0zapn6508iafm61z2y2bxcydd45kg5hgx39zm6g6qhvq92ysj2cf"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    1
+   ],
+   "deps": [
+    "avy-menu",
+    "flyspell-correct"
+   ],
+   "commit": "7b4cf8c9ba5ac65e3bb2b62f5b72d45f4c9cf7b6",
+   "sha256": "1m5da6r82hk0c2x3lw03qnkk79sx67875afw0ybblj3cmfk6szd1"
+  }
+ },
+ {
+  "ename": "flyspell-correct-helm",
+  "commit": "ef7b9302d8f804c77eb81fee7ed27f13cb1176f6",
+  "sha256": "18s2bzszy6x31avqg7j2lsll2cf4asb8njwhmx4mm215agack976",
+  "fetcher": "github",
+  "repo": "d12frosted/flyspell-correct",
+  "unstable": {
+   "version": [
+    20200215,
+    1337
+   ],
+   "deps": [
+    "flyspell-correct",
+    "helm"
+   ],
+   "commit": "76b2b4bc9d6d8e9c6b1f41ed7f887eddb6ac6e13",
+   "sha256": "0zapn6508iafm61z2y2bxcydd45kg5hgx39zm6g6qhvq92ysj2cf"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    1
+   ],
+   "deps": [
+    "flyspell-correct",
+    "helm"
+   ],
+   "commit": "7b4cf8c9ba5ac65e3bb2b62f5b72d45f4c9cf7b6",
+   "sha256": "1m5da6r82hk0c2x3lw03qnkk79sx67875afw0ybblj3cmfk6szd1"
+  }
+ },
+ {
+  "ename": "flyspell-correct-ivy",
+  "commit": "ef7b9302d8f804c77eb81fee7ed27f13cb1176f6",
+  "sha256": "1n5iyab6bj761w6vxncyqvqzwh9k60pzq5f2n00ifrz74pqs537i",
+  "fetcher": "github",
+  "repo": "d12frosted/flyspell-correct",
+  "unstable": {
+   "version": [
+    20200513,
+    708
+   ],
+   "deps": [
+    "flyspell-correct",
+    "ivy"
+   ],
+   "commit": "76b2b4bc9d6d8e9c6b1f41ed7f887eddb6ac6e13",
+   "sha256": "0zapn6508iafm61z2y2bxcydd45kg5hgx39zm6g6qhvq92ysj2cf"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    1
+   ],
+   "deps": [
+    "flyspell-correct",
+    "ivy"
+   ],
+   "commit": "7b4cf8c9ba5ac65e3bb2b62f5b72d45f4c9cf7b6",
+   "sha256": "1m5da6r82hk0c2x3lw03qnkk79sx67875afw0ybblj3cmfk6szd1"
+  }
+ },
+ {
+  "ename": "flyspell-correct-popup",
+  "commit": "ef7b9302d8f804c77eb81fee7ed27f13cb1176f6",
+  "sha256": "1fr8ajwldcl58i8xm31dz1mjwbi9f4q8s58x5jrqhqha0x4p4h9l",
+  "fetcher": "github",
+  "repo": "d12frosted/flyspell-correct",
+  "unstable": {
+   "version": [
+    20200204,
+    521
+   ],
+   "deps": [
+    "flyspell-correct",
+    "popup"
+   ],
+   "commit": "76b2b4bc9d6d8e9c6b1f41ed7f887eddb6ac6e13",
+   "sha256": "0zapn6508iafm61z2y2bxcydd45kg5hgx39zm6g6qhvq92ysj2cf"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    1
+   ],
+   "deps": [
+    "flyspell-correct",
+    "popup"
+   ],
+   "commit": "7b4cf8c9ba5ac65e3bb2b62f5b72d45f4c9cf7b6",
+   "sha256": "1m5da6r82hk0c2x3lw03qnkk79sx67875afw0ybblj3cmfk6szd1"
+  }
+ },
+ {
+  "ename": "flyspell-lazy",
+  "commit": "a082c2dc0458e3007a947923f5b97e88217199e8",
+  "sha256": "0lzazrhsfh5m7n57dzx0v46d5mg87wpwwkjzf5j9gpv1mc1xfg1y",
+  "fetcher": "github",
+  "repo": "rolandwalker/flyspell-lazy",
+  "unstable": {
+   "version": [
+    20180224,
+    2106
+   ],
+   "commit": "3ebf68cc9eb10c972a2de8d7861cbabbbce69570",
+   "sha256": "1n67y90vm041mz172gjqypw3b5za5f18sic54h7wz4a9naynwyb6"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    10
+   ],
+   "commit": "31786fe04a4732d2f845e1c7e96fcb030182ef10",
+   "sha256": "1g09s57b773nm9xqslzbin5i2h18k55nx00s5nnkvx1qg0n0mzkm"
+  }
+ },
+ {
+  "ename": "flyspell-popup",
+  "commit": "186d00724137c055b521a5f5c54acf71c4b16c32",
+  "sha256": "0wp15ra1ry6xpwal6mb53ixh3f0s4nps0rdyfli7hhaiwbr9bhql",
+  "fetcher": "github",
+  "repo": "xuchunyang/flyspell-popup",
+  "unstable": {
+   "version": [
+    20170529,
+    815
+   ],
+   "deps": [
+    "popup"
+   ],
+   "commit": "29311849bfd253b9b689bf331860b4c4d3bd4dde",
+   "sha256": "0x7jilwb0fgzsr7ma59sgd0d4122cl0hwzr28vi3z5s8wdab7nc4"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "popup"
+   ],
+   "commit": "29311849bfd253b9b689bf331860b4c4d3bd4dde",
+   "sha256": "0x7jilwb0fgzsr7ma59sgd0d4122cl0hwzr28vi3z5s8wdab7nc4"
+  }
+ },
+ {
+  "ename": "fm-bookmarks",
+  "commit": "1ca020aff7f19cc150cd6968ae7c441372e240c2",
+  "sha256": "12ami0k6rfwhrr6xgj0dls4mkk6dp0r9smwzhr4897dv0lw89bdj",
+  "fetcher": "github",
+  "repo": "kuanyui/fm-bookmarks.el",
+  "unstable": {
+   "version": [
+    20170104,
+    1716
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "11dacfd16a926bfecba96a94c6b13e162c7717f7",
+   "sha256": "0is4617ivga8qrw19y7fy883fgczzdxvrl15ja1dydzj2cbn5d97"
+  }
+ },
+ {
+  "ename": "fn",
+  "commit": "6d2929604b6dd21d6cf425643927a9c216801dc1",
+  "sha256": "0cb98rxdb6sd0kws6bc4pa536kiyw3yk0hlfqcm3ps81hcgqjhhn",
+  "fetcher": "github",
+  "repo": "troyp/fn.el",
+  "unstable": {
+   "version": [
+    20170210,
+    204
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "dash-functional"
+   ],
+   "commit": "f685fd0c08ec3b1d1b9974b37e62edd78a000cb8",
+   "sha256": "1k8pwlpcvlwr4pavg85ja8hdc7rrbafqs1mhhqr5gbq8cp822sja"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "dash-functional"
+   ],
+   "commit": "2842e3c6d1b5c96184fa638c37b25ce5b347a1a6",
+   "sha256": "0kxpy87f44gkfzrnhcrprca0irkpddpbw7wbrm4aidw0synpab91"
+  }
+ },
+ {
+  "ename": "focus",
+  "commit": "4e8f1217224514f9b048b7101c89e3b1a305821e",
+  "sha256": "0jw26j8npyl3dgsrs7ap2djxmkafn2hl6gfqvi7v76bccs4jkyv8",
+  "fetcher": "github",
+  "repo": "larstvei/Focus",
+  "unstable": {
+   "version": [
+    20191209,
+    2210
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "5f3f20e7f22fb9fd7c48abce8bd38061d97e4bc0",
+   "sha256": "0a55i4bychfnnzjg67a9h4j130hchcg44446dwwx1l1h48i692dw"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "5f3f20e7f22fb9fd7c48abce8bd38061d97e4bc0",
+   "sha256": "0a55i4bychfnnzjg67a9h4j130hchcg44446dwwx1l1h48i692dw"
+  }
+ },
+ {
+  "ename": "focus-autosave-mode",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "10cd1x5b1w7apgxd2kq45lv0jlj7az4zmn2iz4iymf2r2hancrcd",
+  "fetcher": "github",
+  "repo": "Vifon/focus-autosave-mode.el",
+  "unstable": {
+   "version": [
+    20160519,
+    2116
+   ],
+   "commit": "2e0844fabb6f0dc9e0f31928e4785febf38b9e35",
+   "sha256": "08wibc6rzy5qj3anzd076ncjd8wwr4vpak7fdjv29aai1gkzsc9j"
+  }
+ },
+ {
+  "ename": "foggy-night-theme",
+  "commit": "65b3f5959241e601fdf9469e407d153cebcbe24c",
+  "sha256": "03x3dhkk81d2zh9nflq6wd7v3khpy9046v8qhq4i9dw6davvy9j4",
+  "fetcher": "github",
+  "repo": "mswift42/foggy-night-theme",
+  "unstable": {
+   "version": [
+    20190123,
+    1614
+   ],
+   "commit": "14894e06ee5c6e14db36f2cb07387ee971c1736f",
+   "sha256": "1rjhb8gjlnw002y8sjn2d976qdsjgvp9hsrlca1h5wmmkfha9knp"
+  }
+ },
+ {
+  "ename": "fold-dwim",
+  "commit": "62064e272a658d998b1ccf13dc3c2e3e454acade",
+  "sha256": "1k5186s69qahwbzvwq70af3bkcglls9a82c5jw5mdw3ic8k631sh",
+  "fetcher": "github",
+  "repo": "emacsattic/fold-dwim",
+  "unstable": {
+   "version": [
+    20140208,
+    1637
+   ],
+   "commit": "c46f4bb2ce91b4e307136320e72c28dd50b6cd8b",
+   "sha256": "1yz1wis31asw6xa5maliyd1ck2q02xnnh7dc6swgj9cb4wi7k6i1"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "commit": "4764b0246a722d37eb8ec9f204ffaccaad1755d0",
+   "sha256": "1k8z30imlxvqm7lv12kgqdfgc5znxyvl9jxi8j2ymmwlgy11f726"
+  }
+ },
+ {
+  "ename": "fold-dwim-org",
+  "commit": "97d22d9feaf521ce576b80d2933ecbc166c1dbe7",
+  "sha256": "0812p351rzvqcfn00k92nfhlg3y772y4z4b9f0xqnpa935y6harn",
+  "fetcher": "github",
+  "repo": "mattfidler/fold-dwim-org",
+  "unstable": {
+   "version": [
+    20131203,
+    1351
+   ],
+   "deps": [
+    "fold-dwim"
+   ],
+   "commit": "c09bb2b46d65afbd1d0febc6fded7495be7a3037",
+   "sha256": "14jvbkahwvv4wb0s9vp8gqmlpv1d4269j5rsjxn79q5pawjzslxw"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "deps": [
+    "fold-dwim"
+   ],
+   "commit": "c09bb2b46d65afbd1d0febc6fded7495be7a3037",
+   "sha256": "14jvbkahwvv4wb0s9vp8gqmlpv1d4269j5rsjxn79q5pawjzslxw"
+  }
+ },
+ {
+  "ename": "fold-this",
+  "commit": "9853fcb99bd8717c77fa2b3bafb6e85d0d5d491c",
+  "sha256": "1iri4a6ixw3q7qr803cj2ik7rvmww1b6ybj5q2pvkf1v25r8655d",
+  "fetcher": "github",
+  "repo": "magnars/fold-this.el",
+  "unstable": {
+   "version": [
+    20191107,
+    1816
+   ],
+   "commit": "c3912c738cf0515f65162479c55999e2992afce5",
+   "sha256": "0cnfkz2bjyk0fkbxa80h500f7pig7q0rdifmj56d4whzhg2jsicg"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "commit": "90b41d7b588ab1c3295bf69f7dd87bf31b543a6a",
+   "sha256": "1cbabpyp66nl5j8yhyj2jih4mhaljxvjh9ij05clai71z4598ahn"
+  }
+ },
+ {
+  "ename": "folding",
+  "commit": "1912296b7879019bea5ba8353d511496e3a9ca2d",
+  "sha256": "0rb4f4llc4z502znmmc0hfi7n07lp01msx4y1iyqijvqzlq2i93y",
+  "fetcher": "github",
+  "repo": "jaalto/project-emacs--folding-mode",
+  "unstable": {
+   "version": [
+    20190524,
+    1632
+   ],
+   "commit": "a1361aa154b27bd4db2e1cfe6c3b81b4fc1fdc9a",
+   "sha256": "0ghj0nw2zlrppsgl6x2nda9fj4w04rz6647v9823wxhfirrgnd5z"
+  }
+ },
+ {
+  "ename": "font-lock-cl",
+  "commit": "b7a2635ceb34f49f84f35e11c14521592a9d330f",
+  "sha256": "1d8r3d558ipk324hpgfm4fv4kxk6mhvkka3aqd4kcv8zv0k79iq3",
+  "fetcher": "github",
+  "repo": "font-lock-cl/font-lock-cl",
+  "unstable": {
+   "version": [
+    20200321,
+    533
+   ],
+   "commit": "9f82d31f9f0fb06bbc2ce18e21e79d1eabbe6c5e",
+   "sha256": "0b6g36frvp1i92qn8rv3dcm8sxiw5yvbvhl7j58x2xwvawn79nfd"
+  }
+ },
+ {
+  "ename": "font-lock-profiler",
+  "commit": "b372892a29376bc3f0101ea5865efead41e1df26",
+  "sha256": "089r74jgi5gwjk9w1bc600vkj0p5ac84rgcl7aqcpqfbh9ylwcp9",
+  "fetcher": "github",
+  "repo": "Lindydancer/font-lock-profiler",
+  "unstable": {
+   "version": [
+    20170208,
+    2008
+   ],
+   "commit": "6e096458416888a4f63cca0d6bc5965a052753c8",
+   "sha256": "186fvyfbakz54fr8j1l7cijvaklw96m1hfbjyw7nha08zc2m1hw5"
+  }
+ },
+ {
+  "ename": "font-lock-studio",
+  "commit": "f8046fef1ac09cac1113dd5d0a6e1bf8e0c77bb1",
+  "sha256": "0swwbfaypc78cg4ak24cc92kgxmr1x9vcpaw3jz4zgpm2wzbgmrq",
+  "fetcher": "github",
+  "repo": "Lindydancer/font-lock-studio",
+  "unstable": {
+   "version": [
+    20170127,
+    2051
+   ],
+   "commit": "12c35967b31233e06946c70627aa3152dacfe261",
+   "sha256": "0q0s6f5vi3sfifj7vq2nnsmgyyivp1sd3idk32858md5ri71qif0"
+  }
+ },
+ {
+  "ename": "font-utils",
+  "commit": "2af0a1644116e89c5a705ffe0885ffe3ee874eaf",
+  "sha256": "0k33jdchjkj7j211a23kfp5axg74cfsrrq4axsb1pfp124swh2n5",
+  "fetcher": "github",
+  "repo": "rolandwalker/font-utils",
+  "unstable": {
+   "version": [
+    20150806,
+    1751
+   ],
+   "deps": [
+    "pcache",
+    "persistent-soft"
+   ],
+   "commit": "9192d3f8ee6a4e75f34c3fed10378674cc2b11d3",
+   "sha256": "1k90w8v5rpswqb8fn1cc8sq5w12gf4sn6say5dhvqd63512b0055"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    8
+   ],
+   "deps": [
+    "pcache",
+    "persistent-soft"
+   ],
+   "commit": "9192d3f8ee6a4e75f34c3fed10378674cc2b11d3",
+   "sha256": "1k90w8v5rpswqb8fn1cc8sq5w12gf4sn6say5dhvqd63512b0055"
+  }
+ },
+ {
+  "ename": "fontawesome",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "1xqq0ndq6hndpyar11qlylkdgqpq5kxhbayyjbad3vbm6r5i9nri",
+  "fetcher": "github",
+  "repo": "emacsorphanage/fontawesome",
+  "unstable": {
+   "version": [
+    20170305,
+    1356
+   ],
+   "commit": "a743f80bfd53767ca9ee32da34c5ca032172a480",
+   "sha256": "1mkyd2bbyd9avw2qaidkzkpv8i7lfiv9189bj49dxklg92823sip"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "helm-core"
+   ],
+   "commit": "72b4f2f83c7fdacd225aee58f93acefc53166626",
+   "sha256": "1icwjd1rbyr1g8ifyhvpi21wjff2qrddq2rmp5lmiajnwrlfli0d"
+  }
+ },
+ {
+  "ename": "fontify-face",
+  "commit": "72bd6750dd5a7d9ed6e408e690f76c260ffd7d9e",
+  "sha256": "1w7xlkladqkbh7gpnkbi53a7k9p5wzma4y9jgwbc58hng9ggm1k0",
+  "fetcher": "github",
+  "repo": "Fuco1/fontify-face",
+  "unstable": {
+   "version": [
+    20180420,
+    1624
+   ],
+   "commit": "30ec0134f04d2b156bbc772e94edfa1a31ef0a58",
+   "sha256": "1i7hc436230dn68q2r7das7rgg8x0j3h43sv23krrg4qr0n0v07y"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "fc3325c98427523d86f0b411e0515cec51ac3d8a",
+   "sha256": "1zfld9a17xhisfwhmfxvx1x63ksl6jg5g99kbivj4nq70sf26dpw"
+  }
+ },
+ {
+  "ename": "forecast",
+  "commit": "a7ea18a56370348715dec91f75adc162c800dd10",
+  "sha256": "0zng8xdficpfccq484pghzg8yylihcy8aq0vpxd1w6l40m2qf6zn",
+  "fetcher": "github",
+  "repo": "cadadr/elisp",
+  "unstable": {
+   "version": [
+    20191004,
+    1850
+   ],
+   "commit": "61a14d1a8c17930caca5c5daf893cedc9c23c5f3",
+   "sha256": "0acq8d8vlx3hd405wmi5w36gg88bz1c1crmlxbd2whgi8kyf506z"
+  }
+ },
+ {
+  "ename": "foreign-regexp",
+  "commit": "d05514013948a520cf0dcaf1dc2ef2300dd55e98",
+  "sha256": "189cq8n759f28nx10fn3w4qbq7q49bb788kp9l70pj38jgnjn7n7",
+  "fetcher": "github",
+  "repo": "k-talo/foreign-regexp.el",
+  "unstable": {
+   "version": [
+    20200325,
+    50
+   ],
+   "commit": "e2dd47f2160cadc194eb156e7c76c3c869e6706e",
+   "sha256": "0bqhabpv992ss8rw3fgym6q5kq1d6b9ycs0a5ndgjpcz19rmlr66"
+  }
+ },
+ {
+  "ename": "foreman-mode",
+  "commit": "edeeb2b52ac70f8bdad38d3af62a7e434853c504",
+  "sha256": "0p3kwbld05wf3dwcv0k6ynz727fiy0ik2srx4js9wvagy57x98kv",
+  "fetcher": "github",
+  "repo": "zweifisch/foreman-mode",
+  "unstable": {
+   "version": [
+    20170725,
+    1422
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "f",
+    "s"
+   ],
+   "commit": "22b3bb13134b617870ed1e888af739f4818be929",
+   "sha256": "01qanhif24czcmhpdfkcjs019ss4r79f7y2wfbzmj6w4z7g3rikk"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "f",
+    "s"
+   ],
+   "commit": "e90d2b56e83ab914f9ba9e78126bd7a534d5b8fb",
+   "sha256": "199kybf2bvywqfnwr5w893km82829k1j7sp079y6s2601hq8ylw9"
+  }
+ },
+ {
+  "ename": "forest-blue-theme",
+  "commit": "49b8686c31f863dde58d56cddf0baa7757a0c453",
+  "sha256": "1pcpwil883k4n5na7jpq7h8a8gw6mily1cj5n5rf25lqqnsz6fxa",
+  "fetcher": "github",
+  "repo": "olkinn/forest-blue-emacs",
+  "unstable": {
+   "version": [
+    20160627,
+    842
+   ],
+   "commit": "58096ce1a25615d2bae806c3775bae3e2775019d",
+   "sha256": "1qm74cfnc13wgv0c3657nd3xbgn492r24m5m2i0ipnpq49cddccf"
+  }
+ },
+ {
+  "ename": "forge",
+  "commit": "58c5ca46286712b2aa43e07bb5dcbc8b5eb321e8",
+  "sha256": "1ykpjgbi2yak9ww54wnm1gxj9zff2ggldg9msg3219r8frzjcnjv",
+  "fetcher": "github",
+  "repo": "magit/forge",
+  "unstable": {
+   "version": [
+    20200425,
+    2225
+   ],
+   "deps": [
+    "closql",
+    "dash",
+    "emacsql-sqlite",
+    "ghub",
+    "let-alist",
+    "magit",
+    "markdown-mode",
+    "transient"
+   ],
+   "commit": "e2da80660a0550f613400ce3b238025589800417",
+   "sha256": "0m80w0qh6icj365pcg9d0kb2nvmv48c3874wy15mjcilzb6i97av"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "closql",
+    "dash",
+    "emacsql-sqlite",
+    "ghub",
+    "graphql",
+    "let-alist",
+    "magit",
+    "magit-popup",
+    "markdown-mode"
+   ],
+   "commit": "f5fc99935e2059ddede9766ce4bb96d99dcd203b",
+   "sha256": "0jipyqj3r4gkdwpcy0m5ij7x510r2admi8fbzwfysqyrwahs60nv"
+  }
+ },
+ {
+  "ename": "form-feed",
+  "commit": "20b2cc78b41a26e434b984943681fea774fd3c50",
+  "sha256": "0nh50lwr9jyi45sd4722nm2rmmc9zm9l8l55w4pjq61cfwldqq7p",
+  "fetcher": "git",
+  "url": "https://depp.brause.cc/form-feed.git",
+  "unstable": {
+   "version": [
+    20200506,
+    1300
+   ],
+   "commit": "b5dbfd8b90e72de84ae7b6667947264fe655c163",
+   "sha256": "0n2k0ki6k1pgni907fvz09z3hbfbchnv1q80j42w23qam2hp7a3f"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "commit": "eac6724c093458745e9ae0e37221077fa2ad0ff6",
+   "sha256": "171jna631b2iqcimfsik9c66gii8nc0zdb58m077w00rn7rcxbh2"
+  }
+ },
+ {
+  "ename": "format-all",
+  "commit": "f53143ebd42ef5be793b86d50b23f0a57617d6cc",
+  "sha256": "1kmnv8ypxvgm3p79cc1wk8032fh7bl1pripys180vw89r2748qs9",
+  "fetcher": "github",
+  "repo": "lassik/emacs-format-all-the-code",
+  "unstable": {
+   "version": [
+    20200513,
+    1930
+   ],
+   "deps": [
+    "cl-lib",
+    "language-id"
+   ],
+   "commit": "0227e1aadeb18db397f03368d54cbefe4afd6112",
+   "sha256": "0p04xgswp269a17jpiwpj8qfj3c2zvkmr4vn0wa1dfrw5f5bfj2x"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "language-id"
+   ],
+   "commit": "8c8c47a863a397d947999fff4358caf20bafca0a",
+   "sha256": "0ayb57p114z64ppf74g2wpm2g2iga2vrl8rhay7fnfv1j2i4xjss"
+  }
+ },
+ {
+  "ename": "format-sql",
+  "commit": "085c03104aa5a809a112525547eec51100b6fb09",
+  "sha256": "0684xqzs933vj9d3n3lv7afk4gii41kaqykbb05cribaswapsanj",
+  "fetcher": "github",
+  "repo": "paetzke/format-sql.el",
+  "unstable": {
+   "version": [
+    20150422,
+    1333
+   ],
+   "commit": "97f475c245cd6c81a72a265678e2087cee66ac7b",
+   "sha256": "0mikksamljps1czacgqavlnzzhgs8s3f8q4jza6v3csf8kgp5zd0"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "97f475c245cd6c81a72a265678e2087cee66ac7b",
+   "sha256": "0mikksamljps1czacgqavlnzzhgs8s3f8q4jza6v3csf8kgp5zd0"
+  }
+ },
+ {
+  "ename": "format-table",
+  "commit": "e307ead5e8a291cb5dfe316f3b13144e71b6a1b7",
+  "sha256": "1fwjilx0n9m8q0macq231i73zvridjfgqlhw7d1xblw4qp82rzvp",
+  "fetcher": "github",
+  "repo": "functionreturnfunction/format-table",
+  "unstable": {
+   "version": [
+    20181223,
+    1616
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "dfcae3a867e574577fc09a43b045889ff155b58f",
+   "sha256": "1z9l1qmv5hw7bgchi5f68nzsz9arjwsazvd6viq6k6jmjzncli6q"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "dfcae3a867e574577fc09a43b045889ff155b58f",
+   "sha256": "1z9l1qmv5hw7bgchi5f68nzsz9arjwsazvd6viq6k6jmjzncli6q"
+  }
+ },
+ {
+  "ename": "forth-mode",
+  "commit": "e46832079ee34c655835f06bf565ad5a5ab48ebd",
+  "sha256": "0j60abi5qyy94f4as90zhmkb12jdirysdbq4ajs5h91vi6gb1g3i",
+  "fetcher": "github",
+  "repo": "larsbrinkhoff/forth-mode",
+  "unstable": {
+   "version": [
+    20170527,
+    1930
+   ],
+   "commit": "522256d98d1a909983bcfd3ae20c65226d5929b6",
+   "sha256": "110ycl8zkimy2818rhp3hk3mn2y25m695shdsy6dwxnrv90agss6"
+  }
+ },
+ {
+  "ename": "fortpy",
+  "commit": "73b277e19f5f9f6605f3e9b7afac95152dac0599",
+  "sha256": "1nn5vx1rspfsijwhilnjhiy0mjw154ds3lwxvkpwxpchygirlyxj",
+  "fetcher": "github",
+  "repo": "rosenbrockc/fortpy-el",
+  "unstable": {
+   "version": [
+    20150715,
+    2032
+   ],
+   "deps": [
+    "auto-complete",
+    "epc",
+    "pos-tip",
+    "python-environment"
+   ],
+   "commit": "c614517e9396ef7a78be3b8786fbf303879cf43b",
+   "sha256": "1nqx2igxmwswjcrnzdjpx5qcjr60zjy3q9cadq5disms17wdcr6y"
+  }
+ },
+ {
+  "ename": "fortune-cookie",
+  "commit": "ab0d56626c9bf847c693b4d9ddb08acee636054f",
+  "sha256": "0xg0zk7hnyhnbhqpxnzrgqs5yz0sy6wb0n9982qc0pa6jqnl9z78",
+  "fetcher": "github",
+  "repo": "andschwa/fortune-cookie",
+  "unstable": {
+   "version": [
+    20181223,
+    842
+   ],
+   "commit": "6c1c08f5be83822c0b762872ab25e3dbee96f333",
+   "sha256": "0gnidiryappk9naazwv0dd3b1dyd284zkwnhy2b1z3zkc9i7awfq"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "bad99a2cd090f6646c7ee1125b95dd98744939c6",
+   "sha256": "1kiflisiabc39lxi5hcazfvcwrpasl01lqsi2sri6pyrcrjyh8mf"
+  }
+ },
+ {
+  "ename": "fountain-mode",
+  "commit": "12589d1eb14bfc87d2e6f2a5ff8f5fb66b574a56",
+  "sha256": "1i55gcjy8ycr1ww2fh1a2j0bchx1bsfs0zd6v4cv5zdgy7vw6840",
+  "fetcher": "github",
+  "repo": "rnkn/fountain-mode",
+  "unstable": {
+   "version": [
+    20200516,
+    624
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "83d308b6fd26662bc8fb204c4d634616e03dca44",
+   "sha256": "0a068qfc969bvxyynrk2yakv2l3y31snnvcpdsbxd4m4m6drv3lw"
+  },
+  "stable": {
+   "version": [
+    3,
+    1,
+    0
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "9027c6f2b2a2d7d64501e55ff3531cdef26c463d",
+   "sha256": "08giwg0jwk8zzj2i4cm08322qr6znrnv9a49za7c6j47bykpwj6s"
+  }
+ },
+ {
+  "ename": "fraktur-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0hy2cncbgpp7ysp7qwfpj0r075rxrc77bmc70bw7hf8m1xiw124k",
+  "fetcher": "github",
+  "repo": "grettke/fraktur-mode",
+  "unstable": {
+   "version": [
+    20160815,
+    227
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "514baf5546aed12a0d9fa0fe66e87cdcc7843b08",
+   "sha256": "169d9j7jk3li96fkn2sr257835flkcpml24l4bmzp8j3q57a7wxw"
+  }
+ },
+ {
+  "ename": "frame-local",
+  "commit": "556179857e2b46f5a48b45e1b71cd460ffd9f7d7",
+  "sha256": "1lz4xmz67l99xbyg9gvgzl06yqh61xhr29vfhv68kq5pg5m881vs",
+  "fetcher": "github",
+  "repo": "sebastiencs/frame-local",
+  "unstable": {
+   "version": [
+    20180330,
+    940
+   ],
+   "commit": "7ee1106c3bcd4022f48421f8cb1ef4f995da816e",
+   "sha256": "0zfxsxdh3bd3fd566zl0byp13p5b8f4cgkwl637imvarvahczigp"
+  }
+ },
+ {
+  "ename": "frame-mode",
+  "commit": "1e83da89eeee834cc14c0b128d55ef3634f76fd0",
+  "sha256": "0ch58x07fnsx3v3r9cvcmqrqws121m8achjilhqk988hkg7y47c8",
+  "fetcher": "github",
+  "repo": "IvanMalison/frame-mode",
+  "unstable": {
+   "version": [
+    20190710,
+    2030
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "ae2366969927c9f89ea07c999bef382b0b47cac1",
+   "sha256": "0fr4rc6axgk98sinsmqr6zhd2ba4djijmbpkha2vs1qn31p1z4g7"
+  }
+ },
+ {
+  "ename": "frame-purpose",
+  "commit": "033bd36a2419f4521944ccbfe8ce1eb56af20472",
+  "sha256": "0mvzryfakz5g8smsg4ciaa0bs0jp692rnjbahp9vl62ml5dp62fz",
+  "fetcher": "github",
+  "repo": "alphapapa/frame-purpose.el",
+  "unstable": {
+   "version": [
+    20190114,
+    1403
+   ],
+   "deps": [
+    "dash",
+    "dash-functional"
+   ],
+   "commit": "78f978f13589ec5c5370187c008c8aa83e6e71b4",
+   "sha256": "0zd981jsbf8fj5a3s7agbg32f6x3s7g87jlz13msgpgmkfhpx3gx"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "dash",
+    "dash-functional"
+   ],
+   "commit": "60778ef3c02cb09a7ccc323732c89bf374dfbffe",
+   "sha256": "0jq2aam1yvccw887ighd1wm2xkvk5bv53ffiz3crcl16a255aj4q"
+  }
+ },
+ {
+  "ename": "frame-tag",
+  "commit": "e69899b53c158903b9b147754021acf1a6136eda",
+  "sha256": "1n13xcc3ny9j9h1h4vslpjl6k9mqksr73kgmqrmkq301p8zps94q",
+  "fetcher": "github",
+  "repo": "liangzan/frame-tag.el",
+  "unstable": {
+   "version": [
+    20170111,
+    6
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "73d6163568c7d32952175e663318b872f995a4e5",
+   "sha256": "1ks8qw1vq30mjp7bpgrk3f11jhm9viibiap6zjk8r5rykjzl1ifv"
+  }
+ },
+ {
+  "ename": "frames-only-mode",
+  "commit": "1e628416ad9420b3ac5bbfacf930a86d98958ac8",
+  "sha256": "17p04l16ghz9kk096xk37yjpi4rmla86gp7c8ysjf6q6nyh0608h",
+  "fetcher": "github",
+  "repo": "davidshepherd7/frames-only-mode",
+  "unstable": {
+   "version": [
+    20190524,
+    1439
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "ce55b3ad3b3cb4c4253a0172bb8e9461814b2d64",
+   "sha256": "1sw1s2k4wch32h5r0z6bfyiw4qcwjz93lq36ix17r968r505djc2"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "5a2947d797a5d6f74d3a9c97f8c0ab6cff115b28",
+   "sha256": "0y0sdjixaxvywrlp2sw51wnczhk51q1svl5aghbk9rkxpwv9ys9v"
+  }
+ },
+ {
+  "ename": "frameshot",
+  "commit": "e5cfaa4b5fda97054d45691fad9d79b559f2df14",
+  "sha256": "1z5f988m9s25miyxbhaxk6m4af9afvblb2p5mdidva04szjklr70",
+  "fetcher": "github",
+  "repo": "tarsius/frameshot",
+  "unstable": {
+   "version": [
+    20200103,
+    1238
+   ],
+   "commit": "1b5974f0cc7c2a34e5f9fab6b25578dad7df3dbf",
+   "sha256": "1rcx0la0njg3ij0xgw7l1wl8nlvdd0bj40v51wvmdybyiba7cdx6"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    4
+   ],
+   "commit": "1b5974f0cc7c2a34e5f9fab6b25578dad7df3dbf",
+   "sha256": "1rcx0la0njg3ij0xgw7l1wl8nlvdd0bj40v51wvmdybyiba7cdx6"
+  }
+ },
+ {
+  "ename": "framesize",
+  "commit": "c53062af16b26b6f64bd63fa62d7e9db264768f3",
+  "sha256": "1rwiwx3n7gkpfihbf6ndl1lxza4zi2rlj5av6lfp5qypbw9wddkf",
+  "fetcher": "github",
+  "repo": "nicferrier/emacs-framesize",
+  "unstable": {
+   "version": [
+    20131017,
+    2132
+   ],
+   "deps": [
+    "key-chord"
+   ],
+   "commit": "f2dbf5d2513b2bc45f2085370a55c1754b6025da",
+   "sha256": "11h9xw6jnw7dacyv1jch2a77xp7hfb93690m7hhazy6l87xmm4dk"
+  }
+ },
+ {
+  "ename": "frecency",
+  "commit": "d7a6e855d01e0b1c9a23c006af67c487719c50bd",
+  "sha256": "033zhzwvh23igfqxbiy68cq6i1wflna19pbg81r0hh9kcfg2afpa",
+  "fetcher": "github",
+  "repo": "alphapapa/frecency.el",
+  "unstable": {
+   "version": [
+    20170909,
+    631
+   ],
+   "deps": [
+    "a",
+    "dash"
+   ],
+   "commit": "6d57aee131d96315aedf6cb7d6e5d6d09bf71503",
+   "sha256": "1hxjvfys5kqwvl21jj5sfb6bpqxdgdhsrniq821y324glc8s38xc"
+  }
+ },
+ {
+  "ename": "frecentf",
+  "commit": "64d342c3814721f82dee8859d90b2da4192d8bc8",
+  "sha256": "1z20035iplkjan3nf3lr0jzdz6jh988rq281zbi4a5l271ll8lb9",
+  "fetcher": "git",
+  "url": "https://git.launchpad.net/frecentf.el",
+  "unstable": {
+   "version": [
+    20191204,
+    312
+   ],
+   "deps": [
+    "frecency",
+    "persist"
+   ],
+   "commit": "1d5d641fdd93480db2374276e85ec652af0565c5",
+   "sha256": "01l92rz4hll2v5k0xppmszcpy0r6lxgm4cql0zxkcj5yhgzjmrln"
+  }
+ },
+ {
+  "ename": "free-keys",
+  "commit": "55067e899ba618d4394ad9657322c92a667a0774",
+  "sha256": "0j9cfgy2nkbska4lm5z32p804i9n8pdgn50bs5zzk1ilwd5vbalj",
+  "fetcher": "github",
+  "repo": "Fuco1/free-keys",
+  "unstable": {
+   "version": [
+    20160726,
+    2050
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "edfd69dc369b2647447b7c28c7c1163b1ddf45b4",
+   "sha256": "0xgifa7s9n882f9ymyyz9gc11xfbj3vfpnxiq1fqfm5hmwx9pwbc"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "edfd69dc369b2647447b7c28c7c1163b1ddf45b4",
+   "sha256": "0xgifa7s9n882f9ymyyz9gc11xfbj3vfpnxiq1fqfm5hmwx9pwbc"
+  }
+ },
+ {
+  "ename": "freeradius-mode",
+  "commit": "a93de3f3933441b94303cd6dd25dabbade04dcc5",
+  "sha256": "1lk7px2v5rpfg7kakqcsg31pg69pk64x9j0j9bjwpkxc49bnk1w2",
+  "fetcher": "github",
+  "repo": "VersBinarii/freeradius-mode",
+  "unstable": {
+   "version": [
+    20190401,
+    1743
+   ],
+   "commit": "cf8bf0359cf6c77848facbd24b764b3e111b4c2d",
+   "sha256": "0ggkflx4lhyxqr7sgf1f3z0i3glmqyvl4bn16clh9ybl14q22rli"
+  }
+ },
+ {
+  "ename": "freeze-it",
+  "commit": "0b50aa7ce66a827ddd975eddf8e95ba655e05239",
+  "sha256": "03wnmp6m9ss3vvzibajjdvzbgh2ydvq95xk9k2rhrgjj9pdz5ml8",
+  "fetcher": "github",
+  "repo": "rnkn/freeze-it",
+  "unstable": {
+   "version": [
+    20200416,
+    1605
+   ],
+   "commit": "b93af18633bc783c2cb8443808aeeaaca33e1146",
+   "sha256": "0gljal6hmchx5zyd268kwlqn8pqq206y8a89ff7kq6qaql88mngn"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "commit": "b93af18633bc783c2cb8443808aeeaaca33e1146",
+   "sha256": "0gljal6hmchx5zyd268kwlqn8pqq206y8a89ff7kq6qaql88mngn"
+  }
+ },
+ {
+  "ename": "friendly-remote-shell",
+  "commit": "de68633dae1e07006ae7b043c9264d9b8d08d377",
+  "sha256": "0ja0xgxs26sk2mx57wqb3schmw8ms01sdla260c96ilmy1qj6fvq",
+  "fetcher": "github",
+  "repo": "p3r7/friendly-shell",
+  "unstable": {
+   "version": [
+    20200510,
+    1438
+   ],
+   "deps": [
+    "cl-lib",
+    "friendly-shell",
+    "friendly-tramp-path",
+    "with-shell-interpreter"
+   ],
+   "commit": "d9cef2599f4edf425b257d65a88008d916dabfbf",
+   "sha256": "15kla2haji0b32sx0xij7h4h35w0r33dy5jirxa9ych6gqyznbk8"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "friendly-shell",
+    "friendly-tramp-path",
+    "with-shell-interpreter"
+   ],
+   "commit": "d9cef2599f4edf425b257d65a88008d916dabfbf",
+   "sha256": "15kla2haji0b32sx0xij7h4h35w0r33dy5jirxa9ych6gqyznbk8"
+  }
+ },
+ {
+  "ename": "friendly-shell",
+  "commit": "de68633dae1e07006ae7b043c9264d9b8d08d377",
+  "sha256": "1xpfykkfrm6gg6p0rjp1hfnjf4k4n6k3v5kxifgbxld4hjl9223d",
+  "fetcher": "github",
+  "repo": "p3r7/friendly-shell",
+  "unstable": {
+   "version": [
+    20200510,
+    1438
+   ],
+   "deps": [
+    "cl-lib",
+    "with-shell-interpreter"
+   ],
+   "commit": "d9cef2599f4edf425b257d65a88008d916dabfbf",
+   "sha256": "15kla2haji0b32sx0xij7h4h35w0r33dy5jirxa9ych6gqyznbk8"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "with-shell-interpreter"
+   ],
+   "commit": "d9cef2599f4edf425b257d65a88008d916dabfbf",
+   "sha256": "15kla2haji0b32sx0xij7h4h35w0r33dy5jirxa9ych6gqyznbk8"
+  }
+ },
+ {
+  "ename": "friendly-shell-command",
+  "commit": "de68633dae1e07006ae7b043c9264d9b8d08d377",
+  "sha256": "0hsnn18zxwqvk5zpp5kf8mlfya6if0npnfm0crvwqqsipx9nj8v4",
+  "fetcher": "github",
+  "repo": "p3r7/friendly-shell",
+  "unstable": {
+   "version": [
+    20200510,
+    1438
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "with-shell-interpreter"
+   ],
+   "commit": "d9cef2599f4edf425b257d65a88008d916dabfbf",
+   "sha256": "15kla2haji0b32sx0xij7h4h35w0r33dy5jirxa9ych6gqyznbk8"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "with-shell-interpreter"
+   ],
+   "commit": "d9cef2599f4edf425b257d65a88008d916dabfbf",
+   "sha256": "15kla2haji0b32sx0xij7h4h35w0r33dy5jirxa9ych6gqyznbk8"
+  }
+ },
+ {
+  "ename": "friendly-tramp-path",
+  "commit": "cb18ad238792570e5ef825a101059bfdc293949f",
+  "sha256": "120g9w1l4i544km5d1jx5g4vsfb92lizn7ibxl767zffgahqhbdf",
+  "fetcher": "github",
+  "repo": "p3r7/friendly-tramp-path",
+  "unstable": {
+   "version": [
+    20200502,
+    1032
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "be572b8953b9e5a3a35c30bb64c2936d3e9802ba",
+   "sha256": "0w99py469ylkg9jg9fdxalv3axd57ld9rgwhgfy1r8rpp7xch7pn"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "be2714118876c592fae199aaa877c49475b6176a",
+   "sha256": "1z1rcm8pc8p2d7zzf02nms6cz2ik8y1b95a58lqxlp8n75rz4c5i"
+  }
+ },
+ {
+  "ename": "fringe-current-line",
+  "commit": "eaaa6f7f2f753a7c8489415ae406c4169eda9fa8",
+  "sha256": "125yn0wbrrxrmdn7qfxj0f4538sb3xnqb3r2inz3gpblc1vxnqb8",
+  "fetcher": "github",
+  "repo": "kyanagi/fringe-current-line",
+  "unstable": {
+   "version": [
+    20140111,
+    411
+   ],
+   "commit": "0ef000bac76abae30601222e6f06c7d133ab4942",
+   "sha256": "0zwlnzbi91hkfz1jgj9s9pxwi21s21cwp6psdm687wj2a3wy4231"
+  }
+ },
+ {
+  "ename": "fringe-helper",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1i5wra4j0rvrsl9vbg7fzga8cadw43ka2rwdj1m11wq8m3cs8g7m",
+  "fetcher": "github",
+  "repo": "nschum/fringe-helper.el",
+  "unstable": {
+   "version": [
+    20140620,
+    2109
+   ],
+   "commit": "ef4a9c023bae18ec1ddd7265f1f2d6d2e775efdd",
+   "sha256": "0ra9rc53l1gvkqank8apasl3r7wz2yfjrcvmfk3wpxhh24ppxv9d"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "commit": "0f10a196c6e57222b8d4c94eafc40a96e7b20f1b",
+   "sha256": "1c3yx9j3q8fkfiay4nzcabsq9i4ydqf6vxk8vv80h78gg9afrzrj"
+  }
+ },
+ {
+  "ename": "frog-jump-buffer",
+  "commit": "8dbb470b4041c58650088b0a1d8af8bac498a573",
+  "sha256": "0nd59k8jnry2w3c32ww3494fnsqp01q570508bwqmg203lksdwf9",
+  "fetcher": "github",
+  "repo": "waymondo/frog-jump-buffer",
+  "unstable": {
+   "version": [
+    20200114,
+    1826
+   ],
+   "deps": [
+    "avy",
+    "dash",
+    "frog-menu"
+   ],
+   "commit": "1eb289c9b2a4bbebb3065076750f54216ac9c718",
+   "sha256": "0qlwjk3a13gb3glib9irgpyx94j933kflky7pbnrl17a53pnryrw"
+  }
+ },
+ {
+  "ename": "fsbot-data-browser",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "14d4d8lasvgj520rmqgnzk6mi16znzcdvja9p8164fr9l41wnzgd",
+  "fetcher": "github",
+  "repo": "Benaiah/fsbot-data-browser",
+  "unstable": {
+   "version": [
+    20160921,
+    1533
+   ],
+   "commit": "6bca4f7de63e31839d2542f6c678b79931dec344",
+   "sha256": "0lvpgfp89sz6f6rn576g1g88s0q3ibj5ghydjwfcg9w6h7vx5b5s"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "6bca4f7de63e31839d2542f6c678b79931dec344",
+   "sha256": "0lvpgfp89sz6f6rn576g1g88s0q3ibj5ghydjwfcg9w6h7vx5b5s"
+  }
+ },
+ {
+  "ename": "fsharp-mode",
+  "commit": "7a41e8a101b1b76870402eb8f60130be9e9f189d",
+  "sha256": "1bcgy40z5d1663rafh4vhbm8d24yxnbw23sagki4427sywinl11x",
+  "fetcher": "github",
+  "repo": "fsharp/emacs-fsharp-mode",
+  "unstable": {
+   "version": [
+    20191130,
+    1857
+   ],
+   "deps": [
+    "dash",
+    "eglot",
+    "s"
+   ],
+   "commit": "8c86e38b93aac55f57d5baf3a9575b45b54cd16a",
+   "sha256": "08c8v5wnb7fi4pbi5ivkhi3l4nf8mhn9b9829nkpz1l5q9lmz263"
+  },
+  "stable": {
+   "version": [
+    1,
+    10
+   ],
+   "deps": [
+    "dash",
+    "eglot",
+    "s"
+   ],
+   "commit": "4a1df3342931f09edc933cb481da70cc5a5ef268",
+   "sha256": "0dkfd4nlc0hxikvby1271y6zppsvcc0jr12m2w1zrng1pqx666di"
+  }
+ },
+ {
+  "ename": "fstar-mode",
+  "commit": "c58ace42342c3d3ff5a56d86a16206f2ecb45f77",
+  "sha256": "1kwa6gqh91265vpp4gcady2brkizfkfjj0gnya9lar6x7rn4gj7s",
+  "fetcher": "github",
+  "repo": "FStarLang/fstar-mode.el",
+  "unstable": {
+   "version": [
+    20200424,
+    2235
+   ],
+   "deps": [
+    "company",
+    "company-quickhelp",
+    "dash",
+    "flycheck",
+    "quick-peek",
+    "yasnippet"
+   ],
+   "commit": "d8b586518f32d4acde049852d81902670d1ee277",
+   "sha256": "0av315lf58nwgvix100bj279mq2pm175vwc5dip19gn73bq4d9vi"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    4,
+    0
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "3a9be64827bbed8e34d38803b5c44d8d4f6cd688",
+   "sha256": "0manmkd66355g1fw2q1q96ispd0vxf842i8dcr6g592abrz5lhi7"
+  }
+ },
+ {
+  "ename": "fuel",
+  "commit": "1e2a0e4698d4e71ec28656594f6a83504a823490",
+  "sha256": "08hzzg5dhqkl5c5lfhwcwmx8m8z3k1nxshn2wlpqf5gch8f2nj6z",
+  "fetcher": "github",
+  "repo": "factor/factor",
+  "unstable": {
+   "version": [
+    20200514,
+    1516
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "68f6eeb3adbc7d9f71d24761600bf8538775c969",
+   "sha256": "16iz2wf8bn4mjcgbc5vj50snlgiqqdc495kxbd9mcld5rjhfs45q"
+  },
+  "stable": {
+   "version": [
+    0,
+    98
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "7999e72aecc3c5bc4019d43dc4697f49678cc3b4",
+   "sha256": "0d8zs78xnk1wqh821hs8zyjv9lphj2xmxclnr969y1d9axcblaxj"
+  }
+ },
+ {
+  "ename": "fuff",
+  "commit": "4d0fc6d19559a9ea1bb7fce0c26a2dd65fc71603",
+  "sha256": "080a2lz6mv629c68z44qrrww080gy2iggfzajdq54rr8i23y14vf",
+  "fetcher": "github",
+  "repo": "joelmo/fuff",
+  "unstable": {
+   "version": [
+    20170202,
+    1503
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "278e849913df87bd8756c59382282d87474802c3",
+   "sha256": "12s25c0abvghkhfbxcf77d2dc20y3xn9df7mfk8mkfwnlwdss2ga"
+  }
+ },
+ {
+  "ename": "full-ack",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "09ikhyhpvkcl6yl6pa4abnw6i7yfsx5jkmzypib94w7khikvb309",
+  "fetcher": "github",
+  "repo": "nschum/full-ack",
+  "unstable": {
+   "version": [
+    20140223,
+    1732
+   ],
+   "commit": "761d846e105b150f8e6d13d7a8983f0248313a45",
+   "sha256": "0bjny4ryrs788myhiaf3ir99vadf2v4swa5gkz9i36a7j6wzpgk5"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "0aef4be1686535f83217cafb1524818071bd8325",
+   "sha256": "0c3w3xs2jbdqgsqw0qmdbwii6p395qfznird4gg0hfr7lby2kmjq"
+  }
+ },
+ {
+  "ename": "fullframe",
+  "commit": "13d1dc5c39543b65c6bb4150c3690211872c00dc",
+  "sha256": "08sh8lmb6g8asv28fcb36ilcn0ka4fc6ka0pnslid0h4c32fxp2a",
+  "fetcher": "github",
+  "repo": "tomterl/fullframe",
+  "unstable": {
+   "version": [
+    20170816,
+    1003
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "2c4497f5d66898f5f4cbde3abe97402880e46c2c",
+   "sha256": "0jnkri7d23hh392lfc3gwjlis4a0pgn0jpbhm4md94ap263yyylc"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d6a5217f7f2a5a5edcb75140f3fa69b3a50f1cdd",
+   "sha256": "0m43qnhp6ibsskpjkxc86p3lrjsjc0ndqml3lbd65s79x4x7i3fi"
+  }
+ },
+ {
+  "ename": "function-args",
+  "commit": "80688d85a34b77783140ad2b8a47ef60c762b084",
+  "sha256": "13yfscr993pll5yg019v9dwy71g123a166w114n2m78h0rbnzdak",
+  "fetcher": "github",
+  "repo": "abo-abo/function-args",
+  "unstable": {
+   "version": [
+    20171031,
+    1704
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "609b25305670fff08d5e357298e7128e4f4e3497",
+   "sha256": "1xymwk42n2l7c7iaigz23i4l580qpjgq8nqhgr4mnw6invdsgg2c"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    0
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "0b07db81c0c1fa88d1ec763219ee57640858f79d",
+   "sha256": "0lg9bhwn3za4jvz38zld389gdl48qf34nqqqrzj0r119g1jqdrg1"
+  }
+ },
+ {
+  "ename": "fuo",
+  "commit": "25fb625becf7f582d2a8d53726d6f01d9ea89ecc",
+  "sha256": "02mvgz2cxrdn5kp5dw0c57rl5nfavqli5yqbxczmbsih164ljdxf",
+  "fetcher": "github",
+  "repo": "cosven/emacs-fuo",
+  "unstable": {
+   "version": [
+    20190812,
+    927
+   ],
+   "commit": "0e4122f94a336a50c02bc96652d25ac3d74bedeb",
+   "sha256": "1cv30sgjngnl0274viaf42dw9sr0v1kdw31na7lzznqx6q8laz47"
+  }
+ },
+ {
+  "ename": "furl",
+  "commit": "0fda2b54a0ff0b6fc3bd6d20cfcbbf63cae5380f",
+  "sha256": "1z3yqx95qmvpi6vkkgcwvkmw96s24h8ssd5gc06988picw6vj76f",
+  "fetcher": "github",
+  "repo": "nex3/furl-el",
+  "unstable": {
+   "version": [
+    20150509,
+    316
+   ],
+   "commit": "014438271e0ef27333dfcd599cb247f12a20d870",
+   "sha256": "0wrmbvx0risdjkaxqmh4li6iwvg4635cdpjvw32k2wkdsyn2dlsb"
+  }
+ },
+ {
+  "ename": "futhark-mode",
+  "commit": "97210774b450b7611d2bfdf36e04a425835d86b9",
+  "sha256": "1sck984a8m0i9n07jnhpnin6k060756g73ix34ghzd65j5f0pvlw",
+  "fetcher": "github",
+  "repo": "diku-dk/futhark-mode",
+  "unstable": {
+   "version": [
+    20200415,
+    1228
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "2befd490ce7d78a43d001b4bb0bd4300d086d645",
+   "sha256": "0p4ii7mbspx1fsmzx9n8z2siq9n8ixpisxs388ndd2ccp7x3k6nm"
+  }
+ },
+ {
+  "ename": "fuz",
+  "commit": "2d3139563902bb1cb8aa48a517747f12a1ca1746",
+  "sha256": "0xmi3r7mhxc38rjmx2p0lhsn0gch21hhbr2s0gxy1h29mhgvy3sb",
+  "fetcher": "github",
+  "repo": "rustify-emacs/fuz.el",
+  "unstable": {
+   "version": [
+    20200104,
+    524
+   ],
+   "commit": "0b6b64cebde5675be3a28520ee16234db48d3b8b",
+   "sha256": "1bddjr3rpmvkrljq5ipjm42d59m2897cpfhmiah3rcb4c6ra40m1"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    0
+   ],
+   "commit": "90ca9207a9c1decda24a552b94ff41169ecccb14",
+   "sha256": "0v1advw2yr8b4jwd713fijd1kx4yc5xzz5ck2qfdxy5ixi1b39nm"
+  }
+ },
+ {
+  "ename": "fuzzy",
+  "commit": "9e0197df173fbd7ec1e7e35c47476fcf2aaa483f",
+  "sha256": "1hwdh9bx4g4vzzyc20vdwxsii611za37kc9ik40kwjjk62qmll8h",
+  "fetcher": "github",
+  "repo": "auto-complete/fuzzy-el",
+  "unstable": {
+   "version": [
+    20150730,
+    337
+   ],
+   "commit": "a36bde2f6e94d6b2bfaae68d73bbd39734e5b907",
+   "sha256": "1aj7r16bnx2jr2gpzwsmr3yqmfza5qbdcn78chcsfqxv5c8bgswa"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "939f4e9a3f08d83925b41dd3d23b2321f3f6b09c",
+   "sha256": "1g7my9ha5cnwg3pjwa86wncg5gphv18xpnpmj3xc3vg7z5m45rss"
+  }
+ },
+ {
+  "ename": "fvwm-mode",
+  "commit": "ac39130f8a031d6fe7df4411a5f94f2cdf652449",
+  "sha256": "07y32cnp4qfhncp7s24gmlxljdrj5miicinfaf4gc7hihb4bkrkb",
+  "fetcher": "github",
+  "repo": "theBlackDragon/fvwm-mode",
+  "unstable": {
+   "version": [
+    20160411,
+    1138
+   ],
+   "commit": "6832a1c1f68bf6249c3fd6672ea8e27dc7a5c79e",
+   "sha256": "03zmk4v259pqx7gkwqq95lccn78rwmh7iq5j0d5jj4jf9h39rr20"
+  },
+  "stable": {
+   "version": [
+    1,
+    6,
+    4
+   ],
+   "commit": "d48a309bb7db21f5404b6619c6ee861fe0457704",
+   "sha256": "0c3g0yfclczdh6nxmg9lljjf288zibqy51bhh1b1cgdmxcbpg8bv"
+  }
+ },
+ {
+  "ename": "fwb-cmds",
+  "commit": "fe40cdeb5e19628937820181479897acdad40200",
+  "sha256": "0wnjvi0v0l2h1mhwlsk2d8ggwh3nk7pks48l55gp18nmj00jxycx",
+  "fetcher": "github",
+  "repo": "tarsius/fwb-cmds",
+  "unstable": {
+   "version": [
+    20180318,
+    2219
+   ],
+   "commit": "90258a5c7dbbaa2ac227e0fb4ff6c7d5aec3628f",
+   "sha256": "1xwvv8wjgdaz96v1x1xc5w697bfvcanlcixd0n5qbx6ryakqrb72"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "commit": "90258a5c7dbbaa2ac227e0fb4ff6c7d5aec3628f",
+   "sha256": "1xwvv8wjgdaz96v1x1xc5w697bfvcanlcixd0n5qbx6ryakqrb72"
+  }
+ },
+ {
+  "ename": "fxrd-mode",
+  "commit": "796eb6b2126ec616c0de6af6abb7598900557c12",
+  "sha256": "17zimg64lqc1yh9gnp5izshkvviz996aym7q6n9p61a4kqq37z4r",
+  "fetcher": "github",
+  "repo": "msherry/fxrd-mode",
+  "unstable": {
+   "version": [
+    20170728,
+    1801
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "18a603474abb5a786a8d9f20c283d5f7beed3540",
+   "sha256": "1yprlpxxh7bbxg8filgb00lqqlavbz03h7hqf4280aiypkwi0y86"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "795b969346982b75e24b5c8619b46197982fbb4d",
+   "sha256": "0aha13vqj6ygyr7bflrxll837g4z6wrmrhh5rhcd0vphqg70frgn"
+  }
+ },
+ {
+  "ename": "fyure",
+  "commit": "27f4188f460060277ad2f5422bc2bde8e6fd3ff3",
+  "sha256": "0k5z2xqlrzp5lyvp2lr462x38kqdmqld845bvyvkfjd2k4yri71x",
+  "fetcher": "github",
+  "repo": "mooz/fyure",
+  "unstable": {
+   "version": [
+    20130216,
+    1314
+   ],
+   "commit": "b6977f1eb148e8b63259f7233b55bb050e44d9b8",
+   "sha256": "08x5li0mshrlamr7vswy7xh358bqhh3pngjr4ckswfi0l2r5fjbd"
+  }
+ },
+ {
+  "ename": "fzf",
+  "commit": "1671e17c99ef1932c6a2e83fc4fa2e4eb6674bc8",
+  "sha256": "0jjzm1gq85fx1gmj6nqaijnjws9bm8hmk40ws3x7fmsp41qq5py0",
+  "fetcher": "github",
+  "repo": "bling/fzf.el",
+  "unstable": {
+   "version": [
+    20180619,
+    145
+   ],
+   "commit": "521d18933cb586337c4e34281bdc71ac07202c98",
+   "sha256": "0fpzjslbhhwvs4nh5dxj9cyxyiw6n8qmg76mvq73k5mc8pk7d4ir"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "383a050920e9b99d37c21d041deb7f38b202485c",
+   "sha256": "14drm6b6rxbcdilcms1jlqyrqbipcqbdil6q06ni9pgafi7xp8hz"
+  }
+ },
+ {
+  "ename": "gams-ac",
+  "commit": "ca2681b39ac5a985c2f70b4b84ee3c10af1a7ca4",
+  "sha256": "03w9ffscwaaspwxmrqhrfws0qjk3xxzz63k5wkrhx37899w75qha",
+  "fetcher": "github",
+  "repo": "ShiroTakeda/gams-ac",
+  "unstable": {
+   "version": [
+    20180423,
+    926
+   ],
+   "deps": [
+    "auto-complete",
+    "gams-mode"
+   ],
+   "commit": "66d04ff36033f54205c19bc1d893e926d4dbf02e",
+   "sha256": "1hjbzwgzwqwpyfm8db1r1q14bbk42hrl5469gqfzjq0423wy7szw"
+  }
+ },
+ {
+  "ename": "gams-mode",
+  "commit": "c895a716636b00c2a158d33aab18f664a8601833",
+  "sha256": "0hx9mv4sqskz4nn7aks64hqd4vn3m7b34abzhy9bnmyw6d5zzfci",
+  "fetcher": "github",
+  "repo": "ShiroTakeda/gams-mode",
+  "unstable": {
+   "version": [
+    20200131,
+    1335
+   ],
+   "commit": "bb4e8a223c8aac5ec9268d1cfcf1a9ea9b3d8a49",
+   "sha256": "084xjxj03d0ghh1lgrgwlkzf78y3szh47m3qva4r344yg0051yz3"
+  },
+  "stable": {
+   "version": [
+    6,
+    6
+   ],
+   "commit": "bb4e8a223c8aac5ec9268d1cfcf1a9ea9b3d8a49",
+   "sha256": "084xjxj03d0ghh1lgrgwlkzf78y3szh47m3qva4r344yg0051yz3"
+  }
+ },
+ {
+  "ename": "gandalf-theme",
+  "commit": "4354bbc1ec16783dd286d69fd6e4682ae63e28f9",
+  "sha256": "0wkmsg3pdw98gyp3q508wsqkzw821qsqi796ynm53zd7a4jfap4p",
+  "fetcher": "github",
+  "repo": "ptrv/gandalf-theme-emacs",
+  "unstable": {
+   "version": [
+    20130809,
+    947
+   ],
+   "commit": "4e472fc851431458537d458d09c1f5895e338536",
+   "sha256": "0sn3y1ilbg532mg941qmzipvzq86q31x86ypaf0h0m4015r7l59v"
+  }
+ },
+ {
+  "ename": "gap-mode",
+  "commit": "2790c00a79df237cf853a00f094fdeca9e532a9a",
+  "sha256": "1xq50vkw4sgfjv2sfc3ddybjzbaxq97xwgjxjkd8k6v5f755qn29",
+  "fetcher": "gitlab",
+  "repo": "gvol/gap-mode",
+  "unstable": {
+   "version": [
+    20191110,
+    2237
+   ],
+   "commit": "62adb8935033eead7fbf2c107c2dfb79afa53c67",
+   "sha256": "1rhhls2ylc2jg3mman3zq0mknmmwhll09d9dxrqmk5262d2f7vw4"
+  }
+ },
+ {
+  "ename": "gather",
+  "commit": "595e40c7102294684badf86deb72d86bbc3c1426",
+  "sha256": "1f0cqqp1a7w8g1pfvzxxb0hjrxq4m79a4n85dncqj2xhjxrkm0xk",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-gather",
+  "unstable": {
+   "version": [
+    20141230,
+    1338
+   ],
+   "commit": "50809fbc22d70a1c724c2dd99ac5a1f818ffeb6b",
+   "sha256": "0j0dg7nl9kmanayvw0712x5c5x9h48qmqdsyi0pijvgmv8l5slg5"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "303af57dd2ae0fc1363a3d1a84d475167f58c84a",
+   "sha256": "1q9bz294bc6bplwfrfzsczh444v9152wv7zm2l1pcpwv8n8581p6"
+  }
+ },
+ {
+  "ename": "gcmh",
+  "commit": "e478bee9aade9cdac22f9935b937978f3a3e1d3c",
+  "sha256": "0h5l02k01dv74n04ybnm1416dfhr5sm3h3maq0pypxqdfz1anhsg",
+  "fetcher": "gitlab",
+  "repo": "koral/gcmh",
+  "unstable": {
+   "version": [
+    20200409,
+    1456
+   ],
+   "commit": "b1bde5089169a74f62033d027e06e98cbeedd43f",
+   "sha256": "0k0gh1dr3hipg73mpgkw6hlg27c7c5r8aa61p4vj2rpmf6k90pc5"
+  }
+ },
+ {
+  "ename": "gdscript-mode",
+  "commit": "b4414989beecd113ec405116402a5232ac32cb85",
+  "sha256": "1clakvkjifqhi847p6zrxxfkr5s3hv33qsh7r96w04pihyd38q9l",
+  "fetcher": "github",
+  "repo": "GDQuest/emacs-gdscript-mode",
+  "unstable": {
+   "version": [
+    20200427,
+    1514
+   ],
+   "commit": "0718ca9b090780bd28d02ef5c79cd0e7c5a84d5e",
+   "sha256": "0wdsfakx50x60lxb6d46h9rhb1vrisch71fmdl1c8jiwf57q5kpn"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "86577f81dc2640d5388565d0430b4df241bdd38e",
+   "sha256": "0cpfdbza3gh1s6y5igs51b1m7g7dfa7jszjfawz3v2g49p4a5m2d"
+  }
+ },
+ {
+  "ename": "geben",
+  "commit": "6f8648609e160f7dcefe4a963e8b00475f2fff78",
+  "sha256": "1ai1qcx76m8xh80c8zixq9cqbhnqmj3jk3r7lj3ngbiwx4pnlnwf",
+  "fetcher": "github",
+  "repo": "ahungry/geben",
+  "unstable": {
+   "version": [
+    20170801,
+    1251
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "ec3f5e9376cf1ea5615990bd8c212543d57f033b",
+   "sha256": "0860nnarbm76jp40v7p5d2wdnq12p03paiw17g3h5p27wnaj611d"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "003abd23a7468daa133dfbc7ef85d0d61a0410dc",
+   "sha256": "15ck23xv3dz9i4w5xd9lkg0c6rlsyxdz465xrpkr77fq9qw0c4dg"
+  }
+ },
+ {
+  "ename": "geben-helm-projectile",
+  "commit": "b7d28c45304a69e6ca78b3d00df2563171c027ee",
+  "sha256": "11zhapys6wx2cadflvjimsmilwvjpfd4ihwzzmap8shxpyllsq9r",
+  "fetcher": "github",
+  "repo": "ahungry/geben-helm-projectile",
+  "unstable": {
+   "version": [
+    20160611,
+    59
+   ],
+   "deps": [
+    "geben",
+    "helm-projectile"
+   ],
+   "commit": "31ce0faca5dcc71924884f03fd5a7a25d00ccd9b",
+   "sha256": "0a1srhwfbgkvndjfi9irg5s6snlxyqrw1vwyqg1sn8aqnbpgib04"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    4
+   ],
+   "deps": [
+    "geben",
+    "helm-projectile"
+   ],
+   "commit": "31ce0faca5dcc71924884f03fd5a7a25d00ccd9b",
+   "sha256": "0a1srhwfbgkvndjfi9irg5s6snlxyqrw1vwyqg1sn8aqnbpgib04"
+  }
+ },
+ {
+  "ename": "geeknote",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "03q0ca8m110qw8wczyyx94gwqymwnmamahw30j7fqkq6ry19yqsm",
+  "fetcher": "github",
+  "repo": "avendael/emacs-geeknote",
+  "unstable": {
+   "version": [
+    20160717,
+    1249
+   ],
+   "commit": "8ed607c76864afcc9c338972ab093caf4501cbf8",
+   "sha256": "1dadsyvkzf0rg6immjdjkb0k7iaqh3hm1w9qhap94j54j7v75w2q"
+  }
+ },
+ {
+  "ename": "geiser",
+  "commit": "67dc8d6e33f3522043f96761b23ea68c9c27084e",
+  "sha256": "1g7z6c3lfa7slwrxk7q8awqs39qibcv2kc4c2fwlwvgbcfhkw085",
+  "fetcher": "gitlab",
+  "repo": "jaor/geiser",
+  "unstable": {
+   "version": [
+    20200513,
+    1219
+   ],
+   "commit": "7a39c8eb7ca2a0a4fe0ad307ea55578e11e6dfdd",
+   "sha256": "09lv9ixgrkb351nb67nas5yfa8vk0rz4ljhc1hxxn4g451hbd14f"
+  },
+  "stable": {
+   "version": [
+    0,
+    11,
+    2
+   ],
+   "commit": "51252bcb35d6afe006487b73c1e2276210b4ed83",
+   "sha256": "1khi1bghsjx6cs5acizmlbw9z19s4qycnji9krdbn42cbpv0rysv"
+  }
+ },
+ {
+  "ename": "geiser-kawa",
+  "commit": "68690d6b011c95197af6b5a87cc21c4dbe97ff00",
+  "sha256": "0gzzab0v93vd9n14s1bya0frf3dagh0gbwg1an4mapg7gjz9ffdg",
+  "fetcher": "gitlab",
+  "repo": "spellcard199/geiser-kawa",
+  "unstable": {
+   "version": [
+    20200507,
+    1305
+   ],
+   "deps": [
+    "geiser"
+   ],
+   "commit": "b96c008e9c3b8dc210d8b536ee7b76b8690c8af6",
+   "sha256": "0j2djjgfd4hd2k60ymgxzpsy52ks6hxpd4rr81z5nh9fdg9axhrs"
+  }
+ },
+ {
+  "ename": "general",
+  "commit": "d86383b443622d78f6d8ff7b8ac74c8d72879d26",
+  "sha256": "104ywsfylfymly64p1i3hsy9pnpz3dkpmcq1ygafnld8zjd08gpc",
+  "fetcher": "github",
+  "repo": "noctuid/general.el",
+  "unstable": {
+   "version": [
+    20200516,
+    50
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a0b17d207badf462311b2eef7c065b884462cb7c",
+   "sha256": "0wn5rk3gkimdklip392mnjrmkymgrb7q9skifi03cbpjam1anzvv"
+  }
+ },
+ {
+  "ename": "genrnc",
+  "commit": "dd2d908ba5fa96d90643091573939e54d9165aaa",
+  "sha256": "1nwbdscl0yh9j1n421can93m6s8j9dkyb3xmpampr6x528g6z0lm",
+  "fetcher": "github",
+  "repo": "aki2o/emacs-genrnc",
+  "unstable": {
+   "version": [
+    20140612,
+    1237
+   ],
+   "deps": [
+    "concurrent",
+    "deferred",
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "da75b1966a73ad215ec2ced4522c25f4d0bf1f9a",
+   "sha256": "08cw1fa25kbhbq2sp1cpn90bz38i9hjfdj93xf6wvki55b52s0nn"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "concurrent",
+    "deferred",
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "da75b1966a73ad215ec2ced4522c25f4d0bf1f9a",
+   "sha256": "08cw1fa25kbhbq2sp1cpn90bz38i9hjfdj93xf6wvki55b52s0nn"
+  }
+ },
+ {
+  "ename": "geoip",
+  "commit": "40336cd135414e1c6f478705e5873eaa396554b0",
+  "sha256": "0j70gl9423ghrjp4k250kq8xpngxa8pzlpivpksyzzj32s7dy1nw",
+  "fetcher": "github",
+  "repo": "xuchunyang/geoip.el",
+  "unstable": {
+   "version": [
+    20200310,
+    911
+   ],
+   "commit": "25eb1278788b942c38405c233d3614a1de92ddea",
+   "sha256": "0nbgbqxmpq6c487yx4igph58zmaslqn7z92x9b1xymw58fnlyrm6"
+  }
+ },
+ {
+  "ename": "geolocation",
+  "commit": "fddc094aa08365c0e04f0d8f2f19a47908964f50",
+  "sha256": "03mxy8dfmy8db8rx9j7q1lvzy11grz0bd3054ckwgmlb6ng7d72q",
+  "fetcher": "github",
+  "repo": "gonewest818/geolocation.el",
+  "unstable": {
+   "version": [
+    20200308,
+    2324
+   ],
+   "deps": [
+    "deferred",
+    "request-deferred"
+   ],
+   "commit": "83ab28e64bc067016b5344dffe93e380e9807e9c",
+   "sha256": "0ns7pgi4gbpfb192n9fdhv12zflq74jdmqc518rgh7hqlyp26mf4"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "deferred",
+    "request-deferred"
+   ],
+   "commit": "83ab28e64bc067016b5344dffe93e380e9807e9c",
+   "sha256": "0ns7pgi4gbpfb192n9fdhv12zflq74jdmqc518rgh7hqlyp26mf4"
+  }
+ },
+ {
+  "ename": "german-holidays",
+  "commit": "bf5b3807ff989b13f95e8d6fad2f26a42ff0643c",
+  "sha256": "0fgrxdgyl6va6axjc5l4sp90pyqaz5zha1g73xyhbxblshm5dwxn",
+  "fetcher": "github",
+  "repo": "rudolfochrist/german-holidays",
+  "unstable": {
+   "version": [
+    20181213,
+    644
+   ],
+   "commit": "a8462dffccaf2b665f2032e646b5370e993a386a",
+   "sha256": "1rf8p42pl7jmmdiibfcamlbr3kg6kslffv8vbpwn20xm2ii13rxz"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "8388b3bf5b5c38f9b9fcc9216ca26ef0640c6edc",
+   "sha256": "0344w4sbd6wlgl13j163v0hzjw9nwhvpr5s7658xsdd90wp4i701"
+  }
+ },
+ {
+  "ename": "gerrit",
+  "commit": "3b966a2476cf10234686e49d808bcbabe0686891",
+  "sha256": "1ikkd2xjr1n8p43pwycfrsfy9fkib83mf8l0p4bjrjszfcb9ln4v",
+  "fetcher": "github",
+  "repo": "thisch/gerrit.el",
+  "unstable": {
+   "version": [
+    20200226,
+    2137
+   ],
+   "deps": [
+    "dash",
+    "hydra",
+    "magit",
+    "s"
+   ],
+   "commit": "36870fd34ad681f907a57a2d82b2002735878614",
+   "sha256": "0h9v4ajp50wpg3zz0p7klyi705ynfy2mka0hpzz81kgpq8q8f46z"
+  }
+ },
+ {
+  "ename": "gerrit-download",
+  "commit": "18725e799efd1694ff2397b6c877f926ac5f4ce8",
+  "sha256": "1rlz0iqgvr8yxnv5qmk29xs1jwf0g0ckzanlyldcxvs7n6mhkjjp",
+  "fetcher": "github",
+  "repo": "chmouel/gerrit-download.el",
+  "unstable": {
+   "version": [
+    20150714,
+    1408
+   ],
+   "deps": [
+    "magit"
+   ],
+   "commit": "d568acc7c5935188c9bc19ba72719a6092d9f6fd",
+   "sha256": "1ch8yp0mgk57x0pny9bvkknsqj27fd1rcmpm9s7qpryrwqkp1ix4"
+  }
+ },
+ {
+  "ename": "gf",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "0vk866gy97zk8dbx48azjlpnrnf0snc50zlhbzv1is97d9frjici",
+  "fetcher": "github",
+  "repo": "GrammaticalFramework/gf-emacs-mode",
+  "unstable": {
+   "version": [
+    20181028,
+    1542
+   ],
+   "deps": [
+    "ht",
+    "s"
+   ],
+   "commit": "30b3127f229e0db522c7752f6957ca01b2ea2821",
+   "sha256": "1znskia2rvmpag8hs4z8d4m1yzn90ibaab94xd9qyk40f53nk4nl"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    2
+   ],
+   "deps": [
+    "ht",
+    "s"
+   ],
+   "commit": "49fa46db67634530499be969ffd3c436a22d4404",
+   "sha256": "0q234wzzmq1r53dv7z798liwkcbpnvc8mnxvkyfxd94f6za9ylgz"
+  }
+ },
+ {
+  "ename": "ggo-mode",
+  "commit": "e055994c3c3042eab11f11ec916ad5b56689809f",
+  "sha256": "1403x530n90jlfz3lq2vfiqx84cxsrhgs6hhmniq960cjj31q35p",
+  "fetcher": "github",
+  "repo": "mkjunker/ggo-mode",
+  "unstable": {
+   "version": [
+    20130524,
+    1143
+   ],
+   "commit": "e326899d9ed8217c7a4ea6cfdc4dd7aea61d6c1b",
+   "sha256": "0bwjiq4a4f5pg0ngvc3lmkk7aki8n9zqfa1dym0lk4vy6yfhcbhp"
+  },
+  "stable": {
+   "version": [
+    20130521
+   ],
+   "commit": "ea5097f87072309c7b77204888d459d084bf630f",
+   "sha256": "1m9ra9qp7bgf6anfqyn56n3xa9a25ran10k9wd355qknd5skq1zz"
+  }
+ },
+ {
+  "ename": "ggtags",
+  "commit": "b158bb1bc2fbe3de61a6b21174eac7b1457edda2",
+  "sha256": "1cmry4knxbx9257ivhfxsd09z07z3g3wjihi99nrwmhb9h4mpqyw",
+  "fetcher": "github",
+  "repo": "leoliu/ggtags",
+  "unstable": {
+   "version": [
+    20190320,
+    2208
+   ],
+   "commit": "4d9000034d352cd983ae6626f560e434d0b3e9ca",
+   "sha256": "1h89prfxdr50drsira3qqvh1mb7v09p4w8jpb7aapq2jl5fl2knc"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    13
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "17a121af1b375a6a5c5acec52f2ffd2b9715d244",
+   "sha256": "10hryphjjyi13gvk8sy8r5y7nvs0hbw8ycjqj9snai0c1f9xrdsa"
+  }
+ },
+ {
+  "ename": "gh",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "1141l8pas3m755yzby4zsan7p81nbnlch3kj1zh69qzjpgqp30c0",
+  "fetcher": "github",
+  "repo": "sigma/gh.el",
+  "unstable": {
+   "version": [
+    20180308,
+    2138
+   ],
+   "deps": [
+    "logito",
+    "marshal",
+    "pcache"
+   ],
+   "commit": "f029fc11f345ef04ab62ee91c38657e29c462fea",
+   "sha256": "1rgdpi8ld5hi2rp30p8sxbrl6z95nvq80jfp3zsr7cmsniwz0vv3"
+  },
+  "stable": {
+   "version": [
+    0,
+    10,
+    0
+   ],
+   "deps": [
+    "logito",
+    "pcache"
+   ],
+   "commit": "d0471dd1ba279072cbf8caf6368f3008d7120f25",
+   "sha256": "099msgsxdqyjrd18jv2mfkpaylp2scq18782354lcpr3fbp8vbsl"
+  }
+ },
+ {
+  "ename": "gh-md",
+  "commit": "2794e59d5fea812ce5b376d3d9609f50f6bca40e",
+  "sha256": "0b72fl1hj7gkqlqrr8hklq0w3ryqqqfn5qpb7a9i6q0vh98652xm",
+  "fetcher": "github",
+  "repo": "emacs-pe/gh-md.el",
+  "unstable": {
+   "version": [
+    20151207,
+    1740
+   ],
+   "commit": "693cb0dcadff70e813e1a9d303d227aff7898557",
+   "sha256": "0g3bjpnwgqczw6ddh4mv7pby0zyqzqgywjrjz2ib6hwmdqzyp1s0"
+  }
+ },
+ {
+  "ename": "ghc",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "02nc7a9khqpd4ca2snam8dq72m53q8x7v5awx56bjq31z6vcmav5",
+  "fetcher": "github",
+  "repo": "DanielG/ghc-mod",
+  "unstable": {
+   "version": [
+    20180121,
+    1218
+   ],
+   "deps": [
+    "haskell-mode"
+   ],
+   "commit": "391e187a5dfef4421aab2508fa6ff7875cc8259d",
+   "sha256": "1z142vgv72yfly7nyknzlcpm51sx5zqi26by3c7g68dbb4dxhq57"
+  },
+  "stable": {
+   "version": [
+    5,
+    8,
+    0,
+    0
+   ],
+   "deps": [
+    "haskell-mode"
+   ],
+   "commit": "35690941aadbe44d9401102ab44a39753e0bb2b5",
+   "sha256": "0fcaxj2lhkhkm2h91d9fdqas2b99wblwl74l2y6ckpf05hrc4w1q"
+  }
+ },
+ {
+  "ename": "ghc-imported-from",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "063kbymk4r1yrg5ks660d2byrnia6gs6nimjzrvqfi2ib1psc7jc",
+  "fetcher": "github",
+  "repo": "david-christiansen/ghc-imported-from-el",
+  "unstable": {
+   "version": [
+    20141124,
+    1932
+   ],
+   "commit": "fcff08628a19f5d26151564659218cc677779b79",
+   "sha256": "1ywwyc2kz1c1s26c412nmzh55cinh84cfiazyyi3jsy5zzwhrbhi"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "commit": "fcff08628a19f5d26151564659218cc677779b79",
+   "sha256": "1ywwyc2kz1c1s26c412nmzh55cinh84cfiazyyi3jsy5zzwhrbhi"
+  }
+ },
+ {
+  "ename": "ghci-completion",
+  "commit": "804aa2f9088dfc1b48b59aaa72a61f82fb5be971",
+  "sha256": "1a6k47z5kmacj1s5479393jyj27bjx0911yaqfmmwg2hr0yz7vll",
+  "fetcher": "github",
+  "repo": "manzyuk/ghci-completion",
+  "unstable": {
+   "version": [
+    20151125,
+    1257
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "c47e23d585d2a3c7b13aac163693fdc4f2bb90e5",
+   "sha256": "17fl3k2sqiavbv3bp6rnp3p89j6pnpkkp7wi26pzzk4675r5k45q"
+  }
+ },
+ {
+  "ename": "gherkin-mode",
+  "commit": "82d80becedead8db441eed6f7856ca64d78815e2",
+  "sha256": "0dhrsz24hn0sdf22wpmzbkn66g4540vdkl03pc27kv21gwa9ixxv",
+  "fetcher": "github",
+  "repo": "candera/gherkin-mode",
+  "unstable": {
+   "version": [
+    20171224,
+    1353
+   ],
+   "commit": "0313492e7da152f0aa73ddf96c0287ded8f51253",
+   "sha256": "15m9a2dcxgmbj0ni2qcxg3vpxvs50pyjvlacm3xd2xhm9wd484hr"
+  }
+ },
+ {
+  "ename": "ghost-blog",
+  "commit": "4a906d461bcb2aa07050b72669feb5787414d809",
+  "sha256": "0c591cx5kkfmhhqh8jall470iicxdv01mm3m13irq5xhmp3i5kjy",
+  "fetcher": "github",
+  "repo": "javaguirre/ghost-blog-emacs",
+  "unstable": {
+   "version": [
+    20171023,
+    742
+   ],
+   "deps": [
+    "markdown-mode"
+   ],
+   "commit": "71b358643cc9a2db1bf752281ff94aba9b59e4cc",
+   "sha256": "1fkh7zslkdi7a4x2xrk73acmigbi7yx9k6iaj75zbjfd49gyqj13"
+  }
+ },
+ {
+  "ename": "ghq",
+  "commit": "a9daa3b0039f6b296b8176523cffbbe27506bb02",
+  "sha256": "0prvywcgwdhx5pw66rv5kkfriahal2mli2ibam5np3z6bwcq4ngh",
+  "fetcher": "github",
+  "repo": "rcoedo/emacs-ghq",
+  "unstable": {
+   "version": [
+    20160803,
+    1557
+   ],
+   "commit": "aae4b8cb22fd6c24d2c9e3962c7e8e9dac6d9825",
+   "sha256": "0rh2k93c3a0vl073a3s3a3h6gkw454v1lyd7y8l3pd24vw9hc628"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "commit": "aae4b8cb22fd6c24d2c9e3962c7e8e9dac6d9825",
+   "sha256": "0rh2k93c3a0vl073a3s3a3h6gkw454v1lyd7y8l3pd24vw9hc628"
+  }
+ },
+ {
+  "ename": "ghub",
+  "commit": "f403587f77380d1db214aa34933a9b5cce1ef2bd",
+  "sha256": "15kjyi8ialpr1zjqvw68w9pa5sigcwy2szq21yvcy295z7ylzy4i",
+  "fetcher": "github",
+  "repo": "magit/ghub",
+  "unstable": {
+   "version": [
+    20200425,
+    2233
+   ],
+   "deps": [
+    "let-alist",
+    "treepy"
+   ],
+   "commit": "206f2b5b2ab622efda8da85feaa3bc2a1e0f3da3",
+   "sha256": "132y2yi9c91p25cwnvb9w6jj7la6fdc0xlvnxmbnfnxaic4jyhs3"
+  },
+  "stable": {
+   "version": [
+    3,
+    3,
+    0
+   ],
+   "deps": [
+    "let-alist",
+    "treepy"
+   ],
+   "commit": "eec071aa9e2810c8ce2f2522e6be8d78f579069d",
+   "sha256": "1229g0d9f4ywwjndx32x4z5jdr0kzyi44hjxmy0sifwfmg9nn251"
+  }
+ },
+ {
+  "ename": "ghub+",
+  "commit": "03a412fd25218ff6f302734e078a699ff0234e36",
+  "sha256": "0xx7nwmjx3f7z6z164x1lb9arbb3m3d16mpn92v66w572rhbr34n",
+  "fetcher": "github",
+  "repo": "vermiculus/ghub-plus",
+  "unstable": {
+   "version": [
+    20191229,
+    1748
+   ],
+   "deps": [
+    "apiwrap",
+    "ghub"
+   ],
+   "commit": "b1adef2402d7599911d4dd447a987a0cea04e6fe",
+   "sha256": "0bzri6s5mwvgir9smkz68d5cgcf4glpdmcj8dz8rjxziwrg6k5bz"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "apiwrap",
+    "ghub"
+   ],
+   "commit": "b4a9662f5a6562f8d1dfdda2f009ec78a107c9a2",
+   "sha256": "0xi7xhdla64xbcfqi8x8yzqc6v6rrqxd4q8lcrv7sw08ap5ykfas"
+  }
+ },
+ {
+  "ename": "gif-screencast",
+  "commit": "6d17ca0213ba5ef9dce92002e281e6f08c3492be",
+  "sha256": "05l46bsnjdnvcgwx5rc5y7ry9p0hvmkf09rlpalgnrp8qpy8xw0q",
+  "fetcher": "gitlab",
+  "repo": "Ambrevar/emacs-gif-screencast",
+  "unstable": {
+   "version": [
+    20200327,
+    1332
+   ],
+   "commit": "e39786458fb30e2e9683094c75c6c2cef537d9c4",
+   "sha256": "135mkyi8kqsxs0a3qa20splvx4xhl8k91s48yy6gwlz6m81vwvb5"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "9522f7e41d07b59afe21e28abbf186f78be3eab6",
+   "sha256": "1g1by8lvf8c9vzm4wwsi5kp285kaj0ahsl54048ympin4pi0njw9"
+  }
+ },
+ {
+  "ename": "gift-mode",
+  "commit": "c4c9081a60bdbf4e5fe1ccc4809c0f6f396d11e4",
+  "sha256": "0sybrjmcg90cjaax7lzzqvacirn5l23hqy9d843c660fsv98scg1",
+  "fetcher": "github",
+  "repo": "csrhodes/gift-mode",
+  "unstable": {
+   "version": [
+    20180530,
+    1235
+   ],
+   "commit": "b0441ae6e02f343be3b611a2d4b40495ecd932f0",
+   "sha256": "0dwpmvjsczcdzwhjvpfxrkfha513538z8wq3gr3l1zc1kdggx2bk"
+  }
+ },
+ {
+  "ename": "gildas-mode",
+  "commit": "f43d3aec955d31023056baba971805f0ebbb6702",
+  "sha256": "0bc3d8bnvg1w2chrr4rp9daq1x8p41qgklrniq0bbkr2h93cmkgv",
+  "fetcher": "github",
+  "repo": "smaret/gildas-mode",
+  "unstable": {
+   "version": [
+    20181022,
+    649
+   ],
+   "deps": [
+    "polymode"
+   ],
+   "commit": "d0c9e997e2aa0bcd9b8b7db082d69100448cb1b2",
+   "sha256": "11290b6daly9nn73iw0s6386hzjk3q2iywdhiazxscxaxzhx2c8c"
+  }
+ },
+ {
+  "ename": "gist",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "053fl8aw0ram9wsabzvmlm5w2klwd2pgcn2w9r1yqfs4xqja5sd3",
+  "fetcher": "github",
+  "repo": "defunkt/gist.el",
+  "unstable": {
+   "version": [
+    20171128,
+    406
+   ],
+   "deps": [
+    "gh"
+   ],
+   "commit": "314fe6ab80fae35b95f0734eceb82f72813b6f41",
+   "sha256": "0vbyzww9qmsvdpdc6d6wq6drlq1r9y92807fjhs0frgzmq6dg0rh"
+  },
+  "stable": {
+   "version": [
+    1,
+    4,
+    0
+   ],
+   "deps": [
+    "gh"
+   ],
+   "commit": "a03f142455e8b39f77fbd57ee1c1e44478c1f9e2",
+   "sha256": "1xisjaxr54zrxzxj8cp8f90kzphd5v3j56d14534fm5r1f5343vp"
+  }
+ },
+ {
+  "ename": "git",
+  "commit": "ce19d2716416295966716db47241a0e37b412ab5",
+  "sha256": "1nd2yvfgin13m368gjn7xah99glspnam4g4fh348x4makxcaw8w5",
+  "fetcher": "github",
+  "repo": "rejeep/git.el",
+  "unstable": {
+   "version": [
+    20140128,
+    1041
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "a3396a7027a7d986598c6a2d6d5599bac918f3da",
+   "sha256": "10siqf21ay6vl1r1v2c93rajzyjc67m4wq9q88pbij0z18vkq2f0"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "8b7f1477ef367b5b7de452589dd9a8ab30150d0a",
+   "sha256": "06ws3x5qa92drmn6rcp502jk2yil6q9gkzdmb2gww9gb2g695wl5"
+  }
+ },
+ {
+  "ename": "git-annex",
+  "commit": "9c91e16bb9e92db9dc9be6a7af3944c3290d2f14",
+  "sha256": "0194y24vq1w6m2cjgqgx9dqp99cq8y9licyry2zxa5brbrsxi94l",
+  "fetcher": "github",
+  "repo": "jwiegley/git-annex-el",
+  "unstable": {
+   "version": [
+    20190625,
+    2118
+   ],
+   "commit": "1324d3f23c534fe79391a2c256bb8803054e383b",
+   "sha256": "1lfky2nsrlndlbvk6vwbswnvbvkz1sxgg0n3r5q6xykdkjym0lrh"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "7d41775a1709b5754a7779e9f64f15d336ea5c8c",
+   "sha256": "0fm62lm29wp1ljgyi6pqqkzwzps53cjjbj5j3y0c2013ry7va6c5"
+  }
+ },
+ {
+  "ename": "git-attr",
+  "commit": "3417e4bc586df60b5e6239b1f7683b87953f5b7c",
+  "sha256": "084l3zdcgy1ka2wq1fz9d6ryhg38gxvr52njlv43gwibzvbqniyi",
+  "fetcher": "github",
+  "repo": "arnested/emacs-git-attr",
+  "unstable": {
+   "version": [
+    20180925,
+    2003
+   ],
+   "commit": "50df0630eba2a931146f676d349b29bde6b6b37b",
+   "sha256": "181yd1nwg5mvk8i5y49fmqzk6jp0rzx3zl50qq59d48jlj4l5f9f"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "3e43a0cf616b00a4bbd3c6b49fd2397f3103796f",
+   "sha256": "1alpr4gnkikwzljz0fdbrx5hs3zy5s2fz7qyxdz0nx9hv8zb5ir5"
+  }
+ },
+ {
+  "ename": "git-auto-commit-mode",
+  "commit": "5660fb76ce93e5fe56227698d079c6994ef3305f",
+  "sha256": "0nf4n63xnzcsizjk1yl8qvqj9wjdqy57kvn6r736xvsxwzd44xgl",
+  "fetcher": "github",
+  "repo": "ryuslash/git-auto-commit-mode",
+  "unstable": {
+   "version": [
+    20200322,
+    2007
+   ],
+   "commit": "dd0c2441de0f5ff8c69c8260d9450d0b607e3e55",
+   "sha256": "0r7jry1sbqsp7c1vxf7fchc7ivmnccfrflg52379v3gmpvd8s0kn"
+  },
+  "stable": {
+   "version": [
+    4,
+    6,
+    0
+   ],
+   "commit": "ae69e61233417a7f14efba35e42bd842b707aeb0",
+   "sha256": "0nrx3wnn2jii4yiv9c1cbbll4bgll5j73ypp1fi82kk99n0d8372"
+  }
+ },
+ {
+  "ename": "git-backup",
+  "commit": "07d8ba2d036abeeb585f9dfd0399ae97fd1e2415",
+  "sha256": "094sh80zyidzavf0b4nfpryi164x24mi4bs8jqcwvlyg91vn9b96",
+  "fetcher": "github",
+  "repo": "antham/git-backup",
+  "unstable": {
+   "version": [
+    20191209,
+    2144
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "643c8c292c128ac3d0c4d80f2d4a2e19db711e6c",
+   "sha256": "0k7blj6s31llvznwsj94kwpnahb6ga58vkx6542ibdmcgdb59n1d"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "e28d7af2d1c58fa5b8068223eb83a73f044e6a6c",
+   "sha256": "1kx5pmm7hrcppryb39z289dab5h0w6hwk0jk1bmvbg9lzf9hqz3q"
+  }
+ },
+ {
+  "ename": "git-backup-ivy",
+  "commit": "51d979059ab570a0e43264dfa081e7241dc3a2b5",
+  "sha256": "1yfyq6i2cfm0kdjkzrc5pql2k5hsk9wwhz220blcizldw142p236",
+  "fetcher": "github",
+  "repo": "walseb/git-backup-ivy",
+  "unstable": {
+   "version": [
+    20200424,
+    1049
+   ],
+   "deps": [
+    "git-backup",
+    "ivy"
+   ],
+   "commit": "d9361c9ad903e0d58f25ccebad99d9a753f1937a",
+   "sha256": "0jkkajv0scbp91al18fqqyvvcda2z6wkkbz0p1rcwzap5g96b7ag"
+  }
+ },
+ {
+  "ename": "git-blamed",
+  "commit": "87bc01218964a01cfd471ee068ed75976793a568",
+  "sha256": "08az5mwg8kv8xsivs63y4sym54l1n34zc9z6k0iwpfixv9f8bk9p",
+  "fetcher": "github",
+  "repo": "tsgates/git-emacs",
+  "unstable": {
+   "version": [
+    20161028,
+    1926
+   ],
+   "commit": "cef196abf398e2dd11f775d1e6cd8690567408aa",
+   "sha256": "1n6x69z1s3hk6m6w8gpmqyrb2cxfzhi9w7q94d46c3z6r75v18vz"
+  }
+ },
+ {
+  "ename": "git-command",
+  "commit": "8a55d697bc95a7026c7788c13e4765e1b71075e3",
+  "sha256": "1hsxak63y6648n0jkzl5ajxg45w84qq8vljvjh0bmwfrbb67kwbg",
+  "fetcher": "github",
+  "repo": "10sr/git-command-el",
+  "unstable": {
+   "version": [
+    20191028,
+    333
+   ],
+   "deps": [
+    "term-run",
+    "with-editor"
+   ],
+   "commit": "a773d40da39dfb1c6ecf2b0758aa370ddea8f06d",
+   "sha256": "01b2h88a6fxy23p9ggwlj5vv30aw16m8fnqxx9yr9c6yv8p9f5cl"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "git-ps1-mode",
+    "term-run",
+    "with-editor"
+   ],
+   "commit": "6cc5c17ca3cc1967b5402bb9a0538fb90933428d",
+   "sha256": "0a3ws852ypi34ash39srkwzkfish4n3c5lma10d9xzddjrwapgj9"
+  }
+ },
+ {
+  "ename": "git-commit",
+  "commit": "cec5af50ae7634cc566adfbfdf0f95c3e2951c0c",
+  "sha256": "1i7122fydqga68cilgzir80xfq77hnrw75zrvn52mjymfli6aza2",
+  "fetcher": "github",
+  "repo": "magit/magit",
+  "unstable": {
+   "version": [
+    20200207,
+    1819
+   ],
+   "deps": [
+    "dash",
+    "transient",
+    "with-editor"
+   ],
+   "commit": "d05545ec2fd7edf915eaf1b9c15c785bb08975cc",
+   "sha256": "11aqyy4r9hrdi9nlypd70hn8384b6q89c7xavgv8c5q7f2g5z9qg"
+  },
+  "stable": {
+   "version": [
+    2,
+    90,
+    1
+   ],
+   "deps": [
+    "dash",
+    "with-editor"
+   ],
+   "commit": "791901b2f1d26fa0a383147fe77948a9abc753da",
+   "sha256": "1kw94sdczswsyzn1zlk5s5aplpdv4qd7qcqc5zfxsmsfwm3jacl4"
+  }
+ },
+ {
+  "ename": "git-commit-insert-issue",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0xhlchr7dbm0hp4cjba3x1fdf7lnfc97id327i2fqgkdc4yn9fax",
+  "fetcher": "gitlab",
+  "repo": "emacs-stuff/git-commit-insert-issue",
+  "unstable": {
+   "version": [
+    20191008,
+    950
+   ],
+   "deps": [
+    "bitbucket",
+    "github-issues",
+    "gitlab",
+    "projectile",
+    "s"
+   ],
+   "commit": "51c863d9ba21bf11f6681b54be19b4c04d50d1ba",
+   "sha256": "16m3669vm7j0ksfxvp8xqli70z8smb2xlf4cbzgjkfsl3kffbww6"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "deps": [
+    "bitbucket",
+    "github-issues",
+    "gitlab",
+    "helm",
+    "projectile",
+    "s"
+   ],
+   "commit": "5f08c17bf93b17915415d435ee41923d924fe20b",
+   "sha256": "11my5apnyhdqh0pmq9wdjd1iah415a5nw87sk586cb3vxnbn5qas"
+  }
+ },
+ {
+  "ename": "git-dwim",
+  "commit": "f8e4328cae9b4759a75da0b26ea8b68821bc71af",
+  "sha256": "0xcigah06ak5wdma4ddcix58q2v5hszncb65f272m4lc2racgsfl",
+  "fetcher": "github",
+  "repo": "rubikitch/emacs-git-dwim",
+  "unstable": {
+   "version": [
+    20170126,
+    1214
+   ],
+   "commit": "485c732130686c2f28a026e385366006435394b9",
+   "sha256": "0rcrsjx4ifa9y3rd5l4498kvqkh58zx21gl7mqp053jdsqqq1yrx"
+  }
+ },
+ {
+  "ename": "git-gutter",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "1vcrjxg9pckixsbfmvpf0624s990nx33qn0p6xhnag4jn81ih03x",
+  "fetcher": "github",
+  "repo": "emacsorphanage/git-gutter",
+  "unstable": {
+   "version": [
+    20200326,
+    1814
+   ],
+   "commit": "2c3242116a42dbbe30fc0844d1ec3c41074cdaba",
+   "sha256": "18gbns5mjwr5kirgpzjp4iqmj130qa5m1hs4phx1057qdq11ihrr"
+  },
+  "stable": {
+   "version": [
+    0,
+    90
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a786465bd527c13e32c73c02b95086560c1be878",
+   "sha256": "1abagq0psip7cgsqbfjv72qy60ywsny0ibsfcn74ldj6a9v17mz5"
+  }
+ },
+ {
+  "ename": "git-gutter+",
+  "commit": "b2db25d23c2a1a4f38867aac25d687a150e95c2b",
+  "sha256": "1w78p5cz6kyl9kmndgvwnfrs80ha707s8952hycrihgfb6lixmp0",
+  "fetcher": "github",
+  "repo": "nonsequitur/git-gutter-plus",
+  "unstable": {
+   "version": [
+    20151204,
+    1723
+   ],
+   "deps": [
+    "dash",
+    "git-commit"
+   ],
+   "commit": "b7726997806d9a2da9fe84ff00ecf21d62b6f975",
+   "sha256": "0bhrrgdzzj8gwxjx7b2kibp1b6s0vgvykfg0n47iq49m6rqkgi5q"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "git-commit"
+   ],
+   "commit": "f8daebb6569bb116086d8653da3505382e03d940",
+   "sha256": "101hracd77mici778x3ixwrcicd6fqkcr9z76kapkr0dq5z42yjb"
+  }
+ },
+ {
+  "ename": "git-gutter-fringe",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "1i8vvh2si3fdgq1m0yyzs9qbw5jzykp4qgl3ksm4xrimlw1ln4vc",
+  "fetcher": "github",
+  "repo": "emacsorphanage/git-gutter-fringe",
+  "unstable": {
+   "version": [
+    20200323,
+    2249
+   ],
+   "deps": [
+    "cl-lib",
+    "fringe-helper",
+    "git-gutter"
+   ],
+   "commit": "da19a474137876b29b5658ee7e9ae366f2b65c1d",
+   "sha256": "015qaaap2cvy4cxl31r27z48zbgd9vyj6rac9yv3caw5zsvzlkiv"
+  },
+  "stable": {
+   "version": [
+    0,
+    23
+   ],
+   "deps": [
+    "cl-lib",
+    "fringe-helper",
+    "git-gutter"
+   ],
+   "commit": "dfc93d1064df154a809aab350942830408051da3",
+   "sha256": "18jpa5i99x0gqizs2qbqr8c1jlza8x9vpb6wg9zqd4np1p6q4lan"
+  }
+ },
+ {
+  "ename": "git-gutter-fringe+",
+  "commit": "ad46c349d13f7d40db706b487319ede40b96b09c",
+  "sha256": "1zkjb8p08cq2nqskn79rjszlhp9mrblplgamgi66yskz8qb1bgcc",
+  "fetcher": "github",
+  "repo": "nonsequitur/git-gutter-fringe-plus",
+  "unstable": {
+   "version": [
+    20140729,
+    1103
+   ],
+   "deps": [
+    "fringe-helper",
+    "git-gutter+"
+   ],
+   "commit": "7a2f49d2455a3a872e90e5f7dd4e6b27f1d96cfc",
+   "sha256": "1rsj193zpblndki4khjjlwl2njxb329d42l75ki55msxifqrn4fi"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "fringe-helper",
+    "git-gutter+"
+   ],
+   "commit": "ce9d594c0189e78d78df26a0c26bbcf886e373cd",
+   "sha256": "1c7ijbpa7xw831k55cdm2gl8r597rxnp22jcmqnfpwqkqmk48ln9"
+  }
+ },
+ {
+  "ename": "git-identity",
+  "commit": "ebad3a7a81fbf0293ac04ba319929c8b24bb98f5",
+  "sha256": "0kmpm5zp2x60r68in94x2bazq4wxx95n6zfc6mwiq8ln8m0164j0",
+  "fetcher": "github",
+  "repo": "akirak/git-identity.el",
+  "unstable": {
+   "version": [
+    20200124,
+    1856
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "hydra"
+   ],
+   "commit": "8471e6f8ef6c502dc999e513b552d6b23974d40d",
+   "sha256": "1w4dnrc0dq0brdq0dpk5lj7ji50v5b7q32f1ghkvx50i7a3dslvq"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "hydra"
+   ],
+   "commit": "d5b8dcfc9f93aecfcd9c6fb212742c165d48173f",
+   "sha256": "1dblc0vlnkm1b16pgi40yr21wh45larb7818l9q8p9nbpxcjinh2"
+  }
+ },
+ {
+  "ename": "git-io",
+  "commit": "a713197f227e3c43de3609dd505cf7cd226d94b9",
+  "sha256": "1acwc9iqchvlvx98fxh4xf3xphv0xzrnxpv8kkl8qaly41izfj0v",
+  "fetcher": "github",
+  "repo": "tejasbubane/emacs-git-io",
+  "unstable": {
+   "version": [
+    20180317,
+    1752
+   ],
+   "commit": "48753acba73b48b997bb678fb5e2a938ae63b5d6",
+   "sha256": "1zw24j6l0ap761q1knxjaxzdfz11kmfq29aag5av4n87m86rxzr8"
+  }
+ },
+ {
+  "ename": "git-lens",
+  "commit": "a52b516b7b10bdada2f64499c8f43f85a236f254",
+  "sha256": "02a393b5y4vpmf9ixgyi3a4gbzk4146zql827ljlav3j0434ssw2",
+  "fetcher": "gitlab",
+  "repo": "pidu/git-lens",
+  "unstable": {
+   "version": [
+    20190319,
+    1342
+   ],
+   "commit": "f6cc0a37c9c5c422c49c32650e70bc4721707985",
+   "sha256": "05bkpg7xz8644np9imsj5ms821sbsb784ap5fjdnnn69kllz0d33"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    0
+   ],
+   "commit": "ea49e2e005af977a08331f8caa8f64d102b3b932",
+   "sha256": "0prx0xbnhhp46c09nnzpz07jgr3s5ngrw8zjksf48abr8acwywfv"
+  }
+ },
+ {
+  "ename": "git-link",
+  "commit": "1385443585e628e3d4efb3badb7611e9d653e0c9",
+  "sha256": "1vqabnmdw8pxd84c15ghh1rnglwb5i4zxicvpkg1ci8xalayn1c7",
+  "fetcher": "github",
+  "repo": "sshaw/git-link",
+  "unstable": {
+   "version": [
+    20200331,
+    2329
+   ],
+   "commit": "7142ec898f0cb97aa5d1a68da7957b4710bbfa87",
+   "sha256": "0xcgzhlxd7ycfxmbgkwm04pdfjysygkka3jis4p45zy6mrackn4c"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    5
+   ],
+   "commit": "267bd81c228bdab434172dbef896f3f3b82713fa",
+   "sha256": "04xa6lp8wkjb6zs096bf4sz124grcjj15xv1h009bmn2j95rggj6"
+  }
+ },
+ {
+  "ename": "git-messenger",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "0nmxx7543x7cl40m69lmyb5fv68gzdwbr8dq18qbi5kapvhg5b8y",
+  "fetcher": "github",
+  "repo": "emacsorphanage/git-messenger",
+  "unstable": {
+   "version": [
+    20200321,
+    2337
+   ],
+   "deps": [
+    "popup"
+   ],
+   "commit": "2d64e62e33be9f881ebb019afc183caac9c62eda",
+   "sha256": "1w23qjc740bxj95gdzjcy3qldfmx4y19dhcrzh83l9wfz4y566c7"
+  },
+  "stable": {
+   "version": [
+    0,
+    18
+   ],
+   "deps": [
+    "popup"
+   ],
+   "commit": "9297464c010dd8a2d584ac8e012876856655a8b5",
+   "sha256": "04fnby2nblk8l70gv09asxkmnn53fh1pdfs77ix44npp99fyw8ix"
+  }
+ },
+ {
+  "ename": "git-msg-prefix",
+  "commit": "bd37811d17beaa54e08eb4968791da960d37b391",
+  "sha256": "0vicaj91yhbzda76wrwmbfby2ikaja52bcm923jx8brjh1wd99wr",
+  "fetcher": "github",
+  "repo": "kidd/git-msg-prefix.el",
+  "unstable": {
+   "version": [
+    20191031,
+    1304
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "43f6b31c1090371260a2f15b2117a7666920bee7",
+   "sha256": "01fcf0qqy24ji0ka9gh91gdrp81ilq2xjwah3rv2b90yjk8wib60"
+  }
+ },
+ {
+  "ename": "git-ps1-mode",
+  "commit": "ea177b5ea168828881bd8dcd29ef6b4cb81317f0",
+  "sha256": "15gswi9s0m3hrsl1qqyjnjgbglsai95klbdp51h3pcq7zj22wkn6",
+  "fetcher": "github",
+  "repo": "10sr/git-ps1-mode-el",
+  "unstable": {
+   "version": [
+    20200113,
+    704
+   ],
+   "commit": "6762a309bd593d26258dfbf43e7bc21254a70fbf",
+   "sha256": "1xrp9c7ih5xvq9mhd4h2vwn47khmiycdinzhn4kmp69xy1a93b2c"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "commit": "288e5c4d0ff20a4e1ac9e72b6af632f67f1d7525",
+   "sha256": "1hyq3il03cm6apfawps60r4km8r6pw0vphzba30smsqfk50z3ya3"
+  }
+ },
+ {
+  "ename": "git-time-metric",
+  "commit": "7f6f8839be619d3eeb6ab83b630441bf8c0ca024",
+  "sha256": "1lwpj3z1i532v59vcpkcp1bkad7i2gmlk2yspjhvyvsgp1slsxl1",
+  "fetcher": "github",
+  "repo": "c301/gtm-emacs-plugin",
+  "unstable": {
+   "version": [
+    20181116,
+    2011
+   ],
+   "commit": "287108ed1d6885dc795eb3bad4476aa08c626186",
+   "sha256": "0cq4jn2vvcm8hyzmmnnvbmffygxnnv0v71kqlgjm8lcil0xsf84d"
+  }
+ },
+ {
+  "ename": "git-timemachine",
+  "commit": "a52b516b7b10bdada2f64499c8f43f85a236f254",
+  "sha256": "06xdzic7j3d3pqgwxp1q6fs8sf3mi02a9phjvhk90kyvbr8h94ck",
+  "fetcher": "gitlab",
+  "repo": "pidu/git-timemachine",
+  "unstable": {
+   "version": [
+    20190730,
+    849
+   ],
+   "deps": [
+    "transient"
+   ],
+   "commit": "391eb61050de321101e631fcf373fc70ec6e7700",
+   "sha256": "1pz4l1xnq6s67w5yq9107vm8dg7rqf8n9dmbn90jys97c722g70n"
+  },
+  "stable": {
+   "version": [
+    4,
+    11
+   ],
+   "deps": [
+    "transient"
+   ],
+   "commit": "391eb61050de321101e631fcf373fc70ec6e7700",
+   "sha256": "1pz4l1xnq6s67w5yq9107vm8dg7rqf8n9dmbn90jys97c722g70n"
+  }
+ },
+ {
+  "ename": "git-walktree",
+  "commit": "10bccf74f0bfd3788a7a07956b9f46fe40ff81e8",
+  "sha256": "1iyxncq8bgh4hlsll7agsxnw5038g712aglh4qczg202kdq1qcnz",
+  "fetcher": "github",
+  "repo": "10sr/git-walktree-el",
+  "unstable": {
+   "version": [
+    20191101,
+    302
+   ],
+   "deps": [
+    "cl-lib",
+    "git"
+   ],
+   "commit": "162d9073286c256502df4baa9845790b9f4c2f05",
+   "sha256": "17z0csy00i56l7mmz2xhc1pmq044m17r4xy1azp775h9k9y2n6m9"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "git"
+   ],
+   "commit": "a1a5490b89d193724ec637818baf2d8edf97c638",
+   "sha256": "13ksz3syz96n3qzk4spwyq8g8xl8riqdlh9glp92v3hg2h3d5nbs"
+  }
+ },
+ {
+  "ename": "git-wip-timemachine",
+  "commit": "81b5dd5765f52efdb88fdc14f48af641a18b3dcb",
+  "sha256": "02fi51k6l23cgnwjp507ylkiwb8azmnhc0fips68nwn9dghzp6dw",
+  "fetcher": "github",
+  "repo": "itsjeyd/git-wip-timemachine",
+  "unstable": {
+   "version": [
+    20150408,
+    1006
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "ed4c7931a5f5233bf3e358b1e81647d063526460",
+   "sha256": "1ivnf4vsqk6c7iw1cid7q1hxp7047ajd1mpg0fl002d7m7ginhyl"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "7da7f2acec0b1d1252d7474b13190ae88e5b205d",
+   "sha256": "0igawn43i81icshimj5agv33ab120hd6182knlrn3i46p7lcs3lx"
+  }
+ },
+ {
+  "ename": "gitattributes-mode",
+  "commit": "4b4e2ddd2a80875afc0fc654052e6cbff2f3777f",
+  "sha256": "1gjs0pjh6ap0h54savamzx94lq6vqrg58jxqaq5n5qplrbg15a6x",
+  "fetcher": "github",
+  "repo": "magit/git-modes",
+  "unstable": {
+   "version": [
+    20180318,
+    1956
+   ],
+   "commit": "55468314a5f6b77d2c96be62c7005ac94545e217",
+   "sha256": "08hy7rbfazs6grkpk54i82bz0i0c74zcjk96cip8970h6jn3mj72"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    8
+   ],
+   "commit": "55468314a5f6b77d2c96be62c7005ac94545e217",
+   "sha256": "08hy7rbfazs6grkpk54i82bz0i0c74zcjk96cip8970h6jn3mj72"
+  }
+ },
+ {
+  "ename": "gitconfig",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0lqm04nfhhhsdagrjnnagkpg7vpswd8lkd3l52lmpdh0fy16kgrf",
+  "fetcher": "github",
+  "repo": "tonini/gitconfig.el",
+  "unstable": {
+   "version": [
+    20130718,
+    935
+   ],
+   "commit": "7612a37ca14009cac8fb8d6b6f54adad739a5741",
+   "sha256": "184q3vsxa9rvhc1n57ms47r73f3zap25wswzi66rm6rmfi2k7678"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "6c313a39e20702ddcebc12d146f69db1ce668901",
+   "sha256": "0j0w6ywhiapmx7dk20yw3zgf8803kmccnjsr664am3g85kbb644v"
+  }
+ },
+ {
+  "ename": "gitconfig-mode",
+  "commit": "44a37f59b87f59a587f6681e7aadfabf137c98d7",
+  "sha256": "0hqky40kcgxdnghnf56gpi0xp7ik45ssia1x84v0mvfwqc50dgn1",
+  "fetcher": "github",
+  "repo": "magit/git-modes",
+  "unstable": {
+   "version": [
+    20180318,
+    1956
+   ],
+   "commit": "55468314a5f6b77d2c96be62c7005ac94545e217",
+   "sha256": "08hy7rbfazs6grkpk54i82bz0i0c74zcjk96cip8970h6jn3mj72"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    8
+   ],
+   "commit": "55468314a5f6b77d2c96be62c7005ac94545e217",
+   "sha256": "08hy7rbfazs6grkpk54i82bz0i0c74zcjk96cip8970h6jn3mj72"
+  }
+ },
+ {
+  "ename": "github-browse-file",
+  "commit": "f8bca60348fc5e2ad55663e69b8690093cf861ca",
+  "sha256": "03xvgxlw7wmfby898din7dfcg87ihahkhlav1n7qklw6qi7skjcr",
+  "fetcher": "github",
+  "repo": "osener/github-browse-file",
+  "unstable": {
+   "version": [
+    20160205,
+    1427
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "9742a5183af853788c6ecb83fb7ee0b00d1675ac",
+   "sha256": "0i3dkm0j4gh21b7r5vxr6dddql5rj7lg8xlaairvild0ccf3bhdl"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "fa5cc00a40869430fb44596792961a4cddf9c265",
+   "sha256": "07vgnmfn0kbg3h3vhf3xk443yi1b55761x881xlmw9sr9nraa578"
+  }
+ },
+ {
+  "ename": "github-clone",
+  "commit": "ba11d6a5cc2fbc76037687c842f90dc815a6468e",
+  "sha256": "0ffrm4lmcj3d9kx3g2d5xbiih7hn4frs0prjrvcjq8acvsbc50q9",
+  "fetcher": "github",
+  "repo": "dgtized/github-clone.el",
+  "unstable": {
+   "version": [
+    20160623,
+    310
+   ],
+   "deps": [
+    "gh",
+    "magit"
+   ],
+   "commit": "467b40ca60a6c26257466ebc43c74414df7f19cc",
+   "sha256": "1gdx9sl509vn4bagqg8vi1wvj1h3ryfvd5ggs2mv9rry6x9dg823"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "gh",
+    "magit"
+   ],
+   "commit": "ab048cf49d9ebda73acae803bc44e731e629d540",
+   "sha256": "18c169nxvdl7iv18pyqx690ldg6pkc8njaxdg1cww6ykqzqnfxh7"
+  }
+ },
+ {
+  "ename": "github-elpa",
+  "commit": "81ec06e370f51b750ba3313b661d7386710cffb0",
+  "sha256": "1981dnz49l5r4qsn49i4dhy6x4ln0haff6gl2zx0p5p0zfkzbi7x",
+  "fetcher": "github",
+  "repo": "10sr/github-elpa",
+  "unstable": {
+   "version": [
+    20200129,
+    417
+   ],
+   "deps": [
+    "commander",
+    "git",
+    "package-build"
+   ],
+   "commit": "04a55c723ffcd84dd35e5438e7e2b9f1cce08d42",
+   "sha256": "19jidx1v3awga0d95shdcz5vgwfw4svpgs5l43d4l340lz84c4dk"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "commander",
+    "git",
+    "package-build"
+   ],
+   "commit": "c5960375ed5d67465412be7eb0ac558082feebc7",
+   "sha256": "02710iy9zz4ymmb2ydrca5kbdc5i06fjg7212iyvpd58yfzxjj2m"
+  }
+ },
+ {
+  "ename": "github-explorer",
+  "commit": "e224d2272892fb6751a093b0306f399057e6098a",
+  "sha256": "0s7k9wspdmvgmyd5sws3asp3kjp5a4nnzvbyn6jp8bcwd7girmr0",
+  "fetcher": "github",
+  "repo": "TxGVNN/github-explorer",
+  "unstable": {
+   "version": [
+    20190701,
+    630
+   ],
+   "commit": "e3a410dd1113bdff382a745465ea48d9b1fe860b",
+   "sha256": "1yq9bsy2qry49q1asdxnfyhahsp499b37l2yabwhpbxjlb7mmnp6"
+  }
+ },
+ {
+  "ename": "github-issues",
+  "commit": "f761e76236e9372d5fae6b5c5dcb1992c5d64d37",
+  "sha256": "12c6yb3v7xwkzc51binfgl4jb3sm3al5nlrklbsxhn44alazsvb0",
+  "fetcher": "github",
+  "repo": "inkel/github-issues.el",
+  "unstable": {
+   "version": [
+    20160616,
+    1841
+   ],
+   "commit": "816f7712b0eb05bffec0add3507302862d2629c4",
+   "sha256": "1x6jbnx9lwgy64nl9lpp01xcj9cbx5fq435iwhiarjdsm4kvixb5"
+  }
+ },
+ {
+  "ename": "github-modern-theme",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "07xv4psw34mrpb1f5fsvj8vcm9k3xlm43zxr6qmj00p46b35z25r",
+  "fetcher": "github",
+  "repo": "philiparvidsson/GitHub-Modern-Theme-for-Emacs",
+  "unstable": {
+   "version": [
+    20171109,
+    1251
+   ],
+   "commit": "a7e7b8e5e9c122138e79e837caf9b7299e748d44",
+   "sha256": "0agfy3wiznb2ksfa00g7066mb0vps4g74mj6nl9wkvx847dzg34h"
+  }
+ },
+ {
+  "ename": "github-notifier",
+  "commit": "c09f4e7e8a84a241881d214e8359f8a50ab14ddf",
+  "sha256": "1jqc2wx1pvkca8syj97ds32404szm0wn12b7zpa98265sg3n64nw",
+  "fetcher": "github",
+  "repo": "xuchunyang/github-notifier.el",
+  "unstable": {
+   "version": [
+    20180421,
+    316
+   ],
+   "commit": "274f3812926ea371346f639fcee98066f6e8c96f",
+   "sha256": "1qv66sdi8zm8nv1xc32lsmm2bgkxf03hb8sfz59mbvzhy6r7dxin"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "f8d011ebef9f626a94a27b5576c8ed06e6ff8987",
+   "sha256": "0glkn36fs93y2n1583k8v958qfhl212hbdk3cpkq432hj08wzjnr"
+  }
+ },
+ {
+  "ename": "github-pullrequest",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1p5mwpl59iwd1aqczf1b5shcpzhlqwrcy2vp46c276mhqx15r8fr",
+  "fetcher": "github",
+  "repo": "jakoblind/github-pullrequest",
+  "unstable": {
+   "version": [
+    20170116,
+    616
+   ],
+   "deps": [
+    "dash",
+    "magit",
+    "request"
+   ],
+   "commit": "6ae5c38b0fc15b638b5ba4490112d9822ce5e267",
+   "sha256": "1yr7v2wdrvwb1slks83bbh857qq1n207rdk48y8qwlcxbk4ygdr6"
+  }
+ },
+ {
+  "ename": "github-review",
+  "commit": "3b57420d20c799c0472dae4ab7e017d53dafb262",
+  "sha256": "1vh24bmvafv9px80gwgcgk7d9z6pjxaadzz7fba8r3m3fzhv4v58",
+  "fetcher": "github",
+  "repo": "charignon/github-review",
+  "unstable": {
+   "version": [
+    20200314,
+    438
+   ],
+   "deps": [
+    "dash",
+    "deferred",
+    "ghub",
+    "s"
+   ],
+   "commit": "50c6bcc7cf4d7193577b3f74eea4dd72f2b7795b",
+   "sha256": "0khsxsqzx81y5krj06i8v84qsb3z86b1z17knyr1xizrd2lmraqp"
+  }
+ },
+ {
+  "ename": "github-search",
+  "commit": "733a808400858513137e0e3d7d38b5b25e8ddc5a",
+  "sha256": "1pwrzbbwnq0il5494561fyvkr0vmm5jqlvpffgkk28c54vs7ms0b",
+  "fetcher": "github",
+  "repo": "IvanMalison/github-search",
+  "unstable": {
+   "version": [
+    20190624,
+    436
+   ],
+   "deps": [
+    "gh",
+    "magit"
+   ],
+   "commit": "b73efaf19491010522b09db35bb0f1bad1620e63",
+   "sha256": "19qmvwki9nfbd2pz5ld36mzcbj8plfls7snmzssgkpw06n0y68j9"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "gh",
+    "magit"
+   ],
+   "commit": "1a5c1f8291f4d41e57367a8522699cb08eea8fc4",
+   "sha256": "1382hda3hgpx3c3d1kjzz8hs4l5hi3s7c485hsgihhr6xdd5wrgm"
+  }
+ },
+ {
+  "ename": "github-stars",
+  "commit": "58df7d536f9711e10ecaa6e0a37b9ad255e8fca5",
+  "sha256": "1vljmrjid5xxmq5yfmsaq09js7zd75nmm4gd0kwm3lf71pb3lp6f",
+  "fetcher": "github",
+  "repo": "xuchunyang/github-stars.el",
+  "unstable": {
+   "version": [
+    20190517,
+    1319
+   ],
+   "deps": [
+    "ghub"
+   ],
+   "commit": "a9f25ab2487c886f5d50d26693d49856bd51383b",
+   "sha256": "1wp1zfwa4ai0771pkmcsybw8z8zwbwmqazm9fszyg8dsdns5wz2f"
+  }
+ },
+ {
+  "ename": "github-theme",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "132jahd8vvhzhhkm71dzq6x46wmaakbbxg9s7r9779bfwbrms9j9",
+  "fetcher": "github",
+  "repo": "philiparvidsson/GitHub-Theme-for-Emacs",
+  "unstable": {
+   "version": [
+    20170630,
+    2201
+   ],
+   "commit": "29f00a51d949a248a5f6355a97131e216747c797",
+   "sha256": "16ldfz1k0hxc1b785gzrf70hg0q88ijjxp39hb62iax1k1aw9vlw"
+  }
+ },
+ {
+  "ename": "gitignore-mode",
+  "commit": "44a37f59b87f59a587f6681e7aadfabf137c98d7",
+  "sha256": "1i98ribmnxr4hwphd95f9hcfm5wfwgdbcxw3g0w17ws7z0ir61mn",
+  "fetcher": "github",
+  "repo": "magit/git-modes",
+  "unstable": {
+   "version": [
+    20180318,
+    1956
+   ],
+   "commit": "55468314a5f6b77d2c96be62c7005ac94545e217",
+   "sha256": "08hy7rbfazs6grkpk54i82bz0i0c74zcjk96cip8970h6jn3mj72"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    8
+   ],
+   "commit": "55468314a5f6b77d2c96be62c7005ac94545e217",
+   "sha256": "08hy7rbfazs6grkpk54i82bz0i0c74zcjk96cip8970h6jn3mj72"
+  }
+ },
+ {
+  "ename": "gitignore-templates",
+  "commit": "4c9aa71eac2e68eb1925ed00a2c659c4375bd39c",
+  "sha256": "17zx52pmpd4yqlnj39v7ym728i710mdl0by3lc8zk6ljfz77933w",
+  "fetcher": "github",
+  "repo": "xuchunyang/gitignore-templates.el",
+  "unstable": {
+   "version": [
+    20200228,
+    1419
+   ],
+   "commit": "b147d1930645dda76dbd48fb6f4f7f790353de26",
+   "sha256": "17g66y8swy8pjkrv0in9bb1qbaq04ixn5wp6h7r54nfvjlnl1rza"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "b147d1930645dda76dbd48fb6f4f7f790353de26",
+   "sha256": "17g66y8swy8pjkrv0in9bb1qbaq04ixn5wp6h7r54nfvjlnl1rza"
+  }
+ },
+ {
+  "ename": "gitlab",
+  "commit": "1d012991188956f6e06c37d504b0d06ab31487b9",
+  "sha256": "0vxsqfnipgapnd2ijvdnkspk68dlnki3pkpkzg2h6hyazmzrsqnq",
+  "fetcher": "github",
+  "repo": "nlamirault/emacs-gitlab",
+  "unstable": {
+   "version": [
+    20180312,
+    1647
+   ],
+   "deps": [
+    "dash",
+    "pkg-info",
+    "request",
+    "s"
+   ],
+   "commit": "8c2324c02119500f094c2f92dfaba4c9977ce1ba",
+   "sha256": "056c4fb5sj2y4h94klx2g24n1g3qdi7ifzs8ksw5v6hcj9lrkb1n"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    0
+   ],
+   "deps": [
+    "dash",
+    "pkg-info",
+    "request",
+    "s"
+   ],
+   "commit": "a1c1441ff5ffb290e695eb9ac05431e9385578f4",
+   "sha256": "0ywjrgafpl4cnrykx9yysazr7hkd2pxk67h065f8z3mid6cgh1wa"
+  }
+ },
+ {
+  "ename": "gitlab-ci-mode",
+  "commit": "d7915ddcf21fdec539a86bb86c209cf0bbd378cb",
+  "sha256": "1jg6ihrgccrcwg30ysyqw9k7rmvfmsrp70skr2057hfamvccwn4f",
+  "fetcher": "gitlab",
+  "repo": "joewreschnig/gitlab-ci-mode",
+  "unstable": {
+   "version": [
+    20191022,
+    2017
+   ],
+   "deps": [
+    "yaml-mode"
+   ],
+   "commit": "c861dc5fa17d380d5c3aca99dc3bbec5eee623bc",
+   "sha256": "0yd6s5vy5afkigm87xyh1nnwljplx1wdn5h02224ica0py48fzhd"
+  },
+  "stable": {
+   "version": [
+    20190824,
+    12,
+    2
+   ],
+   "deps": [
+    "yaml-mode"
+   ],
+   "commit": "2651e831aed84ee2512245952fac94901b086549",
+   "sha256": "16fb4r3vq8xkzl911v7gaky95w1agfxjlpaxpjmidwx48rbcar59"
+  }
+ },
+ {
+  "ename": "gitlab-ci-mode-flycheck",
+  "commit": "d7915ddcf21fdec539a86bb86c209cf0bbd378cb",
+  "sha256": "19ixd60yynsvmaj7mkppp6k73793x794vrnhx3hh6n7dap1rsjdh",
+  "fetcher": "gitlab",
+  "repo": "joewreschnig/gitlab-ci-mode-flycheck",
+  "unstable": {
+   "version": [
+    20190323,
+    1829
+   ],
+   "deps": [
+    "flycheck",
+    "gitlab-ci-mode"
+   ],
+   "commit": "eba81cfb7224fd1fa4e4da90d11729cc7ea12f72",
+   "sha256": "1w1simnlffg56j79gal1qf1nlav9f8fmr2zfswfrmcv6cac6fhj9"
+  },
+  "stable": {
+   "version": [
+    20180605,
+    1
+   ],
+   "deps": [
+    "flycheck",
+    "gitlab-ci-mode"
+   ],
+   "commit": "30ea0eab74b24818f187242b079845785035e967",
+   "sha256": "0awv24znkxs0h8pkj4b5jwjajxkf1agam09m5glr8zn5g3xbj798"
+  }
+ },
+ {
+  "ename": "gitlab-snip-helm",
+  "commit": "d73cc8f3490f5e56bc0fda1b7e680d21839f4c98",
+  "sha256": "0hv0m9lh105f18d4jhc5i68nhv5hxlv4264mkza4cwq07amxlhw2",
+  "fetcher": "gitlab",
+  "repo": "sasanidas/gitlab-snip-helm",
+  "unstable": {
+   "version": [
+    20200427,
+    2014
+   ],
+   "deps": [
+    "dash",
+    "helm"
+   ],
+   "commit": "a0ba22ae7098b1a57af626fe5b6e9d663e8e2fc3",
+   "sha256": "1mxkcnjgazc1pyjbqqfnhc9phpyrgah960avm2fmi7m9n5v8cf0w"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "dash",
+    "helm"
+   ],
+   "commit": "5fe0a66642da6f4e7ba9e1e3a96572c7f1876e37",
+   "sha256": "1c5js19zyb1z61hapvbfcl5jhrjqij46cxldgqij6al0scw44dga"
+  }
+ },
+ {
+  "ename": "gitolite-clone",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0mv2bdfqqq47wgikkm5kwpr8gajylf1yzk2j6cxljz09amgq6c8q",
+  "fetcher": "github",
+  "repo": "IvanMalison/gitolite-clone",
+  "unstable": {
+   "version": [
+    20160609,
+    2355
+   ],
+   "deps": [
+    "dash",
+    "pcache",
+    "s"
+   ],
+   "commit": "d8a4c2875c984e51137c980b5773f42703602721",
+   "sha256": "11i9hxj76869w1z9xn7wq370v56hx5hm4d7msn4zgp64glpa66j9"
+  }
+ },
+ {
+  "ename": "gitpatch",
+  "commit": "e1746d87f65dc4b0d8f47c7d6ba4c7e0dfa35953",
+  "sha256": "0qaswkk06z24v40nkjkv7f6gfv0dlsjd6wchkn0ppqw95883vhv1",
+  "fetcher": "github",
+  "repo": "tumashu/gitpatch",
+  "unstable": {
+   "version": [
+    20170722,
+    410
+   ],
+   "commit": "577d5adf65c8133caa325c10e89e1e2fc323c907",
+   "sha256": "1jj12pjwza6cq8a3kr8nqnmm3vxs0wam8h983irry4xr4ifywsn4"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    1
+   ],
+   "commit": "94d40a2ee2b7cd7b209546ea02568079176b0034",
+   "sha256": "1drf4fvmak7brf16axkh4nfz8pg44i7pjhfjz3dbkycbpp8y5vig"
+  }
+ },
+ {
+  "ename": "gitter",
+  "commit": "b8076c3b4d60e4c505bb6f4e426ecc4f69d74684",
+  "sha256": "1ad5abqgfh6x2fcqbbdvgbg8xin69j0h93z7bav1hs3jla7mgwnv",
+  "fetcher": "github",
+  "repo": "xuchunyang/gitter.el",
+  "unstable": {
+   "version": [
+    20180122,
+    856
+   ],
+   "deps": [
+    "let-alist"
+   ],
+   "commit": "11cb9b4b45f67bdc24f055a9bfac21d2bd19ea1a",
+   "sha256": "14ri86kxqz9qfhcr0bkgfyggy4bgg9imk9akhw6dfzqkl90gn2gy"
+  },
+  "stable": {
+   "version": [
+    1
+   ],
+   "deps": [
+    "let-alist"
+   ],
+   "commit": "bd2ba457109dd5d3e4b419e3ef5cbd3b5c9498d6",
+   "sha256": "1fzl40bwdfbcq55p3kvbzjqr5w0703imzgrmqcf4f6jhav127zk6"
+  }
+ },
+ {
+  "ename": "gl-conf-mode",
+  "commit": "e3117e62d429e44506f7d82fc64252d41bc1a4b6",
+  "sha256": "0lf8xmq309aqyf16ymqlr8gj2qawlsqagbdndj0kgj72dnnw4cfm",
+  "fetcher": "github",
+  "repo": "llloret/gitolite-emacs",
+  "unstable": {
+   "version": [
+    20170714,
+    1310
+   ],
+   "commit": "9136a9b737e0a5b6471a91571d104c487c43f35b",
+   "sha256": "0wls3sfplrf7wkg7g7fxx4s87cvm3p7myxw6k91np6pbfh8p0s9q"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "1a53e548277eb9c669bbeda4bee9be32be7a82ec",
+   "sha256": "059m30vvp71y630pcam6qfv5bxc35ygj26wcg28p56pccxxyj3q9"
+  }
+ },
+ {
+  "ename": "global-tags",
+  "commit": "2bf3f3de312becb948000a21b280c990a03c8aa0",
+  "sha256": "0zfjfn92dnz7x5k67fphch6a5n7nyigapcg20gsz34xshdnnsz3z",
+  "fetcher": "git",
+  "url": "https://git.launchpad.net/global-tags.el",
+  "unstable": {
+   "version": [
+    20200511,
+    2146
+   ],
+   "commit": "5239c1ba873eb907d5665964820b4a7ddbf75b5c",
+   "sha256": "0yp1hq849drkkbypaaak36i5s1q9ff549w21qswmi60nmiikabsg"
+  }
+ },
+ {
+  "ename": "glsl-mode",
+  "commit": "c416822d54df436f29dcf9a5f26398685fdc17a2",
+  "sha256": "0d05qb60k5f7wwpsp3amzghayfbwcha6rh8nrslhnklpjbg87aw5",
+  "fetcher": "github",
+  "repo": "jimhourihan/glsl-mode",
+  "unstable": {
+   "version": [
+    20200501,
+    2304
+   ],
+   "commit": "b07112016436d9634cd4ef747f9af6b01366d136",
+   "sha256": "0bav9ipfm0vy26n74ngsmjzc7fsyqz6xmriadzx55s44h8p5dn1s"
+  }
+ },
+ {
+  "ename": "gmail-message-mode",
+  "commit": "1e6aed365c42987d64d0cd9a8a6178339b1b39e8",
+  "sha256": "0py0i7b893ihb8l1hmk3jfl0xil450znadcd18q7svr3zl2m0gkk",
+  "fetcher": "github",
+  "repo": "Malabarba/gmail-mode",
+  "unstable": {
+   "version": [
+    20160627,
+    1847
+   ],
+   "deps": [
+    "ham-mode"
+   ],
+   "commit": "ec36672a9dc93c09ebe2f77597b498d11883d008",
+   "sha256": "0xcdd3abcrqr7nabdmmh0kgfar64hhgnrhsiwg3q201cymhnv49p"
+  },
+  "stable": {
+   "version": [
+    1,
+    4
+   ],
+   "deps": [
+    "ham-mode"
+   ],
+   "commit": "ec36672a9dc93c09ebe2f77597b498d11883d008",
+   "sha256": "0xcdd3abcrqr7nabdmmh0kgfar64hhgnrhsiwg3q201cymhnv49p"
+  }
+ },
+ {
+  "ename": "gmail2bbdb",
+  "commit": "fb3c88b20a7614504165cd5fb459b0a9d5c73f60",
+  "sha256": "03jhrk4vpjim3ybzjxy7s9r1cgjysj9vlc4criz5k0w7vqz3r28j",
+  "fetcher": "github",
+  "repo": "redguardtoo/gmail2bbdb",
+  "unstable": {
+   "version": [
+    20170423,
+    1144
+   ],
+   "commit": "a84fa385cfaec7fc5f1518c368e52722da139f99",
+   "sha256": "1qbf3r8a66xlrbni3hv5q5b5v3izis5aid06228rfpc2hwa97hr7"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    6
+   ],
+   "commit": "181ef6039227bb30a02041d8cfdc435551a7d948",
+   "sha256": "0205ldrw1i7czq44pqdl374cl0rjp5w5zadrayw8brl7mmw92byn"
+  }
+ },
+ {
+  "ename": "gmpl-mode",
+  "commit": "c89a523f87db358c477e5840b0e043e9f253e640",
+  "sha256": "1f60xim8h85jmqpvgfg402ff8mjd66gla8fa0cwi7l18ijnjblpz",
+  "fetcher": "github",
+  "repo": "cute-jumper/gmpl-mode",
+  "unstable": {
+   "version": [
+    20171031,
+    2054
+   ],
+   "commit": "c5d362169819ee8b8e8954145daee7e260c54921",
+   "sha256": "00p2z6kbyc0bas21d1zygx7z49w6mf22y9kf1rcm9gqsnnadb4j9"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "25d20f9d24594e85cb6f80d35d7c73b7e82cbc71",
+   "sha256": "0x0a94bfkk72kqyr5m6arx450qsg1axmp5r0c4r9m84z8j08r4v1"
+  }
+ },
+ {
+  "ename": "gn-mode",
+  "commit": "f5c6c27bce3d0aaf7e3791299a527d5f1fd69653",
+  "sha256": "1rn4xa1am1yd9k2hpi5b0zhs3pgq4hnhgxdgs258cmhszm8c6ii2",
+  "fetcher": "github",
+  "repo": "lashtear/gn-mode",
+  "unstable": {
+   "version": [
+    20190428,
+    1812
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "fcf8e1e500d953364e97e7ebc5708a2c00fa3cd2",
+   "sha256": "0dz5kgzbgsssr38z2kg6m915cvfys42ag1k42bsra3la2pixywfx"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "fcf8e1e500d953364e97e7ebc5708a2c00fa3cd2",
+   "sha256": "0dz5kgzbgsssr38z2kg6m915cvfys42ag1k42bsra3la2pixywfx"
+  }
+ },
+ {
+  "ename": "gnome-calendar",
+  "commit": "8e497668d65f0eabd15e39b7492adb395a5a8e75",
+  "sha256": "00clamlm5b42zqggxywdqrf6s2dnsxir5rpd8mjpyc502kqmsfn6",
+  "fetcher": "github",
+  "repo": "NicolasPetton/gnome-calendar.el",
+  "unstable": {
+   "version": [
+    20161110,
+    1256
+   ],
+   "commit": "489f9f15f7bb35696b1cc19db75b554ae8328df2",
+   "sha256": "1aca65g4rfpsm4yk5k2bj6kbb2wrf6s14m8jgv1p94mqmzkj7rlq"
+  }
+ },
+ {
+  "ename": "gnome-screencast",
+  "commit": "628db4fa9d74c60290bf0e81cbb7ffdd08bd4a68",
+  "sha256": "0h16zj0lyg76g6561q8xbazyidwbr8bd146lw8s68vdgmn6k9qn3",
+  "fetcher": "github",
+  "repo": "juergenhoetzel/emacs-gnome-screencast",
+  "unstable": {
+   "version": [
+    20200115,
+    2230
+   ],
+   "commit": "8c5e787230b2b8a51520ab970d5b505cbbc8f32f",
+   "sha256": "1zalx97b92vxjczm798arxyxhl29hla9c9j4da9ykpyspf3wry4d"
+  },
+  "stable": {
+   "version": [
+    1,
+    4
+   ],
+   "commit": "261844a88c75f10d98b60577ac8121fcd6721564",
+   "sha256": "0qc5dj14fj3wa36kf3d6n0ijd49lpxmgnn1qw5qqbz29k12w5sqf"
+  }
+ },
+ {
+  "ename": "gnomenm",
+  "commit": "dd98221d3498528efb0f2d943102d32ebd7b34b3",
+  "sha256": "01vmr64j6hcvdbzg945c5a2g4fiidl18dsk4px7mdf85cv45kzqm",
+  "fetcher": "github",
+  "repo": "nicferrier/emacs-nm",
+  "unstable": {
+   "version": [
+    20150316,
+    1918
+   ],
+   "deps": [
+    "dash",
+    "kv",
+    "s"
+   ],
+   "commit": "9065cda44ffc9e06239b8189a0154d31314c3b4d",
+   "sha256": "1svnvm9fqqx4mrk9jjn11pzqwk71w8kyyd9wwxam8gz22ykw5jb2"
+  }
+ },
+ {
+  "ename": "gntp",
+  "commit": "c69a148d3b72d1be6ea10100a8e0cbbd918baa9c",
+  "sha256": "1ywj3p082g54dcpy8q4jnkqfr12npikx8yz14r0njxdlr0janh4f",
+  "fetcher": "github",
+  "repo": "tekai/gntp.el",
+  "unstable": {
+   "version": [
+    20141025,
+    250
+   ],
+   "commit": "767571135e2c0985944017dc59b0be79af222ef5",
+   "sha256": "1nvyjjjydrimpxy4cpg90si7sr8lmldbhlcm2mx8npklp9pn5y3a"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "767571135e2c0985944017dc59b0be79af222ef5",
+   "sha256": "1nvyjjjydrimpxy4cpg90si7sr8lmldbhlcm2mx8npklp9pn5y3a"
+  }
+ },
+ {
+  "ename": "gnu-apl-mode",
+  "commit": "369a55301bba0c4f7ce27f6e141944a523beaa0f",
+  "sha256": "0971pzc14gw8f0b4lzvicxww1k3wc58gbr3fd0qvdra2jifk2is6",
+  "fetcher": "github",
+  "repo": "lokedhs/gnu-apl-mode",
+  "unstable": {
+   "version": [
+    20200108,
+    1633
+   ],
+   "commit": "7f84eb307e9765fadcd1e0a9201ae562724ef1c9",
+   "sha256": "0aqlgsl19p2vlagdvahxxhqdcvmr8g7wlziwjvm2pina3lqfw4wc"
+  }
+ },
+ {
+  "ename": "gnuplot",
+  "commit": "be594de074dc3513c773d78c38e823be53061612",
+  "sha256": "1cz3db40r72cfqazg0w85fx5249d98wkxvjjjcn8dhwnmqymqigi",
+  "fetcher": "github",
+  "repo": "emacsorphanage/gnuplot",
+  "unstable": {
+   "version": [
+    20200322,
+    53
+   ],
+   "commit": "f0001c30010b2899e36d7d89046322467e923088",
+   "sha256": "1qnlcfzaihwc6kxdr1h2mrhccnhlwsdqwmcygxi2s01q2ifq1nc1"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    0
+   ],
+   "commit": "aefd4f671485fbcea42511ce79a7a60e5e0110a3",
+   "sha256": "0bwri3cvm2vr27kyqkrddm28fs08axnd4nm9amfgp54xp20bn4yn"
+  }
+ },
+ {
+  "ename": "gnuplot-mode",
+  "commit": "d801a2e0ba5ae7c65b5d312fbf41261278a8b1ba",
+  "sha256": "1avpik06cmi4h6v6039c64b4zw1r1nsg3nrryl254gl881pysfxg",
+  "fetcher": "github",
+  "repo": "mkmcc/gnuplot-mode",
+  "unstable": {
+   "version": [
+    20171013,
+    1616
+   ],
+   "commit": "601f6392986f0cba332c87678d31ae0d0a496ce7",
+   "sha256": "14f0yh1rjqc3337j4sbqzfb7pjim2c8a7wk1a73xkrdkmjn82vgb"
+  }
+ },
+ {
+  "ename": "gnus-alias",
+  "commit": "6176257e00ca09e79fdff03c6dd450af8eb83666",
+  "sha256": "0mbq9v8fiqqyldpb66v9bc777mzxywaq2dabivabxjg6554s8chf",
+  "fetcher": "github",
+  "repo": "hexmode/gnus-alias",
+  "unstable": {
+   "version": [
+    20150316,
+    42
+   ],
+   "commit": "9447d3ccb4c0e75d0468899cccff7aa249657bac",
+   "sha256": "1i278npayv3kfxxd1ypi9n83q5l402sbc1zkm11pf8g006ifqsp4"
+  }
+ },
+ {
+  "ename": "gnus-desktop-notify",
+  "commit": "c1cf98dff029d494007fe25d29bd8bcfecc5b8e6",
+  "sha256": "1cfcmmq0ywgp41g0rf8s5fabh3yqbv9iacxi7v74kqh59bqdnz3x",
+  "fetcher": "gitlab",
+  "repo": "wavexx/gnus-desktop-notify.el",
+  "unstable": {
+   "version": [
+    20180623,
+    1538
+   ],
+   "deps": [
+    "gnus"
+   ],
+   "commit": "b438feb59136621a8ab979f0e2784f7002398d06",
+   "sha256": "0h7w5wrkrd0jw8nmgbkzq8wam7ynvy7flhjg4frphzmimlhysli2"
+  },
+  "stable": {
+   "version": [
+    1,
+    4
+   ],
+   "deps": [
+    "gnus"
+   ],
+   "commit": "210c70f0021ee78e724f1d8e00ca96e1e99928ca",
+   "sha256": "08j8x0iaz5s9q0b68d8h3153w0z6vak5l8qgw3dd1drz5p9xnvyw"
+  }
+ },
+ {
+  "ename": "gnus-notes",
+  "commit": "971db65c22e975ef52ca964e7d468d2f65ad81ea",
+  "sha256": "0xvkkmgqhib1fx8dbzv1iz03y67z504b312n2k1rfwl7rgggjc8k",
+  "fetcher": "github",
+  "repo": "deusmax/gnus-notes",
+  "unstable": {
+   "version": [
+    20200509,
+    1942
+   ],
+   "deps": [
+    "async",
+    "bbdb",
+    "helm",
+    "hydra",
+    "lv",
+    "org",
+    "s"
+   ],
+   "commit": "c5c057263ecc86f60b62a1e811e63cfb1c394c15",
+   "sha256": "1rfkc6pp2kkin87hbjz1192hb6hf24ygiyd6zigs3bfaxja313rp"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "commit": "8373615b1b5945db485ab18205fdd1077ee0a506",
+   "sha256": "10ddsw1idyn1w2w92gs6i7a14hq347qib521vk7yqb9s4qyxg1fg"
+  }
+ },
+ {
+  "ename": "gnus-recent",
+  "commit": "0b80d94cf1a8b8e2d4da5d45f65231aa4884a3a0",
+  "sha256": "14xac6bmn61bk0h6dby14111iijz0j254v4mh77lf0ydbz6wxjf1",
+  "fetcher": "github",
+  "repo": "unhammer/gnus-recent",
+  "unstable": {
+   "version": [
+    20200513,
+    1038
+   ],
+   "commit": "a7b131c5acd10df2949ef4f799af08ded013bc35",
+   "sha256": "0cx0764ksxmjnryjwya3h49r1c5npyipxv16amad1lyysm4a8q0a"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "commit": "a7b131c5acd10df2949ef4f799af08ded013bc35",
+   "sha256": "0cx0764ksxmjnryjwya3h49r1c5npyipxv16amad1lyysm4a8q0a"
+  }
+ },
+ {
+  "ename": "gnus-select-account",
+  "commit": "e1746d87f65dc4b0d8f47c7d6ba4c7e0dfa35953",
+  "sha256": "1yini6kif7vp5msmhnnpfkab5m5px8y4wgvc0f0k79kdd17gvpsx",
+  "fetcher": "github",
+  "repo": "tumashu/gnus-select-account",
+  "unstable": {
+   "version": [
+    20170722,
+    511
+   ],
+   "commit": "ddc8c135eeaf90f5b6692a033af2badae36e68ce",
+   "sha256": "0csq8cqv028g3mrvk88l0nlj3dk5fh67c10hdjwvxbf7winv0391"
+  }
+ },
+ {
+  "ename": "gnus-summary-ext",
+  "commit": "5ca4a905b5f81991074c7d3e41d4422c7e6713d5",
+  "sha256": "0svyz8fy4k9ba6gpdymf4cf8zjjpgm71y48vlybxbv507xjm17qf",
+  "fetcher": "github",
+  "repo": "vapniks/gnus-summary-ext",
+  "unstable": {
+   "version": [
+    20180113,
+    1316
+   ],
+   "commit": "025fd853fe9280ae696a89ec2c2cac9befd010aa",
+   "sha256": "07ww2nc03daz70f2ajw7b2gin22xa306001zclhrxkm1cpjif2fi"
+  }
+ },
+ {
+  "ename": "gnus-summary-repo",
+  "commit": "0decb1e7d7fd32dc4ed7e07c751621eea0af0ab5",
+  "sha256": "0lwdhymayqs1cx76lnral2cs5dhrxwzlpc1ivchbyr1pj9x2nj6w",
+  "fetcher": "github",
+  "repo": "TxGVNN/gnus-summary-repo",
+  "unstable": {
+   "version": [
+    20190617,
+    1419
+   ],
+   "commit": "3968667bfded60fbbf33f2fba3170e2b6501ec43",
+   "sha256": "0rxaxc7b0dkhsd5547hngq24bdvnxig5a7xp9jir59fp2k8xd4aw"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "3968667bfded60fbbf33f2fba3170e2b6501ec43",
+   "sha256": "0rxaxc7b0dkhsd5547hngq24bdvnxig5a7xp9jir59fp2k8xd4aw"
+  }
+ },
+ {
+  "ename": "gnus-x-gm-raw",
+  "commit": "263b87e40e32421ae56a99971a7e1baca0484778",
+  "sha256": "1a5iccghzqmcndql2bppvr48535sf6jbvc83iypr1031z1b5k4wg",
+  "fetcher": "github",
+  "repo": "aki2o/gnus-x-gm-raw",
+  "unstable": {
+   "version": [
+    20140610,
+    731
+   ],
+   "deps": [
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "978bdfcecc8844465b71641c2e909fcdc66b22be",
+   "sha256": "1i3f67x2l9l5c5agspbkxr2mmh3rpq3009d8yzh6r1lih0b4hril"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "978bdfcecc8844465b71641c2e909fcdc66b22be",
+   "sha256": "1i3f67x2l9l5c5agspbkxr2mmh3rpq3009d8yzh6r1lih0b4hril"
+  }
+ },
+ {
+  "ename": "go",
+  "commit": "50e8d089f4e163eb459fc602cb90440b110b489f",
+  "sha256": "1mk1j504xwi3xswc0lfr3czs9j6wcsbrw2halr46mraiy8lnbz6h",
+  "fetcher": "github",
+  "repo": "eschulte/el-go",
+  "unstable": {
+   "version": [
+    20161111,
+    249
+   ],
+   "commit": "ff45fb44d9cb6579d8511d8b6156ed0b34d5ac97",
+   "sha256": "14av8zcxp9r4ka0h9x73i6gzwbf231wqkin65va3agrzwaf8swz1"
+  }
+ },
+ {
+  "ename": "go-add-tags",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "0syra7h9wixiq3g4ydamvzw2vc0852zcx5ij0rhw103hrvhrzcjd",
+  "fetcher": "github",
+  "repo": "emacsorphanage/go-add-tags",
+  "unstable": {
+   "version": [
+    20161123,
+    1227
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "54879945e46a0884c5f93d7fd6c866a9cdf401ac",
+   "sha256": "1gr65skrd41pk46ilfsbxfdng4br6h9c6blf1q1wx6i9ylhs0ak5"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "54879945e46a0884c5f93d7fd6c866a9cdf401ac",
+   "sha256": "1gr65skrd41pk46ilfsbxfdng4br6h9c6blf1q1wx6i9ylhs0ak5"
+  }
+ },
+ {
+  "ename": "go-autocomplete",
+  "commit": "ef45683cbfe82bf8a9d6f3f1c59e3cf340accbe3",
+  "sha256": "15ns1zzw6kblcbih7dmjvk1p0f6f3p2wpgx4gnd9ax0fcj65ghwi",
+  "fetcher": "github",
+  "repo": "mdempsky/gocode",
+  "unstable": {
+   "version": [
+    20150904,
+    240
+   ],
+   "deps": [
+    "auto-complete"
+   ],
+   "commit": "4acdcbdea79de6b3dee1c637eca5cbea0fdbe37c",
+   "sha256": "0i1hc089gb6a4mcgg56vn5l0q96wrlza2n08l4349s3dc2j559fb"
+  },
+  "stable": {
+   "version": [
+    20150303
+   ],
+   "deps": [
+    "auto-complete"
+   ],
+   "commit": "eef10fdde96a12528a6da32f51bf638b2863a3b1",
+   "sha256": "03snnra31b5j6iy94gql240vhkynbjql9b4b5j8bsqp9inmbsia3"
+  }
+ },
+ {
+  "ename": "go-capf",
+  "commit": "be3dc9ae83c9d11a4f04f79775b17c5a2b86e96d",
+  "sha256": "0k6s65bf8iwkpr93agw9hqaxfckqi43lanffdic6j4vjrk4inlwz",
+  "fetcher": "git",
+  "url": "https://git.sr.ht/~zge/go-capf",
+  "unstable": {
+   "version": [
+    20200216,
+    936
+   ],
+   "commit": "9e66ce4ef4307e9f0e73e65f6bb2f287ed2c940b",
+   "sha256": "1sgsxd511xw1g707c0d58j3xzxfbay7k5b7hyamd2fnh30pw2hb3"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "de3b668b83a73da5ce189c536a58aa1d4f5d492c",
+   "sha256": "1y1dscqyd2jx5irj5pcy7sspzzp0nsy2j4zaqhln2snffpqa3hmf"
+  }
+ },
+ {
+  "ename": "go-complete",
+  "commit": "4df81abbf3b16f06fa327c1626bef1245ea77758",
+  "sha256": "0dl0ibw145f84kd709r5i2kaw07z1sjzn3dmsiqn8dncspcf2vb4",
+  "fetcher": "github",
+  "repo": "vibhavp/go-complete",
+  "unstable": {
+   "version": [
+    20190409,
+    516
+   ],
+   "deps": [
+    "cl-lib",
+    "go-mode"
+   ],
+   "commit": "056294014f37a1004958ec17ebd6748deed63502",
+   "sha256": "021mc1lq4xvmj8dvnpr6hhfs08cd0r07d520h498b345y6a6ihdg"
+  }
+ },
+ {
+  "ename": "go-direx",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "0x9yrbbcwsc5kf88d1j75g02yndavgb4g4wwhy9ml58a6d6kq5y3",
+  "fetcher": "github",
+  "repo": "emacsorphanage/go-direx",
+  "unstable": {
+   "version": [
+    20150316,
+    143
+   ],
+   "deps": [
+    "cl-lib",
+    "direx"
+   ],
+   "commit": "8f2206469328ee932c7f1892f5e1fb02dec98432",
+   "sha256": "09rxz40bkr0l75v3lmf8lcwqsgjiv5c8zjmwzy2d4syj4qv69c5y"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "cl-lib",
+    "direx"
+   ],
+   "commit": "aecb9fef4d56d04d230d37c75c260c8392b5ad9f",
+   "sha256": "05yc0nylg3457an5j7yp3x23157j0hbi21qhcpgsa01144mwnwln"
+  }
+ },
+ {
+  "ename": "go-dlv",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0lb5v9pmd6m8nvk4c9gcda5dmshrf5812gg1arq5p2g0nzg32mm8",
+  "fetcher": "github",
+  "repo": "benma/go-dlv.el",
+  "unstable": {
+   "version": [
+    20191005,
+    829
+   ],
+   "deps": [
+    "go-mode"
+   ],
+   "commit": "d3cca689e76b71e0ef0ab827c7e01cd9042d2095",
+   "sha256": "0qdbfg9ihxwywjyir3lj1azwsaw425f90gp3182q7165j5v43k9w"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "go-mode"
+   ],
+   "commit": "d3cca689e76b71e0ef0ab827c7e01cd9042d2095",
+   "sha256": "0qdbfg9ihxwywjyir3lj1azwsaw425f90gp3182q7165j5v43k9w"
+  }
+ },
+ {
+  "ename": "go-eldoc",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "1x8qwmn8b2wc79dqqx89c3l1m9sj08hgdwh5lwrlp1l80vhfp3sr",
+  "fetcher": "github",
+  "repo": "emacsorphanage/go-eldoc",
+  "unstable": {
+   "version": [
+    20170305,
+    1427
+   ],
+   "deps": [
+    "go-mode"
+   ],
+   "commit": "cbbd2ea1e94a36004432a9ac61414cb5a95a39bd",
+   "sha256": "1029qg6ida3cw4ynxll6ykpnqkpbrbrx12nnzcplhc25vqpz7hik"
+  },
+  "stable": {
+   "version": [
+    0,
+    30
+   ],
+   "deps": [
+    "go-mode"
+   ],
+   "commit": "f1ad302ec4073354801e613293be2f55ba770618",
+   "sha256": "0hkwhmgjyn5jxrd0k1nakrvy4d7cz7sxb1nw4hb1rqmz4yd14c8i"
+  }
+ },
+ {
+  "ename": "go-errcheck",
+  "commit": "c874f608a55cafcc6e57ca2c80bdae6b1c2e47e9",
+  "sha256": "11a75h32cd5h5xjv30x83k60s49k9fhgis31358q46y2gbvqp5bs",
+  "fetcher": "github",
+  "repo": "dominikh/go-errcheck.el",
+  "unstable": {
+   "version": [
+    20160723,
+    43
+   ],
+   "commit": "9db21eccecedc2490793f176246094167164af31",
+   "sha256": "1ngzgkmcbk6qa3p97hch75k446h15515arsdfv7mqb4m5va6429h"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    2
+   ],
+   "commit": "1b0cd6af048a8b2074ace14ab51fb6c987beb430",
+   "sha256": "1fm6xd3vsi8mqh0idddjpfxlsmz1ljmjppw3qkxl1vr0qz3598k3"
+  }
+ },
+ {
+  "ename": "go-fill-struct",
+  "commit": "0c03d2382efd20e248b27b5505cdeed67d000f73",
+  "sha256": "19xxqb836saxigvwdqf4xv0y9zrl7csv97x0facgyjyiqmwhx3x7",
+  "fetcher": "github",
+  "repo": "s-kostyaev/go-fill-struct",
+  "unstable": {
+   "version": [
+    20171225,
+    331
+   ],
+   "commit": "a613d0b378473eef39e8fd5724abe790aea84321",
+   "sha256": "16bgfykvqc61hlx1hj55z15y83zgpavhb853sblds75m8w7mndqg"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "3c97c92e78f3629a7a1069404c7c641881c16d0e",
+   "sha256": "0ara9qqv31pr7dpcby6xp24llf79m0dmwrx4yv6w0bhxi197fmlx"
+  }
+ },
+ {
+  "ename": "go-gen-test",
+  "commit": "0861c126161a2674f0e115eac6f948490b142b44",
+  "sha256": "1pj8n8xj9ccq9ips4wy4v6hdxxgwv11pwi671l6jjrig38v13dzr",
+  "fetcher": "github",
+  "repo": "s-kostyaev/go-gen-test",
+  "unstable": {
+   "version": [
+    20171023,
+    358
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "44c202ac97e728e93a35cee028a0ea8dd6e4292c",
+   "sha256": "1vi5xsf0xbcbvapi20hsjangwyp38cbgi8kiccpmingnq2kp8ghs"
+  }
+ },
+ {
+  "ename": "go-gopath",
+  "commit": "1ca8d10b10b015c5bdafe1dbc8e53eb4c0d26d9c",
+  "sha256": "0jfy2r3axqpn2cnibp8f9vw36kmx0icixhj6zy43d9xa4znvdqal",
+  "fetcher": "github",
+  "repo": "iced/go-gopath",
+  "unstable": {
+   "version": [
+    20160705,
+    1034
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "5172fc53f21edbf9347d5ee7d1d745da1ec88a15",
+   "sha256": "0gqb3k33y42gchc89rw3k1pvb7ai9ka50ljfd4avk31fdpr4dln5"
+  }
+ },
+ {
+  "ename": "go-guru",
+  "commit": "0cede3a468b6f7e4ad88e9fa985f0fdee7d195f5",
+  "sha256": "01f0gz65z8d0iv8k49xl2sp6q4qnsvwhd4g8fb2irp7iclb0xmvk",
+  "fetcher": "github",
+  "repo": "dominikh/go-mode.el",
+  "unstable": {
+   "version": [
+    20181012,
+    330
+   ],
+   "deps": [
+    "cl-lib",
+    "go-mode"
+   ],
+   "commit": "734d5232455ffde088021ea5908849ac570e890f",
+   "sha256": "0228l3s3afmvm4cy3vwcpz3g2gkmyhqdq2kwwn1n5dsha8fzbdps"
+  },
+  "stable": {
+   "version": [
+    1,
+    5,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "go-mode"
+   ],
+   "commit": "35f6826e435c3004dabf134d0f2ae2f31ea7b6a2",
+   "sha256": "1nd2h50yb0493wvf1h7fzplq45rmqn2w7kxpgnlxzhkvq99v8vzf"
+  }
+ },
+ {
+  "ename": "go-imenu",
+  "commit": "d602b6071787018e3e0a68b4852eb978b34acbea",
+  "sha256": "0s8rc7rkqlywrhnm2h8yygn87jhjc492wmsvnr1rxl62wf5cijms",
+  "fetcher": "github",
+  "repo": "brantou/go-imenu.el",
+  "unstable": {
+   "version": [
+    20181029,
+    1029
+   ],
+   "commit": "4f3f334ed0b6f6afaca6b9775636a52ad3843053",
+   "sha256": "1ar2fw7wnlxvdj61vhd9sfqrd0yrb65r7ldjvfdpp1jv9mg50vad"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "fc1566fbe396fc8c94f7de99d9c7191b47cd48d9",
+   "sha256": "0qygxqrzx009cd59b452ampakr9rwmj1skl8pic9an4wjz742qlg"
+  }
+ },
+ {
+  "ename": "go-impl",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "1vi986ymza88cpjlxjz88na1w9dq4dr9d82vdbpav762vz828h9i",
+  "fetcher": "github",
+  "repo": "emacsorphanage/go-impl",
+  "unstable": {
+   "version": [
+    20170125,
+    1552
+   ],
+   "deps": [
+    "go-mode"
+   ],
+   "commit": "69f0d0ef05771487e15abec500cd06befd171abf",
+   "sha256": "1rmik6g3l9q1bqavmqx1fhcadz4pwswgfnkbaxl6c5b6g2sl26iq"
+  },
+  "stable": {
+   "version": [
+    0,
+    14
+   ],
+   "deps": [
+    "go-mode"
+   ],
+   "commit": "69f0d0ef05771487e15abec500cd06befd171abf",
+   "sha256": "1rmik6g3l9q1bqavmqx1fhcadz4pwswgfnkbaxl6c5b6g2sl26iq"
+  }
+ },
+ {
+  "ename": "go-imports",
+  "commit": "4118ebf0db84cc047fab311c789bfbffd6eb2d92",
+  "sha256": "0xxlh4rmyvfxiynsdqng6wd3js7h3azhb8ii0ch7n0hhqkcnda4x",
+  "fetcher": "github",
+  "repo": "yasushi-saito/go-imports",
+  "unstable": {
+   "version": [
+    20190715,
+    1647
+   ],
+   "commit": "55681e815da93b6f927213c4aa352ae33db97c37",
+   "sha256": "12xgkhc5nqrj5x306ninysyd78dwa3p3bvf69qqi2g0a9ngl8d3x"
+  }
+ },
+ {
+  "ename": "go-mode",
+  "commit": "0cede3a468b6f7e4ad88e9fa985f0fdee7d195f5",
+  "sha256": "0ghqm4lbkfla79plqiyb1lzf5kbz0380h9vf8px15zal00xrv0bl",
+  "fetcher": "github",
+  "repo": "dominikh/go-mode.el",
+  "unstable": {
+   "version": [
+    20200425,
+    1740
+   ],
+   "commit": "734d5232455ffde088021ea5908849ac570e890f",
+   "sha256": "0228l3s3afmvm4cy3vwcpz3g2gkmyhqdq2kwwn1n5dsha8fzbdps"
+  },
+  "stable": {
+   "version": [
+    1,
+    5,
+    0
+   ],
+   "commit": "35f6826e435c3004dabf134d0f2ae2f31ea7b6a2",
+   "sha256": "1nd2h50yb0493wvf1h7fzplq45rmqn2w7kxpgnlxzhkvq99v8vzf"
+  }
+ },
+ {
+  "ename": "go-noisegate",
+  "commit": "1a033cf87c7d53ed8e3af1ac3a5b9b1bac035559",
+  "sha256": "0hpslf7q4jqbfkr17kb6phc0dbdvqcm9wynzj4fsji7c1cq0z5xh",
+  "fetcher": "github",
+  "repo": "go-noisegate/go-noisegate.el",
+  "unstable": {
+   "version": [
+    20200502,
+    703
+   ],
+   "commit": "e3fc198c234131c94f7d307b7f7c6ef623fb93b7",
+   "sha256": "12b4l3sl1pykz7v73vsjsicbqpmylsmwhlyprpiimc0r1is5km3m"
+  }
+ },
+ {
+  "ename": "go-playground",
+  "commit": "900aabb7bc2350698f8740d72a5fad69c9219c33",
+  "sha256": "1rabwc80qwkafq833m6a199zfiwwmf0hha89721gc7i0myk9pac6",
+  "fetcher": "github",
+  "repo": "grafov/go-playground",
+  "unstable": {
+   "version": [
+    20190625,
+    1855
+   ],
+   "deps": [
+    "go-mode",
+    "gotest"
+   ],
+   "commit": "508294fbc22b22b37f587b2dbc8f3a48a16a07a6",
+   "sha256": "18vsrckkazfzksjpyx1lbwg5hdgd43ndaj3csy3i3hk7p26x98lm"
+  },
+  "stable": {
+   "version": [
+    1,
+    6,
+    1
+   ],
+   "deps": [
+    "go-mode",
+    "gotest"
+   ],
+   "commit": "508294fbc22b22b37f587b2dbc8f3a48a16a07a6",
+   "sha256": "18vsrckkazfzksjpyx1lbwg5hdgd43ndaj3csy3i3hk7p26x98lm"
+  }
+ },
+ {
+  "ename": "go-playground-cli",
+  "commit": "3af0a72ee1222c133ccfd76f004a346fd6110eee",
+  "sha256": "00h89rh8d7lq1di77nv609xbzxmjmffq6mz3cmagylxncflg81jc",
+  "fetcher": "github",
+  "repo": "kosh04/emacs-go-playground",
+  "unstable": {
+   "version": [
+    20160503,
+    914
+   ],
+   "deps": [
+    "cl-lib",
+    "deferred",
+    "f",
+    "let-alist",
+    "names",
+    "request",
+    "s"
+   ],
+   "commit": "60beebd98e3930641d41cee0189c579626f223bc",
+   "sha256": "1fcm65r1sy2fmcp2i7mwc7mxqiaf4aaxda4i2qrm8s25cxsffir7"
+  }
+ },
+ {
+  "ename": "go-projectile",
+  "commit": "3559a179be2a5cda71ee0a5a18bead4b3a1a8138",
+  "sha256": "07diik27gr82n11a8k62v1jxq8rhi16f02ybk548f6cn7iqgp2ml",
+  "fetcher": "github",
+  "repo": "dougm/go-projectile",
+  "unstable": {
+   "version": [
+    20181023,
+    2144
+   ],
+   "deps": [
+    "go-eldoc",
+    "go-guru",
+    "go-mode",
+    "go-rename",
+    "projectile"
+   ],
+   "commit": "7910884b4de560f3fc70b53752f658ef9cdc02cd",
+   "sha256": "03bh8k95qrc3q1sja05bbv3jszh6rgdv56jpi8g06yxk53457a1n"
+  }
+ },
+ {
+  "ename": "go-rename",
+  "commit": "d806abe90da9a8951fdb0c31e2167bde13183c5c",
+  "sha256": "1cd2nfgwnqzylbry11ahahdip8w66w5hnrndrs65ip10s08w2xki",
+  "fetcher": "github",
+  "repo": "dominikh/go-mode.el",
+  "unstable": {
+   "version": [
+    20190805,
+    2101
+   ],
+   "deps": [
+    "go-mode"
+   ],
+   "commit": "734d5232455ffde088021ea5908849ac570e890f",
+   "sha256": "0228l3s3afmvm4cy3vwcpz3g2gkmyhqdq2kwwn1n5dsha8fzbdps"
+  },
+  "stable": {
+   "version": [
+    1,
+    5,
+    0
+   ],
+   "deps": [
+    "go-mode"
+   ],
+   "commit": "35f6826e435c3004dabf134d0f2ae2f31ea7b6a2",
+   "sha256": "1nd2h50yb0493wvf1h7fzplq45rmqn2w7kxpgnlxzhkvq99v8vzf"
+  }
+ },
+ {
+  "ename": "go-scratch",
+  "commit": "1713e6f02f8908b828ac2722a3185ea7cceb0609",
+  "sha256": "11ahvmxbh67wa39cymymxmcpkq0kcn5jz0rrvazjy2p1hx3x1ma5",
+  "fetcher": "github",
+  "repo": "shosti/go-scratch.el",
+  "unstable": {
+   "version": [
+    20150810,
+    440
+   ],
+   "deps": [
+    "go-mode"
+   ],
+   "commit": "3f68cbcce04f59eb8e83af109164731ec0454be0",
+   "sha256": "1a6vg2vwgnafb61pwrd837fwlq5gs80wawbzjsnykawnmcaag8pm"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "go-mode"
+   ],
+   "commit": "3f68cbcce04f59eb8e83af109164731ec0454be0",
+   "sha256": "1a6vg2vwgnafb61pwrd837fwlq5gs80wawbzjsnykawnmcaag8pm"
+  }
+ },
+ {
+  "ename": "go-snippets",
+  "commit": "ca9f3022e7f4d5391be394cd56f6db75c9cff3b6",
+  "sha256": "1wcbnfzxailv18spxyv4a0nwlqh9l7yf5vxg0qcjcp5ajd2w12kn",
+  "fetcher": "github",
+  "repo": "toumorokoshi/go-snippets",
+  "unstable": {
+   "version": [
+    20180113,
+    611
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "d437df148879566ffe7f2e503a3cf2602aa9fb28",
+   "sha256": "0rs2yj9bh0snf13hfj9bvyawl16j8416naz6h52l21q72ymd4b0k"
+  }
+ },
+ {
+  "ename": "go-stacktracer",
+  "commit": "401996c585d2ccf97add1bc420250d96188b651a",
+  "sha256": "1laz2ggqydnyr7b36ggb7sphlib79dhp7nszw42wssmv212v94cy",
+  "fetcher": "github",
+  "repo": "samertm/go-stacktracer.el",
+  "unstable": {
+   "version": [
+    20150430,
+    2142
+   ],
+   "commit": "a2ac6d801b389f80ca4e2fcc1ab44513a9e55976",
+   "sha256": "0n5nsyfwx2pdlwx6bl35wrfyady5dwraimv92f58mhc344ajd70y"
+  }
+ },
+ {
+  "ename": "go-tag",
+  "commit": "fc4cd3fd8fb0707912e205b9d71789ea8126c442",
+  "sha256": "18ff41i0gr708fl4gzzspf9cc09nv4wy21wsn609yhwlh7w0vs1f",
+  "fetcher": "github",
+  "repo": "brantou/emacs-go-tag",
+  "unstable": {
+   "version": [
+    20180227,
+    411
+   ],
+   "deps": [
+    "go-mode"
+   ],
+   "commit": "59b243f2fa079d9de9d56f6e2d94397e9560310a",
+   "sha256": "0r72qk79q8yyidpxgq4r0295fm73id946p1r4s65bwyzii76rjyi"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "go-mode"
+   ],
+   "commit": "8dbcb7d42dccac046c7beb31bdf79bb09a0fef40",
+   "sha256": "1l20az4lhgbrh96sk6bpvp3w4bh29653fms4bimmiaqmhn2n14y2"
+  }
+ },
+ {
+  "ename": "gobgen",
+  "commit": "8c9fed22bb8dbfb359e4fdb0d802ed4b5781f50d",
+  "sha256": "0fb0q9x7wj8gs1iyr87q1vpxmfa2d43zy6cgxpzmv2wc26x96vi7",
+  "fetcher": "github",
+  "repo": "gergelypolonkai/gobgen.el",
+  "unstable": {
+   "version": [
+    20161020,
+    1523
+   ],
+   "commit": "ed2c2b0d217deae293096f3cf14aa492791ddd4f",
+   "sha256": "1isda941gzrl9r2xxaxbsqjxq146cmnhl04m634m8m0q2d751pwk"
+  }
+ },
+ {
+  "ename": "god-mode",
+  "commit": "c4f8b0a0766bcff6b716b9e35da25c00b8a91abd",
+  "sha256": "0l8hdn227axan7ryx6z4fbk9nqsb50bmhwqxgy3g8g19vqhflhfr",
+  "fetcher": "github",
+  "repo": "emacsorphanage/god-mode",
+  "unstable": {
+   "version": [
+    20200413,
+    2144
+   ],
+   "commit": "1eb6ef3a4f67a805c5d6deb1e3895b6c853707d7",
+   "sha256": "0kqw6w72prhxbqvxccbrc80q82yfif0y99nfgqd60rfk9mpl369k"
+  },
+  "stable": {
+   "version": [
+    2,
+    16,
+    2
+   ],
+   "commit": "1eb6ef3a4f67a805c5d6deb1e3895b6c853707d7",
+   "sha256": "0kqw6w72prhxbqvxccbrc80q82yfif0y99nfgqd60rfk9mpl369k"
+  }
+ },
+ {
+  "ename": "godoctor",
+  "commit": "0e23e1362ff7d477ad9ce6cfff694db989dfb87b",
+  "sha256": "0k734hry9npsr6zhsplcvmcjqw6jdf79pv4k9dw0xvd598hkpazz",
+  "fetcher": "github",
+  "repo": "microamp/godoctor.el",
+  "unstable": {
+   "version": [
+    20180710,
+    2152
+   ],
+   "commit": "4b45ff3d0572f0e84056e4c3ba91fcc178199859",
+   "sha256": "12gga1ghc54r6f2adyaq30hm2yxspvgg54zd4k82c3d6cj51qwci"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    0
+   ],
+   "commit": "4b45ff3d0572f0e84056e4c3ba91fcc178199859",
+   "sha256": "12gga1ghc54r6f2adyaq30hm2yxspvgg54zd4k82c3d6cj51qwci"
+  }
+ },
+ {
+  "ename": "gold-mode",
+  "commit": "6d1991b63067c581c7576df4b69b509ab5a44d5a",
+  "sha256": "1b67hd1fp6xcj65xxp5jcpdjspxsbzxy26v6lqg5kiy8knls57kf",
+  "fetcher": "github",
+  "repo": "yuutayamada/gold-mode-el",
+  "unstable": {
+   "version": [
+    20140607,
+    206
+   ],
+   "deps": [
+    "sws-mode"
+   ],
+   "commit": "6d3aa59602b1b835495271c8c9741ac344c2eab1",
+   "sha256": "1k4i9z9h4m0h0y92mncr96jir63q5h1bix5bpnlfxhxl5w8pvk1q"
+  }
+ },
+ {
+  "ename": "golden-ratio",
+  "commit": "e87b2af052d0406431957d75aa3717899bdbc8ae",
+  "sha256": "15fkrv0sgpzmnw2h4fp2gb83d8s42khkfq1h76l241njjayk1f81",
+  "fetcher": "github",
+  "repo": "roman/golden-ratio.el",
+  "unstable": {
+   "version": [
+    20191028,
+    1732
+   ],
+   "commit": "007911d8a431b72670f5fe5f0e5b4380c2777a31",
+   "sha256": "1dkc25yj47jlrji0v9xjxj3d3hhgnxxb5ia91zlby1mil7r9cwv1"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "79b1743fc1a2f3462445e9ddd0a869f30065bb6d",
+   "sha256": "00igv83hiyx7x3pf2grmjpd379brn33fm85f05k104mkkrhg99nm"
+  }
+ },
+ {
+  "ename": "golden-ratio-scroll-screen",
+  "commit": "af044c4a28149362347c2477f0d8d0f8d1dc8c0d",
+  "sha256": "1ygh104vr65s7frlkzyhrfi6shrbvp2b2j3ynj5dip253v85xki5",
+  "fetcher": "github",
+  "repo": "jixiuf/golden-ratio-scroll-screen",
+  "unstable": {
+   "version": [
+    20200419,
+    451
+   ],
+   "commit": "1b6ff0e3e8822423335d3f7d88c1fcb4cf43ce42",
+   "sha256": "0kniznqdbaim9llf76zi0cbwpa21xcf07w970hrspffjpzkcadnv"
+  }
+ },
+ {
+  "ename": "goldendict",
+  "commit": "af87026905478d9134a4a036e792f6afd9c10768",
+  "sha256": "0zvrlz169pg9bj1bmks4lh5zn8cygqzwiyzg49na2a7wf2sk9m1f",
+  "fetcher": "github",
+  "repo": "stardiviner/goldendict.el",
+  "unstable": {
+   "version": [
+    20180121,
+    920
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1aac19daaec811deb9afe45eea4929309c09ac8b",
+   "sha256": "1il432f6ayj2whl4s804n5wykgs51jhbx4xkcbfgqra58cbjrjhi"
+  }
+ },
+ {
+  "ename": "golint",
+  "commit": "34f22d829257456abbc020c006b92da9c7a7860e",
+  "sha256": "1q4y6mgll8wyp0c7zx810nzsm0k4wvz0wkly1fbja9z63sjzzxwb",
+  "fetcher": "github",
+  "repo": "golang/lint",
+  "unstable": {
+   "version": [
+    20180221,
+    2015
+   ],
+   "commit": "738671d3881b9731cc63024d5d88cf28db875626",
+   "sha256": "0jkiz4py59jjnkyxbxifpf7bsar11lbgmj5jiq2kic5k03shkn9c"
+  }
+ },
+ {
+  "ename": "gom-mode",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "0qwqvkdvxmwnijj60jvqzwvikw1avrg6i66cl74qbqqcqkhazbpz",
+  "fetcher": "github",
+  "repo": "emacsorphanage/gom-mode",
+  "unstable": {
+   "version": [
+    20131008,
+    253
+   ],
+   "commit": "972e33df1d38ff323bc97de87477305826013701",
+   "sha256": "1anjzlg53kjdqfjcdahbxy8zk9hdha075c1f9nzrnnbbqvmirbbb"
+  }
+ },
+ {
+  "ename": "gomacro-mode",
+  "commit": "ce33236843b8eb266769f588e8d8341b056ccf2c",
+  "sha256": "0gfx9z8cb3lakr1c6irjmcb7fv3val349vxibwlxjbmax689r5v5",
+  "fetcher": "github",
+  "repo": "storvik/gomacro-mode",
+  "unstable": {
+   "version": [
+    20200326,
+    1103
+   ],
+   "deps": [
+    "go-mode"
+   ],
+   "commit": "3112e56d2d5e645a3e0fd877f3e810dbccbf989f",
+   "sha256": "1f3y46q7djr1riz7x26gc7a1gf9p8sfdrnlqyiwzmi9vkk6h8wdz"
+  }
+ },
+ {
+  "ename": "google",
+  "commit": "45237d37da807559498bb958184e05109f880070",
+  "sha256": "11a521cq5bj7afl7bqiilg0c81dy00lnhak7h3d9c9kwg7kfljiq",
+  "fetcher": "github",
+  "repo": "hober/google-el",
+  "unstable": {
+   "version": [
+    20140416,
+    1748
+   ],
+   "commit": "3b3189a8b201c8d36fed6e61496274e530dd40bd",
+   "sha256": "06p1dpnmg7lhdff1g7c04qq8f9srgkmnm42jlqy85k87j3p5ys2i"
+  }
+ },
+ {
+  "ename": "google-c-style",
+  "commit": "b4e7f5f641251e17add561991d3bcf1fde23467b",
+  "sha256": "10gsbg880jbvxs4291vi2ww30ird2f313lbgcb11lswivmhrmd1r",
+  "fetcher": "github",
+  "repo": "google/styleguide",
+  "unstable": {
+   "version": [
+    20180130,
+    1736
+   ],
+   "commit": "7a59e424c8e641605e30eed68197859533ea6aaf",
+   "sha256": "1w9hf7bcdd5ddjavhj0ggnxipf5f5w3cfj52n9i46jmm6g2x2b5g"
+  }
+ },
+ {
+  "ename": "google-contacts",
+  "commit": "671afe0ff3889ae8c4b2d7b8617a3a25c16f3f0f",
+  "sha256": "0wgi244zy2am90alimgzazshk2z756bk1hchphssfa4j15n16jgn",
+  "fetcher": "github",
+  "repo": "jd/google-contacts.el",
+  "unstable": {
+   "version": [
+    20180919,
+    1314
+   ],
+   "deps": [
+    "cl-lib",
+    "oauth2"
+   ],
+   "commit": "2273582713712a58e71156a8a29972d42e8e690e",
+   "sha256": "1iw5khd3mcgq7vmpm2xw1s713glc8c569n4mgrmmggg73sjnj4kf"
+  }
+ },
+ {
+  "ename": "google-maps",
+  "commit": "671afe0ff3889ae8c4b2d7b8617a3a25c16f3f0f",
+  "sha256": "0a0wqs3cnlpar2dzdi6h14isw78vgqr2r6psmrzbdl00s4fcyxwx",
+  "fetcher": "github",
+  "repo": "jd/google-maps.el",
+  "unstable": {
+   "version": [
+    20181121,
+    1532
+   ],
+   "commit": "2eb16ff609f5a9f8d02c15238a111fbb7db6c146",
+   "sha256": "1bl0dnksbf14d0xcnvdy9qpvzc5c8jwkxpmfvgayj6djikxnw2md"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "90151ab59e693243ca8da660ce7b9ce361ea5126",
+   "sha256": "183igr5lp20zcqi7rc01fk76sfxdhksd74i11v16gdsifdkjimd0"
+  }
+ },
+ {
+  "ename": "google-this",
+  "commit": "1e6aed365c42987d64d0cd9a8a6178339b1b39e8",
+  "sha256": "0hg9y1b03aiamyn3mam3hyxmxy21wygxrnrww91zcbwlzgp4dd2c",
+  "fetcher": "github",
+  "repo": "Malabarba/emacs-google-this",
+  "unstable": {
+   "version": [
+    20170810,
+    1215
+   ],
+   "commit": "8a2e3ca5da6a8c89bfe99a21486c6c7db125dc84",
+   "sha256": "1dbra309w8awmi0g0pp7r2dm9nwrj2j9lpl7md8wa89rnzazwahl"
+  },
+  "stable": {
+   "version": [
+    1,
+    12
+   ],
+   "commit": "8a2e3ca5da6a8c89bfe99a21486c6c7db125dc84",
+   "sha256": "1dbra309w8awmi0g0pp7r2dm9nwrj2j9lpl7md8wa89rnzazwahl"
+  }
+ },
+ {
+  "ename": "google-translate",
+  "commit": "e3c275e59cbfe6e40f9cd4c470fc66544c9a6d21",
+  "sha256": "1crgzdd32mk6hrawdypg496dwh51wzwfb5wqw4a2j5l8y958xf47",
+  "fetcher": "github",
+  "repo": "atykhonov/google-translate",
+  "unstable": {
+   "version": [
+    20190620,
+    1416
+   ],
+   "commit": "dc118de511c433750d4c98b9dd67350118c04fd6",
+   "sha256": "1kbiqisqyk31l94gxsirhnrdkj51ylgcb16fk2wf7zigmf13jqzp"
+  },
+  "stable": {
+   "version": [
+    0,
+    11,
+    18
+   ],
+   "commit": "dc118de511c433750d4c98b9dd67350118c04fd6",
+   "sha256": "1kbiqisqyk31l94gxsirhnrdkj51ylgcb16fk2wf7zigmf13jqzp"
+  }
+ },
+ {
+  "ename": "goose-theme",
+  "commit": "e23a52e068ec0e6d457402254727673ea02bd407",
+  "sha256": "1nw948js678xc5vgrpdkykpcbn1b1id4k1clf87vfv7y5zssvd0x",
+  "fetcher": "github",
+  "repo": "tokenrove/goose-theme",
+  "unstable": {
+   "version": [
+    20160828,
+    1245
+   ],
+   "commit": "acd017b50ab25a75fd1331eb3de66467e2042e9c",
+   "sha256": "1mmdvjsgnwgs6akhyj96fgj30mz53djdq85dl5q4cmiznlbma7hy"
+  }
+ },
+ {
+  "ename": "gopher",
+  "commit": "8c01e1c5009e8a4fefe5169c8e97ead53f8f6621",
+  "sha256": "01b1mr8nn5yrq65y067slc7mvxigansbim0nha41ckyrkh8mw4fs",
+  "fetcher": "github",
+  "repo": "msnyder-info/gopher.el",
+  "unstable": {
+   "version": [
+    20190512,
+    1351
+   ],
+   "deps": [
+    "w3m"
+   ],
+   "commit": "6f4accac226698b22e8388e41ad5723b12553dde",
+   "sha256": "02093q9dwbqjyq47j05cmxmw12690f4qqpwsj7qnqz15m9n4b6xc"
+  }
+ },
+ {
+  "ename": "gore-mode",
+  "commit": "de09fcf14f778efe4247a93fb887b77050258f39",
+  "sha256": "0nljybh2pw8pbbajfsz57r11rs4bvzfxmwpbm5qrdn6dzzv65nq3",
+  "fetcher": "github",
+  "repo": "sergey-pashaev/gore-mode",
+  "unstable": {
+   "version": [
+    20151123,
+    1927
+   ],
+   "deps": [
+    "go-mode"
+   ],
+   "commit": "94d7f3e99104e06167967c98fdc201049c433c2d",
+   "sha256": "0l022aqpnb38q6kgdqpbxrc1r7fljwl7xq14yi5jb7qgzw2v43cz"
+  }
+ },
+ {
+  "ename": "gorepl-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0xcjjh9hf3pv5jgv089c6bb00s215fc9qwn72fav1xbm5f49nkaq",
+  "fetcher": "github",
+  "repo": "manute/gorepl-mode",
+  "unstable": {
+   "version": [
+    20170905,
+    945
+   ],
+   "deps": [
+    "f",
+    "hydra",
+    "s"
+   ],
+   "commit": "6a73bf352e8d893f89cad36c958c4db2b5e35e07",
+   "sha256": "0ydiq55ylm8ph2r5nlv9p7a5bnnxk3c9731l7mbzdhd43f734dld"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "17e025951f5964a0542a4b353ddddbc734c01eed",
+   "sha256": "1abb78xxsggawl43hspl0cr0f7i1b3jd9r6xl1nl5jg97i4byg0b"
+  }
+ },
+ {
+  "ename": "gotest",
+  "commit": "0670b42c0c998daa7bf01080757976ac3589ec06",
+  "sha256": "1kan3gykhci33jgg67jjiiz7rqlz5mpxp8sh6mb0n6kpfmgb4ly9",
+  "fetcher": "github",
+  "repo": "nlamirault/gotest.el",
+  "unstable": {
+   "version": [
+    20191128,
+    1111
+   ],
+   "deps": [
+    "f",
+    "go-mode",
+    "s"
+   ],
+   "commit": "70f63eafda1f6a2f0a01a9320cc4d2edee9a17b2",
+   "sha256": "090xf2w5zgffndpjvg4qfdm77cpsc8vpr00h6j0skjpr3bni79cx"
+  },
+  "stable": {
+   "version": [
+    0,
+    14,
+    0
+   ],
+   "deps": [
+    "f",
+    "go-mode",
+    "s"
+   ],
+   "commit": "8a5ef7363f83edb3b77c5e23876f13dd8c23b2b9",
+   "sha256": "1ksi37kmy9mnrjr5lf9f0ga5nvi3r2kc85g6yvdfj0mbsjm1pnp7"
+  }
+ },
+ {
+  "ename": "gotham-theme",
+  "commit": "20b2cc78b41a26e434b984943681fea774fd3c50",
+  "sha256": "17nkg3ac8ckk5sa722nqinzhln8nb96yppjyp0567cc8p9a3bp59",
+  "fetcher": "git",
+  "url": "https://depp.brause.cc/gotham-theme.git",
+  "unstable": {
+   "version": [
+    20200506,
+    1250
+   ],
+   "commit": "0e5965f897c8c976d6b2ca2471dec0dec9b29bbb",
+   "sha256": "0cvrb23p1m83kd6p5ah04pgzc5gic7q88gnnad9p8d0a7ajh2vbi"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    8
+   ],
+   "commit": "417d61978d139cb5d089c5365fc8d3166d76d3ac",
+   "sha256": "0rc40cfj2mby1q7bk1pp1fxdi72nh9ip80spjdm1csvjjc4dbkwr"
+  }
+ },
+ {
+  "ename": "goto-char-preview",
+  "commit": "6c2287c7b4c543e92ccfab120388b2c05174d2db",
+  "sha256": "1k7dp2zhlk3kyy0br5fqzj6sx9zkg215s3qs8flf3w0xji150r6k",
+  "fetcher": "github",
+  "repo": "jcs-elpa/goto-char-preview",
+  "unstable": {
+   "version": [
+    20190418,
+    829
+   ],
+   "commit": "c0209143fbeafcc9ba93bc2333dd08e72211fa20",
+   "sha256": "15plzc33vyhmfm7bxhvnfr25yvjj6fdr1zp2dvsj8jryj4gb6gkz"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "commit": "366cf84c30fc8e675e9cbab1091ead6f3cd0d399",
+   "sha256": "1y2ay0r0rqayvw8wlbf8advjbhvzz7sa16k272mxszxzp7xmnr71"
+  }
+ },
+ {
+  "ename": "goto-chg",
+  "commit": "cf1fc176430fe3ab55ce537a0efc59780bb812be",
+  "sha256": "1yd4jq4zql4av9nr1sdk4nsnnk54c3brgjhpczndy1ipiaxlnydy",
+  "fetcher": "github",
+  "repo": "emacs-evil/goto-chg",
+  "unstable": {
+   "version": [
+    20190110,
+    2114
+   ],
+   "deps": [
+    "undo-tree"
+   ],
+   "commit": "1829a13026c597e358f716d2c7793202458120b5",
+   "sha256": "1y603maw9xwdj3qiarmf1bp13461f9f5ackzicsbynl0i9la3qki"
+  },
+  "stable": {
+   "version": [
+    1,
+    7,
+    3
+   ],
+   "commit": "16a63aae80db90713fb1f7d378c5d591c2ce15ff",
+   "sha256": "0kpalpssfrwcqrmp47i3j2x04m01fm7cspwsm6fks8pn71lagcwm"
+  }
+ },
+ {
+  "ename": "goto-last-change",
+  "commit": "d68945f5845e5e44fb6c11726a56acd4dc56e101",
+  "sha256": "1yl9p95ls04bkmf4d6az72pycp27bv7q7wxxzvj8sj97bgwvwajx",
+  "fetcher": "github",
+  "repo": "camdez/goto-last-change.el",
+  "unstable": {
+   "version": [
+    20150109,
+    1823
+   ],
+   "commit": "58b0928bc255b47aad318cd183a5dce8f62199cc",
+   "sha256": "1f0zlvva7d7iza1v79yjp0bm7vd011q4cy14g1saryll32z115z5"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    1
+   ],
+   "commit": "58b0928bc255b47aad318cd183a5dce8f62199cc",
+   "sha256": "1f0zlvva7d7iza1v79yjp0bm7vd011q4cy14g1saryll32z115z5"
+  }
+ },
+ {
+  "ename": "goto-last-point",
+  "commit": "20148869e301d236bbf335e8545131488ad57f27",
+  "sha256": "0lns0w7zvi8afsr64kcyn68arrjf7bqmpadw12zj100nnnvs40lh",
+  "fetcher": "github",
+  "repo": "manuel-uberti/goto-last-point",
+  "unstable": {
+   "version": [
+    20190525,
+    1855
+   ],
+   "commit": "7ea191df18ff4774cf1dc568e1726143dd54ea02",
+   "sha256": "1x8sr1xrarb7s7hxp4wg96ng7hb3li3ahixybkzcisz4ga9iwj8x"
+  }
+ },
+ {
+  "ename": "goto-line-preview",
+  "commit": "6c2287c7b4c543e92ccfab120388b2c05174d2db",
+  "sha256": "18q5x2rsg8qyll76cyi0rm5ywgcb4p0w1b2zl0pc9y3qi2g2lwvr",
+  "fetcher": "github",
+  "repo": "jcs-elpa/goto-line-preview",
+  "unstable": {
+   "version": [
+    20190308,
+    736
+   ],
+   "commit": "1f0afb261a4e4a1b0a2fae3959b0ce5d30bce2a1",
+   "sha256": "03csbs9mh9jjw21sncvnlmm97waazy0c57jp1jynwhzzsbp0k0rs"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    5
+   ],
+   "commit": "772fb942777a321b4698add1b94cff157f23a93b",
+   "sha256": "16zil8kjv7lfmy11g88p1cm24j9db319fgkwzsgf2vzp1m15l0pc"
+  }
+ },
+ {
+  "ename": "govc",
+  "commit": "92d6391318021c63b06fe39b0ca38f667bb45ae9",
+  "sha256": "1ivgaziv25wlzg6y4zh8x7mv97pnyhi7p8jpvgh5fg5lnqpzhl4v",
+  "fetcher": "github",
+  "repo": "vmware/govmomi",
+  "unstable": {
+   "version": [
+    20191213,
+    2131
+   ],
+   "deps": [
+    "dash",
+    "json-mode",
+    "magit-popup",
+    "s"
+   ],
+   "commit": "0c56c1e833bc9e21b603539a19bdfe4836a197ed",
+   "sha256": "0iaa34hh0zpy9alf0d6bad7qwk565l9k5k09ig342pwnmigz1scs"
+  },
+  "stable": {
+   "version": [
+    0,
+    22,
+    2
+   ],
+   "deps": [
+    "dash",
+    "json-mode",
+    "magit-popup",
+    "s"
+   ],
+   "commit": "e7df0c1118c15c0b35fe08f183ca084269ea6542",
+   "sha256": "0lm1jaw5bpz7z4gibbbhswjr7qdhxkgbawr5bnykprsmp663i3nm"
+  }
+ },
+ {
+  "ename": "govet",
+  "commit": "7e4a5f5031c76056d8f1b64b27a39a512c7c59cd",
+  "sha256": "1rpgngixf1xnnqf0l2vvh6y9q3395qyj9ln1rh0xz5lm7d4pq4hy",
+  "fetcher": "github",
+  "repo": "meshelton/govet",
+  "unstable": {
+   "version": [
+    20170808,
+    1724
+   ],
+   "commit": "1c05817cf8b96589076c7ac4e52ee58a860a0cbf",
+   "sha256": "1n223i87xmk8p8h8dswnhhvazy0z53dzl36gmk9y7ck8bd9vz706"
+  }
+ },
+ {
+  "ename": "gpastel",
+  "commit": "9b70e05ff0a074f9e2f1373e8495dc8df462deea",
+  "sha256": "0mjy4n26s89b481dby018l80glgfwfaacihmd7vhh2c75ns671a6",
+  "fetcher": "github",
+  "repo": "DamienCassou/gpastel",
+  "unstable": {
+   "version": [
+    20181229,
+    1404
+   ],
+   "commit": "d5fc55bc825203f998537c5834718e665bb87c29",
+   "sha256": "1ggyd2jy7j3kvqsdxbfcsk41r3d31b8bcyncwglm9m1dh4vx5qsr"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "commit": "8a5522b274f79d55d7c9a0b2aaf062526f9253c7",
+   "sha256": "01pnnqcxni55xr7r2lxcnsqiszm2w5iwnjcwp748p1faq6ywhi19"
+  }
+ },
+ {
+  "ename": "grab-mac-link",
+  "commit": "e4cc8a72a9f161f024ed9415ad281dbea5f07a18",
+  "sha256": "1a4wyvx1mlgnd45nn99lwy3vaiwhi1nrphfln86pb6z939dxakj3",
+  "fetcher": "github",
+  "repo": "xuchunyang/grab-mac-link.el",
+  "unstable": {
+   "version": [
+    20190419,
+    1307
+   ],
+   "commit": "b52d29cd78a60cfe874667a8987ed10e8eb0f172",
+   "sha256": "15qznll0358cgqb9m9hpr2if2rsskr29mpsg7h32xb6njqnn741m"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "8bf05a69758fd10a4303c5c458cd91a49ab8b1b2",
+   "sha256": "12x47k3mm5hvhgn7fmfi7bqfa3naz8w1sx6fl3rmnbzvldb89i1k"
+  }
+ },
+ {
+  "ename": "grab-x-link",
+  "commit": "64d4d4e6f9d6a3ea670757f248afd355baf1d933",
+  "sha256": "1kni49n1v716w4hjfm49mk25jshfc6idpby0k58qvngbfqk3kzy5",
+  "fetcher": "github",
+  "repo": "xuchunyang/grab-x-link",
+  "unstable": {
+   "version": [
+    20191113,
+    848
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d898db46e4864118359fdedfe915e180de3fe290",
+   "sha256": "0npz0da2rcckv0zcf2f8vpjcdnii3z99x6c5c4z7jd4xgkp004xs"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d19f0c0da0ddc55005a4c1cdc2b8c5de8bea1e8c",
+   "sha256": "1l9jg2w8ym169b5dhg3k5vksbmicg4n1a55x7ddjysf8n887cpid"
+  }
+ },
+ {
+  "ename": "gradle-mode",
+  "commit": "771cc597daebf9b4aa308f8b350af91a515b44c9",
+  "sha256": "0lx9qi93wmiy9pxjxqp68scbcb4bx88b6jiqk3y8jg5cajizh24g",
+  "fetcher": "github",
+  "repo": "jacobono/emacs-gradle-mode",
+  "unstable": {
+   "version": [
+    20150313,
+    1905
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "e4d665d5784ecda7ddfba015f07c69be3cfc45f2",
+   "sha256": "0xs2278gamzg0710bm1fkhjh1p75m2l1jcl98ldhyjhvaf9d0ysc"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    5
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "579de06674551919cddac9cfe42129f4fb0155c9",
+   "sha256": "0k86lrb55d701nj6pvlw3kjp1dcd3lzfya0hv6q56c529y69d782"
+  }
+ },
+ {
+  "ename": "grails",
+  "commit": "be0196207245ea9d23fda09121d624db9ea6d83d",
+  "sha256": "177y6xv35d2dhc3pdx5qhpywlmlqgfnjpzfm9yxc8l6q2rgs8irw",
+  "fetcher": "github",
+  "repo": "lifeisfoo/emacs-grails",
+  "unstable": {
+   "version": [
+    20160417,
+    636
+   ],
+   "commit": "fa638abe5c37f3f8af4fcd32f212453185ce50b1",
+   "sha256": "1npsjniazaq20vz3kvwr8p30ivc6x24r9a16rfcwhr5wjx3nn91b"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "commit": "fa638abe5c37f3f8af4fcd32f212453185ce50b1",
+   "sha256": "1npsjniazaq20vz3kvwr8p30ivc6x24r9a16rfcwhr5wjx3nn91b"
+  }
+ },
+ {
+  "ename": "grails-mode",
+  "commit": "3fe318b4e51a280a55c01fa30455e4a180df8bd6",
+  "sha256": "1zdlmdkwyaj2zns3xwmqpil83j7857aj2070kvx8xza66dxcnlm4",
+  "fetcher": "github",
+  "repo": "Groovy-Emacs-Modes/groovy-emacs-modes",
+  "unstable": {
+   "version": [
+    20160504,
+    911
+   ],
+   "commit": "cafdd98e06a3bbff213f3ccb163de2c42d412b66",
+   "sha256": "07809alyxind4n0rb1h3x19hgq7ihpn128xljlz38d9xvp0r48z3"
+  },
+  "stable": {
+   "version": [
+    2,
+    0
+   ],
+   "commit": "d7b362e6186d263ec3eefc141dbb5b27a8773f24",
+   "sha256": "0c1d4cbnlny8gpcd20zr1wxx6ggf28jgh7sgd5r1skpsvjpbfqx2"
+  }
+ },
+ {
+  "ename": "grails-projectile-mode",
+  "commit": "35d49029c1f665ad40e543040d98d5a770bfea96",
+  "sha256": "0dy8v2mila7ccvb7j5jlfkhfjsjfk3bm3rcy84m0rgbqjai67amn",
+  "fetcher": "github",
+  "repo": "yveszoundi/grails-projectile-mode",
+  "unstable": {
+   "version": [
+    20160327,
+    1324
+   ],
+   "deps": [
+    "cl-lib",
+    "projectile"
+   ],
+   "commit": "8efca50ce92b556fe9d467b157d7aec635bcc017",
+   "sha256": "0xnj0wp0na53l0y8fiaah50ij4r80j8a29hbjbcicska21p5w1s1"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "projectile"
+   ],
+   "commit": "8efca50ce92b556fe9d467b157d7aec635bcc017",
+   "sha256": "0xnj0wp0na53l0y8fiaah50ij4r80j8a29hbjbcicska21p5w1s1"
+  }
+ },
+ {
+  "ename": "grammarly",
+  "commit": "1bbf7e3434cea3d0f6f72747ea653188ce25f68f",
+  "sha256": "0h0gikvbyraflm921jmf2jkj1nfgxsdq1ybih449zbhxkvb494d4",
+  "fetcher": "github",
+  "repo": "jcs-elpa/grammarly",
+  "unstable": {
+   "version": [
+    20200126,
+    420
+   ],
+   "deps": [
+    "cl-lib",
+    "request",
+    "s",
+    "websocket"
+   ],
+   "commit": "709bf3124b6e130efcede8b38fc2fed38699e19b",
+   "sha256": "1lz74qqzznv5c6pnsnnp0x0k16q663pkqakvwpg69lavcg68ysxh"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "request",
+    "s",
+    "websocket"
+   ],
+   "commit": "cd2e75f21989a586c9cc71540fc6e3b5df8a5ce0",
+   "sha256": "1v7lwwx9iyksh5aaav97vd5pm07k93fkv5v4h96s8i3hyrbcgd74"
+  }
+ },
+ {
+  "ename": "grandshell-theme",
+  "commit": "f0a8eb0eefe88b4ea683a4743c0f8393506e014b",
+  "sha256": "1r0r0r0g116f4jp3rip8mjqqgdam4h5dr5qvdglr9xpirfcw6wq3",
+  "fetcher": "git",
+  "url": "https://framagit.org/steckerhalter/grandshell-theme.git",
+  "unstable": {
+   "version": [
+    20180606,
+    517
+   ],
+   "commit": "0ed8e4273607dd4fcaa742b4097259233b09eda6",
+   "sha256": "04vx5p1ffln5b9rxgfi15q735plxcjvskby3c5k4slgwf4p91bpq"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "commit": "22c8df52c0fb8899fa748fa2980947ab38b53380",
+   "sha256": "08556ci80iycm4qkvbnrci55wyv91b4fh6sjp0im0ywndmrq3yyc"
+  }
+ },
+ {
+  "ename": "graphene",
+  "commit": "0206d6adcb7855c2174c3cd506b71c21def1209b",
+  "sha256": "1wz3rvd8b7gx5d0k7yi4dd69ax5bybcm10vdc7xp4yn296lmyl9k",
+  "fetcher": "github",
+  "repo": "rdallasgray/graphene",
+  "unstable": {
+   "version": [
+    20180529,
+    1112
+   ],
+   "deps": [
+    "company",
+    "dash",
+    "exec-path-from-shell",
+    "flycheck",
+    "graphene-meta-theme",
+    "ido-completing-read+",
+    "ppd-sr-speedbar",
+    "smartparens",
+    "smex",
+    "sr-speedbar",
+    "web-mode"
+   ],
+   "commit": "cc8477fcfb7771ea4e5bbaf3c01f9e679234c1c1",
+   "sha256": "0j0igcmfl61c4pakqmyxpwr4kjar9i81vkl84rw19phc7k9497nb"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "company",
+    "dash",
+    "exec-path-from-shell",
+    "flycheck",
+    "graphene-meta-theme",
+    "ido-completing-read+",
+    "ppd-sr-speedbar",
+    "smartparens",
+    "smex",
+    "sr-speedbar",
+    "web-mode"
+   ],
+   "commit": "cc8477fcfb7771ea4e5bbaf3c01f9e679234c1c1",
+   "sha256": "0j0igcmfl61c4pakqmyxpwr4kjar9i81vkl84rw19phc7k9497nb"
+  }
+ },
+ {
+  "ename": "graphene-meta-theme",
+  "commit": "44af719ede73c9fe7787272d7868587ce8966e3d",
+  "sha256": "1cqdr93lccdpxkzgap3r3qc92dh8vqgdlnxvqkw7lrcbs31fvf3q",
+  "fetcher": "github",
+  "repo": "rdallasgray/graphene-meta-theme",
+  "unstable": {
+   "version": [
+    20161204,
+    1607
+   ],
+   "commit": "62cc73fee31f1bd9474027b83a249feee050271e",
+   "sha256": "1ydl6dlg5z4infq8j09izwgs6n97yza6nbq5rs1xfv00zd9gr63c"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    6
+   ],
+   "commit": "8e75528529f460b1b5910467c4fc1f516e1a57b9",
+   "sha256": "03wllxivl95gsknjkmljm3kgjkwixwxaksaxv8i9c0zjrb2wwm24"
+  }
+ },
+ {
+  "ename": "graphql",
+  "commit": "3e801ae56f11b64a5a3e52cf1a6c152940ab8c97",
+  "sha256": "139fng2psn535ymqa7c6hm1r7ja1gs5mdvb487jj6fh0bl9wq8la",
+  "fetcher": "github",
+  "repo": "vermiculus/graphql.el",
+  "unstable": {
+   "version": [
+    20180912,
+    31
+   ],
+   "commit": "e2b309689f4faf9225f290080f836e988c5a576d",
+   "sha256": "1hqvsr2s2lbdssbx3v8nqxdhhdvydx6hpbhh4rlnfcadhhs0f6nr"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "672dd9ebd7e67d8089388b0c484cd650e76565f3",
+   "sha256": "0sp0skc1rnhi39szfbq1i99pdgd3bhn4c15cff05iqhjy2d4hniw"
+  }
+ },
+ {
+  "ename": "graphql-mode",
+  "commit": "3850073e6706d4d8151bc6ab12963a19deae8be9",
+  "sha256": "074dc8fgbrikb5inv837n9bpmz1ami7aaxsqcci1f94x3iw8i74i",
+  "fetcher": "github",
+  "repo": "davazp/graphql-mode",
+  "unstable": {
+   "version": [
+    20191024,
+    1221
+   ],
+   "commit": "7c37aee28bf8c8ffb3da73df5571c4e1e352562b",
+   "sha256": "0hjzqmrc024b98nisvn2ld8gn3bslg8ip19d1fnid3m8q9zk8w8b"
+  }
+ },
+ {
+  "ename": "graphviz-dot-mode",
+  "commit": "6e2f1e66b33fd95142be4622c996911e38d56281",
+  "sha256": "04rkynsrsk6w4sxn1pc0b9b6pij1p7yraywbrk7qvv05fv69kri2",
+  "fetcher": "github",
+  "repo": "ppareit/graphviz-dot-mode",
+  "unstable": {
+   "version": [
+    20200304,
+    432
+   ],
+   "commit": "3642a0a5f41a80c8ecef7c6143d514200b80e194",
+   "sha256": "16aq9zz4dnccngk9q1k2qa0mwd63cycwrzdkvzg4nn6ikq6w7wnp"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    2
+   ],
+   "commit": "80b9c5e7f464c70cfa423e5ee3237581bc69d643",
+   "sha256": "1v1p85wk73nfsvv66qf90flgf9dqhmv15z1r7q4zmc4ifklqn08m"
+  }
+ },
+ {
+  "ename": "grapnel",
+  "commit": "dd482e4b2c45921b81c5fb3dfce53acfec3c3093",
+  "sha256": "019cdx1wdx8sc2ibqwgp1akgckzxxvrayyp2sv806gha0kn6yf6r",
+  "fetcher": "github",
+  "repo": "leathekd/grapnel",
+  "unstable": {
+   "version": [
+    20131001,
+    1534
+   ],
+   "commit": "fbd0f9a51139973d35e4014855964fa435e8ecaf",
+   "sha256": "0nvl8mh7jxailisq31h5bi64s9b74ah1465wiwh18x502swr2s3c"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    3
+   ],
+   "commit": "7387234eb3f0285a490fddb1e06a4bf029719fb7",
+   "sha256": "0xcj1kqzgxifhrhpl9j2nfpnkd6213ix5z7f97269v3inpzaiyf5"
+  }
+ },
+ {
+  "ename": "grass-mode",
+  "commit": "c6f0b067cfbd2902a585b9d1eaadabcac3e62286",
+  "sha256": "1njzw4sparjcyhxki2z0xqrsbazfm52bxm7522szgvxcmjwxybcz",
+  "fetcher": "github",
+  "repo": "plantarum/grass-mode",
+  "unstable": {
+   "version": [
+    20170503,
+    1500
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "8a7e9dcb2295eef1ec25d886b05e09c876bd8398",
+   "sha256": "023s9kn012z6m4aprsq77zv4kvfvwfics5gcdja7ig4xwqqrzymq"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "23ca856ca979fec0f90196b357f2b74fe1cc3a73",
+   "sha256": "116247yggxs0hfbx1746j1d642gk9zbx15c2dw4p5pq9qkasmy95"
+  }
+ },
+ {
+  "ename": "grayscale-theme",
+  "commit": "2993881c7285cfbfc590b4118db46bfd435817bc",
+  "sha256": "0jbzb1zxv5mg3pivii31d4kz75igm339nw4cmx9kgzia9zal5f1r",
+  "fetcher": "github",
+  "repo": "belak/emacs-grayscale-theme",
+  "unstable": {
+   "version": [
+    20171005,
+    802
+   ],
+   "commit": "53ad50e10e68f2f076ebfc96e10ecef7a932d38d",
+   "sha256": "034pa35cjl07bhqdyw3xrcl97xcdg7jg0jvgn034fs3hssmsyxgv"
+  }
+ },
+ {
+  "ename": "greek-polytonic",
+  "commit": "bf0e6206be0e6f416c59323cf10bf052882863f3",
+  "sha256": "0rp5iwiznp95r8srxvq72hna2hgcqj4q1dvg2ma86cqzgqwr4xnw",
+  "fetcher": "github",
+  "repo": "jhanschoo/greek-polytonic",
+  "unstable": {
+   "version": [
+    20190303,
+    1358
+   ],
+   "commit": "114cba0f57cc077871693c799b807df2292341ec",
+   "sha256": "09prvjnhvirip6s0rlsp7pyyaj9xswvvjskxb2977ymki8ijxmqf"
+  }
+ },
+ {
+  "ename": "green-is-the-new-black-theme",
+  "commit": "3e42528d5677fd90515cad47266c07ea3d4363fb",
+  "sha256": "03q0vj409icmawffy2kd9yl04r453q80cy1p9y4i3xk368z0362g",
+  "fetcher": "github",
+  "repo": "fredcamps/green-is-the-new-black-emacs",
+  "unstable": {
+   "version": [
+    20190724,
+    1252
+   ],
+   "commit": "34f0372878a07a23bf1d9418aa380c403d272457",
+   "sha256": "1gfp5n4lknbw2p5wik0kq5i80p90x9gwd1zif7sjz5g3ximmgg04"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "commit": "34f0372878a07a23bf1d9418aa380c403d272457",
+   "sha256": "1gfp5n4lknbw2p5wik0kq5i80p90x9gwd1zif7sjz5g3ximmgg04"
+  }
+ },
+ {
+  "ename": "green-phosphor-theme",
+  "commit": "c6770f5d800232c152833d32efb814005e65ffc6",
+  "sha256": "1p4l75lahmbjcx74ca5jcyc04828vlcahk7gzv5lr7z9mhvq6fbh",
+  "fetcher": "github",
+  "repo": "aalpern/emacs-color-theme-green-phosphor",
+  "unstable": {
+   "version": [
+    20150515,
+    1447
+   ],
+   "commit": "fa42f598626adfdc5450e5c380fa2d5df6110f28",
+   "sha256": "0rgv96caigcjffg1983274p4ff1icx1xh5bj7rcd53hai5ag16mp"
+  }
+ },
+ {
+  "ename": "green-screen-theme",
+  "commit": "821744ca106f1b74941524782e4581fc93800fed",
+  "sha256": "0a45xcl74kp3v39bl169sq46mqxiwvvis6jzwcy6yrl2vqqi4mab",
+  "fetcher": "github",
+  "repo": "rbanffy/green-screen-emacs",
+  "unstable": {
+   "version": [
+    20180816,
+    1502
+   ],
+   "commit": "774e8f6c033786406267f71ec07319d906a30b75",
+   "sha256": "0f12lqgfi1vlhq8p5ia04vlmvmyb4f40q7dm2nbh5y8r6k89hisg"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    26
+   ],
+   "commit": "774e8f6c033786406267f71ec07319d906a30b75",
+   "sha256": "0f12lqgfi1vlhq8p5ia04vlmvmyb4f40q7dm2nbh5y8r6k89hisg"
+  }
+ },
+ {
+  "ename": "gregorio-mode",
+  "commit": "34cdc536cd0509c5a151c16f44f4db2c5b44365f",
+  "sha256": "1x3z4gc88h13miz72a597lz9hcn2lxps9jvldl2j62s6nvr88pff",
+  "fetcher": "github",
+  "repo": "jsrjenkins/gregorio-mode",
+  "unstable": {
+   "version": [
+    20170705,
+    1451
+   ],
+   "commit": "736fd3d05fb67f707cca1a7ce24e3ee7ca5e9567",
+   "sha256": "1w13a3irak6i74kl7va8d2simd2kjvw5253s8jvapi1mg4ifw379"
+  }
+ },
+ {
+  "ename": "grep-a-lot",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1cbl4gl91dx73q3i2glsivfxd8jkanrcrzy35zf6rb7raj7rc1bw",
+  "fetcher": "github",
+  "repo": "ZungBang/emacs-grep-a-lot",
+  "unstable": {
+   "version": [
+    20131006,
+    1347
+   ],
+   "commit": "9f9f645b9e308a0d887b66864ff97d0fca1ba4ad",
+   "sha256": "1f8262mrlinzgnn4m49hbj1hm3c1mvzza24py4b37sasn49546lw"
+  }
+ },
+ {
+  "ename": "grep-context",
+  "commit": "41dbaf627ae4ef86c222d2b6b5d3523fdb9a4637",
+  "sha256": "175s9asbnk2wlgpzc5izcd3vlfvdj064n38myy9qf4awn12c2y1g",
+  "fetcher": "github",
+  "repo": "mkcms/grep-context",
+  "unstable": {
+   "version": [
+    20181002,
+    1654
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "58f6edc18510d871e4f5ef63ef60665cbc204e96",
+   "sha256": "04mk5wi2i4mx58mfzl4zk10lm58yliczsw5vpxqmikz8gbripqqx"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "4c63d0f2654dee1e249c2054d118d674a757bd45",
+   "sha256": "0n2bc9q6bvbfpaqivp3ajy9ad1wr7hfdd98qhnspsap67p73kfn4"
+  }
+ },
+ {
+  "ename": "greymatters-theme",
+  "commit": "d13621f3033b180d06852d90bd3ebe03276031f5",
+  "sha256": "10cxajyws5rwk62i4vk26c1ih0dq490kcfx7gijw38q3b5r1l8nr",
+  "fetcher": "github",
+  "repo": "mswift42/greymatters-theme",
+  "unstable": {
+   "version": [
+    20150621,
+    1123
+   ],
+   "commit": "a7220a8c6cf18ccae2b76946b6f01188a7c9d5d1",
+   "sha256": "14c09m9p6556rrf0qfad4zsv7qxa5flamzg6fa83cxh0qfg7wjbp"
+  }
+ },
+ {
+  "ename": "grip-mode",
+  "commit": "de97f1c15b3ab53ca5e314b679c289705302bb64",
+  "sha256": "162ss93hbkxv5zd0vid6xh77ln7bsx2ngzr7h1y4dmcg36npmy5d",
+  "fetcher": "github",
+  "repo": "seagle0128/grip-mode",
+  "unstable": {
+   "version": [
+    20200312,
+    1136
+   ],
+   "commit": "9615c4774727a719d38313a679d70f2a2c6aca68",
+   "sha256": "01imyi1l33ng78m6c5g4pma5gy4j7jy7dwmqwsqgwbws08qdbwgr"
+  },
+  "stable": {
+   "version": [
+    2,
+    2,
+    1
+   ],
+   "commit": "9615c4774727a719d38313a679d70f2a2c6aca68",
+   "sha256": "01imyi1l33ng78m6c5g4pma5gy4j7jy7dwmqwsqgwbws08qdbwgr"
+  }
+ },
+ {
+  "ename": "grizzl",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "0354xskqzxc38l14zxqs31hadwh27v9lyx67y3hnd94d8abr0qcb",
+  "fetcher": "github",
+  "repo": "grizzl/grizzl",
+  "unstable": {
+   "version": [
+    20160818,
+    737
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1e917253ce2b846f0272b8356fad3dbff9cd513a",
+   "sha256": "1hw932zvhyxajdgd0h18vr3w0sr0vp4334phlr1aysv7rjfgnpkr"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "c775de1c34d1e5a374e2f40c1ae2396b4b003fe7",
+   "sha256": "1bq73kcx744xnlm2yvccrzlbyx91c492sg7blx2a9z643v3gg1zs"
+  }
+ },
+ {
+  "ename": "groovy-imports",
+  "commit": "b18a6842805856062e9452dc32bf0fd458f7d51a",
+  "sha256": "09yjkwsm192lgala1pvxw47id4j7362sl3j1hn9ald2m8m3ddyfs",
+  "fetcher": "github",
+  "repo": "mbezjak/emacs-groovy-imports",
+  "unstable": {
+   "version": [
+    20161003,
+    851
+   ],
+   "deps": [
+    "pcache",
+    "s"
+   ],
+   "commit": "e56d7dda617555ec6205644d32ffddf2e1fa43d9",
+   "sha256": "060zxl2y4p50g5fwgplgx07h5akfplp49rkv5cx09rqlcyzqhqwa"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "pcache",
+    "s"
+   ],
+   "commit": "e56d7dda617555ec6205644d32ffddf2e1fa43d9",
+   "sha256": "060zxl2y4p50g5fwgplgx07h5akfplp49rkv5cx09rqlcyzqhqwa"
+  }
+ },
+ {
+  "ename": "groovy-mode",
+  "commit": "3fe318b4e51a280a55c01fa30455e4a180df8bd6",
+  "sha256": "1pxw7rdn56klmr6kw21lhzh7zhp338gyf54ypsml64ibzr1x9kal",
+  "fetcher": "github",
+  "repo": "Groovy-Emacs-Modes/groovy-emacs-modes",
+  "unstable": {
+   "version": [
+    20191031,
+    2256
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "cafdd98e06a3bbff213f3ccb163de2c42d412b66",
+   "sha256": "07809alyxind4n0rb1h3x19hgq7ihpn128xljlz38d9xvp0r48z3"
+  },
+  "stable": {
+   "version": [
+    2,
+    0
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "d7b362e6186d263ec3eefc141dbb5b27a8773f24",
+   "sha256": "0c1d4cbnlny8gpcd20zr1wxx6ggf28jgh7sgd5r1skpsvjpbfqx2"
+  }
+ },
+ {
+  "ename": "gruber-darker-theme",
+  "commit": "87ade74553c04cb9dcfe16d03f263cc6f1fed046",
+  "sha256": "0vn4msixb77xj6p5mlfchjyyjhzah0lcmp0z82s8849zd194fxqi",
+  "fetcher": "github",
+  "repo": "rexim/gruber-darker-theme",
+  "unstable": {
+   "version": [
+    20200227,
+    2238
+   ],
+   "commit": "7f95ce96079eb22b9214435ed25c5af98f60b482",
+   "sha256": "1zdqbjhcb8b1f4szzjmkzhpxcg17dqfp91882h95f1x9c2an5gdw"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "commit": "0c08d77e615aceb9e6e1ca66b1fbde275200cfe4",
+   "sha256": "14h0rcd3nkw3pmx8jwip20p6rzl9qdkip5g52gfjjbqfvaffsrkd"
+  }
+ },
+ {
+  "ename": "grunt",
+  "commit": "acc9b816796b9f142c53f90593952b43c962d2d8",
+  "sha256": "1qdzqcrff9x97kyy0d4j636d5i751qja10liw8i0lf4lk6n0lywz",
+  "fetcher": "github",
+  "repo": "gempesaw/grunt.el",
+  "unstable": {
+   "version": [
+    20160316,
+    1528
+   ],
+   "deps": [
+    "ansi-color",
+    "dash"
+   ],
+   "commit": "4c269e2738658643ec2ed9ef61a2a3d71b08d304",
+   "sha256": "1xd6gv9bkqnj7j5mcnwvl1mxjmzvxqhp135hxj0ijc0ybdybacf7"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    2
+   ],
+   "deps": [
+    "ansi-color",
+    "dash"
+   ],
+   "commit": "e27dbb6b3de9b36c7fb28f69aa06b4b2ea32d4b9",
+   "sha256": "0zpmhjwj64s72iv3dgsy07pfh20f25ngsy3pszmlrfkxk0926d8k"
+  }
+ },
+ {
+  "ename": "gruvbox-theme",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "12z89fjfqcp9rx2f2x9wcffgxxv3kjn1dabyk0cjf286hgvmgz88",
+  "fetcher": "github",
+  "repo": "greduan/emacs-theme-gruvbox",
+  "unstable": {
+   "version": [
+    20200514,
+    740
+   ],
+   "deps": [
+    "autothemer"
+   ],
+   "commit": "f1dfcd8bd50e4885cab71b174bbc6a620c2b9d7f",
+   "sha256": "106vkpm75s3s52bkmcnjlw8gx3qlh5hffwvj2bvkmqfcgnxpzgx0"
+  },
+  "stable": {
+   "version": [
+    1,
+    28,
+    0
+   ],
+   "deps": [
+    "autothemer"
+   ],
+   "commit": "69a6ddf6c7e8c84174b94900ba71ddd08ec0237f",
+   "sha256": "00qq92gp1g55pzm97rh7k0dgxy44pxziridl8kqm4rbpi31r7k9p"
+  }
+ },
+ {
+  "ename": "gs-mode",
+  "commit": "bc1aa5335810e3d6572ebe9cd8949932b74d0f46",
+  "sha256": "02ldd92fv1k28nygl34i8gv0b0i1v5qd7nl1l17cf5f3akdwc6iq",
+  "fetcher": "github",
+  "repo": "yyr/emacs-grads",
+  "unstable": {
+   "version": [
+    20151202,
+    1006
+   ],
+   "commit": "1a13051db21b999c7682a015b33a03096ff9d891",
+   "sha256": "1d89gxyzv0z0nk7v1aa4qa0xfms2g2dsrr07cw0d99xsnyxfky31"
+  }
+ },
+ {
+  "ename": "gscholar-bibtex",
+  "commit": "9fa546d3dce59b07a623ee83e3befe139dc10481",
+  "sha256": "0d41gr9amf9vdn9pl9lamhp2swqllxslv9r3wsgzqvjl7zayd1az",
+  "fetcher": "github",
+  "repo": "cute-jumper/gscholar-bibtex",
+  "unstable": {
+   "version": [
+    20190130,
+    555
+   ],
+   "commit": "3b651e3de116860eb1f1aef9b547a561784871fe",
+   "sha256": "0wwjz4k1hsc1z489ygz4kh3dh23d7pnkgg2js07as7038hmhkjcb"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    3
+   ],
+   "commit": "ba4ce159e385d695d8560e8b06b3cbe48424861c",
+   "sha256": "0idnfhk17avp0r4706grjqqkz0xl98gs0bx7wrkvwym3y2gadlz2"
+  }
+ },
+ {
+  "ename": "gsettings",
+  "commit": "ebdd0285684c712748d6353bd2a4774bd97dd521",
+  "sha256": "168zq3gp874k66jv8k78i6b1cb9042763aj9wpmcs9bz437hhw32",
+  "fetcher": "github",
+  "repo": "wbolster/emacs-gsettings",
+  "unstable": {
+   "version": [
+    20190513,
+    1003
+   ],
+   "deps": [
+    "dash",
+    "gvariant",
+    "s"
+   ],
+   "commit": "3009335a077636347defd08d24fb092495d16d3e",
+   "sha256": "0xvj0p533laxvhv9jvgdzw5pix6zlai3jp43n2bi0kwmq21clwgz"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "dash",
+    "gvariant",
+    "s"
+   ],
+   "commit": "1dd9a6a3036d76d8e680b2764c35b31bf5e6aff7",
+   "sha256": "0bv6acy3b6pbjqm24yxgi7xdd3x0c2b7s5sq65sb3lxf8hy5gdf6"
+  }
+ },
+ {
+  "ename": "gtk-pomodoro-indicator",
+  "commit": "a58f1acaafc459e055d751acdb68427e4b11275e",
+  "sha256": "1lkz1bk3zl51jdgp7pg6sr57drdwz8mlvl9ryky3iv73kr5i0q6c",
+  "fetcher": "github",
+  "repo": "abo-abo/gtk-pomodoro-indicator",
+  "unstable": {
+   "version": [
+    20191007,
+    1500
+   ],
+   "commit": "338e6dca6d749cfc85195907bba593f9f6855715",
+   "sha256": "1nl2ji5wvmfzchxpnmsgxn4v2lybyymyyh99lw3riqg6gb0phl9l"
+  }
+ },
+ {
+  "ename": "gtk-variant",
+  "commit": "12bcbebf4b604e29cee443825c56336f5249e088",
+  "sha256": "1dcj0k2j89yx7k0cqqinb4xnhl0i2yivlvrb87xbj89zbijss967",
+  "fetcher": "github",
+  "repo": "bepvte/gtk-variant.el",
+  "unstable": {
+   "version": [
+    20200416,
+    2136
+   ],
+   "commit": "4462a5ab071ec001734e92d1ac2e5fa9721b94bd",
+   "sha256": "0v2h846k9xv47am66nv4piqhvn74xijhp2bq84v3wpls4msvfk70"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    4
+   ],
+   "commit": "4462a5ab071ec001734e92d1ac2e5fa9721b94bd",
+   "sha256": "0v2h846k9xv47am66nv4piqhvn74xijhp2bq84v3wpls4msvfk70"
+  }
+ },
+ {
+  "ename": "guess-language",
+  "commit": "6e78cb707943fcaaba0414d7af2af717efce84d0",
+  "sha256": "1p8j18hskvsv4pn3cal5s91l19hgshq8hpclmp84z9hlnj9g9fpm",
+  "fetcher": "github",
+  "repo": "tmalsburg/guess-language.el",
+  "unstable": {
+   "version": [
+    20200326,
+    1725
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f4ce91eba3c479d08fedf0a3ced6c1265a7838ca",
+   "sha256": "0z7agqi5sgjjidhmnrv7615737xk7p1s6pdhr6swjcr117dq44fm"
+  }
+ },
+ {
+  "ename": "guide-key",
+  "commit": "490b81308ae8132d8c3fd8c3951be88159719172",
+  "sha256": "0zjrdvppcg8b2k6hfdj45rswc1ks9xgimcr2yvgpc8prrwk1yjsf",
+  "fetcher": "github",
+  "repo": "kai2nenobu/guide-key",
+  "unstable": {
+   "version": [
+    20150108,
+    635
+   ],
+   "deps": [
+    "dash",
+    "popwin",
+    "s"
+   ],
+   "commit": "8f8b839f42edd53af13d588254f07727108ae312",
+   "sha256": "0awx1s5qsg92flha8i0j72zg4kax2h2vi62qikk19sniiwdlrv4i"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    5
+   ],
+   "deps": [
+    "popwin"
+   ],
+   "commit": "626f3aacfe4561eddc46617570426246b88e9cab",
+   "sha256": "1bmcvn8a7g9ahpv2fww673hx9pa7nnrj9kpljq65azf61vq2an2g"
+  }
+ },
+ {
+  "ename": "guide-key-tip",
+  "commit": "1f23db7563654ab58632d56e3b01d2f78276fc3e",
+  "sha256": "0h2vkkbxq361dkn6irm1v19qj7bkhxcjljiksd5wwlq5zsq6bd06",
+  "fetcher": "github",
+  "repo": "aki2o/guide-key-tip",
+  "unstable": {
+   "version": [
+    20161011,
+    823
+   ],
+   "deps": [
+    "guide-key",
+    "pos-tip"
+   ],
+   "commit": "02c5d4b0b65f3e91be5a47f0ff1ae5e86e00c64e",
+   "sha256": "1xkrfjmhprnj8i39a85wfcs5whm93fw8l57c606wdhiwqj719ciz"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "guide-key",
+    "pos-tip"
+   ],
+   "commit": "e08b2585228529aeaae5e0ae0948f898e83a6200",
+   "sha256": "040mcfhj2gggp8w1pgip7rxb1bnb23rxlm02wl6x1qv5i0q7g5x3"
+  }
+ },
+ {
+  "ename": "guix",
+  "commit": "b3d8c73e8a946b8265487a0825d615d80aa3337d",
+  "sha256": "0h4jwc4h2jv09c6rngb614fc39qfy04rmvqrn1l54hn28s6q7sk9",
+  "fetcher": "github",
+  "repo": "alezost/guix.el",
+  "unstable": {
+   "version": [
+    20200510,
+    1613
+   ],
+   "deps": [
+    "bui",
+    "dash",
+    "edit-indirect",
+    "geiser",
+    "magit-popup"
+   ],
+   "commit": "0b8f75124372266bfab32e8d1fa114f33ea24e6f",
+   "sha256": "17i0rivgixkg18qiqw5a47ahli9vpc9p5yhd9s9j3jmf1jlzq4bf"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    2
+   ],
+   "deps": [
+    "bui",
+    "dash",
+    "edit-indirect",
+    "geiser",
+    "magit-popup"
+   ],
+   "commit": "c2796e68868c91253b6aca422a9ae07363aa03a9",
+   "sha256": "0i0bvv3wd3fd22mffa62076mi1cnzwyphibqiimll23kngg507b2"
+  }
+ },
+ {
+  "ename": "gulp-task-runner",
+  "commit": "34a2bede5ea70cf9df623c32e789d78205f9ebb0",
+  "sha256": "0211mws99bc9ipg7r3qqm1n7gszvwil31psinf0250wliyppjij7",
+  "fetcher": "github",
+  "repo": "NicolasPetton/gulp-task-runner",
+  "unstable": {
+   "version": [
+    20170718,
+    2041
+   ],
+   "commit": "877990e956b1d71e2d9c7c3e5a129ad199b9debb",
+   "sha256": "13qy4x4ap43qm5w2vrsy6w01z2s2kymfr9qvlj2yri4xk3r4vrps"
+  }
+ },
+ {
+  "ename": "guru-mode",
+  "commit": "e60af6ccb902d8ef00cfecbb13cafebbe3b00d89",
+  "sha256": "0j25nxs3ndybq1ik36qyqdprmhav4ba8ny7v2z61s23id8hz3xjs",
+  "fetcher": "github",
+  "repo": "bbatsov/guru-mode",
+  "unstable": {
+   "version": [
+    20170730,
+    731
+   ],
+   "commit": "c180e05ebc1484764aad245c85b69de779826e4e",
+   "sha256": "0qb6yr6vbic0rh8ayrpbz5byq7jxmwm1fc9l4alpz7dhyb11z07v"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "62a9a0025249f2f8866b94683c4114c39f48e1fa",
+   "sha256": "1y46qd9cgkfb0wp2cvksjncyp77hd2jnr4bm4zafqirc3qhbysx0"
+  }
+ },
+ {
+  "ename": "gvariant",
+  "commit": "7a616ac75f77b1e61e1386bd905b6bcf3d8aaa3f",
+  "sha256": "1ycrnfq60z9fycgqmp1y8jna0l0c2b6mlg6ggimb0rml1ili6npm",
+  "fetcher": "github",
+  "repo": "wbolster/emacs-gvariant",
+  "unstable": {
+   "version": [
+    20190513,
+    1005
+   ],
+   "deps": [
+    "parsec"
+   ],
+   "commit": "b162867c03ead58784c47996ae329355ecea2869",
+   "sha256": "0yqgj3zcpmga9v085l98yr02k8bhgd4bzshmyjl1x98s50n207jp"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "parsec"
+   ],
+   "commit": "79c34d11ee6a34f190f1641a133d34b0808a1143",
+   "sha256": "18ld0wv8r5wlbicqym8vdw33la0bn59s7bxm2fw0w97qwjka8g8k"
+  }
+ },
+ {
+  "ename": "gvpr-mode",
+  "commit": "ab25afcf4232082dc0e48706734f141a308912a7",
+  "sha256": "19p6f06qdjvh2vmgbabajvkfxpn13j899jrivw9mqyssz0cyvzgw",
+  "fetcher": "github",
+  "repo": "rodw/gvpr-lib",
+  "unstable": {
+   "version": [
+    20131208,
+    1718
+   ],
+   "commit": "3d6cc6f4416faf2a1913821d12ba6eb624362af0",
+   "sha256": "0060qw4gr9fv6db20xf3spgl2fwg2iid5ckfjm3vj3ydyv62q13s"
+  }
+ },
+ {
+  "ename": "gxref",
+  "commit": "429b9150d4054fcadab8c5ca3b688921eeb19b78",
+  "sha256": "06qlfjclfx00m8pr7lk6baim3vjk5i0m75i1p4aihp2vflvgjaby",
+  "fetcher": "github",
+  "repo": "dedi/gxref",
+  "unstable": {
+   "version": [
+    20170411,
+    1753
+   ],
+   "commit": "380b02c3c3c2586c828456716eef6a6392bb043b",
+   "sha256": "1c5j28rwqx53qdsqglif8yblhm2bwm4qzpl2dg0l0g3pr8pk8zjk"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "15723a9d910d7dd9ea18cab0336332cf988aeceb",
+   "sha256": "1l5d1kh2dy3w42i8c3z63c7mzarxixxiby2g7ay2i809yxj10y1n"
+  }
+ },
+ {
+  "ename": "habamax-theme",
+  "commit": "77386484ad0b31c2818fae52cd312821c4632cb8",
+  "sha256": "1rmir9gc1niwkshxg1826nkh8xxmpim5pbhp61wx1m273lfn2h69",
+  "fetcher": "github",
+  "repo": "habamax/habamax-theme",
+  "unstable": {
+   "version": [
+    20181001,
+    850
+   ],
+   "commit": "6e86a1b23b6e2aaf40d4374b5673da00a28be447",
+   "sha256": "0k96mdxg28bbm14d6rdlin8l4c75i9wicj3mxrd0bys0shxl9jm6"
+  }
+ },
+ {
+  "ename": "habitica",
+  "commit": "cf9543db3564f4806440ed8c5c30fecbbc625fa1",
+  "sha256": "0g7rb8ip5d6xvlsfk8cvf81hgzlq5p4kw9pkisjq9ri8mvkfmxf3",
+  "fetcher": "github",
+  "repo": "abrochard/emacs-habitica",
+  "unstable": {
+   "version": [
+    20190721,
+    1620
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "c45c602ddf9d6cbb0e3baf5cb3e1b7ef90f2759d",
+   "sha256": "0wgnzn3z98bl28jgqi7xklw9fwx2wwgihj3mq0jb8ah4vn70d0j3"
+  }
+ },
+ {
+  "ename": "hack-mode",
+  "commit": "27e238e5d2aaca810fd3fb6836ca49c9fa07cc87",
+  "sha256": "1zs7p6fczj526wz9kvyhmxqkgrkfkkrvm9ma4cg349sfpjpxwkbl",
+  "fetcher": "github",
+  "repo": "hhvm/hack-mode",
+  "unstable": {
+   "version": [
+    20200421,
+    157
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "330df61f7297344cff9cf9e2d802a4d041279de3",
+   "sha256": "00g9h96kb9d3qg544x9143hx4nc5crw67cq93ip4mrh3d86rkpc1"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "4e50d9f46b044c0d885af3a486bf6275c121f29e",
+   "sha256": "1s06m8bam7wlhqw0gbc443lfrz51mj05pzvbmjzqadqn4240v4jw"
+  }
+ },
+ {
+  "ename": "hacker-typer",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "0vf18hylhszvplam6c4yynr53zc3n816p9k36gywm6awwblfpyfb",
+  "fetcher": "github",
+  "repo": "dieggsy/emacs-hacker-typer",
+  "unstable": {
+   "version": [
+    20170206,
+    1520
+   ],
+   "commit": "d5a23714a4ccc5071580622f278597d5973f40bd",
+   "sha256": "13wp7cg9d9ij44inxxyk1knczglxrbfaq50wyhc4x5zfhz5yw7wx"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    6
+   ],
+   "commit": "d5a23714a4ccc5071580622f278597d5973f40bd",
+   "sha256": "13wp7cg9d9ij44inxxyk1knczglxrbfaq50wyhc4x5zfhz5yw7wx"
+  }
+ },
+ {
+  "ename": "hackernews",
+  "commit": "c43a342e47e5ede468bcf51a60d4dea3926f51bd",
+  "sha256": "1x1jf5gkhmpiby5rmy0sziywh6c1f1n0p4f6dlz6ifbwns7har6a",
+  "fetcher": "github",
+  "repo": "clarete/hackernews.el",
+  "unstable": {
+   "version": [
+    20190529,
+    1120
+   ],
+   "commit": "2362d7b00e59da7caddc8c0adc24dccb42fddef9",
+   "sha256": "1hcc5b173yzcvvd2ls3jxrmsw2w9bi21m9hcpcirkn0nh93ywadv"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "deps": [
+    "json"
+   ],
+   "commit": "916c3da8da45c757f5ec2faeed57fa370513d4ac",
+   "sha256": "09bxaaczana1cfvxyk9aagjvdszkj0j1yldl5r4xa60b59lxihsg"
+  }
+ },
+ {
+  "ename": "hal-mode",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "0nlan5f3llhn04p86a6l47dl9g83a51wzrchs2q8rvfcy4161nn4",
+  "fetcher": "github",
+  "repo": "machinekoder/hal-mode",
+  "unstable": {
+   "version": [
+    20160704,
+    1746
+   ],
+   "commit": "cd2f66f219ee520198d4586fb6b169cef7ad3f21",
+   "sha256": "0xibwmngijq0wv9hkahs5nh02qj3ma0bkczl07hx8wnl6j27f0nj"
+  }
+ },
+ {
+  "ename": "ham-mode",
+  "commit": "1e6aed365c42987d64d0cd9a8a6178339b1b39e8",
+  "sha256": "000qrdby7d6zmp5066vs4gjlc9ik0ybrgcwzcbfgxb16w1g9xpmz",
+  "fetcher": "github",
+  "repo": "Malabarba/ham-mode",
+  "unstable": {
+   "version": [
+    20150811,
+    1306
+   ],
+   "deps": [
+    "html-to-markdown",
+    "markdown-mode"
+   ],
+   "commit": "3a141986a21c2aa6eefb428983352abb8b7907d2",
+   "sha256": "0d3xmagl18pas19zbpg27j0lmdiry23df48z4vkjsrcllqg25v5g"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    2
+   ],
+   "deps": [
+    "html-to-markdown",
+    "markdown-mode"
+   ],
+   "commit": "3a141986a21c2aa6eefb428983352abb8b7907d2",
+   "sha256": "0d3xmagl18pas19zbpg27j0lmdiry23df48z4vkjsrcllqg25v5g"
+  }
+ },
+ {
+  "ename": "hamburg-theme",
+  "commit": "465ac6063c4f91652e59a8bbb493897109791728",
+  "sha256": "149ln7670kjyhdfj5j9akxch47dlff2hd58amla7j3297z1nhg4k",
+  "fetcher": "github",
+  "repo": "mswift42/hamburg-theme",
+  "unstable": {
+   "version": [
+    20160123,
+    740
+   ],
+   "commit": "aacefdf1501d97a5afc0e63c8ead4b2463323028",
+   "sha256": "1rnkzl51h263nck1bd0jyb7q58b54d764gcsh7wqxfgzs1jfr4am"
+  }
+ },
+ {
+  "ename": "hamburger-menu",
+  "commit": "e8017730403cc0e613e3939017f85074753c3778",
+  "sha256": "0ws9729i51arjqwpiywcpb7y3c5sm3c9wrq8q0k0m9hpq8h11wdb",
+  "fetcher": "gitlab",
+  "repo": "iain/hamburger-menu-mode",
+  "unstable": {
+   "version": [
+    20160825,
+    2031
+   ],
+   "commit": "3568159c693c30bed7f61580e4f3b6241253ad4e",
+   "sha256": "1nykpp8afa0c0wiax1qn8wf5hfjaixk5kn4yhcw40z00pb8i2z5f"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    5
+   ],
+   "commit": "fd37f013c2f2619a88d3ed5311a9d1308cc82614",
+   "sha256": "196ydb57h4mjagjaiflvb20my561i6mdc6v6694ibdik2yns2inm"
+  }
+ },
+ {
+  "ename": "haml-mode",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "0ih0m7zr6kgn6zd45zbp1jgs1ydc5i5gmq6l080wma83v5w1436f",
+  "fetcher": "github",
+  "repo": "nex3/haml-mode",
+  "unstable": {
+   "version": [
+    20190219,
+    2102
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "bf5b6c11b1206759d2b28af48765e04882dd1fc4",
+   "sha256": "1zh19b9az4ql87vjmjm0j7y6c4ir6w3rh0n4sxzqqpnv8xpd4b44"
+  },
+  "stable": {
+   "version": [
+    3,
+    1,
+    9
+   ],
+   "deps": [
+    "ruby-mode"
+   ],
+   "commit": "5e0baf7b795b9e41ac03b55f8feff6b51027c43b",
+   "sha256": "0fmr7ji8x5ki9fzybpbg3xbhzws6n7ffk7d0zf9jl1x3jd8d6988"
+  }
+ },
+ {
+  "ename": "hamlet-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "16cyfzv2yrf249jklxdahfmsy8rg6hargjpafy4fz4a532fcbw81",
+  "fetcher": "github",
+  "repo": "lightquake/hamlet-mode",
+  "unstable": {
+   "version": [
+    20131208,
+    724
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "s"
+   ],
+   "commit": "7362b955e556a3d007fa06945a27e5b99349527d",
+   "sha256": "1njrpb1s2v9skyfbgb28clrxyvyp8i4b8kwa68ynvq3vjb4fnws6"
+  }
+ },
+ {
+  "ename": "handle",
+  "commit": "da5debb55f7b34dcbcea81675bddd872bdb7fd69",
+  "sha256": "032rfk3hiv0ps0p332gkf67vqs5nif8hhraiv3zlybxblzhcxaw1",
+  "fetcher": "gitlab",
+  "repo": "jjzmajic/handle",
+  "unstable": {
+   "version": [
+    20191029,
+    856
+   ],
+   "deps": [
+    "parent-mode"
+   ],
+   "commit": "e27b2d0b229923f81a2c8afa3e9c65ae9e84a0da",
+   "sha256": "1w77p85ww1fjqgybi75s9bayqxyfvy040nr0gvsv3lmkri2mhglm"
+  }
+ },
+ {
+  "ename": "handlebars-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0wizasjihnabnqzn1226vh4gb571rs7s86bffhvkfvbk95zkiafq",
+  "fetcher": "github",
+  "repo": "danielevans/handlebars-mode",
+  "unstable": {
+   "version": [
+    20150211,
+    1749
+   ],
+   "commit": "81f6b73fea8f397807781a1b51568397af21a6ef",
+   "sha256": "0w443knp6kvjm2m79cni5d17plyhbsl0a4kip7yrpv5nmg370q3p"
+  }
+ },
+ {
+  "ename": "handlebars-sgml-mode",
+  "commit": "87aec68ed80545a61ad46b71e7bd9dbfc7634108",
+  "sha256": "10sxm7v94yxa92mqbwj3shqjs6f3zbxjvwgbvg9m2fh3b7xj617w",
+  "fetcher": "github",
+  "repo": "jacott/handlebars-sgml-mode",
+  "unstable": {
+   "version": [
+    20130623,
+    2333
+   ],
+   "commit": "c76df93a9a8c1b1b3efdcc4add32bf93304192a4",
+   "sha256": "1z37di9vk1l35my8kl8jnyqlkr1rnp0iz13hpc0r065mib67v58k"
+  }
+ },
+ {
+  "ename": "handoff",
+  "commit": "bbdb89413b3f5de680e3f9fa625039c73a377e97",
+  "sha256": "0iqqvygx50wi2vcbs6bfgqzhcz9a89zrwb7sg0ang9qrkiz5k36w",
+  "fetcher": "github",
+  "repo": "rejeep/handoff.el",
+  "unstable": {
+   "version": [
+    20150917,
+    600
+   ],
+   "commit": "75dc7a7e352f38679f65d0ca80ad158798e168bd",
+   "sha256": "0whn8rc98dhncgizzrb22nx6b6cm655q1cf2fpn6g3knq1c2471r"
+  }
+ },
+ {
+  "ename": "hardcore-mode",
+  "commit": "b929b3343cd5925944665e4e09b4524bca873c95",
+  "sha256": "1bgi1acpw4z7i03d0i8mrd2hpjn6hyvkdsk0ks9q380yp9mqmiwd",
+  "fetcher": "github",
+  "repo": "magnars/hardcore-mode.el",
+  "unstable": {
+   "version": [
+    20151114,
+    701
+   ],
+   "commit": "b1dda19692b4a7a58a689e81784a9b35be39e70d",
+   "sha256": "124k803pgxc7fz325yy6jcyam69f5fk9kdwfgmnwwca9ablq4cfb"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "5ab75594a7a0ca236e2ac87882ee439ff6155d96",
+   "sha256": "08l6p9n2ggg4filad1k663qc2gjgfbia4knnnif4sw7h92yb31jl"
+  }
+ },
+ {
+  "ename": "hardhat",
+  "commit": "081aa3e1d50c2c9e5a9b9ce0716258a93279f605",
+  "sha256": "16pdbpm647ag9cadmdm75nwwyzrqsd9y1b4zgkl3pg669mi5vl5z",
+  "fetcher": "github",
+  "repo": "rolandwalker/hardhat",
+  "unstable": {
+   "version": [
+    20160414,
+    1413
+   ],
+   "deps": [
+    "ignoramus"
+   ],
+   "commit": "9038a49ab55cd4c502cf7f07ed0d1b9b6bc3626e",
+   "sha256": "0j9z46j777y3ljpai5czdlwl07f0irp4fsk4677n11ndyqm1amb5"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    6
+   ],
+   "deps": [
+    "ignoramus"
+   ],
+   "commit": "9038a49ab55cd4c502cf7f07ed0d1b9b6bc3626e",
+   "sha256": "0j9z46j777y3ljpai5czdlwl07f0irp4fsk4677n11ndyqm1amb5"
+  }
+ },
+ {
+  "ename": "harvest",
+  "commit": "c97d3f653057eab35c612109792884334be556fe",
+  "sha256": "1r6brld6iq03wsr1b3jhdkxwrcxa6g6fwa1jiy1kgjsr9dq1m51c",
+  "fetcher": "github",
+  "repo": "kostajh/harvest.el",
+  "unstable": {
+   "version": [
+    20170822,
+    1746
+   ],
+   "deps": [
+    "hydra",
+    "s",
+    "swiper"
+   ],
+   "commit": "7acbc0564b250521b67131ee2a0a92720239454f",
+   "sha256": "0wzv67kkfyaw19ddw0ra45p6rja6bk6d1xi3ak5lkyzvgqvylr3b"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    8
+   ],
+   "deps": [
+    "hydra",
+    "s",
+    "swiper"
+   ],
+   "commit": "69041907bdca68d3ab6802e08ec698c3448f28a1",
+   "sha256": "0rqxi668wra1mfzq4fqscjghis5gqnwpazgidgix13brybaxydx4"
+  }
+ },
+ {
+  "ename": "haskell-emacs",
+  "commit": "5daff329a96a6d10bca11d838bbc95d1c8bcfbd9",
+  "sha256": "1wkh7qws35c32hha0p9rpjz5pls2844920nh919lvp2wmq9l6jd6",
+  "fetcher": "github",
+  "repo": "knupfer/haskell-emacs",
+  "unstable": {
+   "version": [
+    20160904,
+    2026
+   ],
+   "commit": "a2c6a079175904689eed7c6c200754bfa85d1ed9",
+   "sha256": "1xpaqcj33vyzs5yv2w4dahw8a2vb6zcb3z7y2aqc5jdg3fx9ypam"
+  },
+  "stable": {
+   "version": [
+    4,
+    0,
+    3
+   ],
+   "commit": "a2c6a079175904689eed7c6c200754bfa85d1ed9",
+   "sha256": "1xpaqcj33vyzs5yv2w4dahw8a2vb6zcb3z7y2aqc5jdg3fx9ypam"
+  }
+ },
+ {
+  "ename": "haskell-emacs-base",
+  "commit": "5daff329a96a6d10bca11d838bbc95d1c8bcfbd9",
+  "sha256": "1fwkds6qyhbxxdgxfzmgd7dlcxr08ynrrg5jdp9r7f924pd536vb",
+  "fetcher": "github",
+  "repo": "knupfer/haskell-emacs",
+  "unstable": {
+   "version": [
+    20150714,
+    1559
+   ],
+   "deps": [
+    "haskell-emacs"
+   ],
+   "commit": "a2c6a079175904689eed7c6c200754bfa85d1ed9",
+   "sha256": "1xpaqcj33vyzs5yv2w4dahw8a2vb6zcb3z7y2aqc5jdg3fx9ypam"
+  },
+  "stable": {
+   "version": [
+    4,
+    0,
+    3
+   ],
+   "deps": [
+    "haskell-emacs"
+   ],
+   "commit": "a2c6a079175904689eed7c6c200754bfa85d1ed9",
+   "sha256": "1xpaqcj33vyzs5yv2w4dahw8a2vb6zcb3z7y2aqc5jdg3fx9ypam"
+  }
+ },
+ {
+  "ename": "haskell-emacs-text",
+  "commit": "5daff329a96a6d10bca11d838bbc95d1c8bcfbd9",
+  "sha256": "1j18fhhra6lv32xrq8jc6l8i56fgn68da81wymcimpmpbp0hl5fy",
+  "fetcher": "github",
+  "repo": "knupfer/haskell-emacs",
+  "unstable": {
+   "version": [
+    20150713,
+    1416
+   ],
+   "deps": [
+    "haskell-emacs"
+   ],
+   "commit": "a2c6a079175904689eed7c6c200754bfa85d1ed9",
+   "sha256": "1xpaqcj33vyzs5yv2w4dahw8a2vb6zcb3z7y2aqc5jdg3fx9ypam"
+  },
+  "stable": {
+   "version": [
+    4,
+    0,
+    3
+   ],
+   "deps": [
+    "haskell-emacs"
+   ],
+   "commit": "a2c6a079175904689eed7c6c200754bfa85d1ed9",
+   "sha256": "1xpaqcj33vyzs5yv2w4dahw8a2vb6zcb3z7y2aqc5jdg3fx9ypam"
+  }
+ },
+ {
+  "ename": "haskell-mode",
+  "commit": "7f18b4dcbad4192b0153a316cff6533272898f1a",
+  "sha256": "0wijvcpfdbl17iwzy47vf8brkj2djarfr8y28rw0wqvbs381zzwp",
+  "fetcher": "github",
+  "repo": "haskell/haskell-mode",
+  "unstable": {
+   "version": [
+    20200408,
+    247
+   ],
+   "commit": "bbdbc0e9231f49a45ce787ebfb3f2b019615bf61",
+   "sha256": "0qln2zc4zx8w4ffplp6b17sksg578x61hyvwv1l79pc8bmpgn0ww"
+  },
+  "stable": {
+   "version": [
+    17,
+    1
+   ],
+   "commit": "17357211a16394884a981fe0c062f94250b40300",
+   "sha256": "0izcasi2v02zh08c863h43m8mmsldzy8pck43cllrfn0zf24v2qn"
+  }
+ },
+ {
+  "ename": "haskell-snippets",
+  "commit": "b5534e58ea66fd90ba4a69262f0b303c7fb85af4",
+  "sha256": "10bvv7q694fahcpm83v8lpqihg1gvfzrp1hdzwiffxydfvdbalh2",
+  "fetcher": "github",
+  "repo": "haskell/haskell-snippets",
+  "unstable": {
+   "version": [
+    20160919,
+    22
+   ],
+   "deps": [
+    "cl-lib",
+    "yasnippet"
+   ],
+   "commit": "07b0f460b946fd1be26c29652cb0468b47782f3a",
+   "sha256": "0a7y3awi9hcyahggf0ghsdwvsmrhr9yq634wy9lkqjzrm2hqj0ci"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "bcf12cf33a67ddc2f023a55072859e637fe4fa25",
+   "sha256": "0b3d7rvqvvcsp51aqfhl0zg9zg8j0p6vlfvga6jp9xc7626vh6f6"
+  }
+ },
+ {
+  "ename": "haskell-tab-indent",
+  "commit": "371f9f45e441cdf4e95557d1e9692619fab3024a",
+  "sha256": "0vdfmy56w5yi202nbd28v1bzj97v1wxnfnb5z3dh9687p2abgnr7",
+  "fetcher": "git",
+  "url": "https://git.spwhitton.name/haskell-tab-indent",
+  "unstable": {
+   "version": [
+    20200513,
+    1950
+   ],
+   "commit": "0482f0de774c58bd7f2e079f5bf01781eed709a3",
+   "sha256": "05hgxrmsrmg5i50zxs7pa2xnfn2sja09hdk8xjsalnbbjvn4mmxx"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "1127f46eca40a48be9cd2380df2cfc5f0b694e63",
+   "sha256": "13c2z1i7icpwv60njn83qbla9i0qlq3m0yz88ach1mlvmsdfj9jz"
+  }
+ },
+ {
+  "ename": "hasklig-mode",
+  "commit": "15a60278102de9e078b613456126945737718ce9",
+  "sha256": "0gz0k9ahk0jpdp893ckbby9ilkac1zp95kpfqdnpfy0a036xfwm7",
+  "fetcher": "github",
+  "repo": "minad/hasklig-mode",
+  "unstable": {
+   "version": [
+    20181110,
+    1859
+   ],
+   "commit": "386c098c93a744f6b30ad937d193eebf0fd79e1b",
+   "sha256": "0m1cn59fzsfqc6j1892yaaddh6g6mwiqnp1ssxhic5fcm2xk00rz"
+  }
+ },
+ {
+  "ename": "hasky-extensions",
+  "commit": "e3f73e3df8476fa231d04211866671dd74911603",
+  "sha256": "0ymigba1d0qkrk3ccd3cx754safzmx1v5d13976571rszgmkvr15",
+  "fetcher": "github",
+  "repo": "hasky-mode/hasky-extensions",
+  "unstable": {
+   "version": [
+    20190204,
+    2016
+   ],
+   "deps": [
+    "avy-menu"
+   ],
+   "commit": "4a0d1d9beb3be8ff4a1857eb920c916734dcc8e1",
+   "sha256": "1sp07lqvxxcl625qr9ka7idvci3j0p77ll90pwzykr5cs7r3lzl2"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "avy-menu"
+   ],
+   "commit": "65bf7bc3967cbda23789d6c505daf73eed9a43aa",
+   "sha256": "0r91hcm265xa8amdfi44pn0cqf4m9zigzqx1ldgg8qd6l9r2hbh7"
+  }
+ },
+ {
+  "ename": "hasky-stack",
+  "commit": "c3faf544872478c3bccf2fe7dc51d406031e4d80",
+  "sha256": "08ds0v5p829s47lbhibswnbn1aqfnwf6xx7p5bc5062wxdvqahw8",
+  "fetcher": "github",
+  "repo": "hasky-mode/hasky-stack",
+  "unstable": {
+   "version": [
+    20190304,
+    2248
+   ],
+   "deps": [
+    "f",
+    "magit-popup"
+   ],
+   "commit": "9ef133ed831a95a2b9990a46a3c57f1918d0274f",
+   "sha256": "08h795hplyy7d0yqxvdfx3ylb7gkjplyriyq0w9dsv6ggvmc5hhl"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    0
+   ],
+   "deps": [
+    "f",
+    "magit-popup"
+   ],
+   "commit": "a3176aece9a9ab0a36ae795965f83f4c1fa243bf",
+   "sha256": "1j9cvy95wnmssg68y7hcjr0fh117ix1ypa0k7rxqn84na7hyhdpl"
+  }
+ },
+ {
+  "ename": "haste",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "175kprxqbpmssjxavcm7lyzg1cwsxkrfg9pc72vgqyfmcmjyk34c",
+  "fetcher": "github",
+  "repo": "rlister/emacs-haste-client",
+  "unstable": {
+   "version": [
+    20141030,
+    2034
+   ],
+   "deps": [
+    "json"
+   ],
+   "commit": "22d05aacc3296ab50a7361222ab139fb4d447c25",
+   "sha256": "1gmh455ahd9if11f8mrqbfky24c784bb4fgdl3pj8i0n5sl51i88"
+  }
+ },
+ {
+  "ename": "haxe-imports",
+  "commit": "db7d2b08e914aab7719c6d3a951b142ec7252f34",
+  "sha256": "10xh57ir49f18pzw9ihpwffchm1mba0ck1zdqsfllh3p5gry1msg",
+  "fetcher": "github",
+  "repo": "accidentalrebel/emacs-haxe-imports",
+  "unstable": {
+   "version": [
+    20170330,
+    2304
+   ],
+   "deps": [
+    "pcache",
+    "s"
+   ],
+   "commit": "f104a641f3dfe698359d9aca1f28d9383cf43e04",
+   "sha256": "09crkm4ibi4m23qw4saqm0nm2i4cv40md3p768j2vniamby2q78f"
+  }
+ },
+ {
+  "ename": "haxe-mode",
+  "commit": "31ab3513c2d048ee6d8277916e29987f981b81ca",
+  "sha256": "1h5v0vza8pyqf76hmzwgavh2zzrzwfjl4xdcc469bb6c59gzvhmr",
+  "fetcher": "github",
+  "repo": "emacsorphanage/haxe-mode",
+  "unstable": {
+   "version": [
+    20200204,
+    1015
+   ],
+   "commit": "9449b2b8bc733faa130d3ab68b97ac1ae1db3bff",
+   "sha256": "1xpjwzd8vd41hs3i3yy4l1w0q0pk8s12bgky5q524n03pdq4n756"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    2
+   ],
+   "commit": "ed99906a808ff4a00bf6b0e231c30c240a563954",
+   "sha256": "1lnx8qrqix2n3bvw8blqc7msghfy1w1dzyga9s8c9z5pawqrbm85"
+  }
+ },
+ {
+  "ename": "haxor-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0ss0kkwjyc7z7vcb89qr02p70c6m2jarr34mxmdv6ipwil58jj1s",
+  "fetcher": "github",
+  "repo": "krzysztof-magosa/haxor-mode",
+  "unstable": {
+   "version": [
+    20160618,
+    1129
+   ],
+   "commit": "6fa25a8e6b6a59481bc0354c2fe1e0ed53cbdc91",
+   "sha256": "0pdfvqbz4wmjl15wi3k4h7myij8v63vmyiq8g9fai18f7ad2klp1"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    0
+   ],
+   "commit": "6fa25a8e6b6a59481bc0354c2fe1e0ed53cbdc91",
+   "sha256": "0pdfvqbz4wmjl15wi3k4h7myij8v63vmyiq8g9fai18f7ad2klp1"
+  }
+ },
+ {
+  "ename": "hayoo",
+  "commit": "01c1b96a4d076323264b2762d2c5a61680e21cff",
+  "sha256": "1rqvnv5nxlsyvsa5my1wpfm82sw21s7kfbg80vrjmxh0mwlyv4p9",
+  "fetcher": "github",
+  "repo": "benma/hayoo.el",
+  "unstable": {
+   "version": [
+    20140831,
+    1221
+   ],
+   "deps": [
+    "json"
+   ],
+   "commit": "3ca2fb0c4d5f337d0410c21b2702dd147014e984",
+   "sha256": "0pjxyhh8a02i54a9jsqr8p1mcqfl6k9b8gv9lnzb242gy4518y3l"
+  }
+ },
+ {
+  "ename": "hc-zenburn-theme",
+  "commit": "01ccd40bd5fc2699a4756ebf503ac50f562cf600",
+  "sha256": "0jcddk9ppgcizyyciabj3sgk1pmingl97knf9nmr0mi89h7n2g5y",
+  "fetcher": "github",
+  "repo": "edran/hc-zenburn-emacs",
+  "unstable": {
+   "version": [
+    20150928,
+    1633
+   ],
+   "commit": "fd0024a5191cdce204d91c8f1db99ba31640f6e9",
+   "sha256": "0rgcj47h7a67qkw6696pcm1a4g4ryx8nrz55s69fw86958fp08hk"
+  }
+ },
+ {
+  "ename": "hcl-mode",
+  "commit": "979fe43b4f9325a4fccad6998763af2b44431b30",
+  "sha256": "0kvyvjv19fag60vv9qv0j91jmj8nilamcwqd1mj70qcj35pwlp60",
+  "fetcher": "github",
+  "repo": "purcell/emacs-hcl-mode",
+  "unstable": {
+   "version": [
+    20200315,
+    2129
+   ],
+   "commit": "c3d1158ad1a64f06aa8986ab1cdea6b7fbdd4bf7",
+   "sha256": "0qza5pgpzcabik3592dk25glsv9zcg84pn1jzm43f9b1j9w5iv4i"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "6a6daf37522188a2f2fcdebc60949fc3bdabbc06",
+   "sha256": "0jqrgq15jz6pvx38pnwkizzfiih0d3nxqphyrc92nqpcyimg8b6g"
+  }
+ },
+ {
+  "ename": "headlong",
+  "commit": "826e9a8221d9378dd3b9fcc16ce5f50fd6ed2dce",
+  "sha256": "042ybplkqjb30qf5cpbw5d91j1rdc71b789v277h036bri7hgxz6",
+  "fetcher": "github",
+  "repo": "abo-abo/headlong",
+  "unstable": {
+   "version": [
+    20150417,
+    1526
+   ],
+   "commit": "f6830f87f236eee88263cb6976125f72422abe72",
+   "sha256": "06hq6p6a4fzprbj4r885vsvzddlvx0wxqk5kik06v5bm7hjmnyrq"
+  }
+ },
+ {
+  "ename": "heaven-and-hell",
+  "commit": "685edd63bf65520be304cbd564db7f5974fc5ae1",
+  "sha256": "19r0p78r9c78ly8awkgc33xa5b75zkkrb5kwvxbagirxdgkjv74r",
+  "fetcher": "github",
+  "repo": "valignatev/heaven-and-hell",
+  "unstable": {
+   "version": [
+    20190713,
+    1830
+   ],
+   "commit": "e1febfd60d060c110a1e43c5f093cd8537251308",
+   "sha256": "1bgs638nsn9hyvc9wbc2jpqm5i3hblld1mhmf0h9z0j6fjr0aapx"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    5
+   ],
+   "commit": "e1febfd60d060c110a1e43c5f093cd8537251308",
+   "sha256": "1bgs638nsn9hyvc9wbc2jpqm5i3hblld1mhmf0h9z0j6fjr0aapx"
+  }
+ },
+ {
+  "ename": "helm",
+  "commit": "7e8bccffdf69479892d76b9336a4bec3f35e919d",
+  "sha256": "03la01d0syikjgsjq0krlp3p894djwfxqfmd2srddwks7ish6xjf",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm",
+  "unstable": {
+   "version": [
+    20200515,
+    715
+   ],
+   "deps": [
+    "async",
+    "helm-core",
+    "popup"
+   ],
+   "commit": "202bcb533e2feb25d63c64553afccefd9cfab262",
+   "sha256": "0vn6420qjs04cwiq1bry0cj14i53w3zkyib4y6wyrnd709dfyzgp"
+  },
+  "stable": {
+   "version": [
+    3,
+    6,
+    1
+   ],
+   "deps": [
+    "async",
+    "helm-core",
+    "popup"
+   ],
+   "commit": "55281e1390bae54310dc880ae3805e0595d5c1bd",
+   "sha256": "1sghq7xjd4a9ysh3cywd5rss9y47rwk82y86cwh1g7p0jv89gqaf"
+  }
+ },
+ {
+  "ename": "helm-R",
+  "commit": "ce6eb840368f8cbee66dc061478d5096b9dacb68",
+  "sha256": "0zq9f2xhgap3ihnrlsrsaxaz0nx014k0820bfsq7lckwcnm0mng1",
+  "fetcher": "github",
+  "repo": "myuhe/helm-R.el",
+  "unstable": {
+   "version": [
+    20120820,
+    14
+   ],
+   "deps": [
+    "ess",
+    "helm"
+   ],
+   "commit": "b0eb9d5f6a483a9dbe6eb6cf1f2024d4f5938bc2",
+   "sha256": "0nip0zrmn944wy0x2dc5ryr0m7a948rn2a8cbaajghs7a7zai4cr"
+  }
+ },
+ {
+  "ename": "helm-ack",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "124w7grwindyv86xfshfm70h0xfq29ns067pchk8dcbjbgh9yl7b",
+  "fetcher": "github",
+  "repo": "emacsorphanage/helm-ack",
+  "unstable": {
+   "version": [
+    20141030,
+    1226
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "889bc225318d14c6e3be80e73b1d9d6fb30e48c3",
+   "sha256": "04rvbafa77blps7x7cmlsciys8fgmvhfhq4v51pk8z5q3j1lrgc5"
+  },
+  "stable": {
+   "version": [
+    0,
+    13
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "5982f3cb6ec9f460ebbe06ec0ce7b3590bca3118",
+   "sha256": "0ps86zpyywibjwcm9drmamla979ad61fyqr8d6bv71fr56k9ak21"
+  }
+ },
+ {
+  "ename": "helm-ad",
+  "commit": "b44ec4e059ab830a3708697fa95fada5f6a30a91",
+  "sha256": "0h2zjfj9hy7bkpmmjjs0a4a06asbw0yww8mw9rk2xi1gc2aqq4hi",
+  "fetcher": "github",
+  "repo": "tnoda/helm-ad",
+  "unstable": {
+   "version": [
+    20151209,
+    1015
+   ],
+   "deps": [
+    "dash",
+    "helm"
+   ],
+   "commit": "8ac044705d8620ee354a9cfa8cc1b865e83c0d55",
+   "sha256": "0hxfgdn56c7qr64r59g9hvxxwa4mw0ad9c9m0z5cj85bsdd7rlx4"
+  }
+ },
+ {
+  "ename": "helm-addressbook",
+  "commit": "4bb805b0f2d2055aa4e88bd41239d75ec34f5785",
+  "sha256": "1d8byi6sr5gz1rx3kglnkp47sn9dqdd83s12d84wyay06ix3cqqi",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-addressbook",
+  "unstable": {
+   "version": [
+    20170903,
+    728
+   ],
+   "deps": [
+    "addressbook-bookmark",
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "62497f72d46afd3a9f9f94b27d062a82fb232de4",
+   "sha256": "1lmq7j19qv3pabs5arapx3lv2xhf0sgn4b2hl0l0kzph52fvics7"
+  }
+ },
+ {
+  "ename": "helm-ag",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "0jzfycbaz88r6scsiw74prcnbvilsaphljdys6i5k9g5rhn5sxh5",
+  "fetcher": "github",
+  "repo": "emacsorphanage/helm-ag",
+  "unstable": {
+   "version": [
+    20200516,
+    613
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "ae1dbefa151544035272d04e56e0147185a847c5",
+   "sha256": "03q29x63v500b3h4mj99h619ayifb12rrqiyyihm84i9lmgp5r28"
+  },
+  "stable": {
+   "version": [
+    0,
+    59
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "79373d7f1616d175a5e0730e1e0c3855f04bd945",
+   "sha256": "0vsz2b5qw4qahlf74059z4p1grinhfz28f0psw4c3qf4jasv3b9j"
+  }
+ },
+ {
+  "ename": "helm-ag-r",
+  "commit": "6aa1cf029db913dafb561e4c8ccc1ca9099524de",
+  "sha256": "0ivh7f021lbmbaj6gs4y8m99s63js57w04q7cwx7v4i32cpas7r9",
+  "fetcher": "github",
+  "repo": "yuutayamada/helm-ag-r",
+  "unstable": {
+   "version": [
+    20131123,
+    1531
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "67de4ebafe9b088db950eefa5ef590a6d78b4ac8",
+   "sha256": "1rifdkhzvf7xd2npban0i8v3rjcji69063dw9rs1d32w4n7fzlfa"
+  }
+ },
+ {
+  "ename": "helm-aws",
+  "commit": "421182006b8af17dae8b5ad453cc11e2d990a053",
+  "sha256": "0sjgdjpznjxsf6nlv2ah45fw17j8j5apdphd1fp43rjv1lskkgc5",
+  "fetcher": "github",
+  "repo": "istib/helm-aws",
+  "unstable": {
+   "version": [
+    20180514,
+    1032
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "s"
+   ],
+   "commit": "b36c744b3f00f458635a91d1f5158fccbb5baef6",
+   "sha256": "11683s12dabgi9j6cyx0i147pgz4jdd240xviry7w3cxgarqki8y"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "172a4a3427d31c999e27e9ee06aa8e3822364a8c",
+   "sha256": "015p5sszd54x81qm96gx6xwjkvbi4f3j9i2nhcvlkk75s95w1ijv"
+  }
+ },
+ {
+  "ename": "helm-backup",
+  "commit": "5e6eba7b201e91211e43c39e501f6066f0afeb8b",
+  "sha256": "182jbm36yzayxi9y3vhpyn25ivrgay37sncqvah35vbw52lnjcn3",
+  "fetcher": "github",
+  "repo": "antham/helm-backup",
+  "unstable": {
+   "version": [
+    20180911,
+    614
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "s"
+   ],
+   "commit": "691fe542f38fc7c8cca409997f6a0ff5d76ad6c2",
+   "sha256": "0zi1md5f1haqcrclqfk4ilvr6hbm389kl3ajnyx230rq22vmb9ca"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "s"
+   ],
+   "commit": "45a86a41ac44f90d4db2c0e9339233ee7f0be0b8",
+   "sha256": "0pr4qd6mi9g91lndqnk4w26lq3w8pxcgxragxj3209dgwqsxps95"
+  }
+ },
+ {
+  "ename": "helm-bbdb",
+  "commit": "7025c319fcabc64576c0c6554d0d572cef697693",
+  "sha256": "1wlacbfs23shvyaq616r1p84h8321zz1k5nzir5qg8nr6lssi8vp",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-bbdb",
+  "unstable": {
+   "version": [
+    20190728,
+    1325
+   ],
+   "deps": [
+    "bbdb",
+    "helm"
+   ],
+   "commit": "db69114ff1af8bf48b5a222242e3a8dd6e101e67",
+   "sha256": "1yfz5s83589jazyfzyrzh84iv0db2akbwj796gadpb3yhn17pl4v"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "bbdb",
+    "helm"
+   ],
+   "commit": "20513422102fea4c08a0433d728a7783bb4968c8",
+   "sha256": "0ns537fimv774n1bq0r8k4qwdpapbw96linqyhx9mxp23zkhlg80"
+  }
+ },
+ {
+  "ename": "helm-bibtex",
+  "commit": "873ae2af16e03c8e10494be3f0e7840eb27172a3",
+  "sha256": "0ciz4lczfv9b4n12jd9r5w81yj884pmi53xmm9cqzvrv3hh9n8hs",
+  "fetcher": "github",
+  "repo": "tmalsburg/helm-bibtex",
+  "unstable": {
+   "version": [
+    20200429,
+    1606
+   ],
+   "deps": [
+    "bibtex-completion",
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "8a0dd9841316793aacddea744d6b8ca4a7857a35",
+   "sha256": "1av058d7888kr3q15y1122r8jkarfw1s83gvkillj7kyzj3i53m5"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "deps": [
+    "biblio",
+    "cl-lib",
+    "dash",
+    "f",
+    "helm",
+    "parsebib",
+    "s"
+   ],
+   "commit": "d6a98ac6f28d2a6a05e203115211c98333d40aca",
+   "sha256": "0arhy051945lxjqg77b275ny9nsv60cqj0qfpmvd8xkc07lqfn23"
+  }
+ },
+ {
+  "ename": "helm-bibtexkey",
+  "commit": "d35a2e5cb5232d16d5c98168706d8b6426fcfb44",
+  "sha256": "00i7ni4r73mmxavhfcm0fd7jhx6gxvxx7prax1yxmhs46fpz8jwj",
+  "fetcher": "github",
+  "repo": "kenbeese/helm-bibtexkey",
+  "unstable": {
+   "version": [
+    20140214,
+    1504
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "aa1637ea5c8c5f1817e480fc2a3750cafab3d99f",
+   "sha256": "10k7hjfz9jmfpbmsv20jy9vr6fqxx1yp8v115hprqvw057iifsl9"
+  }
+ },
+ {
+  "ename": "helm-bind-key",
+  "commit": "9ae8bfd320cdef6c65da2a00439f8108d7ffa7ce",
+  "sha256": "1yfj6mmxc165in1i85ccanssch6bg19ib1fcm7sa4i4hv0mgwaid",
+  "fetcher": "github",
+  "repo": "myuhe/helm-bind-key.el",
+  "unstable": {
+   "version": [
+    20141109,
+    515
+   ],
+   "deps": [
+    "bind-key",
+    "helm"
+   ],
+   "commit": "9da6ad8b7530e72fb4ac67be8c6a482898dddc25",
+   "sha256": "1wmcy7q4ys2sf8ya5l4n7a6bq5m9d6m19amjfwkmkh4ajkwl041y"
+  }
+ },
+ {
+  "ename": "helm-bitbucket",
+  "commit": "8df73e21dee5144147f9432efe95ee576ac5f435",
+  "sha256": "19bflbnavkwipf7mcrkg3i64iz50jmzm64nl7y1ka349mpy5sm04",
+  "fetcher": "github",
+  "repo": "dragonwasrobot/helm-bitbucket",
+  "unstable": {
+   "version": [
+    20190422,
+    1102
+   ],
+   "deps": [
+    "helm-core"
+   ],
+   "commit": "c722016622ad019202419cca60c3be3c53e56130",
+   "sha256": "08i8d6b41n4sq3jb4gvxkiml73am82jzqkqvvdm9mdhibb8x08mx"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    3
+   ],
+   "deps": [
+    "helm-core"
+   ],
+   "commit": "632495036c4a6ac30e408fc74ee9f209fd5ac429",
+   "sha256": "0rbgk982jlbqh1rhns3zmndfr3lpw7m2j9z7qylghkll4k8fcjpl"
+  }
+ },
+ {
+  "ename": "helm-bm",
+  "commit": "115033d7b02d3ca42902195de933f62c5f927ae4",
+  "sha256": "1dnlcvn0zv4qv4ii4j0h9r8w6vhi3l0c5aa768kblh5r2rf4bjjh",
+  "fetcher": "github",
+  "repo": "yasuyk/helm-bm",
+  "unstable": {
+   "version": [
+    20160321,
+    1331
+   ],
+   "deps": [
+    "bm",
+    "cl-lib",
+    "helm",
+    "s"
+   ],
+   "commit": "d66341f5646c23178d4d8bffb6cfebe3fb73f1d7",
+   "sha256": "011k37p4vnzm1x8vyairllanvjfknskl20bdfv0glf64xgbdpfil"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "bm",
+    "cl-lib",
+    "helm",
+    "s"
+   ],
+   "commit": "d66341f5646c23178d4d8bffb6cfebe3fb73f1d7",
+   "sha256": "011k37p4vnzm1x8vyairllanvjfknskl20bdfv0glf64xgbdpfil"
+  }
+ },
+ {
+  "ename": "helm-books",
+  "commit": "acba3db40f37e74e1bf9e30f2abed431c259ff50",
+  "sha256": "0xh53vji7nsnpi0b38cjh97x26ryxk61mj7bd6m63qwh8dyhs3yx",
+  "fetcher": "github",
+  "repo": "grugrut/helm-books",
+  "unstable": {
+   "version": [
+    20170325,
+    631
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "625aadec1541a5ca36951e4ce1301f4b6fe2bf3f",
+   "sha256": "1d3nps765gxmadhbd1yqn4qvs23bczglwhxkciprky7ixm5lx53k"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "b4c57d2aed596faad41a753dccbcd0a31a717b76",
+   "sha256": "1yr5prp9xvd73balxbn4yn52zah2advq1186ba5aanj436pal0fh"
+  }
+ },
+ {
+  "ename": "helm-bufler",
+  "commit": "4ba5657f237eea9073a46a4127be5795be07c687",
+  "sha256": "0wb1ds3acc36hl7798phbvhygfljjc6br11lf4y3043q8v0lz6gi",
+  "fetcher": "github",
+  "repo": "alphapapa/bufler.el",
+  "unstable": {
+   "version": [
+    20200409,
+    1253
+   ],
+   "deps": [
+    "bufler",
+    "helm"
+   ],
+   "commit": "b2b260e4f9e8ba76bb8b4d71344c7b75e05ac44f",
+   "sha256": "0ww7z2xz185i97wa1rnmqwlx2mvwx69hhlyi5m3sm0nkyckb2hjs"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "bufler",
+    "helm"
+   ],
+   "commit": "d6c79f04b7d288174d8294fb30488b567586364d",
+   "sha256": "0l35ssjry15wqcxnr8rf5lrv856pgnm0k2d4d6ag14ypjx9nfhw3"
+  }
+ },
+ {
+  "ename": "helm-bundle-show",
+  "commit": "2f10f7387cca102696c38af1d8dc0fe5da5e366f",
+  "sha256": "1af5g233kjf04m2fryizk51a1s2mcmj36zip5nyb8skcsfl4riq7",
+  "fetcher": "github",
+  "repo": "masutaka/emacs-helm-bundle-show",
+  "unstable": {
+   "version": [
+    20190526,
+    1401
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "70f1ca7d1847c7d5cd5a3e488562cd4a295b809f",
+   "sha256": "12wz98fcs8v8w74ck4jqbh47pp5956xxh9ld5kpym9zrm39adpq2"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    6
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "70f1ca7d1847c7d5cd5a3e488562cd4a295b809f",
+   "sha256": "12wz98fcs8v8w74ck4jqbh47pp5956xxh9ld5kpym9zrm39adpq2"
+  }
+ },
+ {
+  "ename": "helm-c-moccur",
+  "commit": "462a43341a5811822928bcac331d617a38b52e8a",
+  "sha256": "1i6a4jqjy9amlhdbj5d26wzagndfgszha09vs5qf4760vjl7kn4b",
+  "fetcher": "github",
+  "repo": "myuhe/helm-c-moccur.el",
+  "unstable": {
+   "version": [
+    20151230,
+    924
+   ],
+   "deps": [
+    "color-moccur",
+    "helm"
+   ],
+   "commit": "b0a906f85fa352db091f88b91a9c510de607dfe9",
+   "sha256": "0w4svbg32y63v049plvk7djc1m2amjzrr1v979d9s6jbnnpzlb5c"
+  }
+ },
+ {
+  "ename": "helm-c-yasnippet",
+  "commit": "2fc20598a2cd22efb212ba43159c6728f0249e5e",
+  "sha256": "0jwj4giv6lxb3h7vqqb2alkwq5kp0shy2nraik33956p4l8dfs90",
+  "fetcher": "github",
+  "repo": "emacs-jp/helm-c-yasnippet",
+  "unstable": {
+   "version": [
+    20170128,
+    1542
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "yasnippet"
+   ],
+   "commit": "65ca732b510bfc31636708aebcfe4d2d845b59b0",
+   "sha256": "1cbafjqlzxbg19xfdqsinsh7afq58gkf44rsg1qxfgm8g6zhr7f8"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    7
+   ],
+   "deps": [
+    "cl-lib",
+    "helm-core",
+    "yasnippet"
+   ],
+   "commit": "1fa400233ba8e990066c47cca1e2af64bd192d4d",
+   "sha256": "108584bmadgidqkdfvf333zkyb5v9f84pasz5h01fkh57ks8by9f"
+  }
+ },
+ {
+  "ename": "helm-catkin",
+  "commit": "c6e88d2a2fc07c8d25f4e1d973147805522a3261",
+  "sha256": "1yr62riiva55c341s9x0fn9wdrv1j05s9a82xm2925jsyh5xzaxy",
+  "fetcher": "github",
+  "repo": "gollth/helm-catkin",
+  "unstable": {
+   "version": [
+    20190425,
+    1520
+   ],
+   "deps": [
+    "helm",
+    "xterm-color"
+   ],
+   "commit": "d33c71cecd35616dfa7c3b81d8f51c128405977f",
+   "sha256": "0pggn78lxfq6gmvyxr9y1j5qbcnkfh5f8vavxjpnch6k9xq0591x"
+  }
+ },
+ {
+  "ename": "helm-charinfo",
+  "commit": "6667774bba495c45703ef75261f1f14d89684e3a",
+  "sha256": "04k6crcwhv2k69f5w75g0dg0f5qsbhyxl93qzxxdb5bnr56ad7f6",
+  "fetcher": "github",
+  "repo": "mandoku/helm-charinfo",
+  "unstable": {
+   "version": [
+    20170810,
+    1231
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "91798a49dc115342a7e01e48b264e9a0bf5ea414",
+   "sha256": "1ifj6zz5k7qjalg06fvfc7rdmlha0n9hll2hiq7mrcj7lfac6jga"
+  }
+ },
+ {
+  "ename": "helm-chrome",
+  "commit": "7f6ca33fe8ec8a0af8fb166451050f5502838deb",
+  "sha256": "0p3n2pna83mp4ym8x69lk4r3q4apbj5v2blg2mwcsd9zij153nxz",
+  "fetcher": "github",
+  "repo": "kawabata/helm-chrome",
+  "unstable": {
+   "version": [
+    20160719,
+    520
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "fd630ace4b4b4f33355a973743bbfe0c90ce4830",
+   "sha256": "0r8s85fs5lnwdn377z5zgi3d090k2n1mgiyxwgy49i8yirssgz51"
+  }
+ },
+ {
+  "ename": "helm-chrome-control",
+  "commit": "ef7ab4aa5a95d14ef9bbe22a53410eab5d64822f",
+  "sha256": "1544zlf95iwgizq0kq0kp70kaqfqiwci1hhl4vhah01jl3ifrdxa",
+  "fetcher": "github",
+  "repo": "xuchunyang/helm-chrome-control",
+  "unstable": {
+   "version": [
+    20190707,
+    1807
+   ],
+   "deps": [
+    "helm-core"
+   ],
+   "commit": "e6758763099959e961e218bb1122526323f7ee5e",
+   "sha256": "186m2zq978hzdixh4cbdjp6mfigdaiqhmx25895574vn3wv4xmj7"
+  }
+ },
+ {
+  "ename": "helm-chrome-history",
+  "commit": "2948c9e1c926fd061f1ee0e6a0f7e31ee788ac49",
+  "sha256": "1nf4bx1vf78bb7ig6wk68lhyp4acj6asxlh0846fgv01c0m8plh5",
+  "fetcher": "github",
+  "repo": "xuchunyang/helm-chrome-history",
+  "unstable": {
+   "version": [
+    20191031,
+    1233
+   ],
+   "deps": [
+    "helm-core"
+   ],
+   "commit": "f9002d4c12df65a99830376b126dbbeae3ef2148",
+   "sha256": "18vgy5kaj0cmrar7ahcxiy9jva006zd7yfcgyi5h99yv62g76j72"
+  }
+ },
+ {
+  "ename": "helm-chronos",
+  "commit": "b6f5eef6ac62ed8d035f4dd272695655d00a4180",
+  "sha256": "1a65b680741cx4cyyizyl2c3bss36x3j2m9sh9hjc87xrzarg0s3",
+  "fetcher": "github",
+  "repo": "dxknight/helm-chronos",
+  "unstable": {
+   "version": [
+    20150528,
+    2036
+   ],
+   "deps": [
+    "chronos",
+    "helm"
+   ],
+   "commit": "a14fc3d65dd96ce6616234b3f7b8b08b4c1817ef",
+   "sha256": "1dmj4f8pris1i7wvfplp4dbnyfm403l6rplxfrfi0cd9afg7m68i"
+  }
+ },
+ {
+  "ename": "helm-cider",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0ykhrvh6mix55sv4j8q6614sibksdlwaks736maamqwl3wk6826x",
+  "fetcher": "github",
+  "repo": "clojure-emacs/helm-cider",
+  "unstable": {
+   "version": [
+    20180307,
+    458
+   ],
+   "deps": [
+    "cider",
+    "helm-core"
+   ],
+   "commit": "9363cc537f06233345aa3af5cd46aa5681ad607b",
+   "sha256": "0vfn4smqba1vsshz48ggkj8gs94la0sxb1sq4shrb41qj2x3dci7"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "deps": [
+    "cider",
+    "helm-core"
+   ],
+   "commit": "9a948b834dd31b3f60d4701d6dd0ecfab0adbb72",
+   "sha256": "0wssd9jv6xighjhfh3p8if1anz3rcrjr71a4j063v6gyknb7fv27"
+  }
+ },
+ {
+  "ename": "helm-cider-history",
+  "commit": "31a9c900d57f2eeed4f0101af73f8a59c20e9a99",
+  "sha256": "12l8jyl743zqk8m2xzcz75y1ybdkbkvcbvfkn1k88k09s31kdq4h",
+  "fetcher": "github",
+  "repo": "Kungi/helm-cider-history",
+  "unstable": {
+   "version": [
+    20150719,
+    2120
+   ],
+   "deps": [
+    "cider",
+    "helm"
+   ],
+   "commit": "c391fcb2e162a02001605a0b9449783575a831fd",
+   "sha256": "18j4ikb3q8ygdq74zqzm83wgb39x7w209n3186mm051n8lfmkaif"
+  }
+ },
+ {
+  "ename": "helm-circe",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "07559rg55b0glxiw787xmvxrhms14jz21bvprc5n24b4j827g9xw",
+  "fetcher": "github",
+  "repo": "lesharris/helm-circe",
+  "unstable": {
+   "version": [
+    20160207,
+    652
+   ],
+   "deps": [
+    "circe",
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "9091651d9fdd8d49d8ff6f9dcf3a2ae416c9f15a",
+   "sha256": "1gwg299s8ps0q97iw6p515gwn73rjk1icgl3j7cj1s143njjg122"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "circe",
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "9091651d9fdd8d49d8ff6f9dcf3a2ae416c9f15a",
+   "sha256": "1gwg299s8ps0q97iw6p515gwn73rjk1icgl3j7cj1s143njjg122"
+  }
+ },
+ {
+  "ename": "helm-clojuredocs",
+  "commit": "adb117e04c158b1c77a8c1174329477d7eaca838",
+  "sha256": "0yz0wlyay9286by8i30gs3ispswq8ayqlcnna1s7bgspjvb7scmk",
+  "fetcher": "github",
+  "repo": "mbuczko/helm-clojuredocs",
+  "unstable": {
+   "version": [
+    20160405,
+    723
+   ],
+   "deps": [
+    "edn",
+    "helm"
+   ],
+   "commit": "5a7f0f2cb401be0b09e73262a1c18265ab9a3cea",
+   "sha256": "015b8zxh91ljhqvn6z43gy08di54xcw9skw0i7frj3d7gk984qhl"
+  }
+ },
+ {
+  "ename": "helm-cmd-t",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "1w870ldq029wgicgv4cqm31zw2i8vkap3m9hsr9d0i3gv2virnc6",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-cmd-t",
+  "unstable": {
+   "version": [
+    20170125,
+    1459
+   ],
+   "commit": "7fa3d4a9f7271512e54c5de999079b27c9eec6bf",
+   "sha256": "06jdvkgnmwrgsdh9y2bwzdng7hy4331v3lh11jvdy4704w4khmak"
+  }
+ },
+ {
+  "ename": "helm-codesearch",
+  "commit": "0a992824e46a4170e2f0915f7a507fcb8a9ef0a6",
+  "sha256": "1v21zwcyx73bc1lcfk60v8xim31bwdk4p06g9i4qag3cijdlli9q",
+  "fetcher": "github",
+  "repo": "youngker/helm-codesearch.el",
+  "unstable": {
+   "version": [
+    20190412,
+    1153
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "helm",
+    "s"
+   ],
+   "commit": "72f1d1de746115ab7e861178b49fa3c0b6b58d90",
+   "sha256": "1qxpx8jmkvg59k4rx99bn9asnh4nl5rwkjvbhprdlqaicglm153q"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "helm",
+    "s"
+   ],
+   "commit": "a6bac6b8a063b91b444a72318b163b266742db9b",
+   "sha256": "0xmplh7q5wvrkfha8qc9hx7sjyc8dsms0wrvj2y7zg35siw1561l"
+  }
+ },
+ {
+  "ename": "helm-commandlinefu",
+  "commit": "7eaf1e41ef2fa90b6bb6a80891ef1bf52ef1029b",
+  "sha256": "150nqib0sr4n35vdj1xrxcja8gkv3chzhdbgkjxqgkz2yq10xxnd",
+  "fetcher": "github",
+  "repo": "xuchunyang/helm-commandlinefu",
+  "unstable": {
+   "version": [
+    20150611,
+    545
+   ],
+   "deps": [
+    "helm",
+    "json",
+    "let-alist"
+   ],
+   "commit": "9ee7e018c5db23ae9c8d1c8fa969876f15b7280d",
+   "sha256": "0fxrmvb64lav4aqs61z3a4d2mcp9s2nw7fvysyjn0r1291pkzk9j"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "helm",
+    "json",
+    "let-alist"
+   ],
+   "commit": "e11cd3e961c1c4c973b51d8d12592e7235a4971b",
+   "sha256": "1l61csd1gqz7kg5zjx60cfy824g42p682z7pk0rqzlrz8498wvkh"
+  }
+ },
+ {
+  "ename": "helm-company",
+  "commit": "8acf7420f2ac8a36474594bc34316f187b43d771",
+  "sha256": "1wl1mzm1h9ig351y77yascdv4z0cka1gayi8cnnlayk763is7q34",
+  "fetcher": "github",
+  "repo": "Sodel-the-Vociferous/helm-company",
+  "unstable": {
+   "version": [
+    20190812,
+    1429
+   ],
+   "deps": [
+    "company",
+    "helm"
+   ],
+   "commit": "6eb5c2d730a60e394e005b47c1db018697094dde",
+   "sha256": "1ci37w6ahnqrfpb284gjvxmimlf61sdxb9k192yy9q983cksv2hx"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    5
+   ],
+   "deps": [
+    "company",
+    "helm"
+   ],
+   "commit": "6eb5c2d730a60e394e005b47c1db018697094dde",
+   "sha256": "1ci37w6ahnqrfpb284gjvxmimlf61sdxb9k192yy9q983cksv2hx"
+  }
+ },
+ {
+  "ename": "helm-core",
+  "commit": "ef7a700c5665e6d72cb4cecf7fb5a2dd43ef9bf7",
+  "sha256": "1dyv8rv1728vwsp6vfdq954sp878jbp3srbfxl9gsgjnv1l6vjda",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm",
+  "unstable": {
+   "version": [
+    20200514,
+    644
+   ],
+   "deps": [
+    "async"
+   ],
+   "commit": "202bcb533e2feb25d63c64553afccefd9cfab262",
+   "sha256": "0vn6420qjs04cwiq1bry0cj14i53w3zkyib4y6wyrnd709dfyzgp"
+  },
+  "stable": {
+   "version": [
+    3,
+    6,
+    1
+   ],
+   "deps": [
+    "async"
+   ],
+   "commit": "55281e1390bae54310dc880ae3805e0595d5c1bd",
+   "sha256": "1sghq7xjd4a9ysh3cywd5rss9y47rwk82y86cwh1g7p0jv89gqaf"
+  }
+ },
+ {
+  "ename": "helm-cscope",
+  "commit": "3d2e3460df1ec750053bc8402ad6eb822c10c697",
+  "sha256": "13a76wc1ia4c0v701dxqc9ycbb43d5k09m5pfsvs8mccisfzk9y4",
+  "fetcher": "github",
+  "repo": "alpha22jp/helm-cscope.el",
+  "unstable": {
+   "version": [
+    20190615,
+    41
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "xcscope"
+   ],
+   "commit": "af1d9e7f4460a88d7400b5a74d5da68084089ac1",
+   "sha256": "1ynn49ngx3y4m9y820sf3rbyzw3k5gs0xf1bsxi3h8hdvyqd7j9p"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "xcscope"
+   ],
+   "commit": "b82db54071bd2d1c77db2e648f8b4e61b1abe288",
+   "sha256": "0xnqkc4z22m41v5lgf87dd8xc4gmf932zbnbdhf9xic1gal1779c"
+  }
+ },
+ {
+  "ename": "helm-css-scss",
+  "commit": "7a4e84530b4607a277fc3b678fe7b34b1c5e3b4f",
+  "sha256": "14k29g4zm302r00n49k8b6p4bz115s0jcidiaf6nrhba9y40i0wz",
+  "fetcher": "github",
+  "repo": "emacsorphanage/helm-css-scss",
+  "unstable": {
+   "version": [
+    20191230,
+    1549
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "48b996f73af1fef8d6e88a1c545d98f8c50b0cf3",
+   "sha256": "1xadlsg4c52anbk3dqz6blkrid8lzsd28rw402gy17vnk7lwg9i7"
+  }
+ },
+ {
+  "ename": "helm-ctest",
+  "commit": "1cc85ff5554df10fc2066eec4d90de3b25536923",
+  "sha256": "1mphc9fsclbw19p5i1xf52qg6ljljbajvbcsl95hisrnvhg89vpm",
+  "fetcher": "github",
+  "repo": "danlamanna/helm-ctest",
+  "unstable": {
+   "version": [
+    20191031,
+    1435
+   ],
+   "deps": [
+    "dash",
+    "helm-core",
+    "s"
+   ],
+   "commit": "2a29cfb4ec583da247fa2ae7bac88790b1223e40",
+   "sha256": "11am95crkf409w3ph17x55v0xx2gy4spb4qc6z5f7vbxgwyaa4a6"
+  }
+ },
+ {
+  "ename": "helm-dash",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "032hwwq4r72grzls5ww7bjyj39c82wkcgf3k7myfcrqd3lgblrwb",
+  "fetcher": "github",
+  "repo": "areina/helm-dash",
+  "unstable": {
+   "version": [
+    20190527,
+    1118
+   ],
+   "deps": [
+    "cl-lib",
+    "dash-docs",
+    "helm"
+   ],
+   "commit": "7f853bd34da666f0e9a883011c80f451b06f6c59",
+   "sha256": "0r192vzry1212ihabg9pgw9xar8zdgnbgy0vsgvfm8s5wj6ny7jp"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "9a230125a7a11f5fa90aa048b61abd95eb78ddfe",
+   "sha256": "0xs3nq86qmvkiazn5w564npdgbcfjlnpw2f48g2jd43yznblz7ly"
+  }
+ },
+ {
+  "ename": "helm-descbinds",
+  "commit": "447610a05422cd2f35399e43d98bf46410ff0408",
+  "sha256": "1890ss4pimjxskzzllf57fg07xbs8zqcrp6r8r6x989llrfvd1h7",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-descbinds",
+  "unstable": {
+   "version": [
+    20190501,
+    935
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "b72515982396b6e336ad7beb6767e95a80fca192",
+   "sha256": "1bp2n32lvb1fhnwzk8s782i928m8mklv77jz5rq0ag1q7y740r31"
+  },
+  "stable": {
+   "version": [
+    1,
+    13
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "6d5ddc11e6cef86548bd6b3e0d840112d602659c",
+   "sha256": "03b79wdcp4im0fwadzhyc8jxl2wqvg8gmpflnznrwz3l71bi4sqq"
+  }
+ },
+ {
+  "ename": "helm-describe-modes",
+  "commit": "23f0b2025073850c477ba4646c3821b3c7de6c42",
+  "sha256": "0ajy9kwspm8rzafl0df57fad5867s86yjqj29shznqb12r91lpqb",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-describe-modes",
+  "unstable": {
+   "version": [
+    20160212,
+    518
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "11fb36af119b784539d31c6160002de1957408aa",
+   "sha256": "1d5b85m33hsdb4wswh9wpid0ghsr2zrj3f6ky587lc32s4bs0w0z"
+  }
+ },
+ {
+  "ename": "helm-dictionary",
+  "commit": "b8cc457b06ce271f7c19729cde7728286bb85528",
+  "sha256": "1pak8qn0qvbzyclhzvr5ka3pl370i4kiykypfkwbfgvqqwczhl3n",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-dictionary",
+  "unstable": {
+   "version": [
+    20200406,
+    1632
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "1dfec049c7851754a5967329a60e9e9a9f805423",
+   "sha256": "042rn38myq8b2024mdpisakmqysp34mmhvbdnw433vl9qxw6pikd"
+  }
+ },
+ {
+  "ename": "helm-directory",
+  "commit": "d0c066d6f285ab6d572dab4549781101547cb704",
+  "sha256": "01c5a08v6rd867kdyrfwdvj05z4srzj9g6xy4scirlbwbff0q76n",
+  "fetcher": "github",
+  "repo": "masasam/emacs-helm-directory",
+  "unstable": {
+   "version": [
+    20170706,
+    402
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "51bd7cd6e40a84a7efda894283ec76a0107830ad",
+   "sha256": "18lv8s7lw6zw97v4q5810f9cn43ybiygl139i2hf5p37p48d8fyy"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    4
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "2c6d45404506ba744888dcdb65e9f63878f2da16",
+   "sha256": "1a5j4zzn249jdm4kcri64x1dxazhhk7g5dmgnhflrnbrc2kdwm8h"
+  }
+ },
+ {
+  "ename": "helm-dired-history",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0qciafa42rbw0dxgkp5mbbwbrcziswmwdj2lszm0px1bip4x7yb8",
+  "fetcher": "github",
+  "repo": "jixiuf/helm-dired-history",
+  "unstable": {
+   "version": [
+    20170524,
+    1046
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "281523f9fc46cf00fafd670ba5cd16552a607212",
+   "sha256": "1bqavj5ljr350dckyf39i9plkb0rbhyd17ka94n2g6daapgpq0x6"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "281523f9fc46cf00fafd670ba5cd16552a607212",
+   "sha256": "1bqavj5ljr350dckyf39i9plkb0rbhyd17ka94n2g6daapgpq0x6"
+  }
+ },
+ {
+  "ename": "helm-dired-recent-dirs",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "1rm47if91hk6hi4xil9vb6rs415s5kvhwc6zkrmcvay9hiw9vrpw",
+  "fetcher": "github",
+  "repo": "yynozk/helm-dired-recent-dirs",
+  "unstable": {
+   "version": [
+    20131228,
+    1414
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "3bcd125b44f5a707588ae3868777d91192351523",
+   "sha256": "14sifdrfg8ydvi9mj8qm2bfphbffglxrkb5ky4q5b3j96bn8v110"
+  }
+ },
+ {
+  "ename": "helm-dirset",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1bwgv1pm047xafidq23mdqj3sdc5bvqlw74s80dj88ybp3vrpvlk",
+  "fetcher": "github",
+  "repo": "k1LoW/helm-dirset",
+  "unstable": {
+   "version": [
+    20151209,
+    12
+   ],
+   "deps": [
+    "cl-lib",
+    "f",
+    "helm",
+    "s"
+   ],
+   "commit": "eb30810cd26e1ee73d84a863e6b2667700e9aead",
+   "sha256": "183vj5yi575aqkak19hl8k4mw38r0ki9p1fnpa8nny2srjyy34yb"
+  }
+ },
+ {
+  "ename": "helm-elscreen",
+  "commit": "dfe42a7fe2dc051c6c49aa75bce89bfe1b5fdbbb",
+  "sha256": "186k66kf2ak2ihha39989cz1aarqrvbgp213y1fwh9qsn1kxclnd",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-elscreen",
+  "unstable": {
+   "version": [
+    20170709,
+    914
+   ],
+   "deps": [
+    "cl-lib",
+    "elscreen",
+    "helm"
+   ],
+   "commit": "b8212866939dc4a1e1dc23ad572407b688e130e3",
+   "sha256": "0gy6lbdngiwfl9vfw32clagbmv70f93slc9zkm3dz3mca37435kz"
+  }
+ },
+ {
+  "ename": "helm-emmet",
+  "commit": "acbc5e9fab159ad2d63b10c0fa6ac18636bb2379",
+  "sha256": "1dkn9qa3dv2im11lm19wfh5jwwwp42sv7jc0p6qg35rhzwdpfg03",
+  "fetcher": "github",
+  "repo": "yasuyk/helm-emmet",
+  "unstable": {
+   "version": [
+    20160713,
+    1231
+   ],
+   "deps": [
+    "emmet-mode",
+    "helm"
+   ],
+   "commit": "f0364e736b10cf44232053a78de04133a88185ae",
+   "sha256": "1zl6vhzbf29864q97q5v7c318x36y1a4cjm0i7kgj3hc6qla5j88"
+  }
+ },
+ {
+  "ename": "helm-emms",
+  "commit": "db836b671705607f6cd9bce8229884b1f29b4a76",
+  "sha256": "1vq7cxnacmhyczsa4s5h1nnzc08m66harfnxsqxyrdsnggv9hbf5",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-emms",
+  "unstable": {
+   "version": [
+    20200322,
+    1309
+   ],
+   "deps": [
+    "cl-lib",
+    "emms",
+    "helm"
+   ],
+   "commit": "37e5aa029abfa5a5c48636314de8157142944fa2",
+   "sha256": "0r1ai6xhzayyik30w2sx9n62bxxwm12vfmjspv0daqif9az8y3vg"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "deps": [
+    "cl-lib",
+    "emms",
+    "helm"
+   ],
+   "commit": "d7da090af0f63b92c5d735197992c732adbeef3d",
+   "sha256": "0fs0i33di3liyx1f55xpg5nmac1b750n37g3pkxw2mil7fx7dz32"
+  }
+ },
+ {
+  "ename": "helm-esa",
+  "commit": "5813ef34f178c7549749b7440764b8aa8b142ade",
+  "sha256": "0bqj4lbh0q4g21xb35q2yqy0kzmm8rp1nmlcg2v9hagpx7996z0g",
+  "fetcher": "github",
+  "repo": "masutaka/emacs-helm-esa",
+  "unstable": {
+   "version": [
+    20190721,
+    1429
+   ],
+   "deps": [
+    "helm",
+    "request"
+   ],
+   "commit": "d93b4af404346870cb2cf9c257d055332ef3f577",
+   "sha256": "1lqih8qadk1miwi8fv7syfd7i2rzbg669b96my177g0i57sah4mw"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "helm",
+    "request"
+   ],
+   "commit": "d93b4af404346870cb2cf9c257d055332ef3f577",
+   "sha256": "1lqih8qadk1miwi8fv7syfd7i2rzbg669b96my177g0i57sah4mw"
+  }
+ },
+ {
+  "ename": "helm-etags-plus",
+  "commit": "e5d0c347ff8cf6e0ade80853775fd6b84f387fa5",
+  "sha256": "0lw21yp1q6iggzlb1dks3p6qdfppnqf50f3rijjs18lisp4izp99",
+  "fetcher": "github",
+  "repo": "jixiuf/helm-etags-plus",
+  "unstable": {
+   "version": [
+    20170113,
+    1414
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "704f0991ee4a2298b01c33aafc224eef322e15e3",
+   "sha256": "03n7c9jlpqkz5z1gygx2s3yf46caav2l11d9xnmqhyhbvyimjqf9"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "99512856918e485862ceb21460476adb0349f525",
+   "sha256": "08ddxp1hm0ckx6gq9yl6dhh0jrfb6f747snchykl3z5p0ayknvlm"
+  }
+ },
+ {
+  "ename": "helm-evil-markers",
+  "commit": "71e3618dc6a9f614397d251398c6304345949d9b",
+  "sha256": "12r5adwl9qanfvf3558niqdql67csg2lvyb6b6z3khdr34ac0sr6",
+  "fetcher": "github",
+  "repo": "xueeinstein/helm-evil-markers",
+  "unstable": {
+   "version": [
+    20200506,
+    715
+   ],
+   "deps": [
+    "evil",
+    "helm"
+   ],
+   "commit": "0245f0c268e0eaec85df51ab2deba7ac961f6770",
+   "sha256": "0b1db6x2hz9rixchn9qfp2ak27a2vbz2l4g0fd7mys5c0llbwj1r"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "evil",
+    "helm"
+   ],
+   "commit": "29f9288a73370f26fe431db1472ed948bd63190d",
+   "sha256": "13jd7kdb6qi4dkl2fr7132ijargjb2fcqhkfb72gr101a44xxg5p"
+  }
+ },
+ {
+  "ename": "helm-eww",
+  "commit": "455a32c1d4642dc6752408c4f5055f5f4d1288eb",
+  "sha256": "0pl8s7jmk1kak13bal43kp2awjji9lgr3npq9m09zms121rh709w",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-eww",
+  "unstable": {
+   "version": [
+    20190315,
+    907
+   ],
+   "deps": [
+    "helm",
+    "seq"
+   ],
+   "commit": "76ba59fda8dd6f32a1bc7c6df0b43c6f76169911",
+   "sha256": "0hpq1h0p69c9k6hkd2mjpprx213sc5475q7pr2zpmwrjdzgcv70z"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "deps": [
+    "helm",
+    "seq"
+   ],
+   "commit": "76ba59fda8dd6f32a1bc7c6df0b43c6f76169911",
+   "sha256": "0hpq1h0p69c9k6hkd2mjpprx213sc5475q7pr2zpmwrjdzgcv70z"
+  }
+ },
+ {
+  "ename": "helm-ext",
+  "commit": "1ee74cb0aa3445bc9ae4226c2043ee4de3ac6cd3",
+  "sha256": "0la2i0b7nialib4wq26cxcak8nq1jzavsw8f0mvbavsb7hfwkpgw",
+  "fetcher": "github",
+  "repo": "cute-jumper/helm-ext",
+  "unstable": {
+   "version": [
+    20180526,
+    350
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "90b788aced21ec467a234b6b77b5a6ebae6de75f",
+   "sha256": "11a27556slh95snzqyvy0rlf6p7f51nx8rxglnv0d34529h72508"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "c8ac56918b200239b3f73a4e6a031deecc2c5646",
+   "sha256": "08c6n4zr6s3h7y0kk6g51xqs6hs29hkfmn55jfjw6hpimbk3vi1j"
+  }
+ },
+ {
+  "ename": "helm-exwm",
+  "commit": "8ecdf9e00cf19fabbeade12a66d66cd010561366",
+  "sha256": "0g15c4bg794vqigafl9g2w85jbs1lbw9qplaf8ffx0az4qwhnvqz",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-exwm",
+  "unstable": {
+   "version": [
+    20200325,
+    1022
+   ],
+   "deps": [
+    "exwm",
+    "helm"
+   ],
+   "commit": "00ddb4d2a127087a0b99f0a440562bd54408572d",
+   "sha256": "0g4k01ps14bp2az8v6dcag9llg045k2b4kdis81xx4lvw76znr9v"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "exwm",
+    "helm"
+   ],
+   "commit": "00ddb4d2a127087a0b99f0a440562bd54408572d",
+   "sha256": "0g4k01ps14bp2az8v6dcag9llg045k2b4kdis81xx4lvw76znr9v"
+  }
+ },
+ {
+  "ename": "helm-fd",
+  "commit": "ea8d504faa73bc0a649b13738ed7c6a76e2fad88",
+  "sha256": "1hlq0xxi616flykay9jr96rqgvs53dmlk50h25982jpl6xb63g9y",
+  "fetcher": "github",
+  "repo": "lerouxrgd/helm-fd",
+  "unstable": {
+   "version": [
+    20190923,
+    48
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "84a2aa656473f2921e35abad62b158b3813ee944",
+   "sha256": "14bdcr4db500sqv5p47jdkjp06hys35bpb07fp40v39r9pbzfdla"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "2891ca941b5a70facf35d5a8bbc791fc41ab0284",
+   "sha256": "16szlby36g393mwnywl59iyngrinnsd9xilsgadr6l9hngas4anm"
+  }
+ },
+ {
+  "ename": "helm-file-preview",
+  "commit": "6c2287c7b4c543e92ccfab120388b2c05174d2db",
+  "sha256": "0rvwf54xz3wb640z0r8gsdv9frf650r7llviicvy5gmfddrlpjh4",
+  "fetcher": "github",
+  "repo": "jcs-elpa/helm-file-preview",
+  "unstable": {
+   "version": [
+    20190903,
+    331
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "6ab26c5fb414a0c1232974fd3f888839b6844203",
+   "sha256": "0lsrcn03f4981762l2rq25ps1f2ka86q125jkh6nq7wzfb7pj71f"
+  }
+ },
+ {
+  "ename": "helm-filesets",
+  "commit": "71c0d98ede6119e838e3db146dea5c16d8ba8ed8",
+  "sha256": "1yhhchksi0r4r5c5q1mggz2hykkvk93baq91b5hkaflqi30d1v8f",
+  "fetcher": "github",
+  "repo": "gcla/helm-filesets",
+  "unstable": {
+   "version": [
+    20140929,
+    1835
+   ],
+   "deps": [
+    "filesets+",
+    "helm"
+   ],
+   "commit": "b352910af4c3099267a8aa0169c7f743b35bb1fa",
+   "sha256": "00yhmpv5xjlw1gwbcrznz83gkaby8zlqv74d3p7plca2cwjll1g9"
+  }
+ },
+ {
+  "ename": "helm-firefox",
+  "commit": "257e452d37768d2f3a6e0a5ccd062d128b2bc867",
+  "sha256": "0677nj0zsk11vvp3q3xl9nk8dhz3ki9yl3kfb57wgnmprp109wgs",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-firefox",
+  "unstable": {
+   "version": [
+    20200306,
+    1408
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "7065e01188ed17b86a7b4f01b95ace575a15eef1",
+   "sha256": "0kk7d73hcrxcnsrq803zp5lh1hyk30nahb6wdlalqvkczksgpkml"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "0ad34b7b5abc485a86cae6920c14de861cbeb085",
+   "sha256": "08mjsi2f9s29fkk35cj1rrparjnkm836qmbfdwdz7y51f9varjbs"
+  }
+ },
+ {
+  "ename": "helm-fish-completion",
+  "commit": "0e73cbca73b5be3fa107c045083c765b5dc5d9e8",
+  "sha256": "1farkigcif15yb8nz6kb99hc9qf7kpf39z2vmsjp62c936rrsxls",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-fish-completion",
+  "unstable": {
+   "version": [
+    20200509,
+    1056
+   ],
+   "deps": [
+    "fish-completion",
+    "helm"
+   ],
+   "commit": "fd730198afe01f6eecc6c5841358a8eea4cf4b09",
+   "sha256": "1iv0hwr74hzgrvrr31nlnswvi87lvpg24rd1rhkr5kjicr2295fq"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "fish-completion",
+    "helm"
+   ],
+   "commit": "fd730198afe01f6eecc6c5841358a8eea4cf4b09",
+   "sha256": "1iv0hwr74hzgrvrr31nlnswvi87lvpg24rd1rhkr5kjicr2295fq"
+  }
+ },
+ {
+  "ename": "helm-flx",
+  "commit": "f1418d260f34d698cec611978001c7fd1d1a8a89",
+  "sha256": "03vxr5f5m4s6k6rm0976w8h3s4c3b5mrdqgmkd281hmyh9q3cslq",
+  "fetcher": "github",
+  "repo": "PythonNut/helm-flx",
+  "unstable": {
+   "version": [
+    20180103,
+    516
+   ],
+   "deps": [
+    "flx",
+    "helm"
+   ],
+   "commit": "6640fac5cb16bee73c95b8ed1248a4e5e113690e",
+   "sha256": "1fh1dy6xpc476hs87mn9fwxhxi97h7clfnnm7dxb7hg43xmgsjjs"
+  }
+ },
+ {
+  "ename": "helm-flycheck",
+  "commit": "9cce1662d4ca7b7d868685084294d22ebf6c39e9",
+  "sha256": "038f9294qc0jnkzrrjxm97hyhwa4sca3wdsjbaya50cf0g4cmk7b",
+  "fetcher": "github",
+  "repo": "yasuyk/helm-flycheck",
+  "unstable": {
+   "version": [
+    20160710,
+    829
+   ],
+   "deps": [
+    "dash",
+    "flycheck",
+    "helm-core"
+   ],
+   "commit": "3cf7d3bb194acacc6395f88360588013d92675d6",
+   "sha256": "1a2yfxhz04klwhcandqvfzysxp6b7bxyxx1xk1x3kds5hif5fkl4"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "dash",
+    "flycheck",
+    "helm-core"
+   ],
+   "commit": "a15e62a6432c165c4f2c17388686873383400d7d",
+   "sha256": "0q9yksx66ry4x3vkcyyj437il225s2ad5h6vkxpyz04p62g3ysnx"
+  }
+ },
+ {
+  "ename": "helm-flymake",
+  "commit": "d8547036dceaa466957f4c5a07eb0461f313b924",
+  "sha256": "0h87yd56nhxpahrcpk6hin142hzv3sdr5bvz0injbv8a2lwnny3b",
+  "fetcher": "github",
+  "repo": "tam17aki/helm-flymake",
+  "unstable": {
+   "version": [
+    20160610,
+    2
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "72cf18a1a1f843db9bb5d58301739ea9ccb1655b",
+   "sha256": "05wpclg4ibp0ida692m3s8nknx4aizfcdgxgfzlwczgdgw0922kn"
+  }
+ },
+ {
+  "ename": "helm-flyspell",
+  "commit": "f8c5b91762d47a4d3024f1ed7f19666c6f2d5ce5",
+  "sha256": "1g6xry2y6396pg7rg8hc0l84z5r3j2df7dpd1jgffxa8xa3i661f",
+  "fetcher": "github",
+  "repo": "pronobis/helm-flyspell",
+  "unstable": {
+   "version": [
+    20170210,
+    1901
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "8d4d947c687cb650cb149aa2271ad5201ea92594",
+   "sha256": "0q0xcgg8w9rrlsrrnk0l7qd8q7jc6x1agm2i769j21wpyfv1nbns"
+  }
+ },
+ {
+  "ename": "helm-frame",
+  "commit": "8bbb56b883658fdf91b984c01d2472bdf6787003",
+  "sha256": "1hmml0209z3ap35bqk9b1fh0lcfksysqszgj1ifh1mdjz81xx9sq",
+  "fetcher": "github",
+  "repo": "chee/helm-frame",
+  "unstable": {
+   "version": [
+    20180604,
+    1005
+   ],
+   "commit": "485e2a534b0de5e8dbeb144a9a60ceca00215a4a",
+   "sha256": "1hxqyyh8jzk83ppi1p5r9b9gy7k2hanh3xzp129iw9yqpmvwmsnq"
+  }
+ },
+ {
+  "ename": "helm-fuz",
+  "commit": "2d3139563902bb1cb8aa48a517747f12a1ca1746",
+  "sha256": "1c6mm698kzk0armpla4i5xn5fh8pwhim6gj4cblk0wwf2av2r58b",
+  "fetcher": "github",
+  "repo": "rustify-emacs/fuz.el",
+  "unstable": {
+   "version": [
+    20200104,
+    524
+   ],
+   "deps": [
+    "fuz",
+    "helm"
+   ],
+   "commit": "0b6b64cebde5675be3a28520ee16234db48d3b8b",
+   "sha256": "1bddjr3rpmvkrljq5ipjm42d59m2897cpfhmiah3rcb4c6ra40m1"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    0
+   ],
+   "deps": [
+    "fuz",
+    "helm"
+   ],
+   "commit": "90ca9207a9c1decda24a552b94ff41169ecccb14",
+   "sha256": "0v1advw2yr8b4jwd713fijd1kx4yc5xzz5ck2qfdxy5ixi1b39nm"
+  }
+ },
+ {
+  "ename": "helm-fuzzier",
+  "commit": "51dc6f01e0e5ee0593bea6616894bc0163878cd0",
+  "sha256": "0qdgf0phs3iz29zj3qjhdgb3i4xvf5r2vi0709pwxx2s6r13pvcc",
+  "fetcher": "github",
+  "repo": "EphramPerdition/helm-fuzzier",
+  "unstable": {
+   "version": [
+    20160605,
+    2145
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "8798dcf3583b863df5b9dea7fe3b0179ba1c35bc",
+   "sha256": "1250mh0ydap0sifcyrgs32dnr6c8d723v4c55yvwm23dzvzwycp8"
+  }
+ },
+ {
+  "ename": "helm-fuzzy",
+  "commit": "6c2287c7b4c543e92ccfab120388b2c05174d2db",
+  "sha256": "088mrqqv9d2vrja67xrd37zzxl4k02rl5smscrp7ad6d60y1k1zy",
+  "fetcher": "github",
+  "repo": "jcs-elpa/helm-fuzzy",
+  "unstable": {
+   "version": [
+    20190905,
+    526
+   ],
+   "deps": [
+    "flx",
+    "helm"
+   ],
+   "commit": "fc080a0b4be8a68944a64bc4fb5b38cd11a70bc7",
+   "sha256": "01632zrpl69b034srgsfidf62r1kwc8f4z8i48kz95g5n2ax1xk9"
+  }
+ },
+ {
+  "ename": "helm-fuzzy-find",
+  "commit": "34f76bb377ed31aa42663858c407cc5476e6fe1f",
+  "sha256": "0lczlrpd5jy2vhy9jl3rjcdyiwr136spqm8k2rj8m9s8wpn0v75i",
+  "fetcher": "github",
+  "repo": "xuchunyang/helm-fuzzy-find",
+  "unstable": {
+   "version": [
+    20171106,
+    400
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "de2abbf7ca13609587325bacd4a1ed4376b5c927",
+   "sha256": "1dacvnkqqiax02c627z9qi61iyqgr0j3qqmjp29h0v494czvrdbs"
+  }
+ },
+ {
+  "ename": "helm-ghc",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0bv0sfpya1jyay9p80lv0w6h9kdp96r8lnp6nj15w660p1b51c0d",
+  "fetcher": "github",
+  "repo": "david-christiansen/helm-ghc",
+  "unstable": {
+   "version": [
+    20141105,
+    1459
+   ],
+   "deps": [
+    "cl-lib",
+    "ghc",
+    "helm"
+   ],
+   "commit": "e5ee7b8d3b745d162553aecfbd41381c4de85f35",
+   "sha256": "16p1gisbza48qircsvrwx020n96ss1c6s68d7cgqqfc0bf2467is"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "ghc",
+    "helm"
+   ],
+   "commit": "d3603ee18299b789be255297dc42af16dd431869",
+   "sha256": "00ls9v3jdpz3wka90crd193z3ipwnf1b0slmldn4vb9ivrndh6wn"
+  }
+ },
+ {
+  "ename": "helm-ghq",
+  "commit": "e94eec646def7c77b15f6a6ac1841200848e62c7",
+  "sha256": "14f3cbsj7jhlhrp561d8pasllnx1cmi7jk6v2fja7ghzj76dnvq6",
+  "fetcher": "github",
+  "repo": "masutaka/emacs-helm-ghq",
+  "unstable": {
+   "version": [
+    20190526,
+    1409
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "d0d6aa0f407388e7012f0443df8ae657ece01779",
+   "sha256": "08884pk0d6xplsn1z9slaf4b9mmam6s9dg4dcxi1na1inpi6y082"
+  },
+  "stable": {
+   "version": [
+    1,
+    8,
+    0
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "d0d6aa0f407388e7012f0443df8ae657ece01779",
+   "sha256": "08884pk0d6xplsn1z9slaf4b9mmam6s9dg4dcxi1na1inpi6y082"
+  }
+ },
+ {
+  "ename": "helm-ghs",
+  "commit": "0f8d37030806905344a2ca56bfc469f5a238cd69",
+  "sha256": "0bzy2vr2h9c886cm4gd161n7laym952bzy5fhcibafhzm4abl4sh",
+  "fetcher": "github",
+  "repo": "iory/emacs-helm-ghs",
+  "unstable": {
+   "version": [
+    20170715,
+    541
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "17a70bf16255d90d67c8350e88200ec8bfd47563",
+   "sha256": "1jc51anmkr44db4kbcwza17x3ln78ihpslrf2v9xs0sq0ggw1rva"
+  }
+ },
+ {
+  "ename": "helm-git",
+  "commit": "707696fbec477027e675ff01c502e0b81096025c",
+  "sha256": "1ib73p7cmkw96csxxpkqwn6m60k1xrd46z6vyp29gj85cs4fpsb8",
+  "fetcher": "github",
+  "repo": "maio/helm-git",
+  "unstable": {
+   "version": [
+    20120630,
+    2103
+   ],
+   "commit": "cb96a52b5aecadd3c27aba7749d14e43ab128d55",
+   "sha256": "1yfy4a52hx44r32i0b75bka8gfcn5lp61jl86lzrsi2cr9wg10pn"
+  }
+ },
+ {
+  "ename": "helm-git-files",
+  "commit": "23bfa0b94f242f9da06366b4aefdf6ece72561e7",
+  "sha256": "02109r956nc1dmqh4v082vkr9wdixh03xhl7icwkzl7ipr5453s6",
+  "fetcher": "github",
+  "repo": "kenbeese/helm-git-files",
+  "unstable": {
+   "version": [
+    20141212,
+    1317
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "43193960774069369ac6964bbf7c026900206fa8",
+   "sha256": "157b525h0kiaknn12fsw67fg26lzb20apx8sssmvlcicqcd51iaw"
+  }
+ },
+ {
+  "ename": "helm-git-grep",
+  "commit": "338d28c3fe201a7b2f15793be6d540f44819f4d8",
+  "sha256": "1ww6a4q78w5hnwikq7y93ic2b7x070c27r946lh6p8cz1k4b8vqi",
+  "fetcher": "github",
+  "repo": "yasuyk/helm-git-grep",
+  "unstable": {
+   "version": [
+    20170614,
+    1411
+   ],
+   "deps": [
+    "helm-core"
+   ],
+   "commit": "744cea07dba6e6a5effbdba83f1b786c78fd86d3",
+   "sha256": "172m7wbgx9qnv9n1slbzpd9j24p6blddik49z6bq3zdg1vlnf3dv"
+  },
+  "stable": {
+   "version": [
+    0,
+    10,
+    1
+   ],
+   "deps": [
+    "helm-core"
+   ],
+   "commit": "744cea07dba6e6a5effbdba83f1b786c78fd86d3",
+   "sha256": "172m7wbgx9qnv9n1slbzpd9j24p6blddik49z6bq3zdg1vlnf3dv"
+  }
+ },
+ {
+  "ename": "helm-github-stars",
+  "commit": "2e77f4a75504ca3e1091cdc757e91fb1ae361fa7",
+  "sha256": "1r4mc4v71171sq9rbbhm346s92fb7jnvvl91y2q52jqmrnzzl9zy",
+  "fetcher": "github",
+  "repo": "Sliim/helm-github-stars",
+  "unstable": {
+   "version": [
+    20190428,
+    1047
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "c891690218b0d8b957ea6cb45b1b6cffd15a6950",
+   "sha256": "0050i3apv72klqi3s0zw5sv4r4sizx4vlw07l52i39ij7bzjhkzz"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    7
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "c891690218b0d8b957ea6cb45b1b6cffd15a6950",
+   "sha256": "0050i3apv72klqi3s0zw5sv4r4sizx4vlw07l52i39ij7bzjhkzz"
+  }
+ },
+ {
+  "ename": "helm-gitignore",
+  "commit": "3146b9309e8cbe464330dcd1f5b8a9fd8788ad6f",
+  "sha256": "01l7mx8g1m5qnwz973hzrgds4gywm56jgl4hcdxqvpi1n56md3x6",
+  "fetcher": "github",
+  "repo": "jupl/helm-gitignore",
+  "unstable": {
+   "version": [
+    20170211,
+    8
+   ],
+   "deps": [
+    "cl-lib",
+    "gitignore-mode",
+    "helm",
+    "request"
+   ],
+   "commit": "2a2e7da7855a6db0ab3bb6a6a087863d7abd4391",
+   "sha256": "07770qhy56cf5l69mk6aq882sryjbfjd05kdk78v65mgmlwv806a"
+  }
+ },
+ {
+  "ename": "helm-gitlab",
+  "commit": "1d012991188956f6e06c37d504b0d06ab31487b9",
+  "sha256": "010ihx3yddhb8j3jqcssc49qnf3i7xlz0s380mpgrdxgz6yahsmd",
+  "fetcher": "github",
+  "repo": "nlamirault/emacs-gitlab",
+  "unstable": {
+   "version": [
+    20180312,
+    1647
+   ],
+   "deps": [
+    "dash",
+    "gitlab",
+    "helm",
+    "s"
+   ],
+   "commit": "8c2324c02119500f094c2f92dfaba4c9977ce1ba",
+   "sha256": "056c4fb5sj2y4h94klx2g24n1g3qdi7ifzs8ksw5v6hcj9lrkb1n"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    0
+   ],
+   "deps": [
+    "dash",
+    "gitlab",
+    "helm",
+    "s"
+   ],
+   "commit": "a1c1441ff5ffb290e695eb9ac05431e9385578f4",
+   "sha256": "0ywjrgafpl4cnrykx9yysazr7hkd2pxk67h065f8z3mid6cgh1wa"
+  }
+ },
+ {
+  "ename": "helm-go-package",
+  "commit": "449d272b94c189176305ca17652d76adac087ce5",
+  "sha256": "102yhn1xg83l67yaq3brn35a03fkvqqhad10rq0h39n4i1slq3z6",
+  "fetcher": "github",
+  "repo": "yasuyk/helm-go-package",
+  "unstable": {
+   "version": [
+    20161103,
+    153
+   ],
+   "deps": [
+    "deferred",
+    "go-mode",
+    "helm-core"
+   ],
+   "commit": "e42c563936c205ceedb930a687c11b4bb56447bc",
+   "sha256": "1169q25paz7x3hia5px4vmn06zzss179q9179x95vx8vfr43ny08"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "deferred",
+    "go-mode",
+    "helm-core"
+   ],
+   "commit": "7db5ea9ce97502152a6bb1fe38f8fabb5a49abd2",
+   "sha256": "08llqkswilzsigh28w9qjbqi5g5z0ylfabz5sqia7c18gjshvz0h"
+  }
+ },
+ {
+  "ename": "helm-google",
+  "commit": "f0a8eb0eefe88b4ea683a4743c0f8393506e014b",
+  "sha256": "0hv7wfrahjn8j4914dp2p4fl2cj85pmxnyxf5cnmv6p97yis0ham",
+  "fetcher": "git",
+  "url": "https://framagit.org/steckerhalter/helm-google.git",
+  "unstable": {
+   "version": [
+    20180606,
+    520
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "48e91a73d5f48c39d7a219022a24440cff548e1a",
+   "sha256": "05xj6bkr330glh56n8c63297zqh1cmlhxlyxpr04srjraifyzba1"
+  }
+ },
+ {
+  "ename": "helm-grepint",
+  "commit": "26446d6a2215bfa622d86837b30f2754dd25eb4c",
+  "sha256": "00wr3wk41sbpamxbjkqlby49g8y5z9n79p51sg7ginban4qy91gf",
+  "fetcher": "github",
+  "repo": "kopoli/helm-grepint",
+  "unstable": {
+   "version": [
+    20161001,
+    1413
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "a62ca27515ff6a366b89b420500eb16d380cc653",
+   "sha256": "1v87v6a34zv998z1dwwcqx49476pvy9g5zml7w5vzfkms0l8l28w"
+  }
+ },
+ {
+  "ename": "helm-growthforecast",
+  "commit": "7d92e66cad586d4dc6b1de12d1b41b818b5232c2",
+  "sha256": "1qlyp263rl0892hr53kgc16jlx3jylw2pplbzlx05a60k5348jjv",
+  "fetcher": "github",
+  "repo": "daichirata/helm-growthforecast",
+  "unstable": {
+   "version": [
+    20140120,
+    344
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "0f94ac090d6c354058ad89a86e5c18385c136d9b",
+   "sha256": "0p0mk44y2z875ra8mzcb6vlf4rbkiq9yank5hdxvg2x2sxsaambk"
+  }
+ },
+ {
+  "ename": "helm-gtags",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "0qcn6hmm26irlljcq93c6ap0k1kihdakr2jpgzvdbm8km2cxrm47",
+  "fetcher": "github",
+  "repo": "emacsorphanage/helm-gtags",
+  "unstable": {
+   "version": [
+    20200409,
+    1559
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "25b81d7774622911c1e95d9020209ae4ace1542b",
+   "sha256": "14k0yrf8p015gsgdgq8ykvrjjhd1brq2gsfx7m3jv0p789yxw7zk"
+  },
+  "stable": {
+   "version": [
+    1,
+    5,
+    6
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "dbe0d2d9d08058d469ad2d729bd782515b5b3b62",
+   "sha256": "0zyspn9rqfs3hkq8qx0q1w5qiv30ignbmycyv0vn3a6q7a5fsnhx"
+  }
+ },
+ {
+  "ename": "helm-hatena-bookmark",
+  "commit": "3e9335ad16d4151dd4970c4a3ad1fee9a84404fa",
+  "sha256": "14091zrp4vj7752rb5s3pkyvrrsdl7iaj3q9ys8rjmbsjwcv30id",
+  "fetcher": "github",
+  "repo": "masutaka/emacs-helm-hatena-bookmark",
+  "unstable": {
+   "version": [
+    20190609,
+    1455
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "10b8bfbd7fc4c3f503b2bc01f0c062dac128059e",
+   "sha256": "17f7y7bw15y3x30j7b3ymp3gpnszfvnf8hmlgc1mkwafxvzv06i1"
+  },
+  "stable": {
+   "version": [
+    2,
+    4,
+    3
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "10b8bfbd7fc4c3f503b2bc01f0c062dac128059e",
+   "sha256": "17f7y7bw15y3x30j7b3ymp3gpnszfvnf8hmlgc1mkwafxvzv06i1"
+  }
+ },
+ {
+  "ename": "helm-hayoo",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "06nbilb6vfa8959ss5d06zbcwqxlbyi3cb5jnbdag0jnpxvv1hqb",
+  "fetcher": "github",
+  "repo": "markus1189/helm-hayoo",
+  "unstable": {
+   "version": [
+    20151014,
+    651
+   ],
+   "deps": [
+    "haskell-mode",
+    "helm",
+    "json"
+   ],
+   "commit": "dd4c0c8c87521026edf1b808c4de01fa19b7c693",
+   "sha256": "08pfzs030d8g5s7vkpgicz4srp5cr3xpd84lhrr24ncrhbszxar9"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    5
+   ],
+   "deps": [
+    "haskell-mode",
+    "helm",
+    "json"
+   ],
+   "commit": "f49a77e8b8704bb7eb0d1097eefb8010a6617664",
+   "sha256": "1imfzz6cfdq7fgrcgrafy2nln929mgh31vybk9frm7a9jpamqdxp"
+  }
+ },
+ {
+  "ename": "helm-helm-commands",
+  "commit": "f8bd33d5d5c8653df5373984d01c3ec87b30c51b",
+  "sha256": "0dq9p37i5rrp2nb1vhqzzqfmdg11va2xr3yz8hdxpwykm1ldqdcf",
+  "fetcher": "github",
+  "repo": "vapniks/helm-helm-commands",
+  "unstable": {
+   "version": [
+    20130902,
+    1748
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "3a05aa19c976501343ad9ae630a36810921a85f6",
+   "sha256": "05ksfx54ar2j4mypzwh0gfir8r26s4f1i4xw319q5pa1y2100cpn"
+  }
+ },
+ {
+  "ename": "helm-hoogle",
+  "commit": "8ccc21c2acc76a6794aee94902b1bc4c14119901",
+  "sha256": "0vhk4vwqfirdm5d0pppplfpqyc2sfj6jybhzp9n1w8xgrh2d1c0x",
+  "fetcher": "github",
+  "repo": "jwiegley/helm-hoogle",
+  "unstable": {
+   "version": [
+    20161027,
+    534
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "73969a9d46d2121a849a01a9f7ed3636d01f7bbc",
+   "sha256": "043bddm6lldl6wkifr1plqip7laai771z1a1l0x2h35l3g8c64h0"
+  }
+ },
+ {
+  "ename": "helm-hunks",
+  "commit": "d61cbe53ad42f2405a66de9f551f5b870a60709f",
+  "sha256": "1fhb9sf7fpz3f3ylc906w5xa4zzfr0gix6m7zc4c8qmz33zbhbp5",
+  "fetcher": "github",
+  "repo": "torgeir/helm-hunks.el",
+  "unstable": {
+   "version": [
+    20171217,
+    1933
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "6392bf716f618eac23ce81140aceb0dfacb9c6d0",
+   "sha256": "1ih2pgyhshv8nl7hhchd4h0pbjgj45irp5dy1fq2gy05v4rn7wi4"
+  }
+ },
+ {
+  "ename": "helm-idris",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "04f1963ksbjdza1syajb5vkwwsc9gzk0az6c1m1zgvsianrq4rd9",
+  "fetcher": "github",
+  "repo": "david-christiansen/helm-idris",
+  "unstable": {
+   "version": [
+    20141202,
+    1757
+   ],
+   "deps": [
+    "helm",
+    "idris-mode"
+   ],
+   "commit": "a2f45d6817974f318b55ad9b7fd19d5df132d47e",
+   "sha256": "0128nrhwyzslzl0l7wcjxn3dlx3h1sjmwnbbnp2fj4bjk7chc59q"
+  }
+ },
+ {
+  "ename": "helm-img",
+  "commit": "e0ea97a55f8f4183d375424c94705f372189d6ed",
+  "sha256": "0sq9l1wgm97ppfc45w3bdcv0qq5m85ygnanv1bdcp8bxbdl4vg0q",
+  "fetcher": "github",
+  "repo": "l3msh0/helm-img",
+  "unstable": {
+   "version": [
+    20151224,
+    2321
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "aa3f8a5dce8d0413bf07584f07153a39015c2bfc",
+   "sha256": "0py4xs27z2jvg99i6qaf2ccz0mvk6bb9cvdyz8v8ngmnj3rw2vla"
+  }
+ },
+ {
+  "ename": "helm-img-tiqav",
+  "commit": "f6a948f91dc58ce565e54967ab75fe572f37f616",
+  "sha256": "1m083hiih2rpyy8i439745mj4ldqy85fpnvms8qnv3042b8x35y0",
+  "fetcher": "github",
+  "repo": "l3msh0/helm-img-tiqav",
+  "unstable": {
+   "version": [
+    20151224,
+    2322
+   ],
+   "deps": [
+    "helm-img"
+   ],
+   "commit": "33a7e9508bc8f37d53320b56c92b53d321a57bb0",
+   "sha256": "04vdin0n3514c8bycdjrwk3l6pkarrwanlklnm75315b91nkkbcp"
+  }
+ },
+ {
+  "ename": "helm-ispell",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "14slvcjyqd1ryymh63an7r2z1882dybwpq73bb50xkwrk7rs0389",
+  "fetcher": "github",
+  "repo": "emacsorphanage/helm-ispell",
+  "unstable": {
+   "version": [
+    20151231,
+    853
+   ],
+   "deps": [
+    "helm-core"
+   ],
+   "commit": "cb735695ab3a0e66c123c2f3f3e8911fb1c2d5fc",
+   "sha256": "04ddjdia09y14gq4h6m8g6aiwkqvdxp66yjx3j5dh2xrkyxhlxpz"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "helm-core"
+   ],
+   "commit": "640723ace794d21b8a5892012db99f963149415b",
+   "sha256": "0bz2ngw816jvpw1a10j31y5hf1knz0mzz60l073h33qci11jbwid"
+  }
+ },
+ {
+  "ename": "helm-itunes",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "0zi4wyraqkjwp954pkng8b23giv1q9618apd9v3dczsvlmaar9hf",
+  "fetcher": "github",
+  "repo": "anschwa/helm-itunes",
+  "unstable": {
+   "version": [
+    20151013,
+    648
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "966de755a5aadbe02311a6cef77bd4790e84c263",
+   "sha256": "1czgf5br89x192g3lh3x2n998f79hi1n2f309ll264qnl35kv14w"
+  }
+ },
+ {
+  "ename": "helm-j-cheatsheet",
+  "commit": "681b43eb224942155b97181bbb78bcd295347d04",
+  "sha256": "0lppzk60vl3ps9fqnrh020awiy5w46gwlb6d91pr889x24ryphmm",
+  "fetcher": "github",
+  "repo": "abo-abo/helm-j-cheatsheet",
+  "unstable": {
+   "version": [
+    20170217,
+    829
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "6c47e7162b9ba2de4b41221d01180146973d860b",
+   "sha256": "0ayv6aqmwjy95gc9cpyx0s71486rvlmn04iwgfn43mr192c38y9p"
+  }
+ },
+ {
+  "ename": "helm-jira",
+  "commit": "b91a22c2117403e278a8116ea1180bed736ae1e3",
+  "sha256": "1fb2hk97zlr30gzln8b5x7xc3v119ki8kbiyh7shxnaqx7dy1ihs",
+  "fetcher": "github",
+  "repo": "DeX3/helm-jira",
+  "unstable": {
+   "version": [
+    20180802,
+    815
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "75d6ed5bd7a041fa8c1adb21cbbbe57b5a7c7cc7",
+   "sha256": "08cczc4jnkdgvzs0s3wq2dqmhnsvyhpl65dydmi7pmayl7zg6jir"
+  }
+ },
+ {
+  "ename": "helm-js-codemod",
+  "commit": "dd005bfb170df2f0c992043130a5e9588dcf4d77",
+  "sha256": "1m07xh97fjyah8di363yalg9f5g5rfr3k5mbjql3n67lfwgxrz94",
+  "fetcher": "github",
+  "repo": "torgeir/helm-js-codemod.el",
+  "unstable": {
+   "version": [
+    20190921,
+    942
+   ],
+   "deps": [
+    "helm-core",
+    "js-codemod"
+   ],
+   "commit": "29b1b3c441f0d7e450a3c65b5ff9e72023dc6314",
+   "sha256": "15lksdyk5z4xszfsdk290pm6ri5r9c2ki9jxmwppkqpd52w2dxck"
+  }
+ },
+ {
+  "ename": "helm-jstack",
+  "commit": "a92ffbc4de86248729773dd8729e6487bf56fbb0",
+  "sha256": "0giix1rv2jrmdxyg990w90ivl8bvgbbvah6nkpj7gb6vbnm15ldz",
+  "fetcher": "github",
+  "repo": "raghavgautam/helm-jstack",
+  "unstable": {
+   "version": [
+    20150603,
+    422
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "2064f7215dcf4ccbd6a7b8784223251507746da4",
+   "sha256": "0vhqpcv8xi6a6q7n6xxahdzijr1x5s40fvk9nc44q55psbyv627g"
+  }
+ },
+ {
+  "ename": "helm-kythe",
+  "commit": "dd1a6d0b08ad750a0e44ebdf76109d29ab226bd3",
+  "sha256": "1yybpic3jzp3yy8xlfdn2jj12h087vn0lj3mqx6xxj2nxd9q4949",
+  "fetcher": "github",
+  "repo": "MaskRay/emacs-helm-kythe",
+  "unstable": {
+   "version": [
+    20170709,
+    726
+   ],
+   "deps": [
+    "dash",
+    "helm"
+   ],
+   "commit": "eabbef4948f8ec7c7b2fac498e9145dfdb10ca82",
+   "sha256": "1ws7vl0pvznmxb7yj77kfv4l52xkzblhsl68lfkf9cdxcj9g6177"
+  }
+ },
+ {
+  "ename": "helm-lastpass",
+  "commit": "a39f1b0a5b22e91eb9e298949def6c29e7bc5755",
+  "sha256": "0zgq3szds5l3ah39wiacqcc1j0dlbhwm0cjx64j28jx93300kx57",
+  "fetcher": "github",
+  "repo": "xuchunyang/helm-lastpass",
+  "unstable": {
+   "version": [
+    20180722,
+    806
+   ],
+   "deps": [
+    "csv",
+    "helm"
+   ],
+   "commit": "82e1ffb6ae77d9d9e29c398eb013cd20ce963f77",
+   "sha256": "0pri9zsjg0zii7dpsr56dy5204q0mld5wi22iay3kqpiyxghhssv"
+  }
+ },
+ {
+  "ename": "helm-lean",
+  "commit": "42f4d6438c8aeb94ebc1782f2f5e2abd17f0ffde",
+  "sha256": "0j5ax14lhlyd9mpqk1jwh7nfp090kj71r045v2qjfaw2fa23b7si",
+  "fetcher": "github",
+  "repo": "leanprover/lean-mode",
+  "unstable": {
+   "version": [
+    20171102,
+    1454
+   ],
+   "deps": [
+    "dash",
+    "helm",
+    "lean-mode"
+   ],
+   "commit": "65b55b1711fb61129312044d5ac7e6a2c2ee245c",
+   "sha256": "1zmw8950qhry2ixk2ng0pg4j0vwx11nvjlrpab9jg6x47ys9j65n"
+  }
+ },
+ {
+  "ename": "helm-lib-babel",
+  "commit": "d6718da5d8849a8c3ec17188b89a1273cf963047",
+  "sha256": "0ddj6xrhz4n0npplkjmblqb43jnd6fmr4i4vv1cigrgb7zj6bjx4",
+  "fetcher": "github",
+  "repo": "dfeich/helm-lib-babel",
+  "unstable": {
+   "version": [
+    20180510,
+    1324
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "41bc0cdea8a604c6c8dc83ed5066644d33688fad",
+   "sha256": "1jrpaip5v9kzk0rf8wivsq8irdfd39svxd7p3v80cwgrrl7546xj"
+  }
+ },
+ {
+  "ename": "helm-lines",
+  "commit": "b0aee0be5f388a6d778cb22ce5ad930d21c6f521",
+  "sha256": "110y0vdmab4zr3ab6cpf93b6iidxhanq4rh1cfrzqjf7a7xik78h",
+  "fetcher": "github",
+  "repo": "torgeir/helm-lines.el",
+  "unstable": {
+   "version": [
+    20180601,
+    2033
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "3bfe15a60c6405682085ab289de3eb364624c4e9",
+   "sha256": "1fi0khqx35v48s14jr59jp06bpnhx9dy2rdasj2wn1a34jwgd49i"
+  }
+ },
+ {
+  "ename": "helm-lobsters",
+  "commit": "6247e3786131e5b2a7824804e49927ed65d266d5",
+  "sha256": "0dkb78n373kywxj8zba2s5a2g85vx19rdswv9i78xjwv1lqh8cpp",
+  "fetcher": "github",
+  "repo": "julienXX/helm-lobste.rs",
+  "unstable": {
+   "version": [
+    20150213,
+    1546
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "53c5b42baf72776dcba891fc3d7cd7d47721e9b0",
+   "sha256": "1ic0pcr7cfrfalb7760viixz5gfdg5hfazzwfhhw08vx44xx0jk4"
+  }
+ },
+ {
+  "ename": "helm-ls-git",
+  "commit": "b487b4c0db9092bb7e32aad9265b79a9d18c8478",
+  "sha256": "08rsy9479nk03kinjfkxddrq6wi4sx2a0wrz37cl2q517qi7sibj",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-ls-git",
+  "unstable": {
+   "version": [
+    20191127,
+    510
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "18c53b62bc758b9d8ad4e94a94f58d143ccb29db",
+   "sha256": "0r4dj6422g2zsbm2kig369j39lw4d68zpcr2xr02p02sfyhg1c0f"
+  },
+  "stable": {
+   "version": [
+    1,
+    9,
+    1
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "7b7b6dc2554603ad98412927f84a803625069ab3",
+   "sha256": "1s748a5abj58hd7cwzfggfnnmyzhj04gpbqqwqmskn8xlsq5qcdi"
+  }
+ },
+ {
+  "ename": "helm-ls-hg",
+  "commit": "03a22c9ec281330c4603aec6feb04cf580dee340",
+  "sha256": "0ca0xn7n8bagxb504xgkcv04rpm1vxhx2m77biqrx5886pwl25bh",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-ls-hg",
+  "unstable": {
+   "version": [
+    20150909,
+    543
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "61b91a22fcfb62d0fc56e361ec01ce96973c7165",
+   "sha256": "1msrsqiwk7bg5gry5cia8a6c7ifymfyn738hk8g2qwzzw4vkxxcs"
+  },
+  "stable": {
+   "version": [
+    1,
+    8,
+    0
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "61b91a22fcfb62d0fc56e361ec01ce96973c7165",
+   "sha256": "1msrsqiwk7bg5gry5cia8a6c7ifymfyn738hk8g2qwzzw4vkxxcs"
+  }
+ },
+ {
+  "ename": "helm-ls-svn",
+  "commit": "be27e728327016b819535ef8cae10020e5a07c2e",
+  "sha256": "10rbplwagmwp8lvhandzlinnzl1vcsvdlnjk9jpj3nw42x9wahx4",
+  "fetcher": "github",
+  "repo": "emacsmirror/helm-ls-svn",
+  "unstable": {
+   "version": [
+    20190316,
+    2203
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "a6043e1187282f649e2cb9f0e722a42daf41294b",
+   "sha256": "0jh3q2nx3hn6v1qvip5sbfsvf9zy74ppn1rl037d0hlssh6qir9j"
+  }
+ },
+ {
+  "ename": "helm-lsp",
+  "commit": "67942b34975015dd6f2b5f6b43829cc13b1832c6",
+  "sha256": "0hzwz243n45xcm3rnzmd6z8zrqy9660fy0l8mb940960cjzsxf3m",
+  "fetcher": "github",
+  "repo": "emacs-lsp/helm-lsp",
+  "unstable": {
+   "version": [
+    20200429,
+    1457
+   ],
+   "deps": [
+    "dash",
+    "helm",
+    "lsp-mode"
+   ],
+   "commit": "6b5ce182d7c94c62b55b8f7d0c7e643b2c30e560",
+   "sha256": "0f6a26h1n6h0x3dal40180w3vb7gz3h8qwxvr3b0zq4f7byikisb"
+  }
+ },
+ {
+  "ename": "helm-lxc",
+  "commit": "7a7717154a657bb7c27b25579ea2c1b31b5c0b5f",
+  "sha256": "0mhxbs99isbvls34g0415iy3fry7kanala6624gp5l5isbmn95rm",
+  "fetcher": "github",
+  "repo": "montag451/helm-lxc",
+  "unstable": {
+   "version": [
+    20200323,
+    816
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "lxc-tramp"
+   ],
+   "commit": "37fe2d7ed97967edf59a3b68b1434910516ae24f",
+   "sha256": "1xnkwmdcdjfvslahhslw2xnlcym9fvb3m8384c455bas6s180qxh"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "lxc-tramp"
+   ],
+   "commit": "02812daf09d5ffb02abef7a8e0fa1f7b7c472d67",
+   "sha256": "14x69laf6mfz766w6lrzj5a430jr0lrilk60ywc6i1wlpcs2v10v"
+  }
+ },
+ {
+  "ename": "helm-make",
+  "commit": "0f25f066c60d4caff1fbf885bc944cac47515ec8",
+  "sha256": "1r6jjy1rlsii6p6pinbz7h6gcw4vmcycd3vj338bfbnqp5rrf2mc",
+  "fetcher": "github",
+  "repo": "abo-abo/helm-make",
+  "unstable": {
+   "version": [
+    20200228,
+    1742
+   ],
+   "commit": "a52b3a34ade00e695a412bc0c5873d4f4d22c323",
+   "sha256": "1jqihwh24f190zsc3a2xc7ja6j6q3nl742a0m9d6fiw28aijg34f"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "helm",
+    "projectile"
+   ],
+   "commit": "6558a79d20d04465419b312da198190be6832647",
+   "sha256": "17ls0bplnja2qvg3129x2irgsgs7l4bjj0qi7b9z16i6knjkwfya"
+  }
+ },
+ {
+  "ename": "helm-migemo",
+  "commit": "ce6eb840368f8cbee66dc061478d5096b9dacb68",
+  "sha256": "1cjvb1lm1fsg5ky63fvrphwl5a7r7xf6qzb4mvl06ikj8hv2h33x",
+  "fetcher": "github",
+  "repo": "emacs-jp/helm-migemo",
+  "unstable": {
+   "version": [
+    20151010,
+    356
+   ],
+   "deps": [
+    "cl-lib",
+    "helm-core",
+    "migemo"
+   ],
+   "commit": "66c6a19d07c6a385daefd2090d0709d26b608b4e",
+   "sha256": "0gzlprf5js4y3vzkf7si2xc7ai5j97b5cqrs002hyjj5ij4f2vix"
+  },
+  "stable": {
+   "version": [
+    1,
+    22
+   ],
+   "deps": [
+    "cl-lib",
+    "helm-core",
+    "migemo"
+   ],
+   "commit": "2d964309a5415cf47f5154271e6fe7b6a7fffec7",
+   "sha256": "03588hanfa20pjp9w1bqy8wsf5x6az0vfq0bmcnr4xvlf6fhkyxs"
+  }
+ },
+ {
+  "ename": "helm-mode-manager",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "04yhqbb9cliv1922b0abpc1wrladvhyfmwn8ifqfkzaks4067rhl",
+  "fetcher": "github",
+  "repo": "istib/helm-mode-manager",
+  "unstable": {
+   "version": [
+    20151124,
+    938
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "5d9c3ca4f8205d07ff4e03c4c3e88f596751c1fc",
+   "sha256": "1lbxb4vnnv6s46m90qihkj99qdbdylwncwaijjfd7i2kap2ayawh"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "1fc1d65a27bc57d3a5bbd359f3eb77a6353fa4a5",
+   "sha256": "1srx5f0s9x7zan7ayqd6scxfhcvr3nkd4yzs96hphd87rb18apzk"
+  }
+ },
+ {
+  "ename": "helm-mt",
+  "commit": "e726bf0b9b3f371b21f1f0d75175e0dda62f6fb0",
+  "sha256": "04hx8cg8wmm2w8g942nc9mvm12ammmjnx4k61ljrq76smd8s3x2a",
+  "fetcher": "github",
+  "repo": "dfdeshom/helm-mt",
+  "unstable": {
+   "version": [
+    20160918,
+    452
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "multi-term"
+   ],
+   "commit": "d2bff4100118483bc398c56d0ff095294209265b",
+   "sha256": "1wci63y0vjvrvrylkhhrz8p9q0ml6la5cpj4rx5cwin9rkmislm6"
+  },
+  "stable": {
+   "version": [
+    0,
+    9
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "multi-term"
+   ],
+   "commit": "d2bff4100118483bc398c56d0ff095294209265b",
+   "sha256": "1wci63y0vjvrvrylkhhrz8p9q0ml6la5cpj4rx5cwin9rkmislm6"
+  }
+ },
+ {
+  "ename": "helm-mu",
+  "commit": "63ee2e2aa622c96993c1b705d0fd223d6b36fd0f",
+  "sha256": "0pydp6scj5icaqfp3dp5h0q1y2i7z9mfyw1ll6iphsz9qh3x2bj2",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-mu",
+  "unstable": {
+   "version": [
+    20190819,
+    1311
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "481964fb26c59ea280a1ec7bce192d724ddf7d12",
+   "sha256": "08cszx5iqr65sz66ank722c1kdvjff2k7kvhxdilhf3gb6f8ph9p"
+  }
+ },
+ {
+  "ename": "helm-navi",
+  "commit": "e5ffbc25c0eb30b9c96594d50f47cd0383aa8ebc",
+  "sha256": "0v3amm15pwja2y7zg92hsfhp3scmswwl0q0slg33g11rvj26iiks",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-navi",
+  "unstable": {
+   "version": [
+    20200401,
+    904
+   ],
+   "deps": [
+    "helm",
+    "helm-org",
+    "navi-mode",
+    "s"
+   ],
+   "commit": "9bba79119edd8959d26484326c2f6868b7d942c0",
+   "sha256": "136shiqwr7k95gqywrlqqykx1pgpvyjbfzggwj7q1akqjslxfffn"
+  }
+ },
+ {
+  "ename": "helm-nixos-options",
+  "commit": "6846c7d86e70a9dd8300b89b61435aa7e146be96",
+  "sha256": "1nsi4hfw53iwn29fp33dkri1c6w8kdyn4sa0yn2fi6144ilmq933",
+  "fetcher": "github",
+  "repo": "travisbhartwell/nix-emacs",
+  "unstable": {
+   "version": [
+    20151013,
+    2309
+   ],
+   "deps": [
+    "helm",
+    "nixos-options"
+   ],
+   "commit": "977b9a505ffc8b33b70ec7742f90e469b3168297",
+   "sha256": "07vidk3bnby1ch51i67llfdx2q8xc4ax5hvlrc3f72y9gkcpir4x"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "helm",
+    "nixos-options"
+   ],
+   "commit": "5fc8fa29bea9dd8e9c822af92f9bc6ddc223635f",
+   "sha256": "1lm7rkgf7q5g4ji6v1masfbhxdpwni8d77dapsy5k9p73cr2aqld"
+  }
+ },
+ {
+  "ename": "helm-notmuch",
+  "commit": "98667b3aa43d3e0f6174eeef82acaf71d7019aac",
+  "sha256": "1ixdc1ba4ygxl0lpg6ijk06dgj2hfv5p5k6ivq60ss0axyisnnv0",
+  "fetcher": "github",
+  "repo": "xuchunyang/helm-notmuch",
+  "unstable": {
+   "version": [
+    20190320,
+    1048
+   ],
+   "deps": [
+    "helm",
+    "notmuch"
+   ],
+   "commit": "97a01497e079a7b6505987e9feba6b603bbec288",
+   "sha256": "1k038dbdpaa411gl4071x19fklhnizhr346plxw23lsnxir9dhqc"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "deps": [
+    "helm",
+    "notmuch"
+   ],
+   "commit": "97a01497e079a7b6505987e9feba6b603bbec288",
+   "sha256": "1k038dbdpaa411gl4071x19fklhnizhr346plxw23lsnxir9dhqc"
+  }
+ },
+ {
+  "ename": "helm-open-github",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "1lqjaprgybs4svnrgxvnbbzrkibgkf1zvhbg4ipiljz7h1byzqs7",
+  "fetcher": "github",
+  "repo": "emacsorphanage/helm-open-github",
+  "unstable": {
+   "version": [
+    20170220,
+    159
+   ],
+   "deps": [
+    "gh",
+    "helm-core"
+   ],
+   "commit": "2f03d97552a1233db7694116d5f80ecde7612756",
+   "sha256": "1nzi2m23mqvxkpa7wsd2j0rwvlv5pj0mcaz2ypgfd023k2vh9is1"
+  },
+  "stable": {
+   "version": [
+    0,
+    15
+   ],
+   "deps": [
+    "gh",
+    "helm-core"
+   ],
+   "commit": "553f3ab0fe0a028015e9b6cb7c35fb139ec222fc",
+   "sha256": "1xj5b44nkdvbxhk1bnllqm2qq393w22ccy708prrhiq8fmk53aa8"
+  }
+ },
+ {
+  "ename": "helm-org",
+  "commit": "5c14f6b048ec9983e31fcd3e7cdea45ebe806ce8",
+  "sha256": "02zyc7nssl4zvbbw03fl0nbf4d6qmqxywa2hnfyiwfzn5jzxkl95",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-org",
+  "unstable": {
+   "version": [
+    20200311,
+    633
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "b7a18dfc17e8b933956d61d68c435eee03a96c24",
+   "sha256": "0sbk8c05v28xz7mdpzrlawn5iwf3hkkr1fj8lsi861l4fhjbmcap"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "3a20d0eca0e95943cd9fdd40882cec65628f4a67",
+   "sha256": "0j3xz59hl84asv332fk94j5c06w3ix6b14zrkhxr8vb5ci1b2b1k"
+  }
+ },
+ {
+  "ename": "helm-org-multi-wiki",
+  "commit": "536cf8f9a0b16e6e9bda30de67d0da44bb1b5877",
+  "sha256": "0wk08m6y2rvjbj28h3hqf9w3cgx0ykiv8z6f6kqjfpik8fl2bzbj",
+  "fetcher": "github",
+  "repo": "akirak/org-multi-wiki",
+  "unstable": {
+   "version": [
+    20200505,
+    1053
+   ],
+   "deps": [
+    "dash",
+    "helm",
+    "helm-org",
+    "org-multi-wiki",
+    "org-ql"
+   ],
+   "commit": "8b056103d6f5320563e9fd794a008fd4e0719702",
+   "sha256": "1xmj2p9hcpf1nld0gsnxq12kaljh0p195fy24v23l8ygykhmqw17"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "deps": [
+    "dash",
+    "org-multi-wiki",
+    "org-ql"
+   ],
+   "commit": "80791ea872939df0578dc3a2992a2f7fd5618971",
+   "sha256": "0avg5xwnb3c9ylj9dqdcqmh8kykl98jsr6cl3rrivkj7l47i1rl0"
+  }
+ },
+ {
+  "ename": "helm-org-rifle",
+  "commit": "f39cc94dde5aaf0d6cfea5c98dd52cdb0bcb1615",
+  "sha256": "0hx764vql2qgw9i8qrr3kkn23lw6jx3x604dm1y33ig6a15gy3a3",
+  "fetcher": "github",
+  "repo": "alphapapa/helm-org-rifle",
+  "unstable": {
+   "version": [
+    20200512,
+    1943
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "helm",
+    "s"
+   ],
+   "commit": "263f56d70112f5d0496684c89a2aa07959e0a95f",
+   "sha256": "0pm6va26kadjvbai4qsnjc2bk379w2nk6h3b5f0c2yv3q5na0p49"
+  },
+  "stable": {
+   "version": [
+    1,
+    7,
+    1
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "helm",
+    "s"
+   ],
+   "commit": "263f56d70112f5d0496684c89a2aa07959e0a95f",
+   "sha256": "0pm6va26kadjvbai4qsnjc2bk379w2nk6h3b5f0c2yv3q5na0p49"
+  }
+ },
+ {
+  "ename": "helm-orgcard",
+  "commit": "ce6eb840368f8cbee66dc061478d5096b9dacb68",
+  "sha256": "1a56y8fny7qxxidc357n7l3yi7h66hidhvwhkam8y5wk6k61460p",
+  "fetcher": "github",
+  "repo": "emacs-jp/helm-orgcard",
+  "unstable": {
+   "version": [
+    20151001,
+    1524
+   ],
+   "deps": [
+    "helm-core"
+   ],
+   "commit": "9655ac340d1ccc5f3d1c0f7c49be8dd3556d4d0d",
+   "sha256": "1zyjxrrda7nxxjqczv2p3sfimxy2pq734kf51j6v2y0biclc4bk3"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "helm-core"
+   ],
+   "commit": "9655ac340d1ccc5f3d1c0f7c49be8dd3556d4d0d",
+   "sha256": "1zyjxrrda7nxxjqczv2p3sfimxy2pq734kf51j6v2y0biclc4bk3"
+  }
+ },
+ {
+  "ename": "helm-osx-app",
+  "commit": "fe3d52e2f699d68dfbcdbc2f9a3e3cfd99b79be8",
+  "sha256": "1qxh7hs8z7sp8dnpxirnjnyjynij9j6w5vq9l1w1sy4zbhr49l31",
+  "fetcher": "github",
+  "repo": "xuchunyang/helm-osx-app",
+  "unstable": {
+   "version": [
+    20190717,
+    958
+   ],
+   "deps": [
+    "helm-core"
+   ],
+   "commit": "634ed5d721a20af265825a018e9df3ee6640daee",
+   "sha256": "04p2fp7mp2q1ava457cg1vm6ycag0ig11nmr23fybixdsp1j646j"
+  }
+ },
+ {
+  "ename": "helm-pages",
+  "commit": "7a33cb19b6e71240896bbe5da07ab25f2ee11f0b",
+  "sha256": "1v3w8100invb5wsmm3dyl41pjs7s889s3b1rlr6vlcspa1ncv3wj",
+  "fetcher": "github",
+  "repo": "david-christiansen/helm-pages",
+  "unstable": {
+   "version": [
+    20161121,
+    226
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "51dcb9374d1df9feaae85e60cfb39b970554ecba",
+   "sha256": "0znmj13nshzspysnzrn2x6k9fym21n9ywkpjibljy0s05m36nbs5"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "e334ca3312e51d6fdfa989df5d3ebe683d673c0e",
+   "sha256": "1r2ndmrw5ivawb940j8jnmqzxv46qrzd3cqh9fvxx5yicf020fjf"
+  }
+ },
+ {
+  "ename": "helm-pass",
+  "commit": "4a34e0ab66491540dd0c5b62c7f60684056b16d5",
+  "sha256": "153cj58x2xcmjs2n4fl1jsv8zir4z9jwg1w00ghv70k5j3rwsjkp",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-pass",
+  "unstable": {
+   "version": [
+    20190315,
+    1335
+   ],
+   "deps": [
+    "auth-source-pass",
+    "helm",
+    "password-store"
+   ],
+   "commit": "ed5798f2d83937575e8f23fde33323bca9e85131",
+   "sha256": "0vglaknmir3yv4iwibwn8r40ran8d04gcyp99hx73ldmf3zqpnxv"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "auth-source-pass",
+    "helm",
+    "password-store"
+   ],
+   "commit": "ed5798f2d83937575e8f23fde33323bca9e85131",
+   "sha256": "0vglaknmir3yv4iwibwn8r40ran8d04gcyp99hx73ldmf3zqpnxv"
+  }
+ },
+ {
+  "ename": "helm-perldoc",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "1xl075bg35lc48zxnwbvyr7dqcz8cxk3v87i9v506kqwfmfpiz95",
+  "fetcher": "github",
+  "repo": "emacsorphanage/helm-perldoc",
+  "unstable": {
+   "version": [
+    20200315,
+    1716
+   ],
+   "deps": [
+    "deferred",
+    "helm-core"
+   ],
+   "commit": "6f3526f07f3df3059dbde779f8e681f5f1fee6ea",
+   "sha256": "1g7f2vdvzh9qhk8lviii86w7cb06a60kz6gvv8gnbqx88mndqclq"
+  },
+  "stable": {
+   "version": [
+    0,
+    7
+   ],
+   "deps": [
+    "cl-lib",
+    "deferred",
+    "helm"
+   ],
+   "commit": "18645f2065a07acce2c6b50a2f9d7a2554e532a3",
+   "sha256": "01cj2897hqz02mfz32nxlyyp59iwm0gz1zj11s8ll7pwy9q3r90g"
+  }
+ },
+ {
+  "ename": "helm-perspeen",
+  "commit": "1ee26a57aacbd571da0cfaca2c31eec6ea86a543",
+  "sha256": "07cnsfhph807fqyai3by2c5ml9a40gxkq280f27disf8sc45rg1y",
+  "fetcher": "github",
+  "repo": "jimo1001/helm-perspeen",
+  "unstable": {
+   "version": [
+    20170228,
+    1345
+   ],
+   "deps": [
+    "helm",
+    "perspeen"
+   ],
+   "commit": "7fe2922d85608bfa9e18269fc44181428b8849ff",
+   "sha256": "1m89c95vzmhsvrg5g7ixz5a5ckw2n983x58cwh8rkmaklavacgsy"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "deps": [
+    "helm",
+    "perspeen"
+   ],
+   "commit": "aec145d5196aed1689563d138a2aa37b139e1759",
+   "sha256": "1wv13mvm9149nl9p93znl3d2yfnq4rph440ja07w804cd61qjhq9"
+  }
+ },
+ {
+  "ename": "helm-phpunit",
+  "commit": "96470d7190199bfb13dd54e7e8f5ea50cf0a5039",
+  "sha256": "0anbrzlpmashcklifyvnnf2rwv5fk4x0kbls2dp2db1bliw3rdh6",
+  "fetcher": "github",
+  "repo": "eric-hansen/helm-phpunit",
+  "unstable": {
+   "version": [
+    20160513,
+    853
+   ],
+   "deps": [
+    "helm",
+    "phpunit"
+   ],
+   "commit": "739f26204ad2ba76c25f45e8eab1e5216f7c3518",
+   "sha256": "0wirqnzprfxbppdawfx6ah5rdawgyvl8b4zn2r3zm9mnj9jci4dw"
+  }
+ },
+ {
+  "ename": "helm-posframe",
+  "commit": "a99c37bc50c371aae8ccc27de8120d4773981cf7",
+  "sha256": "16mhi17kl3cgwk7ymzg8crakwrwrzsg5p9ijgrdawa7px2z9ym78",
+  "fetcher": "github",
+  "repo": "tumashu/helm-posframe",
+  "unstable": {
+   "version": [
+    20200512,
+    1146
+   ],
+   "deps": [
+    "helm",
+    "posframe"
+   ],
+   "commit": "b107e64eedef6292c49d590f30d320c29b64190b",
+   "sha256": "09y98ij4wkqh771ahwi3b7nsg6yb2b69n94v3ad41kp4q0c2rscd"
+  }
+ },
+ {
+  "ename": "helm-proc",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "11mh8ny8mhdmp16s21vy9yyql56zxcgmj2aapqs5jy4yad5q62rz",
+  "fetcher": "github",
+  "repo": "markus1189/helm-proc",
+  "unstable": {
+   "version": [
+    20161006,
+    305
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "576d31c2d74ba3897d56e2acd2b0993f52c2547c",
+   "sha256": "11xahzybwh02ds19y6h5hbpqdj278kcb4239vyykdl3wx8p048a7"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    5
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "0a75a86e4f381143134e0cdcd8c84c5b5b0fb2d6",
+   "sha256": "0bgpd50ningqyzwhfinfrn6gqacard5ynwllhg9clq0f683sbck2"
+  }
+ },
+ {
+  "ename": "helm-project-persist",
+  "commit": "98780edaf8b1d97aec9e25d07d93289c90fd5069",
+  "sha256": "1n87kn1n3453mpdj6amyrgivslskmnzdafpspvkz7b0smf9mv2ld",
+  "fetcher": "github",
+  "repo": "Sliim/helm-project-persist",
+  "unstable": {
+   "version": [
+    20151210,
+    1543
+   ],
+   "deps": [
+    "helm",
+    "project-persist"
+   ],
+   "commit": "357950fbac18090985a750e40d5d8b10ee9dcd53",
+   "sha256": "0j54c1kzsjgr05qx25rg3ylawvyw6n6liypiwaas47vpyfswbxhv"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "helm",
+    "project-persist"
+   ],
+   "commit": "df63a21b9118f9639f0f4a336127b4fb8ec6deec",
+   "sha256": "1q7hfj8ldwivhjp9ns5pvsn0ds6pyvl2zhl366c22s6q8jmbr8ik"
+  }
+ },
+ {
+  "ename": "helm-projectile",
+  "commit": "8bc4e3a5af7ba86d277c73a1966a91c87d3d855a",
+  "sha256": "18y7phrvbpdi3cnghwyhh0v1bwm95nwq1lymzf8lrcbmrwcvh36a",
+  "fetcher": "github",
+  "repo": "bbatsov/helm-projectile",
+  "unstable": {
+   "version": [
+    20190731,
+    1538
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "projectile"
+   ],
+   "commit": "5328b74dddcee8d1913803ca8167868831a07463",
+   "sha256": "0a811cblrvc8llpv771b8dppgxs6bwjyvjy3qn2xns4nigvn93s0"
+  },
+  "stable": {
+   "version": [
+    0,
+    14,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "helm",
+    "projectile"
+   ],
+   "commit": "1a90f93732f1a1e8080098d65eadd6a1cd799e31",
+   "sha256": "0lph38p112fridighqcizpsyzjbv7qr3d8prbfj6w6q6gfl6cna4"
+  }
+ },
+ {
+  "ename": "helm-prosjekt",
+  "commit": "6d359ec827573dd8c871c4f23df5d1737f1830e7",
+  "sha256": "019rya3bf13cnval8iz680wby3sqlmqg4nbn0a13l1pkhlnv9fvm",
+  "fetcher": "github",
+  "repo": "abingham/prosjekt",
+  "unstable": {
+   "version": [
+    20140129,
+    717
+   ],
+   "deps": [
+    "helm",
+    "prosjekt"
+   ],
+   "commit": "a864a8be5842223043702395f311e3350c28e9db",
+   "sha256": "1m8zvrv5aws7b0dffk8y6b5mncdk2c4k90mx69jys10fs0gc5hb3"
+  }
+ },
+ {
+  "ename": "helm-pt",
+  "commit": "e608f40d00a3b2a80a6997da00e7d04f76d8ef0d",
+  "sha256": "1pvipzjw9h668jkbwwkmphvp806fs9q4mb2v2bjxpb0f3kn2qk3n",
+  "fetcher": "github",
+  "repo": "ralesi/helm-pt",
+  "unstable": {
+   "version": [
+    20160214,
+    2342
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "8acc52911dad1ed0c3975f134a468762afe0b76b",
+   "sha256": "03ys40rr0pvgp35j5scw9c28j184f1c9m58a3x0c8f0lgyfpssjk"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "03e35e2bb5b683d79897d07acb57ee67009cc6cd",
+   "sha256": "0jm6nnnjyd4kmm1knh0mq3xhnw2hvs3linwlynj8yaliqvlv6brv"
+  }
+ },
+ {
+  "ename": "helm-purpose",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "16c9if636v7l8z5df011vdj4a3ci5kf3rdfk4g9hdbbl639yca79",
+  "fetcher": "github",
+  "repo": "bmag/helm-purpose",
+  "unstable": {
+   "version": [
+    20170114,
+    1636
+   ],
+   "deps": [
+    "helm",
+    "window-purpose"
+   ],
+   "commit": "9ff4c21c1e9ebc7afb851b738f815df7343bb287",
+   "sha256": "1xh6v5xlf1prgk6mrvkc6qa0r0bz74s5f4z3dl7d00chsi7i2m5v"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "helm",
+    "window-purpose"
+   ],
+   "commit": "115a9d612aa07bb6f7f7b18f42b34918699660b9",
+   "sha256": "1jy9l4an2aqynj86pw2qxpzw446xm376n2ykiz17qlimqbxhwkgz"
+  }
+ },
+ {
+  "ename": "helm-pydoc",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "0a2vn7xgvcil8vp40jiljff83hwb2ysb240amd8darxbfxz1j9mi",
+  "fetcher": "github",
+  "repo": "emacsorphanage/helm-pydoc",
+  "unstable": {
+   "version": [
+    20160918,
+    542
+   ],
+   "deps": [
+    "helm-core"
+   ],
+   "commit": "85480a29b56dacde425655bc8f5a597c785afdf5",
+   "sha256": "1wrs2d84xzjnsmw255bmnd1wcpwd36m0vyni48aa7661d4dh10x3"
+  },
+  "stable": {
+   "version": [
+    0,
+    7
+   ],
+   "deps": [
+    "cl-lib",
+    "helm-core"
+   ],
+   "commit": "30f1814b5b16db0413ffe74b0d0420b38e153df9",
+   "sha256": "1ik0vllakh73kc2zbgii4sm33n9pj388gaz69j4drz2mik307zvs"
+  }
+ },
+ {
+  "ename": "helm-qiita",
+  "commit": "37331f6cc8a95fd2b2ed5b20be0bcb604ea66dee",
+  "sha256": "1iz2w1901zz3zk9zazikmnkzng5klnvqn4ph1id7liksrcdpdmpm",
+  "fetcher": "github",
+  "repo": "masutaka/emacs-helm-qiita",
+  "unstable": {
+   "version": [
+    20190526,
+    1359
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "5f82010c595f8e122aa3f68148ba8d8ccb1333d8",
+   "sha256": "1vkm2h0ia0gqqjw6cnbyik0fv37zzjwwdzk1cnh7a3s5hsg60i68"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    3
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "5f82010c595f8e122aa3f68148ba8d8ccb1333d8",
+   "sha256": "1vkm2h0ia0gqqjw6cnbyik0fv37zzjwwdzk1cnh7a3s5hsg60i68"
+  }
+ },
+ {
+  "ename": "helm-rage",
+  "commit": "84f831fdc5a0e90c23ac11c79f193f4d3c1ebb04",
+  "sha256": "02pdmkzwnqhf1r0v7b498z5b2il3ng75ykdwgmwd60k6hiygj70x",
+  "fetcher": "github",
+  "repo": "bomgar/helm-rage",
+  "unstable": {
+   "version": [
+    20180118,
+    1532
+   ],
+   "deps": [
+    "dash",
+    "helm",
+    "s"
+   ],
+   "commit": "5d0aefb53d859186181d4bdcfeff7d315339c7b8",
+   "sha256": "0msj3rrv9bwhhwz7r1ayr6qvnxjsq7374j0xfhqbrx49pix4qf3q"
+  }
+ },
+ {
+  "ename": "helm-rails",
+  "commit": "3af52fd266364a81ff42eb6d08389fa549bd6c2c",
+  "sha256": "1iihfsmnkpfp08pldghf3w5k8v5dlmy5ns0l4niwdwp5w8lyjcd6",
+  "fetcher": "github",
+  "repo": "asok/helm-rails",
+  "unstable": {
+   "version": [
+    20130424,
+    1519
+   ],
+   "deps": [
+    "helm",
+    "inflections"
+   ],
+   "commit": "506d9948d45dfbc575c9c4c0d102c1ad2f511e82",
+   "sha256": "0i5ps5yds21bsrx86piy9bdgca95l1farsrbjpqz88ad8pq6xa9c"
+  }
+ },
+ {
+  "ename": "helm-rb",
+  "commit": "7ba8e94755f5a96881bbf4c4ffbff67bec9b804a",
+  "sha256": "14pkrj1rpi2ihpb7c1hx6xwzvc1x7l41lwr9znp5vn7z93i034fr",
+  "fetcher": "github",
+  "repo": "yuutayamada/helm-rb",
+  "unstable": {
+   "version": [
+    20131123,
+    1639
+   ],
+   "deps": [
+    "helm",
+    "helm-ag-r"
+   ],
+   "commit": "4949d646420a9849af234dacdd8eb34a77c662fd",
+   "sha256": "1b74jsr28ldz80mrqz3d1bmykpcprdbhf3fzhc0awd5i5xdnfaid"
+  }
+ },
+ {
+  "ename": "helm-rdefs",
+  "commit": "e1c7a20847513dc1153d54a3a700bc120f71dc6b",
+  "sha256": "0z3nrqrz63j9nxkbxdsjj3z8zhsqlik28iry3j1plgsxq1mhrn0y",
+  "fetcher": "github",
+  "repo": "saidie/emacs-helm-rdefs",
+  "unstable": {
+   "version": [
+    20161130,
+    536
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "cd3a6b3af3015ee58ef30cb7c81c79ebe5fc867b",
+   "sha256": "0ji7ak9pkmw0wxzmw5a1amvn3pkj90v9jv1yi12w388njxn7qsvj"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "cd3a6b3af3015ee58ef30cb7c81c79ebe5fc867b",
+   "sha256": "0ji7ak9pkmw0wxzmw5a1amvn3pkj90v9jv1yi12w388njxn7qsvj"
+  }
+ },
+ {
+  "ename": "helm-recoll",
+  "commit": "0a0d168f96470753c22b92ad863be98d8c421ccd",
+  "sha256": "0pr2pllplml55k1xx9inr3dm90ichg2wb62dvgvmbq2sqdf4606b",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-recoll",
+  "unstable": {
+   "version": [
+    20190729,
+    453
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "219e517dd79a7879414ca36e8de28a159a49c78a",
+   "sha256": "0yjz8g8v839fs42lmmjbm5l4yzkq9npjlb6jxz6nv5j71xvz5lbf"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "8548b157f40f5e7a4940a54abe5ca0016fd9bdee",
+   "sha256": "1a3ja8j9nvddlyr04q1wn60r6pp83fcwmmn54dn0c3m3w5icflcw"
+  }
+ },
+ {
+  "ename": "helm-rg",
+  "commit": "958fbafdcb214f1ec89fd0d84c6600c89890e0cf",
+  "sha256": "0gfq59540q9s6mr04q7dz638zqmqbqmbl1qaczddgmjn4vyjmf7v",
+  "fetcher": "github",
+  "repo": "cosmicexplorer/helm-rg",
+  "unstable": {
+   "version": [
+    20190130,
+    1734
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "helm"
+   ],
+   "commit": "785a80fe5cc87e27c5ea3d00a70049028d9e2847",
+   "sha256": "1cfdnwlgwil7fp228p5sb3jkwrgnhnad4p2m1vl2wn0fjb89dppp"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "helm"
+   ],
+   "commit": "96dcbeb366caa0b158668384113458ee5f7c4dfd",
+   "sha256": "1k9yv9iw694alf5w7555ygk2i1b26i90rqq7ny63a4nd3y5cbs5f"
+  }
+ },
+ {
+  "ename": "helm-rhythmbox",
+  "commit": "8a81c43958308ad8035a9d0b2422fd094adc72f0",
+  "sha256": "0pnm7yvas0q3b38ch5idm7v4ih2fjyfai8217j74xhkpcc2w4g4a",
+  "fetcher": "github",
+  "repo": "mrBliss/helm-rhythmbox",
+  "unstable": {
+   "version": [
+    20160524,
+    1158
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "c92e1ded34ddd4e62e7e9a558259c232e05193fa",
+   "sha256": "1ng73dmligj38xbfdfr8sb69czppks7wfvh5q5xcm2pha828kcwm"
+  }
+ },
+ {
+  "ename": "helm-robe",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "143azbrj32mk0xv0i7wpvwcj4lqvphbjj3rbcpwnx76rywi3iqp7",
+  "fetcher": "github",
+  "repo": "emacsorphanage/helm-robe",
+  "unstable": {
+   "version": [
+    20151209,
+    355
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "6e69543b4ee76c5f8f3f2510c76e6d9aed17a370",
+   "sha256": "1qcx036pgrg4xc1y74amd8jkjylnc0g1c4841cc3fbknnn1ap54g"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "7348d0bc0251b51979554ea678b970fd01c0efe9",
+   "sha256": "163ljqar3vvbavzc8sk6rnf8awyc2rhh2g117fglswich3c8lnqg"
+  }
+ },
+ {
+  "ename": "helm-ros",
+  "commit": "2c9ddf53b4060c33550a445f877aef37dffaeb7e",
+  "sha256": "1q9qqjchkj6anikaamhw998f5aaampc1z7085v9pigg3x11vv9fm",
+  "fetcher": "github",
+  "repo": "davidlandry93/helm-ros",
+  "unstable": {
+   "version": [
+    20160812,
+    1752
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "xterm-color"
+   ],
+   "commit": "92b0b215f6a017f0f57f1af15466cc0b2a5a0135",
+   "sha256": "1fgph8wsm2nakn53zj19r59mirzn25r601rljmdv2xpw5h3axywg"
+  }
+ },
+ {
+  "ename": "helm-rtags",
+  "commit": "3dea16daf0d72188c8b4043534f0833fe9b04e07",
+  "sha256": "1vv6wnniplyls344qzgcf1ivv25c8qilax6sbhvsf46lvrwnr48n",
+  "fetcher": "github",
+  "repo": "Andersbakken/rtags",
+  "unstable": {
+   "version": [
+    20191222,
+    920
+   ],
+   "deps": [
+    "helm",
+    "rtags"
+   ],
+   "commit": "ed229d2e4070cc07ba76e537e8f5f93835ff0710",
+   "sha256": "1jf1mg2pib2rsrn280j2ywmnqgkr5jwmiaqf252jsb7ndq7p5gcr"
+  },
+  "stable": {
+   "version": [
+    2,
+    38
+   ],
+   "deps": [
+    "helm",
+    "rtags"
+   ],
+   "commit": "9687ccdb9e539981e7934e768ea5c84464a61139",
+   "sha256": "1r6l7dgr2ch586zrdi5l8fhdj4qdva8ldz7cjvi2byc2pd2xs8rx"
+  }
+ },
+ {
+  "ename": "helm-rubygems-local",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "134qyqnh9l05lfj0vizlx35631q8ih6cdblrvka3p8i571300ikh",
+  "fetcher": "github",
+  "repo": "hadashiA/helm-rubygems-local",
+  "unstable": {
+   "version": [
+    20130712,
+    111
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "289cb33d41c703af9791d6da46b55f070013c2e3",
+   "sha256": "0s4hb1fvwr9za5gkz8s5w1kh9qjyygz6g59w7vmrg2d8ds2an03d"
+  }
+ },
+ {
+  "ename": "helm-rubygems-org",
+  "commit": "655be547d57d358eff968f42c13dcf4371529a72",
+  "sha256": "04ni03ak53z3rggdgf68qh7ksgcf3s0f2cv6skwjqw7v8qhph6qs",
+  "fetcher": "github",
+  "repo": "neomantic/helm-rubygems-org",
+  "unstable": {
+   "version": [
+    20140826,
+    1156
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "6aaed984f698cbdf9f9aceb0221404563e28764d",
+   "sha256": "1sff8kagyhmwcxf9062il1077d4slvr2kq76abj496610gpb75i0"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "6aaed984f698cbdf9f9aceb0221404563e28764d",
+   "sha256": "1sff8kagyhmwcxf9062il1077d4slvr2kq76abj496610gpb75i0"
+  }
+ },
+ {
+  "ename": "helm-safari",
+  "commit": "553e27a3523ade9dc4951086d9340e8240d5d943",
+  "sha256": "0lvwghcl5w67g0lc97r7hfvca7ss0mysy2mxj9axxbpyiq6fmh0y",
+  "fetcher": "github",
+  "repo": "xuchunyang/helm-safari",
+  "unstable": {
+   "version": [
+    20160404,
+    324
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "664c7f4488829228eed7e90cd53002e14bec555b",
+   "sha256": "1ws5zxanaiaaxpgkcb2914qa8wxp6ml019hfnfcp7amjnajq9pyz"
+  }
+ },
+ {
+  "ename": "helm-sage",
+  "commit": "09760a7f7b3cff6551c394fc7b2298567ca88eb0",
+  "sha256": "1vnq15fjaap0ai7dadi64sm4415xssmahk2j7kx45sasy4qaxlbj",
+  "fetcher": "github",
+  "repo": "stakemori/helm-sage",
+  "unstable": {
+   "version": [
+    20160514,
+    745
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "sage-shell-mode"
+   ],
+   "commit": "f14e9281d8f2162df7d8f9c2ad9ad1248a24803b",
+   "sha256": "0padb6mncgc52wib3dgvdc9r4dp591gf8nblbfnsnxx4zjrcwawb"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    4
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "sage-shell-mode"
+   ],
+   "commit": "b42b4ba5fd1b17c4b54c30376a053281686beeb8",
+   "sha256": "1s6aw1viyzhhrfiazzi82n7bkvshp7clwi6539660m72lfwc5zdl"
+  }
+ },
+ {
+  "ename": "helm-selected",
+  "commit": "acc087661e614d9f30c23fe4a65c020bd3656a29",
+  "sha256": "0ksyh0r59y4abwls6v6v519yxmcjnaryfnxlam48fqqfrsxv1j0h",
+  "fetcher": "github",
+  "repo": "takaxp/helm-selected",
+  "unstable": {
+   "version": [
+    20171223,
+    210
+   ],
+   "deps": [
+    "helm",
+    "selected"
+   ],
+   "commit": "a9c769998bc56373d19f0ec9cbbbb4bd89a43c2d",
+   "sha256": "1n6sp6bhlz01b1d87cgrgxhap0ch1bkh7fl45dzidx5fjz9lccdf"
+  }
+ },
+ {
+  "ename": "helm-sheet",
+  "commit": "010c5c5e6ad6e7b05e63936079229739963bf970",
+  "sha256": "0lx70l5gq43hckgdfna8s6wx287sw5ms9l1z3n6vg2x8nr9m61kc",
+  "fetcher": "github",
+  "repo": "yasuyk/helm-sheet",
+  "unstable": {
+   "version": [
+    20130630,
+    1239
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "d360b68d0ddb09aa1854e7b2f3cb39caeee26463",
+   "sha256": "00wnqcgpf4hqdnqj5zrizr4s0pffb93xwya8k5c3rp4plncrcdzx"
+  }
+ },
+ {
+  "ename": "helm-slime",
+  "commit": "c35d43a7a8219de4a7f675147f598966aaecb9db",
+  "sha256": "0qv4c1dd28zqbjxpshga967szrh75a4k51n4x86xkbax7ycca4hh",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-slime",
+  "unstable": {
+   "version": [
+    20191016,
+    1601
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "slime"
+   ],
+   "commit": "7886cc49906a87ebd73be3b71f5dd6b1433a9b7b",
+   "sha256": "1g9fnp818d677xhx2m4820742fyblvmnsygmkdb5530lacdaksh2"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "slime"
+   ],
+   "commit": "e0dbf04d447098a1d074bc04e125764ff82091b7",
+   "sha256": "0mrpjhpijdrq353fnfvdj9l9xfsz390qlcvifcair9732ma7i8l0"
+  }
+ },
+ {
+  "ename": "helm-sly",
+  "commit": "4dbeeaca23d938116bf23177a71f38b16276d2c6",
+  "sha256": "1ikrn07b2glyix6n08v6yydiisi17acfmv1cpbq6is5f3zwqcgmx",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-sly",
+  "unstable": {
+   "version": [
+    20191104,
+    1054
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "sly"
+   ],
+   "commit": "b1567c27c0b421b9e25e350f0c83b9c7fe0fee6b",
+   "sha256": "0ihcqysz5cvn94rrvjz5l4whzmxcjrfrinas180x8iycpyvzkwk6"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "sly"
+   ],
+   "commit": "9a4d91ba738ca06ceab2dea3c1e09fd45a67d488",
+   "sha256": "0b2dx9nzh5233lkix3lz81c9cv626lk2hjpcjiikwvyp6y0q92ys"
+  }
+ },
+ {
+  "ename": "helm-smex",
+  "commit": "85568bd732da952053148e07b95e53f7caf5f62c",
+  "sha256": "02jvq2hyq4wwc9v8gaxr9vkjldc60khdbjf71p8w2iny5w3k0jbj",
+  "fetcher": "github",
+  "repo": "ptrv/helm-smex",
+  "unstable": {
+   "version": [
+    20171004,
+    2008
+   ],
+   "deps": [
+    "helm",
+    "smex"
+   ],
+   "commit": "2269375dfa452b88b5170d1a5d5849ebb2c1e413",
+   "sha256": "0n2ki7g0hygsq4bi5zkhp3v772ld7niiajfznxmv11dgn949a52s"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "helm",
+    "smex"
+   ],
+   "commit": "2269375dfa452b88b5170d1a5d5849ebb2c1e413",
+   "sha256": "0n2ki7g0hygsq4bi5zkhp3v772ld7niiajfznxmv11dgn949a52s"
+  }
+ },
+ {
+  "ename": "helm-spaces",
+  "commit": "8c2ffb50643223b68a62fab348cd5aba24ce92e6",
+  "sha256": "0hdvkk173k98iycvii5xpbiblx044125pl7jyz4kb8r1vvwcv791",
+  "fetcher": "github",
+  "repo": "yasuyk/helm-spaces",
+  "unstable": {
+   "version": [
+    20161001,
+    1409
+   ],
+   "deps": [
+    "helm-core",
+    "spaces"
+   ],
+   "commit": "877e2b5178926308d6a7c2a37477bb12c33a96d4",
+   "sha256": "1cz8aw6zprzfalagma7jmbycwll2chk2l4n5hkgqyhakdfm2ryzm"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "helm-core",
+    "spaces"
+   ],
+   "commit": "877e2b5178926308d6a7c2a37477bb12c33a96d4",
+   "sha256": "1cz8aw6zprzfalagma7jmbycwll2chk2l4n5hkgqyhakdfm2ryzm"
+  }
+ },
+ {
+  "ename": "helm-spotify",
+  "commit": "1bf9eda57cba4742656f37a621b6d394483ff638",
+  "sha256": "1rzvxnaqh8bm78qp0rhpqs971pc855qrq589r3s8z3gpqzmwlnmf",
+  "fetcher": "github",
+  "repo": "krisajenkins/helm-spotify",
+  "unstable": {
+   "version": [
+    20160905,
+    2147
+   ],
+   "deps": [
+    "helm",
+    "multi"
+   ],
+   "commit": "f7a62d1ff88e3127de9be7cd3e818b0a92268ab3",
+   "sha256": "0q3h84zj63b1rnlvmsznrpmvvf0qbic5yb9xkdjcz4jz4h8p3h1w"
+  }
+ },
+ {
+  "ename": "helm-spotify-plus",
+  "commit": "306aa9fd29f1495eef71476dfcba3b494223b0a9",
+  "sha256": "1f39g2kgx4jr7ahhhswkrj0m5rbsykvkgh00d7jy8czpp8r4dl20",
+  "fetcher": "github",
+  "repo": "wandersoncferreira/helm-spotify-plus",
+  "unstable": {
+   "version": [
+    20190913,
+    2236
+   ],
+   "deps": [
+    "helm",
+    "multi"
+   ],
+   "commit": "c3922ec368250965e483876cde5880d88a40a71b",
+   "sha256": "12zl775l7zikv268vypnb56ly2h0y3sf5wxv5rc2amnmwgrikvra"
+  }
+ },
+ {
+  "ename": "helm-sql-connect",
+  "commit": "58347c583dcf4a915c1af1262a5348755f28fe03",
+  "sha256": "1av42580c68iq694yr532hhcq0jn7m58x3cib4ix5c8b4ljvnnvd",
+  "fetcher": "github",
+  "repo": "eric-hansen/helm-sql-connect",
+  "unstable": {
+   "version": [
+    20170319,
+    1251
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "5aead55b6f8636140945714d8c332b287ab9ef10",
+   "sha256": "037gri2r9y135av8gbgi9d8k90qs8jlax0bimzcbwdkyhibhzrcp"
+  }
+ },
+ {
+  "ename": "helm-switch-shell",
+  "commit": "d585f1f9d6eaccf5150b0e7db530b61beb4ebcf4",
+  "sha256": "1x1qp9l9ahx85m6yqnf00ids1xlm75l6v8rdig77kzzmazpvc707",
+  "fetcher": "github",
+  "repo": "jamesnvc/helm-switch-shell",
+  "unstable": {
+   "version": [
+    20191223,
+    1418
+   ],
+   "deps": [
+    "dash",
+    "helm",
+    "s"
+   ],
+   "commit": "690e20f0d95f81151b34cb424a201f39d93eb430",
+   "sha256": "08p9dfjkf1ssnzd8n69a10mkvdvm8w229fy32z95dh9vbxsp7aqv"
+  }
+ },
+ {
+  "ename": "helm-swoop",
+  "commit": "7a4e84530b4607a277fc3b678fe7b34b1c5e3b4f",
+  "sha256": "0dbn0mzzsjhpxh0dpxrrzqam9hl2sjsp1izq2qv3z11iv2hylzx4",
+  "fetcher": "github",
+  "repo": "emacsorphanage/helm-swoop",
+  "unstable": {
+   "version": [
+    20200515,
+    417
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "2efc552591102ab8b4408ad60a3c4be991bb8e93",
+   "sha256": "0fbahbcgdcbmnhv3m2pmxy8n01qab5x0468bikygs80krch84qh5"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "c5ec1f3acfb07155273c2de021f3521e198e4a9d",
+   "sha256": "0k0ns92g45x8dbymqpl6ylk5mj3wiw2h03f48q5cy1z8in0c4rjd"
+  }
+ },
+ {
+  "ename": "helm-system-packages",
+  "commit": "0c46cfb0fcda0500e15d04106150a072a1a75ccc",
+  "sha256": "01mndx2zzh7r7gmpn6gd1vy1w3l6dnhvgn7n2p39viji1r8b39s4",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-system-packages",
+  "unstable": {
+   "version": [
+    20200502,
+    751
+   ],
+   "deps": [
+    "helm",
+    "seq"
+   ],
+   "commit": "4e257fc84472d3d85ee2b413ca8a45aa0fd0118c",
+   "sha256": "1p89zggsqhif6dadajapq8vr9ffxbzq7v8sv8iaxyn0cg2sn6fdl"
+  },
+  "stable": {
+   "version": [
+    1,
+    10,
+    1
+   ],
+   "deps": [
+    "helm",
+    "seq"
+   ],
+   "commit": "2b4636dc861ffe2c4a2025b67ab40460f85b9563",
+   "sha256": "01by0c4lqi2cw8xmbxkjw7m9x78zssm31sx4hdpw5j35s2951j0f"
+  }
+ },
+ {
+  "ename": "helm-systemd",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "1m1by9i37ban3zkznyamp5vxizj8zsz06fdscdhmky1grf6ri4r8",
+  "fetcher": "github",
+  "repo": "Lompik/helm-systemd",
+  "unstable": {
+   "version": [
+    20180131,
+    434
+   ],
+   "deps": [
+    "helm",
+    "with-editor"
+   ],
+   "commit": "96f5cd3ee3412539c2f8d145201f47c4f8e53b4f",
+   "sha256": "0wyabh76q2lighd7qxpkzp35fkblxlz8g7p4lpgfwvjid0ixmnvq"
+  }
+ },
+ {
+  "ename": "helm-tail",
+  "commit": "74b235c2ecf8c8f8206670bca3b915deb4b77c2b",
+  "sha256": "0sw97fzpnrk335l3vjaj3nw87cajhzwsjsxx16r0x6npbiv51wd4",
+  "fetcher": "github",
+  "repo": "akirak/helm-tail",
+  "unstable": {
+   "version": [
+    20181124,
+    439
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "1f5a6355aa3bdb00b9b0bc93db29c17f0d6701e3",
+   "sha256": "1ad0khw26m22xpdv0iyg5gac92i8m455sznsfh16vxaa98gq0c4q"
+  }
+ },
+ {
+  "ename": "helm-taskswitch",
+  "commit": "3602b1f7b9a75cc82c4bde9ea12b2509465db30f",
+  "sha256": "01yvdbwlixif670f4lffpsk9kvlhgrmh95jw0vc568x0bd3j2a02",
+  "fetcher": "github",
+  "repo": "bdc34/helm-taskswitch",
+  "unstable": {
+   "version": [
+    20190304,
+    1414
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "59f7cb99defa6e6bf6e7d599559fa8d5786cf8a9",
+   "sha256": "0bx9fvw0jv1f4xdvf94lgxdzhvx2lpab4gyx71w6dg5wvd5cxzq0"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    4
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "de494738f8e5f7d6e681199dd3aad91e5bdb7691",
+   "sha256": "01a4z0x5p94hglcnakxdgi4cq0cvz48c3dg58b7y2cq1nwjdw8d7"
+  }
+ },
+ {
+  "ename": "helm-themes",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "15qs23f467j99wybjd0n6dacgik5ibf96jn00j9fip55v8rp66gj",
+  "fetcher": "github",
+  "repo": "emacsorphanage/helm-themes",
+  "unstable": {
+   "version": [
+    20200323,
+    712
+   ],
+   "deps": [
+    "helm-core"
+   ],
+   "commit": "244121903650c2d25a233d12b378060cf8b010e7",
+   "sha256": "0ii70wn3vadx8a36q2frmsvrmlpz1w58qgn2w3knjivj195knliw"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "8c979f4efc6174eed7df5f3b62db955246202818",
+   "sha256": "0rzbdrs5d5a0icpxrqik2iaz8i5bacw6nm2caf75s9w9j0j6s9li"
+  }
+ },
+ {
+  "ename": "helm-tramp",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0wqnabaywkhj1fnc3wpx7czrqbja1hsqwcpixmvv0fyrflmza517",
+  "fetcher": "github",
+  "repo": "masasam/emacs-helm-tramp",
+  "unstable": {
+   "version": [
+    20190616,
+    125
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "55e56975fe1456591a293bf60c183c3dda9f788f",
+   "sha256": "0py1k0r15frj67mazfjkdwi8sx5a51ykrrbzvfb73kakq2f55jap"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    9
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "924b5516270b3933e847562e8e14e3888dd24184",
+   "sha256": "19y97ia4zl50wd22gkb7kkhj713imd5jc92l2xnpw04b59b60di1"
+  }
+ },
+ {
+  "ename": "helm-unicode",
+  "commit": "f720b9f9b667bf9ff3080938beab36aa0036dc92",
+  "sha256": "1j95qy2zwdb46dl30ankfx7013l0akc61m14s473j93w320j5224",
+  "fetcher": "github",
+  "repo": "bomgar/helm-unicode",
+  "unstable": {
+   "version": [
+    20180608,
+    1407
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "fbeb0c5e741a6f462520884b744d43a9acbe1d34",
+   "sha256": "1aqwjw0jky07swagxnaqcn28inckavvpnlrwj62fljglip87zrc2"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "3b2a61dd9d4c9e85946567e07d8e70e276c5136b",
+   "sha256": "1247ghg1jkslgvwbffzsaxabz5l6qszw14vrwgln9smsc42cxjy2"
+  }
+ },
+ {
+  "ename": "helm-w32-launcher",
+  "commit": "fa678329a5081e1affa460c00239dabfd1b9dd82",
+  "sha256": "0bzn2vhspn6lla815qxwsl9gwfyiwgwmnysr6rjpyacmi17d73ri",
+  "fetcher": "github",
+  "repo": "Fanael/helm-w32-launcher",
+  "unstable": {
+   "version": [
+    20141223,
+    2014
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "3e59ad62b89dd21d334af0203d445a83eb25dc5b",
+   "sha256": "0xlz9rxx7y9pkrzvxmv42vgys5iwx75zv9g50k8ihwc08z80dhcq"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    6
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "01aa370a32900e7521330fba495474f2aa435e19",
+   "sha256": "0s8zp3kx2kxlfyd26yr3lphwcybhbm8qa9vzmxr3kaylwy6jpz5q"
+  }
+ },
+ {
+  "ename": "helm-w3m",
+  "commit": "f683fc9c7990e9ecb8a94808a7d03eb90c5569b1",
+  "sha256": "1rr83ija93iqz74k236hk3v75jk0iwcccwqpqgys7spvrld0b9pz",
+  "fetcher": "github",
+  "repo": "emacs-helm/helm-w3m",
+  "unstable": {
+   "version": [
+    20181029,
+    726
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "w3m"
+   ],
+   "commit": "c15d926631198d6d759ec8881837bcca5a64963b",
+   "sha256": "0qaqcwhwmckfmg3axiad35azn0l74k1niw4ix0v1bn2vqrxanqcw"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "w3m"
+   ],
+   "commit": "280673470672c9fbc57fd6a91defeb9f6641fc8a",
+   "sha256": "0d47mqib4zkfadq26vpy0ih7j18d6n5v4c21wvr4hhg6hg205iiz"
+  }
+ },
+ {
+  "ename": "helm-wordnet",
+  "commit": "11626120951afc589beac4cf5a0f49bffa752349",
+  "sha256": "0di8gxsa9r8mzja4akhz0wpgrhlidqyn1s1ix5szplwxklwf2r2f",
+  "fetcher": "github",
+  "repo": "raghavgautam/helm-wordnet",
+  "unstable": {
+   "version": [
+    20160128,
+    1507
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "a36dbc6fcb570b812870bc1e190f203e0a0042fc",
+   "sha256": "03a5hzgqak8wg6i2h2p3fr9ij55lqarcsblml8qrnrj27ghcvzzh"
+  }
+ },
+ {
+  "ename": "helm-xcdoc",
+  "commit": "e3352ce89039fb48827b74f22fcf543722a27738",
+  "sha256": "1ikphlnj053i4g1l8r2pqaljvdqglj1yk0xx4vygnw98qyzdsx4v",
+  "fetcher": "github",
+  "repo": "fujimisakari/emacs-helm-xcdoc",
+  "unstable": {
+   "version": [
+    20160116,
+    1018
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "a85612149a6d8e18ab309b3db2d222ce39c42049",
+   "sha256": "1yqr5z5sw7schvaq9pmwg79anp806gikm28s6xvrayzyn4idz2n6"
+  }
+ },
+ {
+  "ename": "helm-xref",
+  "commit": "6d1796688ed0d6957557d960ca28e450f9bcb6cf",
+  "sha256": "1wyh25gxqgsc151bv4j5l050z1cz0n3yq174m62ihi1fy1pkra4l",
+  "fetcher": "github",
+  "repo": "brotzeit/helm-xref",
+  "unstable": {
+   "version": [
+    20191108,
+    859
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "6b4a8bd91f5eaf82f51bd31b03f6587387fe6983",
+   "sha256": "03b57sm98v25bqyy9d2pccfnlfxkvaxmvismhxmai4kfv8d84azj"
+  }
+ },
+ {
+  "ename": "helm-youtube",
+  "commit": "7537f732091b96b6c1b96c0174895278eba6776a",
+  "sha256": "1qal5q83p06ghn482rflcfklr17mir582r0mvchxabb5ql60dy0b",
+  "fetcher": "github",
+  "repo": "maximus12793/helm-youtube",
+  "unstable": {
+   "version": [
+    20190101,
+    1733
+   ],
+   "deps": [
+    "cl-lib",
+    "helm",
+    "request"
+   ],
+   "commit": "e7272f1648c7fa836ea5ac1a61770b4931ab4709",
+   "sha256": "062i1gkwa1rmxaw5mf20vc3nqsj6g6hfbggcglgd3wfn9rckvlqb"
+  }
+ },
+ {
+  "ename": "helm-z",
+  "commit": "48c9b83fff8fc428d9d1ecf0005d47f2adb8cb00",
+  "sha256": "1m268zsr4z7a9l5wj0i8qpimv0kyl8glgm0yb3f08959538nlmd1",
+  "fetcher": "github",
+  "repo": "yynozk/helm-z",
+  "unstable": {
+   "version": [
+    20171204,
+    325
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "37212220bebea8b9c238cb1bbacd8332b7f26c03",
+   "sha256": "1vz958yiva01yl1qj2pz84savcx8jgkvbywhcp4c3a8x3fikf0yl"
+  }
+ },
+ {
+  "ename": "helm-zhihu-daily",
+  "commit": "27246ec2bad3c85f8bb76aa26ebcd800edfe0d70",
+  "sha256": "0hkgail60s9qhxl0pskqxjvfz93iq1qh1kcmcq0x5kq7d08b911r",
+  "fetcher": "github",
+  "repo": "xuchunyang/helm-zhihu-daily",
+  "unstable": {
+   "version": [
+    20160625,
+    1145
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "be27dcc6be1eb97663b65581a9a5c0fc81cfaba7",
+   "sha256": "1s8q97pra27bacvm5knj0sjgj7iqljlhxqiniaw8ij8w4fhcdh93"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "cl-lib",
+    "helm"
+   ],
+   "commit": "be27dcc6be1eb97663b65581a9a5c0fc81cfaba7",
+   "sha256": "1s8q97pra27bacvm5knj0sjgj7iqljlhxqiniaw8ij8w4fhcdh93"
+  }
+ },
+ {
+  "ename": "help-find-org-mode",
+  "commit": "572003398d1bba572fa9f6332b25ade9306bf718",
+  "sha256": "149rd61bcvgrwhnhlqriw6fn6fr4pwr4ynmj2bwcp558nwf0py0b",
+  "fetcher": "github",
+  "repo": "EricCrosson/help-find-org-mode",
+  "unstable": {
+   "version": [
+    20181204,
+    234
+   ],
+   "commit": "aeda7f92c086dab9d8dfcd580fe80b332887a548",
+   "sha256": "18qj0ssmysfr5hlrayhw8m7a1nr1fpzsd5hn15kzbi7kzdnmc18w"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "c6fa2c8a8e9381572190010a9fa01f2be78f2790",
+   "sha256": "1szjqaw31r5070wpbj5rcai124c66bs32x35w1hsxyvzs5k85wg9"
+  }
+ },
+ {
+  "ename": "helpful",
+  "commit": "889d34b654de13bd413d46071a5ff191cbf3d157",
+  "sha256": "17w9j5v1r2c8ka1fpzbr295cgnsbiw8fxlslh4zbjqzaazamchn2",
+  "fetcher": "github",
+  "repo": "Wilfred/helpful",
+  "unstable": {
+   "version": [
+    20200506,
+    816
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "elisp-refs",
+    "f",
+    "s"
+   ],
+   "commit": "c0662aa07266fe204f4e6d72ccaa6af089400556",
+   "sha256": "1k61k7hhrfi8rzsniy15almvnvdsv85l7bmlaqs695pvanr5zlgh"
+  },
+  "stable": {
+   "version": [
+    0,
+    17
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "elisp-refs",
+    "f",
+    "s"
+   ],
+   "commit": "429f1fb5f588cc6124513335e8eca3b4ef15735a",
+   "sha256": "0v2y0x9pwi08y2mgjjiw5brfb5haa7pbmy4540glw904ffxxcblj"
+  }
+ },
+ {
+  "ename": "hemera-theme",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "00d8dmmn7mhzj6ai0qgdkj4hy1qpdcyiriky97prydibjvljq239",
+  "fetcher": "github",
+  "repo": "guidoschmidt/emacs-hemera-theme",
+  "unstable": {
+   "version": [
+    20180916,
+    924
+   ],
+   "commit": "b67c902b210b37b00cac68726822404543147ba8",
+   "sha256": "1q31kz5p97pby26lyb6r0jfcx5pdyax3sfba4lp8dzmxpisz2g2p"
+  }
+ },
+ {
+  "ename": "hemisu-theme",
+  "commit": "bb4dd85ccbd2c8936e59ca5c5e6234290b8bdf1b",
+  "sha256": "0byzrz74yvk12m8dl47kkmkziwrrql193q72qx974zbqdj8h2sph",
+  "fetcher": "github",
+  "repo": "andrzejsliwa/hemisu-theme",
+  "unstable": {
+   "version": [
+    20130508,
+    1844
+   ],
+   "commit": "5c206561aa2c844ecdf3e3b672c3235e559ddd7f",
+   "sha256": "178dvigiw162m01x7dm8pf61w2n3bq51lvk5q7jzpb9s35pz1697"
+  }
+ },
+ {
+  "ename": "hercules",
+  "commit": "c0a3b713c6c8465dc461d9776ccd27f06659993e",
+  "sha256": "1ggb8ax18nvcrcf1rqf8lkjjxb90kl05ivk0110h6pb9270x03hy",
+  "fetcher": "gitlab",
+  "repo": "jjzmajic/hercules.el",
+  "unstable": {
+   "version": [
+    20200420,
+    747
+   ],
+   "deps": [
+    "which-key"
+   ],
+   "commit": "557da39878d0637395fdded91243b340c37eff7b",
+   "sha256": "1rp37rhkj8jm07dwr74vc68dhrbvyvrxjdavpb0h073ps9vl9dsc"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "deps": [
+    "which-key"
+   ],
+   "commit": "557da39878d0637395fdded91243b340c37eff7b",
+   "sha256": "1rp37rhkj8jm07dwr74vc68dhrbvyvrxjdavpb0h073ps9vl9dsc"
+  }
+ },
+ {
+  "ename": "heroku",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1wavsymviybfcmwdfrffbkdwbiydggx55jqg6ql79wf9bx7agacp",
+  "fetcher": "github",
+  "repo": "technomancy/heroku.el",
+  "unstable": {
+   "version": [
+    20120629,
+    1813
+   ],
+   "commit": "92af1c073b593c4def99c8777c869992aa4d0b3a",
+   "sha256": "0c45pib8qpwgyr271g5ddnsn7hzq68mqflv0yyc8803ni06w9vhj"
+  }
+ },
+ {
+  "ename": "heroku-theme",
+  "commit": "348f0e7aec86c3efd87ab06849a5f1ce90ba23e2",
+  "sha256": "0mchh9y3pqwamry6105qrv1bp1qg1g0jmz7rzc5svz9giynypwf9",
+  "fetcher": "github",
+  "repo": "jonathanchu/heroku-theme",
+  "unstable": {
+   "version": [
+    20150523,
+    219
+   ],
+   "commit": "8083643fe92ec3a1c3eb82f1b8dc2236c9c9691d",
+   "sha256": "15hk0v6ck076mahsz4spq75jcnv587fx4d3w50c7bdh423fl0xvx"
+  }
+ },
+ {
+  "ename": "hexo",
+  "commit": "21de1b7db0fa4af4fc0014207d41893a0713d738",
+  "sha256": "0fgrxf6gdw0kzs6x6y8qr511cazaaiyk7licgkgznngj4w6g7jyn",
+  "fetcher": "github",
+  "repo": "kuanyui/hexo.el",
+  "unstable": {
+   "version": [
+    20200416,
+    1410
+   ],
+   "commit": "d600b6c2d51959f1331c8abf3953365544322afa",
+   "sha256": "07w6jlq3z5y019n5kplqn38gw60ffk2yx4vchp6qgif98lhcjiyr"
+  }
+ },
+ {
+  "ename": "hfst-mode",
+  "commit": "e324bb114997f9cc57d76d8a66fec4ff4d1d71fe",
+  "sha256": "1w342n5k9ak1m5znysvrplpr9dhmi7hxbkr4d1dx51dn0azbpjh7",
+  "fetcher": "github",
+  "repo": "unhammer/hfst-mode",
+  "unstable": {
+   "version": [
+    20160708,
+    1202
+   ],
+   "commit": "ac1bb9dd92545d3e7fdc05c83996c227cc15c6b8",
+   "sha256": "0zsz8542kh51clzy8j7g29bwm8zcnfxm9sjzh3xjpqk2ziqf4ii6"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "commit": "ac1bb9dd92545d3e7fdc05c83996c227cc15c6b8",
+   "sha256": "0zsz8542kh51clzy8j7g29bwm8zcnfxm9sjzh3xjpqk2ziqf4ii6"
+  }
+ },
+ {
+  "ename": "hg-histedit",
+  "commit": "ce252397ab16ff9cbb965a036710d8b843db267f",
+  "sha256": "0c09p4pvv53wpm68sn251x52lqz0zfxq98aazhwbpp7i3jxbzq2b",
+  "fetcher": "github",
+  "repo": "jojojames/hg-histedit",
+  "unstable": {
+   "version": [
+    20190707,
+    11
+   ],
+   "deps": [
+    "with-editor"
+   ],
+   "commit": "2448d00bc390fed3e53091d968ec1222c8e7e35b",
+   "sha256": "0qp29yiyplv8h0z2yk5h0473a7nj401h14gi3fqsxqq9brx3s9jy"
+  }
+ },
+ {
+  "ename": "hgignore-mode",
+  "commit": "f3e325c84d0a30789fab7e897b4fe5040c5093ba",
+  "sha256": "0ja71l3cghhn1c6w2pff80km8h8xgzf0j9gcldfyc72ar6ifhjkj",
+  "fetcher": "github",
+  "repo": "omajid/hgignore-mode",
+  "unstable": {
+   "version": [
+    20160501,
+    7
+   ],
+   "commit": "7aa9f3b8a9c610dbd80b952061b40194e1d9c5bd",
+   "sha256": "0l22sqi9lmy25idh231p0hgq22b3dxwb9wq60yxk8dck9zlkv7rr"
+  }
+ },
+ {
+  "ename": "hgrc-mode",
+  "commit": "31a24d95efce2f04f0b555ed16b8d3d5a3aa255a",
+  "sha256": "18400dhdackdpndkz6shjmd4klfh6b4vlccnnqlzf3a93alw6vqf",
+  "fetcher": "github",
+  "repo": "omajid/hgrc-mode",
+  "unstable": {
+   "version": [
+    20150409,
+    2043
+   ],
+   "commit": "314e8320b82cc1ce74b1bd372f296252e7a23090",
+   "sha256": "1ky5s7hzqbxgasdz285q3rnvzh3irwsq61rlivjrcxyfdxdjbbvp"
+  }
+ },
+ {
+  "ename": "hi2",
+  "commit": "ba880f0130707098e5b648f74d14e151b0110e4e",
+  "sha256": "1wxkjg1jnw05lqzggi20jy2jl20d8brvv76vmrf6lnz62g6jv9h2",
+  "fetcher": "github",
+  "repo": "nilcons/hi2",
+  "unstable": {
+   "version": [
+    20141005,
+    1931
+   ],
+   "commit": "c9d199727b5cdcb9e36a972b38131ce4611fd6c8",
+   "sha256": "1s08sgbh5v59lqskd0s1dscs6dy7z5mkqqkabs3gd35agbfvbmlf"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "c9d199727b5cdcb9e36a972b38131ce4611fd6c8",
+   "sha256": "1s08sgbh5v59lqskd0s1dscs6dy7z5mkqqkabs3gd35agbfvbmlf"
+  }
+ },
+ {
+  "ename": "hide-lines",
+  "commit": "ae489be43b1aee93614e40f492ebdf0b98a3fbc1",
+  "sha256": "18h5ygi6idpb5wjlmjjvjmwcw7xiljkfxdvq7pm8wnw75p705x4d",
+  "fetcher": "github",
+  "repo": "emacsorphanage/hide-lines",
+  "unstable": {
+   "version": [
+    20151127,
+    1840
+   ],
+   "commit": "331122bf19361130351cfe55968c2a7820329eb3",
+   "sha256": "183l0sx8zn3jv1fqa3xj7a6fd792sp50jyhm50j3hy7c54m4capf"
+  },
+  "stable": {
+   "version": [
+    20130623,
+    1701
+   ],
+   "commit": "4bfb4c6f4769bd6c637e4c18bbf65506832fc9f0",
+   "sha256": "01cy7v9ql70bsvjz3idq23jpyb8jb61bs9ff8vf5y3fj45pc32ps"
+  }
+ },
+ {
+  "ename": "hide-mode-line",
+  "commit": "2af28365f9fbc6ae71043a67966490c5d18a6095",
+  "sha256": "0yl6aicpib5h1ckqi3gyilh2nwvp8gf1017n1w1755j01gw1p9hl",
+  "fetcher": "github",
+  "repo": "hlissner/emacs-hide-mode-line",
+  "unstable": {
+   "version": [
+    20190922,
+    115
+   ],
+   "commit": "88888825b5b27b300683e662fa3be88d954b1cea",
+   "sha256": "0dfzjgxfkcw4wisbyldsm1km18pfp9j8xgadn6qnsz11l55bpgyp"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    2
+   ],
+   "commit": "88888825b5b27b300683e662fa3be88d954b1cea",
+   "sha256": "0dfzjgxfkcw4wisbyldsm1km18pfp9j8xgadn6qnsz11l55bpgyp"
+  }
+ },
+ {
+  "ename": "hidepw",
+  "commit": "f2ee7663bcedaffa935b8379cc77168035cb1f14",
+  "sha256": "0qnvlcjldg1mcb5ilcy538sbf294glrx5g1a7vbmspdm3wby7lna",
+  "fetcher": "github",
+  "repo": "jekor/hidepw",
+  "unstable": {
+   "version": [
+    20200326,
+    112
+   ],
+   "commit": "73f099da79d73fe4087472df3469d8b9b20a59f2",
+   "sha256": "1lcm5nfpcrvy3700g1zzi89j59n0508xvk3v66x9px5aq6a8xk2j"
+  }
+ },
+ {
+  "ename": "hideshow-org",
+  "commit": "3de48eee24a5cca9c8b7dba2d6d01dfbc679d8d6",
+  "sha256": "1bzx5ii06r64nra92zv1dvw5zv3im7la2dd3md801hxyfrpb74gc",
+  "fetcher": "github",
+  "repo": "shanecelis/hideshow-org",
+  "unstable": {
+   "version": [
+    20120223,
+    2250
+   ],
+   "commit": "16419e52e6cdd2f46f755144c0ab11ce00d1a626",
+   "sha256": "1dr06b9njzih8z97k62l9w3x0a801x4bp043zvk7av9qkz8izl2r"
+  }
+ },
+ {
+  "ename": "hierarchy",
+  "commit": "7aea238a2d14e9f58c0474251984b6c617b6854d",
+  "sha256": "0fh1a590pdq21b4mwh9wrfsmm2lw2faw18r35cdzy8fgyf89yimp",
+  "fetcher": "github",
+  "repo": "DamienCassou/hierarchy",
+  "unstable": {
+   "version": [
+    20190425,
+    842
+   ],
+   "commit": "be2634dc1f08a5e781d02ef301c727246863756f",
+   "sha256": "05v3p2n92xjz035m5p0m5wd85ygngbvjd8y09r5sx1mi5ya2k0v2"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    0
+   ],
+   "commit": "4ab1372c252847c316f8978a81e2fe92ff79579e",
+   "sha256": "1kykbb1sil5cycfa5aj8dhsxc5yrx1641i2np5kwdjid6ahdlz5r"
+  }
+ },
+ {
+  "ename": "highlight",
+  "commit": "38433e95f73ab20f27254a084d0b245c6e62d882",
+  "sha256": "0ik2kci2y404zzvs78h74v21ssgi6f0jdzzbq45fhdhjra02kzzz",
+  "fetcher": "github",
+  "repo": "emacsmirror/highlight",
+  "unstable": {
+   "version": [
+    20190710,
+    1527
+   ],
+   "commit": "9258a2b8362d737115cbd87618f947eadb140411",
+   "sha256": "0pbqzgbfkm8smi23j94hirxh2r1yc0ipyjbbv1y906br6bx5c1a8"
+  }
+ },
+ {
+  "ename": "highlight-blocks",
+  "commit": "eaf524488c408483ea8f2c3a71174b1b5fc3f5da",
+  "sha256": "1a32iv5kgf6g6ygbs559w156dh578k45m860czazfx0d6ap3k5m1",
+  "fetcher": "github",
+  "repo": "Fanael/highlight-blocks",
+  "unstable": {
+   "version": [
+    20190318,
+    1557
+   ],
+   "commit": "33cf3d36662faa36c86c8d53e4d5a3922efa3eb8",
+   "sha256": "04v5y04v4n06ig8zld6axrxpz07s70sn5ckxcy8gnz5qm0zvr7mx"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    17
+   ],
+   "commit": "33cf3d36662faa36c86c8d53e4d5a3922efa3eb8",
+   "sha256": "04v5y04v4n06ig8zld6axrxpz07s70sn5ckxcy8gnz5qm0zvr7mx"
+  }
+ },
+ {
+  "ename": "highlight-context-line",
+  "commit": "00df721571ff67fe158251fa843c8f515ded3469",
+  "sha256": "0zmqcfsr2j0m2l76c8h6lmdqwrd1b38gi6yp5sdib0m4vj9d0pnd",
+  "fetcher": "github",
+  "repo": "ska2342/highlight-context-line",
+  "unstable": {
+   "version": [
+    20181122,
+    2203
+   ],
+   "commit": "6b334e8207c780835a05b6909b4d826898c33d26",
+   "sha256": "0pzb6pnshcglbjpfk7y2s8qissmldr27phyh1v3mvq2q09pyskb6"
+  },
+  "stable": {
+   "version": [
+    2,
+    0
+   ],
+   "commit": "c3257c0ca9dba76167bbd7e0718a65ecd26ef26f",
+   "sha256": "10mv1hd33msafp3r62p9zhwivy0l876ci9xjh7nqc9621qxxd5rw"
+  }
+ },
+ {
+  "ename": "highlight-defined",
+  "commit": "acc9b816796b9f142c53f90593952b43c962d2d8",
+  "sha256": "1vjxm35wf4c2qphpkjh57hf03a5qdssdlmfj0n0gwxsdw1q5rpms",
+  "fetcher": "github",
+  "repo": "Fanael/highlight-defined",
+  "unstable": {
+   "version": [
+    20181106,
+    1718
+   ],
+   "commit": "8e05be23e555ab05edc6fb188f5ce28ef495c946",
+   "sha256": "1xqs8shzka47ns4a60ba2i2kgjcq9vl9w1518ffhb4x2x41lr4ri"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    5
+   ],
+   "commit": "9cc03c7136b56c04ea053fbe08a3a4a6af26b90e",
+   "sha256": "08czwa165rnd5z0dwwdddn7zi5w63sdk31l47bj0598kbly01n7r"
+  }
+ },
+ {
+  "ename": "highlight-doxygen",
+  "commit": "0153353e5abfa7513e74485049eaa384aaddbd58",
+  "sha256": "0jkzf2mqn7y465c77vglaj3mr0cpfy2z810mywd1q21d71lsqmbl",
+  "fetcher": "github",
+  "repo": "Lindydancer/highlight-doxygen",
+  "unstable": {
+   "version": [
+    20180829,
+    1818
+   ],
+   "commit": "53f2250018725fa19548e1771ee79fcc23641694",
+   "sha256": "0l6zh5cmp771h30i16bv3qvcq40pz9fxn3j7a8yx708vanb4d7kc"
+  }
+ },
+ {
+  "ename": "highlight-escape-sequences",
+  "commit": "cd087f2c5a9524986b0f2c7fd7efd1f296363101",
+  "sha256": "0938b29cqapid9v9q4w2jwh8kdb0p70qwzy9xm2nxaairm7436d6",
+  "fetcher": "github",
+  "repo": "dgutov/highlight-escape-sequences",
+  "unstable": {
+   "version": [
+    20171117,
+    1237
+   ],
+   "commit": "08d846a7aa748209d65fecead2b6a766c3e5cb41",
+   "sha256": "05mc3w1f8ykf80914a1yddw6j8cmh0h57llm07xh89s53821v2is"
+  }
+ },
+ {
+  "ename": "highlight-function-calls",
+  "commit": "2d1eed3f9af218d21ea8db37ee91888e23e59bd5",
+  "sha256": "0wmxijkhx74da3ygnvzsdvbh2iii4f7424wmm01b5skbr7qva690",
+  "fetcher": "github",
+  "repo": "alphapapa/highlight-function-calls",
+  "unstable": {
+   "version": [
+    20170908,
+    500
+   ],
+   "commit": "f7a1eaf95fc64cc0db4d0567f9ff79ec4ae04787",
+   "sha256": "1gbj1awjp69352a5p49ldimvij5mj8cngjp2sh45qw1cm5dpq653"
+  }
+ },
+ {
+  "ename": "highlight-indent-guides",
+  "commit": "c8acca65a5c134d4405900a43b422c4f4e18b586",
+  "sha256": "00ghp677qgb5clxhdjarfl8ab3mbp6v7yfsldm9bn0s14lyaq5pm",
+  "fetcher": "github",
+  "repo": "DarthFennec/highlight-indent-guides",
+  "unstable": {
+   "version": [
+    20200412,
+    2328
+   ],
+   "commit": "1b12c7b440ff988c7237936187c1375ac4ddc7f4",
+   "sha256": "03dpwklrwbkminfds8v129w0i47p5mkwdyhlhv05a22xnmlanyrs"
+  }
+ },
+ {
+  "ename": "highlight-indentation",
+  "commit": "31c443de5088410c0fe1b1c18f664b33ad259277",
+  "sha256": "0iblrrbssjwfn71n8xxjcl98pjv1qw1igf3hlz6mh8740fsca3d6",
+  "fetcher": "github",
+  "repo": "antonj/Highlight-Indentation-for-Emacs",
+  "unstable": {
+   "version": [
+    20181204,
+    839
+   ],
+   "commit": "d03803f2c06749c430443a3d24e039cbafc9c58f",
+   "sha256": "1jq0gf4kcx9hvrw40rnw5c2qynjpjw1vsjbi2i4lqjbsnfnxn4wz"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    0
+   ],
+   "commit": "cd6d8168ccb04c6c0394f42e9512c58f23c01689",
+   "sha256": "00l54k75qk24a0znzl4ij3s3nrnr2wy9ha3za8apphzlm98m907k"
+  }
+ },
+ {
+  "ename": "highlight-leading-spaces",
+  "commit": "74a4af76be764896cef169e24994630498cf19c1",
+  "sha256": "0h2ww2vqmarghf4zg0wbwn0wgndmkcjy696mc885rwavck2dav4p",
+  "fetcher": "github",
+  "repo": "mrBliss/highlight-leading-spaces",
+  "unstable": {
+   "version": [
+    20151216,
+    1222
+   ],
+   "commit": "840db19d863dd97993fd9f893f5be501627b6354",
+   "sha256": "1vy6j63jp83ljdqkrqglpys74yfh7p61sd0lqiwczgr5nqyc60rl"
+  }
+ },
+ {
+  "ename": "highlight-numbers",
+  "commit": "882e3a4877ddd22cc52f56f0ce3d55b6e4831c7a",
+  "sha256": "1bywrjv9ybr65mwkrxggb52jdqn16z8acgs5vqm0faq43an8i5yv",
+  "fetcher": "github",
+  "repo": "Fanael/highlight-numbers",
+  "unstable": {
+   "version": [
+    20181013,
+    1744
+   ],
+   "deps": [
+    "parent-mode"
+   ],
+   "commit": "8b4744c7f46c72b1d3d599d4fb75ef8183dee307",
+   "sha256": "075ip8h7bdin0yvvhn5nkwnz58arlaw1imr866ghp12q5rl4shmc"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    3
+   ],
+   "deps": [
+    "parent-mode"
+   ],
+   "commit": "b7adef0286aaa5bca8e98a12d0ffed3a880e25aa",
+   "sha256": "1r07mpyr7rhd7bkg778hx6vbhb4n9ixgzkpszhgks7ri6ia38pj8"
+  }
+ },
+ {
+  "ename": "highlight-operators",
+  "commit": "caca0b2bc2aaac563074cbb4ea4296fce749e203",
+  "sha256": "1l0ci20r0qm4lc9chvvwxgyi3vg41n3ccj0csfgzilzicsvjs9ic",
+  "fetcher": "github",
+  "repo": "jpkotta/highlight-operators",
+  "unstable": {
+   "version": [
+    20170213,
+    2220
+   ],
+   "commit": "7696b43419505d6e3511ad2781f9f1dd3c55ef8c",
+   "sha256": "1h5whrc1iphzq0g8x9mmkhjkbmbdg9i9bvr1y8zrwrs8za8k127y"
+  }
+ },
+ {
+  "ename": "highlight-parentheses",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "1d38wxk5bwblddr74crzwjwpgyr8zgcl5h5ilywg35jpv7n66lp5",
+  "fetcher": "github",
+  "repo": "tsdh/highlight-parentheses.el",
+  "unstable": {
+   "version": [
+    20180704,
+    1102
+   ],
+   "commit": "f0bd58c8dadd2db703b7bfd09e911b5fda05b3df",
+   "sha256": "14jzh0vr2sig2ql1iq2x7svvk8ayvy9ahz04y407f53h70ifbmdl"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "5aa800a68e3795716de1e7f2722e836781190f31",
+   "sha256": "08ld4wjrkd77cghmrf1n2hn2yzid7bdqwz6b1rzzqaiwxl138iy9"
+  }
+ },
+ {
+  "ename": "highlight-quoted",
+  "commit": "93b5ba18e4bc31ca60aee9cb4674586cd8523bcf",
+  "sha256": "0x6gxi0jfxvpx7r1fm43ikxlxilnbk2xbhdy9xivhgmmdyqiqqkl",
+  "fetcher": "github",
+  "repo": "Fanael/highlight-quoted",
+  "unstable": {
+   "version": [
+    20140916,
+    1822
+   ],
+   "commit": "24103478158cd19fbcfb4339a3f1fa1f054f1469",
+   "sha256": "1gq8inxfni9zgz2brqm4nlswgr8b0spq15wr532xfrgr456g10ks"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "cdd7164f9ad3a9929387c08af641ef6f5f013f4f",
+   "sha256": "1ahg9qzss67jpw0wp2izys6lyss4nqjy9320fpa4vdx39msdmjjb"
+  }
+ },
+ {
+  "ename": "highlight-refontification",
+  "commit": "d6c59f2b5cf1594248e8365b6ce3324f493c5647",
+  "sha256": "0cm9p4d7yhkz5a88m0y4646a6b9lb2ha7q12fcrdikyckpmbkqss",
+  "fetcher": "github",
+  "repo": "Lindydancer/highlight-refontification",
+  "unstable": {
+   "version": [
+    20170211,
+    2024
+   ],
+   "commit": "32632897d88c4611fadb08517ca00ef5cbc989b6",
+   "sha256": "1k6af947h70ivkj31mk3nv2vkxlfpqvpwq8za53n2l7adsjdlf73"
+  }
+ },
+ {
+  "ename": "highlight-stages",
+  "commit": "46884aa6588f55d6f688477a5e9f528f57673131",
+  "sha256": "0r4kmjmrpi38q3y0q9h5xkxh7x728ha2nbnc152lzw6zfsxnm4x4",
+  "fetcher": "github",
+  "repo": "zk-phi/highlight-stages",
+  "unstable": {
+   "version": [
+    20161212,
+    1457
+   ],
+   "commit": "29cbc5b78261916da042ddb107420083da49b271",
+   "sha256": "0r6nbcrr0dqpgm8dir8ahzjy7rw4nrac48byamzrq96r7ajlxlv0"
+  }
+ },
+ {
+  "ename": "highlight-symbol",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "01zw7xrkpgc89m55d60dx3s3kjajh5c164f64s2fzrgl9xj92h0r",
+  "fetcher": "github",
+  "repo": "nschum/highlight-symbol.el",
+  "unstable": {
+   "version": [
+    20160102,
+    2009
+   ],
+   "commit": "7a789c779648c55b16e43278e51be5898c121b3a",
+   "sha256": "19cgyk0sh8nsmf3jbi92i8qsdx4l4yilfq5jj9zfdbj9p5gvwx96"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "commit": "6136dac6d4328c19077a838dfbae2efc4caa4db2",
+   "sha256": "09z13kv2g21kjjkkm3iyaz93sdjmdy2d563r8n7r7ng94acrn7f6"
+  }
+ },
+ {
+  "ename": "highlight-thing",
+  "commit": "84b6cb403ff9a588771d051e472596f4e3cc974d",
+  "sha256": "0rvdb1lx9xn9drqw0sw9ih759n10g7k0af39w6n8g0wfr67p96w1",
+  "fetcher": "github",
+  "repo": "fgeller/highlight-thing.el",
+  "unstable": {
+   "version": [
+    20181229,
+    1301
+   ],
+   "commit": "561d08a26f78f18d405d4f371f1c813db094e2f3",
+   "sha256": "1mqxkcdac8qqzxi1jhnqqr98zj272rkk28m6r29v6x34hgdyjwdz"
+  }
+ },
+ {
+  "ename": "highlight-unique-symbol",
+  "commit": "78b7caccef56cd2f1a9d8001417af52cc06d6573",
+  "sha256": "0lwl8pkmq0q4dvyflarggnn8vzpvk5hhcnk508r6xml2if1sg9zx",
+  "fetcher": "github",
+  "repo": "hitode909/emacs-highlight-unique-symbol",
+  "unstable": {
+   "version": [
+    20130612,
+    542
+   ],
+   "deps": [
+    "deferred"
+   ],
+   "commit": "4141bf86a94e30d94d9af9c29d40b16886226e1c",
+   "sha256": "0hhc2l4pz6q8injpplv6b5l08l8q2lnjdpwabp7gwmhraq54rhjx"
+  }
+ },
+ {
+  "ename": "highlight2clipboard",
+  "commit": "87afa08061dc406528e7666cd4ee16995839b2d9",
+  "sha256": "19r7abbpm31b0azf2v3xn0rjagg9h01i8g72qapp8dhqb4d9n9r0",
+  "fetcher": "github",
+  "repo": "Lindydancer/highlight2clipboard",
+  "unstable": {
+   "version": [
+    20151020,
+    1840
+   ],
+   "deps": [
+    "htmlize"
+   ],
+   "commit": "6ce58a060d9c5843ccb8c79ec2bba7858c68ac15",
+   "sha256": "06nnqry36ncqacfzd8yvc4q59bwk3vgf9a14rkpph2hk2rfvq2m6"
+  }
+ },
+ {
+  "ename": "hindent",
+  "commit": "9a15a17a5aa78aed72958b2a1bde53f0c0ab5be7",
+  "sha256": "0az2zhdi73sa3h1q1c0bayqdk22a7ngrvsg9fr8b0i39sn3w8y07",
+  "fetcher": "github",
+  "repo": "commercialhaskell/hindent",
+  "unstable": {
+   "version": [
+    20180518,
+    902
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1583be4a8a01b765841f7306284528ae713abb7b",
+   "sha256": "1l8v3vq3yw7zr1yxyscfw8lggcf0klnyszhv18505c6myybp2dkp"
+  },
+  "stable": {
+   "version": [
+    5,
+    3,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1583be4a8a01b765841f7306284528ae713abb7b",
+   "sha256": "1l8v3vq3yw7zr1yxyscfw8lggcf0klnyszhv18505c6myybp2dkp"
+  }
+ },
+ {
+  "ename": "hippie-exp-ext",
+  "commit": "f8e4328cae9b4759a75da0b26ea8b68821bc71af",
+  "sha256": "142s7cmgjnqdmac21yps3b071sv18lw068kmxchyxb0zsa067g9l",
+  "fetcher": "github",
+  "repo": "rubikitch/hippie-exp-ext",
+  "unstable": {
+   "version": [
+    20160502,
+    2326
+   ],
+   "commit": "4eda13f90da51ab217d024701f4c30f91ffcb90e",
+   "sha256": "141ikpyns1gd6kjply8m9jy9gifx5xdw5bn4p29hrxgiw994a78d"
+  }
+ },
+ {
+  "ename": "hippie-expand-slime",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "0kxyv1lpkg33qgfv1jfqx03640py7525bcnc9dk98w6y6y92zf4m",
+  "fetcher": "github",
+  "repo": "purcell/hippie-expand-slime",
+  "unstable": {
+   "version": [
+    20170723,
+    146
+   ],
+   "commit": "39bbae94896a62854d31754debdfae71d35fec62",
+   "sha256": "1l2j5k4jk8jpm1vdf0z5zwa287859afsgd3gda778sdsiy38l6r7"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "de31fbc9f9d55891a006463bcee7670b47084015",
+   "sha256": "0mzk4agkcaaw7gryi0wrxv0blqndqsjf1ivdvr2nrnqi798sdhbr"
+  }
+ },
+ {
+  "ename": "hippie-namespace",
+  "commit": "c9db386ab3910940addae6e925b2ac17e64e0f87",
+  "sha256": "1bzjhq116ci9c9f0aw121fn3drmg2pw5ny1w6wcasa4p30syxxf0",
+  "fetcher": "github",
+  "repo": "rolandwalker/hippie-namespace",
+  "unstable": {
+   "version": [
+    20140508,
+    2041
+   ],
+   "commit": "d0d0f15c67ab8bef5e9d1e29a89ecd3613a60b49",
+   "sha256": "0b5wrid428s11afc48d6mdifmd31gmzyrj9zcpd3jwk63ydiihdc"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    8
+   ],
+   "commit": "79a662dfe9e61341e071b879f4f9101ca027ad10",
+   "sha256": "0nfr8ad0klqwi97fjchvwx9mfc672lhv3ll166sr8vn6jlh7rkv0"
+  }
+ },
+ {
+  "ename": "historian",
+  "commit": "f16dacf64c52767c0c8aef653ac5d1a7a3bd0883",
+  "sha256": "00cghcyb3liz2prgygjwsw82d9h70zjddnbf7dvglmj7ph9wn9ab",
+  "fetcher": "github",
+  "repo": "PythonNut/historian.el",
+  "unstable": {
+   "version": [
+    20200203,
+    1927
+   ],
+   "commit": "ac1bea7d99dd6965c72fabeb72d5fdc38c5380a4",
+   "sha256": "13pray3iapy6vbd1y1y7fqcnjpsvgfz2z7j1a1awzd8ifp12g9cp"
+  }
+ },
+ {
+  "ename": "history",
+  "commit": "f51d4cc6521546c99197adeb35459fcd53bd67d4",
+  "sha256": "0s8pcz53bk1w4h5847204vb6j838vr8za66ni1b2y4pas76zjr5g",
+  "fetcher": "github",
+  "repo": "boyw165/history",
+  "unstable": {
+   "version": [
+    20160821,
+    1602
+   ],
+   "commit": "5317663fb45bbd5e96d258cb0807dcc266ce67ff",
+   "sha256": "1ghbpfmmp5p0wvivd79165dx5kia8qkmac3a6asg2d6l1h9y58n1"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "adef53ecc2f6067bb61f020a2b66c5185a51632d",
+   "sha256": "0dy98sg92xvnr4algm2v2bnjcdwzv0b0vqk0312b0ziinkzisas1"
+  }
+ },
+ {
+  "ename": "historyf",
+  "commit": "a67279875c19475433fa13625c95ee5855962a59",
+  "sha256": "15pcaqfjpkfwcy46yqqw10q8kpw7aamcg0gr4frbdgzbv0yld08s",
+  "fetcher": "github",
+  "repo": "k1LoW/emacs-historyf",
+  "unstable": {
+   "version": [
+    20151124,
+    159
+   ],
+   "commit": "196c058ceb092fdd56b0e4ce85b7e714d6f72224",
+   "sha256": "0fgm1m9mq1zn5gnrynf332hamif05qhh8haqci7gii7crzy47c0g"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    9
+   ],
+   "commit": "64ab6c9d2cd6dec6982622bf675326e011373cd2",
+   "sha256": "1mxicha6m61qxz1mv9z76x4g9fpqk4ch9i6jf7nnpxd6x4xz3f7z"
+  }
+ },
+ {
+  "ename": "hive",
+  "commit": "b167265dff60950823a5e98a299462b2b535b9a9",
+  "sha256": "1marz8gmk824hb0nkhaw48d4qw1xjk1aad27gviya7f5ilypxrya",
+  "fetcher": "github",
+  "repo": "r0man/hive-el",
+  "unstable": {
+   "version": [
+    20131217,
+    1512
+   ],
+   "deps": [
+    "sql"
+   ],
+   "commit": "11b5172e081ad8079fc78758bef6f306f82ae32b",
+   "sha256": "097lrj9lgfa7szww324hlqywwkbi31n1pxfqyg0zbfj45djkp9bx"
+  }
+ },
+ {
+  "ename": "hiwin",
+  "commit": "5f050fd2b1038dce05a1302d3670933546f86525",
+  "sha256": "0klhxwxsz7xan2vsknw79r1dj4qhhjbfpddr67mk9qzccp8q0w8g",
+  "fetcher": "github",
+  "repo": "yoshida-mediba/hiwin-mode",
+  "unstable": {
+   "version": [
+    20150825,
+    827
+   ],
+   "commit": "6ee8ed051405653bd9b7332d7e9fbb591d954051",
+   "sha256": "177blksgncxpxd1zi9kmbcfjnpd3ll1szjxiyc4am8a6hs1dyyqk"
+  }
+ },
+ {
+  "ename": "hl-anything",
+  "commit": "f38d26ede4e2e1d495a02c68e3b5041702b032e8",
+  "sha256": "0czpc82j5hbzprc66aall72lqnk38dxgpzx4rs8sbx95cag12dxa",
+  "fetcher": "github",
+  "repo": "hl-anything/hl-anything-emacs",
+  "unstable": {
+   "version": [
+    20160422,
+    1708
+   ],
+   "commit": "8696bc55a8cba408f0fc83a907a9ec529d79e558",
+   "sha256": "10ps1rb5fqwaw4lz3nz2rbsry4y81asmi5557g229h8xjhp6gpnm"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    9
+   ],
+   "commit": "de631c87d3a6602cdbf84c1623558334fda354fa",
+   "sha256": "0889dzrwizpkyh3wms13k8zx27ipsrsxfa4j4yzk4cwk3aicckcr"
+  }
+ },
+ {
+  "ename": "hl-block-mode",
+  "commit": "68b7cb0ffe90cd56e2ca6e91e33668be586a1da7",
+  "sha256": "17ghc2hbvckp68blk8izwmx6far9ampalik2f9idz27982h49ia8",
+  "fetcher": "gitlab",
+  "repo": "ideasman42/emacs-hl-block-mode",
+  "unstable": {
+   "version": [
+    20200404,
+    702
+   ],
+   "commit": "6dc75e71b0b179d7c087cf7de51823f5810d671a",
+   "sha256": "142nrxq72dkl45lq93c076nl2ifdl6vdgiydpcs4lwg0crja8qzl"
+  }
+ },
+ {
+  "ename": "hl-fill-column",
+  "commit": "68c40d7b6af664e01083b78c60b6a8e66b278a4e",
+  "sha256": "1kv77zfz1rd60cajjgljn8b04j6szqwwc3ialfxf6wdzh1w28jd3",
+  "fetcher": "github",
+  "repo": "laishulu/hl-fill-column",
+  "unstable": {
+   "version": [
+    20200404,
+    306
+   ],
+   "deps": [
+    "names"
+   ],
+   "commit": "43cb3c35a92c912b7205b8a36f1ad0ec0a5b4a22",
+   "sha256": "0pf1hk21xbahccw1cdz95haqvhrf50cwg32qa36v9nammd37752z"
+  }
+ },
+ {
+  "ename": "hl-indent",
+  "commit": "3aa6ce8f3d1349e28dd9dea8396c38257e3cea2f",
+  "sha256": "1z42kcwcyinjay65mv042ijh4xfaaiyri368g0sjw0fflsg0ikcr",
+  "fetcher": "github",
+  "repo": "ikirill/hl-indent",
+  "unstable": {
+   "version": [
+    20170429,
+    2104
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "bdb2e0177a7c8b29af26998e688b856adc6ded93",
+   "sha256": "0fwb64ja5ij97308pnd7g6l5mascavcp7jcar8igxv9yyqnw6pfi"
+  }
+ },
+ {
+  "ename": "hl-sentence",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "16sjfs0nnpwzj1cqfna9vhmxgznwwhb2qdmjci25hlgrdxwwyahs",
+  "fetcher": "github",
+  "repo": "milkypostman/hl-sentence",
+  "unstable": {
+   "version": [
+    20171018,
+    1519
+   ],
+   "commit": "86ae38d3103bd20da5485cbdd59dfbd396c45ee4",
+   "sha256": "1rzc74ckj06qs8kq2bd1cgqvgjd2qc3zxmk7bvgg6dy2m9nj52cm"
+  },
+  "stable": {
+   "version": [
+    3
+   ],
+   "commit": "f88882772f1a29fabb54194cc8aacd80d7f5b085",
+   "sha256": "1hgigbgppdhmr7rc901r95kyydjk05dck8mwbryh7kpglns365fa"
+  }
+ },
+ {
+  "ename": "hl-todo",
+  "commit": "7c262f6a1a10e8b3cc30151cad2e34ceb66c6ed7",
+  "sha256": "1iyh68xwldj1r02blar5zi01wnb90dkbmi67vd6h78ksghl3z9j4",
+  "fetcher": "github",
+  "repo": "tarsius/hl-todo",
+  "unstable": {
+   "version": [
+    20200103,
+    1239
+   ],
+   "commit": "3bba4591c54951d2abab113ec5e58a6319808ca9",
+   "sha256": "1i5mdmkbrxqx75grwl01pywbgl8pasr00mq6fidspp0aligsbg6w"
+  },
+  "stable": {
+   "version": [
+    3,
+    1,
+    1
+   ],
+   "commit": "5d2ea49f83a7e6953f9d71de94dee478d08f9543",
+   "sha256": "1v51mlq13wr890ijwcwf0ymmc768cipj7a1nvmbmwh7y4ymlrsgn"
+  }
+ },
+ {
+  "ename": "hledger-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "15s8rqc94z70jzv13961nvcm9a9qadq04pf0m6xrzf8qqk71zn52",
+  "fetcher": "github",
+  "repo": "narendraj9/hledger-mode",
+  "unstable": {
+   "version": [
+    20191012,
+    1046
+   ],
+   "deps": [
+    "async",
+    "htmlize",
+    "popup"
+   ],
+   "commit": "8206f3c5d8e5b9b084733879191ec3724b60494d",
+   "sha256": "16y3xb8kc4j72gv1d59g4jw21q53i474hiksa6dzxvxkzva4wzf9"
+  }
+ },
+ {
+  "ename": "hlint-refactor",
+  "commit": "384ffc463cc6edb4806f8da68bd251e662718e65",
+  "sha256": "1311z6y7ycwx0mj67bya7a39j5hiypg72y6yg93dhgpk23wk7frq",
+  "fetcher": "github",
+  "repo": "mpickering/hlint-refactor-mode",
+  "unstable": {
+   "version": [
+    20190115,
+    900
+   ],
+   "commit": "c4307f86aad6d02e32e9b30cb6edc115584c791c",
+   "sha256": "1c71w9s34n0i7mm4njchxn6s3ri1y6mh3akgbg4nq41d42h8iap3"
+  }
+ },
+ {
+  "ename": "hlinum",
+  "commit": "41bca7b89a7ce52d4c9381b9a4046b7103996c4f",
+  "sha256": "04b6m0njr7yrbcbpkhqz4hmqpfacmyca3lw75dyw3vpjpsj2g0iv",
+  "fetcher": "github",
+  "repo": "tom-tan/hlinum-mode",
+  "unstable": {
+   "version": [
+    20180422,
+    412
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f17360fe93de6df99a05b4b64b0a1ca4ee45abb6",
+   "sha256": "01sfba4sd3mjc7bs1y4qdzryfawg1xzg3hbwy9afwfaz0w5czni8"
+  }
+ },
+ {
+  "ename": "hmac",
+  "commit": "7cabf363dbdfc87f29ab3dcf63bfe39b9e0920f7",
+  "sha256": "0am8pbjwf43nvhqa2mppdgiyd7kil7jxnaq7hhi5214bsrqgxk31",
+  "fetcher": "github",
+  "repo": "grimnebulin/emacs-hmac",
+  "unstable": {
+   "version": [
+    20180429,
+    2010
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "30132cd3fee7d3d91a9f04709d49ca0dcb96d565",
+   "sha256": "0l4msj1i8amcn10dk1shcyh6hn49iphma1q03kp2h84ga79xdpi3"
+  }
+ },
+ {
+  "ename": "hnreader",
+  "commit": "65dc5e41f88158d7595aba7a66b791b205b929b7",
+  "sha256": "1y7ariri9q7dvda28rdp5i66c2xw74ap8cd7n6lskgnnxjk1yl8j",
+  "fetcher": "github",
+  "repo": "thanhvg/emacs-hnreader",
+  "unstable": {
+   "version": [
+    20200321,
+    1900
+   ],
+   "deps": [
+    "org",
+    "promise",
+    "request"
+   ],
+   "commit": "5dd287e932e2398aab0f34cb23b99457b81ac370",
+   "sha256": "0ynq9dg00frk1sriraglzsszxpx51mpfdkbd1iqdz648rlhzyp3m"
+  }
+ },
+ {
+  "ename": "hoa-mode",
+  "commit": "f8b91f35d06f9e7e17c9aaf2fb9ee43a77257113",
+  "sha256": "06rfqn7sqvmgpvwhfmk17qqs4q0frfzhm597z3p1q7kys2035kiv",
+  "fetcher": "git",
+  "url": "https://gitlab.lrde.epita.fr/spot/emacs-modes.git",
+  "unstable": {
+   "version": [
+    20191010,
+    1132
+   ],
+   "commit": "558e55429acde26423332a03a3b65b12efdbce5f",
+   "sha256": "0a6jagjimr00dvzrbxj078vyranmv14zl2vn4dkcww4swjzpaag9"
+  }
+ },
+ {
+  "ename": "hoa-pp-mode",
+  "commit": "0c0d707dad9dc86bb3d6a829a60e21e92a5f3160",
+  "sha256": "01ijfn0hd645j6j88rids5dsanmzwmky37slf50yqffnv69jwvla",
+  "fetcher": "github",
+  "repo": "hoaproject/Contributions-Emacs-Pp",
+  "unstable": {
+   "version": [
+    20151027,
+    736
+   ],
+   "deps": [
+    "names"
+   ],
+   "commit": "925b79930a3f4377b0fb2a36b3c6d5566d4b9a8e",
+   "sha256": "0g2r4d0ivbadqw1k8jsv0jwv8krpfahsg0qmzyi909p2yfddqk1l"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "names"
+   ],
+   "commit": "a72104a191214fba502653643a0d166a8f5341d9",
+   "sha256": "1wg6vc9swwspi6s6jpig3my83i2pq8vkq2cy1q3an87rczacmfzp"
+  }
+ },
+ {
+  "ename": "holiday-pascha-etc",
+  "commit": "4108926b1fee78e54c9fa68445c7a2b1b20404ea",
+  "sha256": "0v2mhga1db6qy1160i730pzzrzisvhl3fjkazj4cjbkpjlshfc5j",
+  "fetcher": "github",
+  "repo": "hexmode/holiday-pascha-etc",
+  "unstable": {
+   "version": [
+    20160822,
+    58
+   ],
+   "commit": "eb198656f63cb8679fb0e3a8248782df071a0f3c",
+   "sha256": "1dd0k7r5kx15sph12vzakhq27zh7vy9r541qdp8w5051k6apw3pw"
+  }
+ },
+ {
+  "ename": "home-end",
+  "commit": "f67c9cf33e0f11a9bd6e1521af86d180177111c4",
+  "sha256": "0xnpb0n4kd7b0m80g2a88ylfk5gbvkcgwb78nig98dmgjg48z2ly",
+  "fetcher": "github",
+  "repo": "Boruch-Baum/emacs-home-end",
+  "unstable": {
+   "version": [
+    20180817,
+    855
+   ],
+   "deps": [
+    "keypress-multi-event"
+   ],
+   "commit": "30676ceec0d4ad84038cd0d65ee45ae810ab185c",
+   "sha256": "0czvnk74988p6gqz5jz83gkvvqdrdmzn4qz6cc8dmbyxk1zg6l8y"
+  }
+ },
+ {
+  "ename": "homebrew-mode",
+  "commit": "1e4007f6d15574098722fb427b6a9903f77afb21",
+  "sha256": "088wc5fq4r5yj1nbh7mriyqf0xwqmbxvblj9d2wwrkkdm5flc8mj",
+  "fetcher": "github",
+  "repo": "dunn/homebrew-mode",
+  "unstable": {
+   "version": [
+    20200205,
+    224
+   ],
+   "deps": [
+    "dash",
+    "inf-ruby"
+   ],
+   "commit": "8c04b040656dc99719efd7663c10f26f74df4a47",
+   "sha256": "0hqpj9fqq0b4nj7ya93jgkagafixqkinyr7qj8dsy2j1q458ynzf"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "deps": [
+    "dash",
+    "inf-ruby"
+   ],
+   "commit": "8c04b040656dc99719efd7663c10f26f74df4a47",
+   "sha256": "0hqpj9fqq0b4nj7ya93jgkagafixqkinyr7qj8dsy2j1q458ynzf"
+  }
+ },
+ {
+  "ename": "honcho",
+  "commit": "76487b6776d148325c0200d2f788815f115feac9",
+  "sha256": "1ywx67dmvackfx19p4fvrb8mm27a7pri3m3bwr2acwd29lrrid2x",
+  "fetcher": "github",
+  "repo": "emacs-pe/honcho.el",
+  "unstable": {
+   "version": [
+    20190623,
+    2120
+   ],
+   "deps": [
+    "sudo-edit"
+   ],
+   "commit": "d5e6206dd23ff9305d976c52845c750a064aca4b",
+   "sha256": "0nh8n9rbd640rjpb3qz1mq3mgwj4dw5m98v4xypxpd954pr90afc"
+  }
+ },
+ {
+  "ename": "hookify",
+  "commit": "aa04ccd0ac05beed5de8d51ed96ccbf0071fdea1",
+  "sha256": "0prls539ifk2fsqklcxmbrwmgbm9hya50z486d7sw426lh648qmy",
+  "fetcher": "github",
+  "repo": "Silex/hookify",
+  "unstable": {
+   "version": [
+    20141216,
+    2209
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "21baae7393b07257de5796402fde0ca72fb00d77",
+   "sha256": "0sg4h0m1ds3f6kpzd3vk30g6x2xl74r5j9bidw658f3mmai7m1l8"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "e76127230716f7fab6662410c03c3872d17a172b",
+   "sha256": "1yvz9d5h7npxhsdf6s9fgxpmqk5ixx91iwivbhzcz935gs2886hc"
+  }
+ },
+ {
+  "ename": "horizon-theme",
+  "commit": "e2021dcf9db816a28cdc3fda226dc58431d7baca",
+  "sha256": "1532ab1blkxyfjcalr2vzp6yk9mkxnxh9yim2v9l0h7j17ddmw2v",
+  "fetcher": "github",
+  "repo": "aodhneine/horizon-theme.el",
+  "unstable": {
+   "version": [
+    20200129,
+    1957
+   ],
+   "commit": "040d19abd397d2132508a50e1266e86d324f7c69",
+   "sha256": "04impsvfmna1vyssjs2id9hsk9cq7wx317z4h16wr1jvng6m1jig"
+  }
+ },
+ {
+  "ename": "horoscope",
+  "commit": "180248c19160940a208b32fa7a9660a838f68de5",
+  "sha256": "1y2nzhdl7ghi5l3iyzb04xics7gr5981jmb5z5y8y1z04xhqpfs6",
+  "fetcher": "github",
+  "repo": "mschuldt/horoscope.el",
+  "unstable": {
+   "version": [
+    20180409,
+    641
+   ],
+   "commit": "f4c683e991adce0a8f9023f15050f306f9b9a9ed",
+   "sha256": "17k4j4q19l4ahxlzzic1jlbbh7l378j9vgnrcrvpm0lxa9ipclk0"
+  }
+ },
+ {
+  "ename": "hound",
+  "commit": "90cfc34eb4e8be7bf887533b85feba91131a435b",
+  "sha256": "0qri6bddd3c4sqvaqvmqw6xg46vwlfi1by3gc9i3izpq4xl1cr1v",
+  "fetcher": "github",
+  "repo": "ryoung786/hound.el",
+  "unstable": {
+   "version": [
+    20200122,
+    1700
+   ],
+   "deps": [
+    "cl-lib",
+    "request"
+   ],
+   "commit": "35e2cdc81fcc904b450a7ef3ec00fd25df6a4431",
+   "sha256": "04pb5yhv4ysmm9ngpipxglbwd6msxr4d0jd64mixxq77g2yfmfm4"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "request"
+   ],
+   "commit": "28cb804d99f9240d690d60098644e4300336b5fa",
+   "sha256": "1zyd6350mbah7wjz7qrwyh9pr4jpk5i1v8p7cfmdlja92fpqj9rh"
+  }
+ },
+ {
+  "ename": "hover",
+  "commit": "0dea54ebe452094c141e99f724a5fbfffe9381f0",
+  "sha256": "1vnxga7bbv96la2jjvh3r71j3fgaz59v81q7z5yixgn7vxrcvvc9",
+  "fetcher": "github",
+  "repo": "ericdallo/hover.el",
+  "unstable": {
+   "version": [
+    20200321,
+    1819
+   ],
+   "commit": "6f9ed1a6517e3a43ef2deafc2f86c70b2abce008",
+   "sha256": "06vhxmvd57hf8kc21ncv6is9h70syjbzqwfcl3xf5zwcpc8vn13s"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    3
+   ],
+   "commit": "6f9ed1a6517e3a43ef2deafc2f86c70b2abce008",
+   "sha256": "06vhxmvd57hf8kc21ncv6is9h70syjbzqwfcl3xf5zwcpc8vn13s"
+  }
+ },
+ {
+  "ename": "howdoi",
+  "commit": "d08f4d6c8bdf16f47d2474f92273fd214179cb18",
+  "sha256": "12vgbypawxhhrnjp8dgh0wrcp7pvjccfaxw4yhq7msai7ik3h83b",
+  "fetcher": "github",
+  "repo": "atykhonov/emacs-howdoi",
+  "unstable": {
+   "version": [
+    20150204,
+    43
+   ],
+   "commit": "5fbf7069ee160c597a328e5ce5fb32920e1ca88f",
+   "sha256": "01sj9c8mxqaif8wh6zz9v2czjaq7vcdi66drldyjmifkln6rg2v8"
+  }
+ },
+ {
+  "ename": "howdoyou",
+  "commit": "eb5356c3e094e93c09398bfd628b1594c7e3ec20",
+  "sha256": "0dnlhkpnjag6vk7qyfgzc7p0fs1b01pc3dnm6bgw19ghdp1wvp8y",
+  "fetcher": "github",
+  "repo": "thanhvg/emacs-howdoyou",
+  "unstable": {
+   "version": [
+    20191118,
+    2222
+   ],
+   "deps": [
+    "org",
+    "promise",
+    "request"
+   ],
+   "commit": "23407fb7a950f08498b5586062ba69962a20ea24",
+   "sha256": "1hcwac7fjsshnjapb1hdh9x0liap4n1i5q6bsar5zanmz1h9i94q"
+  }
+ },
+ {
+  "ename": "howm",
+  "commit": "0099a1f9b0efb3fc3a1420cfe71a647ec6458998",
+  "sha256": "07wx3wmc51vm42s81km5sdbm600ax2pv83xg0116xsyn05za3bfn",
+  "fetcher": "git",
+  "url": "https://scm.osdn.net/gitroot/howm/howm.git",
+  "unstable": {
+   "version": [
+    20190818,
+    1144
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "4f550d35935abc943e37e1f2da78c52218ac7c8d",
+   "sha256": "1rcyqyb48lsqpsa65ggd7ks88rk53frjhgrwr357b057kcqjic4n"
+  }
+ },
+ {
+  "ename": "hsluv",
+  "commit": "b74189f827ed54760c758f0364e573809ab32a22",
+  "sha256": "1g7g8434q2a4vpzxa4y5vrplzjali89px3gr8vhzfhscxg6mdcki",
+  "fetcher": "github",
+  "repo": "hsluv/hsluv-emacs",
+  "unstable": {
+   "version": [
+    20181127,
+    1206
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "c3bc5228e30d66e7dee9ff1a0694c2b976862fc0",
+   "sha256": "19q8qlq4s2kfydpadkq1zd92611dvq7dr8vlhlbd9gplzpx7dhfd"
+  }
+ },
+ {
+  "ename": "ht",
+  "commit": "6c7589bca1c1dfcc0fe76779f6847fda946ab981",
+  "sha256": "16vmxksannn2wyn8r44jbkdp19jvz1bg57ggbs1vn0yi7nkanwbd",
+  "fetcher": "github",
+  "repo": "Wilfred/ht.el",
+  "unstable": {
+   "version": [
+    20200217,
+    2331
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "fff8c43f0e03d5b98deb9f988522b839ce2ca253",
+   "sha256": "0v89jrz0igkj1w4jxi365nqny2vqr1wjmrvknzdlrm7g0islinwc"
+  },
+  "stable": {
+   "version": [
+    2,
+    2
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "a23a72342fda1eb3cc8d792f86efabe45eb0d1fd",
+   "sha256": "1p3qa7g0wa0wbviv2f8bda39cjys3naayk5xjm3nxxmqsyy8papx"
+  }
+ },
+ {
+  "ename": "html-check-frag",
+  "commit": "a53c9877f6f4c4e72c565fb8bd7cbe81ddbc565c",
+  "sha256": "0drancb9ryifiln44b40l6cal0c7nyp597a6q26288s3v909yk2a",
+  "fetcher": "github",
+  "repo": "TobiasZawada/html-check-frag",
+  "unstable": {
+   "version": [
+    20160131,
+    535
+   ],
+   "commit": "feb89765eafd69dfcf07afeebded8985dc456e7c",
+   "sha256": "10lbxf56gvy26grzrhhx2p710fzs0h866jd2zmmgkisvyb0vaiay"
+  }
+ },
+ {
+  "ename": "html-script-src",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "0pdyc2a9wxxc9rivjm2kgh4ysdxmdp73wg37nfy2nzka1m7qni7j",
+  "fetcher": "github",
+  "repo": "rejeep/html-script-src.el",
+  "unstable": {
+   "version": [
+    20120403,
+    1815
+   ],
+   "commit": "66460f8ab1b24656e6f3ce5bd50cff6a81be8422",
+   "sha256": "0k9ga0qi6h33akip2vrpclfp4zljnbw5ax40lxyxc1813hwkdrmh"
+  }
+ },
+ {
+  "ename": "html-to-hiccup",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0gyghgdil14i4p0yv5mb6la1ajzf8xcgdm1si5i5w7cn72vfapmz",
+  "fetcher": "github",
+  "repo": "plexus/html-to-hiccup",
+  "unstable": {
+   "version": [
+    20190909,
+    1549
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "50a52e2b0d13d865187acdf775b8203d5003f2f1",
+   "sha256": "1qi092mw2n08v6yr0j6hlpx0pnlcnhxjqbsrlw9pn4yin6zk91yp"
+  }
+ },
+ {
+  "ename": "html-to-markdown",
+  "commit": "1e6aed365c42987d64d0cd9a8a6178339b1b39e8",
+  "sha256": "1gjh9ndqsb3nfb7w5h7carjckkgy6qh63b4mg141j19dsyx9rrjv",
+  "fetcher": "github",
+  "repo": "Malabarba/html-to-markdown",
+  "unstable": {
+   "version": [
+    20151105,
+    840
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "60c5498c801be186478cf7c05be05b4430c4a144",
+   "sha256": "09n3zm9ivln8ng80fv5vwwzh9mj355ni685axda3m85xfxgai8gi"
+  },
+  "stable": {
+   "version": [
+    1,
+    5,
+    1
+   ],
+   "commit": "0fa0effd71acd8981a425ef11e0e63d53aea3199",
+   "sha256": "0c648dl5zwjrqx9n6zr6nyzx2zcnv05d5i4hvhjpl9q3y011ncns"
+  }
+ },
+ {
+  "ename": "html2org",
+  "commit": "771e6604edc90182697bbd4827c8c46c34b48289",
+  "sha256": "1lj4dwmjkc43dfmsc7z4nvydmmf6wrk5v9ms23zf0llnk9h3hvnk",
+  "fetcher": "github",
+  "repo": "lujun9972/html2org.el",
+  "unstable": {
+   "version": [
+    20170418,
+    501
+   ],
+   "commit": "6904aed40259ad8afccff079ebd8a07bff319ebc",
+   "sha256": "0dryk622fz0yj939pbs0fbb9i4m8qjnmkcxjsssws8f90plk06af"
+  }
+ },
+ {
+  "ename": "htmlize",
+  "commit": "075aa00a0757c6cd1ad392f0300bf5f1b937648d",
+  "sha256": "16nvvsi4nxi0zzk5a6mwmp43p0ls20zdx9r18mxz6bsaw6jangh2",
+  "fetcher": "github",
+  "repo": "hniksic/emacs-htmlize",
+  "unstable": {
+   "version": [
+    20191111,
+    2130
+   ],
+   "commit": "86f22f211e9230857197c42a9823d3f05381deed",
+   "sha256": "0n117rb4d9dydl01b65d09rp8bmkir3m09zs02dhlmqmljpy25w8"
+  },
+  "stable": {
+   "version": [
+    1,
+    55
+   ],
+   "commit": "682edbf751f5c255bfd4af0eb714a8bce0737cec",
+   "sha256": "0gi3xshscpa53qrj8yplfsqahcilc2ybcc2p7gnh5nbnf2n1n97x"
+  }
+ },
+ {
+  "ename": "htmltagwrap",
+  "commit": "6c2287c7b4c543e92ccfab120388b2c05174d2db",
+  "sha256": "1jac5ri96wqwss933z2m3q7yrrz8s3mwz39fahfspwqbycbhx8sx",
+  "fetcher": "github",
+  "repo": "jcs-elpa/htmltagwrap",
+  "unstable": {
+   "version": [
+    20190517,
+    511
+   ],
+   "commit": "35c62dd95c580fad49f84c5270cd69810455fedd",
+   "sha256": "1gh6acc21lfnng4hlgf6wv5pv4zcs9j44i25grrac0714sa2lm81"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "commit": "3260d9267b51019328c30a6317f28e4a2dd7d522",
+   "sha256": "15rfg4z8lhwadgnr58r3skmzmkxs5phnqr1ap4bjd9pq618amdbn"
+  }
+ },
+ {
+  "ename": "http",
+  "commit": "c7c63aaf27240706d84e464881d40cfb7cbe9ee3",
+  "sha256": "1176jhm8m7s1pzp0zv1sqawcgn4m5zvxghypmsrjyyb5p7m6dalm",
+  "fetcher": "github",
+  "repo": "emacs-pe/http.el",
+  "unstable": {
+   "version": [
+    20181008,
+    2121
+   ],
+   "deps": [
+    "edit-indirect",
+    "request"
+   ],
+   "commit": "1bbfff5994e16ffc185c4ac28d792cb040da3351",
+   "sha256": "0bs2l487mn8zkx3h7zgynm5cq54w8wlr150izaxynqddcpkrr44h"
+  }
+ },
+ {
+  "ename": "http-post-simple",
+  "commit": "ae489be43b1aee93614e40f492ebdf0b98a3fbc1",
+  "sha256": "0z3zphaqywbm7vn2g1f7fkrdamgsc26i8zydm9y53v9z9fmzch5s",
+  "fetcher": "github",
+  "repo": "emacsorphanage/http-post-simple",
+  "unstable": {
+   "version": [
+    20170715,
+    940
+   ],
+   "commit": "f53697fca278c741051aeb668b00466b5e0fd3fe",
+   "sha256": "0krdbvvvzn323vx554yw7947nddl3icfjk4wf5kfx7fim5v3mdn6"
+  }
+ },
+ {
+  "ename": "http-twiddle",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1d8xnwhb8lp4p4xnnkryx5c6isd8ckalp0smx66lbi1pa4g6iqsh",
+  "fetcher": "github",
+  "repo": "hassy/http-twiddle",
+  "unstable": {
+   "version": [
+    20160801,
+    1911
+   ],
+   "commit": "4d0c73b7dcbde8b483d4f3a75c49c74d2fe3ca45",
+   "sha256": "0fxmk5b4ggi92n5gi2nim08a2gx1yg7jlp4hj4m0qazxqdcy38i1"
+  }
+ },
+ {
+  "ename": "httpcode",
+  "commit": "906da23e26d44f8c71ba57ab59bb089caea673a9",
+  "sha256": "05k1al1j119x6zf03p7jn2r9qql33859583nbf85k41bhicknpgh",
+  "fetcher": "github",
+  "repo": "rspivak/httpcode.el",
+  "unstable": {
+   "version": [
+    20121002,
+    345
+   ],
+   "commit": "a45e735082b09477cd704a99294d336cdbeb12ba",
+   "sha256": "02jz8qwxl69zhwvpmlqc15znr8x4f30paqszmm7xrrrz5x1c1rn4"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "2c8eb3b5455254ba70fb71f7178886bfc2d3af90",
+   "sha256": "1h9n388fi17nbyfciqywgrq3n165kpiildbimx59qyk2ac3v7rqk"
+  }
+ },
+ {
+  "ename": "httprepl",
+  "commit": "c49824f6e2dc2f3482e607c2d3a1e2d7685bf688",
+  "sha256": "0899qb1yfnsyf04hhvnk47qnq4d1f4vd5ghj43x4743wd2b9qawh",
+  "fetcher": "github",
+  "repo": "gregsexton/httprepl.el",
+  "unstable": {
+   "version": [
+    20141101,
+    1734
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "cfa3693267a8ed1c96a86a126823f37dbfe077d8",
+   "sha256": "0wd4wmy99mx677x4sdbp57bxxll1fsnnf8hk97r85xdmmjsmrkld"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "d2de8a676544deed1a5e084631a7799e487dbe55",
+   "sha256": "0dd257988bdar9hl2711ch5qshx9jc11fqxcvbrd7rc1va5cshs9"
+  }
+ },
+ {
+  "ename": "hugsql-ghosts",
+  "commit": "969fd5e51bf93b5eff6919956c43c041a3b24d1e",
+  "sha256": "1v1iypis5iyimdr9796qpqw0qmhzijap0nbr0mhhyp4001kakkwz",
+  "fetcher": "github",
+  "repo": "rkaercher/hugsql-ghosts",
+  "unstable": {
+   "version": [
+    20180425,
+    1129
+   ],
+   "deps": [
+    "cider",
+    "dash",
+    "s"
+   ],
+   "commit": "f3ebc60c66204ad39058cb84eb4bd5facce091df",
+   "sha256": "0pcr39x8yxl5aa0sz20gw20ixz5imw5m19bzhzbzyn7slr65hlqn"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    3
+   ],
+   "deps": [
+    "cider",
+    "dash",
+    "s"
+   ],
+   "commit": "f3ebc60c66204ad39058cb84eb4bd5facce091df",
+   "sha256": "0pcr39x8yxl5aa0sz20gw20ixz5imw5m19bzhzbzyn7slr65hlqn"
+  }
+ },
+ {
+  "ename": "humanoid-themes",
+  "commit": "3f4a3e3f257a02c4d702ddc38f5aff5a9411e21e",
+  "sha256": "070y1xrfabpzc4rdj7qhxa6yl8fdv4p7imi8yivbv0cwx3rpx75s",
+  "fetcher": "github",
+  "repo": "humanoid-colors/emacs-humanoid-themes",
+  "unstable": {
+   "version": [
+    20200403,
+    1939
+   ],
+   "commit": "22c9a0987c7d746d7eb9fe850f93f232d91cae14",
+   "sha256": "1h3v76p17mzigwr0kpjlm5fgas4vvrm59g73l1699pnq1n1i5kgx"
+  }
+ },
+ {
+  "ename": "hungarian-holidays",
+  "commit": "0c2dc20ce4b878a32c540744016a40f6cc2a657a",
+  "sha256": "1bdl0ynlni1i19hq4h48k8j9b2davv2kfgrpd2mrl2xqmjvhm1m2",
+  "fetcher": "github",
+  "repo": "gergelypolonkai/hungarian-holidays",
+  "unstable": {
+   "version": [
+    20161020,
+    1138
+   ],
+   "commit": "653108769279499d84a79267c90e640d98823872",
+   "sha256": "0jjparw5axydjf2lj8asccmksbbj9zgdiv2kc211h122q5712gvm"
+  }
+ },
+ {
+  "ename": "hungry-delete",
+  "commit": "e33960d9b7e24f830ebe4e5a26a562422d52fe97",
+  "sha256": "0hcsm3yndkyfqzb77ibx7df6bjppc34x5yabi6nd389pdscp9rpz",
+  "fetcher": "github",
+  "repo": "nflath/hungry-delete",
+  "unstable": {
+   "version": [
+    20200309,
+    209
+   ],
+   "commit": "4a341cfa3a19185c5ecb687970e299082e1144e3",
+   "sha256": "1gwksvvizz3kdpfzgwp45l1idjbrn8kz4jf0zx4fva20mh6mjz01"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    5
+   ],
+   "commit": "78a787a87aceb821818bbe2a322fbf2e5cbf80c3",
+   "sha256": "171s7akqcpj0jcbm8w19b4n9kdzw0acf7cv0ymwdz5mmgmfiy292"
+  }
+ },
+ {
+  "ename": "hy-mode",
+  "commit": "fc9ab5cf16b61bb27559cd8ec5cf665a5aab2154",
+  "sha256": "1vxrqla3p82x7s3kn7x4h33vcdfms21srxgxzidr02k37f0vi82m",
+  "fetcher": "github",
+  "repo": "hylang/hy-mode",
+  "unstable": {
+   "version": [
+    20200508,
+    502
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "s"
+   ],
+   "commit": "a18b0b8bfcd79a30bfe9ef960244ec6748a9430d",
+   "sha256": "0vvwilfj1sv7r1xsv7m6w0qc3077jfaflwxmq54dmrbw6qypqx1f"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    4
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "s"
+   ],
+   "commit": "e2d5fecdaec602788aa7123ed13651c888b8d94b",
+   "sha256": "0gihxlmfminadaqdr8d2zccd7wwygl3m0gfzxsk5izi7f8hl4w7f"
+  }
+ },
+ {
+  "ename": "hyai",
+  "commit": "1dd9bd1cfd2f3b760b664a4677b0e4e617cbdfa6",
+  "sha256": "00ns7q5b11c5amwkq11fs4p5vrmdfmjljfrcxbwb39gc12yrhn7s",
+  "fetcher": "github",
+  "repo": "iquiw/hyai",
+  "unstable": {
+   "version": [
+    20170301,
+    1447
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "9efad2ac6a57059b3be624588f649e276a96fdd4",
+   "sha256": "0fw6qh0aajsyxrp5gg4wnwf61h112k73vvdn14x0zvd8i4fkm6hw"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "7c644d31f62943c75ccf5a772e43450b462cc08f",
+   "sha256": "1b8992vzq5bh01pjlj181nzqjrqs4fbjpwvv8h7gjq42sf8w59sm"
+  }
+ },
+ {
+  "ename": "hydandata-light-theme",
+  "commit": "51edfd2eed17b79058bbef836bc3edff50defa6e",
+  "sha256": "1x4hf3ysjq3nwzr8jg0zs5lgalgxriyby4rww24w9xi3jc1bx5f1",
+  "fetcher": "github",
+  "repo": "chkhd/hydandata-light-theme",
+  "unstable": {
+   "version": [
+    20190809,
+    1925
+   ],
+   "commit": "180c3797fa7ef3e4bb679baaf5b492c33bbb9b8b",
+   "sha256": "157s8lssp6b4sjlm84qjg5wzgvgsgzqzpdh4y6g042xpgaz8b8nw"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    0
+   ],
+   "commit": "3b9bb5f213029a8331818b1d670194ef26d9505a",
+   "sha256": "11vgz64f8vs8vqp4scj9qvrfdshag7bs615ly9zvzzlk68jivdya"
+  }
+ },
+ {
+  "ename": "hyde",
+  "commit": "151f5c1097e5020dbc13e41f2657aae781c5942b",
+  "sha256": "18kjcxm7qmv9bfh4crw37zgax8khjqs9zkp4lrb490zlad2asbs3",
+  "fetcher": "github",
+  "repo": "nibrahim/Hyde",
+  "unstable": {
+   "version": [
+    20160508,
+    308
+   ],
+   "commit": "a8cd6ed00ecd8d7de0ded2f4867015b412b15b76",
+   "sha256": "14sk9gai7sscvwgbl7y3dzz8fdhrqynilscmdimlncpm15w56m6i"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "181f9d2f91c2678a22243c5485162fa7999fd893",
+   "sha256": "0nwsmc4c3v0wbfy917ik9k7yz8yclfac695p7p9sh9y354k3maw4"
+  }
+ },
+ {
+  "ename": "hydra",
+  "commit": "82d9e1bfd501ed2d1cd11319c5e1eb17482e8922",
+  "sha256": "1s1hj70jjbira054q8ly1pcr0818hh91qnhj0zwbv7milmvv2wwd",
+  "fetcher": "github",
+  "repo": "abo-abo/hydra",
+  "unstable": {
+   "version": [
+    20200504,
+    1747
+   ],
+   "deps": [
+    "cl-lib",
+    "lv"
+   ],
+   "commit": "87873d788891029d9e44fa5458321d6a05849b94",
+   "sha256": "1b6davg1jqcxqzf9aqv8av8c78fgdri97m9q44xzvr1xfbmvkl8g"
+  },
+  "stable": {
+   "version": [
+    0,
+    15,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "lv"
+   ],
+   "commit": "f27fce1b2f0a9162e159557bdeb2c0c94defb4d2",
+   "sha256": "0fapvhmhgc9kppf3bvkgry0cd7gyilg7sfvlscfrfjxpx4xvwsfy"
+  }
+ },
+ {
+  "ename": "hyperspace",
+  "commit": "0696a12acba676015640de63fc6e011128bca71c",
+  "sha256": "0ya41c9bxvspj81n5209p9b4c9p1i6jcp710n9i9jawpahwpqlkw",
+  "fetcher": "github",
+  "repo": "ieure/hyperspace-el",
+  "unstable": {
+   "version": [
+    20190908,
+    550
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "825ac47887bf2f63e7dc2ecce264a52d9f0fae70",
+   "sha256": "00bjwgg67y6igm2k2rwrw4n35jiw5akhl01mhbggwy999gb01cg2"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    4
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "5fdd680dc2e7b8a064cfdf93d6948546ff51afc2",
+   "sha256": "1r5h55zcm5n2vx126q16ndhgdchcj59qqcybhsqw69vk02x96arg"
+  }
+ },
+ {
+  "ename": "i2b2-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1jnlisdnp9sz54p444vlq00y3080i4ljcvclri9fy382g1s5ags5",
+  "fetcher": "github",
+  "repo": "danlamanna/i2b2-mode",
+  "unstable": {
+   "version": [
+    20140710,
+    104
+   ],
+   "commit": "db10efcfc8bed369a516bbf7526ede41f98cb95a",
+   "sha256": "17k41rah17l9kf7bvlm83x71nzz4aizgn7254cl5sb59mdhcm8pm"
+  }
+ },
+ {
+  "ename": "i3wm",
+  "commit": "2e12638554a13ef49ab24da08fe20ed2a53dbd11",
+  "sha256": "11246d71g82iv9zrd44013zwkmnf32m1x8zbrbb656dnzx7ps4rl",
+  "fetcher": "git",
+  "url": "https://git.flintfam.org/swf-projects/emacs-i3.git",
+  "unstable": {
+   "version": [
+    20170822,
+    1438
+   ],
+   "commit": "71391dc61063fee77ad174f3b2ca25c60b41009e",
+   "sha256": "16rwqfg517ask3y6mqxw689w8xx4i51nq8js5wnzbz9a55aj776n"
+  }
+ },
+ {
+  "ename": "ialign",
+  "commit": "072f1f7ce17e2972863bce10af9c52b3c6502eab",
+  "sha256": "070a0fa2vbdfvbnpbzv4z0c7311lf8sy2zw2ifn9k548n4l8k62j",
+  "fetcher": "github",
+  "repo": "mkcms/interactive-align",
+  "unstable": {
+   "version": [
+    20181202,
+    1146
+   ],
+   "commit": "e1308c8f6aea05ad6dbcaa33b9bee4eb7e05ee39",
+   "sha256": "0b7a2z4v1nyyaw0lvql9xrakpsi1a6kflqr74k56ndm3ivmqwx09"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    2
+   ],
+   "commit": "7ad88c8f7922adc616b8f060b65fa1add8952ea1",
+   "sha256": "0bh03w91i622hbar5dcq631ndxx1y8kd3h655pgw1g0lqkv1mlnc"
+  }
+ },
+ {
+  "ename": "iasm-mode",
+  "commit": "5c230ec10eb62d1b3f6df10c05c5dbc2e25d4507",
+  "sha256": "09xh41ayaha07fi5crk3c6pn17gwm3samsf6h71ldkywvz74kipv",
+  "fetcher": "github",
+  "repo": "RAttab/iasm-mode",
+  "unstable": {
+   "version": [
+    20171023,
+    1422
+   ],
+   "commit": "abbec7f308f9ce97beeb57e459fff35f559b4c18",
+   "sha256": "0hvpcckhlxab5f7w4s6iw5lhdbjrqn0l8gayg1w42rn6gssr3rap"
+  }
+ },
+ {
+  "ename": "ibuffer-git",
+  "commit": "d341da1b9bac782c75ab931fd53a9525a85c702e",
+  "sha256": "048888y07bzmi9x5i43fg6bgqbzdqi3nfjfnn6zr29jvlx366r5z",
+  "fetcher": "github",
+  "repo": "jrockway/ibuffer-git",
+  "unstable": {
+   "version": [
+    20110508,
+    731
+   ],
+   "commit": "d326319c05ddb8280885b31f9094040c1b365876",
+   "sha256": "1s5qvlf310b0z7q9k1xhcf4qmyfqd37jpqd67ciahaxk7cp224rd"
+  }
+ },
+ {
+  "ename": "ibuffer-project",
+  "commit": "895d692a678322e2d082ead155b679fa24a3a82d",
+  "sha256": "14lpjf9lsjzvkbp5ai95ymgl6h8waq80623hnamg6mv83vg7w135",
+  "fetcher": "github",
+  "repo": "muffinmad/emacs-ibuffer-project",
+  "unstable": {
+   "version": [
+    20200210,
+    2252
+   ],
+   "commit": "8cc8c96cb15874dd55cdbfce759f528de0046f9f",
+   "sha256": "0ysjyirw9gkrs8wivvvxfgdq8radpkl6nhh2a0ac3s42vrwbf9g1"
+  },
+  "stable": {
+   "version": [
+    2,
+    0
+   ],
+   "commit": "8cc8c96cb15874dd55cdbfce759f528de0046f9f",
+   "sha256": "0ysjyirw9gkrs8wivvvxfgdq8radpkl6nhh2a0ac3s42vrwbf9g1"
+  }
+ },
+ {
+  "ename": "ibuffer-projectile",
+  "commit": "363a6a888945f2c8b02f5715539439ba744d737d",
+  "sha256": "1qh4krggmsc6lx5mg60n8aakmi3f6ppl1gw094vfcsni96jl34fk",
+  "fetcher": "github",
+  "repo": "purcell/ibuffer-projectile",
+  "unstable": {
+   "version": [
+    20200304,
+    2205
+   ],
+   "deps": [
+    "projectile"
+   ],
+   "commit": "504b0edaa0d937ce60ccc8fdf09f2dae0a90fbaf",
+   "sha256": "18cqxnwzzbkcj9jcaw89b210432yzhrl1dwsv48p0jbhfnr17k41"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "projectile"
+   ],
+   "commit": "504b0edaa0d937ce60ccc8fdf09f2dae0a90fbaf",
+   "sha256": "18cqxnwzzbkcj9jcaw89b210432yzhrl1dwsv48p0jbhfnr17k41"
+  }
+ },
+ {
+  "ename": "ibuffer-rcirc",
+  "commit": "d8bcf68d54fce13fcb0fb0ae0b6aa975e8127a1f",
+  "sha256": "1y6pyc6g8j42hs103yynjsdkkxvcq0q4xsz4r93rqwsr3za3wcmc",
+  "fetcher": "github",
+  "repo": "fgallina/ibuffer-rcirc",
+  "unstable": {
+   "version": [
+    20150215,
+    2118
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "8a4409b1c679d65c819dee4085faf929840e79f8",
+   "sha256": "15lapyj7qkkw1i1g1aizappm7gxkfnxhvd4fq66lghkzb76clz2m"
+  }
+ },
+ {
+  "ename": "ibuffer-sidebar",
+  "commit": "19c7c36af8e30b9a9ccc4afda2a7b7e39e8d32ff",
+  "sha256": "0rzdybkqaf8r6v19isgw4wv0mwdqxvf55gq1ig4shscjc7ys22wp",
+  "fetcher": "github",
+  "repo": "jojojames/ibuffer-sidebar",
+  "unstable": {
+   "version": [
+    20180219,
+    131
+   ],
+   "commit": "7ddf1b5a158b33e9a7d3fe5dad7ea626a464d2bc",
+   "sha256": "18rl379bfilzvyi4f4kmy74l4vq2q8hhy5i8kflcgvn0ibipwqjz"
+  }
+ },
+ {
+  "ename": "ibuffer-tramp",
+  "commit": "a1a7449b15cb2a89cf06ea3de2cfdc6bc387db3b",
+  "sha256": "11a9b9g1jk2r3fldi012zka4jzy68kfn4991xp046qm2fbc7la32",
+  "fetcher": "github",
+  "repo": "svend/ibuffer-tramp",
+  "unstable": {
+   "version": [
+    20151118,
+    1739
+   ],
+   "commit": "bcad0bda3a67f55d1be936bf8fa9ef735fe1e3f3",
+   "sha256": "1ry7nbhqhjy6gkxd10s97nbm6flk5nm0l5q8071fprx8xxphqj8f"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "bcad0bda3a67f55d1be936bf8fa9ef735fe1e3f3",
+   "sha256": "1ry7nbhqhjy6gkxd10s97nbm6flk5nm0l5q8071fprx8xxphqj8f"
+  }
+ },
+ {
+  "ename": "ibuffer-vc",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "0bn5qyiq07cgzci10xl57ss5wsk7bfhi3hjq2v6yvpy9v704dvla",
+  "fetcher": "github",
+  "repo": "purcell/ibuffer-vc",
+  "unstable": {
+   "version": [
+    20200304,
+    2207
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1249c1e30cf11badfe032ac3b1058f24ba510ace",
+   "sha256": "1mgn7b786j4hwq1ks012hxxgvrfn5rz90adi2j190gmjz60rc5g5"
+  },
+  "stable": {
+   "version": [
+    0,
+    11
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1249c1e30cf11badfe032ac3b1058f24ba510ace",
+   "sha256": "1mgn7b786j4hwq1ks012hxxgvrfn5rz90adi2j190gmjz60rc5g5"
+  }
+ },
+ {
+  "ename": "iceberg-theme",
+  "commit": "dec6f24b215de80a4c12856bd1ad4dc26c33f47e",
+  "sha256": "021v5rpmmk2bym46w9hs5ckyajqv41qf2l2183ybqfc679mkbym8",
+  "fetcher": "github",
+  "repo": "conao3/iceberg-theme.el",
+  "unstable": {
+   "version": [
+    20200515,
+    934
+   ],
+   "deps": [
+    "solarized-theme"
+   ],
+   "commit": "9615307cbd37e698d6939a04128162ef893313cb",
+   "sha256": "02lsbzk5215z1rdvs6idnv2yff2487i4pqi1ljdjfn3g43ly5lr2"
+  }
+ },
+ {
+  "ename": "icomplete-vertical",
+  "commit": "1a952162da476b4a0f496d9dc15d2d7a8d0964f6",
+  "sha256": "10rbsxp3jp8xyzcklpcc2zs0sv4pvvkqb7i96js9cp13nc9a7rgz",
+  "fetcher": "github",
+  "repo": "oantolin/icomplete-vertical",
+  "unstable": {
+   "version": [
+    20200504,
+    1916
+   ],
+   "commit": "fe835acce91b0f088c8d27801bf42e24bb2dbab5",
+   "sha256": "1az3m6zwrggj4w2lh5qhnbh09dvxpyj5m2a85yhcha2p7g1hpym1"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "a2ee9254085431ec9e5c88d522e2c700355003ef",
+   "sha256": "1bqnlvv1gvrjriazvzd3bq98r8ii6fqax0zznhvkl1ij5pf55a90"
+  }
+ },
+ {
+  "ename": "icsql",
+  "commit": "bf2a7e6572418d2f252d63068edd82c21eab874e",
+  "sha256": "1lsh5nfw7xki4cjln492b92v37k093633sl4fs4254qfpi25n94a",
+  "fetcher": "github",
+  "repo": "plandes/icsql",
+  "unstable": {
+   "version": [
+    20190815,
+    501
+   ],
+   "deps": [
+    "buffer-manage",
+    "choice-program"
+   ],
+   "commit": "5e5cd04e3f3ad9963c29759293c1f7a54257866b",
+   "sha256": "0y9nsdkw8sahb3vgrgc278dys7m3nqzq6wgcifhhcsvv1bgs93hd"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "buffer-manage",
+    "choice-program"
+   ],
+   "commit": "415cfb7473537ea5a0f156c35f4dce0d2c49d124",
+   "sha256": "078cgskyzdx6sbyry20p6f3y5idd8fi8jhgm5bcyrj626nkf60f2"
+  }
+ },
+ {
+  "ename": "id-manager",
+  "commit": "64a61b3801a0cafec87b1875eaec5950746f716d",
+  "sha256": "13g5fi06hvx0x2wn1d1d8rkfq5n6wbk9g5bhx2b5sar2yw0akmwm",
+  "fetcher": "github",
+  "repo": "kiwanami/emacs-id-manager",
+  "unstable": {
+   "version": [
+    20170320,
+    1246
+   ],
+   "commit": "14ebc35db298aac4dedc8aa188bc46bacab81f3b",
+   "sha256": "0k9b12gzvjw06y5ycjkigkj8vcmj4rz57d4hyzip27g1v93vvimc"
+  }
+ },
+ {
+  "ename": "idea-darkula-theme",
+  "commit": "abf27cce70443010f996b5577d71fe78f7eab6fb",
+  "sha256": "0lanhwlhd7pbzjc047vd5sgsmi2bx66gr3inr8y57swgrfw3l8sk",
+  "fetcher": "github",
+  "repo": "fourier/idea-darkula-theme",
+  "unstable": {
+   "version": [
+    20160416,
+    2303
+   ],
+   "commit": "52602d9b91883e1f297d000951aeed48bf60176e",
+   "sha256": "1hknhbm3b5rsba2s84iwspylhzjsm91zdckz22j9gyrq37wjgyrr"
+  }
+ },
+ {
+  "ename": "identica-mode",
+  "commit": "812b7c1fbc435f0530b7f66a1e65f62f5f00da01",
+  "sha256": "1r69ylykjap305g23cry4wajiqhpgw08nw3b5d9i1y3mwx0j253q",
+  "fetcher": "github",
+  "repo": "gabrielsaldana/Emacs-Identica-mode",
+  "unstable": {
+   "version": [
+    20130204,
+    2253
+   ],
+   "commit": "cf9183ee11ac922e85c7c908f04e2d00b03111b3",
+   "sha256": "047gzycr49cs8wlmm9j4ry7b7jxmfhmbayx6rbbxs49lba8dgwlk"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    1
+   ],
+   "commit": "cf9183ee11ac922e85c7c908f04e2d00b03111b3",
+   "sha256": "047gzycr49cs8wlmm9j4ry7b7jxmfhmbayx6rbbxs49lba8dgwlk"
+  }
+ },
+ {
+  "ename": "idle-highlight-in-visible-buffers-mode",
+  "commit": "b5a533be3b8dea556438d93ac48853dd3a9690f1",
+  "sha256": "0kv06qlv1zp5hwaya0l90z6d5lhxcg69qac6x24ky6kf97vcdq72",
+  "fetcher": "github",
+  "repo": "ignacy/idle-highlight-in-visible-buffers-mode",
+  "unstable": {
+   "version": [
+    20181027,
+    1531
+   ],
+   "commit": "8d8de309d5bd4b035c01bf7f0cfc6e079c79d898",
+   "sha256": "194r7f4ngwx03n74rs26hqn9wypn9idjizvmffpsjpxfr7wr9z7l"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "8d8de309d5bd4b035c01bf7f0cfc6e079c79d898",
+   "sha256": "194r7f4ngwx03n74rs26hqn9wypn9idjizvmffpsjpxfr7wr9z7l"
+  }
+ },
+ {
+  "ename": "idle-highlight-mode",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "1i5ky61bq0dpk71yasfpjhsrv29mmp9nly9f5xxin7gz3x0f36fc",
+  "fetcher": "github",
+  "repo": "nonsequitur/idle-highlight-mode",
+  "unstable": {
+   "version": [
+    20120920,
+    1648
+   ],
+   "commit": "c466f2a9e291f9da1167dc879577b2e1a7880482",
+   "sha256": "0x4w1ksrw7dicl84zpf4d4scg672dyan9g95jkn6zvri0lr8xciv"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    3
+   ],
+   "commit": "c466f2a9e291f9da1167dc879577b2e1a7880482",
+   "sha256": "0x4w1ksrw7dicl84zpf4d4scg672dyan9g95jkn6zvri0lr8xciv"
+  }
+ },
+ {
+  "ename": "idle-org-agenda",
+  "commit": "de55ad7d9b8b3bed6a646f526a7b20c272eb4e26",
+  "sha256": "12g18gqwb520iqvs4v6jv0fjxsa3m6an1lq13saa4gwqixja1rrv",
+  "fetcher": "github",
+  "repo": "enisozgen/idle-org-agenda",
+  "unstable": {
+   "version": [
+    20190106,
+    1844
+   ],
+   "commit": "8e6052fc4923c30132052d67d794b76c92851c20",
+   "sha256": "0s9rql5izfc9bxg7xpv8406mirvj1r4djd8crknqsvc6gr0m1b1b"
+  }
+ },
+ {
+  "ename": "idle-require",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "03z8d06ifzaf81h8b3h16ab69cp3ssky3my07spy81rbhbjl5nn3",
+  "fetcher": "github",
+  "repo": "nschum/idle-require.el",
+  "unstable": {
+   "version": [
+    20090715,
+    2203
+   ],
+   "commit": "33592bb098223b4432d7a35a1d65ab83f47c1ec1",
+   "sha256": "0f8rxvc3dk2hi4x524l18fx73xrxy0qqwbybdma4ca67ck9n6xam"
+  }
+ },
+ {
+  "ename": "ido-at-point",
+  "commit": "6ffbfa66c4284a134265efc606fdc7652b0a7f75",
+  "sha256": "0jpgq2iiwgqifwdhwhqv0cd3lp846pdqar6rxqgw9fvvb8bijqm0",
+  "fetcher": "github",
+  "repo": "katspaugh/ido-at-point",
+  "unstable": {
+   "version": [
+    20151021,
+    757
+   ],
+   "commit": "e5907bbe8a3d148d07698b76bd994dc3076e16ee",
+   "sha256": "1bii7vj8pmmijcpvq3a1scky4ais7k6d7zympb3m9dmz355m9rpp"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "e5907bbe8a3d148d07698b76bd994dc3076e16ee",
+   "sha256": "1bii7vj8pmmijcpvq3a1scky4ais7k6d7zympb3m9dmz355m9rpp"
+  }
+ },
+ {
+  "ename": "ido-clever-match",
+  "commit": "add68b4815cdfe83402b217595a4a46068f83a2a",
+  "sha256": "081i6cjvqyfpgj0nvzc94zrl2v3l6nv6mhfda4zf7c8qqbvx1m8m",
+  "fetcher": "github",
+  "repo": "Bogdanp/ido-clever-match",
+  "unstable": {
+   "version": [
+    20151011,
+    1726
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f173473e99c8b0756f12e4cc8f67e68fa59eadd3",
+   "sha256": "14nmldahr0pj2x4vkzpnpx0bsxafmiihgjylk5j5linqvy8q6wk6"
+  }
+ },
+ {
+  "ename": "ido-complete-space-or-hyphen",
+  "commit": "59e11094068d3a0c0e4edc1f82158c43d3b15e0e",
+  "sha256": "1wk0cq5gjnprmpyvhh80ksz3fash42hckvmx8m95crbzjg9j0gbc",
+  "fetcher": "github",
+  "repo": "doitian/ido-complete-space-or-hyphen",
+  "unstable": {
+   "version": [
+    20180929,
+    150
+   ],
+   "commit": "ed60ebed113e4e1552efeab0c416f7c88428268e",
+   "sha256": "15h0alwi7qfqyi7w7gdl06ykxvafbx1p4614rg81kmzgs4dpqgy3"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "ad9baaec10e06be3f85db97b6c8fd970cf20df77",
+   "sha256": "1ffmsmi31jc0gqnbdxrd8ipsy790bn6hgq3rmayylavmdpg3qfd5"
+  }
+ },
+ {
+  "ename": "ido-completing-read+",
+  "commit": "6104efc035bcf469d133ab9a2caf42c9d4482334",
+  "sha256": "0rxdv3cd0bg0p8c1bck5vichdq941dki934k23qf5p6cfgw8gw4z",
+  "fetcher": "github",
+  "repo": "DarwinAwardWinner/ido-completing-read-plus",
+  "unstable": {
+   "version": [
+    20200310,
+    25
+   ],
+   "deps": [
+    "cl-lib",
+    "memoize",
+    "seq"
+   ],
+   "commit": "98d3a6e56b1d3652da7b47f49f76d77f82ea80ba",
+   "sha256": "0rmqyxb0cr3avm6lzz26r2d9fmja2csrh3whmky8h2giz79mjf7d"
+  },
+  "stable": {
+   "version": [
+    4,
+    13
+   ],
+   "deps": [
+    "cl-lib",
+    "memoize",
+    "s"
+   ],
+   "commit": "41b42779e22c064192b95e4de855ff7ebad45af6",
+   "sha256": "088b50iajgj602wsm1280gn5pqirycazndhs27r1li5d84fm1nvj"
+  }
+ },
+ {
+  "ename": "ido-describe-bindings",
+  "commit": "31b8e255630f1348a5b5730f7b624ad550d219ad",
+  "sha256": "1lsa09h025vd908r9q571iq2ia0zdpnq04mlihb3crpp5v9n9ws2",
+  "fetcher": "github",
+  "repo": "danil/ido-describe-bindings",
+  "unstable": {
+   "version": [
+    20161023,
+    1102
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "a814e25cb272401bdfee94cb98d915119d307414",
+   "sha256": "040mpwwldivyapmj0pjxsk8drgi113k7rpx8ym4jqz1hah5n33s1"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    11
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "a142ff1c33df23ed9665497d0dcae2943b3c706a",
+   "sha256": "0967709jyp9s04i6gi90axgqzhz03cdf1j1w39yrkds6q1b6v7jw"
+  }
+ },
+ {
+  "ename": "ido-exit-target",
+  "commit": "b815e7492eb0bd39c5d1be5a95784f9fe5612b62",
+  "sha256": "17vmg47xwk6yjlbcsswirl8s2q565k291ajzjglnz7qg2fwx6spi",
+  "fetcher": "github",
+  "repo": "waymondo/ido-exit-target",
+  "unstable": {
+   "version": [
+    20170717,
+    1851
+   ],
+   "commit": "e56fc6928649c87ccf39d56d84ab53ebaced1f73",
+   "sha256": "1a1bcvmihf22kr8rpv6kyp4b7x79hla5qdys48d6kl06m53gyckp"
+  }
+ },
+ {
+  "ename": "ido-flex-with-migemo",
+  "commit": "1647d1ae7400ddbc8367c355ade16b5c360b42fc",
+  "sha256": "1w8f1r17l4r7w5bacckv9zfl9qynv2ivsw639rzr5acg2ndxagv7",
+  "fetcher": "github",
+  "repo": "ROCKTAKEY/ido-flex-with-migemo",
+  "unstable": {
+   "version": [
+    20190408,
+    350
+   ],
+   "deps": [
+    "flx-ido",
+    "migemo"
+   ],
+   "commit": "da64f2fe3849492d35e155d81a817308a4853473",
+   "sha256": "0r8z8ingq83nkab9khpl9gspihv28gy721hcs0yh1d74wyjc71cr"
+  }
+ },
+ {
+  "ename": "ido-gnus",
+  "commit": "3c5cd46d72a3f99ef1344b5f1156f5bf7a5b9adc",
+  "sha256": "14ijb8q4s846984h102h72ij713v5bj3k2vfdvr94gw1f0iya2yg",
+  "fetcher": "github",
+  "repo": "vapniks/ido-gnus",
+  "unstable": {
+   "version": [
+    20140216,
+    1646
+   ],
+   "deps": [
+    "gnus"
+   ],
+   "commit": "f5fe3f6aa8086f675ba216abace9e3d5f2e3a089",
+   "sha256": "0ifdwd5vnjv2iyb5bnz8pij35lc0ymmyx8j8zhpkbgjigz8f05ip"
+  }
+ },
+ {
+  "ename": "ido-grid-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0sq1d2fwvv247rr9lqg9x87d5h910k5ifqr9cjyskc74mvhrcsr3",
+  "fetcher": "github",
+  "repo": "larkery/ido-grid-mode.el",
+  "unstable": {
+   "version": [
+    20160122,
+    1139
+   ],
+   "commit": "7cfca3988a6dc3ad18e28abe114218095ff2366f",
+   "sha256": "1ip8g0r0aimhc4a1f06m711zmbs0krxn8hmayk99gk5kkz12igkb"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    5
+   ],
+   "commit": "8bbd66e365d4f6f352bbb17673be5869ab26d7ab",
+   "sha256": "0f1p6cnl0arcc2y1h99nqcflp7byvyf6hj6fmv5xqggs66qc72lb"
+  }
+ },
+ {
+  "ename": "ido-hacks",
+  "commit": "4ac3074d28e76133835366273219e180c6e75b18",
+  "sha256": "05f9pdkqppnp7wafka2d2yj84gqchjd7vnrl5rcywy1l47gbxiw0",
+  "fetcher": "github",
+  "repo": "scottjad/ido-hacks",
+  "unstable": {
+   "version": [
+    20190206,
+    2153
+   ],
+   "commit": "d2153a3e8d23436ee07ecae2a106f434361a10c5",
+   "sha256": "0rq5jmij691cccv4x8h8aiclnzx04v08axgz30prp6p71dxlrdms"
+  }
+ },
+ {
+  "ename": "ido-load-library",
+  "commit": "baa49e7d2d5c07ebf77e7941c240b88fcfd0fc8b",
+  "sha256": "13f83gqh39p3yjy7r7qc7kzgdcmqh4b5c07zl7rwzb8y9rz59lhj",
+  "fetcher": "github",
+  "repo": "rolandwalker/ido-load-library",
+  "unstable": {
+   "version": [
+    20140611,
+    1600
+   ],
+   "deps": [
+    "pcache",
+    "persistent-soft"
+   ],
+   "commit": "e03b55957c93aa1a7dd190e173e16ec59dbb2ba7",
+   "sha256": "0l69sr3g1n2x61j6sv6hnbiyk8a2qra6y2kh413qp0sfpx4fzchv"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "pcache",
+    "persistent-soft"
+   ],
+   "commit": "8589cb1e4303066eb333f1cfc789835d1cbe21df",
+   "sha256": "1z7az7h90v72llxvdclcywvf1qd0nhkfa45bp99xi7cy7sqsqssf"
+  }
+ },
+ {
+  "ename": "ido-migemo",
+  "commit": "c52a1ea0afa8e5f439b7ac987b79c49eb08fe95a",
+  "sha256": "0dpgr9lxj7g7kciw4w7y1qmah91z2b2vwj9xyn8m6f6grihg7p2l",
+  "fetcher": "github",
+  "repo": "emacsattic/ido-migemo",
+  "unstable": {
+   "version": [
+    20191017,
+    1919
+   ],
+   "deps": [
+    "migemo"
+   ],
+   "commit": "09a2cc175b500cab7655a25ffc982e78d46ca669",
+   "sha256": "0my4bvi2b4c5q8wdsdhypyk6w6n63pw0240kx3r6kb85l9rg95r3"
+  }
+ },
+ {
+  "ename": "ido-occasional",
+  "commit": "ed49d07aa36dfc742ca3fbfa83a6d624bf2fa525",
+  "sha256": "1vdh5i9qznzd9r148a6jw9v47swf7ykwyciqfzc3ismv5q909bl2",
+  "fetcher": "github",
+  "repo": "abo-abo/ido-occasional",
+  "unstable": {
+   "version": [
+    20150214,
+    1248
+   ],
+   "commit": "d405f1795e1e0c63be411ee2825184738d29c33a",
+   "sha256": "0zlkq29wxd3a4vg0w6ds2jad5h1pja7ccd3l6ppl0kz1b1517qlr"
+  }
+ },
+ {
+  "ename": "ido-occur",
+  "commit": "8a576d8569bf82be01e7d50defcc99a90aab1436",
+  "sha256": "058l2pklg12wkvyyshk8va6shphpbc508fv9a8x25pw857a28pji",
+  "fetcher": "github",
+  "repo": "danil/ido-occur",
+  "unstable": {
+   "version": [
+    20160820,
+    1440
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "6a0bfeaca2e334b47b4f38ab80d63f53535b189e",
+   "sha256": "0q4w0akmnwk42ldbzqxbr7swz026q8wr1g27bl4i4k25bidqlx9q"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "b0e67fe4835c162cbcf8a982bdf377955b9ac5ae",
+   "sha256": "13f21vx3q1qbnl13n3lx1rnr8dhq3zwch22pvy53h8q6sdf7r73a"
+  }
+ },
+ {
+  "ename": "ido-select-window",
+  "commit": "775c8361322c2ba9026130dd60083e0255170b8f",
+  "sha256": "03xqfpnagy2sk67yq7n7s6ma3im37d558zzx8sdzd9pbfxy9ij23",
+  "fetcher": "github",
+  "repo": "pjones/ido-select-window",
+  "unstable": {
+   "version": [
+    20131220,
+    2047
+   ],
+   "commit": "a64707d8d154664d50d12e26417d586e4c3dd78b",
+   "sha256": "1iifpgdpa98si0g2ykr0xbxcbqrvzqfl6r1dv9zihmxhdr7hs9c8"
+  }
+ },
+ {
+  "ename": "ido-skk",
+  "commit": "6da9bd69a646a8edfaf9dc7f2e31e5f057f44b6b",
+  "sha256": "1fyzjkw9xp126bzfv1254bvyakh323iw3wdzrkd9gb4ir39k5jzw",
+  "fetcher": "github",
+  "repo": "tsukimizake/ido-skk",
+  "unstable": {
+   "version": [
+    20151111,
+    950
+   ],
+   "deps": [
+    "ddskk"
+   ],
+   "commit": "89a2e62799bff2841ff634517c86084c4ce69246",
+   "sha256": "149cznbybwj0gkjyvpnh4kn258kxw449m7cn95n9jbh1r45vljvy"
+  }
+ },
+ {
+  "ename": "ido-sort-mtime",
+  "commit": "36d2f7f1bb0d0694a25c1e83340781e08bee814b",
+  "sha256": "1dkny9y3x49dv1vjwz78x2qhb6kdq3fa8qh1xkm30jyapvgiwdg2",
+  "fetcher": "github",
+  "repo": "pkkm/ido-sort-mtime",
+  "unstable": {
+   "version": [
+    20171121,
+    859
+   ],
+   "commit": "f638ff0c922af862f5211779f2311a27fde428eb",
+   "sha256": "0isy3rmw69664fsypg58rs42ql43drf27l90yvplnbcqd7nnnb21"
+  }
+ },
+ {
+  "ename": "ido-springboard",
+  "commit": "409d847fb464a320e626fae56521a81a8e862a3e",
+  "sha256": "04jqnag8jiyfbwvc3vd9ikrsmf6cajld7dz2gz9y0zkj1k4gs7zv",
+  "fetcher": "github",
+  "repo": "jwiegley/springboard",
+  "unstable": {
+   "version": [
+    20170106,
+    755
+   ],
+   "commit": "687d1e5898a880878995dc9bffe93b4598366203",
+   "sha256": "0fn8c4hqblfjvcpg68kj2dmdjqsdnxddqbzgvakl43zckjg8pi01"
+  }
+ },
+ {
+  "ename": "ido-vertical-mode",
+  "commit": "d4bbd212ea4606b9871cf583d06b5cee2f6ce0a9",
+  "sha256": "1vg5s6nd6v2g8ychz1q9cdqvsdw6vag7d9w68sn7blpmlr0nqhfm",
+  "fetcher": "github",
+  "repo": "creichert/ido-vertical-mode.el",
+  "unstable": {
+   "version": [
+    20180618,
+    2101
+   ],
+   "commit": "16c4c1a112796ee0bcf401ea39d3e2643a89feaf",
+   "sha256": "10cfm765qwba0bnablwy8c4mjxvb1lwm89d16svwhp1pn20an6a8"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    6
+   ],
+   "commit": "c3e0514405ba5c15b5527e7f8e2d42dff259788f",
+   "sha256": "1lv82q639xjnmvby56nwqn23ijh6f163bk675s33dkingm8csj8k"
+  }
+ },
+ {
+  "ename": "ido-yes-or-no",
+  "commit": "e575f46b8597a34523df6b6a75da5a640f4c5a2e",
+  "sha256": "0glag4yb9xyf1lxxbdhph2nq6s1vg44i6f2z1ii8bkxpambz2ana",
+  "fetcher": "github",
+  "repo": "DarwinAwardWinner/ido-yes-or-no",
+  "unstable": {
+   "version": [
+    20161108,
+    2351
+   ],
+   "deps": [
+    "ido-completing-read+"
+   ],
+   "commit": "c55383b1fce5879e87e7ca6809fc60534508e182",
+   "sha256": "1p50ycsn1mcq5nqa16w10hm8v2pixibvandc91mj5l7s8zspanik"
+  },
+  "stable": {
+   "version": [
+    1,
+    4
+   ],
+   "deps": [
+    "ido-completing-read+"
+   ],
+   "commit": "9ddee9e878ad62d58c9f4b3a7685f22b8e36e420",
+   "sha256": "046ns1nqisz830f6xwlly1qgmi4v2ikw6vmj0f93jprv4vkjylpq"
+  }
+ },
+ {
+  "ename": "idomenu",
+  "commit": "f856045bc5ab2aee4dd4ad9806917e27e56ec64c",
+  "sha256": "0mg601ak9mhp2fg5n13npcfzphgyms4vkqd18ldmv098z2z1412h",
+  "fetcher": "github",
+  "repo": "birkenfeld/idomenu",
+  "unstable": {
+   "version": [
+    20141123,
+    2120
+   ],
+   "commit": "4b0152d606360c70204fb4c27f68de79ca885386",
+   "sha256": "1vx2g1xgxpcabr49mkl6ggzrpa3k2zhm479j6262vb64swzx33jw"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "5daaf7e06e4704ae43c825488109d7eb8c049321",
+   "sha256": "0bq0kx0889rdy8aasxbpmb0a4awpk2b24zv6x1dmhacmc5rj11i0"
+  }
+ },
+ {
+  "ename": "idris-mode",
+  "commit": "17a86efca3bdebef7c92ba6ece2de214d283c627",
+  "sha256": "0hiiizz976hz3z3ciwg1gs9y10qhxbs8givhz89kvyn4s4861a1s",
+  "fetcher": "github",
+  "repo": "idris-hackers/idris-mode",
+  "unstable": {
+   "version": [
+    20190427,
+    1539
+   ],
+   "deps": [
+    "cl-lib",
+    "prop-menu"
+   ],
+   "commit": "acc8835449475d7cd205aba213fdd3d41c38ba40",
+   "sha256": "0n9xbknc68id0mf8hbfmawi8qpvrs47ix807sk9ffv2g3ik32kk6"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    19
+   ],
+   "deps": [
+    "cl-lib",
+    "prop-menu"
+   ],
+   "commit": "314a0baea5752069de08e814bb134a9643fb675d",
+   "sha256": "0iwgbaq2797k1f7ql86i2pjfa67cha4s2v0mgmrd0qcgqkxsdq92"
+  }
+ },
+ {
+  "ename": "ids-edit",
+  "commit": "ca17de8cdd53bb32a9d3faaeb38f19f92b18ee38",
+  "sha256": "1n4gpcl3qj65cmaq9cdljsmrf84570z4chfvga6slsqjz5him8d1",
+  "fetcher": "github",
+  "repo": "kawabata/ids-edit",
+  "unstable": {
+   "version": [
+    20170818,
+    1502
+   ],
+   "commit": "8562a6cbfb3f2d44bc6f62ab15081a80f8fee502",
+   "sha256": "10h64c5n9piq9ly7ipqq33ji8x8vwh9j1h7r05yab8a2sn0h8587"
+  }
+ },
+ {
+  "ename": "iedit",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0bh8ir6kspxjsvjww5y3b5hl3flbm2cc77jh8vnnva3z086f18mh",
+  "fetcher": "github",
+  "repo": "victorhge/iedit",
+  "unstable": {
+   "version": [
+    20200412,
+    756
+   ],
+   "commit": "0fb3d380866664c3ab543acede606d343c257406",
+   "sha256": "0fz3p41j6d6bwk95v626j7w1z4rvbdxms6a4azy9dfncplnbnih0"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    9,
+    9
+   ],
+   "commit": "39919478f9472ce7a808ca601f4c19261ecc2f99",
+   "sha256": "1pwkrm98vlpzsy5iwwfksdaz3zzyi7bvdf5fglhsn4ssf47p787g"
+  }
+ },
+ {
+  "ename": "ietf-docs",
+  "commit": "cedfdfe2c282d0484ea8239726f46a4861ef07ea",
+  "sha256": "0wnk36z9g7lksmynd04hb2m6rx45wpxnxj1lhrlpjnzsrknhf4k3",
+  "fetcher": "github",
+  "repo": "choppsv1/ietf-docs",
+  "unstable": {
+   "version": [
+    20190420,
+    851
+   ],
+   "commit": "ae157549eae5ec78dcbf215c2f48cb662b73abd0",
+   "sha256": "050c6fpf41xzx5kdpqcpa2rb0fk1a3h3009fdz77v0dp3bxv3a5d"
+  }
+ },
+ {
+  "ename": "iflipb",
+  "commit": "fad6fc8bc3c0be0d5789a0d7626ebc3f298b4318",
+  "sha256": "1nfrrxgi9nlhn477z8ay7jxycpcghhhmmg9dagdhrlrr20fx697d",
+  "fetcher": "github",
+  "repo": "jrosdahl/iflipb",
+  "unstable": {
+   "version": [
+    20190817,
+    547
+   ],
+   "commit": "aeeb85633566ed3c13dbe94a6a4925d8930b7b85",
+   "sha256": "07010alf6ymhs0nyj3arafksba0rdvgzjw9wqqhayzw6qqannbb2"
+  },
+  "stable": {
+   "version": [
+    1,
+    4
+   ],
+   "commit": "a5ad1fbd1173cff5228dab265515c92c0778f86a",
+   "sha256": "0gyxd5d57j0x93mqnfwwdf28plp102xh0ag2d2iws7y1d5m99wm2"
+  }
+ },
+ {
+  "ename": "ignoramus",
+  "commit": "ac5439afe2f9a902e615f0cf919ef7138559c0f0",
+  "sha256": "1czqdmlrds1l5afi8ldg7nrxcwav86538z2w1npad3dz8xk67da9",
+  "fetcher": "github",
+  "repo": "rolandwalker/ignoramus",
+  "unstable": {
+   "version": [
+    20160414,
+    1409
+   ],
+   "commit": "b37dc7c07edd9d152436f9019c14df158b599be3",
+   "sha256": "1b4r4h8yrs8zkyr1hnnx2wjrmm39wbqxfhyxpjb5pxi4zk3fh4rj"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    4
+   ],
+   "commit": "00385fcd0d42de3a470f61c1fdbe7e19fbef9c5b",
+   "sha256": "1ca2n6vv2z7c3550w0jzwmp6xp0rmrrbljr1ik2ijign62r35a3q"
+  }
+ },
+ {
+  "ename": "igv",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0vjqdyj9j26y0hhzmip6lpwc8g1c9vnmgya1p7v77bkgdicgl659",
+  "fetcher": "git",
+  "url": "https://bitbucket.org/sbarbit/eigv",
+  "unstable": {
+   "version": [
+    20141210,
+    1227
+   ],
+   "commit": "47ac6ceede252f451348a2c696398c0cb5279555",
+   "sha256": "11pss3hfxkfkyi273zfajdj43shdl6pn739zfv9jbm75v7m9bz6f"
+  }
+ },
+ {
+  "ename": "image+",
+  "commit": "02d7400477a993b7a3cae327501dbf8db97dfa28",
+  "sha256": "1a9dxswnqn6cvx28180kclpjc0vc6fimzp7n91gpdwnmy123x6hg",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-imagex",
+  "unstable": {
+   "version": [
+    20150707,
+    1616
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "6834d0c09bb4df9ecc0d7a559bd7827fed48fffc",
+   "sha256": "0v66wk9nh0raih4jhrzmmyi5lbysjnmbv791vm2230ffi2hmwxnd"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "967508a6c151e6ab6e97d3ac332dc5599011830d",
+   "sha256": "0k69xbih0273xvmj035vcmm67l6hgjb99pb1jbva5x0pnszb1vdv"
+  }
+ },
+ {
+  "ename": "image-archive",
+  "commit": "17464f31b07f64da0e9db187cd6f5facee3ad7ce",
+  "sha256": "0x0lv5dr1gc9bnr3dn26bc9s1ccq2rp8c4a1licbi929f0jyxxfp",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-image-archive",
+  "unstable": {
+   "version": [
+    20150621,
+    132
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "8d29535bd832329ffeeac780aae7aa8919af1175",
+   "sha256": "068z3ygq9p139ikm04xqhhqhc994an5isba5c7kpqs009y09xw3w"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    7
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "699e967fa7b1dfcce2bf2ec878e74f4238bb6e45",
+   "sha256": "0imvxzcja91cd19zm2frqfpxm8j0bc89w9s7q0pkpvyjz44kjbq8"
+  }
+ },
+ {
+  "ename": "image-dired+",
+  "commit": "98f83f450804f1dc496a7bda17818cdae3f52151",
+  "sha256": "0hhwqfn490n7p12n7ij4xbjh15gfvicmn21fvwbnrmfqc343pcdy",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-image-diredx",
+  "unstable": {
+   "version": [
+    20150430,
+    544
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b68094625d963056ad64e0e44af0e2266b2eadc7",
+   "sha256": "1n2ya9s0ld257a8iryjd0dz0z2zs1xhzfiwsdkq4l4azwxl54m29"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b68094625d963056ad64e0e44af0e2266b2eadc7",
+   "sha256": "1n2ya9s0ld257a8iryjd0dz0z2zs1xhzfiwsdkq4l4azwxl54m29"
+  }
+ },
+ {
+  "ename": "imakado",
+  "commit": "ca131089c823065852f58347a88bd49217a22072",
+  "sha256": "18mj0vpv3dybfpa8hl9jwlagsivbhgqgz8lwb8cswsq9hwv3jgd3",
+  "fetcher": "github",
+  "repo": "imakado/emacs-imakado",
+  "unstable": {
+   "version": [
+    20141024,
+    923
+   ],
+   "commit": "00a1e7eea2cb9e9066343a23927d6c747707902f",
+   "sha256": "0f3xdqhq9nprvl8bnmgrx20h08ddkfak0is29bsqwckkfgn7pmqp"
+  }
+ },
+ {
+  "ename": "imake",
+  "commit": "28de8f7f5302b27c7c6600ad65a998119518be43",
+  "sha256": "0j732fi6999n9990w4l28raw140fvqfbynyh4x65yilhw95r7c34",
+  "fetcher": "github",
+  "repo": "tarsius/imake",
+  "unstable": {
+   "version": [
+    20200103,
+    1238
+   ],
+   "commit": "100d62c7095743fadddfad5b9e0740ee386ba4cf",
+   "sha256": "0wpfl74v7xnvsk3ribxkfyy4p5p9j2wskrcf0naavqpgm6fc6jvr"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    3
+   ],
+   "commit": "100d62c7095743fadddfad5b9e0740ee386ba4cf",
+   "sha256": "0wpfl74v7xnvsk3ribxkfyy4p5p9j2wskrcf0naavqpgm6fc6jvr"
+  }
+ },
+ {
+  "ename": "imapfilter",
+  "commit": "2415894afa3404fbd73c84c58f8b8267187d6d86",
+  "sha256": "0i893kqj6yzadhza800r6ri7fihl01r57z8yrzzh3d09qaias5vz",
+  "fetcher": "github",
+  "repo": "tarsius/imapfilter",
+  "unstable": {
+   "version": [
+    20180318,
+    2027
+   ],
+   "commit": "79bbbe918319bc1e8f42a0bef53dc7c77fe868ea",
+   "sha256": "0lqhwh8kav7f526a40rjdy2hzarzph1i3ig2dmbf02gp32sl7rg9"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    3
+   ],
+   "commit": "79bbbe918319bc1e8f42a0bef53dc7c77fe868ea",
+   "sha256": "0lqhwh8kav7f526a40rjdy2hzarzph1i3ig2dmbf02gp32sl7rg9"
+  }
+ },
+ {
+  "ename": "imenu-anywhere",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "1ylqzdnd3nzcpyyd6rh6i5q9mvf8c99rvpk51fzfm3yq2kyw4dbq",
+  "fetcher": "github",
+  "repo": "vspinu/imenu-anywhere",
+  "unstable": {
+   "version": [
+    20190512,
+    1939
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "88b0e120284058b32252e4b0ed1a07c9fe44092f",
+   "sha256": "1w0n4hx29zc6n06qfq3ryc4dcfmk7wx3lw083yv7fi12hjj255vm"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    4
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "fc7f0fd2f19e5ebee70156a99bf87393123893e3",
+   "sha256": "0g2gb7jrys81kphmhlvhvzwl8l75j36y6pqjawh9wmzzwad876q5"
+  }
+ },
+ {
+  "ename": "imenu-list",
+  "commit": "86dea881a5b2d0458449f08b82c2614ad9abd068",
+  "sha256": "092fsn7hnbfabcyakbqyk20pk62sr8xrs45aimkv1l91681np98s",
+  "fetcher": "github",
+  "repo": "bmag/imenu-list",
+  "unstable": {
+   "version": [
+    20190115,
+    2130
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "46008738f8fef578a763c308cf6695e5b4d4aa77",
+   "sha256": "14l3yw9y1nk103s7z5i1fmd6kvlb2p6ayi6sf9l1x1ydg9glrpl8"
+  },
+  "stable": {
+   "version": [
+    0,
+    8
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "27170d27c9594989587c03c23f753a809f6a0e10",
+   "sha256": "13xh9bdl3k6ccfq83wjmkpi4269qahv4davki4wq18dr4amrzhlx"
+  }
+ },
+ {
+  "ename": "imenus",
+  "commit": "cc571105a8d7e2ea85391812f1fa639787fa7563",
+  "sha256": "1q0j6r2n5vjlbgchkz9zdglmmbpd8agawzcg61knqrgzpc4lk82r",
+  "fetcher": "github",
+  "repo": "alezost/imenus.el",
+  "unstable": {
+   "version": [
+    20180505,
+    1717
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "149cfa579ee231014d3341a0e05add69759757a5",
+   "sha256": "00licvs457wzqq06a8cx7vw22kyqky20i7yq7a2nzf3cfl7vaya7"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "ee1bbd2228dbb86df2865dc9004d375421b171ba",
+   "sha256": "1y57xp0w0c6hg3gn4f1l3612a18li4gwhfa4dy18fy94gr54ycpx"
+  }
+ },
+ {
+  "ename": "imgbb",
+  "commit": "89d363862890aa7f25db1a5fc5e209bccbadf0bf",
+  "sha256": "0p29pasq0f0b5x7yig4g4n1k0y82aiapxazz359pm7n4kjy2s6qp",
+  "fetcher": "github",
+  "repo": "ecraven/imgbb.el",
+  "unstable": {
+   "version": [
+    20180609,
+    1649
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "a524a46263835aa474f908827ebab4e8fa586001",
+   "sha256": "1fhhpz29x9vkhzms2qkxblic96kqzg0rqsxj71vgz6fpwdb4f9gy"
+  }
+ },
+ {
+  "ename": "immaterial-theme",
+  "commit": "9a95d88bb00b1313da82929bc2733d726d2041d7",
+  "sha256": "15gwqjfpls7lqc37s70vnhycnry5g9grn6shk2wpijrxfnmyqjhj",
+  "fetcher": "github",
+  "repo": "petergardfjall/emacs-immaterial-theme",
+  "unstable": {
+   "version": [
+    20200308,
+    1330
+   ],
+   "commit": "19c46859e041a0c0e7f40a9157a6c4d0d660f441",
+   "sha256": "0nx1g7caypnkid7bzhm4gg44cmpikpz1qz1cp11y6rlq1lwrb1d9"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    2
+   ],
+   "commit": "19c46859e041a0c0e7f40a9157a6c4d0d660f441",
+   "sha256": "0nx1g7caypnkid7bzhm4gg44cmpikpz1qz1cp11y6rlq1lwrb1d9"
+  }
+ },
+ {
+  "ename": "immortal-scratch",
+  "commit": "caca0b2bc2aaac563074cbb4ea4296fce749e203",
+  "sha256": "00g68abnssf9xw233zs09jyjqbm0720isamc97rfr95d7wvrb2cr",
+  "fetcher": "github",
+  "repo": "jpkotta/immortal-scratch",
+  "unstable": {
+   "version": [
+    20160517,
+    2118
+   ],
+   "commit": "faeab0ad6c33c74c0cbd1dfcebffaa0690de40c6",
+   "sha256": "1mx9f8pwnbrm6q9ngdyv64aqkw1izj83m0mf7zqlpww7yfhv1q9b"
+  }
+ },
+ {
+  "ename": "immutant-server",
+  "commit": "d6e906492f9982e2cebd1e4838d7b7c81a295efa",
+  "sha256": "15vcxag1ni41ja4b3q0444sq5ysrisis59la7li6h3617wy8r02i",
+  "fetcher": "github",
+  "repo": "leathekd/immutant-server.el",
+  "unstable": {
+   "version": [
+    20140311,
+    2208
+   ],
+   "commit": "2a21e65588acb6a976f2998e30b21fdabdba4dbb",
+   "sha256": "0rbamm9qvipgswxng8g1d7rbdbcj7sgwrccg7imcfapwwq7xhj4h"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    0
+   ],
+   "commit": "6f3d303354a229780a33e6bae64460a95bfefe60",
+   "sha256": "1pf7pqh8yzyvh4gzvp5npfq8kcfjcbzra0kkw7zmz769xxc8v84x"
+  }
+ },
+ {
+  "ename": "impatient-mode",
+  "commit": "aaa64c4d43139075d77f4518de94bcbe475d21fc",
+  "sha256": "07z5ds3zgzkxvxwaalp9i5x2rl5sq4jjk8ygk1rfmsl52l5y1z6j",
+  "fetcher": "github",
+  "repo": "skeeto/impatient-mode",
+  "unstable": {
+   "version": [
+    20200327,
+    1619
+   ],
+   "deps": [
+    "htmlize",
+    "simple-httpd"
+   ],
+   "commit": "fc84f4a333d47ca853842570cf35e659753a3ebe",
+   "sha256": "14zycqky7xkmbfacmfdqbmq1qs3sj2r41nfmg09dv0hl97pavir8"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "htmlize",
+    "simple-httpd"
+   ],
+   "commit": "96c068d5add95595dc5be42115d100cf99f908ba",
+   "sha256": "18fawpnqcm1yv7f83sz05pjihwydmafmccfmizyg0hlgayhj0izf"
+  }
+ },
+ {
+  "ename": "import-js",
+  "commit": "6f26b8281f9bd05e3c8f2ef21838275711e622c9",
+  "sha256": "00b2qv1y8879cf8ayplmwqd36w7sppx57myi2wjhy9i2rnvdbmgn",
+  "fetcher": "github",
+  "repo": "Galooshi/emacs-import-js",
+  "unstable": {
+   "version": [
+    20180709,
+    1833
+   ],
+   "deps": [
+    "grizzl"
+   ],
+   "commit": "fb1f167e33c388b09a2afd32fbda90a67bfb2e40",
+   "sha256": "0if117lia2ykd6ai0cf5z4ddhsm9icijigwbrn079v7m9s8yl43p"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "deps": [
+    "grizzl"
+   ],
+   "commit": "0a1032894445062b87dbe4e2c8cdba35ac25c250",
+   "sha256": "0vx2k4k8ig1k74ifxaxvhbkmfmba683qza7f9pp08daa43mgr1r3"
+  }
+ },
+ {
+  "ename": "import-popwin",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "0ax0s2jkfmjlnvj741n58m52srppzcn58l4vqq5gvmqj3dbh9rhd",
+  "fetcher": "github",
+  "repo": "emacsorphanage/import-popwin",
+  "unstable": {
+   "version": [
+    20170218,
+    1407
+   ],
+   "deps": [
+    "popwin"
+   ],
+   "commit": "bb05a9e226f8c63fe7b18a3e92010357049ab5ba",
+   "sha256": "0jjm214zfq2kk8vzf67vala46lbbkjyms7qm27qv3yhcbc7ricvn"
+  },
+  "stable": {
+   "version": [
+    0,
+    10
+   ],
+   "deps": [
+    "popwin"
+   ],
+   "commit": "6a21efc7fd44f8c2484d22eadf298e4bfd4bc003",
+   "sha256": "1h4c3cib87hvgp37c30lx7cpyxvgdsb9hp7z0nfrkbbif0acrj2i"
+  }
+ },
+ {
+  "ename": "importmagic",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1kpmgpll0zz3zlr3q863v1fq6wmwdwx7mn676x0r7g4iy1bdslmv",
+  "fetcher": "github",
+  "repo": "anachronic/importmagic.el",
+  "unstable": {
+   "version": [
+    20180520,
+    303
+   ],
+   "deps": [
+    "epc",
+    "f"
+   ],
+   "commit": "86f17856db194c5f18b30f35df40fb029d5544b5",
+   "sha256": "0cak79lnlbfigl6lh3c5wzphxssq78vyd9xxj3zi7ln5q9ijl6pp"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "epc",
+    "f"
+   ],
+   "commit": "c0360a8146ca65565a7fa66c6d72986edd916dd5",
+   "sha256": "0s6hp62kmhvmgj3m5jr3cfqc8yv3p8jfxk0piq8xbf2chr1hp6l5"
+  }
+ },
+ {
+  "ename": "indent-guide",
+  "commit": "5d7110054801e3af5e5ef710a29f73116a2bc746",
+  "sha256": "029fj9rr9vfmkysi6lzpwra92j6ppw675qpj3sinfq7fqqlicvp7",
+  "fetcher": "github",
+  "repo": "zk-phi/indent-guide",
+  "unstable": {
+   "version": [
+    20191106,
+    240
+   ],
+   "commit": "7fc710748f9e5a086acfe77970f117df89ee9749",
+   "sha256": "055cpcj57k14v2vdpc1an6dww5ncvfpxghpgw1spv53wzgv8vzkq"
+  },
+  "stable": {
+   "version": [
+    20160630
+   ],
+   "commit": "feb207cb5610f351c7cdcf266e0c99117b2f786c",
+   "sha256": "0ykddzily3b6c6k7fvq274pqdjf3934n8p3nrmnsw6c93i1ndd4f"
+  }
+ },
+ {
+  "ename": "indent-info",
+  "commit": "1274c0d871c51e358b3de577372dae8e3a04ead0",
+  "sha256": "0fa6p5fvyxib1iz025kqak7navb11jlfxw5x2jr47180vv9a1373",
+  "fetcher": "github",
+  "repo": "terlar/indent-info.el",
+  "unstable": {
+   "version": [
+    20200128,
+    1052
+   ],
+   "commit": "9548f14e7f0f7220d6cd1b8e88756b89fc57c471",
+   "sha256": "1hmrg1pyzcldqh858j3zpb6y0ap4x6142m56pas0lyh65d2wzggk"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "4713807101bff80b342d0f847da9006be001141b",
+   "sha256": "0sprs5qgrbvgxd6k8h8fyybxdxfd3izhvk1bh13vg238qbn09a26"
+  }
+ },
+ {
+  "ename": "indent-lint",
+  "commit": "2cd74b5fe81e9b2dcdd9f40e8d5693335629f6ec",
+  "sha256": "1wy8cpyiljjg3315pwivpzlz5cjnxpcigx3pv7rrx5lvdzapz5v8",
+  "fetcher": "github",
+  "repo": "conao3/indent-lint.el",
+  "unstable": {
+   "version": [
+    20200129,
+    2046
+   ],
+   "deps": [
+    "async",
+    "async-await"
+   ],
+   "commit": "23ef4bab5509e2e7fb1f4a194895a9510fa7c797",
+   "sha256": "00ipp87hjiymraiv6xy0lqzhn9h3wcrw7z4dkzb2934d7bd08j29"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "async",
+    "async-await"
+   ],
+   "commit": "5601a716d4daeb444642736ddef420cbc1047968",
+   "sha256": "0ndpdqdcg2rlrw5z86gyj46qsmsilh3a4snyyybi87kk5ajk2k64"
+  }
+ },
+ {
+  "ename": "indent-tools",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "12rawl9qaihgyascy53yxpkknp95wh8fiqygb5cgl7d761qizvp6",
+  "fetcher": "gitlab",
+  "repo": "emacs-stuff/indent-tools",
+  "unstable": {
+   "version": [
+    20190606,
+    1642
+   ],
+   "deps": [
+    "hydra",
+    "s",
+    "yafolding"
+   ],
+   "commit": "c419874e6fb296ecdba94b2f4b73c9eecdd5329d",
+   "sha256": "1dwhn9ssirr7i08rfd97mih629cxc9jwnvncb74dxdbgn1bi2b9k"
+  }
+ },
+ {
+  "ename": "indian-ext",
+  "commit": "04e29d1a745d46ff32ccd9ee787ce1fe92786ec6",
+  "sha256": "07mny5rd2bmj1v260zfs4imp795lw4gnwr06pcx0s1ml2km1a2k2",
+  "fetcher": "github",
+  "repo": "paddymcall/indian-ext",
+  "unstable": {
+   "version": [
+    20190424,
+    1547
+   ],
+   "commit": "c941cde1205642c6b933ae6abbc47d199f609df0",
+   "sha256": "0523x5am383j1msaiflffa98mm05y38v4jvj144hbrhrdk3vykrs"
+  }
+ },
+ {
+  "ename": "indicators",
+  "commit": "72c96bad0d0b5a4f738fd1b2afe5d302eded440d",
+  "sha256": "1rhmz8sfi2gnv72sbw6kgyzidk43mnp05wnscw9vjvz9v0vwirss",
+  "fetcher": "github",
+  "repo": "Fuco1/indicators.el",
+  "unstable": {
+   "version": [
+    20161211,
+    1126
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "f62a1201f21453e3aca93f48483e65ae8251432e",
+   "sha256": "0n933jigp0awba2hxg3kwscmfmmqn3jwbrxcw3vw9aj0a5rg5bq6"
+  }
+ },
+ {
+  "ename": "indium",
+  "commit": "4292058cc6e31cabc0de575134427bce7fcef541",
+  "sha256": "024ljx7v8xahmr8jm41fiy8i5jbg48ybqp5n67k4jwg819cz8wvl",
+  "fetcher": "github",
+  "repo": "NicolasPetton/Indium",
+  "unstable": {
+   "version": [
+    20200116,
+    1247
+   ],
+   "deps": [
+    "company",
+    "js2-mode",
+    "js2-refactor",
+    "json-process-client",
+    "seq"
+   ],
+   "commit": "59f12cb1bc73bb399e00b2c6c69d21bdcb9c0955",
+   "sha256": "06x20zapygdgh7i2nr3c8xk8znrpp69yl5vpz08kkix7vssr9sxx"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    4
+   ],
+   "deps": [
+    "company",
+    "js2-mode",
+    "js2-refactor",
+    "json-process-client",
+    "seq"
+   ],
+   "commit": "9614d63fa5a5126bd5b68d62410894371da081bf",
+   "sha256": "1cvc9nk1cbym0ah6z0zmgv9bywj3lxvcaflywmavnn4gvxg67m9n"
+  }
+ },
+ {
+  "ename": "indy",
+  "commit": "e997b356b009b3d2ab467fe49b79d728a8cfe24b",
+  "sha256": "118n3n07h1vx576fdv6v5a94aa004q0gmy9hlsnrswpxa30ahnw7",
+  "fetcher": "github",
+  "repo": "kwrooijen/indy",
+  "unstable": {
+   "version": [
+    20190807,
+    625
+   ],
+   "commit": "abc5bee424780ad2de5520f8fefbf8e120c0d9ed",
+   "sha256": "1mvmd8vm9w6vhr7ablxk5pylwrga6knhjjbin9l1xlgrpdh2pglp"
+  }
+ },
+ {
+  "ename": "inf-clojure",
+  "commit": "5d6112e06d1efcb7cb5652b0bec8d282d7f67bd9",
+  "sha256": "0n8w0vx1dnbfz88j45a57z9bsmkxr2zyh6ld72ady8asanf17zhl",
+  "fetcher": "github",
+  "repo": "clojure-emacs/inf-clojure",
+  "unstable": {
+   "version": [
+    20200425,
+    1648
+   ],
+   "deps": [
+    "clojure-mode"
+   ],
+   "commit": "f29861204ddbb032b425c7d693e8c006b7b027c6",
+   "sha256": "127kl64hqdy04qdbqr1xfzky3d8fzgbmp7z4hv6mjsc0p4s19azw"
+  },
+  "stable": {
+   "version": [
+    2,
+    2,
+    0
+   ],
+   "deps": [
+    "clojure-mode"
+   ],
+   "commit": "ff72d667c2709166d19ac15a36f7aac3423cefa1",
+   "sha256": "07l8wkm0j6y2cj7bbb24x4rkjgf4q6ag0c1kcjs0sfmf1kaf14bk"
+  }
+ },
+ {
+  "ename": "inf-crystal",
+  "commit": "ff84c742eebb84577f362b2739f4bcf1434d58ac",
+  "sha256": "09ssq7i5c2fxxbrsp3nn1f1ah1yv2nb19n5s1iqyykkk316k2q26",
+  "fetcher": "github",
+  "repo": "brantou/inf-crystal.el",
+  "unstable": {
+   "version": [
+    20180119,
+    211
+   ],
+   "deps": [
+    "crystal-mode"
+   ],
+   "commit": "02007b2a2a3bea44902d7c83c4acba1e39d278e3",
+   "sha256": "18627gvpgw2ay7zcbglw6gwpslgh69hbvynwcyqln4c17fk9h0kw"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "crystal-mode"
+   ],
+   "commit": "71a330f2d29e2fb4f51d223cf6230b88620a80af",
+   "sha256": "0vija33n2j4j5inzm29qk1bjzaxjm97zn263j15258pqxwkbddv3"
+  }
+ },
+ {
+  "ename": "inf-mongo",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "0f12yb3dgkjnpr4d36jwfnncqzz7kl3bnnrmjw7hv223p2ryzwpx",
+  "fetcher": "github",
+  "repo": "endofunky/inf-mongo",
+  "unstable": {
+   "version": [
+    20180408,
+    1338
+   ],
+   "commit": "2e498d1c88bd1904eeec18ed06b1a0cf8bdc2a92",
+   "sha256": "1m6skisj6r3fbxadpwwgf3a3934b2qvwb7zj975qksxq56ij0wkq"
+  }
+ },
+ {
+  "ename": "inf-ruby",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "02f01vwzr6j9iqcdns4l579bhia99sw8hwdqfwqjs9gk3xampfpp",
+  "fetcher": "github",
+  "repo": "nonsequitur/inf-ruby",
+  "unstable": {
+   "version": [
+    20200327,
+    1418
+   ],
+   "commit": "41e5ed3a886fca56990486f1987bb3bae0dbd54b",
+   "sha256": "12qgd2p664rh0ks5kq6sxaqi5nlmxrzj5p0kpqrx40caicj6jfpl"
+  },
+  "stable": {
+   "version": [
+    2,
+    5,
+    2
+   ],
+   "commit": "d2cc45ac1a035286decb12c4f49c696ad5f03d27",
+   "sha256": "0a1hhvfbl6mq8rjsi77fg9fh5a91hi5scjrg9rjqc5ffbql67y0v"
+  }
+ },
+ {
+  "ename": "inflections",
+  "commit": "392c7616d27bf12b29ef3c2ea71e42ffaea81cc6",
+  "sha256": "0f02bhm2a5xiaxnf2c2hlpa4p121xfyyj3c59fy0yldipdxhvw70",
+  "fetcher": "github",
+  "repo": "eschulte/jump.el",
+  "unstable": {
+   "version": [
+    20170913,
+    916
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "e4f1372cf22e811faca52fc86bdd5d817498a4d8",
+   "sha256": "0354b64drvv8v5g13xy5nc1klwx4hldz1b5mf1frhna7h2dqz0j9"
+  },
+  "stable": {
+   "version": [
+    2,
+    5
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "40a7ffdf734ffe7d1968909663146255d7ba69c8",
+   "sha256": "1ig1wdjg914p9ng1nir2fid4mb3xz2dbpmkdnfy1klq2zp0xw2s3"
+  }
+ },
+ {
+  "ename": "info-beamer",
+  "commit": "e9da9aac33df6e53a8cbabcffd8e3a363298b9f3",
+  "sha256": "0jlwvn96diwnngjbabq6wzp5q6rvmwa6p36d80nv8r7x7ch0740q",
+  "fetcher": "github",
+  "repo": "dakra/info-beamer.el",
+  "unstable": {
+   "version": [
+    20180604,
+    2122
+   ],
+   "commit": "97db34d23cb05b23e50c15875ee84f5d3236e0db",
+   "sha256": "0z1cya3mhgh5ibj3dgwzii1fkbzsq7zjjzg6hfdv3pd4a7722qlx"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "f65e89ad0c2a7acdef1dc182947d59287f371783",
+   "sha256": "0vd8d3dgqgqhrkmmvvf90ac04hcng03q32niwd54c0xj63hcxg8l"
+  }
+ },
+ {
+  "ename": "info-buffer",
+  "commit": "6a7caa8c4fea7ef2211f01bc8340c660a6e6c5f3",
+  "sha256": "1si3sz34bmzcnqm4bc6nq7q2rmsyksh0610bn0r9frf12vakg28p",
+  "fetcher": "gitlab",
+  "repo": "llvilanova/info-buffer",
+  "unstable": {
+   "version": [
+    20170112,
+    1422
+   ],
+   "commit": "d35dad6e766c6e2ddb8dc6acb4ce5b6e10fbcaa7",
+   "sha256": "0czkp7cf7qmdm1jdn67gxyxz8b4qj2kby8if50d450xqwbx0da7x"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "d35dad6e766c6e2ddb8dc6acb4ce5b6e10fbcaa7",
+   "sha256": "0czkp7cf7qmdm1jdn67gxyxz8b4qj2kby8if50d450xqwbx0da7x"
+  }
+ },
+ {
+  "ename": "info-colors",
+  "commit": "d671ae8dc27439eea427e1848fc11c96ec5aee64",
+  "sha256": "1mbabrfdy9xn7lpqivqm8prp83qmdv5r0acijwvxqd3a52aadc2x",
+  "fetcher": "github",
+  "repo": "ubolonton/info-colors",
+  "unstable": {
+   "version": [
+    20200125,
+    1447
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "47ee73cc19b1049eef32c9f3e264ea7ef2aaf8a5",
+   "sha256": "1zmiik1ba7xspbk2g8igr1rscxxzxpzjrzspxjcw9khw6z4iwr51"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "13dd9b6a7288e6bb692b210bcb9cd72016658dae",
+   "sha256": "1h2q19574sc1lrxm9k78668pwcg3z17bnbgykmah01zlmbs264sx"
+  }
+ },
+ {
+  "ename": "info-rename-buffer",
+  "commit": "4750abf33d23bce4ca33eb1afe5b972f14f3af39",
+  "sha256": "05ab9apr6zx2k3xqfbq1jjfql9l3hdsf5i4pj8ay0b9lb2x11dpm",
+  "fetcher": "github",
+  "repo": "oitofelix/info-rename-buffer",
+  "unstable": {
+   "version": [
+    20200328,
+    1450
+   ],
+   "commit": "87fb263b18717538fd04878e3358e1e720415db8",
+   "sha256": "07ylrbl9i2d09nspj481hkgcq9vs4ikvl86sfj7594zzdyy6b8qx"
+  }
+ },
+ {
+  "ename": "inform",
+  "commit": "fb678165f97deeebfab624a3bd74ce28836607fd",
+  "sha256": "1smgmzg8nf4lh2ywlzrzzqpmh66rxwbn7vrsvby8v6rx6bmyhfa1",
+  "fetcher": "github",
+  "repo": "dieter-wilhelm/inform",
+  "unstable": {
+   "version": [
+    20200512,
+    1351
+   ],
+   "commit": "54e0c51960c7f50de31a6831c034ea6adc5a8892",
+   "sha256": "0j3hc3f7yx9dklbvvwpcq0d2n3lp0z47l5066ngvmm52aihhhiyd"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "commit": "5e096549632b2691fe1f975394d07a31cf603fc6",
+   "sha256": "0bs0z957cs240cacl3bl72dp1sqcpd0j60yrv972w6p1j9v0f3rn"
+  }
+ },
+ {
+  "ename": "inform7",
+  "commit": "5d62f9e9e513103dbebc84bfcb0d18dcf7563211",
+  "sha256": "1h8bba0npnsjcyvmd40lbm54ib1rsa5c5df6lc7m53zg2h9fzcbd",
+  "fetcher": "github",
+  "repo": "GuiltyDolphin/inform7-mode",
+  "unstable": {
+   "version": [
+    20200430,
+    1539
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "a409bbc6f04264f7f00616a995fa6ecf59d33d0d",
+   "sha256": "1sai118i5ry58jjc3777kn2ca2nhaxszhl0va6gyy7j2cdpg8gpy"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "a409bbc6f04264f7f00616a995fa6ecf59d33d0d",
+   "sha256": "1sai118i5ry58jjc3777kn2ca2nhaxszhl0va6gyy7j2cdpg8gpy"
+  }
+ },
+ {
+  "ename": "inherit-local",
+  "commit": "08b978724ff26b3ea7a134d307d888c80e2a92a9",
+  "sha256": "1v3q3s6qq64k1f4ck6rfgsy1arnf9cxg2kw6d1ahfrwr4ixsqm87",
+  "fetcher": "github",
+  "repo": "shlevy/inherit-local",
+  "unstable": {
+   "version": [
+    20170409,
+    1649
+   ],
+   "commit": "b1f4ff9c41f9d64e4adaf5adcc280b82f084cdc7",
+   "sha256": "1fargashyqn4ga420k3ikc1akf7mw3zcarpg24gh2591p4swa0ih"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "commit": "b1f4ff9c41f9d64e4adaf5adcc280b82f084cdc7",
+   "sha256": "1fargashyqn4ga420k3ikc1akf7mw3zcarpg24gh2591p4swa0ih"
+  }
+ },
+ {
+  "ename": "ini-mode",
+  "commit": "000cca577d000bafe7bf5711d0bfe7593fb6975a",
+  "sha256": "0f6fbmg4wmlzghcibfbcx3z124b2017rhsasi5smgx9i2vkydzrm",
+  "fetcher": "github",
+  "repo": "Lindydancer/ini-mode",
+  "unstable": {
+   "version": [
+    20170424,
+    909
+   ],
+   "commit": "2194cfa2fd13196a37350ec20b3f00dcf6162b7c",
+   "sha256": "0s3dcqywrbggrcn9j5nibhcl4xbnhdndz5sibcp26qswd18jyrdk"
+  }
+ },
+ {
+  "ename": "init-loader",
+  "commit": "e46e6ec79ff4c76fc85e13321e6dabd5797c5f45",
+  "sha256": "0rq7759abp0ml0l8dycvdl0j5wsxw9z5y9pyx68973a4ssbx2i0r",
+  "fetcher": "github",
+  "repo": "emacs-jp/init-loader",
+  "unstable": {
+   "version": [
+    20160528,
+    1315
+   ],
+   "commit": "5d3cea1004c11ff96b33020e337b03b925c67c42",
+   "sha256": "17bg4s8yz7yz28m04fp2ff6ld0y01yl99wkn2k5rkg4j441xg3n2"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "128ee76adbf431f0b8c30a3a29cb20c9c5100cde",
+   "sha256": "031vb7ndz68x0119v4pyizz0ykd341ywcp5s7i4z35zx1vcqj8az"
+  }
+ },
+ {
+  "ename": "init-open-recentf",
+  "commit": "4db8b6eced50726c788d7343137f6b4558575abf",
+  "sha256": "0xlmfxhxb2car8vfx7krxmxb3d56x0r3zzkj8ds7yqvr65z85x2r",
+  "fetcher": "github",
+  "repo": "zonuexe/init-open-recentf.el",
+  "unstable": {
+   "version": [
+    20200321,
+    737
+   ],
+   "commit": "369304d6adb6875948c4534419c4f303ac23c4f6",
+   "sha256": "1i41xcjj0kdhn7m29jb5gq2j2cyxn424y4lwx6s3fjj1ckx808ii"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "commit": "369304d6adb6875948c4534419c4f303ac23c4f6",
+   "sha256": "1i41xcjj0kdhn7m29jb5gq2j2cyxn424y4lwx6s3fjj1ckx808ii"
+  }
+ },
+ {
+  "ename": "initsplit",
+  "commit": "5a908c8fad08cd4d7dbb586570d0f0b384bf9071",
+  "sha256": "0n9dk3x62vgxfn39jkmdg8wxsik0xqkprifgvqzyvn8xcx1blyyq",
+  "fetcher": "github",
+  "repo": "dabrahams/initsplit",
+  "unstable": {
+   "version": [
+    20160919,
+    1818
+   ],
+   "commit": "c941d436eb2b10b01c76a582c5a2b23fb30751aa",
+   "sha256": "0vz0pfm2m3v0zk65b4ikk6yfpk282nzbm99fbzj8w76yfg240dfn"
+  },
+  "stable": {
+   "version": [
+    1,
+    6
+   ],
+   "commit": "950bdc568e3fd08e6106170953caf98ac582a431",
+   "sha256": "1rfw38a63bvzglqx7mb8wlnzjvlmkhkn35hn66snqqgvnmnvi54g"
+  }
+ },
+ {
+  "ename": "ink-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "02q95xay6z56i4l0j24dszxnfpjbxijlj4150nsadbv55m7nnjcf",
+  "fetcher": "github",
+  "repo": "Kungsgeten/ink-mode",
+  "unstable": {
+   "version": [
+    20160814,
+    1116
+   ],
+   "commit": "e35f26abbaf8ea23c5aa0a0c7ef15334cdfb7b48",
+   "sha256": "0ixqgk101gnm2q6f2bjk2pnqlrj41krqz56lss6fmf81xhxavmpp"
+  }
+ },
+ {
+  "ename": "inkpot-theme",
+  "commit": "68b7cb0ffe90cd56e2ca6e91e33668be586a1da7",
+  "sha256": "1avgzjwppmmhdmljwpy75acylm3f74d3x0q94ld2n1yhi8xx40i9",
+  "fetcher": "gitlab",
+  "repo": "ideasman42/emacs-inkpot-theme",
+  "unstable": {
+   "version": [
+    20200515,
+    421
+   ],
+   "commit": "0f289a3f465728ed41d532674166eef09ac7209b",
+   "sha256": "1bchvrmmcbw8ird7i1klz0ds2xkfmwccz2pp59ixgys0j8cxnq4b"
+  }
+ },
+ {
+  "ename": "inline-crypt",
+  "commit": "b04fffe5e52f26e92930a112a64531228f94e340",
+  "sha256": "04mcyyqa9h6g6wrzphzqalpqxsndmzxpavlpdc24z4a2c5s3yz8n",
+  "fetcher": "github",
+  "repo": "Sodel-the-Vociferous/inline-crypt-el",
+  "unstable": {
+   "version": [
+    20170824,
+    900
+   ],
+   "commit": "281385b383f850fd2e895926b1cef804dd052633",
+   "sha256": "0hjmq8j7y4wnjgk6z92w4ci0ag9fm6rn63z9mi3krvdv154vz2n0"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    4
+   ],
+   "commit": "497ce9dc29a8ccac0b6dd6854f5d120514350282",
+   "sha256": "0jipds844432a8m4d5gxbbkk2h1rsq9fg748g6bxy2q066kyzfz6"
+  }
+ },
+ {
+  "ename": "inline-docs",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1imjcx4qgrs5llindgmnvkb73fagnlxfg04s72kckgcy47c4352p",
+  "fetcher": "github",
+  "repo": "stardiviner/inline-docs.el",
+  "unstable": {
+   "version": [
+    20170523,
+    450
+   ],
+   "commit": "b57f1681be6147f999cdc12abff414a0442e8897",
+   "sha256": "0ji8qgscs4fxp2i29l3v8z9y6i2glga6bysbcsn855pqsn00xkcv"
+  }
+ },
+ {
+  "ename": "inlineR",
+  "commit": "c52a1ea0afa8e5f439b7ac987b79c49eb08fe95a",
+  "sha256": "0f6bh46ljz01bysm96dzd9iygfh6zgd4w6g8h3kb8lk07brm7227",
+  "fetcher": "github",
+  "repo": "emacsattic/inlineR",
+  "unstable": {
+   "version": [
+    20191017,
+    1920
+   ],
+   "commit": "bf6450a3540aa3538546d312324c41befd0a4e54",
+   "sha256": "05by3mzz8gw13c42m2z3cr13zng62mbany0hvixx3jmn1q4hj9r0"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "29357186beca825e3d0451b700ec09b9ed65e37b",
+   "sha256": "15nasjknmzy57ilj1gaz3w5sj8b3ijcpgwcd6w2r9xhgcl86m40q"
+  }
+ },
+ {
+  "ename": "insert-kaomoji",
+  "commit": "216fcef758036cf466fa5b52599394709eed48b3",
+  "sha256": "1ip61cigz6b6hsj8ahgb6fxf7yab24r0rjjl11i10ykq7sb49k00",
+  "fetcher": "git",
+  "url": "https://git.sr.ht/~zge/kaomoji",
+  "unstable": {
+   "version": [
+    20200325,
+    2248
+   ],
+   "commit": "d18423f78cc02ba866b1a1dfb0617476cd941c54",
+   "sha256": "0n6fjndwcp2qg8164420dlc3xsdzm6m0zwbvvwn5w03khbk788hr"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "110186d2ebfae303b05d2d33a6939d30ce3ac995",
+   "sha256": "0cy2kj33lnb4d2bzjmgj216l1f63hsz4ssdq7hkb4d7jngb29g09"
+  }
+ },
+ {
+  "ename": "insert-shebang",
+  "commit": "c257f4f5011cd7d0b2a5ef3adf13f9871bf0be92",
+  "sha256": "0z88l1q925v9lwzr6nas9qjy0f57qxilg6smgpx9wj6lll3f7p5v",
+  "fetcher": "github",
+  "repo": "psachin/insert-shebang",
+  "unstable": {
+   "version": [
+    20180403,
+    1214
+   ],
+   "commit": "af5f95ff98e2432837f5aa848ba38dd626e82fce",
+   "sha256": "0rdh4bzwq60m641r41kbsgzpkx8hxl7vx82y1cf7zp8zk8la4pd8"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    6
+   ],
+   "commit": "adfa473f07443b231914d277c20a3419b30399b6",
+   "sha256": "10zy3vg5fr30hhv0q3jldffhjacg1yrv5d9gfkdz55ry277l3xz1"
+  }
+ },
+ {
+  "ename": "insfactor",
+  "commit": "c9a76a6498c2a0b0d471d3df7ae3d510d027f08c",
+  "sha256": "0c6q1d864qc78sqk9iadjpd01xc7myipgnf89pqa2z75yprndvyn",
+  "fetcher": "github",
+  "repo": "duelinmarkers/insfactor.el",
+  "unstable": {
+   "version": [
+    20141117,
+    2
+   ],
+   "commit": "7ef5446cebb08a17d4106d2e6f3c053e49e1e829",
+   "sha256": "112s3c0ii8zjc6vlj2im2qd2pl3hb95pq4zibm86gjpw428wd8iy"
+  }
+ },
+ {
+  "ename": "instapaper",
+  "commit": "a187008942c14dc09f7952a3c5b2e320553cb5c9",
+  "sha256": "1lcrwf2ymlfkvn00djxdr0sd7cjbp2sjdszs3sfmsxffaqzmy9ap",
+  "fetcher": "git",
+  "url": "https://git.carcosa.net/jmcbray/emacs-instapaper.git",
+  "unstable": {
+   "version": [
+    20110419,
+    1355
+   ],
+   "commit": "f21531bcb935e7e9b9e8df83dd0e0838adbf9b1b",
+   "sha256": "1ckkdkwhhyc8nwz293m18i526817gldd8br193px0hwfaxqlxadl"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    5
+   ],
+   "commit": "4714ed1b014615f8213e6f93637e4ec1d9d5a37a",
+   "sha256": "12giyb5mgq257jl76dxqv2irr3kx6sidbhjjaf9n9k2h42pip3p4"
+  }
+ },
+ {
+  "ename": "intel-hex-mode",
+  "commit": "f1bf82134671b1383f5f4d4a3c180081bea66814",
+  "sha256": "02ffbrkr3zajqhrxc3grmqm632ji4fmgnfabn42islpcfq12q3i4",
+  "fetcher": "github",
+  "repo": "mschuldt/intel-hex-mode",
+  "unstable": {
+   "version": [
+    20180423,
+    31
+   ],
+   "commit": "e83c94e1c31a8435a88b3ae395f2bc842ef83217",
+   "sha256": "0jpc6wh3agdh38wdjr1x880iiaj6698nr8dkgx114fsfj1la6f7v"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    3
+   ],
+   "commit": "e83c94e1c31a8435a88b3ae395f2bc842ef83217",
+   "sha256": "0jpc6wh3agdh38wdjr1x880iiaj6698nr8dkgx114fsfj1la6f7v"
+  }
+ },
+ {
+  "ename": "intellij-theme",
+  "commit": "cfe86071b2e84929476a771da99341f4a73cfd06",
+  "sha256": "1g8cninmq840sl8fmhq2hcsmz7nccbjmprzcl8w1zdavfp86b97g",
+  "fetcher": "gitlab",
+  "repo": "fommil/emacs-intellij-theme",
+  "unstable": {
+   "version": [
+    20171017,
+    1415
+   ],
+   "commit": "1bbfff8e6742d18e9b77ed796f44da3b7bd10606",
+   "sha256": "0ml1gi2cn6h3xm5c78vxwv327r0rgimia1vqqi9jb09yb6lckbgj"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "commit": "1bbfff8e6742d18e9b77ed796f44da3b7bd10606",
+   "sha256": "0ml1gi2cn6h3xm5c78vxwv327r0rgimia1vqqi9jb09yb6lckbgj"
+  }
+ },
+ {
+  "ename": "interaction-log",
+  "commit": "b72951c339c601350a7f10aee05a7fb94bac37ea",
+  "sha256": "1r9qbvgssc2zdwgwmmwv5kapvmg1y3px7268gkiakkfanw3kqk6j",
+  "fetcher": "github",
+  "repo": "michael-heerdegen/interaction-log.el",
+  "unstable": {
+   "version": [
+    20160305,
+    1301
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a49a06746d4df6bcfceec3c48dece065d635f9f9",
+   "sha256": "1vmaj14k5idx1ykkp1yl0b9qr4fimwagz7p6c00xi9klvjsx566y"
+  }
+ },
+ {
+  "ename": "interleave",
+  "commit": "6c43d4aaaf4fca17f2bc0ee90a21c51071886ae2",
+  "sha256": "18b3fpxn07y5abkcnaw9is9ihdhik7xjdj6kzl1pz958lk9f4hfy",
+  "fetcher": "github",
+  "repo": "rudolfochrist/interleave",
+  "unstable": {
+   "version": [
+    20191129,
+    958
+   ],
+   "commit": "383eb955bf0084a6e6ec03c9bd34511e20e0407d",
+   "sha256": "11bm00pw0bg8z6b5gyfmb2iss5libp6m4x0mc8agazabxzhmzyx9"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "6b28363eac939227c6cdc8a73a1d3ea5b002442d",
+   "sha256": "1qs6j9cz152wfy54c5d1a558l0df6wxv3djlvfl2mx58wf0sk73h"
+  }
+ },
+ {
+  "ename": "intero",
+  "commit": "1b56ca344ad944e03b669a9974e9b734b5b445bb",
+  "sha256": "15n7ipsq8ylmq4blsycpszkx034j9sb92vqvaz30j5v307fmvs99",
+  "fetcher": "github",
+  "repo": "commercialhaskell/intero",
+  "unstable": {
+   "version": [
+    20200125,
+    848
+   ],
+   "deps": [
+    "company",
+    "flycheck",
+    "haskell-mode"
+   ],
+   "commit": "fdb0550a2ddb5692d470336aa4a057717d572695",
+   "sha256": "0myjhj416cbvlfv2x9h624nygfis94jaw9gqf75sjv6y4inkzy73"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    40
+   ],
+   "deps": [
+    "company",
+    "flycheck",
+    "haskell-mode"
+   ],
+   "commit": "107640cc3a3ea12db24ae674ff7a820f6073f3d5",
+   "sha256": "0yr6g2f35rmym6nkdgm6wdczirc5b9f7sza2sad0mx02b81qmaci"
+  }
+ },
+ {
+  "ename": "interval-list",
+  "commit": "afee0fed80f4fa444116b12653c034d760f5f1fb",
+  "sha256": "0926z3lxkmpxalpq7hj355cjzbgpdiw7z4s8xdrpa1pi818d35zf",
+  "fetcher": "github",
+  "repo": "Fuco1/interval-list",
+  "unstable": {
+   "version": [
+    20150327,
+    1718
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "38af7ecf0a493ad8f487074938a2a115f3531177",
+   "sha256": "1zv6m24ryls9hvla3hf8wzp6r7fzbxa1lzr1mb0wz0s292l38wjz"
+  }
+ },
+ {
+  "ename": "interval-tree",
+  "commit": "ca0f4b62aee7ff7c4457da29fd25860a5c768319",
+  "sha256": "13zynac3h50x68f1ja72kqdrapjks2zmgqd4g7qwscq92mmh60i9",
+  "fetcher": "github",
+  "repo": "Fuco1/interval-tree",
+  "unstable": {
+   "version": [
+    20130325,
+    1407
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "301302f480617091cf3ab6989caac385d52543dc",
+   "sha256": "0fqnn9xhrc9hkaiziafjgg288l6m05416z9kz8l5845fnqsb7pb3"
+  }
+ },
+ {
+  "ename": "inverse-acme-theme",
+  "commit": "1c44dbc8d3ca29d8715af755b845af7236e95406",
+  "sha256": "03g6h8dpn42qnr593ryhj22lj1h2nx4rdr1knhkvxygfv3c4lgh5",
+  "fetcher": "github",
+  "repo": "dcjohnson/inverse-acme-theme",
+  "unstable": {
+   "version": [
+    20170823,
+    254
+   ],
+   "deps": [
+    "autothemer",
+    "cl-lib"
+   ],
+   "commit": "74d6f3e2f6534371509dd2d77006435156c276d6",
+   "sha256": "15fk60ky8kbj665yjylmgc4nn4qsk57fvarqzwv3fns64yfshkv3"
+  }
+ },
+ {
+  "ename": "io-mode",
+  "commit": "29ac993c86f992a452784c75c1511d15c4718c91",
+  "sha256": "1fpiml7lvbl4s2xw4wk2y10iifvfza24kd9j8qvi1bgd85qkx42q",
+  "fetcher": "github",
+  "repo": "superbobry/io-mode",
+  "unstable": {
+   "version": [
+    20161004,
+    756
+   ],
+   "commit": "fd65ae769093defcf554d6d637eba6e6dfc29f56",
+   "sha256": "1x3j4asbczfr9vrqd7bms57ngqzaik73sm2njcgjshf9c3js3aa9"
+  }
+ },
+ {
+  "ename": "io-mode-inf",
+  "commit": "df121fc9f71af1d060c83555ec611c422cbe8d0d",
+  "sha256": "0hwhvf1qwkmzzlzdda1flw6p1jjh9rzxsfwm2sc4795ac2xm6dhc",
+  "fetcher": "github",
+  "repo": "slackorama/io-emacs",
+  "unstable": {
+   "version": [
+    20140128,
+    1934
+   ],
+   "commit": "6dd2bac3fd87484bb7d97e135b06c29d70b444b6",
+   "sha256": "1ard88kc13c57y9zdkyr012w8rdrwahz8a3fb5v6hwqymg16m20s"
+  }
+ },
+ {
+  "ename": "ioccur",
+  "commit": "308c27227795560adf8c979ba1d046286549843d",
+  "sha256": "1a9iy6x4lkm4wgkcb0pv86c2kvpq8ymrc4ssp109r67kwqw7lrr6",
+  "fetcher": "github",
+  "repo": "thierryvolpiatto/ioccur",
+  "unstable": {
+   "version": [
+    20200326,
+    1341
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "59350b2066d61444f93c8a51b16353e746486e4c",
+   "sha256": "1055db76008a5nkb243ciq680fg4nn5yzkdv4x8sd1mq1hrs33qh"
+  }
+ },
+ {
+  "ename": "iodine-theme",
+  "commit": "6893ce6309f1e3b3457c99e84611044e653b827a",
+  "sha256": "05mnq0bgcla0pxsgywpvcdgd4sk2xr7bjlp87l0dx8j121vqripj",
+  "fetcher": "github",
+  "repo": "srdja/iodine-theme",
+  "unstable": {
+   "version": [
+    20151031,
+    1639
+   ],
+   "commit": "02fb780e1d8d8a6b9c709bfac399abe1665c6999",
+   "sha256": "14zfxa8fc7h4rkz1hyplwf4q2lga3l5dd7a2xq5kk0kvf2fs4mk3"
+  }
+ },
+ {
+  "ename": "ipcalc",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0hw5g30pnqwzvbhf6kggyj6wij5iw7d8jgmr88pyw63kxach8vkv",
+  "fetcher": "github",
+  "repo": "dotemacs/ipcalc.el",
+  "unstable": {
+   "version": [
+    20170926,
+    805
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "2720f7e3e662e04e195f8338b81a499cf321296a",
+   "sha256": "1kmqbb9ca3sca59462ha21grbgxkl4wynz2lr4yqb4qk7cijgd6g"
+  }
+ },
+ {
+  "ename": "iplayer",
+  "commit": "6e9a97667365f1c30f53a6aeeb7b909a78888eb1",
+  "sha256": "0wnxvdlnvlmspqsaqx0ldw8j03qjckkqzvx3cbpc2yfs55pm3p7r",
+  "fetcher": "github",
+  "repo": "csrhodes/iplayer-el",
+  "unstable": {
+   "version": [
+    20161120,
+    2120
+   ],
+   "commit": "b788fffa4b36bbd558047ffa6be51b1f0f462f23",
+   "sha256": "0x82mxbc6f5azzg7c4zrxz1q763k8i3y1kfb79xfspb2i64dgg5g"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "48b664e36e1a8e37eeb3eee80b91ff7126ed449a",
+   "sha256": "043dnij48zdyg081sa7y64lm35z7zvrv8gcymv3l3a98r1yhy3v6"
+  }
+ },
+ {
+  "ename": "ipretty",
+  "commit": "f0a8eb0eefe88b4ea683a4743c0f8393506e014b",
+  "sha256": "0nlp7xmgqsipdq8xjld0xpw3q3qlxm31r2k52hxs32rx044y6c71",
+  "fetcher": "git",
+  "url": "https://framagit.org/steckerhalter/ipretty.git",
+  "unstable": {
+   "version": [
+    20180606,
+    522
+   ],
+   "commit": "042f5cc4e6f81d59115e8335c582bb5c571c2585",
+   "sha256": "0vk8k4zfqa0869fg1kzbzzgz65xg7six5m4jm8088pb2nvfn1lrr"
+  }
+ },
+ {
+  "ename": "ipython-shell-send",
+  "commit": "9d3513d38f94de4d86124b5d5a33be8d5f0bfa43",
+  "sha256": "07im2f3890yxpcy4qz1bihi68aslam7qir4vqf05bhqlgaqzamv8",
+  "fetcher": "github",
+  "repo": "jackkamm/ipython-shell-send-el",
+  "unstable": {
+   "version": [
+    20190220,
+    2246
+   ],
+   "commit": "0faed86faff02a361f23ce5fc923d0e9b09bb2da",
+   "sha256": "1nx92rmxgrxy9hfi7f2ny3q4zqrzy6jalr85lall7r74aifprrkv"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "commit": "0faed86faff02a361f23ce5fc923d0e9b09bb2da",
+   "sha256": "1nx92rmxgrxy9hfi7f2ny3q4zqrzy6jalr85lall7r74aifprrkv"
+  }
+ },
+ {
+  "ename": "iqa",
+  "commit": "a9bd2e952d98f7ac2dc823581b07b65e951e9e45",
+  "sha256": "02yrkizk4ssip44s6r62finsrf45hxj9cpil1xrvh8g4jbsmfsw4",
+  "fetcher": "github",
+  "repo": "a13/iqa.el",
+  "unstable": {
+   "version": [
+    20181024,
+    2253
+   ],
+   "commit": "b45614f5204ed851de0abe93907aa94de5e37379",
+   "sha256": "11wrmiwlp91x59cn9k2j2pqgvzbrnzvf81dqgm9l5ph5fym0jqsd"
+  }
+ },
+ {
+  "ename": "ir-black-theme",
+  "commit": "5e725582bc322d03c9dca2b22e8606444fd8753c",
+  "sha256": "1qpq9zbv63ywzk5mlr8x53g3rn37k0mdv6x1l1hcd90gka7vga9v",
+  "fetcher": "github",
+  "repo": "jmdeldin/ir-black-theme.el",
+  "unstable": {
+   "version": [
+    20130303,
+    755
+   ],
+   "commit": "36e930d107604b5763c80294a6f92aaa02e6c272",
+   "sha256": "1cy9xwhswj9vahg8zr16r2crm2mm3vczqs73gc580iidasb1q1i2"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "commit": "b1ca1d0778e3e6228ff756e7fdaf5f5982000fa2",
+   "sha256": "036q933yw7pimnnq43ydaqqfccgf4iwvjhjmsavp7l6y1w16rvmy"
+  }
+ },
+ {
+  "ename": "iregister",
+  "commit": "a12a51873444b84765758e18c9cf24d85a200e44",
+  "sha256": "0iq1nlj5czi4nblrszfv3grkl1fni7blh8bhcfccidms8v9r3mdm",
+  "fetcher": "github",
+  "repo": "atykhonov/iregister.el",
+  "unstable": {
+   "version": [
+    20150515,
+    2107
+   ],
+   "commit": "6a48c66187289de5f300492be11c83e98410c018",
+   "sha256": "1ch610b3d0x3nxglp749305syliivamc108rgv9if4ihb67gp8b5"
+  }
+ },
+ {
+  "ename": "irony",
+  "commit": "d2b6a8d57b192325dcd30fddc9ff8dd1516ad680",
+  "sha256": "1xcxrdrs7imi31nxpszgpaywq4ivni75hrdl4zzrf103xslqpl8a",
+  "fetcher": "github",
+  "repo": "Sarcasm/irony-mode",
+  "unstable": {
+   "version": [
+    20200130,
+    849
+   ],
+   "deps": [
+    "cl-lib",
+    "json"
+   ],
+   "commit": "5f75fc0c9274f4622470e2324e2f4457087aa643",
+   "sha256": "107ry1jxl7qiqa0ackn03whygndkabg20s7szl5xm1l87vx5xghc"
+  },
+  "stable": {
+   "version": [
+    1,
+    4,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "json"
+   ],
+   "commit": "e630c497f973fa4d1f0fd0e0fd87fb9d18666986",
+   "sha256": "0n2nfcq58md1p2xdhq1smh8v7lsyj0ci7ma5xyd6bkg5rvhsh10i"
+  }
+ },
+ {
+  "ename": "irony-eldoc",
+  "commit": "fc42459d5c1671bd478d781339f2572b3de2e7d0",
+  "sha256": "03m0h13jd37vfvn4mavaq3vbzx4x0lklbs0mbc29zaz8pwqlcwz6",
+  "fetcher": "github",
+  "repo": "ikirill/irony-eldoc",
+  "unstable": {
+   "version": [
+    20170502,
+    1908
+   ],
+   "deps": [
+    "cl-lib",
+    "irony"
+   ],
+   "commit": "0df5831eaae264a25422b061eb2792aadde8b3f2",
+   "sha256": "1l5qpr66v1l12fb50yh73grb2rr85xxmbj19mm33b5rdrq2bqmmd"
+  }
+ },
+ {
+  "ename": "isearch-dabbrev",
+  "commit": "b9dfc7c1112bac8744910c58f77a98a901fd8065",
+  "sha256": "1hl7zl5vjcsk3z452874g4nfcnmna8m2242dc9cgpl5jddzwqa7x",
+  "fetcher": "github",
+  "repo": "Dewdrops/isearch-dabbrev",
+  "unstable": {
+   "version": [
+    20141224,
+    622
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1efe7abba4923015cbc2462395deaec5446a9cc8",
+   "sha256": "17d0816awadvsw1qc7r0p6ira75jmgxaj9hsk9ypayxsaf6ynyrb"
+  }
+ },
+ {
+  "ename": "isearch-project",
+  "commit": "6c2287c7b4c543e92ccfab120388b2c05174d2db",
+  "sha256": "1dcxbi1x2nbasiy03mp7af2lcmkmxpfblbdcsnm9srmmpdz9lwff",
+  "fetcher": "github",
+  "repo": "jcs-elpa/isearch-project",
+  "unstable": {
+   "version": [
+    20190505,
+    819
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "4d660afa365c82c3ed00f685b53f0d2358972d36",
+   "sha256": "0klngpw69kdh3l9jrvjq63xlgpqd86j8rrvivrzipddmplppz9gy"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    7
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "462b8100451b947367aed2970c2669ea6d15edbd",
+   "sha256": "0b8ncpi6kps7fx3fmgfwd2czaal52laf2k6pn46yh110sz6dl30m"
+  }
+ },
+ {
+  "ename": "isearch-symbol-at-point",
+  "commit": "5733de00a1800645674e83c5e21c80f2890c4e7c",
+  "sha256": "0j5fr7qdvpd5b096h5a83fz8sh9wybdnsgix6v94gv8lkzdsqkr8",
+  "fetcher": "github",
+  "repo": "re5et/isearch-symbol-at-point",
+  "unstable": {
+   "version": [
+    20130728,
+    2221
+   ],
+   "commit": "51a1029bec1ec414885f9edb7e5947603dffdab2",
+   "sha256": "09z49850c32x0rchxg203cxg504xi2b6cjgnd0i4axcs5fmq7gv9"
+  }
+ },
+ {
+  "ename": "isend-mode",
+  "commit": "8ef6e4dab78a4c333647a85ed07a81da8083ec0c",
+  "sha256": "0sk80a08ny9vqw94klqfgii297qm633000wlcldha76ip8viikdv",
+  "fetcher": "github",
+  "repo": "ffevotte/isend-mode.el",
+  "unstable": {
+   "version": [
+    20190201,
+    832
+   ],
+   "commit": "38ace354d579eb364d4f95b9ea16081c171ea604",
+   "sha256": "19k09bxlq5a8ba3xb68cajv66qad5vh12k391kq9wcj4gjlniyjv"
+  }
+ },
+ {
+  "ename": "isgd",
+  "commit": "d5ff75b269fd57c5822277b9ed850c69b626f1a5",
+  "sha256": "0yc9mkjzj3w64f48flnjvd193mk9gndrrqbxz3cvmvq3vgahhzyi",
+  "fetcher": "github",
+  "repo": "chmouel/isgd.el",
+  "unstable": {
+   "version": [
+    20150414,
+    936
+   ],
+   "commit": "764306dadd5a9213799081a48aba22f7c75cca9a",
+   "sha256": "09hx28lmldm7z3x22a0qx34id09fdp3z61pdr61flgny213q1ach"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "764306dadd5a9213799081a48aba22f7c75cca9a",
+   "sha256": "09hx28lmldm7z3x22a0qx34id09fdp3z61pdr61flgny213q1ach"
+  }
+ },
+ {
+  "ename": "isolate",
+  "commit": "c8091f8d72c24a103f6dcaadc18bbec745c1c3d3",
+  "sha256": "1ldyvw01nq2ynxaaqmw9ihk9kwfss9rqpaydn9f41bqj15xrypjc",
+  "fetcher": "github",
+  "repo": "casouri/isolate",
+  "unstable": {
+   "version": [
+    20190808,
+    731
+   ],
+   "commit": "e93cb652f150705347480a2ee13b63fa625b1edf",
+   "sha256": "0fa4z1mm62s1x4fd6d4pwl6zvksx1xiv6id9fy7rdbs0vznsjgqb"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "commit": "700aa3c7945580c876d29c3c064282c33ebb365c",
+   "sha256": "0j96rzfabn6lgv9xxyndpq3d2nys5z1brrrd7bga786zzwlp78a9"
+  }
+ },
+ {
+  "ename": "isortify",
+  "commit": "c756ccbae044bc23131060355532261aa9a12409",
+  "sha256": "0bqs84prlwk94x543mv22wjnz0s7gqbdi7ryvdc20s7vdr18fn82",
+  "fetcher": "github",
+  "repo": "pythonic-emacs/isortify",
+  "unstable": {
+   "version": [
+    20190315,
+    2004
+   ],
+   "deps": [
+    "pythonic"
+   ],
+   "commit": "ae7fb7163ce075209543f72953c9f431d103f6a3",
+   "sha256": "0gslib1r9d9dqd9r89dfg8npkybjw2bjdrbs0z2qcnfa82x4fq4z"
+  }
+ },
+ {
+  "ename": "iss-mode",
+  "commit": "ecc9f618b9f065f593b91c1c1221a550ab752bae",
+  "sha256": "1my4vi1x07hg0dva97i685lx6m6fcbfk16j1zy93zriyd7z5plkc",
+  "fetcher": "github",
+  "repo": "rasmus-toftdahl-olesen/iss-mode",
+  "unstable": {
+   "version": [
+    20141001,
+    1913
+   ],
+   "commit": "3b517aff31529bab33f8d7b562bd17aff0107fd1",
+   "sha256": "0992lzgar0kz9i1sk5vz17q9qzfgl8fkyxa1q0hmhgnpjf503cnj"
+  }
+ },
+ {
+  "ename": "itail",
+  "commit": "6b810bf1deeb79064144d8b684fab336686018ef",
+  "sha256": "0mcyly88a3c15hl3wll56agpdsyvd26r501h0v64lasfr4k634m7",
+  "fetcher": "github",
+  "repo": "re5et/itail",
+  "unstable": {
+   "version": [
+    20171112,
+    804
+   ],
+   "commit": "6e43c20da03be3b9c6ece93b7dc3495975ec1888",
+   "sha256": "044nzxh1hq41faxw3lix0wy78vfz304pjcaa5a11dqfz7q3gx5cv"
+  }
+ },
+ {
+  "ename": "itasca",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0j0lvs9x2j3z5yyhbgmymccswi40vv1gz3sl56bl857m1hlxzshz",
+  "fetcher": "github",
+  "repo": "jkfurtney/itasca-emacs",
+  "unstable": {
+   "version": [
+    20170601,
+    1622
+   ],
+   "commit": "3d15dd1b70d6db69b0f4758a3e28b8b506cc84ca",
+   "sha256": "0mfcl7ka7r5mx52xvf13i3799ddkdi9sq2q4p2rkgb96r37ia221"
+  }
+ },
+ {
+  "ename": "iter2",
+  "commit": "d94316660051ee0ba0c12e380e6203986440368f",
+  "sha256": "0kl3z2wwpvk2ddsb3798g41pv0xycsf9dclhv00snpzsr61d9v65",
+  "fetcher": "github",
+  "repo": "doublep/iter2",
+  "unstable": {
+   "version": [
+    20200512,
+    2111
+   ],
+   "commit": "b87c1e8ac50f728e8d33b5b69bf4124ef90b88ba",
+   "sha256": "09yasj1vfakryjvs22a3gd27wwa866b2pkvajwp8hlngk11sc3p3"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    11
+   ],
+   "commit": "a6e228eefed8dd6a405c235c15e7a4ea726cae02",
+   "sha256": "1n65202ap7qf44mv8f3ly5msp9fn12ap3cckhqb62ib3yw46ilwk"
+  }
+ },
+ {
+  "ename": "iterator",
+  "commit": "66aa4c3b43083a0098ee3163005dcc36d7251146",
+  "sha256": "17q10fw6y0icsv6vv9n968bwmbjlihrpkkyw62d1kfxhs9yw659z",
+  "fetcher": "github",
+  "repo": "thierryvolpiatto/iterator",
+  "unstable": {
+   "version": [
+    20170207,
+    838
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "9da54f9aed945b46866782cdf962c9e530419297",
+   "sha256": "0r50hdyr9s18p7ggiyv36g011jgg47bgszvjgcmpp23rz131mxyw"
+  }
+ },
+ {
+  "ename": "ivariants",
+  "commit": "ca17de8cdd53bb32a9d3faaeb38f19f92b18ee38",
+  "sha256": "00fgcm62g4fw4306lw9ld2k7w0c358fcbkxn969k5p009g7pk5bw",
+  "fetcher": "github",
+  "repo": "kawabata/emacs-ivariants",
+  "unstable": {
+   "version": [
+    20170823,
+    224
+   ],
+   "deps": [
+    "ivs-edit"
+   ],
+   "commit": "ca0b74d32b5d2d77a45cc6ad6edc00be0ee85284",
+   "sha256": "16hygfx9gla6yhc3kaiy4m6g910m1hak3v86fnpf12kzvjjs9zfx"
+  }
+ },
+ {
+  "ename": "ivs-edit",
+  "commit": "ca17de8cdd53bb32a9d3faaeb38f19f92b18ee38",
+  "sha256": "0gzhvzrfk17j2vwlg82f5ifk4dcfc1yv7barcij38ckran8cqmb2",
+  "fetcher": "github",
+  "repo": "kawabata/ivs-edit",
+  "unstable": {
+   "version": [
+    20170818,
+    1441
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "5db39c234aa7393b591168a4fd0a9a4cbbca347d",
+   "sha256": "1sdl83cf87zbv0ynvb6qlgbpm4d3dqhdn84jhhs5j247r5qzhmz6"
+  }
+ },
+ {
+  "ename": "ivy",
+  "commit": "06c24112a5e17c423a4d92607356b25eb90a9a7b",
+  "sha256": "0xf5p91r2ljl93wbr5wbgnb4hzhs00wkaf4fmdlf31la8xwwp5ci",
+  "fetcher": "github",
+  "repo": "abo-abo/swiper",
+  "unstable": {
+   "version": [
+    20200515,
+    1845
+   ],
+   "commit": "04ca16420053a3a6d34a96f0d680dd449c2e5851",
+   "sha256": "1sjaf026zim28c9cld0w5hlk9inp1map70ip99smlk483ib6lbj3"
+  },
+  "stable": {
+   "version": [
+    0,
+    13,
+    0
+   ],
+   "commit": "cd634c6f51458f81898ecf2821ac3169cb65a1eb",
+   "sha256": "0ghcwrg8a6r5q6fw2x8s08cwlmnz2d8qjhisnjwbnc2l4cgqpd9p"
+  }
+ },
+ {
+  "ename": "ivy-bibtex",
+  "commit": "873ae2af16e03c8e10494be3f0e7840eb27172a3",
+  "sha256": "0ri0f8cfzyymx9jrw0bldwzx74bzdd5gc90yv16hv239g65scbvx",
+  "fetcher": "github",
+  "repo": "tmalsburg/helm-bibtex",
+  "unstable": {
+   "version": [
+    20200429,
+    1606
+   ],
+   "deps": [
+    "bibtex-completion",
+    "cl-lib",
+    "swiper"
+   ],
+   "commit": "8a0dd9841316793aacddea744d6b8ca4a7857a35",
+   "sha256": "1av058d7888kr3q15y1122r8jkarfw1s83gvkillj7kyzj3i53m5"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "deps": [
+    "biblio",
+    "cl-lib",
+    "dash",
+    "f",
+    "parsebib",
+    "s",
+    "swiper"
+   ],
+   "commit": "d6a98ac6f28d2a6a05e203115211c98333d40aca",
+   "sha256": "0arhy051945lxjqg77b275ny9nsv60cqj0qfpmvd8xkc07lqfn23"
+  }
+ },
+ {
+  "ename": "ivy-clipmenu",
+  "commit": "17561e8af89bcb4da3d29a1acc04b8ff508af65b",
+  "sha256": "1zn5ccbsr1vniyznj597k98dy752g2ilfp8sznh4w2sljwxd74gi",
+  "fetcher": "github",
+  "repo": "wpcarro/ivy-clipmenu.el",
+  "unstable": {
+   "version": [
+    20200302,
+    1419
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "ivy",
+    "s"
+   ],
+   "commit": "ef25acf3f058fe1ede3a29fae2e9cdac8b08cd17",
+   "sha256": "1yzvaf95pncfi1r3xj8h6393dfvx291q3ahdwpp7qn3jh71kjx6k"
+  }
+ },
+ {
+  "ename": "ivy-clojuredocs",
+  "commit": "ef20e3b6fa8d4586d6f17a4e9a6746390dbb2b50",
+  "sha256": "1p3fnj6zz2cxirn2dv54hnwabflxsj04vxjf0f7fbs931c7hrshx",
+  "fetcher": "github",
+  "repo": "wandersoncferreira/ivy-clojuredocs",
+  "unstable": {
+   "version": [
+    20190907,
+    2053
+   ],
+   "deps": [
+    "edn",
+    "ivy"
+   ],
+   "commit": "dd33a25f1de4339f75f05689ed60fe1b1c97f554",
+   "sha256": "0km1par5jhhbdbn1sccpsz0drqvmmjg1905xyc2bbfc2xx38cg1i"
+  }
+ },
+ {
+  "ename": "ivy-dired-history",
+  "commit": "ad37f6b04ff45fbffeadefc94db16baa27bcc2ac",
+  "sha256": "1vj073k5m0l8rx9iiisikzl053ad9mlhvbk30f5zmw9sw7b9blyl",
+  "fetcher": "github",
+  "repo": "jixiuf/ivy-dired-history",
+  "unstable": {
+   "version": [
+    20170626,
+    556
+   ],
+   "deps": [
+    "cl-lib",
+    "counsel",
+    "ivy"
+   ],
+   "commit": "c9c67ea1ee5e68443f0e6006ba162d6c8d868b69",
+   "sha256": "1lim9zi57w011df5zppb18yjkaxkgfy796pc6i01p4dl32x0rpfv"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "counsel",
+    "ivy"
+   ],
+   "commit": "3604840f85e4ff2d7ecab6233e820cb2ec5c8733",
+   "sha256": "0slisbnfcdx8jv0p67ag6s4l0m0jmrwcpm5a2jm6sai9x67ayn4l"
+  }
+ },
+ {
+  "ename": "ivy-emoji",
+  "commit": "f1121a85321a3184d1fa990ae86f5d1f3b04f145",
+  "sha256": "0sp8z7r1kffgfm4jrn5cqfi335vaynn27hs9345ybrxi3r4a3c0g",
+  "fetcher": "github",
+  "repo": "sbozzolo/ivy-emoji",
+  "unstable": {
+   "version": [
+    20200316,
+    2351
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "a1b7d32048278afd9b06536a8af96f533639d146",
+   "sha256": "0h3051qq6xjc7gkl2a8if9b9ak6wnlc4gmh268s8jvi0nd8dfw2z"
+  }
+ },
+ {
+  "ename": "ivy-erlang-complete",
+  "commit": "ac1b9e350d3f066e4e56202ebb443134d5fc3669",
+  "sha256": "00fqjgrhvcn3ibpgiy4b0sr4x9p6ym5r1rvi4rdzsw2i3nxmgf3a",
+  "fetcher": "github",
+  "repo": "s-kostyaev/ivy-erlang-complete",
+  "unstable": {
+   "version": [
+    20191112,
+    1137
+   ],
+   "deps": [
+    "async",
+    "counsel",
+    "erlang",
+    "ivy"
+   ],
+   "commit": "c443dba0c466d36bef01a8985474f5da0a5a65fe",
+   "sha256": "0f0qr6h4y891lzlfi3k0a555qg0jw79fl9bfgv5fxi06m24q4683"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    2
+   ],
+   "deps": [
+    "async",
+    "counsel",
+    "erlang",
+    "ivy"
+   ],
+   "commit": "7d60ed111dbfd34ab6ec1b07c06e2d16a5380b9a",
+   "sha256": "0z34ljmwr0hmkaq5z85p87vljywpv3nnsvhp1zc8cw4hvqarcjqg"
+  }
+ },
+ {
+  "ename": "ivy-explorer",
+  "commit": "8b590a6e0d11fda3d93e4d92f847138f8968b332",
+  "sha256": "088ciy051b3kcd6anm66fnkg510c72hrfgdbgdf4mb9z4d9bk056",
+  "fetcher": "github",
+  "repo": "clemera/ivy-explorer",
+  "unstable": {
+   "version": [
+    20190909,
+    1921
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "a413966cfbcecacc082d99297fa1abde0c10d3f3",
+   "sha256": "1720g8i6jq56myv8m9pnr0ab7wagsflm0jgkg7cl3av7zc90zq8r"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    2
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "14adb6164f1d1646f503c3e4bd9aa559805f93d7",
+   "sha256": "0ffajyl21vz4662738dgga140yrkkcfynhhnk42fzrn5z5zqlwp1"
+  }
+ },
+ {
+  "ename": "ivy-fuz",
+  "commit": "578c150cb8f61058f8003554d372944a990d7a7d",
+  "sha256": "1z7r4fw1kl4vnfd5n6d628xwqhlr1768yfpj55gg28bq5lfx725h",
+  "fetcher": "github",
+  "repo": "Silex/ivy-fuz.el",
+  "unstable": {
+   "version": [
+    20191222,
+    946
+   ],
+   "deps": [
+    "fuz",
+    "ivy"
+   ],
+   "commit": "f171ac73422a4bae1503d63d804e691482ed35b2",
+   "sha256": "0ir1ighdlkh7ff1n607rwqyw2m9x9gr1ss4abdx6walajs7q3dki"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "fuz",
+    "ivy"
+   ],
+   "commit": "f171ac73422a4bae1503d63d804e691482ed35b2",
+   "sha256": "0ir1ighdlkh7ff1n607rwqyw2m9x9gr1ss4abdx6walajs7q3dki"
+  }
+ },
+ {
+  "ename": "ivy-gitlab",
+  "commit": "35d4d4f22e4c567954287b2a1cabcb595497095a",
+  "sha256": "0gbwsmb6my0327f9j96s20mybnjaw9yaiwhs3sy3vav0qww91z1y",
+  "fetcher": "github",
+  "repo": "nlamirault/emacs-gitlab",
+  "unstable": {
+   "version": [
+    20181228,
+    826
+   ],
+   "deps": [
+    "dash",
+    "gitlab",
+    "ivy",
+    "s"
+   ],
+   "commit": "8c2324c02119500f094c2f92dfaba4c9977ce1ba",
+   "sha256": "056c4fb5sj2y4h94klx2g24n1g3qdi7ifzs8ksw5v6hcj9lrkb1n"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    0
+   ],
+   "deps": [
+    "dash",
+    "gitlab",
+    "ivy",
+    "s"
+   ],
+   "commit": "a1c1441ff5ffb290e695eb9ac05431e9385578f4",
+   "sha256": "0ywjrgafpl4cnrykx9yysazr7hkd2pxk67h065f8z3mid6cgh1wa"
+  }
+ },
+ {
+  "ename": "ivy-historian",
+  "commit": "fb79cbc9af6cd443b9de97817d24bcc9050d5940",
+  "sha256": "0yzq3rr51q5d64pfc7x5jszz77x6nwpbjj0g74x5ga3bsw3i67d9",
+  "fetcher": "github",
+  "repo": "PythonNut/historian.el",
+  "unstable": {
+   "version": [
+    20190111,
+    313
+   ],
+   "deps": [
+    "flx",
+    "historian",
+    "ivy"
+   ],
+   "commit": "ac1bea7d99dd6965c72fabeb72d5fdc38c5380a4",
+   "sha256": "13pray3iapy6vbd1y1y7fqcnjpsvgfz2z7j1a1awzd8ifp12g9cp"
+  }
+ },
+ {
+  "ename": "ivy-hydra",
+  "commit": "06c24112a5e17c423a4d92607356b25eb90a9a7b",
+  "sha256": "1xv8nfi6dzhx868h44ydq4f5jmsa7rbqfa7jk8g0z0ifv477hrvx",
+  "fetcher": "github",
+  "repo": "abo-abo/swiper",
+  "unstable": {
+   "version": [
+    20200421,
+    1120
+   ],
+   "deps": [
+    "hydra",
+    "ivy"
+   ],
+   "commit": "04ca16420053a3a6d34a96f0d680dd449c2e5851",
+   "sha256": "1sjaf026zim28c9cld0w5hlk9inp1map70ip99smlk483ib6lbj3"
+  },
+  "stable": {
+   "version": [
+    0,
+    13,
+    0
+   ],
+   "deps": [
+    "hydra",
+    "ivy"
+   ],
+   "commit": "cd634c6f51458f81898ecf2821ac3169cb65a1eb",
+   "sha256": "0ghcwrg8a6r5q6fw2x8s08cwlmnz2d8qjhisnjwbnc2l4cgqpd9p"
+  }
+ },
+ {
+  "ename": "ivy-lobsters",
+  "commit": "d9774fbf133ce8db3ce996b1a40c586309a2fec6",
+  "sha256": "1g8bwlh4nls21k16r1pmqmb633j19h3jnjbfl2vixyrh2na8ff1w",
+  "fetcher": "github",
+  "repo": "julienXX/ivy-lobsters",
+  "unstable": {
+   "version": [
+    20171202,
+    2041
+   ],
+   "deps": [
+    "cl-lib",
+    "ivy"
+   ],
+   "commit": "4364df4b3685fd1b50865ac9360fb948c0288dd1",
+   "sha256": "1cfcy2ks0kb04crwlfp02052zcwg384cgz7xjyafwqynm77d35l0"
+  }
+ },
+ {
+  "ename": "ivy-mpdel",
+  "commit": "bb25443752e18e47afc63d5497cc5052c388a607",
+  "sha256": "1v9xiy4bs7r24li6fwi5dfqav8dfr3dy0xhj3wnzvcgwxp5ji56r",
+  "fetcher": "github",
+  "repo": "mpdel/ivy-mpdel",
+  "unstable": {
+   "version": [
+    20190428,
+    920
+   ],
+   "deps": [
+    "ivy",
+    "libmpdel",
+    "mpdel"
+   ],
+   "commit": "a42dcc943914c71975c115195d38c739f25e475c",
+   "sha256": "0zf007j3i9prlsqjaf0xw7ylaim463f867nfc63fpsr508xsn5rd"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "ivy",
+    "libmpdel",
+    "mpdel"
+   ],
+   "commit": "a42dcc943914c71975c115195d38c739f25e475c",
+   "sha256": "0zf007j3i9prlsqjaf0xw7ylaim463f867nfc63fpsr508xsn5rd"
+  }
+ },
+ {
+  "ename": "ivy-omni-org",
+  "commit": "4eaad7323462d6c7fd343ede0d2df8c67885e542",
+  "sha256": "1mxdglp0frplv75bik2fl2ybbl0yqfd5r70alcgx1zmba18kaj20",
+  "fetcher": "github",
+  "repo": "akirak/ivy-omni-org",
+  "unstable": {
+   "version": [
+    20200125,
+    807
+   ],
+   "deps": [
+    "dash",
+    "ivy"
+   ],
+   "commit": "113477ae46ec857c5794fc0a031c1e579615f0a9",
+   "sha256": "1j9gwl3azh6y24yiy2s9p9yh6vhs2rmydv2496ivwxqnq9md5b49"
+  }
+ },
+ {
+  "ename": "ivy-pages",
+  "commit": "93f1183beb74aa4a96de8cd043a2a8eefdd7ad7e",
+  "sha256": "0zz8nbjma8r6r7xxbg7xfz13202d77k1ybzpib41slmljzh7xgwv",
+  "fetcher": "github",
+  "repo": "igorepst/ivy-pages",
+  "unstable": {
+   "version": [
+    20160728,
+    1920
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "47b03a1f9384502cf22369ff31a2898c863d3aff",
+   "sha256": "0jv74s8jn1sdwdhxkx11gnaqcc49369gld1g6a1hl62521j897rc"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "428a901f94c9625c8407fd2bf76f9d7714d40d87",
+   "sha256": "11lcv8dqlmfqvhn7n3wfp9idr5hf30312p213y5pvs4m70lbc9k2"
+  }
+ },
+ {
+  "ename": "ivy-pass",
+  "commit": "7bfef855e071442d2b9d1e0ce9b5706937bffc53",
+  "sha256": "1sb29q22fsjqfxqznf73xcqhzy132bjd45w7r27sfmf825vcysci",
+  "fetcher": "github",
+  "repo": "ecraven/ivy-pass",
+  "unstable": {
+   "version": [
+    20170812,
+    1955
+   ],
+   "deps": [
+    "ivy",
+    "password-store"
+   ],
+   "commit": "5b523de1151f2109fdd6a8114d0af12eef83d3c5",
+   "sha256": "18crb4zh2pjf0cmv3b913m9vfng27girjwfqc3mk7vqd1r5a49yk"
+  }
+ },
+ {
+  "ename": "ivy-phpunit",
+  "commit": "93822c5588f81683e3d43f690785b80c207d331d",
+  "sha256": "1spvcf41lvjdmiwp6058wrpp0hfg1cjld6b7zm28m2ys6mn35ycs",
+  "fetcher": "github",
+  "repo": "12pt/ivy-phpunit",
+  "unstable": {
+   "version": [
+    20180219,
+    915
+   ],
+   "deps": [
+    "ivy",
+    "phpunit"
+   ],
+   "commit": "ffedb0138d36564e8e36a28fd9bc71ea8944681f",
+   "sha256": "0kf1k3jqg2r20x985h6brg92sg7y47c5vkfjky8xp11gqyqw47bi"
+  }
+ },
+ {
+  "ename": "ivy-posframe",
+  "commit": "9e7c6f7ca439683abf11dcaa38672ac139c0da4f",
+  "sha256": "1sv4xvdvb1g8g5m4f1f159lxbxaz96drsmvhh0k43hp1dh3bhj3b",
+  "fetcher": "github",
+  "repo": "tumashu/ivy-posframe",
+  "unstable": {
+   "version": [
+    20200331,
+    536
+   ],
+   "deps": [
+    "ivy",
+    "posframe"
+   ],
+   "commit": "ae9bafe94fe6b77b6fe45766ae6172646f6a5d50",
+   "sha256": "1j6yns5d7lh2v1nfcznrirl7qicdli9csciqvfgj4gkh72a97pw1"
+  }
+ },
+ {
+  "ename": "ivy-prescient",
+  "commit": "a92495d09689932ab9f0b716078ceeeb9cc154e0",
+  "sha256": "017ibpbj390q5d051k3wn50774wvcixzbwikvi5ifzqkhgixqk9c",
+  "fetcher": "github",
+  "repo": "raxod502/prescient.el",
+  "unstable": {
+   "version": [
+    20200415,
+    1457
+   ],
+   "deps": [
+    "ivy",
+    "prescient"
+   ],
+   "commit": "3ab7605d997fb8337bf5ded2ad960b98ac0e1fd7",
+   "sha256": "081v916gnjvx2rzjbqkqhdwijz57w7iryxzg71729gwvavs25lsv"
+  },
+  "stable": {
+   "version": [
+    4,
+    1
+   ],
+   "deps": [
+    "ivy",
+    "prescient"
+   ],
+   "commit": "aa3110281a0622fa7b5da115cefb71a319b5b1a0",
+   "sha256": "1rf5cz262hjpck7vpxg15bccdrwrmlhiyxc20liwcjb2ig36nis3"
+  }
+ },
+ {
+  "ename": "ivy-purpose",
+  "commit": "1fa2a37a1a6492eddf638216acec4b9d54d3498d",
+  "sha256": "0c5n7x3sa57wslwnldvc0i315xhyi1zndyhr07rzka1rhj8v1c4v",
+  "fetcher": "github",
+  "repo": "bmag/ivy-purpose",
+  "unstable": {
+   "version": [
+    20160724,
+    1003
+   ],
+   "deps": [
+    "ivy",
+    "window-purpose"
+   ],
+   "commit": "0495f2f3aed64d7e0028125e76a9a68f8fc4107e",
+   "sha256": "1hiw7mnrr0cnnp0a2mh837pzdaknadwv0sk82vya6blx0a7m691g"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "ivy",
+    "window-purpose"
+   ],
+   "commit": "0495f2f3aed64d7e0028125e76a9a68f8fc4107e",
+   "sha256": "1hiw7mnrr0cnnp0a2mh837pzdaknadwv0sk82vya6blx0a7m691g"
+  }
+ },
+ {
+  "ename": "ivy-rich",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "1il1lhxxg694j9w65qwzjm4p4l3q1h1hfndybj6z1cb72ijw27fr",
+  "fetcher": "github",
+  "repo": "Yevgnen/ivy-rich",
+  "unstable": {
+   "version": [
+    20200428,
+    110
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "3f818b201769bc13cc75aa73645217e374136aca",
+   "sha256": "19w1mmqg15xy963f2h50i0cz0gmii75yarkmv2ssfh164pkyvhdk"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    6
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "840e13314774a40b69f10f0a15ce1d6af4187b12",
+   "sha256": "1ra18v6lgz3m6asm6d5b92zn1x22yiz4cwxd9b54dnvwi11121m7"
+  }
+ },
+ {
+  "ename": "ivy-rtags",
+  "commit": "3dea16daf0d72188c8b4043534f0833fe9b04e07",
+  "sha256": "18f0jak643dd8lmx701wgk95miajabd8190ls35831slr28lqxsq",
+  "fetcher": "github",
+  "repo": "Andersbakken/rtags",
+  "unstable": {
+   "version": [
+    20191222,
+    920
+   ],
+   "deps": [
+    "ivy",
+    "rtags"
+   ],
+   "commit": "ed229d2e4070cc07ba76e537e8f5f93835ff0710",
+   "sha256": "1jf1mg2pib2rsrn280j2ywmnqgkr5jwmiaqf252jsb7ndq7p5gcr"
+  },
+  "stable": {
+   "version": [
+    2,
+    38
+   ],
+   "deps": [
+    "ivy",
+    "rtags"
+   ],
+   "commit": "9687ccdb9e539981e7934e768ea5c84464a61139",
+   "sha256": "1r6l7dgr2ch586zrdi5l8fhdj4qdva8ldz7cjvi2byc2pd2xs8rx"
+  }
+ },
+ {
+  "ename": "ivy-todo",
+  "commit": "e608f40d00a3b2a80a6997da00e7d04f76d8ef0d",
+  "sha256": "06mn430zkisnqrmad81gn88pl7lz0m8rm1yvpngpakwwnhwm0q96",
+  "fetcher": "github",
+  "repo": "Kungsgeten/ivy-todo",
+  "unstable": {
+   "version": [
+    20200323,
+    2005
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "d74501cd334b7d709659946c5e02b21cfd5507de",
+   "sha256": "0j9cdzr5s7zi6qf4cax8bc2jrprgaz85mfvc9cx52ryd3yn8l6g0"
+  }
+ },
+ {
+  "ename": "ivy-xcdoc",
+  "commit": "d2fd855c098ca65293d84c3b526b0c39f7b07ade",
+  "sha256": "1my45325ys2m2l5y8pmi5jnbplqm16b1n7zll37163vv16zwnd53",
+  "fetcher": "github",
+  "repo": "hex2010/emacs-ivy-xcdoc",
+  "unstable": {
+   "version": [
+    20160917,
+    1055
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "5ea22af36c4c2737fb0bec53432c233482d8b314",
+   "sha256": "1m5ljx395yw70fx643pnf7pk709s9v5b77zvvv3j21d0cjnppqz5"
+  }
+ },
+ {
+  "ename": "ivy-xref",
+  "commit": "a4cd8724e8a4119b61950a97b88219bf56ce3945",
+  "sha256": "1p5a0x83b0bc7b654j1d207s7vifffgwmp26pya2mz0czd68ywy8",
+  "fetcher": "github",
+  "repo": "alexmurray/ivy-xref",
+  "unstable": {
+   "version": [
+    20191126,
+    401
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "3d4c35fe2b243d948d8fe02a1f0d76a249d63de9",
+   "sha256": "1c0k1in2hpfwfd7m5r8623d58kxsrfl6pwpgdrkk3077vdgbwiip"
+  }
+ },
+ {
+  "ename": "ivy-yasnippet",
+  "commit": "8c76857d716afab46f5efe46e353935921d5f217",
+  "sha256": "180q6hrsnkssbf9x9bj74dyy26kym4akbsjlj81x4193nnmc5w67",
+  "fetcher": "github",
+  "repo": "mkcms/ivy-yasnippet",
+  "unstable": {
+   "version": [
+    20181002,
+    1655
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "ivy",
+    "yasnippet"
+   ],
+   "commit": "ebf05761cd890bccd8072051f988dae7ab11c9ce",
+   "sha256": "01dc8hv464r3q3d6whix76sqwfkjcvhdg55jmw0ck9jwmhwsvc7x"
+  }
+ },
+ {
+  "ename": "ivy-ycmd",
+  "commit": "22e925d1b66f53d25eb1b3a2746dea82e8555783",
+  "sha256": "0vlf75qv9m84gx83rxz0acnlx5lspq92d94q82ba2p4cc6yjyvj3",
+  "fetcher": "github",
+  "repo": "abingham/emacs-ivy-ycmd",
+  "unstable": {
+   "version": [
+    20180909,
+    1225
+   ],
+   "deps": [
+    "dash",
+    "ivy",
+    "ycmd"
+   ],
+   "commit": "25bfee8f676e4ecbb645e4f30b47083410a00c58",
+   "sha256": "1ywrkx8ddncy4qhv5gh4qf1cpapyvny42i51p91j9ip7xmihy6lm"
+  }
+ },
+ {
+  "ename": "ivy-youtube",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1masw9qc33valx55klfhzx0bg1hfazmn5yd9wh12q2gjsz8nxyw4",
+  "fetcher": "github",
+  "repo": "squiter/ivy-youtube",
+  "unstable": {
+   "version": [
+    20181126,
+    1039
+   ],
+   "deps": [
+    "cl-lib",
+    "ivy",
+    "request"
+   ],
+   "commit": "849b6db7ef02b080a86c1b887488e2935c31059a",
+   "sha256": "0f90dq8qhmsnm2hvnvzyb20nq0vmgnqzqa693scq69dv5rdjgwyj"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "ivy",
+    "request"
+   ],
+   "commit": "23e1089d4c4fc32db20df14ba10078aabf117e87",
+   "sha256": "0m70vxjj49kf8bzni2qchgzgx808z1fcfh02cflkhjcb77dkq8d6"
+  }
+ },
+ {
+  "ename": "ix",
+  "commit": "3a9d68fcf5bddbf07909b77682474dc592077051",
+  "sha256": "1fl76dk8vgw3mrh5iz99lrsllwya6ij9d1lj3szcrs4qnj0b5ql3",
+  "fetcher": "github",
+  "repo": "theanalyst/ix.el",
+  "unstable": {
+   "version": [
+    20131027,
+    1629
+   ],
+   "deps": [
+    "grapnel"
+   ],
+   "commit": "aea4c54a5cc5a6f26637353c16a3a0e70fc76963",
+   "sha256": "069alh9vs6is3hvbwxbwr9g8qq9md5c92wg5bfswi99yciqdvc4i"
+  },
+  "stable": {
+   "version": [
+    0,
+    7
+   ],
+   "deps": [
+    "grapnel"
+   ],
+   "commit": "498dac674f4f1910d39087b1457c5da5465a0614",
+   "sha256": "0rpxh1jv98dl9b5ldjkljk70z4hkl61kcmvy1lhpj3lxn8ysv87a"
+  }
+ },
+ {
+  "ename": "iy-go-to-char",
+  "commit": "0fda2b54a0ff0b6fc3bd6d20cfcbbf63cae5380f",
+  "sha256": "10szn9y7gl8947p3f9w6p6vzjf1a9cjif9mbj3qdqx4vbsl9mqpz",
+  "fetcher": "github",
+  "repo": "doitian/iy-go-to-char",
+  "unstable": {
+   "version": [
+    20141029,
+    1546
+   ],
+   "commit": "04ab4f5f3a241cbbc9b8c178a22b412a62f632f9",
+   "sha256": "0bcm3y3qvsrk7gd23xfzz5bgcnm3h4l63w9hv8cr9n86sm8475m1"
+  },
+  "stable": {
+   "version": [
+    3,
+    2,
+    1
+   ],
+   "commit": "77b40d64eef9dad11eca59f4e3fbc6e849de7434",
+   "sha256": "1mb0k4lmbkbpn6qzzg8n14pybhd5zla77ppqac6a9kw89fj2qj4i"
+  }
+ },
+ {
+  "ename": "j-mode",
+  "commit": "410134ab2145adad3648b1024bfe4f6801df82c9",
+  "sha256": "0f9lsr9hjhdvmzx565ivlncfzb4iq4rjjn6a41053cjy50bl066i",
+  "fetcher": "github",
+  "repo": "zellio/j-mode",
+  "unstable": {
+   "version": [
+    20171224,
+    1856
+   ],
+   "commit": "e8725ac8af95498faabb2ca3ab3bd809a8f148e6",
+   "sha256": "0icrwny3cif0iwgyf9i25sj9i5gy056cn9ic2wwwbzqjqb4xg6dd"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "commit": "caa55dfaae01d1875380929826952c2b3ef8a653",
+   "sha256": "07kbicf760nw4qlb2lkf1ns8yzqy0r5jqqwqjbsnqxx4sm52hml9"
+  }
+ },
+ {
+  "ename": "jabber",
+  "commit": "d29cc2a26829e678467664d6b2f5c171dc9dbd25",
+  "sha256": "0vsmj33qh07amkdlp5i0ldspxsw8pp16lwcq97i1xk59glif0n2f",
+  "fetcher": "github",
+  "repo": "legoscia/emacs-jabber",
+  "unstable": {
+   "version": [
+    20180927,
+    2325
+   ],
+   "deps": [
+    "fsm",
+    "srv"
+   ],
+   "commit": "fff33826f42e040dad7ef64ea312d85215d3b0a1",
+   "sha256": "1fif38qhiaxskfmqin82n9334bzrkgd1h5ip1djcm571i670gj74"
+  }
+ },
+ {
+  "ename": "jabber-otr",
+  "commit": "9219f685c18c8e799cae3dc43cc1c740c0f67733",
+  "sha256": "114z5bwhkza03yvfa4nmicaih2jdq83lh6micxjimpddsc8fjgi0",
+  "fetcher": "github",
+  "repo": "legoscia/emacs-jabber-otr",
+  "unstable": {
+   "version": [
+    20150918,
+    1144
+   ],
+   "deps": [
+    "jabber"
+   ],
+   "commit": "2692b1530234e0ba9a0d6c1eaa1cbe8679f193c0",
+   "sha256": "0yv86nadp6dfzl05vhk8c1kahg2pcrhfmd3mnfjrngp7ksac5lyf"
+  }
+ },
+ {
+  "ename": "jack-connect",
+  "commit": "c0f5c5f8051f3046baebb08f41b0ca0bf0d73c85",
+  "sha256": "1ssl126wihaf8m2f6ms0l5ai6pz5wn348a09k6l0h3jfww032g1q",
+  "fetcher": "git",
+  "url": "https://bitbucket.org/sbarbit/jack-connect",
+  "unstable": {
+   "version": [
+    20200325,
+    1639
+   ],
+   "commit": "c227d1ed3016960c8666a60e4215bbb029436bc7",
+   "sha256": "1w66dpn0cmdqwgjd1528cd2739ijxhsr62zyx2arlr9ldrnqy5f6"
+  }
+ },
+ {
+  "ename": "jade-mode",
+  "commit": "877b5a3e612e1b1d6d51e60c66b0b79f231abdb2",
+  "sha256": "156j0d9wx6hrhph0nsjsi1jha4h65rcbrbff1j2yr8vdsszjrs94",
+  "fetcher": "github",
+  "repo": "brianc/jade-mode",
+  "unstable": {
+   "version": [
+    20160525,
+    1441
+   ],
+   "commit": "4dbde92542fc7ad61df38776980905a4721d642e",
+   "sha256": "0p6pfxbl98kkwa3lgx82h967w4p0wbd9s96gvs72d74ryan07ij1"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "4e7a20db492719062f40b225ed730ed50be5db56",
+   "sha256": "0krbd1qa2408a97pqhl7fv0x8x1n2l3qq33zzj4w4vv0c55jk43n"
+  }
+ },
+ {
+  "ename": "jammer",
+  "commit": "20b2cc78b41a26e434b984943681fea774fd3c50",
+  "sha256": "19qvl428daa1xzkj3dldj5yvylq3w313bg42m4lqrmzhx3dgj8dd",
+  "fetcher": "git",
+  "url": "https://depp.brause.cc/jammer.git",
+  "unstable": {
+   "version": [
+    20200506,
+    1247
+   ],
+   "commit": "76e006dddd491aecccfcb06939db56f9f7daa56d",
+   "sha256": "18mz9yiz94xbvjlrpfxgfvv87s3rv3pv4b8y9c5yywr12zp6jbag"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "1ba232b71507b468c60dc53c2bc8888bef36c858",
+   "sha256": "0x0vz7m9kn7b2aiqvrdqx8qh84ynbpzy2asz2b18l47bcwa7r5bh"
+  }
+ },
+ {
+  "ename": "janet-mode",
+  "commit": "c94abb076bf1f3fd6654cc1857b7b3cfe5bf5e58",
+  "sha256": "1kr5ldrgqrl0hfpkf6x5a0kr0l4psykw771n5dx6ably6mnlpphh",
+  "fetcher": "github",
+  "repo": "ALSchwalm/janet-mode",
+  "unstable": {
+   "version": [
+    20200509,
+    1651
+   ],
+   "commit": "2f5bcabcb6953e1ed1926ba6a2328c453e8b4ac7",
+   "sha256": "0qj0gpycv2f3z1dgz1a27bjn983hrr3ppvrp7csl34lagnmp89rz"
+  }
+ },
+ {
+  "ename": "japanese-holidays",
+  "commit": "80088028a1322e99e5fc50bebe08fcb6d1a2a44d",
+  "sha256": "0pxpkikkn2ys0kgf3lbrdxv8iym50h5ik2xzza0qk7cw1v93jza9",
+  "fetcher": "github",
+  "repo": "emacs-jp/japanese-holidays",
+  "unstable": {
+   "version": [
+    20190317,
+    1220
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "45e70a6eaf4a555fadc58ab731d522a037a81997",
+   "sha256": "041rww8ngvjmgkiviqwq6wci8wgh4bs0wjjc8v8lqpwqhbzf65jy"
+  }
+ },
+ {
+  "ename": "japanlaw",
+  "commit": "6192e1db76f017c3b1315453144cffc47cdd495d",
+  "sha256": "1pxss1mjk5660k80r1xqgslnbrsr6r4apgp9abjwjfxpg4f6d0sa",
+  "fetcher": "github",
+  "repo": "mhayashi1120/japanlaw.el",
+  "unstable": {
+   "version": [
+    20160615,
+    643
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1bbdef942f28c61a0adb89d1b3c2cca5b10ca2dc",
+   "sha256": "1vj5b551383acp77lawvlw5cfvnqidjhd52sig3kz8v4bzz73cch"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    1
+   ],
+   "commit": "d90b204b018893d5d75286c92948c0bddf94cce2",
+   "sha256": "08gkxxaw789g1r0dql11skz6i8bdrrz4wp87fzs9f5rgx99xxr6h"
+  }
+ },
+ {
+  "ename": "jape-mode",
+  "commit": "b034024bd31c4be96c478a951b0ef63d8f89a1b7",
+  "sha256": "1gd685r86h0kr36msw81gfgwv7d35hihz6h0jkc6vd22wf6qc3ly",
+  "fetcher": "github",
+  "repo": "tanzoniteblack/jape-mode",
+  "unstable": {
+   "version": [
+    20140903,
+    1506
+   ],
+   "commit": "85b9182850707b5d107391f6caee5bd401507a7d",
+   "sha256": "0xmv7gw5xms6nhjcl51cw33yvjgw0c6bpnlyca3195x7g34sg1zj"
+  }
+ },
+ {
+  "ename": "jar-manifest-mode",
+  "commit": "ed68a9120d4f1e2895606938d1a117fb01abd1bc",
+  "sha256": "0kx358m3p23r8m7z45454i62ijmdlf4mljlbqc20jkihfanr6wqd",
+  "fetcher": "github",
+  "repo": "omajid/jar-manifest-mode",
+  "unstable": {
+   "version": [
+    20160501,
+    26
+   ],
+   "commit": "270dae14c481300f75ed96dad3a5ae42ca928a1d",
+   "sha256": "1p7w3hq2cyn1245q0zn8m7hpjs8nbp7kqfmd2gzi2k209czipy21"
+  }
+ },
+ {
+  "ename": "jasminejs-mode",
+  "commit": "8e58e8c102f6110f9a8bda47a4601197db47e743",
+  "sha256": "1a70j3aglrwmaw9g8m99sxad2vs53y4swxh97gqjsgx1rrx03g52",
+  "fetcher": "github",
+  "repo": "stoltene2/jasminejs-mode",
+  "unstable": {
+   "version": [
+    20150527,
+    5
+   ],
+   "commit": "9f8044bf81ab5b4841a30b0bd099916e1b7ff54a",
+   "sha256": "1zcrxijcwqfs6r1cd6w4jq8g3ly0a69nf0cbx93w5v86x2kjpz0l"
+  }
+ },
+ {
+  "ename": "jastadd-ast-mode",
+  "commit": "32d59dd9e796438f1752d36a30d4e062abbb6dd1",
+  "sha256": "1cwqxzmqx5wxaax12rq0hy0whpaivqncykym43p3an2sl9s6ngva",
+  "fetcher": "github",
+  "repo": "rudi/jastadd-ast-mode",
+  "unstable": {
+   "version": [
+    20161219,
+    926
+   ],
+   "commit": "a29fdb470cbf0a398164950a3b0d2217de48e0c0",
+   "sha256": "01fv0ixkshy7i6wzcgq6xvijvh3n402vyhmh3qzjwi9p0vxvdyxv"
+  }
+ },
+ {
+  "ename": "java-imports",
+  "commit": "5f6f4e4c14c422c2066f2200bb9b8f35e2ecc896",
+  "sha256": "1waz6skyrm1n8wpc0pwa652l11wz8qz1m89mqxk27k3lwyd84n98",
+  "fetcher": "github",
+  "repo": "dakrone/emacs-java-imports",
+  "unstable": {
+   "version": [
+    20170913,
+    1410
+   ],
+   "deps": [
+    "pcache",
+    "s"
+   ],
+   "commit": "e96ff44ed48b362ab6227b8b802b84d84f78bcaa",
+   "sha256": "0nryawj8v6gj6hnb81yf6966kjnydcz49zsg2k355gldryqf4v5p"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "pcache",
+    "s"
+   ],
+   "commit": "275f354c245df741b45e88d085660722e81a12be",
+   "sha256": "1bngn6v6w60qb3zz7s3px7v3wk99a3hfvzrg9l06dz1q7xgyvsi1"
+  }
+ },
+ {
+  "ename": "java-snippets",
+  "commit": "ec561bb8ee3d6df0d493c20497dd8c5897bf1e5e",
+  "sha256": "0bsmp6sc3khdadkmwqy8khz8kzqijcsv70gimm2cs1kwnbyj6pfp",
+  "fetcher": "github",
+  "repo": "nekop/yasnippet-java-mode",
+  "unstable": {
+   "version": [
+    20160627,
+    252
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "6d0e2768823be27dbe07448f4cb244cd657a7136",
+   "sha256": "1mgpb7g28ppbrl6sbyyswz9brrx8b7xjxmv576ija2qlh3whv5gs"
+  }
+ },
+ {
+  "ename": "javadoc-lookup",
+  "commit": "3d7d5f55c7d90181cc4eff68bb472f772f070a93",
+  "sha256": "1fffs0iqkk9rg5vbxifvn09j4i2751p81bzcvy5fslr3r1r2nv79",
+  "fetcher": "github",
+  "repo": "skeeto/javadoc-lookup",
+  "unstable": {
+   "version": [
+    20160214,
+    31
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "507a2dd443d60b537b8f779c1847e2cd0ccd1382",
+   "sha256": "16gywcma1s8kslwznlxwlx0xj0gs5g31637kb74vfdplk48f04zj"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "507a2dd443d60b537b8f779c1847e2cd0ccd1382",
+   "sha256": "16gywcma1s8kslwznlxwlx0xj0gs5g31637kb74vfdplk48f04zj"
+  }
+ },
+ {
+  "ename": "javap-mode",
+  "commit": "009ce356c410d980613f21fa7c9f1c97ee9af76f",
+  "sha256": "19p39l4nwgxm52yimy4j6l43845cpk8g5qdrldlwfxd7dvay09ay",
+  "fetcher": "github",
+  "repo": "hiredman/javap-mode",
+  "unstable": {
+   "version": [
+    20120223,
+    2208
+   ],
+   "commit": "864c1130e204b2072e1d19cd027b6fce8ebe6629",
+   "sha256": "070r4mg4v937n4h2bmzdbn3vsmmq7ijz69nankqs761jxv5gcwlg"
+  }
+ },
+ {
+  "ename": "jaword",
+  "commit": "00fe123ddc7fbcb9fd2b97e8a9fc8a8c5fabbf7f",
+  "sha256": "05pzh99zfl8n3p6lxdd9abr52m24hqcb105458i1cy0ra840bf4d",
+  "fetcher": "github",
+  "repo": "zk-phi/jaword",
+  "unstable": {
+   "version": [
+    20170426,
+    627
+   ],
+   "deps": [
+    "tinysegmenter"
+   ],
+   "commit": "ac062b0e5ab4bd3270497e80aa0f3ac033a0493f",
+   "sha256": "05kbscympb59njfrs94w4b2lwkc3057wzib65kq0l93bx4pcw2iy"
+  }
+ },
+ {
+  "ename": "jazz-theme",
+  "commit": "da25345df9d8d567541ed6b0ec832310cde67115",
+  "sha256": "0ad8kvrmd3gyb8wfghcl4r3kwzplk5gxlw3p23wsbx6c2xq6xr7g",
+  "fetcher": "github",
+  "repo": "donderom/jazz-theme",
+  "unstable": {
+   "version": [
+    20200417,
+    2042
+   ],
+   "commit": "b6694f09e10aa7df14836aac2f6615c32aa572dd",
+   "sha256": "1mjzfr2iz72n3ds6d0sqhqd2a5kcfn8d2kji9hqmydmplg247apx"
+  }
+ },
+ {
+  "ename": "jbeans-theme",
+  "commit": "6dd4bd78795ec7509d8744fec1e80426ce0557ec",
+  "sha256": "0y7ccycfnpykgzr88968w7dl45qazf8b9zlf7ydw3ghkl4f6lbwl",
+  "fetcher": "github",
+  "repo": "synic/jbeans-emacs",
+  "unstable": {
+   "version": [
+    20180309,
+    1625
+   ],
+   "commit": "3caa95998d8492a2ca6c17971de499ca15609871",
+   "sha256": "0k8bd5j09753czl55dcwijs4j1vxir4zwcwlgsxli4b4f8sl2z8r"
+  }
+ },
+ {
+  "ename": "jdecomp",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1vgjmz7rxvgy9lprzr5b018lzqy3h0zg8913la1bzgwlm3mr68y5",
+  "fetcher": "github",
+  "repo": "xiongtx/jdecomp",
+  "unstable": {
+   "version": [
+    20170224,
+    2200
+   ],
+   "commit": "692866abc83deedce62be8d6040cf24dda7fb7a8",
+   "sha256": "00l6mc643na97jrb0k595kwmfg8wc7m5iqjd9l9vvf3dal6389b8"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "1590b06f139f036c1041e1ce5c0acccaa24b31a7",
+   "sha256": "0sb9vzn6cycys31r98kxwgpn7v9aw5ck86nkskmn9hhhkrfsabii"
+  }
+ },
+ {
+  "ename": "jdee",
+  "commit": "a6d2c98f3bf2075e33d95c7befe205df802e798d",
+  "sha256": "15n76w0ygjmsa2bym59bkmbbh0kpqx6nacp4zz32hlg48kgz1dx4",
+  "fetcher": "github",
+  "repo": "jdee-emacs/jdee",
+  "unstable": {
+   "version": [
+    20191102,
+    1426
+   ],
+   "deps": [
+    "dash",
+    "flycheck",
+    "memoize",
+    "s"
+   ],
+   "commit": "b510a29f1fc1bea218a6230fb219922775687c78",
+   "sha256": "0c0jfi3gg85ccid7h9ll0a160lsjb11wxqncs4qnz75d3npmgsw9"
+  }
+ },
+ {
+  "ename": "jedi",
+  "commit": "bded1840a39fbf1e014c01276eb2f9c5a4fc218f",
+  "sha256": "1777060q25k9n2g6h1lm5lkki900pmjqkxq72mrk3j19jr4pk9m4",
+  "fetcher": "github",
+  "repo": "tkf/emacs-jedi",
+  "unstable": {
+   "version": [
+    20191011,
+    1750
+   ],
+   "deps": [
+    "auto-complete",
+    "jedi-core"
+   ],
+   "commit": "9d5f29116c4d42cae561a9d69e6fba2b61e2cf43",
+   "sha256": "1bckxppfzd5gwn0aw4h86igb7igal9axqncq7j8zmflg7zppncf1"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    8
+   ],
+   "deps": [
+    "auto-complete",
+    "jedi-core"
+   ],
+   "commit": "9d5f29116c4d42cae561a9d69e6fba2b61e2cf43",
+   "sha256": "1bckxppfzd5gwn0aw4h86igb7igal9axqncq7j8zmflg7zppncf1"
+  }
+ },
+ {
+  "ename": "jedi-core",
+  "commit": "bded1840a39fbf1e014c01276eb2f9c5a4fc218f",
+  "sha256": "0pzi32zdb4g9n4kvpmkdflmqypa7nckmnjq60a3ngym4wlzbb32f",
+  "fetcher": "github",
+  "repo": "tkf/emacs-jedi",
+  "unstable": {
+   "version": [
+    20191011,
+    1750
+   ],
+   "deps": [
+    "cl-lib",
+    "epc",
+    "python-environment"
+   ],
+   "commit": "9d5f29116c4d42cae561a9d69e6fba2b61e2cf43",
+   "sha256": "1bckxppfzd5gwn0aw4h86igb7igal9axqncq7j8zmflg7zppncf1"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    8
+   ],
+   "deps": [
+    "cl-lib",
+    "epc",
+    "python-environment"
+   ],
+   "commit": "9d5f29116c4d42cae561a9d69e6fba2b61e2cf43",
+   "sha256": "1bckxppfzd5gwn0aw4h86igb7igal9axqncq7j8zmflg7zppncf1"
+  }
+ },
+ {
+  "ename": "jedi-direx",
+  "commit": "a058c3007e63b2b651689fd17c789f7d69348f83",
+  "sha256": "1y4n4c2imnm3f1q129bvbi4gzk0iazd8qq959gvq9j9fl1aziiz1",
+  "fetcher": "github",
+  "repo": "tkf/emacs-jedi-direx",
+  "unstable": {
+   "version": [
+    20140310,
+    936
+   ],
+   "deps": [
+    "direx",
+    "jedi"
+   ],
+   "commit": "7a2e677400717ed12b959cb5988e7b3fb1c12117",
+   "sha256": "1pgi5vnwz5agrpvy7nwg3gv2nfbbmimhk8dxkg81k6yf1iiqxcap"
+  }
+ },
+ {
+  "ename": "jeison",
+  "commit": "cd3a1dd8dc83c0fa8824036818a6a9b59adebb6c",
+  "sha256": "0day982ayqavwa91p3ng8a1wkkh49pzi3if4ddqm1xysldf5w9xg",
+  "fetcher": "github",
+  "repo": "SavchenkoValeriy/jeison",
+  "unstable": {
+   "version": [
+    20190721,
+    1651
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "66e276c1f2f08ca54d2cd60f2c9f974c662aae8b",
+   "sha256": "11k0g077893pd831vbkyiakmvkxzcwgr1g6inx10cscl0yvciq62"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "4b68ba9e001594f3e33d98cf89580d0aee02b258",
+   "sha256": "0ixr51wmq0w89430070bb05dmd9ip29f6bpry05hs0pc6qzh8wj9"
+  }
+ },
+ {
+  "ename": "jekyll-modes",
+  "commit": "6667529d56dc35c5c56e4b4a4d1f06b6172df677",
+  "sha256": "1305f1yg1mamyw3bkzrk5q3q58ihs8f5k9vjknsww5xvrzz3r1si",
+  "fetcher": "github",
+  "repo": "fred-o/jekyll-modes",
+  "unstable": {
+   "version": [
+    20141117,
+    1314
+   ],
+   "deps": [
+    "polymode"
+   ],
+   "commit": "7cb10b50fd2883e3f7b10fdfd98f19f2f0b2381c",
+   "sha256": "0rx72rid7922mhw21j85kxmx0fhpkmkv9jvxmj9izy01xnjbk00c"
+  }
+ },
+ {
+  "ename": "jemdoc-mode",
+  "commit": "49a8c0f885df0b91d758b4d7c92bd67368da8a56",
+  "sha256": "1bl8a9fcilrqjzh92q7nvd16pxjiwmbnj157q2bx36y7bxm60acv",
+  "fetcher": "github",
+  "repo": "drdv/jemdoc-mode",
+  "unstable": {
+   "version": [
+    20170704,
+    2027
+   ],
+   "commit": "529b4d4681e1198b9892f340fdd6c3f1592a047a",
+   "sha256": "1f8nn8mv18q3x3k32i6kjis9f3g1ybdjcfaw8hywqwy6k8dr734m"
+  }
+ },
+ {
+  "ename": "jenkins",
+  "commit": "2ed2da33db5eaea1a37f86057da174a45cd37ea5",
+  "sha256": "0ji42r7p3f3hh643839xf74gb231vr7anycr2xhkga8qy2vwa53s",
+  "fetcher": "github",
+  "repo": "rmuslimov/jenkins.el",
+  "unstable": {
+   "version": [
+    20200115,
+    2133
+   ],
+   "deps": [
+    "dash",
+    "json"
+   ],
+   "commit": "29e27a685ec971b518251ce0e66a0b67d78ea395",
+   "sha256": "0ms9i4dww801q09n4wzjpaqd6k89xdkn5vx3i565p748kp9lqhz6"
+  }
+ },
+ {
+  "ename": "jenkins-watch",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1mdmh62rq3b8p23xgaf4i0kzpgq3ldljdxsnk07wa8bp3p7jxvgs",
+  "fetcher": "github",
+  "repo": "ataylor284/jenkins-watch",
+  "unstable": {
+   "version": [
+    20121004,
+    2326
+   ],
+   "commit": "37b84dfbd98240a57ff798e1ff8bc7dba2913577",
+   "sha256": "0jayhv8j7b527dimhvcs0d7ax25x7v50dk0k6apisqc23psvkq66"
+  }
+ },
+ {
+  "ename": "jest",
+  "commit": "a656c058c423ea6396b831d45c6dbb9bce6c4881",
+  "sha256": "10xsqcjskh2s6mlh07vf10whaas3aqm18hk3w309r3n1qmqihf75",
+  "fetcher": "github",
+  "repo": "emiller88/emacs-jest",
+  "unstable": {
+   "version": [
+    20200318,
+    237
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "dash-functional",
+    "js2-mode",
+    "magit-popup",
+    "projectile",
+    "s"
+   ],
+   "commit": "b51be19c1de9e82ee1dc62921be2222fc5685eed",
+   "sha256": "1jdphlhp9vxvkj51cswqfgka910216snyjhql700x4dgpmvkcv56"
+  }
+ },
+ {
+  "ename": "jest-test-mode",
+  "commit": "767499b7048cc0f1e47dff17f66f1e2fe8b023b5",
+  "sha256": "09vwidm49bw8kb4a9vax4rgbzk1ndg0fkdaj9k9sy973rapb213a",
+  "fetcher": "github",
+  "repo": "rymndhng/jest-test-mode",
+  "unstable": {
+   "version": [
+    20200329,
+    506
+   ],
+   "commit": "f04d08db36715d7509fd68448f74f917c6c1a382",
+   "sha256": "1pmzls19wpg60ql0b5l6rhml8hh8mzpbc0dgylzhps1jghi055s1"
+  }
+ },
+ {
+  "ename": "jetbrains",
+  "commit": "00dd4626e261d9831fc62d866d50b7257ee418c4",
+  "sha256": "0254dkzf2x5dj3j549xjash0lsadkn0bdcyjkjlrv8hqvdr1f1m7",
+  "fetcher": "github",
+  "repo": "emacs-php/jetbrains.el",
+  "unstable": {
+   "version": [
+    20180301,
+    502
+   ],
+   "deps": [
+    "cl-lib",
+    "f"
+   ],
+   "commit": "56f71a17d455581c10d48f6dbb31d9e2126227bf",
+   "sha256": "0v948k7xjm66px20ad331pskc7svpcrcffh3hbkjsksd4k0pggds"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "f"
+   ],
+   "commit": "38e136079f3f2ddbe0e8b7dec01cf6b515e897d8",
+   "sha256": "1ji64qip5raf0lbv7fv36rd4fwa33zn0xi7sa0zrgf0kcsr0qasb"
+  }
+ },
+ {
+  "ename": "jg-quicknav",
+  "commit": "0fda2b54a0ff0b6fc3bd6d20cfcbbf63cae5380f",
+  "sha256": "1pxyv1nbnqb0s177kczy6b6q4l8d2r52xqhx2rdb0wxdmp6m5x9c",
+  "fetcher": "github",
+  "repo": "jeffgran/jg-quicknav",
+  "unstable": {
+   "version": [
+    20170809,
+    130
+   ],
+   "deps": [
+    "cl-lib",
+    "s"
+   ],
+   "commit": "c8d53e774d63e68a944092c08a026b57da741038",
+   "sha256": "0rdrryfppgj5smrds5gyyhc4z8x36aq3gxdpckq80rbl4s729chy"
+  }
+ },
+ {
+  "ename": "jinja2-mode",
+  "commit": "b79196cf0dc0b436ff75eabea369a62f92825d9f",
+  "sha256": "0480fh719r4v7xdwyf4jlg1k36y54i5zrv7gxlhfm66pil75zafx",
+  "fetcher": "github",
+  "repo": "paradoxxxzero/jinja2-mode",
+  "unstable": {
+   "version": [
+    20141128,
+    1007
+   ],
+   "commit": "cfaa7bbe7bb290cc500440124ce89686f3e26f86",
+   "sha256": "0l26wcy496k6xk7q5sf905xir0p73ziy6c44is77854lv3y0z381"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "cfaa7bbe7bb290cc500440124ce89686f3e26f86",
+   "sha256": "0l26wcy496k6xk7q5sf905xir0p73ziy6c44is77854lv3y0z381"
+  }
+ },
+ {
+  "ename": "jira-markup-mode",
+  "commit": "e7e0349bff91ed27ad14dfc12178719453a8df55",
+  "sha256": "0f3sw41b4wl0aajq0ap66942rb2015d9iks0ss016jgzashw7zsp",
+  "fetcher": "github",
+  "repo": "mnuessler/jira-markup-mode",
+  "unstable": {
+   "version": [
+    20150601,
+    2109
+   ],
+   "commit": "4fc534c47df26a2f402bf835ebe2ed89474a4062",
+   "sha256": "1ack7dmapva3wc2gm22prd5wd3cmq19sl4xl9f04a3nk2msr6ksx"
+  }
+ },
+ {
+  "ename": "jiralib2",
+  "commit": "11b76e144ba79e2b8424b5ed6cea860173efa7e0",
+  "sha256": "14npnf2mdx75i2r9b4n4xph43b9skx0wla0gq541qj6ffd5a7z46",
+  "fetcher": "github",
+  "repo": "nyyManni/jiralib2",
+  "unstable": {
+   "version": [
+    20200331,
+    1940
+   ],
+   "deps": [
+    "dash",
+    "request"
+   ],
+   "commit": "ccf69e417911e091ec4c28d47d178ee63196c626",
+   "sha256": "170fjz7k9bk17qk7wrd56xw484xp8zckx635360pm0lfg4dvycpc"
+  }
+ },
+ {
+  "ename": "jist",
+  "commit": "898bfa0b315240ef9335fde24ff0386a4c6c6595",
+  "sha256": "11m9li1016cfkm4931h69d7g1dc59lwjl83wy3yipswdg3zlw0ar",
+  "fetcher": "github",
+  "repo": "emacs-pe/jist.el",
+  "unstable": {
+   "version": [
+    20161229,
+    1721
+   ],
+   "deps": [
+    "dash",
+    "let-alist",
+    "magit",
+    "request",
+    "seq"
+   ],
+   "commit": "da0692452e312a99bb27d8708504b521798aca48",
+   "sha256": "13dic7bmj7a8vvjz47s1fnz8p5m22d2m2h2vlkmlq7322qwxxw6p"
+  }
+ },
+ {
+  "ename": "jknav",
+  "commit": "3673aebf53a7a3d54aee4e979b9dc7e37842f4db",
+  "sha256": "0c0a8plqrlsw8lhmyj9c1lfkj2b48cjkbw9pna8qcizvwgym9089",
+  "fetcher": "github",
+  "repo": "aculich/jknav.el",
+  "unstable": {
+   "version": [
+    20121006,
+    2025
+   ],
+   "commit": "861245715c728503dad6573278fdd75c271dbf8b",
+   "sha256": "1idby2rjkslw85593qd4zy6an9zz71yzwqc6rck57r54xyfs8mij"
+  }
+ },
+ {
+  "ename": "jonprl-mode",
+  "commit": "d26b6aea2b0567b971c4f013b58b598e9eb76af6",
+  "sha256": "0763ad65dmpl2l5lw91mlppfdvrjg6ym45brhi8sdwwri1xnyv9z",
+  "fetcher": "github",
+  "repo": "david-christiansen/jonprl-mode",
+  "unstable": {
+   "version": [
+    20160819,
+    59
+   ],
+   "deps": [
+    "cl-lib",
+    "yasnippet"
+   ],
+   "commit": "6059bb64891fae45827174e044d6a87ac07172d8",
+   "sha256": "0v4xiq3xf7c52rmyymw8a4ws85ij0xy7pr7625gf15359cs5chs9"
+  }
+ },
+ {
+  "ename": "jpop",
+  "commit": "2a52a3cf909d12201196b92685435f9fa338b7ba",
+  "sha256": "00chh1aqnkkkhdp44sapdjx37cbn92g42wapdq7kcl8v1v0xmnjr",
+  "fetcher": "github",
+  "repo": "domtronn/jpop.el",
+  "unstable": {
+   "version": [
+    20170410,
+    1250
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "7628b03260be96576b34459d45959ee77d8b2110",
+   "sha256": "1x7qha7xyn2j225h7axhskngc8icjhgm3f451iq3qysj22q8g4d6"
+  },
+  "stable": {
+   "version": [
+    3,
+    2,
+    3
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "f3eed65e54dc2daaa7678e6eb169d35c4a7d1e63",
+   "sha256": "17wiv1b8c56c2zi9b9mjm37kl7yc735nk3188wnmq3fqjgdpwpwg"
+  }
+ },
+ {
+  "ename": "jq-format",
+  "commit": "ce800af0c5dd7f1e4ab7ade92a863ce500c12fce",
+  "sha256": "1ljbpgcs1s1if9s5c10k12f23rad7172k7y3s38ipn7vl7wmarw0",
+  "fetcher": "github",
+  "repo": "wbolster/emacs-jq-format",
+  "unstable": {
+   "version": [
+    20190428,
+    1434
+   ],
+   "deps": [
+    "reformatter"
+   ],
+   "commit": "47e1c5adb89b37b4d53fe01302d8c675913c20e7",
+   "sha256": "1g9chp1b3lkrg46b39swrkvp5willi0ay3i177jdp6knbzhj4mq3"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "reformatter"
+   ],
+   "commit": "47e1c5adb89b37b4d53fe01302d8c675913c20e7",
+   "sha256": "1g9chp1b3lkrg46b39swrkvp5willi0ay3i177jdp6knbzhj4mq3"
+  }
+ },
+ {
+  "ename": "jq-mode",
+  "commit": "318705966e26e58f87b53c115c519db95874ac1c",
+  "sha256": "1xvh641pdkvbppb2nzwn1ljdk7sv6laq29kdv09kxaqd89vm0vin",
+  "fetcher": "github",
+  "repo": "ljos/jq-mode",
+  "unstable": {
+   "version": [
+    20200516,
+    1606
+   ],
+   "commit": "85214664a9f20faab7c45087b28bedd0feabb560",
+   "sha256": "0kvi1cqn4hdcs2mc4lsddy01yyixvm2ykqq6j4yb9h07lixrxih6"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "commit": "3bda2d1085d5ac28fc6e7e8093ca7e74d3719f56",
+   "sha256": "0xk0if5i9cz4w06lx8v1vdm112pn1ybqgfw048sx15yyvfzgril1"
+  }
+ },
+ {
+  "ename": "jquery-doc",
+  "commit": "504d8cfac08f3fcd856610bc2caeb4d4178aeedf",
+  "sha256": "0pyg90izdrb9mvpbz9nx21mp8m3svqjnz1jr8i7wqgfjxsxdklxj",
+  "fetcher": "github",
+  "repo": "ananthakumaran/jquery-doc.el",
+  "unstable": {
+   "version": [
+    20150812,
+    758
+   ],
+   "commit": "24032284919b942ec27707d929bdd8bf48420062",
+   "sha256": "0gh2bgmsbi9lby89ssvl49kpz07jqrfnyg47g6b9xmf5rw42s1z9"
+  }
+ },
+ {
+  "ename": "js-auto-beautify",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0hpp6im24xy4g5l1n9kvpmpj26rnxxnf4snf7xgh5gxx6wsiicy1",
+  "fetcher": "github",
+  "repo": "Qquanwei/auto-beautify.el",
+  "unstable": {
+   "version": [
+    20161031,
+    509
+   ],
+   "deps": [
+    "web-beautify",
+    "web-mode"
+   ],
+   "commit": "180d15af7b5dfaab4ee1954cca2fdc797932f9de",
+   "sha256": "0xwkjq41v32dqc5gq8hcmcvdjg2y38xq6hkw5pja0kyvyk92c82d"
+  }
+ },
+ {
+  "ename": "js-auto-format-mode",
+  "commit": "2d3be16771b5b5fde639da3ee97890620354ee7a",
+  "sha256": "1gxf7xz1j3ga2pk5w8cgny7l8kid59zap2a97lhb50w1qczfqqzs",
+  "fetcher": "github",
+  "repo": "ybiquitous/js-auto-format-mode",
+  "unstable": {
+   "version": [
+    20180807,
+    1352
+   ],
+   "commit": "306abcfb9f6e46962061a34b68d4f6baa8c7aba4",
+   "sha256": "1pifplr4qr9667bbbqgqg39v8dyglvg6ljglkjga0d2n39am7r2q"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "commit": "29d245b4d126a5fc5153a4d8f17396be4165b4a6",
+   "sha256": "1d0q59rk44jf87ppnn5bwr14p2vgcnfdr7pf6hdqkhb8gzr8bh7c"
+  }
+ },
+ {
+  "ename": "js-codemod",
+  "commit": "81670a2467fa846a3f0e6c81e870e8ae140dd54e",
+  "sha256": "1m5wbyx12sc5qwbrh948ikskck10p6j05ahrrvmmflvfb3q4vpcj",
+  "fetcher": "github",
+  "repo": "torgeir/js-codemod.el",
+  "unstable": {
+   "version": [
+    20190921,
+    941
+   ],
+   "commit": "056bdf3e5e0c807b8cf17edb5834179a90fb722b",
+   "sha256": "1s87jy1v7vjqpl09w2lafhliqhc5hm9061n7f2gfiw0hhv1xp6bw"
+  }
+ },
+ {
+  "ename": "js-comint",
+  "commit": "bc9d20b95e369e5a73c85a4a9385d3a8f9edd4ca",
+  "sha256": "0jvkjb0rmh87mf20v6rjapi2j6qv8klixy0y0kmh3shylkni3an1",
+  "fetcher": "github",
+  "repo": "redguardtoo/js-comint",
+  "unstable": {
+   "version": [
+    20200117,
+    615
+   ],
+   "commit": "0dedaf4753fbe8cdbab14aa85f05d7673cbee8b6",
+   "sha256": "09wfafrklkybfg44skn1lg2hvcj4gfdv908dq87w1r4wv6ibkvka"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    0
+   ],
+   "commit": "0dedaf4753fbe8cdbab14aa85f05d7673cbee8b6",
+   "sha256": "09wfafrklkybfg44skn1lg2hvcj4gfdv908dq87w1r4wv6ibkvka"
+  }
+ },
+ {
+  "ename": "js-doc",
+  "commit": "5621f60b3f580db652c347719d004d7168944caa",
+  "sha256": "0nafqgb4kf8jgrb7ijfcvigq8kf043ki89h61izda4hccm3c42pk",
+  "fetcher": "github",
+  "repo": "mooz/js-doc",
+  "unstable": {
+   "version": [
+    20160715,
+    434
+   ],
+   "commit": "f0606e89d5aa89146f96edb38cf69af0068a9d1e",
+   "sha256": "1ffayl6hca9zanbznh6rkql7fbr53id1lyrj2vllx8zakfac4dyv"
+  }
+ },
+ {
+  "ename": "js-format",
+  "commit": "0d6deaa93f7deaba9f5f36f1963522b6dc5c673a",
+  "sha256": "112zqb3q1gjlaa9zkmhx7vamh0g97dwp9j55215i1sx66lmp18iq",
+  "fetcher": "github",
+  "repo": "futurist/js-format.el",
+  "unstable": {
+   "version": [
+    20170119,
+    102
+   ],
+   "deps": [
+    "js2-mode"
+   ],
+   "commit": "544bda9be72b74ec2d442543ba60cff727d96669",
+   "sha256": "18wr2z2w2fqgy51f5m5izrnywarxn6w4qs04lsgbwlsc6ahpwwpf"
+  }
+ },
+ {
+  "ename": "js-import",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0r653ls1a4kr7i7249afgfj7vz365gadfm8bc1vmqfabxn8mysd4",
+  "fetcher": "github",
+  "repo": "jakoblind/js-import",
+  "unstable": {
+   "version": [
+    20190218,
+    1319
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "projectile"
+   ],
+   "commit": "2ab3b120cc94ebf4bee2d959c8869440bc4c7484",
+   "sha256": "1fv8lpjanyn6chf502lz0j438hfxhqz1b0z2kxsd4jgy20ixchmg"
+  }
+ },
+ {
+  "ename": "js-react-redux-yasnippets",
+  "commit": "b5eef6590b2070ab46a5ab216cdcc6ab82174e47",
+  "sha256": "1mkcgpca4kzs31p0r5iwplwsm8jmf8w6h1v1a7qvpqan3gj7kidb",
+  "fetcher": "github",
+  "repo": "sooqua/js-react-redux-yasnippets",
+  "unstable": {
+   "version": [
+    20200316,
+    1144
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "9f509043f01fa59bff4daf31b2e95d63f8deab4a",
+   "sha256": "00icd76y7sp3cby6n1mkxma4h6aqkrq6cqsnbqrpsgq99qqy30my"
+  }
+ },
+ {
+  "ename": "js2-closure",
+  "commit": "61bf3e70ae38a78184f0b373ff6f0db234f51cb2",
+  "sha256": "19732bf98lk2ah2ssgkr1ngxx7rz3nhsiw84lsfmydb0vvm4fpk7",
+  "fetcher": "github",
+  "repo": "jart/js2-closure",
+  "unstable": {
+   "version": [
+    20170816,
+    1918
+   ],
+   "deps": [
+    "js2-mode"
+   ],
+   "commit": "f59db386d7d0693935d0bf52babcd2c203c06d04",
+   "sha256": "09zfmxi9m883lzsafnws06ifpq92b2i9q05pxk085vgkdpq35nss"
+  },
+  "stable": {
+   "version": [
+    2,
+    2,
+    1
+   ],
+   "deps": [
+    "js2-mode"
+   ],
+   "commit": "74a75f001a8bc2b9c02b9e8b4557f7ee3c5f84fb",
+   "sha256": "1gapx656s4ngy8s8y1p56xxnclwf4qqg83l3jizknxky7yhayyl9"
+  }
+ },
+ {
+  "ename": "js2-highlight-vars",
+  "commit": "5f4a7c90be2e032277ae87b8de36d2e3f6146f09",
+  "sha256": "07bq393g2jy8ydvaqyqn6vdyfvyminvgi239yvwzg5g9a1xjc475",
+  "fetcher": "github",
+  "repo": "unhammer/js2-highlight-vars.el",
+  "unstable": {
+   "version": [
+    20170418,
+    1829
+   ],
+   "deps": [
+    "js2-mode"
+   ],
+   "commit": "e3bb177e50f76b272e8073a94d4f46be6512a163",
+   "sha256": "0yy8sqkn6c7r377qr2id4z550vw1x70xjd4i7yg0g1rj7q1kg98l"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "js2-mode"
+   ],
+   "commit": "bf38d12cf65eebc8b81866fd03f6a0389bb2a9ed",
+   "sha256": "0r2szaxr3q0gvxqd9asn03q8jf3nclxv4mqdsjn96s98n45x388l"
+  }
+ },
+ {
+  "ename": "js2-mode",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "0f9cj3n55qnlifxwk1yp8n1kfd319jf7qysnkk28xpvglzw24yjv",
+  "fetcher": "github",
+  "repo": "mooz/js2-mode",
+  "unstable": {
+   "version": [
+    20200427,
+    33
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "515d876c6ae45a61cf67a7bd5723fe4c9e518756",
+   "sha256": "05pgyisb2szbrfbv6wjhfi8c00gakv51jxb8j73pji30v2a9rapn"
+  },
+  "stable": {
+   "version": [
+    20190219
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "ed955e7f1608cfd2d2713129d65f5fd734842ae4",
+   "sha256": "0766bbr4piia9vfr4ivd2gwi8dxah654adv6h28ylz4q8xmfzm1b"
+  }
+ },
+ {
+  "ename": "js2-refactor",
+  "commit": "8935264dfea9bacc89fef312215624d1ad9fc437",
+  "sha256": "09dcfwpxxyw0ffgjjjaaxbsj0x2nwfrmxy1a05h8ba3r3jl4kl1r",
+  "fetcher": "github",
+  "repo": "magnars/js2-refactor.el",
+  "unstable": {
+   "version": [
+    20190630,
+    2108
+   ],
+   "deps": [
+    "dash",
+    "js2-mode",
+    "multiple-cursors",
+    "s",
+    "yasnippet"
+   ],
+   "commit": "d4c40b5fc86d3edd7c6a7d83ac86483ee1cb7a28",
+   "sha256": "08b25y3raz0p98zxk9xdd8nj9shqd6mzrqhbq1gg4cwsmi7h7ly1"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    0
+   ],
+   "deps": [
+    "dash",
+    "js2-mode",
+    "multiple-cursors",
+    "s",
+    "yasnippet"
+   ],
+   "commit": "089c7800e3e7b0a89ee2392037ac07851bcee298",
+   "sha256": "1iwblf5i7k1i1ax9pjv7n8zv9q157krirdn0gwcib6dwza2i30jp"
+  }
+ },
+ {
+  "ename": "js3-mode",
+  "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228",
+  "sha256": "0iqhqq9wkhpgw1n83x6f8qib0agc626cv0qah73v6497ra9ri8ni",
+  "fetcher": "github",
+  "repo": "tamzinblake/js3-mode",
+  "unstable": {
+   "version": [
+    20160515,
+    1550
+   ],
+   "commit": "229aeb374f1b1f3ee5c59b8ba3eebb6385c232cb",
+   "sha256": "0yd2lck1kq01pxk86jpxff5ih6fxx1a1wvl7v8b5ys7gi33fjqz2"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "5ccda46ba39998a74bd724fdffb34634be5b6563",
+   "sha256": "17d0nf1kz7mgv5qz57q6khy4w5vrmsliqirggahk9s6nnsx1j56n"
+  }
+ },
+ {
+  "ename": "jscs",
+  "commit": "f59d039a199ff93d7280669511a752f12a74f0bd",
+  "sha256": "1yw251f6vpj2bikjw79arywprk8qnmmfcki99mvwnqhsqlv1a8iv",
+  "fetcher": "github",
+  "repo": "papaeye/emacs-jscs",
+  "unstable": {
+   "version": [
+    20151015,
+    1749
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "9d39d0f2355e69a020bf76242504f3a33e013ccf",
+   "sha256": "1bqsv2drhcs8ia7nxss33f80p2mhcl4mr1nalphzw6s1f4mq2sgy"
+  }
+ },
+ {
+  "ename": "jsfmt",
+  "commit": "4ddc99843dec18a295dfc36e7b429f0e1ab7fb71",
+  "sha256": "1syy32sv2d57b3gja0ly65h36mfnyq6hzf5lnnl3r58yvbdzngqd",
+  "fetcher": "github",
+  "repo": "brettlangdon/jsfmt.el",
+  "unstable": {
+   "version": [
+    20180920,
+    1008
+   ],
+   "commit": "ca141a135c7700eaedef92561d334e1fb7dc28a1",
+   "sha256": "13b2y6q6hqgdf32vyph407jlgki8xf5kflqz8zi0hcrmb8wkrd5x"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "c5d9742872509143db0250a77db705ef78f02cd0",
+   "sha256": "0pjmslxwmlb9cb3j5qfsyxq1lg1ywzw1p9dvj330c2m7nla1j70x"
+  }
+ },
+ {
+  "ename": "json-mode",
+  "commit": "03d0ff6c8d724cf39446fa27f52aa5cc1a3cefb6",
+  "sha256": "014j10wgxsqy6d6aksnkz2dr5cmpsi8c7v4a825si1vgb4622a70",
+  "fetcher": "github",
+  "repo": "joshwnj/json-mode",
+  "unstable": {
+   "version": [
+    20190123,
+    422
+   ],
+   "deps": [
+    "json-reformat",
+    "json-snatcher"
+   ],
+   "commit": "0e819e519ae17a2686e0881c4ca51fa873fa9b83",
+   "sha256": "0m4i6b5qmakdc0h8npsyajdp06jq03cb1c5rkj6x0khnjw9fv2fl"
+  },
+  "stable": {
+   "version": [
+    1,
+    7,
+    0
+   ],
+   "deps": [
+    "json-reformat",
+    "json-snatcher"
+   ],
+   "commit": "9ba01b868a6b138feeff82b9eb0abd331d29325f",
+   "sha256": "0i79lqzdg59vkqwjd3q092xxn9vhxspb1vn4pkis0vfvn46g01jy"
+  }
+ },
+ {
+  "ename": "json-navigator",
+  "commit": "62d4d68bd473652b80988a68250e9190b886ad6e",
+  "sha256": "0yfl31cg0mkgsbpgx00m9h2cxnhsavcf7zlspb0qr4g2zq6ya1wx",
+  "fetcher": "github",
+  "repo": "DamienCassou/json-navigator",
+  "unstable": {
+   "version": [
+    20191213,
+    755
+   ],
+   "deps": [
+    "hierarchy"
+   ],
+   "commit": "afd902e0b5cde37fad4786515a695d17f1625286",
+   "sha256": "0gn19qn11n86rn9b6knp9fb5jx9m2q1khhm4vnh0vjck7jxi9sqr"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "hierarchy"
+   ],
+   "commit": "f4cde60c4203fc70cc7ff22ed1d6579159ce2598",
+   "sha256": "0xrjbx6rkm8a6pmzhdph0r6l468hj827dvvq2hxhcm8v5gk6m690"
+  }
+ },
+ {
+  "ename": "json-process-client",
+  "commit": "a681f977631344190e2a35d9ac2cbb9a42402272",
+  "sha256": "0nf0lna15ymcn8wniz24ixxwr1qaznic9nym1q16ifwl72qryj79",
+  "fetcher": "git",
+  "url": "https://gitea.petton.fr/nico/json-process-client.git",
+  "unstable": {
+   "version": [
+    20190827,
+    1858
+   ],
+   "commit": "422606a7bf08d13646e3db4f6c2bddb69bd61dec",
+   "sha256": "16fyb0gwm4llwbmg12m4r9r8h540hcvhrsnlly6cry60h9p8dpc1"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "1d4a1fe2ecc682890dfc75e40054c9697c3046f6",
+   "sha256": "1r1mcd9xqibr7np2gsq8gpl310l05h75y2pnldlqqsszkhivyixd"
+  }
+ },
+ {
+  "ename": "json-reformat",
+  "commit": "f8c7976237f327fdfa58eea26ac8679f40ef3163",
+  "sha256": "1m5p895w9qdgb8f67xykhzriribgmp20a1lvj64iap4aam6wp8na",
+  "fetcher": "github",
+  "repo": "gongo/json-reformat",
+  "unstable": {
+   "version": [
+    20160212,
+    853
+   ],
+   "commit": "8eb6668ed447988aea06467ba8f42e1f2178246f",
+   "sha256": "11y11yybhb8wfj8qcj4gw8rhhly7kjs7ylyxwsh7qnfgq6f771qh"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    6
+   ],
+   "commit": "b9bd375ec1deb10d2ba09c409bdcf99c56d7a716",
+   "sha256": "0qp4n2k6s69jj4gwwimkpadjv245y54wk3bxb1x96f034gkp81vs"
+  }
+ },
+ {
+  "ename": "json-rpc",
+  "commit": "82c6b97cdfe2970f028a00146b01e5734710291b",
+  "sha256": "1v1pfmm9g18p6kgn27q1m1bjgwbzvwfm0jbsxp8gdsssaygky71k",
+  "fetcher": "github",
+  "repo": "skeeto/elisp-json-rpc",
+  "unstable": {
+   "version": [
+    20200417,
+    1629
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "81a5a520072e20d18aeab2aac4d66c046b031e56",
+   "sha256": "13s18mjh6dpdxvva9yx4841rxvayxsvaj3vblxril6zm2wcqw2lm"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "81a5a520072e20d18aeab2aac4d66c046b031e56",
+   "sha256": "13s18mjh6dpdxvva9yx4841rxvayxsvaj3vblxril6zm2wcqw2lm"
+  }
+ },
+ {
+  "ename": "json-rpc-server",
+  "commit": "c9b2ed94451c49997a0895cacdd177dc3534e4e3",
+  "sha256": "1cmpxg07n9x266q0j6d0ywlywrwkjxkn863npyh75mhixx361674",
+  "fetcher": "github",
+  "repo": "jcaw/json-rpc-server.el",
+  "unstable": {
+   "version": [
+    20190714,
+    1521
+   ],
+   "commit": "1623346b308dc8f593346dc947fdc4092d674834",
+   "sha256": "1kkn4xjn9i207x580902jfpcrhpkvpyzxk4jh1bclbryki9602zv"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "1623346b308dc8f593346dc947fdc4092d674834",
+   "sha256": "1kkn4xjn9i207x580902jfpcrhpkvpyzxk4jh1bclbryki9602zv"
+  }
+ },
+ {
+  "ename": "json-snatcher",
+  "commit": "990de179e20c169aa02ffec42c89f18ce02239c8",
+  "sha256": "0f6j9g3c5fz3wlqa88706cbzinrs3dnfpgsr2d3h3117gic4iwp4",
+  "fetcher": "github",
+  "repo": "Sterlingg/json-snatcher",
+  "unstable": {
+   "version": [
+    20150512,
+    347
+   ],
+   "commit": "c4cecc0a5051bd364373aa499c47a1bb7a5ac51c",
+   "sha256": "05zsgnk7grgw9jzwl80h5sxfpifxlr37b4mkbvx7mjq4z14xc2jw"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "c4cecc0a5051bd364373aa499c47a1bb7a5ac51c",
+   "sha256": "05zsgnk7grgw9jzwl80h5sxfpifxlr37b4mkbvx7mjq4z14xc2jw"
+  }
+ },
+ {
+  "ename": "jsonl",
+  "commit": "7b74404824208b80bfd47478d105e1f17235b36b",
+  "sha256": "1gng6jm4wnb7m11lcpc2rb239raskcjlbya0myzfb8cfr2v6z6h6",
+  "fetcher": "github",
+  "repo": "ebpa/jsonl.el",
+  "unstable": {
+   "version": [
+    20190623,
+    509
+   ],
+   "commit": "3dd0b7bb2b4bce9f9de7367941f0cc78f82049c9",
+   "sha256": "0c69yldiyg8q7dhqdcchkz20l44ckpmg8nri2740jg9wkwkj4wiz"
+  }
+ },
+ {
+  "ename": "jsonnet-mode",
+  "commit": "ba17372732723f73e8eeb6e7c47abc0edeb20da4",
+  "sha256": "1aadys887szlc924qr645lby9f8vzvxkwhq6byhppk1b01h911ia",
+  "fetcher": "github",
+  "repo": "mgyucht/jsonnet-mode",
+  "unstable": {
+   "version": [
+    20200218,
+    2217
+   ],
+   "commit": "d8b486c8376a4785a7f2dc8a16fe1f2d82c6bfae",
+   "sha256": "0xpy699jh6ia46brd7i2qrfi0zrcdrhj3dc8d275va9w8a78paks"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "commit": "efe768fdcff25d746674fbbf229b9e1a7efea4f1",
+   "sha256": "1a52266y83z9i3sg7hhc8sw7rhjy5i9wdy2bv7s2fv00lnngaj29"
+  }
+ },
+ {
+  "ename": "jss",
+  "commit": "e3dc3607f512df378ba141327802820da4991a97",
+  "sha256": "050hskqcjz5kc8nni255vj3hc9m936w1rybvg5kqyz4p4lpzj00k",
+  "fetcher": "github",
+  "repo": "segv/jss",
+  "unstable": {
+   "version": [
+    20130508,
+    1423
+   ],
+   "deps": [
+    "js2-mode",
+    "websocket"
+   ],
+   "commit": "41749257aecf13c7bd6ed489b5ab3304d06e40bc",
+   "sha256": "07yd7sxb5f2mbm2nva7b2nwyxxkmsi2rdd5qig0bq1b2mf3g5l83"
+  }
+ },
+ {
+  "ename": "jst",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "1kxf8ckhsh0sgc4xqkkyh7ghk17farqqz35ibvmyrkl9s19ydj1q",
+  "fetcher": "github",
+  "repo": "zhangkaiyulw/jst-mode",
+  "unstable": {
+   "version": [
+    20150604,
+    1138
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "pcache",
+    "s"
+   ],
+   "commit": "2a3fd16c992f7790dc67134ef06a814c3d20579c",
+   "sha256": "16jgmabcqrjb3v9c6q711jqn9dna88bmzm4880mdry69ixwcydxy"
+  }
+ },
+ {
+  "ename": "jtags",
+  "commit": "caaa21f235c4864f6008fb454d0a970a2fd22a86",
+  "sha256": "1f3dw9fr31lcqmida14d9rsvy1r1b5d6ihqwdj9hbx5kv7d8jyj7",
+  "fetcher": "git",
+  "url": "https://git.code.sf.net/p/jtags/code",
+  "unstable": {
+   "version": [
+    20160211,
+    2029
+   ],
+   "commit": "b50daa48510f71e74ce0ec2eb85030896a79cf96",
+   "sha256": "03w5y9c1109kpsn6xnxdaz3maiwbvxywqshc1l5wngfc85jwiv8y"
+  }
+ },
+ {
+  "ename": "julia-mode",
+  "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4",
+  "sha256": "1f26j3nxspwrvnsk3kmam8rw4jwikwmi9a5zwsx9aa1rrasg58w3",
+  "fetcher": "github",
+  "repo": "JuliaEditorSupport/julia-emacs",
+  "unstable": {
+   "version": [
+    20200504,
+    1726
+   ],
+   "commit": "839726af374991223ffe56f7e7d10bef81033d09",
+   "sha256": "0lspmp519py7adippfmz70zcd9dpz46x8a3wlda71a5pdjs5szfq"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "8bfc709716a257521cb386f20b8932e83db930a9",
+   "sha256": "1w131jb9mhvyjxa0p93iwfhzidgbcs6b8i6jg79yisqb9wchik99"
+  }
+ },
+ {
+  "ename": "julia-repl",
+  "commit": "9a2a494969a9caf2f4513b12504379c9685047dc",
+  "sha256": "1k8a54s7g64zasmmnywygr0ra3s3din5mkqb7b5van2l0d4hcmzn",
+  "fetcher": "github",
+  "repo": "tpapp/julia-repl",
+  "unstable": {
+   "version": [
+    20200310,
+    1145
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "5fa04de4e76e10d5ee37d4244f48ddae4503faa1",
+   "sha256": "1xnb3r5999ipkkvh7fl2kr0yy0j3vmnw7a6n23m9ps4fvy6hpl9n"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    0
+   ],
+   "commit": "b8155b8a1e23e1ad740fd7bd49b5d841b1365c7d",
+   "sha256": "0qdn70h6k03l3xmv4xmbvrs1lx632jihhmkvjxk5hp4nk5phh9rk"
+  }
+ },
+ {
+  "ename": "julia-shell",
+  "commit": "a812c6a8498949d8bd9828a95433c539da87c1c8",
+  "sha256": "0182irlvk6nn71zk4j8xjgcqp4bxi7a2dbj44frrssy6018cd410",
+  "fetcher": "github",
+  "repo": "dennisog/julia-shell-mode",
+  "unstable": {
+   "version": [
+    20161125,
+    1910
+   ],
+   "deps": [
+    "julia-mode"
+   ],
+   "commit": "583a0b2ca20461ab4356929fd0f2212c22341b69",
+   "sha256": "182r7x7w3xnx7c54izz3rlz0khcwh7v21m89qpq99f9dvcs6273k"
+  }
+ },
+ {
+  "ename": "julia-snail",
+  "commit": "4b80da8bdccaa0992deb07cef7ea4a582d9707ae",
+  "sha256": "0yljiqgamm5gjr1dbzjfqvnrijhgrpjd7gj8and1w33s1d2qh8gd",
+  "fetcher": "github",
+  "repo": "gcv/julia-snail",
+  "unstable": {
+   "version": [
+    20200515,
+    2010
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "julia-mode",
+    "parsec",
+    "s",
+    "spinner",
+    "vterm"
+   ],
+   "commit": "c9aff5ffe6df951dd5343f05d6e4170203a7032a",
+   "sha256": "065ix3jycsx3wvkq7a6060i93caxisdvgxgqb1l6rq15n4qln78y"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0,
+    -1,
+    4
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "julia-mode",
+    "parsec",
+    "s",
+    "spinner",
+    "vterm"
+   ],
+   "commit": "c9aff5ffe6df951dd5343f05d6e4170203a7032a",
+   "sha256": "065ix3jycsx3wvkq7a6060i93caxisdvgxgqb1l6rq15n4qln78y"
+  }
+ },
+ {
+  "ename": "jumblr",
+  "commit": "b47000c35a181c03263e85e8955eb4b4c9e69e4d",
+  "sha256": "1wnawz1m6x95iyzac453p55h7hlr5q0ry5437aqqx0bw7gdwg3dp",
+  "fetcher": "github",
+  "repo": "mkmcc/jumblr",
+  "unstable": {
+   "version": [
+    20170727,
+    2043
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "34533dfb9db8538c005f4eaffafeff7ed193729f",
+   "sha256": "0nn2m27c70nykin4iakrna0c61qd1hr09czrfmfpk06k70iifjky"
+  }
+ },
+ {
+  "ename": "jump",
+  "commit": "f0c791aebccc08b770b3969ce5d2e82cbe26f80e",
+  "sha256": "18g0fa9g8m9jscsm6pn7jwdq94l4aj0dfhrv2hqapq1q1x537364",
+  "fetcher": "github",
+  "repo": "eschulte/jump.el",
+  "unstable": {
+   "version": [
+    20161127,
+    128
+   ],
+   "deps": [
+    "cl-lib",
+    "findr",
+    "inflections"
+   ],
+   "commit": "e4f1372cf22e811faca52fc86bdd5d817498a4d8",
+   "sha256": "0354b64drvv8v5g13xy5nc1klwx4hldz1b5mf1frhna7h2dqz0j9"
+  },
+  "stable": {
+   "version": [
+    2,
+    5
+   ],
+   "deps": [
+    "cl-lib",
+    "findr",
+    "inflections"
+   ],
+   "commit": "40a7ffdf734ffe7d1968909663146255d7ba69c8",
+   "sha256": "1ig1wdjg914p9ng1nir2fid4mb3xz2dbpmkdnfy1klq2zp0xw2s3"
+  }
+ },
+ {
+  "ename": "jump-char",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1r6d1vhm87zafi7rr7z8jwyz3yy7i7s4774n84jsql24j1rzzwd4",
+  "fetcher": "github",
+  "repo": "lewang/jump-char",
+  "unstable": {
+   "version": [
+    20180601,
+    1348
+   ],
+   "commit": "1e31a3c687f2b3c71bbfab881c6d75915534bb9e",
+   "sha256": "1nzln2l6sy67qz30107sgyhhfacy85im9vdlbv1hp4fzdmxxkx84"
+  }
+ },
+ {
+  "ename": "jump-to-line",
+  "commit": "4b6c700a28b65cbbad36a9bbaf88cc36c8191eb0",
+  "sha256": "09ifhsggl5mrb6l8nqnl38yph0v26v30y98ic8hl23i455hqkkdr",
+  "fetcher": "github",
+  "repo": "ongaeshi/jump-to-line",
+  "unstable": {
+   "version": [
+    20130122,
+    1653
+   ],
+   "commit": "01ef8c3529d85e6c59cc20840acbc4a8e8325bc8",
+   "sha256": "1s9plmg323m1p625xqnks0yqz0zlsjacdj7pv8f783r0d9jmfq3s"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "01ef8c3529d85e6c59cc20840acbc4a8e8325bc8",
+   "sha256": "1s9plmg323m1p625xqnks0yqz0zlsjacdj7pv8f783r0d9jmfq3s"
+  }
+ },
+ {
+  "ename": "jump-tree",
+  "commit": "fe6b08848929c83e3cdea623b331176c0f20cbe9",
+  "sha256": "1gknpwd1vjpd1jqpi2axhyi6sg4clarr32rfrfz6hi6kmzr848mj",
+  "fetcher": "github",
+  "repo": "yangwen0228/jump-tree",
+  "unstable": {
+   "version": [
+    20171014,
+    1551
+   ],
+   "commit": "282267dc6305889e31d46b405b7ad4dfe5923b66",
+   "sha256": "0r6cwpks4aylndvq5lcny3799fag05zm36gd11043wca7sgr90fz"
+  }
+ },
+ {
+  "ename": "jumplist",
+  "commit": "b2b7c688b881615c5f0b00f3879b9469d380a4e6",
+  "sha256": "06xjg1q8b2fwfhfmdkb76bw2id8pgqc61fmwlgri5746jgdmd7nf",
+  "fetcher": "github",
+  "repo": "ganmacs/jumplist",
+  "unstable": {
+   "version": [
+    20151120,
+    345
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "c482d137d95bc5e1bcd790cdbde25b7f729b2502",
+   "sha256": "0ykzvy8034mchq6ffyi7vqnwyrj6gnqqgn39ki81pv97qh8hh8yl"
+  }
+ },
+ {
+  "ename": "jupyter",
+  "commit": "a63a933e193a52e60950331ec982c5f5cdfaa5d9",
+  "sha256": "0p83mkvip1gn5ag2j6s68wzfgg2sf15iyxh7ylads3yw44h26wvi",
+  "fetcher": "github",
+  "repo": "dzop/emacs-jupyter",
+  "unstable": {
+   "version": [
+    20200417,
+    1907
+   ],
+   "deps": [
+    "cl-lib",
+    "simple-httpd",
+    "websocket",
+    "zmq"
+   ],
+   "commit": "785edbbff65abb0c929dc2fbd8b8305c77fd529e",
+   "sha256": "1l1fd062dmig3mgkwixr4ly8x12z9skh5wj18hkyc84n7rwdar47"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "simple-httpd",
+    "websocket",
+    "zmq"
+   ],
+   "commit": "403c70c83cb3754c83da0932b0efaf5e72bdca9a",
+   "sha256": "1sr007wsl2y6wqpzkmv3inbpwhvgdcb2nmqzgfg7w1awapi2r13p"
+  }
+ },
+ {
+  "ename": "jvm-mode",
+  "commit": "7cdb7d7d7b955405eb6357277b5d049df8aa85ce",
+  "sha256": "1r283b4s0pzq4hgwcz5cnhlvdvq4gy0x51g3vp0762s8qx969a5w",
+  "fetcher": "github",
+  "repo": "martintrojer/jvm-mode.el",
+  "unstable": {
+   "version": [
+    20150422,
+    708
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "3355dbaf5b0185aadfbad24160399abb32c5bea0",
+   "sha256": "0k91cdjlpil8npc4d3zsgx2gk41crl7qgm9r85khcgxs59kmkniw"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "16d84c8c80bb214367bae6ed30b08756521c27d6",
+   "sha256": "1785nsv61m51lpykai2wxrv6zmwbm5654v937fgw177p37054s83"
+  }
+ },
+ {
+  "ename": "k8s-mode",
+  "commit": "44085c3f730315a5fc2a9a003ffa16d5df9f9a52",
+  "sha256": "14m4s0l61a2h38pdq6iczva24cl3mqdkw99k1q0drisdrvy57f33",
+  "fetcher": "github",
+  "repo": "TxGVNN/emacs-k8s-mode",
+  "unstable": {
+   "version": [
+    20191006,
+    849
+   ],
+   "deps": [
+    "yaml-mode"
+   ],
+   "commit": "5984acee6f3891afa78acfd1d08c44a24953a233",
+   "sha256": "11x602pmqa3833azkzph1ghm354nypv6rr1y53k6kdrkwviwkcpm"
+  }
+ },
+ {
+  "ename": "kaesar",
+  "commit": "201fac8639e59dc923ea31da1f84a99f83d51b47",
+  "sha256": "0zhi1dv1ay1azh7afq4x6bdg91clwpsr13nrzy7539yrn9sglj5l",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-kaesar",
+  "unstable": {
+   "version": [
+    20160128,
+    1008
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d087075cb1a46c2c85cd075220e09b2eaef9b86e",
+   "sha256": "1pl0514rj99b1j3y33x2bnhjbdbv9bfxgqn9498bf4ns8zayc6y9"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "4fa74851cd928f30e9f2ee1aa27ee6074ad253ea",
+   "sha256": "03l9w238a5kyfin3v1fy1q2pl0gvmb87j0v89g6nk114s7m4y3r8"
+  }
+ },
+ {
+  "ename": "kaesar-file",
+  "commit": "201fac8639e59dc923ea31da1f84a99f83d51b47",
+  "sha256": "0dcizg82maad98mbqqw5lamwz7n2lpai09jsrc66x3wy8k784alc",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-kaesar",
+  "unstable": {
+   "version": [
+    20160128,
+    1008
+   ],
+   "deps": [
+    "kaesar"
+   ],
+   "commit": "d087075cb1a46c2c85cd075220e09b2eaef9b86e",
+   "sha256": "1pl0514rj99b1j3y33x2bnhjbdbv9bfxgqn9498bf4ns8zayc6y9"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    0
+   ],
+   "deps": [
+    "kaesar"
+   ],
+   "commit": "4fa74851cd928f30e9f2ee1aa27ee6074ad253ea",
+   "sha256": "03l9w238a5kyfin3v1fy1q2pl0gvmb87j0v89g6nk114s7m4y3r8"
+  }
+ },
+ {
+  "ename": "kaesar-mode",
+  "commit": "201fac8639e59dc923ea31da1f84a99f83d51b47",
+  "sha256": "0yqnlchbpmhsqc8j531n08vybwa32cy0v9sy4f9fgxa90rfqczry",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-kaesar",
+  "unstable": {
+   "version": [
+    20160128,
+    1008
+   ],
+   "deps": [
+    "cl-lib",
+    "kaesar"
+   ],
+   "commit": "d087075cb1a46c2c85cd075220e09b2eaef9b86e",
+   "sha256": "1pl0514rj99b1j3y33x2bnhjbdbv9bfxgqn9498bf4ns8zayc6y9"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "kaesar"
+   ],
+   "commit": "4fa74851cd928f30e9f2ee1aa27ee6074ad253ea",
+   "sha256": "03l9w238a5kyfin3v1fy1q2pl0gvmb87j0v89g6nk114s7m4y3r8"
+  }
+ },
+ {
+  "ename": "kakapo-mode",
+  "commit": "a43f0f1f6a0773240a51d379ec786c20a9389e7b",
+  "sha256": "0a99cqflpzasl4wcmmf99aj8xgywkym37j7mvnsajrsk5wawdlss",
+  "fetcher": "github",
+  "repo": "listx/kakapo-mode",
+  "unstable": {
+   "version": [
+    20171004,
+    451
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "292e07203c676361a1d918deb5acf2123cd70eaf",
+   "sha256": "00rl5y7wra7kyp867ps2inx0vng9jrmym0sm4jhnk6pqj50c8i9y"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "fe3d579867f7465cd3ad04f29b4b2b3b820edc01",
+   "sha256": "0b6af8hnrn0v4z1xpahjfpw5iga2bmgd3qwfn3is2rygsn5rkm40"
+  }
+ },
+ {
+  "ename": "kakoune",
+  "commit": "f7e554f20c378aabd9736fdd606e513d2cbf951f",
+  "sha256": "0ps904m3vb2v5jykc6mk9cb974imiac0pw6b7q1p9x5swk8h4jh5",
+  "fetcher": "github",
+  "repo": "jmorag/kakoune.el",
+  "unstable": {
+   "version": [
+    20191017,
+    1502
+   ],
+   "deps": [
+    "expand-region",
+    "multiple-cursors",
+    "ryo-modal"
+   ],
+   "commit": "d73d14e69ea38076af50cc69f846808383ff539d",
+   "sha256": "0nk6jdy1y5mc3ryd0smiqghrk6iv34d5grc7f7migmshlbq0np92"
+  }
+ },
+ {
+  "ename": "kaleidoscope",
+  "commit": "148d47626879be1608f35827ef82a28274ff4de3",
+  "sha256": "0nfz207rzpnni7jyzvdvz5lr0zcpzy278a86821cmw8d5l81a3yp",
+  "fetcher": "github",
+  "repo": "algernon/kaleidoscope.el",
+  "unstable": {
+   "version": [
+    20170808,
+    817
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "52b5be3277f65cb5ca657973e9bd7f914b996356",
+   "sha256": "0g2n73habz844f64p1x66kxpvadv9zh34qmxhql34c3w2sm9mmwf"
+  }
+ },
+ {
+  "ename": "kaleidoscope-evil-state-flash",
+  "commit": "148d47626879be1608f35827ef82a28274ff4de3",
+  "sha256": "17a4nmdi6h0z4va3kiw4ivaywiisblz6cicypk9d3g9sl92drcvq",
+  "fetcher": "github",
+  "repo": "algernon/kaleidoscope.el",
+  "unstable": {
+   "version": [
+    20170728,
+    1020
+   ],
+   "deps": [
+    "evil",
+    "kaleidoscope",
+    "s"
+   ],
+   "commit": "52b5be3277f65cb5ca657973e9bd7f914b996356",
+   "sha256": "0g2n73habz844f64p1x66kxpvadv9zh34qmxhql34c3w2sm9mmwf"
+  }
+ },
+ {
+  "ename": "kanban",
+  "commit": "c5c918900ad97075d788b3de658cddbb0c94f5d0",
+  "sha256": "04sy524zz5y99pb1nvlvqf9qyk57mrlmjqbjy44crl34ypi8gik6",
+  "fetcher": "hg",
+  "url": "https://hg.sr.ht/~arnebab/kanban.el",
+  "unstable": {
+   "version": [
+    20170418,
+    810
+   ],
+   "commit": "dd11d722b20ae720f29b8aa93a3b1cad87650b33",
+   "sha256": "07g0spi9jf48vap76f9rgl61sg3jqy03qdxnmchzwlia8wvcsscb"
+  }
+ },
+ {
+  "ename": "kanji-mode",
+  "commit": "c9f1fb16f2f7f677d0817fd63633dd071ba2cf12",
+  "sha256": "0nnkv7lp7ks9qhkbhz15ixm53grc2q0xfspzykxi9c4b59kypcq5",
+  "fetcher": "github",
+  "repo": "wsgac/kanji-mode",
+  "unstable": {
+   "version": [
+    20160826,
+    1139
+   ],
+   "commit": "eda4f8666486689d36317db7dbda54fb73d3e3d2",
+   "sha256": "1m0s1kdgz1psiidpxcrzm8qmvmrmk5g2k8lz1lq357z482l4i7ll"
+  }
+ },
+ {
+  "ename": "kaocha-runner",
+  "commit": "7be32636579e00518b81644ba88e2ed9c1cf7346",
+  "sha256": "1j68vpbqsqyx54igqpihpzlmr4w38i52ms1aj41s4bgr953fmr43",
+  "fetcher": "github",
+  "repo": "magnars/kaocha-runner.el",
+  "unstable": {
+   "version": [
+    20190904,
+    1950
+   ],
+   "deps": [
+    "cider",
+    "parseedn",
+    "s"
+   ],
+   "commit": "1376d50f1fc91f9345351aeb4960b54bf83be59e",
+   "sha256": "06zp5kshcsxf91d4as0nw1ncxx1a8ii6npzvk485sjrghnldsccm"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "cider",
+    "parseedn",
+    "s"
+   ],
+   "commit": "c4ec9cdc817e5f4c3f8d6013e44ea2df8f3eb07f",
+   "sha256": "062c6j8l2vv2vc23z5iq4b50p92k6bni1rayhhd8j0h5bkiml4w3"
+  }
+ },
+ {
+  "ename": "kaolin-themes",
+  "commit": "043a4e3bd5301ef8f4df2cbda0b3f4111eb399e4",
+  "sha256": "1pd2v54d578f1wbwvqzplkdz1qvy8w8s6na511b0v5y9sksgm2xw",
+  "fetcher": "github",
+  "repo": "ogdenwebb/emacs-kaolin-themes",
+  "unstable": {
+   "version": [
+    20200508,
+    1621
+   ],
+   "deps": [
+    "autothemer",
+    "cl-lib"
+   ],
+   "commit": "15e2612eba2eeb223f6b4e5ac4a55dc5da09b14a",
+   "sha256": "0qay924qz5ab7a4d7cnancfnb7ivra33dr6knwqmy3wf089jl6kk"
+  },
+  "stable": {
+   "version": [
+    1,
+    5,
+    4
+   ],
+   "deps": [
+    "autothemer",
+    "cl-lib"
+   ],
+   "commit": "db1c43915fe68f31fffa00159b4198c32e87c8ed",
+   "sha256": "038bqg66m5cpg1w70la3jr57rq9fngmb1g67z27lpqcf3xf416xc"
+  }
+ },
+ {
+  "ename": "kaomoji",
+  "commit": "140c65cb3cdf6c197b085ccf8ba079e1efd15f38",
+  "sha256": "1p61pbqf2lnwr6ryxxc4jkd5bmlgknrc27lg89h3b4pw7k39cqy1",
+  "fetcher": "github",
+  "repo": "kuanyui/kaomoji.el",
+  "unstable": {
+   "version": [
+    20171227,
+    440
+   ],
+   "deps": [
+    "helm-core"
+   ],
+   "commit": "90a1490743b2a30762f5454c9d9309018eff83dd",
+   "sha256": "1jc796nyrck3k50x6jb1wsaawk396y4gk87gkwb8yd5qks7ci35q"
+  }
+ },
+ {
+  "ename": "kapacitor",
+  "commit": "db1f8cfcda2fa2b9be74a6cd9f95608e8b3f50bb",
+  "sha256": "108b3y71p7s3lcwbqxp7hy2l304yj4hxm2nq8iv7ljr8av1q7kn6",
+  "fetcher": "github",
+  "repo": "Manoj321/kapacitor-el",
+  "unstable": {
+   "version": [
+    20190414,
+    1908
+   ],
+   "deps": [
+    "magit",
+    "magit-popup"
+   ],
+   "commit": "e3300d8b4017a2f66b0d929cb85bcc7ee2612072",
+   "sha256": "05vrfii2n2g2q60dzgw23ck6gxxm3d7fsabi4z0g3k9gc6wrsl5l"
+  }
+ },
+ {
+  "ename": "karma",
+  "commit": "681e12556c3ab3e2a8376d5c7c33ee5a213de650",
+  "sha256": "19wl7js7wmw7jv2q3l4r5zl718lhy2a0jhl79k57ihwhxdc58fwc",
+  "fetcher": "github",
+  "repo": "tonini/karma.el",
+  "unstable": {
+   "version": [
+    20160220,
+    1245
+   ],
+   "deps": [
+    "pkg-info"
+   ],
+   "commit": "31d3e7708246183d7ed0686be92bf23140af348c",
+   "sha256": "12v242kfcx849j8w95v2g7djh9xqbx8n033iaxyavfxnz0pp7zdl"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "f4ee856e7f59649e9d9021c46f872f9b4f5b7e6e",
+   "sha256": "0avcg307r4navvgj3hjkggk4gr7mzs4mljhxh223r8g69l9bm6m8"
+  }
+ },
+ {
+  "ename": "kconfig-mode",
+  "commit": "c359713acdb396c16d39fb6013d46677b5afa245",
+  "sha256": "17dhx5hjqhk4bljmj0v2xy379a0l89h8454x53mv6m9qm3rsnrhd",
+  "fetcher": "github",
+  "repo": "delaanthonio/kconfig-mode",
+  "unstable": {
+   "version": [
+    20190818,
+    2030
+   ],
+   "commit": "02bb919596cf673828e95872dc329f2424a99864",
+   "sha256": "1h0v9528d2ssjgqa8813l3anhz15aggsmf8yln0qpphhrlrkfmpz"
+  }
+ },
+ {
+  "ename": "kdeconnect",
+  "commit": "c363866d30fb86ae636d30def8c3847711ada762",
+  "sha256": "1bcwpnwmm1l2jzc5znw8z6f5knysinidsbm12v4r1j8v6v80ydw6",
+  "fetcher": "github",
+  "repo": "carldotac/kdeconnect.el",
+  "unstable": {
+   "version": [
+    20180126,
+    2340
+   ],
+   "commit": "ca0cbf9a628ba7b519b43fa85e0d988ca26bf853",
+   "sha256": "07aqzfg2nn35bkikrmk1lszqkc6h8vn2551m22mwc19lmdx94p2i"
+  }
+ },
+ {
+  "ename": "keepass-mode",
+  "commit": "350528855b482abee717d9d0515279e41ea9265e",
+  "sha256": "0vgkx8iz7vzavdkpgfxpnn6pcsnrfhf0vgx2m17rqv3g8ryb38hs",
+  "fetcher": "github",
+  "repo": "ifosch/keepass-mode",
+  "unstable": {
+   "version": [
+    20200216,
+    723
+   ],
+   "commit": "09dcc1da15808b5b6c22bc5d0cb4e2ba5d425ef8",
+   "sha256": "0r3aczydp6435alirl9c2gbb1a92c9mv6ibk9h57ds30z9ia31jr"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "commit": "ad073eaab4f96ca033df023736d195dc3b611897",
+   "sha256": "0kyzcws47ch3pkw9ijb4gjr7l933c3mrxc9bsy16ddkc8dvl7yng"
+  }
+ },
+ {
+  "ename": "kerl",
+  "commit": "166afdc776689b0da93576dbeaa71ff6dfb627db",
+  "sha256": "0f8n7cm5c432pwj28bcpv2jj5z3br3k164xj6nwfis3dvijwsgss",
+  "fetcher": "github",
+  "repo": "correl/kerl.el",
+  "unstable": {
+   "version": [
+    20150424,
+    2005
+   ],
+   "commit": "1732ee26213f021bf040919c45ad276aafcaae14",
+   "sha256": "1kkzs7nrcr74qn1m456vaj52a9j3ah4biakimz06hls415l56yk9"
+  }
+ },
+ {
+  "ename": "key-chord",
+  "commit": "ae489be43b1aee93614e40f492ebdf0b98a3fbc1",
+  "sha256": "1g0jqmnn575h5n4figxbc5xs76zl8b1cdqa6wbi3d1p2rn3g8scr",
+  "fetcher": "github",
+  "repo": "emacsorphanage/key-chord",
+  "unstable": {
+   "version": [
+    20160227,
+    1238
+   ],
+   "commit": "72443e9ff3c4f1c3ccaced3130236801efde3d83",
+   "sha256": "15jfpysyydcvqlvdannxg2s4bh4i9z6i950fad1qlq43jfmq7k55"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "commit": "8468998946367157830df19a1e92785d22a34178",
+   "sha256": "10ldhwp9a21r9g72hzaig1h5yh2zblny0r36nf5nz6gzikfcq0cd"
+  }
+ },
+ {
+  "ename": "key-combo",
+  "commit": "99b422ef5f7b9dda894207e3133791fb9963a092",
+  "sha256": "1v8saw92jphvjkyy7j9jx7cxzgisl4zpf4wjzdjfw3la5lz11waf",
+  "fetcher": "github",
+  "repo": "uk-ar/key-combo",
+  "unstable": {
+   "version": [
+    20150324,
+    1439
+   ],
+   "commit": "2fb5c65bc82d5bd2964e2b163822429ab45d90a1",
+   "sha256": "1d445784mar1jrmrlswwxh3w52l3aym8kx3k4lgqwqa1p0i0pjqz"
+  },
+  "stable": {
+   "version": [
+    1,
+    6
+   ],
+   "commit": "0bc0cf6466a4257047a21a6d01913e92e6862165",
+   "sha256": "14ijniyvcfmj4y77yhiplsclincng2r3jbdnmmdnwzliv65f7l6q"
+  }
+ },
+ {
+  "ename": "key-intercept",
+  "commit": "ad758d865bde8c97d27c0d57cabe1606f8b36974",
+  "sha256": "1z776jbpjks5bir6bd0748mlrmz05nf0jy9l4hlmwgyn72dcbx16",
+  "fetcher": "github",
+  "repo": "tarao/key-intercept-el",
+  "unstable": {
+   "version": [
+    20140211,
+    749
+   ],
+   "commit": "d9a60edb4ce893f2d3d94f242164fdcc62d43cf2",
+   "sha256": "143nfs8pgi5yy3mjq7nirffplk4vb8kik4q7zypynh2pddip30a4"
+  }
+ },
+ {
+  "ename": "key-leap",
+  "commit": "8b56e18063e6292bb2aca2acc7077b32f3d62262",
+  "sha256": "0z1fhpf8g0c4rh3bf8dfmdgyhj5w686kavjr214czaga0x7mwlwj",
+  "fetcher": "github",
+  "repo": "MartinRykfors/key-leap",
+  "unstable": {
+   "version": [
+    20160831,
+    1447
+   ],
+   "commit": "b3f6ef15c8a13870475d5af159fa24b30f97dea0",
+   "sha256": "1f2k7jpxfvjirxzjc5c4s4lpg1hdgw8k7lfchx362jqijny1ipfp"
+  }
+ },
+ {
+  "ename": "key-quiz",
+  "commit": "e87df606bf768e3a731234c444077a11601ecc4a",
+  "sha256": "0zcs4nm9jis60ghm0xi84yc945xm45n0q1xp8ic1ix48wf7jq7a0",
+  "fetcher": "github",
+  "repo": "federicotdn/key-quiz",
+  "unstable": {
+   "version": [
+    20200226,
+    2129
+   ],
+   "commit": "1ee67f3f8977d95785e021f7896685de1979137e",
+   "sha256": "0cv0naq2g8z52vgf1p4mb55ww30bp2kpj1jp5cjnql1hxsvbx0mm"
+  }
+ },
+ {
+  "ename": "key-seq",
+  "commit": "0d54ab1b6973a44362e50559dd91344d0b17f513",
+  "sha256": "166k6hl9vvsnnksvhrv5cbhv9bdiclnbfv7qf67q4c1an9xzqi74",
+  "fetcher": "github",
+  "repo": "vlevit/key-seq.el",
+  "unstable": {
+   "version": [
+    20150907,
+    756
+   ],
+   "deps": [
+    "key-chord"
+   ],
+   "commit": "e29b083a6427d061638749194fc249ef69ad2cc0",
+   "sha256": "05vpydcgiaya35b62cdjxna9y02vnwzzg6p8jh0dkr9k44h4iy3f"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "key-chord"
+   ],
+   "commit": "e29b083a6427d061638749194fc249ef69ad2cc0",
+   "sha256": "05vpydcgiaya35b62cdjxna9y02vnwzzg6p8jh0dkr9k44h4iy3f"
+  }
+ },
+ {
+  "ename": "keycast",
+  "commit": "aaaf62c586818f2493667ad6ec8877234a58da53",
+  "sha256": "19qq5y1zjp3029kfq0c59xl9xnxqmdn2pd04sblznchcr9jdy5id",
+  "fetcher": "github",
+  "repo": "tarsius/keycast",
+  "unstable": {
+   "version": [
+    20200418,
+    2028
+   ],
+   "commit": "a912c4db1b88390f76b14e3b47ded314fdc8f48c",
+   "sha256": "07gfldj9y4jfvna1rqlr7w6y6daqdsvc1fb2m7acjn37bpmfrc3b"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "commit": "adb55497c0f16e90069d6e5e86b4f9f65f13624b",
+   "sha256": "1sprdfx0gvyqmq0fkf4bf56q3d8xxig2vxi38nzjx90llzvka35q"
+  }
+ },
+ {
+  "ename": "keychain-environment",
+  "commit": "4382c9e7e8dee2cafea9ee49965d0952ca359dd5",
+  "sha256": "1w77cg00bwx68h0d6k6r1fzwdwz97q12ch2hmpzjnblqs0i4sv8v",
+  "fetcher": "github",
+  "repo": "tarsius/keychain-environment",
+  "unstable": {
+   "version": [
+    20180318,
+    2223
+   ],
+   "commit": "d3643196de6dc79ea77f9f4805028350fd76100b",
+   "sha256": "0wzs77nwal6apinc39d4arj3lralv2cb9aw9gkikk46fgk404hwj"
+  },
+  "stable": {
+   "version": [
+    2,
+    4,
+    1
+   ],
+   "commit": "d3643196de6dc79ea77f9f4805028350fd76100b",
+   "sha256": "0wzs77nwal6apinc39d4arj3lralv2cb9aw9gkikk46fgk404hwj"
+  }
+ },
+ {
+  "ename": "keydef",
+  "commit": "5f2a50f62475639af011c99c6cc38928b74b3b0a",
+  "sha256": "0yb2vgj7abyg8j7qmv74nsanv50lf350q1m58rjv8wm31yykg992",
+  "fetcher": "github",
+  "repo": "emacsorphanage/keydef",
+  "unstable": {
+   "version": [
+    20090428,
+    1931
+   ],
+   "commit": "dff2be9f58d12d8c6a490ad0c1b2b10b55528dc0",
+   "sha256": "0dkc51bmix4b8czs2wg6vz8vk32qlll1b9fjmx6xshrxm85cyhvv"
+  },
+  "stable": {
+   "version": [
+    1,
+    15
+   ],
+   "commit": "dff2be9f58d12d8c6a490ad0c1b2b10b55528dc0",
+   "sha256": "0dkc51bmix4b8czs2wg6vz8vk32qlll1b9fjmx6xshrxm85cyhvv"
+  }
+ },
+ {
+  "ename": "keyfreq",
+  "commit": "cd7157bad0f3039321b5b279a88e7e4fce895543",
+  "sha256": "1rw6hzmw7h5ngvndy7aa41pq911y2hr9kqc9w4gdd5v2p4ln1qh7",
+  "fetcher": "github",
+  "repo": "dacap/keyfreq",
+  "unstable": {
+   "version": [
+    20160516,
+    1416
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "e5fe9d585ce882f1ba9afa5d894eaa82c79be4f4",
+   "sha256": "12m1jy8m8i39b809qbxx9g3r066jxhqwfyf5mqbd1lzlaw63b1i7"
+  },
+  "stable": {
+   "version": [
+    1,
+    8
+   ],
+   "commit": "f3a96693e2e4c6893198a0223e3f3c648ae09cec",
+   "sha256": "1x87mbnzkggx5llh0i0s3sj1nfw7liwnlqc9csya517w4x5mhl8i"
+  }
+ },
+ {
+  "ename": "keymap-utils",
+  "commit": "c03acebf1462dea36c81d4b9ab41e2e5739be3c3",
+  "sha256": "0nbcwz4nls0pva79lbx91bpzkl38g98yavwkvg2rxbhn9vjbhzs9",
+  "fetcher": "github",
+  "repo": "tarsius/keymap-utils",
+  "unstable": {
+   "version": [
+    20200413,
+    1858
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "195e0ca5b1b9967faf94a3e5a634d8975b796705",
+   "sha256": "0ckv9mbqb1f2lp17sv3nxjwww4ph9v3bhlxwvchvkkdlbcg87i5n"
+  },
+  "stable": {
+   "version": [
+    3,
+    0,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "0b9bb7f4959ca54f0827b202f513ec7508c11e0e",
+   "sha256": "11y1vdrj2isn00mh428ynzqnfxjsg0138wx0bs619j0pv6d3j09g"
+  }
+ },
+ {
+  "ename": "keypress-multi-event",
+  "commit": "fd02baaf1d49d55b066695d8fa9887c454bb1750",
+  "sha256": "07va7w6vgjf6jqrfzpsq8732b8aka07g29h661yh1xn4x6464hyp",
+  "fetcher": "github",
+  "repo": "Boruch-Baum/emacs-keypress-multi-event",
+  "unstable": {
+   "version": [
+    20190109,
+    530
+   ],
+   "commit": "9de65a27e10d8ae47aa6d28c02c3eb82ee8c0b2e",
+   "sha256": "1ybbayxfix63rwc8p5kl4wxxlk6vg53abw40fqrlkbc6qrr7nm5c"
+  }
+ },
+ {
+  "ename": "keypression",
+  "commit": "056a8881cd868634a1833172436528ea2503af12",
+  "sha256": "1ysfpxfhgy14v0jy02c4qyz28cx682cf2haxlnrpw2gxjh0a0702",
+  "fetcher": "github",
+  "repo": "chuntaro/emacs-keypression",
+  "unstable": {
+   "version": [
+    20200514,
+    822
+   ],
+   "commit": "1e00bbdb451fd88bde9917526fd0b13b2a1bd26c",
+   "sha256": "06j8pqss8izhyahf0nw95mg34lbclhzk4f5vzfg35qcmjmbmqzg6"
+  }
+ },
+ {
+  "ename": "keyset",
+  "commit": "7bad8a1f1b94fbfbde5d8035f7e22431e64a9eec",
+  "sha256": "1kfw0pfb6qm2ji1v0kb8xgz8q2yd2k9kxmaz5vxcdixdlax3xiqg",
+  "fetcher": "github",
+  "repo": "HKey/keyset",
+  "unstable": {
+   "version": [
+    20150220,
+    530
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "41bbfc4dbed5de6ecf3ec1dba634c7c26241ca84",
+   "sha256": "0cm6naqlwk65xy9lwnn5r7m6nc1l7ims2ckydmyzny5ak8y5jbws"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "25658ef79d26971ce41d9df207dff58d38daa091",
+   "sha256": "0z6sgz8nywsd00zaayafwy5hfi7kzxfifjkfr5cn1l7wlypyksfv"
+  }
+ },
+ {
+  "ename": "keystore-mode",
+  "commit": "7870d808fc19096ed6ecde5e9297b28254466210",
+  "sha256": "1r1my7jgjv2zvkhdwd8ml6489x48gzanz4lvdiw5m2hymb53fdg6",
+  "fetcher": "github",
+  "repo": "peterpaul/keystore-mode",
+  "unstable": {
+   "version": [
+    20190409,
+    1946
+   ],
+   "deps": [
+    "origami",
+    "s",
+    "seq"
+   ],
+   "commit": "43bd5926348298d077c7221f37902c990df3f951",
+   "sha256": "06cznkqkm04zz5lqfb514aqvsr2p13arzysixv0ss0bqpvdq7cv7"
+  }
+ },
+ {
+  "ename": "keyswap",
+  "commit": "ed8303f5009604ae3d83769063d38749e37fc5d8",
+  "sha256": "0ck9w2jr4vdk3yjlcdzblsbgw5w5x1cxbx7h1am5vkr6fhxh2hdi",
+  "fetcher": "github",
+  "repo": "hardenedapple/keyswap.el",
+  "unstable": {
+   "version": [
+    20160813,
+    957
+   ],
+   "commit": "cd682a7c4a8d64d6bae6a005db5045232e5e7b95",
+   "sha256": "191i2b2xx6180sly0dd6b1z6npsrzjqhxrbak9wm6yblx7alsgn2"
+  }
+ },
+ {
+  "ename": "keyword-search",
+  "commit": "8ecdc51938f2300bf005e2d1b1819e0fa59e0bd7",
+  "sha256": "0wvci1v8pblfbdslfzpi46c149y8pi49kza9jf33jzhj357lp5qa",
+  "fetcher": "github",
+  "repo": "keyword-search/keyword-search",
+  "unstable": {
+   "version": [
+    20180424,
+    1102
+   ],
+   "commit": "f8475ecaddb8804a9be6bee47678207c86ac8dee",
+   "sha256": "1ymqnpm9his2bkchq23vwazprwyw0d2sdgza7zjxvs3q0f4nj0vx"
+  }
+ },
+ {
+  "ename": "kfg",
+  "commit": "2990f45632697ce23e7cd9db807d8ae2d3bf61d2",
+  "sha256": "0kj79wwj2ih2ba57y3hl2l9pwjpsqns5waa8vi5g7agmqva0mh5b",
+  "fetcher": "github",
+  "repo": "czipperz/kfg",
+  "unstable": {
+   "version": [
+    20140909,
+    538
+   ],
+   "deps": [
+    "f"
+   ],
+   "commit": "d2c9dd26618fb2f7bf1e7b6eae193b1cceba3c97",
+   "sha256": "0xq835xzywks4b4kaz5i0pp759i23kibs5gkvvxasw0dncqh7j5c"
+  }
+ },
+ {
+  "ename": "khardel",
+  "commit": "d0dafe07d355f705b268b19460cf071ab878961f",
+  "sha256": "0h9dhlzjrci4q5p18fwwizs31f4gyz8d5jq011bvzcvz9q1q75sp",
+  "fetcher": "github",
+  "repo": "DamienCassou/khardel",
+  "unstable": {
+   "version": [
+    20191124,
+    1257
+   ],
+   "deps": [
+    "yaml-mode"
+   ],
+   "commit": "5ee835a4429c58dec3900e4fa3d7cc1e778c969b",
+   "sha256": "0k2q0m7g9bj4k5xc4cldhi7cfbb114g016abyzq3q3jaymja195z"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "yaml-mode"
+   ],
+   "commit": "5ee835a4429c58dec3900e4fa3d7cc1e778c969b",
+   "sha256": "0k2q0m7g9bj4k5xc4cldhi7cfbb114g016abyzq3q3jaymja195z"
+  }
+ },
+ {
+  "ename": "kibit-helper",
+  "commit": "f7fee551ca9ed226f1285dffe87027e1e1047f65",
+  "sha256": "15viybjqksylvm5ash2kzsil0cpdka56wj1rryixa8y1bwlj8y4s",
+  "fetcher": "github",
+  "repo": "brunchboy/kibit-helper",
+  "unstable": {
+   "version": [
+    20150508,
+    1533
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "16bdfff785ee05d8e74a5780f6808506d990cef7",
+   "sha256": "0s2hb2lvfmcvm3n1fg4biaafc1p7j7w990d7w15gicaw6rr2j4nr"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "ec5f154db3bb0c838e86f527353f08644cede926",
+   "sha256": "0ky167xh1hrmqsldybzjhyqjizgjzs1grn5mf8sm2j9qwcvjw2zv"
+  }
+ },
+ {
+  "ename": "kill-or-bury-alive",
+  "commit": "25016ed09b6333bd79b989a8f6b7b03cd92e08b3",
+  "sha256": "0mm0m8hpy5v98cap4f0s38dcviirm7s6ra4l94mknyvnx0f73lz8",
+  "fetcher": "github",
+  "repo": "mrkkrp/kill-or-bury-alive",
+  "unstable": {
+   "version": [
+    20190713,
+    1340
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "e77fcf46284afa1fd13499db695745112f41c8cd",
+   "sha256": "0c65qnsibcppyrf3bqp4blv2bfamisfwgxqy90z0gkbxzw9q4lxw"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    3
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "51daf55565034b8cb6aa3ca2aa0a827e31751041",
+   "sha256": "1qbdxjni1brhsw6m4cvd2jjaf3y8v3fkbxxf0pvsb089mkpi7mpq"
+  }
+ },
+ {
+  "ename": "kill-ring-search",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1jggi6r5j2dr9y17v4cyskc0wydfdpqgp1pib5dr2kg6n6w0s5xl",
+  "fetcher": "github",
+  "repo": "nschum/kill-ring-search.el",
+  "unstable": {
+   "version": [
+    20140422,
+    1555
+   ],
+   "commit": "23535b4a01a1cb1574604e36c49614e84e85c883",
+   "sha256": "0yrc09k64rv5is4wvss938mkj2pkvbr98lr3ahsi7p0aqn7s444v"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "3a5bc1767f742c91aa788df79ecec836a0946edb",
+   "sha256": "0axvhikhg4fikiz4ifg0p4a5ygphbpjs0wd0gcbx29n0y54d1i93"
+  }
+ },
+ {
+  "ename": "killer",
+  "commit": "bd8c3ec8fa272273128134dea96c0c999a524549",
+  "sha256": "10z4vqwrpss7mk0gq8xdsbsl0qibpp7s1g0l8wlmrsgn6kjkr2ma",
+  "fetcher": "github",
+  "repo": "tarsius/killer",
+  "unstable": {
+   "version": [
+    20190128,
+    10
+   ],
+   "commit": "ace0547944933440384ceeb5876b1f68c082d540",
+   "sha256": "06nzxd9nc1d569354xj7w88i0y5l99pyag691aribsh771rxbfz4"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "ace0547944933440384ceeb5876b1f68c082d540",
+   "sha256": "06nzxd9nc1d569354xj7w88i0y5l99pyag691aribsh771rxbfz4"
+  }
+ },
+ {
+  "ename": "kite",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "17bpk9ycx2xkwm3j1dxi5216lbzf5lgnscs8i4y0pkpicdn0wyr6",
+  "fetcher": "github",
+  "repo": "jscheid/kite",
+  "unstable": {
+   "version": [
+    20130201,
+    1938
+   ],
+   "deps": [
+    "json",
+    "websocket"
+   ],
+   "commit": "7ed74d1147a6ddd152d3da65dc30df3517d53144",
+   "sha256": "1cr4i66lws6yhyxmyx5jw6d5x7i75435mafkkych4nfa0mv4vicd"
+  }
+ },
+ {
+  "ename": "kite-mini",
+  "commit": "a9b76d0ee09efc6652d0541cf72c9623760dda66",
+  "sha256": "1g644406zm3db0fjyv704aa8dbd20v1apmysb3mmh2vldbch4iyh",
+  "fetcher": "github",
+  "repo": "tungd/kite-mini.el",
+  "unstable": {
+   "version": [
+    20160508,
+    1106
+   ],
+   "deps": [
+    "dash",
+    "websocket"
+   ],
+   "commit": "a68619dbc109c7989f3448426d8c1ee9e797c11f",
+   "sha256": "1qmg5mdf3zhmpa4kdvkh62y6if6mj4ag885dg7y6461dg2y6ymlh"
+  }
+ },
+ {
+  "ename": "kivy-mode",
+  "commit": "688e2a114073958c413e56e1d117d48db9d16fb8",
+  "sha256": "02l230rwivr7rbiqm4vg70458z35f9v9w3mdapcrqd5d07y5mvi1",
+  "fetcher": "github",
+  "repo": "kivy/kivy",
+  "unstable": {
+   "version": [
+    20180702,
+    2029
+   ],
+   "commit": "c0227c5ce4011033b5f0cf2815c352d123a13305",
+   "sha256": "1l3fjljm7abk29ibbbvds7nq72yqrgcsy5bv42s1czbffw62zcn6"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0,
+    -1,
+    2
+   ],
+   "commit": "78fb93b88f9941c22be02d36a786db8ca7639c59",
+   "sha256": "1z59fi9q32xql1w7pjh4w1jzfz1n63a0lr5x38kwjj79dpz3ccal"
+  }
+ },
+ {
+  "ename": "kiwix",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0x5ld557kxzx5s8ziy5axgvm1fxlq81l9gvinfgs8f257vjlki07",
+  "fetcher": "github",
+  "repo": "stardiviner/kiwix.el",
+  "unstable": {
+   "version": [
+    20200512,
+    1321
+   ],
+   "deps": [
+    "cl-lib",
+    "request"
+   ],
+   "commit": "dd02284149027694e4cf16d6f4daf1f6dd011249",
+   "sha256": "0zhg9467id0jd516hnz4c6aqmjp5q1s95fkhjxbk3g9j11cnfjf0"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "c662f3dc5d924a4b64b7af4af28f15f27b7cea1e",
+   "sha256": "0i11sfnqvjqqb625cgfzibs6yszx891y4dy7fd6wzmdpclcyzr8z"
+  }
+ },
+ {
+  "ename": "kixtart-mode",
+  "commit": "672cfc166209b6c2ffcb0e549fd2416be7212a5a",
+  "sha256": "079bw4lgxbmk65rrfyy8givs8j5wsyhpcjjw915ifkg577gj87qp",
+  "fetcher": "github",
+  "repo": "ryrun/kixtart-mode",
+  "unstable": {
+   "version": [
+    20150611,
+    1604
+   ],
+   "commit": "1c2356797e7b766bbaaa2b341176a8b10499cd79",
+   "sha256": "1ld3ccg8q7hmjrj60rxvmmfy4dpm2lvlshjqdf9ifgjzp221g4vb"
+  }
+ },
+ {
+  "ename": "klere-theme",
+  "commit": "07a3e348d69738ae59fce3570a61b0cdc565fdb8",
+  "sha256": "1lgvk6q2853rpk15i91zf917r8wmrb7bnagp4x02fws49x83hqrs",
+  "fetcher": "github",
+  "repo": "WammKD/emacs-klere-theme",
+  "unstable": {
+   "version": [
+    20180415,
+    1823
+   ],
+   "commit": "c064f9e5c44173c239fce239a62c8d5e61827672",
+   "sha256": "1rfdk35k1cj1z5gnsckcy93mqgj1amqzb13b89k11bnzc2m6r7zl"
+  }
+ },
+ {
+  "ename": "know-your-http-well",
+  "commit": "2ab50ae6278022281b2b7297c086089e5e669c7a",
+  "sha256": "0k2x0ajxkivim8nfpli716y7f4ssrmvwi56r94y34x4j3ib3px3q",
+  "fetcher": "github",
+  "repo": "for-GET/know-your-http-well",
+  "unstable": {
+   "version": [
+    20160208,
+    2304
+   ],
+   "commit": "3cc5ab6d2764ab7aacb1b6e026abaccbeb6c37f2",
+   "sha256": "0hni9xvv0759nqwhngijiqkvpiz7alyd4ydf0mvi2vkmbxkci8n1"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "commit": "c381a9735f3ea86ebc9667e35cdfeab0b67fefb7",
+   "sha256": "1lppggnii2r9fvlhh33gbdrwb50za8lnalavlq9s86ngndn4n94k"
+  }
+ },
+ {
+  "ename": "kodi-remote",
+  "commit": "08f06dd824e67250afafdecc25128ba794ca971f",
+  "sha256": "0f3n7b3plsw28xpz07lf5pv71b6s2xjhq2h23gpyg0r69v99chh5",
+  "fetcher": "github",
+  "repo": "spiderbit/kodi-remote.el",
+  "unstable": {
+   "version": [
+    20190622,
+    1325
+   ],
+   "deps": [
+    "cl-lib",
+    "f",
+    "json",
+    "let-alist",
+    "request"
+   ],
+   "commit": "f5e932036c16e2b61a63020e006fc601e38d181e",
+   "sha256": "1gck7lvqxcr9ikrzlpvcf4408cq6i4s8ijgb0kdsbkfzv0w86934"
+  }
+ },
+ {
+  "ename": "kolon-mode",
+  "commit": "b18f38d291303ff362e11ca711bb00bf411e2180",
+  "sha256": "0wcg8ph3mk4zcmzqpvl2w6rfgvrfvhmgwb14y8agh9b7v5d9xwj3",
+  "fetcher": "github",
+  "repo": "samvtran/kolon-mode",
+  "unstable": {
+   "version": [
+    20140122,
+    1134
+   ],
+   "commit": "5af0955e280ae991862189ebecd3937c5fc8fb9f",
+   "sha256": "0yr4yxwxgxp5pm9f8gaqlikxp26inv01inq0ya42dzam5yphkafw"
+  }
+ },
+ {
+  "ename": "kooten-theme",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1zhrjli65pn5nshz8pqn5vbsndzk2h8mhbcldq9k0mc7ki2rrdlv",
+  "fetcher": "github",
+  "repo": "kootenpv/emacs-kooten-theme",
+  "unstable": {
+   "version": [
+    20161023,
+    905
+   ],
+   "commit": "d10197b4dd7af02cd14aeab2573c273a294798c3",
+   "sha256": "1vc97d3i7jh4fbpan7lfnmsm32c4gwgrg11j2vq7z3rwm42wkkyr"
+  }
+ },
+ {
+  "ename": "korean-holidays",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1yf0z9vpiwhlsnyb0fy9wf5rz6f2fzzign96zgj0zd5hwmznbmyr",
+  "fetcher": "github",
+  "repo": "tttuuu888/korean-holidays",
+  "unstable": {
+   "version": [
+    20190102,
+    1558
+   ],
+   "commit": "3f90ed86f46f8e5533f23baa40e2513ac497ca2b",
+   "sha256": "0y88b4mr73qcshr87750jkjzz1mc2wwra6ca3y8spv4qc6cadwls"
+  }
+ },
+ {
+  "ename": "kosmos-theme",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0vj1z69hz0j7kxnzj13c4vck1qj5j1glr9lymk5ns2v8l56gakwb",
+  "fetcher": "github",
+  "repo": "habamax/kosmos-theme",
+  "unstable": {
+   "version": [
+    20170502,
+    1850
+   ],
+   "commit": "616456d2376a75dc31190ad65137d179fbad4336",
+   "sha256": "193zwgwfnj0lyk0msa16y0dfg7asp953p3jm56d9wdacggbcraj9"
+  }
+ },
+ {
+  "ename": "kotlin-mode",
+  "commit": "9f2560e913b215821221c96069a1385fe4e19c3e",
+  "sha256": "08jn8r4nhhlck0f7n5agibwh049rigdiy12lpmijbwk1zmcvsqws",
+  "fetcher": "github",
+  "repo": "Emacs-Kotlin-Mode-Maintainers/kotlin-mode",
+  "unstable": {
+   "version": [
+    20191102,
+    1510
+   ],
+   "commit": "8e6dd578f2b3d77ac33b6384d2bfe1b1f6799a1a",
+   "sha256": "12gwy76kz4qjw1qxma4q9pk9s2arzr5p95ni5vzizm2p4x4c5a8x"
+  }
+ },
+ {
+  "ename": "kpm-list",
+  "commit": "6b7065d016e2da49277b165edf565bef5819d483",
+  "sha256": "0022bhy1mzngjmjydyqnmlgnhww05v4dxsfav034r8nyyc7677z0",
+  "fetcher": "github",
+  "repo": "KMahoney/kpm-list",
+  "unstable": {
+   "version": [
+    20170924,
+    1352
+   ],
+   "commit": "e0f5112e5ce8ec1b603f4428fa51681c68bb28f5",
+   "sha256": "1achcr3v0d85narnxqpbfxy9qfk537kl83wiq5lyfy3lwqqf7dmp"
+  }
+ },
+ {
+  "ename": "kroman",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "0rcy3343pmlqzqzhmz2c3r0b44pn8fsyp39mvn9nmdnaxsn6q3k8",
+  "fetcher": "github",
+  "repo": "zhangkaiyulw/kroman-el",
+  "unstable": {
+   "version": [
+    20150827,
+    2340
+   ],
+   "commit": "90402b6ae40383e75d8ba97d66eee93eebf40f70",
+   "sha256": "11axxmhdpwgrcyjz200pf5bqzjw9wz4085r8p1n2vr5gx98374fr"
+  }
+ },
+ {
+  "ename": "ksp-cfg-mode",
+  "commit": "d49db5938fa4e3ab1176a955a4788b15c63d9e69",
+  "sha256": "0azcn4qvziacbw1qy33fwdaldw7xpzr672vzjsqhr0b2vg9m2ipi",
+  "fetcher": "github",
+  "repo": "lashtear/ksp-cfg-mode",
+  "unstable": {
+   "version": [
+    20190414,
+    2348
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "faec8bd8456c67276d065eb68c88a30efcef59ef",
+   "sha256": "192s6hz71i0d8bwxn2pdl9yggs2l5fd6jxlxmry8fpk04qg3lqrg"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "faec8bd8456c67276d065eb68c88a30efcef59ef",
+   "sha256": "192s6hz71i0d8bwxn2pdl9yggs2l5fd6jxlxmry8fpk04qg3lqrg"
+  }
+ },
+ {
+  "ename": "kubectx-mode",
+  "commit": "e1a9badd46f8900a1d6355cb2c703788ed66e8fb",
+  "sha256": "0g73yf3kl1f1c40p1na29hli4q0ligy0dh0lxc21k9mj57dbnzyg",
+  "fetcher": "github",
+  "repo": "terjesannum/emacs-kubectx-mode",
+  "unstable": {
+   "version": [
+    20200116,
+    1918
+   ],
+   "commit": "f08687ae5403eb18bbeffc6dafdfde469bdb9a36",
+   "sha256": "1yml417gj8ds3fiy0vvrv9vxnjyis157hcmhyn491hb67bd6xl5j"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    0
+   ],
+   "commit": "f08687ae5403eb18bbeffc6dafdfde469bdb9a36",
+   "sha256": "1yml417gj8ds3fiy0vvrv9vxnjyis157hcmhyn491hb67bd6xl5j"
+  }
+ },
+ {
+  "ename": "kubel",
+  "commit": "6fe35f90b858d0b6710b4bae8a2b80f97f1b8228",
+  "sha256": "17xsy0kj2dskmr8mmrlvhkrylzgbfd0jqay9qa9avzlh24v85jcm",
+  "fetcher": "github",
+  "repo": "abrochard/kubel",
+  "unstable": {
+   "version": [
+    20200429,
+    1454
+   ],
+   "deps": [
+    "dash",
+    "s",
+    "transient"
+   ],
+   "commit": "7a0f095992cc135babfbf9706b6eb927e0d0c883",
+   "sha256": "0g6sr8ndbig0vgqy7791hkzn89m5lj7qfq36inh5ci9q9r343ggg"
+  },
+  "stable": {
+   "version": [
+    2,
+    0
+   ],
+   "commit": "6fafe9c2b8edcb9df96965a315474c83a90b1809",
+   "sha256": "1q1wkwsx9dyjw1b6cxnz1w0xi8r75x7n6iq18v038ny2k110m6g9"
+  }
+ },
+ {
+  "ename": "kubel-evil",
+  "commit": "659b07e3acaa7f1738632b614098c0bdb7850969",
+  "sha256": "1rvzgkrw88m2im1gadpxz9galjzcnpfmqlim5020vy8lxi558zcj",
+  "fetcher": "github",
+  "repo": "abrochard/kubel",
+  "unstable": {
+   "version": [
+    20200312,
+    1349
+   ],
+   "deps": [
+    "evil",
+    "kubel"
+   ],
+   "commit": "7a0f095992cc135babfbf9706b6eb927e0d0c883",
+   "sha256": "0g6sr8ndbig0vgqy7791hkzn89m5lj7qfq36inh5ci9q9r343ggg"
+  },
+  "stable": {
+   "version": [
+    2,
+    0
+   ],
+   "deps": [
+    "evil",
+    "kubel"
+   ],
+   "commit": "6fafe9c2b8edcb9df96965a315474c83a90b1809",
+   "sha256": "1q1wkwsx9dyjw1b6cxnz1w0xi8r75x7n6iq18v038ny2k110m6g9"
+  }
+ },
+ {
+  "ename": "kubernetes",
+  "commit": "16850227ea48f6f38102b9cdf80e0758766a24d2",
+  "sha256": "06357a8y3rpvid03r9vhmjgq97hmiah5g8gff32dij9424vidil9",
+  "fetcher": "github",
+  "repo": "chrisbarrett/kubernetes-el",
+  "unstable": {
+   "version": [
+    20200114,
+    436
+   ],
+   "deps": [
+    "dash",
+    "magit",
+    "magit-popup"
+   ],
+   "commit": "cc33d8c7bb114c34809ee86020b9e635eff0017b",
+   "sha256": "11bi1z28rf2ldx20mqgq6yfkpc1af9kgvjzrz3w3dcf074jp89lb"
+  },
+  "stable": {
+   "version": [
+    0,
+    13,
+    0
+   ],
+   "deps": [
+    "dash",
+    "magit",
+    "magit-popup"
+   ],
+   "commit": "8ae9dc2340620c7d8efb2347723b25bde5a6fba0",
+   "sha256": "0di3vcq8c8j8avjlic7bhvbq4p27cvzyklm26wiq4rga88vjhyb0"
+  }
+ },
+ {
+  "ename": "kubernetes-evil",
+  "commit": "16850227ea48f6f38102b9cdf80e0758766a24d2",
+  "sha256": "12ygfs6g9aivf2ws3lxwjm5xnd2kidhli889icpygd5v7gnk9pg8",
+  "fetcher": "github",
+  "repo": "chrisbarrett/kubernetes-el",
+  "unstable": {
+   "version": [
+    20191108,
+    615
+   ],
+   "deps": [
+    "evil",
+    "kubernetes"
+   ],
+   "commit": "cc33d8c7bb114c34809ee86020b9e635eff0017b",
+   "sha256": "11bi1z28rf2ldx20mqgq6yfkpc1af9kgvjzrz3w3dcf074jp89lb"
+  },
+  "stable": {
+   "version": [
+    0,
+    13,
+    0
+   ],
+   "deps": [
+    "evil",
+    "kubernetes"
+   ],
+   "commit": "8ae9dc2340620c7d8efb2347723b25bde5a6fba0",
+   "sha256": "0di3vcq8c8j8avjlic7bhvbq4p27cvzyklm26wiq4rga88vjhyb0"
+  }
+ },
+ {
+  "ename": "kubernetes-helm",
+  "commit": "269c73e26b3d0cc51bbac8b63bb3782f7428ab40",
+  "sha256": "0rik7qz5m2hxylmdsjdnrlj52sm7c669milxxp5i1a1c44621xa6",
+  "fetcher": "github",
+  "repo": "abrochard/kubernetes-helm",
+  "unstable": {
+   "version": [
+    20190201,
+    320
+   ],
+   "deps": [
+    "yaml-mode"
+   ],
+   "commit": "bdf9280899b5efab6d55ffd96bad716c5f8e75bc",
+   "sha256": "05fsxknp2jpmchvz49hpvh8xvkwl70ksar6ccjqrp7nqcn7cvz2j"
+  }
+ },
+ {
+  "ename": "kubernetes-tramp",
+  "commit": "8ea4b15e64a9dc33b9977650488693cacadd1ab1",
+  "sha256": "15nlx3w2v0gky0zgbx7n0w1mdr6yaj4dh028ay2k19wg8wbsckjq",
+  "fetcher": "github",
+  "repo": "gruggiero/kubernetes-tramp",
+  "unstable": {
+   "version": [
+    20181228,
+    922
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "8713571b66940f8f3f496b55baa23cdf1df7a869",
+   "sha256": "05xbpdgxglqw7s2chay32s5kmglpd446dg3vh02d1462lh474snf"
+  }
+ },
+ {
+  "ename": "kurecolor",
+  "commit": "58a5ebdbf82e83e6602161bca049d468887abe02",
+  "sha256": "0q0q0dfv376h7j3sgwxqwfpxy1qjbvb6i5clsxz9xp4ly89w4d4f",
+  "fetcher": "github",
+  "repo": "emacsfodder/kurecolor",
+  "unstable": {
+   "version": [
+    20200113,
+    2027
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "3fc84840cbbd75e646cafa2fd3a00004b55e37ec",
+   "sha256": "0y8wj8f2wzhg5vl4kjrqny3333616s4lcil085190yyb7mjakvn5"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    6
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "a27153f6a01f38226920772dc4917b73166da5e6",
+   "sha256": "04av67q5841jli6rp39hav3a5gr2vcf3db4qsv553i23ffplb955"
+  }
+ },
+ {
+  "ename": "kv",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0c10r7mhg517p62lc87ccqypsjrm28xh3bgv4f01fnx569jqgzgp",
+  "fetcher": "github",
+  "repo": "nicferrier/emacs-kv",
+  "unstable": {
+   "version": [
+    20140108,
+    1534
+   ],
+   "commit": "721148475bce38a70e0b678ba8aa923652e8900e",
+   "sha256": "0r0lz2s6gvy04fwnafai668jsf4546h4k6zd6isx5wpk0n33pj5m"
+  }
+ },
+ {
+  "ename": "kwin",
+  "commit": "04e6d622a1f1cb765c33297a99f06ed513985498",
+  "sha256": "1pxnyj81py3ygadmyfrqndb0jkk6xlbf0rg3857hsy3ccblzm7ki",
+  "fetcher": "github",
+  "repo": "reactormonk/kwin-minor-mode",
+  "unstable": {
+   "version": [
+    20150308,
+    1812
+   ],
+   "commit": "d4f8f3593598b71ee596e0a87b2c1d6a912a9566",
+   "sha256": "0irbfgip493hyh45msnb7climgfwr8f05nvc97bzaqggnay88scy"
+  }
+ },
+ {
+  "ename": "lab-themes",
+  "commit": "c5817cb4cb3a573f93bacfb8ef340bef0e1c5df4",
+  "sha256": "10gvrrbqp6rxc9kwk8315pa1ldmja42vwr31xskjaq0l4fd28kx0",
+  "fetcher": "github",
+  "repo": "MetroWind/lab-theme",
+  "unstable": {
+   "version": [
+    20200204,
+    1931
+   ],
+   "commit": "2cd61072d2b4c563d961f80918fc6b1dc45f7ba4",
+   "sha256": "0jwslzxjyclr4iw8ir0glcj5iasgx2z9i16qn7705sdmdmbzkdwz"
+  }
+ },
+ {
+  "ename": "labburn-theme",
+  "commit": "b1bfc9870fbe61f58f107b72fd7f16efba22c902",
+  "sha256": "09qqb62hfga88zka0pc27rc8i43cxi84cv1x8wj0vvzx6mvic1lm",
+  "fetcher": "github",
+  "repo": "ksjogo/labburn-theme",
+  "unstable": {
+   "version": [
+    20200309,
+    1556
+   ],
+   "commit": "d11537a2060df7e992217ede8f65d6c11de49458",
+   "sha256": "0aqdl3hq76r315h2h75lxgbyb7hw3hdg49n72frm1wx7hj372d0g"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "bfa1d9f1c7e107cb45754fe57e4e72a9be70e9d1",
+   "sha256": "1r221fwfigr6fk4p3xh00wgw9wxm2gpzvj17jf5pgd7cvyspchsy"
+  }
+ },
+ {
+  "ename": "laguna-theme",
+  "commit": "58566386032a017c26ab07c551e72fbe1c20117d",
+  "sha256": "15ip30ssvp4sqy70998dkkik099mblx4gdsclwh17yc0vi03cg11",
+  "fetcher": "github",
+  "repo": "HenryNewcomer/laguna-theme",
+  "unstable": {
+   "version": [
+    20191229,
+    19
+   ],
+   "commit": "0da19f68ba22a39c02d83063f5b4936401ce4d97",
+   "sha256": "1r8di1cmhcx2vfk3fsydx24spib1fi4wihnxa41favnkjzklz9jv"
+  }
+ },
+ {
+  "ename": "lambdapi-mode",
+  "commit": "86702d5ad9279f03bdae5facb0b546e133c1fedd",
+  "sha256": "0ha9k0wc5snb5j0bpzjj91b7kd9ppsk8wbcj454wdkx87x73npdd",
+  "fetcher": "github",
+  "repo": "Deducteam/lambdapi",
+  "unstable": {
+   "version": [
+    20200513,
+    1043
+   ],
+   "deps": [
+    "eglot",
+    "math-symbol-lists"
+   ],
+   "commit": "a3d4ae8863e268c88664ce869e9469c8a42d2e05",
+   "sha256": "1v8w70x1jnald6k22ipa7d9z1ggcf2imr97wbw3i48dp4iv21zqd"
+  }
+ },
+ {
+  "ename": "lammps-mode",
+  "commit": "8f5471a8e17977c17ad84b12a77fe80f37eda25e",
+  "sha256": "06i48pxp9vq4z7hffna0cndr6iblapim169659pmhidbc4pp7bm4",
+  "fetcher": "github",
+  "repo": "HaoZeke/lammps-mode",
+  "unstable": {
+   "version": [
+    20180801,
+    1319
+   ],
+   "commit": "a5b68d7a59975770b56ee8f6e66fa4f703a72ffe",
+   "sha256": "1ma33bszv7d6am47n5r74ja4ks7n46m8xfkkr3vcqymlfhbdpq73"
+  }
+ },
+ {
+  "ename": "lang-refactor-perl",
+  "commit": "6bbbf89b71364720dd39e2cf902271108151b5ca",
+  "sha256": "02fv25d76rvxqzxs48j4lkrifdhqayyb1in05ryyz2pk9x5hbax9",
+  "fetcher": "github",
+  "repo": "jplindstrom/emacs-lang-refactor-perl",
+  "unstable": {
+   "version": [
+    20131122,
+    2127
+   ],
+   "commit": "691bd69639de6b7af357e3b7143563ececd9c497",
+   "sha256": "135k7inkvdz51j7al3nndaamrkyn989vlv1mxcp8lwx8cgq0rqfj"
+  }
+ },
+ {
+  "ename": "langdoc",
+  "commit": "defe78f12dbd7137bed7b1a309caa579e220f7dc",
+  "sha256": "19i6ys58wswl5ckf33swl6lsfzg4znx850br4icik15yrry65yj7",
+  "fetcher": "github",
+  "repo": "tom-tan/langdoc",
+  "unstable": {
+   "version": [
+    20150218,
+    645
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "2c7223bacb116992d700ecb19a60df5c09c63424",
+   "sha256": "0svci7xs4iysv8ysf93g382arip0xpgi0fllw8xx2vrd70sz7lff"
+  }
+ },
+ {
+  "ename": "langtool",
+  "commit": "503845e79e67c921f1fde31447f3dd4da2b6f993",
+  "sha256": "1xq70jyhzg0qmvialy015crbdk9rdibhwpl36khab9hi2999wxyw",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-langtool",
+  "unstable": {
+   "version": [
+    20200117,
+    441
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a71ed02ce06920ae3cafd6708de1c21811ce14c3",
+   "sha256": "1ars70nx8gxb8szlp6jyqjll9gr7j9z5cd9ip1izqv00si6p1fvn"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    4
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "adb80f55665db65a46fc552d364386d3cc703d94",
+   "sha256": "15bbyc0fqdn7d0k8zrn71jljkq9cc8a5rcllywvph46lnfnqy3p6"
+  }
+ },
+ {
+  "ename": "language-detection",
+  "commit": "ed2b68d0a11e5db0e7f2f5cbb2eb93c298bcb765",
+  "sha256": "1c613dj6j05idqyjd6ix7llw04d0327aicac04cicrb006km3r51",
+  "fetcher": "github",
+  "repo": "andreasjansson/language-detection.el",
+  "unstable": {
+   "version": [
+    20161123,
+    1813
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "54a6ecf55304fba7d215ef38a4ec96daff2f35a4",
+   "sha256": "0p8kim8idh7hg9398kpgjawkxq9hb6fraxpamdkflg8gjk0h5ppa"
+  }
+ },
+ {
+  "ename": "language-id",
+  "commit": "d03af6375bc7ba4612c43dea805d7f392f046f87",
+  "sha256": "0p7hg005bmzy38sv2881fq1x2i7yjdhfjbki4y2av485c418rqz8",
+  "fetcher": "github",
+  "repo": "lassik/emacs-language-id",
+  "unstable": {
+   "version": [
+    20200409,
+    607
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "bf17d80b6c4b58fb66cddc2b2914f57d48468e97",
+   "sha256": "1p21smbm3z6xfq0zk8pv62wppbbxx8mh994ax8b00kh16j7yhh2c"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "bf17d80b6c4b58fb66cddc2b2914f57d48468e97",
+   "sha256": "1p21smbm3z6xfq0zk8pv62wppbbxx8mh994ax8b00kh16j7yhh2c"
+  }
+ },
+ {
+  "ename": "languagetool",
+  "commit": "ce91d4013963eacf1525809684e64ca52239fb73",
+  "sha256": "1cbhamz8yhfnyhzbn4j0kp9sbsycq1hi0j2kr3yhbf66fgi6x9f6",
+  "fetcher": "github",
+  "repo": "PillFall/Emacs-LanguageTool.el",
+  "unstable": {
+   "version": [
+    20200507,
+    610
+   ],
+   "commit": "e7faecf8a7eec8086aafc48a5c4f1908bb5c4300",
+   "sha256": "1nb5l1xpgz9z6xplb64a3nx8vis70r9dl0xxly5hddy67i49si54"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "e7faecf8a7eec8086aafc48a5c4f1908bb5c4300",
+   "sha256": "1nb5l1xpgz9z6xplb64a3nx8vis70r9dl0xxly5hddy67i49si54"
+  }
+ },
+ {
+  "ename": "lastfm",
+  "commit": "0b87a3465eece39cb2f73a90dedf97dd0dd970c2",
+  "sha256": "06gy4br99r8l9ak2ac7js9nyw4v5b94a8ja4pkik49l90qgss93m",
+  "fetcher": "github",
+  "repo": "mihaiolteanu/lastfm.el",
+  "unstable": {
+   "version": [
+    20200320,
+    1839
+   ],
+   "deps": [
+    "anaphora",
+    "elquery",
+    "memoize",
+    "request",
+    "s"
+   ],
+   "commit": "54636059512adec0176950e8fce3b9bf7423619d",
+   "sha256": "1ffvh71vgsdv118hhz0x2xfmqb2bayk7i3mdxc1ybs2vrdggnim4"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "deps": [
+    "anaphora",
+    "elquery",
+    "memoize",
+    "request",
+    "s"
+   ],
+   "commit": "96568f07324ba32804be9352016956694923f5f3",
+   "sha256": "04a563g6rby8374azpfjdagbgdylcg2glfx5wdx5agd98bs15j28"
+  }
+ },
+ {
+  "ename": "lastpass",
+  "commit": "46e5e8735baab7728bddce2693cea6bcee0e6360",
+  "sha256": "0x4c9c110nqv3v6kzcxdg9a9zcg7yn1hj6ffgrbsd8c3wbrdxrlj",
+  "fetcher": "github",
+  "repo": "storvik/emacs-lastpass",
+  "unstable": {
+   "version": [
+    20200320,
+    2117
+   ],
+   "deps": [
+    "cl-lib",
+    "seq"
+   ],
+   "commit": "ac472f844bd1e109c62479253cbc40bb5e50ed8f",
+   "sha256": "07bh7vkczzpmkbxxyyhn912b5rjm975a49y1bq08y4vd006zsq4x"
+  }
+ },
+ {
+  "ename": "latex-extra",
+  "commit": "1e6aed365c42987d64d0cd9a8a6178339b1b39e8",
+  "sha256": "1w98ngxymafigjpfalybhs12jcf4916wk4nlxflfjcx8ryd9wjcj",
+  "fetcher": "github",
+  "repo": "Malabarba/latex-extra",
+  "unstable": {
+   "version": [
+    20170817,
+    147
+   ],
+   "deps": [
+    "auctex",
+    "cl-lib"
+   ],
+   "commit": "82d99b8b0c2db20e5270749582e03bcc2443ffb5",
+   "sha256": "15m7zvdhg5z7d8alrw66p703wdp5r57lxrgq3zz7xc4hscwghlb1"
+  },
+  "stable": {
+   "version": [
+    1,
+    14
+   ],
+   "deps": [
+    "auctex",
+    "cl-lib"
+   ],
+   "commit": "82d99b8b0c2db20e5270749582e03bcc2443ffb5",
+   "sha256": "15m7zvdhg5z7d8alrw66p703wdp5r57lxrgq3zz7xc4hscwghlb1"
+  }
+ },
+ {
+  "ename": "latex-math-preview",
+  "commit": "9e413b7684e9199510b00035825aa861d670e072",
+  "sha256": "14bn0q5czrrkb1vjdkwx6f2x4zwjkxgrc0bcncv23l13qls1gkmr",
+  "fetcher": "gitlab",
+  "repo": "latex-math-preview/latex-math-preview",
+  "unstable": {
+   "version": [
+    20190123,
+    802
+   ],
+   "commit": "90fd86da2d9514882146a5db40cb916fc533cf55",
+   "sha256": "063vnjhnxm2z9shkdv1j8kwyf37syczfkzxzh5z7w7aidvx55jzj"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    3
+   ],
+   "commit": "90fd86da2d9514882146a5db40cb916fc533cf55",
+   "sha256": "063vnjhnxm2z9shkdv1j8kwyf37syczfkzxzh5z7w7aidvx55jzj"
+  }
+ },
+ {
+  "ename": "latex-pretty-symbols",
+  "commit": "f96a50861bdb87133690d64af85e132cc504f13c",
+  "sha256": "1idxv83vvx29xavyzzm5vh5f3bb0yb1p6688csxaaikaj9fsa5gs",
+  "fetcher": "github",
+  "repo": "epa095/latex-pretty-symbols.el",
+  "unstable": {
+   "version": [
+    20151112,
+    1044
+   ],
+   "commit": "83d5888147bb734a94dfd4847a11e975a7d86ba8",
+   "sha256": "0h9hncf2ghfkd3i3342ajj1niykhfr0aais3j6sjg1vkm16xbr3b"
+  }
+ },
+ {
+  "ename": "latex-preview-pane",
+  "commit": "bb3227f2e35d701915a8d3479d20581dcbe3a778",
+  "sha256": "1id1l473azmc9hm5vq5wba8gad9np7sv38x94qd2zkf8b78pzkbw",
+  "fetcher": "github",
+  "repo": "jsinglet/latex-preview-pane",
+  "unstable": {
+   "version": [
+    20181008,
+    1822
+   ],
+   "commit": "5297668a89996b50b2b62f99cba01cc544dbed2e",
+   "sha256": "1m4f5p53275k8i9p0y105kkrp9nx1bwn6726my9s5dwnjhr5dnp2"
+  }
+ },
+ {
+  "ename": "latex-unicode-math-mode",
+  "commit": "9c021dfad8928c1a352e0ef5526eefa6c0a9cb37",
+  "sha256": "1p9gpp28vylibv1s95bzfgscznw146ybgk6f3qdbbnafrcrmifcr",
+  "fetcher": "github",
+  "repo": "Christoph-D/latex-unicode-math-mode",
+  "unstable": {
+   "version": [
+    20170123,
+    1816
+   ],
+   "commit": "eb4a5c9f9b00a58d2ca80f90782a851f4c8497b8",
+   "sha256": "1bsqaz14mb092cvq8fk4kkcgifhbpmnndlvvz8qhyfh8i5i92i8b"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "commit": "3b82347291edcb32e4062b0048c367a3079b3e8c",
+   "sha256": "1xylfg8xpyb2m0qnysf58cl05ibbg4drhgq7msiiql2qrdzvpx9f"
+  }
+ },
+ {
+  "ename": "latexdiff",
+  "commit": "d164cf118a2c928c04e4d5cbfd47ac732e626fe0",
+  "sha256": "002frvk31q3plrqa6lldadchck51bch4n126y5l33fyfs0ipspfa",
+  "fetcher": "github",
+  "repo": "galaunay/latexdiff.el",
+  "unstable": {
+   "version": [
+    20190827,
+    1651
+   ],
+   "commit": "56d0b240867527d1b43d3ddec14059361929b971",
+   "sha256": "1gkhzladgh0dj5pvak822x6nq7f4h6382647flhv7c65fqszscbf"
+  }
+ },
+ {
+  "ename": "launch",
+  "commit": "8e46ed1761fa2e69f0dc2f58e422ea1de8a8cb49",
+  "sha256": "043gwz583pa1wv84fl634p1v86lcsldsw7qkjbm6y678q5mms0m6",
+  "fetcher": "github",
+  "repo": "sfllaw/emacs-launch",
+  "unstable": {
+   "version": [
+    20130619,
+    2204
+   ],
+   "commit": "e7c3b573fc05fe4d3d322389079909311542e799",
+   "sha256": "0ciycsqzyj6ld60c7sfqjq59ln3jvk3w9vy606kqzpcvj01ihmv1"
+  }
+ },
+ {
+  "ename": "launch-mode",
+  "commit": "876755fff14914b10a26d15f0c7ff32be7c51aa3",
+  "sha256": "1za0h16z84ls7da17qzqady0simzy5pk1mlw3mb0nhlg2cfmn060",
+  "fetcher": "github",
+  "repo": "iory/launch-mode",
+  "unstable": {
+   "version": [
+    20170106,
+    512
+   ],
+   "commit": "25ebd4ba77afcbe729901eb74923dbe9ae81c313",
+   "sha256": "1pjb4gwzkk6djzyfqqxf6y5xvrsh4bi5ijg60zrdlnhivggnfbvn"
+  }
+ },
+ {
+  "ename": "launchctl",
+  "commit": "66d0d8c6f7cb66e56328a9cfe9cdef6dffc3c1be",
+  "sha256": "07fq445cjpv4ndi7hnjmsrmskm2rlp6ghq0k3bcbjxl21smd9vs9",
+  "fetcher": "github",
+  "repo": "pekingduck/launchctl-el",
+  "unstable": {
+   "version": [
+    20150518,
+    1309
+   ],
+   "commit": "73f8f52a5aa9a0be9bdcf68c29ad0fa2b4a115a4",
+   "sha256": "154z7bhb7qagvl3dlgrlsxdg4chz2863ijglg47xs3yhjp5ypanj"
+  }
+ },
+ {
+  "ename": "lavender-theme",
+  "commit": "641d1959bd31598fcdacd39a3d1bb077dcccfa5c",
+  "sha256": "1x7mk3dpk44fkzll6xmh2dw270cgb3a9qs3h8bmiq2dw0wrcwcd1",
+  "fetcher": "github",
+  "repo": "emacsfodder/emacs-lavender-theme",
+  "unstable": {
+   "version": [
+    20170808,
+    1313
+   ],
+   "commit": "ef5e959b95d7fb8152137bc186c4c24e986c1e3c",
+   "sha256": "0pbpns387fmalkakbdl2q7d2y720m7ai7mnydsinjwlkdrshvj4g"
+  }
+ },
+ {
+  "ename": "lavenderless-theme",
+  "commit": "f21ef334dd997fb96e0306cd56538279644765f8",
+  "sha256": "1lbk654d4y5fg4j71kqmfq3xx8dr9rib2zcv9njaip77zjzbbxid",
+  "fetcher": "git",
+  "url": "https://git.sr.ht/~lthms/colorless-themes.el",
+  "unstable": {
+   "version": [
+    20200213,
+    2057
+   ],
+   "deps": [
+    "colorless-themes"
+   ],
+   "commit": "2b4c341640c8191a39e4bc28d6cd04c7d6dcbb37",
+   "sha256": "0ni9cnrv464fk840i1ll241kzkiy1zc6nfrbdv3ciixxdxbshxbn"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "colorless-themes"
+   ],
+   "commit": "8e539097185704444a5dd5545924de92c11ba767",
+   "sha256": "1p16vxai8dj1vy4ahflwij1ldx00jzrjcinpgpc7wgh6ka748v11"
+  }
+ },
+ {
+  "ename": "lcb-mode",
+  "commit": "fd1380a9ba363f62f297e3ab2995341258b51fd1",
+  "sha256": "184vd5ll0ms2lspzv8zz2zbairsr8i9p3gs28hrnnwm6mrpx4n18",
+  "fetcher": "github",
+  "repo": "peter-b/lcb-mode",
+  "unstable": {
+   "version": [
+    20160816,
+    540
+   ],
+   "commit": "be0768e9aa6f9b8e76f2230f4f7f4d152a766b9a",
+   "sha256": "0mgcqqhjadm8ckp6x37f9j4xcs61g73m9v8qr4zbw115yci2d0xk"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "be0768e9aa6f9b8e76f2230f4f7f4d152a766b9a",
+   "sha256": "0mgcqqhjadm8ckp6x37f9j4xcs61g73m9v8qr4zbw115yci2d0xk"
+  }
+ },
+ {
+  "ename": "lcr",
+  "commit": "29374d3da932675b7b3e28ab8906690dad9c9cbe",
+  "sha256": "07syirjlrw8g95zk273953mnmg9x4bv8jpyvvzghhin4saiiiw3k",
+  "fetcher": "github",
+  "repo": "jyp/lcr",
+  "unstable": {
+   "version": [
+    20180902,
+    1919
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "c14f40692292d59156c7632dbdd2867c086aa75f",
+   "sha256": "0mc55icihxqpf8b05990q1lc2nj2792wcgyr73xsiqx0963sjaj8"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "c14f40692292d59156c7632dbdd2867c086aa75f",
+   "sha256": "0mc55icihxqpf8b05990q1lc2nj2792wcgyr73xsiqx0963sjaj8"
+  }
+ },
+ {
+  "ename": "leaf",
+  "commit": "24afe5b39979e2f17e104ae97d840645d2a5c2f1",
+  "sha256": "0h4v3fswbwa40hws8l29mmnka5wl9kyj6f01dnvadc725a34az38",
+  "fetcher": "github",
+  "repo": "conao3/leaf.el",
+  "unstable": {
+   "version": [
+    20200511,
+    821
+   ],
+   "commit": "59c85a53385a3c55ce6b3b0e62a4fca1556389eb",
+   "sha256": "0scmdb99i20xk8rvlv2xjg54lqqvfp9gv8q9kpqa8jpcq21nbav0"
+  },
+  "stable": {
+   "version": [
+    4,
+    1,
+    0
+   ],
+   "commit": "0841ab466a1542868b5448bb375ac9f0c33e2b3f",
+   "sha256": "0lpgkd2hhv98k7bi7zdplhlv0p3gbp4aq2cb0kyiwp2yxlnmkbzv"
+  }
+ },
+ {
+  "ename": "leaf-convert",
+  "commit": "db2fa6cdfe98aea41eeafb59527050edfa9ef6e5",
+  "sha256": "1hw6imdf8f7939r077zccv0sa23xfcmwpbhjyb49g4nhzs5grpnv",
+  "fetcher": "github",
+  "repo": "conao3/leaf-convert.el",
+  "unstable": {
+   "version": [
+    20200415,
+    1725
+   ],
+   "deps": [
+    "leaf",
+    "leaf-keywords",
+    "ppp"
+   ],
+   "commit": "2a8ec045d5d36e85e7deb2a46aefacaecf4bfafe",
+   "sha256": "133id4zd9dnx962r71m0irxvqs9dwaqnv5l4b8bjd3gigijah1dp"
+  }
+ },
+ {
+  "ename": "leaf-keywords",
+  "commit": "dfe671ccd5a87ba4157f55e2a16a39dfaa10c027",
+  "sha256": "0i5hn1051hfbppbsv2m5p7h1rrn9pbvsps6vsk84ssqvhj7ryvyb",
+  "fetcher": "github",
+  "repo": "conao3/leaf-keywords.el",
+  "unstable": {
+   "version": [
+    20200428,
+    1803
+   ],
+   "deps": [
+    "leaf"
+   ],
+   "commit": "bdf225b2b2cc76b87f5bf55dfa09c3a020ac1e7d",
+   "sha256": "0wdxxwh64l013vpkb7xpjqzyy4c0qy7h9l6l5cr4pncp7nx3bcns"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "9352716f153582cdf801a13e17dc04cfcd2bb951",
+   "sha256": "146h2n71f22gsqgh221ghx56qb9cq9qac3p77gxji535l2s9hbvk"
+  }
+ },
+ {
+  "ename": "leaf-manager",
+  "commit": "e1d80f4662a0f77360244fc4b34f2076db4fd478",
+  "sha256": "1pr5yljhif5ffm63g6w6544cy6m15kljbdvxs87ivnisblbl4s21",
+  "fetcher": "github",
+  "repo": "conao3/leaf-manager.el",
+  "unstable": {
+   "version": [
+    20200414,
+    543
+   ],
+   "deps": [
+    "leaf",
+    "leaf-convert",
+    "ppp"
+   ],
+   "commit": "f2ae35e02ebe218daa3076a0e9d83b4feadfbb0a",
+   "sha256": "09ll1vs9y6qmcl3qxil52mjw5bf7x896wjsij4kf0y5wd2fhra61"
+  }
+ },
+ {
+  "ename": "leaf-tree",
+  "commit": "2e51160b1e5d277e66b9cff493b1f6b3c6f9ee28",
+  "sha256": "1xnqxwa978wbvx181v48zd37vckrj6p6wa7gas3fj648mwdjnii3",
+  "fetcher": "github",
+  "repo": "conao3/leaf-tree.el",
+  "unstable": {
+   "version": [
+    20200412,
+    2355
+   ],
+   "deps": [
+    "imenu-list"
+   ],
+   "commit": "22f6c116cf1465c28d4a35d8a4587a8b614be175",
+   "sha256": "1bgjhrpq6a239v8vfi6i9qcbyrg76mpy4yykkb5da8hlp23idwy7"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "imenu-list"
+   ],
+   "commit": "22f6c116cf1465c28d4a35d8a4587a8b614be175",
+   "sha256": "1bgjhrpq6a239v8vfi6i9qcbyrg76mpy4yykkb5da8hlp23idwy7"
+  }
+ },
+ {
+  "ename": "lean-mode",
+  "commit": "42f4d6438c8aeb94ebc1782f2f5e2abd17f0ffde",
+  "sha256": "0rdraxsirkrzbinjwg4qam15iy3qiixqgwsckngzw8d9a4s9l6sj",
+  "fetcher": "github",
+  "repo": "leanprover/lean-mode",
+  "unstable": {
+   "version": [
+    20200319,
+    838
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "f",
+    "flycheck",
+    "s"
+   ],
+   "commit": "65b55b1711fb61129312044d5ac7e6a2c2ee245c",
+   "sha256": "1zmw8950qhry2ixk2ng0pg4j0vwx11nvjlrpab9jg6x47ys9j65n"
+  }
+ },
+ {
+  "ename": "leanote",
+  "commit": "b00b806ae4562ca5a74f41c12ef35bfa597bcfa8",
+  "sha256": "1xnfv7bpkw3ir402962zbp856d56nas098nkf7bamnsnax6kkqw7",
+  "fetcher": "github",
+  "repo": "aborn/leanote-emacs",
+  "unstable": {
+   "version": [
+    20161223,
+    139
+   ],
+   "deps": [
+    "async",
+    "cl-lib",
+    "let-alist",
+    "pcache",
+    "request",
+    "s"
+   ],
+   "commit": "d499e7b59bb1f1a2fabc0e4c26fb101ed62ebc7b",
+   "sha256": "1lg4zml26q97bx9jrmjikhnm3d74b12q2li5h8gpxx9m35wc360c"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "deps": [
+    "async",
+    "cl-lib",
+    "let-alist",
+    "pcache",
+    "request",
+    "s"
+   ],
+   "commit": "1bd49fdf13ef707bae7edaa724a1592aa7fb002f",
+   "sha256": "1k58rhk5p819cvfa6zg7j3ysvzhq6dc433fzhh1ff0gwga2vrqbz"
+  }
+ },
+ {
+  "ename": "learn-ocaml",
+  "commit": "6110b273c4f3bb8eddf1b79dbfa82f9c01600182",
+  "sha256": "17fah2109s9dzavmbsw5bgpjb4m9r2j9rgpf38av3bd89qba416z",
+  "fetcher": "github",
+  "repo": "pfitaxel/learn-ocaml.el",
+  "unstable": {
+   "version": [
+    20200224,
+    2229
+   ],
+   "commit": "e3424b3ae3f7d85ef020d030c2fa58df86ed8955",
+   "sha256": "0a8x2c0lxa0xihpbc9i1dvn1l00nsmawl1nv3i06r6iq5486pqdn"
+  }
+ },
+ {
+  "ename": "ledger-import",
+  "commit": "4a1e2a9546b8b40f5f880197cb8166a6a715451f",
+  "sha256": "1lcibmjk2d49vsa89wri7bbf695mjq2ikddz3nlzb6ljywsnqzm4",
+  "fetcher": "github",
+  "repo": "DamienCassou/ledger-import",
+  "unstable": {
+   "version": [
+    20200302,
+    943
+   ],
+   "deps": [
+    "ledger-mode"
+   ],
+   "commit": "955e915fef9d46c968ef9101f7770870e2d2d80f",
+   "sha256": "018f7k4j8q1ka36winv2higjp8vmm90vss7vwyck9hg4w708m85p"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "ledger-mode"
+   ],
+   "commit": "2c199fcc8671c2ec82e62cea7716289426b7407c",
+   "sha256": "0szi5k05qja28nx0rnl3amh3qf2f470sycdjgmpazgqh4zpkngsp"
+  }
+ },
+ {
+  "ename": "ledger-mode",
+  "commit": "1549048b6f57fbe9d1f7fcda74b78a7294327b7b",
+  "sha256": "10asbcb5syv3b75bngsab3c84dp2xmc0q7s29im6kf4mzv5zcfcf",
+  "fetcher": "github",
+  "repo": "ledger/ledger-mode",
+  "unstable": {
+   "version": [
+    20200509,
+    1136
+   ],
+   "commit": "5a517cee3dfedfd1b90c2f01d6d8e01198a198d1",
+   "sha256": "1gldvp2gp8vh97skrkxbcxh1qvjpndankjckm1q1h7jpkznjvc2v"
+  },
+  "stable": {
+   "version": [
+    4,
+    0,
+    0
+   ],
+   "commit": "964630f80e0e80dad83134a3660f56948390173a",
+   "sha256": "1r5rcyxd6d1rqwamzpvqdbkbdf1zbj75aaciqijrklnm59ps244y"
+  }
+ },
+ {
+  "ename": "leerzeichen",
+  "commit": "5de7033e75bc28de6e50b2146511cdaac4542ad6",
+  "sha256": "0h7zpskcgkswr110vckfdbxggz5b3g9grk1j1cbd98pmrpgfqrvp",
+  "fetcher": "github",
+  "repo": "fgeller/leerzeichen.el",
+  "unstable": {
+   "version": [
+    20170422,
+    1313
+   ],
+   "commit": "5acf9855ecb2b2cd5da4402bb48df149e7525cc5",
+   "sha256": "1bx4pv51a9x8f51pjrms8jkfrpa3glwkh308svz05gnyi2g0r8hw"
+  }
+ },
+ {
+  "ename": "leetcode",
+  "commit": "f1f35b9b63f3f04dfca7c5fe62d3530b47006d8f",
+  "sha256": "094klmrh2adj9fcpykswdbbxm714cfws1lqgz64b7gdf82m5nm8x",
+  "fetcher": "github",
+  "repo": "kaiwk/leetcode.el",
+  "unstable": {
+   "version": [
+    20200101,
+    1111
+   ],
+   "deps": [
+    "aio",
+    "dash",
+    "graphql",
+    "spinner"
+   ],
+   "commit": "28b78c45c86570cb1e3538f275eb4de1cf28cd04",
+   "sha256": "1c9zsh4ikflgqjrkjbilfqjjb0g698mqy2g5b210ssbivvkvncb5"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    10
+   ],
+   "deps": [
+    "aio",
+    "dash",
+    "graphql",
+    "spinner"
+   ],
+   "commit": "28b78c45c86570cb1e3538f275eb4de1cf28cd04",
+   "sha256": "1c9zsh4ikflgqjrkjbilfqjjb0g698mqy2g5b210ssbivvkvncb5"
+  }
+ },
+ {
+  "ename": "legalese",
+  "commit": "0fda2b54a0ff0b6fc3bd6d20cfcbbf63cae5380f",
+  "sha256": "18rkvfknaqwkmhsjpgrf2hknrb2zj61aw8rb4907gsbs9rciqpdd",
+  "fetcher": "github",
+  "repo": "jorgenschaefer/legalese",
+  "unstable": {
+   "version": [
+    20200119,
+    2248
+   ],
+   "commit": "e465471d2d5a62d35073d93e0f8d40387a82e302",
+   "sha256": "0xg4pyyyzd637i7shhq1frbva5rmy2j7y9cnf7zmms6a5qq4k1af"
+  }
+ },
+ {
+  "ename": "lemon-mode",
+  "commit": "6163d4cf36031349480039b82de8cdc75c2db169",
+  "sha256": "0jdf3556kmv55jh85ljqh2gdx0jl2b8zgvpz9a4kf53xifk3lqz5",
+  "fetcher": "github",
+  "repo": "mooz/lemon-mode",
+  "unstable": {
+   "version": [
+    20130216,
+    1304
+   ],
+   "commit": "155bfced6c9afc8072a0133d3d1baa54c6d67430",
+   "sha256": "0n6jrm5ilm5wzfrh7yjxn3sr5m10hwdm55b179ild32lh4795zj7"
+  }
+ },
+ {
+  "ename": "lenlen-theme",
+  "commit": "47d5b3c931cdbc2351e01d15e2b98c78081c9506",
+  "sha256": "1bddkcl9kzj3v071qpzmxzjwywqfj5j6cldz240qgp5mx685r0a9",
+  "fetcher": "github",
+  "repo": "zk-phi/lenlen-theme",
+  "unstable": {
+   "version": [
+    20170329,
+    245
+   ],
+   "deps": [
+    "color-theme-solarized"
+   ],
+   "commit": "b8a6412c81633b10fb98ba0930f55b25071c084a",
+   "sha256": "177fqqhd498v2h6wki6pgg982rp4jxhn4wrzajcqppjz4nidb1b7"
+  }
+ },
+ {
+  "ename": "lentic",
+  "commit": "cbb6f9cc3c1040b80fbf3f2df2ac2c3c8d18b6b1",
+  "sha256": "0y94y1qwj23kqp491b1fzqsrjak96k1dmmzmakbl7q8vc9bncl5m",
+  "fetcher": "github",
+  "repo": "phillord/lentic",
+  "unstable": {
+   "version": [
+    20190102,
+    2124
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "m-buffer",
+    "s"
+   ],
+   "commit": "e6d013bf570bb235817f6c8f0abdd31d3b456d53",
+   "sha256": "0ksmb5mvcpa699bw62fkhrx1i8adgrzsbc2fivfsimq54y25rdd7"
+  },
+  "stable": {
+   "version": [
+    0,
+    11
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "m-buffer",
+    "s"
+   ],
+   "commit": "8655ecd51e189bbdd6a4d8405dc3ea2e689c709a",
+   "sha256": "04h6vk7w25yp4kzkwqnsmc59bm0182qqkyk5nxm3a1lv1v1590lf"
+  }
+ },
+ {
+  "ename": "lentic-server",
+  "commit": "10b8cc0b4612d7d02be3a74c21b762cbf7613bd6",
+  "sha256": "1y9idhf9qcsw3dbdj7rwa7bdrn1q0m3bg3r2jzwdnvkq8aas1w56",
+  "fetcher": "github",
+  "repo": "phillord/lentic-server",
+  "unstable": {
+   "version": [
+    20160717,
+    2052
+   ],
+   "deps": [
+    "lentic",
+    "web-server"
+   ],
+   "commit": "8e809fafbb27a98f815b544d9d9ee15843eb6a36",
+   "sha256": "1wc1c6hqhbb5x4fi7lp30bsrfww9g12c41lphswy92qzlij4zbww"
+  }
+ },
+ {
+  "ename": "less-css-mode",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "188iplnwwhawq3dby3388kimy0jh1k9r8v9nxz52hy9rhh9hykf8",
+  "fetcher": "github",
+  "repo": "purcell/less-css-mode",
+  "unstable": {
+   "version": [
+    20161001,
+    453
+   ],
+   "commit": "c7fa3d56d83206b28657f2e56439dc62280a2bf2",
+   "sha256": "0nz2vhkpmishlx4gga6lljyjrz7lmnwj3vmvml9jykhiqgvnaf70"
+  },
+  "stable": {
+   "version": [
+    0,
+    21
+   ],
+   "commit": "59bf174c4e9f053ec2a7ef8c8a8198490390f6fb",
+   "sha256": "1rkjamdy2a80w439vb2hhr7vqjj47wi2azlr7yq2xdz9851xsx9f"
+  }
+ },
+ {
+  "ename": "letcheck",
+  "commit": "d6a0937f704e33bbb9ea8f101cd87c44e8050afb",
+  "sha256": "1sjwi1ldg6b1qvj9cvfwxq3qlkfas6pm8zasf43baljmnz38mxh2",
+  "fetcher": "github",
+  "repo": "Fuco1/letcheck",
+  "unstable": {
+   "version": [
+    20160202,
+    1948
+   ],
+   "commit": "edf188ca2f85349e971b83f164c6484264e79426",
+   "sha256": "06hggcbz98qhfbvp0fxn89j98d0mmki4wc4k8kfzp5fhg071chbi"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "e85b185993a2eaeec6490709f4c131fde2edd672",
+   "sha256": "1l9qjmyb4a3f6i2iimpmjczbx890cd1p24n941s13sg67xfbm7hn"
+  }
+ },
+ {
+  "ename": "letterbox-mode",
+  "commit": "1512e20962ea354e4311c0a2696a22576a099ba9",
+  "sha256": "117dj5xzf6givwjyqsciz6axhlcj7xbx0zj91ximm81kb5fswgda",
+  "fetcher": "github",
+  "repo": "pacha64/letterbox-mode",
+  "unstable": {
+   "version": [
+    20170702,
+    125
+   ],
+   "commit": "88c67a51d67216d569a28e8423200883fde096dd",
+   "sha256": "1xzzfr525pn2mj7x6xnvccxhls79bfpi5mqhl9ivisnlgj1bvdjw"
+  }
+ },
+ {
+  "ename": "leuven-theme",
+  "commit": "b09451f4eb2be820e94d3fecbf4ec7cecd2cabdc",
+  "sha256": "0pm5majr9cmj6g4zr7vb55ypk9fmfbvxx78mgmgignknbasq9g9a",
+  "fetcher": "github",
+  "repo": "fniessen/emacs-leuven-theme",
+  "unstable": {
+   "version": [
+    20200513,
+    1742
+   ],
+   "commit": "afda2d80b0bc98d431a3ac7c1563c76b8ace3a65",
+   "sha256": "0fapzkjnm3w4fgc5464a9bz2sld3m81zzls7sy4h0yxq9rpb284d"
+  }
+ },
+ {
+  "ename": "levenshtein",
+  "commit": "ae489be43b1aee93614e40f492ebdf0b98a3fbc1",
+  "sha256": "1vdbgzs7gfy89a1dzf6z5l3f5jmly1i8lb2fqi2d08qyl5rhb8bl",
+  "fetcher": "github",
+  "repo": "emacsorphanage/levenshtein",
+  "unstable": {
+   "version": [
+    20090830,
+    1040
+   ],
+   "commit": "070925197ebf6b704e6e00c4f2d2ec783f3df38c",
+   "sha256": "1w6rhp723kn1ns7r0gcblp5q8bvncicnjjsgdangbib1a4l2xw79"
+  }
+ },
+ {
+  "ename": "lexbind-mode",
+  "commit": "f3a493e642cc90bbe1c70a2d918793f0734464c9",
+  "sha256": "1hs9wg45mwp3fwi827rc4g0gjx4fk87zlibq3id9fcqic8q7nrnl",
+  "fetcher": "github",
+  "repo": "spacebat/lexbind-mode",
+  "unstable": {
+   "version": [
+    20141027,
+    1429
+   ],
+   "commit": "fa0a6848c1cfd3fbf45db43dc2deef16377d887d",
+   "sha256": "167ayfl1k8dnajw173hh67nbwbk4frmjc4fzc515q67m9d7m5932"
+  }
+ },
+ {
+  "ename": "lfe-mode",
+  "commit": "c44bdb00707c9ef90160e0a44f7148b480635132",
+  "sha256": "0smncyby53ipm8yqslz88sqjafk0x6r8d0qwk4wzk0pbgfyklhgs",
+  "fetcher": "github",
+  "repo": "rvirding/lfe",
+  "unstable": {
+   "version": [
+    20170121,
+    1254
+   ],
+   "commit": "a6c9922f31f59686bb48db1b8d5b75e74e79757a",
+   "sha256": "0wvk341hx0fsv4hihlr508grqzgzza0w3gfqh4c1f88mdpmm62if"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "commit": "af14b1439097850ffa39935419ed83f5bcaa6d09",
+   "sha256": "0pgwi0h0d34353m39jin8dxw4yykgfcg90k6pc4qkjyrg40hh4l6"
+  }
+ },
+ {
+  "ename": "libbcel",
+  "commit": "31f4cbd89473f48ad6b4cc78028e8c51f1ee95a7",
+  "sha256": "03sfd2af54cm53hh8k3d0b9jy7cj4f1hgd93wqvqi7bbcz91krg2",
+  "fetcher": "github",
+  "repo": "DamienCassou/libbcel",
+  "unstable": {
+   "version": [
+    20191203,
+    654
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "df466d31544c53d8550f9c08e58b70adc559c48c",
+   "sha256": "1l8m47aklx98m89i9d3kj9dd521xkicipgbfnpiyjzqmaw1bh6zm"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "d02a38898016bba314802b1f6a07317e52ea6c63",
+   "sha256": "1z5ydhv9qyk0g9b25n4m0xbvdy0j4y009iq8v2vy1m8c09lzp1v9"
+  }
+ },
+ {
+  "ename": "libelcouch",
+  "commit": "209d5c507cfe42b152c21a4534c3ba549186420f",
+  "sha256": "1zfjyfyjd59z0ns32v2b0r5g9ypjxrlmkx3djmxsmzd4an8ciq3p",
+  "fetcher": "github",
+  "repo": "DamienCassou/libelcouch",
+  "unstable": {
+   "version": [
+    20190820,
+    1632
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "29e369df4f96c7ad95bb33292de7a44122e0b4e7",
+   "sha256": "1xaa90dy1jq1yzcn9px931sgqsrsbwrc89lv0lss975jr827kfg2"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    0
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "fd90ff7989632452434fc19a609805f7276821f3",
+   "sha256": "0rpipbcfvi8ysx8aykj9sd23gkzq3knn656g84lb9h1zdjvc4zf1"
+  }
+ },
+ {
+  "ename": "liberime",
+  "commit": "0ccac33c02762314d997156df4627c0c4a0279c6",
+  "sha256": "0i95vjn4rw7n4f83nrxjkmilzalgmjlmyhsvwfm4n1rqfqdwkl5h",
+  "fetcher": "github",
+  "repo": "merrickluo/liberime",
+  "unstable": {
+   "version": [
+    20200511,
+    46
+   ],
+   "commit": "a631d3d575b5ffa2dc9a3a950c53f425c21380c1",
+   "sha256": "1gx3nxxcw5xz2n85xqgnghw04gaakhcnqcs9bnxx2fh4qpwkqggp"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    6
+   ],
+   "commit": "f13a98ddd7be658e742b0f42988b02db9d779e85",
+   "sha256": "09d9dx4jk8bgbdcn6dh9ar5rs33s2cwz08w211b3kgj41i115gl7"
+  }
+ },
+ {
+  "ename": "libgit",
+  "commit": "993a5abe3a9e8b160f0d68283eeca6af033abc79",
+  "sha256": "05yys8cjli2zhmhdh9w5qz287ibzplqabx5vyyjv9rpk6wgzkzik",
+  "fetcher": "github",
+  "repo": "magit/libegit2",
+  "unstable": {
+   "version": [
+    20200515,
+    1759
+   ],
+   "commit": "0ef8b13aef011a98b7da756e4f1ce3bb18e4d55a",
+   "sha256": "0pnjr3bg6y6354dfjjxfj0g51swzgl1fncpprah75x4k94rd369f"
+  }
+ },
+ {
+  "ename": "libmpdee",
+  "commit": "fc91db6f80463a1baea9759f9863b551ae21e180",
+  "sha256": "0z4d8y8jlsjw20b31akkaikh5xl0c05lj77d2i1xbgzam4iixma0",
+  "fetcher": "github",
+  "repo": "andyetitmoves/libmpdee",
+  "unstable": {
+   "version": [
+    20160117,
+    2301
+   ],
+   "commit": "a6ca3b7d6687f3ba60996b9b5044ad1d3b228290",
+   "sha256": "039awlam3nrgkxrarcapfyc2myvc77aw7whrkcsjjybzylpzv0pr"
+  }
+ },
+ {
+  "ename": "libmpdel",
+  "commit": "bb25443752e18e47afc63d5497cc5052c388a607",
+  "sha256": "0qi9g3czwzi9hhp7gjczpzjx9vgzz52xi91332l0sxcxmwbawjp1",
+  "fetcher": "github",
+  "repo": "mpdel/libmpdel",
+  "unstable": {
+   "version": [
+    20200105,
+    1537
+   ],
+   "commit": "95cb45ecea933e7befb2a5a6a6e7d15651c8746a",
+   "sha256": "0g0gsah4y12d2hrk2rsraxqjnd52fkikr0pgcrbrv2mcnqhs8c5m"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    0
+   ],
+   "commit": "a9d67cea595bfeff73cf6281fa735df98dee9a45",
+   "sha256": "1nzs6g2mg3jhfhhfcxjhd9sbvwzhmr6j6mc80ln2nr4gzjqgaa4k"
+  }
+ },
+ {
+  "ename": "lice",
+  "commit": "2508699ebfc846742940c5e4356b095b540e2405",
+  "sha256": "1hv2hz3153x0gk7f2js18dbx5pyprfdf2pfxb658fj16vxpp7y6x",
+  "fetcher": "github",
+  "repo": "buzztaiki/lice-el",
+  "unstable": {
+   "version": [
+    20191011,
+    631
+   ],
+   "commit": "3ff90745cd43d1cc41216a01f55f871a00692ffe",
+   "sha256": "08aiwyd0cxwd37jdy1m78l1r35h7fiq7wygpys2yrms6mdl8063b"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "69f2d87984f3f3d469db35e241fbbe979384cd03",
+   "sha256": "0hi8s20vw4a5i5n5jlm5dzgsl1qpfyqbpskqszjls1xrrf3dd4zl"
+  }
+ },
+ {
+  "ename": "light-soap-theme",
+  "commit": "053be1123bb934d80b4d6db0e7e39b59771be035",
+  "sha256": "09p4w51d5szhi81a6a3l0r4zd4ixkrkzxldr938bcmj0qmj62iyk",
+  "fetcher": "github",
+  "repo": "mswift42/light-soap-theme",
+  "unstable": {
+   "version": [
+    20150607,
+    1445
+   ],
+   "commit": "76a787bd40c6b567ae68ced7f5d9f9f10725e00d",
+   "sha256": "04dik8z2mg6qr4d3fkd26kg29b4c5crvbnc1lfsrzyrik7ipvsi8"
+  }
+ },
+ {
+  "ename": "line-reminder",
+  "commit": "6c2287c7b4c543e92ccfab120388b2c05174d2db",
+  "sha256": "1s3ibn7c1j6m7wdkb0z37apgfc0g8vhhrqcnmldf19zi3k13bm0x",
+  "fetcher": "github",
+  "repo": "jcs-elpa/line-reminder",
+  "unstable": {
+   "version": [
+    20191016,
+    1528
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f50f8474db7c9b26ab3cf56d08e5184209f25cec",
+   "sha256": "1frf77ilyadrzil8sjp3rpr6v7j1nmmk1dz84d0kf8yr2cl48d9h"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    3
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "ea7fc43210b5293beac4ac453b1bdde415f5183e",
+   "sha256": "13vspm2c53ph25li4xd77q2v7rqwsszsy8a842ivcgn0k3qn6w0r"
+  }
+ },
+ {
+  "ename": "line-up-words",
+  "commit": "28ac7764a19fee2e1e2a89d95569815f1940c5e4",
+  "sha256": "0agsrrkwwfmbiy4z3g4hkrpfr3nqgd5lwfn18qrdxynijd5rqs79",
+  "fetcher": "github",
+  "repo": "janestreet/line-up-words",
+  "unstable": {
+   "version": [
+    20180219,
+    1024
+   ],
+   "commit": "d083a9f0c74830bd77b794babb09fe0f0fdb3854",
+   "sha256": "1fgd2kfwh7gl4yxrmvv8yrv6wvvwy6y0nwibqqsy55698a1qb2fm"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "54d2c51c1c3da7e06be47b829bf465bf467ab53f",
+   "sha256": "0qda9i5yjjf2x5cpg6nxkzqwa8fzzjxk0yyc4295kbawwd83vglr"
+  }
+ },
+ {
+  "ename": "lines-at-once",
+  "commit": "513d0f0c6976f685fc0df6b6bb0da3162f58f537",
+  "sha256": "1hiij6i47i9px82ll87dvx5pgp5jzz8qis7hdm8n6hd3c9rnabma",
+  "fetcher": "github",
+  "repo": "jiahaowork/lines-at-once.el",
+  "unstable": {
+   "version": [
+    20180422,
+    247
+   ],
+   "commit": "a018ba90549384d52ec58c2685fd14a0f65252be",
+   "sha256": "0bwc4d2gnfhaqzn455nzrvd9lys7z7ay2v1hxgwp99ndqq93ws6i"
+  }
+ },
+ {
+  "ename": "lingr",
+  "commit": "bf5d29710ab17b1a98f9b559344e4dd40a2b9c08",
+  "sha256": "1445bxiirsxl9kgm0j86xc9d0pbaa5f07c1i66pw2vl40bvhrjff",
+  "fetcher": "github",
+  "repo": "lugecy/lingr-el",
+  "unstable": {
+   "version": [
+    20100807,
+    1731
+   ],
+   "commit": "4215a8704492d3c860097cbe2649936c22c196df",
+   "sha256": "0rkx0hk3y79rwhjqs3wvgxhg1rj83mxbqkhhm3jfawp8c1av4f40"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "c9c20dd9b4967aa2f8873d6890d6797e6a498d23",
+   "sha256": "11sw43z5b0vypmhi0yysf2bxjy8fqpzl61y503jb7nhcfywmfkys"
+  }
+ },
+ {
+  "ename": "linguistic",
+  "commit": "aedc03a846b873edf2426c422abb8c75732158f8",
+  "sha256": "0yhyrr7yknvky6fb6js0lfxbl13i6a218kya7cpj2dpzdckcbhca",
+  "fetcher": "github",
+  "repo": "andcarnivorous/linguistic",
+  "unstable": {
+   "version": [
+    20181129,
+    2116
+   ],
+   "commit": "23e47e98cdb09ee61883669b6d8a11bf6449862c",
+   "sha256": "1bz2w43v1w5xlkbmhmb423nisyhja6qkgwhl68r5vjxqj1gxn2xj"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "18e28a7e54efb140c17e16836bc5dac766c9522e",
+   "sha256": "12b9i3rdh16pq9q88bsg771y11rrbj9w74v2qr2bfymbp358qk17"
+  }
+ },
+ {
+  "ename": "link",
+  "commit": "5b08ed7b90e3283e177eff57cb02b12a093dc258",
+  "sha256": "17jpsg3f2954b740vyj37ikygrg5gmp0bjhbid8bh8vbz7xx9zy8",
+  "fetcher": "github",
+  "repo": "myrkr/dictionary-el",
+  "unstable": {
+   "version": [
+    20191111,
+    446
+   ],
+   "commit": "c9cad101100975e88873636bfd426b7a19304ebd",
+   "sha256": "0zsjbpq0s0xdxd9r541f04bj1khhgzhdlzr0m4p17zjh1zardbpi"
+  },
+  "stable": {
+   "version": [
+    1,
+    11
+   ],
+   "commit": "c9cad101100975e88873636bfd426b7a19304ebd",
+   "sha256": "0zsjbpq0s0xdxd9r541f04bj1khhgzhdlzr0m4p17zjh1zardbpi"
+  }
+ },
+ {
+  "ename": "link-hint",
+  "commit": "d24b48fe0bc127ae6ac4084be8059aacb8445afd",
+  "sha256": "12fb2zm9jnh92fc2nzmzmwjlhi64rhakwbh9lsydx9svsvkgcs89",
+  "fetcher": "github",
+  "repo": "noctuid/link-hint.el",
+  "unstable": {
+   "version": [
+    20200405,
+    1607
+   ],
+   "deps": [
+    "avy",
+    "cl-lib"
+   ],
+   "commit": "7440704cacb5c0fab35fff8ec59d30fbea17f44a",
+   "sha256": "0j609j69lxyfvr2g89gdkjrk1vy0c1qq6m0p0ay468bh7l6crs7v"
+  }
+ },
+ {
+  "ename": "linphone",
+  "commit": "c0ea68b186c813faceb6fc663633cb81df666f0e",
+  "sha256": "0q7mw1npxq24szhwswc93qz5h6magcxw63ymba7hwhif6my65zx7",
+  "fetcher": "github",
+  "repo": "zabbal/emacs-linphone",
+  "unstable": {
+   "version": [
+    20130524,
+    1109
+   ],
+   "commit": "99af3db941b7f4e5272bb48bff96c1ce4ceac302",
+   "sha256": "01yv6239z90hvncwmm9g5nh4xvyxv2ig3h4hsmxdn4kacfxvc84n"
+  }
+ },
+ {
+  "ename": "linum-off",
+  "commit": "c3774ed0cf6fb8c6d08553dc709c7e76a745b2e0",
+  "sha256": "1yilsdsyxlzmh64dpzirzga9c7lhp1phps9cdgp2898zpnzaclay",
+  "fetcher": "github",
+  "repo": "mattfidler/linum-off",
+  "unstable": {
+   "version": [
+    20160217,
+    2137
+   ],
+   "commit": "116e66ac259b183e0763b85616888316ab196822",
+   "sha256": "1pvgp76n2qnm01l5f9mkb9yqwfxag9x23wwqbsna66rmvsag69w0"
+  }
+ },
+ {
+  "ename": "linum-relative",
+  "commit": "97ae01be4892a7c35aa0f82213433a2944041d87",
+  "sha256": "0s1lc3lppazv0481dxknm6qrxhvkv0r9hw8xmdrpjc282l91whkj",
+  "fetcher": "github",
+  "repo": "coldnew/linum-relative",
+  "unstable": {
+   "version": [
+    20180124,
+    1047
+   ],
+   "commit": "c74a6981b688a5e1e6b8e0809363963ff558ce4d",
+   "sha256": "0svxi1l3s4rg1k1apfw25gzi127rsks56b5yfg79a48b5rf1xmkh"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "commit": "896df4b40c1e1eb59f55fcee48a1543f0ccd724e",
+   "sha256": "0b3n1gk2w1p72x0zfdz9l70winq2fnjpjrgq0awxx730xk7ypp5n"
+  }
+ },
+ {
+  "ename": "liquid-types",
+  "commit": "d5921fde4068ff1bb288f6f9e2fe03f4a7fdbbda",
+  "sha256": "1g7zyak69l4lcsq952j2jy692xxnill9nqb1xfa17yzp547cgvf2",
+  "fetcher": "github",
+  "repo": "ucsd-progsys/liquid-types.el",
+  "unstable": {
+   "version": [
+    20151202,
+    735
+   ],
+   "deps": [
+    "button-lock",
+    "dash",
+    "flycheck",
+    "flycheck-liquidhs",
+    "popup",
+    "pos-tip"
+   ],
+   "commit": "cc4bacbbf204ef9cf0756f78dfebee2c6ae14d7b",
+   "sha256": "06rnma2xj2vnbvy1bnls59cagk6qsf862bj1zp6xbmpr1a5l9m4z"
+  }
+ },
+ {
+  "ename": "liso-theme",
+  "commit": "27b849f3a41a5ae3d497cef02a95c92fd479b93b",
+  "sha256": "014a71dnhnr0dr36sl2h8ffp6il9nasij31ahqz0bjgn4r16s5gy",
+  "fetcher": "github",
+  "repo": "caisah/liso-theme",
+  "unstable": {
+   "version": [
+    20160410,
+    2029
+   ],
+   "commit": "844688245eb860d23043455e165ee24503454c81",
+   "sha256": "01ycjy3amzbplp3zf0x5fahsja92gyg2252xhzcyiazmhaz7gkrd"
+  }
+ },
+ {
+  "ename": "lisp-butt-mode",
+  "commit": "ec923a5f6018404171e6ffc3fb36a649e8defb1b",
+  "sha256": "0n6inbcjcpw5l95r3z63bdzld3bn3i5ywl2niqfhh9dfv2k1k5wc",
+  "fetcher": "gitlab",
+  "repo": "marcowahl/lisp-butt-mode",
+  "unstable": {
+   "version": [
+    20191128,
+    835
+   ],
+   "commit": "9eca319bdbb96dac4d44d19cd21937ed82a67268",
+   "sha256": "1biyvcwrqgyy7dmrv6i972lrcr5xhsyjq5nwc035c341jcxkp0g5"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    4
+   ],
+   "commit": "1ad373fd18d9db62b236d9d85603cd923f62f084",
+   "sha256": "0nhikhnqnxyxx6s14vafhfwd4ph2bwvxz0m7mn0arrf6hjqzw7ws"
+  }
+ },
+ {
+  "ename": "lisp-extra-font-lock",
+  "commit": "13e01d4faf9ecb4dde8b6eb4acdb0e48e3e5b6ea",
+  "sha256": "1xchqwhav9x7b02787ghka567fihdc14aamx92jg549c6d14qpwk",
+  "fetcher": "github",
+  "repo": "Lindydancer/lisp-extra-font-lock",
+  "unstable": {
+   "version": [
+    20181008,
+    1921
+   ],
+   "commit": "4605eccbe1a7fcbd3cacf5b71249435413b4db4f",
+   "sha256": "152vcp3mdlv33jf5va4rinl1d0k960gnfhbrqqrafazgx9j3ya8w"
+  }
+ },
+ {
+  "ename": "lisp-local",
+  "commit": "2ec3f57a05e1b2e28ce33700d8ea98758b0bb69d",
+  "sha256": "1kzg2v0x0xf99mwd88bblbjfm9js4f40pibq6297xc9i5wrp3bv4",
+  "fetcher": "github",
+  "repo": "lispunion/emacs-lisp-local",
+  "unstable": {
+   "version": [
+    20200409,
+    1330
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "ff745a937f79df51cac0209b3cc3c35ce1d1fc61",
+   "sha256": "0ffwjv5fpzia772iavn9ily5m7l73pxf0amgqizzmbx12rx3kkhg"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "ff745a937f79df51cac0209b3cc3c35ce1d1fc61",
+   "sha256": "0ffwjv5fpzia772iavn9ily5m7l73pxf0amgqizzmbx12rx3kkhg"
+  }
+ },
+ {
+  "ename": "lispxmp",
+  "commit": "ad10a684b4b2f01bc65883374f36fef156ff55d2",
+  "sha256": "1a641v5cx4wy2v8a2swxzn1y9cz4g2bp4mn9q290n3ifpn5356dl",
+  "fetcher": "github",
+  "repo": "rubikitch/lispxmp",
+  "unstable": {
+   "version": [
+    20170926,
+    23
+   ],
+   "commit": "7ad077b4ee91ce8a42f84eeddb9fc7ea4eac7814",
+   "sha256": "1156jynii783v9sjj3a7s20ysa26mqaq22zk5nbia949hwbibx16"
+  }
+ },
+ {
+  "ename": "lispy",
+  "commit": "29a704fede83b02e19c2ad213485f0f651931753",
+  "sha256": "1c8gz46ab5f07dljv2chr0i5lini81wl3zx4zw8xjysb4a5dp05v",
+  "fetcher": "github",
+  "repo": "abo-abo/lispy",
+  "unstable": {
+   "version": [
+    20200510,
+    1533
+   ],
+   "deps": [
+    "ace-window",
+    "counsel",
+    "hydra",
+    "iedit",
+    "zoutline"
+   ],
+   "commit": "3660a8a6acf9a7faee4af4bf5249ceb85a5d8bbb",
+   "sha256": "0s20wrdqf51mxfnnpll38nzp5ira59l83yz9dg0svz0vj5mrrwr5"
+  },
+  "stable": {
+   "version": [
+    0,
+    27,
+    0
+   ],
+   "deps": [
+    "ace-window",
+    "hydra",
+    "iedit",
+    "swiper",
+    "zoutline"
+   ],
+   "commit": "9c41bc011ae570283cb286659f75d12d38d437ea",
+   "sha256": "1cm7f4pyl73f3vhkb7ah6bbbrj2sa7n0p31g09k7dy4zgx04bgw6"
+  }
+ },
+ {
+  "ename": "lispyscript-mode",
+  "commit": "bf912fa20edc9cff12645381b303e37f2de14976",
+  "sha256": "02biai45l5xl2m9l1drphrlj6r01msmadhyg774ijdk1x4gm5nhr",
+  "fetcher": "github",
+  "repo": "krisajenkins/lispyscript-mode",
+  "unstable": {
+   "version": [
+    20170720,
+    1917
+   ],
+   "commit": "def632e3335b0c481fbcf5a17f18b0a8c58dd12f",
+   "sha256": "042nndsrv7kyq20v3lahrpr0x89xyayvhx59i0hx6pvkc9wgk5b6"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    5
+   ],
+   "commit": "9a4200085e2a15725a58616d131a56f5edce214b",
+   "sha256": "0qyj04p63fdh3iasp5cna1z5fhibmfyl9lvwyh22ajzsfbr3nhnk"
+  }
+ },
+ {
+  "ename": "lispyville",
+  "commit": "b5d96d3603dc328467fcce29d3ac1b0a02833d51",
+  "sha256": "1pj41pd51x399gmy0j3qn9hr3ayw31pcg0h9pzbviqpnwmv2in6b",
+  "fetcher": "github",
+  "repo": "noctuid/lispyville",
+  "unstable": {
+   "version": [
+    20200129,
+    243
+   ],
+   "deps": [
+    "cl-lib",
+    "evil",
+    "lispy"
+   ],
+   "commit": "25a70126ea807653e0a8c512d4128c90ed673d7a",
+   "sha256": "0h4zz3k5chipswpp7abmd9agwacrss1dd5981x70wblpabdxm39m"
+  }
+ },
+ {
+  "ename": "list-environment",
+  "commit": "696cd1647731eb1a22afb95f558c96a1b4aa5121",
+  "sha256": "1zdhrlp8vk8knjwh56pws6dyn003r6avjzvhghlkgnw9nfrdk57h",
+  "fetcher": "github",
+  "repo": "dgtized/list-environment.el",
+  "unstable": {
+   "version": [
+    20151227,
+    256
+   ],
+   "commit": "b7ca30b05905047be2e55199a6475f8d98ce318b",
+   "sha256": "1szbs16jlxfj71986dbg0d3j5raaxcwz0xq5ar352731r5mdcqw4"
+  }
+ },
+ {
+  "ename": "list-packages-ext",
+  "commit": "71c217d98c6967d979f57f89ca26200304b0fc37",
+  "sha256": "15m4888fm5xv697y7jspghg1ra49fyrny4y2x7h8ivcbslvpglvk",
+  "fetcher": "github",
+  "repo": "laynor/list-packages-ext",
+  "unstable": {
+   "version": [
+    20151115,
+    1716
+   ],
+   "deps": [
+    "ht",
+    "persistent-soft",
+    "s"
+   ],
+   "commit": "b4dd644e4369c9aa66f5bb8895ea49ebbfd0a27a",
+   "sha256": "02l7q5376ydz6a8i9x74bsx5bbxz8xkasmv1lzvf79d3jbg28l1s"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "ht",
+    "persistent-soft",
+    "s"
+   ],
+   "commit": "344719b313c208c644490f8f1130e21405402f05",
+   "sha256": "197cqkiwxgamhfwbc8h492cmjll3fypkwzcphj26dfnr22v63kwq"
+  }
+ },
+ {
+  "ename": "list-unicode-display",
+  "commit": "0c8e2a974a56665b97d7622b0428994edadc88a0",
+  "sha256": "01x9i5k5vhjscmkx0l6r27w1cdp9n6xk1pdjf98z3y88dnsmyfha",
+  "fetcher": "github",
+  "repo": "purcell/list-unicode-display",
+  "unstable": {
+   "version": [
+    20181121,
+    2316
+   ],
+   "commit": "0ecc2402b258990e7a0cf7e60847712c69444070",
+   "sha256": "008xa52pibd1z3cqz1sh83wldwwj5f11l5pl4pb5hwj60fh383b8"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "59770cf3572bd36c3e9ba044846dc420c0dca09b",
+   "sha256": "05nn4db8s8h4mn3fxhwsa111ayvlq1raf6bifh7jciyw7a2c3aww"
+  }
+ },
+ {
+  "ename": "list-utils",
+  "commit": "f9fcd716cbb9f5a4de82a49e57bcb20c483d05f6",
+  "sha256": "0bknprr4jb1d20i9lj2aa17vpg1kqwdyzzwmy1kfydnkpf5scnr3",
+  "fetcher": "github",
+  "repo": "rolandwalker/list-utils",
+  "unstable": {
+   "version": [
+    20200502,
+    1309
+   ],
+   "commit": "9bb2487c83ec46a0b6e6c4158af69334ac797b82",
+   "sha256": "07hbz2md52ccy95gv4d5n6szrfmpfqf3w4kwqdg2cf54c7kgf7hw"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    6
+   ],
+   "commit": "9bb2487c83ec46a0b6e6c4158af69334ac797b82",
+   "sha256": "07hbz2md52ccy95gv4d5n6szrfmpfqf3w4kwqdg2cf54c7kgf7hw"
+  }
+ },
+ {
+  "ename": "lit-mode",
+  "commit": "7a6a1c79c9bba7b17c150ea0663bc61936f15d83",
+  "sha256": "05rf7ki060nqnvircn0dkpdrg7xbh7phb8bqgsab89ycc7l9vv59",
+  "fetcher": "github",
+  "repo": "HectorAE/lit-mode",
+  "unstable": {
+   "version": [
+    20141123,
+    1736
+   ],
+   "commit": "c61c403afc8333a5649c5421ab1a6341dc1c7d92",
+   "sha256": "0mr0king5dj20vdycpszxnfs9ch808fhcz3q7svxfngj3d3671wd"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "c61c403afc8333a5649c5421ab1a6341dc1c7d92",
+   "sha256": "0mr0king5dj20vdycpszxnfs9ch808fhcz3q7svxfngj3d3671wd"
+  }
+ },
+ {
+  "ename": "litable",
+  "commit": "74f2190b653907985e49a96ded986ab11b4946d7",
+  "sha256": "073yw3ivkl093xxppn5vqyh69jhfc97al505mnyn34fwdj5v8fji",
+  "fetcher": "github",
+  "repo": "Fuco1/litable",
+  "unstable": {
+   "version": [
+    20200130,
+    1329
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "02247ca284cbc79f3afb783d62ed092bfc5b8d83",
+   "sha256": "0c84fvc33ddicfi8blkcd6dv1lagjnlk9bwjj88zcvg48fnykqvr"
+  }
+ },
+ {
+  "ename": "litanize",
+  "commit": "772ac9f0328ce5d184c2e126f6dd79a161a6d6c4",
+  "sha256": "1z4l0sk8gbramq900qf14vay0n5v2wd88yswawqrnhkhmqwl3qxm",
+  "fetcher": "github",
+  "repo": "zzkt/litanizer",
+  "unstable": {
+   "version": [
+    20200211,
+    621
+   ],
+   "deps": [
+    "enlive",
+    "s"
+   ],
+   "commit": "ba73259e35b4649884ba56542d3a55f43bd3b80b",
+   "sha256": "0147dqzhphnhxrcjxnbjk258j7g7y0rpbw6q3xrd340j9fk1q60k"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "enlive",
+    "s"
+   ],
+   "commit": "ce74f10540d6b335c4d0966cbabcf5099531280e",
+   "sha256": "1gzpvl7pgawikkhprja6p94ymsjbsbklqjgdvhzca835mx1g4aw4"
+  }
+ },
+ {
+  "ename": "litecoin-ticker",
+  "commit": "4976446a8ae40980d502186615902fc05c15ec7c",
+  "sha256": "14pjizgdckqhm31ihbz35j8g95jdpmf1rd4l5zz38fyx12zbcpx5",
+  "fetcher": "github",
+  "repo": "llcc/btcbox-ticker",
+  "unstable": {
+   "version": [
+    20160612,
+    11
+   ],
+   "deps": [
+    "json"
+   ],
+   "commit": "3d8047c736e4ee0b8638953f8cc63eaefad34106",
+   "sha256": "03iggfi3r5xjh9yhhpr1pgyayriycyybf8qnrhqkqcamh77kq21f"
+  }
+ },
+ {
+  "ename": "literal-string",
+  "commit": "6519bb53f409eeb0d557809b338849e473c193c4",
+  "sha256": "0ylv9dpw17w272f92vn5cldklyz1d8daihi1fsh5ylvxqpinyrkn",
+  "fetcher": "github",
+  "repo": "joodie/literal-string-mode",
+  "unstable": {
+   "version": [
+    20191023,
+    733
+   ],
+   "deps": [
+    "edit-indirect"
+   ],
+   "commit": "afffa86e626798ee9f9188ea3be2d5ee6ad17c39",
+   "sha256": "0nh14f3fv0b4i3rlx120s9a0s8gsaip0r15ki38446igl1macbq2"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "deps": [
+    "edit-indirect"
+   ],
+   "commit": "afffa86e626798ee9f9188ea3be2d5ee6ad17c39",
+   "sha256": "0nh14f3fv0b4i3rlx120s9a0s8gsaip0r15ki38446igl1macbq2"
+  }
+ },
+ {
+  "ename": "literate-coffee-mode",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "00zd5i6wpn95sslz0gd7m1h1fw7w07swszfqwaphkbqfwckgll6m",
+  "fetcher": "github",
+  "repo": "emacsorphanage/literate-coffee-mode",
+  "unstable": {
+   "version": [
+    20170211,
+    1515
+   ],
+   "deps": [
+    "coffee-mode"
+   ],
+   "commit": "55ce0305495f4a38c8063c4bd63deb1e1252373d",
+   "sha256": "1gm89azjgsdg0c7z9yprpjbph211c5jnqv11pkf1i1r1wzx0wanj"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "coffee-mode"
+   ],
+   "commit": "39fe3bfa1f68a7b8b91160875589219b214a2cd6",
+   "sha256": "1fh9wrw5irn0g3dy8gkk63csdcxgi3w2038mxx3sk6ki3r2bmhw8"
+  }
+ },
+ {
+  "ename": "literate-elisp",
+  "commit": "fd4c1c4da2a5571babda9a29a56b8972ad0687c0",
+  "sha256": "10vc3m54jp2wqjrmn9plq6lb5zfiy6jy0acpp09q3z325z0sql9j",
+  "fetcher": "github",
+  "repo": "jingtaozf/literate-elisp",
+  "unstable": {
+   "version": [
+    20200327,
+    620
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "732d649136051a4b6d43c2fabeb5233c3e5f16d7",
+   "sha256": "1d4p6s9dj5368ywfpp46pysxvcqwsiacih3n1hia9c4y7p0xx4cz"
+  },
+  "stable": {
+   "version": [
+    0,
+    8
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "2c91d49be2450650236638a8100d9373ccd59d70",
+   "sha256": "0i9468rh61l4xq918fgwk6li93lpm6zbn0lkpxr7pbvkgrl5xsr6"
+  }
+ },
+ {
+  "ename": "literate-starter-kit",
+  "commit": "812860589cd92759fd2ae02d27f287de88f26863",
+  "sha256": "1n2njf007fmrmsb8zrgxbz1cpxmr5nsp8w41yxa934iqc7qygkjy",
+  "fetcher": "github",
+  "repo": "eschulte/emacs24-starter-kit",
+  "unstable": {
+   "version": [
+    20150730,
+    1854
+   ],
+   "commit": "6dce1d01781966c14558aa553cfc85008c06e115",
+   "sha256": "1v37bii372w2g3pl09n5dcrk6y7glhpg8qiv17zsk9jy3ps2xm1b"
+  }
+ },
+ {
+  "ename": "live-code-talks",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1ji4lww71dqxnn5c9inix8xqcmgc76wbps0ylxhhgs44ki4hlyrm",
+  "fetcher": "github",
+  "repo": "david-christiansen/live-code-talks",
+  "unstable": {
+   "version": [
+    20180907,
+    1647
+   ],
+   "deps": [
+    "cl-lib",
+    "narrowed-page-navigation"
+   ],
+   "commit": "97f16a9ee4e6ff3e0f9291eaead772c66e3e12ae",
+   "sha256": "1clcm1yps38wdyj415hh7bl20fcpfin92hh5njsldqbvgcpndaqi"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "narrowed-page-navigation"
+   ],
+   "commit": "3a2ecdb49b2651d87999d4cad56ba8f1004c7a99",
+   "sha256": "1cwydbhhbs5v9y2s872zxc5lflqmfrdvnc8xz0qars52d7lg4br5"
+  }
+ },
+ {
+  "ename": "live-preview",
+  "commit": "d4f928dd7c043fba36a48f0bb31693f0ec67d3ec",
+  "sha256": "17sayv5l3ihhs370c1qg6377rkph0ailkh1ara1xpj40ljjf158j",
+  "fetcher": "github",
+  "repo": "lassik/emacs-live-preview",
+  "unstable": {
+   "version": [
+    20200419,
+    2143
+   ],
+   "commit": "7af1c74e0479c5b91d6368a4a3ff1342b83ef477",
+   "sha256": "0ifk0k6lfjzb0x0mgzh69jx0m166ljdg3ad69p51jw3m85c0wc6b"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "448d6d2b0912a46acd7d9a9b186b53425b1a7626",
+   "sha256": "1by62z8pch148ar47453bybg7q9drja73rq3pwcn9jb0yb6gn1xl"
+  }
+ },
+ {
+  "ename": "live-py-mode",
+  "commit": "49697a8cf6258b80490789c277cceae4f57148af",
+  "sha256": "1abn2r81200nawyjrc8391sh64gf6j083n9p3h0yc7pl5z9w5zbx",
+  "fetcher": "github",
+  "repo": "donkirkby/live-py-plugin",
+  "unstable": {
+   "version": [
+    20200510,
+    1939
+   ],
+   "commit": "38a3cf447fd7d9c4e6014b71134e178b0d8a01de",
+   "sha256": "0yah03sblz9i510cq6q2bj0mkz6sqdifpwhzxhs4kn8zdircr0f4"
+  },
+  "stable": {
+   "version": [
+    4,
+    1,
+    0
+   ],
+   "commit": "0a0d881d8ff30a6007b998e9bb9dddb999cca16e",
+   "sha256": "1mdnbbd0kr5y4vr2xbay80v4n07gg5jkkn0k3ywypsin7fz5ihhl"
+  }
+ },
+ {
+  "ename": "lively",
+  "commit": "3e4b01286dbc84f01b43955b693ca08e675ffa07",
+  "sha256": "1q8cbl3sr3dpvzk57985giy4xmz4lvg94jcw7shbhz1v9q05dr5g",
+  "fetcher": "github",
+  "repo": "purcell/lively",
+  "unstable": {
+   "version": [
+    20171005,
+    754
+   ],
+   "commit": "348675828c6a81bfa1ac311ca465aad813542c1b",
+   "sha256": "1j8w63hhk1wcxcfqz0wimqijp7p1m8a2n947gwqv8nk1wm40aqg3"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "6ec648fcde85e81393db1ed1364860f960179c92",
+   "sha256": "06sdaj2akwjg1a7yvmm3gsip66iaq9bhm3gr45szwg6z622q4gvf"
+  }
+ },
+ {
+  "ename": "livereload",
+  "commit": "330731804c442226fa2faaa3da408e9253a1c051",
+  "sha256": "1z0dbg82l6znz1b03v19a8fnq6b1smikpvaplpxlgny82xrs9als",
+  "fetcher": "github",
+  "repo": "joaotavora/emacs-livereload",
+  "unstable": {
+   "version": [
+    20170629,
+    650
+   ],
+   "deps": [
+    "websocket"
+   ],
+   "commit": "1e501d7e46dbd476c2c7cc9d20b5ac9d41fb1955",
+   "sha256": "1z1v2panxrqpam5ysnilx83y6b4dwxmxqhmbgjwfyd1bdmr4iya4"
+  }
+ },
+ {
+  "ename": "livescript-mode",
+  "commit": "1727cd154c841219b1dff1c8714cb09692e2730f",
+  "sha256": "1fdfhp39zr2mhy5rd6mwqv5fwd8xaypdqig7v3ksv77m5zq7cmmj",
+  "fetcher": "github",
+  "repo": "yhisamatsu/livescript-mode",
+  "unstable": {
+   "version": [
+    20140613,
+    421
+   ],
+   "commit": "90a918d9686e256e6d4d439cc20f24dad8d3b804",
+   "sha256": "0kqjz0i0zapyhh8z57cvc8ifiizngix3ca01mjnvyq3zxg1bqrsg"
+  }
+ },
+ {
+  "ename": "livid-mode",
+  "commit": "b14068485afbd888bf0d124aea089fe5fbd5038c",
+  "sha256": "0jy16m6injqznx4gmxzvhys480pclw9g07z4qll2dna37177ww9d",
+  "fetcher": "github",
+  "repo": "pandeiro/livid-mode",
+  "unstable": {
+   "version": [
+    20131116,
+    1344
+   ],
+   "deps": [
+    "s",
+    "skewer-mode"
+   ],
+   "commit": "dfe5212fa64738bc4138bfebf349fbc8bc237c26",
+   "sha256": "178ldzpk8a9m9abn8xlplxn5jgcca71dpkp82bs5g7bsccp3rx6p"
+  }
+ },
+ {
+  "ename": "lms",
+  "commit": "7d6c24152f88dad15ef9f304c0016a97ede71dab",
+  "sha256": "1nksla9i7b4nmnzppyw6fq5kzh8jyqjfxn45g60c4mi2mn3p95a1",
+  "fetcher": "hg",
+  "url": "https://hg.serna.eu/emacs/lms",
+  "unstable": {
+   "version": [
+    20191102,
+    3
+   ],
+   "commit": "0967d3bada2ab70784a944d56c81691b8e87dbd8",
+   "sha256": "15ksvdf2cfa8hwvazdza56iln244xlv1l65gydhjw8388hr7gbr0"
+  }
+ },
+ {
+  "ename": "load-bash-alias",
+  "commit": "063fa99446bb54fadbbad1af90427462afe8bd8d",
+  "sha256": "1maq7wykhn3cvxl8fiws3d2d63zlkzgpd3d9jz3rhyi9rcjcjzak",
+  "fetcher": "github",
+  "repo": "daviderestivo/load-bash-alias",
+  "unstable": {
+   "version": [
+    20200106,
+    2015
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "999c613898085b37b9e16b60be1cbeaa9986d368",
+   "sha256": "1qhcx7c954q1liw3glhvbg5bph96j9bwf808g6l066n04xj5347i"
+  }
+ },
+ {
+  "ename": "load-env-vars",
+  "commit": "93835267005c49095a02fc1688b2b449f5acfb86",
+  "sha256": "0yc05qqhbva2zn2rrl4spp38jxblk4gh64q9fd7mgl7i50f2kk00",
+  "fetcher": "github",
+  "repo": "diasjorge/emacs-load-env-vars",
+  "unstable": {
+   "version": [
+    20180511,
+    2210
+   ],
+   "commit": "3808520efaf9492033f6e11a9bffd68eabf02a0f",
+   "sha256": "0yw1ihns914k8va5mhphch1zix09x22cpgrbw968mh8hviknyvzr"
+  }
+ },
+ {
+  "ename": "load-relative",
+  "commit": "f052f201f7c308325c27cc2423e85cf6b9b67b4e",
+  "sha256": "0j8ybbjzhzgjx47pqqdbsqi8n6pzqcf6zqc38x7cf1kkklgc87ay",
+  "fetcher": "github",
+  "repo": "rocky/emacs-load-relative",
+  "unstable": {
+   "version": [
+    20190601,
+    1221
+   ],
+   "commit": "dbcd7cbcca6503ef93f4b8d19bf7a9efd7f6bf9b",
+   "sha256": "010f2mhvlzkxarw298850khqc6srzb01l2vay0jsp46dh3jfmdhf"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    1
+   ],
+   "commit": "5055bfd80644e306aef4e7a7e3e9e5d765b691a4",
+   "sha256": "1w2xvnihk607vnmlmqz7zsjksd3mscjx2igdadxsfz398bjwl0qd"
+  }
+ },
+ {
+  "ename": "load-theme-buffer-local",
+  "commit": "ca7bf43ef8893bf04e9658390e306ef69e80a156",
+  "sha256": "13829yrh36qac7gpxanizlk4n7av99ngvv06y6mmi5rq06a4hjx4",
+  "fetcher": "github",
+  "repo": "vic/color-theme-buffer-local",
+  "unstable": {
+   "version": [
+    20120702,
+    2036
+   ],
+   "commit": "e606dec66f16a06140b9aad625a4fd52bca4f936",
+   "sha256": "0c04fy3hc8wc0aabilqx9mcipmd41rmshqjxc3z8m1w0bm4288g1"
+  }
+ },
+ {
+  "ename": "loc-changes",
+  "commit": "a5ce68d573d19f26ecfd190f8e6cd1f384ca3e8a",
+  "sha256": "1akgij61b2ixpkchrriabwvx68cg4v5r5w9ncjrjh91hskjprfxh",
+  "fetcher": "github",
+  "repo": "rocky/emacs-loc-changes",
+  "unstable": {
+   "version": [
+    20160801,
+    1708
+   ],
+   "commit": "4d1dcdf7631c23b1259ad4f72bf9686cf95fb46c",
+   "sha256": "0a81933l3rrsbi9vkvfb1g94vkhl5n3fkffpy4icis97q7qh08mc"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "8447baff7cb4839ef8d1d747a14e5da85d0cee5b",
+   "sha256": "1089sbx20r30sis39vwy29fxhb2n3hh35rdv09lpzdxdq01s8wwp"
+  }
+ },
+ {
+  "ename": "loccur",
+  "commit": "72550b043794331e85bc4b124f6d8ab70d969eff",
+  "sha256": "06pv2i05yzjzal4q21krbnp9rp4bsainxcwvpc98020vsmms0z8h",
+  "fetcher": "github",
+  "repo": "fourier/loccur",
+  "unstable": {
+   "version": [
+    20191022,
+    1955
+   ],
+   "commit": "4934c0560d2f63e6314b4584211a0cc0a7e671c4",
+   "sha256": "03hwvx3h64jj9nylmzpv2241b5fi97anhjjpwc5sjmfsq1wbf432"
+  }
+ },
+ {
+  "ename": "lockfile-mode",
+  "commit": "12a383eb6c29acb007dae9dc777ace3ba84edac9",
+  "sha256": "13nr983xldja8m02a1rdnyqxc8g045hxjh6649wmqmqk4mk0m310",
+  "fetcher": "github",
+  "repo": "preetpalS/emacs-lockfile-mode",
+  "unstable": {
+   "version": [
+    20170625,
+    507
+   ],
+   "commit": "fcfef88460cb3cd67c4d83a1801d0326d282feac",
+   "sha256": "1dh41a8dj8h3lrhjajaz886vsimflshk6bc08w71rwvjyy2k8xil"
+  }
+ },
+ {
+  "ename": "lodgeit",
+  "commit": "c82e72535aefade20e23e38931ca573e3459401e",
+  "sha256": "1ax2w5yxscycjz90g4jdbhd64g9sipzxpfjs7gq3na77s5dcjzsq",
+  "fetcher": "github",
+  "repo": "ionrock/lodgeit-el",
+  "unstable": {
+   "version": [
+    20190802,
+    1308
+   ],
+   "commit": "442637194d48a7105b7747b8d98772f5899f9e21",
+   "sha256": "1lw9d6908si7rw5802vwpnfklpahqsabkl21nzg77a4pp3pgy80v"
+  }
+ },
+ {
+  "ename": "log4e",
+  "commit": "90d0e451c5a8eb25db95990b058964a9acea4b89",
+  "sha256": "1klj59dv8k4r0hily489dp12ra5hq1jnsdc0wcakh6zirmakhs34",
+  "fetcher": "github",
+  "repo": "aki2o/log4e",
+  "unstable": {
+   "version": [
+    20200420,
+    745
+   ],
+   "commit": "7df0c1ff4656f8f993b87064b1567618eadb5546",
+   "sha256": "0dbnks76v05allzkhx9zmyqpn6sk5376n8k2rbpnaw6gmz1ib2fv"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    3
+   ],
+   "commit": "7df0c1ff4656f8f993b87064b1567618eadb5546",
+   "sha256": "0dbnks76v05allzkhx9zmyqpn6sk5376n8k2rbpnaw6gmz1ib2fv"
+  }
+ },
+ {
+  "ename": "log4j-mode",
+  "commit": "caaa21f235c4864f6008fb454d0a970a2fd22a86",
+  "sha256": "0311jb47fjji8dqy98anr487f7vnvi85p4mn5ymqvxs5c6972gms",
+  "fetcher": "git",
+  "url": "https://git.code.sf.net/p/log4j-mode/code",
+  "unstable": {
+   "version": [
+    20160108,
+    1918
+   ],
+   "commit": "26171b1e723502055e085393b0ecdcb6db406010",
+   "sha256": "15x6368pk4bbvhbd6cqnazcxfdz0b3f70029x0884a5797janln5"
+  }
+ },
+ {
+  "ename": "logalimacs",
+  "commit": "ef9833a5ca4d455f1d33b9367860e2051d60662f",
+  "sha256": "0ai7a01bdi3a0amgi63pwgdp8wgcgx10an4nhc627wgb1cqxb7p6",
+  "fetcher": "github",
+  "repo": "logaling/logalimacs",
+  "unstable": {
+   "version": [
+    20131021,
+    1829
+   ],
+   "deps": [
+    "popup",
+    "popwin",
+    "stem"
+   ],
+   "commit": "8286e39502250fc6c3c6656a7f46a8eee8e9a713",
+   "sha256": "0lj3i9i3mg17xws13gzx8myc6d7djgsj47yx4kaq5hycgkni1p7q"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "cfd7aaa925934f876eee6e8c550cf6e7a239a2ac",
+   "sha256": "0g5vq9xy9lwczs77lr91c1srhhfmasnnnmjvgc55hbl6iwmbizbm"
+  }
+ },
+ {
+  "ename": "logito",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0xi7zbxpialsn4pknj8aqmkbiwwsbapwynrrjb8avhli2hd4s3fl",
+  "fetcher": "github",
+  "repo": "sigma/logito",
+  "unstable": {
+   "version": [
+    20120225,
+    2055
+   ],
+   "deps": [
+    "eieio"
+   ],
+   "commit": "824acb89d2cc18cb47281a4fbddd81ad244a2052",
+   "sha256": "0jpyd2f33pk984kg0q9hxdl4615jb7sxsggnb30mpz7a2ws479xr"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "eieio"
+   ],
+   "commit": "824acb89d2cc18cb47281a4fbddd81ad244a2052",
+   "sha256": "0jpyd2f33pk984kg0q9hxdl4615jb7sxsggnb30mpz7a2ws479xr"
+  }
+ },
+ {
+  "ename": "lognav-mode",
+  "commit": "a5b0dadc609d13737d56657c17a945f10e840222",
+  "sha256": "1fg2j63f6yaf4011vla36p1p0pjixzisff4wj80vh634yqvwp4ys",
+  "fetcher": "hg",
+  "url": "https://hg.osdn.net/view/lognav-mode/lognav-mode",
+  "unstable": {
+   "version": [
+    20191124,
+    1011
+   ],
+   "commit": "7eb9cd2af5b47116fe475870b41dded55052c14c",
+   "sha256": "10f3im4x55ag6mhrrsjkylmaxm5s7dj7mwmppzm2yvs1nq0fxa79"
+  }
+ },
+ {
+  "ename": "logpad",
+  "commit": "c9747d42331eae20744f0bf4821e82a7832dbdc7",
+  "sha256": "0xmgbw9cv2gvhlfxjpwk41vg7ixrl1bw607h9ag5vga4s3sg5q8l",
+  "fetcher": "github",
+  "repo": "dertuxmalwieder/logpad.el",
+  "unstable": {
+   "version": [
+    20190927,
+    2043
+   ],
+   "commit": "ff80fd198b196c4db9ca88ae8cf858cae491e121",
+   "sha256": "0hc6lp6qmiq9qhn6lx7whfv2w1zz5g2j6azzd9vs695kcbqk5qm7"
+  }
+ },
+ {
+  "ename": "logstash-conf",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0djf2kl6jypxlfss4x8ij670v733vid1vbyg6yd96pc9781v3zrm",
+  "fetcher": "github",
+  "repo": "Wilfred/logstash-conf.el",
+  "unstable": {
+   "version": [
+    20170524,
+    1929
+   ],
+   "commit": "4e127f9aec190786613445aa88efa307ff7c6748",
+   "sha256": "119yb1wk1n5ycfzgpffcwy7yx8ar8k1gza0gvbq3r61ha5a9qijs"
+  }
+ },
+ {
+  "ename": "logview",
+  "commit": "1df3c11ed7738f32e6ae457647e62847701c8b19",
+  "sha256": "0gks3j5avx8k3427a36lv7gr95id3cylaamgn5qwbg14s54y0vsh",
+  "fetcher": "github",
+  "repo": "doublep/logview",
+  "unstable": {
+   "version": [
+    20200331,
+    2111
+   ],
+   "deps": [
+    "datetime",
+    "extmap"
+   ],
+   "commit": "c67298a215136617de60c9041904ee6a455dcd4f",
+   "sha256": "0bjgzh4z4bz4nr97cn9wd92brg7wik37c0vd3kfisdalxq2wrgn5"
+  },
+  "stable": {
+   "version": [
+    0,
+    13,
+    1
+   ],
+   "deps": [
+    "datetime",
+    "extmap"
+   ],
+   "commit": "c67298a215136617de60c9041904ee6a455dcd4f",
+   "sha256": "0bjgzh4z4bz4nr97cn9wd92brg7wik37c0vd3kfisdalxq2wrgn5"
+  }
+ },
+ {
+  "ename": "lol-data-dragon",
+  "commit": "c54747f74db0d3c270682c8994e3babdac9d36c4",
+  "sha256": "18aydjkv331gkbsyxgvrrlw37v2m2g65alz82287nwjswgns4pia",
+  "fetcher": "github",
+  "repo": "xuchunyang/lol-data-dragon.el",
+  "unstable": {
+   "version": [
+    20200321,
+    2142
+   ],
+   "commit": "6f53bb3971daad60bd0529d1e3889d5f9fedf235",
+   "sha256": "0xblv8l6krp3581m0xava95pm6wcsjm3rsl47dsvzpgns1kyz8lx"
+  }
+ },
+ {
+  "ename": "lolcat",
+  "commit": "38e720f524b23b5742764186a695d143f983e179",
+  "sha256": "044y0s1wiwjwfw58nhx5zvrli527nim3d81dix2h60d8qwx0566a",
+  "fetcher": "github",
+  "repo": "xuchunyang/lolcat.el",
+  "unstable": {
+   "version": [
+    20190527,
+    1145
+   ],
+   "commit": "4855e587a3b9681c077dac4b9f166dd860f439a4",
+   "sha256": "0nbrc3wjmmy70ggwmzagkh5j1my7x6y67fyqgddkdrbnw543gly0"
+  }
+ },
+ {
+  "ename": "lolcode-mode",
+  "commit": "572d31a0bd8627d8b5f6bab021c953a1fee31d2c",
+  "sha256": "0dxdqr3z5bw0vcfxhhhc1499vrfk1xqwxshr0kvlhdalpf59rqiw",
+  "fetcher": "github",
+  "repo": "bodil/lolcode-mode",
+  "unstable": {
+   "version": [
+    20111002,
+    847
+   ],
+   "commit": "1914f1ba87587ecf5f175eeb2144c28e9f039317",
+   "sha256": "0pyfgywmmnlz1arvdxwyw96gr6xcg2sp3bqjli8xfcl8i0nww4kb"
+  }
+ },
+ {
+  "ename": "look-dired",
+  "commit": "ef66b97b2e9034cb0c62dd1e37b2577ffef60834",
+  "sha256": "0dddx5nxr519wqdgrbglh0pqjl3alg4ddmank42g4llzycy61wsd",
+  "fetcher": "github",
+  "repo": "vapniks/look-dired",
+  "unstable": {
+   "version": [
+    20160729,
+    2323
+   ],
+   "deps": [
+    "look-mode"
+   ],
+   "commit": "9bfa4e5e6f3810705b6426c88493ea0bf6b15640",
+   "sha256": "1yagp35ylznrh3a5ahpzrrxi6ma69ppwqsab3cwss54bi4f02ihn"
+  }
+ },
+ {
+  "ename": "look-mode",
+  "commit": "bf3107730d959dc28b22760aca48bf8a7db35a23",
+  "sha256": "1b3s756k6r60p3bk5ldr0lawaqviwbvjw0db9r20982pcqgda8y9",
+  "fetcher": "github",
+  "repo": "petermao/look-mode",
+  "unstable": {
+   "version": [
+    20190212,
+    2346
+   ],
+   "commit": "d686e4cfafeac24e07e3efdb9763472f78d878f4",
+   "sha256": "1qh21z83qsvw1s9vhqcmwbvhd0q0lgj8hvpjb2rmn4kqkcvqbn2a"
+  }
+ },
+ {
+  "ename": "loop",
+  "commit": "ba481ca96469b3bd518e4fd8f24947338c8af014",
+  "sha256": "0pav16kinzljmzx84vfz63fvi39af4628vk1jw79jk0pyg9rjbar",
+  "fetcher": "github",
+  "repo": "Wilfred/loop.el",
+  "unstable": {
+   "version": [
+    20160813,
+    1407
+   ],
+   "commit": "e22807f83a0890dc8a904c51ee0742c34efccc6c",
+   "sha256": "1c89hsi0h783s96d322mvqwlf00ndm2qnrc165wpxrdbns38kbbv"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "commit": "c3598bd3ad0677f66e061b3ba51a05d05275283e",
+   "sha256": "1gs95xnmnn8aa4794k7h8mw1sz1nfdh9v0caqj6yvnsdnwy74n5x"
+  }
+ },
+ {
+  "ename": "lorem-ipsum",
+  "commit": "0c09f9b82430992d119d9148314c758f067832cd",
+  "sha256": "0p62yifbrknjn8z0613wy2aaknj44liyrgbknhpa0qn0d4fcrp4h",
+  "fetcher": "github",
+  "repo": "jschaf/emacs-lorem-ipsum",
+  "unstable": {
+   "version": [
+    20190819,
+    2042
+   ],
+   "commit": "da75c155da327c7a7aedb80f5cfe409984787049",
+   "sha256": "04h97vnd758gsdfg30wkrhnh4hz7k63xbrw178dxfcwsylq32wi0"
+  }
+ },
+ {
+  "ename": "love-minor-mode",
+  "commit": "0f224c4c7519b3668b1270c957227e486896b7b6",
+  "sha256": "1skg039h2hn8dh47ww6n9l776s2yda8ariab4v9f56kb21bncr4m",
+  "fetcher": "github",
+  "repo": "ejmr/love-minor-mode",
+  "unstable": {
+   "version": [
+    20170727,
+    536
+   ],
+   "deps": [
+    "lua-mode"
+   ],
+   "commit": "3ca8f3405338f2d6f4fbcdd5e89342a46378543a",
+   "sha256": "1hwm7yxbwvb27pa35cgcxyjfjdjhk2a33i417q2akc7vppdbcmzh"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "deps": [
+    "lua-mode"
+   ],
+   "commit": "3ca8f3405338f2d6f4fbcdd5e89342a46378543a",
+   "sha256": "1hwm7yxbwvb27pa35cgcxyjfjdjhk2a33i417q2akc7vppdbcmzh"
+  }
+ },
+ {
+  "ename": "lpy",
+  "commit": "e0e7941d9efc303b8cd5d3e7b29606316307fd8b",
+  "sha256": "1wna38yc3sxylg2qjwl424g8qcnaj0h6g0rnnmhzf1kfd8hkd7zx",
+  "fetcher": "github",
+  "repo": "abo-abo/lpy",
+  "unstable": {
+   "version": [
+    20200504,
+    1918
+   ],
+   "deps": [
+    "lispy"
+   ],
+   "commit": "39d05463939398168dd8c8dca22d76af93aa87ae",
+   "sha256": "03wa94wn9a1lzdmi5fj5r446cvpqk7km9r9h8sq1hmwpr6qwymw7"
+  }
+ },
+ {
+  "ename": "lsp-dart",
+  "commit": "acbba6bc6f1bb6e1153f1f75ca1dc025bb5a8993",
+  "sha256": "0q2x3i5yydnrplfgk8fcngdsxf1g1vz1jzkbwhiqf46wrv5vxwl3",
+  "fetcher": "github",
+  "repo": "emacs-lsp/lsp-dart",
+  "unstable": {
+   "version": [
+    20200515,
+    2152
+   ],
+   "deps": [
+    "dap-mode",
+    "dart-mode",
+    "dash",
+    "f",
+    "ht",
+    "lsp-mode",
+    "lsp-treemacs",
+    "pkg-info"
+   ],
+   "commit": "14d11f959dfab22a546525a0076fa3abd0d85c32",
+   "sha256": "0mxiy8myvk91b7r5ngidi2665vpqs87f8qraplyl0vcpywb2jm5n"
+  },
+  "stable": {
+   "version": [
+    1,
+    10,
+    5
+   ],
+   "deps": [
+    "dap-mode",
+    "dart-mode",
+    "dash",
+    "f",
+    "ht",
+    "lsp-mode",
+    "lsp-treemacs",
+    "pkg-info"
+   ],
+   "commit": "14d11f959dfab22a546525a0076fa3abd0d85c32",
+   "sha256": "0mxiy8myvk91b7r5ngidi2665vpqs87f8qraplyl0vcpywb2jm5n"
+  }
+ },
+ {
+  "ename": "lsp-docker",
+  "commit": "f592ec9b1d6a05e1e115d4b313be108c8e47ee67",
+  "sha256": "1xmkwhgkcsf52hngb811n2q7q4rav75wwjz7zin6x17vfv8hqifx",
+  "fetcher": "github",
+  "repo": "emacs-lsp/lsp-docker",
+  "unstable": {
+   "version": [
+    20200222,
+    505
+   ],
+   "deps": [
+    "dash",
+    "lsp-mode"
+   ],
+   "commit": "af56404c383102344f9b99e2e168e69b7d8d50d0",
+   "sha256": "16fsyr77bwa7gipsafsacqy1ad51kgm5im0js5yinkg2ipwi75xk"
+  }
+ },
+ {
+  "ename": "lsp-elixir",
+  "commit": "c875a05e68d09ecf37f7e13149f2624c70164ea3",
+  "sha256": "0mimb67swcq2yis0s6w2bkk7sgqv7lyvz1hrh48h2q6qr3ywmq0n",
+  "fetcher": "github",
+  "repo": "elixir-lsp/lsp-elixir.el",
+  "unstable": {
+   "version": [
+    20190105,
+    2059
+   ],
+   "deps": [
+    "lsp-mode"
+   ],
+   "commit": "9fd091c092144a09c0df2d477257c1f4c37bb985",
+   "sha256": "0m5hxlx0cnx4rdcz5chxqp074z9h1wj1nvg8dzmilsnmg3kmsshx"
+  }
+ },
+ {
+  "ename": "lsp-haskell",
+  "commit": "1a7b69312e688211089a23b75910c05efb507e35",
+  "sha256": "0pdcxnfp8ng24bfk695wpx5wcdqnjrjsfpks0xicih3mcdm1x9l8",
+  "fetcher": "github",
+  "repo": "emacs-lsp/lsp-haskell",
+  "unstable": {
+   "version": [
+    20200510,
+    941
+   ],
+   "deps": [
+    "haskell-mode",
+    "lsp-mode"
+   ],
+   "commit": "1a541e2459b918012cd655407920600ad35736ef",
+   "sha256": "0bmyjgydyr0mppx8c4kv4vrfivyz1lpxxg966danh7rv9c90ps3b"
+  }
+ },
+ {
+  "ename": "lsp-intellij",
+  "commit": "9d72cbb85fe4e0c6bea9a704dc1545f88efa56d2",
+  "sha256": "0l2ffxqsdzvddypdl3w9rd7qxy2kzw2iwfkr2w7czglyfbnyyg2b",
+  "fetcher": "github",
+  "repo": "Ruin0x11/lsp-intellij",
+  "unstable": {
+   "version": [
+    20180831,
+    2051
+   ],
+   "deps": [
+    "lsp-mode"
+   ],
+   "commit": "cf30f0ac63bd0140e758840b8ab070e8313697b2",
+   "sha256": "0ghw2as9fbnfhrr1nbqk97jcl7yb451xpmfbksxh7mvjm3lhmyvz"
+  }
+ },
+ {
+  "ename": "lsp-ivy",
+  "commit": "51af5cfe26bdf1482fb707fbcc5e9ea49b99eb14",
+  "sha256": "0yw72n0gyzv60nx4ycn979yzqwxv4hqrbi39g5finxmwjjf4rha9",
+  "fetcher": "github",
+  "repo": "emacs-lsp/lsp-ivy",
+  "unstable": {
+   "version": [
+    20200418,
+    1500
+   ],
+   "deps": [
+    "dash",
+    "ivy",
+    "lsp-mode"
+   ],
+   "commit": "81e81ced99829358674c5a6bbe2c3e15cecd4ed8",
+   "sha256": "011126hz98qzb8zn1628z77j2s5w1hgvmb5saj2fr9wncgv1nax9"
+  }
+ },
+ {
+  "ename": "lsp-java",
+  "commit": "c03cb07862c5f35487fb4fb3cc44623774724717",
+  "sha256": "0rrl9mh25w1avvyww840d3yh8nw0shirspxl2nxqwwdaymbkg2wr",
+  "fetcher": "github",
+  "repo": "emacs-lsp/lsp-java",
+  "unstable": {
+   "version": [
+    20200430,
+    1659
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "f",
+    "ht",
+    "lsp-mode",
+    "markdown-mode",
+    "request",
+    "treemacs"
+   ],
+   "commit": "bbbe4297fd470d0eb9492d011b0b4daf628763f5",
+   "sha256": "0qm9hwl88qwm19xwpsnv1rp9ny664440di0rd2lh3h7w1bczf76s"
+  },
+  "stable": {
+   "version": [
+    2,
+    4
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "f",
+    "ht",
+    "lsp-mode",
+    "markdown-mode",
+    "request",
+    "treemacs"
+   ],
+   "commit": "004516ed2f0803e068f50e00d5bc3bad76af45e1",
+   "sha256": "1n7prbj3fppl5d2qvjfyfsw280grr3yywvazrhygjrr5920jxarh"
+  }
+ },
+ {
+  "ename": "lsp-javacomp",
+  "commit": "6b8a1c034554579a7e271409fa72020cfe441f68",
+  "sha256": "1gp8dlcpik2lmpicccq2kya498pmw9m8vz9m1fbd725p7wk58fhi",
+  "fetcher": "github",
+  "repo": "tigersoldier/lsp-javacomp",
+  "unstable": {
+   "version": [
+    20190124,
+    1755
+   ],
+   "deps": [
+    "lsp-mode",
+    "s"
+   ],
+   "commit": "82aa4ad6ca03a74565c35e855b318b1887bcd89b",
+   "sha256": "0r0ig73hsa0gyx8s6hr1mbdgf9m1n2zh2v7yhq3405l4if08s5m6"
+  }
+ },
+ {
+  "ename": "lsp-julia",
+  "commit": "ca6a06ed4de499bcccce05163ea3d54e4dca9539",
+  "sha256": "1frjvq2x0xsf93kgpy6bp9mgzfpr7zhacskmm6x8kknb9vj18h4v",
+  "fetcher": "github",
+  "repo": "non-Jedi/lsp-julia",
+  "unstable": {
+   "version": [
+    20200511,
+    1444
+   ],
+   "deps": [
+    "julia-mode",
+    "lsp-mode"
+   ],
+   "commit": "b342e5f74f9b815d2a7db9fffee7b9c46850d293",
+   "sha256": "13haa9jvcq6wvj8g1bnqrrczg1j50lwk41pr4n7q0i7313r8f89v"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "julia-mode",
+    "lsp-mode"
+   ],
+   "commit": "9f158a290168149fd301a1c1c2016600106ad5be",
+   "sha256": "077mrvxf8df4dppl3xqa7p3ksm3wcms64l306y7i5x878vyjgibv"
+  }
+ },
+ {
+  "ename": "lsp-latex",
+  "commit": "5e3c176af536155c8110006fd4bc63eeb2b2d12c",
+  "sha256": "01kn9faak6y1zfd1143yj453hl6rp1xykrg5rp196zf6brywj5a1",
+  "fetcher": "github",
+  "repo": "ROCKTAKEY/lsp-latex",
+  "unstable": {
+   "version": [
+    20200425,
+    920
+   ],
+   "deps": [
+    "lsp-mode"
+   ],
+   "commit": "5cd7b6bb35bc54f3e9341d6a64605a3bb50db0a0",
+   "sha256": "0lc3hidi1s993fz432090ab31r5pgb62ivw6y755332bgr359i4p"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "lsp-mode"
+   ],
+   "commit": "d016440fe364a016935bd90ae07e22d9012bcf8f",
+   "sha256": "0a6nryx7vshh4k0amlw3w3fn4yr8zlqxq5py8vj3pz4zkcndhxks"
+  }
+ },
+ {
+  "ename": "lsp-mode",
+  "commit": "1a7b69312e688211089a23b75910c05efb507e35",
+  "sha256": "0cklwllqxzsvs4wvvvsc1pqpmp9w99m8wimpby6v6wlijfg6y1m9",
+  "fetcher": "github",
+  "repo": "emacs-lsp/lsp-mode",
+  "unstable": {
+   "version": [
+    20200515,
+    2000
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "f",
+    "ht",
+    "lv",
+    "markdown-mode",
+    "spinner"
+   ],
+   "commit": "17614737b6ae881d0e94ad6f0b87a01950062dba",
+   "sha256": "0zh2mllm7n3gj0w5rn4y6491kx361mrf6w0fa46jgdck26fkazfw"
+  },
+  "stable": {
+   "version": [
+    6,
+    3,
+    1
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "f",
+    "ht",
+    "lv",
+    "markdown-mode",
+    "spinner"
+   ],
+   "commit": "bdbd2d0ccfe02f6721ea942e82e5178f4b216228",
+   "sha256": "125rpmhlyd6wmq7p71j54x3rzmk07vn1hdcvvdjjip5481raxcwx"
+  }
+ },
+ {
+  "ename": "lsp-mssql",
+  "commit": "abe823ce7ab99c2c45a74a36713064d441ee8165",
+  "sha256": "0imhby806kyp0nb5fk04kxy6w90n8s5j5ckf8pky8wvasl9anf4i",
+  "fetcher": "github",
+  "repo": "emacs-lsp/lsp-mssql",
+  "unstable": {
+   "version": [
+    20191204,
+    1150
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "ht",
+    "lsp-mode",
+    "lsp-treemacs"
+   ],
+   "commit": "b462cfa9b8071c624b905baf37a255d808ac6376",
+   "sha256": "1wig6hr5g0q0lg7zkqw1bfgagpx1ndpga75lnxaqpm0f0rgwdc33"
+  }
+ },
+ {
+  "ename": "lsp-origami",
+  "commit": "68b7cf8ce2eb256db9affb2126e895aa5ad1db15",
+  "sha256": "0pzccbglwwv73x3iyfidiwhwfs1dd9krvyjyqkbl5w734z3aaqqk",
+  "fetcher": "github",
+  "repo": "emacs-lsp/lsp-origami",
+  "unstable": {
+   "version": [
+    20190331,
+    1723
+   ],
+   "deps": [
+    "lsp-mode",
+    "origami"
+   ],
+   "commit": "c7653602a2f2396b1a42d6053fd2be55fce8e0a2",
+   "sha256": "02qxqjiqfi82j0bqfr22a9ynxnbdw470whfky7405x90nis50k7l"
+  }
+ },
+ {
+  "ename": "lsp-p4",
+  "commit": "53f0da8b3d2903adeffdbc3d8df7d630bfd9ff71",
+  "sha256": "0cd3n17lqwz08zfkm9g5cr1cj2asznlbhxrym2a7b7shdmn3yx5f",
+  "fetcher": "github",
+  "repo": "dmakarov/p4ls",
+  "unstable": {
+   "version": [
+    20190127,
+    1049
+   ],
+   "deps": [
+    "lsp-mode"
+   ],
+   "commit": "54dd19d88cd561061ac3103dc452d6854e5899fa",
+   "sha256": "1kg8n215hg8x9gxi2sdjyk8whbir20p3fzc50za1iwhiq3gzx1fw"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "lsp-mode"
+   ],
+   "commit": "9ebc597ba37e6f8fccbc08327cf57ca8ec793ffe",
+   "sha256": "0dd4n0c1rbqcy7hl6gb9nqjj7hfv4566d6ipdlnxjma0zjs84sjf"
+  }
+ },
+ {
+  "ename": "lsp-pascal",
+  "commit": "41e4088e4b0cd99aafac40c83188112a680a65f7",
+  "sha256": "08zvh9r1plnirdp8qb0p8xfq0y7qx7awq98gn8340f5zbwh9006q",
+  "fetcher": "github",
+  "repo": "arjanadriaanse/lsp-pascal",
+  "unstable": {
+   "version": [
+    20200422,
+    1610
+   ],
+   "deps": [
+    "lsp-mode"
+   ],
+   "commit": "b132bdf66748e4abe0d4140f6d061b1ccd56082a",
+   "sha256": "09v79p6wsp775ky1wy5fr0hwh5j33jvdvcarjs20zbdwnrs53am8"
+  }
+ },
+ {
+  "ename": "lsp-pyre",
+  "commit": "5b243c6ab0a441531e02dc8fdd88c023ba505d25",
+  "sha256": "1v8yx062cv5wmpg3lalah5cy8hvhslvyrd4f3185gmc0ynz71fpi",
+  "fetcher": "github",
+  "repo": "jra3/lsp-pyre",
+  "unstable": {
+   "version": [
+    20190406,
+    335
+   ],
+   "deps": [
+    "lsp-mode"
+   ],
+   "commit": "e177b8f5efd1a955b5753aeb5d1894e6d21be35a",
+   "sha256": "0g9vijpq7n38b7rvgbshh4s46m1387d7k2lcvy4md17sak5ivxrg"
+  }
+ },
+ {
+  "ename": "lsp-python-ms",
+  "commit": "dd67aefa5a6df2d1388a7516e529e388615c8fe0",
+  "sha256": "1aifydzz7jv3bf9qfxj37isq40wirfgvd9h40cb5c9wq4v44j8ps",
+  "fetcher": "github",
+  "repo": "emacs-lsp/lsp-python-ms",
+  "unstable": {
+   "version": [
+    20200501,
+    1408
+   ],
+   "deps": [
+    "cl-lib",
+    "lsp-mode"
+   ],
+   "commit": "97ad997c6c2e3bc8d12c02b2809960d47ad316b0",
+   "sha256": "11jad58shbrxd1r2r4amlvddx0qlx3ikbmq598sfwz2253ndzny1"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "lsp-mode"
+   ],
+   "commit": "5d0c799099aa5810858174f390e28fff3894bc06",
+   "sha256": "002h0i93blsv092pnfmzsfx0pj98r9glki0ki9n7gxg1z3nb0ybp"
+  }
+ },
+ {
+  "ename": "lsp-scala",
+  "commit": "fd494da0c0c2e2e58afc26d8e79aeeea41c6ee09",
+  "sha256": "1r8ha0q9gphcs6ihqswgvbhs9b6v6n1pvlqxwjnjwpdhsr5fsw1p",
+  "fetcher": "github",
+  "repo": "rossabaker/lsp-scala",
+  "unstable": {
+   "version": [
+    20190604,
+    1237
+   ],
+   "deps": [
+    "lsp-mode",
+    "sbt-mode"
+   ],
+   "commit": "06f189aa5cafe93cecbdaa234bccd900def7bc68",
+   "sha256": "05l563j1wz01rqwd4r639i88ln3bkn0m4swvj3hs11d70brlw981"
+  }
+ },
+ {
+  "ename": "lsp-sourcekit",
+  "commit": "a1e15078916dc053ca2413a6afae51df22321e9e",
+  "sha256": "1n3lkpyk2mb8a5qc2h00d6dgbp4ws8pwzqljplnnm35sqg6an76k",
+  "fetcher": "github",
+  "repo": "emacs-lsp/lsp-sourcekit",
+  "unstable": {
+   "version": [
+    20181216,
+    1450
+   ],
+   "deps": [
+    "lsp-mode"
+   ],
+   "commit": "130f7a8f7a37869515953aa7715b3b969c3d7a0b",
+   "sha256": "0mz1wdxn31qngk98k924mwf4f5pb8v1y9jjl2sf4mrjw1wz2xsnb"
+  }
+ },
+ {
+  "ename": "lsp-treemacs",
+  "commit": "e1a78ef1dcec4ca9794002e6420108a7621efcfd",
+  "sha256": "0nq51n1h69mc4bn9pjimx12afba3k89cfsrbkcdmfypi433k1ga5",
+  "fetcher": "github",
+  "repo": "emacs-lsp/lsp-treemacs",
+  "unstable": {
+   "version": [
+    20200503,
+    1640
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "f",
+    "ht",
+    "lsp-mode",
+    "treemacs"
+   ],
+   "commit": "bd2c3727dd1e46e972477f11ba84999697ed842c",
+   "sha256": "03jlwbzkkpqn0a68m991b6zhbnpna1rvjsdjmqqvyng209lgcgph"
+  }
+ },
+ {
+  "ename": "lsp-ui",
+  "commit": "b7c78c9b07ede9949d14df74b188d4c1a3365196",
+  "sha256": "0fylav8b54g020z039zm1mx26d257715bfn9nnpw9i0b97539lqi",
+  "fetcher": "github",
+  "repo": "emacs-lsp/lsp-ui",
+  "unstable": {
+   "version": [
+    20200503,
+    1650
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "lsp-mode",
+    "markdown-mode"
+   ],
+   "commit": "271b47cb33f11915295911f7cf8575f8a82a5e1c",
+   "sha256": "181j9anm3h5sfallls3sxik6cd7dw1fbi3q9mlfhk979wk6varjk"
+  },
+  "stable": {
+   "version": [
+    6,
+    2
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "lsp-mode",
+    "markdown-mode"
+   ],
+   "commit": "207bc8d61abff7c3024f8a484f63bc60bc4ad58b",
+   "sha256": "024753bi0p1jyjhw7wk8k6s16kbwab5ar4cfasvbn8g08acf293b"
+  }
+ },
+ {
+  "ename": "lua-mode",
+  "commit": "5f3938b668cd3f362016dc7ba0acdaf39e96fb64",
+  "sha256": "12m9s7axj7cp2i1qqv3kqa3banvyxw3yd8y30r8fc2d0jcq75234",
+  "fetcher": "github",
+  "repo": "immerrr/lua-mode",
+  "unstable": {
+   "version": [
+    20200508,
+    1316
+   ],
+   "commit": "35b6e4c20b8b4eaf783ccc8e613d0dd06dbd165c",
+   "sha256": "1bwyyp9fbvy0p4f3mmbqc0plxrcm0ag2r3zb74gb5k2vcxi2vdw4"
+  },
+  "stable": {
+   "version": [
+    20151025
+   ],
+   "commit": "bdf121b2c05bc74d3d7961a91d7afeb6176e0f45",
+   "sha256": "1qawjd0nbj1c142van7r01pmq74vkzcvnn27jgn79wwhplp9gm99"
+  }
+ },
+ {
+  "ename": "luarocks",
+  "commit": "d5abd2b52a071ab206d40057dc85c891183204ea",
+  "sha256": "05srrk9gmv1vhq7m5bjhh2hl2siis04j15b31x0sgknxh3ybr33x",
+  "fetcher": "github",
+  "repo": "emacs-pe/luarocks.el",
+  "unstable": {
+   "version": [
+    20170430,
+    2305
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "cee27ba0716edf338077387969883226dd2b7484",
+   "sha256": "0rdsjmmi95agb859997qdhbk0dns2jyx2mlg8rync58wna70nmbn"
+  }
+ },
+ {
+  "ename": "lush-theme",
+  "commit": "8b29b2f36852e711ce3520d71e83921a1dcb9ccf",
+  "sha256": "03kqws8dzm0ay5k86f4v7g2g2ygwk4fzmz2vyzhzhbsj8hrniq9p",
+  "fetcher": "github",
+  "repo": "andre-richter/emacs-lush-theme",
+  "unstable": {
+   "version": [
+    20180816,
+    2200
+   ],
+   "commit": "645e1959143532df8f7ef90e1184e9556df18af7",
+   "sha256": "0j9gbr3chaxc16yysyaaa1n2cvlrdc1y063l1kxj0mf435d1l7py"
+  }
+ },
+ {
+  "ename": "lusty-explorer",
+  "commit": "efedaa3b1de5f6406c7dcd842eee42eefaf8ab50",
+  "sha256": "0xqanmmkyvzcg2g4zvascq5j004bqz7vmz1a19c25g9cs3rdh0ps",
+  "fetcher": "github",
+  "repo": "sjbach/lusty-emacs",
+  "unstable": {
+   "version": [
+    20200415,
+    1456
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "1b7053b41083666c6805bcaeb55ece6dcc0d77cb",
+   "sha256": "1y3nzp6rpg7anv5xscbp4lzmfdvzffcxha9vx3mrclhjg6giz510"
+  },
+  "stable": {
+   "version": [
+    3,
+    0,
+    1
+   ],
+   "commit": "8ece9b1379a73e7dc0b6e682dd5a573f88a5cb32",
+   "sha256": "09zvn5fgjy27rmxziylvl83zdqmwa1jjndxmxhgsyh9mklisz32p"
+  }
+ },
+ {
+  "ename": "lv",
+  "commit": "5114349617617673d5055fe28cb8f8c86cf41f83",
+  "sha256": "1lkm40rwpj9hmckng9bz5g4jbx9g9i3wlqgl6rq0m6i14syr69v4",
+  "fetcher": "github",
+  "repo": "abo-abo/hydra",
+  "unstable": {
+   "version": [
+    20200507,
+    1518
+   ],
+   "commit": "87873d788891029d9e44fa5458321d6a05849b94",
+   "sha256": "1b6davg1jqcxqzf9aqv8av8c78fgdri97m9q44xzvr1xfbmvkl8g"
+  },
+  "stable": {
+   "version": [
+    0,
+    15,
+    0
+   ],
+   "commit": "f27fce1b2f0a9162e159557bdeb2c0c94defb4d2",
+   "sha256": "0fapvhmhgc9kppf3bvkgry0cd7gyilg7sfvlscfrfjxpx4xvwsfy"
+  }
+ },
+ {
+  "ename": "lxc",
+  "commit": "7c16c08c388e3280f617d0768bc1cd75c5897768",
+  "sha256": "1rv1ybmbjx7n3cavx21nzmvckw63q3jmjsfdr2pcgavrr2ck6lka",
+  "fetcher": "github",
+  "repo": "nicferrier/emacs-lxc",
+  "unstable": {
+   "version": [
+    20140410,
+    2022
+   ],
+   "commit": "88bed56c954d1edd9ff5ce0ced2c02dcf9f71835",
+   "sha256": "090gk0il4yyypzjbh2qrjdaldwf90fi30impmh4zcfl73bic5q9q"
+  }
+ },
+ {
+  "ename": "lxc-tramp",
+  "commit": "2464020a5b3d89bddcd122cad81fed84ded9b117",
+  "sha256": "0rksh7k30kh3i23c98qinffz2zj6h1bshaw994hwy8qwgm38vx61",
+  "fetcher": "github",
+  "repo": "montag451/lxc-tramp",
+  "unstable": {
+   "version": [
+    20200414,
+    1445
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1585e55a5deb89e2f4e30a0ad9e0f121d1e0ebcb",
+   "sha256": "1zs4wcbxqx8275j2q1118ipqw7532cd6cdy2whw22ck4z5w47vfg"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1585e55a5deb89e2f4e30a0ad9e0f121d1e0ebcb",
+   "sha256": "1zs4wcbxqx8275j2q1118ipqw7532cd6cdy2whw22ck4z5w47vfg"
+  }
+ },
+ {
+  "ename": "lxd-tramp",
+  "commit": "ef7778f5961eaaa356e5e383ef2323c5713e5bf2",
+  "sha256": "0i611z4pksrf4zf0h8wnradqbcad5f43dq8bg3dsik0jdcjlvg5p",
+  "fetcher": "github",
+  "repo": "onixie/lxd-tramp",
+  "unstable": {
+   "version": [
+    20181023,
+    7
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f335c76245f62b02cf67a9376eca6f3863c8a75a",
+   "sha256": "0byhafxcc4qw08b16fd00nkyqz1jmq7js0l5q4lda4xdpfgl1a65"
+  }
+ },
+ {
+  "ename": "lyrics",
+  "commit": "b04c8f3dfa9fc07cc0ff3df5c4069f864b6db92e",
+  "sha256": "0kj8v8cg4yqnz0v1nhq41jxjgd4ivqd6lsr1v5cqhg4m0r7f2nzc",
+  "fetcher": "github",
+  "repo": "emacs-pe/lyrics.el",
+  "unstable": {
+   "version": [
+    20180812,
+    1841
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "d0b920be634a5be81ad49418cfaada0f0a57d6cd",
+   "sha256": "0926avnlxi8qkr1faplk1aj4lji0ixa4lv81badi5zsmpyyrwmm7"
+  }
+ },
+ {
+  "ename": "m-buffer",
+  "commit": "c34d02682e87c9978a3583bd903dcac5da5b41d5",
+  "sha256": "17smq7wlidsls870hla5b94xq2pwk24b88jvrbbcqw6f5z3ypf94",
+  "fetcher": "github",
+  "repo": "phillord/m-buffer-el",
+  "unstable": {
+   "version": [
+    20170407,
+    2141
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "8681342aaffa187e5c54945ab91b812965a96d19",
+   "sha256": "040g7l0r4bxz4ynp4zxy80jsa6x2f48z8rylc41fqxiblasmh0af"
+  },
+  "stable": {
+   "version": [
+    0,
+    15
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "6eb1d2535a82707a83733173bc400a0d8e520c80",
+   "sha256": "1sx76i59razwccvn6x7rx5a124bfyjw9fcbxf4gj7nsg33qiq809"
+  }
+ },
+ {
+  "ename": "mac-pseudo-daemon",
+  "commit": "6104efc035bcf469d133ab9a2caf42c9d4482334",
+  "sha256": "12fwrcnwzsfms42rzv4wif5yzx3gnsz8yzdcgkpl37kkx85iy8v0",
+  "fetcher": "github",
+  "repo": "DarwinAwardWinner/mac-pseudo-daemon",
+  "unstable": {
+   "version": [
+    20200215,
+    513
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "703ee41303dc251b7672b7cba5aeb6aa54a76c90",
+   "sha256": "0cplbz7mc2zrxfk8g349ahb7gzli2hn5kda9155nbk8dw74xmj7d"
+  },
+  "stable": {
+   "version": [
+    2,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "564b006835facc4a8df247d8a47ab1030d7e7beb",
+   "sha256": "1ilqxl1851rg9v6ixi924xhzykc3c34f4nq1x0vyyq5b9m2fpb27"
+  }
+ },
+ {
+  "ename": "maces-game",
+  "commit": "2c9f33b926ecec48a43ba4f0484c687a7349ce50",
+  "sha256": "0wz91dsa0w4xlkl5lbdr8k4pgkgalsqcy27sd0i8xswq3wwiy0ip",
+  "fetcher": "github",
+  "repo": "pawelbx/maces-game",
+  "unstable": {
+   "version": [
+    20170903,
+    1551
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "c0fb795f5642467ea528d2f04d904547e8a77ecd",
+   "sha256": "1sf1h5660fd3mfcca3h1fqk3xssgigkil26wz1kp1kvxfx9lm31m"
+  }
+ },
+ {
+  "ename": "macro-math",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "072ycszl4cjc9nvv4axsgyfzz9djpgh4y1xqfr1nxi41nsdfc9kn",
+  "fetcher": "github",
+  "repo": "nschum/macro-math.el",
+  "unstable": {
+   "version": [
+    20130328,
+    1604
+   ],
+   "commit": "216e59371e9ee39c34117ba79b9acd78bb415750",
+   "sha256": "119c77s3qp1vqc5m2yf7m4s81aphkhsvsnwqmpq6xl08r3592zxz"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "105e03c80290d1b88984b2d265a149a13d722920",
+   "sha256": "0dgsl1x6r8m9vvff1ia0kmz21h0dji2jl5cqlpx1m947zh45dahj"
+  }
+ },
+ {
+  "ename": "macrostep",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1h1gag21x05a14j0wbg0lg502fq2hbqfhjlg05kysw9f870whfq2",
+  "fetcher": "github",
+  "repo": "joddie/macrostep",
+  "unstable": {
+   "version": [
+    20161120,
+    2106
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "424e3734a1ee526a1bd7b5c3cd1d3ef19d184267",
+   "sha256": "1fm40mxdn289cyzgw992223dgrjmwxn4q8svyyxfaxjrpb38jhjz"
+  },
+  "stable": {
+   "version": [
+    0,
+    9
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1e2593279f3722e31d8a8f07e297a5c546586cba",
+   "sha256": "0g9bnq4p3ffvva30hpll80dn3i41m51mcvw3qf787zg1nmc5a0j6"
+  }
+ },
+ {
+  "ename": "madhat2r-theme",
+  "commit": "44a382a388821908306c0b8350fba91218515e1b",
+  "sha256": "0y588skd6c2ykyp54d38ibwrqglnaanr15d45d51cvcvp9k7x508",
+  "fetcher": "github",
+  "repo": "madhat2r/madhat2r-theme",
+  "unstable": {
+   "version": [
+    20170203,
+    30
+   ],
+   "commit": "6b387f09de055cfcc15d74981cd4f32f8f9a7323",
+   "sha256": "1nnjdqqbarzv62ic3ddc2z9wmh93zjia4nvfjmji8213dngrrf88"
+  }
+ },
+ {
+  "ename": "mag-menu",
+  "commit": "00043412ffa4e434de9679204b9b3d2602e76ae0",
+  "sha256": "1r1yisjnqxl9llpf91rwqp4q47jc4qp32xnkl8wzsgr0r2qf5yk2",
+  "fetcher": "github",
+  "repo": "chumpage/mag-menu",
+  "unstable": {
+   "version": [
+    20150505,
+    1850
+   ],
+   "deps": [
+    "splitter"
+   ],
+   "commit": "9b9277021cd09fb1dba64b1d2a00705d20914bd6",
+   "sha256": "1flamyk7z3r723cczqra0f4yabc6kmgwjaw2bvs3kisppqmmz72g"
+  }
+ },
+ {
+  "ename": "magic-filetype",
+  "commit": "eb13cb0dba1696cc51132cd1ff723fa17f892a7c",
+  "sha256": "0f0j8fgh2gpkarz9308pns0d89wc2dchyim6hbixkdpqzg9gskc3",
+  "fetcher": "github",
+  "repo": "emacs-php/magic-filetype.el",
+  "unstable": {
+   "version": [
+    20180219,
+    1552
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "019494add5ff02dd36cb3f500142fc51125522cc",
+   "sha256": "1hw77d4wgqrms8rvkv3xd50v4y9qjvm7cpz5rkgmvizs34pjqy22"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "019494add5ff02dd36cb3f500142fc51125522cc",
+   "sha256": "1hw77d4wgqrms8rvkv3xd50v4y9qjvm7cpz5rkgmvizs34pjqy22"
+  }
+ },
+ {
+  "ename": "magic-latex-buffer",
+  "commit": "07e240ebe71d389d314c4a27bbcfe1f88b215c3b",
+  "sha256": "0xm4vk4aggyfw96cgya5cp97jzx5ha0xwpf2yfh7c3m8d9cca4y8",
+  "fetcher": "github",
+  "repo": "zk-phi/magic-latex-buffer",
+  "unstable": {
+   "version": [
+    20191106,
+    241
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "8597f4db70732d6e479396e2f2a7e78742387253",
+   "sha256": "16zv10rir99wl16d79479204h5fbdx78wpgahlg6kf74001fr3sv"
+  }
+ },
+ {
+  "ename": "magik-mode",
+  "commit": "291cce8e8e3475348b446ba38833eb1e37d4db65",
+  "sha256": "1d6n7mpwavrajcgai6j0y5khhgc4jaag1ig1xx8w04mr48xrjxqk",
+  "fetcher": "github",
+  "repo": "roadrunner1776/magik",
+  "unstable": {
+   "version": [
+    20200304,
+    1323
+   ],
+   "commit": "e54f934952cde3f96d6a131968295d993b3cf624",
+   "sha256": "1yivbgbcy5qvs55dn5lx08mbkmsd4mriymas9jgh7rn6hl14x8hj"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "commit": "d280836c77fd263ee404273d7c21f47395a657f9",
+   "sha256": "0ibasyhqc6zgvzvkfyfvx7g6f18z4n7hy2lqjvyckh40cqpzpwj0"
+  }
+ },
+ {
+  "ename": "magit",
+  "commit": "15a5916ec8e9062e41b1dd7d4f5535a86c2170a3",
+  "sha256": "1bcv0yv5l51j3xyli9rq3zqjkf0b9w7yd0kykfmy1dp1hx39qf8r",
+  "fetcher": "github",
+  "repo": "magit/magit",
+  "unstable": {
+   "version": [
+    20200514,
+    1330
+   ],
+   "deps": [
+    "async",
+    "dash",
+    "git-commit",
+    "transient",
+    "with-editor"
+   ],
+   "commit": "d05545ec2fd7edf915eaf1b9c15c785bb08975cc",
+   "sha256": "11aqyy4r9hrdi9nlypd70hn8384b6q89c7xavgv8c5q7f2g5z9qg"
+  },
+  "stable": {
+   "version": [
+    2,
+    90,
+    1
+   ],
+   "deps": [
+    "async",
+    "dash",
+    "ghub",
+    "git-commit",
+    "magit-popup",
+    "with-editor"
+   ],
+   "commit": "791901b2f1d26fa0a383147fe77948a9abc753da",
+   "sha256": "1kw94sdczswsyzn1zlk5s5aplpdv4qd7qcqc5zfxsmsfwm3jacl4"
+  }
+ },
+ {
+  "ename": "magit-annex",
+  "commit": "cec5af50ae7634cc566adfbfdf0f95c3e2951c0c",
+  "sha256": "1ri58s1ly416ksmb7mql6vnmx7hq59lmhi7qijknjarw7qs3bqys",
+  "fetcher": "github",
+  "repo": "magit/magit-annex",
+  "unstable": {
+   "version": [
+    20200428,
+    9
+   ],
+   "deps": [
+    "cl-lib",
+    "magit"
+   ],
+   "commit": "ef5dce6267e9118a5eca82a22bcad0b67826c23a",
+   "sha256": "0vzkydgl889cq173zjl89g2vrddb9abc4a8gljiz3b4a7n5b1nrd"
+  },
+  "stable": {
+   "version": [
+    1,
+    7,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "magit"
+   ],
+   "commit": "21cb2927d672cc6bf631d8373a361b1766ccf004",
+   "sha256": "07r0d2i1hws63wfv1jys63r3lmrl4ywwi76gi7srwhzhqdr1af0n"
+  }
+ },
+ {
+  "ename": "magit-circleci",
+  "commit": "b633d8ce52f85517f87ed00a65398af50058286b",
+  "sha256": "05aq0bnai8swpwh53p3a8a52n81friksjflssl0k1w7f5ffq84ya",
+  "fetcher": "github",
+  "repo": "abrochard/magit-circleci",
+  "unstable": {
+   "version": [
+    20191209,
+    2113
+   ],
+   "deps": [
+    "dash",
+    "magit",
+    "transient"
+   ],
+   "commit": "3425ad5b16cb48d6802b7e9ed044b4cd7a99c785",
+   "sha256": "10iinizl99aivrf9zihykabb5lyg62kxbmydwaf7swzxf4dgxn2k"
+  }
+ },
+ {
+  "ename": "magit-diff-flycheck",
+  "commit": "a5d28982425519157a6116c077fbc4be7cfa53be",
+  "sha256": "1gnjvhxy48ah84cglq6653wgb07g0gry0672334ad3cwc5b45kdk",
+  "fetcher": "github",
+  "repo": "ragone/magit-diff-flycheck",
+  "unstable": {
+   "version": [
+    20190524,
+    551
+   ],
+   "deps": [
+    "flycheck",
+    "magit",
+    "seq"
+   ],
+   "commit": "28acf74f59e385865746cccf4b1e4c4025ae9433",
+   "sha256": "178yby09swm3hlj300vkk3366wjwwf6zijlvphn6drsiw7dmccqm"
+  }
+ },
+ {
+  "ename": "magit-filenotify",
+  "commit": "ca5541d2ce3553e9ade2c1ec1c0d78103dfd0c4d",
+  "sha256": "1ihk5yi6psqkccpi2bq2h70kn7k874zl7wcinjaq21lirk4z7bvn",
+  "fetcher": "github",
+  "repo": "ruediger/magit-filenotify",
+  "unstable": {
+   "version": [
+    20151116,
+    2340
+   ],
+   "deps": [
+    "magit"
+   ],
+   "commit": "c0865b3c41af20b6cd89de23d3b0beb54c8401a4",
+   "sha256": "0nkxxhxkhy314jv1l3hza84vigl8q7fc8hjjvrx58gfgsfgifx6r"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "magit"
+   ],
+   "commit": "575c4321f61fb8f25e4779f9ffd4514ac086ae96",
+   "sha256": "1vn6x53kpwv3zf2b5xjswyz6v853r8b9dg88qhwd2h480hrx6kal"
+  }
+ },
+ {
+  "ename": "magit-find-file",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "1y66nsq1hbv1sb4n71gdxv7p1rz37vd9lkf7zl7avy0dchs499ik",
+  "fetcher": "github",
+  "repo": "bradwright/magit-find-file.el",
+  "unstable": {
+   "version": [
+    20150702,
+    830
+   ],
+   "deps": [
+    "dash",
+    "magit"
+   ],
+   "commit": "c3ea91bab37d10a814a829728ec972811f728d60",
+   "sha256": "1j3jsrp0qpaa2xd98d1g9z0zc4b93knwajrlnlsc7l6g0vlfsddb"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    0
+   ],
+   "deps": [
+    "dash",
+    "magit"
+   ],
+   "commit": "035da838b1a19e7a5ee135b4ca8475f4e235b61e",
+   "sha256": "1jlww053s580d7rlvmr1dl79wxasa0hhh2jnwb1ra353d6h3a73w"
+  }
+ },
+ {
+  "ename": "magit-gerrit",
+  "commit": "f7cc000debed666ad6800e31c114eedb7384317c",
+  "sha256": "1iwvg10ly6dlf8llz9f8d4qfdbvd3s28wf48qgn1wjlxpka6zrd4",
+  "fetcher": "github",
+  "repo": "terranpro/magit-gerrit",
+  "unstable": {
+   "version": [
+    20160226,
+    930
+   ],
+   "deps": [
+    "magit"
+   ],
+   "commit": "ece6f369694aca17f3ac166ed2801b432acfe20d",
+   "sha256": "0mms0gxv9a3ns8lk5k2wjibm3088y1cmpr3axjdh6ppv7r5wdvii"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "magit"
+   ],
+   "commit": "699c5c39c6dbdc8d730721eaf1491f982dd78142",
+   "sha256": "0ym24gjd6c04zry08abcb09zvjbgj8nc1j12q0r51fhzzadxcxbb"
+  }
+ },
+ {
+  "ename": "magit-gh-pulls",
+  "commit": "9b54fe4f51820c2f707e1f5d8a1128fff19a319c",
+  "sha256": "0qn9vjxi33pya9s8v3g95scmhwrn2yf5pjm7d24frq766wigjv8d",
+  "fetcher": "github",
+  "repo": "sigma/magit-gh-pulls",
+  "unstable": {
+   "version": [
+    20191230,
+    1944
+   ],
+   "deps": [
+    "gh",
+    "magit",
+    "pcache",
+    "s"
+   ],
+   "commit": "57f3a5158bbc7bfd169ee136fde351cce999e0ca",
+   "sha256": "1halhivvfklxscg1xxk461wgjlh3vl8g991ydj93450b6mw3azaq"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    3
+   ],
+   "deps": [
+    "gh",
+    "magit",
+    "pcache",
+    "s"
+   ],
+   "commit": "d526f4c9ee1709c79f8a4630699ce1f25ae054e7",
+   "sha256": "11fd3c7wnqy08khj6za8spbsm3k1rqqih21lbax2iwvxl8jv4dv0"
+  }
+ },
+ {
+  "ename": "magit-gitflow",
+  "commit": "dfaeb33dec2c75d21733b6e51d063664c6544e4d",
+  "sha256": "0wsqq3xpqqfak4aqwsh5sxjb1m62z3z0ysgdmnrch3qsh480r8vf",
+  "fetcher": "github",
+  "repo": "jtatarik/magit-gitflow",
+  "unstable": {
+   "version": [
+    20170929,
+    824
+   ],
+   "deps": [
+    "magit",
+    "magit-popup"
+   ],
+   "commit": "cc41b561ec6eea947fe9a176349fb4f771ed865b",
+   "sha256": "0jz69wrrzvqadaphmjrr146nzvmphsbl7rmc3ccnpw1gw6gnz81f"
+  },
+  "stable": {
+   "version": [
+    2,
+    2,
+    3
+   ],
+   "deps": [
+    "magit",
+    "magit-popup"
+   ],
+   "commit": "cc41b561ec6eea947fe9a176349fb4f771ed865b",
+   "sha256": "0jz69wrrzvqadaphmjrr146nzvmphsbl7rmc3ccnpw1gw6gnz81f"
+  }
+ },
+ {
+  "ename": "magit-imerge",
+  "commit": "e78a5c27eedfc9b1d79e37e8d333c5d253f31a3c",
+  "sha256": "0rycmbsi2s7rjqfpcv794vhkybav7d8ikzdaxai36szxpg9pzhj4",
+  "fetcher": "github",
+  "repo": "magit/magit-imerge",
+  "unstable": {
+   "version": [
+    20191105,
+    2245
+   ],
+   "deps": [
+    "magit"
+   ],
+   "commit": "3b588991d30a69d2209dbcbb041777ae8af62bd0",
+   "sha256": "19fyrann61k8viak05y0f5v9xr2p531ysrcq05d8pq8qf3vna1y1"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "magit"
+   ],
+   "commit": "5b45efa65317886640c339d1c71d2b9e00e98b77",
+   "sha256": "02597aq00fq7b9284kq7s55ddrjb6xhh1l280gq3czi75658d3db"
+  }
+ },
+ {
+  "ename": "magit-lfs",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "1xc32f2k3dwpqncnrr3xyr2963ywa0006z3c01nypxgs1xkfsbdx",
+  "fetcher": "github",
+  "repo": "Ailrun/magit-lfs",
+  "unstable": {
+   "version": [
+    20190831,
+    118
+   ],
+   "deps": [
+    "dash",
+    "magit"
+   ],
+   "commit": "75bf6d3310eae24889589a09e96a4a855e1a11c4",
+   "sha256": "0dy2p6wyp5xqx4jnh1sf3v47dv09k7vv3c9mhjapcr1jpbpqj87w"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "deps": [
+    "dash",
+    "magit"
+   ],
+   "commit": "75bf6d3310eae24889589a09e96a4a855e1a11c4",
+   "sha256": "0dy2p6wyp5xqx4jnh1sf3v47dv09k7vv3c9mhjapcr1jpbpqj87w"
+  }
+ },
+ {
+  "ename": "magit-libgit",
+  "commit": "0580362be495894c61b99b7efb4cfa435cc0dd72",
+  "sha256": "0fi3w2f79qn3hf5rw5jp8128xbk5r0xwwwb56zcjn2na02dynfb1",
+  "fetcher": "github",
+  "repo": "magit/magit",
+  "unstable": {
+   "version": [
+    20200102,
+    2204
+   ],
+   "deps": [
+    "libgit",
+    "magit"
+   ],
+   "commit": "d05545ec2fd7edf915eaf1b9c15c785bb08975cc",
+   "sha256": "11aqyy4r9hrdi9nlypd70hn8384b6q89c7xavgv8c5q7f2g5z9qg"
+  }
+ },
+ {
+  "ename": "magit-org-todos",
+  "commit": "84480cad490cab2f087a484ed7b9d3d3064bbd29",
+  "sha256": "0yywgzm2jzvsccm9h0a0s1q8fag9dfajnznwk6iqz5pywq5mxijr",
+  "fetcher": "github",
+  "repo": "danielma/magit-org-todos.el",
+  "unstable": {
+   "version": [
+    20180709,
+    1950
+   ],
+   "deps": [
+    "magit"
+   ],
+   "commit": "9ffa3efb098434d837cab4bacd1601fdfc6fe999",
+   "sha256": "0kxz5q8q5np4zm1ls4hx1h53vlnhj0mnmbq12p5nzk5zcxycbcpz"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "deps": [
+    "magit"
+   ],
+   "commit": "0bfa36bbc50e62de0a3406031cb93e2f57dcdc55",
+   "sha256": "07r5x256k1fjjxs1yfg41kc94nwvnjlk2vvknkra3j8v9p0j88m7"
+  }
+ },
+ {
+  "ename": "magit-p4",
+  "commit": "440d47ca465845eaa601ca8a6e4b15fc197e522b",
+  "sha256": "19p7h3a21jjr2h52ika14lyczdv6z36gl7hk1v17bffffac8q069",
+  "fetcher": "github",
+  "repo": "qoocku/magit-p4",
+  "unstable": {
+   "version": [
+    20170414,
+    1246
+   ],
+   "deps": [
+    "cl-lib",
+    "magit",
+    "magit-popup",
+    "p4"
+   ],
+   "commit": "cdc05f2d564409baac9ca15b1a2a0110a6ff12b7",
+   "sha256": "0s2zmfw449gyc8lf8cqwm47wnqy9g5nai72agvapam2h5613mx4i"
+  }
+ },
+ {
+  "ename": "magit-patch-changelog",
+  "commit": "caf023c2af4c09c04de7bc0338fc1d07da895ddd",
+  "sha256": "1lkgrnhiis0rwx14pcvhi5r775mgysb04srnvqfsihdn31bqjh6g",
+  "fetcher": "github",
+  "repo": "dickmao/magit-patch-changelog",
+  "unstable": {
+   "version": [
+    20200217,
+    1202
+   ],
+   "deps": [
+    "magit"
+   ],
+   "commit": "876c780bdb676b6ece64861704e199b94f33cf71",
+   "sha256": "0wkjh9s67vs90lysdx3gjyrax9mlbzfvs563pzr6ab3l4p5pgnsw"
+  }
+ },
+ {
+  "ename": "magit-popup",
+  "commit": "0263ca6aea7bf6eae26a637454affbda6bd106df",
+  "sha256": "1pv5slspcfmi10bnnw6acpijn7vkn2h9iqww3w641v41d3p37jmv",
+  "fetcher": "github",
+  "repo": "magit/magit-popup",
+  "unstable": {
+   "version": [
+    20200306,
+    223
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "b8e886c4f2242d6c58f84d4549af712e86360db1",
+   "sha256": "14l989m5pxzxk6164z8lgvshy45aq0ab78mjz5f6zw58h5rvnbdg"
+  },
+  "stable": {
+   "version": [
+    2,
+    13,
+    2
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "df9abf1a1bce3fadb5e0657eb8f4c7026efa3c69",
+   "sha256": "1ifhph1mj7wjar62d65fjx45qsjwsyslbj7liih3v0r4by5gyxmw"
+  }
+ },
+ {
+  "ename": "magit-rbr",
+  "commit": "10427817a1fc2fa8aaf11897719cbb851d9e4b15",
+  "sha256": "086vb7xrgyrazc3a7bpyhy219szvrvl59l8wlqakimx0mav7qipr",
+  "fetcher": "github",
+  "repo": "fanatoly/magit-rbr",
+  "unstable": {
+   "version": [
+    20181009,
+    2016
+   ],
+   "deps": [
+    "magit"
+   ],
+   "commit": "029203b3e48537205052a058e964f058cd802c3c",
+   "sha256": "1z48m0al8bb4ppic483jvika9q47c67g7fazk25431sr5rv9h4d2"
+  }
+ },
+ {
+  "ename": "magit-reviewboard",
+  "commit": "f3715fa1df69350205e4269b7090c46b343d8bf0",
+  "sha256": "1sxqij3370vn6ap52lf4hdlcxfj9mj17sb5r4kk5msjbw3bzdmzr",
+  "fetcher": "github",
+  "repo": "jtamagnan/magit-reviewboard",
+  "unstable": {
+   "version": [
+    20190211,
+    2244
+   ],
+   "deps": [
+    "magit",
+    "request",
+    "s"
+   ],
+   "commit": "f3d5ed914243e3930f9c06f59021305e7e43e67d",
+   "sha256": "0xlhy328h2wxklpy71dhy1fk7zv6hs2v4jrl1mm9x5mnrbrdfvxx"
+  }
+ },
+ {
+  "ename": "magit-section",
+  "commit": "92cab05cc5ba4153be97648d6fcd95417871e9c7",
+  "sha256": "1v9g8y9r0lmp54hgaxgjqr3x86l7cz4wvrrjbpij7aai40ddqdp3",
+  "fetcher": "github",
+  "repo": "magit/magit",
+  "unstable": {
+   "version": [
+    20200513,
+    1503
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "d05545ec2fd7edf915eaf1b9c15c785bb08975cc",
+   "sha256": "11aqyy4r9hrdi9nlypd70hn8384b6q89c7xavgv8c5q7f2g5z9qg"
+  },
+  "stable": {
+   "version": [
+    2,
+    90,
+    1
+   ],
+   "commit": "791901b2f1d26fa0a383147fe77948a9abc753da",
+   "sha256": "1kw94sdczswsyzn1zlk5s5aplpdv4qd7qcqc5zfxsmsfwm3jacl4"
+  }
+ },
+ {
+  "ename": "magit-stgit",
+  "commit": "72a38bbc5bba53dfb971f17213287caf0d190db0",
+  "sha256": "1spli6yq258zwx95y16s27hr7hlc2h0kc9mjnvjjl13y2l6shm0i",
+  "fetcher": "github",
+  "repo": "emacsorphanage/magit-stgit",
+  "unstable": {
+   "version": [
+    20190313,
+    1158
+   ],
+   "commit": "8294f34e4927798d9db883cafe946a9041b7e331",
+   "sha256": "16i67h0f2w6gaf34w6v50ahmb3358wqhgnijfmzyd6j19zw39d3d"
+  },
+  "stable": {
+   "version": [
+    2,
+    2,
+    0
+   ],
+   "commit": "8294f34e4927798d9db883cafe946a9041b7e331",
+   "sha256": "16i67h0f2w6gaf34w6v50ahmb3358wqhgnijfmzyd6j19zw39d3d"
+  }
+ },
+ {
+  "ename": "magit-svn",
+  "commit": "a1ff188d509aec104e9d21a640cf5bc3addedf00",
+  "sha256": "1dww5fc5phai3wk9lp85h6y08ai3vxgggsqj78a3mlcn2adwwc01",
+  "fetcher": "github",
+  "repo": "emacsorphanage/magit-svn",
+  "unstable": {
+   "version": [
+    20190821,
+    1455
+   ],
+   "deps": [
+    "magit"
+   ],
+   "commit": "2cff1a30a30f2b3963342a7d185ec13fc12279c3",
+   "sha256": "0c4bn9wjjwb0f6hzh7d6vz33lrf75kal62329drzmbh1sla2s3h3"
+  },
+  "stable": {
+   "version": [
+    2,
+    2,
+    1
+   ],
+   "deps": [
+    "magit"
+   ],
+   "commit": "c833903732a14478f5c4cfc561bae7c50671b36c",
+   "sha256": "01kcsc53q3mbhgjssjpby7ypnhqsr48rkl1xz3ahaypmlp929gl9"
+  }
+ },
+ {
+  "ename": "magit-tbdiff",
+  "commit": "ad97eea866c8732e3adc17551d37a6d1ae511e6c",
+  "sha256": "1wydmw4f1072k8frk8mi8aaky7dndinq8n7kn10q583bjlxgw80r",
+  "fetcher": "github",
+  "repo": "magit/magit-tbdiff",
+  "unstable": {
+   "version": [
+    20190918,
+    6
+   ],
+   "deps": [
+    "magit"
+   ],
+   "commit": "0162390581c1165a0c4c68081d8fc5ffae4cf1a9",
+   "sha256": "0blwbgr4by0rawzw2hdpc5jcckmj96p0dxvgcml61rg3andsqyyl"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "magit"
+   ],
+   "commit": "4273bfab1d2b620d68d890fbaaa78c56cf210059",
+   "sha256": "0d1cn0nshxnvgjvl9j7wsai75pvsxmrmkdj57xdpyggwxgcpl1m4"
+  }
+ },
+ {
+  "ename": "magit-todos",
+  "commit": "b4544ab55d2c8b8c3b7eb739b9fb90ebb246d68b",
+  "sha256": "0vqmbw0qj8a5wf4ig9hgc0v3l1agdkvgprzjv178hs00297br2s8",
+  "fetcher": "github",
+  "repo": "alphapapa/magit-todos",
+  "unstable": {
+   "version": [
+    20200310,
+    28
+   ],
+   "deps": [
+    "async",
+    "dash",
+    "f",
+    "hl-todo",
+    "magit",
+    "pcre2el",
+    "s"
+   ],
+   "commit": "a0e5d1f3c7dfcb4f18c1b0d57f1746a4872df5c6",
+   "sha256": "0v11ngxwndaylmzqm5rrvch7hsfcm15xhih13ckm6kn2skqdzh40"
+  },
+  "stable": {
+   "version": [
+    1,
+    5,
+    2
+   ],
+   "deps": [
+    "async",
+    "dash",
+    "f",
+    "hl-todo",
+    "magit",
+    "pcre2el",
+    "s"
+   ],
+   "commit": "65db450bdb766f12e5aa31ae1cecbc0716e07218",
+   "sha256": "0a4ghad93nmk4i0aq25c3g5lwxi7z327v0z10zi8yyja5daipsdp"
+  }
+ },
+ {
+  "ename": "magit-topgit",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "1194hdcphir4cmvzg9cxrjiyg70hr9zmml2rljih94vl7zrw7335",
+  "fetcher": "github",
+  "repo": "greenrd/magit-topgit",
+  "unstable": {
+   "version": [
+    20160313,
+    1954
+   ],
+   "deps": [
+    "magit"
+   ],
+   "commit": "11489ea798bc88d0ea5244bbf725285eedfefbef",
+   "sha256": "1y7ss475ibjx354m73jn5dxd98g33jcijx48b30p45rbm6ha3i8q"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    2
+   ],
+   "deps": [
+    "magit"
+   ],
+   "commit": "11489ea798bc88d0ea5244bbf725285eedfefbef",
+   "sha256": "1y7ss475ibjx354m73jn5dxd98g33jcijx48b30p45rbm6ha3i8q"
+  }
+ },
+ {
+  "ename": "magit-vcsh",
+  "commit": "9ee290ad797511ccc4ee2e1d3d773672796da3f9",
+  "sha256": "025ggdb40js7nmg0fqw3ncki4krswwyvl4q1m8250k09g5r57zij",
+  "fetcher": "gitlab",
+  "repo": "stepnem/magit-vcsh-el",
+  "unstable": {
+   "version": [
+    20190817,
+    2014
+   ],
+   "deps": [
+    "magit",
+    "vcsh"
+   ],
+   "commit": "fcff128cdbe3ef547dc64f2496cb6405b8ee21ca",
+   "sha256": "0x0dwl163qpws5d6h628if8iyzzxig9f7j1n7q6fxkbymx0js0vj"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "deps": [
+    "magit",
+    "vcsh"
+   ],
+   "commit": "fcff128cdbe3ef547dc64f2496cb6405b8ee21ca",
+   "sha256": "0x0dwl163qpws5d6h628if8iyzzxig9f7j1n7q6fxkbymx0js0vj"
+  }
+ },
+ {
+  "ename": "magithub",
+  "commit": "e555b46f5de7591aa8e10a7cf67421e26a676db8",
+  "sha256": "11par5rncsa866gazdw98d4902rvyjnnwbiwpndlyh06ak0lryab",
+  "fetcher": "github",
+  "repo": "vermiculus/magithub",
+  "unstable": {
+   "version": [
+    20190512,
+    2316
+   ],
+   "deps": [
+    "ghub+",
+    "git-commit",
+    "magit",
+    "markdown-mode",
+    "s"
+   ],
+   "commit": "9fb9c653d0dad3da7ccff3ae321fa6e54c08f41b",
+   "sha256": "047dyiysdhf81qfcmmaxzixgxy35fjm9wyhwwv9630s5b83fh094"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    7
+   ],
+   "deps": [
+    "ghub+",
+    "git-commit",
+    "magit",
+    "markdown-mode",
+    "s"
+   ],
+   "commit": "81e75cbbbac820a3297e6b6a1e5dc6d9cfe091d0",
+   "sha256": "1iq8c939c0a6v8gq31vcjw6nxwnz4fpavcd6xf4h2rb6rkmxmhvl"
+  }
+ },
+ {
+  "ename": "magma-mode",
+  "commit": "0a82892371eb390d8a802919458c6c2baacd1597",
+  "sha256": "134zm9mg7p0qcqr0m7wsxnwqxr64s9z1njxmvjhsbxi3rhaivcsl",
+  "fetcher": "github",
+  "repo": "ThibautVerron/magma-mode",
+  "unstable": {
+   "version": [
+    20200312,
+    1306
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "f"
+   ],
+   "commit": "0d810239be625b3f8a82f4e27ffd311fc2e1841e",
+   "sha256": "0ibr94vlpa6hnycgssbm5fip0zvrw8rx24mvmq36a4qgd6qi7g4j"
+  }
+ },
+ {
+  "ename": "magnatune",
+  "commit": "6dfd5ae62718a32f8c5af4048af06cb53961d7df",
+  "sha256": "0fmxlrq5ls6fpbk5fv67aan8gg1c61i1chfw5lhf496pwqzq901d",
+  "fetcher": "github",
+  "repo": "eikek/magnatune.el",
+  "unstable": {
+   "version": [
+    20151030,
+    1935
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "605b01505ba30589c77ebb4c96834b5072ccbdd4",
+   "sha256": "1hqz26zm4bdz5wavna4j9yia3ns4z19dnszl7k0lcpgbgmb0wh8y"
+  }
+ },
+ {
+  "ename": "majapahit-theme",
+  "commit": "c9b793878de4107bb646652d09d8799aef8b97e8",
+  "sha256": "04k2smrya27rrjlzvnl3a6llg8vj8x4mm9qyk4kwrmckhd6jd68s",
+  "fetcher": "gitlab",
+  "repo": "franksn/majapahit-theme",
+  "unstable": {
+   "version": [
+    20160817,
+    1848
+   ],
+   "commit": "77c96df7619666b2102d90d452eeadf04adc89a6",
+   "sha256": "0wnhfdk2zwxqfh8d74xmszqgibcgxiq825pq8381zg4nkz5cckfb"
+  }
+ },
+ {
+  "ename": "major-mode-hydra",
+  "commit": "865917fcc75c4118afc89b8bcc20ebdb6302f15d",
+  "sha256": "0654wnsw38sca97kvp8p3k1h6r91iqs873gcjaaxd7a96sisvafd",
+  "fetcher": "github",
+  "repo": "jerrypnz/major-mode-hydra.el",
+  "unstable": {
+   "version": [
+    20191030,
+    2354
+   ],
+   "deps": [
+    "dash",
+    "pretty-hydra"
+   ],
+   "commit": "20362323f66883c1336ffe70be24f91509addf54",
+   "sha256": "16krmj2lnk7j5ygdjw4hl020qqxg11bnc8sz15yr4fpy1p7hq5cz"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "dash",
+    "pretty-hydra"
+   ],
+   "commit": "bba876b86f0b80495004bf185b2b1f6083a1ff3a",
+   "sha256": "08a15knkdq35pzjq82imff016fbfdib5q4glg2xmdy2b5fnk7jqa"
+  }
+ },
+ {
+  "ename": "major-mode-icons",
+  "commit": "c8f551bec8bdc5dee4b31edea0c2f92b3c77ec56",
+  "sha256": "02p5h9q2j7z3wcmvkbqbbzzk3lyfdq43psppy9x9ypic9fij8j95",
+  "fetcher": "github",
+  "repo": "stardiviner/major-mode-icons",
+  "unstable": {
+   "version": [
+    20200127,
+    512
+   ],
+   "deps": [
+    "all-the-icons",
+    "powerline",
+    "xpm"
+   ],
+   "commit": "b36eae2e976bad3c431b082c64b1a724a2ba1fe6",
+   "sha256": "1jjmma9lx5g4qprmy71izgdp564lbdb0wsiysl1f6d8wipml78ys"
+  }
+ },
+ {
+  "ename": "make-color",
+  "commit": "bb765469c65589ae9d7dbc420a8edcf44c3be5d1",
+  "sha256": "0mrv8b67lpid5m8rfbhcik76bvnjlw4xmcrd2c2iinyl02y07r5k",
+  "fetcher": "github",
+  "repo": "alezost/make-color.el",
+  "unstable": {
+   "version": [
+    20140625,
+    1150
+   ],
+   "commit": "5ca1383ca9228bca82120b238bdc119f302b75c0",
+   "sha256": "1wmpy1d966zzxwar2ng825zlch5fwsslsi1706ss9v7zl7i9wggd"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "b19cb40c0619e267f2948ed37aff67b712a6deed",
+   "sha256": "0fp5gbin1sgsdz39spk74vadkzig3ydwhpzx9vg7f231kk5f6wzx"
+  }
+ },
+ {
+  "ename": "make-it-so",
+  "commit": "aad592089ed2200e2f8c5191e8adeac1db4bce54",
+  "sha256": "0a8abz54mb60mfr0bl9ry8yawq99vx9hjl4fm2sivns58qjgfy73",
+  "fetcher": "github",
+  "repo": "abo-abo/make-it-so",
+  "unstable": {
+   "version": [
+    20190625,
+    1036
+   ],
+   "deps": [
+    "swiper"
+   ],
+   "commit": "b73dfb640588123c9eece230ad72b37604f5c126",
+   "sha256": "0p6xhyinzzkrwzbpxqfm8hlii0ikvmmylya240bwsa77w0g1k6xq"
+  }
+ },
+ {
+  "ename": "makefile-executor",
+  "commit": "08f8b4d680e4907dbd8ea46a75d98aa0e93c2bb9",
+  "sha256": "0889rq2a7ks2ynyq91xsa2kpzgd72kzbjxx0b34w8faknpj3b6hi",
+  "fetcher": "github",
+  "repo": "thiderman/makefile-executor.el",
+  "unstable": {
+   "version": [
+    20180720,
+    832
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "9a7d78f814a4b372d8f8179819cb1b37b83b1973",
+   "sha256": "1sw8zqxzrcxs4v211bmlxz5xfrpckrawnbhf1fiji0971cv3hx0r"
+  }
+ },
+ {
+  "ename": "makey",
+  "commit": "688e32e98758aa6fd31218e98608bd54a76c3e83",
+  "sha256": "06xgrlkqvg288yd4lyhx4vi80jlfarhblxk5m5zzs5as7n08cvk4",
+  "fetcher": "github",
+  "repo": "mickeynp/makey",
+  "unstable": {
+   "version": [
+    20131231,
+    1430
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a61781e69d3b451551e269446e1c5f624ab81137",
+   "sha256": "1rr7vpm3xxzcaam3m8xni3ajy8ycyljix07n2jzczayri9sd8csy"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a61781e69d3b451551e269446e1c5f624ab81137",
+   "sha256": "1rr7vpm3xxzcaam3m8xni3ajy8ycyljix07n2jzczayri9sd8csy"
+  }
+ },
+ {
+  "ename": "malinka",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1zmnlgy9k1s1s2wgkhlwfsnknmhggy0rx3l495a5x1kqsx6i0c9y",
+  "fetcher": "github",
+  "repo": "LefterisJP/malinka",
+  "unstable": {
+   "version": [
+    20171202,
+    1021
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "f",
+    "projectile",
+    "rtags",
+    "s"
+   ],
+   "commit": "d4aa517c7a9022eae16c758c7efdb3a0403542d7",
+   "sha256": "1rnzvx1nc01sw9fklm36lyllqm6dizj64gnlqbs4nammx7z0spi1"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "f",
+    "projectile",
+    "rtags",
+    "s"
+   ],
+   "commit": "81cf7dd81fbf124ceda31ee963cce8c3616f28f1",
+   "sha256": "0hwxwwjzjxv2mmkxmalr2hp3x8apwcyvn2bz4d4yd4wrzcscay97"
+  }
+ },
+ {
+  "ename": "mallard-mode",
+  "commit": "19c5543664ca685a70e53baa1357842e83cbf8f7",
+  "sha256": "0y2ikjgy107kb85pz50vv7ywslqgbrrkcfsrd8gsk1jky4qn8izd",
+  "fetcher": "github",
+  "repo": "jhradilek/emacs-mallard-mode",
+  "unstable": {
+   "version": [
+    20131204,
+    425
+   ],
+   "commit": "c48170c1ace4959abcc5fb1df0d4cb149cff44c1",
+   "sha256": "18x3cssfn81k8hg4frj7dhzphg784321z51wbbvn3bjhq7s6j3a2"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "commit": "152cd44d53c881457fe57c1aba77e8e2fca4d1b0",
+   "sha256": "1272fsjzsza9dxm8s64b7x2jzr3ks8wjpwvgcxha2dnsjzklcdcj"
+  }
+ },
+ {
+  "ename": "mallard-snippets",
+  "commit": "57a31a6ac93a864cb5212c925fdfb0961d36b24a",
+  "sha256": "0437qd7q9i32pmhxaz3vi2dnfpj4nddmzgnqpwsgl28slhjw2hv8",
+  "fetcher": "github",
+  "repo": "jhradilek/emacs-mallard-snippets",
+  "unstable": {
+   "version": [
+    20131023,
+    1851
+   ],
+   "deps": [
+    "mallard-mode",
+    "yasnippet"
+   ],
+   "commit": "70c5293f10722f2ace73bdf74d9a18f95b040edc",
+   "sha256": "0qk7i47nmyp4llwp6x0i1i5dk82ck26iyz1sjvvlihaw8a5akny2"
+  }
+ },
+ {
+  "ename": "malyon",
+  "commit": "54b3785cfcdb3b54307f60ee634a101e8bcd9989",
+  "sha256": "050kj4c1vp9f3fiskf8hld7w46092n4jipdga226x97igx575g3r",
+  "fetcher": "github",
+  "repo": "speedenator/malyon",
+  "unstable": {
+   "version": [
+    20161208,
+    2125
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "0d9882650720b4a791556f5e2d917388965d6fc0",
+   "sha256": "0an1yvp0p624rxd8n5phiwvznw35ripqhlwzwyv2bw7lc1rscllr"
+  }
+ },
+ {
+  "ename": "man-commands",
+  "commit": "cefd80c8f65e1577ba36ea665b36c3a3d4032b4b",
+  "sha256": "1yl7y0k24gydldfs406v1n523q46m9x6in6pgljgjnjravc67wnq",
+  "fetcher": "github",
+  "repo": "nflath/man-commands",
+  "unstable": {
+   "version": [
+    20151221,
+    2221
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f4ba0c3790855d7544dff92d470d212f24de1d9d",
+   "sha256": "1lfq4hsq2n33l58ja5kzy6bwk9jxbcdsg6y8gqlk71lcslzqldrk"
+  }
+ },
+ {
+  "ename": "manage-minor-mode",
+  "commit": "7a4e84530b4607a277fc3b678fe7b34b1c5e3b4f",
+  "sha256": "1y5a4r92b8zb2kvmsg6s3drg4q4g35jqj8nmfx4z5rrnck1r31ym",
+  "fetcher": "github",
+  "repo": "emacsorphanage/manage-minor-mode",
+  "unstable": {
+   "version": [
+    20200123,
+    1406
+   ],
+   "commit": "0dfab46a728a21c91658ffcb14101b182cf1b403",
+   "sha256": "1c17r1vz6181plbhb5nh36q6r2rwkrxhy45xmk7rjghmdd765f2r"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "d07d269586233787b4bea4c40df43d6357a40f58",
+   "sha256": "074bm7kfvslfl06zjrp7h0plbx6aqagzppczgnpslqa41373b8jx"
+  }
+ },
+ {
+  "ename": "manage-minor-mode-table",
+  "commit": "5171175442458748f355bf2eba51dde77a6cd480",
+  "sha256": "1mbjsd8av94r9qkb6xwpvyhkgm35cpbqm7j1mi1msc3mz3mzx7mz",
+  "fetcher": "github",
+  "repo": "jcs-elpa/manage-minor-mode-table",
+  "unstable": {
+   "version": [
+    20200302,
+    1517
+   ],
+   "deps": [
+    "manage-minor-mode"
+   ],
+   "commit": "cd126cbeb2e99c8d00b48310938a85448ebc2e1a",
+   "sha256": "1lk2rmv0qhzfyg57h461qdxgqciwqjggipl9i146m9bpjp7bjjvx"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "manage-minor-mode"
+   ],
+   "commit": "0636f376d9bc169bd1bd20c5847eb9f029b9467c",
+   "sha256": "1n4a9msfzspk0dfkr1i515ibrwg5yk3hyap2kym05yqpn4wq5xwp"
+  }
+ },
+ {
+  "ename": "mandm-theme",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0mvzn29ljd3az6axyqq88vkkf1vpcvslc1svlnbyrpdfinphd0mx",
+  "fetcher": "github",
+  "repo": "choppsv1/emacs-mandm-theme",
+  "unstable": {
+   "version": [
+    20191112,
+    1832
+   ],
+   "commit": "4e6ce4f222c1fa175d56e926628f37caa5f398ce",
+   "sha256": "05lb7izcwivjlyx6442hkskppr2158wg0b8g9k435xl083vxmpfw"
+  }
+ },
+ {
+  "ename": "mandoku",
+  "commit": "1aac4ae2c908de2c44624fb22a3f5ccf0b7a4912",
+  "sha256": "1pg7ir3y6yk92kfs5agbxapcxf7gy60m353rjv8g3kfkx5zyh3mv",
+  "fetcher": "github",
+  "repo": "mandoku/mandoku",
+  "unstable": {
+   "version": [
+    20180403,
+    1106
+   ],
+   "deps": [
+    "git",
+    "github-clone",
+    "magit",
+    "org"
+   ],
+   "commit": "d65dbaa329ecf931f4142be72862972ea6a24e63",
+   "sha256": "1iqwgzjy2vlrx0kdkjjfxxm097m17ay9r6966gyi8iiip99hjn50"
+  }
+ },
+ {
+  "ename": "mandoku-tls",
+  "commit": "c97d3f653057eab35c612109792884334be556fe",
+  "sha256": "0zny1l548rvjsbbzj47wysz6gk1sqxvpj215r3w84vw5dyrn78bz",
+  "fetcher": "github",
+  "repo": "mandoku/mandoku-tls",
+  "unstable": {
+   "version": [
+    20171118,
+    240
+   ],
+   "deps": [
+    "github-clone",
+    "helm",
+    "helm-charinfo",
+    "hydra",
+    "mandoku",
+    "org"
+   ],
+   "commit": "ffeebf5bd451ac1806ddfe1744fbbd036a56f902",
+   "sha256": "16399qifjj4hnfw4a62jwxfwnc7k8lmiy3bz8iwzlc91jjic7zdc"
+  }
+ },
+ {
+  "ename": "map-progress",
+  "commit": "5ed3335eaf0be7368059bcdb52c46f5e47c0c1a5",
+  "sha256": "0zc5vii72gbfwbb35w8m30c8r9zck971hwgcn1a4wjczgn4vkln7",
+  "fetcher": "github",
+  "repo": "tarsius/map-progress",
+  "unstable": {
+   "version": [
+    20190128,
+    16
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1fb916159cd054c233ce3c80d9d01adfae640297",
+   "sha256": "1hbk35l9aljp4jqg8cv67q6b2jbcx0g665j90fygxqibrf6r52a8"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1fb916159cd054c233ce3c80d9d01adfae640297",
+   "sha256": "1hbk35l9aljp4jqg8cv67q6b2jbcx0g665j90fygxqibrf6r52a8"
+  }
+ },
+ {
+  "ename": "map-regexp",
+  "commit": "927314443ecc00d94e7125de669e82832c5a125c",
+  "sha256": "0yiif0033lhaqggywzfizfia3siggwcz7yv4z7przhnr04akdmbj",
+  "fetcher": "github",
+  "repo": "tarsius/map-regexp",
+  "unstable": {
+   "version": [
+    20190128,
+    18
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "ae2d1c22f786ad987aef3e319925e80160a887a0",
+   "sha256": "1ybhizafdhzm7fg8s6gm13fbrz1vnrc7ifq8gvrrm89wl3qi5z7f"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "ae2d1c22f786ad987aef3e319925e80160a887a0",
+   "sha256": "1ybhizafdhzm7fg8s6gm13fbrz1vnrc7ifq8gvrrm89wl3qi5z7f"
+  }
+ },
+ {
+  "ename": "marcopolo",
+  "commit": "936a1cff601594575c5b550c5eb16e7dafc8a5ab",
+  "sha256": "1nbck1m7lhync7n474578d2g1zc72c841hi236xjbdd2lnxz3zz0",
+  "fetcher": "github",
+  "repo": "nlamirault/marcopolo",
+  "unstable": {
+   "version": [
+    20160421,
+    1004
+   ],
+   "deps": [
+    "dash",
+    "pkg-info",
+    "request",
+    "s"
+   ],
+   "commit": "9193aabdf12223087b5ed58f1507d5d8a24a4381",
+   "sha256": "1yc0sgzh1qprhdrzjqc88d6g4xvw80fblcvjl6yn6kihv1ymz091"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "dash",
+    "pkg-info",
+    "request",
+    "s"
+   ],
+   "commit": "ce6ad40d7feab0568924e3bd9659b76e3eecd55e",
+   "sha256": "0y4b69r2l6kvh7g8f1y9v1pdall3n668ci24lp04lcms6rxcrsnh"
+  }
+ },
+ {
+  "ename": "mark-multiple",
+  "commit": "7efe1814aa552d44c3db2cd7304569f2aae66287",
+  "sha256": "179wd9g0smm76k92n7j2vgg8gz5wn9lczrns5ggq2yhbc77j0gn4",
+  "fetcher": "github",
+  "repo": "magnars/mark-multiple.el",
+  "unstable": {
+   "version": [
+    20121118,
+    1554
+   ],
+   "commit": "f6a53c7c5283d640ae718f4548b0fda78877a375",
+   "sha256": "1x3anvy3hlmydxyfzr1rhaiy502yi1yz3v54sg8wc1w7jrvwaj29"
+  }
+ },
+ {
+  "ename": "mark-thing-at",
+  "commit": "bf5429d251d45fb9eb6d3c677b695f5298b1fb91",
+  "sha256": "1hzahlfxyqs47k406grxsi0qfgcx76884scnnlj2xirszd6j5mpz",
+  "fetcher": "github",
+  "repo": "plandes/mark-thing-at",
+  "unstable": {
+   "version": [
+    20200427,
+    1453
+   ],
+   "deps": [
+    "choice-program"
+   ],
+   "commit": "a69696635616c10184a3289d459d8eb532f04f47",
+   "sha256": "0iiwa5cv43177irm4kj9jzfr1jzkw0gw0rmy9vnnbggfgmklzxrq"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "choice-program"
+   ],
+   "commit": "a69696635616c10184a3289d459d8eb532f04f47",
+   "sha256": "0iiwa5cv43177irm4kj9jzfr1jzkw0gw0rmy9vnnbggfgmklzxrq"
+  }
+ },
+ {
+  "ename": "mark-tools",
+  "commit": "9ca36020392807aca9658d13481868d8b6c23d51",
+  "sha256": "1688y7lnzhwdva2ildjabzi10i87klfsgvs947i7gfgxl7jwhisq",
+  "fetcher": "github",
+  "repo": "stsquad/emacs-mark-tools",
+  "unstable": {
+   "version": [
+    20130614,
+    1025
+   ],
+   "commit": "a11b61effa90bd0abc876d12573674d36fc17f0c",
+   "sha256": "0k4zvbs09mkr8vdffv18s55rn9cyxldzav9vw04lm7v296k94ivz"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "0e7ac2522ac84155cab341dc49f7f0b81067133c",
+   "sha256": "0fcyspz7n97n84d9203mxgn8ar4rn52qa49s3vayfrbkn038j5qw"
+  }
+ },
+ {
+  "ename": "markdown-changelog",
+  "commit": "1ca43b6cf089d7c75b1fb483d8356a3ca7fec5bd",
+  "sha256": "0cnp6yfhsixl9nl7l6aa9vrnz71ylf6z25hmk7f6w64f7nxsdmr8",
+  "fetcher": "github",
+  "repo": "plandes/markdown-changelog",
+  "unstable": {
+   "version": [
+    20200120,
+    2253
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "1a2c3a4c3e4196f2b5dbb145b01b4bc435a93a96",
+   "sha256": "0dw9bz1iq8v816n0z4v9zc6nsrx4qzl99q2pj04f37s7x9vgmc4x"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "1a2c3a4c3e4196f2b5dbb145b01b4bc435a93a96",
+   "sha256": "0dw9bz1iq8v816n0z4v9zc6nsrx4qzl99q2pj04f37s7x9vgmc4x"
+  }
+ },
+ {
+  "ename": "markdown-mode",
+  "commit": "74610ec93d4478e835f8b3b446279efc0c71d644",
+  "sha256": "0gfb3hp87kpcrvxax3m5hsaclwwk1qmxc73cg26smzd1kjfwgz14",
+  "fetcher": "github",
+  "repo": "jrblevin/markdown-mode",
+  "unstable": {
+   "version": [
+    20200514,
+    16
+   ],
+   "commit": "705c77b9533970a425b09fb4c2fabf3b406117c7",
+   "sha256": "0i40pp0157azw2jkkr08f4cbal9ansp9dbscdbdzmlp9lf27kqjs"
+  },
+  "stable": {
+   "version": [
+    2,
+    3
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "cde5c5d2bcce470c494b76e23cfe1364b6291c20",
+   "sha256": "1zm1j4w0f3h01bmmpsv4j4mh6i13nnl8fcqlj2hsa1ncy1lgi8q7"
+  }
+ },
+ {
+  "ename": "markdown-mode+",
+  "commit": "ca7bf43ef8893bf04e9658390e306ef69e80a156",
+  "sha256": "1535kcj9nmcgmk2448jxc0jmnqy7f50cw2ngffjq5w8bfhgf7q00",
+  "fetcher": "github",
+  "repo": "milkypostman/markdown-mode-plus",
+  "unstable": {
+   "version": [
+    20170320,
+    2104
+   ],
+   "deps": [
+    "markdown-mode"
+   ],
+   "commit": "411d079f4430a33c34ec0bbcb1535fe1145a2509",
+   "sha256": "0427cxvykmz8kz1gnn27yc9c4z8djyy6m9qz6wbd4np1cgqlmly2"
+  },
+  "stable": {
+   "version": [
+    0,
+    8
+   ],
+   "deps": [
+    "markdown-mode"
+   ],
+   "commit": "f35e63284c5caed19b29501730e134018a78e441",
+   "sha256": "1adl36fj506kgfw40gpagzsd7aypfdvy60141raggd5844i6y96r"
+  }
+ },
+ {
+  "ename": "markdown-preview-eww",
+  "commit": "d9b3ad97a193c41068ca184b4835fa7a7a0ebc9c",
+  "sha256": "0j6924f84is41dspib68y5lnz1f8nm7pqyhv47alxra50cjrpxnx",
+  "fetcher": "github",
+  "repo": "niku/markdown-preview-eww",
+  "unstable": {
+   "version": [
+    20160111,
+    1502
+   ],
+   "commit": "5853f836425c877c8a956501f0adda137ef1d3b7",
+   "sha256": "1i5gr3j9dq41p2zl4bfyvzv6i5z7hgrxzrycmbdc3s7nja36k9z4"
+  }
+ },
+ {
+  "ename": "markdown-preview-mode",
+  "commit": "d3c5d222cf0d7eca6a4e3eb914907f8ca58e40f0",
+  "sha256": "1cam5wfxca91q3i1kl0qbdvnfy62hr5ksargi4430kgaz34bcbyn",
+  "fetcher": "github",
+  "repo": "ancane/markdown-preview-mode",
+  "unstable": {
+   "version": [
+    20181213,
+    1339
+   ],
+   "deps": [
+    "cl-lib",
+    "markdown-mode",
+    "web-server",
+    "websocket"
+   ],
+   "commit": "f98d9114ca87e3e8e5ce70e601d13061eda15415",
+   "sha256": "1d1id99gagymvzdfa1mwqh8y3szm8ii47rpijkfi1qnifjg5jaq9"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "markdown-mode",
+    "web-server",
+    "websocket"
+   ],
+   "commit": "f98d9114ca87e3e8e5ce70e601d13061eda15415",
+   "sha256": "1d1id99gagymvzdfa1mwqh8y3szm8ii47rpijkfi1qnifjg5jaq9"
+  }
+ },
+ {
+  "ename": "markdown-toc",
+  "commit": "4db1e90be8e34d5ad0c898be10dfa5cd95ccb921",
+  "sha256": "0slky735yzmbfi4ld264vw64b4a4nllhywp19ya0sljbsfycbihv",
+  "fetcher": "github",
+  "repo": "ardumont/markdown-toc",
+  "unstable": {
+   "version": [
+    20200502,
+    742
+   ],
+   "deps": [
+    "dash",
+    "markdown-mode",
+    "s"
+   ],
+   "commit": "a9f13eecd0c7d8be960055dbc2d6f5d3fe6f40ca",
+   "sha256": "01xls8jd6l8c8xiyx8l15j5ca96gsln1m32prnhw4sfmrlw996h6"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    4
+   ],
+   "deps": [
+    "dash",
+    "markdown-mode",
+    "s"
+   ],
+   "commit": "e6de0f5c4c6dfdb8da37b34a16fe7e8edc88765c",
+   "sha256": "1xqrrf4gwcr64xgbyvgplmcrcl7knfsm0v8yzrhscq65pb7zf3zj"
+  }
+ },
+ {
+  "ename": "markdownfmt",
+  "commit": "16cee5fe003e3afc7daf6858ed83843b52e44901",
+  "sha256": "1wzsw90z988bm94cw4jw5gzjcicgiz4qgn1nsdm8nim9rp43bj17",
+  "fetcher": "github",
+  "repo": "nlamirault/emacs-markdownfmt",
+  "unstable": {
+   "version": [
+    20160609,
+    1241
+   ],
+   "commit": "187a74eb4fd9e8520ce08da42d1d292b9af7f2b7",
+   "sha256": "01rxl997rb7f71mbvygavsxaq2vr17f2nnpbg7i551lg82xrsbb4"
+  }
+ },
+ {
+  "ename": "markless",
+  "commit": "5542e142d47f6f52839a44b8ee16327f88869f50",
+  "sha256": "1a5kp46xj4b5kgcypacxcwhjjwi4m7f6shdda8l8my3s3x8ji5bj",
+  "fetcher": "github",
+  "repo": "shirakumo/markless.el",
+  "unstable": {
+   "version": [
+    20190306,
+    1002
+   ],
+   "commit": "75fdef45df96978e9326ea4d9bf4e534a250c4c0",
+   "sha256": "0fxvpd4gij78d53czyzskfly3wljnad84vnjv6lv14pcz2w9z3y0"
+  }
+ },
+ {
+  "ename": "markup",
+  "commit": "a75c955ad6b2f68b8933329e545625d948f6f8f4",
+  "sha256": "0yw4b42nc2n7nanqvj596hwjf0p4qc7x6g2d9g5cwi7975iak8pf",
+  "fetcher": "github",
+  "repo": "leoc/markup.el",
+  "unstable": {
+   "version": [
+    20170420,
+    1129
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "876da2d3f23473475bb0fd0a1480ae11d2671291",
+   "sha256": "0rggadka5aqgrik3qky6s75s5yb5bfj6fcpxjz1iyrwi0fka0akd"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "876da2d3f23473475bb0fd0a1480ae11d2671291",
+   "sha256": "0rggadka5aqgrik3qky6s75s5yb5bfj6fcpxjz1iyrwi0fka0akd"
+  }
+ },
+ {
+  "ename": "markup-faces",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "06fawlv4ih2lsmk7x6h9p5rppl8vw2w3nvlss95kb8fj5fwf7mw9",
+  "fetcher": "github",
+  "repo": "sensorflo/markup-faces",
+  "unstable": {
+   "version": [
+    20141110,
+    817
+   ],
+   "commit": "98a807ed82473eb41c6a201ed7ef816d6bcd67b0",
+   "sha256": "1w6i1m7xdr9cijnmdj35cl99r12vl83qws0qlfhrgvisilshnr27"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "c43612633c6c161857a3bab5752ae192bb03f5f3",
+   "sha256": "0nk2rm14ccwrh1aaxzm80rllsz8g38h9w52m0pf3nnwh6sa757nk"
+  }
+ },
+ {
+  "ename": "marmalade-client",
+  "commit": "834d6d8444169e1e9b66c963a4c2e03ff658e154",
+  "sha256": "0llwqwwxrf7qdkpdb03ij0iinll0vc9qr557zyr3bn5zb4fad1sq",
+  "fetcher": "github",
+  "repo": "nicferrier/emacs-marmalade-upload",
+  "unstable": {
+   "version": [
+    20141231,
+    2007
+   ],
+   "deps": [
+    "gh",
+    "kv",
+    "web"
+   ],
+   "commit": "f315dea57e4fbebd9ee0668c0bafd4c45c7b754a",
+   "sha256": "017k109nfif5mzkj547py8pdnzlr4sxb74yqqsl944znflq67blr"
+  }
+ },
+ {
+  "ename": "marquee-header",
+  "commit": "6c2287c7b4c543e92ccfab120388b2c05174d2db",
+  "sha256": "0hkrxx2gfilqhpjn7b0p3vvy8n4rqng3ac49kz7v45abqz5k79c0",
+  "fetcher": "github",
+  "repo": "jcs-elpa/marquee-header",
+  "unstable": {
+   "version": [
+    20191017,
+    1017
+   ],
+   "commit": "cb694a9eee79ea807dbc1587c47e209dd7e250fc",
+   "sha256": "0h191mip2yjvj1ha6cqvghd45g5ccd3p0qsvh9l2g0gg9d2salxk"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    8
+   ],
+   "commit": "77e4becd8a812377eb219c77641a22a77b4fdfef",
+   "sha256": "0a51aw567gkdxz58v7h2vdfs2rmnvyllqhq4a1yy4gslr0xsqk9c"
+  }
+ },
+ {
+  "ename": "marshal",
+  "commit": "203f2061c5c7d4aefab3175de5e0538f12158ee3",
+  "sha256": "17ikd8f1k42f28d4v5dn83zb44bsx7g336db60q068w6z8d4jbgl",
+  "fetcher": "github",
+  "repo": "sigma/marshal.el",
+  "unstable": {
+   "version": [
+    20180124,
+    1239
+   ],
+   "deps": [
+    "eieio",
+    "ht",
+    "json"
+   ],
+   "commit": "f038689cbd5b3680b80b44edd0c7a63ca3038e26",
+   "sha256": "1n79im1r7h1ilvppn9alqwl96zhyxbm5hk7kbmqh022dggw0cx15"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    2
+   ],
+   "deps": [
+    "eieio",
+    "ht",
+    "json"
+   ],
+   "commit": "d714219aeb388ded88582c47940f2c6febae333c",
+   "sha256": "1mr5p2yiad1k15byrlk0a784kj7rvibpn4li5phk4rnm0zg1xy9s"
+  }
+ },
+ {
+  "ename": "maruo-macro-mode",
+  "commit": "d0c17243b6c62e179aefc25d5f2ca43e5f6c66c1",
+  "sha256": "1h7pclpqkkgi8z9yp5n79ffna809yf336bz6082l541xc06pmvcv",
+  "fetcher": "github",
+  "repo": "zonuexe/maruo-macro-mode.el",
+  "unstable": {
+   "version": [
+    20160616,
+    1349
+   ],
+   "commit": "8fc9a38ad051eafa8eb94038711acc52c5d1d8d5",
+   "sha256": "0r005yap50jf6b5jc7314ds17g1nn2irn1agidi74fbrwfbndxgm"
+  }
+ },
+ {
+  "ename": "masm-mode",
+  "commit": "3f1961f11a811045095db15d650eae7469d8670c",
+  "sha256": "0zlc8gc0xdqgzs1ywix236wh5nfnsmab9s9x1hpfpzkg6sjzv8wr",
+  "fetcher": "github",
+  "repo": "YiGeeker/masm-mode",
+  "unstable": {
+   "version": [
+    20200308,
+    1450
+   ],
+   "commit": "626b9255c2bb967a53d1d50be0b98a1bcae3250c",
+   "sha256": "1k6wcksddy0k02hrqfaifr61c09pg6kpcqpmfm9zkb444pdqjn17"
+  }
+ },
+ {
+  "ename": "mastodon",
+  "commit": "809d963b69b154325faaf61e54ca87b94c1c9a90",
+  "sha256": "1bsyf4j6zs9gin0k7p22yv5gaqd6m3vdc2fiagfbs7gxsmhb6p4i",
+  "fetcher": "github",
+  "repo": "jdenen/mastodon.el",
+  "unstable": {
+   "version": [
+    20190305,
+    344
+   ],
+   "commit": "5095797ef32b922d2a624fa6beb970b5e9cf5ca0",
+   "sha256": "0hwax6y9dghqwsbnb6f1bnc7gh8xsh5cvcnayk2sn49x8b0zi5h1"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    0
+   ],
+   "commit": "5095797ef32b922d2a624fa6beb970b5e9cf5ca0",
+   "sha256": "0hwax6y9dghqwsbnb6f1bnc7gh8xsh5cvcnayk2sn49x8b0zi5h1"
+  }
+ },
+ {
+  "ename": "material-theme",
+  "commit": "d31ababaa50061e767605c979a3f327a654e564b",
+  "sha256": "1d259avldc5fq121xrqv53h8s4f4bp6b89nz2rvjhygz7f8hargq",
+  "fetcher": "github",
+  "repo": "cpaulik/emacs-material-theme",
+  "unstable": {
+   "version": [
+    20171123,
+    1840
+   ],
+   "commit": "b66838d220ad380a16da1d8878936974b26f815d",
+   "sha256": "128zn4078b2av3vs8vrqa73fb53vrm64lqg0ks6kymnnmyvcz8v2"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "commit": "b66838d220ad380a16da1d8878936974b26f815d",
+   "sha256": "128zn4078b2av3vs8vrqa73fb53vrm64lqg0ks6kymnnmyvcz8v2"
+  }
+ },
+ {
+  "ename": "math-symbol-lists",
+  "commit": "fadff01600d57f5b9ea9c0c47ed109e058114998",
+  "sha256": "01j11k29acj0b1pcapmgi2d2s3p50bkms21i2qcj0cbqgz8h6s27",
+  "fetcher": "github",
+  "repo": "vspinu/math-symbol-lists",
+  "unstable": {
+   "version": [
+    20200131,
+    2333
+   ],
+   "commit": "1cf7e2885f3352f55852ee9eba26c7cb5a7cd74b",
+   "sha256": "0c2fs87vsxx00svzx09x90p8sc1zm4mj24ab0bvqf7ghpl5qgwa8"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "commit": "590d9f09f8ad9aab747b97f077396a2035dcf50f",
+   "sha256": "1r2i600356k8g0l53s4b5xc24flpka664i8f23zbj4h7gk1g2787"
+  }
+ },
+ {
+  "ename": "math-symbols",
+  "commit": "d7b0799bddbbbecd12bc1589b56a6250acf76407",
+  "sha256": "0sx9cgyk56npjd6z78y9cldbvjl5ipl7k1nc1sylg1iggkbwxnqx",
+  "fetcher": "github",
+  "repo": "kawabata/math-symbols",
+  "unstable": {
+   "version": [
+    20170818,
+    1459
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "3f8b466f002e1b28ddbe9a6f236c9a1352adb17d",
+   "sha256": "0r63acgicb43p05gsiz98m7077sj72c1miz18fi8qbzi02p9qjr7"
+  }
+ },
+ {
+  "ename": "matlab-mode",
+  "commit": "08b700ce0068646b51cd856df98ca583e21da8a1",
+  "sha256": "1qxbcklmhwn4478chnf9n8hwc4qznjb7y8cj78a179hhws70l97j",
+  "fetcher": "git",
+  "url": "https://git.code.sf.net/p/matlab-emacs/src",
+  "unstable": {
+   "version": [
+    20200213,
+    930
+   ],
+   "commit": "e14d97df706049ea2e2d6e5b515fdbd08cd94dd3",
+   "sha256": "0zi873fpskv18k0xs9rgb2yfj49sga3yyq1b6xxc4ik0r45wi9cz"
+  }
+ },
+ {
+  "ename": "maude-mode",
+  "commit": "9c33b8bd62391767a63f57786750e38cbc262bda",
+  "sha256": "1w5v3r905xkwchkm2gzvzpswba5p2m7hqpyg9fzq2ldlr8kk7ah3",
+  "fetcher": "github",
+  "repo": "rudi/maude-mode",
+  "unstable": {
+   "version": [
+    20160222,
+    1607
+   ],
+   "commit": "c9543bb8a172fa77af592388e7f520a4a6d38987",
+   "sha256": "1sn9bdaq3mf2vss5gzmxhnp9fz43cakxh36qjdgqrvx302nlnv52"
+  }
+ },
+ {
+  "ename": "maven-test-mode",
+  "commit": "bdc7f677c53431542cb8d7c95666d021dead2b98",
+  "sha256": "1k9w51rh003p67yalzq1w8am40nnr2khyyb5y4bwxgpms8z391fm",
+  "fetcher": "github",
+  "repo": "rranelli/maven-test-mode",
+  "unstable": {
+   "version": [
+    20141220,
+    557
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "a19151861df2ad8ae4880a2e7c86ddf848cb569a",
+   "sha256": "1xn2yyr8mr90cynbxgv0h5v180pzf0ydnjr9spg34mrdicqlki6c"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    5
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "f79409907375591283291eb96af4754b1ccc0e6f",
+   "sha256": "0x92b1qrhyrdh0z0xriyjc12h0wpk16x4yawj5i828ca6mz0qh5g"
+  }
+ },
+ {
+  "ename": "maxframe",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1lxj60qcvv8vakdq79k1brzv3ki74kajrx8620dzx76bnfkryxk8",
+  "fetcher": "github",
+  "repo": "rmm5t/maxframe.el",
+  "unstable": {
+   "version": [
+    20170120,
+    1705
+   ],
+   "commit": "daeb5c35bb677a23df69336b4843ea59517e57ed",
+   "sha256": "1qpzha7j7g5fw1lazw5l6mspgrnsnqybqgpq48icbx2vvil9y3q7"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "commit": "4f1dbbe68048864037eae277b9280b90fd701ff1",
+   "sha256": "08gbkd8wln89j9yxp0zzd539hbwy1db31gca3vxxrpszixx8280y"
+  }
+ },
+ {
+  "ename": "mb-url",
+  "commit": "dd9a8ff6e094b061a7b9d790df1fd4086c5d0a9d",
+  "sha256": "1nf8ssan00qsn3d4dc6h6qzdwqzh977qb5d2m33kiwi6qb98988h",
+  "fetcher": "github",
+  "repo": "dochang/mb-url",
+  "unstable": {
+   "version": [
+    20191006,
+    1930
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "7230902e1f844e0a1388f741e9ae6260cda3de69",
+   "sha256": "09qsc4dl9ngl11i92bfslpl1b1i5ksnpkvfp2hhxn3hwfpgfh64s"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "7230902e1f844e0a1388f741e9ae6260cda3de69",
+   "sha256": "09qsc4dl9ngl11i92bfslpl1b1i5ksnpkvfp2hhxn3hwfpgfh64s"
+  }
+ },
+ {
+  "ename": "mbe",
+  "commit": "0a8a16e485d608dbd59151d77e252048a49f9d25",
+  "sha256": "0h18mbcjy8nh4gl12kg2v8x6ps320yk7sbgq5alqnx2shp80kri3",
+  "fetcher": "github",
+  "repo": "ijp/mbe.el",
+  "unstable": {
+   "version": [
+    20151126,
+    1134
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "bb10aa8f26bb7e9b1d5746934c94edb00402940c",
+   "sha256": "1zywygdgnp2zr8fxqhl0cbrgbl43931k936b9imhqi96p6622pb6"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b022030d6e26198bb8a93a5b0bfe7aa891cd59ec",
+   "sha256": "00gwd2jf5ncgyay5w2jc2mhv18jf4ydnzpfkxaxw9zjbdxg4ym2i"
+  }
+ },
+ {
+  "ename": "mbo70s-theme",
+  "commit": "b8d0c1050b3319e136fe75903ae3612a52790189",
+  "sha256": "1abx2rw09xxp122ff7i9sry5djd4l6vn4lfzxs92rknjzkyc40pb",
+  "fetcher": "github",
+  "repo": "emacsfodder/emacs-mbo70s-theme",
+  "unstable": {
+   "version": [
+    20170808,
+    1315
+   ],
+   "commit": "bed3db8965708ed4e9482b224a9b084765c052f2",
+   "sha256": "19hha9xwfqvdgsws69x0mcm93yfllp44hdl1xw9zlhj8f4ihizh5"
+  }
+ },
+ {
+  "ename": "mbsync",
+  "commit": "3ef6ffa53bb0ce2ba796555e39f59534fc134aa5",
+  "sha256": "1q5g76mspi24zwbs7h4m8bmkhab4drskha4d9b516w1f1cyg6hb6",
+  "fetcher": "github",
+  "repo": "dimitri/mbsync-el",
+  "unstable": {
+   "version": [
+    20200128,
+    1053
+   ],
+   "commit": "d3c81da81ce5b154c0d048047a47277338721a70",
+   "sha256": "10xxgvzjb7bl3lzgjkdsnnkd9wphkc2pm621agyjlayzcjnldz5p"
+  }
+ },
+ {
+  "ename": "mc-calc",
+  "commit": "a8cded39a6c14d34f618aba136d48e162a70c433",
+  "sha256": "1lphlavndz0m3pw2kcrbqkavvcgmzn2p3av0h60ghndz00psqbys",
+  "fetcher": "github",
+  "repo": "hatheroldev/mc-calc",
+  "unstable": {
+   "version": [
+    20200420,
+    1836
+   ],
+   "deps": [
+    "multiple-cursors"
+   ],
+   "commit": "74a046a5728919a4d1135ca62738326b0dde278c",
+   "sha256": "0498088pgbpywqdla8mzhpq4izzbdbqwq9cjzg0050y598pinpqq"
+  }
+ },
+ {
+  "ename": "mc-extras",
+  "commit": "12747bb8603ebc09ce0873f3317a99e34d818313",
+  "sha256": "0b110x6ygc95v5pb9lk1i731x5s6dagl5afzv37l1qchys36xrym",
+  "fetcher": "github",
+  "repo": "knu/mc-extras.el",
+  "unstable": {
+   "version": [
+    20181109,
+    1735
+   ],
+   "deps": [
+    "multiple-cursors"
+   ],
+   "commit": "053abc52181b8718559d7361a587bbb795faf164",
+   "sha256": "16y48qrd20m20vypvys5jp4v4gc1qrqlkm75s1pk1r68i9zrw481"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    4
+   ],
+   "deps": [
+    "multiple-cursors"
+   ],
+   "commit": "f0ba639e9b18cc56e80ae45bbb2b694dbad9171a",
+   "sha256": "0d6ncj6zd0lfsdpffbh3l25ycjw5hn0rwi5znp5hpl06b1ycyk4s"
+  }
+ },
+ {
+  "ename": "md-readme",
+  "commit": "5408d7c12c189d2b5ab9fbb02276de334851e3c8",
+  "sha256": "1krq0f79jjrlihr2aqq87pxdqixv2zdjw4hm732sz79g996yxyw3",
+  "fetcher": "github",
+  "repo": "thomas11/md-readme",
+  "unstable": {
+   "version": [
+    20191112,
+    1943
+   ],
+   "commit": "ca99f44de11fab18d1f50d4b1722f2ceee3c814d",
+   "sha256": "1llwvcbwfj5mw100rx2hp8vcr7kawpl18nvy6vxl6brqw7ka0d2s"
+  }
+ },
+ {
+  "ename": "md4rd",
+  "commit": "48d4a3b3337e16e68631409d1de0ce67ae22b837",
+  "sha256": "0ayr5qw0cz7bd46djfhm8slr2kfgssi5bsnzqcasr8n4lyg9jvfc",
+  "fetcher": "github",
+  "repo": "ahungry/md4rd",
+  "unstable": {
+   "version": [
+    20191113,
+    2108
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "hierarchy",
+    "request",
+    "s",
+    "tree-mode"
+   ],
+   "commit": "ff7d95fc0fdf46a3cb6b3bbe52396dc4e474b8fd",
+   "sha256": "1p8g5pbczg1n1pfibxwpbg1qsyrqi131awxkvl98w8ynb9zi1fqs"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "hierarchy",
+    "request",
+    "s",
+    "tree-mode"
+   ],
+   "commit": "443c8059af4925d11c93a1293663165c52472f08",
+   "sha256": "1n6g6k4adzkkn1g7z4j27s35xy12c1fg2r08gv345ddr3wplq4ri"
+  }
+ },
+ {
+  "ename": "mediawiki",
+  "commit": "865e0ba1dbace58784181d214000d090478173bd",
+  "sha256": "17cbrzfdp6jbbf74mn2fi1cwv7d1hvdbw9j84p43jzscnaa5ikx6",
+  "fetcher": "github",
+  "repo": "hexmode/mediawiki-el",
+  "unstable": {
+   "version": [
+    20170813,
+    555
+   ],
+   "commit": "8473e12d1839f5287a4227586bf117dad820f867",
+   "sha256": "03rpj3yrk3i1l9yjnamnx38idn6y4zi9zg53bc83sx3g2b4m5v04"
+  },
+  "stable": {
+   "version": [
+    2,
+    2,
+    9
+   ],
+   "commit": "8473e12d1839f5287a4227586bf117dad820f867",
+   "sha256": "03rpj3yrk3i1l9yjnamnx38idn6y4zi9zg53bc83sx3g2b4m5v04"
+  }
+ },
+ {
+  "ename": "meghanada",
+  "commit": "4c75c69b2f00be9a93144f632738272c1e375785",
+  "sha256": "10f1fxma3lqcyv78i0p9mjpi79jfjd5lq5q60ylpxqp18nrql1s4",
+  "fetcher": "github",
+  "repo": "mopemope/meghanada-emacs",
+  "unstable": {
+   "version": [
+    20200506,
+    743
+   ],
+   "deps": [
+    "company",
+    "flycheck",
+    "yasnippet"
+   ],
+   "commit": "e119c7b3271281d60892b80a0cc6488503baf38f",
+   "sha256": "11nvhvxm39pcxjknzik6n07l309x9r5maf24pnlgk2wxkr28xmzs"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    0
+   ],
+   "deps": [
+    "company",
+    "flycheck",
+    "yasnippet"
+   ],
+   "commit": "83ee6c6520a8cf063742e1b16fef3efebbcf8b73",
+   "sha256": "1hk4953dk93pa7srlgnjh9pskpl67f90gm9g0iv9zffwsxw4kwaw"
+  }
+ },
+ {
+  "ename": "melancholy-theme",
+  "commit": "8b8f708d1300d401697c099709718fcb70d5db1f",
+  "sha256": "1wihbv44234lwsgp5w4hmmi3pgxbcfjvs1nclv0yg600z9s8sn8w",
+  "fetcher": "github",
+  "repo": "techquila/melancholy-theme",
+  "unstable": {
+   "version": [
+    20200305,
+    133
+   ],
+   "commit": "ffed56cb756f8acba93ce7edc664c950d75927d9",
+   "sha256": "1wcvd68dm453rvhjm89vv2faljgyszwyc4g95q7ydvhk3h1gck2p"
+  }
+ },
+ {
+  "ename": "mellow-theme",
+  "commit": "641d1959bd31598fcdacd39a3d1bb077dcccfa5c",
+  "sha256": "0kl1psykx7akxwabszk4amszh3zil8ia4bfbjjvr6h9phgx66pb0",
+  "fetcher": "github",
+  "repo": "emacsfodder/emacs-mellow-theme",
+  "unstable": {
+   "version": [
+    20170808,
+    1317
+   ],
+   "commit": "2bdf18f05f5212b6f269d9a94afe2cf201766891",
+   "sha256": "0cj9lkqgiaq1s2k9ky93jgv5pfbmjznsd54r3iqkiy1zshpkir68"
+  }
+ },
+ {
+  "ename": "melpa-upstream-visit",
+  "commit": "c110538a1ae2419505ea8f144ef7de2d67cad568",
+  "sha256": "0j4afy9ipzr7pwkij8ab207mabd7srganlyyif9h1hvclj9svdmf",
+  "fetcher": "github",
+  "repo": "laynor/melpa-upstream-visit",
+  "unstable": {
+   "version": [
+    20130720,
+    1033
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "7310c74fdead3c0f86ad6eff76cf989e63f70f66",
+   "sha256": "12cp56ppmwpdgf5afx7hd2qb8d1qq8z27191fbbf5zqw8cq5zkpd"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "7310c74fdead3c0f86ad6eff76cf989e63f70f66",
+   "sha256": "12cp56ppmwpdgf5afx7hd2qb8d1qq8z27191fbbf5zqw8cq5zkpd"
+  }
+ },
+ {
+  "ename": "memento-mori",
+  "commit": "a2561f33ee4f19fe191b9ac2662ac931a5b91395",
+  "sha256": "0k7gird1v7vgjbbldpjkdvgs55v7kb8bpr2kkvawm3kswh1sw11v",
+  "fetcher": "github",
+  "repo": "lassik/emacs-memento-mori",
+  "unstable": {
+   "version": [
+    20190628,
+    2147
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b99c5ff526079fc5a1e1be097534855da176bc2b",
+   "sha256": "15l993g6ihx3m634y3wdzx0wl4546qdr1xr723qxcvxi0ph16kbx"
+  }
+ },
+ {
+  "ename": "memoize",
+  "commit": "6cc9be5bbcff04de5e6d3bb8c47d202fd350989b",
+  "sha256": "0mzz3hghnbkmxf9wgjqv3sbyxyqqzvvscazq9ybb0b41qrzm73s6",
+  "fetcher": "github",
+  "repo": "skeeto/emacs-memoize",
+  "unstable": {
+   "version": [
+    20200103,
+    2036
+   ],
+   "commit": "51b075935ca7070f62fae1d69fe0ff7d8fa56fdd",
+   "sha256": "102f34iw2vslimihf557vwn5599xcw1vf422vypdg3ilk6s8z2ax"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "636defefa9168f90bce6fc27431352ac7d01a890",
+   "sha256": "04qgnlg4x6va7x364dhj1wbjmz8p5iq2vk36mn9198k2vxmijwzk"
+  }
+ },
+ {
+  "ename": "memolist",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0nvp38qbzcl6dcayjndw32d3r9h8vf2n29i678s1yr280ll8xw6w",
+  "fetcher": "github",
+  "repo": "mikanfactory/memolist.el",
+  "unstable": {
+   "version": [
+    20150804,
+    1721
+   ],
+   "deps": [
+    "ag",
+    "markdown-mode"
+   ],
+   "commit": "c437a32d3955f859d9bbcbadf0911bbe27d877ff",
+   "sha256": "0avpjmymjwqnaim96c637wb6ch3iyanwdvmn6x83iynvkpr2nm9l"
+  }
+ },
+ {
+  "ename": "mentor",
+  "commit": "083de4bd25b6b013a31b9d5ecdffad139a4ba91e",
+  "sha256": "0nkf7f90m2qf11l97zwvb114yrpbqk1xxr2bh2nvbx8m1c8nad9s",
+  "fetcher": "github",
+  "repo": "skangas/mentor",
+  "unstable": {
+   "version": [
+    20190511,
+    1638
+   ],
+   "deps": [
+    "async",
+    "cl-lib",
+    "seq",
+    "xml-rpc"
+   ],
+   "commit": "b5e441b7dc077d5532a3818b5441e52baefad839",
+   "sha256": "1xrhg1jwmzlcqdk2w92s7ghbma1pfzjc48akl3d2cixxz3ha2ca2"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    4
+   ],
+   "deps": [
+    "async",
+    "cl-lib",
+    "seq",
+    "xml-rpc"
+   ],
+   "commit": "9415472470ff23ee9600d94123c51c455d63018d",
+   "sha256": "05gfprcrh9p06arsni58nf60inlf1zbd18i678r9xd4q0v35k491"
+  }
+ },
+ {
+  "ename": "meow",
+  "commit": "b5515ad6f1b8e8296fba5bd91d7adf5e1fc229b4",
+  "sha256": "1s9wqmxg1g8crhsvwn4fh3hkn7pyfj5x71fal9yl0fk6gx59n1p0",
+  "fetcher": "github",
+  "repo": "DogLooksGood/meow",
+  "unstable": {
+   "version": [
+    20200510,
+    154
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "56e7ba100eb0ae92a37bcd0fcce77affa26d2fb8",
+   "sha256": "1jz0jpdr4imzs7rr21q19j59y04kw518qpisrrsmyw6fywi8k22g"
+  }
+ },
+ {
+  "ename": "merlin",
+  "commit": "9338298a79b7f2d654df90b0f553aeed1428de13",
+  "sha256": "0r4wc5ann6239bagj364yyzw4y3lcpkl5nnn0vmx4hgkwdg509fn",
+  "fetcher": "github",
+  "repo": "ocaml/merlin",
+  "unstable": {
+   "version": [
+    20191025,
+    851
+   ],
+   "commit": "db957668fa2be7b9d076f0c066178a65c48dd085",
+   "sha256": "0abg2c0lcdiwmf1jlybrjw0n17hwqfmj29r7gbvrsm16snf27rag"
+  },
+  "stable": {
+   "version": [
+    3,
+    3,
+    4
+   ],
+   "commit": "21f4ba18acd9ca3dc5c8263acfc46042a6aa557e",
+   "sha256": "1sp1g70wy8qp34641hlpk5xaf7vv359xgwc7z8cw7yvj39mn98va"
+  }
+ },
+ {
+  "ename": "merlin-eldoc",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "0bx383nxd97as0d362n1jn62k2rypxvxhcjasgwf0cr8vxr244fp",
+  "fetcher": "github",
+  "repo": "Khady/merlin-eldoc",
+  "unstable": {
+   "version": [
+    20190830,
+    517
+   ],
+   "deps": [
+    "merlin"
+   ],
+   "commit": "db7fab1eddfe34781b7e79694f8923b285698032",
+   "sha256": "1c13cgmi8z69b5imd9zlagfgrsdl3qv73n24wgc4ih99w1c7sc08"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "deps": [
+    "merlin"
+   ],
+   "commit": "bbb1a10f2131c09a7f7f844d4da98efd77f927ae",
+   "sha256": "11gggay8srycpckclqvcmad6ym3lx2sxgj670z89br91jdwmkr2f"
+  }
+ },
+ {
+  "ename": "mermaid-mode",
+  "commit": "8729575400003db47638b4c45c425608e15c333d",
+  "sha256": "1r9dv10p2bahygz1f151bp481289b184d80jbh575pdmlxkqd79f",
+  "fetcher": "github",
+  "repo": "abrochard/mermaid-mode",
+  "unstable": {
+   "version": [
+    20200420,
+    2258
+   ],
+   "deps": [
+    "f"
+   ],
+   "commit": "b8673381ff8bbfbdf3f165ae928e7c775a3117e9",
+   "sha256": "14w2mwqiksmng8pzm4l0c458q0i2m3p4wcfvvmagyqk6mfl05m4l"
+  }
+ },
+ {
+  "ename": "meson-mode",
+  "commit": "4702a31ffd6b9c34f96d151f2611a1bfb25baa88",
+  "sha256": "16yg217ghx6pvlxha2swznkg12c2a9hhyi0hnsbqdj2ijcdzca80",
+  "fetcher": "github",
+  "repo": "wentasah/meson-mode",
+  "unstable": {
+   "version": [
+    20200216,
+    2254
+   ],
+   "commit": "bc6c09136c7f7de6f4b6ce9294e9b998e24b93c7",
+   "sha256": "113vj7z8zk80653ldq4sfxkk3pja8yjscywb0cwpkaq0088n5jf7"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "d80ef159242402609a52c29949bd550c8442db53",
+   "sha256": "1720b3hpfqd989zrgcns51jbjrv4vzl9di9mccl55vkmkbqzfin0"
+  }
+ },
+ {
+  "ename": "message-attachment-reminder",
+  "commit": "7412f7428d16955968cd78de3bb3abcbbcd5c508",
+  "sha256": "0hwah27sw3myka86gywjjncp0i8lnqiagklxdh6z6z4hl9jk105r",
+  "fetcher": "github",
+  "repo": "alexmurray/message-attachment-reminder",
+  "unstable": {
+   "version": [
+    20200428,
+    124
+   ],
+   "commit": "a8b761d665c17694a04eccf1c2bc135d35bdf482",
+   "sha256": "0rg34w1nsvmwxn9z3aipj32fk26fykzqxkr0x7am7icigg02dsbn"
+  }
+ },
+ {
+  "ename": "messages-are-flowing",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0v74b7cjj87kncndxfpfs6dcc4jcl18wpbirffl7dw6mac2anw6m",
+  "fetcher": "github",
+  "repo": "legoscia/messages-are-flowing",
+  "unstable": {
+   "version": [
+    20191029,
+    954
+   ],
+   "commit": "d582a564a63b7b90764ffc5c618bc5300225d0ab",
+   "sha256": "0lgh8vi6ya7mnzc3ik8189kx6lqh4xfnsxpn7r52q7745x4d8zb1"
+  }
+ },
+ {
+  "ename": "meta-presenter",
+  "commit": "b73e9424515b3ddea220b786e91c57ee22bed87f",
+  "sha256": "0f70cfa91wavchlx8d9hdlgq90cmnylhbg2dbw603rzjkyvslp5d",
+  "fetcher": "github",
+  "repo": "myTerminal/meta-presenter",
+  "unstable": {
+   "version": [
+    20190414,
+    1720
+   ],
+   "commit": "704a2e0f2a3e6bb72578e00eccb772dfcf0670fc",
+   "sha256": "1hka4c87zdgqjawlmsfd7wi6rbc03qfp996ydrj84kz8saq7gf89"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "3d8c762a7dd7ac39032a3601bd6a717f206e670d",
+   "sha256": "0r9zzmglmkkmxcqh0pdlg279mpd524k2rwn56kyvj5i3i8zw9rpl"
+  }
+ },
+ {
+  "ename": "metalheart-theme",
+  "commit": "204dd67b24bf4f2305a14efb925c8fe004026694",
+  "sha256": "1xqql1mcwp52plm1gp6q4m9zij2w360y15lnjsz9xgjqvslr7gy5",
+  "fetcher": "github",
+  "repo": "mswift42/MetalHeart-Emacs",
+  "unstable": {
+   "version": [
+    20160710,
+    641
+   ],
+   "commit": "ec98ea2c11dc1213dae8cbe1fe0cee73ca138bb2",
+   "sha256": "0pc86qh74i6vr0ap2j2sn4nl2c0vv15m4m1myyjmggfxx2f27nnc"
+  }
+ },
+ {
+  "ename": "metamorph",
+  "commit": "741982c7ce83a77d0b43d196eeac6e949dc5fd81",
+  "sha256": "0mqzqwwzb4x2j6jh6acx5ni9z5k56586jv4n88d3fi4vry9k4mv3",
+  "fetcher": "github",
+  "repo": "AdamNiederer/metamorph",
+  "unstable": {
+   "version": [
+    20180930,
+    2028
+   ],
+   "commit": "d9dc7037b7eed7b3fe85ea50e91f332e3f831514",
+   "sha256": "1zprgjh1wyqbpy1qvng57r6jm10k6vffpb6znm47fm8xx1h0s8k4"
+  }
+ },
+ {
+  "ename": "metascript-mode",
+  "commit": "90c03167b5fb4f4edc8a76240b3668203261bc58",
+  "sha256": "1kgs4ki0s6bxx2ri6zxmsy2b2w56gnr9hjkr6302wcmp3qy7clwn",
+  "fetcher": "github",
+  "repo": "metascript/metascript-mode",
+  "unstable": {
+   "version": [
+    20150709,
+    57
+   ],
+   "commit": "edb361c7b0e5de231e5334a17b90652fb1df78f9",
+   "sha256": "1rascpmv17dksyn9y0llmjb8r4484x5ax54w6r83k1x7ha1iacx5"
+  }
+ },
+ {
+  "ename": "metaweblog",
+  "commit": "cc7fde8f9de0f0e2ccc0c766884ca2b41d0bb5ce",
+  "sha256": "051xgrb620dq55k37wp6b32mdpw7x5ldn6r370n92xqlr1zmryhh",
+  "fetcher": "github",
+  "repo": "org2blog/org2blog",
+  "unstable": {
+   "version": [
+    20191018,
+    242
+   ],
+   "commit": "60eae1c8a7f82fbcc2660d785b33601daaa29f4b",
+   "sha256": "06ia4ba6c1yph259wr4y5sdkl1ry6pzbwhx807ia675rp0clp9hz"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    8
+   ],
+   "commit": "0177fc4e7edd705db59b82c83a24db51dc405890",
+   "sha256": "1whl7kz4im2jmdz99336wfn152q0l3qwii4w7sn45rlsm2sijiw1"
+  }
+ },
+ {
+  "ename": "metrics-tracker",
+  "commit": "e0250d97fd363b90ff4b69757cac3370c37c4b8f",
+  "sha256": "1823irgkfpsjl550pkc9qc7j5qkx1gw1b3116b203g4nhzh20h6p",
+  "fetcher": "github",
+  "repo": "ianxm/emacs-tracker",
+  "unstable": {
+   "version": [
+    20200503,
+    1425
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "6d68118eee409a2b671537129eae1154421ba82c",
+   "sha256": "1i7fzla9i3s4439ckkny09fq3r2q0q2153qzyhxsfbcxb47vbx26"
+  }
+ },
+ {
+  "ename": "metronome",
+  "commit": "2f77239fecb41487a6aa03e6fc219cba96dee18d",
+  "sha256": "1kkm7s6hiyk3h1bnf9pfnsikmfpp998041wg0bwqnpzhzzlq6fy4",
+  "fetcher": "gitlab",
+  "repo": "jagrg/metronome",
+  "unstable": {
+   "version": [
+    20200502,
+    1748
+   ],
+   "commit": "18257ecdd7b3d816104e83a5f0f96e676cc9fbfc",
+   "sha256": "14qzb1i9l149nw4zhx8jlrrz7nvflc974zr5lbv7vv2zky0pya6w"
+  }
+ },
+ {
+  "ename": "mew",
+  "commit": "362dfc4d0fdb3e5cb39564160de62c3440ce182e",
+  "sha256": "0423xxn3cw6jmsd7vrw30hx9phga5chxzi6x7cvpswg1mhcyn9fk",
+  "fetcher": "github",
+  "repo": "kazu-yamamoto/Mew",
+  "unstable": {
+   "version": [
+    20200316,
+    221
+   ],
+   "commit": "5145145f87bfbe80fd91e82ded33033cf78ef54f",
+   "sha256": "0wdbgh3bady6xad0gnlg3irds5vdffl8d39raqayzgn17yb98pcf"
+  },
+  "stable": {
+   "version": [
+    6,
+    8
+   ],
+   "commit": "6a5d6bb11e5e1a239ee7db114a0e76b40e5a247e",
+   "sha256": "03sin2l8g8npz3j6019xv5r71j9gzmczb16cyvd5304kibwrwa0w"
+  }
+ },
+ {
+  "ename": "mexican-holidays",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "0an6kkr2vwkqc9219rgn74683h7f4cmd1g74lirn0qhqcfcb5yrc",
+  "fetcher": "github",
+  "repo": "sggutier/mexican-holidays",
+  "unstable": {
+   "version": [
+    20190506,
+    245
+   ],
+   "commit": "663633be1d693f6081d7d000e05d15ddbf71aa10",
+   "sha256": "09b0292d87xm5mrhfhv7j11ljl4j9hv8h5dibzrrlh1b3vsg2xkj"
+  }
+ },
+ {
+  "ename": "meyvn",
+  "commit": "b7ff8ac12f51e775228a7c916126830802038cf0",
+  "sha256": "1yq90c7s8kb0w25w49wjia84sjhbgjdvjxsl98cdhcf9h6adls6p",
+  "fetcher": "github",
+  "repo": "danielsz/meyvn-el",
+  "unstable": {
+   "version": [
+    20200311,
+    2209
+   ],
+   "deps": [
+    "cider",
+    "dash",
+    "parseedn",
+    "projectile",
+    "s"
+   ],
+   "commit": "5eb0423d4b7083cb330a73ef1cfd3e0dd8538567",
+   "sha256": "0vk2d59jvzhdm47w4kcn58njps444i0350lp5z7dnzhaag10dwc0"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "3119214ff45db630789f9371f956d5ac06229b1d",
+   "sha256": "0mnvc3f56x4icrqmc4kx6bzc9vac40f020npimdgiylbmyxj97vn"
+  }
+ },
+ {
+  "ename": "mgmtconfig-mode",
+  "commit": "4cf3dd70ae73c2b049e201a3547bbeb9bb117983",
+  "sha256": "0bdjaqfk68av4lfc4cpacrl2mxvimplfkbadi9l6wb65vlqz6sil",
+  "fetcher": "github",
+  "repo": "purpleidea/mgmt",
+  "unstable": {
+   "version": [
+    20200104,
+    108
+   ],
+   "commit": "e9af8a2595e336542c9dfc656fe808ddc6937a59",
+   "sha256": "1s72qvg1jwqk27axiqb2wn7y1q3x0rf2mb20yc9kqva553fk5vzd"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    21
+   ],
+   "commit": "6a7d904fae5014aabae8c91add220485108d485b",
+   "sha256": "0r0msrnbz9177cv1mlacsyd35k945nk2qaqm1f8ymgxa99zy124i"
+  }
+ },
+ {
+  "ename": "mhc",
+  "commit": "d8d3efa0fcd6cd4af94bc99b35614ef6402cbdba",
+  "sha256": "02ikn9hx0kcfc2xrx4f38zpkfi6vgz7chcxk6q5d0vcsp93b4lql",
+  "fetcher": "github",
+  "repo": "yoshinari-nomura/mhc",
+  "unstable": {
+   "version": [
+    20190807,
+    513
+   ],
+   "deps": [
+    "calfw"
+   ],
+   "commit": "f9f048de9fe85a90d376d828ce3dad2a96c62c40",
+   "sha256": "1m6w12y9dcz85xm7lc7dhc7vjhw0bhdm0b4rcp1fr2sn9wv7c4wz"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    3
+   ],
+   "deps": [
+    "calfw"
+   ],
+   "commit": "37898db4902cd644a0d3e8d9d02426d54fb8984a",
+   "sha256": "0c9kshs17b8fn8la8hlzf05vf5pajf3ksx7bsjri3m78s6bd3h4z"
+  }
+ },
+ {
+  "ename": "mic-paren",
+  "commit": "6f0e54eac31fbbce9a778fb654f07e11aaaa46ca",
+  "sha256": "17j0b8jyr0zx6zds2dz5fzvarm2wh8l5hxds2s90kh5z0kk23r07",
+  "fetcher": "github",
+  "repo": "emacsattic/mic-paren",
+  "unstable": {
+   "version": [
+    20170731,
+    1907
+   ],
+   "commit": "d0410c7d805c9aaf51a1bcefaaef092bed5824c4",
+   "sha256": "0f24ibzgra94bwal8b0dpjxa11n42gkmanqswfnjhlvx052v9dxr"
+  }
+ },
+ {
+  "ename": "micgoline",
+  "commit": "2219768cf62b52bcbe73cec291eb74c3fedcc862",
+  "sha256": "0xixcy006my2s0wn0isiag0b4rm38kswa5m0xnhg5n30qjjfzf4i",
+  "fetcher": "github",
+  "repo": "yzprofile/micgoline",
+  "unstable": {
+   "version": [
+    20160415,
+    326
+   ],
+   "deps": [
+    "powerline"
+   ],
+   "commit": "837504263bb1711203b0f7efecd6b7b5f272fae0",
+   "sha256": "0r6l6iqn5z9wp4w58flnls7kk6300qlxyy04fw0np00nvwsy4qvp"
+  }
+ },
+ {
+  "ename": "midje-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "16g57mwkm3ypnyqniy1lj9nfn5wj7cyndb5fhl3fym773ywn6hip",
+  "fetcher": "github",
+  "repo": "dnaumov/midje-mode",
+  "unstable": {
+   "version": [
+    20170809,
+    403
+   ],
+   "deps": [
+    "cider",
+    "clojure-mode"
+   ],
+   "commit": "10ad5b6084cd03d5cd268b486a7c3c246d85535f",
+   "sha256": "0nag9ks7qbg40h9z954v42x8zi65wbgfhviwvxvb2bmbzv4m4pbs"
+  }
+ },
+ {
+  "ename": "migemo",
+  "commit": "2424b0328a0198a03359455abdb3024a8067c857",
+  "sha256": "0y49imdwygv5zd7cyh9ngda4gyb2mld2a4s7zh4yzlh7z5ha9qkr",
+  "fetcher": "github",
+  "repo": "emacs-jp/migemo",
+  "unstable": {
+   "version": [
+    20190112,
+    516
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f42832c8ac462ecbec9a16eb781194f876fba64a",
+   "sha256": "0yasamfvad4azyby8mqyr2laap3ppknwb7i9w84zw14qq7g7pq5w"
+  },
+  "stable": {
+   "version": [
+    1,
+    9,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f42832c8ac462ecbec9a16eb781194f876fba64a",
+   "sha256": "0yasamfvad4azyby8mqyr2laap3ppknwb7i9w84zw14qq7g7pq5w"
+  }
+ },
+ {
+  "ename": "milkode",
+  "commit": "29fffbec2d3067c046c456602779af8c04bf898f",
+  "sha256": "07v6xgalx7vcw5sghckwvz584746cba05ql8flv8n556glm7hibh",
+  "fetcher": "github",
+  "repo": "ongaeshi/emacs-milkode",
+  "unstable": {
+   "version": [
+    20140927,
+    529
+   ],
+   "commit": "ba97e2aeefa1d9d0b3835bf08edd0de248b0c513",
+   "sha256": "1qg64mxsm2cswk52mlj7sx7k6gfnrsdwnf68i7cachri0i8aq4ap"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "ba97e2aeefa1d9d0b3835bf08edd0de248b0c513",
+   "sha256": "1qg64mxsm2cswk52mlj7sx7k6gfnrsdwnf68i7cachri0i8aq4ap"
+  }
+ },
+ {
+  "ename": "minesweeper",
+  "commit": "d3828ad7599d13728b5571b882344c3ada434b85",
+  "sha256": "061l7xh7vjg5krz5lskj2jvrnsv2qq4bwg0qkkysmy4zp9f3m5iq",
+  "fetcher": "hg",
+  "url": "https://hg.sr.ht/~zck/minesweeper",
+  "unstable": {
+   "version": [
+    20200416,
+    2342
+   ],
+   "commit": "d4248e3c9b3e9e7277cb9e6d081330611898f334",
+   "sha256": "0b648nsnwn461r2alg9v220v0c4djyvwn7xgwh8c8sb9pjwbmw90"
+  }
+ },
+ {
+  "ename": "mingus",
+  "commit": "6699927f1ded5c97f2ce1861f8e54a5453264cca",
+  "sha256": "0vw09qk56l792706vvp465f40shf678mcmdh7iw8wsjix4401bzi",
+  "fetcher": "github",
+  "repo": "pft/mingus",
+  "unstable": {
+   "version": [
+    20190106,
+    1443
+   ],
+   "deps": [
+    "libmpdee"
+   ],
+   "commit": "4223be618f57f10f18114a74393a71955b568884",
+   "sha256": "14i06i999wfpr0a0lvhnh6g4mm5xmawscjd9d7ibc055h94h3i2a"
+  }
+ },
+ {
+  "ename": "mini-frame",
+  "commit": "2a10ea61ac4a3c8fa800f4107f256fa3ac5907f2",
+  "sha256": "06zv8qmbvzqzinmb5zcd40a43kmmq7mby6dgacpq81cg5azyfkr7",
+  "fetcher": "github",
+  "repo": "muffinmad/emacs-mini-frame",
+  "unstable": {
+   "version": [
+    20200430,
+    721
+   ],
+   "commit": "78d9bbb272acc5f2927648cc706321f95e2955c9",
+   "sha256": "1d4zgrpy21j35dzcspbv4szbprxxv9mygwqfx0x2bs53z4abk1kg"
+  }
+ },
+ {
+  "ename": "mini-header-line",
+  "commit": "122db5436ff9061713c0d3d8f44c47494067843e",
+  "sha256": "1yg8i7gsmiv8zwl1wqvgrh2xl2hm5nn3q11rz4hpyxw26355i817",
+  "fetcher": "github",
+  "repo": "ksjogo/mini-header-line",
+  "unstable": {
+   "version": [
+    20170621,
+    1221
+   ],
+   "commit": "73b6724e0a26c4528d93768191c8aa59e6bce2e5",
+   "sha256": "187xynmpgkx498an246ywrqdhyyp2ag1l7yxnm0x0rbfgw67q5j1"
+  }
+ },
+ {
+  "ename": "mini-modeline",
+  "commit": "d8d20ab65df4c4a85a59a2a926ea14a262375490",
+  "sha256": "17zm255a85vmxc07h5cr6gcsb92gf8q5ma52z622ridbvzvfc5yc",
+  "fetcher": "github",
+  "repo": "kiennq/emacs-mini-modeline",
+  "unstable": {
+   "version": [
+    20200424,
+    647
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "4f1dce78916cccd2e7066345ae2be3394a675c46",
+   "sha256": "0qbd6jdaqfs43i9cgs4n4d8vkv3nbcxcmwkd9xrj1d03rdmyzxh0"
+  },
+  "stable": {
+   "version": [
+    20200408,
+    729
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "b761e41479a2564e801ac6c427956203de3d62ca",
+   "sha256": "1ngggz4n35bklgya6ymc98w7y2annxcpdkikd5afd5jn8w7x2vxg"
+  }
+ },
+ {
+  "ename": "minibuf-isearch",
+  "commit": "ebfd2f3f6a2dbd251c321738a4efaacc2200164b",
+  "sha256": "0n36d152lc53zj9jy38b0c7hlww0z6hx94y3x2njy6cmh3p5g8nh",
+  "fetcher": "github",
+  "repo": "knagano/minibuf-isearch",
+  "unstable": {
+   "version": [
+    20151226,
+    1943
+   ],
+   "commit": "2846c6ac369ee623dad4cd3c8a7a6d9078965516",
+   "sha256": "1n4b039448826w2jcsv4r2iw3v2vlrsxw8dbci8wcfigmkbfc879"
+  }
+ },
+ {
+  "ename": "minibuffer-complete-cycle",
+  "commit": "afac2cf41fe57efa8d313fdbab0b0b795ec144e4",
+  "sha256": "0y1mxs6q9a8lzprrlb22qff6x5mvkw4gp2l6p2js2r0j9jzyffq2",
+  "fetcher": "github",
+  "repo": "knu/minibuffer-complete-cycle",
+  "unstable": {
+   "version": [
+    20130813,
+    1645
+   ],
+   "commit": "3df80135887d0169e02294a948711f6dfeca4a6f",
+   "sha256": "1zyb6c3xwdzk7dpn7xi0mvbcjdfxvzz1a0zlbs053pfar8iim5fk"
+  },
+  "stable": {
+   "version": [
+    1,
+    25,
+    20130814
+   ],
+   "commit": "3df80135887d0169e02294a948711f6dfeca4a6f",
+   "sha256": "1zyb6c3xwdzk7dpn7xi0mvbcjdfxvzz1a0zlbs053pfar8iim5fk"
+  }
+ },
+ {
+  "ename": "minibuffer-cua",
+  "commit": "f3b0f1f260b02c14da4d584b6af08b2fa3adf39c",
+  "sha256": "1ragvr73ykbvpgynnq3z0z4yzrlfhfqlwc1vbxclb8x2xmxq7pzw",
+  "fetcher": "github",
+  "repo": "knu/minibuffer-cua.el",
+  "unstable": {
+   "version": [
+    20130906,
+    1134
+   ],
+   "commit": "adc4979a64f8b36e05960e9afa0746dfa9e2e4c7",
+   "sha256": "011kg76zr4hfhi2gngnc7jlmp0l0nvhmlgyc0y9bir2jbjf4yyvz"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "e8dcddc24d4f2e8d7987336fb58259e3cc78bbcb",
+   "sha256": "07nbn2pwlp33kr136xsm6lzddhjs538xkz0fbays89psblmy4kwj"
+  }
+ },
+ {
+  "ename": "miniedit",
+  "commit": "5f2a50f62475639af011c99c6cc38928b74b3b0a",
+  "sha256": "10s407q7igdi2hsaaahbw8vckalrl7z3s6l9cflf51q16xh2ih87",
+  "fetcher": "github",
+  "repo": "emacsorphanage/miniedit",
+  "unstable": {
+   "version": [
+    20100419,
+    1745
+   ],
+   "commit": "e12bf659c3eb92dd8a4cb77642dc0865c54667a3",
+   "sha256": "1850z96gly0jnr50472idqz1drzqarr0n23bbasslrc501xkg0bq"
+  },
+  "stable": {
+   "version": [
+    2,
+    0
+   ],
+   "commit": "e12bf659c3eb92dd8a4cb77642dc0865c54667a3",
+   "sha256": "1850z96gly0jnr50472idqz1drzqarr0n23bbasslrc501xkg0bq"
+  }
+ },
+ {
+  "ename": "minimal-session-saver",
+  "commit": "c9db386ab3910940addae6e925b2ac17e64e0f87",
+  "sha256": "1ay7wvriga28bdmarpfwagqzmmk93ri9f3idhr6z6iivwggwyy2i",
+  "fetcher": "github",
+  "repo": "rolandwalker/minimal-session-saver",
+  "unstable": {
+   "version": [
+    20140508,
+    2041
+   ],
+   "commit": "cf654ac549850746dc21091746e4bcc1aef7668e",
+   "sha256": "1sj5sq932w079y3vy55q5b6wybwrzz30y092iq1mpfg5xvl42sbm"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    2
+   ],
+   "commit": "aaba48a8525e1310b221eeb96763304c22e9a4b4",
+   "sha256": "0kjhn48sf2ps3k5pv06gqmqc4hlk6di9ld3ssw6vwfh8313x1fc5"
+  }
+ },
+ {
+  "ename": "minimal-theme",
+  "commit": "6f26b8281f9bd05e3c8f2ef21838275711e622c9",
+  "sha256": "01dar95l7wjjqhbsknvsfbpvv41ka7iqd1fssckz18lgfqpb54bs",
+  "fetcher": "github",
+  "repo": "anler/minimal-theme",
+  "unstable": {
+   "version": [
+    20190113,
+    2132
+   ],
+   "commit": "063b4d8ca33d55d04c341f0b2b777ec241a3e201",
+   "sha256": "0lvg7iym6sxhgl4ab9a6x8c2mh2d32vkf0033bs3vphx657gra6l"
+  }
+ },
+ {
+  "ename": "minions",
+  "commit": "769a2167d7f6dfdbbfda058ddea036f80b97d230",
+  "sha256": "0ximlj93yp6646bh99r2vnayk15ky26sibrmrqqysfw1pzs4a940",
+  "fetcher": "github",
+  "repo": "tarsius/minions",
+  "unstable": {
+   "version": [
+    20200204,
+    1950
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "bc1edab09d3fc1b248c17775ae2eb7d35b96be40",
+   "sha256": "09z5wynw3xaxx2jr55ymlnhczryp5c5zgb1g9nr99k2rksq2j980"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    3
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "c331c1516111b9d2136e632a218c1d7707215356",
+   "sha256": "095yx8zg61nka6f7biyj1binbp8g872vq275ycwgmd2ix462zyf4"
+  }
+ },
+ {
+  "ename": "minitest",
+  "commit": "41b2e55c0fe48267dc4f55924c782c6f934d8ca4",
+  "sha256": "0x6nd4kkhiw8hh79r69861pf41j8p1y39kzf2rl61zlmyjz9zpmw",
+  "fetcher": "github",
+  "repo": "arthurnn/minitest-emacs",
+  "unstable": {
+   "version": [
+    20200506,
+    308
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "ddd152c990a528ad09a696bfad23afa4330ea4d7",
+   "sha256": "0mdbn8v6m4902krnagsp74r4501d4yfxc33i55l4l14gvjgx1239"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    2
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "97d7d1760b24e117ffd163531b0f57fd4321677b",
+   "sha256": "0d8kg68yy5x1y3ivj43vzcakb3gii6bh8jm40g4sah5f53bbrs16"
+  }
+ },
+ {
+  "ename": "minizinc-mode",
+  "commit": "fc86b4ba54fca6f1ebf1ae3557fe564e05c1e382",
+  "sha256": "1blb6mbyqvmdvwp477p1ggs3n6rzi9sdfvi0v1wfzmd7k749b10c",
+  "fetcher": "github",
+  "repo": "m00nlight/minizinc-mode",
+  "unstable": {
+   "version": [
+    20180201,
+    1450
+   ],
+   "commit": "2512521ba7f8e263a06db88df663fc6b3cca7e16",
+   "sha256": "1yrawvvn3ndzzrllh408v4a5n0y0n5p1jczdm9r8pbxqgyknbk1n"
+  }
+ },
+ {
+  "ename": "minor-mode-hack",
+  "commit": "ad10a684b4b2f01bc65883374f36fef156ff55d2",
+  "sha256": "07ga48xvbi641i053bykv9v4wxhka6jhhg76b1ll24rys02az526",
+  "fetcher": "github",
+  "repo": "rubikitch/minor-mode-hack",
+  "unstable": {
+   "version": [
+    20170926,
+    34
+   ],
+   "commit": "9688994e23ccb2de568225ef125b41c46e5667c3",
+   "sha256": "0f6kafr7zqgdlw914bxh2390a1bjz5zy3h30yrfpavz283ycvrrw"
+  }
+ },
+ {
+  "ename": "minsk-theme",
+  "commit": "2f78d25a094cfa5d5a6dad2f0c6d051138b8744b",
+  "sha256": "1sf93ycd6a1p4xf1bhgjbqd4y38v1b4qgf0mh6pag2xz93jr7lw5",
+  "fetcher": "github",
+  "repo": "jlpaca/minsk-theme",
+  "unstable": {
+   "version": [
+    20200306,
+    1220
+   ],
+   "commit": "d1e04ca03aadb942dc4bee82f44848c3ce52b25c",
+   "sha256": "1yrjmyh8a0xqijyg16v20iqh13s7j4pf410f0214a4m9lp07pxpx"
+  }
+ },
+ {
+  "ename": "mip-mode",
+  "commit": "cbfefacda071c0f5ee698a4c345a2d6fea6a0d24",
+  "sha256": "0jr8lzs1qzp2ki7xmm5vrdc6vmzagy8zsil0217vyl89pdfmxnyr",
+  "fetcher": "gitlab",
+  "repo": "gaudecker/mip-mode",
+  "unstable": {
+   "version": [
+    20151127,
+    617
+   ],
+   "commit": "7c88c383b4c7ed0a4c1dc397735f365c1fcb461c",
+   "sha256": "12k9ii4090dn03xvgqisl4zl4qi33054zxyfkqzzpa9wv72h4knc"
+  }
+ },
+ {
+  "ename": "mips-mode",
+  "commit": "024a76b83efce47271bcb0ce3bde01b88349f391",
+  "sha256": "0gg18v80lbndi2yyr5nl37mz0zpamwv9ha4clajkf0bc0vplxkj7",
+  "fetcher": "github",
+  "repo": "hlissner/emacs-mips-mode",
+  "unstable": {
+   "version": [
+    20180502,
+    1457
+   ],
+   "commit": "75152fc78baa762af4f83602f6cb3c8b9bcebca3",
+   "sha256": "1bk1jfqwwrq3jr6zasyjaz16rjjqbihrn7kakgfk3szv6grvsd7p"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "commit": "e6c25201a3325b555e64388908d584f3f81d9e32",
+   "sha256": "0ai4ff6hinajvnp8r86s5pv0rrv8h68ncdz4k98kka1ws2f79zdf"
+  }
+ },
+ {
+  "ename": "mix",
+  "commit": "aaa1958ac6a0e59613e1b71e0eddbe4989d93e67",
+  "sha256": "1wflzfr7jgvd01il9zz96wasdyjxxi5nrzva9hlrkgqhp0h877sk",
+  "fetcher": "github",
+  "repo": "ayrat555/mix.el",
+  "unstable": {
+   "version": [
+    20200419,
+    820
+   ],
+   "commit": "37916fa5f7dfe448585fb83ea6253eb0f84df15f",
+   "sha256": "09pk4bakqz01ci06c79ywwb8ijdfgw3rxrz0wlaz4zmlbirkzma6"
+  }
+ },
+ {
+  "ename": "mixed-pitch",
+  "commit": "7d3c7af03e0bca3f834c32827cbcca29e29ef4db",
+  "sha256": "1gda4jl946qlbf8rqm0mk493kwy8yqldr21cr583l6b6gl1nb4qf",
+  "fetcher": "gitlab",
+  "repo": "jabranham/mixed-pitch",
+  "unstable": {
+   "version": [
+    20200511,
+    2052
+   ],
+   "commit": "1cad46fddf741ed7ec5fc477d70e079e908e9ce6",
+   "sha256": "062np4d7blbwjc1kciqcp6hngmwr8i540zsv5f8p2qki4804b8ng"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "734fbdf2d2c17beee151faf39bd10174a87eea5d",
+   "sha256": "1i0yd7akkyqhkd8g2g793n6syiy0mbnlq9apg7p1s4xycmwxx684"
+  }
+ },
+ {
+  "ename": "mkdown",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "034bwwgh0w1dwawdx2nwn4d6wj65i58aqlvi60kflijfn8l3inr3",
+  "fetcher": "github",
+  "repo": "ajtulloch/mkdown.el",
+  "unstable": {
+   "version": [
+    20140517,
+    1418
+   ],
+   "deps": [
+    "markdown-mode"
+   ],
+   "commit": "8e23de82719af6c5b53b52b3308a02b3a1fb872e",
+   "sha256": "1d08i2cfn1q446nyyji0hi9vlw7bzkpxhn6653jz2k77vd2y0wmk"
+  }
+ },
+ {
+  "ename": "mlso-theme",
+  "commit": "2e026e2511ead77022cf8ed9d45d0d5a5aa104b9",
+  "sha256": "1abv6zhz28x5yk0rjn19wjxwvdq0ps3j2sx45n0dlbqfrqgw86d1",
+  "fetcher": "github",
+  "repo": "Mulling/mlso-theme",
+  "unstable": {
+   "version": [
+    20200513,
+    1751
+   ],
+   "commit": "059c5773403b73a14a1b04d62d1d5b077a3f6e06",
+   "sha256": "1a00mybf269hlfzfhpcvlkkqgwck73hz5w1qsspg5w9w78qlymkn"
+  }
+ },
+ {
+  "ename": "mmm-jinja2",
+  "commit": "721b9a6f16fb8efd4d339ac7953cc07d7a234b53",
+  "sha256": "0zg4psrgikb8644x3vmsns0id71ni9fcpm591zn16b4j64llvgsi",
+  "fetcher": "github",
+  "repo": "glynnforrest/mmm-jinja2",
+  "unstable": {
+   "version": [
+    20170313,
+    1420
+   ],
+   "deps": [
+    "mmm-mode"
+   ],
+   "commit": "c8cb763174fa2fb61b9a0e5e0ff8cb0210f8492f",
+   "sha256": "0big2i3bg4cm14f68ncaiz2h6dk6zqiisrz4l0bv10q9kaa9q2sj"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "mmm-mode"
+   ],
+   "commit": "c8cb763174fa2fb61b9a0e5e0ff8cb0210f8492f",
+   "sha256": "0big2i3bg4cm14f68ncaiz2h6dk6zqiisrz4l0bv10q9kaa9q2sj"
+  }
+ },
+ {
+  "ename": "mmm-mako",
+  "commit": "5b7972602399f9df9139cff177e38653bb0f43ed",
+  "sha256": "0a4af5q9wxafrid8visp30cz6073ig0c961b78vmmgqrwvvxd3kn",
+  "fetcher": "bitbucket",
+  "repo": "pjenvey/mmm-mako",
+  "unstable": {
+   "version": [
+    20121020,
+    651
+   ],
+   "deps": [
+    "mmm-mode"
+   ],
+   "commit": "5c9ff92137b547569264eeca1ab2a86e4ba12f55",
+   "sha256": "0rpp748ym79sxccp9pyrwri14m7624zzb80srfgjfdpysrrs0jrr"
+  }
+ },
+ {
+  "ename": "mmt",
+  "commit": "d1137bb53ecd92b1a8537abcd2635602c5ab3277",
+  "sha256": "0hal3qcw6x9658xpdaw6q9l2rr2z107pvg5bdzshf67p1b3lf9dq",
+  "fetcher": "github",
+  "repo": "mrkkrp/mmt",
+  "unstable": {
+   "version": [
+    20190713,
+    1347
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "6d3eedf4fae3c88dee33691aa2856514122adc8c",
+   "sha256": "0fykf7svgsbcjfcsbp1r571mgjhxwkdvmmhhl2clyi5z3mwg0s1g"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f7db836a10720ee50217012e7e2597ebcf624f90",
+   "sha256": "13vbfc5597v0gd87qyhn10f93nb477vjpg3jlpphbax9fvkf4gav"
+  }
+ },
+ {
+  "ename": "mo-git-blame",
+  "commit": "a784f931849ca836557390999b179ef9f6e775f3",
+  "sha256": "14ngwwgzrnnysq1k1k681b5i06ad8r3phhgpvn5alp2fj3il03l3",
+  "fetcher": "gitlab",
+  "repo": "mbunkus/mo-git-blame",
+  "unstable": {
+   "version": [
+    20160129,
+    1759
+   ],
+   "commit": "254a675eb794cdbbdef9fa2b4b7bb510b70089c0",
+   "sha256": "1dh92hzpicfvrlg6swrw4igwb771xbsmsf7hxp1a4iry4w8dk398"
+  }
+ },
+ {
+  "ename": "mo-vi-ment-mode",
+  "commit": "85487df36bab0a4d2ea034dbe01c8f095a7efddc",
+  "sha256": "1pg889mgpv0waccm135mlvag7q13gzfkzchv2532jngwrn6amqc7",
+  "fetcher": "github",
+  "repo": "AjayMT/mo-vi-ment",
+  "unstable": {
+   "version": [
+    20181217,
+    206
+   ],
+   "commit": "e8b525ffc5faa31d36ecc5496b40f0f5c3603c08",
+   "sha256": "16ic8yhjfk0ijlcw7a270p7953w750qza3xdbf4vygkiqqkxiv84"
+  }
+ },
+ {
+  "ename": "mobdebug-mode",
+  "commit": "25a48680d9f0d2b86ee64cc2415626a5283136a8",
+  "sha256": "19k0c7igqsqvib6hx0nssig4l5f959dlr4wijd1hp5h1hmcb5vv8",
+  "fetcher": "github",
+  "repo": "deftsp/mobdebug-mode",
+  "unstable": {
+   "version": [
+    20140110,
+    346
+   ],
+   "deps": [
+    "lua-mode"
+   ],
+   "commit": "e1d483bc4e341c762bc5c0a8c52306a8d01ea0da",
+   "sha256": "04hbd7mv29v3fv4ld0b3skrir0wp9dix2n5nbqp63fj6n5i4cyyz"
+  }
+ },
+ {
+  "ename": "mocha",
+  "commit": "39c26134ba95f277a4e9400e506433d96a695aa4",
+  "sha256": "0kjgrl5iy7cd3b9csgpjg3y0wp0q6c7c8cvf0mx8gdbsj7296kyx",
+  "fetcher": "github",
+  "repo": "scottaj/mocha.el",
+  "unstable": {
+   "version": [
+    20180321,
+    2322
+   ],
+   "deps": [
+    "f",
+    "js2-mode"
+   ],
+   "commit": "cfd5b1a8a32162575f1c30b82e17b74efb67cf1c",
+   "sha256": "015pinqd2bxac372dvmcxnc7z9qayq4xpa254sp31bdzn4r5xns4"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "js2-mode"
+   ],
+   "commit": "4ca9495d4b00b753f055152bd4256c07d7b208f4",
+   "sha256": "0yj9kc59c227727kh1zjxwrhijzd7rdhix7qqm4na1z6s4ycpxbm"
+  }
+ },
+ {
+  "ename": "mocha-snippets",
+  "commit": "93c472e3d7f318373342907ca7253253ef12dab8",
+  "sha256": "0dbsdk4jpzxv2sxx0nia9zhd0a0wmkz1qcqmbd15m1909ccdwxds",
+  "fetcher": "github",
+  "repo": "cowboyd/mocha-snippets.el",
+  "unstable": {
+   "version": [
+    20190417,
+    1931
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "361a3809f755577406e109b9e44d473dfa7c08e0",
+   "sha256": "0xcybq0cwd0c33bi1jf7h098a4anc4gkj3m1c97gc8mz9x4fjksy"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "361a3809f755577406e109b9e44d473dfa7c08e0",
+   "sha256": "0xcybq0cwd0c33bi1jf7h098a4anc4gkj3m1c97gc8mz9x4fjksy"
+  }
+ },
+ {
+  "ename": "mocker",
+  "commit": "16a4fe34a6f354d396c24ff13e15157510202259",
+  "sha256": "1g90jp1czrrzrmn7n4linby3q4fb4gcflzv2amjv0sdimw1ln1w3",
+  "fetcher": "github",
+  "repo": "sigma/mocker.el",
+  "unstable": {
+   "version": [
+    20150917,
+    154
+   ],
+   "deps": [
+    "eieio",
+    "el-x"
+   ],
+   "commit": "6a1d7c9189bd721debd1a60707526e43a733f537",
+   "sha256": "0i96fn5ji1z78in4nr316sgfp2mc8lmxijslw3k9q1v50j91bcya"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "deps": [
+    "eieio",
+    "el-x"
+   ],
+   "commit": "55b078b53ea49e48bd1821d96f0fb86f794fdc6c",
+   "sha256": "1lav7am41v63xgavq8pr88y828jmd1cxd4prjq7jlbxm6nvrwxh2"
+  }
+ },
+ {
+  "ename": "modalka",
+  "commit": "fa0a02da851a603b81e183f461da55bf4c71f0e9",
+  "sha256": "0bkjykvl6sw797h7j76dzn1viy598asly98gcl5wrq13n4w1md4c",
+  "fetcher": "github",
+  "repo": "mrkkrp/modalka",
+  "unstable": {
+   "version": [
+    20190713,
+    1335
+   ],
+   "commit": "8f71e0a85c2f6039111663e65d9a13f3310f12ed",
+   "sha256": "0vz58nk044jm97wh77v02h24571nwg57j1vx2v4rx9wmwrnifwid"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    5
+   ],
+   "commit": "1259afa084f58d143d133aac56a6c0c10bc460f2",
+   "sha256": "0ggj8q92sb6wp3hs1vhpmy56id0p3i9zwnw24g2v7xa7w8ac9s7l"
+  }
+ },
+ {
+  "ename": "mode-icons",
+  "commit": "0fda2b54a0ff0b6fc3bd6d20cfcbbf63cae5380f",
+  "sha256": "1dqcry27rz7afyvjg7345wysp6wmh8fpj32ysk5iw5i7v5scf6kf",
+  "fetcher": "github",
+  "repo": "ryuslash/mode-icons",
+  "unstable": {
+   "version": [
+    20190627,
+    2121
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f16969f053f43bf706257673d0800de438d4e33b",
+   "sha256": "0lvpvmc1fhhjg9rgh8gy6c0nqfn89v9cxy5pjpy0c8bdnwys2x7q"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "37581ed911e4469f773ddfb7b40a85592d323b76",
+   "sha256": "1ykj68d4h92i4qv90zgwrf9jhy1n22l2h9k5f1zsn8hvz9mhj1av"
+  }
+ },
+ {
+  "ename": "mode-line-bell",
+  "commit": "26f19808655b0242a1e9e5e5d41f7f794542e243",
+  "sha256": "1ri771hb91b7hd203f8zp83h5hcndh8ccc1y8shhqmak6a6l04wk",
+  "fetcher": "github",
+  "repo": "purcell/mode-line-bell",
+  "unstable": {
+   "version": [
+    20181029,
+    516
+   ],
+   "commit": "26ac7d97abdeb762ceaeab6b892f3ed7e3412494",
+   "sha256": "0qbd4y10510q6r21zzxnr16ylrm7qh1qc7ll5wxab0yi03jaas3s"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "4985ba42f5a19f46ddbf9b3622453a9694995ce5",
+   "sha256": "13n3di05lgqfm4f8krn3p36yika5znhymp5vr2d747x54hqmgh7y"
+  }
+ },
+ {
+  "ename": "mode-line-debug",
+  "commit": "b0080ab9ef1eca5dd19b3fd9af536d8aa17773a2",
+  "sha256": "0ppj14bm3rx3xgg4mfxa5zcm2r129jgmsx817wq3h7akjngcbfkd",
+  "fetcher": "github",
+  "repo": "tarsius/mode-line-debug",
+  "unstable": {
+   "version": [
+    20180318,
+    2225
+   ],
+   "commit": "a0fcc394b07d2414bd6f722da10f1c7567333f6b",
+   "sha256": "04vsb0lniy90bhnqb590dap9y4wac64xz0lc2rlfczic0nrqd1aa"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    3
+   ],
+   "commit": "a0fcc394b07d2414bd6f722da10f1c7567333f6b",
+   "sha256": "04vsb0lniy90bhnqb590dap9y4wac64xz0lc2rlfczic0nrqd1aa"
+  }
+ },
+ {
+  "ename": "modern-cpp-font-lock",
+  "commit": "4bfc2386049adfe7a8e20da9b69fb73d6cb71387",
+  "sha256": "0h43icb5rqbkc5699kdy2mrjs5448phl18jch45ylp2wy2r8c2qj",
+  "fetcher": "github",
+  "repo": "ludwigpacifici/modern-cpp-font-lock",
+  "unstable": {
+   "version": [
+    20190331,
+    1528
+   ],
+   "commit": "02f104701bc34c146d22e3143ae59ef362999098",
+   "sha256": "14vxxvvm12jnq4llb759h8y4w3cv71d3xic1mbp0jmyd0j4dkqzp"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    3
+   ],
+   "commit": "3e9c18b5a2ade485565f5191f12a724f1969dbb0",
+   "sha256": "0jg5yix4c18gvy5n4wsi7zg2sb7r0bw0xlmq0w15g3z63nhy69vc"
+  }
+ },
+ {
+  "ename": "modern-fringes",
+  "commit": "c765214f003426ac7a0e98c5764b14dd61ccce52",
+  "sha256": "0acp18v97k2iahbd5kp240g46wqdmrk4ddrsgvckzm0chsmjmm8q",
+  "fetcher": "github",
+  "repo": "specialbomb/emacs-modern-fringes",
+  "unstable": {
+   "version": [
+    20200321,
+    1817
+   ],
+   "commit": "108daba8407dc8acf140157e7f49137c397a0af7",
+   "sha256": "15370yw3147fzx8ly1svk7xvm0l9fg2gbzd8sx9ls93nyml7c5k7"
+  },
+  "stable": {
+   "version": [
+    4,
+    4
+   ],
+   "commit": "6884dd16e4d76dedd792f0c5fed48ca8a2f11222",
+   "sha256": "10h5557sppi41pgbbjsffc9n67h8ja28skhdlklc0n6zap71m87s"
+  }
+ },
+ {
+  "ename": "modtime-skip-mode",
+  "commit": "486a675ca4898f99133bc18202e123fb58af54c0",
+  "sha256": "1drafwf4kqp83jp47j2ddl2n4a92zf1589fnp6c72hmjqcxv3l28",
+  "fetcher": "github",
+  "repo": "jordonbiondo/modtime-skip-mode",
+  "unstable": {
+   "version": [
+    20140128,
+    2201
+   ],
+   "commit": "c0e49523aa26b2263a8693691ac775988015f592",
+   "sha256": "0ri841cwx2mx8ri50lhvifmxnysdc022421mlmklql0252kn775l"
+  }
+ },
+ {
+  "ename": "modus-operandi-theme",
+  "commit": "6f3291ebede304fe14240870372c0d396f43c0d9",
+  "sha256": "15rq4l14a7y6p8vhgbs017crfwyp7fq61n03xbfycq92mlx89kgx",
+  "fetcher": "gitlab",
+  "repo": "protesilaos/modus-themes",
+  "unstable": {
+   "version": [
+    20200513,
+    601
+   ],
+   "commit": "4b3f6a383642fb81a3407dde5d887e2d937ec471",
+   "sha256": "0adbyyfpwzcc1y2vlbdf5kxwxsspm1cnxpd21rjnvcc06pvxzq4s"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    1
+   ],
+   "commit": "89a31f6242dac52071ee6be18feadcb604b548d7",
+   "sha256": "0kax2pl2x37yvn9zg3vnr9vp39sfgm7650lz2svp535srhki80il"
+  }
+ },
+ {
+  "ename": "modus-vivendi-theme",
+  "commit": "74909ab53df89c5b720c89527b3b4c9aec8351b9",
+  "sha256": "16bs48amvwikp4ikv8fs9zrsyz942jdzlz9ddf3qv8c9vpc5x58q",
+  "fetcher": "gitlab",
+  "repo": "protesilaos/modus-themes",
+  "unstable": {
+   "version": [
+    20200513,
+    601
+   ],
+   "commit": "4b3f6a383642fb81a3407dde5d887e2d937ec471",
+   "sha256": "0adbyyfpwzcc1y2vlbdf5kxwxsspm1cnxpd21rjnvcc06pvxzq4s"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    1
+   ],
+   "commit": "89a31f6242dac52071ee6be18feadcb604b548d7",
+   "sha256": "0kax2pl2x37yvn9zg3vnr9vp39sfgm7650lz2svp535srhki80il"
+  }
+ },
+ {
+  "ename": "moe-theme",
+  "commit": "4efefd7edacf90620436ad4ef9ceb470618a8018",
+  "sha256": "1nqvj8spvffgjvqlf25rcm3dc6w1axb6qlwwsjhq401a6xhw67f6",
+  "fetcher": "github",
+  "repo": "kuanyui/moe-theme.el",
+  "unstable": {
+   "version": [
+    20200216,
+    1927
+   ],
+   "commit": "01d00a8d75b19f641b639ba23793cdd507c61f05",
+   "sha256": "14higsv6h0pka90gr25a3yxh95xn65l6qxb39mmdzkfdlnzsg664"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "b8f0206614ab40ffb75e50ce6c38675fb9c7cf2e",
+   "sha256": "0pn3a1rrj7ycxh91x3q008b6rmq7rbl8ir6diqzqfp6y465pn2w2"
+  }
+ },
+ {
+  "ename": "molecule",
+  "commit": "7421b67dc51abf13bb028e467bb4c83f857a342e",
+  "sha256": "0kdwmn4gb382igy979y7x2fdqcnfxlb4dvqvm6w7ghs564grzgj4",
+  "fetcher": "git",
+  "url": "https://git.daemons.it/drymer/molecule.el/",
+  "unstable": {
+   "version": [
+    20180527,
+    743
+   ],
+   "commit": "2ef72b81d9aa24ea782b71a061a3abdad6cae162",
+   "sha256": "0fn16jlpdfy35mz0n27bzdiwgvv8l9nfxf8j4pypgpqarnxzpsgc"
+  }
+ },
+ {
+  "ename": "molokai-theme",
+  "commit": "b1fdc89f0c52231f238096a1d42c2c330cb50d2c",
+  "sha256": "0srdh3yx7j6xs7rgpzmsyzz6ds00kq887rs2sfa0nvk0j0ga6baf",
+  "fetcher": "github",
+  "repo": "alloy-d/color-theme-molokai",
+  "unstable": {
+   "version": [
+    20151016,
+    1545
+   ],
+   "commit": "04a44f21184b6a26caae4f2c92db9019d883309c",
+   "sha256": "1hqa59pdrnwfykyl58lr8pfbh2f13sygvmrh707hbwc2aii0jjv2"
+  }
+ },
+ {
+  "ename": "mongo",
+  "commit": "7856a62fb86415c88aa72b574895328c93c10a09",
+  "sha256": "1xkhn8h6z60jah7v5gvkp4pfwdnmc2wcka4rcjaky51yv50zymad",
+  "fetcher": "github",
+  "repo": "emacsorphanage/mongo",
+  "unstable": {
+   "version": [
+    20150315,
+    1219
+   ],
+   "commit": "595529ddd70ecb9fab8b11daad2c3929941099d6",
+   "sha256": "0z8mcfhj425hb91fkj1pyg3apw1kf4mgy8lx6n1sc8zmib38py0x"
+  }
+ },
+ {
+  "ename": "monitor",
+  "commit": "b9df614e8e7b9dfdbd7eec552a2b13e0f5acfc22",
+  "sha256": "11n4nv6vkjw434yrwqjw20229m2sxqxxdp7sg99gzrd5gjyab643",
+  "fetcher": "github",
+  "repo": "GuiltyDolphin/monitor",
+  "unstable": {
+   "version": [
+    20161018,
+    1144
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "63f4643a0ee81616dbb692b8b03bae21df2283e2",
+   "sha256": "1hl7nzxvjwv9kknyjikkbxw1gbi5kx4hkkq7sw6jnj06192n93yg"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "8c67c06f60a89b2583bae90afc91a7e7d73260fd",
+   "sha256": "1r2sns49f5fw4f122s165sa41nkrkq2qs20n98g2pfd1whflqfnb"
+  }
+ },
+ {
+  "ename": "monky",
+  "commit": "9b33d35e3004f3cc8a5c17aa1ee07dd21d2d46dc",
+  "sha256": "1m7hy3ijwgxqjk3vjvqkxqj8b5bqnd201bmf302k45n0dpjmhshz",
+  "fetcher": "github",
+  "repo": "ananthakumaran/monky",
+  "unstable": {
+   "version": [
+    20190619,
+    1637
+   ],
+   "commit": "9d379a2306a8b7cd9c4faba20490480acdc1d763",
+   "sha256": "0dvywqas1vx0f0qlly8259772zj64sygv3hnmm9yqzy4v725qbhp"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "099f1af9d3f6f6143f5e98a9b844f965a011a120",
+   "sha256": "1fgn7al4zwz2k5wb5dy3byqg9lsrjk9fra341mxh5ma2pfwxjgps"
+  }
+ },
+ {
+  "ename": "monochrome-theme",
+  "commit": "d00b78ead693e844e35c760fe2c39b8ed6cb0d81",
+  "sha256": "0cq2clliwcwnn1spz1w6y5qw1lgqznw212rcc4q6f1kslq0jyk5x",
+  "fetcher": "github",
+  "repo": "fxn/monochrome-theme.el",
+  "unstable": {
+   "version": [
+    20140326,
+    1050
+   ],
+   "commit": "bfca67fe7365310bc47ae9ca96c417caada54896",
+   "sha256": "0jvsss38rgry37dnshxbqxcj7qh1q6iyza58kix47h5wbnrpvszn"
+  }
+ },
+ {
+  "ename": "monokai-alt-theme",
+  "commit": "6ff05515c2f3bd80cb8d7de9afc8fd983e62ad91",
+  "sha256": "135bli9vhgl898526q6znjvck356bja1ylsfi95d9445jd136c4v",
+  "fetcher": "github",
+  "repo": "dawidof/emacs-monokai-theme",
+  "unstable": {
+   "version": [
+    20170630,
+    2048
+   ],
+   "commit": "f342b6afc31f929be0626eca2d696ee9fab78011",
+   "sha256": "1lgsqrwf21b0rh4x8nmj08a46ld7dkq4jhwxi1fi7a9xhmi2yd4i"
+  }
+ },
+ {
+  "ename": "monokai-pro-theme",
+  "commit": "0d5fbd76a40d84dd2d91a1022f59c15e6db6b90a",
+  "sha256": "05ya47cmry2fprssjx3adwij9zd218rcnikpw9hximwlklmzjvb3",
+  "fetcher": "github",
+  "repo": "belak/emacs-monokai-pro-theme",
+  "unstable": {
+   "version": [
+    20200504,
+    237
+   ],
+   "commit": "06f907e4a954688ec2096420fea1c9935d819e07",
+   "sha256": "1k73bnwyjnmgvx4664pqrk1ig0rr0rwxzlf165dh5fspzqkmrjqh"
+  }
+ },
+ {
+  "ename": "monokai-theme",
+  "commit": "2bc9ce95a02fc4bcf7bc7547849c1c15d6db5089",
+  "sha256": "13mv4vgsmdbf3v748lqi7b42hvr3yp86n97rb6792bcgd3kbdx7a",
+  "fetcher": "github",
+  "repo": "oneKelvinSmith/monokai-emacs",
+  "unstable": {
+   "version": [
+    20200416,
+    2001
+   ],
+   "commit": "4281fc13dadef98942c8d43024de024f2392fec5",
+   "sha256": "0049ny3m1mgn0b97m0clcmmh2xzn66flbsd8k45dn0qxm5wlaj3n"
+  },
+  "stable": {
+   "version": [
+    3,
+    5,
+    3
+   ],
+   "commit": "1143c072f5153ae1a69807e5e8af163069b947d2",
+   "sha256": "0dy8c3349j7fmp8052hbgvk0b7ldlv5jqpg0paq1i0hlypivd30i"
+  }
+ },
+ {
+  "ename": "monotropic-theme",
+  "commit": "38222d109ece0030b0bfafb242aa100694b2bfcf",
+  "sha256": "129yqjh4gaab1kjijzkzbw50alzdiwmpv9cl3lsy04m8zk02shl8",
+  "fetcher": "github",
+  "repo": "caffo/monotropic-theme",
+  "unstable": {
+   "version": [
+    20181015,
+    1230
+   ],
+   "commit": "36df566aa8225e303f6c9d90c00740dd678a415e",
+   "sha256": "05n8s3719f6yrh4fi5xyzzlhpsgpbc60mmfmzycxlb4sinq9bfks"
+  }
+ },
+ {
+  "ename": "monroe",
+  "commit": "590e5e784c5a1c12a241d90c9a0794d2737a61ef",
+  "sha256": "04rhninxppvilk7s90g0wwa0g9vfcg7mk8mrb2m2c7cb9vj6wyig",
+  "fetcher": "github",
+  "repo": "sanel/monroe",
+  "unstable": {
+   "version": [
+    20190912,
+    1624
+   ],
+   "commit": "508f5ed0f88b0b5e01a37d456186ea437f44d93c",
+   "sha256": "01dwnb7f6c49q8vr3qb9m5h1wh9h119axxalqa71wahi1ygrcydc"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "commit": "0b9b043f042145bf62969add7ec476ea51da7cbd",
+   "sha256": "101lfrykdbv37spkbw7zihhx26bc1lhjyxbanrcp9880bxj04jiy"
+  }
+ },
+ {
+  "ename": "mood-line",
+  "commit": "b10524f105943648ecf52f007f363b7b5534865e",
+  "sha256": "0wj8rdgsqsdd2ps3w7sj8a7yhhz0iczwgnalalzws42x8s9yn4j0",
+  "fetcher": "gitlab",
+  "repo": "jessieh/mood-line",
+  "unstable": {
+   "version": [
+    20200429,
+    309
+   ],
+   "commit": "5ff7cb514d7842901b592fa5132b75bc2b0df2e8",
+   "sha256": "135cl8fksl0hyh7jxmdmwng1ppcv3lc3i39v7vslkwi2xp7b0xfk"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    2
+   ],
+   "commit": "5ff7cb514d7842901b592fa5132b75bc2b0df2e8",
+   "sha256": "135cl8fksl0hyh7jxmdmwng1ppcv3lc3i39v7vslkwi2xp7b0xfk"
+  }
+ },
+ {
+  "ename": "mood-one-theme",
+  "commit": "44fbe8c54e4052e6c38849a12425db8f7c04fcc1",
+  "sha256": "1ar3vsc0d838m2k54f4v8a4mc0g21qa9rmgr2wb763vb7vpcznmi",
+  "fetcher": "gitlab",
+  "repo": "jessieh/mood-one-theme",
+  "unstable": {
+   "version": [
+    20191029,
+    743
+   ],
+   "commit": "77ff4bfd954d46bc7580175ef443a9168938f9cd",
+   "sha256": "02aqp3na2401n0mc6fbqvlwrfvbq283kyn9fhan4d0i6mrgvdblx"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    4
+   ],
+   "commit": "98c2f3ca27dce87cec1bd7ffd322b48129213588",
+   "sha256": "1rs9az5d4279jqldvx963qx0plbxp49c3crksmcq6si0x1iwg86x"
+  }
+ },
+ {
+  "ename": "moody",
+  "commit": "63521fe6a1e540544a07231cc94144439e8caea7",
+  "sha256": "095241sjw330fb5lk48aa4zx8xbzk8s4ml22n6a8bzr99nkhn5jy",
+  "fetcher": "github",
+  "repo": "tarsius/moody",
+  "unstable": {
+   "version": [
+    20200514,
+    1946
+   ],
+   "commit": "f6bebfe6fe51b728ebd013b7084becad23cabad3",
+   "sha256": "0n8p864yj5m3n7f9qiq9hy24dwfvv0a0wchx2818rppff6vfq3hf"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    3
+   ],
+   "commit": "2751d36152abcc2ac1479225392182b53f1e02dd",
+   "sha256": "1xyw4l42053595r76lj8safsx6pj25as0107wd96by3h7dg9m586"
+  }
+ },
+ {
+  "ename": "moom",
+  "commit": "c55081230ee02346ed02e0ab19ee2302e7b9ffa7",
+  "sha256": "11l4yc8fhxsrsjfksqj4cxr13jln0khhd2dn09i94n71dx7lybh1",
+  "fetcher": "github",
+  "repo": "takaxp/moom",
+  "unstable": {
+   "version": [
+    20191118,
+    902
+   ],
+   "commit": "f16c8c509990932f3db7570a838a441d5c22dec3",
+   "sha256": "172ih3wa3n6q46i7hcjddvnpy4h3vjldj42wvid4lpny0ibjazfy"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    0
+   ],
+   "commit": "536eac1dd2b187f65ed85ad8efc95f7e2bcaadb2",
+   "sha256": "12v2m66dlvnggmraxgmcfq4ycv6wdc56dv63gggrcy7zhlxwi9vp"
+  }
+ },
+ {
+  "ename": "moonscript",
+  "commit": "3046afee95277024830d7d372f2f1c84a0adcb00",
+  "sha256": "1fi4hg5gk5zpfkrk0hqghghkzbbi33v48piq2i085i4nc6m3imp0",
+  "fetcher": "github",
+  "repo": "k2052/moonscript-mode",
+  "unstable": {
+   "version": [
+    20170831,
+    2226
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "56f90471e2ced2b0a177aed4d8c2f854797e9cc7",
+   "sha256": "1v2phdpfngrb01x4qygpfgxdzpgvbprki2kbmpc83vlqxlmkvvjk"
+  }
+ },
+ {
+  "ename": "moonshot",
+  "commit": "a0d294051a792679d215dbb830a600fdf5090866",
+  "sha256": "12gj1df28s7c05vplsx88hcsxjr13hnh8sc7878pj11kabgihpf6",
+  "fetcher": "github",
+  "repo": "ageldama/moonshot",
+  "unstable": {
+   "version": [
+    20200210,
+    2356
+   ],
+   "deps": [
+    "cl-lib",
+    "counsel",
+    "f",
+    "levenshtein",
+    "projectile",
+    "realgud",
+    "s",
+    "seq"
+   ],
+   "commit": "83a9933cd4af234ae15fdc3a39e660d646b0c246",
+   "sha256": "0rljyk4pkjwwh9mrpjdzywc4lyf163glzqhjs3nlvfy2yz9j0863"
+  }
+ },
+ {
+  "ename": "morganey-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "18cbmx8lnypgxkisxa3lrh88v8l9k0q8fnai5ps8ngvfgz42rlqp",
+  "fetcher": "github",
+  "repo": "morganey-lang/morganey-mode",
+  "unstable": {
+   "version": [
+    20170118,
+    934
+   ],
+   "commit": "5cf3870432a2aeb69d373abe63b3be1f325f6d21",
+   "sha256": "04xv4v2n03axjlpm9pg3j4zjapqjb7is3anx6laa90zbw3z2iv9z"
+  }
+ },
+ {
+  "ename": "morlock",
+  "commit": "b6ef53bbc80edda12a90a8a9705fe14415972833",
+  "sha256": "0693jr1k8mzd7hwp52azkl62c1g1p5yinarjcmdksfyqblqq5jna",
+  "fetcher": "github",
+  "repo": "tarsius/morlock",
+  "unstable": {
+   "version": [
+    20180318,
+    2023
+   ],
+   "commit": "b883d48024ddfffebe2d0dd69f5ed54c617f8834",
+   "sha256": "0xns4f39x012n7piiv6kgb45n932wxs5fp4yyq44p1mnr0m8v4y8"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    2
+   ],
+   "commit": "b883d48024ddfffebe2d0dd69f5ed54c617f8834",
+   "sha256": "0xns4f39x012n7piiv6kgb45n932wxs5fp4yyq44p1mnr0m8v4y8"
+  }
+ },
+ {
+  "ename": "mosey",
+  "commit": "76a9a43eea68db9f82c07677235c481a6f243aa2",
+  "sha256": "0zprzr5aqv77kmg1ki9w6fw1nc2ap6yqjl4ak05a1i9cq8g6nf3m",
+  "fetcher": "github",
+  "repo": "alphapapa/mosey.el",
+  "unstable": {
+   "version": [
+    20180614,
+    1649
+   ],
+   "commit": "2e3ac9d334fa2937ed5267193dfd25d8e1f14dc2",
+   "sha256": "1yxy6m5igvsy37vn93ijs0b479v50vsnsyp8zi548iy2ribr0qr5"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "2e3ac9d334fa2937ed5267193dfd25d8e1f14dc2",
+   "sha256": "1yxy6m5igvsy37vn93ijs0b479v50vsnsyp8zi548iy2ribr0qr5"
+  }
+ },
+ {
+  "ename": "mote-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0ccsyl0wvf0nbsw57sxad7w0c0i5al5s5mjrjjq8bnfh4dyj2x0y",
+  "fetcher": "github",
+  "repo": "inkel/mote-mode",
+  "unstable": {
+   "version": [
+    20160123,
+    29
+   ],
+   "deps": [
+    "ruby-mode"
+   ],
+   "commit": "666c6641addbd3b337a7aa01fd2742ded2f41b83",
+   "sha256": "10mf96r75558scn71pri71aa8nhp6hmnb5rwjxlh5dlf80r5dfd7"
+  }
+ },
+ {
+  "ename": "motion-mode",
+  "commit": "c1e3a2091a73c7d725c929313290566f5ca19404",
+  "sha256": "1lfsc8ayiz2v3dfn8c0mmfch8vpzqyddxw8kscan2lzl2lcj50h0",
+  "fetcher": "github",
+  "repo": "ainame/motion-mode",
+  "unstable": {
+   "version": [
+    20140920,
+    156
+   ],
+   "deps": [
+    "flymake-cursor",
+    "flymake-easy"
+   ],
+   "commit": "4c94180e3ecea611a61240a0c0cd48f1032c4a55",
+   "sha256": "17570labnwdnwca2cg4ga0mrrm00n0h3wlxry823k5yn3k93rnj1"
+  }
+ },
+ {
+  "ename": "mouse-slider-mode",
+  "commit": "8fa747999bb928c3836400a43d8ab63939381673",
+  "sha256": "0aqxjm78k7i8c59w6mw9wsfw3rail1pg40ac1dbcjkm62fjbh5hy",
+  "fetcher": "github",
+  "repo": "skeeto/mouse-slider-mode",
+  "unstable": {
+   "version": [
+    20161021,
+    1914
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b3c19cd231edecce76787c5a9bbe5e4046d91f88",
+   "sha256": "1qkbrwicp3gaknnmfrajf1qdyhj5s0c09cx62869rp2721p8rqaw"
+  }
+ },
+ {
+  "ename": "move-dup",
+  "commit": "3ea1f7f015a366192492981ff75672fc363c6c18",
+  "sha256": "0b0lmiisl9yckblwf7619if88qsmbka3bl4qiaqam7fka7psxs7f",
+  "fetcher": "github",
+  "repo": "wyuenho/move-dup",
+  "unstable": {
+   "version": [
+    20200506,
+    2305
+   ],
+   "commit": "fa9be365fcd6a2b89388b4d27dec93928d506678",
+   "sha256": "0pb5xfzk5lfdz613hqsr9x1f0i5ls61xc0np43kqaxnr4xjz2fld"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "dae61de7aa5e2bf56a7bab1fa36fa3a39520a3c0",
+   "sha256": "1mrrxx2slxi1qgf483nnxv3y8scfsc844sfnzn4b7hjpfpali0r8"
+  }
+ },
+ {
+  "ename": "move-text",
+  "commit": "82bfd0f41e42eed1d4c2361ec1d1685edebbac1b",
+  "sha256": "04bfrkanafmbrdyw06ciw9kiyn7h3kpikxk3clx2gc04jl67hzgy",
+  "fetcher": "github",
+  "repo": "emacsfodder/move-text",
+  "unstable": {
+   "version": [
+    20170909,
+    330
+   ],
+   "commit": "7cbc941a9150468609010a93c429117da2523903",
+   "sha256": "1irrcbqi1m6pcsjkbd3nqri158qhl0bcynciwwxdfqb45i67a1m9"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    8
+   ],
+   "commit": "bdaf3e3a0d33cd528cad1d10facbdf0635232e4d",
+   "sha256": "06jxk5g23822gfmwrxhc34zand3dr8p2wjh1zs3j61ibz6n0nmz1"
+  }
+ },
+ {
+  "ename": "mowedline",
+  "commit": "86f7df6b8df3398ef476c0ed31722b03f16b2fec",
+  "sha256": "0c2hvvwa7s5iyz517jaskshdcq9zs15zr6xsvrcb3biahrh4bmfb",
+  "fetcher": "github",
+  "repo": "retroj/mowedline",
+  "unstable": {
+   "version": [
+    20161122,
+    235
+   ],
+   "commit": "6121b7d4aacd18f7b24da226e61dbae054e50a7c",
+   "sha256": "16j3y4hffnv2rg97p49hqz3x1icp7qkpcjxhalny5l4gysx9mfqg"
+  },
+  "stable": {
+   "version": [
+    3,
+    3,
+    0
+   ],
+   "commit": "c17501b48ded8261d815ab60bf14cddf7040be72",
+   "sha256": "1k3b018xq2qqq30v0ik13imy9c84241kyavj5ascxhywx956v18g"
+  }
+ },
+ {
+  "ename": "moz",
+  "commit": "6839c5e52364fb32f6d8a351e5c2f21fbd6669a1",
+  "sha256": "0ar2xgsi7csjj6fgiamrjwjc58j942dm32j3f3lz21yn2c4pnyxi",
+  "fetcher": "github",
+  "repo": "bard/mozrepl",
+  "unstable": {
+   "version": [
+    20150805,
+    1706
+   ],
+   "commit": "ab3e79914445039ceb62f7f2dc342358fec3492e",
+   "sha256": "1c7dsip5wmlf7x2hziwil5n3igvpnh17d7yg8lsg001y5sjl3mjv"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "646208b67e6c9c56d188db1eba999846d518935f",
+   "sha256": "13bf5jn1kgqg59j5czlzvajq2fw1rz4h5jqfc7x8w1a067nymf2c"
+  }
+ },
+ {
+  "ename": "moz-controller",
+  "commit": "fcc20337594a76a547f696adece121ae592c6917",
+  "sha256": "18gca1csl9dfi9995mky8cbgi3xzf1if8pzdjiz5404gzcqk0rfd",
+  "fetcher": "github",
+  "repo": "RenWenshan/emacs-moz-controller",
+  "unstable": {
+   "version": [
+    20151209,
+    206
+   ],
+   "deps": [
+    "moz"
+   ],
+   "commit": "46f665c03574fa922de767fc29795e0db4a7c5c6",
+   "sha256": "0fssn33ld6xhjlwg1dbrjg8sa0pjmglq0dw792yrmvm4fj0zjph8"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "moz"
+   ],
+   "commit": "42fd842039620de7fb122f7e4ffc1ab802ee97c5",
+   "sha256": "1w1i1clkjg9mj1g4i2y3xw3hyj8s7h9gr04qgyb9c1q8vh11z8d0"
+  }
+ },
+ {
+  "ename": "mozc",
+  "commit": "30fef77e1d7194ee3c3c1d4775c349a4a9f6af2c",
+  "sha256": "0nslh4xyqpvzdxcgrd1bzaqcdz77bghizh6n2w6wk46cflir8xba",
+  "fetcher": "github",
+  "repo": "google/mozc",
+  "unstable": {
+   "version": [
+    20180101,
+    800
+   ],
+   "commit": "afb03ddfe72dde4cf2409863a3bfea160f7a66d8",
+   "sha256": "0w2dy2j9x5nc7x3g95j17r3m60vbfyn5j617h7js9xryv33yzpgx"
+  }
+ },
+ {
+  "ename": "mozc-cand-posframe",
+  "commit": "2c952ffcf7c2c358500df86e3ddeb6a10a119725",
+  "sha256": "0spxc1z7glls47k6cpq14cpbx9h0svl9qn954x8f1c7kcdy4wz6p",
+  "fetcher": "github",
+  "repo": "akirak/mozc-posframe",
+  "unstable": {
+   "version": [
+    20200208,
+    750
+   ],
+   "deps": [
+    "mozc",
+    "posframe",
+    "s"
+   ],
+   "commit": "1d07d5055381008ccbb29b97315d140e09a7ee95",
+   "sha256": "1hwc66xj2js5srmshmba5q6adn638qgbslnxg9l15znfhq3qcy9w"
+  }
+ },
+ {
+  "ename": "mozc-im",
+  "commit": "4b651b7f1c15b44577b3c2b7493264ed802cf073",
+  "sha256": "1gqzmm712npj36qfi506zgl0ycd6k7l5m46c7zz2z2lb6jpssw10",
+  "fetcher": "github",
+  "repo": "d5884/mozc-im",
+  "unstable": {
+   "version": [
+    20160412,
+    22
+   ],
+   "deps": [
+    "mozc"
+   ],
+   "commit": "df614a1076c28a11551fb3e822868bae47e855a5",
+   "sha256": "0cpcldizgyr125j7lzkl8l6jw1hc3fb12cwgkpjrl6pjpr80vb15"
+  }
+ },
+ {
+  "ename": "mozc-popup",
+  "commit": "49bdcf035b9f885a689b9dc21817aecdcd09768b",
+  "sha256": "1n43lwflxzzyskxgzg19rg3hiqqkf5l7vfgaydryf4sk8480x687",
+  "fetcher": "github",
+  "repo": "d5884/mozc-popup",
+  "unstable": {
+   "version": [
+    20150224,
+    34
+   ],
+   "deps": [
+    "mozc",
+    "popup"
+   ],
+   "commit": "f0684b875a7427ec08f8df13939a486e5d5cf420",
+   "sha256": "1mbpkjc6sk7qqmgsmr5a5l2ycwnqp8bkwgikdavgs6hnal10bkmn"
+  }
+ },
+ {
+  "ename": "mozc-temp",
+  "commit": "e0c77275d759bf73df11fa151b4e737d7cb15adf",
+  "sha256": "0x1bsa1py0kn73hzbsb4ijl0bqng8nib191vgn6xq8f5cx55044d",
+  "fetcher": "github",
+  "repo": "HKey/mozc-temp",
+  "unstable": {
+   "version": [
+    20160228,
+    840
+   ],
+   "deps": [
+    "dash",
+    "mozc"
+   ],
+   "commit": "01f09b6c0b308e9f7057fb2aa80171e2ce328bb8",
+   "sha256": "0vgyx7v79224mg3ci8i5kjasnh1w0c48jzwgxbjj270lrra3gfsr"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "dash",
+    "mozc"
+   ],
+   "commit": "7f5dd5fc8ceeca9b1822f7e056a4be67e2e74959",
+   "sha256": "1gdi2pz8450h11aknz3hbgjlx09w6c4l8d8sz0zv3pb1z8cqkgqv"
+  }
+ },
+ {
+  "ename": "mpages",
+  "commit": "b535c2862c4fad568324466883f23ba9f39e787f",
+  "sha256": "11scjjwwrpgaz6i4jq9y7m864nfak46vnbfb0w15625znz926jcs",
+  "fetcher": "github",
+  "repo": "slevin/mpages",
+  "unstable": {
+   "version": [
+    20150710,
+    1404
+   ],
+   "commit": "39a72a0931ab1cdbfdf0ab9f412dc12d43a3829f",
+   "sha256": "11c8pr3s77aq34ic32lnsialwh8bw3m78kj838xl2aab2pgrlny2"
+  }
+ },
+ {
+  "ename": "mpdel",
+  "commit": "bb25443752e18e47afc63d5497cc5052c388a607",
+  "sha256": "1py6zk16yl7pyql2qxzd770clzszw7c769hw70n963kns1qmpif8",
+  "fetcher": "github",
+  "repo": "mpdel/mpdel",
+  "unstable": {
+   "version": [
+    20200221,
+    1316
+   ],
+   "deps": [
+    "libmpdel",
+    "navigel"
+   ],
+   "commit": "29e7c46f83bab7aedfa0136c58e776faba6ad4ed",
+   "sha256": "1lz3i3ygdihr7r9rnb08fkcxrdg905wkb0s55pid57yhh4iva7fg"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "libmpdel"
+   ],
+   "commit": "a2da2f2fe2357641909514da788f7c6cbe5801f4",
+   "sha256": "0pyyvbzskr44dxbmlp3y0r6s459fd51cvwjmnjaqxfxflr5v891g"
+  }
+ },
+ {
+  "ename": "mpmc-queue",
+  "commit": "30511f1e5eaf45b5f43fbacdd6c7254cb39b1d2c",
+  "sha256": "08jcmhfl87nsg6zgv582yfs152bqihbcssh085gxxqn2x99li354",
+  "fetcher": "github",
+  "repo": "smizoe/mpmc-queue",
+  "unstable": {
+   "version": [
+    20180303,
+    2029
+   ],
+   "deps": [
+    "queue"
+   ],
+   "commit": "df07d6bef7468edb1d73ef73b8331b94d0e5d0ca",
+   "sha256": "17817l3afghg9z8jxkj61yg85plmr74ki3wf4hz685llx8fr69w0"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "queue"
+   ],
+   "commit": "4775ddcb120528828ef1fcb7ee761524a0907a31",
+   "sha256": "0fbrx288vpd0vx2cph7kfclr7hhplqjgynr6csmkh8jaskv26p79"
+  }
+ },
+ {
+  "ename": "mpv",
+  "commit": "2392c1d1042ac6a42bbf9aa7e394c03e178829d0",
+  "sha256": "1vq308ac6jj1h8qa2b2sypisb38hbvwjimqndhpfir06fghkw94l",
+  "fetcher": "github",
+  "repo": "kljohann/mpv.el",
+  "unstable": {
+   "version": [
+    20200315,
+    2158
+   ],
+   "deps": [
+    "cl-lib",
+    "json",
+    "org"
+   ],
+   "commit": "2d40c4550558eb1bf35a69446777c4e9cae7a623",
+   "sha256": "0f9iq83dfj73gbx7zndvh32b102582lzv4xb8gvqjs26k5bywdxj"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "json",
+    "names",
+    "org"
+   ],
+   "commit": "059135de3979e044f14503806047476d9be9f0e8",
+   "sha256": "1pjhch8vah0kf73fl2fk6khhrx1kflggd3zlxrf7w4fxr0qn8la3"
+  }
+ },
+ {
+  "ename": "mqr",
+  "commit": "0023747e8173fab8e88143ee95a31540a079c6bf",
+  "sha256": "1nw713sha29q1zgsxxfrkggkrk6q8vvk9sdi1s539r8h35bc3jx0",
+  "fetcher": "github",
+  "repo": "calancha/multi-replace",
+  "unstable": {
+   "version": [
+    20180527,
+    1204
+   ],
+   "commit": "4ade19d4620b8b61340290bf63fa56d5e493859f",
+   "sha256": "0pkxmv0rla9f2ly9fq3i3mrsa2q8rsrs4pk6w7wpi3v5fbj1jmd6"
+  }
+ },
+ {
+  "ename": "mqtt-mode",
+  "commit": "b85c84ff9523026620e5b3cf864bbc7b9f81d57a",
+  "sha256": "1zbnhd65c9wz9yr29j37c8z7vz3axpfwkzx0z8xjplp40mafpz1z",
+  "fetcher": "github",
+  "repo": "andrmuel/mqtt-mode",
+  "unstable": {
+   "version": [
+    20180605,
+    1731
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "36d1d4296d79e17b8f35e8e14f2708980eb502db",
+   "sha256": "1116xvwpavg7icm263s0clgxhw3qqm4aqiw4ky94w9a8ydazx51l"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "613e70e9b9940e635e779994b5c83f86eb62c8e6",
+   "sha256": "1ci1w4yma6axiigz55b2ip0r7zy8v215532jc0rkb3wyn14nsrh7"
+  }
+ },
+ {
+  "ename": "msgpack",
+  "commit": "773cb12f9aef4ad45179cb7dd07275d886907836",
+  "sha256": "1vcbngsr0xpqy00g837p2awkin82s145ksh223c1msszwwwgdx5m",
+  "fetcher": "github",
+  "repo": "xuchunyang/msgpack.el",
+  "unstable": {
+   "version": [
+    20200323,
+    515
+   ],
+   "commit": "90e3086f259549b1667a3c5b9aa2d70aaeaa4d3d",
+   "sha256": "0g9a59x7xjf1p2swbi3v8bawdwkqliw3kcg70bca5dgg2jxgd4z6"
+  }
+ },
+ {
+  "ename": "msvc",
+  "commit": "69939b85353a23f374cab996ede879ab315a323b",
+  "sha256": "04gq2klana557qvsi3bv6416l0319jsqb6bdfs7y6729qd94hlq3",
+  "fetcher": "github",
+  "repo": "yaruopooner/msvc",
+  "unstable": {
+   "version": [
+    20191211,
+    540
+   ],
+   "deps": [
+    "ac-clang",
+    "cedet",
+    "cl-lib"
+   ],
+   "commit": "9fe50e5961fa63fc5cf7326370f441993e9d5cfc",
+   "sha256": "133pidan95qyn78gdhfxlyk8x5f28rm5rwb9wdw1gpjy4l72q22f"
+  },
+  "stable": {
+   "version": [
+    1,
+    4,
+    2
+   ],
+   "deps": [
+    "ac-clang",
+    "cedet",
+    "cl-lib"
+   ],
+   "commit": "9fe50e5961fa63fc5cf7326370f441993e9d5cfc",
+   "sha256": "133pidan95qyn78gdhfxlyk8x5f28rm5rwb9wdw1gpjy4l72q22f"
+  }
+ },
+ {
+  "ename": "mtg-deck-mode",
+  "commit": "425fa66cffe7bfda71de4ff2b49e951456bdeae1",
+  "sha256": "07hszf33nawhp218f90qr4s713yyjdd7zzkq0s8q0fb6aai5iiih",
+  "fetcher": "github",
+  "repo": "mattiasb/mtg-deck-mode",
+  "unstable": {
+   "version": [
+    20180613,
+    2010
+   ],
+   "commit": "8265b8ed17fcd4406760c19aa6ee9c76068b1ab0",
+   "sha256": "04qdcqpkic2nhqy6nf15j3zp5hmrfzs2kndvmg5v4vjac2vfmzfb"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "7774641630ef85999ab2f6d57eebddbc7c1e7244",
+   "sha256": "12ajrlgyj14jf66if7bdgj69jm72wzrmiclx7x8dpsz4zpj38m20"
+  }
+ },
+ {
+  "ename": "mu-cite",
+  "commit": "a80bc6e626f4bc6edfe6560833d12d31ecfd7a51",
+  "sha256": "0ap21sw4r2x774q2np6rhrxh2m2rf3f6ak3k71iar159chx32y6q",
+  "fetcher": "github",
+  "repo": "ksato9700/mu-cite",
+  "unstable": {
+   "version": [
+    20190803,
+    439
+   ],
+   "deps": [
+    "flim"
+   ],
+   "commit": "b2c83bbce4646d100b942f0f0de0877a8d47298c",
+   "sha256": "1kg4l88k4gwv7zczmbgxzpmifkbklf3yzlk849igs01z4jvh2bkc"
+  }
+ },
+ {
+  "ename": "mu2tex",
+  "commit": "e55964077f23a9d3ec4b53cb5add6d7166f385e0",
+  "sha256": "1h146xscvlkjgp4wqw11cb1z6gjr1s0ysamcz4ii5gfv82rrjgyc",
+  "fetcher": "github",
+  "repo": "cdominik/mu2tex",
+  "unstable": {
+   "version": [
+    20200512,
+    704
+   ],
+   "commit": "4b84cdac955cb36a8c44a2be48f3310252e3d3ad",
+   "sha256": "05rgx0nb028k1kmb9gbv4b0s20ksbjl0nksyrva2zpvd7xc1nyz9"
+  }
+ },
+ {
+  "ename": "mu4e-alert",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0b74ky51nx75vcrrbabr5cj2cx4yax5kgaq479hjp5yc5mq2q46r",
+  "fetcher": "github",
+  "repo": "iqbalansari/mu4e-alert",
+  "unstable": {
+   "version": [
+    20190418,
+    558
+   ],
+   "deps": [
+    "alert",
+    "ht",
+    "s"
+   ],
+   "commit": "91f0657c5b245a9de57aa38391221fb5d141d9bd",
+   "sha256": "0qr5ww2xj8dibglh175qcq4bdgzs8lylv28hkbijykjshr3pkzn9"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "alert",
+    "ht",
+    "s"
+   ],
+   "commit": "3453e25ff6c07c1b768b2a79fdb9fc5c97100e76",
+   "sha256": "1nvsfbfsma59ilf7c3vjngnmx3aapwvvvaafdy5szm5r6lkicqvg"
+  }
+ },
+ {
+  "ename": "mu4e-conversation",
+  "commit": "7638aecc7a2cd4b1646c6e32fe83e18ef212bbaa",
+  "sha256": "16vhjaxjhshw7ch9ihk35r99549xlbmvybwjx0p9mzyqi30dn3s6",
+  "fetcher": "gitlab",
+  "repo": "ambrevar/mu4e-conversation",
+  "unstable": {
+   "version": [
+    20190609,
+    812
+   ],
+   "commit": "98110bb9c300fc9866dee8e0023355f9f79c9b96",
+   "sha256": "080s96jkcw2p288sp1vgds91rgl693iz6hi2dv56p2ih0nnivwlg"
+  }
+ },
+ {
+  "ename": "mu4e-jump-to-list",
+  "commit": "c1cf98dff029d494007fe25d29bd8bcfecc5b8e6",
+  "sha256": "0yl1vi62pjgklwa7ifvr35fciiqqc5zkrc0m4yxjiv0c0dn50b7n",
+  "fetcher": "gitlab",
+  "repo": "wavexx/mu4e-jump-to-list.el",
+  "unstable": {
+   "version": [
+    20190419,
+    1442
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "358bba003543b49ffa266e503e54aebd0ebe614b",
+   "sha256": "00y9nap61q1z2cdql4k9g7fgi2gdgd9iy5s5lzrd9a4agbx6r7sv"
+  }
+ },
+ {
+  "ename": "mu4e-maildirs-extension",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0bisxm0rph5q1p3zjr7vyyr0jqr3ihs6ihiwyfr8d3dvba1zhffc",
+  "fetcher": "github",
+  "repo": "agpchil/mu4e-maildirs-extension",
+  "unstable": {
+   "version": [
+    20200508,
+    712
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "4d2ece2226fa69a0e0bb23517a418145b92bd573",
+   "sha256": "1gyyj1fzc34qrlfbk86lrrrib46r7lrw7pdxwzrx8jz42rd38jma"
+  },
+  "stable": {
+   "version": [
+    0,
+    8
+   ],
+   "commit": "8b384b0bbda46c473dea3ee7dc68c2b3f2548528",
+   "sha256": "1lyd8pcawn106zwlbq6gdq05i2zhry1qh9cdyjiw61nvgbbfi0yx"
+  }
+ },
+ {
+  "ename": "mu4e-overview",
+  "commit": "ec240f0f9bc43c5abca557607b0b89a24696744e",
+  "sha256": "076lpfj6zrg2ivgbslg9whm4mci278kg45a3km7iadilwipiaxsk",
+  "fetcher": "github",
+  "repo": "mkcms/mu4e-overview",
+  "unstable": {
+   "version": [
+    20200218,
+    546
+   ],
+   "commit": "151d5d9e0dd5e8e8c775035203d3e17538151f33",
+   "sha256": "1gvlh306pcn1g4b7j5pk5m2n2wa72bl9vscfsp0gqr4fwrfnm3r6"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "c34f45b3ab9cce892835e14c6701b531a4f54cce",
+   "sha256": "1jc291xwym2ddiqvn83s2b2jw6a08dd63x0f6526qv8g3yr1jl1s"
+  }
+ },
+ {
+  "ename": "mu4e-query-fragments",
+  "commit": "c1cf98dff029d494007fe25d29bd8bcfecc5b8e6",
+  "sha256": "1gckwfgw7jvr6dbikcmy07i07wjhlvq66swhac2laaj6w567vc7w",
+  "fetcher": "gitlab",
+  "repo": "wavexx/mu4e-query-fragments.el",
+  "unstable": {
+   "version": [
+    20170923,
+    1322
+   ],
+   "commit": "34ddad4e6785f575333efcc66153d892daa1c884",
+   "sha256": "0l5i3a88j9il2y0jq2sfzwi9q3czc1wi8n9nvgdysj5db5m4xsw6"
+  }
+ },
+ {
+  "ename": "muban",
+  "commit": "3576c6b7d79ce6d4df40ce83400fa2468f8fbcdf",
+  "sha256": "1njphxx6sgw952p7v2qkbjwa8sb2mwrxrzv35bzp0d4c84ny2sa0",
+  "fetcher": "github",
+  "repo": "jiahaowork/muban.el",
+  "unstable": {
+   "version": [
+    20180415,
+    1219
+   ],
+   "commit": "7078e439ee0433a8fbd1cb174464496f9a9d00fa",
+   "sha256": "1wpcv4wdk735w701d9bm9qqji98mmzg7l7qkq1jmjw1hbpqhnwl2"
+  }
+ },
+ {
+  "ename": "multi",
+  "commit": "c9fea5cf529bcdf412af2926e55b8d77edc07eca",
+  "sha256": "1c240d1c1g8wb2ld944344zklnv86d9rycmya4z53b2ai10642ig",
+  "fetcher": "github",
+  "repo": "kurisuwhyte/emacs-multi",
+  "unstable": {
+   "version": [
+    20131013,
+    1544
+   ],
+   "commit": "0987ab71692717ed457cb3984de184db9185806d",
+   "sha256": "0f5hc6mgq0hg1wwnvqd4fp7ck58lcavvgqjggz9zlhrjgkmynjxx"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    1
+   ],
+   "commit": "884203b11fdac8374ec644cca975469aab263404",
+   "sha256": "11zabs7qpdhri6n90ck7pgwcbz46d813nyl73h5m1i8jvz1wzx7v"
+  }
+ },
+ {
+  "ename": "multi-compile",
+  "commit": "b312434c6c8e23ded2b74bf8f144ad0b3170adae",
+  "sha256": "16fv0hpwcjw1771zlbgznph0fix9fbm6yqj2rcz1f9l26iih6apz",
+  "fetcher": "github",
+  "repo": "ReanGD/emacs-multi-compile",
+  "unstable": {
+   "version": [
+    20160306,
+    2223
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "bd0331854774e7a269ce8a7dd49580cd397c0ec2",
+   "sha256": "1aswpv1m02n26620hgkcfd38f06bzmmijlr9rs5krv6snq5gdb8g"
+  }
+ },
+ {
+  "ename": "multi-line",
+  "commit": "0f8eee6798a0ba71d437a1cbf82e360a5b60eafb",
+  "sha256": "1aadmijnjr029s1qq4gk8xyl9m8xb5x5774b8i3jyfixyjqvhvwp",
+  "fetcher": "github",
+  "repo": "IvanMalison/multi-line",
+  "unstable": {
+   "version": [
+    20170822,
+    226
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "s",
+    "shut-up"
+   ],
+   "commit": "d5ae863ced0adeb7032ada398005f27a6c669d79",
+   "sha256": "0hj2afqw36pxc091k4w4rk110y076lghnap51x3w53k9xfcfwhwa"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    5
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "s",
+    "shut-up"
+   ],
+   "commit": "778c7510b7f066f53cf1f96a6ad1079fda5dc1f7",
+   "sha256": "0lr1i2a4fw40iz8qz2zqch63ci9pwvrri219phv22kn76jqn39mh"
+  }
+ },
+ {
+  "ename": "multi-project",
+  "commit": "a5b0dadc609d13737d56657c17a945f10e840222",
+  "sha256": "0zq2lwrllj4icksq6y7hz61ah39k60v1jc5qr16zvwyfqxhk8hpb",
+  "fetcher": "hg",
+  "url": "https://hg.osdn.net/view/multi-project/multi-project",
+  "unstable": {
+   "version": [
+    20191117,
+    1203
+   ],
+   "commit": "4045823d51f6330466b6ab83828b6c598ac817a0",
+   "sha256": "18z1mmmjq4xw238mw1417nlqv67qv07blz0lxhpl8m1wma4v96af"
+  }
+ },
+ {
+  "ename": "multi-run",
+  "commit": "e05ad99477bb97343232ded7083fddb810ae1781",
+  "sha256": "1iv4a49czdjl0slp8590f1ya0vm8g2ycnkwrdpqi3b55haaqp91h",
+  "fetcher": "github",
+  "repo": "sagarjha/multi-run",
+  "unstable": {
+   "version": [
+    20190507,
+    2349
+   ],
+   "deps": [
+    "window-layout"
+   ],
+   "commit": "c6256b0cc2876c29faf381d8324b31b911045a27",
+   "sha256": "07nd7lwrnz9j54hq33c8ii1pipd472qfsdifg6fid7kca0rychif"
+  },
+  "stable": {
+   "version": [
+    1
+   ],
+   "deps": [
+    "window-layout"
+   ],
+   "commit": "87d9eed414999fd94685148d39e5308c099e65ca",
+   "sha256": "0m4wk6sf01b7bq5agmyfcm9kpmwmd90wbvh7fkhs61mrs86s2zw8"
+  }
+ },
+ {
+  "ename": "multi-term",
+  "commit": "7868b41da793d973baaaa3351739d3d61066cce4",
+  "sha256": "1wynpis5wzlqd76lp6qq6khxvl30d66w26nc6a2xjgg9fvmhzcas",
+  "fetcher": "github",
+  "repo": "manateelazycat/multi-term",
+  "unstable": {
+   "version": [
+    20200514,
+    428
+   ],
+   "commit": "017c77c550115936860e2ea71b88e585371475d5",
+   "sha256": "043dqd8i8h6hbcg11rzprxin2yq5lb902zlrb7mxah44vyp8wrdi"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "commit": "c9e67edb772f2d9f9da8d887dc746459cfbce244",
+   "sha256": "1bn6zx931vz2fa72ab999r33bxv8brn3cqmalvq25x7s4z3q1lyi"
+  }
+ },
+ {
+  "ename": "multi-vterm",
+  "commit": "c87a280364597340baee7711aa33302c0a349fa7",
+  "sha256": "1dn1m30qmhv4sl84gki8l46rrkabn3ka7nb075q25h1b8lhhijci",
+  "fetcher": "github",
+  "repo": "suonlight/multi-vterm",
+  "unstable": {
+   "version": [
+    20200329,
+    940
+   ],
+   "deps": [
+    "projectile",
+    "vterm"
+   ],
+   "commit": "11f1b0cc97a24aba66fb561a0a94e9a66375b30f",
+   "sha256": "0pzcwn13yj21qcga2agcv8as0jyrmw055fr8nbzvkp1jml4l3vwj"
+  }
+ },
+ {
+  "ename": "multi-web-mode",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "0vi4yvahr10aqpcz4127c8pcqpr5srwc1yhgipnbnm86qnh34ql5",
+  "fetcher": "github",
+  "repo": "fgallina/multi-web-mode",
+  "unstable": {
+   "version": [
+    20130824,
+    354
+   ],
+   "commit": "ad1c8d1c870334052d244c7ae3636cb7b9357b7c",
+   "sha256": "0mc4kkgwnwfk27wwc21nw5ly7qcsl7y5bd8wf2y8r6pxhvwran4n"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "commit": "0517b9e2b3052533ac0cb71eba7073ed309fce06",
+   "sha256": "1d9y3dw27pgzgv6wk575d5ign55xdqgbl3ycyq1z7sji1477lz6b"
+  }
+ },
+ {
+  "ename": "multicolumn",
+  "commit": "f37a999b0583a0ebc842c2f9fad8d08cb6c9dabf",
+  "sha256": "1ylnc3s4ixvnqn7g2p6nzz8x29ggqc703waci430f1rp1lsd3q09",
+  "fetcher": "github",
+  "repo": "Lindydancer/multicolumn",
+  "unstable": {
+   "version": [
+    20150202,
+    2251
+   ],
+   "commit": "c7a3afecd470859b2e60aa7c554d6e4d436df7fa",
+   "sha256": "1ispa0wxpkydm0cyj4scyyacfrbilrip5v8bsrcqfc6qs597z8rf"
+  }
+ },
+ {
+  "ename": "multifiles",
+  "commit": "8b528544841995045fb1f8344aaaa38946bb3915",
+  "sha256": "0m0pi2qjis9p6z9cd8hlxm1r88ynwmd2ks8wg65sffffwsdbg4kz",
+  "fetcher": "github",
+  "repo": "magnars/multifiles.el",
+  "unstable": {
+   "version": [
+    20130615,
+    2133
+   ],
+   "commit": "dddfe64b8e1c1cd1f9ccc1f03405477fc0d53897",
+   "sha256": "065l04ylplng1vgykkbn2vnkcs3sn1k2cikx1ha2q8wmgx6bkvai"
+  }
+ },
+ {
+  "ename": "multiple-cursors",
+  "commit": "a5f015e6b88be2a5ded363bd882a558e94d1f391",
+  "sha256": "0mky5p9wpd3270wr5vfna8rkk2ff81wk7vicyxli39195m0qgg0x",
+  "fetcher": "github",
+  "repo": "magnars/multiple-cursors.el",
+  "unstable": {
+   "version": [
+    20191210,
+    1759
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b880554d04b8f61165afba7d4de19ac9e39bb7ab",
+   "sha256": "0dcw3rw9ahk8y51d9sbqj0f4jdxmykh4jlz4h71cvariqlxw9pq8"
+  },
+  "stable": {
+   "version": [
+    1,
+    4,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b3bd49c756cd959c0fb998d27eaf3d273570b05e",
+   "sha256": "1ijgvzv5r44xqvz751fd5drbvrspapw6xwv47582w255j363r6ss"
+  }
+ },
+ {
+  "ename": "multistate",
+  "commit": "c844d8250242ce3f6d9955bb236042bd31c9b360",
+  "sha256": "0gidbdr0hlyxvkq1r15w5xp5ssqv061cyk9sdqdry4942dy0zgvg",
+  "fetcher": "gitlab",
+  "repo": "matsievskiysv/multistate",
+  "unstable": {
+   "version": [
+    20200514,
+    2206
+   ],
+   "deps": [
+    "cl-lib",
+    "ht"
+   ],
+   "commit": "eadd0df2745bf10500a9ad4ee8f66f3cb470bef0",
+   "sha256": "081rangw4iqk1lcahk01skh518ljdp6g4ww7zydjr813x7jzv2kv"
+  }
+ },
+ {
+  "ename": "multitran",
+  "commit": "d665759fa6491b77103920a75c18a561f6800c1c",
+  "sha256": "0nxrzzlinl5310zfrb4z5j0553cmg11m9y2gaf990j61afaw8f32",
+  "fetcher": "github",
+  "repo": "zevlg/multitran.el",
+  "unstable": {
+   "version": [
+    20200201,
+    55
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "475e2a92795dbed1aa3b1c5eba2c6c779cac4508",
+   "sha256": "0nl4cm1nx7lmb2gd76jw8v0hqdfjjcwy0xskpi0brd8z6dp1m5n3"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    10
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "258b1232af6680396b6c0912597ed52e583326f4",
+   "sha256": "08b9a0pb38swgvg2v97pm4g2zda0xagdgq42znwhkmhzjiskh2g1"
+  }
+ },
+ {
+  "ename": "mustache",
+  "commit": "d1bcf9599ca6d2c29333071a80f96808d4ab52e2",
+  "sha256": "1pjr00xx77mlfw1myxaz6i3y2gbivhbiq5hyjxxbjlfrkm1vxc8g",
+  "fetcher": "github",
+  "repo": "Wilfred/mustache.el",
+  "unstable": {
+   "version": [
+    20190905,
+    2214
+   ],
+   "deps": [
+    "dash",
+    "ht",
+    "s"
+   ],
+   "commit": "6443e1563ddf4eee2236ca1bb1fe87ddfde4b2bb",
+   "sha256": "0wbmknx4pjgfw6y1482a3y1fxv054r0k2qj3qzc47xrkdsjw47y8"
+  },
+  "stable": {
+   "version": [
+    0,
+    23
+   ],
+   "deps": [
+    "dash",
+    "ht",
+    "s"
+   ],
+   "commit": "b0ea352813592424164520a49e86c04600242752",
+   "sha256": "1n2ymd92qpvsby6ms0l3kjhdzzc47rri2aiscc6bs07hm4mjpr9q"
+  }
+ },
+ {
+  "ename": "mustache-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1xmqh663r5i42a586xn0wzw6h1jkvhbnw5iwvjv96w452slhkr36",
+  "fetcher": "github",
+  "repo": "mustache/emacs",
+  "unstable": {
+   "version": [
+    20141024,
+    1432
+   ],
+   "commit": "bf9897eb287ca47ced65d7d4e07ea61ea0aec39f",
+   "sha256": "15gw4d0hp15rglsj8hzd290li4p0kadj2dsz0dgfcxld7hnimihk"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "commit": "bf9897eb287ca47ced65d7d4e07ea61ea0aec39f",
+   "sha256": "15gw4d0hp15rglsj8hzd290li4p0kadj2dsz0dgfcxld7hnimihk"
+  }
+ },
+ {
+  "ename": "mustang-theme",
+  "commit": "2ed3691edd1cba6abc0c30d2aab732e2ba51bf00",
+  "sha256": "0771l3x6109ki914nwpfz3fj7pbvpcg9vf485mrccq2wlxymr5dr",
+  "fetcher": "github",
+  "repo": "mswift42/mustang-theme",
+  "unstable": {
+   "version": [
+    20170719,
+    946
+   ],
+   "commit": "dda6d04803f1c9b196b620ef564e7768fee15de2",
+   "sha256": "0pg3iay0iinf361v4ay8kizdxs5rm23ir556cwwgz3m3gbs0mgsh"
+  }
+ },
+ {
+  "ename": "mustard-theme",
+  "commit": "641d1959bd31598fcdacd39a3d1bb077dcccfa5c",
+  "sha256": "0izxhivhmv49dja4wy9n0ipd41xdzdza2ql7pfa7ny35ji5hskik",
+  "fetcher": "github",
+  "repo": "emacsfodder/emacs-mustard-theme",
+  "unstable": {
+   "version": [
+    20170808,
+    1319
+   ],
+   "commit": "3b15d992c79590d7ea2503004e2a863b57e274b5",
+   "sha256": "01ak4ayk46jqawlbb9cqliiqhnn68cq27kryamibdpds8sq0ch83"
+  }
+ },
+ {
+  "ename": "mutant",
+  "commit": "0fc72d1f18eba7501a040d450a85d8dee4e3070f",
+  "sha256": "0m5l5r37zb0ig96757ldyl9hbb01lknzqf08ap6dsmdwr1zayvp1",
+  "fetcher": "github",
+  "repo": "p-lambert/mutant.el",
+  "unstable": {
+   "version": [
+    20160124,
+    1353
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "de9cdefe48c880128a8f62c6699d7416e9c8ced1",
+   "sha256": "0w9blrm3596hmip8jg2hlz9sl31ci89b90jglmg4ipldgrgj3ly6"
+  }
+ },
+ {
+  "ename": "mutt-mode",
+  "commit": "7d9da58f247dee4f06cbcf6ed532134bc474d309",
+  "sha256": "0k1r2lsh8s054aapyf7diki00sxf1wdm01cavlqxbvv3zg2gym8d",
+  "fetcher": "gitlab",
+  "repo": "flexw/mutt-mode",
+  "unstable": {
+   "version": [
+    20191102,
+    2330
+   ],
+   "commit": "1d495de49e6f536459b00d5396a2f5ce5ad4757b",
+   "sha256": "1nxsbvhh99kwbgaxzmraryayppfmci2grg591zj8yhdh6d3l1jmj"
+  }
+ },
+ {
+  "ename": "mvn",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "0bpg9zpyfdyn9xvrbmq4gb10hd701mc49np8arlmnilphb3fdgzs",
+  "fetcher": "github",
+  "repo": "apg/mvn-el",
+  "unstable": {
+   "version": [
+    20181002,
+    1617
+   ],
+   "commit": "ffa40235b7dabb6c6c165f64f32a963cde8031f0",
+   "sha256": "0ximk0aan7jqn5x7fk4pj35bxhi6zaspvyxrmac9kxaiz8znwffr"
+  }
+ },
+ {
+  "ename": "mw-thesaurus",
+  "commit": "53e4a552b8a7527433b11c377e1257fabceb8049",
+  "sha256": "10v3a09sz31ndj0ldpz0c3s45s62gyvdw0iq0c0dkg4da2rvicww",
+  "fetcher": "github",
+  "repo": "agzam/mw-thesaurus.el",
+  "unstable": {
+   "version": [
+    20190620,
+    2330
+   ],
+   "deps": [
+    "dash",
+    "request"
+   ],
+   "commit": "8327bae11588bcad5d73dcfbeb5e8d10f623d6b6",
+   "sha256": "0snv5v4c5f0hnixrii16xp55w0faw3hirmaj19fnf76shnpg4kwy"
+  }
+ },
+ {
+  "ename": "mwim",
+  "commit": "b7e1aa2fa1294b27ed7b6c5bdd5844fa5c37df72",
+  "sha256": "0bsibwplvyv96y5i5svm2b0jwzs5a7jr2aara7v7xnpj0nqaxm8k",
+  "fetcher": "github",
+  "repo": "alezost/mwim.el",
+  "unstable": {
+   "version": [
+    20181110,
+    1900
+   ],
+   "commit": "b4f3edb4c0fb8f8b71cecbf8095c2c25a8ffbf85",
+   "sha256": "0l3k611gp9g2x2vfmh92wnhnda81dslpwwpb8mxmzk308man77ya"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "462207227b98a6a4356d51419f5ad5ba9356e5cf",
+   "sha256": "06lw6064i82daasgm87gm58d142pypqc1q3cnx1cm35hyj4skd32"
+  }
+ },
+ {
+  "ename": "mxf-view",
+  "commit": "e608f40d00a3b2a80a6997da00e7d04f76d8ef0d",
+  "sha256": "1a8hlp0r04p1cww3dmsqdxlm3ll522wjb0rnmj80d7mqizkbf52p",
+  "fetcher": "github",
+  "repo": "t-suwa/mxf-view",
+  "unstable": {
+   "version": [
+    20180501,
+    740
+   ],
+   "commit": "6ca3cc93d995fac5fc4d72275e1e984e9857ffcb",
+   "sha256": "0n0142kc7q4vy0n7winbvnc8zv4janlr2x4mi97f8v70drl4b18h"
+  }
+ },
+ {
+  "ename": "myanmar-input-methods",
+  "commit": "76093af2bba82159784994ec9e17a69cd22bf868",
+  "sha256": "1yg8zy2z18pbyr507ms2b162c0819rna1ilwyp6hb3iv2zjw45sd",
+  "fetcher": "github",
+  "repo": "yelinkyaw/emacs-myanmar-input-methods",
+  "unstable": {
+   "version": [
+    20160106,
+    1537
+   ],
+   "commit": "9d4e0d6358c61bde7a2274e430ef71683faea32e",
+   "sha256": "0cf0c9g9k2lk1ifi2dlw7c601sh1ycxf3fgl2hy5wliyd6l9rf86"
+  }
+ },
+ {
+  "ename": "mykie",
+  "commit": "e10504a19e052c080be2ccc9b1b8fd2e73a852e0",
+  "sha256": "12ram39fp3m9ar6q184rsnpkxb14y0ajibng7ia2ck54ck7n36cj",
+  "fetcher": "github",
+  "repo": "yuutayamada/mykie-el",
+  "unstable": {
+   "version": [
+    20150808,
+    2205
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "7676f0e883af1d1054e404e97691f3c13aba196f",
+   "sha256": "0a9a6hmv8vjmp6h9mnzin9vc0sncg79v5z72pasvbrplfxijzan0"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "ab8f7549f9018c26278d101af1b90997c9e5e0b3",
+   "sha256": "0550k0rfm0zai306642v689mcpsw9pbd5vs0il82cihwvrxjifc5"
+  }
+ },
+ {
+  "ename": "mynt-mode",
+  "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228",
+  "sha256": "0dbbz86k5c70aqi8czbpd4lxil10zfqs0lmknvrzmnv31r2mgxfr",
+  "fetcher": "github",
+  "repo": "cbrst/mynt-mode",
+  "unstable": {
+   "version": [
+    20150512,
+    2049
+   ],
+   "deps": [
+    "virtualenvwrapper"
+   ],
+   "commit": "23d4489167bfa899634548cb41ed32fdeb3600c9",
+   "sha256": "18ml0qz3iipm9w36zvwz77cbbrg885jgvzk6z4a33xcfp524xhma"
+  }
+ },
+ {
+  "ename": "myrddin-mode",
+  "commit": "224cd200f2f399f25865b6f5b9bf5ec8b957bf35",
+  "sha256": "1gz126gnwgrvkxd3n7xwqfzpk9lvcll3g8v4pa2w9hsz98crwwgl",
+  "fetcher": "git",
+  "url": "https://git.sr.ht/~jakob/myrddin-mode",
+  "unstable": {
+   "version": [
+    20191225,
+    2120
+   ],
+   "commit": "51c0a2cb9dfc9526cd47e71313f5a745c99cadcc",
+   "sha256": "17qaxdzygk59qdm3hpyhc70jxiijfyq2n39dy68cwzhyd13i8f2i"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "b996da5e3bae842eacba4b3e429899bb841b077e",
+   "sha256": "0gylwdq81s89civrlwsg4zrvyjkjw37jdp1mvsihx8xpq38w4r65"
+  }
+ },
+ {
+  "ename": "mysql-to-org",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0jjdv6ywdn1618l36bw3xa3mdgg3rc8r0rdv9xdqx8mmg648a7gj",
+  "fetcher": "github",
+  "repo": "mallt/mysql-to-org-mode",
+  "unstable": {
+   "version": [
+    20200503,
+    1239
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "7dcd6486f374814908bdb3c6d4c88cd6cece1e2f",
+   "sha256": "1jpz68pf8j7f4jin5qk4lrkxfzjwyqs16fn3j9ll21z4lc2mj2a8"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "0f51b174a0ee6c9820baf9d79783923b270f3ffc",
+   "sha256": "1gxp1a26sna0p3xq6by8bk4yphhh32bvll0sdm2p3wkpdaci7hyz"
+  }
+ },
+ {
+  "ename": "myterminal-controls",
+  "commit": "4a82a45d9fcafea0795f832bce1bdd7bc83667e2",
+  "sha256": "0ipk5s2whf3l68q0dydm1j6rcb6jhk61hgjwxygdphifvih7c5y2",
+  "fetcher": "github",
+  "repo": "myTerminal/myterminal-controls",
+  "unstable": {
+   "version": [
+    20190426,
+    421
+   ],
+   "commit": "733cdd7ab4f172b6dca09720fc5ae7dbc248c822",
+   "sha256": "1z89d3dx77c4v1zz4ngn689ay6m2x04jznnbc6bdqsaanz9znwlz"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "df144b269bc274162602e50c692be20ac9b90547",
+   "sha256": "02bd47rx2ykz5hhrf1szcqz7s9r5fxz7n3hnwlqap2r6xcv6cpvk"
+  }
+ },
+ {
+  "ename": "n4js",
+  "commit": "82157dfd975635c49ef75eae83e2bdf5fe4ae5c2",
+  "sha256": "0x7smxs91ffriyxx2df61fh1abpl39gqy4m62k77h7xb6fg7af6m",
+  "fetcher": "github",
+  "repo": "tmtxt/n4js.el",
+  "unstable": {
+   "version": [
+    20150714,
+    231
+   ],
+   "deps": [
+    "cypher-mode"
+   ],
+   "commit": "3991ed8975151d5e8d568e952362df810f7ffab7",
+   "sha256": "1pd6c0jc1zxx3i3nk4qdx7gdf1qn8sc9jgqd72pkkpzvdwv998cp"
+  }
+ },
+ {
+  "ename": "name-this-color",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "15x3dp135p45gv4qn4ll3pd6zqi4glcpv6fzvjxnx0dcval9z4d8",
+  "fetcher": "github",
+  "repo": "knl/name-this-color.el",
+  "unstable": {
+   "version": [
+    20151014,
+    2030
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "e37cd1291d5d68d4c8d6386eab9cb9d94fd3bcfa",
+   "sha256": "0amhw630hgc0j8wr8m6aav399ixi3vbwrck79hhlr3pmyh91vv7n"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "e37cd1291d5d68d4c8d6386eab9cb9d94fd3bcfa",
+   "sha256": "0amhw630hgc0j8wr8m6aav399ixi3vbwrck79hhlr3pmyh91vv7n"
+  }
+ },
+ {
+  "ename": "named-timer",
+  "commit": "3e8248bab40fddc97fe48dbd103bc2aa51eb287f",
+  "sha256": "1k2gkm193fh02vsj8h9kn0y1azispcz1b3ywwmb3cbif51l956g3",
+  "fetcher": "github",
+  "repo": "DarwinAwardWinner/emacs-named-timer",
+  "unstable": {
+   "version": [
+    20181120,
+    2224
+   ],
+   "commit": "670b81e3eddef2e7353a4eedc9553a85306445db",
+   "sha256": "1inbizxlfgndwxsn8cwnpf4vm42rby7pkjqxyzl7ldq4qln7q8v1"
+  }
+ },
+ {
+  "ename": "nameframe",
+  "commit": "bd314150b3f8ce529a2ae39a71e03bebedfdc6b9",
+  "sha256": "0iq8cfii39ha8sxn9w7kyfvys8kwyax8g4l0pkl05q0a0s95padp",
+  "fetcher": "github",
+  "repo": "john2x/nameframe",
+  "unstable": {
+   "version": [
+    20171107,
+    56
+   ],
+   "commit": "aafb8c5c5fbe0510e2f5d5b6b6b5dd0b73abe5d8",
+   "sha256": "1ivklkz3j722wg038bh3hmycp9j64zjrig49vl42mkj6d3ggwilg"
+  }
+ },
+ {
+  "ename": "nameframe-perspective",
+  "commit": "2543af5579d37a3eb52e6fea41da315f5590331e",
+  "sha256": "0wgr90m2pazc514slgdl1lin4mr3xxizasc82k7qinvdvdja515x",
+  "fetcher": "github",
+  "repo": "john2x/nameframe",
+  "unstable": {
+   "version": [
+    20170406,
+    119
+   ],
+   "deps": [
+    "nameframe",
+    "perspective"
+   ],
+   "commit": "aafb8c5c5fbe0510e2f5d5b6b6b5dd0b73abe5d8",
+   "sha256": "1ivklkz3j722wg038bh3hmycp9j64zjrig49vl42mkj6d3ggwilg"
+  }
+ },
+ {
+  "ename": "nameframe-projectile",
+  "commit": "bc17af8ff1694120d12a0cdbfccec78834810acd",
+  "sha256": "11z64wy8mnnrjmgfs2sjbv3mh136aki8r5f89myx861nfx18hc3k",
+  "fetcher": "github",
+  "repo": "john2x/nameframe",
+  "unstable": {
+   "version": [
+    20160928,
+    403
+   ],
+   "deps": [
+    "nameframe",
+    "projectile"
+   ],
+   "commit": "aafb8c5c5fbe0510e2f5d5b6b6b5dd0b73abe5d8",
+   "sha256": "1ivklkz3j722wg038bh3hmycp9j64zjrig49vl42mkj6d3ggwilg"
+  }
+ },
+ {
+  "ename": "nameless",
+  "commit": "8e4ee4dae5f32a8d445dc0cc2455c1f7075c9b3d",
+  "sha256": "14agx54h2vqfb0656n12z761ywyxsdskd6xa1ccar70l9vwj85vq",
+  "fetcher": "github",
+  "repo": "Malabarba/Nameless",
+  "unstable": {
+   "version": [
+    20190429,
+    1202
+   ],
+   "commit": "a3a1ce3ec0c5724bcbfe553d831bd4f6b3fe863a",
+   "sha256": "0pxfn81bc8smik0qksfjbrdjkzy0cbjzbc3ik47zl2i9blmx5krv"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    2
+   ],
+   "commit": "ab1a5c589378334eafca105af1a17f73b9065423",
+   "sha256": "107q1rximjnag9r9vgwh0iv687i3rsscbdnjc46f8l16j6vi4n7d"
+  }
+ },
+ {
+  "ename": "names",
+  "commit": "1e6aed365c42987d64d0cd9a8a6178339b1b39e8",
+  "sha256": "1q784606jlakw1z6sx2g2x8hz8c8arywrm2r626wj0v105v510vg",
+  "fetcher": "github",
+  "repo": "Malabarba/names",
+  "unstable": {
+   "version": [
+    20180321,
+    1155
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d8baba5360e5253938a25d3e005455b6d2d86971",
+   "sha256": "11wyha2q8y7bzqq3jrzix8n97ywvsibvddrahqcps1a1yqk4hzfz"
+  },
+  "stable": {
+   "version": [
+    20151201,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "00862c57ae6363ba86d1e5ce138929a1b6d5c7e6",
+   "sha256": "0m82g27gwf9mvicivmcilqghz5b24ijmnw0jf0wl2skfbbg0sydh"
+  }
+ },
+ {
+  "ename": "namespaces",
+  "commit": "de404e9ad3d1e27af24e868e84218d872d5fc795",
+  "sha256": "02pb7762khxpah4q6xg8r7dmlv1kwyzinffi7pcaps6ycj29q2fr",
+  "fetcher": "github",
+  "repo": "chrisbarrett/elisp-namespaces",
+  "unstable": {
+   "version": [
+    20130326,
+    2250
+   ],
+   "commit": "3d02525d9b9a5ae6e7be3adefd880121436e6270",
+   "sha256": "157hhb253m6a9l5wy6x8w5ar3x0qz1326l7a0npxif6pma0dd140"
+  }
+ },
+ {
+  "ename": "nand2tetris",
+  "commit": "90421372b3f60b59762279ac805c61a984606d11",
+  "sha256": "1zg9xx7mj8334m2v2zqqfkr5vkj4dzqbj8y13qk6xhzb7qkppyqd",
+  "fetcher": "github",
+  "repo": "CestDiego/nand2tetris.el",
+  "unstable": {
+   "version": [
+    20171201,
+    1813
+   ],
+   "commit": "33acee34d24b1c6a87db833b7d23449cf858f64f",
+   "sha256": "0sfa674g1qm280s0pc3n6qiiphj5i9ibknckx5capkrkxb5cwpkw"
+  }
+ },
+ {
+  "ename": "nand2tetris-assembler",
+  "commit": "90421372b3f60b59762279ac805c61a984606d11",
+  "sha256": "1761kgrflipxba8894cnx90ks7f3ba4nj6ci515zzxcx9s45mfyy",
+  "fetcher": "github",
+  "repo": "CestDiego/nand2tetris.el",
+  "unstable": {
+   "version": [
+    20171201,
+    1813
+   ],
+   "deps": [
+    "nand2tetris"
+   ],
+   "commit": "33acee34d24b1c6a87db833b7d23449cf858f64f",
+   "sha256": "0sfa674g1qm280s0pc3n6qiiphj5i9ibknckx5capkrkxb5cwpkw"
+  }
+ },
+ {
+  "ename": "nanowrimo",
+  "commit": "2790c00a79df237cf853a00f094fdeca9e532a9a",
+  "sha256": "0c4wzhhk1779r0lgc6bhfp0qafmp3ggdvg1205m8a7k0kklq58bg",
+  "fetcher": "gitlab",
+  "repo": "gvol/nanowrimo.el",
+  "unstable": {
+   "version": [
+    20151105,
+    228
+   ],
+   "commit": "b1d41458926ccb39cefbb1bb74aefe4f02fd349f",
+   "sha256": "1nzkamy53kl1g4y1jm7j5zgpkdsyg5ykp8zp1f0bg5mhy8mmf75w"
+  }
+ },
+ {
+  "ename": "naquadah-theme",
+  "commit": "671afe0ff3889ae8c4b2d7b8617a3a25c16f3f0f",
+  "sha256": "1aml1f2lgn530i86218nrc1pk3zw5n3qd2gw4gylwi7g75i0cqn1",
+  "fetcher": "github",
+  "repo": "jd/naquadah-theme",
+  "unstable": {
+   "version": [
+    20190225,
+    1427
+   ],
+   "commit": "430c3b7bd51922cb616b3f60301f4e2604816ed8",
+   "sha256": "0z2dn05xgbdfw6rwgsq31rm5dr098dk411qk83fbx2bkdxxfr60w"
+  }
+ },
+ {
+  "ename": "narrow-reindent",
+  "commit": "73c7f01a009dc7ac1b9da8ce41859695a97b7878",
+  "sha256": "0fybal70kk62zlra63x4jb72694m0mzv4cx746prx9anvq1ss2i0",
+  "fetcher": "github",
+  "repo": "emallson/narrow-reindent.el",
+  "unstable": {
+   "version": [
+    20150722,
+    1906
+   ],
+   "commit": "87466aac4dbeb79597124dd077bf5c704872fd3d",
+   "sha256": "10yn215xb4s6kshk108y75im1xbdp0vwc9kah5bbaflp9234i0zh"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "87466aac4dbeb79597124dd077bf5c704872fd3d",
+   "sha256": "10yn215xb4s6kshk108y75im1xbdp0vwc9kah5bbaflp9234i0zh"
+  }
+ },
+ {
+  "ename": "narrowed-page-navigation",
+  "commit": "e37e993fec280428f094b6c8ec418fe5ba8c6d49",
+  "sha256": "1yrmih60dd69qnin505jlmfidm2svzpdrz46286r7nm6pk7s4pb7",
+  "fetcher": "github",
+  "repo": "david-christiansen/narrowed-page-navigation",
+  "unstable": {
+   "version": [
+    20150109,
+    519
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b215adbac4873f56fbab65772062f0f5be8058a1",
+   "sha256": "0ydxj6dc10knambma2hpimqrhfz216nbj96w1dcwgjixs4cd4nax"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b215adbac4873f56fbab65772062f0f5be8058a1",
+   "sha256": "0ydxj6dc10knambma2hpimqrhfz216nbj96w1dcwgjixs4cd4nax"
+  }
+ },
+ {
+  "ename": "nash-mode",
+  "commit": "c8bd080c81b163a6ddcfffc710316b9711935b4a",
+  "sha256": "1d6nfxn7fc2qv78bf5277sdwfqflag2gihgic8vxrbjlpnizxn1p",
+  "fetcher": "github",
+  "repo": "tiago4orion/nash-mode.el",
+  "unstable": {
+   "version": [
+    20160830,
+    1212
+   ],
+   "commit": "2cd96535eb7d669a94306183e95ee37333872c1a",
+   "sha256": "0wdkl56pgm6qlgqjs4kqjglnxzjsfjd0y4fiffhxc893gm0psrpg"
+  }
+ },
+ {
+  "ename": "nasm-mode",
+  "commit": "a1a832b3bd7c2f2d3cee8bcfb5421d22acf5523e",
+  "sha256": "1626yf9mmqlsw8w01vzqsyb5ipa56259d4kl6w871k7rvhxwff17",
+  "fetcher": "github",
+  "repo": "skeeto/nasm-mode",
+  "unstable": {
+   "version": [
+    20190410,
+    342
+   ],
+   "commit": "65ca6546fc395711fac5b3b4299e76c2303d43a8",
+   "sha256": "00rv6m004hcsn71hv3p3rxmrpwajdy02qpi2ymhxx2w3r49ba562"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "commit": "d990ed94d902b74a5c834fb567e03307607cee45",
+   "sha256": "1dyc50a1zskx9fqxl2iy2x74f3bkb2ccz908v0aj13rqfqqnns9j"
+  }
+ },
+ {
+  "ename": "native-complete",
+  "commit": "abc5469b4400ed05192dcfd6c00504768f05292e",
+  "sha256": "0y1zqmd34jswfw5fi3j6n0d9dhpvl14x3h5nfl6wmxj2g8vv4gns",
+  "fetcher": "github",
+  "repo": "CeleritasCelery/emacs-native-shell-complete",
+  "unstable": {
+   "version": [
+    20200424,
+    1635
+   ],
+   "commit": "0f290514564d3733b35e4b48d70446c1a6eb4b41",
+   "sha256": "0i8bss7ipwsjfrgfri7d3f9pbpkdbfh8aqz8cawr2wvf4yayk8q5"
+  }
+ },
+ {
+  "ename": "nav",
+  "commit": "0fda2b54a0ff0b6fc3bd6d20cfcbbf63cae5380f",
+  "sha256": "0ly1fk4ak1p8gkz3qmmxyslcjgicnfm8bpqqgndvwcznp8pvpjml",
+  "fetcher": "github",
+  "repo": "ijt/emacs-nav",
+  "unstable": {
+   "version": [
+    20120507,
+    707
+   ],
+   "commit": "c5eb234c063f435dbdcd1f8bdc46cfc68c973ebe",
+   "sha256": "0kfqpji6z3ra8sc951vmm1bzyhkws7vb5q6djvl45wlf1wrgkc4p"
+  }
+ },
+ {
+  "ename": "nav-flash",
+  "commit": "c9db386ab3910940addae6e925b2ac17e64e0f87",
+  "sha256": "0936kr0s6zxxmjwaqm7ywdw2im4dxai1xb7j6xa2gp7c70qvvsx3",
+  "fetcher": "github",
+  "repo": "rolandwalker/nav-flash",
+  "unstable": {
+   "version": [
+    20191204,
+    1427
+   ],
+   "commit": "dbb91216637e0a1e8bfd59aa883c75d45db70daf",
+   "sha256": "0f8dsxgk1a994clwkii9hv2ibvkf38kbvgd4sp3w1sf4vy12z5n5"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "9054a0f9b51da9e5207672efc029ba265ba28f34",
+   "sha256": "119hy8rs83f17d6zizdaxn2ck3sylxbyz7adszbznjc8zrbaw0ic"
+  }
+ },
+ {
+  "ename": "navi-mode",
+  "commit": "8edf78a0ecd2ff8e6e066b80751a31e11a068c3f",
+  "sha256": "0pc52iq8lng2g0vpnrhdfxmibc1dx9ksmrjg0303as1yv41fnc69",
+  "fetcher": "github",
+  "repo": "alphapapa/navi",
+  "unstable": {
+   "version": [
+    20190720,
+    2003
+   ],
+   "deps": [
+    "outorg",
+    "outshine"
+   ],
+   "commit": "7eb7cf0c4a6ee537ec462f5ec90f00d12e3ca9c2",
+   "sha256": "0ajmbsdz825v5fidnp30yv1jwl415vc67hlm05a65f92bhs6m3zq"
+  },
+  "stable": {
+   "version": [
+    2,
+    0
+   ],
+   "commit": "5c979b3b3873b0e67751a1321a9e271d066f2022",
+   "sha256": "15jh1lsgqfnpbmrikm8kdh5bj60yb96f2as2anppjjsgl6w96glh"
+  }
+ },
+ {
+  "ename": "navi2ch",
+  "commit": "36bea1eca58de15d6106cbd293d941d12ee3d21c",
+  "sha256": "13xwvyy27dz1abjkkazm3s1p6cw32l2klr1bnln02w0azkbdy7x3",
+  "fetcher": "github",
+  "repo": "naota/navi2ch",
+  "unstable": {
+   "version": [
+    20200130,
+    36
+   ],
+   "commit": "7811dba052f679bd920a1f648d621a6fecace10f",
+   "sha256": "0glr8cfxpp23j8sr0147x1ba7f6i8vzn2c15kgfs94y5h2d4jv3l"
+  }
+ },
+ {
+  "ename": "navigel",
+  "commit": "af52934237a069f70b8be136576562ba45c04ffc",
+  "sha256": "0ns2f1p943d2mfai6fdl87swcwh0sgmv0m3wz1kf73zh6vi4i277",
+  "fetcher": "github",
+  "repo": "DamienCassou/navigel",
+  "unstable": {
+   "version": [
+    20200202,
+    1214
+   ],
+   "deps": [
+    "tablist"
+   ],
+   "commit": "0a2d624d6b49f8363badc5ba8699b7028ef85632",
+   "sha256": "1lf46qsa6xb9rpb0s96vcvwv6n9v08iqp332pyhli0937afij454"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    0
+   ],
+   "deps": [
+    "tablist"
+   ],
+   "commit": "2695f1df2260398930319095cf6b6a49ba98d6a5",
+   "sha256": "0v9f7wb6yghds3hjj8x5di6gfa8n5kjwhav7la1ca2zwgs2c1a9p"
+  }
+ },
+ {
+  "ename": "navorski",
+  "commit": "9246cef94029d2da2211345c076ed55deb91e8fa",
+  "sha256": "0dnzpsm0ya8rbcik5wp378hc9k7gjb3gwmkqqj889c38q5cdwsx7",
+  "fetcher": "github",
+  "repo": "roman/navorski.el",
+  "unstable": {
+   "version": [
+    20141203,
+    1824
+   ],
+   "deps": [
+    "dash",
+    "multi-term",
+    "s"
+   ],
+   "commit": "698c1c62da70164aebe9a7a5d034778fbc30ea5b",
+   "sha256": "0g7rmvfm0ldv0d2x7f8k761mgmi47siyspfi1ns40ijhkpc15x8l"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    7
+   ],
+   "deps": [
+    "dash",
+    "multi-term",
+    "s"
+   ],
+   "commit": "4546d4e4dfbec20ee8c423c045408a3388a9eab9",
+   "sha256": "09cb07f98aclgq8jf5419305zydkk1hz4nvzrwqz7syrlpvx8xi5"
+  }
+ },
+ {
+  "ename": "naysayer-theme",
+  "commit": "bc3ed48e21b13998b77dd0f28ea02a6224abd367",
+  "sha256": "1mlbhq2x1676cgsrl2l4kd9r7im9cjzk9lww02p7p1pdfp8k01qf",
+  "fetcher": "github",
+  "repo": "nickav/naysayer-theme.el",
+  "unstable": {
+   "version": [
+    20200405,
+    123
+   ],
+   "commit": "9d0bef898f31368cd30e063d53d443dee29683b0",
+   "sha256": "1jbp8p58bjc0wxs548niv02q9889blnwwfs64h5sm96nzhyzrkn0"
+  }
+ },
+ {
+  "ename": "ncl-mode",
+  "commit": "2eea3936b8a3a7546450d1d7399e0f86d855fefd",
+  "sha256": "1niy0w24q6q6j7s0l9fcaqai7zz2gg1qlk2s9sxb8j79jc41y47k",
+  "fetcher": "github",
+  "repo": "yyr/ncl-mode",
+  "unstable": {
+   "version": [
+    20180129,
+    703
+   ],
+   "commit": "602292712a9e6b7e7c25155978999e77d06b7338",
+   "sha256": "0sv44hn2ylick7ywpcbij8h2vxdj06zridjdmcfgpv5d090dbl9n"
+  },
+  "stable": {
+   "version": [
+    0,
+    99,
+    2
+   ],
+   "commit": "164e504e25cec1812fbae5c3dae164d9f6018ece",
+   "sha256": "1m3llm87qgd7sr6ci22nd835vdg0qprs5m9lqcx74k689jl89cni"
+  }
+ },
+ {
+  "ename": "nclip",
+  "commit": "f03f254afbe561e0a6dd6c287dcc137da05376cd",
+  "sha256": "016jp1rqrf1baxlxbi3476m88a0l3r405dh6pmly519wm2k8pipw",
+  "fetcher": "github",
+  "repo": "maio/nclip.el",
+  "unstable": {
+   "version": [
+    20130617,
+    2015
+   ],
+   "commit": "af88e38b1f04be02bf2e57affc662dbd0f828e67",
+   "sha256": "178gjv7kq97p9i4naxql7xabvmchw5x8idkpyjqqky3b24v5wkis"
+  }
+ },
+ {
+  "ename": "neato-graph-bar",
+  "commit": "49c5bd4e1506a28ada9856e5f70e520890123d16",
+  "sha256": "1p4jmla75ny443cv7djk3nvl3ikchllnsivxx9yds14ynk4jxhgb",
+  "fetcher": "gitlab",
+  "repo": "RobertCochran/neato-graph-bar",
+  "unstable": {
+   "version": [
+    20181130,
+    1649
+   ],
+   "commit": "a7ae35afd67911e8924f36e646bce0d3e3c1bbe6",
+   "sha256": "0sx2m2j00xhcb8l7fw595zsn9wjhcj4xb163rjqd3d1wjrk6fpn8"
+  }
+ },
+ {
+  "ename": "nemerle",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1rbalq3s2inwz9cf6bfmnxgqd9ylba3crflfjs6b4mnp33z4swny",
+  "fetcher": "github",
+  "repo": "rsdn/nemerle",
+  "unstable": {
+   "version": [
+    20161029,
+    2023
+   ],
+   "commit": "f5fe5832889d7b6eab7d45724e051f4edbe1983f",
+   "sha256": "15ljrcmmpfwqxvci0ilmn3xgjxj19wq638zvij0wh2g0n6nil6xx"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "commit": "556270ce8b97668a65e9ec20a05f78c3dffeac60",
+   "sha256": "19xxg4ya6vndk2ljdnl284zs8qf9dkq4ghr7pmsclp9n7zh46v48"
+  }
+ },
+ {
+  "ename": "neon-mode",
+  "commit": "c6b2a4898bf21413c4d9e6714af129bbb0a23e1a",
+  "sha256": "0kgyc0rkxvvks5ykizfv82f2cx7ck17sk63plj7bld6khlcgv0y6",
+  "fetcher": "github",
+  "repo": "Fuco1/neon-mode",
+  "unstable": {
+   "version": [
+    20180406,
+    1156
+   ],
+   "commit": "99d15e46beaf1e7d71e39a00cce810df1f33229d",
+   "sha256": "07vsi07m5q070fvkqhz32qa2y7dgnyi1kggairimbiwbn98bh642"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    0
+   ],
+   "commit": "99d15e46beaf1e7d71e39a00cce810df1f33229d",
+   "sha256": "07vsi07m5q070fvkqhz32qa2y7dgnyi1kggairimbiwbn98bh642"
+  }
+ },
+ {
+  "ename": "neotree",
+  "commit": "9caf2e12762d334563496d2c75fae6c74cfe5c1c",
+  "sha256": "05smm1xsn866lsrak0inn2qw6dvzy24lz6h7rvinlhk5w27xva06",
+  "fetcher": "github",
+  "repo": "jaypei/emacs-neotree",
+  "unstable": {
+   "version": [
+    20200324,
+    1946
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "98fe21334affaffe2334bf7c987edaf1980d2d0b",
+   "sha256": "1m4d5l48k1frbkspk6wlzhbjn133bj7spp5chlgv8p4p9rpnc2zr"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "5e1271655170f4cdc6849258e383c548a4e6e3d0",
+   "sha256": "0hx72fq10772bbyqrj7mhhp02k26cccjxdadiqm1ykainhfmn1x0"
+  }
+ },
+ {
+  "ename": "nerdtab",
+  "commit": "59bc273db1d34997ea5d51cc6adc33ec785bc7f3",
+  "sha256": "0q7dyqxq058195pgb1pjy27gcrr96096xcvvrapkarym7jsa2wy3",
+  "fetcher": "github",
+  "repo": "casouri/nerdtab",
+  "unstable": {
+   "version": [
+    20180811,
+    339
+   ],
+   "commit": "74ccc14d7956712e477a34b4a733284e8b3832a6",
+   "sha256": "1cpdarxw9pida7pg7lgq4p4lnq2l3ny2y96j0ckxx7r04p24q611"
+  }
+ },
+ {
+  "ename": "netease-music",
+  "commit": "ca3d4a8f8d9080e26a8fe2c38c0001d5cfc3c88c",
+  "sha256": "1vb81f1l45v6rny91rcqvnhzqh5ybdr0r39yrcaih8zhvamk685z",
+  "fetcher": "github",
+  "repo": "nicehiro/netease-music",
+  "unstable": {
+   "version": [
+    20190708,
+    215
+   ],
+   "deps": [
+    "names"
+   ],
+   "commit": "39a7d7a15f63435d9efaf469ea7c971069c07acb",
+   "sha256": "01wkd8ifsa5l6jh4xdmj40xfx0hyxv4c0a8s6z5ynmqvmbxvbw5n"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "f3bba59664e1c4c4ed47f16fa786151272d99a70",
+   "sha256": "1a6r7cmxvg83fa285drli2nac9a56kyd2pn4y1vfcg7jiy6czhiw"
+  }
+ },
+ {
+  "ename": "netherlands-holidays",
+  "commit": "abdbce47cb5c623696b5d6fcb3bef2d995d90195",
+  "sha256": "181linsbg5wrx1z7zbj3in2d3d4zd2v7drspkj0b6l0c5yfxwayf",
+  "fetcher": "github",
+  "repo": "abo-abo/netherlands-holidays",
+  "unstable": {
+   "version": [
+    20150202,
+    1617
+   ],
+   "commit": "26236178cdd650df9958bf5a086e184096559f00",
+   "sha256": "1kkflj2qnrn6kzh1l6bjl5n5507qilb22pqj3h0f2m6hfyn0sw5z"
+  }
+ },
+ {
+  "ename": "netrunner",
+  "commit": "a8b1d8c31383b6ec3788ad6c9adf0117190484c9",
+  "sha256": "1lk5acbv1fw7q9jwpk0l5hqb9wnscg2kj3qn6b4pwn9ggf8axkpv",
+  "fetcher": "github",
+  "repo": "Kungsgeten/netrunner",
+  "unstable": {
+   "version": [
+    20160910,
+    2332
+   ],
+   "deps": [
+    "company",
+    "helm",
+    "popup"
+   ],
+   "commit": "c64672992175c8c1073c0f56c2e471839db71a0f",
+   "sha256": "1jj8qsq4xa93h3srskhw1l6igzf9jhwl8hfa73zvqr8dhqhp149k"
+  }
+ },
+ {
+  "ename": "network-watch",
+  "commit": "e129679b3e2074af3e3de1b2ccce53a2fa5e9f65",
+  "sha256": "0y3vjrh9vlfg44c01ylkszisliwfy5zb8c5z3qrmf3yj4q096f42",
+  "fetcher": "github",
+  "repo": "jamiguet/network-watch",
+  "unstable": {
+   "version": [
+    20171123,
+    1146
+   ],
+   "commit": "958dd0d419e4f9402648a86b754091ba346e01b8",
+   "sha256": "1xqp7aghc8xd1733azl27mjf57qvm0036qbkqmaks2ip8s8c6arj"
+  }
+ },
+ {
+  "ename": "neuron-mode",
+  "commit": "6e4b79bc01b9ff2b00a4d0c80614f738a9e76dd6",
+  "sha256": "15ddpc64432013vn43amx0shnhr32cx1vkvn95chmddlkhx7ln16",
+  "fetcher": "github",
+  "repo": "felko/neuron-mode",
+  "unstable": {
+   "version": [
+    20200503,
+    930
+   ],
+   "deps": [
+    "counsel",
+    "f",
+    "markdown-mode"
+   ],
+   "commit": "4329de608ca14dc67448ad576645eabb084009ef",
+   "sha256": "0wk4cjcj98yym1cca2k1wgail9rvxaqs7n9fkccnxv9bddjmymv9"
+  }
+ },
+ {
+  "ename": "never-comment",
+  "commit": "ef3f8e712c10d63fea009951d7916fe376267cbe",
+  "sha256": "0sn8y57895bfpgiynnj4m9b3x3dbb9v5fwkcwmf9jr39dbf98v6s",
+  "fetcher": "github",
+  "repo": "To1ne/never-comment",
+  "unstable": {
+   "version": [
+    20140104,
+    2207
+   ],
+   "commit": "74ded8f1e7f23240f5f6032d0451fb0a51733bc4",
+   "sha256": "0p00mmid04pfsna4ify3cy0b9lx431q1r5h772hihsg4f1rs2ppy"
+  }
+ },
+ {
+  "ename": "newlisp-mode",
+  "commit": "e5c79c56bddfeb498d28f2575184434fbb93465d",
+  "sha256": "0i2d2gyzzvpr5qm2cqzbn9my21lfb66315hg9fj86ac5pkc25zrd",
+  "fetcher": "github",
+  "repo": "kosh04/newlisp-mode",
+  "unstable": {
+   "version": [
+    20160226,
+    1545
+   ],
+   "commit": "ac23be40c81a360988ab803d365f1510733f6db4",
+   "sha256": "1zzsfyqwj1k4zh30gl491ipavr9pp9djwjq3zz2q3xh7jys68w8r"
+  }
+ },
+ {
+  "ename": "nexus",
+  "commit": "80d3665e9a31aa3098df456dbeb07043054e42f5",
+  "sha256": "1mdphgsqg6n4hryr53rk42z58vfv0g5wkar5ipanr4h4iclkf5vd",
+  "fetcher": "github",
+  "repo": "juergenhoetzel/emacs-nexus",
+  "unstable": {
+   "version": [
+    20140114,
+    1305
+   ],
+   "commit": "c46f499951b90839aa8683779fe43d8f01672a60",
+   "sha256": "1xnx6v49i6abzbhq4fl4bp9d0pp9gby40splpcj211xsb8yiry27"
+  }
+ },
+ {
+  "ename": "ng2-mode",
+  "commit": "a856ecd8aca2d9232bb20fa7019de9e1dbbb19f4",
+  "sha256": "0sr4yh5nkgqb1qciq9mzzhr64350bi2wjm6z9d616nkjw72saz1r",
+  "fetcher": "github",
+  "repo": "AdamNiederer/ng2-mode",
+  "unstable": {
+   "version": [
+    20190524,
+    1912
+   ],
+   "deps": [
+    "typescript-mode"
+   ],
+   "commit": "52fdfe27247548b46f6171eebaf887a90dd67463",
+   "sha256": "1g8za385clky1waba4ggi5bl2q4h26gz00lkzghn3zvxg5nbh47d"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "typescript-mode"
+   ],
+   "commit": "57e6e4e388624853bc3b79bf5b17d2663ce26fa5",
+   "sha256": "08dm8clw3xm0c3xcbl3q4dm9n7cxhpldnwxjaxs1glc5l21qdg4q"
+  }
+ },
+ {
+  "ename": "nginx-mode",
+  "commit": "a6da3640b72496e2b32e6ed21aa39df87af9f7f3",
+  "sha256": "07k17m64zhv6gik8v4n73d8l1k6fsp4qp8cl94r384ny0187y65c",
+  "fetcher": "github",
+  "repo": "ajc/nginx-mode",
+  "unstable": {
+   "version": [
+    20170612,
+    437
+   ],
+   "commit": "a2bab83c2eb233d57d76b236e7c141c2ccc97005",
+   "sha256": "17dh5pr3gh6adrbqx588gimxbb2fr7iv2qrxv6r48w2727l344xs"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    9
+   ],
+   "commit": "a2bab83c2eb233d57d76b236e7c141c2ccc97005",
+   "sha256": "17dh5pr3gh6adrbqx588gimxbb2fr7iv2qrxv6r48w2727l344xs"
+  }
+ },
+ {
+  "ename": "niceify-info",
+  "commit": "0b2a923da7363d904eb848eb335736974e05dba1",
+  "sha256": "1s9c8yxbab9zl5jx38alwa2hpp4zj5cb9a5gfm3x09jf3iw768bl",
+  "fetcher": "github",
+  "repo": "aaron-em/niceify-info.el",
+  "unstable": {
+   "version": [
+    20160416,
+    1244
+   ],
+   "commit": "38df5062bc3b99d1074cab3e788b5ed66732111c",
+   "sha256": "0hgrf628ris94pmvmgibkq6zmwrqkv9q70c5a2gsbdpqmfikj8m1"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "commit": "66b45916f1994e16ee023d29fa7cf8fec48078f1",
+   "sha256": "0dzcaa88l7yjc7fhyhkvbzs7bmhi6bb6rx41wsnnidlnpzbgdrk7"
+  }
+ },
+ {
+  "ename": "niconama",
+  "commit": "ad8e7189e9c4c5d86cef268f45be0dda2d702805",
+  "sha256": "1v4cvcxrl254jhfl1q5ld0gn4598fcvv0pfhilh2jy76w5acqx81",
+  "fetcher": "github",
+  "repo": "NOBUTOKA/niconama.el",
+  "unstable": {
+   "version": [
+    20170910,
+    1501
+   ],
+   "deps": [
+    "cl-lib",
+    "request"
+   ],
+   "commit": "96e7553e50e6bf7b58aac50f52c9b0b8edb41c56",
+   "sha256": "1gihjzwl6309vgav5z7jzi8jb7is8vx8lr23kb6h373gwws4bi10"
+  }
+ },
+ {
+  "ename": "night-owl-theme",
+  "commit": "77fe194a0e58bdb9789c85f3c50895eb886b4016",
+  "sha256": "121jc59ry60h1ml1vxx4a6l4a6jcxk7fc4wz32fqv5pr03rzgs7h",
+  "fetcher": "github",
+  "repo": "aaronjensen/night-owl-emacs",
+  "unstable": {
+   "version": [
+    20200118,
+    1513
+   ],
+   "commit": "b52fbf83ffef1ca265c9ea273bf51827532cef67",
+   "sha256": "0blgf7wx8i7am943m1jc7q4ndkb7pdczfgigrdnqsaf861m0nhng"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "3d1b6b319173c2f0aaf42a294ab01fba473f11c4",
+   "sha256": "157zdnpy18ca9biv5bxv3qvg62sh3qmpp2lv9q8sgasg0wvb9vpk"
+  }
+ },
+ {
+  "ename": "nikola",
+  "commit": "8ef4f7c2f1c48edd7b4a6fdcda51908d216c631c",
+  "sha256": "1d0a80y910klayb9jf0ahn5lj9l6xdhwcp2in3ridmqislavrcnv",
+  "fetcher": "git",
+  "url": "https://git.daemons.it/drymer/nikola.el/",
+  "unstable": {
+   "version": [
+    20170703,
+    2021
+   ],
+   "deps": [
+    "async"
+   ],
+   "commit": "964715ac30943c9d6976999cad208dc60d09def0",
+   "sha256": "0b0bpw9r2xi1avzq76pl58bbk1shb57d3bmzd9d53d07gj5c9399"
+  }
+ },
+ {
+  "ename": "nim-mode",
+  "commit": "dc2ccb5f24b9d55c77eaa7952a9e6a2e0ed7be24",
+  "sha256": "1kzn3kkkj7jzs7fqhvib196sl3vp7kbhb4icqzmvvmv366lkaib6",
+  "fetcher": "github",
+  "repo": "nim-lang/nim-mode",
+  "unstable": {
+   "version": [
+    20191219,
+    847
+   ],
+   "deps": [
+    "commenter",
+    "epc",
+    "flycheck-nimsuggest",
+    "let-alist"
+   ],
+   "commit": "16a245e4974d21a6e9e7163e7fbfb50a0bd89f99",
+   "sha256": "0fil6x2wshrini0q2zdi96hrvqgx5l4ljnirgqcr7q7lmjdijpci"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "deps": [
+    "commenter",
+    "epc",
+    "flycheck",
+    "let-alist"
+   ],
+   "commit": "86abed21b9b718ac65cc167f208e0bd5b92c79ed",
+   "sha256": "0h1paf9z6xvkay97ns74w2w9plwi46md5f2kik4jvjy74p57gxal"
+  }
+ },
+ {
+  "ename": "nimbus-theme",
+  "commit": "fc0e6b456b76e2379c64a86ad844362c58146dc6",
+  "sha256": "1hy4rc1v5wg7n6nazdq09gadirb0qvn887mmdavwjnnac45xyi18",
+  "fetcher": "github",
+  "repo": "m-cat/nimbus-theme",
+  "unstable": {
+   "version": [
+    20200203,
+    1941
+   ],
+   "commit": "32c5c88502aec1afb6700a798c215b7fc6ce6101",
+   "sha256": "1s0f7wgik5383ffkys27376s0gzhhz6m0rap7l8iqq67yz0k6hxw"
+  }
+ },
+ {
+  "ename": "ninja-mode",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "1v6wy9qllbxl37fp9h47000lwp557qss6fdjb3a1f20msg8f70av",
+  "fetcher": "github",
+  "repo": "ninja-build/ninja",
+  "unstable": {
+   "version": [
+    20181024,
+    1439
+   ],
+   "commit": "c6148b0c3377a7d12b679f99f35e09cc7f36e940",
+   "sha256": "088znrs8hygsfx0ndqhpfdgra3l3jf6dyfwz2l6h4s7w4kc8mlnk"
+  },
+  "stable": {
+   "version": [
+    1,
+    10,
+    0
+   ],
+   "commit": "ed7f67040b370189d989adbd60ff8ea29957231f",
+   "sha256": "1fbzl7mrcrwp527sgkc1npfl3k6bbpydpiq98xcf1a1hkrx0z5x4"
+  }
+ },
+ {
+  "ename": "nix-buffer",
+  "commit": "08b978724ff26b3ea7a134d307d888c80e2a92a9",
+  "sha256": "1fjkf88345v9l2v2mk8a057mw0p0rckf6rjf00y5464dyhh58vcd",
+  "fetcher": "github",
+  "repo": "shlevy/nix-buffer",
+  "unstable": {
+   "version": [
+    20180212,
+    1518
+   ],
+   "deps": [
+    "f"
+   ],
+   "commit": "db57cda36e7477bdc7ef5a136357b971b1d4d099",
+   "sha256": "0b01b4l9c70sad5r5py5hvg7s6k6idwwp0pv3rn8rj0fq5wlyixj"
+  },
+  "stable": {
+   "version": [
+    3,
+    1,
+    1
+   ],
+   "deps": [
+    "f"
+   ],
+   "commit": "db57cda36e7477bdc7ef5a136357b971b1d4d099",
+   "sha256": "0b01b4l9c70sad5r5py5hvg7s6k6idwwp0pv3rn8rj0fq5wlyixj"
+  }
+ },
+ {
+  "ename": "nix-env-install",
+  "commit": "47dbcb798012e53a7e02277428006db50781d009",
+  "sha256": "0srbdq93d6apmn4wbcgaz3fil82n44wvcslxmjc95warwz859xmd",
+  "fetcher": "github",
+  "repo": "akirak/nix-env-install",
+  "unstable": {
+   "version": [
+    20200113,
+    751
+   ],
+   "commit": "b343a7e885206e78544da7313b860442abbd7440",
+   "sha256": "06sq5biv15pgz8azp1kkbkj6ifi2xpa688gx8hj3xvkms9hy6b29"
+  }
+ },
+ {
+  "ename": "nix-haskell-mode",
+  "commit": "aeb879e2e8b017d3e1ccdc8d19f17d09b2ad5f1b",
+  "sha256": "1rygqmq01p27gbda6hgnzisng7xqf63x462a3x31ym67ivxsyqz3",
+  "fetcher": "github",
+  "repo": "matthewbauer/nix-haskell-mode",
+  "unstable": {
+   "version": [
+    20190615,
+    135
+   ],
+   "deps": [
+    "haskell-mode",
+    "nix-mode"
+   ],
+   "commit": "68efbcbf949a706ecca6409506968ed2ef928a20",
+   "sha256": "1zv3sj3pgc2chv3880nyixvdmpw9sm4h153xw7gm26v2yhhkfdnn"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "flycheck",
+    "haskell-mode",
+    "nix-mode"
+   ],
+   "commit": "1622924f0f6668f9b42f135323087ba94b1bf252",
+   "sha256": "09x4b939y0w4irnkvpxhn1jkzy4id9vhfkl5b9f14jjdny2d6l3a"
+  }
+ },
+ {
+  "ename": "nix-mode",
+  "commit": "e1870d786dbfac3b14386c8030e06f2d13ab9da6",
+  "sha256": "10f3ly4860lkxzykw4fbvhn3i0c2hgj77jfjbhlk2c1jz9x4yyy5",
+  "fetcher": "github",
+  "repo": "NixOS/nix-mode",
+  "unstable": {
+   "version": [
+    20200515,
+    410
+   ],
+   "commit": "e20afb51a48b5d014292d123487f53a678c7c3f7",
+   "sha256": "1gbq9pmz1wv6kc128pyzi2hrsv9ax20myjmq02bwc4x5sqg6rdzq"
+  },
+  "stable": {
+   "version": [
+    1,
+    4,
+    2
+   ],
+   "commit": "e20afb51a48b5d014292d123487f53a678c7c3f7",
+   "sha256": "1gbq9pmz1wv6kc128pyzi2hrsv9ax20myjmq02bwc4x5sqg6rdzq"
+  }
+ },
+ {
+  "ename": "nix-sandbox",
+  "commit": "66be755a6566e8c0cfb5aafa50de29b434023c7a",
+  "sha256": "13zr0jbc6if2wvyiplay2gkd5548imfm38x1qy1dw6m2vhbzwp0k",
+  "fetcher": "github",
+  "repo": "travisbhartwell/nix-emacs",
+  "unstable": {
+   "version": [
+    20191126,
+    759
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "977b9a505ffc8b33b70ec7742f90e469b3168297",
+   "sha256": "07vidk3bnby1ch51i67llfdx2q8xc4ax5hvlrc3f72y9gkcpir4x"
+  }
+ },
+ {
+  "ename": "nix-update",
+  "commit": "c59e828d4cad3d75344b34b9666349250e53b6ea",
+  "sha256": "0if83pvjvr0347301j553bsxrrxniyykq20457cdkzlvva52c0b3",
+  "fetcher": "github",
+  "repo": "jwiegley/nix-update-el",
+  "unstable": {
+   "version": [
+    20190124,
+    1935
+   ],
+   "commit": "fc6c39c2da3fcfa62f4796816c084a6389c8b6e7",
+   "sha256": "01cpl4w49m5dfkx7l8g1q183s341iz6vkjv2q4fbx93avd7msjgi"
+  }
+ },
+ {
+  "ename": "nixos-options",
+  "commit": "6846c7d86e70a9dd8300b89b61435aa7e146be96",
+  "sha256": "1m3jipidk10zj68rzjbacgjlal31jf80gqjxlgj4qs8lm671gxmm",
+  "fetcher": "github",
+  "repo": "travisbhartwell/nix-emacs",
+  "unstable": {
+   "version": [
+    20160209,
+    1841
+   ],
+   "commit": "977b9a505ffc8b33b70ec7742f90e469b3168297",
+   "sha256": "07vidk3bnby1ch51i67llfdx2q8xc4ax5hvlrc3f72y9gkcpir4x"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "json"
+   ],
+   "commit": "5fc8fa29bea9dd8e9c822af92f9bc6ddc223635f",
+   "sha256": "1lm7rkgf7q5g4ji6v1masfbhxdpwni8d77dapsy5k9p73cr2aqld"
+  }
+ },
+ {
+  "ename": "nixpkgs-fmt",
+  "commit": "36f9451ad54c787f9e94bfda0e71de99da94be34",
+  "sha256": "1j9k4r25iylmrg0hbjb8jamrci3jxyrpx2baawmcyhqgxiz3lcz8",
+  "fetcher": "github",
+  "repo": "purcell/emacs-nixpkgs-fmt",
+  "unstable": {
+   "version": [
+    20200327,
+    2302
+   ],
+   "deps": [
+    "reformatter"
+   ],
+   "commit": "cc8ee143d4ef45a8c540901852326ccdf6ff8482",
+   "sha256": "0a1ih8w8xk8rdd96k7236v6xh2xr1r6gaiv2b6js95k04igdqxnh"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "reformatter"
+   ],
+   "commit": "83e03d6f20bdf79c1c448c15734367b1a7cc6b02",
+   "sha256": "0hw0m4a637w1fm47snywn0mxz09qa5diy4hqngbqf7gxfj6hmfnz"
+  }
+ },
+ {
+  "ename": "nlinum-hl",
+  "commit": "b13a886535a5c33fe389a6b616988b7377249625",
+  "sha256": "17lcp1ira7yhch9npg9sf3npwg06yh9zyhg0lnb22xg09lbndj0x",
+  "fetcher": "github",
+  "repo": "hlissner/emacs-nlinum-hl",
+  "unstable": {
+   "version": [
+    20190301,
+    2117
+   ],
+   "deps": [
+    "cl-lib",
+    "nlinum"
+   ],
+   "commit": "dc6b365a58e06c7d637a76a31c71a40b20da8b56",
+   "sha256": "1fvvyc77iggil9mzy8hd4vx8xw96bkfx6pmlb9ami428qp8r45g7"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    6
+   ],
+   "deps": [
+    "cl-lib",
+    "nlinum"
+   ],
+   "commit": "dc6b365a58e06c7d637a76a31c71a40b20da8b56",
+   "sha256": "1fvvyc77iggil9mzy8hd4vx8xw96bkfx6pmlb9ami428qp8r45g7"
+  }
+ },
+ {
+  "ename": "nlinum-relative",
+  "commit": "eb418a464b112f9bb1bbd050e9602b60c0fcce1c",
+  "sha256": "15ifh5bfsarkifx6m7d5rhx6hqlnm231plkf623885kar7i85ia4",
+  "fetcher": "github",
+  "repo": "CodeFalling/nlinum-relative",
+  "unstable": {
+   "version": [
+    20160526,
+    708
+   ],
+   "deps": [
+    "nlinum"
+   ],
+   "commit": "5b9950c97ba79a6f0683e38b13da23f39e01031c",
+   "sha256": "0h00ghr5sipayfxz7ykzy7bg1p1vkbwxl5xch3x0h8j2cp1dqc3d"
+  }
+ },
+ {
+  "ename": "nm",
+  "commit": "cdad6565e83dd79db538d3b6a45e932864246da2",
+  "sha256": "004rjbrkc7jalbd8ih170sy97w2g16k3whqrqwywh09pzrzb05kw",
+  "fetcher": "github",
+  "repo": "tjim/nevermore",
+  "unstable": {
+   "version": [
+    20151110,
+    1910
+   ],
+   "deps": [
+    "company",
+    "notmuch",
+    "peg"
+   ],
+   "commit": "5a3f29174b3a4b2b2e7a700a862f3b16a942687e",
+   "sha256": "1skbjmyikzyiic470sngskggs05r35m8vzm69wbmrjapczginnak"
+  }
+ },
+ {
+  "ename": "nndiscourse",
+  "commit": "1d6a236cd3ff51f2d4cfca114b2791c8ac7411e8",
+  "sha256": "03kfb8c7knnd1n5sxxpldmscbwi5lrnsyh6w2ji4pvaq5xhmrlxb",
+  "fetcher": "github",
+  "repo": "dickmao/nndiscourse",
+  "unstable": {
+   "version": [
+    20200418,
+    2355
+   ],
+   "deps": [
+    "anaphora",
+    "dash",
+    "dash-functional",
+    "json-rpc",
+    "rbenv"
+   ],
+   "commit": "103eb5c13ad2d154c9386b2aa9dbea532435ee7a",
+   "sha256": "04nympxjg1dhahk7m71769c5lzsxxsnd9c62lqrkn22gvfzm0wm5"
+  }
+ },
+ {
+  "ename": "nnhackernews",
+  "commit": "40fec106c676f8207ec9c4553c3ec16c626b098c",
+  "sha256": "0nqbfzyb61a80900hg2sqimjvr765a3f94v07by55d1smifzwnff",
+  "fetcher": "github",
+  "repo": "dickmao/nnhackernews",
+  "unstable": {
+   "version": [
+    20200407,
+    1525
+   ],
+   "deps": [
+    "anaphora",
+    "dash",
+    "dash-functional",
+    "request"
+   ],
+   "commit": "d5e58b373ab6c5f13174e76f5ae62539dc5cfc95",
+   "sha256": "0gqqdjmasjs1p6nal9s2yhas1xr2nm99rd3rns2b8cd5j04ccvaz"
+  }
+ },
+ {
+  "ename": "nnir-est",
+  "commit": "ca17de8cdd53bb32a9d3faaeb38f19f92b18ee38",
+  "sha256": "04ih47pipph8sl84nv6ka4xlpd8vhnpwhs5cchgk5k1zv3l5scxv",
+  "fetcher": "github",
+  "repo": "kawabata/nnir-est",
+  "unstable": {
+   "version": [
+    20180710,
+    2103
+   ],
+   "commit": "6d0d5c8e33f4e4ccbc22350324c0990d2676fb5a",
+   "sha256": "1xmv2mddhvcvnyndpyv42gl8zn5dx7lvd03pl43bjp38srn4aj6g"
+  }
+ },
+ {
+  "ename": "nnreddit",
+  "commit": "4581c76fee699eb9f41eb0f00e4ccd4a008b8399",
+  "sha256": "0pfb57pwdyhsrmgzbf83xrq10xjhm6sk6xyz8rd15gjqka2mc8c2",
+  "fetcher": "github",
+  "repo": "dickmao/nnreddit",
+  "unstable": {
+   "version": [
+    20200417,
+    1757
+   ],
+   "deps": [
+    "anaphora",
+    "dash",
+    "json-rpc",
+    "request",
+    "virtualenvwrapper"
+   ],
+   "commit": "7f6e3bdbfa872af8e92ed339671772b46bc7f7f0",
+   "sha256": "1dbb4pm2dvyvgw6lxjhhdqplb1b1jbvnywy8d3abr5dpzfqzij8s"
+  }
+ },
+ {
+  "ename": "no-emoji",
+  "commit": "af6b04c1f95468254f2cf361964df9fd25d23586",
+  "sha256": "1lr6bzjxwn3yzw0mq36h2k2h8bqb1ngin42swhv022yx6a022zn2",
+  "fetcher": "github",
+  "repo": "ecraven/no-emoji",
+  "unstable": {
+   "version": [
+    20180515,
+    1837
+   ],
+   "commit": "ebceeab50dbfe4d60235180a57633745dbc18c77",
+   "sha256": "19wni50073dwspppx0xlryagg2fgg0jiz5kqf1b1wmaq8xn5b8r9"
+  }
+ },
+ {
+  "ename": "no-littering",
+  "commit": "57a2fb9524df3fdfdc54c403112e12bd70888b23",
+  "sha256": "15w784ir48v8biiaar8ip19s9y3wn5831m815kcw02mgzy3bfjmh",
+  "fetcher": "github",
+  "repo": "emacscollective/no-littering",
+  "unstable": {
+   "version": [
+    20200426,
+    2105
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "e67d7edac513892c5997468899f177a6e7956906",
+   "sha256": "0b1f1lxzp2i2liysl8fs1lqcyrz220m232pzk8h6l7iq8y5fp15q"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    3
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d1d6965c70fc6ce0cfb38a5115d0e112aefac1d7",
+   "sha256": "17is06l0w6glppabv2kaclrnqi3dqb6p6alpslpg7lrjd8vd45ir"
+  }
+ },
+ {
+  "ename": "no-spam",
+  "commit": "77315d545c4df63a1e7f9c90e80a36746da4d986",
+  "sha256": "1rg9c53izvpsyrvn0lpfkmw4lbz5vhh501zjljz65d01pf8zmkkl",
+  "fetcher": "github",
+  "repo": "mamapanda/no-spam",
+  "unstable": {
+   "version": [
+    20190724,
+    1854
+   ],
+   "commit": "860860e4a0d59bd15c8e092dc42f5f7f769a428e",
+   "sha256": "00xrbgh0pw6apm51lyvwdlc8rlkb2i713cclibaqffi18qz5z6kf"
+  }
+ },
+ {
+  "ename": "noaa",
+  "commit": "1272203f85375e50d951451bd5fd3baffd57bbfa",
+  "sha256": "11hzpmgapmf6dc5imvj5jvzcy7hfddyz74lqmrq8128i72q1sj0v",
+  "fetcher": "github",
+  "repo": "thomp/noaa",
+  "unstable": {
+   "version": [
+    20190202,
+    1634
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "request"
+   ],
+   "commit": "ebc6a4a1cc56c01d2bb882e4a40934a6a1f4e9ca",
+   "sha256": "04zhhz8v6bx627g1vhvd0s8bl5g3d6a1mfgf7pb13627npsvbrdx"
+  }
+ },
+ {
+  "ename": "noccur",
+  "commit": "41f15b8298390310e95cbe137ea1516c0be10b94",
+  "sha256": "0a8l50v09bgap7rsls808k9wyjpjbcxaffsvz7hh9rw9s7m5fz5g",
+  "fetcher": "github",
+  "repo": "NicolasPetton/noccur.el",
+  "unstable": {
+   "version": [
+    20191015,
+    719
+   ],
+   "commit": "fa91647a305e89561d3dbe53da002fff49abe0bb",
+   "sha256": "0slyy7qadc06cij7lgk7d36ym54dyh9a7vjdc38ysr1nh8g7agvm"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "6cc02ce07178a61ae38a849f80472c01969272bc",
+   "sha256": "0wk86gm0by9c8mfbvydz5va07qd30n6wx067inqfa7wjffaq0xr7"
+  }
+ },
+ {
+  "ename": "nocomments-mode",
+  "commit": "d88074771b581d21f48b707f93949f7224a28633",
+  "sha256": "1qhalhs29fb3kv5ckk8ny9fbqn2c4r4lwnc566j3bb1caqf2j7g0",
+  "fetcher": "github",
+  "repo": "Lindydancer/nocomments-mode",
+  "unstable": {
+   "version": [
+    20170213,
+    2037
+   ],
+   "commit": "5a41a20cc44dfe4a9ea584354ed6dbc15dd92f46",
+   "sha256": "0jwwnypa0lx812p3dqqn9c05g27qavnvr23pzphydx9i15nz80g0"
+  }
+ },
+ {
+  "ename": "noctilux-theme",
+  "commit": "c0a18df34c105da8c5710643cd8027402bb07c95",
+  "sha256": "15ymyv3rq0n31d8h0ry0l4w4r5a8as0q63ajm9wb6yrxxjl1imfp",
+  "fetcher": "github",
+  "repo": "sjrmanning/noctilux-theme",
+  "unstable": {
+   "version": [
+    20161113,
+    1442
+   ],
+   "commit": "a3265a1be7f4d73f44acce6d968ca6f7add1f2ca",
+   "sha256": "12xx0v8d97kjvlkj0ii78vxxvzgmcfc4hzv4yvxymg50rsy0zzqi"
+  }
+ },
+ {
+  "ename": "node-resolver",
+  "commit": "60537705dc922bd50220d378a2992cf36464eb0c",
+  "sha256": "1ng4rgm8f745fajqnbjhi2rshvn6icwdpbh5dzpzhim1w9kb3bhh",
+  "fetcher": "github",
+  "repo": "meandavejustice/node-resolver.el",
+  "unstable": {
+   "version": [
+    20140930,
+    1723
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "ef9d0486907a746a80b02ffc6208a09c168a9f7c",
+   "sha256": "1cgmq00ackabwcl4h0n2bb8y08wz0ir5rzca2q3sk4asly6d02m7"
+  }
+ },
+ {
+  "ename": "nodejs-repl",
+  "commit": "14f22f97416111fcb02e299ff2b20c44fb75f049",
+  "sha256": "0rvhhrsw87kfrwdhm8glq6b3nr0v90ivm7fcc0da4yc2jmcyk907",
+  "fetcher": "github",
+  "repo": "abicky/nodejs-repl.el",
+  "unstable": {
+   "version": [
+    20200320,
+    1645
+   ],
+   "commit": "6fad7d764fa0d818ba497450bd722ae10cb8efed",
+   "sha256": "0saky39n0p8w7lmalg3j4da0crrx40yz0rz1zdjzwpd2bd9v2izg"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    4
+   ],
+   "commit": "f5ce3d5b7b4e0d06f6e9d4930d9ecc417633586b",
+   "sha256": "0a5mmg3cmdi73giblp07ksl06xzl9nb2m3f96ny4r3rv0ar3v1bx"
+  }
+ },
+ {
+  "ename": "nodemcu-mode",
+  "commit": "a414f8b30954a50d74e4ae42abcf436cfca8d2b4",
+  "sha256": "0xx5dys8vifgaf3hb4q762xhhn1jybc4xwajqj98iban4nrakb3a",
+  "fetcher": "github",
+  "repo": "andrmuel/nodemcu-mode",
+  "unstable": {
+   "version": [
+    20180501,
+    2225
+   ],
+   "commit": "8effd9f3df40b6b92a2f05e4d54750b624afc4a7",
+   "sha256": "1s19sshsm4cdx8kj5prmsq8ryz4843xcqmdayvlfl99jxsp9j4pm"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "8effd9f3df40b6b92a2f05e4d54750b624afc4a7",
+   "sha256": "1s19sshsm4cdx8kj5prmsq8ryz4843xcqmdayvlfl99jxsp9j4pm"
+  }
+ },
+ {
+  "ename": "nodenv",
+  "commit": "272df58a1112c8c082c740d54bd37469af513d4a",
+  "sha256": "15wqlpswp4m19widnls21rm5n0ijfhmw3vyx0ch5k2bhi4a5rip6",
+  "fetcher": "github",
+  "repo": "twlz0ne/nodenv.el",
+  "unstable": {
+   "version": [
+    20181023,
+    1543
+   ],
+   "commit": "832fb0cbac4513edde7ebd6d1ab971c54313be36",
+   "sha256": "0hn29y8gv9y9646yacnhirx2iz1z7h0p3wrzjn5axbhw0y382qhq"
+  }
+ },
+ {
+  "ename": "noflet",
+  "commit": "df33a7230e0e4a67ce75e5cce6a436e2a0d205e8",
+  "sha256": "0vzamqb52n330mi6rydrd4ls8nbwh5s42fc2gs5y15zakp6mvhr3",
+  "fetcher": "github",
+  "repo": "nicferrier/emacs-noflet",
+  "unstable": {
+   "version": [
+    20141102,
+    1454
+   ],
+   "commit": "7ae84dc3257637af7334101456dafe1759c6b68a",
+   "sha256": "0g70gnmfi8n24jzfci9nrj0n9bn1qig7b8f9f325rin8h7x32ypf"
+  }
+ },
+ {
+  "ename": "nofrils-acme-theme",
+  "commit": "c59ddaa5e41d3c25c446b1ed1905d7f88b448e0a",
+  "sha256": "01xqsn8whczv34lfa9vbm5rpvrvsrlpav8pzng10jvax1a9wdp3a",
+  "fetcher": "gitlab",
+  "repo": "esessoms/nofrils-theme",
+  "unstable": {
+   "version": [
+    20180620,
+    1248
+   ],
+   "commit": "98ad7bfaff1d85b33dc162645670285b067c6f92",
+   "sha256": "0f8s7mhcs1ym4an8d4dabfvhin30xs2d0c5gv875hsgz8p3asgxs"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "7825f88cb881a84eaa5cd1689772819a18eb2943",
+   "sha256": "009did3i3i8yi0virq606l02w1mw0gdyiqablqg7m368gx0gfvh5"
+  }
+ },
+ {
+  "ename": "nord-theme",
+  "commit": "31cb60069825abe3998c8b43bc9177b39a7f3659",
+  "sha256": "0p4fqg4i2ayimd8kxsqnb1xkapzhhxf7szxi1skva4dcym3z67cc",
+  "fetcher": "github",
+  "repo": "arcticicestudio/nord-emacs",
+  "unstable": {
+   "version": [
+    20200108,
+    833
+   ],
+   "commit": "d828752e270978a56bde19986c98b1bbe8f51386",
+   "sha256": "096f8cik4jz89bvkifwp3gm9iraqrd75ljy2q9js724v7yj88711"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "commit": "0f5295f99005a200191ce7b660e56cd0510cf710",
+   "sha256": "096f8cik4jz89bvkifwp3gm9iraqrd75ljy2q9js724v7yj88711"
+  }
+ },
+ {
+  "ename": "nordless-theme",
+  "commit": "d16babc1f37d62cb8e9e983dfd92dabb83c8b9b3",
+  "sha256": "0nf9pkyrv0qvbpmp2kqdqmli6cg0bvn9q815p9pdpvacmjsnfpvj",
+  "fetcher": "git",
+  "url": "https://git.sr.ht/~lthms/colorless-themes.el",
+  "unstable": {
+   "version": [
+    20200213,
+    2057
+   ],
+   "deps": [
+    "colorless-themes"
+   ],
+   "commit": "2b4c341640c8191a39e4bc28d6cd04c7d6dcbb37",
+   "sha256": "0ni9cnrv464fk840i1ll241kzkiy1zc6nfrbdv3ciixxdxbshxbn"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "colorless-themes"
+   ],
+   "commit": "8e539097185704444a5dd5545924de92c11ba767",
+   "sha256": "1p16vxai8dj1vy4ahflwij1ldx00jzrjcinpgpc7wgh6ka748v11"
+  }
+ },
+ {
+  "ename": "northcode-theme",
+  "commit": "25dcd4dd8189ad0fbf6c31874daa618bf1957863",
+  "sha256": "0x4dryx174kcjzm11z9q5qqlzr1c9zr0p32zwgbvgypgnvjy6i4g",
+  "fetcher": "github",
+  "repo": "Northcode/northcode-theme.el",
+  "unstable": {
+   "version": [
+    20180423,
+    1649
+   ],
+   "commit": "4d3750461ba25ec45321318b5f1af4e8fdf16147",
+   "sha256": "1yin5i38jdp47k6b7mc0jkv9ihl8nk5rpqin4qmwbhb871zxn7ma"
+  }
+ },
+ {
+  "ename": "nose",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1xdqsxq06x2m9rcfn1qh89g0mz1rvzl246d3sfmciwcyl932x682",
+  "fetcher": "bitbucket",
+  "repo": "durin42/nosemacs",
+  "unstable": {
+   "version": [
+    20140520,
+    1648
+   ],
+   "commit": "194d7789bf797f31ea0adc45f08beb66ae9ea98e",
+   "sha256": "07bhzddaxdjd591xmg59yd657a1is0q515291jd83mjsmgq258bm"
+  }
+ },
+ {
+  "ename": "nothing-theme",
+  "commit": "8f69a676e9adfb45f8fbd4467e86a4cb0fbf6ae8",
+  "sha256": "0w93f50sb9swgn1lwnk8pdwwa5kpizmaaz13lvbk1qhq2xipr7yp",
+  "fetcher": "github",
+  "repo": "jaredgorski/nothing.el",
+  "unstable": {
+   "version": [
+    20200504,
+    402
+   ],
+   "commit": "d2514bb9707f66dda0d60f40f465e79914c50946",
+   "sha256": "1gy3zis9swkriynaq4xc8mc3xiihak0hi718pckbkxwjmnrfyvc0"
+  }
+ },
+ {
+  "ename": "notmuch",
+  "commit": "d05fbde3aabfec4efdd19a33fd2b1297905acb5a",
+  "sha256": "0pznpl0aqybdg4b2qypq6k4jac64sssqhgz6rvk9g2nkqhkds1x7",
+  "fetcher": "git",
+  "url": "https://git.notmuchmail.org/git/notmuch",
+  "unstable": {
+   "version": [
+    20200427,
+    1036
+   ],
+   "commit": "627460d7bbbb6b95a07084c2b6fc7f647a5547e1",
+   "sha256": "07fm4ndg42c0fw2dhj2rl32yrdnyprhidgkrwyckghwj02gjfwrj"
+  },
+  "stable": {
+   "version": [
+    0,
+    29,
+    3
+   ],
+   "commit": "a59ef7d02cb229c2ec3569024918024003568aea",
+   "sha256": "0w9k7jfhcp34inkqciisrjfgflrx8h5q4svfa6bij9p93g1hig0b"
+  }
+ },
+ {
+  "ename": "notmuch-bookmarks",
+  "commit": "dda2f16bfd15bebae67b51f04c068ffd032a42fb",
+  "sha256": "0ckl2hspjmk8gr2szh6xg1kv9vsnc2s0jjqymqvckpsl2g4n82p9",
+  "fetcher": "github",
+  "repo": "publicimageltd/notmuch-bookmarks",
+  "unstable": {
+   "version": [
+    20200322,
+    1925
+   ],
+   "deps": [
+    "notmuch",
+    "seq"
+   ],
+   "commit": "ec8edfdbd1ac475530591d73a570ded5c18ed86a",
+   "sha256": "01bhxvjsmgxvh08r80lzlyj0wk1izx5bq22w6zsdzvxiclgrzk16"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "c0071310f01dd5296600bdc4d6135667d38ef0de",
+   "sha256": "0zg53b77g4s05dj3a7n3vxdvfwya6pzc0v86kqk0443m2y96vfwc"
+  }
+ },
+ {
+  "ename": "notmuch-labeler",
+  "commit": "2e9940e66bbf70ec868dbdaaeaa1fbd4f076a2e1",
+  "sha256": "1c0cbkk5k8ps01xl63a0xa2adkqaj0znw8qs8ca4ai8v1420bpl0",
+  "fetcher": "github",
+  "repo": "DamienCassou/notmuch-labeler",
+  "unstable": {
+   "version": [
+    20131230,
+    1719
+   ],
+   "deps": [
+    "notmuch"
+   ],
+   "commit": "d65d1129555d368243df4770ecc1e7ccb88efc58",
+   "sha256": "1ss87vlp7625lnn2iah3rc1xfxcbpx4kmiww9n16jx073fs2rj18"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "notmuch"
+   ],
+   "commit": "d65d1129555d368243df4770ecc1e7ccb88efc58",
+   "sha256": "1ss87vlp7625lnn2iah3rc1xfxcbpx4kmiww9n16jx073fs2rj18"
+  }
+ },
+ {
+  "ename": "nov",
+  "commit": "20b2cc78b41a26e434b984943681fea774fd3c50",
+  "sha256": "1w4il2jbn0x6v11y3rnz5w5vs0d0hhlqqzzxdpkpmrq9ycbq58hw",
+  "fetcher": "git",
+  "url": "https://depp.brause.cc/nov.el.git",
+  "unstable": {
+   "version": [
+    20200506,
+    1245
+   ],
+   "deps": [
+    "dash",
+    "esxml"
+   ],
+   "commit": "55a3b41aa71740826a1cd410fa8d24a313f27b7c",
+   "sha256": "0zw6iq2iwv06jixb5cv73b832y576v0vs51l0j80d8w5d09zpfz3"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "dash",
+    "esxml"
+   ],
+   "commit": "ea0c835c1b5e6e70293f4bd64e9c89bdc42f8596",
+   "sha256": "04phmm14ywgicjsl2bsg6w9rapd71vdkxdp5wp0brj6px27y85jz"
+  }
+ },
+ {
+  "ename": "nova-theme",
+  "commit": "16457166c17fb1cc074a34c61e52ebc285c0eacc",
+  "sha256": "1d2271qd5z48x71pxjg4lngsc5ddw5iqh496p04f63sm08cgaky4",
+  "fetcher": "github",
+  "repo": "muirmanders/emacs-nova-theme",
+  "unstable": {
+   "version": [
+    20200213,
+    102
+   ],
+   "commit": "4553fabbcd340f3f2fa59dbfb6f3f32ecb016e6f",
+   "sha256": "0y0f7f03hikd5j20fc40g0hrp7aiwzna9rfwpxzlj10n8ijmygq9"
+  }
+ },
+ {
+  "ename": "noxml-fold",
+  "commit": "13d2af88b292293cb5ab50819c63acfe936630c8",
+  "sha256": "11dninxxwhflf2qrmvwmrryspd9j6m95kdlmyx59ykqvw8j0siqc",
+  "fetcher": "github",
+  "repo": "paddymcall/noXML-fold",
+  "unstable": {
+   "version": [
+    20170823,
+    1357
+   ],
+   "commit": "46c7f6a008672213238a9f8d7a416ce80916aa62",
+   "sha256": "0axr7n4wdrd009lz6sg4y9ggf4f5svgrsclwhs0hyn2ld34rvrax"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "commit": "56fbc44b25cee9f8719edb3c7f8b1c4327dc1051",
+   "sha256": "00h6nwbx2l0rp2i7n0328w6ckp4gkspqk3q91ciixb4lkhh20cz2"
+  }
+ },
+ {
+  "ename": "npm",
+  "commit": "012ca672c63711197c98eded098b1d1a9a24fd51",
+  "sha256": "0zi4c5a8cn03i6jdranak586s580bw772vazslxa3zs1y3xripir",
+  "fetcher": "github",
+  "repo": "shaneikennedy/npm.el",
+  "unstable": {
+   "version": [
+    20200406,
+    1429
+   ],
+   "deps": [
+    "transient"
+   ],
+   "commit": "187ddd2732deb49df1e87fbaace153afb8a3e7e1",
+   "sha256": "0kh8y0izab3rra5vb1229h77ykz704wh28m7vv0bsfn5lg02ridx"
+  }
+ },
+ {
+  "ename": "npm-mode",
+  "commit": "22dd6b2f8a94f56a61f4b70bd7e44b1bcf96eb18",
+  "sha256": "1aym4jfr6im6hdc5d7995q6myhgig286fk9hpaxdf418h1s17rqr",
+  "fetcher": "github",
+  "repo": "mojochao/npm-mode",
+  "unstable": {
+   "version": [
+    20190616,
+    2025
+   ],
+   "commit": "3ee7c0bad5b7a041d4739ef3aaa06a3dc764e5eb",
+   "sha256": "06axwqxdj3damn93l6asn6mnzqrfndc10s7wp1z3nbv9j5yjm35x"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    0
+   ],
+   "commit": "84b35211cba4f2d5f03b8dc2b60ae4b03d90bf8a",
+   "sha256": "1mh6nbffciw4yhv049kdhh796ysj1x21ndm3fwymhskb3dy0w1ss"
+  }
+ },
+ {
+  "ename": "nrepl-eval-sexp-fu",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1mz7a6aa4x23khlfqhhn9ycs3yxg44h5cckg4v4rc6lbif1jzzf8",
+  "fetcher": "github",
+  "repo": "samaaron/nrepl-eval-sexp-fu",
+  "unstable": {
+   "version": [
+    20140311,
+    1041
+   ],
+   "deps": [
+    "highlight",
+    "smartparens",
+    "thingatpt"
+   ],
+   "commit": "3a24b7d4bca13e87c987a4ddd212da914ff59191",
+   "sha256": "1nwj1ax2qmmlab4lik0b7japhqd424d0rb995dfv89p99gp8vmvc"
+  }
+ },
+ {
+  "ename": "nrepl-sync",
+  "commit": "2059ab6f2a3adc5af4f0876546e344e806e22ee5",
+  "sha256": "01b504b4d8rrhlf3sfq3kk9i222fch6jd5jbm02kqw20fgv6q3jd",
+  "fetcher": "github",
+  "repo": "phillord/lein-sync",
+  "unstable": {
+   "version": [
+    20140807,
+    1554
+   ],
+   "deps": [
+    "cider"
+   ],
+   "commit": "bab53a2361526d63a24cda176d07a1247bf5b399",
+   "sha256": "1129r3rzmfbl8nxjz71xnlyaszhhldawj467zbl36brdadp014n1"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "deps": [
+    "cider"
+   ],
+   "commit": "471a08df87687a3eab61b3b8bf25a2e0962b5d5b",
+   "sha256": "1l07nrlfd5qj8jnqacjba7mb6prapg8d8h3881l3kb66sn02ahgy"
+  }
+ },
+ {
+  "ename": "ns-auto-titlebar",
+  "commit": "d22ebb5ef16df0c56d6031cb1c7f312dca514482",
+  "sha256": "1wk4y2jwl65z18cv57m8zkcg31wp9by74z2zvccxzl7mwlhy7kqg",
+  "fetcher": "github",
+  "repo": "purcell/ns-auto-titlebar",
+  "unstable": {
+   "version": [
+    20181022,
+    2154
+   ],
+   "commit": "1efc30d38509647b417f05587fd7003457719256",
+   "sha256": "0px64jsdps477s9xiw96mhcf1fmgxf0gsp30gzhqfb1b1k4f306j"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "b16092e8058af63ad2bc222f166b0aa3cb66bf9d",
+   "sha256": "0m1ih8ca4702zrkhl3zdvwbci96wyjlxhpfx95w372k25rca87dq"
+  }
+ },
+ {
+  "ename": "nsis-mode",
+  "commit": "e9b169a80c7afdeb0c6e17cd289114b5d3d97266",
+  "sha256": "0pc047ryw906sz5mv0awvl67kh20prsgx6fbh0j1qm0cali2792l",
+  "fetcher": "github",
+  "repo": "mattfidler/nsis-mode",
+  "unstable": {
+   "version": [
+    20190615,
+    1827
+   ],
+   "commit": "0a2e6ece2fe682dced4d31688b38bb472a877cdf",
+   "sha256": "0i1h452iqa5g0c0783dynnli3fldinasb9xl24x1i36nlq9dxkd4"
+  },
+  "stable": {
+   "version": [
+    0,
+    44
+   ],
+   "commit": "f1bf701c37680553c8f51462e0829d0dd6c53187",
+   "sha256": "0c4qfbb345yna5c30czq8nhcx283z1fnpp6h16p7vjqs6y37czsl"
+  }
+ },
+ {
+  "ename": "nswbuff",
+  "commit": "c0f7e952f3fbec691df51d19224f701e6530f16e",
+  "sha256": "1fq2dp9jlhfl9rqw6ldh0xnm0hx9ama2wf87s51qgqxxdn9ngk8x",
+  "fetcher": "github",
+  "repo": "joostkremers/nswbuff",
+  "unstable": {
+   "version": [
+    20200312,
+    2050
+   ],
+   "commit": "a601855cc96e303e38051d0d1af3402721dbb969",
+   "sha256": "0xbh5max7wbsw3iaa5ai9l5brky3mykyzn77a4w5r1m1f4a67y97"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "a601855cc96e303e38051d0d1af3402721dbb969",
+   "sha256": "0xbh5max7wbsw3iaa5ai9l5brky3mykyzn77a4w5r1m1f4a67y97"
+  }
+ },
+ {
+  "ename": "nu-mode",
+  "commit": "230d5f8fdd965a24b8ff3cc94acf378d04815fca",
+  "sha256": "0nzv3p62k8yyyww6idlxyi94q4d07nis7ydypar8d01jfqlrybkn",
+  "fetcher": "github",
+  "repo": "pyluyten/emacs-nu",
+  "unstable": {
+   "version": [
+    20190404,
+    2032
+   ],
+   "deps": [
+    "ace-window",
+    "avy",
+    "lv",
+    "transpose-frame",
+    "undo-tree",
+    "which-key"
+   ],
+   "commit": "d5fb4d26d1b0bb383ea2827cc5af5dfb2a269d2b",
+   "sha256": "0nd7ypin9kl784iqffznld6kknghdjywqnjw5nwinfgkwhcrjpdd"
+  }
+ },
+ {
+  "ename": "nubox",
+  "commit": "725948568b8a067762b63475bc400f089f478a36",
+  "sha256": "0snzfsd765i363ykdhqkn65lqy97c79d20lalszrwcl2snm96n1f",
+  "fetcher": "github",
+  "repo": "martijnat/nubox",
+  "unstable": {
+   "version": [
+    20170619,
+    910
+   ],
+   "commit": "1ccb8035ae42727ba6bdd5c1106fbceddeeed370",
+   "sha256": "02yh99rcgxdq6jn4xs8782nl6bjccmal8j78qslvpkrzrrxjajx6"
+  }
+ },
+ {
+  "ename": "number",
+  "commit": "49d56b297ab729695249143dd65d3c67543cfcc6",
+  "sha256": "1nwcdv5ibirxx3sqadh6mnpj40ni3wna7wnjh343mx38dk2dzncf",
+  "fetcher": "github",
+  "repo": "chrisdone/number",
+  "unstable": {
+   "version": [
+    20170901,
+    1312
+   ],
+   "commit": "bbc278d34dbcca83e70e3be855ec98b23debfb99",
+   "sha256": "0a1r352zs58mdwkq58561qxrz3m5rwk3xqcaaqhkxc0h9jqs4a9r"
+  }
+ },
+ {
+  "ename": "number-lock",
+  "commit": "3c107adabe2e4c5b35ebb6b21db076cdea0e9c24",
+  "sha256": "13xqn4bcjm01zl0rgbwzad58x35230lm2qiipbyqkh2ma0a9pqn4",
+  "fetcher": "github",
+  "repo": "Liu233w/number-lock.el",
+  "unstable": {
+   "version": [
+    20160830,
+    200
+   ],
+   "commit": "74417b1238953bf485961a0dd7d20f5c36ae25ea",
+   "sha256": "0xmd4q2k0psd53cg71vsyc54iiq0wp9bs00ch68561lrnbjg043w"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "846e86e2b3b07410f69e70d3ba7afb072b5585da",
+   "sha256": "12gza7lxpwrp191gi9gm61wpvgwsrda52zva9bz3ncqfp7w0y32i"
+  }
+ },
+ {
+  "ename": "numbers",
+  "commit": "5c77353d3a2b0d360bb28e528ef2707227081c72",
+  "sha256": "02cx19fi34yvc0icajnwrmb8lr2g8y08kis08v9xxalfxz06kb3h",
+  "fetcher": "github",
+  "repo": "davep/numbers.el",
+  "unstable": {
+   "version": [
+    20170802,
+    1134
+   ],
+   "commit": "dd02508b788a13b7d4dbcc4923fa23134b783ab3",
+   "sha256": "0bgha85j5f9lpk1h3siiw28v5sy6z52n7d7xi3m301r9hdlccc39"
+  },
+  "stable": {
+   "version": [
+    1,
+    4
+   ],
+   "commit": "74be68b94143f042ce461b2a69202f515acaf20c",
+   "sha256": "0b4bgc4hkndia8zg4d23l1w78iwzj1l46ifrhz5z1p97qldalb0x"
+  }
+ },
+ {
+  "ename": "nummm-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1gdq00f3x0rxxj917x9381v2x7cl9yabj7559zr5vj1clwza8jn4",
+  "fetcher": "github",
+  "repo": "agpchil/nummm-mode",
+  "unstable": {
+   "version": [
+    20131117,
+    1014
+   ],
+   "commit": "81951e12032274543c5f7a585b29bd93961e94e4",
+   "sha256": "1i0yymsx8kin28bkrgwkk9ngsmjh0gh5j4hb0k03bq4fy799f2xx"
+  }
+ },
+ {
+  "ename": "nv-delete-back",
+  "commit": "7542fa39060b507a6f455225367e45e89d3e2f92",
+  "sha256": "13izzym4alda05k7ra67lyjx6dx23fjqz2dqk7mrzhik9x552hsr",
+  "fetcher": "gitlab",
+  "repo": "nivaca/nv-delete-back",
+  "unstable": {
+   "version": [
+    20170224,
+    1249
+   ],
+   "commit": "b17cb826f14c18c2875d112574edb5e4f46f5296",
+   "sha256": "1g030806d2l238sr173ypdkkq0g8kf8qdp7a1ls5d3rw0bng4ds1"
+  }
+ },
+ {
+  "ename": "nvm",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0md1ybc2r2fxykwk21acjhdzy2kw326bdwa1d15c6f48lknzvg4w",
+  "fetcher": "github",
+  "repo": "rejeep/nvm.el",
+  "unstable": {
+   "version": [
+    20200501,
+    1414
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "f",
+    "s"
+   ],
+   "commit": "fc925b9afe738264cb15d5135c7426f999aeda47",
+   "sha256": "1mb3i7d470ggky6g9ib1jf04yfkfn9m8jd70mb18rac2ik3sy03q"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "f",
+    "s"
+   ],
+   "commit": "e93e5216e311c665c593ac68c5456d624120ea42",
+   "sha256": "11fa9g05gsh2yjvhy1xjc6hkby5z98mb2bmbshdp89fvlsdksv3i"
+  }
+ },
+ {
+  "ename": "nyan-mode",
+  "commit": "4d8c3000df5f2ee2493a54dee6f9b65008add753",
+  "sha256": "1z2wnsbjllqa533g1ab5cgbv3d9hjix7fsd7z9c45nqh5cmadmyv",
+  "fetcher": "github",
+  "repo": "TeMPOraL/nyan-mode",
+  "unstable": {
+   "version": [
+    20170423,
+    740
+   ],
+   "commit": "a85ac925367ddc542827182a2d9f0133b421c41b",
+   "sha256": "1178zinzaq0hj1n57yhbpakgky952jhj7dfwhwvsvfclmk9dlrr1"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    2
+   ],
+   "commit": "4195cd368aca8f05a71cbff4e60cfa9dde10319a",
+   "sha256": "1bnfxw6cnhsqill3n32j9bc6adl437ia9ivbwvwjpz1ay928yxm7"
+  }
+ },
+ {
+  "ename": "nyx-theme",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "11629h7jfnq2sahwiiqx01qpv3xb0iqvcqm5k9w1zhg01jhjfmw2",
+  "fetcher": "github",
+  "repo": "guidoschmidt/emacs-nyx-theme",
+  "unstable": {
+   "version": [
+    20170910,
+    1307
+   ],
+   "commit": "afe2b8c3b5421b4c292d182dcf77079b278e93d8",
+   "sha256": "1qamw4x3yrygy8qkicy6smxksnsfkkp76hlnivswh7dm3fr23v6m"
+  }
+ },
+ {
+  "ename": "nz-holidays",
+  "commit": "4dfbe628247fc73d9a0963b7e9b92b07854817c9",
+  "sha256": "0h6dnwpinm3bxir1l69ggf483gjfglpi46z3ffiac3yl3h00j5m6",
+  "fetcher": "github",
+  "repo": "techquila/nz-holidays",
+  "unstable": {
+   "version": [
+    20190415,
+    703
+   ],
+   "commit": "afc875cf40789fa45a4a811685b0a7c4f239392f",
+   "sha256": "1bk00pv7ylbrmf42papp6z2bhnp5fbnd4wy3gdzd18j7f2g0196v"
+  }
+ },
+ {
+  "ename": "o-blog",
+  "commit": "d5f24e70260f46445b119817bc1326f29b367c4b",
+  "sha256": "08grkyvg27wd5232q3y8p0v7higfq7bmsdzmvhja96v6qy2xsbja",
+  "fetcher": "github",
+  "repo": "renard/o-blog",
+  "unstable": {
+   "version": [
+    20151202,
+    2339
+   ],
+   "commit": "e466c59478feddc8126c43c1b98550474af484c0",
+   "sha256": "0xs6787a4v7djgd2zz2v1pk14x27mg2ganz30j9f0gdiai7da6ch"
+  },
+  "stable": {
+   "version": [
+    2,
+    0
+   ],
+   "commit": "5db9594c6e3439c000b183551d7975c2e29131f4",
+   "sha256": "0r12023yy8j96bp8z2ml6ffyr2c9rcd5abkh6vqnkwsdxkzx6wrs"
+  }
+ },
+ {
+  "ename": "oauth",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0vgxvscb9cr07g3lzpi269kamgzhpac6dir1rlr4qd2wdv0nifl9",
+  "fetcher": "github",
+  "repo": "psanford/emacs-oauth",
+  "unstable": {
+   "version": [
+    20130128,
+    151
+   ],
+   "commit": "ee4744ad76a1560281b0c4944575a3bd598c6458",
+   "sha256": "058dyk1c3iw0ip8n8rfpskvqiriqilpclkzc18x73msp5svrh3lj"
+  }
+ },
+ {
+  "ename": "ob-ammonite",
+  "commit": "508358506a6994baf120be2acba86762f5727c6c",
+  "sha256": "0wr7p3sfn9m8vz87lzas943zcm8vkzgfki9pbs3rh3fxvdc197lb",
+  "fetcher": "github",
+  "repo": "zwild/ob-ammonite",
+  "unstable": {
+   "version": [
+    20190813,
+    59
+   ],
+   "deps": [
+    "ammonite-term-repl",
+    "s",
+    "xterm-color"
+   ],
+   "commit": "39937dff395e70aff76a4224fa49cf2ec6c57cca",
+   "sha256": "0aibvrhwj2swv9ixl6hx4b2yicbpi095mvs0fib7i1nhlg0zciqd"
+  }
+ },
+ {
+  "ename": "ob-applescript",
+  "commit": "23b075774be913539c3f057dcb7f24fbc05c37a4",
+  "sha256": "1gk8cgscj9wbl5k8ahh1a61p271xpk5vk2w64a8y3njnwrwxm9jc",
+  "fetcher": "github",
+  "repo": "stig/ob-applescript.el",
+  "unstable": {
+   "version": [
+    20190709,
+    1607
+   ],
+   "commit": "2b07b77b75bd02f2102f62e6d52ffdd0f921439a",
+   "sha256": "0ya3ab4qcpm95bw50srf0p0673lzyvwyp0ccqy3akmqz9apsd4rs"
+  }
+ },
+ {
+  "ename": "ob-async",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0k7kv71nnibp53lav774c61w9pzhq8qvch9rvpyyrwbyd67ninl8",
+  "fetcher": "github",
+  "repo": "astahlman/ob-async",
+  "unstable": {
+   "version": [
+    20190916,
+    1537
+   ],
+   "deps": [
+    "async",
+    "dash",
+    "org"
+   ],
+   "commit": "80a30b96a007d419ece12c976a81804ede340311",
+   "sha256": "0jhgzmqds73yc49hc4yarp1a25pci9qmsvnpcxd7kv5saha40hnn"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "async",
+    "dash",
+    "org"
+   ],
+   "commit": "5984d6172c179528adf9aeba414598604dfb5c9a",
+   "sha256": "10x4hxrjm4pr6vg42a961h9ilqzyd0l0fv7fsbq9clxi439f1nd6"
+  }
+ },
+ {
+  "ename": "ob-axiom",
+  "commit": "8b4c6b03c5ff78ce327dcf66b175e266bbc53dbf",
+  "sha256": "17qh4hsr3aw4d0p81px3qcbax6dv2zjhyn5n9pxqwcp2skm5vff5",
+  "fetcher": "git",
+  "url": "https://bitbucket.org/pdo/axiom-environment",
+  "unstable": {
+   "version": [
+    20190623,
+    2052
+   ],
+   "deps": [
+    "axiom-environment"
+   ],
+   "commit": "25932da0dc40c6877463cbf019b14ab05a6b0164",
+   "sha256": "1xbps0k4x982gh1a0pscpx4kayjjyykvm5pyj516wwkya7bac4a6"
+  }
+ },
+ {
+  "ename": "ob-blockdiag",
+  "commit": "261b77a3fd07644d1c250b16857de70cc1bbf478",
+  "sha256": "1lmawbgrlp6qd7p664jcl98y1xd2yqw9np6j52bh9i6s3cz6628g",
+  "fetcher": "github",
+  "repo": "corpix/ob-blockdiag.el",
+  "unstable": {
+   "version": [
+    20190720,
+    1858
+   ],
+   "commit": "272fafcf3bc37f9de41b11beb6a33e0dbf0a1909",
+   "sha256": "0gi7vnh5fchbjb7hp7yi08z2vqkmhjrg64ssir358qxqambxvrxb"
+  },
+  "stable": {
+   "version": [
+    20170728,
+    113
+   ],
+   "commit": "634fcf64a4ae735afe7001d865b03f5d71e23046",
+   "sha256": "0xr3bv4wxz13b1grfyl2qnrszzab3n9735za837nf4lxh527ksaj"
+  }
+ },
+ {
+  "ename": "ob-browser",
+  "commit": "c51529213c15d42a7a7b76771f07dd73c036a51f",
+  "sha256": "1yqbzmmazamgf8fi8ipq14ffm8h1pp5d2lkflbxjsagdq61hirxm",
+  "fetcher": "github",
+  "repo": "krisajenkins/ob-browser",
+  "unstable": {
+   "version": [
+    20170720,
+    1918
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "a347d9df1c87b7eb660be8723982c7ad2563631a",
+   "sha256": "0q2amf2kh2gkn65132q9nvn87pws5mmnr3wm1ajk23c01kcjf29c"
+  }
+ },
+ {
+  "ename": "ob-cfengine3",
+  "commit": "d068233c438e76cbcc6e9a97cbec9b2550a18ed6",
+  "sha256": "1pp3mykc5k629qlqixpl2900m1j604xpp6agrngwagsvf7qkhnvl",
+  "fetcher": "github",
+  "repo": "nickanderson/ob-cfengine3",
+  "unstable": {
+   "version": [
+    20191011,
+    1721
+   ],
+   "commit": "195ba4694a0ec18d3fb89342e8e0988b382a5b1a",
+   "sha256": "0a18fv141s35vh1mza2d6q5japrfjg5g6l7gp6qq4k4im3gmaf86"
+  }
+ },
+ {
+  "ename": "ob-clojurescript",
+  "commit": "0c9ccc0d2d034944cb9688d5e184fa5df95f6b31",
+  "sha256": "0h4qjz65k8m1ms7adrm5ypmjcjxx1nws1jmda88c4jjwjyz40jjf",
+  "fetcher": "gitlab",
+  "repo": "statonjr/ob-clojurescript",
+  "unstable": {
+   "version": [
+    20180406,
+    1828
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "17ee1558aa94c7b0246fd03f684884122806cfe7",
+   "sha256": "1an4m7mpr345xw4fanyf2vznxm1dxbv35987caq1wq9039mzfaxr"
+  }
+ },
+ {
+  "ename": "ob-coffee",
+  "commit": "e23d7f1d021b07053acb57e2668ece0eaed0f817",
+  "sha256": "16k8r9rqz4mayxl85pjdfsrz43k2hwcf8k7aff8wnic0ldzp6ivf",
+  "fetcher": "github",
+  "repo": "zweifisch/ob-coffee",
+  "unstable": {
+   "version": [
+    20170725,
+    1424
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "7f0b330273e8af7777de87a75fe52a89798e4548",
+   "sha256": "1w3fw3ka46d7vcsdq03l0wlviwsk52asfjiy9zfk4qabhpqwj9mz"
+  }
+ },
+ {
+  "ename": "ob-coffeescript",
+  "commit": "ba1a808c77653bac1948d6c44bd1db09301ffeff",
+  "sha256": "05q1wnabw52kd3fpcpinpxs9z6xmi4n1p19jbcz0bgjpnw05s27p",
+  "fetcher": "github",
+  "repo": "brantou/ob-coffeescript",
+  "unstable": {
+   "version": [
+    20180126,
+    719
+   ],
+   "commit": "5a5bb04aea9c2a6eab5b05f90f5c7cb6de7b4261",
+   "sha256": "0yy20w1127xmz0mx2swbr294vg0jh8g0ibj5bpdf55xwdnv6im2l"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "b70f3d822c707cb02333fcb739ba4874614cad2a",
+   "sha256": "0284v3km41427q7dr0wmvf3zhbsgzj0j2r9zny0g3n85qvyk0rgd"
+  }
+ },
+ {
+  "ename": "ob-crystal",
+  "commit": "b9a7d43199a83ab6f672aaa69ef4e158c868f180",
+  "sha256": "11mk2spwlddbrvcimhzw43b6d3gxzmi8br58bily1x4qkvl6zy4n",
+  "fetcher": "github",
+  "repo": "brantou/ob-crystal",
+  "unstable": {
+   "version": [
+    20180126,
+    718
+   ],
+   "commit": "d84c1adee4b269cdba06a97caedb8071561a09af",
+   "sha256": "1fny4fj4407lcp4k3379gbixk3wd171snw49p1kny2mvxrliz22h"
+  }
+ },
+ {
+  "ename": "ob-cypher",
+  "commit": "dc05c833f64e7974cf5a2ad60a053a04267251cb",
+  "sha256": "1ygmx0rjvxjl8hifkkwrkk9gpsmdsk6ndb6pg7y78p8hfp5jpyq3",
+  "fetcher": "github",
+  "repo": "zweifisch/ob-cypher",
+  "unstable": {
+   "version": [
+    20170725,
+    1420
+   ],
+   "deps": [
+    "cypher-mode",
+    "dash",
+    "dash-functional",
+    "s"
+   ],
+   "commit": "114bdf6db20ee0ade060bb5df379ddee48ff4f26",
+   "sha256": "142d91jvf7nr7q2sj61njy5hv6ljhsq2qkvkdbkfqj07rgpwfgn3"
+  }
+ },
+ {
+  "ename": "ob-dao",
+  "commit": "6284c73f1d0797fa2ed4d9a11d3198076cc5fff9",
+  "sha256": "0nj1qyac0lj5ljrqfqi9g2z0d7z5yihajkvjhlx5kg9zs3lgs5rs",
+  "fetcher": "github",
+  "repo": "xuchunyang/ob-dao",
+  "unstable": {
+   "version": [
+    20170816,
+    1558
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "fa92f62a63c684d689f57e790e5dd614c5bba270",
+   "sha256": "18i2qwxcn5p1hj32svl54n0dv2j551n3nmgb4h8gbvs39rl49qkq"
+  }
+ },
+ {
+  "ename": "ob-dart",
+  "commit": "bb3219b9623587365f56e9eeb4bd97f3dc449a11",
+  "sha256": "1lqi4pazkjcxvmm2bdpd9vcakmdclkamb69xwxdl44p68wsq2gn8",
+  "fetcher": "github",
+  "repo": "mzimmerm/ob-dart",
+  "unstable": {
+   "version": [
+    20170106,
+    1624
+   ],
+   "commit": "04d63b922a5469506560ca0c00678e57131e0269",
+   "sha256": "1r0r0dqsr44kcbj2w96rbx8alvkkfzc98ac35zb4ncy1bf71jhfb"
+  }
+ },
+ {
+  "ename": "ob-diagrams",
+  "commit": "fbb31def39fef108ecf7be105a901abfa6845f76",
+  "sha256": "1r1p9l61az1jb5m4k2dwnkp9j8xlcb588gq4mcg796vnbdscfcy2",
+  "fetcher": "github",
+  "repo": "bergey/org-babel-diagrams",
+  "unstable": {
+   "version": [
+    20160407,
+    1237
+   ],
+   "commit": "ed6649616325ca5b2d2109f74aded8bcb8aa5186",
+   "sha256": "0kx95lvkvg6h6lhs9knlp8rwi05y8y0i8w8vs7mwm378syls0qk0"
+  }
+ },
+ {
+  "ename": "ob-elixir",
+  "commit": "287e4758f6f1df0152d68577abd91478c4a3f4ab",
+  "sha256": "1l5b9hww2vmqnjlsd6lbjpz9walck82ngang1amfnk4xn6d0gdhi",
+  "fetcher": "github",
+  "repo": "zweifisch/ob-elixir",
+  "unstable": {
+   "version": [
+    20170725,
+    1419
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "8990a8178b2f7bd93504a9ab136622aab6e82e32",
+   "sha256": "19awvfbjsnd5la14ad8cfd20pdwwlf3d2wxmz7kz6x6rf48x38za"
+  }
+ },
+ {
+  "ename": "ob-elm",
+  "commit": "9109c178f49c300b8a5247b94ecdab265d32f4ce",
+  "sha256": "166yxninqiwv3vjn59ir23isnqhjjzvw8dcswnbwgcb4f4ixs12q",
+  "fetcher": "github",
+  "repo": "BonfaceKilz/ob-elm",
+  "unstable": {
+   "version": [
+    20200102,
+    2000
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "8b49ca0ecdff9df7c3f428bac22a96ed675ee5dd",
+   "sha256": "0prc0bddyppdzckfkjd6h2j5qg9plfzccg2gyn4jkmjhkx0gi09g"
+  }
+ },
+ {
+  "ename": "ob-elvish",
+  "commit": "90e979025f56061bc960f630945b09320a3dd28e",
+  "sha256": "1rpn3dabwgray1w55jib4ixr3l1afz9j7nyn0ha2r602hs02x1ya",
+  "fetcher": "github",
+  "repo": "zzamboni/ob-elvish",
+  "unstable": {
+   "version": [
+    20180427,
+    1900
+   ],
+   "commit": "369181ceae1190bf971c71aebf9fc6133bd98c39",
+   "sha256": "170bw9qryhzjzmyi84qc1jkzy1y7i8sjz6vmvyfc264ia4j51m9w"
+  }
+ },
+ {
+  "ename": "ob-fsharp",
+  "commit": "89bc8c5fe6db0573109e82b3d1350d33d6d8aff5",
+  "sha256": "1b9052lvr03vyizkjz3qsa8cw3pjml4kb3yy13jwh09jz5q87qbf",
+  "fetcher": "github",
+  "repo": "juergenhoetzel/ob-fsharp",
+  "unstable": {
+   "version": [
+    20170618,
+    1429
+   ],
+   "deps": [
+    "fsharp-mode"
+   ],
+   "commit": "0b2fdd9bb4f38af8b5cf4914627af52f5b43d9f7",
+   "sha256": "1z1m2dqnvyyv9ff289p8x1hajnz9n0mmfkrkyl1zvipaqd9mgljw"
+  }
+ },
+ {
+  "ename": "ob-go",
+  "commit": "3afb687d6d3d1e52336ca9a7343278a9f37c3d54",
+  "sha256": "09d8jrzijf8gr08615rdmf366zgip43dxvyihy0yzhk7j0p3iahj",
+  "fetcher": "github",
+  "repo": "pope/ob-go",
+  "unstable": {
+   "version": [
+    20190201,
+    2040
+   ],
+   "commit": "2067ed55f4c1d33a43cb3f6948609d240a8915f5",
+   "sha256": "069w9dymiv97cvlpzabf193nyw174r38lz5j11x23x956ladvpbw"
+  }
+ },
+ {
+  "ename": "ob-graphql",
+  "commit": "3d4572f599ac5794d8a5c310f1d1e138a11a45a8",
+  "sha256": "1rgwfyq5f602b60hza9xnszxdjqms90gkvrw9hjmivyp2swwy5vy",
+  "fetcher": "github",
+  "repo": "jdormit/ob-graphql",
+  "unstable": {
+   "version": [
+    20200108,
+    2228
+   ],
+   "deps": [
+    "graphql-mode",
+    "request"
+   ],
+   "commit": "ced37c6761d69e1ff206ff0ebd633f0e4fd2ac54",
+   "sha256": "0575w89sr97dv4ccygbhj4k7rpk2934q9f0p3q0hxf8a5wikf493"
+  }
+ },
+ {
+  "ename": "ob-html-chrome",
+  "commit": "ac4380b5ea63c5296e517fccafa4d6a69dc73d0d",
+  "sha256": "1z3bi5i9n6dqvarl32syb6y36px3pf0pppqxn02rrx1rwvg81iql",
+  "fetcher": "github",
+  "repo": "nikclayton/ob-html-chrome",
+  "unstable": {
+   "version": [
+    20181219,
+    1042
+   ],
+   "deps": [
+    "f",
+    "s"
+   ],
+   "commit": "7af6e4a24ed0aaf67751bdf752c7ca0ba02bb8d4",
+   "sha256": "0h33y11921ajw60b4hqpg0nvdvx3w3cia90wf53c5zg2bckcrfjh"
+  }
+ },
+ {
+  "ename": "ob-http",
+  "commit": "950b02f76a04f453992b8720032e8c4cec9a039a",
+  "sha256": "0b7ghz9pqbyn3b52cpmnwa2wnd4svj23p6gc48ybwzwiid42wiss",
+  "fetcher": "github",
+  "repo": "zweifisch/ob-http",
+  "unstable": {
+   "version": [
+    20180707,
+    1448
+   ],
+   "deps": [
+    "cl-lib",
+    "s"
+   ],
+   "commit": "b1428ea2a63bcb510e7382a1bf5fe82b19c104a7",
+   "sha256": "11fx9c94xxhl09nj9z5b5v6sm0xwkqawgjnnm7bg56vvj495n6h7"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "s"
+   ],
+   "commit": "20393dd8130d21a3f06d8514da14c5ffdd88ae44",
+   "sha256": "0xa7rgsb0d1d96h5bb0n0sy1hgmd2fg6r6g2aqp1c29ld4hpi7r7"
+  }
+ },
+ {
+  "ename": "ob-hy",
+  "commit": "12a7a7dba169010a3a047f961010236a203c16c2",
+  "sha256": "18a8fpda0f28wxmjprhd9dmz7bpk1j3iayl20lqffrcal6m4f1h7",
+  "fetcher": "github",
+  "repo": "brantou/ob-hy",
+  "unstable": {
+   "version": [
+    20180702,
+    540
+   ],
+   "commit": "a42ecaf440adc03e279afe43ee5ef6093ddd542a",
+   "sha256": "0kv92r6j0dcqcg1s0g4iq1xvanscg6crwniysbrq6ifvmc4lvfdj"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "commit": "a42ecaf440adc03e279afe43ee5ef6093ddd542a",
+   "sha256": "0kv92r6j0dcqcg1s0g4iq1xvanscg6crwniysbrq6ifvmc4lvfdj"
+  }
+ },
+ {
+  "ename": "ob-ipython",
+  "commit": "557c36e86844c211f2d2ee097ce51ee9db92ea8b",
+  "sha256": "06llf365k8m81ljmlajqvxlh84qg6h0flp3m6gb0zx71xilvw186",
+  "fetcher": "github",
+  "repo": "gregsexton/ob-ipython",
+  "unstable": {
+   "version": [
+    20180224,
+    953
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "f",
+    "s"
+   ],
+   "commit": "7147455230841744fb5b95dcbe03320313a77124",
+   "sha256": "1a10fc2jk37ni5sjjvf87s5nyaz2a6h2mlj5dxh4dhv5sd3bb85p"
+  }
+ },
+ {
+  "ename": "ob-kotlin",
+  "commit": "7aa74d349eb55aafddfc4327b6160ae2da80d689",
+  "sha256": "19g4s9dnipg9aa360mp0affmnslm6h7byg595rnaz6rz25a3qdpx",
+  "fetcher": "github",
+  "repo": "zweifisch/ob-kotlin",
+  "unstable": {
+   "version": [
+    20180823,
+    1321
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "96e420cbd2e9ea8a77043e5dcaebdfc6da17492a",
+   "sha256": "0ganip7077rsi681kdsrmvpjhinhgsrla34mll0daiqid7flnk4g"
+  }
+ },
+ {
+  "ename": "ob-lfe",
+  "commit": "d595d3b93e6b25ece1cdffc9d1502e8a868eb538",
+  "sha256": "11cpaxk9wb27b9zhyns75dqpds4gh3cbjcvia4p2bnvmbm8lz4y8",
+  "fetcher": "github",
+  "repo": "zweifisch/ob-lfe",
+  "unstable": {
+   "version": [
+    20170725,
+    1420
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "f7780f58e650b4d29dfd834c662b1d354b620a8e",
+   "sha256": "1ricvb2wxsmsd4jr0301pk30mswx41msy07fjgwhsq8dimxzmngp"
+  }
+ },
+ {
+  "ename": "ob-mermaid",
+  "commit": "4df483806a4caaeb99fdac42f83bfe648d2e4165",
+  "sha256": "0fp57m80ksnb6zs1gndwsqhrphkv9lfysq0h7h8g3parizh2idzs",
+  "fetcher": "github",
+  "repo": "arnm/ob-mermaid",
+  "unstable": {
+   "version": [
+    20200320,
+    1504
+   ],
+   "commit": "cca09b64eff689d8bb15a77de9d4c7fe9845a1f9",
+   "sha256": "1wwmf14df2rnxlfs8bwb9p4q1a1plschbq2g9vqflphj6kv213m4"
+  }
+ },
+ {
+  "ename": "ob-ml-marklogic",
+  "commit": "edce412552d4798450493e0a3dbe768f38f77cc7",
+  "sha256": "1y5cgba7gzlmhdrs0k7clgrxixdl4najj5271x1m023jch7bz7xl",
+  "fetcher": "github",
+  "repo": "ndw/ob-ml-marklogic",
+  "unstable": {
+   "version": [
+    20190312,
+    1314
+   ],
+   "commit": "d5660ad14f29e17cd26ae92eeb585b24030e9570",
+   "sha256": "1aqllsn965km3796q92w3a3z92hkpm5i0l6p4fm3va9xq7j79cyc"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "d5660ad14f29e17cd26ae92eeb585b24030e9570",
+   "sha256": "1aqllsn965km3796q92w3a3z92hkpm5i0l6p4fm3va9xq7j79cyc"
+  }
+ },
+ {
+  "ename": "ob-mongo",
+  "commit": "e020ea3ef89a3787d498c2f698c82c5073c9ee32",
+  "sha256": "1cgmqsl5dzi8xy3sh5xsfkczl555fpd4q6kgsh9xkn74sz227907",
+  "fetcher": "github",
+  "repo": "krisajenkins/ob-mongo",
+  "unstable": {
+   "version": [
+    20170720,
+    1919
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "371bf19c7c10eab2f86424f8db8ab685997eb5aa",
+   "sha256": "02k4gvh1nqhn0h36h77vvms7xwwak8rdddibbidsrwwspbr4qr1s"
+  }
+ },
+ {
+  "ename": "ob-nim",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "0j8mk12d29jyhhj4dlc0jykqmqy8g0yrbv7f2sqig83wj531bwza",
+  "fetcher": "github",
+  "repo": "Lompik/ob-nim",
+  "unstable": {
+   "version": [
+    20170809,
+    1830
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "bf1642cb93f0a898804dc13fd9408d2964403bd2",
+   "sha256": "1xgi863wn1pvlsajmldd706k1dk7d7pa6b9nbgsh34kzchvhd75s"
+  }
+ },
+ {
+  "ename": "ob-prolog",
+  "commit": "fb87868cd74325f0a4a38c5542c264501000951d",
+  "sha256": "0ki8yd20yk5xwn0zpk06zjxzgrsf8paydif9n98svb9s2l9wrh1s",
+  "fetcher": "github",
+  "repo": "ljos/ob-prolog",
+  "unstable": {
+   "version": [
+    20190410,
+    2130
+   ],
+   "commit": "331899cfe345c934026c70b78352d320f7d8e239",
+   "sha256": "1k34cl2whc32ysd7anvz8ii66ljfrmkvx3cgb6i42jcx74kavlfr"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    2
+   ],
+   "commit": "efa86bb70fd1907806f3e43705aff54d35582442",
+   "sha256": "0g25nn2h7djgc9rp59spx9096jdypsizd0vfzwj96cpq90lkysjx"
+  }
+ },
+ {
+  "ename": "ob-restclient",
+  "commit": "28c1d3af3f8b2f598b80b03b64de5d15cbb3f13d",
+  "sha256": "0nv2wsqmpschym6ch8fr4a79hlnpz31jc8y2flsygaqj0annjkfk",
+  "fetcher": "github",
+  "repo": "alf/ob-restclient.el",
+  "unstable": {
+   "version": [
+    20200316,
+    759
+   ],
+   "deps": [
+    "restclient"
+   ],
+   "commit": "f7449b2068498fe9d8ab9589e0a638148861533f",
+   "sha256": "0s3931w9ab3yfml2pmq71rw21yf6hpg7m3vihxyy3vs6zli1cvmq"
+  }
+ },
+ {
+  "ename": "ob-rust",
+  "commit": "843affc2fd481647c5377bf9a96b636b39718034",
+  "sha256": "1syzwh399wcwqhg1f3fvl12978dr574wji7cknqvll3hyh0zwd65",
+  "fetcher": "github",
+  "repo": "micanzhang/ob-rust",
+  "unstable": {
+   "version": [
+    20180911,
+    1535
+   ],
+   "commit": "6a82587598cd097e9642be916243c31f1231b24a",
+   "sha256": "041mvlwnkxa93fjbln0yc6pgykh6k7fwg1nigr6njgaxlfnssmlm"
+  }
+ },
+ {
+  "ename": "ob-sagemath",
+  "commit": "dc074af316a09906a26ad957a56e3dc272cd813b",
+  "sha256": "02ispac1y4g7p7iyscf5p8lvp92ncrn6281jm9igyiny1w6hivy7",
+  "fetcher": "github",
+  "repo": "stakemori/ob-sagemath",
+  "unstable": {
+   "version": [
+    20191106,
+    828
+   ],
+   "deps": [
+    "s",
+    "sage-shell-mode"
+   ],
+   "commit": "79645bce0c25a650bae61e550434bed836995dce",
+   "sha256": "134d3pz38g2ki4war1jxp5440yq5smfkdjnknz5r29p49sch0zvx"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "s",
+    "sage-shell-mode"
+   ],
+   "commit": "450d510a5eb1fd644d0037e9f02271ca33639fb0",
+   "sha256": "00i7jszlfh67xzvqnp137aaia68rkk4ri5v0fs32ym10pcj8l4dp"
+  }
+ },
+ {
+  "ename": "ob-sml",
+  "commit": "d1b0fbe1198fa624771c2f61249db502de57942a",
+  "sha256": "04qvzhwjr8ipvq3znnhn0wbl4pbb1rwxi90iidavzk3phbkpaskn",
+  "fetcher": "github",
+  "repo": "swannodette/ob-sml",
+  "unstable": {
+   "version": [
+    20130829,
+    1843
+   ],
+   "deps": [
+    "sml-mode"
+   ],
+   "commit": "958165c92b6cff6cada5c85c8ae5887806b8451b",
+   "sha256": "0gymna48igcixrapjmg842pnlsshhw8zplxwyyn0x2yrma9fjyyg"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "sml-mode"
+   ],
+   "commit": "5dc966acbe65e9e158bfa90018035bf52d4dafd4",
+   "sha256": "1xx6hyq3gk4bavcx6i9bhipbn4mn5rv2ga9lryq09qgq2l9znclk"
+  }
+ },
+ {
+  "ename": "ob-sql-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "143agagkmwqwdqc0mbdsqp6v02y12q437v4x6dlh81yihif56rdk",
+  "fetcher": "github",
+  "repo": "nikclayton/ob-sql-mode",
+  "unstable": {
+   "version": [
+    20190421,
+    1539
+   ],
+   "commit": "b31a016585324ad91f1742ff6205bcb76f3ece6e",
+   "sha256": "1k2cfxaq38wv8s2x1c52v0bw55c12n399614l0dx1aqy2wh1afgi"
+  }
+ },
+ {
+  "ename": "ob-svgbob",
+  "commit": "77b7095d93730bfa193245df358fa50bef4faea6",
+  "sha256": "0746f70yswgqcx8awc7lfkh6r5982frlwirdij2pjb9ivw3a82h9",
+  "fetcher": "github",
+  "repo": "mgxm/ob-svgbob",
+  "unstable": {
+   "version": [
+    20190911,
+    300
+   ],
+   "commit": "5747f96fb4fdb8711546b3313df9412177eb3c1a",
+   "sha256": "1h60mzxp1wzd1kjkgligi04nb06mpkhij8imkva188inr0hzqlvm"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "commit": "9a930b1ed93e5ce1818029b2ec9e7662c098dbf4",
+   "sha256": "18c35xpllwv1zflinkh3ki00vclp4nk52sanfl2vppq6a6hyda8a"
+  }
+ },
+ {
+  "ename": "ob-swift",
+  "commit": "b401383966398d3223032c59baa920ce594e5fef",
+  "sha256": "19mcjfmijbajldm3jz8ij1x2p7d164mbq2ln6yb6iihxmdqnn2q4",
+  "fetcher": "github",
+  "repo": "zweifisch/ob-swift",
+  "unstable": {
+   "version": [
+    20170921,
+    1325
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "ed478ddbbe41ce5373efde06b4dd0c3663c9055f",
+   "sha256": "1vwg10d33mwb32bpdbpghfihy3ryiqbc4yydpb5hfv3v5k83vs0x"
+  }
+ },
+ {
+  "ename": "ob-tmux",
+  "commit": "a3f47fbfe745972e690e8028f893bb38ba30978d",
+  "sha256": "12c0m2xxd75lbc98h7cwprmdn823mh2ii59pxr6fgnq7araqkz20",
+  "fetcher": "github",
+  "repo": "ahendriksen/ob-tmux",
+  "unstable": {
+   "version": [
+    20190708,
+    1202
+   ],
+   "deps": [
+    "s",
+    "seq"
+   ],
+   "commit": "3687ed7b874bdfe14617f5d14492887cb0836a85",
+   "sha256": "057gnjgn6g7qpf8hpidp302s2bv5lkijx6b35knvg266czda6fra"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    5
+   ],
+   "deps": [
+    "s",
+    "seq"
+   ],
+   "commit": "8886f31291e979b41215f3eb97670732efffea34",
+   "sha256": "0j77n1lawkx94hyv89xsvmrbqhd8x19ycrvxrwhc0mzlxh7rxjcy"
+  }
+ },
+ {
+  "ename": "ob-translate",
+  "commit": "4d89e4006afc51bd44e23f87a1d1ef1140489ab3",
+  "sha256": "1hi0rxbyxvk9sbk2fy3kqw7l4lgri921vya1mn4i1q2i1979r2gz",
+  "fetcher": "github",
+  "repo": "krisajenkins/ob-translate",
+  "unstable": {
+   "version": [
+    20170720,
+    1919
+   ],
+   "deps": [
+    "google-translate",
+    "org"
+   ],
+   "commit": "9d9054a51bafd5a29a8135964069b4fa3a80b169",
+   "sha256": "143dq3wp3h1zzk8ihj8yjw9ydqnf48q7y8yxxa0ly7f2v1li84bc"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "deps": [
+    "google-translate",
+    "org"
+   ],
+   "commit": "6b39cc1a94a1071107a4391684b1bffb5b9826f3",
+   "sha256": "10hm20dzhkxk61ass3bd5gdn1bs2l60y3zjnpkxinzn7m6aaniia"
+  }
+ },
+ {
+  "ename": "ob-typescript",
+  "commit": "11733cd33add89b541dcc1f90a732833861b10d9",
+  "sha256": "1wpy928ndvc076jzi14f6k5fsw8had0pz7f1yjdqql4icszhqa0p",
+  "fetcher": "github",
+  "repo": "lurdan/ob-typescript",
+  "unstable": {
+   "version": [
+    20190910,
+    946
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "0b2766b9d136cd6d81f4c15f1ad4b28542f484b9",
+   "sha256": "0crz6k41bva53x3qhvvzzdlml4v18f43fja8nkrlgwpn103d0x9h"
+  }
+ },
+ {
+  "ename": "ob-uart",
+  "commit": "5334f1a48b8ea6b7a660db27910769093c76113d",
+  "sha256": "1dkbyk8da0zw784dgwi8njnz304s54341dyfzvlb0lhcn41dmkz7",
+  "fetcher": "github",
+  "repo": "andrmuel/ob-uart",
+  "unstable": {
+   "version": [
+    20170521,
+    858
+   ],
+   "commit": "90daeac90a9e75c20cdcf71234c67b812110c50e",
+   "sha256": "1syxxq411izmyfrhlywasax7n5c3yjy487mvfdjzjg8csmmk0m9v"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "90daeac90a9e75c20cdcf71234c67b812110c50e",
+   "sha256": "1syxxq411izmyfrhlywasax7n5c3yjy487mvfdjzjg8csmmk0m9v"
+  }
+ },
+ {
+  "ename": "oberon",
+  "commit": "5f2a50f62475639af011c99c6cc38928b74b3b0a",
+  "sha256": "1wna7ld670r6ljdg5yx0ga0grbq1ma8q92gkari0d5czr7s9lggv",
+  "fetcher": "github",
+  "repo": "emacsorphanage/oberon",
+  "unstable": {
+   "version": [
+    20120715,
+    909
+   ],
+   "commit": "fb57d18ce13835a8a69b6bafecdd9193ca9a59a3",
+   "sha256": "16462cgq91jg7i97h440zss5vw2qkxgdy7gm148ns4djr2fchnf6"
+  }
+ },
+ {
+  "ename": "obfusurl",
+  "commit": "201fe11682cb06b26775a52c81b6a1258b74b4d0",
+  "sha256": "0xx2zsjbkd17iy7xzqc66f9xgc97f9js3nz656yhmmxakjk2krra",
+  "fetcher": "github",
+  "repo": "davep/obfusurl.el",
+  "unstable": {
+   "version": [
+    20170809,
+    1524
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "7a5a41905000ce2ec1fd72509a5567e5fd9f47e5",
+   "sha256": "0jbrxlpx0cxg8jzqrssk3y3ab7v62ymi6ys24542a8vpk522vqxk"
+  },
+  "stable": {
+   "version": [
+    2,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "7a5a41905000ce2ec1fd72509a5567e5fd9f47e5",
+   "sha256": "0jbrxlpx0cxg8jzqrssk3y3ab7v62ymi6ys24542a8vpk522vqxk"
+  }
+ },
+ {
+  "ename": "objc-font-lock",
+  "commit": "f6f93d328e137d2ca069328932b60c3bf60b0a4e",
+  "sha256": "0njslpgdcph3p3gamrbd6pc04szks07yv4ij3p1l7p5dc2p06rs6",
+  "fetcher": "github",
+  "repo": "Lindydancer/objc-font-lock",
+  "unstable": {
+   "version": [
+    20141021,
+    1822
+   ],
+   "commit": "34b457d577f97ca94b8792d025f9a909c7610612",
+   "sha256": "138c1nm579vr37dqprqsakfkhs2awm3klzyyd6bv9rhkrysrpbqk"
+  }
+ },
+ {
+  "ename": "objed",
+  "commit": "4abc6d927a2bf238d23256adcc9f09a751c90374",
+  "sha256": "0iqvwa664fzklajqgnss7igjh7jr9v9i8dp9acm42g8ingp9zf7b",
+  "fetcher": "github",
+  "repo": "clemera/objed",
+  "unstable": {
+   "version": [
+    20200403,
+    1500
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "e89d8dae3b2d4331a4455d2a7b203500537d184d",
+   "sha256": "1xjcbfqxpda73l8imw1pj9my71qqacri269cv7wnzsfrphqh526x"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "4798b5b9fd531562ac17d6148e86cd8cdc1bc985",
+   "sha256": "16ans9pmzfjqdz0gi92yaah0vv6g4vmjbq3g1jqhcykin6ba8lpg"
+  }
+ },
+ {
+  "ename": "obsidian-theme",
+  "commit": "e90227252eb69d3eac81f5a6bd5e3a582d33f335",
+  "sha256": "17ckshimdma6fqiis4kxczxkbrsfpm2a0b41m5f3qz3qlhcw2xgr",
+  "fetcher": "github",
+  "repo": "mswift42/obsidian-theme",
+  "unstable": {
+   "version": [
+    20170719,
+    948
+   ],
+   "commit": "f45efb2ebe9942466c1db6abbe2d0e6847b785ea",
+   "sha256": "1d36mdq8b1q1x84a2nb93bwnzlpdldiafh7q7qfjjm9dsgbij73b"
+  }
+ },
+ {
+  "ename": "occidental-theme",
+  "commit": "736fd0b7865cc800800fa6467019a365ddf1c412",
+  "sha256": "1ra5p8k96wvb04v69xm87jl4jlgi57v4jw2xxzkwbwxbydncnv0b",
+  "fetcher": "github",
+  "repo": "olcai/occidental-theme",
+  "unstable": {
+   "version": [
+    20130312,
+    1958
+   ],
+   "commit": "fd2db7256d4f78c43d99c3cddb1c39106d479816",
+   "sha256": "0pnliw02crqw8hbg088klz54z6s1ih8q2lcn9mq5f12xi752hxm8"
+  }
+ },
+ {
+  "ename": "occur-context-resize",
+  "commit": "a2425d82b365784b17ab56af5f77c6095664c784",
+  "sha256": "0sp5v4rwqgqdj26gdkrmjvkmbp4g6jq4lrn2c3zm8s2gq0s3l6ri",
+  "fetcher": "github",
+  "repo": "dgtized/occur-context-resize.el",
+  "unstable": {
+   "version": [
+    20170904,
+    2309
+   ],
+   "commit": "cdee5a631ceed9337579d4090e0acf8140747f80",
+   "sha256": "0h7ypw45h5rcbwx4c4mn2ps9hp84dpjp3iay2nc9zaavv05n7ysa"
+  }
+ },
+ {
+  "ename": "occur-x",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "04nydxp4syd0chfnfrz8v1vkx2qasfh86b98qv8719cily1jw76p",
+  "fetcher": "github",
+  "repo": "juan-leon/occur-x",
+  "unstable": {
+   "version": [
+    20130610,
+    1343
+   ],
+   "commit": "352f5fab207d8a1d3dd048073ff127a83e97c82b",
+   "sha256": "1zj0xhvl5qx42injv0av4lyzd3jsjls1m368dqd2qnswhfw8wfn6"
+  }
+ },
+ {
+  "ename": "oceanic-theme",
+  "commit": "b9d85588df4e2057ef1c822ff177572054ed979b",
+  "sha256": "1i69dy9hfqwfyiykvnqzkqim0lv1p5z5fjsdk84068si4b029gzv",
+  "fetcher": "github",
+  "repo": "terry3/oceanic-theme",
+  "unstable": {
+   "version": [
+    20161015,
+    819
+   ],
+   "commit": "a92ee9b470843c923e6cdcafdd65106ff994d04d",
+   "sha256": "1bj4l88546gmlfmwyg1zsqfz9g2l87hsa9jlrf8s4c907di736ir"
+  }
+ },
+ {
+  "ename": "ocodo-svg-modelines",
+  "commit": "5b9651865f4f8009c9b31fa1e5561de97a5ad8de",
+  "sha256": "0fa88ns70wsr9i9gf4zx3fvmn1a32mrjsda105n0cx6c965kfmay",
+  "fetcher": "github",
+  "repo": "ocodo/ocodo-svg-modelines",
+  "unstable": {
+   "version": [
+    20150516,
+    1419
+   ],
+   "deps": [
+    "svg-mode-line-themes"
+   ],
+   "commit": "c7b0789a177219f117c4de5659ecfa8622958c40",
+   "sha256": "155gmls6cz3zf4lcj89kzb96y7k0glx0f659jg5z0skgxq79hf48"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    4
+   ],
+   "deps": [
+    "svg-mode-line-themes"
+   ],
+   "commit": "a6c5b9a7536c7a8fa3bd9d9dafdebc8d99903018",
+   "sha256": "05ay599nc6jdw2fjss4izz1ynv2wc4svff932n8j9hvrhygipb2w"
+  }
+ },
+ {
+  "ename": "ocp-indent",
+  "commit": "e1af061328b15360ed25a232cc6b8fbce4a7b098",
+  "sha256": "0wc4z9dsnnyr24n3vg1npvc3rm53av8bpbvrl8kldxxdiwgnbkjw",
+  "fetcher": "github",
+  "repo": "OCamlPro/ocp-indent",
+  "unstable": {
+   "version": [
+    20190726,
+    1452
+   ],
+   "commit": "9e26c0a2699b7076cebc04ece59fb354eb84c11c",
+   "sha256": "1dvcl108ir9nqkk4mjm9xhhj4p9dx9bmg8bnms54fizs1x3x8ar3"
+  },
+  "stable": {
+   "version": [
+    1,
+    8,
+    2
+   ],
+   "commit": "9e26c0a2699b7076cebc04ece59fb354eb84c11c",
+   "sha256": "1dvcl108ir9nqkk4mjm9xhhj4p9dx9bmg8bnms54fizs1x3x8ar3"
+  }
+ },
+ {
+  "ename": "octicons",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "0p66i8i2ksqld3bd0iq7f7ssskj1hp42s170q74crh3ilapjnkpq",
+  "fetcher": "github",
+  "repo": "emacsorphanage/octicons",
+  "unstable": {
+   "version": [
+    20151101,
+    340
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a61e561966ffd8faa3b48ce5b3a4eec10c59708b",
+   "sha256": "0w98ii2ny57al94a4h927xx1hn99df5if543v2gh36zqdlwc7xci"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "77bb1a49045f89b3eaf9bcffeefbb9e1abaee556",
+   "sha256": "19fg6r7aiirfsbp2h1a824476sn1ln4nz8kvpdzkzvyf1hzx68gw"
+  }
+ },
+ {
+  "ename": "octo-mode",
+  "commit": "899ec190515d33f706e5279c8e3628514f733a12",
+  "sha256": "1xvpykdrkmxlk302kbqycasrq89f72xvhqlm14qrcd2lqnwhbi07",
+  "fetcher": "github",
+  "repo": "cryon/octo-mode",
+  "unstable": {
+   "version": [
+    20161008,
+    1229
+   ],
+   "commit": "bd4db7e5e3275b24c74e6a23c11d04f54e9feca5",
+   "sha256": "1blr664h8bq8bs1wr82nhhb9y7ggrlxp6x203i5bv542zm4a5rba"
+  }
+ },
+ {
+  "ename": "octopress",
+  "commit": "7205d3d43797755077f19f57f531b4b39e77bae3",
+  "sha256": "0zsir6chjvn5i1irmf5aj6mmb401c553r5wykq796sz7jnjhrjg0",
+  "fetcher": "github",
+  "repo": "aaronbieber/octopress.el",
+  "unstable": {
+   "version": [
+    20190123,
+    107
+   ],
+   "commit": "f2c92d5420f14fc9167c7de1873836510e652de2",
+   "sha256": "0s5sv685h350zky46fr95bs1w814g8ksjndxwmgarldklxilsyji"
+  }
+ },
+ {
+  "ename": "oer-reveal",
+  "commit": "7c4e4d7c68548415413d4ad972b2c804e7d867f8",
+  "sha256": "04rwyhq500c8wcgfhg2xmb246az9sc6s2y45ichxhvvhvqgxjib3",
+  "fetcher": "gitlab",
+  "repo": "oer/oer-reveal",
+  "unstable": {
+   "version": [
+    20200503,
+    853
+   ],
+   "deps": [
+    "org-re-reveal"
+   ],
+   "commit": "b5ac03800294272d2deba115bcd08c9176580691",
+   "sha256": "08rimp8652jy54p7gnhk774gv023wn1bh73zkarxrwqrlvjkh5m5"
+  },
+  "stable": {
+   "version": [
+    2,
+    12,
+    0
+   ],
+   "deps": [
+    "org-re-reveal"
+   ],
+   "commit": "b5ac03800294272d2deba115bcd08c9176580691",
+   "sha256": "08rimp8652jy54p7gnhk774gv023wn1bh73zkarxrwqrlvjkh5m5"
+  }
+ },
+ {
+  "ename": "offlineimap",
+  "commit": "671afe0ff3889ae8c4b2d7b8617a3a25c16f3f0f",
+  "sha256": "0nza7lrz7cn06njcblwh9hy3050j8ja4awbxx7jzv6nazjg7201b",
+  "fetcher": "github",
+  "repo": "jd/offlineimap.el",
+  "unstable": {
+   "version": [
+    20150916,
+    1158
+   ],
+   "commit": "cc3e067e6237a1eb7b21c575a41683b1febb47f1",
+   "sha256": "1bjrgj8klg7ly63vx90jpaih9virn02bhqi16p6z0mw36q1q7ysq"
+  },
+  "stable": {
+   "version": [
+    1
+   ],
+   "commit": "646482203aacdf847d57d0a96263fddcfc33fb61",
+   "sha256": "0az4llfgva4wvpljyc5s2m7ggfnj06ssp32x8bncr5fzksha3r7b"
+  }
+ },
+ {
+  "ename": "old-norse-input",
+  "commit": "84780a6ebd1b2294b86ae8c6df5bd6521cf4e85a",
+  "sha256": "1g00h6ykf61ckr6f3r17j72w3h04p5q65aa3rhr5llk3jk1wv331",
+  "fetcher": "github",
+  "repo": "david-christiansen/emacs-old-norse-input",
+  "unstable": {
+   "version": [
+    20170816,
+    1842
+   ],
+   "commit": "c2e21ee72c3768e9152aff6baf12a19cde1d0c53",
+   "sha256": "0zybr1v91884p4ncrpr962pr02qsns6hf7kc4c5gyad8sg4pbvxh"
+  }
+ },
+ {
+  "ename": "oldlace-theme",
+  "commit": "b6b11187b012744771380dfabab607cf7e073c45",
+  "sha256": "1pxiqqh5x4wsayqgwplzvsbalbj44zvby7x0pijdvwcnsh74znj8",
+  "fetcher": "github",
+  "repo": "mswift42/oldlace-theme",
+  "unstable": {
+   "version": [
+    20150705,
+    1300
+   ],
+   "commit": "5c6f437203b0783b36a7aff4a578de4a0c8c4ee6",
+   "sha256": "0y9fxrsxp1158fyjp4f69r7g2s7b6nbxlsmsb8clwqc8pmmg2z82"
+  }
+ },
+ {
+  "ename": "olivetti",
+  "commit": "10292536096e698f37e6ad81a4d5b6204beeb7cb",
+  "sha256": "0fkvw2y8r4ww2ar9505xls44j0rcrxc884p5srf1q47011v69mhd",
+  "fetcher": "github",
+  "repo": "rnkn/olivetti",
+  "unstable": {
+   "version": [
+    20200430,
+    519
+   ],
+   "commit": "b23a05f442e3b1230f014e8054ebe3e57d22fc42",
+   "sha256": "18ln5i3pjzgakpyqdwd4ii8n49l9kxbdp092bsx9s92miknkl2mp"
+  },
+  "stable": {
+   "version": [
+    1,
+    9,
+    5
+   ],
+   "commit": "b23a05f442e3b1230f014e8054ebe3e57d22fc42",
+   "sha256": "18ln5i3pjzgakpyqdwd4ii8n49l9kxbdp092bsx9s92miknkl2mp"
+  }
+ },
+ {
+  "ename": "om-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0bnlnxmzch9j39l8sf85npi89xlnkcnkmy4fihmwhrm86mnmayrb",
+  "fetcher": "github",
+  "repo": "danielsz/om-mode",
+  "unstable": {
+   "version": [
+    20140915,
+    2110
+   ],
+   "commit": "cdc0c2912321f8438b0f3449ba8aca50ec150bba",
+   "sha256": "03szb2i2xk3nq578cz1drsddsbld03ryvykdfzmfvwcmlpaknvzb"
+  }
+ },
+ {
+  "ename": "omni-kill",
+  "commit": "c24df34d2fa5d908223379e909148423ba327ae2",
+  "sha256": "03kydl16rd9mnc1rnan2byqa6f70891fhcj16wkavl2r68rfj75k",
+  "fetcher": "github",
+  "repo": "AdrieanKhisbe/omni-kill.el",
+  "unstable": {
+   "version": [
+    20171016,
+    2140
+   ],
+   "commit": "904549c8fd6ac3cf22b5d7111ca8944e179cffea",
+   "sha256": "1mlnh5pdqdv1qb8jvi0wvkgbpy74zq807gmp04bp6cpxdns9j63f"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    0
+   ],
+   "commit": "904549c8fd6ac3cf22b5d7111ca8944e179cffea",
+   "sha256": "1mlnh5pdqdv1qb8jvi0wvkgbpy74zq807gmp04bp6cpxdns9j63f"
+  }
+ },
+ {
+  "ename": "omni-log",
+  "commit": "47bb19bb7b4713c3fd82c1035a2fe66588c069e3",
+  "sha256": "0c29243zq8r89ax4rxlmb8imag12icnldcb0q0xsnhjccw8lyw1r",
+  "fetcher": "github",
+  "repo": "AdrieanKhisbe/omni-log.el",
+  "unstable": {
+   "version": [
+    20200304,
+    2229
+   ],
+   "deps": [
+    "dash",
+    "ht",
+    "s"
+   ],
+   "commit": "0a240660ccdd0b6588b4e3c322743b5ab1161338",
+   "sha256": "0xbrwj7zsqx91p28l3dknlhr3y5cj6lah6h5x1s9l9kmfz850dcp"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "deps": [
+    "dash",
+    "ht",
+    "s"
+   ],
+   "commit": "0a240660ccdd0b6588b4e3c322743b5ab1161338",
+   "sha256": "0xbrwj7zsqx91p28l3dknlhr3y5cj6lah6h5x1s9l9kmfz850dcp"
+  }
+ },
+ {
+  "ename": "omni-quotes",
+  "commit": "3402524f79381c99fdeb81a6a5a9241c918811be",
+  "sha256": "0dqki0ibabs9cpcjvnh8lc2114x46i1xmnyjc6qqblfxa3ggdygs",
+  "fetcher": "github",
+  "repo": "AdrieanKhisbe/omni-quotes.el",
+  "unstable": {
+   "version": [
+    20200304,
+    2341
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "ht",
+    "omni-log",
+    "s"
+   ],
+   "commit": "cfc7b7f01628a5d57384820d1096de4541e67cdf",
+   "sha256": "1bv45gdyzycapi9q69h3339308qxwgjzj5rgr3f927vl4xm18kfb"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    1
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "ht",
+    "omni-log",
+    "s"
+   ],
+   "commit": "cfc7b7f01628a5d57384820d1096de4541e67cdf",
+   "sha256": "1bv45gdyzycapi9q69h3339308qxwgjzj5rgr3f927vl4xm18kfb"
+  }
+ },
+ {
+  "ename": "omni-scratch",
+  "commit": "6ba3e128a7fe4476d82266506b18ba9984c37944",
+  "sha256": "190dkqcw8xywzrq8a99w4rqi0y1h2aj23s84g2ln1sf7jaf6d6n9",
+  "fetcher": "github",
+  "repo": "AdrieanKhisbe/omni-scratch.el",
+  "unstable": {
+   "version": [
+    20171009,
+    2151
+   ],
+   "commit": "9eee3161e5cb6df58618548a2173f4da7d194814",
+   "sha256": "1cppy9p5k8737jjgjlmfqqfdx048kpjn5cx7iw0dxal180y3i39g"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    0
+   ],
+   "commit": "636374c59c7d33c2f72c97ad8ba9fb4854f2324d",
+   "sha256": "0w62bk2m0gs4b605s691z4iap9baz1z6c8z4v9vb05917qlsx5xb"
+  }
+ },
+ {
+  "ename": "omni-tags",
+  "commit": "c77e57f41484c08cae9f47c4379d1752ccf43ce2",
+  "sha256": "133ww1jf14jbw02ssbx2a46mp52j18a2wwzb6x77azb0akmf1lzl",
+  "fetcher": "github",
+  "repo": "AdrieanKhisbe/omni-tags.el",
+  "unstable": {
+   "version": [
+    20170426,
+    2109
+   ],
+   "deps": [
+    "cl-lib",
+    "pcre2el"
+   ],
+   "commit": "8f0f6c302fab900b7681e5c039f90850cbbabd33",
+   "sha256": "0cqj4h4bdhmb0r6f2xx9g6cs3599m4j3snkrvsgddaq8c6mg47w0"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "pcre2el"
+   ],
+   "commit": "a7078bfbc9a6256efd0e57530df9fd7808bc2185",
+   "sha256": "0c34rci5793hd674x2srhqvnj46llrbkrw1xpzf73s4ib5zhh7xi"
+  }
+ },
+ {
+  "ename": "omnibox",
+  "commit": "bf274ff47f167edd214e667249356de281522802",
+  "sha256": "05jc9hhr3gnjfyjpdx79ij9b5qwfrsmdf8h2s5ldxbw82q8a0z02",
+  "fetcher": "github",
+  "repo": "sebastiencs/omnibox",
+  "unstable": {
+   "version": [
+    20180423,
+    49
+   ],
+   "deps": [
+    "dash",
+    "frame-local"
+   ],
+   "commit": "8ee75c71c20c438ebc43ba24ef6f543633d118f3",
+   "sha256": "19d7djf942dagxsz0c0lnfra4fk09qm6grkc0nihpsw4afjbj01a"
+  }
+ },
+ {
+  "ename": "omnisharp",
+  "commit": "e327c483be04de32638b420c5b4e043d12a2cd01",
+  "sha256": "0gh0wwdpdx2cjf95pcagj52inf7mrmiq7x8p0x5c7lvl4pfzhh87",
+  "fetcher": "github",
+  "repo": "OmniSharp/omnisharp-emacs",
+  "unstable": {
+   "version": [
+    20191015,
+    635
+   ],
+   "deps": [
+    "auto-complete",
+    "cl-lib",
+    "csharp-mode",
+    "dash",
+    "f",
+    "flycheck",
+    "popup",
+    "s"
+   ],
+   "commit": "e658a18a762438c3e1737612737b05d02a21ca2a",
+   "sha256": "1m4xqcn586f0gn305kig502480zlnvmrv98nmdkn36fbwgg96hla"
+  },
+  "stable": {
+   "version": [
+    4,
+    2
+   ],
+   "deps": [
+    "auto-complete",
+    "cl-lib",
+    "csharp-mode",
+    "dash",
+    "f",
+    "flycheck",
+    "popup",
+    "s",
+    "shut-up"
+   ],
+   "commit": "588b8482685adedbc56933cb13c58d9cc6a82456",
+   "sha256": "1iqwxc19jvcb2gsm2aq59zblg1qjmbxgb2yl3h3aybqp968j3i00"
+  }
+ },
+ {
+  "ename": "omtose-phellack-theme",
+  "commit": "478b1e07ed9010408c12598640ec8d154f9eb18d",
+  "sha256": "0aj0sw611w13xryn762ws63dfalczxixa5rv3skglmfy9axg3v3b",
+  "fetcher": "github",
+  "repo": "franksn/omtose-phellack-theme",
+  "unstable": {
+   "version": [
+    20161111,
+    2120
+   ],
+   "commit": "66f99633e199e65bd28641626435e8e59246529a",
+   "sha256": "0imf2pcf93srm473nvaksw5pw5i4caqxb6aqfbq6xww8gdbqfazy"
+  }
+ },
+ {
+  "ename": "on-parens",
+  "commit": "2ea1eb5eb5a40e95ba06b0a4ac89ad8843c9cc2c",
+  "sha256": "19kyzpkgfl0ipbcgnl8fbfbapnfdxr8w9i7prfkm6rjp6amxyqab",
+  "fetcher": "github",
+  "repo": "willghatch/emacs-on-parens",
+  "unstable": {
+   "version": [
+    20180202,
+    2241
+   ],
+   "deps": [
+    "dash",
+    "evil",
+    "smartparens"
+   ],
+   "commit": "7a41bc02bcffd265f8a69ed4b4e0df3c3009aaa4",
+   "sha256": "0pkc05plbjqfxrw54amlm6pzg9gcsz0nvqzprplr6rhh7ss419zn"
+  }
+ },
+ {
+  "ename": "on-screen",
+  "commit": "628f43fdfdb41174800fb8171e71134c27730f6f",
+  "sha256": "104jisc2bckzrajxlvj1cfx1drnjj7jhqjblvm89ry32xdnjxmqb",
+  "fetcher": "github",
+  "repo": "michael-heerdegen/on-screen.el",
+  "unstable": {
+   "version": [
+    20160302,
+    950
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "206468aa4de299ad26c2db12b757f5ad7290912f",
+   "sha256": "1rrby3mbh24qd43nsb3ymcrjxh1cz6iasf1gv0a8fmivmb4f7dyz"
+  }
+ },
+ {
+  "ename": "one-themes",
+  "commit": "504fb2fa2fe17eb008f7e9b8f7fb394f4a3ebd28",
+  "sha256": "11c6py5vani2cv4qjvizlzz9xvr5v57qxy1chcxy2lq3jlz1q5w0",
+  "fetcher": "github",
+  "repo": "balajisivaraman/emacs-one-themes",
+  "unstable": {
+   "version": [
+    20190424,
+    740
+   ],
+   "commit": "e62e4ebef7ef8ccb1e90781d613638d30cf24d7a",
+   "sha256": "13vjlgac3ikd5xr6cjqb3aaj8qr201lc3ndvwhj3k617474312jh"
+  }
+ },
+ {
+  "ename": "one-time-pad-encrypt",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0xl74vxq9dzl84b6wsw8flykxcsxggpd4s47a2ph3irr64mbbgq5",
+  "fetcher": "github",
+  "repo": "garvinguan/emacs-one-time-pad",
+  "unstable": {
+   "version": [
+    20160329,
+    1513
+   ],
+   "commit": "87cc1f124024ce3d277299ca0ac703f182937d9f",
+   "sha256": "0g2hvpnmgyy1k393prv97nqwlqc58nqf71hkrmaijw0cyy9q03nz"
+  }
+ },
+ {
+  "ename": "opam",
+  "commit": "29dc2ef3801a1cd7cf8edd2eae68b03bf00e96a0",
+  "sha256": "0hd08sb645jxz72m4g0jaggxa6l1dgimzgvd3mvvadihj6xkr2p3",
+  "fetcher": "github",
+  "repo": "emacsorphanage/opam",
+  "unstable": {
+   "version": [
+    20150719,
+    1220
+   ],
+   "commit": "4d589de5765728f56af7078fae328b6792de8600",
+   "sha256": "1yqrp9icci5snp1485wb6y8mr2hjp9006ahch58lvmnq98bn7j45"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "83fb2850d29ec792754e0af18b015e089aad2695",
+   "sha256": "119pk7gg4fw5bdvir8077ra603b5nbqvd7ph9cqrwxa056jzvry8"
+  }
+ },
+ {
+  "ename": "open-in-msvs",
+  "commit": "09a462fac31a7ceda4ee84a8550ff1db6d11140f",
+  "sha256": "0cng0brxjdriyhwsbn85pfrgqg56chzk24lvkx91rzgz15fbpnv5",
+  "fetcher": "github",
+  "repo": "evgeny-panasyuk/open-in-msvs.el",
+  "unstable": {
+   "version": [
+    20170123,
+    2228
+   ],
+   "commit": "e0d071c83188ad5db8f3297d6ce784b4ed554a04",
+   "sha256": "0aiccdcll5zjy11fandd9bvld8p8srmhrh3waqc33yp4x8pjkjpd"
+  }
+ },
+ {
+  "ename": "open-junk-file",
+  "commit": "f8e4328cae9b4759a75da0b26ea8b68821bc71af",
+  "sha256": "0r1v9m8a5blv70fzq5miv5i57jx0bm1p0jxh0lwklam0m99znmcj",
+  "fetcher": "github",
+  "repo": "rubikitch/open-junk-file",
+  "unstable": {
+   "version": [
+    20161210,
+    1114
+   ],
+   "commit": "558bec7372b0fed4c4cb6074ab906535fae615bd",
+   "sha256": "0kcgkxn5v9bsbkcvpjxjqhj1w3c29bfb33bmiw32gzbfphmrvhh1"
+  }
+ },
+ {
+  "ename": "opencc",
+  "commit": "71bc5476b3670a9f5c3d3682c2e7852fc6c5fe60",
+  "sha256": "1dd62x0h3imil4g3psndxykp45jf83fm4afxcvvyayj45z099f4r",
+  "fetcher": "github",
+  "repo": "xuchunyang/emacs-opencc",
+  "unstable": {
+   "version": [
+    20170722,
+    816
+   ],
+   "commit": "8c539f72669ba9a99d8b5198db5ea930897ad1b9",
+   "sha256": "140s88z0rsiylm8g1mzgc50ai38x79j004advin6lil5zcggxq3i"
+  }
+ },
+ {
+  "ename": "opencl-mode",
+  "commit": "d97575fdae88d55b55686aa6814f858813cad171",
+  "sha256": "1g351wiaycwmg1bnf4s2mdnc3lb2ml5l54g19184xqssfqlx7y79",
+  "fetcher": "github",
+  "repo": "salmanebah/opencl-mode",
+  "unstable": {
+   "version": [
+    20190615,
+    1957
+   ],
+   "commit": "55cb49c8243e6420961d719faced035bc547c1ef",
+   "sha256": "0rsf49dj0q5i14b3nfhld9da7d9cx01l8gxf35ya7nw4fw07aan1"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "14109a4bb56105a9c052ae49ad4c638b4cc210b2",
+   "sha256": "0n64l1jrrk60g192nn0240qcv2p9r138mi9gb38qq5k65wffbc21"
+  }
+ },
+ {
+  "ename": "opener",
+  "commit": "c5a448f1936f46176bc2462eb03955a0c19efb9e",
+  "sha256": "0fhny4m7x19wnlnr19s4rkl04dkx95yppd51jzrkr96xiznw97s7",
+  "fetcher": "github",
+  "repo": "0robustus1/opener.el",
+  "unstable": {
+   "version": [
+    20161207,
+    1810
+   ],
+   "deps": [
+    "cl-lib",
+    "request"
+   ],
+   "commit": "c384f67278046fdcd220275fdd212ab85672cbeb",
+   "sha256": "0gci909a2rbx5i8dyzyrcddwdic7nvpk6y6djvn521yaag4sq87h"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "request"
+   ],
+   "commit": "c384f67278046fdcd220275fdd212ab85672cbeb",
+   "sha256": "0gci909a2rbx5i8dyzyrcddwdic7nvpk6y6djvn521yaag4sq87h"
+  }
+ },
+ {
+  "ename": "opensource",
+  "commit": "ec4255a403e912a14a7013ea96f554d3588dfc30",
+  "sha256": "17gi20s2vi7m75qqaff907x1g8ja5ny90klldpqmj258m2j6a6my",
+  "fetcher": "github",
+  "repo": "OpenSourceOrg/el-opensourceorg",
+  "unstable": {
+   "version": [
+    20160926,
+    1616
+   ],
+   "deps": [
+    "dash",
+    "pkg-info",
+    "request",
+    "s"
+   ],
+   "commit": "4c15049079878fcd386cca5dba20b99296a1de84",
+   "sha256": "1avci3avwhrw040wwjgcv1hayk893y8iwln10vsjyb5rd78y9gsi"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "dash",
+    "pkg-info",
+    "request",
+    "s"
+   ],
+   "commit": "27d06be45c852e84e47c33cbd0f4c344fd9a0370",
+   "sha256": "1rjf78vki4xp8y856v95877093p3zgfc9mx92npscsi1g93dxn80"
+  }
+ },
+ {
+  "ename": "openstack-cgit-browse-file",
+  "commit": "bd7035e1ea63d7d8378f8bfda6a5402a5b6bb9e4",
+  "sha256": "05dl28a4npnnzzipypfcqb21sdww715lwji2xnsabx3fb1h1w5jl",
+  "fetcher": "github",
+  "repo": "chmouel/openstack-cgit-browse-file",
+  "unstable": {
+   "version": [
+    20130819,
+    927
+   ],
+   "commit": "244219288b9aef41155044697bb114b7af83ab8f",
+   "sha256": "0086pfk4pq6xmknk7a42fihcjgzkcplqqc1rk9fhwmn9j7djbq70"
+  }
+ },
+ {
+  "ename": "openwith",
+  "commit": "caca0b2bc2aaac563074cbb4ea4296fce749e203",
+  "sha256": "0swza74ndw0vkr7q513wp12c2yasla7aaqv0z98mzr0ssx12jld8",
+  "fetcher": "github",
+  "repo": "jpkotta/openwith",
+  "unstable": {
+   "version": [
+    20120531,
+    2136
+   ],
+   "commit": "1dc89670822966fab6e656f6519fdd7f01e8301a",
+   "sha256": "1wl6gnxsyhaad4cl9bxjc0qbc5jzvlwbwjbajs0n1s6qr07d6r01"
+  }
+ },
+ {
+  "ename": "operate-on-number",
+  "commit": "aec74eff8ca3d5e381d7a6d61c73f1a0716f1c60",
+  "sha256": "1rw3fqbzfizgcbz3yaf99rr2546msna4z7dyfa8dbi8h7yzl4fhk",
+  "fetcher": "github",
+  "repo": "knu/operate-on-number.el",
+  "unstable": {
+   "version": [
+    20150707,
+    623
+   ],
+   "commit": "ceb3be565a29326c1098244fac0c50606723a56e",
+   "sha256": "0iw3c8sn702ziki59mvd5gxm484i7f0bwsy8fz95y08s9gknjjf9"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "6a17272e2b6e23260edb1b5eeb01905a1f37e0a6",
+   "sha256": "12q09kdcgv6hl1hmgarl73j4g9gi4h7sj865655mdja0ns9n1pdb"
+  }
+ },
+ {
+  "ename": "orca",
+  "commit": "f4d9cf89c58a9b36b7c2a42de2aecb3b60001908",
+  "sha256": "012ndbrgm58r09snhvi476rw0lq4m913y0slc0cxb688p9wgz5w3",
+  "fetcher": "github",
+  "repo": "abo-abo/orca",
+  "unstable": {
+   "version": [
+    20200122,
+    1511
+   ],
+   "commit": "654f185861ed4fedfe1394db48a83639a0be57f6",
+   "sha256": "1dwps9zv1jnc7m75j5cdla14pnv2vnivm5bq0zcvqfsvilvd38ds"
+  }
+ },
+ {
+  "ename": "orderless",
+  "commit": "3f1f2c378e63c5ce8a8d37735f914ce0663a76d3",
+  "sha256": "102jfzq2zskaa8jcb4mmmndcdc8221qp0hqlgvwirnzkxms9ij4a",
+  "fetcher": "github",
+  "repo": "oantolin/orderless",
+  "unstable": {
+   "version": [
+    20200504,
+    706
+   ],
+   "commit": "5b292ac136b891d574f0d9827904e6ad527a9c35",
+   "sha256": "0973fksap71cya30g3a58jqdd4hxkv4ia603dgl06qgirjvpl820"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "b69b52289fdb0023a3123b1ddec5b490125345a3",
+   "sha256": "0vxpaqsad3x1lqga1ky7sipm8lk8ps66wpcvz52jdqasxmxzvrjm"
+  }
+ },
+ {
+  "ename": "ordinal",
+  "commit": "ea3dd6fe4cacc229dd1371cb66dd1cfd07321bf4",
+  "sha256": "19s27mv7kqcg9qxa844al7q1hk0qbiqh93g1n54r3b6s980dlgcv",
+  "fetcher": "github",
+  "repo": "zonuexe/ordinal.el",
+  "unstable": {
+   "version": [
+    20190104,
+    1421
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "75af95abbac3e30c4dd804411cb3e867c741a747",
+   "sha256": "04zhw4a3l8a8sz4w5l04hjr63hdrq9icjcc2mn893rixrw1i7l9m"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "75af95abbac3e30c4dd804411cb3e867c741a747",
+   "sha256": "04zhw4a3l8a8sz4w5l04hjr63hdrq9icjcc2mn893rixrw1i7l9m"
+  }
+ },
+ {
+  "ename": "org-ac",
+  "commit": "adf598f8dae69ff286ae78d353a2a5d4363b4480",
+  "sha256": "059jr3v3558cgw626zbqfwmwwv5f4637ai26h7b6psqh0x9sf3mr",
+  "fetcher": "github",
+  "repo": "aki2o/org-ac",
+  "unstable": {
+   "version": [
+    20170401,
+    1307
+   ],
+   "deps": [
+    "auto-complete-pcmp",
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "41e3ef8e4039619d0370c23c66730b3b2e9e32ed",
+   "sha256": "1l3fn8vjdqq7rrn1b7l2i238bhjni13mg9v25dydin0sfb697abk"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "auto-complete-pcmp",
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "9cbbda79e2fe964ded3f39cf7a2e74f1be3d6b9a",
+   "sha256": "1xckin2d6s40kgr2293g72ipc57f8gp6y63303kmqcv3qm8q13ca"
+  }
+ },
+ {
+  "ename": "org-agenda-property",
+  "commit": "1e6aed365c42987d64d0cd9a8a6178339b1b39e8",
+  "sha256": "0zsjzjw52asl609q7a2s4jcsm478p4cxzhnd3azyr9ypxydjf6qk",
+  "fetcher": "github",
+  "repo": "Malabarba/org-agenda-property",
+  "unstable": {
+   "version": [
+    20140626,
+    2116
+   ],
+   "commit": "3b469f3e93de0036547f3631cd0366d53f7584c8",
+   "sha256": "15xgkm5p30qfghyhkjivh5n4770794qf4pza462vb0xl5v6kffbm"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    1
+   ],
+   "commit": "2ff628a14a3e758863bbd88fba4db9f77fd2c3a8",
+   "sha256": "0gkxxzdk8bd1yi5x9217pkq9d01ccq8znxc7h8qcw0p1336rigfc"
+  }
+ },
+ {
+  "ename": "org-alert",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "01bb0s22wa14lyr9wi58cvk4b03xqq268y3dvxbrhymw1ld97zk2",
+  "fetcher": "github",
+  "repo": "spegoraro/org-alert",
+  "unstable": {
+   "version": [
+    20180524,
+    133
+   ],
+   "deps": [
+    "alert",
+    "dash",
+    "s"
+   ],
+   "commit": "f87bff4acbd839acb4d2245b56b2c3d21f950911",
+   "sha256": "05xhp1ggpcgd48vcrxf9l43aasxfjw1ypgzpq3gp7031x83m9rr6"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "alert",
+    "dash",
+    "s"
+   ],
+   "commit": "685c18aa5ce994360c7f9e8bbf49590c412187ac",
+   "sha256": "0gkv2sfl9nb64qqh5xhgq68r9kfmsny3vpcmnzk2mqjcb9nh657s"
+  }
+ },
+ {
+  "ename": "org-analyzer",
+  "commit": "1e264f0cbd4ce919d28ae7b2fa00752dc83491fc",
+  "sha256": "18390jllqx2md5y5fjprx90nx11i0h1mdqx2q8jzv7napw957b1d",
+  "fetcher": "github",
+  "repo": "rksm/clj-org-analyzer",
+  "unstable": {
+   "version": [
+    20191001,
+    1717
+   ],
+   "commit": "19da62aa4dcf1090be8f574f6f2d4c7e116163a8",
+   "sha256": "1zfc93z6w5zvbqiypqvbnyv8ims1wgpcp61z1s152d0nq2y4pf50"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    4
+   ],
+   "commit": "19da62aa4dcf1090be8f574f6f2d4c7e116163a8",
+   "sha256": "1zfc93z6w5zvbqiypqvbnyv8ims1wgpcp61z1s152d0nq2y4pf50"
+  }
+ },
+ {
+  "ename": "org-attach-screenshot",
+  "commit": "f545cd8d1da39e7fbd61020e178de30053ba774b",
+  "sha256": "0108kahyd499q87wzvirv5d6p7jrb7ckz8r96pwqzgflj3njbnmn",
+  "fetcher": "github",
+  "repo": "dfeich/org-screenshot",
+  "unstable": {
+   "version": [
+    20180420,
+    525
+   ],
+   "commit": "6b1edbd2384191122a30788ac72f2233c2df0294",
+   "sha256": "0vyxpc28b9b0cn02a9p48q6iy61qw7gj7gzk37ijdmzg8dzy6hxv"
+  }
+ },
+ {
+  "ename": "org-autolist",
+  "commit": "ca8e2cdb282674b20881bf6b4fc49af42a5d09a7",
+  "sha256": "1jvspxhxlvd7h1srk9dbk1v5dykmf8jsjaqicpll7ial6i0qgikj",
+  "fetcher": "github",
+  "repo": "calvinwyoung/org-autolist",
+  "unstable": {
+   "version": [
+    20170924,
+    1901
+   ],
+   "commit": "c82d1e83e982b5f0c106b8800e5b0cfd5f73fdc1",
+   "sha256": "0ykiafbdjb2iy0s1gr6l51gddjbk08iwj4v13hgm8b675bl0cw56"
+  },
+  "stable": {
+   "version": [
+    0,
+    14
+   ],
+   "commit": "c82d1e83e982b5f0c106b8800e5b0cfd5f73fdc1",
+   "sha256": "0ykiafbdjb2iy0s1gr6l51gddjbk08iwj4v13hgm8b675bl0cw56"
+  }
+ },
+ {
+  "ename": "org-babel-eval-in-repl",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0brqp0w9s28ibws4idlm1rw09lsfa98l5wbpwm64rvlixhs6zlnx",
+  "fetcher": "github",
+  "repo": "diadochos/org-babel-eval-in-repl",
+  "unstable": {
+   "version": [
+    20191204,
+    18
+   ],
+   "deps": [
+    "ess",
+    "eval-in-repl",
+    "matlab-mode"
+   ],
+   "commit": "e111b4b5c6844bb389317354ea172cd96a8bb658",
+   "sha256": "0j1z1kp85fvn874l7s8h0cf528khaa38bs5ccx5dwf8mkb68vjgm"
+  },
+  "stable": {
+   "version": [
+    1,
+    5
+   ],
+   "deps": [
+    "ess",
+    "eval-in-repl",
+    "matlab-mode"
+   ],
+   "commit": "929d160685db57c4f0aedf26b52f9d7a918a40dd",
+   "sha256": "0dk2kqwf7pg18iny02rz146jjjlfqn1vd9ay1sxq7vgsv6c1cs80"
+  }
+ },
+ {
+  "ename": "org-beautify-theme",
+  "commit": "f55f1ee9890f720e058401a052e14c7411252967",
+  "sha256": "0rrlyn61xh3szw8aihxpbmg809xx5ac66xqzj895dn1raz129h2w",
+  "fetcher": "github",
+  "repo": "jonnay/org-beautify-theme",
+  "unstable": {
+   "version": [
+    20170908,
+    2218
+   ],
+   "commit": "df6a1114fda313e1689363e196c8284fbe2a2738",
+   "sha256": "1lkz7736swimad12khwbbqc4gxjydgr1k45p4mx03s25pv1w920y"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "commit": "7b7a7cbd4f25f77e8bd81783f517b2b182220fd9",
+   "sha256": "0nqw4apv642vqbjjqbi960zim9lkbnaszrlasf25c9fnzdg1m134"
+  }
+ },
+ {
+  "ename": "org-board",
+  "commit": "d8063ee17586d9b1e7415f7b924239826b81ab08",
+  "sha256": "00jsrxc8f85cvrh7364n7337frdj12yknlfp28fhdgk2ph6d7bp4",
+  "fetcher": "github",
+  "repo": "scallywag/org-board",
+  "unstable": {
+   "version": [
+    20190203,
+    1424
+   ],
+   "commit": "2e01e801abc04b8fb718ca4bc19636242ac0cb52",
+   "sha256": "044nqxrg11qk0lnipzvhvdyd37vjkklaksyasrn6k1ifcfdx2qp8"
+  },
+  "stable": {
+   "version": [
+    1018
+   ],
+   "commit": "405bfd630f1b31bd77158bc8e79aab86812cba65",
+   "sha256": "066shdqp0bca2xlds1m0c5ml3yxqfyzsyyy7sy72ybv41n5b11x3"
+  }
+ },
+ {
+  "ename": "org-bookmark-heading",
+  "commit": "eaadbd149399c6e3c48ac5cbeedeb29a3f5791f1",
+  "sha256": "1q92rg9d945ypcpb7kig2r0cr7nb7avsylaa7nxjib25advx80n9",
+  "fetcher": "github",
+  "repo": "alphapapa/org-bookmark-heading",
+  "unstable": {
+   "version": [
+    20200103,
+    514
+   ],
+   "deps": [
+    "f"
+   ],
+   "commit": "38a2813f72ff65f3ae91e2ebb23e0bbb42a8d1df",
+   "sha256": "09rfp0zf68gnhiwh61wc10kgqk75ypkbk0hawrw1rhida1bi2wb1"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "70b014e09977371a8c9bad03085c116693062b19",
+   "sha256": "0j765rb2yfwnc0ri53jb8d6lxj6knpmy495bk3sd63492kdrxf93"
+  }
+ },
+ {
+  "ename": "org-books",
+  "commit": "2362892068bffb99a37e77201924ec12676a5017",
+  "sha256": "1mp0n1x5ka2x2rc6pd4nn54cr8b3qxl7fq8dsyng7bm300gizpf2",
+  "fetcher": "github",
+  "repo": "lepisma/org-books",
+  "unstable": {
+   "version": [
+    20200510,
+    844
+   ],
+   "deps": [
+    "dash",
+    "enlive",
+    "helm",
+    "helm-org",
+    "s"
+   ],
+   "commit": "44aec8dcdf4a498e13a80362dff4027cfa4b74a1",
+   "sha256": "10ws56ww3hhqx5gghxaygiyi5vkfb5snjf4v0djaam53yn03jl90"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    18
+   ],
+   "deps": [
+    "dash",
+    "enlive",
+    "helm",
+    "helm-org",
+    "s"
+   ],
+   "commit": "44aec8dcdf4a498e13a80362dff4027cfa4b74a1",
+   "sha256": "10ws56ww3hhqx5gghxaygiyi5vkfb5snjf4v0djaam53yn03jl90"
+  }
+ },
+ {
+  "ename": "org-brain",
+  "commit": "47480fbae06e4110d50bc89db7df05fa80afc7d3",
+  "sha256": "0c05c6lbr740nnjp9p34padrbrc3q1x2pgylkyhsxadm4mfsvj0c",
+  "fetcher": "github",
+  "repo": "Kungsgeten/org-brain",
+  "unstable": {
+   "version": [
+    20200516,
+    1343
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "3ce2a33b81ce611695ad74bf21cb911ef90d9a1a",
+   "sha256": "0br8mqhxfx9pf1nslvlqk4x5rdlpjagixi6il0i0xpxhca7z3fya"
+  }
+ },
+ {
+  "ename": "org-bullets",
+  "commit": "aa0e1ebac172a73bfed7d55cb4d9eb52178dcbdc",
+  "sha256": "0jcqgp23wgzdmw7il8phwiqdndwyjc7lcc27mk8rfip4ngp3wiyn",
+  "fetcher": "github",
+  "repo": "integral-dw/org-bullets",
+  "unstable": {
+   "version": [
+    20200317,
+    1740
+   ],
+   "commit": "767f55feb58b840a5a04eabfc3fbbf0d257c4792",
+   "sha256": "01ll5b39wpx9qpqybndy58wkq97n512rg7j87482l1ry1s5b02d5"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    4
+   ],
+   "commit": "b70ac2ec805bcb626a6e39ea696354577c681b36",
+   "sha256": "10nr4sjffnqbllv6gmak6pviyynrb7pi5nvrq331h5alm3xcpq0w"
+  }
+ },
+ {
+  "ename": "org-caldav",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1wzb5garpxg8p7zaqp6z5q0l2x8n9m7fjg5xy3vg9878njnqr9kc",
+  "fetcher": "github",
+  "repo": "dengste/org-caldav",
+  "unstable": {
+   "version": [
+    20200510,
+    2030
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "8569941a0a5a9393ba51afc8923fd7b77b73fa7a",
+   "sha256": "05lgxqaffnqaqnzl24frafdkskran88hl2ml05qvyjhs4jjbgw9g"
+  }
+ },
+ {
+  "ename": "org-capture-pop-frame",
+  "commit": "e608f40d00a3b2a80a6997da00e7d04f76d8ef0d",
+  "sha256": "1k0njip25527nkn8w11yl7dbk3zv9p9lhx0a9xx293havjxygvyi",
+  "fetcher": "github",
+  "repo": "tumashu/org-capture-pop-frame",
+  "unstable": {
+   "version": [
+    20160518,
+    1008
+   ],
+   "commit": "b16fd712de62cf0d1f9befd03be6ab5983cb3301",
+   "sha256": "01ffkk79wz2qkh9h9cjl59j34wvbiqzzxbbc9a06lh2rc946wgis"
+  }
+ },
+ {
+  "ename": "org-category-capture",
+  "commit": "6760daac1ef9d9d7ba07e2fc9668873020f901f1",
+  "sha256": "0l5n71h9lc8q9k0sb5ghzwb81lah4l1ykc06shfl9zw5lqqvahav",
+  "fetcher": "github",
+  "repo": "IvanMalison/org-projectile",
+  "unstable": {
+   "version": [
+    20200329,
+    313
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "96a57a43555e24e5e0d81e79f0fbb47001c41bac",
+   "sha256": "05h9scvnd9ggfwbbl1m124k6sdn5kp9mv2695cril2m4dkr1kyqz"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "48f621b595e748c5e03431f237facf258ffc9443",
+   "sha256": "00n2msmwcjjiibrhrvpawzgz6qcjjfy9qnii1iaass0038g4bd89"
+  }
+ },
+ {
+  "ename": "org-chef",
+  "commit": "23b9e64887a290fca7c7ab2718f627f8d728575f",
+  "sha256": "1xzbdrv5z31lxnzzgbp50l10lzlvx6j7kc7ssg76fma49wfpnra5",
+  "fetcher": "github",
+  "repo": "Chobbes/org-chef",
+  "unstable": {
+   "version": [
+    20200512,
+    2102
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "1dd73fd3db0e9382fa34d3b48c8ec608e65f3bdc",
+   "sha256": "0wfl416hd7f42j1fidap0f9zlcm3vhgjs12k99k672fggl0459h1"
+  }
+ },
+ {
+  "ename": "org-cliplink",
+  "commit": "7ddb13c59441fdf4eb1ba3816e147279dea7d429",
+  "sha256": "19l3k9w9csgvdr7n824bzg7jja0f28dmz6caldxh43vankpmlg3p",
+  "fetcher": "github",
+  "repo": "rexim/org-cliplink",
+  "unstable": {
+   "version": [
+    20190608,
+    2134
+   ],
+   "commit": "82402cae7e118d67de7328417fd018a18f95fac2",
+   "sha256": "0cx0bmpsniazpl420cck9pgvmyfznrvl5bgrjnfyvkmqgpz9nyzv"
+  }
+ },
+ {
+  "ename": "org-clock-convenience",
+  "commit": "a80ed929181cdd28886ca598a0c387a31d239b2e",
+  "sha256": "1zis0fp7q253qfxypm7a69zb3w8jb4cbrbj2rk34d1jisvnn4irw",
+  "fetcher": "github",
+  "repo": "dfeich/org-clock-convenience",
+  "unstable": {
+   "version": [
+    20200123,
+    1029
+   ],
+   "deps": [
+    "cl-lib",
+    "org"
+   ],
+   "commit": "4e522706a90a504c75d377161005f9543575ea02",
+   "sha256": "08d0hv2shpbw01pjh8ks04avyl4zc0zcyqlmn4hbdhwjz7lzp8dv"
+  }
+ },
+ {
+  "ename": "org-clock-csv",
+  "commit": "e023cb898699f76f6c3d9ffe8162aacfc6a8c34f",
+  "sha256": "02spjrzdf1kmvyvqkzg7nnmq9kqv75zwxn5ifqmg0f7a1gw28f0l",
+  "fetcher": "github",
+  "repo": "atheriel/org-clock-csv",
+  "unstable": {
+   "version": [
+    20190418,
+    1505
+   ],
+   "deps": [
+    "org",
+    "s"
+   ],
+   "commit": "e2fbaa1ad1a1be40fceecde603a600b292b76acc",
+   "sha256": "1fpjga40v2wlkvq4ap75hd844m47gm55dkraznqz078k5f8fx8kk"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "deps": [
+    "org",
+    "s"
+   ],
+   "commit": "e2fbaa1ad1a1be40fceecde603a600b292b76acc",
+   "sha256": "1fpjga40v2wlkvq4ap75hd844m47gm55dkraznqz078k5f8fx8kk"
+  }
+ },
+ {
+  "ename": "org-clock-split",
+  "commit": "dc8517485e39093a3be387213f766d1df7d50061",
+  "sha256": "1ihqp4ilz4a3qs2lrc3j0lqkjh782510m2nbzba89pasgl4c4jhw",
+  "fetcher": "github",
+  "repo": "justintaft/org-clock-split",
+  "unstable": {
+   "version": [
+    20200331,
+    526
+   ],
+   "commit": "39e1d2912a7a7223e2356a5fc4dff03507ae084d",
+   "sha256": "0yvpmv0v56rsn43ffmwfhw8jjvfklw703qpmkx6d6paljjgy9k8l"
+  }
+ },
+ {
+  "ename": "org-clock-today",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1x9hplz9w2kpa239rz6y02hsl4fgzxlkwr9hhwjy12x1f88x0k73",
+  "fetcher": "github",
+  "repo": "mallt/org-clock-today-mode",
+  "unstable": {
+   "version": [
+    20191204,
+    1558
+   ],
+   "commit": "e326a45b60e0fd4ca057f1d1dc3e99a516a5aa2f",
+   "sha256": "08x1907kh6gxnji34gc3r6vya4idd7b79xqxyn8ibn9zswicyy2p"
+  }
+ },
+ {
+  "ename": "org-commentary",
+  "commit": "3e0a40d9ea5849b9c22378a84ac8122e4eb2737d",
+  "sha256": "0ym1rq2zhyhc6hkk40wsa9jni2h1z5dkaisldqzg8ggl7iv3v4fx",
+  "fetcher": "github",
+  "repo": "smaximov/org-commentary",
+  "unstable": {
+   "version": [
+    20160802,
+    637
+   ],
+   "deps": [
+    "dash",
+    "org"
+   ],
+   "commit": "821ccb994811359c42f4e3d459e0e88849d42b75",
+   "sha256": "0ixhyn8s7l2caq0qpv9zlq9fzm3z8b81755c3yffnk5camnij6py"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "dash",
+    "org"
+   ],
+   "commit": "2eeeb0f506e30ef82263e67279d837a79cbde021",
+   "sha256": "02an98pc52yfxsxmz1kib692yx93rqdi1q3lpvblzyd3hhd51rlr"
+  }
+ },
+ {
+  "ename": "org-context",
+  "commit": "f33b6157eb172719a56c3e86233708b1e545e451",
+  "sha256": "19y8aln7wix9p506ajvfkl641147c5mdmjm98jnq68cx2r4wp6zz",
+  "fetcher": "github",
+  "repo": "thisirs/org-context",
+  "unstable": {
+   "version": [
+    20200418,
+    1540
+   ],
+   "commit": "bbef096dc20b206b792b0ef310f2eed7c70ca3a0",
+   "sha256": "05s73wn2q3a0mfc14qlgcb1bas9addby0m43id2v8ljvxyigicr8"
+  }
+ },
+ {
+  "ename": "org-cua-dwim",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "0ib3m41b4lh0p0xxhsmfv42qs00xm2cfwwl2cgfdjjp1s57p19xy",
+  "fetcher": "github",
+  "repo": "mattfidler/org-cua-dwim.el",
+  "unstable": {
+   "version": [
+    20120203,
+    534
+   ],
+   "commit": "a55d6c7009fc0b22f1110c07de629acc955c85e4",
+   "sha256": "0nrfvmqb70phnq0k4wbdj6z666wq6xvabg4pgv8qn62rbrw4yyhm"
+  }
+ },
+ {
+  "ename": "org-d20",
+  "commit": "98bf91038196dfb59c491c9ed96c6b6a0cb311a9",
+  "sha256": "158n900ifb1mfckd0gjmb9gpzibh8a2x56flbn2r035gcdbb7wc5",
+  "fetcher": "git",
+  "url": "https://git.spwhitton.name/org-d20",
+  "unstable": {
+   "version": [
+    20200416,
+    2010
+   ],
+   "deps": [
+    "dash",
+    "s",
+    "seq"
+   ],
+   "commit": "7ede5726d640c4f81146585f6eb907f51a0f6a19",
+   "sha256": "1p4irzcsq2sxmvpyrkrqs9ylp153mzwr31hvsnfh1f2nlghpicfk"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "dash",
+    "s",
+    "seq"
+   ],
+   "commit": "e0fb2c04a55c55cbf59a85a0b2e23ef18370ca61",
+   "sha256": "1q5s2gj1968z23qf7ds2ychvvnzmlayh1v16krf0lf3zj7a3k20s"
+  }
+ },
+ {
+  "ename": "org-dashboard",
+  "commit": "11ce0ba772672d9cbae5713ebaf3798eec5fdb3c",
+  "sha256": "1hvhhbmyx12wsf2n1hd0hg5cy05zyspd82xxcdh04g4s9r3ikqj5",
+  "fetcher": "github",
+  "repo": "bard/org-dashboard",
+  "unstable": {
+   "version": [
+    20171223,
+    1924
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "02c0699771d199075a286e4502340ca6e7c9e831",
+   "sha256": "0zi23xgv5fq827dljhzp6m2v7ggr3pdw3fpgq8515gs9q4f12v1r"
+  }
+ },
+ {
+  "ename": "org-doing",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "10vg0wl8dsy12r51178qi4rzi94img692z5x3zv8dxa29lmn26xs",
+  "fetcher": "github",
+  "repo": "rudolfolah/org-doing",
+  "unstable": {
+   "version": [
+    20200510,
+    1732
+   ],
+   "commit": "df916bb13577f4de9d58332453cb8bf51eac37ba",
+   "sha256": "014xz7yjw97i1dzyg487r2v9rf3jk9jwc5acgg1fj5kc2n1m299m"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "e099514cfc162f8fe3d383456a7964743b0455d5",
+   "sha256": "1hvnrw0y3chlfv6zxsczmm8zybrnakn3x13ykv2zblw96am9kd2s"
+  }
+ },
+ {
+  "ename": "org-dotemacs",
+  "commit": "4c1847184312c8c95e7e81e5b3b73e5621cc2509",
+  "sha256": "1vc391fdkdqd4g0piq66zhrlgqx5s2ijv7qd1rc3a235sjb9i2n4",
+  "fetcher": "github",
+  "repo": "vapniks/org-dotemacs",
+  "unstable": {
+   "version": [
+    20190903,
+    2024
+   ],
+   "deps": [
+    "cl-lib",
+    "org"
+   ],
+   "commit": "ee59739c2d59151fe7d7d3034e87c7691120a5be",
+   "sha256": "17xrjhfjahryawrmkd2p0yi7pfxfvgdfhh4n18jdmfkrr6gllavg"
+  }
+ },
+ {
+  "ename": "org-download",
+  "commit": "edab283bc9ca736499207518b4c9f5e71e822bd9",
+  "sha256": "19yjx0qqpmrdwagp3d6lwwv7dcb745m9ccq3m29sin74f5p4svsi",
+  "fetcher": "github",
+  "repo": "abo-abo/org-download",
+  "unstable": {
+   "version": [
+    20200506,
+    1829
+   ],
+   "deps": [
+    "async"
+   ],
+   "commit": "d248fcb8f2592a40507682e91eed9a31ead4e4a6",
+   "sha256": "1m8683hkxs70754kqxxw6sb0wfvjkb9ghf9ny7zsyzvz0yj02gkm"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "async"
+   ],
+   "commit": "a57beffd0f09b218a9487d1750960878c1d5b12c",
+   "sha256": "1disqqfwjl366kv6xgc28w7zbc4xl9a0jmdj7w27mb00sxzfk3vb"
+  }
+ },
+ {
+  "ename": "org-dp",
+  "commit": "7f337375082da316ed07b8ce9c775b484b8cdbf6",
+  "sha256": "0fnrzpgw8l0g862j20yy4mw1wfcm2i04r6dxi4yd7yay8bw2i4yq",
+  "fetcher": "github",
+  "repo": "tj64/org-dp",
+  "unstable": {
+   "version": [
+    20180311,
+    923
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "e720f1c155a795a5b65a04790ad195c413449716",
+   "sha256": "1d9fzgmg1hhr0nvas799filymhm6k6acm970gl444x4428fq03l7"
+  },
+  "stable": {
+   "version": [
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d740c2065120f71762c48877da1a31dea881e98e",
+   "sha256": "0cxccxz17pj67wgmyxr74n381mknqgqkyav3jkxs4ghg59g5nygl"
+  }
+ },
+ {
+  "ename": "org-drill",
+  "commit": "c26e11c52c8bb5c88df348cc15df6e0386bf8e1b",
+  "sha256": "16r8v2blqf0s1j6csp0mw0radm6bjkbdw18lr7zwx8ja1sjl48ws",
+  "fetcher": "gitlab",
+  "repo": "phillord/org-drill",
+  "unstable": {
+   "version": [
+    20200412,
+    1812
+   ],
+   "deps": [
+    "org",
+    "persist",
+    "seq"
+   ],
+   "commit": "35c1ce349949cc213f3076799211210f49431850",
+   "sha256": "06hc98z4sml7jrwm5zvbsw5x6q5jpa335almzkh6h85g1p8syfsn"
+  },
+  "stable": {
+   "version": [
+    2,
+    7,
+    0
+   ],
+   "deps": [
+    "org",
+    "persist",
+    "seq"
+   ],
+   "commit": "4c114489e682e514e79701045d541ab6f3dc3fb4",
+   "sha256": "13y302lyscdqrba1sfx60yf5ji2xi7fbsvjsjbw7hiz63kg6rccy"
+  }
+ },
+ {
+  "ename": "org-drill-table",
+  "commit": "3347da186765877826b224e1f5d1b585ebd3692c",
+  "sha256": "1gb5b4hj4xr8nv8bxfar145i38zcic6c34gk98wpshvwzvb43r69",
+  "fetcher": "github",
+  "repo": "chrisbarrett/org-drill-table",
+  "unstable": {
+   "version": [
+    20180115,
+    1009
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "org",
+    "s"
+   ],
+   "commit": "2729aaa42c1e2720d9bf7bcc125e92dcf48b7f7d",
+   "sha256": "0rqjzn3n42jcnwa5vg2731vxrnj6vy2bacfxmg0hlh3rkhhn0r53"
+  }
+ },
+ {
+  "ename": "org-dropbox",
+  "commit": "cd613fbe42c41b125a25dfa0206666446dc5fa40",
+  "sha256": "0qfvdz13ncqn7qaz03lwabzsnk62z6wqzlxlvdqv5xyllcy9m6ln",
+  "fetcher": "github",
+  "repo": "heikkil/org-dropbox",
+  "unstable": {
+   "version": [
+    20150114,
+    509
+   ],
+   "deps": [
+    "dash",
+    "names"
+   ],
+   "commit": "75dab6d6f0438a7a8a18ccf3a5d55f50bf531f6e",
+   "sha256": "0jjdsng7fm4wbhvd9naqzdfsmkvj1sf1d9rikprg1pd58azv6idx"
+  }
+ },
+ {
+  "ename": "org-easy-img-insert",
+  "commit": "512db70609fc451972405acb4b186a9b3c6944fa",
+  "sha256": "0gpb9f66gn8dbhwrlw7z2a5rpphbh1fv845wz8yy4v7nv2j3sf54",
+  "fetcher": "github",
+  "repo": "tashrifsanil/org-easy-img-insert",
+  "unstable": {
+   "version": [
+    20160915,
+    2008
+   ],
+   "commit": "9f8aaa7f68ff1f0d8d7b1e9b618abb15002f971e",
+   "sha256": "1p0hzfzlcdmd8d01a4xqg27n7qcnv7a03n8wiicv0dnicx179952"
+  }
+ },
+ {
+  "ename": "org-edit-latex",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0nkiz4682qgk5dy4if3gij98738482ys8zwm8yx834za38xxbwry",
+  "fetcher": "github",
+  "repo": "et2010/org-edit-latex",
+  "unstable": {
+   "version": [
+    20170908,
+    1522
+   ],
+   "deps": [
+    "auctex"
+   ],
+   "commit": "1f228310ef2f3f2959a527f6d99e42ce977384c8",
+   "sha256": "1zfimgnmn7nqaq8aglyly55k5dr548467masr2g4x3m0z1by1z6b"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    3
+   ],
+   "deps": [
+    "auctex"
+   ],
+   "commit": "39cbc9a99acb030f537c7269ab93958187321871",
+   "sha256": "1w0lyz71dq8x28ira4hig1b70bqn1dr53w3k5dgch9szcf6xa86y"
+  }
+ },
+ {
+  "ename": "org-ehtml",
+  "commit": "7f68028b3f4d2455da6d657e90abcab6181db284",
+  "sha256": "0n82fbd7aircqg2c9m138qfv8csrv0amhya3xlwswdkqn51vn3gw",
+  "fetcher": "github",
+  "repo": "eschulte/org-ehtml",
+  "unstable": {
+   "version": [
+    20150506,
+    2358
+   ],
+   "deps": [
+    "web-server"
+   ],
+   "commit": "9df85de1a0fe1e7b2d6c000777c1a0c0217f92d0",
+   "sha256": "0kqvwqmwnwg2h7r38fpjg6qlkcj9v8011df8nmsgs1w1mfdvnjsq"
+  }
+ },
+ {
+  "ename": "org-elisp-help",
+  "commit": "b0a9bf5046a4c3be8a83004d506bd258a6f7ff15",
+  "sha256": "0a4wvz52hkcw5nrml3h1yp8w97vg5jw22wnpfbb827zh7iwb259h",
+  "fetcher": "github",
+  "repo": "tarsius/org-elisp-help",
+  "unstable": {
+   "version": [
+    20161122,
+    55
+   ],
+   "deps": [
+    "cl-lib",
+    "org"
+   ],
+   "commit": "3e33ab1a2933dd7f2782ef91d667a37f12d633ab",
+   "sha256": "088pbafz1x4z7qi70cjbrvfrcdrjp4zy0yl115klbidshqhxycmj"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "org"
+   ],
+   "commit": "3e33ab1a2933dd7f2782ef91d667a37f12d633ab",
+   "sha256": "088pbafz1x4z7qi70cjbrvfrcdrjp4zy0yl115klbidshqhxycmj"
+  }
+ },
+ {
+  "ename": "org-emms",
+  "commit": "4fa5c221790acca40316510fd495951f418c8e15",
+  "sha256": "0g7d2y1dgy2hgiwaxz9crxf3nv8aqzxhyf2jmnmhphdv2s9ipvjw",
+  "fetcher": "gitlab",
+  "repo": "jagrg/org-emms",
+  "unstable": {
+   "version": [
+    20181010,
+    1114
+   ],
+   "commit": "07a8917f3d628c32e5de1dbd118ac08203772533",
+   "sha256": "1sqsm5sv311xfdk4f4rsnvprdf2v2vm7l1b3vqi7pc0g8adlnw1d"
+  }
+ },
+ {
+  "ename": "org-evil",
+  "commit": "17a4772d409aa5dbda5fb84d86c237fd2653c70b",
+  "sha256": "0wvd201k9b9ghg39rwbah6rw8b7hyyd27vvqjynjwbk3v8rp5zyn",
+  "fetcher": "github",
+  "repo": "GuiltyDolphin/org-evil",
+  "unstable": {
+   "version": [
+    20180620,
+    1517
+   ],
+   "deps": [
+    "dash",
+    "evil",
+    "monitor",
+    "org"
+   ],
+   "commit": "3b4620edc606412ef75c0b5aa637af22486eb126",
+   "sha256": "0aqya9l9s55h5wd728iz15f53p5xajrfk8pn9gjxnw0i8m4d09sd"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "deps": [
+    "dash",
+    "evil",
+    "monitor",
+    "org"
+   ],
+   "commit": "3b4620edc606412ef75c0b5aa637af22486eb126",
+   "sha256": "0aqya9l9s55h5wd728iz15f53p5xajrfk8pn9gjxnw0i8m4d09sd"
+  }
+ },
+ {
+  "ename": "org-fancy-priorities",
+  "commit": "712902ae1cf967ceb2052266ed3244e92998f8a7",
+  "sha256": "13rljgi5fbzlc16cxqj49yg47a5qpyxzj0lswhdyhgzncp1fyq7p",
+  "fetcher": "github",
+  "repo": "harrybournis/org-fancy-priorities",
+  "unstable": {
+   "version": [
+    20180328,
+    2331
+   ],
+   "commit": "819bb993b71e7253cefef7047306ab4e0f9d0a86",
+   "sha256": "13cyzlx0415i953prq6ch7r5iy23c1pz116bdxi5yqags4igh4wv"
+  }
+ },
+ {
+  "ename": "org-fragtog",
+  "commit": "b1136eb881139e51588b6110b9f13544b469259a",
+  "sha256": "09zb72l6hsvwi5kgmrihjlagdqbcr6nwj9a4c32hp9xm14rpd75h",
+  "fetcher": "github",
+  "repo": "io12/org-fragtog",
+  "unstable": {
+   "version": [
+    20200215,
+    2217
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "8eca8084cc025c43ce2677b38ed4919218dd9ad9",
+   "sha256": "0irr4l40djgmgvg41gx7kqza6zwi2mz69drq7dyrr10pz5hd0ikp"
+  }
+ },
+ {
+  "ename": "org-gcal",
+  "commit": "d97c701819ea8deaa8a9664db1f391200ee52c4f",
+  "sha256": "014h67ba0cwi4i1llngypscyvyrm74ljh067i3iapx5a18q7xw5v",
+  "fetcher": "github",
+  "repo": "kidd/org-gcal.el",
+  "unstable": {
+   "version": [
+    20200501,
+    24
+   ],
+   "deps": [
+    "alert",
+    "persist",
+    "request",
+    "request-deferred"
+   ],
+   "commit": "2ee2b31547e6f4e33db70fb812d552e55d612fd6",
+   "sha256": "1gwz1avfbvn5pf72qfg3q6v8qhjihs89avzgx4v7mx6x34fgnpby"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "alert",
+    "cl-lib",
+    "org",
+    "request-deferred"
+   ],
+   "commit": "badd3629e6243563c30ff1dd0452b7601f6cc036",
+   "sha256": "1pxfcyf447h18220izi8qlnwdr8rlwn5kds8gr5i1v90s6hpa498"
+  }
+ },
+ {
+  "ename": "org-gnome",
+  "commit": "4f7ebd2d2312954d098fe4afd07c3d02b4df475d",
+  "sha256": "0c37gfs6xs0jbvg6ypd4z5ip1khm26wr5lxgmv1dzcc383ynzg0v",
+  "fetcher": "github",
+  "repo": "NicolasPetton/org-gnome.el",
+  "unstable": {
+   "version": [
+    20150614,
+    1457
+   ],
+   "deps": [
+    "alert",
+    "gnome-calendar",
+    "telepathy"
+   ],
+   "commit": "122e14cf6f8104150a65246a9a7c10e1d7939862",
+   "sha256": "0jd5zwykc6fkkaj8qhg7wgmrjn47054x242b5s03w8ylyczqbcg3"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "alert",
+    "gnome-calendar",
+    "telepathy"
+   ],
+   "commit": "1012d47886cfd30eed25b73d9f18e475e0155f88",
+   "sha256": "0b57ik05iax2h3nrj96kysbk4hxmxlaabd0n6lv1xsayrlli3sj1"
+  }
+ },
+ {
+  "ename": "org-grep",
+  "commit": "5ed0682fb9130a62e628d4e64747bb9c70456681",
+  "sha256": "0kpgizy0zxnlmyh0prwdll62ri2c1l4sb0yrkl7yw17cr4gxmkkz",
+  "fetcher": "github",
+  "repo": "emacsorphanage/org-grep",
+  "unstable": {
+   "version": [
+    20151202,
+    1229
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "5bdd04c0f53b8a3d656f36ea17bba3df7f0cb684",
+   "sha256": "10jwqzs431mnwz717qdmcn0v8raklw41sbxbnkb36yrgznk8c09c"
+  }
+ },
+ {
+  "ename": "org-id-cleanup",
+  "commit": "2d59dfe413397ba07a74b7d344e9f9a73c0e3db0",
+  "sha256": "1jv4ffjd61p3p8qkki798yzky96k53hbnph4xfz77xkc8i2d6rxf",
+  "fetcher": "github",
+  "repo": "marcIhm/org-id-cleanup",
+  "unstable": {
+   "version": [
+    20200516,
+    1339
+   ],
+   "deps": [
+    "dash",
+    "org"
+   ],
+   "commit": "05d57840893d9ae8146ed41d29d1f0571c05ded8",
+   "sha256": "1rsw4zgvxp77ncq4z98hcy6qsg6j72glx1y69rwfblg87lz3mj6d"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    8
+   ],
+   "deps": [
+    "dash",
+    "org"
+   ],
+   "commit": "05d57840893d9ae8146ed41d29d1f0571c05ded8",
+   "sha256": "1rsw4zgvxp77ncq4z98hcy6qsg6j72glx1y69rwfblg87lz3mj6d"
+  }
+ },
+ {
+  "ename": "org-if",
+  "commit": "09df84b60c46678ad40d8dabc08fcfe518f5ad79",
+  "sha256": "0h0jdyawz2j4mp33w85z8q77l37qid8palvw5n4z379qa0wr5h96",
+  "fetcher": "gitlab",
+  "repo": "elzair/org-if",
+  "unstable": {
+   "version": [
+    20150920,
+    1513
+   ],
+   "commit": "fab602cc1bbee7a4e99c0083e129219d3f9ed2e8",
+   "sha256": "1iyqv34b7q2k73srshcnpvfzcadq47w4rzkqp6m1d3ajk8x2vypq"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "fab602cc1bbee7a4e99c0083e129219d3f9ed2e8",
+   "sha256": "1iyqv34b7q2k73srshcnpvfzcadq47w4rzkqp6m1d3ajk8x2vypq"
+  }
+ },
+ {
+  "ename": "org-index",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "092q92hwvknwm3v2shp8dm59qdamfivx9z9v23msysy7x2mhg98f",
+  "fetcher": "github",
+  "repo": "marcIhm/org-index",
+  "unstable": {
+   "version": [
+    20200516,
+    1343
+   ],
+   "deps": [
+    "dash",
+    "org"
+   ],
+   "commit": "f868df4aa4f49484cf818627251b7c7282d8d20e",
+   "sha256": "14mr03sjjkxix0sphnp7flr6f9z20g5x7ifv3hl2nvmh4794cf6n"
+  },
+  "stable": {
+   "version": [
+    6,
+    2,
+    1
+   ],
+   "deps": [
+    "dash",
+    "org"
+   ],
+   "commit": "f868df4aa4f49484cf818627251b7c7282d8d20e",
+   "sha256": "14mr03sjjkxix0sphnp7flr6f9z20g5x7ifv3hl2nvmh4794cf6n"
+  }
+ },
+ {
+  "ename": "org-iv",
+  "commit": "e7db0c34f0f6fb9c3b9e581a74304cc9a26ed342",
+  "sha256": "1akhabp6mdw1h7zms6ahlfvwizl07fwsizwxpdzi4viggfccsfwx",
+  "fetcher": "github",
+  "repo": "kuangdash/org-iv",
+  "unstable": {
+   "version": [
+    20171001,
+    1022
+   ],
+   "deps": [
+    "cl-lib",
+    "impatient-mode",
+    "org"
+   ],
+   "commit": "7f2bb1b32647655fd9d6684f6f09dcc66b61b0cd",
+   "sha256": "0s3fi8sk7jm5vr0fz20fbygm4alhpirv0j20jfi1pab14yhhf34h"
+  }
+ },
+ {
+  "ename": "org-jira",
+  "commit": "e0a2fae6eecb6b4b36fe97ad99691e2c5456586f",
+  "sha256": "1sbypbz00ki222zpm47yplyprx7h2q076b3l07qfilk0sr8kf4ql",
+  "fetcher": "github",
+  "repo": "ahungry/org-jira",
+  "unstable": {
+   "version": [
+    20200505,
+    137
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "request"
+   ],
+   "commit": "c3c69aaeff743da4be415579444732c2904e9d3b",
+   "sha256": "02bl3qgplfn45wqj5gi43cz54j0i3c2nd2yn1ay2wjmdscm6akb0"
+  },
+  "stable": {
+   "version": [
+    4,
+    3,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "request",
+    "s"
+   ],
+   "commit": "3a6c9fd6886f9dbd11b055fb3bf54513fa278940",
+   "sha256": "1l80r2a9zzbfk2c78i40h0ww79vm9v4j6xi2h5i4w9kqh10rs6h2"
+  }
+ },
+ {
+  "ename": "org-journal",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "1npzqxn1ssigq7k1nrxz3xymxaazby0ddgxq6lgw2a1zjmjm4h2b",
+  "fetcher": "github",
+  "repo": "bastibe/org-journal",
+  "unstable": {
+   "version": [
+    20200514,
+    1648
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "2c43b10eed0659f8e47797e5e53d2973f939284d",
+   "sha256": "1ppzq6hx7nc2iy6pnpgxd39znc701mgqbi2v4v71a0yp8zl6kbgs"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "commit": "8eda1119f561561b993eea72a550a6b1f0ef35e1",
+   "sha256": "18dqd0jy2x530lk0h4fcn9cld9qh4w7b3vxa60fpiia628vsv1dg"
+  }
+ },
+ {
+  "ename": "org-journal-list",
+  "commit": "7c0186e507b6b309a35abb076988da740cee8f84",
+  "sha256": "1aw6pf747n3z00xg8viakckm0bb6m9hnrkxphhhsfvqqgwfpzkb9",
+  "fetcher": "github",
+  "repo": "huytd/org-journal-list",
+  "unstable": {
+   "version": [
+    20190221,
+    2052
+   ],
+   "commit": "2b26d00181bb49bff64b31ad020490acd1b6ae02",
+   "sha256": "0bcj9b7c4pyyvxlgnysl5lhs9ndp60xwizd85zrkd2mh2m8sbq9v"
+  }
+ },
+ {
+  "ename": "org-kanban",
+  "commit": "a9f3a10c126fa43a6fa60ee7f8e50c7a9661dbc1",
+  "sha256": "1flgqa2pwzw6b2zm3j09i9bvz1i8k03mbwj6l75yrk29lh4njq41",
+  "fetcher": "github",
+  "repo": "gizmomogwai/org-kanban",
+  "unstable": {
+   "version": [
+    20200329,
+    543
+   ],
+   "deps": [
+    "dash",
+    "org",
+    "s"
+   ],
+   "commit": "544aac80f1c7113cfe42cf1a2b89f5ca6bd9ead6",
+   "sha256": "0sx4mvr5g2ipj1s1jg82vr1q90jkq9lm0pg5cdab8lrx464lqf2c"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    23
+   ],
+   "deps": [
+    "dash",
+    "org",
+    "s"
+   ],
+   "commit": "93f8135f2b7ae2d5ed807cb92954640796bbe273",
+   "sha256": "1wxc4y5swldqv3jqdz9gj1gx30r4xzis8g2m572bbsrdfjf04c26"
+  }
+ },
+ {
+  "ename": "org-kindle",
+  "commit": "29d08205620d51d4d76e3a4a6124884b5a6b9db7",
+  "sha256": "17sxvyh3z5pn2353iz2v6xjxp98yxwd4n7wkqsa9nwihsw5mmrrw",
+  "fetcher": "github",
+  "repo": "stardiviner/org-kindle",
+  "unstable": {
+   "version": [
+    20190315,
+    439
+   ],
+   "deps": [
+    "cl-lib",
+    "seq"
+   ],
+   "commit": "612a2894bbbff8a6cf54709d591fee86005755de",
+   "sha256": "1h3pbjiy5v8lp3p6dry4jk3pvdp7hpkc517d3w9ldhz6nmaiccgg"
+  }
+ },
+ {
+  "ename": "org-link-travis",
+  "commit": "52c7f9539630e5ac7748fe36fd27c3486649ab74",
+  "sha256": "0hj4x7cw7a3ry8xislkz9bnavy77z4cpmnvns02yi3gnib53mlfs",
+  "fetcher": "github",
+  "repo": "aki2o/org-link-travis",
+  "unstable": {
+   "version": [
+    20140405,
+    2327
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "596615ad8373d9090bd4138da683524f0ad0bda5",
+   "sha256": "1797pd264zn19zk93nifyw6pwk2a7wrpfir373qclk601yv2g5h8"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "596615ad8373d9090bd4138da683524f0ad0bda5",
+   "sha256": "1797pd264zn19zk93nifyw6pwk2a7wrpfir373qclk601yv2g5h8"
+  }
+ },
+ {
+  "ename": "org-listcruncher",
+  "commit": "5bed5078a3e56a825be61d158ca8321763b92f7c",
+  "sha256": "05vi7a03gj1waaqcjnkgpij4r45r2087xg7kgfs6ki8zhsyws23q",
+  "fetcher": "github",
+  "repo": "dfeich/org-listcruncher",
+  "unstable": {
+   "version": [
+    20180815,
+    603
+   ],
+   "deps": [
+    "cl-lib",
+    "seq"
+   ],
+   "commit": "65c09c5deba065752eb88875c54dc26abcdfaffb",
+   "sha256": "11chlfvil0wbvzaplzdymn4ajz85956hcs8bh3zds6ij806mqa4y"
+  }
+ },
+ {
+  "ename": "org-lookup-dnd",
+  "commit": "77a8cd0ff954ab87fa57cc6544146b5937779a3b",
+  "sha256": "06g2w75nyk354fpg8b8w1v4xzsiwx3sglwxk3azrn2g4sdlammmz",
+  "fetcher": "gitlab",
+  "repo": "maltelau/org-lookup-dnd",
+  "unstable": {
+   "version": [
+    20190622,
+    2224
+   ],
+   "deps": [
+    "org-pdfview"
+   ],
+   "commit": "bba86a9b9979bd79e9bfaf4a7b472682b9435490",
+   "sha256": "1ndd1iw207jnv0mib2r6mxldba4c4nna69wdvj8mzynn6ldxg5bk"
+  }
+ },
+ {
+  "ename": "org-make-toc",
+  "commit": "df87749128bcfd27ca93a65084a2e88cd9ed5c3f",
+  "sha256": "0xaw3d1axvln4pr7p0jnqf0j6fd1g6cra1gykvf6y12zx02xkchh",
+  "fetcher": "github",
+  "repo": "alphapapa/org-make-toc",
+  "unstable": {
+   "version": [
+    20200409,
+    1436
+   ],
+   "deps": [
+    "dash",
+    "org",
+    "s"
+   ],
+   "commit": "26fbd6a7e1e7f8e473fe3a5f74faec715c3a05aa",
+   "sha256": "08gkzl0cbgkyg31sxafqmq6v1hjgr2q62vnvncrdnhs3ly54inf8"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "deps": [
+    "dash",
+    "org",
+    "s"
+   ],
+   "commit": "43d4a2490a048b01ca5a6f44c5b4f24a458dfc95",
+   "sha256": "180ji6nnj6qj0rs1rdp1zlcrfsqf7ikb44ym8icbp5d6al2s4hnr"
+  }
+ },
+ {
+  "ename": "org-mime",
+  "commit": "521678fa13884dae69c2b4b7a2af718b2eea4b28",
+  "sha256": "14154pajl2bbawdd8iqfwgc67pcjp2lxl6f92c62nwq12wkcnny6",
+  "fetcher": "github",
+  "repo": "org-mime/org-mime",
+  "unstable": {
+   "version": [
+    20200502,
+    1133
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "484bf3b0b8af461805b9e30d175510c031bcfbc3",
+   "sha256": "1shp3xfjifvwcj67mvfiv0dwpwyz846s6xa5zs269fwbvdvmx65q"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "484bf3b0b8af461805b9e30d175510c031bcfbc3",
+   "sha256": "1shp3xfjifvwcj67mvfiv0dwpwyz846s6xa5zs269fwbvdvmx65q"
+  }
+ },
+ {
+  "ename": "org-mind-map",
+  "commit": "3c8683ee547a6a99f8d258561c3ae157b1f427f2",
+  "sha256": "07wffzf4dzfj8bplwhr9yscm6l9wbz8y01j0jc8cw943z5b8pdgs",
+  "fetcher": "github",
+  "repo": "theodorewiles/org-mind-map",
+  "unstable": {
+   "version": [
+    20180826,
+    2340
+   ],
+   "deps": [
+    "dash",
+    "org"
+   ],
+   "commit": "95347b2f9291f5c5eb6ebac8e726c03634c61de3",
+   "sha256": "0mkmh1ascxhfgbqdzcr6d60k4ldnh3l8dylw4m7wglz15hm3ixbm"
+  }
+ },
+ {
+  "ename": "org-mobile-sync",
+  "commit": "f0a8eb0eefe88b4ea683a4743c0f8393506e014b",
+  "sha256": "152mswykbz3m9w1grpsvb6wi9rg1vf3clnrl8qy6v911c0hy1s9c",
+  "fetcher": "git",
+  "url": "https://framagit.org/steckerhalter/org-mobile-sync.git",
+  "unstable": {
+   "version": [
+    20180606,
+    524
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "06764b943a528827df1e2acc6bc7806cc2c1351f",
+   "sha256": "0qdgs965ppihsz2ihyykdinr4n7nbb89d384z7kn985b17263lvn"
+  }
+ },
+ {
+  "ename": "org-mru-clock",
+  "commit": "b36bf1c1faa4d7e38254416a293e56af96214136",
+  "sha256": "1arww5x6vdyyn1bwxry91w88phbr9l6nk8xxrw40iqmmbhggahgm",
+  "fetcher": "github",
+  "repo": "unhammer/org-mru-clock",
+  "unstable": {
+   "version": [
+    20200128,
+    1208
+   ],
+   "commit": "4fb77d9bb876e368e596d18324115cef6c1c71f3",
+   "sha256": "02js518d8h2qp8dxmw479gw61bdj3019j183hz6x1nn49ljx000k"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    2
+   ],
+   "commit": "50bf0ec93b3c60eaed7272149bd317bba69a5b6f",
+   "sha256": "1ydq2y1zibh9mzfpw598nsci6aw4nsnsjc7wv8xjma7pwkzz8wfd"
+  }
+ },
+ {
+  "ename": "org-msg",
+  "commit": "6aec5f72baa870fe57df0fd366696329651a221f",
+  "sha256": "0pznyvjks4ga204nv9v1rn7y7ixki437gknp2h854kpf6pdlb2jy",
+  "fetcher": "github",
+  "repo": "jeremy-compostella/org-msg",
+  "unstable": {
+   "version": [
+    20200513,
+    1617
+   ],
+   "deps": [
+    "htmlize"
+   ],
+   "commit": "d8a571c720b2b7dec9115fd85b114ae46d4ac4b7",
+   "sha256": "094nrd7fy7m7m758gks14kz7yfdcclcwvbz8p90dwg3dv311hii2"
+  }
+ },
+ {
+  "ename": "org-multi-wiki",
+  "commit": "8138002578ef14e30561cac159e9a66406a4201a",
+  "sha256": "0wbybr9vf4hcwyi9rab8sm1xwxqmy7mbjv1jmm78j51kjh0cpgkj",
+  "fetcher": "github",
+  "repo": "akirak/org-multi-wiki",
+  "unstable": {
+   "version": [
+    20200419,
+    1833
+   ],
+   "deps": [
+    "dash",
+    "org",
+    "org-ql",
+    "s"
+   ],
+   "commit": "8b056103d6f5320563e9fd794a008fd4e0719702",
+   "sha256": "1xmj2p9hcpf1nld0gsnxq12kaljh0p195fy24v23l8ygykhmqw17"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "deps": [
+    "dash",
+    "org",
+    "org-ql",
+    "s"
+   ],
+   "commit": "80791ea872939df0578dc3a2992a2f7fd5618971",
+   "sha256": "0avg5xwnb3c9ylj9dqdcqmh8kykl98jsr6cl3rrivkj7l47i1rl0"
+  }
+ },
+ {
+  "ename": "org-multiple-keymap",
+  "commit": "c52a1ea0afa8e5f439b7ac987b79c49eb08fe95a",
+  "sha256": "104vcwawrzl99nfj3afq1mh83yirhscwfa1xw7z84ikrf6m0xir7",
+  "fetcher": "github",
+  "repo": "emacsattic/org-multiple-keymap",
+  "unstable": {
+   "version": [
+    20191017,
+    1920
+   ],
+   "deps": [
+    "cl-lib",
+    "org"
+   ],
+   "commit": "4eb8aa0aada012b2346cc7f0c55e07783141a2c3",
+   "sha256": "0ivgvwrakgr527lylz9si1z3ip3n7bx02pj1acw8ab8swp1cxmy3"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "org"
+   ],
+   "commit": "20eb3be6be9f0abbad9f0d007e40cb00c8109201",
+   "sha256": "0yxfhzygiki8sha1dddac4g72r51yi4jnga2scmk51f9jgwqbihp"
+  }
+ },
+ {
+  "ename": "org-notebook",
+  "commit": "04149b1f158e857ea824fe120372ac52a000adcf",
+  "sha256": "045xqmrik1s83chl7l7fnlav2p76xrfj21kacpjj215saz1f8nld",
+  "fetcher": "github",
+  "repo": "Rahi374/org-notebook",
+  "unstable": {
+   "version": [
+    20170322,
+    452
+   ],
+   "deps": [
+    "cl-lib",
+    "org"
+   ],
+   "commit": "86042d866bf441e2c9bb51f995e5994141b78517",
+   "sha256": "0znxn6zzc9645m3wmkryf4xwjskf7gwylrg6z2kmr1wpjlpfwb01"
+  }
+ },
+ {
+  "ename": "org-noter",
+  "commit": "4a2bc0d95dc2744277d6acbba1f7483b4c14d75c",
+  "sha256": "0vsc2b1yz9lw0zv1vnm722pl35kxpwhcdi7h6mijhnw8vv7rhixf",
+  "fetcher": "github",
+  "repo": "weirdNox/org-noter",
+  "unstable": {
+   "version": [
+    20191020,
+    1212
+   ],
+   "deps": [
+    "cl-lib",
+    "org"
+   ],
+   "commit": "9ead81d42dd4dd5074782d239b2efddf9b8b7b3d",
+   "sha256": "1ysz8v2yakchs4va5niaf5rnydwrmz721hbaa2l63wjw0nsmi7l3"
+  },
+  "stable": {
+   "version": [
+    1,
+    4,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "org"
+   ],
+   "commit": "32900872c82195e757ec6249a329490a0ca2199e",
+   "sha256": "1vwfpdi7hfkxx4vi0cwg7rvqby3i0mymzdkyzrqzv30dazmcjpag"
+  }
+ },
+ {
+  "ename": "org-noter-pdftools",
+  "commit": "caa6bf82ea660f8e1d68e45cc99c6f6427cf1327",
+  "sha256": "0k11njy2l8pxwpmxspy6qwvp1041p99xp9ha6pjxp3m3f7rik32h",
+  "fetcher": "github",
+  "repo": "fuxialexander/org-pdftools",
+  "unstable": {
+   "version": [
+    20200418,
+    929
+   ],
+   "deps": [
+    "org",
+    "org-noter",
+    "org-pdftools",
+    "pdf-tools"
+   ],
+   "commit": "8cc15bb8014ed1f047eecc0abd8bf447f86c0505",
+   "sha256": "173118fplpz575dcbncrjjpid2ni0acsi9130r210vl6hal7yz08"
+  }
+ },
+ {
+  "ename": "org-octopress",
+  "commit": "fba6c3c645ba903f636814b5a2bb1baca0b5283b",
+  "sha256": "0r6ms9j4xxsrik4206g7gz4wz41wr4ylpal6yfqs4hhz88yhxrhw",
+  "fetcher": "github",
+  "repo": "yoshinari-nomura/org-octopress",
+  "unstable": {
+   "version": [
+    20170821,
+    415
+   ],
+   "deps": [
+    "ctable",
+    "org",
+    "orglue"
+   ],
+   "commit": "38598ef98d04076a8eb78d549907ddfde8d3a652",
+   "sha256": "0bmj5wkwidj1v3b8ipligr0nkfdaxm82717nz8fqidz967q4xbk6"
+  }
+ },
+ {
+  "ename": "org-onenote",
+  "commit": "7705ee9a8733733664b6214bf4eec15d640c6895",
+  "sha256": "0qgmizzryb6747yd80d3nic3546f4h8vjd6c30jr99vv2ildjsfk",
+  "fetcher": "github",
+  "repo": "ifree/org-onenote",
+  "unstable": {
+   "version": [
+    20171008,
+    500
+   ],
+   "deps": [
+    "oauth2",
+    "org",
+    "request"
+   ],
+   "commit": "5ce5cf4edb143180e0b185ac26826d39ae5bc929",
+   "sha256": "1jlnnb04ichcl155lklvjw91l8j1dvg77bv1815chak226aq4xqj"
+  }
+ },
+ {
+  "ename": "org-outline-numbering",
+  "commit": "6dbd71c2176c1160e8418631d69f4bcba75845fd",
+  "sha256": "131cpvfsiv92bbicq5n7dlr6k643sk7xw31xs0lwmw4pxq44m8sg",
+  "fetcher": "gitlab",
+  "repo": "andersjohansson/org-outline-numbering",
+  "unstable": {
+   "version": [
+    20180705,
+    1501
+   ],
+   "deps": [
+    "cl-lib",
+    "org",
+    "ov"
+   ],
+   "commit": "22014917dd7e751c46fa13e1e836c2d0265ce82f",
+   "sha256": "0gjvd7xd9kl06cgdyya2qbl7r4a9y4zfq1ci0109w5axs3zjin1m"
+  }
+ },
+ {
+  "ename": "org-outlook",
+  "commit": "804a4b6802d2cf53e5415d956f0b4772853f4c69",
+  "sha256": "0cn8h6yy67jr5h1yxsfqmr8q7ii4f99pgghfp821m01pj55qyjx9",
+  "fetcher": "github",
+  "repo": "mattfidler/org-outlook.el",
+  "unstable": {
+   "version": [
+    20160705,
+    1338
+   ],
+   "commit": "ec32d8d9d8ffd17e6de4de0b52fc3f5ad9b4cc0d",
+   "sha256": "1la7g9qzn8wbfzc2zd6gddi1zl145b35311l66sjyffidmhgfw8d"
+  },
+  "stable": {
+   "version": [
+    0,
+    11
+   ],
+   "commit": "070c37d017ccb71d94c3c69c99632fa6570ec2cc",
+   "sha256": "15fy6xpz6mk4j3nkrhiqal2dp77rhxmk8a7xiw037xr1jgq9sd9a"
+  }
+ },
+ {
+  "ename": "org-page",
+  "commit": "97287dd40d3ebd80c9804589e93626faad88fb91",
+  "sha256": "0680fbcq0vv1w4kyk99crrcx5rhm8qpz7bgaab2gxndw1za7nxfm",
+  "fetcher": "github",
+  "repo": "sillykelvin/org-page",
+  "unstable": {
+   "version": [
+    20170807,
+    224
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "git",
+    "ht",
+    "htmlize",
+    "mustache",
+    "org",
+    "simple-httpd"
+   ],
+   "commit": "d0e55416174a60d3305e97ca193b333f4cccba4f",
+   "sha256": "0l1jkap8wjprsaglys5hy5ijhaxfv8bzry9axqcfg6xr0bmbyhm7"
+  },
+  "stable": {
+   "version": [
+    0,
+    41
+   ],
+   "deps": [
+    "ht",
+    "htmlize",
+    "mustache",
+    "org"
+   ],
+   "commit": "09febf89d8dcb226aeedf8164169b31937b64439",
+   "sha256": "0zc20m63a1iz9aziid5jsvcbl86k9dg9js4k3almchh55az4a0i3"
+  }
+ },
+ {
+  "ename": "org-parser",
+  "commit": "d3828ad7599d13728b5571b882344c3ada434b85",
+  "sha256": "1galc2w2n2qnwxknym4wid1ldinf8fyf8vvh4ihnckcbh081nrhb",
+  "fetcher": "hg",
+  "url": "https://hg.sr.ht/~zck/org-parser",
+  "unstable": {
+   "version": [
+    20200417,
+    301
+   ],
+   "deps": [
+    "dash",
+    "ht"
+   ],
+   "commit": "fd4cb7035ff649378cc968b1ec2c386b5c565706",
+   "sha256": "1hnd4zhhwrd6gr1skvc64a3z9k3nmhwgcyy1cp2jfyhk0iwsrqfm"
+  }
+ },
+ {
+  "ename": "org-password-manager",
+  "commit": "fba84d698f7d16ffc0dc16618efcd1cdc0b39d79",
+  "sha256": "0wxvl6ypgn6ky1z3dh33ya3rh73znkh5f8qhqwfmwp7hy2mbl4la",
+  "fetcher": "git",
+  "url": "https://github.com/leafac/org-password-manager",
+  "unstable": {
+   "version": [
+    20180227,
+    1810
+   ],
+   "deps": [
+    "dash",
+    "org",
+    "s"
+   ],
+   "commit": "4b30a36e71182553a02e4dd415369290d98ec03a",
+   "sha256": "1a6i3g032c5xzsnaf7rprn22kk68y1ay3w21p3q52p3lvlzhnfis"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "org",
+    "s"
+   ],
+   "commit": "d3a33ddfe583180bdb76cfb8bbd772e0078b24a3",
+   "sha256": "0pqmnhd3qdg06agj6h8v8lm4m5q8px0qmd7a1bfn6i5g2bq9zrck"
+  }
+ },
+ {
+  "ename": "org-pdftools",
+  "commit": "d52346a042a72b76729d259c7f12f45d38ac27cd",
+  "sha256": "1pgfx0zgdp9kg8mxqxm5qac7vnd0j1ghfwq04rvqi9r1d51zpynl",
+  "fetcher": "github",
+  "repo": "fuxialexander/org-pdftools",
+  "unstable": {
+   "version": [
+    20200422,
+    1350
+   ],
+   "deps": [
+    "org",
+    "org-noter",
+    "pdf-tools"
+   ],
+   "commit": "8cc15bb8014ed1f047eecc0abd8bf447f86c0505",
+   "sha256": "173118fplpz575dcbncrjjpid2ni0acsi9130r210vl6hal7yz08"
+  }
+ },
+ {
+  "ename": "org-picklink",
+  "commit": "c6c44a3e5a1c5e4acdf76c4d6f2f4b695aa6938e",
+  "sha256": "0gr4psgps9775hh0pvcyq3x2irrzkzpm5ghcnc9ddp5hn41yv57m",
+  "fetcher": "github",
+  "repo": "tumashu/org-picklink",
+  "unstable": {
+   "version": [
+    20191203,
+    59
+   ],
+   "commit": "f79040ed988bdeec63b098b187e00f2b80d3d570",
+   "sha256": "0a0dzg8w617sn079mshihfv5sm74xphab81kmvi1dqcc5iyi15kh"
+  }
+ },
+ {
+  "ename": "org-pivotal",
+  "commit": "c1257d38bbd3a9944135b000e962f30ab28f5464",
+  "sha256": "1gv4968akh2wx92d7q1i1mpl9ndygkq8ssdwg6cf19wp8mk18088",
+  "fetcher": "github",
+  "repo": "org-pivotal/org-pivotal",
+  "unstable": {
+   "version": [
+    20191116,
+    530
+   ],
+   "deps": [
+    "a",
+    "dash",
+    "dash-functional",
+    "request"
+   ],
+   "commit": "f073f3ed8c2e78f5080c617d01b1f6bb3df63d1c",
+   "sha256": "13bqcwlappxz0gsiyvklrf0xv4an6s4id48s3ydi0hki1na9fzzk"
+  }
+ },
+ {
+  "ename": "org-pomodoro",
+  "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228",
+  "sha256": "0pcf8a57fgf6f2pwlnrxc3kwm96lc2ji934y4ck8cm5rwwh05lk7",
+  "fetcher": "github",
+  "repo": "marcinkoziej/org-pomodoro",
+  "unstable": {
+   "version": [
+    20190530,
+    1445
+   ],
+   "deps": [
+    "alert",
+    "cl-lib"
+   ],
+   "commit": "aa07c11318f91219336197e62c47bc7a3d090479",
+   "sha256": "0nbprh2nhnmb7ngp9ndr6zr37ashcsvpi5slv7a37x1dl7j6w1k4"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    0
+   ],
+   "deps": [
+    "alert",
+    "cl-lib"
+   ],
+   "commit": "a6d867865f1a033fb5a09cca6643045d7ebac49c",
+   "sha256": "0r5shgikm34d66i2hblyknbblpg92lb2zc9x4bcb28xkh7m9d0xv"
+  }
+ },
+ {
+  "ename": "org-present",
+  "commit": "aba18f15fbaab115456e6afc9433074558a379f5",
+  "sha256": "09h0cjqjwhqychyrdv1hmiyak677vgf1b94392sdsq3ns70zyjk7",
+  "fetcher": "github",
+  "repo": "rlister/org-present",
+  "unstable": {
+   "version": [
+    20200204,
+    1647
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "9709ca2d04a59959354222ac4d3f8b750785739a",
+   "sha256": "08f8gh2zg4gr4d5ajlcnlj2lsp8nywni4mhw4w4nfa4dwyq7mxgv"
+  }
+ },
+ {
+  "ename": "org-present-remote",
+  "commit": "66b092084565634cac8dd07b7b1694d0ddb236ba",
+  "sha256": "06xxxa8hxfxx47bs6wxi8nbgqc8nm82c3h0yv1ddlm35qfscggks",
+  "fetcher": "gitlab",
+  "repo": "duncan-bayne/org-present-remote",
+  "unstable": {
+   "version": [
+    20191206,
+    533
+   ],
+   "deps": [
+    "elnode",
+    "org-present"
+   ],
+   "commit": "d66aa2022eea65c83b6e5e5b99a1331284a7ec30",
+   "sha256": "1ji1qqhp6hpsmri0lgwzvvn1477njlcv60958xf6akvryk6azqh3"
+  }
+ },
+ {
+  "ename": "org-pretty-tags",
+  "commit": "9ad60399420764d4ef5d6acddae9241205937e78",
+  "sha256": "19cxfjl6c0yhsc7kfjd6imckcvzdsaws3yd1s3nazhnkm3kan3h4",
+  "fetcher": "gitlab",
+  "repo": "marcowahl/org-pretty-tags",
+  "unstable": {
+   "version": [
+    20200303,
+    2201
+   ],
+   "commit": "40fd72f3e701e31813f383fb429d30bb88cee769",
+   "sha256": "0d80cbkdq1d8cqc5nv732gzw4k6m2dpjjix3ycfyf27m4wkbwhmc"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "commit": "549fa6969660dcf0cf9bca5b7341d0cb48ec3b77",
+   "sha256": "12s74if74vw8q5awgrk0d1244ysfgb9kw3dxhypsccsbf413jmii"
+  }
+ },
+ {
+  "ename": "org-preview-html",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1dnr046mk5ngmic2yqcmrnn7pzrrx3sg22rk2pc3vgdxs8bhvhf9",
+  "fetcher": "github",
+  "repo": "lujun9972/org-preview-html",
+  "unstable": {
+   "version": [
+    20180625,
+    619
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "8ba7ecd7ac624f33b3e2395f477bbff4f1ec4efe",
+   "sha256": "1h46v0ckhfzv3fixcfxk7pkmh56c5lana8kpwiknm447q1wmlbx4"
+  }
+ },
+ {
+  "ename": "org-projectile",
+  "commit": "9d7a7ab98f364d3d5e93f83f0cb3d80a95f28689",
+  "sha256": "0xdkd5pkyi6yfqi4przgp5mpklyxfxv0cww285zdlh00rzl935cw",
+  "fetcher": "github",
+  "repo": "IvanMalison/org-projectile",
+  "unstable": {
+   "version": [
+    20190130,
+    1439
+   ],
+   "deps": [
+    "dash",
+    "org-category-capture",
+    "projectile",
+    "s"
+   ],
+   "commit": "96a57a43555e24e5e0d81e79f0fbb47001c41bac",
+   "sha256": "05h9scvnd9ggfwbbl1m124k6sdn5kp9mv2695cril2m4dkr1kyqz"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "dash",
+    "org-category-capture",
+    "projectile",
+    "s"
+   ],
+   "commit": "48f621b595e748c5e03431f237facf258ffc9443",
+   "sha256": "00n2msmwcjjiibrhrvpawzgz6qcjjfy9qnii1iaass0038g4bd89"
+  }
+ },
+ {
+  "ename": "org-projectile-helm",
+  "commit": "6760daac1ef9d9d7ba07e2fc9668873020f901f1",
+  "sha256": "0x79j5yr9wsgzjf1dpp7d4xiji8hgyhr79vb973an5z2r02vnaf4",
+  "fetcher": "github",
+  "repo": "IvanMalison/org-projectile",
+  "unstable": {
+   "version": [
+    20180601,
+    1822
+   ],
+   "deps": [
+    "helm",
+    "org-projectile"
+   ],
+   "commit": "96a57a43555e24e5e0d81e79f0fbb47001c41bac",
+   "sha256": "05h9scvnd9ggfwbbl1m124k6sdn5kp9mv2695cril2m4dkr1kyqz"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "helm",
+    "org-projectile"
+   ],
+   "commit": "48f621b595e748c5e03431f237facf258ffc9443",
+   "sha256": "00n2msmwcjjiibrhrvpawzgz6qcjjfy9qnii1iaass0038g4bd89"
+  }
+ },
+ {
+  "ename": "org-protocol-jekyll",
+  "commit": "6d1ee7c75da91fcf303ea89d148a05ac1e58e23e",
+  "sha256": "18wg489n2d1sx9jk00ki6p2rxkqz67kqwnmy2kb1ga1rmb6x9wfs",
+  "fetcher": "github",
+  "repo": "vonavi/org-protocol-jekyll",
+  "unstable": {
+   "version": [
+    20170328,
+    1639
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "dec064a42d6dfe81dfde7ba59ece5ca103ac6334",
+   "sha256": "1pgc0lfbz6q2x8b5qkk766i5qylql4p0ng732rcqr7rzg6j31gm7"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "c1ac46793eb9bf22b1a601e841947428be5c9766",
+   "sha256": "1cxjzj955rvp0ijbp7ifpmkxdhimz8hqjw5c9gv6zwjqb5iih9ry"
+  }
+ },
+ {
+  "ename": "org-ql",
+  "commit": "4de0a516e002ad0f7475d35258dc4e2d4350696a",
+  "sha256": "19mb7yjffi6m4xa70w3dz4kcg8j3vvwkxmvhiid75sslb8jsss3w",
+  "fetcher": "github",
+  "repo": "alphapapa/org-ql",
+  "unstable": {
+   "version": [
+    20200501,
+    1131
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "f",
+    "map",
+    "org",
+    "org-super-agenda",
+    "ov",
+    "peg",
+    "s",
+    "transient",
+    "ts"
+   ],
+   "commit": "c847afe0b538a1a44c73e40b067831cbea132ba7",
+   "sha256": "0x1dymh7brhfznr6xkgc2vib4p1s5aqxq9kfjlcvi8q0cfasg9b4"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    5
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "f",
+    "org",
+    "org-super-agenda",
+    "ov",
+    "peg",
+    "s",
+    "ts"
+   ],
+   "commit": "5a031bf5c19d274934f80d616d6fde62a6db5786",
+   "sha256": "133x49kr7nf7jhi5r7ww5pydgq8wq3g31klirwgkc29698sd6n78"
+  }
+ },
+ {
+  "ename": "org-radiobutton",
+  "commit": "105043d8cfcb62ed89ddf9870f615519e6f415e7",
+  "sha256": "16ly42iyfh7d34yz4bvdpj3zrlwkw3kmh82gwr25a05mlsdc1d93",
+  "fetcher": "github",
+  "repo": "Fuco1/org-radiobutton",
+  "unstable": {
+   "version": [
+    20180612,
+    1028
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "4182aafbe5ae1bdfb0b07efa435bdba8bbd7199d",
+   "sha256": "0jm5ijs4pjzvlzpqk3k9qqcvaza2lmz2c0fcxf1g357v643bmaj4"
+  }
+ },
+ {
+  "ename": "org-random-todo",
+  "commit": "80fad6244ea3e5bdf7f448c9f62374fae45bae78",
+  "sha256": "0yflppdbkfn2phd21zkjdlidzasfm846mzniay83v3akz0qx31lr",
+  "fetcher": "github",
+  "repo": "unhammer/org-random-todo",
+  "unstable": {
+   "version": [
+    20190214,
+    2057
+   ],
+   "deps": [
+    "alert"
+   ],
+   "commit": "a019c7186ec60c8c7c3657914cdce029811cf4e0",
+   "sha256": "0jyd7cbri0bmi0qzwm7d4fxdfa1224bg6izd63pqqg1x7s67x99z"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    3
+   ],
+   "deps": [
+    "alert"
+   ],
+   "commit": "09228e55f1cc702053d305fdea2b094b548e6dbe",
+   "sha256": "0msgsbz39zc9zqgy1s5kmgcqggamnxr98j6bghyqpkxc96zyvp73"
+  }
+ },
+ {
+  "ename": "org-randomnote",
+  "commit": "d92cb392b23701948176ba12516df5ae6608e950",
+  "sha256": "06i42ig7icap1i1mqzv5cqwhnmsrzpjmjbjjn49nv26ljr3mjw0b",
+  "fetcher": "github",
+  "repo": "mwfogleman/org-randomnote",
+  "unstable": {
+   "version": [
+    20200110,
+    1407
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "org"
+   ],
+   "commit": "ea8cf4385970637efffff8f79e14576ba6d7ad13",
+   "sha256": "0q6xfwf35dy13hif3qrkqyhlwpmpcfsaw3lfwgv0dhi0g7h5bpry"
+  }
+ },
+ {
+  "ename": "org-re-reveal",
+  "commit": "c3e6c90a6b9004fbf0fbc08556f8effbcde8b468",
+  "sha256": "05p8iml0fapi4yf7ky45kf7m0ksz917lxg7c4pdd9hjkjmz29xn9",
+  "fetcher": "gitlab",
+  "repo": "oer/org-re-reveal",
+  "unstable": {
+   "version": [
+    20200512,
+    1701
+   ],
+   "deps": [
+    "htmlize",
+    "org"
+   ],
+   "commit": "a9e9d4ef88417b3af7741a8d8f444ece820e7a3b",
+   "sha256": "0lkqq5n4dspnpiywaparn95wriwh7ffypdykz0a3mmlnv96rizyi"
+  },
+  "stable": {
+   "version": [
+    2,
+    12,
+    2
+   ],
+   "deps": [
+    "htmlize",
+    "org"
+   ],
+   "commit": "fa6f656f561ebb8377bfd904795aec90b4332bbd",
+   "sha256": "19nz77f2r49hqavz50ri222prhrd5890vhvc7jfazbascbcdjbqv"
+  }
+ },
+ {
+  "ename": "org-re-reveal-ref",
+  "commit": "391ef29288507aa2b0ad5d568419b66e5a883b2f",
+  "sha256": "0dd5b4g8ih98ma25jwlvdwgfadc75qcxr9zm74x5r6pr87amcb7n",
+  "fetcher": "gitlab",
+  "repo": "oer/org-re-reveal-ref",
+  "unstable": {
+   "version": [
+    20191022,
+    1426
+   ],
+   "deps": [
+    "org-re-reveal",
+    "org-ref"
+   ],
+   "commit": "1f56a1fc9a52f3815bb2115ebeca3c355688d722",
+   "sha256": "1xrswpkr7hgsb9pj991z4m0820f1nksfad184x0j7kir2xcx0myg"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "org-re-reveal",
+    "org-ref"
+   ],
+   "commit": "abcd622e4edaa5e4480bcd1e7e4953f67c90e036",
+   "sha256": "08ia6gn0x0yydl28dhghifyxz0mrn0asllqg4s449gaz729cxqkd"
+  }
+ },
+ {
+  "ename": "org-recent-headings",
+  "commit": "668b79c179cbdb77c4049e7c620433255f63d808",
+  "sha256": "0b51pyxdk8fdbksx7h1c88sw1liwng8wkjfb1q7w7lglw6f8sjsa",
+  "fetcher": "github",
+  "repo": "alphapapa/org-recent-headings",
+  "unstable": {
+   "version": [
+    20200228,
+    215
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "frecency",
+    "org",
+    "s"
+   ],
+   "commit": "bb9c96bea63a0ce8c0d18e8b8b4b24085d4c9d89",
+   "sha256": "15fa794drfz9vh9jms4ivayys3kf50nry8x06i8v76kn716klv49"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "dash",
+    "frecency",
+    "org"
+   ],
+   "commit": "01633b51ac3958b41cc6c79e6d3714047a91c1e9",
+   "sha256": "0gsrzmg3mssh9s28yjm9m866fnhm1pcligssz1q6brga6dm6f2yy"
+  }
+ },
+ {
+  "ename": "org-recur",
+  "commit": "cbdf8c9a3c7c289ce13542a12769a7f3d7f53d72",
+  "sha256": "0qlpwia2dg4l00jahc3si0mi27gv6zlvkbdx0rq37dh61dabgkiq",
+  "fetcher": "github",
+  "repo": "m-cat/org-recur",
+  "unstable": {
+   "version": [
+    20191216,
+    2353
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "ae20a538b2b4dcec139089bb44f1e4abc5b04f72",
+   "sha256": "1x0gpq7n8crn48nfj2hmbfxd4yj5implgh5mvfnr0k1d89r6gwcn"
+  }
+ },
+ {
+  "ename": "org-redmine",
+  "commit": "017a9dd8029d083ca0c1307f2b83be187c7615e5",
+  "sha256": "0y2pm18nnyzm9wjc0j15v46nf3xi7a0wvspfzi360qv08i54skqv",
+  "fetcher": "github",
+  "repo": "gongo/org-redmine",
+  "unstable": {
+   "version": [
+    20160711,
+    1114
+   ],
+   "commit": "e77d013bc3784947c46a5c53f03cd7d3c68552fc",
+   "sha256": "06miv3mf2a39vkf6mmm5ssc47inqh7dq82khsyc03anz4d4lj822"
+  }
+ },
+ {
+  "ename": "org-ref",
+  "commit": "550e4dcef2f74fbd96474561c1cb6c4fd80091fe",
+  "sha256": "087isxf3z8cgmmniaxr3lpq9jg3sriw88dwp4f0ky286hlvgzw08",
+  "fetcher": "github",
+  "repo": "jkitchin/org-ref",
+  "unstable": {
+   "version": [
+    20200509,
+    1756
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "helm",
+    "helm-bibtex",
+    "htmlize",
+    "hydra",
+    "ivy",
+    "key-chord",
+    "pdf-tools",
+    "s"
+   ],
+   "commit": "4ce80644377f2369efb475bd58a57cf6950d8c41",
+   "sha256": "1j15agy19n0qc4a1750qpyz6wbkwlzasq0cnk16isyq60bszgxx4"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "helm",
+    "helm-bibtex",
+    "hydra",
+    "ivy",
+    "key-chord",
+    "pdf-tools",
+    "s"
+   ],
+   "commit": "db6c52f41faba686a378a8c57356a563f5cef496",
+   "sha256": "0kx6w3zz5gmlmr9bx1mdq1k8ykkbnll6m91z90p6f2xm96j627j6"
+  }
+ },
+ {
+  "ename": "org-repo-todo",
+  "commit": "d17b602004628e17dae0f46f2b33be0afb05f729",
+  "sha256": "0l5ns1hs3i4dhrpmvzl34zc9zysgjkfa7j8apbda59n9jdvml5v1",
+  "fetcher": "github",
+  "repo": "waymondo/org-repo-todo",
+  "unstable": {
+   "version": [
+    20171228,
+    119
+   ],
+   "commit": "f73ebd91399c5760ad52c6ad9033de1066042003",
+   "sha256": "0c74zwmac8x1y8jimdx473v0falpky2kfig8pnaxavz415gb315q"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "commit": "cba6145c6821fd2bbd96a1c9ef2346c281b76ad2",
+   "sha256": "0b57qy87sa8qcki16rgh16ldziay57yd7f98cpinaq0adcrqywy0"
+  }
+ },
+ {
+  "ename": "org-reverse-datetree",
+  "commit": "a08612af18bb620955f7b5450eba3f44cdb60673",
+  "sha256": "0fiwba8hh9617d1zqvxxz2l8p2iq56lkv5c16q7prc69m0s5zhjb",
+  "fetcher": "github",
+  "repo": "akirak/org-reverse-datetree",
+  "unstable": {
+   "version": [
+    20200325,
+    1003
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "afac070eb64cc24917c0ab0e14686258da4916f6",
+   "sha256": "1737r8c5kpb68yb2sixp88fm7fcmr7rvpkpywyxzwgqk30xpsjgq"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    2
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "cfb14dc77768ea901fe5a49662ae10ae3ccc7bde",
+   "sha256": "05qjj4zfm84s7lmlnq2nndmh76cpnhh62rybdiz2fjsj1ns0zjln"
+  }
+ },
+ {
+  "ename": "org-review",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1v7p7pmrjjyj0my9xw55gsn9vvr9aq5x53x13nmspvqg47z6bd98",
+  "fetcher": "github",
+  "repo": "brabalan/org-review",
+  "unstable": {
+   "version": [
+    20160907,
+    537
+   ],
+   "commit": "058e75b7f28d2ad2390290fe17a63d98ef5ab763",
+   "sha256": "1j917zblg5ncls9lbvpzhqal55mx27d3kpvhzvjw2h7x47ji6iym"
+  }
+ },
+ {
+  "ename": "org-rich-yank",
+  "commit": "1261823d88459b6ac42d6c55c157a326173663df",
+  "sha256": "1v0sc90g5sl6b9ylxbk2y8s3pvxkf4v7k2rkzpgpbp4nrq0miy4y",
+  "fetcher": "github",
+  "repo": "unhammer/org-rich-yank",
+  "unstable": {
+   "version": [
+    20181120,
+    1354
+   ],
+   "commit": "d2f350c5296cf05d6c84b02762ba44f09a02b4e3",
+   "sha256": "0gxb0fnh5gxjmld0hnk5hli0cvdd8gjd27m30bk2b80kwldxlq1z"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "commit": "d2f350c5296cf05d6c84b02762ba44f09a02b4e3",
+   "sha256": "0gxb0fnh5gxjmld0hnk5hli0cvdd8gjd27m30bk2b80kwldxlq1z"
+  }
+ },
+ {
+  "ename": "org-roam",
+  "commit": "6358b4fe160432cee80e6c15eac26764a92aac8a",
+  "sha256": "16xab5rz98bavk3vjmb5bxl4r5kpynnw40m0ahy1kl6cax51kx0y",
+  "fetcher": "github",
+  "repo": "org-roam/org-roam",
+  "unstable": {
+   "version": [
+    20200516,
+    1203
+   ],
+   "deps": [
+    "dash",
+    "emacsql",
+    "emacsql-sqlite",
+    "f",
+    "org",
+    "s"
+   ],
+   "commit": "265182a698be6babcbb11718c2821c747b1cff52",
+   "sha256": "159zi0a392p1f8bzlxvfkwmx12xm749cia5m0b3paz23mvvhgzgi"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "dash",
+    "emacsql",
+    "emacsql-sqlite",
+    "f",
+    "org",
+    "s"
+   ],
+   "commit": "27a63b59b176f9d2048de69eb0f525f3c7be8f5f",
+   "sha256": "18ljww204kf1pbgrrnx7bn6177lw1bs3npywbx2k1b5j35c3j8xv"
+  }
+ },
+ {
+  "ename": "org-roam-bibtex",
+  "commit": "2931aad53fbe448c20ec1aec49ab64e4b50a8f43",
+  "sha256": "1s3v0r86x2azmhmvmkk3hc726lcx81igchqyjqry8aibmy79pfnn",
+  "fetcher": "github",
+  "repo": "org-roam/org-roam-bibtex",
+  "unstable": {
+   "version": [
+    20200516,
+    1742
+   ],
+   "deps": [
+    "bibtex-completion",
+    "f",
+    "org",
+    "org-roam",
+    "s"
+   ],
+   "commit": "4d60c7824e028b4bcdbe5dd589e416ec682a63c8",
+   "sha256": "010vgf2dlafx3673dpcpy94273i65pffpn5rz5vqvh0k3wwxhqyn"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    3
+   ],
+   "deps": [
+    "bibtex-completion",
+    "f",
+    "org",
+    "org-roam",
+    "s"
+   ],
+   "commit": "02803c85cb312608172343c2d33bf9684d4bcefe",
+   "sha256": "0403ic5zc2sbrg3ryxk55n52ii4qzg1373h4j8bibfal2jv5i3ir"
+  }
+ },
+ {
+  "ename": "org-rtm",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1hdcwmiv2qivdr2g78xz9fl38wn45vj0bn55dbsdj3qx7k7wgfx6",
+  "fetcher": "github",
+  "repo": "pmiddend/org-rtm",
+  "unstable": {
+   "version": [
+    20160214,
+    1236
+   ],
+   "deps": [
+    "rtm"
+   ],
+   "commit": "adc42ad1fbe92ab447ccc9553780f4456f2508d2",
+   "sha256": "1hn8y9933x5x6lxpijcqx97p3hln69ahabqdsl2bmzda3mxm4bn2"
+  }
+ },
+ {
+  "ename": "org-runbook",
+  "commit": "1ddf4d4e4bd22cc85150c8cbf635ace1f54d64fc",
+  "sha256": "0dih8kv6fhqbfmw2x8ndl6gygssl3g0jr5qkbgbf4wkl5xjls3cg",
+  "fetcher": "github",
+  "repo": "tyler-dodge/org-runbook",
+  "unstable": {
+   "version": [
+    20200504,
+    648
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "ht",
+    "mustache",
+    "s",
+    "seq"
+   ],
+   "commit": "fb4026df05b8e05c6aefd9483bec0e8f43d87d7e",
+   "sha256": "1qf0hpcscplpxd8xzf0yzkh87chbv3fgsfrr7bxh81g0akjiw03j"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    6
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "ht",
+    "mustache",
+    "s",
+    "seq"
+   ],
+   "commit": "53e8876a1587190ec4d103f9e94380f34797ce49",
+   "sha256": "1cyb956s3vshh2i4gd37m1cjxwq5s0xj55pwysgganwgxxw22c8n"
+  }
+ },
+ {
+  "ename": "org-scrum",
+  "commit": "8315b6834d76180fd050b0d5cc2239d604fe2f3b",
+  "sha256": "1bvxcj5675kh7zf839qb0hdy6jlllpqm7ngb5ixx1klax7l8n7pr",
+  "fetcher": "github",
+  "repo": "ianxm/emacs-scrum",
+  "unstable": {
+   "version": [
+    20200131,
+    1129
+   ],
+   "deps": [
+    "cl-lib",
+    "org",
+    "seq"
+   ],
+   "commit": "8b5cd196bb37cebd1aa5b02ed189ad7dadd92078",
+   "sha256": "1bb9njb8wqw5vm1kl63jqql2q5fmms2v6rhvfywr75iiirakxqzz"
+  }
+ },
+ {
+  "ename": "org-seek",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "04ay4abm03kn15cn45ldrzh2rw6gr6ia3qrj7hn5crd75ppwvln7",
+  "fetcher": "github",
+  "repo": "stardiviner/org-seek.el",
+  "unstable": {
+   "version": [
+    20161217,
+    502
+   ],
+   "deps": [
+    "ag"
+   ],
+   "commit": "1f51e6634e3b9a6a29d335d0d14370a6ffef2265",
+   "sha256": "0aq3af6fd16lm9iirzya6hmc8g48kfp8pc4dx51mgb5d6jjiizkv"
+  }
+ },
+ {
+  "ename": "org-shoplist",
+  "commit": "49b2c70cc503df5c2981a560b7b5e3262ba7c2e1",
+  "sha256": "0x94hic4w6xmycrr7p72il5hv3r92dbzhpp4mm4vd0jypjm5r32q",
+  "fetcher": "github",
+  "repo": "lordnik22/org-shoplist",
+  "unstable": {
+   "version": [
+    20190809,
+    2156
+   ],
+   "commit": "9591a4747eb2e5cab53203a120f9b854c75e629b",
+   "sha256": "1b721xp6dn54x2j73ysnzw9qxd9fxpvnqiy2y0issmz6xmccgzac"
+  }
+ },
+ {
+  "ename": "org-sidebar",
+  "commit": "fa65cb74eabe0c46094c64f1384e31b31a6a58e5",
+  "sha256": "0grzh47b6nnk1y7xqd1dfy2cyq688g589wfd5dp78g0wfqbmdl5c",
+  "fetcher": "github",
+  "repo": "alphapapa/org-sidebar",
+  "unstable": {
+   "version": [
+    20200501,
+    1215
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "org",
+    "org-ql",
+    "org-super-agenda",
+    "s"
+   ],
+   "commit": "6dfa3a2312e8dacc942980e4ab10f1faea922a49",
+   "sha256": "0byr4h9dcgv667sn110011lkcnrr327qg7wv7f87hm1gyl613cgp"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "org",
+    "org-ql",
+    "org-super-agenda",
+    "s"
+   ],
+   "commit": "4d8f6fce5ffce8c9b495742998d0ae64bdc5959d",
+   "sha256": "0i7dib49yfx48df371rqq16y0yxnc6n331wka532w10ava11g5s3"
+  }
+ },
+ {
+  "ename": "org-snooze",
+  "commit": "fd04816fb53fe01fa9924ec928c1dd41f2219d6a",
+  "sha256": "00iwjj249vzqnfvbmlzrjig1sfhzbpv9kcpz95i3ir1w1qhw5119",
+  "fetcher": "github",
+  "repo": "xueeinstein/org-snooze.el",
+  "unstable": {
+   "version": [
+    20181229,
+    1424
+   ],
+   "commit": "8799adc14a20f3489063d279ff69312de3180bf9",
+   "sha256": "0ni5vm6b8c09ybn9rg3smdsxq1mxyqvndi00wn718my7939g82kb"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "6d30b0dcdfe9538e4400e49046291b7d07274164",
+   "sha256": "0qxk6gldgcc0fbraa0l85nk4rpvn5b5nbgzkh1p8d2bkjcxjcm4g"
+  }
+ },
+ {
+  "ename": "org-special-block-extras",
+  "commit": "c6cb3b3bf575f125f892b10fc3518f3ad1663d03",
+  "sha256": "041l129iabm078p9bfdcwx5aax9fa3kbn852h1qbq8jgsks36jv8",
+  "fetcher": "github",
+  "repo": "alhassy/org-special-block-extras",
+  "unstable": {
+   "version": [
+    20200502,
+    2057
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "org",
+    "s"
+   ],
+   "commit": "38c3a0a2c2f9b99e0426334c7c6a9320cc6e39a5",
+   "sha256": "1rp9hyn9bshp4wjqgr8rpgjabyp86f3905ghpf5nnc4w4dfgq9vk"
+  },
+  "stable": {
+   "version": [
+    1
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "org",
+    "s"
+   ],
+   "commit": "d1054754d0701296bc0cde1fb022619b1f38dfde",
+   "sha256": "1fy1sgj3jg7l6fjl00dxb7npf7x8ldcbs81cs8w4b4ciklp30mzr"
+  }
+ },
+ {
+  "ename": "org-sql",
+  "commit": "012573a35a302e9bb6f127cf28ac04f93796400e",
+  "sha256": "15alnx74pmr6jc2yx2c1dbpk0fbdzil8bffj7cfj7ywj2xadmzpg",
+  "fetcher": "github",
+  "repo": "ndwarshuis/org-sql",
+  "unstable": {
+   "version": [
+    20200217,
+    2130
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "9543ad58bc471abf09705d2615c50c1ead90c660",
+   "sha256": "18i4zhk955q13qvascvr8ag6pv2i9s14xfwl2061zjqarx89sxa1"
+  }
+ },
+ {
+  "ename": "org-starter",
+  "commit": "6deeab4833e76d3dadff056626a98dbbb80d1345",
+  "sha256": "02biskn1m397jpwa3i0wsh6z7zdq3hvjqf6ggy9ngjz9pgpahy18",
+  "fetcher": "github",
+  "repo": "akirak/org-starter",
+  "unstable": {
+   "version": [
+    20191224,
+    1909
+   ],
+   "deps": [
+    "dash",
+    "dash-functional"
+   ],
+   "commit": "4c0f01a493a6dc9ab3fec50e0b458aa0d35464f9",
+   "sha256": "1c2vjxgscngg0k7qxr67ad0cws9yv88yhmdrn9qq4rxzc9fdjkzg"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    6
+   ],
+   "deps": [
+    "dash",
+    "dash-functional"
+   ],
+   "commit": "7ea72ec530a340af61da215327a7fbb66a07ad2a",
+   "sha256": "0y1i4zpgmk6i2nj5l6dvdvqkp5a8cww8y4vcpps85blj586xgby3"
+  }
+ },
+ {
+  "ename": "org-starter-swiper",
+  "commit": "068f494ff402884d9242bb8ced804e38c8c39172",
+  "sha256": "0mzxb77s0k36ql8k8zd9xwv3fbixaqd34br2qx1ix2gfkzc0cq7a",
+  "fetcher": "github",
+  "repo": "akirak/org-starter",
+  "unstable": {
+   "version": [
+    20190929,
+    646
+   ],
+   "deps": [
+    "org-starter",
+    "swiper"
+   ],
+   "commit": "4c0f01a493a6dc9ab3fec50e0b458aa0d35464f9",
+   "sha256": "1c2vjxgscngg0k7qxr67ad0cws9yv88yhmdrn9qq4rxzc9fdjkzg"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    6
+   ],
+   "deps": [
+    "org-starter",
+    "swiper"
+   ],
+   "commit": "7ea72ec530a340af61da215327a7fbb66a07ad2a",
+   "sha256": "0y1i4zpgmk6i2nj5l6dvdvqkp5a8cww8y4vcpps85blj586xgby3"
+  }
+ },
+ {
+  "ename": "org-static-blog",
+  "commit": "e0768d41a3de625c04ac8644ef2e05f17ee99908",
+  "sha256": "07vh2k7cj0cs1yzfmrrz9p03x5mbfh0bigbl93s72h1wf7i05rkw",
+  "fetcher": "github",
+  "repo": "bastibe/org-static-blog",
+  "unstable": {
+   "version": [
+    20200508,
+    654
+   ],
+   "commit": "38a74456af863e07ab0b838c10830ce796886302",
+   "sha256": "1zmmv4izv5na0y29a55df1fa309xj25jdvhpwir879pfa15807bl"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    0
+   ],
+   "commit": "afe250fc43cd1beffd7946b54692d712d9263ff2",
+   "sha256": "15iy3z8rglaqbx1fz14inh18ksgjsmq30b8hyv3lgjvcc9ssaiw0"
+  }
+ },
+ {
+  "ename": "org-sticky-header",
+  "commit": "bc9a600bd156eb766ba5ce37e16f3e8253f37ee8",
+  "sha256": "0ign3vjckmxp7n3625wb53qlch07c3s4l67jsvk38dhhcsg1rhnj",
+  "fetcher": "github",
+  "repo": "alphapapa/org-sticky-header",
+  "unstable": {
+   "version": [
+    20191117,
+    549
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "1053ebdeb3bd14fc8d4538643532efb86d18b73c",
+   "sha256": "171j10ngngra45sxmlkzrcmhhqf2b6yjqq0r5gl16zcbgggg936a"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "2847035ec559a46bd7b555f220f819c88371d538",
+   "sha256": "0g6hdg11jzzpw7h0f6p795l5aj6pag2nhhfbx90cg28j61d28vwh"
+  }
+ },
+ {
+  "ename": "org-super-agenda",
+  "commit": "fd27b2df7594a867529de4b84c8107f82dabe2e9",
+  "sha256": "1h3kqvpjq2w0n8qiqwb8wcpdy2g4ac7j6kin0943g7p5gm5yf0ra",
+  "fetcher": "github",
+  "repo": "alphapapa/org-super-agenda",
+  "unstable": {
+   "version": [
+    20200310,
+    1337
+   ],
+   "deps": [
+    "dash",
+    "ht",
+    "org",
+    "s",
+    "ts"
+   ],
+   "commit": "dd0d104c269fab9ebe5af7009bc1dd2a3a8f3c12",
+   "sha256": "0kx9sikk7c3j0zp3a31kj8zv2kjxqjhhl25n7c7nslf2fp5w2d8b"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "deps": [
+    "dash",
+    "ht",
+    "org",
+    "s"
+   ],
+   "commit": "9bb6326e269b97673e023ba71fe05cc36bfbb235",
+   "sha256": "1ghwap34y4gvwssqv3sfqa8wn9jh6pawc7xnkhm1qxmvs53gxbg6"
+  }
+ },
+ {
+  "ename": "org-superstar",
+  "commit": "1e49a3cc1006f271ce53f03717b0484a4fd89957",
+  "sha256": "0rbmrdc7ghcwk5y4jkgf7axwknck85l4xl03kwbkmnac0w98zzlj",
+  "fetcher": "github",
+  "repo": "integral-dw/org-superstar-mode",
+  "unstable": {
+   "version": [
+    20200416,
+    2354
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "09ddc28383d363a4b353348a433e24535b4af0e3",
+   "sha256": "14w06v76xi4f6hpq6xzicrjjv0b802g5zc9as4mpimfy5gx2xpm0"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    1
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "09ddc28383d363a4b353348a433e24535b4af0e3",
+   "sha256": "14w06v76xi4f6hpq6xzicrjjv0b802g5zc9as4mpimfy5gx2xpm0"
+  }
+ },
+ {
+  "ename": "org-sync",
+  "commit": "923ddbaf1a158caac5e666a396a8dc66969d204a",
+  "sha256": "0n8fz2d1vg9r8dszgasbnb6pgaxr2i8mqrp953prf1nhmfpjpxad",
+  "fetcher": "github",
+  "repo": "arbox/org-sync",
+  "unstable": {
+   "version": [
+    20181204,
+    23
+   ],
+   "deps": [
+    "cl-lib",
+    "org"
+   ],
+   "commit": "e34a385fa9e658c8341a0a6e6bc3472d4d536bb8",
+   "sha256": "1xk0wqr66wjh00wgbr4f0q02zchmzdgpz2inz316zfjm4cik8y5c"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "org"
+   ],
+   "commit": "8c65dceaa2f3d436f83ed591916f22556a6e7f91",
+   "sha256": "0zx9gpvm5gy9k45lbhaks9s935id727lszsh40gmpdp5zxf3rjk1"
+  }
+ },
+ {
+  "ename": "org-sync-snippets",
+  "commit": "96aff3f39adfa0c68aca8ff8d3b11fbfd889327e",
+  "sha256": "0kv15zqva2cgx7jscp02x9gx20b5ckf525h546hyca86vfaakfbp",
+  "fetcher": "github",
+  "repo": "abrochard/org-sync-snippets",
+  "unstable": {
+   "version": [
+    20190318,
+    1744
+   ],
+   "deps": [
+    "f",
+    "org"
+   ],
+   "commit": "50cefe5a37196ed1af3d330d6871c3b37fa90d41",
+   "sha256": "13d1adymxn3b579syyaszgg98h3kh3hwn97pdfzghfli1cd9fb9y"
+  }
+ },
+ {
+  "ename": "org-table-comment",
+  "commit": "2c1f08c41969bc8a7104fb914564b4f6cab667e2",
+  "sha256": "1d40vl8aa1x27z4gwnkzxgrqp7vd3ln2pc445ijjxp1wr8bjxvdz",
+  "fetcher": "github",
+  "repo": "mattfidler/org-table-comment.el",
+  "unstable": {
+   "version": [
+    20120209,
+    1851
+   ],
+   "commit": "33b9966c33ecbc3e27cca67c2f2cdea04364d74e",
+   "sha256": "1qx3kd02sxs9k7adlvdlbmyhkc5kr7ni5lw4gxjw3nphnc536bkb"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "33b9966c33ecbc3e27cca67c2f2cdea04364d74e",
+   "sha256": "1qx3kd02sxs9k7adlvdlbmyhkc5kr7ni5lw4gxjw3nphnc536bkb"
+  }
+ },
+ {
+  "ename": "org-table-sticky-header",
+  "commit": "5dd0e18bf4c3f3263eff8aff6d7c743a554243b5",
+  "sha256": "1rk41279rcsdma39zpr1ka5p47gh1d0969wahd0jbm5xlmx5gz2m",
+  "fetcher": "github",
+  "repo": "cute-jumper/org-table-sticky-header",
+  "unstable": {
+   "version": [
+    20190924,
+    506
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "b65442857128ab04724aaa301e60aa874a31a798",
+   "sha256": "1rnv7n444gidn2kqfbzc1wypj253nmlhn50x14pd8rdg4s3srpar"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "4dba2dc9a3ed63f58aa946aeec84a52d46ca4043",
+   "sha256": "0az4lzd9qk4cx7jjfj36r2fvlkwyrhn3xqhha5d1pydglnhd9amy"
+  }
+ },
+ {
+  "ename": "org-tanglesync",
+  "commit": "9282e48b725e835fe8dfb226dacbea40257584c1",
+  "sha256": "1vyvy5l7bb8v7c190rzi7r1nz7vlq4yj2bskhcw35h6df3zy3j2y",
+  "fetcher": "github",
+  "repo": "mtekman/org-tanglesync.el",
+  "unstable": {
+   "version": [
+    20200127,
+    1616
+   ],
+   "commit": "af83a73ae542d5cb3c9d433cbf2ce1d4f4259117",
+   "sha256": "11rfn0byy0k0321w7fjgpa785ik1nrk1j6d0y4j0j4a8gys5hjr5"
+  }
+ },
+ {
+  "ename": "org-tfl",
+  "commit": "d9e97f2fee577c7e3fb42e4ca9d4f422c8907faf",
+  "sha256": "1rqmmw0222vbxfn5wxq9ni2j813x92lpv99jjszqjvgnf2rkhjhf",
+  "fetcher": "github",
+  "repo": "storax/org-tfl",
+  "unstable": {
+   "version": [
+    20170923,
+    1218
+   ],
+   "deps": [
+    "cl-lib",
+    "org"
+   ],
+   "commit": "f0d7d39106a1de5457f5160cddd98ab892b61066",
+   "sha256": "1rwdibiq0w4nzccmvdkpwnmfga70y35lfg2xlkqxd02x7bfl7j3m"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "org"
+   ],
+   "commit": "f0d7d39106a1de5457f5160cddd98ab892b61066",
+   "sha256": "1rwdibiq0w4nzccmvdkpwnmfga70y35lfg2xlkqxd02x7bfl7j3m"
+  }
+ },
+ {
+  "ename": "org-themis",
+  "commit": "60e0efe4f201ed96e90c437e3e7205e0344d4676",
+  "sha256": "08rajz5y7h88fh94s2ad0f66va4vi31k9hwdv8p212bs276rp7ln",
+  "fetcher": "github",
+  "repo": "zellio/org-themis",
+  "unstable": {
+   "version": [
+    20160122,
+    404
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "78aadbbe22b1993be5c4accd0d3f91a4e85c9a3c",
+   "sha256": "1apd5yyr12skagma7xpzrh22rhplmhhv0pma4zf5b0i6nkxy06j2"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "4b4bf1fa1e853664bf006dda8afe2db00e522aaa",
+   "sha256": "12fksqi9flf84h1lbmbcjnqxa7dairp50wvlwfhbp1hbb8l9z63a"
+  }
+ },
+ {
+  "ename": "org-time-budgets",
+  "commit": "776b58b433ab7dde5870300d288c3e6734fc32c0",
+  "sha256": "0r8km586n6xdnjha7xnzlh03nw1dp066hydaz8kxfmhvygl9cpah",
+  "fetcher": "github",
+  "repo": "leoc/org-time-budgets",
+  "unstable": {
+   "version": [
+    20151111,
+    801
+   ],
+   "deps": [
+    "alert",
+    "cl-lib"
+   ],
+   "commit": "1e81ea29af1ccc7b4ddb42fe4e3fbfc0adf891b0",
+   "sha256": "0cqk9q26qby2y1l6x39jfrdrw9x9419mlx2zhndmlb6gv3lv35f9"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "alert",
+    "cl-lib"
+   ],
+   "commit": "f2a8fe3d9d6104f3dd61fabbb385a596363b360b",
+   "sha256": "09iw2jffb2qrx5r07zd1j8sk5wafamjkc2khqyfwc5kx6xyp1f46"
+  }
+ },
+ {
+  "ename": "org-timeline",
+  "commit": "298bd714f6cefd83d594b0eea731a01fb2faf1ad",
+  "sha256": "0zlhjzjc7jwqh6wcys17hraz76n2hnjwffis02x71maclrf2cfdd",
+  "fetcher": "github",
+  "repo": "Fuco1/org-timeline",
+  "unstable": {
+   "version": [
+    20190612,
+    1759
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "f628519a12ce3d534b9aa5043b0273880cf29790",
+   "sha256": "16qjbw5l39j3kc4lfpm18ba81w9bhy9cdd3fii1n7dwyx76av73i"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "aed995c1db6c8bfd9db0a75a978f5e261aab38e5",
+   "sha256": "1jz44lag1j4rawqjpcgb9zrs88vfi7vjgdh756hs2ln7i1cnvgh5"
+  }
+ },
+ {
+  "ename": "org-toodledo",
+  "commit": "4956fb6c5f1076a02f07d0f953e846fee39bfaa6",
+  "sha256": "0c7qr0jsc4iyrwkc22xp9nmk6984v7q1k0rvpd62m07lb5gvbiq3",
+  "fetcher": "github",
+  "repo": "myuhe/org-toodledo",
+  "unstable": {
+   "version": [
+    20150301,
+    1113
+   ],
+   "deps": [
+    "cl-lib",
+    "request-deferred"
+   ],
+   "commit": "2c91a92bd07ae4a546771b018a6faa0e06399968",
+   "sha256": "014337wimvzy0rxh2p2c647ly215zcyhgym2hcljkdriv15cafna"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    0
+   ],
+   "commit": "5473c1a2762371b198862aa8fd83fd3ec57485a4",
+   "sha256": "0qqa62fsmra6v4061kpki8wbhfcwkgnb2gzxwvnaqlcmhivksg6v"
+  }
+ },
+ {
+  "ename": "org-tracktable",
+  "commit": "57263d996e321f842d0741898370390146606c63",
+  "sha256": "0mngf9q2ffxq32cgng0xl30661mj15wmr9y4hr3xddj626kxrp00",
+  "fetcher": "github",
+  "repo": "tty-tourist/org-tracktable",
+  "unstable": {
+   "version": [
+    20161118,
+    1329
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "8e0e60a582a034bd66d5efb72d513140b7d4d90a",
+   "sha256": "1aq7qv5jyc2x2a4iphnzmmsvak6dbi7nwdcf3m8nly8w75vrl5lj"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "8e0e60a582a034bd66d5efb72d513140b7d4d90a",
+   "sha256": "1aq7qv5jyc2x2a4iphnzmmsvak6dbi7nwdcf3m8nly8w75vrl5lj"
+  }
+ },
+ {
+  "ename": "org-transform-tree-table",
+  "commit": "afca0e652a993848610606866609edbf2f5f76ae",
+  "sha256": "0n68cw769nk90ms6w1w6cc1nxjwn1navkz56mf11bsiqvsk3km7r",
+  "fetcher": "github",
+  "repo": "jplindstrom/emacs-org-transform-tree-table",
+  "unstable": {
+   "version": [
+    20200413,
+    1959
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "d84e7fb87bf2d5fc2be252500de0cddf20facf4f",
+   "sha256": "16zi7rg3hdfspifr46gbvpnr1rr144a777whr1w3gp6m46xmgzhs"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "0a9bf07f01bc5fc3b349aff64e83999a8de83b52",
+   "sha256": "1h15fr16kgbyrxambmk4hsmha6hx4c4yqkccb82g3wlvzmnqj5x3"
+  }
+ },
+ {
+  "ename": "org-tree-slide",
+  "commit": "6160c259bc4bbcf3b98c220222430f798ee6463f",
+  "sha256": "0v857zplv0wdbg4li667v2p5pn5zcf9fgbqcwa75x8babilkl6jn",
+  "fetcher": "github",
+  "repo": "takaxp/org-tree-slide",
+  "unstable": {
+   "version": [
+    20200114,
+    2334
+   ],
+   "commit": "7bf09a02bd2d8f1ccfcb5209bfb18fbe02d1f44e",
+   "sha256": "1pzgb1z5k8zsbdqiaa7l94xlrncji1l09zqxvq62fyc0slxcf4ix"
+  },
+  "stable": {
+   "version": [
+    2,
+    8,
+    4
+   ],
+   "commit": "dccd80418a4444df5e8301695ff0d0dfe86a3c21",
+   "sha256": "0aacxxwhwjzby0f9r4q0lra5lqcrw5snnm1yc63jrs6c0ifakk45"
+  }
+ },
+ {
+  "ename": "org-treescope",
+  "commit": "f824498a74dcf0b8130baf474841b240adfa07a7",
+  "sha256": "13j7xz9i11kga1s0yvdv3k54076llna8vnnp0v8ri5pgbdrmc20w",
+  "fetcher": "github",
+  "repo": "mtekman/org-treescope.el",
+  "unstable": {
+   "version": [
+    20200503,
+    1609
+   ],
+   "deps": [
+    "dash",
+    "org",
+    "org-ql"
+   ],
+   "commit": "905029a9e2ce6ed325bb8e10f59dc589c181d148",
+   "sha256": "11xbm6161rd5kv2bffqw678a7bymclvhpmm1qjxsvmi8bhfk1ls0"
+  }
+ },
+ {
+  "ename": "org-treeusage",
+  "commit": "8868893e4109db9b348a62bc012c89648384994e",
+  "sha256": "1vxal0a4k348sqpivvahjlchk7w5a02dkqvxpqgjs1rlbs7vfv90",
+  "fetcher": "github",
+  "repo": "mtekman/org-treeusage.el",
+  "unstable": {
+   "version": [
+    20200418,
+    1904
+   ],
+   "deps": [
+    "dash",
+    "org"
+   ],
+   "commit": "fe4323bc500e2d949848c75e8f59340971b35562",
+   "sha256": "0v9zd2lnzvdxz3wqvw0j3bzd7228x6k8dyr7pzmimkl4l26cybqm"
+  }
+ },
+ {
+  "ename": "org-trello",
+  "commit": "188ed8dc1ce2704838f7a2883c41243598150a46",
+  "sha256": "14lq8nn1x6qb3jx518zaaz5582m4npd593w056igqhahkfm0qp8i",
+  "fetcher": "github",
+  "repo": "org-trello/org-trello",
+  "unstable": {
+   "version": [
+    20200508,
+    1705
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "deferred",
+    "request-deferred",
+    "s"
+   ],
+   "commit": "56c519a00c6e3c8f6923cd0460342089d58c41c9",
+   "sha256": "09028167pi9pzgcb8fpvqgvzviq1fxvgby5lb99wvyy94vjxwnk2"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    2
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "deferred",
+    "request-deferred",
+    "s"
+   ],
+   "commit": "4ddc257fe24e97c01e12b247568581ff255f0e8d",
+   "sha256": "18y5zdjc7zh4jlwz6k1nl13i721rknqm0vp4mxfnmq0sc5a0qva0"
+  }
+ },
+ {
+  "ename": "org-variable-pitch",
+  "commit": "9632b7e98772b584d6420f8d0f9652d67118e05e",
+  "sha256": "1xci5zq1bpwnm3adlcsxzpskxywzalb1n3n14lvf787f77ib602c",
+  "fetcher": "github",
+  "repo": "cadadr/elisp",
+  "unstable": {
+   "version": [
+    20191207,
+    2022
+   ],
+   "commit": "61a14d1a8c17930caca5c5daf893cedc9c23c5f3",
+   "sha256": "0acq8d8vlx3hd405wmi5w36gg88bz1c1crmlxbd2whgi8kyf506z"
+  }
+ },
+ {
+  "ename": "org-vcard",
+  "commit": "df860814a09c376c9a6a2c5e7f528bbae29810b2",
+  "sha256": "0l6azshvzl1wws582njqr3qx4h73gwrdqwa3jcic1qbs9hg2l4yl",
+  "fetcher": "github",
+  "repo": "flexibeast/org-vcard",
+  "unstable": {
+   "version": [
+    20191130,
+    703
+   ],
+   "commit": "4f5d71225e946999f45ac9f96996705fee83df5a",
+   "sha256": "1w8miq52d2rlyslbss5173gnbv7rmkn2cicd9h272v6ybb585hcd"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "a6ab82ab28fa78f7c985d3ea9c9fafdd17f7ea8b",
+   "sha256": "14l3xqahqmnfl3sskqcr33xpcsic8dm9cr9wmbv5la3xv14n10k7"
+  }
+ },
+ {
+  "ename": "org-wc",
+  "commit": "852e0a5cee285cc9b5e2cd9e18061fc0fe91d5a6",
+  "sha256": "1yk2py4bzm2yr8vw6rbgl2hfpd21hf4fga0d5q6y779631klp6wl",
+  "fetcher": "github",
+  "repo": "tesujimath/org-wc",
+  "unstable": {
+   "version": [
+    20180610,
+    253
+   ],
+   "commit": "0716c1e8276f6953e139e357e97566e792c8be19",
+   "sha256": "0wx4z6y3wn6948bz2pgrpffd4jzwgplvjkh0rnra4gihrapg1bv8"
+  }
+ },
+ {
+  "ename": "org-web-tools",
+  "commit": "f082bfb480649d21f586b7eb331c19d57e7a84cf",
+  "sha256": "19zpspap85fjqg5a20ps34rcigb0ws986pj6dzd7xik8s6ia29s7",
+  "fetcher": "github",
+  "repo": "alphapapa/org-web-tools",
+  "unstable": {
+   "version": [
+    20191217,
+    1459
+   ],
+   "deps": [
+    "dash",
+    "esxml",
+    "org",
+    "request",
+    "s"
+   ],
+   "commit": "ebc7888f4f4cad26ec1298edd7bf606a5ea2d564",
+   "sha256": "09ihqas9rx7c6146zmb3p0q395gxkfscxixlmz4v05smrhka1xz8"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "deps": [
+    "dash",
+    "esxml",
+    "org",
+    "request",
+    "s"
+   ],
+   "commit": "ca87319cd42eaa2eb02213e81dec19b7bd2918f7",
+   "sha256": "0v4qad54r0z7dr7kg5lpfdsazi44qvrbybx9aciyl4w9grfajphb"
+  }
+ },
+ {
+  "ename": "org-wild-notifier",
+  "commit": "114552a24f73f13b253e3db4885039b680f6ef33",
+  "sha256": "1lmpa614jnkpmfg3m1d2wjn9w0zig3gwd02n3dyjn23n71fiyhkp",
+  "fetcher": "github",
+  "repo": "akhramov/org-wild-notifier.el",
+  "unstable": {
+   "version": [
+    20200328,
+    1153
+   ],
+   "deps": [
+    "alert",
+    "async",
+    "dash",
+    "dash-functional"
+   ],
+   "commit": "4011d7f557da3ae5eee73c56ae514b963fb4d1c1",
+   "sha256": "0mr5qmrnz0mr6w7ib8bcdlqwhzwnxfbnd47zyg9i6lmh20p8qrns"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "deps": [
+    "alert",
+    "async",
+    "dash",
+    "dash-functional"
+   ],
+   "commit": "4011d7f557da3ae5eee73c56ae514b963fb4d1c1",
+   "sha256": "0mr5qmrnz0mr6w7ib8bcdlqwhzwnxfbnd47zyg9i6lmh20p8qrns"
+  }
+ },
+ {
+  "ename": "org-working-set",
+  "commit": "8df6c37b8d5b7f4a296e57ad1fd758cb99aff718",
+  "sha256": "0dkwgci0s6znc25hcvj3a3djarwmwdjyx2lgfrf6sgbqd5l30s8l",
+  "fetcher": "github",
+  "repo": "marcIhm/org-working-set",
+  "unstable": {
+   "version": [
+    20200516,
+    1341
+   ],
+   "commit": "c8c66a97e9adf84a4778f68e100259eaba67905b",
+   "sha256": "1h5ivbvzj46zkl3rgvcc0l50bn161g2q17miybm1mk70574q9fwn"
+  },
+  "stable": {
+   "version": [
+    2,
+    2,
+    1
+   ],
+   "commit": "c8c66a97e9adf84a4778f68e100259eaba67905b",
+   "sha256": "1h5ivbvzj46zkl3rgvcc0l50bn161g2q17miybm1mk70574q9fwn"
+  }
+ },
+ {
+  "ename": "org-wunderlist",
+  "commit": "c52a1ea0afa8e5f439b7ac987b79c49eb08fe95a",
+  "sha256": "08lxxdm740cnzkzar1hqrapwjh087nsgm0kzi9fxlq405gc0sza9",
+  "fetcher": "github",
+  "repo": "emacsattic/org-wunderlist",
+  "unstable": {
+   "version": [
+    20191017,
+    1917
+   ],
+   "deps": [
+    "alert",
+    "cl-lib",
+    "org",
+    "request-deferred",
+    "s"
+   ],
+   "commit": "1a084bb49be4b5a1066db9cd9b7da2f8efab293f",
+   "sha256": "05kd8d0687dlmy8a4qvxa3bdcsvxd10hxkl5i4654w88pg07qm8g"
+  }
+ },
+ {
+  "ename": "org2blog",
+  "commit": "08b47bf72bff18efb3281509fd9f1688d8bb0349",
+  "sha256": "1snrsqpiacmkajmiw12kpglxkrs5ngma7l7r246q0lvf1h4jzbsa",
+  "fetcher": "github",
+  "repo": "org2blog/org2blog",
+  "unstable": {
+   "version": [
+    20200317,
+    2136
+   ],
+   "deps": [
+    "htmlize",
+    "hydra",
+    "metaweblog",
+    "xml-rpc"
+   ],
+   "commit": "60eae1c8a7f82fbcc2660d785b33601daaa29f4b",
+   "sha256": "06ia4ba6c1yph259wr4y5sdkl1ry6pzbwhx807ia675rp0clp9hz"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    8
+   ],
+   "deps": [
+    "htmlize",
+    "hydra",
+    "metaweblog",
+    "xml-rpc"
+   ],
+   "commit": "0177fc4e7edd705db59b82c83a24db51dc405890",
+   "sha256": "1whl7kz4im2jmdz99336wfn152q0l3qwii4w7sn45rlsm2sijiw1"
+  }
+ },
+ {
+  "ename": "org2ctex",
+  "commit": "8f77fe537ca8ee2ddb6e3efe71f3b3c560c52c7d",
+  "sha256": "0049zf3ls7vbbcz1hdwai57ih9gppk2j0gzwijzwkb23ccwaf64a",
+  "fetcher": "github",
+  "repo": "tumashu/org2ctex",
+  "unstable": {
+   "version": [
+    20200331,
+    550
+   ],
+   "commit": "2e40aa5e78b0562516f46f689e7b74cdf451cc2a",
+   "sha256": "06ip9663xvygpr484r09v7c55nn0pxmr30455iqpmxi32dwx974g"
+  }
+ },
+ {
+  "ename": "org2elcomment",
+  "commit": "8af13650de8b4a814832638d4182bf8ce576244c",
+  "sha256": "0jv8sskw55rzxw578l6nm4arsycrw1si80ds7gr8i0x352fdydyp",
+  "fetcher": "github",
+  "repo": "cute-jumper/org2elcomment",
+  "unstable": {
+   "version": [
+    20170324,
+    945
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "c88a75d9587c484ead18f7adf08592b09c1cceb0",
+   "sha256": "19r7rxnd2cl0vc8bbf86mh5b779pl5z917657ymlc74bqq140m3x"
+  }
+ },
+ {
+  "ename": "org2issue",
+  "commit": "ad1759854c3bd302aa353dea92cf462e981aff2f",
+  "sha256": "1qd5l9ga26smgp1gkc8r9ja2n974kq1jf2z876s5v0489ipa59bz",
+  "fetcher": "github",
+  "repo": "lujun9972/org2issue",
+  "unstable": {
+   "version": [
+    20190531,
+    941
+   ],
+   "deps": [
+    "gh",
+    "org",
+    "ox-gfm",
+    "s"
+   ],
+   "commit": "910b98c858762fd14b11d261626c5e979dde0833",
+   "sha256": "0xgrrbkfqkhj15n7mbmh61g8i535ykhxh5y71054p3kikgnrh290"
+  }
+ },
+ {
+  "ename": "org2jekyll",
+  "commit": "48a1e5bd5e338bd3593f004f95b6fbb12595bfb7",
+  "sha256": "1j9d6xf5nsakifxwd4zmjc29lbj46ffn3z109k2y2yhz7q3r9hzv",
+  "fetcher": "github",
+  "repo": "ardumont/org2jekyll",
+  "unstable": {
+   "version": [
+    20200516,
+    1727
+   ],
+   "deps": [
+    "dash-functional",
+    "deferred",
+    "kv",
+    "s"
+   ],
+   "commit": "36d7789b7b3dfa2f4739a83692d322b601a0f4ea",
+   "sha256": "1j1cckvvghz9656bjkdxrc3gsfpz1wjvq3hlh6zblmnlbhhvbsan"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "dash-functional",
+    "deferred",
+    "kv",
+    "s"
+   ],
+   "commit": "7be4a71ce55f2fdc7fe7f6414f03d58f19d43410",
+   "sha256": "0cxhmbbznvv9d3nmqfn0ggr164fa6yjbfac9wqi3c58vm3zri00k"
+  }
+ },
+ {
+  "ename": "org2web",
+  "commit": "2864959163442165b9b1cd5471dc2649508decde",
+  "sha256": "0lcqf0pgkd7jilasw1485fy45k269jxvyl7hl7qrcs94s6fy2vaf",
+  "fetcher": "github",
+  "repo": "tumashu/org2web",
+  "unstable": {
+   "version": [
+    20171005,
+    2317
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "el2org",
+    "ht",
+    "htmlize",
+    "mustache",
+    "org",
+    "simple-httpd"
+   ],
+   "commit": "5243b399927a4c474bb3b8d1c8a00799df1f27d7",
+   "sha256": "0wsvfn409a2ivbich8b8zqza78sprirg4bl7igx536ydqclmi0n7"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "el2org",
+    "ht",
+    "htmlize",
+    "mustache",
+    "org",
+    "simple-httpd"
+   ],
+   "commit": "5243b399927a4c474bb3b8d1c8a00799df1f27d7",
+   "sha256": "0wsvfn409a2ivbich8b8zqza78sprirg4bl7igx536ydqclmi0n7"
+  }
+ },
+ {
+  "ename": "organic-green-theme",
+  "commit": "9383ef5f0372724b34f4bb9173ef8ccbb773e19e",
+  "sha256": "1fdj3dpcdqx0db5q8dlxag6pr2qn4yiz1hmg3c7dkmh51n85ssw2",
+  "fetcher": "github",
+  "repo": "kostafey/organic-green-theme",
+  "unstable": {
+   "version": [
+    20200510,
+    1645
+   ],
+   "commit": "2a88a70a5c2a57150c80d306f2475e351a59039c",
+   "sha256": "1y3g180q96vx7l8qs0l2jwjv2wbmk6aqzfm2p1h130h05lhgv31w"
+  }
+ },
+ {
+  "ename": "organize-imports-java",
+  "commit": "6c2287c7b4c543e92ccfab120388b2c05174d2db",
+  "sha256": "0j4fpbzmi0mq2f493hwl94b3xmkhdcjscvbgv4dz31rw10bl4q7h",
+  "fetcher": "github",
+  "repo": "jcs-elpa/organize-imports-java",
+  "unstable": {
+   "version": [
+    20190922,
+    1520
+   ],
+   "deps": [
+    "cl-lib",
+    "f",
+    "s"
+   ],
+   "commit": "8299bdfd65105feb8d7fb85d2951954d73671cd2",
+   "sha256": "023gkvhaxx54gcfz6m3pc0yhygf2y43391r1dghivk8420savdjg"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    3
+   ],
+   "deps": [
+    "cl-lib",
+    "f",
+    "s"
+   ],
+   "commit": "de094d6d56c85aa9820c77055b54287ae6b46d20",
+   "sha256": "0hgdgz1jx292dfxcm1av4v9v6400jpnyp1j21d4fzfi0wj2srfrr"
+  }
+ },
+ {
+  "ename": "orgbox",
+  "commit": "b1948eca5a18f35b61b9a0baf532753fd105ba3a",
+  "sha256": "12wfqlpjh9nr7zgqs4h8kmfsk825n68qcbn8z2fw2mpshg3nj7l8",
+  "fetcher": "github",
+  "repo": "yasuhito/orgbox",
+  "unstable": {
+   "version": [
+    20180827,
+    218
+   ],
+   "deps": [
+    "cl-lib",
+    "org"
+   ],
+   "commit": "3982f56efd67ec016389cad82ce5a44f619b36a9",
+   "sha256": "1vr00ql7izfxswrnbyzq0avlhqy3p0jyw16gnjhczqhg09iln6rw"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "org"
+   ],
+   "commit": "ecaf5a064431cf92922338c974df8fce1a8f1734",
+   "sha256": "02mxp17p7bj4xamg0m6zk832hmpqcgzc7bjbjcnvbvrawhc255hy"
+  }
+ },
+ {
+  "ename": "orgit",
+  "commit": "73b5f7c44c90540e4cbdc003d9881f0ac22cc7bc",
+  "sha256": "0askccb3h98v8gmylwxaph3gbyv5b1sp4slws76aqz1kq9x0jy7w",
+  "fetcher": "github",
+  "repo": "magit/orgit",
+  "unstable": {
+   "version": [
+    20200417,
+    1720
+   ],
+   "deps": [
+    "magit",
+    "org"
+   ],
+   "commit": "e147f055772cc934fe1f1d8619059badeb647c93",
+   "sha256": "1q3v22drqbjzzr6d0zdwczz1rq37iyh78k2nk1wirbs5z4ixfyx8"
+  },
+  "stable": {
+   "version": [
+    1,
+    6,
+    0
+   ],
+   "deps": [
+    "dash",
+    "magit",
+    "org"
+   ],
+   "commit": "e7cddf39e301c87c36c7de13e429dee74874d5c8",
+   "sha256": "00s3a8i221didw8phlbvdvihj9pxkq9k9j9vh1g1mzd7cz58dm07"
+  }
+ },
+ {
+  "ename": "orglink",
+  "commit": "be9b8e97cda6af91d54d402887f225e3a0caf055",
+  "sha256": "0ldrvvqs3hlazj0dch162gsbnbxcg6fgrxid8p7w9gj19vbcl52b",
+  "fetcher": "github",
+  "repo": "tarsius/orglink",
+  "unstable": {
+   "version": [
+    20200413,
+    2124
+   ],
+   "deps": [
+    "dash",
+    "org"
+   ],
+   "commit": "a5f5da06174d22dc21bbac167a8c2361fa84bf2b",
+   "sha256": "0sxali4vnqzk6mj0m7d82yr2ixvxxj5lzmxffyznpa7j6yndi2mm"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    4
+   ],
+   "deps": [
+    "dash",
+    "org"
+   ],
+   "commit": "988ad54db45708b0fe835829d512eb6d5f6cf161",
+   "sha256": "1mswfbwz7fm9lriab365g7hq8hn85gxcsg8y41by9j0n8hb3hj5q"
+  }
+ },
+ {
+  "ename": "orglue",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1kj62y3cf3as2d5s207s6kg5alm09jmw0aag1z6lblrjlzbi1p2j",
+  "fetcher": "github",
+  "repo": "yoshinari-nomura/orglue",
+  "unstable": {
+   "version": [
+    20200411,
+    311
+   ],
+   "deps": [
+    "epic",
+    "org"
+   ],
+   "commit": "9d5a8e24be9acb8c55bb4d6aa8b98e30e2677401",
+   "sha256": "1n2l9acc54sbpbv5d1h2ib9cn7nbidmkvhhlwihqzpvvh7bhjfj7"
+  }
+ },
+ {
+  "ename": "orgnav",
+  "commit": "a41436df126d7ef2c0a8b56d90afb942fe47dc59",
+  "sha256": "0z04n5rzv5c0lvn658nrfj6rg3a31n369h5rjgi5bap06qm427ix",
+  "fetcher": "github",
+  "repo": "facetframer/orgnav",
+  "unstable": {
+   "version": [
+    20170608,
+    1713
+   ],
+   "deps": [
+    "dash",
+    "helm",
+    "s"
+   ],
+   "commit": "9e2cac9c1a67af5f0080e60022e821bf7b70312d",
+   "sha256": "0764dg3dcsdy4i6syv9aqqmr47civn9dl3638g4lsqdikghw7lvv"
+  }
+ },
+ {
+  "ename": "orgtbl-aggregate",
+  "commit": "bf64b53c9d49718a8ffc39b14c90539b36840280",
+  "sha256": "0gnyjwn6jshs8bzdssm2xppg2s9p2x3rrhp523q39aydskc6ggc9",
+  "fetcher": "github",
+  "repo": "tbanel/orgaggregate",
+  "unstable": {
+   "version": [
+    20200516,
+    1344
+   ],
+   "commit": "7426df13512f5eee921c26aa68cfc6e32e3061fc",
+   "sha256": "18n2xzwpqq8159qwqy7hy0b93a5qxdb5rjh0ls4jk8lmahk5jrqk"
+  }
+ },
+ {
+  "ename": "orgtbl-ascii-plot",
+  "commit": "21b02596ac4b48e592ebe966475b164866bb9d6e",
+  "sha256": "1ssjbdprbn34nsfx1xjc382l2195rbh8mybpn31d4kcjx6fqf78h",
+  "fetcher": "github",
+  "repo": "tbanel/orgtblasciiplot",
+  "unstable": {
+   "version": [
+    20200411,
+    711
+   ],
+   "commit": "59618630205fc8c0fcc74fb34c4581d9712a5181",
+   "sha256": "1qx6la70cdxr556d2kna4ra76kdliaqkwm97jahd20nhs2izvpl1"
+  }
+ },
+ {
+  "ename": "orgtbl-join",
+  "commit": "e43ae8aaa54113f53b51aea3fb2656d608d1032c",
+  "sha256": "1kq2h0lb521z8q2xb9bsi37xzzdsa0hw4mm3qkzidi5j9fi3apf1",
+  "fetcher": "github",
+  "repo": "tbanel/orgtbljoin",
+  "unstable": {
+   "version": [
+    20200512,
+    721
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "5bfe2f6d53798d0fe071f9990e03d7428623e4a7",
+   "sha256": "16xcps2qlzh5z8c20sl0cnc0mlj8153vk6j1dnfd6l3a6kni88af"
+  }
+ },
+ {
+  "ename": "orgtbl-show-header",
+  "commit": "9c5ea906b1d642405ca532d89dbb32cf79f53582",
+  "sha256": "1xgqjg3lmcczdblxaka47cc1ad8p8jhyb2nqwq0qnbqw46fqjp3k",
+  "fetcher": "github",
+  "repo": "DamienCassou/orgtbl-show-header",
+  "unstable": {
+   "version": [
+    20141023,
+    837
+   ],
+   "commit": "112d54a44682f065318ed0c9c89a8f5b8907342a",
+   "sha256": "1s2bgsm4s33w5275qghw1axdpmz6bbyhki53jr2giyk4f90822gi"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "f0f48ccc0f96d4aa2a676ff609d9dddd71748e6f",
+   "sha256": "0zfiq9d5jqzpmscngb1s2jgfiqmbi4dyw0fqa59v2g84gxjg793x"
+  }
+ },
+ {
+  "ename": "origami",
+  "commit": "b816be227dfc7330292a50346c4bb37394d3e998",
+  "sha256": "0rkb55zcvsgxzp190vrnbzdfbcjd8zi6vhbhwpqxi0qmyq6a08pr",
+  "fetcher": "github",
+  "repo": "gregsexton/origami.el",
+  "unstable": {
+   "version": [
+    20200331,
+    1019
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "s"
+   ],
+   "commit": "e558710a975e8511b9386edc81cd6bdd0a5bda74",
+   "sha256": "0ycjbsn03cjzx6adabcvi1j7f92yhx3xjzj3xc68m1hw9r2f2gzf"
+  }
+ },
+ {
+  "ename": "ormolu",
+  "commit": "ab315f96d9b8d01ffc3b4748d01c70861daf8c1a",
+  "sha256": "0d6pgmp1iy3yylvx9bbdia5p0c7m59m8hca55lkxb7g6ck2c628y",
+  "fetcher": "github",
+  "repo": "vyorkin/ormolu.el",
+  "unstable": {
+   "version": [
+    20200313,
+    1631
+   ],
+   "deps": [
+    "reformatter"
+   ],
+   "commit": "3141f9b65f8a68b4cbd6df4e08c64d98ce3aa3c9",
+   "sha256": "1j7q9rmcn6fkhbcvfh8w4y9dir2y0hhhqmjpsafs8m4zm1rvffbn"
+  }
+ },
+ {
+  "ename": "osx-browse",
+  "commit": "081aa3e1d50c2c9e5a9b9ce0716258a93279f605",
+  "sha256": "06rfzq2hxhzg6jh2zs28r7ffxwlq40nz954j13ly8403c7rmbrfm",
+  "fetcher": "github",
+  "repo": "rolandwalker/osx-browse",
+  "unstable": {
+   "version": [
+    20140508,
+    2041
+   ],
+   "deps": [
+    "browse-url-dwim",
+    "string-utils"
+   ],
+   "commit": "44ded7cc3a7ee426c1c3257fae534c121f7e752e",
+   "sha256": "1iybrhp607a5rb3ynlaf8w2x9wdgdbril702z44dgcg3wxih2zy1"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    8
+   ],
+   "deps": [
+    "browse-url-dwim",
+    "string-utils"
+   ],
+   "commit": "6186a6020e143e90d557c8d062c44fcdba0516c7",
+   "sha256": "0g1xhh88a65vcq6rlh7ii16pra4pv519ajcws0h93ldbbjiy7p0m"
+  }
+ },
+ {
+  "ename": "osx-clipboard",
+  "commit": "71b85cd2b2122a2742f919d10bfcb054b681e61e",
+  "sha256": "0gjgr451v6rlyarz96v6h8kfbvkk7npvhgvkgwdi0bjighrhlv4f",
+  "fetcher": "github",
+  "repo": "joddie/osx-clipboard-mode",
+  "unstable": {
+   "version": [
+    20141012,
+    717
+   ],
+   "commit": "e46dd31327a3f92f77b013b4c9b1e5fdd0e5c73d",
+   "sha256": "1ykn48src7qhx9cmpjkaqsz7h36p75kkq1h9wlcpv5fhaky2d4n4"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "e46dd31327a3f92f77b013b4c9b1e5fdd0e5c73d",
+   "sha256": "1ykn48src7qhx9cmpjkaqsz7h36p75kkq1h9wlcpv5fhaky2d4n4"
+  }
+ },
+ {
+  "ename": "osx-dictionary",
+  "commit": "ae4467ad646d663f0266f39a76f9764004903424",
+  "sha256": "13033fxc5vjd1f7mm6znmprcp3mwxbvblb2d25shr8d4imqqhv82",
+  "fetcher": "github",
+  "repo": "xuchunyang/osx-dictionary.el",
+  "unstable": {
+   "version": [
+    20191206,
+    519
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1b79ff64c72485cb078db9ab7ee3256b11a99f4b",
+   "sha256": "1lnjpsb09w48ibjvabqkxqh997mv61zpvqhx3d35q4lw5sirgjxg"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "0e5e5f1b0077a62673855889d529dd4f0cc8f665",
+   "sha256": "1zpr50q7i4wg1x7vsj69rh1b8xvk9r0591y4fvvs3a2l1llca2mq"
+  }
+ },
+ {
+  "ename": "osx-lib",
+  "commit": "b42ae666e3511752f5138927e7bf7965bd9f7ee5",
+  "sha256": "12wvki8jhzqsanxv5yqzjmfx6ifwz9ab9zh6r8nss86bk8864ix4",
+  "fetcher": "github",
+  "repo": "raghavgautam/osx-lib",
+  "unstable": {
+   "version": [
+    20191121,
+    1440
+   ],
+   "commit": "01cba80ccc20412759f87b8f7531580bb04ec9c1",
+   "sha256": "0izkifcxk6cp9y4xcmpkhpd2vv1rqapxxa74ks12a55sflyxx36f"
+  }
+ },
+ {
+  "ename": "osx-location",
+  "commit": "8673dafb02a8d70c278bfd2c063f40992defe3a3",
+  "sha256": "1p12mmrw70p3b04zlprkdxdfnb7m3vkm6gci3fwhr5zyfvwxvn0c",
+  "fetcher": "github",
+  "repo": "purcell/osx-location",
+  "unstable": {
+   "version": [
+    20200304,
+    2209
+   ],
+   "commit": "18fcc306caa575c5afdeaf091aa1a9b003daa52a",
+   "sha256": "0n59mf0qx78d4qb071qgbvd50vzkn3xffwgxjwjv90193h99qdnj"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "110aee945b53ea550e4debe69bf3c077d940ec8c",
+   "sha256": "1csnxpsfnv9lv07kgvc60qx5c33sshmnz60p3qjz7ym7rnjy9b5x"
+  }
+ },
+ {
+  "ename": "osx-org-clock-menubar",
+  "commit": "cade09308a6b8c998800f2ad2592ad6ea79f65ca",
+  "sha256": "1y5qxslxl0d93f387nyj8zngz5nh1p4rzdfx0lnbvya6shfaxaf6",
+  "fetcher": "github",
+  "repo": "jordonbiondo/osx-org-clock-menubar",
+  "unstable": {
+   "version": [
+    20150205,
+    2111
+   ],
+   "commit": "9964d2a97cc2fb6570dc4116da44f73bd8eb7cb3",
+   "sha256": "1rgykby1ysbapq53lnk9yy04r9q4qirnzs2abgvz7g2qjq5fyzag"
+  }
+ },
+ {
+  "ename": "osx-plist",
+  "commit": "3f536906e3272e1b377d1a192accbc80927e788f",
+  "sha256": "02m8sam2wi4lfwf1hm5xwal7n50nqvb1bv8k0sikh90yq56zympv",
+  "fetcher": "github",
+  "repo": "gonewest818/osx-plist",
+  "unstable": {
+   "version": [
+    20200212,
+    1724
+   ],
+   "commit": "7e717532c78a97eb77b79e2985cea0b201117ff8",
+   "sha256": "129874d3g5c1dim6gmx1fllx22rfjg4zdvgdmfpm37l1n8hyzccn"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "commit": "bbed74d334e8a4141c8f6ed07c8e42ee7979c35c",
+   "sha256": "0d4qb7by8b069mk98wd9n9qn9ibbc6gqchxvws8r8y1sqjv1ssv8"
+  }
+ },
+ {
+  "ename": "osx-pseudo-daemon",
+  "commit": "6104efc035bcf469d133ab9a2caf42c9d4482334",
+  "sha256": "1sch7bb8hl96fji2ayw2ah5cjgsga08wj44vddjxskyway8ykf0z",
+  "fetcher": "github",
+  "repo": "DarwinAwardWinner/mac-pseudo-daemon",
+  "unstable": {
+   "version": [
+    20200215,
+    513
+   ],
+   "commit": "703ee41303dc251b7672b7cba5aeb6aa54a76c90",
+   "sha256": "0cplbz7mc2zrxfk8g349ahb7gzli2hn5kda9155nbk8dw74xmj7d"
+  },
+  "stable": {
+   "version": [
+    2,
+    2
+   ],
+   "commit": "564b006835facc4a8df247d8a47ab1030d7e7beb",
+   "sha256": "1ilqxl1851rg9v6ixi924xhzykc3c34f4nq1x0vyyq5b9m2fpb27"
+  }
+ },
+ {
+  "ename": "osx-trash",
+  "commit": "29dc2ef3801a1cd7cf8edd2eae68b03bf00e96a0",
+  "sha256": "05saq6w66n55m0wihwia6v2dd08xvblaw1zsbpf40l901flh9mrf",
+  "fetcher": "github",
+  "repo": "emacsorphanage/osx-trash",
+  "unstable": {
+   "version": [
+    20160520,
+    1300
+   ],
+   "commit": "0f1dc052d0a750b8c75f14530a4897f5d4324b4e",
+   "sha256": "0f4md49175iyrgzv4pijf7qbxyddcm2yscrrlh91pg410la7fysk"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "529619b84d21e18a38ec5255eb40f6b8ede38b2a",
+   "sha256": "1n44wdffkw14si9kb7bpkp6d9cjwjrvksfh22y9549dhs1vav6qq"
+  }
+ },
+ {
+  "ename": "otama",
+  "commit": "53b1eaef5c8b408eb8fff838af1e0249c4fe9444",
+  "sha256": "04ffyscldb2sn2n26ixrnc07ybvl7iclv2hi1kmhr5hdgxwpyjq9",
+  "fetcher": "github",
+  "repo": "yoshinari-nomura/otama",
+  "unstable": {
+   "version": [
+    20160404,
+    1032
+   ],
+   "commit": "c114fd8006762f891bc120a7c0ea213872e7ab31",
+   "sha256": "1jzyfvc25ls0l4kpxg6857ccynl1pzgxfif7bppz2nfmf99z4534"
+  }
+ },
+ {
+  "ename": "other-emacs-eval",
+  "commit": "75b6391726b0d5069e036930c2c5fa177c4e3422",
+  "sha256": "07sr5bb6x9w450cvfg32darg6jlwg11n7c1qhhk0ijcrnlsm09n7",
+  "fetcher": "github",
+  "repo": "xuchunyang/other-emacs-eval",
+  "unstable": {
+   "version": [
+    20180408,
+    1348
+   ],
+   "deps": [
+    "async"
+   ],
+   "commit": "8ace5acafef65daabf0c6619eff60733d7f5d792",
+   "sha256": "1pry1xw2p01b18ks5n0xs895qqqci7v2nrwjiil2vr3m1ys92ymc"
+  }
+ },
+ {
+  "ename": "outline-magic",
+  "commit": "a98ad2ef680eef541ee82e8a65ed73e524df98a1",
+  "sha256": "085yayzph3y7fh6pd5sdjdkhdcvwfzcyqd6y3xlbz7wni5ac6b5f",
+  "fetcher": "github",
+  "repo": "tj64/outline-magic",
+  "unstable": {
+   "version": [
+    20180619,
+    1819
+   ],
+   "commit": "2a5f07417b696cf7541d435c43bafcc64817636b",
+   "sha256": "1iyslhk2zvhn4ip27apkjzkqw56lfakp2jzwz106jm45f3kllpc8"
+  }
+ },
+ {
+  "ename": "outline-minor-faces",
+  "commit": "f252e45e8bd6e8af1267755d108f378a974ddaf1",
+  "sha256": "1728imdqmmfqw5f67w8xsailn2b09y4xgdr769pd6kx8z6lsi8zb",
+  "fetcher": "github",
+  "repo": "tarsius/outline-minor-faces",
+  "unstable": {
+   "version": [
+    20200429,
+    2055
+   ],
+   "commit": "b616b0d90a7c3d7b87bd164f2d213a5e009c39eb",
+   "sha256": "1b2mjzym8x42rz3qvmr0va21naw3aycvc2blfxx91i7pwpp8n3qg"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    3
+   ],
+   "commit": "d6247aaec44f60a9bd161c1d56960f80ab314a49",
+   "sha256": "0mscnbbv6cap818zhzz3ig6ychrw0zw84zyl2g1rksir0qj4hznf"
+  }
+ },
+ {
+  "ename": "outline-toc",
+  "commit": "64b07ee55e87c4a1125ce18a8ae0a44661380ffe",
+  "sha256": "13hy9ahla68qcbfbm7b5d0yy774qfc3byb6pn9c66k2wg4xh6pxb",
+  "fetcher": "github",
+  "repo": "abingham/outline-toc.el",
+  "unstable": {
+   "version": [
+    20200401,
+    1208
+   ],
+   "commit": "81d373633b40628cc3a6b6fb534fd7730076bcdb",
+   "sha256": "1ad6bxa5x95n6i1197p13qy5fgzn1pslwbzqsf4rfy9bvr49g6q3"
+  }
+ },
+ {
+  "ename": "outlined-elisp-mode",
+  "commit": "ae918c301e1c0ae39574ae76d70059718724293b",
+  "sha256": "165sivmv5h4nvh08ampq95x6b0bkzxgrdjbxjxlq6rv00vaidn7v",
+  "fetcher": "github",
+  "repo": "zk-phi/outlined-elisp-mode",
+  "unstable": {
+   "version": [
+    20131108,
+    1127
+   ],
+   "commit": "c16cb02b540448919ad148f2be6a41523ee5489c",
+   "sha256": "0d9hfr4kb6rkhwacdn70bkfchgam26gj92zfyaqw77a2sgwcmwwv"
+  }
+ },
+ {
+  "ename": "outlook",
+  "commit": "c5ce3e6800213b117578a1022f25407f2ec1604f",
+  "sha256": "0yq9zl7dr8kkm4rps5np4dwvjfhzsxq9wd1af7zwcmms4l3qry6k",
+  "fetcher": "github",
+  "repo": "asavonic/outlook.el",
+  "unstable": {
+   "version": [
+    20180428,
+    1430
+   ],
+   "commit": "359683aff91b38bd1398a6ed4058a06f09a02d65",
+   "sha256": "1kdqwyghrrmwcqkjjr2wq4ig1gsv7mr8fy2y6ddy4zmygblqi6si"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "5847c6f13b106cb54529080e9050be5b8b5be867",
+   "sha256": "13wlfklk342gv5fmzpnz69mc07vm8x6xmh7li1w7f13ci3v4s045"
+  }
+ },
+ {
+  "ename": "outorg",
+  "commit": "8edf78a0ecd2ff8e6e066b80751a31e11a068c3f",
+  "sha256": "10jh64d1nalfig69nnsib46915jinv37lvmxa0aj91zymq2szdm9",
+  "fetcher": "github",
+  "repo": "alphapapa/outorg",
+  "unstable": {
+   "version": [
+    20190720,
+    2002
+   ],
+   "commit": "ef0f86f4b893b30be8bcf8b43a5ec357a6c70f07",
+   "sha256": "1dpqr339n2pjc2fdd7sjzy6lyxaxx8yq507rjwn7vk8k1bdwri83"
+  },
+  "stable": {
+   "version": [
+    2,
+    0
+   ],
+   "commit": "e946cda497bae53fca6fa1579910237e216170bf",
+   "sha256": "1v9kx5xr7xcr6i664h2g6j8824yjsjdn5pvgmawvxrrplbjmiqnp"
+  }
+ },
+ {
+  "ename": "outrespace",
+  "commit": "2659a78181b8fe98ca4a80c75ec8c9b6dff44bb5",
+  "sha256": "13xasp9vjb3n0smdhrh9pq1yhhrg3p6z14fmlvf6xqip52rx89hl",
+  "fetcher": "github",
+  "repo": "articuluxe/outrespace",
+  "unstable": {
+   "version": [
+    20190724,
+    1553
+   ],
+   "commit": "d8c1619ec81fd3f4e728212a3526cd13bc2b0147",
+   "sha256": "0rcr85slklpaqhx5j8agd8yz6lg66qisniqlbz6zm4vvszqh0r4a"
+  }
+ },
+ {
+  "ename": "outshine",
+  "commit": "8edf78a0ecd2ff8e6e066b80751a31e11a068c3f",
+  "sha256": "1qqmvs17hq5s047nqplg4sa09xg5ck6zwqyg91xmbh71bx80v28v",
+  "fetcher": "github",
+  "repo": "alphapapa/outshine",
+  "unstable": {
+   "version": [
+    20191112,
+    1414
+   ],
+   "deps": [
+    "cl-lib",
+    "outorg"
+   ],
+   "commit": "9334b555aaf1426a9e405a57b80809a1615627b3",
+   "sha256": "11r6advraz5rkrxr25mj0wpfgzxcvn5gzppsc7ma51zqfmijg7dk"
+  },
+  "stable": {
+   "version": [
+    3,
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "outorg"
+   ],
+   "commit": "3edf0c61e94d36d174120c8080a98023e30a58a2",
+   "sha256": "1lh9f5dgdbwfyzxk6nsg1xwdjs8gc6p9mbyyhp6f8fnk3h0y88cg"
+  }
+ },
+ {
+  "ename": "ov",
+  "commit": "7a4e84530b4607a277fc3b678fe7b34b1c5e3b4f",
+  "sha256": "0brwf4xng72ybdjz253r3bld5crbi76y341rnhz4l9jg26k2b3hx",
+  "fetcher": "github",
+  "repo": "emacsorphanage/ov",
+  "unstable": {
+   "version": [
+    20200326,
+    1042
+   ],
+   "commit": "c5b9aa4e1b00d702eb2caedd61c69a22a5fa1fab",
+   "sha256": "1g3r4jsgvf713jazw0j5mcsbrw9shix9qrc683jm7dccwwrv5pcy"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    6
+   ],
+   "commit": "4e1c254d74bc1773c92f1613c3865cdcb4bc7095",
+   "sha256": "0qxk2rf84j86syxi8xknsq252irwg7sz396v3bb4wqz4prpj0kzc"
+  }
+ },
+ {
+  "ename": "overcast-theme",
+  "commit": "d86691c61fc880954a05502a6474cc2fa0d0a43b",
+  "sha256": "1v8hdnvc4pfmadkvdm6b8z0cy20pminvhjdlr13q5m9immr88a4r",
+  "fetcher": "github",
+  "repo": "myTerminal/overcast-theme",
+  "unstable": {
+   "version": [
+    20200425,
+    1601
+   ],
+   "commit": "e02b835a08919ead079d7221d513348ac02ba92e",
+   "sha256": "0fy8739fbhmixgjxgd1j5v2rjkwhsqac5kczx3mdjlfd2w55k3h7"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    0
+   ],
+   "commit": "769078cb4a6ea87a31fcea0218c06e1ec689b97c",
+   "sha256": "044g4y8ykh41b3ybxsgsrqvnkq8i1q8q8livh64b2qqrrjzq6mxg"
+  }
+ },
+ {
+  "ename": "overseer",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0zbh0j21h6wsqnqvnzai6y6rpccdciksb7g64qw7fx0cpg5x2ms8",
+  "fetcher": "github",
+  "repo": "tonini/overseer.el",
+  "unstable": {
+   "version": [
+    20180226,
+    619
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "pkg-info"
+   ],
+   "commit": "02d49f582e80e36b4334c9187801c5ecfb027789",
+   "sha256": "0q4ai7ividy8xv09s342y49s97ismhfdfsjk70zif60fp0ajfzfn"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "dash",
+    "pkg-info"
+   ],
+   "commit": "cf532a4e373e3da2077ccbaa48d4bfacd14661ba",
+   "sha256": "0jz8p6bwpfncxwi6ssmi6ngx8sjjica565i6ln0gsr5i11zfb7nx"
+  }
+ },
+ {
+  "ename": "ovpn-mode",
+  "commit": "16430ce0597c18925d7fdf83acfca996e8ad6457",
+  "sha256": "1p0gk3yiq7srpjcqhy0h2402m9ijb3nl9yz2lhnxvc41n9fj65gd",
+  "fetcher": "github",
+  "repo": "anticomputer/ovpn-mode",
+  "unstable": {
+   "version": [
+    20200509,
+    236
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "3fb9b09506f06cfc7678a93b5401f49d2bf538bc",
+   "sha256": "099pa85v3jqrfk3frkj03xbxcli8gfimaz17dn3a8p6wjcrn3w6v"
+  }
+ },
+ {
+  "ename": "owcmd",
+  "commit": "13e6df2397380eba31ecbf4a7c1214dedaf9cfad",
+  "sha256": "0lg6mk5bmfkiifzxz4ijr10nibr5zcbfxzy9cvg6bnzxns6nhgq5",
+  "fetcher": "github",
+  "repo": "fishyfriend/owcmd",
+  "unstable": {
+   "version": [
+    20200427,
+    633
+   ],
+   "commit": "cdd2280f34328f65fe470046c928b0018914584a",
+   "sha256": "15601vbng2vn45zcdp51vkgycfpcfkaw0xidrq13rg5544x9h7lz"
+  }
+ },
+ {
+  "ename": "owdriver",
+  "commit": "f3f9c1bb19345c6027a945e7f265632da1a391cb",
+  "sha256": "0j8z7ynan0zj581x50gsi9lljkbi6bwmzpfyha3i6q8ch5qkdxfd",
+  "fetcher": "github",
+  "repo": "aki2o/owdriver",
+  "unstable": {
+   "version": [
+    20200410,
+    1901
+   ],
+   "deps": [
+    "log4e",
+    "smartrep",
+    "yaxception"
+   ],
+   "commit": "3c52a7b11c8275fdb2e4cf98f68f2a48ad09a3ae",
+   "sha256": "1lxvcbpzpzs3vkgg4pif3k89ddmj5mamk2q18wc3gx0czs6v301d"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "log4e",
+    "smartrep",
+    "yaxception"
+   ],
+   "commit": "3c52a7b11c8275fdb2e4cf98f68f2a48ad09a3ae",
+   "sha256": "1lxvcbpzpzs3vkgg4pif3k89ddmj5mamk2q18wc3gx0czs6v301d"
+  }
+ },
+ {
+  "ename": "ox-asciidoc",
+  "commit": "3b268064f09ae5c3d15064b7d197c7af767fb278",
+  "sha256": "07b549dqyh1gk226d7zbls1mw6q4mas7kbfwkansmyykax0r2zyr",
+  "fetcher": "github",
+  "repo": "yashi/org-asciidoc",
+  "unstable": {
+   "version": [
+    20181230,
+    620
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "e931362e641f97d17dc738d22bb461e54045786d",
+   "sha256": "045kci7xvlp0kg8gmplnybc7ydv66hkl88dxgd113ac7ipf9zir7"
+  }
+ },
+ {
+  "ename": "ox-bibtex-chinese",
+  "commit": "6c09c708c4372451502923cd3cb756f4f98ba97b",
+  "sha256": "0f3xigrkhc86vv23f76fdd4rjsspsd2ck5c65biq2ds247f4gm61",
+  "fetcher": "github",
+  "repo": "tumashu/ox-bibtex-chinese",
+  "unstable": {
+   "version": [
+    20170723,
+    309
+   ],
+   "commit": "2ad2364399229144110db7ef6365ad0461d6a38c",
+   "sha256": "06lp56na1fv87296hhaxgb6gfnzln39p4v245gfxhk0k27589vxj"
+  }
+ },
+ {
+  "ename": "ox-clip",
+  "commit": "6d9ae1e58a1f214a9b88627a2d3254ce7de50740",
+  "sha256": "1sm0ivd8rypnl0z901anjsnbfjwhxqcaagqav82ybdb1z6x1qicv",
+  "fetcher": "github",
+  "repo": "jkitchin/ox-clip",
+  "unstable": {
+   "version": [
+    20191122,
+    237
+   ],
+   "deps": [
+    "htmlize",
+    "org"
+   ],
+   "commit": "bd36f9fb4e3b1b9e8686b993b02ccd780ff75a96",
+   "sha256": "03wj3gx09lbfmsanfhqfbzz61zaszia1mhfvlywhygknpagxr3lp"
+  }
+ },
+ {
+  "ename": "ox-epub",
+  "commit": "c3ac31dfef00e83fa6b716ea006f35afb5dc6cd5",
+  "sha256": "15q6vsmgv76c0qfdxa3prqvgmr6n7k4rd4bpi05574ibi23y0ynh",
+  "fetcher": "github",
+  "repo": "ofosos/ox-epub",
+  "unstable": {
+   "version": [
+    20181101,
+    1854
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "c9629ef4b4bc40d51afefd8c0bb2c683931e6409",
+   "sha256": "0z1a447v4fy5x6ib8lm4w8m9n2nx41ksbdsjz2xm8iy70is13yd2"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "3d958203e169cbfb2204c43cb4c5543befec0b9d",
+   "sha256": "057sqmvm8hwkhcg3yd4i8zz2xlqsqrpyiklyiw750s3i5mxdn0k7"
+  }
+ },
+ {
+  "ename": "ox-gfm",
+  "commit": "10e90430f29ce213fe57c507f06371ea0b29b66b",
+  "sha256": "065ngmzfd3g2h8n903hc4d363hz4z5rrdgizh2xpz03kf3plca6q",
+  "fetcher": "github",
+  "repo": "larstvei/ox-gfm",
+  "unstable": {
+   "version": [
+    20170628,
+    2102
+   ],
+   "commit": "99f93011b069e02b37c9660b8fcb45dab086a07f",
+   "sha256": "0drdypmgxk3238hmkqw9s3cw9wv94cyfqar5ar0bv0k69s92pxj8"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "99f93011b069e02b37c9660b8fcb45dab086a07f",
+   "sha256": "0drdypmgxk3238hmkqw9s3cw9wv94cyfqar5ar0bv0k69s92pxj8"
+  }
+ },
+ {
+  "ename": "ox-haunt",
+  "commit": "94b0a0a20d25dbe10333bb167d81f036b9fd03e0",
+  "sha256": "00fbljwkinx50b57srziw51k16kbzq2k0xylgjxg9ayy3hqqn5j1",
+  "fetcher": "git",
+  "url": "https://git.sr.ht/~jakob/ox-haunt",
+  "unstable": {
+   "version": [
+    20200202,
+    229
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "f3c8fda6fee78f45a259e5d218a519dfd11c00c7",
+   "sha256": "1rs1n228c2fmpvirc57bqgf2616ijpphkgf4w9ln5j46snmkam25"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "f3c8fda6fee78f45a259e5d218a519dfd11c00c7",
+   "sha256": "1rs1n228c2fmpvirc57bqgf2616ijpphkgf4w9ln5j46snmkam25"
+  }
+ },
+ {
+  "ename": "ox-html5slide",
+  "commit": "a7a7fd72c9bbb5d90e0e096b791971f2b64b8463",
+  "sha256": "0nqk6chg0ky98ap2higa74786prj7dbwx2a3l67m0llmdajw76qn",
+  "fetcher": "github",
+  "repo": "coldnew/org-html5slide",
+  "unstable": {
+   "version": [
+    20131228,
+    606
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "4703dfbd9d79161509def673d2c1e118d722a58f",
+   "sha256": "19h3w3fcas60jv02v7hxjmh05804sb7bif70jssq3qwisj0j09xm"
+  }
+ },
+ {
+  "ename": "ox-hugo",
+  "commit": "1e1240bb7b5bb8773f804b987901566a20e3e8a9",
+  "sha256": "1niarxj2y4a14lrv2nqcc36msw7k61h8fbjpcdrfbaw3n0kchd40",
+  "fetcher": "github",
+  "repo": "kaushalmodi/ox-hugo",
+  "unstable": {
+   "version": [
+    20200501,
+    1317
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "8f36181977377383cb54803651d93b24e370122d",
+   "sha256": "1rxkbkgvylwnh5n6zc6hiqa9zhxwc8j1if7mxribw44xrg3150a1"
+  },
+  "stable": {
+   "version": [
+    0,
+    8
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "9751d34e1133b89a533a978c085b0715f85db648",
+   "sha256": "11h464cyc28ld0b0zridgm4drydc1qjxbm1y24zrwlkyqqjk6yr7"
+  }
+ },
+ {
+  "ename": "ox-impress-js",
+  "commit": "e5e79b4b897daca80f26440107abaddf0a480db9",
+  "sha256": "0p0cc51lmxgl0xv951ybdg5n8gbzv8qf0chfgigijizzjypxc21l",
+  "fetcher": "github",
+  "repo": "kinjo/org-impress-js.el",
+  "unstable": {
+   "version": [
+    20150412,
+    1716
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "91c6d2af6af308ade352a03355c4fb551b238c6b",
+   "sha256": "1kf2si2lyy0xc971bx5zd2j9mnz1smc9s8l0dwc6iksh2v9q8cy9"
+  }
+ },
+ {
+  "ename": "ox-ioslide",
+  "commit": "b960abca4d642c47e640300876eefee1851e6b86",
+  "sha256": "0z0qnvpw64wxbgz8203rphswlh9hd2i11pz2mlay8l3bzz4gx4vc",
+  "fetcher": "github",
+  "repo": "coldnew/org-ioslide",
+  "unstable": {
+   "version": [
+    20161015,
+    1338
+   ],
+   "deps": [
+    "cl-lib",
+    "f",
+    "makey",
+    "org"
+   ],
+   "commit": "6555680be5364c8ddd2bf446865cb1a82adb6b9e",
+   "sha256": "05d1bykgj454g0vq2k2sd36pd9hmcwr9a8033dagkqc625h7wj4h"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "f",
+    "org"
+   ],
+   "commit": "e81f7a6dab512da7eaa8c2c50c673538b97db267",
+   "sha256": "047fcvpvwzaqisw4q3p6hxgjyqsi2n9nms1qx9w4znvxrnjq8jz3"
+  }
+ },
+ {
+  "ename": "ox-jekyll-md",
+  "commit": "4e7ddae7938158d9da24bee861a88d4875235269",
+  "sha256": "0lfnrikrismcd2zyfb0sf3pwwx12cyki7kzs2mjlswq3sap8w544",
+  "fetcher": "github",
+  "repo": "gonsie/ox-jekyll-md",
+  "unstable": {
+   "version": [
+    20180831,
+    1732
+   ],
+   "commit": "ff7b81733354c2b427293e531bb51647fa84fc88",
+   "sha256": "1fb08c1f9rky0akv9y2brbd38d7s36wcc7z9yvvk343p1kxfipid"
+  }
+ },
+ {
+  "ename": "ox-jira",
+  "commit": "e8a77d9c903acd6d7fdcb53f63384144e85589c9",
+  "sha256": "088ks14d7slgs2qsqp1kkxvqzzhdkwphdvpg27ix686dz1krxxib",
+  "fetcher": "github",
+  "repo": "stig/ox-jira.el",
+  "unstable": {
+   "version": [
+    20200218,
+    2301
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "00767df8ba024eb1ef09fe16c3aed30d729d6add",
+   "sha256": "0fbic43vzp0dp8wbx12cq22ca192v2jl2w131xcqmbhbww6j5xv2"
+  }
+ },
+ {
+  "ename": "ox-json",
+  "commit": "c648b95620bc7194e18f37fc7bb526e5578d883a",
+  "sha256": "0v0hn0fd6jx2009na1y18bnah7qvmng9riidng0kglkx208a04ay",
+  "fetcher": "github",
+  "repo": "jlumpe/ox-json",
+  "unstable": {
+   "version": [
+    20191225,
+    750
+   ],
+   "deps": [
+    "org",
+    "s"
+   ],
+   "commit": "8ce0fae6e8b596b93e05dd512be13973cb3cfa54",
+   "sha256": "1fwwvp4jvdx8namdy0nb68c2jj3nfw7adwp7vk2c2b5cp6fc6cl7"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "org",
+    "s"
+   ],
+   "commit": "aba3face2786d53380ee29459c04d16c999e72ac",
+   "sha256": "1y1l7in0fxlyrbd6fz4ixydc6kihfx42n7yh5glpjxahhbzqg9b3"
+  }
+ },
+ {
+  "ename": "ox-latex-subfigure",
+  "commit": "cf83b7597bd6a23b82b88b0927424c9aeb49a03d",
+  "sha256": "19nglrlg4q350vgi13x6yg97nrgav5d51z7jrqg8vim7mbafq7fg",
+  "fetcher": "github",
+  "repo": "linktohack/ox-latex-subfigure",
+  "unstable": {
+   "version": [
+    20200326,
+    919
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "be0a0dde62fde8cdf8d72b6968344906aa8c6f54",
+   "sha256": "1afikv50ii4xk9pkg4m6dx246bjnwka37lccif8i5r48hfy5w4bq"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "commit": "b7445849ae1f16b4b28f7a080301a0a61edf1c83",
+   "sha256": "15wxyzsfp4gilnravs2h4h8vwk0rf8ylzsxzdzlqx0i62wbb79l9"
+  }
+ },
+ {
+  "ename": "ox-mdx-deck",
+  "commit": "13d1a86dfe682f65daf529f9f62dd494fd860be9",
+  "sha256": "1k41sbqcfrj485ps11f6xdb1kxp7kh22k0zhn9vrjb5mxwdilfyl",
+  "fetcher": "github",
+  "repo": "WolfeCub/ox-mdx-deck",
+  "unstable": {
+   "version": [
+    20181115,
+    1847
+   ],
+   "deps": [
+    "ox-hugo"
+   ],
+   "commit": "2e46ac76f7ac279c371474cbbf39634bbe40f4c7",
+   "sha256": "1vhfyfdc83js33sm498fm3wmn80wmqnvn5dkabhdbk5gd9a9zdis"
+  }
+ },
+ {
+  "ename": "ox-mediawiki",
+  "commit": "24244d146306ce965df382c8958c7574c74313f2",
+  "sha256": "0lijj2n4saw0xd3jaghbvx9v6a4ldl5gd8wy7s7hfcm30wb75cdb",
+  "fetcher": "github",
+  "repo": "tomalexander/orgmode-mediawiki",
+  "unstable": {
+   "version": [
+    20180105,
+    2154
+   ],
+   "deps": [
+    "cl-lib",
+    "s"
+   ],
+   "commit": "a9327150293e370e500ba55bddfe5fc435c6bf9b",
+   "sha256": "0dsq86hli24imdkgsf45asx23kriw9di3d0cf5z8axfpkcbkn770"
+  }
+ },
+ {
+  "ename": "ox-minutes",
+  "commit": "162d0dacbb7252508147edb52fe33b1927a6bd69",
+  "sha256": "13rwcp0k9h7l5g8xw2s2r1xhsmkibhfqyq6hlicvddv232g724sj",
+  "fetcher": "github",
+  "repo": "kaushalmodi/ox-minutes",
+  "unstable": {
+   "version": [
+    20180202,
+    1734
+   ],
+   "commit": "27c29f3fdb9181322ae56f8bace8d95e621230e5",
+   "sha256": "10rw12gmg3d6fvkqijmjnk5bdpigvm8fy34435mwg7raw0gmlq75"
+  }
+ },
+ {
+  "ename": "ox-nikola",
+  "commit": "4e3fa1b0728ad3058376800ec5e2e9e3847c1d2f",
+  "sha256": "13k5wggz8bhnfgpsc09jnisk7xdb226d6imp7v6vmd1ax9m2xb0w",
+  "fetcher": "github",
+  "repo": "msnoigrs/ox-nikola",
+  "unstable": {
+   "version": [
+    20151114,
+    1116
+   ],
+   "deps": [
+    "org",
+    "ox-rst"
+   ],
+   "commit": "5bcbc1a38f6619f62294194f13ca0cd4ca14dd48",
+   "sha256": "0cc14p6c3d4djfmrkac0abb2jq128vlmayv2a8cyvnyjffyvjbk7"
+  }
+ },
+ {
+  "ename": "ox-pandoc",
+  "commit": "ca17de8cdd53bb32a9d3faaeb38f19f92b18ee38",
+  "sha256": "0wy6yvwd4vyq6xalkrshnfjjxlh1p24y52z49894nz5fl63b74xc",
+  "fetcher": "github",
+  "repo": "kawabata/ox-pandoc",
+  "unstable": {
+   "version": [
+    20180510,
+    1338
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "ht",
+    "org"
+   ],
+   "commit": "aa37dc7e94213d4ebedb85c384c1ba35007da18e",
+   "sha256": "0iibxplgdp34bpq1yll2gmqjd8d8lnqn4mqjvx6cdf0y438yr4jz"
+  },
+  "stable": {
+   "version": [
+    1,
+    150707
+   ],
+   "deps": [
+    "dash",
+    "ht",
+    "org"
+   ],
+   "commit": "035f1d60a0139349232c382cfd23a96902b7003d",
+   "sha256": "0h49pfl97vl796sm7r62rpv3slj0z5krm4zrqkgz0q6zlyrjay29"
+  }
+ },
+ {
+  "ename": "ox-pukiwiki",
+  "commit": "cd4043336e54c6ae3976068a1af5cfe58713e408",
+  "sha256": "10sfbri5hv5hyx9jc1bzlk4qmzfmpfgfy8wkjkpv7lv2x0axqd8a",
+  "fetcher": "github",
+  "repo": "yashi/org-pukiwiki",
+  "unstable": {
+   "version": [
+    20150124,
+    1716
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "bdbde2c294f5d3de11f08a3fe19f01175d2e011a",
+   "sha256": "0adj6gm39qw4ivb7csfh21qqqipcnw1sgm1xdqvrk86kbs9k1b2g"
+  }
+ },
+ {
+  "ename": "ox-qmd",
+  "commit": "e71826e8a8c30b0eb535cce7a379740011b79534",
+  "sha256": "1i2kdpp6prgphc1l42nz7q6vdfsbcn2vvlf10s7dfhhr8jzcyyy7",
+  "fetcher": "github",
+  "repo": "0x60df/ox-qmd",
+  "unstable": {
+   "version": [
+    20170402,
+    1657
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "3a24c7a0b3ec80e494b977e14a3dfb94c9f1d8ec",
+   "sha256": "030nay81c49ings96akzzy108a6agg91rvpmg0pf05qmjysfysmf"
+  }
+ },
+ {
+  "ename": "ox-reveal",
+  "commit": "8c2f267bb13a2fe5e1af49fd70d831a07d83b7d5",
+  "sha256": "1lsq9xx95nhz1914wx7781fajfs84m27iwv980hqq29lyn2lzbl6",
+  "fetcher": "github",
+  "repo": "yjwen/org-reveal",
+  "unstable": {
+   "version": [
+    20200429,
+    1533
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "e8b2801ab2210187ab1cfacad09bb07e4b61ca56",
+   "sha256": "0xa34y0v6z78gpida59jc3gzng68n0has5dnkccv4vdxi4yb6ii9"
+  }
+ },
+ {
+  "ename": "ox-rfc",
+  "commit": "d3f49159d6a379bf435e2af8920176fd84693a60",
+  "sha256": "0vqh923223rmhy39p4lwmdv6azba7cddkc1zi5pp3zpcijmhxzk4",
+  "fetcher": "github",
+  "repo": "choppsv1/org-rfc-export",
+  "unstable": {
+   "version": [
+    20190926,
+    851
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "b86c9e6f21d99ea657b4f2224f816300485ed73f",
+   "sha256": "1lg4bs0dr4srcgqxv9qi6v53aqq9i8inc1q024ndag4bis2x1q01"
+  }
+ },
+ {
+  "ename": "ox-rst",
+  "commit": "85770d6e235217e98dda9d8b9f027a4ba3ebba96",
+  "sha256": "0447q0gvasii57rp391la9prz0w228jnzgi59s785vzswdryww0n",
+  "fetcher": "github",
+  "repo": "msnoigrs/ox-rst",
+  "unstable": {
+   "version": [
+    20191013,
+    551
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "9158bfd18096c559e0a225ae62ab683f1c98a547",
+   "sha256": "11v1h45ipjh95ksk6cdgp0azfmb7y3i8hdd46m7psmda08x8kqm5"
+  }
+ },
+ {
+  "ename": "ox-slack",
+  "commit": "55fda67a19f8799f00c8304a14ab88dde236aa48",
+  "sha256": "0ggw64lx93crfzm1sfwqhsfhaprkbyrjay88nyn43frf7c5l4a63",
+  "fetcher": "github",
+  "repo": "titaniumbones/ox-slack",
+  "unstable": {
+   "version": [
+    20200108,
+    1546
+   ],
+   "deps": [
+    "org",
+    "ox-gfm"
+   ],
+   "commit": "89cedb9da6ea08b78bc1fe77d6a39aa078172c1e",
+   "sha256": "0a97la3hwkb792a26c6byavwzg8gca6s0ccajd7pi9p430ys1i9y"
+  }
+ },
+ {
+  "ename": "ox-slimhtml",
+  "commit": "6fae8e3c4abd37a651d4cbdb337a74f1a7c7366a",
+  "sha256": "16jrw8n26iy69ibr29bp3pqp4lm66alihks37qipd2g5grqqfdnd",
+  "fetcher": "github",
+  "repo": "balddotcat/ox-slimhtml",
+  "unstable": {
+   "version": [
+    20200302,
+    728
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "6f774398d189430593c93e503bf0f3cd0e8bcc25",
+   "sha256": "12axvwqadv0qlvnzrvbi85p94c10r5w6f3gixck0cbz7p8qz678r"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    5
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a764ef64235845e4f5cfd73244d6cf1e7fee903b",
+   "sha256": "14h0kks7i2k53fwbsqb4giafacm58inppqpr5mbj904cy146g29f"
+  }
+ },
+ {
+  "ename": "ox-spectacle",
+  "commit": "f441e1b3ee30065f8a68c9b0b45d9db0cac8a289",
+  "sha256": "1nf4765dihlcjbifhb9dinqin27ivqj2s8wzh1hj4vc3n8mdx5pr",
+  "fetcher": "github",
+  "repo": "lorniu/ox-spectacle",
+  "unstable": {
+   "version": [
+    20181211,
+    953
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "9d3ec9a6326289074d8620e97d65e3105307ff51",
+   "sha256": "1gm8wwpsq10cfppzl104g3x2g9bha1209p2n8mj9azv71b9mszqx"
+  }
+ },
+ {
+  "ename": "ox-textile",
+  "commit": "02a68a7a99ecce8f1afa03e72ff1f636edaf5868",
+  "sha256": "01kri7vh16xhy8x5qd6s5z08xr0q964rk6xrligdb3i6x78wfvi4",
+  "fetcher": "github",
+  "repo": "yashi/org-textile",
+  "unstable": {
+   "version": [
+    20180502,
+    947
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "b179abaa6616604c6efe32cb509e62ad46e7374e",
+   "sha256": "1hwrnnrhrdp5cjn81wipzi5j8zr82kpwlvr6hna2cj2zr3r7a6m8"
+  }
+ },
+ {
+  "ename": "ox-tiddly",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1rpbnz152af588r8kafqpg9aq3ngwjfkrsjqk6w90l5rh280yi39",
+  "fetcher": "github",
+  "repo": "dfeich/org8-wikiexporters",
+  "unstable": {
+   "version": [
+    20180626,
+    2052
+   ],
+   "deps": [
+    "cl-lib",
+    "org"
+   ],
+   "commit": "99d0c25d56dbf75ce894a84e776ba4459208dbc2",
+   "sha256": "1812sp7z4241da1mfg4wxm1wcax59cqyy2n0xfd67a1mphihsniz"
+  }
+ },
+ {
+  "ename": "ox-trac",
+  "commit": "4b73753ef9229d0fdfbe237acc63126f1786a494",
+  "sha256": "0f8b3i83vzxzfa91p4ahlqz6njql18xy5nk265sjxpy9zr898rsa",
+  "fetcher": "github",
+  "repo": "JalapenoGremlin/ox-trac",
+  "unstable": {
+   "version": [
+    20171026,
+    1823
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "03cc31efb1aa06991918f1071e250a9d58f96cfb",
+   "sha256": "0knrmq0sc8s9c6j0967jmrp2hq8jcwg281qqk89y8j9rpbmhbaj6"
+  }
+ },
+ {
+  "ename": "ox-tufte",
+  "commit": "0e1592b788ef7218cfb4b3da8599b6cd23eef357",
+  "sha256": "15b7aml9nl1kh8gbc086nb155f5mzlh8dmq41zi9frn6gskzjnfk",
+  "fetcher": "github",
+  "repo": "dakrone/ox-tufte",
+  "unstable": {
+   "version": [
+    20160926,
+    1607
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "49d7ea78fde063b407ce6fa57739f90c83500682",
+   "sha256": "1hb5s8m8r5nbz2kii1g975m3p4lnfkwraxhd71zhfvagf13wfkxd"
+  }
+ },
+ {
+  "ename": "ox-twbs",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "050rv270jlkc1v7wp47cv9cwr9pz3n840dd4jxxhfs6s47b9ln73",
+  "fetcher": "github",
+  "repo": "marsmining/ox-twbs",
+  "unstable": {
+   "version": [
+    20191216,
+    1011
+   ],
+   "commit": "cf56accf8633f72c741fff19a49c24cc8bdd8974",
+   "sha256": "12w58nvpzn0fbica3m679n08hczzikqr1xi1n4k7a6h1l60qykl7"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    2
+   ],
+   "commit": "cf56accf8633f72c741fff19a49c24cc8bdd8974",
+   "sha256": "12w58nvpzn0fbica3m679n08hczzikqr1xi1n4k7a6h1l60qykl7"
+  }
+ },
+ {
+  "ename": "ox-twiki",
+  "commit": "084da2cc725cc23b02657e7adb14ec31532ad25a",
+  "sha256": "1p1k0yg5fxcjgwpq2ix9ckh2kn69m7d5rnz76h14hw9p72cb54r0",
+  "fetcher": "github",
+  "repo": "dfeich/org8-wikiexporters",
+  "unstable": {
+   "version": [
+    20170803,
+    2039
+   ],
+   "deps": [
+    "cl-lib",
+    "org"
+   ],
+   "commit": "99d0c25d56dbf75ce894a84e776ba4459208dbc2",
+   "sha256": "1812sp7z4241da1mfg4wxm1wcax59cqyy2n0xfd67a1mphihsniz"
+  }
+ },
+ {
+  "ename": "ox-wk",
+  "commit": "0947993df2d9bee493c2c25760f1ac5bcc1136ac",
+  "sha256": "0rb4xkkqb65ly01lb1gl3gyz4yj9hzv4ydbdzsbvmpj0hrdw5nv3",
+  "fetcher": "github",
+  "repo": "w-vi/ox-wk.el",
+  "unstable": {
+   "version": [
+    20191231,
+    2058
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "d34d1b72e4e940745a377bfa745dfb618900a09e",
+   "sha256": "05813w4adafm596x1rikvc7xqk10xwfihdpdq1zr2zyqcpdabqza"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "d34d1b72e4e940745a377bfa745dfb618900a09e",
+   "sha256": "05813w4adafm596x1rikvc7xqk10xwfihdpdq1zr2zyqcpdabqza"
+  }
+ },
+ {
+  "ename": "p4",
+  "commit": "a7e2fa7af647e0dbf5ade5c32d1984b133156b6f",
+  "sha256": "0215li17gn35wmvd84gnp4hkwa2jd81wz4frb1cba2b5j33rlprc",
+  "fetcher": "github",
+  "repo": "gareth-rees/p4.el",
+  "unstable": {
+   "version": [
+    20150721,
+    1937
+   ],
+   "commit": "eff047caa75dbe4965defca9d1212454cdb755d5",
+   "sha256": "12jsnfppif4l548wymvakx0f2zlm63xs6kfrb49hicmk668cq4ra"
+  }
+ },
+ {
+  "ename": "pabbrev",
+  "commit": "c032b0d126e0196b4526ee04f5103582610681ea",
+  "sha256": "1mbfa40pbzbi00sp155zm43sj6nw221mcayc2rk3ppin9ps95hx3",
+  "fetcher": "github",
+  "repo": "phillord/pabbrev",
+  "unstable": {
+   "version": [
+    20160320,
+    2101
+   ],
+   "commit": "56400d5d256b42ffe45c229ea9827f026b650cf5",
+   "sha256": "09bn19ydyz1hncmvyyh87gczp3lmlczpm352p0107z1gw6xmpjil"
+  },
+  "stable": {
+   "version": [
+    4,
+    1
+   ],
+   "commit": "127a8b10cf352b0491fefd2f4178ba78ee587564",
+   "sha256": "073qpa223ja673p63mhvy4l6yyv3k7z05ifwvn7bmq4b5fq42hw6"
+  }
+ },
+ {
+  "ename": "pacfiles-mode",
+  "commit": "bec20443188d9218235c4b31840544a7b1e0690d",
+  "sha256": "08yc3w7zvckg8s1g707hvbbkvi2k52jrk2iwlj0sk22ih3q3yaa9",
+  "fetcher": "github",
+  "repo": "UndeadKernel/pacfiles-mode",
+  "unstable": {
+   "version": [
+    20200418,
+    1806
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "222ae3f540cddee306067c83451cfece1112c09e",
+   "sha256": "1ps6blv2jhm4i2gr1fbsr1lii9cpr99prhwnxvhxxxy08c9b6mrx"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "180eea7ba33dc4fa5c116b01649c4e9ba3f43276",
+   "sha256": "07ki2dz459nv4jshmgk2gq1b8c0x3iqy3nf9rwv0w3b3qm70gn3f"
+  }
+ },
+ {
+  "ename": "pack",
+  "commit": "96f55c1f15ca24134da378a1ea31f7bb31c84ea9",
+  "sha256": "0lwdhfrpqwpqqg3yhcyj11jv2mm8k9k54qdxlhdi8sxj1fdxmanw",
+  "fetcher": "github",
+  "repo": "10sr/pack-el",
+  "unstable": {
+   "version": [
+    20191017,
+    456
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "85cd856fdc00a2365e88b50373b99f1b3d2227be",
+   "sha256": "0v95ni44scn42mm6mwrdi1vbi1n2h4bw961apm7bp6ilamwpbif8"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "85cd856fdc00a2365e88b50373b99f1b3d2227be",
+   "sha256": "0v95ni44scn42mm6mwrdi1vbi1n2h4bw961apm7bp6ilamwpbif8"
+  }
+ },
+ {
+  "ename": "package+",
+  "commit": "49cfbbc4535aa7e175aa819d67b8aa52a6f94384",
+  "sha256": "1mbsxr4llz8ny7n7w3lykld9yvbaywlfqnvr9l0aiv9rvmdv03bn",
+  "fetcher": "github",
+  "repo": "zenspider/package",
+  "unstable": {
+   "version": [
+    20190702,
+    253
+   ],
+   "commit": "3d108ff6af00d2fe978787217a13660af057cafc",
+   "sha256": "1ssrm6qafy0a49lpnqfs9va56m0mympavwr8rv5fyzrj97vqiabp"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "4a9618a44ec4f26a14e0136cd9d3c4855fceb25b",
+   "sha256": "1xv0ra130qg0ksgqi4npspnv0ckq77k7f5kcibavj030h578kj97"
+  }
+ },
+ {
+  "ename": "package-build",
+  "commit": "948fb86b710aafe6bc71f95554655dfdfcab0cca",
+  "sha256": "0kr82j9rbvmapsph0jdxy24p0b8mcnj01sg1myywf428nf30cgbh",
+  "fetcher": "github",
+  "repo": "melpa/package-build",
+  "unstable": {
+   "version": [
+    20200426,
+    2253
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "5fe5156491145c667286cb92be4191a348eaa31e",
+   "sha256": "1r9ir8jqfi2sqjjx9yxs4phxrpfw8x35nm58xfrqsjw158dspzai"
+  },
+  "stable": {
+   "version": [
+    2,
+    4
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "bc06686806d676658b5e962497770e47025c17f1",
+   "sha256": "1lm5mgvjhpxqfw5gcv99h4mwbq728b6f2hj5vjh1j67kdwy7ws8k"
+  }
+ },
+ {
+  "ename": "package-filter",
+  "commit": "89312eaf69f3d7ac46647255c847fcb45415e78d",
+  "sha256": "0am73zch2fy1hfjwzk8kg0j3lgbcz3hzxjrdf0j0a9w0myp0mmjm",
+  "fetcher": "github",
+  "repo": "milkypostman/package-filter",
+  "unstable": {
+   "version": [
+    20161122,
+    719
+   ],
+   "commit": "bc73b41aea1d65ca44ef1593ca13126df9bbb39e",
+   "sha256": "0fq31zcz5j0n29p3zmx2k2w0xvay24zs34mbq8nb0y0jr7ycm184"
+  }
+ },
+ {
+  "ename": "package-lint",
+  "commit": "e35516a9733d9ba39f7df441346d2624bc6dd5e7",
+  "sha256": "0yy39gywsw48isfgq9k7c5ibgfkaxiig0jbgmmd9s5a0rmrydiwf",
+  "fetcher": "github",
+  "repo": "purcell/package-lint",
+  "unstable": {
+   "version": [
+    20200419,
+    406
+   ],
+   "deps": [
+    "cl-lib",
+    "let-alist"
+   ],
+   "commit": "495da67557d35acb146ec1f38f7576126aec6bfc",
+   "sha256": "0nb83rs2hb097pvv63pkvdlyqx136mrcbzdjkyskwg3rd3rwvimq"
+  },
+  "stable": {
+   "version": [
+    0,
+    12
+   ],
+   "deps": [
+    "cl-lib",
+    "let-alist"
+   ],
+   "commit": "f86705d0d4ed81ea8ea14e00fe59714f11f7c2ba",
+   "sha256": "00inrfla7f824yh10rxlr0xq1cmyqigppsrfspd637d58239l6sw"
+  }
+ },
+ {
+  "ename": "package-lint-flymake",
+  "commit": "dbfb0250a58b2e31c32ff1496ed66a3c5439bd67",
+  "sha256": "076v3xvbxym7dwwl95j8kynj9kj2xw3gzq6qv6qkm0xls7df4yjz",
+  "fetcher": "github",
+  "repo": "purcell/package-lint",
+  "unstable": {
+   "version": [
+    20191116,
+    45
+   ],
+   "deps": [
+    "package-lint"
+   ],
+   "commit": "495da67557d35acb146ec1f38f7576126aec6bfc",
+   "sha256": "0nb83rs2hb097pvv63pkvdlyqx136mrcbzdjkyskwg3rd3rwvimq"
+  },
+  "stable": {
+   "version": [
+    0,
+    12
+   ],
+   "deps": [
+    "package-lint"
+   ],
+   "commit": "f86705d0d4ed81ea8ea14e00fe59714f11f7c2ba",
+   "sha256": "00inrfla7f824yh10rxlr0xq1cmyqigppsrfspd637d58239l6sw"
+  }
+ },
+ {
+  "ename": "package-safe-delete",
+  "commit": "61b961211276bd95655b6a0967eda5037a3d240b",
+  "sha256": "12ss5yjhnyxsif4vlbgxamn5jfa0wxkkphffxnv6drhvmpq226jw",
+  "fetcher": "github",
+  "repo": "Fanael/package-safe-delete",
+  "unstable": {
+   "version": [
+    20150116,
+    1607
+   ],
+   "deps": [
+    "epl"
+   ],
+   "commit": "138171e4fc03c0ef05a8260cbb5cd2e114c1c194",
+   "sha256": "1pdv6d6bm5jmpgjqf9ycvzasxz1205zdi0zjrmkr33c03azwz7rd"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    7
+   ],
+   "deps": [
+    "epl"
+   ],
+   "commit": "138171e4fc03c0ef05a8260cbb5cd2e114c1c194",
+   "sha256": "1pdv6d6bm5jmpgjqf9ycvzasxz1205zdi0zjrmkr33c03azwz7rd"
+  }
+ },
+ {
+  "ename": "package-utils",
+  "commit": "a1bb884a0299408daa716eba42cb39f79622766c",
+  "sha256": "02hgh7wg68ysfhw5hckrpshzv4vm1vnm395d34x6vpgl4ccx7v9r",
+  "fetcher": "github",
+  "repo": "Silex/package-utils",
+  "unstable": {
+   "version": [
+    20180514,
+    1415
+   ],
+   "deps": [
+    "restart-emacs"
+   ],
+   "commit": "5621b95c56b55499f0463fd8b29501da25d861bd",
+   "sha256": "1mhsf0l0253d9b7n3c68mw5kwnsk7wf217y7m2fiybh51bdgjfnd"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "restart-emacs"
+   ],
+   "commit": "5621b95c56b55499f0463fd8b29501da25d861bd",
+   "sha256": "1mhsf0l0253d9b7n3c68mw5kwnsk7wf217y7m2fiybh51bdgjfnd"
+  }
+ },
+ {
+  "ename": "packed",
+  "commit": "57a2fb9524df3fdfdc54c403112e12bd70888b23",
+  "sha256": "103z6fas2fkvlhvwbv1rl6jcij5pfsv5vlqqsb4dkq1b0s7k11jd",
+  "fetcher": "github",
+  "repo": "emacscollective/packed",
+  "unstable": {
+   "version": [
+    20180318,
+    1729
+   ],
+   "commit": "c41c3dfda86ae33832ffc146923e2a4675cbacfa",
+   "sha256": "1272xmb3l8ddfijqzci3x0kxwibqb0sbkci4rbcv9ba9hpxp4d1v"
+  },
+  "stable": {
+   "version": [
+    3,
+    0,
+    0
+   ],
+   "commit": "c41c3dfda86ae33832ffc146923e2a4675cbacfa",
+   "sha256": "1272xmb3l8ddfijqzci3x0kxwibqb0sbkci4rbcv9ba9hpxp4d1v"
+  }
+ },
+ {
+  "ename": "pacmacs",
+  "commit": "52ce427e046267655dd9f836e57176d59f23e601",
+  "sha256": "0w0r6z365jrglpbifb94w6c22wqi9x93qgkss9pn820hrndqbqxy",
+  "fetcher": "github",
+  "repo": "codingteam/pacmacs.el",
+  "unstable": {
+   "version": [
+    20160131,
+    832
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "dash-functional",
+    "f"
+   ],
+   "commit": "d813e9c62c2540fe619234824fc60e128c786442",
+   "sha256": "0zx72qbqy2n1r6mjylw67zb6nnchp2b49vsdyl0k5bdaq2xyqv6i"
+  }
+ },
+ {
+  "ename": "pact-mode",
+  "commit": "b8e11b488c937ac9290f2e6acde92a87024a9012",
+  "sha256": "1awmczhz4cl2vxrn0h1wqkrhy1n9p4j3ayksvgifr4cfhqlsxk6v",
+  "fetcher": "github",
+  "repo": "kadena-io/pact-mode",
+  "unstable": {
+   "version": [
+    20191117,
+    2337
+   ],
+   "commit": "220bf985cb31d60f47042d5f424de8b9a589e544",
+   "sha256": "0cz87z2y54lqvsl2xhpjmndccj7051f2v9qpqrjr3qdwmfr6azsw"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    5
+   ],
+   "commit": "5df7032cf9b61ae5aff36ac7d2a23b2ab0e00904",
+   "sha256": "0hdg5b3mnld8pcfiawn51dc65dfws6gr7j4fvjc2gnhypy36l8xl"
+  }
+ },
+ {
+  "ename": "paganini-theme",
+  "commit": "d6fbb609b411df4fe6f66a7afe27eda7d297f140",
+  "sha256": "1kypkf52hjlfj75pcmjf2a60m6iwj0y1dspjwqynzz3l48i6ippm",
+  "fetcher": "github",
+  "repo": "onurtemizkan/paganini",
+  "unstable": {
+   "version": [
+    20180815,
+    1921
+   ],
+   "commit": "255c5a2a8abee9c5935465ec42b9c3604c178c3c",
+   "sha256": "0qhmj8dyy722ds8cmwghhxknwwis1w64wix2hdmzs21c5pa5hgkw"
+  }
+ },
+ {
+  "ename": "page-break-lines",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0i5kx191wnq9763jyqxbyh33hvdaqbd98a1rhgqd97zhvg0hslz1",
+  "fetcher": "github",
+  "repo": "purcell/page-break-lines",
+  "unstable": {
+   "version": [
+    20200305,
+    244
+   ],
+   "commit": "314b397910b3d16bb7cbcc25098696348e678080",
+   "sha256": "106w2n01i9d6z2r43lwwrm7hlppi9bkf8g8nsqd91f0f06921plw"
+  },
+  "stable": {
+   "version": [
+    0,
+    11
+   ],
+   "commit": "67b5928a7f14568baf2716b5741e13659a86b9ea",
+   "sha256": "1wp974716ih2cz9kdmdz7xwjy1qnnfzdzlfr9kchknagw8d9nn12"
+  }
+ },
+ {
+  "ename": "pager",
+  "commit": "5f2a50f62475639af011c99c6cc38928b74b3b0a",
+  "sha256": "0s5zwimkbsivbwlyd7g8dpnjyzqcfc5plg53ij4sljiipgjh5brl",
+  "fetcher": "github",
+  "repo": "emacsorphanage/pager",
+  "unstable": {
+   "version": [
+    20151202,
+    120
+   ],
+   "commit": "5c791ed23f1136e04040d6f4bc9b4ca5b6dc919f",
+   "sha256": "198zlh7zrql1185b9qjim44a09kbbgs9zyahak9nhv1gxqn7mrdf"
+  }
+ },
+ {
+  "ename": "pager-default-keybindings",
+  "commit": "87faee8c9820dd47feccdfbce7fd57dbe2800405",
+  "sha256": "0vqb3s1fxkl1fxxspq89344s55sfcplz26z0pbh347l1681h3pci",
+  "fetcher": "github",
+  "repo": "nflath/pager-default-keybindings",
+  "unstable": {
+   "version": [
+    20130719,
+    2057
+   ],
+   "deps": [
+    "pager"
+   ],
+   "commit": "dbbd49c2ac5906d1dabf9e9c832bfebc1ab405b3",
+   "sha256": "11msqs8v9wn8sj45dw1fl0ldi3sw33v0xclynbxgmawyabfq3bqm"
+  }
+ },
+ {
+  "ename": "palimpsest",
+  "commit": "14f6d011a0314637a2f4c1b00efa4912e67b7fa4",
+  "sha256": "18kklfdlcg982pdrslh0xqa42h28f91bdm7q2zn890d6dcivp6bk",
+  "fetcher": "github",
+  "repo": "danielsz/Palimpsest",
+  "unstable": {
+   "version": [
+    20200211,
+    641
+   ],
+   "commit": "389ec5b4c5067fa903c543b7fe1d804f30b6ced5",
+   "sha256": "1yki1sl2m7fj4m52gmb768h2qkv0j93lmd72jv21n20bnzvjp73v"
+  }
+ },
+ {
+  "ename": "pallet",
+  "commit": "bf977287e9bd668efbd972c9937906384ee832c6",
+  "sha256": "0q50cdwnn2w1n5h4bappncjjyi5yaixxannwgy23fngdrz1mxwd7",
+  "fetcher": "github",
+  "repo": "rdallasgray/pallet",
+  "unstable": {
+   "version": [
+    20150512,
+    702
+   ],
+   "deps": [
+    "cask",
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "b8d0df1883224a371ac0a3bc9b9c1c4dc61e6ac0",
+   "sha256": "0j87yq8rycklk8df4rlwx0bp2n94pyhaz4yv8vacbqrzchpa1bb0"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    2
+   ],
+   "deps": [
+    "cask",
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "0e1ae11e1ebfe644cbf832df62ac2dbf6ecd0501",
+   "sha256": "03mlg6dmpjw8fq2s3c4gpqj20kjhzldz3m51bf6s0mxq9bclx2xw"
+  }
+ },
+ {
+  "ename": "pamparam",
+  "commit": "03de45e491e970cc5733950a825b98545b5ac24b",
+  "sha256": "01n35a3fnwbb7w2qpk8b5f9wwmr6d5jcjzcv6gnc1768a43p9yzf",
+  "fetcher": "github",
+  "repo": "abo-abo/pamparam",
+  "unstable": {
+   "version": [
+    20200410,
+    1155
+   ],
+   "deps": [
+    "hydra",
+    "lispy",
+    "worf"
+   ],
+   "commit": "f9d83bbf5eb883bce6873dd6fd97484b6805215c",
+   "sha256": "0av69k6psrpmyadm2r0frwdbqyvpa4flzkrmi88w0vx3g0cxiv2k"
+  }
+ },
+ {
+  "ename": "panda",
+  "commit": "69800de45dda180450ed9d47a24181b659d9d1ae",
+  "sha256": "04app7ni9q04v7pi1ppi5qgx5klcpawflmbsj58y33gz29di1zjk",
+  "fetcher": "github",
+  "repo": "sebasmonia/panda",
+  "unstable": {
+   "version": [
+    20200424,
+    2206
+   ],
+   "commit": "bdd9f80283d8ae4a69f8789e5f18b1560b94fe43",
+   "sha256": "1ld4igmmjk7p7dxm0mnfks3k0cqpqjxrvlmjdi0m7w11ba8dsah9"
+  }
+ },
+ {
+  "ename": "panda-theme",
+  "commit": "a90ca1275ceab8e1ea4fdfa9049fbd24a5fd0bf5",
+  "sha256": "1q3zp331hz8l54p8ym9jrs4f36aj15r8aka6bqqnalnk237xqxl7",
+  "fetcher": "github",
+  "repo": "jamiecollinson/emacs-panda-theme",
+  "unstable": {
+   "version": [
+    20181128,
+    1738
+   ],
+   "commit": "60aa47c7a930377807da0d601351ad91e8ca446a",
+   "sha256": "169khnipnxv0y412wc2r5nsh9d9zwpdyip0l9ayyzb19zdjl1l47"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "ae24179e7a8a9667b169f00dbd891257530c1d22",
+   "sha256": "05vv4idl9h59jd089hpd09xcy1ix30bq0c4fif2b66170aychvii"
+  }
+ },
+ {
+  "ename": "pandoc",
+  "commit": "d6c21ff09d67fad2658e0de08bc2edb7588c504a",
+  "sha256": "0x81anxam7agr2v2zqgc331zs5s5zxcw54kzpanndda23n51h5cc",
+  "fetcher": "github",
+  "repo": "zonuexe/pandoc.el",
+  "unstable": {
+   "version": [
+    20161128,
+    1157
+   ],
+   "commit": "198d262d09e30448f1672338b0b5a81cf75e1eaa",
+   "sha256": "0njc6xlwa8hihyqrk0hs12sb6rs7jma2wpjfr8xsj9p8jld4y359"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "commit": "0f59533bbd8494fea3172551efb6ec49f61ba285",
+   "sha256": "0xqd64k8liaywsf65apj5xmf7ip6sikjmpc4740nld8iywhq8gf4"
+  }
+ },
+ {
+  "ename": "pandoc-mode",
+  "commit": "4e39cd8e8b4f61c04fa967def6a653bb22f45f5b",
+  "sha256": "0qvc6cf87h1jqf590kd68jfg25snxaxayfds634wj4z6gp70l781",
+  "fetcher": "github",
+  "repo": "joostkremers/pandoc-mode",
+  "unstable": {
+   "version": [
+    20200303,
+    2322
+   ],
+   "deps": [
+    "dash",
+    "hydra"
+   ],
+   "commit": "befd7be704d6dbe3dba69da761fc62e0609c9366",
+   "sha256": "0c621viqjss1ynzgcb81afck9rl1lwadzq68vas4gb2zjb5dd06h"
+  },
+  "stable": {
+   "version": [
+    2,
+    27,
+    2
+   ],
+   "deps": [
+    "dash",
+    "hydra"
+   ],
+   "commit": "7b9a19d8777a21431a819281a14201bfdf1dfdc1",
+   "sha256": "04bqc7mhgkfks3nsvimd3rrriv4nqbksmv5ahlbbd03aqa2b0vrv"
+  }
+ },
+ {
+  "ename": "pangu-spacing",
+  "commit": "c0b00eda1d20ff2cbffe3ac606e5fd60d915a5d6",
+  "sha256": "082qh26vlk7kifz1800lyai17yvngwjygrfrsh1dsd8dxhk6l9j8",
+  "fetcher": "github",
+  "repo": "coldnew/pangu-spacing",
+  "unstable": {
+   "version": [
+    20190823,
+    401
+   ],
+   "commit": "f92898949ba3bf991fd229416f3bbb54e9c6c223",
+   "sha256": "0c8ad30313598mggjiq4szz1alc6kcswh7i8447kdci241rlyqrf"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "034b4ef8a1b29bf7bfed6a916380941506ed26ed",
+   "sha256": "0gmdzagyg0p7q1gyj2a3aqp2g4asljpib3n67nikr0v99c2mki5y"
+  }
+ },
+ {
+  "ename": "paper-theme",
+  "commit": "a7ea18a56370348715dec91f75adc162c800dd10",
+  "sha256": "1ph6c6g907cnxzl74byc754119qia8rs8y7wvaj8i6q3fz2658zr",
+  "fetcher": "github",
+  "repo": "cadadr/elisp",
+  "unstable": {
+   "version": [
+    20200510,
+    5
+   ],
+   "commit": "61a14d1a8c17930caca5c5daf893cedc9c23c5f3",
+   "sha256": "0acq8d8vlx3hd405wmi5w36gg88bz1c1crmlxbd2whgi8kyf506z"
+  }
+ },
+ {
+  "ename": "paperless",
+  "commit": "500be17952ffb6b8d1e524b5b3d316878202fabc",
+  "sha256": "182arnx2fz0dww6bvg6m70a1picqd3czmzwv92x0rb4ghwrnq2dq",
+  "fetcher": "github",
+  "repo": "atgreen/paperless",
+  "unstable": {
+   "version": [
+    20180224,
+    1245
+   ],
+   "deps": [
+    "cl-lib",
+    "f",
+    "s"
+   ],
+   "commit": "b3b6c05da393f6b1292a3d5937bc4499baabd0b6",
+   "sha256": "1b2gm823qd6bllgp9qg2vgskzg4rpdvh8bgic8708hkq6lwpdv70"
+  }
+ },
+ {
+  "ename": "paradox",
+  "commit": "1e6aed365c42987d64d0cd9a8a6178339b1b39e8",
+  "sha256": "1xq14nfvprsq18464qr4mhphq7cl1f570lji5n8z6j9vpfm9a4p2",
+  "fetcher": "github",
+  "repo": "Malabarba/paradox",
+  "unstable": {
+   "version": [
+    20191011,
+    1111
+   ],
+   "deps": [
+    "hydra",
+    "let-alist",
+    "seq",
+    "spinner"
+   ],
+   "commit": "339fe3518d1d102b2295670340e75caf4f01a29a",
+   "sha256": "05hwwdhx980jm1y495r8qng029wm02m45mm7w4wxyjhh6385rbzf"
+  },
+  "stable": {
+   "version": [
+    2,
+    5,
+    4
+   ],
+   "deps": [
+    "hydra",
+    "let-alist",
+    "seq",
+    "spinner"
+   ],
+   "commit": "d24fe4a329a939ffa1983886d77a6937e05149e4",
+   "sha256": "1v78nmqyx60ki64wql7faq6ihv2qbk72sb19cy6hnypi546d81yp"
+  }
+ },
+ {
+  "ename": "parchment-theme",
+  "commit": "f2302f512053b22e5abbd6a654cf94e4d5c7f5ca",
+  "sha256": "1dkl1f0zmnkw8xd89m5kd42rk4pg6a6wnm52g4p1b4yqqq27h6zm",
+  "fetcher": "github",
+  "repo": "ajgrf/parchment",
+  "unstable": {
+   "version": [
+    20200514,
+    2047
+   ],
+   "deps": [
+    "autothemer"
+   ],
+   "commit": "4fa14adbc043497fc942568fdb78505ca549e5b7",
+   "sha256": "1ply18yzdf1lxyia8knn6fk8wb4yzwicgdiscr2z87bpk8p5d2pb"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "commit": "b4dabed7939f8cf052c858ba29e295eee3f0ca13",
+   "sha256": "0361621f0xg786dvcw6xrfm9qkjr19cs8dkxgj8b5nq9isxyknh5"
+  }
+ },
+ {
+  "ename": "paredit",
+  "commit": "caaa21f235c4864f6008fb454d0a970a2fd22a86",
+  "sha256": "01qh8kfb5hyfi0jfl1kq3inkyzr0rf3wncmzgxlkfdc8zlq4v653",
+  "fetcher": "git",
+  "url": "https://mumble.net/~campbell/git/paredit.git",
+  "unstable": {
+   "version": [
+    20191121,
+    2328
+   ],
+   "commit": "814999bb320e6d5aaa9c8ff663b1933157129571",
+   "sha256": "0jb3qwx8bxr7x17cgqbd6v53634i9lmrcnqn847bnnlsvy0j094x"
+  },
+  "stable": {
+   "version": [
+    24
+   ],
+   "commit": "82bb75ceb2ddc272d6618d94874b7fc13181a409",
+   "sha256": "13wzz5fahbz5svc4ql3ajzzpd1fv0ynwpa5widklbcp5yqncv1vm"
+  }
+ },
+ {
+  "ename": "paredit-everywhere",
+  "commit": "593890222d074c6a308eb1b809077c6861e1af30",
+  "sha256": "0gbkwk8mrbjr2l8pz3q4y6j8q4m12zmzl31c88ngs1k5d86wav36",
+  "fetcher": "github",
+  "repo": "purcell/paredit-everywhere",
+  "unstable": {
+   "version": [
+    20180506,
+    849
+   ],
+   "deps": [
+    "paredit"
+   ],
+   "commit": "f04c522e6b088a11255a95cb1e6a08198b4d6537",
+   "sha256": "1jp6wk4zkfcma4akchbdh8wg5fi0i74m4cgnqnmvbyzwkbj6sf0q"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "paredit"
+   ],
+   "commit": "72b7cd5dcdc02233a32e9f1a6c2d21dc30532170",
+   "sha256": "0jbjwjl92pf0kih3p2x20ms2kpyzzam8fir661nimpmk802ahgkj"
+  }
+ },
+ {
+  "ename": "paredit-menu",
+  "commit": "8a6379588b373fca2769b8761de4ba13545c082c",
+  "sha256": "05jp4cc548x5f07k096dgizhivdpaajxq38hin831sm0p9cibm4p",
+  "fetcher": "github",
+  "repo": "phillord/paredit-menu",
+  "unstable": {
+   "version": [
+    20160128,
+    1733
+   ],
+   "deps": [
+    "paredit"
+   ],
+   "commit": "cc0ae85bd819f9ebfa4f2a419ab3b2d70e39c9c8",
+   "sha256": "15xkanrwxh3qqay3vkfqvhzs88g7nnfv9bqk509qflyhqnvc9sxr"
+  }
+ },
+ {
+  "ename": "paren-completer",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1k71nmsf155b4pvzcsymsc1bn42h9apypapkvc1kxyr6zm29zcr4",
+  "fetcher": "github",
+  "repo": "MatthewBregg/paren-completer",
+  "unstable": {
+   "version": [
+    20160501,
+    1052
+   ],
+   "commit": "74183a8e13fa1266271bdcbcb4bfb29a4f915f0a",
+   "sha256": "1il0gbyjnlxhk04z3lgxmvlmlhgc94rmxdf8nl5sk3gblqmr8v3b"
+  }
+ },
+ {
+  "ename": "paren-face",
+  "commit": "d398398d1d5838dc4985a06515ee668f0f566aab",
+  "sha256": "0dmzk66m3rd8x0rb925pyrfpc2qsvayks4kmhpb2ccdrx68pg8gf",
+  "fetcher": "github",
+  "repo": "tarsius/paren-face",
+  "unstable": {
+   "version": [
+    20200103,
+    1238
+   ],
+   "commit": "eb4a51b8ef455e0914108105e7c0008d675457cc",
+   "sha256": "17bdcxah216z928387yx6z9lmp4jsi461n8fwiqaibn2qy5fagas"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    6
+   ],
+   "commit": "eb4a51b8ef455e0914108105e7c0008d675457cc",
+   "sha256": "17bdcxah216z928387yx6z9lmp4jsi461n8fwiqaibn2qy5fagas"
+  }
+ },
+ {
+  "ename": "parent-mode",
+  "commit": "9736d8f6c3065c46b8c4e0056e9d592d3ec973e9",
+  "sha256": "1ndn6m6aasmk9yrml9xqj8141100nw7qi1bhnlsss3v8b6njwwig",
+  "fetcher": "github",
+  "repo": "Fanael/parent-mode",
+  "unstable": {
+   "version": [
+    20150824,
+    2300
+   ],
+   "commit": "db692cf08deff2f0e973e6e86e26662b44813d1b",
+   "sha256": "0i5bc7lyyrx6swqlrp9l5x72yzwi53qn6ldrfs99gh08b3yvsnni"
+  },
+  "stable": {
+   "version": [
+    2,
+    3
+   ],
+   "commit": "db692cf08deff2f0e973e6e86e26662b44813d1b",
+   "sha256": "0i5bc7lyyrx6swqlrp9l5x72yzwi53qn6ldrfs99gh08b3yvsnni"
+  }
+ },
+ {
+  "ename": "parinfer",
+  "commit": "470ab2b5cceef23692523b4668b15a0775a0a5ba",
+  "sha256": "05w4w7j6xyj19dm63073amd4n7fw4zm3qnn4x02fk2011iw8fq7i",
+  "fetcher": "github",
+  "repo": "DogLooksGood/parinfer-mode",
+  "unstable": {
+   "version": [
+    20180904,
+    844
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "eaad857ae4351f72a561ee3dec8943713510003f",
+   "sha256": "1yjq2ddqmsl9jfy4qggwk5f8602ybvsx5qd544whm2b5xm0c5z9y"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    10
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "5b3b247d68eeaf7404598cbcbf2158e07f16e65d",
+   "sha256": "0v97ncb0w1slb0x8861l3yr1kqz6fgw1fwl1z9lz6hh8p2ih34sk"
+  }
+ },
+ {
+  "ename": "parrot",
+  "commit": "b1b393ffb9b7691e8fc99bee5fc676463038a68d",
+  "sha256": "0m67b80vc3qivcxs4w6fpzdg6h9d8s75251rlhnbc0xp7271zgnk",
+  "fetcher": "github",
+  "repo": "dp12/parrot",
+  "unstable": {
+   "version": [
+    20191015,
+    2127
+   ],
+   "commit": "29265d118267e524453aaa9121c4eae213a63164",
+   "sha256": "04mpwsn16i00rbjyd3959kjyw1qn9xw9d9as6syhsfq5mzhwksni"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "commit": "13757524f1c708b866f4aaab5a9fb3599a1c4f56",
+   "sha256": "02anyi6mhw457pwsna3ycn1yxsavsmp6p96ffpwg1s7qidc44a4s"
+  }
+ },
+ {
+  "ename": "parse-csv",
+  "commit": "010a182f7424928036231774c2fe17b857e3ca40",
+  "sha256": "0khpfxbarw0plx8kka357d8wl1vvdih5797xlld9adc0g3cng0zz",
+  "fetcher": "github",
+  "repo": "mrc/el-csv",
+  "unstable": {
+   "version": [
+    20160512,
+    1723
+   ],
+   "commit": "96bef1ffbc89ea12d13311c9fa239c5c3e864890",
+   "sha256": "06xg6f74697zmn042wg259qlik2l21k4al08a06xz4gv9a83nsx6"
+  }
+ },
+ {
+  "ename": "parse-it",
+  "commit": "3f163ca64c2533603410f320c7e9b9b1c2635458",
+  "sha256": "076b981jdhgv7kqdj6xnckp3x25wfymy0il9fffrpyfs7hrcdzgf",
+  "fetcher": "github",
+  "repo": "jcs-elpa/parse-it",
+  "unstable": {
+   "version": [
+    20191209,
+    549
+   ],
+   "deps": [
+    "cl-lib",
+    "s"
+   ],
+   "commit": "ff9f9049ac039473f0ba5d070ac0e6d89cfbf851",
+   "sha256": "05ckrhkxffzcz1igqwznbkxc1hpidvsnwv6cxp8n4q6kmniagx4i"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    7
+   ],
+   "deps": [
+    "cl-lib",
+    "s"
+   ],
+   "commit": "318cb29153c6ae0032ddceb69bb8c1f2a7df5ef6",
+   "sha256": "0f2fjb0a0yj62dy3j820fgxlpg2gsv1awaswwrb2rv7mp44drr4f"
+  }
+ },
+ {
+  "ename": "parsebib",
+  "commit": "c39633957475dcd6a033760ba20a957716cce59c",
+  "sha256": "07br2x68scsxykdk2ajc4mfqhdb7vjkcfgz3vnpy91sirxzgfjdd",
+  "fetcher": "github",
+  "repo": "joostkremers/parsebib",
+  "unstable": {
+   "version": [
+    20200513,
+    2352
+   ],
+   "commit": "3497b6068d78ae15ba1eaf94e4315d18e9ae6b00",
+   "sha256": "0vf9qrkc4dna2f9l0ry1qhfxy7yw1dlilgh38dlp42kqdyp5qny8"
+  },
+  "stable": {
+   "version": [
+    2,
+    3,
+    3
+   ],
+   "commit": "683c970a6fb51591bc88ee80e295fedee876e044",
+   "sha256": "0mpgyy9qfb5x4fvlmb274hgayjbwf0bgk65dxyx31zikjwpcd56p"
+  }
+ },
+ {
+  "ename": "parsec",
+  "commit": "248aaf5ff9c98cd3e439d0a26611cdefe6b6c32a",
+  "sha256": "1p3364sv5r868xjj1411xqj4acxqmbzcdl900sd03585ql5wbypj",
+  "fetcher": "github",
+  "repo": "cute-jumper/parsec.el",
+  "unstable": {
+   "version": [
+    20180730,
+    16
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "2cbbbc2254aa7bcaa4fb5e07c8c1bf2f381dba26",
+   "sha256": "1g1s8s45g3kkbi3h7w0pmadmzdswb64mkdvdpg2lihg341kx37gm"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    3
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "8f0c266d8b9b0ee5fcf9b80c518644b2849ff3b3",
+   "sha256": "1zwdh3dwqvw9z79mxgf9kf1l2c0pb32sknhrs7ppca613nk9c58j"
+  }
+ },
+ {
+  "ename": "parseclj",
+  "commit": "e2a977779a7ee49f57b849b14e581210a7f47d61",
+  "sha256": "077qigx0qyjyvm3437ffnv05rmnpqxvpxf69yyfdgnay1xclv172",
+  "fetcher": "github",
+  "repo": "clojure-emacs/parseclj",
+  "unstable": {
+   "version": [
+    20190531,
+    711
+   ],
+   "deps": [
+    "a"
+   ],
+   "commit": "b34d3e13a249d4b92f1a008cdc1df20a92f866c5",
+   "sha256": "1bnlqkmpqpnmmsyhx49mryhkrkaq6v68x7a4kg2pn19ycf9xz6ds"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "a"
+   ],
+   "commit": "93a0f43529598984835f88e64b62fa68bebda89b",
+   "sha256": "03bm5dm4hmkqimv4wqxjjh5814pxysmm7z54bv2rf7zwv1x7dggr"
+  }
+ },
+ {
+  "ename": "parseedn",
+  "commit": "462a022a83186b8c70e888cc8df42601777504dd",
+  "sha256": "0lb0qkvsga90ysa3a1pn8ydf108lsq2azxzzm7xvxbgk0d1xzhjp",
+  "fetcher": "github",
+  "repo": "clojure-emacs/parseedn",
+  "unstable": {
+   "version": [
+    20200419,
+    1124
+   ],
+   "deps": [
+    "a",
+    "parseclj"
+   ],
+   "commit": "92bf875962e62f8c6370b56991d546f122536c6b",
+   "sha256": "0xli6cf0fzydnd683v3hk5kfsbxwh83s916fd64j8ak0wzjnlsfr"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "a",
+    "parseclj"
+   ],
+   "commit": "ddf824bc1df1585867cb7f27f2dd8ca8df760569",
+   "sha256": "11wi3hwcgmy54p6ivpijqm7v0hj6j75a19qk5z779bqfrp79b4pc"
+  }
+ },
+ {
+  "ename": "pasp-mode",
+  "commit": "f3c1bbfc6b3a60f8bb4f0ee77ec4108e9d3f458b",
+  "sha256": "0aix8siyd5yhgxq94k1sl64a9q2xlfrz6cj9y5mcqhb6qjgmrnva",
+  "fetcher": "github",
+  "repo": "santifa/pasp-mode",
+  "unstable": {
+   "version": [
+    20180404,
+    1700
+   ],
+   "commit": "59385eb0e8ebcfc8c11dd811fb145d4b0fa3cc92",
+   "sha256": "1ar4vws3izzmir7m870mccci620ns3c5j26dcmwaxavhgw45wcmf"
+  }
+ },
+ {
+  "ename": "pass",
+  "commit": "428c2d53db69bed8938ec3486dfcf7fc048cd4e8",
+  "sha256": "1vvyvnqf6k7wm0p45scwi6ny86slkrcbr36lnxdlkf96cqyrqzfr",
+  "fetcher": "github",
+  "repo": "NicolasPetton/pass",
+  "unstable": {
+   "version": [
+    20190830,
+    2017
+   ],
+   "deps": [
+    "f",
+    "password-store",
+    "password-store-otp"
+   ],
+   "commit": "919d8e3826d556433ab67d4ee21a509d209d1baa",
+   "sha256": "03cf7d51p7d5a9nmlzp1k0n68j4n0di0nmpmcx3vlfd62lk3rs2p"
+  },
+  "stable": {
+   "version": [
+    2,
+    0
+   ],
+   "deps": [
+    "f",
+    "password-store",
+    "password-store-otp"
+   ],
+   "commit": "35e3f86e96878520e690513cdbc1b2753b173e72",
+   "sha256": "0jc8j421mlflspg24jvrqc2n3y5n3cpk3hjy560il8g36xi1049p"
+  }
+ },
+ {
+  "ename": "passmm",
+  "commit": "8ae2a1e10375f9cd55d19502c9740b2737eba209",
+  "sha256": "0p6qps9ww7s6w5x7p6ha26xj540pk4bjkr629lcicrvnfr5jsg4b",
+  "fetcher": "github",
+  "repo": "pjones/passmm",
+  "unstable": {
+   "version": [
+    20181130,
+    1612
+   ],
+   "deps": [
+    "password-store"
+   ],
+   "commit": "b25a92048c788a8477cc5ffe14c0c4a4df19d79a",
+   "sha256": "1jg2rs010fmw10ld0bfl6x7af3v9yqfy9ga5ixmam3qpilc8c4fw"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "deps": [
+    "password-store"
+   ],
+   "commit": "b25a92048c788a8477cc5ffe14c0c4a4df19d79a",
+   "sha256": "1jg2rs010fmw10ld0bfl6x7af3v9yqfy9ga5ixmam3qpilc8c4fw"
+  }
+ },
+ {
+  "ename": "password-generator",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1ziiz4x4slfadlm7fjpmwvq4a9fi3ird74b6v5na499ylqnzrl59",
+  "fetcher": "github",
+  "repo": "zargener/emacs-password-genarator",
+  "unstable": {
+   "version": [
+    20150222,
+    2040
+   ],
+   "commit": "904cdb591a04305ba882ce19e1d117f5fa60f7d3",
+   "sha256": "1qgvn79qz1h8ykm5i1qv2fja4v2y0g2i0n5sf7byhnqhqlwn63nv"
+  }
+ },
+ {
+  "ename": "password-mode",
+  "commit": "28dafa392a378e7de2c6992fe17b33f6379dc6b8",
+  "sha256": "1rxh6jg99qxagc6i2xgvswvw93h4ma7j8lhjr4ln44vbgyhzph11",
+  "fetcher": "github",
+  "repo": "juergenhoetzel/password-mode",
+  "unstable": {
+   "version": [
+    20170412,
+    629
+   ],
+   "commit": "ed764a4ec1011526457c71b7c37fa9a659a866ab",
+   "sha256": "102zydbkr2zrr7w0j11n7pivnsdmq3c6lykf3qc84jifp7j58pgr"
+  }
+ },
+ {
+  "ename": "password-store",
+  "commit": "207f8ec84572176749d328cb2bbc4e87c36f202c",
+  "sha256": "03r8j14l12yc42b51fzvn1jh8j85nyl1rg6c80r0a7ihwkj27jv6",
+  "fetcher": "github",
+  "repo": "zx2c4/password-store",
+  "unstable": {
+   "version": [
+    20200328,
+    1214
+   ],
+   "deps": [
+    "auth-source-pass",
+    "s",
+    "with-editor"
+   ],
+   "commit": "07b169ec32ad6961ed8625a0b932a663abcb01d2",
+   "sha256": "1dl3bck16zwhpspjrms11dknqgadnmpjqhcplkvv3v4f7vbnij6v"
+  },
+  "stable": {
+   "version": [
+    1,
+    7,
+    3
+   ],
+   "deps": [
+    "f",
+    "s",
+    "with-editor"
+   ],
+   "commit": "74fdfb5022f317ad48d449e29543710bdad1afda",
+   "sha256": "0nixbsyckkp1qjszgac74m00vj10vc3vyw2wic1zgc2rx795k228"
+  }
+ },
+ {
+  "ename": "password-store-otp",
+  "commit": "fc89d02554a6ff150ad42634879073892f3e88be",
+  "sha256": "0m3n4gjf6hmcs2kg80h1whzbl74zsj79ihliyqfcdfc4v31m32sg",
+  "fetcher": "github",
+  "repo": "volrath/password-store-otp.el",
+  "unstable": {
+   "version": [
+    20190713,
+    1748
+   ],
+   "deps": [
+    "password-store",
+    "s"
+   ],
+   "commit": "04998c8578a060ab4a4e8f46f2ee0aafad4ab4d5",
+   "sha256": "1c9lvxi0yf0x3ywciv58zkn9ss6n41305g5rp4l32a33sq51s567"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    5
+   ],
+   "deps": [
+    "password-store",
+    "s"
+   ],
+   "commit": "a39a64a91de36e87b852339635bd3c5fb0e32441",
+   "sha256": "0gb48blvnn6ci2wl45z81p41ny7vbgl610hqy6b2hyr2171qjd60"
+  }
+ },
+ {
+  "ename": "password-vault",
+  "commit": "71ad3fa96afa18b5002faf9272732c7d09826493",
+  "sha256": "17i556xwq6yaxv9v18l1abcpbaz6hygsa4vf4b68fc98vcy7396a",
+  "fetcher": "github",
+  "repo": "PuercoPop/password-vault",
+  "unstable": {
+   "version": [
+    20160126,
+    1820
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "dc56e6c2f5da66f1ab63736cecf08fb2c6c2b30f",
+   "sha256": "0921xwg3d3345hiqz4c1iyqwvfyg8rv0wggcnig7xh9qivspag4c"
+  }
+ },
+ {
+  "ename": "paste-of-code",
+  "commit": "b29a5101bb6fc01b8b6e1b798ce6f73bc6d34944",
+  "sha256": "0wjcchpp1689arfz6s7gfq4bxn0svz6qj5azvjwwsyzais1bicdi",
+  "fetcher": "github",
+  "repo": "spebern/paste-of-code.el",
+  "unstable": {
+   "version": [
+    20170709,
+    2355
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "92d258e8ec98598d847ecab82903f9224c7c2050",
+   "sha256": "1bf2d0i726psjwnqdp0w4h0qk7fnwcbwf1a66q7p8vczavqygfan"
+  }
+ },
+ {
+  "ename": "pastebin",
+  "commit": "0fda2b54a0ff0b6fc3bd6d20cfcbbf63cae5380f",
+  "sha256": "0ff01vzslgdmsj1jp1m2lvnan6immd4l7vz466g1glb5nkb7qfcr",
+  "fetcher": "github",
+  "repo": "nicferrier/elpastebin",
+  "unstable": {
+   "version": [
+    20101125,
+    2002
+   ],
+   "commit": "8e9a829298ce0f747ab80758aa26caeb2af6cb30",
+   "sha256": "1hjzpza8zmzb83sacmqcnh9a52m4x5d8xbwvcqvld1ajglv4y124"
+  }
+ },
+ {
+  "ename": "pastehub",
+  "commit": "bb8645a9880c586ef2ad16f3a4e61ba76176c224",
+  "sha256": "1slvqn5ay6gkbi0ai1gy1wmc02h4g3n6srrh4fqn72y7b9nv5i0v",
+  "fetcher": "github",
+  "repo": "kiyoka/pastehub",
+  "unstable": {
+   "version": [
+    20140615,
+    620
+   ],
+   "commit": "37b045c67659c078f1517d0fbd5282dab58dca23",
+   "sha256": "0m6qjsq6qfwwszm95lj8c58l75vbmx9r5hm9bfywyympfgy0fa1n"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    2
+   ],
+   "commit": "37b045c67659c078f1517d0fbd5282dab58dca23",
+   "sha256": "0m6qjsq6qfwwszm95lj8c58l75vbmx9r5hm9bfywyympfgy0fa1n"
+  }
+ },
+ {
+  "ename": "pastelmac-theme",
+  "commit": "a7151773de39fe570e3e9b351daad89db9dd267f",
+  "sha256": "168zzqhp2dbfcnknwfqxk68rgmibfw71ksghvi6h2j2c1m08l23f",
+  "fetcher": "github",
+  "repo": "bmastenbrook/pastelmac-theme-el",
+  "unstable": {
+   "version": [
+    20151031,
+    236
+   ],
+   "commit": "bead21741e3f46f6506e8aef4469d4240a819389",
+   "sha256": "1v5mpjb8kavbqhvg4rizwg8cypgmi6ngdiy8qp9pimmkb56y42ly"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "bead21741e3f46f6506e8aef4469d4240a819389",
+   "sha256": "1v5mpjb8kavbqhvg4rizwg8cypgmi6ngdiy8qp9pimmkb56y42ly"
+  }
+ },
+ {
+  "ename": "pastery",
+  "commit": "6058218450071db0af9a5b8ce8ec09a735c4ab66",
+  "sha256": "006qawjc86spbbs2pxvhg9w94rcsxap577cndqwaiw1k0cc8vkhp",
+  "fetcher": "github",
+  "repo": "diasbruno/pastery.el",
+  "unstable": {
+   "version": [
+    20171114,
+    349
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "4493be98b743b4d062cb4e00760125e394a55022",
+   "sha256": "0bmm18d84lrkclg4md46k1ma03w7a97s10hrvjcm9yj8xbrjqqsc"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "4493be98b743b4d062cb4e00760125e394a55022",
+   "sha256": "0bmm18d84lrkclg4md46k1ma03w7a97s10hrvjcm9yj8xbrjqqsc"
+  }
+ },
+ {
+  "ename": "path-headerline-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0yw2i3cp20v8nd2wj1rs1qad8abghzzasf2sjyla90q06wlna98w",
+  "fetcher": "github",
+  "repo": "7696122/path-headerline-mode",
+  "unstable": {
+   "version": [
+    20140423,
+    1332
+   ],
+   "commit": "b5b2725c6a8b1cb592fc242b7dbbd54b4dff2e69",
+   "sha256": "1ffnkw8djs8kvfjd1crnaqram1vl4w3g1zhsqp74ds0mccsd6830"
+  }
+ },
+ {
+  "ename": "path-helper",
+  "commit": "a70b1a41e45d215be27d392429dcd4f82904295f",
+  "sha256": "0fff3l88jgflqpxlcfxfyp2prc2ichajvm7c8i19qhvw70sbasny",
+  "fetcher": "github",
+  "repo": "arouanet/path-helper",
+  "unstable": {
+   "version": [
+    20181208,
+    2229
+   ],
+   "commit": "34538affb3f341b3c56a875bb094ddb2b859a8ef",
+   "sha256": "0qzsalbxksb44f0x7fndl2qyp1yf575qs56skfzmpnpa82dck88g"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "34538affb3f341b3c56a875bb094ddb2b859a8ef",
+   "sha256": "0qzsalbxksb44f0x7fndl2qyp1yf575qs56skfzmpnpa82dck88g"
+  }
+ },
+ {
+  "ename": "pathify",
+  "commit": "459460c977b9cf033e22937899ad380e01efcf11",
+  "sha256": "1z970xnzbhmfikj1rkfx24jvwc7f1xxw6hk7kmahxvphjxrvgc2f",
+  "fetcher": "github",
+  "repo": "alezost/pathify.el",
+  "unstable": {
+   "version": [
+    20160423,
+    846
+   ],
+   "commit": "401b184c743694a60b3bc4273fc43de05cd5ac4b",
+   "sha256": "0wsq11qffw1lx9x79law7jrz0sxm6km83gh891ic9ak2y6j5shxf"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "335332a900717ae01bde5ccb8f3dc97a5350f123",
+   "sha256": "1brdyrp2sz1pszdfr6f4w94qxk5lrd6kphc1xa5pywfns14c9386"
+  }
+ },
+ {
+  "ename": "paxedit",
+  "commit": "106b272c2f0741d21d31a0ddfa4f521c575559c1",
+  "sha256": "06ymilr0zrwfpyzql7dcpg48lhkx73f2jlaw3caxgsjaz7x3n4ic",
+  "fetcher": "github",
+  "repo": "promethial/paxedit",
+  "unstable": {
+   "version": [
+    20160730,
+    1727
+   ],
+   "deps": [
+    "cl-lib",
+    "paredit"
+   ],
+   "commit": "09f3d5aeb108937a801e77ef413e29eaa4ecc4be",
+   "sha256": "1yd5wh8fsxh3v2fgpxm2cd7h9xz9zfj2d8g4bh4gzqjwrmn5rlgl"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    8
+   ],
+   "deps": [
+    "cl-lib",
+    "paredit"
+   ],
+   "commit": "644eb7036a475fbcba4de5d46d6940b1e8ef33cd",
+   "sha256": "0jmhr658cczblag8knr8j77q58yj268rkhh5dmga66l0sb30wb21"
+  }
+ },
+ {
+  "ename": "pbcopy",
+  "commit": "2bbde7950ad5b3b801ca6a2a27c0f5294c8b7746",
+  "sha256": "1989pkhaha6s2rmgyswnzps92x9hhzymjz4ng4a5jda1b9snp60q",
+  "fetcher": "github",
+  "repo": "emacsfodder/pbcopy.el",
+  "unstable": {
+   "version": [
+    20150225,
+    459
+   ],
+   "commit": "338f7245746b5de1bb96c5cc2b32bfd9b5d83272",
+   "sha256": "138w0dlp3msjmr2x09kfcnxwhdldbz9xjfy7l6lig1x9ima0z5w6"
+  }
+ },
+ {
+  "ename": "pc-bufsw",
+  "commit": "5f2bbd34d673935846c286e73a1e2efaa00ab01a",
+  "sha256": "01d7735ininlsjkql7dy57irgwgk4k9br8bl18wq51vgkg90i5k5",
+  "fetcher": "github",
+  "repo": "ibukanov/pc-bufsw",
+  "unstable": {
+   "version": [
+    20191014,
+    848
+   ],
+   "commit": "a7c7bba4b7d511eceaaa8fee34d598296402555b",
+   "sha256": "0n6ijz86j88jq7w38yfamrqkjx8s1zbw1c0sa3dhpkv1jg87avb1"
+  }
+ },
+ {
+  "ename": "pcache",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0wwx20x6gzlli3hh4zd9pfv2cmqfm38xbl9p4vsgy08q1rm5agva",
+  "fetcher": "github",
+  "repo": "sigma/pcache",
+  "unstable": {
+   "version": [
+    20170105,
+    2214
+   ],
+   "deps": [
+    "eieio"
+   ],
+   "commit": "1f31433ad0b37a2e68d60ee043a8188ef1ce3176",
+   "sha256": "1bk6rg9qaaasbng6m6mdkjbwdm68zkr7mfwj18l34ivlz0f05sxw"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    2
+   ],
+   "deps": [
+    "eieio"
+   ],
+   "commit": "025ef2411fa1bf82a9ac61dfdb7bd4cedaf2d740",
+   "sha256": "1jkdyacpcvbsm1g2rjpnk6hfr01r3j5ibgh09441scz41v6xk248"
+  }
+ },
+ {
+  "ename": "pcap-mode",
+  "commit": "44f4cb526556a4b58b7e67314002e73413a59a76",
+  "sha256": "1p6lnr7yr8i3yp63xc8r1hnx8a4v0mz1s7q89zxx7aprk7i9kpv6",
+  "fetcher": "github",
+  "repo": "orgcandman/pcap-mode",
+  "unstable": {
+   "version": [
+    20161025,
+    1448
+   ],
+   "commit": "52780669af0ade136f84d73f21b4dbb7ab655416",
+   "sha256": "1v218cjs0qy3ac0rbzm22y1x388nxnf0pslh9jrvlymkn227pjs8"
+  }
+ },
+ {
+  "ename": "pcmpl-args",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "10mgci1rk6sr7wk46mnp5l37v3qxdc6yy5zfvy9mzwzh3va1pw31",
+  "fetcher": "github",
+  "repo": "JonWaltman/pcmpl-args.el",
+  "unstable": {
+   "version": [
+    20190223,
+    1613
+   ],
+   "commit": "0b8a05fc6e370fa9c466250659619f8d6b53d446",
+   "sha256": "1zhjpgnd8n95fv2z5d9360cx2vhw88yqz7gyc0qc563p6l3xmffg"
+  }
+ },
+ {
+  "ename": "pcmpl-git",
+  "commit": "6a51c16bed8d0a2fecad0ae9580d58cd44cc8930",
+  "sha256": "12y9pg1g4i1ghnjvgfdpa6p84h4bcqrr23y9bazwl9n6aj20cmxk",
+  "fetcher": "github",
+  "repo": "leoliu/pcmpl-git-el",
+  "unstable": {
+   "version": [
+    20170121,
+    59
+   ],
+   "commit": "9472ac70baeda025ef7becd1cf141d72aec93f32",
+   "sha256": "17y3rdp7fgyg4i9hwyzgpv1d19i5c6rqdf1gm5bdm2csk12vfg9n"
+  }
+ },
+ {
+  "ename": "pcmpl-homebrew",
+  "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228",
+  "sha256": "100a64d8qvxdz1lk42pidj48iqsycyyw92jjqcrn8rnqw1rnb3s7",
+  "fetcher": "github",
+  "repo": "zwild/pcmpl-homebrew",
+  "unstable": {
+   "version": [
+    20190213,
+    318
+   ],
+   "commit": "39f2e8faf4d866410a625bbcf88f2504940c8982",
+   "sha256": "0p5iynpg9c7zw7717m2mj1lmzcawc8sz4r2di3f8jc8qkng3avns"
+  }
+ },
+ {
+  "ename": "pcmpl-pip",
+  "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228",
+  "sha256": "1vl21i3aqdk2qr2r64sqg8jbslj3vxblwmbpzv732sl9gafsl990",
+  "fetcher": "github",
+  "repo": "zwild/pcmpl-pip",
+  "unstable": {
+   "version": [
+    20181229,
+    1420
+   ],
+   "deps": [
+    "f",
+    "s",
+    "seq"
+   ],
+   "commit": "bc79228674ad5c1bc458c90dd8839790fb0a09e8",
+   "sha256": "017fwacc3vqvvxx4mn0a1glcsxccjyfai0rymyf3yfy4rgd7w0p4"
+  }
+ },
+ {
+  "ename": "pcomplete-extension",
+  "commit": "6cb8a938418f84a5b0ede92e84a516f38e4b1011",
+  "sha256": "0m0c9ir44p21rj93fkisvpvi08936717ljmzsr4qdf69b3i54cwc",
+  "fetcher": "github",
+  "repo": "thierryvolpiatto/pcomplete-extension",
+  "unstable": {
+   "version": [
+    20190928,
+    519
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "bc5eb204fee659e0980056009409b44bc7655716",
+   "sha256": "06dsfjbwx1iq0f2xism288vh4cgn804hbvi3gv3zknnzcmh6nlxi"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "839740c90de857e18db2f578d6660951522faab5",
+   "sha256": "0h0p4c08z0dqxmg55fzch1d2f38rywfk1j0an2f4sc94lj7ckbm6"
+  }
+ },
+ {
+  "ename": "pcre2el",
+  "commit": "f04a25e467cc4c7d9a263330a7a1a53d67c6eb9b",
+  "sha256": "1l72hv9843qk5p8gi9ibr15wczm804j3ws2v1x7nx4dr7pc5c7l3",
+  "fetcher": "github",
+  "repo": "joddie/pcre2el",
+  "unstable": {
+   "version": [
+    20161120,
+    2103
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "0b5b2a2c173aab3fd14aac6cf5e90ad3bf58fa7d",
+   "sha256": "14br6ad138qx1z822wqssswqiihxiynz1k69p6mcdisr2q8yyi1z"
+  },
+  "stable": {
+   "version": [
+    1,
+    8
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "166a10472002010692dbc35f323ffb8110a294c5",
+   "sha256": "1dpfhrxbaqpgjzac3m9hclbzlnrxq9b8bx6za53aqvml72yzxc6i"
+  }
+ },
+ {
+  "ename": "pcsv",
+  "commit": "80ffaf99b2a4566a3f9d0309cd7b63f563f3826e",
+  "sha256": "1zphndkbva59g1fd319a240yvq8fjk315b1fyrb8zvmqpgk9n0dl",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-pcsv",
+  "unstable": {
+   "version": [
+    20150220,
+    1131
+   ],
+   "commit": "798e0933f8d0818beb17aebf3b1056bbf74e03d0",
+   "sha256": "0aaprjczjf3al5vcypw1fsnz5a0xnnlhmvy0lc83i9aqbsa2y8af"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    6
+   ],
+   "commit": "91599aaba70a8e8593fa2f36165af82cbd35e41e",
+   "sha256": "03k3xhrim4s3yvbnl8g8ci5g7chlffycdw7d6a1pz3077mxf1f1z"
+  }
+ },
+ {
+  "ename": "pdb-capf",
+  "commit": "f0b7e12b9f49dc4ed1cc5a6893accc882896f334",
+  "sha256": "0656a2s8r8dg11in8r5xx984lcxd5g5l3x6vnha50s0c4nx93x3y",
+  "fetcher": "github",
+  "repo": "muffinmad/emacs-pdb-capf",
+  "unstable": {
+   "version": [
+    20200419,
+    1237
+   ],
+   "commit": "2f4099aa1330f87df4e9cd526de057ee9b71de6c",
+   "sha256": "0fdzhsz3784lf50mdabz9h2b6992cab2nnn4xv7rx2a8hsyyq1mq"
+  }
+ },
+ {
+  "ename": "pdb-mode",
+  "commit": "6aee132aa24322fe1ac88ae17ee6e77ae1ec8d11",
+  "sha256": "1ihkxd15kx5m5xb9yxwz8wqbmyk9iaskry9szzdz1j4gjlczb6hy",
+  "fetcher": "github",
+  "repo": "sixpi/pdb-mode",
+  "unstable": {
+   "version": [
+    20150128,
+    1751
+   ],
+   "commit": "855fb18ebb73b5df30c8d7677c2bcd0f361b138a",
+   "sha256": "1xkkyz7y08jr71rzdacb9v7gk95qsxlsshkdsxq8jp70irq51099"
+  }
+ },
+ {
+  "ename": "pdf-tools",
+  "commit": "8e3d53913f4e8a618e125fa9c1efb3787fbf002d",
+  "sha256": "1hnc8cci00mw78h7d7gs8smzrgihqz871sdc9hfvamb7iglmdlxw",
+  "fetcher": "github",
+  "repo": "politza/pdf-tools",
+  "unstable": {
+   "version": [
+    20200512,
+    1524
+   ],
+   "deps": [
+    "let-alist",
+    "tablist"
+   ],
+   "commit": "c510442ab89c8a9e9881230eeb364f4663f59e76",
+   "sha256": "17z3cpn76g9dp62drjrgrqpp1bgf4gl5k5gspylskpvd4kj4bq4d"
+  },
+  "stable": {
+   "version": [
+    0,
+    90
+   ],
+   "deps": [
+    "let-alist",
+    "tablist"
+   ],
+   "commit": "af1a5949c2dae59ffcbcf21cc4299fa2fc57ce72",
+   "sha256": "0iv2g5kd14zk3r5dzdw7b7hk4b5w7qpbilcqkja46jgxbb6xnpl9"
+  }
+ },
+ {
+  "ename": "pdf-view-restore",
+  "commit": "66f0d3e9c7eea64f23191a3f7ac05158e3ae68bc",
+  "sha256": "1n3l7iyv5w937n0ihng8mzkaz09ngwclg5fv2s576d36b6jwm2k8",
+  "fetcher": "github",
+  "repo": "007kevin/pdf-view-restore",
+  "unstable": {
+   "version": [
+    20190904,
+    1708
+   ],
+   "deps": [
+    "pdf-tools"
+   ],
+   "commit": "5a1947c01a3edecc9e0fe7629041a2f53e0610c9",
+   "sha256": "1b9zzvfsprf7x0v7l4dabdh5qdfhl7mm30vvqah8l10jvlf2wlc7"
+  }
+ },
+ {
+  "ename": "pdfgrep",
+  "commit": "55b0c24f883fe589d1159ce3845cf250a0f47feb",
+  "sha256": "0q511l57xv1s6z496jrlz6j2nf0fync0dlbm4r800p49lbh4abl3",
+  "fetcher": "github",
+  "repo": "jeremy-compostella/pdfgrep",
+  "unstable": {
+   "version": [
+    20200306,
+    209
+   ],
+   "commit": "1576fc98754d3bdaa40573a037a80f1973110756",
+   "sha256": "1c3p3vdhy6wibxwpc76bvvm0583zmjmxs9pa453z3msbq33kc7j8"
+  }
+ },
+ {
+  "ename": "peacock-theme",
+  "commit": "641d1959bd31598fcdacd39a3d1bb077dcccfa5c",
+  "sha256": "0jpdq090r37d07bm52yx3x9y3gsip6fyxxq1ax1k5k0r0js45kq9",
+  "fetcher": "github",
+  "repo": "emacsfodder/emacs-peacock-theme",
+  "unstable": {
+   "version": [
+    20170808,
+    1320
+   ],
+   "commit": "9e46fbfb562b6e26c6e3d6d618b044b3694da4c8",
+   "sha256": "0w4dzdsv2cdldss5jwmdbjb5a62k5j1szwdim4gv8ldifhj7fy22"
+  }
+ },
+ {
+  "ename": "peek-mode",
+  "commit": "08384964d8c1f5f60c84c044d26a79105973ab21",
+  "sha256": "07wcnh3jmp2gi9xhd3d8i2n0pr2g9kav497nnz94i85awhzf8fi4",
+  "fetcher": "github",
+  "repo": "erikriverson/peek-mode",
+  "unstable": {
+   "version": [
+    20130620,
+    1946
+   ],
+   "deps": [
+    "elnode"
+   ],
+   "commit": "55a7dd011375330c7d57322257a5167516702c71",
+   "sha256": "11nv6pll0zj9dkgzlzgav39a6x3sfi7kvfhwm96fa3iy4v8bixrb"
+  }
+ },
+ {
+  "ename": "peep-dired",
+  "commit": "e8e06a916ac18053e34821673d1cf7936b15c2ac",
+  "sha256": "16k5y3h2ip96k071vhx83avg4r4nplnd973b1271vvxbx2bly735",
+  "fetcher": "github",
+  "repo": "asok/peep-dired",
+  "unstable": {
+   "version": [
+    20160321,
+    2237
+   ],
+   "commit": "1d410a4e48db07a942e54d3b83a85c7a7ec0aab3",
+   "sha256": "1b7csqypqkalkzq6vrbq5ry1gdk0qnhnk43rlj514mph0s1nywdd"
+  }
+ },
+ {
+  "ename": "peg",
+  "commit": "9b9b55a02e903ae7e75f8b636fdb1cf907c5db7c",
+  "sha256": "0nxy9xn99myz0p36m4jflfj48qxhhn1sspbfx8d90030xg3cc2gm",
+  "fetcher": "github",
+  "repo": "ellerh/peg.el",
+  "unstable": {
+   "version": [
+    20150708,
+    641
+   ],
+   "commit": "081efeca91d790c7fbc90871ac22c40935f4833b",
+   "sha256": "0kjz7ch4bn0m4v9zgqyqcrsasnqc5c5drv2hp22j7rnbb7ny0q3n"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "commit": "081efeca91d790c7fbc90871ac22c40935f4833b",
+   "sha256": "0kjz7ch4bn0m4v9zgqyqcrsasnqc5c5drv2hp22j7rnbb7ny0q3n"
+  }
+ },
+ {
+  "ename": "pelican-mode",
+  "commit": "aede5994c2e76c7fd860661c1e3252fb741f9228",
+  "sha256": "0z6w5j3qwb58pndqbmpsvy1l77w9jv90bss9qq9hicil8nlk4pvi",
+  "fetcher": "git",
+  "url": "https://git.korewanetadesu.com/pelican-mode.git",
+  "unstable": {
+   "version": [
+    20190124,
+    2336
+   ],
+   "commit": "65d7caf5d926599a5007eb7bc279215908aa5252",
+   "sha256": "1mmvsf1g2ym76ipgs7nl2fshw0rg1qij495rixga13qbkwb02hpl"
+  },
+  "stable": {
+   "version": [
+    20170808
+   ],
+   "commit": "8b13c30c4ec38dd535eadf26e463f8616d5c089c",
+   "sha256": "0rghcyp09ga95ag0pjbk4hdxxlsnr93dr6706z0xvfgmninbn5aw"
+  }
+ },
+ {
+  "ename": "pepita",
+  "commit": "e9a393b11eaa29dbd0bf966fa0ab290b08ac7f39",
+  "sha256": "0xyy137hl8g74grhj8ipij4c80xrga1afjvzz5hf8hpx4zqbljpx",
+  "fetcher": "github",
+  "repo": "sebasmonia/pepita",
+  "unstable": {
+   "version": [
+    20200228,
+    2257
+   ],
+   "deps": [
+    "csv"
+   ],
+   "commit": "263d6d940d7e4203bbecda46dbaa89b7af1db54f",
+   "sha256": "1jw27asnfd48mx3mi9qiihvj2hgzpmk53xdq87ajq9nsx8m6x110"
+  }
+ },
+ {
+  "ename": "per-buffer-theme",
+  "commit": "2a2a6c0bf1cad99ed82db7b90b8b7ab79827ac17",
+  "sha256": "06vykjgf4rxh832z74jxkhi4jxlh60hnh8zjvdyr9nbh1dy35bjn",
+  "fetcher": "hg",
+  "url": "https://hg.serna.eu/emacs/per-buffer-theme",
+  "unstable": {
+   "version": [
+    20191101,
+    2333
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "7df4d2f4be64dbcf0bf10a2b9ac3db858fbcd9c8",
+   "sha256": "04s14x3qi5aa18bfcr3zjbb109nm2pgwgnl36g7fw2crj8mz03v4"
+  }
+ },
+ {
+  "ename": "perfect-margin",
+  "commit": "8b8cd6a81d46da6beff2754f69b1d74ff9cc1d49",
+  "sha256": "0bn9bjz1bbl07z3wzhjplp0n5zla3yqc8phr3maap6mch3q0jc1y",
+  "fetcher": "github",
+  "repo": "mpwang/perfect-margin",
+  "unstable": {
+   "version": [
+    20190722,
+    126
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "94b055c743b1859098870c8aca3e915bd6e67d9d",
+   "sha256": "02k379nig43j85wfm327pw6sh61kxrs1gwz0vgcbx9san4dp83bk"
+  }
+ },
+ {
+  "ename": "perlbrew",
+  "commit": "24bd9c2cd848f5003a244a7127e8fc5ef46bdca4",
+  "sha256": "1qadwkcic2qckqy8hgrnj08ajhxayknhpyxkc6ir15vfqjk5crr8",
+  "fetcher": "github",
+  "repo": "kentaro/perlbrew.el",
+  "unstable": {
+   "version": [
+    20161109,
+    709
+   ],
+   "commit": "3a3406c3307c92aa30f9400d430925c434a3b6f0",
+   "sha256": "0kxz8ljc7w69ywp0bb15010sgrr13i1p05hcvhfr9c35l0n62r6p"
+  }
+ },
+ {
+  "ename": "persistent-overlays",
+  "commit": "d3673c87c5ca883b4f713efeae912c3ad991c667",
+  "sha256": "136acbxqykvsw8a5il1zgpxr7llxmc3347847vf0jnmbzb1b472a",
+  "fetcher": "github",
+  "repo": "mneilly/Emacs-Persistent-Overlays",
+  "unstable": {
+   "version": [
+    20161128,
+    700
+   ],
+   "commit": "f563c8b966edc78c9d806661c4eb80e4781c4eab",
+   "sha256": "0csllpkpjf4csw3zfaw8k05jg078najfmjz6pz1jcl6b4sxjdfqa"
+  }
+ },
+ {
+  "ename": "persistent-scratch",
+  "commit": "f1e32702bfa15490b692d5db59e22d2c07b292d1",
+  "sha256": "0iai65lsg3zxj07hdb9201w3rwrvdb3wffr6k2jdl8hzg5idghn1",
+  "fetcher": "github",
+  "repo": "Fanael/persistent-scratch",
+  "unstable": {
+   "version": [
+    20190922,
+    1046
+   ],
+   "commit": "fd690e138459e0b490f1fda469811a9cbcb34df7",
+   "sha256": "1nig9ja42sm3nkbi9wrsm86akrq0m85jfc65k9rmym13vrdpflvq"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    4
+   ],
+   "commit": "fd690e138459e0b490f1fda469811a9cbcb34df7",
+   "sha256": "1nig9ja42sm3nkbi9wrsm86akrq0m85jfc65k9rmym13vrdpflvq"
+  }
+ },
+ {
+  "ename": "persistent-soft",
+  "commit": "c9db386ab3910940addae6e925b2ac17e64e0f87",
+  "sha256": "0a4xiwpgyyynjf69s8p183mqd3z53absv544ggvhb2gkpm6jravc",
+  "fetcher": "github",
+  "repo": "rolandwalker/persistent-soft",
+  "unstable": {
+   "version": [
+    20150223,
+    1853
+   ],
+   "deps": [
+    "list-utils",
+    "pcache"
+   ],
+   "commit": "a1e0ddf2a12a6f18cab565dee250f070384cbe02",
+   "sha256": "14p20br8vzxs39d4hswzrrkgwql5nnmn5j17cpbabzjvck42rixc"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    10
+   ],
+   "deps": [
+    "list-utils",
+    "pcache"
+   ],
+   "commit": "a1e0ddf2a12a6f18cab565dee250f070384cbe02",
+   "sha256": "14p20br8vzxs39d4hswzrrkgwql5nnmn5j17cpbabzjvck42rixc"
+  }
+ },
+ {
+  "ename": "persp-fr",
+  "commit": "8e09213dddf003a1275eafb767431a507ecf7639",
+  "sha256": "0p4379yr1b32l8ghq1axyb8qhp28gnq5qxxvbk3mdzgbwwj8y4b2",
+  "fetcher": "github",
+  "repo": "rocher/persp-fr",
+  "unstable": {
+   "version": [
+    20191108,
+    754
+   ],
+   "deps": [
+    "dash",
+    "persp-mode"
+   ],
+   "commit": "1adbb6a9f9a4db580a9b7ed8b4091738e01345e6",
+   "sha256": "0f9ljpmq8b97n6wa8bwn4f2v7imvfxc2pjqk6xjkmwbfpihrns10"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    5
+   ],
+   "deps": [
+    "dash",
+    "persp-mode"
+   ],
+   "commit": "1adbb6a9f9a4db580a9b7ed8b4091738e01345e6",
+   "sha256": "0f9ljpmq8b97n6wa8bwn4f2v7imvfxc2pjqk6xjkmwbfpihrns10"
+  }
+ },
+ {
+  "ename": "persp-mode",
+  "commit": "caad63d14f770f07d09b6174b7b40c5ab06a1083",
+  "sha256": "1bgni7y5xsn4a21494npr90w3320snfzw1hvql30xrr57pw3765w",
+  "fetcher": "github",
+  "repo": "Bad-ptr/persp-mode.el",
+  "unstable": {
+   "version": [
+    20200222,
+    1106
+   ],
+   "commit": "391a7dc248c9c04b7ad424c696bdff578e14dd2c",
+   "sha256": "0b4y7a6j70s9lvr37riyy9k5kh3yvmx0m6nd9c0c8572ji4ij65g"
+  },
+  "stable": {
+   "version": [
+    2,
+    9,
+    8
+   ],
+   "commit": "391a7dc248c9c04b7ad424c696bdff578e14dd2c",
+   "sha256": "0b4y7a6j70s9lvr37riyy9k5kh3yvmx0m6nd9c0c8572ji4ij65g"
+  }
+ },
+ {
+  "ename": "persp-mode-projectile-bridge",
+  "commit": "2c049b0067b70577511114dc8abac0a00a9e0588",
+  "sha256": "169mpikixa33ljmh2n9sm186yibrik3f5p8m1hcisnzdsc3wgxmp",
+  "fetcher": "github",
+  "repo": "Bad-ptr/persp-mode-projectile-bridge.el",
+  "unstable": {
+   "version": [
+    20170315,
+    1120
+   ],
+   "deps": [
+    "cl-lib",
+    "persp-mode",
+    "projectile"
+   ],
+   "commit": "f6453cd7b8b4352c06e771706f2c5b7e2cdff1ce",
+   "sha256": "1gyfn2fhx3bqzr9m1r4b8nyak8pmpcgj7yz2bagnjs21vfngr18c"
+  }
+ },
+ {
+  "ename": "persp-projectile",
+  "commit": "8bc4e3a5af7ba86d277c73a1966a91c87d3d855a",
+  "sha256": "10l2kqjyigg98qbbpf3qf4d5bm63kkk4vp7ip8fibgj1p9gqmnxm",
+  "fetcher": "github",
+  "repo": "bbatsov/persp-projectile",
+  "unstable": {
+   "version": [
+    20180616,
+    1944
+   ],
+   "deps": [
+    "cl-lib",
+    "perspective",
+    "projectile"
+   ],
+   "commit": "533808b3e4f8f95a1e3ed9c55d9aa720277ebd5f",
+   "sha256": "17i1srw1k771i3a5wlydbyasyd9z39ryf48mxfs0dsbx1zjbj0pg"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "perspective",
+    "projectile"
+   ],
+   "commit": "7686633acf44402fa90429759cca6a155e4df2b9",
+   "sha256": "0rqyzsmg32sdr4k9i2lf3jfyr9bskkl7gfb5ndl16iip9py7403z"
+  }
+ },
+ {
+  "ename": "perspective",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "021ax1c2ys82dcjs5jl7b4nb83n6gax2imnpm030rcbihjl1lzm7",
+  "fetcher": "github",
+  "repo": "nex3/perspective-el",
+  "unstable": {
+   "version": [
+    20200513,
+    1416
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1fc13646623f42e1d70cf1f651c4b154e12070ca",
+   "sha256": "1gdacw1gkng1dhm12lhfssmac0fijsh3wpbvcmsv2jz3gpnjin1g"
+  },
+  "stable": {
+   "version": [
+    2,
+    8
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1fc13646623f42e1d70cf1f651c4b154e12070ca",
+   "sha256": "1gdacw1gkng1dhm12lhfssmac0fijsh3wpbvcmsv2jz3gpnjin1g"
+  }
+ },
+ {
+  "ename": "perspeen",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0kwmllas9vnppsfaviy58d0nk4hmlqp566mfr4l53x46sybv1y04",
+  "fetcher": "github",
+  "repo": "seudut/perspeen",
+  "unstable": {
+   "version": [
+    20171203,
+    1021
+   ],
+   "deps": [
+    "powerline"
+   ],
+   "commit": "edb70c530bda50ff3d1756e32a703d5fef5e5480",
+   "sha256": "12h0kj96s4h8z4kqalp7hccnlnqn5lrax3df75gz16pskx2dwxqr"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "30ee14339cf8fe2e59e5384085afee3f8eb58dda",
+   "sha256": "0mi7ipx0zg0vrm9da24i4j0300xj0dm3jjg35f466pm3a7xafrsg"
+  }
+ },
+ {
+  "ename": "pest-mode",
+  "commit": "d3145c38d53aa94c6ae33f2bc0cb804e246a8558",
+  "sha256": "0d89s1lqif6mdbm1fh6h1m4414sxa382rjyw3qqsm5iz2b5vf14p",
+  "fetcher": "github",
+  "repo": "ksqsf/pest-mode",
+  "unstable": {
+   "version": [
+    20200321,
+    504
+   ],
+   "commit": "4ae88a9c81d499bbe99978ff0216b645fed70023",
+   "sha256": "1zc7dmgp3s9q33wkvw6i7zzlcaa65ixx3hxb78m62lk2a7fzb3ih"
+  }
+ },
+ {
+  "ename": "pfuture",
+  "commit": "5fb70c9f56a58b5c7a2e8b69b191aa2fc7c9bcc8",
+  "sha256": "15fr9wkpv8v1p22wz7hsyihq7f807ck105c2crfs8y7capfvs53s",
+  "fetcher": "github",
+  "repo": "Alexander-Miller/pfuture",
+  "unstable": {
+   "version": [
+    20200425,
+    1357
+   ],
+   "commit": "d7926de3ba0105a36cfd00811fd6278aea903eef",
+   "sha256": "1chpin5277vbl2xvsl04pzzk7a9dbcvclibm2496gz6yvd19pwsf"
+  },
+  "stable": {
+   "version": [
+    1,
+    9
+   ],
+   "commit": "d7926de3ba0105a36cfd00811fd6278aea903eef",
+   "sha256": "1chpin5277vbl2xvsl04pzzk7a9dbcvclibm2496gz6yvd19pwsf"
+  }
+ },
+ {
+  "ename": "pg",
+  "commit": "5c4d1bb21948da2b283a3a9d89d9e3aed11afa13",
+  "sha256": "0n0187ndvwza1nis9a12h584qdqkwqfzhdw21kz5d1i6c43g7gji",
+  "fetcher": "github",
+  "repo": "cbbrowne/pg.el",
+  "unstable": {
+   "version": [
+    20130731,
+    2142
+   ],
+   "commit": "4f6516ec3946d95dcef49abb6703cc89ecb5183d",
+   "sha256": "1zh7v4nnpzvbi8yj1ynlqlawk5bmlxi6s80b5f2y7hkdqb5q26k0"
+  }
+ },
+ {
+  "ename": "pgdevenv",
+  "commit": "73ae474fc4792b2c322a0d2b5fd5b7cfe8c2fd05",
+  "sha256": "0za35sdwwav81wpk4jjqh56icaswwxxyg3bqqp0qiz24llb5ln1w",
+  "fetcher": "github",
+  "repo": "dimitri/pgdevenv-el",
+  "unstable": {
+   "version": [
+    20150105,
+    2236
+   ],
+   "commit": "7f1d5bc734750aca98cf67a9491cdbd5615fd132",
+   "sha256": "0c9d4c24ic67y07y74bv5b7vc56b6l0lbh2fbzm870r1dl5zbzcj"
+  }
+ },
+ {
+  "ename": "ph",
+  "commit": "f62ca074ca2df780ab32aac50b2b828ee6a9934c",
+  "sha256": "0azx4cpfdn01yrqyn0q1gg9z7w0h0rn7zl39v3dx6yidd76ysh0l",
+  "fetcher": "github",
+  "repo": "gromnitsky/ph",
+  "unstable": {
+   "version": [
+    20161029,
+    1522
+   ],
+   "commit": "ed80dad9211583ed0db633448b3624c99b7fac23",
+   "sha256": "1pgz64zv9a0r16i958x53g7wnk0q7ngcd6z1maf7lxhlp57v015d"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "ed45c371642e313810b56c45af08fdfbd71a7dfe",
+   "sha256": "1qxsc5wyk8l9gkgmqy3mzwxdhji1ljqw9s1jfxkax7fyv4d1v31p"
+  }
+ },
+ {
+  "ename": "phabricator",
+  "commit": "829010a578f34f0f2dfb36a0de01547c2950bb65",
+  "sha256": "07988f2xyp76xjs25b3rdblhmijs2piriz4p0q92jw69bdvkl14c",
+  "fetcher": "github",
+  "repo": "ajtulloch/phabricator.el",
+  "unstable": {
+   "version": [
+    20160510,
+    1425
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "projectile",
+    "s"
+   ],
+   "commit": "d09d6f059aea92d3b11c68664a5e80c901182ab8",
+   "sha256": "0cmfb5ns335nq27iw94qxvrldpwjga0hw40da9kpdcfg0in4ya0c"
+  }
+ },
+ {
+  "ename": "phan",
+  "commit": "eb13cb0dba1696cc51132cd1ff723fa17f892a7c",
+  "sha256": "17ar6nxy0plx5li49kgf4f0h99wwmnnp5kwmpf34jg9ygyhaglvb",
+  "fetcher": "github",
+  "repo": "emacs-php/phan.el",
+  "unstable": {
+   "version": [
+    20191125,
+    1408
+   ],
+   "deps": [
+    "composer",
+    "f"
+   ],
+   "commit": "2a6e1b66c2aad25fddb8b4f706a28a1aafaaa4c7",
+   "sha256": "1ivkkmjg9drp22l5hvira5m0ialca8kzw6pzj01wm4ykqsaajnlf"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    4
+   ],
+   "deps": [
+    "composer",
+    "f"
+   ],
+   "commit": "6b077b3421a0b2c0b98a6906b8ab0d14d9d7bf50",
+   "sha256": "1af4pam149dgxqzwqkjklxxqq2n8fg3l1b9w6bmaw24lx1pdxcyv"
+  }
+ },
+ {
+  "ename": "phi-autopair",
+  "commit": "f26b586c0126699f3de65bf38dfbf9c4c0149c15",
+  "sha256": "1ya1bvh28qgz1zg9kdh2lzbsf0w0lx4xr42mdrjwaz3bbfa9asg4",
+  "fetcher": "github",
+  "repo": "zk-phi/phi-autopair",
+  "unstable": {
+   "version": [
+    20191220,
+    311
+   ],
+   "deps": [
+    "paredit"
+   ],
+   "commit": "5685b9541c4c9d4cc8a892743fdf245aceea1682",
+   "sha256": "16kib35s7pffcs8kiljydbf5z1qq5l2d04dqqcnbbi0539y979n5"
+  }
+ },
+ {
+  "ename": "phi-grep",
+  "commit": "992655fa4bd209abdf1149572e95f853e595125e",
+  "sha256": "1y5lq6lq9qdydbypb1pjnxryh94a295nnqqh2x27whiwdiysirjj",
+  "fetcher": "github",
+  "repo": "zk-phi/phi-grep",
+  "unstable": {
+   "version": [
+    20190920,
+    908
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "06b740e3fb20074be9bae87530f5616a122c3aca",
+   "sha256": "0lwqlz6jp44dq7yhj5yvfrhnjlxlihkpqjil6d2ma20b2946n9ny"
+  }
+ },
+ {
+  "ename": "phi-rectangle",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "111fqqa7h5cajq92sbiqhavm25l5bcapxhfh38y7irq4mv08xifw",
+  "fetcher": "github",
+  "repo": "zk-phi/phi-rectangle",
+  "unstable": {
+   "version": [
+    20151208,
+    654
+   ],
+   "commit": "0c12716afc71d803d1f39417469521dc465762d9",
+   "sha256": "0d2c579rg8wdfmn94nzaix9332jch4wlr939jszls330s38d0iv4"
+  }
+ },
+ {
+  "ename": "phi-search",
+  "commit": "2f0274300c33f19ca6f868e1d570ffee513dbdf7",
+  "sha256": "0nj06ixl76dd80zg83q4bi8k224mcwb612mr4gd1xppj5k8xl03g",
+  "fetcher": "github",
+  "repo": "zk-phi/phi-search",
+  "unstable": {
+   "version": [
+    20200510,
+    905
+   ],
+   "commit": "f567f048b3892062c5528b42d4f6af4b313721a3",
+   "sha256": "15yc5nlfx2z48n8p7pb6qzgbzfpnapb83w5xx6z8lq0mywf3k5jj"
+  },
+  "stable": {
+   "version": [
+    20160630
+   ],
+   "commit": "40b86bfe9ae15377fbee842b1de3d93c2eb7dd69",
+   "sha256": "10kyq3lkhmbmj1hl9awzc0w8073dn9mbjd5skh660ljg5mmi6x62"
+  }
+ },
+ {
+  "ename": "phi-search-dired",
+  "commit": "57c6dd518648f23927c5e6424210c157ed3cfd95",
+  "sha256": "1gf3vs3vrp5kbq4ixnj7adazmnqixi63qswgc2512p10gf7inf8p",
+  "fetcher": "github",
+  "repo": "zk-phi/phi-search-dired",
+  "unstable": {
+   "version": [
+    20150405,
+    714
+   ],
+   "deps": [
+    "phi-search"
+   ],
+   "commit": "162a5e4507c72512affae22744bb606a906d4193",
+   "sha256": "1b44947hncw4q42fxxrz6fm21habzp4pyp0569xdwysrx2rca2fn"
+  }
+ },
+ {
+  "ename": "phi-search-mc",
+  "commit": "83cf3fa3736eb2583dcf6bca16b9acb89e3408a3",
+  "sha256": "07hd80rbyzr5n3yd7hv1j51nl6pvcxmln20g6xvw8gh5yfl9k0m8",
+  "fetcher": "github",
+  "repo": "knu/phi-search-mc.el",
+  "unstable": {
+   "version": [
+    20160324,
+    1503
+   ],
+   "deps": [
+    "multiple-cursors",
+    "phi-search"
+   ],
+   "commit": "7aa671910f766437089aec26c3aa7814222d1356",
+   "sha256": "0wr86ad0yl52im6b9z0b9pzmhcn39qg5m9878yfv1nbxliw40lcd"
+  },
+  "stable": {
+   "version": [
+    2,
+    2,
+    1
+   ],
+   "deps": [
+    "multiple-cursors",
+    "phi-search"
+   ],
+   "commit": "4c6d2d39feb502febb81fc98b7b5854d88150c69",
+   "sha256": "0r6cl1ng41s6wsy5syjlkaip0mp8h491diipdc1psbhnpk4vabsv"
+  }
+ },
+ {
+  "ename": "phi-search-migemo",
+  "commit": "b78e07146a4e954e050349a1798ac46ecba10bab",
+  "sha256": "0qk73s09sasm438w29j5z2bmlb60p1mgbv2ch43rgq8c6kjzg6h6",
+  "fetcher": "github",
+  "repo": "zk-phi/phi-search-migemo",
+  "unstable": {
+   "version": [
+    20170618,
+    921
+   ],
+   "deps": [
+    "migemo",
+    "phi-search"
+   ],
+   "commit": "308909ebfc8003d16673f97ca9eb26a667b72969",
+   "sha256": "07pi72jnd6k5xj9ypmxa0pbb03r07safpgf8vlp1m0xda5ixl0wf"
+  }
+ },
+ {
+  "ename": "phoenix-dark-mono-theme",
+  "commit": "87e3b036fbcc96b047bbb141345a7b51f19d6951",
+  "sha256": "15in299j170n0wxmkg3cx1zzx1n7r1ifraqqzfqhcnk8i8lmc939",
+  "fetcher": "github",
+  "repo": "j0ni/phoenix-dark-mono",
+  "unstable": {
+   "version": [
+    20170729,
+    1406
+   ],
+   "commit": "a54f515d162148bcb38676980bc2316adb3d7b8b",
+   "sha256": "1zr334qsjrajd2vrrlc1rfm4b4kdw15jfh5d102vj5bp7z7ajhb4"
+  }
+ },
+ {
+  "ename": "phoenix-dark-pink-theme",
+  "commit": "87e3b036fbcc96b047bbb141345a7b51f19d6951",
+  "sha256": "0bz6iw73d85bi12qqx6fdw3paqknrxvn0asbwjmgdcrlqrfczjlr",
+  "fetcher": "github",
+  "repo": "j0ni/phoenix-dark-pink",
+  "unstable": {
+   "version": [
+    20190821,
+    48
+   ],
+   "commit": "ddd98a45775be105984ec598384e68df3d3e8046",
+   "sha256": "02fhna45wq3wja51yrwm0xysdvyck1r0a3dx41i5sh89504gl6a9"
+  }
+ },
+ {
+  "ename": "php-auto-yasnippets",
+  "commit": "28b2d8802f98e339ff01ecf9733b71b6c631123e",
+  "sha256": "047i51ks2nn7ydrx2hjx9qvsh3lxnyxp8a6c3h3nb1acy84f5bd1",
+  "fetcher": "github",
+  "repo": "emacs-php/php-auto-yasnippets",
+  "unstable": {
+   "version": [
+    20170331,
+    114
+   ],
+   "deps": [
+    "php-mode",
+    "yasnippet"
+   ],
+   "commit": "03e1f0899c081813901ac15c2f7a675a37cca9f5",
+   "sha256": "0d7y6njsd1s2r5df2k8wvvwgxpwwyaqkhdd2b3p1php8rrbj3mg8"
+  },
+  "stable": {
+   "version": [
+    2,
+    3,
+    1
+   ],
+   "deps": [
+    "php-mode",
+    "yasnippet"
+   ],
+   "commit": "1950d83cbcc5c5d62cd3bc432e1595870fe8cabf",
+   "sha256": "0zs11811kx6x1zgc1icd8gw420saa7z6zshpzmrddnbznya4qql6"
+  }
+ },
+ {
+  "ename": "php-boris",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0kklwk8b98czsg567vgzzdfnv76yn1id3ah2q2qqdhaky1yzw7ak",
+  "fetcher": "github",
+  "repo": "tomterl/php-boris",
+  "unstable": {
+   "version": [
+    20130527,
+    821
+   ],
+   "commit": "f2faebf610c917f7091f7ec0cd97645629c4f819",
+   "sha256": "07lcibr55pk3sab9bbq2r4phadl5p28n63wkq5rkhkkjc7s9rayc"
+  }
+ },
+ {
+  "ename": "php-boris-minor-mode",
+  "commit": "f0a8eb0eefe88b4ea683a4743c0f8393506e014b",
+  "sha256": "06nzdvzjp6ywq0jf0v0cmcv77wj1vyas2r10kmxd45rzw12hqjd9",
+  "fetcher": "git",
+  "url": "https://framagit.org/steckerhalter/php-boris-minor-mode.git",
+  "unstable": {
+   "version": [
+    20140209,
+    1835
+   ],
+   "deps": [
+    "highlight",
+    "php-boris"
+   ],
+   "commit": "c70e176dd6545f2d42ca3427e87b469635616d8a",
+   "sha256": "1wk7vq80v97psxfg0pwy4mc6kdc61gm6h1vgl9p71ii6g6zvzcqg"
+  }
+ },
+ {
+  "ename": "php-cs-fixer",
+  "commit": "a3631c4b81c1784995ae9e74d832e301d79214e2",
+  "sha256": "1xvz6v1fwngi2rizrx5sf0wrs4cy8rb13467r26k8hb7z8h1rqmf",
+  "fetcher": "github",
+  "repo": "OVYA/php-cs-fixer",
+  "unstable": {
+   "version": [
+    20200312,
+    1309
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "95eace9bc0ace128d5166e303c76df2b778c4ddb",
+   "sha256": "1pl6zw1m8n3ir48h58gaq2f474w9j20a6gk4r0cq5vgvzxx25f0h"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "95eace9bc0ace128d5166e303c76df2b778c4ddb",
+   "sha256": "1pl6zw1m8n3ir48h58gaq2f474w9j20a6gk4r0cq5vgvzxx25f0h"
+  }
+ },
+ {
+  "ename": "php-eldoc",
+  "commit": "7af452f42847a947e87edd6aa559f807d08920c1",
+  "sha256": "1q5fkl8crqrgxik2mxbkqv10qnqhqrazd66rgfw797s3jcchv58j",
+  "fetcher": "github",
+  "repo": "sabof/php-eldoc",
+  "unstable": {
+   "version": [
+    20140202,
+    1941
+   ],
+   "commit": "df05064146b884d9081e10657e32dc480f070cfe",
+   "sha256": "0hm6myvf91f4d2yfc7fs2xky9m8hfnimx1gkfzmn9f5pcc2l2p0i"
+  }
+ },
+ {
+  "ename": "php-mode",
+  "commit": "2e41dc09413eaa93704e7d9f55bd2bd01f658806",
+  "sha256": "1gqmcynz2wx09xjnk70db1a2pbnrh1vfm5vd6mks1s10y59bh0zq",
+  "fetcher": "github",
+  "repo": "emacs-php/php-mode",
+  "unstable": {
+   "version": [
+    20200507,
+    1755
+   ],
+   "commit": "a7687e454adc2e6c1e13d90beac122af32169eb8",
+   "sha256": "1nlikgyflksdzbd8k2l3f0nmv3gisj145fi45kw971ianihq476x"
+  },
+  "stable": {
+   "version": [
+    1,
+    23,
+    0
+   ],
+   "commit": "08c6e0f6719fafa60cf76f741d83524fd84163d6",
+   "sha256": "0wnkcxg6djy4jvxhshiy1iw6b5cf79pjwjhfd1a060cavhfm4v5c"
+  }
+ },
+ {
+  "ename": "php-refactor-mode",
+  "commit": "ad4a9bb43e131e2eb0d8b09b13245bc268c524a5",
+  "sha256": "0gj0nv6ii7pya0hcxs8haz5pahj0sa12c2ls53c3j85in645zb3s",
+  "fetcher": "github",
+  "repo": "keelerm84/php-refactor-mode.el",
+  "unstable": {
+   "version": [
+    20171124,
+    635
+   ],
+   "commit": "7a794b0618df2882b1bd586fdd698dba0bc5130d",
+   "sha256": "12kjyzmicay7y37znk0znpn81lszmnydq5fkl5pk57bxblwwiivg"
+  }
+ },
+ {
+  "ename": "php-runtime",
+  "commit": "615c9ac208d8c20082a8ac83e49e93d99e2cbc89",
+  "sha256": "0dvnwajrjsgyqzglzpkx9vwx3f55mrag6dsbdjqc9vvpvxhmgfwb",
+  "fetcher": "github",
+  "repo": "emacs-php/php-runtime.el",
+  "unstable": {
+   "version": [
+    20181212,
+    1825
+   ],
+   "deps": [
+    "cl-lib",
+    "f",
+    "s"
+   ],
+   "commit": "017e0e70f07d6b25e37d5c5f4d271a914b677631",
+   "sha256": "1c74xd6p3hfanpd4920agvnar9rjbyvz33kwrzw9vywzrs68ncvh"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "f",
+    "s"
+   ],
+   "commit": "017e0e70f07d6b25e37d5c5f4d271a914b677631",
+   "sha256": "1c74xd6p3hfanpd4920agvnar9rjbyvz33kwrzw9vywzrs68ncvh"
+  }
+ },
+ {
+  "ename": "php-scratch",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0sl9cccp4xjsidiyjf3sca8wlch3zd23zyac21xys11xm3rjxh9r",
+  "fetcher": "github",
+  "repo": "mallt/php-scratch",
+  "unstable": {
+   "version": [
+    20161103,
+    2217
+   ],
+   "deps": [
+    "php-mode",
+    "s"
+   ],
+   "commit": "3aa66d1d53b84b779374edff7a7e6b5f2cd7575d",
+   "sha256": "0iyb4y0wrd1yqm56p37riw6nwvrlcgxj1x0nhw8304p8hv76mzdi"
+  }
+ },
+ {
+  "ename": "phpactor",
+  "commit": "d67b98ecd541c227c011615f67d7a0890f5e1af3",
+  "sha256": "0w2iszi74y3s6rcn6p2ic545cg319y4jpy83npbh5m98y8jma84m",
+  "fetcher": "github",
+  "repo": "emacs-php/phpactor.el",
+  "unstable": {
+   "version": [
+    20200405,
+    1544
+   ],
+   "deps": [
+    "async",
+    "cl-lib",
+    "composer",
+    "f",
+    "php-runtime"
+   ],
+   "commit": "860d7e8784b261ee71deba354d01c3038cd777ab",
+   "sha256": "1d3fijh11g70xhx3a47l75mrp64bvkk7hh9lg83nl30qhn2vrbn3"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "f"
+   ],
+   "commit": "61e4eab638168b7034eef0f11e35a89223fa7687",
+   "sha256": "0dsa1mygb96nlz5gppf0sny3lxaacvmvnkg84c0cs6x223s6zfx8"
+  }
+ },
+ {
+  "ename": "phpcbf",
+  "commit": "77ef54e3fb2715a081786dc54f99ae74def5c77c",
+  "sha256": "1hf88ys4grffpqgavrbc72dn3m7crafgid2ygzx9c5j55syh8mfv",
+  "fetcher": "github",
+  "repo": "nishimaki10/emacs-phpcbf",
+  "unstable": {
+   "version": [
+    20181228,
+    423
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "fb0bc6073a57126cf1a8404723aa0a715dd761aa",
+   "sha256": "0k2wl137nippcfx3g35kfprz2fiv8rbbi7dcpxciwnbqmn6ry7rf"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    2
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "b556b548ceb061b002389d6165d2cc63d8bddb5d",
+   "sha256": "09rinyx0621d7613xmbyvrrlav6d4ia332wkgg0m9dn265g3h56z"
+  }
+ },
+ {
+  "ename": "phpstan",
+  "commit": "43808f57146a395b92ed498803fa948a33e5f3c2",
+  "sha256": "1nx9d4mhxhvbgrxawkpkw03b75bg1xpli1x83g2bhs8ar8lypjik",
+  "fetcher": "github",
+  "repo": "emacs-php/phpstan.el",
+  "unstable": {
+   "version": [
+    20200411,
+    531
+   ],
+   "deps": [
+    "php-mode"
+   ],
+   "commit": "2f715a186c5fe6576de83d4c0b64a37e2bfce101",
+   "sha256": "03ix2s068pzmybj0fcb08dlfgdqw0pmqhbdf4id2077f67bfad0w"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "deps": [
+    "php-mode"
+   ],
+   "commit": "bf9e82a63f2ccb12af02c9e79a83e7989eeb7cb1",
+   "sha256": "15kv5xv6lcfgf048wr2zsnpvrplbxypy3wq56zvrzbq18hwprqg1"
+  }
+ },
+ {
+  "ename": "phpt-mode",
+  "commit": "59a0e7aabf45c98b1ecf9db49f6420a6e051733b",
+  "sha256": "1isq3l6qhya5vafmcqbda7r0irdmgvmlmdg98n7h8yck5imi78yf",
+  "fetcher": "github",
+  "repo": "emacs-php/phpt-mode",
+  "unstable": {
+   "version": [
+    20190512,
+    1809
+   ],
+   "deps": [
+    "php-mode",
+    "polymode"
+   ],
+   "commit": "deb386f1a81003074c476f15e1975d445ff6df01",
+   "sha256": "0wv1q44f5hmpsrjvjb5y8c1gnjkazdghmgbzw6l30i3j3z36fy60"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "php-mode",
+    "polymode"
+   ],
+   "commit": "310579e5db57c344460f74239bd1a8fc0d6ddf33",
+   "sha256": "1zgnnzad0sr5qh665i3shcf18y121di8za99girkzgzjcv309r35"
+  }
+ },
+ {
+  "ename": "phpunit",
+  "commit": "0670b42c0c998daa7bf01080757976ac3589ec06",
+  "sha256": "0nj8ss1yjkcqnbnn4jgbp0403ljjk2xhipzikdrl3dbxlf14i4f8",
+  "fetcher": "github",
+  "repo": "nlamirault/phpunit.el",
+  "unstable": {
+   "version": [
+    20180829,
+    1438
+   ],
+   "deps": [
+    "cl-lib",
+    "f",
+    "pkg-info",
+    "s"
+   ],
+   "commit": "fe6bc91c3bd8b329c6d26ad883a025f06b5121ee",
+   "sha256": "1silbfmv85r73pbc7f5cm4znc6644ngihfnhibk1fgp9j0rf7ahc"
+  },
+  "stable": {
+   "version": [
+    0,
+    17,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "f",
+    "pkg-info",
+    "s"
+   ],
+   "commit": "4212307bbcfd8accd2abfa7e4ab55a6751a0b11b",
+   "sha256": "1silbfmv85r73pbc7f5cm4znc6644ngihfnhibk1fgp9j0rf7ahc"
+  }
+ },
+ {
+  "ename": "pianobar",
+  "commit": "b5659b4c7be20572aabe75caba866301393db012",
+  "sha256": "16vsf2cig9qjbh9s58zb5byjmyghxbsxpzpm5hyyrv251jap1jjn",
+  "fetcher": "github",
+  "repo": "agrif/pianobar.el",
+  "unstable": {
+   "version": [
+    20180417,
+    104
+   ],
+   "commit": "3154c4cb7401017fd441fcd6a7a0b669a4406882",
+   "sha256": "0dy51pi85i8ag47zmnhppllsbmxd0bp704azffddkg36pjh4inxk"
+  }
+ },
+ {
+  "ename": "pickle",
+  "commit": "4cb71882f074d3fef1f5a7b504dafcb6adff8ed4",
+  "sha256": "0fryzmrs6bn6r590qp08jyzx9g6jakf1pahxhcfglsv9k3jbfp13",
+  "fetcher": "github",
+  "repo": "ahungry/pickle-mode",
+  "unstable": {
+   "version": [
+    20190923,
+    354
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "3a0a717f2a24827667f34bc53830a3b81cd57460",
+   "sha256": "1r12r21882bq22w6cawf28ndf70nz2nd0f2wagdfr5a9ir9wchfy"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "3a0a717f2a24827667f34bc53830a3b81cd57460",
+   "sha256": "1r12r21882bq22w6cawf28ndf70nz2nd0f2wagdfr5a9ir9wchfy"
+  }
+ },
+ {
+  "ename": "picpocket",
+  "commit": "e88dc89311d4bfe82dc15f22b84c4b76abb3fd69",
+  "sha256": "0p2mrjcd8ig0h7dk0zvyfma4nnfk2ic6gp2dwfqyqq6irb010f45",
+  "fetcher": "github",
+  "repo": "johanclaesson/picpocket",
+  "unstable": {
+   "version": [
+    20180914,
+    1819
+   ],
+   "commit": "6fd88b8711c4370662c0f9c462170187d092a046",
+   "sha256": "1mdzzxf7xm7zwrpnqqxa27d1cr31pd72d7ilbwljv13qp177a3yw"
+  }
+ },
+ {
+  "ename": "pig-mode",
+  "commit": "a0d7c07d28e2f229b281201a781ebaceed6465ed",
+  "sha256": "0gmvc4rrqkn0cx8fk1sxk6phfbpf8dcba3k6i24k3idcx8rxsw3x",
+  "fetcher": "github",
+  "repo": "motus/pig-mode",
+  "unstable": {
+   "version": [
+    20180520,
+    1400
+   ],
+   "commit": "4c6c6e1b1bb719d8adc6c47cc24665f6fe558959",
+   "sha256": "1vwnybyrzk8nw2cs27yrsipxb6hmx7cs5d60yf00h0wiv3l6v3rr"
+  }
+ },
+ {
+  "ename": "pig-snippets",
+  "commit": "a0d7c07d28e2f229b281201a781ebaceed6465ed",
+  "sha256": "1sqi0a2dsqgmabkrncxiyrhibyryyy25d11b15ybhlngd05wqbx2",
+  "fetcher": "github",
+  "repo": "motus/pig-mode",
+  "unstable": {
+   "version": [
+    20130913,
+    624
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "4c6c6e1b1bb719d8adc6c47cc24665f6fe558959",
+   "sha256": "1vwnybyrzk8nw2cs27yrsipxb6hmx7cs5d60yf00h0wiv3l6v3rr"
+  }
+ },
+ {
+  "ename": "pillar",
+  "commit": "bff55f1182f3bd0bc8a8773921f703168d87de21",
+  "sha256": "1lklky3shyvm1iygp621hbldpx37m0a9vd5l6mxs4y60ksj6z0js",
+  "fetcher": "github",
+  "repo": "pillar-markup/pillar-mode",
+  "unstable": {
+   "version": [
+    20141112,
+    1811
+   ],
+   "deps": [
+    "makey"
+   ],
+   "commit": "13a7f676544cc66005ccd8e6fc1c25e4ccd6f909",
+   "sha256": "19i8hgzr7kdj4skf0cnv6vlsklq9qcyxcv3p33k9vgq7y4f9mah8"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "makey"
+   ],
+   "commit": "13a7f676544cc66005ccd8e6fc1c25e4ccd6f909",
+   "sha256": "19i8hgzr7kdj4skf0cnv6vlsklq9qcyxcv3p33k9vgq7y4f9mah8"
+  }
+ },
+ {
+  "ename": "pinboard",
+  "commit": "17af21be67f2c879b3ad109e529ca633fcdb4ff5",
+  "sha256": "19icd7xg7fwka3n2c9x4697dkji4mqivjc0gygic5bwh83dhbdav",
+  "fetcher": "github",
+  "repo": "davep/pinboard.el",
+  "unstable": {
+   "version": [
+    20200402,
+    919
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "7c57f20667ead2bb27ab1d0a03307c28ea728bd9",
+   "sha256": "0d9z1hr2082sbg4dlmarksh598xd92w7c09xmdjyn1yqm39gsljw"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "7c57f20667ead2bb27ab1d0a03307c28ea728bd9",
+   "sha256": "0d9z1hr2082sbg4dlmarksh598xd92w7c09xmdjyn1yqm39gsljw"
+  }
+ },
+ {
+  "ename": "pinboard-api",
+  "commit": "7a13787abe600b6f6355a475af573efa0064bf6f",
+  "sha256": "0yzvgnpkj2fhl01id36nc5pj8vyb05bllraiz3lwwcc66y98h9n0",
+  "fetcher": "github",
+  "repo": "danieroux/pinboard-api-el",
+  "unstable": {
+   "version": [
+    20140324,
+    1148
+   ],
+   "commit": "b7b5214d0c35178f8dca08cf22d6ef3c21f0fce4",
+   "sha256": "0wy9c37g6m5khchlp8qvfnjgkwq4r38659adcm5prvzjgzqhlfja"
+  }
+ },
+ {
+  "ename": "pinboard-popular",
+  "commit": "094f63e451622571aac832b14221a0d5a96de9c5",
+  "sha256": "0d9ng4mclnb9yfzh8wzz03fbhfxayns0dg31bdixkwvy2vk00rkf",
+  "fetcher": "github",
+  "repo": "asimpson/pinboard-popular",
+  "unstable": {
+   "version": [
+    20180511,
+    1726
+   ],
+   "deps": [
+    "loop"
+   ],
+   "commit": "c0bc76cd35f8ecf34723c64a702b82eec2751318",
+   "sha256": "1msvb5r6ixd886plpbss62q2nwrrsb6271bi922vlhr817lhsain"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "deps": [
+    "loop"
+   ],
+   "commit": "df6f5928f1e5a614fb770f6f4b9aefe0bf4d1c25",
+   "sha256": "1x3qaqj81w1wblkd4rd1b7nggmgnf6jahh3zh2p6nlr200fg52lq"
+  }
+ },
+ {
+  "ename": "pine-script-mode",
+  "commit": "287b781147fe41089fa8c76570bc30539e43e5bc",
+  "sha256": "0ihijbcx7m4vhxr1fnfkwjdk6ka1mqzxb8z164yh8yn73qs0saiq",
+  "fetcher": "github",
+  "repo": "EricCrosson/pine-script-mode",
+  "unstable": {
+   "version": [
+    20181110,
+    151
+   ],
+   "commit": "f7892d373e30df0b2e8d2191e4ddb2064a92dd3c",
+   "sha256": "1zxmc2l41h28rl058lrfr8c26hjzqmp37ii8r29mpsm03hsw30fh"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "f7892d373e30df0b2e8d2191e4ddb2064a92dd3c",
+   "sha256": "1zxmc2l41h28rl058lrfr8c26hjzqmp37ii8r29mpsm03hsw30fh"
+  }
+ },
+ {
+  "ename": "pinot",
+  "commit": "f75cd89811b4bb668c1e7a93246b93fbcf5d9c47",
+  "sha256": "1kjzq02pddnkia637xz2mnjjyglyh6qzragnf7nnxbw9ayiim58i",
+  "fetcher": "github",
+  "repo": "tkf/emacs-pinot-search",
+  "unstable": {
+   "version": [
+    20140211,
+    2026
+   ],
+   "commit": "67fda555a155b22bb2ce44ba618b4bd6fc5f144a",
+   "sha256": "1wc31r5fpcia4n4vbpg7vv3rzrnjzh18yygi3kp4wvl2wzx2azqh"
+  }
+ },
+ {
+  "ename": "pinyin",
+  "commit": "b16f0f7f86021bb0bece6c90878b0dba1657107f",
+  "sha256": "1afgz62zpar6d65q4h12s7ijhhl2r2vlrnk79vsjrl560jh7hgfm",
+  "fetcher": "github",
+  "repo": "xuchunyang/pinyin.el",
+  "unstable": {
+   "version": [
+    20180620,
+    1241
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a325e790e9dd7c5028c4c8d110b08e9d78227382",
+   "sha256": "0f715zsg6j9y22w55gjv7wk90660zzpv4bilc2mi69dv534d9qv9"
+  }
+ },
+ {
+  "ename": "pinyin-search",
+  "commit": "03da6f02778f7fae77a00cdc420cfbafead6dec4",
+  "sha256": "1si693nmmxgg0kp5mxvj5nq946kfc5cv3wfsl4znbqzps8qb2b7z",
+  "fetcher": "github",
+  "repo": "xuchunyang/pinyin-search.el",
+  "unstable": {
+   "version": [
+    20160515,
+    358
+   ],
+   "deps": [
+    "pinyinlib"
+   ],
+   "commit": "2e877a76851009d41bde66eb33182a03a7f04262",
+   "sha256": "0bp4raxqv34jyg3yvdcsh9lav28x376gngm9nn8vjgmq9wggzf3i"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "5895cccfa6b43263ee243c5642cc16dd9a69fb4e",
+   "sha256": "12jhdkgfck2a6d5jj65l9d98dm34gsyi0ya4h21dbbvz35zivz70"
+  }
+ },
+ {
+  "ename": "pinyinlib",
+  "commit": "f4aa27985dcfaf24f1863667b89e13df4710546f",
+  "sha256": "0kv67qa3825fw64qimkph2b65pilrsx5730y4c7f7c1f8giz5vxr",
+  "fetcher": "github",
+  "repo": "cute-jumper/pinyinlib.el",
+  "unstable": {
+   "version": [
+    20170827,
+    2142
+   ],
+   "commit": "45f05d3dbb4fe957f7ab332ca6f94675848b6aa3",
+   "sha256": "0pmgb4y06dbffs4442aa92vn8ydwl45zqwzxzwhk6md1318fppvd"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "39943d226c2a42a9013421a0b4b6d5d3696bf234",
+   "sha256": "1nwj4c3y0kdlkf3jqd2dnibaiazrq6qcj533xk2qw4wmx072yij0"
+  }
+ },
+ {
+  "ename": "pip-requirements",
+  "commit": "5eaf6987f92070ccc33d3e28c6bb2b96f72ba1aa",
+  "sha256": "1wsjfyqga7pzp8gsm5x53qrkn40srairbjpifyrqbi2fpzmwhrnz",
+  "fetcher": "github",
+  "repo": "Wilfred/pip-requirements.el",
+  "unstable": {
+   "version": [
+    20181027,
+    1629
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "216cd1690f80cc965d4ae47b8753fc185f778ff6",
+   "sha256": "0da3q0n5nn0l96kk49kanw5knx3jmga439zbmiii76na16bg5y3i"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "93e0595f037e3a95c1c1cd6f00f7e052a9a25912",
+   "sha256": "016r7y5nfnx6iws3hq4xnyrcv00y6zmd453psxhivi896wb8szfq"
+  }
+ },
+ {
+  "ename": "pipenv",
+  "commit": "d46738976f5dfaf899ee778b1ba6dcee455fd271",
+  "sha256": "110ddg6yjglp49rgn1ck41rl97q92nm6zx86mxjmcqq35cxmc6g1",
+  "fetcher": "github",
+  "repo": "pwalsh/pipenv.el",
+  "unstable": {
+   "version": [
+    20190919,
+    2147
+   ],
+   "deps": [
+    "f",
+    "pyvenv",
+    "s"
+   ],
+   "commit": "b730bb509e8b60af9f5ab1f1e6c3458d1d95d789",
+   "sha256": "0f2lihzzw9v91adx9v89crbsph4zjj0qrlb3a8fikbhd6jy8xpb8"
+  }
+ },
+ {
+  "ename": "pippel",
+  "commit": "6d1796688ed0d6957557d960ca28e450f9bcb6cf",
+  "sha256": "1li4h0dff1n7njy2lk3d50ndrlw84fphmdg16j0srkbgy7xz90yn",
+  "fetcher": "github",
+  "repo": "brotzeit/pippel",
+  "unstable": {
+   "version": [
+    20180710,
+    856
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "21a5200e8e5ccaa1911abb4ebf090b76ca839756",
+   "sha256": "1amqjm6kn1xda058kdwq3xgk7raz6y9iw0mzrac78sgf57qaczyb"
+  }
+ },
+ {
+  "ename": "pixie-mode",
+  "commit": "a57300bfdae57c9996db0411d56a5fc7b35778c3",
+  "sha256": "16z15yh78837k548xk5widdmy6fv03vym6q54i40knmgf5cllsl8",
+  "fetcher": "github",
+  "repo": "johnwalker/pixie-mode",
+  "unstable": {
+   "version": [
+    20180626,
+    541
+   ],
+   "deps": [
+    "clojure-mode",
+    "inf-clojure"
+   ],
+   "commit": "a40c2632cfbe948852a5cdcfd44e6a65db11834d",
+   "sha256": "11c5gv88chh7sg2i0rzisbad0mkq1zc7dyi5md8hdi5gqm68704g"
+  }
+ },
+ {
+  "ename": "pixiv-novel-mode",
+  "commit": "92092c1c13c37520f98b952d40745aa062f062c1",
+  "sha256": "0f1rxvf9nrw984122i6dzsgik9axfjv6yscmg203s065n9lz17px",
+  "fetcher": "github",
+  "repo": "zonuexe/pixiv-novel-mode.el",
+  "unstable": {
+   "version": [
+    20160220,
+    1421
+   ],
+   "commit": "0d1ca524d92b91f20a7105402a773bc21779b434",
+   "sha256": "18rvnvm097ca4yc1nfswdv7dfqg36insnif5kfj19aa60m9qxl09"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "commit": "4dd9caf749190fab8f0b33862b3894b635de46c5",
+   "sha256": "1wg8pcwd70ixn2bxh01934zl12ry4pgx3l9dccpbjdi40gira00d"
+  }
+ },
+ {
+  "ename": "pkg-info",
+  "commit": "29dc2ef3801a1cd7cf8edd2eae68b03bf00e96a0",
+  "sha256": "1pg26fnni5yi4agqmy1lf1k0wkrcjz1d845d8xryai6bf8fiwf0c",
+  "fetcher": "github",
+  "repo": "emacsorphanage/pkg-info",
+  "unstable": {
+   "version": [
+    20150517,
+    1143
+   ],
+   "deps": [
+    "epl"
+   ],
+   "commit": "76ba7415480687d05a4353b27fea2ae02b8d9d61",
+   "sha256": "150xhsv695cchs5jc2hwk9gjgs0k8wkm966crvxxs6xvj5fg69xq"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "deps": [
+    "epl"
+   ],
+   "commit": "f9bb471ee95d1c5fe9adc6b0e98db2ddff3ddc0e",
+   "sha256": "0nk12dcppdyhav6m6yf7abpywyd7amxd4237zsfd32w4zxsx39k1"
+  }
+ },
+ {
+  "ename": "pkgbuild-mode",
+  "commit": "ca7bf43ef8893bf04e9658390e306ef69e80a156",
+  "sha256": "1lp7frjahcpr4xnzxz77qj5hbpxbxm2g28apkixrnc1xjha66v3x",
+  "fetcher": "github",
+  "repo": "juergenhoetzel/pkgbuild-mode",
+  "unstable": {
+   "version": [
+    20200425,
+    616
+   ],
+   "commit": "bc22301198b3f581d89352510e847454fb1cb9ff",
+   "sha256": "11il65myybgfj30psicfgqpjwwpa6hwapf55d497x8kbixx2kpg1"
+  },
+  "stable": {
+   "version": [
+    0,
+    14
+   ],
+   "commit": "6bb7cb3b0599ac0ae3c1d8d5014aefc1ecff7965",
+   "sha256": "0a8qb1ldk6bjs7fpxgxrf90md7q46fhl71gmay8yafdkh6hn0kqr"
+  }
+ },
+ {
+  "ename": "plain-org-wiki",
+  "commit": "6b515386c3969b8d79e14b506bc0d9e1ec3097c4",
+  "sha256": "0m0mm0ki92561axm89mwc6vcx9rwdb7ai9hlvgnhf40k94s97lz6",
+  "fetcher": "github",
+  "repo": "abo-abo/plain-org-wiki",
+  "unstable": {
+   "version": [
+    20200507,
+    2135
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "99cd7f90e5c741cf3327f464852203baee7c488c",
+   "sha256": "1s4ida511fi6mbrckn9kvssr4vmiy4w5qkkby7s1jlqvlydnsa8m"
+  }
+ },
+ {
+  "ename": "plain-theme",
+  "commit": "d4bd77883375b229e344384e42c3603ca096891c",
+  "sha256": "0igncivhnzzirglmz451czx69cwshjkigqvqddj0a77b1cwszfw8",
+  "fetcher": "github",
+  "repo": "yegortimoshenko/plain-theme",
+  "unstable": {
+   "version": [
+    20171124,
+    410
+   ],
+   "commit": "48b37b9b19d8f1e0accbf930f30b5346cf7959fe",
+   "sha256": "0pi4sjp0aq279m449lw4rbppdivzkazd07bh9jqrmyrw9wib3hbl"
+  },
+  "stable": {
+   "version": [
+    8
+   ],
+   "commit": "2609a811335d58cfb73a65d6307c156fe09037d3",
+   "sha256": "0g5vl4xigdm2pn2mnkwgj1kxdjr66w7ynr77bchy3ij6qvzdzkqd"
+  }
+ },
+ {
+  "ename": "plan9-theme",
+  "commit": "cdc4c2bafaa09e38edd485a9091db689fbda2fe6",
+  "sha256": "0bvr877mc79s1shr82b33ipspz09jzc3809c6pkbw0jqpfid44cc",
+  "fetcher": "github",
+  "repo": "john2x/plan9-theme.el",
+  "unstable": {
+   "version": [
+    20180804,
+    1441
+   ],
+   "commit": "c2da2fcb241e9800d931a1ff19ecd9fd84d30382",
+   "sha256": "0rjxbk9fljnjmg00vdqcyynzg591cgknyy2d92xsxsyg4d28dvwi"
+  }
+ },
+ {
+  "ename": "planet-theme",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1hr5m08qn51r9804jd0k95ryz3frzkk1dp6wpybil6bf67a2l5lr",
+  "fetcher": "github",
+  "repo": "cmack/emacs-planet-theme",
+  "unstable": {
+   "version": [
+    20161031,
+    217
+   ],
+   "commit": "b0a310ff36565fe22224c407cf59569986698a32",
+   "sha256": "1xdj59skmldq5dnarirhwq4qycipas86nbyqwl8zsv0bh20nl1rs"
+  }
+ },
+ {
+  "ename": "plantuml-mode",
+  "commit": "38e74bb9923044323f34473a5b13867fe39bed25",
+  "sha256": "03srbg34512vxcqn95q4r7h2aqbqq0sd5c9ffnbx2a75vsblqc6h",
+  "fetcher": "github",
+  "repo": "skuro/plantuml-mode",
+  "unstable": {
+   "version": [
+    20191102,
+    2056
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "ea45a13707abd2a70df183f1aec6447197fc9ccc",
+   "sha256": "0rbmn2964w9kms6ql25dzpnyygj693123xs7gxasylgw5jall9wx"
+  },
+  "stable": {
+   "version": [
+    1,
+    4,
+    1
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "5889166b6cfe94a37532ea27fc8de13be2ebfd02",
+   "sha256": "0yp41d2dmf3sx7qnl5x0zdjcr9y71b2wwc9m0q31v22xqn938ipc"
+  }
+ },
+ {
+  "ename": "plaster",
+  "commit": "7e363cffa021e649c052f38cedb7cc01dbe9e24a",
+  "sha256": "0vfixc0f5n4flsmdf1iqlbx03yv28w3nqm1ycz2fx6p5jvhkvfqk",
+  "fetcher": "github",
+  "repo": "Shirakumo/plaster",
+  "unstable": {
+   "version": [
+    20180127,
+    2050
+   ],
+   "commit": "f82f845ede3b48ca11934171b30effb523ba9fcf",
+   "sha256": "0y9n4z388vbpyarpqgfyybfiin1hbw25b4m72ahxmpc4zq7ilqwl"
+  }
+ },
+ {
+  "ename": "platformio-mode",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "1v1pp3365wj19a5wmsxyyy5n548z3lmcbm2pwl914wip3ca7546f",
+  "fetcher": "github",
+  "repo": "ZachMassia/PlatformIO-Mode",
+  "unstable": {
+   "version": [
+    20161210,
+    1339
+   ],
+   "deps": [
+    "projectile"
+   ],
+   "commit": "1466aed132a77f48fcb31938d64abb1a1e58ec42",
+   "sha256": "1lfkp7df8as9gspynkyhz4dbm95kbngyba1ymg6ql67adyv79v1i"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "projectile"
+   ],
+   "commit": "470a80c1d764a6e1680a2b41ca5a847869a07a27",
+   "sha256": "1nznbkl06cdq4pyqmvkp9jynsjibn0fd6ai4mggz6ggcwzcixbf0"
+  }
+ },
+ {
+  "ename": "play-crystal",
+  "commit": "92715977136afa731e85e894542dc88b664b3304",
+  "sha256": "1jqf36b1mhyf4j7fs386g6isy09q7k8zwdc4rb34mhjg1a56gcnf",
+  "fetcher": "github",
+  "repo": "veelenga/play-crystal.el",
+  "unstable": {
+   "version": [
+    20180114,
+    1024
+   ],
+   "deps": [
+    "dash",
+    "request"
+   ],
+   "commit": "0b4810a9025213bd11dbcbfd38b3ca928829e0a5",
+   "sha256": "15gqr11paz5qmx43qb0f95wc87nn2snr7my22b0n6jwbk5djf402"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "deps": [
+    "dash",
+    "request"
+   ],
+   "commit": "86b54346e7c832c14f8e5654a462f6490a6b11d7",
+   "sha256": "0kvkr24f8r21pahm2lsvbr9bg53770wxwpdfmmjljs2zmgxf2c40"
+  }
+ },
+ {
+  "ename": "play-routes-mode",
+  "commit": "740cef8687232eb0e2186e8df956c2d4f39575cf",
+  "sha256": "17phqil2zf5rfvhs5v743dh4lix4v2azbf33z9n97ahs7j66y2gz",
+  "fetcher": "github",
+  "repo": "brocode/play-routes-mode",
+  "unstable": {
+   "version": [
+    20170426,
+    733
+   ],
+   "commit": "22d7b87e0eaf0330f2b2283872f8dc08a3258771",
+   "sha256": "0j61adh2lsh2zgz1v9i2jzh56ngnrpvsblipvc472k5dxa5qdxin"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "d7eb682cd474d90b3a3d005290cd6d4fe9f94cae",
+   "sha256": "0slfaclbhjm5paw8l7rr3y9xxjyhkizp9lwyvlgpkd38n4pgj2bx"
+  }
+ },
+ {
+  "ename": "playerctl",
+  "commit": "6db0d82c2eef7c5bef5f9f2c15969da4c404b62d",
+  "sha256": "1pix3hcsg6ymzajiixwcq4v3clvadpkl0rhplkhachv6wmci327x",
+  "fetcher": "github",
+  "repo": "thomasluquet/playerctl.el",
+  "unstable": {
+   "version": [
+    20180301,
+    1354
+   ],
+   "commit": "3eee541423c2e5eb9f23a26fa9aa88c9c5a19ad1",
+   "sha256": "16qvn1mss5j8vpf1qpq4lwl4hwng64caw3c3shixsncfmgw25z6f"
+  }
+ },
+ {
+  "ename": "playground",
+  "commit": "f062a74fe1746129879ad19c1735621f58509d33",
+  "sha256": "1xjmxkl8h4l87fvv1sr478r6mkmy9gkzw2fxmzqn5fcsahzkyg4d",
+  "fetcher": "github",
+  "repo": "akirak/emacs-playground",
+  "unstable": {
+   "version": [
+    20180624,
+    326
+   ],
+   "commit": "9212790026bea9ab5fb4ecf0da1163be8ab00776",
+   "sha256": "0g6d7z9sv7fdc918gay7rd71frzqn75mcwnljgmqksfh5890apa6"
+  }
+ },
+ {
+  "ename": "playonline",
+  "commit": "27d8ea9dac3637eed39a68308194b30c1672a8ca",
+  "sha256": "10shq955cz664r0j0yjfrnnbvzjpcyq638lm6hwkiia5xbvsdz88",
+  "fetcher": "github",
+  "repo": "twlz0ne/playonline.el",
+  "unstable": {
+   "version": [
+    20200317,
+    642
+   ],
+   "deps": [
+    "dash",
+    "request"
+   ],
+   "commit": "c75da1fdc1dfbd5d9aa274dc4e90ff631ea08e70",
+   "sha256": "0vkgzqdcxp4mlkz9z8p4307lbvjz51wpqhzpmyw4gwl079xc6gkq"
+  }
+ },
+ {
+  "ename": "plenv",
+  "commit": "a0819979b9567ac5fab9ed6821eba8fe7ee6a299",
+  "sha256": "0dw9fy5wd9wm76ag6yyw3f9jnlj7rcdcxgdjm30h514qfi9hxbw4",
+  "fetcher": "github",
+  "repo": "karupanerura/plenv.el",
+  "unstable": {
+   "version": [
+    20130707,
+    616
+   ],
+   "commit": "ee937d0f3a1a7ba2d035f45be896d3ed8fefaee2",
+   "sha256": "11cbpgjsnw8fiqf1s12hbm9qxgjcw6y2zxx7wz4wg7idmi7m0b7g"
+  },
+  "stable": {
+   "version": [
+    0,
+    32
+   ],
+   "commit": "ee937d0f3a1a7ba2d035f45be896d3ed8fefaee2",
+   "sha256": "11cbpgjsnw8fiqf1s12hbm9qxgjcw6y2zxx7wz4wg7idmi7m0b7g"
+  }
+ },
+ {
+  "ename": "plim-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1nrqw5dvb3j5x3wkpsjbpv1d2s367icq9j4h1xv1cahfsn8nn4m9",
+  "fetcher": "github",
+  "repo": "dongweiming/plim-mode",
+  "unstable": {
+   "version": [
+    20140813,
+    13
+   ],
+   "commit": "92e39190286f172567ceb02c80e1df3b81abfa2d",
+   "sha256": "07hspp4bkb3f5dm0l1arm0w1m04cq4glg81x4a9kf7bl601wzki2"
+  }
+ },
+ {
+  "ename": "plisp-mode",
+  "commit": "33b151c3aba268977b105965c816716d8b35ad6d",
+  "sha256": "157v6h0rss9q1nshq0s59nn8q4xm7lq8c83ljgc8g9cql5b632i6",
+  "fetcher": "github",
+  "repo": "flexibeast/plisp-mode",
+  "unstable": {
+   "version": [
+    20200427,
+    405
+   ],
+   "commit": "59e682d77569b04e9fc80af9c4b05e4a997dbcec",
+   "sha256": "10v9j7sv5q9ywq8bdj2g1j262ggsy3hwqybn6rnrcim5v1f7a51r"
+  }
+ },
+ {
+  "ename": "plsense",
+  "commit": "fb1025f146514e9c142cd96cac9f2989d6d1a8c5",
+  "sha256": "1ka06r4ashhjkfyzql9mfvs3gj7n684h4gaycj29w4nfqrhcw9va",
+  "fetcher": "github",
+  "repo": "aki2o/emacs-plsense",
+  "unstable": {
+   "version": [
+    20151104,
+    1445
+   ],
+   "deps": [
+    "auto-complete",
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "d50f9dccc98f42bdb42f1d1c8142246e03879218",
+   "sha256": "1r2yxa7gqr0z9fwhx38siwjpg73a93rdmnhr4h6nm6lr32vviyxm"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    7
+   ],
+   "deps": [
+    "auto-complete",
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "f6fb22607a5252b2556d2e7fa14f1bcab5d9747a",
+   "sha256": "0f00dv5jwbhs99j4jc6lvr5n0mv1y80yg7zpp6yrmhww6829l5rg"
+  }
+ },
+ {
+  "ename": "plsense-direx",
+  "commit": "65fb1d8b4ed12f097958842d1b00dcdf3660b184",
+  "sha256": "0qd4b7gkmn5ydadhp70995rap3643s1aa8gfi5izgllzhg0i864j",
+  "fetcher": "github",
+  "repo": "aki2o/plsense-direx",
+  "unstable": {
+   "version": [
+    20140520,
+    2008
+   ],
+   "deps": [
+    "direx",
+    "log4e",
+    "plsense",
+    "yaxception"
+   ],
+   "commit": "8a2f465264c74e04524cc789cdad0190ace43f6c",
+   "sha256": "0s34nbqqy6aqi113xj452pbmqp43046wfbfbbfv1xwhybgq0c1j1"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "direx",
+    "log4e",
+    "plsense",
+    "yaxception"
+   ],
+   "commit": "8a2f465264c74e04524cc789cdad0190ace43f6c",
+   "sha256": "0s34nbqqy6aqi113xj452pbmqp43046wfbfbbfv1xwhybgq0c1j1"
+  }
+ },
+ {
+  "ename": "plur",
+  "commit": "38f6f53fcd1186efd5e6752166da4e23b712cdb1",
+  "sha256": "0nf1dc7xf2zp316rssnz8sv374akcr54hp0rb219qvgyck9bdqiv",
+  "fetcher": "github",
+  "repo": "xuchunyang/plur",
+  "unstable": {
+   "version": [
+    20160504,
+    924
+   ],
+   "commit": "5bdd3b9a2f0624414bd596e798644713cd1545f0",
+   "sha256": "0qlxj19hj96l4lw81xh5r14ppf6kp63clikk060s9yw00q7gnl6a"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "5bdd3b9a2f0624414bd596e798644713cd1545f0",
+   "sha256": "0qlxj19hj96l4lw81xh5r14ppf6kp63clikk060s9yw00q7gnl6a"
+  }
+ },
+ {
+  "ename": "pmdm",
+  "commit": "279923aac9f668cd295709d5060e7a984be0c5a8",
+  "sha256": "1a6mvb3dcxkzk9acchi0xbgd3ki092l4c18qls6pgahwsj7wsk9v",
+  "fetcher": "hg",
+  "url": "https://hg.serna.eu/emacs/pmdm",
+  "unstable": {
+   "version": [
+    20191101,
+    2346
+   ],
+   "commit": "1f30adce8a23da94b3c2460b7248d5910592d8af",
+   "sha256": "0nwrzf7lvimay83k1s4nxz86d1a82v55j23vp2915c307gkwrl8z"
+  }
+ },
+ {
+  "ename": "po-mode",
+  "commit": "38e855cde9264bff67016d23e7e5e00f113c55bf",
+  "sha256": "1w06i709bb04pziygdn7y47gcci7gybg0p7ncdsm07d0w7q14v2z",
+  "fetcher": "github",
+  "repo": "emacsmirror/po-mode",
+  "unstable": {
+   "version": [
+    20190511,
+    1542
+   ],
+   "commit": "1916142f6a817c733d5ec37e3b4fbae3da67e499",
+   "sha256": "0nvpr5ry86by1dm7mp2w5p534qg4c9dpdich3x13gbbp9vazc7h6"
+  }
+ },
+ {
+  "ename": "pocket-api",
+  "commit": "04e3be76aef4d1b6d5bb3eda533b5deffcc8a5bc",
+  "sha256": "1f5j491wbqgbx6zlb0zdajca5il0628vr9a38y0n3x0h69wm0cx5",
+  "fetcher": "github",
+  "repo": "lujun9972/pocket-api.el",
+  "unstable": {
+   "version": [
+    20180403,
+    109
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "3eb9430b9db90bc02e736e433eb86389f7655189",
+   "sha256": "0k6a9zzdi02g677cc699llk04i06yb7ddnlnmxndap5jszfyqwfi"
+  }
+ },
+ {
+  "ename": "pocket-lib",
+  "commit": "71f17ce28f4fc8c2c100848be8aec15526ef8697",
+  "sha256": "0v619blifmvm36dr773wjf35fjji4dj3pyck9nkz0m8zmpz0fg78",
+  "fetcher": "github",
+  "repo": "alphapapa/pocket-lib.el",
+  "unstable": {
+   "version": [
+    20190720,
+    1957
+   ],
+   "deps": [
+    "dash",
+    "kv",
+    "request",
+    "s"
+   ],
+   "commit": "f794e3e619e1f6cad25bbfd5fe019a7e62820bf4",
+   "sha256": "0iv03wjwmz0di8n5bndmq5r18r1pq999v1scyay0jm1cxlksqafg"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "dash",
+    "kv",
+    "request",
+    "s"
+   ],
+   "commit": "ef3bcf452129b74e7b82265f6c08f9569fd19515",
+   "sha256": "0r2y6idzwkvaclsnaskdlzk9afvxnm9kkyy8y38cfwany3kbmyzj"
+  }
+ },
+ {
+  "ename": "pocket-mode",
+  "commit": "6aa3d04058bfc0bc1da3393d17429d517275e97c",
+  "sha256": "04zxll5yg021m13vr54w2pnrmqb87ykdbpa8nx2wn9myg2rywh0v",
+  "fetcher": "github",
+  "repo": "lujun9972/pocket-mode",
+  "unstable": {
+   "version": [
+    20171201,
+    1315
+   ],
+   "deps": [
+    "pocket-api"
+   ],
+   "commit": "229de7d35b7e5605797591c46aa8200d7efc363c",
+   "sha256": "0j3axac4lp7p00a7mf7frryqg1y3jwqaw0s475gz606642vg9l45"
+  }
+ },
+ {
+  "ename": "pocket-reader",
+  "commit": "835a7bf2f72987183e9d15ada7ae747fb5715c11",
+  "sha256": "0gcgmz4mhjgvqbh2gmv8v09sy80cnfccjym455m0fbl31b8dczhf",
+  "fetcher": "github",
+  "repo": "alphapapa/pocket-reader.el",
+  "unstable": {
+   "version": [
+    20181219,
+    930
+   ],
+   "deps": [
+    "dash",
+    "ht",
+    "kv",
+    "org-web-tools",
+    "ov",
+    "pocket-lib",
+    "rainbow-identifiers",
+    "s"
+   ],
+   "commit": "86c51c65d97819e11b3df403beea424f30125d30",
+   "sha256": "16dj1853qgd4farqb7wdpyyp1a4mxkasyb0j489h7saz9xn9q8xc"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "dash",
+    "ht",
+    "kv",
+    "org-web-tools",
+    "ov",
+    "pocket-lib",
+    "rainbow-identifiers",
+    "s"
+   ],
+   "commit": "a7f080ec3e9522f942166de61b24a375b8f1c2bb",
+   "sha256": "0l7dln7qcrgzm73vk7jp8wr2kibg18973xmdzyyc162hdnlbrpb0"
+  }
+ },
+ {
+  "ename": "podcaster",
+  "commit": "2649dc294f40d00f3bf1b1cf09879c2ef0d3e43b",
+  "sha256": "1kzac0mhg8dk2vfk29ns36jl8vwg6ghbdb3n6kqfzci5ygn96yib",
+  "fetcher": "github",
+  "repo": "lujun9972/podcaster",
+  "unstable": {
+   "version": [
+    20161020,
+    1535
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "9854517025deb5d556168a68955fb7b662239f5c",
+   "sha256": "06ag0idz7cf6i9kg7kqr03js9b6cw6my1jzd1x3wkgazx5slqk4q"
+  }
+ },
+ {
+  "ename": "poe-lootfilter-mode",
+  "commit": "006f39eaf8a87822fe8becab1da2822ff6fc2beb",
+  "sha256": "0iw3a2lf0mnv3lamphy458nfyjjm1yvln1syfad49av3karca05z",
+  "fetcher": "github",
+  "repo": "jdodds/poe-lootfilter-mode",
+  "unstable": {
+   "version": [
+    20190330,
+    1117
+   ],
+   "commit": "5ef06684cb2b17b090ee1f303c2b789fa71bc106",
+   "sha256": "1lxfbsixvr0rjcck4h4v000yb0iscvk9fwyw322y2cv2hvgwvkdw"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "5ef06684cb2b17b090ee1f303c2b789fa71bc106",
+   "sha256": "1lxfbsixvr0rjcck4h4v000yb0iscvk9fwyw322y2cv2hvgwvkdw"
+  }
+ },
+ {
+  "ename": "poet-client",
+  "commit": "a0b003773edaa728ed49f0de2ca64a00cb60d13a",
+  "sha256": "11yj57915ly8j2byp5c395lip73iv1chrzxdlxilhnll1brvmaw0",
+  "fetcher": "github",
+  "repo": "wailo/emacs-poet",
+  "unstable": {
+   "version": [
+    20190124,
+    654
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "32382057b3e4b8a02ec5ac3190dbe4b93d058741",
+   "sha256": "1p8x7g3hg6yw51c67kznvldrvwnp67l9b6drnmck8glwx0nxb6zr"
+  }
+ },
+ {
+  "ename": "poet-theme",
+  "commit": "40bbe29dee56f7989d8e87c03f4842e2b191acc3",
+  "sha256": "0pllyp4spj30g6ihzc91hzvnrvcg2zb49adj8wcmbzvq3hxnvls1",
+  "fetcher": "github",
+  "repo": "kunalb/poet",
+  "unstable": {
+   "version": [
+    20191215,
+    201
+   ],
+   "commit": "ad998dce8a953eb6101e61bd6bb5ff871535d383",
+   "sha256": "030qm41sf4z29f0gghrk6a4lpf775lgg9vvlmcnl678vgy7p9fa5"
+  }
+ },
+ {
+  "ename": "poetry",
+  "commit": "bdba6f313525b5cbc842a11cb63ea8dc1b9e72f9",
+  "sha256": "06ani15z1c07i9dxkkxlmwx9gd8if7fybpy1xmkg829l3sl5bz1j",
+  "fetcher": "github",
+  "repo": "galaunay/poetry.el",
+  "unstable": {
+   "version": [
+    20200326,
+    1328
+   ],
+   "deps": [
+    "pyvenv",
+    "transient"
+   ],
+   "commit": "6dcc9d22cac6642a861770b5518398d8ee4fcc9a",
+   "sha256": "1za8s1k5ni11yqz64rz777lps400jnga151cca2f3l3xx2lcc2c7"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "cl",
+    "transient",
+    "xterm-color"
+   ],
+   "commit": "6fb34742a66421c6104e02d65e8d391fc4494ab5",
+   "sha256": "0hdicdskf928s7qdlzxq25ibfmwi8llmyhy1bj2py56wr2qv3cfy"
+  }
+ },
+ {
+  "ename": "point-pos",
+  "commit": "23a1e835155fba51f595c10c46487a4c269f43ff",
+  "sha256": "1zv6hx8i8jwq52j4la1ff0ar0bpbs2pb4gcsh9hypghba11gnync",
+  "fetcher": "github",
+  "repo": "alezost/point-pos.el",
+  "unstable": {
+   "version": [
+    20170421,
+    1632
+   ],
+   "commit": "442bccb40791832cbc2d6f5c8f53be745aea2b73",
+   "sha256": "1p56h8ipgrd5433pc641xccdnsni51l58ll0hv2rp9aqjg9nlgcr"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "4cd0f8c8d1296c5c64f708b6a5835e8520c51b68",
+   "sha256": "1l3mlz51wp729rm6wf72x2fk1fla2n2s1qh8h8z58inipdi2qydp"
+  }
+ },
+ {
+  "ename": "point-stack",
+  "commit": "bb3c9e6b3c583f098f75462b4d48cd137a1bcb76",
+  "sha256": "0201gka1izqgxyivan60jbg9x1mmsw5dscxacasg97ffsciwbfr9",
+  "fetcher": "github",
+  "repo": "dgutov/point-stack",
+  "unstable": {
+   "version": [
+    20200427,
+    107
+   ],
+   "commit": "cddcea2c91038710c245819b3cda2dd739726134",
+   "sha256": "1qjf13zmh0gf90knd73b6fyn3bhwjzn4k1w1xpa1ngnh6v233da9"
+  }
+ },
+ {
+  "ename": "pointback",
+  "commit": "5f2a50f62475639af011c99c6cc38928b74b3b0a",
+  "sha256": "198q511hixvzc13b3ih89xs9g47rdvbiixn5baqakpmpx3a12hz4",
+  "fetcher": "github",
+  "repo": "emacsorphanage/pointback",
+  "unstable": {
+   "version": [
+    20100210,
+    1552
+   ],
+   "commit": "e3a02c1784d81b5a1d2477338d049af581ed19f8",
+   "sha256": "016cjy5pnnqccjqb0njqc9jq6kf6p165nlki83b8c0sj75yxghav"
+  }
+ },
+ {
+  "ename": "pollen-mode",
+  "commit": "97bda0616abe3bb632fc4231e5317d9472dfd14f",
+  "sha256": "1kskvdh6rczlki724h5xym8s4iychqzm0i82qdj87x1cg1kx9i85",
+  "fetcher": "github",
+  "repo": "lijunsong/pollen-mode",
+  "unstable": {
+   "version": [
+    20191223,
+    1920
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d0a33591498013886c2c4676e204cd684954e82a",
+   "sha256": "0lg65hzdjwbc3dav79f3jm7251yyq8ghcbccvkb32vwz281xhjnh"
+  }
+ },
+ {
+  "ename": "poly-R",
+  "commit": "3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d",
+  "sha256": "1v2was6pdynwm22b4n2hkwyrr0c0iir9kp1wz4hjab8haqxz68ii",
+  "fetcher": "github",
+  "repo": "polymode/poly-R",
+  "unstable": {
+   "version": [
+    20200316,
+    1315
+   ],
+   "deps": [
+    "poly-markdown",
+    "poly-noweb",
+    "polymode"
+   ],
+   "commit": "51ffeb6ec45dd44eafa4d22ad2d6150cc4b248fc",
+   "sha256": "0a4wx73jkngw5nbq1fa4jfhba6bsmyn6vnsf887x3xhb5v3ykhsg"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "poly-markdown",
+    "poly-noweb",
+    "polymode"
+   ],
+   "commit": "51ffeb6ec45dd44eafa4d22ad2d6150cc4b248fc",
+   "sha256": "0a4wx73jkngw5nbq1fa4jfhba6bsmyn6vnsf887x3xhb5v3ykhsg"
+  }
+ },
+ {
+  "ename": "poly-ansible",
+  "commit": "6d8beef5daa1804f68c30138cb03b5085a282c34",
+  "sha256": "158z3nbqgrh71myyp4l263lw1gn4iiwxv8pl7fdlyp80hz5zs60y",
+  "fetcher": "gitlab",
+  "repo": "mavit/poly-ansible",
+  "unstable": {
+   "version": [
+    20181222,
+    1517
+   ],
+   "deps": [
+    "ansible",
+    "ansible-doc",
+    "jinja2-mode",
+    "polymode",
+    "yaml-mode"
+   ],
+   "commit": "2cb970a0e27b41ae85bc51d24ef36fa2c7b34bbc",
+   "sha256": "04vf6zgcra47j3phxbb43q5sa5ldavnbiwwdlw1xipg44991j6md"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "deps": [
+    "ansible-doc",
+    "jinja2-mode",
+    "polymode",
+    "yaml-mode"
+   ],
+   "commit": "01c9ec1d8a933fa0b2711940d29331d58c27d2a7",
+   "sha256": "02ff0df8bn5cwvnpc2862wsii2xvjh0waymgiybm8j829x1awjp9"
+  }
+ },
+ {
+  "ename": "poly-erb",
+  "commit": "3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d",
+  "sha256": "01c1z2jll497k1y8835pp54n121y0gkyz1pdxcdjjqv7ia8jwfyy",
+  "fetcher": "github",
+  "repo": "polymode/poly-erb",
+  "unstable": {
+   "version": [
+    20200316,
+    1314
+   ],
+   "deps": [
+    "polymode"
+   ],
+   "commit": "56c744b8d87d8cbe0aba2696d4e8525afc4aa0e8",
+   "sha256": "118x9qrays54n6ksnln51ps5c298zs8ih7k49mn6aq6lpvwy5wjr"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "polymode"
+   ],
+   "commit": "56c744b8d87d8cbe0aba2696d4e8525afc4aa0e8",
+   "sha256": "118x9qrays54n6ksnln51ps5c298zs8ih7k49mn6aq6lpvwy5wjr"
+  }
+ },
+ {
+  "ename": "poly-markdown",
+  "commit": "3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d",
+  "sha256": "0pxai5x2vz6j742s3bpcy82dxja6441fsgclhz1hbv2ykazbm141",
+  "fetcher": "github",
+  "repo": "polymode/poly-markdown",
+  "unstable": {
+   "version": [
+    20200316,
+    1315
+   ],
+   "deps": [
+    "markdown-mode",
+    "polymode"
+   ],
+   "commit": "1536cf0c32f71d5cd05c90f7905905e38006e95d",
+   "sha256": "1q4qq0ql08hxkdrd2aal03560k612my7bvnfpfij3g432hn0p7v6"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "markdown-mode",
+    "polymode"
+   ],
+   "commit": "1536cf0c32f71d5cd05c90f7905905e38006e95d",
+   "sha256": "1q4qq0ql08hxkdrd2aal03560k612my7bvnfpfij3g432hn0p7v6"
+  }
+ },
+ {
+  "ename": "poly-noweb",
+  "commit": "3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d",
+  "sha256": "1692js29wdjpxvcbcaxysbsq6pxdqr38frqf88ksldlz35cmy62b",
+  "fetcher": "github",
+  "repo": "polymode/poly-noweb",
+  "unstable": {
+   "version": [
+    20200316,
+    1315
+   ],
+   "deps": [
+    "polymode"
+   ],
+   "commit": "3b0cd36ca9a707e8a09337a3468fa85d81fc461c",
+   "sha256": "1jl5h4nf10xd2gdlsxi6h2n3z5zh26ffcixn68xfp5q4zl34zk8p"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "polymode"
+   ],
+   "commit": "3b0cd36ca9a707e8a09337a3468fa85d81fc461c",
+   "sha256": "1jl5h4nf10xd2gdlsxi6h2n3z5zh26ffcixn68xfp5q4zl34zk8p"
+  }
+ },
+ {
+  "ename": "poly-org",
+  "commit": "3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d",
+  "sha256": "1xrhdjmz3p5d3sgbfpmf6wksa1cpxqhy1wg17b5x8ah4w4yhpdca",
+  "fetcher": "github",
+  "repo": "polymode/poly-org",
+  "unstable": {
+   "version": [
+    20200316,
+    1315
+   ],
+   "deps": [
+    "polymode"
+   ],
+   "commit": "8f4d11489532be98a291258ca27405aa528fc126",
+   "sha256": "1srnwcsn2bh8gqzxixkhffk7gbnk66kd4dgvxbnps5nxqc6v0qhc"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "polymode"
+   ],
+   "commit": "8f4d11489532be98a291258ca27405aa528fc126",
+   "sha256": "1srnwcsn2bh8gqzxixkhffk7gbnk66kd4dgvxbnps5nxqc6v0qhc"
+  }
+ },
+ {
+  "ename": "poly-rst",
+  "commit": "d3fb89f58903245a8df75060ddd695a05cedb322",
+  "sha256": "08sdnjb5zvlynyxkmajn1j9gnjdjj81ycid9ziydvrb7hb88x2m4",
+  "fetcher": "github",
+  "repo": "polymode/poly-rst",
+  "unstable": {
+   "version": [
+    20200316,
+    1315
+   ],
+   "deps": [
+    "polymode"
+   ],
+   "commit": "8530f56fbdce01bcf4004839ff54e4156282c2b5",
+   "sha256": "088wzagwxpf2j67wb1i6agqfa944sahh2fm8my2m50spbbd9ymhl"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "polymode"
+   ],
+   "commit": "8530f56fbdce01bcf4004839ff54e4156282c2b5",
+   "sha256": "088wzagwxpf2j67wb1i6agqfa944sahh2fm8my2m50spbbd9ymhl"
+  }
+ },
+ {
+  "ename": "poly-ruby",
+  "commit": "68213703359324d09553a2164f1f6ecca7c16854",
+  "sha256": "0d8s6bl5ynx0r5cwvfkd52rksiq5kdyrgbxds56r8ls6cfkwqngg",
+  "fetcher": "github",
+  "repo": "knu/poly-ruby.el",
+  "unstable": {
+   "version": [
+    20180905,
+    929
+   ],
+   "deps": [
+    "polymode"
+   ],
+   "commit": "794ebb926ace23e9c1398da934701951432dcea2",
+   "sha256": "1ffm81hg1gah7hb9x556hda5g4j3gk4c986q9gaacvfizqak3gyy"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "deps": [
+    "polymode"
+   ],
+   "commit": "794ebb926ace23e9c1398da934701951432dcea2",
+   "sha256": "1ffm81hg1gah7hb9x556hda5g4j3gk4c986q9gaacvfizqak3gyy"
+  }
+ },
+ {
+  "ename": "poly-slim",
+  "commit": "3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d",
+  "sha256": "15nh0d8y79rwc24akxfpf346jypadfgjjn6vlgaj6xjnj7wsp7ax",
+  "fetcher": "github",
+  "repo": "polymode/poly-slim",
+  "unstable": {
+   "version": [
+    20200316,
+    1316
+   ],
+   "deps": [
+    "polymode",
+    "slim-mode"
+   ],
+   "commit": "9e9b5164c68955974fd5f5d220aec5af9b5ba3ae",
+   "sha256": "1742wlx07khra7xfbd6f8d3i030w87mncnyx6kf6im10khf8qwmb"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "polymode",
+    "slim-mode"
+   ],
+   "commit": "9e9b5164c68955974fd5f5d220aec5af9b5ba3ae",
+   "sha256": "1742wlx07khra7xfbd6f8d3i030w87mncnyx6kf6im10khf8qwmb"
+  }
+ },
+ {
+  "ename": "poly-wdl",
+  "commit": "43e48725f64cb660e2d210a1b39ae9e68e5c5087",
+  "sha256": "0fj9rxh67aczzd4pyh56r0974b60ixmrb2cbwjmndj55agyw39xb",
+  "fetcher": "github",
+  "repo": "jmonlong/poly-wdl",
+  "unstable": {
+   "version": [
+    20190712,
+    529
+   ],
+   "deps": [
+    "polymode",
+    "wdl-mode"
+   ],
+   "commit": "963faa828d15d49cee5a63f619c3c30e162c2d0f",
+   "sha256": "0bihvkkq4v7wadwbsrgi7a0zmhqn2lp76pnq7vwwsvs1rm36pbvy"
+  }
+ },
+ {
+  "ename": "polymode",
+  "commit": "3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d",
+  "sha256": "15i9masklpy4iwskc7dzqjhb430ggn0496z4wb1zjj0b9xx4wj66",
+  "fetcher": "github",
+  "repo": "polymode/polymode",
+  "unstable": {
+   "version": [
+    20200411,
+    915
+   ],
+   "commit": "2a61fb6d3e805bc0e4ca7b6510510a955c6bfb6a",
+   "sha256": "0cphikjz9hwij1k41radyar6nh7md8v98qwn2j9lzcbyz69hrvaq"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "commit": "44265e35161d77f6eaa09388ea2256b89bd5dcc8",
+   "sha256": "18ssl2h861dm2jkd3df6wkfr48p8zk337dbvpq5522kia7fq1lbn"
+  }
+ },
+ {
+  "ename": "pomidor",
+  "commit": "4e0d4f313081594df23f357c40feb456847d8bd0",
+  "sha256": "0pdzipyza98dhnz6am8lrmz8fh3p1c21v2mhs56fb9lwyvcgv8fi",
+  "fetcher": "github",
+  "repo": "TatriX/pomidor",
+  "unstable": {
+   "version": [
+    20200513,
+    1054
+   ],
+   "commit": "308a438550173685cb852a8aadef75c25701513e",
+   "sha256": "1w4sds6h6q80drqzkmiz51nvy942a88s99zfrvmyvfrvwv7wlqqb"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "alert"
+   ],
+   "commit": "590e64d316d9210bd00cb4eb39d2f07ddc16809a",
+   "sha256": "0001k4p09il5f20s0jgyi96wzslfcgv3y35wfxj771gixlacnrhi"
+  }
+ },
+ {
+  "ename": "pomodoro",
+  "commit": "0b5c2c50eb87952d01c1b338b7d3e4b3a4546555",
+  "sha256": "075sbypas8xlhsw8wg3mgi3fn5yf7xb3klyjgyy8wfkgdz0269f8",
+  "fetcher": "github",
+  "repo": "baudtack/pomodoro.el",
+  "unstable": {
+   "version": [
+    20190201,
+    2152
+   ],
+   "commit": "6cd665ceeaca1f70954aa4caef6f085179f94c69",
+   "sha256": "08z2nja3bhjgg6k7bb0cr8v02y8gaxkmxmfcvvgiixw3kfrnkpwn"
+  }
+ },
+ {
+  "ename": "pony-mode",
+  "commit": "a1fd64317610fb6ef5b14e8bf15e727680d5ff09",
+  "sha256": "1hgiryhpxv30bjlgv9pywzqn2ypimwzdhx03znqvn56zrwn1frnl",
+  "fetcher": "github",
+  "repo": "davidmiller/pony-mode",
+  "unstable": {
+   "version": [
+    20170807,
+    1522
+   ],
+   "commit": "760684d30b6c234d1b88c9a4673a808f36f7f341",
+   "sha256": "1y4gxn25i2nszdhqq8jxf9h65mqfgcwbypx5p4wkan5i1v2i3yr1"
+  }
+ },
+ {
+  "ename": "pony-snippets",
+  "commit": "0ef333f9ea8ec691b65e7fbd286fb7f1ddbe5381",
+  "sha256": "0yl2jzc8yyvs93xh802gcnm8j2zharih3hnsiv1syr0g5ycgkd41",
+  "fetcher": "github",
+  "repo": "ponylang/pony-snippets",
+  "unstable": {
+   "version": [
+    20200418,
+    354
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "115a0d5066f89554bee9cb1045bcda5a18ebd441",
+   "sha256": "1g11w52bf724zwwsvrcylk3ndjci2cnbzing77c91psz6d7zjkvw"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "56018b23a11563c6766ed706024b22aa5a4556b4",
+   "sha256": "0xjvxfkrl6wl31s7rvbv9zczn6d6i9vf20waqlr3c2ff3zy55ygy"
+  }
+ },
+ {
+  "ename": "ponylang-mode",
+  "commit": "0ef333f9ea8ec691b65e7fbd286fb7f1ddbe5381",
+  "sha256": "06av5plxg7ry1dvmq87d8ja6slxfakrfadayz7gdkgni6z76ghs3",
+  "fetcher": "github",
+  "repo": "ponylang/ponylang-mode",
+  "unstable": {
+   "version": [
+    20200510,
+    200
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "d72e2a53b4b542ad8adf1807d7b94a7788ab00cf",
+   "sha256": "1k13fpnd40lpg90vgck28cxfg6i2m5y2pagkw27zaqcd1h8n7d59"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    12
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "d72e2a53b4b542ad8adf1807d7b94a7788ab00cf",
+   "sha256": "1k13fpnd40lpg90vgck28cxfg6i2m5y2pagkw27zaqcd1h8n7d59"
+  }
+ },
+ {
+  "ename": "pophint",
+  "commit": "0055c2887acbbd8a2803bf3f81ac2cc444cc805a",
+  "sha256": "1chq2j79hg095jxw5z3pz4qicqrccw0gj4sxrin0a55hnprzzp72",
+  "fetcher": "github",
+  "repo": "aki2o/emacs-pophint",
+  "unstable": {
+   "version": [
+    20200420,
+    1429
+   ],
+   "deps": [
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "5e13da4578ae7ba00e6f7bae31eb546d713cc19d",
+   "sha256": "01bwfswzzrjxrjaqysaqnav7h3swwyigxw7nj0cgrm3w8cp1y2a8"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    0
+   ],
+   "deps": [
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "5e13da4578ae7ba00e6f7bae31eb546d713cc19d",
+   "sha256": "01bwfswzzrjxrjaqysaqnav7h3swwyigxw7nj0cgrm3w8cp1y2a8"
+  }
+ },
+ {
+  "ename": "poporg",
+  "commit": "63502ec265a66d3f72ef93a2f6e7c2e517ff98a3",
+  "sha256": "08s42689kd78h2fmw230ja5dd3c3b4lx5mzadncwq0lj91y86kd8",
+  "fetcher": "github",
+  "repo": "QBobWatson/poporg",
+  "unstable": {
+   "version": [
+    20170403,
+    751
+   ],
+   "commit": "2c58d68c81ecca4140bf179f19ed153ec804b65a",
+   "sha256": "1ymqhy0sqd54z154s3cm6q1m4xnr9wkx9dl5f93845k11ay3kvln"
+  }
+ },
+ {
+  "ename": "popup",
+  "commit": "083fb071191bccd6feb3fb84569373a597440fb1",
+  "sha256": "151g00h9rkid76qf6c53n8bncsfaikmhj8fqcb3r3a6mbngcd5k2",
+  "fetcher": "github",
+  "repo": "auto-complete/popup-el",
+  "unstable": {
+   "version": [
+    20160709,
+    1429
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "4839797cd1db25be6f3f98bc8d401b6c2af01f9f",
+   "sha256": "1sxzv4zdmyra6b6nicnng0zpixlpxnczhq0qjyfzxvvhks7jyyf3"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    3
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "46632ab9652dacad56fd961cd6def25a015170ae",
+   "sha256": "1y538siabcf1n00wr4iz5gbxfndw661kx2mn9w1g4lg7yi4n0h0h"
+  }
+ },
+ {
+  "ename": "popup-complete",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "1mw892nr3dfhsjiqyyf3znd7vji4kxly295bbq74vszza2i0b87i",
+  "fetcher": "github",
+  "repo": "emacsorphanage/popup-complete",
+  "unstable": {
+   "version": [
+    20141109,
+    308
+   ],
+   "deps": [
+    "popup"
+   ],
+   "commit": "caa655a6d8472e9a4bfa1311126d90d7d1b07fca",
+   "sha256": "1q9zajv6g7mi6k98kzq3498nhmdkp1z9d2b8vgzbk7745d39gm9b"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "popup"
+   ],
+   "commit": "e362d4a005b36646ffbaa6be604e9e31bc406ca9",
+   "sha256": "084hb3zn1aiabbyxgaalszb2qjf9z64z960ks5fvz8nh7n6y7ny4"
+  }
+ },
+ {
+  "ename": "popup-edit-menu",
+  "commit": "e824ae5bd9214f8de210059f8145f13a4e62e8a1",
+  "sha256": "1mqni09l1xfxv4g64hskpsla41r5d2xfbw81ncbszwqzlln6k5bf",
+  "fetcher": "github",
+  "repo": "debugfan/popup-edit-menu",
+  "unstable": {
+   "version": [
+    20170404,
+    1425
+   ],
+   "commit": "925600a6e29183841199e866cf55e566a6a1b002",
+   "sha256": "1dd0ss7cjdjs3c7vkq8p874408iysih80brc8vlfh1f43cnc5v92"
+  }
+ },
+ {
+  "ename": "popup-imenu",
+  "commit": "5ca5d65d6a9c7ef3fa2684271fe087dc132d3a61",
+  "sha256": "0lxwfaa9vhdn55dj3idp8c3fg1g26qsqq46y5bimfd0s89bjbaxn",
+  "fetcher": "github",
+  "repo": "ancane/popup-imenu",
+  "unstable": {
+   "version": [
+    20170326,
+    1040
+   ],
+   "deps": [
+    "dash",
+    "flx-ido",
+    "popup"
+   ],
+   "commit": "c5e2e69adbd3a630e4cb750965a1aee8c10c1f09",
+   "sha256": "0vn0jli0ya7xnapifkgzynbnh3rpnzb82j5k9bla2j4miqfc6cg8"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "deps": [
+    "dash",
+    "flx-ido",
+    "popup"
+   ],
+   "commit": "c5e2e69adbd3a630e4cb750965a1aee8c10c1f09",
+   "sha256": "0vn0jli0ya7xnapifkgzynbnh3rpnzb82j5k9bla2j4miqfc6cg8"
+  }
+ },
+ {
+  "ename": "popup-kill-ring",
+  "commit": "0b745b067e5d68467b89e0dbade7a9a76de2946c",
+  "sha256": "1jfw669xi2983jj3hiw5lyhc0rc0318qrmqx03f7m4ylg70dgxip",
+  "fetcher": "github",
+  "repo": "waymondo/popup-kill-ring",
+  "unstable": {
+   "version": [
+    20131020,
+    1854
+   ],
+   "deps": [
+    "popup",
+    "pos-tip"
+   ],
+   "commit": "5773dfadc104a906c088a3ec62e8cdd3e01e57fa",
+   "sha256": "1zdwlmk3vr0mq0dxrnkqjncalnbmvpxc0lma2sv3a4czl8yv0inn"
+  }
+ },
+ {
+  "ename": "popup-switcher",
+  "commit": "ef7d1897c4c4a6f4b4527279e6dad976219d7b78",
+  "sha256": "1888xiqhrn7fcpjnr3smchmmqwfayfbbyvdkdb79c6drzjcvidp1",
+  "fetcher": "github",
+  "repo": "kostafey/popup-switcher",
+  "unstable": {
+   "version": [
+    20200201,
+    1913
+   ],
+   "deps": [
+    "cl-lib",
+    "popup"
+   ],
+   "commit": "e275ec35de3b9cdedf0d6b2a4a78e91c605381be",
+   "sha256": "1zm6zk7c2i7gmn5am2d7090j1a71vbis8lbrzrbxdx53q6sklgi7"
+  }
+ },
+ {
+  "ename": "popwin",
+  "commit": "7856a62fb86415c88aa72b574895328c93c10a09",
+  "sha256": "0zkaaj80ymssscj8iknndc3p6ydg1l32s2l63kqiy9kc46r2r5fz",
+  "fetcher": "github",
+  "repo": "emacsorphanage/popwin",
+  "unstable": {
+   "version": [
+    20200122,
+    1440
+   ],
+   "commit": "d69dca5c9ec4b08f5268ff2d6b5097618d4082d7",
+   "sha256": "1w2dmzmy8k4drdhjzkryk6nbkl56aizvyawwn3dyc2gr0vg8lbb4"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "commit": "4052b6e51bc6cc80cfc86007d2cadbbc4bbd55b5",
+   "sha256": "0kdlpjrf1xqyqyzfdymbin34jgs06l465p2ggpj4bb4zaypw2hr5"
+  }
+ },
+ {
+  "ename": "portage-navi",
+  "commit": "0a467702b3ac3c8bdc723262e6919f67fd71d524",
+  "sha256": "1wjkh8xj5120v9fz1nrpkd6x4f22ni8h2lfkd82df7kjz6bzdfwg",
+  "fetcher": "github",
+  "repo": "kiwanami/emacs-portage-navi",
+  "unstable": {
+   "version": [
+    20141208,
+    1355
+   ],
+   "deps": [
+    "concurrent",
+    "ctable"
+   ],
+   "commit": "8016c3e99fe6cef101d479a3d69185796b22ca2f",
+   "sha256": "1pm4x74pw67m2izr9dir201dn5g9icgk6h2j8rqvasgx8v8krv3i"
+  }
+ },
+ {
+  "ename": "porthole",
+  "commit": "ba1c1a010faa762d371da6a896c6e236ef031302",
+  "sha256": "0kllq52jrmqrjsz0shi4aviz19m6pci216i5fassgf71ra8v15s7",
+  "fetcher": "github",
+  "repo": "jcaw/porthole",
+  "unstable": {
+   "version": [
+    20200404,
+    1454
+   ],
+   "deps": [
+    "f",
+    "json-rpc-server",
+    "web-server"
+   ],
+   "commit": "9e68b419acf9245208f8094e10041b7f04511473",
+   "sha256": "0kaf00924jg50l2zdhyf1lxsh44nfp4zbc23wxbir45xdx9rzl3z"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "f",
+    "json-rpc-server",
+    "web-server"
+   ],
+   "commit": "9e68b419acf9245208f8094e10041b7f04511473",
+   "sha256": "0kaf00924jg50l2zdhyf1lxsh44nfp4zbc23wxbir45xdx9rzl3z"
+  }
+ },
+ {
+  "ename": "pos-tip",
+  "commit": "306e9978d2a071548cc9d8c531a1ce6c6c6b99aa",
+  "sha256": "13qjz112qlrnq34lr70087gshzq8m44knfl6694hfprzjgix84vh",
+  "fetcher": "github",
+  "repo": "pitkali/pos-tip",
+  "unstable": {
+   "version": [
+    20191227,
+    1356
+   ],
+   "commit": "179cc126b363f72ca12fab1e0dc462ce0ee79742",
+   "sha256": "1rz6lqmhs7l49cwwqs7gl2i49l3gvziz1gs556jzsic7jzf9xk1j"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    6
+   ],
+   "commit": "1b81694d1dc29253db0e855b82563f84a32b38d4",
+   "sha256": "0w8bnspnk871qndp18hs0wk4x9x31xr9rwbvf5dc8mcbnj29ch33"
+  }
+ },
+ {
+  "ename": "posframe",
+  "commit": "fa3488f2ede1201faf4a147313456ed90271f050",
+  "sha256": "02chwkc7gn7fxaaxsz9msmrhrd62bji5hhb71kdm019x8d84z06w",
+  "fetcher": "github",
+  "repo": "tumashu/posframe",
+  "unstable": {
+   "version": [
+    20200426,
+    819
+   ],
+   "commit": "093b29a53cbeda6d637ccc9ef4dfc47123e79b9e",
+   "sha256": "0wca1w667h930dyi3hm1kqiqapggnwbgqjbxiwpgj7l773s7xdbw"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    0
+   ],
+   "commit": "83b4d39fdda34355c01aecc22677f7376ae0f013",
+   "sha256": "0cjrl4xgs70hbw1a1mqkdmpcmrxaakw8csrz365c31vj14nii0ax"
+  }
+ },
+ {
+  "ename": "posix-manual",
+  "commit": "5322048b88381fa4ec49fcd14bb749144d29585c",
+  "sha256": "1bmjy3gxr4k6yy18rj7pc8b7ziw2ynfily7siqcb59r9rygx6m9l",
+  "fetcher": "github",
+  "repo": "lassik/emacs-posix-manual",
+  "unstable": {
+   "version": [
+    20200301,
+    1103
+   ],
+   "commit": "ebaacd7266ae7a66605317f57b9f42e9cfb2ce1e",
+   "sha256": "0kdcpd59jd1gasqk5gx4ggbyp492b53dy6n3nkv9j2rj8618yzs6"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "ebaacd7266ae7a66605317f57b9f42e9cfb2ce1e",
+   "sha256": "0kdcpd59jd1gasqk5gx4ggbyp492b53dy6n3nkv9j2rj8618yzs6"
+  }
+ },
+ {
+  "ename": "postcss-sorting",
+  "commit": "9fae97430f211786f615f7450936f823e2a04ec4",
+  "sha256": "0730b2wddal15yi4k6wzhv9xv1k40iwrn3mivg9bkxabh3mgrl10",
+  "fetcher": "github",
+  "repo": "P233/postcss-sorting.el",
+  "unstable": {
+   "version": [
+    20180211,
+    956
+   ],
+   "commit": "deb0c935d2904c11a965758a9aee5a0e905f21fc",
+   "sha256": "03kng7i09px5vizvmmrar7rj3bk27y43bi8hlzxax0ja27k0c66c"
+  }
+ },
+ {
+  "ename": "pov-mode",
+  "commit": "89d6b4a3d7a5f3cc93e9d13d4c174b5d7de7bad1",
+  "sha256": "1xzdmlfi5ixdh08v0ca80zkh9n3gfn4ql5pnl3jh745wbj9azxp9",
+  "fetcher": "github",
+  "repo": "melmothx/pov-mode",
+  "unstable": {
+   "version": [
+    20161115,
+    743
+   ],
+   "commit": "9fc1db3aab7c27155674dd1a87ec62606035d074",
+   "sha256": "1399fxivy15y2k4vp7vqqgsi8l1mzxc8aa2mf2x1hksgiyq60acp"
+  }
+ },
+ {
+  "ename": "pow",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "13f3pk52f9lkkl3zi6448j9b39kn6ny9vmnlsvhwa6s0vaz8f220",
+  "fetcher": "github",
+  "repo": "yukihr/emacs-pow",
+  "unstable": {
+   "version": [
+    20140420,
+    806
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "ea83986b8ca8e27cb996290d6463b111ec0966ce",
+   "sha256": "112s6qb80sn44b1cxggqfci89wymxvvwkwl7nknfnr2dzd58lzzy"
+  }
+ },
+ {
+  "ename": "powerline",
+  "commit": "f805053cd4dd9ed53ee0df17ad69429bc62325bb",
+  "sha256": "0gsffr6ilmckrzifsmhwd42vr85vs42pc26f1205pbxb7ma34dhx",
+  "fetcher": "github",
+  "repo": "milkypostman/powerline",
+  "unstable": {
+   "version": [
+    20200105,
+    2053
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "edbb464eef680efc9d408730288c716cd4cac404",
+   "sha256": "0j1bb9dyr76m68gn94qk6k6bxhdqbiq59fzi4mnx3ivnnkbfz6n7"
+  },
+  "stable": {
+   "version": [
+    2,
+    4
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d3dcfc57a36111d8e0b037d90c6ffce85ce071b2",
+   "sha256": "1hp3xp18943n0rlggz55150020ivw8gvi1vyxkr4z8xhpwq4gaar"
+  }
+ },
+ {
+  "ename": "powerline-evil",
+  "commit": "c1a92c8b5b92269773d314aa6cec4f0057291a68",
+  "sha256": "1x5hvnjdrpn3c8z6m7xfk30qd5y58p3jcyqr48qx91d0109gk342",
+  "fetcher": "github",
+  "repo": "johnson-christopher/powerline-evil",
+  "unstable": {
+   "version": [
+    20190603,
+    340
+   ],
+   "deps": [
+    "evil",
+    "powerline"
+   ],
+   "commit": "b77e2cf571e9990734f2b30d826f3a362b559fd1",
+   "sha256": "1hs9jvl5lmfwr9k6qcnxjhd61zsmzq53ania1w5616gqa4qnjzhn"
+  }
+ },
+ {
+  "ename": "powershell",
+  "commit": "7002c50f2734675134791916aa9d8b82b4582fcb",
+  "sha256": "162k8y9k2n48whaq93sqk86zy3p9qvsfxgyfv9n1nvk4l5wn70wk",
+  "fetcher": "github",
+  "repo": "jschaf/powershell.el",
+  "unstable": {
+   "version": [
+    20190421,
+    2038
+   ],
+   "commit": "87826777bd3ebd53740be99b4546bfc11ccc625d",
+   "sha256": "038pcb7hv05yja9fvrmps6vh096a5rrdmyx9l8nisxqnsqf97ghv"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "7316f44d0b528552f5a0692f778e5f0efd964299",
+   "sha256": "010b151wblgxlfpy590yanbl2r8qhpbqgi02v0pyir340frm9ngn"
+  }
+ },
+ {
+  "ename": "powerthesaurus",
+  "commit": "04a7e6d2292e933e0318296107774e1248888f3c",
+  "sha256": "011kl3n1hfmz844w198gvh5anjyqj0m4pvryahslc0r1zavik7ni",
+  "fetcher": "github",
+  "repo": "SavchenkoValeriy/emacs-powerthesaurus",
+  "unstable": {
+   "version": [
+    20190721,
+    805
+   ],
+   "deps": [
+    "jeison",
+    "request",
+    "s"
+   ],
+   "commit": "81a262ec0c9294ad377bafc6cc4e6d91b461acb6",
+   "sha256": "0ffy2c56difdhgpwvvvgyvifldxlmijcs11hs6hx6gv3hndmym7i"
+  }
+ },
+ {
+  "ename": "ppd-sr-speedbar",
+  "commit": "f930f54048d06f6a97824b66fbb74649eed40b54",
+  "sha256": "1m2918hqvb9c6rgb5szs95ds99gdjdxggcbdfqzmbb5sz2936av8",
+  "fetcher": "github",
+  "repo": "rdallasgray/ppd-sr-speedbar",
+  "unstable": {
+   "version": [
+    20151108,
+    1224
+   ],
+   "deps": [
+    "project-persist-drawer",
+    "sr-speedbar"
+   ],
+   "commit": "d88d7f63f695824c435dd996405454d1e46d2aa3",
+   "sha256": "08ff4l6vlyzqpy6cv9wc714h3ia8cwy5gc3qk5zml1yijv8xvb75"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    6
+   ],
+   "deps": [
+    "project-persist-drawer",
+    "sr-speedbar"
+   ],
+   "commit": "19d3e924407f40a6bb38c8fe427a159af755adce",
+   "sha256": "0pv671j8g09pn61kkfb3pa9axfa9zd2jdrkgr81rm2gqb2vh1hsq"
+  }
+ },
+ {
+  "ename": "ppp",
+  "commit": "1442ec5baf60f85e9603cb2a70745914174d5c9a",
+  "sha256": "0x71y998a81w79bambwds58wgzywa3qjvm4brkfjqfd1n7cfzsz4",
+  "fetcher": "github",
+  "repo": "conao3/ppp.el",
+  "unstable": {
+   "version": [
+    20200418,
+    1551
+   ],
+   "deps": [
+    "leaf"
+   ],
+   "commit": "27683aa4a0df67b4539bcaa2e82d865023cf1fae",
+   "sha256": "0azqpmlz6r2amklzrgi0wgmy89fbkz0kkpikgf5gccfmks5pij6y"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "6aabd694bcc66775c6a4328fa653a83e39791252",
+   "sha256": "043wsaibkz82ckxdw4r25nfb8pql3ba9jcyd3vg92lvjdzblm05l"
+  }
+ },
+ {
+  "ename": "prassee-theme",
+  "commit": "15425b576045af1c508912e2091daf475b80b429",
+  "sha256": "1j0817hxxri6mq9pplgwf5jp2dagk6hay7g1a1lgz4qgkf5jnshs",
+  "fetcher": "github",
+  "repo": "prassee/prassee-emacs-theme",
+  "unstable": {
+   "version": [
+    20180709,
+    1004
+   ],
+   "commit": "81126f69cdbaab836c00ae7a49aaf89d4229fde1",
+   "sha256": "18yqsl8jsi3zxfcigvm6fjcx84hzb8b3j7ihiyzqmdhmvma3i08y"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "9850c806d39acffdef8e91e1a31b54a7620cbae3",
+   "sha256": "1agghimrmh4kh71y51l6lzampjl15ac6jxrrhdviw95c3rxfll4x"
+  }
+ },
+ {
+  "ename": "preproc-font-lock",
+  "commit": "582692267795c91bb7f2ec3bffc2b9c2be9f2a32",
+  "sha256": "1ra0lgjv6713zym2h8pblf2ryf0f658l1khbxbwnxl023gkyj9v4",
+  "fetcher": "github",
+  "repo": "Lindydancer/preproc-font-lock",
+  "unstable": {
+   "version": [
+    20151107,
+    2018
+   ],
+   "commit": "565fda9f5fdeb0598986174a07e9fb09f7604397",
+   "sha256": "0yrfd9qaz16nqcvjyjm9qci526qgkv6k51q5752h3iyqkxnss1pd"
+  }
+ },
+ {
+  "ename": "prescient",
+  "commit": "ec02349e31531c347e4a43fbde56ae4386898cc6",
+  "sha256": "04js3hblavfrc6kqp942x5yjdl3ndazf3n64p83423ldsmhbip6s",
+  "fetcher": "github",
+  "repo": "raxod502/prescient.el",
+  "unstable": {
+   "version": [
+    20200412,
+    1607
+   ],
+   "commit": "3ab7605d997fb8337bf5ded2ad960b98ac0e1fd7",
+   "sha256": "081v916gnjvx2rzjbqkqhdwijz57w7iryxzg71729gwvavs25lsv"
+  },
+  "stable": {
+   "version": [
+    4,
+    1
+   ],
+   "commit": "aa3110281a0622fa7b5da115cefb71a319b5b1a0",
+   "sha256": "1rf5cz262hjpck7vpxg15bccdrwrmlhiyxc20liwcjb2ig36nis3"
+  }
+ },
+ {
+  "ename": "preseed-generic-mode",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "14vbx6y7h4vqc5kkgj4mbr9zj6gqf6ib3hh2917m203s8y87lsfl",
+  "fetcher": "github",
+  "repo": "suntong/preseed-generic-mode",
+  "unstable": {
+   "version": [
+    20180210,
+    500
+   ],
+   "commit": "3aa8806c4a659064baa01751400c53fbaf847f66",
+   "sha256": "02yb5xkgwqxpwghhjmxf2gx0faifi04w2jd8cvfsiwzwqmqyhmv7"
+  }
+ },
+ {
+  "ename": "presentation",
+  "commit": "747afd0339215528bf104f778a13edacbac510b7",
+  "sha256": "0zdpfvg6kbvi6b4lb7vbdjrkgk0j1q6gzyd0s2b0603fnyy4sqdg",
+  "fetcher": "github",
+  "repo": "zonuexe/emacs-presentation-mode",
+  "unstable": {
+   "version": [
+    20180427,
+    224
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f53f67aeab97e8eea6d1f12df5f7ce3b1b03b879",
+   "sha256": "0hv8z5wqfg8xkx590jm4c0fjhdxy8312bvbm16ifz2vflvl6gjb2"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "e9e402d05a8b6d9e1e7fe853503c92fea4cf65cb",
+   "sha256": "10pvjdnb48fk663232qvh4gapk2yiz4iawpffzjrbs3amxh50bi7"
+  }
+ },
+ {
+  "ename": "prettier-js",
+  "commit": "968ac7bb98b385f8542dc150486982c0ded73187",
+  "sha256": "0mf66sdsdbhf76pwkjkfjsnh26g4j3zb4y1qrbxc9jcvymccb3yq",
+  "fetcher": "github",
+  "repo": "prettier/prettier-emacs",
+  "unstable": {
+   "version": [
+    20180109,
+    726
+   ],
+   "commit": "e9b73e81d3e1642aec682195f127a42dfb0b5774",
+   "sha256": "0hj4fv3fgc60i6jrsx4a81s5c9fsxxafhhs3q2q1dypsscjci9ph"
+  }
+ },
+ {
+  "ename": "prettify-greek",
+  "commit": "23c8f10205187babb17e3abc3dc40eb1938e6640",
+  "sha256": "1izl6r6i3zbhd7r7lz2k42yyz6qcng11wfmb7lx4883dj00flsl7",
+  "fetcher": "gitlab",
+  "repo": "fommil/emacs-prettify-greek",
+  "unstable": {
+   "version": [
+    20160603,
+    908
+   ],
+   "commit": "698d07a6ffe85f6fb53f3bfec4f49380c25cfd90",
+   "sha256": "0g2bxa7mwfkc8navbi2w28rd4f4zqphxi13kwmd2p83g3wavd99v"
+  }
+ },
+ {
+  "ename": "pretty-hydra",
+  "commit": "865917fcc75c4118afc89b8bcc20ebdb6302f15d",
+  "sha256": "0gp4cbffpa17svs7fzxighyly7c8brsn3avv3hqvd590kkz3fkri",
+  "fetcher": "github",
+  "repo": "jerrypnz/major-mode-hydra.el",
+  "unstable": {
+   "version": [
+    20190930,
+    2106
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "hydra",
+    "s"
+   ],
+   "commit": "20362323f66883c1336ffe70be24f91509addf54",
+   "sha256": "16krmj2lnk7j5ygdjw4hl020qqxg11bnc8sz15yr4fpy1p7hq5cz"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "hydra",
+    "s"
+   ],
+   "commit": "bba876b86f0b80495004bf185b2b1f6083a1ff3a",
+   "sha256": "08a15knkdq35pzjq82imff016fbfdib5q4glg2xmdy2b5fnk7jqa"
+  }
+ },
+ {
+  "ename": "pretty-mode",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "0zm6azbl70qmq2ybi576wfs3mx0ny54mf97b94ac501miv4fv0mq",
+  "fetcher": "github",
+  "repo": "pretty-mode/pretty-mode",
+  "unstable": {
+   "version": [
+    20190615,
+    2045
+   ],
+   "commit": "5154355e90fdd70d3647257280a89eeb725ef084",
+   "sha256": "0fq3v2ld7mk8nw81vgq2jgpk8wkddk74il3gs1p0zxkly0p155i3"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    3
+   ],
+   "commit": "4ba8fceb7dd733361ed975d80ac2caa3612fa78b",
+   "sha256": "013fig9i4fyx16krp2vfv953p3rwdzr38zs6i50af4pqz4vrcfvh"
+  }
+ },
+ {
+  "ename": "pretty-sha-path",
+  "commit": "6520d692662aaf92023623273597d966ca3cba9d",
+  "sha256": "0qqsg383391dnsk46xm8plq7xmdmnis3iv7h7dmchpzd99bkm9lq",
+  "fetcher": "github",
+  "repo": "alezost/pretty-sha-path.el",
+  "unstable": {
+   "version": [
+    20141105,
+    1826
+   ],
+   "commit": "a2b43dd9de423a38d67cda2e3bd9412f7d363257",
+   "sha256": "1n0594msgy53ia58gjfkm3z3cnmq52wrq5992fm28s4jgazbgdfd"
+  }
+ },
+ {
+  "ename": "pretty-symbols",
+  "commit": "ed01ef6333e4558877b0e357ff8bf601fb88b757",
+  "sha256": "0d1ad2x4md0n3fad3s2355wm8hl311qdhih1gkdqwdaj4i1d6gvb",
+  "fetcher": "github",
+  "repo": "drothlis/pretty-symbols",
+  "unstable": {
+   "version": [
+    20140814,
+    959
+   ],
+   "commit": "582cbe51ecfe1cc0a5b185bc06113c8a661e3956",
+   "sha256": "1f00l9f6an1mh8yhf629mw0p37m4jcpl8giz47xbdyw1k6bqn830"
+  }
+ },
+ {
+  "ename": "prism",
+  "commit": "c8ee14b9d67a9703c25b508b324ad7dabaa4352d",
+  "sha256": "1prvvpwa10i260hcj59xfj1vynjv7gykxinqas2xhw6lq6lwrbjk",
+  "fetcher": "github",
+  "repo": "alphapapa/prism.el",
+  "unstable": {
+   "version": [
+    20200407,
+    1148
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "b618f2cea2dbf7c13d8b4fec1760c346eb9ab036",
+   "sha256": "1fn6514ii2z1xbjzmp0h1mhxl1yaqqk4n6zgswhxdywni34cb6hs"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "b618f2cea2dbf7c13d8b4fec1760c346eb9ab036",
+   "sha256": "1fn6514ii2z1xbjzmp0h1mhxl1yaqqk4n6zgswhxdywni34cb6hs"
+  }
+ },
+ {
+  "ename": "private",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "1mvma2xgjy9vkh468x80xlri6qfr7d494la1j6r1clkjsn5kg7hr",
+  "fetcher": "github",
+  "repo": "zhangkaiyulw/private",
+  "unstable": {
+   "version": [
+    20150122,
+    157
+   ],
+   "deps": [
+    "aes"
+   ],
+   "commit": "9266d01c095895cc3ee9de95bc20511e88353755",
+   "sha256": "0zng64f5vwnpkf9fk59yv1ndc646q608a6awr1y9qk0mhzbfzhqm"
+  }
+ },
+ {
+  "ename": "private-diary",
+  "commit": "ef39950941c522e64ea991c9eeecfb5f6f18f6a2",
+  "sha256": "0dgnf375c00nlkp66kbkzsf469063l03b9miiplbhd63zshlv1i1",
+  "fetcher": "github",
+  "repo": "cacology/private-diary",
+  "unstable": {
+   "version": [
+    20151216,
+    1657
+   ],
+   "commit": "0c86fb6150ad8ed14f94def3504f5a68f4147283",
+   "sha256": "1pxr5a9ik09k0f58lawhxiv179n5j8q24zhrs9vjk93yskl1ydwn"
+  }
+ },
+ {
+  "ename": "proc-net",
+  "commit": "4a518f37260084fa7e9221e9189aedc09a951f6d",
+  "sha256": "0562x2s3kk9vlaavak4lya1nlmn4mwlzlc7nw1l3687q023z4hmv",
+  "fetcher": "github",
+  "repo": "nicferrier/emacs-proc-net",
+  "unstable": {
+   "version": [
+    20130322,
+    12
+   ],
+   "commit": "10861112a1f3994c8e6374d6c5bb5d734cfeaf73",
+   "sha256": "0nly5h0d6w8dc08ifb2fiqcn4cqcn9crkh2wn0jzlz4zd2x75qrb"
+  }
+ },
+ {
+  "ename": "proced-narrow",
+  "commit": "7e1bb8de59729a6690f8423b5531380c8293bf0b",
+  "sha256": "1sqxp9jdhh8iy9pvgz0s9jm6p93ib12gn2gpkasxbx93b1jkdlbc",
+  "fetcher": "github",
+  "repo": "travisjeffery/proced-narrow",
+  "unstable": {
+   "version": [
+    20190911,
+    1818
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "0e2a4dfb072eb0369d0020b429e820ae620d325e",
+   "sha256": "0d1qq5606prls7mzy0iri41j2c14l4axz6kq629r4wjdqwshxkli"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    5
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "df5cce50b3d1219b23d28e23cbf68e0c7807a15c",
+   "sha256": "00b2g7prijad6q2zw0vhwq1xb49kcc8ym116zfj5r8wxz9cmpzpr"
+  }
+ },
+ {
+  "ename": "processing-mode",
+  "commit": "ba59561e8a2f259fde170a79844af5e1ef5ed34f",
+  "sha256": "184yg9z14ighz9djg53ji5dgnb98dnxkkwx55m8f0f879x31i89m",
+  "fetcher": "github",
+  "repo": "ptrv/processing2-emacs",
+  "unstable": {
+   "version": [
+    20171022,
+    2302
+   ],
+   "commit": "448aba82970c98322629eaf2746e73be6c30c98e",
+   "sha256": "1fv74k37yyrh6jzasgqj88lrbq152gs9gpbjpxn7fz424c38gq2q"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "228bc56369675787d60f637223b50ce3a1afebbd",
+   "sha256": "08ljf39jfmfpdk36nws2dnwpm7y8252zsdprsc85hr1h1ig5xy15"
+  }
+ },
+ {
+  "ename": "processing-snippets",
+  "commit": "ba59561e8a2f259fde170a79844af5e1ef5ed34f",
+  "sha256": "09vkm9asmjz1in0f63s7bf4amifspsqf5w9pxiy5y0qvmn28fr2r",
+  "fetcher": "github",
+  "repo": "ptrv/processing2-emacs",
+  "unstable": {
+   "version": [
+    20140426,
+    1428
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "448aba82970c98322629eaf2746e73be6c30c98e",
+   "sha256": "1fv74k37yyrh6jzasgqj88lrbq152gs9gpbjpxn7fz424c38gq2q"
+  }
+ },
+ {
+  "ename": "prodigy",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0lfxb80jqjnzssjs6l511jcsmhkpzb5rh5czrb16dkqcz0cl5b2p",
+  "fetcher": "github",
+  "repo": "rejeep/prodigy.el",
+  "unstable": {
+   "version": [
+    20191212,
+    1242
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "6ae71f27b09b172f03fb55b9eeef001206baacd3",
+   "sha256": "16w1xidfbqlbdxq45ff6am9j1hzlxz3pwqvimwk4432prrvnf8zg"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    0
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "3bacca898db9b3493883c95f923a87eb1ce807eb",
+   "sha256": "1whnk1902f8q03clm9xlfl47gkpsywf3mx0ykp70c1q496ab39qj"
+  }
+ },
+ {
+  "ename": "professional-theme",
+  "commit": "bb79514b2afada80da82762890242de5ad88d8de",
+  "sha256": "1l8nisn2c124cpylyahr76hfpdim2125zrns2897p466l5wcxcx5",
+  "fetcher": "github",
+  "repo": "juanjux/emacs-professional-theme",
+  "unstable": {
+   "version": [
+    20150315,
+    1100
+   ],
+   "commit": "0927d1474049a193f9f366bde5eb1887b9ba20ed",
+   "sha256": "0hx7rxa3smdippcpj4j63k0r5l4wflllb0vpnwwknc9j93r7042b"
+  }
+ },
+ {
+  "ename": "prog-fill",
+  "commit": "90d680ed481688c9899adb28fbd9a22a17fa8943",
+  "sha256": "0wnqzkzhaywcyw93z86pngpycsrd1mi79psmck6qbhms1aia79p3",
+  "fetcher": "github",
+  "repo": "ahungry/prog-fill",
+  "unstable": {
+   "version": [
+    20180607,
+    132
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "3fbf7da6dd826e95c9077d659566ee29814a31d8",
+   "sha256": "167is1hbv3nsskz26g9q3zdndqsw9d3rwhbasj0r7a3wabpr8j4r"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "3fbf7da6dd826e95c9077d659566ee29814a31d8",
+   "sha256": "167is1hbv3nsskz26g9q3zdndqsw9d3rwhbasj0r7a3wabpr8j4r"
+  }
+ },
+ {
+  "ename": "prognth",
+  "commit": "db6d52b92317aa5ad5024131b62edb5f91f50033",
+  "sha256": "0hr5a3s0ij4hvn424v885z7pcs62yqm9mamw5b096hgjxgjf6ylm",
+  "fetcher": "github",
+  "repo": "Fuco1/prognth",
+  "unstable": {
+   "version": [
+    20130920,
+    1759
+   ],
+   "commit": "2f1ca4d34b1fd581163e1df122c85418137e8e62",
+   "sha256": "1szxsbk470fg3jp70r20va9hnnf4jj0mb7kxdkn6rd7ky6w34lwm"
+  }
+ },
+ {
+  "ename": "programmer-dvorak",
+  "commit": "89b0f4b5838aa3d4572ca91fe60cf28664368cb6",
+  "sha256": "1w8r35hkl6qy9a89l0m74x9q2vcc4h2hvmi3r2hqcy2ypkn5l5bv",
+  "fetcher": "github",
+  "repo": "yangchenyun/programmer-dvorak",
+  "unstable": {
+   "version": [
+    20150427,
+    137
+   ],
+   "commit": "3288a8f058eca4cab390a564babbbcb17cfa0350",
+   "sha256": "1yklm43d0ppyf4simhqab6m892z4mmxs2145lzw6kpizixavcv00"
+  }
+ },
+ {
+  "ename": "project-abbrev",
+  "commit": "6c2287c7b4c543e92ccfab120388b2c05174d2db",
+  "sha256": "18nrcds02swr0s15gvvpc2fbjj9rq6ky3dz8qp51g7nfaprk2279",
+  "fetcher": "github",
+  "repo": "jcs-elpa/project-abbrev",
+  "unstable": {
+   "version": [
+    20190517,
+    521
+   ],
+   "commit": "22830177a0cea19acf29fb9910b784ea5f66f551",
+   "sha256": "05ks95j6706rabfh1487nix2cjbxa6pjjr0xm01nhd3vcfr1m2b0"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "commit": "fc4e9f774cae42a6fe135833774daaecf2b3dac0",
+   "sha256": "07056jd1z9i65db4pcshhdfrk5yb6xc28k3ihq7pixmya71l15pk"
+  }
+ },
+ {
+  "ename": "project-explorer",
+  "commit": "c2e5d686b8a18c7a17965ff6c5af8f5817b7ab31",
+  "sha256": "076lzmyi1n7yrgdgyh9qinq271qk6k64x0msbzarihr3p4psrn8m",
+  "fetcher": "github",
+  "repo": "sabof/project-explorer",
+  "unstable": {
+   "version": [
+    20150504,
+    14
+   ],
+   "deps": [
+    "cl-lib",
+    "es-lib",
+    "es-windows"
+   ],
+   "commit": "589a09008706f5f4ef91393dc4306eede0d15ca9",
+   "sha256": "04l4m3kxbwvyw9xy6cwakrdxxdswrrs7sya8zn6m738aawbr1mcd"
+  },
+  "stable": {
+   "version": [
+    0,
+    14,
+    3
+   ],
+   "deps": [
+    "cl-lib",
+    "es-lib",
+    "es-windows"
+   ],
+   "commit": "7c2cc86a81f679dda355110f916366b64893a5d4",
+   "sha256": "1hv8ifrpwn434sm41vkgbwni21ma5kfybkwasi6zp0f2b5i9ziw7"
+  }
+ },
+ {
+  "ename": "project-persist",
+  "commit": "bd81d1f8a30ed951ed94b9a4db13a2f7735ea878",
+  "sha256": "0csjwj0qaw0hz2qrj8kxgxlixh2hi3aqib98vm19sr3f1b8qab24",
+  "fetcher": "github",
+  "repo": "rdallasgray/project-persist",
+  "unstable": {
+   "version": [
+    20180906,
+    1302
+   ],
+   "commit": "26d9435bef44da2a1b0892eba822f9f487b98eec",
+   "sha256": "0ja2pnbw11a2gwywfyfbdpk8rkm8imy04wkshpnlh0nwn7lf0clm"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "commit": "26d9435bef44da2a1b0892eba822f9f487b98eec",
+   "sha256": "0ja2pnbw11a2gwywfyfbdpk8rkm8imy04wkshpnlh0nwn7lf0clm"
+  }
+ },
+ {
+  "ename": "project-persist-drawer",
+  "commit": "23084af52d2243016eee73a5ee0cd3e945eec71d",
+  "sha256": "1jv2y2hcqakyvfibclzm7g4diw0bvsv3a8fa43yf19wb64jm8hdb",
+  "fetcher": "github",
+  "repo": "rdallasgray/project-persist-drawer",
+  "unstable": {
+   "version": [
+    20151108,
+    1222
+   ],
+   "deps": [
+    "project-persist"
+   ],
+   "commit": "35bbe132a4fab6a0fec15ce6c0fd2fe6a4aa9626",
+   "sha256": "1nq320ph8fs9a197ji4mnw2xa24dld0r1nka476yvkg4azmcc9x8"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    4
+   ],
+   "deps": [
+    "project-persist"
+   ],
+   "commit": "35bbe132a4fab6a0fec15ce6c0fd2fe6a4aa9626",
+   "sha256": "1nq320ph8fs9a197ji4mnw2xa24dld0r1nka476yvkg4azmcc9x8"
+  }
+ },
+ {
+  "ename": "project-root",
+  "commit": "bcf69e7e859145cb908e79abf4a2f51050e52ace",
+  "sha256": "0mhc7l6px5q2x13h6nmf4ixsghjlzbxjm2liscwn6485yg4bsmja",
+  "fetcher": "github",
+  "repo": "piranha/project-root",
+  "unstable": {
+   "version": [
+    20110206,
+    2030
+   ],
+   "commit": "a49b1be864357683d9489074148b6d667f4ed23b",
+   "sha256": "0nw02f5lmbqdfnw93d3383sdxx1d31szk23zvjlrmmdwv2124281"
+  },
+  "stable": {
+   "version": [
+    0,
+    7
+   ],
+   "commit": "fc1d024a497755c1abfa3eaffde1b18bd3c54865",
+   "sha256": "1z0sqdwa8caick2179bj03qbhjmvh2l5gv1ny6aya979vjgsk0g8"
+  }
+ },
+ {
+  "ename": "project-shells",
+  "commit": "becf54de5ae9582d7c76382dff16d40b04b1a464",
+  "sha256": "0mhifxcpgsfwrhbs7axg6ja4klgzzy9pc0nqa7w3qg45xgi9s4m8",
+  "fetcher": "github",
+  "repo": "hying-caritas/project-shells",
+  "unstable": {
+   "version": [
+    20191123,
+    914
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "5aea9ee0de93f2568afb3f18bb7b43a9715a9a2d",
+   "sha256": "0zh0hwvh5hdn9gpyhqv14l46pbsids83ps86asikd9in7sl2abgn"
+  }
+ },
+ {
+  "ename": "projectile",
+  "commit": "ca7bf43ef8893bf04e9658390e306ef69e80a156",
+  "sha256": "1kf8hql59nwiy13q0p6p6rf5agjvah43f0sflflfqsrxbihshvdn",
+  "fetcher": "github",
+  "repo": "bbatsov/projectile",
+  "unstable": {
+   "version": [
+    20200507,
+    650
+   ],
+   "deps": [
+    "pkg-info"
+   ],
+   "commit": "f650faecf699e4b4659374cf5a949f6927feff3e",
+   "sha256": "142is55cbyya511zp0yl5d1x6i8mvxqjn8zky4gxif15rmmqrk9n"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    0
+   ],
+   "deps": [
+    "pkg-info"
+   ],
+   "commit": "34b2665023f9a29ebd2a415bfb8091db3c804d46",
+   "sha256": "16p79m8mkrlczx4b5v28nnlcd1ny49861lax28r7cb9ps9jhdz7d"
+  }
+ },
+ {
+  "ename": "projectile-codesearch",
+  "commit": "6b1b1d3e356c6b9bffdcf98848918efe2fdfa8c7",
+  "sha256": "1457dhmpgrq1qafr3v4ccw26ix10m60c5vlrpyqsfz8vh8lv0bb8",
+  "fetcher": "github",
+  "repo": "abingham/emacs-codesearch",
+  "unstable": {
+   "version": [
+    20180508,
+    1522
+   ],
+   "deps": [
+    "codesearch",
+    "projectile"
+   ],
+   "commit": "f6eb96f034a925444412cfa03e45e0ccbbafe3f2",
+   "sha256": "1xdkm1f04z1h3ivd6zm8hckf3n3fbi5rwybg4dwi5mim6w84i7j9"
+  }
+ },
+ {
+  "ename": "projectile-direnv",
+  "commit": "602485c251bc573e855dfd33e4e94052afbab93f",
+  "sha256": "1s5dapdcblcbcqyv8df26v8wxl8bhrs9ybl5h5qbzz49gigd8nqh",
+  "fetcher": "github",
+  "repo": "christianromney/projectile-direnv",
+  "unstable": {
+   "version": [
+    20160306,
+    138
+   ],
+   "deps": [
+    "dash",
+    "projectile",
+    "s"
+   ],
+   "commit": "d5d29e5228f840b7a25358a2fd50353ef2dc9b16",
+   "sha256": "1bq47a6lckgin93cqy5wj277rlrw2cgfywgmbdpxvmbhygpg5hqr"
+  }
+ },
+ {
+  "ename": "projectile-git-autofetch",
+  "commit": "7fdfdeb69fd78fc1bb2c62392f860a8c434f1762",
+  "sha256": "0m0raddsw5yvjrw2v6bdaswffmva8y9hxksdgf9axpvrd3rzlk9n",
+  "fetcher": "github",
+  "repo": "andrmuel/projectile-git-autofetch",
+  "unstable": {
+   "version": [
+    20191013,
+    1806
+   ],
+   "deps": [
+    "alert",
+    "projectile"
+   ],
+   "commit": "4a3eba7658a52c6e955d5f7085cd3fd62b53b9c6",
+   "sha256": "01jsj0pv9qqbkdmbykvk4ic40hc1nhaiaqvx17hi7p89hq3nzffr"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "deps": [
+    "alert",
+    "projectile"
+   ],
+   "commit": "4a3eba7658a52c6e955d5f7085cd3fd62b53b9c6",
+   "sha256": "01jsj0pv9qqbkdmbykvk4ic40hc1nhaiaqvx17hi7p89hq3nzffr"
+  }
+ },
+ {
+  "ename": "projectile-hanami",
+  "commit": "9c0123322baee1e96afd055de3f44827574d2b5f",
+  "sha256": "0qi9i4wdggrmihf1j42fqrf38psmb33rlafg3y6da5r7lpn03j1a",
+  "fetcher": "github",
+  "repo": "avdgaag/projectile-hanami",
+  "unstable": {
+   "version": [
+    20160505,
+    1311
+   ],
+   "deps": [
+    "inf-ruby",
+    "projectile",
+    "rake"
+   ],
+   "commit": "c4b8e7d4dfec789ef8493a7c5d4ce0cf7937e579",
+   "sha256": "1pqmyfz0vil30x739r18zpw9n76297ckisimq2g0xl1irhynsvbk"
+  }
+ },
+ {
+  "ename": "projectile-rails",
+  "commit": "b16532bb8d08f7385bca4b83ab4e030d7b453524",
+  "sha256": "0fgvignqdqh0ma91z9385782l89mvwfn77rp1gmy8cbkwi3b7fkq",
+  "fetcher": "github",
+  "repo": "asok/projectile-rails",
+  "unstable": {
+   "version": [
+    20200417,
+    1711
+   ],
+   "deps": [
+    "f",
+    "inf-ruby",
+    "inflections",
+    "projectile",
+    "rake"
+   ],
+   "commit": "11980b2bcb99208888856a9b8666ff329b6f0142",
+   "sha256": "0crb08byq1i9wcjmcl645wc03p1jadm4f9nd138rii69nzancwfl"
+  },
+  "stable": {
+   "version": [
+    0,
+    20,
+    0
+   ],
+   "deps": [
+    "f",
+    "inf-ruby",
+    "inflections",
+    "projectile",
+    "rake"
+   ],
+   "commit": "228f6316f2da229bc82fbbcf52323da951a17871",
+   "sha256": "1l9l0hza6p1l750i7lvys6gnrdy2j0dmlg6nbb6zr2cq6jbf1lkd"
+  }
+ },
+ {
+  "ename": "projectile-ripgrep",
+  "commit": "195f340855b403128645b59c8adce1b45e90cd18",
+  "sha256": "1iczizyayql40wcljvpc1mvfvn9r28b1dkrkcmdxif732gd01jjg",
+  "fetcher": "github",
+  "repo": "nlamirault/ripgrep.el",
+  "unstable": {
+   "version": [
+    20180914,
+    1500
+   ],
+   "deps": [
+    "projectile",
+    "ripgrep"
+   ],
+   "commit": "40e871dcc4519a70981e9f28acea304692a60978",
+   "sha256": "0snn12iibz5frsx6yk6c31hb8knvsd568ghw9jjka5vxdjzap7p9"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "deps": [
+    "projectile",
+    "ripgrep"
+   ],
+   "commit": "73595f1364f2117db49e1e4a49290bd6d430e345",
+   "sha256": "1a5rdpmvsgsjlc9sywism9pq7jd6n9qbcdsvpbfkq1npwhpifkbj"
+  }
+ },
+ {
+  "ename": "projectile-sift",
+  "commit": "a730e1331b0486c4bd2d309b85d2f8810489eb47",
+  "sha256": "1wbgpwq9yy3v7hqidaczrvvsw5ajj7m3n4gsy3b169xv5h673a0i",
+  "fetcher": "github",
+  "repo": "nlamirault/sift.el",
+  "unstable": {
+   "version": [
+    20160107,
+    1015
+   ],
+   "deps": [
+    "projectile",
+    "sift"
+   ],
+   "commit": "cdddba2d183146c340915003f1b5d09d13712c22",
+   "sha256": "0ln87nhq2vhsb0ywn7rp0b3hzms5z7l6cv6dng08yly12r2957if"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "projectile",
+    "sift"
+   ],
+   "commit": "8c3f3d14a351a2394027d72ee0599aa73b9f0d13",
+   "sha256": "1ma6djvhvjai07v1g9a36lfa3nw8zsy6x5vliwcdnkf44gs287ra"
+  }
+ },
+ {
+  "ename": "projectile-speedbar",
+  "commit": "eda8cb5a175258404c347ffa30fca002504467a0",
+  "sha256": "0dli4gzsiycivh8dwa00lfpbimyg42qygfachzrhi8qy5413pwlp",
+  "fetcher": "github",
+  "repo": "anshulverma/projectile-speedbar",
+  "unstable": {
+   "version": [
+    20190807,
+    2010
+   ],
+   "deps": [
+    "projectile",
+    "sr-speedbar"
+   ],
+   "commit": "93320e467ee78772065e599a5dba94889a77db22",
+   "sha256": "1byk8ylm6c922jsaa8lg8wk17qjnhh7p26lp2h0nbl7qdz928ss8"
+  }
+ },
+ {
+  "ename": "projectile-trailblazer",
+  "commit": "f9c6f2f92ff99e7a3241003dc396f978f3916c8a",
+  "sha256": "18cijb5c1ym5kn2g2apbijbfd3aqhrraki8vv9bk8rvi7wmm6qj4",
+  "fetcher": "github",
+  "repo": "micdahl/projectile-trailblazer",
+  "unstable": {
+   "version": [
+    20170928,
+    1624
+   ],
+   "deps": [
+    "f",
+    "inf-ruby",
+    "inflections",
+    "projectile",
+    "rake"
+   ],
+   "commit": "a37a4f7b7f727d98e4c74c0256e059e84263553d",
+   "sha256": "1njs2aps4mlbnnfjkfwrb8vy8lg6lyxzxkxpscv91la7yf3wpc3g"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "f",
+    "inf-ruby",
+    "inflections",
+    "projectile",
+    "rake"
+   ],
+   "commit": "79299498d74876f2ac3fe8075716b39a5bdd04cd",
+   "sha256": "1lkj9jdr3g7nl80fxvic6g5cn7vbkyxys7m3kcmd6xa9mq7nvci4"
+  }
+ },
+ {
+  "ename": "projectile-variable",
+  "commit": "eb13cb0dba1696cc51132cd1ff723fa17f892a7c",
+  "sha256": "15qc5n91nxyfvb100iyihfmrdr57qgw6098yv3nfqgw3zx1qchdw",
+  "fetcher": "github",
+  "repo": "emacs-php/projectile-variable",
+  "unstable": {
+   "version": [
+    20170208,
+    1718
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "8d348ac70bdd6dc320c13a12941b32b38140e264",
+   "sha256": "0l38nldx6lwjb7mxixykiyj10xwb35249dxfg0k2wkmb2vy1fkxs"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "8d348ac70bdd6dc320c13a12941b32b38140e264",
+   "sha256": "0l38nldx6lwjb7mxixykiyj10xwb35249dxfg0k2wkmb2vy1fkxs"
+  }
+ },
+ {
+  "ename": "projector",
+  "commit": "420ffea4549f59677a16c1ee89c77b866487e302",
+  "sha256": "0hrinplk607wcc2ibn05pl8ghikv9f3zvymncp6nz95jw9brdapf",
+  "fetcher": "github",
+  "repo": "waymondo/projector.el",
+  "unstable": {
+   "version": [
+    20190703,
+    1418
+   ],
+   "deps": [
+    "alert",
+    "cl-lib",
+    "projectile"
+   ],
+   "commit": "bad51a81fbcae9aabe47dafc2499ba27cd7308be",
+   "sha256": "0xiwn58wqm15kvbx0pi2zmh8gc1f06zncxki03bwry4nfpqxr2d0"
+  }
+ },
+ {
+  "ename": "projekt",
+  "commit": "e2a854ed4fef114861bcc7814cd064c16d3c074c",
+  "sha256": "1bhb24701flihl54w8xrj6yxhynpq4dk0fp5ciac7k28n4930lw8",
+  "fetcher": "github",
+  "repo": "tekai/projekt",
+  "unstable": {
+   "version": [
+    20150324,
+    848
+   ],
+   "commit": "a65e554e5d8b0def08c5d06f3fe34fec40bebd83",
+   "sha256": "0hvvlh24157qjxz82sbg22d4cbrf95xyx202cybp0n1vyxsmjcmw"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "107232c191375b59d065354470d0af83062e2a4c",
+   "sha256": "1rw55w2fpb3rw7j136kclkhppz21f7d7di4cvlv7zj5zpdl5zz88"
+  }
+ },
+ {
+  "ename": "projmake-mode",
+  "commit": "df23138073d2416fa6522beca86b7a62eb4d42e3",
+  "sha256": "192gvmhcz1anl80hpmcjwwd08dljyrap9sk6qj0y85mcnaafm882",
+  "fetcher": "github",
+  "repo": "ericbmerritt/projmake-mode",
+  "unstable": {
+   "version": [
+    20161031,
+    1715
+   ],
+   "deps": [
+    "dash",
+    "indicators"
+   ],
+   "commit": "a897701f7e8f8cc11459ed44eb0e454db2a460c1",
+   "sha256": "0las0xl4af6sn5pbllq16abw2hj1kswwpkyi6lf31sbwr5wnq4qb"
+  }
+ },
+ {
+  "ename": "promise",
+  "commit": "3eaf5ac668008759677b9cc6f11406abd573012a",
+  "sha256": "1y1v3ikcmh9yp5fdwagcjg755bgkyqk714lb6s1hb2606m3ia03s",
+  "fetcher": "github",
+  "repo": "chuntaro/emacs-promise",
+  "unstable": {
+   "version": [
+    20200429,
+    440
+   ],
+   "commit": "ed9b073ee5b0975a35ee15bc12e25e02f796d787",
+   "sha256": "1mqqsnwkwfg2i6rhx747hcnk725siw6qsxh5yni3l1sfizbyvw03"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "53e1dfe9a8bd613fdfa31944e5259dcdd3a29e12",
+   "sha256": "1xb34zdbwjvahfhycjphdkm925kgd22dr298c57hwxza4ljc2hxj"
+  }
+ },
+ {
+  "ename": "prompt-text",
+  "commit": "17d2bc3e53865fe8c98aabb6ef0ad1d10fcb1061",
+  "sha256": "1b9sj9kzx5ydq2zsfmkwsx78pzg0vsvrn92397js6b2cm24vrwwc",
+  "fetcher": "github",
+  "repo": "10sr/prompt-text-el",
+  "unstable": {
+   "version": [
+    20190408,
+    310
+   ],
+   "commit": "0a75ecd5058c9a006e02d1ecd3f1c84194881abd",
+   "sha256": "0y95awjmw9sasjac7s5b6zm42206szqvhr9xkg8zj0frrhnqsx8l"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "bb9265ebfada42d0e3c67c809665e1e5d980691e",
+   "sha256": "1hq8426i8rpb3qzkd5akv3i08pa4jsp9lwsskn38bfgp71pwild2"
+  }
+ },
+ {
+  "ename": "prompts",
+  "commit": "2395402e72d9b0f7ce2ca5fcb4497919f90a8fe2",
+  "sha256": "1fz5sbc45jiq64y89lm8nj6lsanq3lzyjzahxzrgqvr7655pphzm",
+  "fetcher": "github",
+  "repo": "GuiltyDolphin/prompts.el",
+  "unstable": {
+   "version": [
+    20160916,
+    1041
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "1cd5e732ff2a86b47836eb7252e5b59cd4b6ab26",
+   "sha256": "10y8x54p64zs1jlq4nf1kixpb42078n2gdf9s62b1siyb1vhl581"
+  }
+ },
+ {
+  "ename": "pronto",
+  "commit": "b0de92782a7305aee5a803607f9db0fe8b8e988e",
+  "sha256": "0vkas9h45i029wx04wsvm72dlhhq46vdx9y20c2rkq4n9ny94hr3",
+  "fetcher": "github",
+  "repo": "julianrubisch/pronto.el",
+  "unstable": {
+   "version": [
+    20200218,
+    1633
+   ],
+   "commit": "c2a2ec718c08de1fd2e681970456786cf4eac8fe",
+   "sha256": "1xgkl263iyrdin6mdlmvswr411qyciskasa2jbqi84ffiw83313m"
+  }
+ },
+ {
+  "ename": "proof-general",
+  "commit": "135c8f2a04739145b500b8742a697907e398d270",
+  "sha256": "10zif9ax4d3m8sa9y2xqz7g24xa2r3m2x5l0zqa06wm4afq29p87",
+  "fetcher": "github",
+  "repo": "ProofGeneral/PG",
+  "unstable": {
+   "version": [
+    20200506,
+    1948
+   ],
+   "commit": "ea62543527e6c0fcca8bbb70695e25c2f5d89614",
+   "sha256": "0jzyj3a3b9b26b2cksrcby39gj9jg77dzj3d4zzbwf33j1vkvfd2"
+  },
+  "stable": {
+   "version": [
+    4,
+    4
+   ],
+   "commit": "771cab48b2f9ea2ae3fa8f944d0e36a805bf9f3b",
+   "sha256": "0bdfk91wf71z80mdfnl8hpinripndcjgdkz854zil6521r84nqk8"
+  }
+ },
+ {
+  "ename": "prop-menu",
+  "commit": "3d3a013cc9c489987fe689c8d73bbaa3445bdeb3",
+  "sha256": "0dhy52fxxpa058mhhx0slw3sly3dlxm9vkax6fd1sap6f6v00p5i",
+  "fetcher": "github",
+  "repo": "david-christiansen/prop-menu-el",
+  "unstable": {
+   "version": [
+    20150728,
+    1118
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "50b102c1c0935fd3e0c465feed7f27d66b21cdf3",
+   "sha256": "18ap2liz5r5a8ja2zz9182fnfm47jnsbyblpq859zks356k37iwc"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "50b102c1c0935fd3e0c465feed7f27d66b21cdf3",
+   "sha256": "18ap2liz5r5a8ja2zz9182fnfm47jnsbyblpq859zks356k37iwc"
+  }
+ },
+ {
+  "ename": "propfont-mixed",
+  "commit": "3ccb401b60cb1128ba50a5afecd97feca6d00d7a",
+  "sha256": "19k0ydpkiviznsngwcqwn4k30r6j8w34pchgpjlsfwq1bndaai9y",
+  "fetcher": "github",
+  "repo": "ikirill/propfont-mixed",
+  "unstable": {
+   "version": [
+    20150113,
+    2211
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "0b461ef4754a469610dba71874a34b6da42176bf",
+   "sha256": "0lch20njy248w7bnvgs7jz0zqasskf5dakmykxwpb48llm6kx95v"
+  }
+ },
+ {
+  "ename": "proportional",
+  "commit": "9e0a7f061df4cce44e5fe98f6e1c31bec4a7338f",
+  "sha256": "022lhbslzd67wyah8r0gl73vzxgjjwia08l3ssdd08jj3p56m3wx",
+  "fetcher": "github",
+  "repo": "ksjogo/proportional",
+  "unstable": {
+   "version": [
+    20200309,
+    1556
+   ],
+   "commit": "0e4537af7ba2bc9dbb449c38350bce012b382f51",
+   "sha256": "0k4kwmyja5nb6rmbbq71vzxw7nnxr0w8f9vzws14an28niwr4s8p"
+  }
+ },
+ {
+  "ename": "prosjekt",
+  "commit": "6d359ec827573dd8c871c4f23df5d1737f1830e7",
+  "sha256": "1fn7ii1bq7bjkz27hihclpvx0aabgwy3kv47r9qibjl2jin97rck",
+  "fetcher": "github",
+  "repo": "abingham/prosjekt",
+  "unstable": {
+   "version": [
+    20151127,
+    1416
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "a864a8be5842223043702395f311e3350c28e9db",
+   "sha256": "1m8zvrv5aws7b0dffk8y6b5mncdk2c4k90mx69jys10fs0gc5hb3"
+  }
+ },
+ {
+  "ename": "protobuf-mode",
+  "commit": "b4e7f5f641251e17add561991d3bcf1fde23467b",
+  "sha256": "1hh0w93fg6mfwsbb9wvp335ry8kflj50k8hybchpjcn6f4x39xsj",
+  "fetcher": "github",
+  "repo": "google/protobuf",
+  "unstable": {
+   "version": [
+    20170526,
+    1650
+   ],
+   "commit": "63da77bc971e08c2241cc1d9e65ede4bf335c421",
+   "sha256": "0b0shac978n6djxid6z9h4mfb2ah4hc1vvb0rg8rf65gs4cxjzlz"
+  },
+  "stable": {
+   "version": [
+    3,
+    12,
+    0
+   ],
+   "commit": "0dd036d675508a4ecf69e61626fd0c88235a661d",
+   "sha256": "0ac0v7mx2sf4hwf61074bgh2m1q0rs88c7gc6v910sd7cw7gql3a"
+  }
+ },
+ {
+  "ename": "protocols",
+  "commit": "9c9a75671a00e9196d00b08911232aac87fd8c83",
+  "sha256": "1wg3qh8a1ms82lkzz4i1bk787147a8agcj8rszj1zfvwg0ckqq1a",
+  "fetcher": "github",
+  "repo": "davep/protocols.el",
+  "unstable": {
+   "version": [
+    20170802,
+    1132
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d0f7c4acb05465f1a0d4be54363bbd2802647e77",
+   "sha256": "1xg3pwsnzn795bz299x273ral2jrz2v3p9r6gjm4dcx5pm3348mj"
+  },
+  "stable": {
+   "version": [
+    1,
+    6
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f5549f5d873a683af45a0e19c732524d5b964026",
+   "sha256": "0v9is6r307814gvrnch2d3mvikd7j8lnmsqb2c3gj6gvfj4p9y7r"
+  }
+ },
+ {
+  "ename": "proxy-mode",
+  "commit": "25224d3bcdb625314e931d5acc22f60c7192a84b",
+  "sha256": "0ldjfmxn8k8bzvdrlsfpijsmgn754aza54by5d59k7a1xn6d37mp",
+  "fetcher": "github",
+  "repo": "stardiviner/proxy-mode",
+  "unstable": {
+   "version": [
+    20200131,
+    816
+   ],
+   "commit": "e9b2a4bb032aaf13b006b74eec309a9bf2249cf0",
+   "sha256": "1wmj3ahjj1g7sx36fda6fhicvmxkm8qm64zqdk3qqj808jik1pry"
+  }
+ },
+ {
+  "ename": "psc-ide",
+  "commit": "9eb5ff1de1d207317df052ecbd65dbe0f8766f5d",
+  "sha256": "0gvq4cmmnbh4afzhmpqmizlvyr2fmd88jwdcac3w4b25fvhzr8hp",
+  "fetcher": "github",
+  "repo": "purescript-emacs/psc-ide-emacs",
+  "unstable": {
+   "version": [
+    20200317,
+    1013
+   ],
+   "deps": [
+    "company",
+    "dash",
+    "dash-functional",
+    "flycheck",
+    "let-alist",
+    "s",
+    "seq"
+   ],
+   "commit": "7fc2b841be25f5bc5e1eb7d0634436181c38b3fe",
+   "sha256": "0r0fymyai30jimm34z1cmav4wgij8ci6s1d9y7qigygfbbfrdsmj"
+  }
+ },
+ {
+  "ename": "psci",
+  "commit": "3451719ce5096383db082917716a5ed8346fc186",
+  "sha256": "1iwkr58b910vrwwxyk00psy74vp201vmm3b0cm4k5fh3glr31vp9",
+  "fetcher": "github",
+  "repo": "purescript-emacs/emacs-psci",
+  "unstable": {
+   "version": [
+    20191025,
+    830
+   ],
+   "deps": [
+    "dash",
+    "purescript-mode"
+   ],
+   "commit": "95fb5d14033add8fe9c8c6b4379758beb88af1d0",
+   "sha256": "05lpdlpc652sl1kk0wx1bzdzyyyrvllcyfqyksplwaxgzjxy95mp"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    6
+   ],
+   "deps": [
+    "dash",
+    "deferred",
+    "f",
+    "purescript-mode",
+    "s"
+   ],
+   "commit": "8c2d5a0ba604ec593f83f632b2830a87f41f84d4",
+   "sha256": "0wgxrwl7dpy084sc76wiwpixycb171g7xwc66m5gnlrv79qyac73"
+  }
+ },
+ {
+  "ename": "psession",
+  "commit": "669342d2b3e6cb622f196571d776a98ec8f3b1d3",
+  "sha256": "18va6kvpia5an74vkzccs72z02vg4vq9mjzr5ih7xbcqxna7yv3a",
+  "fetcher": "github",
+  "repo": "thierryvolpiatto/psession",
+  "unstable": {
+   "version": [
+    20200509,
+    803
+   ],
+   "deps": [
+    "async",
+    "cl-lib"
+   ],
+   "commit": "ddeccf7808cf39fedc41cd33204b0ef5fe4253b5",
+   "sha256": "083srsvnv8ks52qsi6hv02v4j4xlm67bld9ynm8cl8fy500ghpzz"
+  },
+  "stable": {
+   "version": [
+    1,
+    5
+   ],
+   "deps": [
+    "async",
+    "cl-lib"
+   ],
+   "commit": "702d20897c0839568201bc6921d5f0f80b8778c0",
+   "sha256": "0ynd69fyjpgs6rs3kkznpx19kmdmd25wb46bj9zq61gj138b6p33"
+  }
+ },
+ {
+  "ename": "psysh",
+  "commit": "eb13cb0dba1696cc51132cd1ff723fa17f892a7c",
+  "sha256": "00rzfw8nlbcmfbjnzbfl08136dhgvrrn9g1s9l623xgpbcay63sg",
+  "fetcher": "github",
+  "repo": "emacs-php/psysh.el",
+  "unstable": {
+   "version": [
+    20190709,
+    106
+   ],
+   "deps": [
+    "f",
+    "php-runtime",
+    "s"
+   ],
+   "commit": "21250984ad8137aa3440ac12e52475ef03f19fcb",
+   "sha256": "1r0aiwdmj0y96faqvbz39wgxw91i9bj6rnwlj3a277pzlhzmyyxl"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    5
+   ],
+   "deps": [
+    "f",
+    "s"
+   ],
+   "commit": "4709a57cdcf7103c4a606be89849ea3ead2d38a5",
+   "sha256": "1apf6mnqp9bg5dfykgvsn02z0xpyx6k34sd2pvicicig7w09kzvb"
+  }
+ },
+ {
+  "ename": "pt",
+  "commit": "34c51783af154f203489f5f7df7012ca61932caa",
+  "sha256": "0zmz1hcr4ajc2ydvpdxhy1dlhp7hvlkv6y6w1b79ffvq6acdd5mj",
+  "fetcher": "github",
+  "repo": "bling/pt.el",
+  "unstable": {
+   "version": [
+    20161226,
+    1959
+   ],
+   "commit": "6d99b2aaded3ece3db19a20f4b8f1d4abe382622",
+   "sha256": "1vi97hgwrf7n8vsbkvvhn398m20755jnbbbz4kxgqfmcgpimc8nc"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "commit": "a539dc11ecb2d69760ff50f76c96f49895ce1e1e",
+   "sha256": "1p0k770h96iw8bxm8ssi0a91m050s615q036870lrlsz35mzc5kw"
+  }
+ },
+ {
+  "ename": "pubmed",
+  "commit": "ee84560c15e7389e902fb4a4c548c08be231de82",
+  "sha256": "048kh442dnzgwz4wml2a5griav8zyrfzn5b43n9ky84pm7lgcxp3",
+  "fetcher": "gitlab",
+  "repo": "fvdbeek/emacs-pubmed",
+  "unstable": {
+   "version": [
+    20200502,
+    2153
+   ],
+   "deps": [
+    "deferred",
+    "esxml",
+    "s",
+    "unidecode"
+   ],
+   "commit": "d781870e2f57e40110e07768289ab81d8554f122",
+   "sha256": "17d2v7q6sfafk8j1ish053xsmihi4f1hbk53fkkmhwan6sw9c4sc"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "deps": [
+    "deferred",
+    "esxml",
+    "s",
+    "unidecode"
+   ],
+   "commit": "d781870e2f57e40110e07768289ab81d8554f122",
+   "sha256": "17d2v7q6sfafk8j1ish053xsmihi4f1hbk53fkkmhwan6sw9c4sc"
+  }
+ },
+ {
+  "ename": "pug-mode",
+  "commit": "b3710aac9f3df3a23238af1f969c462b3692f260",
+  "sha256": "1njhr95y2rx7inpl9phxxz580844p2iadqlga1kj7xzvjz698x85",
+  "fetcher": "github",
+  "repo": "hlissner/emacs-pug-mode",
+  "unstable": {
+   "version": [
+    20180513,
+    2126
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "685fd3414d89736bf232f5d1a6bed9e0353b98fe",
+   "sha256": "06qy9bgizc68k57avrbcl2qd2kyb8s17gr6rvxdbjknk6i55dgp4"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    7
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "96718f802dad3acd5a3f770b1452b81e39f77d92",
+   "sha256": "1jqj3qfc4686v09am869ls1k3jwy397646cql4a8dg7crjdpf023"
+  }
+ },
+ {
+  "ename": "pulseaudio-control",
+  "commit": "7964f226e12c3a27ff856e28f4b030ebf304aea2",
+  "sha256": "1vdhg85lbdx7sj1xg2vhhfmhrrp5q2x560agnsb0gxi2akp6z9r0",
+  "fetcher": "github",
+  "repo": "flexibeast/pulseaudio-control",
+  "unstable": {
+   "version": [
+    20200406,
+    752
+   ],
+   "commit": "a931533140547510decdc368f39b2d2b97ca725f",
+   "sha256": "1jvjn9jszjjapi167an49jxcvr88cvgjwykglhp4b8lwhbjfqw76"
+  }
+ },
+ {
+  "ename": "punctuality-logger",
+  "commit": "76ac7178ee5381e08ae881f3fc6061106eeb1c1d",
+  "sha256": "0q9s74hkfqvcx67xpq9rlvh38nyjnz230bll6ks7y5yzxvl4qhcm",
+  "fetcher": "gitlab",
+  "repo": "elzair/punctuality-logger",
+  "unstable": {
+   "version": [
+    20141120,
+    2031
+   ],
+   "commit": "e09e5dd37bc92289fa2f7dc44aed51a7b5e04bb0",
+   "sha256": "1bkkgs2agy00wivilljkj3a9fsb2ba935icjmhbk46zjc6yf3y6q"
+  },
+  "stable": {
+   "version": [
+    0,
+    8
+   ],
+   "commit": "708cae8e67dbae293c7c4be0ca5e49d76fac6714",
+   "sha256": "1v48i37iqrrwbyy3bscicfq66vbbml4sg0f0n950bnk0qagjx8py"
+  }
+ },
+ {
+  "ename": "pungi",
+  "commit": "d504c6028c029268d380c0eac25b1c4886aa6e98",
+  "sha256": "1v9fsd764z5wdcips63z53rcipdz7bha4q6s4pnn114jn3a93ls1",
+  "fetcher": "github",
+  "repo": "mgrbyte/pungi",
+  "unstable": {
+   "version": [
+    20150222,
+    1246
+   ],
+   "deps": [
+    "jedi",
+    "pyvenv"
+   ],
+   "commit": "a2d4d439ea371be0b064a12248288903b8a521a0",
+   "sha256": "1viw95y6fha782n1jw7snr7xc00iyf94r4whsm1a2q11vm2d1h21"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "jedi",
+    "pyvenv"
+   ],
+   "commit": "41c9f8b7795e083bfd63ba0d06c789c250998723",
+   "sha256": "012lv7hrwlhvins81vw3yjkhdwbpi6g1dx55i101qyrpzv5ifngm"
+  }
+ },
+ {
+  "ename": "punpun-theme",
+  "commit": "20b2cc78b41a26e434b984943681fea774fd3c50",
+  "sha256": "10mgyrxz2habhaqyg1g4c5kn13q425j0xpkkdlg10cdfvxfl9d1s",
+  "fetcher": "git",
+  "url": "https://depp.brause.cc/punpun-theme.git",
+  "unstable": {
+   "version": [
+    20200506,
+    1241
+   ],
+   "commit": "c1fa9f403b100aceac4c2dcb053111b2de701f16",
+   "sha256": "0y52kgqrnzrsybm2cwdrarjm1y92hambcr4a8nky28bkp5v73a86"
+  }
+ },
+ {
+  "ename": "puppet-mode",
+  "commit": "1de94f0ab39ab18dfd0b050e337f502d894fb3ad",
+  "sha256": "1qn71j6fkwnrsq1s6fhfcxhic3rbspg5cy9n7jv451ji7ywyhakf",
+  "fetcher": "github",
+  "repo": "voxpupuli/puppet-mode",
+  "unstable": {
+   "version": [
+    20200505,
+    344
+   ],
+   "deps": [
+    "pkg-info"
+   ],
+   "commit": "0e2e32a3b1644edd8010bd3d44e83def683348b3",
+   "sha256": "082r71wn5klihv8npc8qsvsyw4jyib5mqpnqr029kv7cvlcyfghk"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "pkg-info"
+   ],
+   "commit": "73ea35bc7a3ad663c5b73f65cb6377eb0ae11d6f",
+   "sha256": "0c5q8qmbligzjsn05di4wh6ggpd3944j4yqb78vzd441b8ssq70i"
+  }
+ },
+ {
+  "ename": "purescript-mode",
+  "commit": "55462ed7e9bf353f26c5315015436b2a1b37f9bc",
+  "sha256": "1g30xbv3xvv52r873465a2lp6fnws9q8dz277697qm0mgxkpimbp",
+  "fetcher": "github",
+  "repo": "purescript-emacs/purescript-mode",
+  "unstable": {
+   "version": [
+    20190522,
+    2230
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "8db1d0243c03da31adac4d7c5287407a4df6aff2",
+   "sha256": "07z5m8h5a1dhqlzf8wqyxqw2mz3kxzjfpb0p7az3bhs3xsxq6q1q"
+  }
+ },
+ {
+  "ename": "purp-theme",
+  "commit": "9e731ed27d812d822ebb1dbd639441ce59c4ecf7",
+  "sha256": "1ni8nnyfg4g49fw5m4pxa8fr147pyyvqa5gmydggv5r1xmldgsli",
+  "fetcher": "github",
+  "repo": "gnuvince/purp",
+  "unstable": {
+   "version": [
+    20190629,
+    1829
+   ],
+   "commit": "f821a7c30452d970ccb0ee08b68d56603860e31d",
+   "sha256": "170k5xkbqr0dbwcwhy75k88qjlnkw6l2ipaqlbr1hdnw17vp2qy9"
+  }
+ },
+ {
+  "ename": "purple-haze-theme",
+  "commit": "6f26b8281f9bd05e3c8f2ef21838275711e622c9",
+  "sha256": "1rvfpm3zkhdv3ikc8pqqngf9pi0niwyi52pg8dq8i056nwc5bk9z",
+  "fetcher": "github",
+  "repo": "emacsfodder/emacs-purple-haze-theme",
+  "unstable": {
+   "version": [
+    20141015,
+    229
+   ],
+   "commit": "3e245cbef7cd09e6b3ee124963e372a04e9a6485",
+   "sha256": "15myw5rkbnnpgzpiipm5xl4cyzymv8hh66x9al4aalb5nf52dckc"
+  }
+ },
+ {
+  "ename": "purty-mode",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "0gbbwl5kg74jf1i1zsr40zg3gw43qmz1l87k0r578v1xvyqmhm1i",
+  "fetcher": "github",
+  "repo": "jcatw/purty-mode",
+  "unstable": {
+   "version": [
+    20131004,
+    2259
+   ],
+   "commit": "8eef77317a3bab07ade212353a50fbd3f20f365a",
+   "sha256": "0qm2xv762cz196aqs445crqrmsks8hpwzpaykzn0chlvdk0m5cv1"
+  }
+ },
+ {
+  "ename": "pushbullet",
+  "commit": "a2649d60dd1ed3b3171ff1448b89967c5f7759a0",
+  "sha256": "1swzl25rcw7anl7q099qh14yhnwlbn3m20ib9kis0l1rv59kkarl",
+  "fetcher": "github",
+  "repo": "theanalyst/revolver",
+  "unstable": {
+   "version": [
+    20140809,
+    1232
+   ],
+   "deps": [
+    "grapnel",
+    "json"
+   ],
+   "commit": "73c59a0f1dc04875b3e5a2c8afbc26c32128e445",
+   "sha256": "03ivg3ddhy5zh410wgwxa17m98wywqhk62jgijhjd00b6l8i4aym"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    2
+   ],
+   "deps": [
+    "grapnel",
+    "json"
+   ],
+   "commit": "73c59a0f1dc04875b3e5a2c8afbc26c32128e445",
+   "sha256": "03ivg3ddhy5zh410wgwxa17m98wywqhk62jgijhjd00b6l8i4aym"
+  }
+ },
+ {
+  "ename": "pushover",
+  "commit": "e9553cd029bc0733c89d2c790cb173d9668a9eba",
+  "sha256": "0im5bf2r69s2jb6scm8xdk63y1xi5zm4kg9ghfixlvyvipfli4kl",
+  "fetcher": "git",
+  "url": "https://git.flintfam.org/swf-projects/emacs-pushover.git",
+  "unstable": {
+   "version": [
+    20170818,
+    2103
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "bbe3ac8df3c532a72da4552615af960b8a577588",
+   "sha256": "187bisngi37n66ik2dq7rg4hy4nlxl9pifqgqq08kf9238y8hd11"
+  }
+ },
+ {
+  "ename": "px",
+  "commit": "326fc9b057a5016248ac36ca166e9a38f13babf6",
+  "sha256": "0xjmz18m2dslh6yq5z32r43zq3svfxn8mhrfbmihglyv2mkwxw44",
+  "fetcher": "github",
+  "repo": "aaptel/preview-latex",
+  "unstable": {
+   "version": [
+    20170317,
+    2330
+   ],
+   "commit": "0c52f7933eab3ca1642ab0df151db9950430c9e2",
+   "sha256": "0f741a2gpc2mdl85ivbiskga620b6ci2x0dwjs7m8c1vk6xrxbpi"
+  }
+ },
+ {
+  "ename": "py-autopep8",
+  "commit": "c400e0f3cfe70821e621fe85d239b4f6596d5171",
+  "sha256": "1argjdmh0x9c90zkb6cr4z3zkpgjp2mkpsw0dr4v6gg83jcggfpp",
+  "fetcher": "github",
+  "repo": "paetzke/py-autopep8.el",
+  "unstable": {
+   "version": [
+    20160925,
+    1052
+   ],
+   "commit": "68e12d8788c91c7ec53a68acf1d23adb2ffa4788",
+   "sha256": "16fmym6hvi2lx0mmbrrhld1vzki5iqfqx2m0xa9021gjjzb33lw6"
+  },
+  "stable": {
+   "version": [
+    2016,
+    1
+   ],
+   "commit": "68e12d8788c91c7ec53a68acf1d23adb2ffa4788",
+   "sha256": "16fmym6hvi2lx0mmbrrhld1vzki5iqfqx2m0xa9021gjjzb33lw6"
+  }
+ },
+ {
+  "ename": "py-gnitset",
+  "commit": "d00b78ead693e844e35c760fe2c39b8ed6cb0d81",
+  "sha256": "0f6ivq4ignb4gfxw2q8qvigvv3fbvvyr87x25wcaz6yipg1lr18r",
+  "fetcher": "github",
+  "repo": "quodlibetor/py-gnitset",
+  "unstable": {
+   "version": [
+    20170821,
+    1732
+   ],
+   "commit": "1e993cc29cbc31e06fe1e335dec198e21972fa55",
+   "sha256": "1hslq2bdk95cgza9qbskxf942ckhjb4bqi6nrhbmlnm9agmjqm59"
+  }
+ },
+ {
+  "ename": "py-import-check",
+  "commit": "abe81fe96790ceebcf0951595644ea6a82613890",
+  "sha256": "1261dki0q44sw9h0g1305i2fj1dg9xgwzry50jbn2idcrqg4xf7k",
+  "fetcher": "github",
+  "repo": "psibi/emacs-py-import-check",
+  "unstable": {
+   "version": [
+    20130802,
+    1111
+   ],
+   "commit": "9787f87745a4234cd9bed711860b707902bc8ae4",
+   "sha256": "1416hbc64gwn9c8g9lxfx58w60ysi0x8rbps6mfxalavdhbs20sv"
+  }
+ },
+ {
+  "ename": "py-isort",
+  "commit": "44377d11da07b49c8dc6887c948cc5ddfc065bd2",
+  "sha256": "0k5gn3bjn5pv6dn6p0m9xghn0sx3m29bj3pfrmyh6gd5ic0l00yb",
+  "fetcher": "github",
+  "repo": "paetzke/py-isort.el",
+  "unstable": {
+   "version": [
+    20160925,
+    1018
+   ],
+   "commit": "e67306f459c47c53a65604e4eea88a3914596560",
+   "sha256": "08i55gv392wc12x8v3dca0dmz8a8p9ljsqhyajsb6qv1k120wqhx"
+  },
+  "stable": {
+   "version": [
+    2016,
+    1
+   ],
+   "commit": "e67306f459c47c53a65604e4eea88a3914596560",
+   "sha256": "08i55gv392wc12x8v3dca0dmz8a8p9ljsqhyajsb6qv1k120wqhx"
+  }
+ },
+ {
+  "ename": "py-smart-operator",
+  "commit": "a7491a1825b7aaa5f76aafadb8f04721ab1b1cfe",
+  "sha256": "1n0bdr9z2s1ikhmfz642k94gjzb88anwlb61mh27ay8wqdgm74c4",
+  "fetcher": "github",
+  "repo": "rmuslimov/py-smart-operator",
+  "unstable": {
+   "version": [
+    20170531,
+    1209
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "0c8a66faca4b35158d0b5885472cb75286039167",
+   "sha256": "09pmkp24s7nwh6p4pzsjp1z65ksi9n3n2xv7d3igpa86l8qgcm2d"
+  }
+ },
+ {
+  "ename": "py-test",
+  "commit": "84690ba6b033027772c20bf20432427b32d3231a",
+  "sha256": "1mbwbzg606winf5af7qkg6a1hg79lc7k2miq4d3mwih496l5sinb",
+  "fetcher": "github",
+  "repo": "Bogdanp/py-test.el",
+  "unstable": {
+   "version": [
+    20151117,
+    622
+   ],
+   "deps": [
+    "dash",
+    "f"
+   ],
+   "commit": "3b2a0bdaacb54df6f2bee8317423e5c0d159d5cf",
+   "sha256": "1s39407z3rxz10r5sshv2vj7s23ylkhg59ixasgnpjk82gl4igpf"
+  }
+ },
+ {
+  "ename": "py-yapf",
+  "commit": "3306c6906d4b21868b9407de27fbebdaed3d00d5",
+  "sha256": "1381x0ffpllxwgkr2d8xxbv1nd4k475m1aff8l5qijw7d1fqga2f",
+  "fetcher": "github",
+  "repo": "paetzke/py-yapf.el",
+  "unstable": {
+   "version": [
+    20160925,
+    1122
+   ],
+   "commit": "a878304202ad827a1f3de3dce1badd9ca8731146",
+   "sha256": "1mmzqdigxx46my0h9497l25cjydy3vykg6slxkch4dzvhhlbap48"
+  },
+  "stable": {
+   "version": [
+    2016,
+    1
+   ],
+   "commit": "a878304202ad827a1f3de3dce1badd9ca8731146",
+   "sha256": "1mmzqdigxx46my0h9497l25cjydy3vykg6slxkch4dzvhhlbap48"
+  }
+ },
+ {
+  "ename": "pycarddavel",
+  "commit": "9b3d2cd943f26dcff322efb16d55dd3bd71dea07",
+  "sha256": "12k2mnzkd8yv17csfhclsnd479vcabawmac23yw6dsw7ic53jf1a",
+  "fetcher": "github",
+  "repo": "DamienCassou/pycarddavel",
+  "unstable": {
+   "version": [
+    20150831,
+    1216
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "a6d81ee4eb8309cd82f6082aeca68c5a015702a3",
+   "sha256": "09glwrb9q65qdm4yd0mbi5hwdy2434zm8699ywhs6hqpjacadlmi"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "6ead921066fa0156f20155b7126e5875ce11c328",
+   "sha256": "0qg1kjzsv2mcvlsivqy8ys3djbs5yala37r9h2zcxdicl88q0l11"
+  }
+ },
+ {
+  "ename": "pycoverage",
+  "commit": "eb0310bbe8427abdcba2b30414ec26475b0b7440",
+  "sha256": "1jaanmpnawk0r6zfzx18crqml7lv412l2l0iabp345xvfvsh8h1m",
+  "fetcher": "github",
+  "repo": "mattharrison/pycoverage.el",
+  "unstable": {
+   "version": [
+    20200513,
+    2047
+   ],
+   "commit": "3c69ed312121368f1b24cc04d54a29ce4ed4f743",
+   "sha256": "0vcg8sq8pbzary19xxdariz3kws93qd2agzssl9znw38sayj71wz"
+  }
+ },
+ {
+  "ename": "pydoc",
+  "commit": "5c4988a66040ddf659492bdb0ae2b9617c342c69",
+  "sha256": "0sf52cb80yiridsl1pffdr3wpbgxrn2l8vnq03l70djckild477n",
+  "fetcher": "github",
+  "repo": "statmobile/pydoc",
+  "unstable": {
+   "version": [
+    20200107,
+    54
+   ],
+   "commit": "1dfbab7800827adadb649d6e02c31dd9cd65f0d3",
+   "sha256": "1lpc9picbrnqyyh2sy365dvfkxf2phh8s8j4bhizvkd2gallr6vr"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "5392248e33d83ef05d3b2809b0c6b207786b2644",
+   "sha256": "1m0jb5pk1a1ww5jx2y5nz21by4dh7nlnhdn6bigz53ra449rrxii"
+  }
+ },
+ {
+  "ename": "pydoc-info",
+  "commit": "5b7972602399f9df9139cff177e38653bb0f43ed",
+  "sha256": "0l80g0rzkk3a1wrw2riiywz9wdyxwr5i64jb2h5r8alp9qq1k7mf",
+  "fetcher": "bitbucket",
+  "repo": "jonwaltman/pydoc-info",
+  "unstable": {
+   "version": [
+    20110301,
+    834
+   ],
+   "commit": "151d877c8fb8e418a573b1e879b1263c18e22776",
+   "sha256": "1mzyr6yznkyv99x9q8zx2f270ngjh8s94zvnhcbhidi57inpd1nh"
+  }
+ },
+ {
+  "ename": "pyenv-mode",
+  "commit": "c756ccbae044bc23131060355532261aa9a12409",
+  "sha256": "05rfppn75130m5zpg5yz9bz1r7wap05jmd9v08fbqjipv98ckpz3",
+  "fetcher": "github",
+  "repo": "pythonic-emacs/pyenv-mode",
+  "unstable": {
+   "version": [
+    20170801,
+    2348
+   ],
+   "deps": [
+    "pythonic"
+   ],
+   "commit": "aec6f2aa289f6aed974f053c081143758dd142fb",
+   "sha256": "1zmgm24d6s56jc4ix61058p1k0h95vdvdllr7fh1k3bq4mw22qn3"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "pythonic"
+   ],
+   "commit": "b96c15fa1b83cad855e472eda06319ad35e34513",
+   "sha256": "1y3q1k195wp2kgp00a1y34i20zm80wdv2kxigh6gbn2r6qzkqrar"
+  }
+ },
+ {
+  "ename": "pyenv-mode-auto",
+  "commit": "f3fcb707356bd16fd0b573c176023534cd69d0d7",
+  "sha256": "1l7h4fas1vshkh4skxzpw7v2a11s1hwnb20n6a81yh701pbikqnd",
+  "fetcher": "github",
+  "repo": "ssbb/pyenv-mode-auto",
+  "unstable": {
+   "version": [
+    20180620,
+    1252
+   ],
+   "deps": [
+    "f",
+    "pyenv-mode",
+    "s"
+   ],
+   "commit": "347b94cd5ad22e33cc41be661c102d4548767858",
+   "sha256": "1gz7145jnjcky1751pqrlhh3pq02ybsmz49ngx4ip2589nry7iyv"
+  }
+ },
+ {
+  "ename": "pyfmt",
+  "commit": "68d477025ae5af50bf8f7b37f2adfa9159502e13",
+  "sha256": "112kjsp763c2plhqlhydpngrabhc58ya7cszvi4119xqw2s699g6",
+  "fetcher": "github",
+  "repo": "aheaume/pyfmt.el",
+  "unstable": {
+   "version": [
+    20150521,
+    2056
+   ],
+   "commit": "cb92be2cf0804cc53142dc5edb36f8e0ef5cec32",
+   "sha256": "1rp8zchvclh29rl9a1i82pcqghnhpaqnppaydxc2qx23y9pdgz9i"
+  }
+ },
+ {
+  "ename": "pygen",
+  "commit": "e761724e52de6fa4d92950751953645dd439d340",
+  "sha256": "1ivg7a1ghg0bvz3idz7dzy5yb0ln3b2j7dfizg2g0fi4iwvc4czz",
+  "fetcher": "github",
+  "repo": "JackCrawley/pygen",
+  "unstable": {
+   "version": [
+    20161121,
+    506
+   ],
+   "deps": [
+    "dash",
+    "elpy",
+    "python-mode"
+   ],
+   "commit": "9019ff44ba49d7295b1476530feab91fdadb084b",
+   "sha256": "01gmggjv36jc8660xfpfy70cydabhymd17q3z16cjqvsxapbj7nf"
+  }
+ },
+ {
+  "ename": "pyim",
+  "commit": "151a0af91a58e27f724854d85d5dd9668229fe8d",
+  "sha256": "1ly4xhfr3irlrwvv20j3kyz98g7barridi9n8jppc0brh2dlv98j",
+  "fetcher": "github",
+  "repo": "tumashu/pyim",
+  "unstable": {
+   "version": [
+    20200510,
+    704
+   ],
+   "deps": [
+    "async",
+    "popup",
+    "pyim-basedict",
+    "xr"
+   ],
+   "commit": "e54153f462dd8cd8e9bb379e0483a2849ec94f42",
+   "sha256": "0zsw25q1nqkqc3vgi95064v9wph1ynhiqi8gvc3fqq3k8i2jgy4v"
+  },
+  "stable": {
+   "version": [
+    1,
+    9
+   ],
+   "deps": [
+    "async",
+    "popup",
+    "pyim-basedict",
+    "xr"
+   ],
+   "commit": "8fe9897f57e410a7637692d98c40876cb3bd6c2d",
+   "sha256": "1n9syy39rnma0giz2g1dhdfjj4nn5bls2qzswy48snfl5z5mfm5j"
+  }
+ },
+ {
+  "ename": "pyim-basedict",
+  "commit": "151a0af91a58e27f724854d85d5dd9668229fe8d",
+  "sha256": "1y8cmccli3im5bvws2h582z7k4nj6p8brgypl8h09y3na6yjy2z9",
+  "fetcher": "github",
+  "repo": "tumashu/pyim-basedict",
+  "unstable": {
+   "version": [
+    20190719,
+    1252
+   ],
+   "commit": "d499104189a9462cb80f8efd9713e4064dc7093d",
+   "sha256": "0k1afdknyham46z6fv001rnlsxzl50183fz9skw3y0wxxv2v04r4"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "commit": "f71d0ffd9d2421f2b51cd0ccb89fd9eb43c09585",
+   "sha256": "0576r8ap9gp91ycjf1d47pn13kxp0f9fysn09zlq44hr0s1y2y5d"
+  }
+ },
+ {
+  "ename": "pyim-cangjie5dict",
+  "commit": "9a15a17a5aa78aed72958b2a1bde53f0c0ab5be7",
+  "sha256": "1l2k8kfnfciacp1zps8j1g6ijzv1k3g9198079l8c8xlw789irlv",
+  "fetcher": "github",
+  "repo": "HesperusArcher/pyim-cangjie5dict",
+  "unstable": {
+   "version": [
+    20170730,
+    246
+   ],
+   "deps": [
+    "pyim"
+   ],
+   "commit": "c8618590780b818db1a67a29bc47c5d25903517a",
+   "sha256": "0p49h2kn8wy3b51zahzyc1cy24h3b44cg5yjpmv4w23dhsr4zlz8"
+  }
+ },
+ {
+  "ename": "pyim-wbdict",
+  "commit": "ab1cb8bc623d1f12f78fa42ce8b16514e5b07c51",
+  "sha256": "1s0i9xcnpy8kxqhsv7rqxabv5vnxsciyng398mn32mknib03315i",
+  "fetcher": "github",
+  "repo": "tumashu/pyim-wbdict",
+  "unstable": {
+   "version": [
+    20200331,
+    542
+   ],
+   "deps": [
+    "pyim"
+   ],
+   "commit": "daa223e2603a5ef3e6c8e33575d8f4e4604a8d3c",
+   "sha256": "0inl29fa2l5grn6z2wszj43bv17yf7n9x8l77zk2xp8q3gkswd86"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "pyim"
+   ],
+   "commit": "114489ed97e825ae11a8d09da6e873820cf23106",
+   "sha256": "187wx418pj4h8p8baf4943v9dsb6mfbn0n19r8xiil1z2cmm4ygc"
+  }
+ },
+ {
+  "ename": "pyimport",
+  "commit": "71bc39b06cee37814960ef31c6a2056261b802fb",
+  "sha256": "1qwigplawknykw1kbm5babyyknzn43ddhbdpahvzh4wy3kycn6n8",
+  "fetcher": "github",
+  "repo": "Wilfred/pyimport",
+  "unstable": {
+   "version": [
+    20180308,
+    1752
+   ],
+   "deps": [
+    "dash",
+    "s",
+    "shut-up"
+   ],
+   "commit": "a6f63cf7ed93f0c0f7c207e6595813966f8852b9",
+   "sha256": "1q5gqhvh4zq5dy8vns694warcz48j1hdnxg16sjck4gsi9xivbvs"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "2c05712748f6b6624b15d524323f6391612683f4",
+   "sha256": "0p9fsbb7c1kr8916vlk1ngq7xmm158a47v6ja5j5n57b505ssy8q"
+  }
+ },
+ {
+  "ename": "pyimpsort",
+  "commit": "97eb7c0934298d393910419fd55d7d5f1b0cfc38",
+  "sha256": "0kdk3bmryfzvwf8vshfszbih8mwncf4xlb0n0n0yjn0p1n98q99k",
+  "fetcher": "github",
+  "repo": "emacs-pe/pyimpsort.el",
+  "unstable": {
+   "version": [
+    20160130,
+    453
+   ],
+   "commit": "d5c61d70896b642646dfd3c809c06174ae086c1a",
+   "sha256": "05qx1p19dw3nr264shihfn33k579hd0wf4cxki5cqrxi7xzpjgrc"
+  }
+ },
+ {
+  "ename": "pylint",
+  "commit": "a073c91d6f4d31b82f6bfee785044c4e3ae96d3f",
+  "sha256": "1138a8dn9y4ypbphs1zfvr8gr4vdjcy0adsl4xfbgsls4kcdwpxx",
+  "fetcher": "github",
+  "repo": "PyCQA/pylint",
+  "unstable": {
+   "version": [
+    20200503,
+    1624
+   ],
+   "commit": "1fc490c0a1d0df5d4d6a64da0ccf2dd711b9bf67",
+   "sha256": "0fkcn6dk67ljx73ww1zxxkmqp551xsshhz40z2fh1dxw00b470ga"
+  }
+ },
+ {
+  "ename": "pynt",
+  "commit": "fdb297084188a957a46dcd036e65d9d893044bea",
+  "sha256": "07c0zc68r3pskn3bac3a8x5nrsykl90a1h22865g3i5vil76vvg3",
+  "fetcher": "github",
+  "repo": "ebanner/pynt",
+  "unstable": {
+   "version": [
+    20180710,
+    726
+   ],
+   "deps": [
+    "deferred",
+    "ein",
+    "epc"
+   ],
+   "commit": "86cf9ce78d34f92bfd0764c9cbb75427ebd429e6",
+   "sha256": "14x6blikgg5ndc9955hdziy3h9gjr27gpzmhbi4pgjvs8gffhf31"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "deferred",
+    "ein",
+    "epc",
+    "helm"
+   ],
+   "commit": "bc750cd244141005ea3b7bb87f75c6f6c5a5778f",
+   "sha256": "0mj8lkc40iv8d6afl4dba7gsbi0mgnx9ivanvczq6pxp5d4kgfsn"
+  }
+ },
+ {
+  "ename": "pyramid",
+  "commit": "f786a47c2a6243c693163680146606c71502d0be",
+  "sha256": "149p9k6wjlgamm3vrkkcdj4fqhdfsskv1jqflp1bccfkgqpi5096",
+  "fetcher": "github",
+  "repo": "dakra/pyramid.el",
+  "unstable": {
+   "version": [
+    20181212,
+    1204
+   ],
+   "deps": [
+    "pythonic",
+    "tablist"
+   ],
+   "commit": "f0687b8aee3e685b55e2c66b16211e02ac5f9d94",
+   "sha256": "18kqqdk7yifcjmn11jgsqxvzr6izcgify1d8gm504sxw2qqc3q0i"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "pythonic",
+    "tablist"
+   ],
+   "commit": "59d7ec03dcb1968160ac1dfe3c979cc83fe0fe4b",
+   "sha256": "132l0sf08hwq5wa6yffm8n60a51303zf4ivnfz57vyja70qdbp8b"
+  }
+ },
+ {
+  "ename": "pytest",
+  "commit": "33a854a27adbaf57d344340199f90d52747b8450",
+  "sha256": "0ssib65wa20h8r6156f392l481vns5fcax6w70hcawmn84nficdh",
+  "fetcher": "github",
+  "repo": "ionrock/pytest-el",
+  "unstable": {
+   "version": [
+    20200330,
+    41
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "6934047242db79b1c53e9fe3e0734cc9719ed1c4",
+   "sha256": "1gh5sqmhw7hl67m7nqgd4wwns7a10j0sfmabm97k1cmmbwdj0vca"
+  }
+ },
+ {
+  "ename": "pytest-pdb-break",
+  "commit": "4ed7d5d5e81818dad55edda73fbeca8c5021b932",
+  "sha256": "0dxn53y9zjlip0bjynjql984wrf39pmg5fsx1qgsrj1bw78xqw26",
+  "fetcher": "github",
+  "repo": "poppyschmo/pytest-pdb-break",
+  "unstable": {
+   "version": [
+    20200426,
+    2335
+   ],
+   "commit": "22e54796b0522f812423b2fb0ec842e2984ff0f7",
+   "sha256": "0gsnbpk14iw4mqxk7c0409dibsb6f3j936hd781ly956mvn0afil"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    9
+   ],
+   "commit": "3ff296d14e7350241b22fcbe09325a16bb834d16",
+   "sha256": "0pipbp6i0vq3maiwf8cj8g43zk8nq3dpgbgacdk9v2bhcgwl3im3"
+  }
+ },
+ {
+  "ename": "python-black",
+  "commit": "9e485ee04b19dda5d2165021da5018c3658a6cd7",
+  "sha256": "0jpr4zj8q4wfzfslr7v4a6975iz9jzd4ccmnci0ycbkbmrhy3mzj",
+  "fetcher": "github",
+  "repo": "wbolster/emacs-python-black",
+  "unstable": {
+   "version": [
+    20200324,
+    930
+   ],
+   "deps": [
+    "dash",
+    "reformatter"
+   ],
+   "commit": "a11ca73f6dfcdc125d27ff184496d66bdbd71326",
+   "sha256": "1jv2fwlf7q8l5npqcpr05xzqmfqlx6xmjn0zphh9rx6dd2dpdma9"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "dash",
+    "reformatter"
+   ],
+   "commit": "706d317f0874d7c5b5a3d844698bcfb8b1fe253e",
+   "sha256": "0fjnd85nlkck156dj6cahk8chhgkbgl2kwywqzi8bl4yj700m4dk"
+  }
+ },
+ {
+  "ename": "python-cell",
+  "commit": "0549866c5e96f673ec9dec298e7ff9d5779d443b",
+  "sha256": "07i3vyci52jvslq28djwkgx1r157wvxd99rvqlxnmmsl5yj4k1jf",
+  "fetcher": "github",
+  "repo": "thisch/python-cell.el",
+  "unstable": {
+   "version": [
+    20200314,
+    1147
+   ],
+   "commit": "4f0778b05bfb936861449bcb998ed620cd9b31ad",
+   "sha256": "0fjqy8wkxm8m94xfvvj12fpx8ybaln8x4ss9b0iaz9y9jvfwzg21"
+  }
+ },
+ {
+  "ename": "python-django",
+  "commit": "29b2cd21e7b504222aed92ec062402f3e2a818fc",
+  "sha256": "02whx8g8r02mzng7d7bnbkz5n7gyzp5hcnmvd6a3lq106c0h7w9k",
+  "fetcher": "github",
+  "repo": "fgallina/python-django.el",
+  "unstable": {
+   "version": [
+    20150822,
+    404
+   ],
+   "commit": "fc54ad74f0309670359b939f64d0f1fff68aeac4",
+   "sha256": "1qckn5bi1ib54hgqbym5qqwzvbv70ria1w3c2x543xlr0l7zga6h"
+  }
+ },
+ {
+  "ename": "python-docstring",
+  "commit": "e159e59ba0b60326cca0e1ea68fac4b85d54cd24",
+  "sha256": "1vi30y71vflsbprp5j4phbp7x1j24vxn9d6sifaddari0g0zxpfw",
+  "fetcher": "github",
+  "repo": "glyph/python-docstring-mode",
+  "unstable": {
+   "version": [
+    20190716,
+    921
+   ],
+   "commit": "ec253711f2bdcb3848046bb68f6405a7bf9eb0fb",
+   "sha256": "0m27h2ycjz212r012wh4wsahidclmb74gk9g3v6ym9a2120bk0dh"
+  }
+ },
+ {
+  "ename": "python-environment",
+  "commit": "283155ad56cd8eda416c83a9b7f8d43d4d1570c2",
+  "sha256": "1pq16rddw76ic5d02j5bswl9qcydi47hqmhs7r06jk46vsfzxpl7",
+  "fetcher": "github",
+  "repo": "tkf/emacs-python-environment",
+  "unstable": {
+   "version": [
+    20150310,
+    853
+   ],
+   "deps": [
+    "deferred"
+   ],
+   "commit": "401006584e32864a10c69d29f14414828909362e",
+   "sha256": "0q6bib9nr6xiq6npzbngyfcjk87yyvwzq1zirr3z1h5wadm34lsk"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "deferred"
+   ],
+   "commit": "401006584e32864a10c69d29f14414828909362e",
+   "sha256": "0q6bib9nr6xiq6npzbngyfcjk87yyvwzq1zirr3z1h5wadm34lsk"
+  }
+ },
+ {
+  "ename": "python-info",
+  "commit": "2a30746451ec5ffab250e160c1d5bd29b8dc6b54",
+  "sha256": "0kvpz1r2si94rs1iajn1ffmx7a5bgyjnzri36ajdgd5gcgh41dhy",
+  "fetcher": "github",
+  "repo": "Wilfred/python-info",
+  "unstable": {
+   "version": [
+    20151228,
+    1852
+   ],
+   "commit": "306f15441b54b25757cdfd3b327b84024ea21ed7",
+   "sha256": "0zk6014dzfrb3y3nhs890x082xf044w0a8nmy6rlrj375lvhfn99"
+  }
+ },
+ {
+  "ename": "python-mode",
+  "commit": "82861e1ab114451af5e1106d53195afd3605448a",
+  "sha256": "1m7c6c97xpr5mrbyzhcl2cy7ykdz5yjj90mrakd4lknnsbcq205k",
+  "fetcher": "gitlab",
+  "repo": "python-mode-devs/python-mode",
+  "unstable": {
+   "version": [
+    20200508,
+    1756
+   ],
+   "commit": "a4ee6e9f60ff63f0706661e54308281ed7c900e3",
+   "sha256": "02gfr692xr3clrim5l6bqzn1kzcv232ylvd5k33421s21wb9vhzv"
+  },
+  "stable": {
+   "version": [
+    6,
+    2,
+    3
+   ],
+   "commit": "a0a534639bc6142c2c2f44bd7ca5878ad5f79518",
+   "sha256": "0sj2hfjwpcdg9djsgl3y5aa3gnvl4s87477x6a9d14m11db3p7ml"
+  }
+ },
+ {
+  "ename": "python-pytest",
+  "commit": "d95442748827911e082a55f4fd7c348a3757e274",
+  "sha256": "0n97akqq7dss7rsww311ljh9w1hyc4j64wjmpxjlc9lg5aqwjbh4",
+  "fetcher": "github",
+  "repo": "wbolster/emacs-python-pytest",
+  "unstable": {
+   "version": [
+    20180725,
+    1146
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "magit-popup",
+    "projectile",
+    "s"
+   ],
+   "commit": "09ad688df207ee9b02c990d3897a9e2841931d97",
+   "sha256": "18v7kxdhrayxg2pgbysm0y47xpdvwa15fmazpkfg0q8dfp2j3022"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "magit-popup",
+    "projectile",
+    "s"
+   ],
+   "commit": "6772ecfaa86f0f4a1a66bfd3a454c9b11956de70",
+   "sha256": "086jjygzdrcjfp7j70xs8jh8nq0xv496kza6iap7lyc3qf16b4kk"
+  }
+ },
+ {
+  "ename": "python-switch-quotes",
+  "commit": "d99fbd3d0c486bf89c9c0937e2ebf378be39293f",
+  "sha256": "1wc27q9ac8p7c5mfk3kznbmdd5ds4ray0csgba79n19g152y5jjc",
+  "fetcher": "github",
+  "repo": "werehuman/python-switch-quotes",
+  "unstable": {
+   "version": [
+    20161228,
+    809
+   ],
+   "commit": "93f1e9b40e061a6cea480139e8b1362b6404abd0",
+   "sha256": "1x04hnf3m8cgqp0i566q4n7kh59cayzfxka3g07kv0h543xbys4n"
+  }
+ },
+ {
+  "ename": "python-test",
+  "commit": "0ea68b3aa9c057e81a3e90a359a38ac16cb26c2f",
+  "sha256": "16grx9xzl48dcwflfmv64wigyxlw495a6q01b1ynkqj5sjdl3fkn",
+  "fetcher": "github",
+  "repo": "emacs-pe/python-test.el",
+  "unstable": {
+   "version": [
+    20181018,
+    29
+   ],
+   "commit": "f899975b133539e19ba822e4b0bfd1a28572967e",
+   "sha256": "0ww0qf9hsd8j31dc0p3fmsiqsir3mqbd4pwv4i29qidmbgrk3cv0"
+  }
+ },
+ {
+  "ename": "python-x",
+  "commit": "c1cf98dff029d494007fe25d29bd8bcfecc5b8e6",
+  "sha256": "03px1z27yhvc9084h9j2p0khvhkwmfxdskf0ndvz79ywp6nl7mb6",
+  "fetcher": "gitlab",
+  "repo": "wavexx/python-x.el",
+  "unstable": {
+   "version": [
+    20190611,
+    1303
+   ],
+   "deps": [
+    "cl-lib",
+    "folding",
+    "python"
+   ],
+   "commit": "b1f8eaccee210d7c0580dba6dc9bd361fcf3765d",
+   "sha256": "0vyipfsppissa87pdnbksamdby0yl2q8nzawqivv6smn33jp6vsn"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "folding",
+    "python"
+   ],
+   "commit": "e606469aafec2e6beda8c589540b88a5a6f6f33f",
+   "sha256": "00i7cc4r7275l22k3708xi4hqw2j44yivdb1madzrpf314v3kabr"
+  }
+ },
+ {
+  "ename": "pythonic",
+  "commit": "c756ccbae044bc23131060355532261aa9a12409",
+  "sha256": "12yaxpir17bccj5zwd9lsm8dzd7qlflm8kcf8m1c0pxzgpsk0i5p",
+  "fetcher": "github",
+  "repo": "pythonic-emacs/pythonic",
+  "unstable": {
+   "version": [
+    20200304,
+    1901
+   ],
+   "deps": [
+    "f",
+    "s"
+   ],
+   "commit": "f577f155fb0c6e57b3ff82447ac25dcb3ca0080f",
+   "sha256": "10faqkfbr7n1zlbrs9c9slm2f7wr2liav8r367s00bw3vb2vm8nb"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "c59a158942634d3c07e506b2376d96e8d5d1466f",
+   "sha256": "0219s900kdpi3cxllvmwm8hb2lwqzikplq578f7pyxhzljjh2lma"
+  }
+ },
+ {
+  "ename": "pyvenv",
+  "commit": "e37236b89b9705ba7a9d134b1fb2c3c003953a9b",
+  "sha256": "0gai9idss1wvryxyqk3pv854mc2xg9hd0r55r2blql8n5rd2yv8v",
+  "fetcher": "github",
+  "repo": "jorgenschaefer/pyvenv",
+  "unstable": {
+   "version": [
+    20191202,
+    1039
+   ],
+   "commit": "861998b6d157ae73b829f02a5a6c8a9118310831",
+   "sha256": "0w7w95cjhpvy28mcvmv21ajspngkyrx3yjx3293bmclv699lfbwc"
+  },
+  "stable": {
+   "version": [
+    1,
+    21
+   ],
+   "commit": "103d2f158ef2a760741682e18741e44107c68f3f",
+   "sha256": "055sgk8zf4wb5nqsf3qasf5gg861zlb1831733f1qcrd2ij5gzxx"
+  }
+ },
+ {
+  "ename": "q-mode",
+  "commit": "fff65433eff01d6239809df4c047f0e4349cc4a9",
+  "sha256": "1vv3hynd6k050nxln83l703ymzyh1kl69cdy4yabdvmkqw4gbshz",
+  "fetcher": "github",
+  "repo": "psaris/q-mode",
+  "unstable": {
+   "version": [
+    20181216,
+    1747
+   ],
+   "commit": "7a13fb68a0ad3d843c8cdc188cf0adb9723f42f7",
+   "sha256": "0di229ma7jr9jcck36qjrzilkbp428kkx53qs6c9xw9jhv6yklbz"
+  }
+ },
+ {
+  "ename": "qiita",
+  "commit": "d8065a58e297c50c031de97d2d80bce5857bd803",
+  "sha256": "1kzk7pc68ks9gxm2l2d28al23gxh56z0cmkl80qwg7sh4gsmhyxl",
+  "fetcher": "github",
+  "repo": "gongo/qiita-el",
+  "unstable": {
+   "version": [
+    20140118,
+    844
+   ],
+   "deps": [
+    "helm",
+    "markdown-mode"
+   ],
+   "commit": "93c697b97d540fd1601a13a3d9889fb939b19878",
+   "sha256": "0ggivlaj29rbbhkjpf3bf7vr96xjzffas0sf5m54qh6nyz6nnha5"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "commit": "33b6d3450bb4b3d0186c2475f6c78269c71fd1ff",
+   "sha256": "110z27n3h7p2yalicfhnv832ikfcf7p0hrf5qkryz1sdmz79wb3f"
+  }
+ },
+ {
+  "ename": "ql",
+  "commit": "475bd8fd66c6d5b5c7e74aa2c4e094d313cc8303",
+  "sha256": "0wxjblqacs5nx2hyh7r6rlv1yngbhn6phn5rni4dw2dms98zj34z",
+  "fetcher": "github",
+  "repo": "ieure/ql-el",
+  "unstable": {
+   "version": [
+    20180418,
+    2020
+   ],
+   "commit": "d976414ba6aa576ad524b5ee5bfa620efd072258",
+   "sha256": "138h4ndnzpphsmi4b8yw53mxc3rnqrj1c3jp8njx5pkmiqkp1q00"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "d976414ba6aa576ad524b5ee5bfa620efd072258",
+   "sha256": "138h4ndnzpphsmi4b8yw53mxc3rnqrj1c3jp8njx5pkmiqkp1q00"
+  }
+ },
+ {
+  "ename": "qml-mode",
+  "commit": "f3abc88ddbb6b8ecafa45e75ceba9a1294ad88d4",
+  "sha256": "123mlibviplzra558x87da4zx0kpbhsgfigjjgjgp3mdg897084n",
+  "fetcher": "github",
+  "repo": "coldnew/qml-mode",
+  "unstable": {
+   "version": [
+    20161016,
+    31
+   ],
+   "commit": "6c5f33ba88ae010bf201a80ee8095e20a724558c",
+   "sha256": "1sncsvzjfgmhp4m8w5jd4y51k24n2jfpgvrkd64wlhhzbj3wb947"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "6c5f33ba88ae010bf201a80ee8095e20a724558c",
+   "sha256": "1sncsvzjfgmhp4m8w5jd4y51k24n2jfpgvrkd64wlhhzbj3wb947"
+  }
+ },
+ {
+  "ename": "qt-pro-mode",
+  "commit": "e9af710be77ccde8ffa5f22168d2c8a06b73dd6a",
+  "sha256": "1k3ph9bqvvg6i6n623qrwdpsffs8w9rv9nihmlggb4w30dwqc9nf",
+  "fetcher": "github",
+  "repo": "EricCrosson/qt-pro-mode",
+  "unstable": {
+   "version": [
+    20170604,
+    1841
+   ],
+   "commit": "7a2da323de834294b413cbbb3c92f42f54913643",
+   "sha256": "07054hzl7gd0wfibcqvij2wx9zji330gsryn53qad9gyalvlavpa"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "commit": "f4accdeba5d49b79f85f0f24f74ac25e8326d487",
+   "sha256": "1xprnq3y74hfm931a80wcj35faafzqc59j3vavx95wzv4z4yfgdm"
+  }
+ },
+ {
+  "ename": "qtcreator-theme",
+  "commit": "bf0caf3c60f4b8c6ed1c126a5feb91c99eea1f60",
+  "sha256": "0ic7a9zas8ndrp15xbw4j2987ajfjjq003fcmqhibp0sc66rldfx",
+  "fetcher": "github",
+  "repo": "lesleylai/emacs-qtcreator-theme",
+  "unstable": {
+   "version": [
+    20200203,
+    1436
+   ],
+   "commit": "c56d792d5ab01743e1350e0a7a8a89bb3d2e0c4f",
+   "sha256": "1h7l094h5ccn24c8qp7aqcc4yn1gx8hlkgvsamh1zn8qpsx9bipy"
+  }
+ },
+ {
+  "ename": "quack",
+  "commit": "aa58bf19d4b65ec785677a36709794ae5aebded4",
+  "sha256": "18f3py9vr08589g9kvbcn2nvpd074rx45ni9k66cwl3hjb3hdkg5",
+  "fetcher": "github",
+  "repo": "emacsmirror/quack",
+  "unstable": {
+   "version": [
+    20181106,
+    1301
+   ],
+   "commit": "2146805ce2b5a9b155d73929986f11e713787e26",
+   "sha256": "005wkji4wjqqilgmqy81rjqr8zx4gl39mari2ahvr9mfps2ypmjz"
+  }
+ },
+ {
+  "ename": "quasi-monochrome-theme",
+  "commit": "a9c8498e4bcca19c4c24b2fd0db035c3da477e2a",
+  "sha256": "0h5pqrklyga40jg8qc47lwmf8khn0vcs5jx2sdycl2ipy0ikmfs0",
+  "fetcher": "github",
+  "repo": "lbolla/emacs-quasi-monochrome",
+  "unstable": {
+   "version": [
+    20200415,
+    705
+   ],
+   "commit": "b38d71860fdea945e10e8a766ac9dfa1410ade67",
+   "sha256": "0jcwfmamvpd22r5sbicbf9442b22lvldfrqldysm4l9yyxs11jy3"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "commit": "68060dbbc0bbfe4924387392874186c5a29bb434",
+   "sha256": "0zp2xr0bjfqrpb0bqczzick1vvbjmipjavrdi70kw6a9caynvq22"
+  }
+ },
+ {
+  "ename": "quelpa",
+  "commit": "c599f1254808a9d9bab87c35769052d5df2a01bf",
+  "sha256": "1g53fcy837hpyn9lnmmri0h4c5va61vszhblz4caadqq265hknvs",
+  "fetcher": "github",
+  "repo": "quelpa/quelpa",
+  "unstable": {
+   "version": [
+    20200514,
+    1242
+   ],
+   "commit": "9ece62efa829c6b89ba61cb674f337764b266482",
+   "sha256": "1mvrpyiw53lrz6i7r7zlcfvksh8lsjb4vib6gnj5b849njzcjwhm"
+  }
+ },
+ {
+  "ename": "quelpa-use-package",
+  "commit": "c599f1254808a9d9bab87c35769052d5df2a01bf",
+  "sha256": "0p09w419kldgl913hgqfzyv2pck27vqq2i1xsx7g29biwgnp9hl9",
+  "fetcher": "github",
+  "repo": "quelpa/quelpa-use-package",
+  "unstable": {
+   "version": [
+    20200307,
+    805
+   ],
+   "deps": [
+    "quelpa",
+    "use-package"
+   ],
+   "commit": "00ce667293c7cd5dc79d4b6077785fcc57455775",
+   "sha256": "1xxvfd0ijcz01nsd143xgzsp815x3qpsrk6dmw6j1w3gbr2iqh9z"
+  }
+ },
+ {
+  "ename": "quick-buffer-switch",
+  "commit": "30f167afc241f3ec24c092f2f06dbabd4dd11bcc",
+  "sha256": "1fsnha3x3pgq582libb3dmxb93aagv1avnc0rigpfd7hv6bagj40",
+  "fetcher": "github",
+  "repo": "renard/quick-buffer-switch",
+  "unstable": {
+   "version": [
+    20151007,
+    2208
+   ],
+   "commit": "d5fdd67b4c9f04b7a7122da2215e4ae076a03b1b",
+   "sha256": "0kh63nzdzwxksn2ar2i1ds7n96jga2dhhc9gg27p1g2ca66fs6h5"
+  }
+ },
+ {
+  "ename": "quick-peek",
+  "commit": "68f59a3048ec6196b138b6584a22ce70baa38284",
+  "sha256": "0ivg6v9c535bw2bv636wmkd4sy037j55054bfm31wvvxk99bndwq",
+  "fetcher": "github",
+  "repo": "cpitclaudel/quick-peek",
+  "unstable": {
+   "version": [
+    20200130,
+    2059
+   ],
+   "commit": "03a276086795faad46a142454fc3e28cab058b70",
+   "sha256": "1kzsphzc9n80v6vf00dr2id9qkm78wqa6sb2ncnasgga6qj358ql"
+  }
+ },
+ {
+  "ename": "quick-preview",
+  "commit": "c52a1ea0afa8e5f439b7ac987b79c49eb08fe95a",
+  "sha256": "10k69yiil8i7xvhylrr4rwzqidm3ljm1rdlr6k2r3i9mkiv9pcif",
+  "fetcher": "github",
+  "repo": "emacsattic/quick-preview",
+  "unstable": {
+   "version": [
+    20191017,
+    1920
+   ],
+   "commit": "a312ab5539b9a362da9d305e4da814e17c5721c9",
+   "sha256": "07qipy0r0v8y5rm2g1kqqqy81635wbclzvjgq8y9sziwchww2v20"
+  }
+ },
+ {
+  "ename": "quick-shell-keybind",
+  "commit": "e9bf4d78da24d88476545f97b2af0527dde73600",
+  "sha256": "1f66wk2m0yykcbq6qbalgscpq8s53qshyyqdnimlmdi0g0glif1b",
+  "fetcher": "github",
+  "repo": "eyeinsky/quick-shell-keybind",
+  "unstable": {
+   "version": [
+    20171023,
+    613
+   ],
+   "commit": "5f4541a5a5554d108bf16b5fd1713e962161ca1b",
+   "sha256": "19hqywwf80q6ay886xmcjjpr4pghkw78hzdg0mrpkpkqn2vj06gk"
+  }
+ },
+ {
+  "ename": "quickref",
+  "commit": "acc9b816796b9f142c53f90593952b43c962d2d8",
+  "sha256": "0jahi84ra9g7h0cvz3c02zkbkknrzgv48zq32n72lkxl958swqn1",
+  "fetcher": "github",
+  "repo": "pd/quickref.el",
+  "unstable": {
+   "version": [
+    20170817,
+    1232
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "f368c8b8219bb90498c5ab84e26f00eedaa234cf",
+   "sha256": "0nalnfb816qk1dfxjk9j8r5lvzv2k4jf747xdjbj2mcvv07g2jd2"
+  }
+ },
+ {
+  "ename": "quickrun",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "02wxja6l1xq7gini17ana8qy4kvpfzri0gn2dypjnj2nfh1vvk9i",
+  "fetcher": "github",
+  "repo": "emacsorphanage/quickrun",
+  "unstable": {
+   "version": [
+    20200514,
+    1506
+   ],
+   "commit": "a8752887b81fc2f4f4e4bcd3d2cf8abafb85edbb",
+   "sha256": "0zjhpgg6zkqx8v0gv7h7z73i64ipzszm9cqs4wwaldlz228316ra"
+  },
+  "stable": {
+   "version": [
+    2,
+    2,
+    8
+   ],
+   "commit": "70e93e06778f44113f405aedec6187b925311d57",
+   "sha256": "0swbgsidq11w7vyjhf06dn8vsj06j9scj8n2dm9m7fasj0yh3ghw"
+  }
+ },
+ {
+  "ename": "quiet",
+  "commit": "443425d9e4412a1e3e8117f97c255c8420223542",
+  "sha256": "1jq65jpx0rlkc0dzy55gs37ybpjzvcv06ahwiw1lk2n92g4pi96a",
+  "fetcher": "github",
+  "repo": "zzkt/quiet",
+  "unstable": {
+   "version": [
+    20200211,
+    721
+   ],
+   "commit": "f8a4ef0be086f97e7fb631df7060f29cc4025b98",
+   "sha256": "01nbxgi1v6kqmcnzfdxxc0cqsswi8h12l98ngdiq6b62mv7cfcrs"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "aa3a6e039dbc9437e7dd178a6596d43cf19293eb",
+   "sha256": "0rl3l7wwdfn8bm1a1lajqsxp62xdqn9xihglv8a1ggq3wi40fw61"
+  }
+ },
+ {
+  "ename": "quilt",
+  "commit": "28ad2d71574c1995287371cfd73648871b9271f0",
+  "sha256": "0fgni5khjbxy28i2vdwhcvs0z0yx43ll0c4s8br4w7q9s0nlcvmv",
+  "fetcher": "github",
+  "repo": "jstranik/emacs-quilt",
+  "unstable": {
+   "version": [
+    20190828,
+    506
+   ],
+   "commit": "b56a1f1acc46cdf8655710e4c8f24f5f31f22c6a",
+   "sha256": "1fk1cj0bwb4hrfcy868ll4jf3mq9ni0m8srf01dljh436aj2pc7h"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "commit": "b56a1f1acc46cdf8655710e4c8f24f5f31f22c6a",
+   "sha256": "1fk1cj0bwb4hrfcy868ll4jf3mq9ni0m8srf01dljh436aj2pc7h"
+  }
+ },
+ {
+  "ename": "quiz",
+  "commit": "23d547c0d69d8f5d1e9983e3669a63dffaede2b3",
+  "sha256": "0pcjfhk109ifi834jw8lndwhpfcv764wym1dhiqhp5qd2vf431kg",
+  "fetcher": "github",
+  "repo": "davep/quiz.el",
+  "unstable": {
+   "version": [
+    20190525,
+    1206
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "570bf53926d89282cdb9653bd5aa8fe968f92bbd",
+   "sha256": "1f752fsrk7z8q2dd40r46hzhhf1kyj0vid9g0vv5dkkzmabms59q"
+  },
+  "stable": {
+   "version": [
+    1,
+    5
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "570bf53926d89282cdb9653bd5aa8fe968f92bbd",
+   "sha256": "1f752fsrk7z8q2dd40r46hzhhf1kyj0vid9g0vv5dkkzmabms59q"
+  }
+ },
+ {
+  "ename": "r-autoyas",
+  "commit": "3a095d3a687055c6ac43a4338826542d14a25127",
+  "sha256": "18zifadsgbwnga205jvpx61wa2dvjxmxs5v7cjqhny45a524nbv4",
+  "fetcher": "github",
+  "repo": "mattfidler/r-autoyas.el",
+  "unstable": {
+   "version": [
+    20140101,
+    1510
+   ],
+   "deps": [
+    "ess",
+    "yasnippet"
+   ],
+   "commit": "b4020ee7f5f895e0065b8b26da8a49c51432d530",
+   "sha256": "0dhljmdlg4p832w9s7rp8vznkpjkwpg8k9hj95cn2h76c0afwz3j"
+  },
+  "stable": {
+   "version": [
+    0,
+    28
+   ],
+   "commit": "563254f01ce530ca4c9be1f23395e3fd7d520ff9",
+   "sha256": "02bddznlqys37fnhdpp2g9xa9m7kfgrj1vl0hc5kr42hggk9wwmg"
+  }
+ },
+ {
+  "ename": "racer",
+  "commit": "97b97037c19655a3ddffee9a86359961f26c155c",
+  "sha256": "1091y5pisbf73i6zg5d7yny2d5yckkjg0z6fpjpmz5qjs3xcm9wi",
+  "fetcher": "github",
+  "repo": "racer-rust/emacs-racer",
+  "unstable": {
+   "version": [
+    20191001,
+    2344
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "pos-tip",
+    "rust-mode",
+    "s"
+   ],
+   "commit": "a0bdf778f01e8c4b8a92591447257422ac0b455b",
+   "sha256": "1dzp2l6lcdrcss5xp32yvil4c1din09awnxg0f71fls6kh2g2fcq"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "rust-mode",
+    "s"
+   ],
+   "commit": "8ad54e7674e49735390d63e3aea828a4d4bcddd0",
+   "sha256": "0xj5iki10cg8j8vvqjlw6lfx97k3agwirhchcjnzbnkry48x9qi6"
+  }
+ },
+ {
+  "ename": "racket-mode",
+  "commit": "9af8dea03aba378f21c6109faf48278b4d2bf59f",
+  "sha256": "0cmlz314w5227br0vns5d7jhpspv1byzalgzv8f9v2qjyvk6jvsn",
+  "fetcher": "github",
+  "repo": "greghendershott/racket-mode",
+  "unstable": {
+   "version": [
+    20200513,
+    1519
+   ],
+   "deps": [
+    "faceup",
+    "pos-tip"
+   ],
+   "commit": "0f1efa4a3cdcd26de1d2b002868ffc851cff25ac",
+   "sha256": "1zhn50apdrysm9d6ynv92slah78i39cismj88ym4ahrllwr1jnj4"
+  }
+ },
+ {
+  "ename": "rails-log-mode",
+  "commit": "7ebbf4364759c8e38d550e66fd0ce193f4214e15",
+  "sha256": "0h7gfg0c5pwfh18qzg1mx7an9p958ygdfqb54s85mbkv8x3rh1a0",
+  "fetcher": "github",
+  "repo": "ananthakumaran/rails-log-mode",
+  "unstable": {
+   "version": [
+    20140408,
+    425
+   ],
+   "commit": "ff440003ad7d47cb0ac3300f2a632f4cfd36a446",
+   "sha256": "1fh8wsb0pa2isr1kgh3v9zmmxq1nlmqwqk4z34dw5wpaiyihmk84"
+  }
+ },
+ {
+  "ename": "railscasts-reloaded-theme",
+  "commit": "9817851bd06cbae30fb8f429401f1bbc0dc7be09",
+  "sha256": "1iy30mnm3s7p7qigrm3lvv7xjgwvinwg6yg0hry2aifwn88cnwmz",
+  "fetcher": "github",
+  "repo": "thegeorgeous/railscasts-reloaded-theme",
+  "unstable": {
+   "version": [
+    20190308,
+    759
+   ],
+   "commit": "c6a1cf13a164f22b026b0959527c3b98c2b1aa49",
+   "sha256": "00clkjrp2nfchhznilxjb56bcdv1an50cawnz6747ck22x0ycbfn"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "commit": "ae77bc04fe5a948f418ec8693f6ff2c9ea757c50",
+   "sha256": "1vn9cw343w9vvxhzqi85vyqnj6kxcv99qvva4xjvy1sf65i24wy4"
+  }
+ },
+ {
+  "ename": "railscasts-theme",
+  "commit": "a0366a9844f6c28dfc3d5ba26201865921981574",
+  "sha256": "1z5m8ccx2k18gbzqvg0051mp2myy2qncf4xvv47k80f83pk2hw6r",
+  "fetcher": "github",
+  "repo": "mikenichols/railscasts-theme",
+  "unstable": {
+   "version": [
+    20150219,
+    1525
+   ],
+   "commit": "1340c3f6c2717761cab95617cf8dcbd962b1095b",
+   "sha256": "021x1l5kzsbm0qj5a3bngxa7ickm4lbwsdz81a2ks9pi1ivmw205"
+  }
+ },
+ {
+  "ename": "rainbow-blocks",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1zf1z1hnp8q0s9za7nnpq83isbpmz26l8hxafz0h0b5dz1w2vlvs",
+  "fetcher": "github",
+  "repo": "istib/rainbow-blocks",
+  "unstable": {
+   "version": [
+    20171025,
+    1438
+   ],
+   "commit": "dd435d7bb34ff6f162a5f315df308b90b7e9f842",
+   "sha256": "06yfb3i7wzvqrhkb61zib9xvpb5i00s4frizkzff66im05k0n795"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "8335993563aadd4290c5fa09dd7a6a81691b0690",
+   "sha256": "02x5ciyafqwak06yk813kl8p92hq03wjsk1882q8axr9q231100c"
+  }
+ },
+ {
+  "ename": "rainbow-delimiters",
+  "commit": "d2cf11dbff76f0e3581b865f48bb44a307aa7f23",
+  "sha256": "132nslbnszvbgkl0819z811yar3lms1hp5na4ybi9gkmnb7bg4rg",
+  "fetcher": "github",
+  "repo": "Fanael/rainbow-delimiters",
+  "unstable": {
+   "version": [
+    20191018,
+    1233
+   ],
+   "commit": "5125f4e47604ad36c3eb4706310fcafac729ca8c",
+   "sha256": "1jh1gv69cjlrjkmjrkhgc7jffyxlkq9nci5ag4z1alskfp6favir"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    4
+   ],
+   "commit": "455bcee19c92bf85db0ba7e926f0b5a176b69865",
+   "sha256": "1zr2669savnmkc68hiqsq9wccm6bs1j6jbmlac1xqh6nq7xgq36g"
+  }
+ },
+ {
+  "ename": "rainbow-identifiers",
+  "commit": "975aadd9fe1faf9ad617ba6200ca77185b87e7c0",
+  "sha256": "0lw790ymrgpyh0sxwmzinl2ik5vl5vggbg14cd0cx5yagkw5y3mp",
+  "fetcher": "github",
+  "repo": "Fanael/rainbow-identifiers",
+  "unstable": {
+   "version": [
+    20141102,
+    1526
+   ],
+   "commit": "19fbfded1baa98d12335f26f6d7b20e5ae44ce2e",
+   "sha256": "05i0jpmxzsj2lsj48cafn3v93z37l7k5kaza2ik3yirdpjdibyrh"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "commit": "19fbfded1baa98d12335f26f6d7b20e5ae44ce2e",
+   "sha256": "05i0jpmxzsj2lsj48cafn3v93z37l7k5kaza2ik3yirdpjdibyrh"
+  }
+ },
+ {
+  "ename": "rake",
+  "commit": "bf0f84698dda02a5b84a244ee29a23a6faa9de68",
+  "sha256": "0cw47g6cjnkh3z4hbwwq1f8f5vrvs84spn06k53bx898brqdh8ns",
+  "fetcher": "github",
+  "repo": "asok/rake",
+  "unstable": {
+   "version": [
+    20180212,
+    1008
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "f"
+   ],
+   "commit": "9c204334b03b4e899fadae6e59c20cf105404128",
+   "sha256": "09k2fqkmqr6g19rvqr5x2kpj1cn3wkncxg50hz02vmsrbgmzmnja"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "f"
+   ],
+   "commit": "e680f1a8f2591af7c80cad188340601b101b5ddc",
+   "sha256": "1dk2clsnmjy3bfv6laxf8sslvdajjbwpk83ss8v9xm55dcxjvd7n"
+  }
+ },
+ {
+  "ename": "raku-mode",
+  "commit": "e9831cc66d9a9e6b6441e6a75d54ce57146571fd",
+  "sha256": "08c9mgvmcnhn2q1ldqsaabj623b9kxd7blgfjabbwrl7bqkqpwzp",
+  "fetcher": "github",
+  "repo": "Raku/raku-mode",
+  "unstable": {
+   "version": [
+    20200510,
+    2005
+   ],
+   "deps": [
+    "pkg-info"
+   ],
+   "commit": "43fd5628254754bee41575a55a7d1c7ad79837fa",
+   "sha256": "1c1l0c4pnza3bf0s1262z5r8xmbmhq3qdvgqq28k8raawdqszqfk"
+  }
+ },
+ {
+  "ename": "rally-mode",
+  "commit": "0914825c6d5ad26d2a8035fc33ad98df42df3c53",
+  "sha256": "1vzsh5855bzln3p3235yccl2azpndpc4rh95zrx6p1k62h2kv0y1",
+  "fetcher": "github",
+  "repo": "seanleblanc/rally-mode",
+  "unstable": {
+   "version": [
+    20161114,
+    354
+   ],
+   "deps": [
+    "popwin"
+   ],
+   "commit": "0f5e09a6abe2de7613f174b4f54863df93343134",
+   "sha256": "1vrsv8ph1v853ii0i3q889xlwxnjdqz4bs3ipi502rjx6g7y5gdz"
+  }
+ },
+ {
+  "ename": "rand-theme",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0c2xs99jgrhk6f1s6pls8pigg6qwcr4imnwdlngwzr0jz8jhqvxa",
+  "fetcher": "github",
+  "repo": "gopar/rand-theme",
+  "unstable": {
+   "version": [
+    20151219,
+    2335
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "65a00e5c5150f857aa96803b68f50bc8da0215b7",
+   "sha256": "0fmajgqf9j21qn7h35sky5di8cnma432g0ki9d5m41byxp9y1bdl"
+  }
+ },
+ {
+  "ename": "random-splash-image",
+  "commit": "2bfbfe83143299b86f867c4d7faf6a0d7a070e1e",
+  "sha256": "1j454jy4ia2wrgi3fxzjfdqi3z8x13hq8kh62lnb84whs7a1nhik",
+  "fetcher": "github",
+  "repo": "kakakaya/random-splash-image",
+  "unstable": {
+   "version": [
+    20151003,
+    130
+   ],
+   "commit": "53a39ebfd8ac6be066a652a508a717870f94218a",
+   "sha256": "1mky9xhghzz34sswqm2v3jhfc25fdrjx4hh4a1hs4h45g1v58lm9"
+  }
+ },
+ {
+  "ename": "ranger",
+  "commit": "0207e754f424823fb48e9c065c3ed9112a0c445b",
+  "sha256": "14g4r4iaz0nzfsklslrswsik670pvfd0605xfjghvpngn2a8ych4",
+  "fetcher": "github",
+  "repo": "ralesi/ranger.el",
+  "unstable": {
+   "version": [
+    20200218,
+    203
+   ],
+   "commit": "ae9b3816a6da927cca5beb62c45400103797a2da",
+   "sha256": "07fiyw0gw51dxc7r92pj75lbxppg0gixjv9317qx9c3v1lcxaqiv"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    8,
+    5
+   ],
+   "commit": "584e4ae8cce1c54a44b40dd4c77fbb2f06d73ecb",
+   "sha256": "01rphv92g1r0cw5bwkbrh02s0na7fjrddxx1dckk2y7qr97s7l8j"
+  }
+ },
+ {
+  "ename": "rase",
+  "commit": "334419debe065c34665bb0207574d1d4dfb9e8ae",
+  "sha256": "1g7v2z7l4csl5by64hc3zg4kgrkvv81iq30mfqq4nvy1jc0xa6j0",
+  "fetcher": "github",
+  "repo": "m00natic/rase",
+  "unstable": {
+   "version": [
+    20120928,
+    2045
+   ],
+   "commit": "59b5f7e8102570b65040e8d55781c7ea28de7338",
+   "sha256": "1i16361klpdsxphcjdpxqswab3ing69j1wb9nygws7ghil85h0bx"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "59b5f7e8102570b65040e8d55781c7ea28de7338",
+   "sha256": "1i16361klpdsxphcjdpxqswab3ing69j1wb9nygws7ghil85h0bx"
+  }
+ },
+ {
+  "ename": "rats",
+  "commit": "a62cbae1b2d9af2322bb6a27949de8c8bfddc2b7",
+  "sha256": "0jhwiq9yzwpyqhk3c32vqx8nryingzh58psxbzjl3812b7xdqphr",
+  "fetcher": "github",
+  "repo": "ane/rats.el",
+  "unstable": {
+   "version": [
+    20170818,
+    1013
+   ],
+   "deps": [
+    "cl-lib",
+    "go-mode",
+    "s"
+   ],
+   "commit": "a6d55aebcc54f669c6c6ffedf84364c4097903cc",
+   "sha256": "0cskw05jb7wckhfs2qs9pn5icxa93ay2mw2i1brsmdd0igz34lg3"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "go-mode",
+    "s"
+   ],
+   "commit": "8ad4023a4b9b00c1224b10b0060f6dc60b4814a4",
+   "sha256": "0rwgwz1x9w447y8mxy9hrx1rzi3ac9dwk2y5yg1p08z5b7dy6vcz"
+  }
+ },
+ {
+  "ename": "rbenv",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1skh1v8dgwl1f9m3pmy2s3rnzp8n3cydi3579fgjv4mzi81k3d5q",
+  "fetcher": "github",
+  "repo": "senny/rbenv.el",
+  "unstable": {
+   "version": [
+    20141120,
+    749
+   ],
+   "commit": "2ea1a5bdc1266caef1dd77700f2c8f42429b03f1",
+   "sha256": "0yd0rs6fnc6lsfi7pivw5sivh698055r8ifj9vrxb82dcx2y6v2h"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "commit": "a613ee1941efa48ef5321bad39ac1ed8ad1540b8",
+   "sha256": "09c6v4lnv6vm2cckbdpx2fdi9xkz9l68qvhx35vaawxhrkgvypzp"
+  }
+ },
+ {
+  "ename": "rbt",
+  "commit": "ca7241985be1e8a26a454b8136a537040b7ae801",
+  "sha256": "1mrb6v8zybvhh242vvq0kdvg6cvws7gabfhcydrw5g2njhyqkygm",
+  "fetcher": "github",
+  "repo": "joeheyming/rbt.el",
+  "unstable": {
+   "version": [
+    20170202,
+    2302
+   ],
+   "deps": [
+    "magit",
+    "popup"
+   ],
+   "commit": "32bfba9062a014e375451cf4203c29535b5efc1e",
+   "sha256": "0jzhyf42m9gqcnsz9gxc9wk8bbb9a7fj78swwyj0wqn9jm8jxbra"
+  }
+ },
+ {
+  "ename": "rbtagger",
+  "commit": "2365f30d641474e121d64729e5f57641bbb44d17",
+  "sha256": "03f34vb6rks67mgxn0yk2imfsn9fsshi2j3fv4zilb4dav778n4y",
+  "fetcher": "github",
+  "repo": "thiagoa/rbtagger",
+  "unstable": {
+   "version": [
+    20191115,
+    1858
+   ],
+   "commit": "18ef567e65d1437e9a9e03d4f30a02d60e926d85",
+   "sha256": "0kr10j3f0dd7q102db4y16yj8yfv06wnqsgnx2l9jyc8qhkbxq6w"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "e46137e36a3bdba8dd4d27017b194a8524c7375b",
+   "sha256": "154y2adh2pgn77ycidkd6ndjg9wjxsjmbkb8cppf9csq31vmc313"
+  }
+ },
+ {
+  "ename": "rc-mode",
+  "commit": "d8062b2e5b2744a6e614b389cca7e7f21b582f6f",
+  "sha256": "0p77mckw8jyxcwspj1ffm8mz0k01ddm67hh9j8rw812wddwnj7qf",
+  "fetcher": "github",
+  "repo": "mrhmouse/rc-mode.el",
+  "unstable": {
+   "version": [
+    20160913,
+    1918
+   ],
+   "commit": "fe2e0570bf9c19a292e16b18fd4b0a256df5d93f",
+   "sha256": "0skjg3l3ss8nlrpnpjjflmf7wjib4jfarkmx4438nc6vm6553fmn"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    13
+   ],
+   "commit": "fe2e0570bf9c19a292e16b18fd4b0a256df5d93f",
+   "sha256": "0skjg3l3ss8nlrpnpjjflmf7wjib4jfarkmx4438nc6vm6553fmn"
+  }
+ },
+ {
+  "ename": "rcirc-alert",
+  "commit": "735aa2256660efffdaf6ecbd61a3e2818a48327f",
+  "sha256": "0lyd3gz1sflp93xb7xbvk1gh69w468ync1p144avyh2pybl40q4a",
+  "fetcher": "github",
+  "repo": "csantosb/rcirc-alert",
+  "unstable": {
+   "version": [
+    20141127,
+    1047
+   ],
+   "commit": "0adf8ff9c47023fec578f678424be62b0f49057f",
+   "sha256": "0xdyrp0zs2v2glpfwlajmj97wygwi0y492zbp6rp3caa5bj3j4z2"
+  }
+ },
+ {
+  "ename": "rcirc-alertify",
+  "commit": "d1559b0e19e571c83c25ac7104e269ebc42d8f14",
+  "sha256": "13448bykmy0jqcajhn2gjiar3m8cingyr8394vxybp2m1zvv0pws",
+  "fetcher": "github",
+  "repo": "fgallina/rcirc-alertify",
+  "unstable": {
+   "version": [
+    20140407,
+    119
+   ],
+   "deps": [
+    "alert"
+   ],
+   "commit": "ea5cafc55893f375eccbe013d12dbaa94bf6e259",
+   "sha256": "1mpk5rzsil298q3ppv5v9jrn274v71jffyz0jihrksh1wbjzwhlx"
+  }
+ },
+ {
+  "ename": "rcirc-groups",
+  "commit": "35b9c9e877c686df0ac9f96855d733a240063829",
+  "sha256": "1iws3f8vkwrflcj6ni8nmf1wcw1jrlnssm76kzzhag77ry3iswgx",
+  "fetcher": "github",
+  "repo": "dimitri/rcirc-groups",
+  "unstable": {
+   "version": [
+    20170731,
+    2101
+   ],
+   "commit": "b68ece9d219b909244d4e3c0d8bf6a746d6fead7",
+   "sha256": "196x3qg22rhh917diml1q0hszqrqwg0klzp96q1c7c744mlq82fx"
+  }
+ },
+ {
+  "ename": "rcirc-notify",
+  "commit": "009e2db47c9fe730fff1dc807e52c86b3ab26446",
+  "sha256": "0mwhzkbzhpq4jws05p7qp0kbay8kcblb9xikznm0i8drpdyc617v",
+  "fetcher": "github",
+  "repo": "nicferrier/rcirc-notify",
+  "unstable": {
+   "version": [
+    20150219,
+    2204
+   ],
+   "commit": "841a7b5a6cdb0c11a812df924d2c6a7d364fd455",
+   "sha256": "1k4knsrca626pikgaalqbqwy7im4wz1vrmzzhdrdb4lhdz6sq3q3"
+  }
+ },
+ {
+  "ename": "rcirc-styles",
+  "commit": "10771a996c8a9dc1eb211cddff53db7b2b01e00b",
+  "sha256": "01dxhnzsnljig769dk9axdi970b3lw2s6p1z3ljf29qlb5j4548r",
+  "fetcher": "github",
+  "repo": "aaron-em/rcirc-styles.el",
+  "unstable": {
+   "version": [
+    20160207,
+    250
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f313bf6a7470bed314b27c7a40558cb787d7bc67",
+   "sha256": "1kwn33rxaqik5jls66c2indvswhwmxdmd60n7a1h9siqm5qhy9d6"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f313bf6a7470bed314b27c7a40558cb787d7bc67",
+   "sha256": "1kwn33rxaqik5jls66c2indvswhwmxdmd60n7a1h9siqm5qhy9d6"
+  }
+ },
+ {
+  "ename": "rdf-prefix",
+  "commit": "a5f083bd629697038ea6391c7a4eeedc909a5231",
+  "sha256": "1vxgn5f2kws17ndfdv1vj5p9ks3rp6sikzpc258j07bhsfpjz5qm",
+  "fetcher": "github",
+  "repo": "simenheg/rdf-prefix",
+  "unstable": {
+   "version": [
+    20200216,
+    914
+   ],
+   "commit": "825af2c584fbad9e67c2c08e29040776fa647fe0",
+   "sha256": "0ky81w36dn6c69x4v4b46j8ixqqws9dc8adi4q19149xkiijx1kl"
+  },
+  "stable": {
+   "version": [
+    1,
+    12
+   ],
+   "commit": "825af2c584fbad9e67c2c08e29040776fa647fe0",
+   "sha256": "0ky81w36dn6c69x4v4b46j8ixqqws9dc8adi4q19149xkiijx1kl"
+  }
+ },
+ {
+  "ename": "rdp",
+  "commit": "e2dd8ef80d344c9801f7d0a26b0e3ea33a53bf89",
+  "sha256": "0lj3idwv4fxz8pi8mnxkbhwhzaa1gs6ib4nzly3fc6yiix9ampkz",
+  "fetcher": "github",
+  "repo": "skeeto/rdp",
+  "unstable": {
+   "version": [
+    20120929,
+    154
+   ],
+   "commit": "b620192afada04aec33b38cc130fef0765f41ca9",
+   "sha256": "08l96bhghmnckar4i6afj9csqglasmpmby1r7j38ic9bp37z2yqd"
+  }
+ },
+ {
+  "ename": "rdxmk",
+  "commit": "db54339795e0519f154328e54d47a7a0c80afc71",
+  "sha256": "14iavsgqp28y2ykgly8x69sny34r32dl4bpb47m921vk5n4y6zky",
+  "fetcher": "github",
+  "repo": "jsalzbergedu/rdxmk",
+  "unstable": {
+   "version": [
+    20170630,
+    134
+   ],
+   "commit": "e78749fb29738365ffa4d863ffabeb969ebb0bcf",
+   "sha256": "0gwlqjk84ih89c2ckx0rrw07jgwd32wfwj4mibchdrn0ai891md0"
+  }
+ },
+ {
+  "ename": "react-snippets",
+  "commit": "3720192fdfa45f9b83259ab39356f469c5ac85b4",
+  "sha256": "0chs0h41nb2fdz02hdsaynz7ma8fg66a8m1q1np0464skrsdaj73",
+  "fetcher": "github",
+  "repo": "johnmastro/react-snippets.el",
+  "unstable": {
+   "version": [
+    20181002,
+    1046
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "87ccb640d265fe799583ab55605b84d113223694",
+   "sha256": "0zs78mn37ngy86blmp2xfy7jr5p0s6r0qq6z3z924amrhy5bwdqc"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "bfc4b68b81374a6a080240592641091a7e8a6d61",
+   "sha256": "1wna4v8l3j0ppjv4nj72lhp0yh6vbka6bvl1paqqfvay300kiqjb"
+  }
+ },
+ {
+  "ename": "read-aloud",
+  "commit": "20452bf3112276a7e1c880bfab259150fc70b47a",
+  "sha256": "01fd87k50x71w8qypbi7llgyc1xnmyxifxh4ni9pgbx2ryn72lzv",
+  "fetcher": "github",
+  "repo": "gromnitsky/read-aloud.el",
+  "unstable": {
+   "version": [
+    20160923,
+    500
+   ],
+   "commit": "c662366226abfb07204ab442b4f853ed85438d8a",
+   "sha256": "0wmfjbk3s45wj8j6xwfdldxwkrxsfcby2a242r2p88y3f8pp30i1"
+  }
+ },
+ {
+  "ename": "readline-complete",
+  "commit": "0cf3b56dae7669b34df9d2abe2d78164cbf064c9",
+  "sha256": "1qymk5ypv6ljk8x49z4jcifz7c2dqcg5181f4hqh67g1byvj2277",
+  "fetcher": "github",
+  "repo": "monsanto/readline-complete.el",
+  "unstable": {
+   "version": [
+    20150708,
+    1437
+   ],
+   "commit": "30c020c37b2741160cc37e656e13c85d826a0ebf",
+   "sha256": "1j5b5xapflwzh8a297gva0l12ralwa9vl5z3bb75c9ksjkhi4nm6"
+  }
+ },
+ {
+  "ename": "real-auto-save",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "1li0b2d93ffxjq4jdyzyvjdy5h7q5xllys0w4748d2bhr8q35p3w",
+  "fetcher": "github",
+  "repo": "ChillarAnand/real-auto-save",
+  "unstable": {
+   "version": [
+    20200505,
+    1537
+   ],
+   "commit": "8e51241e5ba7b07b91d8188c14cf193017640292",
+   "sha256": "0yn0ibbda8bjqjhiqhmbvv7p8c52n65mi95v91nkfcj60hwyglnq"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "879144ca7e9bfa09a4fb57d5fe92a80250311f1e",
+   "sha256": "1ka5q2q18hgh7wl5yn04489121bq4nx369rz8nb7dr5l14cas0xm"
+  }
+ },
+ {
+  "ename": "realgud",
+  "commit": "7a21be3673962d5706f12efa5179a5426bdce82b",
+  "sha256": "14n6d3jfhpa29nf4ywdg3aw4i51lfkr99b4z8q4833pmpz1jbq2c",
+  "fetcher": "github",
+  "repo": "realgud/realgud",
+  "unstable": {
+   "version": [
+    20200513,
+    418
+   ],
+   "deps": [
+    "load-relative",
+    "loc-changes",
+    "test-simple"
+   ],
+   "commit": "1238d8e72945a84bb06cd39d7ded75f37105d4d2",
+   "sha256": "0gx5fivzksanyp9a0ijdzrcbgg8nw94mbilhdh1jkra5mw3ndr63"
+  },
+  "stable": {
+   "version": [
+    1,
+    5,
+    1
+   ],
+   "deps": [
+    "load-relative",
+    "loc-changes",
+    "test-simple"
+   ],
+   "commit": "53938f04d5252677484e5c48513e1c138aafc756",
+   "sha256": "1d3s23jk0i34wpyxfajydgyyvsxnpbqrfl0mgydsq7zw2c75ylnq"
+  }
+ },
+ {
+  "ename": "realgud-byebug",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "1akv9raa6yb5h4lsvz7mxlnd9l7adg2rpgw7ski6036n6facn18a",
+  "fetcher": "github",
+  "repo": "realgud/realgud-byebug",
+  "unstable": {
+   "version": [
+    20190520,
+    1140
+   ],
+   "deps": [
+    "cl-lib",
+    "load-relative",
+    "realgud"
+   ],
+   "commit": "f8f20b92c6b13f75cc9797921c0e28d3def48b1c",
+   "sha256": "1f6g5ajimha2n45dykc2vrpdd25ylwrn98fijj3i9m8n0f7jyjrn"
+  }
+ },
+ {
+  "ename": "realgud-ipdb",
+  "commit": "c8182de5fceca3fc517a21abdb8d6e9c860e041b",
+  "sha256": "134b1n2fci0z85cyvqjq3i5wb3pm110src87la6kq2pin1nrdkcm",
+  "fetcher": "github",
+  "repo": "realgud/realgud-ipdb",
+  "unstable": {
+   "version": [
+    20191115,
+    1116
+   ],
+   "deps": [
+    "load-relative",
+    "realgud"
+   ],
+   "commit": "347090928d7866a9909208c5bbe2cb8fa7b55cd7",
+   "sha256": "1m7v8qsqm8b8liyfdfqpcsjnlcbs0lpl6m91ff3449a94l1g99k7"
+  }
+ },
+ {
+  "ename": "realgud-jdb",
+  "commit": "4f03a731e4fbf2099b1ba0902ef514fd8c930d30",
+  "sha256": "02vlzv8lvm4vcw5c3ajn8lb499jdsrlg92kwib1hjwb2smjkb6ba",
+  "fetcher": "github",
+  "repo": "realgud/realgud-jdb",
+  "unstable": {
+   "version": [
+    20191125,
+    1700
+   ],
+   "deps": [
+    "load-relative",
+    "realgud"
+   ],
+   "commit": "99b7f08e0fcec9e33dde8dbbe60e42cfec08bc17",
+   "sha256": "16q9wxa518f3g54zk3imgj8ml06bn66d9jyyg2k86j94ny7q1azd"
+  }
+ },
+ {
+  "ename": "realgud-lldb",
+  "commit": "e7e40b575cc22fa7b4773cf617862495e93565e4",
+  "sha256": "1l43h14a42cpgjcmbhk9vkk87z4ap9rdz7jrz8id666qxbza5xzg",
+  "fetcher": "github",
+  "repo": "realgud/realgud-lldb",
+  "unstable": {
+   "version": [
+    20190912,
+    1335
+   ],
+   "deps": [
+    "load-relative",
+    "realgud"
+   ],
+   "commit": "47cb0178fdde50a9d9151ab45806b41007cd758a",
+   "sha256": "11vaiq7c4iaypsgs4x4sdfycjailba36qh0pwgdprmiyf8swy8hq"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    2
+   ],
+   "deps": [
+    "load-relative",
+    "realgud"
+   ],
+   "commit": "f2f77d6ddfa42430ead400eaf81c605c3a04dead",
+   "sha256": "0n8nagjhgyg2l0qymx4rjzigxnhhks86s8flpndsfyhzh98b8qbm"
+  }
+ },
+ {
+  "ename": "realgud-node-debug",
+  "commit": "50a3644b62f61622169c1aa109db80b1f53d3d8a",
+  "sha256": "0mw2sl9g8j08v40g5x2ai52i5ljvbxvcq37jwaz7vwdkafpnfyis",
+  "fetcher": "github",
+  "repo": "realgud/realgud-node-debug",
+  "unstable": {
+   "version": [
+    20190525,
+    1634
+   ],
+   "deps": [
+    "cl-lib",
+    "load-relative",
+    "realgud"
+   ],
+   "commit": "72e786359ce9dace1796b0d81a00e9340e9c90ad",
+   "sha256": "1zn465bikzv1aizjjcnzsx105pdwwarqmd1fij82rhrspc8p8zis"
+  }
+ },
+ {
+  "ename": "realgud-node-inspect",
+  "commit": "88388c61c0402534ccf9751b3cec318b62d72655",
+  "sha256": "1mfhvhww0w7mksfmgfjd2s8wa10k7q2sqm6s55nm71jyx5h48k07",
+  "fetcher": "github",
+  "repo": "realgud/realgud-node-inspect",
+  "unstable": {
+   "version": [
+    20190523,
+    1251
+   ],
+   "deps": [
+    "cl-lib",
+    "load-relative",
+    "realgud"
+   ],
+   "commit": "c3ed48cf3bc2b28f9fd23bcf60ea13a3cf019fc8",
+   "sha256": "00ywz4kp90wkfi1ncn9zj6vjw9igiv34gvx6fqfi8ha3q5xljzps"
+  }
+ },
+ {
+  "ename": "realgud-old-debuggers",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "14kig9yxss9nfc0cc54ph80pbdrmh1mdazypiwxbnj2nk1dk3qsv",
+  "fetcher": "github",
+  "repo": "realgud/realgud-old-debuggers",
+  "unstable": {
+   "version": [
+    20190520,
+    1150
+   ],
+   "deps": [
+    "cl-lib",
+    "load-relative",
+    "realgud"
+   ],
+   "commit": "0fad38283e885c452160232e01adf3f6ae51983b",
+   "sha256": "01x819j80yc5ybwaz5xglibv88r2aah5gqxwi1q9azd6f70zanvi"
+  }
+ },
+ {
+  "ename": "realgud-pry",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "1f8qap30r26gg33i76474zk6fs3r9qjf7jrxpm4xwpbjraggqy3z",
+  "fetcher": "github",
+  "repo": "realgud/realgud-pry",
+  "unstable": {
+   "version": [
+    20190520,
+    1139
+   ],
+   "deps": [
+    "cl-lib",
+    "load-relative",
+    "realgud"
+   ],
+   "commit": "fe04c0e1e1ce33361d12ad6f9bcf493f3fe228e0",
+   "sha256": "14b3104wlaxwbg3p2pmnxlap5q4msbhswpiq5cx5q1wwhzkjfp2a"
+  }
+ },
+ {
+  "ename": "realgud-rdb2",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "16pk034g26xnbsz0w9z8p76jiaraz8lvbf5hf0mmg1f5f4xlinz7",
+  "fetcher": "github",
+  "repo": "realgud/realgud-ruby-debugger2",
+  "unstable": {
+   "version": [
+    20190520,
+    1146
+   ],
+   "deps": [
+    "cl-lib",
+    "load-relative",
+    "realgud"
+   ],
+   "commit": "3594aa74f7afda3c3251bb2af7fe0e8ec6d621ae",
+   "sha256": "1nalr0yd1wvqdf81nidxmh9fr3ncqdjb706p6832fsmbpk7r9haw"
+  }
+ },
+ {
+  "ename": "realgud-trepan-ni",
+  "commit": "2464e03d11cd660c3c9c760e16b90911151cf184",
+  "sha256": "1p7sn1swmdyyzaaa5xza70md4pl2p15swyh7y3fbmpp35nabv9zi",
+  "fetcher": "github",
+  "repo": "realgud/realgud-trepan-ni",
+  "unstable": {
+   "version": [
+    20190912,
+    1418
+   ],
+   "deps": [
+    "load-relative",
+    "realgud"
+   ],
+   "commit": "6e9cac5e8097018aadf41c88de541168036cc227",
+   "sha256": "0xc80mhqk26vm1sv8xz0zw0pmbznvdpb8gla5bh3rnxpadpannc3"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "load-relative",
+    "realgud"
+   ],
+   "commit": "ce008862ea33de0a9e6c06099b9ddff8f620f2e4",
+   "sha256": "14sd9d0jzr0iiy4hzssabp08wifbnb4hh6xs5b2v8ch348kcwpwv"
+  }
+ },
+ {
+  "ename": "reaper",
+  "commit": "034737d27ad4305b526210e82fe320db4f72a84c",
+  "sha256": "0yr1nb550903g0i2x7arw155v0x5vi4hbdniddwaxa4v9712gphj",
+  "fetcher": "github",
+  "repo": "xendk/reaper",
+  "unstable": {
+   "version": [
+    20200420,
+    1703
+   ],
+   "commit": "c594d2fb9a027f360e98539a1debf5db639846b7",
+   "sha256": "0md3aqzy8rgvpafh6f8f2dwwrc43q317bk7p1whghfvji52aindv"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "1c58c96380b8dc31002bbc87100c3faecfa01f1b",
+   "sha256": "08yfwxpqsr0qvy8bhj650n2yd2dxs2miciszngbnplrkkvdy0v7g"
+  }
+ },
+ {
+  "ename": "reason-mode",
+  "commit": "f9f1a18c13601f3a4fd7b1bbfe7d5da07746e492",
+  "sha256": "07sirgj8bs9yv7pbx1lahwslvjd2aadkzkz7lsyw6xflj5fxpggr",
+  "fetcher": "github",
+  "repo": "reasonml-editor/reason-mode",
+  "unstable": {
+   "version": [
+    20190710,
+    1037
+   ],
+   "commit": "7cf6fbf4e8e86ebb76d118b2703e20b968e030d4",
+   "sha256": "0b8p7lh0ifrw9rqvv15q3ib206d1wfv3xafpqwc70zzwaxswvk06"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "commit": "6b53815a0405be1f364a082d22fe5c900409a01a",
+   "sha256": "1433bgakbfyf5d5vq69rwj4zg1h0xwjy9qsryvd9r1ssax2hzi7r"
+  }
+ },
+ {
+  "ename": "reazon",
+  "commit": "77020b6ea36a4115bdddbc9599fe4f4193ecc29d",
+  "sha256": "1lymdc1lnwr7s8s15mnjcavxdyqncy2rkfdj571lf1a37y52jcj1",
+  "fetcher": "github",
+  "repo": "nickdrozd/reazon",
+  "unstable": {
+   "version": [
+    20180921,
+    1437
+   ],
+   "commit": "020be6467a83957adcbdcb192b61f2c76a94079b",
+   "sha256": "18la2g0srybr10vm1dajgbxi67j1l0cs08mr696hxb6m558yxdv5"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "020be6467a83957adcbdcb192b61f2c76a94079b",
+   "sha256": "18la2g0srybr10vm1dajgbxi67j1l0cs08mr696hxb6m558yxdv5"
+  }
+ },
+ {
+  "ename": "rebecca-theme",
+  "commit": "19f40f30113c7dabd76a2d0e52898e6d6be69a35",
+  "sha256": "1m72jqyqx18i1vpj07v3vkbi0di9dks5sz46wb2h0f23xqyx00md",
+  "fetcher": "github",
+  "repo": "vic/rebecca-theme",
+  "unstable": {
+   "version": [
+    20180324,
+    821
+   ],
+   "commit": "9ac0c71c2858b76dc5499f62c7c7fb7f9e8f16bc",
+   "sha256": "0a0qf118gj2fag3j57zmli47939rn1jayvs2fwa4l280ipfvp2m7"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    1
+   ],
+   "commit": "239115183e0a354ccd5c2cb299893b558fbde05c",
+   "sha256": "0n6xf9s39frnyvchk40zzxbkn0hyga5ridkxbf50n7hr5j19yrmb"
+  }
+ },
+ {
+  "ename": "rebox2",
+  "commit": "fc9132290886694bd551681e32af26e9f4ebae57",
+  "sha256": "06ra50afjqac9ck1s9gaxy0sqxcb612wzd28s4q4imicqpgfxzjw",
+  "fetcher": "github",
+  "repo": "lewang/rebox2",
+  "unstable": {
+   "version": [
+    20121113,
+    1300
+   ],
+   "commit": "00634eca420cc48657b81e40e599ff8548083985",
+   "sha256": "1xh9nxqfg9abcl41ni69rnwjfgyfr0pbl55dzyxsbh6sb36r3h8z"
+  }
+ },
+ {
+  "ename": "recentf-ext",
+  "commit": "ad10a684b4b2f01bc65883374f36fef156ff55d2",
+  "sha256": "122kns45l75cdwxbfjznks3kvm5jc89ik714ij2qx14qyik0xmni",
+  "fetcher": "github",
+  "repo": "rubikitch/recentf-ext",
+  "unstable": {
+   "version": [
+    20170926,
+    35
+   ],
+   "commit": "450de5f8544ed6414e88d4924d7daa5caa55b7fe",
+   "sha256": "1jylpqgngbl594a1qvd305m9lda48cib4dsasimdqxp20d4c56iy"
+  }
+ },
+ {
+  "ename": "recentf-remove-sudo-tramp-prefix",
+  "commit": "0bf1761715ee4917ba0823adbda03859d5b8131a",
+  "sha256": "01kdpx7kqd39a5hjym5plcj5d8szzghigq9mq186mggayg8q44cr",
+  "fetcher": "github",
+  "repo": "ncaq/recentf-remove-sudo-tramp-prefix",
+  "unstable": {
+   "version": [
+    20180205,
+    556
+   ],
+   "commit": "84bbac534cb114d8d11b86790435b65d36e99e68",
+   "sha256": "0lnnh28qax4qk9n9sng7sgb0w0mnjc8abnch3bd0ba9g5x28z8bx"
+  }
+ },
+ {
+  "ename": "recently",
+  "commit": "bb8d1628e1787cba10fc612f3351e4085e9a3153",
+  "sha256": "1928v1897l1n42zrzqfwkq6nckf9y822qcwy99294rq0b4z83kxs",
+  "fetcher": "github",
+  "repo": "10sr/recently-el",
+  "unstable": {
+   "version": [
+    20200120,
+    1432
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "fa8b52fe891a0adaabe0456f6f5a56a2600a831f",
+   "sha256": "0y0msmfwsrbsd59jhj9dh3vz49f2g0ykyp34c2i8l8vz5vkac3lp"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "3a331936ba33875d0f2fa47abe056aadbc59150e",
+   "sha256": "0hdsv3whr2iqk6xirmfcjpbqjnckzqj54n5q04gh2z01bjxv3d7k"
+  }
+ },
+ {
+  "ename": "recompile-on-save",
+  "commit": "77805a854da76b105bd7589fd0960b1ef8868b8b",
+  "sha256": "0bg2p7pk4jlpqc7lg48mxd6zkwnx15r0r7lmsxgx9dv1ilfwrmgn",
+  "fetcher": "github",
+  "repo": "maio/recompile-on-save.el",
+  "unstable": {
+   "version": [
+    20151126,
+    1446
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "92e11446869d878803d4f3dec5d2101380c12bb2",
+   "sha256": "0wk28blnfks987iby0p3qpd4nxnz6sqn4fx8g59gyddjhav51lri"
+  }
+ },
+ {
+  "ename": "recover-buffers",
+  "commit": "43b33cfb794c35de78fde6eabb71ffe01049d23d",
+  "sha256": "0g40d7440hzlc9b45v63ng0anvmgip4dhbd9wcm2sn8qjfr4w11b",
+  "fetcher": "github",
+  "repo": "tripleee/recover-buffers",
+  "unstable": {
+   "version": [
+    20171009,
+    437
+   ],
+   "commit": "81a5cb53099955ebc2a411a44cba5a394ee3f2d1",
+   "sha256": "07dfdvz5rn5l13xdycd7h75zaq0pw2afb9n1yiq01fqk6gvrhc5b"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "a1db7f084977697081da3497628e3514e032b966",
+   "sha256": "114ssmby614xjs7mrpbbsdd4gj5ra6klfh8h6z8iij8xn3kii83q"
+  }
+ },
+ {
+  "ename": "rect+",
+  "commit": "c8c1cd81f0e764a7cfc2f3f96574898ff414beb4",
+  "sha256": "0vk0jwpl6yp2md9nh0ghp2qn883a8lr3cq8c9mgq0g552dwdiv5m",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-rectplus",
+  "unstable": {
+   "version": [
+    20150621,
+    44
+   ],
+   "commit": "299b742faa0bc4448e0d5fe9cb98ab1eb93b8dcc",
+   "sha256": "1vpsihrl03hkd6n6b7mrjccm0a023qf3154a8rw4chihikxw27pj"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    10
+   ],
+   "commit": "299b742faa0bc4448e0d5fe9cb98ab1eb93b8dcc",
+   "sha256": "1vpsihrl03hkd6n6b7mrjccm0a023qf3154a8rw4chihikxw27pj"
+  }
+ },
+ {
+  "ename": "rectangle-utils",
+  "commit": "1852b75c82822e97c39b7c7caeb2a32246171be4",
+  "sha256": "1w5z2gykydsfp30ahqjihpvq04c5v0cfslbrrg429hycys8apws7",
+  "fetcher": "github",
+  "repo": "thierryvolpiatto/rectangle-utils",
+  "unstable": {
+   "version": [
+    20190411,
+    1757
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "46f7e73340fee40c1ab9a4e766a08ae3fce83ebe",
+   "sha256": "0dcga10lg2bl1p259s78jib7pd03v183hima8aksfr0c84s438yq"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "6fe38fdd48ef5305a908b94a043a966ac3f2053a",
+   "sha256": "08n3ah40gfgkbriwj2z3y0751vpvgz86qjdn6dxs4mghjrwr2545"
+  }
+ },
+ {
+  "ename": "recursive-narrow",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "15pzwxzyc3dl81v27gk7a4866cxbhzpmmcmfi9n4vrrxmf61h905",
+  "fetcher": "github",
+  "repo": "nflath/recursive-narrow",
+  "unstable": {
+   "version": [
+    20190306,
+    1521
+   ],
+   "commit": "5e3e2067d5a148d7e64e64e0355d3b6860e4c259",
+   "sha256": "1dxghz1fb2l7y7qphqk0kk732vazlk1n1fl6dlqhqhccj450h2qa"
+  }
+ },
+ {
+  "ename": "redis",
+  "commit": "10fbb970956ee19d812c17900f3c01c5fee0c3f2",
+  "sha256": "1awnilb8bk0izp6yw0187ybh9slf1hc51014xvvmj90darxby79a",
+  "fetcher": "github",
+  "repo": "emacs-pe/redis.el",
+  "unstable": {
+   "version": [
+    20150531,
+    1948
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "2c33f3397bc14e7a8192867b55920492d4eead8c",
+   "sha256": "1rjpf23a8rggjmmxvm1997d3xz03kz84xams486b9ky0n2v02d57"
+  }
+ },
+ {
+  "ename": "redpen-paragraph",
+  "commit": "7e6b187bfc14f3affbe2d8d1cb854abe69deb15b",
+  "sha256": "0jr707ik6fhznq0q421l986w85ah0n9b4is91zrgbk1v6miqrhca",
+  "fetcher": "github",
+  "repo": "karronoli/redpen-paragraph.el",
+  "unstable": {
+   "version": [
+    20160625,
+    1050
+   ],
+   "deps": [
+    "cl-lib",
+    "json"
+   ],
+   "commit": "0062f326106ce8be3c9b7d3fa0e88ed2c7bbfa5e",
+   "sha256": "1y35p2q3xrvn37kligfmkjagkz4b7pl61y2c2g504kjs45v4mqd2"
+  },
+  "stable": {
+   "version": [
+    0,
+    42
+   ],
+   "deps": [
+    "cl-lib",
+    "json"
+   ],
+   "commit": "f9569bc8e2993dea0f83cba5738a35ce32f82424",
+   "sha256": "087dq9h8i8cjwm8x2s33xrwnnxjpjcmddy2624z00s1ip0dh5ham"
+  }
+ },
+ {
+  "ename": "redprl",
+  "commit": "06e7371d703ffdc5b6ea555f2ed289e57e71e377",
+  "sha256": "1zinzs3vzf2alsnxf5k71i7lp90fm26wv4y20ci52n0hnh5nz861",
+  "fetcher": "github",
+  "repo": "RedPRL/sml-redprl",
+  "unstable": {
+   "version": [
+    20180418,
+    1434
+   ],
+   "commit": "c72190de76f7ed1cfbe1d2046c96e99ac5022b0c",
+   "sha256": "0rbzwkdai9bpcnldrib90p02p36qfgnwk18iz2pcz32xs73frx82"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "d06d39486348a74981b2c4c4c2ed3af95b01d5ca",
+   "sha256": "0k3f7pa332d0fs1js8hi7zszcirir1943bhkgwfxzsqx17m26x3n"
+  }
+ },
+ {
+  "ename": "redshank",
+  "commit": "2677a5cf74ebace6510517f47eaa43b35f736683",
+  "sha256": "0p18rkn09qb4ssr6jix13kqc3jld407qr2z2k8z78i3xy4bfzr5f",
+  "fetcher": "github",
+  "repo": "emacsattic/redshank",
+  "unstable": {
+   "version": [
+    20180730,
+    407
+   ],
+   "deps": [
+    "paredit"
+   ],
+   "commit": "d059c5841044aa163664f8bf87c1d981bf0a04fe",
+   "sha256": "1545z1dd85zg8sg2r5r5gdnmgxbxwjvl5xklx5nvpd0gbxlwbpqk"
+  }
+ },
+ {
+  "ename": "redtick",
+  "commit": "3187bd436541e2a5c2b28de67c62f5d5165af737",
+  "sha256": "1a9rviz0hg6vlh2jc04g6vslyf9n89xglcz9cb79vf10hhr6igrb",
+  "fetcher": "github",
+  "repo": "ferfebles/redtick",
+  "unstable": {
+   "version": [
+    20180424,
+    2136
+   ],
+   "commit": "94b4cd43ac20c64dcac96edac2c1a3b9fcc59bb9",
+   "sha256": "1nqbhpxp79zvcxyr5c90b64lrrw5zh6blh91lwssy73zizkh2lcg"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "14e3a07c229d1f660ca5129d6e8a52a8c68db94d",
+   "sha256": "0q4a4iznk6xk680xnvly69j8w1dac79qxlycwrfki6msnkagyn9p"
+  }
+ },
+ {
+  "ename": "redtt",
+  "commit": "8db65908885f753bf65849b89ebabe0c4df664f9",
+  "sha256": "0gnqik2p2rb8c1mp3vrz1xf7z89xfcx5pi4lqsdnwjhxjh2534zk",
+  "fetcher": "github",
+  "repo": "RedPRL/redtt",
+  "unstable": {
+   "version": [
+    20181121,
+    21
+   ],
+   "commit": "50689559ff970e33013b8cf8a3bbc8be18ec4e09",
+   "sha256": "0v1xc27hfa223bganb7gksv6cc2v95bdfms7riv75sf30v3vh59s"
+  }
+ },
+ {
+  "ename": "refine",
+  "commit": "b111879ea0685cda88c758b270304d9e913c1391",
+  "sha256": "1sk6rsd92pix7k8snnqm3hsimjzaihzjgac0g5h3a2zm9dabf4py",
+  "fetcher": "github",
+  "repo": "Wilfred/refine",
+  "unstable": {
+   "version": [
+    20200507,
+    731
+   ],
+   "deps": [
+    "dash",
+    "list-utils",
+    "loop",
+    "s"
+   ],
+   "commit": "d72fa50910b86217a35bb1b7e56adea206052021",
+   "sha256": "02cb30ycwyqhdw54s3abb4xsdyqlpi6i8xi7rkl85avvgy2gif8y"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "dash",
+    "list-utils",
+    "loop",
+    "s"
+   ],
+   "commit": "9760e56ab849a4827e6c9425fdef6f5a7784c967",
+   "sha256": "1b4n0mfplh6vj87p3124c2fw24fj0vm9jvcaxrvccfq3sida4sf3"
+  }
+ },
+ {
+  "ename": "reformatter",
+  "commit": "58de8cf8864867f7b3969f3a048a4844837078b4",
+  "sha256": "0z4wa0bmhz55c54vx7qxkl9x7ix20mmgygv91sqll68l10g63l0c",
+  "fetcher": "github",
+  "repo": "purcell/reformatter.el",
+  "unstable": {
+   "version": [
+    20200426,
+    818
+   ],
+   "commit": "dc6278a6b1e3565604346ac41a6ffc3cbab04031",
+   "sha256": "147qrqs3ndc4xfbb9wiymjsskccp54qpj8bn3i19n9zwm4kmgdzr"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "commit": "e8f70b20caf6672353a2b0ee3161d4791c412696",
+   "sha256": "19mji7frfvj925nx2m2cdvsx0lf69dzdl5wbdppyra9717rsspbq"
+  }
+ },
+ {
+  "ename": "regex-dsl",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0c9mxsvmx6mgpq838qnjjr7ra4hafikv7hq4nfab7zw9mxrcr2f9",
+  "fetcher": "github",
+  "repo": "alk/elisp-regex-dsl",
+  "unstable": {
+   "version": [
+    20100124,
+    1028
+   ],
+   "commit": "ac89ab8b7691a165ef3007cb84417125cfc0632e",
+   "sha256": "1d34jd7is979vfgdy56zkd1m15ng3waiabfpak6dv6ak3cdh5fgx"
+  }
+ },
+ {
+  "ename": "regex-tool",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1s4clmy5r7w6aj2bh2vf2fmbcwnainzidj28mf3kc34x3qhybngq",
+  "fetcher": "github",
+  "repo": "jwiegley/regex-tool",
+  "unstable": {
+   "version": [
+    20170104,
+    1918
+   ],
+   "commit": "0b4a0111143c88ef94bec56624cb2e00c1a054e6",
+   "sha256": "03qm8s7nqsj0pjnnb0p84gk7hvad4bywn3rhr3ibzj6hxqvppbqj"
+  }
+ },
+ {
+  "ename": "region-bindings-mode",
+  "commit": "faba50ed3e8c22991bcb8968880f79fad1748705",
+  "sha256": "141q4x6rilidpnsm9s78qks9i1v6ng0ydhbzqi39xcaccfyyjb69",
+  "fetcher": "github",
+  "repo": "fgallina/region-bindings-mode",
+  "unstable": {
+   "version": [
+    20140407,
+    2214
+   ],
+   "commit": "3fa5dbdbd7c000bebff6d9d14a4be326ec24b6fc",
+   "sha256": "02kfi3c6ydnr7xw611ck66kfjyl5w86dr9vfjv3wjl6ad9jya4zy"
+  }
+ },
+ {
+  "ename": "region-convert",
+  "commit": "f6963fc11d697b95ebbdaf7fe27c91a6229d08b6",
+  "sha256": "16i1b83jms7djkyb3n0crfxgpz05m68f4nrlvzxjj7fb56mvf9j7",
+  "fetcher": "github",
+  "repo": "zonuexe/region-convert.el",
+  "unstable": {
+   "version": [
+    20181221,
+    528
+   ],
+   "commit": "a50a0828a989fc1788a32946249a3758793156b3",
+   "sha256": "07hbqc7ilhyhqa7hw8fxh76ma9qkr4djlc6gbz06c1hknbi1gxs9"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "173c86b4b3fc187d54bcd85b4d7df27a5ee24965",
+   "sha256": "1paljjwr6sfl835m24vj2j4x3zdh3whwayj6dvyfarbhhcwbwphj"
+  }
+ },
+ {
+  "ename": "region-occurrences-highlighter",
+  "commit": "86c5c83a25fd632b41567c6ea4bc49cf0cfd8aa6",
+  "sha256": "1v0iwlkpdmmqi7qllaih6f5pjfjwqwlpyjdjlddvw4rsg6v5gh42",
+  "fetcher": "github",
+  "repo": "alvarogonzalezsotillo/region-occurrences-highlighter",
+  "unstable": {
+   "version": [
+    20190905,
+    730
+   ],
+   "commit": "ee86d6a79342c6e4b3cfad5ec73cb0a40e18ae3d",
+   "sha256": "06y1hbqgdw2y0isn26wmwrqjxb1ypwrqhcjg4n69mdn74cwlk4jz"
+  }
+ },
+ {
+  "ename": "region-state",
+  "commit": "716e82eb4ca0845f59a743556b37be8a1ecb29af",
+  "sha256": "1iq2x1w8lqjjiwjja7r3qki6drvydnk171k9fj9g6rk7wslknz8x",
+  "fetcher": "github",
+  "repo": "xuchunyang/region-state.el",
+  "unstable": {
+   "version": [
+    20181205,
+    1746
+   ],
+   "commit": "8c636b655eef45e0015684699737d31e15450000",
+   "sha256": "0dlamw4zbg3km7h5zk91f593qsk99q7ppvzsws00bc2rnnaplz5l"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "549c5f19e828f9dba3de611b40eba31ae96b0d1c",
+   "sha256": "16hnc0p72fkyqmwci2k2721dvmw8n1nld6qawiz3ghqz932w1kld"
+  }
+ },
+ {
+  "ename": "register-channel",
+  "commit": "ad44618ac36e96d04f5c44c77637ea6229e61b4c",
+  "sha256": "037i2fgxxsfb85vd6xk17wyh7ny6fqfixvb0a18lf8m1hib1gyhr",
+  "fetcher": "github",
+  "repo": "YangZhao11/register-channel",
+  "unstable": {
+   "version": [
+    20180926,
+    2349
+   ],
+   "commit": "9272923757402d177a0b2deab1d9c3c74601c48e",
+   "sha256": "0k9qgrbzbxx4sjffnr02qx5wm71i3m61w7mh2j4hq9jf8k6nbkq4"
+  }
+ },
+ {
+  "ename": "register-quicknav",
+  "commit": "fed1473b565f42f7849c7676d0c9739a39562c95",
+  "sha256": "1487mkyz2h5929580racxr4nbc343klns9bcm7m5jn4hsx5aiq6m",
+  "fetcher": "git",
+  "url": "https://schlomp.space/tastytea/register-quicknav.git",
+  "unstable": {
+   "version": [
+    20200325,
+    1612
+   ],
+   "commit": "06afa1efc490a6cbc1d814fc6f1e7a80a601ecc7",
+   "sha256": "055bffsa81chjpv39p2fn10dwikpzb034k19k0mc1026d8a423kg"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    3
+   ],
+   "commit": "e30883a7085ad1f4e1113dc84f5f2222ac4bcd37",
+   "sha256": "18mskl1w5n2cksjds27d1gcrwb065vp9n6hnw9402j3n6z0w8srv"
+  }
+ },
+ {
+  "ename": "rego-mode",
+  "commit": "fbc0b93675f6baab6ab023b596e65658c9e2a534",
+  "sha256": "0qdmn6kh4bh514qh0ii881c03p3hcdp1qlmdwpp5nlzxlkxbgp07",
+  "fetcher": "github",
+  "repo": "psibi/rego-mode",
+  "unstable": {
+   "version": [
+    20200413,
+    450
+   ],
+   "deps": [
+    "reformatter"
+   ],
+   "commit": "41c99057d0406c7fb3895a03da777af3961a648d",
+   "sha256": "1dw6f60ysyvxgm5gpir37ay8z9csykxj0r7v9h6z38cswicg27sj"
+  }
+ },
+ {
+  "ename": "related",
+  "commit": "555932a7b9cf11b50a61c2a9dd2636fd6844fac8",
+  "sha256": "08cfr5qbm1h5j4v3vf3kjjwb9nxsrk74lx9gi1icdhqw631h3yxf",
+  "fetcher": "github",
+  "repo": "julien-montmartin/related",
+  "unstable": {
+   "version": [
+    20190327,
+    1024
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "546c7e811b290470288b617f2c27106bd83ccd33",
+   "sha256": "0kn07wgnz5bkkq66qfq16rvw9l7zgh0hzrsa705j1zbd6vc3wygs"
+  }
+ },
+ {
+  "ename": "relative-buffers",
+  "commit": "ab22cea99fbee937bbd6e8fbc8bd27967aeaa8a5",
+  "sha256": "131182yb0pr0d6jibqd8aag4w8hywdyi87ldp77b95gw4bqhr96i",
+  "fetcher": "github",
+  "repo": "proofit404/relative-buffers",
+  "unstable": {
+   "version": [
+    20191004,
+    1205
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "6064cd0b3cbd42c4a46c70fc396f05be71f42bd6",
+   "sha256": "0wzxnbbzzjkzrnfdbdn7k172ad6mnhq5y3swcbilnk1w1a1lzyhn"
+  }
+ },
+ {
+  "ename": "relax",
+  "commit": "67247451b39461db4a5fcff3827a09f53f9fc8ec",
+  "sha256": "0gfr4ym6aakawhkfz40ar2n0rfz503hq428yj6rbf7jmq3ajaysk",
+  "fetcher": "github",
+  "repo": "technomancy/relax.el",
+  "unstable": {
+   "version": [
+    20131029,
+    2134
+   ],
+   "deps": [
+    "json"
+   ],
+   "commit": "6e33892623ab87833082262321dc8e1977209626",
+   "sha256": "0lqbhwi1f8b4sv9p1rf0gyjllk0l7g6v6mlws496079wxx1n5j66"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "json"
+   ],
+   "commit": "6e33892623ab87833082262321dc8e1977209626",
+   "sha256": "0lqbhwi1f8b4sv9p1rf0gyjllk0l7g6v6mlws496079wxx1n5j66"
+  }
+ },
+ {
+  "ename": "remark-mode",
+  "commit": "083f2070eb27d66f09552bf42a346f41a9b9b4b5",
+  "sha256": "1ccgii79h05bjl16nz7rgvkf35s9y18vp7l6mx6chciwjz6l78kn",
+  "fetcher": "github",
+  "repo": "torgeir/remark-mode.el",
+  "unstable": {
+   "version": [
+    20191103,
+    1825
+   ],
+   "deps": [
+    "markdown-mode"
+   ],
+   "commit": "e80a1b78304045dec3eceffb6c8cbaf2b6c7b57a",
+   "sha256": "1l06hh728p9gnlliz1nq9qg641gyxfzb7mlz8x88bmvb0wyzyr8r"
+  }
+ },
+ {
+  "ename": "remember-last-theme",
+  "commit": "26edcdddaf8dc8c9a18d6b007e0d49d04fe4ccca",
+  "sha256": "0pw36f9mchkl1qhaii39zd0vwrydjlijzanv706ai2bl8r7l0ppy",
+  "fetcher": "github",
+  "repo": "anler/remember-last-theme",
+  "unstable": {
+   "version": [
+    20170619,
+    2133
+   ],
+   "commit": "0973f1aa6b96355fa376fffe8b45733b6e963c51",
+   "sha256": "11kcqpw1wrhghbw2dx3pqndmq9a1rbqir3k71ggaj1x2y2arzvm7"
+  }
+ },
+ {
+  "ename": "remind-bindings",
+  "commit": "b55af46fa0ca3b32bcafcb8601ce1a3e660502ba",
+  "sha256": "0s6pqg9pgi1qjss90ip2ryn4604lij3z4acpg6pqhf99y4yjrchv",
+  "fetcher": "github",
+  "repo": "mtekman/remind-bindings.el",
+  "unstable": {
+   "version": [
+    20200301,
+    2213
+   ],
+   "deps": [
+    "map",
+    "omni-quotes",
+    "popwin"
+   ],
+   "commit": "730b6d7b30e397f8f11a6d3d5c269df21a33c450",
+   "sha256": "16fk0xnp5awsq45i0wpdkzy6hwccayvwwiag9kar8kmb6nqs2y17"
+  }
+ },
+ {
+  "ename": "renpy",
+  "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228",
+  "sha256": "173391mcv56ljrkhl6hb9fhkl2vic9wj2xmd21hq88m3awpjmill",
+  "fetcher": "github",
+  "repo": "treymerkley/renpy-mode",
+  "unstable": {
+   "version": [
+    20190419,
+    1749
+   ],
+   "commit": "943e1af71d23128ff100d41d178ccffe28f97944",
+   "sha256": "1l2dglkbpb3d6c6cnifhngcjc4yy726mq6yic8x9409c6r0apn2n"
+  }
+ },
+ {
+  "ename": "repeatable-motion",
+  "commit": "0dd56ebaea098715b9c201f07e6196c38977f8e3",
+  "sha256": "12z4z8apd8ksf6dfvqm54l71mx68j0yg4hrjypa9p77fpcd6p0zw",
+  "fetcher": "github",
+  "repo": "willghatch/emacs-repeatable-motion",
+  "unstable": {
+   "version": [
+    20170620,
+    1848
+   ],
+   "commit": "f29effdc4121c2dc7e3fec9b3a62debce29cda9d",
+   "sha256": "11s7r5g0djj0yc8ll7jfw5v3m9kyvaiscndnfnvvjw5lwgfyh0v3"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "e664b0a4a3e39c4085378a28b5136b349a0afb22",
+   "sha256": "007lqahjbig6yygqik6fgbq114784z6l40a3vrc4qs9361zqizck"
+  }
+ },
+ {
+  "ename": "repeater",
+  "commit": "10e6c57937b7540f1fbf920765a63292784433ed",
+  "sha256": "07fq3d6w5ns5ryv4vd23iww2bz34f62syzbg8y643kdd0kp1m772",
+  "fetcher": "github",
+  "repo": "xuchunyang/repeater",
+  "unstable": {
+   "version": [
+    20180418,
+    1212
+   ],
+   "commit": "854b874542b186b2408cbc58ad0591fe8eb70b6c",
+   "sha256": "0cx6b8l9ssf56fz8xjsmbyhy8mdcj8l0rvsdx37qk86xq4nlz74p"
+  }
+ },
+ {
+  "ename": "repl-toggle",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "16k9fk1nl2llk9qli52kiirlx9rlz8yhjh3cy6v5y2b3k0y1cf0b",
+  "fetcher": "github",
+  "repo": "tomterl/repl-toggle",
+  "unstable": {
+   "version": [
+    20190430,
+    713
+   ],
+   "deps": [
+    "fullframe"
+   ],
+   "commit": "a36caac7649fbffbe30f7b06541c9efd723563fc",
+   "sha256": "12h3xxja3isnhvrqx7m2g7a5d8h68cc85pbqyhiipfxyafyl1yxd"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    1
+   ],
+   "deps": [
+    "fullframe"
+   ],
+   "commit": "a36caac7649fbffbe30f7b06541c9efd723563fc",
+   "sha256": "12h3xxja3isnhvrqx7m2g7a5d8h68cc85pbqyhiipfxyafyl1yxd"
+  }
+ },
+ {
+  "ename": "replace-from-region",
+  "commit": "f8e4328cae9b4759a75da0b26ea8b68821bc71af",
+  "sha256": "1p77sajghqkjd7k83nma4qpz682la3zg716jdsnpcwcw0qk9ybcb",
+  "fetcher": "github",
+  "repo": "rubikitch/replace-from-region",
+  "unstable": {
+   "version": [
+    20170227,
+    2316
+   ],
+   "commit": "dc9318b9b2822da7b00ecc34d1dc965c8f96c9bb",
+   "sha256": "05l0wn1gqw2sbl65s1m7afmg3b1ps2qgqqrjkl9r2i26p95kqlq3"
+  }
+ },
+ {
+  "ename": "replace-pairs",
+  "commit": "2c578f574bc13edf45330a2836c02dece163688d",
+  "sha256": "0l9674rba25wh6fskvfwkhv99lwlszb177hsfzx39s6b4hshvlsb",
+  "fetcher": "github",
+  "repo": "davidshepherd7/replace-pairs",
+  "unstable": {
+   "version": [
+    20160207,
+    1251
+   ],
+   "commit": "acfb254dddffcee4250092fab9394ef2b42ffbc0",
+   "sha256": "0k7sngs124bk22hcxg1vx0w5p603v0rdh1bs2sbm1gfgvawfdia6"
+  }
+ },
+ {
+  "ename": "replace-symbol",
+  "commit": "377b6ff2b785f6d87adf1e23a5b0ce02881fc5c9",
+  "sha256": "07ljmw6aw9hsqffhwmiq2pvhry27acg6f4vgxgi91vjr8jj3r4ng",
+  "fetcher": "github",
+  "repo": "bmastenbrook/replace-symbol-el",
+  "unstable": {
+   "version": [
+    20160518,
+    12
+   ],
+   "commit": "baf949e528aee1881f455f9c84e67718bedcb3f6",
+   "sha256": "178y1cmpdb2r72igx8j4l7pyhs1idw56j6hg5h8r9a2p99lkgjjc"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "baf949e528aee1881f455f9c84e67718bedcb3f6",
+   "sha256": "178y1cmpdb2r72igx8j4l7pyhs1idw56j6hg5h8r9a2p99lkgjjc"
+  }
+ },
+ {
+  "ename": "replace-with-inflections",
+  "commit": "7892eb506b8f4260bde4be2805bf3b2d594ab640",
+  "sha256": "1pqpin5ipm3g74zjh1kh6s1gh0aan6202p0y2q00d4ywbz9kn5s0",
+  "fetcher": "github",
+  "repo": "knu/replace-with-inflections.el",
+  "unstable": {
+   "version": [
+    20180831,
+    635
+   ],
+   "deps": [
+    "cl-lib",
+    "inflections",
+    "string-inflection"
+   ],
+   "commit": "d9201e047856492f282da65459b28aba25998dbb",
+   "sha256": "09yvn489z33hww7mi1flh344faxrpbkzqhm0i6xb2rridcj7acqh"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "inflections",
+    "string-inflection"
+   ],
+   "commit": "d9201e047856492f282da65459b28aba25998dbb",
+   "sha256": "09yvn489z33hww7mi1flh344faxrpbkzqhm0i6xb2rridcj7acqh"
+  }
+ },
+ {
+  "ename": "repo",
+  "commit": "1729d4ea9498549fff3594b971fcde5f81592f84",
+  "sha256": "0z4lcswh0c6xnsxlv33bsxh0nh26ydzfl8sv8xabdp5a2gk6bhpb",
+  "fetcher": "github",
+  "repo": "canatella/repo-el",
+  "unstable": {
+   "version": [
+    20191201,
+    38
+   ],
+   "commit": "7b3ce731f1209d74113cb65a2d6aa6f54ce8ed27",
+   "sha256": "0jgiawdnzjlrpx2j1y6djwbqncdpmyfd31q1qf1890049y8ppxnb"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "7b3ce731f1209d74113cb65a2d6aa6f54ce8ed27",
+   "sha256": "0jgiawdnzjlrpx2j1y6djwbqncdpmyfd31q1qf1890049y8ppxnb"
+  }
+ },
+ {
+  "ename": "req-package",
+  "commit": "aa5bc1909f807ec03ad441d78013ba8626cd410a",
+  "sha256": "1zjhc6f9qcb3j72k1llp6vym25lxnvq1jgqgmnrjxxwc4fhxx595",
+  "fetcher": "gitlab",
+  "repo": "edvorg/req-package",
+  "unstable": {
+   "version": [
+    20180122,
+    500
+   ],
+   "deps": [
+    "dash",
+    "ht",
+    "log4e",
+    "use-package"
+   ],
+   "commit": "0c0ac7451149dac6bfda2adfe959d1df1c273de6",
+   "sha256": "0sx3kw1gpliifbc0gh2z1lvig68v3gwqjbj0izgn77js8kqxad84"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "deps": [
+    "dash",
+    "ht",
+    "log4e",
+    "use-package"
+   ],
+   "commit": "0c0ac7451149dac6bfda2adfe959d1df1c273de6",
+   "sha256": "0sx3kw1gpliifbc0gh2z1lvig68v3gwqjbj0izgn77js8kqxad84"
+  }
+ },
+ {
+  "ename": "request",
+  "commit": "8d113615dde757a60ce91e156f0714a1394c4bfc",
+  "sha256": "0h4jqg98px9dqqvjp08vi2z1lhmk0ca59lnrcl96bi7gkkj3jiji",
+  "fetcher": "github",
+  "repo": "tkf/emacs-request",
+  "unstable": {
+   "version": [
+    20200219,
+    2257
+   ],
+   "commit": "216d570a58d05ef1307edb63d2539bafa5f688c6",
+   "sha256": "11malas5n5g4yxydx8pz8aahr5rkjq256cg5avhd64fvfryz9wj2"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    2
+   ],
+   "commit": "22efefeaa394f6deef957818f5c5332061c88d1c",
+   "sha256": "1djywhvvb6kwdj0nd3axjvb7k2g06dzkc6hsf29w9rsk96vr8ryl"
+  }
+ },
+ {
+  "ename": "request-deferred",
+  "commit": "8d113615dde757a60ce91e156f0714a1394c4bfc",
+  "sha256": "1dcxqnzmvddk61dzmfx8vjbzd8m44lscr3pjdp3r7211zhwfk40n",
+  "fetcher": "github",
+  "repo": "tkf/emacs-request",
+  "unstable": {
+   "version": [
+    20181129,
+    317
+   ],
+   "deps": [
+    "deferred",
+    "request"
+   ],
+   "commit": "216d570a58d05ef1307edb63d2539bafa5f688c6",
+   "sha256": "11malas5n5g4yxydx8pz8aahr5rkjq256cg5avhd64fvfryz9wj2"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    2
+   ],
+   "deps": [
+    "deferred",
+    "request"
+   ],
+   "commit": "22efefeaa394f6deef957818f5c5332061c88d1c",
+   "sha256": "1djywhvvb6kwdj0nd3axjvb7k2g06dzkc6hsf29w9rsk96vr8ryl"
+  }
+ },
+ {
+  "ename": "requirejs",
+  "commit": "a6a710c0d5ab34c52498c4154deebb779052aa01",
+  "sha256": "09z6r9wcag3gj075wq215zcslyknl1izap595rn48xvizxi06c6k",
+  "fetcher": "github",
+  "repo": "joeheyming/requirejs-emacs",
+  "unstable": {
+   "version": [
+    20151204,
+    719
+   ],
+   "deps": [
+    "cl-lib",
+    "js2-mode",
+    "popup",
+    "s",
+    "yasnippet"
+   ],
+   "commit": "4ea2a5fcbc76e4cbb6a7461e6f05f019b75865b1",
+   "sha256": "1bfj2zjn3x41jal6c136wnwkgmag27bmrwbfwdylafc7qqk6dflv"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "js2-mode",
+    "popup",
+    "s"
+   ],
+   "commit": "7d73453653b6b97cca59fcde8d529b5a228fbc01",
+   "sha256": "1b832r7779rmr6rhzj7klc0l5xzwc4rids87g2hczpb5dhqnchca"
+  }
+ },
+ {
+  "ename": "requirejs-mode",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "00bl5dz56f77hl9wy3xvjhq81641mv9jbskcd8mcgcz9ycj9g5k2",
+  "fetcher": "github",
+  "repo": "moricard/requirejs-mode",
+  "unstable": {
+   "version": [
+    20130215,
+    2104
+   ],
+   "commit": "bbb0c09f8eb2d6a33c17319be8137f68bb16bc92",
+   "sha256": "02wva5q8mvc0a5kms2wm1gyaag2x3zd6fkkpl4218nrbb0mbficv"
+  }
+ },
+ {
+  "ename": "resize-window",
+  "commit": "601a8d8f9046db6c4d50af983a11fa2501304028",
+  "sha256": "0h1hlj50hc97wxqpnmvg6w3qhdd9nbnb8r8v39ylv87zqjcmlp8l",
+  "fetcher": "github",
+  "repo": "dpsutton/resize-window",
+  "unstable": {
+   "version": [
+    20180918,
+    538
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "72018aa4d2401b60120588199d4cedd0dc1fbcfb",
+   "sha256": "1icjmnfxpc5zgnd4hwwwp0008iy1qv6igr5kyv5s062xd6rcs8a1"
+  },
+  "stable": {
+   "version": [
+    0,
+    7
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "dcbbd30f4f4435070a66a22c5a169b752ca9f904",
+   "sha256": "0x2kkf7bdj9s3993kdz74igi80rqma0w3hi7aggf0zwllqdcnzvk"
+  }
+ },
+ {
+  "ename": "restart-emacs",
+  "commit": "b9faeb6d910d686cbcafe7d12e0bcf62a85689bd",
+  "sha256": "03aabz7fmy99nwimvjn7qz6pvc94i470hfgiwmjz3348cw02k0n6",
+  "fetcher": "github",
+  "repo": "iqbalansari/restart-emacs",
+  "unstable": {
+   "version": [
+    20180601,
+    1031
+   ],
+   "commit": "9aa90d3df9e08bc420e1c9845ee3ff568e911bd9",
+   "sha256": "02x1a85k7r95z8091zgjiaj9nf0zvx1jy4xvl3hr12qbnrx1wfav"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "e9292fe88d8be7d0ecf9f4f30ed98ffbc6bd689b",
+   "sha256": "0y4ga1lj2x2f0r535ivs09m2l0q76iz72w42wknhsw9lmdsyl5nz"
+  }
+ },
+ {
+  "ename": "restclient",
+  "commit": "59303304fe1f724596245556dd90f6afffba425d",
+  "sha256": "0wzp8i89a4hwm7qyxvdk10frknbqcni0isnp8k63nhq7c30s7md4",
+  "fetcher": "github",
+  "repo": "pashky/restclient.el",
+  "unstable": {
+   "version": [
+    20200502,
+    831
+   ],
+   "commit": "edea7b3e3d6110ebe44b9387acad1967e540d2ca",
+   "sha256": "1lajb0xil1jpy1hvvmmig1xgil45976yr7m3lrffavp34ma3kcbh"
+  }
+ },
+ {
+  "ename": "restclient-helm",
+  "commit": "59303304fe1f724596245556dd90f6afffba425d",
+  "sha256": "0cpf02ippfr9w6kiw3kng8smabv256ff388322hhn8a8icyjl24j",
+  "fetcher": "github",
+  "repo": "pashky/restclient.el",
+  "unstable": {
+   "version": [
+    20170314,
+    1554
+   ],
+   "deps": [
+    "helm",
+    "restclient"
+   ],
+   "commit": "edea7b3e3d6110ebe44b9387acad1967e540d2ca",
+   "sha256": "1lajb0xil1jpy1hvvmmig1xgil45976yr7m3lrffavp34ma3kcbh"
+  }
+ },
+ {
+  "ename": "restclient-test",
+  "commit": "82e3078fc1f96d276fd288c3d7b91df5df4717a6",
+  "sha256": "0g26z5p9fq7fm6bgrwaszya5xmhsgzcn1p7zqr83w74fbw6bcl39",
+  "fetcher": "github",
+  "repo": "simenheg/restclient-test.el",
+  "unstable": {
+   "version": [
+    20180106,
+    2046
+   ],
+   "deps": [
+    "restclient"
+   ],
+   "commit": "4518561bc9661fedacb6fb352e9677207f45c418",
+   "sha256": "0hbilpn77w0vykga9p4dkwaygipyna7mwn24y2kwfcahcr39pqjb"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "restclient"
+   ],
+   "commit": "a21e41b905b423e762eeb4da3a236c8b1aea8c49",
+   "sha256": "1lan49723rpzg1q7w8x3iggazwl4zirq5l8nhpb8m5hmg21a4kih"
+  }
+ },
+ {
+  "ename": "reveal-in-folder",
+  "commit": "26682a1fb2d885168ca922521df7f3d8fbfe43a8",
+  "sha256": "0nhrsmilimffpjnv9hn8a49wckdi1lywjlb2fpxpqdi8zl0bgkzs",
+  "fetcher": "github",
+  "repo": "jcs-elpa/reveal-in-folder",
+  "unstable": {
+   "version": [
+    20191209,
+    514
+   ],
+   "deps": [
+    "f"
+   ],
+   "commit": "e3cc73688d8dc3b47ccb1db49519a83b275b1cde",
+   "sha256": "0xdpm7r83nd5j4ss530l3srz4qy2z0m7wp084i3v2sfqi3in5qgl"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "f"
+   ],
+   "commit": "715e34b7c4a93840f6188386a13d15231907257b",
+   "sha256": "0d75hgaskhc6gwjdcc19nligb4xj2irg33cirrc0wp23k7il1m6f"
+  }
+ },
+ {
+  "ename": "reveal-in-osx-finder",
+  "commit": "2bf40285279b761b0efd6bc8542ae9aad4b329e1",
+  "sha256": "00jgrmh5s3vlpj1jjf8l3c3h4hjk5x781m95sidw6chimizvfmfc",
+  "fetcher": "github",
+  "repo": "kaz-yos/reveal-in-osx-finder",
+  "unstable": {
+   "version": [
+    20150802,
+    1657
+   ],
+   "commit": "5710e5936e47139a610ec9a06899f72e77ddc7bc",
+   "sha256": "1q13cgpz4wzhnqv84ablawy3y2wgdwy46sp7454mmfx9m77jzb2v"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    3
+   ],
+   "commit": "5710e5936e47139a610ec9a06899f72e77ddc7bc",
+   "sha256": "1q13cgpz4wzhnqv84ablawy3y2wgdwy46sp7454mmfx9m77jzb2v"
+  }
+ },
+ {
+  "ename": "reverse-im",
+  "commit": "f282ebbed8ad01b63b0e708ab273db51bf65fdbb",
+  "sha256": "0c0dxxpa2s6gvhi14zfb0rnb4i7jaqw627a7ngm5fzyh0r9himcf",
+  "fetcher": "github",
+  "repo": "a13/reverse-im.el",
+  "unstable": {
+   "version": [
+    20200324,
+    1113
+   ],
+   "commit": "c42a7a585c7b85bc402f63535ae6261f68c6aa57",
+   "sha256": "1lx23y4dzf5ln4ahf5dnnvx3blvjf3s65n3hgfv0qi5hgi8i8f59"
+  }
+ },
+ {
+  "ename": "reverse-theme",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "133wl2k0niy9ih0bjn7qx51fykqjj392ibkp1bvmy5dbl09x4gic",
+  "fetcher": "github",
+  "repo": "emacsorphanage/reverse-theme",
+  "unstable": {
+   "version": [
+    20141205,
+    145
+   ],
+   "commit": "8319d0d5342890a3530ffa4daafdb7c35feda1ca",
+   "sha256": "002ywhjms8ybk7cma2p2i11z3fz6kb0w8mlafysm911rvcq2hg5f"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "3105c950bcb51c662c79b59ca102ef662c2b0be0",
+   "sha256": "15xnz4fi22wsximimwmirlz11v4ksfj8nilyjfw6acd92yrhzg6h"
+  }
+ },
+ {
+  "ename": "review-mode",
+  "commit": "f2f9e2667389577d0703874ca69ebe4800ae3e01",
+  "sha256": "0wapicggkngpdzi0yxc0b24s526fs819rc2d6miv6ix3gnw11n0n",
+  "fetcher": "github",
+  "repo": "kmuto/review-el",
+  "unstable": {
+   "version": [
+    20200131,
+    122
+   ],
+   "commit": "09e2df58398b392f19642a12c8cb78eae726dbd2",
+   "sha256": "13cy7wy2jv1cjncfnayp28w1ka4s0jim2sarcw0dn2iiniqlkbwf"
+  }
+ },
+ {
+  "ename": "reykjavik-theme",
+  "commit": "10bf153e2b84050304ba2532f5eb41c7a4e7632f",
+  "sha256": "1f0q2gfzkmpd374jryrd1lgg8xj6rwdq181jhppj3rfjizgw4l35",
+  "fetcher": "github",
+  "repo": "mswift42/reykjavik-theme",
+  "unstable": {
+   "version": [
+    20180823,
+    1544
+   ],
+   "commit": "2cd0043ae6d046f812a95bb26398ea23141beccc",
+   "sha256": "0rk0fw5b1lz7if779h3bngc86iix8v9k8bz3zw8icwfwmjsgg1fh"
+  }
+ },
+ {
+  "ename": "rfc-mode",
+  "commit": "3a61d769cf7c61619a594337fe8a12ccc6a6fd6e",
+  "sha256": "0z7krcfdyr8hblz8dc7apqlpn6sj2zwrjw4wh86js8vf7fiv8svy",
+  "fetcher": "github",
+  "repo": "galdor/rfc-mode",
+  "unstable": {
+   "version": [
+    20200215,
+    1357
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "88e6577a0e50f523f7da04de9f939b0bc168b514",
+   "sha256": "1k8330bgc9m7pnpvz3kjyjpjsmha43v4srnhns85xi0nv328g1iy"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    0
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "55d28321b480a095d29e5c6cd03c8dea9ad55553",
+   "sha256": "0f9h8vmfn8xi0c3qwigzbbvsck4wwxbflxl06m7ky2h5jnj6n0g3"
+  }
+ },
+ {
+  "ename": "rg",
+  "commit": "9ce1f721867383a841957370946f283f996fa76f",
+  "sha256": "0i78qvqdznh1z3b0mnzihv07j8b9r86dc1lsa1qlzacv6a2i9sbm",
+  "fetcher": "github",
+  "repo": "dajva/rg.el",
+  "unstable": {
+   "version": [
+    20200516,
+    1412
+   ],
+   "deps": [
+    "s",
+    "transient",
+    "wgrep"
+   ],
+   "commit": "f5456e006f22b6bc947e799261b36d55b075c5a2",
+   "sha256": "120n4vkw3c1l130932pziz9ivw85wyh6b75836w82dhx9d41h4cr"
+  },
+  "stable": {
+   "version": [
+    1,
+    8,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "s",
+    "wgrep"
+   ],
+   "commit": "3f07304b8a7ee70ac91f3b66e76dc1d621a96bff",
+   "sha256": "0k7x5z7mh9flwih35cqy8chs54rack3nswdcpw5wcpgv6xim227y"
+  }
+ },
+ {
+  "ename": "rhtml-mode",
+  "commit": "f9e14e9d8df9c2ce13e290a5f3d3bf9b247037f4",
+  "sha256": "038j5jkcckmhlq3vz4h07s5y2scljh1fdn9r614hiyxwgk48lc35",
+  "fetcher": "github",
+  "repo": "eschulte/rhtml",
+  "unstable": {
+   "version": [
+    20130422,
+    1311
+   ],
+   "commit": "a6d71b38a3db867ccf82999c99805db1a3a33c33",
+   "sha256": "1qlpv5lzj4yfyjgdykhm6q9izg6g0z5pf5nmynj42vsx7v8bhy1x"
+  }
+ },
+ {
+  "ename": "rib-mode",
+  "commit": "c38c18f3eb75d559752fcd9956464fef890be728",
+  "sha256": "0qgbzrwbbgg4mzjb7yw85qs83b6hpldazip1cigywr46w7f81587",
+  "fetcher": "github",
+  "repo": "blezek/rib-mode",
+  "unstable": {
+   "version": [
+    20170726,
+    1448
+   ],
+   "commit": "97470158784c3c212e22e2c20b8471ee65ba59af",
+   "sha256": "0hln0hympmxmsci82ivc2rw289j1bmgdxns96m1ng1bl668bwag7"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    2
+   ],
+   "commit": "4172e902fd66f235184c0eb6db7fd4a73dbd0866",
+   "sha256": "0s9dyqv4yh0zxngay951g98g07029h51m4r2fc7ib2arw6srfram"
+  }
+ },
+ {
+  "ename": "rich-minority",
+  "commit": "1e6aed365c42987d64d0cd9a8a6178339b1b39e8",
+  "sha256": "11xd76w5k3b3q5bxqjb55vi6dsal9drvyc1nh7z83awm59hvgczc",
+  "fetcher": "github",
+  "repo": "Malabarba/rich-minority",
+  "unstable": {
+   "version": [
+    20190419,
+    1136
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a03e693f6f9232cf75363aaaf1cb041f21675c19",
+   "sha256": "0nr5lazllp5qphllnmwrwiywkc5zd3a51ciwb8k0h8zw5axhp0v7"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    3
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d33d2e357c8eb0b38624dbc51e8b953b08b0cc98",
+   "sha256": "1kn7c9qr9ykj68iqffzzmjsr6aazwac8cxb7j960sjb282rq0yyj"
+  }
+ },
+ {
+  "ename": "right-click-context",
+  "commit": "f6963fc11d697b95ebbdaf7fe27c91a6229d08b6",
+  "sha256": "189nkxkc7lr2fm5qgmylmz6xv6mpphslj4fgpmr8ynnx9z3nxms2",
+  "fetcher": "github",
+  "repo": "zonuexe/right-click-context",
+  "unstable": {
+   "version": [
+    20190528,
+    1832
+   ],
+   "deps": [
+    "cl-lib",
+    "ordinal",
+    "popup"
+   ],
+   "commit": "4b1a2cd2b3eaea2393d3696a36da8f42e386c23d",
+   "sha256": "1y0sa1k8pc8g6mzsqv3n34v2ziyvlr6l74409kh8673lp5r7cx1f"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "popup"
+   ],
+   "commit": "db92245cc494c295afa7c23ef1e1d9f76c20a27e",
+   "sha256": "109l1qj3k87iz3g89j9xf5gdrflr63lagp1qz7cz1p1ji4lycb4k"
+  }
+ },
+ {
+  "ename": "rigid-tabs",
+  "commit": "c1cf98dff029d494007fe25d29bd8bcfecc5b8e6",
+  "sha256": "0623hhhykrxq702871s5p4vddkvx7jpj6hg5q0c9jkbvflz9n9y8",
+  "fetcher": "gitlab",
+  "repo": "wavexx/rigid-tabs.el",
+  "unstable": {
+   "version": [
+    20170903,
+    1559
+   ],
+   "commit": "eba84ceaba2e57e76ad2dfbb7a7154238a25d956",
+   "sha256": "18rba101m9vmjl4mf3x0k7wvbgn6qmay9la745vzpr3lx1f4nn98"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "c7c6b726806df7e8cb25a41b213a207850c91cb7",
+   "sha256": "0p044wg9d4i6f5x7bdshmisgwvw424y16lixac93q6v5bh3xmab5"
+  }
+ },
+ {
+  "ename": "rime",
+  "commit": "0144879cf0dfe4f0447c5da7cd061f7aac91d4fe",
+  "sha256": "1m9jp307czp4mx4xpfnj9bhq7w5xg656dx9l9ih603cbz24salq4",
+  "fetcher": "github",
+  "repo": "DogLooksGood/emacs-rime",
+  "unstable": {
+   "version": [
+    20200502,
+    349
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "popup",
+    "posframe"
+   ],
+   "commit": "daf956df30d4007f70a4495560d656e517ab69a9",
+   "sha256": "0wr1ski9j7m7mwizdgxnnj61z1nqpyjp6gc7dniaac0m6svxf1rf"
+  }
+ },
+ {
+  "ename": "rimero-theme",
+  "commit": "c6d07b0c021001195e6e0951c890566a5a784ce1",
+  "sha256": "0jbknrp9hc8s956cy2gqffxnx0fgnhmjqp2i4vyp0ywh45wrls5r",
+  "fetcher": "github",
+  "repo": "yveszoundi/emacs-rimero-theme",
+  "unstable": {
+   "version": [
+    20180901,
+    1348
+   ],
+   "commit": "a2e706c2b34f749019979a133f08a2d94a1104b3",
+   "sha256": "1kcvvaizggzi7s3dlh611bkirdf6y89kzddc273drdks705s01wh"
+  }
+ },
+ {
+  "ename": "rinari",
+  "commit": "4b243a909faa71e14ee7ca4f307df8e8136e5d7c",
+  "sha256": "0qknicg3vzl7zbkwsdvp10hrvlng6mbi8hgslx4ir522dflrf9p0",
+  "fetcher": "github",
+  "repo": "eschulte/rinari",
+  "unstable": {
+   "version": [
+    20150709,
+    640
+   ],
+   "deps": [
+    "inf-ruby",
+    "jump",
+    "ruby-compilation",
+    "ruby-mode"
+   ],
+   "commit": "134438af8fbdfa9c8077267c768d273a9792b484",
+   "sha256": "0ndrqj7qsf9rky4v928803ib66p37vyhxgyc42vshx86q73v4cyg"
+  },
+  "stable": {
+   "version": [
+    2,
+    11
+   ],
+   "deps": [
+    "inf-ruby",
+    "jump",
+    "ruby-compilation",
+    "ruby-mode"
+   ],
+   "commit": "e2ed2fa55ac3435a86b1cf6a4f2d29aebc309135",
+   "sha256": "1wqhqv2fc5h10igv1php51bayx0s7qw4m9gzx9by80dab8lwa0vk"
+  }
+ },
+ {
+  "ename": "rings",
+  "commit": "113118947e33ab0c8004dbe9b188eba2ea282356",
+  "sha256": "1ncsb4jip07hbrf1l4j9yzn3l0kb63ylhzzsb4bb2yx6as4a66k7",
+  "fetcher": "github",
+  "repo": "konr/rings",
+  "unstable": {
+   "version": [
+    20160531,
+    2027
+   ],
+   "commit": "3590b222eb80652cbd27866f066bd3571d86edfc",
+   "sha256": "01mfiyq4cr2qdmvaxid8a094p20w97n2nsiy9vyng77vcmv36sd5"
+  }
+ },
+ {
+  "ename": "ripgrep",
+  "commit": "e8d789818876e959a1a59690f1dd7d4efa6d608b",
+  "sha256": "1j9c3mhcyhs4xf44z6fnlvmb81pps25bp43gdqvp0954i068mgah",
+  "fetcher": "github",
+  "repo": "nlamirault/ripgrep.el",
+  "unstable": {
+   "version": [
+    20190215,
+    841
+   ],
+   "commit": "40e871dcc4519a70981e9f28acea304692a60978",
+   "sha256": "0snn12iibz5frsx6yk6c31hb8knvsd568ghw9jjka5vxdjzap7p9"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "commit": "73595f1364f2117db49e1e4a49290bd6d430e345",
+   "sha256": "1a5rdpmvsgsjlc9sywism9pq7jd6n9qbcdsvpbfkq1npwhpifkbj"
+  }
+ },
+ {
+  "ename": "riscv-mode",
+  "commit": "0853b4b678be7d1906a2f7946bfa1072590faf72",
+  "sha256": "0496b7xwshmk3gv6s5hggbm9qd60a05racj3xcsxwqzak359lk2b",
+  "fetcher": "github",
+  "repo": "AdamNiederer/riscv-mode",
+  "unstable": {
+   "version": [
+    20170804,
+    1521
+   ],
+   "commit": "99febf97d1fa9441e8dada94fe30c2aa439c9749",
+   "sha256": "119p926ypz525xdh82m2d1saky1qh5va224fxyqisfbwfrc17arh"
+  }
+ },
+ {
+  "ename": "rivet-mode",
+  "commit": "ab197ee315e5e67ce56d81374e3589ee894000bd",
+  "sha256": "0491r8qq5i7al972jjqch5wb1mj83fms6axvxq2zykw5xcdrgs8d",
+  "fetcher": "gitlab",
+  "repo": "thornjad/rivet-mode",
+  "unstable": {
+   "version": [
+    20200514,
+    1617
+   ],
+   "deps": [
+    "web-mode"
+   ],
+   "commit": "9f2e6c4f777dbe306b715ab42663a6fc82a7e431",
+   "sha256": "09rsyq28caz4mrwm32i1f8wdzz35grigp7dilzxxqg0y4fpsf81f"
+  },
+  "stable": {
+   "version": [
+    4,
+    0,
+    2
+   ],
+   "deps": [
+    "web-mode"
+   ],
+   "commit": "b40bc13761e0b14b4ba67a0c600d69fd129c8746",
+   "sha256": "1g7xz8yygpbcqn0fjnad8kim75q6yqlvsab596my115w9p9l23y6"
+  }
+ },
+ {
+  "ename": "rjsx-mode",
+  "commit": "b83be7efdef2457e1320fe3dec46484fbd20263c",
+  "sha256": "0w3ij8k8058pfw443chm1kn30ia0f5rfbg03w9ddw86xb3wa2q0b",
+  "fetcher": "github",
+  "repo": "felipeochoa/rjsx-mode",
+  "unstable": {
+   "version": [
+    20200120,
+    1446
+   ],
+   "deps": [
+    "js2-mode"
+   ],
+   "commit": "0061587a06cdc2579a8d0e90863498d96bf982d8",
+   "sha256": "08b4hdgq4hc1yfd9pvyir2j3cqqdqa3j5svgaba97x5fzhsz7y8i"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "deps": [
+    "js2-mode"
+   ],
+   "commit": "f7d31589acd8a2dfcf4ca8851d2384e4f90364d0",
+   "sha256": "057pgylflzd69ydqz41g8wisvixypdrfn8yv81mfixh3iyq740y8"
+  }
+ },
+ {
+  "ename": "rmsbolt",
+  "commit": "798e7978f3ee32b3667956da8dc2dc7f005b6996",
+  "sha256": "0mgzc4q9mmnqjafp2i9qp0plc7qnh4kmkgjs1c7frk9x07navscf",
+  "fetcher": "gitlab",
+  "repo": "jgkamat/rmsbolt",
+  "unstable": {
+   "version": [
+    20191218,
+    257
+   ],
+   "commit": "2bc1afe528b70b8aad4243a3b2b72bcf09a599e1",
+   "sha256": "0pg2q275qd83i8c1g0f1xlwvbqd40xm3gw2ahl80blyllsvz04j9"
+  }
+ },
+ {
+  "ename": "robe",
+  "commit": "673f920d02fe761bc080b73db7d37dbf5b6d86d8",
+  "sha256": "19py2lwi7maya90kh1mgwqb16j72f7gm05dwla6xrzq1aks18wrk",
+  "fetcher": "github",
+  "repo": "dgutov/robe",
+  "unstable": {
+   "version": [
+    20190521,
+    58
+   ],
+   "deps": [
+    "inf-ruby"
+   ],
+   "commit": "68503b32bb3a005787ecb7a7fdeb3bb4a2317e2b",
+   "sha256": "1v4nbfr3rhdm1733gb88cv0f018iy53cw5hdcwpshrmjj36a2lpn"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    2
+   ],
+   "deps": [
+    "inf-ruby"
+   ],
+   "commit": "1908afd42ce05fc8b8bbf3f38301680264b68d19",
+   "sha256": "0qw18wi54yg971n4wnjqkd8lqj5lbs9ra8bvmngif2bzhqlfdsbn"
+  }
+ },
+ {
+  "ename": "robots-txt-mode",
+  "commit": "eb13cb0dba1696cc51132cd1ff723fa17f892a7c",
+  "sha256": "00hxz4mygcxg7d8m2i4cm0bl82v3hw8wb4m8vv7g7fqkjp32c9qc",
+  "fetcher": "github",
+  "repo": "emacs-php/robots-txt-mode",
+  "unstable": {
+   "version": [
+    20190812,
+    1858
+   ],
+   "commit": "8bf67285a25a6756607354d184e36583f2847e7d",
+   "sha256": "07255pn80w4742sz2h9vbmfxxd8ps2kcn73p7m2bgy02kgbzw42b"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    9
+   ],
+   "commit": "8bf67285a25a6756607354d184e36583f2847e7d",
+   "sha256": "07255pn80w4742sz2h9vbmfxxd8ps2kcn73p7m2bgy02kgbzw42b"
+  }
+ },
+ {
+  "ename": "roguel-ike",
+  "commit": "2db1979e039e466268ca7c264988792d3046e19a",
+  "sha256": "1a7sa6nhgi0s4gjh55bhk5cg6q6s7564fk008ibmrm05gfq9wlg8",
+  "fetcher": "github",
+  "repo": "stevenremot/roguel-ike",
+  "unstable": {
+   "version": [
+    20160120,
+    302
+   ],
+   "deps": [
+    "popup"
+   ],
+   "commit": "706dcb0687e8016d7d776f9d9e5ace9fdbbca43c",
+   "sha256": "0rgv4y9aa5cc2ddz3y5z8d22xmr8kf5c60h0r3g8h91jmcw3rb4z"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "popup"
+   ],
+   "commit": "706dcb0687e8016d7d776f9d9e5ace9fdbbca43c",
+   "sha256": "0rgv4y9aa5cc2ddz3y5z8d22xmr8kf5c60h0r3g8h91jmcw3rb4z"
+  }
+ },
+ {
+  "ename": "rope-read-mode",
+  "commit": "7bf40e9d550fba9ded11b99032d78c69af21a6f3",
+  "sha256": "1xbbf3slgil19p34k5wsnvq60y64wkz40153sh8y1gxlssmy55fy",
+  "fetcher": "gitlab",
+  "repo": "marcowahl/rope-read-mode",
+  "unstable": {
+   "version": [
+    20191215,
+    1240
+   ],
+   "commit": "d1246557e2c9c685b0ee4ec0e58237431b846096",
+   "sha256": "11yd10b6pxg92ybn4lv3n7h7b7xa4xsvsmpz42hbqdarm50hxsdn"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    4
+   ],
+   "commit": "71e475ab35555e0a1eca26d73acf1ced911e422e",
+   "sha256": "0x3mmf4gq4d0cqfqbkrrpwhayvmplacck0zc9nlzcn35y17jzpcz"
+  }
+ },
+ {
+  "ename": "ros",
+  "commit": "7df44ae0ba89a2c4089a39b212784a6a359f1521",
+  "sha256": "1frlg1zn9ip2s3ija20rkmf880smk01jz6jclqkygx6kd4fsbi9m",
+  "fetcher": "github",
+  "repo": "DerBeutlin/ros.el",
+  "unstable": {
+   "version": [
+    20200109,
+    1940
+   ],
+   "commit": "0babdd3bbc038ee7436db0cc869df35752456268",
+   "sha256": "1f0bxbm1rgvf68q6qbsf63mzr44541aapk4237rs7pkxk81nnrrl"
+  }
+ },
+ {
+  "ename": "rotate",
+  "commit": "7d92e66cad586d4dc6b1de12d1b41b818b5232c2",
+  "sha256": "11a0svvfq29cb4630jq0hz19xk9jfhfjnssm7vg0dnlzpxqi3vif",
+  "fetcher": "github",
+  "repo": "daichirata/emacs-rotate",
+  "unstable": {
+   "version": [
+    20160909,
+    836
+   ],
+   "commit": "091b5ac4fc310773253efb317e3dbe8e46959ba6",
+   "sha256": "0msjn7ays71mcw6qmdk0mpjp1rvd7fwz917vmvlcd7cpmvkyfbds"
+  }
+ },
+ {
+  "ename": "roy-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1r49c1v0xjkrpxmq0k2l2nrx95n06b7hbpmr1n7nkil2bxdq275i",
+  "fetcher": "github",
+  "repo": "folone/roy-mode",
+  "unstable": {
+   "version": [
+    20121208,
+    1158
+   ],
+   "commit": "0416f561edbc6b4a29fced8be84d2527a9613d65",
+   "sha256": "04jbnm9is2cis75h40znqzjvyjq27ncr2vfank6zglzi4fhxsl0r"
+  }
+ },
+ {
+  "ename": "rpm-spec-mode",
+  "commit": "bb7e188fffda3d4e42690511775e5e32a11e1b34",
+  "sha256": "1ygk0pdhq1hvgzd173h79lxb04b9lmvq4hi70qf9244bqbm0m182",
+  "fetcher": "github",
+  "repo": "stigbjorlykke/rpm-spec-mode",
+  "unstable": {
+   "version": [
+    20160710,
+    1136
+   ],
+   "commit": "c1c38050c48ea330c7cea632b8785d66daeefb2b",
+   "sha256": "0427kcvf2ljhzwxskn3jzk0ncrl3f9zcz2sm83d9pmhh5jax2gch"
+  }
+ },
+ {
+  "ename": "rpn-calc",
+  "commit": "47d5b3c931cdbc2351e01d15e2b98c78081c9506",
+  "sha256": "04dj2r4035k0c3x6iyjydshzmq381d60pmscp2hg5m7sp7bqn5xs",
+  "fetcher": "github",
+  "repo": "zk-phi/rpn-calc",
+  "unstable": {
+   "version": [
+    20181121,
+    1154
+   ],
+   "deps": [
+    "popup"
+   ],
+   "commit": "27279f89c80eb3f28ff9f981eff06502056943e2",
+   "sha256": "0klzhscdvzwpcrfkq2v28in5fv01zqabgxdrziyhj666sly1scjq"
+  }
+ },
+ {
+  "ename": "rsense",
+  "commit": "e2149ce3baef9ac01d5b2e8b1a933a3e1206015f",
+  "sha256": "1901xqlpc8fg4sl9j58jn40i2djs8s0cdcqcrzrq02lvk8ssfdf5",
+  "fetcher": "github",
+  "repo": "m2ym/rsense",
+  "unstable": {
+   "version": [
+    20100511,
+    405
+   ],
+   "commit": "8b5ee58318747ca1dde84ee41d48c4f50175cf35",
+   "sha256": "0xkr1qn8fm3kv5c11janq5acp1q02abvxc463zijvm2qk735yl4d"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "e4297052ef32d06237e8bd1534a0caf70a34ad28",
+   "sha256": "0mfkq8n28lal4lqwp6v0ilz8wrwgg61sbm0jggznwisjqqy3lzrh"
+  }
+ },
+ {
+  "ename": "rspec-mode",
+  "commit": "cd83e61b10da20198de990aa081b47d3b0b44d43",
+  "sha256": "0nyib9rx9w9cbsgkcjx9n8fp77xkzxg923z0rdm3f9kc7njcn0zx",
+  "fetcher": "github",
+  "repo": "pezra/rspec-mode",
+  "unstable": {
+   "version": [
+    20200228,
+    2348
+   ],
+   "deps": [
+    "cl-lib",
+    "ruby-mode"
+   ],
+   "commit": "9a2a9d2935ae17b8570485bdea7c347533b464f6",
+   "sha256": "0plr71dbghzcnbrl9l4g52g59yvlcx1dh41fwcnp0b12x13vslay"
+  },
+  "stable": {
+   "version": [
+    1,
+    11
+   ],
+   "deps": [
+    "cl-lib",
+    "ruby-mode"
+   ],
+   "commit": "e289e52ec4b3aa1caf35957d721e5568eca2a3bb",
+   "sha256": "0hrn5n7aaymwimk511kjij44vqaxbmhly1gwmlmsrnbvvma7f2mp"
+  }
+ },
+ {
+  "ename": "rtags",
+  "commit": "3dea16daf0d72188c8b4043534f0833fe9b04e07",
+  "sha256": "0s5m4zjvnc1k4gkkizbs4ysvzzbfh45717pksg9bnyzwx5lcw5yd",
+  "fetcher": "github",
+  "repo": "Andersbakken/rtags",
+  "unstable": {
+   "version": [
+    20200507,
+    1824
+   ],
+   "commit": "ed229d2e4070cc07ba76e537e8f5f93835ff0710",
+   "sha256": "1jf1mg2pib2rsrn280j2ywmnqgkr5jwmiaqf252jsb7ndq7p5gcr"
+  },
+  "stable": {
+   "version": [
+    2,
+    38
+   ],
+   "commit": "9687ccdb9e539981e7934e768ea5c84464a61139",
+   "sha256": "1r6l7dgr2ch586zrdi5l8fhdj4qdva8ldz7cjvi2byc2pd2xs8rx"
+  }
+ },
+ {
+  "ename": "rtags-xref",
+  "commit": "4e6c219d38a3f3495470fbeeade3f771439e0df0",
+  "sha256": "15f3dcq2r4zhb1agd48k91a2d81ny4697hhyw8g6iq8y7m7nrrxx",
+  "fetcher": "github",
+  "repo": "Andersbakken/rtags",
+  "unstable": {
+   "version": [
+    20200310,
+    1909
+   ],
+   "deps": [
+    "rtags"
+   ],
+   "commit": "ed229d2e4070cc07ba76e537e8f5f93835ff0710",
+   "sha256": "1jf1mg2pib2rsrn280j2ywmnqgkr5jwmiaqf252jsb7ndq7p5gcr"
+  },
+  "stable": {
+   "version": [
+    2,
+    38
+   ],
+   "deps": [
+    "rtags"
+   ],
+   "commit": "9687ccdb9e539981e7934e768ea5c84464a61139",
+   "sha256": "1r6l7dgr2ch586zrdi5l8fhdj4qdva8ldz7cjvi2byc2pd2xs8rx"
+  }
+ },
+ {
+  "ename": "rtm",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1bwbaps76pawz73fs7nzkvbii9d57zmfdccpm18dwn6phaqxbhyc",
+  "fetcher": "github",
+  "repo": "pmiddend/emacs-rtm",
+  "unstable": {
+   "version": [
+    20180329,
+    1508
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "3e3d09387cb84801343ecca8fb02e82f213e7bbe",
+   "sha256": "0cc07lhh27i1ra4alrwb6w322ddi6hw0498nkzf388arhn10h3wv"
+  }
+ },
+ {
+  "ename": "rubik",
+  "commit": "00946ed21b0f05b753c792863f6bcc99c26c32a3",
+  "sha256": "07bbh5vjw3jdxf06lxqm45y8ijcai391mf97xw5c29z33vhqs267",
+  "fetcher": "github",
+  "repo": "Kurvivor19/rubik-mode",
+  "unstable": {
+   "version": [
+    20180222,
+    2014
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "c8dab1726463dbc9042a0b00186e4a8df02eb868",
+   "sha256": "13razzmk70h5sd69ms0a3ljr285zcad0wnrqkfxbgi5rnppqlkh1"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "deps": [
+    "calc",
+    "cl-lib"
+   ],
+   "commit": "7ec955639865ca8e99a941843e19b12be5015a47",
+   "sha256": "0fdjg6gpg45m5myq517vkprmvh50xw10dqa8vwr9hfz2z8dy18ja"
+  }
+ },
+ {
+  "ename": "rubocop",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "07ma4fv015wzpj5j4rdb0ckwwmhkxs3k5vy33qxgwghqmn6xby6x",
+  "fetcher": "github",
+  "repo": "rubocop-hq/rubocop-emacs",
+  "unstable": {
+   "version": [
+    20190326,
+    1424
+   ],
+   "commit": "03bf15558a6eb65e4f74000cab29412efd46660e",
+   "sha256": "0bl1l2qbpdknn93wr95a49gdnpl3pwpjj3rka3s44hvihny9p8q0"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "commit": "980bedb455e3551d35a212fae515c054888907c1",
+   "sha256": "152ara2p59imry2ymfnk5mycbc07rblcmfmqjgm5fijb2x94xv8p"
+  }
+ },
+ {
+  "ename": "rubocopfmt",
+  "commit": "ac01edffceea771d8fe41326e28dd9881f1661ab",
+  "sha256": "06ficv1r3axzi7q659pk1m3gbpf44nd2ir2ikmi8mr8rq44sqps0",
+  "fetcher": "github",
+  "repo": "jimeh/rubocopfmt.el",
+  "unstable": {
+   "version": [
+    20181009,
+    1703
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "fc96145719a65b2551339d087ddd95b72e14646f",
+   "sha256": "12sfzvb5lf20d4kqa1fzhz8s48lgr8w0x7qimjcy5c75yjb123wl"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "43ffa9d9c3dcc0574038bebd049102642f50b290",
+   "sha256": "0vzpfd9xv80ph9xz8psczz46blhsdnac8zh5i944klkxgqdw7x1x"
+  }
+ },
+ {
+  "ename": "ruby-compilation",
+  "commit": "ca7bf43ef8893bf04e9658390e306ef69e80a156",
+  "sha256": "1x1vpkjpx95sfcjhkx4cafypj0nkbd1i0mzxx3lmcrsmg8iv0rjc",
+  "fetcher": "github",
+  "repo": "eschulte/rinari",
+  "unstable": {
+   "version": [
+    20150709,
+    640
+   ],
+   "deps": [
+    "inf-ruby"
+   ],
+   "commit": "134438af8fbdfa9c8077267c768d273a9792b484",
+   "sha256": "0ndrqj7qsf9rky4v928803ib66p37vyhxgyc42vshx86q73v4cyg"
+  },
+  "stable": {
+   "version": [
+    2,
+    11
+   ],
+   "deps": [
+    "inf-ruby"
+   ],
+   "commit": "e2ed2fa55ac3435a86b1cf6a4f2d29aebc309135",
+   "sha256": "1wqhqv2fc5h10igv1php51bayx0s7qw4m9gzx9by80dab8lwa0vk"
+  }
+ },
+ {
+  "ename": "ruby-electric",
+  "commit": "ccae5ba7c1088837f2dd6cb0992f49ea2dc5bcdf",
+  "sha256": "1fj5vb4n7jiq93z0yakr39vyfd0f5yhf4p4aw4bdm9cx5dmpr8g6",
+  "fetcher": "github",
+  "repo": "ruby/elisp-ruby-electric",
+  "unstable": {
+   "version": [
+    20200328,
+    1528
+   ],
+   "commit": "f2323cd9b5df3b34aa9810ba8109502824925d23",
+   "sha256": "1p0l0fsn0jcgb4raimyc4d1wpfksrfhn0rkwdazadvm6s8baydf7"
+  },
+  "stable": {
+   "version": [
+    2,
+    3,
+    3
+   ],
+   "commit": "f2323cd9b5df3b34aa9810ba8109502824925d23",
+   "sha256": "1p0l0fsn0jcgb4raimyc4d1wpfksrfhn0rkwdazadvm6s8baydf7"
+  }
+ },
+ {
+  "ename": "ruby-end",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "1cnmdlkhm8xsifbjs6ymvi92gdnxiaghb04h10qg41phj6v7m9mg",
+  "fetcher": "github",
+  "repo": "rejeep/ruby-end.el",
+  "unstable": {
+   "version": [
+    20141215,
+    1223
+   ],
+   "commit": "a136f75abb6d5577ce40d61dfeb778c2e9bb09c0",
+   "sha256": "1f530gaiy010qln51g83m1llazhyfi8ws0lvsb982fhi4dh1xfk5"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "commit": "648b81af136a581bcef387744d93c011d9cdf54b",
+   "sha256": "1cpz9vkp57nk682c5xm20g7bfj5g2aq5ahpk4nhgx7pvd3xvr1ds"
+  }
+ },
+ {
+  "ename": "ruby-extra-highlight",
+  "commit": "73488b0aea4eb470a1f235fece0753797bfd7e35",
+  "sha256": "0dybf39yv0yzy8bsz9k5s64033id6hq4v268m11la4bp5fbv5r37",
+  "fetcher": "github",
+  "repo": "Lindydancer/ruby-extra-highlight",
+  "unstable": {
+   "version": [
+    20171106,
+    1933
+   ],
+   "commit": "83942d18eae361998d24c1c523b308eea821f048",
+   "sha256": "18mq0ap7f0b22cdp2wdj0y2fqsahm2ngf7fvdy0mkkfs3818awlp"
+  }
+ },
+ {
+  "ename": "ruby-factory",
+  "commit": "3ce422ccc34eb325ce432284e44af48607251da2",
+  "sha256": "0v8009pad0l41zh9r1wzcx1h6vpzhr5rgpq6rb002prxz2lcbd37",
+  "fetcher": "github",
+  "repo": "sshaw/ruby-factory-mode",
+  "unstable": {
+   "version": [
+    20160102,
+    721
+   ],
+   "deps": [
+    "inflections"
+   ],
+   "commit": "2bb7ccc2fccb5257376a989aa395bc7b9eb1d55d",
+   "sha256": "15b2rs6m4d511qqkc2gc8k15mbqzrgv6s3hpypajl8nvqa79xnyd"
+  }
+ },
+ {
+  "ename": "ruby-hash-syntax",
+  "commit": "c7d21a43a4bf267507bdc746ec9d0fd82049c0af",
+  "sha256": "0bvwyagfh7mn457iibrpv1ay75089gp8pg608gbm24m0ix82xvb5",
+  "fetcher": "github",
+  "repo": "purcell/ruby-hash-syntax",
+  "unstable": {
+   "version": [
+    20200304,
+    2214
+   ],
+   "commit": "d64036278dcfb4fa0603e6697142e02c2876f634",
+   "sha256": "02s494r9iy47jd74cd0z1dz1igh8rw2jbyybahy9pivmcn7fnqkr"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "commit": "89fc364a837d7a78ecce34380f09c073a83e30e0",
+   "sha256": "1nwf3681fa6lfqr14n9wihckpi220hvamv1ppzmrhn4k49vxljy8"
+  }
+ },
+ {
+  "ename": "ruby-interpolation",
+  "commit": "ca7bf43ef8893bf04e9658390e306ef69e80a156",
+  "sha256": "07idndxw8vgfrk5zfmjjhmixza35mqxwjhsrbjrq5yy72i5ivznp",
+  "fetcher": "github",
+  "repo": "leoc/ruby-interpolation.el",
+  "unstable": {
+   "version": [
+    20131112,
+    1652
+   ],
+   "commit": "1978e337601222cedf00e117bf4b5cac15d1f203",
+   "sha256": "1r2f5jxi6wnkmr1ssvqgshi97gjvxvf3qqc0njg1s33cy39wpqq5"
+  }
+ },
+ {
+  "ename": "ruby-refactor",
+  "commit": "8d223ef5b9e51265c510f1cf7888b621e47bfdcf",
+  "sha256": "0nwinnnhy72h1ihjlnjl8k8z3yf4nl2z7hfv085gwiacr6nn2rby",
+  "fetcher": "github",
+  "repo": "ajvargo/ruby-refactor",
+  "unstable": {
+   "version": [
+    20160214,
+    1650
+   ],
+   "deps": [
+    "ruby-mode"
+   ],
+   "commit": "e6b7125878a08518bffec6942df0c606f748e9ee",
+   "sha256": "13008ih4hwa80bn2dbgj551knbvgpriz5sb241rkf7mifmlfzgsi"
+  }
+ },
+ {
+  "ename": "ruby-test-mode",
+  "commit": "f781a76a519afc0222cdf7255822a23e33745deb",
+  "sha256": "08x9pskxz1hvvqablx5mdp1g54n28kpmd10qwrasq2zjbdjghj48",
+  "fetcher": "github",
+  "repo": "ruby-test-mode/ruby-test-mode",
+  "unstable": {
+   "version": [
+    20190412,
+    909
+   ],
+   "deps": [
+    "pcre2el",
+    "ruby-mode"
+   ],
+   "commit": "e805a81c3ea787f3c82dbb252c21d747be20bc7a",
+   "sha256": "07j74hgq3d4y6m992y98y9n87ivk8a2wb3zlahkj32slkcqfz3kd"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "7d3c04b60721665af93ffb4abc2a7b3191926431",
+   "sha256": "008zj9rg2cmh0xd7g6kgx6snm5sspxs4jmfa8hd43wx5y9pmlb8f"
+  }
+ },
+ {
+  "ename": "ruby-tools",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "0zpk55rkrqyangyyljxzf0n1icgqnpdzycwack5rji556h5grvjy",
+  "fetcher": "github",
+  "repo": "rejeep/ruby-tools.el",
+  "unstable": {
+   "version": [
+    20151209,
+    1615
+   ],
+   "commit": "6b97066b58a4f82eb2ecea6434a0a7e981aa4c18",
+   "sha256": "0jd9acycpbdd90hallrl0k5055rypp502qv4c6i286p7f9is4kvq"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "commit": "6e7fb376085bfa7010ecd3dfad63adacc6e2b4ac",
+   "sha256": "1zvhq9l717rjgkm7bxz5gqkmh5i49cshwzlimb3h78kpjw3hxl2k"
+  }
+ },
+ {
+  "ename": "rufo",
+  "commit": "123b89e06a44ef45150ca7243afc41302dfb6c6e",
+  "sha256": "0pxsifcxic3q54rqj0jbj20hq7f2s4icl57lligf9g0w23qzj239",
+  "fetcher": "github",
+  "repo": "danielma/rufo.el",
+  "unstable": {
+   "version": [
+    20170718,
+    1416
+   ],
+   "commit": "020b02ed6e9ab49e79d2ddf63e4ee2684c1728f4",
+   "sha256": "0nkjs6012dxayf2y8d7sw11czgb7lhyhcbcbmdbicnygf7wbm67h"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "commit": "4e7413fafd0320f30190ae9835ab021cf7a9ebdc",
+   "sha256": "10gwr479q4kd6ndp9r2nzj7rzap21q3f0l3icrviah9l5xzdx2x0"
+  }
+ },
+ {
+  "ename": "rum-mode",
+  "commit": "0c9f8ce2dee376f1f34e89e9642c472a148fca77",
+  "sha256": "1838w8rk5pgp1hn7a0m83mfw9jin4qv5mkyl68hl3gj7g9lhn7sd",
+  "fetcher": "github",
+  "repo": "rumlang/rum-mode",
+  "unstable": {
+   "version": [
+    20180127,
+    22
+   ],
+   "commit": "b69a3866e0299cae8c9c805d644e69b2c17b64de",
+   "sha256": "13sm2v7al9658n17dka6dclzsprccrm3zycx6nwsgl99i14cnn99"
+  }
+ },
+ {
+  "ename": "run-stuff",
+  "commit": "68b7cb0ffe90cd56e2ca6e91e33668be586a1da7",
+  "sha256": "038brammgivaq2423sx0iy6n7d7lyx3r939a0b85ix8zvkcbinia",
+  "fetcher": "gitlab",
+  "repo": "ideasman42/emacs-run-stuff",
+  "unstable": {
+   "version": [
+    20200106,
+    443
+   ],
+   "commit": "d9f7fde3d33446481655d18ca5423c03a23c2e41",
+   "sha256": "1g0n3cji2yj35hkcq3p4wnw3iv99k2hagidg6z7qpfavxasyxyn9"
+  }
+ },
+ {
+  "ename": "runner",
+  "commit": "f3a4e051ab45b8036b91aa0c50bd3f93cd85e9d0",
+  "sha256": "09apmk22swj05z77ziij31jj6b3g221qv3mw3mymffzxn5ap2rbx",
+  "fetcher": "github",
+  "repo": "thamer/runner",
+  "unstable": {
+   "version": [
+    20160524,
+    743
+   ],
+   "commit": "a211d57ddc600410d07a8b534920ba905b093d87",
+   "sha256": "1ddf5jydpc43wgvw4a669wifij71b4r8zfazcqfdpyfh1j4m591b"
+  },
+  "stable": {
+   "version": [
+    1,
+    8
+   ],
+   "commit": "a211d57ddc600410d07a8b534920ba905b093d87",
+   "sha256": "1ddf5jydpc43wgvw4a669wifij71b4r8zfazcqfdpyfh1j4m591b"
+  }
+ },
+ {
+  "ename": "runtests",
+  "commit": "95c49160919d310256501d7c71102f8367aae5aa",
+  "sha256": "0m9rqjb5c0yqr2wv5dsdiba21knr63b5pxsqgbkbybi15zgxcicb",
+  "fetcher": "github",
+  "repo": "sunesimonsen/emacs-runtests",
+  "unstable": {
+   "version": [
+    20150807,
+    831
+   ],
+   "commit": "ed90249f24cc48290018df48b9b9b7172440be3e",
+   "sha256": "18w6gkpxp0g7rzvnrk8vvr267y768dfik447ssq8jpz3jlr5jnq6"
+  }
+ },
+ {
+  "ename": "russian-holidays",
+  "commit": "d4830900e371e7036225ea434c52204f4d2481a7",
+  "sha256": "0lawjwz296grbvb4a1mm1j754q7mpcanyfln1gqxr339kqx2aqd8",
+  "fetcher": "github",
+  "repo": "grafov/russian-holidays",
+  "unstable": {
+   "version": [
+    20170109,
+    2140
+   ],
+   "commit": "b285a30f29d85c48e3ea4eb93972d34a090c167b",
+   "sha256": "1mz842gvrscklg2w2r2q2wbj92qr31h895k700j3axqx6k30ni0h"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "b285a30f29d85c48e3ea4eb93972d34a090c167b",
+   "sha256": "1mz842gvrscklg2w2r2q2wbj92qr31h895k700j3axqx6k30ni0h"
+  }
+ },
+ {
+  "ename": "rust-auto-use",
+  "commit": "a9584d883934e36400ec1924755df34149ad2f9f",
+  "sha256": "0jdg8xgxry0h9nbb9m446gpw54rymw3152n84lvsg5bv51861114",
+  "fetcher": "github",
+  "repo": "vmalloc/rust-auto-use.el",
+  "unstable": {
+   "version": [
+    20181125,
+    637
+   ],
+   "commit": "d924505ecd954625dcb2d56dfba97111dc6a17fa",
+   "sha256": "1yw9l13dgkfsdv4kgpbvzx12g8bqycclgq2gk4b1r29mxy72wnpq"
+  }
+ },
+ {
+  "ename": "rust-mode",
+  "commit": "8f6e5d990d699d571dccbdeb13327b33389bb113",
+  "sha256": "1i1mw1v99nyikscg2s1m216b0h8svbzmf5kjvjgk9zjiba4cbqzc",
+  "fetcher": "github",
+  "repo": "rust-lang/rust-mode",
+  "unstable": {
+   "version": [
+    20200513,
+    812
+   ],
+   "commit": "bfe40565753295a4cf8403f4124710acd2827d21",
+   "sha256": "1bx0hfilw48cz8n58lf427yg6sfi50wr91vcmj0w0m4s26zbdrr2"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "commit": "106aeab800fb3404baf231845d3e3549ec235afa",
+   "sha256": "0bcrklyicxh032rrp585rl5mxd26nb61dp6r5bl935rlcmxzsczh"
+  }
+ },
+ {
+  "ename": "rust-playground",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0ml0zr9vz2vjd9wr0v706w4v4qqfzpa56rdzfak2kb5llx53j89v",
+  "fetcher": "github",
+  "repo": "grafov/rust-playground",
+  "unstable": {
+   "version": [
+    20200116,
+    1043
+   ],
+   "commit": "5a117781dcb66065bea7830dd73618008fc34949",
+   "sha256": "1vmas5mg32lsyiki753a7hy597f54k1rx9sjiahw63jpgg785zys"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "092c8b11d62dea23953a004744833092bac85fe1",
+   "sha256": "0n2c1pjbvy46ic0k84jd3ffwwb5hibjqc1wv7knzkldi5agigfsh"
+  }
+ },
+ {
+  "ename": "rustic",
+  "commit": "716c14a2ed8f5817c09c1ff530a4980c17b44bb3",
+  "sha256": "13bwrdqmm6xb34k8r72c0r3b9aym5dwsalp63bkfh9k9kq9hic0n",
+  "fetcher": "github",
+  "repo": "brotzeit/rustic",
+  "unstable": {
+   "version": [
+    20200516,
+    759
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "ht",
+    "let-alist",
+    "markdown-mode",
+    "projectile",
+    "s",
+    "seq",
+    "spinner",
+    "xterm-color"
+   ],
+   "commit": "52b632d161b64bdca3f35e35180af63b668ce9fb",
+   "sha256": "1pcqm8463hjlv70bn6cpl2sv3z2h992yvkzrcz0w2rpz6jgrcfg1"
+  }
+ },
+ {
+  "ename": "rvm",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "08i7cmav2cz73jp88ww0ay2yjhk9dj8146836q4sij1bl1slbaf8",
+  "fetcher": "github",
+  "repo": "senny/rvm.el",
+  "unstable": {
+   "version": [
+    20150402,
+    1442
+   ],
+   "commit": "134497bc460990c71ab8fa75431156e62c17da2d",
+   "sha256": "1z5psj8mfp0fw8fx6v1sibf8cxhz30yyiwjw17w80f9c24g0j4ii"
+  },
+  "stable": {
+   "version": [
+    1,
+    4,
+    0
+   ],
+   "commit": "8e45a9bad8e317ff195f384dab14d3402497dc79",
+   "sha256": "0iblk0vagjcg3c8q9hlpwk7426ms7aq0s80izgvascfmyqycv6qm"
+  }
+ },
+ {
+  "ename": "ryo-modal",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "06pm6grsdcldi1khbjfjp7lpi6f6x3pa5ikspp0xdwijnmi0xrrf",
+  "fetcher": "github",
+  "repo": "Kungsgeten/ryo-modal",
+  "unstable": {
+   "version": [
+    20200515,
+    1703
+   ],
+   "commit": "5d988e8b3a5d3d6f2f58d97031d2f500ef55473b",
+   "sha256": "0p7f02h5vsf4500gf4nl95myvh7pha47rdllscgs3b9jcx1kgyz2"
+  }
+ },
+ {
+  "ename": "s",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0dars9212z0yv97mj4615h23vd22vy8b6cw2n433z9jhif3aybqa",
+  "fetcher": "github",
+  "repo": "magnars/s.el",
+  "unstable": {
+   "version": [
+    20180406,
+    808
+   ],
+   "commit": "43ba8b563bee3426cead0e6d4ddc09398e1a349d",
+   "sha256": "0bqdlcg5pah9a50dww8n5n0lzc8bzmpc230fdkinw8zrxph13p12"
+  },
+  "stable": {
+   "version": [
+    1,
+    12,
+    0
+   ],
+   "commit": "12f116d58ac03706496bd682c6449b452681874e",
+   "sha256": "1g8mqd13llj007al4nlxxx4z2lcsg3wk970mgjn0avwrhjjgdmmv"
+  }
+ },
+ {
+  "ename": "s-buffer",
+  "commit": "f1bf91527219e7afc8e113134a958f3adb862a5a",
+  "sha256": "07kivgzv24psjq1240gwj9wkndq4bhvjh38x552k90m9v6jz8l6m",
+  "fetcher": "github",
+  "repo": "nicferrier/emacs-s-buffer",
+  "unstable": {
+   "version": [
+    20130605,
+    2124
+   ],
+   "deps": [
+    "noflet",
+    "s"
+   ],
+   "commit": "f95d234282377f00a2c3a9846681080cb95bb1df",
+   "sha256": "06ng960fj2ivnwb0hrn0qic5x8hb0sswjzph01zmwhbfnwykhr85"
+  }
+ },
+ {
+  "ename": "s12cpuv2-mode",
+  "commit": "6c1b9bbdc4deb17636270c7f2be0b43b647c695a",
+  "sha256": "0mrcf5s7vmkyrsdka7qd2vfcmdy8hzf6a6g14la88rxrv4chv29s",
+  "fetcher": "github",
+  "repo": "AdamNiederer/s12cpuv2-mode",
+  "unstable": {
+   "version": [
+    20171013,
+    2051
+   ],
+   "commit": "b17d4cf848dec1e20e66458e5c7ff77a2c051a8c",
+   "sha256": "1fc132gv48xwrxiw139kc9f5wkhjgsgqdfm6b7v97xj5025zg6hr"
+  }
+ },
+ {
+  "ename": "s3ed",
+  "commit": "32ba78167bd6908b49f340f6da48643ac38f25f2",
+  "sha256": "08scv3aqnidz28rad5npz7b4pz9dx05rs72qkp3ybkk2vhqf2qwa",
+  "fetcher": "github",
+  "repo": "mattusifer/s3ed",
+  "unstable": {
+   "version": [
+    20180204,
+    1349
+   ],
+   "deps": [
+    "dash",
+    "seq"
+   ],
+   "commit": "13503cb057bed29cb00a14dffe4472b5cb7748ad",
+   "sha256": "1ak5nmay12s4ipmvm1a36kyny05xhzmj7wp6dry391db9n7g2wy0"
+  }
+ },
+ {
+  "ename": "sackspace",
+  "commit": "073e92e05c4bd6197a5ad24f470b21a97f5bb7b8",
+  "sha256": "1m10iw83k6m7v7sg2dxzdy83zxq6svk8h9fh4ankyn3baqrdxg5z",
+  "fetcher": "github",
+  "repo": "cofi/sackspace.el",
+  "unstable": {
+   "version": [
+    20130719,
+    956
+   ],
+   "commit": "fd0480eaaf6d3d11fd30ac5feb2da2f4f7572708",
+   "sha256": "06gqqbkn85l2p05whmr4wkg9axqyzb7r7sgm3r8wfshm99kgpxvl"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    2
+   ],
+   "commit": "fd0480eaaf6d3d11fd30ac5feb2da2f4f7572708",
+   "sha256": "06gqqbkn85l2p05whmr4wkg9axqyzb7r7sgm3r8wfshm99kgpxvl"
+  }
+ },
+ {
+  "ename": "sage-shell-mode",
+  "commit": "eb875c50c2f97919fd0027869c5d9970e1eaf373",
+  "sha256": "0ivqiigmp9cf88j4xapzanjpbx692r70wb4i25mnppqsi3jlwxdv",
+  "fetcher": "github",
+  "repo": "sagemath/sage-shell-mode",
+  "unstable": {
+   "version": [
+    20191103,
+    1040
+   ],
+   "deps": [
+    "cl-lib",
+    "deferred",
+    "let-alist"
+   ],
+   "commit": "8ff9888fd84a96816512403a1b5ded93b4d4278b",
+   "sha256": "0rrp137r5cf049xqry3jz514pmdzfxkmri9z8kv08yk3w3c9sapj"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "cl-lib",
+    "deferred",
+    "let-alist"
+   ],
+   "commit": "e8bc089e8dfd76f688160e2ac77aee985afeade7",
+   "sha256": "166plwg9ggivr3im0yfxw8k6m9ral37jzznnb06kb6g0zycb4aps"
+  }
+ },
+ {
+  "ename": "sailfish-scratchbox",
+  "commit": "e76261e7dffcb607839440843b085709c2c90b26",
+  "sha256": "1s0glsi4fm6is7fv9vy1h14frq8a4bgahkc8w08vqfnpiin2r567",
+  "fetcher": "github",
+  "repo": "vityafx/sailfish-scratchbox.el",
+  "unstable": {
+   "version": [
+    20171202,
+    1332
+   ],
+   "commit": "65c6b04abadd2cdeb4cc2dc2a8b96b06e0f27ed8",
+   "sha256": "18c6l36sdc3any2fccm49wiyrda97pnd07jdir22wfl5wba7xnj8"
+  }
+ },
+ {
+  "ename": "salesforce-utils",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0b70w92zghid6n0ba28dh5r3pckr8jsd1743qyi8vj04ih1dns5i",
+  "fetcher": "github",
+  "repo": "grimnebulin/emacs-salesforce",
+  "unstable": {
+   "version": [
+    20160814,
+    154
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "73328baf0fb94ac0d0de645a8f6d42e5ae27f773",
+   "sha256": "1zsznz9pn9dj672jii6wcvs47yqyxv3dsm5qy1dax1d6gvvbf4zq"
+  }
+ },
+ {
+  "ename": "salt-mode",
+  "commit": "9dcf1a93a06fc42581521c88cfd988b03bedc000",
+  "sha256": "1n7i9d6qpjsdcgbzmbf63y4c7ggxh5wsim8fd0casnrq9bl7ssym",
+  "fetcher": "github",
+  "repo": "glynnforrest/salt-mode",
+  "unstable": {
+   "version": [
+    20200210,
+    1200
+   ],
+   "deps": [
+    "mmm-jinja2",
+    "mmm-mode",
+    "yaml-mode"
+   ],
+   "commit": "c46b24e7fdf4a46df5507dc9c533bbc0064a46fa",
+   "sha256": "07qnn8svgd0ishajx5dr91mk4nx9fm9phxsv00cjapvpd4f26xn6"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "mmm-jinja2",
+    "mmm-mode",
+    "yaml-mode"
+   ],
+   "commit": "6a1fedb4da7181b00f1bebfc88c87dd2f0c58766",
+   "sha256": "1vygzx7i3cxghji4517sa2v9w5yl84mjpfixf000mf897xpk7288"
+  }
+ },
+ {
+  "ename": "sane-term",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "08b8zlr8qzxfrpg9lqiyam3sb8a8rzak79ra4r6ljjppyj4zmwi7",
+  "fetcher": "github",
+  "repo": "adamrt/sane-term",
+  "unstable": {
+   "version": [
+    20181130,
+    101
+   ],
+   "commit": "46352169bd6d2a86ca9c2052cd05ecd16fc7657b",
+   "sha256": "1k0b1w9a3b89ricji92nq4cqbh1l2fm7ly1bdl8pvf59drp7cpd4"
+  }
+ },
+ {
+  "ename": "sass-mode",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "1byjk5zpzjlyiwkp780c4kh7s9l56y686sxji89wc59d19rp8800",
+  "fetcher": "github",
+  "repo": "nex3/sass-mode",
+  "unstable": {
+   "version": [
+    20190502,
+    53
+   ],
+   "deps": [
+    "cl-lib",
+    "haml-mode"
+   ],
+   "commit": "247a0d4b509f10b28e4687cd8763492bca03599b",
+   "sha256": "1nhk12lhvkwdk8s8fx33p6rssi0gcfx2zkanq23rz6k28v5zi5yp"
+  },
+  "stable": {
+   "version": [
+    3,
+    0,
+    18
+   ],
+   "deps": [
+    "haml-mode"
+   ],
+   "commit": "26a66e331b507fb420e3bb7d0a6a8fbb04294343",
+   "sha256": "0lxrq3mzabkwj5bv0mgd7fnx3dsx8vxd5kjgb79rjfra0m7pfgln"
+  }
+ },
+ {
+  "ename": "sauron",
+  "commit": "9d30dcc4715422133e1bb00ad7a8e25b060387e4",
+  "sha256": "01fk1xfh7r16fb1xg5ibbs7gci9dja49msdlf7964hiq7pnnhxgb",
+  "fetcher": "github",
+  "repo": "djcb/sauron",
+  "unstable": {
+   "version": [
+    20200516,
+    1406
+   ],
+   "commit": "d2e06866d1045fa16015d135b8964d9caacc2985",
+   "sha256": "04z3hn46m6xy3jpfd00c7x24h27dgv5zcysci3lxzmmq9k4iqsg3"
+  },
+  "stable": {
+   "version": [
+    0,
+    10
+   ],
+   "commit": "a9877f0efa9418c41d25002b58d1c2f8c69ec975",
+   "sha256": "1mcag7qad1npjn096byakb8pmmi2g64nlf2vcc12irzmwia85fml"
+  }
+ },
+ {
+  "ename": "save-load-path",
+  "commit": "f8e4328cae9b4759a75da0b26ea8b68821bc71af",
+  "sha256": "1cl9kkv996m2irm9i5n7f020zqzvrsv9dyscc16ca9jsn16msww2",
+  "fetcher": "github",
+  "repo": "rubikitch/save-load-path",
+  "unstable": {
+   "version": [
+    20140206,
+    1214
+   ],
+   "commit": "6cb763a37e2b8af505bff2bcd11fd49c9ea04d66",
+   "sha256": "0rxcg60lxaabdx9gjj17sfxnr09694viphlhhk355dcc4v5ngbdm"
+  }
+ },
+ {
+  "ename": "save-visited-files",
+  "commit": "3f5979e2c2dbfc4e8e3b4d2881cf860c26f63db5",
+  "sha256": "1pmjz27dlp5yrihgsy8q1bwbhkkj3sn7d79ccvljvzxg5jn1grkd",
+  "fetcher": "github",
+  "repo": "nflath/save-visited-files",
+  "unstable": {
+   "version": [
+    20200212,
+    414
+   ],
+   "commit": "8203a05a322324ec17b14437c8dfb38efdb53241",
+   "sha256": "1zc7f5l7i60fpi8vw41xhpnhz5jpiqkk7fdkd2k6lnmv7jnnilfc"
+  }
+ },
+ {
+  "ename": "savekill",
+  "commit": "f8e4328cae9b4759a75da0b26ea8b68821bc71af",
+  "sha256": "14hfqia7d2v1dn1wdwsphrrkq9hc57721irms9s9vinign0pqx7h",
+  "fetcher": "github",
+  "repo": "rubikitch/savekill",
+  "unstable": {
+   "version": [
+    20140418,
+    229
+   ],
+   "commit": "67fc94e3d8fe8ce3ca16f90518f6a46479b63e34",
+   "sha256": "0h8bl28p5xrs9daapcjkslm066a4hqlb764i5nz1db0lwrvr0csm"
+  }
+ },
+ {
+  "ename": "say-what-im-doing",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "0wi7318q7mms4wjbzhnsw298bjh7g957dnra0bvg87vv48pz3yfp",
+  "fetcher": "github",
+  "repo": "Benaiah/say-what-im-doing",
+  "unstable": {
+   "version": [
+    20160706,
+    1931
+   ],
+   "commit": "5b2ce6783b02805bcac1107a149bfba3852cd9d5",
+   "sha256": "0wy4hrc44ajl88krp6qy40szl2kl2wc3xjz3y4n250d1v81k25xi"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "4acc16360a29646040b51db158ba7fdeb711449d",
+   "sha256": "1gkzgcnh5ib4j5206mx8gbwj5ykay19vqlfg9070m2r09d1a55qf"
+  }
+ },
+ {
+  "ename": "sayid",
+  "commit": "9a15a17a5aa78aed72958b2a1bde53f0c0ab5be7",
+  "sha256": "065mxb2la3dq2zqyb8dfksb18fpqym04nnax5rrp19izcw488qsm",
+  "fetcher": "github",
+  "repo": "clojure-emacs/sayid",
+  "unstable": {
+   "version": [
+    20190919,
+    654
+   ],
+   "deps": [
+    "cider"
+   ],
+   "commit": "277404a6bb0a979e195df5886fc143bb1d1f1e8c",
+   "sha256": "0whsfl6z39zhjm6b3wcliwfs70xz3pg9b1r6s2bcwnp5ld1v65m9"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    18
+   ],
+   "deps": [
+    "cider"
+   ],
+   "commit": "5412d0e129337f0f97a5501521f86dd7deee5804",
+   "sha256": "1immns40clz78frsd4dc5ck5n90ac5pfid40bw3phxwr4prhmgf6"
+  }
+ },
+ {
+  "ename": "sbt-mode",
+  "commit": "824a7ac85d5c2b8f1c7643bff4eb5931a4680309",
+  "sha256": "1i0056y27bcjpqrqgjhl14qk53r3ny8zzadsgyw2jqf5jvg561bc",
+  "fetcher": "github",
+  "repo": "hvesalai/emacs-sbt-mode",
+  "unstable": {
+   "version": [
+    20200106,
+    753
+   ],
+   "commit": "633a315ad453cd963588c9b8fba02d9cf75296b4",
+   "sha256": "0ha2lyw42ir16b2d09y27q0rsdx6azcfv258frp1ja63mx0jiqic"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "commit": "e658af140547cbef495c33535c7f694a501d318c",
+   "sha256": "0lv9ridzk9x6rkf7lj21srnszypyq04vqg05vl10zhpz1yqlnbjd"
+  }
+ },
+ {
+  "ename": "scad-mode",
+  "commit": "2d27782b9ac8474fbd4f51535351207c9c84984c",
+  "sha256": "04b4y9jks8sslgmkx54fds8fba9xv54z0cfab52dy99v1301ms3k",
+  "fetcher": "github",
+  "repo": "openscad/openscad",
+  "unstable": {
+   "version": [
+    20190413,
+    1246
+   ],
+   "commit": "648206e2ea609e8f38599cd540368d54ff52ae8a",
+   "sha256": "0vsabvci7y5l1lbqmn0fw301wfnwbb7fw7vffm1gd0w7rjjhxw73"
+  }
+ },
+ {
+  "ename": "scad-preview",
+  "commit": "18a043064223906510adbb837f1be329252dbd50",
+  "sha256": "0wcd2r60ibbc2mzpq8fvyfc1fy172rf9kzdj51p4jyl51r76i86z",
+  "fetcher": "github",
+  "repo": "zk-phi/scad-preview",
+  "unstable": {
+   "version": [
+    20160206,
+    1336
+   ],
+   "deps": [
+    "scad-mode"
+   ],
+   "commit": "fee011589671cc8f1296cb6aa81553e5bb699819",
+   "sha256": "13x00dls59zshz69260pnqmx6ydrjg8p2jdjn1rzgf5dsmwfy3sc"
+  }
+ },
+ {
+  "ename": "scala-mode",
+  "commit": "eb0b5735e9d930502ea7346e29d350ba8068440c",
+  "sha256": "1wnl3ily5qsff36z6fkk86m58w591yc3m2nka22vslafj8m8gwl8",
+  "fetcher": "github",
+  "repo": "hvesalai/emacs-scala-mode",
+  "unstable": {
+   "version": [
+    20190929,
+    1522
+   ],
+   "commit": "46bb948345f165ebffe6ff3116e36a3b8a3f219d",
+   "sha256": "1072lsin7dxadc0xyhy42wd0cw549axbbd4dy95wfmfcc1xbzjwv"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "56cba2903cf6e12c715dbb5c99b34c97b2679379",
+   "sha256": "13miqdn426cw9y1wqaz5smmf0wi3bzls95z6shcxzdz8cg50zmpg"
+  }
+ },
+ {
+  "ename": "scalariform",
+  "commit": "1912f795e5842be534160e3879bfb96f3440e163",
+  "sha256": "096y63j91910hqsy6qvz16c9lzyi7ni3r7h039z5zw2v97aggh9i",
+  "fetcher": "github",
+  "repo": "zwild/scalariform",
+  "unstable": {
+   "version": [
+    20190114,
+    215
+   ],
+   "deps": [
+    "f",
+    "s"
+   ],
+   "commit": "478a15ccb4f825aba73262bccd3e61ce7017f64b",
+   "sha256": "1c76jnj35bkcq2rhdq6d57b7vf6rvn8rpzpx49ywkxz4cx36svv6"
+  }
+ },
+ {
+  "ename": "scf-mode",
+  "commit": "376be7f8903dbea69643600ae14e934ee5e2a11b",
+  "sha256": "0acbrw94q6cr9b29mz1wcbwi1g90pbm7ly2xbaqb2g8081r5rgg0",
+  "fetcher": "github",
+  "repo": "lewang/scf-mode",
+  "unstable": {
+   "version": [
+    20151122,
+    248
+   ],
+   "commit": "dbfcdcd89034f208d65e181af58e0d73ad09f8b2",
+   "sha256": "0m7hanpc2skmsz783m0212xd10y31gkj5n6w8gx9s989l1y4i1b8"
+  }
+ },
+ {
+  "ename": "scheme-complete",
+  "commit": "0fda2b54a0ff0b6fc3bd6d20cfcbbf63cae5380f",
+  "sha256": "1mp9gssd2fx3ra2bjd7w311hwmflhybr5x574qb12603gjkgrp1h",
+  "fetcher": "github",
+  "repo": "ashinn/scheme-complete",
+  "unstable": {
+   "version": [
+    20181029,
+    1255
+   ],
+   "commit": "b86ee41d48664839181498313f4f3dc2fef17d6f",
+   "sha256": "1by7ky8za6idam4m4xgmf0f5ss0cacd7wv53glhmjb4nslxhgl7d"
+  }
+ },
+ {
+  "ename": "schrute",
+  "commit": "505fc4d26049d4e2973a54b24117ccaf4f2fb7e7",
+  "sha256": "1sr49wr3738sqfzix7v9rj6bvv7q2a46qdkimn9z7rnsjys9i7zy",
+  "fetcher": "git",
+  "url": "https://bitbucket.org/shackra/dwight-k.-schrute",
+  "unstable": {
+   "version": [
+    20170521,
+    1840
+   ],
+   "commit": "59faa6c4232ae183cea93237301acad8c0763997",
+   "sha256": "1w5l1vf4cn4psrxgnq5n6j3zw644s70inpa17vsvng3sk5r8crcb"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "commit": "08ab6565fa94f3a8016163fe6f7be1932af1156b",
+   "sha256": "0l1k6wjjr569lk5k8ydwq13041kn889g20qbzf79qj1ws96rim4m"
+  }
+ },
+ {
+  "ename": "scihub",
+  "commit": "93a89f2c198c29fa1b62839f51610eb881d1d0ed",
+  "sha256": "12m2yiwr1hkzwjykm400x549yzkrkqmypfip5xsarawnb87g9czy",
+  "fetcher": "github",
+  "repo": "emacs-pe/scihub.el",
+  "unstable": {
+   "version": [
+    20190801,
+    920
+   ],
+   "commit": "a32e8f47961d606c1315a972f2dab4d3a61945af",
+   "sha256": "06qcs7jq68ylmvw0kf1myhpgzci7i9qbb2h0hxh0g21mz8ssna3f"
+  }
+ },
+ {
+  "ename": "scion",
+  "commit": "faf180d15c3847fc6f832866338494dd99b6654d",
+  "sha256": "17qmc7fpvbamqkzyk8jspp2i0nw93iya4iwddvas7vdpjy7mk81d",
+  "fetcher": "github",
+  "repo": "nominolo/scion",
+  "unstable": {
+   "version": [
+    20130315,
+    1255
+   ],
+   "commit": "99b4589175665687181a932cd836850205625f71",
+   "sha256": "0ark720g0nrdqri5bjdpss6kn6k3hz3w3zdvy334wws05mkb17y4"
+  }
+ },
+ {
+  "ename": "sclang-extensions",
+  "commit": "f2095549944ca28d6a2d6a90d5ab3ba9c27997a8",
+  "sha256": "00nirxawsngvlx7bmf5hqg2wk0l1v5pi09r6phzd0q8gyq3kmbbn",
+  "fetcher": "github",
+  "repo": "chrisbarrett/sclang-extensions",
+  "unstable": {
+   "version": [
+    20160509,
+    338
+   ],
+   "deps": [
+    "auto-complete",
+    "dash",
+    "s"
+   ],
+   "commit": "e9cc79732f16fdb582129303110c163dcc0d6da0",
+   "sha256": "164dn5615bxvya4n58lly9r739va1xzm00wyfg4shcwgnwm3byqb"
+  }
+ },
+ {
+  "ename": "sclang-snippets",
+  "commit": "680e5757e074c16efd31084a7dc5dcea339597f5",
+  "sha256": "0q1bh316v737a0hm9afijk1spvg144cgrf45jm0bpd60zhiv7bb2",
+  "fetcher": "github",
+  "repo": "ptrv/sclang-snippets",
+  "unstable": {
+   "version": [
+    20130513,
+    751
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "c840a416b96f83bdd70491e3d1fbe2f1ae8b3f58",
+   "sha256": "0vbcghgapwdf3jgjnjdla17dhf5mkmwapz4a8fmlr7sw1wqvj857"
+  }
+ },
+ {
+  "ename": "scpaste",
+  "commit": "9007fb32097bc63731c3615dae9342fcef2558a2",
+  "sha256": "02dqmx6v3jxdn5yz1z74624sc6sz2bm4qjyi78w9akhp2jplwlk1",
+  "fetcher": "github",
+  "repo": "technomancy/scpaste",
+  "unstable": {
+   "version": [
+    20200415,
+    40
+   ],
+   "deps": [
+    "htmlize"
+   ],
+   "commit": "ca95a8dd088e848bd1cab6be207c6a98343ee176",
+   "sha256": "01v199xkadcbdr627skhisixdqj0hbbyv912xgyypm1rxdjfhhx9"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    5
+   ],
+   "deps": [
+    "htmlize"
+   ],
+   "commit": "cca8f4ee5402bbf9a4bbb24e81372067cb21bba4",
+   "sha256": "13s8hp16wxd9fb8gf05dn0xr692kkgiqg7v49fgr00gas4xgpfpm"
+  }
+ },
+ {
+  "ename": "scratch",
+  "commit": "b46813f928eadfa08a1d4bf94ceeb96dbc2a7c72",
+  "sha256": "1an30pr64fz13s6lghlcb36b7hn3961vv0yipfp9s140ccygdvh7",
+  "fetcher": "github",
+  "repo": "ieure/scratch-el",
+  "unstable": {
+   "version": [
+    20190314,
+    614
+   ],
+   "commit": "4813d82b39a451f2a6d5b730cd7ec49a9bdabcca",
+   "sha256": "0yiwq2gc4gdgfhaagpawhb7yrzc4fsnyb10w5d0q4whv64cj8555"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "commit": "4813d82b39a451f2a6d5b730cd7ec49a9bdabcca",
+   "sha256": "0yiwq2gc4gdgfhaagpawhb7yrzc4fsnyb10w5d0q4whv64cj8555"
+  }
+ },
+ {
+  "ename": "scratch-ext",
+  "commit": "a142d336a57d075dfd5caf44fa1c1254b83ac728",
+  "sha256": "031wxz10k1q4bi5hywhcw1vzi41d5pv5hc09x8jk9s5nzyssvc0y",
+  "fetcher": "github",
+  "repo": "kyanagi/scratch-ext-el",
+  "unstable": {
+   "version": [
+    20140104,
+    516
+   ],
+   "commit": "388c53cddd0466b451264894667ed64a6947ad67",
+   "sha256": "0ng0by647r49mia7vmjqc97gwlwgs8kmaz0lw2y54jdz8m0bbngp"
+  }
+ },
+ {
+  "ename": "scratch-log",
+  "commit": "bec9692973db8853f9d329aebc0cc9e81bb34003",
+  "sha256": "1yp3p0dzhmqrd0krqii3x79k4zc3p59148cijhk6my4n1xqnhs69",
+  "fetcher": "github",
+  "repo": "mori-dev/scratch-log",
+  "unstable": {
+   "version": [
+    20141115,
+    743
+   ],
+   "commit": "1168f7f16d36ca0f4ddf2bb98881f8db62cc5dc0",
+   "sha256": "030mcq0cmamizvra8jh2x76f71g5apiavwb10c28j62rl0r5bisk"
+  }
+ },
+ {
+  "ename": "scratch-message",
+  "commit": "24c5ff6b643de9fb79334eff57b702281b20bc10",
+  "sha256": "1dl9d4gvicwnb662ir9azywjmmm7xv4d0sz42z7mmwy8hl9hi91b",
+  "fetcher": "github",
+  "repo": "thisirs/scratch-message",
+  "unstable": {
+   "version": [
+    20170107,
+    1336
+   ],
+   "commit": "3ecc7f5e3b8a597ebd1492fd426d3720a7f34302",
+   "sha256": "1kb664r3gbhv2ja8jyyzfw22db99ini8qbgzcy9xsl56lha4x4xi"
+  }
+ },
+ {
+  "ename": "scratch-palette",
+  "commit": "b737bd93008e10ff446b347f405541a6f4127716",
+  "sha256": "0m6hc2amwnnii4y189kkridhapl9jipkmadvrmwvspgy3lxhlafs",
+  "fetcher": "github",
+  "repo": "zk-phi/scratch-palette",
+  "unstable": {
+   "version": [
+    20150225,
+    842
+   ],
+   "deps": [
+    "popwin"
+   ],
+   "commit": "f6803b448079f4a81cc699cec7442ef543cd5818",
+   "sha256": "00b4r8bqlxc29k18vig0164d5c9fp5bp5q26d28lwr4f0s4a71d2"
+  }
+ },
+ {
+  "ename": "scratch-pop",
+  "commit": "420fb3408b64f1a3e42316262016728c483bf0c1",
+  "sha256": "0s7g1fbnc5hgz8gqmp1lynj5g7vvxisj7scxx5wil9qpn2zyggq1",
+  "fetcher": "github",
+  "repo": "zk-phi/scratch-pop",
+  "unstable": {
+   "version": [
+    20200504,
+    2004
+   ],
+   "deps": [
+    "popwin"
+   ],
+   "commit": "1a36cb5ab6668aa57b1b7192521a472feeec1ea2",
+   "sha256": "1hdbwzd52qhn2jc8ghkp0lwr2hzrs4zfnwj6vniffxd5xz3c21ck"
+  }
+ },
+ {
+  "ename": "scratches",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "116bjy1m35h83r2c354i2xk1br87nmvd99kbzax0wgkkkcjff8c4",
+  "fetcher": "github",
+  "repo": "zhangkaiyulw/scratches",
+  "unstable": {
+   "version": [
+    20151006,
+    416
+   ],
+   "deps": [
+    "dash",
+    "f"
+   ],
+   "commit": "9441afe6396ca38f08029123fab5d87429cbf315",
+   "sha256": "10hmy0p4pkrzvvyisk4rjc6hqqyk2sir1rszqgmkhrdywl010vlc"
+  }
+ },
+ {
+  "ename": "scribble-mode",
+  "commit": "6469c2b389d757003da69da727905228eb564d50",
+  "sha256": "0idagikxhr86h2k6fb45zdzg73wpmpiszx0gi6d8jx7s1xqd6s50",
+  "fetcher": "github",
+  "repo": "emacs-pe/scribble-mode",
+  "unstable": {
+   "version": [
+    20190912,
+    200
+   ],
+   "commit": "5c3ea3cc9bbad585476eee41ea76dc056c2012bb",
+   "sha256": "0p7mch1z289hjxmdb4w04sdixkqqvjmrrw92yd6akr551yj0jbhx"
+  }
+ },
+ {
+  "ename": "scroll-on-drag",
+  "commit": "0cc172bb1b4194b66827bf5be0b6658fb330a11a",
+  "sha256": "1i4i19qkin19h2xc1r6a66rsll1rfbbvf2nsm75f9vvvrdi4sjyf",
+  "fetcher": "gitlab",
+  "repo": "ideasman42/emacs-scroll-on-drag",
+  "unstable": {
+   "version": [
+    20200411,
+    1050
+   ],
+   "commit": "42d96a60a207cd73e7a58111358deb05f084c59e",
+   "sha256": "00l2n5kx5p18qdlfh2y355w34yp2fy401canrglz6dq1f7615lnz"
+  }
+ },
+ {
+  "ename": "scrollkeeper",
+  "commit": "d9ad5b16ff61c1f8ba1e030ee0988aa51a437022",
+  "sha256": "16wqlyxznall4kmd8l68q4d11qyilj8vsji36h7llprxa2m9pg12",
+  "fetcher": "github",
+  "repo": "alphapapa/scrollkeeper.el",
+  "unstable": {
+   "version": [
+    20190109,
+    629
+   ],
+   "commit": "3c4ac6b6b44686d31c260ee0b19daaee59bdccd6",
+   "sha256": "18pp4k12g5dyma362461gdp4ds5d3lx9gky2ishsq39949pkz7qz"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "3c4ac6b6b44686d31c260ee0b19daaee59bdccd6",
+   "sha256": "18pp4k12g5dyma362461gdp4ds5d3lx9gky2ishsq39949pkz7qz"
+  }
+ },
+ {
+  "ename": "scrooge",
+  "commit": "7e3623181fa771dc94a7026eb58ac81fe9d9fc68",
+  "sha256": "1gisyfzawrgg55jbwrbnri314f6zd38di19iwy0b2dim8in4sjpg",
+  "fetcher": "github",
+  "repo": "cosmicexplorer/emacs-scrooge",
+  "unstable": {
+   "version": [
+    20180630,
+    1022
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "thrift"
+   ],
+   "commit": "0a8c58e9e6708abe4ef7e415bc1e0472318bb1b0",
+   "sha256": "1my5yz9ppr7d90ad94mkqzkp20c8bym6mdi7jwab2yisbzykmwzc"
+  }
+ },
+ {
+  "ename": "scss-mode",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "1g27xnp6bjaicxjlb9m0njc6fg962j3hlvvzmxvmyk7gsdgcgpkv",
+  "fetcher": "github",
+  "repo": "antonj/scss-mode",
+  "unstable": {
+   "version": [
+    20180123,
+    1708
+   ],
+   "commit": "cf58dbec5394280503eb5502938f3b5445d1b53d",
+   "sha256": "0raja19l0igwr0pn0ghr1pj1d8i9k3m3764ma4r8nwzxcj9qw4ja"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "commit": "d663069667d9b158d56e863b80dd4cc02984e49f",
+   "sha256": "0zpjf9cp8g4rgnwgmhlpwnanf9lzqm3rm1mkihf0gk5qzxvwsdh9"
+  }
+ },
+ {
+  "ename": "sdcv",
+  "commit": "173e233b2dacaaf54d92f3bcc06e54d068520dd4",
+  "sha256": "1bj3b17sjd9fha686g6w191l4p8a1p8sb9br65xf54n6nd9bmv7a",
+  "fetcher": "github",
+  "repo": "stardiviner/sdcv.el",
+  "unstable": {
+   "version": [
+    20190610,
+    732
+   ],
+   "deps": [
+    "cl-lib",
+    "popup",
+    "pos-tip",
+    "showtip"
+   ],
+   "commit": "943ae3e90cc9a0a88a37cc710acd7424fd4defc4",
+   "sha256": "0i1ylvw7p46pkf3yyyzcdmdhsspzymnnnvx8s0i7vynngr5x0vzh"
+  }
+ },
+ {
+  "ename": "sdlang-mode",
+  "commit": "691af79137015f15a3d383439e534e255ba4b36d",
+  "sha256": "1z6n374z55dr2c6xdwgvmpznd5gk9y23k136zmy29b68j2kswj6l",
+  "fetcher": "github",
+  "repo": "CyberShadow/sdlang-mode",
+  "unstable": {
+   "version": [
+    20161201,
+    711
+   ],
+   "commit": "d42a6eedefeb44919fbacf58d302b6df18f05bbc",
+   "sha256": "0r6sm7b15scmjcpdcqvm55hdsvyw5d2g7mrfhsx2hs8sqz64gkwc"
+  }
+ },
+ {
+  "ename": "search-web",
+  "commit": "1f1a3697649ccf69c8eb177c31ec4246b98f503b",
+  "sha256": "0qqx9l8dn1as4gqpq80jfacn6lz0132m91pjzxv0fx6al2iz0m36",
+  "fetcher": "github",
+  "repo": "tomoya/search-web.el",
+  "unstable": {
+   "version": [
+    20150312,
+    1103
+   ],
+   "commit": "c4ae86ac1acfc572b81f3d78764bd9a54034c331",
+   "sha256": "08yc67a4ji7z8s0zh500wiscziqsxi92i1d33fjla2mcr8sxxn0i"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "c4ae86ac1acfc572b81f3d78764bd9a54034c331",
+   "sha256": "08yc67a4ji7z8s0zh500wiscziqsxi92i1d33fjla2mcr8sxxn0i"
+  }
+ },
+ {
+  "ename": "searchq",
+  "commit": "9738c1be0511540bfd8f324334518c72c9c38c94",
+  "sha256": "0flsc07v887pm62mslrv7zqnhl62l6348nkm77mizm1592q3kjgr",
+  "fetcher": "github",
+  "repo": "boyw165/searchq",
+  "unstable": {
+   "version": [
+    20150829,
+    1211
+   ],
+   "commit": "dd510d55ad66a82c6ef022cfe7c4a73ad5365f82",
+   "sha256": "0zs08vxmjb3y4dnfq6djnrhmkgyhhwd5zylrjisrd4y7f089fyh4"
+  }
+ },
+ {
+  "ename": "seclusion-mode",
+  "commit": "b087d151b00f5251b15ebb071896995874afb274",
+  "sha256": "0ff10x6yr37vpp6ffbk1nb027lgmrydwjrb332fskwlf3xmy6v0m",
+  "fetcher": "github",
+  "repo": "dleslie/seclusion-mode",
+  "unstable": {
+   "version": [
+    20121118,
+    2353
+   ],
+   "commit": "9634e76c52bfb7200ff0f9f01404f743429e9ef0",
+   "sha256": "15cjhwjiwmrfzmr74hbw5s92si2qdb8i97nmkbsgkj3444rxg239"
+  }
+ },
+ {
+  "ename": "secretaria",
+  "commit": "3eeddbcf95315da40d021a6913ccf344849c4284",
+  "sha256": "04pcibzdljcfiha4yh10van8gsjrzn6bdkvkm2ahfcwrmscfn3hf",
+  "fetcher": "gitlab",
+  "repo": "shackra/secretaria",
+  "unstable": {
+   "version": [
+    20191128,
+    250
+   ],
+   "deps": [
+    "alert",
+    "f",
+    "org",
+    "s"
+   ],
+   "commit": "03986130a2ada1fa952d45e83536729f20230fcf",
+   "sha256": "10ikd6ksz5adpldyx9h8s3qnwc488rqixzwnd0rjjwqigmllj9lb"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    9
+   ],
+   "deps": [
+    "alert",
+    "f",
+    "s"
+   ],
+   "commit": "91c56311b48a26aa6ef5a113b0a828e174059b0a",
+   "sha256": "1iyq8m75gzyx2ww919i4zl63gajsaczgwax214a1jgf8x91j590k"
+  }
+ },
+ {
+  "ename": "see-mode",
+  "commit": "6ee64e846c471926194fcecc4824a06effc0aa5b",
+  "sha256": "1124x11vxci9mvx3zn56v5h9dhmy7bzd5pilqdgzp3hzjmyydnfi",
+  "fetcher": "github",
+  "repo": "marcelino-m/see-mode",
+  "unstable": {
+   "version": [
+    20180511,
+    41
+   ],
+   "deps": [
+    "language-detection"
+   ],
+   "commit": "b6e72ea90105b03816c334be9e43bb41dcc79abf",
+   "sha256": "1lh8dg02h64s7b18b4yn0jwxd3cid6agqiv17252r3lbgp743n68"
+  }
+ },
+ {
+  "ename": "seeing-is-believing",
+  "commit": "14bb6de5c051a68284ee1a7e25ecb2c7c19ffd3b",
+  "sha256": "05aja5xycb3kpmxyi234l50h98f5m1fil6ll4f2xkpxwv31ba5rb",
+  "fetcher": "github",
+  "repo": "jcinnamond/seeing-is-believing",
+  "unstable": {
+   "version": [
+    20170214,
+    1320
+   ],
+   "commit": "fbbe246c0fda87bb26227bb826eebadb418a220f",
+   "sha256": "1h1b48s2iirswdlvfz41jbflm4x09ksc2lycrc1awzlwd6r8hdhg"
+  }
+ },
+ {
+  "ename": "seethru",
+  "commit": "7945732d9789143b386603dd7c96ef14ba68ddaf",
+  "sha256": "1lcwslkki9s15xr2dmh2iic4ax8ia0j20hjnjmkv612wv04b806v",
+  "fetcher": "github",
+  "repo": "Benaiah/seethru",
+  "unstable": {
+   "version": [
+    20150218,
+    1829
+   ],
+   "deps": [
+    "shadchen"
+   ],
+   "commit": "d87e231f99313bea75b1e69e48c0f32968c82060",
+   "sha256": "0qd462qbqdx53xh3ddf76chiljxf6s43r28v2ix85gsig7nm5pgr"
+  }
+ },
+ {
+  "ename": "sekka",
+  "commit": "350bbb5761b5ba69aeb4acf6d7cdf2256dba95a6",
+  "sha256": "1jj4ly9p7m3xvb31nfn171lbpm9y70y8cbf8p24w0fhv665dx0cp",
+  "fetcher": "github",
+  "repo": "kiyoka/sekka",
+  "unstable": {
+   "version": [
+    20170803,
+    1247
+   ],
+   "deps": [
+    "cl-lib",
+    "concurrent",
+    "popup"
+   ],
+   "commit": "61840b57d9ae32bf8e297b175942590a1319c7e7",
+   "sha256": "05vj12l88s29wnkpvgzlbypv9hkmy1hqgv9hvav6v4kmdykl5w1b"
+  },
+  "stable": {
+   "version": [
+    1,
+    8,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "concurrent",
+    "popup"
+   ],
+   "commit": "d1fd5d47aacba723631d5d374169a45ff2051c41",
+   "sha256": "035rx863cj3hs1lhayff0810cpp6kv8nwc1c0y54gvdk1bb333x0"
+  }
+ },
+ {
+  "ename": "select-themes",
+  "commit": "e4e7d01da10a1a1f7fe563031af5d3f9694cea33",
+  "sha256": "18ydv7240vcqppg1i7n8sy18hy0lhpxz17947kxs7mvj4rl4wd84",
+  "fetcher": "github",
+  "repo": "jasonm23/emacs-select-themes",
+  "unstable": {
+   "version": [
+    20160221,
+    106
+   ],
+   "commit": "236f54287519a3ea6dd7b3992d053e4f4ff5d0fe",
+   "sha256": "1c9yv1kjcd0jrzgw99q9p4kzj980f261mjcsggbcw806wb0iw1xn"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    4
+   ],
+   "commit": "236f54287519a3ea6dd7b3992d053e4f4ff5d0fe",
+   "sha256": "1c9yv1kjcd0jrzgw99q9p4kzj980f261mjcsggbcw806wb0iw1xn"
+  }
+ },
+ {
+  "ename": "selected",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1zk9jvsiw30zqh68xjx2zcc71php68ryiwqmws52ghqiaifj50gf",
+  "fetcher": "github",
+  "repo": "Kungsgeten/selected.el",
+  "unstable": {
+   "version": [
+    20170222,
+    834
+   ],
+   "commit": "03edaeac90bc6000d263f03be3d889b4685e1bf7",
+   "sha256": "1d72vw1dcxnyir7vymr3cfxal5dndm1pmm192aa9bcyrcg7aq39g"
+  }
+ },
+ {
+  "ename": "selectric-mode",
+  "commit": "08922071b9854142eab726302e75f1db2d326ec5",
+  "sha256": "1k4l0lr68rqyi37wvqp1cnfci6jfkz0gvrd1hwbgx04cjgmz56n4",
+  "fetcher": "github",
+  "repo": "rbanffy/selectric-mode",
+  "unstable": {
+   "version": [
+    20200209,
+    2107
+   ],
+   "commit": "bb9e66678f34e9bc23624ff6292cf5e7857e8e5f",
+   "sha256": "1kkxm8ysjcx0vs6lic0lcncr2kcmjmh2n5y8j9303lhzzhh73psg"
+  },
+  "stable": {
+   "version": [
+    1,
+    4,
+    2
+   ],
+   "commit": "bb9e66678f34e9bc23624ff6292cf5e7857e8e5f",
+   "sha256": "1kkxm8ysjcx0vs6lic0lcncr2kcmjmh2n5y8j9303lhzzhh73psg"
+  }
+ },
+ {
+  "ename": "selectrum",
+  "commit": "4273a6e55cf797d1fab1825618aab7e9b6c01886",
+  "sha256": "012jmgr7w6x0gy8ygpzyyk23adyzmr7cknz2w51zjapcilkf6ghv",
+  "fetcher": "github",
+  "repo": "raxod502/selectrum",
+  "unstable": {
+   "version": [
+    20200514,
+    1440
+   ],
+   "commit": "392fb1ba8a594a291854c27d2b6824b04cd0c2e7",
+   "sha256": "1rr7w8jlxsfn2kpryb1ywn066qlc31px1dbwd42hafp6k5cl870n"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "5995a4ba07a7b1b5f661ff050d93ad702f9014a4",
+   "sha256": "105zl102dwbzvk50xh6b824nq6p24kxhky18ghdnk5yi5sv620lm"
+  }
+ },
+ {
+  "ename": "selectrum-prescient",
+  "commit": "5724ebca5ab5a1c3087cc13ae0693548666ed62b",
+  "sha256": "1zr83pq39i56v5bx78cp5cg2lrwz01975ng4h1ziv6nrh9p7vvr0",
+  "fetcher": "github",
+  "repo": "raxod502/prescient.el",
+  "unstable": {
+   "version": [
+    20200404,
+    1550
+   ],
+   "deps": [
+    "prescient",
+    "selectrum"
+   ],
+   "commit": "3ab7605d997fb8337bf5ded2ad960b98ac0e1fd7",
+   "sha256": "081v916gnjvx2rzjbqkqhdwijz57w7iryxzg71729gwvavs25lsv"
+  },
+  "stable": {
+   "version": [
+    4,
+    1
+   ],
+   "deps": [
+    "prescient",
+    "selectrum"
+   ],
+   "commit": "aa3110281a0622fa7b5da115cefb71a319b5b1a0",
+   "sha256": "1rf5cz262hjpck7vpxg15bccdrwrmlhiyxc20liwcjb2ig36nis3"
+  }
+ },
+ {
+  "ename": "semaphore",
+  "commit": "1cffd8c7720e5a262b8635a5fd1ca36766f4c824",
+  "sha256": "0g49ld0j962k66a96z6r6hw1p13r5bxs0wddpr9iciqgjra1jcl7",
+  "fetcher": "github",
+  "repo": "webnf/semaphore.el",
+  "unstable": {
+   "version": [
+    20190607,
+    1949
+   ],
+   "commit": "a069b69018b96d284ce7553cd63350a88ea3679c",
+   "sha256": "0dkqj2xcpqdwi4j99pbif8dypk0mlaxgn7aaw51kw98b52ng93gv"
+  }
+ },
+ {
+  "ename": "semaphore-promise",
+  "commit": "1cffd8c7720e5a262b8635a5fd1ca36766f4c824",
+  "sha256": "0dfwjl6z6k2qrflm19k2y4i69zps3h83an9r8l3lync2kjmgxfrs",
+  "fetcher": "github",
+  "repo": "webnf/semaphore.el",
+  "unstable": {
+   "version": [
+    20190607,
+    2115
+   ],
+   "deps": [
+    "promise",
+    "semaphore"
+   ],
+   "commit": "a069b69018b96d284ce7553cd63350a88ea3679c",
+   "sha256": "0dkqj2xcpqdwi4j99pbif8dypk0mlaxgn7aaw51kw98b52ng93gv"
+  }
+ },
+ {
+  "ename": "semi",
+  "commit": "e78849c2d1df187b7f0ef4c34985a341e640ad3e",
+  "sha256": "01wk3lgln5lac65hp6v83d292bdk7544z23xa1v6a756nhybwv25",
+  "fetcher": "github",
+  "repo": "wanderlust/semi",
+  "unstable": {
+   "version": [
+    20200429,
+    641
+   ],
+   "deps": [
+    "flim"
+   ],
+   "commit": "57a948c5f07e57e78ab3c0e6fd76ffcd591bb4ac",
+   "sha256": "0y73l0zf2lg7kxz7kpbirpipzq007bdrgmlqfrv8najh4q03gf8g"
+  }
+ },
+ {
+  "ename": "seml-mode",
+  "commit": "01f8b8d877ba3164bf20f7f0e56ea564b88f493e",
+  "sha256": "0fmfnglxm57mhynzdsgs14qaxsw3nf83qbz3adknv63qymbfhgbw",
+  "fetcher": "github",
+  "repo": "conao3/seml-mode.el",
+  "unstable": {
+   "version": [
+    20200419,
+    1022
+   ],
+   "deps": [
+    "htmlize",
+    "impatient-mode",
+    "web-mode"
+   ],
+   "commit": "4ca9d275948898602640a46573cb95d7eef913e5",
+   "sha256": "1wl5qsph19i0ll2ppn9va4563m4bfz1zpv99d7xd7w65x6cp29ci"
+  },
+  "stable": {
+   "version": [
+    1,
+    5,
+    0
+   ],
+   "deps": [
+    "htmlize",
+    "simple-httpd"
+   ],
+   "commit": "f62f7a9f5e18ef8f370444a1fce710770227b0f5",
+   "sha256": "037p2kiwkkbk921ik15jalcci0p87q3my9mxzyh6i0mnc6qsh4zf"
+  }
+ },
+ {
+  "ename": "sendto",
+  "commit": "31f7c2f97dd186cb77dc8a106baf5e087792c6ab",
+  "sha256": "00ifasqpmggr4bhdyymzr215840y0ayfnfp0mh7wj99mr6f3zfq0",
+  "fetcher": "github",
+  "repo": "lujun9972/sendto.el",
+  "unstable": {
+   "version": [
+    20160425,
+    1250
+   ],
+   "commit": "076b81d7a53f75b0a59b0ef3448f35570567054c",
+   "sha256": "13qqprxz87cv3sjlq5hj0jp0qcfm3djfgasga8cc84ykrcc47p9f"
+  }
+ },
+ {
+  "ename": "sensitive",
+  "commit": "5e5468ce136fabe59e1434f8a7f265f41c5e64c1",
+  "sha256": "0v988k0x3mdp7ank2ihghphh8sanvv96s4sg6pnszg5hczak1vr3",
+  "fetcher": "github",
+  "repo": "timvisher/sensitive.el",
+  "unstable": {
+   "version": [
+    20170818,
+    1251
+   ],
+   "deps": [
+    "sequences"
+   ],
+   "commit": "69dd6125a41d8b55f4b6ba61daa4d1aa1f716fa8",
+   "sha256": "0nj71ds4frfi16hsfswmp89rfxkvvdvhdlsqizzi9cbvr49s0l1f"
+  }
+ },
+ {
+  "ename": "sentence-navigation",
+  "commit": "3d097cf9b6c9c1606505d3988a2afdd7b066abc8",
+  "sha256": "1p3ch1ab06v038h130fsxpbq45d1yadl67i2ih4l4fh3xah5997m",
+  "fetcher": "github",
+  "repo": "noctuid/emacs-sentence-navigation",
+  "unstable": {
+   "version": [
+    20180408,
+    1619
+   ],
+   "deps": [
+    "ample-regexps",
+    "cl-lib"
+   ],
+   "commit": "7c5d2edeaed01196aec25031782e89adeaa089f0",
+   "sha256": "15za4fg7c8fsih86wz1npyx6gdmw0xhizklfsyfh84416dsmgswp"
+  }
+ },
+ {
+  "ename": "seoul256-theme",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1nvhnyfvmpqg0a54nq73lhz3h9g94zkbix13bbzv9bp1lg8v6w1x",
+  "fetcher": "github",
+  "repo": "anandpiyer/seoul256-emacs",
+  "unstable": {
+   "version": [
+    20180505,
+    757
+   ],
+   "commit": "d28a9de73a5ffb1a1c9492db75a5c1efe5e9815f",
+   "sha256": "0jn3a7m8ld07280mc7nkyahagwhvhrcshrpsb8k1ycdwd1r3zqw5"
+  }
+ },
+ {
+  "ename": "separedit",
+  "commit": "297ba98f4bc011948c34aad30ae28b7adc611938",
+  "sha256": "00p4crbzr5fkcj8lhpfd9w44ynpmhd9fay9yrwgz0yh87lll6nqx",
+  "fetcher": "github",
+  "repo": "twlz0ne/separedit.el",
+  "unstable": {
+   "version": [
+    20200407,
+    728
+   ],
+   "deps": [
+    "dash",
+    "edit-indirect"
+   ],
+   "commit": "e9a7b4402859d73f052330106d29ad14c3d9b6f3",
+   "sha256": "0d9w8n497j6q879rd9mqrmzvk3ssm95ayqbyfb5x0r3pnywdjp1b"
+  }
+ },
+ {
+  "ename": "sequences",
+  "commit": "4cf716df68fb2d6a41fe75fac0b41e356bddcf30",
+  "sha256": "12wnkywkmxfk2sx40h90k53d5qmc8hiky5vhlyf0ws3n39zvhplh",
+  "fetcher": "github",
+  "repo": "timvisher/sequences.el",
+  "unstable": {
+   "version": [
+    20170818,
+    1252
+   ],
+   "commit": "564ebbd93b0beea4e75acfbf824350e90b5d5738",
+   "sha256": "0ym2bl9dpsglz35is0iwxfw5w7zs9398bkln8lgv28nr6kw0ym4s"
+  }
+ },
+ {
+  "ename": "sequential-command",
+  "commit": "ad10a684b4b2f01bc65883374f36fef156ff55d2",
+  "sha256": "0qhrpwcgn89sqdj8yhgax0qk81ycdanlgwx25cxy8wnxkqqcvh9m",
+  "fetcher": "github",
+  "repo": "rubikitch/sequential-command",
+  "unstable": {
+   "version": [
+    20170926,
+    40
+   ],
+   "commit": "a48cbcbe273b33edd3ae56e68f44b4100fa3a48a",
+   "sha256": "1f05amz22klvs2yqyw7n5bmivgdn5zc7vkv5x6bgc9b5k977lggj"
+  }
+ },
+ {
+  "ename": "servant",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "0h8xsg37cvc5r8vkclf7d3gbf6gh4k5pmbiyhwpkbrxwjyl1sl21",
+  "fetcher": "github",
+  "repo": "cask/servant",
+  "unstable": {
+   "version": [
+    20140216,
+    1219
+   ],
+   "deps": [
+    "ansi",
+    "commander",
+    "dash",
+    "epl",
+    "f",
+    "s",
+    "shut-up",
+    "web-server"
+   ],
+   "commit": "4d2aa8250b54b28e6e7ee4cd5ebd98a33db2c134",
+   "sha256": "15lx6qvmq3vp84ys8dzbx1nzxcnzlq41whawc2yhrnd1dbq4mv2d"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "ansi",
+    "commander",
+    "dash",
+    "epl",
+    "f",
+    "s",
+    "shut-up",
+    "web-server"
+   ],
+   "commit": "4d2aa8250b54b28e6e7ee4cd5ebd98a33db2c134",
+   "sha256": "15lx6qvmq3vp84ys8dzbx1nzxcnzlq41whawc2yhrnd1dbq4mv2d"
+  }
+ },
+ {
+  "ename": "serverspec",
+  "commit": "5a4f4757d8886d178a85d4bc8ac9399a99d8c4d4",
+  "sha256": "001d57yd0wmz4d7qmhnanac8g29wls0sqw194003hrgirakg82id",
+  "fetcher": "github",
+  "repo": "k1LoW/emacs-serverspec",
+  "unstable": {
+   "version": [
+    20150623,
+    1155
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "helm",
+    "s"
+   ],
+   "commit": "b6dfe82af9869438de5e5d860ced196641f372c0",
+   "sha256": "1h58q41wixjlapia1ggf83jxcllq7492k55mc0fq7hbx3hw1q1y2"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    7
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "helm",
+    "s"
+   ],
+   "commit": "b6dfe82af9869438de5e5d860ced196641f372c0",
+   "sha256": "1h58q41wixjlapia1ggf83jxcllq7492k55mc0fq7hbx3hw1q1y2"
+  }
+ },
+ {
+  "ename": "services",
+  "commit": "beb91b4397f6e35a1d5c73a127d8cd7fc9201935",
+  "sha256": "02lgmpbw52ps6z4p9gwzvh9iaxisq5mb0n9aml9ajxac1473vpcd",
+  "fetcher": "github",
+  "repo": "davep/services.el",
+  "unstable": {
+   "version": [
+    20170802,
+    1130
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "04c7986041a33dfa0b0ae57c7d6fbd600548c596",
+   "sha256": "0ycfkskkdlmc0l75z5a8f66wq5mvb24c4kz19a6kqs8rwm2ygz35"
+  },
+  "stable": {
+   "version": [
+    1,
+    7
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "514e4095e8964c4d0f38c4f3ad6c692e86d12faa",
+   "sha256": "1k6w2ghi1iczh65bbln5ryxwnxmkkjm3p0p54s155q9sjidiqlwb"
+  }
+ },
+ {
+  "ename": "sesman",
+  "commit": "31110e9bd82ad9c817e6cb597fa9c26c4cdc93ed",
+  "sha256": "106jcdsp7rhkr4bbyprcld5fxcnimfcyx0cwcpzhd0b4vh3v3qvg",
+  "fetcher": "github",
+  "repo": "vspinu/sesman",
+  "unstable": {
+   "version": [
+    20190909,
+    1754
+   ],
+   "commit": "edee869c209c016e5f0c5cbb8abb9f3ccd2d1e05",
+   "sha256": "16d4kkfmrzc4d0smk9m759mv11bvicixrvwh1za7c6avscg9lym2"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    4
+   ],
+   "commit": "3df33018f1c42f09db21cebe39a25b389fe35f02",
+   "sha256": "0z5jb4vpbjsi63w3wjy6d2lgz33qdfvrgfb3bszv4hcf6a96y7fc"
+  }
+ },
+ {
+  "ename": "session",
+  "commit": "5f2a50f62475639af011c99c6cc38928b74b3b0a",
+  "sha256": "0fghxbnf1d5iyrx1q8xd0lbw9nvkdgg2v2f89j6apnawisrsbhwx",
+  "fetcher": "github",
+  "repo": "emacsorphanage/session",
+  "unstable": {
+   "version": [
+    20120511,
+    0
+   ],
+   "commit": "19ea0806873daac3539a4b956e15655e99e3dd6c",
+   "sha256": "0sp952abz7dkq8b8kkzzmnwnkq5w15zsx5dr3h8lzxb92lnank9v"
+  },
+  "stable": {
+   "version": [
+    2,
+    3,
+    1
+   ],
+   "commit": "19ea0806873daac3539a4b956e15655e99e3dd6c",
+   "sha256": "0sp952abz7dkq8b8kkzzmnwnkq5w15zsx5dr3h8lzxb92lnank9v"
+  }
+ },
+ {
+  "ename": "seti-theme",
+  "commit": "088924b78575359996cf30745497b287cfb11f37",
+  "sha256": "1mwkx3hynabwr0a2rm1bh91h7xf38a11h1fb6ys8s3mnr68csd9z",
+  "fetcher": "github",
+  "repo": "caisah/seti-theme",
+  "unstable": {
+   "version": [
+    20190201,
+    1848
+   ],
+   "commit": "9d76db0b91d4f574dd96ac80fad41da35bffa109",
+   "sha256": "14fqkkvjbq2gj737k3yz3s0dkya33fi0dj4wds99zyzss2xp37f8"
+  }
+ },
+ {
+  "ename": "sexp-diff",
+  "commit": "d29e4d21bf808a74bef27ee00d500ec1f816be74",
+  "sha256": "0cr35b7k6a5japm14bjgnw93g1kqggzwlqwwr0mhg73klnn6qyn8",
+  "fetcher": "github",
+  "repo": "xuchunyang/sexp-diff.el",
+  "unstable": {
+   "version": [
+    20200314,
+    2018
+   ],
+   "commit": "7e8c988bea2af209e17b70fa51316ade55529acb",
+   "sha256": "1daz6jss2346a2p30fhc66m230sj7vyxm7jw6zqz5n8h9lqxpjyk"
+  }
+ },
+ {
+  "ename": "sexp-move",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0sdm3kr4594fy9hk8yljj2iwa40bgs8nqpwwl2a60r060spz54z9",
+  "fetcher": "gitlab",
+  "repo": "elzair/sexp-move",
+  "unstable": {
+   "version": [
+    20150915,
+    1730
+   ],
+   "commit": "117f7a91ab7c25e438413753e916570122011ce7",
+   "sha256": "11h5z2gmwq07c4gqzj2c9apksvqk3k8kpbb9kg78bbif2xfajr3m"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    6
+   ],
+   "commit": "117f7a91ab7c25e438413753e916570122011ce7",
+   "sha256": "11h5z2gmwq07c4gqzj2c9apksvqk3k8kpbb9kg78bbif2xfajr3m"
+  }
+ },
+ {
+  "ename": "sexy-monochrome-theme",
+  "commit": "dfd5ae9a93e036d11899c7adffdf6b63c2b21381",
+  "sha256": "0rlx4029zxrnzzqspn8zrp3q6w0n46q24qk7za46hvxdsmgdpxbq",
+  "fetcher": "github",
+  "repo": "voloyev/sexy-monochrome-theme",
+  "unstable": {
+   "version": [
+    20200115,
+    2146
+   ],
+   "commit": "f3ad07d60c966ef34cb11026eaba053e114bb8f1",
+   "sha256": "1lq7csb5dgpy9hd6dw1ds5klmp88zqyk9x97hg1llzic6rkkfjrr"
+  },
+  "stable": {
+   "version": [
+    3,
+    1
+   ],
+   "commit": "f64714a176d9212c9fa82355dd8ec89587ce13f0",
+   "sha256": "17ahrdyk2v7vz13b4934xn8xjza4b7bfrkq8n42frq3pc8mgwqfd"
+  }
+ },
+ {
+  "ename": "sfz-mode",
+  "commit": "6e61f77045deaf0dd6a344911b73cf5b1a779a52",
+  "sha256": "1x7873xvqwj1nwp18pj50bp2s9djqbqzp37fr2hjx2rygfvpxzmg",
+  "fetcher": "github",
+  "repo": "sfztools/emacs-sfz-mode",
+  "unstable": {
+   "version": [
+    20200312,
+    1153
+   ],
+   "commit": "4d8ccde889b112896c7299cad9f1e9305bde8cb3",
+   "sha256": "1ccqb05xmnxpwxl9vdvkb3f8211kbj5rsb73xv1ghyx3i40qjmzm"
+  }
+ },
+ {
+  "ename": "shackle",
+  "commit": "20b2cc78b41a26e434b984943681fea774fd3c50",
+  "sha256": "0fjkp5vawxc1q1pmvzchiqwxq8rdaq463sa5ks0r7x7cxwnp8zx6",
+  "fetcher": "git",
+  "url": "https://depp.brause.cc/shackle.git",
+  "unstable": {
+   "version": [
+    20200506,
+    1231
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "4b81514191dd182a28a3e5b2fe3069264b6835fe",
+   "sha256": "0k3waffnd08x1vb7mj6ix21zcadn9ipx4fis26iy3dsj35cbd3fb"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    3
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "242bacc940c18b6f9c156e1912155d45537fd827",
+   "sha256": "0qqx8py21jaq1bdafkfqx18ns4zn305qg84zbmy65spiqnfq8hwk"
+  }
+ },
+ {
+  "ename": "shadchen",
+  "commit": "8a2a36fbfcf457eab05c1ff31cb9c2f68686094e",
+  "sha256": "1r1mfmv4cdlc8kzjiqz81kpqdrwbnyciwdgg6n5x0yi4apwpvnl4",
+  "fetcher": "github",
+  "repo": "VincentToups/shadchen-el",
+  "unstable": {
+   "version": [
+    20141102,
+    1839
+   ],
+   "commit": "35f2b9c304eec990c16efbd557198289dc7cbb1f",
+   "sha256": "0phivbhjdw76gzrx35rp0zybqfb0fdy2hjllf72qf1r0r5gxahl8"
+  }
+ },
+ {
+  "ename": "shader-mode",
+  "commit": "4396f3c10a38f91d5f98684efbeb02812e479209",
+  "sha256": "12y84fa1wc82js53rpadaysmbshhqf6wb97889qkksx19n3xmb9g",
+  "fetcher": "github",
+  "repo": "midnightSuyama/shader-mode",
+  "unstable": {
+   "version": [
+    20180518,
+    1157
+   ],
+   "commit": "d7dc8d0d6fe8914e8b6d5cf2081ad61e6952359c",
+   "sha256": "13scj6w3vsdcgmq7zak3pflqpq295wgzsng72rcafgkkr7r12rar"
+  }
+ },
+ {
+  "ename": "shadowenv",
+  "commit": "b2651055ab67448f90a93cf594342b8212202b82",
+  "sha256": "1qxnbvpnvk3666hwfrh4pnfgb2mrfha6hiri8zfdspdh8g535ygq",
+  "fetcher": "github",
+  "repo": "Shopify/shadowenv.el",
+  "unstable": {
+   "version": [
+    20190903,
+    1907
+   ],
+   "commit": "f3cbe25c82f99367ac009d67a2400eb6d56547ff",
+   "sha256": "10y7qcb61f0x17fy5h2flhvyyql99cshqmfy1varn1mgg2h36mn9"
+  }
+ },
+ {
+  "ename": "shakespeare-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1sg8n4ifpi36zmf6b6s0swq7k3r038cmj8kxjm7hpgxq6f9qnk9x",
+  "fetcher": "github",
+  "repo": "CodyReichert/shakespeare-mode",
+  "unstable": {
+   "version": [
+    20180704,
+    2138
+   ],
+   "commit": "c442eeea9d585e1b1fbb8813e33d47feec348a57",
+   "sha256": "1ba9xy5jwn8ni8fi2k144j669jp95k2qf9ip77r16rsiy7divl0y"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "commit": "c442eeea9d585e1b1fbb8813e33d47feec348a57",
+   "sha256": "1ba9xy5jwn8ni8fi2k144j669jp95k2qf9ip77r16rsiy7divl0y"
+  }
+ },
+ {
+  "ename": "shampoo",
+  "commit": "19f145113a0698466e706a6a4c55d63cec512706",
+  "sha256": "01ssgw4cnnx8d86g3r1d5hqcib4qyhmpqvcvx47xs7zh0jscps61",
+  "fetcher": "github",
+  "repo": "dmatveev/shampoo-emacs",
+  "unstable": {
+   "version": [
+    20131230,
+    1019
+   ],
+   "commit": "bc193c39636c30182159c5c91c37a9a4cb50fedf",
+   "sha256": "15a8gs4lrqxn0jyfw16rc6vm7z1i10pzzlnp30x6nly9a7xra47x"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "commit": "9bf488ad4025beef6eef63d2d5b72bc1c9b9e142",
+   "sha256": "11g9lsgakq8nf689k49p9l536ffi62g3bh11mh9ix1l058xamqw2"
+  }
+ },
+ {
+  "ename": "share2computer",
+  "commit": "47647167cc7b9d7ad0a2fc4785849f69dc07d6cb",
+  "sha256": "067xc1awknx9iqwd4lfj1gkni6aszzfr1179avzzfn1ggp7yzkmq",
+  "fetcher": "github",
+  "repo": "tumashu/share2computer",
+  "unstable": {
+   "version": [
+    20200316,
+    31
+   ],
+   "commit": "15da47625a800e3310b8dc714bd4e41e32966d6a",
+   "sha256": "04h8vhg0fxabjlqgfqsvxkgsmkcp5qmcinxg46xib386r7rzrx4g"
+  }
+ },
+ {
+  "ename": "shell-command",
+  "commit": "ae489be43b1aee93614e40f492ebdf0b98a3fbc1",
+  "sha256": "01nviashfr64wm78zi3vrqrqdqgsamp76d9kasxv0b7fqmfx7yjk",
+  "fetcher": "github",
+  "repo": "emacsorphanage/shell-command",
+  "unstable": {
+   "version": [
+    20090830,
+    1040
+   ],
+   "commit": "7e22125f746ce9ffbe9b0282d62f4b4bbbe672bd",
+   "sha256": "1my2i26a03z8xyyacsnl5wdylnbhhvazn23bpy639d3l4x4l7jzw"
+  }
+ },
+ {
+  "ename": "shell-current-directory",
+  "commit": "edcb78c3491a5999b39a40087b7f991c2b737e30",
+  "sha256": "0bj2gs96ivm5x8l7gwvfckyalr1amh4cb1v2dbl323zmrqddhgkd",
+  "fetcher": "github",
+  "repo": "metaperl/shell-current-directory",
+  "unstable": {
+   "version": [
+    20140101,
+    2354
+   ],
+   "commit": "bf843771bf9a4aa05e054ade799eb8862f3be89a",
+   "sha256": "1w42j5cdddr0riz1xjq3wiz5i9f71i9jdzd1l92ir0mlj05wjyic"
+  }
+ },
+ {
+  "ename": "shell-here",
+  "commit": "88df6e04614547a59aefbeae88c301f3b8394039",
+  "sha256": "0csi70v89bqdpbsizji6c5z0jmkx4x4vk1zfclkpap4dalmxxcsh",
+  "fetcher": "github",
+  "repo": "ieure/shell-here",
+  "unstable": {
+   "version": [
+    20191011,
+    1959
+   ],
+   "commit": "88b80deb1337a97b403b20fc467fa2d579b3bfd5",
+   "sha256": "1x9zcxsc6cnh0h051377asbqhcx3mzcarrnj9zmyg6fcszgas5v1"
+  }
+ },
+ {
+  "ename": "shell-history",
+  "commit": "ae489be43b1aee93614e40f492ebdf0b98a3fbc1",
+  "sha256": "1cmk8rymnj7dscxjq0p23jgwc16yvzw1804ya5wsg95v239gz1hy",
+  "fetcher": "github",
+  "repo": "emacsorphanage/shell-history",
+  "unstable": {
+   "version": [
+    20100505,
+    839
+   ],
+   "commit": "ee371a81f2d2bf5a308344078329ca1e9b5ed38c",
+   "sha256": "0jyz31j5a07shcf2ym5gnn16xk5r3s84ls8kxk5myvxi3wkpgdd4"
+  }
+ },
+ {
+  "ename": "shell-pop",
+  "commit": "44150bddc9b276ab9fb2ab6a92a11383a3ed03b0",
+  "sha256": "02s17ln0hbi9gy3di8fksp3mqc7d8ahhf5vwyz4vrc1bg77glxw8",
+  "fetcher": "github",
+  "repo": "kyagi/shell-pop-el",
+  "unstable": {
+   "version": [
+    20200315,
+    1139
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "4b4394037940a890a313d715d203d9ead2d156a6",
+   "sha256": "0s77n6b9iw1x3dv91ybkpgy3zvqd12si7zw3lg0m2b6j1akrawsg"
+  },
+  "stable": {
+   "version": [
+    0,
+    64
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "4a3a9d093ad1add792bba764c601aa28de302b34",
+   "sha256": "1ybvg048jvijcg9jjfrbllf59pswmp0fd5zwq5x6nwg5wmggplzd"
+  }
+ },
+ {
+  "ename": "shell-split-string",
+  "commit": "84e20f4d02c69f8caf39cd20a581be3b9fa79931",
+  "sha256": "1yj1h7za4ylxh2nikj7s1qqlilpsk05x9571a2fymfyznm3iq77m",
+  "fetcher": "github",
+  "repo": "10sr/shell-split-string-el",
+  "unstable": {
+   "version": [
+    20151224,
+    1008
+   ],
+   "commit": "19f6f999c33cc66a4c91bacdcc3697c25d97bf5a",
+   "sha256": "16srngml5xmpaxb0wzhx91jil0r0dmn673bwai3lzxrkmjnl748l"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "6d01c9249853fe1f8fd925ee80f97232d4e3e5eb",
+   "sha256": "0mcxp74sk9bn36gbhhimgns07iqa4dgbq2pvpqy41igqwb84w306"
+  }
+ },
+ {
+  "ename": "shell-switcher",
+  "commit": "a16194f6ddc05350b9875f4e0a3a0383c79e650e",
+  "sha256": "07g9naiv2jk9jxwjywrbb05dy0pbfdx6g8pkra38rn3vqrjzvhyx",
+  "fetcher": "github",
+  "repo": "DamienCassou/shell-switcher",
+  "unstable": {
+   "version": [
+    20161029,
+    552
+   ],
+   "commit": "28a7f753dd7addd2933510526f52620cb5a22048",
+   "sha256": "1x7rrf56hjasciim8rj29vfngwis4pr3mhclvxd4sbmhz9y66wm0"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "commit": "2c5575ae859a82041a4bacd1793b844bfc24c34f",
+   "sha256": "0ia7sdip4hl27avckv3qpqgm3k4ynvp3xxq1cy53bqfzzx0gcria"
+  }
+ },
+ {
+  "ename": "shell-toggle",
+  "commit": "95873d90886d2db5cc1d83d4bcb8dd5c2e65bc3e",
+  "sha256": "1ai0ks7smr8b221j9hmsikswpxqraa9b13fpwv4wwagavnlah446",
+  "fetcher": "github",
+  "repo": "knu/shell-toggle.el",
+  "unstable": {
+   "version": [
+    20150226,
+    1411
+   ],
+   "commit": "0d01bd9a780fdb7fe6609c552523f4498649a3b9",
+   "sha256": "0ssaccdacabpja9nqzhr8x8ggfwmlian7y4p0fa6gvr7qsvjpgr9"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    1
+   ],
+   "commit": "9820b0ad6f22c700759555aae8a454a7dc5a46b3",
+   "sha256": "0wvaa5nrbblayjvzjyj6cd942ywg7xz5d8fqaffxcvwlcdihvm7q"
+  }
+ },
+ {
+  "ename": "shelldoc",
+  "commit": "551623175e55629be6cfe44a595f25f09bd889e8",
+  "sha256": "1xlp03aaidp7dp8349v8drzhl4lcngvxgdrwwn9cahfqlrvvbbbx",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-shelldoc",
+  "unstable": {
+   "version": [
+    20200513,
+    1206
+   ],
+   "deps": [
+    "cl-lib",
+    "s"
+   ],
+   "commit": "fa69f67b6229fad3f31d936955ca8d1982009b77",
+   "sha256": "0ma5j74vkwax9ha945dcgbmf3r4gajj4nvl63pbfyvxvy6svn84r"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    5
+   ],
+   "deps": [
+    "cl-lib",
+    "s"
+   ],
+   "commit": "1d40c73969347586906ca1dde2adb50afcd73b1b",
+   "sha256": "1nli26llyfkj1cz2dwn18c5pz1pnpz3866hapfibvdmwrg4z6cax"
+  }
+ },
+ {
+  "ename": "shelltest-mode",
+  "commit": "af6dcd4fc0663a255bd85b247bbdf57d425efdb7",
+  "sha256": "1inb0vq34fbwkr0jg4dv2lljag8djggi8kyssrzhfawri50m81nh",
+  "fetcher": "github",
+  "repo": "rtrn/shelltest-mode",
+  "unstable": {
+   "version": [
+    20180501,
+    141
+   ],
+   "commit": "5fea8c9394380e822971a171905b6b5ab9be812d",
+   "sha256": "1np65a92n4y9i0nr8wymzn6md9xqmi9qyggya7sz0q4nzsh45wqg"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "fead97c7ff1b39715ec033a793de41176f1788f5",
+   "sha256": "0mn7bwvj1yv75a2531jp929j6ypckdfqdg6b5ig0kkbcrrwb7kxs"
+  }
+ },
+ {
+  "ename": "shen-elisp",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "045nawzyqaxd3g5f56fxfy680pl18x67w0wi28nrq4l4681w9xyq",
+  "fetcher": "github",
+  "repo": "deech/shen-elisp",
+  "unstable": {
+   "version": [
+    20180915,
+    2028
+   ],
+   "commit": "73b74c8d6e3a2ea34b667d177d9f130765bfe501",
+   "sha256": "1ym048cmkghx373fb7n5m6r73q5nfa62m10mqr4nzhsizgyzdbrn"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "ffe17dee05f75539cf5e4c59395e4c7400ececaa",
+   "sha256": "10dq3qj1q8i6f604zws97xrvjxwrdcjj3ygh6xpna00cvf40llc2"
+  }
+ },
+ {
+  "ename": "shfmt",
+  "commit": "a20dde08de1a7cd70739a791e1ae321e8f152685",
+  "sha256": "1k4rr658473vd6xad2z40dl7f26sb1zv9nc1938cg61pqi10bjan",
+  "fetcher": "github",
+  "repo": "purcell/emacs-shfmt",
+  "unstable": {
+   "version": [
+    20200421,
+    103
+   ],
+   "deps": [
+    "reformatter"
+   ],
+   "commit": "342c55fab27f1e62472eebbb53cfc73b0d422a34",
+   "sha256": "0hmxa856hlai9ydarfsn5s9i8cnfrydgpa7mkh4a36klhdj21gfh"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "reformatter"
+   ],
+   "commit": "cd94266badc71c1e981e904e10f28c6a80237a2f",
+   "sha256": "09w50l938phcpxvbg4ahyxl43k995ywavwac364nmcnvmip021qy"
+  }
+ },
+ {
+  "ename": "shift-number",
+  "commit": "b06be6b25078ddfabc1ef1145c817552f679c41c",
+  "sha256": "1sbzkmd336d0dcdpk29pzk2b5bhlahrn083x62l6m150n2xzxn4p",
+  "fetcher": "github",
+  "repo": "alezost/shift-number.el",
+  "unstable": {
+   "version": [
+    20170301,
+    1459
+   ],
+   "commit": "cd099a5582fc996b800ac7607f6c38a004ce9740",
+   "sha256": "131by7z6303m81kjhy8rnfvwyzfbxglc19xb90jdks4vgczqkcah"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "ba3c1f2e6b01bf14aa1433c2a49098af1c025f7c",
+   "sha256": "0zlwmzsxkv4mkggylxfx2fkrwgz7dz3zbg2gkn2rxcpy2k2gla64"
+  }
+ },
+ {
+  "ename": "shift-text",
+  "commit": "2ad2ea105b895cb958ce0ab2bf2fad2b40d41b2f",
+  "sha256": "1v9zk7ycc8k1qk1cfs2y1knygl686msmlilqy5a7mh0w0z9f3a2i",
+  "fetcher": "github",
+  "repo": "sabof/shift-text",
+  "unstable": {
+   "version": [
+    20130831,
+    1655
+   ],
+   "deps": [
+    "cl-lib",
+    "es-lib"
+   ],
+   "commit": "1be9cbf994000022172ceb746fe1d597f57ea8ba",
+   "sha256": "13zsws8gq9a8nfk4yzlvfsvqjh9zbnanmw68rcna93yc5nc634nr"
+  }
+ },
+ {
+  "ename": "shimbun",
+  "commit": "c5a423647410357f0e63afba5b52bbe880fce969",
+  "sha256": "04d9kkj4fididhq220c1vjmlzmaqnii95c1ca86kzjbm2bqakkcd",
+  "fetcher": "github",
+  "repo": "emacs-w3m/emacs-w3m",
+  "unstable": {
+   "version": [
+    20200406,
+    2209
+   ],
+   "commit": "e522a44b151d69d4a176e8809225598ab540fc4d",
+   "sha256": "1alishzz4j1hbfyfi09rkhffx6gv16yxln7q8jx25shb9rssivyz"
+  }
+ },
+ {
+  "ename": "shm",
+  "commit": "68a2fddb7e000487f022b3827a7de9808ae73e2a",
+  "sha256": "1qmp8cc83dcz25xbyqd4987i0d8ywvh16wq2wfs4km3ia8a2vi3c",
+  "fetcher": "github",
+  "repo": "chrisdone/structured-haskell-mode",
+  "unstable": {
+   "version": [
+    20180327,
+    57
+   ],
+   "commit": "7f9df73f45d107017c18ce4835bbc190dfe6782e",
+   "sha256": "1jcc30048j369jgsbbmkb63whs4wb37bq21jrm3r6ry22izndsqa"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    20
+   ],
+   "commit": "8abc5cd73e59ea85bef906e14e87dc388c4f350f",
+   "sha256": "1vf766ja8f4xp1f5pmwgz6a85km0nxvc5dn571lwidfrrdbr9rkk"
+  }
+ },
+ {
+  "ename": "shoulda",
+  "commit": "41497a876c80d81d9562ea4b2cc2a83dba98ae8a",
+  "sha256": "0lmlhx34nwvn636y2wvw3sprhhh6q3mdg7dzgpjj7ybibvhp1lzk",
+  "fetcher": "github",
+  "repo": "marcwebbie/shoulda.el",
+  "unstable": {
+   "version": [
+    20140616,
+    1833
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "fbe8eb8efc6cfcca1713283a290882cfcdc8725e",
+   "sha256": "19p47a4hwl6h2w5ay09hjhl4kf7cydwqp8s2iyrx2i0k58az8i8i"
+  }
+ },
+ {
+  "ename": "show-css",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "0sq15l58macy2affdgbimnchn491fnrqr3bbgn30k3l3xkvkmc7k",
+  "fetcher": "github",
+  "repo": "8cylinder/showcss-mode",
+  "unstable": {
+   "version": [
+    20160210,
+    1408
+   ],
+   "deps": [
+    "doom",
+    "s"
+   ],
+   "commit": "771daeddd4df7a7c10f66419a837145649bab63b",
+   "sha256": "11kzjm12hbcdzrshq20r20l29k3555np1sva7afqrhgvd239fdq1"
+  }
+ },
+ {
+  "ename": "show-eol",
+  "commit": "6c2287c7b4c543e92ccfab120388b2c05174d2db",
+  "sha256": "1lk397a0b2nwdd9v1vk0kpfd0d0slflsvy4h0ycyvcnbc53byni4",
+  "fetcher": "github",
+  "repo": "jcs-elpa/show-eol",
+  "unstable": {
+   "version": [
+    20190924,
+    621
+   ],
+   "commit": "bd0e47d7d61bf04a923a1d1689693a47af3a2b22",
+   "sha256": "0nq02qf7rxswxqcsl1lv7skd14ixmmyjkhk7wdbn5j3dhw192bh7"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "commit": "097a2a79e5bd7c297bcdc231559813056cd584ac",
+   "sha256": "0yhwd20azk6ib992fy3vzb9knqji3g6hz3ahz89sz71sjjvy1rrm"
+  }
+ },
+ {
+  "ename": "showtip",
+  "commit": "ae489be43b1aee93614e40f492ebdf0b98a3fbc1",
+  "sha256": "1d5ckka2z0ffwyk9g3h91n3waijj2v7n8kvdks35gcr2yl3yk780",
+  "fetcher": "github",
+  "repo": "emacsorphanage/showtip",
+  "unstable": {
+   "version": [
+    20090830,
+    1040
+   ],
+   "commit": "930da302809a4257e8d69425455b29e1cc91949b",
+   "sha256": "01zak0zhha6dp7a2hm28d065gjnc462iwpsfyxhbxgfzcdlicqc7"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "930da302809a4257e8d69425455b29e1cc91949b",
+   "sha256": "01zak0zhha6dp7a2hm28d065gjnc462iwpsfyxhbxgfzcdlicqc7"
+  }
+ },
+ {
+  "ename": "shpec-mode",
+  "commit": "dd1bfe85b430c3bbb5a7baf11bb9699dad417f60",
+  "sha256": "155hc1nym3fsvflps8d3ixaqw1cafqp97zcaywdppp47n7vj8zjl",
+  "fetcher": "github",
+  "repo": "shpec/shpec-mode",
+  "unstable": {
+   "version": [
+    20150530,
+    922
+   ],
+   "commit": "146adc8281d0f115df39a3a3f982ac59ab61b754",
+   "sha256": "1mizhbwvnsxxjz6m94qziibvhghhp8v8db3wxrq3z9gsaqqkcndn"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "76bccd63e3b70233a6c9ca0798dd03550952cc76",
+   "sha256": "09454mcjd8n1090pjc5mk1dc6bn3bgh60ddpnv9hkajkzpcjxx4h"
+  }
+ },
+ {
+  "ename": "shr-tag-pre-highlight",
+  "commit": "7be3c139bee02e8bd9a9830026cbfdd17629ac4d",
+  "sha256": "1v8fqx8bd5504r2mflq6x8xs3k0py3bgsnadz3bjs68yhaxacj3v",
+  "fetcher": "github",
+  "repo": "xuchunyang/shr-tag-pre-highlight.el",
+  "unstable": {
+   "version": [
+    20171113,
+    914
+   ],
+   "deps": [
+    "language-detection"
+   ],
+   "commit": "6182f43a36b0f82ba6edcf6e423b5f69a46a814e",
+   "sha256": "0916bpzi6sw5gyn5xgi9czf35zrvl04w10wz6fvz0lc57giihil1"
+  },
+  "stable": {
+   "version": [
+    2
+   ],
+   "deps": [
+    "language-detection"
+   ],
+   "commit": "63eb0b2a4c1caf1004bac8e002ff8b7477871e36",
+   "sha256": "14b398k7rd0c2ymvg8wyq65fhggkm0camgvqr7j6ia2y0kairxba"
+  }
+ },
+ {
+  "ename": "shrface",
+  "commit": "6a8dfd3ebe0cf52e1c02d2487891876963a4fda2",
+  "sha256": "00v6ll2jiadmmfq59w6nk7lkq9ka3kcqf6mw1r8wiw84qb2sz56c",
+  "fetcher": "github",
+  "repo": "chenyanming/shrface",
+  "unstable": {
+   "version": [
+    20200508,
+    1711
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "a146e7d25713c33999deff24338670a5d1308c6a",
+   "sha256": "17pm5ljn004wdsl2hryjla5my8a63mx3bpapkqfyvrkwswwzs3fw"
+  },
+  "stable": {
+   "version": [
+    2,
+    6
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "c82447df5b7fb87fa17e53919dc2da81c7dddec6",
+   "sha256": "1nncamyrn5c88lq973w1a28qg15gsdad51ifl1mhqprzkpw7jsjq"
+  }
+ },
+ {
+  "ename": "shrink-path",
+  "commit": "86b0d105e8a57d5f0bcde779441dc80b85e170ea",
+  "sha256": "0fq13c6g7qbq6f2ry9dzdyg1f6p41wimkjcdaj177rnilz77alzb",
+  "fetcher": "gitlab",
+  "repo": "bennya/shrink-path.el",
+  "unstable": {
+   "version": [
+    20190208,
+    1335
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "c14882c8599aec79a6e8ef2d06454254bb3e1e41",
+   "sha256": "1xnby24gpxij1z03wvx89s459jw0f8bwhgi80xvdq8gxhbbz2w7a"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "s"
+   ],
+   "commit": "9b8cfb59a2dcee8b39b680ab9adad5ecb1f53c0b",
+   "sha256": "0kx0c4syd7k6ff9j463bib32pz4wq0rzjlg6b0yqnymlzfr1mbki"
+  }
+ },
+ {
+  "ename": "shrink-whitespace",
+  "commit": "a403093706d57887111e0d012e85273addaf0d35",
+  "sha256": "12i6xlcgk27bsdfnlcdjww8vxbx1yilaqa0pkh5n0hxb66zi6x15",
+  "fetcher": "gitlab",
+  "repo": "jcpetkovich/shrink-whitespace.el",
+  "unstable": {
+   "version": [
+    20181003,
+    321
+   ],
+   "commit": "0407b89c142bd17e65edb666f35e2c6755bd0867",
+   "sha256": "1qxdi2jm3zl5f55c6irsbnxrmqw039pcm99jafn7hg5z5zc3xhbx"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    4
+   ],
+   "commit": "0407b89c142bd17e65edb666f35e2c6755bd0867",
+   "sha256": "1qxdi2jm3zl5f55c6irsbnxrmqw039pcm99jafn7hg5z5zc3xhbx"
+  }
+ },
+ {
+  "ename": "shroud",
+  "commit": "261a5b2c77288cf38bc309504215fb23c719f09b",
+  "sha256": "03226c2v76zdscxlbhq32wp5wgpg385phqnxcsibn1apk2rb4s4m",
+  "fetcher": "git",
+  "url": "https://git.savannah.nongnu.org/git/emacs-shroud.git",
+  "unstable": {
+   "version": [
+    20200124,
+    1833
+   ],
+   "deps": [
+    "bui",
+    "dash",
+    "dash-functional",
+    "epg",
+    "s"
+   ],
+   "commit": "bf8a854ecd440c525b870f9439f6785700af80d3",
+   "sha256": "1rfmykbv2jipkb8by9jsx51gdh62spilffj3c49h3rfcllqnbv2g"
+  },
+  "stable": {
+   "version": [
+    1,
+    105
+   ],
+   "deps": [
+    "bui",
+    "dash",
+    "dash-functional",
+    "epg",
+    "s"
+   ],
+   "commit": "f758d497f87afd847126d2e69b2f7ba10a5bbbfa",
+   "sha256": "0q2pb3w8s833fjhkzicciw2php4lsnismad1dnwgp2lcway757ra"
+  }
+ },
+ {
+  "ename": "shut-up",
+  "commit": "297d3d88a1dad694d5903072adb679f2194ce444",
+  "sha256": "1bcqrnnafnimfcg1s7vrgq4cb4rxi5sgpd92jj7xywvkalr3kh26",
+  "fetcher": "github",
+  "repo": "cask/shut-up",
+  "unstable": {
+   "version": [
+    20180628,
+    1830
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "081d6b01e3ba0e60326558e545c4019219e046ce",
+   "sha256": "1bnmrwrhra6cpc3jjgwwzrydj5ps7q2dlkh2ag4j7rkyv4dlk351"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "dccd8f7d6af2dde96718f557b37bc25adc61dd12",
+   "sha256": "103yvfgkj78i4bnv1fwk76izsa8h4wyj3vwj1vq7xggj607hkxzq"
+  }
+ },
+ {
+  "ename": "shx",
+  "commit": "7a2ff78ae3c4289ebf9e06cdfd8f8082c395a16f",
+  "sha256": "0h5ldglx4y85lm0pfilasnch2k82mlr7rb20qvarzwd41hb1az1k",
+  "fetcher": "github",
+  "repo": "riscy/shx-for-emacs",
+  "unstable": {
+   "version": [
+    20200410,
+    639
+   ],
+   "commit": "e5b4bae0a1a9bb8a762da40397a04efdd0b2b397",
+   "sha256": "0p9b621rgy34r1hl9xfzxh4xpx9gpsr3n330ypfxhlr0s5754j73"
+  },
+  "stable": {
+   "version": [
+    1,
+    4,
+    0
+   ],
+   "commit": "e5b4bae0a1a9bb8a762da40397a04efdd0b2b397",
+   "sha256": "0p9b621rgy34r1hl9xfzxh4xpx9gpsr3n330ypfxhlr0s5754j73"
+  }
+ },
+ {
+  "ename": "sibilant-mode",
+  "commit": "de12c8a37d6d42103f437e6bd974a94924242e8f",
+  "sha256": "0jd6dsk93nvwi5yia3623hfc4v6zz4s2n8m1wx9bw8x6kv3h3qbq",
+  "fetcher": "github",
+  "repo": "jbr/sibilant-mode",
+  "unstable": {
+   "version": [
+    20151119,
+    2145
+   ],
+   "commit": "bc1b5d8cd597918bafc9b2880ee49024740e54ab",
+   "sha256": "0cjqh6qbbmgxd6zgqnikw6bh8wpjydydkkqs5wcmblpi5awqmnb6"
+  }
+ },
+ {
+  "ename": "sicp",
+  "commit": "1363d7b6e95375ac63f07eed2b3947f4f81bc9ba",
+  "sha256": "1q7pbhjk8qgwvj27ianrdbmj98pwf3xv10gmpchh7bypmbyir4wz",
+  "fetcher": "github",
+  "repo": "webframp/sicp-info",
+  "unstable": {
+   "version": [
+    20200512,
+    1137
+   ],
+   "commit": "4002d83083d520c6b5ede2df36cc2cee885d450a",
+   "sha256": "0c9lknrhwhi4v3qnnzmy0k24d8pr3d3mpxi9xzcxq97f5w1x4fsk"
+  }
+ },
+ {
+  "ename": "side-notes",
+  "commit": "67d23bdaefb563d88b206a9ed822316f3d5be9a2",
+  "sha256": "07hrrplgvp3fvl10fsmxifnim8wz34w7fhzzzkxpdj1zlwls6h83",
+  "fetcher": "github",
+  "repo": "rnkn/side-notes",
+  "unstable": {
+   "version": [
+    20200311,
+    547
+   ],
+   "commit": "f78d7ba1173cf6056a95935add30cd30b7a7d347",
+   "sha256": "0fv1l3vrm50qbxs0dc1qyy1m3i08w46lh3z6nz8p32va5yjwfjmj"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1
+   ],
+   "commit": "f78d7ba1173cf6056a95935add30cd30b7a7d347",
+   "sha256": "0fv1l3vrm50qbxs0dc1qyy1m3i08w46lh3z6nz8p32va5yjwfjmj"
+  }
+ },
+ {
+  "ename": "sift",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1kr5rxza5li3zrkfvs91y7dxmn213z0zf836rkwkmwg2b9rmqxvj",
+  "fetcher": "github",
+  "repo": "nlamirault/sift.el",
+  "unstable": {
+   "version": [
+    20200421,
+    1423
+   ],
+   "commit": "cdddba2d183146c340915003f1b5d09d13712c22",
+   "sha256": "0ln87nhq2vhsb0ywn7rp0b3hzms5z7l6cv6dng08yly12r2957if"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "8c3f3d14a351a2394027d72ee0599aa73b9f0d13",
+   "sha256": "1ma6djvhvjai07v1g9a36lfa3nw8zsy6x5vliwcdnkf44gs287ra"
+  }
+ },
+ {
+  "ename": "signal",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "1g8sbszh7cnhpfaql8jn22bsdjdyjdnjb00xr43krr6smc1dr2xq",
+  "fetcher": "github",
+  "repo": "mola-T/signal",
+  "unstable": {
+   "version": [
+    20160816,
+    1438
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "aa58327e2297df921d72a0370468b48663efd438",
+   "sha256": "1gzfdk3ks56h8q4xk69aaxkhkg9jhs55iqdicyvq7x9wmjn6b7xw"
+  }
+ },
+ {
+  "ename": "silkworm-theme",
+  "commit": "9451d247693c3e991f79315868c73808c0a664d4",
+  "sha256": "1zbrjqmhf80qs3i910sixirrv42rxkqdrg2z03gnz1g885gpcn13",
+  "fetcher": "github",
+  "repo": "mswift42/silkworm-theme",
+  "unstable": {
+   "version": [
+    20191005,
+    1903
+   ],
+   "commit": "6cb44e3bfb095588aa3bdf8d0d45b583521f9e2c",
+   "sha256": "0w5h1gl8npmwmpvhhwchrknd977w4l3vvd2lib7qphinj117fhzv"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "7951b53e5caf9daf6a5a15a57ae3a668cb78bd7b",
+   "sha256": "1q21886qsam8y3s60zlfh48w0jl67q14qg9pzda7j2jcbj1q6r91"
+  }
+ },
+ {
+  "ename": "simp",
+  "commit": "45ff5b788e12218f8e2df7e53444796ca4b929fc",
+  "sha256": "0x4lssjkj3fk9fw603f0sggvcj25iw0zbzsm5c949lhl4a3wvc9c",
+  "fetcher": "github",
+  "repo": "re5et/simp",
+  "unstable": {
+   "version": [
+    20180607,
+    254
+   ],
+   "commit": "d4d4b8547055347828bedccbeffdb4fd2d5a5d34",
+   "sha256": "1a60vk46haibzrm6zgssdw085wpssmmqc66bipvkq6xnp2cvchkc"
+  }
+ },
+ {
+  "ename": "simple-bookmarks",
+  "commit": "a60dd50c388a75ce21a5aec9acf938835d7afdbc",
+  "sha256": "0jn5wzm9y4054mr9czd3224s5kbrqpcpcfmj6fi62yhy3p1ys9rb",
+  "fetcher": "github",
+  "repo": "jtkDvlp/simple-bookmarks",
+  "unstable": {
+   "version": [
+    20190204,
+    1426
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "54e8d771bcdb0eb235b31c0aa9642171369500e5",
+   "sha256": "0i4yw341b7iml2j8mxclixsrdqlvixfxpabaxp4jh70aq2zfw1cf"
+  },
+  "stable": {
+   "version": [
+    1,
+    9
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "54e8d771bcdb0eb235b31c0aa9642171369500e5",
+   "sha256": "0i4yw341b7iml2j8mxclixsrdqlvixfxpabaxp4jh70aq2zfw1cf"
+  }
+ },
+ {
+  "ename": "simple-call-tree",
+  "commit": "316a5ffcb3080abd623bbe3065077809e6cbfb74",
+  "sha256": "1cbv4frsrwd8d3rg8r4sylwnc1hl3hgh595qwbpx0zd3dp5na2yl",
+  "fetcher": "github",
+  "repo": "vapniks/simple-call-tree",
+  "unstable": {
+   "version": [
+    20180224,
+    2056
+   ],
+   "deps": [
+    "anaphora"
+   ],
+   "commit": "20059eb5549408def76aeb03d0d20839903dedef",
+   "sha256": "0gvhn2r7h6jz7a3i3a8gwlmghv1xfzj0sdib25kz645iylazji4h"
+  }
+ },
+ {
+  "ename": "simple-httpd",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "1g9m8dx62pql6dqz490pifcli96i5pv6sar18w4lwrfgpfisfz8c",
+  "fetcher": "github",
+  "repo": "skeeto/emacs-web-server",
+  "unstable": {
+   "version": [
+    20191103,
+    1446
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "22ce66ea43e0eadb9ec1d691a35d9695fc29cee6",
+   "sha256": "1ghwfrnml8qmfm981xrrqga2ayw36pqv9s2zqaqzl6szzpwnkz8i"
+  },
+  "stable": {
+   "version": [
+    1,
+    5,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a5eb49a6567e33586fba15dd649d63ca6e964314",
+   "sha256": "0dpn92rg813c4pq7a1vzj3znyxzp2lmvxqz6pzcqi0l2xn5r3wvb"
+  }
+ },
+ {
+  "ename": "simple-modeline",
+  "commit": "054a7c164fae0c76ad2b3c6891d37a03f3e08823",
+  "sha256": "0c2wvwxwaa62r4vrw9g1lcgr8cv57mlfpsszynkn00cb7fhlhdmk",
+  "fetcher": "github",
+  "repo": "gexplorer/simple-modeline",
+  "unstable": {
+   "version": [
+    20200427,
+    717
+   ],
+   "commit": "08197f4c37aa28c8305f0b0316619421e42a8b75",
+   "sha256": "1wqqaknii7nkvm8nfjr2wzwjwr4w60a2x044y1kgk6zfkfb106lh"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "e7e39660dadcef88e7e877ad1f24625873e90e51",
+   "sha256": "0s8979jd3x6yarq4ifn5wgn08s8z2kblzaagh4zywkhaj1i7mb4m"
+  }
+ },
+ {
+  "ename": "simple-mpc",
+  "commit": "62d762308c1ec0c1d8f7b4755b7deb285cbac018",
+  "sha256": "05x2xyys5mf6k7ndh0l6ykyiygaznb4f8bx3npbhvihrsz9ilf8r",
+  "fetcher": "github",
+  "repo": "jorenvo/simple-mpc",
+  "unstable": {
+   "version": [
+    20180716,
+    129
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "bee8520e81292b4c7353e45b193f9a13b482f5b2",
+   "sha256": "1ja06pv007cmzjjgka95jlg31k7d29jrih1yxyblsxv85s9sg21q"
+  }
+ },
+ {
+  "ename": "simple-paren",
+  "commit": "5e8886feb4a034fddd40d7381508b09db79f608f",
+  "sha256": "0bmw8pkh9864gymy36r3w5yw08pq894gb1n80wfqls4a78zyvkm3",
+  "fetcher": "github",
+  "repo": "andreas-roehler/simple-paren",
+  "unstable": {
+   "version": [
+    20200120,
+    2036
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "2a4ba8f99f39abf17976db8118e32b80eff0798b",
+   "sha256": "0897i5ggdivi2knblcbkyv9lpnwgdlr8ql9brd09bkdsbzhsqb6y"
+  }
+ },
+ {
+  "ename": "simple-rtm",
+  "commit": "a784f931849ca836557390999b179ef9f6e775f3",
+  "sha256": "0v5f0vr8sh62yvb7znx00wgybb83dfnkvgl8afyk3ry8n9xkhf5b",
+  "fetcher": "gitlab",
+  "repo": "mbunkus/simple-rtm",
+  "unstable": {
+   "version": [
+    20160222,
+    1534
+   ],
+   "deps": [
+    "dash",
+    "rtm"
+   ],
+   "commit": "8c7cd96cf66ef112be5c363e3378e304f8f83999",
+   "sha256": "1kkhnsxr8zrb21k4ckyg69nsndwy4zdkvfw2drk4v1vnbgx8144f"
+  }
+ },
+ {
+  "ename": "simple-screen",
+  "commit": "02db9a649002ed9dec03661a518f74f3c7a176d9",
+  "sha256": "16zvsmqn882w320h26hjjz5lcyl9y0x4amkf2zfps77xxmkmi5n0",
+  "fetcher": "github",
+  "repo": "wachikun/simple-screen",
+  "unstable": {
+   "version": [
+    20161009,
+    920
+   ],
+   "commit": "596e3a451d9af24730ab31a8fe15c91a4264d09d",
+   "sha256": "0mqlwrkipgf977s0gx57fv5xrqli67hixprvra6q64isapr86yh1"
+  }
+ },
+ {
+  "ename": "simpleclip",
+  "commit": "7c921e27d6aafc1b82d37f6beb8407840034377a",
+  "sha256": "07qkfwlg8vw5kb097qbsv082hxir047q2bcvc8scbak2dr6pl12s",
+  "fetcher": "github",
+  "repo": "rolandwalker/simpleclip",
+  "unstable": {
+   "version": [
+    20200210,
+    1406
+   ],
+   "commit": "970159c788d38877f55f6fe93fe590642d45fb47",
+   "sha256": "0divawrww9py1r3yd7v0574lhf186f1d227gsmmal5m9zzi7pk7k"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    10
+   ],
+   "commit": "d327abe0522b9b9a26e005eae5ffa4c34ea2ba0a",
+   "sha256": "1xkv34ibp3zv1b4y2q0i8x7c6vqrqf8r5jzj30nzz4lm5ipvd98r"
+  }
+ },
+ {
+  "ename": "simplenote",
+  "commit": "8c1c3189da03541e3bee44847ac5d02c2a56ef98",
+  "sha256": "0rnvm3q2spfj15kx2c8ic1p8hxg7rwiqgf3x2zg34j1xxayn3h2j",
+  "fetcher": "github",
+  "repo": "dotemacs/simplenote.el",
+  "unstable": {
+   "version": [
+    20141118,
+    1440
+   ],
+   "commit": "e836fcdb5a6497a9ffd6bceddd19b4bc52189078",
+   "sha256": "0xq4vy3ggdjiycd3aa62k94kd43zcpm8bfdgi8grwkb1lpvwq9i9"
+  }
+ },
+ {
+  "ename": "simplenote2",
+  "commit": "1ac16abd2ce075a8bed4b7b52aed71cb12b38518",
+  "sha256": "1qdzbwhzmsga65wmrd0mb3rbs71nlyqqb6f4v7kvfxzyis50cswm",
+  "fetcher": "github",
+  "repo": "alpha22jp/simplenote2.el",
+  "unstable": {
+   "version": [
+    20190321,
+    933
+   ],
+   "deps": [
+    "request-deferred",
+    "unicode-escape",
+    "uuidgen"
+   ],
+   "commit": "760ffecda63bd218876b623f46d332e3ef079be6",
+   "sha256": "1swb6xvdw6dql6wdj8y5kaaicwrafiz5jwnfl5h1viw08b98q8dv"
+  },
+  "stable": {
+   "version": [
+    3,
+    0,
+    0
+   ],
+   "deps": [
+    "request-deferred"
+   ],
+   "commit": "070aa311b0a08b530394c53d0c52c6438efbc20c",
+   "sha256": "0zx49kd3wrqx6f52nk8rzqx3ay3qbcygibcidw6w7drvxnxjgd04"
+  }
+ },
+ {
+  "ename": "simplezen",
+  "commit": "eddd3de86e14f56b59fa6f9a08fc89288e0bdbc1",
+  "sha256": "13f2anhfsxmx1vdd209gxkhpywsi3nn6pazhc6bkswmn27yiig7j",
+  "fetcher": "github",
+  "repo": "magnars/simplezen.el",
+  "unstable": {
+   "version": [
+    20130421,
+    1000
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "119fdf2c6890a0c56045ae72cf4fce0071a81481",
+   "sha256": "0108q2b5h73rjxg9k2kmc8z6la9kgqdnz9z1x7rn61v3vbxlzqvn"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "c0ddaefbb38fcc1c9775434f734f89227d246a30",
+   "sha256": "1p1771qm3jndnf4rdhb1bri5cjiksvxizagi7vfb7mjmsmx18w61"
+  }
+ },
+ {
+  "ename": "skeletor",
+  "commit": "1e63aefc869900c2af6f958dc138f9c72c63e2b8",
+  "sha256": "1vfvg5l12dzksr24dxwc6ngawsqzpxjs97drw48qav9dy1vyl10v",
+  "fetcher": "github",
+  "repo": "chrisbarrett/skeletor.el",
+  "unstable": {
+   "version": [
+    20191129,
+    841
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "f",
+    "let-alist",
+    "s"
+   ],
+   "commit": "eb21383a9c9e7cf7ae2bbb85cb6d4f42aa3cb37f",
+   "sha256": "1vq4g8kpq9q4zyybw4k4hgvn13avxz653gdfrx4x5wvfqcr91mbx"
+  },
+  "stable": {
+   "version": [
+    1,
+    6,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "f",
+    "let-alist",
+    "s"
+   ],
+   "commit": "d986806559628623b591542143707de8d76347d0",
+   "sha256": "101xn4glqi7b5vhdqqahj2ib4pm30pzq8sad7zagxw9csihcri3q"
+  }
+ },
+ {
+  "ename": "skewer-less",
+  "commit": "fb63f7417f39bd718972f54e57360708eb48b977",
+  "sha256": "0fhv5cnp5bgw3krfmb0jl18kw2hzx2p81falj57lg3p8rn23dryl",
+  "fetcher": "github",
+  "repo": "purcell/skewer-less",
+  "unstable": {
+   "version": [
+    20160828,
+    2021
+   ],
+   "deps": [
+    "skewer-mode"
+   ],
+   "commit": "8ce9d030e18133319181d5dabe3e905c8ca5fd6b",
+   "sha256": "1hkk9si9z9zd2x2cv2gs0z423prlwlhq847irypz2dm1bnm5dzrx"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "skewer-mode"
+   ],
+   "commit": "593001930f1d68c85233f34c5f6fb04173fc98d6",
+   "sha256": "0g5sapd76pjnfhxlw149zj0fpn6l3pz3l8qlcn2c237vm8vn6qv3"
+  }
+ },
+ {
+  "ename": "skewer-mode",
+  "commit": "10fba4f7935c78c4fc5eee7dbb161173dea884ba",
+  "sha256": "1zp4myi9f7pw6zkgc0xg12585iihn7khcsf20pvqyc0vn4ajdwqm",
+  "fetcher": "github",
+  "repo": "skeeto/skewer-mode",
+  "unstable": {
+   "version": [
+    20200304,
+    1142
+   ],
+   "deps": [
+    "js2-mode",
+    "simple-httpd"
+   ],
+   "commit": "e5bed351939c92a1f788f78398583c2f83f1bb3c",
+   "sha256": "07fv33arh77kdfglg6yv28gvryh0z7ddxylhdyr5plvvglpbwi88"
+  },
+  "stable": {
+   "version": [
+    1,
+    8,
+    0
+   ],
+   "deps": [
+    "js2-mode",
+    "simple-httpd"
+   ],
+   "commit": "a10955db9ef95b0243ee31bcd30a6fb07ce5302b",
+   "sha256": "1ha7jl7776pk1bki5zj2q0jy66450mn8xr3aqjc0m9kj3gc9qxgw"
+  }
+ },
+ {
+  "ename": "skewer-reload-stylesheets",
+  "commit": "aeaa2c89b995f1ab0b0f96493db0cda44cc851ee",
+  "sha256": "1hcz8q7rs5g7gbj6w72g8prry4niqjmyxvvc0ala83qw76x4cm7k",
+  "fetcher": "github",
+  "repo": "NateEag/skewer-reload-stylesheets",
+  "unstable": {
+   "version": [
+    20160725,
+    1220
+   ],
+   "deps": [
+    "skewer-mode"
+   ],
+   "commit": "b9cc5635230ac3c0603a6da690c6e632d0a7490a",
+   "sha256": "0c8dpbl0z45w1brllcysibmpbnk8yqjgi3iywmqnhrycb7lrda4g"
+  }
+ },
+ {
+  "ename": "skype",
+  "commit": "d3448698a35c9d5d25639f62024f89cac03d5830",
+  "sha256": "06p5s5agajbm9vg9xxpzv817xmjw2kmcahiw4iypn5yzwhv1aykl",
+  "fetcher": "github",
+  "repo": "kiwanami/emacs-skype",
+  "unstable": {
+   "version": [
+    20160711,
+    824
+   ],
+   "commit": "8e3b33e620ed355522aa36434ff41e3ced080629",
+   "sha256": "078gjgknsrm1n2f0diian9l056kqh1fj2w0y6ildsvzjipygdz1y"
+  }
+ },
+ {
+  "ename": "sl",
+  "commit": "7188a93d33e38f360930b5090c6ef872116f8a7c",
+  "sha256": "0h90ajikr6kclsy73vs9f50jg8z3d6kqbpanm9ryh2pw3sd4rnii",
+  "fetcher": "github",
+  "repo": "xuchunyang/sl.el",
+  "unstable": {
+   "version": [
+    20161217,
+    1404
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "fceb2ae12a3065b2a265b921baca0891c5ea54dc",
+   "sha256": "0cfldhhmgbr55fvhq85hrksf9n8m27rd1p28lbib0bpghgnax0v7"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "51d92f820f3e93776fff6cdb9690458816888bdc",
+   "sha256": "1faklr7jz1s6hs1xrzhvddlibhbjbqwxsb8iz6i5c8dg9sj3hw45"
+  }
+ },
+ {
+  "ename": "slack",
+  "commit": "f0258cc41de809b67811a5dde3d475c429df0695",
+  "sha256": "0mybjx08yskk9vi06ayiknl5ddyd8h0mnr8c0a3zr61p1x4s6anp",
+  "fetcher": "github",
+  "repo": "yuya373/emacs-slack",
+  "unstable": {
+   "version": [
+    20200512,
+    1702
+   ],
+   "deps": [
+    "alert",
+    "circe",
+    "emojify",
+    "oauth2",
+    "request",
+    "websocket"
+   ],
+   "commit": "b30525d63bb46882240de6f86e951305bcc7af10",
+   "sha256": "1f35lr19g5ci1jba6b9hkl7vajg4iy1yw6wb8bhg8dyppdkwnmvy"
+  }
+ },
+ {
+  "ename": "slideview",
+  "commit": "b250f977f44a08346ee9715b416c9706375227a1",
+  "sha256": "0zr08yrnrz49zds1651ysmgjqgbnhfdcqbg90sbsb086iw89rxl1",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-slideview",
+  "unstable": {
+   "version": [
+    20150324,
+    2240
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b6d170bda139aedf81b47dc55cbd1a3af512fb4c",
+   "sha256": "11p1pghx55a4gcn45cadw7c594134b21cdim723k2h99z14f89az"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    1
+   ],
+   "commit": "ec2340e7b0e74201206d14e3eaef1e77149f122d",
+   "sha256": "0rk12am1dq52khwkwrmg70zarhni2avj4sy44jqckb4x7sv7djfk"
+  }
+ },
+ {
+  "ename": "slim-mode",
+  "commit": "6a3b59bdbc53d7c0b4c4d6434689f7aab2546678",
+  "sha256": "1hip0r22irr9sah3b65ky71ic508bhqvj9hj95a81qvy1zi9rcac",
+  "fetcher": "github",
+  "repo": "slim-template/emacs-slim",
+  "unstable": {
+   "version": [
+    20170728,
+    1348
+   ],
+   "commit": "3636d18ab1c8b316eea71c4732eb44743e2ded87",
+   "sha256": "1sqylm6ipmlh9249mmwfb16b4pv94cvzdwvi3zakdpz713phyjw5"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "fe8abb644b7b9cc0ed1e76d9ca8d6c01edccbdb8",
+   "sha256": "1cl8amk1kc7a953l1khjms04j40mfkpnbsjz3qa123msgachrsg7"
+  }
+ },
+ {
+  "ename": "slime",
+  "commit": "47609a81b81330820f6ddf717400dc7fa06aaabf",
+  "sha256": "1ds8iprxr04wdhnnw4129v5l3w3k5rjp5ax156ppqr5i7wxx1zac",
+  "fetcher": "github",
+  "repo": "slime/slime",
+  "unstable": {
+   "version": [
+    20200414,
+    1444
+   ],
+   "deps": [
+    "cl-lib",
+    "macrostep"
+   ],
+   "commit": "221518f0d3d224403743e6690f6bb66c42d9dec9",
+   "sha256": "0wbxv461lq7760gsqjw5djhjkzmwxz563l97csn2637gb1wkn461"
+  },
+  "stable": {
+   "version": [
+    2,
+    24
+   ],
+   "deps": [
+    "cl-lib",
+    "macrostep"
+   ],
+   "commit": "c1f15e2bd02fabe7bb468b05fe311cd9a932f14f",
+   "sha256": "0w7j835p9riyd6n4znj3x255lwsrmy0lj51hpc7bhk0vdz2cv2qm"
+  }
+ },
+ {
+  "ename": "slime-company",
+  "commit": "abe5036c6de996a723bc800e0f031314e1188660",
+  "sha256": "195s5fi2dl3h2jyy4d45q22jac35sciz81n13b4lgw94mkxx4rq2",
+  "fetcher": "github",
+  "repo": "anwyn/slime-company",
+  "unstable": {
+   "version": [
+    20200424,
+    1045
+   ],
+   "deps": [
+    "company",
+    "slime"
+   ],
+   "commit": "cec203c45ebd678b05341d1cdbe420ad07a1b8e0",
+   "sha256": "0dwj6kv8laivhisd9jrzdn1lxynqqxmimvyz3z0zz6qf0ijsl0wm"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "deps": [
+    "company",
+    "slime"
+   ],
+   "commit": "cec203c45ebd678b05341d1cdbe420ad07a1b8e0",
+   "sha256": "0dwj6kv8laivhisd9jrzdn1lxynqqxmimvyz3z0zz6qf0ijsl0wm"
+  }
+ },
+ {
+  "ename": "slime-docker",
+  "commit": "15ec3f7208287161571c8fc3b29369ceabb44e5f",
+  "sha256": "13zkkrpww51ndsblpyz2msiwrjnaz6yrk61jbzrwp0r7a2v0djsa",
+  "fetcher": "github",
+  "repo": "daewok/slime-docker",
+  "unstable": {
+   "version": [
+    20190430,
+    157
+   ],
+   "deps": [
+    "cl-lib",
+    "docker-tramp",
+    "slime"
+   ],
+   "commit": "151cec4a11965cdc00d231900a50f2c9f455fce2",
+   "sha256": "1sp6qi2i1cl41ga9y6fwf7q855y0b59fcbxdiggdhigwd5zslzcv"
+  },
+  "stable": {
+   "version": [
+    0,
+    7
+   ],
+   "deps": [
+    "cl-lib",
+    "docker-tramp",
+    "slime"
+   ],
+   "commit": "1ba41c2d86540a84b47466b0b6957f8063f23aa8",
+   "sha256": "168s5xsf7l6s8x5hcmzmk5j9d8a3wpr4s3dlm697dg2n1717gl2z"
+  }
+ },
+ {
+  "ename": "slime-repl-ansi-color",
+  "commit": "07fd791e2674ce3c773e2c213e045d6c7d12d848",
+  "sha256": "187xs5gfwjpkg31zhrrivjkp0j8wrr2xbjszr1hayzx5c8d7yz39",
+  "fetcher": "gitlab",
+  "repo": "augfab/slime-repl-ansi-color",
+  "unstable": {
+   "version": [
+    20190426,
+    1414
+   ],
+   "deps": [
+    "slime"
+   ],
+   "commit": "fdd0c7a75a217abca2ff16ab9281d55f392bd841",
+   "sha256": "0d3q9js5vybddniyirvvabljmxasgdqimjdpy7pn48hh4rd875di"
+  }
+ },
+ {
+  "ename": "slime-theme",
+  "commit": "641d1959bd31598fcdacd39a3d1bb077dcccfa5c",
+  "sha256": "1b709cplxip48a6qjdnzcn5qcgsy0jq1m05d7vc8p5ywgr1f9a00",
+  "fetcher": "github",
+  "repo": "emacsfodder/emacs-slime-theme",
+  "unstable": {
+   "version": [
+    20170808,
+    1322
+   ],
+   "commit": "8e5880ac69e0b6a079103001cc3a90bdb688998f",
+   "sha256": "0g90ypwyvpdzilvhj0rgfrp78a5gflply3rix2wx8rncw569qb6g"
+  }
+ },
+ {
+  "ename": "slime-volleyball",
+  "commit": "853f47f469e372bdbae40f3cea60d9598e966fab",
+  "sha256": "1dzvj8z3l5l9ixjl3nc3c7zzi23zc2300r7jzw2l3bvg64cfbdg7",
+  "fetcher": "github",
+  "repo": "fitzsim/slime-volleyball",
+  "unstable": {
+   "version": [
+    20190701,
+    1624
+   ],
+   "commit": "6c135ad18897c3566d4dadfe847061532600ba2e",
+   "sha256": "1k46a9apxk95hd98rip84f728sjq52qbv286sixy3l59k8vls53q"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "159b5c0f40b109e3854e94b89ec5383854c46ae3",
+   "sha256": "00v4mh04affd8kkw4rn51djpyga2rb8f63mgy86napglqnkz40r3"
+  }
+ },
+ {
+  "ename": "slirm",
+  "commit": "6407db0f265c49fdddaa6e8f85f295e2b90a077b",
+  "sha256": "061xjj3vjdkkvd979fhp7bc12g5zkxqxywvcz3z9dlkgdks41ld7",
+  "fetcher": "github",
+  "repo": "fbie/slirm",
+  "unstable": {
+   "version": [
+    20160201,
+    1425
+   ],
+   "commit": "9adfbe1fc67580e7d0d90f7e927a25d63a797464",
+   "sha256": "0srj0zcvzr0sjcs37zz11xz8w0yv94m69av9ny7mx8ssf4qp0pxa"
+  }
+ },
+ {
+  "ename": "slovak-holidays",
+  "commit": "d5c6b2208ef209dfe57c2c137a88ce08a4eae475",
+  "sha256": "1dcw8pa3r9b7n7dc8fgzijz7ywwxb3nlfg7n0by8dnvpjq2c30bg",
+  "fetcher": "github",
+  "repo": "Fuco1/slovak-holidays",
+  "unstable": {
+   "version": [
+    20150418,
+    855
+   ],
+   "commit": "effb16dfcd14797bf7448f5113085479db339c02",
+   "sha256": "1y1gay1h91c0690gly4qibx1my0l1zpb6s3x58lks8m21jdwfw28"
+  }
+ },
+ {
+  "ename": "slow-keys",
+  "commit": "5d16756967dd9077399b92cde2ddd7784739b693",
+  "sha256": "03p0qx8a3g8mapjhdf9pjp3n0ng2pxmizpqn87wk8mbc8cmlwk2w",
+  "fetcher": "github",
+  "repo": "manuel-uberti/slow-keys",
+  "unstable": {
+   "version": [
+    20180831,
+    459
+   ],
+   "commit": "b93ad77f9fc1d14e080d7d64864fc9cb222248b6",
+   "sha256": "1s4yk6w9fqf6hmimjcq8r7b54v7f2hz3isihiaidj3sv5zclhflw"
+  }
+ },
+ {
+  "ename": "slstats",
+  "commit": "fe7c8c241cc6920bbedb6711db63ea28ed633327",
+  "sha256": "0z5y2fmb3v16g5gf87c9gll04wbjp3d1cf7gm5cxi4w3y1kw4r7q",
+  "fetcher": "github",
+  "repo": "davep/slstats.el",
+  "unstable": {
+   "version": [
+    20170823,
+    849
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "e9696066abf3f2b7b818a57c062530dfd9377033",
+   "sha256": "1mjzr6lqcyx3clp3bxq77k2rpkaglnq407xdk05xkaqissirpc83"
+  },
+  "stable": {
+   "version": [
+    1,
+    10
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "e9696066abf3f2b7b818a57c062530dfd9377033",
+   "sha256": "1mjzr6lqcyx3clp3bxq77k2rpkaglnq407xdk05xkaqissirpc83"
+  }
+ },
+ {
+  "ename": "sly",
+  "commit": "4a916e44049cf8c5616c7394389ef91e2a2b3e21",
+  "sha256": "1pylaiy016yiyvd27m38wymw1k3bq7sfsd2d23idrgybc8miqqp6",
+  "fetcher": "github",
+  "repo": "joaotavora/sly",
+  "unstable": {
+   "version": [
+    20200314,
+    55
+   ],
+   "commit": "1382bda945ecfb4b177c7d05a36da8fd41e0384c",
+   "sha256": "1hmdx3nakhpsmg6zr52090pimmy0kpjz2adyi0m1wzh9zdg5cx4x"
+  },
+  "stable": {
+   "version": [
+    2,
+    22
+   ],
+   "commit": "8d9fdf34fe542ec280ee042ee7bdea16e512d3c0",
+   "sha256": "0zsliqfd92ivg2y2w1z6scn6i3w658x8bi1wd0rvf6mddc74lvj6"
+  }
+ },
+ {
+  "ename": "sly-asdf",
+  "commit": "09e59410bebffb8ab7e3236ee97f692665833f31",
+  "sha256": "1fn1gm439x1axmslgcxinj8lx2vh7jq2qjbxpyjgv5lj9wia0bzi",
+  "fetcher": "github",
+  "repo": "mmgeorge/sly-asdf",
+  "unstable": {
+   "version": [
+    20200306,
+    433
+   ],
+   "deps": [
+    "popup",
+    "sly"
+   ],
+   "commit": "32ce14994e8faee9321605cec36d156b02996c46",
+   "sha256": "09x8l37wwqw74xc2frwzbfdb1if8rb3szg5akdk3v2qhik4sm3dd"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "sly"
+   ],
+   "commit": "c387ba34a75b172e8a75747220c416462ae9de31",
+   "sha256": "1cr6p11vsplb6afh2avwb585q606npp692gb5vqs377nni5vx7km"
+  }
+ },
+ {
+  "ename": "sly-hello-world",
+  "commit": "4150455d424326667390f72f6edd22b274d9fa01",
+  "sha256": "0mry5r0qc2w9k31kifqfc9slmh8mp2pz44qb36f41i3znckf7xy4",
+  "fetcher": "github",
+  "repo": "joaotavora/sly-hello-world",
+  "unstable": {
+   "version": [
+    20200225,
+    1755
+   ],
+   "deps": [
+    "sly"
+   ],
+   "commit": "d25acc1220a3ce066bd9908251c2f0f88b1781e9",
+   "sha256": "0par51rbspk2gqfqag24rynzdvv4npdifdy7bjz9n0b0p2ly39kc"
+  }
+ },
+ {
+  "ename": "sly-macrostep",
+  "commit": "4150455d424326667390f72f6edd22b274d9fa01",
+  "sha256": "0gg9r5np2008593n1igq5chda1a3x1iblj0r4mqnnxa0r1hdsw3j",
+  "fetcher": "github",
+  "repo": "joaotavora/sly-macrostep",
+  "unstable": {
+   "version": [
+    20191211,
+    1630
+   ],
+   "deps": [
+    "macrostep",
+    "sly"
+   ],
+   "commit": "5113e4e926cd752b1d0bcc1508b3ebad5def5fad",
+   "sha256": "1nxf28gn4f3n0wnv7nb5sgl36fz175y470zs9hig4kq8cp0yal0r"
+  }
+ },
+ {
+  "ename": "sly-named-readtables",
+  "commit": "4150455d424326667390f72f6edd22b274d9fa01",
+  "sha256": "0wy0z9m8632qlcxb4pw3csc52yaq7dj7gdf3pbg0wb67f32ihihz",
+  "fetcher": "github",
+  "repo": "joaotavora/sly-named-readtables",
+  "unstable": {
+   "version": [
+    20191013,
+    2138
+   ],
+   "deps": [
+    "sly"
+   ],
+   "commit": "a5a42674ccffa97ccd5e4e9742beaf3ea719931f",
+   "sha256": "16asd119rzqrlclps2q6yrkis8jy5an5xgzzqvb7jdyq39zxg54q"
+  }
+ },
+ {
+  "ename": "sly-quicklisp",
+  "commit": "4150455d424326667390f72f6edd22b274d9fa01",
+  "sha256": "0j0qkvs2v563dz2rd70dfmd0qpdwicymx59zv3gn57z5a8m14866",
+  "fetcher": "github",
+  "repo": "joaotavora/sly-quicklisp",
+  "unstable": {
+   "version": [
+    20191012,
+    2124
+   ],
+   "deps": [
+    "sly"
+   ],
+   "commit": "01ebe3976a244309f2e277c09206831135a0b66c",
+   "sha256": "1vfqmvayf35g6y3ljsm3rlzv5jm50qikhh4lv2zkkswj6gkkb1cv"
+  }
+ },
+ {
+  "ename": "sly-repl-ansi-color",
+  "commit": "981e01f562c40e02cb6d56dc1347e922fbad9c18",
+  "sha256": "0wz24kfjl6rp4qss0iq2ilav0mkg2spy2ziikypy7v0iqbssmssi",
+  "fetcher": "github",
+  "repo": "PuercoPop/sly-repl-ansi-color",
+  "unstable": {
+   "version": [
+    20171020,
+    1516
+   ],
+   "deps": [
+    "cl-lib",
+    "sly"
+   ],
+   "commit": "b9cd52d1cf927bf7e08582d46ab0bcf1d4fb5048",
+   "sha256": "0fgcn6bwgz8yyjza07kfi86siargvpq4kp4j20hs6b67ckxjxx0x"
+  }
+ },
+ {
+  "ename": "smart-backspace",
+  "commit": "88cd95cd623fb00d1bc6800c1dd3c665a0cce349",
+  "sha256": "152xdxzrr91qiyq25ghvjlbpc627cw4s120axmz2p2d48pinwir9",
+  "fetcher": "github",
+  "repo": "itome/smart-backspace",
+  "unstable": {
+   "version": [
+    20171014,
+    526
+   ],
+   "commit": "a10ec44ff325ec8c4c98b1a6e44e89e60a9aa4ac",
+   "sha256": "0p19qikalmvs9y1lws08mxvh2k8s219mpm3nyi9aqq62ryyfwf1n"
+  }
+ },
+ {
+  "ename": "smart-comment",
+  "commit": "798c3b42e568bea63edc0c1d3ce2c2d913e3440e",
+  "sha256": "0lbrasdrkyj7zybz0f3xick8p0bvci5bhb2kg6pqzz9pw2iaxw12",
+  "fetcher": "github",
+  "repo": "paldepind/smart-comment",
+  "unstable": {
+   "version": [
+    20160322,
+    1839
+   ],
+   "commit": "17ddbd83205818763e6d68aa7a1aa9aaf414cbd4",
+   "sha256": "0r181rdnymr96kj74c73212n6157cfiq1d6hk2lfc54yl6h76zf4"
+  }
+ },
+ {
+  "ename": "smart-compile",
+  "commit": "93562afd7b62d7535b8010179ba6ac7e8e6280d0",
+  "sha256": "1w3vyb6wz786ydrywkjmazyvgfl0qxamn0fgnqpn17d2c5jr9c4g",
+  "fetcher": "github",
+  "repo": "zenitani/elisp",
+  "unstable": {
+   "version": [
+    20200508,
+    249
+   ],
+   "commit": "f808ac53870d32c57a3cd01dd2850ee62d3af98a",
+   "sha256": "0dy3idfbvlrrim3rkv7lrr12gg2s4wlml6wcwgv1mazq3kdvjvvl"
+  }
+ },
+ {
+  "ename": "smart-cursor-color",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "19ah55514ashkm4f49nlbnrpwxpwlfn6x3fbi4dv0x2b8v1828ss",
+  "fetcher": "github",
+  "repo": "7696122/smart-cursor-color",
+  "unstable": {
+   "version": [
+    20141124,
+    1719
+   ],
+   "commit": "1d190f49ca77734b55ac58f1b6276e42ada967b0",
+   "sha256": "1xbd42q60pmg0hw4bn2fndjwgrfgj6ggm757fyp8m08jqh0zkarn"
+  }
+ },
+ {
+  "ename": "smart-dash",
+  "commit": "98a2cf93cc41cb2bba14f91a83b6949267623198",
+  "sha256": "1n3lh0ximwrqawdg8q9ls6aabidrawqca5w67f8vsfmrvyfx48n4",
+  "fetcher": "bitbucket",
+  "repo": "malsyned/smart-dash",
+  "unstable": {
+   "version": [
+    20200104,
+    1620
+   ],
+   "commit": "cc540eea7452e15d4ef2b09d8809d88174f509c0",
+   "sha256": "10xp7nf42v9rz9as3gspjcm3rjy075xza3yqbcppdk1zm59xxljr"
+  }
+ },
+ {
+  "ename": "smart-forward",
+  "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a",
+  "sha256": "032yc45c19fl886jmi5q04r6q47xz5rphb040wjvpd4fnb06hr8c",
+  "fetcher": "github",
+  "repo": "magnars/smart-forward.el",
+  "unstable": {
+   "version": [
+    20140430,
+    713
+   ],
+   "deps": [
+    "expand-region"
+   ],
+   "commit": "7b6dbfdbd4b646376a567c70e1a161545431b72b",
+   "sha256": "19l47xqzjhhm9j3izik0imssip5ygg3lnflb9ixsz1js571aaxha"
+  }
+ },
+ {
+  "ename": "smart-hungry-delete",
+  "commit": "abbf52a856b95ab88cde1fdeeebebb81f7c61fa9",
+  "sha256": "03hw5p055dbayw5z43c1ippf2lnjgs77l7q969ng3fffqkazjq9b",
+  "fetcher": "github",
+  "repo": "hrehfeld/emacs-smart-hungry-delete",
+  "unstable": {
+   "version": [
+    20170412,
+    1343
+   ],
+   "commit": "7c1d56a92481594e14d40b5fdf6c48657a0108a0",
+   "sha256": "0mxaslx5823s68a8ggbbnmfk1jiswjvip5s4sg7ihfagnci72wni"
+  }
+ },
+ {
+  "ename": "smart-indent-rigidly",
+  "commit": "3083f497180d2f7d93bb9a4b98af6ae1bcbe57b9",
+  "sha256": "12qggg1m28mlvkdn52dig8bwv58pvipkvn1mlc4r7w569arar44x",
+  "fetcher": "github",
+  "repo": "re5et/smart-indent-rigidly",
+  "unstable": {
+   "version": [
+    20141206,
+    15
+   ],
+   "commit": "323d1fe4d0b81e598249aad01bc44adb180ece0e",
+   "sha256": "0q5hxg265ad9gpclv2kzikg6jvbf3zzb1mrykxn0n7mnvdfdlhsi"
+  }
+ },
+ {
+  "ename": "smart-input-source",
+  "commit": "82ef5414e63fe94905f042534d8bde88fb5461c6",
+  "sha256": "1dx3cvbm9hrdfrj4ggf0hbmfag2hybdlrqgpzy48fc07dscv0acd",
+  "fetcher": "github",
+  "repo": "laishulu/emacs-smart-input-source",
+  "unstable": {
+   "version": [
+    20200428,
+    1031
+   ],
+   "deps": [
+    "names"
+   ],
+   "commit": "6d6db53db20712570cb99cd6a03f2be0349d87b8",
+   "sha256": "1h8vcdzgbg80c51cl3x6ic2d8q2sjlk5dp9j4wvmzqg6qdf34a6b"
+  }
+ },
+ {
+  "ename": "smart-jump",
+  "commit": "52f29e14e61b28cd1637ca5d6bd878d91a71251f",
+  "sha256": "14c7p6xqasd0fgn70zj1jlpwjxldzqx44bcdqdk6nmjihw0rk632",
+  "fetcher": "github",
+  "repo": "jojojames/smart-jump",
+  "unstable": {
+   "version": [
+    20190925,
+    1518
+   ],
+   "deps": [
+    "dumb-jump"
+   ],
+   "commit": "07800ddd508cf620e6360e4a1f5bb25f8eab3ab1",
+   "sha256": "0g6s5v2mpdd06i8yih8c8qj3bz1j1bdnki1937mn5ca163gjlrr9"
+  }
+ },
+ {
+  "ename": "smart-mark",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "0kx34983qqxkx2afql1daj155294dkbinw861lhx537614fq7wmn",
+  "fetcher": "github",
+  "repo": "zhangkaiyulw/smart-mark",
+  "unstable": {
+   "version": [
+    20150912,
+    210
+   ],
+   "commit": "04b522a23e3aae8381c6a976fc978532fcb2e7d0",
+   "sha256": "0sqvm7iwdjk057fwid4kz6wj71igiqhdarj59s17pzy6xz34afhg"
+  }
+ },
+ {
+  "ename": "smart-mode-line",
+  "commit": "1e6aed365c42987d64d0cd9a8a6178339b1b39e8",
+  "sha256": "0qmhzlkc6mfqyaw4jaw6195b8sw0wg9pfjcijb4p0mlywf5mh5q6",
+  "fetcher": "github",
+  "repo": "Malabarba/smart-mode-line",
+  "unstable": {
+   "version": [
+    20190527,
+    1156
+   ],
+   "deps": [
+    "rich-minority"
+   ],
+   "commit": "999be065b195f2eddb4e1b629f99038d832d44b7",
+   "sha256": "0jyvyn7pkqvyyv1rga3i10f4cwfbb0miacbib8lsrrhayrnal186"
+  },
+  "stable": {
+   "version": [
+    2,
+    13
+   ],
+   "deps": [
+    "rich-minority"
+   ],
+   "commit": "9a6d821e0c78361ab35c6e403fc582b76558a1a7",
+   "sha256": "164b697xm1rwcggv37dymhf3npbyh2bs59z8b6m5x35lb4c3lf8b"
+  }
+ },
+ {
+  "ename": "smart-mode-line-atom-one-dark-theme",
+  "commit": "0a6f3addec8d8fa957bfbc81071d3a434e843cf0",
+  "sha256": "02hasm2vjvw3r9xkdnn2ddsval8vvhvx15dsac0jp3cc1y1qkm27",
+  "fetcher": "github",
+  "repo": "daviderestivo/smart-mode-line-atom-one-dark-theme",
+  "unstable": {
+   "version": [
+    20200106,
+    2016
+   ],
+   "deps": [
+    "smart-mode-line"
+   ],
+   "commit": "e281b52b164a477fcdb6a468976e8a1bdde1ca26",
+   "sha256": "0m4c63anrmbbdaf0chiagzgkcgbi30bhkjx3v7c4i9nk98yz9zkw"
+  }
+ },
+ {
+  "ename": "smart-mode-line-powerline-theme",
+  "commit": "60072b183151e519d141ec559b4902d20c87904c",
+  "sha256": "0hv3mx39m3l35xhz351zp98321ilr6qq9wzwn1f0ziiv814khcn4",
+  "fetcher": "github",
+  "repo": "Malabarba/smart-mode-line",
+  "unstable": {
+   "version": [
+    20160706,
+    38
+   ],
+   "deps": [
+    "powerline",
+    "smart-mode-line"
+   ],
+   "commit": "999be065b195f2eddb4e1b629f99038d832d44b7",
+   "sha256": "0jyvyn7pkqvyyv1rga3i10f4cwfbb0miacbib8lsrrhayrnal186"
+  },
+  "stable": {
+   "version": [
+    2,
+    13
+   ],
+   "deps": [
+    "powerline",
+    "smart-mode-line"
+   ],
+   "commit": "9a6d821e0c78361ab35c6e403fc582b76558a1a7",
+   "sha256": "164b697xm1rwcggv37dymhf3npbyh2bs59z8b6m5x35lb4c3lf8b"
+  }
+ },
+ {
+  "ename": "smart-newline",
+  "commit": "3f729926f82d6b61f07f5c8a5e19d46afdcad568",
+  "sha256": "1kyk865vkgh05vzlggs3ii81v86fcbcxybfkv5rkyl3fyqpkza1w",
+  "fetcher": "github",
+  "repo": "ainame/smart-newline.el",
+  "unstable": {
+   "version": [
+    20131208,
+    340
+   ],
+   "commit": "0553a9e4be7188352de1a28f2eddfd28e7436f94",
+   "sha256": "0w0v3gzfg3cphz701g30sf7l92v3npsd7028pjp5g7rgv3pwkgsd"
+  }
+ },
+ {
+  "ename": "smart-region",
+  "commit": "cf011493ee3ebc38290ee0349c8475b0588ac928",
+  "sha256": "1bcvxf62bfi5lmhprma9rh670kka9p9ygbkgmv6dg6ajjfsplgwc",
+  "fetcher": "github",
+  "repo": "uk-ar/smart-region",
+  "unstable": {
+   "version": [
+    20150903,
+    1403
+   ],
+   "deps": [
+    "cl-lib",
+    "expand-region",
+    "multiple-cursors"
+   ],
+   "commit": "5a8017fd8e8dc3483865951c4942cab3f96f69f6",
+   "sha256": "0h559cdyln5f4ignx1r86ryi7wizys0gj03dj7lfzaxr7wkd0jaf"
+  }
+ },
+ {
+  "ename": "smart-semicolon",
+  "commit": "fe339b95636b02ceb157294055d2f5f4c4b0b8cf",
+  "sha256": "1vq6l3vc615w0p640wy226z5i7dky666sgzczkngv07kag0iwqp0",
+  "fetcher": "github",
+  "repo": "iquiw/smart-semicolon",
+  "unstable": {
+   "version": [
+    20171008,
+    133
+   ],
+   "commit": "bcea2aa37befa40abf8b24a2d2314904e6df43b3",
+   "sha256": "0c58ncxwf8wakql2pfiawkl3rlfxsf2zy937nvahf9ygiic8bl3y"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "commit": "c11096679dbed3875c37413337ee490ee7951b63",
+   "sha256": "1v6z3a1f6nxc62n7595qnji39ywdsz7xy5bkl2218v3y7gkbc518"
+  }
+ },
+ {
+  "ename": "smart-shift",
+  "commit": "79726ff0fbfa24a44d303cc9719f5962638b47e0",
+  "sha256": "0azahlflnh6sk081k5dcqal6nmwkjnj4dq8pv8ckwf8684zp23d3",
+  "fetcher": "github",
+  "repo": "hbin/smart-shift",
+  "unstable": {
+   "version": [
+    20150203,
+    725
+   ],
+   "commit": "a26ab2b240137e62ec4bce1698ed9c5f7b6d13ae",
+   "sha256": "0azhfffm1bkgjx4i3p9f6x2gmw8kc3fafzqj4vxxdibhn0nizqk8"
+  }
+ },
+ {
+  "ename": "smart-tab",
+  "commit": "ef37935f5f8ed12323374179a0673b5a4af57cdb",
+  "sha256": "1dm67sc1vylpf73m723hfjfqmm2yxrdckrgp6a3nq2586hkkid4l",
+  "fetcher": "git",
+  "url": "https://git.genehack.net/genehack/smart-tab.git",
+  "unstable": {
+   "version": [
+    20200416,
+    2228
+   ],
+   "commit": "67bf4f93f8afca61a3dc4f6c7a34b0b8ca9ede21",
+   "sha256": "1ws49lbafch1rb6g0j9k5h30c9shk3vvqhbjkf4qvhaqii94lgml"
+  }
+ },
+ {
+  "ename": "smart-tabs-mode",
+  "commit": "d712f0fb9538945713faf773772bb359fe6f509f",
+  "sha256": "1fmbi0ypzhsizzb1vm92hfaq23swiyiqvg0pmibavzqyc9lczhhl",
+  "fetcher": "github",
+  "repo": "jcsalomon/smarttabs",
+  "unstable": {
+   "version": [
+    20160629,
+    1452
+   ],
+   "commit": "9cc2594b82b03e7d68645a4878f9359f8b8c34c5",
+   "sha256": "0bjl3j047jh674vyfmh9izwak2yic8f7aqv832hn1inhnavsl3xx"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "8b196d596b331f03fba0efdb4e31d2fd0752c4a7",
+   "sha256": "1kfihh4s8578cwqyzn5kp3iib7f9vvg6rfc3klqzgads187ryd4z"
+  }
+ },
+ {
+  "ename": "smart-window",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0w24v7v0477yl5zchyk6713yqp8lyfz600myvv4dp3kgppxpgd3f",
+  "fetcher": "github",
+  "repo": "dryman/smart-window.el",
+  "unstable": {
+   "version": [
+    20160717,
+    130
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "5996461b7cbc5ab4509ac48537916eb29a8e4c16",
+   "sha256": "0p1cqpdsp2vdx85i22shyzfhz22zwf1k1dxkqcmlgh3y7f4qq8ir"
+  }
+ },
+ {
+  "ename": "smartparens",
+  "commit": "bd98f85461ef7134502d4f2aa8ce1bc764f3bda3",
+  "sha256": "025nfrfw0992024i219jzm4phwf29smc5hib45s6h1s67942mqh6",
+  "fetcher": "github",
+  "repo": "Fuco1/smartparens",
+  "unstable": {
+   "version": [
+    20200324,
+    2147
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "555626a43f9bb1985aa9a0eb675f2b88b29702c8",
+   "sha256": "0hfywwhzv2dphi7gacp1sdyk47cmajzx5sqrcwxkn7mlwx876nsx"
+  },
+  "stable": {
+   "version": [
+    1,
+    11,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "4873352b5d0a1c5142658122de1b6950b8fe7e4d",
+   "sha256": "0zij2f2rjjym98w68jkp10n1ckpfprlkk217c3fg16hz5nq4vnm6"
+  }
+ },
+ {
+  "ename": "smartrep",
+  "commit": "81cb649dc49767c21f79668d6bee950567b05aa0",
+  "sha256": "1ypls52d51lcqhz737rqg73c6jwl6q8b3bwb29z51swyamf37rbn",
+  "fetcher": "github",
+  "repo": "myuhe/smartrep.el",
+  "unstable": {
+   "version": [
+    20150509,
+    230
+   ],
+   "commit": "f0ff5a6d7b8603603598ae3045c98b011e58d86e",
+   "sha256": "1sjwqi8w83qxihqmcm7z0vwmrz1az0y266qgj2nwfv39bri6y4i6"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "0b73bf3d1a3c795671bfee0a36cecfaa54729446",
+   "sha256": "0j5lg9gryl8vbzw8d3r2fl0c9wxa0c193mcvdfidd25b98wccc3f"
+  }
+ },
+ {
+  "ename": "smartscan",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1q0lqms16g7avln1pbxzb49z3w96kv1r7lbh61ijlnz3jips098w",
+  "fetcher": "github",
+  "repo": "mickeynp/smart-scan",
+  "unstable": {
+   "version": [
+    20170211,
+    2033
+   ],
+   "commit": "234e077145710a174c20742de792b97ed2f965f6",
+   "sha256": "1nzkgfr1w30yi88h4kwgiwq4lcd0fpm1cd50gy0csjcpbnyq6ykf"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "13c9fd6c0e38831f78dec55051e6b4a643963176",
+   "sha256": "1sd7dh9114mvr4xnp43xx4b7qmwkaj1a1fv7pwc28fhiy89d2md4"
+  }
+ },
+ {
+  "ename": "smarty-mode",
+  "commit": "5f2a50f62475639af011c99c6cc38928b74b3b0a",
+  "sha256": "06cyr2330asy2dlx81g3h9gq0yhd4pbnmzfvmla7amh4pfnjg14v",
+  "fetcher": "github",
+  "repo": "emacsorphanage/smarty-mode",
+  "unstable": {
+   "version": [
+    20100703,
+    1158
+   ],
+   "commit": "3dfdfe1571f5e9ef55a29c51e5a80046d4cb7568",
+   "sha256": "1vl3nx0y2skb8sibqxvmc3wrmmd6z88hknbry348d0ik3cbr0ijx"
+  }
+ },
+ {
+  "ename": "smbc",
+  "commit": "05b4f16cd8028edc758ada842432df11c8276fd3",
+  "sha256": "0aviqa8mk8dxxnddfskq9jgz3knqhf0frj7gq7nk6ckxkrxrgqn4",
+  "fetcher": "github",
+  "repo": "sakshamsharma/emacs-smbc",
+  "unstable": {
+   "version": [
+    20171229,
+    1808
+   ],
+   "commit": "10538e3d575ba6ef3c94d555af2744b42dfd36c7",
+   "sha256": "0b2fndvp9kzlr65b0gr0z5hmapa4y96a6zvc2nrlijffkgyk05nn"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "commit": "c377b806118d82140197d9cb1095548477e00497",
+   "sha256": "16cj6jsy1psmcjshxb46i44sf1zb9s4mfiagl5cr22njy01ajq1h"
+  }
+ },
+ {
+  "ename": "smblog",
+  "commit": "6469537a11972509fa2bfb10eb3f8816cc98efed",
+  "sha256": "1byalkpc1bcb6p4j4g1cwc4q2i7irxjcphb0hqh1b2k1zixrw5rr",
+  "fetcher": "github",
+  "repo": "aaptel/smblog-mode",
+  "unstable": {
+   "version": [
+    20200424,
+    938
+   ],
+   "commit": "fc949cff7051b31f0dbc7169774144533a27b92f",
+   "sha256": "07ks6d3gs264wv15lxa88pfi6i851h1wd9cacxs81wc7ijqc5sia"
+  }
+ },
+ {
+  "ename": "smeargle",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "04z1prwdd1h91jyf9fnggqp657830657kvbch7m2f2pgmn3czvvs",
+  "fetcher": "github",
+  "repo": "emacsorphanage/smeargle",
+  "unstable": {
+   "version": [
+    20200323,
+    533
+   ],
+   "commit": "a0e9bc2ea694aa2940102e1f4cfd8db8be437931",
+   "sha256": "05n6vgxw91cxk5ri4mmsxc62jcad0yhjjnn16gk1qhjxjqvrlcis"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "0665b1ff5109731898bc4a0ca6d939933b804777",
+   "sha256": "0p0kxmjdr02l9injlyyrnnzqdbb7mirz1xx79c3lw1rgpalf0jnf"
+  }
+ },
+ {
+  "ename": "smex",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "1rwyi7gdzswafkwpfqd6zkxka1mrf4xz17kld95d2ram6cxl6zda",
+  "fetcher": "github",
+  "repo": "nonsequitur/smex",
+  "unstable": {
+   "version": [
+    20151212,
+    2209
+   ],
+   "commit": "55aaebe3d793c2c990b39a302eb26c184281c42c",
+   "sha256": "0xrbkpc3w7yadpjih169cpp75gilsnx4y9akgci5vfcggv4ffm26"
+  },
+  "stable": {
+   "version": [
+    3,
+    0
+   ],
+   "commit": "97b4a4d82a4449e3f1a3fa8a93387d6eb0ef9c26",
+   "sha256": "1hcjh577xz3inx28r8wb4g2b1424ccw8pffvgdmpf80xp1llldj5"
+  }
+ },
+ {
+  "ename": "smiles-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0wf02aj9bhl2m861342f5jfkx3xws1ggcyszfp9jphlykw6r0v9k",
+  "fetcher": "github",
+  "repo": "stardiviner/smiles-mode",
+  "unstable": {
+   "version": [
+    20160717,
+    1120
+   ],
+   "commit": "fbb381758adcb000a0c304be1b797f985f00e2de",
+   "sha256": "07lzr1p58v95a4n6zad8y0dpj7chbxlcmb6s144pvcxx8kjwd4dr"
+  }
+ },
+ {
+  "ename": "sml-modeline",
+  "commit": "4728fce21f03c95bcc2b562648e99c537fb09cd8",
+  "sha256": "00kz03ixkfnm4id8dd8aij2rhakzd4arzd790jdac1y3yyd5pp3y",
+  "fetcher": "github",
+  "repo": "emacsorphanage/sml-modeline",
+  "unstable": {
+   "version": [
+    20170614,
+    2111
+   ],
+   "commit": "d2f9f70174c4cf68c67eb3bb8088235735e34d9a",
+   "sha256": "18k2k213vgawxskp9m57r8qarg3pnza6nvbpyi6l03jnmf2kcw2b"
+  }
+ },
+ {
+  "ename": "smmry",
+  "commit": "ba2d4be4dd4d6c378eabd833f05a944afa21817b",
+  "sha256": "05ikcvyr74jy3digd0ad443h5kf11w29hgnmb71bclm3mfslh5wn",
+  "fetcher": "github",
+  "repo": "microamp/smmry.el",
+  "unstable": {
+   "version": [
+    20161024,
+    901
+   ],
+   "commit": "986a1b0aec8ab1ef17dbfb7886f47e5558cf738a",
+   "sha256": "1gq2066js1kf035217z0n6w0bf0dsyskykf56xycci5s1i7xv2vz"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "commit": "b7ee765337fa627a6c59eb4f2a91df5d280ac6df",
+   "sha256": "0hzs8xi7n3bsqwm3nlm3vk8p2p33ydwxpwk9wp3325g03jl921in"
+  }
+ },
+ {
+  "ename": "smog",
+  "commit": "cc829fc6353e5cd78222eb2c7194eb3b796d2cc9",
+  "sha256": "0qq7ib8gv006jddhzrdfm702bgwgsk3rdd64v67xi5a39csrsfpw",
+  "fetcher": "github",
+  "repo": "zzkt/smog",
+  "unstable": {
+   "version": [
+    20200211,
+    528
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "531957d7356f623b026aa45923e536421f682c1a",
+   "sha256": "0rb8vjnkn9pp0lrmmvsfslmw7xya4n18s82vs98545phwc4bjga5"
+  }
+ },
+ {
+  "ename": "smooth-scroll",
+  "commit": "4ad6411f76281232848c870e8f4f5bb78e6cf328",
+  "sha256": "1b0mjpd4dqgk7ij37145ry2jqbn1msf8rrvymn7zyckbccg83zsf",
+  "fetcher": "github",
+  "repo": "k-talo/smooth-scroll.el",
+  "unstable": {
+   "version": [
+    20130322,
+    414
+   ],
+   "commit": "02320f28abb5cae28b3a18f6b9ce93129bdbfc45",
+   "sha256": "1kkg7qhb2lmwr4siiazqny9w2z9nk799lzl5i159lfivlxcgixmk"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "commit": "02320f28abb5cae28b3a18f6b9ce93129bdbfc45",
+   "sha256": "1kkg7qhb2lmwr4siiazqny9w2z9nk799lzl5i159lfivlxcgixmk"
+  }
+ },
+ {
+  "ename": "smooth-scrolling",
+  "commit": "e156f146649a51f6ee636aef95214944a8079a27",
+  "sha256": "0zy2xsmr05l2narslfgril36d7qfb55f52qm2ki6fy1r18lfiyc6",
+  "fetcher": "github",
+  "repo": "aspiers/smooth-scrolling",
+  "unstable": {
+   "version": [
+    20161002,
+    1949
+   ],
+   "commit": "2462c13640aa4c75ab3ddad443fedc29acf68f84",
+   "sha256": "1h15gjq781i6fsz32qlh51knawdr8hcqvshsz6cszp752cibdcdg"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "commit": "6a1420be510decde0a5eabc56cff229ae554417e",
+   "sha256": "1dkqix0iyjyiqf34h3p8faqcpffc0pwkxqqn80ys9jvj4f27kkrg"
+  }
+ },
+ {
+  "ename": "smotitah",
+  "commit": "326c213450fc515573b963e794584b7b5ac995fa",
+  "sha256": "1m5qjl3r96riljp48il8k4rb6rwys1xf1pl93d4qjhprwvz57mv2",
+  "fetcher": "github",
+  "repo": "laynor/smotitah",
+  "unstable": {
+   "version": [
+    20150218,
+    1030
+   ],
+   "commit": "f9ab562128a5460549d016913533778e8c94bcf3",
+   "sha256": "1a097f1x9l0m4dizvnb742svlqsm6hlif73rk7qjar081sk1gjxx"
+  }
+ },
+ {
+  "ename": "smtpmail-multi",
+  "commit": "835315ec2781ac90785824630510b9eae80c115a",
+  "sha256": "0nc3k8ly4nx7fm3b2apga3p4svz5c9sldnlk86pz2lzra5h3b4ss",
+  "fetcher": "github",
+  "repo": "vapniks/smtpmail-multi",
+  "unstable": {
+   "version": [
+    20160218,
+    2349
+   ],
+   "commit": "83fa9d7a02e000be95cb282c8b48446646896ea1",
+   "sha256": "1x0dn9hd8b0mxdfw0nrsgj4bz4ljf7i9af566iv5fqym1c4wxkhf"
+  }
+ },
+ {
+  "ename": "smyx-theme",
+  "commit": "40a1aeabb75438252ebea0332fe1deaf028c956d",
+  "sha256": "1r85yxr864df5akqknl3hsrmzikr4085bqr6ijrbdj27nz00vl61",
+  "fetcher": "github",
+  "repo": "tacit7/smyx",
+  "unstable": {
+   "version": [
+    20141127,
+    828
+   ],
+   "commit": "6263f6b401bbabaed388c8efcfc0be2e58c51401",
+   "sha256": "1z2sdnf11wh5hz1rkrbg7fs4ha3zrbj9qnvfzq9005y89d7cs95x"
+  }
+ },
+ {
+  "ename": "snakemake-mode",
+  "commit": "c3a5b51fee1c9e6ce7e21555faa355d118d34b8d",
+  "sha256": "1xxd3dms5vgvpn18a70wjprka5xvri2pj9cw8qz09s640f5jf3r4",
+  "fetcher": "github",
+  "repo": "kyleam/snakemake-mode",
+  "unstable": {
+   "version": [
+    20200417,
+    2230
+   ],
+   "deps": [
+    "cl-lib",
+    "magit-popup"
+   ],
+   "commit": "03562dcd82964d53eff7314b844c2897d1d9af55",
+   "sha256": "1cj8628l196da5j54wl8wq7znvha44z1f6w9qqg37yw0pjynbvxz"
+  },
+  "stable": {
+   "version": [
+    1,
+    7,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "magit-popup"
+   ],
+   "commit": "701f970bfb48d2f7abb241b9f69127ff5b667c76",
+   "sha256": "0di8wqwj0l2vx29kkpy2h1yxrxgcq51y2lss5lmqp6kmw3avkvi2"
+  }
+ },
+ {
+  "ename": "snapshot-timemachine",
+  "commit": "69376b802f0687227a78838877d89163b2893c5b",
+  "sha256": "0pvh1ilzv0ambc5cridyhjcxs58wq92bxjkisqv42yar3h3z6f8p",
+  "fetcher": "github",
+  "repo": "mrBliss/snapshot-timemachine",
+  "unstable": {
+   "version": [
+    20161221,
+    929
+   ],
+   "commit": "99efcebab309b11ed512a8dc62555d3834df5efb",
+   "sha256": "18qibcyqxjwpvphmpghppb8ky1xcch1dd4pz91qj5f4h42684ips"
+  }
+ },
+ {
+  "ename": "snapshot-timemachine-rsnapshot",
+  "commit": "94358fb8d1486491903c331d9e90ba5198117aa8",
+  "sha256": "0fxijd94p961ab0p4ddmhja4bfrif2d87v32g4c41amc1klyf25r",
+  "fetcher": "github",
+  "repo": "NicolasPetton/snapshot-timemachine-rsnapshot",
+  "unstable": {
+   "version": [
+    20170324,
+    1213
+   ],
+   "deps": [
+    "seq",
+    "snapshot-timemachine"
+   ],
+   "commit": "72b0b700d80f1a0442e62bbbb6a0c8c59182f97f",
+   "sha256": "1bdy7p0bjfdlv6l6yih6fvvi7xpldal4rj8l2ajpc6sgby24h8bb"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "seq",
+    "snapshot-timemachine"
+   ],
+   "commit": "72b0b700d80f1a0442e62bbbb6a0c8c59182f97f",
+   "sha256": "1bdy7p0bjfdlv6l6yih6fvvi7xpldal4rj8l2ajpc6sgby24h8bb"
+  }
+ },
+ {
+  "ename": "snazzy-theme",
+  "commit": "18c89a612418e0f49b7e6ae29a678d2fc1ffaf3d",
+  "sha256": "0srmhwhqrp1s01p1znhjzs254l3r2i6c91v7cnlwlvrls1sbh32k",
+  "fetcher": "github",
+  "repo": "weijiangan/emacs-snazzy",
+  "unstable": {
+   "version": [
+    20170823,
+    1832
+   ],
+   "deps": [
+    "base16-theme"
+   ],
+   "commit": "57a1763b49b4a776084c16bc70c219246fa5b412",
+   "sha256": "1y2l8b72jzcyarilj4j4q3rwcg0wkn2r3m01k0g2kg73zsffvhss"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "base16-theme"
+   ],
+   "commit": "578d7ebc4ed91c0a630b652c4b6fdd54d9ae16cd",
+   "sha256": "0gykymah4ap7zgjr7fkir21avcdhgy6n88nwxl1iynim3vkq441v"
+  }
+ },
+ {
+  "ename": "snippet",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1yld7y1hsrqs0f0iq7zfwknil5zqv65npm67nh548hbyy3rhgd68",
+  "fetcher": "github",
+  "repo": "pkazmier/snippet.el",
+  "unstable": {
+   "version": [
+    20130210,
+    2315
+   ],
+   "commit": "11d00dd803874b93836f2010b08bd2c97b0f3c63",
+   "sha256": "1nyrfbjrg74wrqlh8229rf7ym07k2a0wscjm0kbg3sam9ryc546y"
+  }
+ },
+ {
+  "ename": "snoopy",
+  "commit": "4a882cd92964ac195a09469006c9a44dc202f000",
+  "sha256": "1wa8jykqyj6rxqfhwbiyli6yh8s7n0pqv7fc9sfaymarda93zbgi",
+  "fetcher": "github",
+  "repo": "anmonteiro/snoopy-mode",
+  "unstable": {
+   "version": [
+    20171008,
+    2004
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "ec4123bdebfe0bb7bf4feaac2dc02b59caffe386",
+   "sha256": "01l44lshw0zvykay9886s1vqryanagkd4ciw3ramchn0baqz11vl"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "ec4123bdebfe0bb7bf4feaac2dc02b59caffe386",
+   "sha256": "01l44lshw0zvykay9886s1vqryanagkd4ciw3ramchn0baqz11vl"
+  }
+ },
+ {
+  "ename": "soar-mode",
+  "commit": "818113ef6f93cc86fd30441d508012e5baa71893",
+  "sha256": "0jm4vllbppzs2vvkky96hwdv581142dxdfssrp6wsd56j38nr9sd",
+  "fetcher": "github",
+  "repo": "adeschamps/soar-mode",
+  "unstable": {
+   "version": [
+    20190503,
+    1843
+   ],
+   "commit": "13b6fca62ea6574d230516fddf359a61f6558ecd",
+   "sha256": "1y1z4lyv1b56sfimfpxzix5zww97hbci8a9q4cphx65hwkgbfa0d"
+  }
+ },
+ {
+  "ename": "socyl",
+  "commit": "774b3006f5b6b781594257f1d9819068becbbcc1",
+  "sha256": "00b7x247cyjh4gci101fq1j6708vbcz1g9ls3845w863wjf6m5sz",
+  "fetcher": "github",
+  "repo": "nlamirault/socyl",
+  "unstable": {
+   "version": [
+    20170212,
+    642
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "pkg-info",
+    "s"
+   ],
+   "commit": "1ef2da42f66f3ab31a34131e51648f352416f0ba",
+   "sha256": "0jks5dkxhhgh4gbli90p71s8354iywlwj2lq6n5fyqxbdxzk412d"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "pkg-info",
+    "s"
+   ],
+   "commit": "fcc0deda5b6c39d25e48e7da2a0ae73295193ea8",
+   "sha256": "1a8qd9hcmp4xl6hyvlq116nr9cn392bmrrda8vqkvjpd8rm8i776"
+  }
+ },
+ {
+  "ename": "soft-charcoal-theme",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1j9yd4kfh7ih5ipmwvxh9qqq6wxv6qk8a9vb5jiyk90dn8a2d7g5",
+  "fetcher": "github",
+  "repo": "mswift42/soft-charcoal-theme",
+  "unstable": {
+   "version": [
+    20140420,
+    1643
+   ],
+   "commit": "5607ab977fae6638e78b1495e02da8955c9ba19f",
+   "sha256": "07056pnjgsgw06c67776qp7jci96iqbzlprbavzz2l1j8ywz8cwm"
+  }
+ },
+ {
+  "ename": "soft-morning-theme",
+  "commit": "26f26cb5cd4ed288a042d37039da83b38b9923d0",
+  "sha256": "0lzg478ax6idzh6m5sf2ds4gbv096y0c0gn15dai19f58bs63xzr",
+  "fetcher": "github",
+  "repo": "mswift42/soft-morning-theme",
+  "unstable": {
+   "version": [
+    20150918,
+    2041
+   ],
+   "commit": "c0f9c70c97ef2be2a093cf839c4bfe27740a111c",
+   "sha256": "06q82v1hndvznsqg0r6jrxvgxhycg9m65kay4db4yy0gmc66v2xf"
+  }
+ },
+ {
+  "ename": "soft-stone-theme",
+  "commit": "e87cea74119e8239662607072a44e5314eeae7ea",
+  "sha256": "05jjw9z6hqln9yj8ya2xrmjnylp7psfdj9206n30m3lwnlwx399v",
+  "fetcher": "github",
+  "repo": "mswift42/soft-stone-theme",
+  "unstable": {
+   "version": [
+    20140614,
+    835
+   ],
+   "commit": "fb475514cfb02cf30ce358a61c48e46614344d48",
+   "sha256": "030mf8b0sf9mmzwhg85zh0ccvcg768kckwvbm0yzg7vmq1x46hjl"
+  }
+ },
+ {
+  "ename": "solaire-mode",
+  "commit": "52c69070eef3003eb53e1436c538779c74670ce6",
+  "sha256": "0pvgip12xl16rwz4wqmqjd8nhh3a299aknfsghazmxigamlmlsl5",
+  "fetcher": "github",
+  "repo": "hlissner/emacs-solaire-mode",
+  "unstable": {
+   "version": [
+    20200423,
+    742
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "adc8c0c60d914f6395eba0bee78feedda128b30b",
+   "sha256": "0kj6lhx57gl3809q4bmgv7cac8wk61g1sdyr4c2a0y9jkzf21x67"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "4ac324ccb0b751be80ce64449553462eafab4f32",
+   "sha256": "1klyzqrlsgx8q89zx1kn5z6wnpv1dmvbglldpv1y74hxhzi6ryps"
+  }
+ },
+ {
+  "ename": "solarized-theme",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "15d8k32sj8i11806byvf7r57rivz391ljr0zb4dx8n8vjjkyja12",
+  "fetcher": "github",
+  "repo": "bbatsov/solarized-emacs",
+  "unstable": {
+   "version": [
+    20200411,
+    1026
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "c8f09494330900081ed5a4f020c972a37fd7b02e",
+   "sha256": "0z5srqz4g81bsyw74q04fwz30qvi4i08s7fszmwnwyr5xrf5dx42"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "55cd77b61b6968048c61e13358ba487d217f24c0",
+   "sha256": "15ql8xcixgm7mbs7rsbybwszanqibq057j5b5ds89a31dw7zxf1g"
+  }
+ },
+ {
+  "ename": "solidity-flycheck",
+  "commit": "e561d869f4e32bad5d1a8678f67e591ff586d6de",
+  "sha256": "1lx64y77q33a2lrg5sj5h56gicw1lk8qmxmva5bgc4zxxd8qwz6f",
+  "fetcher": "github",
+  "repo": "ethereum/emacs-solidity",
+  "unstable": {
+   "version": [
+    20200113,
+    1721
+   ],
+   "deps": [
+    "flycheck",
+    "solidity-mode"
+   ],
+   "commit": "022b3159832384a7dcdc2168809e698600826047",
+   "sha256": "144w84abffbrbb4wflgipndaasx82axf36xm373ybdih4131mi69"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    10
+   ],
+   "deps": [
+    "flycheck",
+    "solidity-mode"
+   ],
+   "commit": "93412f211fad7dfc3b02aa226856fc52b6a15c22",
+   "sha256": "06zqs7p22h1jkm3zs1i16wvch6rnzzb3m8d5r9r51clzpasf6zy8"
+  }
+ },
+ {
+  "ename": "solidity-mode",
+  "commit": "02d3fdae111b14a87aaa7a1b3f44e545c5e3d2ac",
+  "sha256": "15vz3ayl1p3dn2cavm68rqv901c1b7dxm2j8iazwzj3q15ln8xvn",
+  "fetcher": "github",
+  "repo": "ethereum/emacs-solidity",
+  "unstable": {
+   "version": [
+    20200418,
+    921
+   ],
+   "commit": "022b3159832384a7dcdc2168809e698600826047",
+   "sha256": "144w84abffbrbb4wflgipndaasx82axf36xm373ybdih4131mi69"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    10
+   ],
+   "commit": "93412f211fad7dfc3b02aa226856fc52b6a15c22",
+   "sha256": "06zqs7p22h1jkm3zs1i16wvch6rnzzb3m8d5r9r51clzpasf6zy8"
+  }
+ },
+ {
+  "ename": "somafm",
+  "commit": "6003d09cefb7da19baa39b6c4a96d265844abbce",
+  "sha256": "1p3ngn8rfbwvgfnpx4x6g5wspicxh9mmvlsrbax6a7whx0y1bg4f",
+  "fetcher": "github",
+  "repo": "artenator/somafm.el",
+  "unstable": {
+   "version": [
+    20200224,
+    48
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "request"
+   ],
+   "commit": "9fdb75e150e78170b3ca7863a8a0638c6ecc0fc0",
+   "sha256": "0qvr4cga8k4bn0jbfp626cjkxgvqkac902v7hxakj7l47arxcd5z"
+  }
+ },
+ {
+  "ename": "sonic-pi",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0j6n1qgdrma6vvi6f7xiy66qwsl8710pca4ga9i7srhxv0r47x68",
+  "fetcher": "github",
+  "repo": "repl-electric/sonic-pi.el",
+  "unstable": {
+   "version": [
+    20171205,
+    1205
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "highlight",
+    "osc"
+   ],
+   "commit": "3cf101b3b299735ed91658c7791ea4f04164e076",
+   "sha256": "1x2w7qcx9xcvagb47hlc5vsf5aj5mr0mzvnazyd7ajjilbzn48yr"
+  }
+ },
+ {
+  "ename": "soothe-theme",
+  "commit": "6f26b8281f9bd05e3c8f2ef21838275711e622c9",
+  "sha256": "124akv3a4q4vrmprdcjmq7rq6x73mz4wqxvnlczglh9vjl39ndbk",
+  "fetcher": "github",
+  "repo": "emacsfodder/emacs-soothe-theme",
+  "unstable": {
+   "version": [
+    20141027,
+    1441
+   ],
+   "commit": "0786fe70c6c1b4ddcfb932fdc6862b9611cfc09b",
+   "sha256": "10gh1hvxq9gm29r6qzlnva7vjidd7n4kih4z2ihyvbvy9za20xqw"
+  }
+ },
+ {
+  "ename": "sorcery-theme",
+  "commit": "cdb6f1cfbf3bbeb1eeb6440fb216e8e3b523bb0f",
+  "sha256": "1qsavwbqidva4m0mdw393qbwlibhkkywnxj9mshfmkwaq050ivb2",
+  "fetcher": "github",
+  "repo": "vxid/emacs-theme-sorcery",
+  "unstable": {
+   "version": [
+    20200413,
+    2242
+   ],
+   "deps": [
+    "autothemer"
+   ],
+   "commit": "fb041d0d8d4ae2840ddcfb1bd56fefe687da8c52",
+   "sha256": "1j54m18xsn44m5xshmk2pfxn795svjn0zv77qwfxn1d2p5j0r6ni"
+  }
+ },
+ {
+  "ename": "soria-theme",
+  "commit": "9196110908f0d2130f7963499a94853b5192ac8c",
+  "sha256": "1fmys72s4n334m60ywpmbxjbvjwp7qn14pasmnlkv3l1bw6jygsm",
+  "fetcher": "github",
+  "repo": "mssola/soria",
+  "unstable": {
+   "version": [
+    20200505,
+    851
+   ],
+   "commit": "0f73c5a87b874e72ed286cf43e0b8dfec73769c3",
+   "sha256": "0pmsgvmf1ilv2jpay1mwb49rjc1y3h1hhc2kg3rzjpg10p3mak1n"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    2
+   ],
+   "commit": "5edb9379cd21411fb182239ed9ac19be4a278f32",
+   "sha256": "103837zizm5iqv3sskxgkhjij2icjx9sjvjhq2l9zi66rlh9gca7"
+  }
+ },
+ {
+  "ename": "sort-words",
+  "commit": "0a4bd566392d7cebe8a891d787439512e8d34cf9",
+  "sha256": "1hvbq09byjdbqzbyashw3y1h65wins44jnqcdic7vqzd1p1mzwka",
+  "fetcher": "github",
+  "repo": "dotemacs/sort-words.el",
+  "unstable": {
+   "version": [
+    20160929,
+    1335
+   ],
+   "commit": "7b6e108f80237363faf7ec28b2c58dec270b8601",
+   "sha256": "18cwii9h2planb9bgrih4hkz2cqinbl8wq5sal4b8kwnaq07bbw7"
+  }
+ },
+ {
+  "ename": "sos",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "0d0n2h7lbif32qgz0z2c36536mrx36d22gq86xm7kmxday6iy19k",
+  "fetcher": "github",
+  "repo": "rudolfolah/emacs-sos",
+  "unstable": {
+   "version": [
+    20200510,
+    1734
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "6c25beae9f6db8fc7a037112ad5d4be9f5f36986",
+   "sha256": "1ia90sanqbigpag63w953kvfd1gyaakcvh65fsd79pcx4k38p4ly"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "c3906ca6872f460c0bdd276410519308626313f1",
+   "sha256": "0b5w3vdr8llg3hqd22gnc6b6y089lq6vfk0ajkws6gfldz2gg2v1"
+  }
+ },
+ {
+  "ename": "sotclojure",
+  "commit": "3a2ccef8af91eada4449d9cd4bda6bd28272722e",
+  "sha256": "12byqjzg0pffqyq958265qq8yxxmf3iyy4m7zib492qcj8ccy090",
+  "fetcher": "github",
+  "repo": "Malabarba/speed-of-thought-clojure",
+  "unstable": {
+   "version": [
+    20170922,
+    8
+   ],
+   "deps": [
+    "cider",
+    "clojure-mode",
+    "sotlisp"
+   ],
+   "commit": "a480c887b53cb007b7b099c5ffcab89b9e59d7bc",
+   "sha256": "1gf5fsrjigzxabd9k47lb98y3wdjwpw02x9ldnjzrgxfjfbxgqm0"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    1
+   ],
+   "deps": [
+    "cider",
+    "clojure-mode",
+    "sotlisp"
+   ],
+   "commit": "ceac82aa691e8d98946471be6aaff9c9a4603c32",
+   "sha256": "1a6riq7ksk5m76dsgc75d8b992nyr50l48l8cpms9064m6b0r9jv"
+  }
+ },
+ {
+  "ename": "sotlisp",
+  "commit": "1e6aed365c42987d64d0cd9a8a6178339b1b39e8",
+  "sha256": "0zjnn6hhwy6cjvc5rhvhxcq5pmrhcyil14a48fcgwvg4lv7fbljk",
+  "fetcher": "github",
+  "repo": "Malabarba/speed-of-thought-lisp",
+  "unstable": {
+   "version": [
+    20190211,
+    2026
+   ],
+   "commit": "ed2356a325c7a4a88ec1bd31381c8666e8997e97",
+   "sha256": "1r7skjxiaqdkrhjrxh1sgzikip9sdr8apphgawvq4x6lir8g8jfz"
+  },
+  "stable": {
+   "version": [
+    1,
+    6,
+    2
+   ],
+   "commit": "fffe8d0b42b143a2e7df0470d9049fa57b6ecac5",
+   "sha256": "0j5zwb1ypqps30126w2684lmjh8ia4qxg8inlajcbv8i3pbai7k6"
+  }
+ },
+ {
+  "ename": "sound-wav",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "1sb3345x6rbbxr71x12fj6bzzvj6nin712777rxk59riam4nknd6",
+  "fetcher": "github",
+  "repo": "emacsorphanage/sound-wav",
+  "unstable": {
+   "version": [
+    20200323,
+    728
+   ],
+   "deps": [
+    "cl-lib",
+    "deferred"
+   ],
+   "commit": "8a18f8a62f4fdde80dfa069986aa959091a42472",
+   "sha256": "18iahla8m9b6bdn63x2yrvr3rzyw5ybipf44q9avyy6s1pqsby2a"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "deferred"
+   ],
+   "commit": "2a8c8a9bd797dfbf4a0aa1c023a464b803227ff8",
+   "sha256": "1ba1r359cb1dms24ajn0xfrqn8c9y08m6m7dwgxpylyyjwh1096y"
+  }
+ },
+ {
+  "ename": "soundcloud",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "06cbr1h03k5ixam6lsr82lx3nh2kkp0416mlig0zfkd4b8a9mf8c",
+  "fetcher": "github",
+  "repo": "thieman/soundcloud.el",
+  "unstable": {
+   "version": [
+    20150502,
+    326
+   ],
+   "deps": [
+    "deferred",
+    "emms",
+    "json",
+    "request",
+    "request-deferred",
+    "string-utils"
+   ],
+   "commit": "f998d4276ea90258909c698f6a5a51fccb667c08",
+   "sha256": "1m8wcm6y80gq5rrm4brd3f20kmk54s6ph26j4lz4cmilxk6gj56v"
+  }
+ },
+ {
+  "ename": "soundklaus",
+  "commit": "811d0f1d195a0c6533fd412f0e444100e0685f90",
+  "sha256": "0b63sbgwp99ff94dxrqqp2p99j268fjkkzx0g42g726hv80d4fxb",
+  "fetcher": "github",
+  "repo": "r0man/soundklaus.el",
+  "unstable": {
+   "version": [
+    20191220,
+    2112
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "emms",
+    "pkg-info",
+    "request",
+    "s"
+   ],
+   "commit": "15ce6e7f24a45e4f202d83cca9fa3bfdd94ca592",
+   "sha256": "03c86qxdya306p6150f3vwhlh51q5vsbgqzgcdxhm72raf32gs59"
+  }
+ },
+ {
+  "ename": "sourcekit",
+  "commit": "45969cd5cd936ea61fbef4722843b0b0092d7b72",
+  "sha256": "1lvk3m86awlinivpg89h6zvrwrdqa5ljdp563k3i4h9384w82pks",
+  "fetcher": "github",
+  "repo": "nathankot/company-sourcekit",
+  "unstable": {
+   "version": [
+    20180101,
+    834
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "request"
+   ],
+   "commit": "abf9bc5a0102eb666d3aa6d6bf22f6efcc852781",
+   "sha256": "1g8a4fgy2c5nqk8gysbnzn5jvfw6ynmfhc6j3hkrbswgf9188v5n"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "request"
+   ],
+   "commit": "8ba62ac25bf533b7f148f333bcb5c1db799f749b",
+   "sha256": "01dh0wdaydiai4v13r8g05rpiwqr5qqi34wif8vbk2mrr25wc7i9"
+  }
+ },
+ {
+  "ename": "sourcemap",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "1yxjvv3vg14in492hzb3czjfwrg2qp60h4mpxxpx18cjgx8mkybr",
+  "fetcher": "github",
+  "repo": "emacsorphanage/sourcemap",
+  "unstable": {
+   "version": [
+    20200315,
+    1037
+   ],
+   "commit": "bb2a56b2feb62b0c77d7f03ef2acd94f91be6b3f",
+   "sha256": "1qr5syl2wm7z1gkgafdhch6n7fg3qc09k8dhv983kq4vg5kp36ml"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "64c89d296186f48d9135fb8aad501de19f64bceb",
+   "sha256": "115g2mfpbfywp8xnag4gsb50klfvplqfh928a5mabb5s8v4a3582"
+  }
+ },
+ {
+  "ename": "sourcerer-theme",
+  "commit": "8532e062b1830d8cf4e7f72518131a1f32762b37",
+  "sha256": "0xikcln8sz3cic5a77cdvq2aazy1csf1qfxgmcavpqz54ps14j1z",
+  "fetcher": "github",
+  "repo": "gilbertw1/sourcerer-emacs",
+  "unstable": {
+   "version": [
+    20161014,
+    1625
+   ],
+   "commit": "c7f8e665d53bb48fb72f95f706710d53d24bd407",
+   "sha256": "06bxsbjyrn4grp9i17p90cs4x50cmw62k6a2c6gapkw8f1xbv7xv"
+  }
+ },
+ {
+  "ename": "sourcetrail",
+  "commit": "9713bd8030657c8e867409a6aa8173219809173a",
+  "sha256": "0qa3iw82dbfc1b45505s39m99r0m2473312prws6hch0qhjyji7h",
+  "fetcher": "github",
+  "repo": "CoatiSoftware/emacs-sourcetrail",
+  "unstable": {
+   "version": [
+    20170410,
+    2137
+   ],
+   "commit": "b8d5557aa565ae979622312576db20515f65f977",
+   "sha256": "1aqkkbf0xw4kqsy1jjn4xhs5vk2vcsqzs7f4p2sf1plnzsqxflw8"
+  }
+ },
+ {
+  "ename": "space-theming",
+  "commit": "5529fcf16b877b01ee0aff710ebfb0ad5da8dba1",
+  "sha256": "0khjdmqv1q2pdas0xjfqs68xjg2nqms6g21bplg54ynsqcp7asv9",
+  "fetcher": "github",
+  "repo": "p3r7/space-theming",
+  "unstable": {
+   "version": [
+    20200502,
+    1032
+   ],
+   "commit": "31dca6954df643255175f7df68a86892aa3c71a7",
+   "sha256": "1bc6bsilsv1p3i39n14vnsrk9bz738n7fw16jv72qv74xkvqkyr0"
+  }
+ },
+ {
+  "ename": "spacebar",
+  "commit": "e4d1808eabdb9081441e01526efe81782ae0122f",
+  "sha256": "0kpmgirg3s57qkzrlbicz2jwgwlyg9jlxy6kxkqxixf1h0z5wy7n",
+  "fetcher": "github",
+  "repo": "matthias-margush/spacebar",
+  "unstable": {
+   "version": [
+    20190719,
+    334
+   ],
+   "deps": [
+    "eyebrowse"
+   ],
+   "commit": "2b2cd0e786877273103f048e62a06b0027deca2d",
+   "sha256": "08jfqvm8xfw0mhgfns6q2ysfwqr6g6iz8vc4g4svdbsimmfhf6ka"
+  }
+ },
+ {
+  "ename": "spacegray-theme",
+  "commit": "fada130a1e2927d98526f4629cc1101d93e787c5",
+  "sha256": "0khiddpsywpv9qvynpfdmybd80lbrhm68j3py6ranxlv7p79j9dx",
+  "fetcher": "github",
+  "repo": "bruce/emacs-spacegray-theme",
+  "unstable": {
+   "version": [
+    20150719,
+    1931
+   ],
+   "commit": "9826265c2bceb2ebc1c5e16a45021da0253ace97",
+   "sha256": "0aplwmm17ypbns5blc4rf5rr6dasj0zp5ibykpfl43fh4bd8z89n"
+  }
+ },
+ {
+  "ename": "spaceline",
+  "commit": "46e4c876aeeb0bb0d0e81dcbb8363a5db9c3ff61",
+  "sha256": "0jpcj0i8ckdylrisx9b4l9kam6kkjzhhv1s7mwwi4b744rx942iw",
+  "fetcher": "github",
+  "repo": "TheBB/spaceline",
+  "unstable": {
+   "version": [
+    20191230,
+    1221
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "powerline",
+    "s"
+   ],
+   "commit": "1b26af2c1a701481ac5d90928fe0200e389756c3",
+   "sha256": "11lwckqcgzsahrkkm5wk1ph4kc7d4yz05r7251g8c9f0q6vdj9dp"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "powerline",
+    "s"
+   ],
+   "commit": "2d1a7bfb5bdaf24958f50b4bf93182847916af85",
+   "sha256": "1q8r95zfrh0vxna5ml2pq9b9f66clfqcl4d2qy2aizkvzyxg6skl"
+  }
+ },
+ {
+  "ename": "spaceline-all-the-icons",
+  "commit": "d039e057c1d441592da8f54e6d524b395b030375",
+  "sha256": "1h6clkr2f29k2vw0jcrmnfbjpphaxm7s3zai6pn6qag32bgm3jq6",
+  "fetcher": "github",
+  "repo": "domtronn/spaceline-all-the-icons.el",
+  "unstable": {
+   "version": [
+    20190325,
+    1602
+   ],
+   "deps": [
+    "all-the-icons",
+    "memoize",
+    "spaceline"
+   ],
+   "commit": "5afd48c10f1bd42d9b9648c5e64596b72f3e9042",
+   "sha256": "1chv6lv216qa88fm2wil45x19dzahcclr9p5vizcziq180dnmass"
+  },
+  "stable": {
+   "version": [
+    1,
+    4,
+    0
+   ],
+   "deps": [
+    "all-the-icons",
+    "memoize",
+    "spaceline"
+   ],
+   "commit": "7eafe2d7a81f8d10e03498bdcc3bec0ea50f905d",
+   "sha256": "186v71d8n1iy73drayyf57pyzlz973q74mazkyvb8w3fj8bb3llm"
+  }
+ },
+ {
+  "ename": "spacemacs-theme",
+  "commit": "6c8ac39214856c1598beca0bd609e011b562346f",
+  "sha256": "0riiim6qb6x9g5hz0k3qgdymgikynlb9l07mrbfmybkv4919p992",
+  "fetcher": "github",
+  "repo": "nashamri/spacemacs-theme",
+  "unstable": {
+   "version": [
+    20200324,
+    1107
+   ],
+   "commit": "f79c40fb241e204539fde97200abae91e828e585",
+   "sha256": "1l2kkiyrskkpx8f901v0wrzaah1wjg15zdyv88spj3mh3hwd3b6n"
+  }
+ },
+ {
+  "ename": "spaces",
+  "commit": "fa5d57074f73cf11607f2f1610f92a0c77367f2a",
+  "sha256": "152x7fzjnjjdk9d9h0hbixdp3haqn5vdx3bq1nfqfrkvzychyr06",
+  "fetcher": "github",
+  "repo": "chumpage/chumpy-windows",
+  "unstable": {
+   "version": [
+    20170809,
+    2208
+   ],
+   "commit": "6bdb51e9a346907d60a9625f6180bddd06be6674",
+   "sha256": "1wkyvfqmf24c8kb162pwi6wcm88bzf0x9mxljzkx0s8bq9aliny6"
+  }
+ },
+ {
+  "ename": "spark",
+  "commit": "f4d1529ab86de7c033579b1a1d0084899c16f454",
+  "sha256": "0dv7ixv9gw6xxhw5zm4gmv2ll4lja8hmn2pdizlqxaizpm245rkn",
+  "fetcher": "github",
+  "repo": "alvinfrancis/spark",
+  "unstable": {
+   "version": [
+    20160415,
+    201
+   ],
+   "commit": "0bf148c3ede3b31d56fd75f347cdd0b0eae60025",
+   "sha256": "1ykqr86j17mi95s08d9fp02d7ych1331b04dcqxzxnmpkhwngyj1"
+  }
+ },
+ {
+  "ename": "sparkline",
+  "commit": "7278ca31ee3c035c8ec754af152127776f04792e",
+  "sha256": "081jzaxjb32nydvr1kmyafxqxi610n0yf8lwz9vldm84famf3g7y",
+  "fetcher": "github",
+  "repo": "woudshoo/sparkline",
+  "unstable": {
+   "version": [
+    20150101,
+    1319
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a2b5d817d272d6363b67ed8f8cc75499a19fa8d2",
+   "sha256": "1fqd3ycywxxmln2kzqwflc69xmqlvi9gwvmf7frn0rfv73w09cvp"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "e44498cf1a58fb165991198fe5104d51c92ea904",
+   "sha256": "1gmmmkzxxlpz2ml6qk24vndlrbyl55r5cba76jn342zrxvb357ny"
+  }
+ },
+ {
+  "ename": "sparql-mode",
+  "commit": "c3d729130a41903bb01465d0f01c34fbc508b56e",
+  "sha256": "1xicrfmgxpb31lz30qj450w8v7dl4ipjp7b2wz54s4kn88nsfj7d",
+  "fetcher": "github",
+  "repo": "ljos/sparql-mode",
+  "unstable": {
+   "version": [
+    20200429,
+    1719
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "62f198256453265af48bef3a0207e80143fbff1e",
+   "sha256": "0a49678yaq2vc04w4xp0i9lpb7bdf1fwhjkg0xnzssvnjcnk368k"
+  },
+  "stable": {
+   "version": [
+    4,
+    0,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "2837b97244111515c61fb3823c1479bc126a458b",
+   "sha256": "0hqp8r24wvzrkl630wbm0lynrcrnawv2yn2a3xgwqwwhwgva35rn"
+  }
+ },
+ {
+  "ename": "speech-tagger",
+  "commit": "db80aa5d95846ee02a9d762aa68325ab5e37dcf7",
+  "sha256": "0sqil949ny9qjxq7kpb4zmjd7770r0qvq4sz80agw6a27mqnaajc",
+  "fetcher": "github",
+  "repo": "cosmicexplorer/speech-tagger",
+  "unstable": {
+   "version": [
+    20170728,
+    1829
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "61955b40d4e8b09e66a3e8033e82893f81657c06",
+   "sha256": "07rgs1f9z2ayphv04jdjk9v1s2s47qvksf64z6qn1zss2alc0y0v"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    0
+   ],
+   "commit": "e6595bd0eea93ede1534c536c1746c9cf763b73c",
+   "sha256": "1k6c7450v0ln6l9b8z1hib2s2b4rmjbskynvwwyilgdnvginfhi3"
+  }
+ },
+ {
+  "ename": "speechd-el",
+  "commit": "96669a664122c2fb69acd4cad2d7bf75d3e8272d",
+  "sha256": "0p8zih9s2x6l2xcfjbzriyhsicaiwxz54iq9h3c8szlzq708mayc",
+  "fetcher": "github",
+  "repo": "brailcom/speechd-el",
+  "unstable": {
+   "version": [
+    20200122,
+    2036
+   ],
+   "commit": "590278f2b37919d082f576e522cbb790167a7f8d",
+   "sha256": "0s2znn91jy342xrcsda6mbf78f19ixxf5lf401jls8l5gj9bnx7f"
+  }
+ },
+ {
+  "ename": "speed-type",
+  "commit": "d6c33b5bd15875baea0fd2f24ee8ec9414a6f7aa",
+  "sha256": "0lsbi3b6v7fiwpvydgwcqx3y5i7bysfjammly22qpz3kcjmlvi06",
+  "fetcher": "github",
+  "repo": "parkouss/speed-type",
+  "unstable": {
+   "version": [
+    20191204,
+    1107
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "5ef695f7159aa1f20c7c9e55f0c39bcdacce8d21",
+   "sha256": "17xh7f1ps6bfs55a08d0jjma2hs117fv4j90w4xif0n2h49m4pjp"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "5ef695f7159aa1f20c7c9e55f0c39bcdacce8d21",
+   "sha256": "17xh7f1ps6bfs55a08d0jjma2hs117fv4j90w4xif0n2h49m4pjp"
+  }
+ },
+ {
+  "ename": "speedbar-git-respect",
+  "commit": "f468cf6a61479f15d02368ed8c3f6c94214d72db",
+  "sha256": "15py09mjkjci00578nlvniw3inr4jdr8sashkv5li5kzl6b30gwk",
+  "fetcher": "github",
+  "repo": "ukari/speedbar-git-respect",
+  "unstable": {
+   "version": [
+    20191121,
+    2120
+   ],
+   "deps": [
+    "f"
+   ],
+   "commit": "4703650c20cb77f08833747529b55be13d450bae",
+   "sha256": "0qb2azx3blm8iz0y5f8p5zxkbmx6pjzxwpfzg64qi3741xijv8lw"
+  }
+ },
+ {
+  "ename": "speeddating",
+  "commit": "01e23a3e2a2495e86aba60302dbd06f3b25768b4",
+  "sha256": "0b5lcb1inkcx94grib5ssv1qkbzxqryzm115qizlgfs04k8cwz09",
+  "fetcher": "github",
+  "repo": "xuchunyang/emacs-speeddating",
+  "unstable": {
+   "version": [
+    20180319,
+    723
+   ],
+   "commit": "df69db0560f19636a66a74f3d88c793bbb18b21e",
+   "sha256": "0mhzjia900irv0ndiw6w2vzin1gvyaf48pghi16r562ci4lr963w"
+  }
+ },
+ {
+  "ename": "spell-fu",
+  "commit": "abaa6522f18ca1f47788ebb3281fbfcdade2b7c7",
+  "sha256": "0c2yi5lz2ww7mm9ih3m374w65n73z4knhnbrvdyzd7ja3xb3l17n",
+  "fetcher": "gitlab",
+  "repo": "ideasman42/emacs-spell-fu",
+  "unstable": {
+   "version": [
+    20200426,
+    600
+   ],
+   "commit": "e62cfc4f08fc4743d6961fe3402adbf2260d7e70",
+   "sha256": "1w6jsn3p6956vk5pzwlbc211sswqai8ary8ad3fbhbjwxl5z3gsc"
+  }
+ },
+ {
+  "ename": "sphinx-doc",
+  "commit": "a3b80d346ad4fb415970beddb5f02ae795fbf1b4",
+  "sha256": "00h3wx2p5hzbw6sggggdrzv4jrn1wc051iqql5y2m1hsh772ic5z",
+  "fetcher": "github",
+  "repo": "naiquevin/sphinx-doc.el",
+  "unstable": {
+   "version": [
+    20160116,
+    1117
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "s"
+   ],
+   "commit": "f39da2e6cae55d5d7c7ce887e69755b7529bcd67",
+   "sha256": "1wif9wf8hwxk0q09cdnrmyas7zjg8l5b8jd6sjxd40ypn6dmz2ch"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "s"
+   ],
+   "commit": "b3459ecb9e6d3fffdee3cb7342563a56a32ce666",
+   "sha256": "1q6v0xfdxm57lyj4zxyqv6n5ik5w9drk7yf9w8spb5r22jg0dg8c"
+  }
+ },
+ {
+  "ename": "sphinx-frontend",
+  "commit": "4cf72e71f159b9eaaa0834682d5dd4eb258616cf",
+  "sha256": "0hdn6zjnhzyka0lzdxqfzbj3lrj767ij406zha9zw8ibbkk7cmag",
+  "fetcher": "github",
+  "repo": "kostafey/sphinx-frontend",
+  "unstable": {
+   "version": [
+    20161025,
+    758
+   ],
+   "commit": "0cbb03361c245382d3e679dded30c4fc1713c252",
+   "sha256": "1ksjgd995pcb4lvwip08i8ay0xpin8dcam3hcgnbjjqjg9hja1cf"
+  }
+ },
+ {
+  "ename": "sphinx-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0f5xkaqsmxc4bfz80njlc395dcw2dbvmzx6h9fw31mylshzbmrys",
+  "fetcher": "github",
+  "repo": "Fuco1/sphinx-mode",
+  "unstable": {
+   "version": [
+    20180620,
+    915
+   ],
+   "deps": [
+    "dash",
+    "f"
+   ],
+   "commit": "b5ac514e213459dcc57184086f10b5b6be3cecd8",
+   "sha256": "06r50n159g18fi03xyxzkv7zr6cvs29ly1yyrmyjl9m6dn97m9mc"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "3d6e3059350593dc077f06f54c33869b9e28f7bc",
+   "sha256": "0l3a8swmf3sm54ayk2ahh1i5j1hf0hd822dfmx50kgwi4wpv48sp"
+  }
+ },
+ {
+  "ename": "spice-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1my6dbdnf4scshjf299d4n7vsdq3cxhq9kmqvirs45y3qjm7pgpg",
+  "fetcher": "github",
+  "repo": "stardiviner/spice-mode",
+  "unstable": {
+   "version": [
+    20190608,
+    1033
+   ],
+   "commit": "e5e0644f03f9696f56dd69e2b6979da7f30ed600",
+   "sha256": "01905cdplj9icbxzr7sqb62x5qchzgvs8qjf5s4qga4x3vjh1dc4"
+  }
+ },
+ {
+  "ename": "spiral",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "074ymaksb3dgrsrdsi6xdlvigki5l2v66r8204xv50yc88z7l8qr",
+  "fetcher": "github",
+  "repo": "Unrepl/spiral",
+  "unstable": {
+   "version": [
+    20180223,
+    1140
+   ],
+   "deps": [
+    "a",
+    "avy",
+    "clojure-mode",
+    "highlight",
+    "treepy"
+   ],
+   "commit": "907b9792467139a942ba7b07ca0276b90770baf9",
+   "sha256": "1rggzzvya26abbzd8bc2kpv59kzgm75wqv1vwqnj9c8im1jvs1na"
+  }
+ },
+ {
+  "ename": "splitjoin",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "0g2i1q1npwrczgzp5321lpljff2ykmq932lzj6pdwnn6cyqixzzb",
+  "fetcher": "github",
+  "repo": "emacsorphanage/splitjoin",
+  "unstable": {
+   "version": [
+    20150505,
+    1432
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "e2945ee269e6e90f0243d6f2a33e067bb0a2873c",
+   "sha256": "1qdy9nc2h7mwxh7zg2p1x7yg96hxkwxqimjp6zb1119jx0s8grjc"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "0eb91e7beec915065cd6c00ceaca180a64d85cda",
+   "sha256": "17qsmjsbk8aq3azjxid6h9fzz77bils74scp21sqn8vdnijx8991"
+  }
+ },
+ {
+  "ename": "splitter",
+  "commit": "129f0d20616226c449bdaf672c43a06e8f281869",
+  "sha256": "02vdhvipzwnh6mlj25lirzxkc0shfzqfs1p4gn3smkxqx6g7mdb2",
+  "fetcher": "github",
+  "repo": "chumpage/chumpy-windows",
+  "unstable": {
+   "version": [
+    20170809,
+    2208
+   ],
+   "commit": "6bdb51e9a346907d60a9625f6180bddd06be6674",
+   "sha256": "1wkyvfqmf24c8kb162pwi6wcm88bzf0x9mxljzkx0s8bq9aliny6"
+  }
+ },
+ {
+  "ename": "spotify",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "07y6d3cz3nziasza3znysvcnx3kw156ab78kw5y0pdll45nw210x",
+  "fetcher": "github",
+  "repo": "remvee/spotify-el",
+  "unstable": {
+   "version": [
+    20181030,
+    810
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "29577cf1188161f98b8358c149aaf47b2c137902",
+   "sha256": "0h6yhfvvyd9sd5d37d3ng3z56zfb546vl95qjq16kcvxq00hdn1v"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    4
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "29577cf1188161f98b8358c149aaf47b2c137902",
+   "sha256": "0h6yhfvvyd9sd5d37d3ng3z56zfb546vl95qjq16kcvxq00hdn1v"
+  }
+ },
+ {
+  "ename": "spotlight",
+  "commit": "26e0eba715c869c5bd295afb8971d490e80f6e2b",
+  "sha256": "0mmr1spr21pi8sfy95dsgqcxn8qfsphdkfjm5w5q97lh7496z65p",
+  "fetcher": "github",
+  "repo": "benmaughan/spotlight.el",
+  "unstable": {
+   "version": [
+    20200109,
+    2137
+   ],
+   "deps": [
+    "counsel",
+    "swiper"
+   ],
+   "commit": "ea71f4fd380c51e50c47bb25855af4f40e4d8da0",
+   "sha256": "1dda4gwxyhnr73ckjr70yjah9dmddvyfcwlrbb6d6bidb70ib0dj"
+  }
+ },
+ {
+  "ename": "spray",
+  "commit": "e4f5053aa4e1af3f636febe9c3ce8c6ae20c090d",
+  "sha256": "1h8lngcqa343mlc091zs419frgsla65khfj93lv9fil3xbgrm7m9",
+  "fetcher": "gitlab",
+  "repo": "iankelling/spray",
+  "unstable": {
+   "version": [
+    20160304,
+    2220
+   ],
+   "commit": "00638bc916227f2f961013543d10e85a43a32e29",
+   "sha256": "1avbfr32dvff26kgvd5vgan99nb5c6al9kv5xbmy2rcls17py7r2"
+  }
+ },
+ {
+  "ename": "springboard",
+  "commit": "138b8a589725ead2fc1de9ea76c55e3eb2473872",
+  "sha256": "17rmsidsbb4p08vr07mfn25m17wnpadcwr4nxvp79glp5a0wyyib",
+  "fetcher": "github",
+  "repo": "jwiegley/springboard",
+  "unstable": {
+   "version": [
+    20170106,
+    755
+   ],
+   "deps": [
+    "helm"
+   ],
+   "commit": "687d1e5898a880878995dc9bffe93b4598366203",
+   "sha256": "0fn8c4hqblfjvcpg68kj2dmdjqsdnxddqbzgvakl43zckjg8pi01"
+  }
+ },
+ {
+  "ename": "sprintly-mode",
+  "commit": "8730956d3f00e030e06ef54c3f2aecc10bb40f9d",
+  "sha256": "15i3rrv27ccpn12wwj9raaxpj7nlnrrj3lsp8vdfwph6ydvnfza4",
+  "fetcher": "github",
+  "repo": "sprintly/sprintly-mode",
+  "unstable": {
+   "version": [
+    20121006,
+    534
+   ],
+   "deps": [
+    "furl"
+   ],
+   "commit": "6695892bae5860b5268bf3ae62be990ee9b63c11",
+   "sha256": "06rk07h92s5sljprs41y3q31q64cprx9kgs56c2j6v4c8cmsq5h6"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    4
+   ],
+   "deps": [
+    "furl"
+   ],
+   "commit": "6695892bae5860b5268bf3ae62be990ee9b63c11",
+   "sha256": "06rk07h92s5sljprs41y3q31q64cprx9kgs56c2j6v4c8cmsq5h6"
+  }
+ },
+ {
+  "ename": "sproto-mode",
+  "commit": "ac2b4207c4eaa3a048e245242489462a69b4af67",
+  "sha256": "19l6si3sx2i542r5lyr9axby9hblx76m77f17vnsjf32n3r0qgma",
+  "fetcher": "github",
+  "repo": "m2q1n9/sproto-mode",
+  "unstable": {
+   "version": [
+    20151115,
+    1805
+   ],
+   "commit": "0583a88273204dccd884b7edaa3590cefd31e7f7",
+   "sha256": "11igl9n2zwwar1xg651g5v0r0w6xl0grm8xns9wg80351ijrci7x"
+  }
+ },
+ {
+  "ename": "sprunge",
+  "commit": "f7b9f8cc2f2f8f8e1cf80b3e76c89b9f12cacf95",
+  "sha256": "199vfl6i881aks8fi9d9w4w7mnc7n443h79p3s4srcpmbyfg6g3w",
+  "fetcher": "github",
+  "repo": "tomjakubowski/sprunge.el",
+  "unstable": {
+   "version": [
+    20160301,
+    243
+   ],
+   "deps": [
+    "cl-lib",
+    "request"
+   ],
+   "commit": "0fd386b8b29c4175022a04ad70ea5643185b6726",
+   "sha256": "03wjzk1ljclfjgqzkg6m7v8saaajgavyd0xskd8fg8rdkx13ki0l"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "request"
+   ],
+   "commit": "0fd386b8b29c4175022a04ad70ea5643185b6726",
+   "sha256": "03wjzk1ljclfjgqzkg6m7v8saaajgavyd0xskd8fg8rdkx13ki0l"
+  }
+ },
+ {
+  "ename": "spu",
+  "commit": "8f2ef1e83c924d5411b47a931432f129db95ff2c",
+  "sha256": "0g7j0rz6ga6x6akiijp4vg5iymvqx5d08d60cz6dccq120fi95v8",
+  "fetcher": "github",
+  "repo": "mola-T/SPU",
+  "unstable": {
+   "version": [
+    20161214,
+    324
+   ],
+   "deps": [
+    "signal",
+    "timp"
+   ],
+   "commit": "41eec86b595816e3852e8ad1a8e07e51a27fd065",
+   "sha256": "1j77h761vf74y9sfjpidgaznail95hsg9akjs55sz1xiyy7hkgyw"
+  }
+ },
+ {
+  "ename": "sql-clickhouse",
+  "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228",
+  "sha256": "1sxh22dl0px81z85dj9r97nj8pnc6g9ah06q1bgf3bii7yl6qdy8",
+  "fetcher": "github",
+  "repo": "rschwarz/sql-clickhouse",
+  "unstable": {
+   "version": [
+    20191209,
+    1443
+   ],
+   "commit": "8403a4a5d332dbb6459b7fbce6ea95c36d390a5b",
+   "sha256": "0c039m67jc2xq9pmn0xmqr07nzdssc4vbk51ng0272kcs9mbslrf"
+  }
+ },
+ {
+  "ename": "sql-impala",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1mh36ycqgr07r0hknkr6vb4k0r5b2h8bqd7m5faz9p56qbisgvvh",
+  "fetcher": "github",
+  "repo": "jterk/sql-impala",
+  "unstable": {
+   "version": [
+    20181218,
+    410
+   ],
+   "commit": "466e7c0c789ec3e5e8a276c8f6754f91bb584c3e",
+   "sha256": "02psgbm06wivdm2cmjnj2vy05lnljxn44hj2arw2fr7x2qwn9r35"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "466e7c0c789ec3e5e8a276c8f6754f91bb584c3e",
+   "sha256": "02psgbm06wivdm2cmjnj2vy05lnljxn44hj2arw2fr7x2qwn9r35"
+  }
+ },
+ {
+  "ename": "sql-presto",
+  "commit": "a21349775e018822a06bca3c3c338879548e286f",
+  "sha256": "1rjfgvwgl63xn047vmsmj1s31wvrd24v6ibf9nri6qmffhv9i9zb",
+  "fetcher": "github",
+  "repo": "kat-co/sql-prestodb",
+  "unstable": {
+   "version": [
+    20190113,
+    1742
+   ],
+   "commit": "bcda455e300a1af75c7bb805882329bc844703b2",
+   "sha256": "00whmsylr802fx87yqbr06rbymyln7kq7750pcz26xm1jgja7cax"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    4
+   ],
+   "commit": "bcda455e300a1af75c7bb805882329bc844703b2",
+   "sha256": "00whmsylr802fx87yqbr06rbymyln7kq7750pcz26xm1jgja7cax"
+  }
+ },
+ {
+  "ename": "sql-sqlline",
+  "commit": "0fd21ac42207156f7300f4ab6ac082c801740daf",
+  "sha256": "1b5jkdajif0yc558nv29y8vimnj6bq52z2m91qj6mplcbgpdrnn6",
+  "fetcher": "gitlab",
+  "repo": "matteo.redaelli/sql-sqlline",
+  "unstable": {
+   "version": [
+    20191028,
+    939
+   ],
+   "commit": "990c79b7ebbf8ecb1e1161c9a942973efd8e2833",
+   "sha256": "0jl13ymbb0yxvkqipw821wq797izzj5j72vzdc5d30dwdd2wxm83"
+  }
+ },
+ {
+  "ename": "sqlformat",
+  "commit": "6bdaa1ccae12f2ea779ac6989607d8027feac2c9",
+  "sha256": "07lf2gx629429b41qr04gl98gplb538gb5hw7idzrmi3higrmv8m",
+  "fetcher": "github",
+  "repo": "purcell/sqlformat",
+  "unstable": {
+   "version": [
+    20200327,
+    2329
+   ],
+   "deps": [
+    "reformatter"
+   ],
+   "commit": "2f10382034cd5cd2356cc69b4a1e9116d77a0d86",
+   "sha256": "18z9hljifw63zy4jrsyg4x2lqzgx29sfibx3maj0dm90yzj6zmcg"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "b70b05bf469a27c1a2940eeaa1a5c8cc93d805fd",
+   "sha256": "14n2yjmi4ls8rmpvvw6d7cz5f6dcg7laaljxnhwbagfd5j4sdfrm"
+  }
+ },
+ {
+  "ename": "sqlite",
+  "commit": "949556b57cea0fbbfc98b95d894de95257dfe1e5",
+  "sha256": "1c5dprdl8q09yd0kvpkm19z60m9rhkilj5zmj938wlj5bmdlydv8",
+  "fetcher": "gitlab",
+  "repo": "cnngimenez/sqlite.el",
+  "unstable": {
+   "version": [
+    20180708,
+    1711
+   ],
+   "commit": "dad42b8bbca4994be1871343dd18fd6528ee5797",
+   "sha256": "06ln4vijl8kii3nzc5cscgsadx1fqgxksflijd3ain83bn8g4wrd"
+  }
+ },
+ {
+  "ename": "sqlup-mode",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "0ngs58iri3fwv5ny707kvb6xjq98x19pzak8c9nq4qnpw3nkr83b",
+  "fetcher": "github",
+  "repo": "Trevoke/sqlup-mode.el",
+  "unstable": {
+   "version": [
+    20170610,
+    1537
+   ],
+   "commit": "3f9df9c88d6a7f9b1ae907e401cad8d3d7d63bbf",
+   "sha256": "1crah9h86m5sdc7panj98ws9cv2as6kh9syal8m1p7rhimgvdx1v"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    0
+   ],
+   "commit": "04970977b4abb4d44301651618bbf1cdb0b263dd",
+   "sha256": "14s66xrabj269z7f94iynsla96bka7zac011psrbcfyy4m8mlamz"
+  }
+ },
+ {
+  "ename": "sr-speedbar",
+  "commit": "ae489be43b1aee93614e40f492ebdf0b98a3fbc1",
+  "sha256": "1v90jbqdw39yrfcsnyqas8c5g09rcf1db65q2m2rw7rik8cgb052",
+  "fetcher": "github",
+  "repo": "emacsorphanage/sr-speedbar",
+  "unstable": {
+   "version": [
+    20161025,
+    831
+   ],
+   "commit": "77a83fb50f763a465c021eca7343243f465b4a47",
+   "sha256": "0sd12555hk7z721y00kv3crdybvcn1i08wmd148z5imayzibj153"
+  },
+  "stable": {
+   "version": [
+    20140914,
+    2339
+   ],
+   "commit": "4f816528a32eb421197a768d6dcf3a05de83f642",
+   "sha256": "1x9wizd0fzcmpf8ff7c3rcfxk64diy9jmzzvxa7d5a3k8vvpdhg3"
+  }
+ },
+ {
+  "ename": "srcery-theme",
+  "commit": "2654fc05f55c7fab7d550b7db1d187edc9ff0f42",
+  "sha256": "1bnvf9v7g2mpx8519lh73fphhr4cqd33qlw22qyxnqiz5cz93lsp",
+  "fetcher": "github",
+  "repo": "srcery-colors/srcery-emacs",
+  "unstable": {
+   "version": [
+    20200422,
+    1941
+   ],
+   "commit": "9630e465cc5166f723b7c5378e326561cf2a1738",
+   "sha256": "0ppaicggrrd3wrbjddw75mnsfli9a8db6bg21m1k7bafjkgraxfn"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "96e2f46b7068b84702809163f4d9d379d22f0395",
+   "sha256": "12dg8bficlxc1nb30lz507lq3ywpvjj6f289hc754vslx6w6by0a"
+  }
+ },
+ {
+  "ename": "srefactor",
+  "commit": "e23115ab231ab108678608f2ad0a864f896cd0f2",
+  "sha256": "01cd40jm4h00c5q2ix7cskp7klbkcd3n5763y5lqfv59bjxwdqd2",
+  "fetcher": "github",
+  "repo": "tuhdo/semantic-refactor",
+  "unstable": {
+   "version": [
+    20180703,
+    1810
+   ],
+   "commit": "6f2c97d17fb70f4ca2112f5a2b99a8ec162004f5",
+   "sha256": "1lyz3zjkx2csh0xdy1zpx8s32qp1p3sig57mwi9xhgpqjyf0axmb"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "commit": "ecd40713f736b243285c07f4cfd77113794d4f9f",
+   "sha256": "0wx8l8gkh8rbf2g149f35gpnmkk45s9x4r844aqw5by4zkvix4rc"
+  }
+ },
+ {
+  "ename": "srfi",
+  "commit": "ff844713373e376a637625494321c8e8f197b48e",
+  "sha256": "1ik6gbcv79l1za7vr2llph1kb2ll8snq11szdxd0r8lnls7l33xf",
+  "fetcher": "github",
+  "repo": "srfi-explorations/emacs-srfi",
+  "unstable": {
+   "version": [
+    20200512,
+    2217
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "fd64b75f1051c4fe59209412f00a28625371588c",
+   "sha256": "1rh3nhwh75b698aq45cwmflv97r0596fq36w1rj08syfhmy3aari"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "c0a1ae75bfb3fdc81bb722dff5f5e2fae3f07024",
+   "sha256": "1zymgidk09yyjdd23cz7rx2hql8vpmpqn21i07hwcr7032v0kl7k"
+  }
+ },
+ {
+  "ename": "srv",
+  "commit": "6b0b7f22631e7749da484ced9192d8ae5e1be941",
+  "sha256": "0xrgbi63vg0msxkcmcnvijkxa9y0s7613liqac7fs9514yvkbwin",
+  "fetcher": "github",
+  "repo": "legoscia/srv.el",
+  "unstable": {
+   "version": [
+    20180715,
+    1959
+   ],
+   "commit": "714387d5a5cf34d8d8cd96bdb1f9cb8ded823ff7",
+   "sha256": "1a8pqhdi7m3lis5ad2f74s1sy8zpxlwvfsvd80lw746235x2v06z"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "714387d5a5cf34d8d8cd96bdb1f9cb8ded823ff7",
+   "sha256": "1a8pqhdi7m3lis5ad2f74s1sy8zpxlwvfsvd80lw746235x2v06z"
+  }
+ },
+ {
+  "ename": "ssass-mode",
+  "commit": "3137f98aaa871a52f477b63d9c3b7b63f7271344",
+  "sha256": "07aym4a7l70f1lb6yvwxkhsykrwbf0lcpwlwgcn5n44kavvdbzxm",
+  "fetcher": "github",
+  "repo": "AdamNiederer/ssass-mode",
+  "unstable": {
+   "version": [
+    20200211,
+    132
+   ],
+   "commit": "96f557887ad97a0066a60c54f92b7234b8407016",
+   "sha256": "0kfk1dp8mgirbsrcg3klxi005gryqrr3jn2ss9m6vsxldjg69svb"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "5f36a169a1ad497f1d7a465be386ffb5e1f80bcf",
+   "sha256": "1n1q26p52i6c6i8svkr0bn91hliqm540y1fcz3jci8w2ws0s5x11"
+  }
+ },
+ {
+  "ename": "ssh",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1wlzagcg2fxqcbpd3z02wsil2n224kzmhcd54df80jypgq5fa6k3",
+  "fetcher": "github",
+  "repo": "ieure/ssh-el",
+  "unstable": {
+   "version": [
+    20120904,
+    2042
+   ],
+   "commit": "812e27409d01c38d74906a1816640506d6e7e3ef",
+   "sha256": "1ffwfgi450f95y1j1zp3k9lfwb6h26jzy88ng2bk4x92n53mhpww"
+  }
+ },
+ {
+  "ename": "ssh-agency",
+  "commit": "e608f40d00a3b2a80a6997da00e7d04f76d8ef0d",
+  "sha256": "1b25fl1kk4mwsd25pg9s0lazlpmaa6s9wnfgvlqk8k65d7p7idzz",
+  "fetcher": "github",
+  "repo": "magit/ssh-agency",
+  "unstable": {
+   "version": [
+    20200329,
+    1558
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "a5377e4317365a3d5442e06d5c255d4a7c7618db",
+   "sha256": "1i3zmsn0w2k7p2hlzssibckm32kf05l56mkhg96x4sf06g3pwq1d"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "a5377e4317365a3d5442e06d5c255d4a7c7618db",
+   "sha256": "1i3zmsn0w2k7p2hlzssibckm32kf05l56mkhg96x4sf06g3pwq1d"
+  }
+ },
+ {
+  "ename": "ssh-config-mode",
+  "commit": "750b16ee631b4c2014f2ebf767609bab4b8ee421",
+  "sha256": "1jlaf1bipmf51552jyp2ax6n4gwg38n2348kyxlwd7d8vwsibbpq",
+  "fetcher": "github",
+  "repo": "jhgorrell/ssh-config-mode-el",
+  "unstable": {
+   "version": [
+    20200503,
+    2042
+   ],
+   "commit": "8fda737131fef2e55c4965a938cf907acbf03372",
+   "sha256": "1cjcav28a6bw8h8axx5ms2cacdqcjv6imb4pj4r4zx08jd4nljdk"
+  }
+ },
+ {
+  "ename": "ssh-deploy",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1ys3cc5fz8y4rsiq3daqgcpa14ssv1q4cw0pqbfscql6mps0mjdm",
+  "fetcher": "github",
+  "repo": "cjohansson/emacs-ssh-deploy",
+  "unstable": {
+   "version": [
+    20200306,
+    1012
+   ],
+   "commit": "1bb2f821d4a78d483c147759348a29531486cdc4",
+   "sha256": "1d79lgl7082fkawl08qlykc7x75whdikk899fv5shbbrwp7hq3l3"
+  },
+  "stable": {
+   "version": [
+    3,
+    1
+   ],
+   "commit": "20a87ab053b1d56fdb102b75b1c90658df756505",
+   "sha256": "1m0fav34wvak4k3ki92z5nvsyw6jdxnmhn5xzjiialgz9c3936v8"
+  }
+ },
+ {
+  "ename": "ssh-tunnels",
+  "commit": "b093a3a9a836bae8ce37a21188c64e9a878066e8",
+  "sha256": "0zlf22wg9adkhycsasv6bfim2h0cknsvihyi1q2l2l4pjdp9ypqj",
+  "fetcher": "github",
+  "repo": "death/ssh-tunnels",
+  "unstable": {
+   "version": [
+    20190622,
+    931
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d32e2072f50bcbde787196abb5862735837dc8be",
+   "sha256": "1i0wmdv0pglsz1pbhfjrpr1q6sxh1q74s41vnjxk5r2q8p1fh69n"
+  }
+ },
+ {
+  "ename": "stack-mode",
+  "commit": "1328a676140e4b8d01af126c4043bcfa8d1b2a8c",
+  "sha256": "0s0m2lj40php7bc2i3fy9ikd5rmx4v7zbxfkp9vadmlc5s7w25gf",
+  "fetcher": "github",
+  "repo": "commercialhaskell/stack-ide",
+  "unstable": {
+   "version": [
+    20150923,
+    1523
+   ],
+   "deps": [
+    "cl-lib",
+    "flycheck",
+    "haskell-mode"
+   ],
+   "commit": "f3481e239dde9817152ec00e32bfc3ebf5aaf2cb",
+   "sha256": "1f2dxlc3dsf9ay417h1l43fxjkrb0a4gg96zd3asx9v2alpzgcim"
+  }
+ },
+ {
+  "ename": "stan-mode",
+  "commit": "0d31e038cd133936085994641f9af2bb7d15ba36",
+  "sha256": "1pvdh1pgjcbvkw2qh1mpazfrmcjhwv95a1s4flbn4zijmb2zigdf",
+  "fetcher": "github",
+  "repo": "stan-dev/stan-mode",
+  "unstable": {
+   "version": [
+    20200221,
+    2025
+   ],
+   "commit": "599a0440086c660e6823622b35058f6d2d6d9637",
+   "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y"
+  },
+  "stable": {
+   "version": [
+    10,
+    1,
+    0
+   ],
+   "commit": "599a0440086c660e6823622b35058f6d2d6d9637",
+   "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y"
+  }
+ },
+ {
+  "ename": "stan-snippets",
+  "commit": "57f9fe7c4735d4106ad2a0f27331c3e3fe8833c0",
+  "sha256": "1ar2abnlav1sy9622387ps5gr7fls0mx2msczvan4wrc1nnfvwdx",
+  "fetcher": "github",
+  "repo": "stan-dev/stan-mode",
+  "unstable": {
+   "version": [
+    20200221,
+    2025
+   ],
+   "deps": [
+    "stan-mode",
+    "yasnippet"
+   ],
+   "commit": "599a0440086c660e6823622b35058f6d2d6d9637",
+   "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y"
+  },
+  "stable": {
+   "version": [
+    10,
+    1,
+    0
+   ],
+   "deps": [
+    "stan-mode",
+    "yasnippet"
+   ],
+   "commit": "599a0440086c660e6823622b35058f6d2d6d9637",
+   "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y"
+  }
+ },
+ {
+  "ename": "standoff-mode",
+  "commit": "98858a45f72c28eec552b119a66479ea99b60f93",
+  "sha256": "127bzpm1cz103f1pb860yqrh7mr0rdaivrm9p6ssd01kchl9nskp",
+  "fetcher": "github",
+  "repo": "lueck/standoff-mode",
+  "unstable": {
+   "version": [
+    20171115,
+    1731
+   ],
+   "commit": "cf84b14066d63694d931395c6026fd0245d8a62b",
+   "sha256": "0dbcaz3faw8knx91yjsrb988sn2d9k0i5byhs1bi1ww36y6hmgs6"
+  }
+ },
+ {
+  "ename": "start-menu",
+  "commit": "88d965f6789d3f5ba3856cbf10edbc46e37b12ae",
+  "sha256": "1k1lc9i9vcl2am9afq0ksrxwsy6kppl4i0v10h0w2fq5z374rdkv",
+  "fetcher": "github",
+  "repo": "lujun9972/el-start-menu",
+  "unstable": {
+   "version": [
+    20160426,
+    1225
+   ],
+   "deps": [
+    "cl-lib",
+    "config-parser"
+   ],
+   "commit": "f7d33fed7ad2dc61156f1c1cff9e1805366fbd69",
+   "sha256": "1w3l8ahal9hjisny382bcw9w1nh2swpb1jzf2djww5h0i4r2h36c"
+  }
+ },
+ {
+  "ename": "stash",
+  "commit": "d3837ac3f1ac82e08a5ad7193766074a4d1bfa3d",
+  "sha256": "116k40ispv7sq3jskwc1lvmhmk3jjz4j967r732s07f5h11vk1z9",
+  "fetcher": "github",
+  "repo": "vermiculus/stash.el",
+  "unstable": {
+   "version": [
+    20151117,
+    1427
+   ],
+   "commit": "c2e494d20c752b80ebbdffbf66687b3cdfc425ad",
+   "sha256": "0cl2y72iagmv87kg72a46a3kap2xigwnrbk2hjgvsbxv2ng5f9cr"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "commit": "638ae8a4f6d33af54fe77d57c2c0eb1800dd2e19",
+   "sha256": "0igqifws73cayvjnhhrsqpy14sr27avymfhaqzrpj76m2fsh6fj4"
+  }
+ },
+ {
+  "ename": "state",
+  "commit": "82e955112089569c775e11888d9811119f84a4f8",
+  "sha256": "19y3n8wnbpgbpz4jxy2p7hjqxykg09arjp7s5v22yz7il3gn48l2",
+  "fetcher": "github",
+  "repo": "thisirs/state",
+  "unstable": {
+   "version": [
+    20180627,
+    1956
+   ],
+   "commit": "258fe1cba00bdc2c600f866bb0406c719661d0a6",
+   "sha256": "1miwmb4012a4pjxc0qi0qrs0aw7yf8fhiy72ndf80sj050wmpaqn"
+  }
+ },
+ {
+  "ename": "status",
+  "commit": "dca8976de7060fcfc37a1623280869e0cef7b0a2",
+  "sha256": "0a9lqa7a5nki5711bjrmx214kah5ndqpwh3i240gdd08mcm07ps3",
+  "fetcher": "github",
+  "repo": "tromey/emacs-status",
+  "unstable": {
+   "version": [
+    20151230,
+    1408
+   ],
+   "commit": "b62c74bf272566f82a68622f29fb9edafea0f241",
+   "sha256": "0jpxmzfvg4k5q3h3gn6lrg891wjzlcps2kkij1jbdjk4jkgq386i"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "b62c74bf272566f82a68622f29fb9edafea0f241",
+   "sha256": "0jpxmzfvg4k5q3h3gn6lrg891wjzlcps2kkij1jbdjk4jkgq386i"
+  }
+ },
+ {
+  "ename": "steam",
+  "commit": "25a45eb6297168cd0ce4c4db5574362addad5c69",
+  "sha256": "10k408spgbxi266jk8x57zwav989is16nvwg41dknz91l76v63gw",
+  "fetcher": "github",
+  "repo": "Kungsgeten/steam.el",
+  "unstable": {
+   "version": [
+    20190916,
+    627
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f32951f4e0a4bc92813d0121d9df0257101b8992",
+   "sha256": "1fl4875992xxv0amcqj7b516f35k19h8fd7pij0by5b808k5ls6x"
+  }
+ },
+ {
+  "ename": "stem",
+  "commit": "8d9c38d0d4dac86848ad0fec0aeeced009c5eac7",
+  "sha256": "1625nbi2bmb7vzjz0s7y1cy7dp8lp83dayiib3nr2bfkv76fwkcq",
+  "fetcher": "github",
+  "repo": "yuutayamada/stem",
+  "unstable": {
+   "version": [
+    20131102,
+    1109
+   ],
+   "commit": "d74e6611d6ba5025e0276a2cc7c8a90f46bfa9ac",
+   "sha256": "1xc4v8a35c2vpfhza15j4f89x7vyg9bbgm7xnprij7814k8iy7p0"
+  }
+ },
+ {
+  "ename": "stem-english",
+  "commit": "5c8e97e70e7a86b9f5e55bdd2db492994e8abdd5",
+  "sha256": "15d13palwdwrki9p804cdls08ph7sxxzd44nl4bhfm3dxic4sw7x",
+  "fetcher": "github",
+  "repo": "kawabata/stem-english",
+  "unstable": {
+   "version": [
+    20180109,
+    358
+   ],
+   "commit": "c9fc4c6ed6bf82382e479dae80912f4ae17d31f4",
+   "sha256": "1bkmgjfp7xir6d0yf782xkjvf595blrqhr3hack26jg5zl8qsrya"
+  }
+ },
+ {
+  "ename": "stgit",
+  "commit": "726da64b7baea1735a916b826bdfb8f575860e21",
+  "sha256": "1gbr0pvvig2vg94svy1r6zp57rhyg6n9yp7qvlkfal1z2lhzhs0g",
+  "fetcher": "github",
+  "repo": "ctmarinas/stgit",
+  "unstable": {
+   "version": [
+    20171130,
+    1559
+   ],
+   "commit": "fb180610de78c68736c963236afb28ee3ac952b4",
+   "sha256": "106jjrbjdgxp1s41h9vn877rq7a3m1jj9brlgdz1mrjgay266gcc"
+  },
+  "stable": {
+   "version": [
+    0,
+    22
+   ],
+   "commit": "9acc95666619699d4cdf0526305155407081d8de",
+   "sha256": "0rhdgakd4vc0549m6zjwcmsnvh2i3mbv5laks25wnfmsxr8dwqns"
+  }
+ },
+ {
+  "ename": "sticky",
+  "commit": "ad10a684b4b2f01bc65883374f36fef156ff55d2",
+  "sha256": "0g98qagqchwq9j5nvdz315wak8fvdw1l972cfh0fr4yyg7gxi6xr",
+  "fetcher": "github",
+  "repo": "rubikitch/sticky",
+  "unstable": {
+   "version": [
+    20170926,
+    36
+   ],
+   "commit": "fec4e1af38f17f5cd80eca361d8e8ef8772db366",
+   "sha256": "126zs059snzpg83q9mrb51y0pqawwrj9smr3y7rza4q4qkdp1nk0"
+  }
+ },
+ {
+  "ename": "stickyfunc-enhance",
+  "commit": "e24454febf90ec18a587b2c187a2bd2101e1b7b5",
+  "sha256": "13dh19c3bljs83l847syqlg07g33hz6sapg6j4s4xv4skix8zfks",
+  "fetcher": "github",
+  "repo": "tuhdo/semantic-stickyfunc-enhance",
+  "unstable": {
+   "version": [
+    20150429,
+    1814
+   ],
+   "commit": "13bdba51fcd83ccbc3267959d23afc94d458dcb0",
+   "sha256": "16dxjsr5nj20blww4xpd4jzgjprzzh1nwvb810ggdmp9paf4iy0g"
+  }
+ },
+ {
+  "ename": "stock-ticker",
+  "commit": "75e654f7b3f785bdfead3c594fdc09730c5d33b9",
+  "sha256": "1slcjk2avybr4v9s7gglizmaxbb3yqg6s6gdbg12m3vvj3b72lfi",
+  "fetcher": "github",
+  "repo": "hagleitn/stock-ticker",
+  "unstable": {
+   "version": [
+    20150204,
+    1052
+   ],
+   "deps": [
+    "request",
+    "s"
+   ],
+   "commit": "f2e564142c9de84232839a5b01979cf95b04d6a9",
+   "sha256": "191sg32z1iagyxmbn49i1lpfihld9g9741cw2kj830s4vag4kinx"
+  }
+ },
+ {
+  "ename": "stock-tracker",
+  "commit": "5e959303b4c0a07c821252a913b578f70b5f41ad",
+  "sha256": "1gc4z980rp9s0nvbrbp792ckyw12ahfsk3a3whf12vb3anmmgd7b",
+  "fetcher": "github",
+  "repo": "beacoder/stock-tracker",
+  "unstable": {
+   "version": [
+    20200228,
+    542
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "32ae436a4cad49fea5038cc3e8eb638a3a83dd6c",
+   "sha256": "0dmjvgkhd445azs6vrj8lzcfmnm3h4prajr0c416s2ircrzpgnd9"
+  }
+ },
+ {
+  "ename": "strace-mode",
+  "commit": "9b2003bee9992d9e79124d95d30b573c8a6bdbfe",
+  "sha256": "16v350nqdxmmk1r4z25bssm436xcm4cvnaxm7f3wxwvmg9z0gx8d",
+  "fetcher": "github",
+  "repo": "pkmoore/strace-mode",
+  "unstable": {
+   "version": [
+    20171116,
+    2039
+   ],
+   "commit": "2901baa968d5180ab985ac40ca22cc20914d01f5",
+   "sha256": "1jd930nc2g562n4cqq1ppl2d8dq7bxkr3fh9f0gjms7bcm106kz9"
+  }
+ },
+ {
+  "ename": "strie",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "1ngvpbws7laqxk6mm023r5295msap12h8bh9zrsbr05yxfzhlx83",
+  "fetcher": "github",
+  "repo": "jcatw/strie.el",
+  "unstable": {
+   "version": [
+    20160211,
+    2222
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "eb7efb0cccc127c414f6a64db11454869d9c10a8",
+   "sha256": "1kcbkf0wbmqy9slxfqg7wsyw5n2rsaz832ibrxszb642j0l8s7pr"
+  }
+ },
+ {
+  "ename": "string-edit",
+  "commit": "20fd24f22ef734fe064c66692bf3e18eb896f1ac",
+  "sha256": "1l1hqsfyi6pp4x4g1rk4s7x9zjc03wfmhy16izia8nkjhzz88fi8",
+  "fetcher": "github",
+  "repo": "magnars/string-edit.el",
+  "unstable": {
+   "version": [
+    20160411,
+    656
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "c44b65b4c5e9f52be9c14d88ca2f402a18d9e1dd",
+   "sha256": "1xm7bb3cp99ahr5jrwi0p0258qcvlbddy98wmbq00kk5pihqbzsg"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "9f9c9cd659156fd2217be814eb4e91da48d44647",
+   "sha256": "15gdcpbba3h84s7xnpk69nav6bixdixnirdh5n1rly010q0m5s5x"
+  }
+ },
+ {
+  "ename": "string-inflection",
+  "commit": "5c2e2b6dba8686236c2595475cfddac5fd700e60",
+  "sha256": "1vrjcg1fa5adw16s4v9dq0fid0gfazxk15z9cawz0kmnpyzz3fg2",
+  "fetcher": "github",
+  "repo": "akicho8/string-inflection",
+  "unstable": {
+   "version": [
+    20180827,
+    1301
+   ],
+   "commit": "e9a50855a4c718592c28a5a892f164ecf46e39a8",
+   "sha256": "03kvp5xrv9p46m4w25jr5nvi801yafq5vxzif42y0dav7ifmmdfp"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    10
+   ],
+   "commit": "9b08372301e3c5f91cb278ee0e00a48845a42cb6",
+   "sha256": "0j3ms2cxbv24kr27r2jhzxpdih6w43gjdkm3sqd28c28ycab8d4b"
+  }
+ },
+ {
+  "ename": "string-utils",
+  "commit": "c9db386ab3910940addae6e925b2ac17e64e0f87",
+  "sha256": "1vsvxc06fd3wardldb83i5hjfibvmiqnxvcgdns7i5i8qlsrsx4v",
+  "fetcher": "github",
+  "repo": "rolandwalker/string-utils",
+  "unstable": {
+   "version": [
+    20140508,
+    2041
+   ],
+   "deps": [
+    "list-utils"
+   ],
+   "commit": "c2232d691617973ecf12a970c6008a161c21da14",
+   "sha256": "1frdspm1qgksa8cpx5gkj50xk9mgz8202pgp11lqir6l3yjcj3wq"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    2
+   ],
+   "deps": [
+    "list-utils"
+   ],
+   "commit": "3ae530143899f533a9ef5e1f26f28b577ebe72ee",
+   "sha256": "03azfs6z0jg66ppalijcxl973vdbhj4c3g84sm5dm8xv6rnxrv2s"
+  }
+ },
+ {
+  "ename": "stripe-buffer",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1kjib1kf9xqdirryr16wlvc95701hq8s4h8hz4dqzg3wzyb8287b",
+  "fetcher": "github",
+  "repo": "sabof/stripe-buffer",
+  "unstable": {
+   "version": [
+    20141208,
+    1508
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "c252080f55cb78c951b19ebab9687f6d00237baf",
+   "sha256": "0dxajh72wdcwdb9ydbcm19fmp0p1drmh1niq4r69jnbn8sah0zax"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    5
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d9f009b92cf16fe2c40cd92b8f842a3872e6c190",
+   "sha256": "035ym1c1vzg6hjsnd258z4dkrfc11lj4c0y4gpgybhk54dq3w9dk"
+  }
+ },
+ {
+  "ename": "stripes",
+  "commit": "f4c7beb05435a70293806b729b6f35c2fc2e8ca4",
+  "sha256": "0pwkqqyhg6gkpj8qh84ylsvq6wjykkkmmil4igw7mn80gy15zd09",
+  "fetcher": "gitlab",
+  "repo": "stepnem/stripes-el",
+  "unstable": {
+   "version": [
+    20200330,
+    2022
+   ],
+   "commit": "7b1d501f44b697a0514ef6759fd126d65867f18d",
+   "sha256": "0mx7l751jiijrjnbn3y6awasjy2c7k4ndgjq5c455vzxrlcbwr25"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    1,
+    1
+   ],
+   "commit": "7b1d501f44b697a0514ef6759fd126d65867f18d",
+   "sha256": "0mx7l751jiijrjnbn3y6awasjy2c7k4ndgjq5c455vzxrlcbwr25"
+  }
+ },
+ {
+  "ename": "stumpwm-mode",
+  "commit": "caaa21f235c4864f6008fb454d0a970a2fd22a86",
+  "sha256": "11yk7xmmccgv7hin5qd1ibcsm1za01xfwsxa25q7vqwk6svnb0sf",
+  "fetcher": "git",
+  "url": "https://git.savannah.nongnu.org/git/stumpwm.git",
+  "unstable": {
+   "version": [
+    20140131,
+    216
+   ],
+   "commit": "61a7cf27e49e0779a53c018b2342f5f1c5cc70b4",
+   "sha256": "03is0690p7aw77c30j4r2b5gi5rv5f70wvpixy5qhcchlaxhaw82"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    8
+   ],
+   "commit": "4d0603e52b5bab993b3be63e3654c74f641e677d",
+   "sha256": "0pn3xjz433b0djcys25a8fv775yqmj3qgg0hyghgxjpzsh6k2a4f"
+  }
+ },
+ {
+  "ename": "stupid-indent-mode",
+  "commit": "68cd648bde8028a39849f7beae8deae78bfb877b",
+  "sha256": "12y8qxxs04qzy09m734qg0857g4612qdswx2bh9jk7dp886fpd7p",
+  "fetcher": "git",
+  "url": "https://gist.github.com/5487564.git",
+  "unstable": {
+   "version": [
+    20170525,
+    1117
+   ],
+   "commit": "3295e7de5e2cfddc3bf0e462e852bf58972f5d70",
+   "sha256": "00js2jkzvmvh1gbraijknv48y86pqyk9zv264a5n3l4sw5q6kcvk"
+  }
+ },
+ {
+  "ename": "stylefmt",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "14ap3xklmxyqz61p7z3fwgxbwjqrcbijcmvsmhfbm102x1spgbhz",
+  "fetcher": "github",
+  "repo": "KeenS/stylefmt.el",
+  "unstable": {
+   "version": [
+    20161025,
+    824
+   ],
+   "commit": "7a38f26bf8ff947215f34f0a064c7ca80575ccbc",
+   "sha256": "0cx9llbmfjhaxb60mj483ihl78xb30ldvhd1hdldmc9d473xbvmz"
+  }
+ },
+ {
+  "ename": "stylus-mode",
+  "commit": "877b5a3e612e1b1d6d51e60c66b0b79f231abdb2",
+  "sha256": "152k74q6qn2xa38v2zyd5y7ya5n26nvai5v7z5fmq7jrcndp27r5",
+  "fetcher": "github",
+  "repo": "brianc/jade-mode",
+  "unstable": {
+   "version": [
+    20150313,
+    1512
+   ],
+   "deps": [
+    "sws-mode"
+   ],
+   "commit": "4dbde92542fc7ad61df38776980905a4721d642e",
+   "sha256": "0p6pfxbl98kkwa3lgx82h967w4p0wbd9s96gvs72d74ryan07ij1"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "sws-mode"
+   ],
+   "commit": "4e7a20db492719062f40b225ed730ed50be5db56",
+   "sha256": "0krbd1qa2408a97pqhl7fv0x8x1n2l3qq33zzj4w4vv0c55jk43n"
+  }
+ },
+ {
+  "ename": "subatomic-theme",
+  "commit": "de7f6009bab3e9a5b14b7b96ab16557e81e7f078",
+  "sha256": "0mqas67qms492n3hn74c5nrkjpsgf9b42lp02s2dh366c075dpqc",
+  "fetcher": "github",
+  "repo": "cryon/subatomic",
+  "unstable": {
+   "version": [
+    20190607,
+    1022
+   ],
+   "commit": "a13cdac97a6d0488b13bc36d4c2f4d4102ff6a31",
+   "sha256": "1l7yvplvjfcv1d1ij0inijm47nx42d3r00w43xjqnyhk9rrvazh1"
+  },
+  "stable": {
+   "version": [
+    1,
+    8,
+    1
+   ],
+   "commit": "6a4086af748b1ecb27f6ba2aa2614988db16d594",
+   "sha256": "1j63rzxnrzzqizh7fpd99dcgsy5hd7w4d2lpwl5armmixlycl5m8"
+  }
+ },
+ {
+  "ename": "subatomic256-theme",
+  "commit": "06a6bdf12623847600d87a624c224b233fdf3536",
+  "sha256": "1whjlkpkkirpnvvjryhlpzwphr1syz5zfyg4pb66i0db03hxwwcy",
+  "fetcher": "github",
+  "repo": "d11wtq/subatomic256",
+  "unstable": {
+   "version": [
+    20130621,
+    210
+   ],
+   "commit": "326177d6f99cd2b1d30df695e67ee3bc441cd96f",
+   "sha256": "1w7mimyqc25phlww20l49wlafnxp6c7dwibvphg3vwl61g0llpq8"
+  }
+ },
+ {
+  "ename": "subemacs",
+  "commit": "18714a6b5ca4dcc51fa509fee1dc9afb0595c707",
+  "sha256": "0sqh80jhh3v37l5af7w6k9lqvj39bd91pn6a9rwdlfk389hp90zm",
+  "fetcher": "github",
+  "repo": "kbauer/subemacs",
+  "unstable": {
+   "version": [
+    20170401,
+    934
+   ],
+   "commit": "18d53939fec8968c08dfc5aff7240ca07efb1aac",
+   "sha256": "1k2lg7cxr98rq77sk0ypzlr3cyl20ld20jz8y21fdaa6ci8kdvdb"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "24f0896f1995a3ea42a58b0452d250dcc6802944",
+   "sha256": "189547d0g9ax0nr221bkdchlfcj60dsy8lgbbrvq3n3xrmlvl362"
+  }
+ },
+ {
+  "ename": "sublime-themes",
+  "commit": "648d250c7d341b31581c839f77c1084ac29d3163",
+  "sha256": "1nahcfcy831c7w3c69i2na0r8jsdgprffgfdvh4c41cnk4rkgdqj",
+  "fetcher": "github",
+  "repo": "owainlewis/emacs-color-themes",
+  "unstable": {
+   "version": [
+    20170606,
+    1844
+   ],
+   "commit": "60ee40af82eb55b79d5ed4026f1911326311603f",
+   "sha256": "17fcqvavgyl9cmv1hwcid2bw513vhawlsmac1w2adiz567594i6h"
+  }
+ },
+ {
+  "ename": "sublimity",
+  "commit": "c1e78cd1e5366a9b6d04237e9bf6a7e73424be52",
+  "sha256": "1xwggaalad65cxcfvmy30f141bxhpzc3fgvwziwbzi8fygbdv4nw",
+  "fetcher": "github",
+  "repo": "zk-phi/sublimity",
+  "unstable": {
+   "version": [
+    20181121,
+    1311
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "4c8d0280815978fc11e1c5f86266a11c717b0c89",
+   "sha256": "1618ba3m36crh2wmmisi3ls5ijdqrwr58yda810jik0b6fjzzacv"
+  },
+  "stable": {
+   "version": [
+    20160629
+   ],
+   "commit": "ee9c9fbb92b8fc0c191e5e8640477e251b602bf9",
+   "sha256": "1kpq7kpmhgq3vjd62rr4qsc824qcyjxm50m49r7invgnmgd78h4x"
+  }
+ },
+ {
+  "ename": "sudden-death",
+  "commit": "3f20f389a2d7ddf49ca64d945b41584a7c120faf",
+  "sha256": "1wrhb3d27j07i64hvjggyajm752w4mhrhq09lfvyhz6ykp1ly3fh",
+  "fetcher": "github",
+  "repo": "yewton/sudden-death.el",
+  "unstable": {
+   "version": [
+    20180217,
+    23
+   ],
+   "commit": "791a63d3f4df192e71f4232a9a4c5588f4b43dfb",
+   "sha256": "0z3adwd6ymapkdniny3ax2i3wzxp11g6in4bghbcr9bfdxcsf7ps"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "commit": "791a63d3f4df192e71f4232a9a4c5588f4b43dfb",
+   "sha256": "0z3adwd6ymapkdniny3ax2i3wzxp11g6in4bghbcr9bfdxcsf7ps"
+  }
+ },
+ {
+  "ename": "sudo-edit",
+  "commit": "3b08d4bbdb23b988db5ed7cb5a2a925b7c2e242e",
+  "sha256": "10vz7q8m0l2dyhiy9r9nj17qlwyv032glshzljzhm1n20w8y1fq4",
+  "fetcher": "github",
+  "repo": "nflath/sudo-edit",
+  "unstable": {
+   "version": [
+    20180731,
+    1908
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "cc3d478937b1accd38742bfceba92af02ee9357d",
+   "sha256": "1qv58x5j5a3v1s2ylhck1ykbfclq0mbi0gsvaql3nyv8cxazqlwl"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "bcb12aaa0da0c56d851cfa2f1b3ea4afdd2a755b",
+   "sha256": "1k6sx8k304dw9dlidnxcln9ip9cj3b6i196z98g9n0kcd1js9f99"
+  }
+ },
+ {
+  "ename": "sudo-ext",
+  "commit": "f8e4328cae9b4759a75da0b26ea8b68821bc71af",
+  "sha256": "1zlnz68kzdrc7p90qmzs7fsr9ry4rl259xpyv55jh5icry290z4x",
+  "fetcher": "github",
+  "repo": "rubikitch/sudo-ext",
+  "unstable": {
+   "version": [
+    20170126,
+    1214
+   ],
+   "commit": "9d4580f304121ce7b8104bd4bd3b64e4dfa3c9b3",
+   "sha256": "1m9srlxavqg6yxmz6rz61saz1lj5hh029314dic8kh6g3bqdnh2w"
+  }
+ },
+ {
+  "ename": "sudoku",
+  "commit": "f9861d5d4cf18466b17ac8e53f3874df5312d3f3",
+  "sha256": "14nbidjnsm9lwknmqgfr721b484z5156j723kr1wbfv70j8h9kys",
+  "fetcher": "github",
+  "repo": "zevlg/sudoku.el",
+  "unstable": {
+   "version": [
+    20191015,
+    1315
+   ],
+   "commit": "b1924fd244a5fa284de9d67b66fbd69164b37318",
+   "sha256": "19i3rrz4qnc9i845j0bbmps69372rry7gadcyj06gvq2hf9dy3nh"
+  }
+ },
+ {
+  "ename": "suggest",
+  "commit": "b9fd27e812549587dc2ec26bb58974177ff263ff",
+  "sha256": "12vvakqqzmmqq5yynpd4wf4lnb0yvcnz065kni996sy7rv7rh83q",
+  "fetcher": "github",
+  "repo": "Wilfred/suggest.el",
+  "unstable": {
+   "version": [
+    20180916,
+    1859
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "loop",
+    "s",
+    "spinner"
+   ],
+   "commit": "83a2679baf661ee834e9e75921fd546243a6d919",
+   "sha256": "11jqglwqi5q14rk44z02dffk6cqmhjgdda0y63095g8n1ll71jsb"
+  },
+  "stable": {
+   "version": [
+    0,
+    7
+   ],
+   "deps": [
+    "dash",
+    "f",
+    "loop",
+    "s",
+    "spinner"
+   ],
+   "commit": "31ab6c956d17176affbbe9ca53c416920180ddbd",
+   "sha256": "01v8plska5d3g19sb1m4ph1i3ayprfzk8mi6mpabjy6zad397xjl"
+  }
+ },
+ {
+  "ename": "suggestion-box",
+  "commit": "5b59be8dc0a1850d3e245957fd170e1d01f4e284",
+  "sha256": "17yai0fh7rfjbp3wz5x5r4src8lxn6qrhf7brp2gjr6cgdv40iac",
+  "fetcher": "github",
+  "repo": "yuutayamada/suggestion-box-el",
+  "unstable": {
+   "version": [
+    20170830,
+    807
+   ],
+   "deps": [
+    "popup"
+   ],
+   "commit": "50af0776c8caf3c79c4d37fd51cbf304ea34b68e",
+   "sha256": "01lx20kzay5504xcq6m6yhvayyd7wpzaa1r6i67xqjnr25lqyajw"
+  }
+ },
+ {
+  "ename": "sunburn-theme",
+  "commit": "e608f40d00a3b2a80a6997da00e7d04f76d8ef0d",
+  "sha256": "07nz7vr0yzf5746d8khlzl6ghaj44yfp0ar9ylbpdpfj7rdx17sa",
+  "fetcher": "github",
+  "repo": "mvarela/Sunburn-Theme",
+  "unstable": {
+   "version": [
+    20180602,
+    1929
+   ],
+   "commit": "ddb01b6f1f4f823398f7f8e08900c2b4a7811d3b",
+   "sha256": "18qfcrr4xlwwhhaq7dwh31bbl84a53akgrw2c6lynnyyi4vk2wpq"
+  }
+ },
+ {
+  "ename": "sunny-day-theme",
+  "commit": "11642803ccc5c8dde839508c91dea2728b2b78de",
+  "sha256": "1wsfnmmbzzyggzip66vr38yyzy27blxp91wx97bafj7jpg5cyhzw",
+  "fetcher": "github",
+  "repo": "mswift42/sunny-day-theme",
+  "unstable": {
+   "version": [
+    20140413,
+    2125
+   ],
+   "commit": "420e0a6eb33fcc9b75c2c9e88ab60a975d782a00",
+   "sha256": "0mhyhkjjwszwl5wzkys9pgvgx9sps9r46k1s1hpzzf4s3vi015mc"
+  }
+ },
+ {
+  "ename": "sunshine",
+  "commit": "4a0ff9a4ef4bbe8de722a4f77f4a56a851497ff1",
+  "sha256": "1lxiqw7k8cpq0v6p5whgxgzqrbx3sd9174r0d4qlkrpn6rcp44vv",
+  "fetcher": "github",
+  "repo": "aaronbieber/sunshine.el",
+  "unstable": {
+   "version": [
+    20200306,
+    1711
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "88256223539edcfe57017778a997a474c9c022f6",
+   "sha256": "01kgf0w9lqprkgi0ag5zmgd9s07yj51vdfj7jbz8sws60996x8xx"
+  }
+ },
+ {
+  "ename": "suomalainen-kalenteri",
+  "commit": "181adf1b16253481674663fd28b195172231b7da",
+  "sha256": "1wzijbgcr3jc47ccr7nrdkqha16s6gw0xiccnmdczi48cvnvvlkh",
+  "fetcher": "github",
+  "repo": "tlikonen/suomalainen-kalenteri",
+  "unstable": {
+   "version": [
+    20190310,
+    910
+   ],
+   "commit": "c8c03fe9bae57d4e15c287aef4f98911a3529240",
+   "sha256": "1n4nz309rr1cpx1c5aighakpcmrbzzg2xprh5hi4kln0rngggycp"
+  },
+  "stable": {
+   "version": [
+    2017,
+    8,
+    1
+   ],
+   "commit": "c702e33cb6e13cb28bd761844e95be112a3c04f3",
+   "sha256": "13avc3ba6vhysmhrcxfpkamggfpal479gn7k9n7509dpwp06dv8h"
+  }
+ },
+ {
+  "ename": "super-save",
+  "commit": "9730b65787b26d3909952cf246a01bd349e5fbab",
+  "sha256": "0ikfw7n2rvm3xcgnj1si92ly8w75x26071ki551ims7a8sawh52p",
+  "fetcher": "github",
+  "repo": "bbatsov/super-save",
+  "unstable": {
+   "version": [
+    20190806,
+    915
+   ],
+   "commit": "279aa8e0103d6bd367619b7f57f9d60d7a3c5cfd",
+   "sha256": "14x3w6czyrw48bw7cfkdyv51jksf67nznv9wyp0hb4hrjdxaq1aq"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "commit": "2a905b8bdfc93bee16e2d62a61c6211bbe009331",
+   "sha256": "066fyg4r4pksyandpd7s53hagpvm2rw90q5ks4jlpgy7x00hw09l"
+  }
+ },
+ {
+  "ename": "supergenpass",
+  "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a",
+  "sha256": "0ldy6j6l6rf72w0hl195rdnrabml2a5k91200s186k0r5aja4b95",
+  "fetcher": "github",
+  "repo": "ober/sgpass",
+  "unstable": {
+   "version": [
+    20130329,
+    548
+   ],
+   "commit": "549072ef7b5b82913cadd4758e8a0a9926f0a04a",
+   "sha256": "0m02snzka243adhwwgriml133n4312lhdia3wdqjcq8y2mlp3331"
+  }
+ },
+ {
+  "ename": "suscolors-theme",
+  "commit": "6f26b8281f9bd05e3c8f2ef21838275711e622c9",
+  "sha256": "0j8yfl3yglp9kfdpbmfj3jw7npc6nlqw48cchiczh4biry204lbw",
+  "fetcher": "github",
+  "repo": "TheSuspiciousWombat/SusColors-emacs",
+  "unstable": {
+   "version": [
+    20190713,
+    1009
+   ],
+   "commit": "b4a979ee23e26e255b9a63525b0a28e810fab9ae",
+   "sha256": "0ddbksza42kywn7j78kidg6f1la9qajk3g6baf4758dibclkr5qd"
+  }
+ },
+ {
+  "ename": "sv-kalender-namnsdagar",
+  "commit": "f9327ea6ae9f4eaeeb6c0fb40bad77e403b4f55c",
+  "sha256": "1l89y6bjkw8px89qaw1ldfp6qmbm5nq09i6pr32n0k553670v4sr",
+  "fetcher": "github",
+  "repo": "matsl/sv-kalender-namnsdagar",
+  "unstable": {
+   "version": [
+    20190421,
+    1521
+   ],
+   "commit": "fff970f49c77abfc69e37817f25a939818420971",
+   "sha256": "0c6xjw1wh94llwh8qkf3bfzx05ksk0lsdrqdfqn3qkjnf3bkbbh2"
+  }
+ },
+ {
+  "ename": "svelte-mode",
+  "commit": "fc6a992830520750d2e4a9596668ba3d0eefaa11",
+  "sha256": "0mc9bc8p3a6lkqag72f48xprlrnj077h9mnglq4znxrslm91jr0h",
+  "fetcher": "github",
+  "repo": "leafOfTree/svelte-mode",
+  "unstable": {
+   "version": [
+    20200327,
+    406
+   ],
+   "commit": "48a26af6a3395a8bf3f09747d0a205c6dbc79313",
+   "sha256": "12gg55jdb6b5jk0xizx2cqc795bgll2kap3jp08s1vr16zkdaryn"
+  }
+ },
+ {
+  "ename": "svg-mode-line-themes",
+  "commit": "2ca54d78b5e87c3bb582b178e4892af2bf447d1e",
+  "sha256": "12lnszcb9bl32n9wir7vf8xiyyv7njw4xg21aj9x4dasmidyx506",
+  "fetcher": "github",
+  "repo": "sabof/svg-mode-line-themes",
+  "unstable": {
+   "version": [
+    20150425,
+    2006
+   ],
+   "deps": [
+    "xmlgen"
+   ],
+   "commit": "80a0e01839cafbd66899202e7764c33231974259",
+   "sha256": "14h40s0arc2i898r9yysn256z6l8jkrnmqvrdg7p7658c0klz5ic"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    3
+   ],
+   "deps": [
+    "xmlgen"
+   ],
+   "commit": "80a0e01839cafbd66899202e7764c33231974259",
+   "sha256": "14h40s0arc2i898r9yysn256z6l8jkrnmqvrdg7p7658c0klz5ic"
+  }
+ },
+ {
+  "ename": "svnwrapper",
+  "commit": "cb43431d7a7276cdf1ea741b2b218bc46c2722f9",
+  "sha256": "06nb7dql7fbaa9khhpxdl8jj6zmypi24bak52sfsa0js77v51pf2",
+  "fetcher": "github",
+  "repo": "Lindydancer/svnwrapper",
+  "unstable": {
+   "version": [
+    20180414,
+    1843
+   ],
+   "deps": [
+    "e2ansi"
+   ],
+   "commit": "de5069f5784e5d9e87a0af0159ba5f28a3716583",
+   "sha256": "08sg55cmjbk06622mzhv74f5b5dvbay7gb729zsckczxwrp1cayp"
+  }
+ },
+ {
+  "ename": "swagger-to-org",
+  "commit": "4d5a7f017593e73ea48c0e535ecf3809536bcde5",
+  "sha256": "1m40f5njxcxmc2snaz2q43b4scwgp51y761kq6klixjvafi0pv86",
+  "fetcher": "github",
+  "repo": "ahungry/swagger-to-org",
+  "unstable": {
+   "version": [
+    20160611,
+    56
+   ],
+   "deps": [
+    "cl-lib",
+    "json"
+   ],
+   "commit": "181357c71ea24bede263f5706d8781ad65e16877",
+   "sha256": "0x1mxxvlhhs34j869cy68gy5pgmvpfliyl9vlrlwm3z8apbip9gp"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "json"
+   ],
+   "commit": "181357c71ea24bede263f5706d8781ad65e16877",
+   "sha256": "0x1mxxvlhhs34j869cy68gy5pgmvpfliyl9vlrlwm3z8apbip9gp"
+  }
+ },
+ {
+  "ename": "swap-buffers",
+  "commit": "2a0172aaebdf4e0b6f6dd3093482e3cf3eb796d4",
+  "sha256": "0ih5dhnqy3c9nlfz9m2zwy4q4jaam09ykbdqhsxx2hnwjk7p35bw",
+  "fetcher": "github",
+  "repo": "ekazakov/swap-buffers",
+  "unstable": {
+   "version": [
+    20150506,
+    2139
+   ],
+   "commit": "46ab31359b70d935add6c6e9533443116dc51103",
+   "sha256": "1kn70570r6x0h1xfs1vr8as27pjfanyhml140yms60gdjb4ssf9r"
+  }
+ },
+ {
+  "ename": "swap-regions",
+  "commit": "6805c7710618ed1178ffd3488295d4d6b33e8ebe",
+  "sha256": "0gl4vr7wjh5gjskrwbqypaqyfigpgh379bm4l2gvbsbhahsmbj67",
+  "fetcher": "github",
+  "repo": "xuchunyang/swap-regions.el",
+  "unstable": {
+   "version": [
+    20180915,
+    1346
+   ],
+   "commit": "f4fd9880cf690e003fcde88dcf2b46adbbbb03cd",
+   "sha256": "1d45yanqk4w0idqwkrwig1dl22wr820k11r3gynv7an643k4wngp"
+  }
+ },
+ {
+  "ename": "sweetgreen",
+  "commit": "63812707948e6dcc00e00ebc3c423469593e80fd",
+  "sha256": "1v75wk0gq5fkz8i1r8pl4gqnxbv1d80isyn48w2hxj2fmdn2xhpy",
+  "fetcher": "github",
+  "repo": "CestDiego/sweetgreen.el",
+  "unstable": {
+   "version": [
+    20180605,
+    335
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "helm",
+    "request"
+   ],
+   "commit": "e933fe466b5ef0e976967e203f88bd7a012469d1",
+   "sha256": "1pd13v3xma78xa0smxql4i2iax72kxqh7iwp3k16jwzrklmsdiyr"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "helm",
+    "request"
+   ],
+   "commit": "e40d2821ff941695e50a9b003a8c96d32c19bfdc",
+   "sha256": "1gw09x5d4yqlmknjsrhgygp9bch315cnmyqp3679i3hza0l7fds6"
+  }
+ },
+ {
+  "ename": "swift-helpful",
+  "commit": "052fb5b561bee1dd71c2c227c75c4f6db4261f68",
+  "sha256": "0rrhi14asrswzg4pn38vyqrc0bh83bs4jfvdj3sbd7jd1zizgj09",
+  "fetcher": "github",
+  "repo": "danielmartin/swift-helpful",
+  "unstable": {
+   "version": [
+    20200516,
+    1836
+   ],
+   "deps": [
+    "dash",
+    "lsp-mode",
+    "swift-mode"
+   ],
+   "commit": "e990ea6f5ea932763d002c3794dd9589add1532d",
+   "sha256": "1a4yrj3yjqgd5jssxd38dvx06cigsszrvs6hv7slfl60p729i0lw"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "dash",
+    "lsp-mode",
+    "swift-mode"
+   ],
+   "commit": "661e6fe419948419da4abf916b193b331b80a3be",
+   "sha256": "08w9h12y54aj2q6k48p9fglacppb5mlqh18h43n45hd7rcph3j93"
+  }
+ },
+ {
+  "ename": "swift-mode",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "103nix9k2agxgfpwyhsracixl4xvzqlgidd25r1fpj679hr42bg8",
+  "fetcher": "github",
+  "repo": "swift-emacs/swift-mode",
+  "unstable": {
+   "version": [
+    20200418,
+    617
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "2ab9ea1784a12a482ed9e3fb284b7a7658f40fff",
+   "sha256": "0wml7f8k3gqlxm0yg744271mqh087prlsfmbiv7fvkrcs55q0592"
+  },
+  "stable": {
+   "version": [
+    8,
+    0,
+    2
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "2ab9ea1784a12a482ed9e3fb284b7a7658f40fff",
+   "sha256": "0wml7f8k3gqlxm0yg744271mqh087prlsfmbiv7fvkrcs55q0592"
+  }
+ },
+ {
+  "ename": "swift-playground-mode",
+  "commit": "9a516f729d6d85f26ec0309db702a16d0ba46c1c",
+  "sha256": "1nqr0ccll7nznh3ahvb699slz5ikjhci3m09j2qm5mxm2pii07kg",
+  "fetcher": "gitlab",
+  "repo": "michael.sanders/swift-playground-mode",
+  "unstable": {
+   "version": [
+    20190730,
+    1707
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "111cde906508824ee11d774b908df867142a8aec",
+   "sha256": "1fr3fkxpkd5dk35fx656cx3h62zi74mnlvixb0vqpkn1qm2iwm55"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "111cde906508824ee11d774b908df867142a8aec",
+   "sha256": "1fr3fkxpkd5dk35fx656cx3h62zi74mnlvixb0vqpkn1qm2iwm55"
+  }
+ },
+ {
+  "ename": "swift3-mode",
+  "commit": "0ca9071199230d3c4c1b2e3a501736df87095fd3",
+  "sha256": "14vm05p8ix09v73dkmf03i56yib8yk6h2r1zc9m4ym80fki4f520",
+  "fetcher": "github",
+  "repo": "taku0/swift3-mode",
+  "unstable": {
+   "version": [
+    20160918,
+    1250
+   ],
+   "commit": "4e51265c6905e17d8910e35b0b37cf51e20ecdfe",
+   "sha256": "0wqwjzr3z9gzsjiyyr0ds4c5zvgifb9hbjadb7vkbbpzdy6qd9s1"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    1
+   ],
+   "commit": "ea34d46bf9a4293e75ffdac9500d34989316d9e9",
+   "sha256": "1hwc3fxv87hmw0a0mgl8khfzf1p7yp2izkc02z8f1vbkaibmmawp"
+  }
+ },
+ {
+  "ename": "swiper",
+  "commit": "e64cad81615ef3ec34fab1f438b0c55134833c97",
+  "sha256": "0qaia5pgsjsmrfmcdj72jmj39zq82wg4i5l2mb2z6jlf1jpbk6y9",
+  "fetcher": "github",
+  "repo": "abo-abo/swiper",
+  "unstable": {
+   "version": [
+    20200503,
+    1102
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "04ca16420053a3a6d34a96f0d680dd449c2e5851",
+   "sha256": "1sjaf026zim28c9cld0w5hlk9inp1map70ip99smlk483ib6lbj3"
+  },
+  "stable": {
+   "version": [
+    0,
+    13,
+    0
+   ],
+   "deps": [
+    "ivy"
+   ],
+   "commit": "cd634c6f51458f81898ecf2821ac3169cb65a1eb",
+   "sha256": "0ghcwrg8a6r5q6fw2x8s08cwlmnz2d8qjhisnjwbnc2l4cgqpd9p"
+  }
+ },
+ {
+  "ename": "swiper-helm",
+  "commit": "674c709490e13267e09417e08953ff76bfbaddb7",
+  "sha256": "011ln6vny7z5vw67cpzldxf5n6sk2hjdkllyf7v6sf4m62ws93ph",
+  "fetcher": "github",
+  "repo": "abo-abo/swiper-helm",
+  "unstable": {
+   "version": [
+    20180131,
+    1744
+   ],
+   "deps": [
+    "helm",
+    "swiper"
+   ],
+   "commit": "93fb6db87bc6a5967898b5fd3286954cc72a0008",
+   "sha256": "05n4h20lfyg1kis5rig72ajbz680ml5fmsy6l1w4g9jx2xybpll2"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "helm",
+    "swiper"
+   ],
+   "commit": "93fb6db87bc6a5967898b5fd3286954cc72a0008",
+   "sha256": "05n4h20lfyg1kis5rig72ajbz680ml5fmsy6l1w4g9jx2xybpll2"
+  }
+ },
+ {
+  "ename": "switch-buffer-functions",
+  "commit": "d37ebd28f4a2f770958bd9a2669cce86cc76cbe7",
+  "sha256": "1b93p8q07zncqq3nw829gddc615rwaan1ds5vgfhdb1l7bh9f37l",
+  "fetcher": "github",
+  "repo": "10sr/switch-buffer-functions-el",
+  "unstable": {
+   "version": [
+    20200127,
+    409
+   ],
+   "commit": "95a846baa93bac4c3b3c028b9d53507f1042b23a",
+   "sha256": "0ykdggzgdlb3dcg1qm388290h612kf5l224kwiv5jvvp8wqzb47l"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "commit": "e1bccfff2d123b6218efab16c486215cedb9a108",
+   "sha256": "0pq53b8wrjbrxd5hnrcdi0z7mffp4bax55hn90k9ca3j76lhbn1k"
+  }
+ },
+ {
+  "ename": "switch-window",
+  "commit": "7d2204e3b53ade1e400e143ac219f3c7ab63a1e9",
+  "sha256": "02f0zjvlzms66w1ryhk1cbr4rqwklzvgcjfiicj0lcnqqx61m2k2",
+  "fetcher": "github",
+  "repo": "dimitri/switch-window",
+  "unstable": {
+   "version": [
+    20200502,
+    511
+   ],
+   "commit": "8710f6304d843365fb59b6efe7e1f729d14e557c",
+   "sha256": "1v8qx519dwhpwg9ba08nl3kp329n3p1dbjj7iiiwmn22580nrkqh"
+  },
+  "stable": {
+   "version": [
+    1,
+    6,
+    2
+   ],
+   "commit": "204f9fc1a39868a2d16ab9370a142c8c9c7a0943",
+   "sha256": "0rci96asgamr6qp6nkyr5vwrnslswjxcjd96yccy4aivh0g66yfg"
+  }
+ },
+ {
+  "ename": "swoop",
+  "commit": "7a4e84530b4607a277fc3b678fe7b34b1c5e3b4f",
+  "sha256": "1hbldd9cqh3vfa3h7idf0rjjnib7ih44l1p4hzc8p36q5fqbh0xp",
+  "fetcher": "github",
+  "repo": "emacsorphanage/swoop",
+  "unstable": {
+   "version": [
+    20200321,
+    319
+   ],
+   "deps": [
+    "async",
+    "ht",
+    "pcre2el"
+   ],
+   "commit": "7f6f20d0f32b76b7ce5b1459afa44c1ab700f8bb",
+   "sha256": "1d134f3dyh8sa8q8dgmla01wiky61y4jmhqb5whqpb7c2p53niyc"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "async",
+    "ht",
+    "pcre2el"
+   ],
+   "commit": "de2d29eb45edab802cf8b275aa1c25a24050122e",
+   "sha256": "1caq17f7s4pdy6jzyxfh5zwqmwkwkbfpgcnj5f09qgmwanjygjya"
+  }
+ },
+ {
+  "ename": "sws-mode",
+  "commit": "877b5a3e612e1b1d6d51e60c66b0b79f231abdb2",
+  "sha256": "0b12dsad0piih1qygjj0n7rni0pl8cizbzwqm9h1dr8imy53ak4i",
+  "fetcher": "github",
+  "repo": "brianc/jade-mode",
+  "unstable": {
+   "version": [
+    20150317,
+    1945
+   ],
+   "commit": "4dbde92542fc7ad61df38776980905a4721d642e",
+   "sha256": "0p6pfxbl98kkwa3lgx82h967w4p0wbd9s96gvs72d74ryan07ij1"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "4e7a20db492719062f40b225ed730ed50be5db56",
+   "sha256": "0krbd1qa2408a97pqhl7fv0x8x1n2l3qq33zzj4w4vv0c55jk43n"
+  }
+ },
+ {
+  "ename": "sx",
+  "commit": "f16958a09820233fbe2abe403561fd9a012d0046",
+  "sha256": "1ml1rkhhk3hkd16ij2zwng591rxs2yppsfq9gwd4ppk02if4v517",
+  "fetcher": "github",
+  "repo": "vermiculus/sx.el",
+  "unstable": {
+   "version": [
+    20191229,
+    1746
+   ],
+   "deps": [
+    "cl-lib",
+    "json",
+    "let-alist",
+    "markdown-mode"
+   ],
+   "commit": "e9d1093c97507a6d7b4f4710ef65200dae725e5f",
+   "sha256": "0m90ddwm8j0y6d1ppqhd2gil1107k202blw6mzm5bdambn4nfqkf"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "cl-lib",
+    "json",
+    "let-alist",
+    "markdown-mode"
+   ],
+   "commit": "4892f45746fb217d059f4fa074a237c5bac7dd6c",
+   "sha256": "02f63k8rzb3bcch6vj6w5c5ncccqg83siqnc8hyi0lhy1bfx240p"
+  }
+ },
+ {
+  "ename": "sxiv",
+  "commit": "1b3da730053c1f45e67fefb2e9bfce222cc38628",
+  "sha256": "0jj0bzw365227anvg9zqy78zdfczfvqlac47kjdyziqmj958yhh8",
+  "fetcher": "gitlab",
+  "repo": "contrapunctus/sxiv.el",
+  "unstable": {
+   "version": [
+    20200508,
+    1620
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "f1a030c538af6d47d32eef04ab6536eeef948268",
+   "sha256": "0qnd89zphpa9cl7xw6lchsi0yw2a48v8xbgddgbsisff183bzcfz"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    2
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "f1a030c538af6d47d32eef04ab6536eeef948268",
+   "sha256": "0qnd89zphpa9cl7xw6lchsi0yw2a48v8xbgddgbsisff183bzcfz"
+  }
+ },
+ {
+  "ename": "symbol-overlay",
+  "commit": "c2a468ebe1a3e5a35ef40c59a62befbf8960bd7b",
+  "sha256": "1al60x2mnjsv99jd10v5sd56zz185wsddiq7128phf1l35bkibis",
+  "fetcher": "github",
+  "repo": "wolray/symbol-overlay",
+  "unstable": {
+   "version": [
+    20191224,
+    250
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "8096a684c29bae20e1f5a1c7adbe7881680a5c10",
+   "sha256": "1x7ghzxn5634amvj6r786j8nm25b780pz8h57z7qk40x0s6qk5a7"
+  },
+  "stable": {
+   "version": [
+    4,
+    1
+   ],
+   "commit": "d1464042783e252f5cac1fcac82fee16fc3534db",
+   "sha256": "0d5ir4f3xmz3kr0w93zw45ha4hzz4rvldiza3q9fmqm7m1w2c995"
+  }
+ },
+ {
+  "ename": "symbolword-mode",
+  "commit": "be2018e0206c3f39c1b67e83000b030d70a72ceb",
+  "sha256": "1fs1irnmlbrn76b4gdsy0v65nz8av85iqm0b7g9nm2rm8azcr050",
+  "fetcher": "github",
+  "repo": "ncaq/symbolword-mode",
+  "unstable": {
+   "version": [
+    20180401,
+    1427
+   ],
+   "deps": [
+    "f"
+   ],
+   "commit": "cd344b6c2cb6a8fcf061af2c85441644a4e7a006",
+   "sha256": "193lq58mhkq0rrinkaxiyhkk60qf7q0gx03na2968zcrahrd8w75"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "273dece5b04f7abc4c35048b2f64f04b33774b87",
+   "sha256": "0gpm0zy1kwqxkakvfdgh1lylp99msyamwvi19c53g9jl01m9avyd"
+  }
+ },
+ {
+  "ename": "symex",
+  "commit": "bbe4ff01aa8c06093cd0e4ad0cce253c3fb52816",
+  "sha256": "0nx03kl4bwdbidhvb7zba9gr6pc2gplh6zbnlxjb3zsvdm4injh1",
+  "fetcher": "github",
+  "repo": "countvajhula/symex.el",
+  "unstable": {
+   "version": [
+    20200425,
+    1911
+   ],
+   "deps": [
+    "cider",
+    "cl-lib",
+    "dash-functional",
+    "evil",
+    "evil-cleverparens",
+    "evil-surround",
+    "geiser",
+    "hydra",
+    "lispy",
+    "paredit",
+    "racket-mode",
+    "slime",
+    "smartparens"
+   ],
+   "commit": "3dba2ae3f65bd1c40e3756e05a57ced039a15a7f",
+   "sha256": "1j2ycsi2ipbyaknscy0vgr1ybyvzl7j1q0gvazkl5rpihshz2shl"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    0
+   ],
+   "deps": [
+    "cider",
+    "cl-lib",
+    "dash-functional",
+    "evil",
+    "evil-cleverparens",
+    "evil-surround",
+    "geiser",
+    "hydra",
+    "lispy",
+    "paredit",
+    "racket-mode",
+    "slime",
+    "smartparens"
+   ],
+   "commit": "62bd31d8647b88ec179fb8ff89f583b55a0421cc",
+   "sha256": "1c2y65hcd0nydhkh7a903flq061x8hld272n00xn4dd0b8kvjp29"
+  }
+ },
+ {
+  "ename": "symon",
+  "commit": "3f4bbc6b3d7b2e2a9fbe7ff7f1d47cda9c859cc0",
+  "sha256": "11llnvngyc3xz8nd6nj86ism0hhs8p54wkscvs4yycbakbyn61lz",
+  "fetcher": "github",
+  "repo": "zk-phi/symon",
+  "unstable": {
+   "version": [
+    20170224,
+    833
+   ],
+   "commit": "8dd8b6df49b03cd7d31b85aedbe9dd08fb922335",
+   "sha256": "1bbblz9qzc84h08010y48mjyciavl6lnxk2m19mwbc6b5y58vwpg"
+  },
+  "stable": {
+   "version": [
+    20160630
+   ],
+   "commit": "7beeedd70dc37f5904c781fb697c8df056196ee9",
+   "sha256": "1q7di9s8k710nx98wnqnbkkhdimrn0jf6z4xkm4c78l6s5idjwlz"
+  }
+ },
+ {
+  "ename": "symon-lingr",
+  "commit": "936e9a83ed73d3b6090e5c401076b6cff5d9732d",
+  "sha256": "0kyhmw25cn10b4jv2yx7bvp8zkwcswiidpk4amyaisw25820gkv1",
+  "fetcher": "github",
+  "repo": "zk-phi/symon-lingr",
+  "unstable": {
+   "version": [
+    20150719,
+    1342
+   ],
+   "deps": [
+    "cl-lib",
+    "symon"
+   ],
+   "commit": "056d1a473e36992ff5881e5ce6fdc331cead975f",
+   "sha256": "030bglxnvrkf1f9grbhd8n11j4c6sxpabpjdr1ryx522v01fvx8j"
+  }
+ },
+ {
+  "ename": "sync-recentf",
+  "commit": "9858ea35f2a3faacab56b6ccba5672956560456b",
+  "sha256": "17aji2vcw6zfd823anzwj8pcgyxamxr87bnni085jvlz0vx6gh9c",
+  "fetcher": "github",
+  "repo": "ffevotte/sync-recentf",
+  "unstable": {
+   "version": [
+    20160326,
+    2001
+   ],
+   "commit": "0052561d5c5b5c2684faedc3eead776aec06c3ed",
+   "sha256": "006siydqxqds0qqds0zxn821dk4pw14wyymyp03n594wgqzw7m8q"
+  }
+ },
+ {
+  "ename": "synonymous",
+  "commit": "ecf2c44c63e9f41f1733849bdef0d0c301485580",
+  "sha256": "0vawa9qwvv6z1i7vzhkjdl1l9r1yham48yn5y8w8g1xyhxxp6rs5",
+  "fetcher": "github",
+  "repo": "toroidal-code/synonymous.el",
+  "unstable": {
+   "version": [
+    20180325,
+    1817
+   ],
+   "deps": [
+    "cl-lib",
+    "request"
+   ],
+   "commit": "2cb9a674d84fddf3f1b00c9d6b13a853576acb87",
+   "sha256": "1l0skavpj96x5gdrx9l8dqj4mrb7zcilv3jj335ak11p2i4ckcq2"
+  }
+ },
+ {
+  "ename": "synosaurus",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "06a48ajpickf4qr1bc14skfr8khnjjph7c35b7ajfy8jw2zwavpn",
+  "fetcher": "github",
+  "repo": "hpdeifel/synosaurus",
+  "unstable": {
+   "version": [
+    20191125,
+    552
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "14d34fc92a77c3a916b4d58400424c44ae99cd81",
+   "sha256": "1z6ij6yydjym1ds2vshnkaakng0qgix4r7kzndh8jwrisvb5vml3"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "14d34fc92a77c3a916b4d58400424c44ae99cd81",
+   "sha256": "1z6ij6yydjym1ds2vshnkaakng0qgix4r7kzndh8jwrisvb5vml3"
+  }
+ },
+ {
+  "ename": "synquid",
+  "commit": "6ccd9f265d90a5f6a95942938532f556b223e4da",
+  "sha256": "10kmd9g3qbfnyfl2bdf2s70f5sd3pyzalq18dpgq5ijkwqi019k7",
+  "fetcher": "github",
+  "repo": "cpitclaudel/synquid-emacs",
+  "unstable": {
+   "version": [
+    20160930,
+    1550
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "28701ce1a15437202f53ab93a14bcba1de83fd2c",
+   "sha256": "0c0pi5w8xvir9gnbjp80g1c4i3rhid65zwh4i4vkyivkh2s29f6i"
+  }
+ },
+ {
+  "ename": "syntactic-close",
+  "commit": "f2c15c0c8ee37a1de042a974c6daddbfa7f33f1d",
+  "sha256": "19lrzxxyzdj1nrzdgzandjz3b8b4pw7akbv86yf0mdf023d9as1f",
+  "fetcher": "github",
+  "repo": "emacs-berlin/syntactic-close",
+  "unstable": {
+   "version": [
+    20200408,
+    1148
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "c21ffdf6a2f8c2a83d3efc729852cd2b09fe03a6",
+   "sha256": "1m6y7njkn5vibgnr3pnh6nci75j2ksr93ajp01jwpxxxc0wmipa8"
+  }
+ },
+ {
+  "ename": "syntactic-sugar",
+  "commit": "b32b9b3b3e820e498d7531a1f82da36e5e8f4e74",
+  "sha256": "12b2vpvz5h4wzxrk8jrbgc8v0w6bzzvxcyfs083fi1791qq1rw7r",
+  "fetcher": "github",
+  "repo": "rolandwalker/syntactic-sugar",
+  "unstable": {
+   "version": [
+    20140508,
+    2041
+   ],
+   "commit": "7ddc4502c831abe1c4ad4c7d1ca628a2c9e13968",
+   "sha256": "0zi11540wwcl93xcgd2yf6b72zv01zkaqbf1jfbksg82k9038m2d"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    4
+   ],
+   "commit": "06d943c6ad9507603bb6ab6d37be2d359d0763a9",
+   "sha256": "1pn69f4w48jdj3wd1myj6qq2mhvygmlzbq2dws2qkjlp3kbwa6da"
+  }
+ },
+ {
+  "ename": "syntax-subword",
+  "commit": "caca0b2bc2aaac563074cbb4ea4296fce749e203",
+  "sha256": "1nfbpckxfy95m7bnj08bnpf8zyxc0dyap5hq1plxl3lxb3c4fvr4",
+  "fetcher": "github",
+  "repo": "jpkotta/syntax-subword",
+  "unstable": {
+   "version": [
+    20160519,
+    1905
+   ],
+   "commit": "ad0db0fcb464652a1d3408f525dee9293ce2b70c",
+   "sha256": "1wcgr6scvwwfmhhjbpq3riq0gmp4g08ffbl91fpgp72j8zrc1c6x"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "01b27feac37eb60cf73ff80374004d9e847e637d",
+   "sha256": "12jk28jbkq1pcpgsbknk8xzzghjh2dhwb54kag2hynldn4qgfkrz"
+  }
+ },
+ {
+  "ename": "sysctl",
+  "commit": "72ab5a8c1bc5901477b888a1abf8835a5af7cb41",
+  "sha256": "09h3z6mnsck82m8jhbgllx71wg1kmr5v57354xa2db6nfppp09rj",
+  "fetcher": "github",
+  "repo": "dantecatalfamo/sysctl.el",
+  "unstable": {
+   "version": [
+    20190720,
+    2028
+   ],
+   "commit": "0fc50305a96de059ad1ff4e6081c9b4089f5247f",
+   "sha256": "0v2andw08qawgbdzn0vplxd3drs41gqf2qbidhakmsssdd4nqiib"
+  }
+ },
+ {
+  "ename": "syslog-mode",
+  "commit": "44b28cc63352e4398a94338d885371226d1e81aa",
+  "sha256": "15kh2v8jsw04vyh2lmh1ndpxli3cwp6yq66hl8mwb1i3g429az19",
+  "fetcher": "github",
+  "repo": "vapniks/syslog-mode",
+  "unstable": {
+   "version": [
+    20190913,
+    2040
+   ],
+   "deps": [
+    "hide-lines",
+    "ov"
+   ],
+   "commit": "18f441bf57dd70cdd48a71f1f4566ab35facdb35",
+   "sha256": "1xl6immya0i5xjpls3vqdqj9rr5jxp5srny8l9j4qxf8kp75byqa"
+  },
+  "stable": {
+   "version": [
+    2,
+    3
+   ],
+   "deps": [
+    "hide-lines",
+    "ov"
+   ],
+   "commit": "18f441bf57dd70cdd48a71f1f4566ab35facdb35",
+   "sha256": "1xl6immya0i5xjpls3vqdqj9rr5jxp5srny8l9j4qxf8kp75byqa"
+  }
+ },
+ {
+  "ename": "system-packages",
+  "commit": "7d3c7af03e0bca3f834c32827cbcca29e29ef4db",
+  "sha256": "13nk3m8gw9kqjllk7hgkmpxsx9y5h03f0l7zydg388wc7cxsiy3l",
+  "fetcher": "gitlab",
+  "repo": "jabranham/system-packages",
+  "unstable": {
+   "version": [
+    20200426,
+    1714
+   ],
+   "commit": "92c58d98bc7282df9fd6f24436a105f5f518cde9",
+   "sha256": "01hj46zgs7a1as0r0x451ag2fb40pp3gyzycvj0gm328grn6vpmk"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    11
+   ],
+   "commit": "3ad6d52072f0bd043dced40ba7bd422fd9c00a7b",
+   "sha256": "0pxkyys2lgn16rhf4mzqlh27vs9aw6g083z2vr2agr7bmbavd2fp"
+  }
+ },
+ {
+  "ename": "system-specific-settings",
+  "commit": "3f52c584d7435c836ba3c95c598306ba0f5c06da",
+  "sha256": "1ydmxi8aw2lf78wv4m39yswbqkmcadqg0wmzg9s8b5h9bxxwvppp",
+  "fetcher": "github",
+  "repo": "DarwinAwardWinner/emacs-system-specific-settings",
+  "unstable": {
+   "version": [
+    20140818,
+    1457
+   ],
+   "commit": "0050d85b2175095aa5ecf580a2fe43c069b0eef3",
+   "sha256": "1hixilnnybv2v3p1wpn7a0ybwah17grawszs3jycsjgzahpgckv7"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "0050d85b2175095aa5ecf580a2fe43c069b0eef3",
+   "sha256": "1hixilnnybv2v3p1wpn7a0ybwah17grawszs3jycsjgzahpgckv7"
+  }
+ },
+ {
+  "ename": "systemd",
+  "commit": "ca810e512c357d1d0130aeeb9b46b38c595e3351",
+  "sha256": "1ykvm8mfi3fjvrkfcy9qn0sr9mhwm9x1svrmrd0gyqk418clk5i3",
+  "fetcher": "github",
+  "repo": "holomorph/systemd-mode",
+  "unstable": {
+   "version": [
+    20191219,
+    2304
+   ],
+   "commit": "51c148e09a129ddf33d95276aa0e89d4ef6f8dd2",
+   "sha256": "0mikrj91qip5f0sj62c4gamvw7h6wc0yz8cfyzj9h3gxrllkp87k"
+  },
+  "stable": {
+   "version": [
+    1,
+    6
+   ],
+   "commit": "1e7567a9973bf80cab0d7e0355656a84bee7ca96",
+   "sha256": "0ylgnvpfindg4cxccbqy02ic7p0i9rygf1w16dm1filwhbqvjplq"
+  }
+ },
+ {
+  "ename": "systemtap-mode",
+  "commit": "b1df01b4cccfb234971933d24de21a2b5648fd8c",
+  "sha256": "1l2jx6mvph0q2pdlhq7p4vwfw72rfl8k1rwi504bbkr5n5xwhhhz",
+  "fetcher": "github",
+  "repo": "ruediger/systemtap-mode",
+  "unstable": {
+   "version": [
+    20151122,
+    1940
+   ],
+   "commit": "1a968c2b1f3a054bebf91ac49739d3a81ce050a9",
+   "sha256": "0343ss3y9i40y3i9rr7p7bb4k9dj950zyvdv44q1abw2xrfd2xwd"
+  }
+ },
+ {
+  "ename": "ta",
+  "commit": "847693b5952e99597bd77223e1058536d1beeb5c",
+  "sha256": "0kn2k4n0xfwsrniaqb36v3rxj2pf2sai3bmjksbn1g2kf5g156ll",
+  "fetcher": "github",
+  "repo": "kuanyui/ta.el",
+  "unstable": {
+   "version": [
+    20160619,
+    1645
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "668ad41e71f374f8c32c8d0532f3d8485b355d35",
+   "sha256": "1lk7hpdp6c74sdwkg2azfvj4qmbl1ghmhms3r0j4296dj8bl5k63"
+  },
+  "stable": {
+   "version": [
+    1,
+    5
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "9226afbe7abbefb825844ef3ba4ca15f1934cfc2",
+   "sha256": "09nndx83ws5v2i9x0dzk6l1a0lq29ffzh3y05n0n64nf5j0a7zvk"
+  }
+ },
+ {
+  "ename": "tab-group",
+  "commit": "ad758d865bde8c97d27c0d57cabe1606f8b36974",
+  "sha256": "1i5lxpf3wmqnqj9mzgcn4gp1gjxp737awrzl1dml5wnarbbj4fs9",
+  "fetcher": "github",
+  "repo": "tarao/tab-group-el",
+  "unstable": {
+   "version": [
+    20140306,
+    1450
+   ],
+   "commit": "5a290ec2608e4100fb188fd60ecb77affcc3465b",
+   "sha256": "0lfvgbgvsm61kv5mcjnhnfjcnr7fy1015y0hndkf9xvdlw4hahr4"
+  }
+ },
+ {
+  "ename": "tab-jump-out",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "1p2hkj0d9hbiwbf746l3rad8a5x6hk97b0ajl6q6cwbmy2qm3cca",
+  "fetcher": "github",
+  "repo": "zhangkaiyulw/tab-jump-out",
+  "unstable": {
+   "version": [
+    20151006,
+    130
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "1c3fec1826d2891177ea78e4e7cce1dc67e83e51",
+   "sha256": "0h7sfbca1nzcjylwl7zp25yj6wxnlx8g8a50zc6sg6jg4rggi2fm"
+  }
+ },
+ {
+  "ename": "tabbar",
+  "commit": "806420d75561cbeffbc1b387345a56c21cc20179",
+  "sha256": "1y376nz1xmchwns4fz8dixbb7hbqh4mln78zvsh7y32il98wzvx9",
+  "fetcher": "github",
+  "repo": "dholm/tabbar",
+  "unstable": {
+   "version": [
+    20180726,
+    1735
+   ],
+   "commit": "82bbda31cbe8ef367dd6501c3aa14b7f2c835910",
+   "sha256": "01sw76wp8bvh21h30pkc3kjr98c8m6qid6misk1y7hkyld0bzxay"
+  },
+  "stable": {
+   "version": [
+    2,
+    2
+   ],
+   "commit": "82bbda31cbe8ef367dd6501c3aa14b7f2c835910",
+   "sha256": "01sw76wp8bvh21h30pkc3kjr98c8m6qid6misk1y7hkyld0bzxay"
+  }
+ },
+ {
+  "ename": "tabbar-ruler",
+  "commit": "1d69d1ef8dbab8394be01153cf9ebe8e49bf9912",
+  "sha256": "10dwjj6r74g9rzdd650wa1wxhqc0q6dmff4j0qbbhmjsxvsr3y0d",
+  "fetcher": "github",
+  "repo": "mattfidler/tabbar-ruler.el",
+  "unstable": {
+   "version": [
+    20160802,
+    307
+   ],
+   "deps": [
+    "cl-lib",
+    "mode-icons",
+    "powerline",
+    "tabbar"
+   ],
+   "commit": "535568189aa12a3eff7f977d2783e57b6a65ab6a",
+   "sha256": "1csj6qhwihdf4kfahcqhm163isiwac08w4nqid1hnca184bfk6xm"
+  },
+  "stable": {
+   "version": [
+    0,
+    45
+   ],
+   "deps": [
+    "tabbar"
+   ],
+   "commit": "7df2e4814018e84ef9261d04a2ade8168a44e3d7",
+   "sha256": "1xd67s92gyr49v73j7r7cbhsc40bkw8aqh21whgbypdgzpyc7azc"
+  }
+ },
+ {
+  "ename": "tablist",
+  "commit": "5fc0c6c02d609fb22710560337bd577f4b1e0c8f",
+  "sha256": "0c10g86xjhzpmc2sqjmzcmi393qskyw6d9bydqzjk3ffjzklm45p",
+  "fetcher": "github",
+  "repo": "politza/tablist",
+  "unstable": {
+   "version": [
+    20200427,
+    2205
+   ],
+   "commit": "faab7a035ef2258cc4ea2182f67e3aedab7e2af9",
+   "sha256": "1nqp7v5jd6zibpnx0w720xj2if71z1sgly9mmlnbcryg15p7c4gz"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "f6b495d09494784163c3e6ba75b771b71fe226a8",
+   "sha256": "0pzsdg0rm59daw34ppss79cg05z9wnr8nkmdcc48nkd0p69ip2yy"
+  }
+ },
+ {
+  "ename": "tabula-rasa",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "14j92inssmm61bn475gyn0dn0rv8kvfnqyl1zq3xliy7a0jn58zz",
+  "fetcher": "github",
+  "repo": "idomagal/Tabula-Rasa",
+  "unstable": {
+   "version": [
+    20141216,
+    547
+   ],
+   "commit": "e85fff9de18dc31bc6a7aca726e34a95cc5459f5",
+   "sha256": "1dbjfq9a7a5s9c18nrp4kcda64jkg5cp8na31kxw0hjcn98dgqa8"
+  }
+ },
+ {
+  "ename": "tagedit",
+  "commit": "8968e2cd0bd49d54a5479b2467bd4f0a97d7a969",
+  "sha256": "0vfkbrxmrw4fwdz324s734zxdxm2nj3df6i8m6lgb9pizqyp2g6z",
+  "fetcher": "github",
+  "repo": "magnars/tagedit",
+  "unstable": {
+   "version": [
+    20161121,
+    855
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "b3a70101a0dcf85498c92b7fcfa7fdbac869746c",
+   "sha256": "0xq9i3axlq9wgsr27nbhi5k9hxr1wahygkb73xkvxlgmvkmikcrw"
+  },
+  "stable": {
+   "version": [
+    1,
+    4,
+    0
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "3fcf54b824b75c5ad68f5438d5638103049a389f",
+   "sha256": "0kq40g46s8kgiafrhdq99h79rz9h5fvgz59k7ralmf86bl4sdmdb"
+  }
+ },
+ {
+  "ename": "take-off",
+  "commit": "3d129ad161d8538c9db022bbd4e90eacda998cf4",
+  "sha256": "05vlajmirbp62rpbdwa2bimpzyl9xc331gg0lhn2rkivc0hma2ar",
+  "fetcher": "github",
+  "repo": "tburette/take-off",
+  "unstable": {
+   "version": [
+    20140531,
+    917
+   ],
+   "deps": [
+    "web-server"
+   ],
+   "commit": "aa9ea45566fc74febbb6ee9c409ecc4b59246215",
+   "sha256": "13zwlb5805cpv0pbr7fj5b4crlg7lb0ibslvcpszm0cz6rlifcvf"
+  }
+ },
+ {
+  "ename": "tango-2-theme",
+  "commit": "ab432b0eac0bcf0d40c5b3c8a78475bc0fea47d2",
+  "sha256": "1a9qmz99h99gpd0sxqb71c08wr8pm3bzsg3p4cvf3vcirvav9lq6",
+  "fetcher": "git",
+  "url": "https://gist.github.com/2024464.git",
+  "unstable": {
+   "version": [
+    20120312,
+    2025
+   ],
+   "commit": "64e44c98e41ebbe3b827d54280e3b9615787daaa",
+   "sha256": "1lqkazis9pfcfdsb2lar4l1n4pd085v60xmnlkdrdllwamqachkk"
+  }
+ },
+ {
+  "ename": "tango-plus-theme",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1p1b48fvmk7a8m3bnddkx2pp7kz5agac0v1ii2r6iqapdqsl22ng",
+  "fetcher": "github",
+  "repo": "tmalsburg/tango-plus-theme",
+  "unstable": {
+   "version": [
+    20200423,
+    804
+   ],
+   "commit": "1e9484bb392bb0aad2be159505c502320f8d0a5c",
+   "sha256": "1819s9c0nm4pkgcpxqnr20075krq30qn6hpg4zl54cnrxbfbiq9f"
+  }
+ },
+ {
+  "ename": "tangotango-theme",
+  "commit": "ebfcfa3ba4ca77443667a9478d59214810cd8cc2",
+  "sha256": "05cnvyqmh5h5mqys7qs7d9knzxzmi2x0j1avp77x5l5njzzv59s2",
+  "fetcher": "github",
+  "repo": "juba/color-theme-tangotango",
+  "unstable": {
+   "version": [
+    20170924,
+    1509
+   ],
+   "commit": "e2f2ea9c35f06dfc43a29c91c14cf0cdb19f2144",
+   "sha256": "01gvsvha8z7pyr8c33gh3xmz47lh6b8g0nwf1gzdiw1gd0sfhs4z"
+  }
+ },
+ {
+  "ename": "tao-theme",
+  "commit": "94b70f11655944080507744fd06464607727ecef",
+  "sha256": "0gl6zzk5ha6vl2xxf5fcnv1k42cw4axdjdcirr1c4r8jwdq3nl3a",
+  "fetcher": "github",
+  "repo": "11111000000/tao-theme-emacs",
+  "unstable": {
+   "version": [
+    20200325,
+    344
+   ],
+   "commit": "34917843cde086943816d8a48977658c663a784e",
+   "sha256": "1ks4pnwp5fg2vswr93hrli2shfd7rrf3nwqwr1qwmqxhq1600f3x"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    1
+   ],
+   "commit": "af142b423536b47bce67afda5108dbf3a9317521",
+   "sha256": "1fs4rhb4g7s7x3cvqv9d2x5f3079z2hkmp5lns7qfziszkc9fxia"
+  }
+ },
+ {
+  "ename": "taskpaper-mode",
+  "commit": "f969b1cd58dfd22041a8a2b116db0f48e321e546",
+  "sha256": "0gayhzakiwlrkysmh24499pyzdfy3rmf8d68vamih7igxpl57gim",
+  "fetcher": "github",
+  "repo": "saf-dmitry/taskpaper-mode",
+  "unstable": {
+   "version": [
+    20200513,
+    1728
+   ],
+   "commit": "45625bd90cf5dbdcaed02b57baaa995e240ceb4c",
+   "sha256": "1s2xxscj675ps93hqczw1xcs3jsixblfzjcfpz74vbz9zkmq1ygm"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "169dab1eb632e5ac5e34608be2df4e9854368180",
+   "sha256": "0mwd9i6mm0h18z7fiqla95bx6c0zb8x4f6380842hgzi9zrnghxi"
+  }
+ },
+ {
+  "ename": "taskrunner",
+  "commit": "f0e0354a4da2e675406068d158c7e532cd5ed083",
+  "sha256": "0dyqqlafzxn0irmqwfh9rjysn1vm0wxlapg3pzgqps1w4mkkvwc5",
+  "fetcher": "github",
+  "repo": "emacs-taskrunner/emacs-taskrunner",
+  "unstable": {
+   "version": [
+    20190916,
+    1608
+   ],
+   "deps": [
+    "async",
+    "projectile"
+   ],
+   "commit": "716323aff410b4d864d137c9ebe4bbb5b8587f5e",
+   "sha256": "03llmj09jg5cba927qbzkhld83k24yd1i95nfiq7q754a4y4iksn"
+  }
+ },
+ {
+  "ename": "tawny-mode",
+  "commit": "ea9a114ff739f7d6f5d4c3167f5635ddf79bf60c",
+  "sha256": "1xaw1six1n6rw1283fdyl15xcf6m7ngvq6gqlz0xzpf232c4b0kr",
+  "fetcher": "github",
+  "repo": "phillord/tawny-owl",
+  "unstable": {
+   "version": [
+    20191108,
+    1346
+   ],
+   "deps": [
+    "cider"
+   ],
+   "commit": "8dfb4f92db2d8598ba809636a82d210c378b4845",
+   "sha256": "1sdi1rr9xq7spps5hagzs8irfljxmbd5y3hh4jiyvn54cwicg3g8"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    3
+   ],
+   "deps": [
+    "cider"
+   ],
+   "commit": "ce85fd9bcd008031a605ea8913577f452b49e352",
+   "sha256": "06dm6gdh10jbmyjr0y96s06qi3k12phq522pviis68qm7v2ryr47"
+  }
+ },
+ {
+  "ename": "tblui",
+  "commit": "f4dd6e9dcc73c57f93371ba16b15f2d98d805dae",
+  "sha256": "1m0zhk5zyialklnil5az974yz6g1zksw02453cxc0xpn5pf0a3xa",
+  "fetcher": "github",
+  "repo": "Yuki-Inoue/tblui.el",
+  "unstable": {
+   "version": [
+    20161007,
+    1912
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "magit-popup",
+    "tablist"
+   ],
+   "commit": "bb29323bb3e27093d50cb42db3a9329a096b6e4d",
+   "sha256": "1pja9v4h3abqc2iydm7wwjxrg7ni1pn94yb4azrgjq5qc0fsgn7a"
+  }
+ },
+ {
+  "ename": "tbx2org",
+  "commit": "d616cbf4ad7e49807afd2f7acf0a0fd2f2a0bac4",
+  "sha256": "1yvkw65la4w12c4w6l9ai73lzng170wv4b8gry99m2bakw3wr8m8",
+  "fetcher": "github",
+  "repo": "istib/tbx2org",
+  "unstable": {
+   "version": [
+    20140224,
+    1559
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "s"
+   ],
+   "commit": "08e9816ba6066f56936050b58d07ceb2187ae6f7",
+   "sha256": "1jp80qywcphql1ngd4fr24lqdfwrw0bw6q9hgq5vmzgjwfxwxwd4"
+  }
+ },
+ {
+  "ename": "tc",
+  "commit": "9fddfc79ed2c614c33e90ba80f300912fdab88a3",
+  "sha256": "05lnsaizlh4wqjkp0wqcm1756r9ia46as8zf01k8qsi0mm452g6q",
+  "fetcher": "github",
+  "repo": "kanchoku/tc",
+  "unstable": {
+   "version": [
+    20181109,
+    428
+   ],
+   "commit": "cb3403fb134dc62d8a48253027891785849cff31",
+   "sha256": "14q01mar66x3bv0ghfws0pv3qrpg9szgzb99ql3qfhbnkw0m859d"
+  }
+ },
+ {
+  "ename": "tco",
+  "commit": "ca33f97f0394585c8ccb31cab0ee776d1655907c",
+  "sha256": "0hfrzwjlgynk3mydrpmic9mckak37r22fdglrfas6zdihgrg152f",
+  "fetcher": "github",
+  "repo": "Wilfred/tco.el",
+  "unstable": {
+   "version": [
+    20191129,
+    2040
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "d82478d56568f60b3a82fd010b3ca0bab2ef5dc9",
+   "sha256": "0lh04mpa1yb3mwasvnnbdzffcig7ndlk13d96a0lavqn49a10fa3"
+  }
+ },
+ {
+  "ename": "tdd-status-mode-line",
+  "commit": "25b445a1dea5e8f1042bed6b5372471c25129fd8",
+  "sha256": "1i0s7f4y4v8681mymcmjlcbq0jfghgmdzrs167c453mb5ssz8yxg",
+  "fetcher": "github",
+  "repo": "algernon/tdd-status-mode-line",
+  "unstable": {
+   "version": [
+    20131123,
+    1716
+   ],
+   "commit": "4c082e62f4915b573338a97efcc6854d132323dc",
+   "sha256": "1jyz6z5bk1gvmknphcnvjvbl329zm8m40yl0a1hfaj8fvhwyzdw5"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "commit": "9b3c35b0a972772640e9fee653eab6a76e06416a",
+   "sha256": "0bvxc926kaxvqnppaw4y6gp814qc0krvidn5qg761z4qwz023rax"
+  }
+ },
+ {
+  "ename": "tea-time",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "0qypwf0pgsixq6c5avbwp81i3ayy9dd2fngzdvq14pax913q8pg1",
+  "fetcher": "github",
+  "repo": "konzeptual/tea-time",
+  "unstable": {
+   "version": [
+    20120331,
+    820
+   ],
+   "commit": "1f6cf0bdd27c5eb3508989c5095427781f858eca",
+   "sha256": "0b4cwkwkc4i8lc4j30xc9d6xskm3gqrc2dij60ya75h92aj0lj40"
+  }
+ },
+ {
+  "ename": "teacode-expand",
+  "commit": "8b23b0f701627ed18886f29ffd33ef7fb1f82e04",
+  "sha256": "1hkh7mzzwrk7a8ihss7kyncw9mkwr4iw06gv5y6kg806qc4f1nn3",
+  "fetcher": "github",
+  "repo": "raguay/TeaCode-Expand",
+  "unstable": {
+   "version": [
+    20181231,
+    640
+   ],
+   "commit": "3aae07c71249de616d42fed7fa2585c4fa6f25c6",
+   "sha256": "0l3mhn8m96d9mxs9kkp6clj5qzns5dw9w628kf9ibwbbc5fq01aa"
+  }
+ },
+ {
+  "ename": "telega",
+  "commit": "e067f03ebe9dd8c90ceaa5a7983483087c74107f",
+  "sha256": "0n1n1fciwh7jbakdjkx36aq6k0is0c694j3n5dicwvfp7spca7p8",
+  "fetcher": "github",
+  "repo": "zevlg/telega.el",
+  "unstable": {
+   "version": [
+    20200516,
+    1007
+   ],
+   "deps": [
+    "rainbow-identifiers",
+    "visual-fill-column"
+   ],
+   "commit": "e2fd3b1b34ae659d306749ab3129ed498b3a2720",
+   "sha256": "0h851m3p9cqblr5wpl769g8dl5vxjgx62c6grkdk2g0ip2cm4vcf"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    0
+   ],
+   "deps": [
+    "visual-fill-column"
+   ],
+   "commit": "ae09592498ce380e57fbb76725fd4c89ae248864",
+   "sha256": "0mv6i80958d9crzspzik5xh5g8326115bvg2frgv0dp9p6rm86m3"
+  }
+ },
+ {
+  "ename": "telepathy",
+  "commit": "485ef1745f07f29c45bf0d489eeb4fcdfda80b33",
+  "sha256": "0c3d6vk7d6vqzjndlym2kk7d2zm0b15ac4142ir03p6f19rqq9pr",
+  "fetcher": "github",
+  "repo": "NicolasPetton/telepathy.el",
+  "unstable": {
+   "version": [
+    20131209,
+    1258
+   ],
+   "commit": "211d785b02a29ddc254422fdcc3db45262582f8c",
+   "sha256": "16kr1p4lzi1ysd5r2dh0mxk60zsm5fvwa9345nfyrgdic340yscc"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "211d785b02a29ddc254422fdcc3db45262582f8c",
+   "sha256": "16kr1p4lzi1ysd5r2dh0mxk60zsm5fvwa9345nfyrgdic340yscc"
+  }
+ },
+ {
+  "ename": "telephone-line",
+  "commit": "9c998b70365fb0a210c3b9639db84034c7d45097",
+  "sha256": "0dyh9h1yk9y0217b6rxsm7m372n910vpfgw5w23lkkrwa8x8qpx3",
+  "fetcher": "github",
+  "repo": "dbordak/telephone-line",
+  "unstable": {
+   "version": [
+    20200412,
+    1614
+   ],
+   "deps": [
+    "cl-generic",
+    "cl-lib",
+    "seq"
+   ],
+   "commit": "65198f72f3b1ae618507aa28094f05d6de4846a9",
+   "sha256": "177v612ii8nj9nsmfxlf17gr3wair4whzggi3pshch7ghbxdqv5q"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "cl-generic",
+    "cl-lib",
+    "seq"
+   ],
+   "commit": "a83dcda21b0f6e10e51c3cded7da9a5d2ead5f34",
+   "sha256": "1cg34l6jq75mcqnb3p93z0kv1arvnswm8nkk39fmryand2yygnl9"
+  }
+ },
+ {
+  "ename": "template-overlays",
+  "commit": "8856e67aae1f623714bc2a61a7b4773ed1fb2934",
+  "sha256": "0vmadkgzp4i0mh64la67k1anvmlmd4i7iibdlr9ly8z7i3cdsxqn",
+  "fetcher": "github",
+  "repo": "mmontone/template-overlays",
+  "unstable": {
+   "version": [
+    20180706,
+    1132
+   ],
+   "deps": [
+    "ov"
+   ],
+   "commit": "d32db58c044b2aca3720879003f55b1d57208b07",
+   "sha256": "1hfm0miqzym4fbj33hzh5iszp0i51imr1z54396vd81zjch9sxss"
+  }
+ },
+ {
+  "ename": "temporary-persistent",
+  "commit": "e608f40d00a3b2a80a6997da00e7d04f76d8ef0d",
+  "sha256": "0afjcad97pzbrjs1v80l6c98vi5asgaxcn2rq95gz1ld7nn0a9zh",
+  "fetcher": "github",
+  "repo": "kostafey/temporary-persistent",
+  "unstable": {
+   "version": [
+    20200201,
+    1719
+   ],
+   "deps": [
+    "dash",
+    "names",
+    "s"
+   ],
+   "commit": "0080879b0257d350aeba1c4d6901613d7dc534de",
+   "sha256": "1np9xh6gqynp96rby2shh4w40r14vsvpvwaibq0c1wr1ydwggm9i"
+  }
+ },
+ {
+  "ename": "ten-hundred-mode",
+  "commit": "4a0534044ff9ce0740414bf5dc3b104bbdbdacce",
+  "sha256": "17v38h33ka70ynq72mvma2chvlnm1k2amyvk62c65iv67rwilky3",
+  "fetcher": "github",
+  "repo": "aaron-em/ten-hundred-mode.el",
+  "unstable": {
+   "version": [
+    20161028,
+    2236
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "bdcfda49b1819e82d61fe90947e50bb948cf7933",
+   "sha256": "11nsh6dkd3i489lrqpd9xhr4c0ai51364rlrd6slm54720by9jql"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "bdcfda49b1819e82d61fe90947e50bb948cf7933",
+   "sha256": "11nsh6dkd3i489lrqpd9xhr4c0ai51364rlrd6slm54720by9jql"
+  }
+ },
+ {
+  "ename": "term+",
+  "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a",
+  "sha256": "12lvfspqmyrapmbz3x997vf160927d325y50kxdx3s6p81r7n2n8",
+  "fetcher": "github",
+  "repo": "tarao/term-plus-el",
+  "unstable": {
+   "version": [
+    20170509,
+    17
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "c3c9239b339c127231860de43abfa08c44c0201a",
+   "sha256": "1mpv9vvvl1sh35vsa5415rvdv57mmbfix8s435q676zvhz3nl8yx"
+  }
+ },
+ {
+  "ename": "term+key-intercept",
+  "commit": "ad758d865bde8c97d27c0d57cabe1606f8b36974",
+  "sha256": "1564a86950xdwsrwinrs118bjsfmbv8gicq0c2dfr827v5b6zrlb",
+  "fetcher": "github",
+  "repo": "tarao/term-plus-ki-el",
+  "unstable": {
+   "version": [
+    20140211,
+    750
+   ],
+   "deps": [
+    "key-intercept",
+    "term+"
+   ],
+   "commit": "fd0771fd66b8c7a909aaac972194485c79ba48c4",
+   "sha256": "1dql2w8xkdw52zlrc2p9x391zn8wv4dj8a6293p4s08if7gg260w"
+  }
+ },
+ {
+  "ename": "term+mux",
+  "commit": "ad758d865bde8c97d27c0d57cabe1606f8b36974",
+  "sha256": "129kzjpi5nzagqkjfikx9i7k6489dy7d3pd7ggn59p4cnh3r2rhh",
+  "fetcher": "github",
+  "repo": "tarao/term-plus-mux-el",
+  "unstable": {
+   "version": [
+    20140211,
+    749
+   ],
+   "deps": [
+    "tab-group",
+    "term+"
+   ],
+   "commit": "81b60e80cf008472bfd7fad9233af2ef722c208a",
+   "sha256": "12gfvcf7hl29xhg231cx76q04ll7cvfpvhkb0qs3qn1sqb50fs2q"
+  }
+ },
+ {
+  "ename": "term-alert",
+  "commit": "0d77aee0b1b2eb7834436bdfa339f95cb97da140",
+  "sha256": "02qvfhklysfk1fd4ibdngf4crp9k5ab11zgg90hi1sp429a53f3m",
+  "fetcher": "github",
+  "repo": "CallumCameron/term-alert",
+  "unstable": {
+   "version": [
+    20161119,
+    945
+   ],
+   "deps": [
+    "alert",
+    "f",
+    "term-cmd"
+   ],
+   "commit": "1166c39cc3fb1cb7808eb8955b7f9f6094a306cd",
+   "sha256": "1hbyiwqv9waynf8gm3c717mph0p9mfi2x1wfpvdzzr25r0fz8xr0"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "deps": [
+    "alert",
+    "f",
+    "term-cmd"
+   ],
+   "commit": "47af9e6fe483ef0d393098c145f499362a33292a",
+   "sha256": "1nv8ma8x9xkgsl95z7yysy8q1lb3xr0pd8a5sb01nlx8ks3clad4"
+  }
+ },
+ {
+  "ename": "term-cmd",
+  "commit": "e08ea89cf193414cce5073fc9c312f2b382bc842",
+  "sha256": "0pbz9fy9rjfpzspwq78ggf1wcvjslwvj8fvc05w4g56ydza0gqi4",
+  "fetcher": "github",
+  "repo": "CallumCameron/term-cmd",
+  "unstable": {
+   "version": [
+    20160517,
+    1045
+   ],
+   "deps": [
+    "dash",
+    "f"
+   ],
+   "commit": "552aa58965aab9b78e46934462bafe54c0396ffb",
+   "sha256": "0l5xk8npc23c716fjckd65xq83hjwnvpyxixc9brxfz4ybngzwhy"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "dash",
+    "f"
+   ],
+   "commit": "6c9cbc659b70241d2ed1601eea34aeeca0646dac",
+   "sha256": "08qiipjsqc9dfbha6r2yijjbrg2s4i2mkn6zn5616086550v3kpj"
+  }
+ },
+ {
+  "ename": "term-manager",
+  "commit": "0b2f7d8c8fcbb535432f8e70729d69a572e49a1a",
+  "sha256": "0ab388ki7vr1wpz81bvbl2fskq9zz5bicdf5gqfg01qzv5l75iza",
+  "fetcher": "github",
+  "repo": "IvanMalison/term-manager",
+  "unstable": {
+   "version": [
+    20190610,
+    2032
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "eea7894350a4f31e1df0c666d3fb0bac822d34d2",
+   "sha256": "1rkivl5dy25haip62ybb10fd0gda9aacg9nafj6rkpa7n6mwkkqm"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "0bca2e7e3b6e906ec67696bc0be952988ca7f733",
+   "sha256": "0ybmszjb2lrgqp3zixpxy0lp2l9axw3mz2d4n2kmajh8ckbr576v"
+  }
+ },
+ {
+  "ename": "term-projectile",
+  "commit": "5260876280148fae28a459f07932cebb059b560e",
+  "sha256": "1mzyzjxkdfvf1kq9m3c1f6y6xzj1qq53rixawmnzmil5cmznvwag",
+  "fetcher": "github",
+  "repo": "IvanMalison/term-manager",
+  "unstable": {
+   "version": [
+    20190307,
+    400
+   ],
+   "deps": [
+    "projectile",
+    "term-manager"
+   ],
+   "commit": "eea7894350a4f31e1df0c666d3fb0bac822d34d2",
+   "sha256": "1rkivl5dy25haip62ybb10fd0gda9aacg9nafj6rkpa7n6mwkkqm"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "projectile",
+    "term-manager"
+   ],
+   "commit": "0bca2e7e3b6e906ec67696bc0be952988ca7f733",
+   "sha256": "0ybmszjb2lrgqp3zixpxy0lp2l9axw3mz2d4n2kmajh8ckbr576v"
+  }
+ },
+ {
+  "ename": "term-run",
+  "commit": "7cad6343104bfe5724e068660af79a6249010164",
+  "sha256": "1bx3s68rgr9slsw9k01gfg7sxd4z7sarg4pi2ivril7108mhg2cs",
+  "fetcher": "github",
+  "repo": "10sr/term-run-el",
+  "unstable": {
+   "version": [
+    20200128,
+    702
+   ],
+   "commit": "0fd135d55fcf864598b1fb8dd880833a1a322910",
+   "sha256": "1x1qdm5ahd5bxb4xi2i7ha5zqcxa5n0yskiqcz2hdbwpsdiirmlc"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    5
+   ],
+   "commit": "54650dbbabb13cb2a6c0670ff6b24b29717a6a8b",
+   "sha256": "149pl3zxg5kriydk5h6j95jyly6i23w4w4g4a99s4zi6ljiny6c6"
+  }
+ },
+ {
+  "ename": "termbright-theme",
+  "commit": "a7151773de39fe570e3e9b351daad89db9dd267f",
+  "sha256": "14q88qdbnyzxr8sr8i5glj674sb4150b9y6nag0dqrxs629is6xj",
+  "fetcher": "github",
+  "repo": "bmastenbrook/termbright-theme-el",
+  "unstable": {
+   "version": [
+    20151031,
+    235
+   ],
+   "commit": "bec6ab14336c0611e85f45486276004f16d20607",
+   "sha256": "0gfsqpza8phvma5y3ck0n6p197x1i33w39m3c7jmja4ml121n73d"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "bec6ab14336c0611e85f45486276004f16d20607",
+   "sha256": "0gfsqpza8phvma5y3ck0n6p197x1i33w39m3c7jmja4ml121n73d"
+  }
+ },
+ {
+  "ename": "terminal-focus-reporting",
+  "commit": "19e7149a0a2db7df7f890a2c1ad22266e97694d7",
+  "sha256": "0iwq0rabq0sdn4apa5ibfp912j76w7hzg3q5lbxp7fspfwwynvg2",
+  "fetcher": "github",
+  "repo": "veelenga/terminal-focus-reporting.el",
+  "unstable": {
+   "version": [
+    20180830,
+    719
+   ],
+   "commit": "8b84bf18f4c5f1b59a11692eb706f13c3598d9a5",
+   "sha256": "0bbcl0mq62f22n2aipgzx93164x81bgybfd0x7gvsfva76qs8pc4"
+  }
+ },
+ {
+  "ename": "terminal-here",
+  "commit": "f8df6f7e23476eb52e7fdfbf9de277d3b44db978",
+  "sha256": "1w64r3y88lspxxcqcqfwhakk8p9vl7q3z610dykfbqwqx61a6adj",
+  "fetcher": "github",
+  "repo": "davidshepherd7/terminal-here",
+  "unstable": {
+   "version": [
+    20180513,
+    833
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "bc7f3477133df0142d3e49e6eb8eaf4468b57865",
+   "sha256": "1i0pz5lfhgqzcqwi9wkiq8skj3hf00xn9vya890g1i9ix3bclq35"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "e176d1675dc5c41b6aebd05122fb2efc44b6cff0",
+   "sha256": "0dj3z8czvziszb20sizgf1yriv4im811rcfadm7ga9zs2al56kqy"
+  }
+ },
+ {
+  "ename": "terminal-toggle",
+  "commit": "673974fe768f88a7c67c929bb6b9b27fc028d4e2",
+  "sha256": "0l1gklcgas2g0kx5q59dzhv20pki5hxv4h3rsbrwbpq5rxkxymbx",
+  "fetcher": "github",
+  "repo": "mtekman/terminal-toggle.el",
+  "unstable": {
+   "version": [
+    20190226,
+    1510
+   ],
+   "deps": [
+    "popwin"
+   ],
+   "commit": "f824d634aef3600cb7a8e2ddf9e8444c6607c160",
+   "sha256": "150xvmr5vsydg0197m1k62mwy2810mzh1iwqj9yl9fg47fbzbg0i"
+  }
+ },
+ {
+  "ename": "tern",
+  "commit": "eaecd67af24050c72c5df73c3a12e717f95d5059",
+  "sha256": "1am97ssslkyijpvgk4nldi67ws48g1kpj6gisqzajrrlw5q93wvd",
+  "fetcher": "github",
+  "repo": "ternjs/tern",
+  "unstable": {
+   "version": [
+    20181108,
+    722
+   ],
+   "deps": [
+    "cl-lib",
+    "json"
+   ],
+   "commit": "a295a80a502771cc07dc061961e0eb85343c2925",
+   "sha256": "02szncbbvb52kv9mn2clqhzg49knpny1bxsa7wd5l0gwbsqly3dw"
+  },
+  "stable": {
+   "version": [
+    0,
+    24,
+    3
+   ],
+   "deps": [
+    "cl-lib",
+    "json"
+   ],
+   "commit": "0d19800db70a6348c627a69f444b91d21ad89629",
+   "sha256": "0ydrxxc3lgs8mpg577iw5sfxgyqfbdkrghwxmv8sxf6sawvhx8zv"
+  }
+ },
+ {
+  "ename": "tern-auto-complete",
+  "commit": "eaecd67af24050c72c5df73c3a12e717f95d5059",
+  "sha256": "1i99b4awph50ygcqsnppm1h48hbf8cpq1ppd4swakrwgmcy2mn26",
+  "fetcher": "github",
+  "repo": "ternjs/tern",
+  "unstable": {
+   "version": [
+    20170521,
+    1935
+   ],
+   "deps": [
+    "auto-complete",
+    "cl-lib",
+    "tern"
+   ],
+   "commit": "a295a80a502771cc07dc061961e0eb85343c2925",
+   "sha256": "02szncbbvb52kv9mn2clqhzg49knpny1bxsa7wd5l0gwbsqly3dw"
+  },
+  "stable": {
+   "version": [
+    0,
+    24,
+    3
+   ],
+   "deps": [
+    "auto-complete",
+    "cl-lib",
+    "tern"
+   ],
+   "commit": "0d19800db70a6348c627a69f444b91d21ad89629",
+   "sha256": "0ydrxxc3lgs8mpg577iw5sfxgyqfbdkrghwxmv8sxf6sawvhx8zv"
+  }
+ },
+ {
+  "ename": "tern-context-coloring",
+  "commit": "db2119d2c2d167d771ee02c2735b435d59991b93",
+  "sha256": "0wkb7gn2ma6mz495bgphcjs5p0c6a869zk4a8mnm0spq41xbw4gi",
+  "fetcher": "github",
+  "repo": "jacksonrayhamilton/tern-context-coloring",
+  "unstable": {
+   "version": [
+    20161218,
+    747
+   ],
+   "deps": [
+    "context-coloring",
+    "tern"
+   ],
+   "commit": "3a8e979d6cc83aabcb3dda3f5f31a6422532efba",
+   "sha256": "1rq5aqmsd7jqvwypafad9gmfcwjqjah00j7cws46k5f0dirjaa1y"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "context-coloring",
+    "tern"
+   ],
+   "commit": "3a8e979d6cc83aabcb3dda3f5f31a6422532efba",
+   "sha256": "1rq5aqmsd7jqvwypafad9gmfcwjqjah00j7cws46k5f0dirjaa1y"
+  }
+ },
+ {
+  "ename": "terraform-doc",
+  "commit": "81ba99e4734f231294800cc2b0a27fba2eb396e0",
+  "sha256": "0n62yicjsjikgbw5fckjxzgx5vfzn4ydi7jizm27ycpwxbw59ifl",
+  "fetcher": "github",
+  "repo": "TxGVNN/terraform-doc",
+  "unstable": {
+   "version": [
+    20190813,
+    1254
+   ],
+   "commit": "2ec10ea7bef5a75edfffeb515dd268e19c1f8c9c",
+   "sha256": "0r70fc7vv2rjnwnsg7myc1c15f3ql6hp6zrf5msmf8r2iz32jnpp"
+  }
+ },
+ {
+  "ename": "terraform-mode",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "14bhn86d7xv4nvqdr65pm0nwmzawbnxyxyig5i4k8ax20xh59d67",
+  "fetcher": "github",
+  "repo": "emacsorphanage/terraform-mode",
+  "unstable": {
+   "version": [
+    20170112,
+    517
+   ],
+   "deps": [
+    "hcl-mode"
+   ],
+   "commit": "2967e7bdc05d15617e121052f6e43c61439b9070",
+   "sha256": "0f8p3ns0xw1p64jm22q4pf0ajmb5vp2ppl4qvgxvyna6cvcmw4k5"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "deps": [
+    "hcl-mode"
+   ],
+   "commit": "6286aa42132a7fcad49271d63be33deeeb8d4efc",
+   "sha256": "05hn8kskx9lcgn7bzgam99c629zlryir2pickwrqndacjrqpdykx"
+  }
+ },
+ {
+  "ename": "test-c",
+  "commit": "ef915dc2d3bc09ef79eb8edde02101c89733c0b2",
+  "sha256": "1gy5dxkd4fpzzm2sq9g7bmi1ylwvsgh6hlvjmc1c064wjkha9j9z",
+  "fetcher": "github",
+  "repo": "aaptel/test-c",
+  "unstable": {
+   "version": [
+    20180423,
+    1720
+   ],
+   "commit": "761a576f62c7021ba941f178f153c51289df1553",
+   "sha256": "04dxgg4jz8cnw19wxybjwd36z8i9j6an15k9pz3zh3v7m72qzw7c"
+  }
+ },
+ {
+  "ename": "test-case-mode",
+  "commit": "d2e0bf342713cbdf30cf98d0bbc7476b0abeb7f5",
+  "sha256": "1iba97yvbi5vr7gvc58gq2ah6jg2s7apc9ssq7mdzki823n8z2qi",
+  "fetcher": "github",
+  "repo": "ieure/test-case-mode",
+  "unstable": {
+   "version": [
+    20130525,
+    1434
+   ],
+   "deps": [
+    "fringe-helper"
+   ],
+   "commit": "6074df10ebc97ddfcc228c71c73db179e672dac3",
+   "sha256": "1r3fmb8cshgh9pppdvydfcrzlmb9cgz4m04rgv69c5xv8clwcmbr"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "fringe-helper"
+   ],
+   "commit": "26e397c0f930b7eb0be413ef7dd257b1da052bec",
+   "sha256": "108csr1d7w0105rb6brzgbksb9wmq1p573vxbq0miv5k894j447f"
+  }
+ },
+ {
+  "ename": "test-kitchen",
+  "commit": "420d18c76f593338fb28807fcbe3b884be5b1634",
+  "sha256": "1bl3yvj56dq147yplrcwphcxiwvmx5n97y4qpkm9imiv8cnjm1g0",
+  "fetcher": "github",
+  "repo": "jjasghar/test-kitchen-el",
+  "unstable": {
+   "version": [
+    20171129,
+    2035
+   ],
+   "commit": "0fc0ca4808425f03fbeb8125246043723e2a179a",
+   "sha256": "1pip15ysya8nsk1xgz6k6gcjm6g60922r0im2anq4j2gjzdja79k"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "commit": "ddbcb964ac4700973eaf30ae366f086e3319e51f",
+   "sha256": "004rd6jkaklsbgka9mf2zi5qzxsl2shwl1kw0vgb963xkmk9zaz8"
+  }
+ },
+ {
+  "ename": "test-simple",
+  "commit": "a4b76e053faee299f5b770a0e41aa615bf5fbf10",
+  "sha256": "1l6y77fqd0l0mh2my23psi66v5ya6pbr2hgvcbsaqjnpmfm90w3g",
+  "fetcher": "github",
+  "repo": "rocky/emacs-test-simple",
+  "unstable": {
+   "version": [
+    20170527,
+    1532
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "cfd383d36dc6853917acb753fdfa0eebf33856f3",
+   "sha256": "0rn3x0v92v3a2g58armazhg97bl72d90j5gwf1zdak75hzimmah2"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "75eea25bae04d8e5e3e835a2770f02f0ff4602c4",
+   "sha256": "08g7fan1y3wi4w7cdij14awadqss6prqg3k7qzf0wrnbm13dzhmk"
+  }
+ },
+ {
+  "ename": "tex-smart-umlauts",
+  "commit": "be27e728327016b819535ef8cae10020e5a07c2e",
+  "sha256": "1bygl7fjm83j8lhkipczjs812837x9p3pqn8waykfbb7v05s81fr",
+  "fetcher": "github",
+  "repo": "emacsmirror/tex-smart-umlauts",
+  "unstable": {
+   "version": [
+    20190316,
+    2215
+   ],
+   "commit": "f15ed781b1fb38bf3e46c481dd602c3999920b99",
+   "sha256": "11ky141a33vm961jpj1spz9wxb4mfgw8drqxg2a6yk2rinkf0wcl"
+  }
+ },
+ {
+  "ename": "texfrag",
+  "commit": "756649bbe2dc6233c66c3d128a8096be12231078",
+  "sha256": "195vdpwqzypz35v8hc7ai9xpv1flrik60lgrk5m7xypnlp7mpr2x",
+  "fetcher": "github",
+  "repo": "TobiasZawada/texfrag",
+  "unstable": {
+   "version": [
+    20200424,
+    205
+   ],
+   "deps": [
+    "auctex"
+   ],
+   "commit": "48118c4e38836117efb4eede927ab85d9a0d2013",
+   "sha256": "1dpvf9limh9b0sg0x41gyw9w5nf5nvkd7zzlyysswhinm6jba4iz"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "auctex"
+   ],
+   "commit": "270a8a4b5dadddc5b226d9a9c6c7868ea6bfe86f",
+   "sha256": "18ahbksxg1i3gvsayx2mhkjd1p75c60x5f8d9a3abm4h50gs5mvf"
+  }
+ },
+ {
+  "ename": "textile-mode",
+  "commit": "3ebe5e52bc9bb8875ca390b34ac32eb47f4e1252",
+  "sha256": "0c1l7ml9b1zipk5fhmhirrh070h0qwwiagdk84i04yvdmmcjw2nf",
+  "fetcher": "github",
+  "repo": "juba/textile-mode",
+  "unstable": {
+   "version": [
+    20170304,
+    1716
+   ],
+   "commit": "c37aaab809503df008209390e31e19abf4e23630",
+   "sha256": "16543im5iymc5hfcix1lglbvpq4v0441vb7sk58nbnffqba83yzy"
+  }
+ },
+ {
+  "ename": "textmate",
+  "commit": "ad3923ac8948de75a159e916ecc22005a17458ad",
+  "sha256": "119w944pwarpqzcr9vys17svy1rkfs9hiln8903q9ff4lnjkpf1v",
+  "fetcher": "github",
+  "repo": "defunkt/textmate.el",
+  "unstable": {
+   "version": [
+    20110816,
+    2146
+   ],
+   "commit": "350918b070148f0ace6d9d3cd4ebcaf15c1a8781",
+   "sha256": "1b7xxz1i84azmbz8rqpxdn18avmnqlj87hfrpbngbf6pj5h9jqjh"
+  },
+  "stable": {
+   "version": [
+    1
+   ],
+   "commit": "484845493a3c9b570799aea5195a5435a5a01b76",
+   "sha256": "1a0fzn66gv421by0x6wj3z6bvzv274a9p8c2aaax0dskncl5lgk1"
+  }
+ },
+ {
+  "ename": "textmate-to-yas",
+  "commit": "487c461bf658d50135428d72fbfbb2573a00eb7d",
+  "sha256": "04agz4a41h0givfdw88qjd3c7pd418qyigsij4la5f37j5rh338l",
+  "fetcher": "github",
+  "repo": "mattfidler/textmate-to-yas.el",
+  "unstable": {
+   "version": [
+    20160409,
+    1708
+   ],
+   "commit": "be3a768b7ac4c2e24b9d4aa6e9ac1d916cdc5a73",
+   "sha256": "1bz5ys36wd00clq9w3ahqpras368aj2b9d4bl32qc6dyp8jfknmz"
+  },
+  "stable": {
+   "version": [
+    0,
+    21
+   ],
+   "commit": "8805e5159329e1b74629b7b584373fc446f57d31",
+   "sha256": "0fjapb7naysf34g4ac5gsa90b2s2ss7qgpyd9mfv3mdqrsp2dyw7"
+  }
+ },
+ {
+  "ename": "textx-mode",
+  "commit": "dada0378af342e0798c418032a8dcc7dfd80d600",
+  "sha256": "10y95m6fskvdb2gh078ifa70nc48shkvw0223iyqbyjys35h53bn",
+  "fetcher": "github",
+  "repo": "novakboskov/textx-mode",
+  "unstable": {
+   "version": [
+    20170516,
+    911
+   ],
+   "commit": "72f9f0c5855b382024f0da8f56833c22a70a5cb3",
+   "sha256": "1lr9v7dk0pnmpvdvs4m5d9yvxlii0xzr8b3akknm25gvbw1y1q8k"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "commit": "72f9f0c5855b382024f0da8f56833c22a70a5cb3",
+   "sha256": "1lr9v7dk0pnmpvdvs4m5d9yvxlii0xzr8b3akknm25gvbw1y1q8k"
+  }
+ },
+ {
+  "ename": "tf2-conf-mode",
+  "commit": "c43c53dca64cf0c7d59ffd0b17e9fe60f4aa90d3",
+  "sha256": "09kvb3ya1dx5pc146a6r9386fg9n9nfpcxm5mmhmyf75h9c6a25g",
+  "fetcher": "github",
+  "repo": "wynro/emacs-tf2-conf-mode",
+  "unstable": {
+   "version": [
+    20161209,
+    1620
+   ],
+   "commit": "536950f64c071ffd8495fb2c7ac7c63a11e25f93",
+   "sha256": "0vga7kgzp9wiiji1w47llbb3gp9qgwk8v0f6s8b6jng2gmdg25bk"
+  }
+ },
+ {
+  "ename": "tfsmacs",
+  "commit": "b449d004bdb498c2a1d155671070e0745c7d7598",
+  "sha256": "0j9rkcjxvgkcdnw2lxgk6bwid3q460n0hjxsj4nklv13s5b1hlyk",
+  "fetcher": "github",
+  "repo": "sebasmonia/tfsmacs",
+  "unstable": {
+   "version": [
+    20180911,
+    2114
+   ],
+   "deps": [
+    "tablist"
+   ],
+   "commit": "3c20cb76ccd7951eda0b5f076cd79e42f71e7220",
+   "sha256": "0pwx1cxc1d2hx823520b5a942nhl5w8alnhlq4kwi869wwzkmxfw"
+  }
+ },
+ {
+  "ename": "theme-changer",
+  "commit": "d08b24a2aec1012751054c68f7d55bac1bd1fd11",
+  "sha256": "1qbmsghkl5gs728q0gaalc7p8q7nzv3l045jc0jdxxnb7na3gc5w",
+  "fetcher": "github",
+  "repo": "hadronzoo/theme-changer",
+  "unstable": {
+   "version": [
+    20171221,
+    1927
+   ],
+   "commit": "61945695a30d678e6a5d47cbe7c8aff59a8c30ea",
+   "sha256": "14xc36jfgj8896pklrkpg394fgikir051rh9vm70v132n6i9j0cn"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    0
+   ],
+   "commit": "d3d9c9f62a138958262ac5dd61837df427268611",
+   "sha256": "09vf3qs949n4iqzd14iq2kgvypwdwdv8ii8l5jcqfppgspd8m8yd"
+  }
+ },
+ {
+  "ename": "theme-looper",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "018bixcbzri3zsasy1pp2qfvgd679ylpi9gq26qv9iwlfhlrpwgf",
+  "fetcher": "github",
+  "repo": "myTerminal/theme-looper",
+  "unstable": {
+   "version": [
+    20200410,
+    1757
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "eece1cef4483c02402f845d6158b35f6578447c3",
+   "sha256": "17slczwsd0av87fq44q9y1w6nvzvjfr2qn1majz5nqxfn55i6x9x"
+  },
+  "stable": {
+   "version": [
+    2,
+    6,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "0e314ad21193441a26ce1839737e7a054e6a1a1b",
+   "sha256": "1v4rv2w8jdjzikwfjxsxqrbfwh6nm88v9x74pdhc3mq36qwl487g"
+  }
+ },
+ {
+  "ename": "theme-magic",
+  "commit": "321c8ea8e095aa55d12f8dfb07001b9398adcbc5",
+  "sha256": "01vkwdfbhh7ifk1ziqmz257mjgn3ijmcva42ay4ih1n6268lr7k5",
+  "fetcher": "github",
+  "repo": "jcaw/theme-magic",
+  "unstable": {
+   "version": [
+    20190711,
+    2034
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "844c4311bd26ebafd4b6a1d72ddcc65d87f074e3",
+   "sha256": "10gkg7jh1s1484gm66a87zr7x8vmv00s7gfd0w2pj47nqf98g8hz"
+  }
+ },
+ {
+  "ename": "therapy",
+  "commit": "34e1bfdc684aaa7ebfbaa0ed60f8322c3de8a40d",
+  "sha256": "0y040ghb0y6aq0nchqr09vapz6h6112rkwxkqsx0v7xmqrqfjvhh",
+  "fetcher": "github",
+  "repo": "abingham/therapy",
+  "unstable": {
+   "version": [
+    20151113,
+    1953
+   ],
+   "commit": "775a92bb7b6b0fcc5b38c0b5198a9d0a1bef788a",
+   "sha256": "12kz4alyf3y2i7lkvi26hcxy55v0blsrxv5srx9fv5jhxkdz1vq1"
+  }
+ },
+ {
+  "ename": "thingopt",
+  "commit": "7856a62fb86415c88aa72b574895328c93c10a09",
+  "sha256": "1a91rvpgbil0cvp90zhj7rv9dqi48j2xr10ycyn52ps3ixhlcyl3",
+  "fetcher": "github",
+  "repo": "emacsorphanage/thingopt",
+  "unstable": {
+   "version": [
+    20160520,
+    2318
+   ],
+   "commit": "5679815852652479f3b3c9f3a98affc927384b2c",
+   "sha256": "12zpn0sy2yg37jjjx12h3kln56241b3z09bn5zavmjfdwnr9jd0a"
+  }
+ },
+ {
+  "ename": "thinks",
+  "commit": "439957cabf379651dc243219a83c3c96bae6f8cf",
+  "sha256": "11vj9mjfzmqwdmkq97aqns3fh8hkgx9scnki6c2iag5lj0av2vcq",
+  "fetcher": "github",
+  "repo": "davep/thinks.el",
+  "unstable": {
+   "version": [
+    20170802,
+    1128
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "c02f236abc8c2025d9f01460b09b89ebdc96e28d",
+   "sha256": "0g4ls668kyqnh4xkvz1s1z9j6n0a1gkgrzgl98hys7hny6zrk7aa"
+  },
+  "stable": {
+   "version": [
+    1,
+    12
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "7bdc418ff946d0cc9ea4cc73d38b3c71ffaa838d",
+   "sha256": "0wf3nikpnn0yivlmp6plyaiydm56mp3f91lljb1kay64nqgnfq65"
+  }
+ },
+ {
+  "ename": "thread-dump",
+  "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a",
+  "sha256": "0dzr86jyf2j49gq40q6qd6lppa57n65n94xzpdjjbs182hxzavp2",
+  "fetcher": "github",
+  "repo": "nd/thread-dump.el",
+  "unstable": {
+   "version": [
+    20170816,
+    1850
+   ],
+   "commit": "204c9600242756d4b514bb5ff6293e052bf4b49d",
+   "sha256": "11qx194gwizqg7p2mqy7mdfii85bdayabxfd388dmrm916i4w47n"
+  }
+ },
+ {
+  "ename": "threes",
+  "commit": "bff7d9ffbca45629f310743aff776b762c8507cc",
+  "sha256": "03zwcaibdj88a6whccc5ysqsnfwi76yhsgjsfp3lxjcmlkwqzjbs",
+  "fetcher": "github",
+  "repo": "xuchunyang/threes.el",
+  "unstable": {
+   "version": [
+    20160820,
+    1242
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "6981acb30b856c77cba6aba63fefbf102cbdfbb2",
+   "sha256": "1a7zqq6kmqxgzbsg8yczlvipzv65n10c8j26mc507p4m47nlikgv"
+  }
+ },
+ {
+  "ename": "thrift",
+  "commit": "0dca078c0c467bc44290a922ad5627d6a34194f8",
+  "sha256": "13isxx16h7rg8q5a68qmgrf3rknhfrx1qh6fb5njlznfwhrqry3y",
+  "fetcher": "github",
+  "repo": "facebook/fbthrift",
+  "unstable": {
+   "version": [
+    20200212,
+    1903
+   ],
+   "commit": "81d2abd9097fc3497f77d830ebf8d8386beb7127",
+   "sha256": "0k9yr3dx12cl07dlz0zmaaf4zfr4zh54w5ix74b0kj1ny299f9q6"
+  },
+  "stable": {
+   "version": [
+    2020,
+    5,
+    11,
+    0
+   ],
+   "commit": "99612a3f69c0aecf6c2c4535a610e888aa923820",
+   "sha256": "17p6ip2na9629pdbrllrhrpnhlb9ngjdcs7g9ha3yhvk0sbgz4wf"
+  }
+ },
+ {
+  "ename": "thumb-through",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "1544xw9lar199idk135z4d6i3n9w0v7g2bq7fnz0rjjw10kxvpcx",
+  "fetcher": "github",
+  "repo": "apg/thumb-through",
+  "unstable": {
+   "version": [
+    20120119,
+    534
+   ],
+   "commit": "08d8fb720f93c6172653e035191a8fa9c3305e63",
+   "sha256": "0nypcryqwwsdawqxi7hgsv6fp28zqslj9phw7zscqqxzc3svaywn"
+  }
+ },
+ {
+  "ename": "tickscript-mode",
+  "commit": "c60ee1839f728c5041bde1fe4fa62c4d41c746ef",
+  "sha256": "0wnck6j377idx7h7csmfdhp6napv3zs4sd24lknfclafhslllp54",
+  "fetcher": "github",
+  "repo": "msherry/tickscript-mode",
+  "unstable": {
+   "version": [
+    20171219,
+    203
+   ],
+   "commit": "f0579f38ff14954df5002ce30ae6d4a2c978d461",
+   "sha256": "0b3rbsd978ch0hiv45sqg9g4zsxhjn557j5f72vjql8cx1h5d8s4"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "commit": "6e7564593d7735acc9f3fa670ec6512991cb73a1",
+   "sha256": "173zk9nzjds0rkypmaq8xv5qianivgk16jpzgk0msdsn9kjbd8s9"
+  }
+ },
+ {
+  "ename": "tidal",
+  "commit": "16a26659a16199b5bb066be6e5c4a40419bda018",
+  "sha256": "0im0qbavpykacrwww3y0mlbhf5yfx8afcyvsq5pmjjp0aw245w6a",
+  "fetcher": "github",
+  "repo": "tidalcycles/Tidal",
+  "unstable": {
+   "version": [
+    20191210,
+    1647
+   ],
+   "deps": [
+    "haskell-mode"
+   ],
+   "commit": "f68e58cd7f8c483307573a96307f1f872a1921a0",
+   "sha256": "1rwc1vk0gl1sjnvzvwz4x25m6c61r8ghf6wrjclgifrm8zf1na5d"
+  },
+  "stable": {
+   "version": [
+    1,
+    4,
+    9
+   ],
+   "deps": [
+    "haskell-mode"
+   ],
+   "commit": "252e3be53eb1bf6bfcd1b3c52af982506c84a89e",
+   "sha256": "19chvk24csg5w38q6yh1wky4nk4z8361p1q5q118427njqkl5ql3"
+  }
+ },
+ {
+  "ename": "tide",
+  "commit": "a21e063011ebbb03ac70bdcf0a379f9e383bdfab",
+  "sha256": "1z2xr25s23sz6nrzzw2xg1l2j8jvjhxi53qh7nvxmmq6n6jjpwg1",
+  "fetcher": "github",
+  "repo": "ananthakumaran/tide",
+  "unstable": {
+   "version": [
+    20200504,
+    832
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "flycheck",
+    "s",
+    "typescript-mode"
+   ],
+   "commit": "8a7c1fc5dcc9b3321c10c71f21d1436b0a62ac07",
+   "sha256": "14i618dbhi66z19szyjznfnb56k9w64m00732g20r8izbhjsg4nm"
+  },
+  "stable": {
+   "version": [
+    3,
+    7,
+    4
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "flycheck",
+    "s",
+    "typescript-mode"
+   ],
+   "commit": "1878a097fc41ee81c40c155022c8feaaf8bfaa6d",
+   "sha256": "0ipri5jxx73vrra6dikbv0y2ws96wfi7bjh2v6pshiw3b1x2isav"
+  }
+ },
+ {
+  "ename": "tile",
+  "commit": "424cfd28378ef328721bb0dc3651808e64c01306",
+  "sha256": "1795048ilpg6y9pn0jj0js5446hwxhwm6qmk50hds0hpcb396vbv",
+  "fetcher": "github",
+  "repo": "IvanMalison/tile",
+  "unstable": {
+   "version": [
+    20161225,
+    357
+   ],
+   "deps": [
+    "dash",
+    "s",
+    "stream"
+   ],
+   "commit": "22660f21f6e95de5aba55cd5d293d4841e9a4661",
+   "sha256": "1qxhrm852j93sqi1lznlrjn7s0vscsixm48g46ja70gl320chyzm"
+  }
+ },
+ {
+  "ename": "time-ext",
+  "commit": "f8e4328cae9b4759a75da0b26ea8b68821bc71af",
+  "sha256": "133vd63p8258wam4fvblhfg37w2zqy4a5c5c5nafwx0cy90sngwz",
+  "fetcher": "github",
+  "repo": "rubikitch/time-ext",
+  "unstable": {
+   "version": [
+    20170126,
+    1215
+   ],
+   "commit": "d128becf660fe3f30178eb1b05cd266741f4784a",
+   "sha256": "0ynxmik33hh0znmznrf7lkmsh5xggbrvbdhiqa61r0b7gs3jk5fd"
+  }
+ },
+ {
+  "ename": "timecop",
+  "commit": "eb13cb0dba1696cc51132cd1ff723fa17f892a7c",
+  "sha256": "1hnmxcc2hjx9a4jyavx2v9hxmqacmmg1xj86rxqx3ms32hgigji5",
+  "fetcher": "github",
+  "repo": "emacs-php/emacs-datetime",
+  "unstable": {
+   "version": [
+    20160520,
+    1052
+   ],
+   "deps": [
+    "cl-lib",
+    "datetime-format"
+   ],
+   "commit": "e6427538b547cbe02e1bd6ed4b765c73620bdae8",
+   "sha256": "1573z8wq5m8qzbzmnsz2fmbwrj9c0ava0jjfchzmwm2b3jyvqh5r"
+  }
+ },
+ {
+  "ename": "timer-revert",
+  "commit": "991e68c59d1fbaef06ba2583f07499ecad05586d",
+  "sha256": "0lvm2irfx9rb5psm1lf53fv2jjx745n1c172xmyqip5xwgmf6msy",
+  "fetcher": "github",
+  "repo": "yyr/timer-revert",
+  "unstable": {
+   "version": [
+    20150122,
+    2032
+   ],
+   "commit": "615c91dec8b440d2b9b7c725dd733d7432564e45",
+   "sha256": "1hidvbd1xzz9m0fc55wac1mpv4dpcf8qnw1myh3646bfvivj9c2q"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "31ad8d94b85807cd9f63fcba0c90c3e9a9515fa2",
+   "sha256": "1vq5yp6pyjam2csz22mcp353a4d5r7f9m6bsjizfmgr2ld7bwhx7"
+  }
+ },
+ {
+  "ename": "timesheet",
+  "commit": "40009ef2f6845c83242ca5d0a8c9c2c1e4ef8a9d",
+  "sha256": "1gy6bf4wqvp8cw2wjnrr9ijnzwav3p7j46m7qrn6l0517shwl506",
+  "fetcher": "github",
+  "repo": "tmarble/timesheet.el",
+  "unstable": {
+   "version": [
+    20191024,
+    151
+   ],
+   "deps": [
+    "auctex",
+    "org",
+    "s"
+   ],
+   "commit": "5098dc87d3d4f289b6c1b6532070dacbfe6de9fd",
+   "sha256": "0wqxlb4a7fzf14629zw021216qyzz56xwr8hfh2fy6kj90m9br4c"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "deps": [
+    "auctex",
+    "org",
+    "s"
+   ],
+   "commit": "67ca6a9f6733052066b438301fb2dd81b8b3f6eb",
+   "sha256": "0rmh8lik27pmq95858jbjzgvf6rsfdnpynwcagj1fgkval5kzdbs"
+  }
+ },
+ {
+  "ename": "timonier",
+  "commit": "a31b0c177fd83bdeb1842a6ec3095de143bb4eae",
+  "sha256": "0vb83kv2dkca2bq876icxs8iivv9qgkzmzrsxfpnvbv752b220b0",
+  "fetcher": "github",
+  "repo": "nlamirault/timonier",
+  "unstable": {
+   "version": [
+    20170411,
+    800
+   ],
+   "deps": [
+    "all-the-icons",
+    "dash",
+    "f",
+    "hydra",
+    "pkg-info",
+    "request",
+    "s"
+   ],
+   "commit": "0a150ea87bf695b43cf1740dfd7e553e0ae7601c",
+   "sha256": "18yls8zc8d5nhx8j3l5av5xvmxmjrrmbzzab59kc6zib0isgxlcz"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "all-the-icons",
+    "dash",
+    "hydra",
+    "pkg-info",
+    "request",
+    "s"
+   ],
+   "commit": "33ca5887a1d1b63349177237e9edfb73546511a5",
+   "sha256": "0z6s26kc50rbmgkkbxzpasphi8hcwhixmi8ksqzrclayccjjj7ar"
+  }
+ },
+ {
+  "ename": "timp",
+  "commit": "27896aeb813215a43aec07a5ddf0ab2176df38fb",
+  "sha256": "1vh2wsgd8bclkbzn59zqbzzfzs0xx6x82004l7vnma8z97swvhgs",
+  "fetcher": "github",
+  "repo": "mola-T/timp",
+  "unstable": {
+   "version": [
+    20160618,
+    803
+   ],
+   "deps": [
+    "cl-lib",
+    "fifo-class",
+    "signal"
+   ],
+   "commit": "66b21934b1eb8ee428c06dd64b3562ad44776a35",
+   "sha256": "1jbmc356cqmjann2wdjnikyb0l136lpjka6bjim0rjhipdnw2acn"
+  }
+ },
+ {
+  "ename": "tinkerer",
+  "commit": "8a28e1dfe987287bac7c45f83ae6e754bc13e345",
+  "sha256": "0qh6pzjn98jlpxcm9zf25ga0y3d3v53275a9zgswyhz33mafd7pd",
+  "fetcher": "github",
+  "repo": "yyr/tinkerer.el",
+  "unstable": {
+   "version": [
+    20170906,
+    1224
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "e34135555f3748b578c7f8706dfd0c888fb87581",
+   "sha256": "0lzrarqh965ysd7w0z5rbisl45j11fbibyxmgivgy9parvhg59hk"
+  }
+ },
+ {
+  "ename": "tiny",
+  "commit": "d3029dab001fff5d12e8a2bace6ddbf897842c26",
+  "sha256": "183qczyb6c8zmdgmsjsj4hddmvnzzq4c7syslm861xcyxia94icy",
+  "fetcher": "github",
+  "repo": "abo-abo/tiny",
+  "unstable": {
+   "version": [
+    20190722,
+    1212
+   ],
+   "commit": "fd8a6b0b0c564d8242259e20e557ee6041f40908",
+   "sha256": "1498j392ap2mk4zmsm2id16pfgvj78r428da9vw7hdrzzibai2cx"
+  }
+ },
+ {
+  "ename": "tiny-menu",
+  "commit": "82700c97ca40130e7508c151f60220d3f23bf23c",
+  "sha256": "1nngf6vsqfr9fx82mj8dl8zw0fpwf4kr74sflxxk7qxj4aw1jirk",
+  "fetcher": "github",
+  "repo": "aaronbieber/tiny-menu.el",
+  "unstable": {
+   "version": [
+    20161213,
+    1235
+   ],
+   "commit": "05563b94537b6eb22aeddedef2a6e59e3f88d073",
+   "sha256": "0k0djq60mwhjiwy9dpy9m9bs507b9p19pdl3g2s8sd9i2fk53rfy"
+  }
+ },
+ {
+  "ename": "tinypng",
+  "commit": "c5b8b571d4c5766b392e58c6bc16924720856587",
+  "sha256": "04w19wzzpq3pzvv5d2pkijnn329ksqvcly4s9prp3gm7nqwi1r26",
+  "fetcher": "github",
+  "repo": "xuchunyang/tinypng.el",
+  "unstable": {
+   "version": [
+    20200306,
+    911
+   ],
+   "commit": "f7632e073ce13ef5ce30ae5584cb482a8bb9ffff",
+   "sha256": "1ywhj03j64pp2qmsp2g08xr7pq2qx3i0iwly2hl89hig87va0dpl"
+  }
+ },
+ {
+  "ename": "tinysegmenter",
+  "commit": "4f189290799f84282ff7cdecbb12a2a7cdfd1043",
+  "sha256": "005yy2f8vghvwdcwakz5sr9n1gzk6cfyglm6d8b74y90d8fng0r6",
+  "fetcher": "github",
+  "repo": "myuhe/tinysegmenter.el",
+  "unstable": {
+   "version": [
+    20141124,
+    1013
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "872134704bd25c13a4c59552433da4c6881b5230",
+   "sha256": "1n8cn6mr26hgmsm2mkbj5gs6dv61d0pap8ija4g0n1vsibfhzd8j"
+  }
+ },
+ {
+  "ename": "tj3-mode",
+  "commit": "dcf0f535a543bf36df9fb2e59c7fb9dfc00820f7",
+  "sha256": "06mhg0jc80cymplbri6axyzv18ayxppqz3vggywq9g2ba1vqj41h",
+  "fetcher": "github",
+  "repo": "csrhodes/tj3-mode",
+  "unstable": {
+   "version": [
+    20180519,
+    1228
+   ],
+   "commit": "1d98eb23f1606392f34ef1b80517cfc940fb9950",
+   "sha256": "1gzi8pvdgj4s9c54m2a8hicvg8dzac6253kyd2h71bljm4ilwl0f"
+  }
+ },
+ {
+  "ename": "tldr",
+  "commit": "45af2c5d1a36fcbf739812594c5cc878bf319a26",
+  "sha256": "1f1xsmkbf4j1c876qqr9h8fgx3zxjgdfzvzf6capxlx2svhxzvc9",
+  "fetcher": "github",
+  "repo": "kuanyui/tldr.el",
+  "unstable": {
+   "version": [
+    20200330,
+    1025
+   ],
+   "deps": [
+    "request"
+   ],
+   "commit": "269bda7001613c0b70c0662d2a74d200765c1dcb",
+   "sha256": "0z8hkp15sdb0x0g67v6xa8ds28awz4i2vcbryj5zfpl15d0fiqc2"
+  }
+ },
+ {
+  "ename": "tmmofl",
+  "commit": "8d29def44ae42dc4b60c1d254a57572bd09faf51",
+  "sha256": "1idflc5ky8hwdkps1rihdqy3i6cmhrh83sxz3kgf2kqjh365yr8b",
+  "fetcher": "github",
+  "repo": "phillord/tmmofl",
+  "unstable": {
+   "version": [
+    20121025,
+    1101
+   ],
+   "commit": "532aa6978e994e2b069ffe37aaf9a0011a07dadc",
+   "sha256": "1ypbv9jbdnwv3xjsfzq8i3nmqdvziynv2rqsd6fm2r1xw0q06xd6"
+  }
+ },
+ {
+  "ename": "tmux-pane",
+  "commit": "8bc165e115a2c457e44ac2762cf6a9f07f1b99c4",
+  "sha256": "0mv5y367i1wmk5kp8ms09xhrwvb4cwa08p39qy6mkakdhiby5m9q",
+  "fetcher": "github",
+  "repo": "laishulu/emacs-tmux-pane",
+  "unstable": {
+   "version": [
+    20200419,
+    1331
+   ],
+   "deps": [
+    "names",
+    "s"
+   ],
+   "commit": "6e8d0584b0bbd412c5d29c87add7364299b3d2a0",
+   "sha256": "054qncg530paiv1vs27hs94m2y2fzvr4iind1rr16m8v8qf7zia6"
+  }
+ },
+ {
+  "ename": "toc-org",
+  "commit": "1305d88eca984a66039444da1ea64f29f1950206",
+  "sha256": "06mx2b0zjck82vp3i4bwbqlrzn05i2rkf8080cn34nkizi59wlbs",
+  "fetcher": "github",
+  "repo": "snosov1/toc-org",
+  "unstable": {
+   "version": [
+    20190902,
+    1055
+   ],
+   "commit": "5deaec41ed0e5c51715737d7f74c5ae1b3c00387",
+   "sha256": "041fpryiz9584m0sl31jz6bs86621mr7lk6pyhiml46n60iccfzp"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "4315afd2a408c0d432ba3d8d040c2326c222fdbf",
+   "sha256": "0lk0rji85a1c0c5r9an0fdvsm4n4jyixsknmr8ywha3lfmc2p0l8"
+  }
+ },
+ {
+  "ename": "todoist",
+  "commit": "b9a75eb89bfeb0b7362bf6d2ffaf6b4750984b3a",
+  "sha256": "0fspvqr0m36mxbrnkql1gl8hwlv8qxd48f632zqzylj0vsygaxhf",
+  "fetcher": "github",
+  "repo": "abrochard/emacs-todoist",
+  "unstable": {
+   "version": [
+    20200227,
+    1510
+   ],
+   "deps": [
+    "dash",
+    "org",
+    "transient"
+   ],
+   "commit": "b1fba9f3600e6cfe129efae304b96a7f6dc66e1a",
+   "sha256": "0391m19ws4ajqfbbwd1q1z8p1l6ai94xzf2rqg5zdvlnmc06kl76"
+  }
+ },
+ {
+  "ename": "todotxt",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1ravnkj6y2p027yhba2lan10079xzd2q7l8gyb8n6bwq14jif127",
+  "fetcher": "github",
+  "repo": "rpdillon/todotxt.el",
+  "unstable": {
+   "version": [
+    20180626,
+    2230
+   ],
+   "commit": "f13e404304c9d26c105de872f96b4601441b3875",
+   "sha256": "1yvy2pl2ncgkz1xz598qjvp2v3g66m57wz7nra2vira7m4kq4671"
+  }
+ },
+ {
+  "ename": "todotxt-mode",
+  "commit": "cdc1926c5de86749caba1ad2d1e75225a31a8558",
+  "sha256": "1bs4air13ifx3xkhcfi80z29alsd63r436gnyvjyxlph2ip37v7k",
+  "fetcher": "github",
+  "repo": "avillafiorita/todotxt-mode",
+  "unstable": {
+   "version": [
+    20200228,
+    952
+   ],
+   "commit": "8b616ce1cf3e18a60757450a0acf22996abb9b79",
+   "sha256": "1frvksra8s004xknlizs5gz5rhy9xbis5r353pzsybmn1bxa40wk"
+  }
+ },
+ {
+  "ename": "togetherly",
+  "commit": "05da36e2d57a57255423a24a34742cbac2f6c9a5",
+  "sha256": "01ks160dfmgh05lx0lmyg020hba8nw49mj51dp1afcsmx4dkis2f",
+  "fetcher": "github",
+  "repo": "zk-phi/togetherly",
+  "unstable": {
+   "version": [
+    20170426,
+    616
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a6491bd5dd84f2aded0cd112ff06ae76ff78dfeb",
+   "sha256": "05x6ppfkpklxf1098acs6gpd3zm9k05vhywa7n01y2g6nhp697pw"
+  }
+ },
+ {
+  "ename": "toggle",
+  "commit": "bd02426ce7ab46361363c7a6c56b1575642003e0",
+  "sha256": "08lk8h2dk5s8k93j5vmxdlgg453pif8wbcx2w3xkjlh43dw1vdfq",
+  "fetcher": "github",
+  "repo": "zenspider/elisp",
+  "unstable": {
+   "version": [
+    20180316,
+    3
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "bcd3d76a47b4f0e7c382fb680b14f40208dae568",
+   "sha256": "0sgzjddd34icbbm4pc7v1662k6288pkr70ki4p2j3q4mh9qqc8q7"
+  }
+ },
+ {
+  "ename": "toggle-quotes",
+  "commit": "0f6e83e3184d336891f76c4740f64646d58ea980",
+  "sha256": "16w453v4g7ww93bydim62p785x7w4vssp9l5liy0h3ppfmgvmxhp",
+  "fetcher": "github",
+  "repo": "toctan/toggle-quotes.el",
+  "unstable": {
+   "version": [
+    20140710,
+    926
+   ],
+   "commit": "33abc221d6887f0518337851318065cd86c34b03",
+   "sha256": "1w1lmqgzn9bp59h9y9plv80y53k6qhjgfmnnlqyyqfl45z3si7kg"
+  }
+ },
+ {
+  "ename": "toggle-test",
+  "commit": "8ea51a54b745d9978c5177182cd8501912aa2d01",
+  "sha256": "0n8m325jcjhz8g75ysb9whsd12gpxw8598y5065j7c7gxjzv45l1",
+  "fetcher": "github",
+  "repo": "rags/toggle-test",
+  "unstable": {
+   "version": [
+    20140723,
+    537
+   ],
+   "commit": "e969321f274903d705995a7d0345a257576ec5ff",
+   "sha256": "0sgaslqxj806byidh06h5pqmqz8jzjfz9ky8jvkif3cq3a479jby"
+  }
+ },
+ {
+  "ename": "toggle-window",
+  "commit": "5505f778052353abce10f9ceef56ce95f5a5b662",
+  "sha256": "1z080jywqj99xiwbvfclr6gjkc6spr3dqjb9kq1g4971vx4w8n9g",
+  "fetcher": "github",
+  "repo": "deadghost/toggle-window",
+  "unstable": {
+   "version": [
+    20141207,
+    1548
+   ],
+   "commit": "e82c60e543933880402ede11e9423e48a17dde53",
+   "sha256": "0f86aij1glmvgpbhmfpi441zy0r37zblb0q3ycgq0dp92x8yny5r"
+  }
+ },
+ {
+  "ename": "tomatinho",
+  "commit": "3fe20de5b2b5e5abe5be7468cea7c87f5b26b237",
+  "sha256": "1ad3kr73v75vjrc09mdvb7a3ws834k5y5xha3v0ldah38cl1pmjz",
+  "fetcher": "github",
+  "repo": "konr/tomatinho",
+  "unstable": {
+   "version": [
+    20180621,
+    1748
+   ],
+   "commit": "b53354b9b9f496c0388d6a573b06b7d6fc53d0bd",
+   "sha256": "0vf2b1c9raa723iy2gfdmxjv4q0ivixy1vbs1x5q09cibca8kp4x"
+  }
+ },
+ {
+  "ename": "toml",
+  "commit": "bab369a63ca0e7fcfacfcb9ac3847ac4e631b28c",
+  "sha256": "0kqv6zkywa7kqh8kg1dzcgkbi91lwx335przdakndm1lfai38i9b",
+  "fetcher": "github",
+  "repo": "gongo/emacs-toml",
+  "unstable": {
+   "version": [
+    20130903,
+    1255
+   ],
+   "commit": "9633a6872928e737a2335aae1065768b23d8c3b3",
+   "sha256": "1b3bkla6i5nvanifxchph6ab6ldrskdf240hy4d27dkmmnr3pban"
+  }
+ },
+ {
+  "ename": "toml-mode",
+  "commit": "f8157d7d11f1e1848f0ba384249b4b8c6354830b",
+  "sha256": "0yghf2ixl3dkcaxnkr4qzxfa9k1rrac7w5qpw1jx2bvic0cfs40l",
+  "fetcher": "github",
+  "repo": "dryman/toml-mode.el",
+  "unstable": {
+   "version": [
+    20161107,
+    1800
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "f6c61817b00f9c4a3cab1bae9c309e0fc45cdd06",
+   "sha256": "05b4ksay85c8y5ncax0qsvnmplwsfiw24z16a58gkarjz938hb57"
+  }
+ },
+ {
+  "ename": "tommyh-theme",
+  "commit": "da9b40184e1559c33edd5e6dac6447013710cb79",
+  "sha256": "0nb9r407h08yxxdihxqx0c645bcz6qywbh2l654s3zfzdsqi1aj4",
+  "fetcher": "github",
+  "repo": "wglass/tommyh-theme",
+  "unstable": {
+   "version": [
+    20131004,
+    2330
+   ],
+   "commit": "46d1c69ee0a1ca7c67b569b891a2f28fed89e7d5",
+   "sha256": "0pwbd5gzmpr6js20438870w605671930291070nhmhswvxfcdvay"
+  }
+ },
+ {
+  "ename": "tongbu",
+  "commit": "e97578be9aa9bdadc6bdf6c7105242ca9d23bf80",
+  "sha256": "1gnjvb4w0mgr0swpqqk3hmscypv9bdg9q2ixkp2sv19d45gd4pvb",
+  "fetcher": "github",
+  "repo": "xuchunyang/tongbu.el",
+  "unstable": {
+   "version": [
+    20200414,
+    507
+   ],
+   "deps": [
+    "web-server"
+   ],
+   "commit": "6f6e5c5446f0c5735357ab520b249ab97295653e",
+   "sha256": "05pg1qddsl0m4r73smrxpcvyiwa18d9jl6i8nfanlydwmmjqblb9"
+  }
+ },
+ {
+  "ename": "tornado-template-mode",
+  "commit": "f329baae028fd17618824128f312a49aa0a0807e",
+  "sha256": "1sdv9rlhnabydws2sppsjcgqr0lg6bjapv753ksq5aaq21qsps0h",
+  "fetcher": "github",
+  "repo": "paradoxxxzero/tornado-template-mode",
+  "unstable": {
+   "version": [
+    20141128,
+    1008
+   ],
+   "commit": "667c0663dbbd279b6c345446b9f2bc50eb52b747",
+   "sha256": "0wv49gn1daylnjmnallpqsqy7630ynrp45agpiwi6kwyyqk1kdvv"
+  }
+ },
+ {
+  "ename": "torus",
+  "commit": "efc3b538861084cc13ff067a9258e55dc006b70d",
+  "sha256": "0zjidnc7nwbxs90spp373hx92vksd72vz4avmi4dbmhi89rdfhh0",
+  "fetcher": "github",
+  "repo": "chimay/torus",
+  "unstable": {
+   "version": [
+    20190325,
+    753
+   ],
+   "commit": "b309da8c2eaee573a2e2572f25a08ce5da9e9990",
+   "sha256": "0d6y2m4lh244542svzm856n014l7hjkffp5m0arwsvywqspq9vb9"
+  },
+  "stable": {
+   "version": [
+    2,
+    2
+   ],
+   "deps": [
+    "duo"
+   ],
+   "commit": "2fa2c92bf2c66d87ddcd519277e469f67c6615a9",
+   "sha256": "1i5n2f6jdr9p5mdq0g5j0kf19b3kirj00n36qc6nww3kzldwc4c1"
+  }
+ },
+ {
+  "ename": "total-lines",
+  "commit": "1b6455dd89167a854477a00284f64737905b54d8",
+  "sha256": "0zpli7gsb56fc3pzb3b2bs7dzr9glkixbzgl4p2kc249vz3jqajh",
+  "fetcher": "github",
+  "repo": "hinrik/total-lines",
+  "unstable": {
+   "version": [
+    20171227,
+    1239
+   ],
+   "commit": "473fa74a5416697ecd938866518bcad423f8fda6",
+   "sha256": "17jac25hwnklqzqpnrxjsq9s08c9rql9phcv8cq97cc36iwgw8gp"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "58a9fb0ffca63e3dfb3b27c7d91b4630e422903b",
+   "sha256": "0ajbqrkg3v0yn8mj7dsv12w9zzcwjkabd776fabxamhcj6zbvza3"
+  }
+ },
+ {
+  "ename": "totd",
+  "commit": "9dc1e001585e1743047108ace180dfd7664ab8f1",
+  "sha256": "1bp07xl9yh9x6bi6cn8wz11x90jhv1rhxaig540iydjn5b0ny9m0",
+  "fetcher": "gitlab",
+  "repo": "egh/emacs-totd",
+  "unstable": {
+   "version": [
+    20150519,
+    1440
+   ],
+   "deps": [
+    "cl-lib",
+    "s"
+   ],
+   "commit": "ca47b618ea8290776cdb5b0f1c2c335691f69660",
+   "sha256": "188cdgic25wrb4jdgdcj070a0pxsh3m0rd9d2r6i1s1n1nalrs6g"
+  }
+ },
+ {
+  "ename": "tox",
+  "commit": "08a7433e16f2a9a2c04168600a9c99bc21c68ddf",
+  "sha256": "1z81x8fs5q6r19hpqphsilk8wdwwnfr8w78x5x298x74s9mcsywl",
+  "fetcher": "github",
+  "repo": "chmouel/tox.el",
+  "unstable": {
+   "version": [
+    20160810,
+    1555
+   ],
+   "commit": "7655eb254038d5e34433e8a9d66b3ffc9c72e40c",
+   "sha256": "1212b7s00kw9hk5gc2jx88hqd825rvkz1ss7phnxkrz833l062ki"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    0
+   ],
+   "commit": "7655eb254038d5e34433e8a9d66b3ffc9c72e40c",
+   "sha256": "1212b7s00kw9hk5gc2jx88hqd825rvkz1ss7phnxkrz833l062ki"
+  }
+ },
+ {
+  "ename": "toxi-theme",
+  "commit": "2e57d7abe1e43101558b27b0995f54f74a620b33",
+  "sha256": "1dyr8mp5p6j4c949dbzi4fqy86ay84yr3822ab8qx25hck1kdrhj",
+  "fetcher": "github",
+  "repo": "postspectacular/toxi-theme",
+  "unstable": {
+   "version": [
+    20160424,
+    2126
+   ],
+   "commit": "90c8828b91025adf5adc96011a35d25682991b8a",
+   "sha256": "1pnsky541m8kzcv81w98jkv0hgajh04hxqlmgddc1y0wbvi849j0"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "commit": "9e572c6e149249b96f64722cf6f86c3aaf5f2ede",
+   "sha256": "0fn8ivq9i48w26c09963chc5v8gnvz0nxgqzzvkk4b7qki1rav2j"
+  }
+ },
+ {
+  "ename": "tql-mode",
+  "commit": "6a7c3dec5d970a4e819c0166a4b9846d74484b08",
+  "sha256": "0nrycix119vail6vk1kgqsli4l4cw8x49grc368n53w0xwngh0ns",
+  "fetcher": "github",
+  "repo": "tiros-dev/tql-mode",
+  "unstable": {
+   "version": [
+    20170724,
+    254
+   ],
+   "commit": "488add79eb3fc8ec02aedaa997fe1ed9e5c3e638",
+   "sha256": "09vkqr5n66w1q5f7m1vgiv0555v23wg6j46ri52lnnslsxpxhlyv"
+  }
+ },
+ {
+  "ename": "traad",
+  "commit": "2b3eb31c077fcaff94b74b757c1ce17650333943",
+  "sha256": "08gxh5c01xfbbj9g4992jah494rw3d3bbs8j79r3mpqxllkp2znf",
+  "fetcher": "github",
+  "repo": "abingham/emacs-traad",
+  "unstable": {
+   "version": [
+    20180730,
+    48
+   ],
+   "deps": [
+    "bind-map",
+    "dash",
+    "deferred",
+    "f",
+    "popup",
+    "request",
+    "request-deferred",
+    "virtualenvwrapper"
+   ],
+   "commit": "98e23363b7e8a590a2f55976123a8c3da75c87a5",
+   "sha256": "121p80vsa3xff1anwy876gvlpm0jdbfm5vaxszds73wrv6gih8m3"
+  },
+  "stable": {
+   "version": [
+    3,
+    1,
+    1
+   ],
+   "deps": [
+    "dash",
+    "deferred",
+    "popup",
+    "request",
+    "request-deferred",
+    "virtualenvwrapper"
+   ],
+   "commit": "1f05cb4e5e96a90d2fb2bbc93093084327c40cf2",
+   "sha256": "14qg8aczcdf51w618zdzx3d48y9n4skjrg72yhgcm9a9lrs5v8y1"
+  }
+ },
+ {
+  "ename": "tracking",
+  "commit": "a2b295656d53fddc76cacc86b239e5648e49e3a4",
+  "sha256": "096h5bl7jcwz5hpbm2139bf8a784hijfy40vzf42y1c9794al46z",
+  "fetcher": "github",
+  "repo": "jorgenschaefer/circe",
+  "unstable": {
+   "version": [
+    20171210,
+    2102
+   ],
+   "commit": "e5bf5f89741a9c43aa406491e94dd8d58c302fb4",
+   "sha256": "104l0b9n9ia7zrha20yaxp6c09wg1h5l5a8b988k6mhyj9a1w1aw"
+  },
+  "stable": {
+   "version": [
+    2,
+    11
+   ],
+   "commit": "6ccd4b494cbae9d28091217654f052eaea321007",
+   "sha256": "0cr9flk310yn2jgvj4hbqw9nj5wlfi0fazdkqafzidgz6iq150wd"
+  }
+ },
+ {
+  "ename": "tracwiki-mode",
+  "commit": "2e1e7315ee0e8d90df046e16948398f6f78aa3b2",
+  "sha256": "1k983f0lj42rxr5szpq9l9harykfn8jr13y3y6fav86zzd1fb8j0",
+  "fetcher": "github",
+  "repo": "merickson/tracwiki-mode",
+  "unstable": {
+   "version": [
+    20150119,
+    1621
+   ],
+   "deps": [
+    "xml-rpc"
+   ],
+   "commit": "6a620444d59b438f42383b48cd4c19c03105dba6",
+   "sha256": "1m25l1lyff4h0h4vjrcsziwbf8svqg2llvvgl8i2b4jbh7k7pk5f"
+  }
+ },
+ {
+  "ename": "tramp-auto-auth",
+  "commit": "0c8a8841cc7d7634f47610aeecc4a63b20f459f9",
+  "sha256": "033110y1kdkqm21pkzp9izp9ic7239km3xc8wifw4vs22js341jj",
+  "fetcher": "github",
+  "repo": "oitofelix/tramp-auto-auth",
+  "unstable": {
+   "version": [
+    20191027,
+    1419
+   ],
+   "deps": [
+    "tramp"
+   ],
+   "commit": "f15a12dfab651aff60f4a9d70f868030a12344ac",
+   "sha256": "09nkjgwppjfgv04q0gv468qihgx4y3p39lpwbd6vbh3wgbccas9k"
+  }
+ },
+ {
+  "ename": "tramp-hdfs",
+  "commit": "4c185553314a2a9fe18907fd9251077777b33538",
+  "sha256": "1l7s2z8yk3cbnffig9fds75jkjlkng76qglx5ankzva61dz1kf2b",
+  "fetcher": "github",
+  "repo": "raghavgautam/tramp-hdfs",
+  "unstable": {
+   "version": [
+    20170821,
+    1320
+   ],
+   "commit": "f8406f77bf83b66306ced693a5e4aaf606f46762",
+   "sha256": "15zr1fcmjk4mzjvmfbbkz5v9ryfgcjk0ag6rwxk8rp6wzwxcxvvl"
+  }
+ },
+ {
+  "ename": "tramp-term",
+  "commit": "5c84660c641f0bdf3cca8ad2a0f8f6e5d18b59c3",
+  "sha256": "1vbdwj8q66j6h5ijqzxhyaqf8wf9rbs03x8ppfijxl5qd2bhc1dy",
+  "fetcher": "github",
+  "repo": "randymorris/tramp-term.el",
+  "unstable": {
+   "version": [
+    20190628,
+    1207
+   ],
+   "commit": "fdc3d5a29ca9549db462cd66d8f5d97026a1200f",
+   "sha256": "1xznm3q2d4xffynqb1bkpcif8jr6mpkrir4hc7gmi4q987j2lpdr"
+  }
+ },
+ {
+  "ename": "transfer-sh",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "0xc6dkmayk935grmy8883l4cyv4zrq3fb77fj16knfj4yw8w6c9j",
+  "fetcher": "github",
+  "repo": "SRoskamp/transfer-sh.el",
+  "unstable": {
+   "version": [
+    20180603,
+    1431
+   ],
+   "deps": [
+    "async"
+   ],
+   "commit": "55da85f963d347255a2b46568954923679331798",
+   "sha256": "0yv4i4ps379kz1q9qmjh4q3pk5ik77xw86faxmwpjx4yzp1wsz9v"
+  }
+ },
+ {
+  "ename": "transient",
+  "commit": "ee7bfefdf4423d63706a6dcf128886ca6b514e6b",
+  "sha256": "04xkdspn475dlch5fcw21phhdhshxlbyznjbi0l7qk8snm130qpv",
+  "fetcher": "github",
+  "repo": "magit/transient",
+  "unstable": {
+   "version": [
+    20200508,
+    1911
+   ],
+   "commit": "d49f85a8c1172b9f21d2fd4a54d1f802b53948fc",
+   "sha256": "01rnd67mc9avm4d39vqr074shfmqjsilynivb3s32dqyk13fsz8r"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "a269614c69ad8b2703e6e5093d0017d6afad6cca",
+   "sha256": "0w50sh55c04gacx2pp19rvi0fwj9h19c9gzd8dpa82zjiidfxckr"
+  }
+ },
+ {
+  "ename": "transient-dwim",
+  "commit": "0ad7091aa6129c09e457c71274a42344acd6b823",
+  "sha256": "1q32if4i913vjbcpcdrfznjiih4c30ipnadn84zkr72wn5ndzlpq",
+  "fetcher": "github",
+  "repo": "conao3/transient-dwim.el",
+  "unstable": {
+   "version": [
+    20200508,
+    617
+   ],
+   "deps": [
+    "transient"
+   ],
+   "commit": "e075bda369bbd0df2ac5e5d5626664f4a0062676",
+   "sha256": "052pj4b4jgr9vk0nrap57kpy0fsplssc7b9w7lkdmpxrbdld7n6h"
+  }
+ },
+ {
+  "ename": "transmission",
+  "commit": "9ed7e414687c0bd82b140a1bd8044084d094d18f",
+  "sha256": "0w0hlr4y4xpcrpvclqqqasggkgrwnzrdib51mhkh3f3mqyiw8gs9",
+  "fetcher": "github",
+  "repo": "holomorph/transmission",
+  "unstable": {
+   "version": [
+    20200506,
+    2144
+   ],
+   "deps": [
+    "let-alist"
+   ],
+   "commit": "b2c35b6f4c503976581573a4512c50e8081f9038",
+   "sha256": "1b0d2xq22121f64hls28gb44m284g1b6xiw3mi7x6g1fil8b3wb2"
+  },
+  "stable": {
+   "version": [
+    0,
+    12,
+    1
+   ],
+   "deps": [
+    "let-alist"
+   ],
+   "commit": "03a36853f141387654b7cb9217c7417db096a083",
+   "sha256": "0kvg2gawsgy440x1fsl2c4pkxwp3zirq9rzixanklk0ryijhd3ry"
+  }
+ },
+ {
+  "ename": "transpose-frame",
+  "commit": "ae489be43b1aee93614e40f492ebdf0b98a3fbc1",
+  "sha256": "1ksdc4d9k05452hcq4xx0j5nfl9n01z8abbca6j7j66bdf3m4l1b",
+  "fetcher": "github",
+  "repo": "emacsorphanage/transpose-frame",
+  "unstable": {
+   "version": [
+    20200307,
+    2119
+   ],
+   "commit": "12e523d70ff78cc8868097b56120848befab5dbc",
+   "sha256": "01j4ci0c52r2c31hc9r4p7nsb6s8blmvg50g9n5v5h3afjl1c35v"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "12e523d70ff78cc8868097b56120848befab5dbc",
+   "sha256": "01j4ci0c52r2c31hc9r4p7nsb6s8blmvg50g9n5v5h3afjl1c35v"
+  }
+ },
+ {
+  "ename": "transpose-mark",
+  "commit": "e997b356b009b3d2ab467fe49b79d728a8cfe24b",
+  "sha256": "1q1icp1szm1bxz9ywwyrfbsm1wmx0h4cvzywrh9q0fj1fq387qvv",
+  "fetcher": "github",
+  "repo": "kwrooijen/transpose-mark",
+  "unstable": {
+   "version": [
+    20150405,
+    716
+   ],
+   "commit": "667327602004794de97214cf336ac61650ef75b7",
+   "sha256": "03wc50vn1kmrgnzzhs06pwpap2p2rx84wwzxw0hawsg1f1l35m2x"
+  }
+ },
+ {
+  "ename": "trashed",
+  "commit": "0a0609353c8ef01ca5da44b6239e1d4756da3a92",
+  "sha256": "0vpfga0kp2r9p0b91fm5y1nf15j8c3r4aqf4wsl12yqgy0v08s6f",
+  "fetcher": "github",
+  "repo": "shingo256/trashed",
+  "unstable": {
+   "version": [
+    20200508,
+    734
+   ],
+   "commit": "075749debcaf867bf151d83a59d7845dea71a4b9",
+   "sha256": "1r22x2m4mdkdick40myayzmhxby2v515bm5a8pxxcppnvd8259ci"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    1
+   ],
+   "commit": "075749debcaf867bf151d83a59d7845dea71a4b9",
+   "sha256": "1r22x2m4mdkdick40myayzmhxby2v515bm5a8pxxcppnvd8259ci"
+  }
+ },
+ {
+  "ename": "travis",
+  "commit": "c064a0dc7922cbe4cff2ae65665c4f10e6dbff27",
+  "sha256": "1km496cq1vni9gy2d3z4c9524q62750ywz745rjz4r7178ip9mix",
+  "fetcher": "github",
+  "repo": "nlamirault/emacs-travis",
+  "unstable": {
+   "version": [
+    20150825,
+    1138
+   ],
+   "deps": [
+    "dash",
+    "pkg-info",
+    "request",
+    "s"
+   ],
+   "commit": "754ef07c17fed17ab03664ad11e2b0b2ef5e78ed",
+   "sha256": "1ciwf40ghlm4w9g4ynbc3d1a93gf6f3imm3m8z9kqfa7cnlsypb6"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    0
+   ],
+   "deps": [
+    "dash",
+    "pkg-info",
+    "request",
+    "s"
+   ],
+   "commit": "c8769d3db10ed4604969049e3bd276afa0a0138e",
+   "sha256": "1jd7xsvs4m55fscp62a9lk59ip4sgifv4kazl55b7543nz1i31bz"
+  }
+ },
+ {
+  "ename": "tree-mode",
+  "commit": "84f836338818946a6bb31d35d6ae959571128ed5",
+  "sha256": "1b15xgh96j4qas1kh4ghczcn7hb1ri86wnjgn9wz2d6bw3c6077b",
+  "fetcher": "github",
+  "repo": "emacsorphanage/tree-mode",
+  "unstable": {
+   "version": [
+    20151104,
+    1331
+   ],
+   "commit": "b06078826d5875d74b0e7b7ac47b0d0917610534",
+   "sha256": "13bbdhdmqg4x9yghanhr8fsbsxbnypzxdxgicz31sjjm675kpnix"
+  }
+ },
+ {
+  "ename": "treefactor",
+  "commit": "e3e956cbbaed3af8beeb927a730cb553df1fac21",
+  "sha256": "1jfsiv2adj0p2b118qmfzxljz523q1xcjq9x60h1a4xymm3kqb0y",
+  "fetcher": "github",
+  "repo": "cyberthal/treefactor",
+  "unstable": {
+   "version": [
+    20200516,
+    1631
+   ],
+   "deps": [
+    "avy",
+    "dash",
+    "f",
+    "org"
+   ],
+   "commit": "75357757022a4399ab772ff0d92065bd114dabe9",
+   "sha256": "0ks7ilc01j1jli1p1lqmqwcr3bfzn5p6vhxybc9wn2sk2sqn2kv8"
+  },
+  "stable": {
+   "version": [
+    3,
+    2,
+    2
+   ],
+   "deps": [
+    "avy",
+    "dash",
+    "f",
+    "org"
+   ],
+   "commit": "75357757022a4399ab772ff0d92065bd114dabe9",
+   "sha256": "0ks7ilc01j1jli1p1lqmqwcr3bfzn5p6vhxybc9wn2sk2sqn2kv8"
+  }
+ },
+ {
+  "ename": "treemacs",
+  "commit": "8fec46a8717fb5b0eedfba39b4b6001cce1c7145",
+  "sha256": "1vmqqq830ffqyp0jj9am60b88whvabzimpg12gp6wk86h41qpbqq",
+  "fetcher": "github",
+  "repo": "Alexander-Miller/treemacs",
+  "unstable": {
+   "version": [
+    20200516,
+    1204
+   ],
+   "deps": [
+    "ace-window",
+    "cl-lib",
+    "dash",
+    "f",
+    "ht",
+    "hydra",
+    "pfuture",
+    "s"
+   ],
+   "commit": "1935108f683ac446e3d0add9467bc1adc4f744e7",
+   "sha256": "0b8r7wsjm3my1cgwv66lz53i4r6yklfpyhx1xq1cibixwxi1p1ac"
+  },
+  "stable": {
+   "version": [
+    2,
+    8
+   ],
+   "deps": [
+    "ace-window",
+    "cl-lib",
+    "dash",
+    "f",
+    "ht",
+    "hydra",
+    "pfuture",
+    "s"
+   ],
+   "commit": "16b0819c6f27f45fe0495a29eeff5f01bd765b04",
+   "sha256": "0m083g3pg0n4ymi1w0jx34awr7cqbm4r561adij9kklblxsz7sc2"
+  }
+ },
+ {
+  "ename": "treemacs-evil",
+  "commit": "37cca017cf529a0553ba73bcb824a945ec8b1137",
+  "sha256": "144klr1gqqzfqy7fx9lzngc2vljy6mnz7awk0z5f8vfclczkihw2",
+  "fetcher": "github",
+  "repo": "Alexander-Miller/treemacs",
+  "unstable": {
+   "version": [
+    20200302,
+    558
+   ],
+   "deps": [
+    "evil",
+    "treemacs"
+   ],
+   "commit": "1935108f683ac446e3d0add9467bc1adc4f744e7",
+   "sha256": "0b8r7wsjm3my1cgwv66lz53i4r6yklfpyhx1xq1cibixwxi1p1ac"
+  },
+  "stable": {
+   "version": [
+    2,
+    8
+   ],
+   "deps": [
+    "evil",
+    "treemacs"
+   ],
+   "commit": "16b0819c6f27f45fe0495a29eeff5f01bd765b04",
+   "sha256": "0m083g3pg0n4ymi1w0jx34awr7cqbm4r561adij9kklblxsz7sc2"
+  }
+ },
+ {
+  "ename": "treemacs-icons-dired",
+  "commit": "37cca017cf529a0553ba73bcb824a945ec8b1137",
+  "sha256": "075897b11aaj9h59gbcldz2wd5557h86pq28qkijbgay4i3piv9v",
+  "fetcher": "github",
+  "repo": "Alexander-Miller/treemacs",
+  "unstable": {
+   "version": [
+    20200510,
+    2001
+   ],
+   "deps": [
+    "cl-lib",
+    "treemacs"
+   ],
+   "commit": "1935108f683ac446e3d0add9467bc1adc4f744e7",
+   "sha256": "0b8r7wsjm3my1cgwv66lz53i4r6yklfpyhx1xq1cibixwxi1p1ac"
+  },
+  "stable": {
+   "version": [
+    2,
+    8
+   ],
+   "deps": [
+    "cl-lib",
+    "treemacs"
+   ],
+   "commit": "16b0819c6f27f45fe0495a29eeff5f01bd765b04",
+   "sha256": "0m083g3pg0n4ymi1w0jx34awr7cqbm4r561adij9kklblxsz7sc2"
+  }
+ },
+ {
+  "ename": "treemacs-magit",
+  "commit": "1719c6bfc346e63f58221ea2c6e625b98f4ea368",
+  "sha256": "10c32rf76w26hhg1pyjlwj94adpjz1kic4hzapbckvcyzcwz6fql",
+  "fetcher": "github",
+  "repo": "Alexander-Miller/treemacs",
+  "unstable": {
+   "version": [
+    20200421,
+    1426
+   ],
+   "deps": [
+    "magit",
+    "pfuture",
+    "treemacs"
+   ],
+   "commit": "1935108f683ac446e3d0add9467bc1adc4f744e7",
+   "sha256": "0b8r7wsjm3my1cgwv66lz53i4r6yklfpyhx1xq1cibixwxi1p1ac"
+  },
+  "stable": {
+   "version": [
+    2,
+    8
+   ],
+   "deps": [
+    "magit",
+    "pfuture",
+    "treemacs"
+   ],
+   "commit": "16b0819c6f27f45fe0495a29eeff5f01bd765b04",
+   "sha256": "0m083g3pg0n4ymi1w0jx34awr7cqbm4r561adij9kklblxsz7sc2"
+  }
+ },
+ {
+  "ename": "treemacs-persp",
+  "commit": "82679a4f04733556adb66bd31e2a56f2923b301c",
+  "sha256": "1r48rxhzx1qq9lfdp5plqgny8yh43f0qjwp0gr499g405ja2zyas",
+  "fetcher": "github",
+  "repo": "Alexander-Miller/treemacs",
+  "unstable": {
+   "version": [
+    20200421,
+    1426
+   ],
+   "deps": [
+    "dash",
+    "persp-mode",
+    "treemacs"
+   ],
+   "commit": "1935108f683ac446e3d0add9467bc1adc4f744e7",
+   "sha256": "0b8r7wsjm3my1cgwv66lz53i4r6yklfpyhx1xq1cibixwxi1p1ac"
+  },
+  "stable": {
+   "version": [
+    2,
+    8
+   ],
+   "deps": [
+    "dash",
+    "persp-mode",
+    "treemacs"
+   ],
+   "commit": "16b0819c6f27f45fe0495a29eeff5f01bd765b04",
+   "sha256": "0m083g3pg0n4ymi1w0jx34awr7cqbm4r561adij9kklblxsz7sc2"
+  }
+ },
+ {
+  "ename": "treemacs-projectile",
+  "commit": "37cca017cf529a0553ba73bcb824a945ec8b1137",
+  "sha256": "1lldvpasvgsd5xvnlafddqp47w7rdvf3vqfhr26rxn99kj5s9xzp",
+  "fetcher": "github",
+  "repo": "Alexander-Miller/treemacs",
+  "unstable": {
+   "version": [
+    20200114,
+    1715
+   ],
+   "deps": [
+    "projectile",
+    "treemacs"
+   ],
+   "commit": "1935108f683ac446e3d0add9467bc1adc4f744e7",
+   "sha256": "0b8r7wsjm3my1cgwv66lz53i4r6yklfpyhx1xq1cibixwxi1p1ac"
+  },
+  "stable": {
+   "version": [
+    2,
+    8
+   ],
+   "deps": [
+    "projectile",
+    "treemacs"
+   ],
+   "commit": "16b0819c6f27f45fe0495a29eeff5f01bd765b04",
+   "sha256": "0m083g3pg0n4ymi1w0jx34awr7cqbm4r561adij9kklblxsz7sc2"
+  }
+ },
+ {
+  "ename": "treepy",
+  "commit": "63c94a703841f8c11948200d86d98145bc62162c",
+  "sha256": "0jfah4vywi1b6c86h7vh8fspmklhs790qzkl51i9p7yckfggwp72",
+  "fetcher": "github",
+  "repo": "volrath/treepy.el",
+  "unstable": {
+   "version": [
+    20191108,
+    2217
+   ],
+   "commit": "306f7031d26e4ebfc9ff36614acdc6993f3e23c3",
+   "sha256": "09k95b846mzak62acyzrmqvc7kwkni14w8d74079kr7lnar9g6zq"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "commit": "b40e6b09eb9be45da67b8c9e4990a5a0d7a2a09d",
+   "sha256": "04zwm6gx9pxfvgfkizx6pvb1ql8pqxjyzqp8flz0432x0gq5nlxk"
+  }
+ },
+ {
+  "ename": "trident-mode",
+  "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a",
+  "sha256": "0l81hs7bp46jlk41b9fk1lkvlp17fqc5hcz8k8kkal7rh7ari1fd",
+  "fetcher": "github",
+  "repo": "johnmastro/trident-mode.el",
+  "unstable": {
+   "version": [
+    20190410,
+    2036
+   ],
+   "deps": [
+    "dash",
+    "skewer-mode",
+    "slime"
+   ],
+   "commit": "109a1bc10bd0c4b47679a6ca5c4cd27c7c8d4ccb",
+   "sha256": "0blbxjaddzhkvzlys46yrzszywmyjkmfhwks52v4laya76rgxm45"
+  }
+ },
+ {
+  "ename": "trinary",
+  "commit": "48fff02dde8a678e151f2765ea7c3a383912c68b",
+  "sha256": "1k2jpay1wx2m54fpja9mrhqyk15ikml8xf15irh8yrxb3hah8f8k",
+  "fetcher": "github",
+  "repo": "emacs-elsa/trinary-logic",
+  "unstable": {
+   "version": [
+    20180904,
+    2313
+   ],
+   "commit": "886232c6d7e92a8e9fe573eef46754ebe321f90d",
+   "sha256": "10h6p2dwl2k2p35pi3n8y85qh5y0zrr9nhfr4sviwzj1nbqdrvdr"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "dc10294af106ff3b110c372841eef0a8ec4c29c7",
+   "sha256": "0a1437hkcx2ba3jvvrn7f0x0gca36wagnhbq4ll2mlkmvdkac6is"
+  }
+ },
+ {
+  "ename": "trr",
+  "commit": "56fa3c0b65e4e300f01804df7779ba6f1cb18cec",
+  "sha256": "068vqsyx8riqzfrmjk8wr81f68r2y2b6ymc2vvl6vka9rprvsfwr",
+  "fetcher": "github",
+  "repo": "kawabata/emacs-trr",
+  "unstable": {
+   "version": [
+    20191019,
+    1403
+   ],
+   "commit": "f841173e11213ac6916b2d3394b28fb202543871",
+   "sha256": "1s1rh1kz0r8cnsbjjsd61lz7wzf8kzhvbqimhglryckzjsn9jfmf"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    0
+   ],
+   "commit": "7500ae0a05a3e26888949208afcd0185cc1b1404",
+   "sha256": "0x1knf2jqkd1sdswv1w902jnlppih2yw6z028268nizl0c9q92yn"
+  }
+ },
+ {
+  "ename": "truthy",
+  "commit": "f7a7e319dbe17e2b31353e7d7cab51d557d86e9d",
+  "sha256": "1a56zmqars9fd03bkqzwpvgblq5fvq19n4jw04c4hpga92sq8wqg",
+  "fetcher": "github",
+  "repo": "rolandwalker/truthy",
+  "unstable": {
+   "version": [
+    20140508,
+    2041
+   ],
+   "deps": [
+    "list-utils"
+   ],
+   "commit": "8ed8d07772aa8457554547eb17e264b5df2b4a69",
+   "sha256": "1mm6rrprsmx4hc622qmllm7c81yhwbqmdr0n6020krq92zmilmlm"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    8
+   ],
+   "deps": [
+    "list-utils"
+   ],
+   "commit": "276a7e6b13606d28e4f2e423bb1ea30904c5def3",
+   "sha256": "18na22fhwqz80qinmnpsvp6ghc9irva1scixi6s4q6plmgr4m397"
+  }
+ },
+ {
+  "ename": "try",
+  "commit": "13c0ed40ad02fa0893cbf4dd9617dccb624f064b",
+  "sha256": "0dv0i77agva215bf1gj1x1k7f7g3pvccyyd7vslapf9z8brccn7n",
+  "fetcher": "github",
+  "repo": "larstvei/Try",
+  "unstable": {
+   "version": [
+    20181204,
+    236
+   ],
+   "commit": "8831ded1784df43a2bd56c25ad3d0650cdb9df1d",
+   "sha256": "0y26ybdsljph49w2834wssxgdx8ij7b6v4gp8jpgnbx118gr4jsz"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "commit": "271b0a362cadf44d0694628b9e213f54516ef913",
+   "sha256": "1fvpi02c6awyrwg2yqjapvcv4132qvmvd9bkbwpjmndxpicsann3"
+  }
+ },
+ {
+  "ename": "ts",
+  "commit": "d8b0b0b20e2812a0ced3d38c07b466b3d200699d",
+  "sha256": "1pk2x9hjr57ph51w91zss46q8xrca34mgr6n5pbii5w8j1rgyd60",
+  "fetcher": "github",
+  "repo": "alphapapa/ts.el",
+  "unstable": {
+   "version": [
+    20191010,
+    210
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "df48734ef046547c1aa0de0f4c07d11964ef1f7f",
+   "sha256": "0hi0dfcwrr0vxp26v3f6radpmmwxbiz3px3br0cydfi6axikw9xl"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "540f6a5adab5d881cc5f50835c0a3fe70e74b992",
+   "sha256": "0hmzc1ppnkkr0lfq5fhzqr6icv6iqz824a6bnns7zr466hhqp3qb"
+  }
+ },
+ {
+  "ename": "ts-comint",
+  "commit": "4a1c08c22704ac689235b8d5cc36cc437ba7356a",
+  "sha256": "0cmh8ww6myiaz42867d0dqfi64lxrbna1lcwl6x6rmdgf15k6c1m",
+  "fetcher": "github",
+  "repo": "emacs-typescript/ts-comint",
+  "unstable": {
+   "version": [
+    20181219,
+    719
+   ],
+   "commit": "786b88fffc553e122868a1c4883f14136a040df6",
+   "sha256": "1103gb66db91rnqvs1adqzdsgjh14apb171zghd1dzswhjgiff8q"
+  }
+ },
+ {
+  "ename": "tss",
+  "commit": "d52e20f5ca38ed399d19f18f778b8601baf78460",
+  "sha256": "0d16x5r2xfy6mrwy0mqzpr9b3inqmyyxgawrxlfh83j1xb903dhm",
+  "fetcher": "github",
+  "repo": "aki2o/emacs-tss",
+  "unstable": {
+   "version": [
+    20150913,
+    1408
+   ],
+   "deps": [
+    "auto-complete",
+    "json-mode",
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "81ac6351a2ae258fd0ebf916dae9bd5a179fefd0",
+   "sha256": "1bk5v9dffs65qsay0dp336s2ly065nd0cg572zz058ikwxd44zd3"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    0
+   ],
+   "deps": [
+    "auto-complete",
+    "json-mode",
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "1f302deea3d74462c71a9c62031f48b753e8915f",
+   "sha256": "1ma3k9bbw427cj1n2gjajbqii482jhs2lgjggz9clpc21bn5wqfb"
+  }
+ },
+ {
+  "ename": "tt-mode",
+  "commit": "62959f554db7aa24b2565baded19766b01e61f62",
+  "sha256": "02dzyycn5znbibbz50b243bh1kcccp8xwknjqwljk00gpf196vzf",
+  "fetcher": "github",
+  "repo": "davorg/tt-mode",
+  "unstable": {
+   "version": [
+    20130804,
+    1110
+   ],
+   "commit": "85ed3832e7eef391f7879d9990d59c7a3493c15e",
+   "sha256": "1gvqxk67cf779szyg907815i4m9jzrpmn5cnsmnwd62k3r3z4nxm"
+  }
+ },
+ {
+  "ename": "ttl-mode",
+  "commit": "f91dc8c20b7b8a06cc2ee25b6f376aac3a6ad2c8",
+  "sha256": "07jryy2dws2q0v3184fzijx68gz65rv83csfwr5llm9ic6xmw5ky",
+  "error": "Not in archive",
+  "fetcher": "github",
+  "repo": "nxg/ttl-mode"
+ },
+ {
+  "ename": "tuareg",
+  "commit": "01fb6435a1dfeebdf4e7fa3f4f5928bc75526809",
+  "sha256": "0wx723dmjlpm86xdabl9n8p22zbbxpapyfn6ifz0b0pvhh49ip7q",
+  "fetcher": "github",
+  "repo": "ocaml/tuareg",
+  "unstable": {
+   "version": [
+    20191220,
+    2314
+   ],
+   "deps": [
+    "caml"
+   ],
+   "commit": "c12061eb80c1487a1963af7cdae268d709a70ca9",
+   "sha256": "0x85yy20caqb24n7qx3h8nw259p6593y5dx43jl5iapy2n9za1gy"
+  },
+  "stable": {
+   "version": [
+    2,
+    2,
+    0
+   ],
+   "deps": [
+    "caml"
+   ],
+   "commit": "5796f08757a6d172d628834a40ba6379f318edf5",
+   "sha256": "06zxnn85fk5087iq0zxc5l5n9fz8r0367wylmynbfhc9711vccy6"
+  }
+ },
+ {
+  "ename": "tumble",
+  "commit": "579a441d153c4c7d9f8172be94983a632d6fab8f",
+  "sha256": "1c9ybq0mb2a0pw15fmm13vfwcnr2h9fb1xsm5nrff1cg7913pgv9",
+  "fetcher": "github",
+  "repo": "febuiles/tumble",
+  "unstable": {
+   "version": [
+    20160112,
+    729
+   ],
+   "deps": [
+    "cl-lib",
+    "http-post-simple"
+   ],
+   "commit": "e8fd7643cccf2b6ea4170f0c5f1f87d007e7fa00",
+   "sha256": "1xdkgvr1pnlg3nrjmma4ra80ysr8xbslvczg7cq1x1mqw6gn9xq5"
+  },
+  "stable": {
+   "version": [
+    1,
+    5
+   ],
+   "commit": "a1db6dac5720b9f468a79e0efce04f77c0a458e3",
+   "sha256": "0ihjjw5wxz5ybl3600k937pszw3442cijs4gbqqip9vhd5y9m8gy"
+  }
+ },
+ {
+  "ename": "tumblesocks",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "005w7vfzi4qpm59pxhq9nhp8hlwh4m1i7zj6l4knizcwm5xrm4ab",
+  "fetcher": "github",
+  "repo": "gcr/tumblesocks",
+  "unstable": {
+   "version": [
+    20191014,
+    356
+   ],
+   "deps": [
+    "htmlize",
+    "markdown-mode",
+    "oauth"
+   ],
+   "commit": "0e4c3847e31a59d405b9927107a23dde9531d744",
+   "sha256": "1gns60yj1ylm87456gzwr0gy0kivp5bd290rg6d8xbc86jdcls19"
+  }
+ },
+ {
+  "ename": "tup-mode",
+  "commit": "bda3260dad1c766c5b6ae9124f966bf441e24f2f",
+  "sha256": "0pzpn1ljfcc2dl9fg7jc8lmjwz2baays4axjqk1qsbj0kqbc8j0l",
+  "fetcher": "github",
+  "repo": "ejmr/tup-mode",
+  "unstable": {
+   "version": [
+    20140410,
+    1614
+   ],
+   "commit": "bcc100c6485f1c81fdcd1215dfc6c41a81c215c8",
+   "sha256": "0y1b9zvwbw3vp41siyzj04bis939fgz3j27hc5ljjzy92kd39nzm"
+  },
+  "stable": {
+   "version": [
+    1,
+    3,
+    1
+   ],
+   "commit": "945af9c8e6c402e10cd3bf8e28a9591174023d6d",
+   "sha256": "0asd024n5v23wdsg1959sszq568wg3a1bp4jrk0cllfji1z0n78y"
+  }
+ },
+ {
+  "ename": "turing-machine",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "0q9a31m5wnz9j9l4i8czdl7z12nrcdjw72w8sqvf94ri2g5dbpkq",
+  "fetcher": "github",
+  "repo": "dieggsy/turing-machine",
+  "unstable": {
+   "version": [
+    20180222,
+    438
+   ],
+   "commit": "fa60b76a5bac1f54b7a1b3dc55aae7602c7e385b",
+   "sha256": "0k1r0zkcr44kiki8cvdqwx09xpvpz7nkbq9w6i4gqy5h78zy5k79"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "ad1dccc9c445f9e4465e1c67cbbfea9583153047",
+   "sha256": "0qaz4r5ahg2fxsfyxilb8c9956i5ra9vg80l82slm8vrnsinzll6"
+  }
+ },
+ {
+  "ename": "turkish",
+  "commit": "12cdbdf404fa859a48d1bb69f058321d7595d2a2",
+  "sha256": "0pdapxjbpj3lg3hxvwjn9v51jqaiz7a8053z2bmk4485vzs34532",
+  "fetcher": "github",
+  "repo": "emres/turkish-mode",
+  "unstable": {
+   "version": [
+    20170910,
+    1511
+   ],
+   "commit": "9831a316c176bb21a1b91226323ea4133163e00c",
+   "sha256": "0nrxi845gd24d5vymbmxz696jwld4rn6nw2dz1gzmdaks7bbv87m"
+  }
+ },
+ {
+  "ename": "turnip",
+  "commit": "73c341fec986ed965a46954b898f92a4725fdee6",
+  "sha256": "1vfqv71j47fn53klz3jl8r8hscywd01kkl4w96a308sac3lhbrps",
+  "fetcher": "github",
+  "repo": "kljohann/turnip.el",
+  "unstable": {
+   "version": [
+    20150309,
+    629
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "2fd32562fc6fc1cda6d91aa939cfb29f9b16e9de",
+   "sha256": "0khl4q22x6vdn87xdqqg5f535d4dqpnfbhk6qhlh187p1w7qaiq4"
+  }
+ },
+ {
+  "ename": "twig-mode",
+  "commit": "400c75bf336b8d610f0a2c1732cc78beb502e1f3",
+  "sha256": "1m3xjgmkqg8aj536wcg2f2hf4y6whscbsh7z7448hl4b5qjwii4n",
+  "fetcher": "github",
+  "repo": "moljac024/twig-mode",
+  "unstable": {
+   "version": [
+    20130220,
+    1850
+   ],
+   "commit": "2849f273a4855d3314a9c0cc84134f5b28ad5ea6",
+   "sha256": "0wvmih2y3hy7casxx2y1w8csmzfnfgbb5ivpggr94sc86p6bg8sa"
+  }
+ },
+ {
+  "ename": "twilight-anti-bright-theme",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1wfj570l5k0ygqi9dwjskc78rpnxw6080bkw1zd1a8kl3fa28n2k",
+  "fetcher": "github",
+  "repo": "jimeh/twilight-anti-bright-theme",
+  "unstable": {
+   "version": [
+    20160622,
+    848
+   ],
+   "commit": "523b95fcdbf4a6a6483af314ad05354a3d80f23f",
+   "sha256": "0g6qqfgbg507r8lgq99zj2b5n3r9m23hpx19m36c3i55mh94dl2h"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "commit": "16d4ff2606789b506f0d2f53d12f02d5b1b64f9b",
+   "sha256": "0glw5lns7hwp8jznnfm6dyjw454sv2n84gy07ma7s1q3yczhq5bc"
+  }
+ },
+ {
+  "ename": "twilight-bright-theme",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "039mg147cvb0pk59q3c1bpx7562bajgrs74xymylr89hvrxivxqh",
+  "fetcher": "github",
+  "repo": "jimeh/twilight-bright-theme.el",
+  "unstable": {
+   "version": [
+    20130605,
+    843
+   ],
+   "commit": "322157cb2f3bf7920ecd209dafc31bc1c7959f49",
+   "sha256": "1awqc4rvg8693myynb1d4y4dfdaxkd5blnixxs3mdv81l07zyn8c"
+  }
+ },
+ {
+  "ename": "twilight-theme",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0g9bbb6m7q8x4zcw5gfmg7ljsfdmjh0335sq53b0lva0h3ra6kzx",
+  "fetcher": "github",
+  "repo": "developernotes/twilight-theme",
+  "unstable": {
+   "version": [
+    20120412,
+    1303
+   ],
+   "commit": "77c4741cb3dcf16e53d06d6c2ffdc660c40afb5b",
+   "sha256": "0d7vd1h0rwwgrh7f9kmdgy2ni0p20da9c8ylwlg33nsb26345wfs"
+  }
+ },
+ {
+  "ename": "twittering-mode",
+  "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a",
+  "sha256": "0v9ijxw5jazh2hc0qab48y71za2l9ryff0mpkxhr3f79irlqy0a1",
+  "fetcher": "github",
+  "repo": "hayamiz/twittering-mode",
+  "unstable": {
+   "version": [
+    20181121,
+    1402
+   ],
+   "commit": "114891e8fdb4f06b1326a6cf795e49c205cf9e29",
+   "sha256": "1w1p5pg3ambixhc5l7490wf5qasw3xv9qg6f0xhfsnqk44fp70ia"
+  },
+  "stable": {
+   "version": [
+    3,
+    0,
+    0
+   ],
+   "commit": "27e7f3aab238bd0788fd3b471c645c3ceceb0f13",
+   "sha256": "193v98i84xybm3n0f30jin5q10i87vbcnbdhl4zqi7jij9p5v98z"
+  }
+ },
+ {
+  "ename": "typescript-mode",
+  "commit": "94455323364d5a6b00e2786d577134eb350826b4",
+  "sha256": "1abnik2dq0zfnp8pk8x6zy962qww78xadm87xyiwz17559g88d82",
+  "fetcher": "github",
+  "repo": "emacs-typescript/typescript.el",
+  "unstable": {
+   "version": [
+    20200430,
+    1232
+   ],
+   "commit": "0fc729787007b5111f3584034af0f3ef2389098f",
+   "sha256": "0h4k5gxjx55bg7dx8ixl87qdbxrmdzym6bvg2apasjs3kz9ggan5"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "commit": "7a5c74d88e3c5513cc4431a837003736f905a75e",
+   "sha256": "002f1xfhq43fjaqliwrgxspryfahpa82va5dw3p8kwil2xwvc6mh"
+  }
+ },
+ {
+  "ename": "typing",
+  "commit": "e6e75695594ce17b618ad8786c8a04e283f68b11",
+  "sha256": "0k2lplqzq3323nn7rybcs377sr87kbww8ci99rrka3yyb5bh1fa1",
+  "fetcher": "github",
+  "repo": "kensanata/typing",
+  "unstable": {
+   "version": [
+    20180830,
+    2203
+   ],
+   "commit": "a2ef25dde2d8eb91bd9c0c6164cb5208208647fa",
+   "sha256": "1dbh0srbf54lgd60ia79y9cfnq3kxlgw01qzdjs9mk3nfazzpgnv"
+  }
+ },
+ {
+  "ename": "typing-game",
+  "commit": "e6ced22932f0462c77d121a631c494c01a0a4eaa",
+  "sha256": "0k85j9bcqp0gbzdh44q5a9wlkv5mc0g0m42ziq1bzmp6993wkmy2",
+  "fetcher": "github",
+  "repo": "lujun9972/el-typing-game",
+  "unstable": {
+   "version": [
+    20160426,
+    1220
+   ],
+   "commit": "616435a5270274f4c7b698697674dbb2039049a4",
+   "sha256": "0dkrnn9fzqv793wvd3nc7dbslayj37q5na1w1g63g32z2s8aq09j"
+  }
+ },
+ {
+  "ename": "typit",
+  "commit": "d17d019155e19c156f123dcd702f18cfba488701",
+  "sha256": "05m7ymcq6fgbhh93ninrf3qi7csdnf2ahhf01mkm8gxxyaqq6m4n",
+  "fetcher": "github",
+  "repo": "mrkkrp/typit",
+  "unstable": {
+   "version": [
+    20200217,
+    2059
+   ],
+   "deps": [
+    "f",
+    "mmt"
+   ],
+   "commit": "231cb7df43253b84323520b8ed70f128d37003af",
+   "sha256": "1savrxs7xl92ifyxpxkkzv2didr7lb405h0dwz1bs1wldr5fb53f"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "deps": [
+    "f",
+    "mmt"
+   ],
+   "commit": "a4e3147dedac5535bdc8b06aca00f34f14f26e35",
+   "sha256": "0hbnwrhxj9wwjvxsk372ffgjqfkb3ljxhgi5h7wps2r15dxfvf3w"
+  }
+ },
+ {
+  "ename": "typo",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1p8is1n525lmzq588hj6vazmhl9wi6rairnfx1g1p6g6ijdycd4h",
+  "fetcher": "github",
+  "repo": "jorgenschaefer/typoel",
+  "unstable": {
+   "version": [
+    20200212,
+    919
+   ],
+   "commit": "505b4b1ead337b773863ea54066f867d07735f9e",
+   "sha256": "0n8xh6bp757fjqa68slphw04kb4g0489g66r6f4n4v8bpbbi3bbl"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "e72171e4eb0b9ec80b9dabc3198d137d9fb4f972",
+   "sha256": "1jhd4grch5iz12gyxwfbsgh4dmz5hj4bg4gnvphccg8dsnni05k2"
+  }
+ },
+ {
+  "ename": "typoscript-mode",
+  "commit": "701de09cb97cbfa49a3a81aaeb9577817566efa2",
+  "sha256": "18i2wwbn8vj5dbgxp2ds29n12v8ldvxjd1zb6h1g9lfh8iyrnjmx",
+  "fetcher": "github",
+  "repo": "ksjogo/typoscript-mode",
+  "unstable": {
+   "version": [
+    20170126,
+    912
+   ],
+   "deps": [
+    "use-package"
+   ],
+   "commit": "44e7567e921573c4f33c537b827f71fb1f565c32",
+   "sha256": "0i7l9s3lhxnld32mqyrvasiv1hilhwnp2fwvpdv2cx9r902q6kc8"
+  }
+ },
+ {
+  "ename": "ubuntu-theme",
+  "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a",
+  "sha256": "160z59aaxb2v6c24nki6bn7pjm9r4jl1mgxs4h4sivzxkaw811s2",
+  "fetcher": "github",
+  "repo": "rocher/ubuntu-theme",
+  "unstable": {
+   "version": [
+    20150805,
+    1506
+   ],
+   "commit": "88b0eefc75d4cbcde103057e1c5968d4c3052f69",
+   "sha256": "1v8d1pc0vjc7wz0prr5w5vp2qb19f3gcyl6jx5130plajbvv23rc"
+  },
+  "stable": {
+   "version": [
+    4,
+    2
+   ],
+   "commit": "41f09ca6c203da93bdadb2077556efd48e3b5d5a",
+   "sha256": "0k41hwb6jgv3hngfrphlyhmfhvy4k05mvn0brm64xk7lj56y8q2c"
+  }
+ },
+ {
+  "ename": "ucs-utils",
+  "commit": "c9db386ab3910940addae6e925b2ac17e64e0f87",
+  "sha256": "111fwg2cqqzpa79rcqxidppb12c8g12zszppph2ydfvkgkryb6z2",
+  "fetcher": "github",
+  "repo": "rolandwalker/ucs-utils",
+  "unstable": {
+   "version": [
+    20150826,
+    1414
+   ],
+   "deps": [
+    "list-utils",
+    "pcache",
+    "persistent-soft"
+   ],
+   "commit": "cbfd42f822bf5717934fa2d92060e6e24a813433",
+   "sha256": "0qw9vwl1p0pjw1xmshxar1a8kn6gmin5rdvvnnly8b5z9hpkjf3m"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    4
+   ],
+   "deps": [
+    "list-utils",
+    "pcache",
+    "persistent-soft"
+   ],
+   "commit": "cbfd42f822bf5717934fa2d92060e6e24a813433",
+   "sha256": "0qw9vwl1p0pjw1xmshxar1a8kn6gmin5rdvvnnly8b5z9hpkjf3m"
+  }
+ },
+ {
+  "ename": "uimage",
+  "commit": "346cb25abdfdd539d121a9f34bce75b2fc5a16be",
+  "sha256": "0i6qpk6v4pmpk3zswygdy0dd7rxy8kl7qn8a1xanpi4aqg7wlbmd",
+  "fetcher": "github",
+  "repo": "lujun9972/uimage",
+  "unstable": {
+   "version": [
+    20160901,
+    1221
+   ],
+   "commit": "9893d09160ef7e8c0ecdcd74fca99ffeb5f9d70d",
+   "sha256": "1ri50nab778kpq49m54ra75z8dphagp9sz92is0636j4qy3sbih1"
+  }
+ },
+ {
+  "ename": "ujelly-theme",
+  "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a",
+  "sha256": "0b7zgmpsdn5p3jx4kif7phxz8pb85snmmfr3yz98xf6p7h6w60gw",
+  "fetcher": "github",
+  "repo": "marktran/color-theme-ujelly",
+  "unstable": {
+   "version": [
+    20180214,
+    1624
+   ],
+   "commit": "bf724ce7806a738d2043544061e5f9bbfc56e674",
+   "sha256": "0pz26q5qfq4wiqcpfkq26f19q5gyiv8q71sq4k77hkss5a5b5fqg"
+  }
+ },
+ {
+  "ename": "ukrainian-holidays",
+  "commit": "8a8b5ec722600bcd5bf5fcc2b20262597a9e8c40",
+  "sha256": "0kbfj2l1rcv74c88nabkwkcl7k9pkim835l24q61zv3i6wf9sykf",
+  "fetcher": "github",
+  "repo": "abo-abo/ukrainian-holidays",
+  "unstable": {
+   "version": [
+    20130720,
+    1349
+   ],
+   "commit": "e52b0c92843e9f4d0415a7ba3b8559785497d23d",
+   "sha256": "033v4ck979lhkpwblci5clacfc1xnkq03p5d1m566wff8dp5flwz"
+  }
+ },
+ {
+  "ename": "uml-mode",
+  "commit": "d2dbf909ca733aef6a3da6c48165aa3d2e9dc186",
+  "sha256": "0arkq5cymlvnga5fgzjfy5a6i6zpr0g6m66ycmxa04h6qkd73m9i",
+  "fetcher": "github",
+  "repo": "ianxm/emacs-uml",
+  "unstable": {
+   "version": [
+    20200129,
+    1147
+   ],
+   "deps": [
+    "seq"
+   ],
+   "commit": "4c37ac1c4424b2313cd8f16ba48a98a4cc214200",
+   "sha256": "145i4srnfvd1vyibri2a1l6p9mbjvkkwlrpi41134pbarqffcnka"
+  }
+ },
+ {
+  "ename": "uncrustify-mode",
+  "commit": "5327aa1a1143c2257e9454663ff140f2371d07e3",
+  "sha256": "0amdxdfc8i99zjrw4iqmxzb47h0airs60fwmc32bc8b0ds66c3kd",
+  "fetcher": "github",
+  "repo": "koko1000ban/emacs-uncrustify-mode",
+  "unstable": {
+   "version": [
+    20130707,
+    1359
+   ],
+   "commit": "73893d000361e95784911e5ec268ad0ab2a1473c",
+   "sha256": "0366h4jfi0c7yda9wcrz4zxgf2qqdd08b8z2dr8c1rkvkdd67iam"
+  }
+ },
+ {
+  "ename": "undercover",
+  "commit": "d58ad9eb863494f609114e3c6af8c14c891b83a5",
+  "sha256": "1s30c3i6y4r3mgrrs3lda3rrwmy9ff11ihdmshyziv9v5879sdjf",
+  "fetcher": "github",
+  "repo": "sviridov/undercover.el",
+  "unstable": {
+   "version": [
+    20191122,
+    2126
+   ],
+   "deps": [
+    "dash",
+    "shut-up"
+   ],
+   "commit": "9f4fbd04cd25c61397a7058bf2bad33c7b669aa4",
+   "sha256": "13cn2cxspaqa9filclk66963by7khaci4lyrxgmjpdz04rijkh1q"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    1
+   ],
+   "deps": [
+    "dash",
+    "shut-up"
+   ],
+   "commit": "86f856c799aacfd48d2eb42d1a6afda0e6e49845",
+   "sha256": "080bmfwyfi8663y8x594770hqz7mff7zvj2v03qdfwbhdr9w9y29"
+  }
+ },
+ {
+  "ename": "underline-with-char",
+  "commit": "811872acb9bc1ca588315ad74d6ad39f0dddfc8f",
+  "sha256": "1vz2b8wbgp3slczdgshxhm9li1jl8h2lhyr4vq61rh870h5lziy0",
+  "fetcher": "gitlab",
+  "repo": "marcowahl/underline-with-char",
+  "unstable": {
+   "version": [
+    20191128,
+    2309
+   ],
+   "commit": "36577e72aa4fbfa7f1abad01842359209f543751",
+   "sha256": "14ybav1f82m2gsxkciwlc0pm01ihqqaqq6arnjqvgxdnw0z6qniq"
+  },
+  "stable": {
+   "version": [
+    3,
+    0,
+    0
+   ],
+   "commit": "c2f4870aff70efe70a8d1b089e56d3a2d6d048b9",
+   "sha256": "0i6jfr4l7mr8gpavmfblr5d41ck8aqzaf4iv1qk5fyzsb6yi0nla"
+  }
+ },
+ {
+  "ename": "underwater-theme",
+  "commit": "e7dccc77d082181629b8f0c45404ac5d8bd97590",
+  "sha256": "0ab2bcqfdi9ml3z9d511pbfwcbp8hkkd36xxp61k36gkyi3acvlr",
+  "fetcher": "github",
+  "repo": "jmdeldin/underwater-theme.el",
+  "unstable": {
+   "version": [
+    20131118,
+    2
+   ],
+   "commit": "4eb9ef014f580adc135d91d1cd68d37a310640b6",
+   "sha256": "1ypxpv5vw2ls757iwrq3zld6k0s29q3kg3spcsl5ks4aqpnkxpva"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "commit": "1fbd4ecd4538256c6c46f9638f883072c73ac927",
+   "sha256": "1g1ldyz42q3i2xlgvhd4s93cvkh0fm8m3l344zjcw8rvqaisyphj"
+  }
+ },
+ {
+  "ename": "undo-fu",
+  "commit": "0ca16994315f7d5dee9fff76db036e084162dc52",
+  "sha256": "1b0616zlblsd5405sfh02lxjyq6gl3s9m8vsxbqi6fryr4y750s9",
+  "fetcher": "gitlab",
+  "repo": "ideasman42/emacs-undo-fu",
+  "unstable": {
+   "version": [
+    20200512,
+    19
+   ],
+   "commit": "2b1e53285a55ce50ca6fd60b050f2171e235d8f9",
+   "sha256": "0x7i7aj9fh8j0944xbym3hijr33mc0kfadl7v657k0d8nx00x3zh"
+  }
+ },
+ {
+  "ename": "undo-fu-session",
+  "commit": "f39d9dc5e57554b42eca54ad5399a53947c2c25f",
+  "sha256": "0k9qxs3igzf7zcg1vd4v9npfiah512w9j2scnm333brmx4jfgvb7",
+  "fetcher": "gitlab",
+  "repo": "ideasman42/emacs-undo-fu-session",
+  "unstable": {
+   "version": [
+    20200510,
+    434
+   ],
+   "commit": "0400f15f2a0cfcedb69c06c3ff62f3f8814b62fb",
+   "sha256": "0f3f4svgsl5338bbglxscvk6mrscjbpcxqc2f84w2np7iyap4ls9"
+  }
+ },
+ {
+  "ename": "undo-propose",
+  "commit": "308eec15ebfd301b34f0d9f019250c9089c4d6e2",
+  "sha256": "0r0xswj9n24ghw44l1m1izapjqrfvcw8qn3qp61s2ly0i7la185j",
+  "fetcher": "github",
+  "repo": "jackkamm/undo-propose-el",
+  "unstable": {
+   "version": [
+    20200204,
+    1612
+   ],
+   "commit": "20409358ad321fb937152cf93a50a4a775e405d6",
+   "sha256": "0mc6qldsjh8671kayl6wxmmcb8q0wjcg09qr7ppmsmwzsd9ydn0n"
+  }
+ },
+ {
+  "ename": "undohist",
+  "commit": "7856a62fb86415c88aa72b574895328c93c10a09",
+  "sha256": "0nsf4y5zbyhw965rdshky03n999pz71f4sy1nrp0y99ld1z2mk49",
+  "fetcher": "github",
+  "repo": "emacsorphanage/undohist",
+  "unstable": {
+   "version": [
+    20200120,
+    1328
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "6c905772e6aa9969fd9ca500d2fe93e114130fe6",
+   "sha256": "0hmx2b20nrxg2lb8vplgrzdh8chgxwlbmjvbq5scddggd302sd56"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "6c905772e6aa9969fd9ca500d2fe93e114130fe6",
+   "sha256": "0hmx2b20nrxg2lb8vplgrzdh8chgxwlbmjvbq5scddggd302sd56"
+  }
+ },
+ {
+  "ename": "unfill",
+  "commit": "2ade389a20419b3e29a613409ac73a16b7c5bddb",
+  "sha256": "0b21dk45vbz4vqdbdx0n6wx30rm38w1jjqbsxfj7b96p3i5shwqv",
+  "fetcher": "github",
+  "repo": "purcell/unfill",
+  "unstable": {
+   "version": [
+    20200304,
+    2218
+   ],
+   "commit": "02c36a04364bcb586477ab79d2b5e0d4e6ae6d47",
+   "sha256": "0pp9ywxkvvfay2pblbqcknf2c3q5izig552r5zksmxbac1rlsvcm"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "88186dce0de69e8f4aeaf2bfdc77d62210f19cd8",
+   "sha256": "0wyradin5igp25nsd3n22i2ppxhmy49ac1iq1w2715v8pfmiydnc"
+  }
+ },
+ {
+  "ename": "unicode-emoticons",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0sp4sb2yw9msyqxgp4q5z9pzfvqwhizd1sx8w63g1vis6n2h254r",
+  "fetcher": "github",
+  "repo": "hagleitn/unicode-emoticons",
+  "unstable": {
+   "version": [
+    20150204,
+    1108
+   ],
+   "commit": "fb18631f342b0243cf77cf59ed2067c47aae5233",
+   "sha256": "015gjf8chd6h9azhyarmskk41cm0cmg981jif7q81hakl9av6rhh"
+  }
+ },
+ {
+  "ename": "unicode-enbox",
+  "commit": "c9db386ab3910940addae6e925b2ac17e64e0f87",
+  "sha256": "1phb2qq3pg6z6bl96kl9yfq4jxhgardjpaa4lhgqbxymmqdm7gzv",
+  "fetcher": "github",
+  "repo": "rolandwalker/unicode-enbox",
+  "unstable": {
+   "version": [
+    20140508,
+    2041
+   ],
+   "deps": [
+    "list-utils",
+    "pcache",
+    "persistent-soft",
+    "string-utils",
+    "ucs-utils"
+   ],
+   "commit": "77074fac1994a4236f111d6a1d0cf79ea3fca151",
+   "sha256": "0936dqxyp72if9wvn2dcci670yp1gqrmpnll9xq00skp85yq9zs5"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    4
+   ],
+   "deps": [
+    "pcache",
+    "persistent-soft",
+    "string-utils",
+    "ucs-utils"
+   ],
+   "commit": "ff313f6778bb96481c0ee3291b07a7db46f21ff5",
+   "sha256": "0n06dvf6r7qblz8vz38qc37xrn29wa1c0jyzis1qw9zzf6hmmzj7"
+  }
+ },
+ {
+  "ename": "unicode-escape",
+  "commit": "b2ae00434b80357dc62cd0177dbd714b25fb3ac7",
+  "sha256": "0gcwkv7qbdnvak10jfzj9irb7nkfqsfxv2n5fi8vvrk90j1a2i2k",
+  "fetcher": "github",
+  "repo": "kosh04/unicode-escape.el",
+  "unstable": {
+   "version": [
+    20160614,
+    1234
+   ],
+   "deps": [
+    "dash",
+    "names"
+   ],
+   "commit": "fc69ec780d9e54c364a9252bd0cf1d2507f3fab7",
+   "sha256": "1bqknk6y7r0dqhmwhq3ac56cqf0albp18h222klnijv4bazjfcjw"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "dash",
+    "names"
+   ],
+   "commit": "b9cee7af45be62119b97033dc639bd1b5ed858f3",
+   "sha256": "09dgxb1z9kdbs8wri9sl5daygp1bgqcng40vyfv5y0ic50w08ksf"
+  }
+ },
+ {
+  "ename": "unicode-fonts",
+  "commit": "83459421dd2eb3d60ec668c3d5bb38d99ee64aff",
+  "sha256": "0plipwb30qqay8691qzqdyg6smpbs9dsxxi49psb8sq0xnxl84q3",
+  "fetcher": "github",
+  "repo": "rolandwalker/unicode-fonts",
+  "unstable": {
+   "version": [
+    20181001,
+    1509
+   ],
+   "deps": [
+    "font-utils",
+    "list-utils",
+    "pcache",
+    "persistent-soft",
+    "ucs-utils"
+   ],
+   "commit": "7b88ae84e589f6c8b9386b2fb5a02ff4ccb91169",
+   "sha256": "07wzcfj92jiadgd6nj5rmxky2aiaxs89j7zywp877xdp4vv0v512"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    10
+   ],
+   "deps": [
+    "font-utils",
+    "list-utils",
+    "pcache",
+    "persistent-soft",
+    "ucs-utils"
+   ],
+   "commit": "7b88ae84e589f6c8b9386b2fb5a02ff4ccb91169",
+   "sha256": "07wzcfj92jiadgd6nj5rmxky2aiaxs89j7zywp877xdp4vv0v512"
+  }
+ },
+ {
+  "ename": "unicode-input",
+  "commit": "5b7972602399f9df9139cff177e38653bb0f43ed",
+  "sha256": "17sf3xnl8yyx4ln4mrjlrvfinb8dvabh81l3qyr9pkn5skpgqgj8",
+  "fetcher": "bitbucket",
+  "repo": "m00nlight/unicode-input",
+  "unstable": {
+   "version": [
+    20141219,
+    720
+   ],
+   "commit": "e76ccb549e6a2a66c373da927eb65d69353e07db",
+   "sha256": "0kzcg1wxi1z424jdn7pibk9zyfyi85kligav08sl1c2hdldzya4l"
+  }
+ },
+ {
+  "ename": "unicode-math-input",
+  "commit": "e0d39bc129500e55b99c11b3d27e042619777414",
+  "sha256": "1hra3vf6nzh99piagbxsmp0sizvki2jl7qkfmlwd5nwmicw0ykrq",
+  "fetcher": "github",
+  "repo": "astoff/unicode-math-input.el",
+  "unstable": {
+   "version": [
+    20190813,
+    1436
+   ],
+   "commit": "ba45edbfb8fa453e29c4c6c73af60f06637951d6",
+   "sha256": "1sil8lnvpdwk0g30mbqymp6ib325q28a8zn3n9y6j39ngphpkffl"
+  }
+ },
+ {
+  "ename": "unicode-progress-reporter",
+  "commit": "83459421dd2eb3d60ec668c3d5bb38d99ee64aff",
+  "sha256": "03z7p27470fqy3gd356l9cpp44a35sfrxz94dxmx388rzlygk7y7",
+  "fetcher": "github",
+  "repo": "rolandwalker/unicode-progress-reporter",
+  "unstable": {
+   "version": [
+    20140508,
+    2041
+   ],
+   "deps": [
+    "list-utils",
+    "pcache",
+    "persistent-soft",
+    "ucs-utils"
+   ],
+   "commit": "5e66724fd7d15743213b082474d798117b194494",
+   "sha256": "16jgm70ldsngxldiagjkw3ragypalpiidnf82g5hss9ciybkd3j4"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    4
+   ],
+   "deps": [
+    "pcache",
+    "persistent-soft",
+    "ucs-utils"
+   ],
+   "commit": "f4705332412b12fc72ca868b77c78465561bda75",
+   "sha256": "0qy1hla7vf674ynqdzsaw2cnk92nhpcimww5q94rc0a95pzw64wd"
+  }
+ },
+ {
+  "ename": "unicode-troll-stopper",
+  "commit": "b463925a98b7dde78d85693c7681fd2346d90895",
+  "sha256": "0a10lq0xsfyp052iw4xjbhsdkbyg25x2gk68gys4k7p6l92la0k5",
+  "fetcher": "github",
+  "repo": "camsaul/emacs-unicode-troll-stopper",
+  "unstable": {
+   "version": [
+    20190209,
+    411
+   ],
+   "commit": "5e8be35a7bf6382384a701663f7438ee27e4b67c",
+   "sha256": "0xjh017kjhj93j72r5hdpiabv76szlmpivlfyhg9vzysdmix45qv"
+  }
+ },
+ {
+  "ename": "unicode-whitespace",
+  "commit": "f9892a826f3ac335d12bd1a07202334e28a44f40",
+  "sha256": "1b3jgha8va42b89pdp41sab2w9wllp7dicqg4lxl67bg6wn147wy",
+  "fetcher": "github",
+  "repo": "rolandwalker/unicode-whitespace",
+  "unstable": {
+   "version": [
+    20140508,
+    2041
+   ],
+   "deps": [
+    "list-utils",
+    "pcache",
+    "persistent-soft",
+    "ucs-utils"
+   ],
+   "commit": "a18c6b38d78b94f2eb1dcc4cb4fa91b6a17efabe",
+   "sha256": "1ayb15nd5vqr0xaghrnp55kqw7bblrjipmfrag6bqpn7jk9bvbdz"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    4
+   ],
+   "deps": [
+    "pcache",
+    "persistent-soft",
+    "ucs-utils"
+   ],
+   "commit": "6d29f25d46b3344c74ce289fc80b3d4fc17ed6db",
+   "sha256": "0q7cbl89yg3fjxaxsqsksxhw7ibdslbb004z5y1m579n7zgcrljy"
+  }
+ },
+ {
+  "ename": "unidecode",
+  "commit": "f9ba8e425e37e80a2236832c3f12568546d4c7c9",
+  "sha256": "0vhghnyj8a5mcqq5rzajrm1izzfry77pd1wxhmra5yp9ribw2sv5",
+  "fetcher": "github",
+  "repo": "sindikat/unidecode",
+  "unstable": {
+   "version": [
+    20180312,
+    1926
+   ],
+   "commit": "5502ada9287b4012eabb879f12f5b0a9df52c5b7",
+   "sha256": "03x3nakbhmakwm977mwrf8jifvjnfwzpjv6wrwpizbqjnkgfchmn"
+  }
+ },
+ {
+  "ename": "unify-opening",
+  "commit": "0a2faab13744262ef4d12750f70b300b3afd2835",
+  "sha256": "1gpmklbdbmv8va8d3yr94r1ydkcyvdzcgxv56rp0bxwbcgmk0as8",
+  "fetcher": "github",
+  "repo": "DamienCassou/unify-opening",
+  "unstable": {
+   "version": [
+    20171122,
+    2012
+   ],
+   "commit": "502469ddba6d8d52159f53976265f7d956b6b17c",
+   "sha256": "0mni9vnbs50wvgnwfjwgzlwfff38h3wbrpr20nv84dmfh8ac0v61"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    0
+   ],
+   "commit": "502469ddba6d8d52159f53976265f7d956b6b17c",
+   "sha256": "0mni9vnbs50wvgnwfjwgzlwfff38h3wbrpr20nv84dmfh8ac0v61"
+  }
+ },
+ {
+  "ename": "unipoint",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "0fm7anwcmga9adyfwlri7x014rpvfl1r6nccyi6lrpx126wy008s",
+  "fetcher": "github",
+  "repo": "apg/unipoint",
+  "unstable": {
+   "version": [
+    20140113,
+    2224
+   ],
+   "commit": "5da04aebac35a5c9e1d8704f2231808d42f4b36a",
+   "sha256": "1wl9rzys1zr2c41h5i57y6hxsavix1b26f453l2izmb6r0b1dvh0"
+  }
+ },
+ {
+  "ename": "unison",
+  "commit": "ee7ee1a68486f822c1627fb0bf066c4ae8bc0776",
+  "sha256": "03v10r6d4r6z66s9q7mg1iyxh53f3l6q7dij7pfbf32migqjgpir",
+  "fetcher": "github",
+  "repo": "unhammer/unison.el",
+  "unstable": {
+   "version": [
+    20160704,
+    740
+   ],
+   "commit": "a78a04c0d1398d00f75a1bd4799622a65bcb0f28",
+   "sha256": "1jn23wlhpka5pv0caipxi8bg3cc6wj1fg09abibhydy4p3mb3bi5"
+  }
+ },
+ {
+  "ename": "unison-mode",
+  "commit": "bd5b5c16e504ee8e511bbc65acbc0ff65f99eaf4",
+  "sha256": "03kyr1h5pm51vn4bykj13rm4ybln266rpnxh65y2ygw8f8md88gl",
+  "fetcher": "github",
+  "repo": "impaktor/unison-mode",
+  "unstable": {
+   "version": [
+    20160513,
+    1501
+   ],
+   "commit": "0bd6a65c0d12f87fcf7bdff15fe54444959b93bf",
+   "sha256": "1snbvhvx2csw1f314dbdwny8yvfq834plpkzx0vl4k3wddmr3a66"
+  }
+ },
+ {
+  "ename": "universal-emotions-emoticons",
+  "commit": "57f913112c98db2248cf69e44deb69fd09cee042",
+  "sha256": "1aj3k3yrvasn3zmfwz5si046hlyhnjdmxh7i8li6rc0v0qwl7p86",
+  "fetcher": "github",
+  "repo": "grettke/universal-emotions-emoticons",
+  "unstable": {
+   "version": [
+    20180729,
+    1941
+   ],
+   "commit": "9cedd09ee65cb9fa71f27b0ab46a8353bdc00902",
+   "sha256": "17blqfnf384l2hd2igrw5p0zblw6bxz69vvzli22nr84kpkh5jx4"
+  }
+ },
+ {
+  "ename": "unkillable-scratch",
+  "commit": "822ac5610f333e41b676a29ef45a6f8bfea3162e",
+  "sha256": "0ghbpa9pf7k6vd2mjxkpqg2qfl4sd40ir6mrk1rxr1rv8s0afkf7",
+  "fetcher": "github",
+  "repo": "EricCrosson/unkillable-scratch",
+  "unstable": {
+   "version": [
+    20190309,
+    17
+   ],
+   "commit": "b24c2a760529833f230c14cb02ff6e7ec92288ab",
+   "sha256": "13wjbcxr3km4s96yhpavgs5acs5pvqv3ih1p84diqb3x3i6wd4pa"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "dac9dbed946a26829e6227ac15c0fa1d07ccd05f",
+   "sha256": "0fgipv93x47cvyww07cqx8xa95jz36y6fy5rmaq40jnnmdkgq862"
+  }
+ },
+ {
+  "ename": "unobtrusive-magit-theme",
+  "commit": "6dd57561738c2dc3ed6dc03f57d2487ce949f035",
+  "sha256": "05djixlq49dn1m64xs8b6w4kg650wrr8rs2pb72p1kfvp2a53g7w",
+  "fetcher": "github",
+  "repo": "tee3/unobtrusive-magit-theme",
+  "unstable": {
+   "version": [
+    20200411,
+    1349
+   ],
+   "commit": "aede357009655d19d4468320b2b61b0f26a47593",
+   "sha256": "1af8c7q3vxj23l2ah5waj9hn5pfp66834b4akm76jc5wqf0sr9j1"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "commit": "aede357009655d19d4468320b2b61b0f26a47593",
+   "sha256": "1af8c7q3vxj23l2ah5waj9hn5pfp66834b4akm76jc5wqf0sr9j1"
+  }
+ },
+ {
+  "ename": "untitled-new-buffer",
+  "commit": "de62e48115e1e5f9506e6d47a3b23c0420c1205b",
+  "sha256": "1hpv7k7jhpif9csdrd2gpz71s3fp4svsvrd1nh8hbx7avjl66pjf",
+  "fetcher": "github",
+  "repo": "zonuexe/untitled-new-buffer.el",
+  "unstable": {
+   "version": [
+    20161212,
+    1508
+   ],
+   "deps": [
+    "magic-filetype"
+   ],
+   "commit": "4eabc6937b0e83062ffce9de0d42110224063a6c",
+   "sha256": "139gysva6hpsk006bcbm1689pzaj18smxs2ar5pv0yvkh60wjvlr"
+  }
+ },
+ {
+  "ename": "upbo",
+  "commit": "e5232078b065dcca04388ccc76aa01a6159395d5",
+  "sha256": "15rqz9z49363anrhli08vk155wp21hq3j7xsvd98lkq9ip6aglns",
+  "fetcher": "github",
+  "repo": "shiren/upbo",
+  "unstable": {
+   "version": [
+    20180422,
+    822
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "1e4b1e7f44f242a6cdcce0c157d07efe667b7bef",
+   "sha256": "16ic97lpw1d9bqcc0fvzv2n62xb5rlpi92cha3jpy7flbp8ys143"
+  }
+ },
+ {
+  "ename": "uptimes",
+  "commit": "72099e35ce3e34ec6afc6a3f87a4da07ec91499a",
+  "sha256": "0r8s5c2hdcb1ly7rnhzar4qzf1c9d49gd914ndnc3mg9yb9gyy5h",
+  "fetcher": "github",
+  "repo": "davep/uptimes.el",
+  "unstable": {
+   "version": [
+    20191121,
+    1030
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "29ae6585eeed5a00719b2e52f5ae1082087c1778",
+   "sha256": "0njpgw4is5lbv499jpc9c987yfvr6srhcmvg6wl631kpv0h8q9a9"
+  },
+  "stable": {
+   "version": [
+    3,
+    8
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "29ae6585eeed5a00719b2e52f5ae1082087c1778",
+   "sha256": "0njpgw4is5lbv499jpc9c987yfvr6srhcmvg6wl631kpv0h8q9a9"
+  }
+ },
+ {
+  "ename": "url-shortener",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "08zsirsndhr8xny2vkzznkvjs0b6490lzd915ws6crdwxp6mx5si",
+  "fetcher": "github",
+  "repo": "yuyang0/url-shortener",
+  "unstable": {
+   "version": [
+    20170805,
+    242
+   ],
+   "commit": "06db8270213b9e352d6c335b0663059a1353d05e",
+   "sha256": "1ndcajgvfl46zw2iwgghvcldsy9p778pifkhlanivc6azajhpjhh"
+  }
+ },
+ {
+  "ename": "urlenc",
+  "commit": "5c36c416a13328ab762041dd62407b7b0696de93",
+  "sha256": "0n6shh95m11162zsnf62zy1ljswdjznjilxx2dbqyqdrn7qr2dgh",
+  "fetcher": "github",
+  "repo": "buzztaiki/urlenc-el",
+  "unstable": {
+   "version": [
+    20140116,
+    1456
+   ],
+   "commit": "835a6dcb783bbe84714bae87a3464aa0b128bfac",
+   "sha256": "0xwr0v4f64d7hi5ldig4r5yjn8h3f8by49g5820187lsp7ng2nw4"
+  }
+ },
+ {
+  "ename": "urscript-mode",
+  "commit": "b4ae680b51a85749ed254215bbd4a35909961049",
+  "sha256": "1jjmpg9r7vwa8284chx9yc1ifn36m7ml1ks4ls8hnsxachbv7wlh",
+  "fetcher": "github",
+  "repo": "guidoschmidt/urscript-mode",
+  "unstable": {
+   "version": [
+    20190219,
+    1604
+   ],
+   "commit": "b341f96b129ead8fb74d680cb4f546985bf110a9",
+   "sha256": "0qhncqsvsrpgc47ixsp436imfm0l6pd1kbpjjk426wrnzaszrpkc"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "commit": "b341f96b129ead8fb74d680cb4f546985bf110a9",
+   "sha256": "0qhncqsvsrpgc47ixsp436imfm0l6pd1kbpjjk426wrnzaszrpkc"
+  }
+ },
+ {
+  "ename": "usage-memo",
+  "commit": "ad10a684b4b2f01bc65883374f36fef156ff55d2",
+  "sha256": "0fv96xd6gk12nv98zccwncr00qms0pmrp0cv7iipbz54s20g0745",
+  "fetcher": "github",
+  "repo": "rubikitch/usage-memo",
+  "unstable": {
+   "version": [
+    20170926,
+    37
+   ],
+   "commit": "88e15a9942a3e0a6e36e9c3e51e3edb746067b1a",
+   "sha256": "1aalrgyk8pwsc07qmczqhgccjli6mcckkbgpass3kvrkcfxdl2zk"
+  }
+ },
+ {
+  "ename": "use-package",
+  "commit": "51a19a251c879a566d4ae451d94fcb35e38a478b",
+  "sha256": "0d0zpgxhj6crsdi9sfy30fn3is036apm1kz8fhjg1yzdapf1jdyp",
+  "fetcher": "github",
+  "repo": "jwiegley/use-package",
+  "unstable": {
+   "version": [
+    20200322,
+    2110
+   ],
+   "deps": [
+    "bind-key"
+   ],
+   "commit": "c873d5529c9c80cb58222f22873a4f081c307cb2",
+   "sha256": "0jbq3w9ijsbl5gblhr24b0rh4gyp1xx696g20l438a7sbsk4b531"
+  },
+  "stable": {
+   "version": [
+    2,
+    4
+   ],
+   "deps": [
+    "bind-key"
+   ],
+   "commit": "39a8b8812c2c9f6f0b299e6a04e504ef393694ce",
+   "sha256": "1b7mjjh0d6fmkkd9vyj64vca27xqhga0nvyrrcqxpqjn62zq046y"
+  }
+ },
+ {
+  "ename": "use-package-chords",
+  "commit": "6240afa625290187785e4b7535ee7b0d7aad8969",
+  "sha256": "1217l0gpxcp8532p0d3g1xd2015qpx2g5xm0kwsbxdmffqqdaar3",
+  "fetcher": "github",
+  "repo": "jwiegley/use-package",
+  "unstable": {
+   "version": [
+    20181024,
+    2322
+   ],
+   "deps": [
+    "bind-chord",
+    "bind-key",
+    "key-chord",
+    "use-package"
+   ],
+   "commit": "c873d5529c9c80cb58222f22873a4f081c307cb2",
+   "sha256": "0jbq3w9ijsbl5gblhr24b0rh4gyp1xx696g20l438a7sbsk4b531"
+  },
+  "stable": {
+   "version": [
+    2,
+    4
+   ],
+   "deps": [
+    "bind-chord",
+    "bind-key",
+    "key-chord",
+    "use-package"
+   ],
+   "commit": "39a8b8812c2c9f6f0b299e6a04e504ef393694ce",
+   "sha256": "1b7mjjh0d6fmkkd9vyj64vca27xqhga0nvyrrcqxpqjn62zq046y"
+  }
+ },
+ {
+  "ename": "use-package-el-get",
+  "commit": "aca60522257353fbfd9d032f8c3cae7914d6bd36",
+  "sha256": "143vydssjxmkcgs661hz6nhg310r8qypn2a4vyxy5sb31wqcclzg",
+  "fetcher": "gitlab",
+  "repo": "edvorg/use-package-el-get",
+  "unstable": {
+   "version": [
+    20180131,
+    505
+   ],
+   "deps": [
+    "use-package"
+   ],
+   "commit": "cba87c4e9a3a66b7c10962e3aefdf11c83d737bc",
+   "sha256": "1k1dwydqfgx2yvbipahwzk8kyj7v5ih6hkra8ladbn67x013f9rq"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "use-package"
+   ],
+   "commit": "f33c448ed43ecb003b60ff601ee7ef9b08cff947",
+   "sha256": "1wzn3h8k7aydj3hxxws64b0v4cr3b77cf7z128xh3v6xz2w62m4z"
+  }
+ },
+ {
+  "ename": "use-package-ensure-system-package",
+  "commit": "6240afa625290187785e4b7535ee7b0d7aad8969",
+  "sha256": "1cl61nwgsz5dh3v9rdiww8mq2k1sbx27gr6izb4ij4pnzjp7aaj6",
+  "fetcher": "github",
+  "repo": "jwiegley/use-package",
+  "unstable": {
+   "version": [
+    20180913,
+    1501
+   ],
+   "deps": [
+    "system-packages",
+    "use-package"
+   ],
+   "commit": "c873d5529c9c80cb58222f22873a4f081c307cb2",
+   "sha256": "0jbq3w9ijsbl5gblhr24b0rh4gyp1xx696g20l438a7sbsk4b531"
+  },
+  "stable": {
+   "version": [
+    2,
+    4
+   ],
+   "deps": [
+    "system-packages",
+    "use-package"
+   ],
+   "commit": "39a8b8812c2c9f6f0b299e6a04e504ef393694ce",
+   "sha256": "1b7mjjh0d6fmkkd9vyj64vca27xqhga0nvyrrcqxpqjn62zq046y"
+  }
+ },
+ {
+  "ename": "use-package-hydra",
+  "commit": "28589bb76442601930a4591e200c8e1db119caf6",
+  "sha256": "0q2qfav2y1p6vxfvdblqlpjmj0z7z8w843jpry9g07d8kc4959f6",
+  "fetcher": "gitlab",
+  "repo": "to1ne/use-package-hydra",
+  "unstable": {
+   "version": [
+    20181228,
+    745
+   ],
+   "deps": [
+    "use-package"
+   ],
+   "commit": "8cd55a1128fbdf6327bb38a199d206225896d146",
+   "sha256": "19dja25illcvwpx8j1kigw8dzby41bm57prx1bhaxkmsakxyl863"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "use-package"
+   ],
+   "commit": "8cd55a1128fbdf6327bb38a199d206225896d146",
+   "sha256": "19dja25illcvwpx8j1kigw8dzby41bm57prx1bhaxkmsakxyl863"
+  }
+ },
+ {
+  "ename": "use-ttf",
+  "commit": "6c2287c7b4c543e92ccfab120388b2c05174d2db",
+  "sha256": "18ry06d6llq86k5awd23jj0qb68k459dc2i5hqrmpjykqzq6bvya",
+  "fetcher": "github",
+  "repo": "jcs-elpa/use-ttf",
+  "unstable": {
+   "version": [
+    20190823,
+    939
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "edfc3f4b50aec2234792c0cc894774e4916ce26a",
+   "sha256": "0xy522czbxva2dpfbfjqf0xm6wi7cc98pz6ha7glgylsmcvhlvar"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    5
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "8c7f50a2b6f5bd55cdd92e351371386ff4b6edce",
+   "sha256": "0xg98ngrdlfjcb902qaljwhh9jszkafc2vm1x8627lnw1k7i6b3q"
+  }
+ },
+ {
+  "ename": "utop",
+  "commit": "30489fe52b4031184e54f994770aa3291257bc9d",
+  "sha256": "0lv16kl29gc9hdcpn04l85pf7x93vkl41s4mgqp678cllzyr0cq7",
+  "fetcher": "github",
+  "repo": "diml/utop",
+  "unstable": {
+   "version": [
+    20190715,
+    1836
+   ],
+   "commit": "952f97a46062bb3315d3ae20ecbfd58747019c25",
+   "sha256": "0bfi325y5yzjbwnmdww0l5bpf4h9ynwz4mwg60k8q3p3f82pkrrm"
+  },
+  "stable": {
+   "version": [
+    2,
+    5,
+    0
+   ],
+   "commit": "471cb311159773bbb280d0f1a4b47c54456c67a9",
+   "sha256": "09hxi1v5wvb952rwfmj48n6ndxkqn8ciaqj1cd9xgkw62h54agq9"
+  }
+ },
+ {
+  "ename": "uuid",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0d69z9686gnd1bb17wa44v1rbbgccacn4kicwf9niwwp05nccfw6",
+  "fetcher": "github",
+  "repo": "nicferrier/emacs-uuid",
+  "unstable": {
+   "version": [
+    20120910,
+    851
+   ],
+   "commit": "1519bfeb0e31602b840bc8dd35d7c7e732c159fe",
+   "sha256": "0r74gw8gcbrr62rvj4anz0c3n6kwi1xpb42d3pkzlh4igblhi5zj"
+  }
+ },
+ {
+  "ename": "uuidgen",
+  "commit": "8bdeb5848d0b160a74e834ed918e83653d7342bf",
+  "sha256": "1qaz7hg0wsdkl0jb7v7vrkjs554i2zgpxl8xq2f8q7m4bs2m5k48",
+  "fetcher": "github",
+  "repo": "kanru/uuidgen-el",
+  "unstable": {
+   "version": [
+    20200223,
+    509
+   ],
+   "commit": "f096f35a6e1f27d2bc9e9093cd61dd97bc33f502",
+   "sha256": "1nzf7cllyvx7kwdzpf0nl3g5a8mn6qgifa60aw68h0sx9a80xp01"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "f096f35a6e1f27d2bc9e9093cd61dd97bc33f502",
+   "sha256": "1nzf7cllyvx7kwdzpf0nl3g5a8mn6qgifa60aw68h0sx9a80xp01"
+  }
+ },
+ {
+  "ename": "v2ex-mode",
+  "commit": "b27b7d777415aa350c8c30822e239b9a4c02e77d",
+  "sha256": "04frd6jbnf9g7ak2fdbik9iji7b0903cpbg1hx7rai1853af7gh1",
+  "fetcher": "github",
+  "repo": "aborn/v2ex-mode",
+  "unstable": {
+   "version": [
+    20160720,
+    345
+   ],
+   "deps": [
+    "cl-lib",
+    "let-alist",
+    "request"
+   ],
+   "commit": "b7d19bb594b43ea3824a6f215dd1e5d1d4c0e8ad",
+   "sha256": "0hhj5xfm7mp3ajrbj9ai5p2d9akaqkj89rmqmg1vpyfp3x2f4h2k"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "let-alist",
+    "request"
+   ],
+   "commit": "7a59ac3be2b08d873ec271ec7a3d5ace309c1407",
+   "sha256": "0f4y0s0zhqlb3n56yqp2w1krhrar5l4axl7dfn595hmwhhgxvvra"
+  }
+ },
+ {
+  "ename": "vagrant",
+  "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a",
+  "sha256": "0g6sqzsx3lixcn09fkxhhcfp45qnqgf1ms0l7nkzyljavb7151cf",
+  "fetcher": "github",
+  "repo": "ottbot/vagrant.el",
+  "unstable": {
+   "version": [
+    20170301,
+    2206
+   ],
+   "commit": "636ce2f9af32ea199170335a9cf1201b64873440",
+   "sha256": "06zws69z327p00jw3zaf67niji2d4j339xmhbsrwbcr4w65dmz94"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    1
+   ],
+   "commit": "ef3022d290ee26597e21b17ab87acbd8d4f1071f",
+   "sha256": "1661fwfx2gpxjriy3ngi9raz8c2kkk3rgg51irdi591jr2zqmw6s"
+  }
+ },
+ {
+  "ename": "vagrant-tramp",
+  "commit": "baea9f16e245aec3f62e55471358c7208f61372d",
+  "sha256": "0ij7k27zj22sl7inx141l4dg0ymywnvyabjvaqzc0xjdj0cky5c5",
+  "fetcher": "github",
+  "repo": "dougm/vagrant-tramp",
+  "unstable": {
+   "version": [
+    20200118,
+    2324
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "f67925928dd844b74e4002f433e6f0ebd3aae357",
+   "sha256": "1s022vcjzm78v1j7z29pda3lk9x93fvks4qw5v9kh2yzsrxdq4h8"
+  }
+ },
+ {
+  "ename": "vala-mode",
+  "commit": "cea26fa67a524b7c14be2952cfbd4f657431415f",
+  "sha256": "164dhlsiflhpdymk3q5x0bv8gpbwfp34lnkhm2x90kdakfzqf91p",
+  "fetcher": "github",
+  "repo": "emacsorphanage/vala-mode",
+  "unstable": {
+   "version": [
+    20150324,
+    2225
+   ],
+   "commit": "fb2871a4492d75d03d72e60474919ab89adb267b",
+   "sha256": "10vs4d8csww781j1ps3f6dczy5zzza36z7a8zqk40fg4x57ikw44"
+  }
+ },
+ {
+  "ename": "vala-snippets",
+  "commit": "70f130c5751f47c1ead5f8915680e817e0239a2a",
+  "sha256": "14hmmic0px3z38dm2dg0kis6cz1p3p1hj7xaqnqjmv02dkx2mmcy",
+  "fetcher": "github",
+  "repo": "gopar/vala-snippets",
+  "unstable": {
+   "version": [
+    20150429,
+    352
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "671439501060449bd100b9fffd524a86064fbfbb",
+   "sha256": "0iscaz8lm4fk6w13f68ysqk8ppng2wj9fkkkq1rfqz77ws66f8nq"
+  }
+ },
+ {
+  "ename": "vale-mode",
+  "commit": "9c8cec6c01c031e6583106e7230e8162d0a77d9a",
+  "sha256": "0rhq14zlhswczzprzh3vc3cnan3d6q1d4ri3rjw4ggmvb63wr2kw",
+  "fetcher": "github",
+  "repo": "jaybosamiya/vale-mode.el",
+  "unstable": {
+   "version": [
+    20190725,
+    125
+   ],
+   "commit": "48bbc4b4ee5bf0b1b73e52705c0fbc112b255cd0",
+   "sha256": "1p0b7jh572wfz7cmzfbd70pr7i59xbbi15jw6rvzgnr558v3fmlg"
+  }
+ },
+ {
+  "ename": "vbasense",
+  "commit": "8e7dd1e985d55149f48e4f93a31fb28ec01a4add",
+  "sha256": "1440q2bi4arpl5lbqh7zscg7v3884clqx54p2fdfcfkz47ky4z9n",
+  "fetcher": "github",
+  "repo": "aki2o/emacs-vbasense",
+  "unstable": {
+   "version": [
+    20140221,
+    2353
+   ],
+   "deps": [
+    "auto-complete",
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "8c61a492d7c15218ae1a96e2aebfe6f78bfff6db",
+   "sha256": "19j5q2f6pybvjq3ryjcyihzlw348hqyjhfcy3qflry6w786dqcgn"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "auto-complete",
+    "log4e",
+    "yaxception"
+   ],
+   "commit": "8c61a492d7c15218ae1a96e2aebfe6f78bfff6db",
+   "sha256": "19j5q2f6pybvjq3ryjcyihzlw348hqyjhfcy3qflry6w786dqcgn"
+  }
+ },
+ {
+  "ename": "vc-auto-commit",
+  "commit": "770ab1e99fe63789726fc6c8c5d7e9a0287bc5fa",
+  "sha256": "1xpp7vbld3jgcr249m5h7il919kfg7d5ap3zs64i27axzdhv26zk",
+  "fetcher": "github",
+  "repo": "thisirs/vc-auto-commit",
+  "unstable": {
+   "version": [
+    20170107,
+    1333
+   ],
+   "commit": "446f664f4ec835532f4f18ba18b5fb731f6030aa",
+   "sha256": "18jjl656ps75p7n3hf16mcjrgiagnjvb8m8dl4i261cbnq98qmav"
+  }
+ },
+ {
+  "ename": "vc-check-status",
+  "commit": "0387e08dd7ed69b291e896d85bd975c4f5dcbd09",
+  "sha256": "1kwnxa0ndfj8b211xy5d47sxkwmsay0kk8q7azfm5ag5dkg56zgi",
+  "fetcher": "github",
+  "repo": "thisirs/vc-check-status",
+  "unstable": {
+   "version": [
+    20170107,
+    1334
+   ],
+   "commit": "37734beb16bfd8633ea328059bf9a47eed826d5c",
+   "sha256": "0mspksr2i6hkb7bhs38ydmn0d2mn7g1hjva60paq86kl7k76f7ra"
+  }
+ },
+ {
+  "ename": "vc-darcs",
+  "commit": "54f89c50ae45365e86bdadcf67b2411c0f4c5603",
+  "sha256": "1xskl9wjxkbdpi0fm769ymbvya70vssi944x5252w2d3layibm6m",
+  "fetcher": "github",
+  "repo": "velkyel/vc-darcs",
+  "unstable": {
+   "version": [
+    20170905,
+    320
+   ],
+   "commit": "390fb1ebdda1ffac45b9be02626dde3b6d95ac11",
+   "sha256": "1fcqkavc7hlbhswx5nnaqhash42cjsbr72ijznx5cplr582g3mfq"
+  }
+ },
+ {
+  "ename": "vc-fossil",
+  "commit": "31c5ee4b625b90c1af66d7d11a25af8e1aa307b1",
+  "sha256": "11ps2wrkjrjm1d984mf80wwj1hzskw5qrn0nv7md21lp75kxsvxb",
+  "fetcher": "github",
+  "repo": "venks1/emacs-fossil",
+  "unstable": {
+   "version": [
+    20180215,
+    1635
+   ],
+   "commit": "7c5af95181213db38f81f5f9586f3334301a3ea0",
+   "sha256": "1c18ywvs0l5w7ip2igksjy48awzas8mph7plpvp1v8c67a3a3m2m"
+  }
+ },
+ {
+  "ename": "vc-hgcmd",
+  "commit": "111142342ab81dcaa88a831ba620be499a334c3f",
+  "sha256": "11p8r94s72x47nkxlarxwy33im167jpjas8b9i8dkrz2iggwn5xk",
+  "fetcher": "github",
+  "repo": "muffinmad/emacs-vc-hgcmd",
+  "unstable": {
+   "version": [
+    20200507,
+    2139
+   ],
+   "commit": "7433c6cc557440893d54be05fbf6500ff0e863d7",
+   "sha256": "0wgr2g814a461nknqchwbrgfgax5hb5f9fp6ibz6616q56hrcbds"
+  },
+  "stable": {
+   "version": [
+    1,
+    11
+   ],
+   "commit": "7433c6cc557440893d54be05fbf6500ff0e863d7",
+   "sha256": "0wgr2g814a461nknqchwbrgfgax5hb5f9fp6ibz6616q56hrcbds"
+  }
+ },
+ {
+  "ename": "vc-msg",
+  "commit": "59ad4e80b49c78decd7b5794565313f65550384e",
+  "sha256": "16pgx8pg3djhkmhf1fihgjk7c6nb2nsqj58888bwg7385mlwc7g9",
+  "fetcher": "github",
+  "repo": "redguardtoo/vc-msg",
+  "unstable": {
+   "version": [
+    20191128,
+    1010
+   ],
+   "deps": [
+    "popup"
+   ],
+   "commit": "93794111daa95b809e46e6d961ad5f68eb8f78ed",
+   "sha256": "11xci11lbw06syz3y6zhrbh7984mj523i5fphrmdqh76iivkphwh"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    3
+   ],
+   "deps": [
+    "popup"
+   ],
+   "commit": "76951fccc2cf66916af2ae006dfa758583e2415d",
+   "sha256": "0zmpc2w02ynm6ck01q5l9kv5flbl5zkgxhxyplqddh37ml31pka0"
+  }
+ },
+ {
+  "ename": "vc-osc",
+  "commit": "70a1fa5fdfdfa9ec5607524be62eb44fe82e91b0",
+  "sha256": "0rp33945xk5d986brganqnn55psmlkj6glbimxakhgv9a1r85sxz",
+  "fetcher": "github",
+  "repo": "aspiers/vc-osc",
+  "unstable": {
+   "version": [
+    20190402,
+    2349
+   ],
+   "commit": "bf5a515ed85f7d7cdfe66ed5bf4ef7554f8561e5",
+   "sha256": "1jk09vspns327j9mfy32dd71n3nfynn17h2njc4sczrgd4yzc2wd"
+  }
+ },
+ {
+  "ename": "vcomp",
+  "commit": "561442ea9f75ebe8444db1a0c40f7756fcbca482",
+  "sha256": "02cj2nlyxvgvl2rjfgacljvcsnfm9crmmkhcm2pznj9xw10y8pq0",
+  "fetcher": "github",
+  "repo": "tarsius/vcomp",
+  "unstable": {
+   "version": [
+    20190128,
+    20
+   ],
+   "commit": "f839b3b3257a564b19d7f9557dc8bcbbe0b95842",
+   "sha256": "1xd42bdi6x89gc9xjrwvzzdaanv9vwlbbjwp25bs1nsd53k5nvak"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "f839b3b3257a564b19d7f9557dc8bcbbe0b95842",
+   "sha256": "1xd42bdi6x89gc9xjrwvzzdaanv9vwlbbjwp25bs1nsd53k5nvak"
+  }
+ },
+ {
+  "ename": "vcsh",
+  "commit": "a5f56f914d7cc11f45be0474897998accb0fec2e",
+  "sha256": "0cclih5yfgal3bi3n2na4sc4xw1rqalml3nknhgypxrlx4j784pb",
+  "fetcher": "gitlab",
+  "repo": "stepnem/vcsh-el",
+  "unstable": {
+   "version": [
+    20200226,
+    1339
+   ],
+   "commit": "7e376436b8f450a5571e19246136ccf77bbdd4f1",
+   "sha256": "183pffdiqb7qqmjq31wxl3fpv8qswqgg99gb716rddiyk15ysri7"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    4
+   ],
+   "commit": "7e376436b8f450a5571e19246136ccf77bbdd4f1",
+   "sha256": "183pffdiqb7qqmjq31wxl3fpv8qswqgg99gb716rddiyk15ysri7"
+  }
+ },
+ {
+  "ename": "vdf-mode",
+  "commit": "203d755a2c083ecdb75a41ce6d6030315651b16c",
+  "sha256": "1ja7c0sn25r9fqxlp0c2c74qrblvxrb9akh0gf6f7x2hiqa0mygk",
+  "fetcher": "github",
+  "repo": "plapadoo/vdf-mode",
+  "unstable": {
+   "version": [
+    20191122,
+    823
+   ],
+   "commit": "35f5c3531b256b6578b9878ac2ce1ed79b3c8511",
+   "sha256": "16650xwq85rp98z4nljd5s7f14fg4rr90nr7ipfshj1i6zvbk229"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "commit": "f474047a35a2779e4ebaf9166f3d54f359cf9f3c",
+   "sha256": "0r3kb89zsxac98q8g4w0gyji83qnyxlqwcvmd7b9aa8sx8ry1asz"
+  }
+ },
+ {
+  "ename": "vdiff",
+  "commit": "e90f19c8fa4b0d267d269b76f117995e812e899c",
+  "sha256": "11gw0l63fssbiyhngqb7ykrp7m1vy55wlf27ybhh2dkwh1cpkr4l",
+  "fetcher": "github",
+  "repo": "justbur/emacs-vdiff",
+  "unstable": {
+   "version": [
+    20200214,
+    1845
+   ],
+   "deps": [
+    "hydra"
+   ],
+   "commit": "c0541ae9c2cb878be9ab3935da058a72155a14fc",
+   "sha256": "0jqkr92y5xrwlj2aa8nm2s153nbzsy9xf04c2rixizg7xzz5jky8"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "hydra"
+   ],
+   "commit": "f55acdbfcbb14e463d0850cfd041614c7002669e",
+   "sha256": "0dlhisvnlzkzlilg456lxi0m5wh4a8681n142684hmk8vaw3wx2k"
+  }
+ },
+ {
+  "ename": "vdiff-magit",
+  "commit": "2159275fabde8ec8b297f6635546b1314d519b8b",
+  "sha256": "1vjc1r5xfdg9bmscgppx1fps1w5bd0zpp6ab5z5dxlg2zx2vdldw",
+  "fetcher": "github",
+  "repo": "justbur/emacs-vdiff-magit",
+  "unstable": {
+   "version": [
+    20190304,
+    1707
+   ],
+   "deps": [
+    "magit",
+    "transient",
+    "vdiff"
+   ],
+   "commit": "b100d126c69e5c26a61ae05aa1778bcc4302b597",
+   "sha256": "16cjmrzflf2i1w01973sl944xrfanakba8sb4dpwi79d92xp03xy"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    2
+   ],
+   "deps": [
+    "magit",
+    "vdiff"
+   ],
+   "commit": "7e841dc7225300dd4d5560faad04e5c44cd8b267",
+   "sha256": "0800lnclv0kdkk2njddhsydsbifrwgg6w09mm4js7mqci1mr3gia"
+  }
+ },
+ {
+  "ename": "vdirel",
+  "commit": "72b5ea3f4444c3de73d986a28e1d12bf47c40246",
+  "sha256": "11cc7bw7x5h3bwnlsjyhw6k5fh2fk7wffarrcny562v4cmr013cj",
+  "fetcher": "github",
+  "repo": "DamienCassou/vdirel",
+  "unstable": {
+   "version": [
+    20190430,
+    624
+   ],
+   "deps": [
+    "helm",
+    "org-vcard",
+    "seq"
+   ],
+   "commit": "a9ef32a70a1f14416e3dc5fee478ce138cc011d3",
+   "sha256": "1r60gp3h7cj34wc5kjvpxzidb01gyqsd04ykmhk7asv91m598vs3"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "helm",
+    "org-vcard",
+    "seq"
+   ],
+   "commit": "4232676e93ca5ace8e51f6605bec223c3205beea",
+   "sha256": "0jdjg50f6my9952frl6asi8zk0i8b4hva26wm7pi8zk423pydr30"
+  }
+ },
+ {
+  "ename": "vdm-comint",
+  "commit": "077f586e59fe3b6085e1f19b3c18b218de5d4046",
+  "sha256": "1r7jg7dkzfs4n230n0jk23w0ncqsiwkslf2gmjfzfqg8qklr9bhs",
+  "fetcher": "github",
+  "repo": "peterwvj/vdm-mode",
+  "unstable": {
+   "version": [
+    20181127,
+    2023
+   ],
+   "deps": [
+    "vdm-mode"
+   ],
+   "commit": "89e7db6ee1a89b8c1f7ce36ce6800c32b5c4ba2d",
+   "sha256": "1vfqkfw39yg7379s6b28n8nyswv1jq7caljfbnyrndsag6z4j50k"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    4
+   ],
+   "deps": [
+    "vdm-mode"
+   ],
+   "commit": "e131edb0d35de28bd47d6128dd70d9a6fc46e0fa",
+   "sha256": "090a0imk7dr6vqq4lf806pvajqc499x2gmi0k7rgc1696rbyzhb5"
+  }
+ },
+ {
+  "ename": "vdm-mode",
+  "commit": "70a6c89d41235f7e8463a47400004a32b2979a5a",
+  "sha256": "1h72731vcsjqsbii1wbzpa114x09aqbkbnz5fg9fnjq9rybz6rn7",
+  "fetcher": "github",
+  "repo": "peterwvj/vdm-mode",
+  "unstable": {
+   "version": [
+    20190328,
+    1408
+   ],
+   "commit": "89e7db6ee1a89b8c1f7ce36ce6800c32b5c4ba2d",
+   "sha256": "1vfqkfw39yg7379s6b28n8nyswv1jq7caljfbnyrndsag6z4j50k"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    4
+   ],
+   "commit": "e131edb0d35de28bd47d6128dd70d9a6fc46e0fa",
+   "sha256": "090a0imk7dr6vqq4lf806pvajqc499x2gmi0k7rgc1696rbyzhb5"
+  }
+ },
+ {
+  "ename": "vdm-snippets",
+  "commit": "f246b9dcf7915a845b9e2cd44cc1a0833b412c8f",
+  "sha256": "1js1hjs2r9bbqm50bl389y87xn68f30xrh2z6nd5kz2hdgkm6lhj",
+  "fetcher": "github",
+  "repo": "peterwvj/vdm-mode",
+  "unstable": {
+   "version": [
+    20190313,
+    1122
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "89e7db6ee1a89b8c1f7ce36ce6800c32b5c4ba2d",
+   "sha256": "1vfqkfw39yg7379s6b28n8nyswv1jq7caljfbnyrndsag6z4j50k"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    4
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "e131edb0d35de28bd47d6128dd70d9a6fc46e0fa",
+   "sha256": "090a0imk7dr6vqq4lf806pvajqc499x2gmi0k7rgc1696rbyzhb5"
+  }
+ },
+ {
+  "ename": "vector-utils",
+  "commit": "081aa3e1d50c2c9e5a9b9ce0716258a93279f605",
+  "sha256": "07armr23pq5pd47lqhir6a59r86c84zikbc51d8vfcaw8y71yr5n",
+  "fetcher": "github",
+  "repo": "rolandwalker/vector-utils",
+  "unstable": {
+   "version": [
+    20140508,
+    2041
+   ],
+   "commit": "c38ca1c6a23b2b51a6ac36c2c64e50e21cbe9d21",
+   "sha256": "1wa03gb98x650q798aqshm43kh6gfxaz1rlyrmvka5dxgf48whmf"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "commit": "2bd63c8ade1a2b6f8aac403c5f25adda2215a685",
+   "sha256": "0lzq31zqnk32vfp3kicnvgfr3nkv8amjzxmk9nrz1kwgmq7gvkjk"
+  }
+ },
+ {
+  "ename": "vega-view",
+  "commit": "3b97f1a40c63c1d819eb235e9c36e5dfe20015c1",
+  "sha256": "1j4hwd2amhmbqhx3kmc8y8c7hmrzvvnjklyxp9c6mgxg08qsy2qk",
+  "fetcher": "github",
+  "repo": "applied-science/emacs-vega-view",
+  "unstable": {
+   "version": [
+    20200510,
+    726
+   ],
+   "deps": [
+    "cider",
+    "parseedn"
+   ],
+   "commit": "c869defa3c0d9931e8eb4050dbaedb781160410b",
+   "sha256": "1l57w79ljihhfs4n60ak3hc3hdzv24wxkxafv51llb4zv2b85b5k"
+  }
+ },
+ {
+  "ename": "verb",
+  "commit": "3802b91f39ef7800afd49589d398182cb191b756",
+  "sha256": "12hskj4d7w43a8mjqqa535p02w778hi7lsxm47mh1xjiimibad3p",
+  "fetcher": "github",
+  "repo": "federicotdn/verb",
+  "unstable": {
+   "version": [
+    20200515,
+    1734
+   ],
+   "commit": "af1f250fd34d53ecdf31be1756c8693b4182d452",
+   "sha256": "0zk52ddlf11rwsd1f70i6jjc9z81jddqapfr2dv1d4ghn6j382x5"
+  },
+  "stable": {
+   "version": [
+    2,
+    10,
+    0
+   ],
+   "commit": "ee83e62490bec3b6d99281748a2e894c2bdc9e24",
+   "sha256": "1zd7vkd3i3x5cr04sp3jpfd79cp0p30615c9605z1rq01jjxgm3m"
+  }
+ },
+ {
+  "ename": "veri-kompass",
+  "commit": "18c3a69bec780e3e7456b310db6f0eec2a35c753",
+  "sha256": "103x4003qj0z9ki6xz4hymamyhipzfxz94x4gszk3k2qnvkjkxnj",
+  "fetcher": "gitlab",
+  "repo": "koral/veri-kompass",
+  "unstable": {
+   "version": [
+    20200213,
+    934
+   ],
+   "deps": [
+    "cl-lib",
+    "org"
+   ],
+   "commit": "271903cdf92db05898ee7cffb65641f30fa08280",
+   "sha256": "0ag2975bwj6l6wzd03min8dj5cy1429fzm3z2p2807i4j7fd7bkr"
+  }
+ },
+ {
+  "ename": "verify-url",
+  "commit": "2070f7b1901c83e59468f6498bd5f79077ccb79d",
+  "sha256": "1gd83rb1q0kywchd0345p5axqj1sv4f5kadympx5pbp4n5p1dqb2",
+  "fetcher": "github",
+  "repo": "lujun9972/verify-url",
+  "unstable": {
+   "version": [
+    20160426,
+    1228
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d6f3623cda8cd526a2d198619b137059cb1ba1ab",
+   "sha256": "1y6vjw5qzaxr37spg5d4nxffmhiipzsrd7mvh8bs3jcfrsg3080n"
+  }
+ },
+ {
+  "ename": "versuri",
+  "commit": "056daa8d5563dd6ffb9c93630f9b357f73c1e58a",
+  "sha256": "0nidgn9gdrrvqzbfjwvhs9bycbj3l9jbcablnbs2yxf903zlgn9b",
+  "fetcher": "github",
+  "repo": "mihaiolteanu/versuri",
+  "unstable": {
+   "version": [
+    20200316,
+    852
+   ],
+   "deps": [
+    "anaphora",
+    "dash",
+    "esqlite",
+    "esxml",
+    "ivy",
+    "request",
+    "s"
+   ],
+   "commit": "41e20583d1080beeeda0e36d1b2e6d74b9c57920",
+   "sha256": "0fgc1rai9gp6lwl0rxr9400vi420py0c0b8nv9wzl12ph80yhwj7"
+  }
+ },
+ {
+  "ename": "vertica",
+  "commit": "f98a06b794ef0936db953f63679a63232295a849",
+  "sha256": "1ljjk6zrbr2k0s0iaqd9iq3j45cavijcx0rqdidliswnfllav4ng",
+  "fetcher": "github",
+  "repo": "r0man/vertica-el",
+  "unstable": {
+   "version": [
+    20131217,
+    1511
+   ],
+   "deps": [
+    "sql"
+   ],
+   "commit": "3c9647b425c5c13c30bf0cba483646af18196588",
+   "sha256": "1mp71axs3vdrdwlhgywfldvnr6a1g2qbxiywmpfmcv59n5n58p1j"
+  }
+ },
+ {
+  "ename": "vertica-snippets",
+  "commit": "d3c8cb5c0fdbb6820a08091d8936dd53a3c43c56",
+  "sha256": "0044qcf6dyxp2h14ij6w19zs7ikx9xalfrz6jqbl8sy35wcihmhn",
+  "fetcher": "github",
+  "repo": "baron42bba/vertica-snippets",
+  "unstable": {
+   "version": [
+    20200423,
+    1200
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "6ced718d9120878878700592fab430a8542b748f",
+   "sha256": "1x04wrf3h6f4wsh4n2cl3n4byj9pxni918ri49hqxzm8h8hivigc"
+  }
+ },
+ {
+  "ename": "vertigo",
+  "commit": "f1957e7fa03b6b8eb2f3250bd814d707bce3cfa3",
+  "sha256": "0x0wy1z601sk1x96bl2xx18qm4avd77iybq1a3ss8x8ykwqlgf83",
+  "fetcher": "github",
+  "repo": "noctuid/vertigo.el",
+  "unstable": {
+   "version": [
+    20180829,
+    2230
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "6303d17270ea92290a6960890bca515274f1682b",
+   "sha256": "0570x63l1j75issnq23hrhhpisv2jm18fn5mspsvbs4xy2hy4h8i"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "ebfa068d9e2fc39ba6d1744618c4e31dad6f629b",
+   "sha256": "1yk7qqg8i3970kpfk34wvi0gh16qf0b0sfnf18g3s21dd4gk5a6g"
+  }
+ },
+ {
+  "ename": "vhdl-capf",
+  "commit": "6192f5777bc8be6ddc5523f92ab641ed3af1a504",
+  "sha256": "06dkw5ra9wnscpgrnx851vyfgr5797xd60qdimsr2v1bqd8si9km",
+  "fetcher": "github",
+  "repo": "sh-ow/vhdl-capf",
+  "unstable": {
+   "version": [
+    20160221,
+    1734
+   ],
+   "commit": "290abe217050f33532bc9ccb04f894123402f414",
+   "sha256": "185a7962h94122q783ih7s8r28xifm0bcrqvkd0g4p64mijlbh3d"
+  }
+ },
+ {
+  "ename": "vhdl-tools",
+  "commit": "b1a3336bff4d677b3bc7fbb8ef230ffc7b78e268",
+  "sha256": "0xdq9sicwpv3qzy833fqhvi4yllqmqgd4p9lbgq7dn1g8qz2gakn",
+  "fetcher": "gitlab",
+  "repo": "emacs-elisp/vhdl-tools",
+  "unstable": {
+   "version": [
+    20200330,
+    1819
+   ],
+   "deps": [
+    "ggtags",
+    "helm-rg",
+    "outshine"
+   ],
+   "commit": "b5d1eec90bb43ba10178219245afbddb6601e85b",
+   "sha256": "1qfjwsxi3w2gdl258jbk5d3z645gs6zccxx2iah54zbgql17pgj9"
+  },
+  "stable": {
+   "version": [
+    6,
+    2
+   ],
+   "deps": [
+    "ggtags",
+    "helm-rg",
+    "outshine"
+   ],
+   "commit": "5202db4c6a511a90a950a723293d11d55ec05264",
+   "sha256": "1ygx8g9cxyyhhpcqan1ca4g741s3dd141bcmp6jjqbjfn2gqraz6"
+  }
+ },
+ {
+  "ename": "vi-tilde-fringe",
+  "commit": "8b3359d57148f8205f8a863a21d92fe4912f31cc",
+  "sha256": "0jhwv46gjwjbs1ai65nm6k15y0q4yl9m5mawgp3n4f45dh02cawp",
+  "fetcher": "github",
+  "repo": "syl20bnr/vi-tilde-fringe",
+  "unstable": {
+   "version": [
+    20141028,
+    242
+   ],
+   "commit": "f1597a8d54535bb1d84b442577b2024e6f910308",
+   "sha256": "0wdm8k49zl6i6wnh7vjkswdh5m9lix56jv37xvc90inipwgs402z"
+  }
+ },
+ {
+  "ename": "viewer",
+  "commit": "f8e4328cae9b4759a75da0b26ea8b68821bc71af",
+  "sha256": "10rw3b8akd2fl8gsqf1m24zi6q4n0z68lvvv1vx9c9b7ghqcqxw1",
+  "fetcher": "github",
+  "repo": "rubikitch/viewer",
+  "unstable": {
+   "version": [
+    20170107,
+    202
+   ],
+   "commit": "6c8db025bf4021428f7f2c3ef9d74fb13f5d267a",
+   "sha256": "1sj4a9zwfv94m0ac503gan6hf9sl2658khab1fnj8szcq7hrdvq1"
+  }
+ },
+ {
+  "ename": "viking-mode",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "12z9807ya0gsgx7h3zdvpx7jksjjrglz3qqyz65wj71sibjfry4m",
+  "fetcher": "github",
+  "repo": "TLINDEN/viking-mode",
+  "unstable": {
+   "version": [
+    20160705,
+    2027
+   ],
+   "commit": "c76aa265d13ad91d6890d242e142d05e31f0340b",
+   "sha256": "1944p3kbskzj4d9w9prbi7z59lrn087v3gphbhwjplz6mvwbl8g6"
+  }
+ },
+ {
+  "ename": "vim-empty-lines-mode",
+  "commit": "e93a8dcd2ff159203288e71da6b8f28eab0d2006",
+  "sha256": "17bl1g4ais73ws596mha0l8dgckfqhx9k2v9m9k0gw7kg7dcjhnb",
+  "fetcher": "github",
+  "repo": "jmickelin/vim-empty-lines-mode",
+  "unstable": {
+   "version": [
+    20150111,
+    426
+   ],
+   "commit": "d4a5034ca8ea0c962ad6e92c86c0fa2a74d2964b",
+   "sha256": "11qh6fpf6269j9syf06v5wnkgi65wnn7dbyjwb6yz72rvq7ihhcz"
+  }
+ },
+ {
+  "ename": "vim-region",
+  "commit": "23249b485ca8e66a21f858712f46aa76b8554f28",
+  "sha256": "1dcnx799lpjsdnnjxqzgskkfj2nx7f4kwf0xjhbg35ny4nyn81dx",
+  "fetcher": "github",
+  "repo": "ongaeshi/emacs-vim-region",
+  "unstable": {
+   "version": [
+    20140329,
+    1624
+   ],
+   "deps": [
+    "expand-region"
+   ],
+   "commit": "7c4a99ce3678fee40c83ab88e8ad075d2a935fdf",
+   "sha256": "13g2hin100c8h5bd7hzhyqzj02ab9c35giyv963l7y044v7sbwig"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    0
+   ],
+   "deps": [
+    "expand-region"
+   ],
+   "commit": "e5359cc584a0cfa9270a76866a5eff7d3f44eb3d",
+   "sha256": "1750gx65ymibam8ahx5blfv5jc26f3mzbklk1jrmfwpsalyghdd9"
+  }
+ },
+ {
+  "ename": "vimgolf",
+  "commit": "1de0a1cdc8fd33601ecca982fa9aa66f4400843b",
+  "sha256": "15xq5vm82hy4pjw04m7xcqav7azsb3c65lp8cfxa29z7xg81w62f",
+  "fetcher": "github",
+  "repo": "timvisher/vimgolf.el",
+  "unstable": {
+   "version": [
+    20200205,
+    1420
+   ],
+   "commit": "f565447ed294898588a19438d56c116555d8c628",
+   "sha256": "0vyxqs575xfvk9vdwwx5vd9fmcjj1hl2139yw31902dd9lrf55ag"
+  },
+  "stable": {
+   "version": [
+    0,
+    10,
+    3
+   ],
+   "commit": "78e91f810a1b49d68ef19565e1c6513c84855e1e",
+   "sha256": "1picdbrkpd694aqmsjcs1v7fh6s6l8bb6j89bicss9gxn65p6bs8"
+  }
+ },
+ {
+  "ename": "vimish-fold",
+  "commit": "b4862b0a3d43f073e645803cbbf11d973a4b51d5",
+  "sha256": "017by9w53d8pqlsazfycmhdv16yylks308p5vxp1rcw2qacpc5m3",
+  "fetcher": "github",
+  "repo": "mrkkrp/vimish-fold",
+  "unstable": {
+   "version": [
+    20200329,
+    1242
+   ],
+   "deps": [
+    "cl-lib",
+    "f"
+   ],
+   "commit": "63685239655a151181b9152e45478dad587f86f2",
+   "sha256": "1l6zca08diq3ppmg1pllihbfj0pcaqvbnisryr92mvbblhk44wxs"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    3
+   ],
+   "deps": [
+    "cl-lib",
+    "f"
+   ],
+   "commit": "e631352fbf910f692807afe38a2b6a7882a403a8",
+   "sha256": "152w1wqxj7yzm3d12lknzz1aix4h8cb571sjns3m1s7azsr3vfbq"
+  }
+ },
+ {
+  "ename": "vimrc-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "05zmr624qwsj9wqsmjlhjvjl1fc1qxz4vvbb3ljr5fbpxdjrbnpn",
+  "fetcher": "github",
+  "repo": "mcandre/vimrc-mode",
+  "unstable": {
+   "version": [
+    20181116,
+    1919
+   ],
+   "commit": "13bc150a870d5d4a95f1111e4740e2b22813c30e",
+   "sha256": "0026dqs3hwygk2k2xfra90w5sfnxrfj7l69jz7sq5glavbf340pk"
+  }
+ },
+ {
+  "ename": "virtual-auto-fill",
+  "commit": "a77a66240098fe2e6a4a8097ca9d0f85f3c2b9af",
+  "sha256": "14832wgn6kl122v3lddcnshgl6rk80cpm6xmmxcqcimhiybb9vcx",
+  "fetcher": "github",
+  "repo": "luisgerhorst/virtual-auto-fill",
+  "unstable": {
+   "version": [
+    20200217,
+    2333
+   ],
+   "deps": [
+    "adaptive-wrap",
+    "visual-fill-column"
+   ],
+   "commit": "291f6178a5423f01f2f69d6bc48603d4f605b61a",
+   "sha256": "15kg23xkcc060y8a5f9657gk3bvkax23myhajaa0b2i1qcd6p43i"
+  }
+ },
+ {
+  "ename": "virtualenv",
+  "commit": "923e4fcf29423ad55b13132d53759bc436466ef9",
+  "sha256": "1djqzzlbwsp9xyjqjbjwdck73wzikbpq19irzamybk90nc98wirl",
+  "fetcher": "github",
+  "repo": "aculich/virtualenv.el",
+  "unstable": {
+   "version": [
+    20140220,
+    2301
+   ],
+   "commit": "276c0f4d6493b402dc4d22ecdf17b2b072e911b3",
+   "sha256": "0rd7hyv66278dj32yva5q9z1749y84c6fwl2iqrns512j1l4kl8q"
+  }
+ },
+ {
+  "ename": "virtualenvwrapper",
+  "commit": "acc9b816796b9f142c53f90593952b43c962d2d8",
+  "sha256": "0rn5vwncx8z69xp8hspr06nzkf28l9flchpb2936c2nalmhx6m8i",
+  "fetcher": "github",
+  "repo": "porterjamesj/virtualenvwrapper.el",
+  "unstable": {
+   "version": [
+    20190223,
+    1919
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "107e7e0bf923f44d217712772cd58b414d0065cb",
+   "sha256": "1qqfcif4by8psc4kp9wnna7pm321a7d0xjkwznq2fwc5cqgbp0vz"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "f753e5ad91c2ff5d11bec424aa8cec141efa6925",
+   "sha256": "062pbnplb3w9h64qsj71d9fvgicp1x63n05mgvgymjh2rnx7py0d"
+  }
+ },
+ {
+  "ename": "visible-mark",
+  "commit": "76ac7178ee5381e08ae881f3fc6061106eeb1c1d",
+  "sha256": "1rp0gnz28m1drwb1hhsf0mwxzdppdi88hscf788qw8cw65gckv80",
+  "fetcher": "gitlab",
+  "repo": "iankelling/visible-mark",
+  "unstable": {
+   "version": [
+    20150624,
+    450
+   ],
+   "commit": "a584db9bc88953b23a9648b3e14ade90767207f8",
+   "sha256": "1rsi9irv9i03627cmfaqz03f9cvpm7555ga8n2gs622lzp6bb3jf"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "c1852e13b6b61982738b56977a452ec9026faf1b",
+   "sha256": "15zdbvv6c114mv6hdq375l7ax70sss06p9d7m86hgssc3kiv9vsv"
+  }
+ },
+ {
+  "ename": "visual-ascii-mode",
+  "commit": "21df748a3f383d62c921e184e2a4c9ae4118ca98",
+  "sha256": "1h0143h39dq61afswlzlgpknk0gv574x91ar6klqmnaf1snab59g",
+  "fetcher": "github",
+  "repo": "Dewdrops/visual-ascii-mode",
+  "unstable": {
+   "version": [
+    20150129,
+    1046
+   ],
+   "commit": "99285a099a17472ddd9f1b4f74e9d092dd8c5947",
+   "sha256": "1cv8mf3l92a9p8qmkfiphk3r81f2ihg2gyw2r4jbbd5ppwbxkl0n"
+  }
+ },
+ {
+  "ename": "visual-fill-column",
+  "commit": "c7628c805840c4687686d0b9dc5007342864721e",
+  "sha256": "19y0pwaybjal2rc7migdbnafpi4dfbxvrzgfqr8dlvd9q68v08y5",
+  "fetcher": "github",
+  "repo": "joostkremers/visual-fill-column",
+  "unstable": {
+   "version": [
+    20200428,
+    816
+   ],
+   "commit": "982606896e018c951917b73d2af6334df554cf9d",
+   "sha256": "19ks9wjfjyfk4s53wvhdqjnjc6847v43nh3ir0yvr66mflqxgg54"
+  },
+  "stable": {
+   "version": [
+    1,
+    11
+   ],
+   "commit": "57c2a72d46900117ea92e0a01b97e19481800503",
+   "sha256": "086zfx4lh168rg50ndg8qzdh8vzc6sgfii7qzcn4mg4wa74hnp9y"
+  }
+ },
+ {
+  "ename": "visual-regexp",
+  "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a",
+  "sha256": "16bdqq2j7pnjq3j6qa4rhxzidqdhyg80c7nazd93smis8rcv5d0z",
+  "fetcher": "github",
+  "repo": "benma/visual-regexp.el",
+  "unstable": {
+   "version": [
+    20190414,
+    814
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "3e3ed81a3cbadef1f1f4cb16f9112a58641d70ca",
+   "sha256": "12p3rlhdphwmx1kxsjzcl2wj3i6qgpvw8iwhg1whs6yqgaxivixd"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "3e3ed81a3cbadef1f1f4cb16f9112a58641d70ca",
+   "sha256": "12p3rlhdphwmx1kxsjzcl2wj3i6qgpvw8iwhg1whs6yqgaxivixd"
+  }
+ },
+ {
+  "ename": "visual-regexp-steroids",
+  "commit": "7f105ebce741956b7becc86e4bdfcafecf59af74",
+  "sha256": "1xkrzyyll8wmb67m75lfm9k8qcm068km8r1k8hcsadpkd01bx1lr",
+  "fetcher": "github",
+  "repo": "benma/visual-regexp-steroids.el",
+  "unstable": {
+   "version": [
+    20170222,
+    253
+   ],
+   "deps": [
+    "visual-regexp"
+   ],
+   "commit": "a6420b25ec0fbba43bf57875827092e1196d8a9e",
+   "sha256": "1isqa4ck6pm4ykcrkr0g1qj8664jkpcsrq0f8dlb0sksns2dqkwj"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "visual-regexp"
+   ],
+   "commit": "a6420b25ec0fbba43bf57875827092e1196d8a9e",
+   "sha256": "1isqa4ck6pm4ykcrkr0g1qj8664jkpcsrq0f8dlb0sksns2dqkwj"
+  }
+ },
+ {
+  "ename": "vlc",
+  "commit": "bcb69969893a3f70fe9e7e3b2a836df3ba212fb8",
+  "sha256": "1pf3ry205pl4369hbpvcc1xlicf16ws4dc018mk6c1m4fi9qc3lk",
+  "fetcher": "github",
+  "repo": "xuchunyang/vlc.el",
+  "unstable": {
+   "version": [
+    20200328,
+    1143
+   ],
+   "commit": "932840f874e7510ee86e796bb5dc20d44514e31a",
+   "sha256": "0vqsdvaqi8ih98ic9hdwwwwcs4v0yjz3nrwwwkwh2a99l9a59j5g"
+  }
+ },
+ {
+  "ename": "vlf",
+  "commit": "9116b11eb513dd9e1dc9542d274dd60f183b24c4",
+  "sha256": "1ipkv5kmda0l39xwbf7ns9p0mx3kb781mxsm9vmbkhr5x577s2j8",
+  "fetcher": "github",
+  "repo": "m00natic/vlfi",
+  "unstable": {
+   "version": [
+    20191126,
+    2250
+   ],
+   "commit": "cc02f2533782d6b9b628cec7e2dcf25b2d05a27c",
+   "sha256": "00wqq9x3p4iwgsga3wvlr8c7iifvh3b0j41sahccdx6hqh4a0pzp"
+  },
+  "stable": {
+   "version": [
+    1,
+    7,
+    1
+   ],
+   "commit": "a01e9ed416cd81ccddebebbf05d4ca80060b07dc",
+   "sha256": "0ziz08ylhkqwj2rp6h1z1yi309f6791b9r91nvr255l2331481pm"
+  }
+ },
+ {
+  "ename": "vmd-mode",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1xjyl2xh3vig2rzjqm1a4h2ridygbanmal78s4yc32hacy0lfyrx",
+  "fetcher": "github",
+  "repo": "blak3mill3r/vmd-mode",
+  "unstable": {
+   "version": [
+    20190929,
+    735
+   ],
+   "commit": "aa9b753601ee1ed31b4f717629179ce7a2cacba5",
+   "sha256": "0gc1c5q1krqlbaq0lb7p29biwpl32lgv4c6527c322a21in6a5pb"
+  }
+ },
+ {
+  "ename": "voca-builder",
+  "commit": "42a930e024ce525b2890ccd5a1eb4844859faafd",
+  "sha256": "0mbw87mpbb8rw7xzhmg6yjla2c80x9820kw4q00x00ny5rbhm76y",
+  "fetcher": "github",
+  "repo": "yitang/voca-builder",
+  "unstable": {
+   "version": [
+    20161101,
+    1645
+   ],
+   "deps": [
+    "popup"
+   ],
+   "commit": "51573beec8cd8308477b0faf453aad93e17f57c5",
+   "sha256": "1gd7zqmyn389dfyx1yll1bw5f8kjib87k33s9hxsbx0db8vas9q6"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "224402532da28e45edd398fda61ecbddb97d22d3",
+   "sha256": "0q1rwqjwqcnsr57s531pwlm464q8wx5vvdm5rj2xy9b3yi6phis1"
+  }
+ },
+ {
+  "ename": "volatile-highlights",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "1r6in919aqdziv6bgzp4k7jqa87bd287pacq615sd5m1nzva1a4d",
+  "fetcher": "github",
+  "repo": "k-talo/volatile-highlights.el",
+  "unstable": {
+   "version": [
+    20160612,
+    155
+   ],
+   "commit": "9a20091f0ce7fc0a6b3e641a6a46d5f3ac4d8392",
+   "sha256": "1dsa6769lphyyv7yg92vkkpk395w52q4m7hdn8xy7s6lh5c6a955"
+  },
+  "stable": {
+   "version": [
+    1,
+    11
+   ],
+   "commit": "fb2abc2d4d4051a9a6b7c8de2fe7564161f01f24",
+   "sha256": "1v0chqj5jir4685jd8ahw86g9zdmi6xd05wmzhyw20rbk924fcqf"
+  }
+ },
+ {
+  "ename": "volume",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "1gm2zaf6qwbdhayaj153882qm21cl4qdyjkdnqrlssb2mcgf017w",
+  "fetcher": "github",
+  "repo": "dbrock/volume.el",
+  "unstable": {
+   "version": [
+    20150718,
+    2009
+   ],
+   "commit": "ecc1550b3c8b501d37e0f0116b54b535d15f90f6",
+   "sha256": "0ymibjq6iwab5ia1fglhz4gm5cnbi792018fmrabcqkisj2zsjb7"
+  }
+ },
+ {
+  "ename": "vs-dark-theme",
+  "commit": "60b9b00d18334f2d7b737e3cc6b3c733e1b163e4",
+  "sha256": "0didkb2zd9ac7h1ccwi9y1q5mcqpwxyws7nsk5g8rhrkygdf9lds",
+  "fetcher": "github",
+  "repo": "jcs-elpa/vs-dark-theme",
+  "unstable": {
+   "version": [
+    20191209,
+    1600
+   ],
+   "commit": "d1f954a3879ec3f93c8dea9177772bf4d5bd0ecb",
+   "sha256": "13kfwp129wrlbbpvl9n4h7ybnycph68x214dx5v6v7ap6gnv0lr6"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "c3c6b0be8bd525079b341490afc8875941b8af79",
+   "sha256": "0w4gygxdfbb7gp92f59p9qvw725l70sy2baf4h6rifrf92af55f2"
+  }
+ },
+ {
+  "ename": "vs-light-theme",
+  "commit": "c997456be95ece85fdef87905e9e14fe308fd827",
+  "sha256": "02w5zyxf34r1lvk56s3xbkzpvinbwsyv1h685hg9vhn0yy0a23ns",
+  "fetcher": "github",
+  "repo": "jcs-elpa/vs-light-theme",
+  "unstable": {
+   "version": [
+    20191209,
+    1600
+   ],
+   "commit": "764f478f5866140b121b1e43857487b7a66afa72",
+   "sha256": "0s8fh7n8qhsfdk8l7r81ifscaazgmpls4n3pginaqb5cszdy4063"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "8b34cbe6294ad02676970bd72c9efbcc09981f3f",
+   "sha256": "0sw8k737ra2qhakxyf83lz41a5sv0dzw5xssnvyiyrarh73n5pp0"
+  }
+ },
+ {
+  "ename": "vscdark-theme",
+  "commit": "8f3accf76fcd91e1507b9e8ac8577d3af5ae0b88",
+  "sha256": "13d3g6bjnry7964pnphl0i205vn9gvl7glydzj5wv82s7yav752w",
+  "fetcher": "github",
+  "repo": "abelikoff/vscdark-theme",
+  "unstable": {
+   "version": [
+    20191212,
+    107
+   ],
+   "commit": "8eba74059e8a9db974e4056ee024e52fe54da485",
+   "sha256": "01p5ys23m4zk5hniri55bcn8j7v6pd6ryi41qx20w29mramwzxl9"
+  }
+ },
+ {
+  "ename": "vscode-icon",
+  "commit": "90a07c96a9223a9ad477cbea895ba522523c5be4",
+  "sha256": "0rhsqzgxl7hs52kniyi8yn4f953g7dgx49j4lzf2yr33ydxiw9d3",
+  "fetcher": "github",
+  "repo": "jojojames/vscode-icon-emacs",
+  "unstable": {
+   "version": [
+    20191102,
+    2010
+   ],
+   "commit": "4304e9f0a47406048129dc62171f08b67325a2ed",
+   "sha256": "0dpmw1kg9ivrn92vis7bxs8nlb1ixk72fhd4s4f5c21k0j4s12rd"
+  }
+ },
+ {
+  "ename": "vterm",
+  "commit": "91a71615c0a32565e455ac81d9bc90443aa8caf9",
+  "sha256": "0nn15pz2ys4bmpyks190x22f8s2fcr793f95h0c2m67cfjmnd478",
+  "fetcher": "github",
+  "repo": "akermu/emacs-libvterm",
+  "unstable": {
+   "version": [
+    20200515,
+    1412
+   ],
+   "commit": "8337e77520bcdb136eebb74837dc71ac8ec67601",
+   "sha256": "1wf8w8w0690mkih7c9xkk11i9f7r47abvfpyw4y576ansxlr5g1f"
+  }
+ },
+ {
+  "ename": "vterm-toggle",
+  "commit": "aecfc82727d408eb3120f76ace1ed7207ff5e5f1",
+  "sha256": "1ajg631d41j8jgdjh90z27yfk2783zacfd0531bqd5j73ijcdbb3",
+  "fetcher": "github",
+  "repo": "jixiuf/vterm-toggle",
+  "unstable": {
+   "version": [
+    20200516,
+    1117
+   ],
+   "deps": [
+    "vterm"
+   ],
+   "commit": "fd55be72e8ad19e2284c8f73d5707c033dbde46d",
+   "sha256": "0q3459vpj5fp2i7nbk67mfd0nf78mpkgz771nhdj4a7xwghk6xgq"
+  }
+ },
+ {
+  "ename": "vue-html-mode",
+  "commit": "48588b163ab76204b9054340071e758045480e19",
+  "sha256": "1f4pjfp4298jkvhacxygddg557hhyivgnm5x3yhjipfv6fjkgl2s",
+  "fetcher": "github",
+  "repo": "AdamNiederer/vue-html-mode",
+  "unstable": {
+   "version": [
+    20180428,
+    2035
+   ],
+   "commit": "1514939804bad558584feeb6298b38d22eadf64e",
+   "sha256": "0xfdm66b6wp7h233hm83bihchmiqqq51aw2zshb8aa4qnskgs677"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "361a9fa117f044c3072dc5a7344ff7be31725849",
+   "sha256": "1z1pphxli8fcahw9fhmxls1v9nyd34pz51jwwa6g468zvdmcjb77"
+  }
+ },
+ {
+  "ename": "vue-mode",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "0npzn7pycqfdakv4plkigq8aw1bqhz3y03y3ypx21q5a186ds0g5",
+  "fetcher": "github",
+  "repo": "AdamNiederer/vue-mode",
+  "unstable": {
+   "version": [
+    20190415,
+    231
+   ],
+   "deps": [
+    "edit-indirect",
+    "mmm-mode",
+    "ssass-mode",
+    "vue-html-mode"
+   ],
+   "commit": "031edd1f97db6e7d8d6c295c0e6d58dd128b9e71",
+   "sha256": "047l5nxw86dvls8an65mmqcy673n37pyli7s0d52yi07jk0lw1yx"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "edit-indirect",
+    "mmm-mode",
+    "ssass-mode",
+    "vue-html-mode"
+   ],
+   "commit": "48ff04657613f39848d0e66e9dd367aa2dc19e89",
+   "sha256": "014vx8jkscj1c614v78dqlqlg7n0zc3c2db3dqvxvaz417i5mxq0"
+  }
+ },
+ {
+  "ename": "vuiet",
+  "commit": "4f63056cf2f637fcb3426851501eeff5e6f40bb3",
+  "sha256": "0hf99rgzhi66in3lr0pl3g8g56l00zcvz1qgclfsbw1yb9ig626y",
+  "fetcher": "github",
+  "repo": "mihaiolteanu/vuiet",
+  "unstable": {
+   "version": [
+    20200424,
+    1400
+   ],
+   "deps": [
+    "bind-key",
+    "lastfm",
+    "mpv",
+    "s",
+    "versuri"
+   ],
+   "commit": "5da06a8acebcaf84a3581610ff24aae1b46f786b",
+   "sha256": "16yfnqpdzi3bih16d7dzbqmd30m7w8rkjylnsg9m951vc0lysk3p"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "deps": [
+    "bind-key",
+    "lastfm",
+    "mpv",
+    "s",
+    "versuri"
+   ],
+   "commit": "4e15dacd6445d490fefc47070f8e5b98db5e0dc6",
+   "sha256": "18qcw9mh57jrd6qrgcma82q28d1dab2dy6v8pi08kadcy4w95y10"
+  }
+ },
+ {
+  "ename": "vyper-mode",
+  "commit": "492d42d60bc188a567c5e438b838a275a124c699",
+  "sha256": "0mf1w4mw0ijmd9zxip1df85cp15fbvv9j5dqjmb8lfm4m43wpd96",
+  "fetcher": "github",
+  "repo": "ralexstokes/vyper-mode",
+  "unstable": {
+   "version": [
+    20180707,
+    1935
+   ],
+   "commit": "323dfddfc38f0b11697e9ebaf04d1b53297e54e5",
+   "sha256": "1vxqgc9c1lj61ipaw05xfby3nl7wn3kp5ga6kpr17v0jlm0667s5"
+  }
+ },
+ {
+  "ename": "w32-browser",
+  "commit": "ae489be43b1aee93614e40f492ebdf0b98a3fbc1",
+  "sha256": "16sp0gn4yv7iaa55i2kvfsqw3610gr3x31l9lqa14r9xmfhda1rn",
+  "fetcher": "github",
+  "repo": "emacsorphanage/w32-browser",
+  "unstable": {
+   "version": [
+    20170101,
+    1954
+   ],
+   "commit": "e5c60eafd8f8d3546a0fa295ad5af2414d36b4e6",
+   "sha256": "18hcr9l5id2xdin20wrg9sdmwfad7qk78iryyg24ci9lvl53m02x"
+  },
+  "stable": {
+   "version": [
+    235
+   ],
+   "commit": "a8126b60bf18193e8e4ec6f699b5694b6f71a062",
+   "sha256": "13wjvzsas7in8f09sc2qj17dz25wizg1l0r2krgp1zymy92p8f97"
+  }
+ },
+ {
+  "ename": "w3m",
+  "commit": "85c53c48caab0845101c487e4fee7e2cda15f706",
+  "sha256": "1fnib1y79g50jz9wll63j0xf2awgkrlk6hwx0w6nzg0xsbfbkdvk",
+  "fetcher": "github",
+  "repo": "emacs-w3m/emacs-w3m",
+  "unstable": {
+   "version": [
+    20200325,
+    2226
+   ],
+   "commit": "e522a44b151d69d4a176e8809225598ab540fc4d",
+   "sha256": "1alishzz4j1hbfyfi09rkhffx6gv16yxln7q8jx25shb9rssivyz"
+  }
+ },
+ {
+  "ename": "wacspace",
+  "commit": "58e5ff4c5853c5350d0534894ddb358daa83cee9",
+  "sha256": "1xy0mprvyi37zmgj1yrlh5ni08j47lpag1jm3a76cgghgmlfjxrl",
+  "fetcher": "github",
+  "repo": "shosti/wacspace.el",
+  "unstable": {
+   "version": [
+    20180311,
+    2350
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "54d19aab6fd2bc5945b7ffc58104e695064927e2",
+   "sha256": "1nfx1qsl2gxjqbbc5xsr8f3xz2qyb4wnz3634k3hglb1jpa78j3n"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "b951995c204ff23699d2bda515a96221147a725d",
+   "sha256": "0jl3n79wmbxnrbf83qjq0v5pzhvv67i9r5sp2zj8nc86hh7dvjsd"
+  }
+ },
+ {
+  "ename": "waf-mode",
+  "commit": "44c1aa152ba47113a91878df78d9b56eead98744",
+  "sha256": "16rplrs599a67dcxcdc33zb9bqivv4a2mvrshvyip1lp75f36r5h",
+  "fetcher": "git",
+  "url": "https://bitbucket.org/dvalchuk/waf-mode",
+  "unstable": {
+   "version": [
+    20170403,
+    1940
+   ],
+   "commit": "20c75eabd1d54fbce8e0dbef785c9fb68577ee4f",
+   "sha256": "09jqxbkkprsrcj7gj9hi8ll7d17425lyjmdmqf12ffqv5pz6aq87"
+  }
+ },
+ {
+  "ename": "waher-theme",
+  "commit": "c734ba401d7d9255e0934c31ca5269866af035db",
+  "sha256": "091kipkb6z6x9ic4chprim9rvnmx4yj4419ijmvpn70w69aspnb5",
+  "fetcher": "github",
+  "repo": "emacsfodder/emacs-waher-theme",
+  "unstable": {
+   "version": [
+    20141115,
+    1230
+   ],
+   "commit": "60d31519fcfd8e797723d47961b255ae2f2e2c0a",
+   "sha256": "0w59ix8cbbcyhh882c8vkrbh84i8d03h9w7dchr3qy233b8wcxlc"
+  }
+ },
+ {
+  "ename": "wakatime-mode",
+  "commit": "a46036a0e53afbebacafd3bc9545c99af79ccfcc",
+  "sha256": "1rhy2bwkqlha4bj3zmb0iassiglch7yb2kbas0bbpl3d0hdki2i8",
+  "fetcher": "github",
+  "repo": "wakatime/wakatime-mode",
+  "unstable": {
+   "version": [
+    20180920,
+    702
+   ],
+   "commit": "2531cb58287770883ba534d20b3288955c4d6ef3",
+   "sha256": "12wa845lwvwg38801mk880izfhjs50ssy5alj1743c2bz7ig5grk"
+  }
+ },
+ {
+  "ename": "wakib-keys",
+  "commit": "b8ef5ae0dcb92e1cf019be3d53ab9b47d89f45bd",
+  "sha256": "1cgd15zwl15k2bxy3by17pphh6x1z8lanwkfjy4qyp5sxkjvw1cl",
+  "fetcher": "github",
+  "repo": "darkstego/wakib-keys",
+  "unstable": {
+   "version": [
+    20200430,
+    2155
+   ],
+   "commit": "d958150c053dae57445be37cda1c2b50efcbaac3",
+   "sha256": "0fbh10yjva3bfpl76ddsnspzlpmbxj1azr3p4n2z0az75xx24wsa"
+  }
+ },
+ {
+  "ename": "walkclj",
+  "commit": "44472b35938fe70d4cb3d15397495fe321fcd464",
+  "sha256": "0m971dlazildhgj8jqg4x679i6s6p80mbpri7l24ynxk45wix22m",
+  "fetcher": "github",
+  "repo": "plexus/walkclj",
+  "unstable": {
+   "version": [
+    20180718,
+    900
+   ],
+   "deps": [
+    "parseclj",
+    "treepy"
+   ],
+   "commit": "2e54fa813b11d1a87c890cdf117f30165a193024",
+   "sha256": "0bgvniw3ibcjsmzwrndg6pxwbpnpnxsb8ijs2gxg5kbm1hqqly32"
+  }
+ },
+ {
+  "ename": "walkman",
+  "commit": "603a2bf865eb16505504cf20ab1ecfd619cce6dc",
+  "sha256": "1hr5c95pv30l18f0kv0sgn5h46x8989lg4n0kg7bd1kb7k6hc8n1",
+  "fetcher": "github",
+  "repo": "abrochard/walkman",
+  "unstable": {
+   "version": [
+    20200418,
+    1554
+   ],
+   "deps": [
+    "org",
+    "transient"
+   ],
+   "commit": "07a7710084c328dc238626f8b6e7d019380502de",
+   "sha256": "13g8wgcv3qydx6vhznx1iypmlrzl3cm02prrkqp70gjvgblk06nm"
+  }
+ },
+ {
+  "ename": "wallpaper",
+  "commit": "764c5b8438197d6f24113e7b3a696b8327a8d6d9",
+  "sha256": "18wpj5qzac0msp9mi8511kpw6157k7dj9zvzh1y6rhd7a5nd0clg",
+  "fetcher": "github",
+  "repo": "farlado/emacs-wallpaper",
+  "unstable": {
+   "version": [
+    20200408,
+    1353
+   ],
+   "commit": "9fb5be9c2f7279f7ef2860eefd416359b9026ba3",
+   "sha256": "18vm8g4iwf2a9l40bg7cvpdziv10mv24x61z86xwjmnqbr7sxd8q"
+  }
+ },
+ {
+  "ename": "wand",
+  "commit": "38be840bbb32094b753ec169b717a70817006655",
+  "sha256": "052zq5dp800hynd9fb6c645kjb9rp3bpkz41ifazjnx4h4864r0l",
+  "fetcher": "github",
+  "repo": "cmpitg/wand",
+  "unstable": {
+   "version": [
+    20200302,
+    1536
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "731b5ca33269fe563239bff16da6c41489432b80",
+   "sha256": "0r5mbslwf3x0mrndz65w4pp88xii019zg5p6x214zxpr87s75zdp"
+  }
+ },
+ {
+  "ename": "wandbox",
+  "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a",
+  "sha256": "0myyln82nx462bj79acvqxwvmblxild4vbygcrzw5chcwy6crvlz",
+  "fetcher": "github",
+  "repo": "kosh04/emacs-wandbox",
+  "unstable": {
+   "version": [
+    20170603,
+    1231
+   ],
+   "deps": [
+    "request",
+    "s"
+   ],
+   "commit": "e002fe41f2cd9b4ce2b1dc80b83301176e9117f1",
+   "sha256": "0fnbj3k21lisgs94pf8z13cdymmclgpn994xq3xly4gq6l8k0an5"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    4
+   ],
+   "deps": [
+    "request",
+    "s"
+   ],
+   "commit": "e002fe41f2cd9b4ce2b1dc80b83301176e9117f1",
+   "sha256": "0fnbj3k21lisgs94pf8z13cdymmclgpn994xq3xly4gq6l8k0an5"
+  }
+ },
+ {
+  "ename": "wanderlust",
+  "commit": "426172b72026d1adeb1bf3fcc6b0407875047333",
+  "sha256": "0lq7fvqc0isv49lcm7ql6prc3hpcj5cx4kf8f4gcnfv5k8159cq9",
+  "fetcher": "github",
+  "repo": "wanderlust/wanderlust",
+  "unstable": {
+   "version": [
+    20200124,
+    858
+   ],
+   "deps": [
+    "semi"
+   ],
+   "commit": "7af0d582cd48a37469e0606ea35887740d78c8b5",
+   "sha256": "08gr4q5i4z1bs5qbfxmf9imjin1v1qvsk7x37qvr84p16kdr9vxn"
+  }
+ },
+ {
+  "ename": "warm-night-theme",
+  "commit": "312e3298d51b8ed72028df34dbd7620cdd03d8dd",
+  "sha256": "1nrjkrr64rry6fjya22b0lcs0f8a2ijvr87192z311y9mw5rvb29",
+  "fetcher": "github",
+  "repo": "mswift42/warm-night-theme",
+  "unstable": {
+   "version": [
+    20161101,
+    1428
+   ],
+   "commit": "020f084d23409b5035150508ba6e57c2509edd64",
+   "sha256": "1jmjyx06p0cvqi1vlg5px2g965q9pgi3j61msxjf5skzw53vlc88"
+  }
+ },
+ {
+  "ename": "watch-buffer",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "05f58kg05kfl4srwwjaf7w9jml50yx6bn4x8m1npswp882dsjyh9",
+  "fetcher": "github",
+  "repo": "mjsteger/watch-buffer",
+  "unstable": {
+   "version": [
+    20120331,
+    2044
+   ],
+   "commit": "761fd7252e6d7bf5148283c2a7ee935f087d9427",
+   "sha256": "0i84ndnxma8s07kf5ixqyhv5f89mzc4iymgazj5inmxhvbc7s7r2"
+  }
+ },
+ {
+  "ename": "wavefront-obj-mode",
+  "commit": "d48e4fdc6c7079a1ca70c1e879473a98c11bbe6c",
+  "sha256": "0qqismh6g2fvi45q2q52lq0n9nrh95wgamlsy5j4rx4syfgzxbrk",
+  "fetcher": "github",
+  "repo": "abend/wavefront-obj-mode",
+  "unstable": {
+   "version": [
+    20170808,
+    1716
+   ],
+   "commit": "34027915de6496460d8e68b5991dd24d47d54859",
+   "sha256": "0yj4wb5sdsbh3gp0sh2ajrrn6s8vg492809g4gxkxp30jhr6xc9q"
+  }
+ },
+ {
+  "ename": "wc-goal-mode",
+  "commit": "6f003b6d6bc91e6f9e510de8f5f5f9189d1c7334",
+  "sha256": "0l3gh96njjldp7n13jn1zjrp17h7ivjak102j6wwspgg6v2h5419",
+  "fetcher": "github",
+  "repo": "bnbeckwith/wc-goal-mode",
+  "unstable": {
+   "version": [
+    20140829,
+    1359
+   ],
+   "commit": "bf21ab9c5a449bcc20dd207a4915dcec218d2699",
+   "sha256": "0p7j4hvcxfyjf0na9s3xv29dvmwq82s56lincfasd0ydcpz4fbwc"
+  },
+  "stable": {
+   "version": [
+    2,
+    1
+   ],
+   "commit": "a8aa227b1a692dd6399855add84b5e37f6c5d9cb",
+   "sha256": "0mnfk2ys8axjh696cq5msr5cdr91icl1i3mi0dd2y00lvh6sbm7w"
+  }
+ },
+ {
+  "ename": "wc-mode",
+  "commit": "0fda2b54a0ff0b6fc3bd6d20cfcbbf63cae5380f",
+  "sha256": "191dmxfpqnj7d43cr0fhdmj5ldfs7w9zg5pb2lv9wvlfl7asdid6",
+  "fetcher": "github",
+  "repo": "bnbeckwith/wc-mode",
+  "unstable": {
+   "version": [
+    20200108,
+    1841
+   ],
+   "commit": "79107d1130e8be3e1db4619373b98045b4fd9033",
+   "sha256": "01icd63mb2hg1bgbmkq3jm8kc3ic8whfy2awcgx53zqkmyz87qxc"
+  },
+  "stable": {
+   "version": [
+    1,
+    4
+   ],
+   "commit": "79107d1130e8be3e1db4619373b98045b4fd9033",
+   "sha256": "01icd63mb2hg1bgbmkq3jm8kc3ic8whfy2awcgx53zqkmyz87qxc"
+  }
+ },
+ {
+  "ename": "wcheck-mode",
+  "commit": "5d10b59f568fdedf248c2e8eaa06c4a74032ca56",
+  "sha256": "0cmdvhgax6r5svn3wkwll4j271qj70g8182c58riwnkhiajxmn3k",
+  "fetcher": "github",
+  "repo": "tlikonen/wcheck-mode",
+  "unstable": {
+   "version": [
+    20190626,
+    1839
+   ],
+   "commit": "271198bca70c05b4591c836d3c670b72cdfabe9c",
+   "sha256": "19wypzzqfy0xbcbf4gz2c1c1mapp6s68rk0crv71vvjq6dmbq5yz"
+  },
+  "stable": {
+   "version": [
+    2019,
+    6,
+    17
+   ],
+   "commit": "c50e1f565802816a67852213dc31532290704412",
+   "sha256": "18ri9y23fd736d49sa1027k4lh0saw0zyiwds50jk6j9w4rvlzy9"
+  }
+ },
+ {
+  "ename": "wdl-mode",
+  "commit": "8cf1f20913d765ae36ecc2c9a69470ff51124e56",
+  "sha256": "1zhrs0cdsr8mxh9zn8cy6inzxcygk0lgsyw1d190253v1kk6072i",
+  "fetcher": "github",
+  "repo": "zhanxw/wdl-mode",
+  "unstable": {
+   "version": [
+    20180831,
+    1946
+   ],
+   "commit": "cef86e5afc136ae5ad9324cd6e6d6f860b889bcf",
+   "sha256": "0j7sv3dcpq2fvcip9834v6k8q1d8bpnbxnvz1g691lmc58z1a86a"
+  }
+ },
+ {
+  "ename": "weak-ref",
+  "commit": "ef1a6048d197a4feebb8d4ebb6dbfd600bce100e",
+  "sha256": "08c887xkj18j9s92pqlik7x6984y2fi4q7xlqa6wrbmjgl27cl1z",
+  "fetcher": "github",
+  "repo": "skeeto/elisp-weak-ref",
+  "unstable": {
+   "version": [
+    20200217,
+    2200
+   ],
+   "commit": "24e8c37da6465e65ce9f866267bd3fa53c8899c6",
+   "sha256": "0jh3l64sagvm3jdhxk8wwfddckwgk66w1cfn7cchklz0wss82cs2"
+  },
+  "stable": {
+   "version": [
+    2,
+    0
+   ],
+   "commit": "434e7d7cc84d0813bd06606a04c08fc96cd9eec8",
+   "sha256": "1rri4q600vs3fhvvyds6jshjranfvb1zzn6zwy44q5g914ghhnfw"
+  }
+ },
+ {
+  "ename": "weather-metno",
+  "commit": "75beac314565b9becb701ddd9bc85660e268c3ae",
+  "sha256": "0h7p4l8y75h27pgk45f0mk3gjd43jk8q97gjf85a9b0afd63d3f6",
+  "fetcher": "github",
+  "repo": "ruediger/weather-metno-el",
+  "unstable": {
+   "version": [
+    20150901,
+    107
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "bfc7137095e0ee71aad70ac46f2af677f3c051b6",
+   "sha256": "05gfc67724b0mwg8kvk3dsazx3dld50b9xjq8h1nc6jvdz3zxb9z"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b59680c1ab908b32513954034ba894dfb8564dd8",
+   "sha256": "0qx92jqzsimjk92pql2h8pzhq66mqijwqgjqwp7rmq5b6k0nvx1z"
+  }
+ },
+ {
+  "ename": "web",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "141idn49b7x7llz249zbg2yq8snjxpmlpchsd3n1axlrbmx6pfpz",
+  "fetcher": "github",
+  "repo": "nicferrier/emacs-web",
+  "unstable": {
+   "version": [
+    20141231,
+    2001
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "483188dac4bc6b409b985c9dae45f3324a425efd",
+   "sha256": "03xcadplw1hg5hxw6bfrhw5xkkxk3i4105f114c6m3d2525jq4y5"
+  }
+ },
+ {
+  "ename": "web-beautify",
+  "commit": "0d528d3e20b1656dff40860cac0e0fa9dc1a3e87",
+  "sha256": "06ky2svhca8hjgmvxrg3h6ya7prl72q1r88x967yc6b0qq3r7g0f",
+  "fetcher": "github",
+  "repo": "yasuyk/web-beautify",
+  "unstable": {
+   "version": [
+    20161115,
+    2247
+   ],
+   "commit": "e1b45321d8c11b404b12c8e55afe55eaa7c84ee9",
+   "sha256": "03b5pj58m00lkazyvvasa4qndrkh2kjzv2y7qhxljfg5mngyg3zg"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    2
+   ],
+   "commit": "aa95055224c24f38736716809fec487cd817c38d",
+   "sha256": "0vms7zz3ym53wf1zdrkbf2ky2xjr1v134ngsd0jr8azyi8siw84d"
+  }
+ },
+ {
+  "ename": "web-completion-data",
+  "commit": "604f155a3ce7e5375dcf8b9c149c5af403ef48bd",
+  "sha256": "1zzdmhyn6bjaidk808s4pdk25a5rn4287949ps5vbpyniaf6gny9",
+  "fetcher": "github",
+  "repo": "osv/web-completion-data",
+  "unstable": {
+   "version": [
+    20160318,
+    848
+   ],
+   "commit": "c272c94e8a71b779c29653a532f619acad433a4f",
+   "sha256": "19nzjgvd2i5745283ck3k2vylrr6lnk9h3ggzwrwdhyd3m9433vm"
+  },
+  "stable": {
+   "version": [
+    0,
+    2
+   ],
+   "commit": "c272c94e8a71b779c29653a532f619acad433a4f",
+   "sha256": "19nzjgvd2i5745283ck3k2vylrr6lnk9h3ggzwrwdhyd3m9433vm"
+  }
+ },
+ {
+  "ename": "web-mode",
+  "commit": "6f0565555eaa356141422c5175d6cca4e9eb5c00",
+  "sha256": "1vyhyc5nf4yj2m63inpwmcqvlsihaqw8nn8xvfdg44nhl6vjz97i",
+  "fetcher": "github",
+  "repo": "fxbois/web-mode",
+  "unstable": {
+   "version": [
+    20200501,
+    1939
+   ],
+   "commit": "186a7c21049c50ecfd4109eb06c91196404f8bc5",
+   "sha256": "1si8i21ysqwnkq38wr0r4liz3j8v8sj66y46yl6bpw77116fngx9"
+  },
+  "stable": {
+   "version": [
+    17
+   ],
+   "commit": "d115f8dc3052e5779938d782d9cdaa4533ef20ff",
+   "sha256": "0jr5a1nzp8nbdng0k2fcaymiiv9ngrbknbrqaswgqn3akvx793jk"
+  }
+ },
+ {
+  "ename": "web-mode-edit-element",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1kcycsjjv1bzfn93aq3cdh5d913izrr8cdxmknbyriyipsqryh3l",
+  "fetcher": "github",
+  "repo": "jtkDvlp/web-mode-edit-element",
+  "unstable": {
+   "version": [
+    20190531,
+    852
+   ],
+   "deps": [
+    "web-mode"
+   ],
+   "commit": "ad5d7e4dc2420bdd00ce65d9adffbd38a5904afa",
+   "sha256": "143xh6xc7qd88hjjmcs9fd2zlgxl0hhgx5fplhbi9zxd2ihhz0dg"
+  },
+  "stable": {
+   "version": [
+    2,
+    3
+   ],
+   "deps": [
+    "web-mode"
+   ],
+   "commit": "ad5d7e4dc2420bdd00ce65d9adffbd38a5904afa",
+   "sha256": "143xh6xc7qd88hjjmcs9fd2zlgxl0hhgx5fplhbi9zxd2ihhz0dg"
+  }
+ },
+ {
+  "ename": "web-narrow-mode",
+  "commit": "a910da9e0566344d4b195423b5f270cb2bdcc1e5",
+  "sha256": "09k3xp4l235wrffl7a4026wpikxhp10fh3182dlp4pa4wr2vzipi",
+  "fetcher": "github",
+  "repo": "Qquanwei/web-narrow-mode",
+  "unstable": {
+   "version": [
+    20170407,
+    210
+   ],
+   "deps": [
+    "web-mode"
+   ],
+   "commit": "73bdcb7d0701abe65dab4fc295d944885e05ae33",
+   "sha256": "1wg54vyfbacmyh8lyd5fgh88lfby17v24l98jjgxscaqgms86bch"
+  }
+ },
+ {
+  "ename": "web-search",
+  "commit": "503ef2042cc14dbe53e7121b8d0b5ccbdf6c882b",
+  "sha256": "08iflbp6rmsxsy2lahsdjj9ki70ixqhsas0vxzawz5pi5vk2x9gj",
+  "fetcher": "github",
+  "repo": "xuchunyang/web-search.el",
+  "unstable": {
+   "version": [
+    20190620,
+    602
+   ],
+   "commit": "a22cbdc663a1895d5a5b69de91e1e3b9eb64b92f",
+   "sha256": "0nbfgv99c0kmc9imnbqjhamxfdjaj00lhdxjxmrwkvzaiplsa5ra"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "commit": "a22cbdc663a1895d5a5b69de91e1e3b9eb64b92f",
+   "sha256": "0nbfgv99c0kmc9imnbqjhamxfdjaj00lhdxjxmrwkvzaiplsa5ra"
+  }
+ },
+ {
+  "ename": "web-server",
+  "commit": "70e724b4e6c76d0299d5ea8d2211f48c1c611afe",
+  "sha256": "1f0iyvwq1kq3zfxx2v596cmah7jfk2a04g2rjllbgxxnzwms29z3",
+  "fetcher": "github",
+  "repo": "eschulte/emacs-web-server",
+  "unstable": {
+   "version": [
+    20200330,
+    1407
+   ],
+   "commit": "9edf4b5e3c6cea1738acf08241919e00437ec530",
+   "sha256": "1cf2g67q064pnji0hbg0x5ziqmxwim127sd4q849cifxj7a4rqaw"
+  }
+ },
+ {
+  "ename": "webkit-color-picker",
+  "commit": "af9d2e39385c6833eff6b7c7e5a039238563c00f",
+  "sha256": "1i9244zghabyavxhz86d22fn40qspzdn2sjql8pl3mm8ks7a49a3",
+  "fetcher": "github",
+  "repo": "osener/emacs-webkit-color-picker",
+  "unstable": {
+   "version": [
+    20180325,
+    736
+   ],
+   "deps": [
+    "posframe"
+   ],
+   "commit": "765cac80144cad4bc0bf59025ea0199f0486f737",
+   "sha256": "0a6nirdn1l7cymjycbns38ja9an1z4l5lwjk5h428aly3pmkvdqj"
+  }
+ },
+ {
+  "ename": "weblogger",
+  "commit": "e8ccb10a5d1f4db3b20f96dee3c14ee64f4674e2",
+  "sha256": "0k0l715lnqb0a4hlkfjkyhr8i1jaml8z2xzhal7ryhjgvf8xinvs",
+  "fetcher": "github",
+  "repo": "hexmode/weblogger-el",
+  "unstable": {
+   "version": [
+    20110926,
+    1618
+   ],
+   "deps": [
+    "xml-rpc"
+   ],
+   "commit": "b3dd4aead9d3a87e6d85e7fef4f4f3bd40d87b53",
+   "sha256": "03dkabszk6ya3vaps1ap16psk5bbar8zd5ipn1lmyzsbd3hwm8mj"
+  }
+ },
+ {
+  "ename": "webpaste",
+  "commit": "13847d91c1780783e516943adee8a3530c757e17",
+  "sha256": "1pqqapslb5wxfrf1ykrj5jxcl43pix17lawgdqrqkv5fyxbhmfpm",
+  "fetcher": "github",
+  "repo": "etu/webpaste.el",
+  "unstable": {
+   "version": [
+    20200503,
+    1919
+   ],
+   "deps": [
+    "cl-lib",
+    "request"
+   ],
+   "commit": "5e963e8ef17e937745b8f3b64f29690290c7a5c0",
+   "sha256": "1i9scalpinp87wnapgpdw51p1q0y9wjf6nv4jbskzn7irvlkhhzx"
+  },
+  "stable": {
+   "version": [
+    3,
+    1,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "request"
+   ],
+   "commit": "5e963e8ef17e937745b8f3b64f29690290c7a5c0",
+   "sha256": "1i9scalpinp87wnapgpdw51p1q0y9wjf6nv4jbskzn7irvlkhhzx"
+  }
+ },
+ {
+  "ename": "websocket",
+  "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a",
+  "sha256": "1v8jlpahp30lihz7mdznwl6pyrbsdbqznli2wb5gfblnlxil04lg",
+  "fetcher": "github",
+  "repo": "ahyatt/emacs-websocket",
+  "unstable": {
+   "version": [
+    20200419,
+    2124
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "078f83902c0846c00ed8e3b6c5add7ff9b98d8f9",
+   "sha256": "11nacz0vvhaa8582r0ylx5w886y2qysbvrh9s064g979vjyfh9rg"
+  },
+  "stable": {
+   "version": [
+    1,
+    12
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "491a60b8bb8a6c3bd081c70354ab82040b0a7db3",
+   "sha256": "0g0vy2yc118mcka9f26950gdmb780zpxck9y6nli602vj32dw1g2"
+  }
+ },
+ {
+  "ename": "wedge-ws",
+  "commit": "42fb11fe717b5fe73f4a6fa4e199ef4c58a85eb2",
+  "sha256": "07i2dr807np4fwq3ryxlw11vbc1sik1iv7x5740q258jyc9zfgll",
+  "fetcher": "github",
+  "repo": "aes/wedge-ws",
+  "unstable": {
+   "version": [
+    20140714,
+    2149
+   ],
+   "commit": "4669115f02d9c6fee067cc5369bb38c0f9db88b2",
+   "sha256": "19hgb5knqqc4rb8yl8s604xql8ar6m9r4d379cfakn15jvwqnl98"
+  }
+ },
+ {
+  "ename": "weechat",
+  "commit": "e38255a31a4ca31541c97a506a55f82e2670abe6",
+  "sha256": "0sxrms5024bi4irv8x8s8j1zcyd62cpqm0zv4dgpm65wnpc7xc46",
+  "fetcher": "github",
+  "repo": "the-kenny/weechat.el",
+  "unstable": {
+   "version": [
+    20190520,
+    1551
+   ],
+   "deps": [
+    "cl-lib",
+    "s",
+    "tracking"
+   ],
+   "commit": "d9a13306ea8be27367f92e9202d116a88fa1f441",
+   "sha256": "1z9lav09jsmhshlk0xnbp21y9apzhd9zv08h88sdg942v0fn2fid"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "s",
+    "tracking"
+   ],
+   "commit": "8cbda2738149b070c09288df550781b6c604beb2",
+   "sha256": "1i930jaxpva9s6y3fj3nny46b70g4mqdjl54mcv2rzj95bp4f908"
+  }
+ },
+ {
+  "ename": "weechat-alert",
+  "commit": "7a69ad48eabb166f66e6eb5c5cdc75aefc8b989f",
+  "sha256": "026hkddvd4a6wy7s8s0lklw8b99fpjawdgi7amvpcrn79ylwbf22",
+  "fetcher": "github",
+  "repo": "Kungi/weechat-alert",
+  "unstable": {
+   "version": [
+    20160416,
+    1248
+   ],
+   "deps": [
+    "alert",
+    "cl-lib",
+    "weechat"
+   ],
+   "commit": "a8fd557c8f335322f132c1c6c08b6741d6394e2e",
+   "sha256": "1hkhim2jfdywx6ks4qfcizycp5qsx4ms6929kbgmzzb8i7j380x6"
+  }
+ },
+ {
+  "ename": "weibo",
+  "commit": "21f4c1b34f86331ecbcdbdc39858a191232902f2",
+  "sha256": "1ndgfqqb0gvy8p2fisi57s9bsa2nrnv80smg78m89i4cwagbz6yd",
+  "fetcher": "github",
+  "repo": "austin-----/weibo.emacs",
+  "unstable": {
+   "version": [
+    20150307,
+    2242
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "a8abb50b7602fe15fe2bc6400ac29780e956b390",
+   "sha256": "0hc5iyjpcik996ns84akrl28scndmn0gd1zfdf1nnqq6n2m5zvgh"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "a8af467e5660a35342029c2796de99cd551454b2",
+   "sha256": "14vmgfz45wmpjfhfx3pfjn3bak8qvj1zk1w4xc5w1cfl6vnij6hv"
+  }
+ },
+ {
+  "ename": "wgrep",
+  "commit": "9648e3df896fcd97b3757a727108bc78261973cc",
+  "sha256": "09xs420lvbsmz5z28rf6f1iwa0ixkk0w24qbj6zhl9hidh4mv9y4",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-wgrep",
+  "unstable": {
+   "version": [
+    20200217,
+    1030
+   ],
+   "commit": "f0ef9bfa44db503cdb2f83fcfbd2fa4e2382ef1f",
+   "sha256": "1si1nng38ccciy0774gmf4wmz6x199cif357yjqibz1fk31lvk9p"
+  },
+  "stable": {
+   "version": [
+    2,
+    3,
+    2
+   ],
+   "commit": "fcd8c22748024342af15d54f3e7ab5596cf5c4bd",
+   "sha256": "00cwqzb94jlq4mwgv8z7r3mn0a6mhq95z6j189kacq9g4473zh8d"
+  }
+ },
+ {
+  "ename": "wgrep-ack",
+  "commit": "9648e3df896fcd97b3757a727108bc78261973cc",
+  "sha256": "03l1a681cwnn06m77xg0a547892gy8mh415v9rg3h6lkxwcld8wh",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-wgrep",
+  "unstable": {
+   "version": [
+    20200128,
+    109
+   ],
+   "deps": [
+    "wgrep"
+   ],
+   "commit": "f0ef9bfa44db503cdb2f83fcfbd2fa4e2382ef1f",
+   "sha256": "1si1nng38ccciy0774gmf4wmz6x199cif357yjqibz1fk31lvk9p"
+  },
+  "stable": {
+   "version": [
+    2,
+    3,
+    2
+   ],
+   "deps": [
+    "wgrep"
+   ],
+   "commit": "fcd8c22748024342af15d54f3e7ab5596cf5c4bd",
+   "sha256": "00cwqzb94jlq4mwgv8z7r3mn0a6mhq95z6j189kacq9g4473zh8d"
+  }
+ },
+ {
+  "ename": "wgrep-ag",
+  "commit": "2c50b704343c4cac5e2a62a67e284ba6d8e15f8a",
+  "sha256": "1b2mj06kws29ha7g16l5d1s3p3nwyw8rprbpaiijdk9nxqcm0a8a",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-wgrep",
+  "unstable": {
+   "version": [
+    20200217,
+    1028
+   ],
+   "deps": [
+    "wgrep"
+   ],
+   "commit": "f0ef9bfa44db503cdb2f83fcfbd2fa4e2382ef1f",
+   "sha256": "1si1nng38ccciy0774gmf4wmz6x199cif357yjqibz1fk31lvk9p"
+  },
+  "stable": {
+   "version": [
+    2,
+    3,
+    2
+   ],
+   "deps": [
+    "wgrep"
+   ],
+   "commit": "fcd8c22748024342af15d54f3e7ab5596cf5c4bd",
+   "sha256": "00cwqzb94jlq4mwgv8z7r3mn0a6mhq95z6j189kacq9g4473zh8d"
+  }
+ },
+ {
+  "ename": "wgrep-helm",
+  "commit": "9648e3df896fcd97b3757a727108bc78261973cc",
+  "sha256": "1hh7isc9xifkrdfw88jw0z0xmfazrbcis6d355bcaxlnjy6fzm8b",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-wgrep",
+  "unstable": {
+   "version": [
+    20200128,
+    109
+   ],
+   "deps": [
+    "wgrep"
+   ],
+   "commit": "f0ef9bfa44db503cdb2f83fcfbd2fa4e2382ef1f",
+   "sha256": "1si1nng38ccciy0774gmf4wmz6x199cif357yjqibz1fk31lvk9p"
+  },
+  "stable": {
+   "version": [
+    2,
+    3,
+    2
+   ],
+   "deps": [
+    "wgrep"
+   ],
+   "commit": "fcd8c22748024342af15d54f3e7ab5596cf5c4bd",
+   "sha256": "00cwqzb94jlq4mwgv8z7r3mn0a6mhq95z6j189kacq9g4473zh8d"
+  }
+ },
+ {
+  "ename": "wgrep-pt",
+  "commit": "c39faef3b9c2e1867cd48341d9878b714dbed4eb",
+  "sha256": "1gphdf85spsywj3s3ypb7dwrqh0zd70n2vrbgjqkbnfbwqjp9qbg",
+  "fetcher": "github",
+  "repo": "mhayashi1120/Emacs-wgrep",
+  "unstable": {
+   "version": [
+    20200128,
+    109
+   ],
+   "deps": [
+    "wgrep"
+   ],
+   "commit": "f0ef9bfa44db503cdb2f83fcfbd2fa4e2382ef1f",
+   "sha256": "1si1nng38ccciy0774gmf4wmz6x199cif357yjqibz1fk31lvk9p"
+  },
+  "stable": {
+   "version": [
+    2,
+    3,
+    2
+   ],
+   "deps": [
+    "wgrep"
+   ],
+   "commit": "fcd8c22748024342af15d54f3e7ab5596cf5c4bd",
+   "sha256": "00cwqzb94jlq4mwgv8z7r3mn0a6mhq95z6j189kacq9g4473zh8d"
+  }
+ },
+ {
+  "ename": "what-the-commit",
+  "commit": "6d22725c2fce506c659bd33aabca182be0048905",
+  "sha256": "0nnyb6hq6r21wf1x3q41ab48b3dmcz5lyli771a59dk1gs8qpgak",
+  "fetcher": "github",
+  "repo": "danielbarbarito/what-the-commit.el",
+  "unstable": {
+   "version": [
+    20150901,
+    1316
+   ],
+   "commit": "868c80a1b8614bcbd2225cd0290142c72f2a7956",
+   "sha256": "04w62davpqqqvympkr52bg54c2i45p09q9bs70p9ff5jvc6i3g76"
+  }
+ },
+ {
+  "ename": "which-key",
+  "commit": "315865a3df97c0694f648633d44b8b34df1ac76d",
+  "sha256": "0vqbhfzcv9m58w41zdhpiymhgl38n15c6d7ffd99narxlkckcj59",
+  "fetcher": "github",
+  "repo": "justbur/emacs-which-key",
+  "unstable": {
+   "version": [
+    20200216,
+    1350
+   ],
+   "commit": "8b49ae978cceca65967f3544c236f32964ddbed0",
+   "sha256": "15ydzqv23m1w6g27il57fmzs6pjcasdb7drml3msjpq2l8kr4ard"
+  },
+  "stable": {
+   "version": [
+    3,
+    4,
+    0
+   ],
+   "commit": "1e3640e48c31f8062f018b5fc84acad696a0ea2a",
+   "sha256": "1ahgb7dqdc75farkl0fg0a6hvx2067gdvjq99cd3z2dz56km0p05"
+  }
+ },
+ {
+  "ename": "which-key-posframe",
+  "commit": "56ab10dc99ea4f5b207f9874124aff414d859a17",
+  "sha256": "1vpdni3ascz2zw6k1xrnw2vqnq8p30mc7d8v81qdbjb58q27l8ll",
+  "fetcher": "github",
+  "repo": "yanghaoxie/which-key-posframe",
+  "unstable": {
+   "version": [
+    20190427,
+    1103
+   ],
+   "deps": [
+    "posframe",
+    "which-key"
+   ],
+   "commit": "e7f28608c7fc9507e407c6b840dff09062df533a",
+   "sha256": "0954llm57gfy3lvq8s32mqdswbv20na0v28gi61kw7023f1wg7ri"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "posframe",
+    "which-key"
+   ],
+   "commit": "75e73e187da78d823a5dc01c21e09e808e4fb938",
+   "sha256": "1ay6qnil7xmml95yiax191fs85mpjkpr0r9314zlf0mf7ip9hvpy"
+  }
+ },
+ {
+  "ename": "whitaker",
+  "commit": "4b5d717e2eaf35ce33b26be049a39f2f75a7de72",
+  "sha256": "17fnvb3jh6fi4wddn5qnp6i6ndidg8jf9ac69q9j032c2msr07nj",
+  "fetcher": "github",
+  "repo": "Fuco1/whitaker",
+  "unstable": {
+   "version": [
+    20150814,
+    1122
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "eaf26ea647b729ca705b73ea70312d5ffdf89448",
+   "sha256": "1y75cylvqgn54h8yqahz4wi1qj5yhbs66i7x23jmbmah3q0rycab"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "28172edce0f727f0f7f17d8ba71d5510d877bb45",
+   "sha256": "01fwhrfi92pcrwc4yn03pflc9wj07mhzj0a0i5amar4f9bj6m5b4"
+  }
+ },
+ {
+  "ename": "white-sand-theme",
+  "commit": "b124575c4a4f783b6726d0526b83e67b4ad65cc9",
+  "sha256": "19qsiic6yf7g60ygjmw7kg1i28nqpm3zja8cmdh33ny2bbkwxsz5",
+  "fetcher": "github",
+  "repo": "mswift42/white-sand-theme",
+  "unstable": {
+   "version": [
+    20151117,
+    1648
+   ],
+   "commit": "97621edd69267dd143760d94393db2c2558c9ea4",
+   "sha256": "0sh92g5vd518f80klvljqkjpw4ji909439dpc3sfaccf5jiwn9xn"
+  }
+ },
+ {
+  "ename": "white-theme",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "04l5hjhd465w9clrqc4dr8bx8hj4i9dx4nfr9hympgv101bpgy4x",
+  "fetcher": "github",
+  "repo": "anler/white-theme.el",
+  "unstable": {
+   "version": [
+    20160917,
+    1743
+   ],
+   "commit": "e9e6d5b9d43da6eb15e86f5fbc8b1ba83abe8c78",
+   "sha256": "1yqfq1gzkrw79myvj16nfi30ynfyz8yrpbzjcj8nhsc5rfrrmym2"
+  }
+ },
+ {
+  "ename": "whitespace-cleanup-mode",
+  "commit": "b461cfe450d7ce6bd0c14be3460cacffc1a32e6f",
+  "sha256": "1fhdjrxxyfx4xsgfjqq9p7vhj98wmqf2r00mv8k27vdaxwsnm5p3",
+  "fetcher": "github",
+  "repo": "purcell/whitespace-cleanup-mode",
+  "unstable": {
+   "version": [
+    20200304,
+    2227
+   ],
+   "commit": "5fac49636cd72a0043e2473c9a09a788cfd68d5f",
+   "sha256": "0myx8vayakmhb5hbrskk58rkb1f0jdw7kinvk8fvv73g050yk28d"
+  },
+  "stable": {
+   "version": [
+    0,
+    10
+   ],
+   "commit": "e1e250aa6f5b1a526778c7a501cdec98ba29c0a4",
+   "sha256": "0xmwhybb8x6wwfr55ym5xg4dhy1aqx1abxy9qskn7h3zf1z4pgg2"
+  }
+ },
+ {
+  "ename": "whizzml-mode",
+  "commit": "11f26b15c326c3b8541bac510579b32493916042",
+  "sha256": "0gas9xfpz5v9fbhjxhd4msihwz9w4a05l5icsaclxvh06f92wcyk",
+  "fetcher": "github",
+  "repo": "whizzml/whizzml-mode",
+  "unstable": {
+   "version": [
+    20191216,
+    1743
+   ],
+   "commit": "65fa17f8c1dc50dcb90277b64019c2846a317293",
+   "sha256": "0swlmzfrxpv3slssmpad3hgxfxlmi8jp3422mvcsg9xbdslg2qb5"
+  },
+  "stable": {
+   "version": [
+    0,
+    35,
+    1
+   ],
+   "commit": "65fa17f8c1dc50dcb90277b64019c2846a317293",
+   "sha256": "0swlmzfrxpv3slssmpad3hgxfxlmi8jp3422mvcsg9xbdslg2qb5"
+  }
+ },
+ {
+  "ename": "whois",
+  "commit": "719895d3db6daae5df00d4823a62fcc0f7bf2d9d",
+  "sha256": "061jbk97ma21id0vpkvxdslfvs2x0wqw8c32mwhdcqjqjc74k9km",
+  "fetcher": "github",
+  "repo": "lassik/emacs-whois",
+  "unstable": {
+   "version": [
+    20200409,
+    1538
+   ],
+   "commit": "907abd9538c4a1e088853b816af883e5040fc430",
+   "sha256": "1qfkppciijyyg76idqqzjy351rki8y4pffwicprnrhv1qixfhdvv"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "b4cdab4d25225c6e834727a7d85cdb0d493da152",
+   "sha256": "058wym1iwgz5n5yd508xdc05ncdyqbs53a5c9mq0s6gs06h5xfyw"
+  }
+ },
+ {
+  "ename": "whole-line-or-region",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0zz9i1jxayw2p6ggfxjvhb1mc3ly9iy4jvk23ycndz9lnnzkch0y",
+  "fetcher": "github",
+  "repo": "purcell/whole-line-or-region",
+  "unstable": {
+   "version": [
+    20200305,
+    221
+   ],
+   "commit": "71f84725e2643b2ee74f27c60c4fd8b79c9c3c97",
+   "sha256": "1rs446cwbp6i79wi7srzaxg9hdahagcjkjill34j70hdy1r4xjas"
+  },
+  "stable": {
+   "version": [
+    1,
+    6
+   ],
+   "commit": "0d11174ba5e1145167000aa8f65c273a3d0db6b3",
+   "sha256": "1zw4aabadhsn81i3bwdl4717fq6a0njypavw2riyzbz465axd60i"
+  }
+ },
+ {
+  "ename": "wide-column",
+  "commit": "8d29def44ae42dc4b60c1d254a57572bd09faf51",
+  "sha256": "1kyyvq9fgaypvhiy9vbvr99xsac5vhylkbjsxn5fhylyc5n867sb",
+  "fetcher": "github",
+  "repo": "phillord/wide-column",
+  "unstable": {
+   "version": [
+    20170925,
+    1613
+   ],
+   "commit": "ce9ef4675485a7bea381077866368ef875226b10",
+   "sha256": "0qh8hy4jl59bfg4323a8h4q4a78gn4hsglfk2h23hqssbv4mhsp2"
+  }
+ },
+ {
+  "ename": "widget-mvc",
+  "commit": "76d3c38e205076a22628f490d8e8ddd80d091eab",
+  "sha256": "0njzvdlxb7z480r6dvmksgivhz7rvnil517aj86qx0jbc5mr3l2f",
+  "fetcher": "github",
+  "repo": "kiwanami/emacs-widget-mvc",
+  "unstable": {
+   "version": [
+    20150102,
+    406
+   ],
+   "commit": "ff5a85880df7b87f9f480fe3c28438a0712b7b87",
+   "sha256": "1s0srhklmkmj3lfs8vr1dqi3s48z7fwx9mxqxckk5njld317hqg7"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    2
+   ],
+   "commit": "2576e6f0c35d8dedfa9c2cd6ea4fb4c14cb72b63",
+   "sha256": "0fqv63m8z5m5ghh4j8ccdnmgcdkvi4jqpg9z7lp17g4p9pq3xfjf"
+  }
+ },
+ {
+  "ename": "widgetjs",
+  "commit": "78d7a15152f45a193384741fa00d0649c4bba91e",
+  "sha256": "0y5h1ag2m7w47l4nx4d18yz3fvd411rm1h5w7zz4xh67bnx4zyy1",
+  "fetcher": "github",
+  "repo": "foretagsplatsen/emacs-js",
+  "unstable": {
+   "version": [
+    20160719,
+    1504
+   ],
+   "deps": [
+    "js2-mode",
+    "js2-refactor",
+    "makey",
+    "s"
+   ],
+   "commit": "1de068d49a6b5faf8754d217bdaa2cbfc903a9fc",
+   "sha256": "04gfhjpn4q8d4y6177gdffwjbqq627083pff2ckw79pbvlj9f2mm"
+  }
+ },
+ {
+  "ename": "wiki-nav",
+  "commit": "baa49e7d2d5c07ebf77e7941c240b88fcfd0fc8b",
+  "sha256": "19mabz0y3fcqsm68ijwwbbqylxgp71anc0a31zgc1blha9jivvwy",
+  "fetcher": "github",
+  "repo": "rolandwalker/button-lock",
+  "unstable": {
+   "version": [
+    20200309,
+    1323
+   ],
+   "deps": [
+    "button-lock",
+    "nav-flash"
+   ],
+   "commit": "9afe0f4d05910b0cccc94cb6d4d880119f3b0528",
+   "sha256": "1d893isxvchrqxw6iaknbv8l31rgalfc4hmppf0l87gxp5y9hxa2"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    2
+   ],
+   "deps": [
+    "button-lock",
+    "nav-flash"
+   ],
+   "commit": "cd0bf4a3c2f224d851e6ed8a54a6e80c129b225f",
+   "sha256": "1kqcc1d56jz107bswlzvdng6ny6qwp93yck2i2j921msn62qvbb2"
+  }
+ },
+ {
+  "ename": "wiki-summary",
+  "commit": "31877f182ab82fd5bb73ec4ddd8526a032d9edf9",
+  "sha256": "1hiyi3w6rvins8hfxd96bgpihxarmv192q96sadqcwshcqi14zmw",
+  "fetcher": "github",
+  "repo": "jozefg/wiki-summary.el",
+  "unstable": {
+   "version": [
+    20181010,
+    1824
+   ],
+   "commit": "fa41ab6e50b3b80e54148af9d4bac18fd0405000",
+   "sha256": "0qcnqwiylkkb7132bzra49k7jg8kq13jif8096vpg4xzpcq5lpj2"
+  }
+ },
+ {
+  "ename": "wilt",
+  "commit": "eea4f2ca8b4f9ea93cc02151fdda6cfee5b68b70",
+  "sha256": "0nw6zr06zq60j72qfjmbqrxyz022fnisb0bsh6xmlnd1k1kqlrz6",
+  "fetcher": "github",
+  "repo": "sixty-north/emacs-wilt",
+  "unstable": {
+   "version": [
+    20180220,
+    854
+   ],
+   "deps": [
+    "dash",
+    "s"
+   ],
+   "commit": "04dbe37fa35d0b24c791421785d2c97a8cbfe2cc",
+   "sha256": "197kqp22pyy1in2rq063mahvrf00vrfvgnfkqp0zy7hpkhiiqvim"
+  }
+ },
+ {
+  "ename": "win-switch",
+  "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a",
+  "sha256": "1s6inp5kf763rngn58r02fd7n7z3dd55j6hb7s9dgvc856d5z3my",
+  "fetcher": "github",
+  "repo": "genovese/win-switch",
+  "unstable": {
+   "version": [
+    20161009,
+    1627
+   ],
+   "commit": "954eb5e4c5737f0c06368c42a7f1c3dd374d782f",
+   "sha256": "1xpx4sc1g1w8w0yc39k2dys83m8skrpvi745bfrzdl47jngrf54h"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    4
+   ],
+   "commit": "954eb5e4c5737f0c06368c42a7f1c3dd374d782f",
+   "sha256": "1xpx4sc1g1w8w0yc39k2dys83m8skrpvi745bfrzdl47jngrf54h"
+  }
+ },
+ {
+  "ename": "windata",
+  "commit": "84f836338818946a6bb31d35d6ae959571128ed5",
+  "sha256": "1mah2vy46pxwjd6c6ac14d2qfcixs2yrgwmzmisnfgsvprdlxryb",
+  "fetcher": "github",
+  "repo": "emacsorphanage/windata",
+  "unstable": {
+   "version": [
+    20090830,
+    1040
+   ],
+   "commit": "a723fc446ceaec23d5f29ecc8245d94c99d91625",
+   "sha256": "0y8yw5hazsir5kjskrh4mr63mmz87dc7yy5ddmlwpmn03wanqpha"
+  }
+ },
+ {
+  "ename": "window-end-visible",
+  "commit": "c9db386ab3910940addae6e925b2ac17e64e0f87",
+  "sha256": "1p78n7yysj18404cdc6vahfrzwn5pixyfnja8ch48rj4fm4jbxwq",
+  "fetcher": "github",
+  "repo": "rolandwalker/window-end-visible",
+  "unstable": {
+   "version": [
+    20140508,
+    2041
+   ],
+   "commit": "525500fb2ebc08f3f9ea493972e5f2e1d79f89ef",
+   "sha256": "0g69r64gyz4p3k6n8l0i1837mszycbrp23acnp0iy0y3mg67x3pn"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "commit": "bdc3d182e5f76e75f1b8cc49357194b36e48b67c",
+   "sha256": "049bwa5g0z1b9nrsc1vc4511aqcq9fvl16xg493wj651g6q9qigb"
+  }
+ },
+ {
+  "ename": "window-jump",
+  "commit": "d44fc32e12f00bbaa799b4054e9ff0fc0d3bfbfb",
+  "sha256": "1gmqb7j5fb3q3krgx7arrln5nvyg9vcpph6wlxj6py679wfa3lwr",
+  "fetcher": "github",
+  "repo": "chumpage/chumpy-windows",
+  "unstable": {
+   "version": [
+    20170809,
+    2208
+   ],
+   "commit": "6bdb51e9a346907d60a9625f6180bddd06be6674",
+   "sha256": "1wkyvfqmf24c8kb162pwi6wcm88bzf0x9mxljzkx0s8bq9aliny6"
+  }
+ },
+ {
+  "ename": "window-layout",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "061mvxcj4mg2pmkln7nn6gyscs08aid4cfc6xck0x5gzr1snr639",
+  "fetcher": "github",
+  "repo": "kiwanami/emacs-window-layout",
+  "unstable": {
+   "version": [
+    20170215,
+    33
+   ],
+   "commit": "cd2e4f967b610c2bbef53182829e47250d027056",
+   "sha256": "0wgqi8r844lbx52fn6az8c1n8m681rp6dkfzd54wmdk1ka7zmvv6"
+  },
+  "stable": {
+   "version": [
+    1,
+    4
+   ],
+   "commit": "cd2e4f967b610c2bbef53182829e47250d027056",
+   "sha256": "0wgqi8r844lbx52fn6az8c1n8m681rp6dkfzd54wmdk1ka7zmvv6"
+  }
+ },
+ {
+  "ename": "window-number",
+  "commit": "74523af6e22ebae2f5fe7c4da4e8af8fac5fa074",
+  "sha256": "1ivd701h6q48i263fxxi44haacaz8cjg562ry8dxd10rbhhsjsq0",
+  "fetcher": "github",
+  "repo": "nikolas/window-number",
+  "unstable": {
+   "version": [
+    20170801,
+    151
+   ],
+   "commit": "d41722de646ffeb3f70d26e4a86a5a1ba5c6be87",
+   "sha256": "1ifs7zp8c5m9da5dz0y4cq7pgqgdkz63v00ib07xdycnfjp4w17i"
+  }
+ },
+ {
+  "ename": "window-numbering",
+  "commit": "ce1dc80f69894736b276885e4ec3ce571a8612c9",
+  "sha256": "0x3n0ni16q69lfpyjz61spqghmhvc3cwa4aj80ihii3pk80f769x",
+  "fetcher": "github",
+  "repo": "nschum/window-numbering.el",
+  "unstable": {
+   "version": [
+    20160809,
+    1810
+   ],
+   "commit": "10809b3993a97c7b544240bf5d7ce9b1110a1b89",
+   "sha256": "1nlgzrjg5k7wyaka8ziqyv683vsc0f2lw5kr5xajcqlamwbzs7vi"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    2
+   ],
+   "commit": "653afce73854d629c2b9d63dad73126032d6a24c",
+   "sha256": "1rz2a1l3apavsknlfy0faaivqgpj4x9jz3hbysbg9pydpcwqgf64"
+  }
+ },
+ {
+  "ename": "window-purpose",
+  "commit": "5813120ab674f6db7d0a486433d8faa6cfec1727",
+  "sha256": "1y70jrba3gf9fyf2qdihfshbsblzb88yv9fkcswdzrpq5kmgwp84",
+  "fetcher": "github",
+  "repo": "bmag/emacs-purpose",
+  "unstable": {
+   "version": [
+    20190628,
+    1827
+   ],
+   "deps": [
+    "imenu-list",
+    "let-alist"
+   ],
+   "commit": "f6421966761ad911fe8861aba2b110c5dd60d1ea",
+   "sha256": "1p0y5gnrw7q65py2wjdf1hrdpiw5c2zbgvfbfmb13257jq5mga38"
+  },
+  "stable": {
+   "version": [
+    1,
+    7
+   ],
+   "deps": [
+    "imenu-list",
+    "let-alist"
+   ],
+   "commit": "a302340e183d20baa4445858d321f43449298829",
+   "sha256": "1dpy8hkjn87wbdkzyabhay4jx4dgc0ab2flyf0rjq1qaazk393sc"
+  }
+ },
+ {
+  "ename": "winds",
+  "commit": "43a07dc1e9af8f832330131764147907826e06e5",
+  "sha256": "1a5kw44pyilgaydyp87his41b2hw0xijp6sggl7bd60jwgspa0wy",
+  "fetcher": "github",
+  "repo": "Javyre/winds.el",
+  "unstable": {
+   "version": [
+    20200501,
+    419
+   ],
+   "commit": "720a0cedfdc20940f4c740e74fa0e16983cb0367",
+   "sha256": "00s0c2ilmypygqlrfa0ajig25h5jijxwwzpcfxgwbjf71wn5g9mg"
+  }
+ },
+ {
+  "ename": "windsize",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1fzqf86d7pimnc87xdgvpv4hnv7j6ngmk1sjvazj6726xygswkyv",
+  "fetcher": "github",
+  "repo": "grammati/windsize",
+  "unstable": {
+   "version": [
+    20181029,
+    2257
+   ],
+   "commit": "62c2846bbe95b0a73e996c75e4a644d05f57aaaa",
+   "sha256": "13kfrmv3vmkfanxv9nym5v43hx5p7xkgqmx65zcxh4gcbaham1mi"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "014b0836f9ffe45fa7e0ccc84576fbef74815a59",
+   "sha256": "1f4v0xd341qs4kfnjqhgf8j26valvg6pz4rwcz0zj0s23niy2yil"
+  }
+ },
+ {
+  "ename": "windwow",
+  "commit": "12aba18872021ce0affa96c46a17353c7d073ca2",
+  "sha256": "0cbkp98pwzj484akdbidvdz4kqxv6ix6paimpxnag6fffciq245h",
+  "fetcher": "github",
+  "repo": "vijumathew/windwow",
+  "unstable": {
+   "version": [
+    20170816,
+    148
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "77bad26f651744b68d31b389389147014d250f23",
+   "sha256": "0vbmmf8wm76k389g5ncs0grwlpwp3glpwvhdi5dfxaqcp2phaaad"
+  }
+ },
+ {
+  "ename": "winnow",
+  "commit": "58891c2057ec834f999e3bf82af15e0617a4d4cf",
+  "sha256": "07kwjdmvzgvg7gc53dv10jfi212m0pimzrhiga38lrqrnrw631m0",
+  "fetcher": "github",
+  "repo": "dgtized/winnow.el",
+  "unstable": {
+   "version": [
+    20170903,
+    1206
+   ],
+   "commit": "18cb6b94338f3b7b4f2cd0331dad22f82dd9e0d3",
+   "sha256": "1wp00zxxcibvl6vjwmvhkgcbi76dyb2g8c30wy4kp7876cpc8hgv"
+  }
+ },
+ {
+  "ename": "winpoint",
+  "commit": "665e24e490618c7caeae4a9d17d1f614dc0a2617",
+  "sha256": "10ji7xd9ipmy6c2qxljqdxgqf5sb8h7lwz43mr6ixbn7v1b7pp6w",
+  "fetcher": "github",
+  "repo": "jorgenschaefer/winpoint",
+  "unstable": {
+   "version": [
+    20131023,
+    1713
+   ],
+   "commit": "e6050093c076308184566fa1d1012423d6934773",
+   "sha256": "1qrbvidnmgg7jyasb28bc0z1x4a4ayzq5jmv38dsx0qs080s85wy"
+  }
+ },
+ {
+  "ename": "winring",
+  "commit": "2476a28c33502f908b7161c5a9c63c86b8d7b57d",
+  "sha256": "1mgr5z4h7mf677xx8md3pqd31k17qs62z9iamfih206fcwgh24k4",
+  "fetcher": "gitlab",
+  "repo": "warsaw/winring",
+  "unstable": {
+   "version": [
+    20180530,
+    18
+   ],
+   "commit": "f2d072bd446b73e93b127523f19ea82b99b9267f",
+   "sha256": "1j0g52panhx91hqw5glnlv5vnnpnjyx49xc8xif8mjf0m27723fv"
+  },
+  "stable": {
+   "version": [
+    5,
+    1
+   ],
+   "commit": "f2d072bd446b73e93b127523f19ea82b99b9267f",
+   "sha256": "1j0g52panhx91hqw5glnlv5vnnpnjyx49xc8xif8mjf0m27723fv"
+  }
+ },
+ {
+  "ename": "winum",
+  "commit": "c1caa7a54a910a44322fdee300e8cce6ddcde071",
+  "sha256": "0yyvjmvqif6glh9ri6049nxcmgib9mxdhy6816kjhsaqr570f9pw",
+  "fetcher": "github",
+  "repo": "deb0ch/emacs-winum",
+  "unstable": {
+   "version": [
+    20190911,
+    1607
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "c5455e866e8a5f7eab6a7263e2057aff5f1118b9",
+   "sha256": "0lj4cp7ml7cjhkd66f6ivcl6sbfs2my8ajjlynzl3pm5qansfw5i"
+  },
+  "stable": {
+   "version": [
+    2,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "dash"
+   ],
+   "commit": "efcb14fd306afbc738666e6b2e5a8a1bb5904392",
+   "sha256": "0v1qmw3svydk7dlqbcymy1g1bygkfpb2h4b97zdp12xvd8mww9ny"
+  }
+ },
+ {
+  "ename": "wisp-mode",
+  "commit": "5b7972602399f9df9139cff177e38653bb0f43ed",
+  "sha256": "10zkp1qbvl8dmxij7zz4p1fixs3891xr1nr57vyb3llar9fgzglc",
+  "fetcher": "bitbucket",
+  "repo": "ArneBab/wisp",
+  "unstable": {
+   "version": [
+    20191114,
+    2340
+   ],
+   "commit": "91ec8dc32652811861116e6f750f0fb41b21b771",
+   "sha256": "0nc9c1agzhmlbh4ijjrsa9yx19hvxzk06gv6p4pgrlx1yg2khnli"
+  }
+ },
+ {
+  "ename": "wispjs-mode",
+  "commit": "a628330ee8deeab2bd5c2d4b61b33f119c4549d8",
+  "sha256": "0qzm0dcvjndasnbqpkdc56f1qv66gxv8dfgfcwq5l1bp5wyx813p",
+  "fetcher": "github",
+  "repo": "krisajenkins/wispjs-mode",
+  "unstable": {
+   "version": [
+    20170720,
+    1919
+   ],
+   "deps": [
+    "clojure-mode"
+   ],
+   "commit": "60f9f5fd9d1556e2d008939f67eb1b1d0f325fa8",
+   "sha256": "1hhd8ixb2wr06vrd1kw0cd5jh08zm86h2clbvzv9wmqpawwxfm5f"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "deps": [
+    "clojure-mode"
+   ],
+   "commit": "be094c3c3223c07b26b5d8bb8fa7aa6866369b3f",
+   "sha256": "188h1sy4mxzrkwi3zgiw108c5f71rkj5agdkf9yy9v8c1bkawm4x"
+  }
+ },
+ {
+  "ename": "with-editor",
+  "commit": "8c52c840dc35f3fd17ec660e113ddbb53aa99076",
+  "sha256": "1wsl1vwvywlc32r5pcc9jqd0pbzq1sn4fppxk3vwl0s5h40v8rnb",
+  "fetcher": "github",
+  "repo": "magit/with-editor",
+  "unstable": {
+   "version": [
+    20200217,
+    1015
+   ],
+   "deps": [
+    "async"
+   ],
+   "commit": "f25a70777d9d9c90a52249791578bd72f1b7dfd7",
+   "sha256": "1vb6dw07vx3zqqb1h457f9957yja8wfqcjcfcf3m78dah3l2qmr1"
+  },
+  "stable": {
+   "version": [
+    2,
+    9,
+    1
+   ],
+   "deps": [
+    "async"
+   ],
+   "commit": "7e0bf753709f1775d2bbbb6edf4482fca7fd286a",
+   "sha256": "1y4zrgsfs0504ks30qb7hl32ygd3hb6yx5x8032b30j7rh5ks29d"
+  }
+ },
+ {
+  "ename": "with-emacs",
+  "commit": "0a32fe5253ae3ac5571444b06320b20d3deff5e4",
+  "sha256": "0k453yyn4jajxhflpmy77f3sd5dc7vc55v5isyvkf1kxsbxvc7pf",
+  "fetcher": "github",
+  "repo": "twlz0ne/with-emacs.el",
+  "unstable": {
+   "version": [
+    20200210,
+    1543
+   ],
+   "commit": "9f99bec56f87e53deb9f33b364eda77677a17eb9",
+   "sha256": "0ay860skpnbv6a8xid0hhz9vx33ks2vkdicvpm3a4qngp932jvnp"
+  }
+ },
+ {
+  "ename": "with-namespace",
+  "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a",
+  "sha256": "1199k1xvvv7ald6ywrh2sfpw2v42ckpcsw6mcj617bg3b5m7770i",
+  "fetcher": "github",
+  "repo": "Wilfred/with-namespace.el",
+  "unstable": {
+   "version": [
+    20130407,
+    1822
+   ],
+   "deps": [
+    "dash",
+    "loop"
+   ],
+   "commit": "8ac52da3a09cf46087720e30cf730d00f140cde6",
+   "sha256": "1c7g8f3jr7bb0xxprammfg433gd63in5iiiaq8rjmc94h6hdcys3"
+  }
+ },
+ {
+  "ename": "with-proxy",
+  "commit": "295a85f94a804b72475b81b324a6120569b8134a",
+  "sha256": "18453b3687iywd62vnh47yig998l6c8vbc9py1rba1m6a9q01vq0",
+  "fetcher": "github",
+  "repo": "twlz0ne/with-proxy.el",
+  "unstable": {
+   "version": [
+    20200510,
+    414
+   ],
+   "commit": "93b1ed2f3060f305009fa71f4fb5bb10173a10e3",
+   "sha256": "15cwpg1s563pw44f8vr96w31hbpix9jd3736hd5546a79ymq5vz3"
+  }
+ },
+ {
+  "ename": "with-shell-interpreter",
+  "commit": "dc61e8f90dbae7184228b16de447ce1ede630a1c",
+  "sha256": "0qjr7j3jv20ja94ma0rk4rr0fx6vazqp25sgc806xl034ax669y9",
+  "fetcher": "github",
+  "repo": "p3r7/with-shell-interpreter",
+  "unstable": {
+   "version": [
+    20200510,
+    1621
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "8d78bfeffa8a7bb4973395417d6fe21e4840ee16",
+   "sha256": "0ygbabavrhl9xmxmqaxrjkhyf7ar5lin5v1ay94hzr1v1lyiyc9h"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "5ff0c8bc0b99b28d6c696e56cd7f44c7aa9ccaf1",
+   "sha256": "00dc0b0kj8215z14brwmzryb73w1j82r136a03n3pnczfh2l9z4n"
+  }
+ },
+ {
+  "ename": "with-simulated-input",
+  "commit": "e4ddf16e19f5018106a423327ddc7e7499cf9248",
+  "sha256": "0113la76nbp18vaffsd7w7wcw5k2sqwgnjq1gslf4khdfqghrkwk",
+  "fetcher": "github",
+  "repo": "DarwinAwardWinner/with-simulated-input",
+  "unstable": {
+   "version": [
+    20200509,
+    2010
+   ],
+   "commit": "0d5e910f19657ab376f72e5848be50d13d3b8e50",
+   "sha256": "1ksm11k8gxkjn9byacy08xrz91gvzyf7fjnxv7j5ffpsccbh0wg3"
+  },
+  "stable": {
+   "version": [
+    2,
+    4
+   ],
+   "deps": [
+    "s",
+    "seq"
+   ],
+   "commit": "3d881793521c5618cdb0968a85879e0e49da7fca",
+   "sha256": "12d3mhvzj74qwc4rdcb236jbqnf5lam8pk78j92kwbwjk1jaz2cf"
+  }
+ },
+ {
+  "ename": "with-venv",
+  "commit": "555a2e49f18fbae59913459466babf8d55bd2151",
+  "sha256": "090jird410wn2w9pwr2d9pjw5xghcdxc4l578zay2akygg3c6blm",
+  "fetcher": "github",
+  "repo": "10sr/with-venv-el",
+  "unstable": {
+   "version": [
+    20200125,
+    1620
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "51ba19ac75a2796d494587b3b20ce51d4eb178a5",
+   "sha256": "1nbw88727spdgivrafjnlzbda81nnd1xprqdgmy6h2xfvki23zzb"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d12341b93420f4acd7a277ed0cd4a54767bc5bd6",
+   "sha256": "0knv2ybf4sbn31zyg9ms44mxvmvg7b51krq320g8fpcpa1bq28s6"
+  }
+ },
+ {
+  "ename": "wn-mode",
+  "commit": "6213c01e6954985daff8cd1a5a3ef004431f0477",
+  "sha256": "1qy1pkfdnm4pska4cnff9cx2c812ilymajhpmsfc9jdbvhzwrwg3",
+  "fetcher": "github",
+  "repo": "luismbo/wn-mode",
+  "unstable": {
+   "version": [
+    20151110,
+    552
+   ],
+   "commit": "f05c3151523e529af5a0a3fa8c948b61fb369f6e",
+   "sha256": "12rfpkyjkhikjh0mihhp5h5pzbm4br68nwf8k1ja9djl77vfzv36"
+  },
+  "stable": {
+   "version": [
+    1,
+    4
+   ],
+   "commit": "6e7029b0d5773a79914a289937be068784931cad",
+   "sha256": "0nmzh6dynbm8vglp4pqz81s2z68jbnasvamvi1x1iawf8g9zfyix"
+  }
+ },
+ {
+  "ename": "wolfram",
+  "commit": "785b5b1ec73e6376f2f2bb405707a1078398fa3a",
+  "sha256": "02xp1916v9rydh0586jkx71v256qdg63f87s3m0agc2znnrni9h4",
+  "fetcher": "github",
+  "repo": "hsjunnesson/wolfram.el",
+  "unstable": {
+   "version": [
+    20190805,
+    1007
+   ],
+   "commit": "a172712d5045834f5434cca2843a7c3506805db8",
+   "sha256": "10z04y8p72rqs2b2bgf1xfq99iidgbwg3ipxwkhwcaq32027h36z"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "commit": "a172712d5045834f5434cca2843a7c3506805db8",
+   "sha256": "10z04y8p72rqs2b2bgf1xfq99iidgbwg3ipxwkhwcaq32027h36z"
+  }
+ },
+ {
+  "ename": "wolfram-mode",
+  "commit": "40ded2302e413e233d867caa4776c54a778b8b99",
+  "sha256": "0rc39vvpyhpn0m52i4hs23j6avqfddmrkhjqg339apfq7z35fpli",
+  "fetcher": "github",
+  "repo": "kawabata/wolfram-mode",
+  "unstable": {
+   "version": [
+    20180307,
+    13
+   ],
+   "commit": "be680190cac6ccf579dbce107deaae495928d1b3",
+   "sha256": "1cvdw28gvhbr9l65xkv8ld12rb0pcf53jd55gns2b0abz1lg1jc4"
+  }
+ },
+ {
+  "ename": "wonderland",
+  "commit": "ed02d5e4cba10023ebc7c26f90ba8d1e8ee32a08",
+  "sha256": "1b4p49mbzqffm2b2y8sbbi56vnkxap2jscsmla9l6l8brybqjppi",
+  "fetcher": "github",
+  "repo": "kurisuwhyte/emacs-wonderland",
+  "unstable": {
+   "version": [
+    20130913,
+    119
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "multi"
+   ],
+   "commit": "89d274ad694b0e748efdac23ccd60b7d8b73d7c6",
+   "sha256": "0hacc8ha5w44cgwkipa3nwh1q5gdrcxhjkmw2gnvb1l01crgnack"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    1
+   ],
+   "deps": [
+    "dash",
+    "dash-functional",
+    "multi"
+   ],
+   "commit": "28cf6b37000c395ece9519db53147fb826a42bc4",
+   "sha256": "018r35dz8z03wcrx9s28pjisayy21549i232mp6wy9mxkrkxbzpc"
+  }
+ },
+ {
+  "ename": "wordgen",
+  "commit": "5cfdc64a9aa79575dad8057c4cd747d2cdd460aa",
+  "sha256": "0vlrplm3pmpwwa8p8j6lck97b875gzzm7vxxc8l9l18vs237cz1m",
+  "fetcher": "github",
+  "repo": "Fanael/wordgen.el",
+  "unstable": {
+   "version": [
+    20170803,
+    1820
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "aacad928ae99a953e034a831dfd0ebdf7d52ac1d",
+   "sha256": "06vbc9ycz1nbjwjkg99y3lj6jwb6lnwnmkqf09yr00jjrrfhfash"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    4
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "aacad928ae99a953e034a831dfd0ebdf7d52ac1d",
+   "sha256": "06vbc9ycz1nbjwjkg99y3lj6jwb6lnwnmkqf09yr00jjrrfhfash"
+  }
+ },
+ {
+  "ename": "wordnut",
+  "commit": "321c5e171eb4da85980968ac3c8ef4300101c0b1",
+  "sha256": "1gqmjb2f9izra0x9ds1jyk7h204qsll6viwkvdnmxczyyc0wx44n",
+  "fetcher": "github",
+  "repo": "gromnitsky/wordnut",
+  "unstable": {
+   "version": [
+    20180313,
+    443
+   ],
+   "commit": "feac531404041855312c1a046bde7ea18c674915",
+   "sha256": "1jl0b6g64a9w0q7bfvwha67vgws5xd15b7mkfyb5gkz3pymqhfxn"
+  }
+ },
+ {
+  "ename": "wordsmith-mode",
+  "commit": "3b5fda506e5b388cd6824d433b89032ed46858dc",
+  "sha256": "0s6b6dfqn31jdcgs2mlmvwgpr5a4zs4xi8m002ly11c6sn035xb1",
+  "fetcher": "github",
+  "repo": "istib/wordsmith-mode",
+  "unstable": {
+   "version": [
+    20171025,
+    1430
+   ],
+   "commit": "589a97412138145bea70e0450eeddeb7f138d538",
+   "sha256": "1zm4grysjpynibldvic75awhcmmnjmlkkvslw8bvirmi58qwvwzj"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "41b10f2fe3589da9812395cb417c3dcf906f0969",
+   "sha256": "0s3mjmfjiidn3spklndw0dvcwbb9x034xyphp60aad8vjaflbchs"
+  }
+ },
+ {
+  "ename": "worf",
+  "commit": "f00f8765e35c21dd1a4b5c01c239ed4d15170ab7",
+  "sha256": "1fkb2ddl684dijsb0cqgmfbg1nz4xv43rb7g5rah05rchy5sgkpi",
+  "fetcher": "github",
+  "repo": "abo-abo/worf",
+  "unstable": {
+   "version": [
+    20200121,
+    1629
+   ],
+   "deps": [
+    "ace-link",
+    "hydra",
+    "swiper",
+    "zoutline"
+   ],
+   "commit": "bdc8240ff4188c7403a020eb58dc10eea104b7df",
+   "sha256": "1lkix09lwnjsycaacwdn7gyqnm0n2frcp1p0l3hfhayz3p18dy5p"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "ace-link",
+    "hydra",
+    "swiper"
+   ],
+   "commit": "f36755447b588b739b2bf6ab0fb5eb5f4d8db3df",
+   "sha256": "0l2n3vwk251ba06xdrs9z0bp4ligfdjd259a84ap2z3sqdfa98x4"
+  }
+ },
+ {
+  "ename": "workgroups",
+  "commit": "585d3f522920b41845294af50b1da99dff256f8d",
+  "sha256": "1v01yr3lk6l0qn80i3r8fq3di0a8bmqjyhwx19hcgiap57xl80h8",
+  "fetcher": "github",
+  "repo": "tlh/workgroups.el",
+  "unstable": {
+   "version": [
+    20110726,
+    1641
+   ],
+   "commit": "9572b3492ee09054dc329f64ed846c962b395e39",
+   "sha256": "0q32z54qafj8ap3ybx82i3fm1msmzwvpxgmkaglzhi8nccgzbn2n"
+  }
+ },
+ {
+  "ename": "workgroups2",
+  "commit": "4f9cfb740cce05a6805d9a047e4c1380305da4df",
+  "sha256": "0vhj6mb3iflli0l3rjlvlbxz5yk6z3ii5r71gx0m4vp4lhxncy3v",
+  "fetcher": "github",
+  "repo": "pashinin/workgroups2",
+  "unstable": {
+   "version": [
+    20200516,
+    1451
+   ],
+   "deps": [
+    "anaphora",
+    "cl-lib",
+    "dash",
+    "f"
+   ],
+   "commit": "239a5a3ba3b210be5d8fe527546d09241bd3185c",
+   "sha256": "16lzv61scc1iq1vsbfvyzla91cnxh5a7s84wx3x3kq9jggzh6hbs"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    0
+   ],
+   "deps": [
+    "anaphora",
+    "cl-lib",
+    "dash",
+    "f"
+   ],
+   "commit": "928d509157ec8a4a2e343b6115dff034c3243a7a",
+   "sha256": "0prj2b33h6rya7y9ff91r72bva1y6hg0sv9l11bn1gikmc6lc18n"
+  }
+ },
+ {
+  "ename": "world-time-mode",
+  "commit": "f1429650400baf2b1523b5556eaf6a2178d515d4",
+  "sha256": "10gdlz4l9iqw1zdlk5i3knysn36iqxdh3xabjq8kq04jkl7i36dl",
+  "fetcher": "github",
+  "repo": "nicferrier/emacs-world-time-mode",
+  "unstable": {
+   "version": [
+    20140627,
+    807
+   ],
+   "commit": "ce7a3b45c87eb24cfe61eee453175d64f741d7cc",
+   "sha256": "0i00xm4rynbp2v3gm6h46ajgj8h8nxnsjh6db1659b0hbpnah0ji"
+  }
+ },
+ {
+  "ename": "wotd",
+  "commit": "7a52690a9bae634825bdfb5b6b17e5faccb93e13",
+  "sha256": "145knl4n35kpqqzqkz1vd18d619nw011d93f8qp5h82xm92p3sb5",
+  "fetcher": "github",
+  "repo": "cute-jumper/emacs-word-of-the-day",
+  "unstable": {
+   "version": [
+    20170328,
+    1948
+   ],
+   "deps": [
+    "org"
+   ],
+   "commit": "d2937a3d91e014f8028a1f33d21c18cc0b065a64",
+   "sha256": "0nwq5ymj9kx1fx3kfc789nkd80gwzljwmk7xxzzsrdrv47gm047m"
+  }
+ },
+ {
+  "ename": "wrap-region",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "058518smxj3j3mr6ljzh7c9x5g23d24104p58sl9nhpw0cq9k28i",
+  "fetcher": "github",
+  "repo": "rejeep/wrap-region.el",
+  "unstable": {
+   "version": [
+    20140117,
+    720
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "fbae9b0f106187af19823f1a6260b5c68b7252e6",
+   "sha256": "1k5q925igdv5lnpbmy0c2f0j3rj7yh4l6bxbd61g9lcnyl0j3ym9"
+  },
+  "stable": {
+   "version": [
+    0,
+    7,
+    3
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "5a910ad23ebb0649e644bf62ad042587341da5da",
+   "sha256": "03hjwm51sngkh7jjiwnqhflllqq6i99ib47rm2ja9ii0qyhj1qa0"
+  }
+ },
+ {
+  "ename": "writefreely",
+  "commit": "55ea1ad03ce5b5178435b8042be383065795ee71",
+  "sha256": "1lvar4kmzq3x7nmidklcryqscb5xzvkzbyn59a8ns0bml5sfrqyj",
+  "fetcher": "github",
+  "repo": "dangom/writefreely.el",
+  "unstable": {
+   "version": [
+    20190628,
+    1606
+   ],
+   "deps": [
+    "org",
+    "ox-gfm",
+    "request"
+   ],
+   "commit": "83a487e48e0d8342c372deb74d04c0b43474268c",
+   "sha256": "1qslhhb0zbg542xsa3rw4xh8wsz9k7nm61c62rhbasd4s39159yc"
+  }
+ },
+ {
+  "ename": "writegood-mode",
+  "commit": "75c5a4304999fc3f5a02235a1c2c904238d2ce4f",
+  "sha256": "1lxammisaj04g5vr5lwms64ywf39w8knrq72x4i94wwzwx5ywi1d",
+  "fetcher": "github",
+  "repo": "bnbeckwith/writegood-mode",
+  "unstable": {
+   "version": [
+    20180525,
+    1343
+   ],
+   "commit": "b71757ec337e226909fb0422f0224e31acc71733",
+   "sha256": "038gliy6l931r02bf2dbhmp188sgk1rq46ngg9nhf5q5rkf3pi8p"
+  },
+  "stable": {
+   "version": [
+    2,
+    0,
+    3
+   ],
+   "commit": "b71757ec337e226909fb0422f0224e31acc71733",
+   "sha256": "038gliy6l931r02bf2dbhmp188sgk1rq46ngg9nhf5q5rkf3pi8p"
+  }
+ },
+ {
+  "ename": "writeroom-mode",
+  "commit": "4e39cd8e8b4f61c04fa967def6a653bb22f45f5b",
+  "sha256": "1kpsrp3agw8bg3qbf5rf5k1a7ww30q5xsa8z5ywxajsaywjzx1bk",
+  "fetcher": "github",
+  "repo": "joostkremers/writeroom-mode",
+  "unstable": {
+   "version": [
+    20200427,
+    2319
+   ],
+   "deps": [
+    "visual-fill-column"
+   ],
+   "commit": "7f7acde5e8fc4ba74e511ca295e21f9ba7874730",
+   "sha256": "01rc7v2kg1h3cc06qa521mx9kvdxpw2b5hg12skh9gq1v5q1pbv9"
+  },
+  "stable": {
+   "version": [
+    3,
+    10
+   ],
+   "deps": [
+    "visual-fill-column"
+   ],
+   "commit": "6552c056b85fd26a3ac509100d9d5c5c3c19515a",
+   "sha256": "0la4q2dm123l4rdfh0ry03b99ihvh324y7iw12az909198bcx335"
+  }
+ },
+ {
+  "ename": "ws-butler",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1k5nhj37r51i0czrlafra53wir73p0nbq83jjccqmw4p4xk6axl3",
+  "fetcher": "github",
+  "repo": "lewang/ws-butler",
+  "unstable": {
+   "version": [
+    20170111,
+    2334
+   ],
+   "commit": "52321b99be69aa1b661da7743c4421a30d8b6bcb",
+   "sha256": "1b6hxhwhzs6xq12w0jmvvjw0bx4czw71xzj3qizq9gx0q4n7a0qf"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "commit": "323b651dd70ee40a25accc940b8f80c3a3185205",
+   "sha256": "1a4b0lsmwq84qfx51c5xy4fryhb1ysld4fhgw2vr37izf53379sb"
+  }
+ },
+ {
+  "ename": "wsd-mode",
+  "commit": "04867a574773e8794335a2664d4f5e8b243f3ec9",
+  "sha256": "07vclmnj18wx9wlrcnsl99f9jlk3sb9g6pcdv8x1smk84gccpakc",
+  "fetcher": "github",
+  "repo": "josteink/wsd-mode",
+  "unstable": {
+   "version": [
+    20191031,
+    1211
+   ],
+   "commit": "b87dee6d2d21fc868a3fae35bbd3f08910ad57e0",
+   "sha256": "1phxq59nsxw6zx1v097j9iqm54am9pln2wzcszsxj2ipjskiz7xn"
+  },
+  "stable": {
+   "version": [
+    0,
+    5,
+    0
+   ],
+   "commit": "b5e8ea0daeaa52f2ea6349e09902bd3216e96258",
+   "sha256": "1ibvcc54y2w72d3yvcczvzywribiwmkhlb1b08g4pyb1arclw393"
+  }
+ },
+ {
+  "ename": "wttrin",
+  "commit": "1b2b6876562f1fadd4af1ea9b279ac4dc1b21660",
+  "sha256": "0msp8lja9nz6khz3dkasv8hnhkaayqxd7m58kma03hpkcjxnaxil",
+  "fetcher": "github",
+  "repo": "bcbcarl/emacs-wttrin",
+  "unstable": {
+   "version": [
+    20170614,
+    1206
+   ],
+   "deps": [
+    "xterm-color"
+   ],
+   "commit": "df5427ce2a5ad4dab652dbb1c4a1834d7ddc2abc",
+   "sha256": "1ai655f10iayb4vw0ass2j3x83f4vsv90326mnywkzfl3sxd432z"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "xterm-color"
+   ],
+   "commit": "d595240d92788791da2218d12efd6a77eee06217",
+   "sha256": "0mbc3ndggv2rbmfcfhw8bsx3qw6jy684hxz5dqa88lfb6vs5knzc"
+  }
+ },
+ {
+  "ename": "wucuo",
+  "commit": "819cacef2c31d750829980f3f6c3bfb72f36bbdd",
+  "sha256": "084fcv4dkflpka9vmxmxqdl0cgmjjh9wc6axr65j1ffmqd933y4a",
+  "fetcher": "github",
+  "repo": "redguardtoo/wucuo",
+  "unstable": {
+   "version": [
+    20200516,
+    1526
+   ],
+   "commit": "49d2ae558068954eb8c4324b8ee7a6b2b0a00ef9",
+   "sha256": "1zr9fp4y9459y97zh4dj6109wwk6lj7sjfffwapyjmirnpfkxirk"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "commit": "49d2ae558068954eb8c4324b8ee7a6b2b0a00ef9",
+   "sha256": "1zr9fp4y9459y97zh4dj6109wwk6lj7sjfffwapyjmirnpfkxirk"
+  }
+ },
+ {
+  "ename": "wwtime",
+  "commit": "28f034fbabe9de76e2e4ae44be8c8240b08f0535",
+  "sha256": "0n37k23lkjgaj9wxnr41yk3mwvy62mc9im5l86czqmw5gy4l63ic",
+  "fetcher": "github",
+  "repo": "ndw/wwtime",
+  "unstable": {
+   "version": [
+    20151122,
+    1610
+   ],
+   "commit": "d04d8fa814b5d3644efaeb28f25520ada69acbbd",
+   "sha256": "0ba193ilqmp7l35hhzfym4kvbnj9h57m8mwsxdj6rdj2cwrifx8r"
+  }
+ },
+ {
+  "ename": "www-synonyms",
+  "commit": "2fe69ac09c3e24af9c4e24308e57d7c3c3425096",
+  "sha256": "0rp5p26hd67k4dsb40hj7jv24i9wncaay88dmiqla48843j4ymgh",
+  "fetcher": "github",
+  "repo": "spebern/www-synonyms",
+  "unstable": {
+   "version": [
+    20170128,
+    2251
+   ],
+   "deps": [
+    "cl-lib",
+    "request"
+   ],
+   "commit": "7e37ea35064ff31c9945f0198a653647d408c936",
+   "sha256": "0l4fvq5zdzqvlwxqgqbfx9x0aimvk4x3la9yz9gw3vvj1rwf340i"
+  }
+ },
+ {
+  "ename": "x-path-walker",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "1k72c0i17k31p404nkzqkw25cpcfk66bmd0vjzwg34cnwcgfhnjg",
+  "fetcher": "github",
+  "repo": "Lompik/x-path-walker",
+  "unstable": {
+   "version": [
+    20160922,
+    1835
+   ],
+   "deps": [
+    "helm-core"
+   ],
+   "commit": "3b01dbd7a039c6c84fdf8c8ee53ba72090ee950a",
+   "sha256": "1gb3lnl3gvckbakc4fy22fcvif3xdfkdaw334xmp33phjb8gjqvj"
+  }
+ },
+ {
+  "ename": "x509-mode",
+  "commit": "27145423eb4e68e006ef96868a35b99d119a3099",
+  "sha256": "15k3pxj3a2vaf64cl2xrzzlvzbqzqc29qyfd8brhq6yc69snr0vj",
+  "fetcher": "github",
+  "repo": "jobbflykt/x509-mode",
+  "unstable": {
+   "version": [
+    20180921,
+    803
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "9eb24c8721dcad9888b70213d06d770bc2386db7",
+   "sha256": "1gr099bn4qn2b5jasbs4r04pf6wqsnpf2632vzvshzm9nkz4qnhg"
+  }
+ },
+ {
+  "ename": "x86-lookup",
+  "commit": "27757b9b5673f5581e678e8cad719138db654415",
+  "sha256": "1clv1npvdkzsy0a08xrb880yflwzl4d5cc2c5xrs7b837mqpj8hd",
+  "fetcher": "github",
+  "repo": "skeeto/x86-lookup",
+  "unstable": {
+   "version": [
+    20180528,
+    1635
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "609b2ba70dc5a246ac9b4b5f89eb5ef4331519bf",
+   "sha256": "19zgq7mcc3wx847xc911fibvphbsws99m2l3k54xdjp8mb5qfdzm"
+  },
+  "stable": {
+   "version": [
+    1,
+    2,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "609b2ba70dc5a246ac9b4b5f89eb5ef4331519bf",
+   "sha256": "19zgq7mcc3wx847xc911fibvphbsws99m2l3k54xdjp8mb5qfdzm"
+  }
+ },
+ {
+  "ename": "xah-css-mode",
+  "commit": "05eed39bae37cc8359d2cc678052cbbcc946e379",
+  "sha256": "1kkwfyf94v3ni3d4szy28v49p6f3hy8ww9mlris2vvgc726wy6hr",
+  "fetcher": "github",
+  "repo": "xahlee/xah-css-mode",
+  "unstable": {
+   "version": [
+    20200309,
+    1750
+   ],
+   "commit": "43dbab2b8c35bd6892fe80bf064b41bd731545ff",
+   "sha256": "0m6l2k22pfcp6s3dadm3w1mr7ar590xl64zjsr0dl9d8spc6gbz1"
+  }
+ },
+ {
+  "ename": "xah-elisp-mode",
+  "commit": "05eed39bae37cc8359d2cc678052cbbcc946e379",
+  "sha256": "0cl07hw1hd3hj7wrzkh20m8vcs7mqsajxjmnlbnk2yg927yyijij",
+  "fetcher": "github",
+  "repo": "xahlee/xah-elisp-mode",
+  "unstable": {
+   "version": [
+    20190125,
+    646
+   ],
+   "commit": "a09c51e450bf4b39bdc3f4063c2946baec7ae3b1",
+   "sha256": "0hpdm6qns2i5zpavqq6zd7dyl9lxsxyic52jzjfisqv3gjrz8zpp"
+  }
+ },
+ {
+  "ename": "xah-find",
+  "commit": "05eed39bae37cc8359d2cc678052cbbcc946e379",
+  "sha256": "1d3x9yhm7my3yhvgqnjxr2v28g5w1h4ri40sy6dqcx09bjf3jhyq",
+  "fetcher": "github",
+  "repo": "xahlee/xah-find",
+  "unstable": {
+   "version": [
+    20190314,
+    2039
+   ],
+   "commit": "a39f1ff9a7cf56e92b56c6f179741569b9172a48",
+   "sha256": "16d2dh08dxdm06ik3sfx00filxqpy646vv1qh5kb36zs8ydzjg3z"
+  }
+ },
+ {
+  "ename": "xah-fly-keys",
+  "commit": "05eed39bae37cc8359d2cc678052cbbcc946e379",
+  "sha256": "0bzfz8q7yd1jai0pgngxwjp82nsfx5ivn24cb20vc5r8hhzj17cs",
+  "fetcher": "github",
+  "repo": "xahlee/xah-fly-keys",
+  "unstable": {
+   "version": [
+    20200427,
+    1357
+   ],
+   "commit": "17319a5e5514a61564c7314cb65b7d825ca0bb0f",
+   "sha256": "1y5g89kl1lbwzxmgah06z6iisj55l089q25n9dbxmwnklsxpbicw"
+  }
+ },
+ {
+  "ename": "xah-get-thing",
+  "commit": "05eed39bae37cc8359d2cc678052cbbcc946e379",
+  "sha256": "0m61bmfgqy19h4ivw655mqj547ga8hrpaswcp48hx00hx8mqzcvg",
+  "fetcher": "github",
+  "repo": "xahlee/xah-get-thing-or-selection",
+  "unstable": {
+   "version": [
+    20170821,
+    1053
+   ],
+   "commit": "e3ef069ea9fea3a092689d45c94c6211b51d0ea4",
+   "sha256": "0z9pflz99p2i7czccpzvw7bkbshfycpb6js9n8a12yhc1ndbz6z0"
+  }
+ },
+ {
+  "ename": "xah-lookup",
+  "commit": "05eed39bae37cc8359d2cc678052cbbcc946e379",
+  "sha256": "0z0h1myw6wmybyd0z2lw4l59vgm6q6kh492q77kf3s0fssc0facc",
+  "fetcher": "github",
+  "repo": "xahlee/lookup-word-on-internet",
+  "unstable": {
+   "version": [
+    20200420,
+    1528
+   ],
+   "commit": "c97a43dc0cebbfc519d0cce5b547dcc5e22b2085",
+   "sha256": "1qkazkisgw5c9xzxqm6xzm124r1v4d4dcyazvw66nz5j2zl1i5qd"
+  }
+ },
+ {
+  "ename": "xah-math-input",
+  "commit": "05eed39bae37cc8359d2cc678052cbbcc946e379",
+  "sha256": "1afikjk46sjf97fb5fc8h63h7b9af010wxhsbpnmabsb4j72rx5a",
+  "fetcher": "github",
+  "repo": "xahlee/xah-math-input",
+  "unstable": {
+   "version": [
+    20200217,
+    740
+   ],
+   "commit": "c1e72c4578a134e9aa3ec9ef425038d8c16fba94",
+   "sha256": "0laq440vk8mnjbdjz0h4n18qh72n83hxqmwjm124ykzclzjcdknh"
+  }
+ },
+ {
+  "ename": "xah-reformat-code",
+  "commit": "05eed39bae37cc8359d2cc678052cbbcc946e379",
+  "sha256": "1sj407nbh4x586hvsq4ycr0ahhxin0wgfwdj0551cz8793wvjpzp",
+  "fetcher": "github",
+  "repo": "xahlee/xah-reformat-code",
+  "unstable": {
+   "version": [
+    20170821,
+    1111
+   ],
+   "commit": "7fec8b28e46b8cc2813fac5149e3bbb56c0aa6b1",
+   "sha256": "0mz47laig0p7fwwiv66x60f5jg0kh8zvjd1vg3nnn3xvk37lv2cw"
+  }
+ },
+ {
+  "ename": "xah-replace-pairs",
+  "commit": "05eed39bae37cc8359d2cc678052cbbcc946e379",
+  "sha256": "0r4aq9davh3ypzcjixr3aw9g659dhiblwbmcyhm8iqhkavcpqr1x",
+  "fetcher": "github",
+  "repo": "xahlee/xah-replace-pairs",
+  "unstable": {
+   "version": [
+    20180508,
+    249
+   ],
+   "commit": "4d845cfbce32d45befd7c454e3476c3ce40d2b43",
+   "sha256": "1mkglrc8mbsjag3pc9zrmqa9x3n009hza1p1jvn3n97wjpc1qxlk"
+  }
+ },
+ {
+  "ename": "xahk-mode",
+  "commit": "05eed39bae37cc8359d2cc678052cbbcc946e379",
+  "sha256": "1bs12z7lnqlhm44hq0l98d0ka1bjgvm2yv97yivaj9akd53znca9",
+  "fetcher": "github",
+  "repo": "xahlee/xahk-mode.el",
+  "unstable": {
+   "version": [
+    20170821,
+    1107
+   ],
+   "commit": "02012b20603c00e3b2ef32159a690ed1e05d12c3",
+   "sha256": "09nakcfczb95vd48f8z77igmi1kbcblmgpzfzm9i7df4jcfkkh3c"
+  }
+ },
+ {
+  "ename": "xbm-life",
+  "commit": "20b2cc78b41a26e434b984943681fea774fd3c50",
+  "sha256": "02jhcz71ldb6gar3jw13w6m6prz6hv6gccacgmp40bg6cglf3czf",
+  "fetcher": "git",
+  "url": "https://depp.brause.cc/xbm-life.git",
+  "unstable": {
+   "version": [
+    20200506,
+    1217
+   ],
+   "commit": "311ef62438c4ab057c054fcdda4dbfa5980759b5",
+   "sha256": "1h8s5wiib9hb9bgqr3r5abpib9m61aa2pwiy3isjs5fkacvvxi9l"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    3
+   ],
+   "commit": "bde2b3730a02d237f7d95a8e3f3722f23f2d9201",
+   "sha256": "154xnfcmil9xjjmq4cyrfpir4ga4mgcmmbd7dja1m7rpk1734xk6"
+  }
+ },
+ {
+  "ename": "xcode-mode",
+  "commit": "845c731bed7dbe9c41c09e47e219299f17d0d489",
+  "sha256": "1d8r2bc7fiwma1lcrzd9gxhdpvyf2pc6kplx7nyr40ghsb9jlpiw",
+  "fetcher": "github",
+  "repo": "nicklanasa/xcode-mode",
+  "unstable": {
+   "version": [
+    20160907,
+    1208
+   ],
+   "deps": [
+    "dash",
+    "multiple-cursors",
+    "s"
+   ],
+   "commit": "2ae4f512d6c601ea39d5ab785c2b5288eac24b59",
+   "sha256": "0pi85ylxvjj63cmibgvi493d4ybcp2blhlwgrwzn2hjz31jldh0y"
+  }
+ },
+ {
+  "ename": "xcode-project",
+  "commit": "49b866ebf7e707bc74525f83dd5038e6e860fcef",
+  "sha256": "0igp30f6ypmp4l8zmdfpa5bza4avm7mq2gj8v7b3ii655v91n6vi",
+  "fetcher": "github",
+  "repo": "nhojb/xcode-project",
+  "unstable": {
+   "version": [
+    20181025,
+    1244
+   ],
+   "commit": "0bf9a4230fab7830350c750c39beda99ef74d72f",
+   "sha256": "0746f2niclmlx90skvdb1xdac0nqj8a9pd9ap8n89ckb5r6f9hbg"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "f5548a26a1afc0b0d873556c25f6d8b6b9c2aa8c",
+   "sha256": "0xb1cvjaw7zjnw6c5aq315vvlc3cncris62jis44jb8s5r8gxcrv"
+  }
+ },
+ {
+  "ename": "xcscope",
+  "commit": "068c7846e70b91ce7e88330937fc64a60281802a",
+  "sha256": "06xh29cm5v3b5xwj32y0i0h0kvvy995840db4hvab2wn9jw68m8w",
+  "fetcher": "github",
+  "repo": "dkogan/xcscope.el",
+  "unstable": {
+   "version": [
+    20190723,
+    629
+   ],
+   "commit": "f3e2c84bd92f5a78182cc8d81f5358979a6c241c",
+   "sha256": "0w2bxrnidladpzrd82z3w3gvjhajs71k5vjk2y03r09i9fwn2ykc"
+  },
+  "stable": {
+   "version": [
+    1,
+    5
+   ],
+   "commit": "f3e2c84bd92f5a78182cc8d81f5358979a6c241c",
+   "sha256": "0w2bxrnidladpzrd82z3w3gvjhajs71k5vjk2y03r09i9fwn2ykc"
+  }
+ },
+ {
+  "ename": "xkcd",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0gy2952zg1rq5gl10x7iwbchz5jibfcvikd3chifqbmil80wh6b5",
+  "fetcher": "github",
+  "repo": "vibhavp/emacs-xkcd",
+  "unstable": {
+   "version": [
+    20160419,
+    1130
+   ],
+   "deps": [
+    "json"
+   ],
+   "commit": "66e928706fd660cfdab204c98a347b49c4267bdf",
+   "sha256": "0znhjwlpgg05g39b16ddgw3a71a93fn2dicfsxjkziffn2a95m0s"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "json"
+   ],
+   "commit": "2c538d41a9728939cc5e8292faa78ed50997877d",
+   "sha256": "0p9p3w8i5w1pzh3y3yxz0rg5gywfq4m5anbiyrdn84vdd42jij4x"
+  }
+ },
+ {
+  "ename": "xml+",
+  "commit": "244388d158efda6fe8c1362a65b89b352c444422",
+  "sha256": "0xgqyfdn6kkp89zj4h54r009a44sbff0nrhh582zw5rlklypwdz1",
+  "fetcher": "github",
+  "repo": "bddean/xml-plus",
+  "unstable": {
+   "version": [
+    20170727,
+    2351
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "232fa863c08fc159b21dd58c39ea45dce3334895",
+   "sha256": "0b7v59dya346ds1wad0avrqhjimx5n9r3pcgqafagzf34hdcv3jy"
+  }
+ },
+ {
+  "ename": "xml-format",
+  "commit": "5e4df4dc715884132a7c409e041b303eeb727f18",
+  "sha256": "1xk3236m497n345i95l1k0xpyb7v8h3mar36j7yjjwxavjrh8ygg",
+  "fetcher": "github",
+  "repo": "wbolster/emacs-xml-format",
+  "unstable": {
+   "version": [
+    20191011,
+    1148
+   ],
+   "deps": [
+    "reformatter"
+   ],
+   "commit": "2861c4e33e18b077112efa072316b031bca4236c",
+   "sha256": "1g0v5ir6nwpamnwvq509d1s1s60n0s5p2lvqqm0n0rk9r753cqkh"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "deps": [
+    "reformatter"
+   ],
+   "commit": "2861c4e33e18b077112efa072316b031bca4236c",
+   "sha256": "1g0v5ir6nwpamnwvq509d1s1s60n0s5p2lvqqm0n0rk9r753cqkh"
+  }
+ },
+ {
+  "ename": "xml-quotes",
+  "commit": "ab315d783765730aceab43b4fd8c4872a1f1cc05",
+  "sha256": "1lmafa695xkhd90k6yiv8a57ch1jx33l1zpm39z0kj546mn6y8aq",
+  "fetcher": "github",
+  "repo": "ndw/xml-quotes",
+  "unstable": {
+   "version": [
+    20200301,
+    1222
+   ],
+   "commit": "8fc21e43b45f9a50b24642412f05afcc3a316a1f",
+   "sha256": "1czz6zgbnvwf3bn6k5iczs02rjx6frjnc0d78gcxhvsnbsvv60iw"
+  }
+ },
+ {
+  "ename": "xml-rpc",
+  "commit": "547d773e07d6229d2135d1b081b5401039ffad39",
+  "sha256": "14r6xgnpqsb2jlv52vgrhqf3qw8a6gmdyap3ylhilyxw71lxf1js",
+  "fetcher": "github",
+  "repo": "hexmode/xml-rpc-el",
+  "unstable": {
+   "version": [
+    20181002,
+    1353
+   ],
+   "commit": "8f624f8b964e9145acb504e4457c9510e87dd93c",
+   "sha256": "0xa54z52rsfl3n0xgmbycj4zazp8ksgdwcq56swzs6wp72zlalmj"
+  },
+  "stable": {
+   "version": [
+    1,
+    6,
+    12
+   ],
+   "commit": "0ab093d60140d19e31d217c8abdc7dbdac944486",
+   "sha256": "0g52bmamcd54acyk6i47ar5jawad6ycvm9g656inb994wprnjin9"
+  }
+ },
+ {
+  "ename": "xmlgen",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "0c77la6kl02qkapfzbjmhac60f8p837kwg8bp0686ylxh5s31zsh",
+  "fetcher": "github",
+  "repo": "philjackson/xmlgen",
+  "unstable": {
+   "version": [
+    20170411,
+    1317
+   ],
+   "commit": "dba66681f0c5e621a9e70e8afb34903c9ffe93c4",
+   "sha256": "096i29v0badx0a6339h9ckdz78zj59gbjdp7vj7vhkq9d830392s"
+  },
+  "stable": {
+   "version": [
+    0,
+    5
+   ],
+   "commit": "dba66681f0c5e621a9e70e8afb34903c9ffe93c4",
+   "sha256": "096i29v0badx0a6339h9ckdz78zj59gbjdp7vj7vhkq9d830392s"
+  }
+ },
+ {
+  "ename": "xmlunicode",
+  "commit": "b636126a389a337a3685f9d0dcbca9bf8e784f20",
+  "sha256": "1ylpvx2p5l863r9qv9jdsm9rbv989c8xn0zpjl8zkcfxqxix4h4p",
+  "fetcher": "github",
+  "repo": "ndw/xmlunicode",
+  "unstable": {
+   "version": [
+    20191124,
+    2312
+   ],
+   "commit": "80f30becf860db4277e71e3445994fccaf35ba98",
+   "sha256": "0vs8l739104s3zqmqna4m0n0pkz4m04mivx6r9iqdjmg4khh6bfi"
+  },
+  "stable": {
+   "version": [
+    1,
+    21
+   ],
+   "commit": "80f30becf860db4277e71e3445994fccaf35ba98",
+   "sha256": "0vs8l739104s3zqmqna4m0n0pkz4m04mivx6r9iqdjmg4khh6bfi"
+  }
+ },
+ {
+  "ename": "xo",
+  "commit": "fd8cec754da662e4873186c23c1ba13c52cccbba",
+  "sha256": "0kpbnxh8sa2dk8anrvgc7d39qap13pyjxh154gpm8xdb9zhfwl25",
+  "fetcher": "github",
+  "repo": "j-em/xo-emacs",
+  "unstable": {
+   "version": [
+    20160403,
+    646
+   ],
+   "commit": "72fcd867cfa332fdb82f732925cf8977e690af78",
+   "sha256": "0761amc73mbgaydp3iyfzgyjxp77yk440s24h69hvk87c5vn1cz3"
+  }
+ },
+ {
+  "ename": "xonsh-mode",
+  "commit": "f408aee5da4eadd8f4550893336f6decf00c9281",
+  "sha256": "15bb2zz9rb7bn0wrwhpi46f9knfr8hbjl9drks6xma3ln7nvrn9v",
+  "fetcher": "github",
+  "repo": "seanfarley/xonsh-mode",
+  "unstable": {
+   "version": [
+    20191214,
+    114
+   ],
+   "commit": "01819823822b6ebe01c02af548276cb2deb343f4",
+   "sha256": "043ijxkab06zlag9hsd0xdw5bxqi6n8sd10zr62f7drwchmw9ln0"
+  }
+ },
+ {
+  "ename": "xquery-mode",
+  "commit": "e8ea1c9e26963f290d912df21b81afd689543658",
+  "sha256": "13xrvygk7wdby6599q6yxw8cm45qqki8szrm49fc3b6pr6vzpidg",
+  "fetcher": "github",
+  "repo": "xquery-mode/xquery-mode",
+  "unstable": {
+   "version": [
+    20170214,
+    1119
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "1b655ccf83d02a7bd473d2cf02359ed60bdf7369",
+   "sha256": "1iprgfjrbx3fmqhkgjxdxnlzz2s6h895q270lhjrhkwgpphgna2c"
+  }
+ },
+ {
+  "ename": "xquery-tool",
+  "commit": "cc71e5ea4a0ecb006f62617f5b6caadc9b3c77b2",
+  "sha256": "069injmvv9zzcbqbms94qx5wjj740jnik6sf3b4xjhln7z1yskp0",
+  "fetcher": "github",
+  "repo": "paddymcall/xquery-tool.el",
+  "unstable": {
+   "version": [
+    20190523,
+    1119
+   ],
+   "commit": "7f0859cc722607240689e57e14de8e0719052016",
+   "sha256": "03vip403ifz9r4xkpiyi4mvb2plrn1f8906msdas84y13alhwnhq"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    11
+   ],
+   "commit": "7f0859cc722607240689e57e14de8e0719052016",
+   "sha256": "03vip403ifz9r4xkpiyi4mvb2plrn1f8906msdas84y13alhwnhq"
+  }
+ },
+ {
+  "ename": "xref-js2",
+  "commit": "b5dab444ead98210b4ab3a6f9a61d013aed6d5b7",
+  "sha256": "1mfyszdi1wx2lqd9fyqm0ra227dcsjs8asc1dw2li0alwh7n4xs3",
+  "fetcher": "github",
+  "repo": "NicolasPetton/xref-js2",
+  "unstable": {
+   "version": [
+    20190915,
+    2032
+   ],
+   "deps": [
+    "js2-mode"
+   ],
+   "commit": "6f1ed5dae0c2485416196a51f2fa92f32e4b8262",
+   "sha256": "0pbnhliq3zivijksdhdqd7m3ndc3z7kw2g21zwihq28faps96ikj"
+  },
+  "stable": {
+   "version": [
+    1,
+    6
+   ],
+   "deps": [
+    "js2-mode"
+   ],
+   "commit": "d48253bf1999815329a294d09f0b1b744a6272ae",
+   "sha256": "0kg1vdyjd0n48cb8bvjqskzd79s3bgdcpzn80gm2y78m280kakn8"
+  }
+ },
+ {
+  "ename": "xresources-theme",
+  "commit": "35763febad20f29320d459394f810668db6c3353",
+  "sha256": "1vsbvg9w5g6y2qlb8ssn12ax31r7fbslfi9vcgvmjydcr8r1z0zs",
+  "fetcher": "github",
+  "repo": "cqql/xresources-theme",
+  "unstable": {
+   "version": [
+    20190108,
+    1851
+   ],
+   "commit": "5239acb51aa2dfa89a207e57012108d8fcf60562",
+   "sha256": "13pls0f85n5rpbrbqcmrmcznv9hxiaglrnwpzivrli33cba92fpm"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "5239acb51aa2dfa89a207e57012108d8fcf60562",
+   "sha256": "13pls0f85n5rpbrbqcmrmcznv9hxiaglrnwpzivrli33cba92fpm"
+  }
+ },
+ {
+  "ename": "xterm-color",
+  "commit": "b34a42f1bf5641871da8ce2b688325023262b643",
+  "sha256": "0bvzi1mkxgm4vbq2va1sr0k9h3fdmppq79hkvbizc2xgk72sazpj",
+  "fetcher": "github",
+  "repo": "atomontage/xterm-color",
+  "unstable": {
+   "version": [
+    20200514,
+    1932
+   ],
+   "commit": "3d1a24ca84d26ad4507a79260107b010a1d6886b",
+   "sha256": "1qppbf4jidq6q8c7gby0syp4560xqc3kzgbdgdwl1jc5k08ln3cl"
+  },
+  "stable": {
+   "version": [
+    2,
+    0
+   ],
+   "commit": "137dfecedfdf6aff69b0f9b1c299aa0ae868fca0",
+   "sha256": "127lq50q62x06kd1xrf8lyc4rkqbfhfy86gsx1x4x169am2xk397"
+  }
+ },
+ {
+  "ename": "xterm-keybinder",
+  "commit": "656f8e27b4e6055a634249f134a4fc0667fa0e95",
+  "sha256": "1n0zp1mc7x7z0671lf7p9r4qxic90bkf5q3zwz4vinpiw2qh88lz",
+  "fetcher": "github",
+  "repo": "yuutayamada/xterm-keybinder-el",
+  "unstable": {
+   "version": [
+    20160523,
+    56
+   ],
+   "deps": [
+    "cl-lib",
+    "let-alist"
+   ],
+   "commit": "b29c4f700b0fa0c9f627f6725b36462b8fab06d6",
+   "sha256": "0ya7c73acwp29glwjd1hf19h8jij2afwmwq7a3h91qx5zdn09wvh"
+  }
+ },
+ {
+  "ename": "xtest",
+  "commit": "378fe14c66072ecb899a074c56f95077dfc9667e",
+  "sha256": "1vbs4sb4frzg8d3l96ip9cc6lc86nbj50vpdfqazvxmdfd1sg4i7",
+  "fetcher": "github",
+  "repo": "promethial/xtest",
+  "unstable": {
+   "version": [
+    20141214,
+    1706
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "2c2bdf32667506dd9ddf6eb311832add616bdf1c",
+   "sha256": "09mn8s7gzzxgs7kskld8l68zjrcgnvml3fqj69wrfq7b1g62hhxy"
+  },
+  "stable": {
+   "version": [
+    1,
+    1,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b227414d714e7baddef79bd306a43024b9a34d45",
+   "sha256": "1wqx6hlqcmqiljydih5fx89dw06g8w728pyn4iqsap8jwgjngb09"
+  }
+ },
+ {
+  "ename": "xwidgete",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1v1dfykkb6nwjwz2623i6x1rl53z4457l6fpa4nv4krdqq79gl5d",
+  "fetcher": "github",
+  "repo": "tuhdo/xwidgete",
+  "unstable": {
+   "version": [
+    20171118,
+    2116
+   ],
+   "commit": "e4e8410fe32176df85b46234717824519443fb04",
+   "sha256": "04j4xwcdxlnrwxs89605zmwxszbi2j0z67v80651pshgnhj5p19i"
+  }
+ },
+ {
+  "ename": "xwwp",
+  "commit": "83c34ae5023410cc31f93255275d6465b6152a10",
+  "sha256": "07r62haa1ks2xvfh4zkqadpsjdhk6kbafk1fmvcim3m13ma6gch1",
+  "fetcher": "github",
+  "repo": "canatella/xwwp",
+  "unstable": {
+   "version": [
+    20200413,
+    757
+   ],
+   "commit": "dcf6f9430dd9745e5f2705c0f42e013fab961c0e",
+   "sha256": "1aks12zbfcq4m4s1baxcdg2xjn2y9f4dw19576yp35hg2cb550v6"
+  }
+ },
+ {
+  "ename": "xwwp-follow-link-helm",
+  "commit": "83c34ae5023410cc31f93255275d6465b6152a10",
+  "sha256": "0dcbhc4zy4n03fi6pz3k9hlnpk7ys6xx1v6c4rwcjzy5ly80alwq",
+  "fetcher": "github",
+  "repo": "canatella/xwwp",
+  "unstable": {
+   "version": [
+    20200331,
+    800
+   ],
+   "deps": [
+    "xwwp"
+   ],
+   "commit": "dcf6f9430dd9745e5f2705c0f42e013fab961c0e",
+   "sha256": "1aks12zbfcq4m4s1baxcdg2xjn2y9f4dw19576yp35hg2cb550v6"
+  }
+ },
+ {
+  "ename": "xwwp-follow-link-ivy",
+  "commit": "83c34ae5023410cc31f93255275d6465b6152a10",
+  "sha256": "0i5wqj4170iqznghy02dc2g5l5cs76hjhk88dcwwpbss1mabj8ig",
+  "fetcher": "github",
+  "repo": "canatella/xwwp",
+  "unstable": {
+   "version": [
+    20200331,
+    800
+   ],
+   "deps": [
+    "xwwp"
+   ],
+   "commit": "dcf6f9430dd9745e5f2705c0f42e013fab961c0e",
+   "sha256": "1aks12zbfcq4m4s1baxcdg2xjn2y9f4dw19576yp35hg2cb550v6"
+  }
+ },
+ {
+  "ename": "yabin",
+  "commit": "cc44b28e32ff9b35f60744a175c2d1e3036db8bc",
+  "sha256": "1kmpm2rbb43c9cgp44qwd24d90mj48k3gyiir3vb6zf6k3syrc17",
+  "fetcher": "github",
+  "repo": "d5884/yabin",
+  "unstable": {
+   "version": [
+    20140206,
+    351
+   ],
+   "commit": "db8c404507560ef9147fcce2b94cd706fbfa03b5",
+   "sha256": "0f6pvwzhncycw8gnjy24h6q1qglfgvdjfs5dzqx9s43j3yg63lzm"
+  }
+ },
+ {
+  "ename": "yafolding",
+  "commit": "aca84b24c4d95b330b233851af35e7c8a8e6615c",
+  "sha256": "0xlcxhmgm8nmv14yr2ffvmf5g7fs6rnq9yc1zpcar8x3d11s0ql2",
+  "fetcher": "github",
+  "repo": "emacsorphanage/yafolding",
+  "unstable": {
+   "version": [
+    20200119,
+    1353
+   ],
+   "commit": "4c1888ae45f9241516519ae0ae3a899f2efa05ba",
+   "sha256": "1bb763lx5cs5z06irjllip8z9c61brjsamfcjajibi24wcajkprx"
+  },
+  "stable": {
+   "version": [
+    0,
+    4,
+    1
+   ],
+   "commit": "4c1888ae45f9241516519ae0ae3a899f2efa05ba",
+   "sha256": "1bb763lx5cs5z06irjllip8z9c61brjsamfcjajibi24wcajkprx"
+  }
+ },
+ {
+  "ename": "yagist",
+  "commit": "97ea1250ffbf159d7870710b9348ef26616dbedb",
+  "sha256": "1mz86fq0pb4w54c66vd19m2492mkrzq2qi6ssnn2xwmn8vv02wdd",
+  "fetcher": "github",
+  "repo": "mhayashi1120/yagist.el",
+  "unstable": {
+   "version": [
+    20160418,
+    508
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "dcdbd84f348414815d02f3da8a6ee0ac271632d4",
+   "sha256": "0lgy9b893mq4harxh80n0n2zia00s2c6ga8p654q563idrskgz17"
+  },
+  "stable": {
+   "version": [
+    0,
+    8,
+    12
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "97723a34750ccab5439eb9f6a2f67e4e0e234167",
+   "sha256": "0l9b888wv72j4hhkcfzsh09iqjxp2qjbjcjcfmvfhxf7il11pv8h"
+  }
+ },
+ {
+  "ename": "yahtzee",
+  "commit": "200169fdabce0ae3a2ecb6f4f3255c15ec3ed094",
+  "sha256": "1fnywiami9mszagmms27dmak6chcichdi7q70x5c6aimc4jb98jk",
+  "fetcher": "github",
+  "repo": "drdv/yahtzee",
+  "unstable": {
+   "version": [
+    20200511,
+    2005
+   ],
+   "commit": "63b9b698fbb547603c3f66932c6d3e3bb217c443",
+   "sha256": "0v0lp2n0xdxfiasr3lcydj9q4krfvzqi568iyngq6zxlryc75wi0"
+  }
+ },
+ {
+  "ename": "yalinum",
+  "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a",
+  "sha256": "0jzsvkcvy2mkfmri4bzgrlgw2y0z3hxz44md83s5zmw09mshkahf",
+  "fetcher": "github",
+  "repo": "tm8st/emacs-yalinum",
+  "unstable": {
+   "version": [
+    20130217,
+    1043
+   ],
+   "commit": "d3e0cbe3f4f5ca311e3298e684901d6fea3ad973",
+   "sha256": "12dd4ahg9f1493982d49g7sxx0n6ss4xcfhxwzyaqxckwzfranp0"
+  }
+ },
+ {
+  "ename": "yaml-imenu",
+  "commit": "71e7c2df9e34093ad2634d5a56133fa30126fb5c",
+  "sha256": "03r7020gyr96m1z7p947nb7z8szzlkqv21g1hm10sqa8qp7k0qli",
+  "fetcher": "github",
+  "repo": "knu/yaml-imenu.el",
+  "unstable": {
+   "version": [
+    20181001,
+    627
+   ],
+   "deps": [
+    "yaml-mode"
+   ],
+   "commit": "78a383098807014d9e7f2941196d8271677158cd",
+   "sha256": "1f85m0h19wjb0xrwkxrh7vrpphm8l5nkrv82zsl097dqw3ijj3f1"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    1
+   ],
+   "deps": [
+    "yaml-mode"
+   ],
+   "commit": "78a383098807014d9e7f2941196d8271677158cd",
+   "sha256": "1f85m0h19wjb0xrwkxrh7vrpphm8l5nkrv82zsl097dqw3ijj3f1"
+  }
+ },
+ {
+  "ename": "yaml-mode",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "0afp83xcr8h153cayyaszwkgpap0iyk351dlykmv6bv9d2m774mc",
+  "fetcher": "github",
+  "repo": "yoshiki/yaml-mode",
+  "unstable": {
+   "version": [
+    20200512,
+    2141
+   ],
+   "commit": "0b33131664719c61f834e77ff3b91ded3de2cd3b",
+   "sha256": "0ig5hpk0wb46yz6gml6g7x9am0l3cay1bzxldms0g2qjh5swxrq4"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    14
+   ],
+   "commit": "5b4a0db384f996554454b5642e4531c502421de8",
+   "sha256": "18g064ardqi1f3xz7j6rs1x9fvv9sn0iq9vgid8c6qvxq7gwj00r"
+  }
+ },
+ {
+  "ename": "yaml-tomato",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1asy4nf759lcgksah2g7jvzwwlq9lxfkiji460csk5ycsv8aa99s",
+  "fetcher": "github",
+  "repo": "RadekMolenda/yaml-tomato",
+  "unstable": {
+   "version": [
+    20151123,
+    753
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "f9df1c9bdfcec629b03031b2d2032f9dc533cb14",
+   "sha256": "1xgqqgg4q3hrhiap8gmr8iifdr1mg4dl0j236b6alhrgmykbhimy"
+  }
+ },
+ {
+  "ename": "yandex-weather",
+  "commit": "5221cee4c89dde5cebd9cddb3b4e4c5814b898d7",
+  "sha256": "11hspadm520cjlv1wk2bdpzg7hg2g0chbh26qijj9jgvca26x0md",
+  "fetcher": "github",
+  "repo": "abstractionlayer/yandex-weather.el",
+  "unstable": {
+   "version": [
+    20160311,
+    2037
+   ],
+   "commit": "6f823fd9e04ff9efb2aa65f333079e9f7e6e5b28",
+   "sha256": "0pw44klm8ldsdjphybzkknv8yh23xhzwg76w3d9cqs79jkd0rw8w"
+  }
+ },
+ {
+  "ename": "yang-mode",
+  "commit": "bb42ab9b5f118baaf6766c478046552b686981a1",
+  "sha256": "0rl90xbcf3383ls95g1dixh2dr02kc4g60d324cqbb4h59wffp40",
+  "fetcher": "github",
+  "repo": "mbj4668/yang-mode",
+  "unstable": {
+   "version": [
+    20190507,
+    724
+   ],
+   "commit": "4b4ab4d4a79d37d6c31c6ea7cccbc425e0b1eded",
+   "sha256": "0sqp8vwlymwl2dp6bh1gf8725j1fd9sqj4qfgva09rmkq8fdivfm"
+  },
+  "stable": {
+   "version": [
+    0,
+    9,
+    9
+   ],
+   "commit": "4b4ab4d4a79d37d6c31c6ea7cccbc425e0b1eded",
+   "sha256": "0sqp8vwlymwl2dp6bh1gf8725j1fd9sqj4qfgva09rmkq8fdivfm"
+  }
+ },
+ {
+  "ename": "yankpad",
+  "commit": "e64746d10f9e0158621a7c4dc41dc2eca6ad573c",
+  "sha256": "1w5r9zk33cjgsmk45znfg32ym06nyqj5q3knr59jmn1fafx7a3z4",
+  "fetcher": "github",
+  "repo": "Kungsgeten/yankpad",
+  "unstable": {
+   "version": [
+    20200409,
+    1747
+   ],
+   "commit": "acfccf3633d7fd3b91d717fda4ae98e8e3345a06",
+   "sha256": "0xprfvgfcjdl20j1hxjk3f4gy7m3v0x9p0vyl2ygxmjj7ibgi7kw"
+  },
+  "stable": {
+   "version": [
+    1,
+    6
+   ],
+   "commit": "d2ea6920a2444f1ce6f53947640446b8e16f84b7",
+   "sha256": "1lw2d25rwszk35bi3gm3bg0cb30b8c2bf3p32b89shnsmwylw52m"
+  }
+ },
+ {
+  "ename": "yapfify",
+  "commit": "060c32d8e9fdc56fe702d265a935d74d76082f86",
+  "sha256": "0scl8lk1c5i7jp1qj5gg8zf3zyi8lkb57ijkmvcs4czzlyv3y9bm",
+  "fetcher": "github",
+  "repo": "JorisE/yapfify",
+  "unstable": {
+   "version": [
+    20200406,
+    830
+   ],
+   "commit": "3df4e8ce65f55fd69479b3417525ce83a2b00b45",
+   "sha256": "13q84a4q5bv56r9dhi84jqbkx7dc1bvi42s01ahh8vmdvg4h39d3"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    6
+   ],
+   "commit": "9e63a9135bd8dbfbee55819837a3aa0d119c5e6f",
+   "sha256": "1bf09hah2g8x0jbrdh4fm1v01qjymiv38yvv8a5qmfpv5k93lcrc"
+  }
+ },
+ {
+  "ename": "yara-mode",
+  "commit": "ef22d2dad1bae62721710bbff4b7228204d7c425",
+  "sha256": "12j25nbfg65bkil4wv6f27sszlj3jm6h0zczr0v26xr5syppis17",
+  "fetcher": "github",
+  "repo": "binjo/yara-mode",
+  "unstable": {
+   "version": [
+    20190423,
+    710
+   ],
+   "commit": "cd8093b1bc4fc260462f5284b157008fefa84880",
+   "sha256": "04pl0kbx5g8wz00x7bhpi9w29wmxdmy5dhdq3j4rk3nys5njxr8v"
+  }
+ },
+ {
+  "ename": "yard-mode",
+  "commit": "afad2677f901b8d27922389afb1d235d5c8edc39",
+  "sha256": "0jmlcba8qapjwaaliz9gzs99if3wglkhmlpjzcdy3icx18sw8kzx",
+  "fetcher": "github",
+  "repo": "pd/yard-mode.el",
+  "unstable": {
+   "version": [
+    20170817,
+    1237
+   ],
+   "commit": "ba74a47463b0320ae152bd42a7dd7aeecd7b5748",
+   "sha256": "0zry3p66bvrk32icnd6kkk8y5rrr8crnqjp6wlp889c8c7wm00n1"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "commit": "78792f6a6fbff4f1bc955f494fdb11378e7f8095",
+   "sha256": "096ay60hrd14b459cyxxcf9g7i1ivsxg6yhc0q162px6kl1x0m2y"
+  }
+ },
+ {
+  "ename": "yari",
+  "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a",
+  "sha256": "0sch9x899mzwdacg55w5j583k2r4vn71ish7gqpghd7cj13ii66h",
+  "fetcher": "github",
+  "repo": "hron/yari.el",
+  "unstable": {
+   "version": [
+    20151128,
+    739
+   ],
+   "commit": "a2cb9656ee5dfe1fc2ee3854f3079a1c8e85dbe9",
+   "sha256": "0w9a6j0ndpfwaz1g974vv5jqgbzxw26l19kq51j3ah73063cavpf"
+  }
+ },
+ {
+  "ename": "yarn-mode",
+  "commit": "860fa2a8fdb22be374fa64a5277af3ab484a047a",
+  "sha256": "08a3lrz670jsf531mn1hwhh7fg5dby6i749cscd6d4dyvkzpz5dg",
+  "fetcher": "github",
+  "repo": "anachronic/yarn-mode",
+  "unstable": {
+   "version": [
+    20200208,
+    2332
+   ],
+   "commit": "8239d4dc7d8a52fa1e3fa81bd32c904a359fcfc1",
+   "sha256": "0pf98jkz8k4gyc650wwfhww6gli847hmxb8lrnmw50yb88dqa38f"
+  },
+  "stable": {
+   "version": [
+    1,
+    0
+   ],
+   "commit": "99891000efe31214b065fa9446cd5e68c5c42ed8",
+   "sha256": "0cg06ba9yfgjzprq78cvhvvl06av0p2vhnmynddzbpgjgjnwskfy"
+  }
+ },
+ {
+  "ename": "yascroll",
+  "commit": "7856a62fb86415c88aa72b574895328c93c10a09",
+  "sha256": "1hdh8xfmgj0w3vrl3nr3i6j8b9qf8ndnfa1bvwainzdbxpfwiz1v",
+  "fetcher": "github",
+  "repo": "emacsorphanage/yascroll",
+  "unstable": {
+   "version": [
+    20200224,
+    1117
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "b298a34ae872a45c3e83d29d33888abde59c185b",
+   "sha256": "1pnynyy3scrd15q4ag769af5njrxx6rw48svbsfx3xrz1n0x9snz"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    7
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "784ebb0ee5496b5e7762bfd4c8101166542cb90d",
+   "sha256": "1k9y319ny01yqkg1xsh4rh2xs3dpx5jgvhs17p4c4dvqm0g53mkm"
+  }
+ },
+ {
+  "ename": "yasnippet",
+  "commit": "5d1927dc3351d3522de1baccdc4ce200ba52bd6e",
+  "sha256": "1r37vz5b8nj6hr6c2ki9fdbrs3kkb4zwimh8r4ixm10kdkk5jqds",
+  "fetcher": "github",
+  "repo": "joaotavora/yasnippet",
+  "unstable": {
+   "version": [
+    20200413,
+    2221
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "5b1217ab085fab4abeb1118dccb260691b446703",
+   "sha256": "0486kd8brxwmbmw9bjf0p9i99dyl17hbc5aa03z7psqqlsw713mx"
+  },
+  "stable": {
+   "version": [
+    0,
+    14,
+    0
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "3bf9a3b1af37174a004798b7195826af0123fa6a",
+   "sha256": "0via9dzw8m5lzymg1h78xkwjssh39zr3g6ccyamlf1rjzjsyxknv"
+  }
+ },
+ {
+  "ename": "yasnippet-lean",
+  "commit": "e1cdcf88a7ff90570d8b09901de8b8b8a153c52e",
+  "sha256": "0mhlg6ya4b232hgq5wh5w9h0ww35qi9br4501sc379zqwflvqcm7",
+  "fetcher": "github",
+  "repo": "leanprover-community/yasnippet-lean",
+  "unstable": {
+   "version": [
+    20190922,
+    2037
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "9119be08a32286d3e8559138e8ae003856ae1c0a",
+   "sha256": "1q06c574zn0ibbb3zbgi59zxj17i7kyjkcz45sj5h7hbn9l81594"
+  }
+ },
+ {
+  "ename": "yasnippet-snippets",
+  "commit": "42490bbdac871bce302fbc9a0488ff7de354627e",
+  "sha256": "0daawvlw78ya38bbi95swjq8qk5jf5shsyv164m81y2gd8i5c183",
+  "fetcher": "github",
+  "repo": "AndreaCrotti/yasnippet-snippets",
+  "unstable": {
+   "version": [
+    20200508,
+    936
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "ab3c20483a39742d7c612bc006d09aa8ffa3186d",
+   "sha256": "16gzc33qlmgbp9hq5c3bbv24b136ai23h3v0b2f9rr2xy9ln3ccz"
+  },
+  "stable": {
+   "version": [
+    0,
+    22
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "e51a259527d685fe767b6ec951ad1940b1131a69",
+   "sha256": "1xcmx0frialb86z5adi07b6skqks326w3v1xn49c54gxim027i5d"
+  }
+ },
+ {
+  "ename": "yatemplate",
+  "commit": "67a9079253ebd9ab3b34e16eea0443812fb1a8ee",
+  "sha256": "05gd9sxdiqpw2p1kdagwgxd94wiw1fmmcsp9v4p74i9sqmf6qn6q",
+  "fetcher": "github",
+  "repo": "mineo/yatemplate",
+  "unstable": {
+   "version": [
+    20200108,
+    2102
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "bfee45cfc179d6b7fbc3ff06c9f79b76dc7fbf58",
+   "sha256": "0h2fc9vjwb94n3nklq35s3dy9i4ihrqffp2556cmsaq7gzlipb81"
+  },
+  "stable": {
+   "version": [
+    4,
+    0
+   ],
+   "deps": [
+    "yasnippet"
+   ],
+   "commit": "bfee45cfc179d6b7fbc3ff06c9f79b76dc7fbf58",
+   "sha256": "0h2fc9vjwb94n3nklq35s3dy9i4ihrqffp2556cmsaq7gzlipb81"
+  }
+ },
+ {
+  "ename": "yatex",
+  "commit": "9854c39fc1889891fe460d0d5ac9224de3f6c635",
+  "sha256": "1qbqdsqf5s61hyyzx84csnby242n5sdcmcw55pa8r16j8kyzgrc0",
+  "fetcher": "hg",
+  "url": "https://www.yatex.org/hgrepos/yatex",
+  "unstable": {
+   "version": [
+    20200208,
+    931
+   ],
+   "commit": "f4c2dca86202c2da5b4f0f6ec97c49dd1cb01e6c",
+   "sha256": "1dh4i2dj2cfg693bvwdi4frmi2892h4q25xdacdm63c7fmn3ap6l"
+  }
+ },
+ {
+  "ename": "yaxception",
+  "commit": "1da5261081fc66910d935b81e52391c071e52379",
+  "sha256": "18n2kjbgfhkhcwigxmv8dk72jp57vsqqd20lc26v5amx6mrhgh58",
+  "fetcher": "github",
+  "repo": "aki2o/yaxception",
+  "unstable": {
+   "version": [
+    20150105,
+    1452
+   ],
+   "commit": "4e94cf3e0b9b5631b0e90eb4b7de597ee7185875",
+   "sha256": "0nqyn1b01v1qxv7rcf46qypca61lmpm8d7kqv63jazw3n05qdnj8"
+  },
+  "stable": {
+   "version": [
+    0,
+    3,
+    3
+   ],
+   "commit": "4e94cf3e0b9b5631b0e90eb4b7de597ee7185875",
+   "sha256": "0nqyn1b01v1qxv7rcf46qypca61lmpm8d7kqv63jazw3n05qdnj8"
+  }
+ },
+ {
+  "ename": "ycm",
+  "commit": "44e168f757cb51249db2deb9f781eff99cf6fb7c",
+  "sha256": "16ahgvi85ddjlrjxld14zm2vvam0m89mwskizjd5clcz0snk51sc",
+  "fetcher": "github",
+  "repo": "neuromage/ycm.el",
+  "unstable": {
+   "version": [
+    20150822,
+    1836
+   ],
+   "commit": "4da8a14abcd0f4fa3235042ade2e12b5068c0601",
+   "sha256": "0znchya89zzk30mwl4qfm0q9sfa5m3jspapb892ydj0mck5n4nyj"
+  }
+ },
+ {
+  "ename": "ycmd",
+  "commit": "4b25378540c64d0214797348579671bf2b8cc696",
+  "sha256": "10jqr6xz2fnrd1ihips9jmbcd28zha432h4pxjpswz3ivwjqhxna",
+  "fetcher": "github",
+  "repo": "abingham/emacs-ycmd",
+  "unstable": {
+   "version": [
+    20190416,
+    807
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "deferred",
+    "let-alist",
+    "pkg-info",
+    "request",
+    "request-deferred",
+    "s"
+   ],
+   "commit": "bc81b992f79100c98f56b7b83caf64cb8ea60477",
+   "sha256": "0kwm5q2sv2xrsmnr0gc2fimp6b2cvwh5mhqsmcc3lgs32m4j1kwv"
+  },
+  "stable": {
+   "version": [
+    1,
+    2
+   ],
+   "deps": [
+    "cl-lib",
+    "dash",
+    "deferred",
+    "let-alist",
+    "pkg-info",
+    "request",
+    "request-deferred",
+    "s"
+   ],
+   "commit": "d042a673b4d717c3ca9d641f120bfe16c994c740",
+   "sha256": "0rxw86xi9xgr0fp6wmd6hgqgqr9flk7p4lcr0052jhlwknj1nrx0"
+  }
+ },
+ {
+  "ename": "ydk-mode",
+  "commit": "865b9ee86ca28fc1cedc0a432a292400184711ae",
+  "sha256": "1z9digf39d7dd736svp0cy6773l3nklzc263q23gwfcg0jswbdyg",
+  "fetcher": "github",
+  "repo": "jacksonrayhamilton/ydk-mode",
+  "unstable": {
+   "version": [
+    20170113,
+    921
+   ],
+   "commit": "f3f125b29408e0b0a34fec27dcb7c02c5dbfd04e",
+   "sha256": "0ndmbswrv8vyw18zhbmjr11400l546zqaj7dzfvwb5rhdv2d0abi"
+  },
+  "stable": {
+   "version": [
+    1,
+    0,
+    0
+   ],
+   "commit": "f3f125b29408e0b0a34fec27dcb7c02c5dbfd04e",
+   "sha256": "0ndmbswrv8vyw18zhbmjr11400l546zqaj7dzfvwb5rhdv2d0abi"
+  }
+ },
+ {
+  "ename": "yequake",
+  "commit": "194968f221b2f60042a3684e1ca3e1c18adbde8e",
+  "sha256": "1ps5r6k2903w9qbr3aszw3l3mgcg2zlnxlzbak99314if5k6aiak",
+  "fetcher": "github",
+  "repo": "alphapapa/yequake",
+  "unstable": {
+   "version": [
+    20200219,
+    2323
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "d18166e597414350117d0b82a29e509fc53c636d",
+   "sha256": "074wijjphnpch7bl3455apfkdv35b0iw4l4lzwj0jcxyfszviq9f"
+  },
+  "stable": {
+   "version": [
+    0,
+    1
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "d18166e597414350117d0b82a29e509fc53c636d",
+   "sha256": "074wijjphnpch7bl3455apfkdv35b0iw4l4lzwj0jcxyfszviq9f"
+  }
+ },
+ {
+  "ename": "yesql-ghosts",
+  "commit": "3c652657be0f9b9dcb236e01c3abd2fd717190d7",
+  "sha256": "1hxzbnfd15f0ifdqjbw9nhxd0z46x705v2bc0xl71nav78fgpswf",
+  "fetcher": "github",
+  "repo": "magnars/yesql-ghosts",
+  "unstable": {
+   "version": [
+    20150220,
+    1237
+   ],
+   "deps": [
+    "cider",
+    "dash",
+    "s"
+   ],
+   "commit": "8f1faf0137b85a5072d13e1240a463d9a35ce2bb",
+   "sha256": "1fyvvkx6pa41bcr9cyh4yclwdzc5bs742s9fxr6wb4a5scq3hg9m"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    0
+   ],
+   "deps": [
+    "cider",
+    "dash",
+    "s"
+   ],
+   "commit": "bd834e97f263f9f981758c1462bc6297a83ca852",
+   "sha256": "0yvz7lmid4jcikb9jmc7h2lcry3fdyy809k25nyasj2bk41xqqsd"
+  }
+ },
+ {
+  "ename": "yesterbox",
+  "commit": "21f684c47e5778c9d46c9f28dae1113197717b78",
+  "sha256": "1ah4l8zz565jgr52d9n29iv93z7qwmlz9pdjw3l51qhqf79lkf1w",
+  "fetcher": "github",
+  "repo": "sje30/yesterbox",
+  "unstable": {
+   "version": [
+    20200327,
+    52
+   ],
+   "commit": "10591342f1759e25756f5865371a53c132d8b0a0",
+   "sha256": "0cd77m4zyqs74iz56l4h0k7ccxnxhis0247j4f5mf94s51fn1x7p"
+  }
+ },
+ {
+  "ename": "yoficator",
+  "commit": "5156f01564978718dd99ab3a54f19b6512de5c3c",
+  "sha256": "0b6lv6wk5ammhb9rws9kig02wkm84i5avm7a1vd4sb7wkgm9nj9r",
+  "fetcher": "gitlab",
+  "repo": "link2xt/yoficator",
+  "unstable": {
+   "version": [
+    20190509,
+    1620
+   ],
+   "commit": "fa914f9648515bca54b5e558ca57d2b65fa57491",
+   "sha256": "0mgkwjprcj47zn8kd3ppqnbnmnn00cvnbs0r0h5951966vshh13f"
+  }
+ },
+ {
+  "ename": "yoshi-theme",
+  "commit": "6e9a549e31c4097ee24b4bff12ec5d20d3beac68",
+  "sha256": "1kzdjs3rzg9rxrjgsk0wk75rwvbip6ixg1apcxv2c1a6biqqf2hv",
+  "fetcher": "github",
+  "repo": "ryuslash/yoshi-theme",
+  "unstable": {
+   "version": [
+    20200422,
+    208
+   ],
+   "commit": "caa83e4475885a2c9a126630f0feec1ce2eb0c4e",
+   "sha256": "0sga52lz54c2v08j6m9v3ddv7rlpdcgi9lkxn1cvajm5h60b20r8"
+  },
+  "stable": {
+   "version": [
+    6,
+    2,
+    0
+   ],
+   "commit": "70365870ff823b954aa85972217d8f116c45d939",
+   "sha256": "1myrvw0brl6cn3gljbplgxj3mr3mzicfymg7sir8hrk4d5g498yn"
+  }
+ },
+ {
+  "ename": "youdao-dictionary",
+  "commit": "712bdf83f71c2105754f9b549a889ffc5b7ba565",
+  "sha256": "1qfk7s18br9jask1bpida0cjxks098qpz0ssmw8misi3bjax0fym",
+  "fetcher": "github",
+  "repo": "xuchunyang/youdao-dictionary.el",
+  "unstable": {
+   "version": [
+    20200429,
+    259
+   ],
+   "deps": [
+    "chinese-word-at-point",
+    "names",
+    "popup",
+    "pos-tip"
+   ],
+   "commit": "bd839711e3cf6d3eb9c308cea5694369a440899e",
+   "sha256": "12r6avj1mxjj46s2p6kwhixhkinkm9krd62sy9ji7v9np2gqf7ll"
+  },
+  "stable": {
+   "version": [
+    0,
+    4
+   ],
+   "deps": [
+    "chinese-word-at-point",
+    "names",
+    "popup"
+   ],
+   "commit": "a6e44e4fb93cc1b9f1067f10cf854b0bfc3fe732",
+   "sha256": "1m4zri7kiw70062w2sp4fdqmmx2vmjisamjwmjdg6669dzvnpawq"
+  }
+ },
+ {
+  "ename": "ytel",
+  "commit": "ec52f03658dca774daf7301e81edb20aedf03c10",
+  "sha256": "0adxiw83rah9hln3k8gm6s7ks3xpqfknypjb9j51lxcabc7c1677",
+  "fetcher": "github",
+  "repo": "grastello/ytel",
+  "unstable": {
+   "version": [
+    20200510,
+    1405
+   ],
+   "commit": "828323f9acb654d8f61ccbca510b471fb00879ee",
+   "sha256": "1zixqicpdywzdc2pkx9h08y3kphmn9zcx44bj2rqg3h8xsmjayk5"
+  }
+ },
+ {
+  "ename": "z3-mode",
+  "commit": "e056fb14b46b97ff31b1db3b8bd31e395a54cd87",
+  "sha256": "183lzhgjj480ca2939za3rlnsbfn24mgi501n66h5wim950v7vgd",
+  "fetcher": "github",
+  "repo": "zv/z3-mode",
+  "unstable": {
+   "version": [
+    20151120,
+    2255
+   ],
+   "deps": [
+    "flycheck"
+   ],
+   "commit": "163dc01d59e9880b4dc188d4e1ad84d6c0c852e1",
+   "sha256": "1k7m3xk5ksbr2s3ypz5yqafz9sfav1m0qk2jz1xyi3fdaw2j0w2z"
+  }
+ },
+ {
+  "ename": "zeal-at-point",
+  "commit": "4bcb472b6b18b75acd9c68e1fc7ecce4c2a40d8f",
+  "sha256": "1cz53plk5bax5azm13y7xz530qcfh0scm0cgrkrgwja2wwlxirnw",
+  "fetcher": "github",
+  "repo": "jinzhu/zeal-at-point",
+  "unstable": {
+   "version": [
+    20180131,
+    2354
+   ],
+   "commit": "0fc3263f44e95acd3e9d91057677621ce4d297ee",
+   "sha256": "0aq9w9pjyzdgf63hwffhph6k43vv3cxmffklrjkjj3hqv796k8yd"
+  }
+ },
+ {
+  "ename": "zel",
+  "commit": "25b445a1dea5e8f1042bed6b5372471c25129fd8",
+  "sha256": "0fwc1fghsw2rg4fv10kgc9d6rhbq20xa9diqcvp1f1cqs12rfhpd",
+  "fetcher": "github",
+  "repo": "rudolfochrist/zel",
+  "unstable": {
+   "version": [
+    20171014,
+    832
+   ],
+   "deps": [
+    "frecency"
+   ],
+   "commit": "9dae2d212224d1deae1f62561fa8e4d689fd09f2",
+   "sha256": "1518wp3zjfdvzz5r22cjgn735c4yxr345qzj40b5agww4dsxmwmp"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    2
+   ],
+   "deps": [
+    "frecency"
+   ],
+   "commit": "1d938ac01a42e7a985a3f92f5e97bc09e057676e",
+   "sha256": "1hk84x4aqcfd3jggk9san1v4kr58v2zhikbv9sh3dcii6x5w2nv0"
+  }
+ },
+ {
+  "ename": "zen-and-art-theme",
+  "commit": "692cfa0e9edbc1b7114e2ae2f36bef34b20ad17c",
+  "sha256": "0b2lflji955z90xl9iz2y1vm04yljghbw4948gh5vv5p7mwibgf2",
+  "fetcher": "github",
+  "repo": "developernotes/zen-and-art-theme",
+  "unstable": {
+   "version": [
+    20120622,
+    1437
+   ],
+   "commit": "a7226cbce0bca2501d69a620cb2aeabfc396c232",
+   "sha256": "0dnaxhsw549k54j0mgydm7qbl4pizgipfyzc15f9afsxa107rpnl"
+  }
+ },
+ {
+  "ename": "zen-mode",
+  "commit": "42911a6fe084d88ed12fb87e0e03f7a6f176ec6c",
+  "sha256": "1fr6bp60jbv7dkhkwqk83d8g139rsfk95ljyjch5xvhl1bj0jmwg",
+  "fetcher": "github",
+  "repo": "zenlang/zen-mode",
+  "unstable": {
+   "version": [
+    20191224,
+    706
+   ],
+   "commit": "3d34bce20c1d7d35b99916672ea0dd67a96c7716",
+   "sha256": "1ykc58imkrhk4ib8mdgs7q7qrjbj84bm0rgfpgqk0dkfy16daj2q"
+  }
+ },
+ {
+  "ename": "zenburn-theme",
+  "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a",
+  "sha256": "1kb371j9aissj0vy07jw4ydfn554blc8b2rbi0x1dvfksr2rhsn9",
+  "fetcher": "github",
+  "repo": "bbatsov/zenburn-emacs",
+  "unstable": {
+   "version": [
+    20200305,
+    737
+   ],
+   "commit": "7dd796840376342426f60018a6cf209228452f3e",
+   "sha256": "0zzg95sifg6ybh3ava67z688fycklqragkr3baxlhl2jfnwsps2l"
+  },
+  "stable": {
+   "version": [
+    2,
+    6
+   ],
+   "commit": "4c75edfe7862c903b2584266284ed951004f5b62",
+   "sha256": "1n87r5hs7h5r8dgfid66skpzcypl9hssr9m3npp916g6jfsi782f"
+  }
+ },
+ {
+  "ename": "zencoding-mode",
+  "commit": "e7f2ebb9d860aa4f0797cdaadaa35fb3f5c4460b",
+  "sha256": "1fclad1dyngyg9ncfkcqfxybvy8482i2bd409cgxi9y4h1wc7ws7",
+  "fetcher": "github",
+  "repo": "rooney/zencoding",
+  "unstable": {
+   "version": [
+    20140213,
+    822
+   ],
+   "commit": "58e42af182c98cb9941d27cd042d227fbf4e146c",
+   "sha256": "1y3wj15kfbgskl29glmba6lzq43rcm141p4i5s180aqcw7ydp5vr"
+  }
+ },
+ {
+  "ename": "zenity-color-picker",
+  "commit": "8b4c6b03c5ff78ce327dcf66b175e266bbc53dbf",
+  "sha256": "0rim1mbhlb2lj302c58rs5l7bd168nxg1jpir6cbpf8rp0k35ldb",
+  "fetcher": "git",
+  "url": "https://bitbucket.org/Soft/zenity-color-picker.el",
+  "unstable": {
+   "version": [
+    20160302,
+    1154
+   ],
+   "commit": "4f4f46676a461ebc881487fb70c8c181e323db5e",
+   "sha256": "14i2k52qz77dv04w39fyp9hfq983fwa3803anqragk608xgwpf4s"
+  }
+ },
+ {
+  "ename": "zeno-theme",
+  "commit": "9703a222f51dc283e9462cceb5afeb009f7401dc",
+  "sha256": "0bqv1gdqlh7i48ckpgss6h9mmc9hpkqlb94aam0kkq2ga125gmwc",
+  "fetcher": "github",
+  "repo": "jbharat/zeno-theme",
+  "unstable": {
+   "version": [
+    20181027,
+    118
+   ],
+   "commit": "0914c4a5b1b9499e7f1ca5699b1c3ea2f4be3f1a",
+   "sha256": "1zl1ks7n35i9mn5w7ac3j15820fbgpbcmmysv25crvi4g9z94mqj"
+  }
+ },
+ {
+  "ename": "zephir-mode",
+  "commit": "fac9fb89cbe5c3eea987fadf23db20c214eab4d9",
+  "sha256": "133m47a54hdsczzmk3wg7f47q314qnw824lkh8zqx0nw68063i79",
+  "fetcher": "github",
+  "repo": "zephir-lang/zephir-mode",
+  "unstable": {
+   "version": [
+    20200417,
+    830
+   ],
+   "deps": [
+    "cl-lib",
+    "pkg-info"
+   ],
+   "commit": "4e9618b77dff67c1c7b6fff78605a62311db88b8",
+   "sha256": "0chh35h479jm0zcjxqyd9v1gzs2adicvyihdls87g8minmwvl19r"
+  },
+  "stable": {
+   "version": [
+    0,
+    6,
+    0
+   ],
+   "deps": [
+    "cl-lib",
+    "pkg-info"
+   ],
+   "commit": "9adc5cf07a9117d25eaab41867ddde914c6d2f5a",
+   "sha256": "0g2vfscikz8qa0danvcickcjnz99yjm9jgk3sci094gmgwka3j2y"
+  }
+ },
+ {
+  "ename": "zero-input",
+  "commit": "5dad98623a72d61e1421abbe859e5f8764381751",
+  "sha256": "1av9qd2ggngrb23z3v9rwxnr8calmybis96ja7xfs5z8gnky5bhz",
+  "fetcher": "git",
+  "url": "https://gitlab.emacsos.com/sylecn/zero-el",
+  "unstable": {
+   "version": [
+    20200405,
+    1220
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "729da9f4b99acb744ee6974ed7f3d4e252fd19da",
+   "sha256": "1bcka4gzcb5r2y5g7a06l05n6ixvs7lm37w4ghvvq12ci2ypzp04"
+  },
+  "stable": {
+   "version": [
+    2,
+    8,
+    0
+   ],
+   "deps": [
+    "s"
+   ],
+   "commit": "729da9f4b99acb744ee6974ed7f3d4e252fd19da",
+   "sha256": "1bcka4gzcb5r2y5g7a06l05n6ixvs7lm37w4ghvvq12ci2ypzp04"
+  }
+ },
+ {
+  "ename": "zerodark-theme",
+  "commit": "d00b78ead693e844e35c760fe2c39b8ed6cb0d81",
+  "sha256": "1nqzswmnq6h0av4rivqm237h7ghp7asa2nvls7nz4ma467p9qhp9",
+  "fetcher": "github",
+  "repo": "NicolasPetton/zerodark-theme",
+  "unstable": {
+   "version": [
+    20190528,
+    923
+   ],
+   "deps": [
+    "all-the-icons"
+   ],
+   "commit": "df22536a244293591575e56970bf83814faa7c14",
+   "sha256": "0pfyd1iqs7l2ngwgvj9n0r9k1px7yl16h8n502xdyf0pprxcs4p6"
+  },
+  "stable": {
+   "version": [
+    4,
+    6
+   ],
+   "deps": [
+    "all-the-icons"
+   ],
+   "commit": "df22536a244293591575e56970bf83814faa7c14",
+   "sha256": "0pfyd1iqs7l2ngwgvj9n0r9k1px7yl16h8n502xdyf0pprxcs4p6"
+  }
+ },
+ {
+  "ename": "zetteldeft",
+  "commit": "c643adaf73e8324092874887636cdf0365c481ee",
+  "sha256": "1vd70mrwn9cfalmiv97ja79hbdmyl5bm9cqsz5c276gk6v6pzvpc",
+  "fetcher": "github",
+  "repo": "efls/zetteldeft",
+  "unstable": {
+   "version": [
+    20200516,
+    1108
+   ],
+   "deps": [
+    "deft"
+   ],
+   "commit": "f3503ec8fde88d733b7bbbd4431e85de396a3fe8",
+   "sha256": "0843k0i6szjvc7f51q0pm7vmxpfz68911d75m75rg54k1jbynazq"
+  },
+  "stable": {
+   "version": [
+    0,
+    3
+   ],
+   "deps": [
+    "deft"
+   ],
+   "commit": "271ea573b0a4f265d16108db2ec7c928f3e9aa31",
+   "sha256": "0y709x03har1sm30vbja3k3vw4p1nfck5zii7cigl4vg0scpcri6"
+  }
+ },
+ {
+  "ename": "zig-mode",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "1kg1x0l65nqqpzn5np41ya9khr1yqcg5ki7z3jw0g4wxdbz7lrbx",
+  "fetcher": "github",
+  "repo": "ziglang/zig-mode",
+  "unstable": {
+   "version": [
+    20200322,
+    131
+   ],
+   "commit": "fc7fde327f45533bb73be643e7bda1eda10394b6",
+   "sha256": "1ld34xs25bysxw9ialrlm6pnp5qbzx94zbb3594ghc2ggz5ph5d5"
+  }
+ },
+ {
+  "ename": "zim-wiki-mode",
+  "commit": "a10d6b0fb4d5b87d7dea1bbc4e4e0495aa51627c",
+  "sha256": "188g8jf5004amq10gm7p9w1m1ff67l8sxlp1m38wpkivhkgfxzcb",
+  "fetcher": "github",
+  "repo": "WillForan/zim-wiki-mode",
+  "unstable": {
+   "version": [
+    20200316,
+    1223
+   ],
+   "deps": [
+    "dokuwiki-mode",
+    "helm-ag",
+    "helm-projectile",
+    "link-hint",
+    "pretty-hydra"
+   ],
+   "commit": "410fa67d5947b8801b03a58fcb2bd414cb5294f7",
+   "sha256": "14dmda7ahnflv0db9yzssz7bidz3zsdnxxwnby0y48vcjv94nnl5"
+  }
+ },
+ {
+  "ename": "zlc",
+  "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487",
+  "sha256": "0qw0qf14l09mcnw7h0ccbw17psfpra76qfawkc10zpdb5a2167d0",
+  "fetcher": "github",
+  "repo": "mooz/emacs-zlc",
+  "unstable": {
+   "version": [
+    20151011,
+    157
+   ],
+   "commit": "4dd2ba267ecdeac845a7cbb3147294ee7daa25f4",
+   "sha256": "1gb51bqdf87yibs1zngk6q090p05293cpwlwbwzhnih9sl6wkq8x"
+  }
+ },
+ {
+  "ename": "zmq",
+  "commit": "72f4dcc2723de826bf1af7235ac6d9119a243c63",
+  "sha256": "14bbh00a58xgxyxl8zjxl57rf6351fnwsnk4cvvy341fvf86dklc",
+  "fetcher": "github",
+  "repo": "dzop/emacs-zmq",
+  "unstable": {
+   "version": [
+    20200305,
+    2345
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "2aed40aee51d19cbca83d1f1edc23a5f1522dd8d",
+   "sha256": "1viz4sw4vmnjhhqw68wp8a4ks1751s2dk09gx2gyl8gy5vw2fcg6"
+  },
+  "stable": {
+   "version": [
+    0,
+    10,
+    10
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "6120251d86bc85138305c1bf02b1000dc435fdb5",
+   "sha256": "0ngxm5mm0kqgvn8977ryrngamx0khzlw86d8vz5s0jhm2kgwnqp8"
+  }
+ },
+ {
+  "ename": "znc",
+  "commit": "855ea20024b606314f8590129259747cac0bcc97",
+  "sha256": "1017dlzbpb3ww0zb370bgsdrzr4kcc72ddby9j63d95chz2jg0hb",
+  "fetcher": "github",
+  "repo": "sshirokov/ZNC.el",
+  "unstable": {
+   "version": [
+    20160627,
+    2032
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "ce468d185e4a949c45fdd7586313144bc69d4fe5",
+   "sha256": "0jh11lbzsndsz9i143av7510417nzwy4j3mmpq7cjixfbmnxdq06"
+  }
+ },
+ {
+  "ename": "zombie",
+  "commit": "0da12385908c0e2ecd087ea7572fedf0a2dcf03f",
+  "sha256": "0ji3nsxwbxmmygd6plpbc1lkw6i5zw4y6x3r5n2ah3ds4vjr7cnv",
+  "fetcher": "github",
+  "repo": "zk-phi/zombie",
+  "unstable": {
+   "version": [
+    20141222,
+    1616
+   ],
+   "commit": "ff8cd1b4cdbb4b0b9b8fd1ec8f6fb93eba249345",
+   "sha256": "1gm3ly6czbw4vrxcslm50jy6nxf2qsl656cjwbyhw251wppn75cg"
+  }
+ },
+ {
+  "ename": "zombie-trellys-mode",
+  "commit": "e66db80ab82a69542688cd57c9e0ec10e6616c87",
+  "sha256": "19xzvppw7f35s82hm0y7sga8dyjjyy0dxy6vji4hxdpjziz7lggv",
+  "fetcher": "github",
+  "repo": "david-christiansen/zombie-trellys-mode",
+  "unstable": {
+   "version": [
+    20150304,
+    1448
+   ],
+   "deps": [
+    "cl-lib",
+    "haskell-mode"
+   ],
+   "commit": "7f0c45fdda3a44c3b6d1762d116abb1421b8fba2",
+   "sha256": "04m53hzk5n9vxh0gxi8jzpdhsdjlxnvz7hmsisr3bs99v603ha01"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    1
+   ],
+   "deps": [
+    "cl-lib",
+    "haskell-mode"
+   ],
+   "commit": "9e99d444a387dd1634cab62ef802683f5bf5d907",
+   "sha256": "1ksjd3askc3k1l0b3nia5mzkxa74bidh2x0xlrj4qs4im5445vnz"
+  }
+ },
+ {
+  "ename": "zone-nyan",
+  "commit": "20b2cc78b41a26e434b984943681fea774fd3c50",
+  "sha256": "12k55m9fxkvx57n99dynpdsx391z8pzd6cjm4bqarf88bhv7f72p",
+  "fetcher": "git",
+  "url": "https://depp.brause.cc/zone-nyan.git",
+  "unstable": {
+   "version": [
+    20200506,
+    1207
+   ],
+   "deps": [
+    "esxml"
+   ],
+   "commit": "48625814f42c39521405d08009e1d44108d880ac",
+   "sha256": "1ii7w9y357l2467733wy7nnpikpdacjfj9bp2a54nq8h60gfr661"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "deps": [
+    "esxml"
+   ],
+   "commit": "e36875d83ad3dce14f23864688959fa0d98ba410",
+   "sha256": "1lrgirfvcvbir7csshkhhwj99jj1x5aprhw7xfiicv7nan9m6gjy"
+  }
+ },
+ {
+  "ename": "zone-rainbow",
+  "commit": "c8f678d32c8cd1bcc8ec042e7e68ca3a5259da65",
+  "sha256": "0l51fmhvx9vsxbs62cbjgqphb691397f651nqin7cj3dfvchzh4j",
+  "fetcher": "github",
+  "repo": "kawabata/zone-rainbow",
+  "unstable": {
+   "version": [
+    20160120,
+    1334
+   ],
+   "commit": "2ba4f1a87c69c4712124ebf12c1f3ea171e1af36",
+   "sha256": "0w550l9im3mhxhja1b7cr9phdcbvx5lprw551lj0d1lv7qvjasz0"
+  }
+ },
+ {
+  "ename": "zone-select",
+  "commit": "ecad1475d9a04ddd84f86ed950f742f68bcf71f8",
+  "sha256": "05kc211invmy4ajwf71vgr2b7bdgn99c4a26m95gcjqgy3sh5xzz",
+  "fetcher": "github",
+  "repo": "kawabata/zone-select",
+  "unstable": {
+   "version": [
+    20160118,
+    1419
+   ],
+   "deps": [
+    "dash"
+   ],
+   "commit": "bf30da12f1625fe6563448fccf3c506acad10af7",
+   "sha256": "17mrzf85ym0x5ih4l6sjdjlcmviabf8c8rpvpkd90gp9qxd8pyx1"
+  }
+ },
+ {
+  "ename": "zone-sl",
+  "commit": "11c976519e0cb320e48f40f4d735e557b3dfc1b9",
+  "sha256": "04rwd6vj3abk3bzhq3swxwcq5da2n9cldrcmvnqgjr975np4cgs3",
+  "fetcher": "github",
+  "repo": "kawabata/zone-sl",
+  "unstable": {
+   "version": [
+    20160201,
+    1210
+   ],
+   "commit": "7ec22e3661c6348382f9fc39a9d0063dbd2352ff",
+   "sha256": "0m1q45pza61j0fp8cxkgmds5fyjrk0nqpwhg8m91610m3pvyc3ap"
+  }
+ },
+ {
+  "ename": "zoom",
+  "commit": "3fe094c99756ad29eda9bc51f31bb70c4ddc4131",
+  "sha256": "09bk0nnfj72an2b3rravd6qp21gdgcm1m55qnf2r8rzbgqymq5ls",
+  "fetcher": "github",
+  "repo": "cyrus-and/zoom",
+  "unstable": {
+   "version": [
+    20200106,
+    1204
+   ],
+   "commit": "a54324344eca49cfb11626446e1ebe239cba6557",
+   "sha256": "01ycz8496ywb2d980hxpvlnzxw5012mrj8kh8d97vdclhdbkx0y1"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    2
+   ],
+   "commit": "578295532fb1c4ad2a2e95894e65cce02f812b54",
+   "sha256": "1qcni15mps7w9waail21x0fy2rrd5y8cm4yzi8rs2ar4vqrjbyyp"
+  }
+ },
+ {
+  "ename": "zoom-window",
+  "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b",
+  "sha256": "0h4rr6h79g6sh8caa0l0fxssbd02v2llapqmikz72vpsghqg7y57",
+  "fetcher": "github",
+  "repo": "emacsorphanage/zoom-window",
+  "unstable": {
+   "version": [
+    20200323,
+    720
+   ],
+   "commit": "ab14a365f3e496b07f5efc20992f9094ec166f06",
+   "sha256": "0ah0gfzp0c90vrqmsfd6crl3i6bjqgb78hnpcvvg53gk5i19i4aw"
+  },
+  "stable": {
+   "version": [
+    0,
+    6
+   ],
+   "commit": "ab14a365f3e496b07f5efc20992f9094ec166f06",
+   "sha256": "0ah0gfzp0c90vrqmsfd6crl3i6bjqgb78hnpcvvg53gk5i19i4aw"
+  }
+ },
+ {
+  "ename": "zop-to-char",
+  "commit": "b0a9277f1a5f1aef8886e739c73dea91d3f81dc5",
+  "sha256": "0jnspvqqvnaplld083j7cqqxw122qazh88ab7hymci36m3ka9hga",
+  "fetcher": "github",
+  "repo": "thierryvolpiatto/zop-to-char",
+  "unstable": {
+   "version": [
+    20160212,
+    1554
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "00152aa666354b27e56e20565f186b363afa0dce",
+   "sha256": "1s4adi9hyhxn7ynx195mgg10h817hxdmlzlp09633bj0llr1mjn3"
+  },
+  "stable": {
+   "version": [
+    1,
+    1
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "816ea90337db0545a2f0a5079f4d7b3a2822af7d",
+   "sha256": "14waf3g7b92k3qd5088w4pn0wcspxjfkbswlzf7nnkjliw1yh0kf"
+  }
+ },
+ {
+  "ename": "zossima",
+  "commit": "b7566fe6fffc38981ea33582d783c58f3842fe28",
+  "sha256": "11kmnbqv4s8arindg7cxcdhbvfxsckks332wn7aiyb3bjhcgzwjb",
+  "fetcher": "github",
+  "repo": "technomancy/zossima",
+  "unstable": {
+   "version": [
+    20121124,
+    35
+   ],
+   "deps": [
+    "inf-ruby"
+   ],
+   "commit": "991676635c374d2a12714dcf48c1ce2d6f97a375",
+   "sha256": "0fgwxw7r3zfv0b7xi8bx7kxff2r5hdw9gxf16kwq04fnh18nhi39"
+  }
+ },
+ {
+  "ename": "zotelo",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "0y6s5ma7633h5pf9zj7vkazidlf211va7nk47ppb1q0iyfkyln36",
+  "fetcher": "github",
+  "repo": "vspinu/zotelo",
+  "unstable": {
+   "version": [
+    20160602,
+    949
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "d9dc089b9adfcc70a63f2a84269a12eb7cb4c748",
+   "sha256": "1gff44nwiqhqhppwmsn38njkph4g9bw669p95m8p2avb7x7kiybl"
+  },
+  "stable": {
+   "version": [
+    1,
+    3
+   ],
+   "commit": "56eaaa76f80bd15710e68af4a1e585394af987d3",
+   "sha256": "0qwdbzfi8mddmchdd9ab9ms1ynlc8dx08i6g2mf3za1sbcivdqsr"
+  }
+ },
+ {
+  "ename": "zotxt",
+  "commit": "b633453e77a719f6b6b6564e66c1c1260db38aa6",
+  "sha256": "18jla05g2k8zfrmp7q9kpr1mpw6smxzdyn8nfghm306wvv9ff8y5",
+  "fetcher": "gitlab",
+  "repo": "egh/zotxt-emacs",
+  "unstable": {
+   "version": [
+    20200120,
+    1950
+   ],
+   "deps": [
+    "deferred",
+    "request"
+   ],
+   "commit": "2e7ce60fa4b0311c646a509c140fd1c94c08fa79",
+   "sha256": "0ww0bg3bbrynnfhkkr7vdsrjc3341ngkzf83nn934zl0aphg87wb"
+  },
+  "stable": {
+   "version": [
+    5,
+    0,
+    5
+   ],
+   "deps": [
+    "deferred",
+    "request"
+   ],
+   "commit": "98323098c37a444de49cfef44f1506e9386e8c5f",
+   "sha256": "1zr67h0w49rsi84mgf6jdili28h8782q6vjl8za0iq1hcx9zqxyf"
+  }
+ },
+ {
+  "ename": "zoutline",
+  "commit": "4a26341f491145938aee9b531cd861200bfa2f6d",
+  "sha256": "1yyww84b58ymbx0w1gkgd0csr0cwlghdmnxk0jbzwc45g9g42k1m",
+  "fetcher": "github",
+  "repo": "abo-abo/zoutline",
+  "unstable": {
+   "version": [
+    20190520,
+    1819
+   ],
+   "commit": "63756846f8540b6faf89d885438186e4fe1c7d8a",
+   "sha256": "1w0zh6vs7klgivq5r030a82mcfg1zwic4x3fimyiqyg5n8p67hyx"
+  },
+  "stable": {
+   "version": [
+    0,
+    2,
+    0
+   ],
+   "commit": "63756846f8540b6faf89d885438186e4fe1c7d8a",
+   "sha256": "1w0zh6vs7klgivq5r030a82mcfg1zwic4x3fimyiqyg5n8p67hyx"
+  }
+ },
+ {
+  "ename": "zpl-mode",
+  "commit": "0bf11cd6ceb2633f968134d80f37d32f91c48227",
+  "sha256": "0wqhwzanvc1gpnykfqzi02p9zx0c1n6gnavg5dv1mlmc8x0hr67s",
+  "fetcher": "github",
+  "repo": "ax487/zpl-mode",
+  "unstable": {
+   "version": [
+    20180906,
+    1059
+   ],
+   "commit": "35e7e23c6baf31b5e65dd7405c8ab9b13c70637e",
+   "sha256": "147d7ylpk77zcsjim0my6cbyms28yd7mfaigmzm009jc1bn4r7f5"
+  }
+ },
+ {
+  "ename": "zpresent",
+  "commit": "d3828ad7599d13728b5571b882344c3ada434b85",
+  "sha256": "0i1qrb9qplmx9kx1286xypjyy48r9y3cvnlhi06r583adfr02wab",
+  "fetcher": "hg",
+  "url": "https://hg.sr.ht/~zck/zpresent",
+  "unstable": {
+   "version": [
+    20200417,
+    309
+   ],
+   "deps": [
+    "dash",
+    "org-parser",
+    "request"
+   ],
+   "commit": "406967322b7692492a5942d901335d626cace4d0",
+   "sha256": "1nn6dvzcayh6nv6xn3siv09iixc5c3gy9c8y1fdwzq81yny9l2fr"
+  }
+ },
+ {
+  "ename": "zprint-mode",
+  "commit": "188d40daec1ff86dcfa807a91eb77a1281de3951",
+  "sha256": "1dwf941plwxib96n4g95pm51hhhaq643djn1hps8s7yyrzz77czz",
+  "fetcher": "github",
+  "repo": "pesterhazy/zprint-mode.el",
+  "unstable": {
+   "version": [
+    20191130,
+    1829
+   ],
+   "commit": "4d0dd23b40155618181d9d1e4c82849e0d73b659",
+   "sha256": "0im63h7ang7zypzbf45k5pxz11svyyk8pab9d4qg9jsb7bz9v7k0"
+  }
+ },
+ {
+  "ename": "ztree",
+  "commit": "f151e057c05407748991f23c021e94c178b87248",
+  "sha256": "1fk5xz8qq3azc66f954x5qvym94xnv4fg6wy83ihdfwycsas7j20",
+  "fetcher": "github",
+  "repo": "fourier/ztree",
+  "unstable": {
+   "version": [
+    20191108,
+    2234
+   ],
+   "deps": [
+    "cl-lib"
+   ],
+   "commit": "0a5b25f364490a58ef7371534a39c75d11f54132",
+   "sha256": "0a0p9srdkc79isw99al3vba50vc435654wix07r9jcgdh856zbsr"
+  }
+ },
+ {
+  "ename": "zweilight-theme",
+  "commit": "6440f81aed1fcddcaf7afeedb74520e605211986",
+  "sha256": "1j8skn9hz1zkpdg7q0njv5b50cbvrixjjmkp43p58gx98q02p0kq",
+  "fetcher": "github",
+  "repo": "philiparvidsson/Zweilight-Theme-for-Emacs",
+  "unstable": {
+   "version": [
+    20170113,
+    605
+   ],
+   "commit": "7f45ab9e23164d65538edb2beb9692ecdc24c31e",
+   "sha256": "142ixk47a1x6xz8ibavzq7jxppjc2qvfwbly4sdyiwfpznbi4l3a"
+  }
+ },
+ {
+  "ename": "zygospore",
+  "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44",
+  "sha256": "0n9qs6fymdjly0i4rmx87y8gapfn5sqivsivcffi42vcb5f17kxj",
+  "fetcher": "github",
+  "repo": "LouisKottmann/zygospore.el",
+  "unstable": {
+   "version": [
+    20140703,
+    852
+   ],
+   "commit": "1af5ee663f5a7aa08d96a77cacff834dcdf55ea8",
+   "sha256": "0v73fgb0gf81vlihiicy32v6x86rr2hv0bxlpw7d3pk4ng1a0l3z"
+  },
+  "stable": {
+   "version": [
+    0,
+    0,
+    3
+   ],
+   "commit": "1af5ee663f5a7aa08d96a77cacff834dcdf55ea8",
+   "sha256": "0v73fgb0gf81vlihiicy32v6x86rr2hv0bxlpw7d3pk4ng1a0l3z"
+  }
+ },
+ {
+  "ename": "zzz-to-char",
+  "commit": "7063cbc1f1501ce81552d7ef1d42d1309f547c42",
+  "sha256": "16vwp0krshmn5x3ry1j512g4kydx39znjqzri4j7wgg49bz1n7vh",
+  "fetcher": "github",
+  "repo": "mrkkrp/zzz-to-char",
+  "unstable": {
+   "version": [
+    20190713,
+    1344
+   ],
+   "deps": [
+    "avy",
+    "cl-lib"
+   ],
+   "commit": "09613d53e1e6e7c58102fb8812bbef2121d57026",
+   "sha256": "1rfi7gp5z2lm71qrf9akkn8iiiv297i1mqkvwyv7vlhx5vk21r4s"
+  },
+  "stable": {
+   "version": [
+    0,
+    1,
+    3
+   ],
+   "deps": [
+    "avy",
+    "cl-lib"
+   ],
+   "commit": "e571da33a0dde629314847338eedec84b40e9c32",
+   "sha256": "03i5bdq7d8la9kbvykgi7aa7v3c35nibgcd4pam99l47pm599ili"
+  }
+ }
+]
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/rect-mark/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/rect-mark/default.nix
new file mode 100644
index 000000000000..4320a88457a4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/rect-mark/default.nix
@@ -0,0 +1,32 @@
+{stdenv, fetchurl, emacs}:
+
+stdenv.mkDerivation {
+  name = "rect-mark-1.4";
+
+  src = fetchurl {
+    url = "http://emacswiki.org/emacs/download/rect-mark.el";
+    sha256 = "0pyyg53z9irh5jdfvh2qp4pm8qrml9r7lh42wfmdw6c7f56qryh8";
+  };
+
+  phases = [ "buildPhase" "installPhase"];
+
+  buildInputs = [ emacs ];
+
+  buildPhase = ''
+    cp $src rect-mark.el
+    emacs --batch -f batch-byte-compile rect-mark.el
+  '';
+
+  installPhase = ''
+    install -d $out/share/emacs/site-lisp
+    install rect-mark.el* $out/share/emacs/site-lisp
+  '';
+
+  meta = {
+    description = "Mark a rectangle of text with highlighting";
+    homepage = "http://emacswiki.org/emacs/RectangleMark";
+    license = stdenv.lib.licenses.gpl2Plus;
+
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/session-management-for-emacs/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/session-management-for-emacs/default.nix
new file mode 100644
index 000000000000..e4b739af0517
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/session-management-for-emacs/default.nix
@@ -0,0 +1,27 @@
+{stdenv, fetchurl, emacs}:
+
+stdenv.mkDerivation {
+  name = "session-management-for-emacs-2.2a";
+  
+  src = fetchurl {
+    url = "mirror://sourceforge/emacs-session/session-2.2a.tar.gz";
+    sha256 = "37dfba7420b5164eab90dafa9e8bf9a2c8f76505fe2fefa14a64e81fa76d0144";
+  };
+
+  buildInputs = [emacs];
+  
+  installPhase = ''
+    mkdir -p "$out/share/emacs/site-lisp"
+    cp lisp/*.el "$out/share/emacs/site-lisp/"
+  '';
+
+  meta = { 
+    /* installation: add to your ~/.emacs
+       (require 'session)
+       (add-hook 'after-init-hook 'session-initialize)
+    */
+    description = "Small session management for emacs";
+    homepage = "http://emacs-session.sourceforge.net/";
+    license = "GPL";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/sunrise-commander/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/sunrise-commander/default.nix
new file mode 100644
index 000000000000..7e611d68a0a4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/sunrise-commander/default.nix
@@ -0,0 +1,30 @@
+{stdenv, fetchgit, emacs}:
+
+stdenv.mkDerivation {
+  name = "sunrise-commander-6r435";
+
+  src = fetchgit {
+    url = "https://github.com/escherdragon/sunrise-commander.git";
+    rev = "7a44ca7abd9fe79f87934c78d00dc2a91419a4f1";
+    sha256 = "2909beccc9daaa79e70876ac6547088c2459b624c364dda1886fe4d7adc7708b";
+  };
+
+  buildInputs = [ emacs ];
+
+  buildPhase = ''
+    emacs -L . --batch -f batch-byte-compile *.el
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/emacs/site-lisp
+    install *.el* $out/share/emacs/site-lisp
+  '';
+
+  meta = {
+    description = "Two-pane file manager for Emacs based on Dired and inspired by MC";
+    homepage = "http://www.emacswiki.org/emacs/Sunrise_Commander";
+    license = stdenv.lib.licenses.gpl3Plus;
+
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/sv-kalender/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/sv-kalender/default.nix
new file mode 100644
index 000000000000..211be0a90897
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/sv-kalender/default.nix
@@ -0,0 +1,22 @@
+{ fetchurl, stdenv, trivialBuild }:
+
+trivialBuild {
+  pname = "sv-kalender";
+  version = "1.9";
+
+  src = fetchurl {
+    url = "http://bigwalter.net/daniel/elisp/sv-kalender.el";
+    sha256 = "0kilp0nyhj67qscy13s0g07kygz2qwmddklhan020sk7z7jv3lpi";
+    postFetch = ''
+      echo "(provide 'sv-kalender)" >> $out
+    '';
+  };
+
+  meta = with stdenv.lib; {
+    description = "Swedish calendar for Emacs";
+    homepage = "http://bigwalter.net/daniel/elisp/sv-kalender.el";
+    platforms = platforms.all;
+    license = licenses.gpl3Plus;
+    maintainers = [ maintainers.rycee ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/tramp/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/tramp/default.nix
new file mode 100644
index 000000000000..b87390d4609f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/tramp/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, fetchurl, emacs, texinfo }:
+
+stdenv.mkDerivation rec {
+  name = "tramp-2.4.2";
+  src = fetchurl {
+    url = "mirror://gnu/tramp/${name}.tar.gz";
+    sha256 = "082nwvi99y0bvpl1yhn4yjc8a613jh1pdck253lxn062lkcxxw61";
+  };
+  buildInputs = [ emacs texinfo ];
+  meta = {
+    description = "Transparently access remote files from Emacs. Newer versions than built-in.";
+    homepage = "https://www.gnu.org/software/tramp";
+    license = stdenv.lib.licenses.gpl3Plus;
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/update-elpa b/nixpkgs/pkgs/applications/editors/emacs-modes/update-elpa
new file mode 100755
index 000000000000..ba2964b2ead0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/update-elpa
@@ -0,0 +1,4 @@
+#! /usr/bin/env nix-shell
+#! nix-shell --show-trace ./emacs2nix.nix -i bash
+
+exec elpa-packages.sh --names $EMACS2NIX/names.nix -o elpa-generated.nix
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/update-from-overlay b/nixpkgs/pkgs/applications/editors/emacs-modes/update-from-overlay
new file mode 100755
index 000000000000..fc5657e44196
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/update-from-overlay
@@ -0,0 +1,19 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i bash -p curl nix
+set -euxo pipefail
+
+# This script piggybacks on the automatic code generation done by the nix-community emacs overlay
+# You can use this to avoid running lengthy code generation jobs locally
+
+curl -s -O https://raw.githubusercontent.com/nix-community/emacs-overlay/master/repos/elpa/elpa-generated.nix
+nix-instantiate ../../../.. -A emacsPackagesNg.elpaPackages --show-trace
+git diff --exit-code elpa-generated.nix > /dev/null || git commit -m "emacsPackages.elpa-packages: $(date --iso)" -- elpa-generated.nix
+
+curl -s -O https://raw.githubusercontent.com/nix-community/emacs-overlay/master/repos/org/org-generated.nix
+nix-instantiate ../../../.. -A emacsPackagesNg.orgPackages --show-trace
+git diff --exit-code org-generated.nix > /dev/null || git commit -m "emacsPackages.org-packages: $(date --iso)" -- org-generated.nix
+
+curl -s -O https://raw.githubusercontent.com/nix-community/emacs-overlay/master/repos/melpa/recipes-archive-melpa.json
+env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPackages.melpaStablePackages
+env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPackages.melpaPackages
+git diff --exit-code recipes-archive-melpa.json > /dev/null || git commit -m "emacsPackages.melpa-packages: $(date --iso)" -- recipes-archive-melpa.json
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/update-melpa b/nixpkgs/pkgs/applications/editors/emacs-modes/update-melpa
new file mode 100755
index 000000000000..5c636416a5e6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/update-melpa
@@ -0,0 +1,6 @@
+#! /usr/bin/env nix-shell
+#! nix-shell --show-trace ./updater-emacs.nix -i bash
+
+SCRIPT_DIR="$( cd "$(dirname "$0")" ; pwd -P )"
+
+exec emacs --fg-daemon=updater --quick -l $SCRIPT_DIR/update-melpa.el -f run-updater "$@"
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/update-melpa.el b/nixpkgs/pkgs/applications/editors/emacs-modes/update-melpa.el
new file mode 100644
index 000000000000..b315777620ed
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/update-melpa.el
@@ -0,0 +1,434 @@
+;; -*- lexical-binding: t -*-
+
+;; This is the updater for recipes-archive-melpa.json
+
+(require 'promise)
+(require 'semaphore-promise)
+(require 'url)
+(require 'json)
+(require 'cl)
+(require 'subr-x)
+(require 'seq)
+
+;; # Lib
+
+(defun alist-set (key value alist)
+  (cons
+   (cons key value)
+   (assq-delete-all
+    key alist)))
+
+(defun alist-update (key f alist)
+  (let ((value (alist-get key alist)))
+    (cons
+     (cons key (funcall f value))
+     (assq-delete-all
+      key alist))))
+
+
+(defun process-promise (semaphore program &rest args)
+  "Generate an asynchronous process and
+return Promise to resolve in that process."
+  (promise-then
+   (semaphore-promise-gated
+    semaphore
+    (lambda (resolve reject)
+      (funcall resolve (apply #'promise:make-process program args))))
+   #'car))
+
+(defun mangle-name (s)
+  (if (string-match "^[a-zA-Z].*" s)
+      s
+    (concat "_" s)))
+
+;; ## Shell promise + env
+
+(defun as-string (o)
+  (with-output-to-string (princ o)))
+
+(defun assocenv (env &rest namevals)
+  (let ((process-environment (copy-sequence env)))
+    (mapc (lambda (e)
+            (setenv (as-string (car e))
+                    (cadr e)))
+          (seq-partition namevals 2))
+    process-environment))
+
+(defun shell-promise (semaphore env script)
+  (semaphore-promise-gated
+   semaphore
+   (lambda (resolve reject)
+     (let ((process-environment env))
+       (funcall resolve (promise:make-shell-command script))))))
+
+;; # Updater
+
+;; ## Previous Archive Reader
+
+(defun previous-commit (index ename variant)
+  (when-let (pdesc (and index (gethash ename index)))
+    (when-let (desc (and pdesc (gethash variant pdesc)))
+      (gethash 'commit desc))))
+
+(defun previous-sha256 (index ename variant)
+  (when-let (pdesc (and index (gethash ename index)))
+    (when-let (desc (and pdesc (gethash variant pdesc)))
+      (gethash 'sha256 desc))))
+
+(defun parse-previous-archive (filename)
+  (let ((idx (make-hash-table :test 'equal)))
+    (loop for desc in
+          (let ((json-object-type 'hash-table)
+                (json-array-type 'list)
+                (json-key-type 'symbol))
+            (json-read-file filename))
+          do (puthash (gethash 'ename desc)
+                      desc idx))
+    idx))
+
+;; ## Prefetcher
+
+;; (defun latest-git-revision (url)
+;;   (process-promise "git" "ls-remote" url))
+
+(defun prefetch (semaphore fetcher repo commit)
+  (promise-then
+   (apply 'process-promise
+          semaphore
+          (pcase fetcher
+            ("github"    (list "nix-prefetch-url"
+                               "--unpack" (concat "https://github.com/" repo "/archive/" commit ".tar.gz")))
+            ("gitlab"    (list "nix-prefetch-url"
+                               "--unpack" (concat "https://gitlab.com/" repo "/repository/archive.tar.gz?ref=" commit)))
+            ("bitbucket" (list "nix-prefetch-hg"
+                               (concat "https://bitbucket.com/" repo) commit))
+            ("hg"        (list "nix-prefetch-hg"
+                               repo commit))
+            ("git"       (list "nix-prefetch-git"
+                               "--fetch-submodules"
+                               "--url" repo
+                               "--rev" commit))
+            (_           (throw 'unknown-fetcher fetcher))))
+   (lambda (res)
+     (pcase fetcher
+       ("git" (alist-get 'sha256 (json-read-from-string res)))
+       (_ (car (split-string res)))))))
+
+(defun source-sha (semaphore ename eprops aprops previous variant)
+  (let* ((fetcher (alist-get 'fetcher eprops))
+         (url     (alist-get 'url eprops))
+         (repo    (alist-get 'repo eprops))
+         (commit  (gethash 'commit aprops))
+         (prev-commit (previous-commit previous ename variant))
+         (prev-sha256 (previous-sha256 previous ename variant)))
+    (if (and commit prev-sha256
+             (equal prev-commit commit))
+        (progn
+          (message "INFO: %s: re-using %s %s" ename prev-commit prev-sha256)
+          (promise-resolve `((sha256 . ,prev-sha256))))
+      (if (and commit (or repo url))
+          (promise-then
+           (prefetch semaphore fetcher (or repo url) commit)
+           (lambda (sha256)
+             (message "INFO: %s: prefetched repository %s %s" ename commit sha256)
+             `((sha256 . ,sha256)))
+           (lambda (err)
+             (message "ERROR: %s: during prefetch %s" ename err)
+             (promise-resolve
+              `((error . ,err)))))
+        (progn
+          (message "ERROR: %s: no commit information" ename)
+          (promise-resolve
+           `((error . "No commit information"))))))))
+
+(defun source-info (recipe archive source-sha)
+  (let* ((esym    (car recipe))
+         (ename   (symbol-name esym))
+         (eprops  (cdr recipe))
+         (aentry  (gethash esym archive))
+         (version (and aentry (gethash 'ver aentry)))
+         (deps    (when-let (deps (gethash 'deps aentry))
+                    (remove 'emacs (hash-table-keys deps))))
+         (aprops  (and aentry (gethash 'props aentry)))
+         (commit  (gethash 'commit aprops)))
+    (append `((version . ,version))
+            (when (< 0 (length deps))
+              `((deps . ,(sort deps 'string<))))
+            `((commit . ,commit))
+            source-sha)))
+
+(defun recipe-info (recipe-index ename)
+  (if-let (desc (gethash ename recipe-index))
+      (destructuring-bind (rcp-commit . rcp-sha256) desc
+        `((commit . ,rcp-commit)
+          (sha256 . ,rcp-sha256)))
+    `((error . "No recipe info"))))
+
+(defun start-fetch (semaphore recipe-index-promise recipes unstable-archive stable-archive previous)
+  (promise-all
+   (mapcar (lambda (entry)
+             (let* ((esym    (car entry))
+                    (ename   (symbol-name esym))
+                    (eprops  (cdr entry))
+                    (fetcher (alist-get 'fetcher eprops))
+                    (url     (alist-get 'url eprops))
+                    (repo    (alist-get 'repo eprops))
+
+                    (unstable-aentry  (gethash esym unstable-archive))
+                    (unstable-aprops  (and unstable-aentry (gethash 'props unstable-aentry)))
+                    (unstable-commit  (and unstable-aprops (gethash 'commit unstable-aprops)))
+
+                    (stable-aentry (gethash esym stable-archive))
+                    (stable-aprops (and stable-aentry (gethash 'props stable-aentry)))
+                    (stable-commit  (and stable-aprops (gethash 'commit stable-aprops)))
+
+                    (unstable-shap (if unstable-aprops
+                                       (source-sha semaphore ename eprops unstable-aprops previous 'unstable)
+                                     (promise-resolve nil)))
+                    (stable-shap (if (equal unstable-commit stable-commit)
+                                     unstable-shap
+                                   (if stable-aprops
+                                       (source-sha semaphore ename eprops stable-aprops previous 'stable)
+                                     (promise-resolve nil)))))
+
+               (promise-then
+                (promise-all (list recipe-index-promise unstable-shap stable-shap))
+                (lambda (res)
+                  (seq-let [recipe-index unstable-sha stable-sha] res
+                    (append `((ename   . ,ename))
+                            (if-let (desc (gethash ename recipe-index))
+                                (destructuring-bind (rcp-commit . rcp-sha256) desc
+                                  (append `((commit . ,rcp-commit)
+                                            (sha256 . ,rcp-sha256))
+                                          (when (not unstable-aprops)
+                                            (message "ERROR: %s: not in archive" ename)
+                                            `((error . "Not in archive")))))
+                              `((error . "No recipe info")))
+                            `((fetcher . ,fetcher))
+                            (if (or (equal "github" fetcher)
+                                    (equal "bitbucket" fetcher)
+                                    (equal "gitlab" fetcher))
+                                `((repo . ,repo))
+                              `((url . ,url)))
+                            (when unstable-aprops `((unstable . ,(source-info entry unstable-archive unstable-sha))))
+                            (when stable-aprops `((stable . ,(source-info entry stable-archive stable-sha))))))))))
+           recipes)))
+
+;; ## Emitter
+
+(defun emit-json (prefetch-semaphore recipe-index-promise recipes archive stable-archive previous)
+  (promise-then
+   (start-fetch
+    prefetch-semaphore
+    recipe-index-promise
+    (sort recipes (lambda (a b)
+                    (string-lessp
+                     (symbol-name (car a))
+                     (symbol-name (car b)))))
+    archive stable-archive
+    previous)
+   (lambda (descriptors)
+     (message "Finished downloading %d descriptors" (length descriptors))
+     (let ((buf (generate-new-buffer "*recipes-archive*")))
+       (with-current-buffer buf
+         ;; (switch-to-buffer buf)
+         ;; (json-mode)
+         (insert
+          (let ((json-encoding-pretty-print t)
+                (json-encoding-default-indentation " "))
+            (json-encode descriptors)))
+         buf)))))
+
+;; ## Recipe indexer
+
+(defun http-get (url parser)
+  (promise-new
+   (lambda (resolve reject)
+     (url-retrieve
+      url (lambda (status)
+            (funcall resolve (condition-case err
+                                 (progn
+                                   (goto-char (point-min))
+                                   (search-forward "\n\n")
+                                   (message (buffer-substring (point-min) (point)))
+                                   (delete-region (point-min) (point))
+                                   (funcall parser))
+                               (funcall reject err))))))))
+
+(defun json-read-buffer (buffer)
+  (with-current-buffer buffer
+    (save-excursion
+      (mark-whole-buffer)
+      (json-read))))
+
+(defun error-count (recipes-archive)
+  (length
+   (seq-filter
+    (lambda (desc)
+      (alist-get 'error desc))
+    recipes-archive)))
+
+;; (error-count (json-read-buffer "recipes-archive-melpa.json"))
+
+(defun latest-recipe-commit (semaphore repo base-rev recipe)
+  (shell-promise
+   semaphore (assocenv process-environment
+                       "GIT_DIR" repo
+                       "BASE_REV" base-rev
+                       "RECIPE" recipe)
+   "exec git log --first-parent -n1 --pretty=format:%H $BASE_REV -- recipes/$RECIPE"))
+
+(defun latest-recipe-sha256 (semaphore repo base-rev recipe)
+  (promise-then
+   (shell-promise
+    semaphore (assocenv process-environment
+                        "GIT_DIR" repo
+                        "BASE_REV" base-rev
+                        "RECIPE" recipe)
+    "exec nix-hash --flat --type sha256 --base32 <(
+       git cat-file blob $(
+         git ls-tree $BASE_REV recipes/$RECIPE | cut -f1 | cut -d' ' -f3
+       )
+     )")
+   (lambda (res)
+     (car
+      (split-string res)))))
+
+(defun index-recipe-commits (semaphore repo base-rev recipes)
+  (promise-then
+   (promise-all
+    (mapcar (lambda (recipe)
+              (promise-then
+               (latest-recipe-commit semaphore repo base-rev recipe)
+               (let ((sha256p (latest-recipe-sha256 semaphore repo base-rev recipe)))
+                 (lambda (commit)
+                   (promise-then sha256p
+                                 (lambda (sha256)
+                                   (message "Indexed Recipe %s %s %s" recipe commit sha256)
+                                   (cons recipe (cons commit sha256))))))))
+            recipes))
+   (lambda (rcp-commits)
+     (let ((idx (make-hash-table :test 'equal)))
+       (mapc (lambda (rcpc)
+               (puthash (car rcpc) (cdr rcpc) idx))
+             rcp-commits)
+       idx))))
+
+(defun with-melpa-checkout (resolve)
+  (let ((tmpdir (make-temp-file "melpa-" t)))
+    (promise-finally
+     (promise-then
+      (shell-promise
+       (semaphore-create 1 "dummy")
+       (assocenv process-environment "MELPA_DIR" tmpdir)
+       "cd $MELPA_DIR
+       (git init --bare
+        git remote add origin https://github.com/melpa/melpa.git
+        git fetch origin) 1>&2
+       echo -n $MELPA_DIR")
+      (lambda (dir)
+        (message "Created melpa checkout %s" dir)
+        (funcall resolve dir)))
+     (lambda ()
+       (delete-directory tmpdir t)
+       (message "Deleted melpa checkout %s" tmpdir)))))
+
+(defun list-recipes (repo base-rev)
+  (promise-then
+   (shell-promise nil (assocenv process-environment
+                                "GIT_DIR" repo
+                                "BASE_REV" base-rev)
+                  "git ls-tree --name-only $BASE_REV recipes/")
+   (lambda (s)
+     (mapcar (lambda (n)
+               (substring n 8))
+             (split-string s)))))
+
+;; ## Main runner
+
+(defvar recipe-indexp)
+(defvar archivep)
+
+(defun run-updater ()
+  (message "Turning off logging to *Message* buffer")
+  (setq message-log-max nil)
+  (setenv "GIT_ASKPASS")
+  (setenv "SSH_ASKPASS")
+  (setq process-adaptive-read-buffering nil)
+
+  ;; Indexer and Prefetcher run in parallel
+
+  ;; Recipe Indexer
+  (setq recipe-indexp
+        (with-melpa-checkout
+         (lambda (repo)
+           (promise-then
+            (promise-then
+             (list-recipes repo "origin/master")
+             (lambda (recipe-names)
+               (promise:make-thread #'index-recipe-commits
+                                    ;; The indexer runs on a local git repository,
+                                    ;; so it is CPU bound.
+                                    ;; Adjust for core count + 2
+                                    (semaphore-create 6 "local-indexer")
+                                    repo "origin/master"
+                                    ;; (seq-take recipe-names 20)
+                                    recipe-names)))
+            (lambda (res)
+              (message "Indexed Recipes: %d" (hash-table-count res))
+              (defvar recipe-index res)
+              res)
+            (lambda (err)
+              (message "ERROR: %s" err))))))
+
+  ;; Prefetcher + Emitter
+  (setq archivep
+        (promise-then
+         (promise-then (promise-all
+                        (list (http-get "https://melpa.org/recipes.json"
+                                        (lambda ()
+                                          (let ((json-object-type 'alist)
+                                                (json-array-type 'list)
+                                                (json-key-type 'symbol))
+                                            (json-read))))
+                              (http-get "https://melpa.org/archive.json"
+                                        (lambda ()
+                                          (let ((json-object-type 'hash-table)
+                                                (json-array-type 'list)
+                                                (json-key-type 'symbol))
+                                            (json-read))))
+                              (http-get "https://stable.melpa.org/archive.json"
+                                        (lambda ()
+                                          (let ((json-object-type 'hash-table)
+                                                (json-array-type 'list)
+                                                (json-key-type 'symbol))
+                                            (json-read))))))
+                       (lambda (resolved)
+                         (message "Finished download")
+                         (seq-let [recipes-content archive-content stable-archive-content] resolved
+                           ;; The prefetcher is network bound, so 64 seems a good estimate
+                           ;; for parallel network connections
+                           (promise:make-thread #'emit-json (semaphore-create 64 "prefetch-pool")
+                                                recipe-indexp
+                                                recipes-content
+                                                archive-content
+                                                stable-archive-content
+                                                (parse-previous-archive "recipes-archive-melpa.json")))))
+         (lambda (buf)
+           (with-current-buffer buf
+             (write-file "recipes-archive-melpa.json")))
+         (lambda (err)
+           (message "ERROR: %s" err))))
+
+  ;; Shutdown routine
+  (make-thread
+   (lambda ()
+     (promise-finally archivep
+                      (lambda ()
+                        ;; (message "Joining threads %s" (all-threads))
+                        ;; (mapc (lambda (thr)
+                        ;;         (when (not (eq thr (current-thread)))
+                        ;;           (thread-join thr)))
+                        ;;       (all-threads))
+
+                        (kill-emacs 0))))))
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/update-org b/nixpkgs/pkgs/applications/editors/emacs-modes/update-org
new file mode 100755
index 000000000000..2119a1672287
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/update-org
@@ -0,0 +1,4 @@
+#! /usr/bin/env nix-shell
+#! nix-shell --show-trace ./emacs2nix.nix -i bash
+
+exec org-packages.sh --names $EMACS2NIX/names.nix -o org-generated.nix
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/updater-emacs.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/updater-emacs.nix
new file mode 100644
index 000000000000..518ee67e4512
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/updater-emacs.nix
@@ -0,0 +1,40 @@
+let
+  pkgs = import ../../../.. {};
+
+  emacsEnv = (pkgs.emacsPackagesFor pkgs.emacs26).emacsWithPackages (epkgs: let
+
+    promise = epkgs.trivialBuild {
+      pname = "promise";
+      version = "1";
+      src = pkgs.fetchFromGitHub {
+        owner = "bendlas";
+        repo = "emacs-promise";
+        rev = "4da97087c5babbd8429b5ce62a8323b9b03c6022";
+        sha256 = "0yin7kj69g4zxs30pvk47cnfygxlaw7jc7chr3b36lz51yqczjsy";
+      };
+    };
+
+    semaphore = epkgs.trivialBuild {
+      pname = "semaphore";
+      version = "1";
+      packageRequires = [ promise ];
+      src = pkgs.fetchFromGitHub {
+        owner = "webnf";
+        repo = "semaphore.el";
+        rev = "93802cb093073bc6a6ccd797328dafffcef248e0";
+        sha256 = "09pfyp27m35sv340xarhld7xx2vv5fs5xj4418709iw6l6hpk853";
+      };
+    };
+
+  in [ promise semaphore ]);
+
+in pkgs.mkShell {
+  buildInputs = [
+    pkgs.git
+    pkgs.nix
+    pkgs.bash
+    pkgs.nix-prefetch-git
+    pkgs.nix-prefetch-hg
+    emacsEnv
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/zeitgeist/default.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/zeitgeist/default.nix
new file mode 100644
index 000000000000..c771f5423a95
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/zeitgeist/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, emacs }:
+
+stdenv.mkDerivation {
+  name = "zeitgeist-20120221";
+
+  dontUnpack = true;
+
+  src = fetchurl {
+    url = "https://raw.githubusercontent.com/alexmurray/dotfiles/master/.emacs.d/vendor/zeitgeist.el";
+    sha256 = "0fssx3lp8ar3b1ichbagir7z17habv367l7zz719ipycr24rf1nw";
+  };
+
+  buildInputs = [ emacs ];
+
+  installPhase = ''
+    mkdir -p $out/share/emacs/site-lisp
+    cp $src $out/share/emacs/site-lisp/zeitgeist.el
+  '';
+
+  meta = {
+    description = "Integreate Emacs with Zeitgeist";
+    homepage = "http://zeitgeist-project.com/";
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs/25.nix b/nixpkgs/pkgs/applications/editors/emacs/25.nix
new file mode 100644
index 000000000000..5bc29a046bc5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs/25.nix
@@ -0,0 +1,146 @@
+{ stdenv, lib, fetchurl, ncurses, xlibsWrapper, libXaw, libXpm, Xaw3d, fetchpatch
+, pkgconfig, gettext, libXft, dbus, libpng, libjpeg, libungif
+, libtiff, librsvg, gconf, libxml2, imagemagick, gnutls, libselinux
+, alsaLib, cairo, acl, gpm, AppKit, GSS, ImageIO
+, withX ? !stdenv.isDarwin
+, withGTK2 ? false, gtk2 ? null
+, withGTK3 ? true, gtk3 ? null, gsettings-desktop-schemas ? null
+, withXwidgets ? false, webkitgtk, wrapGAppsHook ? null, glib-networking ? null
+, withCsrc ? true
+, autoconf ? null, automake ? null, texinfo ? null
+}:
+
+assert (libXft != null) -> libpng != null;      # probably a bug
+assert stdenv.isDarwin -> libXaw != null;       # fails to link otherwise
+assert withGTK2 -> withX || stdenv.isDarwin;
+assert withGTK3 -> withX || stdenv.isDarwin;
+assert withGTK2 -> !withGTK3 && gtk2 != null;
+assert withGTK3 -> !withGTK2 && gtk3 != null;
+assert withXwidgets -> withGTK3 && webkitgtk != null;
+
+let
+  toolkit =
+    if withGTK2 then "gtk2"
+    else if withGTK3 then "gtk3"
+    else "lucid";
+in
+stdenv.mkDerivation rec {
+  name = "emacs-${version}${versionModifier}";
+  version = "25.3";
+  versionModifier = "";
+
+  src = fetchurl {
+    url = "mirror://gnu/emacs/${name}.tar.xz";
+    sha256 = "02y00y9q42g1iqgz5qhmsja75hwxd88yrn9zp14lanay0zkwafi5";
+  };
+
+  enableParallelBuilding = true;
+
+  patches = lib.optionals stdenv.isDarwin [
+    ./at-fdcwd.patch
+
+    # Backport of the fix to
+    # https://lists.gnu.org/archive/html/bug-gnu-emacs/2017-04/msg00201.html
+    # Should be removed when switching to Emacs 26.1
+    (fetchurl {
+      url = "https://gist.githubusercontent.com/aaronjensen/f45894ddf431ecbff78b1bcf533d3e6b/raw/6a5cd7f57341aba673234348d8b0d2e776f86719/Emacs-25-OS-X-use-vfork.patch";
+      sha256 = "1nlsxiaynswqhy99jf4mw9x0sndhwcrwy8713kq1l3xqv9dbrzgj";
+    })
+  ] ++ [
+    # Backport patches so we can use webkitgtk with xwidgets.
+    (fetchpatch {
+      name = "0001-Omit-unnecessary-includes-from-xwidget-c.patch";
+      url = "https://github.com/emacs-mirror/emacs/commit/a36ed9b5e95afea5716256bac24d883263aefbaf.patch";
+      sha256 = "1j34c0vkj87il87xy1px23yk6bw73adpr7wqa79ncj89i4lc8qkb";
+    })
+    (fetchpatch {
+      name = "0002-xwidget-Use-WebKit2-API.patch";
+      url = "https://github.com/emacs-mirror/emacs/commit/d781662873f228b110a128f7a2b6583a4d5e0a3a.patch";
+      sha256 = "1lld56zi4cw2hmjxhhdcc0f07k8lbj32h10wcq4ml3asdwa31ryr";
+    })
+  ];
+
+  nativeBuildInputs = [ pkgconfig autoconf automake texinfo ]
+    ++ lib.optional (withX && (withGTK3 || withXwidgets)) wrapGAppsHook;
+
+  buildInputs =
+    [ ncurses gconf libxml2 gnutls alsaLib acl gpm gettext ]
+    ++ lib.optionals stdenv.isLinux [ dbus libselinux ]
+    ++ lib.optionals withX
+      [ xlibsWrapper libXaw Xaw3d libXpm libpng libjpeg libungif libtiff librsvg libXft
+        imagemagick gconf ]
+    ++ lib.optional (withX && withGTK2) gtk2
+    ++ lib.optionals (withX && withGTK3) [ gtk3 gsettings-desktop-schemas ]
+    ++ lib.optional (stdenv.isDarwin && withX) cairo
+    ++ lib.optionals (withX && withXwidgets) [ webkitgtk glib-networking ]
+    ++ lib.optionals stdenv.isDarwin [ AppKit GSS ImageIO ];
+
+  hardeningDisable = [ "format" ];
+
+  configureFlags = [ "--with-modules" ] ++
+   (if stdenv.isDarwin
+      then [ "--with-ns" "--disable-ns-self-contained" ]
+    else if withX
+      then [ "--with-x-toolkit=${toolkit}" "--with-xft" ]
+      else [ "--with-x=no" "--with-xpm=no" "--with-jpeg=no" "--with-png=no"
+             "--with-gif=no" "--with-tiff=no" ])
+    ++ lib.optional withXwidgets "--with-xwidgets";
+
+  preConfigure = ''
+    ./autogen.sh
+  '' + ''
+    substituteInPlace lisp/international/mule-cmds.el \
+      --replace /usr/share/locale ${gettext}/share/locale
+
+    for makefile_in in $(find . -name Makefile.in -print); do
+        substituteInPlace $makefile_in --replace /bin/pwd pwd
+    done
+  '';
+
+  installTargets = [ "tags" "install" ];
+
+  postInstall = ''
+    mkdir -p $out/share/emacs/site-lisp
+    cp ${./site-start.el} $out/share/emacs/site-lisp/site-start.el
+    $out/bin/emacs --batch -f batch-byte-compile $out/share/emacs/site-lisp/site-start.el
+
+    rm -rf $out/var
+    rm -rf $out/share/emacs/${version}/site-lisp
+  '' + lib.optionalString withCsrc ''
+    for srcdir in src lisp lwlib ; do
+      dstdir=$out/share/emacs/${version}/$srcdir
+      mkdir -p $dstdir
+      find $srcdir -name "*.[chm]" -exec cp {} $dstdir \;
+      cp $srcdir/TAGS $dstdir
+      echo '((nil . ((tags-file-name . "TAGS"))))' > $dstdir/.dir-locals.el
+    done
+  '' + lib.optionalString stdenv.isDarwin ''
+    mkdir -p $out/Applications
+    mv nextstep/Emacs.app $out/Applications
+  '';
+
+  meta = with stdenv.lib; {
+    description = "The extensible, customizable GNU text editor";
+    homepage    = "https://www.gnu.org/software/emacs/";
+    license     = licenses.gpl3Plus;
+    maintainers = with maintainers; [ lovek323 peti jwiegley ];
+    platforms   = platforms.all;
+
+    longDescription = ''
+      GNU Emacs is an extensible, customizable text editor—and more.  At its
+      core is an interpreter for Emacs Lisp, a dialect of the Lisp
+      programming language with extensions to support text editing.
+
+      The features of GNU Emacs include: content-sensitive editing modes,
+      including syntax coloring, for a wide variety of file types including
+      plain text, source code, and HTML; complete built-in documentation,
+      including a tutorial for new users; full Unicode support for nearly all
+      human languages and their scripts; highly customizable, using Emacs
+      Lisp code or a graphical interface; a large number of extensions that
+      add other functionality, including a project planner, mail and news
+      reader, debugger interface, calendar, and more.  Many of these
+      extensions are distributed with GNU Emacs; others are available
+      separately.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs/at-fdcwd.patch b/nixpkgs/pkgs/applications/editors/emacs/at-fdcwd.patch
new file mode 100644
index 000000000000..2d8099b73736
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs/at-fdcwd.patch
@@ -0,0 +1,15 @@
+diff --git a/lib/careadlinkat.h b/lib/careadlinkat.h
+index 84ede3e..8e8f42e 100644
+--- a/lib/careadlinkat.h
++++ b/lib/careadlinkat.h
+@@ -23,6 +23,10 @@
+ #include <fcntl.h>
+ #include <unistd.h>
+ 
++#ifndef AT_FDCWD
++#define AT_FDCWD -2
++#endif
++
+ struct allocator;
+ 
+ /* Assuming the current directory is FD, get the symbolic link value
diff --git a/nixpkgs/pkgs/applications/editors/emacs/clean-env.patch b/nixpkgs/pkgs/applications/editors/emacs/clean-env.patch
new file mode 100644
index 000000000000..88befda899a7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs/clean-env.patch
@@ -0,0 +1,15 @@
+Dump temacs in an empty environment to prevent -dev paths from ending
+up in the dumped image.
+
+diff --git a/src/Makefile.in b/src/Makefile.in
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -535,7 +535,7 @@ ifeq ($(CANNOT_DUMP),yes)
+ 	ln -f temacs$(EXEEXT) $@
+ else
+ 	unset EMACS_HEAP_EXEC; \
+-	LC_ALL=C $(RUN_TEMACS) -batch $(BUILD_DETAILS) -l loadup dump
++	env -i LC_ALL=C $(RUN_TEMACS) -batch $(BUILD_DETAILS) -l loadup dump
+   ifneq ($(PAXCTL_dumped),)
+ 	$(PAXCTL_dumped) $@
+   endif
diff --git a/nixpkgs/pkgs/applications/editors/emacs/default.nix b/nixpkgs/pkgs/applications/editors/emacs/default.nix
new file mode 100644
index 000000000000..570dc28c684f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs/default.nix
@@ -0,0 +1,161 @@
+{ stdenv, lib, fetchurl, fetchpatch, ncurses, xlibsWrapper, libXaw, libXpm
+, Xaw3d, libXcursor,  pkgconfig, gettext, libXft, dbus, libpng, libjpeg, libungif
+, libtiff, librsvg, gconf, libxml2, imagemagick, gnutls, libselinux
+, alsaLib, cairo, acl, gpm, AppKit, GSS, ImageIO, m17n_lib, libotf
+, systemd ? null
+, withX ? !stdenv.isDarwin
+, withNS ? stdenv.isDarwin
+, withGTK2 ? false, gtk2-x11 ? null
+, withGTK3 ? true, gtk3-x11 ? null, gsettings-desktop-schemas ? null
+, withXwidgets ? false, webkitgtk ? null, wrapGAppsHook ? null, glib-networking ? null
+, withCsrc ? true
+, srcRepo ? false, autoconf ? null, automake ? null, texinfo ? null
+, siteStart ? ./site-start.el
+, toolkit ? (
+  if withGTK2 then "gtk2"
+  else if withGTK3 then "gtk3"
+  else "lucid")
+}:
+
+assert (libXft != null) -> libpng != null;      # probably a bug
+assert stdenv.isDarwin -> libXaw != null;       # fails to link otherwise
+assert withNS -> !withX;
+assert withNS -> stdenv.isDarwin;
+assert (withGTK2 && !withNS) -> withX;
+assert (withGTK3 && !withNS) -> withX;
+assert withGTK2 -> !withGTK3 && gtk2-x11 != null;
+assert withGTK3 -> !withGTK2 && gtk3-x11 != null;
+assert withXwidgets -> withGTK3 && webkitgtk != null;
+
+
+stdenv.mkDerivation rec {
+  name = "emacs-${version}${versionModifier}";
+  version = "26.3";
+  versionModifier = "";
+
+  src = fetchurl {
+    url = "mirror://gnu/emacs/${name}.tar.xz";
+    sha256 = "119ldpk7sgn9jlpyngv5y4z3i7bb8q3xp4p0qqi7i5nq39syd42d";
+  };
+
+  enableParallelBuilding = true;
+
+  patches = [
+    ./clean-env.patch
+    ./tramp-detect-wrapped-gvfsd.patch
+    # unbreak macOS unexec
+    (fetchpatch {
+      url = "https://github.com/emacs-mirror/emacs/commit/888ffd960c06d56a409a7ff15b1d930d25c56089.patch";
+      sha256 = "08q3ygdigqwky70r47rcgzlkc5jy82xiq8am5kwwy891wlpl7frw";
+    })
+  ];
+
+  postPatch = lib.optionalString srcRepo ''
+    rm -fr .git
+  '';
+
+  CFLAGS = "-DMAC_OS_X_VERSION_MAX_ALLOWED=101200";
+
+  nativeBuildInputs = [ pkgconfig ]
+    ++ lib.optionals srcRepo [ autoconf automake texinfo ]
+    ++ lib.optional (withX && (withGTK3 || withXwidgets)) wrapGAppsHook;
+
+  buildInputs =
+    [ ncurses gconf libxml2 gnutls alsaLib acl gpm gettext ]
+    ++ lib.optionals stdenv.isLinux [ dbus libselinux systemd ]
+    ++ lib.optionals withX
+      [ xlibsWrapper libXaw Xaw3d libXpm libpng libjpeg libungif libtiff libXft
+        gconf ]
+    ++ lib.optionals (withX || withNS) [ imagemagick librsvg ]
+    ++ lib.optionals (stdenv.isLinux && withX) [ m17n_lib libotf ]
+    ++ lib.optional (withX && withGTK2) gtk2-x11
+    ++ lib.optionals (withX && withGTK3) [ gtk3-x11 gsettings-desktop-schemas ]
+    ++ lib.optional (stdenv.isDarwin && withX) cairo
+    ++ lib.optionals (withX && withXwidgets) [ webkitgtk glib-networking ]
+    ++ lib.optionals withNS [ AppKit GSS ImageIO ];
+
+  hardeningDisable = [ "format" ];
+
+  configureFlags = [
+    "--disable-build-details" # for a (more) reproducible build
+    "--with-modules"
+  ] ++
+    (lib.optional stdenv.isDarwin
+      (lib.withFeature withNS "ns")) ++
+    (if withNS
+      then [ "--disable-ns-self-contained" ]
+    else if withX
+      then [ "--with-x-toolkit=${toolkit}" "--with-xft" ]
+      else [ "--with-x=no" "--with-xpm=no" "--with-jpeg=no" "--with-png=no"
+             "--with-gif=no" "--with-tiff=no" ])
+    ++ lib.optional withXwidgets "--with-xwidgets";
+
+  preConfigure = lib.optionalString srcRepo ''
+    ./autogen.sh
+  '' + ''
+    substituteInPlace lisp/international/mule-cmds.el \
+      --replace /usr/share/locale ${gettext}/share/locale
+
+    for makefile_in in $(find . -name Makefile.in -print); do
+        substituteInPlace $makefile_in --replace /bin/pwd pwd
+    done
+  '';
+
+  installTargets = [ "tags" "install" ];
+
+  postInstall = ''
+    mkdir -p $out/share/emacs/site-lisp
+    cp ${siteStart} $out/share/emacs/site-lisp/site-start.el
+    $out/bin/emacs --batch -f batch-byte-compile $out/share/emacs/site-lisp/site-start.el
+
+    rm -rf $out/var
+    rm -rf $out/share/emacs/${version}/site-lisp
+  '' + lib.optionalString withCsrc ''
+    for srcdir in src lisp lwlib ; do
+      dstdir=$out/share/emacs/${version}/$srcdir
+      mkdir -p $dstdir
+      find $srcdir -name "*.[chm]" -exec cp {} $dstdir \;
+      cp $srcdir/TAGS $dstdir
+      echo '((nil . ((tags-file-name . "TAGS"))))' > $dstdir/.dir-locals.el
+    done
+  '' + lib.optionalString withNS ''
+    mkdir -p $out/Applications
+    mv nextstep/Emacs.app $out/Applications
+  '';
+
+  postFixup =
+    let libPath = lib.makeLibraryPath [
+      libXcursor
+    ];
+    in lib.optionalString (stdenv.isLinux && withX && toolkit == "lucid") ''
+      patchelf --set-rpath \
+        "$(patchelf --print-rpath "$out/bin/emacs"):${libPath}" \
+        "$out/bin/emacs"
+      patchelf --add-needed "libXcursor.so.1" "$out/bin/emacs"
+    '';
+
+  meta = with stdenv.lib; {
+    description = "The extensible, customizable GNU text editor";
+    homepage    = "https://www.gnu.org/software/emacs/";
+    license     = licenses.gpl3Plus;
+    maintainers = with maintainers; [ lovek323 peti jwiegley adisbladis ];
+    platforms   = platforms.all;
+
+    longDescription = ''
+      GNU Emacs is an extensible, customizable text editor—and more.  At its
+      core is an interpreter for Emacs Lisp, a dialect of the Lisp
+      programming language with extensions to support text editing.
+
+      The features of GNU Emacs include: content-sensitive editing modes,
+      including syntax coloring, for a wide variety of file types including
+      plain text, source code, and HTML; complete built-in documentation,
+      including a tutorial for new users; full Unicode support for nearly all
+      human languages and their scripts; highly customizable, using Emacs
+      Lisp code or a graphical interface; a large number of extensions that
+      add other functionality, including a project planner, mail and news
+      reader, debugger interface, calendar, and more.  Many of these
+      extensions are distributed with GNU Emacs; others are available
+      separately.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs/macport.nix b/nixpkgs/pkgs/applications/editors/emacs/macport.nix
new file mode 100644
index 000000000000..1624e62026af
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs/macport.nix
@@ -0,0 +1,111 @@
+{ stdenv, fetchurl, ncurses, pkgconfig, texinfo, libxml2, gnutls, gettext, autoconf, automake
+, AppKit, Carbon, Cocoa, IOKit, OSAKit, Quartz, QuartzCore, WebKit
+, ImageCaptureCore, GSS, ImageIO # These may be optional
+}:
+
+stdenv.mkDerivation rec {
+  pname = "emacs";
+  version = "26.3";
+
+  emacsName = "emacs-${version}";
+  macportVersion = "7.7";
+  name = "emacs-mac-${version}-${macportVersion}";
+
+  src = fetchurl {
+    url = "mirror://gnu/emacs/${emacsName}.tar.xz";
+    sha256 = "119ldpk7sgn9jlpyngv5y4z3i7bb8q3xp4p0qqi7i5nq39syd42d";
+  };
+
+  macportSrc = fetchurl {
+    url = "ftp://ftp.math.s.chiba-u.ac.jp/emacs/${emacsName}-mac-${macportVersion}.tar.gz";
+    sha256 = "18jadknm47ymbl7skrgc7y8xsdldcbgnlfl7qpgzm1ym8d92as6j";
+  };
+
+  hiresSrc = fetchurl {
+    url = "ftp://ftp.math.s.chiba-u.ac.jp/emacs/emacs-hires-icons-3.0.tar.gz";
+    sha256 = "0f2wzdw2a3ac581322b2y79rlj3c9f33ddrq9allj97r1si6v5xk";
+  };
+
+  patches = [ ./clean-env.patch ];
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ pkgconfig autoconf automake ];
+
+  buildInputs = [ ncurses libxml2 gnutls texinfo gettext
+    AppKit Carbon Cocoa IOKit OSAKit Quartz QuartzCore WebKit
+    ImageCaptureCore GSS ImageIO   # may be optional
+  ];
+
+  postUnpack = ''
+    mv $sourceRoot $name
+    tar xzf $macportSrc -C $name --strip-components=1
+    mv $name $sourceRoot
+
+    # extract retina image resources
+    tar xzfv $hiresSrc --strip 1 -C $sourceRoot
+  '';
+
+  postPatch = ''
+    patch -p1 < patch-mac
+    substituteInPlace lisp/international/mule-cmds.el \
+      --replace /usr/share/locale ${gettext}/share/locale
+
+    # use newer emacs icon
+    cp nextstep/Cocoa/Emacs.base/Contents/Resources/Emacs.icns mac/Emacs.app/Contents/Resources/Emacs.icns
+
+    # Fix sandbox impurities.
+    substituteInPlace Makefile.in --replace '/bin/pwd' 'pwd'
+    substituteInPlace lib-src/Makefile.in --replace '/bin/pwd' 'pwd'
+  '';
+
+  configureFlags = [
+    "LDFLAGS=-L${ncurses.out}/lib"
+    "--with-xml2=yes"
+    "--with-gnutls=yes"
+    "--with-mac"
+    "--with-modules"
+    "--enable-mac-app=$$out/Applications"
+  ];
+
+  CFLAGS = "-O3";
+  LDFLAGS = "-O3 -L${ncurses.out}/lib";
+
+  postInstall = ''
+    mkdir -p $out/share/emacs/site-lisp/
+    cp ${./site-start.el} $out/share/emacs/site-lisp/site-start.el
+  '';
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    description = "The extensible, customizable text editor";
+    homepage    = "https://www.gnu.org/software/emacs/";
+    license     = licenses.gpl3Plus;
+    maintainers = with maintainers; [ jwiegley matthewbauer ];
+    platforms   = platforms.darwin;
+
+    longDescription = ''
+      GNU Emacs is an extensible, customizable text editor—and more.  At its
+      core is an interpreter for Emacs Lisp, a dialect of the Lisp
+      programming language with extensions to support text editing.
+
+      The features of GNU Emacs include: content-sensitive editing modes,
+      including syntax coloring, for a wide variety of file types including
+      plain text, source code, and HTML; complete built-in documentation,
+      including a tutorial for new users; full Unicode support for nearly all
+      human languages and their scripts; highly customizable, using Emacs
+      Lisp code or a graphical interface; a large number of extensions that
+      add other functionality, including a project planner, mail and news
+      reader, debugger interface, calendar, and more.  Many of these
+      extensions are distributed with GNU Emacs; others are available
+      separately.
+
+      This is the "Mac port" addition to GNU Emacs 26. This provides a native
+      GUI support for Mac OS X 10.6 - 10.12. Note that Emacs 23 and later
+      already contain the official GUI support via the NS (Cocoa) port for
+      Mac OS X 10.4 and later. So if it is good enough for you, then you
+      don't need to try this.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs/site-start.el b/nixpkgs/pkgs/applications/editors/emacs/site-start.el
new file mode 100644
index 000000000000..de4708b88908
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs/site-start.el
@@ -0,0 +1,60 @@
+;; -*- lexical-binding: t; -*-
+(defun nix--profile-paths ()
+  "Return a list of all paths in NIX_PROFILES.
+The list is ordered from more-specific (the user profile) to the
+least specific (the system profile)"
+  (reverse (split-string (or (getenv "NIX_PROFILES") ""))))
+
+;;; Extend `load-path' to search for elisp files in subdirectories of
+;;; all folders in `NIX_PROFILES'. Also search for one level of
+;;; subdirectories in these directories to handle multi-file libraries
+;;; like `mu4e'.'
+(require 'seq)
+(let* ((subdirectory-sites (lambda (site-lisp)
+                             (when (file-exists-p site-lisp)
+                               (seq-filter (lambda (f) (file-directory-p (file-truename f)))
+                                           ;; Returns all files in `site-lisp', excluding `.' and `..'
+                                           (directory-files site-lisp 'full "^\\([^.]\\|\\.[^.]\\|\\.\\..\\)")))))
+       (paths (apply #'append
+                     (mapcar (lambda (profile-dir)
+                               (let ((site-lisp (concat profile-dir "/share/emacs/site-lisp/")))
+                                 (cons site-lisp (funcall subdirectory-sites site-lisp))))
+                             (nix--profile-paths)))))
+  (setq load-path (append paths load-path)))
+
+
+;;; Make `woman' find the man pages
+(defvar woman-manpath)
+(eval-after-load 'woman
+  '(setq woman-manpath
+         (append (mapcar (lambda (x) (concat x "/share/man/"))
+                         (nix--profile-paths))
+                 woman-manpath)))
+
+;;; Make tramp work for remote NixOS machines
+(defvar tramp-remote-path)
+(eval-after-load 'tramp-sh
+  ;; TODO: We should also add the other `NIX_PROFILES' to this path.
+  ;; However, these are user-specific, so we would need to discover
+  ;; them dynamically after connecting via `tramp'
+  '(add-to-list 'tramp-remote-path "/run/current-system/sw/bin"))
+
+;;; C source directory
+;;;
+;;; Computes the location of the C source directory from the path of
+;;; the current file:
+;;; from: /nix/store/<hash>-emacs-<version>/share/emacs/site-lisp/site-start.el
+;;; to:   /nix/store/<hash>-emacs-<version>/share/emacs/<version>/src/
+(defvar find-function-C-source-directory)
+(let ((emacs
+       (file-name-directory                      ; .../emacs/
+        (directory-file-name                     ; .../emacs/site-lisp
+         (file-name-directory load-file-name)))) ; .../emacs/site-lisp/
+      (version
+       (file-name-as-directory
+        (concat
+         (number-to-string emacs-major-version)
+         "."
+         (number-to-string emacs-minor-version))))
+      (src (file-name-as-directory "src")))
+  (setq find-function-C-source-directory (concat emacs version src)))
diff --git a/nixpkgs/pkgs/applications/editors/emacs/tramp-detect-wrapped-gvfsd.patch b/nixpkgs/pkgs/applications/editors/emacs/tramp-detect-wrapped-gvfsd.patch
new file mode 100644
index 000000000000..5d16194fd202
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs/tramp-detect-wrapped-gvfsd.patch
@@ -0,0 +1,14 @@
+diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
+index f370abba31..f2806263a9 100644
+--- a/lisp/net/tramp-gvfs.el
++++ b/lisp/net/tramp-gvfs.el
+@@ -164,7 +164,8 @@ tramp-gvfs-enabled
+     (and (featurep 'dbusbind)
+ 	 (tramp-compat-funcall 'dbus-get-unique-name :system)
+ 	 (tramp-compat-funcall 'dbus-get-unique-name :session)
+-	 (or (tramp-compat-process-running-p "gvfs-fuse-daemon")
++	 (or (tramp-compat-process-running-p ".gvfsd-fuse-wrapped")
++             (tramp-compat-process-running-p "gvfs-fuse-daemon")
+ 	     (tramp-compat-process-running-p "gvfsd-fuse"))))
+   "Non-nil when GVFS is available.")
+ 
diff --git a/nixpkgs/pkgs/applications/editors/featherpad/default.nix b/nixpkgs/pkgs/applications/editors/featherpad/default.nix
new file mode 100644
index 000000000000..c6089fd5308c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/featherpad/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, pkgconfig, qt5, fetchFromGitHub }:
+
+with qt5;
+
+stdenv.mkDerivation rec {
+  version = "0.10.0";
+  pname = "featherpad";
+  src = fetchFromGitHub {
+    owner = "tsujan";
+    repo = "FeatherPad";
+    rev = "V${version}";
+    sha256 = "1wrbs6kni9s3x39cckm9kzpglryxn5vyarilvh9pafbzpc6rc57p";
+  };
+  nativeBuildInputs = [ qmake pkgconfig qttools ];
+  buildInputs = [ qtbase qtsvg qtx11extras ];
+  meta = with stdenv.lib; {
+    description = "Lightweight Qt5 Plain-Text Editor for Linux";
+    homepage = "https://github.com/tsujan/FeatherPad";
+    platforms = platforms.linux;
+    maintainers = [ maintainers.flosse ];
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/flpsed/default.nix b/nixpkgs/pkgs/applications/editors/flpsed/default.nix
new file mode 100644
index 000000000000..3d6aac7e18e5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/flpsed/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, fltk13, ghostscript }:
+
+stdenv.mkDerivation rec {
+  pname = "flpsed";
+  version = "0.7.3";
+
+  src = fetchurl {
+    url = "http://www.flpsed.org/${pname}-${version}.tar.gz";
+    sha256 = "0vngqxanykicabhfdznisv82k5ypkxwg0s93ms9ribvhpm8vf2xp";
+  };
+
+  buildInputs = [ fltk13 ];
+
+  postPatch = ''
+    # replace the execvp call to ghostscript
+    sed -e '/exec_gs/ {n; s|"gs"|"${stdenv.lib.getBin ghostscript}/bin/gs"|}' \
+        -i src/GsWidget.cxx
+  '';
+
+  meta = with stdenv.lib; {
+    description = "WYSIWYG PostScript annotator";
+    homepage = "https://flpsed.org/flpsed.html";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/focuswriter/default.nix b/nixpkgs/pkgs/applications/editors/focuswriter/default.nix
new file mode 100644
index 000000000000..c30cfcb1fb9c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/focuswriter/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, pkgconfig, qmake, qttools, hunspell, qtbase, qtmultimedia, mkDerivation }:
+
+mkDerivation rec {
+  pname = "focuswriter";
+  version = "1.7.6";
+
+  src = fetchurl {
+    url = "https://gottcode.org/focuswriter/focuswriter-${version}-src.tar.bz2";
+    sha256 = "0h85f6cs9zbxv118mjfxqfv41j19zkx2xq36mpnlmrlzkjj7dx9l";
+  };
+
+  nativeBuildInputs = [ pkgconfig qmake qttools ];
+  buildInputs = [ hunspell qtbase qtmultimedia ];
+
+  enableParallelBuilding = true;
+
+  qmakeFlags = [ "PREFIX=/" ];
+  installFlags = [ "INSTALL_ROOT=$(out)" ];
+
+  meta = with stdenv.lib; {
+    description = "Simple, distraction-free writing environment";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ madjar ];
+    platforms = platforms.linux;
+    homepage = "https://gottcode.org/focuswriter/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/fte/default.nix b/nixpkgs/pkgs/applications/editors/fte/default.nix
new file mode 100644
index 000000000000..f19a264c06a5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/fte/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, unzip, perl, libX11, libXpm, gpm, ncurses, slang }:
+
+stdenv.mkDerivation rec {
+  name = "fte-0.50.02";
+
+  buildInputs = [ unzip perl libX11 libXpm gpm ncurses slang ];
+
+  ftesrc = fetchurl {
+    url = "mirror://sourceforge/fte/fte-20110708-src.zip";
+    sha256 = "17j9akr19w19myglw5mljjw2g3i2cwxiqrjaln82h3rz5ma1qcfn";
+  };
+  ftecommon = fetchurl {
+    url = "mirror://sourceforge/fte/fte-20110708-common.zip";
+    sha256 = "1xva4kh0674sj2b9rhf2amlr37yxmsvjkgyj89gpcn0rndw1ahaq";
+  };
+  src = [ ftesrc ftecommon ];
+
+  buildFlags = [ "PREFIX=$(out)" ];
+
+  installFlags = [ "PREFIX=$(out)" "INSTALL_NONROOT=1" ];
+
+  meta = with stdenv.lib; {
+    description = "A free text editor for developers";
+    homepage = "http://fte.sourceforge.net/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.volth ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/geany/default.nix b/nixpkgs/pkgs/applications/editors/geany/default.nix
new file mode 100644
index 000000000000..d3cc36244193
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/geany/default.nix
@@ -0,0 +1,68 @@
+{ stdenv
+, fetchurl
+, gtk3
+, which
+, pkgconfig
+, intltool
+, file
+, libintl
+, hicolor-icon-theme
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "geany";
+  version = "1.36";
+
+  outputs = [ "out" "dev" "doc" "man" ];
+
+  src = fetchurl {
+    url = "https://download.geany.org/${pname}-${version}.tar.bz2";
+    sha256 = "0gnm17cr4rf3pmkf0axz4a0fxwnvp55ji0q0lzy88yqbshyxv14i";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    intltool
+    libintl
+    which
+    file
+    hicolor-icon-theme
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+  ];
+
+  doCheck = true;
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Small and lightweight IDE";
+    longDescription = ''
+      Geany is a small and lightweight Integrated Development Environment.
+      It was developed to provide a small and fast IDE, which has only a few dependencies from other packages.
+      Another goal was to be as independent as possible from a special Desktop Environment like KDE or GNOME.
+      Geany only requires the GTK runtime libraries.
+      Some basic features of Geany:
+      - Syntax highlighting
+      - Code folding
+      - Symbol name auto-completion
+      - Construct completion/snippets
+      - Auto-closing of XML and HTML tags
+      - Call tips
+      - Many supported filetypes including C, Java, PHP, HTML, Python, Perl, Pascal (full list)
+      - Symbol lists
+      - Code navigation
+      - Build system to compile and execute your code
+      - Simple project management
+      - Plugin interface
+    '';
+    homepage = "https://www.geany.org/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ frlan ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/geany/with-vte.nix b/nixpkgs/pkgs/applications/editors/geany/with-vte.nix
new file mode 100644
index 000000000000..ece5c95f05ab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/geany/with-vte.nix
@@ -0,0 +1,24 @@
+{ symlinkJoin
+, makeWrapper
+, geany
+, lndir
+, vte
+}:
+
+symlinkJoin {
+  name = "geany-with-vte-${geany.version}";
+
+  # TODO: add geany-plugins
+  paths = with geany; [ out doc man ];
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  postBuild = ''
+    # need to replace the directory since it is a symlink
+    rm -r $out/bin; mkdir $out/bin
+    makeWrapper ${geany}/bin/geany $out/bin/geany \
+      --prefix LD_LIBRARY_PATH : ${vte}/lib
+  '';
+
+  inherit (geany.meta);
+}
diff --git a/nixpkgs/pkgs/applications/editors/ghostwriter/default.nix b/nixpkgs/pkgs/applications/editors/ghostwriter/default.nix
new file mode 100644
index 000000000000..8c1b95a1d26e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/ghostwriter/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, mkDerivation, fetchFromGitHub, qmake, pkgconfig, qttools, qtwebengine, hunspell }:
+
+mkDerivation rec {
+  pname = "ghostwriter";
+  version = "1.8.1";
+
+  src = fetchFromGitHub {
+    owner = "wereturtle";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0jc6szfh5sdnafhwsr1xv7cn1fznniq58bix41hb9wlbkvq7wzi6";
+  };
+
+  nativeBuildInputs = [ qmake pkgconfig qttools ];
+
+  buildInputs = [ qtwebengine hunspell ];
+
+  meta = with stdenv.lib; {
+    description = "A cross-platform, aesthetic, distraction-free Markdown editor";
+    homepage = src.meta.homepage;
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/glow/default.nix b/nixpkgs/pkgs/applications/editors/glow/default.nix
new file mode 100644
index 000000000000..fd1e61463f8b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/glow/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "glow";
+  version = "0.2.0";
+
+  src = fetchFromGitHub {
+    owner = "charmbracelet";
+    repo = "glow";
+    rev = "v${version}";
+    sha256 = "0vhl8d7xxqqyl916nh8sgm1xdaf7xlc3r18464bd2av22q9yz68n";
+  };
+
+  vendorSha256 = "1c16s5xiqr36azh2w90wg14jlw67ca2flbgjijpz7qd0ypxyfqlk";
+
+  buildFlagsArray = [ "-ldflags=" "-X=main.Version=${version}" ];
+
+  meta = with lib; {
+    description = "Render markdown on the CLI";
+    homepage = "https://github.com/charmbracelet/glow";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ehmry filalex77 ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/editors/gnome-builder/default.nix b/nixpkgs/pkgs/applications/editors/gnome-builder/default.nix
new file mode 100644
index 000000000000..d41746a16ee3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/gnome-builder/default.nix
@@ -0,0 +1,158 @@
+{ stdenv
+, ctags
+, appstream-glib
+, desktop-file-utils
+, docbook_xsl
+, docbook_xml_dtd_43
+, fetchurl
+, flatpak
+, gnome3
+, libgit2-glib
+, gobject-introspection
+, glade
+, gspell
+, gtk-doc
+, gtk3
+, gtksourceview4
+, json-glib
+, jsonrpc-glib
+, libdazzle
+, libpeas
+, libportal
+, libxml2
+, meson
+, ninja
+, ostree
+, pcre
+, pcre2
+, pkgconfig
+, python3
+, sysprof
+, template-glib
+, vala
+, vte
+, webkitgtk
+, wrapGAppsHook
+, dbus
+, xvfb_run
+, glib
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-builder";
+  version = "3.36.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "02ni81jyncycgfwslvaav0a62wzx3r9bi86xf0x7jvvk6plfaj8v";
+  };
+
+  nativeBuildInputs = [
+    appstream-glib
+    desktop-file-utils
+    docbook_xsl
+    docbook_xml_dtd_43
+    gobject-introspection
+    gtk-doc
+    meson
+    ninja
+    pkgconfig
+    python3
+    python3.pkgs.wrapPython
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    ctags
+    flatpak
+    gnome3.devhelp
+    glade
+    libgit2-glib
+    libpeas
+    libportal
+    vte
+    gspell
+    gtk3
+    gtksourceview4
+    json-glib
+    jsonrpc-glib
+    libdazzle
+    libxml2
+    ostree
+    pcre
+    pcre2
+    python3
+    sysprof
+    template-glib
+    vala
+    webkitgtk
+  ];
+
+  checkInputs = [
+    dbus
+    xvfb_run
+  ];
+
+  outputs = [ "out" "devdoc" ];
+
+  prePatch = ''
+    patchShebangs build-aux/meson/post_install.py
+  '';
+
+  mesonFlags = [
+    "-Dpython_libprefix=${python3.libPrefix}"
+    "-Ddocs=true"
+
+    # Making the build system correctly detect clang header and library paths
+    # is difficult. Somebody should look into fixing this.
+    "-Dplugin_clang=false"
+
+    # Do not try to check if appstream images exist
+    "-Dnetwork_tests=false"
+  ];
+
+  # Some tests fail due to being unable to find the Vte typelib, and I don't
+  # understand why. Somebody should look into fixing this.
+  doCheck = true;
+
+  checkPhase = ''
+    export NO_AT_BRIDGE=1
+    xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
+      --config-file=${dbus.daemon}/share/dbus-1/session.conf \
+      meson test --print-errorlogs
+  '';
+
+  pythonPath = with python3.pkgs; requiredPythonModules [ pygobject3 ];
+
+  preFixup = ''
+    buildPythonPath "$out $pythonPath"
+    gappsWrapperArgs+=(
+      --prefix PYTHONPATH : "$program_PYTHONPATH"
+    )
+
+    # Ensure that all plugins get their interpreter paths fixed up.
+    find $out/lib -name \*.py -type f -print0 | while read -d "" f; do
+      chmod a+x "$f"
+    done
+  '';
+
+  passthru.updateScript = gnome3.updateScript { packageName = pname; };
+
+  meta = with stdenv.lib; {
+    description = "An IDE for writing GNOME-based software";
+    longDescription = ''
+      Global search, auto-completion, source code map, documentation
+      reference, and other features expected in an IDE, but with a focus
+      on streamlining GNOME-based development projects.
+
+      This package does not pull in the dependencies needed for every
+      plugin. If you find that a plugin you wish to use doesn't work, we
+      currently recommend running gnome-builder inside a nix-shell with
+      appropriate dependencies loaded.
+    '';
+    homepage = "https://wiki.gnome.org/Apps/Builder";
+    license = licenses.gpl3Plus;
+    maintainers = teams.gnome.members;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/gnome-latex/default.nix b/nixpkgs/pkgs/applications/editors/gnome-latex/default.nix
new file mode 100644
index 000000000000..695a13eecabd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/gnome-latex/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchurl, wrapGAppsHook, gsettings-desktop-schemas, gspell, gtksourceview4, libgee
+, tepl, amtk, gnome3, glib, pkgconfig, intltool, itstool, libxml2 }:
+let
+  version = "3.36.0";
+  pname = "gnome-latex";
+in stdenv.mkDerivation {
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1869kr1zhcp04mzbi67lwgk497w840dbbc7427i9yh9b9s7j6mqn";
+  };
+
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+  configureFlags = ["--disable-dconf-migration"];
+
+  nativeBuildInputs = [
+    pkgconfig
+    wrapGAppsHook
+    itstool
+    intltool
+  ];
+
+  buildInputs = [
+    amtk
+    gnome3.adwaita-icon-theme
+    glib
+    gsettings-desktop-schemas
+    gspell
+    gtksourceview4
+    libgee
+    libxml2
+    tepl
+  ];
+
+  doCheck = true;
+
+  passthru.updateScript = gnome3.updateScript { packageName = pname; };
+
+  meta = with stdenv.lib; {
+    homepage = "https://wiki.gnome.org/Apps/GNOME-LaTeX";
+    description = "A LaTeX editor for the GNOME desktop";
+    maintainers = [ maintainers.manveru ];
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/gobby/default.nix b/nixpkgs/pkgs/applications/editors/gobby/default.nix
new file mode 100644
index 000000000000..e3d039e42232
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/gobby/default.nix
@@ -0,0 +1,28 @@
+{ avahiSupport ? false # build support for Avahi in libinfinity
+, stdenv, fetchFromGitHub, autoconf, automake, pkgconfig, wrapGAppsHook, yelp-tools
+, gtkmm3, gsasl, gtksourceview3, libxmlxx, libinfinity, intltool, itstool, gnome3 }:
+
+let
+  libinf = libinfinity.override { gtkWidgets = true; inherit avahiSupport; };
+in stdenv.mkDerivation {
+  name = "gobby-unstable-2018-04-03";
+  src = fetchFromGitHub {
+    owner = "gobby";
+    repo = "gobby";
+    rev = "ea4df27c9b6b885434797b0071ce198b23f9f63b";
+    sha256 = "0q7lq64yn16lxvj4jphs8y9194h0xppj8k7y9x8b276krraak2az";
+  };
+
+  nativeBuildInputs = [ autoconf automake pkgconfig intltool itstool yelp-tools wrapGAppsHook ];
+  buildInputs = [ gtkmm3 gsasl gtksourceview3 libxmlxx libinf ];
+
+  preConfigure = "./autogen.sh";
+
+  meta = with stdenv.lib; {
+    homepage = "http://gobby.0x539.de/";
+    description = "A GTK-based collaborative editor supporting multiple documents in one session and a multi-user chat";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [ maintainers.phreedom ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/hecate/default.nix b/nixpkgs/pkgs/applications/editors/hecate/default.nix
new file mode 100644
index 000000000000..de57fb092157
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/hecate/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  version = "0.0.1";
+  pname = "hecate";
+
+  src = fetchFromGitHub {
+    owner  = "evanmiller";
+    repo   = "hecate";
+    rev    = "v${version}";
+    sha256 = "0ymirsd06z3qa9wi59k696mg8f4mhscw8gc5c5zkd0n3n8s0k0z8";
+  };
+
+  goPackagePath = "hecate";
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    inherit (src.meta) homepage;
+    description = "terminal hex editor";
+    longDescription = "The Hex Editor From Hell!";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ ramkromberg ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/hecate/deps.nix b/nixpkgs/pkgs/applications/editors/hecate/deps.nix
new file mode 100644
index 000000000000..c9d94934a444
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/hecate/deps.nix
@@ -0,0 +1,29 @@
+[
+  {
+    goPackagePath = "github.com/nsf/termbox-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/nsf/termbox-go";
+      rev = "b6acae516ace002cb8105a89024544a1480655a5";
+      sha256 = "0zf95qdd5bif9rw03hqk87x7d905p373bvsj0bl4gi16spqjbdil";
+    };
+  }
+  {
+    goPackagePath = "github.com/edsrzf/mmap-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/edsrzf/mmap-go";
+      rev = "935e0e8a636ca4ba70b713f3e38a19e1b77739e8";
+      sha256 = "11a63wrjwfnchjhwqjp6yd5j0370ysppjgv31l5bmvvwps7whq9d";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-runewidth";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-runewidth";
+      rev = "737072b4e32b7a5018b4a7125da8d12de90e8045";
+      sha256 = "09ni8bmj6p2b774bdh6mfcxl03bh5sqk860z03xpb6hv6yfxqkjm";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/editors/heme/default.nix b/nixpkgs/pkgs/applications/editors/heme/default.nix
new file mode 100644
index 000000000000..7d1830c842b6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/heme/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, lib, fetchurl, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "heme";
+  version = "0.4.2";
+  src = fetchurl {
+    url = "mirror://sourceforge/project/heme/heme/heme-${version}/heme-${version}.tar.gz";
+    sha256 = "0wsrnj5mrlazgqs4252k30aw8m86qw0z9dmrsli9zdxl7j4cg99v";
+  };
+  postPatch = ''
+    substituteInPlace Makefile \
+      --replace "/usr/local" "$out" \
+      --replace "CFLAGS = " "CFLAGS = -I${ncurses.dev}/include " \
+      --replace "LDFLAGS = " "LDFLAGS = -L${ncurses.out}/lib " \
+      --replace "-lcurses" "-lncurses"
+  '';
+  buildInputs = [ ncurses ];
+  preBuild = ''
+    mkdir -p $out/bin
+    mkdir -p $out/man/man1
+  '';
+  meta = with lib; {
+    description = "Portable and fast console hex editor for unix operating systems";
+    homepage = "http://heme.sourceforge.net/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ cstrahan ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/hexcurse/default.nix b/nixpkgs/pkgs/applications/editors/hexcurse/default.nix
new file mode 100644
index 000000000000..a1b90b83d589
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/hexcurse/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, lib, fetchFromGitHub, fetchpatch, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "hexcurse";
+  version = "1.60.0";
+
+  src = fetchFromGitHub {
+    owner = "LonnyGomes";
+    repo = "hexcurse";
+    rev = "v${version}";
+    sha256 = "17ckkxfzbqvvfdnh10if4aqdcq98q3vl6dn1v6f4lhr4ifnyjdlk";
+  };
+  buildInputs = [ ncurses ];
+  NIX_CFLAGS_COMPILE = [ "-Wno-error=stringop-overflow" "-Wno-error=stringop-truncation" ];
+  patches = [
+    # gcc7 compat
+    (fetchpatch {
+      url = "https://github.com/LonnyGomes/hexcurse/commit/d808cb7067d1df067f8b707fabbfaf9f8931484c.patch";
+      sha256 = "0h8345blmc401c6bivf0imn4cwii67264yrzxg821r46wrnfvyi2";
+    })
+    # gcc7 compat
+    (fetchpatch {
+      url = "https://github.com/LonnyGomes/hexcurse/commit/716b5d58ac859cc240b8ccb9cbd79ace3e0593c1.patch";
+      sha256 = "0v6gbp6pjpmnzswlf6d97aywiy015g3kcmfrrkspsbb7lh1y3nix";
+    })
+  ];
+
+  meta = with lib; {
+    description = "ncurses-based console hexeditor written in C";
+    homepage = "https://github.com/LonnyGomes/hexcurse";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ cstrahan ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/hexdino/default.nix b/nixpkgs/pkgs/applications/editors/hexdino/default.nix
new file mode 100644
index 000000000000..79e0027d5096
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/hexdino/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, rustPlatform, ncurses }:
+
+rustPlatform.buildRustPackage {
+  pname = "hexdino";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "Luz";
+    repo = "hexdino";
+    rev = "de5b5d7042129f57e0ab36416a06476126bce389";
+    sha256 = "11mz07735gxqfamjcjjmxya6swlvr1p77sgd377zjcmd6z54gwyf";
+  };
+
+  cargoSha256 = "06ghcd4j751mdkzwb88nqwk8la4zdb137y0iqrkpykkfx0as43x3";
+
+  buildInputs = [ ncurses ];
+
+  meta = with stdenv.lib; {
+    description = "A hex editor with vim like keybindings written in Rust";
+    homepage = "https://github.com/Luz/hexdino";
+    license = licenses.mit;
+    maintainers = [ maintainers.luz ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/hexedit/default.nix b/nixpkgs/pkgs/applications/editors/hexedit/default.nix
new file mode 100644
index 000000000000..916dd4a15948
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/hexedit/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "hexedit";
+  version = "1.2.13";
+
+  src = fetchurl {
+    url = "http://rigaux.org/${pname}-${version}.src.tgz";
+    sha256 = "1mwdp1ikk64cqmagnrrps5jkn3li3n47maiqh2qc1xbp1ains4ka";
+  };
+
+  buildInputs = [ ncurses ];
+
+  meta = {
+    description = "View and edit files in hexadecimal or in ASCII";
+    homepage = "http://prigaux.chez.com/hexedit.html";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/howl/default.nix b/nixpkgs/pkgs/applications/editors/howl/default.nix
new file mode 100644
index 000000000000..975016d55417
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/howl/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, makeWrapper, pkgconfig, gtk3, librsvg }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "howl";
+  version = "0.6";
+
+  # Use the release tarball containing pre-downloaded dependencies sources
+  src = fetchurl {
+    url = "https://github.com/howl-editor/howl/releases/download/${version}/howl-${version}.tgz";
+    sha256 = "1qc58l3rkr37cj6vhf8c7bnwbz93nscyraz7jxqwjq6k4gj0cjw3";
+  };
+
+  sourceRoot = "./howl-${version}/src";
+
+  # The Makefile uses "/usr/local" if not explicitly overridden
+  installFlags = [ "PREFIX=$(out)" ];
+
+  nativeBuildInputs = [ makeWrapper pkgconfig ];
+  buildInputs = [ gtk3 librsvg ];
+  enableParallelBuilding = true;
+
+  # Required for the program to properly load its SVG assets
+  postInstall = ''
+    wrapProgram $out/bin/howl \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE"
+  '';
+
+  meta = {
+    homepage = "https://howl.io/";
+    description = "A general purpose, fast and lightweight editor with a keyboard-centric minimalistic user interface";
+    license = licenses.mit;
+    maintainers = with maintainers; [ pacien ];
+
+    # LuaJIT and Howl builds fail for x86_64-darwin and aarch64-linux respectively
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/editors/ht/default.nix b/nixpkgs/pkgs/applications/editors/ht/default.nix
new file mode 100644
index 000000000000..096b69a5e82a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/ht/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, lib, fetchurl, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "ht";
+  version = "2.1.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/hte/ht-source/ht-${version}.tar.bz2";
+    sha256 = "0w2xnw3z9ws9qrdpb80q55h6ynhh3aziixcfn45x91bzrbifix9i";
+  };
+
+  buildInputs = [
+    ncurses
+  ];
+
+  hardeningDisable = [ "format" ];
+
+  patches = [ ./gcc7.patch ];
+
+  meta = with lib; {
+    description = "File editor/viewer/analyzer for executables";
+    homepage = "http://hte.sourceforge.net";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ cstrahan ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/ht/gcc7.patch b/nixpkgs/pkgs/applications/editors/ht/gcc7.patch
new file mode 100644
index 000000000000..a90deaac698d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/ht/gcc7.patch
@@ -0,0 +1,11 @@
+--- ht-2.1.0.org/htapp.cc	2014-09-14 16:55:26.000000000 +0100
++++ ht-2.1.0/htapp.cc	2018-03-10 12:48:07.158533800 +0000
+@@ -3023,7 +3023,7 @@
+ {
+ 	uint a = 2;
+ 	uint b = u/a;
+-	while (abs(a - b) > 1) {
++	while (abs((int)(a - b)) > 1) {
+ 		a = (a+b)/2;
+ 		b = u/a;
+         }
diff --git a/nixpkgs/pkgs/applications/editors/jedit/build.xml.patch b/nixpkgs/pkgs/applications/editors/jedit/build.xml.patch
new file mode 100644
index 000000000000..2f630f18ab76
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/jedit/build.xml.patch
@@ -0,0 +1,257 @@
+--- a/build.xml	2015-02-04 08:47:37.000000000 +0100
++++ b/build.xml	2015-02-17 14:06:42.455283148 +0100
+@@ -43,16 +43,6 @@
+ 	<property name="textAreaPackage"
+ 		  location="../textarea"/>
+ 
+-	<!-- Ivy Properties -->
+-	<property name="config.ivy.version"
+-		  value="2.2.0"/>
+-	<property name="ivy.jar.dir"
+-		  location="${lib.dir}/ivy"/>
+-	<property name="ivy.jar.filename"
+-		  value="ivy-${config.ivy.version}.jar"/>
+-	<property name="ivy.jar.file"
+-		  location="${ivy.jar.dir}/${ivy.jar.filename}"/>
+-
+ 	<!-- Miscellaneous -->
+ 	<property name="jar.filename"
+ 		  value="${ant.project.name}.jar"/>
+@@ -90,51 +80,8 @@
+ 			  value="true"/>
+ 	</target>
+ 
+-	<target name="check-ivy"
+-		depends="init">
+-		<available property="ivy.jar.present"
+-			   file="${ivy.jar.file}"
+-			   type="file"/>
+-	</target>
+-
+-	<target name="download-ivy"
+-		depends="init,check-ivy"
+-		unless="ivy.jar.present">
+-		<mkdir dir="${ivy.jar.dir}"/>
+-		<get src="http://repo2.maven.org/maven2/org/apache/ivy/ivy/${config.ivy.version}/ivy-${config.ivy.version}.jar"
+-		     dest="${ivy.jar.file}"
+-		     usetimestamp="true"/>
+-	</target>
+-
+-	<target name="init-ivy"
+-		depends="init,download-ivy"
+-		unless="ivy.done">
+-		<property name="ivy.retrieve.pattern"
+-			  value="${lib.dir}/[conf]/[artifact](-[classifier]).[ext]"/>
+-		<taskdef resource="org/apache/ivy/ant/antlib.xml"
+-			 classpath="${ivy.jar.file}"
+-			 loaderref="ivy.loader"
+-			 uri="antlib:org.apache.ivy.ant"/>
+-		<ivy:settings file="ivysettings.xml"/>
+-	</target>
+-
+-	<target name="retrieve"
+-		description="retrieve the dependencies"
+-		depends="init,init-ivy"
+-		unless="ivy.done">
+-		<ivy:retrieve sync="true"/>
+-		<ivy:retrieve pattern="${lib.dir}/ivy/[artifact]-[revision].[ext]"
+-			      organisation="org.apache.ivy"
+-			      module="ivy"
+-			      revision="${config.ivy.version}"
+-			      conf="default"
+-			      inline="true"/>
+-		<property name="ivy.done"
+-			  value="true"/>
+-	</target>
+-
+ 	<target name="setup"
+-		depends="init,retrieve">
++		depends="init">
+ 		<taskdef resource="net/sf/antcontrib/antlib.xml"
+ 			 uri="antlib:net.sf.antcontrib">
+ 			<classpath>
+@@ -239,37 +186,6 @@
+ 		</javac>
+ 	</target>
+ 
+-	<target name="compile-test"
+-		depends="init,retrieve,compile">
+-		<mkdir dir="${classes.dir}/test"/>
+-		<depend srcDir="${basedir}/test"
+-			destDir="${classes.dir}/test"
+-			cache="${classes.dir}"/>
+-		<dependset>
+-			<srcfilelist files="build.xml"/>
+-			<srcfilelist files="ivy.xml"/>
+-			<targetfileset dir="${classes.dir}/test"/>
+-		</dependset>
+-		<javac srcdir="test"
+-		       destdir="${classes.dir}/test"
+-		       debug="true"
+-		       debuglevel="${config.build.debuglevel}"
+-		       nowarn="${config.build.nowarn}"
+-		       deprecation="${config.build.deprecation}"
+-		       source="${target.java.version}"
+-		       target="${target.java.version}"
+-		       compiler="modern"
+-		       encoding="UTF-8"
+-		       includeAntRuntime="false">
+-			<classpath id="classpath.test">
+-				<fileset dir="${lib.dir}/test"
+-					 includes="*.jar"/>
+-				<pathelement location="${classes.dir}/core"/>
+-			</classpath>
+-			<compilerarg line="${config.build.compilerarg}"/>
+-		</javac>
+-	</target>
+-
+ 	<target name="prepare-textArea"
+ 		depends="init">
+ 		<delete includeemptydirs="true"
+@@ -423,33 +339,8 @@
+ 		</javac>
+ 	</target>
+ 
+-	<target name="test"
+-		depends="init,retrieve,compile,compile-test"
+-		description="run unit tests"
+-		unless="skip.tests">
+-		<delete dir="${build.dir}/test/raw-reports"/>
+-		<mkdir dir="${build.dir}/test/raw-reports"/>
+-		<junit printsummary="true"
+-		       failureproperty="tests.failed"
+-		       enabletestlistenerevents="true">
+-			<classpath refid="classpath.test"/>
+-			<classpath location="${classes.dir}/test"/>
+-			<formatter type="xml"/>
+-			<batchtest todir="${build.dir}/test/raw-reports">
+-				<fileset dir="test"/>
+-			</batchtest>
+-		</junit>
+-		<mkdir dir="${build.dir}/test/merged-reports"/>
+-		<junitreport todir="${build.dir}/test/merged-reports">
+-			<fileset dir="${build.dir}/test/raw-reports"/>
+-			<report todir="${build.dir}/test/reports"/>
+-		</junitreport>
+-		<fail message="Unit test(s) failed! See reports at ${build.dir}/test/reports/index.html"
+-		      if="tests.failed"/>
+-	</target>
+-
+ 	<target name="build"
+-		depends="init,retrieve,setup,compile"
++		depends="init,setup,compile"
+ 		description="build the jEdit JAR-file with full debug-information">
+ 		<mkdir dir="${jar.location}"/>
+ 		<jar destfile="${jar.location}/${jar.filename}"
+@@ -504,11 +395,10 @@
+ 				</copy>
+ 			</contrib:then>
+ 		</contrib:if>
+-		<antcall target="test" />
+ 	</target>
+ 
+ 	<target name="build-exe-launcher"
+-		depends="init,retrieve,setup,filter-package-files"
++		depends="init,setup,filter-package-files"
+ 		description="build the EXE launcher">
+ 		<contrib:if>
+ 			<os family="windows"/>
+@@ -622,7 +512,7 @@
+ 	</target>
+ 
+ 	<target name="unpack-docbook-xsl"
+-		depends="init,retrieve">
++		depends="init">
+ 		<unzip src="${lib.dir}/docbook/docbook-xsl-resources.zip"
+ 		       dest="${build.dir}/docbook-xsl/"/>
+ 	</target>
+@@ -668,7 +558,7 @@
+ 	</presetdef>
+ 
+ 	<target name="generate-doc-faq"
+-		depends="init,retrieve,setup,unpack-docbook-xsl">
++		depends="init,setup,unpack-docbook-xsl">
+ 		<dependset.html>
+ 			<srcfileset dir="doc/FAQ"/>
+ 			<targetfileset dir="${jar.location}/doc/FAQ"/>
+@@ -692,7 +582,7 @@
+ 	</target>
+ 
+ 	<target name="generate-doc-news"
+-		depends="init,retrieve,setup,unpack-docbook-xsl">
++		depends="init,setup,unpack-docbook-xsl">
+ 		<dependset.html>
+ 			<srcfileset dir="doc/whatsnew"/>
+ 			<targetfileset dir="${jar.location}/doc/whatsnew"/>
+@@ -716,7 +606,7 @@
+ 	</target>
+ 
+ 	<target name="generate-doc-users-guide"
+-		depends="init,retrieve,setup,unpack-docbook-xsl">
++		depends="init,setup,unpack-docbook-xsl">
+ 		<dependset.html>
+ 			<srcfileset dir="doc/users-guide"/>
+ 			<targetfileset dir="${jar.location}/doc/users-guide"/>
+@@ -851,7 +741,7 @@
+ 	</target>
+ 
+ 	<target name="generate-pdf-users-guide"
+-		depends="init,retrieve,setup,unpack-docbook-xsl">
++		depends="init,setup,unpack-docbook-xsl">
+ 		<fail message="Please set the property &quot;paper.type&quot;"
+ 		      unless="paper.type"/>
+ 		<contrib:switch value="${paper.type}">
+@@ -1154,7 +1044,7 @@
+ 	</target>
+ 
+ 	<target name="compile-jarbundler"
+-		depends="init,retrieve">
++		depends="init">
+ 		<mkdir dir="${classes.dir}/jarbundler"/>
+ 		<depend srcDir="${basedir}"
+ 			destDir="${classes.dir}/jarbundler"
+@@ -1180,7 +1070,7 @@
+ 	</target>
+ 
+ 	<target name="dist-mac-finish"
+-		depends="init,retrieve,setup"
++		depends="init,setup"
+ 		description="finish building the Mac OS X disk image (DMG-file) on Mac OS X">
+ 		<fail message="The disk image (DMG-file) for easy distribution on Mac OS X can only be built on Mac OS X currently">
+ 			<condition>
+@@ -1295,7 +1185,7 @@
+ 	</target>
+ 
+ 	<target name="dist-mac"
+-		depends="init,retrieve,setup,prepare-dist-files"
++		depends="init,setup,prepare-dist-files"
+ 		description="build the Mac OS X disk image (DMG-file)">
+ 		<antcall target="compile-jarbundler">
+ 			<param name="config.build.debuglevel"
+@@ -1411,7 +1301,7 @@
+ 	</target>
+ 
+ 	<target name="prepare-dist-files"
+-		depends="init,retrieve,setup">
++		depends="init,setup">
+ 		<antcall target="build">
+ 			<param name="config.build.debuglevel"
+ 			       value="lines,source"/>
+@@ -1592,7 +1482,7 @@
+ 	</target>
+ 
+ 	<target name="dist-deb"
+-		depends="init,retrieve,setup,prepare-dist-files"
++		depends="init,setup,prepare-dist-files"
+ 		description="build the DEB Package">
+ 		<antcall target="compile-ar">
+ 			<param name="config.build.debuglevel"
+@@ -1838,7 +1728,7 @@
+ 	</target>
+ 
+ 	<target name="dist-sign-deb-Release"
+-		depends="init,retrieve,setup"
++		depends="init,setup"
+ 		description="sign the DEB Release file">
+ 		<contrib:if>
+ 			<not>
diff --git a/nixpkgs/pkgs/applications/editors/jedit/default.nix b/nixpkgs/pkgs/applications/editors/jedit/default.nix
new file mode 100644
index 000000000000..178494b04981
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/jedit/default.nix
@@ -0,0 +1,66 @@
+{ stdenv, fetchurl, ant, jdk, commonsBsf, commonsLogging, bsh }:
+
+let
+  version = "5.2.0";
+  bcpg = fetchurl {
+    url = "mirror://maven/org/bouncycastle/bcpg-jdk16/1.46/bcpg-jdk16-1.46.jar";
+    sha256 = "16xhmwks4l65m5x150nd23y5lyppha9sa5fj65rzhxw66gbli82d";
+  };
+  jsr305 = fetchurl {
+    url = "mirror://maven/com/google/code/findbugs/jsr305/2.0.0/jsr305-2.0.0.jar";
+    sha256 = "0s74pv8qjc42c7q8nbc0c3b1hgx0bmk3b8vbk1z80p4bbgx56zqy";
+  };
+in
+
+stdenv.mkDerivation {
+  pname = "jedit";
+  inherit version;
+  src = fetchurl {
+    url = "mirror://sourceforge/jedit/jedit${version}source.tar.bz2";
+    sha256 = "03wmbh90rl5lsc35d7jwcp9j5qyyzq1nccxf4fal8bmnx8n4si0x";
+  };
+
+  buildInputs = [ ant jdk commonsBsf commonsLogging ];
+
+  # This patch removes from the build process:
+  #  - the automatic download of dependencies (see configurePhase);
+  #  - the tests
+  patches = [ ./build.xml.patch ];
+
+  configurePhase = ''
+    mkdir -p lib/ant-contrib/ lib/scripting lib/compile lib/default-plugins
+    cp ${ant}/lib/ant/lib/ant-contrib-*.jar lib/ant-contrib/
+    cp ${bsh} ${bcpg} lib/scripting/
+    cp ${jsr305} lib/compile/
+  '';
+
+  buildPhase = "ant build";
+
+  installPhase = ''
+    mkdir -p $out/share/jEdit
+    cp -r build/jedit.jar doc icons keymaps macros modes startup $out/share/jEdit
+
+    sed -i "s|Icon=.*|Icon=$out/share/jEdit/icons/jedit-icon48.png|g" package-files/linux/deb/jedit.desktop
+    mkdir -p $out/share/applications
+    mv package-files/linux/deb/jedit.desktop $out/share/applications/jedit.desktop
+
+    patch package-files/linux/jedit << EOF
+    5a6,8
+    > # specify the correct JAVA_HOME
+    > JAVA_HOME=${jdk.jre.home}/jre
+    > 
+    EOF
+    sed -i "s|/usr/share/jEdit/@jar.filename@|$out/share/jEdit/jedit.jar|g" package-files/linux/jedit
+    mkdir -p $out/bin
+    cp package-files/linux/jedit $out/bin/jedit
+    chmod +x $out/bin/jedit
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Mature programmer's text editor (Java based)";
+    homepage = "http://www.jedit.org";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.vbgl ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/jetbrains/common.nix b/nixpkgs/pkgs/applications/editors/jetbrains/common.nix
new file mode 100644
index 000000000000..07776bebe425
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/jetbrains/common.nix
@@ -0,0 +1,82 @@
+{ stdenv, lib, makeDesktopItem, makeWrapper, patchelf
+, coreutils, gnugrep, which, git, unzip, libsecret, libnotify
+}:
+
+{ name, product, version, src, wmClass, jdk, meta }:
+
+with stdenv.lib;
+
+let loName = toLower product;
+    hiName = toUpper product;
+    execName = concatStringsSep "-" (init (splitString "-" name));
+in
+
+with stdenv; lib.makeOverridable mkDerivation rec {
+  inherit name src meta;
+  desktopItem = makeDesktopItem {
+    name = execName;
+    exec = execName;
+    comment = lib.replaceChars ["\n"] [" "] meta.longDescription;
+    desktopName = product;
+    genericName = meta.description;
+    categories = "Development;";
+    icon = execName;
+    extraEntries = ''
+      StartupWMClass=${wmClass}
+    '';
+  };
+
+  nativeBuildInputs = [ makeWrapper patchelf unzip ];
+
+  patchPhase = lib.optionalString (!stdenv.isDarwin) ''
+      get_file_size() {
+        local fname="$1"
+        echo $(ls -l $fname | cut -d ' ' -f5)
+      }
+
+      munge_size_hack() {
+        local fname="$1"
+        local size="$2"
+        strip $fname
+        truncate --size=$size $fname
+      }
+
+      interpreter=$(echo ${stdenv.glibc.out}/lib/ld-linux*.so.2)
+      if [ "${stdenv.hostPlatform.system}" == "x86_64-linux" ]; then
+        target_size=$(get_file_size bin/fsnotifier64)
+        patchelf --set-interpreter "$interpreter" bin/fsnotifier64
+        munge_size_hack bin/fsnotifier64 $target_size
+      else
+        target_size=$(get_file_size bin/fsnotifier)
+        patchelf --set-interpreter "$interpreter" bin/fsnotifier
+        munge_size_hack bin/fsnotifier $target_size
+      fi
+  '';
+
+  installPhase = ''
+    mkdir -p $out/{bin,$name,share/pixmaps,libexec/${name}}
+    cp -a . $out/$name
+    ln -s $out/$name/bin/${loName}.png $out/share/pixmaps/${execName}.png
+    mv bin/fsnotifier* $out/libexec/${name}/.
+
+    jdk=${jdk.home}
+    item=${desktopItem}
+
+    makeWrapper "$out/$name/bin/${loName}.sh" "$out/bin/${execName}" \
+      --prefix PATH : "$out/libexec/${name}:${lib.optionalString (stdenv.isDarwin) "${jdk}/jdk/Contents/Home/bin:"}${stdenv.lib.makeBinPath [ jdk coreutils gnugrep which git ]}" \
+      --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [
+        # Some internals want libstdc++.so.6
+        stdenv.cc.cc.lib libsecret
+        libnotify
+      ]}" \
+      --set JDK_HOME "$jdk" \
+      --set ${hiName}_JDK "$jdk" \
+      --set ANDROID_JAVA_HOME "$jdk" \
+      --set JAVA_HOME "$jdk"
+
+    ln -s "$item/share/applications" $out/share
+  '';
+
+} // stdenv.lib.optionalAttrs (!(meta.license.free or true)) {
+  preferLocalBuild = true;
+}
diff --git a/nixpkgs/pkgs/applications/editors/jetbrains/default.nix b/nixpkgs/pkgs/applications/editors/jetbrains/default.nix
new file mode 100644
index 000000000000..a2bf2cbf1de6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/jetbrains/default.nix
@@ -0,0 +1,425 @@
+{ lib, stdenv, callPackage, fetchurl
+, python
+, jdk, cmake, libxml2, zlib, python3, ncurses5
+}:
+
+with stdenv.lib;
+
+let
+  mkJetBrainsProduct = callPackage ./common.nix { };
+
+  # Sorted alphabetically
+
+  buildClion = { name, version, src, license, description, wmClass, ... }:
+    lib.overrideDerivation (mkJetBrainsProduct {
+      inherit name version src wmClass jdk;
+      product = "CLion";
+      meta = with stdenv.lib; {
+        homepage = "https://www.jetbrains.com/clion/";
+        inherit description license;
+        longDescription = ''
+          Enhancing productivity for every C and C++
+          developer on Linux, macOS and Windows.
+        '';
+        maintainers = with maintainers; [ edwtjo mic92 ];
+        platforms = platforms.linux;
+      };
+    }) (attrs: {
+      postFixup = (attrs.postFixup or "") + optionalString (stdenv.isLinux) ''
+        (
+          cd $out/clion-${version}
+          # bundled cmake does not find libc
+          rm -rf bin/cmake/linux
+          ln -s ${cmake} bin/cmake/linux
+
+          lldbLibPath=$out/clion-${version}/bin/lldb/linux/lib
+          interp="$(cat $NIX_CC/nix-support/dynamic-linker)"
+          ln -s ${ncurses5.out}/lib/libtinfo.so.5 $lldbLibPath/libtinfo.so.5
+
+          patchelf --set-interpreter $interp \
+            --set-rpath "${lib.makeLibraryPath [ libxml2 zlib stdenv.cc.cc.lib ]}:$lldbLibPath" \
+            bin/lldb/linux/bin/lldb-server
+
+          for i in LLDBFrontend lldb lldb-argdumper; do
+            patchelf --set-interpreter $interp \
+              --set-rpath "${lib.makeLibraryPath [ stdenv.cc.cc.lib ]}:$lldbLibPath" \
+              "bin/lldb/linux/bin/$i"
+          done
+
+          patchelf \
+            --set-rpath "${lib.makeLibraryPath [ stdenv.cc.cc.lib ]}:$lldbLibPath" \
+            bin/lldb/linux/lib/python3.*/lib-dynload/zlib.cpython-*m-x86_64-linux-gnu.so
+
+          patchelf \
+            --set-rpath "${lib.makeLibraryPath [ libxml2 zlib stdenv.cc.cc.lib python3 ]}:$lldbLibPath" \
+            bin/lldb/linux/lib/liblldb.so
+
+          gdbLibPath=$out/clion-${version}/bin/gdb/linux/lib
+          patchelf \
+            --set-rpath "$gdbLibPath" \
+            bin/gdb/linux/lib/python3.*/lib-dynload/zlib.cpython-*m-x86_64-linux-gnu.so
+          patchelf --set-interpreter $interp \
+            --set-rpath "${lib.makeLibraryPath [ stdenv.cc.cc.lib zlib ]}:$gdbLibPath" \
+            bin/gdb/linux/bin/gdb
+          patchelf --set-interpreter $interp \
+            --set-rpath "${lib.makeLibraryPath [ stdenv.cc.cc.lib ]}:$gdbLibPath" \
+            bin/gdb/linux/bin/gdbserver
+
+          patchelf --set-interpreter $interp \
+            --set-rpath "${lib.makeLibraryPath [ stdenv.cc.cc.lib zlib ]}" \
+            bin/clang/linux/clangd
+          patchelf --set-interpreter $interp \
+            --set-rpath "${lib.makeLibraryPath [ stdenv.cc.cc.lib zlib ]}" \
+            bin/clang/linux/clang-tidy
+
+          wrapProgram $out/bin/clion \
+            --set CL_JDK "${jdk}"
+        )
+      '';
+    });
+
+  buildDataGrip = { name, version, src, license, description, wmClass, ... }:
+    (mkJetBrainsProduct {
+      inherit name version src wmClass jdk;
+      product = "DataGrip";
+      meta = with stdenv.lib; {
+        homepage = "https://www.jetbrains.com/datagrip/";
+        inherit description license;
+        longDescription = ''
+          DataGrip is a new IDE from JetBrains built for database admins.
+          It allows you to quickly migrate and refactor relational databases,
+          construct efficient, statically checked SQL queries and much more.
+        '';
+        maintainers = with maintainers; [ loskutov ];
+        platforms = platforms.linux;
+      };
+    });
+
+  buildGoland = { name, version, src, license, description, wmClass, ... }:
+    lib.overrideDerivation (mkJetBrainsProduct {
+      inherit name version src wmClass jdk;
+      product = "Goland";
+      meta = with stdenv.lib; {
+        homepage = "https://www.jetbrains.com/go/";
+        inherit description license;
+        longDescription = ''
+          Goland is the codename for a new commercial IDE by JetBrains
+          aimed at providing an ergonomic environment for Go development.
+          The new IDE extends the IntelliJ platform with the coding assistance
+          and tool integrations specific for the Go language
+        '';
+        maintainers = [ maintainers.miltador ];
+        platforms = platforms.linux;
+      };
+    }) (attrs: {
+      postFixup = (attrs.postFixup or "") + ''
+        interp="$(cat $NIX_CC/nix-support/dynamic-linker)"
+        patchelf --set-interpreter $interp $out/goland*/plugins/go/lib/dlv/linux/dlv
+
+        chmod +x $out/goland*/plugins/go/lib/dlv/linux/dlv
+      '';
+    });
+
+  buildIdea = { name, version, src, license, description, wmClass, ... }:
+    (mkJetBrainsProduct {
+      inherit name version src wmClass jdk;
+      product = "IDEA";
+      meta = with stdenv.lib; {
+        homepage = "https://www.jetbrains.com/idea/";
+        inherit description license;
+        longDescription = ''
+          IDE for Java SE, Groovy & Scala development Powerful
+          environment for building Google Android apps Integration
+          with JUnit, TestNG, popular SCMs, Ant & Maven. Also known
+          as IntelliJ.
+        '';
+        maintainers = with maintainers; [ edwtjo ];
+        platforms = platforms.linux ++ platforms.darwin;
+      };
+    });
+
+  buildMps = { name, version, src, license, description, wmClass, ... }:
+    (mkJetBrainsProduct rec {
+      inherit name version src wmClass jdk;
+      product = "MPS";
+      meta = with stdenv.lib; {
+        homepage = https://www.jetbrains.com/mps/;
+        inherit license description;
+        longDescription = ''
+          A metaprogramming system which uses projectional editing
+          which allows users to overcome the limits of language
+          parsers, and build DSL editors, such as ones with tables and
+          diagrams.
+        '';
+        maintainers = with maintainers; [ rasendubi ];
+        platforms = platforms.linux;
+      };
+    });
+
+  buildPhpStorm = { name, version, src, license, description, wmClass, ... }:
+    (mkJetBrainsProduct {
+      inherit name version src wmClass jdk;
+      product = "PhpStorm";
+      meta = with stdenv.lib; {
+        homepage = "https://www.jetbrains.com/phpstorm/";
+        inherit description license;
+        longDescription = ''
+          PhpStorm provides an editor for PHP, HTML and JavaScript
+          with on-the-fly code analysis, error prevention and
+          automated refactorings for PHP and JavaScript code.
+        '';
+        maintainers = with maintainers; [ schristo ma27 ];
+        platforms = platforms.linux;
+      };
+    });
+
+  buildPycharm = { name, version, src, license, description, wmClass, ... }:
+    (mkJetBrainsProduct {
+      inherit name version src wmClass jdk;
+      product = "PyCharm";
+      meta = with stdenv.lib; {
+        homepage = "https://www.jetbrains.com/pycharm/";
+        inherit description license;
+        longDescription = ''
+          Python IDE with complete set of tools for productive
+          development with Python programming language. In addition, the
+          IDE provides high-class capabilities for professional Web
+          development with Django framework and Google App Engine. It
+          has powerful coding assistance, navigation, a lot of
+          refactoring features, tight integration with various Version
+          Control Systems, Unit testing, powerful all-singing
+          all-dancing Debugger and entire customization. PyCharm is
+          developer driven IDE. It was developed with the aim of
+          providing you almost everything you need for your comfortable
+          and productive development!
+        '';
+        maintainers = with maintainers; [ ];
+        platforms = platforms.linux;
+      };
+    }).override {
+      propagatedUserEnvPkgs = [ python ];
+    };
+
+  buildRider = { name, version, src, license, description, wmClass, ... }:
+    lib.overrideDerivation (mkJetBrainsProduct {
+      inherit name version src wmClass jdk;
+      product = "Rider";
+      meta = with stdenv.lib; {
+        homepage = "https://www.jetbrains.com/rider/";
+        inherit description license;
+        longDescription = ''
+          JetBrains Rider is a new .NET IDE based on the IntelliJ
+          platform and ReSharper. Rider supports .NET Core,
+          .NET Framework and Mono based projects. This lets you
+          develop a wide array of applications including .NET desktop
+          apps, services and libraries, Unity games, ASP.NET and
+          ASP.NET Core web applications.
+        '';
+        maintainers = [ maintainers.miltador ];
+        platforms = platforms.linux;
+      };
+    }) (attrs: {
+      patchPhase = lib.optionalString (!stdenv.isDarwin) (attrs.patchPhase + ''
+        # Patch built-in mono for ReSharperHost to start successfully
+        interpreter=$(echo ${stdenv.glibc.out}/lib/ld-linux*.so.2)
+        patchelf --set-interpreter "$interpreter" lib/ReSharperHost/linux-x64/mono/bin/mono-sgen
+      '');
+    });
+
+  buildRubyMine = { name, version, src, license, description, wmClass, ... }:
+    (mkJetBrainsProduct {
+      inherit name version src wmClass jdk;
+      product = "RubyMine";
+      meta = with stdenv.lib; {
+        homepage = "https://www.jetbrains.com/ruby/";
+        inherit description license;
+        longDescription = description;
+        maintainers = with maintainers; [ edwtjo ];
+        platforms = platforms.linux;
+      };
+    });
+
+  buildWebStorm = { name, version, src, license, description, wmClass, ... }:
+    lib.overrideDerivation (mkJetBrainsProduct {
+      inherit name version src wmClass jdk;
+      product = "WebStorm";
+      meta = with stdenv.lib; {
+        homepage = "https://www.jetbrains.com/webstorm/";
+        inherit description license;
+        longDescription = ''
+          WebStorm provides an editor for HTML, JavaScript (incl. Node.js),
+          and CSS with on-the-fly code analysis, error prevention and
+          automated refactorings for JavaScript code.
+        '';
+        maintainers = with maintainers; [ abaldeau ];
+        platforms = platforms.linux;
+      };
+    }) (attrs: {
+      patchPhase = (attrs.patchPhase or "") + optionalString (stdenv.isLinux) ''
+        # Webstorm tries to use bundled jre if available.
+        # Lets prevent this for the moment
+        rm -r jbr
+      '';
+    });
+in
+
+{
+  # Sorted alphabetically
+
+  clion = buildClion rec {
+    name = "clion-${version}";
+    version = "2020.1.1"; /* updated by script */
+    description  = "C/C++ IDE. New. Intelligent. Cross-platform";
+    license = stdenv.lib.licenses.unfree;
+    src = fetchurl {
+      url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz";
+      sha256 = "0136hmknkxrsgbygxqzrq1836kg02p14hmv5mzbpp79yglhv2xml"; /* updated by script */
+    };
+    wmClass = "jetbrains-clion";
+    update-channel = "CLion RELEASE"; # channel's id as in http://www.jetbrains.com/updates/updates.xml
+  };
+
+  datagrip = buildDataGrip rec {
+    name = "datagrip-${version}";
+    version = "2020.1.3"; /* updated by script */
+    description = "Your Swiss Army Knife for Databases and SQL";
+    license = stdenv.lib.licenses.unfree;
+    src = fetchurl {
+      url = "https://download.jetbrains.com/datagrip/${name}.tar.gz";
+      sha256 = "0ivnicpn67mfyhmiwbx80pq5l2xa4g1cpp79mh7rgm2c5klmf201"; /* updated by script */
+    };
+    wmClass = "jetbrains-datagrip";
+    update-channel = "DataGrip RELEASE";
+  };
+
+  goland = buildGoland rec {
+    name = "goland-${version}";
+    version = "2020.1.2"; /* updated by script */
+    description = "Up and Coming Go IDE";
+    license = stdenv.lib.licenses.unfree;
+    src = fetchurl {
+      url = "https://download.jetbrains.com/go/${name}.tar.gz";
+      sha256 = "0v6vi6m94fwzsg5s357ymh8604zkv6q0zhyqfh9sj4ynzi7l4fyv"; /* updated by script */
+    };
+    wmClass = "jetbrains-goland";
+    update-channel = "GoLand RELEASE";
+  };
+
+  idea-community = buildIdea rec {
+    name = "idea-community-${version}";
+    version = "2020.1.1"; /* updated by script */
+    description = "Integrated Development Environment (IDE) by Jetbrains, community edition";
+    license = stdenv.lib.licenses.asl20;
+    src = fetchurl {
+      url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz";
+      sha256 = "0q848swfg9mjiini5bbjdj1f0qpd1n4glxdpncjj7mbpvp7s2h5k"; /* updated by script */
+    };
+    wmClass = "jetbrains-idea-ce";
+    update-channel = "IntelliJ IDEA RELEASE";
+  };
+
+  idea-ultimate = buildIdea rec {
+    name = "idea-ultimate-${version}";
+    version = "2020.1.1"; /* updated by script */
+    description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
+    license = stdenv.lib.licenses.unfree;
+    src = fetchurl {
+      url = "https://download.jetbrains.com/idea/ideaIU-${version}-no-jbr.tar.gz";
+      sha256 = "13khjc7fp28mpcdn74msdw57nzhicg32xrrvj7s7na2qd9gqz0hf"; /* updated by script */
+    };
+    wmClass = "jetbrains-idea";
+    update-channel = "IntelliJ IDEA RELEASE";
+  };
+
+  mps = buildMps rec {
+    name = "mps-${version}";
+    version = "2019.2";
+    description = "Create your own domain-specific language";
+    license = stdenv.lib.licenses.unfree;
+    src = fetchurl {
+      url = "https://download.jetbrains.com/mps/2019.2/MPS-${version}.tar.gz";
+      sha256 = "0rph3bibj74ddbyrn0az1npn4san4g1alci8nlq4gaqdlcz6zx22";
+    };
+    wmClass = "jetbrains-mps";
+    update-channel = "MPS RELEASE";
+  };
+
+  phpstorm = buildPhpStorm rec {
+    name = "phpstorm-${version}";
+    version = "2020.1.1"; /* updated by script */
+    description = "Professional IDE for Web and PHP developers";
+    license = stdenv.lib.licenses.unfree;
+    src = fetchurl {
+      url = "https://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz";
+      sha256 = "16gclbczd9czqhply0xb2ykv0bw4bgv85fihy1n2szc4rp643qdw"; /* updated by script */
+    };
+    wmClass = "jetbrains-phpstorm";
+    update-channel = "PhpStorm RELEASE";
+  };
+
+  pycharm-community = buildPycharm rec {
+    name = "pycharm-community-${version}";
+    version = "2020.1.1"; /* updated by script */
+    description = "PyCharm Community Edition";
+    license = stdenv.lib.licenses.asl20;
+    src = fetchurl {
+      url = "https://download.jetbrains.com/python/${name}.tar.gz";
+      sha256 = "0p2q01yragab7c15aicpmaby075y7mpf6iavdfipi033q4gnlnki"; /* updated by script */
+    };
+    wmClass = "jetbrains-pycharm-ce";
+    update-channel = "PyCharm RELEASE";
+  };
+
+  pycharm-professional = buildPycharm rec {
+    name = "pycharm-professional-${version}";
+    version = "2020.1.1"; /* updated by script */
+    description = "PyCharm Professional Edition";
+    license = stdenv.lib.licenses.unfree;
+    src = fetchurl {
+      url = "https://download.jetbrains.com/python/${name}.tar.gz";
+      sha256 = "1lq97aqnibvg483ww7wi8slh302gydd2kdkw6p2516rjcmm6n324"; /* updated by script */
+    };
+    wmClass = "jetbrains-pycharm";
+    update-channel = "PyCharm RELEASE";
+  };
+
+  rider = buildRider rec {
+    name = "rider-${version}";
+    version = "2020.1.2"; /* updated by script */
+    description = "A cross-platform .NET IDE based on the IntelliJ platform and ReSharper";
+    license = stdenv.lib.licenses.unfree;
+    src = fetchurl {
+      url = "https://download.jetbrains.com/rider/JetBrains.Rider-${version}.tar.gz";
+      sha256 = "0flwq61p7827f8nmldqgfpxbfl422imclksw6w97mgzqqhcbgksd"; /* updated by script */
+    };
+    wmClass = "jetbrains-rider";
+    update-channel = "Rider RELEASE";
+  };
+
+  ruby-mine = buildRubyMine rec {
+    name = "ruby-mine-${version}";
+    version = "2020.1.1"; /* updated by script */
+    description = "The Most Intelligent Ruby and Rails IDE";
+    license = stdenv.lib.licenses.unfree;
+    src = fetchurl {
+      url = "https://download.jetbrains.com/ruby/RubyMine-${version}.tar.gz";
+      sha256 = "0xhx3n2xdk0k0qx7hdiyfga16hjf2j95k219wh7mh0cys20hkrg8"; /* updated by script */
+    };
+    wmClass = "jetbrains-rubymine";
+    update-channel = "RubyMine RELEASE";
+  };
+
+  webstorm = buildWebStorm rec {
+    name = "webstorm-${version}";
+    version = "2020.1.1"; /* updated by script */
+    description = "Professional IDE for Web and JavaScript development";
+    license = stdenv.lib.licenses.unfree;
+    src = fetchurl {
+      url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
+      sha256 = "0d543g06bxpw4q2p19vmvrxpbhqsvspjbs3sqnw6hxni7wcflhkg"; /* updated by script */
+    };
+    wmClass = "jetbrains-webstorm";
+    update-channel = "WebStorm RELEASE";
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/editors/jetbrains/update.pl b/nixpkgs/pkgs/applications/editors/jetbrains/update.pl
new file mode 100755
index 000000000000..b4a96228db40
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/jetbrains/update.pl
@@ -0,0 +1,92 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i perl -p perl perlPackages.LWPProtocolhttps perlPackages.FileSlurp
+
+use strict;
+use List::Util qw(reduce);
+use File::Slurp;
+use LWP::Simple;
+
+sub semantic_less {
+  my ($a, $b) = @_;
+  $a =~ s/\b(\d+)\b/sprintf("%010s", $1)/eg;
+  $b =~ s/\b(\d+)\b/sprintf("%010s", $1)/eg;
+  return $a lt $b;
+}
+
+sub get_latest_versions {
+  my @channels = get("http://www.jetbrains.com/updates/updates.xml") =~ /(<channel .+?<\/channel>)/gs;
+  my %h = {};
+  for my $ch (@channels) {
+    my ($id) = $ch =~ /^<channel id="[^"]+" name="([^"]+)"/;
+    my @builds = $ch =~ /(<build .+?<\/build>)/gs;
+    my $latest_build = reduce {
+      my ($aversion) = $a =~ /^<build [^>]*version="([^"]+)"/; die "no version in $a" unless $aversion;
+      my ($bversion) = $b =~ /^<build [^>]*version="([^"]+)"/; die "no version in $b" unless $bversion;
+      semantic_less($aversion, $bversion) ? $b : $a;
+    } @builds;
+    next unless $latest_build;
+
+    # version as in download url
+    my ($version) = $latest_build =~ /^<build [^>]*version="([^"]+)"/;
+    my ($fullNumber) = $latest_build =~ /^<build [^>]*fullNumber="([^"]+)"/;
+    my $latest_version_full1 = "$version-$fullNumber";
+    $latest_version_full1 =~ s/\s*EAP//;
+
+    my ($latest_version) = $latest_build =~ /^<build [^>]*version="([^"]+)"/;
+    ($latest_version) = $latest_build =~ /^<build [^>]*fullNumber="([^"]+)"/ if $latest_version =~ / /;
+
+    $h{$id} = $latest_version;
+    $h{"full1_" . $id} = $latest_version_full1;
+  }
+  return %h;
+}
+
+my %latest_versions = get_latest_versions();
+# for my $ch (sort keys %latest_versions) {
+#  print("$ch $latest_versions{$ch}\n");
+# }
+
+sub update_nix_block {
+  my ($block) = @_;
+  my ($channel) = $block =~ /update-channel\s*=\s*"([^"]+)"/;
+  if ($channel) {
+    if ($latest_versions{$channel}) {
+      my ($version) = $block =~ /version\s*=\s*"([^"]+)"/;
+      die "no version in $block" unless $version;
+      if ($version eq $latest_versions{$channel}) {
+        print("$channel is up to date at $version\n");
+      } else {
+        print("updating $channel: $version -> $latest_versions{$channel}\n");
+        my ($url) = $block =~ /url\s*=\s*"([^"]+)"/;
+        # try to interpret some nix
+        my ($name) = $block =~ /name\s*=\s*"([^"]+)"/;
+        $name =~ s/\$\{version\}/$latest_versions{$channel}/;
+        $url =~ s/\$\{name\}/$name/;
+        $url =~ s/\$\{version\}/$latest_versions{$channel}/;
+        die "$url still has some interpolation" if $url =~ /\$/;
+        my ($sha256) = get("$url.sha256") =~ /^([0-9a-f]{64})/;
+        my $version_string = $latest_versions{$channel};
+        unless ( $sha256 ) {
+          my $full_version = $latest_versions{"full1_" . $channel};
+          $url =~ s/$version_string/$full_version/;
+          ($sha256) = get("$url.sha256") =~ /^([0-9a-f]{64})/;
+          $version_string = $full_version;
+        }
+        die "invalid sha256 in $url.sha256" unless $sha256;
+        my ($sha256Base32) = readpipe("nix-hash --type sha256 --to-base32 $sha256");
+        chomp $sha256Base32;
+        print "Jetbrains published SHA256: $sha256\n";
+        print "Conversion into base32 yields: $sha256Base32\n";
+        $block =~ s#version\s*=\s*"([^"]+)".+$#version = "$version_string"; /* updated by script */#m;
+        $block =~ s#sha256\s*=\s*"([^"]+)".+$#sha256 = "$sha256Base32"; /* updated by script */#m;
+      }
+    } else {
+      warn "unknown update-channel $channel";
+    }
+  }
+  return $block;
+}
+
+my $nix = read_file 'default.nix';
+$nix =~ s/(= build\w+ rec \{.+?\n  \};\n)/update_nix_block($1)/gse;
+write_file 'default.nix', $nix;
diff --git a/nixpkgs/pkgs/applications/editors/joe/default.nix b/nixpkgs/pkgs/applications/editors/joe/default.nix
new file mode 100644
index 000000000000..bb227512387d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/joe/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl } :
+
+stdenv.mkDerivation rec {
+  version = "4.6";
+  pname = "joe";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/joe-editor/${pname}-${version}.tar.gz";
+    sha256 = "1pmr598xxxm9j9dl93kq4dv36zyw0q2dh6d7x07hf134y9hhlnj9";
+  };
+
+  meta = with stdenv.lib; {
+    description = "A full featured terminal-based screen editor";
+    homepage = "https://joe-editor.sourceforge.io";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/jucipp/default.nix b/nixpkgs/pkgs/applications/editors/jucipp/default.nix
new file mode 100644
index 000000000000..53549986ed24
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/jucipp/default.nix
@@ -0,0 +1,73 @@
+{ stdenv, fetchgit, dconf, gtksourceview3, at-spi2-core, gtksourceviewmm,
+  boost, epoxy, cmake, aspell, llvmPackages, libgit2, pkgconfig, pcre,
+  libXdmcp, libxkbcommon, libpthreadstubs, wrapGAppsHook, aspellDicts, gtkmm3,
+  coreutils, glibc, dbus, openssl, libxml2, gnumake, ctags }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "juicipp";
+  version = "1.2.3";
+
+  meta = {
+    homepage = "https://github.com/cppit/jucipp";
+    description = "A lightweight, platform independent C++-IDE with support for C++11, C++14, and experimental C++17 features depending on libclang version";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ xnwdd ];
+  };
+
+  src = fetchgit {
+    url = "https://github.com/cppit/jucipp.git";
+    rev = "refs/tags/v${version}";
+    deepClone = true;
+    sha256 = "0xp6ijnrggskjrvscp204bmdpz48l5a8nxr9abp17wni6akb5wiq";
+  };
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+  buildInputs = [
+    dbus
+    openssl
+    libxml2
+    gtksourceview3
+    at-spi2-core
+    pcre
+    epoxy
+    boost
+    libXdmcp
+    cmake
+    aspell
+    libgit2
+    libxkbcommon
+    gtkmm3
+    libpthreadstubs
+    gtksourceviewmm
+    llvmPackages.clang.cc
+    llvmPackages.lldb
+    dconf
+  ];
+
+
+  lintIncludes = let
+    p = "arguments.emplace_back(\"-I";
+    e = "\");";
+    v = stdenv.lib.getVersion llvmPackages.clang;
+  in
+    p+llvmPackages.libcxx+"/include/c++/v1"+e
+    +p+llvmPackages.clang-unwrapped+"/lib/clang/"+v+"/include/"+e
+    +p+glibc.dev+"/include"+e;
+
+  preConfigure = ''
+    sed -i 's|liblldb LIBLLDB_LIBRARIES|liblldb LIBNOTHING|g' CMakeLists.txt
+    sed -i 's|> arguments;|> arguments; ${lintIncludes}|g' src/source_clang.cc
+  '';
+  cmakeFlags = [ "-DLIBLLDB_LIBRARIES=${stdenv.lib.makeLibraryPath [ llvmPackages.lldb ]}/liblldb.so" ];
+  postInstall = ''
+    mv $out/bin/juci $out/bin/.juci
+    makeWrapper "$out/bin/.juci" "$out/bin/juci" \
+      --set PATH "${stdenv.lib.makeBinPath [ ctags coreutils llvmPackages.clang.cc cmake gnumake llvmPackages.clang.bintools llvmPackages.clang ]}" \
+      --set NO_AT_BRIDGE 1 \
+      --set ASPELL_CONF "dict-dir ${aspellDicts.en}/lib/aspell"
+  '';
+
+}
diff --git a/nixpkgs/pkgs/applications/editors/jupp/default.nix b/nixpkgs/pkgs/applications/editors/jupp/default.nix
new file mode 100644
index 000000000000..79db7b8a558a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/jupp/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, ncurses, gpm }:
+
+stdenv.mkDerivation rec {
+
+  pname = "jupp";
+  version = "39";
+  srcName = "joe-3.1${pname}${version}";
+
+  src = fetchurl {
+    urls = [
+      "https://www.mirbsd.org/MirOS/dist/jupp/${srcName}.tgz"
+      "https://pub.allbsd.org/MirOS/dist/jupp/${srcName}.tgz" ];
+    sha256 = "14gys92dy3kq9ikigry7q2x4w5v2z76d97vp212bddrxiqy5np8d";
+  };
+
+  preConfigure = "chmod +x ./configure";
+
+  buildInputs = [ ncurses gpm ];
+
+  configureFlags = [
+    "--enable-curses"
+    "--enable-termcap"
+    "--enable-termidx"
+    "--enable-getpwnam"
+    "--enable-largefile"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A portable fork of Joe's editor";
+    longDescription = ''
+      This is the portable version of JOE's Own Editor, which is currently
+      developed at sourceforge, licenced under the GNU General Public License,
+      Version 1, using autoconf/automake. This version has been enhanced by
+      several functions intended for programmers or other professional users,
+      and has a lot of bugs fixed. It is based upon an older version of joe
+      because these behave better overall.
+    '';
+    homepage = "http://www.mirbsd.org/jupp.htm";
+    license = licenses.gpl1;
+    maintainers = with maintainers; [ AndersonTorres ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/jupyter/default.nix b/nixpkgs/pkgs/applications/editors/jupyter/default.nix
new file mode 100644
index 000000000000..2bca120c1deb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/jupyter/default.nix
@@ -0,0 +1,18 @@
+# Jupyter notebook with the given kernel definitions
+
+{ python3
+, jupyter-kernel
+, definitions ? jupyter-kernel.default
+}:
+
+let
+
+  jupyterPath = (jupyter-kernel.create { inherit definitions; });
+
+in
+
+with python3.pkgs; toPythonModule (
+  notebook.overridePythonAttrs(oldAttrs: {
+    makeWrapperArgs = ["--set JUPYTER_PATH ${jupyterPath}"];
+  })
+)
diff --git a/nixpkgs/pkgs/applications/editors/jupyter/kernel.nix b/nixpkgs/pkgs/applications/editors/jupyter/kernel.nix
new file mode 100644
index 000000000000..fba884f5a2fd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/jupyter/kernel.nix
@@ -0,0 +1,74 @@
+{ lib, stdenv, python3}:
+
+let
+
+  default = {
+    python3 = let
+      env = (python3.withPackages (ps: with ps; [ ipykernel ]));
+    in {
+      displayName = "Python 3";
+      argv = [
+        env.interpreter
+        "-m"
+        "ipykernel_launcher"
+        "-f"
+        "{connection_file}"
+      ];
+      language = "python";
+      logo32 = "${env.sitePackages}/ipykernel/resources/logo-32x32.png";
+      logo64 = "${env.sitePackages}/ipykernel/resources/logo-64x64.png";
+    };
+  };
+
+in
+{
+  inherit default;
+
+  # Definitions is an attribute set.
+
+  create = { definitions ?  default }: with lib; stdenv.mkDerivation {
+
+    name = "jupyter-kernels";
+
+    src = "/dev/null";
+
+    unpackCmd = "mkdir jupyter_kernels";
+
+    installPhase =  ''
+      mkdir kernels
+
+      ${concatStringsSep "\n" (mapAttrsToList (kernelName: unfilteredKernel:
+        let
+          allowedKernelKeys = ["argv" "displayName" "language" "interruptMode" "env" "metadata" "logo32" "logo64"];
+          kernel = filterAttrs (n: v: (any (x: x == n) allowedKernelKeys)) unfilteredKernel;
+          config = builtins.toJSON (
+            kernel
+            // {display_name = if (kernel.displayName != "") then kernel.displayName else kernelName;}
+            // (optionalAttrs (kernel ? interruptMode) { interrupt_mode = kernel.interruptMode; })
+          );
+          logo32 =
+            if (kernel.logo32 != null)
+            then "ln -s ${kernel.logo32} 'kernels/${kernelName}/logo-32x32.png';"
+            else "";
+          logo64 =
+            if (kernel.logo64 != null)
+            then "ln -s ${kernel.logo64} 'kernels/${kernelName}/logo-64x64.png';"
+            else "";
+        in ''
+          mkdir 'kernels/${kernelName}';
+          echo '${config}' > 'kernels/${kernelName}/kernel.json';
+          ${logo32}
+          ${logo64}
+        '') definitions)}
+
+      mkdir $out
+      cp -r kernels $out
+    '';
+
+    meta = {
+      description = "Wrapper to create jupyter notebook kernel definitions";
+      homepage = "https://jupyter.org/";
+      maintainers = with maintainers; [ aborsu ];
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/kakoune/default.nix b/nixpkgs/pkgs/applications/editors/kakoune/default.nix
new file mode 100644
index 000000000000..6a468bd67eb5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/kakoune/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub, ncurses, asciidoc, docbook_xsl, libxslt, pkgconfig }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "kakoune-unwrapped";
+  version = "2020.01.16";
+  src = fetchFromGitHub {
+    repo = "kakoune";
+    owner = "mawww";
+    rev = "v${version}";
+    sha256 = "16v6z1nzj54j19fraxhb18jdby4zfs1br91gxpg9s2s4nsk0km0b";
+  };
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ ncurses asciidoc docbook_xsl libxslt ];
+  makeFlags = [ "debug=no" ];
+
+  postPatch = ''
+    export PREFIX=$out
+    cd src
+    sed -ie 's#--no-xmllint#--no-xmllint --xsltproc-opts="--nonet"#g' Makefile
+  '';
+
+  preConfigure = ''
+    export version="v${version}"
+  '';
+
+  doInstallCheckPhase = true;
+  installCheckPhase = ''
+    $out/bin/kak -ui json -E "kill 0"
+  '';
+
+  meta = {
+    homepage = "http://kakoune.org/";
+    description = "A vim inspired text editor";
+    license = licenses.publicDomain;
+    maintainers = with maintainers; [ vrthra ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/kakoune/plugins/default.nix b/nixpkgs/pkgs/applications/editors/kakoune/plugins/default.nix
new file mode 100644
index 000000000000..4e92887bccb3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/kakoune/plugins/default.nix
@@ -0,0 +1,13 @@
+{ pkgs, parinfer-rust }:
+
+{
+  inherit parinfer-rust;
+
+  kak-ansi = pkgs.callPackage ./kak-ansi.nix { };
+  kak-auto-pairs = pkgs.callPackage ./kak-auto-pairs.nix { };
+  kak-buffers = pkgs.callPackage ./kak-buffers.nix { };
+  kak-fzf = pkgs.callPackage ./kak-fzf.nix { };
+  kak-plumb = pkgs.callPackage ./kak-plumb.nix { };
+  kak-powerline = pkgs.callPackage ./kak-powerline.nix { };
+  kak-vertical-selection = pkgs.callPackage ./kak-vertical-selection.nix { };
+}
diff --git a/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-ansi.nix b/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-ansi.nix
new file mode 100644
index 000000000000..408cba45fbe6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-ansi.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  name = "kak-ansi";
+  version = "0.2.1";
+
+  src = fetchFromGitHub {
+    owner = "eraserhd";
+    repo = "kak-ansi";
+    rev = "v${version}";
+    sha256 = "0ddjih8hfyf6s4g7y46p1355kklaw1ydzzh61141i0r45wyb2d0d";
+  };
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/kak/autoload/plugins/
+    cp kak-ansi-filter $out/bin/
+    # Hard-code path of filter and don't try to build when Kakoune boots
+    sed '
+      /^declare-option.* ansi_filter /i\
+declare-option -hidden str ansi_filter %{'"$out"'/bin/kak-ansi-filter}
+      /^declare-option.* ansi_filter /,/^}/d
+    ' rc/ansi.kak >$out/share/kak/autoload/plugins/ansi.kak
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Kakoune support for rendering ANSI code";
+    homepage = "https://github.com/eraserhd/kak-ansi";
+    license = licenses.unlicense;
+    maintainers = with maintainers; [ eraserhd ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-auto-pairs.nix b/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-auto-pairs.nix
new file mode 100644
index 000000000000..512f1f09207b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-auto-pairs.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub }:
+stdenv.mkDerivation {
+  name = "kak-auto-pairs";
+  version = "2019-07-27";
+  src = fetchFromGitHub {
+    owner = "alexherbo2";
+    repo = "auto-pairs.kak";
+    rev = "886449b1a04d43e5deb2f0ef4b1aead6084c7a5f";
+    sha256 = "0knfhdvslzw1f1r1k16733yhkczrg3yijjz6n2qwira84iv3239j";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/kak/autoload/plugins
+    cp -r rc $out/share/kak/autoload/plugins/auto-pairs
+  '';
+
+  meta = with stdenv.lib;
+  { description = "Kakoune extension to enable automatic closing of pairs";
+    homepage = "https://github.com/alexherbo2/auto-pairs.kak";
+    license = licenses.unlicense;
+    maintainers = with maintainers; [ nrdxp ];
+    platform = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-buffers.nix b/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-buffers.nix
new file mode 100644
index 000000000000..eaf20aeadf8e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-buffers.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub }:
+stdenv.mkDerivation {
+  name = "kak-buffers";
+  version = "2019-04-03";
+  src = fetchFromGitHub {
+    owner = "Delapouite";
+    repo = "kakoune-buffers";
+    rev = "3b35b23ac2be661a37c085d34dd04d066450f757";
+    sha256 = "0f3g0v1sjinii3ig9753jjj35v2km4h9bcfw9xgzwz8b10d75bax";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/kak/autoload/plugins
+    cp -r buffers.kak $out/share/kak/autoload/plugins
+  '';
+
+  meta = with stdenv.lib;
+  { description = "Ease navigation between opened buffers in Kakoune";
+    homepage = "https://github.com/Delapouite/kakoune-buffers";
+    license = licenses.mit;
+    maintainers = with maintainers; [ nrdxp ];
+    platform = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-fzf.nix b/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-fzf.nix
new file mode 100644
index 000000000000..dd0faf63453b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-fzf.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, fzf }:
+
+assert stdenv.lib.asserts.assertOneOf "fzf" fzf.pname [ "fzf" "skim" ];
+
+stdenv.mkDerivation {
+  name = "kak-fzf";
+  version = "2019-07-16";
+  src = fetchFromGitHub {
+    owner = "andreyorst";
+    repo = "fzf.kak";
+    rev = "ede90d3e02bceb714f997adfcbab8260b42e0a19";
+    sha256 = "18w90j3fpk2ddn68497s33n66aap8phw5636y1r7pqsa641zdxcv";
+  };
+
+  configurePhase = ''
+    if [[ -x "${fzf}/bin/fzf" ]]; then
+      fzfImpl='${fzf}/bin/fzf'
+    else
+      fzfImpl='${fzf}/bin/sk'
+    fi
+
+    substituteInPlace rc/fzf.kak \
+      --replace \'fzf\' \'"$fzfImpl"\'
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/kak/autoload/plugins
+    cp -r rc $out/share/kak/autoload/plugins/fzf
+  '';
+
+  meta = with stdenv.lib;
+  { description = "Kakoune plugin that brings integration with fzf";
+    homepage = "https://github.com/andreyorst/fzf.kak";
+    license = licenses.mit;
+    maintainers = with maintainers; [ nrdxp ];
+    platform = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-plumb.nix b/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-plumb.nix
new file mode 100644
index 000000000000..7abef9305310
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-plumb.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, kakoune-unwrapped, plan9port, ... }:
+
+stdenv.mkDerivation rec {
+  pname = "kak-plumb";
+  version = "0.1.1";
+
+  src = fetchFromGitHub {
+    owner = "eraserhd";
+    repo = "kak-plumb";
+    rev = "v${version}";
+    sha256 = "1rz6pr786slnf1a78m3sj09axr4d2lb5rg7sfa4mfg1zcjh06ps6";
+  };
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/kak/autoload/plugins/
+    substitute rc/plumb.kak $out/share/kak/autoload/plugins/plumb.kak \
+      --replace '9 plumb' '${plan9port}/bin/9 plumb'
+    substitute edit-client $out/bin/edit-client \
+      --replace '9 9p' '${plan9port}/bin/9 9p' \
+      --replace 'kak -p' '${kakoune-unwrapped}/bin/kak -p'
+    chmod +x $out/bin/edit-client
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Kakoune integration with the Plan 9 plumber";
+    homepage = "https://github.com/eraserhd/kak-plumb";
+    license = licenses.unlicense;
+    maintainers = with maintainers; [ eraserhd ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-powerline.nix b/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-powerline.nix
new file mode 100644
index 000000000000..d328e47f7e1b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-powerline.nix
@@ -0,0 +1,29 @@
+{ stdenv, git, fetchFromGitHub }:
+stdenv.mkDerivation {
+  name = "kak-powerline";
+  version = "2019-07-23";
+  src = fetchFromGitHub {
+    owner = "andreyorst";
+    repo = "powerline.kak";
+    rev = "82b01eb6c97c7380b7da253db1fd484a5de13ea4";
+    sha256 = "1480wp2jc7c84z1wqmpf09lzny6kbnbhiiym2ffaddxrd4ns9i6z";
+  };
+
+  configurePhase = ''
+    substituteInPlace rc/modules/git.kak \
+      --replace \'git\' \'${git}/bin/git\'
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/kak/autoload/plugins
+    cp -r rc $out/share/kak/autoload/plugins/powerline
+  '';
+
+  meta = with stdenv.lib;
+  { description = "Kakoune modeline, but with passion";
+    homepage = "https://github.com/andreyorst/powerline.kak";
+    license = licenses.mit;
+    maintainers = with maintainers; [ nrdxp ];
+    platform = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-vertical-selection.nix b/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-vertical-selection.nix
new file mode 100644
index 000000000000..7658ba0f7ada
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/kakoune/plugins/kak-vertical-selection.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub }:
+stdenv.mkDerivation {
+  name = "kak-vertical-selection";
+  version = "2019-04-11";
+  src = fetchFromGitHub {
+    owner = "occivink";
+    repo = "kakoune-vertical-selection";
+    rev = "c420f8b867ce47375fac303886e31623669a42b7";
+    sha256 = "13jdyd2j45wvgqvxdzw9zww14ly93bqjb6700zzxj7mkbiff6wsb";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/kak/autoload/plugins
+    cp -r vertical-selection.kak $out/share/kak/autoload/plugins
+  '';
+
+  meta = with stdenv.lib;
+  { description = "Select up and down lines that match the same pattern in Kakoune";
+    homepage = "https://github.com/occivink/kakoune-vertical-selection";
+    license = licenses.unlicense;
+    maintainers = with maintainers; [ nrdxp ];
+    platform = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/kakoune/wrapper.nix b/nixpkgs/pkgs/applications/editors/kakoune/wrapper.nix
new file mode 100644
index 000000000000..b4cc823880e7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/kakoune/wrapper.nix
@@ -0,0 +1,44 @@
+{ stdenv, bash }:
+with stdenv.lib;
+
+kakoune:
+
+let
+  getPlugins = { plugins ? [] }: plugins;
+
+  wrapper = { configure ? {} }:
+  stdenv.mkDerivation rec {
+    pname = "kakoune";
+    version = getVersion kakoune;
+
+    src = ./.;
+    buildCommand = ''
+      mkdir -p $out/share/kak
+      for plugin in ${strings.escapeShellArgs (getPlugins configure)}; do
+        if [[ -d $plugin/share/kak/autoload ]]; then
+          find "$plugin/share/kak/autoload" -type f -name '*.kak'| while read rcfile; do
+            printf 'source "%s"\n' "$rcfile"
+          done
+        fi
+      done >>$out/share/kak/plugins.kak
+
+      mkdir -p $out/bin
+      substitute ${src}/wrapper.sh $out/bin/kak \
+        --subst-var-by bash "${bash}" \
+        --subst-var-by kakoune "${kakoune}" \
+        --subst-var-by out "$out"
+      chmod +x $out/bin/kak
+    '';
+
+    preferLocalBuild = true;
+    buildInputs = [ bash kakoune ];
+    passthru = { unwrapped = kakoune; };
+
+    meta = kakoune.meta // {
+      # prefer wrapper over the package
+      priority = (kakoune.meta.priority or 0) - 1;
+      hydraPlatforms = [];
+    };
+  };
+in
+  makeOverridable wrapper
diff --git a/nixpkgs/pkgs/applications/editors/kakoune/wrapper.sh b/nixpkgs/pkgs/applications/editors/kakoune/wrapper.sh
new file mode 100644
index 000000000000..48a971a10c6e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/kakoune/wrapper.sh
@@ -0,0 +1,30 @@
+#!@bash@/bin/bash
+
+# We use the -E option to load plugins.  This only makes sense when we are
+# starting a new session, so we detect that.  Also, Kakoune can only handle
+# one -E option, so we prepend loading plugins to an existing one.
+args=( "$@" )
+loadPlugins=true
+EValueOffset=-1
+pluginScript='@out@/share/kak/plugins.kak'
+
+for (( i = 0; i < ${#args[@]}; i++ )); do
+    case "${args[i]}" in
+        -n|-c|-l|-p|-clear|-version) loadPlugins=false;;
+        -E)                          EValueOffset=$(( i + 1 ));;
+        --)                          break;;
+    esac
+    case "${args[i]}" in
+        -E|-c|-e|-s|-p|-f|-i|-ui|-debug) i=$(( i + 1 ));;
+    esac
+done
+
+if [[ $loadPlugins = true ]]; then
+    if (( EValueOffset >= 0 )); then
+        args[EValueOffset]="source '$pluginScript'"$'\n'"${args[EValueOffset]}"
+    else
+        args=( "-E" "source '$pluginScript'" "${args[@]}" )
+    fi
+fi
+
+exec @kakoune@/bin/kak "${args[@]}"
diff --git a/nixpkgs/pkgs/applications/editors/kdevelop5/kdev-php.nix b/nixpkgs/pkgs/applications/editors/kdevelop5/kdev-php.nix
new file mode 100644
index 000000000000..4bd6e34b4fcb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/kdevelop5/kdev-php.nix
@@ -0,0 +1,22 @@
+{ stdenv, lib, fetchurl, cmake, extra-cmake-modules, threadweaver, ktexteditor, kdevelop-unwrapped, kdevelop-pg-qt }:
+
+stdenv.mkDerivation rec {
+  pname = "kdev-php";
+  version = "5.5.1";
+
+  src = fetchurl {
+    url = "https://github.com/KDE/${pname}/archive/v${version}.tar.gz";
+    sha256 = "1z3mmlg5srzff0y1pjd4wfdf9k4rzk7gfdvbvzizkiy395qw1phv";
+  };
+
+  nativeBuildInputs = [ cmake extra-cmake-modules ];
+  buildInputs = [ kdevelop-pg-qt threadweaver ktexteditor kdevelop-unwrapped ];
+
+  meta = with lib; {
+    maintainers = [ maintainers.aanderse ];
+    platforms = platforms.linux;
+    description = "PHP support for KDevelop";
+    homepage = "https://www.kdevelop.org";
+    license = [ licenses.gpl2 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/kdevelop5/kdev-python.nix b/nixpkgs/pkgs/applications/editors/kdevelop5/kdev-python.nix
new file mode 100644
index 000000000000..9fb251d52957
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/kdevelop5/kdev-python.nix
@@ -0,0 +1,26 @@
+{ stdenv, lib, fetchurl, cmake, extra-cmake-modules, threadweaver, ktexteditor, kdevelop-unwrapped, python }:
+
+stdenv.mkDerivation rec {
+  pname = "kdev-python";
+  version = "5.5.2";
+
+  src = fetchurl {
+    url = "https://github.com/KDE/${pname}/archive/v${version}.tar.gz";
+    sha256 = "1qxvsz19iv5fr0nvz75b13knmsbkhkgvlvrhip8y4j66ypscs652";
+  };
+
+  cmakeFlags = [
+    "-DPYTHON_EXECUTABLE=${python}/bin/python"
+  ];
+
+  nativeBuildInputs = [ cmake extra-cmake-modules ];
+  buildInputs = [ threadweaver ktexteditor kdevelop-unwrapped ];
+
+  meta = with lib; {
+    maintainers = [ maintainers.aanderse ];
+    platforms = platforms.linux;
+    description = "Python support for KDevelop";
+    homepage = "https://www.kdevelop.org";
+    license = [ licenses.gpl2 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/kdevelop5/kdevelop-pg-qt.nix b/nixpkgs/pkgs/applications/editors/kdevelop5/kdevelop-pg-qt.nix
new file mode 100644
index 000000000000..ad83bd43af2f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/kdevelop5/kdevelop-pg-qt.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, cmake, pkgconfig, extra-cmake-modules, qtbase }:
+
+let
+  pname = "kdevelop-pg-qt";
+  version = "2.2.1";
+
+in
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  
+  src = fetchurl {
+    url = "mirror://kde/stable/${pname}/${version}/src/${name}.tar.xz";
+    sha256 = "0ay6m6j6zgrbcm48f14bass83bk4w5qnx76xihc05p69i9w32ff1";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig extra-cmake-modules ];
+  
+  buildInputs = [ qtbase ];
+
+  meta = with stdenv.lib; {
+    maintainers = [ maintainers.ambrop72 ];
+    platforms = platforms.linux;
+    description = "Parser-generator from KDevplatform";
+    longDescription = ''
+      KDevelop-PG-Qt is the parser-generator from KDevplatform.
+      It is used for some KDevelop-languagesupport-plugins (Ruby, PHP, CSS...).
+    '';
+    homepage = "https://www.kdevelop.org";
+    license = with stdenv.lib.licenses; [ lgpl2Plus ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/kdevelop5/kdevelop.nix b/nixpkgs/pkgs/applications/editors/kdevelop5/kdevelop.nix
new file mode 100644
index 000000000000..e07e7300048a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/kdevelop5/kdevelop.nix
@@ -0,0 +1,73 @@
+
+{ mkDerivation, lib, fetchurl, cmake, gettext, pkgconfig, extra-cmake-modules
+, qtquickcontrols, qtwebkit, qttools, kde-cli-tools, qtbase
+, kconfig, kdeclarative, kdoctools, kiconthemes, ki18n, kitemmodels, kitemviews
+, kjobwidgets, kcmutils, kio, knewstuff, knotifyconfig, kparts, ktexteditor
+, threadweaver, kxmlgui, kwindowsystem, grantlee, kcrash, karchive, kguiaddons
+, plasma-framework, krunner, kdevelop-pg-qt, shared-mime-info, libkomparediff2
+, libksysguard, konsole, llvmPackages, makeWrapper, kpurpose, boost
+}:
+
+mkDerivation rec {
+  pname = "kdevelop";
+  version = "5.5.2";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/${pname}/${version}/src/${pname}-${version}.tar.xz";
+    sha256 = "1nkl3z1n1l7ly2zvmbx2sdhx5q72wcvpwhzsz3qgw1474qd9i3i2";
+  };
+
+  nativeBuildInputs = [
+    cmake gettext pkgconfig extra-cmake-modules makeWrapper
+  ];
+
+  buildInputs = [
+    kdevelop-pg-qt
+    llvmPackages.llvm llvmPackages.clang-unwrapped
+  ];
+
+  propagatedBuildInputs = [
+    qtquickcontrols qtwebkit boost libkomparediff2
+    kconfig kdeclarative kdoctools kiconthemes ki18n kitemmodels kitemviews
+    kjobwidgets kcmutils kio knewstuff knotifyconfig kparts ktexteditor
+    threadweaver kxmlgui kwindowsystem grantlee plasma-framework krunner
+    shared-mime-info libksysguard konsole kcrash karchive kguiaddons kpurpose
+  ];
+
+  # https://cgit.kde.org/kdevelop.git/commit/?id=716372ae2e8dff9c51e94d33443536786e4bd85b
+  # required as nixos seems to be unable to find CLANG_BUILTIN_DIR
+  cmakeFlags = [
+    "-DCLANG_BUILTIN_DIR=${llvmPackages.clang-unwrapped}/lib/clang/${lib.getVersion llvmPackages.clang}/include"
+  ];
+
+  dontWrapQtApps = true;
+
+  postInstall = ''
+    # The kdevelop! script (shell environment) needs qdbus and kioclient5 in PATH.
+    wrapProgram "$out/bin/kdevelop!" \
+      --prefix PATH ":" "${lib.makeBinPath [ qttools kde-cli-tools ]}"
+
+    wrapQtApp "$out/bin/kdevelop"
+
+    # Fix the (now wrapped) kdevelop! to find things in right places:
+    # - Fixup the one use where KDEV_BASEDIR is assumed to contain kdevelop.
+    kdev_fixup_sed+=";s|\\\$KDEV_BASEDIR/kdevelop|$out/bin/kdevelop|"
+    sed -E -i "$kdev_fixup_sed" "$out/bin/.kdevelop!-wrapped"
+  '';
+
+  meta = with lib; {
+    maintainers = [ maintainers.ambrop72 ];
+    platforms = platforms.linux;
+    description = "KDE official IDE";
+    longDescription =
+      ''
+        A free, opensource IDE (Integrated Development Environment)
+        for MS Windows, Mac OsX, Linux, Solaris and FreeBSD. It is a
+        feature-full, plugin extendable IDE for C/C++ and other
+        programing languages. It is based on KDevPlatform, KDE and Qt
+        libraries and is under development since 1998.
+      '';
+    homepage = "https://www.kdevelop.org";
+    license = with licenses; [ gpl2Plus lgpl2Plus ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/kdevelop5/wrapper.nix b/nixpkgs/pkgs/applications/editors/kdevelop5/wrapper.nix
new file mode 100644
index 000000000000..86d3de9eb39a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/kdevelop5/wrapper.nix
@@ -0,0 +1,7 @@
+{ symlinkJoin, kdevelop-unwrapped, plugins ? null }:
+
+symlinkJoin {
+  name = "kdevelop-with-plugins";
+
+  paths = [ kdevelop-unwrapped ] ++ (if plugins != null then plugins else []);
+}
diff --git a/nixpkgs/pkgs/applications/editors/kile/default.nix b/nixpkgs/pkgs/applications/editors/kile/default.nix
new file mode 100644
index 000000000000..f928dbb6ad13
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/kile/default.nix
@@ -0,0 +1,61 @@
+{ mkDerivation
+, lib
+, fetchurl
+, extra-cmake-modules
+, kdoctools
+, wrapGAppsHook
+, qtscript
+, kconfig
+, kcrash
+, kdbusaddons
+, kdelibs4support
+, kguiaddons
+, kiconthemes
+, kinit
+, khtml
+, konsole
+, kparts
+, ktexteditor
+, kwindowsystem
+, okular
+, poppler
+}:
+
+mkDerivation rec {
+  name = "kile-2.9.92";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/kile/${name}.tar.bz2";
+    sha256 = "177372dc25b1d109e037a7dbfc64b5dab2efe538320c87f4a8ceada21e9097f2";
+
+  };
+
+  nativeBuildInputs = [ extra-cmake-modules wrapGAppsHook ];
+
+  propagatedBuildInputs = [
+    kconfig
+    kcrash
+    kdbusaddons
+    kdelibs4support
+    kdoctools
+    kguiaddons
+    kiconthemes
+    kinit
+    khtml
+    kparts
+    ktexteditor
+    kwindowsystem
+    okular
+    poppler
+    qtscript
+  ];
+
+  propagatedUserEnvPkgs = [ konsole ];
+
+  meta = {
+    description = "Kile is a user friendly TeX/LaTeX authoring tool for the KDE desktop environment";
+    homepage = "https://www.kde.org/applications/office/kile/";
+    maintainers = with lib.maintainers; [ fridh ];
+    license = lib.licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/kodestudio/default.nix b/nixpkgs/pkgs/applications/editors/kodestudio/default.nix
new file mode 100644
index 000000000000..71fa2bcd41b5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/kodestudio/default.nix
@@ -0,0 +1,134 @@
+{ stdenv, lib, fetchurl, makeDesktopItem, makeWrapper
+, # Patchelf dependencies:
+  alsaLib, atomEnv, boehmgc, flac, libogg, libvorbis, libXScrnSaver, libGLU, libGL
+, openssl, xorg, zlib
+}:
+
+let
+
+  version = "17.1";
+
+  sha256 = if stdenv.hostPlatform.system == "x86_64-linux"  then "1kddisnvlk48jip6k59mw3wlkrl7rkck2lxpaghn0gfx02cvms5f"
+      else if stdenv.hostPlatform.system == "i686-cygwin"   then "1izp42afrlh4yd322ax9w85ki388gnkqfqbw8dwnn4k3j7r5487z"
+      else throw "Unsupported system: ${stdenv.hostPlatform.system}";
+
+  urlBase = "https://github.com/Kode/KodeStudio/releases/download/v${version}/KodeStudio-";
+
+  urlStr = if stdenv.hostPlatform.system == "x86_64-linux"  then urlBase + "linux64.tar.gz"
+      else if stdenv.hostPlatform.system == "i686-cygwin"   then urlBase + "win32.zip"
+      else throw "Unsupported system: ${stdenv.hostPlatform.system}";
+
+in
+
+  stdenv.mkDerivation {
+    pname = "kodestudio";
+    inherit version;
+
+    src = fetchurl {
+        url = urlStr;
+        inherit sha256;
+    };
+
+    buildInputs = [ makeWrapper libXScrnSaver ];
+
+    desktopItem = makeDesktopItem {
+      name = "kodestudio";
+      exec = "kodestudio";
+      icon = "kodestudio";
+      comment = "Kode Studio is an IDE for Kha based on Visual Studio Code";
+      desktopName = "Kode Studio";
+      genericName = "Text Editor";
+      categories = "GNOME;GTK;Utility;TextEditor;Development;";
+    };
+
+    sourceRoot = ".";
+
+    installPhase = ''
+      mkdir -p $out
+      cp -r ./* $out
+    '';
+
+    postFixup = lib.optionalString (stdenv.hostPlatform.system == "i686-linux" || stdenv.hostPlatform.system == "x86_64-linux") ''
+      # Patch Binaries
+      patchelf \
+          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath "$out:${atomEnv.libPath}" \
+          $out/kodestudio
+      patchelf \
+          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath ".:${stdenv.cc.libc}/lib:${xorg.libXinerama}/lib:${xorg.libX11}/lib:${alsaLib}/lib:${libGL}/lib:${libGLU}/lib:${openssl.out}/lib" \
+          $out/resources/app/extensions/krom/Krom/linux/Krom
+      patchelf \
+          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath ".:${stdenv.cc.libc}/lib" \
+          $out/resources/app/extensions/kha/Kha/Kore/Tools/krafix/krafix-linux64
+      patchelf \
+          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath ".:${stdenv.cc.libc}/lib" \
+          $out/resources/app/extensions/kha/Kha/Kore/Tools/kraffiti/kraffiti-linux64
+      patchelf \
+          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" \
+          $out/resources/app/extensions/kha/Kha/Tools/kravur/kravur-linux64
+      patchelf \
+          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath ".:${stdenv.cc.libc}/lib:${zlib}/lib" \
+          $out/resources/app/extensions/kha/Kha/Tools/haxe/haxe-linux64
+      patchelf \
+          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath ".:${stdenv.cc.libc}/lib:${libvorbis}/lib:${libogg}/lib:${flac.out}/lib" \
+          $out/resources/app/extensions/kha/Kha/Tools/oggenc/oggenc-linux64
+
+      # Patch Shared Objects
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/libnode.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib" $out/libffmpeg.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/extensions/krom/Krom/linux/libv8_libplatform.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/extensions/krom/Krom/linux/libicuuc.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/extensions/krom/Krom/linux/libv8_libbase.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/extensions/krom/Krom/linux/libv8.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/extensions/krom/Krom/linux/libicui18n.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${boehmgc}/lib" $out/resources/app/extensions/kha/Kha/Backends/Kore/khacpp/project/libs/nekoapi/bin/RPi/libneko.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${boehmgc}/lib" $out/resources/app/extensions/kha/Kha/Backends/Kore/khacpp/project/libs/nekoapi/bin/Linux64/libneko.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${boehmgc}/lib" $out/resources/app/extensions/kha/Kha/Backends/Kore/khacpp/project/libs/nekoapi/bin/Linux/libneko.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/node_modules/pty.js/build/Release/pty.node
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/node_modules/gc-signals/build/Release/gcsignals.node
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/node_modules/gc-signals/build/Release/obj.target/gcsignals.node
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/node_modules/oniguruma/build/Release/onig_scanner.node
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/node_modules/oniguruma/build/Release/obj.target/onig_scanner.node
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib:${xorg.libX11}/lib" $out/resources/app/node_modules/native-keymap/build/Release/keymapping.node
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib:${xorg.libX11}/lib" $out/resources/app/node_modules/native-keymap/build/Release/obj.target/keymapping.node
+
+      # Rewrite VSCODE_PATH inside bin/kodestudio to $out
+      substituteInPlace $out/bin/kodestudio --replace "/usr/share/kodestudio" $out
+
+      # Patch library calls that expects nix store files to be mode 644:
+      #   A stat is made on srcFile (in the nix store), and its mode used
+      #   for destFile, but it expects the mode to be read write, whereas
+      #   all regular files in the nix store are made read only.
+      #   (33188 is 100644 octal, the required mode)
+      substituteInPlace $out/resources/app/extensions/kha/Kha/Tools/khamake/node_modules/fs-extra/lib/copy-sync/copy-file-sync.js --replace "stat.mode" "33188"
+      substituteInPlace $out/resources/app/extensions/kha/Kha/Kore/Tools/koremake/node_modules/fs-extra/lib/copy-sync/copy-file-sync.js --replace "stat.mode" "33188"
+
+      # Wrap preload libXss
+      wrapProgram $out/bin/kodestudio \
+          --prefix LD_PRELOAD : ${stdenv.lib.makeLibraryPath [ libXScrnSaver ]}/libXss.so.1
+    '';
+
+    meta = with stdenv.lib; {
+      description = ''
+        An IDE for Kha based on Visual Studio Code
+      '';
+      longDescription = ''
+        Kode Studio is an IDE for Kha based on Visual Studio Code.
+
+        Kha and Kore are multimedia frameworks for Haxe and C++ respectively
+        (with JavaScript coming soon). Using Kha or Kore you can access all
+        hardware at the lowest possible level in a completely portable way.
+      '';
+      homepage = "http://kode.tech/";
+      downloadPage = "https://github.com/Kode/KodeStudio/releases";
+      license = licenses.mit;
+      maintainers = [ maintainers.patternspandemic ];
+      platforms = [ "x86_64-linux" "i686-cygwin" ];
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/editors/leafpad/default.nix b/nixpkgs/pkgs/applications/editors/leafpad/default.nix
new file mode 100644
index 000000000000..94fa0be01737
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/leafpad/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, intltool, pkgconfig, gtk2 }:
+
+stdenv.mkDerivation rec {
+  version = "0.8.18.1";
+  pname = "leafpad";
+  src = fetchurl {
+    url = "https://download.savannah.gnu.org/releases/leafpad/${pname}-${version}.tar.gz";
+    sha256 = "0b0az2wvqgvam7w0ns1j8xp2llslm1rx6h7zcsy06a7j0yp257cm";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ intltool gtk2 ];
+
+  hardeningDisable = [ "format" ];
+
+  configureFlags = [
+    "--enable-chooser"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A notepad clone for GTK 2.0";
+    homepage = "http://tarot.freeshell.org/leafpad";
+    platforms = platforms.linux;
+    maintainers = [ maintainers.flosse ];
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/leo-editor/default.nix b/nixpkgs/pkgs/applications/editors/leo-editor/default.nix
new file mode 100644
index 000000000000..f09fd2ec2779
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/leo-editor/default.nix
@@ -0,0 +1,67 @@
+{ lib, mkDerivation, python3, fetchFromGitHub, makeWrapper, wrapQtAppsHook, makeDesktopItem }:
+
+mkDerivation rec {
+  pname = "leo-editor";
+  version = "6.2.1";
+
+  src = fetchFromGitHub {
+    owner = "leo-editor";
+    repo = "leo-editor";
+    rev = version;
+    sha256 = "1s9jvxwzsl32clp78g92nq9p2byf08libr5widl1jnkv1cpkbvh9";
+  };
+
+  dontBuild = true;
+
+  nativeBuildInputs = [ wrapQtAppsHook makeWrapper python3 ];
+  propagatedBuildInputs = with python3.pkgs; [ pyqt5 docutils ];
+
+  desktopItem = makeDesktopItem {
+    name = "leo-editor";
+    exec = "leo %U";
+    icon = "leoapp32";
+    type = "Application";
+    comment = meta.description;
+    desktopName = "Leo";
+    genericName = "Text Editor";
+    categories = lib.concatStringsSep ";" [
+      "Application" "Development" "IDE"
+    ];
+    startupNotify = "false";
+    mimeType = lib.concatStringsSep ";" [
+      "text/plain" "text/asp" "text/x-c" "text/x-script.elisp" "text/x-fortran"
+      "text/html" "application/inf" "text/x-java-source" "application/x-javascript"
+      "application/javascript" "text/ecmascript" "application/x-ksh" "text/x-script.ksh"
+      "application/x-tex" "text/x-script.rexx" "text/x-pascal" "text/x-script.perl"
+      "application/postscript" "text/x-script.scheme" "text/x-script.guile" "text/sgml"
+      "text/x-sgml" "application/x-bsh" "application/x-sh" "application/x-shar"
+      "text/x-script.sh" "application/x-tcl" "text/x-script.tcl" "application/x-texinfo"
+      "application/xml" "text/xml" "text/x-asm"
+    ];
+  };
+
+  installPhase = ''
+    mkdir -p "$out/share/icons/hicolor/32x32/apps"
+    cp leo/Icons/leoapp32.png "$out/share/icons/hicolor/32x32/apps"
+
+    mkdir -p "$out/share/applications"
+    cp $desktopItem/share/applications/* $out/share/applications
+
+    mkdir -p $out/share/leo-editor
+    mv * $out/share/leo-editor
+
+    makeWrapper ${python3.interpreter} $out/bin/leo \
+      --set PYTHONPATH "$PYTHONPATH:$out/share/leo-editor" \
+      --add-flags "-O $out/share/leo-editor/launchLeo.py"
+
+    wrapQtApp $out/bin/leo
+  '';
+
+  meta = with lib; {
+    homepage = "http://leoeditor.com";
+    description = "A powerful folding editor";
+    longDescription = "Leo is a PIM, IDE and outliner that accelerates the work flow of programmers, authors and web designers.";
+    license = licenses.mit;
+    maintainers = with maintainers; [ leonardoce ramkromberg ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/lighttable/default.nix b/nixpkgs/pkgs/applications/editors/lighttable/default.nix
new file mode 100644
index 000000000000..26c5ee421527
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/lighttable/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, fetchurl, zlib, glib, alsaLib, makeDesktopItem
+, dbus, gtk2, atk, pango, freetype, fontconfig, libgnome-keyring3, gdk-pixbuf
+, cairo, cups, expat, libgpgerror, nspr, gnome2, nss, xorg, systemd, libnotify
+}:
+
+let
+  libPath = stdenv.lib.makeLibraryPath [
+      stdenv.cc.cc zlib glib dbus gtk2 atk pango freetype libgnome-keyring3 nss
+      fontconfig gdk-pixbuf cairo cups expat libgpgerror alsaLib nspr gnome2.GConf
+      xorg.libXrender xorg.libX11 xorg.libXext xorg.libXdamage xorg.libXtst
+      xorg.libXcomposite xorg.libXi xorg.libXfixes libnotify xorg.libXrandr
+      xorg.libXcursor
+  ];
+  desktopItem = makeDesktopItem {
+    name = "LightTable";
+    exec = "light";
+    comment = "LightTable";
+    desktopName = "LightTable";
+    genericName = "the next generation code editor";
+  };
+in
+
+stdenv.mkDerivation rec {
+  pname = "lighttable";
+  version = "0.8.1";
+
+  src =
+      fetchurl {
+        name = "LightTableLinux64.tar.gz";
+        url = "https://github.com/LightTable/LightTable/releases/download/${version}/${pname}-${version}-linux.tar.gz";
+        sha256 = "06fj725xfhf3fwrf7dya7ijmxq3v76kfmd4lr2067a92zhlwr5pv";
+      };
+
+  phases = [ "installPhase" ];
+
+  installPhase = ''
+    tar xf ${src}
+    mkdir -p $out/{bin,share/LightTable}
+    mv ./${pname}-${version}-linux/* $out/share/LightTable
+
+    patchelf \
+      --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath ${libPath}:${libPath}/lib64:$out/share/LightTable \
+      $out/share/LightTable/LightTable
+
+    mv $out/share/LightTable/light $out/bin/light
+
+    ln -sf ${systemd.lib}/lib/libudev.so.1 $out/share/LightTable/libudev.so.0
+    substituteInPlace $out/bin/light \
+        --replace "/usr/lib/x86_64-linux-gnu" "${systemd.lib}/lib" \
+        --replace "/lib/x86_64-linux-gnu" "$out/share/LightTable" \
+        --replace 'HERE=`dirname $(readlink -f $0)`' "HERE=$out/share/LightTable"
+
+    mkdir -p "$out"/share/applications
+    cp "${desktopItem}/share/applications/LightTable.desktop" "$out"/share/applications/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "The next generation code editor";
+    homepage = "http://www.lighttable.com/";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.matejc ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/lite/default.nix b/nixpkgs/pkgs/applications/editors/lite/default.nix
new file mode 100644
index 000000000000..34800d7f0235
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/lite/default.nix
@@ -0,0 +1,58 @@
+{ stdenv
+, fetchFromGitHub
+, SDL2
+, lua52Packages
+, pkg-config
+, makeWrapper
+} :
+
+stdenv.mkDerivation rec {
+  pname = "lite";
+  version = "1.05";
+
+  src = fetchFromGitHub {
+    owner = "rxi";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0xh29ddl5h92n1c4nlh4kx9mchwkzn4r3l16kklix3a1jm1c878a";
+  };
+
+  nativeBuildInputs = [ makeWrapper pkg-config ];
+
+  buildInputs = [ SDL2 lua52Packages.lua ];
+
+  postPatch = ''
+    # use system Lua 5.2
+    rm -rf src/lib/lua52
+    substituteInPlace src/api/api.h \
+      --replace '"lib/lua52/lua.h"' '<lua.h>' \
+      --replace '"lib/lua52/lauxlib.h"' '<lauxlib.h>' \
+      --replace '"lib/lua52/lualib.h"' '<lualib.h>'
+  '';
+
+  buildPhase = ''
+    # extracted and adapted from build.sh
+    CC=$NIX_CC/bin/cc
+    CFLAGS="-Wall -O3 -g -std=gnu11 -Isrc -DLUA_USE_POPEN $(pkg-config --cflags lua sdl2)"
+    LDFLAGS="$(pkg-config --libs lua sdl2)"
+    for f in $(find src -name "*.c"); do
+      $CC -c $CFLAGS $f -o "''${f//\//_}.o"
+    done
+    $CC *.o $LDFLAGS -o lite
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin $out/lib/${pname}
+    cp -a lite $out/lib/${pname}
+    cp -a data $out/lib/${pname}
+    makeWrapper $out/lib/${pname}/lite $out/bin/lite
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A lightweight text editor written in Lua";
+    homepage = "https://github.com/rxi/lite";
+    license = licenses.mit;
+    maintainers = with maintainers; [ filalex77 ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/manuskript/default.nix b/nixpkgs/pkgs/applications/editors/manuskript/default.nix
new file mode 100644
index 000000000000..deeb9b36c719
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/manuskript/default.nix
@@ -0,0 +1,62 @@
+{ stdenv, zlib, fetchFromGitHub, python3Packages, wrapQtAppsHook }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "manuskript";
+  version = "0.11.0";
+
+  format = "other";
+
+  src = fetchFromGitHub {
+    repo = pname;
+    owner = "olivierkes";
+    rev = version;
+    sha256 = "1l6l9k6k69yv8xqpll0zv9cwdqqg4zvxy90l6sx5nv2yywh5crla";
+  };
+
+  nativeBuildInputs = [ wrapQtAppsHook ];
+
+  propagatedBuildInputs = [
+    python3Packages.pyqt5
+    python3Packages.lxml
+    zlib
+  ];
+
+  patchPhase = ''
+    substituteInPlace manuskript/ui/welcome.py \
+      --replace sample-projects $out/share/${pname}/sample-projects
+   '';
+
+  buildPhase = '''';
+
+  installPhase = ''
+    mkdir -p $out/share/${pname}
+    cp -av  bin/ i18n/ libs/ manuskript/ resources/ icons/ $out
+    cp -r sample-projects/ $out/share/${pname}
+  '';
+
+  postFixup = ''
+    wrapQtApp $out/bin/manuskript
+  '';
+
+  doCheck = false;
+
+  meta = {
+    description = "A open-source tool for writers";
+    homepage = "http://www.theologeek.ch/manuskript";
+    longDescription = ''
+    Manuskript is a tool for those writer who like to organize and
+    plan everything before writing.  The snowflake method can help you
+    grow your idea into a book, by leading you step by step and asking
+    you questions to go deeper. While writing, keep track of notes
+    about every characters, plot, event, place in your story.
+
+    Develop complex characters and keep track of all useful infos.
+    Create intricate plots, linked to your characters, and use them to
+    outline your story. Organize your ideas about the world your
+    characters live in.
+    '';
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.steveej ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/mg/default.nix b/nixpkgs/pkgs/applications/editors/mg/default.nix
new file mode 100644
index 000000000000..ef6943001b9c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/mg/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, pkgconfig, ncurses, buildPackages }:
+
+stdenv.mkDerivation rec {
+  pname = "mg";
+  version = "6.7";
+
+  src = fetchFromGitHub {
+    owner = "ibara";
+    repo = "mg";
+    rev = "mg-6.7";
+    sha256 = "15adwibq6xrfxbrxzk765g9250iyfn4wbcxd7kcsabiwn6apm0ai";
+  };
+
+  enableParallelBuilding = true;
+
+  makeFlags = [ "PKG_CONFIG=${buildPackages.pkgconfig}/bin/${buildPackages.pkgconfig.targetPrefix}pkg-config" ];
+
+  installPhase = ''
+    install -m 555 -Dt $out/bin mg
+    install -m 444 -Dt $out/share/man/man1 mg.1
+  '';
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ ncurses ];
+
+  meta = with stdenv.lib; {
+    description = "Micro GNU/emacs, a portable version of the mg maintained by the OpenBSD team";
+    homepage = "https://man.openbsd.org/OpenBSD-current/man1/mg.1";
+    license = licenses.publicDomain;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/micro/default.nix b/nixpkgs/pkgs/applications/editors/micro/default.nix
new file mode 100644
index 000000000000..6a1ee5d196ee
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/micro/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage  rec {
+  pname = "micro";
+  version = "2.0.3";
+
+  goPackagePath = "github.com/zyedidia/micro";
+
+  src = fetchFromGitHub {
+    owner = "zyedidia";
+    repo = "micro";
+    rev = "v${version}";
+    sha256 = "017m9kb3gfrgzd06f1nma1i3m5rb0hzpgdikb86lsyv8ik18y12z";
+    fetchSubmodules = true;
+  };
+
+  subPackages = [ "cmd/micro" ];
+
+  buildFlagsArray = [ "-ldflags=" "-X ${goPackagePath}/internal/util.Version=${version}" ];
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    homepage = "https://micro-editor.github.io";
+    description = "Modern and intuitive terminal-based text editor";
+    license = licenses.mit;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/editors/micro/deps.nix b/nixpkgs/pkgs/applications/editors/micro/deps.nix
new file mode 100644
index 000000000000..e8ed69a9088b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/micro/deps.nix
@@ -0,0 +1,336 @@
+# file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix)
+[
+  {
+    goPackagePath = "github.com/blang/semver";
+    fetch = {
+      type = "git";
+      url = "https://github.com/blang/semver";
+      rev = "v3.5.1";
+      sha256 = "13ws259bwcibkclbr82ilhk6zadm63kxklxhk12wayklj8ghhsmy";
+    };
+  }
+  {
+    goPackagePath = "github.com/chzyer/logex";
+    fetch = {
+      type = "git";
+      url = "https://github.com/chzyer/logex";
+      rev = "v1.1.10";
+      sha256 = "08pbjj3wx9acavlwyr055isa8a5hnmllgdv5k6ra60l5y1brmlq4";
+    };
+  }
+  {
+    goPackagePath = "github.com/chzyer/readline";
+    fetch = {
+      type = "git";
+      url = "https://github.com/chzyer/readline";
+      rev = "2972be24d48e";
+      sha256 = "104q8dazj8yf6b089jjr82fy9h1g80zyyzvp3g8b44a7d8ngjj6r";
+    };
+  }
+  {
+    goPackagePath = "github.com/chzyer/test";
+    fetch = {
+      type = "git";
+      url = "https://github.com/chzyer/test";
+      rev = "a1ea475d72b1";
+      sha256 = "0rns2aqk22i9xsgyap0pq8wi4cfaxsri4d9q6xxhhyma8jjsnj2k";
+    };
+  }
+  {
+    goPackagePath = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev = "v1.1.1";
+      sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y";
+    };
+  }
+  {
+    goPackagePath = "github.com/dustin/go-humanize";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dustin/go-humanize";
+      rev = "v1.0.0";
+      sha256 = "1kqf1kavdyvjk7f8kx62pnm7fbypn9z1vbf8v2qdh3y7z7a0cbl3";
+    };
+  }
+  {
+    goPackagePath = "github.com/gdamore/encoding";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gdamore/encoding";
+      rev = "v1.0.0";
+      sha256 = "1vmm5zll92i2fm4ajqx0gyx0p9j36496x5nabi3y0x7h0inv0pk9";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-errors/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-errors/errors";
+      rev = "v1.0.1";
+      sha256 = "0rznpknk19rxkr7li6dqs52c26pjazp69lh493l4ny4sxn5922lp";
+    };
+  }
+  {
+    goPackagePath = "github.com/kballard/go-shellquote";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kballard/go-shellquote";
+      rev = "95032a82bc51";
+      sha256 = "1rspvmnsikdq95jmx3dykxd4k1rmgl98ryjrysvl0cf18hl1vq80";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/pretty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/pretty";
+      rev = "v0.1.0";
+      sha256 = "18m4pwg2abd0j9cn5v3k2ksk9ig4vlwxmlw9rrglanziv9l967qp";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/pty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/pty";
+      rev = "v1.1.1";
+      sha256 = "0383f0mb9kqjvncqrfpidsf8y6ns5zlrc91c6a74xpyxjwvzl2y6";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/text";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/text";
+      rev = "v0.1.0";
+      sha256 = "1gm5bsl01apvc84bw06hasawyqm4q84vx1pm32wr9jnd7a8vjgj1";
+    };
+  }
+  {
+    goPackagePath = "github.com/lucasb-eyer/go-colorful";
+    fetch = {
+      type = "git";
+      url = "https://github.com/lucasb-eyer/go-colorful";
+      rev = "v1.0.3";
+      sha256 = "12bgz6dxbb2ki1g3x7fg9ipsjgfkd58fp7cdpv63h4kvlj2n7j69";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-isatty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-isatty";
+      rev = "v0.0.11";
+      sha256 = "0h671sv7hfprja495kavazkalkx7xzaqksjh13brcnwq67ijrali";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-runewidth";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-runewidth";
+      rev = "v0.0.7";
+      sha256 = "1snr8mk63vz2h44knq26dm81p83887v7kb09iywqmx0nqzngih66";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/go-homedir";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-homedir";
+      rev = "v1.1.0";
+      sha256 = "0ydzkipf28hwj2bfxqmwlww47khyk6d152xax4bnyh60f4lq3nx1";
+    };
+  }
+  {
+    goPackagePath = "github.com/pmezard/go-difflib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pmezard/go-difflib";
+      rev = "v1.0.0";
+      sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
+    };
+  }
+  {
+    goPackagePath = "github.com/robertkrimen/otto";
+    fetch = {
+      type = "git";
+      url = "https://github.com/robertkrimen/otto";
+      rev = "c382bd3c16ff";
+      sha256 = "043y6l647snsz71mdy84s2d3kn22aj6rbqd6c1vd8absvamqhlxa";
+    };
+  }
+  {
+    goPackagePath = "github.com/sergi/go-diff";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sergi/go-diff";
+      rev = "v1.1.0";
+      sha256 = "0ir8ali2vx0j7pipmlfd6k8c973akyy2nmbjrf008fm800zcp7z2";
+    };
+  }
+  {
+    goPackagePath = "github.com/stretchr/objx";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/objx";
+      rev = "v0.1.0";
+      sha256 = "19ynspzjdynbi85xw06mh8ad5j0qa1vryvxjgvbnyrr8rbm4vd8w";
+    };
+  }
+  {
+    goPackagePath = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev = "v1.4.0";
+      sha256 = "187i5g88sxfy4vxpm7dw1gwv29pa2qaq475lxrdh5livh69wqfjb";
+    };
+  }
+  {
+    goPackagePath = "github.com/yuin/gopher-lua";
+    fetch = {
+      type = "git";
+      url = "https://github.com/yuin/gopher-lua";
+      rev = "ab39c6098bdb";
+      sha256 = "13b0rrpv3988qw8rq6z7npajn1my059ybhafi5mxff9jw09k9sja";
+    };
+  }
+  {
+    goPackagePath = "github.com/zyedidia/clipboard";
+    fetch = {
+      type = "git";
+      url = "https://github.com/zyedidia/clipboard";
+      rev = "241f98e9b197";
+      sha256 = "1glc8w30sijpbppcvaf3503rmx5nxqkcgw87dr2pr3q3vv1bg3zi";
+    };
+  }
+  {
+    goPackagePath = "github.com/zyedidia/glob";
+    fetch = {
+      type = "git";
+      url = "https://github.com/zyedidia/glob";
+      rev = "dd4023a66dc3";
+      sha256 = "1vqw4xbqq6j8p5m7mwxvb448w69vjvgzx0ndsfzdh2cxfirwp3y7";
+    };
+  }
+  {
+    goPackagePath = "github.com/zyedidia/highlight";
+    fetch = {
+      type = "git";
+      url = "https://github.com/zyedidia/highlight";
+      rev = "201131ce5cf5";
+      sha256 = "0blaynf32swmqddx2hcrifrfssj9c04kwnbdy42h3kzxihrwz4ps";
+    };
+  }
+  {
+    goPackagePath = "github.com/zyedidia/json5";
+    fetch = {
+      type = "git";
+      url = "https://github.com/zyedidia/json5";
+      rev = "2da050b1a98d";
+      sha256 = "1sgydazf3npr788b4w17ydmlh3fd1zmpriv9b69967ww90ckh2kz";
+    };
+  }
+  {
+    goPackagePath = "github.com/zyedidia/poller";
+    fetch = {
+      type = "git";
+      url = "https://github.com/zyedidia/poller";
+      rev = "v1.0.1";
+      sha256 = "10cjrqfk1j0l55bdbpm7kv4mqc665pngc8avai0p9chq03y2654g";
+    };
+  }
+  {
+    goPackagePath = "github.com/zyedidia/pty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/zyedidia/pty";
+      rev = "v2.0.0";
+      sha256 = "1n946ld8y2v2wfbwsxv8rfaicxbw3w8pk11ryc8iybmw7hkmmf79";
+    };
+  }
+  {
+    goPackagePath = "github.com/zyedidia/tcell";
+    fetch = {
+      type = "git";
+      url = "https://github.com/zyedidia/tcell";
+      rev = "v1.4.4";
+      sha256 = "0d62a9csab15b64y09jcbvq71065wliw4bd5m7lfpl5k8rmrrdyi";
+    };
+  }
+  {
+    goPackagePath = "github.com/zyedidia/terminal";
+    fetch = {
+      type = "git";
+      url = "https://github.com/zyedidia/terminal";
+      rev = "533c623e2415";
+      sha256 = "16l628f3zgl5yp9z5zkfy2hyl2sckw4d6mg3iqv2jjvh4i8yhrsm";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "33540a1f6037";
+      sha256 = "0fjcv0vzvi6za0b4xmnk3932pr9f9gczzf03y0kgq3ry9rqg169y";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "v0.3.2";
+      sha256 = "0flv9idw0jm5nm8lx25xqanbkqgfiym6619w575p7nrdh0riqwqh";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "90fa682c2a6e";
+      sha256 = "03ic2xsy51jw9749wl7gszdbz99iijbd2bckgygl6cm9w5m364ak";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/check.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/check.v1";
+      rev = "41f04d3bba15";
+      sha256 = "0vfk9czmlxmp6wndq8k17rhnjxal764mxfhrccza7nwlia760pjy";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/sourcemap.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/sourcemap.v1";
+      rev = "v1.0.5";
+      sha256 = "08rf2dl13hbnm3fq2cm0nnsspy9fhf922ln23cz5463cv7h62as4";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "v2.2.7";
+      sha256 = "0k5xcwkd3wmcx54isk7ck9cwp8fapfhyqdz3f13kxp77cxqizazj";
+    };
+  }
+  {
+    goPackagePath = "layeh.com/gopher-luar";
+    fetch = {
+      type = "git";
+      url = "https://github.com/layeh/gopher-luar";
+      rev = "v1.0.7";
+      sha256 = "1rdbni3q7zajmiy62ccvbfgqjzppk5212wpwks2ba726hvyf85mj";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/editors/mindforger/build.patch b/nixpkgs/pkgs/applications/editors/mindforger/build.patch
new file mode 100644
index 000000000000..e2745cbce2d0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/mindforger/build.patch
@@ -0,0 +1,91 @@
+diff --git a/app/app.pro b/app/app.pro
+index 4d47065..a39a320 100644
+--- a/app/app.pro
++++ b/app/app.pro
+@@ -18,6 +18,8 @@
+ TARGET = mindforger
+ TEMPLATE = app
+ 
++include(../config.pri)
++
+ QT += widgets
+ 
+ mfner {
+@@ -297,7 +299,7 @@ RESOURCES += \
+ # See http://doc.qt.io/qt-5/qmake-advanced-usage.html
+ 
+ binfile.files += mindforger
+-binfile.path = /usr/bin/
++binfile.path = $$PREFIX/bin/
+ INSTALLS += binfile
+ 
+ # ########################################
+diff --git a/config.pri b/config.pri
+new file mode 100644
+index 0000000..ce05df1
+--- /dev/null
++++ b/config.pri
+@@ -0,0 +1,3 @@
++isEmpty(PREFIX) {
++ PREFIX = /usr
++}
+diff --git a/deps/discount/discount.pro b/deps/discount/discount.pro
+index a8dfe35..ec16468 100644
+--- a/deps/discount/discount.pro
++++ b/deps/discount/discount.pro
+@@ -5,6 +5,8 @@
+ # Webpage: http://www.pell.portland.or.us/~orc/Code/discount/
+ #
+ 
++include(../../config.pri)
++
+ QT       -= core gui
+ 
+ TARGET = discount
+@@ -46,7 +48,7 @@ unix:!symbian {
+     maemo5 {
+         target.path = /opt/usr/lib
+     } else {
+-        target.path = /usr/lib
++        target.path = $$PREFIX/lib
+     }
+     INSTALLS += target
+ }
+diff --git a/mindforger.pro b/mindforger.pro
+index ae627f2..0953856 100644
+--- a/mindforger.pro
++++ b/mindforger.pro
+@@ -32,6 +32,8 @@ TEMPLATE = subdirs
+ 
+ SUBDIRS = deps lib app
+ 
++include(config.pri)
++
+ # build dependencies
+ lib.depends = deps
+ app.depends = lib
+@@ -44,20 +46,20 @@ app.depends = lib
+ #IMPORTANT: binfile MUST be specified in app/app.pro (project next to/that builds binary)
+ 
+ docfiles.files += doc/*
+-docfiles.path = /usr/share/doc/mindforger/
++docfiles.path = $$PREFIX/share/doc/mindforger/
+ INSTALLS += docfiles
+ 
+ manfiles.files += man/*
+-manfiles.path = /usr/share/man/man1/
++manfiles.path = $$PREFIX/share/man/man1/
+ INSTALLS += manfiles
+ 
+ iconfiles.files += app/resources/icons/*
+-iconfiles.path = /usr/share/icons/mindforger/
++iconfiles.path = $$PREFIX/share/icons/mindforger/
+ INSTALLS += iconfiles
+ 
+ # experiment w/ file
+ shortcutfiles.files += app/resources/gnome-shell/mindforger.desktop
+-shortcutfiles.path = /usr/share/applications/
++shortcutfiles.path = $$PREFIX/share/applications/
+ INSTALLS += shortcutfiles
+ 
+ # eof
diff --git a/nixpkgs/pkgs/applications/editors/mindforger/default.nix b/nixpkgs/pkgs/applications/editors/mindforger/default.nix
new file mode 100644
index 000000000000..82aa38c14499
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/mindforger/default.nix
@@ -0,0 +1,45 @@
+{ mkDerivation, stdenv, fetchurl, qmake, qtbase, qtwebkit }:
+
+mkDerivation rec {
+  pname = "mindforger";
+  version = "1.48.2";
+
+  src = fetchurl {
+    url = "https://github.com/dvorka/mindforger/releases/download/1.48.0/mindforger_${version}.tgz";
+    sha256 = "1wlrl8hpjcpnq098l3n2d1gbhbjylaj4z366zvssqvmafr72iyw4";
+  };
+
+  nativeBuildInputs = [ qmake ] ;
+  buildInputs = [ qtbase qtwebkit ] ;
+
+  doCheck = true;
+
+  enableParallelBuilding = true ;
+
+  patches = [ ./build.patch ] ;
+
+  postPatch = ''
+    substituteInPlace deps/discount/version.c.in --subst-var-by TABSTOP 4
+    substituteInPlace app/resources/gnome-shell/mindforger.desktop --replace /usr "$out"
+  '';
+
+  preConfigure = ''
+    export AC_PATH="$PATH"
+    pushd deps/discount
+    ./configure.sh
+    popd
+  '';
+
+  qmakeFlags = [ "-r mindforger.pro" "CONFIG+=mfnoccache" ] ;
+
+  meta = with stdenv.lib; {
+    description = "Thinking Notebook & Markdown IDE";
+    longDescription = ''
+     MindForger is actually more than an editor or IDE - it's human
+     mind inspired personal knowledge management tool
+    '';
+    homepage = "https://www.mindforger.com";
+    license = licenses.gpl2Plus;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/mle/default.nix b/nixpkgs/pkgs/applications/editors/mle/default.nix
new file mode 100644
index 000000000000..692b82dc6887
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/mle/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, termbox, pcre, uthash, lua5_3 }:
+
+stdenv.mkDerivation rec {
+  pname = "mle";
+  version = "1.4.3";
+
+  src = fetchFromGitHub {
+    owner = "adsr";
+    repo = "mle";
+    rev = "v${version}";
+    sha256 = "16dbwfdd6sqqn7jfaxd5wdy8y9ghbihnz6bgn3xhqcww8rj1sia1";
+  };
+
+  # Fix location of Lua 5.3 header and library
+  postPatch = ''
+    substituteInPlace Makefile --replace "-llua5.3" "-llua";
+    substituteInPlace mle.h    --replace "<lua5.3/" "<";
+    patchShebangs tests/*
+  '';
+
+  buildInputs = [ termbox pcre uthash lua5_3 ];
+
+  doCheck = true;
+
+  installFlags = [ "prefix=${placeholder "out"}" ];
+
+  meta = with stdenv.lib; {
+    description = "Small, flexible terminal-based text editor";
+    homepage = "https://github.com/adsr/mle";
+    license = licenses.asl20;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ adsr ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/moe/default.nix b/nixpkgs/pkgs/applications/editors/moe/default.nix
new file mode 100644
index 000000000000..060abda33d0d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/moe/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl
+, lzip, ncurses
+}:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+
+  pname = "moe";
+  version = "1.10";
+
+  src = fetchurl {
+    url = "mirror://gnu/moe/${pname}-${version}.tar.lz";
+    sha256 = "0fymywdiy9xqppcmvgs7mf7d3gfrky3jp5jkxs2l3v93asml9zcc";
+  };
+
+  prePatch = ''
+    substituteInPlace window_vector.cc --replace \
+      "insert( 0U, 1," \
+      "insert( 0U, 1U,"
+  '';
+
+  nativeBuildInputs = [ lzip ];
+  buildInputs = [ ncurses ];
+
+  meta = {
+    description = "A small, 8-bit clean editor";
+    longDescription = ''
+      GNU moe is a powerful, 8-bit clean, console text editor for ISO-8859 and
+      ASCII character encodings. It has a modeless, user-friendly interface,
+      online help, multiple windows, unlimited undo/redo capability, unlimited
+      line length, unlimited buffers, global search/replace (on all buffers at
+      once), block operations, automatic indentation, word wrapping, file name
+      completion, directory browser, duplicate removal from prompt histories,
+      delimiter matching, text conversion from/to UTF-8, romanization, etc.
+    '';
+    homepage = "https://www.gnu.org/software/moe/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = platforms.unix;
+  };
+}
+# TODO: a configurable, global moerc file
diff --git a/nixpkgs/pkgs/applications/editors/monodevelop/default.nix b/nixpkgs/pkgs/applications/editors/monodevelop/default.nix
new file mode 100644
index 000000000000..3a21eec07f42
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/monodevelop/default.nix
@@ -0,0 +1,81 @@
+{ stdenv, fetchurl
+, autoconf, automake, pkgconfig, shared-mime-info, intltool
+, glib, mono, gtk-sharp-2_0, gnome2, gnome-sharp, unzip
+, dotnetPackages
+}:
+
+stdenv.mkDerivation rec {
+  version = "5.9.4.5";
+  revision = "8010a90f6e246b32364e3fb46ef2c9d1be9c9a2b";
+  pname = "monodevelop";
+
+  src = fetchurl {
+    url = "https://download.mono-project.com/sources/monodevelop/${pname}-${version}.tar.bz2";
+    sha256 = "0bim4bfv3zwijafl9g0cx3159zq43dlcv74mnyrda41j4p52w5ji";
+  };
+
+  nunit2510 = fetchurl {
+    url = "https://launchpad.net/nunitv2/2.5/2.5.10/+download/NUnit-2.5.10.11092.zip";
+    sha256 = "0k5h5bz1p2v3d0w0hpkpbpvdkcszgp8sr9ik498r1bs72w5qlwnc";
+  };
+
+  postPatch = ''
+    # From https://bugzilla.xamarin.com/show_bug.cgi?id=23696#c19
+
+    # cecil needs NUnit 2.5.10 - this is also missing from the tar
+    unzip -j ${nunit2510} -d external/cecil/Test/libs/nunit-2.5.10 NUnit-2.5.10.11092/bin/net-2.0/framework/\*
+
+    # the tar doesn't include the nuget binary, so grab it from github and copy it
+    # into the right place
+    cp -vfR "$(dirname $(pkg-config NuGet.Core --variable=Libraries))"/* external/nuget-binary/
+  '';
+
+  # Revert this commit which broke the ability to use pkg-config to locate dlls
+  patchFlags = [ "-p2" ];
+  patches = [ ./git-revert-12d610fb3f6dce121df538e36f21d8c2eeb0a6e3.patch ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    autoconf automake shared-mime-info intltool
+    mono gtk-sharp-2_0 gnome-sharp unzip
+    dotnetPackages.NUnit
+    dotnetPackages.NUnitRunners
+    dotnetPackages.Nuget
+  ];
+
+  preConfigure = "patchShebangs ./configure";
+
+  preBuild = ''
+    cat > ./buildinfo <<EOF
+    Release ID: ${version}
+    Git revision: ${revision}
+    Build date: 1970-01-01 00:00:01
+    EOF
+  '';
+
+  postInstall = ''
+    for prog in monodevelop mdtool; do
+    patch -p 0 $out/bin/$prog <<EOF
+    2a3,5
+    > export MONO_GAC_PREFIX=${gnome-sharp}:${gtk-sharp-2_0}:\$MONO_GAC_PREFIX
+    > export PATH=${mono}/bin:\$PATH
+    > export LD_LIBRARY_PATH=${stdenv.lib.makeLibraryPath [ glib gnome2.libgnomeui gnome2.gnome_vfs gnome-sharp gtk-sharp-2_0 gtk-sharp-2_0.gtk ]}:\$LD_LIBRARY_PATH
+    > 
+    EOF
+    done
+
+    # Without this, you get a missing DLL error any time you install an addin..
+    ln -sv `pkg-config nunit.core --variable=Libraries` $out/lib/monodevelop/AddIns/NUnit
+    ln -sv `pkg-config nunit.core.interfaces --variable=Libraries` $out/lib/monodevelop/AddIns/NUnit
+    ln -sv `pkg-config nunit.framework --variable=Libraries` $out/lib/monodevelop/AddIns/NUnit
+    ln -sv `pkg-config nunit.util --variable=Libraries` $out/lib/monodevelop/AddIns/NUnit
+  '';
+
+  dontStrip = true;
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ obadz ];
+    broken = true; # 2018-09-21, build has failed since 2018-03-08
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/monodevelop/git-revert-12d610fb3f6dce121df538e36f21d8c2eeb0a6e3.patch b/nixpkgs/pkgs/applications/editors/monodevelop/git-revert-12d610fb3f6dce121df538e36f21d8c2eeb0a6e3.patch
new file mode 100644
index 000000000000..969aad33ec0b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/monodevelop/git-revert-12d610fb3f6dce121df538e36f21d8c2eeb0a6e3.patch
@@ -0,0 +1,57 @@
+diff --git a/main/src/addins/AspNet/MonoDevelop.AspNet.csproj b/main/src/addins/AspNet/MonoDevelop.AspNet.csproj
+index 02d3a01..c6daaad 100644
+--- a/main/src/addins/AspNet/MonoDevelop.AspNet.csproj
++++ b/main/src/addins/AspNet/MonoDevelop.AspNet.csproj
+@@ -452,34 +452,6 @@
+     <None Include="Templates\Projects\WebApplication.xpt.xml">
+       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+     </None>
+-    <None Include="..\..\..\packages\Microsoft.AspNet.Mvc.5.2.2\lib\net45\System.Web.Mvc.dll">
+-      <Link>System.Web.Mvc.dll</Link>
+-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+-    </None>
+-    <None Include="..\..\..\packages\Microsoft.AspNet.Razor.3.2.2\lib\net45\System.Web.Razor.dll">
+-      <Link>System.Web.Razor.dll</Link>
+-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+-    </None>
+-    <None Include="..\..\..\packages\Microsoft.AspNet.WebPages.3.2.2\lib\net45\System.Web.Helpers.dll">
+-      <Link>System.Web.Helpers.dll</Link>
+-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+-    </None>
+-    <None Include="..\..\..\packages\Microsoft.AspNet.WebPages.3.2.2\lib\net45\System.Web.WebPages.Deployment.dll">
+-      <Link>System.Web.WebPages.Deployment.dll</Link>
+-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+-    </None>
+-    <None Include="..\..\..\packages\Microsoft.AspNet.WebPages.3.2.2\lib\net45\System.Web.WebPages.dll">
+-      <Link>System.Web.WebPages.dll</Link>
+-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+-    </None>
+-    <None Include="..\..\..\packages\Microsoft.AspNet.WebPages.3.2.2\lib\net45\System.Web.WebPages.Razor.dll">
+-      <Link>System.Web.WebPages.Razor.dll</Link>
+-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+-    </None>
+-    <None Include="..\..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll">
+-      <Link>Microsoft.Web.Infrastructure.dll</Link>
+-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+-    </None>
+     <None Include="packages.config" />
+   </ItemGroup>
+   <ItemGroup>
+diff --git a/main/src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml b/main/src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml
+index eab7c32..4a75311 100644
+--- a/main/src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml
++++ b/main/src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml
+@@ -1,13 +1,6 @@
+ <ExtensionModel>

+ 	

+ 	<Runtime>

+-		<Import assembly = "System.Web.Helpers.dll" />
+-		<Import assembly = "System.Web.Mvc.dll" />
+-		<Import assembly = "System.Web.Razor.dll" />
+-		<Import assembly = "System.Web.WebPages.Deployment.dll" />
+-		<Import assembly = "System.Web.WebPages.dll" />
+-		<Import assembly = "System.Web.WebPages.Razor.dll" />
+-
+ 		<Import file = "Html/Schemas/xhtml1-strict.xsd" />

+ 		<Import file = "Html/Schemas/xhtml1-transitional.xsd" />

+ 		<Import file = "Html/Schemas/xhtml1-frameset.xsd" />

diff --git a/nixpkgs/pkgs/applications/editors/music/tuxguitar/default.nix b/nixpkgs/pkgs/applications/editors/music/tuxguitar/default.nix
new file mode 100644
index 000000000000..08841eb58100
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/music/tuxguitar/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, swt, jdk, makeWrapper, alsaLib, jack2, fluidsynth, libpulseaudio }:
+
+let metadata = assert stdenv.hostPlatform.system == "i686-linux" || stdenv.hostPlatform.system == "x86_64-linux";
+  if stdenv.hostPlatform.system == "i686-linux" then
+    { arch = "x86"; sha256 = "27675c358db237df74d20e8676000c25a87b9de0bb0a6d1c325e8d6db807d296"; }
+  else
+    { arch = "x86_64"; sha256 = "298555a249adb3ad72f3aef72a124e30bfa01cd069c7b5d152a738140e7903a2"; };
+in stdenv.mkDerivation rec {
+  version = "1.5.2";
+  pname = "tuxguitar";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/tuxguitar/${pname}-${version}-linux-${metadata.arch}.tar.gz";
+    sha256 = metadata.sha256;
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -r dist lib share $out/
+    cp tuxguitar.sh $out/bin/tuxguitar
+
+    ln -s $out/dist $out/bin/dist
+    ln -s $out/lib $out/bin/lib
+    ln -s $out/share $out/bin/share
+
+    wrapProgram $out/bin/tuxguitar \
+      --set JAVA "${jdk}/bin/java" \
+      --prefix LD_LIBRARY_PATH : "$out/lib/:${stdenv.lib.makeLibraryPath [ swt alsaLib jack2 fluidsynth libpulseaudio ]}" \
+      --prefix CLASSPATH : "${swt}/jars/swt.jar:$out/lib/tuxguitar.jar:$out/lib/itext.jar"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A multitrack guitar tablature editor";
+    longDescription = ''
+      TuxGuitar is a multitrack guitar tablature editor and player written
+      in Java-SWT. It can open GuitarPro, PowerTab and TablEdit files.
+    '';
+    homepage = "http://www.tuxguitar.com.ar/";
+    license = licenses.lgpl2;
+    maintainers = [ maintainers.ardumont ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/nano/default.nix b/nixpkgs/pkgs/applications/editors/nano/default.nix
new file mode 100644
index 000000000000..e2f041d0fd56
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/nano/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchurl, fetchFromGitHub
+, ncurses
+, texinfo
+, gettext ? null
+, enableNls ? true
+, enableTiny ? false
+}:
+
+assert enableNls -> (gettext != null);
+
+with stdenv.lib;
+
+let
+  nixSyntaxHighlight = fetchFromGitHub {
+    owner = "seitz";
+    repo = "nanonix";
+    rev = "bf8d898efaa10dce3f7972ff765b58c353b4b4ab";
+    sha256 = "0773s5iz8aw9npgyasb0r2ybp6gvy2s9sq51az8w7h52bzn5blnn";
+  };
+
+in stdenv.mkDerivation rec {
+  pname = "nano";
+  version = "4.9.3";
+
+  src = fetchurl {
+    url = "mirror://gnu/nano/${pname}-${version}.tar.xz";
+    sha256 = "1d2i3wvsq5lvpxxinq51dcvd58xx7j0d0c2csz9hgvd06gq3hd3f";
+  };
+
+  nativeBuildInputs = [ texinfo ] ++ optional enableNls gettext;
+  buildInputs = [ ncurses ];
+
+  outputs = [ "out" "info" ];
+
+  configureFlags = [
+    "--sysconfdir=/etc"
+    (stdenv.lib.enableFeature enableNls "nls")
+    (stdenv.lib.enableFeature enableTiny "tiny")
+  ];
+
+  postInstall = ''
+    cp ${nixSyntaxHighlight}/nix.nanorc $out/share/nano/
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    homepage = "https://www.nano-editor.org/";
+    description = "A small, user-friendly console text editor";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [
+      joachifm
+    ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/nano/nanorc/default.nix b/nixpkgs/pkgs/applications/editors/nano/nanorc/default.nix
new file mode 100644
index 000000000000..5f3a1ac91bd6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/nano/nanorc/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation {
+  pname = "nanorc";
+  version = "2018-09-05";
+
+  src = fetchFromGitHub {
+    owner = "scopatz";
+    repo = "nanorc";
+    rev = "1e589cb729d24fba470228d429e6dde07973d597";
+    sha256 = "136yxr38lzrfv8bar0c6c56rh54q9s94zpwa19f425crh44drppl";
+  };
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/share
+
+    install *.nanorc $out/share/
+  '';
+
+  meta = {
+    description = "Improved Nano Syntax Highlighting Files";
+    homepage = "https://github.com/scopatz/nanorc";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = with stdenv.lib.maintainers; [ nequissimus ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/ne/default.nix b/nixpkgs/pkgs/applications/editors/ne/default.nix
new file mode 100644
index 000000000000..4faf1e28b1cc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/ne/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, ncurses, texinfo, texlive, perl, ghostscript }:
+
+stdenv.mkDerivation rec {
+  pname = "ne";
+  version = "3.3.0";
+
+  src = fetchFromGitHub {
+    owner = "vigna";
+    repo = pname;
+    rev = version;
+    sha256 = "01aglnsfljlvx0wvyvpjfn4y88jf450a06qnj9a8lgdqv1hdkq1a";
+  };
+
+  postPatch = ''
+    substituteInPlace makefile --replace "./version.pl" "perl version.pl"
+    substituteInPlace src/makefile --replace "-lcurses" "-lncurses"
+  '';
+
+  nativeBuildInputs = [ texlive.combined.scheme-medium texinfo perl ghostscript ];
+  buildInputs = [ ncurses ];
+
+  makeFlags = [ "PREFIX=${placeholder "out"}" ];
+
+  meta = with stdenv.lib; {
+    description = "The nice editor";
+    homepage = "http://ne.di.unimi.it/";
+    longDescription = ''
+      ne is a free (GPL'd) text editor based on the POSIX standard that runs
+      (we hope) on almost any UN*X machine.  ne is easy to use for the beginner,
+      but powerful and fully configurable for the wizard, and most sparing in its
+      resource usage.  See the manual for some highlights of ne's features.
+    '';
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/nedit/default.nix b/nixpkgs/pkgs/applications/editors/nedit/default.nix
new file mode 100644
index 000000000000..e1d1fa3070a9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/nedit/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, xlibsWrapper, motif, libXpm }:
+
+stdenv.mkDerivation rec {
+  pname = "nedit";
+  version = "5.7";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/nedit/nedit-source/${pname}-${version}-src.tar.gz";
+    sha256 = "0ym1zhjx9976rf2z5nr7dj4mjkxcicimhs686snjhdcpzxwsrndd";
+  };
+
+  hardeningDisable = [ "format" ];
+
+  nativeBuildInputs = [ xlibsWrapper ];
+  buildInputs = [ motif libXpm ];
+
+  # the linux config works fine on darwin too!
+  buildFlags = stdenv.lib.optional (stdenv.isLinux || stdenv.isDarwin) "linux";
+
+  NIX_CFLAGS_COMPILE="-DBUILD_UNTESTED_NEDIT -L${motif}/lib";
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -p source/nedit source/nc $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://sourceforge.net/projects/nedit";
+    description = "A fast, compact Motif/X11 plain text editor";
+    platforms = with platforms; linux ++ darwin;
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/neovim/default.nix b/nixpkgs/pkgs/applications/editors/neovim/default.nix
new file mode 100644
index 000000000000..0d54817c5340
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/neovim/default.nix
@@ -0,0 +1,135 @@
+{ stdenv, fetchFromGitHub, cmake, gettext, msgpack, libtermkey, libiconv
+, libuv, lua, ncurses, pkgconfig
+, unibilium, xsel, gperf
+, libvterm-neovim
+, glibcLocales ? null, procps ? null
+
+# now defaults to false because some tests can be flaky (clipboard etc)
+, doCheck ? false
+, nodejs ? null, fish ? null, python ? null
+}:
+
+with stdenv.lib;
+
+let
+  neovimLuaEnv = lua.withPackages(ps:
+    (with ps; [ lpeg luabitop mpack ]
+    ++ optionals doCheck [
+        nvim-client luv coxpcall busted luafilesystem penlight inspect
+      ]
+    ));
+
+  pyEnv = python.withPackages(ps: [ ps.pynvim ps.msgpack ]);
+in
+  stdenv.mkDerivation rec {
+    pname = "neovim-unwrapped";
+    version = "0.4.3";
+
+    src = fetchFromGitHub {
+      owner = "neovim";
+      repo = "neovim";
+      rev = "v${version}";
+      sha256 = "03p7pic7hw9yxxv7fbgls1f42apx3lik2k6mpaz1a109ngyc5kaj";
+    };
+
+    patches = [
+      # introduce a system-wide rplugin.vim in addition to the user one
+      # necessary so that nix can handle `UpdateRemotePlugins` for the plugins
+      # it installs. See https://github.com/neovim/neovim/issues/9413.
+      ./system_rplugin_manifest.patch
+    ];
+
+    dontFixCmake = true;
+    enableParallelBuilding = true;
+
+    buildInputs = [
+      gperf
+      libtermkey
+      libuv
+      libvterm-neovim
+      lua.pkgs.luv.libluv
+      msgpack
+      ncurses
+      neovimLuaEnv
+      unibilium
+    ] ++ optional stdenv.isDarwin libiconv
+      ++ optionals doCheck [ glibcLocales procps ]
+    ;
+
+    inherit doCheck;
+
+    # to be exhaustive, one could run
+    # make oldtests too
+    checkPhase = ''
+      make functionaltest
+    '';
+
+    nativeBuildInputs = [
+      cmake
+      gettext
+      pkgconfig
+    ];
+
+    # extra programs test via `make functionaltest`
+    checkInputs = [
+      fish
+      nodejs
+      pyEnv      # for src/clint.py
+    ];
+
+
+    # nvim --version output retains compilation flags and references to build tools
+    postPatch = ''
+      substituteInPlace src/nvim/version.c --replace NVIM_VERSION_CFLAGS "";
+    '';
+    # check that the above patching actually works
+    disallowedReferences = [ stdenv.cc ];
+
+    cmakeFlags = [
+      "-DGPERF_PRG=${gperf}/bin/gperf"
+      "-DLUA_PRG=${neovimLuaEnv.interpreter}"
+    ]
+    # FIXME: this is verry messy and strange.
+    ++ optional (!stdenv.isDarwin) "-DLIBLUV_LIBRARY=${lua.pkgs.luv}/lib/lua/${lua.luaversion}/luv.so"
+    ++ optional (stdenv.isDarwin) "-DLIBLUV_LIBRARY=${lua.pkgs.luv.libluv}/lib/lua/${lua.luaversion}/libluv.dylib"
+    ++ optional doCheck "-DBUSTED_PRG=${neovimLuaEnv}/bin/busted"
+    ++ optional (!lua.pkgs.isLuaJIT) "-DPREFER_LUA=ON"
+    ;
+
+    # triggers on buffer overflow bug while running tests
+    hardeningDisable = [ "fortify" ];
+
+    preConfigure = stdenv.lib.optionalString stdenv.isDarwin ''
+      substituteInPlace src/nvim/CMakeLists.txt --replace "    util" ""
+    '';
+
+    postInstall = stdenv.lib.optionalString stdenv.isLinux ''
+      sed -i -e "s|'xsel|'${xsel}/bin/xsel|g" $out/share/nvim/runtime/autoload/provider/clipboard.vim
+    '';
+
+    # export PATH=$PWD/build/bin:${PATH}
+    shellHook=''
+      export VIMRUNTIME=$PWD/runtime
+    '';
+
+    meta = {
+      description = "Vim text editor fork focused on extensibility and agility";
+      longDescription = ''
+        Neovim is a project that seeks to aggressively refactor Vim in order to:
+        - Simplify maintenance and encourage contributions
+        - Split the work between multiple developers
+        - Enable the implementation of new/modern user interfaces without any
+          modifications to the core source
+        - Improve extensibility with a new plugin architecture
+      '';
+      homepage    = "https://www.neovim.io";
+      # "Contributions committed before b17d96 by authors who did not sign the
+      # Contributor License Agreement (CLA) remain under the Vim license.
+      # Contributions committed after b17d96 are licensed under Apache 2.0 unless
+      # those contributions were copied from Vim (identified in the commit logs
+      # by the vim-patch token). See LICENSE for details."
+      license = with licenses; [ asl20 vim ];
+      maintainers = with maintainers; [ manveru rvolosatovs ma27 ];
+      platforms   = platforms.unix;
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/editors/neovim/gnvim/default.nix b/nixpkgs/pkgs/applications/editors/neovim/gnvim/default.nix
new file mode 100644
index 000000000000..3693ff322338
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/neovim/gnvim/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, rustPlatform, fetchFromGitHub, gtk, webkitgtk }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "gnvim-unwrapped";
+  version = "0.1.5";
+
+  src = fetchFromGitHub {
+    owner = "vhakulinen";
+    repo = "gnvim";
+    rev = version;
+    sha256 = "11gb59lhc1sp5dxj2fdm6072f4nxxay0war3kmchdwsk41nvxlrh";
+  };
+
+  cargoSha256 = "0ay7hx5bzchp772ywgxzia12c44kbyarrshl689cmqh59wphsrx5";
+
+  buildInputs = [ gtk webkitgtk ];
+
+  # The default build script tries to get the version through Git, so we
+  # replace it
+  prePatch = ''
+    cat << EOF > build.rs
+    use std::env;
+    use std::fs::File;
+    use std::io::Write;
+    use std::path::Path;
+
+    fn main() {
+        let out_dir = env::var("OUT_DIR").unwrap();
+        let dest_path = Path::new(&out_dir).join("gnvim_version.rs");
+        let mut f = File::create(&dest_path).unwrap();
+        f.write_all(b"const VERSION: &str = \"${version}\";").unwrap();
+    }
+    EOF
+  '';
+
+  buildPhase = ''
+    make build
+  '';
+
+  installPhase = ''
+    make install PREFIX="${placeholder "out"}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "GUI for neovim, without any web bloat";
+    homepage = "https://github.com/vhakulinen/gnvim";
+    license = licenses.mit;
+    maintainers = with maintainers; [ minijackson ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/neovim/gnvim/wrapper.nix b/nixpkgs/pkgs/applications/editors/neovim/gnvim/wrapper.nix
new file mode 100644
index 000000000000..e16fe8a8adc7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/neovim/gnvim/wrapper.nix
@@ -0,0 +1,41 @@
+{ stdenv, gnvim-unwrapped, neovim, makeWrapper }:
+
+stdenv.mkDerivation {
+  pname = "gnvim";
+  version = gnvim-unwrapped.version;
+  buildCommand = if stdenv.isDarwin then ''
+    mkdir -p $out/Applications
+    cp -r ${gnvim-unwrapped}/bin/gnvim.app $out/Applications
+
+    chmod -R a+w "$out/Applications/gnvim.app/Contents/MacOS"
+    wrapProgram "$out/Applications/gnvim.app/Contents/MacOS/gnvim" \
+      --prefix PATH : "${neovim}/bin" \
+      --set GNVIM_RUNTIME_PATH "${gnvim-unwrapped}/share/gnvim/runtime"
+  '' else ''
+    makeWrapper '${gnvim-unwrapped}/bin/gnvim' "$out/bin/gnvim" \
+      --prefix PATH : "${neovim}/bin" \
+      --set GNVIM_RUNTIME_PATH "${gnvim-unwrapped}/share/gnvim/runtime"
+
+    mkdir -p "$out/share"
+    ln -s '${gnvim-unwrapped}/share/icons' "$out/share/icons"
+
+    # copy and fix .desktop file
+    cp -r '${gnvim-unwrapped}/share/applications' "$out/share/applications"
+    # Sed needs a writable directory to do inplace modifications
+    chmod u+rw "$out/share/applications"
+    for file in $out/share/applications/*.desktop; do
+      sed -e "s|Exec=.\\+gnvim\\>|Exec=$out/bin/gnvim|" -i "$file"
+    done
+  '';
+
+  preferLocalBuild = true;
+
+  nativeBuildInputs = [
+    makeWrapper
+  ];
+
+  passthru.unwrapped = gnvim-unwrapped;
+
+  inherit (gnvim-unwrapped) meta;
+}
+
diff --git a/nixpkgs/pkgs/applications/editors/neovim/neovim-remote.nix b/nixpkgs/pkgs/applications/editors/neovim/neovim-remote.nix
new file mode 100644
index 000000000000..06beff03f904
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/neovim/neovim-remote.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, pythonPackages }:
+
+with stdenv.lib;
+
+pythonPackages.buildPythonApplication rec {
+  pname = "neovim-remote";
+  version = "2.4.0";
+  disabled = !pythonPackages.isPy3k;
+
+  src = fetchFromGitHub {
+    owner = "mhinz";
+    repo = "neovim-remote";
+    rev = "v${version}";
+    sha256 = "0jlw0qksak4bdzddpsj74pm2f2bgpj3cwrlspdjjy0j9qzg0mpl9";
+  };
+
+  propagatedBuildInputs = with pythonPackages; [
+    pynvim
+    psutil
+    setuptools
+  ];
+
+  meta = {
+    description = "A tool that helps controlling nvim processes from a terminal";
+    homepage = "https://github.com/mhinz/neovim-remote/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ edanaher ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/neovim/qt.nix b/nixpkgs/pkgs/applications/editors/neovim/qt.nix
new file mode 100644
index 000000000000..8fe93d37c7e8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/neovim/qt.nix
@@ -0,0 +1,79 @@
+{ stdenv, mkDerivation, fetchFromGitHub, cmake, doxygen, makeWrapper
+, msgpack, neovim, pythonPackages, qtbase }:
+
+let
+  unwrapped = mkDerivation rec {
+    pname = "neovim-qt-unwrapped";
+    version = "0.2.15";
+
+    src = fetchFromGitHub {
+      owner  = "equalsraf";
+      repo   = "neovim-qt";
+      rev    = "v${version}";
+      sha256 = "097nykglqp4jyvla4yp32sc1f1hph4cqqhp6rm9ww7br8c0j54xl";
+    };
+
+    cmakeFlags = [
+      "-DUSE_SYSTEM_MSGPACK=1"
+    ];
+
+    buildInputs = [
+      neovim.unwrapped # only used to generate help tags at build time
+      qtbase
+    ] ++ (with pythonPackages; [
+      jinja2 python msgpack
+    ]);
+
+    nativeBuildInputs = [ cmake doxygen ];
+
+    enableParallelBuilding = true;
+
+    preCheck = ''
+      # The GUI tests require a running X server, disable them
+      sed -i ../test/CMakeLists.txt \
+        -e '/^add_xtest_gui/d'
+    '';
+
+    doCheck = true;
+
+    meta = with stdenv.lib; {
+      description = "Neovim client library and GUI, in Qt5";
+      license     = licenses.isc;
+      maintainers = with maintainers; [ peterhoeg ];
+      inherit (neovim.meta) platforms;
+      inherit version;
+    };
+  };
+in
+  stdenv.mkDerivation {
+    pname = "neovim-qt";
+    version = unwrapped.version;
+    buildCommand = if stdenv.isDarwin then ''
+      mkdir -p $out/Applications
+      cp -r ${unwrapped}/bin/nvim-qt.app $out/Applications
+
+      chmod -R a+w "$out/Applications/nvim-qt.app/Contents/MacOS"
+      wrapProgram "$out/Applications/nvim-qt.app/Contents/MacOS/nvim-qt" \
+        --prefix PATH : "${neovim}/bin"
+    '' else ''
+      makeWrapper '${unwrapped}/bin/nvim-qt' "$out/bin/nvim-qt" \
+        --prefix PATH : "${neovim}/bin"
+
+      # link .desktop file
+      mkdir -p "$out/share/pixmaps"
+      ln -s '${unwrapped}/share/applications' "$out/share/applications"
+      ln -s '${unwrapped}/share/pixmaps/nvim-qt.png' "$out/share/pixmaps/nvim-qt.png"
+    '';
+
+    preferLocalBuild = true;
+
+    nativeBuildInputs = [
+      makeWrapper
+    ];
+
+    passthru = {
+      inherit unwrapped;
+    };
+
+    inherit (unwrapped) meta;
+  }
diff --git a/nixpkgs/pkgs/applications/editors/neovim/ruby_provider/Gemfile b/nixpkgs/pkgs/applications/editors/neovim/ruby_provider/Gemfile
new file mode 100644
index 000000000000..eebecf2906fb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/neovim/ruby_provider/Gemfile
@@ -0,0 +1,3 @@
+source 'https://rubygems.org'
+
+gem 'neovim'
diff --git a/nixpkgs/pkgs/applications/editors/neovim/ruby_provider/Gemfile.lock b/nixpkgs/pkgs/applications/editors/neovim/ruby_provider/Gemfile.lock
new file mode 100644
index 000000000000..d0827bf2a7ff
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/neovim/ruby_provider/Gemfile.lock
@@ -0,0 +1,17 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    msgpack (1.2.6)
+    multi_json (1.13.1)
+    neovim (0.8.0)
+      msgpack (~> 1.1)
+      multi_json (~> 1.0)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  neovim
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/applications/editors/neovim/ruby_provider/gemset.nix b/nixpkgs/pkgs/applications/editors/neovim/ruby_provider/gemset.nix
new file mode 100644
index 000000000000..28a53cc590f6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/neovim/ruby_provider/gemset.nix
@@ -0,0 +1,27 @@
+{
+  msgpack = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0031gd2mjyba6jb7m97sqa149zjkr0vzn2s2gpb3m9nb67gqkm13";
+      type = "gem";
+    };
+    version = "1.2.6";
+  };
+  multi_json = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv";
+      type = "gem";
+    };
+    version = "1.13.1";
+  };
+  neovim = {
+    dependencies = ["msgpack" "multi_json"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "07scrdfk7pyn5jgx5m2yajdqpbdv42833vbw568qqag6xp99j3yk";
+      type = "gem";
+    };
+    version = "0.8.0";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/neovim/system_rplugin_manifest.patch b/nixpkgs/pkgs/applications/editors/neovim/system_rplugin_manifest.patch
new file mode 100644
index 000000000000..f634d3ec056a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/neovim/system_rplugin_manifest.patch
@@ -0,0 +1,29 @@
+diff --git a/runtime/autoload/remote/host.vim b/runtime/autoload/remote/host.vim
+index 6266b312b..965fabf1e 100644
+--- a/runtime/autoload/remote/host.vim
++++ b/runtime/autoload/remote/host.vim
+@@ -71,7 +71,8 @@ function! remote#host#RegisterPlugin(host, path, specs) abort
+ 
+   for plugin in plugins
+     if plugin.path == a:path
+-      throw 'Plugin "'.a:path.'" is already registered'
++      " plugin already registered
++      return
+     endif
+   endfor
+ 
+diff --git a/runtime/plugin/rplugin.vim b/runtime/plugin/rplugin.vim
+index 122d8d47f..83fbf8b57 100644
+--- a/runtime/plugin/rplugin.vim
++++ b/runtime/plugin/rplugin.vim
+@@ -54,6 +54,10 @@ function! s:GetManifest() abort
+ endfunction
+ 
+ function! s:LoadRemotePlugins() abort
++  if exists('$NVIM_SYSTEM_RPLUGIN_MANIFEST')
++    let g:system_remote_plugins = fnamemodify($NVIM_SYSTEM_RPLUGIN_MANIFEST, ':p')
++    execute 'source' fnameescape(g:system_remote_plugins)
++  endif
+   let g:loaded_remote_plugins = s:GetManifest()
+   if filereadable(g:loaded_remote_plugins)
+     execute 'source' fnameescape(g:loaded_remote_plugins)
diff --git a/nixpkgs/pkgs/applications/editors/neovim/wrapper.nix b/nixpkgs/pkgs/applications/editors/neovim/wrapper.nix
new file mode 100644
index 000000000000..c7d5f7649783
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/neovim/wrapper.nix
@@ -0,0 +1,144 @@
+{ stdenv, lib, makeWrapper
+, vimUtils
+, bundlerEnv, ruby
+, nodejs
+, nodePackages
+, pythonPackages
+, python3Packages
+}:
+with stdenv.lib;
+
+neovim:
+
+let
+  wrapper = {
+      extraMakeWrapperArgs ? ""
+    , withPython ? true,  extraPythonPackages ? (_: []) /* the function you would have passed to python.withPackages */
+    , withPython3 ? true,  extraPython3Packages ? (_: []) /* the function you would have passed to python.withPackages */
+    , withNodeJs? false
+    , withRuby ? true
+    , vimAlias ? false
+    , viAlias ? false
+    , configure ? {}
+  }:
+  let
+
+  rubyEnv = bundlerEnv {
+    name = "neovim-ruby-env";
+    gemdir = ./ruby_provider;
+    postBuild = ''
+      ln -sf ${ruby}/bin/* $out/bin
+    '';
+  };
+
+  /* for compatibility with passing extraPythonPackages as a list; added 2018-07-11 */
+  compatFun = funOrList: (if builtins.isList funOrList then
+    (_: lib.warn "passing a list as extraPythonPackages to the neovim wrapper is deprecated, pass a function as to python.withPackages instead" funOrList)
+    else funOrList);
+  extraPythonPackagesFun = compatFun extraPythonPackages;
+  extraPython3PackagesFun = compatFun extraPython3Packages;
+
+  requiredPlugins = vimUtils.requiredPlugins configure;
+  getDeps = attrname: map (plugin: plugin.${attrname} or (_:[]));
+
+  pluginPythonPackages = getDeps "pythonDependencies" requiredPlugins;
+  pythonEnv = pythonPackages.python.withPackages(ps:
+        [ ps.pynvim ]
+        ++ (extraPythonPackagesFun ps)
+        ++ (concatMap (f: f ps) pluginPythonPackages));
+
+  pluginPython3Packages = getDeps "python3Dependencies" requiredPlugins;
+  python3Env = python3Packages.python.withPackages (ps:
+        [ ps.pynvim ]
+        ++ (extraPython3PackagesFun ps)
+        ++ (concatMap (f: f ps) pluginPython3Packages));
+
+  binPath = makeBinPath (optionals withRuby [rubyEnv] ++ optionals withNodeJs [nodejs]);
+
+  in
+  stdenv.mkDerivation {
+      name = "neovim-${stdenv.lib.getVersion neovim}";
+      buildCommand = let bin="${neovim}/bin/nvim"; in ''
+        if [ ! -x "${bin}" ]
+        then
+            echo "cannot find executable file \`${bin}'"
+            exit 1
+        fi
+
+        makeWrapper "$(readlink -v --canonicalize-existing "${bin}")" \
+          "$out/bin/nvim" --add-flags " \
+        --cmd \"${if withNodeJs then "let g:node_host_prog='${nodePackages.neovim}/bin/neovim-node-host'" else "let g:loaded_node_provider=1"}\" \
+        --cmd \"${if withPython then "let g:python_host_prog='$out/bin/nvim-python'" else "let g:loaded_python_provider = 1"}\" \
+        --cmd \"${if withPython3 then "let g:python3_host_prog='$out/bin/nvim-python3'" else "let g:loaded_python3_provider = 1"}\" \
+        --cmd \"${if withRuby then "let g:ruby_host_prog='$out/bin/nvim-ruby'" else "let g:loaded_ruby_provider=1"}\" " \
+        --suffix PATH : ${binPath} \
+        ${optionalString withRuby '' --set GEM_HOME ${rubyEnv}/${rubyEnv.ruby.gemPath}'' }
+      ''
+      + optionalString (!stdenv.isDarwin) ''
+        # copy icon and patch the original neovim.desktop file
+        mkdir -p $out/share/{applications,pixmaps}
+        ln -s ${neovim}/share/pixmaps/nvim.png $out/share/pixmaps/nvim.png
+        substitute ${neovim}/share/applications/nvim.desktop $out/share/applications/nvim.desktop \
+          --replace 'TryExec=nvim' "TryExec=$out/bin/nvim" \
+          --replace 'Name=Neovim' 'Name=WrappedNeovim'
+      ''
+      + optionalString withPython ''
+        makeWrapper ${pythonEnv}/bin/python $out/bin/nvim-python --unset PYTHONPATH
+      '' + optionalString withPython3 ''
+        makeWrapper ${python3Env}/bin/python3 $out/bin/nvim-python3 --unset PYTHONPATH
+      '' + optionalString withRuby ''
+        ln -s ${rubyEnv}/bin/neovim-ruby-host $out/bin/nvim-ruby
+      '' + optionalString vimAlias ''
+        ln -s $out/bin/nvim $out/bin/vim
+      '' + optionalString viAlias ''
+        ln -s $out/bin/nvim $out/bin/vi
+      '' + optionalString (configure != {}) ''
+        echo "Generating remote plugin manifest"
+        export NVIM_RPLUGIN_MANIFEST=$out/rplugin.vim
+        # Some plugins assume that the home directory is accessible for
+        # initializing caches, temporary files, etc. Even if the plugin isn't
+        # actively used, it may throw an error as soon as Neovim is launched
+        # (e.g., inside an autoload script), causing manifest generation to
+        # fail. Therefore, let's create a fake home directory before generating
+        # the manifest, just to satisfy the needs of these plugins.
+        #
+        # See https://github.com/Yggdroot/LeaderF/blob/v1.21/autoload/lfMru.vim#L10
+        # for an example of this behavior.
+        export HOME="$(mktemp -d)"
+        # Launch neovim with a vimrc file containing only the generated plugin
+        # code. Pass various flags to disable temp file generation
+        # (swap/viminfo) and redirect errors to stderr.
+        # Only display the log on error since it will contain a few normally
+        # irrelevant messages.
+        if ! $out/bin/nvim \
+          -u ${vimUtils.vimrcFile (configure // { customRC = ""; })} \
+          -i NONE -n \
+          -E -V1rplugins.log -s \
+          +UpdateRemotePlugins +quit! > outfile 2>&1; then
+          cat outfile
+          echo -e "\nGenerating rplugin.vim failed!"
+          exit 1
+        fi
+        unset NVIM_RPLUGIN_MANIFEST
+
+        # this relies on a patched neovim, see
+        # https://github.com/neovim/neovim/issues/9413
+        wrapProgram $out/bin/nvim \
+          --set NVIM_SYSTEM_RPLUGIN_MANIFEST $out/rplugin.vim \
+          --add-flags "-u ${vimUtils.vimrcFile configure}" ${extraMakeWrapperArgs}
+      '';
+
+    preferLocalBuild = true;
+
+    buildInputs = [makeWrapper];
+    passthru = { unwrapped = neovim; };
+
+    meta = neovim.meta // {
+      description = neovim.meta.description;
+      hydraPlatforms = [];
+      # prefer wrapper over the package
+      priority = (neovim.meta.priority or 0) - 1;
+    };
+  };
+in
+  lib.makeOverridable wrapper
diff --git a/nixpkgs/pkgs/applications/editors/netbeans/default.nix b/nixpkgs/pkgs/applications/editors/netbeans/default.nix
new file mode 100644
index 000000000000..ecc3c058f702
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/netbeans/default.nix
@@ -0,0 +1,66 @@
+{ stdenv, fetchurl, makeWrapper, makeDesktopItem, which, unzip, libicns, imagemagick
+, jdk, perl, python
+}:
+
+let
+  version = "12.0";
+  desktopItem = makeDesktopItem {
+    name = "netbeans";
+    exec = "netbeans";
+    comment = "Integrated Development Environment";
+    desktopName = "Apache NetBeans IDE";
+    genericName = "Integrated Development Environment";
+    categories = "Application;Development;";
+    icon = "netbeans";
+  };
+in
+stdenv.mkDerivation {
+  pname = "netbeans";
+  inherit version;
+  src = fetchurl {
+    url = "mirror://apache/netbeans/netbeans/${version}/netbeans-${version}-bin.zip";
+    sha512 = "91030c9628a08acd85f1a58a7f71eec2e57dc85841c1c475cc6311335b5d8cdc10c1198274b9668b7f61a28d04b07661247dc1c3e36b8e29214aec3748e499e4";
+  };
+
+  buildCommand = ''
+    # Unpack and perform some path patching.
+    unzip $src
+    patchShebangs .
+
+    # Copy to installation directory and create a wrapper capable of starting
+    # it.
+    mkdir -pv $out/bin
+    cp -a netbeans $out
+    makeWrapper $out/netbeans/bin/netbeans $out/bin/netbeans \
+      --prefix PATH : ${stdenv.lib.makeBinPath [ jdk which ]} \
+      --prefix JAVA_HOME : ${jdk.home} \
+      --add-flags "--jdkhome ${jdk.home}"
+
+    # Extract pngs from the Apple icon image and create
+    # the missing ones from the 1024x1024 image.
+    icns2png --extract $out/netbeans/nb/netbeans.icns
+    for size in 16 24 32 48 64 128 256 512 1024; do
+      mkdir -pv $out/share/icons/hicolor/"$size"x"$size"/apps
+      if [ -e netbeans_"$size"x"$size"x32.png ]
+      then
+        mv netbeans_"$size"x"$size"x32.png $out/share/icons/hicolor/"$size"x"$size"/apps/netbeans.png
+      else
+        convert -resize "$size"x"$size" netbeans_1024x1024x32.png $out/share/icons/hicolor/"$size"x"$size"/apps/netbeans.png
+      fi
+    done;
+
+    # Create desktop item, so we can pick it from the KDE/GNOME menu
+    mkdir -pv $out/share/applications
+    ln -s ${desktopItem}/share/applications/* $out/share/applications
+  '';
+
+  buildInputs = [ makeWrapper perl python unzip libicns imagemagick ];
+
+  meta = {
+    description = "An integrated development environment for Java, C, C++ and PHP";
+    homepage = "https://netbeans.apache.org/";
+    license = stdenv.lib.licenses.asl20;
+    maintainers = with stdenv.lib.maintainers; [ sander rszibele asbachb ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/notepadqq/default.nix b/nixpkgs/pkgs/applications/editors/notepadqq/default.nix
new file mode 100644
index 000000000000..cd4fe34ef33b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/notepadqq/default.nix
@@ -0,0 +1,41 @@
+{ mkDerivation, lib, fetchFromGitHub, pkgconfig, which, qtbase, qtsvg, qttools, qtwebkit }:
+
+mkDerivation rec {
+  pname = "notepadqq";
+  version = "1.4.8";
+
+  src = fetchFromGitHub {
+    owner = "notepadqq";
+    repo = "notepadqq";
+    rev = "v${version}";
+    sha256 = "0lbv4s7ng31dkznzbkmp2cvkqglmfj6lv4mbg3r410fif2nrva7k";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig which qttools
+  ];
+
+  buildInputs = [
+    qtbase qtsvg qtwebkit
+  ];
+
+  preConfigure = ''
+    export LRELEASE="lrelease"
+  '';
+
+  dontWrapQtApps = true;
+
+  preFixup = ''
+    wrapQtApp $out/bin/notepadqq
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    homepage = "https://notepadqq.com/";
+    description = "Notepad++-like editor for the Linux desktop";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.rszibele ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/nvi/default.nix b/nixpkgs/pkgs/applications/editors/nvi/default.nix
new file mode 100644
index 000000000000..ed08954f8ba0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/nvi/default.nix
@@ -0,0 +1,56 @@
+{ fetchurl, stdenv, ncurses }:
+
+stdenv.mkDerivation {
+  name = "nvi-1.79";
+
+  src = fetchurl {
+    urls =
+      [ "ftp://ftp.eenet.ee/pub/cpan/src/misc/nvi-1.79.tar.gz"
+        "ftp://ftp.saintjoe.edu/pub/CPAN/src/misc/nvi-1.79.tar.gz"
+        "ftp://ftp.free.fr/.mirrors1/ftp.netbsd.org/packages/distfiles/nvi-1.79.tar.gz"
+      ];
+    sha256 = "0cvf56rbylz7ksny6g2256sjg8yrsxrmbpk82r64rhi53sm8fnvm";
+  };
+
+  buildInputs = [ ncurses ];
+
+  # nvi tries to write to a usual tmp directory (/var/tmp),
+  # so we will force it to use /tmp.
+  patchPhase = ''
+    sed -i build/configure \
+      -e s@vi_cv_path_preserve=no@vi_cv_path_preserve=/tmp/vi.recover@ \
+      -e s@/var/tmp@@ \
+      -e s@-lcurses@-lncurses@
+  '';
+
+  configurePhase = ''
+    mkdir mybuild
+    cd mybuild
+    ../build/configure --prefix=$out --disable-curses
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/vi/catalog
+    for a in dutch english french german ru_SU.KOI8-R spanish swedish; do
+      cp ../catalog/$a $out/share/vi/catalog
+    done
+    cp nvi $out/bin/nvi
+    ln -s $out/bin/nvi $out/bin/vi
+    ln -s $out/bin/nvi $out/bin/ex
+    ln -s $out/bin/nvi $out/bin/view
+
+    mkdir -p $out/share/man/man1
+    cp ../docs/USD.doc/vi.man/vi.1 $out/share/man/man1/nvi.1
+    ln -s $out/share/man/man1/nvi.1 $out/share/man/man1/vi
+    ln -s $out/share/man/man1/nvi.1 $out/share/man/man1/ex
+    ln -s $out/share/man/man1/nvi.1 $out/share/man/man1/view
+    ln -s $out/bin/{,vi-}nvi # create a symlink so that all vi(m) users will find it
+  '';
+
+  meta = {
+    homepage = "http://www.bostic.com/vi/";
+    description = "The Berkeley Vi Editor";
+    license = stdenv.lib.licenses.free;
+    broken = true; # since 2020-02-08
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/nvpy/default.nix b/nixpkgs/pkgs/applications/editors/nvpy/default.nix
new file mode 100644
index 000000000000..dcf42b55c5c5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/nvpy/default.nix
@@ -0,0 +1,37 @@
+{ pkgs, fetchurl, python2Packages }:
+
+let
+  pythonPackages = python2Packages;
+in pythonPackages.buildPythonApplication rec {
+  version = "0.9.7";
+  pname = "nvpy";
+
+  src = fetchurl {
+    url = "https://github.com/cpbotha/nvpy/archive/v${version}.tar.gz";
+    sha256 = "1rd3vlaqkg16iz6qcw6rkbq0jmyvc0843wa3brnvn1nz0kla243f";
+  };
+
+  propagatedBuildInputs = with pythonPackages; [
+    markdown
+    tkinter
+    docutils
+  ];
+
+  # No tests
+  doCheck = false;
+
+  postInstall = ''
+    install -dm755 "$out/share/licenses/nvpy/"
+    install -m644 LICENSE.txt "$out/share/licenses/nvpy/LICENSE"
+
+    install -dm755 "$out/share/doc/nvpy/"
+    install -m644 README.rst "$out/share/doc/nvpy/README"
+  '';
+
+  meta = with pkgs.lib; {
+    description = "A simplenote-syncing note-taking tool inspired by Notational Velocity";
+    homepage = "https://github.com/cpbotha/nvpy";
+    platforms = platforms.linux;
+    license = licenses.bsd3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/okteta/default.nix b/nixpkgs/pkgs/applications/editors/okteta/default.nix
new file mode 100644
index 000000000000..b9d92409198b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/okteta/default.nix
@@ -0,0 +1,35 @@
+{ mkDerivation, stdenv, fetchurl, extra-cmake-modules, kdoctools, qtscript, kconfig
+, kinit, karchive, kcrash, kcmutils, kconfigwidgets, knewstuff, kparts
+, qca-qt5, shared-mime-info }:
+
+mkDerivation rec {
+  pname = "okteta";
+  version = "0.26.3";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/okteta/${version}/src/${pname}-${version}.tar.xz";
+    sha256 = "1454844s76skk18gpcf56y9pkmffs7p4z09ggmy37ifzf7yk1p19";
+  };
+
+  nativeBuildInputs = [ qtscript extra-cmake-modules kdoctools ];
+  buildInputs = [ shared-mime-info ];
+
+  propagatedBuildInputs = [
+    kconfig
+    kinit
+    kcmutils
+    kconfigwidgets
+    knewstuff
+    kparts
+    qca-qt5
+    karchive
+    kcrash
+  ];
+
+  meta = with stdenv.lib; {
+    license = licenses.gpl2;
+    description = "A hex editor";
+    maintainers = with maintainers; [ peterhoeg bkchr ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/quartus-prime/default.nix b/nixpkgs/pkgs/applications/editors/quartus-prime/default.nix
new file mode 100644
index 000000000000..093635b10e42
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/quartus-prime/default.nix
@@ -0,0 +1,180 @@
+{ buildFHSUserEnv, makeDesktopItem, writeScript, stdenv, lib, requireFile, unstick,
+  supportedDevices ? [ "Arria II" "Cyclone V" "Cyclone IV" "Cyclone 10 LP" "MAX II/V" "MAX 10 FPGA" ] }:
+
+let
+  deviceIds = {
+    "Arria II" = "arria_lite";
+    "Cyclone V" = "cyclonev";
+    "Cyclone IV" = "cyclone";
+    "Cyclone 10 LP" = "cyclone10lp";
+    "MAX II/V" = "max";
+    "MAX 10 FPGA" = "max10";
+  };
+
+  supportedDeviceIds =
+    assert lib.assertMsg (lib.all (name: lib.hasAttr name deviceIds) supportedDevices)
+      "Supported devices are: ${lib.concatStringsSep ", " (lib.attrNames deviceIds)}";
+    lib.listToAttrs (map (name: {
+      inherit name;
+      value = deviceIds.${name};
+    }) supportedDevices);
+
+  unsupportedDeviceIds = lib.filterAttrs (name: value:
+    !(lib.hasAttr name supportedDeviceIds)
+  ) deviceIds;
+
+  quartus = stdenv.mkDerivation rec {
+    version = "19.1.0.670";
+    pname = "quartus-prime-lite-unwrapped";
+
+    src = let
+      require = {name, sha256}: requireFile {
+        inherit name sha256;
+        url = "${meta.homepage}/${lib.versions.majorMinor version}/?edition=lite&platform=linux";
+      };
+
+      hashes = {
+        "arria_lite" = "1flj9w0vb2p9f9zll136izr6qvmxn0lg72bvaqxs3sxc9vj06wm1";
+        "cyclonev" = "0bqxpvjgph0y6slk0jq75mcqzglmqkm0jsx10y9xz5llm6zxzqab";
+        "cyclone" = "0pzs8y4s3snxg4g6lrb21qi88abm48g279xzd98qv17qxb2z82rr";
+        "cyclone10lp" = "1ccxq8n20y40y47zddkijcv41w3cddvydddr3m4844q31in3nxha";
+        "max" = "1cxzbqscxvlcy74dpqmvlnxjyyxfwcx3spygpvpwi6dfj3ipgm2z";
+        "max10" = "14k83javivbk65mpb17wdwsyb8xk7x9gzj9x0wnd24mmijrvdy9s";
+      };
+
+      devicePackages = map (id: {
+        name = "${id}-${version}.qdz";
+        sha256 = lib.getAttr id hashes;
+      }) (lib.attrValues supportedDeviceIds);
+    in map require ([{
+      name = "QuartusLiteSetup-${version}-linux.run";
+      sha256 = "15vxvqxqdk29ahlw3lkm1nzxyhzy4626wb9s5f2h6sjgq64r8m7f";
+    } {
+      name = "ModelSimSetup-${version}-linux.run";
+      sha256 = "0j1vfr91jclv88nam2plx68arxmz4g50sqb840i60wqd5b0l3y6r";
+    }] ++ devicePackages);
+
+    nativeBuildInputs = [ unstick ];
+
+    buildCommand = let
+      installers = lib.sublist 0 2 src;
+      components = lib.sublist 2 ((lib.length src) - 2) src;
+      copyInstaller = installer: ''
+        # `$(cat $NIX_CC/nix-support/dynamic-linker) $src[0]` often segfaults, so cp + patchelf
+        cp ${installer} $TEMP/${installer.name}
+        chmod u+w,+x $TEMP/${installer.name}
+        patchelf --interpreter $(cat $NIX_CC/nix-support/dynamic-linker) $TEMP/${installer.name}
+      '';
+      copyComponent = component: "cp ${component} $TEMP/${component.name}";
+      # leaves enabled: quartus, modelsim_ase, devinfo
+      disabledComponents = [
+        "quartus_help"
+        "quartus_update"
+        # not modelsim_ase
+        "modelsim_ae"
+      ] ++ (lib.attrValues unsupportedDeviceIds);
+    in ''
+      ${lib.concatMapStringsSep "\n" copyInstaller installers}
+      ${lib.concatMapStringsSep "\n" copyComponent components}
+
+      unstick $TEMP/${(builtins.head installers).name} \
+        --disable-components ${lib.concatStringsSep "," disabledComponents} \
+        --mode unattended --installdir $out --accept_eula 1
+
+      # This patch is from https://wiki.archlinux.org/index.php/Altera_Design_Software
+      patch --force --strip 0 --directory $out < ${./vsim.patch}
+
+      rm -r $out/uninstall $out/logs
+    '';
+
+    meta = {
+      homepage = "https://fpgasoftware.intel.com";
+      description = "FPGA design and simulation software";
+      license = lib.licenses.unfree;
+      platforms = lib.platforms.linux;
+      maintainers = with lib.maintainers; [ kwohlfahrt ];
+    };
+  };
+
+  desktopItem = makeDesktopItem {
+    name = "quartus-prime-lite";
+    exec = "quartus";
+    icon = "quartus";
+    desktopName = "Quartus";
+    genericName = "Quartus Prime";
+    categories = "Development;";
+  };
+
+# I think modelsim_ase/linux/vlm checksums itself, so use FHSUserEnv instead of `patchelf`
+in buildFHSUserEnv rec {
+  name = "quartus-prime-lite"; # wrapped
+
+  targetPkgs = pkgs: with pkgs; [
+    # quartus requirements
+    glib
+    xorg.libICE
+    xorg.libSM
+    zlib
+    # qsys requirements
+    xorg.libXtst
+    xorg.libXi
+  ];
+  multiPkgs = pkgs: with pkgs; let
+    # This seems ugly - can we override `libpng = libpng12` for all `pkgs`?
+    freetype = pkgs.freetype.override { libpng = libpng12; };
+    fontconfig = pkgs.fontconfig.override { inherit freetype; };
+    libXft = pkgs.xorg.libXft.override { inherit freetype fontconfig; };
+  in [
+    # modelsim requirements
+    libxml2
+    ncurses5
+    unixODBC
+    libXft
+    # common requirements
+    freetype
+    fontconfig
+    xorg.libX11
+    xorg.libXext
+    xorg.libXrender
+  ];
+
+  passthru = {
+    unwrapped = quartus;
+  };
+
+  extraInstallCommands = let
+    quartusExecutables = (map (c: "quartus/bin/quartus_${c}") [
+      "asm" "cdb" "cpf" "drc" "eda" "fit" "jbcc" "jli" "map" "pgm" "pow"
+      "sh" "si" "sim" "sta" "stp" "tan"
+    ]) ++ [ "quartus/bin/quartus" ];
+
+    qsysExecutables = map (c: "quartus/sopc_builder/bin/qsys-${c}") [
+      "generate" "edit" "script"
+    ];
+    # Should we install all executables ?
+    modelsimExecutables = map (c: "modelsim_ase/bin/${c}") [
+      "vsim" "vlog" "vlib"
+    ];
+  in ''
+    mkdir -p $out/share/applications $out/share/icons/128x128
+    ln -s ${desktopItem}/share/applications/* $out/share/applications
+    ln -s ${quartus}/licenses/images/dc_quartus_panel_logo.png $out/share/icons/128x128/quartus.png
+
+    mkdir -p $out/quartus/bin $out/quartus/sopc_builder/bin $out/modelsim_ase/bin
+    WRAPPER=$out/bin/${name}
+    EXECUTABLES="${lib.concatStringsSep " " (quartusExecutables ++ qsysExecutables ++ modelsimExecutables)}"
+    for executable in $EXECUTABLES; do
+        echo "#!${stdenv.shell}" >> $out/$executable
+        echo "$WRAPPER ${quartus}/$executable \$@" >> $out/$executable
+    done
+
+    cd $out
+    chmod +x $EXECUTABLES
+    # link into $out/bin so executables become available on $PATH
+    ln --symbolic --relative --target-directory ./bin $EXECUTABLES
+  '';
+
+  runScript = writeScript "${name}-wrapper" ''
+    exec $@
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/editors/quartus-prime/vsim.patch b/nixpkgs/pkgs/applications/editors/quartus-prime/vsim.patch
new file mode 100644
index 000000000000..36dc41b7ef14
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/quartus-prime/vsim.patch
@@ -0,0 +1,11 @@
+--- modelsim_ase/vco     	1970-01-01 01:00:01.000000000 +0100
++++ modelsim_ase/vco      	1970-01-01 01:00:01.000000000 +0100
+@@ -207,7 +207,7 @@
+           2.[5-9]*)         vco="linux" ;;
+           2.[1-9][0-9]*)    vco="linux" ;;
+           3.[0-9]*)    		vco="linux" ;;
+-          *)                vco="linux_rh60" ;;
++          *)                vco="linux" ;;
+         esac
+         if [ ! -x "$dir/$vco/vsim" ]; then
+           if [ -x "$dir/linuxle/vsim" ]; then
diff --git a/nixpkgs/pkgs/applications/editors/quilter/default.nix b/nixpkgs/pkgs/applications/editors/quilter/default.nix
new file mode 100644
index 000000000000..8fa85ab75570
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/quilter/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchFromGitHub, pkgconfig, meson, ninja, python3, vala
+, gtk3, desktop-file-utils, gtksourceview, webkitgtk, gtkspell3, pantheon
+, libgee, discount, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "quilter";
+  version = "2.2.4";
+
+  src = fetchFromGitHub {
+    owner = "lainsce";
+    repo = pname;
+    rev = version;
+    sha256 = "0xmnfqqdn7p84aksb8yzs14ikgy5driylr6m4p5ffsb6i9aa0i9h";
+  };
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    meson
+    ninja
+    vala
+    pkgconfig
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    discount
+    gtk3
+    gtksourceview
+    gtkspell3
+    libgee
+    pantheon.elementary-icon-theme
+    pantheon.granite
+    webkitgtk
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Focus on your writing - designed for elementary OS";
+    homepage = "https://github.com/lainsce/quilter";
+    license = licenses.gpl2Plus;
+    maintainers = pantheon.maintainers;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/qxmledit/default.nix b/nixpkgs/pkgs/applications/editors/qxmledit/default.nix
new file mode 100644
index 000000000000..cb658e8fcdac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/qxmledit/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub,
+  qmake, qtbase, qtxmlpatterns, qtsvg, qtscxml, qtquick1, libGLU }:
+
+stdenv.mkDerivation rec {
+  name = "qxmledit-${version}" ;
+  version = "0.9.15" ;
+  src = fetchFromGitHub ( stdenv.lib.importJSON ./qxmledit.json ) ;
+  nativeBuildInputs = [ qmake ] ;
+  buildInputs = [ qtbase qtxmlpatterns qtsvg qtscxml qtquick1 libGLU ] ;
+  qmakeFlags = [ "CONFIG+=release" ] ;
+  outputs = [ "out" "doc" ] ;
+
+  preConfigure = ''
+    export QXMLEDIT_INST_DATA_DIR="$out/share/data"
+    export QXMLEDIT_INST_TRANSLATIONS_DIR="$out/share/i18n"
+    export QXMLEDIT_INST_INCLUDE_DIR="$out/include"
+    export QXMLEDIT_INST_DIR="$out/bin"
+    export QXMLEDIT_INST_LIB_DIR="$out/lib"
+    export QXMLEDIT_INST_DOC_DIR="$doc"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple XML editor based on qt libraries" ;
+    homepage = "https://sourceforge.net/projects/qxmledit";
+    license = licenses.lgpl2;
+    platforms = platforms.all;
+  } ;
+}
diff --git a/nixpkgs/pkgs/applications/editors/qxmledit/qxmledit.json b/nixpkgs/pkgs/applications/editors/qxmledit/qxmledit.json
new file mode 100644
index 000000000000..3b50532d6a0d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/qxmledit/qxmledit.json
@@ -0,0 +1,6 @@
+{
+    "owner": "lbellonda",
+    "repo": "qxmledit",
+    "rev": "6136dca50ceb3b4447c91a7a18dcf84785ea11d1",
+    "sha256": "1wcnphalwf0a5gz9r44jgk8wcv1w2qipbwjkbzkra2kxanxns834"
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/editors/rednotebook/default.nix b/nixpkgs/pkgs/applications/editors/rednotebook/default.nix
new file mode 100644
index 000000000000..0cfa2b62dce3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/rednotebook/default.nix
@@ -0,0 +1,43 @@
+{ lib, buildPythonApplication, fetchFromGitHub
+, gdk-pixbuf, glib, gobject-introspection, gtk3, gtksourceview, pango, webkitgtk
+, pygobject3, pyyaml
+}:
+
+buildPythonApplication rec {
+  pname = "rednotebook";
+  version = "2.19";
+
+  src = fetchFromGitHub {
+    owner = "jendrikseipp";
+    repo = "rednotebook";
+    rev = "v${version}";
+    sha256 = "1y5slcwgs6p5n52whhhjg0c7053688311wnc9wqrk7vjk10qkx9d";
+  };
+
+  # We have not packaged tests.
+  doCheck = false;
+
+  nativeBuildInputs = [ gobject-introspection ];
+
+  propagatedBuildInputs = [
+    gdk-pixbuf glib gtk3 gtksourceview pango webkitgtk
+    pygobject3 pyyaml
+  ];
+
+  makeWrapperArgs = [
+    "--set GI_TYPELIB_PATH $GI_TYPELIB_PATH"
+    "--prefix XDG_DATA_DIRS : $out/share"
+    "--suffix XDG_DATA_DIRS : $XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  ];
+
+  # Until gobject-introspection in nativeBuildInputs is supported.
+  # https://github.com/NixOS/nixpkgs/issues/56943#issuecomment-472568643
+  strictDeps = false;
+
+  meta = with lib; {
+    homepage = "https://rednotebook.sourceforge.io/";
+    description = "A modern journal that includes a calendar navigation, customizable templates, export functionality and word clouds";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ orivej tstrobel ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/retext/default.nix b/nixpkgs/pkgs/applications/editors/retext/default.nix
new file mode 100644
index 000000000000..7752313b2a7e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/retext/default.nix
@@ -0,0 +1,63 @@
+{ stdenv, python3, fetchFromGitHub, wrapQtAppsHook, buildEnv, aspellDicts
+# Use `lib.collect lib.isDerivation aspellDicts;` to make all dictionaries
+# available.
+, enchantAspellDicts ? with aspellDicts; [ en en-computers en-science ]
+}:
+
+let
+  version = "7.0.4";
+  python = let
+    packageOverrides = self: super: {
+      markdown = super.markdown.overridePythonAttrs(old: {
+        src = super.fetchPypi {
+          version = "3.0.1";
+          pname = "Markdown";
+          sha256 = "d02e0f9b04c500cde6637c11ad7c72671f359b87b9fe924b2383649d8841db7c";
+        };
+      });
+
+      chardet = super.chardet.overridePythonAttrs(old: {
+        src = super.fetchPypi {
+          version = "2.3.0";
+          pname = "chardet";
+          sha256 = "e53e38b3a4afe6d1132de62b7400a4ac363452dc5dfcf8d88e8e0cce663c68aa";
+        };
+        patches = [];
+      });
+    };
+    in python3.override { inherit packageOverrides; };
+  pythonEnv = python.withPackages (ps: with ps; [
+    pyqt5 docutils pyenchant Markups markdown pygments chardet
+  ]);
+in python.pkgs.buildPythonApplication {
+  inherit version;
+  pname = "retext";
+
+  src = fetchFromGitHub {
+    owner = "retext-project";
+    repo = "retext";
+    rev = version;
+    sha256 = "1zcapywspc9v5zf5cxqkcy019np9n41gmryqixj66zsvd544c6si";
+  };
+
+  doCheck = false;
+
+  nativeBuildInputs = [ wrapQtAppsHook ];
+  propagatedBuildInputs = [ pythonEnv ];
+
+  postInstall = ''
+    wrapQtApp "$out/bin/retext" \
+      --set ASPELL_CONF "dict-dir ${buildEnv {
+        name = "aspell-all-dicts";
+        paths = map (path: "${path}/lib/aspell") enchantAspellDicts;
+      }}"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/retext-project/retext/";
+    description = "Simple but powerful editor for Markdown and reStructuredText";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ klntsky ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/rstudio/clang-location.patch b/nixpkgs/pkgs/applications/editors/rstudio/clang-location.patch
new file mode 100644
index 000000000000..402abdd85636
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/rstudio/clang-location.patch
@@ -0,0 +1,25 @@
+diff --git i/src/cpp/core/libclang/LibClang.cpp w/src/cpp/core/libclang/LibClang.cpp
+index ec12a3a1ff..8c81b633ae 100644
+--- i/src/cpp/core/libclang/LibClang.cpp
++++ w/src/cpp/core/libclang/LibClang.cpp
+@@ -54,7 +54,7 @@ std::vector<std::string> defaultCompileArgs(LibraryVersion version)
+ 
+    // we need to add in the associated libclang headers as
+    // they are not discovered / used by default during compilation
+-   FilePath llvmPath = s_libraryPath.parent().parent();
++   FilePath llvmPath("@clang@");
+    boost::format fmt("%1%/lib/clang/%2%/include");
+    fmt % llvmPath.absolutePath() % version.asString();
+    std::string includePath = fmt.str();
+@@ -77,10 +77,7 @@ std::vector<std::string> systemClangVersions()
+ #elif defined(__unix__)
+    // default set of versions
+    clangVersions = {
+-      "/usr/lib/libclang.so",
+-      "/usr/lib/llvm/libclang.so",
+-      "/usr/lib64/libclang.so",
+-      "/usr/lib64/llvm/libclang.so",
++      "@libclang.so@"
+    };
+    
+    // iterate through the set of available 'llvm' directories
diff --git a/nixpkgs/pkgs/applications/editors/rstudio/default.nix b/nixpkgs/pkgs/applications/editors/rstudio/default.nix
new file mode 100644
index 000000000000..3fe845a067b3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/rstudio/default.nix
@@ -0,0 +1,143 @@
+{ lib, mkDerivation, fetchurl, fetchpatch, fetchFromGitHub, makeDesktopItem, cmake, boost, zlib
+, openssl, R, qtbase, qtxmlpatterns, qtsensors, qtwebengine, qtwebchannel
+, libuuid, hunspellDicts, unzip, ant, jdk, gnumake, makeWrapper, pandoc
+, llvmPackages
+}:
+
+with lib;
+let
+  verMajor = "1";
+  verMinor = "2";
+  verPatch = "5042";
+  version = "${verMajor}.${verMinor}.${verPatch}";
+  ginVer = "2.1.2";
+  gwtVer = "2.8.1";
+in
+mkDerivation rec {
+  pname = "RStudio";
+  inherit version;
+
+  nativeBuildInputs = [ cmake unzip ant jdk makeWrapper pandoc ];
+
+  buildInputs = [ boost zlib openssl R qtbase qtxmlpatterns qtsensors
+                  qtwebengine qtwebchannel libuuid ];
+
+  src = fetchFromGitHub {
+    owner = "rstudio";
+    repo = "rstudio";
+    rev = "v${version}";
+    sha256 = "1n67fa357v51j3z1ma8v2ydfsx3y8n10k2svmfcf4mdzsi8w0kc5";
+  };
+
+  # Hack RStudio to only use the input R and provided libclang.
+  patches = [ ./r-location.patch ./clang-location.patch
+              (fetchpatch {
+                # Fetch a patch to ensure Rstudio compiles against R
+                # 4.0.0, should be removed next 1.2.X Rstudio update
+                # or possibly 1.3.X
+                url = "https://github.com/rstudio/rstudio/commit/3fb2397c2f208bb8ace0bbaf269481ccb96b5b20.patch";
+                sha256 = "0qpgjy6aash0fc0xbns42cwpj3nsw49nkbzwyq8az01xwg81g0f3";
+              })
+            ];
+  postPatch = ''
+    substituteInPlace src/cpp/core/r_util/REnvironmentPosix.cpp --replace '@R@' ${R}
+    substituteInPlace src/cpp/core/libclang/LibClang.cpp \
+      --replace '@clang@' ${llvmPackages.clang.cc} \
+      --replace '@libclang.so@' ${llvmPackages.clang.cc.lib}/lib/libclang.so
+  '';
+
+  ginSrc = fetchurl {
+    url = "https://s3.amazonaws.com/rstudio-buildtools/gin-${ginVer}.zip";
+    sha256 = "16jzmljravpz6p2rxa87k5f7ir8vs7ya75lnfybfajzmci0p13mr";
+  };
+
+  gwtSrc = fetchurl {
+    url = "https://s3.amazonaws.com/rstudio-buildtools/gwt-${gwtVer}.zip";
+    sha256 = "19x000m3jwnkqgi6ic81lkzyjvvxcfacw2j0vcfcaknvvagzhyhb";
+  };
+
+  hunspellDictionaries = filter isDerivation (unique (attrValues hunspellDicts));
+  # These dicts contain identically-named dict files, so we only keep the
+  # -large versions in case of clashes
+  largeDicts = filter (d: hasInfix "-large-wordlist" d) hunspellDictionaries;
+  otherDicts = filter (d: !(hasAttr "dictFileName" d &&
+                            elem d.dictFileName (map (d: d.dictFileName) largeDicts))) hunspellDictionaries;
+  dictionaries = largeDicts ++ otherDicts;
+
+  mathJaxSrc = fetchurl {
+    url = "https://s3.amazonaws.com/rstudio-buildtools/mathjax-26.zip";
+    sha256 = "0wbcqb9rbfqqvvhqr1pbqax75wp8ydqdyhp91fbqfqp26xzjv6lk";
+  };
+
+  rsconnectSrc = fetchFromGitHub {
+    owner = "rstudio";
+    repo = "rsconnect";
+    rev = "984745d8";
+    sha256 = "037z0y32k1gdda192y5qn5hi7wp8wyap44mkjlklrgcqkmlcylb9";
+  };
+
+  preConfigure =
+    ''
+      export RSTUDIO_VERSION_MAJOR=${verMajor}
+      export RSTUDIO_VERSION_MINOR=${verMinor}
+      export RSTUDIO_VERSION_PATCH=${verPatch}
+
+      GWT_LIB_DIR=src/gwt/lib
+
+      mkdir -p $GWT_LIB_DIR/gin/${ginVer}
+      unzip ${ginSrc} -d $GWT_LIB_DIR/gin/${ginVer}
+
+      unzip ${gwtSrc}
+      mkdir -p $GWT_LIB_DIR/gwt
+      mv gwt-${gwtVer} $GWT_LIB_DIR/gwt/${gwtVer}
+
+      mkdir dependencies/common/dictionaries
+      for dict in ${builtins.concatStringsSep " " dictionaries}; do
+        for i in "$dict/share/hunspell/"*; do
+          ln -sv $i dependencies/common/dictionaries/
+        done
+      done
+
+      unzip ${mathJaxSrc} -d dependencies/common/mathjax-26
+
+      mkdir -p dependencies/common/pandoc
+      cp ${pandoc}/bin/pandoc dependencies/common/pandoc/
+
+      cp -r ${rsconnectSrc} dependencies/common/rsconnect
+      pushd dependencies/common
+      ${R}/bin/R CMD build -d --no-build-vignettes rsconnect
+      popd
+    '';
+
+  enableParallelBuilding = true;
+
+  cmakeFlags = [ "-DRSTUDIO_TARGET=Desktop" "-DQT_QMAKE_EXECUTABLE=$NIX_QT5_TMP/bin/qmake" ];
+
+  desktopItem = makeDesktopItem {
+    name = "${pname}-${version}";
+    exec = "rstudio %F";
+    icon = "rstudio";
+    desktopName = "RStudio";
+    genericName = "IDE";
+    comment = meta.description;
+    categories = "Development;";
+    mimeType = "text/x-r-source;text/x-r;text/x-R;text/x-r-doc;text/x-r-sweave;text/x-r-markdown;text/x-r-html;text/x-r-presentation;application/x-r-data;application/x-r-project;text/x-r-history;text/x-r-profile;text/x-tex;text/x-markdown;text/html;text/css;text/javascript;text/x-chdr;text/x-csrc;text/x-c++hdr;text/x-c++src;";
+  };
+
+  qtWrapperArgs = [ ''--suffix PATH : ${gnumake}/bin'' ];
+
+  postInstall = ''
+      mkdir $out/share
+      cp -r ${desktopItem}/share/applications $out/share
+      mkdir $out/share/icons
+      ln $out/rstudio.png $out/share/icons
+  '';
+
+  meta = with lib;
+    { description = "Set of integrated tools for the R language";
+      homepage = "https://www.rstudio.com/";
+      license = licenses.agpl3;
+      maintainers = with maintainers; [ ehmry changlinli ciil ];
+      platforms = platforms.linux;
+    };
+}
diff --git a/nixpkgs/pkgs/applications/editors/rstudio/r-location.patch b/nixpkgs/pkgs/applications/editors/rstudio/r-location.patch
new file mode 100644
index 000000000000..24cb6a246977
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/rstudio/r-location.patch
@@ -0,0 +1,25 @@
+diff -ur rstudio-1.1.216-old/src/cpp/core/CMakeLists.txt rstudio-1.1.216-new/src/cpp/core/CMakeLists.txt
+--- rstudio-1.1.216-old/src/cpp/core/r_util/REnvironmentPosix.cpp	2017-04-30 03:37:26.669418665 -0400
++++ rstudio-1.1.216-new/src/cpp/core/r_util/REnvironmentPosix.cpp	2017-04-30 03:36:33.590726185 -0400
+@@ -87,10 +87,7 @@
+ {
+    // define potential paths
+    std::vector<std::string> rScriptPaths;
+-   rScriptPaths.push_back("/usr/bin/R");
+-   rScriptPaths.push_back("/usr/local/bin/R");
+-   rScriptPaths.push_back("/opt/local/bin/R");
+-   rScriptPaths.push_back("/Library/Frameworks/R.framework/Resources/bin/R");
++   rScriptPaths.push_back("@R@/bin/R");
+    return scanForRScript(rScriptPaths, pErrMsg);
+ }
+ 
+@@ -226,8 +223,7 @@
+       // scan in standard locations as a fallback
+       std::string scanErrMsg;
+       std::vector<std::string> rScriptPaths;
+-      rScriptPaths.push_back("/usr/local/bin/R");
+-      rScriptPaths.push_back("/usr/bin/R");
++      rScriptPaths.push_back("@R@/bin/R");
+       FilePath scriptPath = scanForRScript(rScriptPaths, &scanErrMsg);
+       if (scriptPath.empty())
+       {
diff --git a/nixpkgs/pkgs/applications/editors/scite/default.nix b/nixpkgs/pkgs/applications/editors/scite/default.nix
new file mode 100644
index 000000000000..4e92856fee24
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/scite/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, pkgconfig, gtk2 }:
+
+stdenv.mkDerivation {
+  pname = "scite";
+  version = "4.0.5";
+
+  src = fetchurl {
+    url = "https://www.scintilla.org/scite405.tgz";
+    sha256 = "0h16wk2986nkkhhdv5g4lxlcn02qwyja24x1r6vf02r1hf46b9q2";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gtk2 ];
+  sourceRoot = "scintilla/gtk";
+
+  buildPhase = ''
+    make
+    cd ../../scite/gtk
+    make prefix=$out/
+  '';
+
+  installPhase = ''
+    make install prefix=$out/
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.scintilla.org/SciTE.html";
+    description = "SCIntilla based Text Editor";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.rszibele ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/setzer/default.nix b/nixpkgs/pkgs/applications/editors/setzer/default.nix
new file mode 100644
index 000000000000..5a0ef754db16
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/setzer/default.nix
@@ -0,0 +1,60 @@
+{ lib
+, python3
+, fetchFromGitHub
+, meson
+, ninja
+, gettext
+, appstream
+, appstream-glib
+, wrapGAppsHook
+, gobject-introspection
+, gtksourceview4
+, gspell
+, poppler_gi
+, webkitgtk
+, librsvg
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "setzer";
+  version = "0.2.8";
+
+  src = fetchFromGitHub {
+    owner = "cvfosammmm";
+    repo = "Setzer";
+    rev = "v${version}";
+    sha256 = "1llxxjj038nd2p857bjdyyhzskn56826qi259v47vaqlv9hkifil";
+  };
+
+  format = "other";
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    gettext
+    appstream # for appstreamcli
+    appstream-glib
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gobject-introspection
+    gtksourceview4
+    gspell
+    poppler_gi
+    webkitgtk
+    librsvg
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    pygobject3
+    pyxdg
+  ];
+
+  meta = with lib; {
+    description = "LaTeX editor written in Python with Gtk";
+    homepage = src.meta.homepage;
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/sigil/default.nix b/nixpkgs/pkgs/applications/editors/sigil/default.nix
new file mode 100644
index 000000000000..cbb9f7bd5b87
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/sigil/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, mkDerivation, fetchFromGitHub, cmake, pkgconfig, makeWrapper
+, boost, xercesc
+, qtbase, qttools, qtwebkit, qtxmlpatterns
+, python3, python3Packages
+}:
+
+mkDerivation rec {
+  pname = "sigil";
+  version = "0.9.14";
+
+  src = fetchFromGitHub {
+    sha256 = "0fmfbfpnmhclbbv9cbr1xnv97si6ls7331kk3ix114iqkngqwgl1";
+    rev = version;
+    repo = "Sigil";
+    owner = "Sigil-Ebook";
+  };
+
+  pythonPath = with python3Packages; [ lxml ];
+
+  nativeBuildInputs = [ cmake pkgconfig makeWrapper ];
+
+  buildInputs = [
+    boost xercesc qtbase qttools qtwebkit qtxmlpatterns
+    python3Packages.lxml ];
+
+  dontWrapQtApps = true;
+
+  preFixup = ''
+    wrapProgram "$out/bin/sigil" \
+       --prefix PYTHONPATH : $PYTHONPATH \
+       ''${qtWrapperArgs[@]}
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Free, open source, multi-platform ebook (ePub) editor";
+    homepage = "https://github.com/Sigil-Ebook/Sigil/";
+    license = licenses.gpl3;
+    # currently unmaintained
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/standardnotes/default.nix b/nixpkgs/pkgs/applications/editors/standardnotes/default.nix
new file mode 100644
index 000000000000..18d9338f9093
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/standardnotes/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, appimageTools, autoPatchelfHook, desktop-file-utils
+  , fetchurl, runtimeShell }:
+
+let
+  version = "3.3.3";
+  pname = "standardnotes";
+  name = "${pname}-${version}";
+
+  plat = {
+    i386-linux = "-i386";
+    x86_64-linux = "";
+  }.${stdenv.hostPlatform.system};
+
+  sha256 = {
+    i386-linux = "2ccdf23588b09d645811e562d4fd7e02ac0e367bf2b34e373d8470d48544036d";
+    x86_64-linux = "6366d0a37cbf2cf51008a666e40bada763dd1539173de01e093bcbe4146a6bd8";
+  }.${stdenv.hostPlatform.system};
+
+  src = fetchurl {
+    url = "https://github.com/standardnotes/desktop/releases/download/v${version}/standard-notes-${version}${plat}.AppImage";
+    inherit sha256;
+  };
+
+  appimageContents = appimageTools.extract {
+    inherit name src;
+  };
+
+  nativeBuildInputs = [ autoPatchelfHook desktop-file-utils ];
+
+in appimageTools.wrapType2 rec {
+  inherit name src;
+
+  extraInstallCommands = ''
+    # directory in /nix/store so readonly
+    cp -r  ${appimageContents}/* $out
+    cd $out
+    chmod -R +w $out
+    mv $out/bin/${name} $out/bin/${pname}
+
+    # fixup and install desktop file
+    ${desktop-file-utils}/bin/desktop-file-install --dir $out/share/applications \
+      --set-key Exec --set-value ${pname} standard-notes.desktop
+
+    rm usr/lib/* AppRun standard-notes.desktop .so*
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A simple and private notes app";
+    longDescription = ''
+      Standard Notes is a private notes app that features unmatched simplicity,
+      end-to-end encryption, powerful extensions, and open-source applications.
+    '';
+    homepage = "https://standardnotes.org";
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ mgregoire ];
+    platforms = [ "i386-linux" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/sublime/2/default.nix b/nixpkgs/pkgs/applications/editors/sublime/2/default.nix
new file mode 100644
index 000000000000..b10008d0c499
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/sublime/2/default.nix
@@ -0,0 +1,65 @@
+{ fetchurl, stdenv, glib, xorg, cairo, gtk2, makeDesktopItem }:
+let
+  libPath = stdenv.lib.makeLibraryPath [glib xorg.libX11 gtk2 cairo];
+in
+
+stdenv.mkDerivation rec {
+  name = "sublimetext-2.0.2";
+  src =
+    if stdenv.hostPlatform.system == "i686-linux" then
+      fetchurl {
+        name = "sublimetext-2.0.2.tar.bz2";
+        url = [
+          "http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2.tar.bz2"
+          "https://download.sublimetext.com/Sublime%20Text%202.0.2.tar.bz2"
+        ];
+        sha256 = "026g5mppk28lzzzn9ibykcqkrd5msfmg0sc0z8w8jd7v3h28wcq7";
+      }
+    else
+      fetchurl {
+        name = "sublimetext-2.0.2.tar.bz2";
+        url = [
+          "http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2.tar.bz2"
+          "https://download.sublimetext.com/Sublime%20Text%202.0.2%20x64.tar.bz2"
+        ];
+        sha256 = "115b71nbv9mv8cz6bkjwpbdf2ywnjc1zy2d3080f6ck4sqqfvfh1";
+      };
+  buildCommand = ''
+    tar xvf ${src}
+    mkdir -p $out/bin
+    mv Sublime* $out/sublime
+    ln -s $out/sublime/sublime_text $out/bin/sublime
+    ln -s $out/sublime/sublime_text $out/bin/sublime2
+
+    echo ${libPath}
+    patchelf \
+      --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath ${libPath}:${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"} \
+      $out/sublime/sublime_text
+
+    mkdir -p $out/share/icons
+
+    for x in $(ls $out/sublime/Icon); do
+      mkdir -p $out/share/icons/hicolor/$x/apps
+      cp -v $out/sublime/Icon/$x/* $out/share/icons/hicolor/$x/apps
+    done
+
+    ln -sv "${desktopItem}/share/applications" $out/share
+  '';
+
+  desktopItem = makeDesktopItem {
+    name = "sublime2";
+    exec = "sublime2 %F";
+    comment = meta.description;
+    desktopName = "Sublime Text";
+    genericName = "Text Editor";
+    categories = "TextEditor;Development;";
+    icon = "sublime_text";
+  };
+
+  meta = {
+    description = "Sophisticated text editor for code, markup and prose";
+    license = stdenv.lib.licenses.unfree;
+    platforms = [ "x86_64-linux" "i686-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/sublime/3/common.nix b/nixpkgs/pkgs/applications/editors/sublime/3/common.nix
new file mode 100644
index 000000000000..22c23280d17d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/sublime/3/common.nix
@@ -0,0 +1,158 @@
+{ buildVersion, x32sha256, x64sha256, dev ? false }:
+
+{ fetchurl, stdenv, xorg, glib, glibcLocales, gtk3, cairo, pango, libredirect, makeWrapper, wrapGAppsHook
+, pkexecPath ? "/run/wrappers/bin/pkexec"
+, writeScript, common-updater-scripts, curl, gnugrep
+, openssl, bzip2, bash, unzip, zip
+}:
+
+let
+  pname = "sublimetext3";
+  packageAttribute = "sublime3${stdenv.lib.optionalString dev "-dev"}";
+  binaries = [ "sublime_text" "plugin_host" "crash_reporter" ];
+  primaryBinary = "sublime_text";
+  primaryBinaryAliases = [ "subl" "sublime" "sublime3" ];
+  downloadUrl = "https://download.sublimetext.com/sublime_text_3_build_${buildVersion}_${arch}.tar.bz2";
+  versionUrl = "https://download.sublimetext.com/latest/${if dev then "dev" else "stable"}";
+  versionFile = builtins.toString ./packages.nix;
+  archSha256 =
+    if stdenv.hostPlatform.system == "i686-linux" then
+      x32sha256
+    else
+      x64sha256;
+  arch =
+    if stdenv.hostPlatform.system == "i686-linux" then
+      "x32"
+    else
+      "x64";
+
+  libPath = stdenv.lib.makeLibraryPath [ xorg.libX11 glib gtk3 cairo pango ];
+  redirects = [ "/usr/bin/pkexec=${pkexecPath}" ];
+in let
+  binaryPackage = stdenv.mkDerivation {
+    pname = "${pname}-bin";
+    version = buildVersion;
+
+    src = fetchurl {
+      url = downloadUrl;
+      sha256 = archSha256;
+    };
+
+    dontStrip = true;
+    dontPatchELF = true;
+    buildInputs = [ glib gtk3 ]; # for GSETTINGS_SCHEMAS_PATH
+    nativeBuildInputs = [ zip unzip makeWrapper wrapGAppsHook ];
+
+    # make exec.py in Default.sublime-package use own bash with an LD_PRELOAD instead of "/bin/bash"
+    patchPhase = ''
+      runHook prePatch
+
+      mkdir Default.sublime-package-fix
+      ( cd Default.sublime-package-fix
+        unzip -q ../Packages/Default.sublime-package
+        substituteInPlace "exec.py" --replace \
+          "[\"/bin/bash\"" \
+          "[\"$out/sublime_bash\""
+        zip -q ../Packages/Default.sublime-package **/*
+      )
+      rm -r Default.sublime-package-fix
+
+      runHook postPatch
+    '';
+
+    buildPhase = ''
+      runHook preBuild
+
+      for binary in ${ builtins.concatStringsSep " " binaries }; do
+        patchelf \
+          --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath ${libPath}:${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"} \
+          $binary
+      done
+
+      # Rewrite pkexec argument. Note that we cannot delete bytes in binary.
+      sed -i -e 's,/bin/cp\x00,cp\x00\x00\x00\x00\x00\x00,g' ${primaryBinary}
+
+      runHook postBuild
+    '';
+
+    installPhase = ''
+      runHook preInstall
+
+      mkdir -p $out
+      cp -r * $out/
+
+      # We can't just call /usr/bin/env bash because a relocation error occurs
+      # when trying to run a build from within Sublime Text
+      ln -s ${bash}/bin/bash $out/sublime_bash
+
+      runHook postInstall
+    '';
+
+    dontWrapGApps = true; # non-standard location, need to wrap the executables manually
+
+    postFixup = ''
+      wrapProgram $out/sublime_bash \
+        --set LD_PRELOAD "${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}/libgcc_s.so.1"
+
+      wrapProgram $out/${primaryBinary} \
+        --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
+        --set NIX_REDIRECTS ${builtins.concatStringsSep ":" redirects} \
+        --set LOCALE_ARCHIVE "${glibcLocales.out}/lib/locale/locale-archive" \
+        "''${gappsWrapperArgs[@]}"
+
+      # Without this, plugin_host crashes, even though it has the rpath
+      wrapProgram $out/plugin_host --prefix LD_PRELOAD : ${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}/libgcc_s.so.1:${openssl.out}/lib/libssl.so:${bzip2.out}/lib/libbz2.so
+    '';
+  };
+in stdenv.mkDerivation (rec {
+  inherit pname;
+  version = buildVersion;
+
+  phases = [ "installPhase" ];
+
+  ${primaryBinary} = binaryPackage;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    makeWrapper "''$${primaryBinary}/${primaryBinary}" "$out/bin/${primaryBinary}"
+  '' + builtins.concatStringsSep "" (map (binaryAlias: "ln -s $out/bin/${primaryBinary} $out/bin/${binaryAlias}\n") primaryBinaryAliases) + ''
+    mkdir -p "$out/share/applications"
+    substitute "''$${primaryBinary}/${primaryBinary}.desktop" "$out/share/applications/${primaryBinary}.desktop" --replace "/opt/${primaryBinary}/${primaryBinary}" "$out/bin/${primaryBinary}"
+    for directory in ''$${primaryBinary}/Icon/*; do
+      size=$(basename $directory)
+      mkdir -p "$out/share/icons/hicolor/$size/apps"
+      ln -s ''$${primaryBinary}/Icon/$size/* $out/share/icons/hicolor/$size/apps
+    done
+  '';
+
+  passthru.updateScript = writeScript "${pname}-update-script" ''
+    #!${stdenv.shell}
+    set -o errexit
+    PATH=${stdenv.lib.makeBinPath [ common-updater-scripts curl gnugrep ]}
+
+    latestVersion=$(curl -s ${versionUrl})
+
+    if [[ "${buildVersion}" = "$latestVersion" ]]; then
+        echo "The new version same as the old version."
+        exit 0
+    fi
+
+    for platform in ${stdenv.lib.concatStringsSep " " meta.platforms}; do
+        # The script will not perform an update when the version attribute is up to date from previous platform run
+        # We need to clear it before each run
+        update-source-version ${packageAttribute}.${primaryBinary} 0 0000000000000000000000000000000000000000000000000000000000000000 --file=${versionFile} --version-key=buildVersion --system=$platform
+        update-source-version ${packageAttribute}.${primaryBinary} $latestVersion --file=${versionFile} --version-key=buildVersion --system=$platform
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Sophisticated text editor for code, markup and prose";
+    homepage = "https://www.sublimetext.com/";
+    maintainers = with maintainers; [ jtojnar wmertens demin-dmitriy zimbatm ];
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" "i686-linux" ];
+  };
+})
diff --git a/nixpkgs/pkgs/applications/editors/sublime/3/packages.nix b/nixpkgs/pkgs/applications/editors/sublime/3/packages.nix
new file mode 100644
index 000000000000..d72966e04401
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/sublime/3/packages.nix
@@ -0,0 +1,19 @@
+{ callPackage }:
+
+let
+  common = opts: callPackage (import ./common.nix opts);
+in
+  {
+    sublime3-dev = common {
+      buildVersion = "3210";
+      dev = true;
+      x32sha256 = "1ngr4c8h2mafy96mi8dd3g8mg5r9ha1cpcd8p3gz7jwpbypvkkbv";
+      x64sha256 = "0j65a4ylgga1qzc74wf3k5craghahma8hwqg3zs1rgzz601nl693";
+    } {};
+
+    sublime3 = common {
+      buildVersion = "3211";
+      x32sha256 = "0w9hba1nl2hv1mri418n7v0m321b6wqphb1knll23ldv5fb0j1j8";
+      x64sha256 = "1vkldmimyjhbgplcd6r27gvk64rr7cparfd44hy6qdyzwsjqqg0b";
+    } {};
+  }
diff --git a/nixpkgs/pkgs/applications/editors/supertux-editor/default.nix b/nixpkgs/pkgs/applications/editors/supertux-editor/default.nix
new file mode 100644
index 000000000000..dc18bd694c69
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/supertux-editor/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub, mono, gtk-sharp-2_0, pkgconfig, makeWrapper, gnome2, gtk2 }:
+stdenv.mkDerivation {
+  version = "git-2014-08-20";
+  pname = "supertux-editor";
+
+  src = fetchFromGitHub {
+    owner = "SuperTux";
+    repo = "supertux-editor";
+    rev = "0c666e8ccc7daf9e9720fe79abd63f8fa979c5e5";
+    sha256 = "08y5haclgxvcii3hpdvn1ah8qd0f3n8xgxxs8zryj02b8n7cz3vx";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [mono gtk-sharp-2_0 makeWrapper gnome2.libglade gtk2 ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/lib/supertux-editor
+    cp *.{dll,dll.config,exe} $out/lib/supertux-editor
+    makeWrapper "${mono}/bin/mono" $out/bin/supertux-editor \
+      --add-flags "$out/lib/supertux-editor/supertux-editor.exe" \
+      --prefix MONO_GAC_PREFIX : ${gtk-sharp-2_0} \
+      --suffix LD_LIBRARY_PATH : $(echo $NIX_LDFLAGS | sed 's/ -L/:/g;s/ -rpath /:/g;s/-rpath //')
+
+    makeWrapper "${mono}/bin/mono" $out/bin/supertux-editor-debug \
+      --add-flags "--debug $out/lib/supertux-editor/supertux-editor.exe" \
+      --prefix MONO_GAC_PREFIX : ${gtk-sharp-2_0} \
+      --suffix LD_LIBRARY_PATH : $(echo $NIX_LDFLAGS | sed 's/ -L/:/g;s/ -rpath /:/g;s/-rpath //')
+  '';
+
+  # Always needed on Mono, otherwise nothing runs
+  dontStrip = true;
+
+  meta = with stdenv.lib; {
+    description = "Level editor for SuperTux";
+    homepage = "https://github.com/SuperTux/supertux-editor";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ mathnerd314 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/tecoc/default.nix b/nixpkgs/pkgs/applications/editors/tecoc/default.nix
new file mode 100644
index 000000000000..3df13260d51f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/tecoc/default.nix
@@ -0,0 +1,63 @@
+{ stdenv, fetchFromGitHub
+, ncurses }:
+
+stdenv.mkDerivation rec {
+
+  pname = "tecoc-git";
+  version = "20150606";
+
+  src = fetchFromGitHub {
+    owner = "blakemcbride";
+    repo = "TECOC";
+    rev = "d7dffdeb1dfb812e579d6d3b518545b23e1b50cb";
+    sha256 = "11zfa73dlx71c0hmjz5n3wqcvk6082rpb4sss877nfiayisc0njj";
+  };
+
+  buildInputs = [ ncurses ];
+
+  makefile = if stdenv.hostPlatform.isDarwin
+  	     then "makefile.osx"
+	     else if stdenv.hostPlatform.isFreeBSD
+  	     then "makefile.bsd"
+  	     else if stdenv.hostPlatform.isOpenBSD
+  	     then "makefile.bsd"
+  	     else if stdenv.hostPlatform.isWindows
+  	     then "makefile.win"
+	     else "makefile.linux"; # I think Linux is a safe default...
+
+  makeFlags = [ "CC=${stdenv.cc}/bin/cc" "-C src/" ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/doc/${pname}-${version} $out/lib/teco/macros
+    cp src/tecoc $out/bin
+    cp src/aaout.txt doc/* $out/share/doc/${pname}-${version}
+    cp lib/* lib2/* $out/lib/teco/macros
+    (cd $out/bin
+     ln -s tecoc Make
+     ln -s tecoc mung
+     ln -s tecoc teco
+     ln -s tecoc Inspect )
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A clone of the good old TECO editor";
+    longDescription = ''
+      For those who don't know: TECO is the acronym of Tape Editor and COrrector
+      (because it was a paper tape edition tool in its debut days). Now the
+      acronym follows after Text Editor and Corrector, or Text Editor
+      Character-Oriented.
+
+      TECO is a character-oriented text editor, originally developed by Dan
+      Murphy at MIT circa 1962. It is also a Turing-complete imperative
+      interpreted programming language for text manipulation, done via
+      user-loaded sets of macros. In fact, the venerable Emacs was born as a set
+      of Editor MACroS for TECO.
+
+      TECOC is a portable C implementation of TECO-11.
+ '';
+    homepage = "https://github.com/blakemcbride/TECOC";
+    license = {  url = "https://github.com/blakemcbride/TECOC/tree/master/doc/readme-1st.txt"; };
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/texmacs/common.nix b/nixpkgs/pkgs/applications/editors/texmacs/common.nix
new file mode 100644
index 000000000000..9479295e7471
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/texmacs/common.nix
@@ -0,0 +1,68 @@
+{ stdenv, fetchurl, tex, extraFonts, chineseFonts, japaneseFonts, koreanFonts }:
+rec {
+  extraFontsSrc = fetchurl {
+    url = "ftp://ftp.texmacs.org/pub/TeXmacs/fonts/TeXmacs-extra-fonts-1.0-noarch.tar.gz";
+    sha256 = "0hylgjmd95y9yahbblmawkkw0i71vb145xxv2xqrmff81301n6k7";
+  };
+
+  fullFontsSrc = fetchurl {
+    url = "ftp://ftp.texmacs.org/pub/TeXmacs/fonts/TeXmacs-windows-fonts-1.0-noarch.tar.gz";
+    sha256 = "1yxzjpqpm7kvx0ly5jmfpzlfhsh41b0ibn1v84qv6xy73r2vis2f";
+  };
+
+  chineseFontsSrc = fetchurl {
+    url = "ftp://ftp.texmacs.org/pub/TeXmacs/fonts/TeXmacs-chinese-fonts.tar.gz";
+    sha256 = "0yprqjsx5mfsaxr525mcm3xqwcadzxp14njm38ir1325baada2fp";
+  };
+
+  japaneseFontsSrc = fetchurl {
+    url = "ftp://ftp.texmacs.org/pub/TeXmacs/fonts/TeXmacs-japanese-fonts.tar.gz";
+    sha256 = "1dn6zvsa7gk59d61xicwpbapab3rm6kz48rp5w1bhmihxixw21jn";
+  };
+
+  koreanFontsSrc = fetchurl {
+    url = "ftp://ftp.texmacs.org/pub/TeXmacs/fonts/TeXmacs-korean-fonts.tar.gz";
+    sha256 = "07axg57mqm3jbnm4lawx0h3r2h56xv9acwzjppryfklw4c27f5hh";
+  };
+
+  postPatch = (if tex == null then ''
+    gunzip < ${fullFontsSrc} | (cd TeXmacs && tar xvf -)
+   '' else if extraFonts then ''
+    gunzip < ${extraFontsSrc} | (cd TeXmacs && tar xvf -)
+   '' else "") +
+   (if chineseFonts then ''
+    gunzip < ${chineseFontsSrc} | (cd TeXmacs && tar xvf -)
+   '' else "") +
+   (if japaneseFonts then ''
+    gunzip < ${japaneseFontsSrc} | (cd TeXmacs && tar xvf -)
+   '' else "") +
+   (if koreanFonts then ''
+    gunzip < ${koreanFontsSrc} | (cd TeXmacs && tar xvf -)
+   '' else "");
+
+
+  meta = {
+    description = "WYSIWYW editing platform with special features for scientists";
+    longDescription =
+    '' GNU TeXmacs is a free wysiwyw (what you see is what you want)
+    editing platform with special features for scientists.  The software
+    aims to provide a unified and user friendly framework for editing
+    structured documents with different types of content (text,
+    graphics, mathematics, interactive content, etc.).  The rendering
+    engine uses high-quality typesetting algorithms so as to produce
+    professionally looking documents, which can either be printed out or
+    presented from a laptop.
+
+    The software includes a text editor with support for mathematical
+    formulas, a small technical picture editor and a tool for making
+    presentations from a laptop.  Moreover, TeXmacs can be used as an
+    interface for many external systems for computer algebra, numerical
+    analysis, statistics, etc.  New presentation styles can be written
+    by the user and new features can be added to the editor using the
+    Scheme extension language.  A native spreadsheet and tools for
+    collaborative authoring are planned for later.
+  '';
+    homepage = "http://texmacs.org/";
+    license = stdenv.lib.licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/texmacs/darwin.nix b/nixpkgs/pkgs/applications/editors/texmacs/darwin.nix
new file mode 100644
index 000000000000..a5117f3a6786
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/texmacs/darwin.nix
@@ -0,0 +1,60 @@
+{ stdenv, callPackage, fetchurl,
+  guile_1_8, qt4, zlib, freetype, CoreFoundation, Cocoa, gettext, libiconv, ghostscript,
+  tex ? null,
+  aspell ? null,
+  netpbm ? null,
+  imagemagick ? null,
+  extraFonts ? false,
+  chineseFonts ? false,
+  japaneseFonts ? false,
+  koreanFonts ? false }:
+let
+  version = "1.99.4";
+  common = callPackage ./common.nix {
+    inherit tex extraFonts chineseFonts japaneseFonts koreanFonts;
+  };
+in
+stdenv.mkDerivation {
+  pname = "TeXmacs";
+  inherit version;
+
+  src= fetchurl {
+    url = "http://www.texmacs.org/Download/ftp/tmftp/source/TeXmacs-${version}-src.tar.gz";
+    sha256 = "1z8sj0xd1ncbl7ipzfsib6lmc7ahgvmiw61ln5zxm2l88jf7qc1a";
+  };
+
+  patches = [ ./darwin.patch ];
+
+  buildInputs = [ guile_1_8.dev qt4 freetype CoreFoundation Cocoa gettext libiconv ghostscript ];
+
+  GUILE_CPPFLAGS="-D_THREAD_SAFE -I${guile_1_8.dev}/include -I${guile_1_8.dev}/include/guile ";
+
+  NIX_LDFLAGS="${zlib}/lib/libz.dylib";
+
+  buildPhase = ''
+    substituteInPlace Makefile \
+      --replace 'find -d $(MACOS_PACKAGE_TEXMACS)' 'find $(MACOS_PACKAGE_TEXMACS) -depth' \
+      --replace '$(MACOS_PACKAGE_SRC)/bundle-libs.sh' 'true'
+    make MACOS_BUNDLE
+  '';
+
+  installPhase = ''
+    mkdir -p $out/Applications
+    cp -R ../distr/TeXmacs-${version}.app $out/Applications
+  '';
+
+  inherit (common) postPatch;
+
+  postInstall = "wrapProgram $out/Applications/TeXmacs-${version}/Contents/MacOS/TeXmacs --suffix PATH : " +
+    "${ghostscript}/bin:" +
+    (if aspell == null then "" else "${aspell}/bin:") +
+    (if tex == null then "" else "${tex}/bin:") +
+    (if netpbm == null then "" else "${stdenv.lib.getBin netpbm}/bin:") +
+    (if imagemagick == null then "" else "${imagemagick}/bin:");
+
+  enableParallelBuilding = true;
+
+  meta = common.meta // {
+    platforms = stdenv.lib.platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/texmacs/darwin.patch b/nixpkgs/pkgs/applications/editors/texmacs/darwin.patch
new file mode 100644
index 000000000000..2cb33fbbef30
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/texmacs/darwin.patch
@@ -0,0 +1,29 @@
+--- a/configure
++++ b/configure
+@@ -7461,7 +7461,7 @@ $as_echo "final adjustments for cygwin host" >&6; }
+     CONFIG_QTPIPES="yes"
+     CONFIG_CXXFLAGS="-I${prefix}/include"
+     CONFIG_BSHARED=""
+-    CONFIG_BFLAGS="-framework Cocoa -framework IOKit"
++    CONFIG_BFLAGS="-framework Cocoa -framework IOKit -framework CoreFoundation"
+     CONFIG_BPATH=""
+     CONFIG_SO="dylib"
+     CONFIG_LIB_PATH="DYLD_LIBRARY_PATH"
+@@ -8281,6 +8281,7 @@ _ASEOF
+   if $QMAKE ${additional_qmake_flags} ; then :; else
+     as_fn_error $? "Calling $QMAKE failed." "$LINENO" 5
+   fi
++  echo "QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.10" >> $pro_file
+   # Try to compile a simple Qt app.
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can build a simple Qt app" >&5
+ $as_echo_n "checking whether we can build a simple Qt app... " >&6; }
+--- a/src/Plugins/Unix/unix_sys_utils.cpp
++++ b/src/Plugins/Unix/unix_sys_utils.cpp
+@@ -17,6 +17,7 @@
+ #include <spawn.h>
+ #include <unistd.h>
+ #include <sys/wait.h>
++#include <pthread.h>
+ 
+ // for thread safe strings
+ #include <string>
diff --git a/nixpkgs/pkgs/applications/editors/texmacs/default.nix b/nixpkgs/pkgs/applications/editors/texmacs/default.nix
new file mode 100644
index 000000000000..91e2427a6c84
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/texmacs/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, callPackage,
+  fetchurl, guile_1_8, qt4, xmodmap, which, makeWrapper, freetype,
+  libjpeg,
+  sqlite,
+  tex ? null,
+  aspell ? null,
+  git ? null,
+  python3 ? null,
+  cmake,
+  pkgconfig,
+  ghostscriptX ? null,
+  extraFonts ? false,
+  chineseFonts ? false,
+  japaneseFonts ? false,
+  koreanFonts ? false }:
+
+let
+  pname = "TeXmacs";
+  version = "1.99.11";
+  common = callPackage ./common.nix {
+    inherit tex extraFonts chineseFonts japaneseFonts koreanFonts;
+  };
+in
+stdenv.mkDerivation {
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "https://www.texmacs.org/Download/ftp/tmftp/source/TeXmacs-${version}-src.tar.gz";
+    sha256 = "12bp0f34izzqimz49lfpgf4lyz3h45s9xbmk8v6zsawdjki76alg";
+  };
+
+  cmakeFlags = [
+    # Texmacs' cmake build as of writing defaults to Qt5,
+    # but we haven't updated to that yet.
+    "-DTEXMACS_GUI=Qt4"
+  ];
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [
+    guile_1_8
+    qt4
+    makeWrapper
+    ghostscriptX
+    freetype
+    libjpeg
+    sqlite
+    git
+    python3
+  ];
+  NIX_LDFLAGS = "-lz";
+
+  postInstall = "wrapProgram $out/bin/texmacs --suffix PATH : " +
+        (if ghostscriptX == null then "" else "${ghostscriptX}/bin:") +
+        (if aspell == null then "" else "${aspell}/bin:") +
+        (if tex == null then "" else "${tex}/bin:") +
+        (if git == null then "" else "${git}/bin:") +
+        (if python3 == null then "" else "${python3}/bin:") +
+        "${xmodmap}/bin:${which}/bin";
+
+  inherit (common) postPatch;
+
+  meta = common.meta // {
+    maintainers = [ stdenv.lib.maintainers.roconnor ];
+    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux;  # arbitrary choice
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/texmaker/default.nix b/nixpkgs/pkgs/applications/editors/texmaker/default.nix
new file mode 100644
index 000000000000..0b78ff54c358
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/texmaker/default.nix
@@ -0,0 +1,36 @@
+{ lib, mkDerivation, fetchurl, qtbase, qtscript, qmake, zlib, pkgconfig, poppler }:
+
+mkDerivation rec {
+  pname = "texmaker";
+  version = "5.0.4";
+
+  src = fetchurl {
+    url = "http://www.xm1math.net/texmaker/${pname}-${version}.tar.bz2";
+    sha256 = "1qnh5g8zkjpjmw2l8spcynpfgs3wpcfcla5ms2kkgvkbdlzspqqx";
+  };
+
+  buildInputs = [ qtbase qtscript poppler zlib ];
+  nativeBuildInputs = [ pkgconfig poppler qmake ];
+  NIX_CFLAGS_COMPILE="-I${poppler.dev}/include/poppler";
+
+  qmakeFlags = [
+    "DESKTOPDIR=${placeholder "out"}/share/applications"
+    "ICONDIR=${placeholder "out"}/share/pixmaps"
+    "METAINFODIR=${placeholder "out"}/share/metainfo"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "TeX and LaTeX editor";
+    longDescription=''
+	This editor is a full fledged IDE for TeX and
+	LaTeX editing with completion, structure viewer, preview,
+	spell checking and support of any compilation chain.
+	'';
+    homepage = "http://www.xm1math.net/texmaker/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ cfouche markuskowa ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/texstudio/default.nix b/nixpkgs/pkgs/applications/editors/texstudio/default.nix
new file mode 100644
index 000000000000..94837023ca0d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/texstudio/default.nix
@@ -0,0 +1,32 @@
+{ lib, mkDerivation, fetchFromGitHub, qmake, qtbase, qtscript, qtsvg,
+  wrapQtAppsHook, poppler, zlib, pkgconfig }:
+
+mkDerivation rec {
+  pname = "texstudio";
+  version = "2.12.22";
+
+  src = fetchFromGitHub {
+    owner = "${pname}-org";
+    repo = pname;
+    rev = version;
+    sha256 = "037jvsfln8wav17qj9anxz2a7p51v7ky85wmhdj2hgwp40al651g";
+  };
+
+  nativeBuildInputs = [ qmake wrapQtAppsHook pkgconfig ];
+  buildInputs = [ qtbase qtscript qtsvg poppler zlib ];
+
+  qmakeFlags = [ "NO_APPDATA=True" ];
+
+  meta = with lib; {
+    description = "TeX and LaTeX editor";
+    longDescription=''
+      Fork of TeXMaker, this editor is a full fledged IDE for
+      LaTeX editing with completion, structure viewer, preview,
+      spell checking and support of any compilation chain.
+    '';
+    homepage = "http://texstudio.sourceforge.net";
+    license = licenses.gpl2Plus;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ ajs124 cfouche ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/textadept/default.nix b/nixpkgs/pkgs/applications/editors/textadept/default.nix
new file mode 100644
index 000000000000..bb771c89010b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/textadept/default.nix
@@ -0,0 +1,49 @@
+{ lib, stdenv, fetchhg, fetchurl, gtk2, glib, pkgconfig, unzip, ncurses, zip }:
+stdenv.mkDerivation rec {
+  version = "10.2";
+  pname = "textadept";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    gtk2 ncurses glib unzip zip
+  ];
+
+  src = fetchhg {
+    url = "http://foicica.com/hg/textadept";
+    rev = "textadept_${version}";
+    sha256 = "0fai8xqddkkprmbf0cf8wwgv7ccfdb1iyim30nppm2m16whkc8fl";
+  };
+
+  preConfigure =
+    lib.concatStringsSep "\n" (lib.mapAttrsToList (name: params:
+      "ln -s ${fetchurl params} $PWD/src/${name}"
+    ) (import ./deps.nix)) + ''
+
+    # work around trying to download stuff in `make deps`
+    function wget() { true; }
+    export -f wget
+
+    cd src
+    make deps
+  '';
+
+  postBuild = ''
+    make curses
+  '';
+
+  postInstall = ''
+    make curses install PREFIX=$out MAKECMDGOALS=curses
+  '';
+
+  makeFlags = [
+    "PREFIX=$(out)"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "An extensible text editor based on Scintilla with Lua scripting";
+    homepage = "http://foicica.com/textadept";
+    license = licenses.mit;
+    maintainers = with maintainers; [ raskin mirrexagon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/textadept/deps.nix b/nixpkgs/pkgs/applications/editors/textadept/deps.nix
new file mode 100644
index 000000000000..80306191ff12
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/textadept/deps.nix
@@ -0,0 +1,42 @@
+{
+    "542782a4df7d.zip" = {
+      url = "http://foicica.com/hg/scintilla/archive/542782a4df7d.zip";
+      sha256 = "1qwxxcj86z9y7ij05j60lcp1awy2c9ck0vnn9z6c732sqjza0zx5";
+    };
+    "lua-5.3.5.tar.gz" = {
+      url = "http://www.lua.org/ftp/lua-5.3.5.tar.gz";
+      sha256 = "1b2qn2rv96nmbm6zab4l877bd4zq7wpwm8drwjiy2ih4jqzysbhc";
+    };
+    "lpeg-1.0.0.tar.gz" = {
+      url = "http://www.inf.puc-rio.br/~roberto/lpeg/lpeg-1.0.0.tar.gz";
+      sha256 = "13mz18s359wlkwm9d9iqlyyrrwjc6iqfpa99ai0icam2b3khl68h";
+    };
+    "v_1_6_3.zip" = {
+      url = "https://github.com/keplerproject/luafilesystem/archive/v_1_6_3.zip";
+      sha256 = "044s125im2irb4i42nnc5shvjj25fp4vsdbzd6b0va5igj0f6h4y";
+    };
+    "6435a42450c7.zip" = {
+      url = "http://foicica.com/hg/gtdialog/archive/6435a42450c7.zip";
+      sha256 = "1vxn89sif3qccksb6x5iprysqhjg69g7nyxlgrg31q397dmsg1ym";
+    };
+    "cdk-5.0-20150928.tgz" = {
+      url = "http://invisible-mirror.net/archives/cdk/cdk-5.0-20150928.tgz";
+      sha256 = "0j74l874y33i26y5kjg3pf1vswyjif8k93pqhi0iqykpbxfsg382";
+    };
+    "libtermkey-0.20.tar.gz" = {
+      url = "http://www.leonerd.org.uk/code/libtermkey/libtermkey-0.20.tar.gz";
+      sha256 = "1xfj6lchhfljmbcl6dz8dpakppyy13nbl4ykxiv5x4dr9b4qf3bc";
+    };
+    "pdcurs36.zip" = {
+      url = "http://prdownloads.sourceforge.net/pdcurses/pdcurs36.zip";
+      sha256 = "0y91zpygrxms7d1l5ksrz42bkvq8jd2xqlj5j7wgyxcl58chcw9b";
+    };
+    "bombay.zip" = {
+      url = "http://foicica.com/hg/bombay/archive/b25520cc76bb.zip";
+      sha256 = "07spq7jmkfyq20gv67yffara3ln3ns2xi0k02m2mxdms3xm1q36h";
+    };
+    "cloc-1.60.pl" = {
+      url = "http://prdownloads.sourceforge.net/cloc/cloc-1.60.pl";
+      sha256 = "0p504bi19va3dh274v7lb7giqrydwa5yyry60f7jpz84y6z71a2a";
+    };
+}
diff --git a/nixpkgs/pkgs/applications/editors/texworks/default.nix b/nixpkgs/pkgs/applications/editors/texworks/default.nix
new file mode 100644
index 000000000000..d0347bcb37c6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/texworks/default.nix
@@ -0,0 +1,32 @@
+{ mkDerivation, lib, fetchFromGitHub, cmake, pkg-config
+, qtscript, poppler, hunspell
+, withLua ? true, lua
+, withPython ? true, python3 }:
+
+mkDerivation rec {
+  pname = "texworks";
+  version = "0.6.5";
+
+  src = fetchFromGitHub {
+    owner = "TeXworks";
+    repo = "texworks";
+    rev = "release-${version}";
+    sha256 = "1lw1p4iyzxypvjhnav11g6rwf6gx7kyzwy2iprvv8zzpqcdkjp2z";
+  };
+
+  nativeBuildInputs = [ cmake pkg-config ];
+  buildInputs = [ qtscript poppler hunspell ]
+                ++ lib.optional withLua lua
+                ++ lib.optional withPython python3;
+
+  cmakeFlags = lib.optional withLua "-DWITH_LUA=ON"
+               ++ lib.optional withPython "-DWITH_PYTHON=ON";
+
+  meta = with lib; {
+    description = "Simple TeX front-end program inspired by TeXShop";
+    homepage = "http://www.tug.org/texworks/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ dotlambda ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/thonny/default.nix b/nixpkgs/pkgs/applications/editors/thonny/default.nix
new file mode 100644
index 000000000000..706d3fd71763
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/thonny/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchFromGitHub, python3 }:
+
+with python3.pkgs;
+
+buildPythonApplication rec {
+  pname = "thonny";
+  version = "3.2.7";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0gzvdgg5l4j0wgkh7lp4wjabrpxvvs5m7mnpszqixxijdffjd4cj";
+  };
+
+  propagatedBuildInputs = with python3.pkgs; [
+    jedi
+    pyserial
+    tkinter
+    docutils
+    pylint
+    mypy
+    pyperclip
+    asttokens
+    send2trash
+  ];
+
+  preInstall = ''
+    export HOME=$(mktemp -d)
+  '';
+
+  preFixup = ''
+    wrapProgram "$out/bin/thonny" \
+       --prefix PYTHONPATH : $PYTHONPATH:$(toPythonPath ${python3.pkgs.jedi})
+  '';
+
+  # Tests need a DISPLAY
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Python IDE for beginners";
+    longDescription = ''
+      Thonny is a Python IDE for beginners. It supports different ways
+      of stepping through the code, step-by-step expression
+      evaluation, detailed visualization of the call stack and a mode
+      for explaining the concepts of references and heap.
+    '';
+    homepage = "https://www.thonny.org/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ leenaars ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/tiled/default.nix b/nixpkgs/pkgs/applications/editors/tiled/default.nix
new file mode 100644
index 000000000000..07a8e7619b1a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/tiled/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, qmake
+, python, qtbase, qttools }:
+
+mkDerivation rec {
+  pname = "tiled";
+  version = "1.3.5";
+
+  src = fetchFromGitHub {
+    owner = "bjorn";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0d1bs909vga1k494xnggq1mcjfxjrwa4acc0mj5rv73xqkc9mb2s";
+  };
+
+  nativeBuildInputs = [ pkgconfig qmake ];
+  buildInputs = [ python qtbase qttools ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Free, easy to use and flexible tile map editor";
+    homepage = "https://www.mapeditor.org/";
+    license = with licenses; [
+      bsd2	# libtiled and tmxviewer
+      gpl2Plus	# all the rest
+    ];
+    maintainers = with maintainers; [ dywedir ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/tweak/default.nix b/nixpkgs/pkgs/applications/editors/tweak/default.nix
new file mode 100644
index 000000000000..3dc7d04ede38
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/tweak/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "tweak";
+  version = "3.02";
+
+  src = fetchurl {
+    url = "https://www.chiark.greenend.org.uk/~sgtatham/tweak/${pname}-${version}.tar.gz";
+    sha256 = "06js54pr5hwpwyxj77zs5s40n5aqvaw48dkj7rid2d47pyqijk2v";
+  };
+
+  buildInputs = [ ncurses ];
+  preBuild = "substituteInPlace Makefile --replace '$(DESTDIR)/usr/local' $out";
+
+  meta = with stdenv.lib; {
+    description = "An efficient hex editor";
+    homepage = "http://www.chiark.greenend.org.uk/~sgtatham/tweak";
+    license = licenses.mit;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/typora/default.nix b/nixpkgs/pkgs/applications/editors/typora/default.nix
new file mode 100644
index 000000000000..583229eb8684
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/typora/default.nix
@@ -0,0 +1,68 @@
+{ stdenv
+, lib
+, fetchurl
+, makeWrapper
+, electron_5
+, dpkg
+, gtk3
+, glib
+, gsettings-desktop-schemas
+, wrapGAppsHook
+, withPandoc ? false
+, pandoc
+}:
+
+stdenv.mkDerivation rec {
+  pname = "typora";
+  version = "0.9.73";
+
+  src = fetchurl {
+    url = "https://www.typora.io/linux/typora_${version}_amd64.deb";
+    sha256 = "1fgcb4bx5pw8ah5j30d38gw7qi1cmqarfhvgdns9f2n0d57bvvw3";
+  };
+
+  nativeBuildInputs = [
+    dpkg
+    makeWrapper
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gsettings-desktop-schemas
+    gtk3
+  ];
+
+  unpackPhase = "dpkg-deb -x $src .";
+
+  dontWrapGApps = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin $out/share
+    {
+      cd usr
+      mv share/typora/resources/app $out/share/typora
+      mv share/{applications,icons,doc} $out/share/
+    }
+
+    runHook postInstall
+  '';
+
+  postFixup = ''
+    makeWrapper ${electron_5}/bin/electron $out/bin/typora \
+      --add-flags $out/share/typora \
+      "''${gappsWrapperArgs[@]}" \
+      ${lib.optionalString withPandoc ''--prefix PATH : "${lib.makeBinPath [ pandoc ]}"''} \
+      --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ stdenv.cc.cc ]}"
+  '';
+
+  meta = with lib; {
+    description = "A minimal Markdown reading & writing app";
+    homepage = "https://typora.io";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ jensbin ];
+    platforms = [ "x86_64-linux"];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/uemacs/default.nix b/nixpkgs/pkgs/applications/editors/uemacs/default.nix
new file mode 100644
index 000000000000..e14a07eb6835
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/uemacs/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchgit, ncurses }:
+
+stdenv.mkDerivation {
+  pname = "uemacs";
+  version = "2014-12-08";
+
+  src = fetchgit {
+    url = "git://git.kernel.org/pub/scm/editors/uemacs/uemacs.git";
+    rev = "8841922689769960fa074fbb053cb8507f2f3ed9";
+    sha256 = "14yq7kpkax111cg6k7i3mnqk7sq7a65krq6qizzj7vvnm7bsj3sd";
+  };
+
+  postPatch = ''
+    substituteInPlace Makefile \
+      --replace "-lcurses" "-lncurses" \
+      --replace "CFLAGS=-O2" "CFLAGS+=" \
+      --replace "BINDIR=/usr/bin" "BINDIR=$out/bin" \
+      --replace "LIBDIR=/usr/lib" "LIBDIR=$out/share/uemacs"
+    substituteInPlace epath.h \
+      --replace "/usr/global/lib/" "$out/share/uemacs/" \
+      --replace "/usr/local/bin/" "$out/bin/" \
+      --replace "/usr/local/lib/" "$out/share/uemacs/" \
+      --replace "/usr/local/" "$out/bin/" \
+      --replace "/usr/lib/" "$out/share/uemacs/"
+    mkdir -p $out/bin $out/share/uemacs
+  '';
+
+  buildInputs = [ ncurses ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://git.kernel.org/cgit/editors/uemacs/uemacs.git";
+    description = "Torvalds Micro-emacs fork";
+    longDescription = ''
+      uEmacs/PK 4.0 is a full screen editor based on MicroEMACS 3.9e
+    '';
+    license = licenses.unfree;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/vbindiff/default.nix b/nixpkgs/pkgs/applications/editors/vbindiff/default.nix
new file mode 100644
index 000000000000..110b7caaf81a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/vbindiff/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "vbindiff";
+  version = "3.0_beta5";
+
+  buildInputs = [ ncurses ];
+
+  src = fetchurl {
+    url = "https://www.cjmweb.net/vbindiff/${pname}-${version}.tar.gz";
+    sha256 = "1f1kj4jki08bnrwpzi663mjfkrx4wnfpzdfwd2qgijlkx5ysjkgh";
+  };
+
+  meta = {
+    description = "A terminal visual binary diff viewer";
+    homepage = "https://www.cjmweb.net/vbindiff/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/vim/cflags-prune.diff b/nixpkgs/pkgs/applications/editors/vim/cflags-prune.diff
new file mode 100644
index 000000000000..6bec4fec09ef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/vim/cflags-prune.diff
@@ -0,0 +1,15 @@
+diff --git a/src/Makefile b/src/Makefile
+index 864f54b..fd85f76 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -2806,8 +2806,8 @@ auto/pathdef.c: Makefile auto/config.mk
+ 	-@echo '#include "vim.h"' >> $@
+ 	-@echo 'char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)";' | $(QUOTESED) >> $@
+ 	-@echo 'char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)";' | $(QUOTESED) >> $@
+-	-@echo 'char_u *all_cflags = (char_u *)"$(CC) -c -I$(srcdir) $(ALL_CFLAGS)";' | $(QUOTESED) >>  $@
+-	-@echo 'char_u *all_lflags = (char_u *)"$(CC) $(ALL_LIB_DIRS) $(LDFLAGS) -o $(VIMTARGET) $(ALL_LIBS) ";' | $(QUOTESED) >>  $@
++	-@echo 'char_u *all_cflags = (char_u *)"see nix-store --read-log $(out)";' | $(QUOTESED) >>  $@
++	-@echo 'char_u *all_lflags = (char_u *)"see nix-store --read-log $(out)";' | $(QUOTESED) >>  $@
+ 	-@echo 'char_u *compiled_user = (char_u *)"' | tr -d $(NL) >> $@
+ 	-@if test -n "$(COMPILEDBY)"; then \
+ 		echo "$(COMPILEDBY)" | tr -d $(NL) >> $@; \
diff --git a/nixpkgs/pkgs/applications/editors/vim/common.nix b/nixpkgs/pkgs/applications/editors/vim/common.nix
new file mode 100644
index 000000000000..47e71e2da4d1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/vim/common.nix
@@ -0,0 +1,30 @@
+{ lib, fetchFromGitHub }:
+rec {
+  version = "8.2.0701";
+
+  src = fetchFromGitHub {
+    owner = "vim";
+    repo = "vim";
+    rev = "v${version}";
+    sha256 = "1cbh2nhbvhp4kclc9fd8gqij2vi11c5zwdwn1nzg805k06hwmsrp";
+  };
+
+  enableParallelBuilding = true;
+
+  hardeningDisable = [ "fortify" ];
+
+  postPatch =
+    # Use man from $PATH; escape sequences are still problematic.
+    ''
+      substituteInPlace runtime/ftplugin/man.vim \
+        --replace "/usr/bin/man " "man "
+    '';
+
+  meta = with lib; {
+    description = "The most popular clone of the VI editor";
+    homepage    = "http://www.vim.org";
+    license     = licenses.vim;
+    maintainers = with maintainers; [ lovek323 equirosa ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/vim/configurable.nix b/nixpkgs/pkgs/applications/editors/vim/configurable.nix
new file mode 100644
index 000000000000..3b37c805cdd7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/vim/configurable.nix
@@ -0,0 +1,186 @@
+# TODO tidy up eg The patchelf code is patching gvim even if you don't build it..
+# but I have gvim with python support now :) - Marc
+{ source ? "default", callPackage, stdenv, ncurses, pkgconfig, gettext
+, writeText, config, glib, gtk2-x11, gtk3-x11, lua, python, perl, tcl, ruby
+, libX11, libXext, libSM, libXpm, libXt, libXaw, libXau, libXmu
+, libICE
+, vimPlugins
+, makeWrapper
+, wrapGAppsHook
+, runtimeShell
+
+# apple frameworks
+, CoreServices, CoreData, Cocoa, Foundation, libobjc
+
+, features          ? "huge" # One of tiny, small, normal, big or huge
+, wrapPythonDrv     ? false
+, guiSupport        ? config.vim.gui or (if stdenv.isDarwin then "gtk2" else "gtk3")
+, luaSupport        ? config.vim.lua or true
+, perlSupport       ? config.vim.perl or false      # Perl interpreter
+, pythonSupport     ? config.vim.python or true     # Python interpreter
+, rubySupport       ? config.vim.ruby or true       # Ruby interpreter
+, nlsSupport        ? config.vim.nls or false       # Enable NLS (gettext())
+, tclSupport        ? config.vim.tcl or false       # Include Tcl interpreter
+, multibyteSupport  ? config.vim.multibyte or false # Enable multibyte editing support
+, cscopeSupport     ? config.vim.cscope or true     # Enable cscope interface
+, netbeansSupport   ? config.netbeans or true       # Enable NetBeans integration support.
+, ximSupport        ? config.vim.xim or true        # less than 15KB, needed for deadkeys
+, darwinSupport     ? config.vim.darwin or false    # Enable Darwin support
+, ftNixSupport      ? config.vim.ftNix or true      # Add .nix filetype detection and minimal syntax highlighting support
+, ...
+}:
+
+
+let
+  nixosRuntimepath = writeText "nixos-vimrc" ''
+    set nocompatible
+    syntax on
+
+    function! NixosPluginPath()
+      let seen = {}
+      for p in reverse(split($NIX_PROFILES))
+        for d in split(glob(p . '/share/vim-plugins/*'))
+          let pluginname = substitute(d, ".*/", "", "")
+          if !has_key(seen, pluginname)
+            exec 'set runtimepath^='.d
+            let after = d."/after"
+            if isdirectory(after)
+              exec 'set runtimepath^='.after
+            endif
+            let seen[pluginname] = 1
+          endif
+        endfor
+      endfor
+    endfunction
+
+    execute NixosPluginPath()
+
+    if filereadable("/etc/vimrc")
+      source /etc/vimrc
+    elseif filereadable("/etc/vim/vimrc")
+      source /etc/vim/vimrc
+    endif
+  '';
+
+  common = callPackage ./common.nix {};
+
+  isPython3 = python.isPy3 or false;
+
+in stdenv.mkDerivation rec {
+
+  pname = "vim_configurable";
+
+  inherit (common) version postPatch hardeningDisable enableParallelBuilding meta;
+
+  src = builtins.getAttr source {
+    default = common.src; # latest release
+  };
+
+  patches = [ ./cflags-prune.diff ] ++ stdenv.lib.optional ftNixSupport ./ft-nix-support.patch;
+
+  configureFlags = [
+    "--enable-gui=${guiSupport}"
+    "--with-features=${features}"
+    "--disable-xsmp"              # XSMP session management
+    "--disable-xsmp_interact"     # XSMP interaction
+    "--disable-workshop"          # Sun Visual Workshop support
+    "--disable-sniff"             # Sniff interface
+    "--disable-hangulinput"       # Hangul input support
+    "--disable-fontset"           # X fontset output support
+    "--disable-acl"               # ACL support
+    "--disable-gpm"               # GPM (Linux mouse daemon)
+    "--disable-mzschemeinterp"
+    "--disable-gtk_check"
+    "--disable-gtk2_check"
+    "--disable-gnome_check"
+    "--disable-motif_check"
+    "--disable-athena_check"
+    "--disable-nextaf_check"
+    "--disable-carbon_check"
+    "--disable-gtktest"
+  ]
+  ++ stdenv.lib.optional stdenv.isDarwin
+     (if darwinSupport then "--enable-darwin" else "--disable-darwin")
+  ++ stdenv.lib.optionals luaSupport [
+    "--with-lua-prefix=${lua}"
+    "--enable-luainterp"
+  ]
+  ++ stdenv.lib.optionals pythonSupport [
+    "--enable-python${if isPython3 then "3" else ""}interp=yes"
+    "--with-python${if isPython3 then "3" else ""}-config-dir=${python}/lib"
+    "--disable-python${if (!isPython3) then "3" else ""}interp"
+  ]
+  ++ stdenv.lib.optional nlsSupport          "--enable-nls"
+  ++ stdenv.lib.optional perlSupport         "--enable-perlinterp"
+  ++ stdenv.lib.optional rubySupport         "--enable-rubyinterp"
+  ++ stdenv.lib.optional tclSupport          "--enable-tclinterp"
+  ++ stdenv.lib.optional multibyteSupport    "--enable-multibyte"
+  ++ stdenv.lib.optional cscopeSupport       "--enable-cscope"
+  ++ stdenv.lib.optional netbeansSupport     "--enable-netbeans"
+  ++ stdenv.lib.optional ximSupport          "--enable-xim";
+
+  nativeBuildInputs = [
+    pkgconfig
+  ]
+  ++ stdenv.lib.optional wrapPythonDrv makeWrapper
+  ++ stdenv.lib.optional nlsSupport gettext
+  ++ stdenv.lib.optional perlSupport perl
+  ++ stdenv.lib.optional (guiSupport == "gtk3") wrapGAppsHook
+  ;
+
+  buildInputs = [ ncurses libX11 libXext libSM libXpm libXt libXaw libXau
+    libXmu glib libICE ]
+    ++ stdenv.lib.optional (guiSupport == "gtk2") gtk2-x11
+    ++ stdenv.lib.optional (guiSupport == "gtk3") gtk3-x11
+    ++ stdenv.lib.optionals darwinSupport [ CoreServices CoreData Cocoa Foundation libobjc ]
+    ++ stdenv.lib.optional luaSupport lua
+    ++ stdenv.lib.optional pythonSupport python
+    ++ stdenv.lib.optional tclSupport tcl
+    ++ stdenv.lib.optional rubySupport ruby;
+
+  preConfigure = ''
+    '' + stdenv.lib.optionalString ftNixSupport ''
+      cp ${vimPlugins.vim-nix.src}/ftplugin/nix.vim runtime/ftplugin/nix.vim
+      cp ${vimPlugins.vim-nix.src}/indent/nix.vim runtime/indent/nix.vim
+      cp ${vimPlugins.vim-nix.src}/syntax/nix.vim runtime/syntax/nix.vim
+    '';
+
+  preInstall = ''
+    mkdir -p $out/share/applications $out/share/icons/{hicolor,locolor}/{16x16,32x32,48x48}/apps
+  '';
+
+  postInstall = ''
+    ln -s $out/bin/vim $out/bin/vi
+  '' + stdenv.lib.optionalString stdenv.isLinux ''
+    patchelf --set-rpath \
+      "$(patchelf --print-rpath $out/bin/vim):${stdenv.lib.makeLibraryPath buildInputs}" \
+      "$out"/bin/{vim,gvim}
+
+    ln -sfn '${nixosRuntimepath}' "$out"/share/vim/vimrc
+  '' + stdenv.lib.optionalString wrapPythonDrv ''
+    wrapProgram "$out/bin/vim" --prefix PATH : "${python}/bin"
+  '' + stdenv.lib.optionalString (guiSupport == "gtk3") ''
+
+    rewrap () {
+      rm -f "$out/bin/$1"
+      echo -e '#!${runtimeShell}\n"'"$out/bin/vim"'" '"$2"' "$@"' > "$out/bin/$1"
+      chmod a+x "$out/bin/$1"
+    }
+
+    rewrap ex -e
+    rewrap view -R
+    rewrap gvim -g
+    rewrap gex -eg
+    rewrap gview -Rg
+    rewrap rvim -Z
+    rewrap rview -RZ
+    rewrap rgvim -gZ
+    rewrap rgview -RgZ
+    rewrap evim    -y
+    rewrap eview   -yR
+    rewrap vimdiff -d
+    rewrap gvimdiff -gd
+  '';
+
+  dontStrip = true;
+}
diff --git a/nixpkgs/pkgs/applications/editors/vim/default.nix b/nixpkgs/pkgs/applications/editors/vim/default.nix
new file mode 100644
index 000000000000..95d2076153cb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/vim/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchurl, callPackage, ncurses, gettext, pkgconfig
+# default vimrc
+, vimrc ? fetchurl {
+    name = "default-vimrc";
+    url = "https://git.archlinux.org/svntogit/packages.git/plain/trunk/archlinux.vim?id=68f6d131750aa778807119e03eed70286a17b1cb";
+    sha256 = "18ifhv5q9prd175q3vxbqf6qyvkk6bc7d2lhqdk0q78i68kv9y0c";
+  }
+# apple frameworks
+, Carbon, Cocoa
+}:
+
+let
+  common = callPackage ./common.nix {};
+in
+stdenv.mkDerivation {
+  pname = "vim";
+
+  inherit (common) version src postPatch hardeningDisable enableParallelBuilding meta;
+
+  nativeBuildInputs = [ gettext pkgconfig ];
+  buildInputs = [ ncurses ]
+    ++ stdenv.lib.optionals stdenv.hostPlatform.isDarwin [ Carbon Cocoa ];
+
+  configureFlags = [
+    "--enable-multibyte"
+    "--enable-nls"
+  ] ++ stdenv.lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
+    "vim_cv_toupper_broken=no"
+    "--with-tlib=ncurses"
+    "vim_cv_terminfo=yes"
+    "vim_cv_tgetent=zero" # it does on native anyway
+    "vim_cv_tty_group=tty"
+    "vim_cv_tty_mode=0660"
+    "vim_cv_getcwd_broken=no"
+    "vim_cv_stat_ignores_slash=yes"
+    "ac_cv_sizeof_int=4"
+    "vim_cv_memmove_handles_overlap=yes"
+    "vim_cv_memmove_handles_overlap=yes"
+  ];
+
+  postInstall = ''
+    ln -s $out/bin/vim $out/bin/vi
+    mkdir -p $out/share/vim
+    cp "${vimrc}" $out/share/vim/vimrc
+  '';
+
+  __impureHostDeps = [ "/dev/ptmx" ];
+
+  # To fix the trouble in vim73, that it cannot cross-build with this patch
+  # to bypass a configure script check that cannot be done cross-building.
+  # http://groups.google.com/group/vim_dev/browse_thread/thread/66c02efd1523554b?pli=1
+  # patchPhase = ''
+  #   sed -i -e 's/as_fn_error.*int32.*/:/' src/auto/configure
+  # '';
+}
diff --git a/nixpkgs/pkgs/applications/editors/vim/ft-nix-support.patch b/nixpkgs/pkgs/applications/editors/vim/ft-nix-support.patch
new file mode 100644
index 000000000000..274d855731fd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/vim/ft-nix-support.patch
@@ -0,0 +1,20 @@
+diff --git a/runtime/filetype.vim b/runtime/filetype.vim
+index a8e6261..2b008fc 100644
+--- a/runtime/filetype.vim
++++ b/runtime/filetype.vim
+@@ -2258,6 +2258,9 @@ au BufNewFile,BufRead *.zsql			call s:SQL()
+ " Z80 assembler asz80
+ au BufNewFile,BufRead *.z8a			setf z8a
+ 
++" Nix
++au BufNewFile,BufRead *.nix		setf nix
++
+ augroup END
+ 
+ 
+@@ -2440,3 +2443,5 @@ endfunc
+ " Restore 'cpoptions'
+ let &cpo = s:cpo_save
+ unlet s:cpo_save
++
++
diff --git a/nixpkgs/pkgs/applications/editors/vim/macvim.nix b/nixpkgs/pkgs/applications/editors/vim/macvim.nix
new file mode 100644
index 000000000000..93ec48e54e0d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/vim/macvim.nix
@@ -0,0 +1,172 @@
+{ stdenv, fetchFromGitHub, runCommand, ncurses, gettext
+, pkgconfig, cscope, ruby, tcl, perl, luajit
+, darwin
+
+, usePython27 ? false
+, python27 ? null, python37 ? null
+}:
+
+let
+  python = if usePython27
+           then { pkg = python27; name = "python"; }
+           else { pkg = python37; name = "python3"; };
+in
+assert python.pkg != null;
+
+let
+  # Building requires a few system tools to be in PATH.
+  # Some of these we could patch into the relevant source files (such as xcodebuild and
+  # qlmanage) but some are used by Xcode itself and we have no choice but to put them in PATH.
+  # Symlinking them in this way is better than just putting all of /usr/bin in there.
+  buildSymlinks = runCommand "macvim-build-symlinks" {} ''
+    mkdir -p $out/bin
+    ln -s /usr/bin/xcrun /usr/bin/xcodebuild /usr/bin/tiffutil /usr/bin/qlmanage $out/bin
+  '';
+in
+
+stdenv.mkDerivation {
+  pname = "macvim";
+
+  version = "8.2.539";
+
+  src = fetchFromGitHub {
+    owner = "macvim-dev";
+    repo = "macvim";
+    rev = "snapshot-163";
+    sha256 = "0ibc6h7zmk81dygkxd8a2rcq72zbqmr9kh64xhsm9h0p70505cdk";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ pkgconfig buildSymlinks ];
+  buildInputs = [
+    gettext ncurses cscope luajit ruby tcl perl python.pkg
+  ];
+
+  patches = [ ./macvim.patch ];
+
+  configureFlags = [
+      "--enable-cscope"
+      "--enable-fail-if-missing"
+      "--with-features=huge"
+      "--enable-gui=macvim"
+      "--enable-multibyte"
+      "--enable-nls"
+      "--enable-luainterp=dynamic"
+      "--enable-${python.name}interp=dynamic"
+      "--enable-perlinterp=dynamic"
+      "--enable-rubyinterp=dynamic"
+      "--enable-tclinterp=yes"
+      "--without-local-dir"
+      "--with-luajit"
+      "--with-lua-prefix=${luajit}"
+      "--with-${python.name}-command=${python.pkg}/bin/${python.name}"
+      "--with-ruby-command=${ruby}/bin/ruby"
+      "--with-tclsh=${tcl}/bin/tclsh"
+      "--with-tlib=ncurses"
+      "--with-compiledby=Nix"
+      "--disable-sparkle"
+  ];
+
+  makeFlags = ''PREFIX=$(out) CPPFLAGS="-Wno-error"'';
+
+  # Remove references to Sparkle.framework from the project.
+  # It's unused (we disabled it with --disable-sparkle) and this avoids
+  # copying the unnecessary several-megabyte framework into the result.
+  postPatch = ''
+    echo "Patching file src/MacVim/MacVim.xcodeproj/project.pbxproj"
+    sed -e '/Sparkle\.framework/d' -i src/MacVim/MacVim.xcodeproj/project.pbxproj
+  '';
+
+  # This is unfortunate, but we need to use the same compiler as Xcode,
+  # but Xcode doesn't provide a way to configure the compiler.
+  preConfigure = ''
+    CC=/usr/bin/clang
+
+    DEV_DIR=$(/usr/bin/xcode-select -print-path)/Platforms/MacOSX.platform/Developer
+    configureFlagsArray+=(
+      "--with-developer-dir=$DEV_DIR"
+    )
+  ''
+  # For some reason having LD defined causes PSMTabBarControl to fail at link-time as it
+  # passes arguments to ld that it meant for clang.
+  + ''
+    unset LD
+  ''
+  ;
+
+  # Because we're building with system clang, this means we're building against Xcode's SDK and
+  # linking against system libraries. The configure script is picking up Nix Libsystem (via ruby)
+  # so we need to patch that out or we'll get linker issues. The MacVim binary built by Xcode links
+  # against the system anyway so it doesn't really matter that the Vim binary will too. If we
+  # decide that matters, we can always patch it back to the Nix libsystem post-build.
+  # It also picks up libiconv, libunwind, and objc4 from Nix. These seem relatively harmless but
+  # let's strip them out too.
+  #
+  # Note: If we do add a post-build install_name_tool patch, we need to add the
+  # "LDFLAGS=-headerpad_max_install_names" flag to configureFlags and either patch it into the
+  # Xcode project or pass it as a flag to xcodebuild as well.
+  postConfigure = ''
+    substituteInPlace src/auto/config.mk \
+      --replace "PERL_CFLAGS	=" "PERL_CFLAGS	= -I${darwin.libutil}/include" \
+      --replace " -L${stdenv.cc.libc}/lib" "" \
+      --replace " -L${darwin.libobjc}/lib" "" \
+      --replace " -L${darwin.libunwind}/lib" "" \
+      --replace " -L${darwin.libiconv}/lib" ""
+
+    # All the libraries we stripped have -osx- in their name as of this time.
+    # Assert now that this pattern no longer appears in config.mk.
+    ( # scope variable
+      while IFS="" read -r line; do
+        if [[ "$line" == LDFLAGS*-osx-* ]]; then
+          echo "WARNING: src/auto/config.mk contains reference to Nix osx library" >&2
+        fi
+      done <src/auto/config.mk
+    )
+
+    substituteInPlace src/MacVim/vimrc --subst-var-by CSCOPE ${cscope}/bin/cscope
+  '';
+
+  postInstall = ''
+    mkdir -p $out/Applications
+    cp -r src/MacVim/build/Release/MacVim.app $out/Applications
+    rm -rf $out/MacVim.app
+
+    rm $out/bin/*
+
+    cp src/vimtutor $out/bin
+    for prog in mvim ex vi vim vimdiff view rvim rvimdiff rview; do
+      ln -s $out/Applications/MacVim.app/Contents/bin/mvim $out/bin/$prog
+    done
+
+    # Fix rpaths
+    exe="$out/Applications/MacVim.app/Contents/MacOS/Vim"
+    libperl=$(dirname $(find ${perl} -name "libperl.dylib"))
+    install_name_tool -add_rpath ${luajit}/lib $exe
+    install_name_tool -add_rpath ${tcl}/lib $exe
+    install_name_tool -add_rpath ${python.pkg}/lib $exe
+    install_name_tool -add_rpath $libperl $exe
+    install_name_tool -add_rpath ${ruby}/lib $exe
+
+    # Remove manpages from tools we aren't providing
+    find $out/share/man \( -name eVim.1 -or -name xxd.1 \) -delete
+  '';
+
+  # We rely on the user's Xcode install to build. It may be located in an arbitrary place, and
+  # it's not clear what system-level components it may require, so for now we'll just allow full
+  # filesystem access. This way the package still can't access the network.
+  sandboxProfile = ''
+    (allow file-read* file-write* process-exec mach-lookup)
+    ; block homebrew dependencies
+    (deny file-read* file-write* process-exec mach-lookup (subpath "/usr/local") (with no-log))
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Vim - the text editor - for macOS";
+    homepage    = "https://github.com/macvim-dev/macvim";
+    license = licenses.vim;
+    maintainers = with maintainers; [ cstrahan lilyball ];
+    platforms   = platforms.darwin;
+    hydraPlatforms = []; # hydra can't build this as long as we rely on Xcode and sandboxProfile
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/vim/macvim.patch b/nixpkgs/pkgs/applications/editors/vim/macvim.patch
new file mode 100644
index 000000000000..6b90b623cb68
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/vim/macvim.patch
@@ -0,0 +1,203 @@
+diff --git a/src/MacVim/vimrc b/src/MacVim/vimrc
+index 23a06bf..dfb10fe 100644
+--- a/src/MacVim/vimrc
++++ b/src/MacVim/vimrc
+@@ -14,35 +14,5 @@ set backspace+=indent,eol,start
+ " translated to English).
+ set langmenu=none
+ 
+-" Python2
+-" MacVim is configured by default to use the pre-installed System python2
+-" version. However, following code tries to find a Homebrew, MacPorts or
+-" an installation from python.org:
+-if exists("&pythondll") && exists("&pythonhome")
+-  if filereadable("/usr/local/Frameworks/Python.framework/Versions/2.7/Python")
+-    " Homebrew python 2.7
+-    set pythondll=/usr/local/Frameworks/Python.framework/Versions/2.7/Python
+-  elseif filereadable("/opt/local/Library/Frameworks/Python.framework/Versions/2.7/Python")
+-    " MacPorts python 2.7
+-    set pythondll=/opt/local/Library/Frameworks/Python.framework/Versions/2.7/Python
+-  elseif filereadable("/Library/Frameworks/Python.framework/Versions/2.7/Python")
+-    " https://www.python.org/downloads/mac-osx/
+-    set pythondll=/Library/Frameworks/Python.framework/Versions/2.7/Python
+-  endif
+-endif
+-
+-" Python3
+-" MacVim is configured by default to use Homebrew python3 version
+-" If this cannot be found, following code tries to find a MacPorts
+-" or an installation from python.org:
+-if exists("&pythonthreedll") && exists("&pythonthreehome") &&
+-      \ !filereadable(&pythonthreedll)
+-  if filereadable("/opt/local/Library/Frameworks/Python.framework/Versions/3.7/Python")
+-    " MacPorts python 3.7
+-    set pythonthreedll=/opt/local/Library/Frameworks/Python.framework/Versions/3.7/Python
+-  elseif filereadable("/Library/Frameworks/Python.framework/Versions/3.7/Python")
+-    " https://www.python.org/downloads/mac-osx/
+-    set pythonthreedll=/Library/Frameworks/Python.framework/Versions/3.7/Python
+-  endif
+-endif
+-
++" Default cscopeprg to the Nix-installed path
++set cscopeprg=@CSCOPE@
+diff --git a/src/Makefile b/src/Makefile
+index 24c6934..d0f094e 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1407,7 +1407,7 @@ MACVIMGUI_SRC	= gui.c gui_beval.c MacVim/gui_macvim.m MacVim/MMBackend.m \
+ 		  MacVim/MacVim.m
+ MACVIMGUI_OBJ	= objects/gui.o objects/gui_beval.o \
+ 		  objects/gui_macvim.o objects/MMBackend.o objects/MacVim.o
+-MACVIMGUI_DEFS	= -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -pipe
++MACVIMGUI_DEFS	= -DMACOS_X_DARWIN -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -pipe
+ MACVIMGUI_IPATH	=
+ MACVIMGUI_LIBS_DIR =
+ MACVIMGUI_LIBS1	= -framework Cocoa -framework Carbon
+diff --git a/src/auto/configure b/src/auto/configure
+index 730d6d5..0259112 100755
+--- a/src/auto/configure
++++ b/src/auto/configure
+@@ -5859,10 +5859,7 @@ $as_echo "not found" >&6; }
+ 
+     for path in "${vi_cv_path_mzscheme_pfx}/lib" "${SCHEME_LIB}"; do
+       if test "X$path" != "X"; then
+-	if test "x$MACOS_X" = "xyes"; then
+-	  MZSCHEME_LIBS="-framework Racket"
+-	  MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
+-	elif test -f "${path}/libmzscheme3m.a"; then
++	if test -f "${path}/libmzscheme3m.a"; then
+ 	  MZSCHEME_LIBS="${path}/libmzscheme3m.a"
+ 	  MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
+ 	elif test -f "${path}/libracket3m.a"; then
+@@ -6247,23 +6244,6 @@ $as_echo ">>> too old; need Perl version 5.003_01 or later <<<" >&6; }
+   fi
+ 
+   if test "x$MACOS_X" = "xyes"; then
+-        dir=/System/Library/Perl
+-    darwindir=$dir/darwin
+-    if test -d $darwindir; then
+-      PERL=/usr/bin/perl
+-    else
+-            dir=/System/Library/Perl/5.8.1
+-      darwindir=$dir/darwin-thread-multi-2level
+-      if test -d $darwindir; then
+-	PERL=/usr/bin/perl
+-      fi
+-    fi
+-    if test -n "$PERL"; then
+-      PERL_DIR="$dir"
+-      PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
+-      PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
+-      PERL_LIBS="-L$darwindir/CORE -lperl"
+-    fi
+                 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
+     PERL_CFLAGS=`echo "$PERL_CFLAGS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
+   fi
+@@ -6486,13 +6466,7 @@ __:
+ eof
+ 	    	    eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
+ 	    rm -f -- "${tmp_mkf}"
+-	    if test "x$MACOS_X" = "xyes" && test -n "${python_PYTHONFRAMEWORK}" && ${vi_cv_path_python} -c \
+-		"import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
+-	      vi_cv_path_python_plibs="-framework Python"
+-	      if test "x${vi_cv_path_python}" != "x/usr/bin/python" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
+-		  vi_cv_path_python_plibs="-F${python_PYTHONFRAMEWORKPREFIX} -framework Python"
+-	      fi
+-	    else
++
+ 	      vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
+ 	      	      	      	      if test -n "${python_LINKFORSHARED}" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
+ 	        python_link_symbol=`echo ${python_LINKFORSHARED} | sed 's/\([^ \t][^ \t]*[ \t][ \t]*[^ \t][^ \t]*\)[ \t].*/\1/'`
+@@ -6507,7 +6481,6 @@ eof
+ 	      fi
+ 	      vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_BASEMODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
+ 	      	      vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
+-	    fi
+ 
+ fi
+ 
+@@ -6586,13 +6559,6 @@ rm -f core conftest.err conftest.$ac_objext \
+ $as_echo "no" >&6; }
+ 	fi
+ 
+-                                if test -n "$MACSDK"; then
+-          PYTHON_CFLAGS=
+-          PYTHON_LIBS=-framework Python
+-          PYTHON_CONFDIR=
+-          PYTHON_GETPATH_CFLAGS=
+-        fi
+-
+ 			{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compile and link flags for Python are sane" >&5
+ $as_echo_n "checking if compile and link flags for Python are sane... " >&6; }
+ 	cflags_save=$CFLAGS
+@@ -7486,11 +7452,7 @@ $as_echo "$tclver - OK" >&6; };
+ 
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of Tcl include" >&5
+ $as_echo_n "checking for location of Tcl include... " >&6; }
+-      if test "x$MACOS_X" != "xyes"; then
+ 	tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/local/include/tcl$tclver /usr/include /usr/include/tcl$tclver"
+-      else
+-		tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
+-      fi
+       TCL_INC=
+       for try in $tclinc; do
+ 	if test -f "$try/tcl.h"; then
+@@ -7508,12 +7470,8 @@ $as_echo "<not found>" >&6; }
+       if test -z "$SKIP_TCL"; then
+ 	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of tclConfig.sh script" >&5
+ $as_echo_n "checking for location of tclConfig.sh script... " >&6; }
+-	if test "x$MACOS_X" != "xyes"; then
+ 	  tclcnf=`echo $tclinc | sed s/include/lib/g`
+ 	  tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
+-	else
+-	  	  tclcnf="/System/Library/Frameworks/Tcl.framework"
+-	fi
+ 	for try in $tclcnf; do
+ 	  if test -f "$try/tclConfig.sh"; then
+ 	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $try/tclConfig.sh" >&5
+@@ -7703,10 +7661,6 @@ $as_echo "$rubyhdrdir" >&6; }
+ 	if test -f "$rubylibdir/$librubya"; then
+ 	  librubyarg="$librubyarg"
+ 	  RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
+-        elif test "$vi_cv_path_ruby" = "/usr/bin/ruby" -a -d "/System/Library/Frameworks/Ruby.framework"; then
+-                        RUBY_LIBS="-framework Ruby"
+-                        RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
+-            librubyarg=
+ 	fi
+ 
+ 	if test "X$librubyarg" != "X"; then
+diff --git a/src/vim.h b/src/vim.h
+index 87d1c92..8a7d5a5 100644
+--- a/src/vim.h
++++ b/src/vim.h
+@@ -250,17 +250,6 @@
+ # define SUN_SYSTEM
+ #endif
+ 
+-// If we're compiling in C++ (currently only KVim), the system
+-// headers must have the correct prototypes or nothing will build.
+-// Conversely, our prototypes might clash due to throw() specifiers and
+-// cause compilation failures even though the headers are correct.  For
+-// a concrete example, gcc-3.2 enforces exception specifications, and
+-// glibc-2.2.5 has them in their system headers.
+-#if !defined(__cplusplus) && defined(UNIX) \
+-	&& !defined(MACOS_X) // MACOS_X doesn't yet support osdef.h
+-# include "auto/osdef.h"	// bring missing declarations in
+-#endif
+-
+ #ifdef AMIGA
+ # include "os_amiga.h"
+ #endif
+diff --git a/src/vimtutor b/src/vimtutor
+index 1e8769b..47078b0 100755
+--- a/src/vimtutor
++++ b/src/vimtutor
+@@ -16,7 +16,7 @@ seq="vim vim81 vim80 vim8 vim74 vim73 vim72 vim71 vim70 vim7 vim6 vi"
+ if test "$1" = "-g"; then 
+   # Try to use the GUI version of Vim if possible, it will fall back
+   # on Vim if Gvim is not installed.
+-  seq="gvim gvim81 gvim80 gvim8 gvim74 gvim73 gvim72 gvim71 gvim70 gvim7 gvim6 $seq"
++  seq="mvim gvim gvim81 gvim80 gvim8 gvim74 gvim73 gvim72 gvim71 gvim70 gvim7 gvim6 $seq"
+   shift
+ fi
+ 
diff --git a/nixpkgs/pkgs/applications/editors/vim/qvim.nix b/nixpkgs/pkgs/applications/editors/vim/qvim.nix
new file mode 100644
index 000000000000..0e3a4a150526
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/vim/qvim.nix
@@ -0,0 +1,113 @@
+args@{ fetchgit, stdenv, ncurses, pkgconfig, gettext
+, lib, config, python, perl, tcl, ruby, qt4
+, libX11, libXext, libSM, libXpm, libXt, libXaw, libXau, libXmu
+, libICE
+, lua
+, features
+, luaSupport       ? config.vim.lua or true
+, perlSupport      ? config.vim.perl or false      # Perl interpreter
+, pythonSupport    ? config.vim.python or true
+, rubySupport      ? config.vim.ruby or true
+, nlsSupport       ? config.vim.nls or false
+, tclSupport       ? config.vim.tcl or false
+, multibyteSupport ? config.vim.multibyte or false
+, cscopeSupport    ? config.vim.cscope or false
+, netbeansSupport  ? config.netbeans or true # eg envim is using it
+
+# by default, compile with darwin support if we're compiling on darwin, but
+# allow this to be disabled by setting config.vim.darwin to false
+, darwinSupport    ? stdenv.isDarwin && (config.vim.darwin or true)
+
+# add .nix filetype detection and minimal syntax highlighting support
+, ftNixSupport     ? config.vim.ftNix or true
+
+, ... }: with args;
+
+let tag = "20140827";
+    sha256 = "0ncgbcm23z25naicxqkblz0mcl1zar2qwgi37y5ar8q8884w9ml2";
+in {
+
+  name = "qvim-7.4." + tag;
+
+  enableParallelBuilding = true; # test this
+
+  src = fetchgit {
+    url = "https://bitbucket.org/equalsraf/vim-qt.git";
+    rev = "refs/tags/package-" + tag;
+    inherit sha256;
+  };
+
+  # FIXME: adopt Darwin fixes from vim/default.nix, then chage meta.platforms.linux
+  # to meta.platforms.unix
+  preConfigure = assert (! stdenv.isDarwin); "";
+
+  configureFlags = [
+    "--with-vim-name=qvim"
+    "--enable-gui=qt"
+    "--with-features=${features}"
+    "--disable-xsmp"
+    "--disable-xsmp_interact"
+    "--disable-workshop"          # Sun Visual Workshop support
+    "--disable-sniff"             # Sniff interface
+    "--disable-hangulinput"       # Hangul input support
+    "--disable-fontset"           # X fontset output support
+    "--disable-acl"               # ACL support
+    "--disable-gpm"               # GPM (Linux mouse daemon)
+    "--disable-mzscheme"
+  ]
+  ++ stdenv.lib.optionals luaSupport [
+    "--with-lua-prefix=${lua}"
+    "--enable-luainterp"
+  ]
+  ++ stdenv.lib.optional pythonSupport      "--enable-pythoninterp"
+  ++ stdenv.lib.optional (pythonSupport && stdenv.isDarwin) "--with-python-config-dir=${python}/lib"
+  ++ stdenv.lib.optional nlsSupport         "--enable-nls"
+  ++ stdenv.lib.optional perlSupport        "--enable-perlinterp"
+  ++ stdenv.lib.optional rubySupport        "--enable-rubyinterp"
+  ++ stdenv.lib.optional tclSupport         "--enable-tcl"
+  ++ stdenv.lib.optional multibyteSupport   "--enable-multibyte"
+  ++ stdenv.lib.optional darwinSupport      "--enable-darwin"
+  ++ stdenv.lib.optional cscopeSupport      "--enable-cscope";
+
+  nativeBuildInputs = [ ncurses pkgconfig libX11 libXext libSM libXpm libXt libXaw
+    libXau libXmu libICE qt4
+  ]
+  ++ stdenv.lib.optional nlsSupport gettext
+  ++ stdenv.lib.optional perlSupport perl
+  ++ stdenv.lib.optional pythonSupport python
+  ++ stdenv.lib.optional tclSupport tcl
+  ++ stdenv.lib.optional rubySupport ruby
+  ++ stdenv.lib.optional luaSupport lua
+  ;
+
+  postPatch = ''
+  '' + stdenv.lib.optionalString ftNixSupport ''
+    # because we cd to src in the main patch phase, we can't just add this
+    # patch to the list, we have to apply it manually
+    cd runtime
+    patch -p2 < ${./ft-nix-support.patch}
+    cd ..
+  '';
+
+  postInstall = stdenv.lib.optionalString stdenv.isLinux ''
+    rpath=`patchelf --print-rpath $out/bin/qvim`;
+    for i in $nativeBuildInputs; do
+      echo adding $i/lib
+      rpath=$rpath:$i/lib
+    done
+    echo $nativeBuildInputs
+    echo $rpath
+    patchelf --set-rpath $rpath $out/bin/qvim
+  '';
+
+  dontStrip = 1;
+
+  meta = with stdenv.lib; {
+    description = "The most popular clone of the VI editor (Qt GUI fork)";
+    homepage    = "https://bitbucket.org/equalsraf/vim-qt/wiki/Home";
+    license = licenses.vim;
+    maintainers = with maintainers; [ smironov ttuegel ];
+    platforms   = platforms.linux;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/editors/vim/vimacs.nix b/nixpkgs/pkgs/applications/editors/vim/vimacs.nix
new file mode 100644
index 000000000000..d067b4181213
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/vim/vimacs.nix
@@ -0,0 +1,34 @@
+{ stdenv, config, vim_configurable, macvim, vimPlugins
+, useMacvim ? stdenv.isDarwin && (config.vimacs.macvim or true)
+, vimacsExtraArgs ? "" }:
+
+stdenv.mkDerivation rec {
+  pname = "vimacs";
+  version = vimPackage.version;
+  vimPackage = if useMacvim then macvim else vim_configurable;
+
+  buildInputs = [ vimPackage vimPlugins.vimacs ];
+
+  buildCommand = ''
+    mkdir -p "$out"/bin
+    cp "${vimPlugins.vimacs}"/share/vim-plugins/vimacs/bin/vim $out/bin/vimacs
+    substituteInPlace "$out"/bin/vimacs \
+      --replace '-vim}' '-@bin@/bin/vim}' \
+      --replace '-gvim}' '-@bin@/bin/vim -g}' \
+      --replace '--cmd "let g:VM_Enabled = 1"' \
+                '--cmd "let g:VM_Enabled = 1" --cmd "set rtp^=@rtp@" ${vimacsExtraArgs}' \
+      --replace @rtp@ ${vimPlugins.vimacs.rtp} \
+      --replace @bin@ ${vimPackage}
+    for prog in vm gvm gvimacs vmdiff vimacsdiff
+    do
+      ln -s "$out"/bin/vimacs $out/bin/$prog
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Vim-Improved eMACS: Emacs emulation for Vim";
+    homepage = "http://algorithm.com.au/code/vimacs";
+    license = licenses.gpl2Plus;
+    maintainers = with stdenv.lib.maintainers; [ millerjason ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/vis/default.nix b/nixpkgs/pkgs/applications/editors/vis/default.nix
new file mode 100644
index 000000000000..5191b916b6c5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/vis/default.nix
@@ -0,0 +1,71 @@
+{ stdenv, fetchFromGitHub, pkgconfig, makeWrapper, makeDesktopItem
+, ncurses, libtermkey, lpeg, lua
+, acl ? null, libselinux ? null
+}:
+
+stdenv.mkDerivation rec {
+  pname = "vis";
+  version  = "0.6";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    sha256 = "1zjm89cn3rfq8fxpwp66khy53s6vqlmw6q103qyyvix8ydzxdmsh";
+    repo = "vis";
+    owner = "martanne";
+  };
+
+  nativeBuildInputs = [ pkgconfig makeWrapper ];
+
+  buildInputs = [
+    ncurses
+    libtermkey
+    lua
+    lpeg
+  ] ++ stdenv.lib.optionals stdenv.isLinux [
+    acl
+    libselinux
+  ];
+
+  postPatch = ''
+    patchShebangs ./configure
+  '';
+
+  LUA_CPATH="${lpeg}/lib/lua/${lua.luaversion}/?.so;";
+  LUA_PATH="${lpeg}/share/lua/${lua.luaversion}/?.lua";
+
+  postInstall = ''
+    mkdir -p "$out/share/applications"
+    cp $desktopItem/share/applications/* $out/share/applications
+    echo wrapping $out/bin/vis with runtime environment
+    wrapProgram $out/bin/vis \
+      --prefix LUA_CPATH ';' "${lpeg}/lib/lua/${lua.luaversion}/?.so" \
+      --prefix LUA_PATH ';' "${lpeg}/share/lua/${lua.luaversion}/?.lua" \
+      --prefix VIS_PATH : "\$HOME/.config:$out/share/vis"
+  '';
+
+  desktopItem = makeDesktopItem {
+    name = "vis";
+    exec = "vis %U";
+    type = "Application";
+    icon = "accessories-text-editor";
+    comment = meta.description;
+    desktopName = "vis";
+    genericName = "Text editor";
+    categories = stdenv.lib.concatStringsSep ";" [
+      "Application" "Development" "IDE"
+    ];
+    mimeType = stdenv.lib.concatStringsSep ";" [
+      "text/plain" "application/octet-stream"
+    ];
+    startupNotify = "false";
+    terminal = "true";
+  };
+
+  meta = with stdenv.lib; {
+    description = "A vim like editor";
+    homepage = "https://github.com/martanne/vis";
+    license = licenses.isc;
+    maintainers = with maintainers; [ vrthra ramkromberg ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/vscode/generic.nix b/nixpkgs/pkgs/applications/editors/vscode/generic.nix
new file mode 100644
index 000000000000..38d695bd74ac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/vscode/generic.nix
@@ -0,0 +1,96 @@
+{ stdenv, lib, makeDesktopItem
+, unzip, libsecret, libXScrnSaver, wrapGAppsHook
+, gtk2, atomEnv, at-spi2-atk, autoPatchelfHook
+, systemd, fontconfig
+
+# Attributes inherit from specific versions
+, version, src, meta, sourceRoot
+, executableName, longName, shortName, pname
+}:
+
+let
+  inherit (stdenv.hostPlatform) system;
+in
+  stdenv.mkDerivation {
+
+    inherit pname version src sourceRoot;
+
+    passthru = {
+      inherit executableName;
+    };
+
+    desktopItem = makeDesktopItem {
+      name = executableName;
+      desktopName = longName;
+      comment = "Code Editing. Redefined.";
+      genericName = "Text Editor";
+      exec = "${executableName} %U";
+      icon = "code";
+      startupNotify = "true";
+      categories = "Utility;TextEditor;Development;IDE;";
+      mimeType = "text/plain;inode/directory;";
+      extraEntries = ''
+        StartupWMClass=${shortName}
+        Actions=new-empty-window;
+        Keywords=vscode;
+
+        [Desktop Action new-empty-window]
+        Name=New Empty Window
+        Exec=${executableName} --new-window %F
+        Icon=code
+      '';
+    };
+
+    urlHandlerDesktopItem = makeDesktopItem {
+      name = executableName + "-url-handler";
+      desktopName = longName + " - URL Handler";
+      comment = "Code Editing. Redefined.";
+      genericName = "Text Editor";
+      exec = executableName + " --open-url %U";
+      icon = "code";
+      startupNotify = "true";
+      categories = "Utility;TextEditor;Development;IDE;";
+      mimeType = "x-scheme-handler/vscode;";
+      extraEntries = ''
+        NoDisplay=true
+        Keywords=vscode;
+      '';
+    };
+
+    buildInputs = (if stdenv.isDarwin
+      then [ unzip ]
+      else [ gtk2 at-spi2-atk wrapGAppsHook ] ++ atomEnv.packages)
+        ++ [ libsecret libXScrnSaver ];
+
+    runtimeDependencies = lib.optional (stdenv.isLinux) [ systemd.lib fontconfig.lib ];
+
+    nativeBuildInputs = lib.optional (!stdenv.isDarwin) autoPatchelfHook;
+
+    dontBuild = true;
+    dontConfigure = true;
+
+    installPhase =
+      if system == "x86_64-darwin" then ''
+        mkdir -p "$out/Applications/${longName}.app" $out/bin
+        cp -r ./* "$out/Applications/${longName}.app"
+        ln -s "$out/Applications/${longName}.app/Contents/Resources/app/bin/code" $out/bin/${executableName}
+      '' else ''
+        mkdir -p $out/lib/vscode $out/bin
+        cp -r ./* $out/lib/vscode
+
+        ln -s $out/lib/vscode/bin/${executableName} $out/bin
+
+        mkdir -p $out/share/applications
+        ln -s $desktopItem/share/applications/${executableName}.desktop $out/share/applications/${executableName}.desktop
+        ln -s $urlHandlerDesktopItem/share/applications/${executableName}-url-handler.desktop $out/share/applications/${executableName}-url-handler.desktop
+
+        mkdir -p $out/share/pixmaps
+        cp $out/lib/vscode/resources/app/resources/linux/code.png $out/share/pixmaps/code.png
+
+        # Override the previously determined VSCODE_PATH with the one we know to be correct
+        sed -i "/ELECTRON=/iVSCODE_PATH='$out/lib/vscode'" $out/bin/${executableName}
+        grep -q "VSCODE_PATH='$out/lib/vscode'" $out/bin/${executableName} # check if sed succeeded
+      '';
+
+    inherit meta;
+  }
diff --git a/nixpkgs/pkgs/applications/editors/vscode/vscode.nix b/nixpkgs/pkgs/applications/editors/vscode/vscode.nix
new file mode 100644
index 000000000000..7ca981b2958d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/vscode/vscode.nix
@@ -0,0 +1,57 @@
+{ stdenv, lib, callPackage, fetchurl, isInsiders ? false }:
+
+let
+  inherit (stdenv.hostPlatform) system;
+
+  plat = {
+    x86_64-linux = "linux-x64";
+    x86_64-darwin = "darwin";
+  }.${system};
+
+  archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz";
+
+  sha256 = {
+    x86_64-linux = "0hmmqdamsjhjy1q8m85bs081cwmskpsp57rkj7vc2wj918wgissm";
+    x86_64-darwin = "00xwvi53h9rnwyba12jmsp6grkymmn6vjibypaxb96q7q7p894gh";
+  }.${system};
+in
+  callPackage ./generic.nix rec {
+    # The update script doesn't correctly change the hash for darwin, so please:
+    # nixpkgs-update: no auto update
+
+    # Please backport all compatible updates to the stable release.
+    # This is important for the extension ecosystem.
+    version = "1.46.0";
+    pname = "vscode";
+
+    executableName = "code" + lib.optionalString isInsiders "-insiders";
+    longName = "Visual Studio Code" + lib.optionalString isInsiders " - Insiders";
+    shortName = "Code" + lib.optionalString isInsiders " - Insiders";
+
+    src = fetchurl {
+      name = "VSCode_${version}_${plat}.${archive_fmt}";
+      url = "https://vscode-update.azurewebsites.net/${version}/${plat}/stable";
+      inherit sha256;
+    };
+
+    sourceRoot = "";
+
+    meta = with stdenv.lib; {
+      description = ''
+        Open source source code editor developed by Microsoft for Windows,
+        Linux and macOS
+      '';
+      longDescription = ''
+        Open source source code editor developed by Microsoft for Windows,
+        Linux and macOS. It includes support for debugging, embedded Git
+        control, syntax highlighting, intelligent code completion, snippets,
+        and code refactoring. It is also customizable, so users can change the
+        editor's theme, keyboard shortcuts, and preferences
+      '';
+      homepage = "https://code.visualstudio.com/";
+      downloadPage = "https://code.visualstudio.com/Updates";
+      license = licenses.unfree;
+      maintainers = with maintainers; [ eadwu synthetica ];
+      platforms = [ "x86_64-linux" "x86_64-darwin" ];
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/editors/vscode/vscodium.nix b/nixpkgs/pkgs/applications/editors/vscode/vscodium.nix
new file mode 100644
index 000000000000..fd48a4b1084e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/vscode/vscodium.nix
@@ -0,0 +1,60 @@
+{ stdenv, callPackage, fetchurl }:
+
+let
+  inherit (stdenv.hostPlatform) system;
+
+  plat = {
+    x86_64-linux = "linux-x64";
+    x86_64-darwin = "darwin";
+  }.${system};
+
+  archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz";
+
+  sha256 = {
+    x86_64-linux = "088nsflscak315704vqnh8m4q7601fczglbhdz5i70kfyg89ar4w";
+    x86_64-darwin = "0fxpx1ydsag4gyn2kq5ddq55lpw15w176p3fypk80fyfix4kziqf";
+  }.${system};
+
+  sourceRoot = {
+    x86_64-linux = ".";
+    x86_64-darwin = "";
+  }.${system};
+in
+  callPackage ./generic.nix rec {
+    inherit sourceRoot;
+    # The update script doesn't correctly change the hash for darwin, so please:
+    # nixpkgs-update: no auto update
+
+    # Please backport all compatible updates to the stable release.
+    # This is important for the extension ecosystem.
+    version = "1.46.0";
+    pname = "vscodium";
+
+    executableName = "codium";
+    longName = "VSCodium";
+    shortName = "vscodium";
+
+    src = fetchurl {
+      url = "https://github.com/VSCodium/vscodium/releases/download/${version}/VSCodium-${plat}-${version}.${archive_fmt}";
+      inherit sha256;
+    };
+
+    meta = with stdenv.lib; {
+      description = ''
+        Open source source code editor developed by Microsoft for Windows,
+        Linux and macOS (VS Code without MS branding/telemetry/licensing)
+      '';
+      longDescription = ''
+        Open source source code editor developed by Microsoft for Windows,
+        Linux and macOS. It includes support for debugging, embedded Git
+        control, syntax highlighting, intelligent code completion, snippets,
+        and code refactoring. It is also customizable, so users can change the
+        editor's theme, keyboard shortcuts, and preferences
+      '';
+      homepage = "https://github.com/VSCodium/vscodium";
+      downloadPage = "https://github.com/VSCodium/vscodium/releases";
+      license = licenses.mit;
+      maintainers = with maintainers; [ synthetica turion ];
+      platforms = [ "x86_64-linux" "x86_64-darwin" ];
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/editors/vscode/with-extensions.nix b/nixpkgs/pkgs/applications/editors/vscode/with-extensions.nix
new file mode 100644
index 000000000000..c30b52782ef3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/vscode/with-extensions.nix
@@ -0,0 +1,75 @@
+{ lib, runCommand, buildEnv, vscode, makeWrapper
+, vscodeExtensions ? [] }:
+
+/*
+  `vscodeExtensions`
+   :  A set of vscode extensions to be installed alongside the editor. Here's a an
+      example:
+
+      ~~~
+      vscode-with-extensions.override {
+
+        # When the extension is already available in the default extensions set.
+        vscodeExtensions = with vscode-extensions; [
+          bbenoist.Nix
+        ]
+
+        # Concise version from the vscode market place when not available in the default set.
+        ++ vscode-utils.extensionsFromVscodeMarketplace [
+          {
+            name = "code-runner";
+            publisher = "formulahendry";
+            version = "0.6.33";
+            sha256 = "166ia73vrcl5c9hm4q1a73qdn56m0jc7flfsk5p5q41na9f10lb0";
+          }
+        ];
+      }
+      ~~~
+
+      This expression should fetch
+       -  the *nix* vscode extension from whatever source defined in the
+          default nixpkgs extensions set `vscodeExtensions`.
+
+       -  the *code-runner* vscode extension from the marketplace using the
+          following url:
+
+          ~~~
+          https://bbenoist.gallery.vsassets.io/_apis/public/gallery/publisher/bbenoist/extension/nix/1.0.1/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage
+          ~~~
+
+      The original `code` executable will be wrapped so that it uses the set of pre-installed / unpacked
+      extensions as its `--extensions-dir`.
+*/
+
+let
+
+  inherit (vscode) executableName;
+  wrappedPkgVersion = lib.getVersion vscode;
+  wrappedPkgName = lib.removeSuffix "-${wrappedPkgVersion}" vscode.name;
+
+  combinedExtensionsDrv = buildEnv {
+    name = "vscode-extensions";
+    paths = vscodeExtensions;
+  };
+
+in
+
+# When no extensions are requested, we simply redirect to the original
+# non-wrapped vscode executable.
+runCommand "${wrappedPkgName}-with-extensions-${wrappedPkgVersion}" {
+  buildInputs = [ vscode makeWrapper ];
+  dontPatchELF = true;
+  dontStrip = true;
+  meta = vscode.meta;
+} ''
+  mkdir -p "$out/bin"
+  mkdir -p "$out/share/applications"
+  mkdir -p "$out/share/pixmaps"
+
+  ln -sT "${vscode}/share/pixmaps/code.png" "$out/share/pixmaps/code.png"
+  ln -sT "${vscode}/share/applications/${executableName}.desktop" "$out/share/applications/${executableName}.desktop"
+  ln -sT "${vscode}/share/applications/${executableName}-url-handler.desktop" "$out/share/applications/${executableName}-url-handler.desktop"
+  makeWrapper "${vscode}/bin/${executableName}" "$out/bin/${executableName}" ${lib.optionalString (vscodeExtensions != []) ''
+    --add-flags "--extensions-dir ${combinedExtensionsDrv}/share/vscode/extensions"
+  ''}
+''
diff --git a/nixpkgs/pkgs/applications/editors/wily/default.nix b/nixpkgs/pkgs/applications/editors/wily/default.nix
new file mode 100644
index 000000000000..ac741599bdab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/wily/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, libX11, libXt } :
+
+stdenv.mkDerivation rec {
+  version = "0.13.42";
+  pname = "wily";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/wily/${pname}-${version}.tar.gz";
+    sha256 = "1jy4czk39sh365b0mjpj4d5wmymj98x163vmwzyx3j183jqrhm2z";
+  };
+
+  buildInputs = [ libX11 libXt ];
+
+  configureFlags = [ "--prefix=$(out)" ];
+
+  preInstall = ''
+    mkdir -p $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An emulation of ACME";
+    homepage = "http://wily.sourceforge.net";
+    license = licenses.artistic1;
+    maintainers = [ maintainers.vrthra ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/wxhexeditor/default.nix b/nixpkgs/pkgs/applications/editors/wxhexeditor/default.nix
new file mode 100644
index 000000000000..9b0fd592a6a2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/wxhexeditor/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchFromGitHub, fetchpatch, wxGTK, autoconf, automake, libtool, python, gettext }:
+
+stdenv.mkDerivation rec {
+  pname = "wxHexEditor";
+  version = "0.24";
+
+  src = fetchFromGitHub {
+    repo = "wxHexEditor";
+    owner = "EUA";
+    rev = "v${version}";
+    sha256 = "08xnhaif8syv1fa0k6lc3jm7yg2k50b02lyds8w0jyzh4xi5crqj";
+  };
+
+  buildInputs = [ wxGTK autoconf automake libtool python gettext ];
+
+  preConfigure = "patchShebangs .";
+
+  prePatch = ''
+    substituteInPlace Makefile --replace "/usr" "$out"
+    substituteInPlace Makefile --replace "mhash; ./configure" "mhash; ./configure --prefix=$out"
+  '';
+
+  patches = [
+    # https://github.com/EUA/wxHexEditor/issues/90
+    (fetchpatch {
+      url = "https://github.com/EUA/wxHexEditor/commit/d0fa3ddc3e9dc9b05f90b650991ef134f74eed01.patch";
+      sha256 = "1wcb70hrnhq72frj89prcqylpqs74xrfz3kdfdkq84p5qfz9svyj";
+    })
+    ./missing-semicolon.patch
+  ];
+
+  makeFlags = [ "OPTFLAGS=-fopenmp" ];
+
+  meta = {
+    description = "Hex Editor / Disk Editor for Huge Files or Devices";
+    longDescription = ''
+      This is not an ordinary hex editor, but could work as low level disk editor too.
+      If you have problems with your HDD or partition, you can recover your data from HDD or
+      from partition via editing sectors in raw hex.
+      You can edit your partition tables or you could recover files from File System by hand
+      with help of wxHexEditor.
+      Or you might want to analyze your big binary files, partitions, devices... If you need
+      a good reverse engineer tool like a good hex editor, you welcome.
+      wxHexEditor could edit HDD/SDD disk devices or partitions in raw up to exabyte sizes.
+    '';
+    homepage = "http://www.wxhexeditor.org/";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/wxhexeditor/missing-semicolon.patch b/nixpkgs/pkgs/applications/editors/wxhexeditor/missing-semicolon.patch
new file mode 100644
index 000000000000..75722c9c7c55
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/wxhexeditor/missing-semicolon.patch
@@ -0,0 +1,35 @@
+diff --git a/src/HexDialogs.cpp b/src/HexDialogs.cpp
+index 091a6f9..12e6a78 100644
+--- a/src/HexDialogs.cpp
++++ b/src/HexDialogs.cpp
+@@ -420,7 +420,7 @@ void FindDialog::OnChar( wxKeyEvent& event ){
+ 	}
+
+ void FindDialog::EventHandler( wxCommandEvent& event ){
+-	WX_CLEAR_ARRAY(parent->HighlightArray )
++	WX_CLEAR_ARRAY(parent->HighlightArray );
+ 	parent->HighlightArray.Shrink();
+
+ 	if( event.GetId() == btnFind->GetId())
+diff --git a/src/HexEditorCtrl/HexEditorCtrl.cpp b/src/HexEditorCtrl/HexEditorCtrl.cpp
+index 7a3b0e2..f12097f 100644
+--- a/src/HexEditorCtrl/HexEditorCtrl.cpp
++++ b/src/HexEditorCtrl/HexEditorCtrl.cpp
+@@ -64,9 +64,9 @@ HexEditorCtrl::~HexEditorCtrl( void ){
+ 	Dynamic_Disconnector();
+ 	Clear();
+
+-	WX_CLEAR_ARRAY(MainTagArray)
+-	WX_CLEAR_ARRAY(HighlightArray)
+-   WX_CLEAR_ARRAY(CompareArray)
++	WX_CLEAR_ARRAY(MainTagArray);
++	WX_CLEAR_ARRAY(HighlightArray);
++   WX_CLEAR_ARRAY(CompareArray);
+
+    MainTagArray.Shrink();
+    HighlightArray.Shrink();
+@@ -1224,4 +1224,3 @@ void wxHugeScrollBar::OnOffsetScroll( wxScrollEvent& event ){
+ #endif
+ 	event.Skip();
+ 	}
+-
diff --git a/nixpkgs/pkgs/applications/editors/xmlcopyeditor/default.nix b/nixpkgs/pkgs/applications/editors/xmlcopyeditor/default.nix
new file mode 100644
index 000000000000..f3270fccdfe7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/xmlcopyeditor/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, aspell, boost, expat, intltool, libxml2, libxslt, pcre, wxGTK, xercesc }:
+
+stdenv.mkDerivation rec {
+  pname = "xmlcopyeditor";
+  version = "1.2.1.3";
+
+  src = fetchurl {
+    name = "${pname}-${version}.tar.gz";
+    url = "mirror://sourceforge/xml-copy-editor/${pname}-${version}.tar.gz";
+    sha256 = "0bwxn89600jbrkvlwyawgc0c0qqxpl453mbgcb9qbbxl8984ns4v";
+  };
+
+  patches = [ ./xmlcopyeditor.patch ];
+  CPLUS_INCLUDE_PATH = "${libxml2.dev}/include/libxml2";
+
+  nativeBuildInputs = [ intltool ];
+  buildInputs = [ aspell boost expat libxml2 libxslt pcre wxGTK xercesc ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "A fast, free, validating XML editor";
+    homepage = "http://xml-copy-editor.sourceforge.net/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ candeira ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/xmlcopyeditor/xmlcopyeditor.patch b/nixpkgs/pkgs/applications/editors/xmlcopyeditor/xmlcopyeditor.patch
new file mode 100644
index 000000000000..253b9ce49ba8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/xmlcopyeditor/xmlcopyeditor.patch
@@ -0,0 +1,36 @@
+From 626c385ba141c6abcff01bef4451fcad062d232c Mon Sep 17 00:00:00 2001
+From: Javier Candeira <javier@candeira.com>
+Date: Sat, 7 Apr 2018 20:21:45 +1000
+Subject: [PATCH] nixpckgs patches
+
+---
+ src/Makefile.in | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/Makefile.in b/src/Makefile.in
+index e75918f..e04703b 100644
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -283,8 +283,8 @@ top_srcdir = @top_srcdir@
+ # these are the headers for your project
+ noinst_HEADERS = $(srcdir)/*.h
+ xmlcopyeditordir = ${prefix}/share/xmlcopyeditor
+-pixmapdir = /usr/share/pixmaps
+-applicationsdir = /usr/share/applications
++pixmapdir = ${prefix}/share/pixmaps
++applicationsdir = ${prefix}/share/applications
+ 
+ # the application source, library search path, and link libraries
+ xmlcopyeditor_SOURCES = aboutdialog.cpp associatedialog.cpp binaryfile.cpp \
+@@ -357,7 +357,7 @@ EXTRA_DIST = \
+ 	$(srcdir)/xmlcopyeditor.rc \
+ 	$(srcdir)/xmlschemaparser.cpp
+ 
+-AM_CPPFLAGS = -I/usr/include/libxml2 $(ENCHANT_CFLAGS) $(GTK_CFLAGS)
++AM_CPPFLAGS = -I$(CPLUS_INCLUDE_PATH) $(ENCHANT_CFLAGS) $(GTK_CFLAGS)
+ all: all-am
+ 
+ .SUFFIXES:
+-- 
+2.16.2
+
diff --git a/nixpkgs/pkgs/applications/editors/yi/wrapper.nix b/nixpkgs/pkgs/applications/editors/yi/wrapper.nix
new file mode 100644
index 000000000000..243690bc2632
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/yi/wrapper.nix
@@ -0,0 +1,33 @@
+# To use this for hacking of your Yi config file, drop into a shell
+# with env attribute.
+{ stdenv, makeWrapper
+, haskellPackages
+, extraPackages ? (s: [])
+}:
+let
+  yiEnv = haskellPackages.ghcWithPackages
+    (self: [ self.yi ] ++ extraPackages self);
+in
+stdenv.mkDerivation {
+  pname = "yi-custom";
+  version = "0.0.0.1";
+  dontUnpack = true;
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildCommand = ''
+    mkdir -p $out/bin
+    makeWrapper ${haskellPackages.yi}/bin/yi $out/bin/yi \
+      --set NIX_GHC ${yiEnv}/bin/ghc
+  '';
+
+  # For hacking purposes
+  passthru.env = yiEnv;
+
+  meta = with stdenv.lib; {
+    description = "Allows Yi to find libraries and the compiler easily";
+    # This wrapper and wrapper only is under PD
+    license = licenses.publicDomain;
+    maintainers = with maintainers; [ ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/editors/zile/default.nix b/nixpkgs/pkgs/applications/editors/zile/default.nix
new file mode 100644
index 000000000000..c7c57a9e3ef8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/zile/default.nix
@@ -0,0 +1,56 @@
+{ fetchurl, stdenv, pkgconfig, ncurses, boehmgc, perl, help2man }:
+
+stdenv.mkDerivation rec {
+  name = "zile-2.4.14";
+
+  src = fetchurl {
+    url = "mirror://gnu/zile/${name}.tar.gz";
+    sha256 = "0x3byaddms8l3g7igx6njycqsq98wgapysdb5c7lhcnajlkp8y3s";
+  };
+
+  buildInputs = [ ncurses boehmgc ];
+  nativeBuildInputs = [ perl pkgconfig ]
+    # `help2man' wants to run Zile, which won't work when the
+    # newly-produced binary can't be run at build-time.
+    ++ stdenv.lib.optional
+         (stdenv.hostPlatform == stdenv.buildPlatform)
+         help2man;
+
+  # Tests can't be run because most of them rely on the ability to
+  # fiddle with the terminal.
+  doCheck = false;
+
+  # XXX: Work around cross-compilation-unfriendly `gl_FUNC_FSTATAT' macro.
+  gl_cv_func_fstatat_zero_flag="yes";
+
+  meta = with stdenv.lib; {
+    description = "Lightweight Emacs clone";
+
+    longDescription = ''
+      GNU Zile, which is a lightweight Emacs clone.  Zile is short
+      for Zile Is Lossy Emacs.  Zile has been written to be as
+      similar as possible to Emacs; every Emacs user should feel at
+      home.
+
+      Zile has all of Emacs's basic editing features: it is 8-bit
+      clean (though it currently lacks Unicode support), and the
+      number of editing buffers and windows is only limited by
+      available memory and screen space respectively.  Registers,
+      minibuffer completion and auto fill are available.  Function
+      and variable names are identical with Emacs's (except those
+      containing the word "emacs", which instead contain the word
+      "zile"!).
+
+      However, all of this is packed into a program which typically
+      compiles to about 130Kb.
+    '';
+
+    homepage = "https://www.gnu.org/software/zile/";
+
+    license = licenses.gpl3Plus;
+
+    maintainers = with maintainers; [ pSub ];
+
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/gis/grass/default.nix b/nixpkgs/pkgs/applications/gis/grass/default.nix
new file mode 100644
index 000000000000..420f57bb93fe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/gis/grass/default.nix
@@ -0,0 +1,108 @@
+{ stdenv, fetchFromGitHub, flex, bison, pkgconfig, zlib, libtiff, libpng, fftw
+, cairo, readline, ffmpeg_3, makeWrapper, wxGTK30, netcdf, blas
+, proj, gdal, geos, sqlite, postgresql, libmysqlclient, python2Packages, libLAS, proj-datumgrid
+}:
+
+stdenv.mkDerivation rec {
+  name = "grass";
+  version = "7.6.1";
+
+  src = with stdenv.lib; fetchFromGitHub {
+    owner = "OSGeo";
+    repo = "grass";
+    rev = "${name}_${replaceStrings ["."] ["_"] version}";
+    sha256 = "1amjk9rz7vw5ha7nyl5j2bfwj5if9w62nlwx5qbp1x7spldimlll";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ flex bison zlib proj gdal libtiff libpng fftw sqlite cairo proj
+  readline ffmpeg_3 makeWrapper wxGTK30 netcdf geos postgresql libmysqlclient blas
+  libLAS proj-datumgrid ]
+    ++ (with python2Packages; [ python dateutil wxPython30 numpy ]);
+
+  # On Darwin the installer tries to symlink the help files into a system
+  # directory
+  patches = [ ./no_symbolic_links.patch ];
+
+  # Correct mysql_config query
+  patchPhase = ''
+      substituteInPlace configure --replace "--libmysqld-libs" "--libs"
+  '';
+
+  configureFlags = [
+    "--with-proj-share=${proj}/share/proj"
+    "--with-proj-includes=${proj.dev}/include"
+    "--with-proj-lib=${proj}/lib"
+    "--without-opengl"
+    "--with-readline"
+    "--with-wxwidgets"
+    "--with-netcdf"
+    "--with-geos"
+    "--with-postgres"
+    "--with-postgres-libs=${postgresql.lib}/lib/"
+    # it complains about missing libmysqld but doesn't really seem to need it
+    "--with-mysql"
+    "--with-mysql-includes=${libmysqlclient}/include/mysql"
+    "--with-mysql-libs=${libmysqlclient}/lib/mysql"
+    "--with-blas"
+    "--with-liblas=${libLAS}/bin/liblas-config"
+  ];
+
+  # Otherwise a very confusing "Can't load GDAL library" error
+  makeFlags = stdenv.lib.optional stdenv.isDarwin "GDAL_DYNAMIC=";
+
+  /* Ensures that the python script run at build time are actually executable;
+   * otherwise, patchShebangs ignores them.  */
+  postConfigure = ''
+    chmod +x scripts/d.out.file/d.out.file.py \
+      scripts/d.to.rast/d.to.rast.py \
+      scripts/d.what.rast/d.what.rast.py \
+      scripts/d.what.vect/d.what.vect.py \
+      scripts/g.extension/g.extension.py \
+      scripts/g.extension.all/g.extension.all.py \
+      scripts/r.drain/r.drain.py \
+      scripts/r.pack/r.pack.py \
+      scripts/r.tileset/r.tileset.py \
+      scripts/r.unpack/r.unpack.py \
+      scripts/v.clip/v.clip.py \
+      scripts/v.rast.stats/v.rast.stats.py \
+      scripts/v.to.lines/v.to.lines.py \
+      scripts/v.what.strds/v.what.strds.py \
+      scripts/v.unpack/v.unpack.py \
+      scripts/wxpyimgview/*.py \
+      gui/wxpython/animation/g.gui.animation.py \
+      gui/wxpython/datacatalog/g.gui.datacatalog.py \
+      gui/wxpython/rlisetup/g.gui.rlisetup.py \
+      gui/wxpython/vdigit/g.gui.vdigit.py \
+      temporal/t.rast.accumulate/t.rast.accumulate.py \
+      temporal/t.rast.accdetect/t.rast.accdetect.py \
+      temporal/t.rast.algebra/t.rast.algebra.py \
+      temporal/t.rast3d.algebra/t.rast3d.algebra.py \
+      temporal/t.vect.algebra/t.vect.algebra.py \
+      temporal/t.select/t.select.py
+    for d in gui lib scripts temporal tools; do
+      patchShebangs $d
+    done
+  '';
+
+  NIX_CFLAGS_COMPILE = "-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H=1";
+
+  postInstall = ''
+    wrapProgram $out/bin/grass76 \
+    --set PYTHONPATH $PYTHONPATH \
+    --set GRASS_PYTHON ${python2Packages.python}/bin/${python2Packages.python.executable} \
+    --suffix LD_LIBRARY_PATH ':' '${gdal}/lib'
+    ln -s $out/grass*/lib $out/lib
+    ln -s $out/grass*/include $out/include
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    homepage = "https://grass.osgeo.org/";
+    description = "GIS software suite used for geospatial data management and analysis, image processing, graphics and maps production, spatial modeling, and visualization";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.all;
+    maintainers = with stdenv.lib.maintainers; [mpickering];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/gis/grass/no_symbolic_links.patch b/nixpkgs/pkgs/applications/gis/grass/no_symbolic_links.patch
new file mode 100644
index 000000000000..ef09b97b7037
--- /dev/null
+++ b/nixpkgs/pkgs/applications/gis/grass/no_symbolic_links.patch
@@ -0,0 +1,37 @@
+diff --git a/include/Make/Install.make b/include/Make/Install.make
+index 0aba138..8ba74bc 100644
+--- a/include/Make/Install.make
++++ b/include/Make/Install.make
+@@ -116,11 +116,6 @@ real-install: | $(INST_DIR) $(UNIX_BIN)
+ 	-$(INSTALL) config.status $(INST_DIR)/config.status
+ 	-$(CHMOD) -R a+rX $(INST_DIR) 2>/dev/null
+ 
+-ifneq ($(findstring darwin,$(ARCH)),)
+-	@# enable OSX Help Viewer
+-	@/bin/ln -sfh "$(INST_DIR)/docs/html" /Library/Documentation/Help/GRASS-$(GRASS_VERSION_MAJOR).$(GRASS_VERSION_MINOR)
+-endif
+-
+ $(INST_DIR) $(UNIX_BIN):
+ 	$(MAKE_DIR_CMD) $@
+ 
+diff --git a/macosx/app/build_html_user_index.sh b/macosx/app/build_html_user_index.sh
+index 04e63eb..c9d9c2c 100755
+--- a/macosx/app/build_html_user_index.sh
++++ b/macosx/app/build_html_user_index.sh
+@@ -140,7 +140,6 @@ else
+ #      echo "<tr><td valign=\"top\"><a href=\"$HTMLDIRG/$i\">$BASENAME</a></td> <td>$SHORTDESC</td></tr>" >> $FULLINDEX
+       # make them local to user to simplify page links
+       echo "<tr><td valign=\"top\"><a href=\"global_$i\">$BASENAME</a></td> <td>$SHORTDESC</td></tr>" >> $FULLINDEX
+-      ln -sf "$HTMLDIRG/$i" global_$i
+     done
+   done
+ fi
+@@ -183,8 +182,3 @@ echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
+ </html>" > $i.html
+ done
+ 
+-# add Help Viewer links in user docs folder
+-
+-mkdir -p $HOME/Library/Documentation/Help/
+-ln -sfh ../../GRASS/$GRASS_MMVER/Modules/docs/html $HOME/Library/Documentation/Help/GRASS-$GRASS_MMVER-addon
+-ln -sfh $GISBASE/docs/html $HOME/Library/Documentation/Help/GRASS-$GRASS_MMVER
diff --git a/nixpkgs/pkgs/applications/gis/openorienteering-mapper/default.nix b/nixpkgs/pkgs/applications/gis/openorienteering-mapper/default.nix
new file mode 100644
index 000000000000..39f8694dd177
--- /dev/null
+++ b/nixpkgs/pkgs/applications/gis/openorienteering-mapper/default.nix
@@ -0,0 +1,93 @@
+{ stdenv
+, mkDerivation
+, fetchFromGitHub
+, gdal
+, cmake
+, ninja
+, proj
+, clipper
+, zlib
+, qttools
+, qtlocation
+, qtsensors
+, qttranslations
+, doxygen
+, cups
+, qtimageformats
+}:
+
+mkDerivation rec {
+  pname = "OpenOrienteering-Mapper";
+  version = "0.9.3";
+
+  buildInputs = [
+    gdal
+    qtlocation
+    qtimageformats
+    qtsensors
+    clipper
+    zlib
+    proj
+    cups
+  ];
+
+  nativeBuildInputs = [ cmake doxygen ninja qttools ];
+
+  src = fetchFromGitHub {
+    owner = "OpenOrienteering";
+    repo = "mapper";
+    rev = "v${version}";
+    sha256 = "05bliglpc8170px6k9lfrp9ylpnb2zf47gnjns9b2bif8dv8zq0l";
+  };
+
+  patches = [
+    # See https://github.com/NixOS/nixpkgs/issues/86054
+    ./fix-qttranslations-path.diff
+  ];
+
+  postPatch = ''
+    substituteInPlace src/util/translation_util.cpp \
+      --subst-var-by qttranslations ${qttranslations}
+  '';
+
+  cmakeFlags = [
+    # Building the manual and bundling licenses fails
+    # See https://github.com/NixOS/nixpkgs/issues/85306
+    "-DLICENSING_PROVIDER:BOOL=OFF"
+    "-DMapper_MANUAL_QTHELP:BOOL=OFF"
+  ] ++ stdenv.lib.optionals stdenv.isDarwin [
+    # Usually enabled on Darwin
+    "-DCMAKE_FIND_FRAMEWORK=never"
+    # FindGDAL is broken and always finds /Library/Framework unless this is
+    # specified
+    "-DGDAL_INCLUDE_DIR=${gdal}/include"
+    "-DGDAL_CONFIG=${gdal}/bin/gdal-config"
+    "-DGDAL_LIBRARY=${gdal}/lib/libgdal.dylib"
+    # Don't bundle libraries
+    "-DMapper_PACKAGE_PROJ=0"
+    "-DMapper_PACKAGE_QT=0"
+    "-DMapper_PACKAGE_ASSISTANT=0"
+    "-DMapper_PACKAGE_GDAL=0"
+  ];
+
+  postInstall = with stdenv; lib.optionalString isDarwin ''
+    mkdir -p $out/Applications
+    mv $out/Mapper.app $out/Applications
+    # Fixes "This application failed to start because it could not find or load the Qt
+    # platform plugin "cocoa"."
+    wrapQtApp $out/Applications/Mapper.app/Contents/MacOS/Mapper
+    mkdir -p $out/bin
+    ln -s $out/Applications/Mapper.app/Contents/MacOS/Mapper $out/bin/mapper
+  '';
+
+  meta = with stdenv.lib; {
+    description = ''
+      OpenOrienteering Mapper is an orienteering mapmaking program
+      and provides a free alternative to the existing proprietary solution.
+    '';
+    homepage = "https://www.openorienteering.org/apps/mapper/";
+    license = licenses.gpl3;
+    platforms = with platforms; linux ++ darwin;
+    maintainers = with maintainers; [ mpickering sikmir ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/gis/openorienteering-mapper/fix-qttranslations-path.diff b/nixpkgs/pkgs/applications/gis/openorienteering-mapper/fix-qttranslations-path.diff
new file mode 100644
index 000000000000..06c465a8fb33
--- /dev/null
+++ b/nixpkgs/pkgs/applications/gis/openorienteering-mapper/fix-qttranslations-path.diff
@@ -0,0 +1,13 @@
+diff --git i/src/util/translation_util.cpp w/src/util/translation_util.cpp
+index da03d216..c1f12751 100644
+--- i/src/util/translation_util.cpp
++++ w/src/util/translation_util.cpp
+@@ -103,7 +103,7 @@ TranslationUtil::TranslationUtil(const QString& code, QString translation_file)
+ 	}
+ 	
+ 	QString translation_name = QLatin1String("qt_") + language.code;
+-	if (!qt_translator.load(translation_name, QLibraryInfo::location(QLibraryInfo::TranslationsPath)))
++	if (!qt_translator.load(translation_name, QLatin1String("@qttranslations@/translations")))
+ 		load(qt_translator, translation_name);
+ 	
+ 	load(app_translator, translation_file);
diff --git a/nixpkgs/pkgs/applications/gis/qgis/default.nix b/nixpkgs/pkgs/applications/gis/qgis/default.nix
new file mode 100644
index 000000000000..f272fd04dd0d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/gis/qgis/default.nix
@@ -0,0 +1,27 @@
+{ lib, makeWrapper, symlinkJoin
+, qgis-unwrapped, extraPythonPackages ? (ps: [ ])
+}:
+with lib;
+symlinkJoin rec {
+  inherit (qgis-unwrapped) version;
+  name = "qgis-${version}";
+
+  paths = [ qgis-unwrapped ];
+
+  nativeBuildInputs = [ makeWrapper qgis-unwrapped.python3Packages.wrapPython ];
+
+  # extend to add to the python environment of QGIS without rebuilding QGIS application.
+  pythonInputs = qgis-unwrapped.pythonBuildInputs ++ (extraPythonPackages qgis-unwrapped.python3Packages);
+
+  postBuild = ''
+    # unpackPhase
+
+    buildPythonPath "$pythonInputs"
+
+    wrapProgram $out/bin/qgis \
+      --prefix PATH : $program_PATH \
+      --set PYTHONPATH $program_PYTHONPATH
+  '';
+
+  meta = qgis-unwrapped.meta;
+}
diff --git a/nixpkgs/pkgs/applications/gis/qgis/unwrapped.nix b/nixpkgs/pkgs/applications/gis/qgis/unwrapped.nix
new file mode 100644
index 000000000000..2e11f22f517b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/gis/qgis/unwrapped.nix
@@ -0,0 +1,57 @@
+{ mkDerivation, lib, fetchFromGitHub, cmake, ninja, flex, bison, proj, geos, xlibsWrapper, sqlite, gsl
+, qwt, fcgi, python3Packages, libspatialindex, libspatialite, postgresql
+, txt2tags, openssl, libzip, hdf5, netcdf, exiv2
+, qtbase, qtwebkit, qtsensors, qca-qt5, qtkeychain, qscintilla, qtserialport, qtxmlpatterns
+, withGrass ? true, grass
+}:
+with lib;
+let
+  pythonBuildInputs = with python3Packages;
+    [ qscintilla-qt5 gdal jinja2 numpy psycopg2
+      chardet dateutil pyyaml pytz requests urllib3 pygments pyqt5 sip owslib six ];
+in mkDerivation rec {
+  version = "3.10.4";
+  pname = "qgis";
+  name = "${pname}-unwrapped-${version}";
+
+  src = fetchFromGitHub {
+    owner = "qgis";
+    repo = "QGIS";
+    rev = "final-${lib.replaceStrings ["."] ["_"] version}";
+    sha256 = "0d1rsgjgnnq6jgms5bgppz8lkh4518nf90fk0qvxajdfi9j4jn12";
+  };
+
+  passthru = {
+    inherit pythonBuildInputs;
+    inherit python3Packages;
+  };
+
+  buildInputs = [ openssl proj geos xlibsWrapper sqlite gsl qwt exiv2
+    fcgi libspatialindex libspatialite postgresql txt2tags libzip hdf5 netcdf
+    qtbase qtwebkit qtsensors qca-qt5 qtkeychain qscintilla qtserialport qtxmlpatterns] ++
+    (lib.optional withGrass grass) ++ pythonBuildInputs;
+
+  nativeBuildInputs = [ cmake flex bison ninja ];
+
+  # Force this pyqt_sip_dir variable to point to the sip dir in PyQt5
+  #
+  # TODO: Correct PyQt5 to provide the expected directory and fix
+  # build to use PYQT5_SIP_DIR consistently.
+  postPatch = ''
+     substituteInPlace cmake/FindPyQt5.py \
+       --replace 'sip_dir = cfg.default_sip_dir' 'sip_dir = "${python3Packages.pyqt5}/share/sip/PyQt5"'
+   '';
+
+  cmakeFlags = [ "-DCMAKE_SKIP_BUILD_RPATH=OFF"
+                 "-DPYQT5_SIP_DIR=${python3Packages.pyqt5}/share/sip/PyQt5"
+                 "-DQSCI_SIP_DIR=${python3Packages.qscintilla-qt5}/share/sip/PyQt5" ] ++
+                 lib.optional withGrass "-DGRASS_PREFIX7=${grass}/${grass.name}";
+
+  meta = {
+    description = "A Free and Open Source Geographic Information System";
+    homepage = "http://www.qgis.org";
+    license = lib.licenses.gpl2Plus;
+    platforms = with lib.platforms; linux;
+    maintainers = with lib.maintainers; [ lsix ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/gis/saga/clang_patch.patch b/nixpkgs/pkgs/applications/gis/saga/clang_patch.patch
new file mode 100644
index 000000000000..e6af8d130514
--- /dev/null
+++ b/nixpkgs/pkgs/applications/gis/saga/clang_patch.patch
@@ -0,0 +1,19 @@
+commit e92b250968e9656084ab5984689747ca615ff6e7
+Author: Volker Wichmann <wichmann@laserdata.at>
+Date:   Sun Mar 5 13:49:53 2017 +0100
+
+    saga_api, CSG_Table::Del_Records(): bug fix, check record count correctly
+
+diff --git a/src/saga_core/saga_api/table.cpp b/src/saga_core/saga_api/table.cpp
+index 76a1d8d..fa1a66f 100644
+--- a/src/saga_core/saga_api/table.cpp
++++ b/src/saga_core/saga_api/table.cpp
+@@ -901,7 +901,7 @@ bool CSG_Table::Del_Record(int iRecord)
+ //---------------------------------------------------------
+ bool CSG_Table::Del_Records(void)
+ {
+-	if( m_Records > 0 )
++	if( m_nRecords > 0 )
+ 	{
+ 		_Index_Destroy();
+
diff --git a/nixpkgs/pkgs/applications/gis/saga/default.nix b/nixpkgs/pkgs/applications/gis/saga/default.nix
new file mode 100644
index 000000000000..053272b1efa7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/gis/saga/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, gdal, wxGTK30, proj, libiodbc, lzma,
+  libharu, opencv2, vigra, postgresql, Cocoa,
+  unixODBC , poppler, hdf4, hdf5, netcdf, sqlite, qhull, giflib }:
+
+stdenv.mkDerivation {
+  pname = "saga";
+  version = "7.6.3";
+
+  # See https://groups.google.com/forum/#!topic/nix-devel/h_vSzEJAPXs
+  # for why the have additional buildInputs on darwin
+  buildInputs = [ gdal wxGTK30 proj libharu opencv2 vigra postgresql libiodbc lzma
+                  qhull giflib ]
+                ++ stdenv.lib.optionals stdenv.isDarwin
+                  [ Cocoa unixODBC poppler hdf4.out hdf5 netcdf sqlite ];
+
+  enableParallelBuilding = true;
+
+  CXXFLAGS = stdenv.lib.optionalString stdenv.cc.isClang "-std=c++11 -Wno-narrowing";
+
+  src = fetchurl {
+    url = "https://sourceforge.net/projects/saga-gis/files/SAGA%20-%207/SAGA%20-%207.6.3/saga-7.6.3.tar.gz";
+    sha256 = "0f1qy2y929gd9y7h45bkv9x71xapbzyn06v6wqivjaiydsi1qycb";
+  };
+
+  meta = with stdenv.lib; {
+    description = "System for Automated Geoscientific Analyses";
+    homepage = "http://www.saga-gis.org";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ michelk mpickering ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/gis/saga/finite.patch b/nixpkgs/pkgs/applications/gis/saga/finite.patch
new file mode 100644
index 000000000000..7f60743534bd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/gis/saga/finite.patch
@@ -0,0 +1,13 @@
+diff --git a/saga-gis/src/modules/imagery/imagery_maxent/me.cpp b/saga-gis/src/modules/imagery/imagery_maxent/me.cpp
+index c5da854..d3e9cff 100755
+--- a/src/modules/imagery/imagery_maxent/me.cpp
++++ b/src/modules/imagery/imagery_maxent/me.cpp
+@@ -21,7 +21,7 @@
+ #ifdef _SAGA_MSW
+ #define isinf(x) (!_finite(x))
+ #else
+-#define isinf(x) (!finite(x))
++#define isinf(x) (!isfinite(x))
+ #endif
+
+ /** The input array contains a set of log probabilities lp1, lp2, lp3
diff --git a/nixpkgs/pkgs/applications/gis/whitebox-tools/default.nix b/nixpkgs/pkgs/applications/gis/whitebox-tools/default.nix
new file mode 100644
index 000000000000..d81a08e29008
--- /dev/null
+++ b/nixpkgs/pkgs/applications/gis/whitebox-tools/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, rustPlatform , fetchFromGitHub, Security }:
+rustPlatform.buildRustPackage rec {
+  pname = "whitebox_tools";
+  version = "1.2.0";
+
+  src = fetchFromGitHub {
+    owner = "jblindsay";
+    repo = "whitebox-tools";
+    rev = "v${version}";
+    sha256 = "0zi32d0wrbl2763dcllv2g0liwacsfiza5lkx52620prjjbhby8i";
+  };
+
+  buildInputs = stdenv.lib.optional stdenv.isDarwin Security;
+
+  cargoSha256 = "13k21akyfqgamywj39bw73sldby1s02vyvxfglxbaqq1x96xcy4i";
+
+  # failures: structures::polyline::test::test_polyline_split
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "An advanced geospatial data analysis platform";
+    homepage = "http://www.uoguelph.ca/~hydrogeo/WhiteboxTools/index.html";
+    license = licenses.mit;
+    maintainers = [ maintainers.mpickering ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/ImageMagick/7.0.nix b/nixpkgs/pkgs/applications/graphics/ImageMagick/7.0.nix
new file mode 100644
index 000000000000..9bcf517e1d9e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/ImageMagick/7.0.nix
@@ -0,0 +1,88 @@
+{ lib, stdenv, fetchFromGitHub, pkgconfig, libtool
+, bzip2, zlib, libX11, libXext, libXt, fontconfig, freetype, ghostscript, libjpeg, djvulibre
+, lcms2, openexr, libpng, librsvg, libtiff, libxml2, openjpeg, libwebp, libheif
+, ApplicationServices
+}:
+
+let
+  arch =
+    if stdenv.hostPlatform.system == "i686-linux" then "i686"
+    else if stdenv.hostPlatform.system == "x86_64-linux" || stdenv.hostPlatform.system == "x86_64-darwin" then "x86-64"
+    else if stdenv.hostPlatform.system == "armv7l-linux" then "armv7l"
+    else if stdenv.hostPlatform.system == "aarch64-linux" then "aarch64"
+    else throw "ImageMagick is not supported on this platform.";
+
+  cfg = {
+    version = "7.0.10-17";
+    sha256 = "15cj9qkikx13j6gfqaawi4nh09lnzg3asf5mdcswx6z6yhbf90zx";
+    patches = [];
+  };
+in
+
+stdenv.mkDerivation {
+  pname = "imagemagick";
+  inherit (cfg) version;
+
+  src = fetchFromGitHub {
+    owner = "ImageMagick";
+    repo = "ImageMagick";
+    rev = cfg.version;
+    inherit (cfg) sha256;
+  };
+
+  patches = cfg.patches;
+
+  outputs = [ "out" "dev" "doc" ]; # bin/ isn't really big
+  outputMan = "out"; # it's tiny
+
+  enableParallelBuilding = true;
+
+  configureFlags =
+    [ "--with-frozenpaths" ]
+    ++ [ "--with-gcc-arch=${arch}" ]
+    ++ lib.optional (librsvg != null) "--with-rsvg"
+    ++ lib.optionals (ghostscript != null)
+      [ "--with-gs-font-dir=${ghostscript}/share/ghostscript/fonts"
+        "--with-gslib"
+      ]
+    ++ lib.optionals stdenv.hostPlatform.isMinGW
+      [ "--enable-static" "--disable-shared" ] # due to libxml2 being without DLLs ATM
+    ;
+
+  nativeBuildInputs = [ pkgconfig libtool ];
+
+  buildInputs =
+    [ zlib fontconfig freetype ghostscript
+      libpng libtiff libxml2 libheif djvulibre
+    ]
+    ++ lib.optionals (!stdenv.hostPlatform.isMinGW)
+      [ openexr librsvg openjpeg ]
+    ++ lib.optional stdenv.isDarwin ApplicationServices;
+
+  propagatedBuildInputs =
+    [ bzip2 freetype libjpeg lcms2 ]
+    ++ lib.optionals (!stdenv.hostPlatform.isMinGW)
+      [ libX11 libXext libXt libwebp ]
+    ;
+
+  postInstall = ''
+    (cd "$dev/include" && ln -s ImageMagick* ImageMagick)
+    moveToOutput "bin/*-config" "$dev"
+    moveToOutput "lib/ImageMagick-*/config-Q16HDRI" "$dev" # includes configure params
+    for file in "$dev"/bin/*-config; do
+      substituteInPlace "$file" --replace pkg-config \
+        "PKG_CONFIG_PATH='$dev/lib/pkgconfig' '${pkgconfig}/bin/${pkgconfig.targetPrefix}pkg-config'"
+    done
+  '' + lib.optionalString (ghostscript != null) ''
+    for la in $out/lib/*.la; do
+      sed 's|-lgs|-L${lib.getLib ghostscript}/lib -lgs|' -i $la
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.imagemagick.org/";
+    description = "A software suite to create, edit, compose, or convert bitmap images";
+    platforms = platforms.linux ++ platforms.darwin;
+    license = licenses.asl20;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/ImageMagick/default.nix b/nixpkgs/pkgs/applications/graphics/ImageMagick/default.nix
new file mode 100644
index 000000000000..7a2ae8e4d66f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/ImageMagick/default.nix
@@ -0,0 +1,104 @@
+{ lib, stdenv, fetchFromGitHub, fetchpatch, pkgconfig, libtool
+, bzip2, zlib, libX11, libXext, libXt, fontconfig, freetype, ghostscript, libjpeg, djvulibre
+, lcms2, openexr, libpng, librsvg, libtiff, libxml2, openjpeg, libwebp, fftw, libheif, libde265
+, ApplicationServices
+}:
+
+let
+  arch =
+    if stdenv.hostPlatform.system == "i686-linux" then "i686"
+    else if stdenv.hostPlatform.system == "x86_64-linux" || stdenv.hostPlatform.system == "x86_64-darwin" then "x86-64"
+    else if stdenv.hostPlatform.system == "armv7l-linux" then "armv7l"
+    else if stdenv.hostPlatform.system == "aarch64-linux" then "aarch64"
+    else throw "ImageMagick is not supported on this platform.";
+
+  cfg = {
+    version = "6.9.11-14";
+    sha256 = "0x51vf48g75cfp0mbwf3ckmlwa6v00592xx3gvrqzjzx7vlayjyg";
+    patches = [];
+  }
+    # Freeze version on mingw so we don't need to port the patch too often.
+    # FIXME: This version has multiple security vulnerabilities
+    // lib.optionalAttrs (stdenv.hostPlatform.isMinGW) {
+        version = "6.9.2-0";
+        sha256 = "17ir8bw1j7g7srqmsz3rx780sgnc21zfn0kwyj78iazrywldx8h7";
+        patches = [(fetchpatch {
+          name = "mingw-build.patch";
+          url = "https://raw.githubusercontent.com/Alexpux/MINGW-packages/"
+            + "01ca03b2a4ef/mingw-w64-imagemagick/002-build-fixes.patch";
+          sha256 = "1pypszlcx2sf7wfi4p37w1y58ck2r8cd5b2wrrwr9rh87p7fy1c0";
+        })];
+      };
+in
+
+stdenv.mkDerivation {
+  pname = "imagemagick";
+  inherit (cfg) version;
+
+  src = fetchFromGitHub {
+    owner = "ImageMagick";
+    repo = "ImageMagick6";
+    rev = cfg.version;
+    inherit (cfg) sha256;
+  };
+
+  patches = cfg.patches;
+
+  outputs = [ "out" "dev" "doc" ]; # bin/ isn't really big
+  outputMan = "out"; # it's tiny
+
+  enableParallelBuilding = true;
+
+  configureFlags =
+    [ "--with-frozenpaths" ]
+    ++ [ "--with-gcc-arch=${arch}" ]
+    ++ lib.optional (librsvg != null) "--with-rsvg"
+    ++ lib.optionals (ghostscript != null)
+      [ "--with-gs-font-dir=${ghostscript}/share/ghostscript/fonts"
+        "--with-gslib"
+      ]
+    ++ lib.optionals (stdenv.hostPlatform.isMinGW)
+      [ "--enable-static" "--disable-shared" ] # due to libxml2 being without DLLs ATM
+    ;
+
+  nativeBuildInputs = [ pkgconfig libtool ];
+
+  buildInputs =
+    [ zlib fontconfig freetype ghostscript
+      libpng libtiff libxml2 libheif libde265 djvulibre
+    ]
+    ++ lib.optionals (!stdenv.hostPlatform.isMinGW)
+      [ openexr librsvg openjpeg ]
+    ++ lib.optional stdenv.isDarwin ApplicationServices;
+
+  propagatedBuildInputs =
+    [ bzip2 freetype libjpeg lcms2 fftw ]
+    ++ lib.optionals (!stdenv.hostPlatform.isMinGW)
+      [ libX11 libXext libXt libwebp ]
+    ;
+
+  doCheck = false; # fails 6 out of 76 tests
+
+  postInstall = ''
+    (cd "$dev/include" && ln -s ImageMagick* ImageMagick)
+    moveToOutput "bin/*-config" "$dev"
+    moveToOutput "lib/ImageMagick-*/config-Q16" "$dev" # includes configure params
+    for file in "$dev"/bin/*-config; do
+      substituteInPlace "$file" --replace "${pkgconfig}/bin/pkg-config -config" \
+        ${pkgconfig}/bin/${pkgconfig.targetPrefix}pkg-config
+      substituteInPlace "$file" --replace ${pkgconfig}/bin/pkg-config \
+        "PKG_CONFIG_PATH='$dev/lib/pkgconfig' '${pkgconfig}/bin/${pkgconfig.targetPrefix}pkg-config'"
+    done
+  '' + lib.optionalString (ghostscript != null) ''
+    for la in $out/lib/*.la; do
+      sed 's|-lgs|-L${lib.getLib ghostscript}/lib -lgs|' -i $la
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.imagemagick.org/";
+    description = "A software suite to create, edit, compose, or convert bitmap images";
+    platforms = platforms.linux ++ platforms.darwin;
+    license = licenses.asl20;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/ahoviewer/default.nix b/nixpkgs/pkgs/applications/graphics/ahoviewer/default.nix
new file mode 100644
index 000000000000..c5f1bf868018
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/ahoviewer/default.nix
@@ -0,0 +1,53 @@
+{ config, stdenv, fetchFromGitHub, pkgconfig, libconfig
+, gtkmm2, glibmm, libxml2, libsecret, curl, libzip
+, librsvg, gst_all_1, autoreconfHook, makeWrapper
+, useUnrar ? config.ahoviewer.useUnrar or false, unrar
+}:
+
+assert useUnrar -> unrar != null;
+
+stdenv.mkDerivation rec {
+  pname = "ahoviewer";
+  version = "1.6.5";
+
+  src = fetchFromGitHub {
+    owner = "ahodesuka";
+    repo = "ahoviewer";
+    rev = version;
+    sha256 = "1avdl4qcpznvf3s2id5qi1vnzy4wgh6vxpnrz777a1s4iydxpcd8";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig makeWrapper ];
+  buildInputs = [
+    glibmm libconfig gtkmm2 glibmm libxml2
+    libsecret curl libzip librsvg
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-good
+    gst_all_1.gst-libav
+    gst_all_1.gst-plugins-base
+  ] ++ stdenv.lib.optional useUnrar unrar;
+
+  NIX_LDFLAGS = "-lpthread";
+
+  postPatch = ''patchShebangs version.sh'';
+
+  postInstall = ''
+    wrapProgram $out/bin/ahoviewer \
+    --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0" \
+    --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/ahodesuka/ahoviewer";
+    description = "A GTK2 image viewer, manga reader, and booru browser";
+    maintainers = with maintainers; [ skrzyp xzfc ];
+    license = licenses.mit;
+    # Unintentionally not working on Darwin:
+    # https://github.com/ahodesuka/ahoviewer/issues/62
+    platforms = platforms.linux;
+  };
+}
+
+
diff --git a/nixpkgs/pkgs/applications/graphics/akira/default.nix b/nixpkgs/pkgs/applications/graphics/akira/default.nix
new file mode 100644
index 000000000000..adbc1eac3796
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/akira/default.nix
@@ -0,0 +1,76 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, appstream-glib
+, desktop-file-utils
+, meson
+, ninja
+, pantheon
+, pkgconfig
+, python3
+, vala
+, vala-lint
+, wrapGAppsHook
+, cairo
+, glib
+, goocanvas2
+, gtk3
+, gtksourceview3
+, json-glib
+, libarchive
+, libgee
+, libxml2 }:
+
+stdenv.mkDerivation rec {
+  pname = "akira";
+  version = "2019-10-12";
+
+  src = fetchFromGitHub {
+    owner = "akiraux";
+    repo = "Akira";
+    rev = "cab952dee4591b6bde34d670c1f853f5a3ff6b19";
+    sha256 = "1fp3a79hkh6xwwqqdrx4zqq2zhsm236c6fhhl5f2nmi108yxz04q";
+  };
+
+  nativeBuildInputs = [
+    appstream-glib
+    desktop-file-utils
+    meson
+    ninja
+    pkgconfig
+    python3
+    vala
+    vala-lint
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    cairo
+    glib
+    goocanvas2
+    pantheon.granite
+    gtk3
+    gtksourceview3
+    json-glib
+    libarchive
+    libgee
+    libxml2
+  ];
+
+  mesonFlags = [ "-Dprofile=default" ];
+
+  patches = [ ./fix-build-with-vala-0-44-or-later.patch ];
+
+  postPatch = ''
+    chmod +x build-aux/meson/post_install.py
+    patchShebangs build-aux/meson/post_install.py
+  '';
+
+  meta = with lib; {
+    description = "Native Linux Design application built in Vala and GTK";
+    homepage = "https://github.com/akiraux/Akira";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ filalex77 ] ++ pantheon.maintainers;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/akira/fix-build-with-vala-0-44-or-later.patch b/nixpkgs/pkgs/applications/graphics/akira/fix-build-with-vala-0-44-or-later.patch
new file mode 100644
index 000000000000..3c35900c04f5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/akira/fix-build-with-vala-0-44-or-later.patch
@@ -0,0 +1,88 @@
+From bcda8fd53f6f232db0b6411269ba108af551629f Mon Sep 17 00:00:00 2001
+From: Alberto Fanjul <albertofanjul@gmail.com>
+Date: Tue, 9 Apr 2019 09:45:36 +0200
+Subject: [PATCH] Build on vala >= 0.44.2
+
+---
+ src/FileFormat/JsonObject.vala        |  2 +-
+ src/FileFormat/JsonObjectArray.vala   |  2 +-
+ src/FileFormat/ZipArchiveHandler.vala | 18 +++++++++++++++++-
+ 3 files changed, 19 insertions(+), 3 deletions(-)
+
+diff --git a/src/FileFormat/JsonObject.vala b/src/FileFormat/JsonObject.vala
+index 7bfe46f..805fbad 100644
+--- a/src/FileFormat/JsonObject.vala
++++ b/src/FileFormat/JsonObject.vala
+@@ -31,7 +31,7 @@ public abstract class Akira.FileFormat.JsonObject : GLib.Object {
+ 
+     private ObjectClass obj_class;
+ 
+-    public JsonObject.from_object (Json.Object object) {
++    protected JsonObject.from_object (Json.Object object) {
+         Object (object: object);
+     }
+ 
+diff --git a/src/FileFormat/JsonObjectArray.vala b/src/FileFormat/JsonObjectArray.vala
+index 4f6e573..d0a7dad 100644
+--- a/src/FileFormat/JsonObjectArray.vala
++++ b/src/FileFormat/JsonObjectArray.vala
+@@ -31,7 +31,7 @@ public abstract class Akira.FileFormat.JsonObjectArray : Object {
+      *
+      * Your JsonObject implementation should have it's own list of items
+      */
+-    public JsonObjectArray (Json.Object object, string property_name) {
++    protected JsonObjectArray (Json.Object object, string property_name) {
+         Object (object: object, property_name: property_name);
+     }
+ 
+diff --git a/src/FileFormat/ZipArchiveHandler.vala b/src/FileFormat/ZipArchiveHandler.vala
+index ca60dd0..5d65aa2 100644
+--- a/src/FileFormat/ZipArchiveHandler.vala
++++ b/src/FileFormat/ZipArchiveHandler.vala
+@@ -262,11 +262,17 @@ public class Akira.FileFormat.ZipArchiveHandler : GLib.Object {
+                 continue;
+             }
+ 
++            Posix.off_t offset;
++#if VALA_0_42
++            uint8[] buffer;
++            while (archive.read_data_block (out buffer, out offset) == Archive.Result.OK) {
++                if (extractor.write_data_block (buffer, offset) != Archive.Result.OK) {
++#else
+             void* buffer = null;
+             size_t buffer_length;
+-            Posix.off_t offset;
+             while (archive.read_data_block (out buffer, out buffer_length, out offset) == Archive.Result.OK) {
+                 if (extractor.write_data_block (buffer, buffer_length, offset) != Archive.Result.OK) {
++#endif
+                     break;
+                 }
+             }
+@@ -316,9 +322,15 @@ public class Akira.FileFormat.ZipArchiveHandler : GLib.Object {
+                     // Add an entry to the archive
+                     Archive.Entry entry = new Archive.Entry ();
+                     entry.set_pathname (initial_folder.get_relative_path (current_file));
++#if VALA_0_42
++                    entry.set_size ((Archive.int64_t) file_info.get_size ());
++                    entry.set_filetype (Archive.FileType.IFREG);
++                    entry.set_perm (Archive.FileType.IFREG);
++#else
+                     entry.set_size (file_info.get_size ());
+                     entry.set_filetype ((uint) Posix.S_IFREG);
+                     entry.set_perm (0644);
++#endif
+ 
+                     if (archive.write_header (entry) != Archive.Result.OK) {
+                         critical ("Error writing '%s': %s (%d)", current_file.get_path (), archive.error_string (), archive.errno ());
+@@ -333,7 +345,11 @@ public class Akira.FileFormat.ZipArchiveHandler : GLib.Object {
+                             break;
+                         }
+ 
++#if VALA_0_42
++                        archive.write_data (buffer[0:bytes_read]);
++#else
+                         archive.write_data (buffer, bytes_read);
++#endif
+                     }
+                 }
+             }
diff --git a/nixpkgs/pkgs/applications/graphics/alchemy/default.nix b/nixpkgs/pkgs/applications/graphics/alchemy/default.nix
new file mode 100644
index 000000000000..6fc84e088dd3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/alchemy/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, jre, runtimeShell }:
+
+stdenv.mkDerivation rec {
+  pname = "alchemy";
+  version = "008";
+
+  enableParallelBuilding = true;
+
+  src = fetchurl {
+    url = "http://al.chemy.org/files/Alchemy-${version}.tar.gz";
+    sha256 = "0449bvdccgx1jqnws1bckzs4nv2d230523qs0jx015gi81s1q7li";
+  };
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share
+    cp -a . $out/share/alchemy
+    cat >> $out/bin/alchemy << EOF
+    #!${runtimeShell}
+    cd $out/share/alchemy
+    ${jre}/bin/java -jar Alchemy.jar "$@"
+    EOF
+    chmod +x $out/bin/alchemy
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Drawing application";
+    longDescription = ''
+      Alchemy is an open drawing project aimed at exploring how we can sketch,
+      draw, and create on computers in new ways. Alchemy isn’t software for
+      creating finished artwork, but rather a sketching environment that
+      focuses on the absolute initial stage of the creation process.
+      Experimental in nature, Alchemy lets you brainstorm visually to explore
+      an expanded range of ideas and possibilities in a serendipitous way.
+    '';
+    homepage = "http://al.chemy.org/";
+    license = licenses.gpl3Plus;
+    maintainers = [ maintainers.marcweber ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/animbar/default.nix b/nixpkgs/pkgs/applications/graphics/animbar/default.nix
new file mode 100644
index 000000000000..771145d54b65
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/animbar/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, lib, fetchurl, cmake, qt4, file }:
+
+stdenv.mkDerivation rec {
+  pname = "animbar";
+  version = "1.2";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.bz2";
+    sha256 = "0836nwcpyfdrapyj3hbg3wh149ihc26pc78h01adpc7c0r7d9pr9";
+  };
+
+  nativeBuildInputs = [ cmake  ];
+
+  buildInputs = [ qt4 file ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/pixmaps
+    cp src/animbar $out/bin
+    cp ../icon/* $out/share/pixmaps
+  '';
+
+  meta = with lib; {
+    description = "Create your own animation on paper and transparancy";
+    longDescription = ''
+	Animbar lets you easily create your own animation on paper and
+	transparancy. From a set of input images two output images are
+	computed, that are printed one on paper and one on
+	transparency. By moving the transparency over the paper you
+	create a fascinating animation effect. This kind of animation
+	technique is hundreds of years old and known under several
+	names: picket fence animation, barrier grid animation, Moiré
+	animation, to name a few.
+    '';
+    homepage = "http://animbar.mnim.org";
+    maintainers = with maintainers; [ leenaars ];
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/antimony/default.nix b/nixpkgs/pkgs/applications/graphics/antimony/default.nix
new file mode 100644
index 000000000000..363f3b8c84d9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/antimony/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchFromGitHub, libpng, python3
+, libGLU, libGL, qtbase, wrapQtAppsHook, ncurses
+, cmake, flex, lemon
+}:
+
+let
+  gitRev    = "8fb4b0929ce84cf375bfb83a9d522ccd80681eaf";
+  gitBranch = "develop";
+  gitTag    = "0.9.3";
+in
+  stdenv.mkDerivation {
+    pname = "antimony";
+    version = "2020-03-28";
+
+    src = fetchFromGitHub {
+      owner  = "mkeeter";
+      repo   = "antimony";
+      rev    = gitRev;
+      sha256 = "1s0zmq5jmhmb1wcsyaxfmii448g6x8b41mzvb1awlljj85qj0k2s";
+    };
+
+    patches = [ ./paths-fix.patch ];
+
+    postPatch = ''
+       sed -i "s,/usr/local,$out,g" \
+       app/CMakeLists.txt app/app/app.cpp app/app/main.cpp
+       sed -i "s,python3,${python3.executable}," CMakeLists.txt
+    '';
+
+    buildInputs = [
+      libpng python3 python3.pkgs.boost
+      libGLU libGL qtbase ncurses
+    ];
+
+    nativeBuildInputs = [ cmake flex lemon wrapQtAppsHook ];
+
+    cmakeFlags= [
+      "-DGITREV=${gitRev}"
+      "-DGITTAG=${gitTag}"
+      "-DGITBRANCH=${gitBranch}"
+    ];
+
+    enableParallelBuilding = true;
+
+    meta = with stdenv.lib; {
+      description = "A computer-aided design (CAD) tool from a parallel universe";
+      homepage    = "https://github.com/mkeeter/antimony";
+      license     = licenses.mit;
+      maintainers = with maintainers; [ rnhmjoj ];
+      platforms   = platforms.linux;
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/graphics/antimony/paths-fix.patch b/nixpkgs/pkgs/applications/graphics/antimony/paths-fix.patch
new file mode 100644
index 000000000000..9235dd6cdce1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/antimony/paths-fix.patch
@@ -0,0 +1,21 @@
+diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
+index ddc5c9b..d80728a 100644
+--- a/app/CMakeLists.txt
++++ b/app/CMakeLists.txt
+@@ -158,16 +158,6 @@ target_link_libraries(${ANTIMONY_APP}
+ 
+ ################################################################################
+ 
+-execute_process(COMMAND git log --pretty=format:'%h' -n 1
+-                OUTPUT_VARIABLE GITREV)
+-execute_process(COMMAND bash -c "git diff --quiet --exit-code || echo +"
+-                OUTPUT_VARIABLE GITDIFF)
+-execute_process(COMMAND git describe --exact-match --tags
+-                OUTPUT_VARIABLE GITTAG
+-                ERROR_QUIET)
+-execute_process(COMMAND git rev-parse --abbrev-ref HEAD
+-                OUTPUT_VARIABLE GITBRANCH)
+-
+ add_definitions(-D'GITREV="${GITREV}${GITDIFF}"'
+                 -D'GITTAG="${GITTAG}"'
+                 -D'GITBRANCH="${GITBRANCH}"')
diff --git a/nixpkgs/pkgs/applications/graphics/apitrace/default.nix b/nixpkgs/pkgs/applications/graphics/apitrace/default.nix
new file mode 100644
index 000000000000..e6865d2d8f07
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/apitrace/default.nix
@@ -0,0 +1,67 @@
+{ stdenv, fetchFromGitHub, cmake, libX11, procps, python2, libdwarf, qtbase, qtwebkit, wrapQtAppsHook, libglvnd }:
+
+stdenv.mkDerivation rec {
+  pname = "apitrace";
+  version = "7.1-572-g${builtins.substring 0 8 src.rev}";
+
+  src = fetchFromGitHub {
+    sha256 = "11bwb0l8cr1bf9bj1s6cbmi77d5fy4qrphj9cgmcd8jpa862anp5";
+    rev = "26966134f15d28f6b4a9a0a560017b3ba36d60bf";
+    repo = "apitrace";
+    owner = "apitrace";
+  };
+
+  # LD_PRELOAD wrappers need to be statically linked to work against all kinds
+  # of games -- so it's fine to use e.g. bundled snappy.
+  buildInputs = [ libX11 procps python2 libdwarf qtbase qtwebkit ];
+
+  nativeBuildInputs = [ cmake wrapQtAppsHook ];
+
+  # Don't automatically wrap all binaries, I prefer to explicitly only wrap
+  # `qapitrace`.
+  dontWrapQtApps = true;
+
+  postFixup = ''
+
+    # Since https://github.com/NixOS/nixpkgs/pull/60985, we add `/run-opengl-driver[-32]`
+    # to the `RUNPATH` of dispatcher libraries `dlopen()` ing OpenGL drivers.
+    # `RUNPATH` doesn't propagate throughout the whole application, but only
+    # from the module performing the `dlopen()`.
+    # 
+    # Apitrace wraps programs by running them with `LD_PRELOAD` pointing to `.so`
+    # files in $out/lib/apitrace/wrappers.
+    # 
+    # Theses wrappers effectively wrap the `dlopen()` calls from `libglvnd`
+    # and other dispatcher libraries, and run `dlopen()`  by themselves.
+    # 
+    # As `RUNPATH` doesn't propagate through the whole library, and they're now the
+    # library doing the real `dlopen()`, they also need to have
+    # `/run-opengl-driver[-32]` added to their `RUNPATH`.
+    #
+    # To stay simple, we add paths for 32 and 64 bits unconditionally.
+    # This doesn't have an impact on closure size, and if the 32 bit drivers
+    # are not available, that folder is ignored.
+    for i in $out/lib/apitrace/wrappers/*.so
+    do
+      echo "Patching OpenGL driver path for $i"
+      patchelf --set-rpath "/run/opengl-driver/lib:/run/opengl-driver-32/lib:$(patchelf --print-rpath $i)" $i
+    done
+
+    # Theses open the OpenGL driver at runtime, but it is not listed as NEEDED libraries. They need
+    # a reference to libglvnd.
+    for i in $out/bin/eglretrace $out/bin/glretrace
+    do
+      echo "Patching RPath for $i"
+      patchelf --set-rpath "${stdenv.lib.makeLibraryPath [libglvnd]}:$(patchelf --print-rpath $i)" $i
+    done
+
+    wrapQtApp $out/bin/qapitrace
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://apitrace.github.io";
+    description = "Tools to trace OpenGL, OpenGL ES, Direct3D, and DirectDraw APIs";
+    license = licenses.mit;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/apngasm/2.nix b/nixpkgs/pkgs/applications/graphics/apngasm/2.nix
new file mode 100644
index 000000000000..166bc135c193
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/apngasm/2.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchzip, libpng, zlib, zopfli }:
+
+stdenv.mkDerivation rec {
+  pname = "apngasm";
+  version = "2.91";
+
+  src = fetchzip {
+    url = "mirror://sourceforge/${pname}/${pname}-${version}-src.zip";
+    stripRoot = false;
+    sha256 = "0qhljqql159xkn1l83vz0q8wvzr7rjz4jnhiy0zn36pgvacg0zn1";
+  };
+
+  buildInputs = [ libpng zlib zopfli ];
+
+  postPatch = ''
+    rm -rf libpng zlib zopfli
+  '';
+
+  NIX_CFLAGS_LINK = "-lzopfli";
+
+  installPhase = ''
+    install -Dt $out/bin apngasm
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Create highly optimized Animated PNG files from PNG/TGA images";
+    homepage = "http://apngasm.sourceforge.net/";
+    license = licenses.zlib;
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/graphics/apngasm/default.nix b/nixpkgs/pkgs/applications/graphics/apngasm/default.nix
new file mode 100644
index 000000000000..8d50696efcbd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/apngasm/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, cmake, boost, libpng, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "apngasm";
+  version = "3.1.9";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "d50bfb0cf14c376f4cfb94eb91c61d795a76b715"; # not tagged, but in debian/changelog
+    sha256 = "0pk0r8x1950pm6j3d5wgryvy3ldm7a9gl59jmnwnjmg1sf9mzf97";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ boost libpng zlib ];
+
+  meta = with stdenv.lib; {
+    description = "Create an APNG from multiple PNG files";
+    homepage = "https://github.com/apngasm/apngasm";
+    license = licenses.zlib;
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/graphics/autopanosiftc/default.nix b/nixpkgs/pkgs/applications/graphics/autopanosiftc/default.nix
new file mode 100644
index 000000000000..14af98ebc48b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/autopanosiftc/default.nix
@@ -0,0 +1,26 @@
+{stdenv, fetchurl, cmake, libpng, libtiff, libjpeg, panotools, libxml2 }:
+
+stdenv.mkDerivation {
+  name = "autopano-sift-C-2.5.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/hugin/autopano-sift-C-2.5.1.tar.gz";
+    sha256 = "0dqk8ff82gmy4v5ns5nr9gpzkc1p7c2y8c8fkid102r47wsjk44s";
+  };
+
+  buildInputs = [ cmake libpng libtiff libjpeg panotools libxml2 ];
+
+  patches = [
+    (fetchurl {
+      url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/media-gfx/autopano-sift-C/files/autopano-sift-C-2.5.1-lm.patch";
+      sha256 = "1bfcr5sps0ip9gl4jprji5jgf9wkczz6d2clsjjlbsy8r3ixi3lv";
+    })
+  ];
+
+  meta = {
+    homepage = "http://hugin.sourceforge.net/";
+    description = "Implementation in C of the autopano-sift algorithm for automatically stitching panoramas";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/autotrace/autofig.nix b/nixpkgs/pkgs/applications/graphics/autotrace/autofig.nix
new file mode 100644
index 000000000000..0f53965786b9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/autotrace/autofig.nix
@@ -0,0 +1,10 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation {
+  name = "autofig-0.1";
+
+  src = fetchurl {
+    url = "http://autotrace.sourceforge.net/tools/autofig.tar.gz";
+    sha256 = "11cs9hdbgcl3aamcs3149i8kvyyldmnjf6yq81kbcf8fdmfk2zdq";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/autotrace/default.nix b/nixpkgs/pkgs/applications/graphics/autotrace/default.nix
new file mode 100644
index 000000000000..cd7937f8a549
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/autotrace/default.nix
@@ -0,0 +1,125 @@
+{ stdenv, fetchurl, callPackage, libpng12, imagemagick
+, autoreconfHook, glib, pstoedit, pkgconfig, gettext, gd, darwin
+, runtimeShell }:
+
+# TODO: Figure out why the resultant binary is somehow linked against
+# libpng16.so.16 rather than libpng12.
+
+stdenv.mkDerivation rec {
+  pname = "autotrace";
+  version = "0.31.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/autotrace/AutoTrace/0.31.1/${pname}-${version}.tar.gz";
+    sha256 = "1xmgja5fv48mdbsa51inf7ksz36nqd6bsaybrk5xgprm6cy946js";
+  };
+
+  # The below commented out part is for an identically-named project
+  # on GitHub which appears to derive somehow from the Sourceforge
+  # version, but I have no idea what the lineage is of this project.
+  # It will build, but it segfaults when I attempt to run -centerline.
+  # Someone may need this for some reason, so I've left it here.
+  #
+  #src = fetchFromGitHub {
+  #  owner = "autotrace";
+  #  repo = "autotrace";
+  #  rev = "b3ac8818d86943102cb4f13734e0b527c42dc45a";
+  #  sha256 = "0z5h2mvxwckk2msi361zk1nc9fdcvxyimyc2hlyqd6h8k3p7zdi4";
+  #};
+  #postConfigure = ''
+  #  sed -i -e "s/at_string/gchar */g" *.c
+  #  sed -i -e "s/at_address/gpointer/g" *.c
+  #  sed -i -e "s/at_bitmap_type/struct _at_bitmap/g" *.c
+  #  sed -i -e "s/AT_BITMAP_BITS(bitmap)/AT_BITMAP_BITS(\&bitmap)/g" input-magick.c
+  #'';
+
+  autofig = callPackage ./autofig.nix {};
+  nativeBuildInputs = [ autoreconfHook glib autofig pkgconfig gettext ];
+  buildInputs = [ libpng12 imagemagick pstoedit ]
+    ++ stdenv.lib.optionals stdenv.isDarwin
+       (with darwin.apple_sdk.frameworks; [ gd ApplicationServices ]);
+
+  postUnpack = ''
+    pushd $sourceRoot
+    autofig autotrace-config.af
+    popd
+  '';
+
+  # This complains about various m4 files, but it appears to not be an
+  # actual error.
+  preConfigure = ''
+    glib-gettextize --copy --force
+    # pstoedit-config no longer exists, it was replaced with pkg-config
+    mkdir wrappers
+    cat >wrappers/pstoedit-config <<'EOF'
+    #!${runtimeShell}
+    # replace --version with --modversion for pkg-config
+    args=''${@/--version/--modversion}
+    exec pkg-config pstoedit "''${args[@]}"
+    EOF
+    chmod +x wrappers/pstoedit-config
+    export PATH="$PATH:$PWD/wrappers"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://autotrace.sourceforge.net/";
+    description = "Utility for converting bitmap into vector graphics";
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ hodapp ];
+    license = licenses.gpl2;
+    knownVulnerabilities = [
+      "CVE-2013-1953"
+      "CVE-2016-7392"
+      "CVE-2017-9151"
+      "CVE-2017-9152"
+      "CVE-2017-9153"
+      "CVE-2017-9154"
+      "CVE-2017-9155"
+      "CVE-2017-9156"
+      "CVE-2017-9157"
+      "CVE-2017-9158"
+      "CVE-2017-9159"
+      "CVE-2017-9160"
+      "CVE-2017-9161"
+      "CVE-2017-9162"
+      "CVE-2017-9163"
+      "CVE-2017-9164"
+      "CVE-2017-9165"
+      "CVE-2017-9166"
+      "CVE-2017-9167"
+      "CVE-2017-9168"
+      "CVE-2017-9169"
+      "CVE-2017-9170"
+      "CVE-2017-9171"
+      "CVE-2017-9172"
+      "CVE-2017-9173"
+      "CVE-2017-9174"
+      "CVE-2017-9175"
+      "CVE-2017-9176"
+      "CVE-2017-9177"
+      "CVE-2017-9178"
+      "CVE-2017-9179"
+      "CVE-2017-9180"
+      "CVE-2017-9181"
+      "CVE-2017-9182"
+      "CVE-2017-9183"
+      "CVE-2017-9184"
+      "CVE-2017-9185"
+      "CVE-2017-9186"
+      "CVE-2017-9187"
+      "CVE-2017-9188"
+      "CVE-2017-9189"
+      "CVE-2017-9190"
+      "CVE-2017-9191"
+      "CVE-2017-9192"
+      "CVE-2017-9193"
+      "CVE-2017-9194"
+      "CVE-2017-9195"
+      "CVE-2017-9196"
+      "CVE-2017-9197"
+      "CVE-2017-9198"
+      "CVE-2017-9199"
+      "CVE-2017-9200"
+    ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/avocode/default.nix b/nixpkgs/pkgs/applications/graphics/avocode/default.nix
new file mode 100644
index 000000000000..fa97ceb5eb2f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/avocode/default.nix
@@ -0,0 +1,102 @@
+{ stdenv, makeDesktopItem, fetchurl, unzip
+, gdk-pixbuf, glib, gtk3, atk, at-spi2-atk, pango, cairo, freetype, fontconfig, dbus, nss, nspr, alsaLib, cups, expat, udev, gnome3
+, xorg, mozjpeg, makeWrapper, wrapGAppsHook, libuuid, at-spi2-core
+}:
+
+stdenv.mkDerivation rec {
+  pname = "avocode";
+  version = "4.7.0";
+
+  src = fetchurl {
+    url = "https://media.avocode.com/download/avocode-app/${version}/avocode-${version}-linux.zip";
+    sha256 = "0kn0422k4vi2qifasnkd0cjf5l6z0rmkqv6l46ygxk3qyykjnqcm";
+  };
+
+  libPath = stdenv.lib.makeLibraryPath (with xorg; [
+    stdenv.cc.cc.lib
+    at-spi2-core.out
+    gdk-pixbuf
+    glib
+    gtk3
+    atk
+    at-spi2-atk
+    pango
+    cairo
+    freetype
+    fontconfig
+    dbus
+    nss
+    nspr
+    alsaLib
+    cups
+    expat
+    udev
+    libX11
+    libxcb
+    libXi
+    libXcursor
+    libXdamage
+    libXrandr
+    libXcomposite
+    libXext
+    libXfixes
+    libXrender
+    libXtst
+    libXScrnSaver
+    libuuid
+  ]);
+
+  desktopItem = makeDesktopItem {
+    name = "Avocode";
+    exec = "avocode";
+    icon = "avocode";
+    desktopName = "Avocode";
+    genericName = "Design Inspector";
+    categories = "Application;Development;";
+    comment = "The bridge between designers and developers";
+  };
+
+  nativeBuildInputs = [makeWrapper wrapGAppsHook];
+  buildInputs = [ unzip gtk3 gnome3.adwaita-icon-theme ];
+
+  # src is producing multiple folder on unzip so we must
+  # override unpackCmd to extract it into newly created folder
+  unpackCmd = ''
+    mkdir out
+    unzip $curSrc -d out
+  '';
+
+  installPhase = ''
+    substituteInPlace avocode.desktop.in \
+      --replace /path/to/avocode-dir/Avocode $out/bin/avocode \
+      --replace /path/to/avocode-dir/avocode.png avocode
+
+    mkdir -p share/applications share/pixmaps
+    mv avocode.desktop.in share/applications/avocode.desktop
+    mv avocode.png share/pixmaps/
+
+    rm resources/cjpeg
+    cp -av . $out
+
+    mkdir $out/bin
+    ln -s $out/avocode $out/bin/avocode
+    ln -s ${mozjpeg}/bin/cjpeg $out/resources/cjpeg
+  '';
+
+  postFixup = ''
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/avocode
+    for file in $(find $out -type f \( -perm /0111 -o -name \*.so\* \) ); do
+      patchelf --set-rpath ${libPath}:$out/ $file || true
+    done
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://avocode.com/";
+    description = "The bridge between designers and developers";
+    license = licenses.unfree;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ megheaiulian ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/awesomebump/default.nix b/nixpkgs/pkgs/applications/graphics/awesomebump/default.nix
new file mode 100644
index 000000000000..4d79f10a9e10
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/awesomebump/default.nix
@@ -0,0 +1,63 @@
+{ mkDerivation, lib, fetchgit, qtbase, qmake, qtscript, flex, bison, qtdeclarative }:
+
+
+let
+  version = "5.1";
+
+  src = fetchgit {
+    url = "https://github.com/kmkolasinski/AwesomeBump.git";
+    rev = "Winx32v${version}";
+    sha256 = "1c8b9jki0v8kzkvsvyv7q1w3s7j40br6ph15hh2xi0a1mpwckq56";
+    fetchSubmodules = true;
+  };
+
+  qtnproperty = mkDerivation {
+    name = "qtnproperty";
+    inherit src;
+    sourceRoot = "AwesomeBump/Sources/utils/QtnProperty";
+    patches = [ ./qtnproperty-parallel-building.patch ];
+    buildInputs = [ qtscript qtbase qtdeclarative ];
+    nativeBuildInputs = [ qmake flex bison ];
+    postInstall = ''
+      install -D bin-linux/QtnPEG $out/bin/QtnPEG
+    '';
+  };
+in mkDerivation {
+  pname = "awesomebump";
+  inherit version;
+
+  inherit src;
+
+  buildInputs = [ qtbase qtscript qtdeclarative ];
+
+  nativeBuildInputs = [ qmake ];
+
+  preBuild = ''
+    ln -sf ${qtnproperty}/bin/QtnPEG Sources/utils/QtnProperty/bin-linux/QtnPEG
+  '';
+
+  dontWrapQtApps = true;
+  postInstall = ''
+    d=$out/libexec/AwesomeBump
+
+    mkdir -p $d
+    cp -vr workdir/`cat workdir/current`/bin/AwesomeBump $d/
+    cp -prd Bin/Configs Bin/Core $d/
+
+    # AwesomeBump expects to find Core and Configs in its current directory.
+    makeQtWrapper $d/AwesomeBump $out/bin/AwesomeBump \
+        --run "cd $d"
+  '';
+
+  # $ cd Sources; qmake; make ../workdir/linux-g++-dgb-gl4/obj/glwidget.o
+  # fatal error: properties/ImageProperties.peg.h: No such file or directory
+  enableParallelBuilding = false;
+
+  meta = {
+    homepage = "https://github.com/kmkolasinski/AwesomeBump";
+    description = "A program to generate normal, height, specular or ambient occlusion textures from a single image";
+    license = lib.licenses.gpl3Plus;
+    maintainers = [ lib.maintainers.eelco ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/awesomebump/qtnproperty-parallel-building.patch b/nixpkgs/pkgs/applications/graphics/awesomebump/qtnproperty-parallel-building.patch
new file mode 100644
index 000000000000..b3f8e68dd1ad
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/awesomebump/qtnproperty-parallel-building.patch
@@ -0,0 +1,9 @@
+--- a/PEG/Flex.pri
++++ b/PEG/Flex.pri
+@@ -1,5 +1,6 @@
+ flex.name = Flex ${QMAKE_FILE_IN}
+ flex.input = FLEX_SOURCES
++flex.depends = ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}.parser.cpp
+ flex.output = ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}.lexer.cpp
+ 
+ win32:flex.commands = win_flex --wincompat -o ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}.lexer.cpp ${QMAKE_FILE_IN}
diff --git a/nixpkgs/pkgs/applications/graphics/azpainter/default.nix b/nixpkgs/pkgs/applications/graphics/azpainter/default.nix
new file mode 100644
index 000000000000..c2e7ce6f35d3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/azpainter/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub
+, libX11, libXext, libXi
+, freetype, fontconfig
+, libpng, libjpeg
+, zlib
+}:
+
+stdenv.mkDerivation rec {
+  pname = "azpainter";
+  version = "2.1.6";
+
+  src = fetchFromGitHub {
+    owner = "Symbian9";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0i5g67s4ysnvbaxmi7dhan0hfcfk8an14xykkafl47pqfx33npva";
+  };
+
+  buildInputs = [
+    libX11 libXext libXi
+    freetype fontconfig
+    libpng libjpeg
+    zlib
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Full color painting software for illustration drawing";
+    homepage = "https://osdn.net/projects/azpainter";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ dtzWill ];
+    platforms = with platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/batik/builder.sh b/nixpkgs/pkgs/applications/graphics/batik/builder.sh
new file mode 100755
index 000000000000..c6cf64bf3700
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/batik/builder.sh
@@ -0,0 +1,7 @@
+set -e
+
+source $stdenv/setup
+
+unzip $src
+mkdir $out
+mv batik-* $out/batik
diff --git a/nixpkgs/pkgs/applications/graphics/batik/default.nix b/nixpkgs/pkgs/applications/graphics/batik/default.nix
new file mode 100644
index 000000000000..3c78c8b6dbd2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/batik/default.nix
@@ -0,0 +1,25 @@
+{stdenv, fetchurl, unzip}:
+
+stdenv.mkDerivation {
+  name = "batik-1.6";
+  builder = ./builder.sh;
+  src = fetchurl {
+    url = "http://tarballs.nixos.org/batik-1.6.zip";
+    sha256 = "0cf15dspmzcnfda8w5lbsdx28m4v2rpq1dv5zx0r0n99ihqd1sh6";
+  };
+
+  buildInputs = [unzip];
+
+  meta = with stdenv.lib; {
+    description = "Java based toolkit for handling SVG";
+    homepage = "https://xmlgraphics.apache.org/batik";
+    license = licenses.asl20;
+    platforms = platforms.unix;
+    knownVulnerabilities = [
+      # vulnerabilities as of 16th October 2018 from https://xmlgraphics.apache.org/security.html:
+      "CVE-2018-8013"
+      "CVE-2017-5662"
+      "CVE-2015-0250"
+    ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/c3d/default.nix b/nixpkgs/pkgs/applications/graphics/c3d/default.nix
new file mode 100644
index 000000000000..61efec8dc9d4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/c3d/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchgit, cmake, itk4, Cocoa }:
+
+stdenv.mkDerivation {
+  pname   = "c3d";
+  version = "unstable-2019-10-22";
+
+  src = fetchgit {
+    url    = "https://github.com/pyushkevich/c3d";
+    rev    = "c04e2b84568654665c64d8843378c8bbd58ba9b0";
+    sha256 = "0lzldxvshl9q362mg76byc7s5zc9qx7mxf2wgyij5vysx8mihx3q";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ itk4 ]
+    ++ stdenv.lib.optional stdenv.isDarwin Cocoa;
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.itksnap.org/c3d";
+    description = "Medical imaging processing tool";
+    maintainers = with maintainers; [ bcdarwin ];
+    platforms = platforms.unix;
+    license = licenses.gpl2;
+    broken = stdenv.isAarch64;
+    # /build/git-3453f61/itkextras/OneDimensionalInPlaceAccumulateFilter.txx:311:10: fatal error: xmmintrin.h: No such file or directory
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/comical/default.nix b/nixpkgs/pkgs/applications/graphics/comical/default.nix
new file mode 100644
index 000000000000..8e6e151aff6a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/comical/default.nix
@@ -0,0 +1,23 @@
+{stdenv, fetchurl, wxGTK, utillinux, zlib }:
+
+stdenv.mkDerivation rec {
+  name = "comical-0.8";
+  src = fetchurl {
+    url = "mirror://sourceforge/comical/${name}.tar.gz";
+    sha256 = "0b6527cc06b25a937041f1eb248d0fd881cf055362097036b939817f785ab85e";
+  };
+  buildInputs = [ wxGTK utillinux zlib ];
+  preBuild="makeFlags=\"prefix=$out\"";
+
+  patches = [ ./wxgtk-2.8.patch ];
+
+  preInstall = "mkdir -pv $out/bin";
+
+  meta = {
+    description = "Viewer of CBR and CBZ files, often used to store scanned comics";
+    homepage = "http://comical.sourceforge.net/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/comical/wxgtk-2.8.patch b/nixpkgs/pkgs/applications/graphics/comical/wxgtk-2.8.patch
new file mode 100644
index 000000000000..db7626074a0f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/comical/wxgtk-2.8.patch
@@ -0,0 +1,36 @@
+diff --git a/Makefile b/Makefile
+index a648e72..181c47f 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,5 +1,5 @@
+ CC = `wx-config --cxx`
+-LDFLAGS = `wx-config --libs` -Lunrar -lunrar -Lunzip -lminiunzip
++LDFLAGS = `wx-config --libs` -Lunrar -lunrar -Lunzip -lminiunzip -lz
+ INSTALL = install
+ INSTALL_PROGRAM = $(INSTALL)
+ prefix = /usr/local
+diff --git a/src/ComicalApp.cpp b/src/ComicalApp.cpp
+index 0c004cd..667e75e 100644
+--- a/src/ComicalApp.cpp
++++ b/src/ComicalApp.cpp
+@@ -28,6 +28,7 @@
+ #include "ComicalApp.h"
+ #include "ComicalFrame.h"
+ #include <wx/log.h>
++#include <wx/icon.h>
+ 
+ #if !defined(__WXMAC__) && !defined(__WXCOCOA__) && !defined(__WXMSW__) && !defined(__WXPM__)
+ #include "../Comical Icons/comical.xpm"
+diff --git a/unzip/unzip.h b/unzip/unzip.h
+index b247937..5bb6a69 100644
+--- a/unzip/unzip.h
++++ b/unzip/unzip.h
+@@ -50,7 +50,7 @@ extern "C" {
+ #endif
+ 
+ #ifndef _ZLIB_H
+-#include "zlib.h"
++#include <zlib.h>
+ #endif
+ 
+ #ifndef _ZLIBIOAPI_H
diff --git a/nixpkgs/pkgs/applications/graphics/cq-editor/default.nix b/nixpkgs/pkgs/applications/graphics/cq-editor/default.nix
new file mode 100644
index 000000000000..036edf80ab90
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/cq-editor/default.nix
@@ -0,0 +1,57 @@
+{ lib
+, mkDerivationWith
+, python3Packages
+, fetchFromGitHub
+}:
+
+mkDerivationWith python3Packages.buildPythonApplication rec {
+  pname = "cq-editor";
+  version = "0.1.1";
+
+  src = fetchFromGitHub {
+    owner = "CadQuery";
+    repo = "CQ-editor";
+    rev = version;
+    sha256 = "1970izjaa60r5cg9i35rzz9lk5c5d8q1vw1rh2skvfbf63z1hnzv";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    cadquery
+    Logbook
+    pyqt5
+    pyparsing
+    pyqtgraph
+    spyder_3
+    pathpy
+    qtconsole
+    requests
+  ];
+
+  postFixup = ''
+    wrapQtApp "$out/bin/cq-editor"
+  '';
+
+  checkInputs = with python3Packages; [
+    pytest
+    pytest-xvfb
+    pytest-mock
+    pytestcov
+    pytest-repeat
+    pytest-qt
+  ];
+
+  checkPhase = ''
+    pytest --no-xvfb
+  '';
+
+  # requires X server
+  doCheck = false;
+
+  meta = with lib; {
+    description = "CadQuery GUI editor based on PyQT";
+    homepage = "https://github.com/CadQuery/CQ-editor";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ costrouc marcus7070 ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/graphics/darktable/default.nix b/nixpkgs/pkgs/applications/graphics/darktable/default.nix
new file mode 100644
index 000000000000..b021c186b5c5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/darktable/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchurl, libsoup, graphicsmagick, json-glib, wrapGAppsHook
+, cairo, cmake, ninja, curl, perl, llvm, desktop-file-utils, exiv2, glib
+, ilmbase, gtk3, intltool, lcms2, lensfun, libX11, libexif, libgphoto2, libjpeg
+, libpng, librsvg, libtiff, openexr, osm-gps-map, pkgconfig, sqlite, libxslt
+, openjpeg, lua, pugixml, colord, colord-gtk, libwebp, libsecret, gnome3
+, ocl-icd, pcre, gtk-mac-integration, isocodes, llvmPackages
+}:
+
+stdenv.mkDerivation rec {
+  version = "3.0.2";
+  pname = "darktable";
+
+  src = fetchurl {
+    url = "https://github.com/darktable-org/darktable/releases/download/release-${version}/darktable-${version}.tar.xz";
+    sha256 = "1yrnkw8c47kmy2x6m1xp69hwyk02xyc8pd9kvcmyj54lzrhzdfka";
+  };
+
+  nativeBuildInputs = [ cmake ninja llvm pkgconfig intltool perl desktop-file-utils wrapGAppsHook ];
+
+  buildInputs = [
+    cairo curl exiv2 glib gtk3 ilmbase lcms2 lensfun libexif
+    libgphoto2 libjpeg libpng librsvg libtiff openexr sqlite libxslt
+    libsoup graphicsmagick json-glib openjpeg lua pugixml
+    libwebp libsecret gnome3.adwaita-icon-theme osm-gps-map pcre isocodes
+  ] ++ stdenv.lib.optionals stdenv.isLinux [
+    colord colord-gtk libX11 ocl-icd
+  ] ++ stdenv.lib.optional stdenv.isDarwin gtk-mac-integration
+    ++ stdenv.lib.optional stdenv.cc.isClang llvmPackages.openmp;
+
+  cmakeFlags = [
+    "-DBUILD_USERMANUAL=False"
+  ] ++ stdenv.lib.optionals stdenv.isDarwin [
+    "-DUSE_COLORD=OFF"
+    "-DUSE_KWALLET=OFF"
+  ];
+
+  # Reduce the risk of collisions
+  postInstall = "rm -r $out/share/doc";
+
+  # darktable changed its rpath handling in commit
+  # 83c70b876af6484506901e6b381304ae0d073d3c and as a result the
+  # binaries can't find libdarktable.so, so change LD_LIBRARY_PATH in
+  # the wrappers:
+  preFixup = let
+    libPathEnvVar = if stdenv.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH";
+    libPathPrefix = "$out/lib/darktable" + stdenv.lib.optionalString stdenv.isLinux ":${ocl-icd}/lib";
+  in ''
+    gappsWrapperArgs+=(
+      --prefix ${libPathEnvVar} ":" "${libPathPrefix}"
+    )
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Virtual lighttable and darkroom for photographers";
+    homepage = "https://www.darktable.org";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = with maintainers; [ goibhniu flosse mrVanDalo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/deskew/default.nix b/nixpkgs/pkgs/applications/graphics/deskew/default.nix
new file mode 100644
index 000000000000..422c7a0e15e8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/deskew/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromBitbucket, libtiff, fpc }:
+
+stdenv.mkDerivation rec {
+
+  pname = "deskew";
+  version = "1.25";
+
+  src = fetchFromBitbucket {
+    owner = "galfar";
+    repo = "app-deskew";
+    rev = "v${version}";
+    sha256 = "0zjjj66qhgqkmfxl3q7p78dv4xl4ci918pgl4d5259pqdj1bfgc8";
+  };
+
+  nativeBuildInputs = [ fpc ];
+  buildInputs = [ libtiff ];
+
+  buildPhase = ''
+    rm -r Bin # Remove pre-compiled binary
+    mkdir Bin
+    chmod +x compile.sh
+    ./compile.sh
+  '';
+
+  installPhase = ''
+    install -Dt $out/bin Bin/*
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A command line tool for deskewing scanned text documents";
+    homepage = "https://bitbucket.org/galfar/app-deskew/overview";
+    license = licenses.mit;
+    maintainers = with maintainers; [ryantm];
+    platforms = platforms.all;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/graphics/dia/default.nix b/nixpkgs/pkgs/applications/graphics/dia/default.nix
new file mode 100644
index 000000000000..6ec54201fbfa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/dia/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchgit, autoconf, automake, libtool, gtk2, pkgconfig, perlPackages,
+libxml2, gettext, python, libxml2Python, docbook5, docbook_xsl,
+libxslt, intltool, libart_lgpl, withGNOME ? false, libgnomeui,
+gtk-mac-integration-gtk2 }:
+
+stdenv.mkDerivation {
+  pname = "dia";
+  version = "0.97.3.20170622";
+
+  src = fetchgit {
+    url = "https://gitlab.gnome.org/GNOME/dia.git";
+    rev = "b86085dfe2b048a2d37d587adf8ceba6fb8bc43c";
+    sha256 = "1fyxfrzdcs6blxhkw3bcgkksaf3byrsj4cbyrqgb4869k3ynap96";
+  };
+
+  buildInputs =
+    [ gtk2 libxml2 gettext python libxml2Python docbook5
+      libxslt docbook_xsl libart_lgpl ]
+      ++ stdenv.lib.optional withGNOME libgnomeui
+      ++ stdenv.lib.optional stdenv.isDarwin gtk-mac-integration-gtk2;
+
+  nativeBuildInputs = [ autoconf automake libtool pkgconfig intltool ]
+    ++ (with perlPackages; [ perl XMLParser ]);
+
+  preConfigure = ''
+    NOCONFIGURE=1 ./autogen.sh # autoreconfHook is not enough
+  '';
+  configureFlags = stdenv.lib.optional withGNOME "--enable-gnome";
+
+  hardeningDisable = [ "format" ];
+
+  meta = with stdenv.lib; {
+    description = "Gnome Diagram drawing software";
+    homepage = "http://live.gnome.org/Dia";
+    maintainers = with maintainers; [ raskin ];
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/digikam/default.nix b/nixpkgs/pkgs/applications/graphics/digikam/default.nix
new file mode 100644
index 000000000000..63b8d7b3f609
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/digikam/default.nix
@@ -0,0 +1,131 @@
+{ mkDerivation, lib, fetchFromGitHub, cmake, doxygen, extra-cmake-modules, wrapGAppsHook
+
+# For `digitaglinktree`
+, perl, sqlite
+
+, qtbase
+, qtxmlpatterns
+, qtsvg
+, qtwebengine
+
+, akonadi-contacts
+, kcalendarcore
+, kconfigwidgets
+, kcoreaddons
+, kdoctools
+, kfilemetadata
+, knotifications
+, knotifyconfig
+, ktextwidgets
+, kwidgetsaddons
+, kxmlgui
+
+, bison
+, boost
+, eigen
+, exiv2
+, ffmpeg
+, flex
+, jasper ? null, withJpeg2k ? false  # disable JPEG2000 support, jasper has unfixed CVE
+, lcms2
+, lensfun
+, libgphoto2
+, libkipi
+, libksane
+, liblqr1
+, libqtav
+, libusb1
+, marble
+, libGL
+, libGLU
+, opencv3
+, pcre
+, threadweaver
+
+# For panorama and focus stacking
+, enblend-enfuse
+, hugin
+, gnumake
+
+, oxygen
+}:
+
+mkDerivation rec {
+  pname   = "digikam";
+  version = "6.2.0";
+
+  src = fetchFromGitHub {
+    owner  = "KDE";
+    repo   = "digikam";
+    rev    = "v${version}";
+    sha256 = "1l1nb1nwicmip2jxhn5gzr7h60igvns0zs3kzp36r6qf4wvg3v2z";
+  };
+
+  nativeBuildInputs = [ cmake doxygen extra-cmake-modules kdoctools wrapGAppsHook ];
+
+  buildInputs = [
+    bison
+    boost
+    eigen
+    exiv2
+    ffmpeg
+    flex
+    lcms2
+    lensfun
+    libgphoto2
+    libkipi
+    libksane
+    liblqr1
+    libqtav
+    libusb1
+    libGL
+    libGLU
+    opencv3
+    pcre
+
+    qtbase
+    qtxmlpatterns
+    qtsvg
+    qtwebengine
+
+    akonadi-contacts
+    kcalendarcore
+    kconfigwidgets
+    kcoreaddons
+    kfilemetadata
+    knotifications
+    knotifyconfig
+    ktextwidgets
+    kwidgetsaddons
+    kxmlgui
+
+    marble
+    oxygen
+    threadweaver
+  ]
+  ++ lib.optionals withJpeg2k [ jasper ];
+
+  enableParallelBuilding = true;
+
+  cmakeFlags = [
+    "-DENABLE_MYSQLSUPPORT=1"
+    "-DENABLE_INTERNALMYSQL=1"
+    "-DENABLE_MEDIAPLAYER=1"
+    "-DENABLE_QWEBENGINE=on"
+  ];
+
+  preFixup = ''
+    gappsWrapperArgs+=(--prefix PATH : ${lib.makeBinPath [ gnumake hugin enblend-enfuse ]})
+    gappsWrapperArgs+=(--suffix DK_PLUGIN_PATH : ${placeholder "out"}/${qtbase.qtPluginPrefix}/${pname})
+    substituteInPlace $out/bin/digitaglinktree \
+      --replace "/usr/bin/perl" "${perl}/bin/perl" \
+      --replace "/usr/bin/sqlite3" "${sqlite}/bin/sqlite3"
+  '';
+
+  meta = with lib; {
+    description = "Photo Management Program";
+    license = licenses.gpl2;
+    homepage = "https://www.digikam.org";
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/displaycal/default.nix b/nixpkgs/pkgs/applications/graphics/displaycal/default.nix
new file mode 100644
index 000000000000..5b324a5974d7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/displaycal/default.nix
@@ -0,0 +1,72 @@
+{ python2
+, stdenv
+, fetchurl
+, pkgconfig
+, libXext
+, libXxf86vm
+, libX11
+, libXrandr
+, libXinerama
+, libXScrnSaver
+, argyllcms
+ }:
+
+let
+  inherit (python2.pkgs) buildPythonApplication wxPython numpy dbus-python;
+in buildPythonApplication rec {
+  pname = "displaycal";
+  version = "3.8.9.3";
+
+  enableParallelBuilding = true;
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/dispcalgui/release/${version}/DisplayCAL-${version}.tar.gz";
+    sha256 = "1sivi4q7sqsrc95qg5gh37bsm2761md4mpl89hflzwk6kyyxyd3w";
+  };
+
+  propagatedBuildInputs = [
+    libXext
+    libXxf86vm
+    libX11
+    libXrandr
+    libXinerama
+    libXScrnSaver
+    argyllcms
+    wxPython
+    numpy
+    dbus-python
+  ];
+
+  nativeBuildInputs = [
+    pkgconfig
+  ];
+
+  preConfigure = ''
+    mkdir dist
+    cp {misc,dist}/net.displaycal.DisplayCAL.appdata.xml
+    touch dist/copyright
+    mkdir -p $out
+    ln -s $out/share/DisplayCAL $out/Resources
+  '';
+
+  # no idea why it looks there - symlink .json lang (everything)
+  postInstall = ''
+    for x in $out/share/DisplayCAL/*; do
+      ln -s $x $out/lib/python2.7/site-packages/DisplayCAL
+    done
+
+    for prog in "$out/bin/"*; do
+      wrapProgram "$prog" \
+        --prefix PYTHONPATH : "$PYTHONPATH" \
+        --prefix PATH : ${argyllcms}/bin
+    done
+  '';
+
+  meta = {
+    description = "Display Calibration and Characterization powered by Argyll CMS";
+    homepage = "https://displaycal.net/";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [stdenv.lib.maintainers.marcweber];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/djview/default.nix b/nixpkgs/pkgs/applications/graphics/djview/default.nix
new file mode 100644
index 000000000000..4d09f2ad5fe0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/djview/default.nix
@@ -0,0 +1,74 @@
+{ stdenv
+, mkDerivation
+, fetchurl
+, pkgconfig
+, djvulibre
+, qtbase
+, qttools
+, xorg
+, libtiff
+, darwin
+}:
+
+mkDerivation rec {
+  pname = "djview";
+  version = "4.10.6";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/djvu/${pname}-${version}.tar.gz";
+    sha256 = "08bwv8ppdzhryfcnifgzgdilb12jcnivl4ig6hd44f12d76z6il4";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    qttools
+  ];
+
+  buildInputs = [
+    djvulibre
+    qtbase
+    xorg.libXt
+    libtiff
+  ] ++ stdenv.lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.AGL;
+
+  configureFlags = [
+    "--disable-silent-rules"
+    "--disable-dependency-tracking"
+    "--with-x"
+    "--with-tiff"
+    # NOTE: 2019-09-19: experimental "--enable-npdjvu" fails
+  ] ++ stdenv.lib.optional stdenv.isDarwin "--enable-mac";
+
+  passthru = {
+    mozillaPlugin = "/lib/mozilla/plugins";
+  };
+
+  meta = with stdenv.lib; {
+    description = "A portable DjVu viewer (Qt5) and browser (nsdejavu) plugin";
+    homepage = "http://djvu.sourceforge.net/djview4.html";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ Anton-Latukha ];
+    longDescription = ''
+      The portable DjVu viewer (Qt5) and browser (nsdejavu) plugin.
+
+      Djview highlights:
+        - entirely based on the public DjVulibre api.
+        - entirely written in portable Qt5.
+        - works natively under Unix/X11, MS Windows, and macOS X.
+        - continuous scrolling of pages
+        - side-by-side display of pages
+        - ability to specify a url to the djview command
+        - all plugin and cgi options available from the command line
+        - all silly annotations implemented
+        - display thumbnails as a grid
+        - display outlines
+        - page names supported (see djvused command set-page-title)
+        - metadata dialog (see djvused command set-meta)
+        - implemented as reusable Qt widgets
+
+      nsdejavu: browser plugin for DjVu. It internally uses djview.
+      Has CGI-style arguments to configure the view of document (see man).
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/dosage/default.nix b/nixpkgs/pkgs/applications/graphics/dosage/default.nix
new file mode 100644
index 000000000000..b491c3e3ead0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/dosage/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, python3Packages, fetchFromGitHub }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "dosage";
+  version = "2018.04.08";
+  PBR_VERSION = version;
+
+  src = fetchFromGitHub {
+    owner = "webcomics";
+    repo = "dosage";
+    rev = "b2fdc13feb65b93762928f7e99bac7b1b7b31591";
+    sha256 = "1p6vllqaf9s6crj47xqp97hkglch1kd4y8y4lxvzx3g2shhhk9hh";
+  };
+  checkInputs = with python3Packages; [ pytest responses ];
+  propagatedBuildInputs = with python3Packages; [ colorama lxml requests pbr setuptools ];
+
+  disabled = python3Packages.pythonOlder "3.3";
+
+  checkPhase = ''
+    py.test tests/
+  '';
+
+  meta = {
+    description = "A comic strip downloader and archiver";
+    homepage = "https://dosage.rocks/";
+    license = stdenv.lib.licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/draftsight/default.nix b/nixpkgs/pkgs/applications/graphics/draftsight/default.nix
new file mode 100644
index 000000000000..ccd4fd660f76
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/draftsight/default.nix
@@ -0,0 +1,88 @@
+{ stdenv, fetchurl, dpkg, makeWrapper, gcc, libGLU, libGL, xdg_utils,
+  dbus, alsaLib, cups, fontconfig, glib, icu, libpng12,
+  xkeyboard_config, zlib, libxslt, libxml2, sqlite, orc,
+  libX11, libXcursor, libXrandr, libxcb, libXi, libSM, libICE,
+  libXrender, libXcomposite }:
+
+let version = "2018SP2"; in
+stdenv.mkDerivation {
+  pname = "draftsight";
+  inherit version;
+
+  nativeBuildInputs = [ dpkg makeWrapper ];
+
+  unpackPhase = ''
+    mkdir $out
+    mkdir $out/draftsight
+    dpkg -x $src $out/draftsight
+  '';
+
+  # Both executables and bundled libraries need patching to find their
+  # dependencies.  The makeWrapper & QT_XKB_CONFIG_ROOT is to
+  # alleviate "xkbcommon: ERROR: failed to add default include path
+  # /usr/share/X11/xkb" and "Qt: Failed to create XKB context!".
+  installPhase = ''
+    mkdir $out/bin
+    for exe in DraftSight dsHttpApiController dsHttpApiService FxCrashRptApp HelpGuide; do
+      echo "Patching $exe..."
+      patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+               --set-rpath $libPath:\$ORIGIN/../Libraries \
+               $out/draftsight/opt/dassault-systemes/DraftSight/Linux/$exe
+      makeWrapper $out/draftsight/opt/dassault-systemes/DraftSight/Linux/$exe \
+          $out/bin/$exe \
+          --prefix "QT_XKB_CONFIG_ROOT" ":" "${xkeyboard_config}/share/X11/xkb"
+    done
+    for lib in $out/draftsight/opt/dassault-systemes/DraftSight/Libraries/*.so*; do
+      # DraftSight ships with broken symlinks for some reason
+      if [ -f $(readlink -f $lib) ]
+      then
+        echo "Patching $lib..."
+        patchelf --set-rpath $libPath:\$ORIGIN/../Libraries $lib
+      else
+        echo "Ignoring broken link $lib"
+      fi
+    done
+    for lib in $out/draftsight/opt/dassault-systemes/DraftSight/APISDK/lib/cpp/*.so*; do
+      if [ -f $(readlink $lib) ]
+      then
+        echo "Patching $lib..."
+        chmod u+w $lib
+        patchelf --set-rpath $libPath:\$ORIGIN/../Libraries $lib
+      else
+        echo "Ignoring broken link $lib"
+      fi
+    done
+    # These libraries shouldn't really be here anyway:
+    find $out/draftsight/opt/dassault-systemes/DraftSight/APISDK/Samples/C++ \
+         -type d -name _lib | xargs rm -r
+  '';
+
+  # TODO: Figure out why HelpGuide segfaults at startup.
+
+  # This must be here for main window graphics to appear (without it
+  # it also gives the error: "QXcbIntegration: Cannot create platform
+  # OpenGL context, neither GLX nor EGL are enabled"). My guess is
+  # that it dlopen()'s libraries in paths removed by shrinking RPATH.
+  dontPatchELF = true;
+
+  src = fetchurl {
+    name = "draftSight.deb";
+    url = "http://dl-ak.solidworks.com/nonsecure/draftsight/${version}/draftSight.deb";
+    sha256 = "05lrvml0zkzqg0sj6sj2h8h66hxdmsw5fg9fwz923r1y8j48qxdx";
+  };
+
+  libPath = stdenv.lib.makeLibraryPath [ gcc.cc libGLU libGL xdg_utils
+    dbus alsaLib cups.lib fontconfig glib icu libpng12
+    xkeyboard_config zlib libxslt libxml2 sqlite orc libX11
+    libXcursor libXrandr libxcb libXi libSM libICE libXrender
+    libXcomposite ];
+
+  meta = with stdenv.lib; {
+    description = "2D design & drafting application, meant to be similar to AutoCAD";
+    longDescription = "Professional-grade 2D design and drafting solution from Dassault Systèmes that lets you create, edit, view and mark up any kind of 2D CAD drawing.";
+    homepage = "https://www.3ds.com/products-services/draftsight-cad-software/";
+    license = stdenv.lib.licenses.unfree;
+    maintainers = with maintainers; [ hodapp ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/drawing/default.nix b/nixpkgs/pkgs/applications/graphics/drawing/default.nix
new file mode 100644
index 000000000000..fb68276b168c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/drawing/default.nix
@@ -0,0 +1,69 @@
+{ lib
+, fetchFromGitHub
+, meson
+, ninja
+, pkgconfig
+, python3
+, gtk3
+, appstream-glib
+, desktop-file-utils
+, gobject-introspection
+, wrapGAppsHook
+, glib
+, gdk-pixbuf
+, pango
+, gettext
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "drawing";
+  version = "0.4.13";
+
+  format = "other";
+  
+  src = fetchFromGitHub {
+    owner = "maoschanz";
+    repo = pname;
+    rev = version;
+    sha256 = "0mj2nmfrckv89srgkn16fnbrb35f5a655ak8bb3rd9na3hd5bq53";
+  };
+
+  nativeBuildInputs = [
+    appstream-glib
+    desktop-file-utils
+    gobject-introspection
+    meson
+    ninja
+    pkgconfig
+    wrapGAppsHook
+    glib
+    gettext
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    gdk-pixbuf
+    pango
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    pycairo
+    pygobject3
+  ];
+
+  postPatch = ''
+    chmod +x build-aux/meson/postinstall.py # patchShebangs requires executable file
+    patchShebangs build-aux/meson/postinstall.py
+  '';
+
+  strictDeps = false;
+
+  meta = with lib; {
+    description = "A free basic image editor, similar to Microsoft Paint, but aiming at the GNOME desktop";
+    homepage = "https://maoschanz.github.io/drawing/";
+    maintainers = with maintainers; [ mothsart ];
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/drawio/default.nix b/nixpkgs/pkgs/applications/graphics/drawio/default.nix
new file mode 100644
index 000000000000..7026d133658f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/drawio/default.nix
@@ -0,0 +1,94 @@
+{ stdenv, lib, fetchurl, rpmextract, autoPatchelfHook, wrapGAppsHook
+
+# Dynamic libraries
+, alsaLib, atk, at-spi2-atk, at-spi2-core, cairo, dbus, cups, expat
+, gdk-pixbuf, glib, gtk3, libX11, libXScrnSaver, libXcomposite, libXcursor
+, libXdamage, libXext, libXfixes, libXi, libXrandr, libXrender, libXtst
+, libxcb, libuuid, nspr, nss, pango
+
+, systemd
+}:
+
+stdenv.mkDerivation rec {
+  pname = "drawio";
+  version = "13.2.2";
+
+  src = fetchurl {
+    url = "https://github.com/jgraph/drawio-desktop/releases/download/v${version}/draw.io-x86_64-${version}.rpm";
+    sha256 = "0npqw4ih047d9s1yyllcvcih2r61fgji4rvzsw88r02mj5q5rgdn";
+  };
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+    rpmextract
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    alsaLib
+    atk
+    at-spi2-atk
+    at-spi2-core
+    cairo
+    cups
+    dbus
+    expat
+    gdk-pixbuf
+    glib
+    gtk3
+    libX11
+    libXScrnSaver
+    libXcomposite
+    libXcursor
+    libXdamage
+    libXext
+    libXfixes
+    libXi
+    libXrandr
+    libXrender
+    libXtst
+    libxcb
+    libuuid
+    nspr
+    nss
+    pango
+    systemd
+  ];
+
+  runtimeDependencies = [
+    systemd.lib
+  ];
+
+  dontBuild = true;
+  dontConfigure = true;
+
+  unpackPhase = "rpmextract ${src}";
+
+  installPhase = ''
+    mkdir -p $out/share
+    cp -r opt/draw.io $out/share/
+
+    # Application icon
+    mkdir -p $out/share/icons/hicolor
+    cp -r usr/share/icons/hicolor/* $out/share/icons/hicolor/
+
+    # XDG desktop item
+    cp -r usr/share/applications $out/share/applications
+
+    # Symlink wrapper
+    mkdir -p $out/bin
+    ln -s $out/share/draw.io/drawio $out/bin/drawio
+
+    # Update binary path
+    substituteInPlace $out/share/applications/drawio.desktop \
+      --replace /opt/draw.io/drawio $out/bin/drawio
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A desktop application for creating diagrams";
+    homepage = "https://about.draw.io/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ danieldk ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/drawpile/default.nix b/nixpkgs/pkgs/applications/graphics/drawpile/default.nix
new file mode 100644
index 000000000000..0ffcb5cdb410
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/drawpile/default.nix
@@ -0,0 +1,96 @@
+{ lib
+, mkDerivation
+, fetchurl
+, cmake
+, extra-cmake-modules
+
+# common deps
+, karchive
+
+# client deps
+, qtbase
+, qtmultimedia
+, qtsvg
+, qttools
+
+# optional client deps
+, giflib
+, kdnssd
+, libvpx
+, miniupnpc
+, qtx11extras # kis
+
+# optional server deps
+, libmicrohttpd
+, libsodium
+
+# options
+, buildClient ? true
+, buildServer ? true
+, buildServerGui ? true # if false builds a headless server
+, buildExtraTools ? false
+, enableKisTablet ? false # enable improved graphics tablet support
+}:
+
+with lib;
+
+let
+  commonDeps = [
+    karchive
+  ];
+  clientDeps = [
+    qtbase
+    qtmultimedia
+    qtsvg
+    qttools
+    # optional:
+    giflib # gif animation export support
+    kdnssd # local server discovery with Zeroconf
+    libvpx # WebM video export
+    miniupnpc # automatic port forwarding
+  ];
+  serverDeps = [
+    # optional:
+    libmicrohttpd # HTTP admin api
+    libsodium # ext-auth support
+  ];
+  kisDeps = [
+    qtx11extras
+  ];
+
+in mkDerivation rec {
+  pname = "drawpile";
+  version = "2.1.17";
+
+  src = fetchurl {
+    url = "https://drawpile.net/files/src/drawpile-${version}.tar.gz";
+    sha256 = "11lhn1mymhqk9g5sh384xhj3qw8h9lv88pr768y9q6kg3sl7nzzf";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    extra-cmake-modules
+  ];
+  buildInputs =
+    commonDeps ++
+    optionals buildClient      clientDeps ++
+    optionals buildServer      serverDeps ++
+    optionals enableKisTablet  kisDeps    ;
+
+  cmakeFlags =
+    optional (!buildClient    )  "-DCLIENT=off" ++
+    optional (!buildServer    )  "-DSERVER=off" ++
+    optional (!buildServerGui )  "-DSERVERGUI=off" ++
+    optional ( buildExtraTools)  "-DTOOLS=on" ++
+    optional ( enableKisTablet)  "-DKIS_TABLET=on";
+
+  meta = {
+    description = "A collaborative drawing program that allows multiple users to sketch on the same canvas simultaneously";
+    homepage = "https://drawpile.net/";
+    downloadPage = "https://drawpile.net/download/";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ fgaz ];
+    platforms = platforms.unix;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/graphics/epeg/default.nix b/nixpkgs/pkgs/applications/graphics/epeg/default.nix
new file mode 100644
index 000000000000..bdbdf04bcd50
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/epeg/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, pkgconfig, libtool, autoconf, automake
+, libjpeg, libexif
+}:
+
+stdenv.mkDerivation rec {
+  pname = "epeg";
+  version = "0.9.2";
+
+  src = fetchFromGitHub {
+    owner = "mattes";
+    repo = "epeg";
+    rev = "v${version}";
+    sha256 = "14bjl9v6zzac4df25gm3bkw3n0mza5iazazsi65gg3m6661x6c5g";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ pkgconfig libtool autoconf automake ];
+
+  propagatedBuildInputs = [ libjpeg libexif ];
+
+  preConfigure = ''
+    ./autogen.sh
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/mattes/epeg";
+    description = "Insanely fast JPEG/ JPG thumbnail scaling";
+    platforms = platforms.linux ++ platforms.darwin;
+    license = {
+      url = "https://github.com/mattes/epeg#license";
+    };
+    maintainers = with maintainers; [ nh2 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/exrdisplay/default.nix b/nixpkgs/pkgs/applications/graphics/exrdisplay/default.nix
new file mode 100644
index 000000000000..7841e9d571b7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/exrdisplay/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pkgconfig, fltk, openexr, libGLU, libGL, ctl }:
+
+stdenv.mkDerivation {
+  name ="openexr_viewers-2.2.1";
+
+  src = fetchurl {
+    url =  "mirror://savannah/openexr/openexr_viewers-2.2.1.tar.gz";
+    sha256 = "1ixx2wbjp4rvsf7h3bkja010gl1ihjrcjzy7h20jnn47ikg12vj8";
+  };
+
+  configurePhase = ''
+    ./configure --prefix=$out --with-fltk-config=${fltk}/bin/fltk-config
+  '';
+
+  buildPhase = ''
+    make LDFLAGS="`fltk-config --ldflags` -lGL -lfltk_gl"
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ openexr fltk libGLU libGL ctl ];
+
+  meta = {
+    description = "Application for viewing OpenEXR images on a display at various exposure settings";
+    homepage = "http://openexr.com";
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.bsd3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/exrtools/default.nix b/nixpkgs/pkgs/applications/graphics/exrtools/default.nix
new file mode 100644
index 000000000000..39c23eb4fe8c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/exrtools/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, pkgconfig, openexr, libpng12, libjpeg }:
+
+stdenv.mkDerivation rec {
+  pname = "exrtools";
+  version = "0.4";
+
+  src = fetchurl {
+    url =  "http://scanline.ca/exrtools/${pname}-${version}.tar.gz";
+    sha256 = "0jpkskqs1yjiighab4s91jy0c0qxcscwadfn94xy2mm2bx2qwp4z";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ stdenv openexr libpng12 libjpeg ];
+
+  meta = with stdenv.lib; {
+    description = "Collection of utilities for manipulating OpenEXR images";
+    homepage = "http://scanline.ca/exrtools";
+    platforms = platforms.linux;
+    license = licenses.mit;
+    maintainers = [ maintainers.juliendehos ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/graphics/fbida/default.nix b/nixpkgs/pkgs/applications/graphics/fbida/default.nix
new file mode 100644
index 000000000000..7f0167f98342
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/fbida/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, libjpeg, libexif, libungif, libtiff, libpng, libwebp, libdrm
+, pkgconfig, freetype, fontconfig, which, imagemagick, curl, sane-backends, libXpm
+, epoxy, poppler, mesa, lirc }:
+
+stdenv.mkDerivation rec {
+  name = "fbida-2.14";
+
+  src = fetchurl {
+    url = "http://dl.bytesex.org/releases/fbida/${name}.tar.gz";
+    sha256 = "0f242mix20rgsqz1llibhsz4r2pbvx6k32rmky0zjvnbaqaw1dwm";
+  };
+
+  nativeBuildInputs = [ pkgconfig which ];
+  buildInputs = [
+    libexif libjpeg libpng libungif freetype fontconfig libtiff libwebp
+    imagemagick curl sane-backends libdrm libXpm epoxy poppler lirc
+    mesa
+  ];
+
+  makeFlags = [ "prefix=$(out)" "verbose=yes" "STRIP=" "JPEG_VER=62" ];
+
+  patchPhase = ''
+    sed -e 's@ cpp\>@ gcc -E -@' -i GNUmakefile
+    sed -e 's@$(HAVE_LINUX_FB_H)@yes@' -i GNUmakefile
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Image viewing and manipulation programs including fbi, fbgs, ida, exiftran and thumbnail.cgi";
+    homepage = "https://www.kraxel.org/blog/linux/fbida/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ pSub ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/feh/default.nix b/nixpkgs/pkgs/applications/graphics/feh/default.nix
new file mode 100644
index 000000000000..4782d9201480
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/feh/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchurl, makeWrapper
+, xorg, imlib2, libjpeg, libpng
+, curl, libexif, jpegexiforient, perlPackages
+, enableAutoreload ? true }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "feh";
+  version = "3.4.1";
+
+  src = fetchurl {
+    url = "https://feh.finalrewind.org/${pname}-${version}.tar.bz2";
+    sha256 = "0yvvj1s7ayn0lwils582smwkmckdk0gij5c58g45n4xh981n693q";
+  };
+
+  outputs = [ "out" "man" "doc" ];
+
+  nativeBuildInputs = [ makeWrapper xorg.libXt ];
+
+  buildInputs = [ xorg.libX11 xorg.libXinerama imlib2 libjpeg libpng curl libexif ];
+
+  makeFlags = [
+    "PREFIX=${placeholder "out"}" "exif=1"
+  ] ++ optional stdenv.isDarwin "verscmp=0"
+    ++ optional enableAutoreload "inotify=1";
+
+  installTargets = [ "install" ];
+  postInstall = ''
+    wrapProgram "$out/bin/feh" --prefix PATH : "${makeBinPath [ libjpeg jpegexiforient ]}" \
+                               --add-flags '--theme=feh'
+  '';
+
+  checkInputs = [ perlPackages.perl perlPackages.TestCommand ];
+  preCheck = ''
+    export PERL5LIB="${perlPackages.TestCommand}/${perlPackages.perl.libPrefix}"
+  '';
+  postCheck = ''
+    unset PERL5LIB
+  '';
+
+  doCheck = true;
+
+  meta = {
+    description = "A light-weight image viewer";
+    homepage = "https://feh.finalrewind.org/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ viric willibutz globin ma27 ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/fig2dev/default.nix b/nixpkgs/pkgs/applications/graphics/fig2dev/default.nix
new file mode 100644
index 000000000000..cd7db3d29c50
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/fig2dev/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, ghostscript, libpng } :
+
+let
+  version = "3.2.7b";
+
+in stdenv.mkDerivation {
+  pname = "fig2dev";
+  inherit version;
+
+  src = fetchurl {
+    url = "mirror://sourceforge/mcj/fig2dev-${version}.tar.xz";
+    sha256 = "1ck8gnqgg13xkxq4hrdy706i4xdgrlckx6bi6wxm1g514121pp27";
+  };
+
+  buildInputs = [ libpng ];
+
+  GSEXE="${ghostscript}/bin/gs";
+
+  meta = with stdenv.lib; {
+    description = "Tool to convert Xfig files to other formats";
+    homepage = "http://mcj.sourceforge.net/";
+    license = licenses.xfig;
+    platforms = platforms.linux;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/graphics/fluxus/default.nix b/nixpkgs/pkgs/applications/graphics/fluxus/default.nix
new file mode 100644
index 000000000000..a53eb806bcf1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/fluxus/default.nix
@@ -0,0 +1,96 @@
+{ stdenv
+, fetchFromGitLab
+, alsaLib
+, bzip2
+, fftw
+, freeglut
+, freetype
+, glew
+, libjack2
+, libGL
+, libGLU
+, libjpeg
+, liblo
+, libpng
+, libsndfile
+, libtiff
+, ode
+, openal
+, openssl
+, racket
+, scons
+, zlib
+}:
+let
+  libs = [
+    alsaLib
+    bzip2
+    fftw
+    freeglut
+    freetype
+    glew
+    libjack2
+    libGL
+    libGLU
+    libjpeg
+    liblo
+    libpng
+    libsndfile
+    libtiff
+    ode
+    openal
+    openssl
+    zlib
+  ];
+in
+stdenv.mkDerivation rec {
+  pname = "fluxus";
+  version = "0.19";
+  src = fetchFromGitLab {
+    owner = "nebogeo";
+    repo = "fluxus";
+    rev = "ba9aee218dd4a9cfab914ad78bdb6d59e9a37400";
+    sha256 = "0mwghpgq4n1khwlmgscirhmcdhi6x00c08q4idi2zcqz961bbs28";
+  };
+
+  buildInputs = [
+    alsaLib
+    fftw
+    freeglut.dev
+    freetype
+    glew
+    libjack2
+    libjpeg.dev
+    liblo
+    libsndfile.dev
+    libtiff.dev
+    ode
+    openal
+    openssl.dev
+    racket
+  ];
+  nativeBuildInputs = [ scons.py2 ];
+
+  patches = [ ./fix-build.patch ];
+  sconsFlags = [
+    "RacketPrefix=${racket}"
+    "RacketInclude=${racket}/include/racket"
+    "RacketLib=${racket}/lib/racket"
+    "LIBPATH=${stdenv.lib.makeLibraryPath libs}"
+    "DESTDIR=build"
+  ];
+  configurePhase = ''
+    sconsFlags+=" Prefix=$out"
+  '';
+  installPhase = ''
+    mkdir -p $out
+    cp -r build$out/* $out/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Livecoding environment for 3D graphics, sound, and games";
+    license = licenses.gpl2;
+    homepage = "http://www.pawfal.org/fluxus/";
+    maintainers = [ maintainers.brainrape ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/fluxus/fix-build.patch b/nixpkgs/pkgs/applications/graphics/fluxus/fix-build.patch
new file mode 100644
index 000000000000..7810dd59e357
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/fluxus/fix-build.patch
@@ -0,0 +1,16 @@
+diff --git a/SConstruct b/SConstruct
+index 32cb644..0b3a208 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -225,6 +225,11 @@ if env['PLATFORM'] == 'posix':
+                     ["asound", "alsa/asoundlib.h"],
+                     ["openal", "AL/al.h"]]
+
++env.Append(ENV={'PATH': ' ' + os.environ['PATH'], })
++env.Append(LIBPATH=ARGUMENTS.get('LIBPATH', '').split(':'))
++env.Append(CCFLAGS=' ' + os.environ.get('NIX_CFLAGS_COMPILE',''))
++env.Append(CCFLAGS=' -DNULL=0')
++
+ ################################################################################
+ # Make sure we have these libraries availible
+
diff --git a/nixpkgs/pkgs/applications/graphics/fondo/default.nix b/nixpkgs/pkgs/applications/graphics/fondo/default.nix
new file mode 100644
index 000000000000..cd0ee8e662b9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/fondo/default.nix
@@ -0,0 +1,73 @@
+{ stdenv
+, fetchFromGitHub
+, pantheon
+, vala
+, pkgconfig
+, meson
+, ninja
+, python3
+, glib
+, gsettings-desktop-schemas
+, gtk3
+, libgee
+, json-glib
+, glib-networking
+, libsoup
+, libunity
+, desktop-file-utils
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "fondo";
+  version = "1.3.9";
+
+  src = fetchFromGitHub {
+    owner = "calo001";
+    repo = pname;
+    rev = version;
+    sha256 = "1gyi80j2c38j62miv8a8nsx1pad169sa4fx0b85m2yv0x7fz492w";
+  };
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    meson
+    ninja
+    pkgconfig
+    python3
+    vala
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    glib-networking
+    gsettings-desktop-schemas
+    gtk3
+    json-glib
+    libgee
+    libsoup
+    libunity
+    pantheon.granite
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+
+  meta = with stdenv.lib; {
+    description = "Find the most beautiful wallpapers for your desktop";
+    homepage = "https://github.com/calo001/fondo";
+    license = licenses.agpl3Plus;
+    maintainers = with maintainers; [ worldofpeace ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/fontmatrix/default.nix b/nixpkgs/pkgs/applications/graphics/fontmatrix/default.nix
new file mode 100644
index 000000000000..99ca119b3bcd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/fontmatrix/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, cmake, qt4 }:
+
+stdenv.mkDerivation rec {
+  pname = "fontmatrix";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "fontmatrix";
+    repo = "fontmatrix";
+    rev = "v${version}";
+    sha256 = "0aqndj1jhm6hjpwmj1qm92z2ljh7w78a5ff5ag47qywqha1ngn05";
+  };
+
+  buildInputs = [ qt4 ];
+
+  nativeBuildInputs = [ cmake ];
+
+  hardeningDisable = [ "format" ];
+
+  meta = with stdenv.lib; {
+    description = "Fontmatrix is a free/libre font explorer for Linux, Windows and Mac";
+    homepage = "https://github.com/fontmatrix/fontmatrix";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/freecad/default.nix b/nixpkgs/pkgs/applications/graphics/freecad/default.nix
new file mode 100644
index 000000000000..657caeca8b3d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/freecad/default.nix
@@ -0,0 +1,85 @@
+{ stdenv, mkDerivation, fetchFromGitHub, fetchpatch, cmake, ninja, coin3d,
+xercesc, ode, eigen, qtbase, qttools, qtwebkit, wrapQtAppsHook,
+opencascade-occt, gts, hdf5, vtk, medfile, zlib, python3Packages, swig,
+gfortran, libXmu, soqt, libf2c, libGLU, makeWrapper, pkgconfig, mpi ? null }:
+
+assert mpi != null;
+
+let
+  pythonPackages = python3Packages;
+in mkDerivation rec {
+  pname = "freecad";
+  version = "0.18.4";
+
+  src = fetchFromGitHub {
+    owner = "FreeCAD";
+    repo = "FreeCAD";
+    rev = version;
+    sha256 = "1phs9a0px5fnzpyx930cz39p5dis0f0yajxzii3c3sazgkzrd55s";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    ninja
+    pkgconfig
+    pythonPackages.pyside2-tools
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    cmake coin3d xercesc ode eigen opencascade-occt gts
+    zlib swig gfortran soqt libf2c makeWrapper mpi vtk hdf5 medfile
+    libGLU libXmu qtbase qttools qtwebkit
+  ] ++ (with pythonPackages; [
+    matplotlib pycollada shiboken2 pyside2 pyside2-tools pivy python boost
+  ]);
+
+  # Fix missing app icon on Wayland. Has been upstreamed and should be safe to
+  # remove in versions >= 0.19
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/FreeCAD/FreeCAD/commit/c4d2a358ca125d51d059dfd72dcbfba326196dfc.patch";
+      sha256 = "0yqc9zrxgi2c2xcidm8wh7a9yznkphqvjqm9742qm5fl20p8gl4h";
+    })
+  ];
+
+  cmakeFlags = [
+    "-DBUILD_QT5=ON"
+    "-DSHIBOKEN_INCLUDE_DIR=${pythonPackages.shiboken2}/include"
+    "-DSHIBOKEN_LIBRARY=Shiboken2::libshiboken"
+    ("-DPYSIDE_INCLUDE_DIR=${pythonPackages.pyside2}/include"
+      + ";${pythonPackages.pyside2}/include/PySide2/QtCore"
+      + ";${pythonPackages.pyside2}/include/PySide2/QtWidgets"
+      + ";${pythonPackages.pyside2}/include/PySide2/QtGui"
+      )
+    "-DPYSIDE_LIBRARY=PySide2::pyside2"
+  ];
+
+  # This should work on both x86_64, and i686 linux
+  preBuild = ''
+    export NIX_LDFLAGS="-L${gfortran.cc}/lib64 -L${gfortran.cc}/lib $NIX_LDFLAGS";
+  '';
+
+  # Their main() removes PYTHONPATH=, and we rely on it.
+  preConfigure = ''
+    sed '/putenv("PYTHONPATH/d' -i src/Main/MainGui.cpp
+
+    qtWrapperArgs+=(--prefix PYTHONPATH : "$PYTHONPATH")
+  '';
+
+  qtWrapperArgs = [
+    "--set COIN_GL_NO_CURRENT_CONTEXT_CHECK 1"
+  ];
+
+  postFixup = ''
+    mv $out/share/doc $out
+  '';
+
+  meta = with stdenv.lib; {
+    description = "General purpose Open Source 3D CAD/MCAD/CAx/CAE/PLM modeler";
+    homepage = "https://www.freecadweb.org/";
+    license = licenses.lgpl2Plus;
+    maintainers = with maintainers; [ viric gebner ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/freepv/default.nix b/nixpkgs/pkgs/applications/graphics/freepv/default.nix
new file mode 100644
index 000000000000..11d203746e1a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/freepv/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, libjpeg, libGLU, libGL, freeglut, zlib, cmake, libX11, libxml2, libpng,
+  libXxf86vm }:
+
+stdenv.mkDerivation {
+  name = "freepv-0.3.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/freepv/freepv-0.3.0.tar.gz";
+    sha256 = "1w19abqjn64w47m35alg7bcdl1p97nf11zn64cp4p0dydihmhv56";
+  };
+
+  buildInputs = [ libjpeg libGLU libGL freeglut zlib cmake libX11 libxml2 libpng
+    libXxf86vm ];
+
+  postPatch = ''
+    sed -i -e '/GECKO/d' CMakeLists.txt
+    sed -i -e '/mozilla/d' src/CMakeLists.txt
+    sed -i -e '1i \
+      #include <cstdio>' src/libfreepv/OpenGLRenderer.cpp
+    sed -i -e '1i \
+      #include <cstring>' src/libfreepv/Image.cpp
+    substituteInPlace src/libfreepv/Action.h \
+      --replace NULL nullptr
+    substituteInPlace src/libfreepv/pngReader.cpp \
+      --replace png_set_gray_1_2_4_to_8 png_set_expand_gray_1_2_4_to_8
+  '';
+
+  NIX_CFLAGS_COMPILE = "-fpermissive -Wno-narrowing";
+
+  meta = {
+    description = "Open source panorama viewer using GL";
+    homepage = "http://freepv.sourceforge.net/";
+    license = [ stdenv.lib.licenses.lgpl21 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/fstl/default.nix b/nixpkgs/pkgs/applications/graphics/fstl/default.nix
new file mode 100644
index 000000000000..c96ea765d43f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/fstl/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, mkDerivation, qtbase, mesa_glu }:
+
+mkDerivation rec {
+  pname = "fstl";
+  version = "0.9.4";
+
+  buildInputs = [qtbase mesa_glu];
+
+  prePatch = ''
+    sed -i "s|/usr/bin|$out/bin|g" qt/fstl.pro
+  '';
+
+  preBuild = ''
+    qmake qt/fstl.pro
+  '';
+  
+  postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+    mkdir -p $out/Applications
+    mv fstl.app $out/Applications
+  '';
+
+  src = fetchFromGitHub {
+    owner = "mkeeter";
+    repo = "fstl";
+    rev = "v" + version;
+    sha256 = "028hzdv11hgvcpc36q5scf4nw1256qswh37xhfn5a0iv7wycmnif";
+  };
+
+  meta = with stdenv.lib; {
+    description = "The fastest STL file viewer";
+    homepage = "https://github.com/mkeeter/fstl";
+    license = licenses.mit;
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = with maintainers; [ tweber ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/gcolor2/default.nix b/nixpkgs/pkgs/applications/graphics/gcolor2/default.nix
new file mode 100644
index 000000000000..f585a0c5d29c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/gcolor2/default.nix
@@ -0,0 +1,34 @@
+{stdenv, fetchurl, gtk2, perlPackages, pkgconfig } :
+
+let version = "0.4"; in
+stdenv.mkDerivation {
+  pname = "gcolor2";
+  inherit version;
+  arch = if stdenv.hostPlatform.system == "x86_64-linux" then "amd64" else "386";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/gcolor2/gcolor2/${version}/gcolor2-${version}.tar.bz2";
+    sha256 = "1siv54vwx9dbfcflklvf7pkp5lk6h3nn63flg6jzifz9wp0c84q6";
+  };
+
+  preConfigure = ''
+    sed -i 's/\[:space:\]/[&]/g' configure
+  '';
+
+  # from https://github.com/PhantomX/slackbuilds/tree/master/gcolor2/patches
+  patches = if stdenv.hostPlatform.system == "x86_64-linux" then
+        [ ./gcolor2-amd64.patch ] else
+        [ ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gtk2 ]
+    ++ (with perlPackages; [ perl XMLParser ]);
+
+  meta = {
+    description = "Simple GTK 2 color selector";
+    homepage = "http://gcolor2.sourceforge.net/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = with stdenv.lib.maintainers; [ notthemessiah ];
+    platforms = with stdenv.lib.platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/gcolor2/gcolor2-amd64.patch b/nixpkgs/pkgs/applications/graphics/gcolor2/gcolor2-amd64.patch
new file mode 100644
index 000000000000..cd06a8315f98
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/gcolor2/gcolor2-amd64.patch
@@ -0,0 +1,46 @@
+diff --exclude-from=/home/dang/bin/scripts/diffrc -up -ruN gcolor2-0.4.orig/src/callbacks.c gcolor2-0.4/src/callbacks.c
+--- gcolor2-0.4.orig/src/callbacks.c	2005-07-12 14:06:12.000000000 -0400
++++ gcolor2-0.4/src/callbacks.c	2007-02-17 19:19:38.000000000 -0500
+@@ -4,6 +4,9 @@
+ 
+ #include <gtk/gtk.h>
+ #include <stdio.h>
++#include <string.h>
++#include <glib.h>
++#include <glib/gprintf.h>
+ 
+ #include "callbacks.h"
+ #include "interface.h"
+@@ -172,6 +175,9 @@ void on_copy_color_to_clipboard_activate
+ 	gtk_clipboard_set_text (cb, hex, strlen (hex));
+ }
+ 
++void add_rgb_file (gchar *filename, gchar *type);
++gchar* get_system_file (void);
++
+ void on_show_system_colors_activate (GtkMenuItem *menuitem, gpointer user_data)
+ {
+ 	if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (menuitem)))
+@@ -266,6 +272,8 @@ void on_save_button_clicked (GtkButton *
+ 	gtk_widget_destroy (savedialog);
+ }
+ 
++void add_list_color (gchar *spec, gchar *name, gchar *type, gboolean is_new_color);
++
+ void add_color_to_treeview ()
+ {
+ 	GtkTreeView      *treeview;
+diff --exclude-from=/home/dang/bin/scripts/diffrc -up -ruN gcolor2-0.4.orig/src/main.c gcolor2-0.4/src/main.c
+--- gcolor2-0.4.orig/src/main.c	2005-07-11 10:55:49.000000000 -0400
++++ gcolor2-0.4/src/main.c	2007-02-17 19:18:23.000000000 -0500
+@@ -4,6 +4,10 @@
+ 
+ #include <gtk/gtk.h>
+ #include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <glib.h>
++#include <glib/gprintf.h>
+ 
+ #include "interface.h"
+ #include "support.h"
diff --git a/nixpkgs/pkgs/applications/graphics/gcolor3/default.nix b/nixpkgs/pkgs/applications/graphics/gcolor3/default.nix
new file mode 100644
index 000000000000..1c1c6ba08ee2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/gcolor3/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchFromGitLab, meson, ninja, gettext, pkgconfig, libxml2, gtk3, hicolor-icon-theme, wrapGAppsHook
+, fetchpatch }:
+
+let
+  version = "2.3.1";
+in stdenv.mkDerivation {
+  pname = "gcolor3";
+  inherit version;
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "World";
+    repo = "gcolor3";
+    rev = "v${version}";
+    sha256 = "10cfzlkflwkb7f51rnrxmgxpfryh1qzvqaydj6lffjq9zvnhigg7";
+  };
+
+  patches = [
+    # Remove useage of deprecrated G_PARAM_PRIVATE
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/World/gcolor3/commit/96612cdd6c2cc71e28eb97ee17956004a05e5140.patch";
+      sha256 = "134wv5x15bd7k0fjzifrddwssaq213sx2l38r3xw6x1j625qwzq9";
+    })
+  ];
+
+  nativeBuildInputs = [ meson ninja gettext pkgconfig libxml2 wrapGAppsHook ];
+
+  buildInputs = [ gtk3 hicolor-icon-theme ];
+
+  postPatch = ''
+    chmod +x meson_install.sh # patchShebangs requires executable file
+    patchShebangs meson_install.sh
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A simple color chooser written in GTK3";
+    homepage = "https://www.hjdskes.nl/projects/gcolor3/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ jtojnar ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/geeqie/default.nix b/nixpkgs/pkgs/applications/graphics/geeqie/default.nix
new file mode 100644
index 000000000000..51c066196efd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/geeqie/default.nix
@@ -0,0 +1,69 @@
+{ stdenv, fetchurl, pkgconfig, autoconf, automake, gettext, intltool
+, gtk3, lcms2, exiv2, libchamplain, clutter-gtk, ffmpegthumbnailer, fbida
+, wrapGAppsHook, fetchpatch
+}:
+
+stdenv.mkDerivation rec {
+  pname = "geeqie";
+  version = "1.4";
+
+  src = fetchurl {
+    url = "http://geeqie.org/${pname}-${version}.tar.xz";
+    sha256 = "0ciygvcxb78pqg59r6p061mkbpvkgv2rv3r79j3kgv3kalb3ln2w";
+  };
+
+  patches = [
+    # Do not build the changelog as this requires markdown.
+    (fetchpatch {
+      name = "geeqie-1.4-goodbye-changelog.patch";
+      url = "https://src.fedoraproject.org/rpms/geeqie/raw/132fb04a1a5e74ddb333d2474f7edb9a39dc8d27/f/geeqie-1.4-goodbye-changelog.patch";
+      sha256 = "00a35dds44kjjdqsbbfk0x9y82jspvsbpm2makcm1ivzlhjjgszn";
+    })
+    # Fixes build with exiv2 0.27.1
+    (fetchpatch {
+      name = "geeqie-exiv2-0.27.patch";
+      url = "https://git.archlinux.org/svntogit/packages.git/plain/trunk/geeqie-exiv2-0.27.patch?h=packages/geeqie&id=dee28a8b3e9039b9cd6927b5a93ef2a07cd8271d";
+      sha256 = "05skpbyp8pcq92psgijyccc8liwfy2cpwprw6m186pf454yb5y9p";
+    })
+  ];
+
+  preConfigure = "./autogen.sh";
+
+  nativeBuildInputs = [ pkgconfig autoconf automake gettext intltool
+    wrapGAppsHook
+  ];
+  buildInputs = [
+    gtk3 lcms2 exiv2 libchamplain clutter-gtk ffmpegthumbnailer fbida
+  ];
+
+  postInstall = ''
+    # Allow geeqie to find exiv2 and exiftran, necessary to
+    # losslessly rotate JPEG images.
+    sed -i $out/lib/geeqie/geeqie-rotate \
+        -e '1 a export PATH=${stdenv.lib.makeBinPath [ exiv2 fbida ]}:$PATH'
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Lightweight GTK based image viewer";
+
+    longDescription =
+      ''
+        Geeqie is a lightweight GTK based image viewer for Unix like
+        operating systems.  It features: EXIF, IPTC and XMP metadata
+        browsing and editing interoperability; easy integration with other
+        software; geeqie works on files and directories, there is no need to
+        import images; fast preview for many raw image formats; tools for
+        image comparison, sorting and managing photo collection.  Geeqie was
+        initially based on GQview.
+      '';
+
+    license = licenses.gpl2Plus;
+
+    homepage = "http://geeqie.sourceforge.net";
+
+    maintainers = with maintainers; [ jfrankenau pSub ];
+    platforms = platforms.gnu ++ platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/gimp/default.nix b/nixpkgs/pkgs/applications/graphics/gimp/default.nix
new file mode 100644
index 000000000000..9e448fa23a43
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/gimp/default.nix
@@ -0,0 +1,178 @@
+{ stdenv
+, lib
+, fetchurl
+, substituteAll
+, pkgconfig
+, intltool
+, babl
+, gegl
+, gtk2
+, glib
+, gdk-pixbuf
+, isocodes
+, pango
+, cairo
+, freetype
+, fontconfig
+, lcms
+, libpng
+, libjpeg
+, poppler
+, poppler_data
+, libtiff
+, libmng
+, librsvg
+, libwmf
+, zlib
+, libzip
+, ghostscript
+, aalib
+, shared-mime-info
+, python2Packages
+, libexif
+, gettext
+, xorg
+, glib-networking
+, libmypaint
+, gexiv2
+, harfbuzz
+, mypaint-brushes1
+, libwebp
+, libheif
+, libgudev
+, openexr
+, AppKit
+, Cocoa
+, gtk-mac-integration-gtk2
+}:
+
+let
+  inherit (python2Packages) pygtk wrapPython python;
+in stdenv.mkDerivation rec {
+  pname = "gimp";
+  version = "2.10.20";
+
+  outputs = [ "out" "dev" ];
+
+  src = fetchurl {
+    url = "http://download.gimp.org/pub/gimp/v${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "4S+fh0saAHxCd7YKqB4LZzML5+YVPldJ6tg5uQL8ezw=";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    intltool
+    gettext
+    wrapPython
+  ];
+
+  buildInputs = [
+    babl
+    gegl
+    gtk2
+    glib
+    gdk-pixbuf
+    pango
+    cairo
+    gexiv2
+    harfbuzz
+    isocodes
+    freetype
+    fontconfig
+    lcms
+    libpng
+    libjpeg
+    poppler
+    poppler_data
+    libtiff
+    openexr
+    libmng
+    librsvg
+    libwmf
+    zlib
+    libzip
+    ghostscript
+    aalib
+    shared-mime-info
+    libwebp
+    libheif
+    python
+    pygtk
+    libexif
+    xorg.libXpm
+    glib-networking
+    libmypaint
+    mypaint-brushes1
+  ] ++ lib.optionals stdenv.isDarwin [
+    AppKit
+    Cocoa
+    gtk-mac-integration-gtk2
+  ] ++ lib.optionals stdenv.isLinux [
+    libgudev
+  ];
+
+  # needed by gimp-2.0.pc
+  propagatedBuildInputs = [
+    gegl
+  ];
+
+  pythonPath = [ pygtk ];
+
+  # Check if librsvg was built with --disable-pixbuf-loader.
+  PKG_CONFIG_GDK_PIXBUF_2_0_GDK_PIXBUF_MODULEDIR = "${librsvg}/${gdk-pixbuf.moduleDir}";
+
+  preConfigure = ''
+    # The check runs before glib-networking is registered
+    export GIO_EXTRA_MODULES="${glib-networking}/lib/gio/modules:$GIO_EXTRA_MODULES"
+  '';
+
+  patches = [
+    # to remove compiler from the runtime closure, reference was retained via
+    # gimp --version --verbose output
+    (substituteAll {
+      src = ./remove-cc-reference.patch;
+      cc_version = stdenv.cc.cc.name;
+    })
+  ];
+
+  postFixup = ''
+    wrapPythonProgramsIn $out/lib/gimp/${passthru.majorVersion}/plug-ins/
+    wrapProgram $out/bin/gimp-${lib.versions.majorMinor version} \
+      --prefix PYTHONPATH : "$PYTHONPATH" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE"
+  '';
+
+  passthru = rec {
+    # The declarations for `gimp-with-plugins` wrapper,
+    # used for determining plug-in installation paths
+    majorVersion = "${lib.versions.major version}.0";
+    targetPluginDir = "lib/gimp/${majorVersion}/plug-ins";
+    targetScriptDir = "share/gimp/${majorVersion}/scripts";
+
+    # probably its a good idea to use the same gtk in plugins ?
+    gtk = gtk2;
+  };
+
+  configureFlags = [
+    "--without-webkit" # old version is required
+    "--disable-check-update"
+    "--with-bug-report-url=https://github.com/NixOS/nixpkgs/issues/new"
+    "--with-icc-directory=/run/current-system/sw/share/color/icc"
+    # fix libdir in pc files (${exec_prefix} needs to be passed verbatim)
+    "--libdir=\${exec_prefix}/lib"
+  ];
+
+  # on Darwin,
+  # test-eevl.c:64:36: error: initializer element is not a compile-time constant
+  doCheck = !stdenv.isDarwin;
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "The GNU Image Manipulation Program";
+    homepage = "https://www.gimp.org/";
+    maintainers = with maintainers; [ jtojnar ];
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/gimp/plugins/default.nix b/nixpkgs/pkgs/applications/graphics/gimp/plugins/default.nix
new file mode 100644
index 000000000000..0b5e6a7f379f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/gimp/plugins/default.nix
@@ -0,0 +1,248 @@
+# install these packages into your profile. Then add
+# ~/.nix-profile/gimp-version-plugins to your plugin list you can find at
+# preferences -> Folders -> Plug-ins
+# same applies for the scripts
+
+{ config, pkgs, gimp }:
+let
+  inherit (pkgs) stdenv fetchurl pkgconfig intltool glib fetchFromGitHub;
+  inherit (gimp) targetPluginDir targetScriptDir;
+
+  pluginDerivation = a: let
+    name = a.name or "${a.pname}-${a.version}";
+  in stdenv.mkDerivation ({
+    prePhases = "extraLib";
+    extraLib = ''
+      installScripts(){
+        mkdir -p $out/${targetScriptDir}/${name};
+        for p in "$@"; do cp "$p" -r $out/${targetScriptDir}/${name}; done
+      }
+      installPlugins(){
+        mkdir -p $out/${targetPluginDir}/${name};
+        for p in "$@"; do cp "$p" -r $out/${targetPluginDir}/${name}; done
+      }
+    '';
+  }
+  // a
+  // {
+      name = "gimp-plugin-${name}";
+      buildInputs = [ gimp gimp.gtk glib ] ++ (a.buildInputs or []);
+      nativeBuildInputs = [ pkgconfig intltool ] ++ (a.nativeBuildInputs or []);
+    }
+  );
+
+  scriptDerivation = {src, ...}@attrs : pluginDerivation ({
+    phases = [ "extraLib" "installPhase" ];
+    installPhase = "installScripts ${src}";
+  } // attrs);
+
+in
+
+stdenv.lib.makeScope pkgs.newScope (self: with self; {
+  gap = pluginDerivation {
+    /* menu:
+       Video
+    */
+    name = "gap-2.6.0";
+    src = fetchurl {
+      url = "https://ftp.gimp.org/pub/gimp/plug-ins/v2.6/gap/gimp-gap-2.6.0.tar.bz2";
+      sha256 = "1jic7ixcmsn4kx2cn32nc5087rk6g8xsrz022xy11yfmgvhzb0ql";
+    };
+    NIX_LDFLAGS = "-lm";
+    patchPhase = ''
+      sed -e 's,^\(GIMP_PLUGIN_DIR=\).*,\1'"$out/${gimp.name}-plugins", \
+       -e 's,^\(GIMP_DATA_DIR=\).*,\1'"$out/share/${gimp.name}", -i configure
+    '';
+    hardeningDisable = [ "format" ];
+    meta = with stdenv.lib; {
+      description = "The GIMP Animation Package";
+      homepage = "https://www.gimp.org";
+      # The main code is given in GPLv3, but it has ffmpeg in it, and I think ffmpeg license
+      # falls inside "free".
+      license = with licenses; [ gpl3 free ];
+    };
+  };
+
+  fourier = pluginDerivation rec {
+    /* menu:
+       Filters/Generic/FFT Forward
+       Filters/Generic/FFT Inverse
+    */
+    name = "fourier-0.4.3";
+    buildInputs = with pkgs; [ fftw ];
+
+    src = fetchurl {
+      url = "https://www.lprp.fr/files/old-web/soft/gimp/${name}.tar.gz";
+      sha256 = "0mf7f8vaqs2madx832x3kcxw3hv3w3wampvzvaps1mkf2kvrjbsn";
+    };
+
+    installPhase = "installPlugins fourier";
+
+    meta = with stdenv.lib; {
+      description = "GIMP plug-in to do the fourier transform";
+      homepage = "https://people.via.ecp.fr/~remi/soft/gimp/gimp_plugin_en.php3#fourier";
+      license = with licenses; [ gpl3Plus ];
+    };
+  };
+
+  focusblur = pluginDerivation rec {
+    /* menu:
+       Blur/Focus Blur
+    */
+    name = "focusblur-3.2.6";
+    buildInputs = with pkgs; [ fftwSinglePrec ];
+    patches = [ ./patches/focusblur-glib.patch ];
+    postInstall = "fail";
+    installPhase = "installPlugins src/focusblur";
+    src = fetchurl {
+      url = "http://registry.gimp.org/files/${name}.tar.bz2";
+      sha256 = "1gqf3hchz7n7v5kpqkhqh8kwnxbsvlb5cr2w2n7ngrvl56f5xs1h";
+    };
+    meta.broken = true;
+  };
+
+  resynthesizer = pluginDerivation rec {
+    /* menu:
+      Edit/Fill with pattern seamless...
+      Filters/Enhance/Heal selection...
+      Filters/Enhance/Heal transparency...
+      Filters/Enhance/Sharpen by synthesis...
+      Filters/Enhance/Uncrop...
+      Filters/Map/Style...
+      Filters/Render/Texture...
+    */
+    pname = "resynthesizer";
+    version = "2.0.3";
+    buildInputs = with pkgs; [ fftw ];
+    nativeBuildInputs = with pkgs; [ autoreconfHook ];
+    makeFlags = [ "GIMP_LIBDIR=${placeholder "out"}/lib/gimp/2.0" ];
+    src = fetchFromGitHub {
+      owner = "bootchk";
+      repo = "resynthesizer";
+      rev = "v${version}";
+      sha256 = "1jwc8bhhm21xhrgw56nzbma6fwg59gc8anlmyns7jdiw83y0zx3j";
+    };
+  };
+
+  texturize = pluginDerivation {
+    name = "texturize-2.2.2017-07-28";
+    src = fetchFromGitHub {
+      owner = "lmanul";
+      repo = "gimp-texturize";
+      rev = "de4367f71e40fe6d82387eaee68611a80a87e0e1";
+      sha256 = "1zzvbczly7k456c0y6s92a1i8ph4ywmbvdl8i4rcc29l4qd2z8fw";
+    };
+    installPhase = "installPlugins src/texturize";
+    meta.broken = true; # https://github.com/lmanul/gimp-texturize/issues/1
+  };
+
+  waveletSharpen = pluginDerivation {
+    /* menu:
+      Filters/Enhance/Wavelet sharpen
+    */
+    name = "wavelet-sharpen-0.1.2";
+    NIX_LDFLAGS = "-lm";
+    src = fetchurl {
+      url = "http://registry.gimp.org/files/wavelet-sharpen-0.1.2.tar.gz";
+      sha256 = "0vql1k67i21g5ivaa1jh56rg427m0icrkpryrhg75nscpirfxxqw";
+    };
+    installPhase = "installPlugins src/wavelet-sharpen"; # TODO translations are not copied .. How to do this on nix?
+  };
+
+  lqrPlugin = pluginDerivation {
+    /* menu:
+       Layer/Liquid Rescale
+    */
+    name = "lqr-plugin-0.6.1";
+    buildInputs = with pkgs; [ liblqr1 ];
+    src = fetchurl {
+      url = "http://registry.gimp.org/files/gimp-lqr-plugin-0.6.1.tar.bz2";
+      sha256 = "00hklkpcimcbpjly4rjhfipaw096cpy768g9wixglwrsyqhil7l9";
+    };
+    #postInstall = ''mkdir -p $out/nix-support; echo "${liblqr1}" > "$out/nix-support/propagated-user-env-packages"'';
+    installPhase = "installPlugins src/gimp-lqr-plugin";
+  };
+
+  gmic = pkgs.gmic-qt.override {
+    variant = "gimp";
+  };
+
+  ufraw = pkgs.ufraw.gimpPlugin;
+
+  gimplensfun = pluginDerivation rec {
+    version = "unstable-2018-10-21";
+    name = "gimplensfun-${version}";
+
+    src = fetchFromGitHub {
+      owner = "seebk";
+      repo = "GIMP-Lensfun";
+      rev = "1c5a5c1534b5faf098b7441f8840d22835592f17";
+      sha256 = "1jj3n7spkjc63aipwdqsvq9gi07w13bb1v8iqzvxwzld2kxa3c8w";
+    };
+
+    buildInputs = with pkgs; [ lensfun gexiv2 ];
+
+    installPhase = "
+      installPlugins gimp-lensfun
+    ";
+
+    meta = {
+      description = "GIMP plugin to correct lens distortion using the lensfun library and database";
+
+      homepage = "http://lensfun.sebastiankraft.net/";
+
+      license = stdenv.lib.licenses.gpl3Plus;
+      maintainers = [ ];
+      platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux;
+    };
+  };
+
+  /* =============== simple script files ==================== */
+
+  # also have a look at enblend-enfuse in all-packages.nix
+  exposureBlend = scriptDerivation {
+    name = "exposure-blend";
+    src = fetchurl {
+      url = "http://tir.astro.utoledo.edu/jdsmith/code/eb/exposure-blend.scm";
+      sha256 = "1b6c9wzpklqras4wwsyw3y3jp6fjmhnnskqiwm5sabs8djknfxla";
+    };
+    meta.broken = true;
+  };
+
+  lightning = scriptDerivation {
+    name = "Lightning";
+    src = fetchurl {
+      url = "http://registry.gimp.org/files/Lightning.scm";
+      sha256 = "c14a8f4f709695ede3f77348728a25b3f3ded420da60f3f8de3944b7eae98a49";
+    };
+  };
+
+  /* space in name trouble ?
+
+  rainbowPlasma = scriptDerivation {
+    # http://registry.gimp.org/node/164
+    name = "rainbow-plasma";
+    src = fetchurl {
+      url = "http://registry.gimp.org/files/Rainbow Plasma.scm";
+      sha256 = "34308d4c9441f9e7bafa118af7ec9540f10ea0df75e812e2f3aa3fd7b5344c23";
+      name = "Rainbow-Plasma.scm"; # nix doesn't like spaces, does it?
+    };
+  };
+  */
+
+  /* doesn't seem to be working :-(
+  lightningGate = scriptDerivation {
+    # http://registry.gimp.org/node/153
+    name = "lightning-gate";
+    src = fetchurl {
+      url = "http://registry.gimp.org/files/LightningGate.scm";
+      sha256 = "181w1zi9a99kn2mfxjp43wkwcgw5vbb6iqjas7a9mhm8p04csys2";
+    };
+  };
+  */
+
+} // stdenv.lib.optionalAttrs (config.allowAliases or true) {
+
+  resynthesizer2 = resynthesizer;
+
+})
diff --git a/nixpkgs/pkgs/applications/graphics/gimp/plugins/patches/focusblur-glib.patch b/nixpkgs/pkgs/applications/graphics/gimp/plugins/patches/focusblur-glib.patch
new file mode 100644
index 000000000000..b1079ab36604
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/gimp/plugins/patches/focusblur-glib.patch
@@ -0,0 +1,200 @@
+ls diff --git focusblur-3.2.6/src/aaa.h focusblur-3.2.6/src/aaa.h
+index 4a6d90b..c74cab2 100644
+--- focusblur-3.2.6/src/aaa.h
++++ focusblur-3.2.6/src/aaa.h
+@@ -19,8 +19,7 @@
+ #ifndef __AAA_H__
+ #define __AAA_H__
+ 
+-#include <glib/gmacros.h>
+-#include <glib/gtypes.h>
++#include <glib.h>
+ 
+ 
+ G_BEGIN_DECLS
+diff --git focusblur-3.2.6/src/brush.h focusblur-3.2.6/src/brush.h
+index 685b253..8778fec 100644
+--- focusblur-3.2.6/src/brush.h
++++ focusblur-3.2.6/src/brush.h
+@@ -22,7 +22,7 @@
+ #ifndef __FOCUSBLUR_BRUSH_H__
+ #define __FOCUSBLUR_BRUSH_H__
+ 
+-#include <glib/gtypes.h>
++#include <glib.h>
+ #include "focusblurtypes.h"
+ 
+ G_BEGIN_DECLS
+diff --git focusblur-3.2.6/src/depthmap.h focusblur-3.2.6/src/depthmap.h
+index 78f5e99..baee540 100644
+--- focusblur-3.2.6/src/depthmap.h
++++ focusblur-3.2.6/src/depthmap.h
+@@ -22,7 +22,7 @@
+ #ifndef __FOCUSBLUR_DEPTHMAP_H__
+ #define __FOCUSBLUR_DEPTHMAP_H__
+ 
+-#include <glib/gtypes.h>
++#include <glib.h>
+ 
+ #include "focusblurtypes.h"
+ #include "focusblurenums.h"
+diff --git focusblur-3.2.6/src/diffusion.h focusblur-3.2.6/src/diffusion.h
+index 07ffe4b..3c1e4b9 100644
+--- focusblur-3.2.6/src/diffusion.h
++++ focusblur-3.2.6/src/diffusion.h
+@@ -23,7 +23,7 @@
+ #define __FOCUSBLUR_DIFFUSION_H__
+ 
+ 
+-#include <glib/gtypes.h>
++#include <glib.h>
+ 
+ #include "focusblur.h"
+ #include "focusblurtypes.h"
+diff --git focusblur-3.2.6/src/fftblur.h focusblur-3.2.6/src/fftblur.h
+index 124bcba..cd809fa 100644
+--- focusblur-3.2.6/src/fftblur.h
++++ focusblur-3.2.6/src/fftblur.h
+@@ -23,8 +23,7 @@
+ #define __FOCUSBLUR_FFTBLUR_H__
+ 
+ 
+-#include <glib/gmacros.h>
+-#include <glib/gtypes.h>
++#include <glib.h>
+ #include <libgimpwidgets/gimpwidgetstypes.h>
+ 
+ #include "focusblurparam.h"
+diff --git focusblur-3.2.6/src/fftblurbuffer.h focusblur-3.2.6/src/fftblurbuffer.h
+index b34d682..42e6380 100644
+--- focusblur-3.2.6/src/fftblurbuffer.h
++++ focusblur-3.2.6/src/fftblurbuffer.h
+@@ -28,8 +28,7 @@
+ #endif
+ #include <fftw3.h>
+ 
+-#include <glib/gmacros.h>
+-#include <glib/gtypes.h>
++#include <glib.h>
+ #include <gtk/gtkstyle.h>
+ #include <libgimp/gimptypes.h>
+ #include <libgimpwidgets/gimpwidgetstypes.h>
+diff --git focusblur-3.2.6/src/fftblurproc.h focusblur-3.2.6/src/fftblurproc.h
+index 495572d..10a34f4 100644
+--- focusblur-3.2.6/src/fftblurproc.h
++++ focusblur-3.2.6/src/fftblurproc.h
+@@ -23,8 +23,7 @@
+ #define __FOCUSBLUR_FFTBLUR_PROC_H__
+ 
+ 
+-#include <glib/gmacros.h>
+-#include <glib/gtypes.h>
++#include <glib.h>
+ 
+ #include "focusblurtypes.h"
+ 
+diff --git focusblur-3.2.6/src/focusblur.h focusblur-3.2.6/src/focusblur.h
+index 54ca40a..d7e13a6 100644
+--- focusblur-3.2.6/src/focusblur.h
++++ focusblur-3.2.6/src/focusblur.h
+@@ -22,7 +22,7 @@
+ #ifndef __FOCUSBLUR_H__
+ #define __FOCUSBLUR_H__
+ 
+-#include <glib/gmacros.h>
++#include <glib.h>
+ 
+ G_BEGIN_DECLS
+ 
+diff --git focusblur-3.2.6/src/focusblurparam.h focusblur-3.2.6/src/focusblurparam.h
+index 64c887b..32865b4 100644
+--- focusblur-3.2.6/src/focusblurparam.h
++++ focusblur-3.2.6/src/focusblurparam.h
+@@ -22,8 +22,7 @@
+ #ifndef __FOCUSBLUR_PARAM_H__
+ #define __FOCUSBLUR_PARAM_H__
+ 
+-#include <glib/gmacros.h>
+-#include <glib/gtypes.h>
++#include <glib.h>
+ #include <gtk/gtkstyle.h>
+ #include <libgimp/gimptypes.h>
+ 
+diff --git focusblur-3.2.6/src/focusblurstock.h focusblur-3.2.6/src/focusblurstock.h
+index 15f3603..cfc0567 100644
+--- focusblur-3.2.6/src/focusblurstock.h
++++ focusblur-3.2.6/src/focusblurstock.h
+@@ -22,7 +22,7 @@
+ #ifndef __FOCUSBLUR_STOCK_H__
+ #define __FOCUSBLUR_STOCK_H__
+ 
+-#include <glib/gtypes.h>
++#include <glib.h>
+ 
+ G_BEGIN_DECLS
+ 
+diff --git focusblur-3.2.6/src/focusblurtypes.h focusblur-3.2.6/src/focusblurtypes.h
+index 0954c60..1531c84 100644
+--- focusblur-3.2.6/src/focusblurtypes.h
++++ focusblur-3.2.6/src/focusblurtypes.h
+@@ -22,7 +22,7 @@
+ #ifndef __FOCUSBLUR_TYPES_H__
+ #define __FOCUSBLUR_TYPES_H__
+ 
+-#include <glib/gmacros.h>
++#include <glib.h>
+ 
+ 
+ G_BEGIN_DECLS
+diff --git focusblur-3.2.6/src/interface.h focusblur-3.2.6/src/interface.h
+index 6defd27..e819c60 100644
+--- focusblur-3.2.6/src/interface.h
++++ focusblur-3.2.6/src/interface.h
+@@ -22,7 +22,7 @@
+ #ifndef __FOCUSBLUR_INTERFACE_H__
+ #define __FOCUSBLUR_INTERFACE_H__
+ 
+-#include <glib/gtypes.h>
++#include <glib.h>
+ 
+ #include "focusblurtypes.h"
+ 
+diff --git focusblur-3.2.6/src/render.h focusblur-3.2.6/src/render.h
+index febbd24..a501f1e 100644
+--- focusblur-3.2.6/src/render.h
++++ focusblur-3.2.6/src/render.h
+@@ -24,7 +24,7 @@
+ 
+ #include "config.h"
+ 
+-#include <glib/gtypes.h>
++#include <glib.h>
+ //#include <libgimp/gimp.h>
+ #include <libgimp/gimpui.h>
+ 
+diff --git focusblur-3.2.6/src/shine.h focusblur-3.2.6/src/shine.h
+index c5a3621..86b4c09 100644
+--- focusblur-3.2.6/src/shine.h
++++ focusblur-3.2.6/src/shine.h
+@@ -22,7 +22,7 @@
+ #ifndef __FOCUSBLUR_SHINE_H__
+ #define __FOCUSBLUR_SHINE_H__
+ 
+-#include <glib/gtypes.h>
++#include <glib.h>
+ #include <libgimp/gimptypes.h>
+ 
+ #include "focusblurtypes.h"
+diff --git focusblur-3.2.6/src/source.h focusblur-3.2.6/src/source.h
+index 50d34ca..8eec35c 100644
+--- focusblur-3.2.6/src/source.h
++++ focusblur-3.2.6/src/source.h
+@@ -24,7 +24,7 @@
+ 
+ #include "config.h"
+ 
+-#include <glib/gtypes.h>
++#include <glib.h>
+ #include <libgimp/gimptypes.h>
+ 
+ #include "focusblurtypes.h"
diff --git a/nixpkgs/pkgs/applications/graphics/gimp/remove-cc-reference.patch b/nixpkgs/pkgs/applications/graphics/gimp/remove-cc-reference.patch
new file mode 100644
index 000000000000..20c350bdaea1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/gimp/remove-cc-reference.patch
@@ -0,0 +1,13 @@
+diff --git a/app/gimp-version.c b/app/gimp-version.c
+index 3d1894a036..48bb670b64 100644
+--- a/app/gimp-version.c
++++ b/app/gimp-version.c
+@@ -230,7 +230,7 @@ gimp_version (gboolean be_verbose,
+                                       GIMP_BUILD_ID,
+                                       gimp_version_get_revision (),
+                                       GIMP_BUILD_PLATFORM_FAMILY,
+-                                      CC_VERSION,
++                                      "@cc_version@",
+                                       lib_versions);
+       g_free (lib_versions);
+ 
diff --git a/nixpkgs/pkgs/applications/graphics/gimp/wrapper.nix b/nixpkgs/pkgs/applications/graphics/gimp/wrapper.nix
new file mode 100644
index 000000000000..841728d3a294
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/gimp/wrapper.nix
@@ -0,0 +1,29 @@
+{ stdenv, lib, symlinkJoin, gimp, makeWrapper, gimpPlugins, gnome3, plugins ? null}:
+
+let
+allPlugins = lib.filter (pkg: lib.isDerivation pkg && !pkg.meta.broken or false) (lib.attrValues gimpPlugins);
+selectedPlugins = if plugins == null then allPlugins else plugins;
+extraArgs = map (x: x.wrapArgs or "") selectedPlugins;
+versionBranch = stdenv.lib.versions.majorMinor gimp.version;
+
+in symlinkJoin {
+  name = "gimp-with-plugins-${gimp.version}";
+
+  paths = [ gimp ] ++ selectedPlugins;
+
+  buildInputs = [ makeWrapper ];
+
+  postBuild = ''
+    for each in gimp-${versionBranch} gimp-console-${versionBranch}; do
+      wrapProgram $out/bin/$each \
+        --set GIMP2_PLUGINDIR "$out/lib/gimp/2.0" \
+        --set GIMP2_DATADIR "$out/share/gimp/2.0" \
+        --prefix GTK_PATH : "${gnome3.gnome-themes-extra}/lib/gtk-2.0" \
+        ${toString extraArgs}
+    done
+    set +x
+    for each in gimp gimp-console; do
+      ln -sf "$each-${versionBranch}" $out/bin/$each
+    done
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/graphics/glabels/default.nix b/nixpkgs/pkgs/applications/graphics/glabels/default.nix
new file mode 100644
index 000000000000..be487fcb8a6b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/glabels/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, barcode, gnome3, autoreconfHook
+, gtk3, gtk-doc, libxml2, librsvg , libtool, libe-book, gsettings-desktop-schemas
+, intltool, itstool, makeWrapper, pkgconfig, yelp-tools
+}:
+
+stdenv.mkDerivation rec {
+  pname = "glabels";
+  version = "3.4.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "0f2rki8i27pkd9r0gz03cdl1g4vnmvp0j49nhxqn275vi8lmgr0q";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig makeWrapper intltool ];
+  buildInputs = [
+    barcode gtk3 gtk-doc yelp-tools
+    gnome3.gnome-common gsettings-desktop-schemas
+    itstool libxml2 librsvg libe-book libtool
+  ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/glabels-3" \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      versionPolicy = "none";
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Create labels and business cards";
+    homepage = "https://glabels.org/";
+    license = with licenses; [ gpl3Plus lgpl3Plus ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.nico202 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/gnome-photos/default.nix b/nixpkgs/pkgs/applications/graphics/gnome-photos/default.nix
new file mode 100644
index 000000000000..8660f6f218e2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/gnome-photos/default.nix
@@ -0,0 +1,125 @@
+{ stdenv
+, fetchurl
+, at-spi2-core
+, babl
+, dbus
+, desktop-file-utils
+, dleyna-renderer
+, gdk-pixbuf
+, gegl
+, geocode-glib
+, gettext
+, gexiv2
+, gfbgraph
+, glib
+, gnome-online-accounts
+, gnome3
+, gobject-introspection
+, grilo
+, grilo-plugins
+, gsettings-desktop-schemas
+, gtk3
+, itstool
+, libdazzle
+, libgdata
+, libxml2
+, meson
+, ninja
+, nixosTests
+, pkgconfig
+, python3
+, tracker
+, tracker-miners
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-photos";
+  version = "3.34.2";
+
+  outputs = [ "out" "installedTests" ];
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "06ml5sf8xhpan410msqz085hmfc7082d368pb82yq646y9pcfn9w";
+  };
+
+  patches = [
+    ./installed-tests-path.patch
+  ];
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    gettext
+    gobject-introspection # for setup hook
+    glib # for setup hook
+    itstool
+    libxml2
+    meson
+    ninja
+    pkgconfig
+    (python3.withPackages (pkgs: with pkgs; [
+      dogtail
+      pygobject3
+      pyatspi
+    ]))
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    babl
+    dbus
+    dleyna-renderer
+    gdk-pixbuf
+    gegl
+    geocode-glib
+    gexiv2
+    gfbgraph
+    glib
+    gnome-online-accounts
+    gnome3.adwaita-icon-theme
+    grilo
+    grilo-plugins
+    gsettings-desktop-schemas
+    gtk3
+    libdazzle
+    libgdata
+    tracker
+    tracker-miners # For 'org.freedesktop.Tracker.Miner.Files' GSettings schema
+
+    at-spi2-core # for tests
+  ];
+
+  mesonFlags = [
+    "-Dinstalled_tests=true"
+    "-Dinstalled_test_prefix=${placeholder "installedTests"}"
+  ];
+
+  postPatch = ''
+    chmod +x meson_post_install.py
+    patchShebangs meson_post_install.py
+    patchShebangs tests/basic.py
+  '';
+
+  postFixup = ''
+    wrapGApp "${placeholder "installedTests"}/libexec/installed-tests/gnome-photos/basic.py"
+  '';
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+    };
+
+    tests = {
+      installed-tests = nixosTests.gnome-photos;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Access, organize and share your photos";
+    homepage = "https://wiki.gnome.org/Apps/Photos";
+    license = licenses.gpl3Plus;
+    maintainers = teams.gnome.members;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/gnome-photos/installed-tests-path.patch b/nixpkgs/pkgs/applications/graphics/gnome-photos/installed-tests-path.patch
new file mode 100644
index 000000000000..218108328dd8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/gnome-photos/installed-tests-path.patch
@@ -0,0 +1,23 @@
+diff --git a/meson.build b/meson.build
+index dee932dc..f8851913 100644
+--- a/meson.build
++++ b/meson.build
+@@ -16,8 +16,8 @@
+ photos_docdir = join_paths(photos_datadir, 'doc', meson.project_name())
+ photos_libdir = join_paths(photos_prefix, get_option('libdir'), meson.project_name())
+ 
+-photos_installed_test_metadir = join_paths(photos_datadir, 'installed-tests', meson.project_name())
+-photos_installed_test_execdir = join_paths(photos_libexecdir, 'installed-tests', meson.project_name())
++photos_installed_test_metadir = join_paths(get_option('installed_test_prefix'), 'share', 'installed-tests', meson.project_name())
++photos_installed_test_execdir = join_paths(get_option('installed_test_prefix'), 'libexec', 'installed-tests', meson.project_name())
+ 
+ photos_namespace = 'org.gnome.Photos'
+ 
+diff --git a/meson_options.txt b/meson_options.txt
+index f34b5cc0..8e09970b 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -1,2 +1,3 @@
+ option('dogtail', type: 'boolean', value: true, description: 'test using dogtail')
+ option('installed_tests', type: 'boolean', value: false, description: 'Enable installation of some test cases')
++option('installed_test_prefix', type: 'string', value: '', description: 'Prefix for installed tests')
diff --git a/nixpkgs/pkgs/applications/graphics/gnuclad/default.nix b/nixpkgs/pkgs/applications/graphics/gnuclad/default.nix
new file mode 100644
index 000000000000..fcb4bdb53743
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/gnuclad/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, lib, fetchurl, pkgconfig
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnuclad";
+  version = "0.2.4";
+
+  src = fetchurl {
+    url = "https://launchpad.net/gnuclad/trunk/${lib.versions.majorMinor version}/+download/${pname}-${version}.tar.gz";
+    sha256 = "0ka2kscpjff7gflsargv3r9fdaxhkf3nym9mfaln3pnq6q7fwdki";
+  };
+
+  NIX_CFLAGS_COMPILE = "-Wno-error=catch-value";
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://launchpad.net/gnuclad";
+    description = "gnuclad tries to help the environment by creating trees.  It's primary use will be generating cladogram trees for the GNU/Linux distro timeline project.";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ mog ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/gocr/default.nix b/nixpkgs/pkgs/applications/graphics/gocr/default.nix
new file mode 100644
index 000000000000..7c586374ec51
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/gocr/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, tk }:
+
+stdenv.mkDerivation rec {
+  name = "gocr-0.52";
+
+  src = fetchurl {
+    url = "https://www-e.uni-magdeburg.de/jschulen/ocr/${name}.tar.gz";
+    sha256 = "11l6gds1lrm8lwrrsxnm5fjlwz8q1xbh896cprrl4psz21in946z";
+  };
+
+  buildFlags = [ "all" "libs" ];
+  installFlags = [ "libdir=/lib/" ]; # Specify libdir so Makefile will also install library.
+
+  preInstall = "mkdir -p $out/lib";
+
+  postInstall = ''
+    for i in pgm2asc.h gocr.h; do
+      install -D -m644 src/$i $out/include/gocr/$i
+    done
+  '';
+
+  preFixup = ''
+    sed -i -e 's|exec wish|exec ${tk}/bin/wish|' $out/bin/gocr.tcl
+  '';
+
+  meta = {
+    homepage = "http://jocr.sourceforge.net/";
+    description = "GPL Optical Character Recognition";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/goxel/default.nix b/nixpkgs/pkgs/applications/graphics/goxel/default.nix
new file mode 100644
index 000000000000..40d0f4a3db8a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/goxel/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, scons, pkgconfig, wrapGAppsHook
+, glfw3, gtk3, libpng12 }:
+
+stdenv.mkDerivation rec {
+  pname = "goxel";
+  version = "0.10.6";
+
+  src = fetchFromGitHub {
+    owner = "guillaumechereau";
+    repo = "goxel";
+    rev = "v${version}";
+    sha256 = "1wmxy5wfk1xrqgz0y0zcr4vkddylqc70cv4vzk117x6whjnldsm3";
+  };
+
+  patches = [ ./disable-imgui_ini.patch ];
+
+  nativeBuildInputs = [ scons pkgconfig wrapGAppsHook ];
+  buildInputs = [ glfw3 gtk3 libpng12 ];
+  NIX_LDFLAGS = "-lpthread";
+
+  buildPhase = ''
+    make release
+  '';
+
+  installPhase = ''
+    install -D ./goxel $out/bin/goxel
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Open Source 3D voxel editor";
+    homepage = "https://guillaumechereau.github.io/goxel/";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ tilpner ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/goxel/disable-imgui_ini.patch b/nixpkgs/pkgs/applications/graphics/goxel/disable-imgui_ini.patch
new file mode 100644
index 000000000000..9427d45487d4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/goxel/disable-imgui_ini.patch
@@ -0,0 +1,13 @@
+diff --git a/src/gui.cpp b/src/gui.cpp
+index 9b7236c..a8a11b2 100644
+--- a/src/gui.cpp
++++ b/src/gui.cpp
+@@ -314,6 +314,8 @@ static void init_ImGui(const inputs_t *inputs)
+     ImGuiIO& io = ImGui::GetIO();
+     io.DeltaTime = 1.0f/60.0f;
+
++    io.IniFilename = NULL;
++
+     io.KeyMap[ImGuiKey_Tab]         = KEY_TAB;
+     io.KeyMap[ImGuiKey_LeftArrow]   = KEY_LEFT;
+     io.KeyMap[ImGuiKey_RightArrow]  = KEY_RIGHT;
diff --git a/nixpkgs/pkgs/applications/graphics/gpicview/default.nix b/nixpkgs/pkgs/applications/graphics/gpicview/default.nix
new file mode 100644
index 000000000000..9e3ab37c3223
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/gpicview/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, intltool, pkgconfig, gtk2, fetchpatch }:
+
+stdenv.mkDerivation {
+  name = "gpicview-0.2.4";
+
+  src = fetchurl {
+    url    = "mirror://sourceforge/lxde/gpicview-0.2.4.tar.gz";
+    sha256 = "1svcy1c8bgk0pl12yhyv16h2fl52x5vzzcv57z6qdcv5czgvgglr";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://raw.githubusercontent.com/nonas/debian-clang/master/buildlogs/gpicview/gpicview-0.2.4/debian/patches/clang_FTBFS_Wreturn-type.patch";
+      sha256 = "02dm966bplnv10knpdx7rlpjipk884156ggd9ij05zhza0jl8xcs";
+    })
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A simple and fast image viewer for X";
+    homepage    = "http://lxde.sourceforge.net/gpicview/";
+    repositories.git = "git://lxde.git.sourceforge.net/gitroot/lxde/gpicview";
+    license     = licenses.gpl2;
+    maintainers = with maintainers; [ lovek323 ];
+    platforms   = platforms.unix;
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ intltool gtk2 ];
+}
diff --git a/nixpkgs/pkgs/applications/graphics/gqview/default.nix b/nixpkgs/pkgs/applications/graphics/gqview/default.nix
new file mode 100644
index 000000000000..965ac5db6821
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/gqview/default.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchurl, pkgconfig, gtk2, libpng}:
+
+assert pkgconfig != null && gtk2 != null && libpng != null;
+# Note that we cannot just copy gtk's png attribute, since gtk might
+# not be linked against png.
+# !!! assert libpng == gtk2.libpng;
+
+stdenv.mkDerivation {
+  name = "gqview-2.1.5";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/gqview/gqview-2.1.5.tar.gz";
+    sha256 = "0ilm5s7ps9kg4f5hzgjhg0xhn6zg0v9i7jnd67zrx9h7wsaa9zhj";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gtk2 libpng];
+
+  hardeningDisable = [ "format" ];
+
+  NIX_LDFLAGS = "-lm";
+
+  meta = with stdenv.lib; {
+    description = "A fast image viewer";
+    homepage = "http://gqview.sourceforge.net";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/grafx2/default.nix b/nixpkgs/pkgs/applications/graphics/grafx2/default.nix
new file mode 100644
index 000000000000..2a2a6a675989
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/grafx2/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, SDL, SDL_image, SDL_ttf, zlib, libpng, pkgconfig, lua5 }:
+
+stdenv.mkDerivation rec {
+
+  version = "2.4.2035";
+  pname = "grafx2";
+
+  src = fetchurl {
+    url = "https://grafx2.googlecode.com/files/${pname}-${version}-src.tgz";
+    sha256 = "0svsy6rqmdj11b400c242i2ixihyz0hds0dgicqz6g6dcgmcl62q";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ SDL SDL_image SDL_ttf libpng zlib lua5 ];
+
+  preBuild = "cd src";
+
+  preInstall = '' mkdir -p "$out" '';
+
+  installPhase = ''make install prefix="$out"'';
+
+  meta = {
+    description = "Bitmap paint program inspired by the Amiga programs Deluxe Paint and Brilliance";
+    homepage = "http://pulkomandy.tk/projects/GrafX2";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = [ "x86_64-linux" "i686-linux" ];
+    maintainers = [ stdenv.lib.maintainers.zoomulator ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/graphicsmagick/compat.nix b/nixpkgs/pkgs/applications/graphics/graphicsmagick/compat.nix
new file mode 100644
index 000000000000..9517aa78ee46
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/graphicsmagick/compat.nix
@@ -0,0 +1,37 @@
+{ stdenv, graphicsmagick }:
+
+stdenv.mkDerivation {
+  pname = "graphicsmagick-imagemagick-compat";
+  inherit (graphicsmagick) version;
+
+  dontUnpack = true;
+  buildPhase = "true";
+
+  utils = [
+    "composite"
+    "conjure"
+    "convert"
+    "identify"
+    "mogrify"
+    "montage"
+    "animate"
+    "display"
+    "import"
+  ];
+
+  # TODO: symlink libraries?
+  installPhase = ''
+    mkdir -p "$out"/bin
+    mkdir -p "$out"/share/man/man1
+    for util in ''${utils[@]}; do
+      ln -s ${graphicsmagick}/bin/gm "$out/bin/$util"
+      ln -s ${graphicsmagick}/share/man/man1/gm.1.gz "$out/share/man/man1/$util.1.gz"
+    done
+  '';
+
+  meta = {
+    description = "ImageMagick interface for GraphicsMagick";
+    license = stdenv.lib.licenses.free;
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/graphicsmagick/default.nix b/nixpkgs/pkgs/applications/graphics/graphicsmagick/default.nix
new file mode 100644
index 000000000000..b7a1a8c4a6f9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/graphicsmagick/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, bzip2, freetype, graphviz, ghostscript
+, libjpeg, libpng, libtiff, libxml2, zlib, libtool, xz, libX11
+, libwebp, quantumdepth ? 8, fixDarwinDylibNames }:
+
+stdenv.mkDerivation rec {
+  pname = "graphicsmagick";
+  version = "1.3.35";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/graphicsmagick/GraphicsMagick-${version}.tar.xz";
+    sha256 = "0l024l4hawm9s3jqrgi2j0lxgm61dqh8sgkj1017ma7y11hqv2hq";
+  };
+
+  patches = [
+    ./disable-popen.patch
+  ];
+
+  configureFlags = [
+    "--enable-shared"
+    "--with-quantum-depth=${toString quantumdepth}"
+    "--with-gslib=yes"
+  ];
+
+  buildInputs =
+    [ bzip2 freetype ghostscript graphviz libjpeg libpng libtiff libX11 libxml2
+      zlib libtool libwebp
+    ]
+    ++ stdenv.lib.optional stdenv.isDarwin fixDarwinDylibNames;
+
+  nativeBuildInputs = [ xz ];
+
+  postInstall = ''
+    sed -i 's/-ltiff.*'\'/\'/ $out/bin/*
+  '';
+
+  meta = {
+    homepage = "http://www.graphicsmagick.org";
+    description = "Swiss army knife of image processing";
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/graphicsmagick/disable-popen.patch b/nixpkgs/pkgs/applications/graphics/graphicsmagick/disable-popen.patch
new file mode 100644
index 000000000000..2cdb1f7e90f7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/graphicsmagick/disable-popen.patch
@@ -0,0 +1,12 @@
+http://permalink.gmane.org/gmane.comp.security.oss.general/19669
+
+--- a/magick/blob.c Sat Nov 07 14:49:16 2015 -0600
++++ b/magick/blob.c Sun May 29 14:12:57 2016 -0500
+@@ -68,6 +68,7 @@
+ */
+ #define DefaultBlobQuantum  65541
+ 
++#undef HAVE_POPEN
+ 
+ /*
+   Enum declarations.
diff --git a/nixpkgs/pkgs/applications/graphics/gscan2pdf/default.nix b/nixpkgs/pkgs/applications/graphics/gscan2pdf/default.nix
new file mode 100644
index 000000000000..352b6b900cc6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/gscan2pdf/default.nix
@@ -0,0 +1,107 @@
+{ stdenv, fetchurl, perlPackages, wrapGAppsHook,
+  # libs
+  librsvg, sane-backends, sane-frontends,
+  # runtime dependencies
+  imagemagick, libtiff, djvulibre, poppler_utils, ghostscript, unpaper, pdftk,
+  # test dependencies
+  xvfb_run, liberation_ttf, file, tesseract }:
+
+with stdenv.lib;
+
+perlPackages.buildPerlPackage rec {
+  pname = "gscan2pdf";
+  version = "2.6.5";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/gscan2pdf/${version}/${pname}-${version}.tar.xz";
+    sha256 = "0x8931i5zs4zl3iqjhlp7h8y6ssklxiqsddz5kh84nl3p0izbg0y";
+  };
+
+  nativeBuildInputs = [ wrapGAppsHook ];
+
+  buildInputs =
+    [ librsvg sane-backends sane-frontends ] ++
+    (with perlPackages; [
+      Gtk3
+      Gtk3SimpleList
+      Cairo
+      CairoGObject
+      Glib
+      GlibObjectIntrospection
+      GooCanvas2
+      LocaleGettext
+      PDFAPI2
+      ImageSane
+      SetIntSpan
+      PerlMagick
+      ConfigGeneral
+      ListMoreUtils
+      HTMLParser
+      ProcProcessTable
+      LogLog4perl
+      TryTiny
+      DataUUID
+      DateCalc
+      IOString
+      FilesysDf
+      SubOverride
+    ]);
+
+  postPatch = let
+    fontSubstitute = "${liberation_ttf}/share/fonts/truetype/LiberationSans-Regular.ttf";
+  in ''
+    # Required for the program to properly load its SVG assets
+    substituteInPlace bin/gscan2pdf \
+      --replace "/usr/share" "$out/share"
+
+    # Substitute the non-free Helvetica font in the tests
+    sed -i 's|-pointsize|-font ${fontSubstitute} -pointsize|g' t/*.t
+  '';
+
+  postInstall = ''
+    # Remove impurity
+    find $out -type f -name "*.pod" -delete
+
+    # Add runtime dependencies
+    wrapProgram "$out/bin/gscan2pdf" \
+      --prefix PATH : "${imagemagick}/bin" \
+      --prefix PATH : "${libtiff}/bin" \
+      --prefix PATH : "${djvulibre}/bin" \
+      --prefix PATH : "${poppler_utils}/bin" \
+      --prefix PATH : "${ghostscript}/bin" \
+      --prefix PATH : "${unpaper}/bin" \
+      --prefix PATH : "${pdftk}/bin"
+  '';
+
+  enableParallelBuilding = true;
+
+  installTargets = [ "install" ];
+
+  outputs = [ "out" "man" ];
+
+  checkInputs = [
+    imagemagick
+    libtiff
+    djvulibre
+    poppler_utils
+    ghostscript
+    unpaper
+    pdftk
+
+    xvfb_run
+    file
+    tesseract # tests are expecting tesseract 3.x precisely
+  ];
+
+  checkPhase = ''
+    xvfb-run -s '-screen 0 800x600x24' \
+      make test
+  '';
+
+  meta = {
+    description = "A GUI to produce PDFs or DjVus from scanned documents";
+    homepage = "http://gscan2pdf.sourceforge.net/";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ pacien ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/gthumb/default.nix b/nixpkgs/pkgs/applications/graphics/gthumb/default.nix
new file mode 100644
index 000000000000..27e8e00bdb3a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/gthumb/default.nix
@@ -0,0 +1,111 @@
+{ stdenv
+, fetchurl
+, fetchpatch
+, gnome3
+, pkgconfig
+, meson
+, ninja
+, exiv2
+, libjpeg
+, libtiff
+, gst_all_1
+, libraw
+, libsoup
+, libsecret
+, glib
+, gtk3
+, gsettings-desktop-schemas
+, libchamplain
+, librsvg
+, libwebp
+, json-glib
+, webkitgtk
+, lcms2
+, bison
+, flex
+, clutter-gtk
+, wrapGAppsHook
+, shared-mime-info
+, python3
+, desktop-file-utils
+, itstool
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gthumb";
+  version = "3.10.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "0j7cxp4hhkvkckyvll6pmqkv5rwrknlzq9j1my0grb01b8wzhw9y";
+  };
+
+  nativeBuildInputs = [
+    bison
+    desktop-file-utils
+    flex
+    itstool
+    meson
+    ninja
+    pkgconfig
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    clutter-gtk
+    exiv2
+    glib
+    gnome3.adwaita-icon-theme
+    gsettings-desktop-schemas
+    gst_all_1.gst-plugins-base
+    (gst_all_1.gst-plugins-good.override { gtkSupport = true; })
+    gst_all_1.gst-libav
+    gst_all_1.gst-plugins-bad
+    gst_all_1.gst-plugins-ugly
+    gtk3
+    json-glib
+    lcms2
+    libchamplain
+    libjpeg
+    libraw
+    librsvg
+    libsecret
+    libsoup
+    libtiff
+    libwebp
+    webkitgtk
+  ];
+
+  mesonFlags = [
+    "-Dlibchamplain=true"
+  ];
+
+  postPatch = ''
+    chmod +x gthumb/make-gthumb-h.py
+
+    patchShebangs data/gschemas/make-enums.py \
+      gthumb/make-gthumb-h.py \
+      po/make-potfiles-in.py \
+      postinstall.py \
+      gthumb/make-authors-tab.py
+  '';
+
+  preFixup = ''
+    gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share")
+  '';
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    homepage = "https://wiki.gnome.org/Apps/Gthumb";
+    description = "Image browser and viewer for GNOME";
+    platforms = platforms.linux;
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.mimame ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/guetzli/default.nix b/nixpkgs/pkgs/applications/graphics/guetzli/default.nix
new file mode 100644
index 000000000000..ccddf907e94c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/guetzli/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, libpng, fetchFromGitHub, pkgconfig }:
+let
+  version = "1.0.1";
+in
+stdenv.mkDerivation {
+  pname = "guetzli";
+  inherit version;
+  src = fetchFromGitHub {
+    owner = "google";
+    repo = "guetzli";
+    rev = "v${version}";
+    sha256 = "1wy9wfvyradp0aigfv8yijvj0dgb5kpq2yf2xki15f605jc1r5dm";
+  };
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libpng ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install bin/Release/guetzli $out/bin/
+  '';
+
+  meta = {
+    description = "Perceptual JPEG encoder";
+    longDescription = "Guetzli is a JPEG encoder that aims for excellent compression density at high visual quality.";
+    homepage = "https://github.com/google/guetzli";
+    license = stdenv.lib.licenses.asl20;
+    platforms = stdenv.lib.platforms.x86_64;
+    maintainers = [ stdenv.lib.maintainers.seppeljordan ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/hugin/default.nix b/nixpkgs/pkgs/applications/graphics/hugin/default.nix
new file mode 100644
index 000000000000..7314ff893b00
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/hugin/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, cmake, fetchurl, gnumake, makeWrapper, pkgconfig, fetchpatch
+, autopanosiftc, boost, cairo, enblend-enfuse, exiv2, fftw, flann, gettext
+, glew, ilmbase, lcms2, lensfun, libjpeg, libpng, libtiff, libX11, libXi
+, libXmu, libGLU, libGL, openexr, panotools, perlPackages, sqlite, vigra, wxGTK, zlib
+}:
+
+stdenv.mkDerivation rec {
+  name = "hugin-2019.0.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/hugin/${name}.tar.bz2";
+    sha256 = "1l925qslp98gg7yzmgps10h6dq0nb60wbfk345anlxsv0g2ifizr";
+  };
+
+  patches = [
+    # Fixes build with exiv2 0.27.1
+    (fetchpatch {
+      url = "https://git.archlinux.org/svntogit/community.git/plain/trunk/hugin-exiv2-0.27.1.patch?h=packages/hugin";
+      sha256 = "1yxvlpvrhyrfd2w6kwx1w3mncsvlzdhp0w7xchy8q6kc2kd5nf7r";
+    })
+  ];
+
+  buildInputs = [
+    boost cairo exiv2 fftw flann gettext glew ilmbase lcms2 lensfun libjpeg
+    libpng libtiff libX11 libXi libXmu libGLU libGL openexr panotools sqlite vigra
+    wxGTK zlib
+  ];
+
+  nativeBuildInputs = [ cmake makeWrapper pkgconfig ];
+
+  # disable installation of the python scripting interface
+  cmakeFlags = [ "-DBUILD_HSI:BOOl=OFF" ];
+
+  enableParallelBuilding = true;
+
+  NIX_CFLAGS_COMPILE = "-I${ilmbase.dev}/include/OpenEXR";
+
+  postInstall = ''
+    for p in $out/bin/*; do
+      wrapProgram "$p" \
+        --suffix PATH : ${autopanosiftc}/bin \
+        --suffix PATH : ${enblend-enfuse}/bin \
+        --suffix PATH : ${gnumake}/bin \
+        --suffix PATH : ${perlPackages.ImageExifTool}/bin
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://hugin.sourceforge.net/";
+    description = "Toolkit for stitching photographs and assembling panoramas, together with an easy to use graphical front end";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ hrdinka ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/ideogram/default.nix b/nixpkgs/pkgs/applications/graphics/ideogram/default.nix
new file mode 100644
index 000000000000..4bf414cf8dd5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/ideogram/default.nix
@@ -0,0 +1,67 @@
+{ stdenv
+, fetchFromGitHub
+, fetchpatch
+, vala
+, pkgconfig
+, python3
+, glib
+, gtk3
+, meson
+, ninja
+, libgee
+, pantheon
+, desktop-file-utils
+, xorg
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "ideogram";
+  version = "1.3.3";
+
+  src = fetchFromGitHub {
+    owner = "cassidyjames";
+    repo = pname;
+    rev = version;
+    sha256 = "1zkr7x022khn5g3sq2dkxzy1hiiz66vl81s3i5sb9qr88znh79p1";
+  };
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    meson
+    ninja
+    vala
+    pkgconfig
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    libgee
+    pantheon.granite
+    xorg.libX11
+    xorg.libXtst
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Insert emoji anywhere, even in non-native apps - designed for elementary OS";
+    homepage = "https://github.com/cassidyjames/ideogram";
+    license = licenses.gpl2Plus;
+    maintainers = pantheon.maintainers;
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/graphics/image_optim/Gemfile b/nixpkgs/pkgs/applications/graphics/image_optim/Gemfile
new file mode 100644
index 000000000000..d6a0f13a4c1a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/image_optim/Gemfile
@@ -0,0 +1,2 @@
+source 'https://rubygems.org'
+gem 'image_optim'
diff --git a/nixpkgs/pkgs/applications/graphics/image_optim/Gemfile.lock b/nixpkgs/pkgs/applications/graphics/image_optim/Gemfile.lock
new file mode 100644
index 000000000000..3ffadb5acbe3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/image_optim/Gemfile.lock
@@ -0,0 +1,23 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    exifr (1.3.6)
+    fspath (3.1.0)
+    image_optim (0.26.3)
+      exifr (~> 1.2, >= 1.2.2)
+      fspath (~> 3.0)
+      image_size (>= 1.5, < 3)
+      in_threads (~> 1.3)
+      progress (~> 3.0, >= 3.0.1)
+    image_size (2.0.0)
+    in_threads (1.5.1)
+    progress (3.5.0)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  image_optim
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/applications/graphics/image_optim/default.nix b/nixpkgs/pkgs/applications/graphics/image_optim/default.nix
new file mode 100644
index 000000000000..ba437eab4122
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/image_optim/default.nix
@@ -0,0 +1,66 @@
+{ lib, bundlerApp, bundlerUpdateScript, makeWrapper,
+  withPngcrush ? true,       pngcrush ? null,
+  withPngout ? true,         pngout ? null,
+  withAdvpng ? true,         advancecomp ? null,
+  withOptipng ? true,        optipng ? null,
+  withPngquant ? true,       pngquant ? null,
+  withJhead ? true,          jhead ? null,
+  withJpegoptim ? true,      jpegoptim ? null,
+  withJpegrecompress ? true, jpeg-archive ? null,
+  withJpegtran ? true,       libjpeg ? null,
+  withGifsicle ? true,       gifsicle ? null,
+  withSvgo ? true,           svgo ? null
+}:
+
+assert withPngcrush       -> pngcrush != null;
+assert withPngout         -> pngout != null;
+assert withAdvpng         -> advancecomp != null;
+assert withOptipng        -> optipng != null;
+assert withPngquant       -> pngquant != null;
+assert withJhead          -> jhead != null;
+assert withJpegoptim      -> jpegoptim != null;
+assert withJpegrecompress -> jpeg-archive != null;
+assert withJpegtran       -> libjpeg != null;
+assert withGifsicle       -> gifsicle != null;
+assert withSvgo           -> svgo != null;
+
+with lib;
+
+let
+  optionalDepsPath = []
+    ++ optional withPngcrush pngcrush
+    ++ optional withPngout pngout
+    ++ optional withAdvpng advancecomp
+    ++ optional withOptipng optipng
+    ++ optional withPngquant pngquant
+    ++ optional withJhead jhead
+    ++ optional withJpegoptim jpegoptim
+    ++ optional withJpegrecompress jpeg-archive
+    ++ optional withJpegtran libjpeg
+    ++ optional withGifsicle gifsicle
+    ++ optional withSvgo svgo;
+in
+
+bundlerApp {
+  pname = "image_optim";
+  gemdir = ./.;
+
+  exes = [ "image_optim" ];
+
+  buildInputs = [ makeWrapper ];
+
+  postBuild = ''
+    wrapProgram $out/bin/image_optim \
+      --prefix PATH : ${makeBinPath optionalDepsPath}
+  '';
+
+  passthru.updateScript = bundlerUpdateScript "image_optim";
+
+  meta = with lib; {
+    description = "Command line tool and ruby interface to optimize (lossless compress, optionally lossy) jpeg, png, gif and svg images using external utilities (advpng, gifsicle, jhead, jpeg-recompress, jpegoptim, jpegrescan, jpegtran, optipng, pngcrush, pngout, pngquant, svgo)";
+    homepage    = "https://github.com/toy/image_optim";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ srghma nicknovitski ];
+    platforms   = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/image_optim/gemset.nix b/nixpkgs/pkgs/applications/graphics/image_optim/gemset.nix
new file mode 100644
index 000000000000..6c9ec2de7457
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/image_optim/gemset.nix
@@ -0,0 +1,51 @@
+{
+  exifr = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0q2abhiyvgfv23i0izbskjxcqaxiw9bfg6s57qgn4li4yxqpwpfg";
+      type = "gem";
+    };
+    version = "1.3.6";
+  };
+  fspath = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vjn9sy4hklr2d5wxmj5x1ry31dfq3sjp779wyprb3nbbdmra1sc";
+      type = "gem";
+    };
+    version = "3.1.0";
+  };
+  image_optim = {
+    dependencies = ["exifr" "fspath" "image_size" "in_threads" "progress"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "082w9qcyy9j6m6s2pknfdcik7l2qch4j48axs13m06l4s1hz0dmg";
+      type = "gem";
+    };
+    version = "0.26.3";
+  };
+  image_size = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bcn7nc6qix3w4sf7xd557lnsgjniqa7qvz7nnznx70m8qfbc7ig";
+      type = "gem";
+    };
+    version = "2.0.0";
+  };
+  in_threads = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14hqm59sgqi91ag187zwpgwi58xckjkk58m031ghkp0csl8l9mkx";
+      type = "gem";
+    };
+    version = "1.5.1";
+  };
+  progress = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yrzq4v5sp7cg4nbgqh11k3d1czcllfz98dcdrxrsjxwq5ziiw0p";
+      type = "gem";
+    };
+    version = "3.5.0";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/graphics/imagej/default.nix b/nixpkgs/pkgs/applications/graphics/imagej/default.nix
new file mode 100644
index 000000000000..d47369f5094a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/imagej/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchurl, jre, unzip, makeWrapper }:
+
+# Note:
+# - User config dir is hard coded by upstream to $HOME/.imagej on linux systems
+#   and to $HOME/Library/Preferences on macOS.
+#  (The current trend appears to be to use $HOME/.config/imagej
+#    on linux systems, but we here do not attempt to fix it.)
+
+let
+  imagej150 = stdenv.mkDerivation {
+    pname = "imagej";
+    version = "150";
+
+    src = fetchurl {
+      url = "https://wsr.imagej.net/distros/cross-platform/ij150.zip";
+      sha256 = "97aba6fc5eb908f5160243aebcdc4965726693cb1353d9c0d71b8f5dd832cb7b";
+    };
+    buildInputs = [ unzip makeWrapper ];
+    inherit jre;
+
+    # JAR files that are intended to be used by other packages
+    # should go to $out/share/java.
+    # (Some uses ij.jar as a library not as a standalone program.)
+    installPhase = ''
+      mkdir -p $out/share/java
+      # Read permisssion suffices for the jar and others.
+      # Simple cp shall clear suid bits, if any.
+      cp ij.jar $out/share/java
+      cp -dR luts macros plugins $out/share
+      mkdir $out/bin
+      makeWrapper ${jre}/bin/java $out/bin/imagej \
+        --add-flags "-jar $out/share/java/ij.jar -ijpath $out/share"
+    '';
+    meta = with stdenv.lib; {
+      homepage = "https://imagej.nih.gov/ij/";
+      description = "Image processing and analysis in Java";
+      longDescription = ''
+        ImageJ is a public domain Java image processing program
+        inspired by NIH Image for the Macintosh.
+        It runs on any computer with a Java 1.4 or later virtual machine.
+      '';
+      license = licenses.publicDomain;
+      platforms = with platforms; linux ++ darwin;
+      maintainers = with maintainers; [ yuriaisaka ];
+    };
+  };
+in
+  imagej150
diff --git a/nixpkgs/pkgs/applications/graphics/imgcat/default.nix b/nixpkgs/pkgs/applications/graphics/imgcat/default.nix
new file mode 100644
index 000000000000..5943632930c5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/imgcat/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, autoconf, automake, libtool, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "imgcat";
+  version = "2.3.1";
+
+  nativeBuildInputs = [ autoconf automake libtool ];
+  buildInputs = [ ncurses ];
+
+  preConfigure = ''
+    ${autoconf}/bin/autoconf
+    sed -i -e "s|-ltermcap|-L ${ncurses}/lib -lncurses|" Makefile
+  '';
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  src = fetchFromGitHub {
+    owner = "eddieantonio";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0frz40rjwi73nx2dlqvmnn56zwr29bmnngfb11hhwr7v58yfajdi";
+  };
+
+  NIX_CFLAGS_COMPILE = "-Wno-error";
+
+  meta = with stdenv.lib; {
+    description = "It's like cat, but for images";
+    homepage = "https://github.com/eddieantonio/imgcat";
+    license = licenses.isc;
+    maintainers = with maintainers; [ jwiegley ];
+    platforms = platforms.unix;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/graphics/imgp/default.nix b/nixpkgs/pkgs/applications/graphics/imgp/default.nix
new file mode 100644
index 000000000000..80420202c053
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/imgp/default.nix
@@ -0,0 +1,38 @@
+{ lib, fetchFromGitHub, buildPythonApplication, pillow, imgp }:
+
+buildPythonApplication rec {
+  pname = "imgp";
+  version = "2.7";
+
+  src = fetchFromGitHub {
+    owner = "jarun";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "13r4fn3dd0nyidfhrr7zzpls5ifbyqdwxhyvpkqr8ahchws7wfc6";
+  };
+
+  propagatedBuildInputs = [ pillow ];
+
+  installFlags = [
+    "DESTDIR=$(out)"
+    "PREFIX="
+  ];
+
+  postInstall = ''
+    install -Dm555 auto-completion/bash/imgp-completion.bash $out/share/bash-completion/completions/imgp.bash
+    install -Dm555 auto-completion/fish/imgp.fish -t $out/share/fish/vendor_completions.d
+    install -Dm555 auto-completion/zsh/_imgp -t $out/share/zsh/site-functions
+  '';
+
+  checkPhase = ''
+    $out/bin/imgp --help
+  '';
+
+  meta = with lib; {
+    description = "High-performance CLI batch image resizer & rotator";
+    homepage = "https://github.com/jarun/imgp";
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ sikmir ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/imlibsetroot/default.nix b/nixpkgs/pkgs/applications/graphics/imlibsetroot/default.nix
new file mode 100644
index 000000000000..06549468efe9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/imlibsetroot/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, libX11, libXinerama, imlib2 }:
+
+stdenv.mkDerivation {
+  pname = "imlibsetroot";
+  version = "1.2";
+  src = fetchurl {
+    url = "https://robotmonkeys.net/wp-content/uploads/2010/03/imlibsetroot-12.tar.gz";
+    sha256 = "8c1b3b7c861e4d865883ec13a96b8e4ab22464a87d4e6c67255b17a88e3cfd1c";
+  };
+
+  buildInputs = [ libX11 imlib2 libXinerama ];
+  buildPhase = ''
+    gcc -g imlibsetroot.c -o imlibsetroot             \
+      `imlib2-config --cflags` `imlib2-config --libs` \
+      -I/include/X11/extensions -lXinerama -lX11
+  '';
+  installPhase = ''
+    mkdir -p $out/bin
+    install -m 755 imlibsetroot $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A Xinerama Aware Background Changer";
+    homepage = "http://robotmonkeys.net/2010/03/30/imlibsetroot/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ dwarfmaster ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/imv/default.nix b/nixpkgs/pkgs/applications/graphics/imv/default.nix
new file mode 100644
index 000000000000..276c2cd3d7ea
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/imv/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, fetchFromGitHub
+, freeimage, fontconfig, pkgconfig
+, asciidoc, docbook_xsl, libxslt, cmocka
+, librsvg, pango, libxkbcommon, wayland
+, libGLU, icu
+}:
+
+stdenv.mkDerivation rec {
+  pname = "imv";
+  version = "4.1.0";
+
+  src = fetchFromGitHub {
+    owner  = "eXeC64";
+    repo   = "imv";
+    rev    = "v${version}";
+    sha256 = "0gk8g178i961nn3bls75a8qpv6wvfvav6hd9lxca1skaikd33zdx";
+  };
+
+  preBuild = ''
+    # Version is 4.0.1, but Makefile was not updated
+    sed -i 's/echo v4\.0\.0/echo v4.0.1/' Makefile
+  '';
+
+  nativeBuildInputs = [
+    asciidoc
+    cmocka
+    docbook_xsl
+    libxslt
+  ];
+
+  buildInputs = [
+    freeimage
+    libGLU
+    librsvg
+    libxkbcommon
+    pango
+    pkgconfig
+    wayland
+    icu
+  ];
+
+  installFlags = [ "PREFIX=$(out)" "CONFIGPREFIX=$(out)/etc" ];
+
+  postFixup = ''
+    # The `bin/imv` script assumes imv-wayland or imv-x11 in PATH,
+    # so we have to fix those to the binaries we installed into the /nix/store
+
+    sed -i "s|\bimv-wayland\b|$out/bin/imv-wayland|" $out/bin/imv
+    sed -i "s|\bimv-x11\b|$out/bin/imv-x11|" $out/bin/imv
+  '';
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    description = "A command line image viewer for tiling window managers";
+    homepage    = "https://github.com/eXeC64/imv";
+    license     = licenses.gpl2;
+    maintainers = with maintainers; [ rnhmjoj markus1189 ];
+    platforms   = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/inkscape/default.nix b/nixpkgs/pkgs/applications/graphics/inkscape/default.nix
new file mode 100644
index 000000000000..e2f27e9a4955
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/inkscape/default.nix
@@ -0,0 +1,133 @@
+{ stdenv
+, boehmgc
+, boost
+, cairo
+, cmake
+, fetchpatch
+, fetchurl
+, gettext
+, glib
+, glibmm
+, gsl
+, gtkmm2
+, gtkspell2
+, imagemagick
+, lcms
+, libcdr
+, libexif
+, libpng
+, librevenge
+, librsvg
+, libsigcxx
+, libvisio
+, libwpg
+, libXft
+, libxml2
+, libxslt
+, makeWrapper
+, perlPackages
+, pkg-config
+, poppler
+, popt
+, potrace
+, python3
+, wrapGAppsHook
+, zlib
+}:
+let
+  python3Env = python3.withPackages
+    (ps: with ps; [
+      numpy
+      lxml
+      scour
+    ]);
+in
+stdenv.mkDerivation rec {
+  pname = "inkscape";
+  version = "0.92.5";
+
+  src = fetchurl {
+    url = "https://media.inkscape.org/dl/resources/file/${pname}-${version}.tar.bz2";
+    sha256 = "02wsa66ifycibmgfsrhmhqdv41brg955lffq8drsjr5xw9lpzvl1";
+  };
+
+  # Inkscape hits the ARGMAX when linking on macOS. It appears to be
+  # CMake’s ARGMAX check doesn’t offer enough padding for NIX_LDFLAGS.
+  # Setting strictDeps it avoids duplicating some dependencies so it
+  # will leave us under ARGMAX.
+  strictDeps = true;
+
+  postPatch = ''
+    patchShebangs share/extensions
+    patchShebangs fix-roff-punct
+
+    # Python is used at run-time to execute scripts, e.g., those from
+    # the "Effects" menu.
+    substituteInPlace src/extension/implementation/script.cpp \
+      --replace '"python-interpreter", "python"' '"python-interpreter", "${python3Env}/bin/python"'
+  '';
+
+  nativeBuildInputs = [
+    pkg-config
+    cmake
+    makeWrapper
+    python3Env
+    wrapGAppsHook
+  ] ++ (with perlPackages; [
+    perl
+    XMLParser
+  ]);
+
+  buildInputs = [
+    boehmgc
+    boost
+    gettext
+    glib
+    glibmm
+    gsl
+    gtkmm2
+    imagemagick
+    lcms
+    libcdr
+    libexif
+    libpng
+    librevenge
+    librsvg # for loading icons
+    libsigcxx
+    libvisio
+    libwpg
+    libXft
+    libxml2
+    libxslt
+    perlPackages.perl
+    poppler
+    popt
+    potrace
+    python3Env
+    zlib
+  ] ++ stdenv.lib.optionals (!stdenv.isDarwin) [
+    gtkspell2
+  ] ++ stdenv.lib.optionals stdenv.isDarwin [
+    cairo
+  ];
+
+  # Make sure PyXML modules can be found at run-time.
+  postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+    install_name_tool -change $out/lib/libinkscape_base.dylib $out/lib/inkscape/libinkscape_base.dylib $out/bin/inkscape
+    install_name_tool -change $out/lib/libinkscape_base.dylib $out/lib/inkscape/libinkscape_base.dylib $out/bin/inkview
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Vector graphics editor";
+    homepage = "https://www.inkscape.org";
+    license = licenses.gpl3Plus;
+    maintainers = [ maintainers.jtojnar ];
+    platforms = platforms.all;
+    longDescription = ''
+      Inkscape is a feature-rich vector graphics editor that edits
+      files in the W3C SVG (Scalable Vector Graphics) file format.
+
+      If you want to import .eps files install ps2edit.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/ipe/default.nix b/nixpkgs/pkgs/applications/graphics/ipe/default.nix
new file mode 100644
index 000000000000..6a2a8dbc18fe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/ipe/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, makeWrapper, pkgconfig, zlib, freetype, cairo, lua5, texlive, ghostscript
+, libjpeg, libpng, qtbase, mkDerivation
+}:
+
+mkDerivation rec {
+  name = "ipe-7.2.13";
+
+  src = fetchurl {
+    url = "https://dl.bintray.com/otfried/generic/ipe/7.2/${name}-src.tar.gz";
+    sha256 = "1a6a88r7j5z01z6k1z72a8g3n6lxdjjxxkdrzrfdd6df2gbs6g5g";
+  };
+
+  sourceRoot = "${name}/src";
+
+  IPEPREFIX=placeholder "out";
+  URWFONTDIR="${texlive}/texmf-dist/fonts/type1/urw/";
+  LUA_PACKAGE = "lua";
+
+  buildInputs = [
+    libjpeg libpng zlib qtbase freetype cairo lua5 texlive ghostscript
+  ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  qtWrapperArgs = [ ''--prefix PATH : ${texlive}/bin''  ];
+
+  enableParallelBuilding = true;
+
+  #TODO: make .desktop entry
+
+  meta = {
+    description = "An editor for drawing figures";
+    homepage = "http://ipe.otfried.org";
+    license = stdenv.lib.licenses.gpl3Plus;
+    longDescription = ''
+      Ipe is an extensible drawing editor for creating figures in PDF and Postscript format.
+      It supports making small figures for inclusion into LaTeX-documents
+      as well as presentations in PDF.
+    '';
+    maintainers = [ stdenv.lib.maintainers.ttuegel ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/jpeg-archive/default.nix b/nixpkgs/pkgs/applications/graphics/jpeg-archive/default.nix
new file mode 100644
index 000000000000..8beaf43c089c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/jpeg-archive/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchFromGitHub, mozjpeg, makeWrapper, coreutils, parallel, findutils }:
+
+stdenv.mkDerivation {
+  pname = "jpeg-archive";
+  version = "2.2.0"; # can be found here https://github.com/danielgtaylor/jpeg-archive/blob/master/src/util.c#L15
+
+  # update with
+  # nix-prefetch-git https://github.com/danielgtaylor/jpeg-archive
+  src = fetchFromGitHub {
+    owner = "danielgtaylor";
+    repo = "jpeg-archive";
+    rev = "8da4bf76b6c3c0e11e4941294bfc1857c119419b";
+    sha256 = "1639y9qp2ls80fzimwmwds792q8rq5p6c14c0r4jswx4yp6dcs33";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ mozjpeg ];
+
+  prePatch = ''
+    # allow override LIBJPEG
+    substituteInPlace Makefile --replace 'LIBJPEG =' 'LIBJPEG ?='
+  '';
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "MOZJPEG_PREFIX=${mozjpeg}"
+    "LIBJPEG=${mozjpeg}/lib/libjpeg.so"
+  ];
+
+  postInstall = ''
+    wrapProgram $out/bin/jpeg-archive \
+      --set PATH "$out/bin:${coreutils}/bin:${parallel}/bin:${findutils}/bin"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Utilities for archiving photos for saving to long term storage or serving over the web";
+    homepage    = "https://github.com/danielgtaylor/jpeg-archive";
+    license = licenses.mit;
+    maintainers = [ maintainers.srghma ];
+    platforms   = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/jpeginfo/default.nix b/nixpkgs/pkgs/applications/graphics/jpeginfo/default.nix
new file mode 100644
index 000000000000..e15aedd77e1c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/jpeginfo/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, libjpeg }:
+
+stdenv.mkDerivation rec {
+  pname = "jpeginfo";
+  version = "1.6.1";
+
+  src = fetchurl {
+    url = "https://www.kokkonen.net/tjko/src/${pname}-${version}.tar.gz";
+    sha256 = "0lvn3pnylyj56158d3ix9w1gas1s29klribw9bz1xym03p7k37k2";
+  };
+
+  buildInputs = [ libjpeg ];
+
+  meta = with stdenv.lib; {
+    description = "Prints information and tests integrity of JPEG/JFIF files";
+    homepage = "https://www.kokkonen.net/tjko/projects.html";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.bjornfor ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/jpegoptim/default.nix b/nixpkgs/pkgs/applications/graphics/jpegoptim/default.nix
new file mode 100644
index 000000000000..265ce82b8ac3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/jpegoptim/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, libjpeg }:
+
+stdenv.mkDerivation rec {
+  version = "1.4.6";
+  pname = "jpegoptim";
+
+  src = fetchurl {
+    url = "https://www.kokkonen.net/tjko/src/${pname}-${version}.tar.gz";
+    sha256 = "1dss7907fclfl8zsw0bl4qcw0hhz6fqgi3867w0jyfm3q9jfpcc8";
+  };
+
+  # There are no checks, it seems.
+  doCheck = false;
+
+  buildInputs = [ libjpeg ];
+
+  meta = with stdenv.lib; {
+    description = "Optimize JPEG files";
+    homepage = "https://www.kokkonen.net/tjko/projects.html";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.aristid ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/jpegrescan/default.nix b/nixpkgs/pkgs/applications/graphics/jpegrescan/default.nix
new file mode 100644
index 000000000000..5fe35edabdf6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/jpegrescan/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchFromGitHub, makeWrapper, libjpeg_turbo, perl, perlPackages }:
+
+stdenv.mkDerivation rec {
+  pname = "jpegrescan";
+  date = "2016-06-01";
+  name = "${pname}-${date}";
+
+  src = fetchFromGitHub {
+    owner = "kud";
+    repo = pname;
+    rev = "e5e39cd972b48ccfb2cba4da6855c511385c05f9";
+    sha256 = "0jbx1vzkzif6yjx1fnsm7fjsmq166sh7mn22lf01ll7s245nmpdp";
+  };
+
+  patchPhase = ''
+    patchShebangs jpegrescan
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/jpegrescan
+    mv README.md $out/share/jpegrescan/
+    mkdir $out/bin
+    mv jpegrescan $out/bin
+    chmod +x $out/bin/jpegrescan
+
+    wrapProgram $out/bin/jpegrescan --prefix PERL5LIB : $PERL5LIB
+  '';
+
+  propagatedBuildInputs = [ perlPackages.FileSlurp ];
+
+  buildInputs = [
+    perl libjpeg_turbo makeWrapper
+  ];
+
+  meta = with stdenv.lib; {
+    description = "losslessly shrink any JPEG file";
+    homepage = "https://github.com/kud/jpegrescan";
+    license = licenses.publicDomain;
+    maintainers = [ maintainers.ramkromberg ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/k3d/default.nix b/nixpkgs/pkgs/applications/graphics/k3d/default.nix
new file mode 100644
index 000000000000..c74f35e4334a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/k3d/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchFromGitHub, fetchpatch, ftgl, glew, asciidoc
+, cmake, ninja, libGLU, libGL, zlib, python, expat, libxml2, libsigcxx, libuuid, freetype
+, libpng, boost, doxygen, cairomm, pkgconfig, libjpeg, libtiff
+, gettext, intltool, perl, gtkmm2, glibmm, gtkglext, libXmu }:
+
+stdenv.mkDerivation rec {
+  version = "0.8.0.6";
+  pname = "k3d";
+  src = fetchFromGitHub {
+    owner = "K-3D";
+    repo = "k3d";
+    rev = "${pname}-${version}";
+    sha256 = "0vdjjg6h8mxm2n8mvkkg2mvd27jn2xx90hnmx23cbd35mpz9p4aa";
+  };
+
+  patches = [
+    (fetchpatch { /* glibmm 2.50 fix */
+      url = "https://github.com/K-3D/k3d/commit/c65889d0652490d88a573e47de7a9324bf27bff2.patch";
+      sha256 = "162icv1hicr2dirkb9ijacvg9bhz5j30yfwg7b45ijavk8rns62j";
+    })
+  ];
+
+  cmakeFlags = [
+    "-DK3D_BUILD_DOCS=false"
+    "-DK3D_BUILD_GUIDE=false"
+  ];
+
+  preConfigure = ''
+    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/build/lib"
+  '';
+
+  nativeBuildInputs = [ cmake ninja gettext intltool doxygen pkgconfig perl asciidoc ];
+
+  buildInputs = [
+     libGLU libGL zlib python expat libxml2 libsigcxx libuuid freetype libpng
+     boost cairomm libjpeg libtiff
+     ftgl glew gtkmm2 glibmm gtkglext libXmu
+    ];
+
+  #doCheck = false;
+
+  NIX_CFLAGS_COMPILE = "-Wno-deprecated-declarations";
+
+  meta = with stdenv.lib; {
+    description = "A 3D editor with support for procedural editing";
+    homepage = "http://www.k-3d.org/";
+    platforms = platforms.linux;
+    maintainers = [ maintainers.raskin ];
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/kcc/default.nix b/nixpkgs/pkgs/applications/graphics/kcc/default.nix
new file mode 100644
index 000000000000..da3589189725
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/kcc/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, mkDerivationWith
+, python3Packages
+, p7zip
+, archiveSupport ? true
+}:
+
+mkDerivationWith python3Packages.buildPythonApplication rec {
+  pname = "kcc";
+  version = "5.5.1";
+
+  src = python3Packages.fetchPypi {
+    inherit version;
+    pname = "KindleComicConverter";
+    sha256 = "5dbee5dc5ee06a07316ae5ebaf21ffa1970094dbae5985ad735e2807ef112644";
+  };
+  
+  propagatedBuildInputs = with python3Packages ; [
+    pillow
+    pyqt5
+    psutil
+    python-slugify
+    raven
+  ];
+
+  qtWrapperArgs = lib.optional archiveSupport [ "--prefix" "PATH" ":" "${ lib.makeBinPath [ p7zip ] }" ];
+
+  postFixup =  ''
+    wrapProgram $out/bin/kcc "''${qtWrapperArgs[@]}"
+  '';
+
+  meta = with lib; {
+    description = "Python app to convert comic/manga files or folders to EPUB, Panel View MOBI or E-Ink optimized CBZ";
+    homepage = "https://kcc.iosphe.re";
+    license = licenses.isc;
+    maintainers = with maintainers; [ dawidsowa ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/kgraphviewer/default.nix b/nixpkgs/pkgs/applications/graphics/kgraphviewer/default.nix
new file mode 100644
index 000000000000..9b96b30c62b1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/kgraphviewer/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, mkDerivation, fetchurl, cmake, extra-cmake-modules, pkgconfig, wrapGAppsHook
+, kconfig, kinit, kdoctools, kio, kparts, kwidgetsaddons
+, qtbase, qtsvg
+, boost, graphviz
+}:
+
+mkDerivation rec {
+  pname = "kgraphviewer";
+  version = "2.4.3";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/kgraphviewer/${version}/${pname}-${version}.tar.xz";
+    sha256 = "1h6pgg89gvxl8gw7wmkabyqqrzad5pxyv5lsmn1fl4ir8lcc5q2l";
+  };
+
+  buildInputs = [
+    qtbase qtsvg
+    boost graphviz
+  ];
+
+  nativeBuildInputs = [
+    cmake extra-cmake-modules pkgconfig wrapGAppsHook
+    kdoctools
+  ];
+
+  propagatedBuildInputs = [
+    kconfig kinit kio kparts kwidgetsaddons
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "A Graphviz dot graph viewer for KDE";
+    license     = licenses.gpl2;
+    maintainers = with maintainers; [ lethalman ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/kodelife/default.nix b/nixpkgs/pkgs/applications/graphics/kodelife/default.nix
new file mode 100644
index 000000000000..e5aac9b8823d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/kodelife/default.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, fetchzip
+, alsaLib
+, glib
+, gst_all_1
+, libGLU, libGL
+, xorg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "kodelife";
+  version = "0.9.0.129";
+
+  suffix = {
+    aarch64-linux = "linux-arm64";
+    armv7l-linux  = "linux-armhf";
+    x86_64-darwin = "macos";
+    x86_64-linux  = "linux-x86_64";
+  }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
+
+  src = fetchzip {
+    url = "https://hexler.net/pub/${pname}/${pname}-${version}-${suffix}.zip";
+    sha256 = {
+      aarch64-linux = "0z2fqlf156348ha3zhv16kvqdx68fbwbzch2gzjm9x1na9n5k1ra";
+      armv7l-linux  = "1ppwgrmgl1j2ws9mhrscvvkamd69a6xw7x35df6d30cyj97r0mzy";
+      x86_64-darwin = "0f8vn6m3xzsiyxm2ka5wkbp63wvzrix6g1xrbpvcm3v2llmychkl";
+      x86_64-linux  = "035c1nlw0nim057sz3axpkcgkafqbm6gpr8hwr097vlrqll6w3dv";
+    }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
+  };
+
+  dontConfigure = true;
+  dontBuild = true;
+  dontStrip = true;
+  dontPatchELF = true;
+  preferLocalBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mv KodeLife $out/bin
+  '';
+
+  preFixup = let
+    libPath = stdenv.lib.makeLibraryPath [
+      stdenv.cc.cc.lib
+      alsaLib
+      glib
+      gst_all_1.gstreamer
+      gst_all_1.gst-plugins-base
+      libGLU libGL
+      xorg.libX11
+    ];
+  in stdenv.lib.optionalString (!stdenv.isDarwin) ''
+    patchelf \
+      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${libPath}" \
+      $out/bin/KodeLife
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://hexler.net/products/kodelife";
+    description = "Real-time GPU shader editor";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ prusnak ];
+    platforms = [ "aarch64-linux" "armv7l-linux" "x86_64-darwin" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/krita/default.nix b/nixpkgs/pkgs/applications/graphics/krita/default.nix
new file mode 100644
index 000000000000..f98edd1e8ae5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/krita/default.nix
@@ -0,0 +1,56 @@
+{ mkDerivation, lib, stdenv, makeWrapper, fetchurl, cmake, extra-cmake-modules
+, karchive, kconfig, kwidgetsaddons, kcompletion, kcoreaddons
+, kguiaddons, ki18n, kitemmodels, kitemviews, kwindowsystem
+, kio, kcrash
+, boost, libraw, fftw, eigen, exiv2, libheif, lcms2, gsl, openexr, giflib
+, openjpeg, opencolorio, vc, poppler, curl, ilmbase
+, qtmultimedia, qtx11extras, quazip
+, python3Packages
+}:
+
+mkDerivation rec {
+  pname = "krita";
+  version = "4.2.9";
+
+  src = fetchurl {
+    url = "https://download.kde.org/stable/${pname}/${version}/${pname}-${version}.tar.xz";
+    sha256 = "0rvm9mpaq66lxyq4f09x9w6xxhgys0phza223hm5zv6kgn413xsf";
+  };
+
+  # *somtimes* fails with can't find ui_manager.h, also see https://github.com/NixOS/nixpkgs/issues/35359
+  enableParallelBuilding = false;
+
+  nativeBuildInputs = [ cmake extra-cmake-modules python3Packages.sip makeWrapper ];
+
+  buildInputs = [
+    karchive kconfig kwidgetsaddons kcompletion kcoreaddons kguiaddons
+    ki18n kitemmodels kitemviews kwindowsystem kio kcrash
+    boost libraw fftw eigen exiv2 lcms2 gsl openexr libheif giflib
+    openjpeg opencolorio poppler curl ilmbase
+    qtmultimedia qtx11extras quazip
+    python3Packages.pyqt5
+  ] ++ lib.optional (stdenv.hostPlatform.isi686 || stdenv.hostPlatform.isx86_64) vc;
+
+  NIX_CFLAGS_COMPILE = [ "-I${ilmbase.dev}/include/OpenEXR" ]
+    ++ lib.optional stdenv.cc.isGNU "-Wno-deprecated-copy";
+
+  cmakeFlags = [
+    "-DPYQT5_SIP_DIR=${python3Packages.pyqt5}/share/sip/PyQt5"
+    "-DPYQT_SIP_DIR_OVERRIDE=${python3Packages.pyqt5}/share/sip/PyQt5"
+    "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
+  ];
+
+  postInstall = ''
+    for i in $out/bin/*; do
+      wrapProgram $i --prefix PYTHONPATH : "$PYTHONPATH"
+    done
+  '';
+
+  meta = with lib; {
+    description = "A free and open source painting application";
+    homepage = "https://krita.org/";
+    maintainers = with maintainers; [ abbradar ];
+    platforms = platforms.linux;
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/krop/default.nix b/nixpkgs/pkgs/applications/graphics/krop/default.nix
new file mode 100644
index 000000000000..ee4906769770
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/krop/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchFromGitHub, python3Packages, libsForQt5, ghostscript, qt5}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "krop";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "arminstraub";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1ygzc7vlwszqmsd3v1dsqp1dpsn6inx7g8gck63alvf88dbn8m3s";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    pyqt5
+    pypdf2
+    poppler-qt5
+    ghostscript
+  ];
+  buildInputs = [
+    libsForQt5.poppler
+  ];
+
+  nativeBuildInputs = [ qt5.wrapQtAppsHook ];
+  makeWrapperArgs = [
+   "\${qtWrapperArgs[@]}"
+  ];
+
+  postInstall = ''
+    install -m666 -Dt $out/share/applications krop.desktop
+  '';
+
+  # Disable checks because of interference with older Qt versions // xcb
+  doCheck = false;
+
+  meta = {
+    homepage = "http://arminstraub.com/software/krop";
+    description = "Graphical tool to crop the pages of PDF files";
+    longDescription = ''
+    Krop is a tool that allows you to optimise your PDF files, and remove
+    sections of the page you do not want.  A unique feature of krop, at least to my
+    knowledge, is its ability to automatically split pages into subpages to fit the
+    limited screensize of devices such as eReaders. This is particularly useful, if
+    your eReader does not support convenient scrolling. Krop also has a command line
+    interface.
+    '';
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = with stdenv.lib.maintainers; [ leenaars ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/ktikz/default.nix b/nixpkgs/pkgs/applications/graphics/ktikz/default.nix
new file mode 100644
index 000000000000..4ddc2074f2f4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/ktikz/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchFromGitHub, fetchpatch
+, pkgconfig, wrapQtAppsHook
+, poppler, qt5, gnuplot
+}:
+
+# This package only builds ktikz without KDE integration because KDE4 is
+# deprecated and upstream does not (yet ?) support KDE5.
+# See historical versions of this file for building ktikz with KDE4.
+
+stdenv.mkDerivation rec {
+  version = "0.12";
+  pname = "qtikz";
+
+  meta = with stdenv.lib; {
+    description = "Editor for the TikZ language";
+    homepage = "https://github.com/fhackenberger/ktikz";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.layus ];
+    longDescription = ''
+      You will also need a working *tex installation in your PATH, containing at least `preview` and `pgf`.
+    '';
+  };
+
+  src = fetchFromGitHub {
+    owner = "fhackenberger";
+    repo = "ktikz";
+    rev = version;
+    sha256 = "1s83x8r2yi64wc6ah2iz09dj3qahy0fkxx6cfgpkavjw9x0j0582";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/fhackenberger/ktikz/commit/972685a406517bb85eb561f2c8e26f029eacd7db.patch";
+      sha256 = "13z40rcd4m4n088v7z2ns17lnpn0z3rzp31lsamic3qdcwjwa5k8";
+    })
+  ];
+
+  nativeBuildInputs = [ pkgconfig qt5.qttools qt5.qmake wrapQtAppsHook ];
+  QT_PLUGIN_PATH = "${qt5.qtbase}/${qt5.qtbase.qtPluginPrefix}";
+
+  buildInputs = [ qt5.qtbase poppler ];
+  enableParallelBuilding = true;
+
+  qmakeFlags = [
+    "DESKTOP_INSTALL_DIR=${placeholder "out"}/share/applications"
+    "MIME_INSTALL_DIR=${placeholder "out"}/share/mime/packages"
+    # qcollectiongenerator does no more exist in `qt5.qttools`.
+    # It was merged with qhelpgenerator at some point.
+    "QCOLLECTIONGENERATORCOMMAND=qhelpgenerator"
+  ];
+
+  qtWrapperArgs = [ ''--prefix PATH : "${gnuplot}/bin"'' ];
+}
diff --git a/nixpkgs/pkgs/applications/graphics/leocad/default.nix b/nixpkgs/pkgs/applications/graphics/leocad/default.nix
new file mode 100644
index 000000000000..5e950eeac04b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/leocad/default.nix
@@ -0,0 +1,31 @@
+/*
+To use aditional parts libraries
+set the variable LEOCAD_LIB=/path/to/libs/ or use option -l /path/to/libs/
+*/
+
+{ stdenv, fetchFromGitHub, qt4, qmake4Hook, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "leocad";
+  version = "19.07.1";
+
+  src = fetchFromGitHub {
+    owner = "leozide";
+    repo = "leocad";
+    rev = "v${version}";
+    sha256 = "02kv1m18g6s4dady9jv4sjivfkrp192bmdw2a3d9lzlp60zks0p2";
+  };
+
+  nativeBuildInputs = [ qmake4Hook ];
+  buildInputs = [ qt4 zlib ];
+  postPatch = ''
+    export qmakeFlags="$qmakeFlags INSTALL_PREFIX=$out"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "CAD program for creating virtual LEGO models";
+    homepage = "https://www.leocad.org/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/luminance-hdr/default.nix b/nixpkgs/pkgs/applications/graphics/luminance-hdr/default.nix
new file mode 100644
index 000000000000..811a907746d5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/luminance-hdr/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, mkDerivation, cmake, fetchFromGitHub, pkgconfig
+, boost, exiv2, fftwFloat, gsl
+, ilmbase, lcms2, libraw, libtiff, openexr
+, qtbase, qtdeclarative, qttools, qtwebengine, eigen
+}:
+
+mkDerivation rec {
+  pname = "luminance-hdr";
+  version = "2.6.0";
+
+  src = fetchFromGitHub {
+    owner = "LuminanceHDR";
+    repo = "LuminanceHDR";
+    rev = "v.${version}";
+    sha256 = "1izmgjjp8mgyxv57sjjr05z7g7059ykb5wchlcn4wrnnb6aslnvn";
+  };
+
+  NIX_CFLAGS_COMPILE = "-I${ilmbase.dev}/include/OpenEXR";
+
+  buildInputs = [
+    qtbase qtdeclarative qttools qtwebengine eigen
+    boost exiv2 fftwFloat gsl ilmbase lcms2 libraw libtiff openexr
+  ];
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://qtpfsgui.sourceforge.net/";
+    description = "A complete open source solution for HDR photography";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.hrdinka ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/mandelbulber/default.nix b/nixpkgs/pkgs/applications/graphics/mandelbulber/default.nix
new file mode 100644
index 000000000000..53d1c5c3f732
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/mandelbulber/default.nix
@@ -0,0 +1,64 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, libpng
+, gsl
+, libsndfile
+, lzo
+, qmake
+, qttools
+, qtbase
+, qtmultimedia
+, withOpenCL ? true
+, opencl-clhpp ? null
+, ocl-icd ? null
+}:
+
+assert withOpenCL -> opencl-clhpp != null;
+assert withOpenCL -> ocl-icd != null;
+
+mkDerivation rec {
+  pname = "mandelbulber";
+  version = "2.21";
+
+  src = fetchFromGitHub {
+    owner = "buddhi1980";
+    repo = "mandelbulber2";
+    rev = version;
+    sha256 = "1bmk71vbxc1n8cnizlmzfqlvgxjb95cydbzxlvq1s5givxr2jwli";
+  };
+
+  nativeBuildInputs = [
+    qmake
+    qttools
+  ];
+  buildInputs = [
+    qtbase
+    qtmultimedia
+    libpng
+    gsl
+    libsndfile
+    lzo
+  ] ++ lib.optionals withOpenCL [
+    opencl-clhpp
+    ocl-icd
+  ];
+
+  sourceRoot = "${src.name}/mandelbulber2";
+
+  qmakeFlags = [
+    "SHARED_PATH=${placeholder ''out''}"
+    (if withOpenCL
+      then "qmake/mandelbulber-opencl.pro"
+      else "qmake/mandelbulber.pro")
+  ];
+
+  meta = with lib; {
+    description = "A 3D fractal rendering engine";
+    longDescription = "Mandelbulber creatively generates three-dimensional fractals. Explore trigonometric, hyper-complex, Mandelbox, IFS, and many other 3D fractals.";
+    homepage = "https://mandelbulber.com";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ kovirobi ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/meh/default.nix b/nixpkgs/pkgs/applications/graphics/meh/default.nix
new file mode 100644
index 000000000000..0b2e5bc37774
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/meh/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, libX11, libXext, libjpeg, libpng, giflib }:
+
+stdenv.mkDerivation {
+  name = "meh-unstable-2015-04-11";
+
+  src = fetchFromGitHub {
+    owner = "jhawthorn";
+    repo = "meh";
+    rev = "4ab1c75f97cb70543db388b3ed99bcfb7e94c758";
+    sha256 = "1j1n3m9hjhz4faryai97jq7cr6a322cqrd878gpkm9nrikap3bkk";
+  };
+
+  installPhase = ''
+    make PREFIX=$out install
+  '';
+
+  outputs = [ "out" "man" ];
+
+  buildInputs = [ libXext libX11 libjpeg libpng giflib ];
+
+  meta = {
+    description = "A minimal image viewer using raw XLib";
+    homepage = "https://www.johnhawthorn.com/meh/";
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/meme/default.nix b/nixpkgs/pkgs/applications/graphics/meme/default.nix
new file mode 100644
index 000000000000..5f8a0bb6eed3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/meme/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "meme-unstable";
+  version = "2017-09-10";
+
+  owner = "nomad-software";
+  repo = "meme";
+  goPackagePath = "github.com/${owner}/${repo}";
+
+  src = fetchFromGitHub {
+    inherit owner repo;
+    rev = "a6521f2eecb0aac22937b0013747ed9cb40b81ea";
+    sha256 = "1gbsv1d58ck6mj89q31s5b0ppw51ab76yqgz39jgwqnkidvzdfly";
+  };
+
+  meta = with stdenv.lib; {
+    description = "A command line utility for creating image macro style memes";
+    homepage = "https://github.com/nomad-software/meme";
+    license = licenses.mit;
+    maintainers = [ maintainers.fgaz ];
+    platforms = with platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/meshlab/default.nix b/nixpkgs/pkgs/applications/graphics/meshlab/default.nix
new file mode 100644
index 000000000000..6ac937dcb931
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/meshlab/default.nix
@@ -0,0 +1,134 @@
+{ mkDerivation, lib, fetchFromGitHub
+, fetchpatch
+, libGLU
+, qtbase
+, qtscript
+, qtxmlpatterns
+, lib3ds
+, bzip2
+, muparser
+, levmar
+}:
+
+let
+  meshlabRev = "25f3d17b1d1d47ddc51179cb955f3027b7638745";
+  vcglibRev = "910da4c3e310f2e6557bd7a39c4f1529e61573e5";
+  # ^ this should be the latest commit in the vcglib devel branch at the time of the meshlab revision
+  # We keep it separate here instead of using the `vcg` nix package because
+  # as of writing, meshlab upstream does not seem to follow a proper
+  # release process, and the other dependencies of `vcg` may no longer
+  # work when we upgrade it for the purpose of meshlab.
+
+  # Unfixed upstream compile error; see
+  #     https://github.com/cnr-isti-vclab/meshlab/issues/188#issuecomment-364785362
+  # that has with fixed line endings.
+  import_bundle_out_patch = fetchpatch {
+    name = "import_bundle_out.patch";
+    url = "https://aur.archlinux.org/cgit/aur.git/plain/import_bundle_out.patch?h=meshlab-git&id=f7250ea818470f07dc9b86726407091d39c0be6f";
+    sha256 = "1g6nli15i3fjd6jsgkxvb33kzbcv67xjkc3jv9r51lrwlm1ifzxi";
+  };
+
+  # Reduces amount of vendored libraries, fixes `/linux` vs `linux-g++`
+  # directory name linker errors.
+  external_patch = fetchpatch {
+    name = "external.patch";
+    url = "https://aur.archlinux.org/cgit/aur.git/plain/external.patch?h=meshlab-git&id=f7250ea818470f07dc9b86726407091d39c0be6f";
+    sha256 = "1rxwkxhmxis1420rc1w7dg89gkmym68lpszsq6snl6dzpl3ingsb";
+  };
+  _3ds_patch = fetchpatch {
+    name = "3ds.patch";
+    url = "https://aur.archlinux.org/cgit/aur.git/plain/3ds.patch?h=meshlab-git&id=f7250ea818470f07dc9b86726407091d39c0be6f";
+    sha256 = "1w435b7p1ggi2bzib4yyszmk54drjgpbn8n9mnsk1slsxnp2vmg8";
+  };
+  muparser_patch = fetchpatch {
+    name = "muparser.patch";
+    url = "https://aur.archlinux.org/cgit/aur.git/plain/muparser.patch?h=meshlab-git&id=f7250ea818470f07dc9b86726407091d39c0be6f";
+    sha256 = "1sf7xqwc2j8xxdx2yklwifii9qqgknvx6ahk2hq76mg78ry1nzhq";
+  };
+
+in mkDerivation {
+  name = "meshlab-20190129-beta";
+
+  srcs =
+    [
+      (fetchFromGitHub {
+        owner = "cnr-isti-vclab";
+        repo = "meshlab";
+        rev = meshlabRev;
+        sha256 = "16d2i91hrxvrr5p0k33g3fzis9zp4gsy3n5y2nhafvsgdmaidiij";
+        name = "meshlab-${meshlabRev}";
+      })
+      (fetchFromGitHub {
+        owner = "cnr-isti-vclab";
+        repo = "vcglib";
+        rev = vcglibRev;
+        sha256 = "0xpnjpwpj57hgai184rzyk9lbq6d9vbjzr477dvl5nplpwa420m1";
+        name = "vcglib-${vcglibRev}";
+      })
+    ];
+
+  sourceRoot = "meshlab-${meshlabRev}";
+
+  # Meshlab is not format-security clean; without disabling hardening, we get:
+  #     ../../external/qhull-2003.1/src/io.c:2169:3: error: format not a string literal and no format arguments [-Werror=format-security]
+  #        fprintf(fp, endfmt);
+  #        ^~~~~~~
+  hardeningDisable = [ "format" ];
+
+  enableParallelBuilding = true;
+
+  prePatch =
+    ''
+      # MeshLab has ../vcglib hardcoded everywhere, so move the source dir
+      mv ../vcglib-${vcglibRev} ../vcglib
+
+      # Make all source files writable so that patches can be applied.
+      chmod -R u+w ..
+
+      patch -Np1 --directory=../vcglib -i ${import_bundle_out_patch}
+
+      patch -Np1 -i ${external_patch}
+      # Individual libraries
+      patch -Np1 -i ${_3ds_patch}
+      patch -Np1 -i ${muparser_patch}
+    ''
+    ;
+
+  buildPhase = ''
+    cd src
+    export NIX_LDFLAGS="-rpath $out/opt/meshlab $NIX_LDFLAGS"
+
+    pushd external
+    qmake -recursive $QMAKE_FLAGS external.pro
+    buildPhase
+    popd
+    qmake -recursive $QMAKE_FLAGS meshlab_full.pro
+    buildPhase
+  '';
+
+  installPhase = ''
+    mkdir -p $out/opt/meshlab $out/bin
+    cp -Rv distrib/* $out/opt/meshlab
+    ln -s $out/opt/meshlab/meshlab $out/bin/meshlab
+    ln -s $out/opt/meshlab/meshlabserver $out/bin/meshlabserver
+  '';
+
+  buildInputs = [
+    libGLU
+    qtbase
+    qtscript
+    qtxmlpatterns
+    lib3ds
+    bzip2
+    muparser
+    levmar
+  ];
+
+  meta = {
+    description = "A system for processing and editing 3D triangular meshes.";
+    homepage = "http://www.meshlab.net/";
+    license = lib.licenses.gpl3;
+    maintainers = with lib.maintainers; [viric];
+    platforms = with lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/minidjvu/default.nix b/nixpkgs/pkgs/applications/graphics/minidjvu/default.nix
new file mode 100644
index 000000000000..2af79659cedb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/minidjvu/default.nix
@@ -0,0 +1,27 @@
+{stdenv, fetchurl, libtiff, gettext }:
+
+stdenv.mkDerivation {
+  name = "minidjvu-0.8";
+  src = fetchurl {
+    url = "mirror://sourceforge/minidjvu/minidjvu-0.8.tar.gz";
+    sha256 = "0jmpvy4g68k6xgplj9zsl6brg6vi81mx3nx2x9hfbr1f4zh95j79";
+  };
+
+  patchPhase = ''
+    sed -i s,/usr/bin/gzip,gzip, Makefile.in
+  '';
+
+  buildInputs = [ libtiff gettext];
+
+  preInstall = ''
+    mkdir -p $out/lib
+  '';
+
+  meta = {
+    homepage = "http://djvu.sourceforge.net/djview4.html";
+    description = "Black-and-white djvu page encoder and decoder that use interpage information";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [ stdenv.lib.maintainers.viric ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/mozjpeg/default.nix b/nixpkgs/pkgs/applications/graphics/mozjpeg/default.nix
new file mode 100644
index 000000000000..e17664a018ab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/mozjpeg/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, libpng, nasm }:
+
+stdenv.mkDerivation rec {
+  version = "3.3.1";
+  pname = "mozjpeg";
+
+  src = fetchFromGitHub {
+    owner = "mozilla";
+    repo = "mozjpeg";
+    rev = "v${version}";
+    sha256 = "1na68860asn8b82ny5ilwbhh4nyl9gvx2yxmm4wr2v1v95v51fky";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ libpng nasm ];
+
+  meta = {
+    description = "Mozilla JPEG Encoder Project";
+    longDescription = ''
+      This project's goal is to reduce the size of JPEG files without reducing quality or compatibility with the
+      vast majority of the world's deployed decoders.
+
+      The idea is to reduce transfer times for JPEGs on the Web, thus reducing page load times.
+    '';
+    homepage = "https://github.com/mozilla/mozjpeg";
+    license = stdenv.lib.licenses.bsd3;
+    maintainers = [ stdenv.lib.maintainers.aristid ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/mtpaint/default.nix b/nixpkgs/pkgs/applications/graphics/mtpaint/default.nix
new file mode 100644
index 000000000000..91278c9881fe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/mtpaint/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub
+, pkgconfig
+, freetype, giflib, gtk2, lcms2, libjpeg, libpng, libtiff, openjpeg, gifsicle
+}:
+
+stdenv.mkDerivation rec {
+  p_name  = "mtPaint";
+  ver_maj = "3.49";
+  ver_min = "12";
+  name = "${p_name}-${ver_maj}.${ver_min}";
+
+  src = fetchFromGitHub {
+    owner = "wjaguar";
+    repo = p_name;
+    rev = "6aed1b0441f99055fc7d475942f8bd5cb23c41f8";
+    sha256 = "0bvf623g0n2ifijcxv1nw0z3wbs2vhhdky4n04ywsbjlykm44nd1";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    freetype giflib gtk2 lcms2 libjpeg libpng libtiff openjpeg gifsicle
+  ];
+
+  meta = {
+    description = "A simple GTK painting program";
+    longDescription = ''
+      mtPaint is a simple GTK painting program designed for
+      creating icons and pixel based artwork.  It can edit indexed palette
+      or 24 bit RGB images and offers basic painting and palette manipulation
+      tools. It also has several other more powerful features such as channels,
+      layers and animation.
+      Due to its simplicity and lack of dependencies it runs well on
+      GNU/Linux, Windows and older PC hardware.
+    '';
+    homepage = "http://mtpaint.sourceforge.net/";
+    license = stdenv.lib.licenses.gpl3;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.vklquevs ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/graphics/mypaint/default.nix b/nixpkgs/pkgs/applications/graphics/mypaint/default.nix
new file mode 100644
index 000000000000..5ebbee0e4d6f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/mypaint/default.nix
@@ -0,0 +1,94 @@
+{ stdenv
+, fetchFromGitHub
+, gtk3
+, intltool
+, json_c
+, lcms2
+, libpng
+, librsvg
+, gobject-introspection
+, libmypaint
+, mypaint-brushes
+, gdk-pixbuf
+, pkgconfig
+, python3
+, swig
+, wrapGAppsHook
+}:
+
+let
+  inherit (python3.pkgs) pycairo pygobject3 numpy buildPythonApplication;
+in buildPythonApplication rec {
+  pname = "mypaint";
+  version = "2.0.0";
+
+  src = fetchFromGitHub {
+    owner = "mypaint";
+    repo = "mypaint";
+    rev = "v${version}";
+    sha256 = "180kyilhf81ndhwl1hlvy82gh6hxpcvka2d1nkghbpgy431rls6r";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    intltool
+    pkgconfig
+    swig
+    wrapGAppsHook
+    gobject-introspection # for setup hook
+  ];
+  buildInputs = [
+    gtk3
+    gdk-pixbuf
+    libmypaint
+    mypaint-brushes
+    json_c
+    lcms2
+    libpng
+    librsvg
+    pycairo
+    pygobject3
+  ];
+
+  propagatedBuildInputs = [
+    numpy
+    pycairo
+    pygobject3
+  ];
+
+  checkInputs = [
+    gtk3
+  ];
+
+  buildPhase = ''
+    runHook preBuild
+
+    ${python3.interpreter} setup.py build
+
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    ${python3.interpreter} setup.py managed_install --prefix=$out
+
+    runHook postInstall
+  '';
+
+  checkPhase = ''
+    runHook preCheck
+
+    HOME=$TEMPDIR ${python3.interpreter} setup.py test
+
+    runHook postCheck
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A graphics application for digital painters";
+    homepage = "http://mypaint.org/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ goibhniu jtojnar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/nomacs/default.nix b/nixpkgs/pkgs/applications/graphics/nomacs/default.nix
new file mode 100644
index 000000000000..67e95aec7585
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/nomacs/default.nix
@@ -0,0 +1,63 @@
+{ stdenv
+, mkDerivation
+, fetchFromGitHub
+, fetchpatch
+, cmake
+, pkgconfig
+
+, qtbase
+, qttools
+, qtsvg
+
+, exiv2
+, opencv4
+, libraw
+, libtiff
+, quazip
+}:
+
+mkDerivation rec {
+  pname = "nomacs";
+  version = "3.14.2";
+
+  src = fetchFromGitHub {
+    owner = "nomacs";
+    repo = "nomacs";
+    rev = version;
+    sha256 = "1vms13kyg7cpqi2hxvrrhlnl7cq92ijr7dm1kl5ryglpcagqv811";
+  };
+
+  enableParallelBuilding = true;
+
+  setSourceRoot = ''
+    sourceRoot=$(echo */ImageLounge)
+  '';
+
+  nativeBuildInputs = [cmake
+                       pkgconfig];
+
+  buildInputs = [qtbase
+                 qttools
+                 qtsvg
+                 exiv2
+                 opencv4
+                 libraw
+                 libtiff
+                 quazip];
+
+  cmakeFlags = ["-DENABLE_OPENCV=ON"
+                "-DENABLE_RAW=ON"
+                "-DENABLE_TIFF=ON"
+                "-DENABLE_QUAZIP=ON"
+                "-DENABLE_TRANSLATIONS=ON"
+                "-DUSE_SYSTEM_QUAZIP=ON"];
+
+  meta = with stdenv.lib; {
+    homepage = "https://nomacs.org";
+    description = "Qt-based image viewer";
+    maintainers = with stdenv.lib.maintainers; [ mindavi ];
+    license = licenses.gpl3Plus;
+    repositories.git = "https://github.com/nomacs/nomacs.git";
+    inherit (qtbase.meta) platforms;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/ocrad/default.nix b/nixpkgs/pkgs/applications/graphics/ocrad/default.nix
new file mode 100644
index 000000000000..80f592681110
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/ocrad/default.nix
@@ -0,0 +1,36 @@
+{ fetchurl, stdenv, lzip, texinfo }:
+
+stdenv.mkDerivation rec {
+  pname = "ocrad";
+  version = "0.27";
+
+  src = fetchurl {
+    url = "mirror://gnu/ocrad/${pname}-${version}.tar.lz";
+    sha256 = "0divffvcaim89g4pvqs8kslbcxi475bcl3b4ynphf284k9zfdgx9";
+  };
+
+  nativeBuildInputs = [ lzip /* unpack */ ];
+  buildInputs = [ texinfo ];
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    description = "Optical character recognition (OCR) program & library";
+    longDescription =
+      '' GNU Ocrad is an OCR (Optical Character Recognition) program based on
+         a feature extraction method.  It reads images in pbm (bitmap), pgm
+         (greyscale) or ppm (color) formats and produces text in byte (8-bit)
+         or UTF-8 formats.
+
+         Also includes a layout analyser able to separate the columns or
+         blocks of text normally found on printed pages.
+
+         Ocrad can be used as a stand-alone console application, or as a
+         backend to other programs.
+      '';
+
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ pSub ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/openimageio/2.x.nix b/nixpkgs/pkgs/applications/graphics/openimageio/2.x.nix
new file mode 100644
index 000000000000..89d49a151457
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/openimageio/2.x.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, fetchFromGitHub
+, fetchpatch
+, boost
+, cmake
+, ilmbase
+, libjpeg
+, libpng
+, libtiff
+, opencolorio
+, openexr
+, robin-map
+, unzip
+}:
+
+stdenv.mkDerivation rec {
+  pname = "openimageio";
+  version = "2.1.9.0";
+
+  src = fetchFromGitHub {
+    owner = "OpenImageIO";
+    repo = "oiio";
+    rev = "Release-${version}";
+    sha256 = "1bbxx3bcc5jlb90ffxbk29gb8227097rdr8vg97vj9axw2mjd5si";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/OpenImageIO/oiio/pull/2441/commits/e9bdd69596103edf41b659ad8ab0ca4ce002f6f5.patch";
+      sha256 = "0x1wmjf1jrm19d1izhs1cs3y1if9al1zx48lahkfswyjag3r5dn0";
+    })
+  ];
+
+  outputs = [ "bin" "out" "dev" "doc" ];
+
+  nativeBuildInputs = [
+    cmake
+    unzip
+  ];
+
+  buildInputs = [
+    boost
+    ilmbase
+    libjpeg
+    libpng
+    libtiff
+    opencolorio
+    openexr
+    robin-map
+  ];
+
+  cmakeFlags = [
+    "-DUSE_PYTHON=OFF"
+    "-DUSE_QT=OFF"
+    # GNUInstallDirs
+    "-DCMAKE_INSTALL_LIBDIR=lib" # needs relative path for pkgconfig
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.openimageio.org";
+    description = "A library and tools for reading and writing images";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ goibhniu jtojnar ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/openimageio/default.nix b/nixpkgs/pkgs/applications/graphics/openimageio/default.nix
new file mode 100644
index 000000000000..1f2861e7109c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/openimageio/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, boost, cmake, ilmbase, libjpeg, libpng, libtiff
+, opencolorio, openexr, unzip
+}:
+
+stdenv.mkDerivation rec {
+  pname = "openimageio";
+  version = "1.8.17";
+
+  src = fetchFromGitHub {
+    owner = "OpenImageIO";
+    repo = "oiio";
+    rev = "Release-${version}";
+    sha256 = "0zq34szprgkrrayg5sl3whrsx2l6lr8nw4hdrnwv2qhn70jbi2w2";
+  };
+
+  outputs = [ "bin" "out" "dev" "doc" ];
+
+  nativeBuildInputs = [ cmake unzip ];
+  buildInputs = [
+    boost ilmbase libjpeg libpng
+    libtiff opencolorio openexr
+  ];
+
+  cmakeFlags = [
+    "-DUSE_PYTHON=OFF"
+  ];
+
+  makeFlags = [
+    "ILMBASE_HOME=${ilmbase.dev}"
+    "OPENEXR_HOME=${openexr.dev}"
+    "USE_PYTHON=0"
+    "INSTALLDIR=${placeholder "out"}"
+    "dist_dir="
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.openimageio.org";
+    description = "A library and tools for reading and writing images";
+    license = licenses.bsd3;
+    maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/openscad/default.nix b/nixpkgs/pkgs/applications/graphics/openscad/default.nix
new file mode 100644
index 000000000000..8ff4d6f27e03
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/openscad/default.nix
@@ -0,0 +1,87 @@
+{ stdenv
+, fetchFromGitHub
+, qtbase
+, qtmultimedia
+, qscintilla
+, bison
+, flex
+, eigen
+, boost
+, libGLU, libGL
+, glew
+, opencsg
+, cgal
+, mpfr
+, gmp
+, glib
+, pkgconfig
+, harfbuzz
+, gettext
+, freetype
+, fontconfig
+, double-conversion
+, lib3mf
+, libzip
+, mkDerivation
+, qtmacextras
+, qmake
+}:
+
+mkDerivation rec {
+  pname = "openscad";
+  version = "2019.05";
+
+  src = fetchFromGitHub {
+    owner = "openscad";
+    repo = "openscad";
+    rev = "${pname}-${version}";
+    sha256 = "1qz384jqgk75zxk7sqd22ma9pyd94kh4h6a207ldx7p9rny6vc5l";
+  };
+
+  nativeBuildInputs = [ bison flex pkgconfig gettext qmake ];
+
+  buildInputs = [
+    eigen boost glew opencsg cgal mpfr gmp glib
+    harfbuzz lib3mf libzip double-conversion freetype fontconfig
+    qtbase qtmultimedia qscintilla
+  ] ++ stdenv.lib.optionals stdenv.isLinux [ libGLU libGL ]
+    ++ stdenv.lib.optional stdenv.isDarwin qtmacextras
+  ;
+
+  qmakeFlags = [ "VERSION=${version}" ];
+
+  # src/lexer.l:36:10: fatal error: parser.hxx: No such file or directory
+  enableParallelBuilding = false; # true by default due to qmake
+
+  postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+    mkdir $out/Applications
+    mv $out/bin/*.app $out/Applications
+    rmdir $out/bin || true
+
+    wrapQtApp "$out"/Applications/OpenSCAD.app/Contents/MacOS/OpenSCAD
+
+    mv --target-directory=$out/Applications/OpenSCAD.app/Contents/Resources \
+      $out/share/openscad/{examples,color-schemes,locale,libraries,fonts}
+
+    rmdir $out/share/openscad
+  '';
+
+  meta = {
+    description = "3D parametric model compiler";
+    longDescription = ''
+      OpenSCAD is a software for creating solid 3D CAD objects. It is free
+      software and available for Linux/UNIX, MS Windows and macOS.
+
+      Unlike most free software for creating 3D models (such as the famous
+      application Blender) it does not focus on the artistic aspects of 3D
+      modelling but instead on the CAD aspects. Thus it might be the
+      application you are looking for when you are planning to create 3D models of
+      machine parts but pretty sure is not what you are looking for when you are more
+      interested in creating computer-animated movies.
+    '';
+    homepage = "http://openscad.org/";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = with stdenv.lib.maintainers; [ bjornfor raskin gebner ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/panotools/default.nix b/nixpkgs/pkgs/applications/graphics/panotools/default.nix
new file mode 100644
index 000000000000..c03bdd8331be
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/panotools/default.nix
@@ -0,0 +1,23 @@
+{ fetchurl, stdenv, libjpeg, libpng, libtiff, perl }:
+
+stdenv.mkDerivation rec {
+  name = "libpano13-2.9.19";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/panotools/${name}.tar.gz";
+    sha256 = "1a4m3plmfcrrplqs9zfzhc5apibn10m5sajpizm1sd3q74w5fwq3";
+  };
+
+  buildInputs = [ perl libjpeg libpng libtiff ];
+
+  # one of the tests succeeds on my machine but fails on Hydra (no idea why)
+  #doCheck = true;
+
+  meta = {
+    homepage = "http://panotools.sourceforge.net/";
+    description = "Free software suite for authoring and displaying virtual reality panoramas";
+    license = stdenv.lib.licenses.gpl2Plus;
+
+    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux;  # arbitrary choice
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/paraview/default.nix b/nixpkgs/pkgs/applications/graphics/paraview/default.nix
new file mode 100644
index 000000000000..15d70d143081
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/paraview/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, fetchFromGitHub, cmake, makeWrapper, qtbase , qttools, python
+, libGLU, libGL , libXt, qtx11extras, qtxmlpatterns , mkDerivation }:
+
+mkDerivation rec {
+  pname = "paraview";
+  version = "5.6.3";
+
+  # fetching from GitHub instead of taking an "official" source
+  # tarball because of missing submodules there
+  src = fetchFromGitHub {
+    owner = "Kitware";
+    repo = "ParaView";
+    rev = "v${version}";
+    sha256 = "0zcij59pg47c45gfddnpbin13w16smzhcbivzm1k4pg4366wxq1q";
+    fetchSubmodules = true;
+  };
+
+  cmakeFlags = [
+    "-DPARAVIEW_ENABLE_PYTHON=ON"
+    "-DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON"
+    "-DPARAVIEW_ENABLE_EMBEDDED_DOCUMENTATION=OFF"
+    "-DOpenGL_GL_PREFERENCE=GLVND"
+  ];
+
+  # During build, binaries are called that rely on freshly built
+  # libraries.  These reside in build/lib, and are not found by
+  # default.
+  preBuild = ''
+    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/lib:$PWD/VTK/ThirdParty/vtkm/vtk-m/lib
+  '';
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [
+    cmake
+    makeWrapper
+  ];
+
+  buildInputs = [
+    python
+    python.pkgs.numpy
+    libGLU libGL
+    libXt
+    qtbase
+    qtx11extras
+    qttools
+    qtxmlpatterns
+  ];
+
+  # Paraview links into the Python library, resolving symbolic links on the way,
+  # so we need to put the correct sitePackages (with numpy) back on the path
+  preFixup = ''
+    wrapQtApp $out/bin/paraview \
+      --prefix PYTHONPATH "${python.pkgs.numpy}/${python.sitePackages}"
+    wrapQtApp $out/bin/pvbatch \
+      --prefix PYTHONPATH "${python.pkgs.numpy}/${python.sitePackages}"
+    wrapQtApp $out/bin/pvpython \
+      --prefix PYTHONPATH "${python.pkgs.numpy}/${python.sitePackages}"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.paraview.org/";
+    description = "3D Data analysis and visualization application";
+    license = licenses.free;
+    maintainers = with maintainers; [ guibert ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/pbrt/default.nix b/nixpkgs/pkgs/applications/graphics/pbrt/default.nix
new file mode 100644
index 000000000000..fa3034cb3b07
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/pbrt/default.nix
@@ -0,0 +1,31 @@
+{stdenv, fetchFromGitHub, flex, bison, cmake, git, zlib}:
+
+stdenv.mkDerivation {
+
+  version = "2018-08-15";
+  pname = "pbrt-v3";
+
+  src = fetchFromGitHub {
+    rev = "86b5821308088deea70b207bc8c22219d0103d65";
+    owner  = "mmp";
+    repo   = "pbrt-v3";
+    sha256 = "0f7ivsczba6zfk5f0bba1js6dcwf6w6jrkiby147qp1sx5k35cv8";
+    fetchSubmodules = true;
+  };
+
+  patches = [
+    # https://github.com/mmp/pbrt-v3/issues/196
+    ./openexr-cmake-3.12.patch
+  ];
+
+  buildInputs = [ git flex bison cmake zlib ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://pbrt.org";
+    description = "The renderer described in the third edition of the book 'Physically Based Rendering: From Theory To Implementation'";
+    platforms = platforms.linux ;
+    license = licenses.bsd2;
+    maintainers = [ maintainers.juliendehos ];
+    priority = 10;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/pbrt/openexr-cmake-3.12.patch b/nixpkgs/pkgs/applications/graphics/pbrt/openexr-cmake-3.12.patch
new file mode 100644
index 000000000000..2993922a1ecf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/pbrt/openexr-cmake-3.12.patch
@@ -0,0 +1,26 @@
+diff -ur a/src/ext/openexr/CMakeLists.txt b/src/ext/openexr/CMakeLists.txt
+--- a/src/ext/openexr/CMakeLists.txt	1970-01-01 09:00:01.000000000 +0900
++++ b/src/ext/openexr/CMakeLists.txt	2018-08-31 21:44:56.490714484 +0900
+@@ -26,22 +26,4 @@
+   ${CMAKE_CURRENT_BINARY_DIR}/IlmBase/config
+ )
+ 
+-add_custom_target(CopyIlmBaseLibs
+-  COMMAND ${CMAKE_COMMAND} -E copy_directory
+-  ${CMAKE_CURRENT_BINARY_DIR}/IlmBase/Half/$<CONFIGURATION>
+-  ${CMAKE_CURRENT_BINARY_DIR}/OpenEXR/IlmImf/$<CONFIGURATION>
+-  COMMAND ${CMAKE_COMMAND} -E copy_directory
+-  ${CMAKE_CURRENT_BINARY_DIR}/IlmBase/IlmThread/$<CONFIGURATION>
+-  ${CMAKE_CURRENT_BINARY_DIR}/OpenEXR/IlmImf/$<CONFIGURATION>
+-  COMMAND ${CMAKE_COMMAND} -E copy_directory
+-  ${CMAKE_CURRENT_BINARY_DIR}/IlmBase/Iex/$<CONFIGURATION>
+-  ${CMAKE_CURRENT_BINARY_DIR}/OpenEXR/IlmImf/$<CONFIGURATION>
+-  COMMAND ${CMAKE_COMMAND} -E copy_directory
+-  ${CMAKE_CURRENT_BINARY_DIR}/IlmBase/Imath/$<CONFIGURATION>
+-  ${CMAKE_CURRENT_BINARY_DIR}/OpenEXR/IlmImf/$<CONFIGURATION>
+-)
+-add_dependencies(CopyIlmBaseLibs Iex Imath IlmThread Half)
+-
+ add_subdirectory(OpenEXR OpenEXR)
+-add_dependencies(b44ExpLogTable CopyIlmBaseLibs)
+-add_dependencies(dwaLookups CopyIlmBaseLibs)
diff --git a/nixpkgs/pkgs/applications/graphics/pdfcpu/default.nix b/nixpkgs/pkgs/applications/graphics/pdfcpu/default.nix
new file mode 100644
index 000000000000..e667f7c0f1ab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/pdfcpu/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "pdfcpu";
+  version = "0.3.3";
+
+  src = fetchFromGitHub {
+    owner = "pdfcpu";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "09z4z2csp7ld47q36x2id5zadaihisbnk7bkdvci826hwm8km7sl";
+  };
+
+  vendorSha256 = "09alkpfyxapycv6zsaz7prgbr0a1jzd78n7w2mh01mg4hhb2j3k7";
+
+  subPackages = [ "cmd/pdfcpu" ];
+
+  meta = with stdenv.lib; {
+    description = "A PDF processor written in Go";
+    homepage = "https://pdfcpu.io";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ doronbehar ];
+    platforms = platforms.all;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/graphics/pencil/default.nix b/nixpkgs/pkgs/applications/graphics/pencil/default.nix
new file mode 100644
index 000000000000..edd923822ea3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/pencil/default.nix
@@ -0,0 +1,106 @@
+{ stdenv, fetchurl, lib, makeWrapper, wrapGAppsHook,
+  # build dependencies
+  alsaLib, atk, at-spi2-atk, at-spi2-core, cairo, cups, dbus, expat, fontconfig,
+  freetype, gdk-pixbuf, glib, glibc, gtk3, libuuid, nspr, nss, pango,
+  xorg, systemd
+}:
+let
+
+  deps = [
+    alsaLib
+    atk
+    at-spi2-atk
+    at-spi2-core
+    cairo
+    cups
+    dbus
+    expat
+    fontconfig
+    freetype
+    gdk-pixbuf
+    glib
+    glibc
+    gtk3
+    libuuid
+    nspr
+    nss
+    pango
+    xorg.libX11
+    xorg.libxcb
+    xorg.libXScrnSaver
+    xorg.libXcomposite
+    xorg.libXcursor
+    xorg.libXdamage
+    xorg.libXext
+    xorg.libXfixes
+    xorg.libXi
+    xorg.libXrandr
+    xorg.libXrender
+    xorg.libXtst
+    stdenv.cc.cc.lib
+    stdenv.cc.cc
+  ];
+
+in stdenv.mkDerivation rec {
+  version = "3.1.0";
+  pname = "pencil";
+
+  src = fetchurl {
+    url    = "http://pencil.evolus.vn/dl/V${version}.ga/pencil_${version}.ga_amd64.deb";
+    sha256 = "01ae54b1a1351b909eb2366c6ec00816e1deba370e58f35601cf7368f10aaba3";
+  };
+
+  sourceRoot = ".";
+
+  unpackCmd = ''
+    ar p "$src" data.tar.gz | tar xz
+  '';
+
+  dontBuild = true;
+
+  nativeBuildInputs = [ makeWrapper wrapGAppsHook ];
+
+  buildInputs = deps;
+
+  installPhase = ''
+    mkdir -p $out/bin $out/opt $out/share/applications
+    cp -R usr/share $out/
+    cp -R opt/pencil*/ $out/opt/pencil
+    cp $out/opt/pencil/pencil.desktop $out/share/applications/
+
+    # fix the path in the desktop file
+    substituteInPlace \
+      $out/share/applications/pencil.desktop \
+      --replace /opt/ $out/opt/
+
+    # symlink the binary to bin/
+    ln -s $out/opt/pencil/pencil $out/bin/pencil
+  '';
+
+
+  preFixup = let
+    packages = deps;
+    libPathNative = lib.makeLibraryPath packages;
+    libPath64 = lib.makeSearchPathOutput "lib" "lib64" packages;
+    libPath = "${libPathNative}:${libPath64}";
+  in ''
+    # patch executable
+    patchelf \
+      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${libPath}:$out/opt/pencil" \
+      $out/opt/pencil/pencil
+
+    # fix missing libudev
+    ln -s ${systemd.lib}/lib/libudev.so.1 $out/opt/pencil/libudev.so.1
+    wrapProgram $out/opt/pencil/pencil \
+      --prefix LD_LIBRARY_PATH : $out/opt/pencil
+  '';
+
+  meta = with stdenv.lib; {
+    description = "GUI prototyping/mockup tool";
+    homepage    = "https://pencil.evolus.vn/";
+    license     = licenses.gpl2; # Commercial license is also available
+    maintainers = with maintainers; [ bjornfor prikhi mrVanDalo ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/photivo/default.nix b/nixpkgs/pkgs/applications/graphics/photivo/default.nix
new file mode 100644
index 000000000000..09b5bd378397
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/photivo/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchhg, fetchpatch, cmake, qt4, fftw, graphicsmagick_q16,
+  lcms2, lensfun, pkgconfig, libjpeg, exiv2, liblqr1 }:
+
+stdenv.mkDerivation {
+  name = "photivo-2014-01-25";
+
+  src = fetchhg {
+    url = "http://code.google.com/p/photivo/";
+    rev = "d687864489da";
+    sha256 = "0f6y18k7db2ci6xn664zcwm1g1k04sdv7gg1yd5jk41bndjb7z8h";
+  };
+
+  patches = [
+    # Patch fixing build with lensfun >= 0.3, taken from
+    # https://www.linuxquestions.org/questions/slackware-14/photivo-4175530230/#post5296578
+    (fetchpatch {
+      url = "https://www.linuxquestions.org/questions/attachment.php?attachmentid=17287&d=1420577220";
+      name = "lensfun-0.3.patch";
+      sha256 = "0ys45x4r4bjjlx0zpd5d56rgjz7k8gxili4r4k8zx3zfka4a3zwv";
+    })
+    ./gcc6.patch
+  ];
+
+  postPatch = '' # kinda icky
+    sed -e '/("@INSTALL@")/d' \
+        -e s,@INSTALL@,$out/share/photivo, \
+        -i Sources/ptSettings.cpp
+    sed '1i#include <math.h>' -i Sources/filters/ptFilter_StdCurve.cpp
+  '';
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [ qt4 fftw graphicsmagick_q16 lcms2 lensfun libjpeg exiv2 liblqr1 ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+    broken = true; # exiv2 0.27.1 FTBFS
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/photivo/gcc6.patch b/nixpkgs/pkgs/applications/graphics/photivo/gcc6.patch
new file mode 100644
index 000000000000..e2eb795fc8e2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/photivo/gcc6.patch
@@ -0,0 +1,13 @@
+diff --git c/Sources/ptImage.cpp i/Sources/ptImage.cpp
+index 9c95093..623c157 100755
+--- c/Sources/ptImage.cpp
++++ i/Sources/ptImage.cpp
+@@ -5291,7 +5291,7 @@ ptImage* ptImage::Box(const uint16_t MaxRadius, float* Mask) {
+         NewRow = NewRow < 0? -NewRow : NewRow > Height1? Height1_2-NewRow : NewRow ;

+         NewRow *= m_Width;

+         for(j = -IntRadius; j <= IntRadius; j++) {

+-          if (Dist[abs(i)][abs(j)] < Radius) {

++          if (Dist[int16_t(abs(i))][int16_t(abs(j))] < Radius) {

+             NewCol = Col+j;

+             NewCol = NewCol < 0? -NewCol : NewCol > Width1? Width1_2-NewCol : NewCol ;

+ 

diff --git a/nixpkgs/pkgs/applications/graphics/photoflow/default.nix b/nixpkgs/pkgs/applications/graphics/photoflow/default.nix
new file mode 100644
index 000000000000..9fec8b99c1bd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/photoflow/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchFromGitHub, gettext, glib, libxml2, pkgconfig, swig, automake, gobject-introspection, cmake, ninja, libtiff, libjpeg, fftw, exiv2, lensfun, gtkmm2, libraw, lcms2, libexif, vips, expat, pcre, pugixml }:
+
+stdenv.mkDerivation {
+  name = "photoflow-unstable-2018-08-28";
+
+  src = fetchFromGitHub {
+    owner = "aferrero2707";
+    repo = "PhotoFlow";
+    rev = "df03f2538ddd232e693c307db4ab63eb5bdfea38";
+    sha256 = "08ybhv08h24y4li8wb4m89xgrz1szlwpksf6vjharp8cznn4y4x9";
+  };
+
+  nativeBuildInputs = [
+    gettext
+    glib
+    libxml2
+    pkgconfig
+    swig
+    automake
+    gobject-introspection
+    cmake
+    ninja
+  ];
+
+  buildInputs = [
+    libtiff
+    libjpeg
+    fftw
+    exiv2
+    lensfun
+    gtkmm2  # Could be build with gtk3 but proper UI theme is missing and therefore not very usable with gtk3
+            # See: https://discuss.pixls.us/t/help-needed-for-gtk3-theme/5803
+    libraw
+    lcms2
+    libexif
+    vips
+    expat
+    pcre
+    pugixml
+  ];
+
+  cmakeFlags = [
+    "-DBUNDLED_EXIV2=OFF"
+    "-DBUNDLED_LENSFUN=OFF"
+    "-DBUNDLED_GEXIV2=OFF"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A fully non-destructive photo retouching program providing a complete RAW image editing workflow";
+    homepage = "https://aferrero2707.github.io/PhotoFlow/";
+    license = licenses.gpl3Plus;
+    maintainers = [ maintainers.MtP ];
+    platforms = platforms.linux;
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/photoqt/default.nix b/nixpkgs/pkgs/applications/graphics/photoqt/default.nix
new file mode 100644
index 000000000000..71c63bc82aa2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/photoqt/default.nix
@@ -0,0 +1,48 @@
+{ mkDerivation, stdenv, fetchurl, cmake, exiv2, graphicsmagick, libraw, fetchpatch
+, qtbase, qtdeclarative, qtmultimedia, qtquickcontrols, qttools, qtgraphicaleffects
+, extra-cmake-modules, poppler, kimageformats, libarchive, libdevil
+}:
+
+mkDerivation rec {
+  pname = "photoqt";
+  version = "1.7.1";
+
+  src = fetchurl {
+    url = "https://${pname}.org/pkgs/${pname}-${version}.tar.gz";
+    sha256 = "1qvxdh3cbjcywqx0da2qp8z092660qyzv5yknqbps2zr12qqb103";
+  };
+
+  patches = [
+    # Fixes build with exiv2 0.27.1
+    (fetchpatch {
+      url = "https://gitlab.com/luspi/photoqt/commit/c6fd41478e818f3a651d40f96cab3d790e1c09a4.patch";
+      sha256 = "1j2pdr7hm3js7lswhb4qkf9sj9viclhjqz50qxpyd7pqrl1gf2va";
+    })
+  ];
+
+  nativeBuildInputs = [ cmake extra-cmake-modules qttools ];
+
+  buildInputs = [
+    qtbase qtquickcontrols exiv2 graphicsmagick poppler
+    qtmultimedia qtdeclarative libraw qtgraphicaleffects
+    kimageformats libarchive
+  ];
+
+  cmakeFlags = [
+    "-DFREEIMAGE=OFF"
+    "-DDEVIL=OFF"
+  ];
+
+  preConfigure = ''
+    export MAGICK_LOCATION="${graphicsmagick}/include/GraphicsMagick"
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    homepage = "https://photoqt.org/";
+    description = "Simple, yet powerful and good looking image viewer";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/phototonic/default.nix b/nixpkgs/pkgs/applications/graphics/phototonic/default.nix
new file mode 100644
index 000000000000..7020bf6c83e6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/phototonic/default.nix
@@ -0,0 +1,28 @@
+{ mkDerivation, stdenv, fetchFromGitHub, qtbase, qmake, exiv2 }:
+
+mkDerivation rec {
+  pname = "phototonic";
+  version = "2.1";
+
+  src = fetchFromGitHub {
+    repo = "phototonic";
+    owner = "oferkv";
+    rev = "v${version}";
+    sha256 = "0csidmxl1sfmn6gq81vn9f9jckb4swz3sgngnwqa4f75lr6604h7";
+  };
+
+  buildInputs = [ qtbase exiv2 ];
+  nativeBuildInputs = [ qmake ];
+
+  preConfigure = ''
+    sed -i 's;/usr;$$PREFIX/;g' phototonic.pro
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An image viewer and organizer";
+    homepage = "https://sourceforge.net/projects/phototonic/";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ pSub ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/pick-colour-picker/default.nix b/nixpkgs/pkgs/applications/graphics/pick-colour-picker/default.nix
new file mode 100644
index 000000000000..e34d5a87a478
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/pick-colour-picker/default.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, fetchFromGitHub
+, buildPythonPackage
+, pygobject3
+, pycairo
+, glib
+, gtk3
+, gobject-introspection
+, wrapGAppsHook
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "pick-colour-picker";
+  version = "unstable-2019-10-11"; # "1.5.0-3ec940"
+
+  src = fetchFromGitHub {
+    owner = "stuartlangridge";
+    repo = "ColourPicker";
+    rev = "3ec9406d787ce373f6db0d520ed38a921edb9473";
+    sha256 = "04l8ch9297nhkgcmyhsbg0il424c8vy0isns1c7aypn0zp0dc4zd";
+  };
+
+  nativeBuildInputs = [
+    gobject-introspection
+    wrapGAppsHook
+  ];
+
+  pythonPath = [
+    pygobject3
+    pycairo
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+  ];
+
+  # https://github.com/NixOS/nixpkgs/issues/56943
+  # this must be false, otherwise the gobject-introspection hook doesn't run
+  strictDeps = false;
+
+  preDistPhases = [ "fixupIconPath" ];
+
+  fixupIconPath = ''
+    pickLoc="$out/${python.sitePackages}/pick"
+    shareLoc=$(echo "$out/${python.sitePackages}/nix/store/"*)
+    mv "$shareLoc/share" "$out/share"
+
+    sed "s|os.environ.get('SNAP'), \"usr\"|'$out'|g" -i "$pickLoc/__main__.py"
+    '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://kryogenix.org/code/pick/";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    description = "A colour picker that remembers where you picked colours from";
+    maintainers = [ maintainers.mkg20001 ];
+
+    longDescription = ''
+      Pick lets you pick colours from anywhere on your screen. Choose the colour you want and Pick remembers it, names it, and shows you a screenshot so you can remember where you got it from.
+
+      Zoom all the way in to pixels to pick just the right one. Show your colours in your choice of format: rgba() or hex, CSS or Gdk or Qt, whichever you prefer. Copy to the clipboard ready for pasting into code or graphics apps.
+      '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/pinta/default.nix b/nixpkgs/pkgs/applications/graphics/pinta/default.nix
new file mode 100644
index 000000000000..af51c78a1698
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/pinta/default.nix
@@ -0,0 +1,83 @@
+{ stdenv, fetchFromGitHub, buildDotnetPackage, dotnetPackages, gtksharp,
+  gettext }:
+
+let
+  mono-addins = dotnetPackages.MonoAddins;
+in
+buildDotnetPackage rec {
+  name = "pinta-1.6";
+
+  baseName = "Pinta";
+  version = "1.6";
+  outputFiles = [ "bin/*" ];
+  buildInputs = [ gtksharp mono-addins gettext ];
+  xBuildFiles = [ "Pinta.sln" ];
+
+  src = fetchFromGitHub {
+    owner = "PintaProject";
+    repo = "Pinta";
+    rev = version;
+    sha256 = "0vgswy981c7ys4q7js5k85sky7bz8v32wsfq3br4j41vg92pw97d";
+  };
+
+  # Remove version information from nodes <Reference Include="... Version=... ">
+  postPatch = with stdenv.lib; let
+    csprojFiles = [
+      "Pinta/Pinta.csproj"
+      "Pinta.Core/Pinta.Core.csproj"
+      "Pinta.Effects/Pinta.Effects.csproj"
+      "Pinta.Gui.Widgets/Pinta.Gui.Widgets.csproj"
+      "Pinta.Resources/Pinta.Resources.csproj"
+      "Pinta.Tools/Pinta.Tools.csproj"
+    ];
+    versionedNames = [
+      "Mono\\.Addins"
+      "Mono\\.Posix"
+      "Mono\\.Addins\\.Gui"
+      "Mono\\.Addins\\.Setup"
+    ];
+
+    stripVersion = name: file: let
+        match = ''<Reference Include="${name}([ ,][^"]*)?"'';
+        replace = ''<Reference Include="${name}"'';
+      in "sed -i -re 's/${match}/${replace}/g' ${file}\n";
+
+    # Map all possible pairs of two lists
+    map2 = f: listA: listB: concatMap (a: map (f a) listB) listA;
+    concatMap2Strings = f: listA: listB: concatStrings (map2 f listA listB);
+  in
+    concatMap2Strings stripVersion versionedNames csprojFiles
+    + ''
+      # For some reason there is no Microsoft.Common.tasks file
+      # in ''${mono}/lib/mono/3.5 .
+      substituteInPlace Pinta.Install.proj \
+        --replace 'ToolsVersion="3.5"' 'ToolsVersion="4.0"' \
+        --replace "/usr/local" "$out"
+    '';
+
+  makeWrapperArgs = [
+    ''--prefix MONO_GAC_PREFIX : ${gtksharp}''
+    ''--prefix LD_LIBRARY_PATH : ${gtksharp}/lib''
+    ''--prefix LD_LIBRARY_PATH : ${gtksharp.gtk.out}/lib''
+  ];
+
+  postInstall = ''
+    # Do automake's job manually
+    substitute xdg/pinta.desktop.in xdg/pinta.desktop \
+      --replace _Name Name \
+      --replace _Comment Comment \
+      --replace _GenericName GenericName \
+      --replace _X-GNOME-FullName X-GNOME-FullName
+
+    xbuild /target:CompileTranslations Pinta.Install.proj
+    xbuild /target:Install Pinta.Install.proj
+  '';
+
+  meta = {
+    homepage = "http://www.pinta-project.com/";
+    description = "Drawing/editing program modeled after Paint.NET";
+    license = stdenv.lib.licenses.mit;
+    maintainers = with stdenv.lib.maintainers; [ ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/potrace/default.nix b/nixpkgs/pkgs/applications/graphics/potrace/default.nix
new file mode 100644
index 000000000000..dd8e84349fad
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/potrace/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "potrace";
+  version = "1.16";
+
+  src = fetchurl {
+    url = "http://potrace.sourceforge.net/download/${version}/potrace-${version}.tar.gz";
+    sha256 = "1k3sxgjqq0jnpk9xxys05q32sl5hbf1lbk1gmfxcrmpdgnhli0my";
+  };
+
+  configureFlags = [ "--with-libpotrace" ];
+
+  buildInputs = [ zlib ];
+
+  enableParallelBuilding = true;
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    homepage = "http://potrace.sourceforge.net/";
+    description = "A tool for tracing a bitmap, which means, transforming a bitmap into a smooth, scalable image";
+    platforms = platforms.unix;
+    maintainers = [ maintainers.pSub ];
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/pqiv/default.nix b/nixpkgs/pkgs/applications/graphics/pqiv/default.nix
new file mode 100644
index 000000000000..bb29101b4c7f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/pqiv/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, pkgconfig
+, ffmpeg_3, gtk3, imagemagick, libarchive, libspectre, libwebp, poppler
+}:
+
+stdenv.mkDerivation (rec {
+  pname = "pqiv";
+  version = "2.11";
+
+  src = fetchFromGitHub {
+    owner = "phillipberndt";
+    repo = "pqiv";
+    rev = version;
+    sha256 = "06cwm28b7j1skwp21s5snmj1pqh3xh6y2i5v4w3pz0b8k3053h9i";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ ffmpeg_3 gtk3 imagemagick libarchive libspectre libwebp poppler ];
+
+  prePatch = "patchShebangs .";
+
+  meta = with stdenv.lib; {
+    description = "Powerful image viewer with minimal UI";
+    homepage = "http://www.pberndt.com/Programme/Linux/pqiv";
+    license = licenses.gpl3;
+    maintainers = [];
+    platforms = platforms.linux;
+  };
+})
diff --git a/nixpkgs/pkgs/applications/graphics/processing/default.nix b/nixpkgs/pkgs/applications/graphics/processing/default.nix
new file mode 100644
index 000000000000..cad6a35ce3f6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/processing/default.nix
@@ -0,0 +1,63 @@
+{ stdenv, fetchFromGitHub, fetchurl, xmlstarlet, makeWrapper, ant, jdk, rsync, javaPackages, libXxf86vm, gsettings-desktop-schemas }:
+
+stdenv.mkDerivation rec {
+  pname = "processing";
+  version = "3.5.3";
+
+  src = fetchFromGitHub {
+    owner = "processing";
+    repo = "processing";
+    rev = "processing-0269-${version}";
+    sha256 = "0ajniy3a0i0rx7is46r85yh3ah4zm4ra1gbllmihw9pmnfjgfajn";
+  };
+
+  nativeBuildInputs = [ ant rsync makeWrapper ];
+  buildInputs = [ jdk ];
+
+  buildPhase = ''
+    # use compiled jogl to avoid patchelf'ing .so files inside jars
+    rm core/library/*.jar
+    cp ${javaPackages.jogl_2_3_2}/share/java/*.jar core/library/
+
+    # do not download a file during build
+    ${xmlstarlet}/bin/xmlstarlet ed --inplace -P -d '//get[@src="http://download.processing.org/reference.zip"]' build/build.xml
+    install -D -m0444 ${fetchurl {
+                          url    = "http://download.processing.org/reference.zip";
+                          sha256 = "198bpk8mzns6w5h0zdf50wr6iv7sgdi6v7jznj5rbsnpgyilxz35";
+                        }
+                       } ./java/reference.zip
+
+    # suppress "Not fond of this Java VM" message box
+    substituteInPlace app/src/processing/app/platform/LinuxPlatform.java \
+      --replace 'Messages.showWarning' 'if (false) Messages.showWarning'
+
+    ( cd build
+      substituteInPlace build.xml --replace "jre-download," ""  # do not download jre1.8.0_144
+      mkdir -p linux/jre1.8.0_144                               # fake dir to avoid error
+      ant build )
+  '';
+
+  installPhase = ''
+    mkdir $out
+    cp -dpR build/linux/work $out/${pname}
+
+    rmdir $out/${pname}/java
+    ln -s ${jdk} $out/${pname}/java
+
+    makeWrapper $out/${pname}/processing      $out/bin/processing \
+        --prefix XDG_DATA_DIRS : ${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name} \
+        --prefix _JAVA_OPTIONS " " -Dawt.useSystemAAFontSettings=lcd \
+        --prefix LD_LIBRARY_PATH : ${libXxf86vm}/lib
+    makeWrapper $out/${pname}/processing-java $out/bin/processing-java \
+        --prefix XDG_DATA_DIRS : ${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name} \
+        --prefix _JAVA_OPTIONS " " -Dawt.useSystemAAFontSettings=lcd \
+        --prefix LD_LIBRARY_PATH : ${libXxf86vm}/lib
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A language and IDE for electronic arts";
+    homepage = "https://processing.org";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/qcomicbook/default.nix b/nixpkgs/pkgs/applications/graphics/qcomicbook/default.nix
new file mode 100644
index 000000000000..f9dc494b4b35
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/qcomicbook/default.nix
@@ -0,0 +1,43 @@
+{ mkDerivation, stdenv, fetchFromGitHub, pkgconfig, cmake, qtbase, qttools, qtx11extras, poppler }:
+
+mkDerivation rec {
+  pname = "qcomicbook";
+  version = "0.9.1";
+
+  src = fetchFromGitHub {
+    owner = "stolowski";
+    repo = "QComicBook";
+    rev = version;
+    sha256 = "1b769lp6gfwds4jb2g7ymhdm9c06zg57zpyz3zpdb40w07zfsjzv";
+  };
+
+  nativeBuildInputs = [
+    cmake pkgconfig
+  ];
+
+  buildInputs = [
+    qtbase qttools qtx11extras poppler
+  ];
+
+  postInstall = ''
+    substituteInPlace $out/share/applications/*.desktop \
+      --replace "Exec=qcomicbook" "Exec=$out/bin/qcomicbook"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/stolowski/QComicBook";
+    description = "Comic book reader in Qt5";
+    license = licenses.gpl2;
+
+    longDescription = ''
+      QComicBook is a viewer for PDF files and comic book archives containing
+      jpeg/png/xpm/gif/bmp images, which aims at convenience and simplicity.
+      Features include: automatic unpacking of archive files, full-screen mode, continuous
+      scrolling mode, double-pages viewing, manga mode, thumbnails view, page scaling,
+      mouse or keyboard navigation etc.
+    '';
+
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ greydot ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/qimgv/default.nix b/nixpkgs/pkgs/applications/graphics/qimgv/default.nix
new file mode 100644
index 000000000000..2b24a34fbc25
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/qimgv/default.nix
@@ -0,0 +1,60 @@
+{ mkDerivation
+, lib
+, fetchFromGitHub
+, fetchpatch
+
+, cmake
+, pkgconfig
+
+, exiv2
+, mpv
+, opencv4
+, qtbase
+, qtimageformats
+, qtsvg
+}:
+
+mkDerivation rec {
+  pname = "qimgv";
+  version = "0.9.1";
+
+  src = fetchFromGitHub {
+    owner = "easymodo";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0b2hddps969gjim2r9a22zaxmnzp600av2zz6icq66ksfrx1rpac";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkgconfig
+  ];
+
+  buildInputs = [
+    exiv2
+    mpv
+    opencv4
+    qtbase
+    qtimageformats
+    qtsvg
+  ];
+
+  postPatch = ''
+    sed -i "s@/usr/bin/mpv@${mpv}/bin/mpv@" \
+      qimgv/settings.cpp
+  '';
+
+  # Wrap the library path so it can see `libqimgv_player_mpv.so`, which is used
+  # to play video files within qimgv itself.
+  qtWrapperArgs = [
+    "--prefix LD_LIBRARY_PATH : ${placeholder "out"}/lib"
+  ];
+
+  meta = with lib; {
+    description = "A Qt5 image viewer with optional video support";
+    homepage = "https://github.com/easymodo/qimgv";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ cole-h ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/qimgv/qt5-12-compat.diff b/nixpkgs/pkgs/applications/graphics/qimgv/qt5-12-compat.diff
new file mode 100644
index 000000000000..da64759e22d6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/qimgv/qt5-12-compat.diff
@@ -0,0 +1,13 @@
+diff --git a/qimgv/components/directorymanager/watchers/linux/linuxworker.cpp b/qimgv/components/directorymanager/watchers/linux/linuxworker.cpp
+index 96ec9d3..6d95d08 100644
+--- a/qimgv/components/directorymanager/watchers/linux/linuxworker.cpp
++++ b/qimgv/components/directorymanager/watchers/linux/linuxworker.cpp
+@@ -21,7 +21,7 @@ void LinuxWorker::setDescriptor(int desc) {
+ 
+ void LinuxWorker::run() {
+     emit started();
+-    isRunning.storeRelaxed(true);
++    isRunning.store(true);
+ 
+     if (fd == -1) {
+         qDebug() << TAG << "File descriptor isn't set! Stopping";
diff --git a/nixpkgs/pkgs/applications/graphics/qiv/default.nix b/nixpkgs/pkgs/applications/graphics/qiv/default.nix
new file mode 100644
index 000000000000..d3dd917d7b7d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/qiv/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pkgconfig, gtk2, imlib2, file, lcms2, libexif } :
+
+stdenv.mkDerivation (rec {
+  version = "2.3.2";
+  pname = "qiv";
+
+  src = fetchurl {
+    url = "https://spiegl.de/qiv/download/${pname}-${version}.tgz";
+    sha256 = "1mc0f2nnas4q0d7zc9r6g4z93i32xlx0p9hl4fn5zkyml24a1q28";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gtk2 imlib2 file lcms2 libexif ];
+
+  preBuild=''
+    substituteInPlace Makefile --replace /usr/local "$out"
+    substituteInPlace Makefile --replace /man/ /share/man/
+    substituteInPlace Makefile --replace /share/share/ /share/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Quick image viewer";
+    homepage = "http://spiegl.de/qiv/";
+    inherit version;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+})
diff --git a/nixpkgs/pkgs/applications/graphics/qiv/default.upstream b/nixpkgs/pkgs/applications/graphics/qiv/default.upstream
new file mode 100644
index 000000000000..e6c7ef2408e8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/qiv/default.upstream
@@ -0,0 +1,3 @@
+url http://spiegl.de/qiv/download/
+version_link '[.]tgz$'
+do_overwrite() { do_overwrite_just_version; }
diff --git a/nixpkgs/pkgs/applications/graphics/qscreenshot/default.nix b/nixpkgs/pkgs/applications/graphics/qscreenshot/default.nix
new file mode 100644
index 000000000000..1653ea927206
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/qscreenshot/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, dos2unix, which, qt, Carbon }:
+
+stdenv.mkDerivation rec {
+  name = "qscreenshot-1.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/qscreenshot/${name}-src.tar.gz";
+    sha256 = "1spj5fg2l8p5bk81xsv6hqn1kcrdiy54w19jsfb7g5i94vcb1pcx";
+  };
+
+  buildInputs = [ dos2unix which qt ]
+    ++ stdenv.lib.optional stdenv.isDarwin Carbon;
+
+  # Remove carriage returns that cause /bin/sh to abort
+  preConfigure = ''
+    dos2unix configure
+    sed -i "s|lrelease-qt4|lrelease|" src/src.pro
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple creation and editing of screenshots";
+    homepage = "https://sourceforge.net/projects/qscreenshot/";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/qview/default.nix b/nixpkgs/pkgs/applications/graphics/qview/default.nix
new file mode 100644
index 000000000000..b6f25795665a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/qview/default.nix
@@ -0,0 +1,31 @@
+{ mkDerivation, lib, fetchFromGitHub, qmake, qtbase }:
+
+mkDerivation rec {
+  pname = "qview";
+  version = "3.0";
+
+  src = fetchFromGitHub {
+    owner = "jurplel";
+    repo = "qView";
+    rev = version;
+    sha256 = "15a91bs3wcqhgf76wzigbn10hayg628j84pq4j2vaxar94ak0vk7";
+  };
+
+  nativeBuildInputs = [ qmake ];
+
+  buildInputs = [
+    qtbase
+  ];
+
+  patchPhase = ''
+    sed "s|/usr/|$out/|g" -i qView.pro
+  '';
+
+  meta = with lib; {
+    description = "Practical and minimal image viewer";
+    homepage = "https://interversehq.com/qview/";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ acowley ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/rapcad/default.nix b/nixpkgs/pkgs/applications/graphics/rapcad/default.nix
new file mode 100644
index 000000000000..7e9547c1067c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/rapcad/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, fetchurl, cgal, boost, gmp, mpfr, flex, bison, dxflib, readline
+, qtbase, qmake, libGLU
+}:
+
+stdenv.mkDerivation rec {
+  version = "0.9.8";
+  pname = "rapcad";
+
+  src = fetchFromGitHub {
+    owner = "gilesbathgate";
+    repo = "rapcad";
+    rev = "v${version}";
+    sha256 = "0a0sqf6h227zalh0jrz6jpm8iwji7q3i31plqk76i4qm9vsgrhir";
+  };
+
+  patches = [
+    (fetchurl {
+      url = "https://github.com/GilesBathgate/RapCAD/commit/278a8d6c7b8fe08f867002528bbab4a6319a7bb6.patch";
+      sha256 = "1vvkyf0wg79zdzs5zlggfrr1lrp1x75dglzl0mspnycwldsdwznj";
+      name = "disable-QVector-qHash.patch";
+    })
+  ];
+
+  nativeBuildInputs = [ qmake ];
+  buildInputs = [ qtbase cgal boost gmp mpfr flex bison dxflib readline libGLU ];
+
+  meta = with stdenv.lib; {
+    license = licenses.gpl3;
+    maintainers = [ maintainers.raskin ];
+    platforms = platforms.linux;
+    description = ''Constructive solid geometry package'';
+    broken = true; # 2018-04-11
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/rapid-photo-downloader/default.nix b/nixpkgs/pkgs/applications/graphics/rapid-photo-downloader/default.nix
new file mode 100644
index 000000000000..aa6db0accdba
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/rapid-photo-downloader/default.nix
@@ -0,0 +1,88 @@
+{ stdenv, mkDerivationWith, fetchurl, python3Packages
+, file, intltool, gobject-introspection, libgudev
+, udisks, gexiv2, gst_all_1, libnotify
+, exiftool, gdk-pixbuf, libmediainfo, vmtouch
+}:
+
+mkDerivationWith python3Packages.buildPythonApplication rec {
+  pname = "rapid-photo-downloader";
+  version = "0.9.18";
+
+  src = fetchurl {
+    url = "https://launchpad.net/rapid/pyqt/${version}/+download/${pname}-${version}.tar.gz";
+    sha256 = "15p7sssg6vmqbm5xnc4j5dr89d7gl7y5qyq44a240yl5aqkjnybw";
+  };
+
+  # Disable version check and fix install tests
+  postPatch = ''
+    substituteInPlace raphodo/constants.py \
+      --replace "disable_version_check = False" "disable_version_check = True"
+    substituteInPlace raphodo/rescan.py \
+      --replace "from preferences" "from raphodo.preferences"
+  '';
+
+  nativeBuildInputs = [
+    file
+    intltool
+  ];
+
+  # Package has no generally usable unit tests.
+  # The included doctests expect specific, hardcoded hardware to be present.
+  doCheck = false;
+
+  # NOTE: Without gobject-introspection in buildInputs, launching fails with
+  #       "Namespace [Notify / GExiv2 / GUdev] not available"
+  buildInputs = [
+    gdk-pixbuf
+    gexiv2
+    gobject-introspection
+    gst_all_1.gst-libav
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+    gst_all_1.gstreamer
+    gst_all_1.gstreamer.dev
+    libgudev
+    libnotify
+    udisks
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
+    pyqt5
+    pygobject3
+    gphoto2
+    pyzmq
+    tornado
+    psutil
+    pyxdg
+    arrow
+    dateutil
+    easygui
+    colour
+    pymediainfo
+    sortedcontainers
+    rawkit
+    requests
+    colorlog
+    pyprind
+    tenacity
+  ];
+
+  preFixup = ''
+    makeWrapperArgs+=(
+      --set GI_TYPELIB_PATH "$GI_TYPELIB_PATH"
+      --set PYTHONPATH "$PYTHONPATH"
+      --prefix PATH : "${stdenv.lib.makeBinPath [ exiftool vmtouch ]}"
+      --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ libmediainfo ]}"
+      --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0"
+      "''${qtWrapperArgs[@]}"
+    )
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Photo and video importer for cameras, phones, and memory cards";
+    homepage = "https://www.damonlynch.net/rapid/";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ jfrankenau ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/rawtherapee/default.nix b/nixpkgs/pkgs/applications/graphics/rawtherapee/default.nix
new file mode 100644
index 000000000000..4371bc5838ed
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/rawtherapee/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitHub, pkgconfig, cmake, pixman, libpthreadstubs, gtkmm3, libXau
+, libXdmcp, lcms2, libiptcdata, libcanberra-gtk3, fftw, expat, pcre, libsigcxx, wrapGAppsHook
+, lensfun, librsvg
+}:
+
+stdenv.mkDerivation rec {
+  version = "5.8";
+  pname = "rawtherapee";
+
+  src = fetchFromGitHub {
+    owner = "Beep6581";
+    repo = "RawTherapee";
+    rev = version;
+    sha256 = "0d644s4grfia6f3k6y0byd5pwajr12kai2kc280yxi8v3w1b12ik";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig wrapGAppsHook ];
+
+  buildInputs = [
+    pixman libpthreadstubs gtkmm3 libXau libXdmcp
+    lcms2 libiptcdata libcanberra-gtk3 fftw expat pcre libsigcxx lensfun librsvg
+  ];
+
+  cmakeFlags = [
+    "-DPROC_TARGET_NUMBER=2"
+    "-DCACHE_NAME_SUFFIX=\"\""
+  ];
+
+  CMAKE_CXX_FLAGS = "-std=c++11 -Wno-deprecated-declarations -Wno-unused-result";
+
+  postUnpack = ''
+    echo "set(HG_VERSION $version)" > $sourceRoot/ReleaseInfo.cmake
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "RAW converter and digital photo processing software";
+    homepage = "http://www.rawtherapee.com/";
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = with stdenv.lib.maintainers; [ jcumming mahe ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/renderdoc/default.nix b/nixpkgs/pkgs/applications/graphics/renderdoc/default.nix
new file mode 100644
index 000000000000..2683206c8e4c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/renderdoc/default.nix
@@ -0,0 +1,79 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, mkDerivation
+, qtbase, qtx11extras, qtsvg, makeWrapper
+, vulkan-loader, libglvnd, xorg, python3, python3Packages
+, bison, pcre, automake, autoconf, addOpenGLRunpath
+}:
+let
+  custom_swig = fetchFromGitHub {
+    owner = "baldurk";
+    repo = "swig";
+    rev = "renderdoc-modified-7";
+    sha256 = "15r2m5kcs0id64pa2fsw58qll3jyh71jzc04wy20pgsh2326zis6";
+  };
+  pythonPackages = python3Packages;
+in
+mkDerivation rec {
+  version = "1.8";
+  pname = "renderdoc";
+
+  src = fetchFromGitHub {
+    owner = "baldurk";
+    repo = "renderdoc";
+    rev = "v${version}";
+    sha256 = "177j893abplj8wd8j4ava58m1mr7qq8fsffsq0w4hf5xgl5w8fq8";
+  };
+
+  buildInputs = [
+    qtbase qtsvg xorg.libpthreadstubs xorg.libXdmcp qtx11extras vulkan-loader python3
+  ]; # ++ (with pythonPackages; [pyside2 pyside2-tools shiboken2]);
+  # TODO: figure out how to make cmake recognise pyside2
+
+  nativeBuildInputs = [ cmake makeWrapper pkgconfig bison pcre automake autoconf addOpenGLRunpath ];
+
+  postUnpack = ''
+    cp -r ${custom_swig} swig
+    chmod -R +w swig
+    patchShebangs swig/autogen.sh
+  '';
+
+  cmakeFlags = [
+    "-DBUILD_VERSION_HASH=${src.rev}"
+    "-DBUILD_VERSION_DIST_NAME=NixOS"
+    "-DBUILD_VERSION_DIST_VER=${version}"
+    "-DBUILD_VERSION_DIST_CONTACT=https://github.com/NixOS/nixpkgs/tree/master/pkgs/applications/graphics/renderdoc"
+    "-DBUILD_VERSION_STABLE=ON"
+  ];
+
+  # TODO: define these in the above array via placeholders, once those are widely supported
+  preConfigure = ''
+    cmakeFlags+=" -DVULKAN_LAYER_FOLDER=$out/share/vulkan/implicit_layer.d/"
+    cmakeFlags+=" -DRENDERDOC_SWIG_PACKAGE=$PWD/../swig"
+  '';
+
+  dontWrapQtApps = true;
+  preFixup = ''
+    wrapQtApp $out/bin/qrenderdoc --suffix LD_LIBRARY_PATH : "$out/lib:${vulkan-loader}/lib:${libglvnd}/lib"
+    wrapProgram $out/bin/renderdoccmd --suffix LD_LIBRARY_PATH : "$out/lib:${vulkan-loader}/lib:${libglvnd}/lib"
+  '';
+
+  # The only documentation for this so far is in pkgs/build-support/add-opengl-runpath/setup-hook.sh
+  postFixup = ''
+    addOpenGLRunpath $out/lib/librenderdoc.so
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "A single-frame graphics debugger";
+    homepage = "https://renderdoc.org/";
+    license = licenses.mit;
+    longDescription = ''
+      RenderDoc is a free MIT licensed stand-alone graphics debugger that
+      allows quick and easy single-frame capture and detailed introspection
+      of any application using Vulkan, D3D11, OpenGL or D3D12 across
+      Windows 7 - 10, Linux or Android.
+    '';
+    maintainers = [maintainers.jansol];
+    platforms = ["i686-linux" "x86_64-linux"];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/runwayml/default.nix b/nixpkgs/pkgs/applications/graphics/runwayml/default.nix
new file mode 100644
index 000000000000..eb8ecc34b8f3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/runwayml/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, fetchurl
+, appimageTools
+, symlinkJoin
+}:
+
+let
+  pname = "runwayml";
+  version = "0.10.20";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "https://runway-releases.s3.amazonaws.com/Runway%20${version}.AppImage";
+    sha256 = "1wi94xi8nrwfc4v2j1crlmwr0nxg95ffp5h4hxd84crvya8ibxgz";
+    name="${pname}-${version}.AppImage";
+  };
+
+  binary = appimageTools.wrapType2 {
+    name = pname;
+    inherit src;
+  };
+  # we only use this to extract the icon
+  appimage-contents = appimageTools.extractType2 {
+    inherit name src;
+  };
+
+in
+  symlinkJoin {
+    inherit name;
+    paths = [ binary ];
+
+    postBuild = ''
+      mkdir -p $out/share/pixmaps/ $out/share/applications
+      cp ${appimage-contents}/usr/share/icons/hicolor/1024x1024/apps/runway.png $out/share/pixmaps/runway.png
+      sed 's:Exec=AppRun:Exec=runwayml:' ${appimage-contents}/runway.desktop > $out/share/applications/runway.desktop
+    '';
+
+  meta = with lib; {
+    description = "Machine learning for creators";
+    homepage = "https://runwayml.com/";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ prusnak ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/rx/default.nix b/nixpkgs/pkgs/applications/graphics/rx/default.nix
new file mode 100644
index 000000000000..53e8109fef51
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/rx/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, rustPlatform, fetchFromGitHub, makeWrapper
+, cmake, pkg-config
+, xorg ? null
+, libGL ? null }:
+
+with stdenv.lib;
+
+rustPlatform.buildRustPackage rec {
+  pname = "rx";
+  version = "0.4.0";
+
+  src = fetchFromGitHub {
+    owner = "cloudhead";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1pln65pqy39ijrld11d06klwzfhhzmrgdaxijpx9q7w9z66zmqb8";
+  };
+
+  cargoSha256 = "143a5x61s7ywk0ljqd10jkfvs6lrhlibkm2a9lw41wq13mgzb78j";
+
+  nativeBuildInputs = [ cmake pkg-config makeWrapper ];
+
+  buildInputs = optionals stdenv.isLinux
+  (with xorg; [
+    # glfw-sys dependencies:
+    libX11 libXrandr libXinerama libXcursor libXi libXext
+  ]);
+
+  # FIXME: GLFW (X11) requires DISPLAY env variable for all tests
+  doCheck = false;
+
+  postInstall = optional stdenv.isLinux ''
+    mkdir -p $out/share/applications
+    cp $src/rx.desktop $out/share/applications
+    wrapProgram $out/bin/rx --prefix LD_LIBRARY_PATH : ${libGL}/lib
+  '';
+
+  meta = {
+    description = "Modern and extensible pixel editor implemented in Rust";
+    homepage = "https://rx.cloudhead.io/";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ minijackson filalex77 ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/sane/backends/airscan/default.nix b/nixpkgs/pkgs/applications/graphics/sane/backends/airscan/default.nix
new file mode 100644
index 000000000000..0615b00f135e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/sane/backends/airscan/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenv, fetchFromGitHub, pkg-config, avahi, libsoup, libjpeg, libpng
+, sane-backends, meson, ninja }:
+stdenv.mkDerivation rec {
+  pname = "sane-airscan";
+  version = "0.99.3";
+
+  nativeBuildInputs = [ meson ninja pkg-config ];
+  buildInputs = [ avahi libsoup libjpeg libpng sane-backends ];
+
+  src = fetchFromGitHub {
+    owner = "alexpevzner";
+    repo = pname;
+    rev = version;
+    sha256 = "1sxp207vzjzi0ad5202n46acbha4dfmzcijl2v0b9j9lj4k42a8k";
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/alexpevzner/sane-airscan";
+    description = "Scanner Access Now Easy - Apple AirScan (eSCL) driver";
+    longDescription = ''
+      sane-airscan: Linux support of Apple AirScan (eSCL) compatible document scanners.
+    '';
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ zaninime ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/sane/backends/brscan4/default.nix b/nixpkgs/pkgs/applications/graphics/sane/backends/brscan4/default.nix
new file mode 100644
index 000000000000..2ada41ac98a1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/sane/backends/brscan4/default.nix
@@ -0,0 +1,94 @@
+{ stdenv, fetchurl, callPackage, patchelf, makeWrapper, coreutils, libusb-compat-0_1 }:
+
+let
+  myPatchElf = file: with stdenv.lib; ''
+    patchelf --set-interpreter \
+      ${stdenv.glibc}/lib/ld-linux${optionalString stdenv.is64bit "-x86-64"}.so.2 \
+      ${file}
+  '';
+
+  udevRules = callPackage ./udev_rules_type1.nix {};
+
+in stdenv.mkDerivation rec {
+  name = "brscan4-0.4.8-1";
+  src = 
+    if stdenv.hostPlatform.system == "i686-linux" then
+      fetchurl {
+        url = "http://download.brother.com/welcome/dlf006646/${name}.i386.deb";
+        sha256 = "15hrf1gpm36lniqi6yf47dvdqjinm644xb752c6rcv8n06wb79ag";
+      }
+    else if stdenv.hostPlatform.system == "x86_64-linux" then
+      fetchurl {
+        url = "https://download.brother.com/welcome/dlf006645/${name}.amd64.deb";
+        sha256 = "0pyprjl0capg403yp6pp07gd6msx9kn7bzjcdswdbn28fyxrk5l4";
+      }
+    else throw "${name} is not supported on ${stdenv.hostPlatform.system} (only i686-linux and x86_64 linux are supported)";
+
+  unpackPhase = ''
+    ar x $src
+    tar xfvz data.tar.gz
+  '';
+
+  nativeBuildInputs = [ makeWrapper patchelf coreutils udevRules ];
+  buildInputs = [ libusb-compat-0_1 ];
+  dontBuild = true;
+
+  patchPhase = ''
+    ${myPatchElf "opt/brother/scanner/brscan4/brsaneconfig4"}
+
+    RPATH=${libusb-compat-0_1.out}/lib
+    for a in usr/lib64/sane/*.so*; do
+      if ! test -L $a; then
+        patchelf --set-rpath $RPATH $a
+      fi
+    done
+  '';
+
+  installPhase = with stdenv.lib; ''
+    PATH_TO_BRSCAN4="opt/brother/scanner/brscan4"
+    mkdir -p $out/$PATH_TO_BRSCAN4
+    cp -rp $PATH_TO_BRSCAN4/* $out/$PATH_TO_BRSCAN4
+    mkdir -p $out/lib/sane
+    cp -rp usr/lib${optionalString stdenv.is64bit "64"}/sane/* $out/lib/sane
+
+    # Symbolic links were absolute. Fix them so that they point to $out.
+    pushd "$out/lib/sane" > /dev/null
+    for a in *.so*; do
+      if test -L $a; then
+        fixedTargetFileName="$(basename $(readlink $a))"
+        unlink "$a"
+        ln -s -T "$fixedTargetFileName" "$a"
+      fi
+    done
+    popd > /dev/null
+
+    # Generate an LD_PRELOAD wrapper to redirect execvp(), open() and open64()
+    # calls to `/opt/brother/scanner/brscan4`.
+    preload=$out/libexec/brother/scanner/brscan4/libpreload.so
+    mkdir -p $(dirname $preload)
+    gcc -shared ${./preload.c} -o $preload -ldl -DOUT=\"$out\" -fPIC
+
+    makeWrapper \
+      "$out/$PATH_TO_BRSCAN4/brsaneconfig4" \
+      "$out/bin/brsaneconfig4" \
+      --set LD_PRELOAD $preload
+
+    mkdir -p $out/etc/sane.d
+    echo "brother4" > $out/etc/sane.d/dll.conf
+
+    mkdir -p $out/etc/udev/rules.d
+    cp -p ${udevRules}/etc/udev/rules.d/*.rules \
+      $out/etc/udev/rules.d
+  '';
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  meta = {
+    description = "Brother brscan4 sane backend driver";
+    homepage = "http://www.brother.com";
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.unfree;
+    maintainers = with stdenv.lib.maintainers; [ jraygauthier ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/sane/backends/brscan4/preload.c b/nixpkgs/pkgs/applications/graphics/sane/backends/brscan4/preload.c
new file mode 100644
index 000000000000..016162770934
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/sane/backends/brscan4/preload.c
@@ -0,0 +1,170 @@
+/* Brgen4 search for configuration under `/etc/opt/brother/scanner/brscan4`. This
+   LD_PRELOAD library intercepts execvp(), open and open64 calls to redirect them to
+   the corresponding location in $out. Also support specifying an alternate
+   file name for `brsanenetdevice4.cfg` which otherwise is invariable
+   created at `/etc/opt/brother/scanner/brscan4`*/
+
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <dlfcn.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <string.h>
+#include <dirent.h>
+
+char origDir [] = "/etc/opt/brother/scanner/brscan4";
+char realDir [] = OUT "/opt/brother/scanner/brscan4";
+
+char devCfgFileNameEnvVar [] = "BRSANENETDEVICE4_CFG_FILENAME";
+char devCfgFileName [] = "/etc/opt/brother/scanner/brscan4//brsanenetdevice4.cfg";
+
+const char * rewrite(const char * path, char * buf)
+{
+    if (strncmp(path, devCfgFileName, sizeof(devCfgFileName)) == 0) {
+
+      const char* newCfgFileName = getenv(devCfgFileNameEnvVar);
+      if (!newCfgFileName) return path;
+
+      if (snprintf(buf, PATH_MAX, "%s", newCfgFileName) >= PATH_MAX)
+          abort();
+      return buf;
+    }
+
+    if (strncmp(path, origDir, sizeof(origDir) - 1) != 0) return path;
+    if (snprintf(buf, PATH_MAX, "%s%s", realDir, path + sizeof(origDir) - 1) >= PATH_MAX)
+        abort();
+    return buf;
+}
+
+const char* findAndReplaceFirstOccurence(const char* inStr, const char* subStr, 
+                                         const char* replaceStr, 
+                                         char* buf, unsigned maxBuf)
+{
+    const char* foundStr = strstr(inStr, subStr);
+    if (!foundStr)
+      return inStr;
+
+    const unsigned inStrLen = strlen(inStr);
+    const unsigned subStrLen = strlen(subStr);
+    const unsigned replaceStrLen = strlen(replaceStr);
+
+    const unsigned precedingStrLen = foundStr - inStr;
+    if (precedingStrLen + 1 > maxBuf)
+      return NULL;
+
+    const unsigned followingStrPos = precedingStrLen + subStrLen;
+    const unsigned followingStrLen = inStrLen - followingStrPos;
+
+    strncpy(buf, inStr, precedingStrLen);
+    unsigned outLength = precedingStrLen;
+
+    if (outLength + replaceStrLen + 1 > maxBuf)
+      return NULL;
+
+    strncpy(buf + outLength, replaceStr, replaceStrLen);
+    outLength += replaceStrLen;
+    
+    if (outLength + followingStrLen + 1 > maxBuf)
+      return NULL;
+
+    strncpy(buf + outLength, inStr + followingStrPos, followingStrLen);
+    outLength += followingStrLen;
+    
+    buf[outLength] = '\0';
+
+    return buf;
+}
+
+const char* rewriteSystemCall(const char* command, char* buf, unsigned maxBuf)
+{
+
+    const char* foundStr = strstr(command, devCfgFileName);
+    if (!foundStr)
+      return command;
+
+    const char* replaceStr = getenv(devCfgFileNameEnvVar);
+    if (!replaceStr) return command;
+
+    const char* result = 
+      findAndReplaceFirstOccurence(command, devCfgFileName, replaceStr, buf, maxBuf);
+
+    if (!result)
+      abort();
+
+    return result;
+}
+
+int execvp(const char * path, char * const argv[])
+{
+    int (*_execvp) (const char *, char * const argv[]) = dlsym(RTLD_NEXT, "execvp");
+    char buf[PATH_MAX];
+    return _execvp(rewrite(path, buf), argv);
+}
+
+
+int open(const char *path, int flags, ...)
+{
+    char buf[PATH_MAX];
+    int (*_open) (const char *, int, mode_t) = dlsym(RTLD_NEXT, "open");
+    mode_t mode = 0;
+    if (flags & O_CREAT) {
+        va_list ap;
+        va_start(ap, flags);
+        mode = va_arg(ap, mode_t);
+        va_end(ap);
+    }
+    return _open(rewrite(path, buf), flags, mode);
+}
+
+int open64(const char *path, int flags, ...)
+{
+    char buf[PATH_MAX];
+    int (*_open64) (const char *, int, mode_t) = dlsym(RTLD_NEXT, "open64");
+    mode_t mode = 0;
+    if (flags & O_CREAT) {
+        va_list ap;
+        va_start(ap, flags);
+        mode = va_arg(ap, mode_t);
+        va_end(ap);
+    }
+    return _open64(rewrite(path, buf), flags, mode);
+}
+
+FILE* fopen(const char* path, const char* mode)
+{
+  char buf[PATH_MAX];
+	FILE* (*_fopen) (const char*, const char*) = dlsym(RTLD_NEXT, "fopen");
+
+	return _fopen(rewrite(path, buf), mode);
+}
+
+FILE *fopen64(const char *path, const char *mode)
+{
+  char buf[PATH_MAX];
+	FILE* (*_fopen64) (const char*, const char*) = dlsym(RTLD_NEXT, "fopen64");
+
+	return _fopen64(rewrite(path, buf), mode);
+}
+
+DIR* opendir(const char* path)
+{
+  char buf[PATH_MAX];
+	DIR* (*_opendir) (const char*) = dlsym(RTLD_NEXT, "opendir");
+
+	return _opendir(rewrite(path, buf));
+}
+
+#define SYSTEM_CMD_MAX 512
+
+int system(const char *command)
+{
+    char buf[SYSTEM_CMD_MAX];
+    int (*_system) (const char*) = dlsym(RTLD_NEXT, "system");
+
+    const char* newCommand = rewriteSystemCall(command, buf, SYSTEM_CMD_MAX);
+    return _system(newCommand);
+}
diff --git a/nixpkgs/pkgs/applications/graphics/sane/backends/brscan4/udev_rules_type1.nix b/nixpkgs/pkgs/applications/graphics/sane/backends/brscan4/udev_rules_type1.nix
new file mode 100644
index 000000000000..682e401c069b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/sane/backends/brscan4/udev_rules_type1.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchurl, libsaneUDevRuleNumber ? "49"}:
+
+stdenv.mkDerivation rec {
+  name = "brother-udev-rule-type1-1.0.0-1";
+
+  src = fetchurl {
+    url = "http://download.brother.com/welcome/dlf006654/${name}.all.deb";
+    sha256 = "0i0x5jw135pli4jl9mgnr5n2rrdvml57nw84yq2999r4frza53xi";
+  };
+
+  dontBuild = true;
+
+  unpackPhase = ''
+    ar x $src
+    tar xfvz data.tar.gz
+  '';
+
+  /*
+    Fix the following error:
+
+    ~~~
+    invalid rule 49-brother-libsane-type1.rules
+    unknown key 'SYSFS{idVendor}'
+    ~~~
+
+    Apparently the udev rules syntax has change and the SYSFS key has to
+    be changed to ATTR.
+
+    See:
+
+     -  <http://ubuntuforums.org/showthread.php?t=1496878>
+     -  <http://www.planet-libre.org/index.php?post_id=10937>
+  */
+  patchPhase = ''
+    sed -i -e s/SYSFS/ATTR/g opt/brother/scanner/udev-rules/type1/*.rules
+  '';
+
+  installPhase = ''
+    mkdir -p $out/etc/udev/rules.d
+    cp opt/brother/scanner/udev-rules/type1/NN-brother-mfp-type1.rules \
+      $out/etc/udev/rules.d/${libsaneUDevRuleNumber}-brother-libsane-type1.rules
+    chmod 644 $out/etc/udev/rules.d/${libsaneUDevRuleNumber}-brother-libsane-type1.rules
+  '';
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  meta = {
+    description = "Brother type1 scanners udev rules";
+    homepage = "http://www.brother.com";
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.unfree;
+    maintainers = with stdenv.lib.maintainers; [ jraygauthier ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/sane/backends/default.nix b/nixpkgs/pkgs/applications/graphics/sane/backends/default.nix
new file mode 100644
index 000000000000..6aba42d33e63
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/sane/backends/default.nix
@@ -0,0 +1,10 @@
+{ callPackage, fetchurl, ... } @ args:
+
+callPackage ./generic.nix (args // rec {
+  version = "1.0.28";
+
+  src = fetchurl {
+    url = "https://gitlab.com/sane-project/backends/uploads/9e718daff347826f4cfe21126c8d5091/sane-backends-${version}.tar.gz";
+    sha256 = "00yy8q9hqdf0zjxxl4d8njr9zf0hhi3a9ib23ikc2anqf8zhy9ii";
+  };
+})
diff --git a/nixpkgs/pkgs/applications/graphics/sane/backends/dsseries/default.nix b/nixpkgs/pkgs/applications/graphics/sane/backends/dsseries/default.nix
new file mode 100644
index 000000000000..37ac02987061
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/sane/backends/dsseries/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchurl, rpmextract }:
+
+stdenv.mkDerivation rec {
+  pname = "libsane-dsseries";
+  version = "1.0.5-1";
+
+  src = fetchurl {
+    url = "https://download.brother.com/welcome/dlf100974/${pname}-${version}.x86_64.rpm";
+    sha256 = "1wfdbfbf51cc7njzikdg48kwpnpc0pg5s6p0s0y3z0q7y59x2wbq";
+  };
+
+  nativeBuildInputs = [ rpmextract ];
+
+  unpackCmd = ''
+    mkdir ${pname}-${version} && pushd ${pname}-${version}
+    rpmextract $curSrc
+    popd
+  '';
+
+  patchPhase = ''
+    substituteInPlace etc/udev/rules.d/50-Brother_DSScanner.rules \
+      --replace 'GROUP="users"' 'GROUP="scanner", ENV{libsane_matched}="yes"'
+
+    mkdir -p etc/sane.d/dll.d
+    echo "dsseries" > etc/sane.d/dll.d/dsseries.conf
+  '';
+
+  installPhase = ''
+    mkdir -p $out
+    cp -dr etc $out
+    cp -dr usr/lib64 $out/lib
+  '';
+
+  preFixup = ''
+    for f in `find $out/lib/sane/ -type f`; do
+      # Make it possible to find libstdc++.so.6
+      patchelf --set-rpath ${stdenv.cc.cc.lib}/lib:$out/lib/sane $f
+
+      # Horrible kludge: The driver hardcodes /usr/lib/sane/ as a dlopen path.
+      # We can directly modify the binary to force a relative lookup instead.
+      # The new path is NULL-padded to the same length as the original path.
+      sed -i "s|/usr/lib/sane/%s|%s\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00|g" $f
+    done
+  '';
+
+  meta = {
+    description = "Brother DSSeries SANE backend driver";
+    homepage = "http://www.brother.com";
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.unfree;
+    maintainers = with stdenv.lib.maintainers; [ callahad ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/sane/backends/generic.nix b/nixpkgs/pkgs/applications/graphics/sane/backends/generic.nix
new file mode 100644
index 000000000000..d3e8b417017d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/sane/backends/generic.nix
@@ -0,0 +1,95 @@
+{ stdenv
+, gettext, pkgconfig
+, avahi, libgphoto2, libieee1284, libjpeg, libpng, libtiff, libusb1, libv4l, net-snmp
+
+# List of { src name backend } attibute sets - see installFirmware below:
+, extraFirmware ? []
+
+# For backwards compatibility with older setups; use extraFirmware instead:
+, gt68xxFirmware ? null, snapscanFirmware ? null
+
+# Passed from versioned package (e.g. default.nix, git.nix):
+, version, src, ...
+}:
+
+stdenv.mkDerivation {
+  inherit src version;
+
+  name = "sane-backends-${version}";
+
+  outputs = [ "out" "doc" "man" ];
+
+  nativeBuildInputs = [
+    gettext
+    pkgconfig
+  ];
+
+  buildInputs = [
+    avahi
+    libgphoto2
+    libieee1284
+    libjpeg
+    libpng
+    libtiff
+    libusb1
+    libv4l
+    net-snmp
+  ];
+
+  enableParallelBuilding = true;
+
+  configureFlags = []
+    ++ stdenv.lib.optional (avahi != null)   "--enable-avahi"
+    ++ stdenv.lib.optional (libusb1 != null) "--with-usb"
+  ;
+
+  postInstall = let
+
+    compatFirmware = extraFirmware
+      ++ stdenv.lib.optional (gt68xxFirmware != null) {
+        src = gt68xxFirmware.fw;
+        inherit (gt68xxFirmware) name;
+        backend = "gt68xx";
+      }
+      ++ stdenv.lib.optional (snapscanFirmware != null) {
+        src = snapscanFirmware;
+        name = "your-firmwarefile.bin";
+        backend = "snapscan";
+      };
+
+    installFirmware = f: ''
+      mkdir -p $out/share/sane/${f.backend}
+      ln -sv ${f.src} $out/share/sane/${f.backend}/${f.name}
+    '';
+
+  in ''
+    mkdir -p $out/etc/udev/rules.d/
+    ./tools/sane-desc -m udev > $out/etc/udev/rules.d/49-libsane.rules || \
+    cp tools/udev/libsane.rules $out/etc/udev/rules.d/49-libsane.rules
+    # the created 49-libsane references /bin/sh
+    substituteInPlace $out/etc/udev/rules.d/49-libsane.rules \
+      --replace "RUN+=\"/bin/sh" "RUN+=\"${stdenv.shell}"
+
+    substituteInPlace $out/lib/libsane.la \
+      --replace "-ljpeg" "-L${libjpeg.out}/lib -ljpeg"
+
+    # net.conf conflicts with the file generated by the nixos module
+    rm -f $out/etc/sane.d/net.conf
+  '' + stdenv.lib.concatStrings (builtins.map installFirmware compatFirmware);
+
+  meta = with stdenv.lib; {
+    description = "SANE (Scanner Access Now Easy) backends";
+    longDescription = ''
+      Collection of open-source SANE backends (device drivers).
+      SANE is a universal scanner interface providing standardized access to
+      any raster image scanner hardware: flatbed scanners, hand-held scanners,
+      video- and still-cameras, frame-grabbers, etc. For a list of supported
+      scanners, see http://www.sane-project.org/sane-backends.html.
+    '';
+    homepage = "http://www.sane-project.org/";
+    license = licenses.gpl2Plus;
+
+    maintainers = with maintainers; [ peti ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/sane/backends/git.nix b/nixpkgs/pkgs/applications/graphics/sane/backends/git.nix
new file mode 100644
index 000000000000..2edd739068d9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/sane/backends/git.nix
@@ -0,0 +1,10 @@
+{ callPackage, fetchgit, ... } @ args:
+
+callPackage ./generic.nix (args // {
+  version = "2017-12-01";
+  src = fetchgit {
+    sha256 = "0qf7d7268kdxnb723c03m6icxhbgx0vw8gqvck2q1w5b948dy9g8";
+    rev = "e895ee55bec8a3320a0e972b32c05d35b47fe226";
+    url = "https://gitlab.com/sane-project/backends.git";
+  };
+})
diff --git a/nixpkgs/pkgs/applications/graphics/sane/config.nix b/nixpkgs/pkgs/applications/graphics/sane/config.nix
new file mode 100644
index 000000000000..2ef1e26f5ac6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/sane/config.nix
@@ -0,0 +1,46 @@
+{ stdenv }:
+
+{ paths }:
+
+with stdenv.lib;
+let installSanePath = path: ''
+      if [ -e "${path}/lib/sane" ]; then
+        find "${path}/lib/sane" -maxdepth 1 -not -type d | while read backend; do
+          symlink "$backend" "$out/lib/sane/$(basename "$backend")"
+        done
+      fi
+
+      if [ -e "${path}/etc/sane.d" ]; then
+        find "${path}/etc/sane.d" -maxdepth 1 -not -type d | while read conf; do
+          name="$(basename $conf)"
+          if [ "$name" = "dll.conf" ] || [ "$name" = "saned.conf" ] || [ "$name" = "net.conf" ]; then
+            cat "$conf" >> "$out/etc/sane.d/$name"
+          else
+            symlink "$conf" "$out/etc/sane.d/$name"
+          fi
+        done
+      fi
+
+      if [ -e "${path}/etc/sane.d/dll.d" ]; then
+        find "${path}/etc/sane.d/dll.d" -maxdepth 1 -not -type d | while read conf; do
+          symlink "$conf" "$out/etc/sane.d/dll.d/$(basename $conf)"
+        done
+      fi
+    '';
+in
+stdenv.mkDerivation {
+  name = "sane-config";
+  phases = "installPhase";
+
+  installPhase = ''
+    function symlink () {
+      local target=$1 linkname=$2
+      if [ -e "$linkname" ]; then
+        echo "warning: conflict for $linkname. Overriding $(readlink $linkname) with $target."
+      fi
+      ln -sfn "$target" "$linkname"
+    }
+
+    mkdir -p $out/etc/sane.d $out/etc/sane.d/dll.d $out/lib/sane
+  '' + concatMapStrings installSanePath paths;
+}
diff --git a/nixpkgs/pkgs/applications/graphics/sane/frontends.nix b/nixpkgs/pkgs/applications/graphics/sane/frontends.nix
new file mode 100644
index 000000000000..885dff311b8f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/sane/frontends.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, sane-backends, libX11, gtk2, pkgconfig, libusb-compat-0_1 ? null }:
+
+stdenv.mkDerivation rec {
+  pname = "sane-frontends";
+  version = "1.0.14";
+
+  src = fetchurl {
+    url = "https://alioth-archive.debian.org/releases/sane/${pname}/${version}/${pname}-${version}.tar.gz";
+    sha256 = "1ad4zr7rcxpda8yzvfkq1rfjgx9nl6lan5a628wvpdbh3fn9v0z7";
+  };
+
+  preConfigure = ''
+    sed -e '/SANE_CAP_ALWAYS_SETTABLE/d' -i src/gtkglue.c
+  '';
+
+  buildInputs = [ sane-backends libX11 gtk2 ]
+    ++ stdenv.lib.optional (libusb-compat-0_1 != null) libusb-compat-0_1;
+  nativeBuildInputs = [ pkgconfig ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Scanner Access Now Easy";
+    homepage    = "http://www.sane-project.org/";
+    license     = licenses.gpl2Plus;
+    maintainers = with maintainers; [ peti ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/sane/xsane.nix b/nixpkgs/pkgs/applications/graphics/sane/xsane.nix
new file mode 100644
index 000000000000..04d19dee8a8e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/sane/xsane.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, sane-backends, sane-frontends, libX11, gtk2, pkgconfig, libpng
+, libusb-compat-0_1 ? null
+, gimpSupport ? false, gimp ? null
+}:
+
+assert gimpSupport -> gimp != null;
+
+stdenv.mkDerivation rec {
+  name = "xsane-0.999";
+
+  src = fetchurl {
+    url = "http://www.xsane.org/download/${name}.tar.gz";
+    sha256 = "0jrb918sfb9jw3vmrz0z7np4q55hgsqqffpixs0ir5nwcwzd50jp";
+  };
+
+  preConfigure = ''
+    sed -e '/SANE_CAP_ALWAYS_SETTABLE/d' -i src/xsane-back-gtk.c
+    chmod a+rX -R .
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [libpng sane-backends sane-frontends libX11 gtk2 ]
+    ++ (if libusb-compat-0_1 != null then [libusb-compat-0_1] else [])
+    ++ stdenv.lib.optional gimpSupport gimp;
+
+  meta = {
+    homepage = "http://www.sane-project.org/";
+    description = "Graphical scanning frontend for sane";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = with stdenv.lib.maintainers; [peti];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/scantailor/advanced.nix b/nixpkgs/pkgs/applications/graphics/scantailor/advanced.nix
new file mode 100644
index 000000000000..e4598193469b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/scantailor/advanced.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, mkDerivation
+, cmake, libjpeg, libpng, libtiff, boost
+, qtbase, qttools }:
+
+mkDerivation rec {
+  pname = "scantailor-advanced";
+  version = "1.0.16";
+
+  src = fetchFromGitHub {
+    owner = "4lex4";
+    repo = "scantailor-advanced";
+    rev = "v${version}";
+    sha256 = "0lc9lzbpiy5hgimyhl4s4q67pb9gacpy985gl6iy8pl79zxhmcyp";
+  };
+
+  nativeBuildInputs = [ cmake qttools ];
+  buildInputs = [ libjpeg libpng libtiff boost qtbase ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/4lex4/scantailor-advanced";
+    description = "Interactive post-processing tool for scanned pages";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ jfrankenau ];
+    platforms = with platforms; gnu ++ linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/scantailor/default.nix b/nixpkgs/pkgs/applications/graphics/scantailor/default.nix
new file mode 100644
index 000000000000..bc54f3aa627a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/scantailor/default.nix
@@ -0,0 +1,24 @@
+{stdenv, fetchurl, qt4, cmake, libjpeg, libtiff, boost }:
+
+stdenv.mkDerivation {
+  name = "scantailor-0.9.12.1";
+
+  src = fetchurl {
+    url = "https://github.com/scantailor/scantailor/archive/RELEASE_0_9_12_1.tar.gz";
+    sha256 = "1pjx3a6hs16az6rki59bchy3biy7jndjx8r125q01aq7lbf5npgg";
+  };
+
+  buildInputs = [ qt4 cmake libjpeg libtiff boost ];
+
+  enableParallelBuilding = true;
+
+  meta = {
+    homepage = "http://scantailor.org/";
+    description = "Interactive post-processing tool for scanned pages";
+
+    license = stdenv.lib.licenses.gpl3Plus;
+
+    maintainers = [ stdenv.lib.maintainers.viric ];
+    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/screencloud/default.nix b/nixpkgs/pkgs/applications/graphics/screencloud/default.nix
new file mode 100644
index 000000000000..11e37c4bf649
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/screencloud/default.nix
@@ -0,0 +1,77 @@
+{ stdenv, fetchFromGitHub, cmake, qt4, quazip, qt-mobility, qxt, pythonPackages }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  pname = "screencloud";
+  version = "1.2.0";
+
+  # API Keys. According to the author of the AUR package, these are only used
+  # for tracking usage.
+  consumerKey = "23e747012c68601f27ab69c6de129ed70552d55b6";
+  consumerSecret = "4701cb00c1bd357bbcae7c3d713dd216";
+  
+  src = fetchFromGitHub {
+    owner = "olav-st";
+    repo = "screencloud";
+    rev = "v${version}";
+    sha256 = "1s0dxa1sa37nvna5nfqdsp294810favj68qb7ghl78qna7zw0cim";
+  };
+
+  buildInputs = [ cmake qt4 quazip qt-mobility qxt pythonPackages.python pythonPackages.pycrypto ];
+
+  patchPhase = ''
+    # Required to make the configure script work. Normally, screencloud's
+    # CMakeLists file sets the install prefix to /opt by force. This is stupid
+    # and breaks nix, so we force it to install where we want. Please don't
+    # write CMakeLists files like this, as things like this are why we can't
+    # have nice things.
+    substituteInPlace "CMakeLists.txt" --replace "set(CMAKE_INSTALL_PREFIX \"/opt\")" ""
+  '';
+
+  enableParallelBuilding = true;
+
+  # We need to append /opt to our CMAKE_INSTALL_PREFIX, so we tell the Nix not
+  # to add the argument for us.
+  dontAddPrefix = true;
+
+  cmakeFlags = [
+    "-DQXT_QXTCORE_INCLUDE_DIR=${qxt}/include/QxtCore"
+    "-DQXT_QXTCORE_LIB_RELEASE=${qxt}/lib/libQxtCore.so"
+    "-DQXT_QXTGUI_INCLUDE_DIR=${qxt}/include/QxtGui"
+    "-DQXT_QXTGUI_LIB_RELEASE=${qxt}/lib/libQxtGui.so"
+    "-DCONSUMER_KEY_SCREENCLOUD=${consumerKey}"
+    "-DCONSUMER_SECRET_SCREENCLOUD=${consumerSecret}"
+  ];
+
+  setSourceRoot = ''
+    sourceRoot=$(echo */screencloud)
+  '';
+
+  preConfigure = ''
+    # This needs to be set in preConfigure instead of cmakeFlags in order to
+    # access the $prefix environment variable.
+    export cmakeFlags="-DCMAKE_INSTALL_PREFIX=$prefix/opt $cmakeFlags"
+  '';
+
+  # There are a number of issues with screencloud's installation. We need to add
+  # pycrypto to the PYTHONPATH so that the SFTP plugin will work properly; and
+  # we need to move the libPythonQt library into a folder where it can actually
+  # be found.
+  postInstall = ''
+    patchShebangs $prefix/opt/screencloud/screencloud.sh
+    substituteInPlace "$prefix/opt/screencloud/screencloud.sh" --replace "/opt" "$prefix/opt"
+    sed -i "2 i\export PYTHONPATH=$(toPythonPath ${pythonPackages.pycrypto}):\$PYTHONPATH" "$prefix/opt/screencloud/screencloud.sh"
+    mkdir $prefix/bin
+    mkdir $prefix/lib
+    ln -s $prefix/opt/screencloud/screencloud.sh $prefix/bin/screencloud
+    ln -s $prefix/opt/screencloud/libPythonQt.so $prefix/lib/libPythonQt.so
+  '';
+
+  meta = {
+    homepage = "https://screencloud.net/";
+    description = "Client for Screencloud, an easy to use screenshot sharing tool";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [ forkk ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/shotwell/default.nix b/nixpkgs/pkgs/applications/graphics/shotwell/default.nix
new file mode 100644
index 000000000000..b03d0a01dd6f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/shotwell/default.nix
@@ -0,0 +1,108 @@
+{ stdenv
+, fetchurl
+, meson
+, ninja
+, gtk3
+, libexif
+, libgphoto2
+, libwebp
+, libsoup
+, libxml2
+, vala
+, sqlite
+, webkitgtk
+, pkgconfig
+, gnome3
+, gst_all_1
+, libgudev
+, libraw
+, glib
+, json-glib
+, gcr
+, libgee
+, gexiv2
+, librest
+, gettext
+, desktop-file-utils
+, gdk-pixbuf
+, librsvg
+, wrapGAppsHook
+, gobject-introspection
+, itstool
+, libgdata
+, libchamplain
+, gsettings-desktop-schemas
+, python3
+}:
+
+# for dependencies see https://wiki.gnome.org/Apps/Shotwell/BuildingAndInstalling
+
+stdenv.mkDerivation rec {
+  pname = "shotwell";
+  version = "0.31.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "0mbgrad4d4snffw2z3rkhwqq1bkxdgy52pblx99vjadvpgspb034";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    vala
+    pkgconfig
+    itstool
+    gettext
+    desktop-file-utils
+    python3
+    wrapGAppsHook
+    gobject-introspection
+  ];
+
+  buildInputs = [
+    gtk3
+    libexif
+    libgphoto2
+    libwebp
+    libsoup
+    libxml2
+    sqlite
+    webkitgtk
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base
+    libgee
+    libgudev
+    gexiv2
+    gsettings-desktop-schemas
+    libraw
+    json-glib
+    glib
+    gdk-pixbuf
+    librsvg
+    librest
+    gcr
+    gnome3.adwaita-icon-theme
+    libgdata
+    libchamplain
+  ];
+
+  postPatch = ''
+    chmod +x build-aux/meson/postinstall.py # patchShebangs requires executable file
+    patchShebangs build-aux/meson/postinstall.py
+  '';
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      versionPolicy = "none";
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Popular photo organizer for the GNOME desktop";
+    homepage = "https://wiki.gnome.org/Apps/Shotwell";
+    license = licenses.lgpl21Plus;
+    maintainers = with maintainers; [domenkozar];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/shutter/default.nix b/nixpkgs/pkgs/applications/graphics/shutter/default.nix
new file mode 100644
index 000000000000..cddc99eebe29
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/shutter/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, perlPackages, makeWrapper, imagemagick, gdk-pixbuf, librsvg
+, hicolor-icon-theme, procps
+}:
+
+let
+  perlModules = with perlPackages;
+    [ Gnome2 Gnome2Canvas Gtk2 Glib Pango Gnome2VFS Gnome2Wnck Gtk2ImageView
+      Gtk2Unique FileBaseDir FileWhich FileCopyRecursive XMLSimple NetDBus XMLTwig
+      XMLParser HTTPMessage ProcSimple SortNaturally LocaleGettext
+      ProcProcessTable URI ImageExifTool Gtk2AppIndicator LWP JSON
+      PerlMagick WWWMechanize HTTPDate HTMLForm HTMLParser HTMLTagset JSONMaybeXS
+      commonsense HTTPCookies NetOAuth PathClass GooCanvas X11Protocol Cairo
+      EncodeLocale TryTiny TypesSerialiser LWPMediaTypes
+    ];
+in
+stdenv.mkDerivation {
+  name = "shutter-0.94.3";
+
+  src = fetchurl {
+    url = "https://launchpad.net/shutter/0.9x/0.94.3/+download/shutter-0.94.3.tar.gz";
+    sha256 = "01wv5k6zqfqa2rss461lpdpjxpfk4awzfdc6j2qk6bh4g4zgmgl5";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ perlPackages.perl procps gdk-pixbuf librsvg ] ++ perlModules;
+
+  installPhase = ''
+    mkdir -p "$out"
+    cp -a . "$out"
+    (cd "$out" && mv CHANGES README COPYING "$out/share/doc/shutter")
+
+    wrapProgram $out/bin/shutter \
+      --set PERL5LIB "${perlPackages.makePerlPath perlModules}" \
+      --prefix PATH : "${imagemagick.out}/bin" \
+      --suffix XDG_DATA_DIRS : "${hicolor-icon-theme}/share" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Screenshot and annotation tool";
+    homepage = "https://shutter-project.org/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.all;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/smartdeblur/default.nix b/nixpkgs/pkgs/applications/graphics/smartdeblur/default.nix
new file mode 100644
index 000000000000..0df161cd4731
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/smartdeblur/default.nix
@@ -0,0 +1,32 @@
+{ fetchurl, stdenv, cmake, qt4, fftw }:
+
+let
+  rev = "9895036d26";
+in
+stdenv.mkDerivation rec {
+  name = "smartdeblur-git-${rev}";
+
+  src = fetchurl {
+    url = "https://github.com/Y-Vladimir/SmartDeblur/tarball/${rev}";
+    name = "${name}.tar.gz";
+    sha256 = "126x9x1zhqdarjz9in0p1qhmqg3jwz7frizadjvx723g2ppi33s4";
+  };
+
+  preConfigure = ''
+    cd src
+  '';
+
+  enableParallelBuilding = true;
+
+  buildInputs = [ cmake qt4 fftw ];
+
+  cmakeFlags = [ "-DUSE_SYSTEM_FFTW=ON" ];
+
+  meta = {
+    homepage = "https://github.com/Y-Vladimir/SmartDeblur";
+    description = "Tool for restoring blurry and defocused images";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = with stdenv.lib.maintainers; [ ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/solvespace/default.nix b/nixpkgs/pkgs/applications/graphics/solvespace/default.nix
new file mode 100644
index 000000000000..bd084b4287dc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/solvespace/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchgit, cmake, pkgconfig, zlib, libpng, cairo, freetype
+, json_c, fontconfig, gtkmm3, pangomm, glew, libGLU, xorg, pcre
+, wrapGAppsHook
+}:
+stdenv.mkDerivation rec {
+  name = "solvespace-2.3-20190501";
+  rev = "e7b75f19c34c923780db776592b47152650d8f22";
+  src = fetchgit {
+    url = "https://github.com/solvespace/solvespace";
+    inherit rev;
+    sha256 = "07k4mbzxf0dmzwdhjx5nc09y7rn1schkaypsw9kz0l7ppylprpp2";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    pkgconfig cmake wrapGAppsHook
+  ];
+  buildInputs = [
+    zlib libpng cairo freetype
+    json_c fontconfig gtkmm3 pangomm glew libGLU
+    xorg.libpthreadstubs xorg.libXdmcp pcre
+  ];
+  enableParallelBuilding = true;
+
+  preConfigure = ''
+    patch CMakeLists.txt <<EOF
+    @@ -20,9 +20,9 @@
+     # NOTE TO PACKAGERS: The embedded git commit hash is critical for rapid bug triage when the builds
+     # can come from a variety of sources. If you are mirroring the sources or otherwise build when
+     # the .git directory is not present, please comment the following line:
+    -include(GetGitCommitHash)
+    +# include(GetGitCommitHash)
+     # and instead uncomment the following, adding the complete git hash of the checkout you are using:
+    -# set(GIT_COMMIT_HASH 0000000000000000000000000000000000000000)
+    +set(GIT_COMMIT_HASH $rev)
+    EOF
+  '';
+
+  postInstall = ''
+    substituteInPlace $out/share/applications/solvespace.desktop \
+      --replace /usr/bin/ $out/bin/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A parametric 3d CAD program";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.edef ];
+    platforms = platforms.linux;
+    homepage = "http://solvespace.com";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/swingsane/default.nix b/nixpkgs/pkgs/applications/graphics/swingsane/default.nix
new file mode 100644
index 000000000000..fc9132ec0b40
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/swingsane/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, fetchurl, makeDesktopItem, unzip, jre, runtimeShell }:
+
+stdenv.mkDerivation rec {
+  pname = "swingsane";
+  version = "0.2";
+
+  src = fetchurl {
+    sha256 = "15pgqgyw46yd2i367ax9940pfyvinyw2m8apmwhrn0ix5nywa7ni";
+    url = "mirror://sourceforge/swingsane/swingsane-${version}-bin.zip";
+  };
+
+  nativeBuildInputs = [ unzip ];
+
+  phases = [ "unpackPhase" "installPhase" ];
+
+  installPhase = let
+
+    execWrapper = ''
+      #!${runtimeShell}
+      exec ${jre}/bin/java -jar $out/share/java/swingsane/swingsane-${version}.jar "$@"
+    '';
+
+    desktopItem = makeDesktopItem {
+      name = "swingsane";
+      exec = "swingsane";
+      icon = "swingsane";
+      desktopName = "SwingSane";
+      genericName = "Scan from local or remote SANE servers";
+      comment = meta.description;
+      categories = "Office;Application;";
+    };
+
+  in ''
+    install -v -m 755    -d $out/share/java/swingsane/
+    install -v -m 644 *.jar $out/share/java/swingsane/
+
+    echo "${execWrapper}" > swingsane
+    install -v -D -m 755 swingsane $out/bin/swingsane
+
+    unzip -j swingsane-${version}.jar "com/swingsane/images/*.png"
+    install -v -D -m 644 swingsane_512x512.png $out/share/pixmaps/swingsane.png
+
+    cp -v -r ${desktopItem}/share/applications $out/share
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Java GUI for SANE scanner servers (saned)";
+    longDescription = ''
+      SwingSane is a powerful, cross platform, open source Java front-end for
+      using both local and remote Scanner Access Now Easy (SANE) servers.
+      The most powerful feature is its ability to query back-ends for scanner
+      specific options which can be set by the user as a scanner profile.
+      It also has support for authentication, mutlicast DNS discovery,
+      simultaneous scan jobs, image transformation jobs (deskew, binarize,
+      crop, etc), PDF and PNG output.
+    '';
+    homepage = "http://swingsane.com/";
+    license = licenses.asl20;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/sxiv/default.nix b/nixpkgs/pkgs/applications/graphics/sxiv/default.nix
new file mode 100644
index 000000000000..4cf0ae555789
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/sxiv/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, libXft, imlib2, giflib, libexif, conf ? null }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "sxiv";
+  version = "26";
+
+  src = fetchFromGitHub {
+    owner = "muennich";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0xaawlfdy7b277m38mgg4423kd7p1ffn0dq4hciqs6ivbb3q9c4f";
+  };
+
+  configFile = optionalString (conf!=null) (builtins.toFile "config.def.h" conf);
+  preBuild = optionalString (conf!=null) "cp ${configFile} config.def.h";
+
+  buildInputs = [ libXft imlib2 giflib libexif ];
+
+  makeFlags = [ "PREFIX=${placeholder "out"}" ];
+
+  postInstall = ''
+    install -Dt $out/share/applications sxiv.desktop
+  '';
+
+  meta = {
+    description = "Simple X Image Viewer";
+    homepage = "https://github.com/muennich/sxiv";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = with maintainers; [ jfrankenau ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/synfigstudio/default.nix b/nixpkgs/pkgs/applications/graphics/synfigstudio/default.nix
new file mode 100644
index 000000000000..e2ffd1602585
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/synfigstudio/default.nix
@@ -0,0 +1,127 @@
+{ stdenv, fetchFromGitHub, boost, cairo, gettext, glibmm, gtk3, gtkmm3
+, libjack2, libsigcxx, libxmlxx, makeWrapper, mlt-qt5, pango, pkgconfig
+, imagemagick, intltool, autoreconfHook, which, gnome3
+}:
+
+let
+  version = "1.0.2";
+
+  ETL = stdenv.mkDerivation {
+    name = "ETL-0.04.19";
+
+    src = fetchFromGitHub {
+       repo   = "synfig";
+       owner  = "synfig";
+       rev    = version;
+       sha256 = "09ldkvzczqvb1yvlibd62y56dkyprxlr0w3rk38rcs7jnrhj2cqc";
+    };
+
+    postUnpack = "sourceRoot=\${sourceRoot}/ETL/";
+
+    nativeBuildInputs = [ autoreconfHook ];
+  };
+
+  synfig = stdenv.mkDerivation {
+    pname = "synfig";
+    inherit version;
+
+    src = fetchFromGitHub {
+       repo   = "synfig";
+       owner  = "synfig";
+       rev    = version;
+       sha256 = "09ldkvzczqvb1yvlibd62y56dkyprxlr0w3rk38rcs7jnrhj2cqc";
+    };
+
+    postUnpack = "sourceRoot=\${sourceRoot}/synfig-core/";
+
+    configureFlags = [
+      "--with-boost=${boost.dev}"
+      "--with-boost-libdir=${boost.out}/lib"
+    ];
+
+    nativeBuildInputs = [ pkgconfig autoreconfHook gettext ];
+    buildInputs = [
+      ETL boost cairo glibmm mlt-qt5 libsigcxx libxmlxx pango
+    ];
+
+    meta.broken = true;
+  };
+in
+stdenv.mkDerivation {
+  pname = "synfigstudio";
+  inherit version;
+
+  src = fetchFromGitHub {
+     repo   = "synfig";
+     owner  = "synfig";
+     rev    = version;
+     sha256 = "09ldkvzczqvb1yvlibd62y56dkyprxlr0w3rk38rcs7jnrhj2cqc";
+  };
+
+  postUnpack = "sourceRoot=\${sourceRoot}/synfig-studio/";
+
+  postPatch = ''
+    for i in \
+      brushlib/brushlib.hpp \
+      gui/canvasview.cpp \
+      gui/compview.cpp \
+      gui/docks/dock_canvasspecific.cpp \
+      gui/docks/dock_children.cpp \
+      gui/docks/dock_curves.cpp \
+      gui/docks/dock_history.cpp \
+      gui/docks/dock_keyframes.cpp \
+      gui/docks/dock_layergroups.cpp \
+      gui/docks/dock_layers.cpp \
+      gui/docks/dock_metadata.cpp \
+      gui/docks/dock_params.cpp \
+      gui/docks/dock_timetrack.cpp \
+      gui/docks/dock_toolbox.cpp \
+      gui/docks/dockable.cpp \
+      gui/docks/dockdialog.cpp \
+      gui/docks/dockmanager.h \
+      gui/duck.h \
+      gui/duckmatic.cpp \
+      gui/duckmatic.h \
+      gui/instance.cpp \
+      gui/instance.h \
+      gui/states/state_stroke.h \
+      gui/states/state_zoom.cpp \
+      gui/widgets/widget_curves.cpp \
+      gui/workarea.cpp \
+      gui/workarearenderer/workarearenderer.h \
+      synfigapp/action_system.h \
+      synfigapp/canvasinterface.h \
+      synfigapp/instance.h \
+      synfigapp/main.h \
+      synfigapp/uimanager.h
+    do
+      substituteInPlace src/"$i" --replace '#include <sigc++/object.h>' '#include <sigc++/sigc++.h>'
+      substituteInPlace src/"$i" --replace '#include <sigc++/hide.h>' '#include <sigc++/adaptors/hide.h>'
+      substituteInPlace src/"$i" --replace '#include <sigc++/retype.h>' '#include <sigc++/adaptors/retype.h>'
+    done
+  '';
+
+  preConfigure = "./bootstrap.sh";
+
+  nativeBuildInputs = [ pkgconfig autoreconfHook gettext ];
+  buildInputs = [
+    ETL boost cairo glibmm gtk3 gtkmm3 imagemagick intltool
+    libjack2 libsigcxx libxmlxx makeWrapper mlt-qt5
+    synfig which gnome3.adwaita-icon-theme
+  ];
+
+  postInstall = ''
+    wrapProgram "$out/bin/synfigstudio" \
+      --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "A 2D animation program";
+    homepage = "http://www.synfig.org";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/tesseract/default.nix b/nixpkgs/pkgs/applications/graphics/tesseract/default.nix
new file mode 100644
index 000000000000..840c87de216b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/tesseract/default.nix
@@ -0,0 +1,18 @@
+{ callPackage, lowPrio }:
+
+let
+  base3 = callPackage ./tesseract3.nix {};
+  base4 = callPackage ./tesseract4.nix {};
+  languages = callPackage ./languages.nix {};
+in
+{
+  tesseract3 = callPackage ./wrapper.nix {
+    tesseractBase = base3;
+    languages = languages.v3;
+  };
+
+  tesseract4 = lowPrio (callPackage ./wrapper.nix {
+    tesseractBase = base4;
+    languages = languages.v4;
+  });
+}
diff --git a/nixpkgs/pkgs/applications/graphics/tesseract/fetch-language-hashes b/nixpkgs/pkgs/applications/graphics/tesseract/fetch-language-hashes
new file mode 100755
index 000000000000..c431f1d97c26
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/tesseract/fetch-language-hashes
@@ -0,0 +1,35 @@
+#!/usr/bin/env bash
+
+# Usage:
+#   ./fetch-language-hashes <tessdataRev> [<language code>…]
+#
+#   Fetches all languages if no language codes are given.
+#
+# Example:
+#   ./fetch-language-hashes 4.0.0 eng spa
+#
+#   Output:
+#     eng = "0iy0...";
+#     spa = "15kw...";
+
+set -e
+
+(( $# >= 1 )) || exit 1
+tessdataRev=$1
+shift
+
+if (( $# > 0 )); then
+    langCodes="$@"
+else
+    repoPage=$(curl -fs https://github.com/tesseract-ocr/tessdata/tree/$tessdataRev || {
+                   >&2 echo "Invalid tessdataRev: $tessdataRev"
+                   exit 1
+               })
+    langCodes=$(echo $(echo "$repoPage" | grep -ohP "(?<=/)[^/]+?(?=\.traineddata)" | sort))
+fi
+
+for lang in $langCodes; do
+    url=https://github.com/tesseract-ocr/tessdata/raw/$tessdataRev/$lang.traineddata
+    hash=$(nix-prefetch-url $url 2>/dev/null)
+    echo "$lang = \"$hash\";"
+done
diff --git a/nixpkgs/pkgs/applications/graphics/tesseract/languages.nix b/nixpkgs/pkgs/applications/graphics/tesseract/languages.nix
new file mode 100644
index 000000000000..08512a5cdd9d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/tesseract/languages.nix
@@ -0,0 +1,289 @@
+{ stdenv, lib, fetchurl, fetchFromGitHub }:
+
+rec {
+  makeLanguages = { tessdataRev, tessdata ? null, all ? null, languages ? {} }:
+    let
+      tessdataSrc = fetchFromGitHub {
+        owner = "tesseract-ocr";
+        repo = "tessdata";
+        rev = tessdataRev;
+        sha256 = tessdata;
+      };
+
+      languageFile = lang: sha256: fetchurl {
+        url = "https://github.com/tesseract-ocr/tessdata/raw/${tessdataRev}/${lang}.traineddata";
+        inherit sha256;
+      };
+    in
+      {
+        # Use a simple fixed-output derivation for all languages to increase nix eval performance
+        all = stdenv.mkDerivation {
+          name = "all";
+          buildCommand = ''
+            mkdir $out
+            cd ${tessdataSrc}
+            cp *.traineddata $out
+          '';
+          outputHashMode = "recursive";
+          outputHashAlgo = "sha256";
+          outputHash = all;
+        };
+      } // (lib.mapAttrs languageFile languages);
+
+  v3 = makeLanguages {
+    tessdataRev = "3cf1e2df1fe1d1da29295c9ef0983796c7958b7d";
+    tessdata = "1v4b63v5nzcxr2y3635r19l7lj5smjmc9vfk0wmxlryxncb4vpg7";
+    all = "0yj6h9n6h0kzzcqsn3z87vsi8pa60szp0yiayb0znd0v9my0dqhn";
+
+    # Run `./fetch-language-hashes <tessdataRev>` to generate these hashes
+    languages = {
+      afr = "15dsnzy4i9ai26ilm73gkfj4ck039raa88i6w443c4b1fnay2akf";
+      amh = "1wbcsdq3svxga3j1alk61xs72a9fhsfsyjxhp3cwxfaqfhrzg7h4";
+      ara = "0nk495gki6jbbnwcl2ybsx4nd02d6qykcjncq0d2g8pbgapqmj91";
+      asm = "0c3wq15yphq7x74s2sn3f90k6z1cf5j7ic62z0dynidrv99bddfh";
+      aze = "0pz073hxqkx1a1cshlgg5k11lj73s52sdxa7k3020drc314lhaxw";
+      aze_cyrl = "0djbfgx28ykcjsn2p0766qrmj256g7vhc7valc3ivsva8b906lxq";
+      bel = "04zqy8vik0fcakq6apfp8wjhkkhlg0yn9kmag1lk7s8fy9ax3ws2";
+      ben = "0q7812kn5xjm47hcgdcg911lhbgqr7hbvqckfxxm8qw0yjx2cy0m";
+      bod = "0rwq7539zzfs8xs0bf1535z1cwkm0yk1ni25f5gjav7nm6qpiaan";
+      bos = "1qr04dj7lx347gxpin5nfprbggmxq2mwx8kf3pcc3vb5x3pa57g4";
+      bul = "0cyyqgi3i4y9bfzwls0lwljzgd0r8ayfqb4bbvdh4qmbni9x42ya";
+      cat = "0kgw8f5pdw9lfbn6cfp5n1s0j8pj3418yx6rsbagzcf1gr36gbr9";
+      ceb = "1g1n4np4vhar7wfwx2km5k6kldb600rrl7npfbf75229rar068f1";
+      ces = "0zxkkyhpd74i6321nv86pkjb0k7p9cp6m174rbn42nl7jz6qxib0";
+      chi_sim = "0k250xr0gk9yh22yqxd0zpxdsrqfzs164kdv5n9rxx1g996yffij";
+      chi_tra = "03nxqpd546p0gwfj6pqzbdbv5zjpdddzlpa10xn4nvmks1mmckbp";
+      chr = "1k1sg3hap0kd5aa36ysvmhp7r3fynxf0f7lzz814h6p3g250zclb";
+      cym = "0d6wbf9cmrrzf66mhcckwdfy3xh2i38r0by9nk6isw9rl7bf7j07";
+      dan = "1s1yj56rpzmif3ir3qs4iab744cgpflk7y8812z2665bh61illpr";
+      dan_frak = "1bxi53ymib5g0139vfd2pflh7nl5925vqznq3sfgaqx7gdx630vi";
+      deu = "0fna7fqk1a8ivd7q2k38vx37qm3vbn183zh4z5zfqb4pgqmb8znb";
+      deu_frak = "1y4krkvarg7jxhcq49fgybg4phbn58y9c0z2bm8mnp28jkih1cnb";
+      dzo = "1fcz0imi7zxi99762pxfcm5iz2jcbqj3s742magka4ihrxnz07xm";
+      ell = "0r0f71jy4y29bg055qvvy93wchi3lh08zz0k9c8l7466b03yvq5v";
+      eng = "0vghah8kqcv0n5fnjb88w6siz156ysrc41fckw3f2y8c3sgmqlf0";
+      enm = "10y61xv3w1ypgqz5rgb22y5hh1i4zx03cwiqw21ifqvg4xdrln46";
+      epo = "1y5lh55mbcx33cm7qlf1dcah8ffycxmlcpzjzx9r6ij14fdd4964";
+      equ = "1nqrd0a9jqqh6byy8snfhad1hisrc92dcx44wsy7v4nf40j3mx1s";
+      est = "12ll8lq1hjcsq9hh93020w78r7f1rcxcwlvrjqw8j5p3k9jg5a4g";
+      eus = "034s9mp7lw1a4yvf2cmbbj2fbqbaq6xnjqh30yn0wq0c0jck96nw";
+      fas = "0m61p4byc0kzf75cdn6g18s8hcg9r8ifs34wr85lbsb65kil4ijx";
+      fin = "1wac333k0lcd5jwprzg99b10bq8sdc96b9d6275kg9imyqjwcc7q";
+      fra = "1ax7i0nw1lwkz4sbrvn4z0lcrcai77ymdpla7qk7yij6s4xb5bw6";
+      frk = "16nmr71p93724vk1x5mq4r8vxpwnm448p6dwqv8scg8asch1cidp";
+      frm = "00yz3hz7wcralq8wbx1ap4c6b37ac6vnz5bgmxmgdx0kqzibiddn";
+      gle = "1n8z8kmn5m628rlzgz5v0iw6h46aalflq5asa1wj5rygx1y2azpa";
+      glg = "0fdniayplc3iwmlmvhblarh1gm97dp8rqhhkb8b0clwfd9cj342z";
+      grc = "04r2193qcxqyab5998xn8bf7197wiccmjm7iakij8d0c7l61dnxb";
+      guj = "0dp8mlxmf0x9wb8dg0c508sdwz03icq94z8ji8jhwgdqgv8hw1al";
+      hat = "0793mmlxbb09c8103jhdvlczz647nyn4ykkgd3gwgavncmjh72v8";
+      heb = "16za9ff1i3ya6hz75l9v3v7j4039kscxxw21g3i2w5p9zn52hyag";
+      hin = "1vnn5wpc724kgib8jbx0kpnnp4al60ivqir72gnbyh6cpnflb6bf";
+      hrv = "15rqd6xiv2bdmalb5s6rxvw0yk6w9agn9fli3bvi703q6vpj2yn3";
+      hun = "19zzwdxwi3h3vdsgr271i1m87gfpdirk6b1ljw2j8qmfilp4sw56";
+      iku = "1v1yvc1194qycjgb4ihh5hpj6472nlbp66dii183514g2dh9x0db";
+      ind = "120d4b41wvsgcd1sgy2mp78i9hvi7w03a63078dz1yds0yqdwf1p";
+      isl = "003ngk8dfv6dglkq8pmi6jsglrfkc65js5ywh3vvkg7qfqf6qsxz";
+      ita = "1lxklk3zc3x3k8yfpp6ygyv7fndgs57dfasc97rh8782ds16wkjs";
+      ita_old = "188gby1y51pa1ycyc8y17d16hs5w27yl5ch7xzni98bdjkwbkl1z";
+      jav = "1fjyjznjchls5ifbnx2b9xagisgxvgj9lsf39rr9d87sbzdbbwbp";
+      jpn = "1wmayj8wh3pfwznjhalad2qzv38mhrzw2sxl71mycvzvpdy9ag1w";
+      kan = "0hak4953whw9vd9dzl0hq076kzb19kk45kmfxk03af4k6gb206vg";
+      kat = "16k0057cvvdc6snm5svhdv3cr7cw71g74yy8215njjbsi838imi3";
+      kat_old = "02gl755d38plyvzwfjqxvjgfqkbjs9rvzx33qfhm2zvmgbwrfrfh";
+      kaz = "0hc36w7zz5waycsk220v0r83sg991gd5f5r937mvz44viql80sgm";
+      khm = "1gb2nv5qdq5fz9w9xq4fj68p46b62sd1m986ra5qbnskxqizr12s";
+      kir = "1b1ing6qqi8qqfh4xpk76rp4gxp69wdjdl5m777ayx3v02d7nhh3";
+      kor = "1rldj6f8h1nn5wpx57b0ci7p0fnivnwzgaf0d3576xls26z2wcgv";
+      kur = "1cp2pfd6g662gvxi7ywkxfbfq1lwbis888bf1gg8ynzy342mx1ic";
+      lao = "03bdaxakmxpbbr9vsnbzzfksvm6js0l5i0ijwl71piqyxqjj1gxf";
+      lat = "1q7v7drnwpna9k2l79jbdlxiv1j617rqzjc9d48h3lfrma5z97sj";
+      lav = "0fxzyvw7n67rmw2irvlghkf1bii4w47200zv26p0v3a9dwvhc7sg";
+      lit = "0f00ggjjqrl94kwwjmjqwajyfprsml0br8vhn2gvn11gaxvm52hm";
+      mal = "1i83plhin3m6sq8p92vzlyng5z59gvvqypyh7rnmvdmm9rranx8a";
+      mar = "0ay7q53yl3709crvn5l9c9jx7hw6m5d3x2crmvnvczsh83ayfdik";
+      mkd = "1q1wadcr4j1dzssyyqz43qmizc6vfqkbivr6xi2p7p4h9rl11x73";
+      mlt = "1qp4v6habak1l7xrw322wglvjjndrfp4j7bj8d4npwbzk1sh4s0h";
+      msa = "048p6mkx9zr40s9s5vbi0gnizhvqwn0g8i1hf1l8db7igbax5xyj";
+      mya = "17nyr5bd42kzvid3421n3mwckd49vzrjhjahd8rnfsmbsy1x382l";
+      nep = "154375r32sdmvcnp1ckvgbp3wxvb2xiiypb8bxbsvrabrz4wzjqc";
+      nld = "1clwbky71zkz55zd3f8r9hj8fhpnbkply80p1js4fvs7x12r715x";
+      nor = "1ynvrz6s0vmlq1xkjd8k2w6bx8770x6v29qgx83d4nl17ngjd459";
+      ori = "0dsakc8gnwhs6z5kxc2wdkbn31gkkiqk5vriw0swghychp164aac";
+      osd = "1zq0dfliavglmix7zzrqdxz1w01rm1f1x1352bqn8xf4zivdbxcw";
+      pan = "1fwdpwkydfmr6drwgkqzn89z12r2rdm02a75vvdxhxg2a9yiwmbv";
+      pol = "155z870ygzws476kp7qpzi8jcjcv3jb5px8rbzhnag1fklqr48hx";
+      por = "1814cff2rffpzlg4hyyrjzpf5ps2i95rmpa4c8ikblbvrlcv97q8";
+      pus = "1iz5nn1zfvn1l9gb1jriwx991d2hwwc7x4k1nvzjlwpzscplx25b";
+      ron = "11lr80zhvnnngvwwk01z1d3prfpbh3qbwpl1nl5fp7h09d6n3wzl";
+      rus = "1d6a8lg4bmd3np16jds1py3qpkaq4ahnhwghd5r0159y0jpxq00q";
+      san = "169f4ajgwn99yfdfrlwfvdgvv1abal7fpdp31sknvq8l7w2sak3g";
+      sin = "1411g18r6f6j6f4n0sn7ajgs4gkplb892s6ak0hi9nyyxwv3r1gm";
+      slk = "0bxfbrg1nf6px0xzkh6ihdi71fmr1rxxs99qb191k7pm16x2lpds";
+      slk_frak = "0zyqnn1y5cyx1y7wzgw743k4584ljl0rhvk2q1ni6jnjx9ciwzqy";
+      slv = "1kjn9m9hbwp0m0p2v8c3skpzr6f8x42hz8x48zl22550a7hq8n1h";
+      spa = "1npgl8ylvfm60hd4214z8a3lriy1hckhijschrbjpzmwdfcqafgj";
+      spa_old = "0w4ivkv8flyn7bjlyjcrcrdnslkvrrfs7l33mvird1jhhkyqd8sx";
+      sqi = "15wzvh6qm3yx7yf0k5j7g1imsaqxvq7r2xh6a0xgmkqbyypbbkdf";
+      srp = "05blqriv30x02c80ds3x7zhw0y21nc6lkqlv5jwgwnjgw4yfpgrm";
+      srp_latn = "0ss8s3q60aq8sd2a3sbnzvp13qqarxnjw4hij8hd9ab5gsjw0nwr";
+      swa = "1pwwhx7ldq21cv06cchws8gvwsmkwn5sjcy9z3nk3nbp9qjsf44f";
+      swe = "0l10iyn2cr7ibgk0akmpg8725mpwpydawgv3s77izsw7y6xhfr1a";
+      syr = "08bxil13wyp5h4hvbxjcys7ypgqgg46rrp653m7gyv5q94ycjgb0";
+      tam = "1g155kyba2wjfgzgy48g6yd2csinwbfjdi5r7vw0wm3dh1z39dvz";
+      tel = "0fydrcb54b6mmqazb337x4s36i2a64sb4xm7y7g3nqqmk9afsipv";
+      tgk = "0f6j37friywj7y132fv0jm6aj4sx8f0b7brspj3pbjqqpi4v5ws0";
+      tgl = "0f1r0gicif57qhyw8xaa1sqgny720q3z5cpd5srrn9i6fihaz577";
+      tha = "1y2hw55jfpidk95y8qbsiczgg2r2khabac97s1y3gl0v93a44jna";
+      tir = "1y7iryhjr83ca4yh5jjz7qlnrx4kbrp0a0p650whjvk2gnv8m98h";
+      tur = "0xqnq99b2jb4v74bj95py6wmg14dm31zp5s3l48dmcv6zdgcxg2w";
+      uig = "1sdddr15zlb33kd1d7hzi5lfd15bfhqn105d7x6snfpqp7vq4bxv";
+      ukr = "0cdwjnfnnmzz7jdn49l96vqgaimclfxcxaw09cm63f5my382r2rg";
+      urd = "10xcn1zs2lfswp5yai0ckyg7js587qhr5cf7qib3i35qjbw7nc18";
+      uzb = "1jkkd5j6vsx5jv5gwprbfwg1vwh714prm8j446wzvp74brmk949l";
+      uzb_cyrl = "1kdia38rgm2qd3ly80a412jyagxxryr09h1nz2d0iw71bmfn4855";
+      vie = "1ja18jxxaw282y4jljxpjf1gj15il61vc2ykpfy22vn88wvydxff";
+      yid = "1jddd0g8mm5v00z5kb8rbpfs7ppzgq9kzm1xlhhvv960yfdbi6fd";
+    };
+  };
+
+  v4 = makeLanguages {
+    tessdataRev = "4.0.0";
+    tessdata = "1chw1ya5zf8aaj2ixr9x013x7vwwwjjmx6f2ag0d6i14lypygy28";
+    all = "0dqgkp369rcvq72yhgnzj1pj8yrv7kqzc7y6sqs7nzcq7l5qazlg";
+
+    # Run `./fetch-language-hashes <tessdataRev>` to generate these hashes
+    languages = {
+      afr = "1a9f8pnrspfmcq9gpjnxn2kkhjlsmh912bnpx671fjizxpmiri2y";
+      amh = "0m1vdyxjx57kmf2qra0p31k509y1cqn4pyckzw00i5n3wx11d2j0";
+      ara = "0nswl6n0s94g900j5k1gwzp7m140c0yd9a2fdb2lzhdvg1krf190";
+      asm = "025d9vrjcrwyd6cc6hrw1x8xqhicgrb9wpvhhmlw71ql04dadslf";
+      aze = "01shcs78a6xn3my8p3y42x1c9f5hzfn83w2n2nwpffbgz4y2nsgf";
+      aze_cyrl = "1sbd89i5r7rnkjh2in8j0plrxnfiill9jl8pr68iw77ghih6q1vg";
+      bel = "0dhyymsxcyzwal8474q7ag3m2akv0b92hkdz7rka5z1cxry1cn8c";
+      ben = "0a7q9414k3frn37x2qcglz722ysg2iivj6kqaaa0ik7z14ibc8v0";
+      bod = "0rh7x54nlh6ir6ldccj8hi7g8hwlp13r3fkljw8gndvhwmgfkkar";
+      bos = "1szym4n605hlx12a9vpz4jjs76jscajh22rgkqwbv4qdsl0gi3nd";
+      bre = "070f4c84iznblsw4jkwpzh9dss8nfb678160szm5r8dlv2yinrrk";
+      bul = "03bg2yw79lg8rl43y9288313jrfh0h69vl4s4cmlgbmnbx8pvxwj";
+      cat = "19xs691aj8yy2ff07c3gzm07zicd5ha0gmcjxjh9pknqf2gfy7qv";
+      ceb = "1896vn41hqc4anm6hjvrnn022i0p8pmhwsp5rv9w2cvr6738l79r";
+      ces = "0fh2g47msfr91285rnccxcmcshihm126sqy496s4vrr0vk8ix1nf";
+      chi_sim = "0qxkvbpm5l7gzsshnn72wfx473pprf5nmw8hd4i4x2qxnfddh1gw";
+      chi_sim_vert = "1f75pzvxbda82vxa2zb1z9b9f13sh81kzaw45vg5118ncsklj8w7";
+      chi_tra = "056vjws1fir1v5iv44pzykkxs5q1dbb2j8blhj47i53w1zf6g42m";
+      chi_tra_vert = "10c9cdycg1a5kwlgg60sh8yp07w2fl4whinpxfhlzrzs56allql4";
+      chr = "19qq8a6c27973djsc4xpcklis92r58x21fg4mz5azdyka5i1n46l";
+      cos = "0z9kx1hw8h5n00pcahxla808wya50wrkk8cz7x676pd93ibyrlyx";
+      cym = "13pk9cpf43xxqbz3blfz2av2yd1ma6ds6jbdiqw8anhhj7l9ch2d";
+      dan = "1jirmahxvyyswhhyzhinvcqaycz7m3ixchqrj3lgfcdi3anvabr2";
+      dan_frak = "17wcgdqxmbzn7qchnx5gsa05aj4wmhbwk43w173bl3wr6h5ylmh0";
+      deu = "194rqsg4nlycca9bg2fqf15xgcl110rxp182l7dbjfjhar4knsw9";
+      deu_frak = "12hhhp32f15c7fw2jp05mwim9ps14kmamhh6vmalvm7r2033vbm7";
+      div = "09mm9r5hxhsc4qpyg10ym9mc2kdpawx8zk0aiv1xpgd35rzpyz41";
+      dzo = "1zk7crgcazgqy5zmslp6iw4jws07nja31qdxx0rpzhn3c0bjgw1b";
+      ell = "1hhym18a9411953j47xjk47jx9ij9xi2qwlx05c93zl41528nsqg";
+      eng = "0iy07z182lwhqfa0q288ha691scpsry330aynaizn68wcmywk86s";
+      enm = "1dhr1qvil38bil43wk5ci645sbm3my2y9y7qlcbnwz2p4pflayvm";
+      epo = "1jig4db7050vww32vxsqyig3j1b0vgz9ipxbsw0jpkjia84k44n9";
+      equ = "02qwg6s1z7pynwm0p6dvpwi04ivfkr1s7qgssbla1dx7v0ih6rlg";
+      est = "1jxygahy6by7fbirbmjmd68k6560q1a3h5mvpzdx15h5fw0q58gl";
+      eus = "0cai7nm7si8680avrrls8bf9ski980rvsj560fh9y6n9rz7mh9mp";
+      fao = "1n3434jf18bzakbylzyg3jaw2ad4h376g56dsql32bgh2yvyww8a";
+      fas = "17wjkfka9725rz32clgqgk9msmbz4axs59vz30jmhhxyrkliafqb";
+      fil = "0p713k8g27df9z384ns111xqxii5kq20m8brflsmd3yckw1mibhz";
+      fin = "1wc3y9nnm7rb2c2c5fkj7cv7jb27jlkb2bh0g8kaz57h6imfmb2g";
+      fra = "04qrfvi6irlaahh1pgn5azyfhbhavm12yyybza8603alf8firh7a";
+      frk = "05cqmxxxjqdl5hjyzi6dpmixnjpd6f3jr6741yapdmnxvkzxkiyp";
+      frm = "0a86yy6hd0lvlbzvnzjmyapzc0rn7mnkdadqycd65bw1b714cvy2";
+      fry = "0i84r8g9hlkr9nlhypl4lq6ncrhbcpskqkdcijgk88c2fdknh57h";
+      gla = "17idyhb505waz9dnb8dsk54faw7y0xvvb12yw71k0skq3i90akar";
+      gle = "1q87h5zzcva54pg364d3hl6q9hdlydlyj1qmq8n5k7hqk11msxmk";
+      glg = "01xssz1rhpy3a0sm4i43nba61wc2srz6wv327vdw1kg8ijm0s0g4";
+      grc = "00x0s3smx4wg5h12y2b9al0j2jk1y3f0yy2x6f2qf7ps831drgyl";
+      guj = "028v4fgn0zi2044vk6j2rlqklc9i0kj22s52vhifmx1g02kz9154";
+      hat = "1bca516pr2cnyjlwycc7pr6gfmdjb8565hp06pw9nwpr20ry0hss";
+      heb = "1qfkffjh29b21frs0mv6llsrchixl5kjkpj1if7fq816g9mym9kx";
+      hin = "1rkfam5c6qil2590lfffzndhq3bncdgf4ij0cyjcglgyljgx0xnc";
+      hrv = "0da7b6mk0rwc9zlbqkycwjpddp3qpy07l643i00ia5a1zq35fmgp";
+      hun = "0w2s4mn9p74zqzmp9hh2017zgsh5v43k4lid4pv29f4b0y5gj9xi";
+      hye = "0ifzm875wlbjh4vkpmj1n6f14m8i174413l6pc6i44y4p5fpgxrf";
+      iku = "19arnv82xbxhbcy8pf9fv1sl5zc5707mk34nh7w46dlz86qkidmn";
+      ind = "1d421hizwni4m6sr4f3nqqpr1g744hzn0krk130m7x8mhzgamba5";
+      isl = "1hjjw8k2r9qa990ziq5wxr36kyf16mnmrqfmq5vbcjprka9h08pq";
+      ita = "1qyrvlf7pjxzyb29sc7aq3gq61bww14sijka44scxggfw7134l3r";
+      ita_old = "1pf8461jbj0vpyry0b54crmkf2bk9mh4klxvmj09jvf0aq2vm9s6";
+      jav = "18vvbyimj0y462amjmwvqa6h9n8l122j9v0w3hfp63hlxpfprm0m";
+      jpn = "16hma9w32vdh41ihymp894jza72b0d235hwriv18r78j5n86nhbg";
+      jpn_vert = "0yca09l9sbpfjgb2slnpb9q7qd7vz3a1wb6bkln30d3nl0d9r1rn";
+      kan = "0lcmx37rjfxkbhhbrld1ndmkwkm9w9b3pzxhas0cv5dqsx2f84jd";
+      kat = "1b164bgwa7bbvw4177h8fxfh0fbh4bycfl9pkaa184dpjpaiqpia";
+      kat_old = "1mgff7sh93hdp3wh0ckikdggrdgf0syp75s39pickpbkp9ic41ai";
+      kaz = "0h37y0kb5lwsp5zpl7bvxg3ryqldl5hxfnardliwgyqgnag951vi";
+      khm = "0m7x1fynr18sid2kjjw8xa9ika0a0fc6a6hvc7ihizi47893hdfb";
+      kir = "09kxwqpqf6kxjii07qlqsiii83zk12rszp88xnzzjp8rjsnk78s3";
+      kor = "0nsr43fwrp9876ia1fc0zcviv2n8hw16n0wfh158vhygwglvy84m";
+      kor_vert = "1wmvdznmikk9fq7wdffvn22scxmcl26vjh26jhicqwxpc7kg4bh8";
+      kur = "0gbsf3ny3n5mgb30v54bz3crgnimdpg19jn633pbpzryzg3xhd25";
+      kur_ara = "1sbj0cczhi9q119fbzpi0m6zr9kjp3k76bv9w8szkv1wc5y4fng6";
+      lao = "1gvxlg8bw3a4c9izg3c2a2yl7q6rsy7z9y64axdw9a04pz2ndbl5";
+      lat = "0b7an3q3xrf9c55bhiqqh7l45ga88l0kwvkp1akmlr98piach3vr";
+      lav = "0fqsmy47cygamddxyjfrdgkfa9bvmrvf4csvppnkdvfzy6iiv0c2";
+      lit = "0wjgbkwc3bf5khdqali7ylnhhs4xvpx19m3zx2y9s27v2wjbb6kv";
+      ltz = "02zdxbniiqfl87fzsiaaqgldqfsv15z5hja1xhxnqpl0nds7shfc";
+      mal = "0a41ifz8i6lj2ywxjkwvymxzxahkz2cjv4apbrawdj1h42bn7frd";
+      mar = "00swhlh9bckvmlxanfmlw5j4n9qqhggl84bsq0827bmijsqwnl44";
+      mkd = "1bqfiwxlzfpz4fs4z5ci2wbv01qhrcayk1inmk3dxq7dsywx1ajg";
+      mlt = "1rmmga2aw88hr7q7cfr5cvhnsgnf1mi069d5k7z66zp4vzbl4zyz";
+      mon = "1jksvcavn9plsmjdmhg40mwq5rlvrd1b9gvghdjg7zkf6qqqynlh";
+      mri = "0jlfawx20s5clsnk82ndy3v2zidh4cfh4acrh8nindk21xmiwh5i";
+      msa = "0m7zs8anaa3l4z5f3xvbhs4syp41dp4all2yfpi1plyr0hy784an";
+      mya = "0hljm5haadlr4k5rhw4mvhkygcnrr709rvl7amz7av3nskmi8mb1";
+      nep = "1dhy0m2h6xfgwibf92iwxsn926dmrhfvkg9rafkdaqcr4pq6w563";
+      nld = "0bspf5bv1s7qzm6k4aqbpq91zvk4kxxhx5zv08w91xfsa1zpdxmi";
+      nor = "08majhc9m0fjvac50yq52ia2af9kscclimwkv403klnj4kgf8ndq";
+      oci = "1mzrw9gsdjrd1xj3zv7l5gzgjq5jrygxf8cfkz20d9lls0wj1xdv";
+      ori = "1sh42mjzb1hv6l6lljp3wifjmz7wrv818f9f16m8qjikwqxm0s78";
+      osd = "03mvfk1q1xp1klpf4bwna903rnp51bkqr3gl5hvxybvrc3l2m7z1";
+      pan = "0165kr94p6x5yxzs4p8sfppvg9cywp65ps0xaym5rqz9iashz32h";
+      pol = "0g0b71ms6ddgykmkna4mlavgzgmh9vj6s62fi8l4ja93nfpr37hp";
+      por = "132jbhzmcsq8skanm15bw2niyx9xpbrqr411wn7w9r5i3cvnlv01";
+      pus = "0iiglnkn478al11avigsav625pn7ifscycnxpj6fg8835vjww3xr";
+      que = "01vkmfi9idjwskv5pllmrxpil0v5h7f7rzv5viclxrzkmbvrz9b5";
+      ron = "0ag6vs0cn3sryavs1mfrallgdgi4h28114g7m61rhlhq0z484g0m";
+      rus = "1hippm3w5d73sh50r136x0xff2p6x128ry2x4fywf6xdpv1f46v8";
+      san = "1qlpqkr5c5wqcf1bvlipy72advqnvd4wm61vghmrj2sda8mx87sx";
+      sin = "097d2s4ma0zsq0ab5qs1ylgl9l5phw91fnpsvb7vjmz2mw3ic964";
+      slk = "0c97pp5iffhdzyma605x8q3rx1qq9pq2h6cai1kppaj92rz3ji9k";
+      slk_frak = "16ivsam1g18zlpw6pgidvzwb7h8rvw1s10nigs6yfwir8hjxsgki";
+      slv = "0644jlm55p0dg4zchgrashmbv36zb4x649ckmf2jkbss8bzx7wsf";
+      snd = "1i2mfi4414l3v9nznjy7959y2jcr8ymvf6w8zpyrw6nad4d1aak7";
+      spa = "15kwvr7cpcnlxm1ja1yyc022dmsd04gmk7h1p0df12aicsscn3qb";
+      spa_old = "1jq80c4mi3rmwnfhb3mbaaq0ci101mgbibkji9ala4l5dkcwjra3";
+      sqi = "19cvvixhz9906p4c9i2grpr386rbp5alp4fp14xm9nd81bmq4701";
+      srp = "1jd25n13h6vxsa3gzbj6q6mdh02rjl4qrd1bffr5psp33asqvw0l";
+      srp_latn = "1k7577mn3z0bm5ma9d8l14sn5wpvw50hq1nxwbc36yn3a5b3mhiz";
+      sun = "0lvlaw3jfvr7b5v09669kq8mm19jdsk9g5h09jsa2gr6fvsq11pa";
+      swa = "0qy9qc5pa1dzzqrh1z40gk845z1r4d2smywnzydknbb3n240lhz0";
+      swe = "1y56r7bgzw0pqkdylbah07r1f0v03sblkggiql8x5200rhaxvqi4";
+      syr = "1vfj5fsiv170jghryrxwyz0i9mdsaki1kglxrklkb2caal9kwy38";
+      tam = "0rhhdbnp0a2hpg00vpc0xyxcl2w36i1kn63mrvwx1f9q7m3y1fmf";
+      tat = "0a74rp8pyp4yivv2xcy2m8xgwch8scr3wmk1fzniwzf43fsrqp76";
+      tel = "0gcq8hxhxvilyh7x7kiikq07hllqysc8sfyr88gvpj4xi092h2bx";
+      tgk = "1458gk0k6gk49n8lr6fj7l7cwkhxn0lrhybzq10zl1ly7yzjhf67";
+      tgl = "12yscwckdy3l21mvsrj1021gxw2isjrg369r08rsf7lh96wn4wkn";
+      tha = "01f0j7gsc5slxaaql1gqbhk4wlwaxc29dlmfxwjzikxc46gjl0w8";
+      tir = "1q6w48b1jchv55713pq20inzjjdymh32fw8wxfaj1qi7bjqfb9fk";
+      ton = "06g60ga8rys8jaimqrvd4svh40qs1nz4bszdnf2hdv05ibryibdq";
+      tur = "0g9g1wvibp61qbriy8ys948yfkl88xk9g8f93bnq8w8dx029b6s8";
+      uig = "09sajx21lw3a3ph62dyqr10pjaq2mij10sdhkhvvjiydk34dn548";
+      ukr = "14q8ls8gkrg7c9pc6qzm6yf5ady3i3303vs1hz4d2idcl6yry334";
+      urd = "15vszhqraxqdcng1069p6i4xq3ck3904q207nkbap6dfpcpjig40";
+      uzb = "03hyw0vavmjirqs4wkd5r85g91w2avsyl14z624fhm3gc66pqg7n";
+      uzb_cyrl = "1433lrrp2lfgb1k0a4sc20b35b2jcl8f1z92vm2936y7w04xpaq7";
+      vie = "02k40d3wji74d1jgvkr3zrn9gpzlmp0lqhrrdmc48r2sgvnrnk8n";
+      yid = "0xnbvi04xv1qapqg72wa3bjwbw51pkdnyncjpjp37vn6dzh04l0z";
+      yor = "07w3aci52ng6i6nyp97q5zb2dqlj08w6im90y1h691qah1x44zlv";
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/tesseract/tesseract3.nix b/nixpkgs/pkgs/applications/graphics/tesseract/tesseract3.nix
new file mode 100644
index 000000000000..dc9d4ac2d595
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/tesseract/tesseract3.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig
+, leptonica, libpng, libtiff, icu, pango, opencl-headers }:
+
+stdenv.mkDerivation rec {
+  pname = "tesseract";
+  version = "3.05.00";
+
+  src = fetchFromGitHub {
+    owner = "tesseract-ocr";
+    repo = "tesseract";
+    rev = version;
+    sha256 = "11wrpcfl118wxsv2c3w2scznwb48c4547qml42s2bpdz079g8y30";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ pkgconfig autoreconfHook ];
+  buildInputs = [ leptonica libpng libtiff icu pango opencl-headers ];
+
+  LIBLEPT_HEADERSDIR = "${leptonica}/include";
+
+  meta = {
+    description = "OCR engine";
+    homepage = "https://github.com/tesseract-ocr/tesseract";
+    license = stdenv.lib.licenses.asl20;
+    maintainers = with stdenv.lib.maintainers; [ viric earvstedt ];
+    platforms = with stdenv.lib.platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/tesseract/tesseract4.nix b/nixpkgs/pkgs/applications/graphics/tesseract/tesseract4.nix
new file mode 100644
index 000000000000..d7c3cacc1f96
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/tesseract/tesseract4.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, autoconf-archive, pkgconfig
+, leptonica, libpng, libtiff, icu, pango, opencl-headers }:
+
+stdenv.mkDerivation rec {
+  pname = "tesseract";
+  version = "4.1.1";
+
+  src = fetchFromGitHub {
+    owner = "tesseract-ocr";
+    repo = "tesseract";
+    rev = version;
+    sha256 = "1ca27zbjpx35nxh9fha410z3jskwyj06i5hqiqdc08s2d7kdivwn";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ pkgconfig autoreconfHook autoconf-archive ];
+  buildInputs = [ leptonica libpng libtiff icu pango opencl-headers ];
+
+  meta = {
+    description = "OCR engine";
+    homepage = "https://github.com/tesseract-ocr/tesseract";
+    license = stdenv.lib.licenses.asl20;
+    maintainers = with stdenv.lib.maintainers; [ viric earvstedt ];
+    platforms = with stdenv.lib.platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/tesseract/wrapper.nix b/nixpkgs/pkgs/applications/graphics/tesseract/wrapper.nix
new file mode 100644
index 000000000000..365d68a9ee76
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/tesseract/wrapper.nix
@@ -0,0 +1,58 @@
+{ stdenv, makeWrapper, tesseractBase, languages
+
+# A list of languages like [ "eng" "spa" … ] or `null` for all available languages
+, enableLanguages ? null
+
+# A list of files or a directory containing files
+, tessdata ? (if enableLanguages == null then languages.all
+              else map (lang: languages.${lang}) enableLanguages)
+
+# This argument is obsolete
+, enableLanguagesHash ? null
+}:
+
+let
+  passthru = { inherit tesseractBase languages tessdata; };
+
+  tesseractWithData = tesseractBase.overrideAttrs (_: {
+    inherit tesseractBase tessdata;
+
+    buildInputs = [ makeWrapper ];
+
+    buildCommand = ''
+      makeWrapper {$tesseractBase,$out}/bin/tesseract --set-default TESSDATA_PREFIX $out/share/tessdata
+
+      # Recursively link include, share
+      cp -rs --no-preserve=mode $tesseractBase/{include,share} $out
+
+      cp -r --no-preserve=mode $tesseractBase/lib $out
+      # Fixup the store paths in lib so that the tessdata from this derivation is used.
+      if (( ''${#tesseractBase} != ''${#out} )); then
+        echo "Can't replace store paths due to differing lengths"
+        exit 1
+      fi
+      find $out/lib -type f -exec sed -i "s|$tesseractBase|$out|g" {} \;
+
+      if [[ -d "$tessdata" ]]; then
+        ln -s $tessdata/* $out/share/tessdata
+      else
+        for lang in $tessdata; do
+          ln -s $lang $out/share/tessdata/''${lang#/nix/store*-}
+        done
+      fi
+
+      if [[ ! -e $out/share/tessdata/eng.traineddata ]]; then
+         # This is a bug in Tesseract's internal tessdata discovery mechanism
+         echo "eng.traineddata must be present in tessdata for Tesseract to work"
+         exit 1
+      fi
+    '';
+  });
+
+  tesseract = (if enableLanguages == [] then tesseractBase else tesseractWithData) // passthru;
+in
+  if enableLanguagesHash == null then
+    tesseract
+  else
+    stdenv.lib.warn "Argument `enableLanguagesHash` is obsolete and can be removed."
+    tesseract
diff --git a/nixpkgs/pkgs/applications/graphics/tev/default.nix b/nixpkgs/pkgs/applications/graphics/tev/default.nix
new file mode 100644
index 000000000000..2f47ebab66e4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/tev/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchFromGitHub
+, cmake, wrapGAppsHook
+, libX11, libzip, glfw, libpng, xorg, gnome3
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tev";
+  version = "1.16";
+
+  src = fetchFromGitHub {
+    owner = "Tom94";
+    repo = pname;
+    rev = "v${version}";
+    fetchSubmodules = true;
+    sha256 = "0fn5j9klzrjvz3bq8p9yp9nqikn2fr7bp98c1sxwpwwaadkqy9xf";
+  };
+
+  nativeBuildInputs = [ cmake wrapGAppsHook ];
+  buildInputs = [ libX11 libzip glfw libpng ]
+    ++ (with xorg; [ libXrandr libXinerama libXcursor libXi libXxf86vm ]);
+
+  dontWrapGApps = true; # We also need zenity (see below)
+
+  postPatch = ''
+    substituteInPlace CMakeLists.txt \
+      --replace "/usr/" "''${out}/"
+  '';
+
+  postInstall = ''
+    wrapProgram $out/bin/tev \
+      "''${gappsWrapperArgs[@]}" \
+      --prefix PATH ":" "${gnome3.zenity}/bin"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A high dynamic range (HDR) image comparison tool";
+    longDescription = ''
+      A high dynamic range (HDR) image comparison tool for graphics people. tev
+      allows viewing images through various tonemapping operators and inspecting
+      the values of individual pixels. Often, it is important to find exact
+      differences between pairs of images. For this purpose, tev allows rapidly
+      switching between opened images and visualizing various error metrics (L1,
+      L2, and relative versions thereof). To avoid clutter, opened images and
+      their layers can be filtered by keywords.
+      While the predominantly supported file format is OpenEXR certain other
+      types of images can also be loaded.
+    '';
+    inherit (src.meta) homepage;
+    changelog = "https://github.com/Tom94/tev/releases/tag/v${version}";
+    license = licenses.bsd3;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/timelapse-deflicker/default.nix b/nixpkgs/pkgs/applications/graphics/timelapse-deflicker/default.nix
new file mode 100644
index 000000000000..ac382bb63278
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/timelapse-deflicker/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, makeWrapper, perl, perlPackages }:
+
+stdenv.mkDerivation rec {
+  pname = "timelapse-deflicker";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "cyberang3l";
+    repo = "timelapse-deflicker";
+    rev = "v${version}";
+    sha256 = "0bbfnrdycrpyz7rqrql5ib9qszny7z5xpqp65c1mxqd2876gv960";
+  };
+
+  installPhase = ''
+    install -m755 -D timelapse-deflicker.pl $out/bin/timelapse-deflicker
+    wrapProgram $out/bin/timelapse-deflicker --set PERL5LIB $PERL5LIB
+  '';
+
+  buildInputs = with perlPackages; [
+    makeWrapper perl
+    PerlMagick TermProgressBar ImageExifTool
+    FileType ClassMethodMaker
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Simple script to deflicker images taken for timelapses";
+    homepage = "https://github.com/cyberang3l/timelapse-deflicker";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ valeriangalliat ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/ufraw/default.nix b/nixpkgs/pkgs/applications/graphics/ufraw/default.nix
new file mode 100644
index 000000000000..9e05a41e8483
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/ufraw/default.nix
@@ -0,0 +1,86 @@
+{ stdenv
+, fetchFromGitHub
+
+, autoconf
+, automake
+, autoreconfHook
+, bzip2
+, cfitsio
+, exiv2
+, gettext
+, gimp ? null
+, gtk2
+, gtkimageview
+, lcms2
+, lensfun
+, libjpeg
+, libtiff
+, perl
+, pkgconfig
+, zlib
+
+, withGimpPlugin ? true
+}:
+
+assert withGimpPlugin -> gimp != null;
+
+stdenv.mkDerivation {
+  pname = "ufraw";
+  version = "unstable-2019-06-12";
+
+  # The original ufraw repo is unmaintained and broken;
+  # this is a fork that collects patches
+  src = fetchFromGitHub {
+    owner = "sergiomb2";
+    repo = "ufraw";
+    rev = "c65b4237dcb430fb274e4778afaf5df9a18e04e6";
+    sha256 = "02icn67bsinvgliy62qa6v7gmwgp2sh15jvm8iiz3c7g1h74f0b7";
+  };
+
+  outputs = [ "out" ] ++ stdenv.lib.optional withGimpPlugin "gimpPlugin";
+
+  nativeBuildInputs = [ autoconf automake autoreconfHook gettext perl pkgconfig ];
+
+  buildInputs = [
+    bzip2
+    cfitsio
+    exiv2
+    gtk2
+    gtkimageview
+    lcms2
+    lensfun
+    libjpeg
+    libtiff
+    zlib
+  ] ++ stdenv.lib.optional withGimpPlugin gimp;
+
+  configureFlags = [
+    "--enable-contrast"
+    "--enable-dst-correction"
+  ] ++ stdenv.lib.optional withGimpPlugin "--with-gimp";
+
+  postInstall = stdenv.lib.optionalString withGimpPlugin ''
+    moveToOutput "lib/gimp" "$gimpPlugin"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/sergiomb2/ufraw";
+
+    description = "Utility to read and manipulate raw images from digital cameras";
+
+    longDescription =
+      '' The Unidentified Flying Raw (UFRaw) is a utility to read and
+         manipulate raw images from digital cameras.  It can be used on its
+         own or as a Gimp plug-in.  It reads raw images using Dave Coffin's
+         raw conversion utility - DCRaw.  UFRaw supports color management
+         workflow based on Little CMS, allowing the user to apply ICC color
+         profiles.  For Nikon users UFRaw has the advantage that it can read
+         the camera's tone curves.
+      '';
+
+    license = licenses.gpl2Plus;
+
+    maintainers = with maintainers; [ gloaming ];
+    platforms   = with platforms; all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/unigine-valley/default.nix b/nixpkgs/pkgs/applications/graphics/unigine-valley/default.nix
new file mode 100644
index 000000000000..14ff5f9a519f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/unigine-valley/default.nix
@@ -0,0 +1,115 @@
+{ stdenv, fetchurl
+
+# Build-time dependencies
+, makeWrapper
+, file
+
+# Runtime dependencies
+, fontconfig
+, freetype
+, libX11
+, libXext
+, libXinerama
+, libXrandr
+, libXrender
+, libGL
+, openal}:
+
+let
+  version = "1.0";
+
+  arch = if stdenv.hostPlatform.system == "x86_64-linux" then
+    "x64"
+  else if stdenv.hostPlatform.system == "i686-linux" then
+    "x86"
+  else
+    throw "Unsupported platform ${stdenv.hostPlatform.system}";
+
+in
+  stdenv.mkDerivation rec {
+    pname = "unigine-valley";
+    inherit version;
+
+    src = fetchurl {
+      url = "http://assets.unigine.com/d/Unigine_Valley-${version}.run";
+      sha256 = "5f0c8bd2431118551182babbf5f1c20fb14e7a40789697240dcaf546443660f4";
+    };
+
+    sourceRoot = "Unigine_Valley-${version}";
+    instPath = "lib/unigine/valley";
+
+    buildInputs = [file makeWrapper];
+
+    libPath = stdenv.lib.makeLibraryPath [
+      stdenv.cc.cc  # libstdc++.so.6
+      fontconfig
+      freetype
+      libX11
+      libXext
+      libXinerama
+      libXrandr
+      libXrender
+      libGL
+      openal
+    ];
+
+    unpackPhase = ''
+      runHook preUnpack
+
+      cp $src extractor.run
+      chmod +x extractor.run
+      ./extractor.run --target $sourceRoot
+
+      runHook postUnpack
+    '';
+
+    patchPhase = ''
+      runHook prePatch
+
+      # Patch ELF files.
+      elfs=$(find bin -type f | xargs file | grep ELF | cut -d ':' -f 1)
+      for elf in $elfs; do
+        patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux-x86-64.so.2 $elf || true
+      done
+
+      runHook postPatch
+    '';
+
+    installPhase = ''
+      runHook preInstall
+
+      instdir=$out/${instPath}
+
+      # Install executables and libraries
+      mkdir -p $instdir/bin
+      install -m 0755 bin/browser_${arch} $instdir/bin
+      install -m 0755 bin/libApp{Stereo,Surround,Wall}_${arch}.so $instdir/bin
+      install -m 0755 bin/libGPUMonitor_${arch}.so $instdir/bin
+      install -m 0755 bin/libQt{Core,Gui,Network,WebKit,Xml}Unigine_${arch}.so.4 $instdir/bin
+      install -m 0755 bin/libUnigine_${arch}.so $instdir/bin
+      install -m 0755 bin/valley_${arch} $instdir/bin
+      install -m 0755 valley $instdir
+
+      # Install other files
+      cp -R data documentation $instdir
+
+      # Install and wrap executable
+      mkdir -p $out/bin
+      install -m 0755 valley $out/bin/valley
+      wrapProgram $out/bin/valley \
+        --run "cd $instdir" \
+        --prefix LD_LIBRARY_PATH : /run/opengl-driver/lib:$instdir/bin:$libPath
+
+      runHook postInstall
+    '';
+
+    stripDebugList = ["${instPath}/bin"];
+
+    meta = {
+      description = "The Unigine Valley GPU benchmarking tool";
+      homepage = "http://unigine.com/products/benchmarks/valley/";
+      license = stdenv.lib.licenses.unfree; # see also: $out/$instPath/documentation/License.pdf
+      maintainers = [ stdenv.lib.maintainers.kierdavis ];
+      platforms = ["x86_64-linux" "i686-linux"];
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/graphics/viewnior/default.nix b/nixpkgs/pkgs/applications/graphics/viewnior/default.nix
new file mode 100644
index 000000000000..41463a7627ae
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/viewnior/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, gtk2, libpng, exiv2, lcms
+, intltool, gettext, shared-mime-info, glib, gdk-pixbuf, perl}:
+
+stdenv.mkDerivation rec {
+  pname = "viewnior";
+  version = "1.6";
+
+  src = fetchFromGitHub {
+    owner = "xsisqox";
+    repo = "Viewnior";
+    rev = "${pname}-${version}";
+    sha256 = "06ppv3r85l3id4ij6h4y5fgm3nib2587fdrdv9fccyi75zk7fs0p";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs =
+    [ pkgconfig gtk2 libpng exiv2 lcms intltool gettext
+      shared-mime-info glib gdk-pixbuf perl
+    ];
+
+  meta = {
+    description = "Fast and simple image viewer";
+    longDescription =
+      '' Viewnior is insipred by big projects like Eye of Gnome, because of it's
+         usability and richness,and by GPicView, because of it's lightweight design and
+         minimal interface. So here comes Viewnior - small and light, with no compromise
+         with the quality of it's functions. The program is made with better integration
+         in mind (follows Gnome HIG2).
+      '';
+
+    license = stdenv.lib.licenses.gpl3;
+
+    homepage = "http://siyanpanayotov.com/project/viewnior/";
+
+    maintainers = [ stdenv.lib.maintainers.smironov ];
+
+    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/vimiv/default.nix b/nixpkgs/pkgs/applications/graphics/vimiv/default.nix
new file mode 100644
index 000000000000..b5e9d0b8cf2d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/vimiv/default.nix
@@ -0,0 +1,73 @@
+{ lib, python3Packages, fetchFromGitHub, imagemagick, librsvg, gtk3, jhead
+, gnome3
+
+# Test requirements
+, dbus, xvfb_run, xdotool
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "vimiv";
+  version = "0.7.3";
+
+  src = fetchFromGitHub {
+    owner = "karlch";
+    repo = "vimiv";
+    rev = "v${version}";
+    sha256 = "18dn81n8hcrqhrqfida34qz7a0ar9rz2rrmzsvyp54zc6nyvv1cn";
+  };
+
+  testimages = fetchFromGitHub {
+    owner = "karlch";
+    repo = "vimiv";
+    rev = "6f4d1372b27f2065c56eafdb521d230d9bb8f4e2";
+    sha256 = "0a3aybzpms0381dz9japhm4c7j5klhmw91prcac6zaww6x34nmxb";
+  };
+
+  postPatch = ''
+    patchShebangs scripts/install_icons.sh
+    sed -i -e 's,/usr,,g' -e '/setup\.py/d' Makefile scripts/install_icons.sh
+
+    sed -i \
+      -e 's,/etc/vimiv/\(vimivrc\|keys\.conf\),'"$out"'&,g' \
+      man/* vimiv/parser.py
+
+    sed -i \
+      -e 's!"mogrify"!"${imagemagick}/bin/mogrify"!g' \
+      -e '/cmd *=/s!"jhead"!"${jhead}/bin/jhead"!g' \
+      vimiv/imageactions.py
+  '';
+
+  checkInputs = [ python3Packages.nose dbus.daemon xvfb_run xdotool ];
+  buildInputs = [ gnome3.adwaita-icon-theme librsvg ];
+  propagatedBuildInputs = with python3Packages; [ pillow pygobject3 gtk3 ];
+
+  makeWrapperArgs = [
+    "--prefix GI_TYPELIB_PATH : \"$GI_TYPELIB_PATH\""
+    "--suffix XDG_DATA_DIRS : \"$XDG_ICON_DIRS:$out/share\""
+    "--set GDK_PIXBUF_MODULE_FILE \"$GDK_PIXBUF_MODULE_FILE\""
+  ];
+
+  postCheck = ''
+    # Some tests assume that the directory only contains one vimiv directory
+    rm -rf vimiv.egg-info vimiv.desktop
+
+    # Re-use the wrapper args from the main program
+    makeWrapper "$SHELL" run-tests $makeWrapperArgs
+
+    cp -Rd --no-preserve=mode "$testimages/testimages" vimiv/testimages
+    HOME="$(mktemp -d)" PATH="$out/bin:$PATH" \
+      xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
+      --config-file=${dbus.daemon}/share/dbus-1/session.conf \
+      ./run-tests -c 'python tests/main_test.py && nosetests -vx'
+  '';
+
+  postInstall = "make DESTDIR=\"$out\" install";
+
+  meta = {
+    homepage = "https://github.com/karlch/vimiv";
+    description = "An image viewer with Vim-like keybindings";
+    license = lib.licenses.mit;
+    platforms = lib.platforms.linux;
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/wings/default.nix b/nixpkgs/pkgs/applications/graphics/wings/default.nix
new file mode 100644
index 000000000000..19c30f3ecc4d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/wings/default.nix
@@ -0,0 +1,45 @@
+{ fetchurl, stdenv, erlang, cl, libGL, libGLU, runtimeShell }:
+
+stdenv.mkDerivation rec {
+  name = "wings-2.2.4";
+  src = fetchurl {
+    url = "mirror://sourceforge/wings/${name}.tar.bz2";
+    sha256 = "1xcmifs4vq2810pqqvsjsm8z3lz24ys4c05xkh82nyppip2s89a3";
+  };
+
+  ERL_LIBS = "${cl}/lib/erlang/lib";
+
+  patchPhase = ''
+    sed -i 's,-Werror ,,' e3d/Makefile
+    sed -i 's,../../wings/,../,' icons/Makefile
+    find plugins_src -mindepth 2 -type f -name "*.[eh]rl" -exec sed -i 's,wings/src/,../../src/,' {} \;
+    find plugins_src -mindepth 2 -type f -name "*.[eh]rl" -exec sed -i 's,wings/e3d/,../../e3d/,' {} \;
+    find plugins_src -mindepth 2 -type f -name "*.[eh]rl" -exec sed -i 's,wings/intl_tools/,../../intl_tools/,' {} \;
+    find . -type f -name "*.[eh]rl" -exec sed -i 's,wings/src/,../src/,' {} \;
+    find . -type f -name "*.[eh]rl" -exec sed -i 's,wings/e3d/,../e3d/,' {} \;
+    find . -type f -name "*.[eh]rl" -exec sed -i 's,wings/intl_tools/,../intl_tools/,' {} \;
+  '';
+
+  buildInputs = [ erlang cl libGL libGLU ];
+
+  # I did not test the *cl* part. I added the -pa just by imitation.
+  installPhase = ''
+    mkdir -p $out/bin $out/lib/${name}/ebin
+    cp ebin/* $out/lib/${name}/ebin
+    cp -R textures shaders plugins $out/lib/$name
+    cat << EOF > $out/bin/wings
+    #!${runtimeShell}
+    ${erlang}/bin/erl \
+      -pa $out/lib/${name}/ebin -run wings_start start_halt "$@"
+    EOF
+    chmod +x $out/bin/wings
+  '';
+
+  meta = {
+    homepage = "http://www.wings3d.com/";
+    description = "Subdivision modeler inspired by Nendo and Mirai from Izware";
+    license = stdenv.lib.licenses.tcltk;
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/write_stylus/default.nix b/nixpkgs/pkgs/applications/graphics/write_stylus/default.nix
new file mode 100644
index 000000000000..31fc40450265
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/write_stylus/default.nix
@@ -0,0 +1,63 @@
+{ mkDerivation, stdenv, lib, qtbase, qtsvg, libglvnd, fetchurl, makeDesktopItem }:
+let
+  # taken from: https://www.iconfinder.com/icons/50835/edit_pencil_write_icon
+  # license: Free for commercial use
+  desktopIcon = fetchurl {
+    url = "https://www.iconfinder.com/icons/50835/download/png/256";
+    sha256 = "0abdya42yf9alxbsmc2nf8jwld50zfria6z3d4ncvp1zw2a9jhb8";
+  };
+in
+mkDerivation rec {
+  pname = "write_stylus";
+  version = "209";
+
+  desktopItem = makeDesktopItem {
+    name = "Write";
+    exec = "Write";
+    comment = "A word processor for handwriting";
+    icon = desktopIcon;
+    desktopName = "Write";
+    genericName = "Write";
+    categories = "Office;Graphics";
+  };
+
+  src = fetchurl {
+    url = "http://www.styluslabs.com/write/write${version}.tar.gz";
+    sha256 = "1p6glp4vdpwl8hmhypayc4cvs3j9jfmjfhhrgqm2xkgl5bfbv2qd";
+  };
+
+  sourceRoot = ".";
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -R Write $out/
+    # symlink the binary to bin/
+    ln -s $out/Write/Write $out/bin/Write
+
+    mkdir -p $out/share/applications
+    ln -s ${desktopItem}/share/applications/* $out/share/applications/
+  '';
+  preFixup = let
+    libPath = lib.makeLibraryPath [
+      qtbase            # libQt5PrintSupport.so.5
+      qtsvg             # libQt5Svg.so.5
+      stdenv.cc.cc.lib  # libstdc++.so.6
+      libglvnd          # ibGL.so.1
+    ];
+  in ''
+    patchelf \
+      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${libPath}" \
+      $out/Write/Write
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.styluslabs.com/";
+    description = "Write is a word processor for handwriting.";
+    platforms = platforms.linux;
+    license = stdenv.lib.licenses.unfree;
+    maintainers = with maintainers; [ oyren ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/xaos/default.nix b/nixpkgs/pkgs/applications/graphics/xaos/default.nix
new file mode 100644
index 000000000000..767f3aa920bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/xaos/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, aalib, gsl, libpng, libX11, xorgproto, libXext
+, libXt, zlib, gettext, intltool, perl }:
+
+stdenv.mkDerivation rec {
+  pname = "xaos";
+  version = "3.6";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/xaos/${pname}-${version}.tar.gz";
+    sha256 = "15cd1cx1dyygw6g2nhjqq3bsfdj8sj8m4va9n75i0f3ryww3x7wq";
+  };
+
+  hardeningDisable = [ "format" ];
+
+  buildInputs = [
+    aalib gsl libpng libX11 xorgproto libXext
+    libXt zlib gettext intltool perl
+  ];
+
+  preConfigure = ''
+    sed -e s@/usr/@"$out/"@g -i configure $(find . -name 'Makefile*')
+    mkdir -p $out/share/locale
+  '';
+
+  meta = {
+    homepage = "http://xaos.sourceforge.net/";
+    description = "Fractal viewer";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/xara/debian-patches.nix b/nixpkgs/pkgs/applications/graphics/xara/debian-patches.nix
new file mode 100644
index 000000000000..dd3061461868
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/xara/debian-patches.nix
@@ -0,0 +1,30 @@
+# Generated by debian-patches.sh from debian-patches.txt
+let
+  prefix = "http://patch-tracker.debian.org/patch/series/dl/xaralx/0.7r1785-5";
+in
+[
+  {
+    url = "${prefix}/30_gtk_wxwidgets_symbol_clash";
+    sha256 = "1rc9dh9mnp93mad96dkp7idyhhcw7h6w0g5s92mqgzj79hqgaziz";
+  }
+  {
+    url = "${prefix}/40_algorithm_include";
+    sha256 = "03jhl1qnxj7nl8malf6v1y24aldfz87x1p2jxp04mrr35nzvyyc0";
+  }
+  {
+    url = "${prefix}/50_update_imagemagick_version_parser";
+    sha256 = "1nilsqghlr649sc14n1aqkhdx7f66rq91gqccdpi17jwijs27497";
+  }
+  {
+    url = "${prefix}/remove-icon-suffix";
+    sha256 = "160zmkgwlsanqivnip89558yvd9zvqp8ks2wbyr2aigl2rafin22";
+  }
+  {
+    url = "${prefix}/45_fix_gcc4";
+    sha256 = "06zsj0z9v5n557gj8337v6xd26clbvm4dc0qhvpvzbisq81l9jyi";
+  }
+  {
+    url = "${prefix}/55_fix_contstuctor_call";
+    sha256 = "0b14glrcwhv0ja960h56n5jm4f9563ladap2pgaywihq485ql1c1";
+  }
+]
diff --git a/nixpkgs/pkgs/applications/graphics/xara/debian-patches.txt b/nixpkgs/pkgs/applications/graphics/xara/debian-patches.txt
new file mode 100644
index 000000000000..5c95d401a323
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/xara/debian-patches.txt
@@ -0,0 +1,7 @@
+xaralx/0.7r1785-5
+30_gtk_wxwidgets_symbol_clash
+40_algorithm_include
+50_update_imagemagick_version_parser
+remove-icon-suffix
+45_fix_gcc4
+55_fix_contstuctor_call
diff --git a/nixpkgs/pkgs/applications/graphics/xara/default.nix b/nixpkgs/pkgs/applications/graphics/xara/default.nix
new file mode 100644
index 000000000000..5e3c252435cd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/xara/default.nix
@@ -0,0 +1,22 @@
+{stdenv, fetchurl, automake, gettext, freetype, libxml2, pango, pkgconfig
+, wxGTK, gtk2, perl, zip}:
+
+stdenv.mkDerivation {
+  name = "xaralx-0.7r1785";
+
+  src = fetchurl {
+    url = "http://downloads2.xara.com/opensource/XaraLX-0.7r1785.tar.bz2";
+    sha256 = "05xbzq1i1vw2mdsv7zjqfpxfv3g1j0g5kks0gq6sh373xd6y8lyh";
+  };
+
+  nativeBuildInputs = [ automake pkgconfig gettext perl zip ];
+  buildInputs = [ wxGTK gtk2 libxml2 freetype pango ];
+
+  configureFlags = [ "--disable-svnversion" ];
+
+  patches = map fetchurl (import ./debian-patches.nix);
+
+  prePatch = "patchShebangs Scripts";
+
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/applications/graphics/xfig/default.nix b/nixpkgs/pkgs/applications/graphics/xfig/default.nix
new file mode 100644
index 000000000000..fe5a13703329
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/xfig/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, xlibsWrapper, makeWrapper, libXpm
+, libXmu, libXi, libXp, Xaw3d, fig2dev
+}:
+
+let
+  version = "3.2.7a";
+
+in stdenv.mkDerivation {
+  pname = "xfig";
+  inherit version;
+
+  src = fetchurl {
+    url = "mirror://sourceforge/mcj/xfig-${version}.tar.xz";
+    sha256 = "096zgp0bqnxhgxbrv2jjylrjz3pr4da0xxznlk2z7ffxr5pri2fa";
+  };
+
+  postPatch = ''
+    sed -i 's:"fig2dev":"${fig2dev}/bin/fig2dev":' src/main.c
+  '';
+
+  postInstall = ''
+    mkdir -p $out/share/X11/app-defaults
+    cp app-defaults/* $out/share/X11/app-defaults
+
+    wrapProgram $out/bin/xfig \
+      --set XAPPLRESDIR $out/share/X11/app-defaults
+  '';
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildInputs = [ xlibsWrapper libXpm libXmu libXi libXp Xaw3d ];
+
+  meta = with stdenv.lib; {
+    description = "An interactive drawing tool for X11";
+    longDescription = ''
+      Note that you need to have the <literal>netpbm</literal> tools
+      in your path to export bitmaps.
+    '';
+    inherit (fig2dev.meta) license homepage platforms;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/xfractint/default.nix b/nixpkgs/pkgs/applications/graphics/xfractint/default.nix
new file mode 100644
index 000000000000..8d36e4630dc5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/xfractint/default.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchurl, libX11, libXft}:
+stdenv.mkDerivation rec {
+  pname = "xfractint";
+  version = "20.04p14";
+  # or fetchFromGitHub(owner,repo,rev) or fetchgit(rev)
+  src = fetchurl {
+    url = "https://www.fractint.net/ftp/current/linux/xfractint-${version}.tar.gz";
+    sha256 = "0jdqr639z862qrswwk5srmv4fj5d7rl8kcscpn6mlkx4jvjmca0f";
+  };
+
+  buildInputs = [libX11 libXft];
+
+  configurePhase = ''
+    sed -e 's@/usr/bin/@@' -i Makefile
+  '';
+
+  makeFlags = ["PREFIX=$(out)"];
+
+  meta = {
+    inherit version;
+    description = "";
+    # Code cannot be used in commercial programs
+    # Looks like the definition hinges on the price, not license
+    license = stdenv.lib.licenses.unfree;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    homepage = "https://www.fractint.net/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/xournal/default.nix b/nixpkgs/pkgs/applications/graphics/xournal/default.nix
new file mode 100644
index 000000000000..8a5d9c3597b8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/xournal/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, fetchurl, makeDesktopItem
+, ghostscript, atk, gtk2, glib, fontconfig, freetype
+, libgnomecanvas, libgnomeprint, libgnomeprintui
+, pango, libX11, xorgproto, zlib, poppler
+, autoconf, automake, libtool, pkgconfig}:
+
+let
+  isGdkQuartzBackend = (gtk2.gdktarget == "quartz");
+in
+
+stdenv.mkDerivation rec {
+  version = "0.4.8.2016";
+  name = "xournal-" + version;
+  src = fetchurl {
+    url = "mirror://sourceforge/xournal/${name}.tar.gz";
+    sha256 = "09i88v3wacmx7f96dmq0l3afpyv95lh6jrx16xzm0jd1szdrhn5j";
+  };
+
+  buildInputs = [
+    ghostscript atk gtk2 glib fontconfig freetype
+    libgnomecanvas
+    pango libX11 xorgproto zlib poppler
+  ] ++ stdenv.lib.optionals (!stdenv.isDarwin) [
+    libgnomeprint libgnomeprintui
+  ];
+
+  nativeBuildInputs = [ autoconf automake libtool pkgconfig ];
+
+  NIX_LDFLAGS = "-lz"
+    + stdenv.lib.optionalString (!isGdkQuartzBackend) " -lX11";
+
+  desktopItem = makeDesktopItem {
+    name = name;
+    exec = "xournal";
+    icon = "xournal";
+    desktopName = "Xournal";
+    comment = meta.description;
+    categories = "Office;Graphics;";
+    mimeType = "application/pdf;application/x-xoj";
+    genericName = "PDF Editor";
+  };
+
+  postInstall=''
+      mkdir --parents $out/share/mime/packages
+      cat << EOF > $out/share/mime/packages/xournal.xml
+      <mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
+         <mime-type type="application/x-xoj">
+          <comment>Xournal Document</comment>
+          <glob pattern="*.xoj"/>
+         </mime-type>
+      </mime-info>
+      EOF
+      cp --recursive ${desktopItem}/share/applications $out/share
+      mkdir --parents $out/share/icons
+      cp $out/share/xournal/pixmaps/xournal.png $out/share/icons
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://xournal.sourceforge.net/";
+    description = "Note-taking application (supposes stylus)";
+    maintainers = [ maintainers.guibert ];
+    license = licenses.gpl2;
+    platforms = with platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/xournalpp/default.nix b/nixpkgs/pkgs/applications/graphics/xournalpp/default.nix
new file mode 100644
index 000000000000..ba396bfd92c5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/xournalpp/default.nix
@@ -0,0 +1,62 @@
+{ stdenv
+, fetchFromGitHub
+
+, cmake
+, gettext
+, wrapGAppsHook
+, pkgconfig
+
+, glib
+, gsettings-desktop-schemas
+, gtk3
+, libsndfile
+, libxml2
+, libzip
+, pcre
+, poppler
+, portaudio
+, zlib
+# plugins
+, withLua ? true, lua
+}:
+
+stdenv.mkDerivation rec {
+  pname = "xournalpp";
+  version = "1.0.18";
+
+  src = fetchFromGitHub {
+    owner = "xournalpp";
+    repo = pname;
+    rev = version;
+    sha256 = "0a9ygbmd4dwgck3k8wsrm2grynqa0adb12wwspzmzvpisbadffjy";
+  };
+
+  nativeBuildInputs = [ cmake gettext pkgconfig wrapGAppsHook ];
+  buildInputs =
+    [ glib
+      gsettings-desktop-schemas
+      gtk3
+      libsndfile
+      libxml2
+      libzip
+      pcre
+      poppler
+      portaudio
+      zlib
+    ]
+    ++ stdenv.lib.optional withLua lua;
+
+  buildFlags = "translations";
+
+  hardeningDisable = [ "format" ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Xournal++ is a handwriting Notetaking software with PDF annotation support";
+    homepage    = "https://github.com/xournalpp/xournalpp";
+    license     = licenses.gpl2;
+    maintainers = with maintainers; [ andrew-d sikmir ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/xzgv/default.nix b/nixpkgs/pkgs/applications/graphics/xzgv/default.nix
new file mode 100644
index 000000000000..67f43faf99a3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/xzgv/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, gtk2, libexif, pkgconfig, texinfo }:
+
+stdenv.mkDerivation rec {
+  pname = "xzgv";
+  version = "0.9.2";
+  src = fetchurl {
+    url = "mirror://sourceforge/xzgv/xzgv-${version}.tar.gz";
+    sha256 = "17l1xr9v07ggwga3vn0z1i4lnwjrr20rr8z1kjbw71aaijxl18i5";
+  };
+  nativeBuildInputs = [ pkgconfig texinfo ];
+  buildInputs = [ gtk2 libexif ];
+  postPatch = ''
+    substituteInPlace config.mk \
+      --replace /usr/local $out
+    substituteInPlace Makefile \
+      --replace "all: src man" "all: src man info"
+  '';
+  preInstall = ''
+    mkdir -p $out/share/{app-install/desktop,applications,info,pixmaps}
+  '';
+  meta = with stdenv.lib; {
+    homepage = "https://sourceforge.net/projects/xzgv/";
+    description = "Picture viewer for X with a thumbnail-based selector";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.womfoo ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/yacreader/default.nix b/nixpkgs/pkgs/applications/graphics/yacreader/default.nix
new file mode 100644
index 000000000000..9162e0bdef13
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/yacreader/default.nix
@@ -0,0 +1,28 @@
+{ mkDerivation, lib, fetchFromGitHub, qmake, poppler, pkgconfig, libunarr
+, libGLU, qtdeclarative, qtgraphicaleffects, qtmultimedia, qtquickcontrols
+, qtscript
+}:
+
+mkDerivation rec {
+  pname = "yacreader";
+  version = "9.6.2";
+
+  src = fetchFromGitHub {
+    owner = "YACReader";
+    repo = pname;
+    rev = version;
+    sha256 = "1s7kb72skhr364kq8wr2i012jjmaz2vzcz526h0b2bch8921wrnf";
+  };
+
+  nativeBuildInputs = [ qmake pkgconfig ];
+  buildInputs = [ poppler libunarr libGLU qtmultimedia qtscript ];
+  propagatedBuildInputs = [ qtquickcontrols qtgraphicaleffects qtdeclarative ];
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "A comic reader for cross-platform reading and managing your digital comic collection";
+    homepage = "http://www.yacreader.com";
+    license = lib.licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/yed/default.nix b/nixpkgs/pkgs/applications/graphics/yed/default.nix
new file mode 100644
index 000000000000..9472f9312469
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/yed/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchzip, makeWrapper, unzip, jre }:
+
+stdenv.mkDerivation rec {
+  pname = "yEd";
+  version = "3.20";
+
+  src = fetchzip {
+    url = "https://www.yworks.com/resources/yed/demo/${pname}-${version}.zip";
+    sha256 = "08j8lpn2nd41gavgrj03rlrxl04wcamq1y02f1x1569ykbhycb3m";
+  };
+
+  nativeBuildInputs = [ makeWrapper unzip ];
+
+  installPhase = ''
+    mkdir -p $out/yed
+    cp -r * $out/yed
+    mkdir -p $out/bin
+
+    makeWrapper ${jre}/bin/java $out/bin/yed \
+      --add-flags "-jar $out/yed/yed.jar --"
+  '';
+
+  meta = with stdenv.lib; {
+    license = licenses.unfree;
+    homepage = "https://www.yworks.com/products/yed";
+    description = "A powerful desktop application that can be used to quickly and effectively generate high-quality diagrams";
+    platforms = jre.meta.platforms;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/yeetgif/default.nix b/nixpkgs/pkgs/applications/graphics/yeetgif/default.nix
new file mode 100644
index 000000000000..3ae1b98661a6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/yeetgif/default.nix
@@ -0,0 +1,23 @@
+{ buildGoPackage, fetchFromGitHub, lib }:
+
+buildGoPackage rec {
+  pname = "yeetgif";
+  version = "1.23.6";
+
+  goPackagePath = "github.com/sgreben/yeetgif";
+
+  src = fetchFromGitHub {
+    owner = "sgreben";
+    repo = pname;
+    rev = version;
+    sha256 = "05z1ylsra60bb4cvr383g9im94zsph1dgicqbv5p73qgs634ckk7";
+  };
+
+  meta = with lib; {
+    description = "gif effects CLI. single binary, no dependencies. linux, osx, windows. #1 workplace productivity booster. #yeetgif #eggplant #golang";
+    homepage = "https://github.com/sgreben/yeetgif";
+    license = with licenses; [ mit asl20 cc-by-nc-sa-40 ];
+    maintainers = with maintainers; [ ajs124 ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/zgrviewer/default.nix b/nixpkgs/pkgs/applications/graphics/zgrviewer/default.nix
new file mode 100644
index 000000000000..db07b9e1db4e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/zgrviewer/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, jre, unzip, runtimeShell }:
+stdenv.mkDerivation rec {
+  version = "0.9.0";
+  pname = "zgrviewer";
+  src = fetchurl {
+    url = "mirror://sourceforge/zvtm/${pname}/${version}/${pname}-${version}.zip";
+    sha256 = "1yg2rck81sqqrgfi5kn6c1bz42dr7d0zqpcsdjhicssi1y159f23";
+  };
+  buildInputs = [jre unzip];
+  buildPhase = "";
+  installPhase = ''
+    mkdir -p "$out"/{bin,share/java/zvtm/plugins,share/doc/zvtm}
+
+    cp overview.html *.license.* "$out/share/doc/zvtm"
+
+    cp -r target/* "$out/share/java/zvtm/"
+
+    echo '#!${runtimeShell}' > "$out/bin/zgrviewer"
+    echo "${jre}/lib/openjdk/jre/bin/java -jar '$out/share/java/zvtm/zgrviewer-${version}.jar' \"\$@\"" >> "$out/bin/zgrviewer"
+    chmod a+x "$out/bin/zgrviewer"
+  '';
+  meta = {
+    # Quicker to unpack locally than load Hydra
+    hydraPlatforms = [];
+    maintainers = with stdenv.lib.maintainers; [raskin];
+    license = stdenv.lib.licenses.lgpl21Plus;
+    description = "GraphViz graph viewer/navigator";
+    platforms = with stdenv.lib.platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/zgv/default.nix b/nixpkgs/pkgs/applications/graphics/zgv/default.nix
new file mode 100644
index 000000000000..6cc59a7e60bd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/zgv/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, fetchpatch, pkgconfig, SDL, SDL_image, libjpeg, libpng, libtiff }:
+
+stdenv.mkDerivation rec {
+  pname = "zgv";
+  version = "5.9";
+  src = fetchurl {
+    url = "https://www.svgalib.org/rus/zgv/${pname}-${version}.tar.gz";
+    sha256 = "1fk4i9x0cpnpn3llam0zy2pkmhlr2hy3iaxhxg07v9sizd4dircj";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ SDL SDL_image libjpeg libpng libtiff ];
+
+  hardeningDisable = [ "format" ];
+
+  makeFlags = [
+    "BACKEND=SDL"
+  ];
+
+  patches = [
+    (fetchpatch {
+    url = "https://foss.aueb.gr/mirrors/linux/gentoo/media-gfx/zgv/files/zgv-5.9-libpng15.patch";
+    sha256 = "1blw9n04c28bnwcmcn64si4f5zpg42s8yn345js88fyzi9zm19xw";
+    })
+    ./switch.patch
+  ];
+
+  patchFlags = [ "-p0" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp src/zgv $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.svgalib.org/rus/zgv/";
+    description = "Picture viewer with a thumbnail-based selector";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.vrthra ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/graphics/zgv/switch.patch b/nixpkgs/pkgs/applications/graphics/zgv/switch.patch
new file mode 100644
index 000000000000..0b5ad092d72d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/zgv/switch.patch
@@ -0,0 +1,14 @@
+GCC complains
+
+diff -ur src/zgv_io.c src/zgv_io.c
+--- src/zgv_io.c	2005-01-20 15:07:46.000000000 -0800
++++ src/zgv_io.c	2016-06-29 10:19:40.169897611 -0700
+@@ -645,7 +645,7 @@
+         case SDLK_INSERT:	return(RK_INSERT);
+         case SDLK_DELETE:	return(RK_DELETE);
+         case SDLK_RETURN:	return(RK_ENTER);
+-        default:
++        default: ;
+           /* stop complaints */
+         }
+ 
diff --git a/nixpkgs/pkgs/applications/kde/akonadi-calendar.nix b/nixpkgs/pkgs/applications/kde/akonadi-calendar.nix
new file mode 100644
index 000000000000..121e93d3f5c0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/akonadi-calendar.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-contacts, kcalendarcore, kcalutils, kcontacts,
+  kidentitymanagement, kio, kmailtransport,
+}:
+
+mkDerivation {
+  name = "akonadi-calendar";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedBuildInputs = [
+    akonadi akonadi-contacts kcalendarcore kcalutils kcontacts kidentitymanagement
+    kio kmailtransport
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/akonadi-contacts.nix b/nixpkgs/pkgs/applications/kde/akonadi-contacts.nix
new file mode 100644
index 000000000000..b09058b60be9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/akonadi-contacts.nix
@@ -0,0 +1,25 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules,
+  qtwebengine,
+  grantlee,
+  kdbusaddons, ki18n, kiconthemes, kio, kitemmodels, ktextwidgets, prison,
+  akonadi, akonadi-mime, kcontacts, kmime,
+}:
+
+mkDerivation {
+  name = "akonadi-contacts";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    qtwebengine
+    grantlee
+    kdbusaddons ki18n kiconthemes kio kitemmodels ktextwidgets prison
+    akonadi-mime kcontacts kmime
+  ];
+  propagatedBuildInputs = [ akonadi ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/akonadi-import-wizard.nix b/nixpkgs/pkgs/applications/kde/akonadi-import-wizard.nix
new file mode 100644
index 000000000000..cc1acbc6dd05
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/akonadi-import-wizard.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, karchive, kcontacts, kcrash, kidentitymanagement, kio,
+  kmailtransport, kwallet, mailcommon, mailimporter, messagelib
+}:
+
+mkDerivation {
+  name = "akonadi-import-wizard";
+  meta = {
+    license = with lib.licenses; [ gpl2Plus lgpl21Plus fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi karchive kcontacts kcrash kidentitymanagement kio
+    kmailtransport kwallet mailcommon mailimporter messagelib
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/akonadi-mime.nix b/nixpkgs/pkgs/applications/kde/akonadi-mime.nix
new file mode 100644
index 000000000000..0ed958b4e770
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/akonadi-mime.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, shared-mime-info,
+  akonadi, kdbusaddons, ki18n, kio, kitemmodels, kmime
+}:
+
+mkDerivation {
+  name = "akonadi-mime";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules shared-mime-info ];
+  buildInputs = [ akonadi kdbusaddons ki18n kio kitemmodels kmime ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/akonadi-notes.nix b/nixpkgs/pkgs/applications/kde/akonadi-notes.nix
new file mode 100644
index 000000000000..72c4d799239c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/akonadi-notes.nix
@@ -0,0 +1,18 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, kcompletion, ki18n, kitemmodels, kmime, kxmlgui
+}:
+
+mkDerivation {
+  name = "akonadi-notes";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi kcompletion ki18n kitemmodels kmime kxmlgui
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/akonadi-search.nix b/nixpkgs/pkgs/applications/kde/akonadi-search.nix
new file mode 100644
index 000000000000..23ee6b1b9cc4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/akonadi-search.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-mime, kcalendarcore, kcmutils, kcontacts, kcoreaddons, kmime,
+  krunner, qtbase, xapian
+}:
+
+mkDerivation {
+  name = "akonadi-search";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kcmutils krunner xapian ];
+  propagatedBuildInputs = [
+    akonadi akonadi-mime kcalendarcore kcontacts kcoreaddons kmime qtbase
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/akonadi/0001-Revert-Make-Akonadi-installation-properly-relocatabl.patch b/nixpkgs/pkgs/applications/kde/akonadi/0001-Revert-Make-Akonadi-installation-properly-relocatabl.patch
new file mode 100644
index 000000000000..c3964c5c05b5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/akonadi/0001-Revert-Make-Akonadi-installation-properly-relocatabl.patch
@@ -0,0 +1,49 @@
+From bc018b4bc816a3b51deb9739bedbf8a2268d0684 Mon Sep 17 00:00:00 2001
+From: gnidorah <gnidorah@users.noreply.github.com>
+Date: Fri, 22 Dec 2017 17:36:03 +0300
+Subject: [PATCH] Revert "Make Akonadi installation properly relocatable"
+
+This reverts commit b2bb55f13f2ac783f89cc414de8c39f62fa2096a.
+---
+ CMakeLists.txt            | 3 ---
+ KF5AkonadiConfig.cmake.in | 6 +++---
+ 2 files changed, 3 insertions(+), 6 deletions(-)
+
+Index: akonadi-19.08.0/CMakeLists.txt
+===================================================================
+--- akonadi-19.08.0.orig/CMakeLists.txt
++++ akonadi-19.08.0/CMakeLists.txt
+@@ -306,9 +306,6 @@ configure_package_config_file(
+     "${CMAKE_CURRENT_SOURCE_DIR}/KF5AkonadiConfig.cmake.in"
+     "${CMAKE_CURRENT_BINARY_DIR}/KF5AkonadiConfig.cmake"
+     INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
+-    PATH_VARS AKONADI_DBUS_INTERFACES_INSTALL_DIR
+-              AKONADI_INCLUDE_DIR
+-              KF5Akonadi_DATA_DIR
+ )
+ 
+ install(FILES
+Index: akonadi-19.08.0/KF5AkonadiConfig.cmake.in
+===================================================================
+--- akonadi-19.08.0.orig/KF5AkonadiConfig.cmake.in
++++ akonadi-19.08.0/KF5AkonadiConfig.cmake.in
+@@ -26,8 +26,8 @@ if(BUILD_TESTING)
+     find_dependency(Qt5Test "@QT_REQUIRED_VERSION@")
+ endif()
+ 
+-set_and_check(AKONADI_DBUS_INTERFACES_DIR  "@PACKAGE_AKONADI_DBUS_INTERFACES_INSTALL_DIR@")
+-set_and_check(AKONADI_INCLUDE_DIR          "@PACKAGE_AKONADI_INCLUDE_DIR@")
++set_and_check(AKONADI_DBUS_INTERFACES_DIR  "@AKONADI_DBUS_INTERFACES_INSTALL_DIR@")
++set_and_check(AKONADI_INCLUDE_DIR          "@AKONADI_INCLUDE_DIR@")
+ 
+ find_dependency(Boost "@Boost_MINIMUM_VERSION@")
+ 
+@@ -35,7 +35,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/KF5Ako
+ include(${CMAKE_CURRENT_LIST_DIR}/KF5AkonadiMacros.cmake)
+ 
+ # The directory where akonadi-xml.xsd and kcfg2dbus.xsl are installed
+-set(KF5Akonadi_DATA_DIR "@PACKAGE_KF5Akonadi_DATA_DIR@")
++set(KF5Akonadi_DATA_DIR "@KF5Akonadi_DATA_DIR@")
+ 
+ ####################################################################################
+ # CMAKE_AUTOMOC
diff --git a/nixpkgs/pkgs/applications/kde/akonadi/akonadi-paths.patch b/nixpkgs/pkgs/applications/kde/akonadi/akonadi-paths.patch
new file mode 100644
index 000000000000..ba6bbedeeae7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/akonadi/akonadi-paths.patch
@@ -0,0 +1,172 @@
+Index: akonadi-19.08.0/src/akonadicontrol/agentmanager.cpp
+===================================================================
+--- akonadi-19.08.0.orig/src/akonadicontrol/agentmanager.cpp
++++ akonadi-19.08.0/src/akonadicontrol/agentmanager.cpp
+@@ -78,12 +78,12 @@ AgentManager::AgentManager(bool verbose,
+     mStorageController = new Akonadi::ProcessControl;
+     mStorageController->setShutdownTimeout(15 * 1000);   // the server needs more time for shutdown if we are using an internal mysqld
+     connect(mStorageController, &Akonadi::ProcessControl::unableToStart, this, &AgentManager::serverFailure);
+-    mStorageController->start(QStringLiteral("akonadiserver"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
++    mStorageController->start(QLatin1String(NIX_OUT "/bin/akonadiserver"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
+ 
+     if (mAgentServerEnabled) {
+         mAgentServer = new Akonadi::ProcessControl;
+         connect(mAgentServer, &Akonadi::ProcessControl::unableToStart, this, &AgentManager::agentServerFailure);
+-        mAgentServer->start(QStringLiteral("akonadi_agent_server"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
++        mAgentServer->start(QLatin1String(NIX_OUT "/bin/akonadi_agent_server"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
+     }
+ }
+ 
+Index: akonadi-19.08.0/src/akonadicontrol/agentprocessinstance.cpp
+===================================================================
+--- akonadi-19.08.0.orig/src/akonadicontrol/agentprocessinstance.cpp
++++ akonadi-19.08.0/src/akonadicontrol/agentprocessinstance.cpp
+@@ -62,7 +62,7 @@ bool AgentProcessInstance::start(const A
+     } else {
+         Q_ASSERT(agentInfo.launchMethod == AgentType::Launcher);
+         const QStringList arguments = QStringList() << executable << identifier();
+-        const QString agentLauncherExec = Akonadi::StandardDirs::findExecutable(QStringLiteral("akonadi_agent_launcher"));
++        const QString agentLauncherExec = QLatin1String(NIX_OUT "/bin/akonadi_agent_launcher");
+         mController->start(agentLauncherExec, arguments);
+     }
+     return true;
+Index: akonadi-19.08.0/src/server/storage/dbconfigmysql.cpp
+===================================================================
+--- akonadi-19.08.0.orig/src/server/storage/dbconfigmysql.cpp
++++ akonadi-19.08.0/src/server/storage/dbconfigmysql.cpp
+@@ -83,7 +83,6 @@ bool DbConfigMysql::init(QSettings &sett
+     // determine default settings depending on the driver
+     QString defaultHostName;
+     QString defaultOptions;
+-    QString defaultServerPath;
+     QString defaultCleanShutdownCommand;
+ 
+ #ifndef Q_OS_WIN
+@@ -92,16 +91,7 @@ bool DbConfigMysql::init(QSettings &sett
+ #endif
+ 
+     const bool defaultInternalServer = true;
+-#ifdef MYSQLD_EXECUTABLE
+-    if (QFile::exists(QStringLiteral(MYSQLD_EXECUTABLE))) {
+-        defaultServerPath = QStringLiteral(MYSQLD_EXECUTABLE);
+-    }
+-#endif
+-    if (defaultServerPath.isEmpty()) {
+-        defaultServerPath = findExecutable(QStringLiteral("mysqld"));
+-    }
+-
+-    const QString mysqladminPath = findExecutable(QStringLiteral("mysqladmin"));
++    const QString mysqladminPath = QLatin1String(NIXPKGS_MYSQL_MYSQLADMIN);
+     if (!mysqladminPath.isEmpty()) {
+ #ifndef Q_OS_WIN
+         defaultCleanShutdownCommand = QStringLiteral("%1 --defaults-file=%2/mysql.conf --socket=%3/%4 shutdown")
+@@ -111,10 +101,10 @@ bool DbConfigMysql::init(QSettings &sett
+ #endif
+     }
+ 
+-    mMysqlInstallDbPath = findExecutable(QStringLiteral("mysql_install_db"));
++    mMysqlInstallDbPath = QLatin1String(NIXPKGS_MYSQL_MYSQL_INSTALL_DB);
+     qCDebug(AKONADISERVER_LOG) << "Found mysql_install_db: " << mMysqlInstallDbPath;
+ 
+-    mMysqlCheckPath = findExecutable(QStringLiteral("mysqlcheck"));
++    mMysqlCheckPath = QLatin1String(NIXPKGS_MYSQL_MYSQLCHECK);
+     qCDebug(AKONADISERVER_LOG) << "Found mysqlcheck: " << mMysqlCheckPath;
+ 
+     mInternalServer = settings.value(QStringLiteral("QMYSQL/StartServer"), defaultInternalServer).toBool();
+@@ -131,7 +121,7 @@ bool DbConfigMysql::init(QSettings &sett
+     mUserName = settings.value(QStringLiteral("User")).toString();
+     mPassword = settings.value(QStringLiteral("Password")).toString();
+     mConnectionOptions = settings.value(QStringLiteral("Options"), defaultOptions).toString();
+-    mMysqldPath = settings.value(QStringLiteral("ServerPath"), defaultServerPath).toString();
++    mMysqldPath = QLatin1String(NIXPKGS_MYSQL_MYSQLD);
+     mCleanServerShutdownCommand = settings.value(QStringLiteral("CleanServerShutdownCommand"), defaultCleanShutdownCommand).toString();
+     settings.endGroup();
+ 
+@@ -141,9 +131,6 @@ bool DbConfigMysql::init(QSettings &sett
+         // intentionally not namespaced as we are the only one in this db instance when using internal mode
+         mDatabaseName = QStringLiteral("akonadi");
+     }
+-    if (mInternalServer && (mMysqldPath.isEmpty() || !QFile::exists(mMysqldPath))) {
+-        mMysqldPath = defaultServerPath;
+-    }
+ 
+     qCDebug(AKONADISERVER_LOG) << "Using mysqld:" << mMysqldPath;
+ 
+@@ -152,9 +139,6 @@ bool DbConfigMysql::init(QSettings &sett
+     settings.setValue(QStringLiteral("Name"), mDatabaseName);
+     settings.setValue(QStringLiteral("Host"), mHostName);
+     settings.setValue(QStringLiteral("Options"), mConnectionOptions);
+-    if (!mMysqldPath.isEmpty()) {
+-        settings.setValue(QStringLiteral("ServerPath"), mMysqldPath);
+-    }
+     settings.setValue(QStringLiteral("StartServer"), mInternalServer);
+     settings.endGroup();
+     settings.sync();
+@@ -209,7 +193,7 @@ bool DbConfigMysql::startInternalServer(
+ #endif
+ 
+     // generate config file
+-    const QString globalConfig = StandardDirs::locateResourceFile("config", QStringLiteral("mysql-global.conf"));
++    const QString globalConfig = QLatin1String(NIX_OUT "/etc/xdg/akonadi/mysql-global.conf");
+     const QString localConfig  = StandardDirs::locateResourceFile("config", QStringLiteral("mysql-local.conf"));
+     const QString actualConfig = StandardDirs::saveDir("data") + QLatin1String("/mysql.conf");
+     if (globalConfig.isEmpty()) {
+Index: akonadi-19.08.0/src/server/storage/dbconfigpostgresql.cpp
+===================================================================
+--- akonadi-19.08.0.orig/src/server/storage/dbconfigpostgresql.cpp
++++ akonadi-19.08.0/src/server/storage/dbconfigpostgresql.cpp
+@@ -140,9 +140,7 @@ bool DbConfigPostgresql::init(QSettings
+     // determine default settings depending on the driver
+     QString defaultHostName;
+     QString defaultOptions;
+-    QString defaultServerPath;
+     QString defaultInitDbPath;
+-    QString defaultPgUpgradePath;
+     QString defaultPgData;
+ 
+ #ifndef Q_WS_WIN // We assume that PostgreSQL is running as service on Windows
+@@ -153,12 +151,8 @@ bool DbConfigPostgresql::init(QSettings
+ 
+     mInternalServer = settings.value(QStringLiteral("QPSQL/StartServer"), defaultInternalServer).toBool();
+     if (mInternalServer) {
+-        const auto paths = postgresSearchPaths(QStringLiteral("/usr/lib/postgresql"));
+-
+-        defaultServerPath = QStandardPaths::findExecutable(QStringLiteral("pg_ctl"), paths);
+-        defaultInitDbPath = QStandardPaths::findExecutable(QStringLiteral("initdb"), paths);
++        defaultInitDbPath = QLatin1String(NIXPKGS_POSTGRES_INITDB);
+         defaultHostName = Utils::preferredSocketDirectory(StandardDirs::saveDir("data", QStringLiteral("db_misc")));
+-        defaultPgUpgradePath = QStandardPaths::findExecutable(QStringLiteral("pg_upgrade"), paths);
+         defaultPgData = StandardDirs::saveDir("data", QStringLiteral("db_data"));
+     }
+ 
+@@ -177,20 +171,14 @@ bool DbConfigPostgresql::init(QSettings
+     mUserName = settings.value(QStringLiteral("User")).toString();
+     mPassword = settings.value(QStringLiteral("Password")).toString();
+     mConnectionOptions = settings.value(QStringLiteral("Options"), defaultOptions).toString();
+-    mServerPath = settings.value(QStringLiteral("ServerPath"), defaultServerPath).toString();
+-    if (mInternalServer && mServerPath.isEmpty()) {
+-        mServerPath = defaultServerPath;
+-    }
++    mServerPath = QLatin1String(NIXPKGS_POSTGRES_PG_CTL);
+     qCDebug(AKONADISERVER_LOG) << "Found pg_ctl:" << mServerPath;
+     mInitDbPath = settings.value(QStringLiteral("InitDbPath"), defaultInitDbPath).toString();
+     if (mInternalServer && mInitDbPath.isEmpty()) {
+         mInitDbPath = defaultInitDbPath;
+     }
+     qCDebug(AKONADISERVER_LOG) << "Found initdb:" << mServerPath;
+-    mPgUpgradePath = settings.value(QStringLiteral("UpgradePath"), defaultPgUpgradePath).toString();
+-    if (mInternalServer && mPgUpgradePath.isEmpty()) {
+-        mPgUpgradePath = defaultPgUpgradePath;
+-    }
++    mPgUpgradePath = QLatin1String(NIXPKGS_POSTGRES_PG_UPGRADE);
+     qCDebug(AKONADISERVER_LOG) << "Found pg_upgrade:" << mPgUpgradePath;
+     mPgData = settings.value(QStringLiteral("PgData"), defaultPgData).toString();
+     if (mPgData.isEmpty()) {
+@@ -206,7 +194,6 @@ bool DbConfigPostgresql::init(QSettings
+         settings.setValue(QStringLiteral("Port"), mHostPort);
+     }
+     settings.setValue(QStringLiteral("Options"), mConnectionOptions);
+-    settings.setValue(QStringLiteral("ServerPath"), mServerPath);
+     settings.setValue(QStringLiteral("InitDbPath"), mInitDbPath);
+     settings.setValue(QStringLiteral("StartServer"), mInternalServer);
+     settings.endGroup();
diff --git a/nixpkgs/pkgs/applications/kde/akonadi/akonadi-timestamps.patch b/nixpkgs/pkgs/applications/kde/akonadi/akonadi-timestamps.patch
new file mode 100644
index 000000000000..e299a6991f05
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/akonadi/akonadi-timestamps.patch
@@ -0,0 +1,14 @@
+Index: akonadi-19.08.0/src/server/storage/dbconfigmysql.cpp
+===================================================================
+--- akonadi-19.08.0.orig/src/server/storage/dbconfigmysql.cpp
++++ akonadi-19.08.0/src/server/storage/dbconfigmysql.cpp
+@@ -235,8 +235,7 @@ bool DbConfigMysql::startInternalServer(
+     bool confUpdate = false;
+     QFile actualFile(actualConfig);
+     // update conf only if either global (or local) is newer than actual
+-    if ((QFileInfo(globalConfig).lastModified() > QFileInfo(actualFile).lastModified()) ||
+-            (QFileInfo(localConfig).lastModified()  > QFileInfo(actualFile).lastModified())) {
++    if (true) {
+         QFile globalFile(globalConfig);
+         QFile localFile(localConfig);
+         if (globalFile.open(QFile::ReadOnly) && actualFile.open(QFile::WriteOnly)) {
diff --git a/nixpkgs/pkgs/applications/kde/akonadi/default.nix b/nixpkgs/pkgs/applications/kde/akonadi/default.nix
new file mode 100644
index 000000000000..b9a96394a674
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/akonadi/default.nix
@@ -0,0 +1,34 @@
+{
+  mkDerivation, copyPathsToStore, lib, kdepimTeam,
+  extra-cmake-modules, shared-mime-info,
+  boost, kcompletion, kconfigwidgets, kcrash, kdbusaddons, kdesignerplugin,
+  ki18n, kiconthemes, kio, kitemmodels, kwindowsystem, mysql, qttools,
+}:
+
+mkDerivation {
+  name = "akonadi";
+  meta = {
+    license = [ lib.licenses.lgpl21 ];
+    maintainers = kdepimTeam;
+  };
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  nativeBuildInputs = [ extra-cmake-modules shared-mime-info ];
+  buildInputs = [
+    kcompletion kconfigwidgets kcrash kdbusaddons kdesignerplugin ki18n
+    kiconthemes kio kwindowsystem qttools
+  ];
+  propagatedBuildInputs = [ boost kitemmodels ];
+  outputs = [ "out" "dev" ];
+  CXXFLAGS = [
+    ''-DNIXPKGS_MYSQL_MYSQLD=\"${lib.getBin mysql}/bin/mysqld\"''
+    ''-DNIXPKGS_MYSQL_MYSQLADMIN=\"${lib.getBin mysql}/bin/mysqladmin\"''
+    ''-DNIXPKGS_MYSQL_MYSQL_INSTALL_DB=\"${lib.getBin mysql}/bin/mysql_install_db\"''
+    ''-DNIXPKGS_MYSQL_MYSQLCHECK=\"${lib.getBin mysql}/bin/mysqlcheck\"''
+    ''-DNIXPKGS_POSTGRES_PG_CTL=\"\"''
+    ''-DNIXPKGS_POSTGRES_PG_UPGRADE=\"\"''
+    ''-DNIXPKGS_POSTGRES_INITDB=\"\"''
+  ];
+  preConfigure = ''
+    NIX_CFLAGS_COMPILE+=" -DNIX_OUT=\"$out\""
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/kde/akonadi/series b/nixpkgs/pkgs/applications/kde/akonadi/series
new file mode 100644
index 000000000000..f828d503cc77
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/akonadi/series
@@ -0,0 +1,3 @@
+akonadi-paths.patch
+akonadi-timestamps.patch
+0001-Revert-Make-Akonadi-installation-properly-relocatabl.patch
diff --git a/nixpkgs/pkgs/applications/kde/akonadiconsole.nix b/nixpkgs/pkgs/applications/kde/akonadiconsole.nix
new file mode 100644
index 000000000000..a02400847bb4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/akonadiconsole.nix
@@ -0,0 +1,21 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-contacts, calendarsupport, kcalendarcore, kcompletion,
+  kconfigwidgets, kcontacts, kdbusaddons, kitemmodels, kpimtextedit, libkdepim,
+  ktextwidgets, kxmlgui, messagelib, qtbase, akonadi-search, xapian
+}:
+
+mkDerivation {
+  name = "akonadiconsole";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi akonadi-contacts calendarsupport kcalendarcore kcompletion kconfigwidgets
+    kcontacts kdbusaddons kitemmodels kpimtextedit ktextwidgets kxmlgui
+    messagelib qtbase libkdepim akonadi-search xapian
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/akregator.nix b/nixpkgs/pkgs/applications/kde/akregator.nix
new file mode 100644
index 000000000000..98d53bc80838
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/akregator.nix
@@ -0,0 +1,30 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  qtwebengine,
+  grantlee,
+  kcmutils, kcrash, kiconthemes, knotifyconfig, kparts, ktexteditor,
+  kwindowsystem,
+  akonadi, akonadi-mime, grantleetheme, kontactinterface, libkdepim, libkleo,
+  messagelib, syndication
+}:
+
+mkDerivation {
+  name = "akregator";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    qtwebengine
+
+    grantlee
+
+    kcmutils kcrash kiconthemes knotifyconfig kparts ktexteditor kwindowsystem
+
+    akonadi akonadi-mime grantleetheme kontactinterface libkdepim libkleo
+    messagelib syndication
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/ark/default.nix b/nixpkgs/pkgs/applications/kde/ark/default.nix
new file mode 100644
index 000000000000..76cc423f5460
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/ark/default.nix
@@ -0,0 +1,40 @@
+{
+  mkDerivation, lib, config,
+
+  extra-cmake-modules, kdoctools,
+
+  breeze-icons, karchive, kconfig, kcrash, kdbusaddons, ki18n,
+  kiconthemes, kitemmodels, khtml, kio, kparts, kpty, kservice, kwidgetsaddons,
+
+  libarchive, libzip,
+
+  # Archive tools
+  p7zip, lrzip,
+
+  # Unfree tools
+  unfreeEnableUnrar ? false, unrar,
+}:
+
+let
+  extraTools = [ p7zip lrzip ] ++ lib.optional unfreeEnableUnrar unrar;
+in
+
+mkDerivation {
+  name = "ark";
+  meta = {
+    description = "Graphical file compression/decompression utility";
+    license = with lib.licenses;
+      [ gpl2 lgpl3 ] ++ lib.optional unfreeEnableUnrar unfree;
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+
+  outputs = [ "out" "dev" ];
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ libarchive libzip ] ++ extraTools;
+  propagatedBuildInputs = [
+    breeze-icons karchive kconfig kcrash kdbusaddons khtml ki18n kiconthemes kio
+    kitemmodels kparts kpty kservice kwidgetsaddons
+  ];
+
+  qtWrapperArgs = [ "--prefix" "PATH" ":" (lib.makeBinPath extraTools) ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/baloo-widgets.nix b/nixpkgs/pkgs/applications/kde/baloo-widgets.nix
new file mode 100644
index 000000000000..3479b6600fc9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/baloo-widgets.nix
@@ -0,0 +1,18 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  baloo, kconfig, kdelibs4support, kfilemetadata, ki18n, kio, kservice
+}:
+
+mkDerivation {
+  name = "baloo-widgets";
+  meta = {
+    license = [ lib.licenses.lgpl21 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedBuildInputs = [
+    baloo kconfig kdelibs4support kfilemetadata ki18n kio kservice
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/calendarsupport.nix b/nixpkgs/pkgs/applications/kde/calendarsupport.nix
new file mode 100644
index 000000000000..485397ec4aac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/calendarsupport.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-calendar, akonadi-mime, kcalutils, kdepim-apps-libs,
+  kholidays, kidentitymanagement, kmime, pimcommon, qttools,
+}:
+
+mkDerivation {
+  name = "calendarsupport";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi akonadi-mime kcalutils kdepim-apps-libs kholidays pimcommon qttools
+  ];
+  propagatedBuildInputs = [ akonadi-calendar kidentitymanagement kmime ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/default.nix b/nixpkgs/pkgs/applications/kde/default.nix
new file mode 100644
index 000000000000..60df1f899ded
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/default.nix
@@ -0,0 +1,188 @@
+/*
+
+# New packages
+
+READ THIS FIRST
+
+This module is for official packages in the KDE Applications Bundle. All
+available packages are listed in `./srcs.nix`, although some are not yet
+packaged in Nixpkgs (see below).
+
+IF YOUR PACKAGE IS NOT LISTED IN `./srcs.nix`, IT DOES NOT GO HERE.
+
+Many of the packages released upstream are not yet built in Nixpkgs due to lack
+of demand. To add a Nixpkgs build for an upstream package, copy one of the
+existing packages here and modify it as necessary. A simple example package that
+still shows most of the available features is in `./gwenview.nix`.
+
+# Updates
+
+1. Update the URL in `./fetch.sh`.
+2. Run `./maintainers/scripts/fetch-kde-qt.sh pkgs/applications/kde`
+   from the top of the Nixpkgs tree.
+3. Use `nox-review wip` to check that everything builds.
+4. Commit the changes and open a pull request.
+
+*/
+
+{
+  lib, libsForQt5, fetchurl,
+  okteta
+}:
+
+let
+  mirror = "mirror://kde";
+  srcs = import ./srcs.nix { inherit fetchurl mirror; };
+
+  mkDerivation = args:
+    let
+      inherit (args) name;
+      sname = args.sname or name;
+      inherit (srcs.${sname}) src version;
+      mkDerivation =
+        libsForQt5.callPackage ({ mkDerivation }: mkDerivation) {};
+    in
+      mkDerivation (args // {
+        name = "${name}-${version}";
+        inherit src;
+
+        outputs = args.outputs or [ "out" ];
+
+        meta = {
+          platforms = lib.platforms.linux;
+          homepage = "http://www.kde.org";
+        } // (args.meta or {});
+      });
+
+  packages = self: with self;
+    let
+      callPackage = self.newScope {
+        inherit mkDerivation;
+
+        # Team of maintainers assigned to the KDE PIM suite
+        kdepimTeam = with lib.maintainers; [ ttuegel vandenoever nyanloutre ];
+      };
+    in {
+      akonadi = callPackage ./akonadi {};
+      akonadi-calendar = callPackage ./akonadi-calendar.nix {};
+      akonadi-contacts = callPackage ./akonadi-contacts.nix {};
+      akonadi-import-wizard = callPackage ./akonadi-import-wizard.nix {};
+      akonadi-mime = callPackage ./akonadi-mime.nix {};
+      akonadi-notes = callPackage ./akonadi-notes.nix {};
+      akonadi-search = callPackage ./akonadi-search.nix {};
+      akonadiconsole = callPackage ./akonadiconsole.nix {};
+      akregator = callPackage ./akregator.nix {};
+      ark = callPackage ./ark {};
+      baloo-widgets = callPackage ./baloo-widgets.nix {};
+      calendarsupport = callPackage ./calendarsupport.nix {};
+      dolphin = callPackage ./dolphin.nix {};
+      dolphin-plugins = callPackage ./dolphin-plugins.nix {};
+      dragon = callPackage ./dragon.nix {};
+      elisa = callPackage ./elisa.nix {};
+      eventviews = callPackage ./eventviews.nix {};
+      ffmpegthumbs = callPackage ./ffmpegthumbs.nix { };
+      filelight = callPackage ./filelight.nix {};
+      grantleetheme = callPackage ./grantleetheme {};
+      gwenview = callPackage ./gwenview.nix {};
+      incidenceeditor = callPackage ./incidenceeditor.nix {};
+      k3b = callPackage ./k3b.nix {};
+      kaddressbook = callPackage ./kaddressbook.nix {};
+      kalarm = callPackage ./kalarm.nix {};
+      kalarmcal = callPackage ./kalarmcal.nix {};
+      kate = callPackage ./kate.nix {};
+      kbreakout = callPackage ./kbreakout.nix {};
+      kcachegrind = callPackage ./kcachegrind.nix {};
+      kcalc = callPackage ./kcalc.nix {};
+      kcalutils = callPackage ./kcalutils.nix {};
+      kcharselect = callPackage ./kcharselect.nix {};
+      kcolorchooser = callPackage ./kcolorchooser.nix {};
+      kdav = callPackage ./kdav.nix {};
+      kdebugsettings = callPackage ./kdebugsettings.nix {};
+      kdegraphics-mobipocket = callPackage ./kdegraphics-mobipocket.nix {};
+      kdegraphics-thumbnailers = callPackage ./kdegraphics-thumbnailers.nix {};
+      kdenetwork-filesharing = callPackage ./kdenetwork-filesharing.nix {};
+      kdenlive = callPackage ./kdenlive.nix {};
+      kdepim-runtime = callPackage ./kdepim-runtime {};
+      kdepim-addons = callPackage ./kdepim-addons.nix {};
+      kdepim-apps-libs = callPackage ./kdepim-apps-libs {};
+      kdf = callPackage ./kdf.nix {};
+      kdialog = callPackage ./kdialog.nix {};
+      keditbookmarks = callPackage ./keditbookmarks.nix {};
+      kfind = callPackage ./kfind.nix {};
+      kgeography = callPackage ./kgeography.nix {};
+      kget = callPackage ./kget.nix {};
+      kgpg = callPackage ./kgpg.nix {};
+      khelpcenter = callPackage ./khelpcenter.nix {};
+      kidentitymanagement = callPackage ./kidentitymanagement.nix {};
+      kig = callPackage ./kig.nix {};
+      kimap = callPackage ./kimap.nix {};
+      kipi-plugins = callPackage ./kipi-plugins.nix {};
+      kitinerary = callPackage ./kitinerary.nix {};
+      kio-extras = callPackage ./kio-extras.nix {};
+      kldap = callPackage ./kldap.nix {};
+      kleopatra = callPackage ./kleopatra.nix {};
+      kmahjongg = callPackage ./kmahjongg.nix {};
+      kmail = callPackage ./kmail.nix {};
+      kmail-account-wizard = callPackage ./kmail-account-wizard.nix {};
+      kmailtransport = callPackage ./kmailtransport.nix {};
+      kmbox = callPackage ./kmbox.nix {};
+      kmime = callPackage ./kmime.nix {};
+      kmix = callPackage ./kmix.nix {};
+      kmplot = callPackage ./kmplot.nix {};
+      knotes = callPackage ./knotes.nix {};
+      kolf = callPackage ./kolf.nix {};
+      kolourpaint = callPackage ./kolourpaint.nix {};
+      kompare = callPackage ./kompare.nix {};
+      konsole = callPackage ./konsole.nix {};
+      kontact = callPackage ./kontact.nix {};
+      kontactinterface = callPackage ./kontactinterface.nix {};
+      konquest = callPackage ./konquest.nix {};
+      konqueror = callPackage ./konqueror.nix {};
+      korganizer = callPackage ./korganizer.nix {};
+      kpat = callPackage ./kpat.nix {};
+      kpimtextedit = callPackage ./kpimtextedit.nix {};
+      ksmtp = callPackage ./ksmtp {};
+      kqtquickcharts = callPackage ./kqtquickcharts.nix {};
+      kpkpass = callPackage ./kpkpass.nix {};
+      krdc = callPackage ./krdc.nix {};
+      krfb = callPackage ./krfb.nix {};
+      kruler = callPackage ./kruler.nix {};
+      kspaceduel = callPackage ./kspaceduel.nix {};
+      ksudoku = callPackage ./ksudoku.nix {};
+      ksystemlog = callPackage ./ksystemlog.nix {};
+      ktnef = callPackage ./ktnef.nix {};
+      ktouch = callPackage ./ktouch.nix {};
+      kwalletmanager = callPackage ./kwalletmanager.nix {};
+      libgravatar = callPackage ./libgravatar.nix {};
+      libkcddb = callPackage ./libkcddb.nix {};
+      libkdcraw = callPackage ./libkdcraw.nix {};
+      libkdegames = callPackage ./libkdegames.nix {};
+      libkdepim = callPackage ./libkdepim.nix {};
+      libkexiv2 = callPackage ./libkexiv2.nix {};
+      libkgapi = callPackage ./libkgapi.nix {};
+      libkipi = callPackage ./libkipi.nix {};
+      libkleo = callPackage ./libkleo.nix {};
+      libkmahjongg = callPackage ./libkmahjongg.nix {};
+      libkomparediff2 = callPackage ./libkomparediff2.nix {};
+      libksane = callPackage ./libksane.nix {};
+      libksieve = callPackage ./libksieve.nix {};
+      mailcommon = callPackage ./mailcommon.nix {};
+      mailimporter = callPackage ./mailimporter.nix {};
+      marble = callPackage ./marble.nix {};
+      mbox-importer = callPackage ./mbox-importer.nix {};
+      messagelib = callPackage ./messagelib.nix {};
+      minuet = callPackage ./minuet.nix {};
+      okular = callPackage ./okular.nix {};
+      pimcommon = callPackage ./pimcommon.nix {};
+      pim-data-exporter = callPackage ./pim-data-exporter.nix {};
+      pim-sieve-editor = callPackage ./pim-sieve-editor.nix {};
+      print-manager = callPackage ./print-manager.nix {};
+      rocs = callPackage ./rocs.nix {};
+      spectacle = callPackage ./spectacle.nix {};
+      yakuake = callPackage ./yakuake.nix {};
+      # Okteta was removed from kde applications and will now be released independently
+      # Lets keep an alias for compatibility reasons
+      inherit okteta;
+    };
+
+in lib.makeScope libsForQt5.newScope packages
diff --git a/nixpkgs/pkgs/applications/kde/dolphin-plugins.nix b/nixpkgs/pkgs/applications/kde/dolphin-plugins.nix
new file mode 100644
index 000000000000..5580952f40a0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/dolphin-plugins.nix
@@ -0,0 +1,18 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  dolphin, kdelibs4support, ki18n, kio, kxmlgui
+}:
+
+mkDerivation {
+  name = "dolphin-plugins";
+  meta = {
+    license = [ lib.licenses.gpl2 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedBuildInputs = [
+    dolphin kdelibs4support ki18n kio kxmlgui
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/dolphin.nix b/nixpkgs/pkgs/applications/kde/dolphin.nix
new file mode 100644
index 000000000000..76d4e989e8c3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/dolphin.nix
@@ -0,0 +1,31 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  baloo, baloo-widgets, kactivities, kbookmarks, kcmutils,
+  kcompletion, kconfig, kcoreaddons, kdelibs4support, kdbusaddons,
+  kfilemetadata, ki18n, kiconthemes, kinit, kio, knewstuff, knotifications,
+  kparts, ktexteditor, kwindowsystem, phonon, solid,
+  wayland, qtwayland
+}:
+
+mkDerivation {
+  name = "dolphin";
+  meta = {
+    license = with lib.licenses; [ gpl2 fdl12 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedUserEnvPkgs = [ baloo ];
+  propagatedBuildInputs = [
+    baloo baloo-widgets kactivities kbookmarks kcmutils kcompletion kconfig
+    kcoreaddons kdelibs4support kdbusaddons kfilemetadata ki18n kiconthemes
+    kinit kio knewstuff knotifications kparts ktexteditor kwindowsystem
+    phonon solid
+    wayland qtwayland
+  ];
+  outputs = [ "out" "dev" ];
+  # We need the RPATH for linking, because the `libkdeinit5_dolphin.so` links
+  # private against its dependencies and without the correct RPATH, these
+  # dependencies are not found.
+  cmakeFlags = [ "-DCMAKE_SKIP_BUILD_RPATH=OFF" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/dragon.nix b/nixpkgs/pkgs/applications/kde/dragon.nix
new file mode 100644
index 000000000000..9dd55ec4b9c1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/dragon.nix
@@ -0,0 +1,25 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  baloo, baloo-widgets, kactivities, kbookmarks, kcmutils,
+  kcompletion, kconfig, kcoreaddons, kdelibs4support, kdbusaddons,
+  kfilemetadata, ki18n, kiconthemes, kinit, kio, knewstuff, knotifications,
+  kparts, ktexteditor, kwindowsystem, phonon, solid, phonon-backend-gstreamer
+}:
+
+mkDerivation {
+  name = "dragon";
+  meta = {
+    license = with lib.licenses; [ gpl2 fdl12 ];
+    description = "A simple media player for KDE";
+    maintainers = [ lib.maintainers.jonathanreeve ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedBuildInputs = [
+    baloo baloo-widgets kactivities kbookmarks kcmutils kcompletion kconfig
+    kcoreaddons kdelibs4support kdbusaddons kfilemetadata ki18n kiconthemes
+    kinit kio knewstuff knotifications kparts ktexteditor kwindowsystem
+    phonon solid phonon-backend-gstreamer
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/elisa.nix b/nixpkgs/pkgs/applications/kde/elisa.nix
new file mode 100644
index 000000000000..a2bfa88f8127
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/elisa.nix
@@ -0,0 +1,46 @@
+{ mkDerivation
+, fetchFromGitHub
+, lib
+, extra-cmake-modules
+, kdoctools
+, qtmultimedia
+, qtquickcontrols2
+, qtwebsockets
+, kconfig
+, kcmutils
+, kcrash
+, kdeclarative
+, kfilemetadata
+, kinit
+, kirigami2
+, baloo
+, vlc
+}:
+
+mkDerivation rec {
+  name = "elisa";
+
+  buildInputs = [ vlc ];
+
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+
+  propagatedBuildInputs = [
+    baloo
+    kcmutils
+    kconfig
+    kcrash
+    kdeclarative
+    kfilemetadata
+    kinit
+    kirigami2
+    qtmultimedia
+    qtquickcontrols2
+    qtwebsockets
+  ];
+
+  meta = with lib; {
+    description = "A simple media player for KDE";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/kde/eventviews.nix b/nixpkgs/pkgs/applications/kde/eventviews.nix
new file mode 100644
index 000000000000..495491f6d3c1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/eventviews.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, calendarsupport, kcalutils,
+  kdiagram, libkdepim, qtbase, qttools, kholidays
+}:
+
+mkDerivation {
+  name = "eventviews";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi calendarsupport kcalutils kdiagram
+    libkdepim qtbase qttools kholidays
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/fetch.sh b/nixpkgs/pkgs/applications/kde/fetch.sh
new file mode 100644
index 000000000000..3f6dc9ef1810
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/fetch.sh
@@ -0,0 +1 @@
+WGET_ARGS=( http://download.kde.org/stable/release-service/19.12.3/src )
diff --git a/nixpkgs/pkgs/applications/kde/ffmpeg-path.patch b/nixpkgs/pkgs/applications/kde/ffmpeg-path.patch
new file mode 100644
index 000000000000..a0cef882f596
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/ffmpeg-path.patch
@@ -0,0 +1,25 @@
+diff --git a/src/kdenlivesettings.kcfg b/src/kdenlivesettings.kcfg
+index 5edad5ae7..d35347a40 100644
+--- a/src/kdenlivesettings.kcfg
++++ b/src/kdenlivesettings.kcfg
+@@ -403,17 +403,17 @@
+ 
+     <entry name="ffmpegpath" type="Path">
+       <label>FFmpeg / Libav binary path.</label>
+-      <default></default>
++      <default>@ffmpeg@/bin/ffmpeg</default>
+     </entry>
+ 
+     <entry name="ffplaypath" type="Path">
+       <label>FFplay / avplay binary path.</label>
+-      <default></default>
++      <default>@ffmpeg@/bin/ffplay</default>
+     </entry>
+ 
+     <entry name="ffprobepath" type="Path">
+       <label>FFprobe / avprobe binary path.</label>
+-      <default></default>
++      <default>@ffmpeg@/bin/ffprobe</default>
+     </entry>
+ 
+     <entry name="mltthreads" type="Int">
diff --git a/nixpkgs/pkgs/applications/kde/ffmpegthumbs.nix b/nixpkgs/pkgs/applications/kde/ffmpegthumbs.nix
new file mode 100644
index 000000000000..225efba3768a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/ffmpegthumbs.nix
@@ -0,0 +1,15 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  ffmpeg_3, kio
+}:
+
+mkDerivation {
+  name = "ffmpegthumbs";
+  meta = {
+    license = with lib.licenses; [ gpl2 bsd3 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ ffmpeg_3 kio ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/filelight.nix b/nixpkgs/pkgs/applications/kde/filelight.nix
new file mode 100644
index 000000000000..a3be5be7f0a2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/filelight.nix
@@ -0,0 +1,18 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  kio, kparts, kxmlgui, qtscript, solid
+}:
+
+mkDerivation {
+  name = "filelight";
+  meta = {
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = with lib.maintainers; [ fridh vcunat ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedBuildInputs = [
+    kio kparts kxmlgui qtscript solid
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/grantleetheme/default.nix b/nixpkgs/pkgs/applications/kde/grantleetheme/default.nix
new file mode 100644
index 000000000000..bb8a97e8341e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/grantleetheme/default.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, copyPathsToStore, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  grantlee, ki18n, kiconthemes, knewstuff, kservice, kxmlgui, qtbase,
+}:
+
+mkDerivation {
+  name = "grantleetheme";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  output = [ "out" "dev" ];
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    grantlee ki18n kiconthemes knewstuff kservice kxmlgui qtbase
+  ];
+  propagatedBuildInputs = [ grantlee kiconthemes knewstuff ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/grantleetheme/grantlee-merge-theme-dirs.patch b/nixpkgs/pkgs/applications/kde/grantleetheme/grantlee-merge-theme-dirs.patch
new file mode 100644
index 000000000000..ebb81248475f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/grantleetheme/grantlee-merge-theme-dirs.patch
@@ -0,0 +1,155 @@
+diff --git a/src/grantleetheme.cpp b/src/grantleetheme.cpp
+index 27d5bc8..8d43140 100644
+--- a/src/grantleetheme.cpp
++++ b/src/grantleetheme.cpp
+@@ -46,7 +46,7 @@ ThemePrivate::ThemePrivate(const ThemePrivate &other)
+     , description(other.description)
+     , name(other.name)
+     , dirName(other.dirName)
+-    , absolutePath(other.absolutePath)
++    , absolutePaths(other.absolutePaths)
+     , author(other.author)
+     , email(other.email)
+     , loader(other.loader)
+@@ -64,12 +64,15 @@ void ThemePrivate::setupEngine()
+ 
+ void ThemePrivate::setupLoader()
+ {
+-    // Get the parent dir with themes, we set the theme directory separately
+-    QDir dir(absolutePath);
+-    dir.cdUp();
++    QStringList templateDirs;
++    for (const QString& path : absolutePaths) {
++        QDir dir(path);
++        dir.cdUp();
++        templateDirs << dir.absolutePath();
++    }
+ 
+     loader = QSharedPointer<GrantleeTheme::QtResourceTemplateLoader>::create();
+-    loader->setTemplateDirs({ dir.absolutePath() });
++    loader->setTemplateDirs(templateDirs);
+     loader->setTheme(dirName);
+ 
+     if (!sEngine) {
+@@ -121,7 +124,7 @@ Theme::Theme(const QString &themePath, const QString &dirName, const QString &de
+     KConfigGroup group(&config, QStringLiteral("Desktop Entry"));
+     if (group.isValid()) {
+         d->dirName = dirName;
+-        d->absolutePath = themePath;
++        d->absolutePaths = QStringList(themePath);
+         d->name = group.readEntry("Name", QString());
+         d->description = group.readEntry("Description", QString());
+         d->themeFileName = group.readEntry("FileName", QString());
+@@ -140,7 +143,7 @@ Theme::~Theme()
+ 
+ bool Theme::operator==(const Theme &other) const
+ {
+-    return isValid() && other.isValid() && d->absolutePath == other.absolutePath();
++    return isValid() && other.isValid() && d->absolutePaths == other.absolutePaths();
+ }
+ 
+ Theme &Theme::operator=(const Theme &other)
+@@ -184,7 +187,12 @@ QString Theme::dirName() const
+ 
+ QString Theme::absolutePath() const
+ {
+-    return d->absolutePath;
++    return d->absolutePaths.first();
++}
++
++QStringList Theme::absolutePaths() const
++{
++    return d->absolutePaths;
+ }
+ 
+ QString Theme::author() const
+@@ -223,6 +231,13 @@ QString Theme::render(const QString &templateName, const QVariantHash &data, con
+     return result;
+ }
+ 
++void Theme::addThemeDir(const QString& path)
++{
++    QDir dir(path);
++    dir.cdUp();
++    d->absolutePaths << dir.absolutePath();
++}
++
+ void Theme::addPluginPath(const QString &path)
+ {
+     if (!ThemePrivate::sEngine) {
+diff --git a/src/grantleetheme.h b/src/grantleetheme.h
+index a25c27b..be38299 100644
+--- a/src/grantleetheme.h
++++ b/src/grantleetheme.h
+@@ -48,11 +48,14 @@ public:
+     Q_REQUIRED_RESULT QStringList displayExtraVariables() const;
+     Q_REQUIRED_RESULT QString dirName() const;
+     Q_REQUIRED_RESULT QString absolutePath() const;
++    Q_REQUIRED_RESULT QStringList absolutePaths() const;
+     Q_REQUIRED_RESULT QString author() const;
+     Q_REQUIRED_RESULT QString authorEmail() const;
+ 
+     Q_REQUIRED_RESULT QString render(const QString &templateName, const QVariantHash &data, const QByteArray &applicationDomain = QByteArray());
+ 
++    void addThemeDir(const QString&);
++
+     static void addPluginPath(const QString &path);
+ 
+ private:
+diff --git a/src/grantleetheme_p.h b/src/grantleetheme_p.h
+index eb73dcb..00510e9 100644
+--- a/src/grantleetheme_p.h
++++ b/src/grantleetheme_p.h
+@@ -43,7 +43,7 @@ public:
+     QString description;
+     QString name;
+     QString dirName;
+-    QString absolutePath;
++    QStringList absolutePaths;
+     QString author;
+     QString email;
+ 
+diff --git a/src/grantleethememanager.cpp b/src/grantleethememanager.cpp
+index 606d717..dc99041 100644
+--- a/src/grantleethememanager.cpp
++++ b/src/grantleethememanager.cpp
+@@ -125,25 +125,18 @@ public:
+ 
+         for (const QString &directory : qAsConst(themesDirectories)) {
+             QDirIterator dirIt(directory, QStringList(), QDir::AllDirs | QDir::NoDotAndDotDot);
+-            QStringList alreadyLoadedThemeName;
+             while (dirIt.hasNext()) {
+                 dirIt.next();
+                 const QString dirName = dirIt.fileName();
+                 GrantleeTheme::Theme theme = q->loadTheme(dirIt.filePath(), dirName, defaultDesktopFileName);
+                 if (theme.isValid()) {
+                     QString themeName = theme.name();
+-                    if (alreadyLoadedThemeName.contains(themeName)) {
+-                        int i = 2;
+-                        const QString originalName(theme.name());
+-                        while (alreadyLoadedThemeName.contains(themeName)) {
+-                            themeName = originalName + QStringLiteral(" (%1)").arg(i);
+-                            ++i;
+-                        }
+-                        theme.d->name = themeName;
++                    QMap<QString, GrantleeTheme::Theme>::iterator i = themes.find(dirName);
++                    if (i != themes.end()) {
++                        i.value().addThemeDir(dirIt.filePath());
++                    } else {
++                        themes.insert(dirName, theme);
+                     }
+-                    alreadyLoadedThemeName << themeName;
+-                    themes.insert(dirName, theme);
+-                    //qDebug()<<" theme.name()"<<theme.name();
+                 }
+             }
+             watch->addDir(directory);
+@@ -366,7 +359,7 @@ QString ThemeManager::pathFromThemes(const QString &themesRelativePath, const QS
+                 GrantleeTheme::Theme theme = loadTheme(dirIt.filePath(), dirName, defaultDesktopFileName);
+                 if (theme.isValid()) {
+                     if (dirName == themeName) {
+-                        return theme.absolutePath();
++                        return theme.absolutePaths().first();
+                     }
+                 }
+             }
diff --git a/nixpkgs/pkgs/applications/kde/grantleetheme/series b/nixpkgs/pkgs/applications/kde/grantleetheme/series
new file mode 100644
index 000000000000..9095599ea56b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/grantleetheme/series
@@ -0,0 +1 @@
+grantlee-merge-theme-dirs.patch
diff --git a/nixpkgs/pkgs/applications/kde/gwenview.nix b/nixpkgs/pkgs/applications/kde/gwenview.nix
new file mode 100644
index 000000000000..3d03d1dea3e7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/gwenview.nix
@@ -0,0 +1,21 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  exiv2, lcms2,
+  baloo, kactivities, kdelibs4support, kio, kipi-plugins, libkdcraw, libkipi,
+  phonon, qtimageformats, qtsvg, qtx11extras, kinit
+}:
+
+mkDerivation {
+  name = "gwenview";
+  meta = {
+    license = with lib.licenses; [ gpl2 fdl12 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    baloo exiv2 kactivities kdelibs4support kio libkdcraw lcms2 libkipi phonon
+    qtimageformats qtsvg qtx11extras
+  ];
+  propagatedUserEnvPkgs = [ kipi-plugins libkipi (lib.getBin kinit) ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/incidenceeditor.nix b/nixpkgs/pkgs/applications/kde/incidenceeditor.nix
new file mode 100644
index 000000000000..8224b98253b6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/incidenceeditor.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-mime, calendarsupport, eventviews, kdepim-apps-libs,
+  kdiagram, kldap, kmime, qtbase,
+}:
+
+mkDerivation {
+  name = "incidenceeditor";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi akonadi-mime calendarsupport eventviews kdepim-apps-libs kdiagram
+    kldap kmime qtbase
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/k3b.nix b/nixpkgs/pkgs/applications/kde/k3b.nix
new file mode 100644
index 000000000000..4bf707cd0430
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/k3b.nix
@@ -0,0 +1,48 @@
+{ mkDerivation, lib
+, extra-cmake-modules, kdoctools, makeWrapper, shared-mime-info
+, qtwebkit
+, libkcddb, karchive, kcmutils, kfilemetadata, knewstuff, knotifyconfig, solid, kxmlgui
+, flac, lame, libmad, libmpcdec, libvorbis
+, libsamplerate, libsndfile, taglib
+, cdparanoia, cdrdao, cdrtools, dvdplusrwtools, libburn, libdvdcss, libdvdread, vcdimager
+, ffmpeg_3, libmusicbrainz3, normalize, sox, transcode, kinit
+}:
+
+mkDerivation {
+  name = "k3b";
+  meta = with lib; {
+    license = with licenses; [ gpl2Plus ];
+    maintainers = with maintainers; [ sander phreedom ];
+    platforms = platforms.linux;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools makeWrapper ];
+  buildInputs = [
+    # qt
+    qtwebkit
+    # kde
+    libkcddb karchive kcmutils kfilemetadata knewstuff knotifyconfig solid kxmlgui
+    # formats
+    flac lame libmad libmpcdec libvorbis
+    # sound utilities
+    libsamplerate libsndfile taglib
+    # cd/dvd
+    cdparanoia libdvdcss libdvdread
+    # others
+    ffmpeg_3 libmusicbrainz3 shared-mime-info
+  ];
+  propagatedUserEnvPkgs = [ (lib.getBin kinit) ];
+  postFixup =
+    let
+      binPath = lib.makeBinPath [
+        cdrdao cdrtools dvdplusrwtools libburn normalize sox transcode
+        vcdimager flac
+      ];
+      libraryPath = lib.makeLibraryPath [
+        cdparanoia
+      ];
+    in ''
+      wrapProgram "$out/bin/k3b"     \
+        --prefix PATH : "${binPath}" \
+        --prefix LD_LIBRARY_PATH : ${libraryPath}
+    '';
+}
diff --git a/nixpkgs/pkgs/applications/kde/kaddressbook.nix b/nixpkgs/pkgs/applications/kde/kaddressbook.nix
new file mode 100644
index 000000000000..b4b0450e78bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kaddressbook.nix
@@ -0,0 +1,22 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-search, grantlee, grantleetheme, kcmutils, kcompletion,
+  kcrash, kdbusaddons, kdepim-apps-libs, ki18n, kontactinterface, kparts,
+  kpimtextedit, kxmlgui, libkdepim, libkleo, mailcommon, pimcommon, prison,
+  qgpgme, qtbase,
+}:
+
+mkDerivation {
+  name = "kaddressbook";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi akonadi-search grantlee grantleetheme kcmutils kcompletion kcrash
+    kdbusaddons kdepim-apps-libs ki18n kontactinterface kparts kpimtextedit
+    kxmlgui libkdepim libkleo mailcommon pimcommon prison qgpgme qtbase
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kalarm.nix b/nixpkgs/pkgs/applications/kde/kalarm.nix
new file mode 100644
index 000000000000..a1dec1179cc6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kalarm.nix
@@ -0,0 +1,37 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+
+  kauth, kcodecs, kcompletion, kconfig, kconfigwidgets, kdbusaddons, kdoctools,
+  kguiaddons, ki18n, kiconthemes, kjobwidgets, kcmutils, kdelibs4support, kio,
+  knotifications, kservice, kwidgetsaddons, kwindowsystem, kxmlgui, phonon,
+
+  kimap, akonadi, akonadi-contacts, akonadi-mime, kalarmcal, kcalendarcore, kcalutils,
+  kholidays, kidentitymanagement, libkdepim, mailcommon, kmailtransport, kmime,
+  pimcommon, kpimtextedit, kdepim-apps-libs, messagelib,
+
+  qtx11extras,
+
+  kdepim-runtime
+}:
+
+mkDerivation {
+  name = "kalarm";
+  meta = {
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = [ lib.maintainers.rittelle ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kauth kcodecs kcompletion kconfig kconfigwidgets kdbusaddons kdoctools
+    kguiaddons ki18n kiconthemes kjobwidgets kcmutils kdelibs4support kio
+    knotifications kservice kwidgetsaddons kwindowsystem kxmlgui phonon
+
+    kimap akonadi akonadi-contacts akonadi-mime kalarmcal kcalendarcore kcalutils
+    kholidays kidentitymanagement libkdepim mailcommon kmailtransport kmime
+    pimcommon kpimtextedit kdepim-apps-libs messagelib
+
+    qtx11extras
+  ];
+  propagatedUserEnvPkgs = [ kdepim-runtime ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kalarmcal.nix b/nixpkgs/pkgs/applications/kde/kalarmcal.nix
new file mode 100644
index 000000000000..356c1e4812d6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kalarmcal.nix
@@ -0,0 +1,19 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, kcalendarcore, kdelibs4support, kholidays, kidentitymanagement,
+  kpimtextedit, kcalutils
+}:
+
+mkDerivation {
+  name = "kalarmcal";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedBuildInputs = [
+    akonadi kcalendarcore kdelibs4support kholidays kidentitymanagement kpimtextedit kcalutils
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kate.nix b/nixpkgs/pkgs/applications/kde/kate.nix
new file mode 100644
index 000000000000..e0d0273efde1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kate.nix
@@ -0,0 +1,36 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  kactivities, kconfig, kcrash, kdbusaddons, kguiaddons, kiconthemes, ki18n,
+  kinit, kio, kitemmodels, kjobwidgets, knewstuff, knotifications, konsole,
+  kparts, ktexteditor, kwindowsystem, kwallet, kxmlgui, libgit2,
+  plasma-framework, qtscript, threadweaver
+}:
+
+mkDerivation {
+  name = "kate";
+  meta = {
+    license = with lib.licenses; [ gpl3 lgpl3 lgpl2 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+
+  # InitialPreference values are too high and end up making kate &
+  # kwrite defaults for anything considered text/plain. Resetting to
+  # 1, which is the default.
+  postPatch = ''
+    substituteInPlace kate/data/org.kde.kate.desktop \
+      --replace InitialPreference=9 InitialPreference=1
+    substituteInPlace kwrite/data/org.kde.kwrite.desktop \
+      --replace InitialPreference=8 InitialPreference=1
+  '';
+
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    libgit2
+    kactivities ki18n kio ktexteditor kwindowsystem plasma-framework
+    qtscript kconfig kcrash kguiaddons kiconthemes kinit kjobwidgets kparts
+    kxmlgui kdbusaddons kwallet kitemmodels knotifications threadweaver
+    knewstuff
+  ];
+  propagatedUserEnvPkgs = [ konsole ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kbreakout.nix b/nixpkgs/pkgs/applications/kde/kbreakout.nix
new file mode 100644
index 000000000000..fbcddd46ca85
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kbreakout.nix
@@ -0,0 +1,22 @@
+{ mkDerivation, lib
+, extra-cmake-modules
+, cmake
+, kdbusaddons
+, ki18n
+, kconfigwidgets
+, kcrash
+, kxmlgui
+, libkdegames
+}:
+
+mkDerivation {
+  name = "kbreakout";
+  meta.license = with lib.licenses; [ lgpl21 gpl3 ];
+  outputs = [ "out" "dev" ];
+  nativeBuildInputs = [
+    cmake extra-cmake-modules
+  ];
+  propagatedBuildInputs = [
+    kdbusaddons ki18n kconfigwidgets kcrash kxmlgui libkdegames
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kcachegrind.nix b/nixpkgs/pkgs/applications/kde/kcachegrind.nix
new file mode 100644
index 000000000000..16fc6c517774
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kcachegrind.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  karchive, ki18n, kio, perl, python, php, qttools
+  , kdbusaddons
+}:
+
+mkDerivation {
+  name = "kcachegrind";
+  meta = {
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = with lib.maintainers; [ orivej ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ karchive ki18n kio perl python php qttools kdbusaddons ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kcalc.nix b/nixpkgs/pkgs/applications/kde/kcalc.nix
new file mode 100644
index 000000000000..4e2a308b17f5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kcalc.nix
@@ -0,0 +1,19 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  gmp, kconfig, kconfigwidgets, kcrash, kguiaddons, ki18n, kinit,
+  knotifications, kxmlgui, mpfr,
+}:
+
+mkDerivation {
+  name = "kcalc";
+  meta = {
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = [ lib.maintainers.fridh ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    gmp kconfig kconfigwidgets kcrash kguiaddons ki18n kinit knotifications
+    kxmlgui mpfr
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kcalutils.nix b/nixpkgs/pkgs/applications/kde/kcalutils.nix
new file mode 100644
index 000000000000..2e389ec4ac7d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kcalutils.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  grantlee, kcalendarcore, kconfig, kontactinterface, kcoreaddons, kdelibs4support,
+  kidentitymanagement, kpimtextedit,
+}:
+
+mkDerivation {
+  name = "kcalutils";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    grantlee kcalendarcore kconfig kontactinterface kcoreaddons kdelibs4support
+    kidentitymanagement kpimtextedit
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kcharselect.nix b/nixpkgs/pkgs/applications/kde/kcharselect.nix
new file mode 100644
index 000000000000..4af712b1d5a5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kcharselect.nix
@@ -0,0 +1,19 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  kbookmarks, kconfig, kconfigwidgets, kcrash, kcoreaddons, ki18n, kwidgetsaddons, kxmlgui
+}:
+
+mkDerivation {
+  name = "kcharselect";
+  meta = {
+    license = lib.licenses.gpl2Plus;
+    maintainers = [ lib.maintainers.schmittlauch ];
+    description = "A tool to select special characters from all installed fonts and copy them into the clipboard";
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kbookmarks kconfig kconfigwidgets kcoreaddons kcrash ki18n kwidgetsaddons kxmlgui
+  ];
+  enableParallelBuilding = true;
+}
diff --git a/nixpkgs/pkgs/applications/kde/kcolorchooser.nix b/nixpkgs/pkgs/applications/kde/kcolorchooser.nix
new file mode 100644
index 000000000000..45b32fbe832c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kcolorchooser.nix
@@ -0,0 +1,15 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  ki18n, kwidgetsaddons, kxmlgui
+}:
+
+mkDerivation {
+  name = "kcolorchooser";
+  meta = {
+    license = with lib.licenses; [ mit ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ ki18n kwidgetsaddons kxmlgui ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kdav.nix b/nixpkgs/pkgs/applications/kde/kdav.nix
new file mode 100644
index 000000000000..800c92511de2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kdav.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  kcoreaddons, kio, qtxmlpatterns,
+}:
+
+mkDerivation {
+  name = "kdav";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kcoreaddons kio qtxmlpatterns ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kdebugsettings.nix b/nixpkgs/pkgs/applications/kde/kdebugsettings.nix
new file mode 100644
index 000000000000..a58e1b25a2ee
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kdebugsettings.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  gettext,
+  kcoreaddons, kconfig, kdbusaddons, kwidgetsaddons, kitemviews, kcompletion,
+  python
+}:
+
+mkDerivation {
+  name = "kdebugsettings";
+  meta = {
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = [ lib.maintainers.rittelle ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    gettext kcoreaddons kconfig kdbusaddons kwidgetsaddons kitemviews kcompletion python
+  ];
+  propagatedUserEnvPkgs = [ ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kdegraphics-mobipocket.nix b/nixpkgs/pkgs/applications/kde/kdegraphics-mobipocket.nix
new file mode 100644
index 000000000000..e5f5b88ec440
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kdegraphics-mobipocket.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  kio
+}:
+
+mkDerivation {
+  name = "kdegraphics-mobipocket";
+  meta = {
+    license = [ lib.licenses.gpl2Plus ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kio ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kdegraphics-thumbnailers.nix b/nixpkgs/pkgs/applications/kde/kdegraphics-thumbnailers.nix
new file mode 100644
index 000000000000..dc0b63594c45
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kdegraphics-thumbnailers.nix
@@ -0,0 +1,22 @@
+{
+  mkDerivation, lib, fetchpatch,
+  extra-cmake-modules, karchive, kio, libkexiv2, libkdcraw
+}:
+
+mkDerivation {
+  name = "kdegraphics-thumbnailers";
+  meta = {
+    license = [ lib.licenses.lgpl21 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+  patches = [
+    # Fix a bug with thumbnail.so processes hanging:
+    # https://bugs.kde.org/show_bug.cgi?id=404652
+    (fetchpatch {
+      url = "https://github.com/KDE/kdegraphics-thumbnailers/commit/3e2ea6e924d0e2a2cdd9bb435b06965117d6d34c.patch";
+      sha256 = "0fq85zhymmrq8vl0y6vgh87qf4c6fhcq704p4kpkaq7y0isxj4h1";
+    })
+  ];
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ karchive kio libkexiv2 libkdcraw ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kdenetwork-filesharing.nix b/nixpkgs/pkgs/applications/kde/kdenetwork-filesharing.nix
new file mode 100644
index 000000000000..d251eb74f274
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kdenetwork-filesharing.nix
@@ -0,0 +1,15 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  kcoreaddons, ki18n, kio, kwidgetsaddons, samba
+}:
+
+mkDerivation {
+  name = "kdenetwork-filesharing";
+  meta = {
+    license = [ lib.licenses.gpl2 lib.licenses.lgpl21 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kcoreaddons ki18n kio kwidgetsaddons samba ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kdenlive.nix b/nixpkgs/pkgs/applications/kde/kdenlive.nix
new file mode 100644
index 000000000000..95496f90e043
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kdenlive.nix
@@ -0,0 +1,94 @@
+{ mkDerivation
+, lib
+, extra-cmake-modules
+, breeze-icons
+, breeze-qt5
+, kdoctools
+, kconfig
+, kcrash
+, kguiaddons
+, kiconthemes
+, ki18n
+, kinit
+, kdbusaddons
+, knotifications
+, knewstuff
+, karchive
+, knotifyconfig
+, kplotting
+, ktextwidgets
+, mlt
+, shared-mime-info
+, libv4l
+, kfilemetadata
+, ffmpeg-full
+, frei0r
+, phonon-backend-gstreamer
+, qtdeclarative
+, qtquickcontrols
+, qtscript
+, qtwebkit
+, rttr
+, kpurpose
+, kdeclarative
+}:
+
+mkDerivation {
+  name = "kdenlive";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+  ];
+  buildInputs = [
+    breeze-icons
+    breeze-qt5
+    kconfig
+    kcrash
+    kdbusaddons
+    kfilemetadata
+    kguiaddons
+    ki18n
+    kiconthemes
+    kinit
+    knotifications
+    knewstuff
+    karchive
+    knotifyconfig
+    kplotting
+    ktextwidgets
+    mlt
+    phonon-backend-gstreamer
+    qtdeclarative
+    qtquickcontrols
+    qtscript
+    qtwebkit
+    shared-mime-info
+    libv4l
+    ffmpeg-full
+    frei0r
+    rttr
+    kpurpose
+    kdeclarative
+  ];
+  # Both MLT and FFMpeg paths must be set or Kdenlive will complain that it
+  # doesn't find them. See:
+  # https://github.com/NixOS/nixpkgs/issues/83885
+  patches = [ ./mlt-path.patch ./ffmpeg-path.patch ];
+  inherit mlt;
+  ffmpeg = ffmpeg-full;
+  postPatch =
+    # Module Qt5::Concurrent must be included in `find_package` before it is used.
+    ''
+      sed -i CMakeLists.txt -e '/find_package(Qt5 REQUIRED/ s|)| Concurrent)|'
+      substituteAllInPlace src/kdenlivesettings.kcfg
+    '';
+  # Frei0r path needs to be set too or Kdenlive will complain. See:
+  # https://github.com/NixOS/nixpkgs/issues/83885
+  # https://github.com/NixOS/nixpkgs/issues/29614#issuecomment-488849325
+  qtWrapperArgs = [
+    "--set FREI0R_PATH ${frei0r}/lib/frei0r-1"
+  ];
+  meta = {
+    license = with lib.licenses; [ gpl2Plus ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/kde/kdepim-addons.nix b/nixpkgs/pkgs/applications/kde/kdepim-addons.nix
new file mode 100644
index 000000000000..e47aae89e603
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kdepim-addons.nix
@@ -0,0 +1,25 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, shared-mime-info,
+  akonadi-import-wizard, akonadi-notes, calendarsupport, eventviews,
+  incidenceeditor, kcalendarcore, kcalutils, kconfig, kdbusaddons, kdeclarative,
+  kdepim-apps-libs, kholidays, ki18n, kmime, ktexteditor, ktnef, libgravatar,
+  libksieve, mailcommon, mailimporter, messagelib, poppler, prison, kpkpass,
+  kitinerary, kontactinterface
+}:
+
+mkDerivation {
+  name = "kdepim-addons";
+  meta = {
+    license = with lib.licenses; [ gpl2Plus lgpl21Plus ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules shared-mime-info ];
+  buildInputs = [
+    akonadi-import-wizard akonadi-notes calendarsupport eventviews
+    incidenceeditor kcalendarcore kcalutils kconfig kdbusaddons kdeclarative
+    kdepim-apps-libs kholidays ki18n kmime ktexteditor ktnef libgravatar
+    libksieve mailcommon mailimporter messagelib poppler prison kpkpass
+    kitinerary kontactinterface
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kdepim-apps-libs/default.nix b/nixpkgs/pkgs/applications/kde/kdepim-apps-libs/default.nix
new file mode 100644
index 000000000000..6189e8706db0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kdepim-apps-libs/default.nix
@@ -0,0 +1,21 @@
+{
+  mkDerivation, copyPathsToStore, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-contacts, grantlee, grantleetheme, kconfig, kconfigwidgets,
+  kcontacts, ki18n, kiconthemes, kio, libkleo, pimcommon, prison,
+}:
+
+mkDerivation {
+  name = "kdepim-apps-libs";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi akonadi-contacts grantlee grantleetheme kconfig kconfigwidgets
+    kcontacts ki18n kiconthemes kio libkleo pimcommon prison
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kdepim-apps-libs/kdepim-apps-libs-grantlee-merge-theme-dirs.patch b/nixpkgs/pkgs/applications/kde/kdepim-apps-libs/kdepim-apps-libs-grantlee-merge-theme-dirs.patch
new file mode 100644
index 000000000000..02c369cc4ee8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kdepim-apps-libs/kdepim-apps-libs-grantlee-merge-theme-dirs.patch
@@ -0,0 +1,62 @@
+Index: kdepim-apps-libs-17.04.0/kaddressbookgrantlee/src/formatter/grantleecontactgroupformatter.cpp
+===================================================================
+--- kdepim-apps-libs-17.04.0.orig/kaddressbookgrantlee/src/formatter/grantleecontactgroupformatter.cpp
++++ kdepim-apps-libs-17.04.0/kaddressbookgrantlee/src/formatter/grantleecontactgroupformatter.cpp
+@@ -50,9 +50,9 @@ public:
+         mTemplateLoader.clear();
+     }
+ 
+-    void changeGrantleePath(const QString &path)
++    void changeGrantleePath(const QStringList &paths)
+     {
+-        mTemplateLoader->setTemplateDirs(QStringList() << path);
++        mTemplateLoader->setTemplateDirs(paths);
+         mEngine->addTemplateLoader(mTemplateLoader);
+ 
+         mSelfcontainedTemplate = mEngine->loadByName(QStringLiteral("contactgroup.html"));
+@@ -86,12 +86,12 @@ GrantleeContactGroupFormatter::~Grantlee
+ 
+ void GrantleeContactGroupFormatter::setAbsoluteThemePath(const QString &path)
+ {
+-    d->changeGrantleePath(path);
++    d->changeGrantleePath(QStringList(path));
+ }
+ 
+ void GrantleeContactGroupFormatter::setGrantleeTheme(const GrantleeTheme::Theme &theme)
+ {
+-    d->changeGrantleePath(theme.absolutePath());
++    d->changeGrantleePath(theme.absolutePaths());
+ }
+ 
+ inline static void setHashField(QVariantHash &hash, const QString &name, const QString &value)
+Index: kdepim-apps-libs-17.04.0/kaddressbookgrantlee/src/formatter/grantleecontactformatter.cpp
+===================================================================
+--- kdepim-apps-libs-17.04.0.orig/kaddressbookgrantlee/src/formatter/grantleecontactformatter.cpp
++++ kdepim-apps-libs-17.04.0/kaddressbookgrantlee/src/formatter/grantleecontactformatter.cpp
+@@ -74,9 +74,9 @@ public:
+         mTemplateLoader.clear();
+     }
+ 
+-    void changeGrantleePath(const QString &path)
++    void changeGrantleePath(const QStringList &paths)
+     {
+-        mTemplateLoader->setTemplateDirs(QStringList() << path);
++        mTemplateLoader->setTemplateDirs(paths);
+         mEngine->addTemplateLoader(mTemplateLoader);
+ 
+         mSelfcontainedTemplate = mEngine->loadByName(QStringLiteral("contact.html"));
+@@ -112,12 +112,12 @@ GrantleeContactFormatter::~GrantleeConta
+ 
+ void GrantleeContactFormatter::setAbsoluteThemePath(const QString &path)
+ {
+-    d->changeGrantleePath(path);
++    d->changeGrantleePath(QStringList(path));
+ }
+ 
+ void GrantleeContactFormatter::setGrantleeTheme(const GrantleeTheme::Theme &theme)
+ {
+-    d->changeGrantleePath(theme.absolutePath());
++    d->changeGrantleePath(theme.absolutePaths());
+ }
+ 
+ void GrantleeContactFormatter::setForceDisableQRCode(bool b)
diff --git a/nixpkgs/pkgs/applications/kde/kdepim-apps-libs/series b/nixpkgs/pkgs/applications/kde/kdepim-apps-libs/series
new file mode 100644
index 000000000000..1e8a52b55e96
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kdepim-apps-libs/series
@@ -0,0 +1 @@
+kdepim-apps-libs-grantlee-merge-theme-dirs.patch
diff --git a/nixpkgs/pkgs/applications/kde/kdepim-runtime/default.nix b/nixpkgs/pkgs/applications/kde/kdepim-runtime/default.nix
new file mode 100644
index 000000000000..65719514f96b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kdepim-runtime/default.nix
@@ -0,0 +1,24 @@
+{
+  mkDerivation, copyPathsToStore, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  shared-mime-info,
+  akonadi, akonadi-calendar, akonadi-contacts, akonadi-mime, akonadi-notes,
+  kalarmcal, kcalutils, kcontacts, kdav, kdelibs4support, kidentitymanagement,
+  kimap, kmailtransport, kmbox, kmime, knotifications, knotifyconfig,
+  pimcommon, qtwebengine, libkgapi, qtnetworkauth, qtspeech, qtxmlpatterns,
+}:
+
+mkDerivation {
+  name = "kdepim-runtime";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools shared-mime-info ];
+  buildInputs = [
+    akonadi akonadi-calendar akonadi-contacts akonadi-mime akonadi-notes
+    kalarmcal kcalutils kcontacts kdav kdelibs4support kidentitymanagement kimap
+    kmailtransport kmbox kmime knotifications knotifyconfig qtwebengine
+    pimcommon libkgapi qtnetworkauth qtspeech qtxmlpatterns
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kdf.nix b/nixpkgs/pkgs/applications/kde/kdf.nix
new file mode 100644
index 000000000000..eef94fd5eb24
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kdf.nix
@@ -0,0 +1,15 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  kcmutils, ki18n, kiconthemes, kio, knotifications, kxmlgui,
+}:
+
+mkDerivation {
+  name = "kdf";
+  meta = {
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = [ lib.maintainers.peterhoeg ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kcmutils ki18n kiconthemes kio knotifications kxmlgui ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kdialog.nix b/nixpkgs/pkgs/applications/kde/kdialog.nix
new file mode 100644
index 000000000000..df301af0cbac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kdialog.nix
@@ -0,0 +1,18 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  kinit, kguiaddons, kwindowsystem
+}:
+
+mkDerivation {
+  name = "kdialog";
+
+  meta = {
+    license = with lib.licenses; [ gpl2 fdl12 ];
+    maintainers = with lib.maintainers; [ peterhoeg ];
+  };
+
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+
+  propagatedBuildInputs = [ kinit kguiaddons kwindowsystem ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/keditbookmarks.nix b/nixpkgs/pkgs/applications/kde/keditbookmarks.nix
new file mode 100644
index 000000000000..efe247df7376
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/keditbookmarks.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  kio, kparts, kwindowsystem
+}:
+
+mkDerivation {
+  name = "keditbookmarks";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kio kparts kwindowsystem ];
+  meta = with lib; {
+    homepage = "http://www.kde.org";
+    license = with licenses; [ gpl2 lgpl21 fdl12 bsd3 ];
+    maintainers = with maintainers; [ peterhoeg ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/kde/kfind.nix b/nixpkgs/pkgs/applications/kde/kfind.nix
new file mode 100644
index 000000000000..10932b38032c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kfind.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  karchive, kcoreaddons, kfilemetadata, ktextwidgets, kwidgetsaddons, kio
+}:
+
+mkDerivation {
+  name = "kfind";
+  meta = {
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = [ lib.maintainers.iblech ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    karchive kcoreaddons kfilemetadata ktextwidgets kwidgetsaddons kio
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kgeography.nix b/nixpkgs/pkgs/applications/kde/kgeography.nix
new file mode 100644
index 000000000000..c96c198cca9c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kgeography.nix
@@ -0,0 +1,15 @@
+{ mkDerivation, lib
+, cmake, extra-cmake-modules, qtbase
+, kconfigwidgets, kxmlgui, kcrash, kdoctools
+, kitemviews
+}:
+
+mkDerivation {
+  name = "kgeography";
+  meta = {
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = [ lib.maintainers.globin ];
+  };
+  nativeBuildInputs = [ cmake extra-cmake-modules ];
+  buildInputs = [ qtbase kconfigwidgets kxmlgui kcrash kdoctools kitemviews ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kget.nix b/nixpkgs/pkgs/applications/kde/kget.nix
new file mode 100644
index 000000000000..6a50f1d08d1c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kget.nix
@@ -0,0 +1,22 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  kdelibs4support, libgcrypt, libktorrent, qca-qt5, qgpgme,
+  kcmutils, kcompletion, kcoreaddons, knotifyconfig, kparts, kwallet, kwidgetsaddons, kwindowsystem, kxmlgui
+}:
+
+mkDerivation {
+  name = "kget";
+
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+
+  buildInputs = [
+    kdelibs4support libgcrypt libktorrent qca-qt5 qgpgme
+    kcmutils kcompletion kcoreaddons knotifyconfig kparts kwallet kwidgetsaddons kwindowsystem kxmlgui
+  ];
+
+  meta = with lib; {
+    license = with licenses; [ gpl2 ];
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/kde/kgpg.nix b/nixpkgs/pkgs/applications/kde/kgpg.nix
new file mode 100644
index 000000000000..944cff47e0d6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kgpg.nix
@@ -0,0 +1,24 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools, ki18n, makeWrapper,
+  akonadi-contacts, gnupg, karchive, kcodecs, kcontacts, kcoreaddons,
+  kcrash, kdbusaddons, kiconthemes, kjobwidgets, kio, knotifications, kservice,
+  ktextwidgets, kxmlgui, kwidgetsaddons, kwindowsystem, qgpgme,
+}:
+
+mkDerivation {
+  name = "kgpg";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools makeWrapper ];
+  buildInputs = [
+    akonadi-contacts gnupg karchive kcodecs kcontacts kcoreaddons kcrash
+    kdbusaddons ki18n kiconthemes kjobwidgets kio knotifications kservice
+    ktextwidgets kxmlgui kwidgetsaddons kwindowsystem qgpgme
+  ];
+  postFixup = ''
+    wrapProgram "$out/bin/kgpg" --prefix PATH : "${lib.makeBinPath [ gnupg ]}"
+  '';
+  meta = {
+    license = [ lib.licenses.gpl2 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/kde/khelpcenter.nix b/nixpkgs/pkgs/applications/kde/khelpcenter.nix
new file mode 100644
index 000000000000..69b629bbeb90
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/khelpcenter.nix
@@ -0,0 +1,15 @@
+{
+  mkDerivation,
+  extra-cmake-modules, kdoctools,
+  grantlee, kcmutils, kconfig, kcoreaddons, kdbusaddons, kdelibs4support, ki18n,
+  kinit, khtml, kservice, xapian
+}:
+
+mkDerivation {
+  name = "khelpcenter";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    grantlee kcmutils kconfig kcoreaddons kdbusaddons kdelibs4support khtml
+    ki18n kinit kservice xapian
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kidentitymanagement.nix b/nixpkgs/pkgs/applications/kde/kidentitymanagement.nix
new file mode 100644
index 000000000000..92fcc2387797
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kidentitymanagement.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  kcompletion, kcoreaddons, kemoticons, kiconthemes, kio, kpimtextedit,
+  ktextwidgets, kxmlgui
+}:
+
+mkDerivation {
+  name = "kidentitymanagement";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kcompletion kemoticons kiconthemes kio ktextwidgets kxmlgui
+  ];
+  propagatedBuildInputs = [ kcoreaddons kpimtextedit ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kig.nix b/nixpkgs/pkgs/applications/kde/kig.nix
new file mode 100644
index 000000000000..7b8589077952
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kig.nix
@@ -0,0 +1,19 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  boost, karchive, kcrash, kiconthemes, kparts, ktexteditor, qtsvg,
+  qtxmlpatterns,
+}:
+
+mkDerivation {
+  name = "kig";
+  meta = {
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = with lib.maintainers; [ raskin ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    boost karchive kcrash kiconthemes kparts ktexteditor qtsvg qtxmlpatterns
+  ];
+}
+
diff --git a/nixpkgs/pkgs/applications/kde/kimap.nix b/nixpkgs/pkgs/applications/kde/kimap.nix
new file mode 100644
index 000000000000..9e42c5710583
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kimap.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  cyrus_sasl, kcoreaddons, ki18n, kio, kmime
+}:
+
+mkDerivation {
+  name = "kimap";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ ki18n kio ];
+  propagatedBuildInputs = [ cyrus_sasl kcoreaddons kmime ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kio-extras.nix b/nixpkgs/pkgs/applications/kde/kio-extras.nix
new file mode 100644
index 000000000000..a7aa817576fb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kio-extras.nix
@@ -0,0 +1,23 @@
+{
+  mkDerivation, lib, extra-cmake-modules, kdoctools, shared-mime-info,
+  exiv2, kactivities, karchive, kbookmarks, kconfig, kconfigwidgets,
+  kcoreaddons, kdbusaddons, kguiaddons, kdnssd, kiconthemes, ki18n, kio, khtml,
+  kdelibs4support, kpty, syntax-highlighting, libmtp, libssh, openexr, ilmbase,
+  openslp, phonon, qtsvg, samba, solid, gperf
+}:
+
+mkDerivation {
+  name = "kio-extras";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools shared-mime-info ];
+  buildInputs = [
+    exiv2 kactivities karchive kbookmarks kconfig kconfigwidgets kcoreaddons
+    kdbusaddons kguiaddons kdnssd kiconthemes ki18n kio khtml kdelibs4support
+    kpty syntax-highlighting libmtp libssh openexr openslp phonon qtsvg samba
+    solid gperf
+  ];
+  CXXFLAGS = [ "-I${ilmbase.dev}/include/OpenEXR" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kipi-plugins.nix b/nixpkgs/pkgs/applications/kde/kipi-plugins.nix
new file mode 100644
index 000000000000..180d066a87cf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kipi-plugins.nix
@@ -0,0 +1,23 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  karchive, kconfig, ki18n, kiconthemes, kio, kservice, kwindowsystem, kxmlgui,
+  libkipi, qtbase, qtsvg, qtxmlpatterns
+}:
+
+mkDerivation {
+  name    = "kipi-plugins";
+
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    karchive kconfig ki18n kiconthemes kio kservice kwindowsystem kxmlgui libkipi
+    qtbase qtsvg qtxmlpatterns
+  ];
+
+  meta = {
+    description = "Plugins for KDE-based image applications";
+    license = lib.licenses.gpl2;
+    homepage = "https://cgit.kde.org/kipi-plugins.git";
+    maintainers = with lib.maintainers; [ ttuegel ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/kde/kitinerary.nix b/nixpkgs/pkgs/applications/kde/kitinerary.nix
new file mode 100644
index 000000000000..303ea6162ba4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kitinerary.nix
@@ -0,0 +1,23 @@
+{
+  mkDerivation, lib, extra-cmake-modules
+, qtbase, qtdeclarative, ki18n, kmime, kpkpass
+, poppler, kcontacts, kcalendarcore
+, shared-mime-info
+}:
+
+mkDerivation {
+  name = "kitinerary";
+  meta = {
+    license = with lib.licenses; [ lgpl21 ];
+    maintainers = [ lib.maintainers.bkchr ];
+  };
+  nativeBuildInputs = [
+    extra-cmake-modules
+    shared-mime-info # for update-mime-database
+  ];
+  buildInputs = [
+    qtbase qtdeclarative ki18n kmime kpkpass poppler
+    kcontacts kcalendarcore
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kldap.nix b/nixpkgs/pkgs/applications/kde/kldap.nix
new file mode 100644
index 000000000000..14a8aea5e67a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kldap.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  cyrus_sasl, ki18n, kio, kmbox, openldap
+}:
+
+mkDerivation {
+  name = "kldap";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ ki18n kio kmbox ];
+  propagatedBuildInputs = [ cyrus_sasl openldap ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kleopatra.nix b/nixpkgs/pkgs/applications/kde/kleopatra.nix
new file mode 100644
index 000000000000..c15c6eb78d69
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kleopatra.nix
@@ -0,0 +1,19 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  boost, gpgme, kcmutils, kdbusaddons, kiconthemes, kitemmodels, kmime,
+  knotifications, kwindowsystem, kxmlgui, libkleo, kcrash
+}:
+
+mkDerivation {
+  name = "kleopatra";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    boost gpgme kcmutils kdbusaddons kiconthemes kitemmodels kmime
+    knotifications kwindowsystem kxmlgui libkleo kcrash
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kmahjongg.nix b/nixpkgs/pkgs/applications/kde/kmahjongg.nix
new file mode 100644
index 000000000000..b51d0d147e2e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kmahjongg.nix
@@ -0,0 +1,19 @@
+{ lib
+, mkDerivation
+, extra-cmake-modules
+, kdoctools
+, kdeclarative
+, knewstuff
+, libkdegames
+, libkmahjongg
+}:
+
+mkDerivation {
+  name = "kmahjongg";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kdeclarative libkmahjongg knewstuff libkdegames ];
+  meta = {
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = with lib.maintainers; [ genesis ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/kde/kmail-account-wizard.nix b/nixpkgs/pkgs/applications/kde/kmail-account-wizard.nix
new file mode 100644
index 000000000000..f380315cce90
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kmail-account-wizard.nix
@@ -0,0 +1,21 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools, shared-mime-info,
+  akonadi, kcmutils, kcrash, kdbusaddons, kidentitymanagement, kldap,
+  kmailtransport, knewstuff, knotifications, knotifyconfig, kparts, kross, ktexteditor,
+  kwallet, libkdepim, libkleo, pimcommon, qttools,
+}:
+
+mkDerivation {
+  name = "kmail-account-wizard";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools shared-mime-info ];
+  buildInputs = [
+    akonadi kcmutils kcrash kdbusaddons kidentitymanagement kldap kmailtransport
+    knewstuff knotifications knotifyconfig kparts kross ktexteditor kwallet libkdepim
+    libkleo pimcommon qttools
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kmail.nix b/nixpkgs/pkgs/applications/kde/kmail.nix
new file mode 100644
index 000000000000..ab24f15a14bc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kmail.nix
@@ -0,0 +1,30 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi-search, kbookmarks, kcalutils, kcmutils, kcompletion, kconfig,
+  kconfigwidgets, kcoreaddons, kdelibs4support, kdepim-apps-libs, libkdepim,
+  kdepim-runtime, kguiaddons, ki18n, kiconthemes, kinit, kio, kldap,
+  kmail-account-wizard, kmailtransport, knotifications, knotifyconfig,
+  kontactinterface, kparts, kpty, kservice, ktextwidgets, ktnef, kwallet,
+  kwidgetsaddons, kwindowsystem, kxmlgui, libgravatar, libksieve, mailcommon,
+  messagelib, pim-sieve-editor, qtscript, qtwebengine, akonadi
+}:
+
+mkDerivation {
+  name = "kmail";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi-search kbookmarks kcalutils kcmutils kcompletion kconfig
+    kconfigwidgets kcoreaddons kdelibs4support kdepim-apps-libs kguiaddons ki18n
+    kiconthemes kinit kio kldap kmail-account-wizard kmailtransport libkdepim
+    knotifications knotifyconfig kontactinterface kparts kpty kservice
+    ktextwidgets ktnef kwidgetsaddons kwindowsystem kxmlgui libgravatar
+    libksieve mailcommon messagelib pim-sieve-editor qtscript qtwebengine
+  ];
+  propagatedUserEnvPkgs = [ kdepim-runtime kwallet akonadi ];
+  patches = [ ./kmail.patch ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kmail.patch b/nixpkgs/pkgs/applications/kde/kmail.patch
new file mode 100644
index 000000000000..71a23be2d839
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kmail.patch
@@ -0,0 +1,24 @@
+diff --git a/agents/archivemailagent/CMakeLists.txt b/agents/archivemailagent/CMakeLists.txt
+index 48ed076..9c56896 100644
+--- a/agents/archivemailagent/CMakeLists.txt
++++ b/agents/archivemailagent/CMakeLists.txt
+@@ -22,6 +22,7 @@ ki18n_wrap_ui(libarchivemailagent_SRCS ui/archivemailwidget.ui )
+ add_library(archivemailagent STATIC ${libarchivemailagent_SRCS})
+ target_link_libraries(archivemailagent
+     KF5::MailCommon
++    KF5::Libkdepim
+     KF5::I18n
+     KF5::Notifications
+     KF5::IconThemes
+diff --git a/agents/followupreminderagent/CMakeLists.txt b/agents/followupreminderagent/CMakeLists.txt
+index a56b730..83604cf 100644
+--- a/agents/followupreminderagent/CMakeLists.txt
++++ b/agents/followupreminderagent/CMakeLists.txt
+@@ -23,6 +23,7 @@ target_link_libraries(followupreminderagent
+     KF5::AkonadiMime
+     KF5::AkonadiAgentBase
+     KF5::DBusAddons
++    KF5::FollowupReminder
+     KF5::XmlGui
+     KF5::KIOWidgets
+     KF5::Notifications
diff --git a/nixpkgs/pkgs/applications/kde/kmailtransport.nix b/nixpkgs/pkgs/applications/kde/kmailtransport.nix
new file mode 100644
index 000000000000..d5832db570cc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kmailtransport.nix
@@ -0,0 +1,19 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-mime, cyrus_sasl, kcmutils,
+  ki18n, kio, kmime, kwallet, ksmtp, libkgapi,
+  kcalendarcore, kcontacts
+}:
+
+mkDerivation {
+  name = "kmailtransport";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ akonadi kcmutils ki18n kio ksmtp libkgapi kcalendarcore kcontacts ];
+  propagatedBuildInputs = [ akonadi-mime cyrus_sasl kmime kwallet ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kmbox.nix b/nixpkgs/pkgs/applications/kde/kmbox.nix
new file mode 100644
index 000000000000..c1348edf3f6f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kmbox.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  kmime, qtbase, kcodecs
+}:
+
+mkDerivation {
+  name = "kmbox";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kmime qtbase kcodecs ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kmime.nix b/nixpkgs/pkgs/applications/kde/kmime.nix
new file mode 100644
index 000000000000..4523a69fc1be
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kmime.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, ki18n,
+  kcodecs, qtbase,
+}:
+
+mkDerivation {
+  name = "kmime";
+  meta = {
+    license = [ lib.licenses.lgpl21 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kcodecs ki18n qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kmix.nix b/nixpkgs/pkgs/applications/kde/kmix.nix
new file mode 100644
index 000000000000..8010c57d9278
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kmix.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  kglobalaccel, kxmlgui, kcoreaddons, kdelibs4support,
+  plasma-framework, libpulseaudio, alsaLib, libcanberra_kde
+}:
+
+mkDerivation {
+  name = "kmix";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = [ lib.maintainers.rongcuid ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    alsaLib kglobalaccel kxmlgui kcoreaddons kdelibs4support
+    libcanberra_kde libpulseaudio plasma-framework
+  ];
+  cmakeFlags = [ "-DKMIX_KF5_BUILD=1" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kmplot.nix b/nixpkgs/pkgs/applications/kde/kmplot.nix
new file mode 100644
index 000000000000..c0c00f213400
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kmplot.nix
@@ -0,0 +1,15 @@
+{ mkDerivation, lib, extra-cmake-modules, kdoctools
+, kcrash, kguiaddons, ki18n, kparts, kwidgetsaddons, kdbusaddons
+}:
+
+mkDerivation {
+  name = "kmplot";
+  meta = {
+    license = with lib.licenses; [ gpl2Plus fdl12 ];
+    maintainers = [ lib.maintainers.orivej ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kcrash kguiaddons ki18n kparts kwidgetsaddons kdbusaddons
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/knotes.nix b/nixpkgs/pkgs/applications/kde/knotes.nix
new file mode 100644
index 000000000000..2dc2f48c1497
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/knotes.nix
@@ -0,0 +1,29 @@
+{
+  mkDerivation,
+  extra-cmake-modules, kdoctools,
+  kcompletion, kconfig, kconfigwidgets, kcoreaddons, kcrash,
+  kdbusaddons, kdnssd, kglobalaccel, kiconthemes, kitemmodels,
+  kitemviews, kcmutils, knewstuff, knotifications, knotifyconfig,
+  kparts, ktextwidgets, kwidgetsaddons, kwindowsystem,
+  kdelibs4support,
+  grantlee, grantleetheme, qtx11extras,
+  akonadi, akonadi-notes, akonadi-search, kcalutils,
+  kontactinterface, libkdepim, kmime, pimcommon, kpimtextedit,
+  kcalendarcore
+}:
+
+mkDerivation {
+  name = "knotes";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kcompletion kconfig kconfigwidgets kcoreaddons kcrash
+    kdbusaddons kdnssd kglobalaccel kiconthemes kitemmodels kitemviews
+    kcmutils knewstuff knotifications knotifyconfig kparts ktextwidgets
+    kwidgetsaddons kwindowsystem kdelibs4support
+    grantlee grantleetheme qtx11extras
+    akonadi akonadi-notes kcalutils kontactinterface
+    libkdepim kmime pimcommon kpimtextedit
+    akonadi-search
+    kcalendarcore
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kolf.nix b/nixpkgs/pkgs/applications/kde/kolf.nix
new file mode 100644
index 000000000000..f9fa31b665b2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kolf.nix
@@ -0,0 +1,16 @@
+{ lib
+, mkDerivation
+, extra-cmake-modules
+, kdoctools
+, libkdegames, kconfig, kio, ktextwidgets
+}:
+
+mkDerivation {
+  name = "kolf";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ libkdegames kio ktextwidgets ];
+  meta = {
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = with lib.maintainers; [ peterhoeg ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/kde/kolourpaint.nix b/nixpkgs/pkgs/applications/kde/kolourpaint.nix
new file mode 100644
index 000000000000..4501324a8717
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kolourpaint.nix
@@ -0,0 +1,17 @@
+{ lib
+, mkDerivation
+, extra-cmake-modules
+, kdoctools
+, kdelibs4support
+, libkexiv2
+}:
+
+mkDerivation {
+  name = "kolourpaint";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kdelibs4support libkexiv2 ];
+  meta = {
+    maintainers = [ lib.maintainers.fridh ];
+    license = with lib.licenses; [ gpl2 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/kde/kompare.nix b/nixpkgs/pkgs/applications/kde/kompare.nix
new file mode 100644
index 000000000000..bbaad3a02f83
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kompare.nix
@@ -0,0 +1,15 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  kiconthemes, kparts, ktexteditor, kwidgetsaddons, libkomparediff2
+}:
+
+mkDerivation {
+  name = "kompare";
+  meta = { license = with lib.licenses; [ gpl2 ]; };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kiconthemes kparts ktexteditor kwidgetsaddons libkomparediff2
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/konqueror.nix b/nixpkgs/pkgs/applications/kde/konqueror.nix
new file mode 100644
index 000000000000..62ed3db063ea
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/konqueror.nix
@@ -0,0 +1,28 @@
+{ lib
+, mkDerivation
+, extra-cmake-modules, kdoctools
+, kdelibs4support, kcmutils, khtml, kdesu
+, qtwebkit, qtwebengine, qtx11extras, qtscript, qtwayland
+}:
+
+mkDerivation {
+  name = "konqueror";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kdelibs4support kcmutils khtml kdesu
+    qtwebkit qtwebengine qtx11extras qtscript qtwayland
+  ];
+
+  # InitialPreference values are too high and any text/html ends up
+  # opening konqueror, even if firefox or chromium are also available.
+  # Resetting to 1, which is the default.
+  postPatch = ''
+    substituteInPlace kfmclient_html.desktop \
+      --replace InitialPreference=9 InitialPreference=1
+  '';
+
+  meta = {
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = with lib.maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/kde/konquest.nix b/nixpkgs/pkgs/applications/kde/konquest.nix
new file mode 100644
index 000000000000..cfef018de6cc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/konquest.nix
@@ -0,0 +1,18 @@
+{ lib
+, mkDerivation
+, extra-cmake-modules
+, kdoctools
+, kdelibs4support
+, libkdegames
+, qtquickcontrols
+}:
+
+mkDerivation {
+  name = "konquest";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kdelibs4support libkdegames qtquickcontrols ];
+  meta = {
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = with lib.maintainers; [ lheckemann ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/kde/konsole.nix b/nixpkgs/pkgs/applications/kde/konsole.nix
new file mode 100644
index 000000000000..ed26dc08bb6c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/konsole.nix
@@ -0,0 +1,24 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  kbookmarks, kcompletion, kconfig, kconfigwidgets, kcoreaddons, kguiaddons,
+  ki18n, kiconthemes, kinit, kdelibs4support, kio, knotifications,
+  knotifyconfig, kparts, kpty, kservice, ktextwidgets, kwidgetsaddons,
+  kwindowsystem, kxmlgui, qtscript, knewstuff
+}:
+
+mkDerivation {
+  name = "konsole";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = with lib.maintainers; [ ttuegel turion ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kbookmarks kcompletion kconfig kconfigwidgets kcoreaddons kdelibs4support
+    kguiaddons ki18n kiconthemes kinit kio knotifications knotifyconfig kparts kpty
+    kservice ktextwidgets kwidgetsaddons kwindowsystem kxmlgui qtscript knewstuff
+  ];
+
+  propagatedUserEnvPkgs = [ (lib.getBin kinit) ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kontact.nix b/nixpkgs/pkgs/applications/kde/kontact.nix
new file mode 100644
index 000000000000..978baa925e5a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kontact.nix
@@ -0,0 +1,23 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  qtwebengine,
+  kcmutils, kcrash, kdbusaddons, kparts, kwindowsystem,
+  akonadi, grantleetheme, kdepim-apps-libs, kontactinterface, kpimtextedit,
+  mailcommon, libkdepim
+}:
+
+mkDerivation {
+  name = "kontact";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    qtwebengine
+    kcmutils kcrash kdbusaddons kparts kwindowsystem
+    akonadi grantleetheme kdepim-apps-libs kontactinterface kpimtextedit
+    mailcommon libkdepim
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kontactinterface.nix b/nixpkgs/pkgs/applications/kde/kontactinterface.nix
new file mode 100644
index 000000000000..f2df628f3018
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kontactinterface.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  kiconthemes, kparts, kwindowsystem, kxmlgui
+}:
+
+mkDerivation {
+  name = "kontactinterface";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kiconthemes kparts kwindowsystem kxmlgui
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/korganizer.nix b/nixpkgs/pkgs/applications/kde/korganizer.nix
new file mode 100644
index 000000000000..2f37a1bac0fd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/korganizer.nix
@@ -0,0 +1,29 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  qtbase, qttools,
+  phonon,
+  knewstuff,
+  akonadi-calendar, akonadi-contacts, akonadi-notes, akonadi-search,
+  calendarsupport, eventviews, incidenceeditor, kcalutils, kdepim-apps-libs,
+  kholidays, kidentitymanagement, kldap, kmailtransport, kontactinterface,
+  kpimtextedit, pimcommon,
+}:
+
+mkDerivation {
+  name = "korganizer";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedBuildInputs = [
+    qtbase qttools
+    phonon
+    knewstuff
+    akonadi-calendar akonadi-contacts akonadi-notes akonadi-search
+    calendarsupport eventviews incidenceeditor kcalutils kdepim-apps-libs
+    kholidays kidentitymanagement kldap kmailtransport kontactinterface
+    kpimtextedit pimcommon
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kpat.nix b/nixpkgs/pkgs/applications/kde/kpat.nix
new file mode 100644
index 000000000000..9ee573532378
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kpat.nix
@@ -0,0 +1,25 @@
+{ lib
+, mkDerivation
+, extra-cmake-modules
+, knewstuff
+, shared-mime-info
+, libkdegames
+, freecell-solver
+}:
+
+mkDerivation {
+  name = "kpat";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    shared-mime-info
+  ];
+  buildInputs = [
+    knewstuff
+    libkdegames
+    freecell-solver
+  ];
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = with lib.maintainers; [ rnhmjoj ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/kde/kpimtextedit.nix b/nixpkgs/pkgs/applications/kde/kpimtextedit.nix
new file mode 100644
index 000000000000..4ede854d5460
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kpimtextedit.nix
@@ -0,0 +1,22 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  grantlee, kcodecs, kconfigwidgets, kemoticons, ki18n, kiconthemes, kio,
+  kdesignerplugin, ktextwidgets, sonnet, syntax-highlighting, qttools, 
+  qtspeech
+}:
+
+mkDerivation {
+  name = "kpimtextedit";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    grantlee kcodecs kconfigwidgets kemoticons ki18n kiconthemes kio kdesignerplugin
+    sonnet syntax-highlighting qttools qtspeech
+  ];
+  propagatedBuildInputs = [ ktextwidgets ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kpkpass.nix b/nixpkgs/pkgs/applications/kde/kpkpass.nix
new file mode 100644
index 000000000000..e9505a72e85e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kpkpass.nix
@@ -0,0 +1,15 @@
+{
+  mkDerivation, lib, extra-cmake-modules
+, qtbase, karchive, shared-mime-info
+}:
+
+mkDerivation {
+  name = "kpkpass";
+  meta = {
+    license = with lib.licenses; [ lgpl21 ];
+    maintainers = [ lib.maintainers.bkchr ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules shared-mime-info ];
+  buildInputs = [ qtbase karchive ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kqtquickcharts.nix b/nixpkgs/pkgs/applications/kde/kqtquickcharts.nix
new file mode 100644
index 000000000000..2b3dc5313d9a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kqtquickcharts.nix
@@ -0,0 +1,15 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  qtbase, qtdeclarative,
+}:
+
+mkDerivation {
+  name = "kqtquickcharts";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedBuildInputs = [ qtbase qtdeclarative ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/krdc.nix b/nixpkgs/pkgs/applications/kde/krdc.nix
new file mode 100644
index 000000000000..2b0a1a5c5141
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/krdc.nix
@@ -0,0 +1,25 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools, makeWrapper,
+  kcmutils, kcompletion, kconfig, kdnssd, knotifyconfig, kwallet, kwidgetsaddons,
+  kwindowsystem, libvncserver, freerdp
+}:
+
+mkDerivation {
+  name = "krdc";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools makeWrapper ];
+  buildInputs = [
+    kcmutils kcompletion kconfig kdnssd knotifyconfig kwallet kwidgetsaddons
+    kwindowsystem freerdp libvncserver
+  ];
+  postFixup = ''
+    wrapProgram $out/bin/krdc \
+      --prefix PATH : ${lib.makeBinPath [ freerdp ]}
+  '';
+  meta = with lib; {
+    homepage = "http://www.kde.org";
+    license = with licenses; [ gpl2 lgpl21 fdl12 bsd3 ];
+    maintainers = with maintainers; [ peterhoeg ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/kde/krfb.nix b/nixpkgs/pkgs/applications/kde/krfb.nix
new file mode 100644
index 000000000000..d2b96bf6100e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/krfb.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  kdelibs4support, kdnssd, libvncserver, libXtst, libXdamage, qtx11extras
+}:
+
+mkDerivation {
+  name = "krfb";
+  meta = {
+    license = with lib.licenses; [ gpl2 fdl12 ];
+    maintainers = with lib.maintainers; [ jerith666 ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ libvncserver libXtst libXdamage qtx11extras ];
+  propagatedBuildInputs = [ kdelibs4support kdnssd ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kruler.nix b/nixpkgs/pkgs/applications/kde/kruler.nix
new file mode 100644
index 000000000000..2018245cfcb2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kruler.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  knotifications, kwindowsystem, kxmlgui, qtx11extras
+}:
+
+mkDerivation {
+  name = "kruler";
+  meta = {
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = [ lib.maintainers.vandenoever ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kwindowsystem knotifications kxmlgui qtx11extras
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/ksmtp/0001-Use-KDE_INSTALL_TARGETS_DEFAULT_ARGS-when-installing.patch b/nixpkgs/pkgs/applications/kde/ksmtp/0001-Use-KDE_INSTALL_TARGETS_DEFAULT_ARGS-when-installing.patch
new file mode 100644
index 000000000000..74e83761eb7d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/ksmtp/0001-Use-KDE_INSTALL_TARGETS_DEFAULT_ARGS-when-installing.patch
@@ -0,0 +1,25 @@
+From 749769232e7387ec8c8f2d3da845d8a6ae7d5977 Mon Sep 17 00:00:00 2001
+From: gnidorah <gnidorah@users.noreply.github.com>
+Date: Fri, 22 Dec 2017 19:32:47 +0300
+Subject: [PATCH] Use KDE_INSTALL_TARGETS_DEFAULT_ARGS when installing targets
+
+---
+ src/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 83c2bcb..5f6d47c 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -51,7 +51,7 @@ ecm_generate_headers(KSMTP_CamelCase_HEADERS
+     REQUIRED_HEADERS KSMTP_HEADERS
+ )
+ 
+-install(TARGETS KPimSMTP EXPORT KPimSMTPTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS})
++install(TARGETS KPimSMTP EXPORT KPimSMTPTargets ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
+ 
+ install(FILES
+     ${CMAKE_CURRENT_BINARY_DIR}/ksmtp_export.h
+-- 
+2.15.1
+
diff --git a/nixpkgs/pkgs/applications/kde/ksmtp/default.nix b/nixpkgs/pkgs/applications/kde/ksmtp/default.nix
new file mode 100644
index 000000000000..6a5f51a17bfe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/ksmtp/default.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  kcoreaddons, kio, kmime, cyrus_sasl
+}:
+
+mkDerivation {
+  name = "ksmtp";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kcoreaddons kio kmime ];
+  propagatedBuildInputs = [ cyrus_sasl ];
+  patches = [ ./0001-Use-KDE_INSTALL_TARGETS_DEFAULT_ARGS-when-installing.patch ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/kspaceduel.nix b/nixpkgs/pkgs/applications/kde/kspaceduel.nix
new file mode 100644
index 000000000000..b18a3e7cf8f7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kspaceduel.nix
@@ -0,0 +1,22 @@
+{ mkDerivation, lib
+, extra-cmake-modules
+, cmake
+, kdbusaddons
+, ki18n
+, kconfigwidgets
+, kcrash
+, kxmlgui
+, libkdegames
+}:
+
+mkDerivation {
+  name = "kspaceduel";
+  meta.license = with lib.licenses; [ lgpl21 gpl3 ];
+  outputs = [ "out" "dev" ];
+  nativeBuildInputs = [ 
+    cmake extra-cmake-modules
+  ];
+  propagatedBuildInputs = [
+    kdbusaddons ki18n kconfigwidgets kcrash kxmlgui libkdegames
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/ksudoku.nix b/nixpkgs/pkgs/applications/kde/ksudoku.nix
new file mode 100644
index 000000000000..3641c1b33323
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/ksudoku.nix
@@ -0,0 +1,18 @@
+{ lib
+, mkDerivation
+, extra-cmake-modules
+, libGLU
+, kdoctools
+, kdeclarative
+, libkdegames
+}:
+
+mkDerivation {
+  name = "ksudoku";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ libGLU kdeclarative libkdegames ];
+  meta = {
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = with lib.maintainers; [ genesis ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/kde/ksystemlog.nix b/nixpkgs/pkgs/applications/kde/ksystemlog.nix
new file mode 100644
index 000000000000..bec92d55966d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/ksystemlog.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, gettext, kdoctools,
+  karchive, kconfig, kio
+}:
+
+mkDerivation {
+  name = "ksystemlog";
+
+  nativeBuildInputs = [ extra-cmake-modules gettext kdoctools ];
+  propagatedBuildInputs = [ karchive kconfig kio ];
+
+  meta = with lib; {
+    license = with licenses; [ gpl2 ];
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/kde/ktnef.nix b/nixpkgs/pkgs/applications/kde/ktnef.nix
new file mode 100644
index 000000000000..61f8672e47d9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/ktnef.nix
@@ -0,0 +1,18 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  kcalendarcore, kcalutils, kcontacts, kdelibs4support
+}:
+
+mkDerivation {
+  name = "ktnef";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedBuildInputs = [
+    kcalendarcore kcalutils kcontacts kdelibs4support
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/ktouch.nix b/nixpkgs/pkgs/applications/kde/ktouch.nix
new file mode 100644
index 000000000000..7e300ea7157e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/ktouch.nix
@@ -0,0 +1,28 @@
+{ mkDerivation, lib
+, extra-cmake-modules, kdoctools
+, kconfig, kconfigwidgets, kcoreaddons, kdeclarative, ki18n
+, kitemviews, kcmutils, kio, knewstuff, ktexteditor, kwidgetsaddons
+, kwindowsystem, kxmlgui, qtscript, qtdeclarative, kqtquickcharts
+, qtx11extras, qtgraphicaleffects, qtxmlpatterns, qtquickcontrols2
+, xorg
+}:
+
+
+  mkDerivation {
+    name = "ktouch";
+    meta = {
+      license = lib.licenses.gpl2;
+      maintainers = [ lib.maintainers.schmittlauch ];
+      description = "A touch typing tutor from the KDE software collection";
+    };
+    nativeBuildInputs = [ extra-cmake-modules kdoctools qtdeclarative ];
+    buildInputs = [
+      kconfig kconfigwidgets kcoreaddons kdeclarative ki18n
+      kitemviews kcmutils kio knewstuff ktexteditor kwidgetsaddons
+      kwindowsystem kxmlgui qtscript qtdeclarative kqtquickcharts
+      qtx11extras qtgraphicaleffects qtxmlpatterns qtquickcontrols2
+      xorg.libxkbfile xorg.libxcb
+    ];
+
+    enableParallelBuilding = true;
+}
diff --git a/nixpkgs/pkgs/applications/kde/kwalletmanager.nix b/nixpkgs/pkgs/applications/kde/kwalletmanager.nix
new file mode 100644
index 000000000000..e39e7e5157d2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/kwalletmanager.nix
@@ -0,0 +1,26 @@
+{ lib
+, mkDerivation
+, extra-cmake-modules
+, kdoctools
+, kauth
+, kcmutils
+, kconfigwidgets
+, kcoreaddons
+, kdbusaddons
+, kdelibs4support
+, kwallet
+, kxmlgui
+}:
+
+mkDerivation {
+  name = "kwalletmanager";
+  meta = {
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = with lib.maintainers; [ fridh ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kauth kcmutils kconfigwidgets kcoreaddons kdbusaddons kdelibs4support
+    kwallet kxmlgui
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/libgravatar.nix b/nixpkgs/pkgs/applications/kde/libgravatar.nix
new file mode 100644
index 000000000000..69a1b9e99cbb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/libgravatar.nix
@@ -0,0 +1,18 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  kconfig, kio, ktextwidgets, kwidgetsaddons, pimcommon
+}:
+
+mkDerivation {
+  name = "libgravatar";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedBuildInputs = [
+    kconfig kio ktextwidgets kwidgetsaddons pimcommon
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/libkcddb.nix b/nixpkgs/pkgs/applications/kde/libkcddb.nix
new file mode 100644
index 000000000000..3fd486056542
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/libkcddb.nix
@@ -0,0 +1,17 @@
+{ mkDerivation, lib, extra-cmake-modules, qtbase, kdoctools
+, kcodecs, ki18n, kio, kwidgetsaddons
+, libmusicbrainz5 }:
+
+mkDerivation {
+  name = "libkcddb";
+  meta = with lib; {
+    license = with licenses; [ gpl2 lgpl21 bsd3 ];
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ qtbase ];
+  propagatedBuildInputs = [
+    kcodecs ki18n kio kwidgetsaddons
+    libmusicbrainz5
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/libkdcraw.nix b/nixpkgs/pkgs/applications/kde/libkdcraw.nix
new file mode 100644
index 000000000000..70e3cb0e1956
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/libkdcraw.nix
@@ -0,0 +1,13 @@
+{ mkDerivation, lib, extra-cmake-modules, libraw, qtbase }:
+
+mkDerivation {
+  name = "libkdcraw";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 bsd3 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtbase ];
+  propagatedBuildInputs = [ libraw ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/libkdegames.nix b/nixpkgs/pkgs/applications/kde/libkdegames.nix
new file mode 100644
index 000000000000..494b193b8326
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/libkdegames.nix
@@ -0,0 +1,26 @@
+{ lib
+, mkDerivation
+, extra-cmake-modules
+, kdoctools
+, kdelibs4support
+, qtdeclarative
+, kdeclarative
+, kdnssd
+, knewstuff
+, openal
+, libsndfile
+, qtquickcontrols
+}:
+
+mkDerivation {
+  name = "libkdegames";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kdelibs4support qtdeclarative kdeclarative kdnssd knewstuff openal libsndfile
+    qtquickcontrols
+  ];
+  meta = {
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = with lib.maintainers; [ lheckemann ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/kde/libkdepim.nix b/nixpkgs/pkgs/applications/kde/libkdepim.nix
new file mode 100644
index 000000000000..92716e40a34f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/libkdepim.nix
@@ -0,0 +1,21 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-contacts, akonadi-search, kcmutils, kcodecs, kcompletion,
+  kconfigwidgets, kcontacts, ki18n, kiconthemes, kio, kitemviews, kjobwidgets,
+  kldap, kwallet,
+}:
+
+mkDerivation {
+  name = "libkdepim";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi akonadi-contacts akonadi-search kcmutils kcodecs kcompletion
+    kconfigwidgets kcontacts ki18n kiconthemes kio kitemviews kjobwidgets kldap
+    kwallet
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/libkexiv2.nix b/nixpkgs/pkgs/applications/kde/libkexiv2.nix
new file mode 100644
index 000000000000..8c8d244d6f6e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/libkexiv2.nix
@@ -0,0 +1,13 @@
+{ mkDerivation, lib, exiv2, extra-cmake-modules, qtbase }:
+
+mkDerivation {
+  name = "libkexiv2";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 bsd3 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtbase ];
+  propagatedBuildInputs = [ exiv2 ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/libkgapi.nix b/nixpkgs/pkgs/applications/kde/libkgapi.nix
new file mode 100644
index 000000000000..9d2d41c41d7f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/libkgapi.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  qtwebengine, kio, kcalendarcore, kcontacts,
+  cyrus_sasl
+}:
+
+mkDerivation {
+  name = "libkgapi";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ qtwebengine kio kcalendarcore kcontacts cyrus_sasl ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/libkipi.nix b/nixpkgs/pkgs/applications/kde/libkipi.nix
new file mode 100644
index 000000000000..c70d8407fc74
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/libkipi.nix
@@ -0,0 +1,12 @@
+{ mkDerivation, lib, extra-cmake-modules, kconfig, ki18n, kservice, kxmlgui }:
+
+mkDerivation {
+  name = "libkipi";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 bsd3 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kconfig ki18n kservice kxmlgui ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/libkleo.nix b/nixpkgs/pkgs/applications/kde/libkleo.nix
new file mode 100644
index 000000000000..0958a0e605f7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/libkleo.nix
@@ -0,0 +1,21 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  boost, qgpgme, kcodecs, kcompletion, kconfig, kcoreaddons, ki18n, kitemmodels,
+  kpimtextedit, kwidgetsaddons, kwindowsystem
+}:
+
+mkDerivation {
+  name = "libkleo";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    boost kcodecs kcompletion kconfig kcoreaddons ki18n kitemmodels
+    kpimtextedit kwidgetsaddons kwindowsystem
+  ];
+  propagatedBuildInputs = [ qgpgme ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/libkmahjongg.nix b/nixpkgs/pkgs/applications/kde/libkmahjongg.nix
new file mode 100644
index 000000000000..4b7b8538290c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/libkmahjongg.nix
@@ -0,0 +1,18 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  kcompletion, kconfig, kconfigwidgets, kcoreaddons, ki18n,
+  kwidgetsaddons
+}:
+
+mkDerivation {
+  name = "libkmahjongg";
+  meta = {
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = with lib.maintainers; [ genesis ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kcompletion kconfig kconfigwidgets kcoreaddons ki18n
+    kwidgetsaddons ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/libkomparediff2.nix b/nixpkgs/pkgs/applications/kde/libkomparediff2.nix
new file mode 100644
index 000000000000..cae2aec5668d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/libkomparediff2.nix
@@ -0,0 +1,7 @@
+{ mkDerivation, extra-cmake-modules, ki18n, kxmlgui, kcodecs, kio }:
+
+mkDerivation {
+  name = "libkomparediff2";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedBuildInputs = [ kcodecs ki18n kxmlgui kio ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/libksane.nix b/nixpkgs/pkgs/applications/kde/libksane.nix
new file mode 100644
index 000000000000..f92f21de7fb8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/libksane.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, qtbase,
+  ki18n, ktextwidgets, kwallet, kwidgetsaddons,
+  sane-backends
+}:
+
+mkDerivation {
+  name = "libksane";
+  meta = with lib; {
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ pshendry ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtbase ki18n ktextwidgets kwallet kwidgetsaddons sane-backends ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/libksieve.nix b/nixpkgs/pkgs/applications/kde/libksieve.nix
new file mode 100644
index 000000000000..dd33f759c313
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/libksieve.nix
@@ -0,0 +1,23 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, karchive, kcompletion, kiconthemes, kidentitymanagement, kio,
+  kmailtransport, knewstuff, kwindowsystem, kxmlgui, libkdepim, pimcommon,
+  qtwebengine, syntax-highlighting,
+}:
+
+mkDerivation {
+  name = "libksieve";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  outputs = [ "out" "dev" ];
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi karchive kcompletion kiconthemes kidentitymanagement kio
+    kmailtransport knewstuff kwindowsystem kxmlgui libkdepim pimcommon
+    qtwebengine
+  ];
+  propagatedBuildInputs = [ syntax-highlighting ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/mailcommon.nix b/nixpkgs/pkgs/applications/kde/mailcommon.nix
new file mode 100644
index 000000000000..44edea8f55e9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/mailcommon.nix
@@ -0,0 +1,22 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-mime, karchive, kcodecs, kcompletion, kconfigwidgets,
+  kdbusaddons, kdesignerplugin, kiconthemes, kio, kitemmodels, kldap,
+  kmailtransport, kwindowsystem, mailimporter, messagelib, phonon, libkdepim
+}:
+
+mkDerivation {
+  name = "mailcommon";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi akonadi-mime karchive kcodecs kcompletion kconfigwidgets kdbusaddons
+    kdesignerplugin kiconthemes kio kitemmodels kldap kmailtransport
+    kwindowsystem mailimporter messagelib phonon libkdepim
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/mailimporter.nix b/nixpkgs/pkgs/applications/kde/mailimporter.nix
new file mode 100644
index 000000000000..f002ff0f3403
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/mailimporter.nix
@@ -0,0 +1,19 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-mime, karchive, kcompletion, kconfig, kcoreaddons, ki18n,
+  kmime, kxmlgui, libkdepim
+}:
+
+mkDerivation {
+  name = "mailimporter";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi akonadi-mime karchive kcompletion kconfig kcoreaddons ki18n kmime
+    kxmlgui libkdepim
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/marble.nix b/nixpkgs/pkgs/applications/kde/marble.nix
new file mode 100644
index 000000000000..b02e29e33513
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/marble.nix
@@ -0,0 +1,20 @@
+{ mkDerivation, lib
+, extra-cmake-modules, kdoctools
+, qtscript, qtsvg, qtquickcontrols, qtwebkit
+, krunner, shared-mime-info, kparts, knewstuff
+, gpsd, perl
+}:
+
+mkDerivation {
+  name = "marble";
+  meta.license = with lib.licenses; [ lgpl21 gpl3 ];
+  outputs = [ "out" "dev" ];
+  nativeBuildInputs = [ extra-cmake-modules kdoctools perl ];
+  propagatedBuildInputs = [
+    qtscript qtsvg qtquickcontrols qtwebkit shared-mime-info krunner kparts
+    knewstuff gpsd
+  ];
+  preConfigure = ''
+    cmakeFlags+=" -DINCLUDE_INSTALL_DIR=''${!outputDev}/include"
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/kde/mbox-importer.nix b/nixpkgs/pkgs/applications/kde/mbox-importer.nix
new file mode 100644
index 000000000000..0704003353ae
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/mbox-importer.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-search, kconfig, kservice, kio, mailcommon, mailimporter, messagelib
+}:
+
+mkDerivation {
+  name = "mbox-importer";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi akonadi-search kconfig kservice kio mailcommon mailimporter messagelib
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/messagelib.nix b/nixpkgs/pkgs/applications/kde/messagelib.nix
new file mode 100644
index 000000000000..23920a081c06
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/messagelib.nix
@@ -0,0 +1,29 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-mime, akonadi-notes, akonadi-search, gpgme, grantlee,
+  grantleetheme, karchive, kcodecs, kconfig, kconfigwidgets, kcontacts,
+  kdepim-apps-libs, kiconthemes, kidentitymanagement, kio, kjobwidgets, kldap,
+  kmailtransport, kmbox, kmime, kwindowsystem, libgravatar, libkdepim, libkleo,
+  pimcommon, qtwebengine, qtwebkit, syntax-highlighting
+}:
+
+mkDerivation {
+  name = "messagelib";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi-notes akonadi-search gpgme grantlee grantleetheme karchive kcodecs
+    kconfig kconfigwidgets kdepim-apps-libs kiconthemes kio kjobwidgets kldap
+    kmailtransport kmbox kmime kwindowsystem libgravatar libkdepim qtwebkit
+    syntax-highlighting
+  ];
+  propagatedBuildInputs = [
+    akonadi akonadi-mime kcontacts kidentitymanagement kmime libkleo pimcommon
+    qtwebengine
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/minuet.nix b/nixpkgs/pkgs/applications/kde/minuet.nix
new file mode 100644
index 000000000000..cd98d56b86dd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/minuet.nix
@@ -0,0 +1,24 @@
+{ mkDerivation
+, lib, extra-cmake-modules, gettext, python
+, drumstick, fluidsynth
+, kcoreaddons, kcrash, kdoctools
+, qtquickcontrols2, qtsvg, qttools, qtdeclarative
+}:
+
+mkDerivation {
+  name = "minuet";
+  meta = with lib; {
+    license = with licenses; [ lgpl21 gpl3 ];
+    maintainers = with maintainers; [ peterhoeg HaoZeke ];
+  };
+
+  nativeBuildInputs = [ extra-cmake-modules gettext kdoctools python qtdeclarative ];
+
+  propagatedBuildInputs = [
+    drumstick fluidsynth
+    kcoreaddons kcrash
+    qtquickcontrols2 qtsvg qttools
+  ];
+
+  enableParallelBuilding = true;
+}
diff --git a/nixpkgs/pkgs/applications/kde/mlt-path.patch b/nixpkgs/pkgs/applications/kde/mlt-path.patch
new file mode 100644
index 000000000000..9bfb66c1a839
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/mlt-path.patch
@@ -0,0 +1,22 @@
+diff -ruN old/src/kdenlivesettings.kcfg new/src/kdenlivesettings.kcfg
+--- old/src/kdenlivesettings.kcfg	2019-09-10 23:20:27.555392353 -0400
++++ new/src/kdenlivesettings.kcfg	2019-09-10 23:25:47.533964155 -0400
+@@ -378,14 +378,14 @@
+ </group>
+ 
+   <group name="env">
+-    <entry name="mltpath" type="Path">
++    <entry name="mltpath" type="Path" hidden="true">
+       <label>Mlt framework install path.</label>
+-      <default></default>
++      <default>@mlt@/share/mlt/profiles</default>
+     </entry>
+ 
+-    <entry name="rendererpath" type="Path">
++    <entry name="rendererpath" type="Path" hidden="true">
+       <label>Mlt melt renderer install path.</label>
+-      <default></default>
++      <default>@mlt@/bin/melt</default>
+     </entry>
+ 
+     <entry name="ffmpegpath" type="Path">
diff --git a/nixpkgs/pkgs/applications/kde/okular.nix b/nixpkgs/pkgs/applications/kde/okular.nix
new file mode 100644
index 000000000000..3bcdb9ca8424
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/okular.nix
@@ -0,0 +1,36 @@
+{
+  stdenv, mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  breeze-icons, chmlib ? null, discount, djvulibre, ebook_tools, kactivities,
+  karchive, kbookmarks, kcompletion, kconfig, kconfigwidgets, kcoreaddons,
+  kdbusaddons, kdegraphics-mobipocket, kiconthemes, kjs, khtml, kio, kparts,
+  kpty, kwallet, kwindowsystem, libkexiv2, libspectre, libzip, phonon, poppler,
+  qca-qt5, qtdeclarative, qtsvg, threadweaver, kcrash
+}:
+
+mkDerivation {
+  name = "okular";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    breeze-icons discount djvulibre ebook_tools kactivities karchive kbookmarks
+    kcompletion kconfig kconfigwidgets kcoreaddons kdbusaddons
+    kdegraphics-mobipocket kiconthemes kjs khtml kio kparts kpty kwallet
+    kwindowsystem libkexiv2 libspectre libzip phonon poppler qca-qt5
+    qtdeclarative qtsvg threadweaver kcrash
+  ] ++ lib.optional (!stdenv.isAarch64) chmlib;
+
+  # InitialPreference values are too high and end up making okular
+  # default for anything considered text/plain. Resetting to 1, which
+  # is the default.
+  postPatch = ''
+    substituteInPlace generators/txt/okularApplication_txt.desktop \
+      --replace InitialPreference=3 InitialPreference=1
+  '';
+
+  meta = with lib; {
+    homepage = "http://www.kde.org";
+    license = with licenses; [ gpl2 lgpl21 fdl12 bsd3 ];
+    maintainers = with maintainers; [ ttuegel turion ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/kde/pim-data-exporter.nix b/nixpkgs/pkgs/applications/kde/pim-data-exporter.nix
new file mode 100644
index 000000000000..82cdf19df948
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/pim-data-exporter.nix
@@ -0,0 +1,23 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-notes, kcalendarcore, kcmutils, kcrash, kdbusaddons,
+  kidentitymanagement, kldap, kmailtransport, knewstuff, knotifications,
+  knotifyconfig, kparts, kross, ktexteditor, kwallet, libkdepim, libkleo,
+  pimcommon, qttools, karchive, mailcommon, messagelib
+}:
+
+mkDerivation {
+  name = "pim-data-exporter";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi akonadi-notes kcalendarcore kcmutils kcrash kdbusaddons
+    kidentitymanagement kldap kmailtransport knewstuff knotifications
+    knotifyconfig kparts kross ktexteditor kwallet libkdepim libkleo pimcommon
+    qttools karchive mailcommon messagelib
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/pim-sieve-editor.nix b/nixpkgs/pkgs/applications/kde/pim-sieve-editor.nix
new file mode 100644
index 000000000000..c83df2e0e498
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/pim-sieve-editor.nix
@@ -0,0 +1,19 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  kdbusaddons, kcrash, kbookmarks, kiconthemes, kio, kpimtextedit,
+  kmailtransport, pimcommon, libksieve
+}:
+
+mkDerivation {
+  name = "pim-sieve-editor";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kdbusaddons kcrash kbookmarks kiconthemes kio kpimtextedit kmailtransport
+    pimcommon libksieve
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/pimcommon.nix b/nixpkgs/pkgs/applications/kde/pimcommon.nix
new file mode 100644
index 000000000000..cd9ff2528fac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/pimcommon.nix
@@ -0,0 +1,26 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-contacts, akonadi-mime, grantlee, karchive, kcodecs,
+  kcompletion, kconfig, kconfigwidgets, kcontacts, kdbusaddons,
+  kiconthemes, kimap, kio, kitemmodels, kjobwidgets, knewstuff, kpimtextedit,
+  kpurpose, kwallet, kwindowsystem, libkdepim, qtwebengine
+}:
+
+mkDerivation {
+  name = "pimcommon";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi-mime grantlee karchive kcodecs kcompletion kconfigwidgets
+    kdbusaddons kiconthemes kio kitemmodels kjobwidgets knewstuff kpimtextedit
+    kpurpose kwallet kwindowsystem libkdepim qtwebengine
+  ];
+  propagatedBuildInputs = [
+    akonadi akonadi-contacts kconfig kcontacts kimap
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/print-manager.nix b/nixpkgs/pkgs/applications/kde/print-manager.nix
new file mode 100644
index 000000000000..f0501ffadee4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/print-manager.nix
@@ -0,0 +1,26 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  cups, ki18n,
+  kconfig, kconfigwidgets, kdbusaddons, kiconthemes, kcmutils, kio,
+  knotifications, kwidgetsaddons, kwindowsystem, kitemviews, plasma-framework,
+  qtdeclarative
+}:
+
+mkDerivation {
+  name = "print-manager";
+  meta = {
+    license = [ lib.licenses.gpl2 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ cups ki18n ];
+  propagatedBuildInputs = [
+    kconfig kconfigwidgets kdbusaddons kiconthemes kcmutils knotifications
+    kwidgetsaddons kitemviews kio kwindowsystem plasma-framework qtdeclarative
+  ];
+  outputs = [ "out" "dev" ];
+  # Fix build with cups deprecations etc.
+  # See: https://github.com/NixOS/nixpkgs/issues/73334
+  NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations -Wno-error=format-security";
+}
diff --git a/nixpkgs/pkgs/applications/kde/rocs.nix b/nixpkgs/pkgs/applications/kde/rocs.nix
new file mode 100644
index 000000000000..feae7ca81dec
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/rocs.nix
@@ -0,0 +1,25 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, boost,
+  qtbase, qtscript, qtquickcontrols, qtwebkit, qtxmlpatterns, grantlee,
+  kdoctools, karchive, kxmlgui, kcrash, kdeclarative, ktexteditor, kguiaddons
+}:
+
+mkDerivation {
+  name = "rocs";
+
+  meta = with lib; {
+    homepage = "https://edu.kde.org/rocs/";
+    description = "A graph theory IDE.";
+    license = with licenses; [ gpl2 lgpl21 fdl12 ];
+    platforms = lib.platforms.linux;
+    maintainers = with maintainers; [ knairda ];
+  };
+
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    boost
+    qtbase qtscript qtquickcontrols qtwebkit qtxmlpatterns grantlee
+    kxmlgui kcrash kdeclarative karchive ktexteditor kguiaddons
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/spectacle.nix b/nixpkgs/pkgs/applications/kde/spectacle.nix
new file mode 100644
index 000000000000..2d46b3cdaab3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/spectacle.nix
@@ -0,0 +1,24 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  ki18n, xcb-util-cursor,
+  kconfig, kcoreaddons, kdbusaddons, kdeclarative, kio, kipi-plugins,
+  knotifications, kscreen, kwidgetsaddons, kwindowsystem, kxmlgui, libkipi,
+  qtx11extras, knewstuff, kwayland, qttools
+}:
+
+mkDerivation {
+  name = "spectacle";
+  meta = with lib; { maintainers = with maintainers; [ ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kconfig kcoreaddons kdbusaddons kdeclarative ki18n kio knotifications
+    kscreen kwidgetsaddons kwindowsystem kxmlgui libkipi qtx11extras xcb-util-cursor
+    knewstuff kwayland
+  ];
+  postPatch = ''
+    substituteInPlace desktop/org.kde.spectacle.desktop \
+      --replace "Exec=qdbus" "Exec=${lib.getBin qttools}/bin/qdbus"
+  '';
+  propagatedUserEnvPkgs = [ kipi-plugins libkipi ];
+}
diff --git a/nixpkgs/pkgs/applications/kde/srcs.nix b/nixpkgs/pkgs/applications/kde/srcs.nix
new file mode 100644
index 000000000000..dc6eb0f09e8c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/srcs.nix
@@ -0,0 +1,1734 @@
+# DO NOT EDIT! This file is generated automatically.
+# Command: ./maintainers/scripts/fetch-kde-qt.sh pkgs/applications/kde/fetch.sh
+{ fetchurl, mirror }:
+
+{
+  akonadi = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/akonadi-19.12.3.tar.xz";
+      sha256 = "e41714d81ecbb629aaa0b267e0c32a4b1d83c6a45cf3f37d52232003b4c0f325";
+      name = "akonadi-19.12.3.tar.xz";
+    };
+  };
+  akonadi-calendar = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/akonadi-calendar-19.12.3.tar.xz";
+      sha256 = "c58d18153ef711a79962ba907e44338a0ddd62968e0a6c50486bba09a6e2a446";
+      name = "akonadi-calendar-19.12.3.tar.xz";
+    };
+  };
+  akonadi-calendar-tools = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/akonadi-calendar-tools-19.12.3.tar.xz";
+      sha256 = "ad2c23cf188228dc697d39e2120b56ce445bbea3eb46721794cd6344aa7e94ba";
+      name = "akonadi-calendar-tools-19.12.3.tar.xz";
+    };
+  };
+  akonadiconsole = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/akonadiconsole-19.12.3.tar.xz";
+      sha256 = "0dedcccfcfd7e6ad9a5af0aa61ce05f26cbb625d8bf6b6d210ac6e3c5813487f";
+      name = "akonadiconsole-19.12.3.tar.xz";
+    };
+  };
+  akonadi-contacts = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/akonadi-contacts-19.12.3.tar.xz";
+      sha256 = "b0baed9edb8c05b6d9b8db84239cd83a334d8f1d14d4aa8027dc1139a543eadf";
+      name = "akonadi-contacts-19.12.3.tar.xz";
+    };
+  };
+  akonadi-import-wizard = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/akonadi-import-wizard-19.12.3.tar.xz";
+      sha256 = "2c1491e4f5994ed0d317a27cc717184a86f7d92c4b44f8bd056e147e80bee8c5";
+      name = "akonadi-import-wizard-19.12.3.tar.xz";
+    };
+  };
+  akonadi-mime = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/akonadi-mime-19.12.3.tar.xz";
+      sha256 = "13bdf9a233a183d5aeee1be0991617fca6d73ffd35bc14ca0d18714149f04392";
+      name = "akonadi-mime-19.12.3.tar.xz";
+    };
+  };
+  akonadi-notes = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/akonadi-notes-19.12.3.tar.xz";
+      sha256 = "a34c2420190925b985b0629d7d2d19be04443cfeeaf284229666338e039e56e2";
+      name = "akonadi-notes-19.12.3.tar.xz";
+    };
+  };
+  akonadi-search = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/akonadi-search-19.12.3.tar.xz";
+      sha256 = "60072a36f6c817d009a8476bad2e80c4131b14358e03b4889a03aa42340ed041";
+      name = "akonadi-search-19.12.3.tar.xz";
+    };
+  };
+  akregator = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/akregator-19.12.3.tar.xz";
+      sha256 = "63db0f6c75bffe9235122201445d151f4eaa7061d2a8df4eb924bca1a4600f68";
+      name = "akregator-19.12.3.tar.xz";
+    };
+  };
+  analitza = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/analitza-19.12.3.tar.xz";
+      sha256 = "47ca3acaf2d2f52e91cd2253742ab97d9b07abc3fef0d632bfc36d253dbf161b";
+      name = "analitza-19.12.3.tar.xz";
+    };
+  };
+  ark = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ark-19.12.3.tar.xz";
+      sha256 = "78594029729c197fc90321850696f1bd189b40d8d7fbc9faf51ad6b2ab744a07";
+      name = "ark-19.12.3.tar.xz";
+    };
+  };
+  artikulate = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/artikulate-19.12.3.tar.xz";
+      sha256 = "c27a5cb98a8e2975638fe74683a73f92c160ce133b133878844062dd99ffded6";
+      name = "artikulate-19.12.3.tar.xz";
+    };
+  };
+  audiocd-kio = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/audiocd-kio-19.12.3.tar.xz";
+      sha256 = "b920170ae816f29a61a6f6b25df68c9125a5d4d9fec225feee45e46317d64d42";
+      name = "audiocd-kio-19.12.3.tar.xz";
+    };
+  };
+  baloo-widgets = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/baloo-widgets-19.12.3.tar.xz";
+      sha256 = "236c0bb0bcb345f4ce5f07d591bded6221383bc7b190b42b96999893390cd8a5";
+      name = "baloo-widgets-19.12.3.tar.xz";
+    };
+  };
+  blinken = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/blinken-19.12.3.tar.xz";
+      sha256 = "06ef385ab73d99fa3f1925a6f2ef522f691d04cd594777f5d9fa52a5f2e45a94";
+      name = "blinken-19.12.3.tar.xz";
+    };
+  };
+  bomber = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/bomber-19.12.3.tar.xz";
+      sha256 = "ea4926fe08c62ac5da28c3bb480a6986e51f7a77e3245d1dc1603c38617da4b0";
+      name = "bomber-19.12.3.tar.xz";
+    };
+  };
+  bovo = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/bovo-19.12.3.tar.xz";
+      sha256 = "ac67aff75c1e8e0d1a1a8142ae94431e4f39565f411287f57c2778f8820316af";
+      name = "bovo-19.12.3.tar.xz";
+    };
+  };
+  calendarsupport = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/calendarsupport-19.12.3.tar.xz";
+      sha256 = "ecbd194b5aa39284d33f7f2ddca75175f8699efee1bfbd5000ea10076567bae8";
+      name = "calendarsupport-19.12.3.tar.xz";
+    };
+  };
+  cantor = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/cantor-19.12.3.tar.xz";
+      sha256 = "8347160f18993f53c857ec0d418dfebbc533878ad9f480047646d121e4e644cb";
+      name = "cantor-19.12.3.tar.xz";
+    };
+  };
+  cervisia = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/cervisia-19.12.3.tar.xz";
+      sha256 = "733a90f521cd79157f6d02eeb28376bc703239800473e8cf366611dd4f3342a6";
+      name = "cervisia-19.12.3.tar.xz";
+    };
+  };
+  dolphin = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/dolphin-19.12.3.tar.xz";
+      sha256 = "ba16f4d5be5ccc3c135a913f2e3c7dd3b7a492cfc9ec9ae518f714fcd7c2ab47";
+      name = "dolphin-19.12.3.tar.xz";
+    };
+  };
+  dolphin-plugins = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/dolphin-plugins-19.12.3.tar.xz";
+      sha256 = "7dbd5c0fe4281c46df789f86f468c4ea32949285055cae4652bab3de59acdfd3";
+      name = "dolphin-plugins-19.12.3.tar.xz";
+    };
+  };
+  dragon = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/dragon-19.12.3.tar.xz";
+      sha256 = "c5b09b2bd37f4e86f8412d3b950331d330257ba53278b1a569f36bf3fbf560ee";
+      name = "dragon-19.12.3.tar.xz";
+    };
+  };
+  elisa = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/elisa-19.12.3.tar.xz";
+      sha256 = "28ad795c1d993969d49ab71514129589a71ee6fe8a2de785e22f17f5af7c3d32";
+      name = "elisa-19.12.3.tar.xz";
+    };
+  };
+  eventviews = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/eventviews-19.12.3.tar.xz";
+      sha256 = "e2ac6a77c6bdee008229a2b03262ac5602e0cabfd325a92df58be63aaa7db662";
+      name = "eventviews-19.12.3.tar.xz";
+    };
+  };
+  ffmpegthumbs = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ffmpegthumbs-19.12.3.tar.xz";
+      sha256 = "cc4a1c3b4768dc674d210294a9957d622448cbe9cdaf713c1cb40bff3a79260e";
+      name = "ffmpegthumbs-19.12.3.tar.xz";
+    };
+  };
+  filelight = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/filelight-19.12.3.tar.xz";
+      sha256 = "9ea78509f932cd2bd553d934e2af75c25d0b65d85d2b0ab4a007ac5929b2d3b5";
+      name = "filelight-19.12.3.tar.xz";
+    };
+  };
+  granatier = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/granatier-19.12.3.tar.xz";
+      sha256 = "aa2e410e4eeae74f3902028069955017a31a922dff98b81850f20743f7b54c95";
+      name = "granatier-19.12.3.tar.xz";
+    };
+  };
+  grantlee-editor = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/grantlee-editor-19.12.3.tar.xz";
+      sha256 = "5df3e5ce7933290f9f6423bdbcb0ff5614a1a4b6fda250a37bd3ed57647f8a3c";
+      name = "grantlee-editor-19.12.3.tar.xz";
+    };
+  };
+  grantleetheme = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/grantleetheme-19.12.3.tar.xz";
+      sha256 = "cc0ce448c9d8396dcadea2a43089feca8e1074572df42752f70dd176676f29f9";
+      name = "grantleetheme-19.12.3.tar.xz";
+    };
+  };
+  gwenview = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/gwenview-19.12.3.tar.xz";
+      sha256 = "b453cd55b7409bf8e4446a1b714dc66e73a0376d2da65b184b82f786767164e7";
+      name = "gwenview-19.12.3.tar.xz";
+    };
+  };
+  incidenceeditor = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/incidenceeditor-19.12.3.tar.xz";
+      sha256 = "c608a95f6d09433b378f5df0243eff77be3738fb56f99ab439774f2cad5908a6";
+      name = "incidenceeditor-19.12.3.tar.xz";
+    };
+  };
+  juk = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/juk-19.12.3.tar.xz";
+      sha256 = "4bc4210d223afc23cb6edc9262eceee038ecc6243a550698e676230168943611";
+      name = "juk-19.12.3.tar.xz";
+    };
+  };
+  k3b = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/k3b-19.12.3.tar.xz";
+      sha256 = "832c314d528ed21971d9d9d26c1c4d6c61323c9b3b01787d710541e3651575a5";
+      name = "k3b-19.12.3.tar.xz";
+    };
+  };
+  kaccounts-integration = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kaccounts-integration-19.12.3.tar.xz";
+      sha256 = "452b95113de5fb0d19a13ef75e229ee07b0e92cc1e7a17e9a2dc7879121d9d33";
+      name = "kaccounts-integration-19.12.3.tar.xz";
+    };
+  };
+  kaccounts-providers = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kaccounts-providers-19.12.3.tar.xz";
+      sha256 = "8774e9a8113e4aba593afeff655e38f6259c78e7dbaf1d95ea00235be880f3dd";
+      name = "kaccounts-providers-19.12.3.tar.xz";
+    };
+  };
+  kaddressbook = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kaddressbook-19.12.3.tar.xz";
+      sha256 = "1dede421e6fef2b1abc7d36dd1855cef43cc82de909a432cd38cff42d4168fba";
+      name = "kaddressbook-19.12.3.tar.xz";
+    };
+  };
+  kajongg = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kajongg-19.12.3.tar.xz";
+      sha256 = "23e2b1be670b48bdd027e4e7a57e86a94b322afe6d37d8492c3d17689decfae5";
+      name = "kajongg-19.12.3.tar.xz";
+    };
+  };
+  kalarm = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kalarm-19.12.3.tar.xz";
+      sha256 = "526ab8884752c15622233db8b72e88d0c22a7a1bd265763d850b6e18e32de417";
+      name = "kalarm-19.12.3.tar.xz";
+    };
+  };
+  kalarmcal = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kalarmcal-19.12.3.tar.xz";
+      sha256 = "0ec5188f1164d91de702639ab2f85a713889feef48fc02dfe7385c945d06aa60";
+      name = "kalarmcal-19.12.3.tar.xz";
+    };
+  };
+  kalgebra = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kalgebra-19.12.3.tar.xz";
+      sha256 = "ac865dded31b61c438ddb9db721543b8facba79c9b39365750b4bebfe2645640";
+      name = "kalgebra-19.12.3.tar.xz";
+    };
+  };
+  kalzium = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kalzium-19.12.3.tar.xz";
+      sha256 = "e44f359d1343c30cf1993a3970a3e610d0d5782f92a6b331b035cf4fef104195";
+      name = "kalzium-19.12.3.tar.xz";
+    };
+  };
+  kamera = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kamera-19.12.3.tar.xz";
+      sha256 = "22e19527bf9748cdc298be4c3fa2cb0a3b8b337da3a3a804c9d6066d7f3e1110";
+      name = "kamera-19.12.3.tar.xz";
+    };
+  };
+  kamoso = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kamoso-19.12.3.tar.xz";
+      sha256 = "9ae14c4c80cdbbf2ce2e92db5e9c814fbd685e81aa5c319aac5477649fc39fe4";
+      name = "kamoso-19.12.3.tar.xz";
+    };
+  };
+  kanagram = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kanagram-19.12.3.tar.xz";
+      sha256 = "441cae90d3b70dbef40bebbcf1325fa06e0df174a3f961b4b117a5fa1b40d6e3";
+      name = "kanagram-19.12.3.tar.xz";
+    };
+  };
+  kapman = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kapman-19.12.3.tar.xz";
+      sha256 = "3c81e3395ce2b2ea0937b09c0836cb58b8a941c2b7e2a27bd9741b2a9be1c1dd";
+      name = "kapman-19.12.3.tar.xz";
+    };
+  };
+  kapptemplate = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kapptemplate-19.12.3.tar.xz";
+      sha256 = "5bef4e4fb74da3102cba6672584195962514ee3f53fb369b48d492d6ce7255ad";
+      name = "kapptemplate-19.12.3.tar.xz";
+    };
+  };
+  kate = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kate-19.12.3.tar.xz";
+      sha256 = "f60b52e5a6a78920ac703a458f1eaf0ced02ffcd8b5f2d49de9a48674eeb007c";
+      name = "kate-19.12.3.tar.xz";
+    };
+  };
+  katomic = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/katomic-19.12.3.tar.xz";
+      sha256 = "d7ed527e2546e94cb091e433a2e61618301152704c48e1f003e1f8e60b4f0cbd";
+      name = "katomic-19.12.3.tar.xz";
+    };
+  };
+  kbackup = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kbackup-19.12.3.tar.xz";
+      sha256 = "1761009f9cd854d3fb4f98eb24b5ee7f3c42c4541f7cfb2ff1589786c86bdc99";
+      name = "kbackup-19.12.3.tar.xz";
+    };
+  };
+  kblackbox = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kblackbox-19.12.3.tar.xz";
+      sha256 = "dffb910a5d429dfc231b7d2185119430856d26af2c027d34c551a6d664ae49c6";
+      name = "kblackbox-19.12.3.tar.xz";
+    };
+  };
+  kblocks = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kblocks-19.12.3.tar.xz";
+      sha256 = "5bc5cb14b91c9b230563388b4d935211975bae34ed36cb0479cbf25bc3b652fb";
+      name = "kblocks-19.12.3.tar.xz";
+    };
+  };
+  kblog = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kblog-19.12.3.tar.xz";
+      sha256 = "3fba584c4c217c5b5b3be52752f8f3c371fb877fe3b730a48711028fedc6b3d4";
+      name = "kblog-19.12.3.tar.xz";
+    };
+  };
+  kbounce = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kbounce-19.12.3.tar.xz";
+      sha256 = "d1b7ac99e54070e1e28a3449e8773691e90625c9f881cf94352ef752700197d0";
+      name = "kbounce-19.12.3.tar.xz";
+    };
+  };
+  kbreakout = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kbreakout-19.12.3.tar.xz";
+      sha256 = "ca662c9f2c6765f5f8b07bd4cc2e2aa0a43b69fec6428c3deda2cfad0ab675fa";
+      name = "kbreakout-19.12.3.tar.xz";
+    };
+  };
+  kbruch = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kbruch-19.12.3.tar.xz";
+      sha256 = "522ddae0b2ec640e70c717a9fe0d6a95aef1ed3fe2acbca4b93a99a309abd559";
+      name = "kbruch-19.12.3.tar.xz";
+    };
+  };
+  kcachegrind = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kcachegrind-19.12.3.tar.xz";
+      sha256 = "a30b70bac32f2b33c3c90b8c17754cfbf7d293c9eff0d573747eca2b45353b41";
+      name = "kcachegrind-19.12.3.tar.xz";
+    };
+  };
+  kcalc = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kcalc-19.12.3.tar.xz";
+      sha256 = "bbda4fc074e1ea748e95840aa79c51fdf0a1943ebb63ce6c7b68c197831258bd";
+      name = "kcalc-19.12.3.tar.xz";
+    };
+  };
+  kcalutils = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kcalutils-19.12.3.tar.xz";
+      sha256 = "00da1f331110a63c3d3c2c96394ead3d282f582d73fa925065560a50807fb7ff";
+      name = "kcalutils-19.12.3.tar.xz";
+    };
+  };
+  kcharselect = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kcharselect-19.12.3.tar.xz";
+      sha256 = "9be6ac607148b0815bd985075fbb97d44561fdd6a955b60f0afc728f9cbd978b";
+      name = "kcharselect-19.12.3.tar.xz";
+    };
+  };
+  kcolorchooser = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kcolorchooser-19.12.3.tar.xz";
+      sha256 = "cb0395c1b4f953fd51129cfe5088702ec261f84cc045f889e22c13e81793744a";
+      name = "kcolorchooser-19.12.3.tar.xz";
+    };
+  };
+  kcron = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kcron-19.12.3.tar.xz";
+      sha256 = "22d07834e8431d0fcc756a0e7d92d4e8993008766bf336254f8650c9455c9ab0";
+      name = "kcron-19.12.3.tar.xz";
+    };
+  };
+  kdav = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kdav-19.12.3.tar.xz";
+      sha256 = "7a0ed47378e064536b26dfdfcf7abcdb8dd2ec253a7bbcef7962b701d368872a";
+      name = "kdav-19.12.3.tar.xz";
+    };
+  };
+  kdebugsettings = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kdebugsettings-19.12.3.tar.xz";
+      sha256 = "ad18d13dd0943a3651ec4729441899b103bd2dc743a4a373ce7bd14fb38dd3e0";
+      name = "kdebugsettings-19.12.3.tar.xz";
+    };
+  };
+  kde-dev-scripts = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kde-dev-scripts-19.12.3.tar.xz";
+      sha256 = "94c0ba9de369dd6af14dcea505616025bf06599618a6c7557861aa9fb89ea628";
+      name = "kde-dev-scripts-19.12.3.tar.xz";
+    };
+  };
+  kde-dev-utils = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kde-dev-utils-19.12.3.tar.xz";
+      sha256 = "772ec425865082b8be3650cf0af10ad943f38096036227cab22405b32c4e1fae";
+      name = "kde-dev-utils-19.12.3.tar.xz";
+    };
+  };
+  kdeedu-data = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kdeedu-data-19.12.3.tar.xz";
+      sha256 = "76fd5c0efaf339bcfc5ac9f131bac8889cff1df2dd3452ea7dd507b8d9e2645b";
+      name = "kdeedu-data-19.12.3.tar.xz";
+    };
+  };
+  kdegraphics-mobipocket = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kdegraphics-mobipocket-19.12.3.tar.xz";
+      sha256 = "c459f9f04cf98cdc88a6763da8880f418e0c33b3cbd1d06b9a7347ebb470d835";
+      name = "kdegraphics-mobipocket-19.12.3.tar.xz";
+    };
+  };
+  kdegraphics-thumbnailers = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kdegraphics-thumbnailers-19.12.3.tar.xz";
+      sha256 = "92a045ac0e9ca57ea27760df3cca0203f29ba435574e9d837d0c1069b8e88f72";
+      name = "kdegraphics-thumbnailers-19.12.3.tar.xz";
+    };
+  };
+  kdenetwork-filesharing = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kdenetwork-filesharing-19.12.3.tar.xz";
+      sha256 = "8cc75f47ef8038cd7ee75974056cd48022816ab42c76cb6bd2c35a3619445180";
+      name = "kdenetwork-filesharing-19.12.3.tar.xz";
+    };
+  };
+  kdenlive = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kdenlive-19.12.3.tar.xz";
+      sha256 = "cebcb8f019bc0fc719ef54d00507dc1281758e3c8c69ea2f93f99feda777bc64";
+      name = "kdenlive-19.12.3.tar.xz";
+    };
+  };
+  kdepim-addons = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kdepim-addons-19.12.3.tar.xz";
+      sha256 = "f33bc70ac54ab56eea7bd8ca4c0ac98d9612acc4ddc9ce989d06b99f04f62c19";
+      name = "kdepim-addons-19.12.3.tar.xz";
+    };
+  };
+  kdepim-apps-libs = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kdepim-apps-libs-19.12.3.tar.xz";
+      sha256 = "e133cf76364f6b244338eafd39845a9f392eb9b55c43446541acbcb24a6f4796";
+      name = "kdepim-apps-libs-19.12.3.tar.xz";
+    };
+  };
+  kdepim-runtime = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kdepim-runtime-19.12.3.tar.xz";
+      sha256 = "dabf7da1ad35dfaa3531639a8964b61dbd7094ec0a9b3d62f50fa24a22f5db13";
+      name = "kdepim-runtime-19.12.3.tar.xz";
+    };
+  };
+  kdesdk-kioslaves = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kdesdk-kioslaves-19.12.3.tar.xz";
+      sha256 = "8b075bff545883aba24fee1763d0cdc64bf9444ae865f0623a33fc1ca295d254";
+      name = "kdesdk-kioslaves-19.12.3.tar.xz";
+    };
+  };
+  kdesdk-thumbnailers = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kdesdk-thumbnailers-19.12.3.tar.xz";
+      sha256 = "b304843045f93e91e0aeeeacf968018dc192ea71ed9977be3d9cfc4e149edcde";
+      name = "kdesdk-thumbnailers-19.12.3.tar.xz";
+    };
+  };
+  kdf = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kdf-19.12.3.tar.xz";
+      sha256 = "257e07e27376f45eaa1bfb1b3055c7f10759ca7ec185aa7572dc60317c8119bd";
+      name = "kdf-19.12.3.tar.xz";
+    };
+  };
+  kdialog = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kdialog-19.12.3.tar.xz";
+      sha256 = "e6f9a7a6b7c2f18795070bf9466dd6256568b02683d955ef3253432216594d00";
+      name = "kdialog-19.12.3.tar.xz";
+    };
+  };
+  kdiamond = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kdiamond-19.12.3.tar.xz";
+      sha256 = "95dfd2fd3daa59a58d128c35b95b609117438efdb5d60110414ab7aff5fe3e7c";
+      name = "kdiamond-19.12.3.tar.xz";
+    };
+  };
+  keditbookmarks = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/keditbookmarks-19.12.3.tar.xz";
+      sha256 = "1c5efb63eb0a714942677eb03f91ae0bbd10731eace5471ea12ae9d3296b6b05";
+      name = "keditbookmarks-19.12.3.tar.xz";
+    };
+  };
+  kfind = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kfind-19.12.3.tar.xz";
+      sha256 = "b3738d6e3f26fffbfcc204d946e165ae0727d9f460cb2065ceb221b4872019b1";
+      name = "kfind-19.12.3.tar.xz";
+    };
+  };
+  kfloppy = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kfloppy-19.12.3.tar.xz";
+      sha256 = "7f384f9197d5066a5db978a9551665ae9a90b1f3afd1937f800ab61e376d3723";
+      name = "kfloppy-19.12.3.tar.xz";
+    };
+  };
+  kfourinline = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kfourinline-19.12.3.tar.xz";
+      sha256 = "1d2f4fdbf427e2ce86a0519ee61a70df0675f039cebd658cd75bd27af4fe69f6";
+      name = "kfourinline-19.12.3.tar.xz";
+    };
+  };
+  kgeography = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kgeography-19.12.3.tar.xz";
+      sha256 = "3947ca1f50910d77f85c630b49128a085fed4230c7919e09281bc1765529a533";
+      name = "kgeography-19.12.3.tar.xz";
+    };
+  };
+  kget = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kget-19.12.3.tar.xz";
+      sha256 = "a4b1d8fb94617c80a557c27ae58a14131bda4476340c136262e5bf8f51d918d9";
+      name = "kget-19.12.3.tar.xz";
+    };
+  };
+  kgoldrunner = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kgoldrunner-19.12.3.tar.xz";
+      sha256 = "5808d797fb9df178526b3ea462bc902ca36b5926ef7c51233816ba3da6bc0bdd";
+      name = "kgoldrunner-19.12.3.tar.xz";
+    };
+  };
+  kgpg = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kgpg-19.12.3.tar.xz";
+      sha256 = "53e5726a1ccf34a70090ac0bbf2effb6f1f9f9b3d0164a5beead982a24c97e38";
+      name = "kgpg-19.12.3.tar.xz";
+    };
+  };
+  khangman = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/khangman-19.12.3.tar.xz";
+      sha256 = "55286b318ec2c2d8b7e63f4063fc0e39a8ff81c0a9d3f06c9879f141c94762a8";
+      name = "khangman-19.12.3.tar.xz";
+    };
+  };
+  khelpcenter = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/khelpcenter-19.12.3.tar.xz";
+      sha256 = "526c89e46cace9e8afb4e748f9bbf0d105472a4cc4a6d8bb821e8b9b88ab0f73";
+      name = "khelpcenter-19.12.3.tar.xz";
+    };
+  };
+  kidentitymanagement = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kidentitymanagement-19.12.3.tar.xz";
+      sha256 = "254bfc3a60df7bc1960fa1e6d5b7733f6aa5ed7772c1097d9a8cfcdda2704516";
+      name = "kidentitymanagement-19.12.3.tar.xz";
+    };
+  };
+  kig = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kig-19.12.3.tar.xz";
+      sha256 = "1ae2c3024cdd14e476ff15b730f4ebe9b279477b67cc4cc89606755c7d3beef3";
+      name = "kig-19.12.3.tar.xz";
+    };
+  };
+  kigo = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kigo-19.12.3.tar.xz";
+      sha256 = "ee18b8563c49e3e01924ea76cd8c6ec376482c2100e0fac7cdfd14b5899592d5";
+      name = "kigo-19.12.3.tar.xz";
+    };
+  };
+  killbots = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/killbots-19.12.3.tar.xz";
+      sha256 = "3c5dc7e1f27036d2584f6ee58bf3bbffd9e56a467f30a8e2eab9e1bda1e7d4a3";
+      name = "killbots-19.12.3.tar.xz";
+    };
+  };
+  kimagemapeditor = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kimagemapeditor-19.12.3.tar.xz";
+      sha256 = "1aee6521974bde5151744d92823f6b405ee4a8bd2dfe3c538324a209e18c6b35";
+      name = "kimagemapeditor-19.12.3.tar.xz";
+    };
+  };
+  kimap = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kimap-19.12.3.tar.xz";
+      sha256 = "5c3b3cdf928754f9919030d865a2cdad0ad342c82c436afef660d018f85de4d2";
+      name = "kimap-19.12.3.tar.xz";
+    };
+  };
+  kio-extras = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kio-extras-19.12.3.tar.xz";
+      sha256 = "413cb21479fedf1421a6e2585b4df813c3a3fadaa77c248a9f810021f58cea4b";
+      name = "kio-extras-19.12.3.tar.xz";
+    };
+  };
+  kipi-plugins = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kipi-plugins-19.12.3.tar.xz";
+      sha256 = "16997bd6fbb59c194c2997732c870e33bbacd3d7346546af9a255db3330ec5ac";
+      name = "kipi-plugins-19.12.3.tar.xz";
+    };
+  };
+  kirigami-gallery = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kirigami-gallery-19.12.3.tar.xz";
+      sha256 = "17febaeb77e0dfc6f591dd285fd7f538466572f2f2e3253461c41f92d6cb05fe";
+      name = "kirigami-gallery-19.12.3.tar.xz";
+    };
+  };
+  kiriki = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kiriki-19.12.3.tar.xz";
+      sha256 = "abbaa49f9b47286f9afbe7c968eb6fbfeecb4be84ed4b2ce7514a3ed1e92b2d5";
+      name = "kiriki-19.12.3.tar.xz";
+    };
+  };
+  kiten = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kiten-19.12.3.tar.xz";
+      sha256 = "663739a8b252cb95a38294c6f7d675c833daaa81f2654f5cabd8e512fd353560";
+      name = "kiten-19.12.3.tar.xz";
+    };
+  };
+  kitinerary = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kitinerary-19.12.3.tar.xz";
+      sha256 = "4188efe8672091cbdaa4f757f5d8b94a30b1373dceafc076b01330602d5086e2";
+      name = "kitinerary-19.12.3.tar.xz";
+    };
+  };
+  kjumpingcube = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kjumpingcube-19.12.3.tar.xz";
+      sha256 = "b969111cb884efc9ad8ef585066ca33d7168bb045c93a3f18668173a11d29ea2";
+      name = "kjumpingcube-19.12.3.tar.xz";
+    };
+  };
+  kldap = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kldap-19.12.3.tar.xz";
+      sha256 = "49f1ad32ae10b7f997c77f3a8db0776b972b93f9e18873b77baabf0db05cd5d4";
+      name = "kldap-19.12.3.tar.xz";
+    };
+  };
+  kleopatra = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kleopatra-19.12.3.tar.xz";
+      sha256 = "04edf29e42088b2bccdfe36b9b7170c38acd7816657673da5393244b73773098";
+      name = "kleopatra-19.12.3.tar.xz";
+    };
+  };
+  klettres = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/klettres-19.12.3.tar.xz";
+      sha256 = "f2a1bbb002954a80045780de24f494154214b8add53a5c01a8783cbeb26d26c7";
+      name = "klettres-19.12.3.tar.xz";
+    };
+  };
+  klickety = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/klickety-19.12.3.tar.xz";
+      sha256 = "351e421ecca5fc80955ed614453c81d8b790200185db16f56be1e0ca9325ad39";
+      name = "klickety-19.12.3.tar.xz";
+    };
+  };
+  klines = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/klines-19.12.3.tar.xz";
+      sha256 = "8d11894d0a02de20090e52ef697a5a3c00e902213c018a82c94ca0985e92350a";
+      name = "klines-19.12.3.tar.xz";
+    };
+  };
+  kmag = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kmag-19.12.3.tar.xz";
+      sha256 = "d1e8bbc8006cd2cfcb345e30aac73350562bff98b69b0333ad49726cdce81e7e";
+      name = "kmag-19.12.3.tar.xz";
+    };
+  };
+  kmahjongg = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kmahjongg-19.12.3.tar.xz";
+      sha256 = "41a07f74cc4e3bf05f6a57a380d4e093b0303528cb703369981b262a0b1787c8";
+      name = "kmahjongg-19.12.3.tar.xz";
+    };
+  };
+  kmail = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kmail-19.12.3.tar.xz";
+      sha256 = "7f70e5270960e474b15631a36110e13fdf7238d6fd9f1b3fdb6d8c145b6529ba";
+      name = "kmail-19.12.3.tar.xz";
+    };
+  };
+  kmail-account-wizard = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kmail-account-wizard-19.12.3.tar.xz";
+      sha256 = "4199e8c73456bf31b829596919ca481c3a95e59dee7c9bfb2e680311d0354ff0";
+      name = "kmail-account-wizard-19.12.3.tar.xz";
+    };
+  };
+  kmailtransport = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kmailtransport-19.12.3.tar.xz";
+      sha256 = "077b3dba7c02dde9693c003ab7039f3b2a530e3b1aecfcf187313db5226e8953";
+      name = "kmailtransport-19.12.3.tar.xz";
+    };
+  };
+  kmbox = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kmbox-19.12.3.tar.xz";
+      sha256 = "de69683abb42c5c24ccb4f034e067f50c94d5a10c53f359b0e6ad4b75a70b376";
+      name = "kmbox-19.12.3.tar.xz";
+    };
+  };
+  kmime = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kmime-19.12.3.tar.xz";
+      sha256 = "5ed20ad77000c60ba5723aaa22149fca3a3956f930d63e70984f0a17b9339300";
+      name = "kmime-19.12.3.tar.xz";
+    };
+  };
+  kmines = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kmines-19.12.3.tar.xz";
+      sha256 = "05d8004f2e560bf2c9e32a3ca1988b3848b99bfb9cc96307c1ac2b703c202dad";
+      name = "kmines-19.12.3.tar.xz";
+    };
+  };
+  kmix = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kmix-19.12.3.tar.xz";
+      sha256 = "a4c637383e988ffa21b9c48c72ef6d8855fe207c852d0679011337a331ccfc5c";
+      name = "kmix-19.12.3.tar.xz";
+    };
+  };
+  kmousetool = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kmousetool-19.12.3.tar.xz";
+      sha256 = "3741aff20c778bb704c76df7ff005da36ef6c41b07fca35f257ba440741b8413";
+      name = "kmousetool-19.12.3.tar.xz";
+    };
+  };
+  kmouth = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kmouth-19.12.3.tar.xz";
+      sha256 = "424dd4cf81cd43e47630ada0f2a9e47be8106b31ebf2e5c8c1077e55e3a8113f";
+      name = "kmouth-19.12.3.tar.xz";
+    };
+  };
+  kmplot = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kmplot-19.12.3.tar.xz";
+      sha256 = "2743e3a472ccf40281f5afd9c6110dde6fb9bc437e8e291beba484d405d8152e";
+      name = "kmplot-19.12.3.tar.xz";
+    };
+  };
+  knavalbattle = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/knavalbattle-19.12.3.tar.xz";
+      sha256 = "59875e10b0f2b06c2d3165f2f2457113f04550215947c8296ce1dcaf385ee37f";
+      name = "knavalbattle-19.12.3.tar.xz";
+    };
+  };
+  knetwalk = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/knetwalk-19.12.3.tar.xz";
+      sha256 = "24cb7cfa4143b2ab1bcaf38a6698cd01252201238c6561bc711e0673366642ae";
+      name = "knetwalk-19.12.3.tar.xz";
+    };
+  };
+  knights = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/knights-19.12.3.tar.xz";
+      sha256 = "4796654dcaff355b4f1097260748cfe04812ff926acc7ca0f037711875dd1512";
+      name = "knights-19.12.3.tar.xz";
+    };
+  };
+  knotes = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/knotes-19.12.3.tar.xz";
+      sha256 = "b27846609dfac1ffcb3ac5e7165b7557231b096f6a84206da956c37233aed7b0";
+      name = "knotes-19.12.3.tar.xz";
+    };
+  };
+  kolf = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kolf-19.12.3.tar.xz";
+      sha256 = "2ba1f781d7d98ca0b10231e4f963b27d043c726f44da662b6c77105da4f9cffc";
+      name = "kolf-19.12.3.tar.xz";
+    };
+  };
+  kollision = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kollision-19.12.3.tar.xz";
+      sha256 = "ce0bb077e8db8a959f965d463bb25bac02c91585b422af6c9249ad8a8f25eaab";
+      name = "kollision-19.12.3.tar.xz";
+    };
+  };
+  kolourpaint = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kolourpaint-19.12.3.tar.xz";
+      sha256 = "7c134da2feb75a87bfda6b4265ef705868a9be03d70a828111a2869ca0b517b1";
+      name = "kolourpaint-19.12.3.tar.xz";
+    };
+  };
+  kompare = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kompare-19.12.3.tar.xz";
+      sha256 = "b89b266b6f648500627d2e70df29b73248c7b7d7d5e7c1bbcaddaedf072f6f1a";
+      name = "kompare-19.12.3.tar.xz";
+    };
+  };
+  konqueror = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/konqueror-19.12.3.tar.xz";
+      sha256 = "0f2b31a1dae1740839232bd646bf22d7cb57e34995584b9a96271ebcb0da7f0e";
+      name = "konqueror-19.12.3.tar.xz";
+    };
+  };
+  konquest = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/konquest-19.12.3.tar.xz";
+      sha256 = "e23732a7d78382c73fca0d31afb3ed85614ee4b4bfe2f07647a13582fa0811a5";
+      name = "konquest-19.12.3.tar.xz";
+    };
+  };
+  konsole = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/konsole-19.12.3.tar.xz";
+      sha256 = "0bde8eb6365c53e96489d0ceb05baa0bb0385ee865492622033164a4c4bfccdc";
+      name = "konsole-19.12.3.tar.xz";
+    };
+  };
+  kontact = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kontact-19.12.3.tar.xz";
+      sha256 = "8dbd01f73c181f7b44df5dfffac1cf33c36b36149294fd854403bada9ef33052";
+      name = "kontact-19.12.3.tar.xz";
+    };
+  };
+  kontactinterface = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kontactinterface-19.12.3.tar.xz";
+      sha256 = "1a0392cbeb6833f4834c86f202ff06e5b6069d12100bffe37de6427f0531af89";
+      name = "kontactinterface-19.12.3.tar.xz";
+    };
+  };
+  kopete = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kopete-19.12.3.tar.xz";
+      sha256 = "8d58fb0c9dd8b651bfc996e6928f7ccdad8e21cba39ffd0e54d46f7145fa7b27";
+      name = "kopete-19.12.3.tar.xz";
+    };
+  };
+  korganizer = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/korganizer-19.12.3.tar.xz";
+      sha256 = "ea0a970aa510d5cdbbf80e974049fa3e7591e02c9ec2c4206137c49266df1acb";
+      name = "korganizer-19.12.3.tar.xz";
+    };
+  };
+  kpat = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kpat-19.12.3.tar.xz";
+      sha256 = "00b823b1b204b68e0c8671e5ddfe5f96abe8c9fcfb1efa9b7f70191cfa5384e1";
+      name = "kpat-19.12.3.tar.xz";
+    };
+  };
+  kpimtextedit = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kpimtextedit-19.12.3.tar.xz";
+      sha256 = "64be03d7a8d4b9ece40c0065a23113023c2b3320dc57068fe00f6c4bc72537d5";
+      name = "kpimtextedit-19.12.3.tar.xz";
+    };
+  };
+  kpkpass = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kpkpass-19.12.3.tar.xz";
+      sha256 = "45723989170e86c6739c8a377c54b3ba7456a8dc3ed6cf52eef884074c2df189";
+      name = "kpkpass-19.12.3.tar.xz";
+    };
+  };
+  kqtquickcharts = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kqtquickcharts-19.12.3.tar.xz";
+      sha256 = "94669a7add0cef9a1c0969a92ece8e60a67fbb0ff32826cc49ce87bd890c976c";
+      name = "kqtquickcharts-19.12.3.tar.xz";
+    };
+  };
+  krdc = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/krdc-19.12.3.tar.xz";
+      sha256 = "12602912abbc22e061067b6b5048d37a7cbdaaf99d203829d3f52fdf7319acce";
+      name = "krdc-19.12.3.tar.xz";
+    };
+  };
+  kreversi = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kreversi-19.12.3.tar.xz";
+      sha256 = "6bfe3a2faa7c0d08fb689b75341bfd5881d66bc865445573b2f4dbb316a751e8";
+      name = "kreversi-19.12.3.tar.xz";
+    };
+  };
+  krfb = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/krfb-19.12.3.tar.xz";
+      sha256 = "cb88997dc7b15b992d1de5c5cabaeccb37122e20823501ac29140875259782ee";
+      name = "krfb-19.12.3.tar.xz";
+    };
+  };
+  kross-interpreters = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kross-interpreters-19.12.3.tar.xz";
+      sha256 = "2b4060494901a68ca1d07e0c345cc0814e11fb84e9f48014a7231021e4377487";
+      name = "kross-interpreters-19.12.3.tar.xz";
+    };
+  };
+  kruler = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kruler-19.12.3.tar.xz";
+      sha256 = "803a0d31bbb5bfbfa057b13a7f6bbf7630dcc1816a0d41ea13cc4592bdacaa47";
+      name = "kruler-19.12.3.tar.xz";
+    };
+  };
+  kshisen = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kshisen-19.12.3.tar.xz";
+      sha256 = "f6ce353725d71ce65269b1b7b3d118cb8555cd065db0d3b17fe4696d87c10601";
+      name = "kshisen-19.12.3.tar.xz";
+    };
+  };
+  ksirk = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ksirk-19.12.3.tar.xz";
+      sha256 = "6387d7a6320e644157f10b94474ca715e7ad7fd15cdf7156a8e7d94bff019dcb";
+      name = "ksirk-19.12.3.tar.xz";
+    };
+  };
+  ksmtp = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ksmtp-19.12.3.tar.xz";
+      sha256 = "1fd69f494afee91c11667ddbba43bc6cc316b51acf5894fe4c3a2631f53fae27";
+      name = "ksmtp-19.12.3.tar.xz";
+    };
+  };
+  ksnakeduel = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ksnakeduel-19.12.3.tar.xz";
+      sha256 = "8db1dece78571f3e6933f8edcd693c3ceb1035acff780547a72c98b9f7decb87";
+      name = "ksnakeduel-19.12.3.tar.xz";
+    };
+  };
+  kspaceduel = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kspaceduel-19.12.3.tar.xz";
+      sha256 = "a9b5dc498b3695b59ae8925cc572cfc521ccadc8532756fa95ac876a7423c444";
+      name = "kspaceduel-19.12.3.tar.xz";
+    };
+  };
+  ksquares = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ksquares-19.12.3.tar.xz";
+      sha256 = "45a922e4d85835cc655de560b6fd9be87d8cabc74eadbdecda3f17ba53ac92af";
+      name = "ksquares-19.12.3.tar.xz";
+    };
+  };
+  ksudoku = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ksudoku-19.12.3.tar.xz";
+      sha256 = "1cf36e762f31464b0640a88c739dfbb39b10129cace7fb5b74093ec607dea06c";
+      name = "ksudoku-19.12.3.tar.xz";
+    };
+  };
+  ksystemlog = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ksystemlog-19.12.3.tar.xz";
+      sha256 = "8225b1308ace76ebbf9bb805a2b6fae9bf8a425d0b09518645234c1b2df522dc";
+      name = "ksystemlog-19.12.3.tar.xz";
+    };
+  };
+  kteatime = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kteatime-19.12.3.tar.xz";
+      sha256 = "0ab5fb6e33583e6d627b8f9dfaba5ce59e2b363e8045dfc66a4f65236d56542f";
+      name = "kteatime-19.12.3.tar.xz";
+    };
+  };
+  ktimer = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ktimer-19.12.3.tar.xz";
+      sha256 = "921af876a176a4731a74b5e9e76d751853043ec4f4857301b39a5c680246557c";
+      name = "ktimer-19.12.3.tar.xz";
+    };
+  };
+  ktnef = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ktnef-19.12.3.tar.xz";
+      sha256 = "3537515b432e5da00d401046e94e0098fa54c071246cb0e357e3d8f47296ed3c";
+      name = "ktnef-19.12.3.tar.xz";
+    };
+  };
+  ktouch = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ktouch-19.12.3.tar.xz";
+      sha256 = "522fb081da5877717d577493fdaeeecbfe3d8d773e5d7fc83ecced008744ef0e";
+      name = "ktouch-19.12.3.tar.xz";
+    };
+  };
+  ktp-accounts-kcm = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ktp-accounts-kcm-19.12.3.tar.xz";
+      sha256 = "ae5ae5004ecbf34596711a56e069d480c952de5ea784f5e90c391750439aff51";
+      name = "ktp-accounts-kcm-19.12.3.tar.xz";
+    };
+  };
+  ktp-approver = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ktp-approver-19.12.3.tar.xz";
+      sha256 = "af4f6d247b6332745f6b6dfacef74eb2ea0f7bbea9398080fc7b57e5953fdfbd";
+      name = "ktp-approver-19.12.3.tar.xz";
+    };
+  };
+  ktp-auth-handler = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ktp-auth-handler-19.12.3.tar.xz";
+      sha256 = "40822e78879d97c3cc1d16f44f7d3b581980c4e249a273d7471b291adf3b9225";
+      name = "ktp-auth-handler-19.12.3.tar.xz";
+    };
+  };
+  ktp-call-ui = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ktp-call-ui-19.12.3.tar.xz";
+      sha256 = "96b1dd64b0f87228d76f12b6cad3677afeb4c44d6f18645c3001555506573fb1";
+      name = "ktp-call-ui-19.12.3.tar.xz";
+    };
+  };
+  ktp-common-internals = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ktp-common-internals-19.12.3.tar.xz";
+      sha256 = "48cde7fc4f2f0d39999f70699867044e0f85e06769a0824aac49c572fb1af5a4";
+      name = "ktp-common-internals-19.12.3.tar.xz";
+    };
+  };
+  ktp-contact-list = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ktp-contact-list-19.12.3.tar.xz";
+      sha256 = "093544e84ca12169966837be5f01d339ddc59e5f031d78e68ddf7be4dd890efd";
+      name = "ktp-contact-list-19.12.3.tar.xz";
+    };
+  };
+  ktp-contact-runner = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ktp-contact-runner-19.12.3.tar.xz";
+      sha256 = "50646e8670449d6f6a9b107e36f18174b5ec37052a7b4f471617f4f53fecc96b";
+      name = "ktp-contact-runner-19.12.3.tar.xz";
+    };
+  };
+  ktp-desktop-applets = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ktp-desktop-applets-19.12.3.tar.xz";
+      sha256 = "4ab8f04537345db8e41ed9f8ff7a6a2f3135e3539382cef97d1a7e9f0eddb54e";
+      name = "ktp-desktop-applets-19.12.3.tar.xz";
+    };
+  };
+  ktp-filetransfer-handler = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ktp-filetransfer-handler-19.12.3.tar.xz";
+      sha256 = "b2e81fec33b51628d9d88707b6bd844c69eb2c9bfb00cb0b45759a4fd9769b03";
+      name = "ktp-filetransfer-handler-19.12.3.tar.xz";
+    };
+  };
+  ktp-kded-module = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ktp-kded-module-19.12.3.tar.xz";
+      sha256 = "6bb0c05683812738e254c88d39936565966096a7156111565d8a64a59c55ef0d";
+      name = "ktp-kded-module-19.12.3.tar.xz";
+    };
+  };
+  ktp-send-file = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ktp-send-file-19.12.3.tar.xz";
+      sha256 = "566d9dccc0c2fa7c23c95051c25543d3aabe76065ddff7dff9d8a37683d2022b";
+      name = "ktp-send-file-19.12.3.tar.xz";
+    };
+  };
+  ktp-text-ui = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ktp-text-ui-19.12.3.tar.xz";
+      sha256 = "b8ad9a224ae300c0412874d0877fdc8e050869d3a8f60a4051a0919a8749c50f";
+      name = "ktp-text-ui-19.12.3.tar.xz";
+    };
+  };
+  ktuberling = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/ktuberling-19.12.3.tar.xz";
+      sha256 = "c4d74d18173d5761f7e6f8adf6178713a726c671aaa2eda4e6c77115484e9e55";
+      name = "ktuberling-19.12.3.tar.xz";
+    };
+  };
+  kturtle = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kturtle-19.12.3.tar.xz";
+      sha256 = "6958a88c484261919cd89cb1f0d163b0c5d5f1e28b10b3b4e3b6b9e82e379ef1";
+      name = "kturtle-19.12.3.tar.xz";
+    };
+  };
+  kubrick = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kubrick-19.12.3.tar.xz";
+      sha256 = "8fc0a0e68d255481c6efb3f4ff894c5e376367b29958c4738bd72d3f4b1ff557";
+      name = "kubrick-19.12.3.tar.xz";
+    };
+  };
+  kwalletmanager = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kwalletmanager-19.12.3.tar.xz";
+      sha256 = "247c7f80a54babd21a13e6b9386370b72ec12bdf928c08a7e8a647ccca53e393";
+      name = "kwalletmanager-19.12.3.tar.xz";
+    };
+  };
+  kwave = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kwave-19.12.3.tar.xz";
+      sha256 = "3c90115d4702dbe46767e2404c952d84533137fa558b787b87ff95ed61f6930d";
+      name = "kwave-19.12.3.tar.xz";
+    };
+  };
+  kwordquiz = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/kwordquiz-19.12.3.tar.xz";
+      sha256 = "6965a3b3c171c3f62aeecf4ccdddde14d23062ab914b1860822546a5770b80fc";
+      name = "kwordquiz-19.12.3.tar.xz";
+    };
+  };
+  libgravatar = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/libgravatar-19.12.3.tar.xz";
+      sha256 = "70ea306f48aede9f8f327eaa74ea5ce5761e5dfe67f2da50d3242c0f312edc86";
+      name = "libgravatar-19.12.3.tar.xz";
+    };
+  };
+  libkcddb = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/libkcddb-19.12.3.tar.xz";
+      sha256 = "69cbaf03adba24c0cabf957ee4149c4fa86d403eb6b8a07f7f80eb17be49e892";
+      name = "libkcddb-19.12.3.tar.xz";
+    };
+  };
+  libkcompactdisc = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/libkcompactdisc-19.12.3.tar.xz";
+      sha256 = "74aac7dcac84c60a7962f23e7bcc6eb693048fd96ca21015441a87487baa9d1c";
+      name = "libkcompactdisc-19.12.3.tar.xz";
+    };
+  };
+  libkdcraw = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/libkdcraw-19.12.3.tar.xz";
+      sha256 = "9454aed707ee311dbfb921f8d45fba11710ffc01f48d65f64585d12c2580116f";
+      name = "libkdcraw-19.12.3.tar.xz";
+    };
+  };
+  libkdegames = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/libkdegames-19.12.3.tar.xz";
+      sha256 = "39cf5039b7fe11688028df026252c9cd4424546817b5bb635af2558f71ba6b20";
+      name = "libkdegames-19.12.3.tar.xz";
+    };
+  };
+  libkdepim = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/libkdepim-19.12.3.tar.xz";
+      sha256 = "911e7d174240d4c056472549dbd1f3da4467a57c765f3cb34fbac32943f38dbb";
+      name = "libkdepim-19.12.3.tar.xz";
+    };
+  };
+  libkeduvocdocument = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/libkeduvocdocument-19.12.3.tar.xz";
+      sha256 = "31594d30e03890507b25d676981164fd64258e69c6b264b85939118377eda964";
+      name = "libkeduvocdocument-19.12.3.tar.xz";
+    };
+  };
+  libkexiv2 = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/libkexiv2-19.12.3.tar.xz";
+      sha256 = "f5d0947f6b1ca0583d569990dc6f68bb01d8f7756a38bcc40b1e54f7814e4d4d";
+      name = "libkexiv2-19.12.3.tar.xz";
+    };
+  };
+  libkgapi = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/libkgapi-19.12.3.tar.xz";
+      sha256 = "f52923c382272b47782348fbadb32902fbcd4652f4100875a745ba57033cf48a";
+      name = "libkgapi-19.12.3.tar.xz";
+    };
+  };
+  libkgeomap = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/libkgeomap-19.12.3.tar.xz";
+      sha256 = "eb604deffe78cdcd4a8c7d888416246d0a17f2e3b7d80d6959e1412f03ab2755";
+      name = "libkgeomap-19.12.3.tar.xz";
+    };
+  };
+  libkipi = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/libkipi-19.12.3.tar.xz";
+      sha256 = "3a57d07cd4fe8e118558d807242bf483fa2aac1bcf3dcdc29139636c2b280786";
+      name = "libkipi-19.12.3.tar.xz";
+    };
+  };
+  libkleo = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/libkleo-19.12.3.tar.xz";
+      sha256 = "1e715442a0c52ca561316abdce9662082f52ad9f3101ea01435a90984989a057";
+      name = "libkleo-19.12.3.tar.xz";
+    };
+  };
+  libkmahjongg = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/libkmahjongg-19.12.3.tar.xz";
+      sha256 = "f8ea23952a576e6081052d10e9c967bebe5db017ad62775183f91236158cc19f";
+      name = "libkmahjongg-19.12.3.tar.xz";
+    };
+  };
+  libkomparediff2 = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/libkomparediff2-19.12.3.tar.xz";
+      sha256 = "aadc6e420e24bdebe203d4dfc76f5c23c8529be70ac057d89b516ab57b165094";
+      name = "libkomparediff2-19.12.3.tar.xz";
+    };
+  };
+  libksane = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/libksane-19.12.3.tar.xz";
+      sha256 = "0aab855b8414041c37ddfbb9f0732272206af1c0844376f1370b9d2a907af71d";
+      name = "libksane-19.12.3.tar.xz";
+    };
+  };
+  libksieve = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/libksieve-19.12.3.tar.xz";
+      sha256 = "990e6a15e7e88120bf6c744fe6f1ac78184d6470318005f24634a70219f45002";
+      name = "libksieve-19.12.3.tar.xz";
+    };
+  };
+  lokalize = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/lokalize-19.12.3.tar.xz";
+      sha256 = "8015c994e974fd51c1c7f5903a005bbbc25f094656bdd44cd5e8675cd69cea92";
+      name = "lokalize-19.12.3.tar.xz";
+    };
+  };
+  lskat = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/lskat-19.12.3.tar.xz";
+      sha256 = "5f13417ba9f6831a5f48c220a5c67a8d73787715b8b4aa433e6e356b7ac58776";
+      name = "lskat-19.12.3.tar.xz";
+    };
+  };
+  mailcommon = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/mailcommon-19.12.3.tar.xz";
+      sha256 = "d3999d290505b20aecbb4b14bec5af4d6a7db72d1f26f7a40b4aff231588c7e5";
+      name = "mailcommon-19.12.3.tar.xz";
+    };
+  };
+  mailimporter = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/mailimporter-19.12.3.tar.xz";
+      sha256 = "b81e8a5794aee24aa611c1a1912f93a308ce56c429ad4a72afe308e6b554c4a7";
+      name = "mailimporter-19.12.3.tar.xz";
+    };
+  };
+  marble = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/marble-19.12.3.tar.xz";
+      sha256 = "73a2c5234f8a1728e2a97499166e7bbf8dfb2f48d10fe8cff96380631d064627";
+      name = "marble-19.12.3.tar.xz";
+    };
+  };
+  mbox-importer = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/mbox-importer-19.12.3.tar.xz";
+      sha256 = "62fb1490517e0a49bf823946c8b747062cb970dbe00281d459adda73596f0046";
+      name = "mbox-importer-19.12.3.tar.xz";
+    };
+  };
+  messagelib = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/messagelib-19.12.3.tar.xz";
+      sha256 = "5e776d5ea7b0cbb246b03cf2bfc84a65a959e7433a7f80b77a5f67cfa7c23ccb";
+      name = "messagelib-19.12.3.tar.xz";
+    };
+  };
+  minuet = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/minuet-19.12.3.tar.xz";
+      sha256 = "740a3704004336f08c0fde148257c1562254b4e706704ec7eb2149fb3d7b6b9b";
+      name = "minuet-19.12.3.tar.xz";
+    };
+  };
+  okular = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/okular-19.12.3.tar.xz";
+      sha256 = "c5de22cc4292e3b7adae3f6ef6566dcba33a1dd5995fb0b968ea3e705a4c04e0";
+      name = "okular-19.12.3.tar.xz";
+    };
+  };
+  palapeli = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/palapeli-19.12.3.tar.xz";
+      sha256 = "6989bbc94ed955f6990d40bccbc0c38768898bf2ccb8163c45119517340b723d";
+      name = "palapeli-19.12.3.tar.xz";
+    };
+  };
+  parley = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/parley-19.12.3.tar.xz";
+      sha256 = "ebf9fdec981abca988d83d8a77e921e7ce871eb010b6cf4ea9065ee6d45f5089";
+      name = "parley-19.12.3.tar.xz";
+    };
+  };
+  picmi = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/picmi-19.12.3.tar.xz";
+      sha256 = "04a69125fc76b1fcd58d873452e4a4e642ee9ee672cdb7656214d8cd854fc178";
+      name = "picmi-19.12.3.tar.xz";
+    };
+  };
+  pimcommon = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/pimcommon-19.12.3.tar.xz";
+      sha256 = "443e2915eb42a4f56f1ddf47785ceeceb4ca1e0384ff48bc93fc4a7756392766";
+      name = "pimcommon-19.12.3.tar.xz";
+    };
+  };
+  pim-data-exporter = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/pim-data-exporter-19.12.3.tar.xz";
+      sha256 = "8e9961fcc4f1ed0305d589e3a417f8924657d89d798a77c53956d73f6bf19938";
+      name = "pim-data-exporter-19.12.3.tar.xz";
+    };
+  };
+  pim-sieve-editor = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/pim-sieve-editor-19.12.3.tar.xz";
+      sha256 = "641ea56304df079a80e098fb253c173b63266990856f8795af093c144c3883ae";
+      name = "pim-sieve-editor-19.12.3.tar.xz";
+    };
+  };
+  poxml = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/poxml-19.12.3.tar.xz";
+      sha256 = "190178290ce18fe3a684c22d650843f3008a6e31ebbab8fff25491c58b21e276";
+      name = "poxml-19.12.3.tar.xz";
+    };
+  };
+  print-manager = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/print-manager-19.12.3.tar.xz";
+      sha256 = "74c13802a65136539b4542fec10fb248149a3324e8060e947a8f305ce665269a";
+      name = "print-manager-19.12.3.tar.xz";
+    };
+  };
+  rocs = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/rocs-19.12.3.tar.xz";
+      sha256 = "f834e69e676913e364162906b79da5a75a6043f4a5c8506954d1630abda45e3c";
+      name = "rocs-19.12.3.tar.xz";
+    };
+  };
+  signon-kwallet-extension = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/signon-kwallet-extension-19.12.3.tar.xz";
+      sha256 = "46199be023bad630b769b14c2c0a63feff2949da944c76780b1ebd9a50ee3daa";
+      name = "signon-kwallet-extension-19.12.3.tar.xz";
+    };
+  };
+  spectacle = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/spectacle-19.12.3.tar.xz";
+      sha256 = "443f114dab1fb50e7e12a046fdf06c0456bf99a3abdf09dce05605fdf7d3de81";
+      name = "spectacle-19.12.3.tar.xz";
+    };
+  };
+  step = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/step-19.12.3.tar.xz";
+      sha256 = "0eb62c87553769e009daa02406b1d95742c946bdffe0d22327776ec558e7584b";
+      name = "step-19.12.3.tar.xz";
+    };
+  };
+  svgpart = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/svgpart-19.12.3.tar.xz";
+      sha256 = "942d877a516d8407ef2782d7c6869ab688274fee6cde9b23ab1061bcbddf2cc9";
+      name = "svgpart-19.12.3.tar.xz";
+    };
+  };
+  sweeper = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/sweeper-19.12.3.tar.xz";
+      sha256 = "cf89cfba61c9eeda9b4e7921c21a23e7d9a110b134ab6fbd127c37d036bd0517";
+      name = "sweeper-19.12.3.tar.xz";
+    };
+  };
+  umbrello = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/umbrello-19.12.3.tar.xz";
+      sha256 = "b2f769c7bd1cc259170b62c68d2dca05b4a143dd1048dbb507cf2bbb3020a193";
+      name = "umbrello-19.12.3.tar.xz";
+    };
+  };
+  yakuake = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/yakuake-19.12.3.tar.xz";
+      sha256 = "0e4f16eaf155750b0c35f1f8f1a625909f386f3359b9f23bf4e7c2f9045384e3";
+      name = "yakuake-19.12.3.tar.xz";
+    };
+  };
+  zeroconf-ioslave = {
+    version = "19.12.3";
+    src = fetchurl {
+      url = "${mirror}/stable/release-service/19.12.3/src/zeroconf-ioslave-19.12.3.tar.xz";
+      sha256 = "c9b2146030a9845b8164f5784d1c6fcc198b6cfe0e23f6a91edf78d093e4368f";
+      name = "zeroconf-ioslave-19.12.3.tar.xz";
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/applications/kde/yakuake.nix b/nixpkgs/pkgs/applications/kde/yakuake.nix
new file mode 100644
index 000000000000..cb7f7070b24a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/yakuake.nix
@@ -0,0 +1,32 @@
+{
+  mkDerivation, lib, kdoctools, extra-cmake-modules,
+  karchive, kcrash, kdbusaddons, ki18n, kiconthemes, knewstuff, knotifications,
+  knotifyconfig, konsole, kparts, kwindowsystem, qtx11extras
+}:
+
+mkDerivation {
+  name = "yakuake";
+
+  buildInputs = [
+    karchive kcrash kdbusaddons ki18n kiconthemes knewstuff knotifications
+    knotifyconfig kparts kwindowsystem qtx11extras
+  ];
+
+  propagatedBuildInputs = [
+    karchive kcrash kdbusaddons ki18n kiconthemes knewstuff knotifications
+    knotifyconfig kparts kwindowsystem
+  ];
+
+  propagatedUserEnvPkgs = [ konsole ];
+
+  nativeBuildInputs = [
+    extra-cmake-modules kdoctools
+  ];
+
+  meta = {
+    homepage = "https://yakuake.kde.org";
+    description = "Quad-style terminal emulator for KDE";
+    maintainers = with lib.maintainers; [ fridh ];
+    license = lib.licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/1password/default.nix b/nixpkgs/pkgs/applications/misc/1password/default.nix
new file mode 100644
index 000000000000..5e027fcdf04b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/1password/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchzip, autoPatchelfHook, fetchurl, xar, cpio }:
+
+stdenv.mkDerivation rec {
+  pname = "1password";
+  version = "1.0.0";
+  src =
+    if stdenv.hostPlatform.system == "i686-linux" then
+      fetchzip {
+        url = "https://cache.agilebits.com/dist/1P/op/pkg/v${version}/op_linux_386_v${version}.zip";
+        sha256 = "1d1lxmrmirh3837zib91dmxblb4imdz8gbq56pb7kgbff3zf96ql";
+        stripRoot = false;
+      }
+    else if stdenv.hostPlatform.system == "x86_64-linux" then
+      fetchzip {
+        url = "https://cache.agilebits.com/dist/1P/op/pkg/v${version}/op_linux_amd64_v${version}.zip";
+        sha256 = "0pscm61dc69vmkrzrnxi531d37ig9y48w8q1lvzsg13zvvwaw8hs";
+        stripRoot = false;
+      }
+    else if stdenv.hostPlatform.system == "x86_64-darwin" then
+      fetchurl {
+        url = "https://cache.agilebits.com/dist/1P/op/pkg/v${version}/op_darwin_amd64_v${version}.pkg";
+        sha256 = "1sb5qdssasqm7z7j4xzgkmkgf132zhgm93d7rkx3y5j0rac98y0g";
+      }
+    else throw "Architecture not supported";
+
+  buildInputs = stdenv.lib.optionals stdenv.isDarwin [ xar cpio ];
+
+  unpackPhase = stdenv.lib.optionalString stdenv.isDarwin ''
+    xar -xf $src
+    zcat Payload | cpio -i
+  '';
+
+  installPhase = ''
+    install -D op $out/bin/op
+  '';
+
+  dontStrip = stdenv.isDarwin;
+
+  nativeBuildInputs = stdenv.lib.optionals stdenv.isLinux [ autoPatchelfHook ];
+
+  doInstallCheck = true;
+
+  installCheckPhase = ''
+    $out/bin/op --version
+  '';
+
+  meta = with stdenv.lib; {
+    description  = "1Password command-line tool";
+    homepage     = "https://support.1password.com/command-line/";
+    downloadPage = "https://app-updates.agilebits.com/product_history/CLI";
+    maintainers  = with maintainers; [ joelburget marsam ];
+    license      = licenses.unfree;
+    platforms    = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ArchiSteamFarm/default.nix b/nixpkgs/pkgs/applications/misc/ArchiSteamFarm/default.nix
new file mode 100644
index 000000000000..6201d881a882
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ArchiSteamFarm/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, unzip, makeWrapper, dotnetCorePackages, jq }:
+
+stdenv.mkDerivation rec {
+  pname = "ArchiSteamFarm";
+  version = "4.2.2.1";
+
+  src = fetchurl {
+    url = "https://github.com/JustArchiNET/ArchiSteamFarm/releases/download/${version}/ASF-generic.zip";
+    sha256 = "0pr9rrhi44yl99c2i12rimmc4mhbh0ma9jn17cgsh8p0kbj8sq94";
+  };
+
+  nativeBuildInputs = [ unzip makeWrapper jq ];
+
+  sourceRoot = ".";
+
+  installPhase = ''
+    dist=$out/opt/asf
+    mkdir -p $dist
+    cp -r * $dist
+
+    jq "del(.runtimeOptions.framework.version)" ArchiSteamFarm.runtimeconfig.json > $dist/ArchiSteamFarm.runtimeconfig.json
+
+    makeWrapper ${dotnetCorePackages.aspnetcore_3_1}/bin/dotnet $out/bin/ArchiSteamFarm \
+      --add-flags $dist/ArchiSteamFarm.dll \
+      --add-flags "--path ~/.config/asf" \
+      --run "mkdir -p ~/.config/asf" \
+      --run "cd ~/.config/asf" \
+      --run "[ -d config ] || cp --no-preserve=mode -r $dist/config ." \
+      --run "[ -d logs ] || cp --no-preserve=mode -r $dist/logs ." \
+      --run "[ -d plugins ] || cp --no-preserve=mode -r $dist/plugins ." \
+      --run "[ -d www ] || ln -sf $dist/www ."
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Application with primary purpose of idling Steam cards from multiple accounts simultaneously";
+    homepage = "https://github.com/JustArchiNET/ArchiSteamFarm";
+    license = licenses.asl20;
+    platforms = dotnetCorePackages.aspnetcore_3_1.meta.platforms;
+    maintainers = with maintainers; [ gnidorah ];
+    hydraPlatforms = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/abook/default.nix b/nixpkgs/pkgs/applications/misc/abook/default.nix
new file mode 100644
index 000000000000..4c03b197b4a0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/abook/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, fetchpatch, pkgconfig, ncurses, readline, autoreconfHook }:
+
+stdenv.mkDerivation rec {
+  name = "abook-0.6.1";
+
+  src = fetchurl {
+    url = "http://abook.sourceforge.net/devel/${name}.tar.gz";
+    sha256 = "1yf0ifyjhq2r003pnpn92mn0924bn9yxjifxxj2ldcsgd7w0vagh";
+  };
+
+  patches = [
+    (fetchpatch {
+       url = "https://projects.archlinux.org/svntogit/packages.git/plain/trunk/gcc5.patch?h=packages/abook";
+       name = "gcc5.patch";
+       sha256 = "13n3qd6yy45i5n8ppjn9hj6y63ymjrq96280683xk7f7rjavw5nn";
+     })
+  ];
+
+  nativeBuildInputs = [ pkgconfig autoreconfHook ];
+  buildInputs = [ ncurses readline ];
+
+  meta = {
+    homepage = "http://abook.sourceforge.net/";
+    description = "Text-based addressbook program designed to use with mutt mail client";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.edwtjo ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/adobe-reader/builder.sh b/nixpkgs/pkgs/applications/misc/adobe-reader/builder.sh
new file mode 100644
index 000000000000..41281385c990
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/adobe-reader/builder.sh
@@ -0,0 +1,42 @@
+source $stdenv/setup
+
+echo "unpacking $src..."
+tar xvfa $src
+
+echo "unpacking reader..."
+p=$out/libexec/adobe-reader
+mkdir -p $out/libexec
+tar xvf AdobeReader/COMMON.TAR -C $out
+tar xvf AdobeReader/ILINXR.TAR -C $out
+mv $out/Adobe/Reader9 $p
+rmdir $out/Adobe
+
+# Disable this plugin for now (it needs LDAP, and I'm too lazy to add it).
+rm $p/Reader/intellinux/plug_ins/PPKLite.api
+
+# More pointless files.
+rm $p/bin/UNINSTALL
+
+patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+    --set-rpath $libPath \
+    $p/Reader/intellinux/bin/acroread
+
+# The "xargs -r" is to shut up a warning when Mozilla can't be found.
+substituteInPlace $p/bin/acroread \
+    --replace /bin/pwd $(type -P pwd) \
+    --replace /bin/ls $(type -P ls) \
+    --replace xargs "xargs -r"
+
+mkdir -p $out/bin
+ln -s $p/bin/acroread $out/bin/acroread
+
+mkdir -p $out/share/applications
+mv $p/Resource/Support/AdobeReader.desktop $out/share/applications/
+icon=$p/Resource/Icons/128x128/AdobeReader9.png
+[ -e $icon ]
+sed -i $out/share/applications/AdobeReader.desktop \
+    -e "s|Icon=.*|Icon=$icon|"
+
+# Not sure if this works.
+mkdir -p $out/share/mimelnk/application
+mv $p/Resource/Support/vnd*.desktop $out/share/mimelnk/application
diff --git a/nixpkgs/pkgs/applications/misc/adobe-reader/default.nix b/nixpkgs/pkgs/applications/misc/adobe-reader/default.nix
new file mode 100644
index 000000000000..b67e514ce54d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/adobe-reader/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, libX11, cups, zlib, libxml2, pango, atk, gtk2, glib
+, gdk-pixbuf }:
+
+assert stdenv.hostPlatform.system == "i686-linux";
+
+let version = "9.5.5"; in
+
+stdenv.mkDerivation {
+  name = "adobe-reader-${version}-1";
+
+  builder = ./builder.sh;
+
+  src = fetchurl {
+    url = "http://ardownload.adobe.com/pub/adobe/reader/unix/9.x/${version}/enu/AdbeRdr${version}-1_i486linux_enu.tar.bz2";
+    sha256 = "0h35misxrqkl5zlmmvray1bqf4ywczkm89n9qw7d9arqbg3aj3pf";
+  };
+
+  # !!! Adobe Reader contains copies of OpenSSL, libcurl, and libicu.
+  # We should probably remove those and use the regular Nixpkgs
+  # versions.
+
+  libPath = stdenv.lib.makeLibraryPath
+    [ stdenv.cc.cc libX11 zlib libxml2 cups pango atk gtk2 glib gdk-pixbuf ];
+
+  passthru.mozillaPlugin = "/libexec/adobe-reader/Browser/intellinux";
+
+  meta = {
+    description = "Adobe Reader, a viewer for PDF documents";
+    homepage = "http://www.adobe.com/products/reader";
+    license = stdenv.lib.licenses.unfree;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/airtame/default.nix b/nixpkgs/pkgs/applications/misc/airtame/default.nix
new file mode 100644
index 000000000000..4e1f2e8c084c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/airtame/default.nix
@@ -0,0 +1,79 @@
+{ stdenv, lib, fetchurl, makeDesktopItem, makeWrapper
+, alsaLib, atk, cairo, cups, curl, dbus, expat, ffmpeg_3, fontconfig, freetype
+, gdk-pixbuf, glib, glibc, gnome2, gtk2, libX11, libXScrnSaver, libXcomposite
+, libXcursor, libXdamage, libXext, libXfixes, libXi, libXrandr, libXrender
+, libXtst, libopus, libpulseaudio, libxcb, nspr, nss, pango, udev, x264
+}:
+
+let libPath = lib.makeLibraryPath [
+  alsaLib atk cairo cups curl dbus expat ffmpeg_3 fontconfig freetype gdk-pixbuf
+  glib glibc gnome2.GConf gtk2 libopus nspr nss pango stdenv.cc.cc udev x264
+  libX11 libXScrnSaver libXcomposite libXcursor libXdamage libXext libXfixes
+  libXi libXrandr libXrender libXtst libpulseaudio libxcb
+];
+in stdenv.mkDerivation rec {
+  pname = "airtame";
+  version = "3.3.0";
+  longName = "${pname}-application";
+
+  src = fetchurl {
+    url = "https://downloads.airtame.com/application/ga/lin_x64/releases/${longName}-${version}.tar.gz";
+    sha256 = "16ca1vcxpka26jcrfbxpq74kcizgrm138j94bby6kzqp2swhrl76";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  desktopItem = makeDesktopItem rec {
+    name = "airtame";
+    exec = longName;
+    comment = "Airtame Streaming Client";
+    desktopName = "Airtame";
+    icon = name;
+    genericName = comment;
+    categories = "Application;Network;";
+  };
+
+  installPhase = ''
+    opt="$out/opt/airtame"
+    mkdir -p "$opt"
+    cp -R . "$opt"
+    mkdir -p "$out/bin"
+    ln -s "$opt/${longName}" "$out/bin/"
+    mkdir -p "$out/share"
+    cp -r "${desktopItem}/share/applications" "$out/share/"
+    mkdir -p "$out/share/icons"
+    ln -s "$opt/icon.png" "$out/share/icons/airtame.png"
+
+    # Flags and rpath are copied from launch-airtame.sh.
+    vendorlib="\
+    $opt/resources/app.asar.unpacked/modules/streamer/dist/deps/airtame-modules:\
+    $opt/resources/app.asar.unpacked/encryption/out/lib:\
+    $opt/resources/deps/airtame-core/lib:\
+    $opt/resources/deps/airtame-encryption/lib"
+
+    echo $vendorlib
+
+    rpath="${libPath}:$opt:$vendorlib"
+
+    find "$opt" \( -type f -executable -o -name "*.so" -o -name "*.so.*" \) \
+      -exec patchelf --set-rpath "$rpath" {} \;
+
+    # The main binary also needs libudev which was removed by --shrink-rpath.
+    interp="$(< $NIX_CC/nix-support/dynamic-linker)"
+    patchelf --set-interpreter "$interp" $opt/${longName}
+
+    wrapProgram $opt/${longName} \
+      --prefix LD_LIBRARY_PATH=$rpath \
+      --add-flags "--disable-gpu --enable-transparent-visuals"
+  '';
+
+  dontPatchELF = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://airtame.com/download";
+    description = "Wireless streaming client for Airtame devices";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ thanegill ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/alacritty/default.nix b/nixpkgs/pkgs/applications/misc/alacritty/default.nix
new file mode 100644
index 000000000000..6bd35bd51eb3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/alacritty/default.nix
@@ -0,0 +1,143 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, rustPlatform
+
+, cmake
+, gzip
+, installShellFiles
+, makeWrapper
+, ncurses
+, pkgconfig
+, python3
+
+, expat
+, fontconfig
+, freetype
+, libGL
+, libX11
+, libXcursor
+, libXi
+, libXrandr
+, libXxf86vm
+, libxcb
+, libxkbcommon
+, wayland
+, xdg_utils
+
+  # Darwin Frameworks
+, AppKit
+, CoreGraphics
+, CoreServices
+, CoreText
+, Foundation
+, OpenGL
+}:
+let
+  rpathLibs = [
+    expat
+    fontconfig
+    freetype
+    libGL
+    libX11
+    libXcursor
+    libXi
+    libXrandr
+    libXxf86vm
+    libxcb
+  ] ++ lib.optionals stdenv.isLinux [
+    libxkbcommon
+    wayland
+  ];
+in
+rustPlatform.buildRustPackage rec {
+  pname = "alacritty";
+  version = "0.4.3";
+
+  src = fetchFromGitHub {
+    owner = "alacritty";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1b6fspcd8yn1857cgn1m8a828bvjspvrfc2giwsa9ai0ighcqbgl";
+  };
+
+  cargoSha256 = "1zadnwjqk9kklj0p43azd78kgbva2zihh9wh81w4c5y0kypbchyd";
+
+  nativeBuildInputs = [
+    cmake
+    gzip
+    installShellFiles
+    makeWrapper
+    ncurses
+    pkgconfig
+    python3
+  ];
+
+  buildInputs = rpathLibs
+  ++ lib.optionals stdenv.isDarwin [
+    AppKit
+    CoreGraphics
+    CoreServices
+    CoreText
+    Foundation
+    OpenGL
+  ];
+
+  outputs = [ "out" "terminfo" ];
+
+  postPatch = ''
+    substituteInPlace alacritty/src/config/mouse.rs \
+      --replace xdg-open ${xdg_utils}/bin/xdg-open
+  '';
+
+  postBuild = lib.optionalString stdenv.isDarwin "make app";
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D $releaseDir/alacritty $out/bin/alacritty
+
+  '' + (
+    if stdenv.isDarwin then ''
+      mkdir $out/Applications
+      cp -r $releaseDir/osx/Alacritty.app $out/Applications/Alacritty.app
+    '' else ''
+      install -D extra/linux/Alacritty.desktop -t $out/share/applications/
+      install -D extra/logo/compat/alacritty-term.svg $out/share/icons/hicolor/scalable/apps/Alacritty.svg
+
+      # patchelf generates an ELF that binutils' "strip" doesn't like:
+      #    strip: not enough room for program headers, try linking with -N
+      # As a workaround, strip manually before running patchelf.
+      strip -S $out/bin/alacritty
+
+      patchelf --set-rpath "${lib.makeLibraryPath rpathLibs}" $out/bin/alacritty
+    ''
+  ) + ''
+
+    installShellCompletion --zsh extra/completions/_alacritty
+    installShellCompletion --bash extra/completions/alacritty.bash
+    installShellCompletion --fish extra/completions/alacritty.fish
+
+    install -dm 755 "$out/share/man/man1"
+    gzip -c extra/alacritty.man > "$out/share/man/man1/alacritty.1.gz"
+
+    install -Dm 644 alacritty.yml $out/share/doc/alacritty.yml
+
+    install -dm 755 "$terminfo/share/terminfo/a/"
+    tic -xe alacritty,alacritty-direct -o "$terminfo/share/terminfo" extra/alacritty.info
+    mkdir -p $out/nix-support
+    echo "$terminfo" >> $out/nix-support/propagated-user-env-packages
+
+    runHook postInstall
+  '';
+
+  dontPatchELF = true;
+
+  meta = with lib; {
+    description = "A cross-platform, GPU-accelerated terminal emulator";
+    homepage = "https://github.com/alacritty/alacritty";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ filalex77 mic92 cole-h ma27 ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/albert/default.nix b/nixpkgs/pkgs/applications/misc/albert/default.nix
new file mode 100644
index 000000000000..5c43d717913b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/albert/default.nix
@@ -0,0 +1,47 @@
+{ mkDerivation, lib, fetchFromGitHub, makeWrapper, qtbase,
+  qtdeclarative, qtsvg, qtx11extras, muparser, cmake, python3,
+  qtcharts }:
+
+mkDerivation rec {
+  pname = "albert";
+  version = "0.16.1";
+
+  src = fetchFromGitHub {
+    owner  = "albertlauncher";
+    repo   = "albert";
+    rev    = "v${version}";
+    sha256 = "04sr35fqz66i24lv7r2p9qfqxs55i8xpj7aam0v9yakcr33lf55a";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ cmake makeWrapper ];
+
+  buildInputs = [ qtbase qtdeclarative qtsvg qtx11extras muparser python3 qtcharts ];
+
+  enableParallelBuilding = true;
+
+  # We don't have virtualbox sdk so disable plugin
+  cmakeFlags = [ "-DBUILD_VIRTUALBOX=OFF" "-DCMAKE_INSTALL_LIBDIR=libs" ];
+
+  postPatch = ''
+    sed -i "/QStringList dirs = {/a    \"$out/libs\"," \
+      src/app/main.cpp
+  '';
+
+  preBuild = ''
+    mkdir -p "$out/"
+    ln -s "$PWD/lib" "$out/lib"
+  '';
+
+  postBuild = ''
+    rm "$out/lib"
+  '';
+
+  meta = with lib; {
+    homepage    = "https://albertlauncher.github.io/";
+    description = "Desktop agnostic launcher";
+    license     = licenses.gpl3Plus;
+    maintainers = with maintainers; [ ericsagnes synthetica ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/almanah/default.nix b/nixpkgs/pkgs/applications/misc/almanah/default.nix
new file mode 100644
index 000000000000..ff8785785268
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/almanah/default.nix
@@ -0,0 +1,82 @@
+{ stdenv
+, fetchurl
+, fetchpatch
+, atk
+, cairo
+, desktop-file-utils
+, evolution-data-server
+, gcr
+, gettext
+, glib
+, gnome3
+, gpgme
+, gtk3
+, gtksourceview3
+, gtkspell3
+, libcryptui
+, libxml2
+, meson
+, ninja
+, pkgconfig
+, sqlite
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "almanah";
+  version = "0.12.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "09rxx4s4c34d1axza6ayss33v78p44r9bpx058shllh1sf5avpcb";
+  };
+
+  patches = [
+    # Fix gpgme detection
+    # https://gitlab.gnome.org/GNOME/almanah/merge_requests/7
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/almanah/commit/4b979c4145ef2fbceebb3849a70df1d0ceb1bb93.patch";
+      sha256 = "0wwkgqr5vi597j734xq0fwgk1zpcabp8wi8b1lnb1ksnqfi3wwxb";
+    })
+  ];
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    gettext
+    libxml2
+    meson
+    ninja
+    pkgconfig
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    atk
+    cairo
+    evolution-data-server
+    gcr
+    glib
+    gnome3.evolution
+    gpgme
+    gtk3
+    gtksourceview3
+    gtkspell3
+    libcryptui
+    sqlite
+  ];
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      versionPolicy = "none"; # it is quite odd
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Small GTK application to allow to keep a diary of your life";
+    homepage = "https://wiki.gnome.org/Apps/Almanah_Diary";
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+    maintainers = teams.gnome.members;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/aminal/default.nix b/nixpkgs/pkgs/applications/misc/aminal/default.nix
new file mode 100644
index 000000000000..7f04a93d6a32
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/aminal/default.nix
@@ -0,0 +1,69 @@
+{ buildGoPackage
+, Carbon
+, Cocoa
+, Kernel
+, fetchFromGitHub
+, lib
+, mesa_glu
+, stdenv
+, xorg
+}:
+
+buildGoPackage rec {
+  pname = "aminal";
+  version = "0.9.0";
+
+  goPackagePath = "github.com/liamg/aminal";
+
+  buildInputs =
+    lib.optionals stdenv.isLinux [
+      mesa_glu
+      xorg.libX11
+      xorg.libXcursor
+      xorg.libXi
+      xorg.libXinerama
+      xorg.libXrandr
+      xorg.libXxf86vm
+    ] ++ lib.optionals stdenv.isDarwin [ Carbon Cocoa Kernel ];
+
+  src = fetchFromGitHub {
+    owner = "liamg";
+    repo = "aminal";
+    rev = "v${version}";
+    sha256 = "0syv9md7blnl6i19zf8s1xjx5vfz6s755fxyg2ply0qc1pwhsj8n";
+  };
+
+  preBuild = ''
+    buildFlagsArray=("-ldflags=-X ${goPackagePath}/version.Version=${version}")
+  '';
+
+  meta = with lib; {
+    description = "Golang terminal emulator from scratch";
+    longDescription = ''
+      Aminal is a modern terminal emulator for Mac/Linux implemented in Golang
+      and utilising OpenGL.
+
+      The project is experimental at the moment, so you probably won't want to
+      rely on Aminal as your main terminal for a while.
+
+      Features:
+      - Unicode support
+      - OpenGL rendering
+      - Customisation options
+      - True colour support
+      - Support for common ANSI escape sequences a la xterm
+      - Scrollback buffer
+      - Clipboard access
+      - Clickable URLs
+      - Multi platform support (Windows coming soon...)
+      - Sixel support
+      - Hints/overlays
+      - Built-in patched fonts for powerline
+      - Retina display support
+    '';
+    homepage = "https://github.com/liamg/aminal";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/antfs-cli/default.nix b/nixpkgs/pkgs/applications/misc/antfs-cli/default.nix
new file mode 100644
index 000000000000..49da252b6c0d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/antfs-cli/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchFromGitHub, python3Packages }:
+
+python3Packages.buildPythonApplication {
+  pname = "antfs-cli";
+  version = "unstable-2017-02-11";
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/Tigge/antfs-cli";
+    description = "Extracts FIT files from ANT-FS based sport watches";
+    license = licenses.mit;
+    platforms = platforms.linux;
+  };
+
+  src = fetchFromGitHub {
+    owner = "Tigge";
+    repo = "antfs-cli";
+    rev = "85a6cc6fe6fc0ec38399f5aa30fb39177c565b52";
+    sha256 = "0v8y64kldfbs809j1g9d75dd1vxq7mfxnp4b45pz8anpxhjf64fy";
+  };
+
+  propagatedBuildInputs = [ python3Packages.openant ];
+}
diff --git a/nixpkgs/pkgs/applications/misc/ape/apeclex.nix b/nixpkgs/pkgs/applications/misc/ape/apeclex.nix
new file mode 100644
index 000000000000..710ddfec9942
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ape/apeclex.nix
@@ -0,0 +1,8 @@
+{ stdenv, attemptoClex, callPackage }:
+
+callPackage ./. {
+  pname = "ape-clex";
+  lexicon = "${attemptoClex}/clex_lexicon.pl";
+  description = "Parser for Attempto Controlled English (ACE) with a large lexicon (~100,000 entries)";
+  license = with stdenv.lib; [ licenses.lgpl3 licenses.gpl3 ];
+}
diff --git a/nixpkgs/pkgs/applications/misc/ape/clex.nix b/nixpkgs/pkgs/applications/misc/ape/clex.nix
new file mode 100644
index 000000000000..c680ffe96783
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ape/clex.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "attempto-clex";
+  version = "5133afe";
+
+  src = fetchFromGitHub {
+     owner = "Attempto";
+     repo = "Clex";
+     rev = version;
+     sha256 = "0p9s64g1jic213bwm6347jqckszgnni9szrrz31qjgaf32kf7nkp";
+  };
+
+  installPhase = ''
+    mkdir -p $out
+    cp clex_lexicon.pl $out
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Large lexicon for APE (~100,000 entries)";
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ yrashk ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ape/default.nix b/nixpkgs/pkgs/applications/misc/ape/default.nix
new file mode 100644
index 000000000000..0d8ebccb3d02
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ape/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, swiProlog, makeWrapper,
+  fetchFromGitHub,
+  lexicon ? "prolog/lexicon/clex_lexicon.pl",
+  pname ? "ape",
+  description ? "Parser for Attempto Controlled English (ACE)",
+  license ? with stdenv.lib; licenses.lgpl3
+  }:
+
+stdenv.mkDerivation rec {
+  inherit pname;
+  version = "2019-08-10";
+
+  buildInputs = [ swiProlog makeWrapper ];
+
+  src = fetchFromGitHub {
+     owner = "Attempto";
+     repo = "APE";
+     rev = "113b81621262d7a395779465cb09397183e6f74c";
+     sha256 = "0xyvna2fbr18hi5yvm0zwh77q02dfna1g4g53z9mn2rmlfn2mhjh";
+  };
+
+  patchPhase = ''
+    # We move the file first to avoid "same file" error in the default case
+    cp ${lexicon} new_lexicon.pl
+    rm prolog/lexicon/clex_lexicon.pl
+    cp new_lexicon.pl prolog/lexicon/clex_lexicon.pl
+  '';
+
+  buildPhase = ''
+    make SHELL=${stdenv.shell} build
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp ape.exe $out
+    makeWrapper $out/ape.exe $out/bin/ape --add-flags ace
+  '';
+
+  meta = with stdenv.lib; {
+    description = description;
+    license = license;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ yrashk ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/appeditor/default.nix b/nixpkgs/pkgs/applications/misc/appeditor/default.nix
new file mode 100644
index 000000000000..38b51efa240e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/appeditor/default.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, fetchFromGitHub
+, vala
+, meson
+, ninja
+, pkgconfig
+, pantheon
+, python3
+, gettext
+, glib
+, gtk3
+, libgee
+, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "appeditor";
+  version = "1.1.0";
+
+  src = fetchFromGitHub {
+    owner = "donadigo";
+    repo = "appeditor";
+    rev = version;
+    sha256 = "04x2f4x4dp5ca2y3qllqjgirbyl6383pfl4bi9bkcqlg8b5081rg";
+  };
+
+  nativeBuildInputs = [
+    gettext
+    meson
+    ninja
+    vala
+    pkgconfig
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    pantheon.granite
+    libgee
+  ];
+
+  patches = [
+    # See: https://github.com/donadigo/appeditor/issues/88
+    ./fix-build-vala-0.46.patch
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Edit the Pantheon desktop application menu";
+    homepage = "https://github.com/donadigo/appeditor";
+    maintainers = with maintainers; [ xiorcale ] ++ pantheon.maintainers;
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/appeditor/fix-build-vala-0.46.patch b/nixpkgs/pkgs/applications/misc/appeditor/fix-build-vala-0.46.patch
new file mode 100644
index 000000000000..f6c0b4cfd287
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/appeditor/fix-build-vala-0.46.patch
@@ -0,0 +1,22 @@
+diff --git a/src/DesktopApp.vala b/src/DesktopApp.vala
+index 0e6fa47..ebcde0c 100644
+--- a/src/DesktopApp.vala
++++ b/src/DesktopApp.vala
+@@ -130,7 +130,7 @@ public class AppEditor.DesktopApp : Object {
+ 
+     public unowned string get_path () {
+         if (path == null) {
+-            unowned string _path = info.get_string (KeyFileDesktop.KEY_PATH);
++            string _path = info.get_string (KeyFileDesktop.KEY_PATH);
+             if (_path == null) {
+                 _path = "";
+             }
+@@ -150,7 +150,7 @@ public class AppEditor.DesktopApp : Object {
+     }
+ 
+     public bool get_should_show () {
+-        return info.should_show () && !get_terminal (); 
++        return info.should_show () && !get_terminal ();
+     }
+ 
+     public string[] get_categories () {
diff --git a/nixpkgs/pkgs/applications/misc/apvlv/default.nix b/nixpkgs/pkgs/applications/misc/apvlv/default.nix
new file mode 100644
index 000000000000..48efafa74fcd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/apvlv/default.nix
@@ -0,0 +1,74 @@
+{ stdenv, fetchFromGitHub, fetchpatch, cmake, pkgconfig, pcre, libxkbcommon, epoxy
+, gtk3, poppler, freetype, libpthreadstubs, libXdmcp, libxshmfence, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  version = "0.1.5";
+  pname = "apvlv";
+
+  src = fetchFromGitHub {
+    owner = "naihe2010";
+    repo = "apvlv";
+    rev = "v${version}";
+    sha256 = "1n4xiic8lqnv3mqi7wpdv866gyyakax71gffv3n9427rmcld465i";
+  };
+
+  NIX_CFLAGS_COMPILE = "-I${poppler.dev}/include/poppler";
+
+  nativeBuildInputs = [
+    pkgconfig
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    cmake
+    poppler pcre libxkbcommon epoxy
+    freetype gtk3
+    libpthreadstubs libXdmcp libxshmfence # otherwise warnings in compilation
+  ];
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/naihe2010/apvlv/commit/d432635b9c5ea6c052a2ae1fb71aedec5c4ad57a.patch";
+      sha256 = "1am8dgv2kkpqmm2vaysa61czx8ppdx94zb3c59sx88np50jpy70w";
+    })
+    (fetchpatch {
+      url = "https://github.com/naihe2010/apvlv/commit/4c7a583e8431964def482e5471f02e6de8e62a7b.patch";
+      sha256 = "1dszm120lwm90hcg5zmd4vr6pjyaxc84qmb7k0fr59mmb3qif62j";
+    })
+    # fix build with gcc7
+    (fetchpatch {
+      url = "https://github.com/naihe2010/apvlv/commit/a3a895772a27d76dab0c37643f0f4c73f9970e62.patch";
+      sha256 = "1fpc7wr1ajilvwi5gjsy5g9jcx4bl03gp5dmajg90ljqbhwz2bfi";
+    })
+    ./fix-build-with-poppler-0.73.0.patch
+  ];
+
+  installPhase = ''
+    # binary
+    mkdir -p $out/bin
+    cp src/apvlv $out/bin/apvlv
+
+    # displays pdfStartup.pdf as default pdf entry
+    mkdir -p $out/share/doc/apvlv/
+    cp ../Startup.pdf $out/share/doc/apvlv/Startup.pdf
+    cp ../main_menubar.glade $out/share/doc/apvlv/main_menubar.glade
+  ''
+  + stdenv.lib.optionalString (!stdenv.isDarwin) ''
+    install -D ../apvlv.desktop $out/share/applications/apvlv.desktop
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://naihe2010.github.io/apvlv/";
+    description = "PDF viewer with Vim-like behaviour";
+    longDescription = ''
+      apvlv is a PDF/DJVU/UMD/TXT Viewer Under Linux/WIN32
+      with Vim-like behaviour.
+    '';
+
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.ardumont ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/apvlv/fix-build-with-poppler-0.73.0.patch b/nixpkgs/pkgs/applications/misc/apvlv/fix-build-with-poppler-0.73.0.patch
new file mode 100644
index 000000000000..d2a7831dca63
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/apvlv/fix-build-with-poppler-0.73.0.patch
@@ -0,0 +1,13 @@
+diff --git a/src/ApvlvPdf.cc b/src/ApvlvPdf.cc
+index 765b112..83d133f 100644
+--- a/src/ApvlvPdf.cc
++++ b/src/ApvlvPdf.cc
+@@ -29,7 +29,7 @@
+ #include "ApvlvPdf.h"
+
+ #ifndef POPPLER_WITH_GDK
+-#include <goo/gtypes.h>
++#include <goo/gfile.h>
+
+ static void
+ copy_cairo_surface_to_pixbuf (cairo_surface_t *surface,
diff --git a/nixpkgs/pkgs/applications/misc/archiver/default.nix b/nixpkgs/pkgs/applications/misc/archiver/default.nix
new file mode 100644
index 000000000000..0e345b1e273d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/archiver/default.nix
@@ -0,0 +1,26 @@
+{ buildGoModule
+, fetchFromGitHub
+, lib
+}:
+
+buildGoModule rec {
+  pname = "archiver";
+  version = "3.3.0";
+
+  src = fetchFromGitHub {
+    owner = "mholt";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1yr2jhidqvbwh1y08lpqaidwpr5yx3bhvznm5fc9pk64s7z5kq3h";
+  };
+
+  vendorSha256 = "1ikrgl03r9zkn86kxkqi2kf540g3qzzz24i5wvh6g3d5q49nygl9";
+
+  meta = with lib; {
+    description = "Easily create & extract archives, and compress & decompress files of various formats";
+    homepage = "https://github.com/mholt/archiver";
+    license = licenses.mit;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.all;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/misc/artha/default.nix b/nixpkgs/pkgs/applications/misc/artha/default.nix
new file mode 100644
index 000000000000..648a2cfd9945
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/artha/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, autoreconfHook, fetchurl, dbus-glib, gtk2, pkgconfig, wordnet }:
+
+stdenv.mkDerivation {
+  pname = "artha";
+  version = "1.0.3";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/artha/1.0.3/artha-1.0.3.tar.bz2";
+    sha256 = "0qr4ihl7ma3cq82xi1fpzvf74mm9vsg0j035xvmcp3r6rmw2fycx";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ dbus-glib gtk2 wordnet ];
+
+  patches = [
+    ./gio-underlink.patch
+  ];
+
+  meta = with stdenv.lib; {
+    description = "An offline thesaurus based on WordNet";
+    homepage = "http://artha.sourceforge.net";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/artha/gio-underlink.patch b/nixpkgs/pkgs/applications/misc/artha/gio-underlink.patch
new file mode 100644
index 000000000000..08d9c4787369
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/artha/gio-underlink.patch
@@ -0,0 +1,13 @@
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 0236d72..bcc1182 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -38,7 +38,7 @@ artha_LDADD = libwni.a $(WORDNET_LIB)
+ 
+ if POSIX
+ AM_CFLAGS += @libdbus_CFLAGS@
+-artha_LDADD += -lX11 -ldbus-1 -ldbus-glib-1 -lgtk-x11-2.0 \
++artha_LDADD += -lX11 -ldbus-1 -ldbus-glib-1 -lgio-2.0 -lgtk-x11-2.0 \
+ 		-lgdk-x11-2.0 -lgmodule-2.0 -lgobject-2.0 -lglib-2.0
+ else
+ artha_LDADD += @GTK_LIBS@
diff --git a/nixpkgs/pkgs/applications/misc/asciiquarium/default.nix b/nixpkgs/pkgs/applications/misc/asciiquarium/default.nix
new file mode 100644
index 000000000000..592c0938ffbd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/asciiquarium/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, makeWrapper, perlPackages }:
+
+let version = "1.1";
+in stdenv.mkDerivation {
+  pname = "asciiquarium";
+  inherit version;
+  src = fetchurl {
+    url = "https://robobunny.com/projects/asciiquarium/asciiquarium_${version}.tar.gz";
+    sha256 = "0qfkr5b7sxzi973nh0h84blz2crvmf28jkkgaj3mxrr56mhwc20v";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ perlPackages.perl ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp asciiquarium $out/bin
+    chmod +x $out/bin/asciiquarium
+    wrapProgram $out/bin/asciiquarium \
+      --set PERL5LIB ${perlPackages.makeFullPerlPath [ perlPackages.TermAnimation ] }
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Enjoy the mysteries of the sea from the safety of your own terminal!";
+    homepage = "https://robobunny.com/projects/asciiquarium/html/";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.utdemir ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/audio/sox/default.nix b/nixpkgs/pkgs/applications/misc/audio/sox/default.nix
new file mode 100644
index 000000000000..32ea821b22d6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/audio/sox/default.nix
@@ -0,0 +1,50 @@
+{ config, lib, stdenv, fetchurl, pkgconfig, CoreAudio
+, enableAlsa ? true, alsaLib ? null
+, enableLibao ? true, libao ? null
+, enableLame ? config.sox.enableLame or false, lame ? null
+, enableLibmad ? true, libmad ? null
+, enableLibogg ? true, libogg ? null, libvorbis ? null
+, enableOpusfile ? true, opusfile ? null
+, enableFLAC ? true, flac ? null
+, enablePNG ? true, libpng ? null
+, enableLibsndfile ? true, libsndfile ? null
+# amrnb and amrwb are unfree, disabled by default
+, enableAMR ? false, amrnb ? null, amrwb ? null
+, enableLibpulseaudio ? true, libpulseaudio ? null
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "sox-14.4.2";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/sox/${name}.tar.gz";
+    sha256 = "0v2znlxkxxcd3f48hf3dx9pq7i6fdhb62kgj7wv8xggz8f35jpxl";
+  };
+
+  # configure.ac uses pkg-config only to locate libopusfile
+  nativeBuildInputs = optional enableOpusfile pkgconfig;
+
+  buildInputs =
+    optional (enableAlsa && stdenv.isLinux) alsaLib ++
+    optional enableLibao libao ++
+    optional enableLame lame ++
+    optional enableLibmad libmad ++
+    optionals enableLibogg [ libogg libvorbis ] ++
+    optional enableOpusfile opusfile ++
+    optional enableFLAC flac ++
+    optional enablePNG libpng ++
+    optional enableLibsndfile libsndfile ++
+    optionals enableAMR [ amrnb amrwb ] ++
+    optional enableLibpulseaudio libpulseaudio ++
+    optional (stdenv.isDarwin) CoreAudio;
+
+  meta = {
+    description = "Sample Rate Converter for audio";
+    homepage = "http://sox.sourceforge.net/";
+    maintainers = [ lib.maintainers.marcweber ];
+    license = if enableAMR then lib.licenses.unfree else lib.licenses.gpl2Plus;
+    platforms = lib.platforms.linux ++ lib.platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/audio/soxr/default.nix b/nixpkgs/pkgs/applications/misc/audio/soxr/default.nix
new file mode 100644
index 000000000000..59c7154fa7de
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/audio/soxr/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, cmake }:
+
+stdenv.mkDerivation rec {
+  name = "soxr-0.1.3";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/soxr/${name}-Source.tar.xz";
+    sha256 = "12aql6svkplxq5fjycar18863hcq84c5kx8g6f4rj0lcvigw24di";
+  };
+
+  outputs = [ "out" "doc" ]; # headers are just two and very small
+
+  preConfigure = if stdenv.isDarwin then ''
+    export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH''${DYLD_LIBRARY_PATH:+:}"`pwd`/build/src
+  '' else ''
+    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}"`pwd`/build/src
+  '';
+
+  nativeBuildInputs = [ cmake ];
+
+  meta = {
+    description = "An audio resampling library";
+    homepage = "http://soxr.sourceforge.net";
+    license = stdenv.lib.licenses.lgpl21Plus;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/audio/wavesurfer/default.nix b/nixpkgs/pkgs/applications/misc/audio/wavesurfer/default.nix
new file mode 100644
index 000000000000..0ca01c8d2aed
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/audio/wavesurfer/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, snack, tcl, tk, makeWrapper }:
+
+stdenv.mkDerivation {
+  name = "wavesurfer-1.8.5";
+
+  src = fetchurl {
+    url = "https://www.speech.kth.se/wavesurfer/wavesurfer-1.8.5.tar.gz";
+    sha256 = "1yx9s1j47cq0v40cwq2gn7bdizpw46l95ba4zl9z4gg31mfvm807";
+  };
+
+  buildInputs = [ snack tcl tk makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/{bin,nix-support,share/wavesurfer/}
+    mv doc $out/share/wavesurfer
+    mv * $out/nix-support
+    ln -s $out/{nix-support,bin}/wavesurfer.tcl
+    wrapProgram "$out/nix-support/wavesurfer.tcl"  \
+                 --set TCLLIBPATH "${snack}/lib" \
+                 --prefix PATH : "${stdenv.lib.makeBinPath [ tcl tk ]}"
+  '';
+
+  meta = { 
+    description = "Tool for recording, playing, editing, viewing and labeling of audio";
+    homepage = "http://www.speech.kth.se/wavesurfer/";
+    license = "BSD";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/audio/wavrsocvt/default.nix b/nixpkgs/pkgs/applications/misc/audio/wavrsocvt/default.nix
new file mode 100644
index 000000000000..ebb04a30ab86
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/audio/wavrsocvt/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation {
+  name = "wavrsocvt-1.0.2.0";
+
+  src = fetchurl {
+    url = "http://bricxcc.sourceforge.net/wavrsocvt.tgz";
+    sha256 = "15qlvdfwbiclljj7075ycm78yzqahzrgl4ky8pymix5179acm05h";
+  };
+
+  phases = [ "unpackPhase" "installPhase" ];
+
+  unpackPhase = ''
+    tar -zxf $src 
+    '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp wavrsocvt $out/bin
+    '';
+
+  meta = with stdenv.lib; {
+    description = "Convert .wav files into sound files for Lego NXT brick";
+    longDescription = ''
+    wavrsocvt is a command-line utility which can be used from a
+    terminal window or script to convert .wav files into sound
+    files for the NXT brick (.rso files). It can also convert the
+    other direction (i.e., .rso -> .wav). It can produce RSO files
+    with a sample rate between 2000 and 16000 (the min/max range of
+    supported sample rates in the standard NXT firmware).
+    You can then upload these with e.g. nxt-python.
+    '';
+    homepage = "http://bricxcc.sourceforge.net/";
+    license = licenses.mpl11;
+    maintainers = with maintainers; [ leenaars ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ausweisapp2/default.nix b/nixpkgs/pkgs/applications/misc/ausweisapp2/default.nix
new file mode 100644
index 000000000000..953e12a033d0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ausweisapp2/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, mkDerivation, fetchFromGitHub, cmake, pkgconfig, pcsclite, qtsvg, qttools, qtwebsockets
+, qtquickcontrols2, qtgraphicaleffects }:
+
+mkDerivation rec {
+  pname = "AusweisApp2";
+  version = "1.20.0";
+
+  src = fetchFromGitHub {
+    owner = "Governikus";
+    repo = "AusweisApp2";
+    rev = "${version}";
+    sha256 = "0qkwdaxhig4qjim7h20j6ln6w76ycppfc786nd8l69bd1qv46m40";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [ qtsvg qttools qtwebsockets qtquickcontrols2 qtgraphicaleffects pcsclite ];
+
+  meta = with stdenv.lib; {
+    description = "Authentication software for the German ID card";
+    downloadPage = "https://github.com/Governikus/AusweisApp2/releases";
+    homepage = "https://www.ausweisapp.bund.de/ausweisapp2/";
+    license = licenses.eupl12;
+    maintainers = with maintainers; [ b4dm4n ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/autospotting/default.nix b/nixpkgs/pkgs/applications/misc/autospotting/default.nix
new file mode 100644
index 000000000000..a33261e7a59d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/autospotting/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage {
+  pname = "autospotting";
+  version = "unstable-2018-11-17";
+  goPackagePath = "github.com/AutoSpotting/AutoSpotting";
+
+  src = fetchFromGitHub {
+    owner = "AutoSpotting";
+    repo = "AutoSpotting";
+    rev = "122ab8f292a2f718dd85e79ec22acd455122907e";
+    sha256 = "0p48lgig9kblxvgq1kggczkn4qdbx6ciq9c8x0179i80vl4jf7v6";
+  };
+
+  goDeps = ./deps.nix;
+
+  # patching path where repository used to exist
+  postPatch = ''
+    sed -i "s+github.com/cristim/autospotting/core+github.com/AutoSpotting/AutoSpotting/core+" autospotting.go
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/AutoSpotting/AutoSpotting";
+    description = "Automatically convert your existing AutoScaling groups to up to 90% cheaper spot instances with minimal configuration changes";
+    license = licenses.free;
+    maintainers = [ maintainers.costrouc ];
+    platforms = platforms.unix;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/autospotting/deps.nix b/nixpkgs/pkgs/applications/misc/autospotting/deps.nix
new file mode 100644
index 000000000000..ea744ed6648f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/autospotting/deps.nix
@@ -0,0 +1,75 @@
+# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix)
+[
+  {
+    goPackagePath  = "github.com/aws/aws-lambda-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/aws/aws-lambda-go";
+      rev =  "2d482ef09017ae953b1e8d5a6ddac5b696663a3c";
+      sha256 = "06v2yfvn4sn116lds0526a8mfrsng4vafrdjf1dhpalqarrbdvmz";
+    };
+  }
+  {
+    goPackagePath  = "github.com/aws/aws-sdk-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/aws/aws-sdk-go";
+      rev =  "9333060a8d957db41bff1c80603a802aa674fad8";
+      sha256 = "0fnypw6zm6k70fzhm5a8g69ag64rxbrrpdk7l3rkfqd99slyg5kz";
+    };
+  }
+  {
+    goPackagePath  = "github.com/cristim/ec2-instances-info";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cristim/ec2-instances-info";
+      rev =  "73c042a5558cd6d8b61fb82502d6f7aec334e9ed";
+      sha256 = "1xajrkxqqz5wlbi9w2wdhnk115rbmqxyga29f8v9psq8hzwgi0rg";
+    };
+  }
+  {
+    goPackagePath  = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev =  "d8f796af33cc11cb798c1aaeb27a4ebc5099927d";
+      sha256 = "19z27f306fpsrjdvkzd61w1bdazcdbczjyjck177g33iklinhpvx";
+    };
+  }
+  {
+    goPackagePath  = "github.com/go-ini/ini";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-ini/ini";
+      rev =  "5cf292cae48347c2490ac1a58fe36735fb78df7e";
+      sha256 = "0xbnw1nd22q6k863n5gs0nxld15w0p8qxbhfky85akcb5rk1vwi9";
+    };
+  }
+  {
+    goPackagePath  = "github.com/jmespath/go-jmespath";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jmespath/go-jmespath";
+      rev =  "0b12d6b5";
+      sha256 = "1vv6hph8j6xgv7gwl9vvhlsaaqsm22sxxqmgmldi4v11783pc1ld";
+    };
+  }
+  {
+    goPackagePath  = "github.com/namsral/flag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/namsral/flag";
+      rev =  "67f268f20922975c067ed799e4be6bacf152208c";
+      sha256 = "1lmxq3z276zrsggpfq9b7yklzzxdyib49zr8sznb1lcqlvxqsr47";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev =  "645ef00459ed84a119197bfb8d8205042c6df63d";
+      sha256 = "001i6n71ghp2l6kdl3qq1v2vmghcz3kicv9a5wgcihrzigm75pp5";
+    };
+  }
+]
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/misc/avrdudess/default.nix b/nixpkgs/pkgs/applications/misc/avrdudess/default.nix
new file mode 100644
index 000000000000..f4a56e4f9240
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/avrdudess/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, runtimeShell, fetchurl, unzip, mono, avrdude, gtk2, xdg_utils }:
+
+stdenv.mkDerivation {
+  name = "avrdudess-2.2.20140102";
+
+  src = fetchurl {
+    url = "http://blog.zakkemble.co.uk/download/avrdudess_20140102.zip";
+    sha256 = "18llpvjsfhypzijrvfbzmcg3g141f307mzsrg11wcdxh9syxqak6";
+  };
+
+  buildInputs = [ unzip ];
+
+  phases = [ "buildPhase" ];
+
+  buildPhase = ''
+    mkdir -p "$out/avrdudess"
+    mkdir -p "$out/bin"
+
+    unzip "$src" -d "$out/avrdudess"
+
+    cat >> "$out/bin/avrdudess" << __EOF__
+    #!${runtimeShell}
+    export LD_LIBRARY_PATH="${stdenv.lib.makeLibraryPath [gtk2 mono]}"
+    # We need PATH from user env for xdg-open to find its tools, which
+    # typically depend on the currently running desktop environment.
+    export PATH="${stdenv.lib.makeBinPath [ avrdude xdg_utils ]}:\$PATH"
+
+    # avrdudess must have its resource files in its current working directory
+    cd $out/avrdudess && exec ${mono}/bin/mono "$out/avrdudess/avrdudess.exe" "\$@"
+    __EOF__
+
+    chmod a+x "$out/bin/"*
+  '';
+
+  meta = with stdenv.lib; {
+    description = "GUI for AVRDUDE (AVR microcontroller programmer)";
+    homepage = "https://github.com/zkemble/AVRDUDESS";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/azuredatastudio/default.nix b/nixpkgs/pkgs/applications/misc/azuredatastudio/default.nix
new file mode 100644
index 000000000000..902bef5f12ec
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/azuredatastudio/default.nix
@@ -0,0 +1,115 @@
+{ stdenv
+, lib
+, fetchurl
+, makeWrapper
+, libuuid
+, libunwind
+, icu
+, openssl
+, zlib
+, curl
+, at-spi2-core
+, at-spi2-atk
+, gnutar
+, atomEnv
+, kerberos
+}:
+
+# from justinwoo/azuredatastudio-nix
+# https://github.com/justinwoo/azuredatastudio-nix/blob/537c48aa3981cd1a82d5d6e508ab7e7393b3d7c8/default.nix
+
+stdenv.mkDerivation rec {
+
+  pname = "azuredatastudio";
+  version = "1.17.1";
+
+  src = fetchurl {
+    url = "https://azuredatastudiobuilds.blob.core.windows.net/releases/${version}/azuredatastudio-linux-${version}.tar.gz";
+    sha256 = "0px9n9vyjvyddca4x7d0zindd0dim7350vkjg5dd0506fm8dc38k";
+  };
+
+  nativeBuildInputs = [
+    makeWrapper
+  ];
+
+  buildInputs = [
+    libuuid
+    at-spi2-core
+    at-spi2-atk
+  ];
+
+  phases = "unpackPhase fixupPhase";
+
+  # change this to azuredatastudio-insiders for insiders releases
+  edition = "azuredatastudio";
+  targetPath = "$out/${edition}";
+
+  unpackPhase = ''
+    mkdir -p ${targetPath}
+    ${gnutar}/bin/tar xf $src --strip 1 -C ${targetPath}
+  '';
+
+  sqltoolsserviceRpath = stdenv.lib.makeLibraryPath [
+    stdenv.cc.cc
+    libunwind
+    libuuid
+    icu
+    openssl
+    zlib
+    curl
+  ];
+
+  # this will most likely need to be updated when azuredatastudio's version changes
+  sqltoolsservicePath = "${targetPath}/resources/app/extensions/mssql/sqltoolsservice/Linux/2.0.0-release.56";
+
+  rpath = stdenv.lib.concatStringsSep ":" [
+    atomEnv.libPath
+    (
+      stdenv.lib.makeLibraryPath [
+        libuuid
+        at-spi2-core
+        at-spi2-atk
+        stdenv.cc.cc.lib
+        kerberos
+      ]
+    )
+    targetPath
+    sqltoolsserviceRpath
+  ];
+
+  fixupPhase = ''
+    fix_sqltoolsservice()
+    {
+      mv ${sqltoolsservicePath}/$1 ${sqltoolsservicePath}/$1_old
+      patchelf \
+        --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" \
+        ${sqltoolsservicePath}/$1_old
+
+      makeWrapper \
+        ${sqltoolsservicePath}/$1_old \
+        ${sqltoolsservicePath}/$1 \
+        --set LD_LIBRARY_PATH ${sqltoolsserviceRpath}
+    }
+
+    fix_sqltoolsservice MicrosoftSqlToolsServiceLayer
+    fix_sqltoolsservice MicrosoftSqlToolsCredentials
+    fix_sqltoolsservice SqlToolsResourceProviderService
+
+    patchelf \
+      --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" \
+      ${targetPath}/${edition}
+
+    mkdir -p $out/bin
+    makeWrapper \
+      ${targetPath}/bin/${edition} \
+      $out/bin/azuredatastudio \
+      --set LD_LIBRARY_PATH ${rpath}
+  '';
+
+  meta = {
+    maintainers = with stdenv.lib.maintainers; [ xavierzwirtz ];
+    description = "A data management tool that enables working with SQL Server, Azure SQL DB and SQL DW";
+    homepage = "https://docs.microsoft.com/en-us/sql/azure-data-studio/download-azure-data-studio";
+    license = lib.licenses.unfreeRedistributable;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/barrier/default.nix b/nixpkgs/pkgs/applications/misc/barrier/default.nix
new file mode 100644
index 000000000000..28b65d2b58b6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/barrier/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, cmake, curl, xorg, avahi, qtbase, mkDerivation,
+  openssl, wrapGAppsHook,
+  avahiWithLibdnssdCompat ? avahi.override { withLibdnssdCompat = true; }
+}:
+
+mkDerivation rec {
+  pname = "barrier";
+  version = "2.3.2";
+
+  src = fetchFromGitHub {
+    owner = "debauchee";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1gbg3p7c0vcsdzsjj1ssx6k8xpj3rpyvais12266f0xvnbvihczd";
+  };
+
+  buildInputs = [ curl xorg.libX11 xorg.libXext xorg.libXtst avahiWithLibdnssdCompat qtbase ];
+  nativeBuildInputs = [ cmake wrapGAppsHook ];
+
+  postFixup = ''
+    substituteInPlace "$out/share/applications/barrier.desktop" --replace "Exec=barrier" "Exec=$out/bin/barrier"
+  '';
+
+  qtWrapperArgs = [
+    ''--prefix PATH : ${stdenv.lib.makeBinPath [ openssl ]}''
+  ];
+
+  meta = {
+    description = "Open-source KVM software";
+    longDescription = ''
+      Barrier is KVM software forked from Symless's synergy 1.9 codebase.
+      Synergy was a commercialized reimplementation of the original
+      CosmoSynergy written by Chris Schoeneman.
+    '';
+    homepage = "https://github.com/debauchee/barrier";
+    downloadPage = "https://github.com/debauchee/barrier/releases";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.phryneas ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/bashSnippets/default.nix b/nixpkgs/pkgs/applications/misc/bashSnippets/default.nix
new file mode 100644
index 000000000000..4a023849f390
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/bashSnippets/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, lib, fetchFromGitHub, makeWrapper
+, curl, python, bind, iproute, bc, gitMinimal }:
+let
+  version = "1.23.0";
+  deps = lib.makeBinPath [
+    curl
+    python
+    bind.dnsutils
+    iproute
+    bc
+    gitMinimal
+  ];
+in
+stdenv.mkDerivation {
+  pname = "bashSnippets";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "alexanderepstein";
+    repo = "Bash-Snippets";
+    rev = "v${version}";
+    sha256 = "044nxgd3ic2qr6hgq5nymn3dyf5i4s8mv5z4az6jvwlrjnvbg8cp";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  patchPhase = ''
+    patchShebangs install.sh
+    substituteInPlace install.sh --replace /usr/local "$out"
+  '';
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p "$out"/bin "$out"/share/man/man1
+    ./install.sh all
+    for file in "$out"/bin/*; do
+      wrapProgram "$file" --prefix PATH : "${deps}"
+    done
+  '';
+
+  meta = with lib; {
+    description = "A collection of small bash scripts for heavy terminal users";
+    homepage = "https://github.com/alexanderepstein/Bash-Snippets";
+    license = licenses.mit;
+    maintainers = with maintainers; [ infinisil ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/bb/default.nix b/nixpkgs/pkgs/applications/misc/bb/default.nix
new file mode 100644
index 000000000000..fd7eb4990f06
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/bb/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, lib, fetchurl, darwin, aalib, ncurses, xorg, libmikmod }:
+
+stdenv.mkDerivation rec {
+  pname = "bb";
+  version = "1.3rc1";
+
+  src = fetchurl {
+    url    = "mirror://sourceforge/aa-project/bb/${version}/${pname}-${version}.tar.gz";
+    sha256 = "1i411glxh7g4pfg4gw826lpwngi89yrbmxac8jmnsfvrfb48hgbr";
+  };
+
+  buildInputs = [
+    aalib ncurses libmikmod
+    xorg.libXau xorg.libXdmcp xorg.libX11
+  ] ++ lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.CoreAudio;
+
+  postPatch = lib.optionalString stdenv.isDarwin ''
+    sed -i -e '/^#include <malloc.h>$/d' *.c
+  '';
+
+  meta = with lib; {
+    homepage    = "http://aa-project.sourceforge.net/bb";
+    description = "AA-lib demo";
+    license     = licenses.gpl2;
+    maintainers = [ maintainers.rnhmjoj ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/bemenu/default.nix b/nixpkgs/pkgs/applications/misc/bemenu/default.nix
new file mode 100644
index 000000000000..8b17ecea3cbb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/bemenu/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, lib, fetchFromGitHub, cairo, libxkbcommon
+, pango, fribidi, harfbuzz, pcre, pkgconfig
+, ncursesSupport ? true, ncurses ? null
+, waylandSupport ? true, wayland ? null, wayland-protocols ? null
+, x11Support ? true, xlibs ? null, xorg ? null
+}:
+
+assert ncursesSupport -> ncurses != null;
+assert waylandSupport -> ! lib.elem null [wayland wayland-protocols];
+assert x11Support -> xlibs != null && xorg != null;
+
+stdenv.mkDerivation rec {
+  pname = "bemenu";
+  version = "0.4.1";
+
+  src = fetchFromGitHub {
+    owner = "Cloudef";
+    repo = pname;
+    rev = version;
+    sha256 = "1fjcs9d3533ay3nz79cx3c0lmy2chgragr2lhsy0xl2ckr0iins0";
+  };
+
+  nativeBuildInputs = [ pkgconfig pcre ];
+
+  makeFlags = ["PREFIX=$(out)"];
+
+  buildFlags = ["clients"]
+    ++ lib.optional ncursesSupport "curses"
+    ++ lib.optional waylandSupport "wayland"
+    ++ lib.optional x11Support "x11";
+
+  buildInputs = with stdenv.lib; [
+    cairo
+    fribidi
+    harfbuzz
+    libxkbcommon
+    pango
+  ] ++ optional ncursesSupport ncurses
+    ++ optionals waylandSupport [ wayland wayland-protocols ]
+    ++ optionals x11Support [
+      xlibs.libX11 xlibs.libXinerama xlibs.libXft
+      xorg.libXdmcp xorg.libpthreadstubs xorg.libxcb
+    ];
+
+  meta = with lib; {
+    homepage = "https://github.com/Cloudef/bemenu";
+    description = "Dynamic menu library and client program inspired by dmenu";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ lheckemann ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/bibletime/default.nix b/nixpkgs/pkgs/applications/misc/bibletime/default.nix
new file mode 100644
index 000000000000..cfac79bef4bd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/bibletime/default.nix
@@ -0,0 +1,36 @@
+{ mkDerivation, stdenv, fetchurl, cmake, pkgconfig, sword, boost, clucene_core
+, qtbase, qttools, qtsvg, qtwebkit
+}:
+
+mkDerivation rec {
+
+  version = "2.11.2";
+
+  pname = "bibletime";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/bibletime/${pname}-${version}.tar.xz";
+    sha256 = "1s5bvmwbz1gyp3ml8sghpc00h8nhdvx2iyq96iri30kwx1y1jy6i";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [
+   sword boost clucene_core
+   qtbase qttools qtsvg qtwebkit
+ ];
+
+  preConfigure =  ''
+    export CLUCENE_HOME=${clucene_core};
+    export SWORD_HOME=${sword};
+  '';
+
+  cmakeFlags = [ "-DUSE_QT_WEBKIT=ON" "-DCMAKE_BUILD_TYPE=Debug" ];
+
+  meta = {
+    description = "A Qt4 Bible study tool";
+    homepage = "http://www.bibletime.info/";
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.piotr ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/bicon/default.nix b/nixpkgs/pkgs/applications/misc/bicon/default.nix
new file mode 100644
index 000000000000..41b0d3c13a80
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/bicon/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+  , fetchFromGitHub
+  , autoreconfHook
+  , pkg-config
+  , perl
+  , fribidi
+  , kbd
+  , xkbutils
+}:
+
+stdenv.mkDerivation rec {
+  pname = "bicon";
+  version = "unstable-2018-09-10";
+
+  src = fetchFromGitHub {
+    owner = "behdad";
+    repo = pname;
+    rev = "38725c062a83ab19c4e4b4bc20eb9535561aa76c";
+    sha256 = "0hdslrci8pq300f3rrjsvl5psfrxdwyxf9g2m5g789sr049dksnq";
+  };
+
+  buildInputs = [ fribidi kbd xkbutils perl ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
+
+  preConfigure = ''
+    patchShebangs .
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A bidirectional console";
+    homepage =  "https://github.com/behdad/bicon";
+    license = [ licenses.lgpl21 licenses.psfl licenses.bsd0 ];
+    maintainers = [ maintainers.linarcx ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/birdtray/default.nix b/nixpkgs/pkgs/applications/misc/birdtray/default.nix
new file mode 100644
index 000000000000..5385cf67884d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/birdtray/default.nix
@@ -0,0 +1,35 @@
+{ mkDerivation
+  , lib
+  , fetchFromGitHub
+
+  , cmake
+  , pkgconfig
+  , qtbase
+  , qttools
+  , qtx11extras
+}:
+
+mkDerivation rec {
+  pname = "birdtray";
+  version = "1.8.1";
+
+  src = fetchFromGitHub {
+    owner = "gyunaev";
+    repo = pname;
+    rev = version;
+    sha256 = "15l8drdmamq1dpqpj0h9ajj2r5vcs23cx421drvhfgs6bqlzd1hl";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [
+    qtbase qttools qtx11extras
+  ];
+
+  meta = with lib; {
+    description = "Mail system tray notification icon for Thunderbird";
+    homepage = "https://github.com/gyunaev/birdtray";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ Flakebi ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/bleachbit/default.nix b/nixpkgs/pkgs/applications/misc/bleachbit/default.nix
new file mode 100644
index 000000000000..0111f8519e7c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/bleachbit/default.nix
@@ -0,0 +1,63 @@
+{ stdenv
+, pythonPackages
+, fetchurl
+, gettext
+, gobject-introspection
+, wrapGAppsHook
+, glib
+, gtk3
+, libnotify
+}:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "bleachbit";
+  version = "3.2.0";
+
+  format = "other";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.bz2";
+    sha256 = "1sszpn7ifiry0wwmkzdppzh61zvgrfypm9g7wk6q1ya20qhb5b51";
+  };
+
+  nativeBuildInputs = [
+    gettext
+    gobject-introspection
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    libnotify
+  ];
+
+  propagatedBuildInputs = with pythonPackages; [
+    chardet
+    pygobject3
+    requests
+    scandir
+  ];
+
+  # Patch the many hardcoded uses of /usr/share/ and /usr/bin
+  postPatch = ''
+    find -type f -exec sed -i -e 's@/usr/share@${placeholder "out"}/share@g' {} \;
+    find -type f -exec sed -i -e 's@/usr/bin@${placeholder "out"}/bin@g' {} \;
+  '';
+
+  dontBuild = true;
+
+  installFlags = [
+    "prefix=${placeholder "out"}"
+  ];
+
+  strictDeps = false;
+
+  meta = with stdenv.lib; {
+    homepage = "http://bleachbit.sourceforge.net";
+    description = "A program to clean your computer";
+    longDescription = "BleachBit helps you easily clean your computer to free space and maintain privacy.";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ leonardoce ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/blender/darwin.patch b/nixpkgs/pkgs/applications/misc/blender/darwin.patch
new file mode 100644
index 000000000000..c426c0b66077
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/blender/darwin.patch
@@ -0,0 +1,96 @@
+diff a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake
+--- a/build_files/cmake/platform/platform_apple.cmake
++++ b/build_files/cmake/platform/platform_apple.cmake
+@@ -35,7 +35,6 @@ else()
+   message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}")
+ endif()
+ if(NOT EXISTS "${LIBDIR}/")
+-  message(FATAL_ERROR "Mac OSX requires pre-compiled libs at: '${LIBDIR}'")
+ endif()
+ 
+ if(WITH_OPENAL)
+@@ -86,7 +85,7 @@ endif()
+ if(WITH_CODEC_SNDFILE)
+   set(LIBSNDFILE ${LIBDIR}/sndfile)
+   set(LIBSNDFILE_INCLUDE_DIRS ${LIBSNDFILE}/include)
+-  set(LIBSNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc)
++  set(LIBSNDFILE_LIBRARIES sndfile)
+   set(LIBSNDFILE_LIBPATH ${LIBSNDFILE}/lib ${LIBDIR}/ffmpeg/lib)  # TODO, deprecate
+ endif()
+ 
+@@ -97,7 +96,7 @@ if(WITH_PYTHON)
+     # normally cached but not since we include them with blender
+     set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m")
+     set(PYTHON_EXECUTABLE "${LIBDIR}/python/bin/python${PYTHON_VERSION}m")
+-    set(PYTHON_LIBRARY ${LIBDIR}/python/lib/libpython${PYTHON_VERSION}m.a)
++    set(PYTHON_LIBRARY "${LIBDIR}/python/lib/libpython${PYTHON_VERSION}m.dylib")
+     set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}")
+     # set(PYTHON_LINKFLAGS "-u _PyMac_Error")  # won't  build with this enabled
+   else()
+@@ -162,10 +161,7 @@ if(WITH_CODEC_FFMPEG)
+   set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
+   set(FFMPEG_LIBRARIES
+     avcodec avdevice avformat avutil
+-    mp3lame swscale x264 xvidcore
+-    theora theoradec theoraenc
+-    vorbis vorbisenc vorbisfile ogg opus
+-    vpx swresample)
++    swscale swresample)
+   set(FFMPEG_LIBPATH ${FFMPEG}/lib)
+ endif()
+ 
+@@ -206,14 +202,14 @@ if(WITH_OPENCOLLADA)
+   set(OPENCOLLADA ${LIBDIR}/opencollada)
+ 
+   set(OPENCOLLADA_INCLUDE_DIRS
+-    ${LIBDIR}/opencollada/include/COLLADAStreamWriter
+-    ${LIBDIR}/opencollada/include/COLLADABaseUtils
+-    ${LIBDIR}/opencollada/include/COLLADAFramework
+-    ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader
+-    ${LIBDIR}/opencollada/include/GeneratedSaxParser
++    ${LIBDIR}/opencollada/include/opencollada/COLLADAStreamWriter
++    ${LIBDIR}/opencollada/include/opencollada/COLLADABaseUtils
++    ${LIBDIR}/opencollada/include/opencollada/COLLADAFramework
++    ${LIBDIR}/opencollada/include/opencollada/COLLADASaxFrameworkLoader
++    ${LIBDIR}/opencollada/include/opencollada/GeneratedSaxParser
+   )
+ 
+-  set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
++  set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib/opencollada)
+   set(OPENCOLLADA_LIBRARIES
+     OpenCOLLADASaxFrameworkLoader
+     -lOpenCOLLADAFramework
+@@ -277,14 +273,13 @@ if(WITH_BOOST)
+ endif()
+ 
+ if(WITH_INTERNATIONAL OR WITH_CODEC_FFMPEG)
+-  set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -liconv") # boost_locale and ffmpeg needs it !
+ endif()
+ 
+ if(WITH_OPENIMAGEIO)
+   set(OPENIMAGEIO ${LIBDIR}/openimageio)
+   set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
+   set(OPENIMAGEIO_LIBRARIES
+-    ${OPENIMAGEIO}/lib/libOpenImageIO.a
++    ${OPENIMAGEIO}/lib/libOpenImageIO.dylib
+     ${PNG_LIBRARIES}
+     ${JPEG_LIBRARIES}
+     ${TIFF_LIBRARY}
+@@ -307,7 +302,7 @@ endif()
+ if(WITH_OPENCOLORIO)
+   set(OPENCOLORIO ${LIBDIR}/opencolorio)
+   set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
+-  set(OPENCOLORIO_LIBRARIES OpenColorIO tinyxml yaml-cpp)
++  set(OPENCOLORIO_LIBRARIES OpenColorIO)
+   set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
+ endif()
+ 
+@@ -443,7 +438,7 @@ else()
+   set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
+ endif()
+ 
+-if(${XCODE_VERSION} VERSION_EQUAL 5 OR ${XCODE_VERSION} VERSION_GREATER 5)
++if(FALSE)
+   # Xcode 5 is always using CLANG, which has too low template depth of 128 for libmv
+   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=1024")
+ endif()
diff --git a/nixpkgs/pkgs/applications/misc/blender/default.nix b/nixpkgs/pkgs/applications/misc/blender/default.nix
new file mode 100644
index 000000000000..bf2a89ade559
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/blender/default.nix
@@ -0,0 +1,147 @@
+{ config, stdenv, lib, fetchurl, boost, cmake, ffmpeg_3, gettext, glew
+, ilmbase, libXi, libX11, libXext, libXrender
+, libjpeg, libpng, libsamplerate, libsndfile
+, libtiff, libGLU, libGL, openal, opencolorio, openexr, openimagedenoise, openimageio2, openjpeg, python3Packages
+, openvdb, libXxf86vm, tbb, alembic
+, zlib, fftw, opensubdiv, freetype, jemalloc, ocl-icd, addOpenGLRunpath
+, jackaudioSupport ? false, libjack2
+, cudaSupport ? config.cudaSupport or false, cudatoolkit
+, colladaSupport ? true, opencollada
+, makeWrapper
+, pugixml, SDL, Cocoa, CoreGraphics, ForceFeedback, OpenAL, OpenGL
+}:
+
+with lib;
+
+let python = python3Packages.python; in
+
+stdenv.mkDerivation rec {
+  pname = "blender";
+  version = "2.83.0";
+
+  src = fetchurl {
+    url = "https://download.blender.org/source/${pname}-${version}.tar.xz";
+    sha256 = "07rzm4xaj94pjxy2vlqfhi1adsqpshfkrzrq8kljmcbnw22vrqhl";
+  };
+
+  patches = lib.optional stdenv.isDarwin ./darwin.patch;
+
+  nativeBuildInputs = [ cmake ] ++ optional cudaSupport addOpenGLRunpath;
+  buildInputs =
+    [ boost ffmpeg_3 gettext glew ilmbase
+      freetype libjpeg libpng libsamplerate libsndfile libtiff
+      opencolorio openexr openimagedenoise openimageio2 openjpeg python zlib fftw jemalloc
+      alembic
+      (opensubdiv.override { inherit cudaSupport; })
+      tbb
+      makeWrapper
+    ]
+    ++ (if (!stdenv.isDarwin) then [
+      libXi libX11 libXext libXrender
+      libGLU libGL openal
+      libXxf86vm
+      # OpenVDB currently doesn't build on darwin
+      openvdb
+    ]
+    else [
+      pugixml SDL Cocoa CoreGraphics ForceFeedback OpenAL OpenGL
+    ])
+    ++ optional jackaudioSupport libjack2
+    ++ optional cudaSupport cudatoolkit
+    ++ optional colladaSupport opencollada;
+
+  postPatch =
+    if stdenv.isDarwin then ''
+      : > build_files/cmake/platform/platform_apple_xcode.cmake
+      substituteInPlace source/creator/CMakeLists.txt \
+        --replace '${"$"}{LIBDIR}/python' \
+                  '${python}'
+      substituteInPlace build_files/cmake/platform/platform_apple.cmake \
+        --replace '${"$"}{LIBDIR}/python' \
+                  '${python}' \
+        --replace '${"$"}{LIBDIR}/opencollada' \
+                  '${opencollada}' \
+        --replace '${"$"}{PYTHON_LIBPATH}/site-packages/numpy' \
+                  '${python3Packages.numpy}/${python.sitePackages}/numpy' \
+        --replace 'set(OPENJPEG_INCLUDE_DIRS ' \
+                  'set(OPENJPEG_INCLUDE_DIRS "'$(echo ${openjpeg.dev}/include/openjpeg-*)'") #' \
+        --replace 'set(OPENJPEG_LIBRARIES ' \
+                  'set(OPENJPEG_LIBRARIES "${openjpeg}/lib/libopenjp2.dylib") #' \
+        --replace 'set(OPENIMAGEIO ' \
+                  'set(OPENIMAGEIO "${openimageio2.out}") #' \
+        --replace 'set(OPENEXR_INCLUDE_DIRS ' \
+                  'set(OPENEXR_INCLUDE_DIRS "${openexr.dev}/include/OpenEXR") #'
+    '' else ''
+      substituteInPlace extern/clew/src/clew.c --replace '"libOpenCL.so"' '"${ocl-icd}/lib/libOpenCL.so"'
+    '';
+
+  cmakeFlags =
+    [
+      "-DWITH_ALEMBIC=ON"
+      "-DWITH_MOD_OCEANSIM=ON"
+      "-DWITH_CODEC_FFMPEG=ON"
+      "-DWITH_CODEC_SNDFILE=ON"
+      "-DWITH_INSTALL_PORTABLE=OFF"
+      "-DWITH_FFTW3=ON"
+      "-DWITH_SDL=OFF"
+      "-DWITH_OPENCOLORIO=ON"
+      "-DWITH_OPENSUBDIV=ON"
+      "-DPYTHON_LIBRARY=${python.libPrefix}"
+      "-DPYTHON_LIBPATH=${python}/lib"
+      "-DPYTHON_INCLUDE_DIR=${python}/include/${python.libPrefix}"
+      "-DPYTHON_VERSION=${python.pythonVersion}"
+      "-DWITH_PYTHON_INSTALL=OFF"
+      "-DWITH_PYTHON_INSTALL_NUMPY=OFF"
+      "-DPYTHON_NUMPY_PATH=${python3Packages.numpy}/${python.sitePackages}"
+      "-DWITH_OPENVDB=ON"
+      "-DWITH_TBB=ON"
+      "-DWITH_IMAGE_OPENJPEG=ON"
+      "-DWITH_OPENCOLLADA=${if colladaSupport then "ON" else "OFF"}"
+    ]
+    ++ optionals stdenv.isDarwin [
+      "-DWITH_CYCLES_OSL=OFF" # requires LLVM
+      "-DWITH_OPENVDB=OFF" # OpenVDB currently doesn't build on darwin
+
+      "-DLIBDIR=/does-not-exist"
+    ]
+    # Clang doesn't support "-export-dynamic"
+    ++ optional stdenv.cc.isClang "-DPYTHON_LINKFLAGS="
+    ++ optional jackaudioSupport "-DWITH_JACK=ON"
+    ++ optional cudaSupport "-DWITH_CYCLES_CUDA_BINARIES=ON";
+
+  NIX_CFLAGS_COMPILE = "-I${ilmbase.dev}/include/OpenEXR -I${python}/include/${python.libPrefix}";
+
+  # Since some dependencies are built with gcc 6, we need gcc 6's
+  # libstdc++ in our RPATH. Sigh.
+  NIX_LDFLAGS = optionalString cudaSupport "-rpath ${stdenv.cc.cc.lib}/lib";
+
+  enableParallelBuilding = true;
+
+  blenderExecutable =
+    placeholder "out" + (if stdenv.isDarwin then "/Blender.app/Contents/MacOS/Blender" else "/bin/blender");
+  # --python-expr is used to workaround https://developer.blender.org/T74304
+  postInstall = ''
+    wrapProgram $blenderExecutable \
+      --prefix PYTHONPATH : ${python3Packages.numpy}/${python.sitePackages} \
+      --add-flags '--python-use-system-env'
+  '';
+
+  # Set RUNPATH so that libcuda and libnvrtc in /run/opengl-driver(-32)/lib can be
+  # found. See the explanation in libglvnd.
+  postFixup = optionalString cudaSupport ''
+    for program in $out/bin/blender $out/bin/.blender-wrapped; do
+      isELF "$program" || continue
+      addOpenGLRunpath "$program"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "3D Creation/Animation/Publishing System";
+    homepage = "https://www.blender.org";
+    # They comment two licenses: GPLv2 and Blender License, but they
+    # say: "We've decided to cancel the BL offering for an indefinite period."
+    license = licenses.gpl2Plus;
+    platforms = [ "x86_64-linux" "x86_64-darwin" ];
+    maintainers = with maintainers; [ goibhniu veprbl ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/blender/fix-include.patch b/nixpkgs/pkgs/applications/misc/blender/fix-include.patch
new file mode 100644
index 000000000000..44e2147d073c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/blender/fix-include.patch
@@ -0,0 +1,12 @@
+diff --git a/intern/smoke/intern/WAVELET_NOISE.h b/intern/smoke/intern/WAVELET_NOISE.h
+index fce901b..1f73c5e 100644
+--- a/intern/smoke/intern/WAVELET_NOISE.h
++++ b/intern/smoke/intern/WAVELET_NOISE.h
+@@ -43,6 +43,7 @@
+ #ifndef WAVELET_NOISE_H
+ #define WAVELET_NOISE_H
+ 
++#include <string.h>
+ #include <MERSENNETWISTER.h>
+ 
+ #ifdef WIN32
diff --git a/nixpkgs/pkgs/applications/misc/blugon/default.nix b/nixpkgs/pkgs/applications/misc/blugon/default.nix
new file mode 100644
index 000000000000..896daa27f7cb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/blugon/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, python3, libX11, libXrandr }:
+
+stdenv.mkDerivation rec {
+  pname = "blugon";
+  version = "1.12.1";
+
+  src = fetchFromGitHub {
+    owner = "jumper149";
+    repo = pname;
+    rev = version;
+    sha256 = "1i67v8jxvavgax3dwvns200iwwdcvgki04liq0x64q52lg0vrh7m";
+  };
+
+  buildInputs = [ python3 libX11 libXrandr ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    description = "Simple and configurable Blue Light Filter for X";
+    longDescription = ''
+      blugon is a simple and fast Blue Light Filter, that is highly configurable and provides a command line interface.
+      The program can be run just once or as a daemon (manually or via systemd).
+      There are several different backends available.
+      blugon calculates the screen color from your local time and configuration.
+    '';
+    license = licenses.asl20;
+    homepage = "https://github.com/jumper149/blugon";
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ jumper149 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/brewtarget/default.nix b/nixpkgs/pkgs/applications/misc/brewtarget/default.nix
new file mode 100644
index 000000000000..118245034500
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/brewtarget/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, bash
+, cmake
+, qtbase
+, qttools
+, qtmultimedia
+, qtwebkit
+, qtsvg
+}:
+
+mkDerivation rec {
+  pname = "brewtarget";
+  version = "2.3.1";
+
+  src = fetchFromGitHub {
+    owner = "Brewtarget";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "14xmm6f8xmvypagx4qdw8q9llzmyi9zzfhnzh4kbbflhjbcr7isz";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ qtbase qttools qtmultimedia qtwebkit qtsvg ];
+
+  preConfigure = ''
+    chmod +x configure
+    substituteInPlace configure --replace /bin/bash "${bash}/bin/bash"
+  '';
+
+  meta = with lib; {
+    description = "Open source beer recipe creation tool";
+    homepage = "http://www.brewtarget.org/";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.mmahut ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/buku/default.nix b/nixpkgs/pkgs/applications/misc/buku/default.nix
new file mode 100644
index 000000000000..f4018cff5f43
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/buku/default.nix
@@ -0,0 +1,80 @@
+{ stdenv, python3, fetchFromGitHub }:
+
+with python3.pkgs; buildPythonApplication rec {
+  version = "4.3";
+  pname = "buku";
+
+  src = fetchFromGitHub {
+    owner = "jarun";
+    repo = "buku";
+    rev = "v${version}";
+    sha256 = "1cq508ymak3g5fhi1n4bdiiqkc86s2l3k4dvzw842vv2x0441cac";
+  };
+
+  checkInputs = [
+    pytestcov
+    hypothesis
+    pytest
+    pylint
+    flake8
+    pyyaml
+    mypy-extensions
+  ];
+
+  propagatedBuildInputs = [
+    cryptography
+    beautifulsoup4
+    requests
+    urllib3
+    flask
+    flask-admin
+    flask-api
+    flask-bootstrap
+    flask-paginate
+    flask-reverse-proxy-fix
+    flask_wtf
+    arrow
+    werkzeug
+    click
+    html5lib
+    vcrpy
+  ];
+
+  postPatch = ''
+    # Jailbreak problematic dependencies
+    sed -i \
+      -e "s,'PyYAML.*','PyYAML',g" \
+      setup.py
+  '';
+
+  preCheck = ''
+    # Fixes two tests for wrong encoding
+    export PYTHONIOENCODING=utf-8
+
+    # Disables a test which requires internet
+    substituteInPlace tests/test_bukuDb.py \
+      --replace "@pytest.mark.slowtest" "@unittest.skip('skipping')" \
+      --replace "self.assertEqual(shorturl, 'http://tny.im/yt')" "" \
+      --replace "self.assertEqual(url, 'https://www.google.com')" ""
+    substituteInPlace setup.py \
+      --replace mypy-extensions==0.4.1 mypy-extensions>=0.4.1
+  '';
+
+  postInstall = ''
+    make install PREFIX=$out
+
+    mkdir -p $out/share/zsh/site-functions $out/share/bash-completion/completions $out/share/fish/vendor_completions.d
+    cp auto-completion/zsh/* $out/share/zsh/site-functions
+    cp auto-completion/bash/* $out/share/bash-completion/completions
+    cp auto-completion/fish/* $out/share/fish/vendor_completions.d
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Private cmdline bookmark manager";
+    homepage = "https://github.com/jarun/Buku";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ matthiasbeyer infinisil ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/calcurse/default.nix b/nixpkgs/pkgs/applications/misc/calcurse/default.nix
new file mode 100644
index 000000000000..ce3a2c0a271f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/calcurse/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, ncurses, gettext, python3, python3Packages, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "calcurse";
+  version = "4.6.0";
+
+  src = fetchurl {
+    url = "https://calcurse.org/files/${pname}-${version}.tar.gz";
+    sha256 = "0hzhdpkkn75jlymanwzl69hrrf1pw29hrchr11wlxqjpl43h62gs";
+  };
+
+  buildInputs = [ ncurses gettext python3 python3Packages.wrapPython ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  postInstall = ''
+    patchShebangs .
+    buildPythonPath ${python3Packages.httplib2}
+    patchPythonScript $out/bin/calcurse-caldav
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A calendar and scheduling application for the command line";
+    longDescription = ''
+      calcurse is a calendar and scheduling application for the command line. It helps
+      keep track of events, appointments and everyday tasks. A configurable notification
+      system reminds users of upcoming deadlines, the curses based interface can be
+      customized to suit user needs and a very powerful set of command line options can
+      be used to filter and format appointments, making it suitable for use in scripts.
+    '';
+    homepage = "http://calcurse.org/";
+    license = licenses.bsd2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/calibre/default.nix b/nixpkgs/pkgs/applications/misc/calibre/default.nix
new file mode 100644
index 000000000000..ff39eccf4f84
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/calibre/default.nix
@@ -0,0 +1,178 @@
+{ lib
+, mkDerivation
+, fetchurl
+, poppler_utils
+, pkgconfig
+, libpng
+, imagemagick
+, libjpeg
+, fontconfig
+, podofo
+, qtbase
+, qmake
+, icu
+, sqlite
+, hunspell
+, hyphen
+, unrarSupport ? false
+, chmlib
+, python2Packages
+, libusb1
+, libmtp
+, xdg_utils
+, makeDesktopItem
+, removeReferencesTo
+}:
+
+let
+  pypkgs = python2Packages;
+
+in
+mkDerivation rec {
+  pname = "calibre";
+  version = "4.17.0";
+
+  src = fetchurl {
+    url = "https://download.calibre-ebook.com/${version}/${pname}-${version}.tar.xz";
+    sha256 = "1qgzx2q8a5g102z311ibz4aw1ipn2j1lbndgadig7xvy6zdhknma";
+  };
+
+  patches = [
+    # Patches from Debian that:
+    # - disable plugin installation (very insecure)
+    ./disable_plugins.patch
+    # - switches the version update from enabled to disabled by default
+    ./no_updates_dialog.patch
+    # the unrar patch is not from debian
+  ] ++ lib.optional (!unrarSupport) ./dont_build_unrar_plugin.patch;
+
+  prePatch = ''
+    sed -i "/pyqt_sip_dir/ s:=.*:= '${pypkgs.pyqt5_with_qtwebkit}/share/sip/PyQt5':"  \
+      setup/build_environment.py
+
+    # Remove unneeded files and libs
+    rm -rf resources/calibre-portable.* \
+           src/odf
+  '';
+
+  dontUseQmakeConfigure = true;
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ pkgconfig qmake removeReferencesTo ];
+
+  CALIBRE_PY3_PORT = builtins.toString pypkgs.isPy3k;
+
+  buildInputs = [
+    poppler_utils
+    libpng
+    imagemagick
+    libjpeg
+    fontconfig
+    podofo
+    qtbase
+    chmlib
+    icu
+    hunspell
+    hyphen
+    sqlite
+    libusb1
+    libmtp
+    xdg_utils
+  ] ++ (
+    with pypkgs; [
+      apsw
+      cssselect
+      css-parser
+      dateutil
+      dnspython
+      feedparser
+      html5-parser
+      lxml
+      markdown
+      netifaces
+      pillow
+      python
+      pyqt5
+      sip
+      regex
+      msgpack
+      beautifulsoup4
+      html2text
+      pyqtwebengine
+      # the following are distributed with calibre, but we use upstream instead
+      odfpy
+    ]
+  ) ++ lib.optionals (!pypkgs.isPy3k) (
+    with pypkgs; [
+      mechanize
+    ]
+  );
+
+  installPhase = ''
+    runHook preInstall
+
+    export HOME=$TMPDIR/fakehome
+    export POPPLER_INC_DIR=${poppler_utils.dev}/include/poppler
+    export POPPLER_LIB_DIR=${poppler_utils.out}/lib
+    export MAGICK_INC=${imagemagick.dev}/include/ImageMagick
+    export MAGICK_LIB=${imagemagick.out}/lib
+    export FC_INC_DIR=${fontconfig.dev}/include/fontconfig
+    export FC_LIB_DIR=${fontconfig.lib}/lib
+    export PODOFO_INC_DIR=${podofo.dev}/include/podofo
+    export PODOFO_LIB_DIR=${podofo.lib}/lib
+    export SIP_BIN=${pypkgs.sip}/bin/sip
+    export XDG_DATA_HOME=$out/share
+    export XDG_UTILS_INSTALL_MODE="user"
+
+    ${pypkgs.python.interpreter} setup.py install --root=$out \
+      --prefix=$out \
+      --libdir=$out/lib \
+      --staging-root=$out \
+      --staging-libdir=$out/lib \
+      --staging-sharedir=$out/share
+
+
+    PYFILES="$out/bin/* $out/lib/calibre/calibre/web/feeds/*.py
+      $out/lib/calibre/calibre/ebooks/metadata/*.py
+      $out/lib/calibre/calibre/ebooks/rtf2xml/*.py"
+
+    sed -i "s/env python[0-9.]*/python/" $PYFILES
+    sed -i "2i import sys; sys.argv[0] = 'calibre'" $out/bin/calibre
+
+    mkdir -p $out/share
+    cp -a man-pages $out/share/man
+
+    runHook postInstall
+  '';
+
+  # Wrap manually
+  dontWrapQtApps = true;
+  dontWrapGApps = true;
+
+  # Remove some references to shrink the closure size. This reference (as of
+  # 2018-11-06) was a single string like the following:
+  #   /nix/store/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-podofo-0.9.6-dev/include/podofo/base/PdfVariant.h
+  preFixup = ''
+    remove-references-to -t ${podofo.dev} $out/lib/calibre/calibre/plugins/podofo.so
+
+    for program in $out/bin/*; do
+      wrapProgram $program \
+        ''${qtWrapperArgs[@]} \
+        ''${gappsWrapperArgs[@]} \
+        --prefix PYTHONPATH : $PYTHONPATH \
+        --prefix PATH : ${poppler_utils.out}/bin
+    done
+  '';
+
+  disallowedReferences = [ podofo.dev ];
+
+  meta = with lib; {
+    description = "Comprehensive e-book software";
+    homepage = "https://calibre-ebook.com";
+    license = with licenses; if unrarSupport then unfreeRedistributable else gpl3;
+    maintainers = with maintainers; [ domenkozar pSub AndersonTorres ];
+    platforms = platforms.linux;
+    inherit version;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/calibre/disable_plugins.patch b/nixpkgs/pkgs/applications/misc/calibre/disable_plugins.patch
new file mode 100644
index 000000000000..9ef1dd04251d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/calibre/disable_plugins.patch
@@ -0,0 +1,17 @@
+Description: Disable plugin dialog. It uses a totally non-authenticated and non-trusted way of installing arbitrary code.
+Author: Martin Pitt <mpitt@debian.org>
+Bug-Debian: http://bugs.debian.org/640026
+
+Index: calibre-0.8.29+dfsg/src/calibre/gui2/actions/preferences.py
+===================================================================
+--- calibre-0.8.29+dfsg.orig/src/calibre/gui2/actions/preferences.py	2011-12-16 05:49:14.000000000 +0100
++++ calibre-0.8.29+dfsg/src/calibre/gui2/actions/preferences.py	2011-12-20 19:29:04.798468930 +0100
+@@ -28,8 +28,6 @@
+             pm.addAction(QIcon(I('config.png')), _('Preferences'), self.do_config)
+         cm('welcome wizard', _('Run welcome wizard'),
+                 icon='wizard.png', triggered=self.gui.run_wizard)
+-        cm('plugin updater', _('Get plugins to enhance calibre'),
+-                icon='plugins/plugin_updater.png', triggered=self.get_plugins)
+         if not DEBUG:
+             pm.addSeparator()
+             cm('restart', _('Restart in debug mode'), icon='debug.png',
diff --git a/nixpkgs/pkgs/applications/misc/calibre/dont_build_unrar_plugin.patch b/nixpkgs/pkgs/applications/misc/calibre/dont_build_unrar_plugin.patch
new file mode 100644
index 000000000000..5164b80a0bee
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/calibre/dont_build_unrar_plugin.patch
@@ -0,0 +1,12 @@
+diff --git a/src/calibre/ebooks/metadata/archive.py b/src/calibre/ebooks/metadata/archive.py
+index 938ab24..1e095f8 100644
+--- a/src/calibre/ebooks/metadata/archive.py
++++ b/src/calibre/ebooks/metadata/archive.py
+@@ -44,7 +44,7 @@
+     description = _('Extract common e-book formats from archive files '
+         '(ZIP/RAR). Also try to autodetect if they are actually '
+         'CBZ/CBR files.')
+-    file_types = {'zip', 'rar'}
++    file_types = {'zip'}
+     supported_platforms = ['windows', 'osx', 'linux']
+     on_import = True
diff --git a/nixpkgs/pkgs/applications/misc/calibre/no_updates_dialog.patch b/nixpkgs/pkgs/applications/misc/calibre/no_updates_dialog.patch
new file mode 100644
index 000000000000..faaaf2c19949
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/calibre/no_updates_dialog.patch
@@ -0,0 +1,15 @@
+diff -burN calibre-2.9.0.orig/src/calibre/gui2/main.py calibre-2.9.0/src/calibre/gui2/main.py
+--- calibre-2.9.0.orig/src/calibre/gui2/main.py	2014-11-09 20:09:54.081231882 +0800
++++ calibre-2.9.0/src/calibre/gui2/main.py	2014-11-09 20:15:48.193033844 +0800
+@@ -37,8 +37,9 @@
+                       help=_('Start minimized to system tray.'))
+     parser.add_option('-v', '--verbose', default=0, action='count',
+                       help=_('Ignored, do not use. Present only for legacy reasons'))
+-    parser.add_option('--no-update-check', default=False, action='store_true',
+-            help=_('Do not check for updates'))
++    parser.add_option('--update-check', dest='no_update_check', default=True,
++            action='store_false',
++            help=_('Check for updates'))
+     parser.add_option('--ignore-plugins', default=False, action='store_true',
+             help=_('Ignore custom plugins, useful if you installed a plugin'
+                 ' that is preventing calibre from starting'))
diff --git a/nixpkgs/pkgs/applications/misc/candle/default.nix b/nixpkgs/pkgs/applications/misc/candle/default.nix
new file mode 100644
index 000000000000..842ef2262d9f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/candle/default.nix
@@ -0,0 +1,32 @@
+{ mkDerivation, stdenv, fetchFromGitHub, qtbase, qtserialport, qmake }:
+
+mkDerivation rec {
+  pname = "candle";
+  version = "1.1";
+
+  src = fetchFromGitHub {
+    owner  = "Denvi";
+    repo   = "Candle";
+    rev    = "v${version}";
+    sha256 = "1gpx08gdz8awbsj6lsczwgffp19z3q0r2fvm72a73qd9az29pmm0";
+  };
+
+  nativeBuildInputs = [ qmake ];
+  
+  sourceRoot = "source/src";
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm755 Candle $out/bin/candle
+    runHook postInstall
+  '';
+
+  buildInputs = [ qtbase qtserialport ];
+
+  meta = with stdenv.lib; {
+    description = "GRBL controller application with G-Code visualizer written in Qt";
+    homepage = "https://github.com/Denvi/Candle";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ matti-kariluoma ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cardpeek/default.nix b/nixpkgs/pkgs/applications/misc/cardpeek/default.nix
new file mode 100644
index 000000000000..83340f78dd48
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cardpeek/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, pkgconfig, autoreconfHook,
+  glib, gtk3, pcsclite, lua5_2, curl, readline }:
+let
+  version = "0.8.4";
+in
+  stdenv.mkDerivation {
+    pname = "cardpeek";
+    inherit version;
+
+    src = fetchFromGitHub {
+      owner = "L1L1";
+      repo = "cardpeek";
+      rev = "cardpeek-${version}";
+      sha256 = "1ighpl7nvcvwnsd6r5h5n9p95kclwrq99hq7bry7s53yr57l6588";
+    };
+
+    nativeBuildInputs = [ pkgconfig autoreconfHook ];
+    buildInputs = [ glib gtk3 pcsclite lua5_2 curl readline ];
+
+    enableParallelBuilding = true;
+
+    meta = with stdenv.lib; {
+      homepage = "https://github.com/L1L1/cardpeek";
+      description = "A tool to read the contents of ISO7816 smart cards";
+      license = licenses.gpl3Plus;
+      platforms = with platforms; linux ++ darwin;
+      maintainers = with maintainers; [ embr ];
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/misc/cataract/build.nix b/nixpkgs/pkgs/applications/misc/cataract/build.nix
new file mode 100644
index 000000000000..1c33a92987c1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cataract/build.nix
@@ -0,0 +1,43 @@
+{ stdenv
+, fetchgit
+, autoreconfHook
+, glib
+, pkgconfig
+, libxml2
+, exiv2
+, imagemagick
+, version
+, sha256
+, rev }:
+
+stdenv.mkDerivation {
+  inherit version;
+  pname = "cataract";
+
+  src = fetchgit {
+    url = "git://git.bzatek.net/cataract";
+    inherit sha256 rev;
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ glib libxml2 exiv2 imagemagick ];
+
+  prePatch = ''
+    sed -i 's|#include <exiv2/exif.hpp>|#include <exiv2/exiv2.hpp>|' src/jpeg-utils.cpp
+  '';
+
+  installPhase = ''
+    mkdir $out/{bin,share} -p
+    cp src/cgg{,-dirgen} $out/bin/
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://cgg.bzatek.net/";
+    description = "A simple static web photo gallery, designed to be clean and easily usable";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.matthiasbeyer ];
+    platforms = with platforms; linux ++ darwin;
+  };
+}
+
+
diff --git a/nixpkgs/pkgs/applications/misc/cataract/default.nix b/nixpkgs/pkgs/applications/misc/cataract/default.nix
new file mode 100644
index 000000000000..3a9f20289227
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cataract/default.nix
@@ -0,0 +1,8 @@
+{ callPackage }:
+
+callPackage ./build.nix {
+  version = "1.1.0";
+  rev = "675e647dc8ae918d29f520a29be9201ae85a94dd";
+  sha256 = "13b9rvcy9k2ay8w36j28kc7f4lnxp4jc0494ck3xsmwgqsawmzdj";
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/cataract/unstable.nix b/nixpkgs/pkgs/applications/misc/cataract/unstable.nix
new file mode 100644
index 000000000000..397aed355a95
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cataract/unstable.nix
@@ -0,0 +1,8 @@
+{ callPackage }:
+
+callPackage ./build.nix {
+  version = "unstable-2016-10-18";
+  rev = "db3d992febbe703931840e9bdad95c43081694a5";
+  sha256 = "04f85piy675lq36w1mw6mw66n8911mmn4ifj8h9x47z8z806h3rf";
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/catclock/default.nix b/nixpkgs/pkgs/applications/misc/catclock/default.nix
new file mode 100644
index 000000000000..6b4ab1f3a8bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/catclock/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, xlibsWrapper, motif }:
+
+stdenv.mkDerivation {
+  name = "catclock-2015-10-04";
+
+  src = fetchFromGitHub {
+    owner = "BarkyTheDog";
+    repo = "catclock";
+    rev = "d20b8825b38477a144e8a2a4bbd4779adb3620ac";
+    sha256 = "0fiv9rj8p8mifv24cxljdrrmh357q70zmzdci9bpbxnhs1gdpr63";
+  };
+
+  preInstall = ''
+    mkdir -p $out/bin
+    mkdir -p $out/share/man/man1
+    cp xclock.man $out/share/man/man1/xclock.1
+  '';
+
+  makeFlags = [
+    "DESTINATION=$(out)/bin/"
+  ];
+
+  buildInputs = [ xlibsWrapper motif ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://codefromabove.com/2014/05/catclock/";
+    license = with licenses; mit;
+    maintainers = with maintainers; [ ramkromberg ];
+    platforms = with platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cbatticon/default.nix b/nixpkgs/pkgs/applications/misc/cbatticon/default.nix
new file mode 100644
index 000000000000..e7664244db7b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cbatticon/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, pkgconfig, gettext, glib, gtk3, libnotify, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "cbatticon";
+  version = "1.6.10";
+
+  src = fetchFromGitHub {
+    owner = "valr";
+    repo = pname;
+    rev = version;
+    sha256 = "0ivm2dzhsa9ir25ry418r2qg2llby9j7a6m3arbvq5c3kaj8m9jr";
+  };
+
+  nativeBuildInputs = [ pkgconfig gettext wrapGAppsHook ];
+
+  buildInputs =  [ glib gtk3 libnotify ];
+
+  patchPhase = ''
+    sed -i -e 's/ -Wno-format//g' Makefile
+  '';
+
+  makeFlags = [ "PREFIX=${placeholder "out"}" ];
+
+  meta = with stdenv.lib; {
+    description = "Lightweight and fast battery icon that sits in the system tray";
+    homepage = "https://github.com/valr/cbatticon";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.domenkozar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cgminer/default.nix b/nixpkgs/pkgs/applications/misc/cgminer/default.nix
new file mode 100644
index 000000000000..09236565d598
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cgminer/default.nix
@@ -0,0 +1,45 @@
+{ fetchgit, stdenv, pkgconfig, libtool, autoconf, automake
+, curl, ncurses, ocl-icd, opencl-headers, xorg, jansson }:
+
+stdenv.mkDerivation {
+  version = "3.7.2";
+  pname = "cgminer";
+
+  src = fetchgit {
+    url = "https://github.com/ckolivas/cgminer.git";
+    rev = "refs/tags/v3.7.2";
+    sha256  = "1xfzx91dpwjj1vmhas3v9ybs0p2i74lrhinijmpav15acfggm9fq";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    autoconf automake libtool curl ncurses ocl-icd opencl-headers
+    xorg.libX11 xorg.libXext xorg.libXinerama jansson
+  ];
+  configureScript = "./autogen.sh";
+  configureFlags = [ "--enable-scrypt" "--enable-opencl" ];
+  NIX_LDFLAGS = "-lgcc_s -lX11 -lXext -lXinerama";
+
+  postBuild = ''
+    gcc api-example.c -o cgminer-api
+  '';
+
+  postInstall = ''
+    cp cgminer-api $out/bin/
+    chmod 444 $out/bin/*.cl
+  '';
+
+  meta = with stdenv.lib; {
+    description = "CPU/GPU miner in c for bitcoin";
+    longDescription= ''
+      This is a multi-threaded multi-pool GPU, FPGA and ASIC miner with ATI GPU
+      monitoring, (over)clocking and fanspeed support for bitcoin and derivative
+      coins. Do not use on multiple block chains at the same time!
+    '';
+    homepage = "https://github.com/ckolivas/cgminer";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.offline ];
+    platforms = stdenv.lib.platforms.linux;
+    hydraPlatforms = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cheat/default.nix b/nixpkgs/pkgs/applications/misc/cheat/default.nix
new file mode 100644
index 000000000000..ec4d71a0dce8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cheat/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub
+, buildGoModule, installShellFiles }:
+
+buildGoModule rec {
+  pname = "cheat";
+  version = "3.10.1";
+
+  src = fetchFromGitHub {
+    owner = "cheat";
+    repo = "cheat";
+    rev = version;
+    sha256 = "0indvycj972wng979mvia8mrb7bwdfay7wxq3lnj05qyxqafj5h2";
+  };
+
+  subPackages = [ "cmd/cheat" ];
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  postInstall = ''
+    installManPage doc/cheat.1
+    installShellCompletion scripts/cheat.{bash,fish,zsh}
+  '';
+
+  vendorSha256 = null;
+
+  meta = with stdenv.lib; {
+    description = "Create and view interactive cheatsheets on the command-line";
+    maintainers = with maintainers; [ mic92 ];
+    license = with licenses; [ gpl3 mit ];
+    inherit (src.meta) homepage;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cherrytree/default.nix b/nixpkgs/pkgs/applications/misc/cherrytree/default.nix
new file mode 100644
index 000000000000..d2ade055d6fd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cherrytree/default.nix
@@ -0,0 +1,38 @@
+{ lib, fetchFromGitHub, pythonPackages, gettext }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "cherrytree";
+  version = "0.39.3";
+
+  src = fetchFromGitHub {
+    owner = "giuspen";
+    repo = "cherrytree";
+    rev = version;
+    sha256 = "1k9i7acpphx0if6ij2p9fkmj638ry6hcyr1rdr039a8zi8hq98gz";
+
+  };
+
+  nativeBuildInputs = [ gettext ];
+
+  propagatedBuildInputs = with pythonPackages; [ pygtk dbus-python pygtksourceview ];
+
+  patches = [ ./subprocess.patch ];
+
+  doCheck = false;
+
+  meta = with lib; {
+    description = "An hierarchical note taking application";
+    longDescription = ''
+      Cherrytree is an hierarchical note taking application, featuring rich
+      text, syntax highlighting and powerful search capabilities. It organizes
+      all information in units called "nodes", as in a tree, and can be very
+      useful to store any piece of information, from tables and links to
+      pictures and even entire documents. All those little bits of information
+      you have scattered around your hard drive can be conveniently placed into
+      a Cherrytree document where you can easily find it.
+    '';
+    homepage = "http://www.giuspen.com/cherrytree";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cherrytree/subprocess.patch b/nixpkgs/pkgs/applications/misc/cherrytree/subprocess.patch
new file mode 100644
index 000000000000..1f80cde03b75
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cherrytree/subprocess.patch
@@ -0,0 +1,14 @@
+diff -Naur cherrytree-0.37.1-orig/setup.py cherrytree-0.37.1/setup.py
+--- cherrytree-0.37.1-orig/setup.py	2016-01-08 20:50:50.000000000 +0100
++++ cherrytree-0.37.1/setup.py	2016-07-05 20:30:27.768178682 +0200
+@@ -205,4 +205,9 @@
+           },
+        distclass=CherryTreeDist
+     )
+-    subprocess.call("update-desktop-database")
++    try:
++        subprocess.check_call(['update-desktop-database'])
++    except subprocess.CalledProcessError:
++        pass # handle errors in the called executable
++    except OSError:
++        pass # executable not found
diff --git a/nixpkgs/pkgs/applications/misc/cipher/default.nix b/nixpkgs/pkgs/applications/misc/cipher/default.nix
new file mode 100644
index 000000000000..eef05fe91d20
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cipher/default.nix
@@ -0,0 +1,63 @@
+{ stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, vala
+, pkgconfig
+, pantheon
+, python3
+, gettext
+, glib
+, gtk3
+, libgee
+, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "cipher";
+  version = "2.5.0";
+
+  src = fetchFromGitHub {
+    owner = "arshubham";
+    repo = "cipher";
+    rev = version;
+    sha256 = "00azc5ck17zkdypfza6x1viknwhimd9fqgk2ybff3mx6aphmla7a";
+  };
+
+  nativeBuildInputs = [
+    gettext
+    meson
+    ninja
+    vala
+    pkgconfig
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    pantheon.granite
+    libgee
+  ];
+
+  postPatch = ''
+    substituteInPlace data/com.github.arshubham.cipher.desktop.in \
+      --replace "gio" "${glib.bin}/bin/gio"
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "A simple application for encoding and decoding text, designed for elementary OS";
+    homepage = "https://github.com/arshubham/cipher";
+    maintainers = with maintainers; [ xiorcale ] ++ pantheon.maintainers;
+    platforms = platforms.linux;
+    license = licenses.gpl3Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cli-visualizer/default.nix b/nixpkgs/pkgs/applications/misc/cli-visualizer/default.nix
new file mode 100644
index 000000000000..112341dcd4f0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cli-visualizer/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, fftw, ncurses5, libpulseaudio, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  version = "1.8";
+  pname = "cli-visualizer";
+
+  src = fetchFromGitHub {
+    owner = "dpayne";
+    repo = "cli-visualizer";
+    rev = "v${version}";
+    sha256 = "003mbbwsz43mg3d7llphpypqa9g7rs1p1cdbqi1mbc2bfrc1gcq2";
+  };
+
+  postPatch = ''
+    sed '1i#include <cmath>' -i src/Transformer/SpectrumCircleTransformer.cpp
+  '';
+
+  buildInputs = [ fftw ncurses5 libpulseaudio makeWrapper ];
+
+  buildFlags = [ "ENABLE_PULSE=1" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp build/vis $out/bin/vis
+    # See https://github.com/dpayne/cli-visualizer/issues/62#issuecomment-330738075
+    wrapProgram $out/bin/vis --set TERM rxvt-256color
+  '';
+
+  meta = {
+    homepage = "https://github.com/dpayne/cli-visualizer";
+    description = "CLI based audio visualizer";
+    license = stdenv.lib.licenses.mit;
+    maintainers = [ stdenv.lib.maintainers.matthiasbeyer ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/clight/clightd.nix b/nixpkgs/pkgs/applications/misc/clight/clightd.nix
new file mode 100644
index 000000000000..c5083f2379c6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/clight/clightd.nix
@@ -0,0 +1,75 @@
+{ lib, stdenv, fetchFromGitHub
+, dbus, cmake, pkgconfig
+, glib, udev, polkit, libmodule
+, pcre, libXdmcp, utillinux, libpthreadstubs
+, enableDdc ? true, ddcutil
+, enableDpms ? true, libXext
+, enableGamma ? true, libXrandr
+, enableScreen ? true }:
+
+stdenv.mkDerivation rec {
+  pname = "clightd";
+  version = "4.1";
+
+  src = fetchFromGitHub {
+    owner = "FedeDP";
+    repo = "Clightd";
+    rev = version;
+    sha256 = "0pqnn52nn22k49f5cw4jcr8vcbff28n56i8fizg1mmfshy8pn891";
+  };
+
+  # dbus-1.pc has datadir=/etc
+  SYSTEM_BUS_DIR = "${placeholder "out"}/share/dbus-1/system-services";
+  # systemd.pc has prefix=${systemd.out}
+  MODULE_LOAD_DIR = "${placeholder "out"}/lib/modules-load.d";
+  # polkit-gobject-1.pc has prefix=${polkit.out}
+  POLKIT_ACTION_DIR = "${placeholder "out"}/share/polkit-1/actions";
+
+  postPatch = ''
+    sed -i "s@/etc@$out\0@" CMakeLists.txt
+    sed -i "s@pkg_get_variable(SYSTEM_BUS_DIR.*@set(SYSTEM_BUS_DIR $SYSTEM_BUS_DIR)@" CMakeLists.txt
+    sed -i "s@pkg_get_variable(MODULE_LOAD_DIR.*@set(MODULE_LOAD_DIR $MODULE_LOAD_DIR)@" CMakeLists.txt
+    sed -i "s@pkg_get_variable(POLKIT_ACTION_DIR.*@set(POLKIT_ACTION_DIR $POLKIT_ACTION_DIR)@" CMakeLists.txt
+  '';
+
+  cmakeFlags = with lib;
+     optional enableDdc "-DENABLE_DDC=1"
+  ++ optional enableDpms "-DENABLE_DPMS=1"
+  ++ optional enableGamma "-DENABLE_GAMMA=1"
+  ++ optional enableScreen "-DENABLE_SCREEN=1";
+
+  nativeBuildInputs = [
+    dbus
+    cmake
+    pkgconfig
+  ];
+
+  buildInputs = with lib; [
+    glib
+    udev
+    polkit
+    libmodule
+
+    pcre
+    libXdmcp
+    utillinux
+    libpthreadstubs
+  ] ++ optional enableDdc ddcutil
+    ++ optional enableDpms libXext
+    ++ optional enableGamma libXrandr;
+
+  postInstall = ''
+    mkdir -p $out/bin
+    ln -svT $out/lib/clightd/clightd $out/bin/clightd
+  '';
+
+  meta = with lib; {
+    description = "Linux bus interface that changes screen brightness/temperature";
+    homepage = "https://github.com/FedeDP/Clightd";
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [
+      eadwu
+    ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/clight/default.nix b/nixpkgs/pkgs/applications/misc/clight/default.nix
new file mode 100644
index 000000000000..ed8767419d4d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/clight/default.nix
@@ -0,0 +1,58 @@
+{ lib, stdenv, fetchFromGitHub
+, dbus, cmake, pkgconfig, bash-completion
+, gsl, popt, clightd, systemd, libconfig, libmodule
+, withGeoclue ? true, geoclue2
+, withUpower ? true, upower }:
+
+stdenv.mkDerivation rec {
+  pname = "clight";
+  version = "4.0";
+
+  src = fetchFromGitHub {
+    owner = "FedeDP";
+    repo = "Clight";
+    rev = version;
+    sha256 = "101fp9kwmfmfffpdvv41wf96kdjw0b16xk49g43w32a5wlr74zrq";
+  };
+
+  # bash-completion.pc completionsdir=${bash-completion.out}
+  COMPLETIONS_DIR = "${placeholder "out"}/share/bash-completions/completions";
+  # dbus-1.pc has datadir=/etc
+  SESSION_BUS_DIR = "${placeholder "out"}/share/dbus-1/services";
+
+  postPatch = ''
+    sed -i "s@/usr@$out@" CMakeLists.txt
+    sed -i "s@/etc@$out\0@" CMakeLists.txt
+    sed -i "s@pkg_get_variable(COMPLETIONS_DIR.*@set(COMPLETIONS_DIR $COMPLETIONS_DIR)@" CMakeLists.txt
+    sed -i "s@pkg_get_variable(SESSION_BUS_DIR.*@set(SESSION_BUS_DIR $SESSION_BUS_DIR)@" CMakeLists.txt
+  '';
+
+  nativeBuildInputs = [
+    dbus
+    cmake
+    pkgconfig
+    bash-completion
+  ];
+
+  buildInputs = with lib; [
+    gsl
+    popt
+    upower
+    clightd
+    systemd
+    geoclue2
+    libconfig
+    libmodule
+  ] ++ optional withGeoclue geoclue2
+    ++ optional withUpower upower;
+
+  meta = with lib; {
+    description = "A C daemon that turns your webcam into a light sensor";
+    homepage = "https://github.com/FedeDP/Clight";
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [
+      eadwu
+    ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/clipit/default.nix b/nixpkgs/pkgs/applications/misc/clipit/default.nix
new file mode 100644
index 000000000000..02207fb95806
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/clipit/default.nix
@@ -0,0 +1,35 @@
+{ fetchFromGitHub, fetchpatch, stdenv
+, autoreconfHook, intltool, pkgconfig
+, gtk3, xdotool, which, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "clipit";
+  version = "1.4.5";
+
+  src = fetchFromGitHub {
+    owner = "CristianHenzel";
+    repo = "ClipIt";
+    rev = "45e2ea386d04dbfc411ea370299502450d589d0c";
+    sha256 = "0byqz9hanwmdc7i55xszdby2iqrk93lws7hmjda2kv17g34apwl7";
+  };
+
+  preConfigure = ''
+    intltoolize --copy --force --automake
+  '';
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook autoreconfHook intltool ];
+  configureFlags = [ "--with-gtk3" ];
+  buildInputs = [ gtk3 ];
+
+  gappsWrapperArgs = [
+    "--prefix" "PATH" ":" "${stdenv.lib.makeBinPath [ xdotool which ]}"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Lightweight GTK Clipboard Manager";
+    inherit (src.meta) homepage;
+    license     = licenses.gpl3;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ kamilchm ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/clipmenu/default.nix b/nixpkgs/pkgs/applications/misc/clipmenu/default.nix
new file mode 100644
index 000000000000..4bc56f0c4526
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/clipmenu/default.nix
@@ -0,0 +1,33 @@
+{ clipnotify, makeWrapper, xsel, dmenu, utillinux, gawk, stdenv, fetchFromGitHub, lib }:
+let
+  runtimePath = lib.makeBinPath [ clipnotify xsel dmenu utillinux gawk ];
+in
+stdenv.mkDerivation rec {
+  pname = "clipmenu";
+  version = "6.0.1";
+
+  src = fetchFromGitHub {
+    owner  = "cdown";
+    repo   = "clipmenu";
+    rev    = version;
+    sha256 = "0053j4i14lz5m2bzc5sch5id5ilr1bl196mp8fp0q8x74w3vavs9";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp clipdel clipmenu clipmenud $out/bin
+
+    for bin in $out/bin/*; do
+      wrapProgram "$bin" --prefix PATH : "${runtimePath}"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Clipboard management using dmenu";
+    inherit (src.meta) homepage;
+    maintainers = with maintainers; [ jb55 ];
+    license = licenses.publicDomain;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cmatrix/default.nix b/nixpkgs/pkgs/applications/misc/cmatrix/default.nix
new file mode 100644
index 000000000000..fa0e10f9eef8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cmatrix/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "cmatrix";
+  version = "2.0";
+
+  src = fetchFromGitHub {
+    owner = "abishekvashok";
+    repo = "cmatrix";
+    rev = "v${version}";
+    sha256 = "1h9jz4m4s5l8c3figaq46ja0km1gimrkfxm4dg7mf4s84icmasbm";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ ncurses ];
+
+  meta = with stdenv.lib; {
+    description = "Simulates the falling characters theme from The Matrix movie";
+    license = licenses.gpl3;
+    longDescription = ''
+      CMatrix simulates the display from "The Matrix" and is based
+      on the screensaver from the movie's website.
+    '';
+    homepage = "https://github.com/abishekvashok/cmatrix";
+    platforms = ncurses.meta.platforms;
+    maintainers = [ maintainers.AndersonTorres ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cointop/default.nix b/nixpkgs/pkgs/applications/misc/cointop/default.nix
new file mode 100644
index 000000000000..8d91531dd1f8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cointop/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "cointop";
+  version = "1.4.6";
+
+  src = fetchFromGitHub {
+    owner = "miguelmota";
+    repo = pname;
+    rev = version;
+    sha256 = "1mkb97x73vzxnbvhnxx3msicr1z0b3sjmydx257ax3nscrmf1l5z";
+  };
+
+  goPackagePath = "github.com/miguelmota/cointop";
+
+  meta = with lib; {
+    description = "The fastest and most interactive terminal based UI application for tracking cryptocurrencies";
+    longDescription = ''
+      cointop is a fast and lightweight interactive terminal based UI
+      application for tracking and monitoring cryptocurrency coin stats in
+      real-time.
+
+      The interface is inspired by htop and shortcut keys are inspired by vim.
+    '';
+    homepage = "https://cointop.sh";
+    maintainers = [ maintainers.marsam ];
+    license = licenses.asl20;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/colort/default.nix b/nixpkgs/pkgs/applications/misc/colort/default.nix
new file mode 100644
index 000000000000..1eda11890e79
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/colort/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation {
+  name = "colort-unstable-2017-03-12";
+
+  src = fetchFromGitHub {
+    owner = "neeasade";
+    repo = "colort";
+    rev = "8470190706f358dc807b4c26ec3453db7f0306b6";
+    sha256 = "10n8rbr2h6hz86hcx73f86pjbbfiaw2rvxsk0yfajnma7bpxgdxw";
+  };
+
+  makeFlags = ["PREFIX=$(out)"];
+
+  meta = with stdenv.lib; {
+    description = "A program for 'tinting' color values";
+    homepage = "https://github.com/neeasade/colort";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = [ maintainers.neeasade ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/confclerk/default.nix b/nixpkgs/pkgs/applications/misc/confclerk/default.nix
new file mode 100644
index 000000000000..bb1aacc2069b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/confclerk/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, qt4, qmake4Hook }:
+
+let version = "0.6.4"; in
+stdenv.mkDerivation {
+  pname = "confclerk";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://www.toastfreeware.priv.at/tarballs/confclerk/confclerk-${version}.tar.gz";
+    sha256 = "10rhg44px4nvbkd3p341cmp2ds43jn8r4rvgladda9v8zmsgr2b3";
+  };
+
+  buildInputs = [ qt4 ];
+
+  nativeBuildInputs = [ qmake4Hook ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp src/bin/confclerk $out/bin
+  '';
+
+  meta = {
+    description = "Offline conference schedule viewer";
+    homepage = "http://www.toastfreeware.priv.at/confclerk";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [ ehmry ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cool-retro-term/default.nix b/nixpkgs/pkgs/applications/misc/cool-retro-term/default.nix
new file mode 100644
index 000000000000..739ad07adbf3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cool-retro-term/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchFromGitHub, mkDerivation, qtbase, qtquick1, qmltermwidget
+, qtquickcontrols, qtgraphicaleffects, qmake }:
+
+mkDerivation rec {
+  version = "1.1.1";
+  pname = "cool-retro-term";
+
+  src = fetchFromGitHub {
+    owner = "Swordfish90";
+    repo = "cool-retro-term";
+    rev = version;
+    sha256 = "0mird4k88ml6y61hky2jynrjmnxl849fvhsr5jfdlnv0i7r5vwi5";
+  };
+
+  patchPhase = ''
+    sed -i -e '/qmltermwidget/d' cool-retro-term.pro
+  '';
+
+  buildInputs = [ qtbase qtquick1 qmltermwidget qtquickcontrols qtgraphicaleffects ];
+  nativeBuildInputs = [ qmake ];
+
+  installFlags = [ "INSTALL_ROOT=$(out)" ];
+
+  preFixup = ''
+    mv $out/usr/share $out/share
+    mv $out/usr/bin $out/bin
+    rmdir $out/usr
+  '' + stdenv.lib.optionalString stdenv.isDarwin ''
+    ln -s $out/bin/cool-retro-term.app/Contents/MacOS/cool-retro-term $out/bin/cool-retro-term
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Terminal emulator which mimics the old cathode display";
+    longDescription = ''
+      cool-retro-term is a terminal emulator which tries to mimic the look and
+      feel of the old cathode tube screens. It has been designed to be
+      eye-candy, customizable, and reasonably lightweight.
+    '';
+    homepage = "https://github.com/Swordfish90/cool-retro-term";
+    license = stdenv.lib.licenses.gpl3Plus;
+    platforms = with stdenv.lib.platforms; linux ++ darwin;
+    maintainers = with stdenv.lib.maintainers; [ skeidel ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/copyq/default.nix b/nixpkgs/pkgs/applications/misc/copyq/default.nix
new file mode 100644
index 000000000000..fb177e8278f4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/copyq/default.nix
@@ -0,0 +1,32 @@
+{ lib, mkDerivation, fetchFromGitHub, cmake
+, qtbase, qtscript, qtwebkit, libXfixes, libXtst, qtx11extras, git
+, webkitSupport ? true
+}:
+
+mkDerivation rec {
+  pname = "CopyQ";
+  version = "3.11.1";
+
+  src  = fetchFromGitHub {
+    owner = "hluk";
+    repo = "CopyQ";
+    rev = "v${version}";
+    sha256 = "1xxf8d220pa77195d9f3l3scvvyqsh1pvlrbw4cq6ydj9qbp5kf0";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    git qtbase qtscript libXfixes libXtst qtx11extras
+  ] ++ lib.optional webkitSupport qtwebkit;
+
+  meta = with lib; {
+    homepage    = "https://hluk.github.io/CopyQ";
+    description = "Clipboard Manager with Advanced Features";
+    license     = licenses.gpl3;
+    maintainers = [ maintainers.willtim ];
+    # NOTE: CopyQ supports windows and osx, but I cannot test these.
+    # OSX build requires QT5.
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/coursera-dl/default.nix b/nixpkgs/pkgs/applications/misc/coursera-dl/default.nix
new file mode 100644
index 000000000000..bbb7c53b61f6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/coursera-dl/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchFromGitHub, glibcLocales, pandoc, python3 }:
+
+let
+  pythonPackages = python3.pkgs;
+
+in pythonPackages.buildPythonApplication rec {
+  pname = "coursera-dl";
+  version = "0.11.5";
+
+  src = fetchFromGitHub {
+    owner = "coursera-dl";
+    repo = "coursera-dl";
+    rev = version;
+    sha256 = "0akgwzrsx094jj30n4bd2ilwgva4qxx38v3bgm69iqfxi8c2bqbk";
+  };
+
+  nativeBuildInputs = with pythonPackages; [ pandoc ];
+
+  buildInputs = with pythonPackages; [ glibcLocales ];
+
+  propagatedBuildInputs = with pythonPackages; [ attrs beautifulsoup4 ConfigArgParse keyring pyasn1 requests six urllib3 ];
+
+  checkInputs = with pythonPackages; [ pytest mock ];
+
+  postPatch = ''
+    substituteInPlace requirements.txt \
+      --replace '==' '>='
+  '';
+
+  preConfigure = ''
+    export LC_ALL=en_US.utf-8
+  '';
+
+  checkPhase = ''
+    # requires dbus service
+    py.test -k 'not test_get_credentials_with_keyring' .
+  '';
+
+  meta = with stdenv.lib; {
+    description = "CLI for downloading Coursera.org videos and naming them";
+    homepage = "https://github.com/coursera-dl/coursera-dl";
+    license = licenses.lgpl3Plus;
+    maintainers = with maintainers; [ alexfmpe ];
+    platforms = platforms.darwin ++ platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cpp-ethereum/default.nix b/nixpkgs/pkgs/applications/misc/cpp-ethereum/default.nix
new file mode 100644
index 000000000000..aed44d1213ce
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cpp-ethereum/default.nix
@@ -0,0 +1,85 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, jsoncpp
+, libjson-rpc-cpp
+, curl
+, boost
+, leveldb
+, cryptopp
+, libcpuid
+, opencl-headers
+, ocl-icd
+, miniupnpc
+, libmicrohttpd
+, gmp
+, libGLU, libGL
+, extraCmakeFlags ? []
+}:
+stdenv.mkDerivation rec {
+  pname = "cpp-ethereum";
+  version = "1.3.0";
+
+  src = fetchFromGitHub {
+    owner = "ethereum";
+    repo = "cpp-ethereum";
+    rev = "62ab9522e58df9f28d2168ea27999a214b16ea96";
+    sha256 = "1fxgpqhmjhpv0zzs1m3yf9h8mh25dqpa7pmcfy7f9qiqpfdr4zq9";
+  };
+
+  cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" extraCmakeFlags ];
+
+  configurePhase = ''
+    export BOOST_INCLUDEDIR=${boost.dev}/include
+    export BOOST_LIBRARYDIR=${boost.out}/lib
+
+    mkdir -p Build/Install
+    pushd Build
+
+    cmake .. -DCMAKE_INSTALL_PREFIX=$(pwd)/Install $cmakeFlags
+  '';
+
+  enableParallelBuilding = true;
+
+  runPath = with stdenv.lib; makeLibraryPath ([ stdenv.cc.cc ] ++ buildInputs);
+
+  installPhase = ''
+    make install
+
+    mkdir -p $out
+
+    for f in Install/lib/*.so* $(find Install/bin -executable -type f); do
+      patchelf --set-rpath $runPath:$out/lib $f
+    done
+
+    cp -r Install/* $out
+  '';
+
+  buildInputs = [
+    cmake
+    jsoncpp
+    libjson-rpc-cpp
+    curl
+    boost
+    leveldb
+    cryptopp
+    libcpuid
+    opencl-headers
+    ocl-icd
+    miniupnpc
+    libmicrohttpd
+    gmp
+    libGLU libGL
+  ];
+
+  dontStrip = true;
+
+  meta = with stdenv.lib; {
+    description = "Ethereum C++ client";
+    homepage = "https://github.com/ethereum/cpp-ethereum";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ artuuge ];
+    platforms = platforms.linux;
+    broken = true; # 2018-04-10
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cpu-x/default.nix b/nixpkgs/pkgs/applications/misc/cpu-x/default.nix
new file mode 100644
index 000000000000..a92ca30c5d80
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cpu-x/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, gtk3, ncurses
+, libcpuid, pciutils, procps, wrapGAppsHook, nasm, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "cpu-x";
+  version = "4.0.1";
+
+  src = fetchFromGitHub {
+    owner = "X0rg";
+    repo = "CPU-X";
+    rev = "v${version}";
+    sha256 = "191zkkswlbbsw492yygc3idf7wh3bxs97drrqvqqw0mqvrzykxm3";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig wrapGAppsHook nasm makeWrapper ];
+  buildInputs = [
+    gtk3 ncurses libcpuid pciutils procps
+  ];
+
+  postInstall = ''
+    wrapProgram $out/bin/cpu-x \
+      --prefix PATH : ${stdenv.lib.makeBinPath [ stdenv.cc ]}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Free software that gathers information on CPU, motherboard and more";
+    homepage = src.meta.homepage;
+    license = licenses.gpl3;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ gnidorah ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/crumbs/default.nix b/nixpkgs/pkgs/applications/misc/crumbs/default.nix
new file mode 100644
index 000000000000..889c17e6988d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/crumbs/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "crumbs";
+  version = "0.0.3";
+
+  src = fetchFromGitHub
+    { owner = "fasseg";
+      repo = "crumbs";
+      rev = version;
+      sha256 = "0jjvydn4i4n9xv8vsal2jxpa95mk2lw6myv0gx9wih242k9vy0l7";
+    };
+
+  prePatch = ''
+    sed -i 's|gfind|find|' crumbs-completion.fish
+  '';
+
+  postInstall = ''
+    mkdir -p $out/share/bash-completion/completions
+    mkdir -p $out/share/fish/vendor_completions.d
+
+    cp crumbs-completion.bash $out/share/bash-completion/completions/crumbs
+    cp crumbs-completion.fish $out/share/fish/vendor_completions.d/crumbs.fish
+  '';
+
+  meta = with stdenv.lib;
+    { description = "Bookmarks for the command line";
+      homepage    = "https://github.com/fasseg/crumbs";
+      license     = licenses.wtfpl;
+      platforms   = platforms.all;
+      maintainers = with maintainers; [ thesola10 ];
+    };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ctodo/default.nix b/nixpkgs/pkgs/applications/misc/ctodo/default.nix
new file mode 100644
index 000000000000..602fe4308160
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ctodo/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, cmake, fetchurl, ncurses, readline }:
+
+stdenv.mkDerivation rec {
+  pname = "ctodo";
+  version = "1.3";
+
+  src = fetchurl {
+    url = "https://github.com/Acolarh/ctodo/archive/v${version}.tar.gz";
+    sha256 = "1k3raigcgpwa0h8zkv5x9rycnn2iqkb9qim4q9ydqy9wbv3m32jb";
+  };
+
+  buildInputs = [ stdenv cmake ncurses readline ];
+
+  configurePhase = ''
+    cmake -DCMAKE_INSTALL_PREFIX=$out .
+  '';
+
+  meta = {
+    homepage = "http://ctodo.apakoh.dk/";
+    description = "A simple ncurses-based task list manager";
+    license = stdenv.lib.licenses.mit;
+    maintainers = [ stdenv.lib.maintainers.matthiasbeyer ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cum/default.nix b/nixpkgs/pkgs/applications/misc/cum/default.nix
new file mode 100644
index 000000000000..2675a5f4fc5d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cum/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, python3Packages }:
+
+with python3Packages;
+
+buildPythonApplication rec {
+  pname = "cum";
+  version = "0.9.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "15qc6agka2g3kcnpnz0hbjic1s3260cr9bda0rlcyninxs1vndq0";
+  };
+
+  propagatedBuildInputs = [
+    alembic beautifulsoup4 click natsort requests sqlalchemy
+  ];
+
+  # tests seem to fail for `config` not being defined,
+  # but it works once installed
+  doCheck = false;
+
+  # remove the top-level `tests` and `LICENSE` file
+  # they should not be installed, and there can be issues if another package
+  # has a collision (especially with the license file)
+  postInstall = ''
+    rm -rf $out/tests $out/LICENSE
+  '';
+
+  meta = with stdenv.lib; {
+    description = "comic updater, mangafied";
+    homepage = "https://github.com/Hamuko/cum";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ tadeokondrak ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cura/default.nix b/nixpkgs/pkgs/applications/misc/cura/default.nix
new file mode 100644
index 000000000000..1b5c7c23956e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cura/default.nix
@@ -0,0 +1,64 @@
+{ mkDerivation, lib, fetchFromGitHub, cmake, python3, qtbase, qtquickcontrols2, qtgraphicaleffects, curaengine, plugins ? [] }:
+
+mkDerivation rec {
+  pname = "cura";
+  version = "4.6.1";
+
+  src = fetchFromGitHub {
+    owner = "Ultimaker";
+    repo = "Cura";
+    rev = version;
+    sha256 = "0h1r9caa579d3gfpcmch54rdbkg5df64ds2v84iqsbxwjp0rmn4n";
+  };
+
+  materials = fetchFromGitHub {
+    owner = "Ultimaker";
+    repo = "fdm_materials";
+    rev = version;
+    sha256 = "1k5c3qmixhpz3z2yi0fysxcyyf1yhcwmdlrcypkw827lhsialqp4";
+  };
+
+  buildInputs = [ qtbase qtquickcontrols2 qtgraphicaleffects ];
+  propagatedBuildInputs = with python3.pkgs; [
+    libsavitar numpy-stl pyserial requests uranium zeroconf
+    sentry-sdk trimesh
+  ] ++ plugins;
+  nativeBuildInputs = [ cmake python3.pkgs.wrapPython ];
+
+  cmakeFlags = [
+    "-DURANIUM_DIR=${python3.pkgs.uranium.src}"
+    "-DCURA_VERSION=${version}"
+  ];
+
+  makeWrapperArgs = [
+    # hacky workaround for https://github.com/NixOS/nixpkgs/issues/59901
+    "--set OMP_NUM_THREADS 1"
+  ];
+
+  postPatch = ''
+    sed -i 's,/python''${PYTHON_VERSION_MAJOR}/dist-packages,/python''${PYTHON_VERSION_MAJOR}.''${PYTHON_VERSION_MINOR}/site-packages,g' CMakeLists.txt
+    sed -i 's, executable_name = .*, executable_name = "${curaengine}/bin/CuraEngine",' plugins/CuraEngineBackend/CuraEngineBackend.py
+  '';
+
+  postInstall = ''
+    mkdir -p $out/share/cura/resources/materials
+    cp ${materials}/*.fdm_material $out/share/cura/resources/materials/
+    mkdir -p $out/lib/cura/plugins
+    for plugin in ${toString plugins}; do
+      ln -s $plugin/lib/cura/plugins/* $out/lib/cura/plugins
+    done
+  '';
+
+  postFixup = ''
+    wrapPythonPrograms
+    wrapQtApp $out/bin/cura
+  '';
+
+  meta = with lib; {
+    description = "3D printer / slicing GUI built on top of the Uranium framework";
+    homepage = "https://github.com/Ultimaker/Cura";
+    license = licenses.lgpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ abbradar gebner ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cura/lulzbot/curaengine-openmp-compat.patch b/nixpkgs/pkgs/applications/misc/cura/lulzbot/curaengine-openmp-compat.patch
new file mode 100644
index 000000000000..3826e92440f0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cura/lulzbot/curaengine-openmp-compat.patch
@@ -0,0 +1,47 @@
+# Notes by Charles Duffy <charles@dyfis.net> --
+#
+# - The new version of OpenMP does not allow outside variables to be referenced
+#   *at all* without an explicit declaration of how they're supposed to be
+#   handled. Thus, this was an outright build failure beforehand. The new
+#   pragmas copy the initial value from the outer scope into each parallel
+#   thread. Since these variables are all constant within the loops, this is
+#   clearly correct. (Not sure it's *optimal*, but quite sure it isn't
+#   *wrong*).
+# - Upstream has been contacted -- I'm a Lulzbot customer with an active
+#   support contract and sent them the patch. That said, they're in the middle
+#   of some major corporate churn (sold themselves out of near-bankruptcy to an
+#   out-of-state business entity formed as a holding company; moved to that
+#   state; have been slowly restaffing after), so a response may take a while.
+# - The patch is purely my own work.
+
+--- curaengine/src/support.cpp.orig	2020-03-28 10:38:01.953912363 -0500
++++ curaengine/src/support.cpp	2020-03-28 10:45:28.999791908 -0500
+@@ -854,7 +854,7 @@
+     const double tan_angle = tan(angle) - 0.01;  // the XY-component of the supportAngle
+     xy_disallowed_per_layer[0] = storage.getLayerOutlines(0, false).offset(xy_distance);
+     // for all other layers (of non support meshes) compute the overhang area and possibly use that when calculating the support disallowed area
+-    #pragma omp parallel for default(none) shared(xy_disallowed_per_layer, storage, mesh) schedule(dynamic)
++    #pragma omp parallel for default(none) firstprivate(layer_count, is_support_mesh_place_holder, use_xy_distance_overhang, z_distance_top, tan_angle, xy_distance, xy_distance_overhang) shared(xy_disallowed_per_layer, storage, mesh) schedule(dynamic)
+     for (unsigned int layer_idx = 1; layer_idx < layer_count; layer_idx++)
+     {
+         Polygons outlines = storage.getLayerOutlines(layer_idx, false);
+@@ -1054,7 +1054,7 @@
+         const int max_checking_layer_idx = std::min(static_cast<int>(storage.support.supportLayers.size())
+                                                   , static_cast<int>(layer_count - (layer_z_distance_top - 1)));
+         const size_t max_checking_idx_size_t = std::max(0, max_checking_layer_idx);
+-#pragma omp parallel for default(none) shared(support_areas, storage) schedule(dynamic)
++#pragma omp parallel for default(none) firstprivate(max_checking_idx_size_t, layer_z_distance_top) shared(support_areas, storage) schedule(dynamic)
+         for (size_t layer_idx = 0; layer_idx < max_checking_idx_size_t; layer_idx++)
+         {
+             support_areas[layer_idx] = support_areas[layer_idx].difference(storage.getLayerOutlines(layer_idx + layer_z_distance_top - 1, false));
+--- curaengine/src/layerPart.cpp.orig	2020-03-28 10:36:40.381023651 -0500
++++ curaengine/src/layerPart.cpp	2020-03-28 10:39:54.584140465 -0500
+@@ -49,7 +49,7 @@
+ {
+     const auto total_layers = slicer->layers.size();
+     assert(mesh.layers.size() == total_layers);
+-#pragma omp parallel for default(none) shared(mesh, slicer) schedule(dynamic)
++#pragma omp parallel for default(none) firstprivate(total_layers) shared(mesh, slicer) schedule(dynamic)
+     for (unsigned int layer_nr = 0; layer_nr < total_layers; layer_nr++)
+     {
+         SliceLayer& layer_storage = mesh.layers[layer_nr];
diff --git a/nixpkgs/pkgs/applications/misc/cura/lulzbot/curaengine.nix b/nixpkgs/pkgs/applications/misc/cura/lulzbot/curaengine.nix
new file mode 100644
index 000000000000..a5cfa937fd8d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cura/lulzbot/curaengine.nix
@@ -0,0 +1,27 @@
+{ gcc8Stdenv, callPackage, fetchgit, fetchpatch, cmake, libarcusLulzbot, stb, protobuf }:
+
+gcc8Stdenv.mkDerivation rec {
+  pname = "curaengine-lulzBot";
+  version = "3.6.21";
+
+  src = fetchgit {
+    url = "https://code.alephobjects.com/source/curaengine-lulzbot.git";
+    rev = "ec6a1a0f0aa387ef97e5c106633cf8d7fb9cd00d";
+    sha256 = "0wdkvg1hmqp1gaym804lw09x4ngf5ffasd861jhflpy7djbmkfn8";
+  };
+
+  patches = [ ./curaengine-openmp-compat.patch ];
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ libarcusLulzbot stb protobuf ];
+
+  cmakeFlags = [ "-DCURA_ENGINE_VERSION=${version}" ];
+
+  meta = with gcc8Stdenv.lib; {
+    description = "A powerful, fast and robust engine for processing 3D models into 3D printing instruction";
+    homepage = "https://code.alephobjects.com/source/curaengine-lulzbot/";
+    license = licenses.agpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ chaduffy ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cura/lulzbot/default.nix b/nixpkgs/pkgs/applications/misc/cura/lulzbot/default.nix
new file mode 100644
index 000000000000..229966561c6d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cura/lulzbot/default.nix
@@ -0,0 +1,82 @@
+{ lib, mkDerivation, wrapQtAppsHook, callPackage, fetchgit, cmake, jq, python3, qtbase, qtquickcontrols2 }:
+
+let
+  # admittedly, we're using (printer firmware) blobs when we could compile them ourselves.
+  curaBinaryDataVersion = "3.6.21"; # Marlin v2.0.0.174 for Bio, v2.0.0.144 for others.
+  curaBinaryData = fetchgit {
+    url = "https://code.alephobjects.com/diffusion/CBD/cura-binary-data.git";
+    rev = "5c75d0f6c10d8b7a903e2072a48cd1f08059509e";
+    sha256 = "1qdsj6rczwzdwzyr7nz7fnypbphckjrnwl8c9dr6izsxyzs465c4";
+  };
+
+  libarcusLulzbot = callPackage ./libarcus.nix {
+    inherit (python3.pkgs) buildPythonPackage sip pythonOlder;
+  };
+  libsavitarLulzbot = callPackage ./libsavitar.nix {
+    inherit (python3.pkgs) buildPythonPackage sip pythonOlder;
+  };
+
+  inherit (python3.pkgs) buildPythonPackage pyqt5 numpy scipy shapely pythonOlder;
+  curaengine = callPackage ./curaengine.nix {
+    inherit libarcusLulzbot;
+  };
+  uraniumLulzbot = callPackage ./uranium.nix {
+    inherit callPackage libarcusLulzbot;
+    inherit (python3.pkgs) buildPythonPackage pyqt5 numpy scipy shapely pythonOlder;
+  };
+in
+mkDerivation rec {
+  pname = "cura-lulzbot";
+  version = "3.6.21";
+
+  src = fetchgit {
+    url = "https://code.alephobjects.com/source/cura-lulzbot.git";
+    rev = "7faeb18604c83004846a02c60cb240708db0034f";
+    sha256 = "10q38s8c8x6xkh1vns4p3iqa5y267vrjh5vq8h55mg1q5001scyq";
+  };
+
+  buildInputs = [ qtbase qtquickcontrols2 ];
+  # numpy-stl temporarily disabled due to https://code.alephobjects.com/T8415
+  propagatedBuildInputs = with python3.pkgs; [ pyserial requests zeroconf ] ++ [ libsavitarLulzbot uraniumLulzbot libarcusLulzbot ]; # numpy-stl
+  nativeBuildInputs = [ cmake python3.pkgs.wrapPython ];
+
+  cmakeFlags = [
+    "-DURANIUM_DIR=${uraniumLulzbot.src}"
+    "-DCURA_VERSION=${version}"
+  ];
+
+  postPatch = ''
+    sed -i 's,/python''${PYTHON_VERSION_MAJOR}/dist-packages,/python''${PYTHON_VERSION_MAJOR}.''${PYTHON_VERSION_MINOR}/site-packages,g' CMakeLists.txt
+    sed -i 's, executable_name = .*, executable_name = "${curaengine}/bin/CuraEngine",' plugins/CuraEngineBackend/CuraEngineBackend.py
+  '';
+
+  preFixup = ''
+    substituteInPlace "$out/bin/cura-lulzbot" --replace 'import cura.CuraApplication' 'import Savitar; import cura.CuraApplication'
+    ln -sT "${curaBinaryData}/cura/resources/firmware" "$out/share/cura/resources/firmware"
+    ln -sT "${uraniumLulzbot}/share/uranium" "$out/share/uranium"
+    ${jq}/bin/jq --arg out "$out" '.build=$out' >"$out/version.json" <<'EOF'
+    ${builtins.toJSON {
+      cura = version;
+      cura_version = version;
+      binarydata = curaBinaryDataVersion;
+      engine = curaengine.version;
+      libarcus = libarcusLulzbot.version;
+      libsavitar = libsavitarLulzbot.version;
+      uranium = uraniumLulzbot.version;
+    }}
+    EOF
+  '';
+
+  postFixup = ''
+    wrapPythonPrograms
+    wrapQtApp "$out/bin/cura-lulzbot"
+  '';
+
+  meta = with lib; {
+    description = "3D printer / slicing GUI built on top of the Uranium framework";
+    homepage = "https://code.alephobjects.com/diffusion/CURA/";
+    license = licenses.agpl3;  # a partial relicense to LGPL has happened, but not certain that all AGPL bits are expunged
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ chaduffy ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cura/lulzbot/libarcus.nix b/nixpkgs/pkgs/applications/misc/cura/lulzbot/libarcus.nix
new file mode 100644
index 000000000000..5edaabbacb0f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cura/lulzbot/libarcus.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildPythonPackage, fetchgit, fetchurl, cmake, sip, protobuf, pythonOlder }:
+
+buildPythonPackage {
+  pname = "libarcus";
+  version = "3.6.21";
+  format = "other";
+
+  src = fetchgit {
+    url = "https://code.alephobjects.com/source/arcus.git";
+    rev = "aeda02d7727f45b657afb72cef203283fbf09325";
+    sha256 = "1ak0d4k745sx7paic27was3s4987z9h3czscjs21hxbi6qy83g99";
+  };
+
+  disabled = pythonOlder "3.4.0";
+
+  propagatedBuildInputs = [ sip ];
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ protobuf ];
+
+  postPatch = ''
+    # To workaround buggy SIP detection which overrides PYTHONPATH
+    sed -i '/SET(ENV{PYTHONPATH}/d' cmake/FindSIP.cmake
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Communication library between internal components for Ultimaker software";
+    homepage = "https://code.alephobjects.com/source/arcus/";
+    license = licenses.lgpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ chaduffy ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/cura/lulzbot/libsavitar.nix b/nixpkgs/pkgs/applications/misc/cura/lulzbot/libsavitar.nix
new file mode 100644
index 000000000000..e32117a103ee
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cura/lulzbot/libsavitar.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildPythonPackage, pythonOlder, fetchgit, cmake, sip }:
+
+buildPythonPackage {
+  pname = "libsavitar-lulzbot";
+  name = "libsavitar-lulzbot";
+  version = "3.6.21";
+  format = "other";
+
+  src = fetchgit {
+    url = "https://code.alephobjects.com/source/savitar.git";
+    rev = "ee8ada42c55f54727ce4d275c294ba426d3d8234";
+    sha256 = "1wm5ii3cmni8dk3c65kw4wglpypkdsfpgd480d3hc1r5bqpq0d6j";
+  };
+
+  postPatch = ''
+    # To workaround buggy SIP detection which overrides PYTHONPATH
+    sed -i '/SET(ENV{PYTHONPATH}/d' cmake/FindSIP.cmake
+  '';
+
+  nativeBuildInputs = [ cmake ];
+
+  propagatedBuildInputs = [ sip ];
+
+  disabled = pythonOlder "3.4.0";
+
+  meta = with stdenv.lib; {
+    description = "C++ implementation of 3mf loading with SIP python bindings";
+    homepage = "https://github.com/Ultimaker/libSavitar";
+    license = licenses.lgpl3Plus;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ chaduffy ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cura/lulzbot/uranium.nix b/nixpkgs/pkgs/applications/misc/cura/lulzbot/uranium.nix
new file mode 100644
index 000000000000..2ce0fab170ea
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cura/lulzbot/uranium.nix
@@ -0,0 +1,38 @@
+{ stdenv, callPackage, fetchurl, fetchgit, buildPythonPackage, fetchFromGitHub, python, cmake
+, pyqt5, numpy, scipy, shapely, libarcusLulzbot, doxygen, gettext, pythonOlder }:
+
+buildPythonPackage {
+  version = "3.6.21";
+  pname = "uranium";
+  name = "uraniumLulzbot";
+  format = "other";
+
+  src = fetchgit {
+    url = "https://code.alephobjects.com/diffusion/U/uranium.git";
+    rev = "54d911edd2551c5875c554928896122835a0dd6c";
+    sha256 = "04bym3vwikaxw8ab0mymv9sc9n8i7yw5kfsv99ic811g9lzz3j1i";
+  };
+
+  disabled = pythonOlder "3.5.0";
+
+  buildInputs = [ python gettext ];
+  propagatedBuildInputs = [ pyqt5 numpy scipy shapely libarcusLulzbot ];
+  nativeBuildInputs = [ cmake doxygen ];
+
+  postPatch = ''
+    sed -i 's,/python''${PYTHON_VERSION_MAJOR}/dist-packages,/python''${PYTHON_VERSION_MAJOR}.''${PYTHON_VERSION_MINOR}/site-packages,g' CMakeLists.txt
+    sed -i \
+     -e "s,Resources.addSearchPath(os.path.join(os.path.abspath(os.path.dirname(__file__)).*,Resources.addSearchPath(\"$out/share/uranium/resources\")," \
+     -e "s,self._plugin_registry.addPluginLocation(os.path.join(os.path.abspath(os.path.dirname(__file__)).*,self._plugin_registry.addPluginLocation(\"$out/lib/uranium/plugins\")," \
+     UM/Application.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A Python framework for building Desktop applications";
+    homepage = "https://code.alephobjects.com/diffusion/U/";
+    license = licenses.lgpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ chaduffy ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/cura/numpy-cast.patch b/nixpkgs/pkgs/applications/misc/cura/numpy-cast.patch
new file mode 100644
index 000000000000..efb14182b3e6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cura/numpy-cast.patch
@@ -0,0 +1,12 @@
+diff -urN Cura-15.04.old/Cura/util/sliceEngine.py Cura-15.04/Cura/util/sliceEngine.py
+--- Cura-15.04.old/Cura/util/sliceEngine.py	2016-05-07 20:34:17.305020334 +0200
++++ Cura-15.04/Cura/util/sliceEngine.py	2016-05-07 20:40:02.993286467 +0200
+@@ -343,7 +343,7 @@
+ 						objMax[1] = max(oMax[1], objMax[1])
+ 			if objMin is None:
+ 				return
+-			pos += (objMin + objMax) / 2.0 * 1000
++			pos = numpy.add( pos, (objMin + objMax) / 2.0 * 1000, out=pos, casting='unsafe')
+ 			commandList += ['-s', 'posx=%d' % int(pos[0]), '-s', 'posy=%d' % int(pos[1])]
+ 
+ 			vertexTotal = [0] * 4
diff --git a/nixpkgs/pkgs/applications/misc/cura/plugins.nix b/nixpkgs/pkgs/applications/misc/cura/plugins.nix
new file mode 100644
index 000000000000..9fbe647046c0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cura/plugins.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, fetchpatch, python3Packages }:
+
+let
+
+  self = {
+
+    octoprint = stdenv.mkDerivation rec {
+      pname = "Cura-OctoPrintPlugin";
+      version = "3.5.12";
+
+      src = fetchFromGitHub {
+        owner = "fieldOfView";
+        repo = pname;
+        rev = "ad522c0b7ead5fbe28da686a3cc75e351274c2bc";
+        sha256 = "0ln11ng32bh0smfsk54mv2j3sadh0gwf031nmm95zrvbj9cr6yc0";
+      };
+
+      propagatedBuildInputs = with python3Packages; [
+        netifaces
+      ];
+
+      installPhase = ''
+        mkdir -p $out/lib/cura/plugins/OctoPrintPlugin
+        cp -rv . $out/lib/cura/plugins/OctoPrintPlugin/
+      '';
+
+      meta = with stdenv.lib; {
+        description = "Enables printing directly to OctoPrint and monitoring the process";
+        homepage = "https://github.com/fieldOfView/Cura-OctoPrintPlugin";
+        license = licenses.agpl3;
+        maintainers = with maintainers; [ gebner ];
+      };
+    };
+
+  };
+
+in self
diff --git a/nixpkgs/pkgs/applications/misc/cura/stable.nix b/nixpkgs/pkgs/applications/misc/cura/stable.nix
new file mode 100644
index 000000000000..87d2aba891b6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cura/stable.nix
@@ -0,0 +1,73 @@
+{ stdenv, python27Packages, curaengine, makeDesktopItem, fetchurl }:
+let
+  py = python27Packages;
+  version = "15.04";
+in
+stdenv.mkDerivation rec {
+  pname = "cura";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://github.com/daid/Cura/archive/${version}.tar.gz";
+    sha256 = "0xbjvzhp8wzq9lnpmcg1fjf7j5h39bj5463sd5c8jzdjl96izizl";
+  };
+
+  desktopItem = makeDesktopItem {
+    name = "Cura";
+    exec = "cura";
+    icon = "cura";
+    comment = "Cura";
+    desktopName = "Cura";
+    genericName = "3D printing host software";
+    categories = "GNOME;GTK;Utility;";
+  };
+
+  python_deps = with py; [ pyopengl pyserial numpy wxPython30 power setuptools ];
+
+  pythonPath = python_deps;
+
+  propagatedBuildInputs = python_deps;
+
+  buildInputs = [ curaengine py.wrapPython ];
+
+  configurePhase = "";
+  buildPhase = "";
+
+  patches = [ ./numpy-cast.patch ];
+
+  installPhase = ''
+    # Install Python code.
+    site_packages=$out/lib/python2.7/site-packages
+    mkdir -p $site_packages
+    cp -r Cura $site_packages/
+
+    # Install resources.
+    resources=$out/share/cura
+    mkdir -p $resources
+    cp -r resources/* $resources/
+    sed -i 's|os.path.join(os.path.dirname(__file__), "../../resources")|"'$resources'"|g' $site_packages/Cura/util/resources.py
+
+    # Install executable.
+    mkdir -p $out/bin
+    cp Cura/cura.py $out/bin/cura
+    chmod +x $out/bin/cura
+    sed -i 's|#!/usr/bin/python|#!/usr/bin/env python|' $out/bin/cura
+    wrapPythonPrograms
+
+    # Make it find CuraEngine.
+    echo "def getEngineFilename(): return '${curaengine}/bin/CuraEngine'" >> $site_packages/Cura/util/sliceEngine.py
+
+    # Install desktop item.
+    mkdir -p "$out"/share/applications
+    cp "$desktopItem"/share/applications/* "$out"/share/applications/
+    mkdir -p "$out"/share/icons
+    ln -s "$resources/images/c.png" "$out"/share/icons/cura.png
+  '';
+
+  meta = with stdenv.lib; {
+    description = "3D printing host software";
+    homepage = "https://github.com/daid/Cura";
+    license = licenses.agpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/curabydagoma/default.nix b/nixpkgs/pkgs/applications/misc/curabydagoma/default.nix
new file mode 100644
index 000000000000..821b88f9b20d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/curabydagoma/default.nix
@@ -0,0 +1,76 @@
+{ stdenv, runtimeShell, lib, fetchurl, python, pythonPackages, unzip }:
+
+# This package uses a precompiled "binary" distribution of CuraByDagoma,
+# distributed by the editor.
+#
+# To update the package, follow the links on https://dist.dagoma.fr/:
+# * Cura By Dagoma
+# * Linux
+# * 64 bits
+# * Genric archive
+#
+# I made the arbitrary choice to compile this package only for x86_64.
+# I guess people owning a 3D printer generally don't use i686.
+# If, however, someone needs it, we certainly can find a solution.
+
+stdenv.mkDerivation rec {
+  pname = "curabydagoma";
+  # Version is the date, UNIX format
+  version = "1520506579";
+  # Hash of the user's choice: os, arch, package type...
+  hash = "58228cce5bbdcf764b7116850956f1e5";
+
+  src = fetchurl {
+    url = "https://dist.dagoma.fr/get/zip/CuraByDagoma/${version}/${hash}";
+    sha256 = "16wfipdyjkf6dq8awjzs4zgkmqk6230277mf3iz8swday9hns8pq";
+  };
+  unpackCmd = "unzip $curSrc && tar zxf CuraByDagoma_amd64.tar.gz";
+  nativeBuildInputs = [ unzip ];
+  buildInputs = [ python pythonPackages.pyopengl pythonPackages.wxPython pythonPackages.pyserial pythonPackages.numpy ];
+
+  # Compile all pyc files because the included pyc files may be older than the
+  # py files. However, Python doesn't realize that because the packages
+  # have all dates set to epoch.
+  buildPhase = ''
+    python -m compileall -f curabydago
+  '';
+
+  # * Simply copy the stuff there
+  # * Create an executable with the correct path etc
+  # * Create a .desktop file to have a launcher in the desktop environments
+  installPhase = ''
+    mkdir $out
+    cp -r * $out/
+
+    mkdir $out/bin
+    cat > $out/bin/curabydago <<EOF
+    #!${runtimeShell}
+    export PYTHONPATH=$PYTHONPATH
+    ${python.out}/bin/python $out/curabydago/cura.py
+    EOF
+    chmod a+x $out/bin/curabydago
+
+    mkdir -p $out/share/applications
+    cat > $out/share/applications/curabydago.desktop <<EOF
+    [Desktop Entry]
+    Type=Application
+    Name=Cura-by-dagoma
+    Comment=CuraByDagoma is a fork of Legacy Cura made by Dagoma for its own printers.
+    Icon=$out/curabydago/resources/images/cura.ico
+    Exec=$out/bin/curabydago
+    Path=$out/
+    StartupNotify=true
+    Terminal=false
+    Categories=GNOME;GTK;Utility;
+    EOF
+
+  '';
+
+  meta = with lib; {
+    description = "Slicer for 3D printers built by Dagoma";
+    homepage = "https://dagoma.fr/cura-by-dagoma.html";
+    license = licenses.agpl3;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ tiramiseb ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/curaengine/default.nix b/nixpkgs/pkgs/applications/misc/curaengine/default.nix
new file mode 100644
index 000000000000..0a4ec62ca786
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/curaengine/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, cmake, libarcus, stb, protobuf }:
+
+stdenv.mkDerivation rec {
+  pname = "curaengine";
+  version = "4.6.1";
+
+  src = fetchFromGitHub {
+    owner = "Ultimaker";
+    repo = "CuraEngine";
+    rev = version;
+    sha256 = "1fr151hmdg2lhk9pbpan1hb1pafj784nijr4pz646ljmjh12vfk2";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ libarcus stb protobuf ];
+
+  cmakeFlags = [ "-DCURA_ENGINE_VERSION=${version}" ];
+
+  meta = with stdenv.lib; {
+    description = "A powerful, fast and robust engine for processing 3D models into 3D printing instruction";
+    homepage = "https://github.com/Ultimaker/CuraEngine";
+    license = licenses.agpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ abbradar gebner ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/curaengine/stable.nix b/nixpkgs/pkgs/applications/misc/curaengine/stable.nix
new file mode 100644
index 000000000000..394a94f19ab8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/curaengine/stable.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl }:
+let
+  version = "15.04.6";
+in
+stdenv.mkDerivation {
+  pname = "curaengine";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://github.com/Ultimaker/CuraEngine/archive/${version}.tar.gz";
+    sha256 = "1cd4dikzvqyj5g80rqwymvh4nwm76vsf78clb37kj6q0fig3qbjg";
+  };
+
+  postPatch = ''
+    sed -i 's,--static,,g' Makefile
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp build/CuraEngine $out/bin/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Engine for processing 3D models into 3D printing instructions";
+    homepage = "https://github.com/Ultimaker/CuraEngine";
+    license = licenses.agpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/dbeaver/default.nix b/nixpkgs/pkgs/applications/misc/dbeaver/default.nix
new file mode 100644
index 000000000000..3b55a1506370
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dbeaver/default.nix
@@ -0,0 +1,70 @@
+{ stdenv, fetchurl, makeDesktopItem, makeWrapper
+, fontconfig, freetype, glib, gtk3
+, jdk, libX11, libXrender, libXtst, zlib }:
+
+# The build process is almost like eclipse's.
+# See `pkgs/applications/editors/eclipse/*.nix`
+
+stdenv.mkDerivation rec {
+  pname = "dbeaver-ce";
+  version = "7.1.0";
+
+  desktopItem = makeDesktopItem {
+    name = "dbeaver";
+    exec = "dbeaver";
+    icon = "dbeaver";
+    desktopName = "dbeaver";
+    comment = "SQL Integrated Development Environment";
+    genericName = "SQL Integrated Development Environment";
+    categories = "Application;Development;";
+  };
+
+  buildInputs = [
+    fontconfig freetype glib gtk3
+    jdk libX11 libXrender libXtst zlib
+  ];
+
+  nativeBuildInputs = [
+    makeWrapper
+  ];
+
+  src = fetchurl {
+    url = "https://dbeaver.io/files/${version}/dbeaver-ce-${version}-linux.gtk.x86_64.tar.gz";
+    sha256 = "1q3f5bghm3jw5c7c62ivf32fldjqhmj1a0qlwgqjxyhmfcig0rnb";
+  };
+
+  installPhase = ''
+    mkdir -p $out/
+    cp -r . $out/dbeaver
+
+    # Patch binaries.
+    interpreter=$(cat $NIX_CC/nix-support/dynamic-linker)
+    patchelf --set-interpreter $interpreter $out/dbeaver/dbeaver
+
+    makeWrapper $out/dbeaver/dbeaver $out/bin/dbeaver \
+      --prefix PATH : ${jdk}/bin \
+      --prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath ([ glib gtk3 libXtst ])} \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+
+    # Create desktop item.
+    mkdir -p $out/share/applications
+    cp ${desktopItem}/share/applications/* $out/share/applications
+
+    mkdir -p $out/share/pixmaps
+    ln -s $out/dbeaver/icon.xpm $out/share/pixmaps/dbeaver.xpm
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://dbeaver.io/";
+    description = "Universal SQL Client for developers, DBA and analysts. Supports MySQL, PostgreSQL, MariaDB, SQLite, and more";
+    longDescription = ''
+      Free multi-platform database tool for developers, SQL programmers, database
+      administrators and analysts. Supports all popular databases: MySQL,
+      PostgreSQL, MariaDB, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access,
+      Teradata, Firebird, Derby, etc.
+    '';
+    license = licenses.asl20;
+    platforms = [ "x86_64-linux" ];
+    maintainers = [ maintainers.jojosch ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/dbvisualizer/default.nix b/nixpkgs/pkgs/applications/misc/dbvisualizer/default.nix
new file mode 100644
index 000000000000..7612c00393fa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dbvisualizer/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, jre, makeWrapper }:
+
+stdenv.mkDerivation {
+  name = "dbvisualizer-9.5.7";
+
+  src = fetchurl {
+    url = "https://www.dbvis.com/product_download/dbvis-9.5.7/media/dbvis_unix_9_5_7.tar.gz";
+    sha256 = "1xv4fw7cji2ffvv7z8vjl5lap512pj60s2ynihirrqld7pmklnyr";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -a . $out
+    ln -sf $out/dbvis $out/bin
+    wrapProgram $out/bin/dbvis --set INSTALL4J_JAVA_HOME ${jre}
+  '';
+
+  meta = {
+    description = "The universal database tool";
+    homepage = "https://www.dbvis.com/";
+    license = stdenv.lib.licenses.unfree;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ddgr/default.nix b/nixpkgs/pkgs/applications/misc/ddgr/default.nix
new file mode 100644
index 000000000000..82730842baca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ddgr/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, python3, installShellFiles }:
+
+stdenv.mkDerivation rec {
+  version = "1.8.1";
+  pname = "ddgr";
+
+  src = fetchFromGitHub {
+    owner = "jarun";
+    repo = "ddgr";
+    rev = "v${version}";
+    sha256 = "0668wzh1gqin0xscy3fly9hz370n2ny175f3kya9bsld0x0jkd5p";
+  };
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  buildInputs = [ python3 ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  postInstall = ''
+    installShellCompletion --bash --name ddgr.bash auto-completion/bash/ddgr-completion.bash
+    installShellCompletion --fish auto-completion/fish/ddgr.fish
+    installShellCompletion --zsh auto-completion/zsh/_ddgr
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/jarun/ddgr";
+    description = "Search DuckDuckGo from the terminal";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ ceedubs markus1189 ];
+    platforms = python3.meta.platforms;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/deco/default.nix b/nixpkgs/pkgs/applications/misc/deco/default.nix
new file mode 100644
index 000000000000..ad8b56e830fa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/deco/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, scsh, feh, xorg }:
+
+stdenv.mkDerivation rec {
+  pname = "deco";
+  version = "0.0.2";
+
+  src = fetchFromGitHub {
+    owner = "ebzzry";
+    repo = pname;
+    rev = "49cded5ad123b0169f47cd0dc0f5420f4b581837";
+    sha256 = "19rvqhw0blwga8ck86yy8hj7j1l9hriphlld6yrfd3yip4jprjzz";
+  };
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp ${pname} $out/bin
+    chmod +x $out/bin/${pname}
+  '';
+
+  postFixup = ''
+    substituteInPlace $out/bin/deco --replace "/usr/bin/env scsh" "${scsh}/bin/scsh"
+    substituteInPlace $out/bin/deco --replace "feh" "${feh}/bin/feh"
+    substituteInPlace $out/bin/deco --replace "xdpyinfo" "${xorg.xdpyinfo}/bin/xdpyinfo"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/ebzzry/deco";
+    description = "A simple root image setter";
+    license = licenses.mit;
+    maintainers = [ maintainers.ebzzry ];
+    platforms = platforms.unix;
+  };
+
+  dontBuild = true;
+}
diff --git a/nixpkgs/pkgs/applications/misc/devilspie2/default.nix b/nixpkgs/pkgs/applications/misc/devilspie2/default.nix
new file mode 100644
index 000000000000..2961baee1024
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/devilspie2/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, intltool, pkgconfig, glib, gtk, lua, libwnck3 }:
+
+stdenv.mkDerivation rec {
+  pname = "devilspie2";
+  version = "0.43";
+
+  src = fetchurl {
+    url = "https://download.savannah.gnu.org/releases/devilspie2/devilspie2_${version}-src.tar.gz";
+    sha256 = "0a7qjl2qd4099kkkbwa1y2fk48s21jlr409lf9mij7mlc9yc3zzc";
+  };
+
+  nativeBuildInputs = [ intltool pkgconfig ];
+  buildInputs = [ glib gtk lua libwnck3 ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/man/man1
+    cp bin/devilspie2 $out/bin
+    cp devilspie2.1 $out/share/man/man1
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A window matching utility";
+    longDescription = ''
+      Devilspie2 is a window matching utility, allowing the user to
+      perform scripted actions on windows as they are created. For
+      example you can script a terminal program to always be
+      positioned at a specific screen position, or position a window
+      on a specific workspace.
+    '';
+    homepage = "https://www.gusnan.se/devilspie2/";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.ebzzry ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/dfilemanager/default.nix b/nixpkgs/pkgs/applications/misc/dfilemanager/default.nix
new file mode 100644
index 000000000000..69c7f0dc17fb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dfilemanager/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, mkDerivation, fetchgit, cmake, file, qtbase, qttools, solid }:
+
+let
+  version = "git-2016-01-10";
+in
+mkDerivation {
+  pname = "dfilemanager";
+  inherit version;
+  src = fetchgit {
+    url = "git://git.code.sf.net/p/dfilemanager/code";
+    rev = "2c5078b05e0ad74c037366be1ab3e6a03492bde4";
+    sha256 = "1qwhnlcc2j8sr1f3v63sxs3m7q7w1xy6c2jqsnznjgm23b5h3hxd";
+  };
+
+  buildInputs = [ cmake qtbase qttools file solid ];
+
+  cmakeFlags = [ "-DQT5BUILD=true" ];
+
+  meta = {
+    homepage = "http://dfilemanager.sourceforge.net/";
+    description = "File manager written in Qt/C++";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/diff-pdf/default.nix b/nixpkgs/pkgs/applications/misc/diff-pdf/default.nix
new file mode 100644
index 000000000000..83116da4df05
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/diff-pdf/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, autoconf, automake, pkgconfig, cairo, poppler, wxGTK ? null, wxmac ? null, darwin ? null }:
+
+let
+  wxInputs =
+    if stdenv.isDarwin then
+      [ wxmac darwin.apple_sdk.frameworks.Cocoa ]
+    else
+      [ wxGTK ];
+in
+stdenv.mkDerivation rec {
+  pname = "diff-pdf";
+  version = "0.4.1";
+
+  src = fetchFromGitHub {
+    owner = "vslavik";
+    repo = "diff-pdf";
+    rev = "v${version}";
+    sha256 = "1y5ji4c4m69vzs0z051fkhfdrjnyxb6kzac5flhdkfb2hgp1jnxl";
+  };
+
+  nativeBuildInputs = [ autoconf automake pkgconfig ];
+  buildInputs = [ cairo poppler ] ++ wxInputs;
+
+  preConfigure = "./bootstrap";
+
+  meta = with stdenv.lib; {
+    homepage = "https://vslavik.github.io/diff-pdf/";
+    description = "Simple tool for visually comparing two PDF files";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/diffpdf/default.nix b/nixpkgs/pkgs/applications/misc/diffpdf/default.nix
new file mode 100644
index 000000000000..17dfd08f90b2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/diffpdf/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, mkDerivation, fetchurl, fetchpatch, qmake, qttools, qtbase, poppler }:
+
+mkDerivation rec {
+  version = "2.1.3";
+  pname = "diffpdf";
+
+  src = fetchurl {
+    url = "http://www.qtrac.eu/${pname}-${version}.tar.gz";
+    sha256 = "0cr468fi0d512jjj23r5flfzx957vibc9c25gwwhi0d773h2w566";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://raw.githubusercontent.com/gentoo/gentoo/9b971631588ff46e7c2d501bc35cd0d9ce2d98e2/app-text/diffpdf/files/diffpdf-2.1.3-qt5.patch";
+      sha256 = "0sax8gcqcmzf74hmdr3rarqs4nsxmml9qmh6pqyjmgl3lypxhafg";
+    })
+    ./fix_path_poppler_qt5.patch
+  ];
+
+  nativeBuildInputs = [ qmake qttools ];
+  buildInputs = [ qtbase poppler ];
+
+  preConfigure = ''
+    substituteInPlace diffpdf.pro --replace @@NIX_POPPLER_QT5@@ ${poppler.dev}
+    lrelease diffpdf.pro
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/man/man1
+
+    install -Dpm755 -D diffpdf $out/bin/diffpdf
+    install -Dpm644 -D diffpdf.1 $out/share/man/man1/diffpdf.1
+
+    install -dpm755 $out/share/doc/${pname}-${version} $out/share/licenses/${pname}-${version} $out/share/icons $out/share/pixmaps $out/share/applications
+    install -Dpm644 CHANGES README help.html $out/share/doc/${pname}-${version}/
+    install -Dpm644 gpl-2.0.txt $out/share/licenses/${pname}-${version}/
+    install -Dpm644 images/icon.png $out/share/icons/diffpdf.png
+    install -Dpm644 images/icon.png $out/share/pixmaps/diffpdf.png
+
+    cat > $out/share/applications/diffpdf.desktop <<EOF
+    [Desktop Entry]
+    Type=Application
+    Version=1.0
+    Name=diffpdf
+    Icon=diffpdf
+    Comment=PDF diffing tool
+    Exec=$out/bin/diffpdf
+    Terminal=false
+    EOF
+    '';
+
+  meta = {
+    homepage = "http://www.qtrac.eu/diffpdfc.html";
+    description = "Tool for diffing pdf files visually or textually";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = with stdenv.lib.maintainers; [ tstrobel ];
+    platforms = with stdenv.lib.platforms; linux;
+    inherit version;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/diffpdf/fix_path_poppler_qt5.patch b/nixpkgs/pkgs/applications/misc/diffpdf/fix_path_poppler_qt5.patch
new file mode 100644
index 000000000000..9535ea2c6b0d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/diffpdf/fix_path_poppler_qt5.patch
@@ -0,0 +1,16 @@
+diff -uNr diffpdf-2.1.3/diffpdf.pro diffpdf-2.1.3-new/diffpdf.pro
+--- diffpdf-2.1.3/diffpdf.pro	2013-10-15 09:01:22.000000000 +0200
++++ diffpdf-2.1.3-new/diffpdf.pro	2015-07-07 23:13:36.445572148 +0200
+@@ -47,9 +47,9 @@
+ 	INCLUDEPATH += /c/poppler_lib/include/poppler/qt5
+ 	LIBS += -Wl,-rpath -Wl,/c/poppler_lib/bin -Wl,-L/c/poppler_lib/bin
+     } else {
+-	exists(/usr/include/poppler/qt5) {
+-	    INCLUDEPATH += /usr/include/poppler/cpp
+-	    INCLUDEPATH += /usr/include/poppler/qt5
++	exists(@@NIX_POPPLER_QT5@@/include/poppler/qt5) {
++	    INCLUDEPATH += @@NIX_POPPLER_QT5@@/include/poppler/cpp
++	    INCLUDEPATH += @@NIX_POPPLER_QT5@@/include/poppler/qt5
+ 	} else {
+ 	    INCLUDEPATH += /usr/local/include/poppler/cpp
+ 	    INCLUDEPATH += /usr/local/include/poppler/qt5
diff --git a/nixpkgs/pkgs/applications/misc/digitalbitbox/default.nix b/nixpkgs/pkgs/applications/misc/digitalbitbox/default.nix
new file mode 100644
index 000000000000..95159d1927ab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/digitalbitbox/default.nix
@@ -0,0 +1,143 @@
+{ stdenv
+, autoreconfHook
+, curl
+, fetchFromGitHub
+, git
+, libevent
+, libtool
+, qrencode
+, udev
+, libusb-compat-0_1
+, makeWrapper
+, pkgconfig
+, qtbase
+, qttools
+, qtwebsockets
+, qtmultimedia
+, udevRule51 ? ''
+,   SUBSYSTEM=="usb", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="dbb%n", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2402"
+, ''
+, udevRule52 ? ''
+,   KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2402", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="dbbf%n"
+, ''
+, writeText
+}:
+
+# Enabling the digitalbitbox program
+#
+#     programs.digitalbitbox.enable = true;
+#
+# will install the digitalbitbox package and enable the corresponding hardware
+# module and is by far the easiest way to get started with the Digital Bitbox on
+# NixOS.
+
+# In case you install the package only, please be aware that you may need to
+# apply some udev rules to allow the application to identify and access your
+# wallet. In a nixos-configuration, one may accomplish this by enabling the
+# digitalbitbox hardware module
+#
+#     hardware.digitalbitbox.enable = true;
+#
+# or by adding the digitalbitbox package to system.udev.packages
+#
+#     system.udev.packages = [ pkgs.digitalbitbox ];
+
+# See https://digitalbitbox.com/start_linux for more information.
+let
+  copyUdevRuleToOutput = name: rule:
+    "cp ${writeText name rule} $out/etc/udev/rules.d/${name}";
+in stdenv.mkDerivation rec {
+  pname = "digitalbitbox";
+  version = "2.2.2";
+
+  src = fetchFromGitHub {
+    owner = "digitalbitbox";
+    repo = "dbb-app";
+    rev = "v${version}";
+    sha256 = "1r77fvqrlaryzij5dfbnigzhvg1d12g96qb2gp8dy3xph1j0k3s1";
+  };
+
+  nativeBuildInputs = with stdenv.lib; [
+    autoreconfHook
+    curl
+    git
+    makeWrapper
+    pkgconfig
+    qttools
+  ];
+
+  buildInputs = [
+    libevent
+    libtool
+    udev
+    libusb-compat-0_1
+    qrencode
+
+    qtbase
+    qtwebsockets
+    qtmultimedia
+  ];
+
+  LUPDATE="${qttools.dev}/bin/lupdate";
+  LRELEASE="${qttools.dev}/bin/lrelease";
+  MOC="${qtbase.dev}/bin/moc";
+  QTDIR=qtbase.dev;
+  RCC="${qtbase.dev}/bin/rcc";
+  UIC="${qtbase.dev}/bin/uic";
+
+  configureFlags = [
+    "--enable-libusb"
+  ];
+
+  hardeningDisable = [
+    "format"
+  ];
+
+  postInstall = ''
+    mkdir -p "$out/lib"
+    cp src/libbtc/.libs/*.so* $out/lib
+    cp src/libbtc/src/secp256k1/.libs/*.so* $out/lib
+    cp src/hidapi/libusb/.libs/*.so* $out/lib
+    cp src/univalue/.libs/*.so* $out/lib
+
+    # [RPATH][patchelf] Avoid forbidden reference error
+    rm -rf $PWD
+
+    wrapProgram "$out/bin/dbb-cli" --prefix LD_LIBRARY_PATH : "$out/lib"
+    wrapProgram "$out/bin/dbb-app" --prefix LD_LIBRARY_PATH : "$out/lib"
+
+    # Provide udev rules as documented in https://digitalbitbox.com/start_linux
+    mkdir -p "$out/etc/udev/rules.d"
+    ${copyUdevRuleToOutput "51-hid-digitalbox.rules" udevRule51}
+    ${copyUdevRuleToOutput "52-hid-digitalbox.rules" udevRule52}
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "A QT based application for the Digital Bitbox hardware wallet";
+    longDescription = ''
+      Digital Bitbox provides dbb-app, a GUI tool, and dbb-cli, a CLI tool, to manage Digital Bitbox devices.
+
+      This package will only install the dbb-app and dbb-cli, however; in order for these applications to identify and access Digital Bitbox devices, one may want to enable the digitalbitbox hardware module by adding
+
+          hardware.digitalbitbox.enable = true;
+
+      to the configuration which is equivalent to adding this package to the udev.packages list.
+
+
+      The easiest way to use the digitalbitbox package in NixOS is by adding
+
+          programs.digitalbitbox.enable = true;
+
+      to the configuration which installs the package and enables the hardware module.
+    '';
+    homepage = "https://digitalbitbox.com/";
+    license = licenses.mit;
+    maintainers = with maintainers; [
+      vidbina
+    ];
+    platforms = platforms.linux;
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ding/default.nix b/nixpkgs/pkgs/applications/misc/ding/default.nix
new file mode 100644
index 000000000000..374c4cf66487
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ding/default.nix
@@ -0,0 +1,55 @@
+{ aspell, aspellDicts_de, aspellDicts_en, buildEnv, fetchurl, fortune, gnugrep, makeWrapper, stdenv, tk, tre }:
+let
+  aspellEnv = buildEnv {
+    name = "env-ding-aspell";
+    paths = [
+      aspell
+      aspellDicts_de
+      aspellDicts_en
+    ];
+  };
+in
+stdenv.mkDerivation rec {
+  name = "ding-1.8.1";
+
+  src = fetchurl {
+    url = "http://ftp.tu-chemnitz.de/pub/Local/urz/ding/${name}.tar.gz";
+    sha256 = "0chjqs3z9zs1w3l7b5lsaj682rgnkf9kibcbzhggqqcn1pbvl5sq";
+  };
+
+  buildInputs = [ aspellEnv fortune gnugrep makeWrapper tk tre ];
+
+  patches = [ ./dict.patch ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mkdir -p $out/share/dict
+    mkdir -p $out/share/man/man1
+    mkdir -p $out/share/applications
+    mkdir -p $out/share/pixmaps
+
+    for f in ding ding.1; do
+      sed -i "s@/usr/share@$out/share@g" "$f"
+    done
+
+    sed -i "s@/usr/bin/fortune@fortune@g" ding
+
+    sed -i "s@/usr/bin/ding@$out/bin/ding@g" ding.desktop
+
+    cp -v ding $out/bin/
+    cp -v de-en.txt $out/share/dict/
+    cp -v ding.1 $out/share/man/man1/
+    cp -v ding.png $out/share/pixmaps/
+    cp -v ding.desktop $out/share/applications/
+
+    wrapProgram $out/bin/ding --prefix PATH : ${stdenv.lib.makeBinPath [ gnugrep aspellEnv tk fortune ]} --prefix ASPELL_CONF : "\"prefix ${aspellEnv};\""
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple and fast dictionary lookup tool";
+    homepage = "https://www-user.tu-chemnitz.de/~fri/ding/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux; # homepage says: unix-like except darwin
+    maintainers = [ maintainers.exi ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ding/dict.patch b/nixpkgs/pkgs/applications/misc/ding/dict.patch
new file mode 100644
index 000000000000..70ecea10550e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ding/dict.patch
@@ -0,0 +1,26 @@
+Ding persists its settings to $HOME/.dingrc on startup, this sadly includes the path to the dictionary.
+On all other distributions, that would be /usr/share/dict/de-en.txt and would hardly ever change.
+On nixos, this will indeed change on ever update and would break it for all users.
+This just comments out the dictionary path in the .dingrc so the user can still set it if she wants to, but it will not affect normal operations.
+--- a/ding
++++ b/ding
+@@ -899,7 +899,9 @@ if { ! [info exists ding_version]} {
+         }
+ 
+         # Change path of default ger-eng.txt when upgrading from version 1.1
+-        if {$searchmeth($i,dictfile) == {/usr/dict/ger-eng.txt} &&
++        if {! [info exists searchmeth($i,dictfile)]} {
++            set searchmeth($i,dictfile) $default_searchmeth(0,dictfile)
++        } elseif {$searchmeth($i,dictfile) == {/usr/dict/ger-eng.txt} &&
+             $ding_version == {1.1}} {
+             set searchmeth($i,dictfile) $default_searchmeth(0,dictfile)
+             debug 2 "New path and name of ger-eng.txt configured: $default_searchmeth(0,dictfile)"
+@@ -5065,7 +5067,7 @@ proc saveOptions {} {
+     foreach i $searchmpos {
+         puts $fd "set searchmeth($n,name) {$searchmeth($i,name)}"
+         puts $fd "set searchmeth($n,type) {$searchmeth($i,type)}"
+-        puts $fd "set searchmeth($n,dictfile) {$searchmeth($i,dictfile)}"
++        puts $fd "#set searchmeth($n,dictfile) {$searchmeth($i,dictfile)}"
+         puts $fd "set searchmeth($n,separator) {$searchmeth($i,separator)}"
+         puts $fd "set searchmeth($n,language1) {$searchmeth($i,language1)}"
+         puts $fd "set searchmeth($n,language2) {$searchmeth($i,language2)}"
diff --git a/nixpkgs/pkgs/applications/misc/direwolf/default.nix b/nixpkgs/pkgs/applications/misc/direwolf/default.nix
new file mode 100644
index 000000000000..623e6dc0fbef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/direwolf/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub
+, espeak, alsaLib, perl
+, python }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "direwolf";
+  version = "1.4";
+
+  src = fetchFromGitHub {
+    owner = "wb2osz";
+    repo = "direwolf";
+    rev = version;
+    sha256 = "033sffjs2dz48077hc58jr4lxxs8md1fyfh4lig6ib7pyigiv1y0";
+  };
+
+  buildInputs = [
+    espeak perl python
+  ] ++ (optional stdenv.isLinux alsaLib);
+
+  postPatch = ''
+    for i in Makefile.*; do
+      substituteInPlace "$i" \
+        --replace /usr/share $out/share
+    done
+
+    substituteInPlace dwespeak.sh \
+      --replace espeak ${espeak}/bin/espeak
+  '';
+
+  preInstall = ''
+    mkdir -p $out/bin
+  '';
+  installFlags = [ "INSTALLDIR=$(out)" ];
+
+  meta = {
+    description = "A Soundcard Packet TNC, APRS Digipeater, IGate, APRStt gateway";
+    homepage = "https://github.com/wb2osz/direwolf/";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-15142.patch b/nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-15142.patch
new file mode 100644
index 000000000000..89ff3759451d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-15142.patch
@@ -0,0 +1,72 @@
+commit 970fb11a296b5bbdc5e8425851253d2c5913c45e
+Author: Leon Bottou <leon@bottou.org>
+Date:   Tue Mar 26 20:36:31 2019 -0400
+
+    Fix bug#296
+
+diff --git a/libdjvu/DjVmDir.cpp b/libdjvu/DjVmDir.cpp
+index a6a39e0..0a0fac6 100644
+--- a/libdjvu/DjVmDir.cpp
++++ b/libdjvu/DjVmDir.cpp
+@@ -299,42 +299,44 @@ DjVmDir::decode(const GP<ByteStream> &gstr)
+          memcpy((char*) strings+strings_size, buffer, length);
+       }
+       DEBUG_MSG("size of decompressed names block=" << strings.size() << "\n");
+-      if (strings[strings.size()-1] != 0)
+-        {
+-         int strings_size=strings.size();
+-         strings.resize(strings_size+1);
+-         strings[strings_size] = 0;
+-        }
++      int strings_size=strings.size();
++      strings.resize(strings_size+3);
++      memset((char*) strings+strings_size, 0, 4);
+       
+-         // Copy names into the files
++      // Copy names into the files
+       const char * ptr=strings;
+       for(pos=files_list;pos;++pos)
+       {
+          GP<File> file=files_list[pos];
+-
++         if (ptr >= (const char*)strings + strings_size)
++           G_THROW( "DjVu document is corrupted (DjVmDir)" );
+          file->id=ptr;
+          ptr+=file->id.length()+1;
+          if (file->flags & File::HAS_NAME)
+          {
+-            file->name=ptr;
+-            ptr+=file->name.length()+1;
+-         } else
++           file->name=ptr;
++           ptr+=file->name.length()+1;
++         }
++         else
+          {
+             file->name=file->id;
+          }
+          if (file->flags & File::HAS_TITLE)
+          {
+-            file->title=ptr;
+-       ptr+=file->title.length()+1;
+-         } else
+-       file->title=file->id;
+-   /* msr debug:  multipage file, file->title is null.  
++           file->title=ptr;
++           ptr+=file->title.length()+1;
++         }
++         else
++         {
++           file->title=file->id;
++         }
++         /* msr debug:  multipage file, file->title is null.  
+          DEBUG_MSG(file->name << ", " << file->id << ", " << file->title << ", " <<
+                    file->offset << ", " << file->size << ", " <<
+                    file->is_page() << "\n"); */
+       }
+ 
+-         // Check that there is only one file with SHARED_ANNO flag on
++      // Check that there is only one file with SHARED_ANNO flag on
+       int shared_anno_cnt=0;
+       for(pos=files_list;pos;++pos)
+       {
diff --git a/nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-15143.patch b/nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-15143.patch
new file mode 100644
index 000000000000..ef1905338fba
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-15143.patch
@@ -0,0 +1,39 @@
+commit b1f4e1b2187d9e5010cd01ceccf20b4a11ce723f
+Author: Leon Bottou <leon@bottou.org>
+Date:   Tue Mar 26 20:45:46 2019 -0400
+
+    fix for bug #297
+
+diff --git a/libdjvu/DjVmDir.cpp b/libdjvu/DjVmDir.cpp
+index 0a0fac6..5a49015 100644
+--- a/libdjvu/DjVmDir.cpp
++++ b/libdjvu/DjVmDir.cpp
+@@ -309,7 +309,7 @@ DjVmDir::decode(const GP<ByteStream> &gstr)
+       {
+          GP<File> file=files_list[pos];
+          if (ptr >= (const char*)strings + strings_size)
+-           G_THROW( "DjVu document is corrupted (DjVmDir)" );
++           G_THROW( ByteStream::EndOfFile );
+          file->id=ptr;
+          ptr+=file->id.length()+1;
+          if (file->flags & File::HAS_NAME)
+diff --git a/libdjvu/GBitmap.cpp b/libdjvu/GBitmap.cpp
+index 0e487f0..c2fdbe4 100644
+--- a/libdjvu/GBitmap.cpp
++++ b/libdjvu/GBitmap.cpp
+@@ -890,11 +890,13 @@ GBitmap::read_rle_raw(ByteStream &bs)
+   int c = 0;
+   while (n >= 0)
+     {
+-      bs.read(&h, 1);
++      if (bs.read(&h, 1) <= 0)
++        G_THROW( ByteStream::EndOfFile );
+       int x = h;
+       if (x >= (int)RUNOVERFLOWVALUE)
+         {
+-          bs.read(&h, 1);
++          if (bs.read(&h, 1) <= 0)
++            G_THROW( ByteStream::EndOfFile );
+           x = h + ((x - (int)RUNOVERFLOWVALUE) << 8);
+         }
+       if (c+x > ncolumns)
diff --git a/nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-15144.patch b/nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-15144.patch
new file mode 100644
index 000000000000..6094be883385
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-15144.patch
@@ -0,0 +1,111 @@
+commit e15d51510048927f172f1bf1f27ede65907d940d
+Author: Leon Bottou <leon@bottou.org>
+Date:   Mon Apr 8 22:25:55 2019 -0400
+
+    bug 299 fixed
+
+diff --git a/libdjvu/GContainer.h b/libdjvu/GContainer.h
+index 96b067c..0140211 100644
+--- a/libdjvu/GContainer.h
++++ b/libdjvu/GContainer.h
+@@ -550,52 +550,61 @@ public:
+ template <class TYPE> void
+ GArrayTemplate<TYPE>::sort(int lo, int hi)
+ {
+-  if (hi <= lo)
+-    return;
+-  if (hi > hibound || lo<lobound)
+-    G_THROW( ERR_MSG("GContainer.illegal_subscript") );
+   TYPE *data = (TYPE*)(*this);
+-  // Test for insertion sort
+-  if (hi <= lo + 50)
++  while(true)
+     {
+-      for (int i=lo+1; i<=hi; i++)
++      if (hi <= lo)
++        return;
++      if (hi > hibound || lo<lobound)
++        G_THROW( ERR_MSG("GContainer.illegal_subscript") );
++      // Test for insertion sort
++      if (hi <= lo + 50)
+         {
+-          int j = i;
+-          TYPE tmp = data[i];
+-          while ((--j>=lo) && !(data[j]<=tmp))
+-            data[j+1] = data[j];
+-          data[j+1] = tmp;
++          for (int i=lo+1; i<=hi; i++)
++            {
++              int j = i;
++              TYPE tmp = data[i];
++              while ((--j>=lo) && !(data[j]<=tmp))
++                data[j+1] = data[j];
++              data[j+1] = tmp;
++            }
++          return;
+         }
+-      return;
+-    }
+-  // -- determine suitable quick-sort pivot
+-  TYPE tmp = data[lo];
+-  TYPE pivot = data[(lo+hi)/2];
+-  if (pivot <= tmp)
+-    { tmp = pivot; pivot=data[lo]; }
+-  if (data[hi] <= tmp)
+-    { pivot = tmp; }
+-  else if (data[hi] <= pivot)
+-    { pivot = data[hi]; }
+-  // -- partition set
+-  int h = hi;
+-  int l = lo;
+-  while (l < h)
+-    {
+-      while (! (pivot <= data[l])) l++;
+-      while (! (data[h] <= pivot)) h--;
+-      if (l < h)
++      // -- determine median-of-three pivot
++      TYPE tmp = data[lo];
++      TYPE pivot = data[(lo+hi)/2];
++      if (pivot <= tmp)
++        { tmp = pivot; pivot=data[lo]; }
++      if (data[hi] <= tmp)
++        { pivot = tmp; }
++      else if (data[hi] <= pivot)
++        { pivot = data[hi]; }
++      // -- partition set
++      int h = hi;
++      int l = lo;
++      while (l < h)
+         {
+-          tmp = data[l];
+-          data[l] = data[h];
+-          data[h] = tmp;
+-          l = l+1;
+-          h = h-1;
++          while (! (pivot <= data[l])) l++;
++          while (! (data[h] <= pivot)) h--;
++          if (l < h)
++            {
++              tmp = data[l];
++              data[l] = data[h];
++              data[h] = tmp;
++              l = l+1;
++              h = h-1;
++            }
++        }
++      // -- recurse, small partition first
++      //    tail-recursion elimination
++      if (h - lo <= hi - l) {
++        sort(lo,h);
++        lo = l; // sort(l,hi)
++      } else {
++        sort(l,hi);
++        hi = h; // sort(lo,h)
+       }
+     }
+-  // -- recursively restart
+-  sort(lo, h);
+-  sort(l, hi);
+ }
+ 
+ template<class TYPE> inline TYPE&
diff --git a/nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-15145.patch b/nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-15145.patch
new file mode 100644
index 000000000000..01108f9ee738
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-15145.patch
@@ -0,0 +1,28 @@
+commit 9658b01431cd7ff6344d7787f855179e73fe81a7
+Author: Leon Bottou <leon@bottou.org>
+Date:   Mon Apr 8 22:55:38 2019 -0400
+
+    fix bug #298
+
+diff --git a/libdjvu/GBitmap.h b/libdjvu/GBitmap.h
+index e8e0c9b..ca89a19 100644
+--- a/libdjvu/GBitmap.h
++++ b/libdjvu/GBitmap.h
+@@ -566,7 +566,7 @@ GBitmap::operator[](int row)
+ {
+   if (!bytes) 
+     uncompress();
+-  if (row<0 || row>=nrows) {
++  if (row<0 || row>=nrows || !bytes) {
+ #ifndef NDEBUG
+     if (zerosize < bytes_per_row + border)
+       G_THROW( ERR_MSG("GBitmap.zero_small") );
+@@ -581,7 +581,7 @@ GBitmap::operator[](int row) const
+ {
+   if (!bytes) 
+     ((GBitmap*)this)->uncompress();
+-  if (row<0 || row>=nrows) {
++  if (row<0 || row>=nrows || !bytes) {
+ #ifndef NDEBUG
+     if (zerosize < bytes_per_row + border)
+       G_THROW( ERR_MSG("GBitmap.zero_small") );
diff --git a/nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-18804.patch b/nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-18804.patch
new file mode 100644
index 000000000000..132fed794888
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/djvulibre/CVE-2019-18804.patch
@@ -0,0 +1,32 @@
+commit c8bec6549c10ffaa2f2fbad8bbc629efdf0dd125
+Author: Leon Bottou <leon@bottou.org>
+Date:   Thu Oct 17 22:20:31 2019 -0400
+
+    Fixed bug 309
+
+diff --git a/libdjvu/IW44EncodeCodec.cpp b/libdjvu/IW44EncodeCodec.cpp
+index 00752a0..f81eaeb 100644
+--- a/libdjvu/IW44EncodeCodec.cpp
++++ b/libdjvu/IW44EncodeCodec.cpp
+@@ -405,7 +405,7 @@ filter_fv(short *p, int w, int h, int rowsize, int scale)
+   int y = 0;
+   int s = scale*rowsize;
+   int s3 = s+s+s;
+-  h = ((h-1)/scale)+1;
++  h = (h>0) ? ((h-1)/scale)+1 : 0;
+   y += 1;
+   p += s;
+   while (y-3 < h)
+diff --git a/tools/ddjvu.cpp b/tools/ddjvu.cpp
+index 6d0df3b..7109952 100644
+--- a/tools/ddjvu.cpp
++++ b/tools/ddjvu.cpp
+@@ -279,7 +279,7 @@ render(ddjvu_page_t *page, int pageno)
+       prect.h = (ih * 100) / dpi;
+     }
+   /* Process aspect ratio */
+-  if (flag_aspect <= 0)
++  if (flag_aspect <= 0 && iw>0 && ih>0)
+     {
+       double dw = (double)iw / prect.w;
+       double dh = (double)ih / prect.h;
diff --git a/nixpkgs/pkgs/applications/misc/djvulibre/default.nix b/nixpkgs/pkgs/applications/misc/djvulibre/default.nix
new file mode 100644
index 000000000000..afb7b6cf1391
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/djvulibre/default.nix
@@ -0,0 +1,45 @@
+{ stdenv
+, fetchurl
+, libjpeg
+, libtiff
+, librsvg
+, libiconv
+}:
+
+stdenv.mkDerivation rec {
+  pname = "djvulibre";
+  version = "3.5.27";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/djvu/${pname}-${version}.tar.gz";
+    sha256 = "0psh3zl9dj4n4r3lx25390nx34xz0bg0ql48zdskhq354ljni5p6";
+  };
+
+  outputs = [ "bin" "dev" "out" ];
+
+  buildInputs = [
+    libjpeg
+    libtiff
+    librsvg
+    libiconv
+  ];
+
+  patches = [
+    ./CVE-2019-18804.patch
+    # This one is needed to make the following
+    # two CVE patches apply cleanly
+    ./fix_hongfuzz_crash.patch
+    ./CVE-2019-15142.patch
+    ./CVE-2019-15143.patch
+    ./CVE-2019-15144.patch
+    ./CVE-2019-15145.patch
+  ];
+
+  meta = with stdenv.lib; {
+    description = "The big set of CLI tools to make/modify/optimize/show/export DJVU files";
+    homepage = "http://djvu.sourceforge.net";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ Anton-Latukha ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/djvulibre/fix_hongfuzz_crash.patch b/nixpkgs/pkgs/applications/misc/djvulibre/fix_hongfuzz_crash.patch
new file mode 100644
index 000000000000..609b41cd9db7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/djvulibre/fix_hongfuzz_crash.patch
@@ -0,0 +1,51 @@
+commit 89d71b01d606e57ecec2c2930c145bb20ba5bbe3
+Author: Leon Bottou <leon@bottou.org>
+Date:   Fri Jul 13 08:46:22 2018 -0400
+
+    fix hongfuzz crash.
+
+diff --git a/libdjvu/DjVmDir.cpp b/libdjvu/DjVmDir.cpp
+index d322323..a6a39e0 100644
+--- a/libdjvu/DjVmDir.cpp
++++ b/libdjvu/DjVmDir.cpp
+@@ -299,7 +299,13 @@ DjVmDir::decode(const GP<ByteStream> &gstr)
+          memcpy((char*) strings+strings_size, buffer, length);
+       }
+       DEBUG_MSG("size of decompressed names block=" << strings.size() << "\n");
+-   
++      if (strings[strings.size()-1] != 0)
++        {
++         int strings_size=strings.size();
++         strings.resize(strings_size+1);
++         strings[strings_size] = 0;
++        }
++      
+          // Copy names into the files
+       const char * ptr=strings;
+       for(pos=files_list;pos;++pos)
+diff --git a/libdjvu/miniexp.cpp b/libdjvu/miniexp.cpp
+index 6a5cd90..828addc 100644
+--- a/libdjvu/miniexp.cpp
++++ b/libdjvu/miniexp.cpp
+@@ -1065,7 +1065,7 @@ print_c_string(const char *s, char *d, int flags, size_t len)
+       c = (unsigned char)(*s++);
+       if (char_quoted(c, flags))
+         {
+-          char buffer[10];
++          char buffer[16]; /* 10+1 */
+           static const char *tr1 = "\"\\tnrbf";
+           static const char *tr2 = "\"\\\t\n\r\b\f";
+           buffer[0] = buffer[1] = 0;
+diff --git a/tools/csepdjvu.cpp b/tools/csepdjvu.cpp
+index 7ed13ad..fab9472 100644
+--- a/tools/csepdjvu.cpp
++++ b/tools/csepdjvu.cpp
+@@ -1834,7 +1834,7 @@ main(int argc, const char **argv)
+                 ByteStream::create(GURL::Filename::UTF8(arg),"rb");
+               BufferByteStream ibs(*fbs);
+               do {
+-                char pagename[16];
++                char pagename[20];
+                 sprintf(pagename, "p%04d.djvu", ++pageno);
+                 if (opts.verbose > 1)
+                   DjVuPrintErrorUTF8("%s","--------------------\n");
diff --git a/nixpkgs/pkgs/applications/misc/dmensamenu/default.nix b/nixpkgs/pkgs/applications/misc/dmensamenu/default.nix
new file mode 100644
index 000000000000..cf02efdcece5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dmensamenu/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, buildPythonApplication, fetchFromGitHub, substituteAll, requests, dmenu }:
+
+buildPythonApplication rec {
+  pname = "dmensamenu";
+  version = "1.2.1";
+
+  src = fetchFromGitHub {
+    owner = "dotlambda";
+    repo = "dmensamenu";
+    rev = version;
+    sha256 = "15c8g2vdban3dw3g979icypgpx52irpvv39indgk19adicgnzzqp";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./dmenu-path.patch;
+      inherit dmenu;
+    })
+  ];
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  # No tests implemented
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/dotlambda/dmensamenu";
+    description = "Print German canteen menus using dmenu and OpenMensa";
+    license = licenses.mit;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/dmensamenu/dmenu-path.patch b/nixpkgs/pkgs/applications/misc/dmensamenu/dmenu-path.patch
new file mode 100644
index 000000000000..1508e5142d29
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dmensamenu/dmenu-path.patch
@@ -0,0 +1,13 @@
+diff --git a/dmensamenu/dmensamenu.py b/dmensamenu/dmensamenu.py
+index 7df49f2..052ef1b 100644
+--- a/dmensamenu/dmensamenu.py
++++ b/dmensamenu/dmensamenu.py
+@@ -99,7 +99,7 @@ def main():
+     parser.add_argument('--city',
+                         help='When searching for a canteen, only show the ones from the city specified'
+                             +' (case-insensitive).')
+-    parser.add_argument('--dmenu', metavar='CMD', default='dmenu -i -l "$lines" -p "$date"',
++    parser.add_argument('--dmenu', metavar='CMD', default='@dmenu@/bin/dmenu -i -l "$lines" -p "$date"',
+                         help='Command to execute. '
+                              'Can be used to pass custom parameters to dmenu. '
+                              'The shell variable $lines will be set to the number of items on the menu '
diff --git a/nixpkgs/pkgs/applications/misc/dmenu/default.nix b/nixpkgs/pkgs/applications/misc/dmenu/default.nix
new file mode 100644
index 000000000000..e4d0c82c4176
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dmenu/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, libX11, libXinerama, libXft, zlib, patches ? [ ./xim.patch ] }:
+
+stdenv.mkDerivation rec {
+  name = "dmenu-4.9";
+
+  src = fetchurl {
+    url = "https://dl.suckless.org/tools/${name}.tar.gz";
+    sha256 = "0ia9nqr83bv6x247q30bal0v42chcj9qcjgv59xs6xj46m7iz5xk";
+  };
+
+  buildInputs = [ libX11 libXinerama zlib libXft ];
+
+  inherit patches;
+
+  postPatch = ''
+    sed -ri -e 's!\<(dmenu|dmenu_path|stest)\>!'"$out/bin"'/&!g' dmenu_run
+    sed -ri -e 's!\<stest\>!'"$out/bin"'/&!g' dmenu_path
+  '';
+
+  preConfigure = ''
+    sed -i "s@PREFIX = /usr/local@PREFIX = $out@g" config.mk
+  '';
+
+  makeFlags = [ "CC:=$(CC)" ];
+
+  meta = with stdenv.lib; {
+      description = "A generic, highly customizable, and efficient menu for the X Window System";
+      homepage = "https://tools.suckless.org/dmenu";
+      license = licenses.mit;
+      maintainers = with maintainers; [ pSub globin ];
+      platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/dmenu/wayland.nix b/nixpkgs/pkgs/applications/misc/dmenu/wayland.nix
new file mode 100644
index 000000000000..ca2e6f56e841
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dmenu/wayland.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, meson, ninja, cairo, pango, pkg-config, wayland-protocols
+, glib, wayland, libxkbcommon, makeWrapper
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dmenu-wayland-unstable";
+  version = "2020-04-03";
+
+  src = fetchFromGitHub {
+    owner = "nyyManni";
+    repo = "dmenu-wayland";
+    rev = "550a7c39f3f925b803d51c616609c8cb6c0ea543";
+    sha256 = "0az3w1csn4x6mjyacg6lf70kykdfqamic3hbr57mj83i5jjv0jlv";
+  };
+
+  outputs = [ "out" "man" ];
+
+  nativeBuildInputs = [ meson ninja pkg-config makeWrapper ];
+  buildInputs = [ cairo pango wayland-protocols glib wayland libxkbcommon ];
+
+  postInstall = ''
+    wrapProgram $out/bin/dmenu-wl_run \
+      --prefix PATH : $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    license = licenses.mit;
+    platforms = platforms.linux;
+    description = "dmenu for wayland-compositors";
+    homepage = "https://github.com/nyyManni/dmenu-wayland";
+    maintainers = with maintainers; [ ma27 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/dmenu/xim.patch b/nixpkgs/pkgs/applications/misc/dmenu/xim.patch
new file mode 100644
index 000000000000..f77d48324da4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dmenu/xim.patch
@@ -0,0 +1,31 @@
+Revert https://git.suckless.org/dmenu/commit/377bd37e212b1ec4c03a481245603c6560d0be22.html
+
+Upstream has reverted it after v4.9 in https://git.suckless.org/dmenu/commit/db6093f6ec1bb884f7540f2512935b5254750b30.html
+--- a/dmenu.c
++++ b/dmenu.c
+@@ -552,7 +552,7 @@ run(void)
+ 	XEvent ev;
+ 
+ 	while (!XNextEvent(dpy, &ev)) {
+-		if (XFilterEvent(&ev, None))
++		if (XFilterEvent(&ev, win))
+ 			continue;
+ 		switch(ev.type) {
+ 		case Expose:
+@@ -664,7 +664,6 @@ setup(void)
+ 	                XNClientWindow, win, XNFocusWindow, win, NULL);
+ 
+ 	XMapRaised(dpy, win);
+-	XSetInputFocus(dpy, win, RevertToParent, CurrentTime);
+ 	if (embed) {
+ 		XSelectInput(dpy, parentwin, FocusChangeMask);
+ 		if (XQueryTree(dpy, parentwin, &dw, &w, &dws, &du) && dws) {
+@@ -730,8 +729,6 @@ main(int argc, char *argv[])
+ 
+ 	if (!setlocale(LC_CTYPE, "") || !XSupportsLocale())
+ 		fputs("warning: no locale support\n", stderr);
+-	if (!XSetLocaleModifiers(""))
+-		fputs("warning: no locale modifiers support\n", stderr);
+ 	if (!(dpy = XOpenDisplay(NULL)))
+ 		die("cannot open display");
+ 	screen = DefaultScreen(dpy);
diff --git a/nixpkgs/pkgs/applications/misc/dockbarx/default.nix b/nixpkgs/pkgs/applications/misc/dockbarx/default.nix
new file mode 100644
index 000000000000..97510bc3b457
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dockbarx/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, pythonPackages, gnome2, keybinder }:
+
+pythonPackages.buildPythonApplication rec {
+  ver = "0.93";
+  name = "dockbarx-${ver}";
+
+  src = fetchFromGitHub {
+    owner = "M7S";
+    repo = "dockbarx";
+    rev = ver;
+    sha256 = "1h1g2vag5vnx87sa1f0qi8rq7wlr2ymvkrdr08kk7cma4wk0x6hg";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py                                --replace /usr/                   ""
+    substituteInPlace setup.py                                --replace '"/", "usr", "share",'  '"share",'
+    substituteInPlace dockbarx/applets.py                     --replace /usr/share/             $out/share/
+    substituteInPlace dockbarx/dockbar.py                     --replace /usr/share/             $out/share/
+    substituteInPlace dockbarx/iconfactory.py                 --replace /usr/share/             $out/share/
+    substituteInPlace dockbarx/theme.py                       --replace /usr/share/             $out/share/
+    substituteInPlace dockx_applets/battery_status.py         --replace /usr/share/             $out/share/
+    substituteInPlace dockx_applets/namebar.py                --replace /usr/share/             $out/share/
+    substituteInPlace dockx_applets/namebar_window_buttons.py --replace /usr/share/             $out/share/
+    substituteInPlace dockx_applets/volume-control.py         --replace /usr/share/             $out/share/
+  '';
+
+  propagatedBuildInputs = (with pythonPackages; [ pygtk pyxdg dbus-python pillow xlib ])
+    ++ (with gnome2; [ gnome_python gnome_python_desktop ])
+    ++ [ keybinder ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://launchpad.net/dockbar/";
+    description = "DockBarX is a lightweight taskbar / panel replacement for Linux which works as a stand-alone dock";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.volth ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/doing/Gemfile b/nixpkgs/pkgs/applications/misc/doing/Gemfile
new file mode 100644
index 000000000000..2706a85e9d89
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/doing/Gemfile
@@ -0,0 +1,2 @@
+source 'https://rubygems.org'
+gem 'doing', '1.0.10pre'
diff --git a/nixpkgs/pkgs/applications/misc/doing/Gemfile.lock b/nixpkgs/pkgs/applications/misc/doing/Gemfile.lock
new file mode 100644
index 000000000000..1b969869f76c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/doing/Gemfile.lock
@@ -0,0 +1,25 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    chronic (0.10.2)
+    deep_merge (1.2.1)
+    doing (1.0.10pre)
+      chronic (~> 0.10, >= 0.10.2)
+      deep_merge
+      gli (~> 2.17.1)
+      haml (= 4.0.3)
+      json (~> 1.8.1)
+    gli (2.17.1)
+    haml (4.0.3)
+      tilt
+    json (1.8.6)
+    tilt (2.0.8)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  doing (= 1.0.10pre)
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/applications/misc/doing/default.nix b/nixpkgs/pkgs/applications/misc/doing/default.nix
new file mode 100644
index 000000000000..48e45328f67b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/doing/default.nix
@@ -0,0 +1,25 @@
+{ lib, bundlerEnv, ruby, bundlerUpdateScript
+}:
+
+bundlerEnv {
+  pname = "doing";
+  version = (import ./gemset.nix).doing.version;
+
+  inherit ruby;
+  gemdir = ./.;
+
+  passthru.updateScript = bundlerUpdateScript "doing";
+
+  meta = with lib; {
+    description = "A command line tool for keeping track of what you’re doing and tracking what you’ve done.";
+    longDescription = ''
+      doing is a basic CLI for adding and listing "what was I doing" reminders
+      in a TaskPaper-formatted text file. It allows for multiple
+      sections/categories and flexible output formatting.
+    '';
+    homepage    = "https://brettterpstra.com/projects/doing/";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ ktf nicknovitski ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/doing/gemset.nix b/nixpkgs/pkgs/applications/misc/doing/gemset.nix
new file mode 100644
index 000000000000..b30a124bb58b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/doing/gemset.nix
@@ -0,0 +1,60 @@
+{
+  chronic = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hrdkn4g8x7dlzxwb1rfgr8kw3bp4ywg5l4y4i9c2g5cwv62yvvn";
+      type = "gem";
+    };
+    version = "0.10.2";
+  };
+  deep_merge = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1q3picw7zx1xdkybmrnhmk2hycxzaa0jv4gqrby1s90dy5n7fmsb";
+      type = "gem";
+    };
+    version = "1.2.1";
+  };
+  doing = {
+    dependencies = ["chronic" "deep_merge" "gli" "haml" "json"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1y42yc7h45sz9hqj3g1dd77ipx58l7v64i7mrsj3is2f5rszd1rv";
+      type = "gem";
+    };
+    version = "1.0.10pre";
+  };
+  gli = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0g7g3lxhh2b4h4im58zywj9vcfixfgndfsvp84cr3x67b5zm4kaq";
+      type = "gem";
+    };
+    version = "2.17.1";
+  };
+  haml = {
+    dependencies = ["tilt"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1l9zhfdk9z7xjfdp108r9fw4xa55hflin7hh3lpafbf9bdz96knr";
+      type = "gem";
+    };
+    version = "4.0.3";
+  };
+  json = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qmj7fypgb9vag723w1a49qihxrcf5shzars106ynw2zk352gbv5";
+      type = "gem";
+    };
+    version = "1.8.6";
+  };
+  tilt = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0020mrgdf11q23hm1ddd6fv691l51vi10af00f137ilcdb2ycfra";
+      type = "gem";
+    };
+    version = "2.0.8";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/misc/doomseeker/default.nix b/nixpkgs/pkgs/applications/misc/doomseeker/default.nix
new file mode 100644
index 000000000000..999904a21d3c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/doomseeker/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, mkDerivation, cmake, fetchFromBitbucket, pkgconfig, qtbase, qttools, qtmultimedia, zlib, bzip2, xxd }:
+
+mkDerivation {
+  pname = "doomseeker";
+  version = "2018-03-05";
+
+  src = fetchFromBitbucket {
+    owner = "Doomseeker";
+    repo = "doomseeker";
+    rev = "c2c7f37b1afb";
+    sha256 = "17fna3a604miqsvply3klnmypps4ifz8axgd3pj96z46ybxs8akw";
+  };
+
+  patches = [ ./fix_paths.patch ./qt_build_fix.patch ];
+
+  nativeBuildInputs = [ cmake qttools pkgconfig xxd ];
+  buildInputs = [ qtbase qtmultimedia zlib bzip2 ];
+
+  hardeningDisable = stdenv.lib.optional stdenv.isDarwin "format";
+
+  meta = with stdenv.lib; {
+    homepage = "http://doomseeker.drdteam.org/";
+    description = "Multiplayer server browser for many Doom source ports";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.MP2E ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/doomseeker/fix_paths.patch b/nixpkgs/pkgs/applications/misc/doomseeker/fix_paths.patch
new file mode 100644
index 000000000000..08654c2384cb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/doomseeker/fix_paths.patch
@@ -0,0 +1,40 @@
+diff -ru3 source-old/src/core/datapaths.cpp source-new/src/core/datapaths.cpp
+--- source-old/src/core/datapaths.cpp	1970-01-01 03:00:01.000000000 +0300
++++ source-new/src/core/datapaths.cpp	2018-03-04 00:10:25.247262567 +0300
+@@ -335,7 +335,7 @@
+ 	paths.append(workingDirectory());
+ 	paths.append("./");
+ #ifndef Q_OS_WIN32
+-	paths.append(INSTALL_PREFIX "/" INSTALL_LIBDIR "/doomseeker/");
++	paths.append(INSTALL_PREFIX "/lib/doomseeker/");
+ #endif
+ 	paths = uniquePaths(paths);
+ 	return Strings::combineManyPaths(paths, "engines/");
+diff -ru3 source-old/src/core/pathfinder/pathfinder.cpp source-new/src/core/pathfinder/pathfinder.cpp
+--- source-old/src/core/pathfinder/pathfinder.cpp	1970-01-01 03:00:01.000000000 +0300
++++ source-new/src/core/pathfinder/pathfinder.cpp	2018-03-04 00:09:34.862556976 +0300
+@@ -128,9 +128,7 @@
+ 		<< DataPaths::programFilesDirectory(DataPaths::x64)
+ 		<< DataPaths::programFilesDirectory(DataPaths::x86);
+ #else
+-	paths << "/usr/bin" << "/usr/local/bin" << "/usr/share/bin"
+-		<< "/usr/games/" << "/usr/local/games/"
+-		<< "/usr/share/games/" << gDefaultDataPaths->workingDirectory() << ".";
++	paths << gDefaultDataPaths->workingDirectory() << ".";
+ #endif
+ 	QStringList pathsCopy(paths);
+ 	foreach (const QString &path, pathsCopy)
+diff -ru3 source-old/src/core/pathfinder/wadpathfinder.cpp source-new/src/core/pathfinder/wadpathfinder.cpp
+--- source-old/src/core/pathfinder/wadpathfinder.cpp	1970-01-01 03:00:01.000000000 +0300
++++ source-new/src/core/pathfinder/wadpathfinder.cpp	2018-03-04 00:09:56.822865339 +0300
+@@ -84,10 +84,6 @@
+ 		QStringList defaultPaths()

+ 		{

+ 			QStringList paths;

+-			#ifdef Q_OS_UNIX

+-			paths << "/usr/local/share/games/doom/"

+-				<< "/usr/share/games/doom/";

+-			#endif

+ 			return paths;

+ 		}

+ };

diff --git a/nixpkgs/pkgs/applications/misc/doomseeker/qt_build_fix.patch b/nixpkgs/pkgs/applications/misc/doomseeker/qt_build_fix.patch
new file mode 100644
index 000000000000..e21b53b3cc53
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/doomseeker/qt_build_fix.patch
@@ -0,0 +1,47 @@
+diff -r c2c7f37b1afb src/core/gui/irc/ircdock.cpp
+--- a/src/core/gui/irc/ircdock.cpp	Tue Mar 06 00:14:23 2018 +0100
++++ b/src/core/gui/irc/ircdock.cpp	Sat Jul 28 16:53:04 2018 -0700
+@@ -32,6 +32,7 @@
+ #include <QInputDialog>
+ #include <QMessageBox>
+ #include <QToolBar>
++#include <QTabBar>
+ 
+ DClass<IRCDock> : public Ui::IRCDock
+ {
+diff -r c2c7f37b1afb src/core/gui/logdock.cpp
+--- a/src/core/gui/logdock.cpp	Tue Mar 06 00:14:23 2018 +0100
++++ b/src/core/gui/logdock.cpp	Sat Jul 28 16:53:04 2018 -0700
+@@ -21,6 +21,8 @@
+ // Copyright (C) 2009 "Zalewa" <zalewapl@gmail.com>
+ //------------------------------------------------------------------------------
+ 
++#include <QAction>
++
+ #include "clipboard.h"
+ #include "logdock.h"
+ #include "log.h"
+diff -r c2c7f37b1afb src/core/gui/serverdetailsdock.cpp
+--- a/src/core/gui/serverdetailsdock.cpp	Tue Mar 06 00:14:23 2018 +0100
++++ b/src/core/gui/serverdetailsdock.cpp	Sat Jul 28 16:53:04 2018 -0700
+@@ -21,6 +21,7 @@
+ // Copyright (C) 2014 Braden "Blzut3" Obrzut <admin@maniacsvault.net>
+ //------------------------------------------------------------------------------
+ 
++#include <QAction>
+ #include <QBoxLayout>
+ 
+ #include "serverdetailsdock.h"
+diff -r c2c7f37b1afb src/core/gui/serverfilterdock.cpp
+--- a/src/core/gui/serverfilterdock.cpp	Tue Mar 06 00:14:23 2018 +0100
++++ b/src/core/gui/serverfilterdock.cpp	Sat Jul 28 16:53:04 2018 -0700
+@@ -20,6 +20,9 @@
+ //------------------------------------------------------------------------------
+ // Copyright (C) 2011 "Zalewa" <zalewapl@gmail.com>
+ //------------------------------------------------------------------------------
++
++#include <QAction>
++
+ #include "serverfilterdock.h"
+ #include "ui_serverfilterdock.h"
+ 
diff --git a/nixpkgs/pkgs/applications/misc/dotfiles/default.nix b/nixpkgs/pkgs/applications/misc/dotfiles/default.nix
new file mode 100644
index 000000000000..b515074fd475
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dotfiles/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, pythonPackages }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "dotfiles";
+  version = "0.6.4";
+
+  src = pythonPackages.fetchPypi {
+    inherit version pname;
+    sha256 = "03qis6m9r2qh00sqbgwsm883s4bj1ibwpgk86yh4l235mdw8jywv";
+  };
+
+  # No tests in archive
+  doCheck = false;
+
+  checkInputs = with pythonPackages; [ pytest ];
+  propagatedBuildInputs = with pythonPackages; [ click ];
+
+  meta = with stdenv.lib; {
+    description = "Easily manage your dotfiles";
+    homepage = "https://github.com/jbernard/dotfiles";
+    license = licenses.isc;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/dozenal/default.nix b/nixpkgs/pkgs/applications/misc/dozenal/default.nix
new file mode 100644
index 000000000000..05d3ddb7cfba
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dozenal/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, fetchFromGitHub, ncurses, hdate, lua5_2 }:
+
+stdenv.mkDerivation rec {
+  version = "12010904";
+  pname = "dozenal";
+  src = fetchFromGitHub {
+    owner = "dgoodmaniii";
+    repo = "dozenal";
+    rev = "v${version}";
+    sha256 = "1ic63gpdda762x6ks3al71dwgmsy2isicqyr2935bd245jx8s209";
+  };
+  makeFlags = [
+              # author do not use configure and prefix directly using $prefix
+              "prefix=$(out)"
+              # graphical version of dozdc requires xforms, which is not i nixpkgs so I turned it down
+              "XFORMS_FLAGS=-UXFORMS"
+              "LUALIB=-llua"
+              "bindir=$(prefix)/bin/"
+            ];
+  # some include hardcodes the lua libraries path. This is a patch for that
+  patches = [ ./lua-header.patch ];
+  preBuild = "cd dozenal";
+  buildInputs = [ ncurses hdate lua5_2 ];
+  # I remove gdozdc, as I didn't figure all it's dependency yet.
+  postInstall = "rm $out/bin/gdozdc";
+
+  meta = {
+    description = "A complete suite of dozenal (base twelve) programs";
+    longDescription = ''
+      Programs
+
+      doz --- a converter; converts decimal numbers into dozenal. Accepts
+         input in standard or exponential notation (i.e., "1492.2" or "1.4922e3").
+      dec --- a converter; converts dozenal numbers into decimal. Accepts input
+         in standard or exponential notation (i.e., "X44;4" or "X;444e2").
+      dozword --- converts a dozenal number (integers only) into words,
+         according to the Pendlebury system.
+      dozdc --- a full-featured scientific calculator which works in the
+         dozenal base. RPN command line.
+      tgmconv --- a converter for all standard measurements; converts to and
+         from TGM, Imperial, customary, and SI metric.
+      dozpret --- a pretty-printer for dozenal numbers; inserts spacing (or
+         other characters) as desired, and can also transform transdecimal digits
+         from 'X' to 'E' into any character or sequence of characters desired.
+      dozdate --- a more-or-less drop-in replacement for GNU and BSD date, it
+         outputs the date and time in dozenal, as well as containing some TGM
+         extensions.
+      dozstring --- a simple byte converter; absorbs a string either from
+         standard input or a command line argument, leaving it identical but
+         for the numbers, which it converts into dozenal. Options for padding
+         and for not converting specific numbers.
+      doman --- a converter which takes a dozenal integer and
+         emits its equivalent in a non-place-value system, such as
+         Roman numerals.  Arbitrary ranks and symbols may be used.
+         Defaults to dozenal Roman numerals.
+    '';
+    homepage = "https://github.com/dgoodmaniii/dozenal/";
+    maintainers = with stdenv.lib.maintainers; [ CharlesHD ];
+    license = stdenv.lib.licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/dozenal/lua-header.patch b/nixpkgs/pkgs/applications/misc/dozenal/lua-header.patch
new file mode 100644
index 000000000000..45b76e159a11
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dozenal/lua-header.patch
@@ -0,0 +1,16 @@
+diff -ruN dozenal-12010904/dozenal/dozcal/call_lua.c dozenal-patched/dozenal/dozcal/call_lua.c
+--- dozenal-12010904/dozenal/dozcal/call_lua.c	2017-09-04 19:25:01.000000000 +0200
++++ dozenal-patched/dozenal/dozcal/call_lua.c	2018-06-13 10:19:57.821950327 +0200
+@@ -38,9 +38,9 @@
+ #include"utility.h"
+ #include"conv.h"
+ #include"proc_date.h"
+-#include<lua5.2/lua.h>
+-#include<lua5.2/lauxlib.h>
+-#include<lua5.2/lualib.h>
++#include<lua.h>
++#include<lauxlib.h>
++#include<lualib.h>
+ 
+ void bail(lua_State *L, int err_code, char *filename);
+ int file_prefix(char **s, char *t);
diff --git a/nixpkgs/pkgs/applications/misc/dstask/default.nix b/nixpkgs/pkgs/applications/misc/dstask/default.nix
new file mode 100644
index 000000000000..fae7809d25a2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dstask/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "dstask";
+  version = "0.18";
+
+  src = fetchFromGitHub {
+    owner = "naggie";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "16z5zlfj955pzsj0l58835slvpchdaq2vbyx2fjzi6y9xn1z2nd1";
+  };
+
+  # Set vendorSha256 to null because dstask vendors its dependencies (meaning
+  # that third party dependencies are stored in the repository).
+  #
+  # Ref <https://github.com/NixOS/nixpkgs/pull/87383#issuecomment-633204382>
+  # and <https://github.com/NixOS/nixpkgs/blob/d4226e3a4b5fcf988027147164e86665d382bbfa/pkgs/development/go-modules/generic/default.nix#L18>
+  vendorSha256 = null;
+
+  # The ldflags reduce the executable size by stripping some debug stuff.
+  # The other variables are set so that the output of dstask version shows the
+  # git ref and the release version from github.
+  # Ref <https://github.com/NixOS/nixpkgs/pull/87383#discussion_r432097657>
+  buildFlagsArray = [ ''
+    -ldflags=-w -s
+    -X "github.com/naggie/dstask.VERSION=${version}"
+    -X "github.com/naggie/dstask.GIT_COMMIT=v${version}"
+  '' ];
+
+  subPackages = [ "cmd/dstask.go" ];
+
+  meta = with stdenv.lib; {
+    description = "Command line todo list with super-reliable git sync";
+    homepage = src.meta.homepage;
+    license = licenses.mit;
+    maintainers = with maintainers; [ stianlagstad foxit64 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/dunst/default.nix b/nixpkgs/pkgs/applications/misc/dunst/default.nix
new file mode 100644
index 000000000000..7da2ae421d7a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dunst/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, lib, fetchFromGitHub, makeWrapper
+, pkgconfig, which, perl, libXrandr
+, cairo, dbus, systemd, gdk-pixbuf, glib, libX11, libXScrnSaver
+, libXinerama, libnotify, pango, xorgproto, librsvg, dunstify ? false
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dunst";
+  version = "1.4.1";
+
+  src = fetchFromGitHub {
+    owner = "dunst-project";
+    repo = "dunst";
+    rev = "v${version}";
+    sha256 = "0xjj1f2jr1ja5grj6wrx5jjz1sx5fpqnvkw7nqi4452j3nc4p4l2";
+  };
+
+  nativeBuildInputs = [ perl pkgconfig which systemd makeWrapper ];
+
+  buildInputs = [
+    cairo dbus gdk-pixbuf glib libX11 libXScrnSaver
+    libXinerama libnotify pango xorgproto librsvg libXrandr
+  ];
+
+  outputs = [ "out" "man" ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "VERSION=$(version)"
+    "SERVICEDIR_DBUS=$(out)/share/dbus-1/services"
+    "SERVICEDIR_SYSTEMD=$(out)/lib/systemd/user"
+  ];
+
+  buildFlags = if dunstify then [ "dunstify" ] else [];
+
+  postInstall = lib.optionalString dunstify ''
+    install -Dm755 dunstify $out/bin
+  '' + ''
+    wrapProgram $out/bin/dunst \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE"
+  '';
+
+  meta = with lib; {
+    description = "Lightweight and customizable notification daemon";
+    homepage = "https://dunst-project.org/";
+    license = licenses.bsd3;
+    # NOTE: 'unix' or even 'all' COULD work too, I'm not sure
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ domenkozar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/dupeguru/default.nix b/nixpkgs/pkgs/applications/misc/dupeguru/default.nix
new file mode 100644
index 000000000000..0e7155f374d1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dupeguru/default.nix
@@ -0,0 +1,62 @@
+{stdenv, python3Packages, gettext, qt5, fetchFromGitHub}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "dupeguru";
+  version = "4.0.4";
+
+  format = "other";
+
+  src = fetchFromGitHub {
+    owner = "arsenetar";
+    repo = "dupeguru";
+    rev = "${version}";
+    sha256 = "0ma4f1c6vmpz8gi4sdy43x1ik7wh42wayvk1iq520d3i714kfcpy";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    gettext
+    python3Packages.pyqt5
+    qt5.wrapQtAppsHook
+  ];
+
+  pythonPath = with python3Packages; [
+    pyqt5
+    send2trash
+    sphinx
+    polib
+    hsaudiotag3k
+  ];
+
+  makeFlags = [
+    "PREFIX=${placeholder ''out''}"
+    "NO_VENV=1"
+  ];
+
+  # TODO: package pytest-monkeyplus for running tests
+  # https://github.com/NixOS/nixpkgs/pull/75054/files#r357690123
+  doCheck = false;
+
+  # Avoid double wrapping Python programs.
+  dontWrapQtApps = true;
+
+  preFixup = ''
+    # TODO: A bug in python wrapper
+    # see https://github.com/NixOS/nixpkgs/pull/75054#discussion_r357656916
+    makeWrapperArgs="''${qtWrapperArgs[@]}"
+  '';
+
+  postFixup = ''
+    # Executable in $out/bin is a symlink to $out/share/dupeguru/run.py
+    # so wrapPythonPrograms hook does not handle it automatically.
+    wrapPythonProgramsIn "$out/share/dupeguru" "$out $pythonPath"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "GUI tool to find duplicate files in a system";
+    homepage = "https://github.com/arsenetar/dupeguru";
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.novoxudonoser ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/eaglemode/default.nix b/nixpkgs/pkgs/applications/misc/eaglemode/default.nix
new file mode 100644
index 000000000000..052e290120d7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/eaglemode/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, perl, libX11, libXinerama, libjpeg, libpng, libtiff, pkgconfig,
+librsvg, glib, gtk2, libXext, libXxf86vm, poppler, xineLib, ghostscript, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "eaglemode";
+  version = "0.94.2";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/eaglemode/${pname}-${version}.tar.bz2";
+    sha256 = "10zxih7gmyhq0az1mnsw2x563l4bbwcns794s4png8rf4d6hjszm";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ perl libX11 libXinerama libjpeg libpng libtiff
+    librsvg glib gtk2 libXxf86vm libXext poppler xineLib ghostscript makeWrapper ];
+
+  # The program tries to dlopen Xxf86vm, Xext and Xinerama, so we use the
+  # trick on NIX_LDFLAGS and dontPatchELF to make it find them.
+  # I use 'yes y' to skip a build error linking with xineLib,
+  # because xine stopped exporting "_x_vo_new_port"
+  #  https://sourceforge.net/projects/eaglemode/forums/forum/808824/topic/5115261
+  buildPhase = ''
+    export NIX_LDFLAGS="$NIX_LDFLAGS -lXxf86vm -lXext -lXinerama"
+    perl make.pl build
+  '';
+
+  dontPatchELF = true;
+  # eaglemode expects doc to be in the root directory
+  forceShare = [ "man" "info" ];
+
+  installPhase = ''
+    perl make.pl install dir=$out
+    wrapProgram $out/bin/eaglemode --set EM_DIR "$out" --prefix LD_LIBRARY_PATH : "$out/lib" --prefix PATH : "${ghostscript}/bin"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://eaglemode.sourceforge.net";
+    description = "Zoomable User Interface";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/electron-cash/default.nix b/nixpkgs/pkgs/applications/misc/electron-cash/default.nix
new file mode 100644
index 000000000000..1616c082c017
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/electron-cash/default.nix
@@ -0,0 +1,88 @@
+{ lib, fetchFromGitHub, python3Packages, qtbase, wrapQtAppsHook, secp256k1 }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "electron-cash";
+  version = "4.0.14";
+
+  src = fetchFromGitHub {
+    owner = "Electron-Cash";
+    repo = "Electron-Cash";
+    rev = version;
+    sha256 = "1dp7cj1185h6xfz6jzh0iq58zvg3wq9hl96bkgxkf5h4ygni2vm6";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    dnspython
+    ecdsa
+    jsonrpclib-pelix
+    matplotlib
+    pbkdf2
+    pyaes
+    pycrypto
+    pyqt5
+    pysocks
+    qrcode
+    requests
+    tlslite-ng
+    qdarkstyle
+    stem
+
+    # plugins
+    keepkey
+    trezor
+    btchip
+  ];
+
+  nativeBuildInputs = [ wrapQtAppsHook ];
+
+  postPatch = ''
+    substituteInPlace contrib/requirements/requirements.txt \
+      --replace "qdarkstyle==2.6.8" "qdarkstyle<3"
+
+    substituteInPlace setup.py \
+      --replace "(share_dir" "(\"share\""
+  '';
+
+  checkInputs = with python3Packages; [
+    pytest
+  ];
+
+  checkPhase = ''
+    unset HOME
+    pytest lib/tests
+  '';
+
+  postInstall = ''
+    substituteInPlace $out/share/applications/electron-cash.desktop \
+      --replace "Exec=electron-cash" "Exec=$out/bin/electron-cash"
+  '';
+
+  # If secp256k1 wasn't added to the library path, the following warning is given:
+  #
+  #   Electron Cash was unable to find the secp256k1 library on this system.
+  #   Elliptic curve cryptography operations will be performed in slow
+  #   Python-only mode.
+  postFixup = ''
+    wrapQtApp $out/bin/electron-cash \
+      --prefix LD_LIBRARY_PATH : ${secp256k1}/lib
+  '';
+
+  doInstallCheck = true;
+  installCheckPhase = ''
+    $out/bin/electron-cash help >/dev/null
+  '';
+
+  meta = with lib; {
+    description = "A Bitcoin Cash SPV Wallet";
+    longDescription = ''
+      An easy-to-use Bitcoin Cash client featuring wallets generated from
+      mnemonic seeds (in addition to other, more advanced, wallet options)
+      and the ability to perform transactions without downloading a copy
+      of the blockchain.
+    '';
+    homepage = "https://www.electroncash.org/";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ lassulus nyanloutre ];
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/electrum/dash.nix b/nixpkgs/pkgs/applications/misc/electrum/dash.nix
new file mode 100644
index 000000000000..33a8284744e5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/electrum/dash.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchurl, python2Packages }:
+
+python2Packages.buildPythonApplication rec {
+  version = "2.9.3.1";
+  pname = "electrum-dash";
+
+  src = fetchurl {
+    url = "https://github.com/akhavr/electrum-dash/releases/download/${version}/Electrum-DASH-${version}.tar.gz";
+    #"https://github.com/dashpay/electrum-dash/releases/download/v${version}/Electrum-DASH-${version}.tar.gz";
+    sha256 = "9b7ac205f63fd4bfb15d77a34a4451ef82caecf096f31048a7603bd276dfc33e";
+  };
+
+  propagatedBuildInputs = with python2Packages; [
+    dnspython
+    ecdsa
+    pbkdf2
+    protobuf
+    pyasn1
+    pyasn1-modules
+    pycrypto
+    pyqt4
+    qrcode
+    requests
+    pyaes
+    tlslite-ng
+    x11_hash
+    mnemonic
+    jsonrpclib
+
+    # plugins
+    trezor
+  ];
+
+  preInstall = ''
+    mkdir -p $out/share
+    sed -i 's@usr_share = .*@usr_share = os.getenv("out")+"/share"@' setup.py
+    pyrcc4 icons.qrc -o gui/qt/icons_rc.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Electrum DASH";
+    homepage = "https://github.com/dashpay/electrum-dash";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ np ];
+    knownVulnerabilities = [ "CVE-2018-1000022" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/electrum/default.nix b/nixpkgs/pkgs/applications/misc/electrum/default.nix
new file mode 100644
index 000000000000..d1011548b2a6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/electrum/default.nix
@@ -0,0 +1,151 @@
+{ stdenv, fetchurl, fetchFromGitHub, wrapQtAppsHook, python3, python3Packages, zbar, secp256k1
+, enableQt ? !stdenv.isDarwin
+
+
+# for updater.nix
+, writeScript
+, common-updater-scripts
+, bash
+, coreutils
+, curl
+, gnugrep
+, gnupg
+, gnused
+, nix
+}:
+
+let
+  version = "3.3.8";
+
+  libsecp256k1_name =
+    if stdenv.isLinux then "libsecp256k1.so.0"
+    else if stdenv.isDarwin then "libsecp256k1.0.dylib"
+    else "libsecp256k1${stdenv.hostPlatform.extensions.sharedLibrary}";
+
+  libzbar_name =
+    if stdenv.isLinux then "libzbar.so.0"
+    else "libzbar${stdenv.hostPlatform.extensions.sharedLibrary}";
+
+  # Not provided in official source releases, which are what upstream signs.
+  tests = fetchFromGitHub {
+    owner = "spesmilo";
+    repo = "electrum";
+    rev = version;
+    sha256 = "1di8ba77kgapcys0d7h5nx1qqakv3s60c6sp8skw8p69ramsl73c";
+
+    extraPostFetch = ''
+      mv $out ./all
+      mv ./all/electrum/tests $out
+    '';
+  };
+in
+
+python3Packages.buildPythonApplication {
+  pname = "electrum";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://download.electrum.org/${version}/Electrum-${version}.tar.gz";
+    sha256 = "1g00cj1pmckd4xis8r032wmraiv3vd3zc803hnyxa2bnhj8z3bg2";
+  };
+
+  postUnpack = ''
+    # can't symlink, tests get confused
+    cp -ar ${tests} $sourceRoot/electrum/tests
+  '';
+
+  nativeBuildInputs = stdenv.lib.optionals enableQt [ wrapQtAppsHook ];
+
+  propagatedBuildInputs = with python3Packages; [
+    aiorpcx
+    aiohttp
+    aiohttp-socks
+    dnspython
+    ecdsa
+    jsonrpclib-pelix
+    matplotlib
+    pbkdf2
+    protobuf
+    pyaes
+    pycryptodomex
+    pysocks
+    qrcode
+    requests
+    tlslite-ng
+
+    # plugins
+    ckcc-protocol
+    keepkey
+    trezor
+    btchip
+
+    # TODO plugins
+    # amodem
+  ] ++ stdenv.lib.optionals enableQt [ pyqt5 qdarkstyle ];
+
+  preBuild = ''
+    sed -i 's,usr_share = .*,usr_share = "'$out'/share",g' setup.py
+    substituteInPlace ./electrum/ecc_fast.py \
+      --replace ${libsecp256k1_name} ${secp256k1}/lib/libsecp256k1${stdenv.hostPlatform.extensions.sharedLibrary}
+  '' + (if enableQt then ''
+    substituteInPlace ./electrum/qrscanner.py \
+      --replace ${libzbar_name} ${zbar.lib}/lib/libzbar${stdenv.hostPlatform.extensions.sharedLibrary}
+    sed -i 's/qdarkstyle<2.7/qdarkstyle<3.0/' contrib/requirements/requirements.txt
+  '' else ''
+    sed -i '/qdarkstyle/d' contrib/requirements/requirements.txt
+  '');
+
+  postInstall = stdenv.lib.optionalString stdenv.isLinux ''
+    # Despite setting usr_share above, these files are installed under
+    # $out/nix ...
+    mv $out/${python3.sitePackages}/nix/store"/"*/share $out
+    rm -rf $out/${python3.sitePackages}/nix
+
+    substituteInPlace $out/share/applications/electrum.desktop \
+      --replace 'Exec=sh -c "PATH=\"\\$HOME/.local/bin:\\$PATH\"; electrum %u"' \
+                "Exec=$out/bin/electrum %u" \
+      --replace 'Exec=sh -c "PATH=\"\\$HOME/.local/bin:\\$PATH\"; electrum --testnet %u"' \
+                "Exec=$out/bin/electrum --testnet %u"
+
+  '';
+
+  postFixup = stdenv.lib.optionalString enableQt ''
+    wrapQtApp $out/bin/electrum
+  '';
+
+  checkInputs = with python3Packages; [ pytest ];
+
+  checkPhase = ''
+    py.test electrum/tests
+    $out/bin/electrum help >/dev/null
+  '';
+
+  passthru.updateScript = import ./update.nix {
+    inherit (stdenv) lib;
+    inherit
+      writeScript
+      common-updater-scripts
+      bash
+      coreutils
+      curl
+      gnupg
+      gnugrep
+      gnused
+      nix
+    ;
+  };
+
+  meta = with stdenv.lib; {
+    description = "A lightweight Bitcoin wallet";
+    longDescription = ''
+      An easy-to-use Bitcoin client featuring wallets generated from
+      mnemonic seeds (in addition to other, more advanced, wallet options)
+      and the ability to perform transactions without downloading a copy
+      of the blockchain.
+    '';
+    homepage = "https://electrum.org/";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ ehmry joachifm np ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/electrum/ltc.nix b/nixpkgs/pkgs/applications/misc/electrum/ltc.nix
new file mode 100644
index 000000000000..b7c655caaaf4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/electrum/ltc.nix
@@ -0,0 +1,57 @@
+{ stdenv
+, fetchurl
+, python3Packages
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "electrum-ltc";
+  version = "3.3.8.1";
+
+  src = fetchurl {
+    url = "https://electrum-ltc.org/download/Electrum-LTC-${version}.tar.gz";
+    sha256 = "0kxcx1xf6h9z8x0k483d6ykpnmfr30n6z3r6lgqxvbl42pq75li7";
+  };
+
+  nativeBuildInputs = with python3Packages; [ pyqt5 ];
+
+  propagatedBuildInputs = with python3Packages; [
+    pyaes
+    ecdsa
+    pbkdf2
+    requests
+    qrcode
+    py_scrypt
+    pyqt5
+    protobuf
+    dnspython
+    jsonrpclib-pelix
+    pysocks
+  ];
+
+  preBuild = ''
+    sed -i 's,usr_share = .*,usr_share = "'$out'/share",g' setup.py
+    pyrcc5 icons.qrc -o gui/qt/icons_rc.py
+    # Recording the creation timestamps introduces indeterminism to the build
+    sed -i '/Created: .*/d' gui/qt/icons_rc.py
+  '';
+
+  checkPhase = ''
+    $out/bin/electrum-ltc help >/dev/null
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Litecoin thin client";
+    longDescription = ''
+      Electrum-LTC is a simple, but powerful Litecoin wallet. A twelve-word
+      security passphrase (or “seed”) leaves intruders stranded and your peace
+      of mind intact. Keep it on paper, or in your head... and never worry
+      about losing your litecoins to theft or hardware failure. No waiting, no
+      lengthy blockchain downloads and no syncing to the network.
+    '';
+    homepage = "https://electrum-ltc.org/";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/electrum/update.nix b/nixpkgs/pkgs/applications/misc/electrum/update.nix
new file mode 100644
index 000000000000..247fabe3891f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/electrum/update.nix
@@ -0,0 +1,59 @@
+{ lib
+, writeScript
+, common-updater-scripts
+, bash
+, coreutils
+, curl
+, gnugrep
+, gnupg
+, gnused
+, nix
+}:
+
+with lib;
+
+let
+  downloadPageUrl = "https://download.electrum.org";
+
+  signingKeys = ["6694 D8DE 7BE8 EE56 31BE D950 2BD5 824B 7F94 70E6"];
+in
+
+writeScript "update-electrum" ''
+#! ${bash}/bin/bash
+
+set -eu -o pipefail
+
+export PATH=${makeBinPath [
+  common-updater-scripts
+  coreutils
+  curl
+  gnugrep
+  gnupg
+  gnused
+  nix
+]}
+
+version=$(curl -L --list-only -- '${downloadPageUrl}' \
+    | grep -Po '<a href="\K([[:digit:]]+\.?)+' \
+    | sort -Vu \
+    | tail -n1)
+
+srcName=Electrum-$version
+srcFile=$srcName.tar.gz
+srcUrl="${downloadPageUrl}/$version/$srcFile"
+sigUrl=$srcUrl.asc
+sigFile=$srcFile.asc
+
+[[ -e "$srcFile" ]] || curl -L -o "$srcFile" -- "$srcUrl"
+[[ -e "$sigFile" ]] || curl -L -o "$sigFile" -- "$sigUrl"
+
+export GNUPGHOME=$PWD/gnupg
+mkdir -m 700 -p "$GNUPGHOME"
+
+gpg --batch --recv-keys ${concatStringsSep " " (map (x: "'${x}'") signingKeys)}
+gpg --batch --verify "$sigFile" "$srcFile"
+
+sha256=$(nix-prefetch-url --type sha256 "file://$PWD/$srcFile")
+
+update-source-version electrum "$version" "$sha256"
+''
diff --git a/nixpkgs/pkgs/applications/misc/elogind/default.nix b/nixpkgs/pkgs/applications/misc/elogind/default.nix
new file mode 100644
index 000000000000..78dc54497dd9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/elogind/default.nix
@@ -0,0 +1,82 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, meson
+, ninja
+, m4
+, gperf
+, getent
+, libcap
+, gettext
+, pkgconfig
+, udev
+, eudev
+, libxslt
+, python3
+, docbook5
+, docbook_xsl
+, docbook_xsl_ns
+, docbook_xml_dtd_42
+, docbook_xml_dtd_45
+
+# Defaulting to false because usually the rationale for using elogind is to
+# use it in situation where a systemd dependency does not work (especially
+# when building with musl, which elogind explicitly supports).
+, enableSystemd ? false
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "elogind";
+  version = "243.7";
+
+  src = fetchFromGitHub {
+    owner = "elogind";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0cihdf7blhncm2359qxli24j9l3dkn15gjys5vpjwny80zlym5ma";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    m4
+    pkgconfig
+    gperf
+    getent
+    libcap
+    gettext
+    libxslt.bin # xsltproc
+    docbook5 docbook_xsl docbook_xsl_ns docbook_xml_dtd_42 docbook_xml_dtd_45 # needed for docbook without Internet
+    (python3.withPackages (p: with p; [ lxml ]))  # fixes: man/meson.build:111:0: ERROR: Could not execute command "/build/source/tools/xml_helper.py".
+  ];
+
+  buildInputs =
+    if enableSystemd then [ udev ] else [ eudev ];
+
+  # Inspired by the systemd `preConfigure`.
+  # Conceptually we should patch all files required during the build, but not scripts
+  # supposed to run at run-time of the software (important for cross-compilation).
+  # This package seems to have mostly scripts that run at build time.
+  preConfigure = ''
+    for dir in tools src/test; do
+      patchShebangs $dir
+    done
+
+    patchShebangs src/basic/generate-*.{sh,py}
+  '';
+
+  mesonFlags = [
+    "-Drootprefix=${placeholder "out"}"
+    "-Dsysconfdir=${placeholder "out"}/etc"
+  ];
+
+  meta = {
+    homepage = "https://github.com/elogind/elogind";
+    description = ''The systemd project's "logind", extracted to a standalone package'';
+    platforms = platforms.linux; # probably more
+    license = licenses.lgpl21Plus;
+    maintainers = with maintainers; [ nh2 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/emem/default.nix b/nixpkgs/pkgs/applications/misc/emem/default.nix
new file mode 100644
index 000000000000..e0fcc221100e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/emem/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, jdk }:
+
+stdenv.mkDerivation rec {
+  pname = "emem";
+  version = "0.2.50";
+
+  inherit jdk;
+
+  src = fetchurl {
+    url = "https://github.com/ebzzry/${pname}/releases/download/v${version}/${pname}.jar";
+    sha256 = "18x3s3jrph8k3pc75jgwkfqazygpsx93zjxx68zms58my17cybh1";
+  };
+
+  phases = [ "buildPhase" "installPhase" ];
+
+  buildPhase = ''
+    mkdir -p $out/bin $out/share/java
+  '';
+
+  installPhase = ''
+    cp $src $out/share/java/${pname}.jar
+
+    cat > $out/bin/${pname} << EOF
+#! $SHELL
+$jdk/bin/java -jar $out/share/java/${pname}.jar "\$@"
+EOF
+
+    chmod +x $out/bin/${pname}
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/ebzzry/emem";
+    description = "A trivial Markdown to HTML converter";
+    license = licenses.epl10;
+    maintainers = [ maintainers.ebzzry ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/epdfview/default.nix b/nixpkgs/pkgs/applications/misc/epdfview/default.nix
new file mode 100644
index 000000000000..7cbae2271aea
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/epdfview/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, fetchpatch, pkgconfig, gtk2, poppler }:
+
+stdenv.mkDerivation rec {
+  pname = "epdfview";
+  version = "0.1.8";
+
+  src = fetchurl {
+    url = "mirror://debian/pool/main/e/epdfview/epdfview_${version}.orig.tar.gz";
+    sha256 = "0ibyb60a0b4n34bsjgvhdw8yf24463ky0hpmf6a2jjqsbm5g4v64";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gtk2 poppler ];
+
+  hardeningDisable = [ "format" ];
+
+  patches = [ (fetchpatch {
+                name = "epdfview-0.1.8-glib2-headers.patch";
+                url = "https://projects.archlinux.org/svntogit/community.git/plain/trunk/epdfview-0.1.8-glib2-headers.patch?h=packages/epdfview&id=40ba115c860bdec31d03a30fa594a7ec2864d634";
+                sha256 = "17df6s1zij5ficj67xszq6kd88cy620az3ic55065ccnmsd73f8h";
+              })
+              (fetchpatch {
+                name = "epdfview-0.1.8-modern-cups.patch";
+                url = "https://projects.archlinux.org/svntogit/community.git/plain/trunk/epdfview-0.1.8-modern-cups.patch?h=packages/epdfview&id=40ba115c860bdec31d03a30fa594a7ec2864d634";
+                sha256 = "07yvgvai2bvbr5fa1mv6lg7nqr0qyryjn1xyjlh8nidg9k9vv001";
+              })
+            ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://packages.debian.org/wheezy/epdfview";
+    description = "A lightweight PDF document viewer using Poppler and GTK";
+    longDescription = ''
+      ePDFView is a free lightweight PDF document viewer using Poppler and
+      GTK libraries. The aim of ePDFView is to make a simple PDF document
+      viewer, in the lines of Evince but without using the Gnome libraries.
+    '';
+    license = licenses.gpl2;
+    maintainers = [ maintainers.astsmtl ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/epr/default.nix b/nixpkgs/pkgs/applications/misc/epr/default.nix
new file mode 100644
index 000000000000..f67c15f0a994
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/epr/default.nix
@@ -0,0 +1,21 @@
+{ lib, python3Packages, fetchFromGitHub }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "epr";
+  version = "2.3.0b";
+
+  src = fetchFromGitHub {
+    owner = "wustho";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1a6md3015284hzmx0sby5kl59p7lwv73sq7sid35vrr15zrl0aw7";
+  };
+
+  meta = with lib; {
+    description = "CLI Epub Reader";
+    homepage = "https://github.com/wustho/epr";
+    license = licenses.mit;
+    maintainers = [ maintainers.filalex77 ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/et/default.nix b/nixpkgs/pkgs/applications/misc/et/default.nix
new file mode 100644
index 000000000000..2cf8813aac40
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/et/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, pkgconfig, libnotify, gdk-pixbuf }:
+
+stdenv.mkDerivation rec {
+  pname = "et";
+  version = "0.1.2";
+
+  src = fetchFromGitHub {
+    owner = "geistesk";
+    repo = "et";
+    rev = version;
+    sha256 = "0i0lgmnly8n7y4y6pb10pxgxyz8s5zk26k8z1g1578v1wan01lnq";
+  };
+
+  buildInputs = [ libnotify gdk-pixbuf ];
+  nativeBuildInputs = [ pkgconfig ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp et $out/bin
+    cp et-status.sh $out/bin/et-status
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Minimal libnotify-based (egg) timer";
+    homepage = "https://github.com/geistesk/et";
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ geistesk ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/eterm/default.nix b/nixpkgs/pkgs/applications/misc/eterm/default.nix
new file mode 100644
index 000000000000..b51acd9fa728
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/eterm/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl
+, libX11, libXext, libXaw
+, pkgconfig, imlib2, libast }:
+
+stdenv.mkDerivation rec {
+  pname = "eterm";
+  version = "0.9.6";
+  srcName = "Eterm-${version}";
+
+  src = fetchurl {
+    url = "http://www.eterm.org/download/${srcName}.tar.gz";
+    sha256 = "0g71szjklkiczxwzbjjfm59y6v9w4hp8mg7cy99z1g7qcjm0gfbj";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libX11 libXext libXaw imlib2 ];
+  propagatedBuildInputs = [ libast ];
+
+  meta = with stdenv.lib; {
+    description = "Terminal emulator";
+    homepage = "http://www.eterm.org";
+    license = licenses.bsd2;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/etesync-dav/default.nix b/nixpkgs/pkgs/applications/misc/etesync-dav/default.nix
new file mode 100644
index 000000000000..d4e015f31d72
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/etesync-dav/default.nix
@@ -0,0 +1,33 @@
+{ lib, python3Packages, radicale2 }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "etesync-dav";
+  version = "0.17.0";
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "0lyjv8rknwbx5b5nvq5bgw26lhkymib4cvmv3s3469mrnn2c0ksp";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    etesync
+    flask
+    flask_wtf
+    radicale2
+  ];
+
+  checkInputs = with python3Packages; [
+    pytest
+  ];
+
+  checkPhase = ''
+    pytest
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.etesync.com/";
+    description = "Secure, end-to-end encrypted, and privacy respecting sync for contacts, calendars and tasks";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ valodim ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/eureka-editor/default.nix b/nixpkgs/pkgs/applications/misc/eureka-editor/default.nix
new file mode 100644
index 000000000000..d72aeb629c38
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/eureka-editor/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchzip, fltk, zlib, xdg_utils, xorg, libjpeg, libGL }:
+
+stdenv.mkDerivation rec {
+  pname = "eureka-editor";
+  version = "1.21";
+  shortver = "121";
+
+  src = fetchzip {
+    url = "mirror://sourceforge/eureka-editor/Eureka/${version}/eureka-${shortver}-source.tar.gz";
+    sha256 = "0fpj13aq4wh3f7473cdc5jkf1c71jiiqmjc0ihqa0nm3hic1d4yv";
+  };
+
+  buildInputs = [ fltk zlib xdg_utils libjpeg xorg.libXinerama libGL ];
+
+  enableParallelBuilding = true;
+
+  preBuild = ''
+    substituteInPlace src/main.cc \
+      --replace /usr/local $out
+    substituteInPlace Makefile \
+      --replace /usr/local $out \
+      --replace "-o root " ""
+  '';
+
+  preInstall = ''
+    mkdir -p $out/bin $out/share/applications $out/share/icons $out/man/man6
+    cp misc/eureka.desktop $out/share/applications
+    cp misc/eureka.ico $out/share/icons
+    cp misc/eureka.6 $out/man/man6
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://eureka-editor.sourceforge.net";
+    description = "A map editor for the classic DOOM games, and a few related games such as Heretic and Hexen";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ neonfuz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/evilvte/default.nix b/nixpkgs/pkgs/applications/misc/evilvte/default.nix
new file mode 100644
index 000000000000..7a5284a527a6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/evilvte/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchgit, makeWrapper, pkgconfig,
+  gnome2, glib, pango, cairo, gdk-pixbuf, atk, freetype, xorg,
+  configH ? ""
+}:
+
+stdenv.mkDerivation {
+  pname = "evilvte";
+  version = "0.5.2-20140827";
+
+  src = fetchgit {
+    url = "https://github.com/caleb-/evilvte.git";
+    rev = "8dfa41e26bc640dd8d8c7317ff7d04e3c01ded8a";
+    sha256 = "70f1d4234d077121e2223a735d749d1b53f0b84393507b635b8a37c3716e94d3";
+  };
+
+  buildInputs = [
+    gnome2.vte glib pango gnome2.gtk cairo gdk-pixbuf atk freetype xorg.libX11
+    xorg.xorgproto xorg.libXext makeWrapper pkgconfig
+  ];
+
+  buildPhase = ''
+    cat >src/config.h <<EOF
+    ${configH}
+    EOF
+    make
+  '';
+
+  meta = with stdenv.lib; {
+    description = "VTE based, highly customizable terminal emulator";
+    homepage = "http://www.calno.com/evilvte";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.bodil ];
+    platforms = platforms.linux;
+    knownVulnerabilities = [
+      "https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=854585"
+    ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/evtest-qt/default.nix b/nixpkgs/pkgs/applications/misc/evtest-qt/default.nix
new file mode 100644
index 000000000000..86f2d0070923
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/evtest-qt/default.nix
@@ -0,0 +1,25 @@
+{ mkDerivation, lib, qtbase, cmake, fetchFromGitHub }:
+
+mkDerivation rec {
+  pname = "evtest-qt";
+  version = "0.2.0";
+
+  src = fetchFromGitHub {
+    owner = "Grumbel";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1wfzkgq81764qzxgk0y5vvpxcrb3icvrr4dd4mj8njrqgbwmn0mw";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ qtbase ];
+
+  meta = with lib; {
+    description = "Simple input device tester for linux with Qt GUI";
+    homepage = "https://github.com/Grumbel/evtest-qt";
+    maintainers = with maintainers; [ alexarice ];
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/evtest/default.nix b/nixpkgs/pkgs/applications/misc/evtest/default.nix
new file mode 100644
index 000000000000..d6d20367b060
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/evtest/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchgit, autoreconfHook, pkgconfig, libxml2 }:
+
+stdenv.mkDerivation rec {
+  pname = "evtest";
+  version = "1.34";
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ libxml2 ];
+
+  src = fetchgit {
+    url = "git://anongit.freedesktop.org/${pname}";
+    rev = "refs/tags/${pname}-${version}";
+    sha256 = "168gdhzj11f4nk94a6z696sm8v1njzwww69bn6wr97l17897913g";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Simple tool for input event debugging";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/exercism/default.nix b/nixpkgs/pkgs/applications/misc/exercism/default.nix
new file mode 100644
index 000000000000..d983458a7ce1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/exercism/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "exercism";
+  version = "3.0.13";
+
+  src = fetchFromGitHub {
+    owner  = "exercism";
+    repo   = "cli";
+    rev    = "v${version}";
+    sha256 = "17gvz9a0sn4p36hf4l77bxhhfipf4x998iay31layqwbnzmb4xy7";
+  };
+
+  vendorSha256 = "0b2m9xkac60k5rbxmb03cxf530m23av14pnsjk8067l998sm4vqi";
+
+  subPackages = [ "./exercism" ];
+
+  meta = with stdenv.lib; {
+   inherit (src.meta) homepage;
+   description = "A Go based command line tool for exercism.io";
+   license     = licenses.mit;
+   maintainers = [ maintainers.rbasso ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/misc/extract_url/default.nix b/nixpkgs/pkgs/applications/misc/extract_url/default.nix
new file mode 100644
index 000000000000..9daaf7268c39
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/extract_url/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, lib, fetchFromGitHub, makeWrapper, perlPackages
+, cursesSupport ? true
+, uriFindSupport ? true
+}:
+
+let
+  perlDeps =
+    [ perlPackages.MIMEtools perlPackages.HTMLParser ]
+    ++ lib.optional cursesSupport perlPackages.CursesUI
+    ++ lib.optional uriFindSupport perlPackages.URIFind;
+
+in stdenv.mkDerivation rec {
+  pname = "extract_url";
+  version = "1.6.2";
+
+  src = fetchFromGitHub {
+    owner = "m3m0ryh0l3";
+    repo = "extracturl";
+    rev = "v${version}";
+    sha256 = "05589lp15jmcpbj4y9a3hmf6n2gsqrm4ybcyh3hd4j6pc7hmnhny";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ perlPackages.perl ] ++ perlDeps;
+
+  makeFlags = [ "prefix=$(out)" ];
+  installFlags = [ "INSTALL=install" ];
+
+  postFixup = ''
+    wrapProgram "$out/bin/extract_url" \
+      --set PERL5LIB "${perlPackages.makeFullPerlPath perlDeps}"
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.memoryhole.net/~kyle/extract_url/";
+    description = "Extracts URLs from MIME messages or plain text";
+    license = licenses.bsd2;
+    maintainers = [ maintainers.qyliss ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/far2l/default.nix b/nixpkgs/pkgs/applications/misc/far2l/default.nix
new file mode 100644
index 000000000000..de2ed0d15964
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/far2l/default.nix
@@ -0,0 +1,88 @@
+{ stdenv, fetchFromGitHub, fetchpatch, makeWrapper, cmake, pkgconfig, wxGTK30, glib, pcre, m4, bash,
+  xdg_utils, gvfs, zip, unzip, gzip, bzip2, gnutar, p7zip, xz, imagemagick, darwin }:
+
+let
+  newer-colorer-schemes = fetchFromGitHub {
+    owner = "colorer";
+    repo = "Colorer-schemes";
+    rev = "7c831f5e94a90530ace8b2bb9916210e3a2fcda6"; # 2019-11-28 (far2l has older Colorer-schemes)
+    sha256 = "18vaahdz5i7xdf00c9h9kjjswm4jszywm8zkhva4c4ivr4qqnv2c";
+  };
+in
+stdenv.mkDerivation rec {
+  pname = "far2l";
+  version = "2019-12-14.git${builtins.substring 0 7 src.rev}";
+
+  src = fetchFromGitHub {
+    owner = "elfmz";
+    repo = "far2l";
+    rev = "dceaa3918ea2c5e43600bad3fc63f861b8d26fc4";
+    sha256 = "1ssd3hwz4b7vl4r858d9whl61cn23pgcamcjmvfa6ysf4x2b7sgi";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig m4 makeWrapper imagemagick ];
+
+  buildInputs = [ wxGTK30 glib pcre ]
+    ++ stdenv.lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Cocoa;
+
+  postPatch = stdenv.lib.optionalString stdenv.isLinux ''
+    substituteInPlace far2l/bootstrap/trash.sh \
+      --replace 'gvfs-trash'  '${gvfs}/bin/gvfs-trash'
+  '' + stdenv.lib.optionalString stdenv.isDarwin ''
+    substituteInPlace far2l/CMakeLists.txt \
+      --replace "-framework System" -lSystem
+  '' + ''
+    echo 'echo ${version}' > far2l/bootstrap/scripts/vbuild.sh
+    substituteInPlace far2l/bootstrap/open.sh              \
+      --replace 'xdg-open'    '${xdg_utils}/bin/xdg-open'
+    substituteInPlace far2l/vtcompletor.cpp                \
+      --replace '"/bin/bash"' '"${bash}/bin/bash"'
+    substituteInPlace multiarc/src/formats/zip/zip.cpp     \
+      --replace '"unzip '     '"${unzip}/bin/unzip '       \
+      --replace '"zip '       '"${zip}/bin/zip '
+    substituteInPlace multiarc/src/formats/7z/7z.cpp       \
+      --replace '"^7z '       '"^${p7zip}/lib/p7zip/7z '   \
+      --replace '"7z '        '"${p7zip}/lib/p7zip/7z '
+    substituteInPlace multiarc/src/formats/targz/targz.cpp \
+      --replace '"xz '        '"${xz}/bin/xz '             \
+      --replace '"gzip '      '"${gzip}/bin/gzip '         \
+      --replace '"bzip2 '     '"${bzip2}/bin/bzip2 '       \
+      --replace '"tar '       '"${gnutar}/bin/tar '
+
+    cp ${newer-colorer-schemes}/hrc/hrc/base/nix.hrc     colorer/configs/base/hrc/base/
+    cp ${newer-colorer-schemes}/hrc/hrc/base/cpp.hrc     colorer/configs/base/hrc/base/
+    cp ${newer-colorer-schemes}/hrc/hrc/inet/jscript.hrc colorer/configs/base/hrc/base/
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/applications $out/share/icons/hicolor/scalable/apps
+    cp -dpR install $out/share/far2l
+    mv $out/share/far2l/far2l $out/bin/
+    ln -s -r --force $out/bin/far2l $out/share/far2l/far2l_askpass
+    ln -s -r --force $out/bin/far2l $out/share/far2l/far2l_sudoapp
+
+    cp ../far2l/DE/far2l.desktop $out/share/applications/far2l.desktop
+    substituteInPlace $out/share/applications/far2l.desktop --replace \''${CMAKE_INSTALL_PREFIX} "$out"
+
+    cp ../far2l/DE/icons/hicolor/1024x1024/apps/far2l.svg $out/share/icons/hicolor/scalable/apps/
+    convert -size 128x128 ../far2l/DE/icons/far2l.svg $out/share/icons/far2l.png
+    for size in 16x16 24x24 32x32 48x48 64x64 72x72 96x96 128x128 192x192 256x256 512x512 1024x1024; do
+      mkdir -p $out/share/icons/hicolor/$size/apps
+      convert -size $size ../far2l/DE/icons/hicolor/$size/apps/far2l.svg $out/share/icons/hicolor/$size/apps/far2l.png
+    done
+  '' + stdenv.lib.optionalString stdenv.isDarwin ''
+    wrapProgram $out/bin/far2l --argv0 $out/bin/far2l
+  '';
+
+  stripDebugList = [ "bin" "share" ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "An orthodox file manager";
+    homepage = "https://github.com/elfmz/far2l";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.volth ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/fbmenugen/0001-Fix-paths.patch b/nixpkgs/pkgs/applications/misc/fbmenugen/0001-Fix-paths.patch
new file mode 100644
index 000000000000..b52aeafb5f36
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/fbmenugen/0001-Fix-paths.patch
@@ -0,0 +1,69 @@
+From 76c25147328d71960c70bbdd5a9396aac4a362a2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jos=C3=A9=20Romildo=20Malaquias?= <malaquias@gmail.com>
+Date: Wed, 20 May 2020 14:19:07 -0300
+Subject: [PATCH] Fix paths
+
+---
+ fbmenugen | 14 ++++++--------
+ 1 file changed, 6 insertions(+), 8 deletions(-)
+
+diff --git a/fbmenugen b/fbmenugen
+index 46a18dc..0c8eb08 100755
+--- a/fbmenugen
++++ b/fbmenugen
+@@ -214,9 +214,7 @@ my %CONFIG = (
+ 
+ #<<<
+         desktop_files_paths => [
+-            '/usr/share/applications',
+-            '/usr/local/share/applications',
+-            '/usr/share/applications/kde4',
++            '/run/current-system/sw/share/applications',
+             "$home_dir/.local/share/applications",
+         ],
+ #>>>
+@@ -232,7 +230,7 @@ my %CONFIG = (
+     force_icon_size  => 0,
+     generic_fallback => 0,
+     locale_support   => 1,
+-    use_gtk3         => 0,
++    use_gtk3         => 1,
+ 
+     VERSION => $version,
+              );
+@@ -252,7 +250,7 @@ if (not -e $config_file) {
+ }
+ 
+ if (not -e $schema_file) {
+-    if (-e (my $etc_schema_file = "/etc/xdg/$pkgname/schema.pl")) {
++    if (-e (my $etc_schema_file = "@fbmenugen@/etc/xdg/$pkgname/schema.pl")) {
+         require File::Copy;
+         File::Copy::copy($etc_schema_file, $schema_file)
+           or warn "$0: can't copy file `$etc_schema_file' to `$schema_file': $!\n";
+@@ -570,7 +568,7 @@ EXIT
+         $generated_menu .= begin_category(@{$schema->{fluxbox}}) . <<"FOOTER";
+ [config] (Configure)
+ [submenu] (System Styles) {Choose a style...}
+-  [stylesdir] (/usr/share/fluxbox/styles)
++  [stylesdir] (@fluxbox@/share/fluxbox/styles)
+ [end]
+ [submenu] (User Styles) {Choose a style...}
+   [stylesdir] (~/.fluxbox/styles)
+@@ -580,12 +578,12 @@ EXIT
+   [exec] (Screenshot - JPG) {import screenshot.jpg && display -resize 50% screenshot.jpg}
+   [exec] (Screenshot - PNG) {import screenshot.png && display -resize 50% screenshot.png}
+   [exec] (Run) {fbrun}
+-  [exec] (Regen Menu) {fluxbox-generate_menu}
++  [exec] (Regen Menu) {@fluxbox@/bin/fluxbox-generate_menu}
+ [end]
+ [commanddialog] (Fluxbox Command)
+   [reconfig] (Reload config)
+   [restart] (Restart)
+-  [exec] (About) {(fluxbox -v; fluxbox -info | sed 1d) | xmessage -file - -center}
++  [exec] (About) {(@fluxbox@/bin/fluxbox -v; @fluxbox@/bin/fluxbox -info | @gnused@/bin/sed 1d) | @xmessage@/bin/xmessage -file - -center}
+   [separator]
+   [exit] (Exit)
+ [end]
+-- 
+2.26.2
+
diff --git a/nixpkgs/pkgs/applications/misc/fbmenugen/default.nix b/nixpkgs/pkgs/applications/misc/fbmenugen/default.nix
new file mode 100644
index 000000000000..fcf8191d3b70
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/fbmenugen/default.nix
@@ -0,0 +1,75 @@
+{ stdenv
+, fetchFromGitHub
+, fluxbox
+, gnused
+, makeWrapper
+, perlPackages
+, substituteAll
+, xorg
+, wrapGAppsHook
+}:
+
+perlPackages.buildPerlPackage rec {
+  pname = "fbmenugen";
+  version = "2020-05-20";
+
+  src = fetchFromGitHub {
+    owner = "trizen";
+    repo = pname;
+    rev = "ed9a680546edbb5b05086971b6a9f42a37cb485f";
+    sha256 = "1fikdl08a0s8d6k1ls1pzmw2rcwkfbbczsjfx6lr12ngd2bz222h";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./0001-Fix-paths.patch;
+      xmessage = xorg.xmessage;
+      inherit fluxbox gnused;
+    })
+  ];
+
+  outputs = [ "out" ];
+
+  nativeBuildInputs = [
+    makeWrapper
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    fluxbox
+    gnused
+    perlPackages.DataDump
+    perlPackages.FileDesktopEntry
+    perlPackages.Gtk3
+    perlPackages.LinuxDesktopFiles
+    perlPackages.perl
+    xorg.xmessage
+  ];
+
+  dontConfigure = true;
+
+  dontBuild = true;
+
+  postPatch = ''
+    substituteInPlace fbmenugen --subst-var-by fbmenugen $out
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    install -D -t $out/bin ${pname}
+    install -D -t $out/etc/xdg/${pname} schema.pl
+    runHook postInstall
+  '';
+
+  postFixup = ''
+    wrapProgram "$out/bin/${pname}" --prefix PERL5LIB : "$PERL5LIB"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/trizen/fbmenugen";
+    description = "Simple menu generator for the Fluxbox Window Manager";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/fbreader/default.nix b/nixpkgs/pkgs/applications/misc/fbreader/default.nix
new file mode 100644
index 000000000000..187988077435
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/fbreader/default.nix
@@ -0,0 +1,75 @@
+{ stdenv, fetchFromGitHub, fetchpatch, pkgconfig
+, bzip2, curl, expat, fribidi, libunibreak, sqlite, zlib
+, uiTarget ? if !stdenv.isDarwin then "desktop" else "macosx"
+, uiType ? if !stdenv.isDarwin then "qt4" else "cocoa"
+, qt4, gtk2
+, AppKit, Cocoa
+}:
+
+with stdenv.lib;
+
+assert elem uiTarget [ "desktop" "macosx" ];
+assert elem uiType [ "qt4" "gtk" "cocoa" ];
+assert uiTarget == "macosx" -> uiType == "cocoa";
+
+# Note: "qt" uiType option mentioned in ${src}/README.build is qt3,
+# which is way to old and no longer in nixpkgs.
+
+stdenv.mkDerivation {
+  name = "fbreader-${uiType}-0.99.6";
+
+  src = fetchFromGitHub {
+    owner = "geometer";
+    repo = "FBReader";
+    rev = "9e608db14372ae580beae4976eec7241fa069e75";
+    sha256 = "0lzafk02mv0cf2l2a61q5y4743zi913byik4bw1ix0gr1drnsa7y";
+  };
+
+  patches = [
+    ./typecheck.patch
+    (fetchpatch {
+      name = "curl-7_62.diff"; # see https://github.com/geometer/FBReader/pull/311
+      url = "https://github.com/geometer/FBReader/commit/b7c78e965d06f780.diff";
+      sha256 = "1dgnx9wps7hcf8fkidc7037vcf92fr3ccnjx7bgxm9x02j0hngjg";
+    })
+  ];
+
+  postPatch = ''
+    cat << EOF > makefiles/target.mk
+    TARGET_ARCH = ${uiTarget}
+    TARGET_STATUS = release
+    UI_TYPE = ${uiType}
+    EOF
+
+    substituteInPlace makefiles/arch/desktop.mk \
+      --replace ccache "" \
+      --replace moc-qt4 moc
+
+    # libunibreak supersedes liblinebreak
+    substituteInPlace zlibrary/text/Makefile \
+      --replace -llinebreak -lunibreak
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [
+    bzip2 curl expat fribidi libunibreak sqlite zlib
+  ]
+  ++ optional (uiType == "qt4") qt4
+  ++ optional (uiType == "gtk") gtk2
+  ++ optionals (uiType == "cocoa") [ AppKit Cocoa ];
+
+  makeFlags = [ "INSTALLDIR=$(out)" ];
+
+  NIX_CFLAGS_COMPILE = "-Wno-error=narrowing";
+
+  meta = with stdenv.lib; {
+    description = "An e-book reader for Linux";
+    homepage = "http://www.fbreader.org/";
+    license = licenses.gpl3;
+    broken = stdenv.isDarwin  # untested, might work
+          || uiType == "gtk"; # builds, but the result is unusable, hangs a lot
+    platforms = platforms.unix;
+    maintainers = [ maintainers.coroa ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/fbreader/typecheck.patch b/nixpkgs/pkgs/applications/misc/fbreader/typecheck.patch
new file mode 100644
index 000000000000..cbac290e69c2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/fbreader/typecheck.patch
@@ -0,0 +1,11 @@
+diff --git a/fbreader/src/database/booksdb/BooksDB.cpp b/fbreader/src/database/booksdb/BooksDB.cpp
+index e33a22e76..1b6092800 100644
+--- a/fbreader/src/database/booksdb/BooksDB.cpp
++++ b/fbreader/src/database/booksdb/BooksDB.cpp
+@@ -146,5 +146,5 @@ shared_ptr<Book> BooksDB::loadBook(const std::string &fileName) {
+ 	myFindFileId->setFileName(fileName);
+ 	if (!myFindFileId->run()) {
+-		return false;
++		return 0;
+ 	}
+ 	((DBIntValue&)*myLoadBook->parameter("@file_id").value()) = myFindFileId->fileId();
diff --git a/nixpkgs/pkgs/applications/misc/fehlstart/default.nix b/nixpkgs/pkgs/applications/misc/fehlstart/default.nix
new file mode 100644
index 000000000000..cae637c2c4a4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/fehlstart/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, pkgconfig, gtk2, keybinder, fetchFromGitLab }:
+
+stdenv.mkDerivation {
+  name = "fehlstart-9f4342d7";
+
+  src = fetchFromGitLab {
+    owner = "fehlstart";
+    repo = "fehlstart";
+    rev = "9f4342d75ec5e2a46c13c99c34894bc275798441";
+    sha256 = "1rfzh7w6n2s9waprv7m1bhvqrk36a77ada7w655pqiwkhdj5q95i";
+  };
+
+  patches = [ ./use-nix-profiles.patch ];
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gtk2 keybinder ];
+
+  preConfigure = ''
+    export PREFIX=$out
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Small desktop application launcher with reasonable memory footprint";
+    homepage = "https://gitlab.com/fehlstart/fehlstart";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.mounium ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/fehlstart/use-nix-profiles.patch b/nixpkgs/pkgs/applications/misc/fehlstart/use-nix-profiles.patch
new file mode 100644
index 000000000000..0c06e53f9814
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/fehlstart/use-nix-profiles.patch
@@ -0,0 +1,21 @@
+--- fehlstart-9f4342d75ec5e2a46c13c99c34894bc275798441-src/fehlstart.c	1970-01-01 01:00:01.000000000 +0100
++++ fehlstart.c	2016-08-10 12:21:11.231638418 +0200
+@@ -779,8 +779,15 @@
+     read_settings(setting_file, &settings);
+     update_commands();
+     g_hash_table_foreach(action_map, update_launcher, NULL);
+-    add_launchers(STR_S(APPLICATIONS_DIR_0));
+-    add_launchers(STR_S(APPLICATIONS_DIR_1));
+-    add_launchers(STR_S(USER_APPLICATIONS_DIR));
++    const char* nixprofiles = getenv("NIX_PROFILES");
++    if(nixprofiles != NULL) {
++      const char* pch = strtok(nixprofiles, " ");
++      while (pch != NULL)
++      {
++          String nix_dir = str_concat((String) { pch, strlen(pch), false },STR_S("/share/applications"));
++          add_launchers(nix_dir);
++          pch = strtok(NULL, " ");
++      }
++    }
+     return NULL;
+ }
diff --git a/nixpkgs/pkgs/applications/misc/fetchmail/default.nix b/nixpkgs/pkgs/applications/misc/fetchmail/default.nix
new file mode 100644
index 000000000000..00b858a32798
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/fetchmail/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, openssl }:
+
+let
+  version = "6.4.6";
+in
+stdenv.mkDerivation {
+  pname = "fetchmail";
+  inherit version;
+
+  src = fetchurl {
+    url = "mirror://sourceforge/fetchmail/fetchmail-${version}.tar.xz";
+    sha256 = "04b0sq1xad6gs1bfhkbmhsn1kq6y4gsx9l9ywjvd5d0rc15yrvqn";
+  };
+
+  buildInputs = [ openssl ];
+
+  configureFlags = [ "--with-ssl=${openssl.dev}" ];
+
+  meta = {
+    homepage = "https://www.fetchmail.info/";
+    description = "A full-featured remote-mail retrieval and forwarding utility";
+    longDescription = ''
+      A full-featured, robust, well-documented remote-mail retrieval and
+      forwarding utility intended to be used over on-demand TCP/IP links
+      (such as SLIP or PPP connections). It supports every remote-mail
+      protocol now in use on the Internet: POP2, POP3, RPOP, APOP, KPOP,
+      all flavors of IMAP, ETRN, and ODMR. It can even support IPv6 and
+      IPSEC.
+    '';
+
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.peti ];
+    license = stdenv.lib.licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/fff/default.nix b/nixpkgs/pkgs/applications/misc/fff/default.nix
new file mode 100644
index 000000000000..1397f0a057da
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/fff/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, makeWrapper, bashInteractive, xdg_utils, file, coreutils, w3m, xdotool }:
+
+stdenv.mkDerivation rec {
+  pname = "fff";
+  version = "2.1";
+
+  src = fetchFromGitHub {
+    owner = "dylanaraps";
+    repo = pname;
+    rev = version;
+    sha256 = "0s5gi5ghwax5gc886pvbpcmsbmzhxzywajwzjsdxwjyd1v1iynwh";
+  };
+
+  pathAdd = stdenv.lib.makeSearchPath "bin" ([ xdg_utils file coreutils w3m xdotool ]);
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ bashInteractive ];
+  dontBuild = true;
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  postInstall = ''
+    wrapProgram "$out/bin/fff" --prefix PATH : $pathAdd
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Fucking Fast File-Manager";
+    homepage = "https://github.com/dylanaraps/fff";
+    license = licenses.mit;
+    maintainers = [ maintainers.tadeokondrak ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/filet/default.nix b/nixpkgs/pkgs/applications/misc/filet/default.nix
new file mode 100644
index 000000000000..ee4b05fa689f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/filet/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "filet";
+  version = "0.1.3";
+
+  src = fetchFromGitHub {
+    owner = "buffet";
+    repo = "filet";
+    rev = version;
+    sha256 = "0hm7589ih30axafqxhhs4fg1pvfhlqzyzzmfi2ilx8haq5111fsf";
+  };
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    description = "A fucking fucking fast file fucker (afffff)";
+    homepage = "https://github.com/buffet/filet";
+    license = licenses.mpl20;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ buffet ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/firestarter/default.nix b/nixpkgs/pkgs/applications/misc/firestarter/default.nix
new file mode 100644
index 000000000000..05c535e62c0e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/firestarter/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, glibc, python3, cudatoolkit,
+  withCuda ? true
+}:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  pname = "firestarter";
+  version = "1.7.4";
+
+  src = fetchFromGitHub {
+    owner = "tud-zih-energy";
+    repo = "FIRESTARTER";
+    rev = "v${version}";
+    sha256 = "161mg0h1hvp6bxfjdhyfqrljvphys896mfd36254rbgzxm38ibi7";
+  };
+
+  nativeBuildInputs = [ python3 ];
+  buildInputs = [ glibc.static ] ++ optionals withCuda [ cudatoolkit ];
+  preBuild = ''
+    mkdir -p build
+    cd build
+    python ../code-generator.py ${optionalString withCuda "--enable-cuda"}
+  '';
+  makeFlags = optionals withCuda [ "LINUX_CUDA_PATH=${cudatoolkit}" ];
+  enableParallelBuilding = true;
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp FIRESTARTER $out/bin/firestarter
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://tu-dresden.de/zih/forschung/projekte/firestarter";
+    description = "Processor Stress Test Utility";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ astro ];
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/fitnesstrax/default.nix b/nixpkgs/pkgs/applications/misc/fitnesstrax/default.nix
new file mode 100644
index 000000000000..e90e364aaee9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/fitnesstrax/default.nix
@@ -0,0 +1,45 @@
+{ fetchFromGitHub
+, glib
+, gtk3
+, lib
+, rustPlatform
+, wrapGAppsHook
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "fitnesstrax";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "luminescent-dreams";
+    repo = "fitnesstrax";
+    rev = "${pname}-${version}";
+    sha256 = "1k6zhnbs0ggx7q0ig2abcnzprsgrychlpvsh6d36dw6mr8zpfkp7";
+  };
+
+  nativeBuildInputs = [
+    wrapGAppsHook
+    glib
+    gtk3
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+  ];
+
+  cargoSha256 = "1xgyyxd2kz21xan0pk7rbxiym90s7m2qrzg2ddilcszva60bxdd9";
+
+  postInstall = ''
+    mkdir -p $out/share/glib-2.0/schemas
+    cp -r $src/share/* $out/share/
+    glib-compile-schemas $out/share/glib-2.0/schemas
+  '';
+
+  meta = with lib; {
+    description = "Privacy-first fitness tracking";
+    homepage = "https://github.com/luminescent-dreams/fitnesstrax";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ savannidgerinel ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/flamerobin/default.nix b/nixpkgs/pkgs/applications/misc/flamerobin/default.nix
new file mode 100644
index 000000000000..2e389c753e2e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/flamerobin/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, wxGTK30, boost, firebird }:
+
+stdenv.mkDerivation rec {
+  version = "0.9.3.1";
+  pname = "flamerobin";
+
+  src = fetchFromGitHub {
+    owner = "mariuz";
+    repo = "flamerobin";
+    rev = version;
+    sha256 = "1wwcsca01hpgi9z5flvbdhs9zv7jvahnbn97j6ymy0hdyb8lv6si";
+  };
+
+  enableParallelBuilding = true;
+
+  buildInputs = [ wxGTK30 boost firebird ];
+
+  preBuild = ''
+    sed -i 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -nostartfiles/' Makefile
+  '';
+
+  configureFlags = [
+    "--disable-debug"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Database administration tool for Firebird RDBMS";
+    homepage = "https://github.com/mariuz/flamerobin";
+    license = licenses.bsdOriginal;
+    maintainers = with maintainers; [ uralbash ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/fluxboxlauncher/default.nix b/nixpkgs/pkgs/applications/misc/fluxboxlauncher/default.nix
new file mode 100755
index 000000000000..4794e14b4698
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/fluxboxlauncher/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, fetchFromGitHub
+, python3
+, gtk3
+, wrapGAppsHook
+, glibcLocales
+, gobject-introspection
+, gettext
+, pango
+, gdk-pixbuf
+, atk
+, fluxbox
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "fluxboxlauncher";
+  version = "0.2.1";
+
+  src = fetchFromGitHub {
+    owner = "mothsart";
+    repo = "fluxboxlauncher";
+    rev = "0.2.1";
+    sha256 = "024h1dk0bhc5s4dldr6pqabrgcqih9p8cys5lqgkgz406y4vyzvf";
+  };
+
+  nativeBuildInputs = [
+    wrapGAppsHook
+    gobject-introspection
+    pango
+    gdk-pixbuf
+    atk
+    gettext
+  ];
+
+  buildInputs = [
+    glibcLocales
+    gtk3
+    python3
+    fluxbox
+  ];
+
+  makeWrapperArgs = [ "--set LOCALE_ARCHIVE ${glibcLocales}/lib/locale/locale-archive"
+                      "--set CHARSET en_us.UTF-8" ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    pygobject3
+  ];
+
+  meta = with lib; {
+    description = "A Gui editor (gtk) to configure applications launching on a fluxbox session";
+    homepage = "https://github.com/mothsART/fluxboxlauncher";
+    maintainers = with maintainers; [ mothsart ];
+    license = licenses.bsdOriginal;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/fme/default.nix b/nixpkgs/pkgs/applications/misc/fme/default.nix
new file mode 100644
index 000000000000..34d5a45b8ea1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/fme/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, pkgconfig, autoconf, automake, gettext
+, fluxbox, bc, gtkmm2, glibmm, libglademm, libsigcxx }:
+
+stdenv.mkDerivation rec {
+
+  pname = "fme";
+  version = "1.1.3";
+  
+  src = fetchurl {
+    url = "https://github.com/rdehouss/fme/archive/v${version}.tar.gz";
+    sha256 = "d1c81a6a38c0faad02943ad65d6d0314bd205c6de841669a2efe43e4c503e63d";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ autoconf automake gettext fluxbox bc gtkmm2 glibmm libglademm libsigcxx ];
+
+  preConfigure = ''
+    ./autogen.sh
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Editor for Fluxbox menus";
+    longDescription = ''
+      Fluxbox Menu Editor is a menu editor for the Window Manager Fluxbox written in C++
+      with the libraries Gtkmm, Glibmm, libglademm and gettext for internationalization.
+      Its user-friendly interface will help you to edit, delete, move (Drag and Drop)
+      a row, a submenu, etc very easily.
+    '';
+    homepage = "https://github.com/rdehouss/fme/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/font-manager/default.nix b/nixpkgs/pkgs/applications/misc/font-manager/default.nix
new file mode 100644
index 000000000000..008e59eebee6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/font-manager/default.nix
@@ -0,0 +1,62 @@
+{ stdenv, fetchFromGitHub, meson, ninja, gettext, python3,
+  pkgconfig, libxml2, json-glib , sqlite, itstool, librsvg, yelp-tools,
+  vala, gtk3, gnome3, desktop-file-utils, wrapGAppsHook, gobject-introspection
+}:
+
+stdenv.mkDerivation rec {
+  pname = "font-manager";
+  version = "0.7.7";
+
+  src = fetchFromGitHub {
+    owner = "FontManager";
+    repo = "master";
+    rev = version;
+    sha256 = "1bzqvspplp1zj0n0869jqbc60wgbjhf0vdrn5bj8dfawxynh8s5f";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    meson
+    ninja
+    gettext
+    python3
+    itstool
+    desktop-file-utils
+    vala
+    yelp-tools
+    wrapGAppsHook
+    # For https://github.com/FontManager/master/blob/master/lib/unicode/meson.build
+    gobject-introspection
+  ];
+
+  buildInputs = [
+    libxml2
+    json-glib
+    sqlite
+    librsvg
+    gtk3
+    gnome3.adwaita-icon-theme
+  ];
+
+  postPatch = ''
+    chmod +x meson_post_install.py
+    patchShebangs meson_post_install.py
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://fontmanager.github.io/";
+    description = "Simple font management for GTK desktop environments";
+    longDescription = ''
+      Font Manager is intended to provide a way for average users to
+      easily manage desktop fonts, without having to resort to command
+      line tools or editing configuration files by hand. While designed
+      primarily with the Gnome Desktop Environment in mind, it should
+      work well with other GTK desktop environments.
+
+      Font Manager is NOT a professional-grade font management solution.
+    '';
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/formatter/default.nix b/nixpkgs/pkgs/applications/misc/formatter/default.nix
new file mode 100644
index 000000000000..b0224c052c4e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/formatter/default.nix
@@ -0,0 +1,77 @@
+{ stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, vala
+, pkgconfig
+, pantheon
+, python3
+, substituteAll
+, glib
+, gtk3
+, dosfstools
+, e2fsprogs
+, exfat
+, hfsprogs
+, ntfs3g
+, libgee
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "formatter";
+  version = "0.3.2";
+
+  src = fetchFromGitHub {
+    owner = "Djaler";
+    repo = "Formatter";
+    rev = version;
+    sha256 = "0da1dvzsvbwg1ys19yf0n080xc0hjwin9zacjndb24jvphy3bxql";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      ext4 = "${e2fsprogs}/bin/mkfs.ext4";
+      exfat = "${exfat}/bin/mkfs.exfat";
+      fat = "${dosfstools}/bin/mkfs.fat";
+      ntfs = "${ntfs3g}/bin/mkfs.ntfs";
+      hfsplus = "${hfsprogs}/bin/mkfs.hfsplus";
+    })
+  ];
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    vala
+    pkgconfig
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    libgee
+    pantheon.granite
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "A simple formatter designed for elementary OS";
+    homepage = "https://github.com/Djaler/Formatter";
+    maintainers = with maintainers; [ xiorcale ] ++ pantheon.maintainers;
+    platforms = platforms.linux;
+    license = licenses.lgpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/formatter/fix-paths.patch b/nixpkgs/pkgs/applications/misc/formatter/fix-paths.patch
new file mode 100644
index 000000000000..67c1d2b43ccc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/formatter/fix-paths.patch
@@ -0,0 +1,53 @@
+diff --git a/src/Objects/DeviceFormatter.vala b/src/Objects/DeviceFormatter.vala
+index cf6a3b8..0de10a9 100644
+--- a/src/Objects/DeviceFormatter.vala
++++ b/src/Objects/DeviceFormatter.vala
+@@ -62,42 +62,42 @@ namespace Formatter {
+             string drive_identifier = drive.get_identifier ("unix-device");
+             switch (filesystem) {
+                 case Formatter.Filesystems.EXT4:
+-                    spawn_args = {"pkexec", "mkfs.ext4", drive_identifier, "-F"};
++                    spawn_args = {"pkexec", "@ext4@", drive_identifier, "-F"};
+                     if (label != "") {
+                         spawn_args += "-L";
+                         spawn_args += label;
+                     }
+                     break;
+                 case Formatter.Filesystems.EXFAT:
+-                    spawn_args = {"pkexec", "mkfs.exfat", drive_identifier};
++                    spawn_args = {"pkexec", "@exfat@", drive_identifier};
+                     if (label != "") {
+                         spawn_args += "-n";
+                         spawn_args += label;
+                     }
+                     break;
+                 case Formatter.Filesystems.FAT16:
+-                    spawn_args = {"pkexec", "mkfs.fat", "-F16", "-I", drive_identifier};
++                    spawn_args = {"pkexec", "@fat@", "-F16", "-I", drive_identifier};
+                     if (label != "") {
+                         spawn_args += "-n";
+                         spawn_args += label;
+                     }
+                     break;
+                 case Formatter.Filesystems.FAT32:
+-                    spawn_args = {"pkexec", "mkfs.fat", "-F32", "-I", drive_identifier};
++                    spawn_args = {"pkexec", "@fat@", "-F32", "-I", drive_identifier};
+                     if (label != "") {
+                         spawn_args += "-n";
+                         spawn_args += label;
+                     }
+                     break;
+                 case Formatter.Filesystems.NTFS:
+-                    spawn_args = {"pkexec", "mkfs.ntfs", drive_identifier, "-f", "-F"};
++                    spawn_args = {"pkexec", "@ntfs@", drive_identifier, "-f", "-F"};
+                     if (label != "") {
+                         spawn_args += "-L";
+                         spawn_args += label;
+                     }
+                     break;
+                 case Formatter.Filesystems.HFS_PLUS:
+-                    spawn_args = {"pkexec", "mkfs.hfsplus", drive_identifier};
++                    spawn_args = {"pkexec", "@hfsplus@", drive_identifier};
+                     if (label != "") {
+                         spawn_args += "-v";
+                         spawn_args += label;
diff --git a/nixpkgs/pkgs/applications/misc/foxtrotgps/default.nix b/nixpkgs/pkgs/applications/misc/foxtrotgps/default.nix
new file mode 100644
index 000000000000..dc3f1922c214
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/foxtrotgps/default.nix
@@ -0,0 +1,40 @@
+{ fetchurl, stdenv, pkg-config, wrapGAppsHook, curl, gnome2, gpsd, gtk2
+, intltool, libexif, python3Packages, sqlite }:
+
+stdenv.mkDerivation rec {
+  pname = "foxtrotgps";
+  version = "1.2.2";
+
+  src = fetchurl {
+    url = "https://www.foxtrotgps.org/releases/foxtrotgps-${version}.tar.xz";
+    sha256 = "0grn35j5kwc286dxx18fv32qa330xmalqliwy6zirxmj6dffvrkg";
+  };
+
+  nativeBuildInputs = [ pkg-config wrapGAppsHook ];
+
+  buildInputs = [
+    curl.dev
+    gnome2.libglade.dev
+    gpsd
+    gtk2.dev
+    intltool
+    libexif
+    sqlite.dev
+    (python3Packages.python.withPackages (pythonPackages: with python3Packages;
+    [ beautifulsoup4 feedparser sqlalchemy ]))
+    ];
+
+  meta = with stdenv.lib; {
+    description = "GPS/GIS application optimized for small screens";
+    longDescription = ''
+      An easy to use, free & open-source GPS/GIS application that works well on
+      small screens, and is especially suited to touch input. It spun off of
+      tangoGPS in 2010 with a focus on cooperation and fostering community
+      innovation.
+    '';
+    homepage = "https://www.foxtrotgps.org/";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ wucke13 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/freemind/default.nix b/nixpkgs/pkgs/applications/misc/freemind/default.nix
new file mode 100644
index 000000000000..5774320220a1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/freemind/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, jdk, jre, ant }:
+
+stdenv.mkDerivation rec {
+  pname = "freemind";
+  version = "1.0.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/freemind/freemind-src-${version}.tar.gz";
+    sha256 = "06c6pm7hpwh9hbmyah3lj2wp1g957x8znfwc5cwygsi7dc98b0h1";
+  };
+
+  buildInputs = [ jdk ant ];
+
+  preConfigure = ''
+    chmod +x check_for_duplicate_resources.sh
+    sed 's,/bin/bash,${stdenv.shell},' -i check_for_duplicate_resources.sh
+
+    ## work around javac encoding errors
+    export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8"
+  '';
+
+  buildPhase = "ant dist";
+
+  installPhase = ''
+    mkdir -p $out/{bin,nix-support}
+    cp -r ../bin/dist $out/nix-support
+    sed -i 's/which/type -p/' $out/nix-support/dist/freemind.sh
+
+    cat >$out/bin/freemind <<EOF
+    #! ${stdenv.shell}
+    JAVA_HOME=${jre} $out/nix-support/dist/freemind.sh
+    EOF
+    chmod +x $out/{bin/freemind,nix-support/dist/freemind.sh}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Mind-mapping software";
+    homepage = "http://freemind.sourceforge.net/wiki/index.php/Main_Page";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/fsv/default.nix b/nixpkgs/pkgs/applications/misc/fsv/default.nix
new file mode 100644
index 000000000000..8b6898958d3c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/fsv/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchurl, fetchFromGitHub, autoreconfHook
+, libtool, pkgconfig, gtk2, libGLU, file
+}:
+
+let
+  gtkglarea = stdenv.mkDerivation rec {
+    pname    = "gtkglarea";
+    version = "2.1.0";
+    src = fetchurl {
+      url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+      sha256 = "1pl2vdj6l64j864ilhkq1bcggb3hrlxjwk5m029i7xfjfxc587lf";
+    };
+    nativeBuildInputs = [ pkgconfig ];
+    buildInputs       = [ gtk2 libGLU ];
+    hardeningDisable  = [ "format" ];
+  };
+
+in stdenv.mkDerivation rec {
+  pname   = "fsv";
+  version = "0.9-1";
+
+  src = fetchFromGitHub {
+    owner  = "mcuelenaere"; 
+    repo   = "fsv";
+    rev    = "${pname}-${version}";
+    sha256 = "0n09jd7yqj18mx6zqbg7kab4idg5llr15g6avafj74fpg1h7iimj";
+  };
+
+  postPatch = ''
+   # fix build with gettext 0.20
+   sed -i 's/AM_GNU_GETTEXT/AM_GNU_GETTEXT([external])/' configure.in
+  '';
+
+  nativeBuildInputs = [ autoreconfHook libtool pkgconfig ];
+  buildInputs       = [ file gtk2 libGLU gtkglarea ];
+
+  meta = with stdenv.lib; {
+    description     = "fsv is a file system visualizer in cyberspace";
+    longDescription = ''
+      fsv (pronounced eff-ess-vee) is a file system visualizer in cyberspace.
+      It lays out files and directories in three dimensions, geometrically
+      representing the file system hierarchy to allow visual overview
+      and analysis. fsv can visualize a modest home directory, a workstation's
+      hard drive, or any arbitrarily large collection of files, limited only
+      by the host computer's memory and graphics hardware.
+    '';
+    homepage    = "https://github.com/mcuelenaere/fsv";
+    license     = licenses.lgpl2;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ rnhmjoj ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/fusee-interfacee-tk/default.nix b/nixpkgs/pkgs/applications/misc/fusee-interfacee-tk/default.nix
new file mode 100644
index 000000000000..91a7b0ed37fd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/fusee-interfacee-tk/default.nix
@@ -0,0 +1,40 @@
+{ stdenv , fetchFromGitHub , python3 , makeWrapper }: 
+
+let pythonEnv = python3.withPackages(ps: [ ps.tkinter ps.pyusb ]); 
+in stdenv.mkDerivation rec { 
+  pname = "fusee-interfacee-tk";
+  version = "1.0.1";
+
+  src = fetchFromGitHub { 
+    owner = "nh-server";
+    repo = pname;
+    rev = "V${version}"; 
+    sha256 = "0ngwbwsj999flprv14xvhk7lp51nprrvcnlbnbk6y4qx5casm5md";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ pythonEnv ];
+
+  installPhase = '' 
+    mkdir -p $out/bin
+			      
+    # The program isn't just called app, so I'm renaming it based on the repo name 
+    # It also isn't a standard program, so we need to append the shebang to the top
+    echo "#!${pythonEnv.interpreter}" > $out/bin/fusee-interfacee-tk 
+    cat app.py >> $out/bin/fusee-interfacee-tk
+    chmod +x $out/bin/fusee-interfacee-tk 
+							      
+    # app.py depends on these to run 
+    cp *.py $out/bin/ 
+    cp intermezzo.bin $out/bin/intermezzo.bin
+  '';
+
+  meta = with stdenv.lib; { 
+    homepage = "https://github.com/nh-server/fusee-interfacee-tk";
+    description = "A tool to send .bin files to a Nintendo Switch in RCM mode";
+    longDescription = "A mod of falquinhos Fusée Launcher for use with Nintendo Homebrew Switch Guide. It also adds the ability to mount SD while in RCM. 
+    Must be run as sudo.";
+    maintainers = with maintainers; [ kristian-brucaj ];
+    license = licenses.gpl2;
+  };
+} 
diff --git a/nixpkgs/pkgs/applications/misc/gImageReader/default.nix b/nixpkgs/pkgs/applications/misc/gImageReader/default.nix
new file mode 100644
index 000000000000..2884fca62398
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gImageReader/default.nix
@@ -0,0 +1,70 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, libuuid
+, sane-backends, podofo, libjpeg, djvulibre, libxmlxx3, libzip, tesseract
+, intltool, poppler, json-glib
+, ninja
+, python3
+
+# Gtk deps
+# upstream gImagereader supports Qt too
+, gobject-introspection, wrapGAppsHook
+, gtkmm3, gtksourceview3, gtksourceviewmm, gtkspell3, gtkspellmm, cairomm
+}:
+
+let
+  variant = "gtk";
+  pythonEnv = python3.withPackages( ps: with ps;[ pygobject3 ] );
+in
+stdenv.mkDerivation rec {
+  pname = "gImageReader";
+  version = "3.3.1";
+
+  src = fetchFromGitHub {
+    owner= "manisandro";
+    repo = "gImageReader";
+    rev = "v${version}";
+    sha256 = "17hz2dgxx2j7hsk0lx3riidqvlsg0ylnicjd2gphsi3yp7w20zdj";
+  };
+
+  nativeBuildInputs = [
+    cmake ninja
+    intltool
+    pkgconfig
+    pythonEnv
+
+    # Gtk specific
+    wrapGAppsHook
+    gobject-introspection
+  ];
+
+  buildInputs = [
+    libxmlxx3
+    libzip
+    libuuid
+    sane-backends
+    podofo
+    libjpeg
+    djvulibre
+    tesseract
+    poppler
+
+    # Gtk specific
+    gtkmm3
+    gtkspell3
+    gtkspellmm
+    gtksourceview3
+    gtksourceviewmm
+    cairomm
+    json-glib
+  ];
+
+  # interface type can be where <type> is either gtk, qt5, qt4
+  cmakeFlags = [ "-DINTERFACE_TYPE=${variant}" ];
+
+  meta = with stdenv.lib; {
+    description = "A simple Gtk/Qt front-end to tesseract-ocr";
+    homepage = "https://github.com/manisandro/gImageReader";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [teto];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/galculator/default.nix b/nixpkgs/pkgs/applications/misc/galculator/default.nix
new file mode 100644
index 000000000000..1964ba6aaf73
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/galculator/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub
+, autoreconfHook, intltool
+, gtk, pkgconfig, flex }:
+
+stdenv.mkDerivation rec {
+  pname = "galculator";
+  version = "2.1.4";
+
+  src = fetchFromGitHub {
+    owner = "galculator";
+    repo = "galculator";
+    rev = "v${version}";
+    sha256 = "0q0hb62f266709ncyq96bpx4a40a1i6dc5869byvd7x285sx1c2w";
+  };
+
+  nativeBuildInputs = [ autoreconfHook intltool pkgconfig ];
+  buildInputs = [ gtk flex ];
+
+  meta = with stdenv.lib; {
+    description = "A GTK 2/3 algebraic and RPN calculator";
+    longDescription = ''
+      galculator is a GTK 2 / GTK 3 based calculator. Its main features include:
+
+      - Algebraic, RPN (Reverse Polish Notation), Formula Entry and Paper modes;
+      - Basic and Scientific Modes
+      - Decimal, hexadecimal, octal and binary number base
+      - Radiant, degree and grad support
+      - User defined constants and functions
+      - A bunch of common functions
+      - Binary arithmetic of configurable bit length and signedness
+      - Quad-precision floating point arithmetic, and 112-bit binary arithmetic
+    '';
+    homepage = "http://galculator.sourceforge.net/";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gallery-dl/default.nix b/nixpkgs/pkgs/applications/misc/gallery-dl/default.nix
new file mode 100644
index 000000000000..6b8f6aa38cf8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gallery-dl/default.nix
@@ -0,0 +1,21 @@
+{ lib, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "gallery_dl";
+  version = "1.14.1";
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "0w4zmfbsr7xdymrrmdvcc0kqz11ql8j067ghlr84faqlsnx09z74";
+  };
+
+  doCheck = false;
+  propagatedBuildInputs = with python3Packages; [ requests ];
+
+  meta = {
+    description = "Command-line program to download image-galleries and -collections from several image hosting sites";
+    homepage = "https://github.com/mikf/gallery-dl";
+    license = lib.licenses.gpl2;
+    maintainers = with lib.maintainers; [ dawidsowa ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gammu/bashcomp-dir.patch b/nixpkgs/pkgs/applications/misc/gammu/bashcomp-dir.patch
new file mode 100644
index 000000000000..d41aa432cf35
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gammu/bashcomp-dir.patch
@@ -0,0 +1,11 @@
+--- a/contrib/CMakeLists.txt
++++ b/contrib/CMakeLists.txt
+@@ -85,7 +85,7 @@ endif (INSTALL_PHP_EXAMPLES)
+ if (INSTALL_BASH_COMPLETION)
+     macro_optional_find_package (BashCompletion)
+     if (NOT BASH_COMPLETION_FOUND)
+-      set (BASH_COMPLETION_COMPLETIONSDIR "/etc/bash_completion.d" CACHE PATH "Location of bash_completion.d")
++      set (BASH_COMPLETION_COMPLETIONSDIR "${CMAKE_INSTALL_PREFIX}/etc/bash_completion.d" CACHE PATH "Location of bash_completion.d")
+     endif (NOT BASH_COMPLETION_FOUND)
+     install (
+         FILES bash-completion/gammu
diff --git a/nixpkgs/pkgs/applications/misc/gammu/default.nix b/nixpkgs/pkgs/applications/misc/gammu/default.nix
new file mode 100644
index 000000000000..ff3408eb8dd2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gammu/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, python, pkgconfig, cmake, bluez, libusb1, curl
+, libiconv, gettext, sqlite
+, dbiSupport ? false, libdbi ? null, libdbiDrivers ? null
+, postgresSupport ? false, postgresql ? null
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "gammu";
+  version = "1.40.0";
+
+  src = fetchFromGitHub {
+    owner = "gammu";
+    repo = "gammu";
+    rev = version;
+    sha256 = "1jjaa9r3x6i8gv3yn1ngg815s6gsxblsw4wb5ddm77kamn2qyvpf";
+  };
+
+  patches = [ ./bashcomp-dir.patch ./systemd.patch ];
+
+  nativeBuildInputs = [ pkgconfig cmake ];
+
+  buildInputs = [ python bluez libusb1 curl gettext sqlite libiconv ]
+  ++ optionals dbiSupport [ libdbi libdbiDrivers ]
+  ++ optionals postgresSupport [ postgresql ];
+
+  enableParallelBuilding = true;
+
+  meta = {
+    homepage = "https://wammu.eu/gammu/";
+    description = "Command line utility and library to control mobile phones";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.coroa ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gammu/systemd.patch b/nixpkgs/pkgs/applications/misc/gammu/systemd.patch
new file mode 100644
index 000000000000..22b49a5a2ffe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gammu/systemd.patch
@@ -0,0 +1,30 @@
+diff --git a/cmake/templates/gammu.spec.in b/cmake/templates/gammu.spec.in
+index 8302353..e3ca59a 100644
+--- a/cmake/templates/gammu.spec.in
++++ b/cmake/templates/gammu.spec.in
+@@ -387,9 +387,9 @@ fi
+ %doc %{_mandir}/man7/gammu-smsd-run.7*
+ %doc %{_mandir}/man7/gammu-smsd-sql.7*
+ %doc %{_mandir}/man7/gammu-smsd-tables.7*
+-%dir %{_libexecdir}/systemd
+-%dir %{_libexecdir}/systemd/system
+-%{_libexecdir}/systemd/system/gammu-smsd.service
++%dir %{_prefix}/systemd
++%dir %{_prefix}/systemd/system
++%{_prefix}/systemd/system/gammu-smsd.service
+ 
+ %files -n libGammu%{so_ver} -f libgammu.lang
+ %defattr(-,root,root,-)
+diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt
+index 78cc7fc..d674c36 100644
+--- a/contrib/CMakeLists.txt
++++ b/contrib/CMakeLists.txt
+@@ -97,7 +97,7 @@ endif (INSTALL_BASH_COMPLETION)
+ if (WITH_SYSTEMD)
+     install (
+         FILES init/gammu-smsd.service
+-        DESTINATION "${SYSTEMD_SERVICES_INSTALL_DIR}"
++        DESTINATION "${CMAKE_INSTALL_PREFIX}/systemd"
+         COMPONENT "systemd"
+     )
+ endif (WITH_SYSTEMD)
diff --git a/nixpkgs/pkgs/applications/misc/ganttproject-bin/default.nix b/nixpkgs/pkgs/applications/misc/ganttproject-bin/default.nix
new file mode 100644
index 000000000000..2e8478f41d3d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ganttproject-bin/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchzip, makeDesktopItem, makeWrapper
+, jre
+}:
+
+stdenv.mkDerivation rec {
+  pname = "ganttproject-bin";
+  version = "2.8.10";
+
+  src = let build = "r2364"; in fetchzip {
+    sha256 = "0cclgyqv4f9pjsdlh93cqvgbzrp8ajvrpc2xszs03sknqz2kdh7r";
+    url = "https://dl.ganttproject.biz/ganttproject-${version}/"
+        + "ganttproject-${version}-${build}.zip";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ jre ];
+
+  phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
+
+  installPhase = let
+
+    desktopItem = makeDesktopItem {
+      name = "ganttproject";
+      exec = "ganttproject";
+      icon = "ganttproject";
+      desktopName = "GanttProject";
+      genericName = "Shedule and manage projects";
+      comment = meta.description;
+      categories = "Office;Application;";
+    };
+
+    javaOptions = [
+      "-Dawt.useSystemAAFontSettings=on"
+    ];
+
+  in ''
+    mkdir -pv "$out/share/ganttproject"
+    cp -rv *  "$out/share/ganttproject"
+
+    mkdir -pv "$out/bin"
+    wrapProgram "$out/share/ganttproject/ganttproject" \
+      --set JAVA_HOME "${jre}" \
+      --set _JAVA_OPTIONS "${builtins.toString javaOptions}"
+
+    mv -v "$out/share/ganttproject/ganttproject" "$out/bin"
+
+    cp -rv "${desktopItem}/share/applications" "$out/share"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Project scheduling and management";
+    homepage = "https://www.ganttproject.biz/";
+    downloadPage = "https://www.ganttproject.biz/download";
+    # GanttProject itself is GPL3+. All bundled libraries are declared
+    # ‘GPL3-compatible’. See ${downloadPage} for detailed information.
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.vidbina ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/garmin-plugin/default.nix b/nixpkgs/pkgs/applications/misc/garmin-plugin/default.nix
new file mode 100644
index 000000000000..95cbdd9c19b5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/garmin-plugin/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, garmintools, libgcrypt, libusb-compat-0_1, pkgconfig, tinyxml, zlib }:
+stdenv.mkDerivation {
+  name = "garmin-plugin-0.3.26";
+  src = fetchurl {
+    url = "https://github.com/adiesner/GarminPlugin/archive/V0.3.26.tar.gz";
+    sha256 = "15gads1fj4sj970m5960dgnhys41ksi4cm53ldkf67wn8dc9i4k0";
+  };
+  sourceRoot = "GarminPlugin-0.3.26/src";
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ garmintools libusb-compat-0_1 libgcrypt tinyxml zlib ];
+  configureFlags = [
+    "--with-libgcrypt-prefix=${libgcrypt.dev}"
+    "--with-garmintools-incdir=${garmintools}/include"
+    "--with-garmintools-libdir=${garmintools}/lib"
+  ];
+  installPhase = ''
+    mkdir -p $out/lib/mozilla/plugins
+    cp npGarminPlugin.so $out/lib/mozilla/plugins
+  '';
+  meta = {
+    homepage = "http://www.andreas-diesner.de/garminplugin";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.ocharles ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gcal/default.nix b/nixpkgs/pkgs/applications/misc/gcal/default.nix
new file mode 100644
index 000000000000..24906b11dd59
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gcal/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, ncurses, fetchpatch }:
+
+stdenv.mkDerivation rec {
+  pname = "gcal";
+  version = "4.1";
+
+  src = fetchurl {
+    url = "mirror://gnu/gcal/${pname}-${version}.tar.xz";
+    sha256 = "1av11zkfirbixn05hyq4xvilin0ncddfjqzc4zd9pviyp506rdci";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://src.fedoraproject.org/rpms/gcal/raw/master/f/gcal-glibc-no-libio.patch";
+      sha256 = "0l4nw9kgzsay32rsdwvs75pbp4fhx6pfm85paynfbd20cdm2n2kv";
+    })
+  ];
+
+  enableParallelBuilding = true;
+
+  buildInputs = [ ncurses ];
+
+  meta = {
+    description = "Program for calculating and printing calendars";
+    longDescription = ''
+      Gcal is the GNU version of the trusty old cal(1). Gcal is a
+      program for calculating and printing calendars. Gcal displays
+      hybrid and proleptic Julian and Gregorian calendar sheets.  It
+      also displays holiday lists for many countries around the globe.
+    '';
+    homepage = "https://www.gnu.org/software/gcal/";
+    license = stdenv.lib.licenses.gpl3Plus;
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gcalcli/default.nix b/nixpkgs/pkgs/applications/misc/gcalcli/default.nix
new file mode 100644
index 000000000000..20aefe2ab1d6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gcalcli/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, lib, fetchFromGitHub, python3
+, libnotify ? null }:
+
+with python3.pkgs;
+
+buildPythonApplication rec {
+  pname = "gcalcli";
+  version = "4.3.0";
+
+  src = fetchFromGitHub {
+    owner  = "insanum";
+    repo   = pname;
+    rev    = "v${version}";
+    sha256 = "0s5fhcmz3n0dwh3vkqr4aigi59q43v03ch5jhh6v75149icwr0df";
+  };
+
+  postPatch = lib.optionalString stdenv.isLinux ''
+    substituteInPlace gcalcli/argparsers.py \
+      --replace "'notify-send" "'${libnotify}/bin/notify-send"
+  '';
+
+  propagatedBuildInputs = [
+    dateutil gflags httplib2 parsedatetime six vobject
+    google_api_python_client oauth2client uritemplate
+    libnotify
+  ] ++ lib.optional (!isPy3k) futures;
+
+  # There are no tests as of 4.0.0a4
+  doCheck = false;
+
+  meta = with lib; {
+    description = "CLI for Google Calendar";
+    homepage = "https://github.com/insanum/gcalcli";
+    license = licenses.mit;
+    maintainers = with maintainers; [ nocoolnametom ];
+    inherit version;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/genxword/default.nix b/nixpkgs/pkgs/applications/misc/genxword/default.nix
new file mode 100644
index 000000000000..215542003adf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/genxword/default.nix
@@ -0,0 +1,54 @@
+{ lib
+, python3
+, fetchFromGitHub
+, gettext
+, gobject-introspection
+, wrapGAppsHook
+, pango
+, gtksourceview3
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "genxword";
+  version = "2.0.1";
+
+  src = fetchFromGitHub {
+    owner = "riverrun";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "00czdvyb5wnrk3x0g529afisl8v4frfys9ih0nzf1fs4jkzjcijg";
+  };
+
+  nativeBuildInputs = [
+    gettext
+    gobject-introspection
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gobject-introspection
+    pango
+    gtksourceview3
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    pycairo
+    pygobject3
+  ];
+
+  # to prevent double wrapping
+  dontWrapGApps = true;
+  preFixup = ''
+    makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
+  # there are no tests
+  doCheck = false;
+
+  meta = with lib; {
+    inherit (src.meta) homepage;
+    description = "Crossword generator";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/geoipupdate/default.nix b/nixpkgs/pkgs/applications/misc/geoipupdate/default.nix
new file mode 100644
index 000000000000..2b0fc88ccf9a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/geoipupdate/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "geoipupdate";
+  version = "4.3.0";
+
+  src = fetchFromGitHub {
+    owner = "maxmind";
+    repo = "geoipupdate";
+    rev = "v${version}";
+    sha256 = "08h14bf4z2gx9sy34jpi2pvxv3i8g9ypl222hzdjsp2ixhl0jia9";
+  };
+
+  vendorSha256 = "0q4byhvs1c1xm4qjvs2vyf98vdv121qn0z51arcf7k4ayrys5xcx";
+
+  meta = with stdenv.lib; {
+    description = "Automatic GeoIP database updater";
+    homepage = "https://github.com/maxmind/geoipupdate";
+    license = with licenses; [ asl20 ];
+    platforms = platforms.all;
+    maintainers = with maintainers; [ das_j ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/misc/get_iplayer/default.nix b/nixpkgs/pkgs/applications/misc/get_iplayer/default.nix
new file mode 100644
index 000000000000..5c31ce55addd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/get_iplayer/default.nix
@@ -0,0 +1,41 @@
+{stdenv, fetchFromGitHub, atomicparsley, flvstreamer, ffmpeg_3, makeWrapper, perl, perlPackages, rtmpdump}:
+
+with stdenv.lib;
+
+perlPackages.buildPerlPackage rec {
+  pname = "get_iplayer";
+  version = "3.24";
+
+  src = fetchFromGitHub {
+    owner = "get-iplayer";
+    repo = "get_iplayer";
+    rev = "v${version}";
+    sha256 = "0yd84ncb6cjrk4v4kz3zrddkl7iwkm3zlfbjyswd9hanp8fvd4q3";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ perl ];
+  propagatedBuildInputs = with perlPackages; [
+    HTMLParser HTTPCookies LWP LWPProtocolHttps XMLLibXML XMLSimple
+  ];
+
+  preConfigure = "touch Makefile.PL";
+  doCheck = false;
+  outputs = [ "out" "man" ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/man/man1
+    cp get_iplayer $out/bin
+    wrapProgram $out/bin/get_iplayer --suffix PATH : ${makeBinPath [ atomicparsley ffmpeg_3 flvstreamer rtmpdump ]} --prefix PERL5LIB : $PERL5LIB
+    cp get_iplayer.1 $out/share/man/man1
+  '';
+
+  meta = {
+    description = "Downloads TV and radio from BBC iPlayer";
+    license = licenses.gpl3Plus;
+    homepage = "https://squarepenguin.co.uk/";
+    platforms = platforms.all;
+    maintainers = with maintainers; [ rika ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/getxbook/default.nix b/nixpkgs/pkgs/applications/misc/getxbook/default.nix
new file mode 100644
index 000000000000..8ac0b000c46d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/getxbook/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, openssl }:
+
+stdenv.mkDerivation rec {
+  pname = "getxbook";
+  version = "1.2";
+
+  src = fetchurl {
+    url    = "https://njw.me.uk/getxbook/${pname}-${version}.tar.xz";
+    sha256 = "0ihwrx4gspj8l7fc8vxch6dpjrw1lvv9z3c19f0wxnmnxhv1cjvs";
+  };
+
+  NIX_CFLAGS_COMPILE = builtins.toString [
+    "-Wno-error=format-truncation"
+    "-Wno-error=deprecated-declarations"
+    "-Wno-error=stringop-overflow"
+  ];
+
+  buildInputs = [ openssl ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    description = "A collection of tools to download books from Google Books";
+    homepage    = "https://njw.me.uk/getxbook/";
+    license     = licenses.isc;
+    maintainers = with maintainers; [ obadz ];
+    platforms   = platforms.all;
+    inherit version;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/girara/default.nix b/nixpkgs/pkgs/applications/misc/girara/default.nix
new file mode 100644
index 000000000000..45bca7d3fbf5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/girara/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, meson, ninja, pkgconfig, check, dbus, xvfb_run, glib, gtk, gettext, libiconv, json_c, libintl
+}:
+
+stdenv.mkDerivation rec {
+  pname = "girara";
+  version = "0.3.4";
+
+  outputs = [ "out" "dev" ];
+
+  src = fetchurl {
+    url = "https://git.pwmt.org/pwmt/${pname}/-/archive/${version}/${pname}-${version}.tar.gz";
+    sha256 = "08zdsr4zwi49facsl5596l0g1xqqv2jk3sqk841gkxwawcggim44";
+  };
+
+  nativeBuildInputs = [ meson ninja pkgconfig gettext check dbus xvfb_run ];
+  buildInputs = [ libintl libiconv json_c ];
+  propagatedBuildInputs = [ glib gtk ];
+
+  doCheck = true;
+
+  mesonFlags = [
+    "-Ddocs=disabled" # docs do not seem to be installed
+  ];
+
+  checkPhase = ''
+    export NO_AT_BRIDGE=1
+    xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
+      --config-file=${dbus.daemon}/share/dbus-1/session.conf \
+      meson test --print-errorlogs
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://git.pwmt.org/pwmt/girara";
+    description = "User interface library";
+    longDescription = ''
+      girara is a library that implements a GTK based VIM-like user interface
+      that focuses on simplicity and minimalism.
+    '';
+    license = licenses.zlib;
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gitit/default.nix b/nixpkgs/pkgs/applications/misc/gitit/default.nix
new file mode 100644
index 000000000000..a4ffd3bf88d3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gitit/default.nix
@@ -0,0 +1,61 @@
+{ lib, haskellPackages, haskell, removeReferencesTo
+# “Plugins” are a fancy way of saying gitit will invoke
+# GHC at *runtime*, which in turn makes it pull GHC
+# into its runtime closure. Only enable if you really need
+# that feature. But if you do you’ll want to use gitit
+# as a library anyway.
+, pluginSupport ? false
+}:
+
+# this is similar to what we do with the pandoc executable
+
+let
+  plain = haskellPackages.gitit;
+  plugins =
+    if pluginSupport
+    then plain
+    else haskell.lib.disableCabalFlag plain "plugins";
+  static = haskell.lib.justStaticExecutables plugins;
+
+in
+  (haskell.lib.overrideCabal static (drv: {
+    buildTools = (drv.buildTools or []) ++ [ removeReferencesTo ];
+  })).overrideAttrs (drv: {
+
+    # These libraries are still referenced, because they generate
+    # a `Paths_*` module for figuring out their version.
+    # The `Paths_*` module is generated by Cabal, and contains the
+    # version, but also paths to e.g. the data directories, which
+    # lead to a transitive runtime dependency on the whole GHC distribution.
+    # This should ideally be fixed in haskellPackages (or even Cabal),
+    # but a minimal gitit is important enough to patch it manually.
+    disallowedReferences = [
+      haskellPackages.pandoc-types
+      haskellPackages.HTTP
+      haskellPackages.pandoc
+      haskellPackages.happstack-server
+      haskellPackages.filestore
+    ];
+    postInstall = ''
+      remove-references-to \
+        -t ${haskellPackages.pandoc-types} \
+        $out/bin/gitit
+      remove-references-to \
+        -t ${haskellPackages.HTTP} \
+        $out/bin/gitit
+      remove-references-to \
+        -t ${haskellPackages.pandoc} \
+        $out/bin/gitit
+      remove-references-to \
+        -t ${haskellPackages.happstack-server} \
+        $out/bin/gitit
+      remove-references-to \
+        -t ${haskellPackages.filestore} \
+        $out/bin/gitit
+    '';
+
+    meta = drv.meta // {
+      maintainers = drv.meta.maintainers or []
+        ++ [ lib.maintainers.Profpatsch ];
+    };
+  })
diff --git a/nixpkgs/pkgs/applications/misc/gkrellm/default.nix b/nixpkgs/pkgs/applications/misc/gkrellm/default.nix
new file mode 100644
index 000000000000..bc7c66ee5310
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gkrellm/default.nix
@@ -0,0 +1,46 @@
+{ fetchurl, stdenv, gettext, pkgconfig, glib, gtk2, libX11, libSM, libICE, which
+, IOKit ? null }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "gkrellm-2.3.11";
+
+  src = fetchurl {
+    url = "http://gkrellm.srcbox.net/releases/${name}.tar.bz2";
+    sha256 = "01lccz4fga40isv09j8rjgr0qy10rff9vj042n6gi6gdv4z69q0y";
+  };
+
+  nativeBuildInputs = [ pkgconfig which ];
+  buildInputs = [gettext glib gtk2 libX11 libSM libICE]
+    ++ optionals stdenv.isDarwin [ IOKit ];
+
+  hardeningDisable = [ "format" ];
+
+  # Makefiles are patched to fix references to `/usr/X11R6' and to add
+  # `-lX11' to make sure libX11's store path is in the RPATH.
+  patchPhase = ''
+    echo "patching makefiles..."
+    for i in Makefile src/Makefile server/Makefile
+    do
+      sed -i "$i" -e "s|/usr/X11R6|${libX11.dev}|g ; s|-lICE|-lX11 -lICE|g"
+    done
+  '';
+
+  makeFlags = [ "STRIP=-s" ];
+  installFlags = [ "DESTDIR=$(out)" ];
+
+  meta = {
+    description = "Themeable process stack of system monitors";
+    longDescription = ''
+      GKrellM is a single process stack of system monitors which
+      supports applying themes to match its appearance to your window
+      manager, Gtk, or any other theme.
+    '';
+
+    homepage = "http://gkrellm.srcbox.net";
+    license = licenses.gpl3Plus;
+    maintainers = [ ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gksu/default.nix b/nixpkgs/pkgs/applications/misc/gksu/default.nix
new file mode 100644
index 000000000000..bfa504477616
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gksu/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchurl, pkgconfig, gtk2, gnome2, gnome3, libgksu,
+  intltool, libstartup_notification, gtk-doc, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  version = "2.0.2";
+  pname = "gksu";
+
+  src = fetchurl {
+    url = "http://people.debian.org/~kov/gksu/${pname}-${version}.tar.gz";
+    sha256 = "0npfanlh28daapkg25q4fncxd89rjhvid5fwzjaw324x0g53vpm1";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig intltool gtk-doc wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk2 gnome2.GConf libstartup_notification gnome3.libgnome-keyring
+  ];
+
+  propagatedBuildInputs = [
+    libgksu
+  ];
+
+  hardeningDisable = [ "format" ];
+
+  patches = [
+    # https://savannah.nongnu.org/bugs/index.php?36127
+    ./gksu-2.0.2-glib-2.31.patch
+  ];
+
+  postPatch = ''
+    sed -i -e 's|/usr/bin/x-terminal-emulator|-l gnome-terminal|g' gksu.desktop
+  '';
+
+  configureFlags = [ "--disable-nautilus-extension" ];
+
+  meta = {
+    description = "A graphical frontend for libgksu";
+    longDescription = ''
+      GKSu is a library that provides a GTK frontend to su and sudo.
+      It supports login shells and preserving environment when acting as
+      a su frontend. It is useful to menu items or other graphical
+      programs that need to ask a user's password to run another program
+      as another user.
+    '';
+    homepage = "https://www.nongnu.org/gksu/";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.romildo ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gksu/gksu-2.0.2-glib-2.31.patch b/nixpkgs/pkgs/applications/misc/gksu/gksu-2.0.2-glib-2.31.patch
new file mode 100644
index 000000000000..fd711a321acf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gksu/gksu-2.0.2-glib-2.31.patch
@@ -0,0 +1,29 @@
+From 10c7e67e11a56e2fe1acf9b085772bc995d35bc0 Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gentoo.org>
+Date: Sat, 7 Apr 2012 17:57:36 -0400
+Subject: [PATCH] Fix glib includes for building with >=glib-2.31
+
+glib-2.31 and newer no longer allow most glib subheaders to be included
+directly.
+
+https://savannah.nongnu.org/bugs/index.php?36127
+---
+ nautilus-gksu/libnautilus-gksu.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/nautilus-gksu/libnautilus-gksu.c b/nautilus-gksu/libnautilus-gksu.c
+index 8e44d29..4acf3f8 100644
+--- a/nautilus-gksu/libnautilus-gksu.c
++++ b/nautilus-gksu/libnautilus-gksu.c
+@@ -5,7 +5,7 @@
+ #include <string.h>
+ #include <pthread.h>
+ 
+-#include <glib/gkeyfile.h>
++#include <glib.h>
+ #include <gtk/gtk.h>
+ #include <gio/gio.h>
+ #include <libnautilus-extension/nautilus-extension-types.h>
+-- 
+1.7.8.5
+
diff --git a/nixpkgs/pkgs/applications/misc/glava/default.nix b/nixpkgs/pkgs/applications/misc/glava/default.nix
new file mode 100644
index 000000000000..88991bb40a19
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/glava/default.nix
@@ -0,0 +1,92 @@
+{ stdenv, writeScript, fetchFromGitHub
+, libGL, libX11, libXext, python3, libXrandr, libXrender, libpulseaudio, libXcomposite
+, enableGlfw ? false, glfw, runtimeShell }:
+
+let
+  inherit (stdenv.lib) optional makeLibraryPath;
+
+  wrapperScript = writeScript "glava" ''
+    #!${runtimeShell}
+    case "$1" in
+      --copy-config|-C)
+        # The binary would symlink it, which won't work in Nix because the
+        # garbage collector will eventually remove the original files after
+        # updates
+        echo "Nix wrapper: Copying glava config to ~/.config/glava"
+        cp -r --no-preserve=all @out@/etc/xdg/glava ~/.config/glava
+        ;;
+      *)
+        exec @out@/bin/.glava-unwrapped "$@"
+    esac
+  '';
+in
+  stdenv.mkDerivation rec {
+    pname = "glava";
+    version = "1.6.3";
+
+    src = fetchFromGitHub {
+      owner = "wacossusca34";
+      repo = "glava";
+      rev = "v${version}";
+      sha256 = "0kqkjxmpqkmgby05lsf6c6iwm45n33jk5qy6gi3zvjx4q4yzal1i";
+    };
+
+    buildInputs = [
+      libX11
+      libXext
+      libXrandr
+      libXrender
+      libpulseaudio
+      libXcomposite
+    ] ++ optional enableGlfw glfw;
+
+    nativeBuildInputs = [
+      python3
+    ];
+
+    preConfigure = ''
+      for f in $(find -type f);do
+        substituteInPlace $f \
+          --replace /etc/xdg $out/etc/xdg
+      done
+
+      substituteInPlace Makefile \
+        --replace '$(DESTDIR)$(SHADERDIR)' '$(SHADERDIR)'
+
+      substituteInPlace Makefile \
+        --replace 'unknown' 'v${version}'
+
+      export CFLAGS="-march=native"
+    '';
+
+    makeFlags = optional (!enableGlfw) "DISABLE_GLFW=1";
+
+    installFlags = [
+      "DESTDIR=$(out)"
+    ];
+
+    fixupPhase = ''
+      mkdir -p $out/bin
+      mv $out/usr/bin/glava $out/bin/.glava-unwrapped
+      rm -rf $out/usr
+
+      patchelf \
+        --set-rpath "$(patchelf --print-rpath $out/bin/.glava-unwrapped):${makeLibraryPath [ libGL ]}" \
+        $out/bin/.glava-unwrapped
+
+      substitute ${wrapperScript} $out/bin/glava --subst-var out
+      chmod +x $out/bin/glava
+    '';
+
+    meta = with stdenv.lib; {
+      description = ''
+        OpenGL audio spectrum visualizer
+      '';
+      homepage = "https://github.com/wacossusca34/glava";
+      platforms = platforms.linux;
+      license = licenses.gpl3;
+      maintainers = with maintainers; [
+        eadwu
+      ];
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/misc/glom/default.nix b/nixpkgs/pkgs/applications/misc/glom/default.nix
new file mode 100644
index 000000000000..d576d2b5b476
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/glom/default.nix
@@ -0,0 +1,132 @@
+{ stdenv
+, fetchFromGitLab
+, pkgconfig
+, autoconf
+, automake
+, libtool
+, mm-common
+, intltool
+, itstool
+, doxygen
+, graphviz
+, makeFontsConf
+, freefont_ttf
+, boost
+, libxmlxx3
+, libxslt
+, libgdamm
+, libarchive
+, libepc
+, python3
+, ncurses
+, glibmm
+, gtk3
+, openssl
+, gtkmm3
+, goocanvasmm2
+, evince
+, isocodes
+, gtksourceviewmm4
+, postgresql
+, gobject-introspection
+, yelp-tools
+, wrapGAppsHook
+}:
+
+let
+  gda = libgdamm.override {
+    mysqlSupport = true;
+    postgresSupport = true;
+  };
+  python = python3.withPackages (pkgs: with pkgs; [ pygobject3 ]);
+  sphinx-build = python3.pkgs.sphinx.overrideAttrs (super: {
+    postFixup = super.postFixup or "" + ''
+      # Do not propagate Python
+      rm $out/nix-support/propagated-build-inputs
+    '';
+  });
+  boost_python = boost.override { enablePython = true; inherit python; };
+in stdenv.mkDerivation rec {
+  pname = "glom";
+  version = "unstable-2018-12-16";
+
+  outputs = [ "out" "lib" "dev" "doc" "devdoc" ];
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "GNOME";
+    repo = pname;
+    rev = "fa5ff04f209f35bf3e97bc1c3eb1d1138d6172ce";
+    sha256 = "145hnk96xa4v35i3a3mbf3fnx4nlk8cksc0qhm7nrh8cnnrbdfgn";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    autoconf
+    automake
+    libtool
+    mm-common
+    intltool
+    yelp-tools
+    itstool
+    doxygen
+    graphviz
+    sphinx-build
+    wrapGAppsHook
+    gobject-introspection # for setup hook
+  ];
+
+  buildInputs = [
+    boost_python
+    glibmm
+    gtk3
+    openssl
+    libxmlxx3
+    libxslt
+    gda
+    libarchive
+    libepc
+    python
+    ncurses # for python
+    gtkmm3
+    goocanvasmm2
+    evince
+    isocodes
+    python3.pkgs.pygobject3
+    gtksourceviewmm4
+    postgresql # for pg_config
+  ];
+
+  enableParallelBuilding = true;
+
+  preConfigure = "NOCONFIGURE=1 ./autogen.sh";
+
+  configureFlags = [
+    "--with-boost-python=boost_python${stdenv.lib.versions.major python3.version}${stdenv.lib.versions.minor python3.version}"
+  ];
+
+  makeFlags = [
+    "libdocdir=${placeholder "doc"}/share/doc/$(book_name)"
+    "devhelpdir=${placeholder "devdoc"}/share/devhelp/books/$(book_name)"
+  ];
+
+  # Fontconfig error: Cannot load default config file
+  FONTCONFIG_FILE = makeFontsConf {
+    fontDirectories = [ freefont_ttf ];
+  };
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      --prefix PYTHONPATH : "${placeholder "out"}/${python3.sitePackages}"
+      --set PYTHONHOME "${python}"
+    )
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An easy-to-use database designer and user interface";
+    homepage = "http://www.glom.org/";
+    license = [ licenses.lgpl2 licenses.gpl2 ];
+    maintainers = teams.gnome.members;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gmrun/default.nix b/nixpkgs/pkgs/applications/misc/gmrun/default.nix
new file mode 100644
index 000000000000..eaee8fb5fb37
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gmrun/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, glib, gtk2, pkgconfig, popt }:
+
+let
+  version = "0.9.2";
+in
+
+stdenv.mkDerivation rec {
+  pname = "gmrun";
+  inherit version;
+
+  src = fetchurl {
+    url = "mirror://sourceforge/gmrun/${pname}-${version}.tar.gz";
+    sha256 = "180z6hbax1qypy5cyy2z6nn7fzxla4ib47ck8mqwr714ag77na8p";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ glib gtk2 popt ];
+
+  doCheck = true;
+
+  enableParallelBuilding = true;
+
+  patches = [
+      ./gcc43.patch
+      ./find-config-file-in-system-etc-dir.patch
+      ./gmrun-0.9.2-xdg.patch
+    ];
+
+  meta = {
+    description = "Gnome Completion-Run Utility";
+    longDescription = ''
+      A simple program which provides a "run program" window, featuring a bash-like TAB completion.
+      It uses GTK interface.
+      Also, supports CTRL-R / CTRL-S / "!" for searching through history.
+      Running commands in a terminal with CTRL-Enter. URL handlers.
+    '';
+    homepage = "https://sourceforge.net/projects/gmrun/";
+    license = "GPL";
+    maintainers = [];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gmrun/find-config-file-in-system-etc-dir.patch b/nixpkgs/pkgs/applications/misc/gmrun/find-config-file-in-system-etc-dir.patch
new file mode 100644
index 000000000000..12d5370961c0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gmrun/find-config-file-in-system-etc-dir.patch
@@ -0,0 +1,18 @@
+diff -ur gmrun-0.9.2-orig/src/prefs.cc gmrun-0.9.2/src/prefs.cc
+--- gmrun-0.9.2-orig/src/prefs.cc	2019-05-02 12:56:39.025088361 +0200
++++ gmrun-0.9.2/src/prefs.cc	2019-05-02 13:21:51.179778620 +0200
+@@ -31,9 +31,11 @@
+ 
+ Prefs::Prefs()
+ {
+-  string file_name = PACKAGE_DATA_DIR"/";
+-  file_name += GMRUNRC;
+-  init(file_name);
++  string file_name = "/etc/" GMRUNRC;
++  if (!init(file_name)) {
++    file_name = PACKAGE_DATA_DIR "/" GMRUNRC;;
++    init(file_name);
++  }
+ 
+   file_name = getenv("HOME");
+   if (!file_name.empty()) {
diff --git a/nixpkgs/pkgs/applications/misc/gmrun/gcc43.patch b/nixpkgs/pkgs/applications/misc/gmrun/gcc43.patch
new file mode 100644
index 000000000000..60e4338e893d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gmrun/gcc43.patch
@@ -0,0 +1,51 @@
+--- a/src/gtkcompletionline.cc.orig	2003-11-16 11:55:07.000000000 +0100
++++ a/src/gtkcompletionline.cc	2008-05-08 08:51:22.000000000 +0200
+@@ -29,6 +29,7 @@
+ #include <set>
+ #include <sstream>
+ #include <string>
++#include <cstring>
+ #include <vector>
+ using namespace std;
+ 
+--- a/src/ci_string.h.orig	2001-05-16 16:39:31.000000000 +0200
++++ a/src/ci_string.h	2008-05-08 08:51:33.000000000 +0200
+@@ -7,6 +7,7 @@
+ #define __CI_STRING_H__
+ 
+ #include <string>
++#include <cstring>
+ #include <ctype.h>
+ 
+ struct ci_char_traits : public std::char_traits<char>
+--- a/src/prefs.cc.orig	2002-08-16 12:48:22.000000000 +0200
++++ a/src/prefs.cc	2008-05-08 08:51:54.000000000 +0200
+@@ -13,6 +13,7 @@
+ #include <fstream>
+ #include <iostream>
+ #include <stdio.h>
++#include <stdlib.h>
+ 
+ #include <list>
+ 
+--- a/src/main.cc.orig	2003-11-16 11:55:07.000000000 +0100
++++ a/src/main.cc	2008-05-08 09:03:11.000000000 +0200
+@@ -14,6 +14,7 @@
+ #include <gdk/gdkkeysyms.h>
+ 
+ #include <string>
++#include <cstring>
+ #include <iostream>
+ #include <sstream>
+ #include <vector>
+
+--- a/src/gtkcompletionline.cc.orig	2009-06-19 22:38:14.000000000 +0400
++++ a/src/gtkcompletionline.cc	2009-06-19 22:37:14.000000000 +0400
+@@ -376,7 +377,7 @@
+   return 0;
+ }
+ 
+-int my_alphasort(const void* va, const void* vb) {
++int my_alphasort(const dirent** va, const dirent** vb) {
+   const struct dirent** a = (const struct dirent**)va;
+   const struct dirent** b = (const struct dirent**)vb;
diff --git a/nixpkgs/pkgs/applications/misc/gmrun/gmrun-0.9.2-xdg.patch b/nixpkgs/pkgs/applications/misc/gmrun/gmrun-0.9.2-xdg.patch
new file mode 100644
index 000000000000..b5cd41a3c5b4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gmrun/gmrun-0.9.2-xdg.patch
@@ -0,0 +1,58 @@
+diff -ur a/src/history.cc src/history.cc
+--- a/src/history.cc	2002-08-17 15:19:31.000000000 +0200
++++ a/src/history.cc	2012-06-04 23:42:35.314653414 +0200
+@@ -24,8 +24,15 @@
+ HistoryFile::HistoryFile()
+ {
+   m_file_entries = 0;
+-  m_filename = g_get_home_dir();
+-  m_filename += "/.gmrun_history";
++  const char* filename = getenv("XDG_CACHE_HOME");
++  if (filename != 0 && *filename != '\0') {
++    m_filename = filename;
++    m_filename += "/gmrun_history";
++  }
++  else {
++    m_filename = g_get_home_dir();
++    m_filename += "/.gmrun_history";
++  }
+   m_current = 0;
+   m_default_set = false;
+   read_the_file();
+diff -ur a/src/prefs.cc src/prefs.cc
+--- a/src/prefs.cc	2012-06-04 22:35:00.671949439 +0200
++++ a/src/prefs.cc	2012-06-04 23:24:24.184445962 +0200
+@@ -35,12 +35,29 @@
+   file_name += GMRUNRC;
+   init(file_name);
+ 
+-  file_name = getenv("HOME");
+-  if (!file_name.empty()) {
++  file_name.clear();
++  const char* filename = getenv("XDG_CONFIG_HOME");
++  if (filename != 0 && *filename != '\0') {
++    file_name = filename;
+     string::iterator i = file_name.end() - 1;
+-    if (*i == '/') file_name.erase(i);
+-    file_name += "/.";
++    if (*i != '/') {
++      file_name += '/';
++    }
+     file_name += GMRUNRC;
++  }
++  else {
++    filename = getenv("HOME");
++    if (filename != 0 && *filename != '\0') {
++      file_name = filename;
++      string::iterator i = file_name.end() - 1;
++      if (*i != '/') {
++        file_name += '/';
++      }
++      file_name += '.';
++      file_name += GMRUNRC;
++    }
++  }
++  if (!file_name.empty()) {
+     init(file_name);
+   }
+ }
diff --git a/nixpkgs/pkgs/applications/misc/gmtp/default.nix b/nixpkgs/pkgs/applications/misc/gmtp/default.nix
new file mode 100644
index 000000000000..5ed69e7bc69e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gmtp/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, pkgconfig, libmtp, libid3tag, flac, libvorbis, gtk3
+, gsettings-desktop-schemas, wrapGAppsHook
+}:
+
+let version = "1.3.11"; in
+
+stdenv.mkDerivation {
+  pname = "gmtp";
+  inherit version;
+
+  src = fetchurl {
+    url = "mirror://sourceforge/gmtp/gMTP-${version}/gmtp-${version}.tar.gz";
+    sha256 = "04q6byyq002fhzkc2rkkahwh5b6272xakaj4m3vwm8la8jf0r0ss";
+  };
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+  buildInputs = [ libmtp libid3tag flac libvorbis gtk3 gsettings-desktop-schemas ];
+
+  enableParallelBuilding = true;
+
+  preFixup = ''
+    gappsWrapperArgs+=(--add-flags "--datapath \"$out/share\"");
+  '';
+
+  meta = {
+    description = "A simple MP3 and Media player client for UNIX and UNIX like systems.";
+    homepage = "https://gmtp.sourceforge.io";
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ ];
+    license = stdenv.lib.licenses.bsd3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gnome-firmware-updater/default.nix b/nixpkgs/pkgs/applications/misc/gnome-firmware-updater/default.nix
new file mode 100644
index 000000000000..f007f0ae52e1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gnome-firmware-updater/default.nix
@@ -0,0 +1,75 @@
+{ stdenv
+, fetchFromGitLab
+, fetchpatch
+, appstream-glib
+, desktop-file-utils
+, fwupd
+, gettext
+, glib
+, gtk3
+, libsoup
+, libxmlb
+, meson
+, ninja
+, pkgconfig
+, systemd
+, help2man
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-firmware-updater";
+  version = "3.34.0";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "hughsie";
+    repo = "gnome-firmware-updater";
+    rev = version;
+    sha256 = "04pll0fzf4nr276kfw89r0524s6ppmls5rz4vq2j8c8gb50g0b6l";
+  };
+
+  patches = [
+    # Fixes manual build
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/hughsie/gnome-firmware-updater/commit/006b64dcb401d8c81a33222bc4be8274c23f3c9c.patch";
+      sha256 = "02303ip4ri5pv1bls8c0njb00qhn0jd0d8rmvsrig0fmacwfvc06";
+    })
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/hughsie/gnome-firmware-updater/commit/c4f076f2c902080618e0c27dec924fd0019f68a3.patch";
+      sha256 = "1yfxd7qsg3gwpamg0m2sbcfrgks59w70r9728arrc4pwx1hia2q1";
+    })
+  ];
+
+  nativeBuildInputs = [
+    appstream-glib # for ITS rules
+    desktop-file-utils
+    gettext
+    help2man
+    meson
+    ninja
+    pkgconfig
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    fwupd
+    glib
+    gtk3
+    libsoup
+    libxmlb
+    systemd
+  ];
+
+  mesonFlags = [
+    "-Dconsolekit=false"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://gitlab.gnome.org/hughsie/gnome-firmware-updater";
+    description = "Tool for installing firmware on devices";
+    license = licenses.gpl2Plus;
+    maintainers = teams.gnome.members;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gnome-multi-writer/default.nix b/nixpkgs/pkgs/applications/misc/gnome-multi-writer/default.nix
new file mode 100644
index 000000000000..06bc0024995d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gnome-multi-writer/default.nix
@@ -0,0 +1,62 @@
+{ stdenv
+, fetchurl
+, appstream-glib
+, desktop-file-utils
+, gettext
+, glib
+, gnome3
+, gtk3
+, gusb
+, libcanberra-gtk3
+, libgudev
+, meson
+, ninja
+, pkgconfig
+, wrapGAppsHook
+, polkit
+, udisks
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-multi-writer";
+  version = "3.32.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1apdd8yi12zagf82k376a9wmdm27wzwdxpm2wf2pnwkaf786rmdw";
+  };
+
+  nativeBuildInputs = [
+    appstream-glib
+    desktop-file-utils
+    gettext
+    meson
+    ninja
+    pkgconfig
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    gusb
+    libcanberra-gtk3
+    libgudev
+    polkit
+    udisks
+  ];
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Tool for writing an ISO file to multiple USB devices at once";
+    homepage = "https://wiki.gnome.org/Apps/MultiWriter";
+    license = licenses.gpl2Plus;
+    maintainers = teams.gnome.members;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gnome-recipes/default.nix b/nixpkgs/pkgs/applications/misc/gnome-recipes/default.nix
new file mode 100644
index 000000000000..cb9d10377cb8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gnome-recipes/default.nix
@@ -0,0 +1,79 @@
+{ stdenv
+, fetchurl
+, meson
+, ninja
+, pkgconfig
+, gnome3
+, desktop-file-utils
+, gettext
+, itstool
+, python3
+, wrapGAppsHook
+, gtk3
+, glib
+, libsoup
+, gnome-online-accounts
+, librest
+, json-glib
+, gnome-autoar
+, gspell
+, libcanberra }:
+
+let
+  pname = "gnome-recipes";
+  version = "2.0.2";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
+    sha256 = "1yymii3yf823d9x28fbhqdqm1wa30s40j94x0am9fjj0nzyd5s8v";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkgconfig
+    desktop-file-utils
+    gettext
+    itstool
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    glib
+    libsoup
+    gnome-online-accounts
+    librest
+    json-glib
+    gnome-autoar
+    gspell
+    libcanberra
+  ];
+
+  # https://github.com/NixOS/nixpkgs/issues/36468
+  # https://gitlab.gnome.org/GNOME/recipes/issues/76
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  postPatch = ''
+    chmod +x src/list_to_c.py
+    patchShebangs src/list_to_c.py
+    patchShebangs meson_post_install.py
+  '';
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Recipe management application for GNOME";
+    homepage = "https://wiki.gnome.org/Apps/Recipes";
+    maintainers = teams.gnome.members;
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gnome-usage/default.nix b/nixpkgs/pkgs/applications/misc/gnome-usage/default.nix
new file mode 100644
index 000000000000..17aa7e9aa060
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gnome-usage/default.nix
@@ -0,0 +1,65 @@
+{ stdenv
+, fetchurl
+, meson
+, ninja
+, pkgconfig
+, vala
+, gettext
+, libxml2
+, desktop-file-utils
+, wrapGAppsHook
+, glib
+, gtk3
+, libgtop
+, libdazzle
+, gnome3
+, tracker
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-usage";
+  version = "3.33.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "0w3ppfaf15il8mad64qyc9hj1rmlvzs5dyzrxhq7r50k4kyiwmk4";
+  };
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    gettext
+    libxml2
+    meson
+    ninja
+    pkgconfig
+    vala
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gnome3.adwaita-icon-theme
+    gtk3
+    libdazzle
+    libgtop
+    tracker
+  ];
+
+  postPatch = ''
+    chmod +x build-aux/meson/postinstall.sh
+    patchShebangs build-aux/meson/postinstall.sh
+  '';
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "A nice way to view information about use of system resources, like memory and disk space";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = teams.gnome.members;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/go-jira/default.nix b/nixpkgs/pkgs/applications/misc/go-jira/default.nix
new file mode 100644
index 000000000000..5fad7b9ac031
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/go-jira/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "go-jira";
+  version = "1.0.23";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "go-jira";
+    repo = "jira";
+    sha256 = "0qk5ifjxkqisvgv066rw8xj2zszc9mhc0by4338xjd7ng10jkk7b";
+  };
+
+  vendorSha256 = "18jwxnkv94lsxfv57ga519knxm077cc8chp5c992ipk58a04nv18";
+
+  meta = with stdenv.lib; {
+    description = "Simple command line client for Atlassian's Jira service written in Go";
+    homepage = "https://github.com/go-jira/jira";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ carlosdagos timstott ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/golden-cheetah/default.nix b/nixpkgs/pkgs/applications/misc/golden-cheetah/default.nix
new file mode 100644
index 000000000000..761d05e5f9f8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/golden-cheetah/default.nix
@@ -0,0 +1,69 @@
+{ stdenv, fetchFromGitHub, mkDerivation
+, qtbase, qtsvg, qtserialport, qtwebengine, qtmultimedia, qttools
+, qtconnectivity, qtcharts, libusb-compat-0_1
+, yacc, flex, zlib, qmake, makeDesktopItem, makeWrapper
+}:
+
+let
+  desktopItem = makeDesktopItem {
+    name = "goldencheetah";
+    exec = "GoldenCheetah";
+    icon = "goldencheetah";
+    desktopName = "GoldenCheetah";
+    genericName = "GoldenCheetah";
+    comment = "Performance software for cyclists, runners and triathletes";
+    categories = "Application;Utility;";
+  };
+in mkDerivation rec {
+  pname = "golden-cheetah";
+  version = "3.5-RC2X";
+
+  src = fetchFromGitHub {
+    owner = "GoldenCheetah";
+    repo = "GoldenCheetah";
+    rev = "V${version}";
+    sha256 = "1d85700gjbcw2badwz225rjdr954ai89900vp8sal04sk79wbr6g";
+  };
+
+  buildInputs = [
+    qtbase qtsvg qtserialport qtwebengine qtmultimedia qttools zlib
+    qtconnectivity qtcharts libusb-compat-0_1
+  ];
+  nativeBuildInputs = [ flex makeWrapper qmake yacc ];
+
+  NIX_LDFLAGS = "-lz";
+
+  qtWrapperArgs = [ "--set LD_LIBRARY_PATH ${zlib.out}/lib" ];
+
+  preConfigure = ''
+    cp src/gcconfig.pri.in src/gcconfig.pri
+    cp qwt/qwtconfig.pri.in qwt/qwtconfig.pri
+    echo 'QMAKE_LRELEASE = ${qttools.dev}/bin/lrelease' >> src/gcconfig.pri
+    echo 'LIBUSB_INSTALL = ${libusb-compat-0_1}' >> src/gcconfig.pri
+    echo 'LIBUSB_INCLUDE = ${libusb-compat-0_1.dev}/include' >> src/gcconfig.pri
+    echo 'LIBUSB_LIBS = -L${libusb-compat-0_1}/lib -lusb' >> src/gcconfig.pri
+    sed -i -e '21,23d' qwt/qwtconfig.pri # Removed forced installation to /usr/local
+
+    # Use qtwebengine instead of qtwebkit
+    substituteInPlace src/gcconfig.pri \
+      --replace "#DEFINES += NOWEBKIT" "DEFINES += NOWEBKIT"
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin
+    cp src/GoldenCheetah $out/bin
+    install -Dm644 "${desktopItem}/share/applications/"* -t $out/share/applications/
+    install -Dm644 src/Resources/images/gc.png $out/share/pixmaps/goldencheetah.png
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Performance software for cyclists, runners and triathletes";
+    platforms = platforms.linux;
+    maintainers = [ maintainers.ocharles ];
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/goldendict/0001-dont-check-for-updates.patch b/nixpkgs/pkgs/applications/misc/goldendict/0001-dont-check-for-updates.patch
new file mode 100644
index 000000000000..31c7a6382292
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/goldendict/0001-dont-check-for-updates.patch
@@ -0,0 +1,49 @@
+diff --git i/config.cc w/config.cc
+index 04b63f5..7a453d9 100644
+--- i/config.cc
++++ w/config.cc
+@@ -182,7 +182,7 @@ Preferences::Preferences():
+   pronounceOnLoadPopup( false ),
+   useInternalPlayer( InternalPlayerBackend::anyAvailable() ),
+   internalPlayerBackend( InternalPlayerBackend::defaultBackend() ),
+-  checkForNewReleases( true ),
++  checkForNewReleases( false ),
+   disallowContentFromOtherSites( false ),
+   enableWebPlugins( false ),
+   hideGoldenDictHeader( false ),
+@@ -867,8 +867,8 @@ Class load() THROW_SPEC( exError )
+       c.preferences.proxyServer.systemProxyPassword = proxy.namedItem( "systemProxyPassword" ).toElement().text();
+     }
+ 
+-    if ( !preferences.namedItem( "checkForNewReleases" ).isNull() )
+-      c.preferences.checkForNewReleases = ( preferences.namedItem( "checkForNewReleases" ).toElement().text() == "1" );
++    //if ( !preferences.namedItem( "checkForNewReleases" ).isNull() )
++    //  c.preferences.checkForNewReleases = ( preferences.namedItem( "checkForNewReleases" ).toElement().text() == "1" );
+ 
+     if ( !preferences.namedItem( "disallowContentFromOtherSites" ).isNull() )
+       c.preferences.disallowContentFromOtherSites = ( preferences.namedItem( "disallowContentFromOtherSites" ).toElement().text() == "1" );
+@@ -1819,9 +1819,9 @@ void save( Class const & c ) THROW_SPEC( exError )
+       proxy.appendChild( opt );
+     }
+ 
+-    opt = dd.createElement( "checkForNewReleases" );
+-    opt.appendChild( dd.createTextNode( c.preferences.checkForNewReleases ? "1" : "0" ) );
+-    preferences.appendChild( opt );
++    //opt = dd.createElement( "checkForNewReleases" );
++    //opt.appendChild( dd.createTextNode( c.preferences.checkForNewReleases ? "1" : "0" ) );
++    //preferences.appendChild( opt );
+ 
+     opt = dd.createElement( "disallowContentFromOtherSites" );
+     opt.appendChild( dd.createTextNode( c.preferences.disallowContentFromOtherSites ? "1" : "0" ) );
+diff --git i/preferences.cc w/preferences.cc
+index 72c3147..7e48f00 100644
+--- i/preferences.cc
++++ w/preferences.cc
+@@ -314,6 +314,7 @@ Preferences::Preferences( QWidget * parent, Config::Class & cfg_ ):
+            this, SLOT( customProxyToggled( bool ) ) );
+ 
+   ui.checkForNewReleases->setChecked( p.checkForNewReleases );
++  ui.checkForNewReleases->setEnabled( false );
+   ui.disallowContentFromOtherSites->setChecked( p.disallowContentFromOtherSites );
+   ui.enableWebPlugins->setChecked( p.enableWebPlugins );
+   ui.hideGoldenDictHeader->setChecked( p.hideGoldenDictHeader );
diff --git a/nixpkgs/pkgs/applications/misc/goldendict/0001-dont-use-maclibs.patch b/nixpkgs/pkgs/applications/misc/goldendict/0001-dont-use-maclibs.patch
new file mode 100644
index 000000000000..fc1fcbb0db07
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/goldendict/0001-dont-use-maclibs.patch
@@ -0,0 +1,62 @@
+diff --git i/goldendict.pro w/goldendict.pro
+index 328dc20..5202a07 100644
+--- i/goldendict.pro
++++ w/goldendict.pro
+@@ -210,21 +210,18 @@ mac {
+         -llzo2
+     !CONFIG( no_ffmpeg_player ) {
+         LIBS += -lao \
+-            -lavutil-gd \
+-            -lavformat-gd \
+-            -lavcodec-gd
++            -lavutil \
++            -lavformat \
++            -lavcodec
+     }
+-    INCLUDEPATH = $${PWD}/maclibs/include
+-    LIBS += -L$${PWD}/maclibs/lib -framework AppKit -framework Carbon
++    LIBS += -framework AppKit -framework Carbon
+     OBJECTIVE_SOURCES += lionsupport.mm \
+                          machotkeywrapper.mm \
+                          macmouseover.mm \
+                          speechclient_mac.mm
+     ICON = icons/macicon.icns
+     QMAKE_INFO_PLIST = myInfo.plist
+-    QMAKE_POST_LINK = mkdir -p GoldenDict.app/Contents/Frameworks & \
+-                      cp -nR $${PWD}/maclibs/lib/ GoldenDict.app/Contents/Frameworks/ & \
+-                      mkdir -p GoldenDict.app/Contents/MacOS/locale & \
++    QMAKE_POST_LINK = mkdir -p GoldenDict.app/Contents/MacOS/locale & \
+                       cp -R locale/*.qm GoldenDict.app/Contents/MacOS/locale/ & \
+                       mkdir -p GoldenDict.app/Contents/MacOS/help & \
+                       cp -R $${PWD}/help/*.qch GoldenDict.app/Contents/MacOS/help/
+@@ -232,15 +229,6 @@ mac {
+     CONFIG += zim_support
+     !CONFIG( no_chinese_conversion_support ) {
+         CONFIG += chinese_conversion_support
+-        CONFIG( x86 ) {
+-            QMAKE_POST_LINK += & mkdir -p GoldenDict.app/Contents/MacOS/opencc & \
+-                                 cp -R $${PWD}/opencc/*.json GoldenDict.app/Contents/MacOS/opencc/ & \
+-                                 cp -R $${PWD}/opencc/*.ocd GoldenDict.app/Contents/MacOS/opencc/
+-        } else {
+-            QMAKE_POST_LINK += & mkdir -p GoldenDict.app/Contents/MacOS/opencc & \
+-                                 cp -R $${PWD}/opencc/x64/*.json GoldenDict.app/Contents/MacOS/opencc/ & \
+-                                 cp -R $${PWD}/opencc/x64/*.ocd GoldenDict.app/Contents/MacOS/opencc/
+-        }
+     }
+ }
+ DEFINES += PROGRAM_VERSION=\\\"$$VERSION\\\"
+diff --git i/tiff.cc w/tiff.cc
+index e3cb8bf..9ff880f 100644
+--- i/tiff.cc
++++ w/tiff.cc
+@@ -6,8 +6,8 @@
+ #include "tiff.hh"
+ 
+ #if defined (Q_OS_MAC) || defined (Q_OS_WIN)
+-#include "tiff/tiff.h"
+-#include "tiff/tiffio.h"
++#include "tiff.h"
++#include "tiffio.h"
+ #else
+ #include "tiff.h"
+ #include "tiffio.h"
diff --git a/nixpkgs/pkgs/applications/misc/goldendict/default.nix b/nixpkgs/pkgs/applications/misc/goldendict/default.nix
new file mode 100644
index 000000000000..57a40f8d1877
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/goldendict/default.nix
@@ -0,0 +1,69 @@
+{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig
+, libXtst, libvorbis, hunspell, lzo, xz, bzip2, libiconv
+, qtbase, qtsvg, qtwebkit, qtx11extras, qttools, qmake
+, withCC ? true, opencc
+, withEpwing ? true, libeb
+, withExtraTiff ? true, libtiff
+, withFFmpeg ? true, libao, ffmpeg_3
+, withMultimedia ? true
+, withZim ? true, zstd }:
+
+mkDerivation rec {
+  pname = "goldendict";
+  version = "2020-05-27";
+
+  src = fetchFromGitHub {
+    owner = "goldendict";
+    repo = pname;
+    rev = "ec40c1dcfde6df1dc7950443b46ae22c283b1e52";
+    sha256 = "1zmnwwnpnrqfyf7vmmh38r95q2fl4cqzbkp69bcwkr0xc80wgyz7";
+  };
+
+  patches = [
+    ./0001-dont-check-for-updates.patch
+  ] ++ stdenv.lib.optionals stdenv.isDarwin [
+    ./0001-dont-use-maclibs.patch
+  ];
+
+  postPatch = ''
+    substituteInPlace goldendict.pro \
+      --replace "hunspell-1.6.1" "hunspell-${stdenv.lib.versions.majorMinor hunspell.version}"
+  '';
+
+  nativeBuildInputs = [ pkgconfig qmake ];
+  buildInputs = [
+    qtbase qtsvg qtwebkit qttools
+    libvorbis hunspell xz lzo
+  ] ++ stdenv.lib.optionals stdenv.isLinux [ qtx11extras libXtst ]
+    ++ stdenv.lib.optionals stdenv.isDarwin [ bzip2 libiconv ]
+    ++ stdenv.lib.optional withCC opencc
+    ++ stdenv.lib.optional withEpwing libeb
+    ++ stdenv.lib.optional withExtraTiff libtiff
+    ++ stdenv.lib.optionals withFFmpeg [ libao ffmpeg_3 ]
+    ++ stdenv.lib.optional withZim zstd;
+
+  qmakeFlags = with stdenv.lib; [
+    "goldendict.pro"
+    (optional withCC "CONFIG+=chinese_conversion_support")
+    (optional (!withCC) "CONFIG+=no_chinese_conversion_support")
+    (optional (!withEpwing) "CONFIG+=no_epwing_support")
+    (optional (!withExtraTiff) "CONFIG+=no_extra_tiff_handler")
+    (optional (!withFFmpeg) "CONFIG+=no_ffmpeg_player")
+    (optional (!withMultimedia)"CONFIG+=no_qtmultimedia_player")
+    (optional withZim "CONFIG+=zim_support")
+  ];
+
+  postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+    mkdir -p $out/Applications
+    mv GoldenDict.app $out/Applications
+    wrapQtApp $out/Applications/GoldenDict.app/Contents/MacOS/GoldenDict
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://goldendict.org/";
+    description = "A feature-rich dictionary lookup program";
+    platforms = with platforms; linux ++ darwin;
+    maintainers = with maintainers; [ gebner astsmtl sikmir ];
+    license = licenses.gpl3Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gollum/Gemfile b/nixpkgs/pkgs/applications/misc/gollum/Gemfile
new file mode 100644
index 000000000000..525f54838b75
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gollum/Gemfile
@@ -0,0 +1,2 @@
+source 'https://rubygems.org'
+gem 'gollum'
diff --git a/nixpkgs/pkgs/applications/misc/gollum/Gemfile.lock b/nixpkgs/pkgs/applications/misc/gollum/Gemfile.lock
new file mode 100644
index 000000000000..4759cdcf5737
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gollum/Gemfile.lock
@@ -0,0 +1,113 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    backports (3.17.0)
+    concurrent-ruby (1.1.6)
+    crass (1.0.6)
+    execjs (2.7.0)
+    ffi (1.12.2)
+    gemojione (4.3.2)
+      json
+    github-markup (3.0.4)
+    gollum (5.0.1)
+      gemojione (~> 4.1)
+      gollum-lib (~> 5.0)
+      kramdown (~> 2.1.0)
+      kramdown-parser-gfm (~> 1.0.0)
+      mustache (>= 0.99.5, < 1.0.0)
+      octicons (~> 8.5)
+      rss (~> 0.2.9)
+      sass (~> 3.5)
+      sinatra (~> 2.0)
+      sinatra-contrib (~> 2.0)
+      sprockets (~> 3.7)
+      sprockets-helpers (~> 1.2)
+      therubyrhino (~> 2.1.0)
+      uglifier (~> 3.2)
+      useragent (~> 0.16.2)
+    gollum-lib (5.0.3)
+      gemojione (~> 4.1)
+      github-markup (~> 3.0)
+      gollum-rugged_adapter (~> 0.99.4, >= 0.99.4)
+      loofah (~> 2.3)
+      nokogiri (~> 1.8)
+      octicons (~> 8.5)
+      rouge (~> 3.1)
+      twitter-text (= 1.14.7)
+    gollum-rugged_adapter (0.99.4)
+      mime-types (>= 1.15)
+      rugged (~> 0.99)
+    json (2.3.0)
+    kramdown (2.1.0)
+    kramdown-parser-gfm (1.0.1)
+      kramdown (~> 2.0)
+    loofah (2.5.0)
+      crass (~> 1.0.2)
+      nokogiri (>= 1.5.9)
+    mime-types (3.3.1)
+      mime-types-data (~> 3.2015)
+    mime-types-data (3.2019.1009)
+    mini_portile2 (2.4.0)
+    multi_json (1.14.1)
+    mustache (0.99.8)
+    mustermann (1.1.1)
+      ruby2_keywords (~> 0.0.1)
+    nokogiri (1.10.9)
+      mini_portile2 (~> 2.4.0)
+    octicons (8.5.0)
+      nokogiri (>= 1.6.3.1)
+    rack (2.2.2)
+    rack-protection (2.0.8.1)
+      rack
+    rb-fsevent (0.10.3)
+    rb-inotify (0.10.1)
+      ffi (~> 1.0)
+    rexml (3.2.4)
+    rouge (3.17.0)
+    rss (0.2.9)
+      rexml
+    ruby2_keywords (0.0.2)
+    rugged (0.99.0)
+    sass (3.7.4)
+      sass-listen (~> 4.0.0)
+    sass-listen (4.0.0)
+      rb-fsevent (~> 0.9, >= 0.9.4)
+      rb-inotify (~> 0.9, >= 0.9.7)
+    sinatra (2.0.8.1)
+      mustermann (~> 1.0)
+      rack (~> 2.0)
+      rack-protection (= 2.0.8.1)
+      tilt (~> 2.0)
+    sinatra-contrib (2.0.8.1)
+      backports (>= 2.8.2)
+      multi_json
+      mustermann (~> 1.0)
+      rack-protection (= 2.0.8.1)
+      sinatra (= 2.0.8.1)
+      tilt (~> 2.0)
+    sprockets (3.7.2)
+      concurrent-ruby (~> 1.0)
+      rack (> 1, < 3)
+    sprockets-helpers (1.2.3)
+      sprockets (>= 2.2)
+    therubyrhino (2.1.2)
+      therubyrhino_jar (>= 1.7.4, < 1.7.9)
+    therubyrhino_jar (1.7.8)
+    tilt (2.0.10)
+    twitter-text (1.14.7)
+      unf (~> 0.1.0)
+    uglifier (3.2.0)
+      execjs (>= 0.3.0, < 3)
+    unf (0.1.4)
+      unf_ext
+    unf_ext (0.0.7.7)
+    useragent (0.16.10)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  gollum
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/applications/misc/gollum/default.nix b/nixpkgs/pkgs/applications/misc/gollum/default.nix
new file mode 100644
index 000000000000..9005f38f563b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gollum/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, bundlerEnv, ruby, makeWrapper, bundlerUpdateScript
+, git }:
+
+stdenv.mkDerivation rec {
+  pname = "gollum";
+  # nix-shell -p bundix icu zlib cmake pkg-config openssl
+  version = (import ./gemset.nix).gollum.version;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  phases = [ "installPhase" ];
+
+  installPhase = let
+    env = bundlerEnv {
+      name = "${pname}-${version}-gems";
+      inherit pname ruby;
+      gemdir = ./.;
+    };
+  in ''
+    mkdir -p $out/bin
+    makeWrapper ${env}/bin/gollum $out/bin/gollum \
+      --prefix PATH ":" ${stdenv.lib.makeBinPath [ git ]}
+    makeWrapper ${env}/bin/gollum-migrate-tags $out/bin/gollum-migrate-tags \
+      --prefix PATH ":" ${stdenv.lib.makeBinPath [ git ]}
+  '';
+
+  passthru.updateScript = bundlerUpdateScript "gollum";
+
+  meta = with stdenv.lib; {
+    description = "A simple, Git-powered wiki with a sweet API and local frontend";
+    homepage = "https://github.com/gollum/gollum";
+    changelog = "https://github.com/gollum/gollum/blob/v${version}/HISTORY.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jgillich primeos nicknovitski ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gollum/gemset.nix b/nixpkgs/pkgs/applications/misc/gollum/gemset.nix
new file mode 100644
index 000000000000..3febcea2f9a6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gollum/gemset.nix
@@ -0,0 +1,475 @@
+{
+  backports = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "13ywgyyxzlgks7nb17gwqjmdqjjmhc8si3iliv8jhf51lb3s865v";
+      type = "gem";
+    };
+    version = "3.17.0";
+  };
+  concurrent-ruby = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "094387x4yasb797mv07cs3g6f08y56virc2rjcpb1k79rzaj3nhl";
+      type = "gem";
+    };
+    version = "1.1.6";
+  };
+  crass = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pfl5c0pyqaparxaqxi6s4gfl21bdldwiawrc0aknyvflli60lfw";
+      type = "gem";
+    };
+    version = "1.0.6";
+  };
+  execjs = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yz55sf2nd3l666ms6xr18sm2aggcvmb8qr3v53lr4rir32y1yp1";
+      type = "gem";
+    };
+    version = "2.7.0";
+  };
+  ffi = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10lfhahnnc91v63xpvk65apn61pib086zha3z5sp1xk9acfx12h4";
+      type = "gem";
+    };
+    version = "1.12.2";
+  };
+  gemojione = {
+    dependencies = ["json"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "097mrsahv1h67kjrk1cpiqc1cbrfgvlp2rqwmzdzxrq0kx50461w";
+      type = "gem";
+    };
+    version = "4.3.2";
+  };
+  github-markup = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14991x92v8s60hfqv7162jfmdqa20fifn2bz0km3k5cgi01pf9rs";
+      type = "gem";
+    };
+    version = "3.0.4";
+  };
+  gollum = {
+    dependencies = ["gemojione" "gollum-lib" "kramdown" "kramdown-parser-gfm" "mustache" "octicons" "rss" "sass" "sinatra" "sinatra-contrib" "sprockets" "sprockets-helpers" "therubyrhino" "uglifier" "useragent"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1f9p1230xmrvcb7ii2gkcvhpgcaqvvd47gy3c58nn730jkv471dr";
+      type = "gem";
+    };
+    version = "5.0.1";
+  };
+  gollum-lib = {
+    dependencies = ["gemojione" "github-markup" "gollum-rugged_adapter" "loofah" "nokogiri" "octicons" "rouge" "twitter-text"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0r59fyf7i4rlp6wj9ilnqd9pmgpkafv0yl4jmrxa6hr2p4cmnf1g";
+      type = "gem";
+    };
+    version = "5.0.3";
+  };
+  gollum-rugged_adapter = {
+    dependencies = ["mime-types" "rugged"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0016yfac3b3sy34k9wrqg422mjm8cpd1jd1m4gdn4x2d4jxhxkzq";
+      type = "gem";
+    };
+    version = "0.99.4";
+  };
+  json = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nrmw2r4nfxlfgprfgki3hjifgrcrs3l5zvm3ca3gb4743yr25mn";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+  kramdown = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1dl840bvx8d9nq6lg3mxqyvbiqnr6lk3jfsm6r8zhz7p5srmd688";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+  kramdown-parser-gfm = {
+    dependencies = ["kramdown"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ykna2apphld9llmjnz0210fipp4fkmj2ja18l7iz9xikg0h0ihi";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  loofah = {
+    dependencies = ["crass" "nokogiri"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jk9fgn5ayzbqvzqm11gbkqvas77zdbpkvynlylyiwynclgrn040";
+      type = "gem";
+    };
+    version = "2.5.0";
+  };
+  mime-types = {
+    dependencies = ["mime-types-data"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zj12l9qk62anvk9bjvandpa6vy4xslil15wl6wlivyf51z773vh";
+      type = "gem";
+    };
+    version = "3.3.1";
+  };
+  mime-types-data = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18x61fc36951vw7f74gq8cyybdpxvyg5d0azvqhrs82ddw3v16xh";
+      type = "gem";
+    };
+    version = "3.2019.1009";
+  };
+  mini_portile2 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy";
+      type = "gem";
+    };
+    version = "2.4.0";
+  };
+  multi_json = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xy54mjf7xg41l8qrg1bqri75agdqmxap9z466fjismc1rn2jwfr";
+      type = "gem";
+    };
+    version = "1.14.1";
+  };
+  mustache = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1g5hplm0k06vwxwqzwn1mq5bd02yp0h3rym4zwzw26aqi7drcsl2";
+      type = "gem";
+    };
+    version = "0.99.8";
+  };
+  mustermann = {
+    dependencies = ["ruby2_keywords"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ccm54qgshr1lq3pr1dfh7gphkilc19dp63rw6fcx7460pjwy88a";
+      type = "gem";
+    };
+    version = "1.1.1";
+  };
+  nokogiri = {
+    dependencies = ["mini_portile2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12j76d0bp608932xkzmfi638c7aqah57l437q8494znzbj610qnm";
+      type = "gem";
+    };
+    version = "1.10.9";
+  };
+  octicons = {
+    dependencies = ["nokogiri"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fy6shpfmla58dxx3kb2zi1hs7vmdw6pqrksaa8yrva05s4l3y75";
+      type = "gem";
+    };
+    version = "8.5.0";
+  };
+  rack = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10mp9s48ssnw004aksq90gvhdvwczh8j6q82q2kqiqq92jd1zxbp";
+      type = "gem";
+    };
+    version = "2.2.2";
+  };
+  rack-protection = {
+    dependencies = ["rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zyj97bfr1shfgwk4ddmdbw0mdkm4qdyh9s1hl0k7accf3kxx1yi";
+      type = "gem";
+    };
+    version = "2.0.8.1";
+  };
+  rb-fsevent = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8";
+      type = "gem";
+    };
+    version = "0.10.3";
+  };
+  rb-inotify = {
+    dependencies = ["ffi"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005";
+      type = "gem";
+    };
+    version = "0.10.1";
+  };
+  rexml = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1mkvkcw9fhpaizrhca0pdgjcrbns48rlz4g6lavl5gjjq3rk2sq3";
+      type = "gem";
+    };
+    version = "3.2.4";
+  };
+  rouge = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xl7k5paf66p57sphm4nfa4k86yf93lhdzzr0cv0l4divq12g2pr";
+      type = "gem";
+    };
+    version = "3.17.0";
+  };
+  rss = {
+    dependencies = ["rexml"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1b1zx07kr64kkpm4lssd4r1a1qyr829ppmfl85i4adcvx9mqfid0";
+      type = "gem";
+    };
+    version = "0.2.9";
+  };
+  ruby2_keywords = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17pcc0wgvh3ikrkr7bm3nx0qhyiqwidd13ij0fa50k7gsbnr2p0l";
+      type = "gem";
+    };
+    version = "0.0.2";
+  };
+  rugged = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04rkxwzaa6897da3mnm70g720gpxwyh71krfn6ag1dkk80x8a8yz";
+      type = "gem";
+    };
+    version = "0.99.0";
+  };
+  sass = {
+    dependencies = ["sass-listen"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0p95lhs0jza5l7hqci1isflxakz83xkj97lkvxl919is0lwhv2w0";
+      type = "gem";
+    };
+    version = "3.7.4";
+  };
+  sass-listen = {
+    dependencies = ["rb-fsevent" "rb-inotify"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df";
+      type = "gem";
+    };
+    version = "4.0.0";
+  };
+  sinatra = {
+    dependencies = ["mustermann" "rack" "rack-protection" "tilt"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0riy3hwjab1mr73jcqx3brmbmwspnw3d193j06a5f0fy1w35z15q";
+      type = "gem";
+    };
+    version = "2.0.8.1";
+  };
+  sinatra-contrib = {
+    dependencies = ["backports" "multi_json" "mustermann" "rack-protection" "sinatra" "tilt"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1mmrfm4pqh98f3irjpkvfpazhcx6q42bnx6bbms9dqvmck3mid28";
+      type = "gem";
+    };
+    version = "2.0.8.1";
+  };
+  sprockets = {
+    dependencies = ["concurrent-ruby" "rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
+      type = "gem";
+    };
+    version = "3.7.2";
+  };
+  sprockets-helpers = {
+    dependencies = ["sprockets"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hy67dwz76n5db00d9n3qy59ici96c2g25c9xpmp2nh8ilvha338";
+      type = "gem";
+    };
+    version = "1.2.3";
+  };
+  therubyrhino = {
+    dependencies = ["therubyrhino_jar"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "034mzpkxm3zjsi4rwa45dhhgq2b9vkabs5bnzbl1d3ka7210b3fc";
+      type = "gem";
+    };
+    version = "2.1.2";
+  };
+  therubyrhino_jar = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "149a5lsvn2n7k7vcfs77n836q1alv8yjh0503sf9cs65p974ah25";
+      type = "gem";
+    };
+    version = "1.7.8";
+  };
+  tilt = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rn8z8hda4h41a64l0zhkiwz2vxw9b1nb70gl37h1dg2k874yrlv";
+      type = "gem";
+    };
+    version = "2.0.10";
+  };
+  twitter-text = {
+    dependencies = ["unf"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1732h7hy1k152w8wfvjsx7b79alk45i5imwd37ia4qcx8hfm3gvg";
+      type = "gem";
+    };
+    version = "1.14.7";
+  };
+  uglifier = {
+    dependencies = ["execjs"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wmqvn4xncw6h3d5gp2a44170zwxfyj3iq4rsjp16zarvzbdmgnz";
+      type = "gem";
+    };
+    version = "3.2.0";
+  };
+  unf = {
+    dependencies = ["unf_ext"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
+      type = "gem";
+    };
+    version = "0.1.4";
+  };
+  unf_ext = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wc47r23h063l8ysws8sy24gzh74mks81cak3lkzlrw4qkqb3sg4";
+      type = "gem";
+    };
+    version = "0.0.7.7";
+  };
+  useragent = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fv5kvq494swy0p17h9qya9r50w15xsi9zmvhzb8gh55kq6ki50p";
+      type = "gem";
+    };
+    version = "0.16.10";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/misc/gomatrix/default.nix b/nixpkgs/pkgs/applications/misc/gomatrix/default.nix
new file mode 100644
index 000000000000..0cf6c9660932
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gomatrix/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "gomatrix";
+  version = "101.0.0";
+
+  src = fetchFromGitHub {
+    owner = "GeertJohan";
+    repo = "gomatrix";
+    rev = "v${version}";
+    sha256 = "1wq55rvpyz0gjn8kiwwj49awsmi86zy1fdjcphzgb7883xalgr2m";
+  };
+
+  vendorSha256 = "1yw0gph4zfg8w4343882l6b9lggwyak2zz8ic1l1m2m44p3aq169";
+
+  meta = with lib; {
+    description = ''Displays "The Matrix" in a terminal'';
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ skykanin ];
+    homepage = "https://github.com/GeertJohan/gomatrix";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/misc/googleearth/default.nix b/nixpkgs/pkgs/applications/misc/googleearth/default.nix
new file mode 100644
index 000000000000..dff69130c18a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/googleearth/default.nix
@@ -0,0 +1,107 @@
+{ stdenv, fetchurl, glibc, libGLU, libGL, freetype, glib, libSM, libICE, libXi, libXv
+, libXrender, libXrandr, libXfixes, libXcursor, libXinerama, libXext, libX11
+, zlib, fontconfig, dpkg, libproxy, libxml2, gstreamer, gst_all_1, dbus }:
+
+let
+  arch =
+    if stdenv.hostPlatform.system == "x86_64-linux" then "amd64"
+    else if stdenv.hostPlatform.system == "i686-linux" then "i386"
+    else throw "Unsupported system ${stdenv.hostPlatform.system}";
+  sha256 =
+    if arch == "amd64"
+    then "0dwnppn5snl5bwkdrgj4cyylnhngi0g66fn2k41j3dvis83x24k6"
+    else "0gndbxrj3kgc2dhjqwjifr3cl85hgpm695z0wi01wvwzhrjqs0l2";
+  version = "7.1.8.3036";
+  fullPath = stdenv.lib.makeLibraryPath [
+    glibc
+    glib
+    stdenv.cc.cc
+    libSM
+    libICE
+    libXi
+    libXv
+    libGLU libGL
+    libXrender
+    libXrandr
+    libXfixes
+    libXcursor
+    libXinerama
+    freetype
+    libXext
+    libX11
+    zlib
+    fontconfig
+    libproxy
+    libxml2
+    gstreamer
+    dbus
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base
+  ];
+in
+stdenv.mkDerivation rec {
+  pname = "googleearth";
+  inherit version;
+  src = fetchurl {
+    url = "https://dl.google.com/linux/earth/deb/pool/main/g/google-earth-stable/google-earth-stable_${version}-r0_${arch}.deb";
+    inherit sha256;
+  };
+
+  phases = [ "unpackPhase" "installPhase" "checkPhase" ];
+
+  doCheck = true;
+
+  buildInputs = [ dpkg ];
+
+  unpackPhase = ''
+    dpkg-deb -x ${src} ./
+  '';
+
+  installPhase =''
+    mkdir $out
+    mv usr/* $out/
+    rmdir usr
+    mv * $out/
+    rm $out/bin/google-earth $out/opt/google/earth/free/googleearth
+
+    # patch and link googleearth binary
+    ln -s $out/opt/google/earth/free/googleearth-bin $out/bin/googleearth
+    patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${fullPath}:\$ORIGIN" \
+      $out/opt/google/earth/free/googleearth-bin
+
+    # patch and link gpsbabel binary
+    ln -s $out/opt/google/earth/free/gpsbabel $out/bin/gpsbabel
+    patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${fullPath}:\$ORIGIN" \
+      $out/opt/google/earth/free/gpsbabel
+
+    # patch libraries
+    for a in $out/opt/google/earth/free/*.so* ; do
+      patchelf --set-rpath "${fullPath}:\$ORIGIN" $a
+    done
+    
+    # Add desktop config file and icons
+    mkdir -p $out/share/{applications,icons/hicolor/{16x16,22x22,24x24,32x32,48x48,64x64,128x128,256x256}/apps,pixmaps}
+    ln -s $out/opt/google/earth/free/google-earth.desktop $out/share/applications/google-earth.desktop
+    sed -i -e "s|Exec=.*|Exec=$out/bin/googleearth|g" $out/opt/google/earth/free/google-earth.desktop
+    for size in 16 22 24 32 48 64 128 256; do
+      ln -s $out/opt/google/earth/free/product_logo_"$size".png $out/share/icons/hicolor/"$size"x"$size"/apps/google-earth.png
+    done
+    ln -s $out/opt/google/earth/free/product_logo_256.png $out/share/pixmaps/google-earth.png
+  '';
+
+  checkPhase = ''
+    $out/bin/gpsbabel -V > /dev/null
+  '';
+
+  dontPatchELF = true;
+
+  meta = with stdenv.lib; {
+    description = "A world sphere viewer";
+    homepage = "http://earth.google.com";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ markus1189 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/googler/default.nix b/nixpkgs/pkgs/applications/misc/googler/default.nix
new file mode 100644
index 000000000000..fba36f5e8ac7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/googler/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, python }:
+
+stdenv.mkDerivation rec {
+  pname = "googler";
+  version = "4.1";
+
+  src = fetchFromGitHub {
+    owner = "jarun";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "04d7n2l159s7c9xzvyvbnbii1k3zdbajagpx09x1l692cwjbvpxw";
+  };
+
+  propagatedBuildInputs = [ python ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/jarun/googler";
+    description = "Google Search, Google Site Search, Google News from the terminal";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ koral filalex77 ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gopacked/default.nix b/nixpkgs/pkgs/applications/misc/gopacked/default.nix
new file mode 100644
index 000000000000..418fe96a897b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gopacked/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "gopacked";
+  version = "0.4.1";
+
+  src = fetchFromGitHub {
+    owner = "tulir";
+    repo = "gopacked";
+    rev = "v${version}";
+    sha256 = "03qr8rlnipziy16nbcpf631jh42gsyv2frdnh8yzsh8lm0p8p4ry";
+  };
+
+  vendorSha256 = "0fklr3lxh8g7gda65wf2wdkqv15869h7m1bwbzbiv8pasrf5b352";
+
+  meta = with lib; {
+    description = "A simple text-based Minecraft modpack manager";
+    license = licenses.agpl3;
+    homepage = src.meta.homepage;
+    maintainers = with maintainers; [ foxit64 ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/gosmore/default.nix b/nixpkgs/pkgs/applications/misc/gosmore/default.nix
new file mode 100644
index 000000000000..4da6c6d07cc4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gosmore/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchsvn, libxml2, gtk2, curl, pkgconfig } :
+
+let
+  version = "31801";
+in
+stdenv.mkDerivation {
+  name = "gosmore-r${version}";
+  # the gosmore svn repository does not lock revision numbers of its externals
+  # so we explicitly disable them to avoid breaking the hash
+  # especially as the externals appear to be unused
+  src = fetchsvn {
+    url = "http://svn.openstreetmap.org/applications/rendering/gosmore";
+    sha256 = "0qsckpqx7i7f8gkqhkzdamr65250afk1rpnh3nbman35kdv3dsxi";
+    rev = version;
+    ignoreExternals = true;
+  };
+
+  buildInputs = [ libxml2 gtk2 curl ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  prePatch = ''
+    sed -e '/curl.types.h/d' -i *.{c,h,hpp,cpp}
+  '';
+
+  patches = [ ./pointer_int_comparison.patch ];
+  patchFlags = [ "-p1" "--binary" ]; # patch has dos style eol
+
+  meta = with stdenv.lib; {
+    description = "Open Street Map viewer";
+    homepage = "https://sourceforge.net/projects/gosmore/";
+    maintainers = with maintainers; [
+      raskin
+    ];
+    platforms = platforms.linux;
+    license = licenses.bsd2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gosmore/pointer_int_comparison.patch b/nixpkgs/pkgs/applications/misc/gosmore/pointer_int_comparison.patch
new file mode 100644
index 000000000000..4a715b6d8591
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gosmore/pointer_int_comparison.patch
@@ -0,0 +1,11 @@
+--- blah_/jni/gosmore.cpp	1970-01-01 01:00:01.000000000 +0100

++++ /dev/stdin	2018-03-18 00:21:08.474217132 +0100

+@@ -1273,7 +1273,7 @@

+       if (deg[i] < -180 || deg[i] > 180) break;

+       if (i == 0 && (strncasecmp (t, "lat", 3) == 0 ||

+                      strncasecmp (t, "lon", 3) == 0)) { // lat=-25.7 lon=28.2

+-        for (t += 3; t != '\0' && !isalnum (*t); t++) {}

++        for (t += 3; *t != '\0' && !isalnum (*t); t++) {}

+       }

+       if (i == 1) { // Success !

+         //printf ("%lf %lf %u\n", deg[lonFirst ? 1 : 0], deg[lonFirst ? 0 : 1],

diff --git a/nixpkgs/pkgs/applications/misc/gpa/default.nix b/nixpkgs/pkgs/applications/misc/gpa/default.nix
new file mode 100644
index 000000000000..cd7b724a1d78
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gpa/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, intltool, pkgconfig, gtk2, gpgme, libgpgerror, libassuan }:
+
+stdenv.mkDerivation rec {
+  name = "gpa-0.10.0";
+
+  src = fetchurl {
+    url = "mirror://gnupg/gpa/${name}.tar.bz2";
+    sha256 = "1cbpc45f8qbdkd62p12s3q2rdq6fa5xdzwmcwd3xrj55bzkspnwm";
+  };
+
+  nativeBuildInputs = [ intltool pkgconfig ];
+  buildInputs = [ gtk2 gpgme libgpgerror libassuan ];
+
+  meta = with stdenv.lib; {
+    description = "Graphical user interface for the GnuPG";
+    homepage = "https://www.gnupg.org/related_software/gpa/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gpg-mdp/default.nix b/nixpkgs/pkgs/applications/misc/gpg-mdp/default.nix
new file mode 100644
index 000000000000..cf3d6fe9e93e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gpg-mdp/default.nix
@@ -0,0 +1,35 @@
+{ fetchurl, stdenv, ncurses, gnupg }:
+
+let version = "0.7.4";
+in stdenv.mkDerivation {
+  # mdp renamed to gpg-mdp because there is a mdp package already.
+  pname = "gpg-mdp";
+  inherit version;
+  meta = {
+    homepage = "https://tamentis.com/projects/mdp/";
+    license = [stdenv.lib.licenses.isc];
+    description = "Manage your passwords with GnuPG and a text editor";
+  };
+  src = fetchurl {
+    url = "https://tamentis.com/projects/mdp/files/mdp-${version}.tar.gz";
+    sha256 = "04mdnx4ccpxf9m2myy9nvpl9ma4jgzmv9bkrzv2b9affzss3r34g";
+  };
+  buildInputs = [ ncurses ];
+  prePatch = ''
+    substituteInPlace ./configure \
+      --replace "alias echo=/bin/echo" ""
+
+    substituteInPlace ./src/config.c \
+      --replace "/usr/bin/gpg" "${gnupg}/bin/gpg" \
+      --replace "/usr/bin/vi" "vi"
+
+    substituteInPlace ./mdp.1 \
+      --replace "/usr/bin/gpg" "${gnupg}/bin/gpg"
+  '';
+  # we add symlinks to the binary and man page with the name 'gpg-mdp', in case
+  # the completely unrelated program also named 'mdp' is already installed.
+  postFixup = ''
+    ln -s $out/bin/mdp $out/bin/gpg-mdp
+    ln -s $out/share/man/man1/mdp.1.gz $out/share/man/man1/gpg-mdp.1.gz
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/misc/gphoto2/default.nix b/nixpkgs/pkgs/applications/misc/gphoto2/default.nix
new file mode 100644
index 000000000000..1235a41ffc7b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gphoto2/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, pkgconfig, libgphoto2, libexif, popt, gettext
+, libjpeg, readline, libtool
+}:
+
+stdenv.mkDerivation rec {
+  name = "gphoto2-2.5.23";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/gphoto/${name}.tar.bz2";
+    sha256 = "1laqwhxr0xhbykmp0dhd3j4rr2lhj5y228s31afnqxp700hhk1yz";
+  };
+
+  nativeBuildInputs = [ pkgconfig gettext libtool ];
+  buildInputs = [ libgphoto2 libexif popt libjpeg readline ];
+
+  meta = with stdenv.lib; {
+    description = "A ready to use set of digital camera software applications";
+    longDescription = ''
+
+      A set of command line utilities for manipulating over 1400 different
+      digital cameras. Through libgphoto2, it supports PTP, MTP, and much more..
+
+    '';
+    homepage = "http://www.gphoto.org/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.jcumming ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gphoto2/gphotofs.nix b/nixpkgs/pkgs/applications/misc/gphoto2/gphotofs.nix
new file mode 100644
index 000000000000..668706ca3895
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gphoto2/gphotofs.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, libtool, pkgconfig, libgphoto2, fuse, glib }:
+
+stdenv.mkDerivation rec {
+  pname = "gphoto2fs";
+  version = "0.5.0";
+  src = fetchurl {
+    url="mirror://sourceforge/gphoto/gphotofs/${version}/gphotofs-0.5.tar.bz2";
+    sha256 = "1k23ncbsbh64r7kz050bg31jqamchyswgg9izhzij758d7gc8vk7";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    libgphoto2 fuse glib libtool
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Fuse FS to mount a digital camera";
+    homepage = "http://www.gphoto.org/";
+    maintainers = [ maintainers.raskin ];
+    platforms = platforms.linux;
+    license = with licenses; [ lgpl2 gpl2 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gpsbabel/default.nix b/nixpkgs/pkgs/applications/misc/gpsbabel/default.nix
new file mode 100644
index 000000000000..ef4c732ef521
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gpsbabel/default.nix
@@ -0,0 +1,77 @@
+{ lib, stdenv, fetchFromGitHub, fetchpatch, zlib, which, IOKit, qtbase }:
+
+stdenv.mkDerivation rec {
+  pname = "gpsbabel";
+  version = "1.6.0";
+
+  src = fetchFromGitHub {
+    owner = "gpsbabel";
+    repo = "gpsbabel";
+    rev = "gpsbabel_${lib.replaceStrings ["."] ["_"] version}";
+    sha256 = "0q17jhmaf7z5lld2ff7h6jb3v1yz8hbwd2rmaq2dsamc53dls8iw";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://sources.debian.net/data/main/g/gpsbabel/1.5.3-2/debian/patches/use_minizip";
+      sha256 = "03fpsmlx1wc48d1j405zkzp8j64hcp0z72islf4mk1immql3ibcr";
+    })
+  ];
+
+  buildInputs = [ zlib qtbase which ]
+    ++ lib.optionals stdenv.isDarwin [ IOKit ];
+
+  /* FIXME: Building the documentation, with "make doc", requires this:
+
+      [ libxml2 libxslt perl docbook_xml_dtd_412 docbook_xsl fop ]
+
+    But FOP isn't packaged yet.  */
+
+  configureFlags = [ "--with-zlib=system" ]
+    # Floating point behavior on i686 causes test failures. Preventing
+    # extended precision fixes this problem.
+    ++ stdenv.lib.optionals stdenv.isi686 [
+      "CFLAGS=-ffloat-store" "CXXFLAGS=-ffloat-store"
+    ];
+
+  enableParallelBuilding = true;
+
+  doCheck = true;
+  preCheck = ''
+    patchShebangs testo
+    substituteInPlace testo \
+      --replace "-x /usr/bin/hexdump" ""
+  ''
+    # The raymarine and gtm tests fail on i686 despite -ffloat-store.
+  + lib.optionalString stdenv.isi686 "rm -v testo.d/raymarine.test testo.d/gtm.test;"
+    # The gtm, kml and tomtom asc tests fail on darwin, see PR #23572.
+  + lib.optionalString stdenv.isDarwin "rm -v testo.d/gtm.test testo.d/kml.test testo.d/tomtom_asc.test testo.d/classic-2.test"
+    # The arc-project test fails on aarch64.
+  + lib.optionalString stdenv.isAarch64 "rm -v testo.d/arc-project.test";
+
+  meta = with stdenv.lib; {
+    description = "Convert, upload and download data from GPS and Map programs";
+    longDescription = ''
+      GPSBabel converts waypoints, tracks, and routes between popular
+      GPS receivers and mapping programs.  It also has powerful
+      manipulation tools for such data.
+
+      By flattening the Tower of Babel that the authors of various
+      programs for manipulating GPS data have imposed upon us, it
+      returns to us the ability to freely move our own waypoint data
+      between the programs and hardware we choose to use.
+
+      It contains extensive data manipulation abilities making it a
+      convenient for server-side processing or as the backend for
+      other tools.
+
+      It does not convert, transfer, send, or manipulate maps.  We
+      process data that may (or may not be) placed on a map, such as
+      waypoints, tracks, and routes.
+    '';
+    homepage = "http://www.gpsbabel.org/";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.rycee ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gpsbabel/gui.nix b/nixpkgs/pkgs/applications/misc/gpsbabel/gui.nix
new file mode 100644
index 000000000000..57eca9f47a58
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gpsbabel/gui.nix
@@ -0,0 +1,49 @@
+{ stdenv, mkDerivation, qmake, qttools, qtwebkit, qttranslations, gpsbabel }:
+
+mkDerivation {
+  pname = "gpsbabel-gui";
+
+  inherit (gpsbabel) src version;
+
+  sourceRoot = "source/gui";
+
+  nativeBuildInputs = [ qmake qttools ];
+  buildInputs = [ qtwebkit ];
+
+  postPatch = ''
+    substituteInPlace mainwindow.cc \
+      --replace "QApplication::applicationDirPath() + \"/" "\"" \
+      --replace "QApplication::applicationDirPath() + '/' + " "" \
+      --replace "translator.load(full_filename)" "translator.load(filename)" \
+      --replace "gpsbabelfe_%1.qm" "$out/share/gpsbabel/translations/gpsbabelfe_%1.qm" \
+      --replace "gpsbabel_%1.qm" "$out/share/gpsbabel/translations/gpsbabel_%1.qm" \
+      --replace "qt_%1.qm" "${qttranslations}/translations/qt_%1.qm"
+    substituteInPlace formatload.cc \
+      --replace "QApplication::applicationDirPath() + \"/" "\""
+    substituteInPlace gpsbabel.desktop \
+      --replace "gpsbabelfe-bin" "gpsbabelfe"
+  '';
+
+  preConfigure = ''
+    lrelease *.ts coretool/*.ts
+  '';
+
+  qtWrapperArgs = [
+    "--prefix PATH : ${stdenv.lib.makeBinPath [ gpsbabel ]}"
+  ];
+
+  postInstall = ''
+    install -Dm755 objects/gpsbabelfe -t $out/bin
+    install -Dm644 gpsbabel.desktop -t $out/share/applications
+    install -Dm644 images/appicon.png $out/share/icons/hicolor/512x512/apps/gpsbabel.png
+    install -Dm644 *.qm coretool/*.qm -t $out/share/gpsbabel/translations
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Qt-based GUI for gpsbabel";
+    homepage = "http://www.gpsbabel.org/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ sikmir ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gpscorrelate/default.nix b/nixpkgs/pkgs/applications/misc/gpscorrelate/default.nix
new file mode 100644
index 000000000000..07918d3d599d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gpscorrelate/default.nix
@@ -0,0 +1,64 @@
+{ fetchFromGitHub, stdenv, fetchpatch, pkgconfig, exiv2, libxml2, gtk3
+, libxslt, docbook_xsl, docbook_xml_dtd_42, desktop-file-utils }:
+
+stdenv.mkDerivation rec {
+  pname = "gpscorrelate";
+  version = "2.0";
+
+  src = fetchFromGitHub {
+    owner = "dfandrich";
+    repo = pname;
+    rev = version;
+    sha256 = "1wkpb0nqnm0ik46hp2sibf96h2gxi6n951zm8c72scgmh4ciq4fl";
+  };
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    docbook_xml_dtd_42
+    docbook_xsl
+    libxslt
+    pkgconfig
+  ];
+
+  buildInputs = [
+    exiv2
+    gtk3
+    libxml2
+  ];
+
+  makeFlags = [
+    "prefix=${placeholder "out"}"
+    "CC=cc"
+    "CXX=c++"
+    "CFLAGS=-DENABLE_NLS"
+  ];
+
+  doCheck = true;
+
+  installTargets = [ "install" "install-po" "install-desktop-file" ];
+
+  meta = with stdenv.lib; {
+    description = "A GPS photo correlation tool, to add EXIF geotags";
+
+    longDescription = ''
+      Digital cameras are cool.  So is GPS.  And, EXIF tags are really
+      cool too.
+
+      What happens when you merge the three?  You end up with a set of
+      photos taken with a digital camera that are "stamped" with the
+      location at which they were taken.
+
+      The EXIF standard defines a number of tags that are for use with GPS.
+
+      A variety of programs exist around the place to match GPS data
+      with digital camera photos, but most of them are Windows or
+      MacOS only.  Which doesn't really suit me that much. Also, each
+      one takes the GPS data in a different format.
+    '';
+
+    license = licenses.gpl2Plus;
+    homepage = "https://dfandrich.github.io/gpscorrelate/";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ sikmir ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gpsprune/default.nix b/nixpkgs/pkgs/applications/misc/gpsprune/default.nix
new file mode 100644
index 000000000000..63ca213c2c42
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gpsprune/default.nix
@@ -0,0 +1,43 @@
+{ fetchurl, stdenv, makeDesktopItem, makeWrapper, unzip, jdk11 }:
+
+stdenv.mkDerivation rec {
+  pname = "gpsprune";
+  version = "20";
+
+  src = fetchurl {
+    url = "https://activityworkshop.net/software/gpsprune/gpsprune_${version}.jar";
+    sha256 = "1i9p6h98azgradrrkcwx18zwz4c6zkxp4bfykpa2imi1z3ry5q2b";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ jdk11 ];
+
+  desktopItem = makeDesktopItem {
+    name = "gpsprune";
+    exec = "gpsprune";
+    icon = "gpsprune";
+    desktopName = "GpsPrune";
+    genericName = "GPS Data Editor";
+    comment = meta.description;
+    categories = "Education;Geoscience;";
+  };
+
+  buildCommand = ''
+    mkdir -p $out/bin $out/share/java
+    cp -v $src $out/share/java/gpsprune.jar
+    makeWrapper ${jdk11}/bin/java $out/bin/gpsprune \
+      --add-flags "-jar $out/share/java/gpsprune.jar"
+    mkdir -p $out/share/applications
+    cp $desktopItem/share/applications"/"* $out/share/applications
+    mkdir -p $out/share/pixmaps
+    ${unzip}/bin/unzip -p $src tim/prune/gui/images/window_icon_64.png > $out/share/pixmaps/gpsprune.png
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Application for viewing, editing and converting GPS coordinate data";
+    homepage = "https://activityworkshop.net/software/gpsprune/";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.rycee ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gpx-viewer/default.nix b/nixpkgs/pkgs/applications/misc/gpx-viewer/default.nix
new file mode 100644
index 000000000000..64296688c93e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gpx-viewer/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, intltool, libxml2, pkgconfig, gnome3, libchamplain, gdl, shared-mime-info, desktop-file-utils, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "gpx-viewer";
+  version = "0.4.0";
+
+  src = fetchurl {
+    url = "https://launchpad.net/gpx-viewer/trunk/${version}/+download/${pname}-${version}.tar.gz";
+    sha256 = "956acfaf870ac436300cd9953dece630df7fd7dff8e4ae2577a6002884466f80";
+  };
+
+  patches = fetchurl {
+    url = "https://code.launchpad.net/~chkr/gpx-viewer/gtk3-bugfix/+merge/260766/+preview-diff/628965/+files/preview.diff";
+    sha256 = "1yl7jk7skkcx10nny5zdixswcymjd9s9c1zhm1i5y3aqhchvmfs7";
+  };
+  patchFlags = [ "-p0" ];
+
+  configureFlags = [ "--disable-database-updates" ];
+
+  nativeBuildInputs = [
+    intltool pkgconfig
+    wrapGAppsHook # Fix error: GLib-GIO-ERROR **: No GSettings schemas are installed on the system
+  ];
+  buildInputs = [ gdl libchamplain gnome3.adwaita-icon-theme libxml2 ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://blog.sarine.nl/tag/gpxviewer/";
+    description = "Simple tool to visualize tracks and waypoints stored in a gpx file";
+    platforms = with platforms; linux;
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gpx/default.nix b/nixpkgs/pkgs/applications/misc/gpx/default.nix
new file mode 100644
index 000000000000..dcf022fc4453
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gpx/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, autoreconfHook }:
+
+stdenv.mkDerivation rec {
+  pname = "gpx";
+  version = "2.5.2";
+
+  nativeBuildInputs = [ autoreconfHook ];
+
+  src = fetchFromGitHub {
+    owner = "markwal";
+    repo = "GPX";
+    rev = version;
+    sha256 = "1yab269x8qyf7rd04vaxyqyjv4pzz9lp4sc4dwh927k23avr3rw5";
+  };
+
+  meta = {
+    description = "Gcode to x3g conversion postprocessor";
+    homepage = "https://github.com/markwal/GPX/";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.leo60228 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gpxlab/default.nix b/nixpkgs/pkgs/applications/misc/gpxlab/default.nix
new file mode 100644
index 000000000000..3b432ff66b12
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gpxlab/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, mkDerivation, lib, fetchFromGitHub, qmake, qttools, qttranslations }:
+
+mkDerivation rec {
+  pname = "gpxlab";
+  version = "0.7.0";
+
+  src = fetchFromGitHub {
+    owner = "BourgeoisLab";
+    repo = "GPXLab";
+    rev = "v${version}";
+    sha256 = "080vnwcciqblfrbfyz9gjhl2lqw1hkdpbgr5qfrlyglkd4ynjd84";
+  };
+
+  nativeBuildInputs = [ qmake ];
+  buildInputs = [ qttools qttranslations ];
+
+  preConfigure = ''
+    lrelease GPXLab/locale/*.ts
+  '';
+
+  postInstall = lib.optionalString stdenv.isDarwin ''
+    mkdir -p $out/Applications
+    mv GPXLab/GPXLab.app $out/Applications
+    wrapQtApp $out/Applications/GPXLab.app/Contents/MacOS/GPXLab
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    homepage = "https://github.com/BourgeoisLab/GPXLab";
+    description = "Program to show and manipulate GPS tracks";
+    longDescription = ''
+      GPXLab is an application to display and manage GPS tracks
+      previously recorded with a GPS tracker.
+    '';
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ sikmir ];
+    platforms = with platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gpxsee/default.nix b/nixpkgs/pkgs/applications/misc/gpxsee/default.nix
new file mode 100644
index 000000000000..b3dbecb56b1b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gpxsee/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, mkDerivation, fetchFromGitHub, qmake, qttools, qttranslations }:
+
+mkDerivation rec {
+  pname = "gpxsee";
+  version = "7.30";
+
+  src = fetchFromGitHub {
+    owner = "tumic0";
+    repo = "GPXSee";
+    rev = version;
+    sha256 = "09gajwqc30r9a2sn972qdx3gx0gki9n0zafq986hn6zsr3z43mfs";
+  };
+
+  patches = [
+    # See https://github.com/NixOS/nixpkgs/issues/86054
+    ./fix-qttranslations-path.diff
+  ];
+
+  nativeBuildInputs = [ qmake qttools ];
+
+  postPatch = ''
+    substituteInPlace src/GUI/app.cpp \
+      --subst-var-by qttranslations ${qttranslations}
+  '';
+
+  preConfigure = ''
+    lrelease gpxsee.pro
+  '';
+
+  postInstall = with stdenv; lib.optionalString isDarwin ''
+    mkdir -p $out/Applications
+    mv GPXSee.app $out/Applications
+    wrapQtApp $out/Applications/GPXSee.app/Contents/MacOS/GPXSee
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.gpxsee.org/";
+    description = "GPS log file viewer and analyzer";
+    longDescription = ''
+      GPXSee is a Qt-based GPS log file viewer and analyzer that supports
+      all common GPS log file formats.
+    '';
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ womfoo sikmir ];
+    platforms = with platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gpxsee/fix-qttranslations-path.diff b/nixpkgs/pkgs/applications/misc/gpxsee/fix-qttranslations-path.diff
new file mode 100644
index 000000000000..3b546338d209
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gpxsee/fix-qttranslations-path.diff
@@ -0,0 +1,18 @@
+diff --git i/src/GUI/app.cpp w/src/GUI/app.cpp
+index 10e84d5..1e0abbe 100644
+--- i/src/GUI/app.cpp
++++ w/src/GUI/app.cpp
+@@ -34,11 +34,10 @@ App::App(int &argc, char **argv) : QApplication(argc, argv)
+ 	installTranslator(gpxsee);
+ 
+ 	QTranslator *qt = new QTranslator(this);
+-#if defined(Q_OS_WIN32) || defined(Q_OS_MAC)
++#if defined(Q_OS_WIN32)
+ 	qt->load(QLocale::system(), "qt", "_", ProgramPaths::translationsDir());
+ #else // Q_OS_WIN32 || Q_OS_MAC
+-	qt->load(QLocale::system(), "qt", "_", QLibraryInfo::location(
+-	  QLibraryInfo::TranslationsPath));
++	qt->load(QLocale::system(), "qt", "_", QLatin1String("@qttranslations@/translations"));
+ #endif // Q_OS_WIN32 || Q_OS_MAC
+ 	installTranslator(qt);
+ 
diff --git a/nixpkgs/pkgs/applications/misc/gramps/default.nix b/nixpkgs/pkgs/applications/misc/gramps/default.nix
new file mode 100644
index 000000000000..e5a2b87f16ef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gramps/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, fetchFromGitHub, gtk3, pythonPackages, intltool, gnome3,
+  pango, gobject-introspection, wrapGAppsHook, gettext,
+# Optional packages:
+ enableOSM ? true, osm-gps-map,
+ enableGraphviz ? true, graphviz,
+ enableGhostscript ? true, ghostscript
+ }:
+
+let
+  inherit (pythonPackages) python buildPythonApplication;
+in buildPythonApplication rec {
+  version = "5.0.1";
+  pname = "gramps";
+
+  nativeBuildInputs = [ wrapGAppsHook gettext ];
+  buildInputs = [ intltool gtk3 gobject-introspection pango gnome3.gexiv2 ] 
+    # Map support
+    ++ stdenv.lib.optional enableOSM osm-gps-map
+    # Graphviz support
+    ++ stdenv.lib.optional enableGraphviz graphviz
+    # Ghostscript support
+    ++ stdenv.lib.optional enableGhostscript ghostscript
+    
+  ;
+
+  src = fetchFromGitHub {
+    owner = "gramps-project";
+    repo = "gramps";
+    rev = "v${version}";
+    sha256 = "1jz1fbjj6byndvir7qxzhd2ryirrd5h2kwndxpp53xdc05z1i8g7";
+  };
+
+  pythonPath = with pythonPackages; [ bsddb3 PyICU pygobject3 pycairo ];
+
+  # Same installPhase as in buildPythonApplication but without --old-and-unmanageble
+  # install flag.
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p "$out/lib/${python.libPrefix}/site-packages"
+
+    export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH"
+
+    ${python}/bin/${python.executable} setup.py install \
+      --install-lib=$out/lib/${python.libPrefix}/site-packages \
+      --prefix="$out"
+
+    eapth="$out/lib/${python.libPrefix}"/site-packages/easy-install.pth
+    if [ -e "$eapth" ]; then
+        # move colliding easy_install.pth to specifically named one
+        mv "$eapth" $(dirname "$eapth")/${pname}-${version}.pth
+    fi
+
+    rm -f "$out/lib/${python.libPrefix}"/site-packages/site.py*
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Genealogy software";
+    homepage = "https://gramps-project.org";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ joncojonathan ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/green-pdfviewer/default.nix b/nixpkgs/pkgs/applications/misc/green-pdfviewer/default.nix
new file mode 100644
index 000000000000..4e888f4faac8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/green-pdfviewer/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, poppler, pkgconfig, gdk-pixbuf, SDL, gtk2 }:
+
+stdenv.mkDerivation {
+  pname = "green-pdfviewer";
+  version = "nightly-2014-04-22";
+
+  src = fetchFromGitHub {
+    owner = "schandinat";
+    repo = "green";
+    rev = "0b516aec17915d9742d8e505d2ed383a3bdcea61";
+    sha256 = "0d0lv33flhgsxhc77kfp2avdz5gvml04r8l1j95yjz2rr096lzlj";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ poppler gdk-pixbuf SDL gtk2 ];
+
+  patches = [
+    ./gdk-libs.patch
+  ];
+
+  buildPhase = ''
+    make PREFIX=$out
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/man1
+    make install PREFIX=$out MANDIR=$out/share
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/schandinat/green/";
+    description = "Viewer for PDF files, uses SDL and libpoppler";
+
+    platforms = platforms.unix;
+    license  = licenses.gpl3;
+    maintainers = [ maintainers.vrthra ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/green-pdfviewer/gdk-libs.patch b/nixpkgs/pkgs/applications/misc/green-pdfviewer/gdk-libs.patch
new file mode 100644
index 000000000000..cfcab32aac99
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/green-pdfviewer/gdk-libs.patch
@@ -0,0 +1,55 @@
+Common subdirectories: green.old/debian and green.new/debian
+diff -u green.old/green.h green.new/green.h
+--- green.old/green.h	2016-06-12 18:11:56.779434416 -0700
++++ green.new/green.h	2016-06-12 18:14:38.830557379 -0700
+@@ -19,7 +19,14 @@
+ 
+ 
+ #include <stdbool.h>
+-#include "glib/poppler.h"
++#include "poppler.h"
++#include "gdk-pixbuf/gdk-pixbuf.h"
++#include "gdk-pixbuf/gdk-pixbuf-core.h"
++#include "gdk-pixbuf/gdk-pixbuf-features.h"
++#include "gdk-pixbuf/gdk-pixbuf-enum-types.h"
++ 
++ #define GREEN_FULLSCREEN	0x0001
++ 
+ 
+ 
+ #define GREEN_FULLSCREEN	0x0001
+diff -u green.old/Makefile green.new/Makefile
+--- green.old/Makefile	2016-06-12 18:11:56.779434416 -0700
++++ green.new/Makefile	2016-06-12 18:13:09.591974048 -0700
+@@ -17,6 +17,12 @@
+ SDL_CFLAGS	:=	$$(sdl-config --cflags)
+ SDL_LIBS	:=	$$(sdl-config --libs)
+ 
++GDKPIXBUF_CFLAGS	:=	$$(pkg-config gdk-pixbuf-2.0 --cflags)
++GDKPIXBUF_LIBS	:=	$$(pkg-config gdk-pixbuf-2.0 --libs)
++
++GTK_CFLAGS	:=	$$(pkg-config gtk+-2.0 --cflags)
++GTK_LIBS	:=	$$(pkg-config gtk+-2.0 --libs)
++
+ 
+ all: green
+ 
+@@ -28,13 +34,14 @@
+ 	$(INSTALL) green.1 $(MANDIR)/man1/
+ 
+ green: main.o green.o sdl.o
+-	$(CC) $^ $(POPPLER_LIBS) $(SDL_LIBS) -o $@
++	$(CC) $^ $(POPPLER_LIBS) $(SDL_LIBS) $(GDKPIXBUF_LIBS) $(GTK_LIBS) -o $@
+ 
+ main.o: main.c green.h
+-	$(CC) $(CONFIG) $(CFLAGS) -c $< $(POPPLER_CFLAGS) -o $@
++	$(CC) $(CONFIG) $(CFLAGS) $(GDKPIXBUF_CFLAGS) -c $< $(POPPLER_CFLAGS) -o $@
+ 
+ green.o: green.c green.h
+-	$(CC) $(CFLAGS) -c $< $(POPPLER_CFLAGS) -o $@
++	$(CC) $(CFLAGS) -c $< $(POPPLER_CFLAGS)  $(GDKPIXBUF_CFLAGS) -o $@
+ 
+ sdl.o: sdl.c green.h
+-	$(CC) $(CFLAGS) -c $< $(POPPLER_CFLAGS) $(SDL_CFLAGS) -o $@
++	$(CC) $(CFLAGS) -c $< $(POPPLER_CFLAGS) $(SDL_CFLAGS) $(GDKPIXBUF_CFLAGS) $(GTK_CFLAGS) -o $@
++
diff --git a/nixpkgs/pkgs/applications/misc/gremlin-console/default.nix b/nixpkgs/pkgs/applications/misc/gremlin-console/default.nix
new file mode 100644
index 000000000000..a4932943fa23
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gremlin-console/default.nix
@@ -0,0 +1,29 @@
+{ fetchzip, stdenv, makeWrapper, openjdk }:
+
+stdenv.mkDerivation rec {
+  pname = "gremlin-console";
+  version = "3.3.4";
+  src = fetchzip {
+    url = "http://www-eu.apache.org/dist/tinkerpop/${version}/apache-tinkerpop-gremlin-console-${version}-bin.zip";
+    sha256 = "14xr0yqklmm4jvj1hnkj89lj83zzs2l1375ni0jbf12gy31jlb2w";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/opt
+    cp -r ext lib $out/opt/
+    install -D bin/gremlin.sh $out/opt/bin/gremlin-console
+    makeWrapper $out/opt/bin/gremlin-console $out/bin/gremlin-console \
+      --prefix PATH ":" "${openjdk}/bin/" \
+      --set CLASSPATH "$out/opt/lib/"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://tinkerpop.apache.org/";
+    description = "Console of the Apache TinkerPop graph computing framework";
+    license = licenses.asl20;
+    maintainers = [ maintainers.lewo ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/grip/default.nix b/nixpkgs/pkgs/applications/misc/grip/default.nix
new file mode 100644
index 000000000000..b1985be2c946
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/grip/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, gtk2, glib, pkgconfig, libgnome, libgnomeui, vte
+, curl, cdparanoia, libid3tag, ncurses, libtool }:
+
+stdenv.mkDerivation rec {
+  name = "grip-4.1.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/grip/${name}.tar.gz";
+    sha256 = "1sbjgawb7qrinixybwi0adk7mpdfb565gkffp5gxxsw8fqd068fs";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gtk2 glib libgnome libgnomeui vte curl cdparanoia
+    libid3tag ncurses libtool ];
+
+  hardeningDisable = [ "format" ];
+
+  # glib-2.62 deprecations
+  NIX_CFLAGS_COMPILE = "-DGLIB_DISABLE_DEPRECATION_WARNINGS";
+
+  meta = {
+    description = "GTK-based audio CD player/ripper";
+    homepage = "http://nostatic.org/grip";
+    license = stdenv.lib.licenses.gpl2;
+
+    maintainers = with stdenv.lib.maintainers; [ marcweber peti ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/grsync/default.nix b/nixpkgs/pkgs/applications/misc/grsync/default.nix
new file mode 100644
index 000000000000..8d17ff09204f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/grsync/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, dee, gtk2, intltool, libdbusmenu-gtk2, libunity, pkg-config, rsync }:
+
+stdenv.mkDerivation rec {
+  version = "1.2.8";
+  pname = "grsync";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/grsync/grsync-${version}.tar.gz";
+    sha256 = "1c86jch73cy7ig9k4shvcd3jnaxk7jppfcr8nmkz8gbylsn5zsll";
+  };
+
+  nativeBuildInputs = [
+    intltool
+    pkg-config
+  ];
+
+  buildInputs = [
+    dee
+    gtk2
+    libdbusmenu-gtk2
+    libunity
+    rsync
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Grsync is used to synchronize folders, files and make backups";
+    homepage = "http://www.opbyte.it/grsync/";
+    license = licenses.gpl1;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.kuznero ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gsctl/default.nix b/nixpkgs/pkgs/applications/misc/gsctl/default.nix
new file mode 100644
index 000000000000..e80f43f5bd9b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gsctl/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "gsctl";
+  version = "0.15.4";
+
+  goPackagePath = "github.com/giantswarm/gsctl";
+
+  src = fetchFromGitHub {
+    owner = "giantswarm";
+    repo = pname;
+    rev  = version;
+    sha256 = "0s5bli08wfd9xszx3kc90k51vlgjc00r0qg4mikb6qdc4pxpgsxj";
+  };
+
+  meta = with stdenv.lib; {
+    description = "The Giant Swarm command line interface";
+    homepage = "https://github.com/giantswarm/gsctl";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ joesalisbury ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gsimplecal/default.nix b/nixpkgs/pkgs/applications/misc/gsimplecal/default.nix
new file mode 100644
index 000000000000..e83e349b21c1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gsimplecal/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, automake, autoconf, pkgconfig, gtk3 }:
+
+stdenv.mkDerivation rec {
+  pname = "gsimplecal";
+  version = "2.1";
+
+  src = fetchurl {
+    url = "https://github.com/dmedvinsky/gsimplecal/archive/v${version}.tar.gz";
+    sha256 = "1sa05ifjp41xipfspk5n6l3wzpzmp3i45q88l01p4l6k6drsq336";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ automake autoconf gtk3 ];
+
+  preConfigure = "./autogen.sh";
+
+  meta = {
+    homepage = "http://dmedvinsky.github.io/gsimplecal/";
+    description = "Lightweight calendar application written in C++ using GTK";
+    longDescription = ''
+      gsimplecal was intentionally made for use with tint2 panel in the
+      openbox environment to be launched upon clock click, but of course it
+      will work without it. In fact, binding the gsimplecal to some hotkey in
+      you window manager will probably make you happy. The thing is that when
+      it is started it first shows up, when you run it again it closes the
+      running instance. In that way it is very easy to integrate anywhere. No
+      need to write some wrapper scripts or whatever.
+
+      Also, you can configure it to not only show the calendar, but also
+      display multiple clocks for different world time zones.
+    '';
+    license = stdenv.lib.licenses.bsd3;
+    maintainers = [ stdenv.lib.maintainers.romildo ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gtk2fontsel/default.nix b/nixpkgs/pkgs/applications/misc/gtk2fontsel/default.nix
new file mode 100644
index 000000000000..21ad7d757a19
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gtk2fontsel/default.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchurl, pkgconfig, gtk2 }:
+
+stdenv.mkDerivation rec {
+  version = "0.1";
+  pname = "gtk2fontsel";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/gtk2fontsel/${pname}-${version}.tar.gz";
+    sha256 = "0s2sj19n8ys92q9832hkn36ld91bb4qavicc6nygkry6qdpkkmjw";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ stdenv gtk2 ];
+
+  preferLocalBuild = true;
+
+  meta = with stdenv.lib; {
+    description = "A font selection program for X11 using the GTK 2 toolkit";
+    longDescription = ''
+      Font selection tool similar to xfontsel implemented using GTK 2.
+      Trivial, but useful nonetheless.
+    '';
+    homepage = "http://gtk2fontsel.sourceforge.net/";
+    downloadPage = "https://sourceforge.net/projects/gtk2fontsel/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.prikhi ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/guake/default.nix b/nixpkgs/pkgs/applications/misc/guake/default.nix
new file mode 100644
index 000000000000..d403ddc8b26c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/guake/default.nix
@@ -0,0 +1,74 @@
+{ stdenv
+, fetchFromGitHub
+, python3
+, gettext
+, gobject-introspection
+, wrapGAppsHook
+, gtk3
+, keybinder3
+, libnotify
+, libutempter
+, vte
+, libwnck3
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "guake";
+  version = "3.6.3";
+
+  format = "other";
+
+  src = fetchFromGitHub {
+    owner = "Guake";
+    repo = "guake";
+    rev = version;
+    sha256 = "13ipnmqcyixpa6qv83m0f91za4kar14s5jpib68b32z65x1h0j3b";
+  };
+
+  # Strict deps breaks guake
+  # See https://github.com/NixOS/nixpkgs/issues/59930
+  # and https://github.com/NixOS/nixpkgs/issues/56943
+  strictDeps = false;
+
+  nativeBuildInputs = [
+    gettext
+    gobject-introspection
+    wrapGAppsHook
+    python3.pkgs.pip
+  ];
+
+  buildInputs = [
+    gtk3
+    keybinder3
+    libnotify
+    libwnck3
+    python3
+    vte
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    dbus-python
+    pbr
+    pycairo
+    pygobject3
+    setuptools
+  ];
+
+  PBR_VERSION = version; # pbr needs either .git directory, sdist, or env var
+
+  makeFlags = [
+    "prefix=${placeholder ''out''}"
+  ];
+
+  preFixup = ''
+    gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ libutempter ]}")
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Drop-down terminal for GNOME";
+    homepage = "http://guake-project.org";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.msteen ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gummi/default.nix b/nixpkgs/pkgs/applications/misc/gummi/default.nix
new file mode 100644
index 000000000000..af121758c3cd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gummi/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, pkgs
+, glib, gnome3, gtk3, gtksourceview3, gtkspell3, poppler, texlive
+, pkgconfig, intltool, autoreconfHook, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  version = "0.8.1";
+  pname = "gummi";
+
+  src = pkgs.fetchFromGitHub {
+    owner = "alexandervdm";
+    repo = "gummi";
+    rev = version;
+    sha256 = "0wxgmzazqiq77cw42i5fn2hc22hhxf5gbpl9g8y3zlnp21lw9y16";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig intltool autoreconfHook wrapGAppsHook
+  ];
+  buildInputs = [
+    glib gtksourceview3 gtk3 gtkspell3 poppler
+    texlive.bin.core # needed for synctex
+  ];
+
+  postInstall = ''
+    install -Dpm644 COPYING $out/share/licenses/$name/COPYING
+  '';
+
+  meta = {
+    homepage = "https://gummi.app";
+    description = "Simple LaTex editor for GTK users";
+    license = stdenv.lib.licenses.mit;
+    maintainers = with stdenv.lib.maintainers; [ flokli ];
+    platforms = with stdenv.lib.platforms; linux;
+    inherit version;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gv/default.nix b/nixpkgs/pkgs/applications/misc/gv/default.nix
new file mode 100644
index 000000000000..accf62c0c469
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gv/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchurl, Xaw3d, ghostscriptX, perl, pkgconfig, libiconv }:
+
+let
+  name = "gv-3.7.4";
+in
+stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchurl {
+    url = "mirror://gnu/gv/${name}.tar.gz";
+    sha256 = "0q8s43z14vxm41pfa8s5h9kyyzk1fkwjhkiwbf2x70alm6rv6qi1";
+  };
+
+  configureFlags = stdenv.lib.optionals stdenv.isDarwin [
+    "--enable-SIGCHLD-fallback"
+  ];
+
+  buildInputs = [
+    Xaw3d
+    ghostscriptX
+    perl
+    pkgconfig
+  ] ++ stdenv.lib.optionals stdenv.isDarwin [
+    libiconv
+  ];
+
+  patchPhase = ''
+    sed 's|\<gs\>|${ghostscriptX}/bin/gs|g' -i "src/"*.in
+    sed 's|"gs"|"${ghostscriptX}/bin/gs"|g' -i "src/"*.c
+  '';
+
+  doCheck = true;
+
+  meta = {
+    homepage = "https://www.gnu.org/software/gv/";
+    description = "PostScript/PDF document viewer";
+
+    longDescription = ''
+      GNU gv allows users to view and navigate through PostScript and
+      PDF documents on an X display by providing a graphical user
+      interface for the Ghostscript interpreter.
+    '';
+
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = [ ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gxmessage/default.nix b/nixpkgs/pkgs/applications/misc/gxmessage/default.nix
new file mode 100644
index 000000000000..ce0a6963ea99
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gxmessage/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, gtk3, intltool, pkgconfig, texinfo }:
+
+stdenv.mkDerivation rec {
+  pname = "gxmessage";
+  version = "3.4.3";
+
+  src = fetchurl {
+    url = "http://homepages.ihug.co.nz/~trmusson/stuff/${pname}-${version}.tar.gz";
+    sha256 = "db4e1655fc58f31e5770a17dfca4e6c89028ad8b2c8e043febc87a0beedeef05";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ intltool gtk3 texinfo ];
+
+  meta = {
+    description = "A GTK enabled dropin replacement for xmessage";
+    homepage = "http://homepages.ihug.co.nz/~trmusson/programs.html#gxmessage";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = with stdenv.lib.maintainers; [jfb];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gxneur/default.nix b/nixpkgs/pkgs/applications/misc/gxneur/default.nix
new file mode 100644
index 000000000000..adabe22c6b64
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gxneur/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gtk2, xorg, glib, xneur, libglade, GConf, libappindicator-gtk2, pcre }:
+
+stdenv.mkDerivation {
+  name = "gxneur-0.20.0";
+
+  src = fetchurl {
+    url = "https://github.com/AndrewCrewKuznetsov/xneur-devel/raw/f66723feb272c68f7c22a8bf0dbcafa5e3a8a5ee/dists/0.20.0/gxneur_0.20.0.orig.tar.gz";
+    sha256 = "0avmhdcj0hpr55fc0iih8fjykmdhn34c8mwdnqvl8jh4nhxxchxr";
+  };
+
+  # glib-2.62 deprecations
+  NIX_CFLAGS_COMPILE = "-DGLIB_DISABLE_DEPRECATION_WARNINGS";
+
+  nativeBuildInputs = [ pkgconfig intltool ];
+  buildInputs = [
+    xorg.libX11 glib gtk2 xorg.libXpm xorg.libXt xorg.libXext xneur
+    libglade GConf pcre libappindicator-gtk2
+  ];
+
+  meta = with stdenv.lib; {
+    description = "GUI for XNEUR keyboard layout switcher";
+    platforms = platforms.linux;
+    license = with licenses; [ gpl2 gpl3 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/hamster/default.nix b/nixpkgs/pkgs/applications/misc/hamster/default.nix
new file mode 100644
index 000000000000..57b36e00436e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hamster/default.nix
@@ -0,0 +1,62 @@
+{ stdenv, fetchFromGitHub, python3Packages, intltool, glib, itstool
+, wrapGAppsHook, gobject-introspection, pango, gdk-pixbuf, atk, wafHook }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "hamster";
+  version = "3.0.2";
+
+  format = "other";
+
+  src = fetchFromGitHub {
+    owner = "projecthamster";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "09ikiwc2izjvwqbbyp8knn190x5y4anwslkmb9k2h3r3jwrg2vd2";
+  };
+
+  nativeBuildInputs = [
+    python3Packages.setuptools
+    wrapGAppsHook
+    intltool
+    itstool
+    wafHook
+    glib
+    gobject-introspection
+  ];
+
+  buildInputs = [
+    pango
+    gdk-pixbuf
+    atk
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
+    pygobject3
+    pycairo
+    pyxdg
+    dbus-python
+  ];
+
+  # Setup hooks have trouble with strict deps.
+  # https://github.com/NixOS/nixpkgs/issues/56943
+  strictDeps = false;
+
+  dontWrapGApps = true;
+
+  # Arguments to be passed to `makeWrapper`, only used by buildPython*
+  preFixup = ''
+    makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
+  postFixup = ''
+    wrapPythonProgramsIn $out/libexec "$out $pythonPath"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Time tracking application";
+    homepage = "http://projecthamster.org/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.all;
+    maintainers = [ maintainers.fabianhauser ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/havoc/default.nix b/nixpkgs/pkgs/applications/misc/havoc/default.nix
new file mode 100644
index 000000000000..fc4cc680ca4d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/havoc/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub
+, pkgconfig, libxkbcommon, wayland, wayland-protocols }:
+
+stdenv.mkDerivation rec {
+
+  pname = "havoc";
+  version = "2019-12-08";
+
+  src = fetchFromGitHub {
+    owner = "ii8";
+    repo = pname;
+    rev = "507446c92ed7bf8380a58c5ba2b14aba5cdf412c";
+    sha256 = "13nfnan1gmy4cqxmqv0rc8a4mcb1g62v73d56hy7z2psv4am7a09";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libxkbcommon wayland wayland-protocols ];
+
+  dontConfigure = true;
+
+  installFlags = [ "PREFIX=$$out" ];
+
+  postInstall = ''
+    install -D -m 644 havoc.cfg -t $out/etc/${pname}/
+    install -D -m 644 README.md -t $out/share/doc/${pname}-${version}/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A minimal terminal emulator for Wayland";
+    homepage = "https://github.com/ii8/havoc";
+    license = with licenses; [ mit publicDomain ];
+    platforms = with platforms; unix;
+    maintainers = with maintainers; [ AndersonTorres ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/haxor-news/default.nix b/nixpkgs/pkgs/applications/misc/haxor-news/default.nix
new file mode 100644
index 000000000000..98f84ca68b8e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/haxor-news/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, python, fetchpatch }:
+
+with python.pkgs;
+
+buildPythonApplication rec {
+  pname = "haxor-news";
+  version = "0.4.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "5b9af8338a0f8b95a8133b66ef106553823813ac171c0aefa3f3f2dbeb4d7f88";
+  };
+
+  # allow newer click version
+  patches = fetchpatch {
+    url = "${meta.homepage}/commit/5b0d3ef1775756ca15b6d83fba1fb751846b5427.patch";
+    sha256 = "1551knh2f7yarqzcpip16ijmbx8kzdna8cihxlxx49ww55f5sg67";
+  };
+
+  propagatedBuildInputs = [
+    click
+    colorama
+    requests
+    pygments
+    prompt_toolkit
+    six
+  ];
+
+  doCheck = false;
+
+  checkInputs = [ mock ];
+
+  checkPhase = ''
+    ${python.interpreter} -m unittest discover -s tests -v
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/donnemartin/haxor-news";
+    description = "Browse Hacker News like a haxor";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ matthiasbeyer ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/hdate/default.nix b/nixpkgs/pkgs/applications/misc/hdate/default.nix
new file mode 100644
index 000000000000..c97a67c0bd38
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hdate/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  version = "1.6.02";
+  pname = "hdate";
+  src = fetchurl {
+    url = "https://sourceforge.net/projects/libhdate/files/libhdate/libhdate-${version}/libhdate-${version}.tar.bz2";
+    sha256 = "3c930a8deb57c01896dc37f0d7804e5a330ee8e88c4ff610b71f9d2b02c17762";
+  };
+  meta = {
+    description = "Hebrew calendar and solar astronomical times library and utilities";
+    homepage = "https://sourceforge.net/projects/libhdate/";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = with stdenv.lib.maintainers; [ CharlesHD ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/heimer/default.nix b/nixpkgs/pkgs/applications/misc/heimer/default.nix
new file mode 100644
index 000000000000..7709a42baee1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/heimer/default.nix
@@ -0,0 +1,24 @@
+{ mkDerivation, lib, fetchFromGitHub, cmake, qttools, qtbase }:
+
+mkDerivation rec {
+  pname = "heimer";
+  version = "1.17.0";
+
+  src = fetchFromGitHub {
+    owner = "juzzlin";
+    repo = pname;
+    rev = version;
+    sha256 = "1sxdi1an9x62q9vwv7r2761my4dva6nc63n9861swxjjk18hmmar";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ qttools qtbase ];
+
+  meta = with lib; {
+    description = "Simple cross-platform mind map and note-taking tool written in Qt";
+    homepage = "https://github.com/juzzlin/Heimer";
+    license = licenses.gpl3;
+    maintainers  = with maintainers; [ dtzWill ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/hello-unfree/default.nix b/nixpkgs/pkgs/applications/misc/hello-unfree/default.nix
new file mode 100644
index 000000000000..a5a9187ab0f2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hello-unfree/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, runtimeShell }:
+
+stdenv.mkDerivation {
+  pname = "example-unfree-package";
+  version = "1.0";
+
+  phases = [ "installPhase" "fixupPhase" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cat > $out/bin/hello-unfree << EOF
+    #!${runtimeShell}
+    echo "Hello, you are running an unfree system!"
+    EOF
+    chmod +x $out/bin/hello-unfree
+  '';
+
+  meta = {
+    description = "An example package with unfree license (for testing)";
+    license = stdenv.lib.licenses.unfree;
+    maintainers = [ stdenv.lib.maintainers.oxij ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/hello/default.nix b/nixpkgs/pkgs/applications/misc/hello/default.nix
new file mode 100644
index 000000000000..32c8c696730f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hello/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "hello";
+  version = "2.10";
+
+  src = fetchurl {
+    url = "mirror://gnu/hello/${pname}-${version}.tar.gz";
+    sha256 = "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i";
+  };
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    description = "A program that produces a familiar, friendly greeting";
+    longDescription = ''
+      GNU Hello is a program that prints "Hello, world!" when you run it.
+      It is fully customizable.
+    '';
+    homepage = "https://www.gnu.org/software/hello/manual/";
+    changelog = "https://git.savannah.gnu.org/cgit/hello.git/plain/NEWS?h=v${version}";
+    license = licenses.gpl3Plus;
+    maintainers = [ maintainers.eelco ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/hivemind/default.nix b/nixpkgs/pkgs/applications/misc/hivemind/default.nix
new file mode 100644
index 000000000000..8a8f80f57977
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hivemind/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, runtimeShell }:
+
+buildGoPackage rec {
+  pname = "hivemind";
+  version = "1.0.6";
+  goPackagePath = "github.com/DarthSim/hivemind";
+
+  postPatch = ''
+    substituteInPlace process.go --replace \"/bin/sh\" \"${runtimeShell}\"
+  '';
+
+  src = fetchFromGitHub {
+    owner = "DarthSim";
+    repo = "hivemind";
+    rev = "v${version}";
+    sha256 = "0afcnd03wsdphbbpha65rv5pnv0x6ldnnm6rnv1m6xkkywgnzx95";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/DarthSim/";
+    description = "Process manager for Procfile-based applications";
+    license = with licenses; [ mit ];
+    maintainers = [ maintainers.sveitser ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/houdini/default.nix b/nixpkgs/pkgs/applications/misc/houdini/default.nix
new file mode 100644
index 000000000000..ce35e91d9278
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/houdini/default.nix
@@ -0,0 +1,14 @@
+{ callPackage, buildFHSUserEnv, undaemonize }:
+
+let
+  houdini-runtime = callPackage ./runtime.nix { };
+in buildFHSUserEnv {
+  name = "houdini-${houdini-runtime.version}";
+
+  extraBuildCommands = ''
+    mkdir -p $out/usr/lib/sesi
+  '';
+
+  runScript = "${undaemonize}/bin/undaemonize ${houdini-runtime}/bin/houdini";
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/houdini/runtime.nix b/nixpkgs/pkgs/applications/misc/houdini/runtime.nix
new file mode 100644
index 000000000000..51b08af23c5c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/houdini/runtime.nix
@@ -0,0 +1,87 @@
+{ stdenv, requireFile, zlib, libpng, libSM, libICE, fontconfig, xorg, libGLU, libGL, alsaLib, dbus, xkeyboardconfig, bc, addOpenGLRunpath }:
+
+let
+  ld_library_path = builtins.concatStringsSep ":" [
+    "${stdenv.cc.cc.lib}/lib64"
+    (stdenv.lib.makeLibraryPath [
+      libGLU
+      libGL
+      xorg.libXmu
+      xorg.libXi
+      xorg.libXext
+      xorg.libX11
+      xorg.libXrender
+      xorg.libXcursor
+      xorg.libXfixes
+      xorg.libXrender
+      xorg.libXcomposite
+      xorg.libXdamage
+      xorg.libXtst
+      alsaLib
+      fontconfig
+      libSM
+      libICE
+      zlib
+      libpng
+      dbus
+      addOpenGLRunpath.driverLink
+    ])
+  ];
+  license_dir = "~/.config/houdini";
+in
+stdenv.mkDerivation rec {
+  version = "17.5.327";
+  pname = "houdini-runtime";
+  src = requireFile rec {
+    name = "houdini-${version}-linux_x86_64_gcc6.3.tar.gz";
+    sha256 = "1byigmhmby8lgi2vmgxy9jlrrqk7jyr507zqkihq5bv8kfsanv1x";
+    message = ''
+      This nix expression requires that ${name} is already part of the store.
+      Download it from https://www.sidefx.com and add it to the nix store with:
+
+          nix-prefetch-url <URL>
+
+      This can't be done automatically because you need to create an account on
+      their website and agree to their license terms before you can download
+      it. That's what you get for using proprietary software.
+    '';
+  };
+
+  buildInputs = [ bc ];
+  installPhase = ''
+    patchShebangs houdini.install
+    mkdir -p $out
+    sed -i "s|/usr/lib/sesi|${license_dir}|g" houdini.install
+    ./houdini.install --install-houdini \
+                      --no-install-menus \
+                      --no-install-bin-symlink \
+                      --auto-install \
+                      --no-root-check \
+                      --accept-EULA \
+                      $out
+    echo -e "localValidatorDir = ${license_dir}\nlicensingMode = localValidator" > $out/houdini/Licensing.opt
+    sed -i "s|/usr/lib/sesi|${license_dir}|g" $out/houdini/sbin/sesinetd_safe
+    sed -i "s|/usr/lib/sesi|${license_dir}|g" $out/houdini/sbin/sesinetd.startup
+    echo "export LD_LIBRARY_PATH=${ld_library_path}" >> $out/bin/app_init.sh
+    echo "export QT_XKB_CONFIG_ROOT="${xkeyboardconfig}/share/X11/xkb"" >> $out/bin/app_init.sh
+    echo "export LD_LIBRARY_PATH=${ld_library_path}" >> $out/houdini/sbin/app_init.sh
+    echo "export QT_XKB_CONFIG_ROOT="${xkeyboardconfig}/share/X11/xkb"" >> $out/houdini/sbin/app_init.sh
+  '';
+  postFixup = ''
+    INTERPRETER="$(cat "$NIX_CC"/nix-support/dynamic-linker)"
+    for BIN in $(find $out/bin -type f -executable); do
+      if patchelf $BIN 2>/dev/null ; then
+        echo "Patching ELF $BIN"
+        patchelf --set-interpreter "$INTERPRETER" "$BIN"
+      fi
+    done
+  '';
+  meta = {
+    description = "3D animation application software";
+    homepage = "https://www.sidefx.com";
+    license = stdenv.lib.licenses.unfree;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.canndrew ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/hovercraft/default.nix b/nixpkgs/pkgs/applications/misc/hovercraft/default.nix
new file mode 100644
index 000000000000..edb8114e4a41
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hovercraft/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonApplication
+, isPy3k
+, fetchFromGitHub
+, manuel
+, setuptools
+, docutils
+, lxml
+, svg-path
+, pygments
+, watchdog
+}:
+
+buildPythonApplication rec {
+  pname = "hovercraft";
+  version = "2.6";
+  disabled = ! isPy3k;
+
+  src = fetchFromGitHub {
+    owner = "regebro";
+    repo = "hovercraft";
+    rev = version;
+    sha256 = "150sn6kvqi2s89di1akl5i0g81fasji2ipr12zq5s4dcnhw4r5wp";
+  };
+
+  checkInputs = [ manuel ];
+  propagatedBuildInputs = [ setuptools docutils lxml svg-path pygments watchdog ];
+
+  meta = with lib; {
+    description = "Makes impress.js presentations from reStructuredText";
+    homepage = "https://github.com/regebro/hovercraft";
+    license = licenses.mit;
+    maintainers = with maintainers; [ goibhniu makefu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/hr/default.nix b/nixpkgs/pkgs/applications/misc/hr/default.nix
new file mode 100644
index 000000000000..91a66bc73781
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hr/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "hr";
+  version = "1.2";
+
+  src = fetchFromGitHub {
+    owner = "LuRsT";
+    repo = "hr";
+    rev = version;
+    sha256 = "162vkip2772jl59lschpinimpg4ssiyg7fq0va5cx4d7wldpqmks";
+  };
+
+  dontBuild = true;
+  installFlags = [ "PREFIX=$(out)" "MANPREFIX=$(out)/share" ];
+
+  preInstall = ''
+    mkdir -p $out/{bin,share}
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/LuRsT/hr";
+    description = "A horizontal bar for your terminal";
+    license = licenses.mit;
+    maintainers = [ maintainers.matthiasbeyer ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/hstr/default.nix b/nixpkgs/pkgs/applications/misc/hstr/default.nix
new file mode 100644
index 000000000000..b1e740fb7607
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hstr/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, readline, ncurses
+, autoreconfHook, pkgconfig, gettext }:
+
+stdenv.mkDerivation rec {
+  pname = "hstr";
+  version = "2.2";
+
+  src = fetchFromGitHub {
+    owner  = "dvorka";
+    repo   = "hstr";
+    rev    = version;
+    sha256 = "07fkilqlkpygvf9kvxyvl58g3lfq0bwwdp3wczy4hk8qlbhmgihn";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ readline ncurses gettext ];
+
+  configurePhase = ''
+    autoreconf -fvi
+    ./configure
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin/
+    mv src/hstr $out/bin/
+  '';
+
+  meta = {
+    homepage = "https://github.com/dvorka/hstr";
+    description = "Shell history suggest box - easily view, navigate, search and use your command history";
+    license = stdenv.lib.licenses.asl20;
+    maintainers = [ stdenv.lib.maintainers.matthiasbeyer ];
+    platforms = with stdenv.lib.platforms; linux; # Cannot test others
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/hubstaff/default.nix b/nixpkgs/pkgs/applications/misc/hubstaff/default.nix
new file mode 100644
index 000000000000..bbe05e0396bb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hubstaff/default.nix
@@ -0,0 +1,66 @@
+{ stdenv, fetchurl, unzip, makeWrapper, libX11, zlib, libSM, libICE
+, libXext , freetype, libXrender, fontconfig, libXft, libXinerama
+, libXfixes, libXScrnSaver, libnotify, glib , gtk3, libappindicator-gtk3
+, curl }:
+
+let
+
+  data = builtins.fromJSON (builtins.readFile ./revision.json);
+
+  inherit (data) version url sha256;
+
+  rpath = stdenv.lib.makeLibraryPath
+    [ libX11 zlib libSM libICE libXext freetype libXrender fontconfig libXft
+      libXinerama stdenv.cc.cc.lib libnotify glib gtk3 libappindicator-gtk3
+      curl libXfixes libXScrnSaver ];
+
+in
+
+stdenv.mkDerivation {
+  pname = "hubstaff";
+  inherit version;
+
+  src = fetchurl { inherit sha256 url; };
+
+  nativeBuildInputs = [ unzip makeWrapper ];
+
+  unpackCmd = ''
+    # MojoSetups have a ZIP file at the end. ZIP’s magic string is
+    # most often PK\x03\x04. This has worked for all past updates,
+    # but feel free to come up with something more reasonable.
+    dataZipOffset=$(grep --max-count=1 --byte-offset --only-matching --text ''$'PK\x03\x04' $curSrc | cut -d: -f1)
+    dd bs=$dataZipOffset skip=1 if=$curSrc of=data.zip 2>/dev/null
+    unzip -q data.zip "data/*"
+    rm data.zip
+  '';
+
+  dontBuild = true;
+
+  installPhase = ''
+    # TODO: handle 32-bit arch?
+    rm -r x86
+    rm -r x86_64/lib64
+
+    opt=$out/opt/hubstaff
+    mkdir -p $out/bin $opt
+    cp -r . $opt/
+
+    for f in "$opt/x86_64/"*.bin.x86_64 ; do
+      patchelf --set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) $f
+      wrapProgram $f --prefix LD_LIBRARY_PATH : ${rpath}
+    done
+
+    ln -s $opt/x86_64/HubstaffClient.bin.x86_64 $out/bin/HubstaffClient
+
+    # Why is this needed? SEGV otherwise.
+    ln -s $opt/data/resources $opt/x86_64/resources
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Time tracking software";
+    homepage = "https://hubstaff.com/";
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ michalrus srghma ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/hubstaff/revision.json b/nixpkgs/pkgs/applications/misc/hubstaff/revision.json
new file mode 100644
index 000000000000..2fd29444dade
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hubstaff/revision.json
@@ -0,0 +1,5 @@
+{
+  "url": "https://hubstaff-production.s3.amazonaws.com/downloads/HubstaffClient/Builds/Release/1.5.2-bead991b/Hubstaff-1.5.2-bead991b.sh",
+  "version": "1.5.2-bead991b",
+  "sha256": "068b0q94ydldyjmzbka1j94vr1xdxvkxq79pp7ria81hvpp68yxf"
+}
diff --git a/nixpkgs/pkgs/applications/misc/hubstaff/update.sh b/nixpkgs/pkgs/applications/misc/hubstaff/update.sh
new file mode 100755
index 000000000000..c4c1caf55db4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hubstaff/update.sh
@@ -0,0 +1,18 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p nix-prefetch-git curl
+
+SCRIPT_DIR=$(dirname "$(readlink -f "$BASH_SOURCE")")
+
+installation_script_url=$(curl --fail --head --location --silent --output /dev/null --write-out %{url_effective} https://app.hubstaff.com/download/linux)
+
+version=$(echo "$installation_script_url" | sed -r 's/^https:\/\/hubstaff\-production\.s3\.amazonaws\.com\/downloads\/HubstaffClient\/Builds\/Release\/([^\/]+)\/Hubstaff.+$/\1/')
+
+sha256=$(nix-prefetch-url "$installation_script_url")
+
+cat <<EOT > $SCRIPT_DIR/revision.json
+{
+  "url": "$installation_script_url",
+  "version": "$version",
+  "sha256": "$sha256"
+}
+EOT
diff --git a/nixpkgs/pkgs/applications/misc/hugo/default.nix b/nixpkgs/pkgs/applications/misc/hugo/default.nix
new file mode 100644
index 000000000000..ba01f88cc58f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hugo/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, buildGoModule, fetchFromGitHub, libsass }:
+
+buildGoModule rec {
+  pname = "hugo";
+  version = "0.72.0";
+
+  buildInputs = [ libsass ];
+
+  src = fetchFromGitHub {
+    owner = "gohugoio";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "05parzx0wm51z4qkvh4k096ykgiyr9i5xy55c0g99j4y96drcybb";
+  };
+
+  golibsass = fetchFromGitHub {
+    owner = "bep";
+    repo = "golibsass";
+    rev = "8a04397f0baba474190a9f58019ff499ec43057a";
+    sha256 = "0xk3m2ynbydzx87dz573ihwc4ryq0r545vz937szz175ivgfrhh3";
+  };
+
+  overrideModAttrs = (_: {
+      postBuild = ''
+      rm -rf vendor/github.com/bep/golibsass/
+      cp -r --reflink=auto ${golibsass} vendor/github.com/bep/golibsass
+      '';
+    });
+
+  vendorSha256 = "07dkmrldsxw59v6r4avj1gr4hsaxybhb14qv61hc777qix2kq9v1";
+
+  buildFlags = [ "-tags" "extended" ];
+
+  subPackages = [ "." ];
+
+  meta = with stdenv.lib; {
+    description = "A fast and modern static website engine.";
+    homepage = "https://gohugo.io";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ schneefux filalex77 Frostman ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/hyper/default.nix b/nixpkgs/pkgs/applications/misc/hyper/default.nix
new file mode 100644
index 000000000000..1535b1a2568e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hyper/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, lib, fetchurl, dpkg, atk, glib, pango, gdk-pixbuf, gnome2, gtk2, cairo
+, freetype, fontconfig, dbus, libXi, libXcursor, libXdamage, libXrandr
+, libXcomposite, libXext, libXfixes, libXrender, libX11, libXtst, libXScrnSaver
+, libxcb, nss, nspr, alsaLib, cups, expat, udev, libpulseaudio }:
+
+let
+  libPath = stdenv.lib.makeLibraryPath [
+    stdenv.cc.cc gtk2 gnome2.GConf atk glib pango gdk-pixbuf cairo freetype fontconfig dbus
+    libXi libXcursor libXdamage libXrandr libXcomposite libXext libXfixes libxcb
+    libXrender libX11 libXtst libXScrnSaver nss nspr alsaLib cups expat udev libpulseaudio
+  ];
+in
+stdenv.mkDerivation rec {
+  version = "2.1.2";
+  pname = "hyper";
+  src = fetchurl {
+    url = "https://github.com/zeit/hyper/releases/download/${version}/hyper_${version}_amd64.deb";
+    sha256 = "1n4qlbk7q9zkhhg72mdks95g15xgyrc6ixf882ghvrqghd4zxplm";
+  };
+  buildInputs = [ dpkg ];
+  unpackPhase = ''
+    mkdir pkg
+    dpkg-deb -x $src pkg
+    sourceRoot=pkg
+  '';
+  installPhase = ''
+    mkdir -p "$out/bin"
+    mv opt "$out/"
+    ln -s "$out/opt/Hyper/hyper" "$out/bin/hyper"
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" --set-rpath "${libPath}:\$ORIGIN" "$out/opt/Hyper/hyper"
+    mv usr/* "$out/"
+  '';
+  dontPatchELF = true;
+  meta = with lib; {
+    description = "A terminal built on web technologies";
+    homepage    = "https://hyper.is/";
+    maintainers = with maintainers; [ puffnfresh ];
+    license     = licenses.mit;
+    platforms   = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/icesl/default.nix b/nixpkgs/pkgs/applications/misc/icesl/default.nix
new file mode 100644
index 000000000000..7b642dffa503
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/icesl/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, lib, fetchzip, freeglut, libXmu, libXi, libX11, libICE, libGLU, libGL, libSM, libXext, dialog, makeWrapper }:
+let
+  lpath = stdenv.lib.makeLibraryPath [ libXmu libXi libX11 freeglut libICE libGLU libGL libSM libXext ];
+in
+stdenv.mkDerivation rec {
+  pname = "iceSL";
+  version = "2.1.10";
+
+  src =  if stdenv.hostPlatform.system == "x86_64-linux" then fetchzip {
+    url = "https://gforge.inria.fr/frs/download.php/file/37268/icesl${version}-amd64.zip";
+    sha256 = "0dv3mq6wy46xk9blzzmgbdxpsjdaxid3zadfrysxlhmgl7zb2cn2";
+  } else if stdenv.hostPlatform.system == "i686-linux" then fetchzip {
+    url = "https://gforge.inria.fr/frs/download.php/file/37267/icesl${version}-i386.zip";
+    sha256 = "0sl54fsb2gz6dy0bwdscpdq1ab6ph5b7zald3bwzgkqsvna7p1jr";
+  } else throw "Unsupported architecture";
+
+  buildInputs = [ makeWrapper ];
+  installPhase = ''
+    cp -r ./ $out
+    mkdir $out/oldbin
+    mv $out/bin/IceSL-slicer $out/oldbin/IceSL-slicer
+    runHook postInstall
+  '';
+
+  postInstall = ''
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${lpath}" \
+      $out/oldbin/IceSL-slicer
+    makeWrapper $out/oldbin/IceSL-slicer $out/bin/icesl --prefix PATH : ${dialog}/bin
+  '';
+
+  meta = with lib; {
+    description = "IceSL is a GPU-accelerated procedural modeler and slicer for 3D printing.";
+    homepage = "http://shapeforge.loria.fr/icesl/index.html";
+    license = licenses.inria-icesl;
+    platforms = [ "i686-linux" "x86_64-linux" ];
+    maintainers = with maintainers; [ mgttlinger ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ikiwiki/default.nix b/nixpkgs/pkgs/applications/misc/ikiwiki/default.nix
new file mode 100644
index 000000000000..0c2abbd9f588
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ikiwiki/default.nix
@@ -0,0 +1,91 @@
+{ stdenv, fetchurl, perlPackages, gettext, makeWrapper, PerlMagick, which
+, gitSupport ? false, git ? null
+, docutilsSupport ? false, python ? null, docutils ? null
+, monotoneSupport ? false, monotone ? null
+, bazaarSupport ? false, breezy ? null
+, cvsSupport ? false, cvs ? null, cvsps ? null
+, subversionSupport ? false, subversion ? null
+, mercurialSupport ? false, mercurial ? null
+, extraUtils ? []
+}:
+
+assert docutilsSupport -> (python != null && docutils != null);
+assert gitSupport -> (git != null);
+assert monotoneSupport -> (monotone != null);
+assert bazaarSupport -> (breezy != null);
+assert cvsSupport -> (cvs != null && cvsps != null && perlPackages.Filechdir != null);
+assert subversionSupport -> (subversion != null);
+assert mercurialSupport -> (mercurial != null);
+
+let
+  name = "ikiwiki";
+  version = "3.20190228";
+
+  lib = stdenv.lib;
+in
+stdenv.mkDerivation {
+  name = "${name}-${version}";
+
+  src = fetchurl {
+    url = "mirror://debian/pool/main/i/ikiwiki/${name}_${version}.orig.tar.xz";
+    sha256 = "17pyblaqhkb61lxl63bzndiffism8k859p54k3k4sghclq6lsynh";
+  };
+
+  buildInputs = [ which ]
+    ++ (with perlPackages; [ perl TextMarkdown URI HTMLParser HTMLScrubber HTMLTemplate
+          TimeDate gettext makeWrapper DBFile CGISession CGIFormBuilder LocaleGettext
+          RpcXML XMLSimple PerlMagick YAML YAMLLibYAML HTMLTree AuthenPassphrase
+          NetOpenIDConsumer LWPxParanoidAgent CryptSSLeay ])
+    ++ lib.optionals docutilsSupport [python docutils]
+    ++ lib.optionals gitSupport [git]
+    ++ lib.optionals monotoneSupport [monotone]
+    ++ lib.optionals bazaarSupport [breezy]
+    ++ lib.optionals cvsSupport [cvs cvsps perlPackages.Filechdir]
+    ++ lib.optionals subversionSupport [subversion]
+    ++ lib.optionals mercurialSupport [mercurial];
+
+  # A few markdown tests fail, but this is expected when using Text::Markdown
+  # instead of Text::Markdown::Discount.
+  patches = [ ./remove-markdown-tests.patch ];
+
+  postPatch = ''
+    sed -i s@/usr/bin/perl@${perlPackages.perl}/bin/perl@ pm_filter mdwn2man
+    sed -i s@/etc/ikiwiki@$out/etc@ Makefile.PL
+    sed -i /ENV{PATH}/d ikiwiki.in
+    # State the gcc dependency, and make the cgi use our wrapper
+    sed -i -e 's@$0@"'$out/bin/ikiwiki'"@' \
+        -e "s@'cc'@'${stdenv.cc}/bin/gcc'@" IkiWiki/Wrapper.pm
+  '';
+
+  configurePhase = "perl Makefile.PL PREFIX=$out";
+
+  postInstall = ''
+    for a in "$out/bin/"*; do
+      wrapProgram $a --suffix PERL5LIB : $PERL5LIB --prefix PATH : ${perlPackages.perl}/bin:$out/bin \
+      ${lib.optionalString gitSupport ''--prefix PATH : ${git}/bin \''}
+      ${lib.optionalString monotoneSupport ''--prefix PATH : ${monotone}/bin \''}
+      ${lib.optionalString bazaarSupport ''--prefix PATH : ${breezy}/bin \''}
+      ${lib.optionalString cvsSupport ''--prefix PATH : ${cvs}/bin \''}
+      ${lib.optionalString cvsSupport ''--prefix PATH : ${cvsps}/bin \''}
+      ${lib.optionalString subversionSupport ''--prefix PATH : ${subversion.out}/bin \''}
+      ${lib.optionalString mercurialSupport ''--prefix PATH : ${mercurial}/bin \''}
+      ${lib.concatMapStrings (x: "--prefix PATH : ${x}/bin ") extraUtils}
+    done
+  '';
+
+  preCheck = ''
+    # Git needs some help figuring this out during test suite run.
+    export EMAIL="nobody@example.org"
+  '';
+
+  checkTarget = "test";
+  doCheck = true;
+
+  meta = {
+    description = "Wiki compiler, storing pages and history in a RCS";
+    homepage = "http://ikiwiki.info/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.peti ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ikiwiki/remove-markdown-tests.patch b/nixpkgs/pkgs/applications/misc/ikiwiki/remove-markdown-tests.patch
new file mode 100644
index 000000000000..c981857a248b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ikiwiki/remove-markdown-tests.patch
@@ -0,0 +1,37 @@
+diff --git a/t/mdwn.t b/t/mdwn.t
+index ca3180139..d64750403 100755
+--- a/t/mdwn.t
++++ b/t/mdwn.t
+@@ -16,32 +16,17 @@ is(IkiWiki::htmlize("foo", "foo", "mdwn",
+ 	"C. S. Lewis wrote books\n"),
+ 	"<p>C. S. Lewis wrote books</p>\n", "alphalist off by default");
+ 
+-$config{mdwn_alpha_lists} = 1;
+-like(IkiWiki::htmlize("foo", "foo", "mdwn",
+-	"A. One\n".
+-	"B. Two\n"),
+-	qr{<ol\W}, "alphalist can be enabled");
+-
+ $config{mdwn_alpha_lists} = 0;
+ like(IkiWiki::htmlize("foo", "foo", "mdwn",
+ 	"A. One\n".
+ 	"B. Two\n"),
+ 	qr{<p>A. One\sB. Two</p>\n}, "alphalist can be disabled");
+ 
+-like(IkiWiki::htmlize("foo", "foo", "mdwn",
+-	"This works[^1]\n\n[^1]: Sometimes it doesn't.\n"),
+-	qr{<p>This works<sup\W}, "footnotes on by default");
+-
+ $config{mdwn_footnotes} = 0;
+ like(IkiWiki::htmlize("foo", "foo", "mdwn",
+ 	"An unusual link label: [^1]\n\n[^1]: http://example.com/\n"),
+ 	qr{<a href="http://example\.com/">\^1</a>}, "footnotes can be disabled");
+ 
+-$config{mdwn_footnotes} = 1;
+-like(IkiWiki::htmlize("foo", "foo", "mdwn",
+-	"This works[^1]\n\n[^1]: Sometimes it doesn't.\n"),
+-	qr{<p>This works<sup\W}, "footnotes can be enabled");
+-
+ SKIP: {
+ 	skip 'set $IKIWIKI_TEST_ASSUME_MODERN_DISCOUNT if you have Discount 2.2.0+', 4
+ 		unless $ENV{IKIWIKI_TEST_ASSUME_MODERN_DISCOUNT};
diff --git a/nixpkgs/pkgs/applications/misc/img2pdf/default.nix b/nixpkgs/pkgs/applications/misc/img2pdf/default.nix
new file mode 100644
index 000000000000..b9c06d5122ca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/img2pdf/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, python3Packages }:
+
+with python3Packages;
+
+buildPythonApplication rec {
+  pname = "img2pdf";
+  version = "0.3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1yx0ljbg7phpix507wq584qvspp2jgax7flpp1148pxpc2d51mcc";
+  };
+
+  propagatedBuildInputs = [
+    pillow
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Convert images to PDF via direct JPEG inclusion";
+    homepage = "https://gitlab.mister-muffin.de/josch/img2pdf";
+    license = licenses.lgpl2;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.veprbl ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ipmicfg/default.nix b/nixpkgs/pkgs/applications/misc/ipmicfg/default.nix
new file mode 100644
index 000000000000..f561f15ab3ec
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ipmicfg/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchzip }:
+
+stdenv.mkDerivation rec {
+  pname = "ipmicfg";
+  version = "1.30.0";
+  buildVersion = "190710";
+
+  src = fetchzip {
+    url = "https://www.supermicro.com/wftp/utility/IPMICFG/IPMICFG_${version}_build.${buildVersion}.zip";
+    sha256 = "0srkzivxa4qlf3x9zdkri7xfq7kjj4fsmn978vzmzsvbxkqswd5a";
+    extraPostFetch = "chmod u+rwX,go-rwx+X $out/";
+  };
+
+  installPhase = ''
+    mkdir -p "$out/bin" "$out/opt/ipmicfg"
+    cp Linux/64bit/* "$out/opt/ipmicfg"
+
+    patchelf \
+       --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+       --set-rpath "${stdenv.lib.makeLibraryPath [ stdenv.cc.cc ]}" \
+       "$out/opt/ipmicfg/IPMICFG-Linux.x86_64"
+
+    ln -s "$out/opt/ipmicfg/IPMICFG-Linux.x86_64" "$out/bin/ipmicfg"
+  '';
+
+   dontPatchShebangs = true; # There are no scripts and it complains about null bytes.
+
+   meta = with stdenv.lib; {
+     description = "Supermicro IPMI configuration tool";
+     homepage = "http://www.supermicro.com/products/nfo/ipmi.cfm";
+     license = licenses.unfree;
+     platforms = [ "x86_64-linux" ];
+     maintainers = with maintainers; [ sorki ];
+   };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ipmiview/default.nix b/nixpkgs/pkgs/applications/misc/ipmiview/default.nix
new file mode 100644
index 000000000000..e46df5d59e0e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ipmiview/default.nix
@@ -0,0 +1,72 @@
+{ stdenv
+, fetchurl
+, makeDesktopItem
+, makeWrapper
+, patchelf
+, fontconfig
+, freetype
+, gcc
+, gcc-unwrapped
+, iputils
+, psmisc
+, xorg }:
+
+stdenv.mkDerivation rec {
+  pname = "IPMIView";
+  version = "2.16.0";
+  buildVersion = "190815";
+
+  src = fetchurl {
+    url = "https://www.supermicro.com/wftp/utility/IPMIView/Linux/IPMIView_${version}_build.${buildVersion}_bundleJRE_Linux_x64.tar.gz";
+    sha256 = "0qw9zfnj0cyvab7ndamlw2y0gpczjhh1jkz8340kl42r2xmhkvpl";
+  };
+
+  nativeBuildInputs = [ patchelf makeWrapper ];
+  buildPhase = with xorg;
+    let
+      stunnelBinary = if stdenv.hostPlatform.system == "x86_64-linux" then "linux/stunnel64"
+      else if stdenv.hostPlatform.system == "i686-linux" then "linux/stunnel32"
+      else throw "IPMIView is not supported on this platform";
+    in
+  ''
+    patchelf --set-rpath "${stdenv.lib.makeLibraryPath [ libX11 libXext libXrender libXtst libXi ]}" ./jre/lib/amd64/libawt_xawt.so
+    patchelf --set-rpath "${stdenv.lib.makeLibraryPath [ freetype ]}" ./jre/lib/amd64/libfontmanager.so
+    patchelf --set-rpath "${gcc-unwrapped.lib}/lib" ./libiKVM64.so
+    patchelf --set-rpath "${gcc.cc}/lib:$out/jre/lib/amd64/jli" --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" ./jre/bin/java
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" ./BMCSecurity/${stunnelBinary}
+  '';
+
+  desktopItem = makeDesktopItem rec {
+    name = "IPMIView";
+    exec = "IPMIView";
+    desktopName = name;
+    genericName = "Supermicro BMC manager";
+    categories = "Network;Configuration";
+  };
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -R . $out/
+
+    ln -s ${desktopItem}/share $out/share
+
+    # LD_LIBRARY_PATH: fontconfig is used from java code
+    # PATH: iputils is used for ping, and psmisc is for killall
+    # WORK_DIR: unfortunately the ikvm related binaries are loaded from
+    #           and user configuration is written to files in the CWD
+    makeWrapper $out/jre/bin/java $out/bin/IPMIView \
+      --set LD_LIBRARY_PATH "${stdenv.lib.makeLibraryPath [ fontconfig ]}" \
+      --prefix PATH : "$out/jre/bin:${iputils}/bin:${psmisc}/bin" \
+      --add-flags "-jar $out/IPMIView20.jar" \
+      --run 'WORK_DIR=''${XDG_DATA_HOME:-~/.local/share}/ipmiview
+             mkdir -p $WORK_DIR
+             ln -snf '$out'/iKVM.jar '$out'/libiKVM* '$out'/libSharedLibrary* $WORK_DIR
+             cd $WORK_DIR'
+  '';
+
+  meta = with stdenv.lib; {
+    license = licenses.unfree;
+    maintainers = with maintainers; [ vlaci ];
+    platforms = [ "x86_64-linux" "i686-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/iterm2/default.nix b/nixpkgs/pkgs/applications/misc/iterm2/default.nix
new file mode 100644
index 000000000000..e273eda45c31
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/iterm2/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchFromGitHub }:
+
+ /*
+ This derivation is impure: it relies on an Xcode toolchain being installed
+ and available in the expected place. The values of sandboxProfile
+ are copied pretty directly from the MacVim derivation, which
+ is also impure. In order to build you at least need the `sandbox`
+ option set to `relaxed` or `false`.
+ */
+
+stdenv.mkDerivation rec {
+  pname = "iterm2";
+  version = "3.3.9";
+
+  src = fetchFromGitHub {
+    owner = "gnachman";
+    repo = "iTerm2";
+    rev = "v${version}";
+    sha256 = "06mq3gfjgy8jw2f3fzdsi3pbfkdijfzzlhlw6ixa5bfb4hbcgn5j";
+  };
+
+  patches = [ ./disable_updates.patch ];
+  postPatch = ''
+    sed -i -e 's/CODE_SIGN_IDENTITY = "Developer ID Application"/CODE_SIGN_IDENTITY = ""/g' ./iTerm2.xcodeproj/project.pbxproj
+  '';
+
+  preConfigure = "LD=$CC";
+  makeFlagsArray = ["Nix"];
+  installPhase = ''
+    mkdir -p $out/Applications
+    mv Build/Products/Deployment/iTerm2.app $out/Applications/iTerm.app
+  '';
+
+  sandboxProfile = ''
+     (allow file-read* file-write* process-exec mach-lookup)
+     ; block homebrew dependencies
+     (deny file-read* file-write* process-exec mach-lookup (subpath "/usr/local") (with no-log))
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A replacement for Terminal and the successor to iTerm";
+    homepage = "https://www.iterm2.com/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ tricktron ];
+    platforms = platforms.darwin;
+    hydraPlatforms = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/iterm2/disable_updates.patch b/nixpkgs/pkgs/applications/misc/iterm2/disable_updates.patch
new file mode 100644
index 000000000000..e717c58f30f1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/iterm2/disable_updates.patch
@@ -0,0 +1,11 @@
+--- iTerm2/sources/iTermPreferences.m   2016-06-23 16:55:28.000000000 +0200
++++ iTerm2/sources/iTermPreferences.m   2016-06-23 16:55:42.000000000 +0200
+@@ -189,7 +189,7 @@
+                   kPreferenceKeyInstantReplayMemoryMegabytes: @4,
+                   kPreferenceKeySavePasteAndCommandHistory: @NO,
+                   kPreferenceKeyAddBonjourHostsToProfiles: @NO,
+-                  kPreferenceKeyCheckForUpdatesAutomatically: @YES,
++                  kPreferenceKeyCheckForUpdatesAutomatically: @NO,
+                   kPreferenceKeyCheckForTestReleases: @NO,
+                   kPreferenceKeyLoadPrefsFromCustomFolder: @NO,
+                   kPreferenceKeyNeverRemindPrefsChangesLostForFileHaveSelection: @NO,
diff --git a/nixpkgs/pkgs/applications/misc/j4-dmenu-desktop/default.nix b/nixpkgs/pkgs/applications/misc/j4-dmenu-desktop/default.nix
new file mode 100644
index 000000000000..c20fa4ed9d9b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/j4-dmenu-desktop/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, cmake, dmenu }:
+
+stdenv.mkDerivation rec {
+  pname = "j4-dmenu-desktop";
+  version = "2.17";
+
+  src = fetchFromGitHub {
+    owner = "enkore";
+    repo = pname;
+    rev = "r${version}";
+    sha256 = "0v23fimkn83dcm5p53y2ymhklff3kwppxhf75sm8xmswrzkixpgc";
+  };
+
+  postPatch = ''
+    sed -e 's,dmenu -i,${dmenu}/bin/dmenu -i,g' -i ./src/Main.hh
+  '';
+
+  nativeBuildInputs = [ cmake ];
+
+  # tests are fetching an external git repository
+  cmakeFlags = [
+    "-DWITH_TESTS=OFF"
+    "-DWITH_GIT_CATCH=OFF"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A wrapper for dmenu that recognize .desktop files";
+    homepage = "https://github.com/enkore/j4-dmenu-desktop";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ ericsagnes ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/jbidwatcher/default.nix b/nixpkgs/pkgs/applications/misc/jbidwatcher/default.nix
new file mode 100644
index 000000000000..2d7dca36d204
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jbidwatcher/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchurl, java, runtimeShell }:
+
+stdenv.mkDerivation rec {
+  pname = "jbidwatcher";
+  version = "2.5.6";
+
+  src = fetchurl {
+    url = "http://www.jbidwatcher.com/download/JBidwatcher-${version}.jar";
+    sha256 = "1cw59wh72w1zzibs8x64dma3jc4hry64wjksqs52nc3vpnf0fzfr";
+  };
+
+  buildInputs = [ java ];
+
+  jarfile = "$out/share/java/${pname}/JBidwatcher.jar";
+
+  dontUnpack = true;
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    echo > "$out/bin/${pname}" "#!${runtimeShell}"
+    echo >>"$out/bin/${pname}" "${java}/bin/java -Xmx512m -jar ${jarfile}"
+    chmod +x "$out/bin/${pname}"
+    install -D -m644 ${src} ${jarfile}
+  '';
+
+  meta = {
+    homepage = "http://www.jbidwatcher.com/";
+    description = "Monitor and snipe Ebay auctions";
+    license = "LGPL";
+
+    longDescription = ''
+      A Java-based application allowing you to monitor auctions you're
+      not part of, submit bids, snipe (bid at the last moment), and
+      otherwise track your auction-site experience. It includes
+      adult-auction management, MANY currencies (pound, dollar (US,
+      Canada, Australian, and New Taiwanese) and euro, presently),
+      drag-and-drop of auction URLs, an original, unique and powerful
+      'multisniping' feature, a relatively nice UI, and is known to work
+      cleanly under Linux, Windows, Solaris, and MacOSX from the same
+      binary.
+    '';
+
+    platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/jekyll/basic/Gemfile b/nixpkgs/pkgs/applications/misc/jekyll/basic/Gemfile
new file mode 100644
index 000000000000..c4ba46e2ac6a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jekyll/basic/Gemfile
@@ -0,0 +1,8 @@
+source "https://rubygems.org"
+gem "jekyll"
+# jekyll alone might be enough for most use-cases
+gem "jekyll-avatar"
+gem "jekyll-mentions"
+gem "jekyll-seo-tag"
+gem "jekyll-sitemap"
+gem "jemoji"
diff --git a/nixpkgs/pkgs/applications/misc/jekyll/basic/Gemfile.lock b/nixpkgs/pkgs/applications/misc/jekyll/basic/Gemfile.lock
new file mode 100644
index 000000000000..8731ed268385
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jekyll/basic/Gemfile.lock
@@ -0,0 +1,103 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    activesupport (6.0.3.1)
+      concurrent-ruby (~> 1.0, >= 1.0.2)
+      i18n (>= 0.7, < 2)
+      minitest (~> 5.1)
+      tzinfo (~> 1.1)
+      zeitwerk (~> 2.2, >= 2.2.2)
+    addressable (2.7.0)
+      public_suffix (>= 2.0.2, < 5.0)
+    colorator (1.1.0)
+    concurrent-ruby (1.1.6)
+    em-websocket (0.5.1)
+      eventmachine (>= 0.12.9)
+      http_parser.rb (~> 0.6.0)
+    eventmachine (1.2.7)
+    ffi (1.12.2)
+    forwardable-extended (2.6.0)
+    gemoji (3.0.1)
+    html-pipeline (2.12.3)
+      activesupport (>= 2)
+      nokogiri (>= 1.4)
+    http_parser.rb (0.6.0)
+    i18n (1.8.2)
+      concurrent-ruby (~> 1.0)
+    jekyll (4.1.0)
+      addressable (~> 2.4)
+      colorator (~> 1.0)
+      em-websocket (~> 0.5)
+      i18n (~> 1.0)
+      jekyll-sass-converter (~> 2.0)
+      jekyll-watch (~> 2.0)
+      kramdown (~> 2.1)
+      kramdown-parser-gfm (~> 1.0)
+      liquid (~> 4.0)
+      mercenary (~> 0.4.0)
+      pathutil (~> 0.9)
+      rouge (~> 3.0)
+      safe_yaml (~> 1.0)
+      terminal-table (~> 1.8)
+    jekyll-avatar (0.7.0)
+      jekyll (>= 3.0, < 5.0)
+    jekyll-mentions (1.6.0)
+      html-pipeline (~> 2.3)
+      jekyll (>= 3.7, < 5.0)
+    jekyll-sass-converter (2.1.0)
+      sassc (> 2.0.1, < 3.0)
+    jekyll-seo-tag (2.6.1)
+      jekyll (>= 3.3, < 5.0)
+    jekyll-sitemap (1.4.0)
+      jekyll (>= 3.7, < 5.0)
+    jekyll-watch (2.2.1)
+      listen (~> 3.0)
+    jemoji (0.12.0)
+      gemoji (~> 3.0)
+      html-pipeline (~> 2.2)
+      jekyll (>= 3.0, < 5.0)
+    kramdown (2.2.1)
+      rexml
+    kramdown-parser-gfm (1.1.0)
+      kramdown (~> 2.0)
+    liquid (4.0.3)
+    listen (3.2.1)
+      rb-fsevent (~> 0.10, >= 0.10.3)
+      rb-inotify (~> 0.9, >= 0.9.10)
+    mercenary (0.4.0)
+    mini_portile2 (2.4.0)
+    minitest (5.14.1)
+    nokogiri (1.10.9)
+      mini_portile2 (~> 2.4.0)
+    pathutil (0.16.2)
+      forwardable-extended (~> 2.6)
+    public_suffix (4.0.5)
+    rb-fsevent (0.10.4)
+    rb-inotify (0.10.1)
+      ffi (~> 1.0)
+    rexml (3.2.4)
+    rouge (3.19.0)
+    safe_yaml (1.0.5)
+    sassc (2.3.0)
+      ffi (~> 1.9)
+    terminal-table (1.8.0)
+      unicode-display_width (~> 1.1, >= 1.1.1)
+    thread_safe (0.3.6)
+    tzinfo (1.2.7)
+      thread_safe (~> 0.1)
+    unicode-display_width (1.7.0)
+    zeitwerk (2.3.0)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  jekyll
+  jekyll-avatar
+  jekyll-mentions
+  jekyll-seo-tag
+  jekyll-sitemap
+  jemoji
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/applications/misc/jekyll/basic/gemset.nix b/nixpkgs/pkgs/applications/misc/jekyll/basic/gemset.nix
new file mode 100644
index 000000000000..8c1773f19dc0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jekyll/basic/gemset.nix
@@ -0,0 +1,434 @@
+{
+  activesupport = {
+    dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo" "zeitwerk"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1l29n9n38c9lpy5smh26r7fy7jp2bpjqlzhxgsr79cv7xpwlrbhs";
+      type = "gem";
+    };
+    version = "6.0.3.1";
+  };
+  addressable = {
+    dependencies = ["public_suffix"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy";
+      type = "gem";
+    };
+    version = "2.7.0";
+  };
+  colorator = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  concurrent-ruby = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "094387x4yasb797mv07cs3g6f08y56virc2rjcpb1k79rzaj3nhl";
+      type = "gem";
+    };
+    version = "1.1.6";
+  };
+  em-websocket = {
+    dependencies = ["eventmachine" "http_parser.rb"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3";
+      type = "gem";
+    };
+    version = "0.5.1";
+  };
+  eventmachine = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r";
+      type = "gem";
+    };
+    version = "1.2.7";
+  };
+  ffi = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10lfhahnnc91v63xpvk65apn61pib086zha3z5sp1xk9acfx12h4";
+      type = "gem";
+    };
+    version = "1.12.2";
+  };
+  forwardable-extended = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v";
+      type = "gem";
+    };
+    version = "2.6.0";
+  };
+  gemoji = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vgklpmhdz98xayln5hhqv4ffdyrglzwdixkn5gsk9rj94pkymc0";
+      type = "gem";
+    };
+    version = "3.0.1";
+  };
+  html-pipeline = {
+    dependencies = ["activesupport" "nokogiri"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1x5i330yks7pb1jxcbm9n6gslkgaqhyvl13d0cqxmxzkcajvb7z4";
+      type = "gem";
+    };
+    version = "2.12.3";
+  };
+  "http_parser.rb" = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi";
+      type = "gem";
+    };
+    version = "0.6.0";
+  };
+  i18n = {
+    dependencies = ["concurrent-ruby"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jwrd1l4mxz06iyx6053lr6hz2zy7ah2k3ranfzisvych5q19kwm";
+      type = "gem";
+    };
+    version = "1.8.2";
+  };
+  jekyll = {
+    dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "kramdown-parser-gfm" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml" "terminal-table"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0v01g9cwn4v7rnpsl9yvscjzvah3p4xwh03zp37zxkvw5kv004n8";
+      type = "gem";
+    };
+    version = "4.1.0";
+  };
+  jekyll-avatar = {
+    dependencies = ["jekyll"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03bys2pl60vq92skfhlfqr2j68zhfjc86jffpg32f94wzjk8n0wk";
+      type = "gem";
+    };
+    version = "0.7.0";
+  };
+  jekyll-mentions = {
+    dependencies = ["html-pipeline" "jekyll"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1n8y67plydfmay3jn865igvgb3h6s2crk8kq7ydk3wmn9h103s1r";
+      type = "gem";
+    };
+    version = "1.6.0";
+  };
+  jekyll-sass-converter = {
+    dependencies = ["sassc"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04ncr44wrilz26ayqwlg7379yjnkb29mvx4j04i62b7czmdrc9dv";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+  jekyll-seo-tag = {
+    dependencies = ["jekyll"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p9fl2r4ni10lbx143zp41caldjs4hg27az5wg42sbwzb7s6z66m";
+      type = "gem";
+    };
+    version = "2.6.1";
+  };
+  jekyll-sitemap = {
+    dependencies = ["jekyll"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0622rwsn5i0m5xcyzdn86l68wgydqwji03lqixdfm1f1xdfqrq0d";
+      type = "gem";
+    };
+    version = "1.4.0";
+  };
+  jekyll-watch = {
+    dependencies = ["listen"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qd7hy1kl87fl7l0frw5qbn22x7ayfzlv9a5ca1m59g0ym1ysi5w";
+      type = "gem";
+    };
+    version = "2.2.1";
+  };
+  jemoji = {
+    dependencies = ["gemoji" "html-pipeline" "jekyll"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09sxbnrqz5vf6rxmh6lzism31gz2g3hw86ymg37r1ccknclv3cp9";
+      type = "gem";
+    };
+    version = "0.12.0";
+  };
+  kramdown = {
+    dependencies = ["rexml"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "059mk8lmddp2a2aa6s4pp7x2yyqbqg5crx5jkn32dzlnqi2j5cn6";
+      type = "gem";
+    };
+    version = "2.2.1";
+  };
+  kramdown-parser-gfm = {
+    dependencies = ["kramdown"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  liquid = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0zhg5ha8zy8zw9qr3fl4wgk4r5940n4128xm2pn4shpbzdbsj5by";
+      type = "gem";
+    };
+    version = "4.0.3";
+  };
+  listen = {
+    dependencies = ["rb-fsevent" "rb-inotify"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1w923wmdi3gyiky0asqdw5dnh3gcjs2xyn82ajvjfjwh6sn0clgi";
+      type = "gem";
+    };
+    version = "3.2.1";
+  };
+  mercenary = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0f2i827w4lmsizrxixsrv2ssa3gk1b7lmqh8brk8ijmdb551wnmj";
+      type = "gem";
+    };
+    version = "0.4.0";
+  };
+  mini_portile2 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy";
+      type = "gem";
+    };
+    version = "2.4.0";
+  };
+  minitest = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09bz9nsznxgaf06cx3b5z71glgl0hdw469gqx3w7bqijgrb55p5g";
+      type = "gem";
+    };
+    version = "5.14.1";
+  };
+  nokogiri = {
+    dependencies = ["mini_portile2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12j76d0bp608932xkzmfi638c7aqah57l437q8494znzbj610qnm";
+      type = "gem";
+    };
+    version = "1.10.9";
+  };
+  pathutil = {
+    dependencies = ["forwardable-extended"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4";
+      type = "gem";
+    };
+    version = "0.16.2";
+  };
+  public_suffix = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vywld400fzi17cszwrchrzcqys4qm6sshbv73wy5mwcixmrgg7g";
+      type = "gem";
+    };
+    version = "4.0.5";
+  };
+  rb-fsevent = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1k9bsj7ni0g2fd7scyyy1sk9dy2pg9akniahab0iznvjmhn54h87";
+      type = "gem";
+    };
+    version = "0.10.4";
+  };
+  rb-inotify = {
+    dependencies = ["ffi"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005";
+      type = "gem";
+    };
+    version = "0.10.1";
+  };
+  rexml = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1mkvkcw9fhpaizrhca0pdgjcrbns48rlz4g6lavl5gjjq3rk2sq3";
+      type = "gem";
+    };
+    version = "3.2.4";
+  };
+  rouge = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "102rc07d78k5bkl0s9nd1gw6wz0w0zcvg4g5sl7z9xxi4r793c35";
+      type = "gem";
+    };
+    version = "3.19.0";
+  };
+  safe_yaml = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0j7qv63p0vqcd838i2iy2f76c3dgwzkiz1d1xkg7n0pbnxj2vb56";
+      type = "gem";
+    };
+    version = "1.0.5";
+  };
+  sassc = {
+    dependencies = ["ffi"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qzfnvb8khvc6w2sn3k91mndc2w50xxx5c84jkr6xdxlmaq1a3kg";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+  terminal-table = {
+    dependencies = ["unicode-display_width"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1512cngw35hsmhvw4c05rscihc59mnj09m249sm9p3pik831ydqk";
+      type = "gem";
+    };
+    version = "1.8.0";
+  };
+  thread_safe = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
+      type = "gem";
+    };
+    version = "0.3.6";
+  };
+  tzinfo = {
+    dependencies = ["thread_safe"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1i3jh086w1kbdj3k5l60lc3nwbanmzdf8yjj3mlrx9b2gjjxhi9r";
+      type = "gem";
+    };
+    version = "1.2.7";
+  };
+  unicode-display_width = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06i3id27s60141x6fdnjn5rar1cywdwy64ilc59cz937303q3mna";
+      type = "gem";
+    };
+    version = "1.7.0";
+  };
+  zeitwerk = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1akpm3pwvyiack2zk6giv9yn3cqb8pw6g40p4394pdc3xmy3s4k0";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/misc/jekyll/default.nix b/nixpkgs/pkgs/applications/misc/jekyll/default.nix
new file mode 100644
index 000000000000..54857d614206
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jekyll/default.nix
@@ -0,0 +1,55 @@
+{ lib, bundlerApp, ruby
+, writeShellScriptBin, makeWrapper
+, withOptionalDependencies ? false
+}:
+
+let
+  rubyWrapper = writeShellScriptBin "ruby" ''
+    if [[ "$#" -eq 2 ]]; then
+      if [[ "''${1##*/}" == "bundle" && "$2" == "install" ]]; then
+        # See https://github.com/NixOS/nixpkgs/issues/58126 for more details.
+        echo 'Skipping "bundle install" as it fails due to the Nix wrapper.'
+        echo 'Please enter the new directory and run the following commands to serve the page:'
+        echo 'nix-shell -p bundler --run "bundle install --gemfile=Gemfile --path vendor/cache"'
+        echo 'nix-shell -p bundler --run "bundle exec jekyll serve"'
+        exit 0
+        # The following nearly works:
+        unset BUNDLE_FROZEN
+        exec ${ruby}/bin/ruby "$@" --gemfile=Gemfile --path=vendor/cache
+      fi
+    fi
+    # Else: Don't modify the arguments:
+    exec ${ruby}/bin/ruby "$@"
+  '';
+in bundlerApp {
+  pname = "jekyll";
+  exes = [ "jekyll" ];
+
+  inherit ruby;
+  gemdir = if withOptionalDependencies
+    then ./full
+    else ./basic;
+
+  buildInputs = [ makeWrapper ];
+
+  postBuild = ''
+    wrapProgram $out/bin/jekyll --prefix PATH : ${rubyWrapper}/bin
+  '';
+
+  meta = with lib; {
+    description = "A blog-aware, static site generator, written in Ruby";
+    longDescription = ''
+      Jekyll is a simple, blog-aware, static site generator, written in Ruby.
+      Think of it like a file-based CMS, without all the complexity. Jekyll
+      takes your content, renders Markdown and Liquid templates, and spits out a
+      complete, static website ready to be served by Apache, Nginx or another
+      web server. Jekyll is the engine behind GitHub Pages, which you can use to
+      host sites right from your GitHub repositories.
+    '';
+    homepage    = "https://jekyllrb.com/";
+    #changelog   = "https://raw.githubusercontent.com/jekyll/jekyll/v${version}/History.markdown";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ primeos pesterhazy ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/jekyll/full/Gemfile b/nixpkgs/pkgs/applications/misc/jekyll/full/Gemfile
new file mode 100644
index 000000000000..8e7499bad61a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jekyll/full/Gemfile
@@ -0,0 +1,27 @@
+source "https://rubygems.org"
+
+gem "jekyll"
+
+gem "jekyll-avatar"
+gem "jekyll-mentions"
+gem "jekyll-seo-tag"
+gem "jekyll-sitemap"
+gem "jemoji"
+
+# Optional dependencies:
+gem "jekyll-coffeescript"
+#gem "jekyll-docs"
+gem "jekyll-feed", "~> 0.9"
+gem "jekyll-gist"
+gem "jekyll-paginate"
+gem "jekyll-redirect-from"
+gem "kramdown-syntax-coderay"
+gem "mime-types", "~> 3.0"
+gem "rdoc", "~> 6.0"
+gem "tomlrb", "~> 1.2"
+
+platform :ruby, :mswin, :mingw, :x64_mingw do
+  gem "classifier-reborn", "~> 2.2"
+  gem "liquid-c", "~> 4.0"
+  gem "yajl-ruby", "~> 1.4"
+end
diff --git a/nixpkgs/pkgs/applications/misc/jekyll/full/Gemfile.lock b/nixpkgs/pkgs/applications/misc/jekyll/full/Gemfile.lock
new file mode 100644
index 000000000000..8b771bc1c0f7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jekyll/full/Gemfile.lock
@@ -0,0 +1,154 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    activesupport (6.0.3.1)
+      concurrent-ruby (~> 1.0, >= 1.0.2)
+      i18n (>= 0.7, < 2)
+      minitest (~> 5.1)
+      tzinfo (~> 1.1)
+      zeitwerk (~> 2.2, >= 2.2.2)
+    addressable (2.7.0)
+      public_suffix (>= 2.0.2, < 5.0)
+    classifier-reborn (2.2.0)
+      fast-stemmer (~> 1.0)
+    coderay (1.1.2)
+    coffee-script (2.4.1)
+      coffee-script-source
+      execjs
+    coffee-script-source (1.12.2)
+    colorator (1.1.0)
+    concurrent-ruby (1.1.6)
+    em-websocket (0.5.1)
+      eventmachine (>= 0.12.9)
+      http_parser.rb (~> 0.6.0)
+    eventmachine (1.2.7)
+    execjs (2.7.0)
+    faraday (1.0.1)
+      multipart-post (>= 1.2, < 3)
+    fast-stemmer (1.0.2)
+    ffi (1.12.2)
+    forwardable-extended (2.6.0)
+    gemoji (3.0.1)
+    html-pipeline (2.12.3)
+      activesupport (>= 2)
+      nokogiri (>= 1.4)
+    http_parser.rb (0.6.0)
+    i18n (1.8.2)
+      concurrent-ruby (~> 1.0)
+    jekyll (4.1.0)
+      addressable (~> 2.4)
+      colorator (~> 1.0)
+      em-websocket (~> 0.5)
+      i18n (~> 1.0)
+      jekyll-sass-converter (~> 2.0)
+      jekyll-watch (~> 2.0)
+      kramdown (~> 2.1)
+      kramdown-parser-gfm (~> 1.0)
+      liquid (~> 4.0)
+      mercenary (~> 0.4.0)
+      pathutil (~> 0.9)
+      rouge (~> 3.0)
+      safe_yaml (~> 1.0)
+      terminal-table (~> 1.8)
+    jekyll-avatar (0.7.0)
+      jekyll (>= 3.0, < 5.0)
+    jekyll-coffeescript (2.0.0)
+      coffee-script (~> 2.2)
+      coffee-script-source (~> 1.12)
+    jekyll-feed (0.13.0)
+      jekyll (>= 3.7, < 5.0)
+    jekyll-gist (1.5.0)
+      octokit (~> 4.2)
+    jekyll-mentions (1.6.0)
+      html-pipeline (~> 2.3)
+      jekyll (>= 3.7, < 5.0)
+    jekyll-paginate (1.1.0)
+    jekyll-redirect-from (0.16.0)
+      jekyll (>= 3.3, < 5.0)
+    jekyll-sass-converter (2.1.0)
+      sassc (> 2.0.1, < 3.0)
+    jekyll-seo-tag (2.6.1)
+      jekyll (>= 3.3, < 5.0)
+    jekyll-sitemap (1.4.0)
+      jekyll (>= 3.7, < 5.0)
+    jekyll-watch (2.2.1)
+      listen (~> 3.0)
+    jemoji (0.12.0)
+      gemoji (~> 3.0)
+      html-pipeline (~> 2.2)
+      jekyll (>= 3.0, < 5.0)
+    kramdown (2.2.1)
+      rexml
+    kramdown-parser-gfm (1.1.0)
+      kramdown (~> 2.0)
+    kramdown-syntax-coderay (1.0.1)
+      coderay (~> 1.1)
+      kramdown (~> 2.0)
+    liquid (4.0.3)
+    liquid-c (4.0.0)
+      liquid (>= 3.0.0)
+    listen (3.2.1)
+      rb-fsevent (~> 0.10, >= 0.10.3)
+      rb-inotify (~> 0.9, >= 0.9.10)
+    mercenary (0.4.0)
+    mime-types (3.3.1)
+      mime-types-data (~> 3.2015)
+    mime-types-data (3.2020.0512)
+    mini_portile2 (2.4.0)
+    minitest (5.14.1)
+    multipart-post (2.1.1)
+    nokogiri (1.10.9)
+      mini_portile2 (~> 2.4.0)
+    octokit (4.18.0)
+      faraday (>= 0.9)
+      sawyer (~> 0.8.0, >= 0.5.3)
+    pathutil (0.16.2)
+      forwardable-extended (~> 2.6)
+    public_suffix (4.0.5)
+    rb-fsevent (0.10.4)
+    rb-inotify (0.10.1)
+      ffi (~> 1.0)
+    rdoc (6.2.1)
+    rexml (3.2.4)
+    rouge (3.19.0)
+    safe_yaml (1.0.5)
+    sassc (2.3.0)
+      ffi (~> 1.9)
+    sawyer (0.8.2)
+      addressable (>= 2.3.5)
+      faraday (> 0.8, < 2.0)
+    terminal-table (1.8.0)
+      unicode-display_width (~> 1.1, >= 1.1.1)
+    thread_safe (0.3.6)
+    tomlrb (1.3.0)
+    tzinfo (1.2.7)
+      thread_safe (~> 0.1)
+    unicode-display_width (1.7.0)
+    yajl-ruby (1.4.1)
+    zeitwerk (2.3.0)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  classifier-reborn (~> 2.2)
+  jekyll
+  jekyll-avatar
+  jekyll-coffeescript
+  jekyll-feed (~> 0.9)
+  jekyll-gist
+  jekyll-mentions
+  jekyll-paginate
+  jekyll-redirect-from
+  jekyll-seo-tag
+  jekyll-sitemap
+  jemoji
+  kramdown-syntax-coderay
+  liquid-c (~> 4.0)
+  mime-types (~> 3.0)
+  rdoc (~> 6.0)
+  tomlrb (~> 1.2)
+  yajl-ruby (~> 1.4)
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/applications/misc/jekyll/full/gemset.nix b/nixpkgs/pkgs/applications/misc/jekyll/full/gemset.nix
new file mode 100644
index 000000000000..5f54a4f7382f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jekyll/full/gemset.nix
@@ -0,0 +1,726 @@
+{
+  activesupport = {
+    dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo" "zeitwerk"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1l29n9n38c9lpy5smh26r7fy7jp2bpjqlzhxgsr79cv7xpwlrbhs";
+      type = "gem";
+    };
+    version = "6.0.3.1";
+  };
+  addressable = {
+    dependencies = ["public_suffix"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy";
+      type = "gem";
+    };
+    version = "2.7.0";
+  };
+  classifier-reborn = {
+    dependencies = ["fast-stemmer"];
+    groups = ["default"];
+    platforms = [{
+      engine = "maglev";
+    } {
+      engine = "mingw";
+    } {
+      engine = "mingw";
+    } {
+      engine = "mswin";
+    } {
+      engine = "rbx";
+    } {
+      engine = "ruby";
+    }];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04nxmm5b7j7r0ij9pcpdr7xqpig559gfzrw042ycxcfyav2pv6ij";
+      type = "gem";
+    };
+    version = "2.2.0";
+  };
+  coderay = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
+      type = "gem";
+    };
+    version = "1.1.2";
+  };
+  coffee-script = {
+    dependencies = ["coffee-script-source" "execjs"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rc7scyk7mnpfxqv5yy4y5q1hx3i7q3ahplcp4bq2g5r24g2izl2";
+      type = "gem";
+    };
+    version = "2.4.1";
+  };
+  coffee-script-source = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1907v9q1zcqmmyqzhzych5l7qifgls2rlbnbhy5vzyr7i7yicaz1";
+      type = "gem";
+    };
+    version = "1.12.2";
+  };
+  colorator = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  concurrent-ruby = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "094387x4yasb797mv07cs3g6f08y56virc2rjcpb1k79rzaj3nhl";
+      type = "gem";
+    };
+    version = "1.1.6";
+  };
+  em-websocket = {
+    dependencies = ["eventmachine" "http_parser.rb"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3";
+      type = "gem";
+    };
+    version = "0.5.1";
+  };
+  eventmachine = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r";
+      type = "gem";
+    };
+    version = "1.2.7";
+  };
+  execjs = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yz55sf2nd3l666ms6xr18sm2aggcvmb8qr3v53lr4rir32y1yp1";
+      type = "gem";
+    };
+    version = "2.7.0";
+  };
+  faraday = {
+    dependencies = ["multipart-post"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wwks9652xwgjm7yszcq5xr960pjypc07ivwzbjzpvy9zh2fw6iq";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  fast-stemmer = {
+    groups = ["default"];
+    platforms = [{
+      engine = "maglev";
+    } {
+      engine = "mingw";
+    } {
+      engine = "mingw";
+    } {
+      engine = "mswin";
+    } {
+      engine = "rbx";
+    } {
+      engine = "ruby";
+    }];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0688clyk4xxh3kdb18vi089k90mca8ji5fwaknh3da5wrzcrzanh";
+      type = "gem";
+    };
+    version = "1.0.2";
+  };
+  ffi = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10lfhahnnc91v63xpvk65apn61pib086zha3z5sp1xk9acfx12h4";
+      type = "gem";
+    };
+    version = "1.12.2";
+  };
+  forwardable-extended = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v";
+      type = "gem";
+    };
+    version = "2.6.0";
+  };
+  gemoji = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vgklpmhdz98xayln5hhqv4ffdyrglzwdixkn5gsk9rj94pkymc0";
+      type = "gem";
+    };
+    version = "3.0.1";
+  };
+  html-pipeline = {
+    dependencies = ["activesupport" "nokogiri"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1x5i330yks7pb1jxcbm9n6gslkgaqhyvl13d0cqxmxzkcajvb7z4";
+      type = "gem";
+    };
+    version = "2.12.3";
+  };
+  "http_parser.rb" = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi";
+      type = "gem";
+    };
+    version = "0.6.0";
+  };
+  i18n = {
+    dependencies = ["concurrent-ruby"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jwrd1l4mxz06iyx6053lr6hz2zy7ah2k3ranfzisvych5q19kwm";
+      type = "gem";
+    };
+    version = "1.8.2";
+  };
+  jekyll = {
+    dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "kramdown-parser-gfm" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml" "terminal-table"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0v01g9cwn4v7rnpsl9yvscjzvah3p4xwh03zp37zxkvw5kv004n8";
+      type = "gem";
+    };
+    version = "4.1.0";
+  };
+  jekyll-avatar = {
+    dependencies = ["jekyll"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03bys2pl60vq92skfhlfqr2j68zhfjc86jffpg32f94wzjk8n0wk";
+      type = "gem";
+    };
+    version = "0.7.0";
+  };
+  jekyll-coffeescript = {
+    dependencies = ["coffee-script" "coffee-script-source"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17fjk0bfm0rs3myid24y2scsf5vzzza185bissjmcc44cbxp571j";
+      type = "gem";
+    };
+    version = "2.0.0";
+  };
+  jekyll-feed = {
+    dependencies = ["jekyll"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lx8nvkhd8l1wm3b6s506rycwbmpbzbsbjl65p21asjz6vbwf1ir";
+      type = "gem";
+    };
+    version = "0.13.0";
+  };
+  jekyll-gist = {
+    dependencies = ["octokit"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03wz9j6yq3552nzf4g71qrdm9pfdgbm68abml9sjjgiaan1n8ns9";
+      type = "gem";
+    };
+    version = "1.5.0";
+  };
+  jekyll-mentions = {
+    dependencies = ["html-pipeline" "jekyll"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1n8y67plydfmay3jn865igvgb3h6s2crk8kq7ydk3wmn9h103s1r";
+      type = "gem";
+    };
+    version = "1.6.0";
+  };
+  jekyll-paginate = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0r7bcs8fq98zldih4787zk5i9w24nz5wa26m84ssja95n3sas2l8";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  jekyll-redirect-from = {
+    dependencies = ["jekyll"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nz6kd6qsa160lmjmls4zgx7fwcpp8ac07mpzy80z6zgd7jwldb6";
+      type = "gem";
+    };
+    version = "0.16.0";
+  };
+  jekyll-sass-converter = {
+    dependencies = ["sassc"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04ncr44wrilz26ayqwlg7379yjnkb29mvx4j04i62b7czmdrc9dv";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+  jekyll-seo-tag = {
+    dependencies = ["jekyll"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p9fl2r4ni10lbx143zp41caldjs4hg27az5wg42sbwzb7s6z66m";
+      type = "gem";
+    };
+    version = "2.6.1";
+  };
+  jekyll-sitemap = {
+    dependencies = ["jekyll"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0622rwsn5i0m5xcyzdn86l68wgydqwji03lqixdfm1f1xdfqrq0d";
+      type = "gem";
+    };
+    version = "1.4.0";
+  };
+  jekyll-watch = {
+    dependencies = ["listen"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qd7hy1kl87fl7l0frw5qbn22x7ayfzlv9a5ca1m59g0ym1ysi5w";
+      type = "gem";
+    };
+    version = "2.2.1";
+  };
+  jemoji = {
+    dependencies = ["gemoji" "html-pipeline" "jekyll"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09sxbnrqz5vf6rxmh6lzism31gz2g3hw86ymg37r1ccknclv3cp9";
+      type = "gem";
+    };
+    version = "0.12.0";
+  };
+  kramdown = {
+    dependencies = ["rexml"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "059mk8lmddp2a2aa6s4pp7x2yyqbqg5crx5jkn32dzlnqi2j5cn6";
+      type = "gem";
+    };
+    version = "2.2.1";
+  };
+  kramdown-parser-gfm = {
+    dependencies = ["kramdown"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  kramdown-syntax-coderay = {
+    dependencies = ["coderay" "kramdown"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03vpfpmxcdbqyh6kxrjf5xa9qgvwqj0cfv2khz5h32fp5f5dmrda";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  liquid = {
+    groups = ["default"];
+    platforms = [{
+      engine = "maglev";
+    } {
+      engine = "mingw";
+    } {
+      engine = "mingw";
+    } {
+      engine = "mswin";
+    } {
+      engine = "rbx";
+    } {
+      engine = "ruby";
+    }];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0zhg5ha8zy8zw9qr3fl4wgk4r5940n4128xm2pn4shpbzdbsj5by";
+      type = "gem";
+    };
+    version = "4.0.3";
+  };
+  liquid-c = {
+    dependencies = ["liquid"];
+    groups = ["default"];
+    platforms = [{
+      engine = "maglev";
+    } {
+      engine = "mingw";
+    } {
+      engine = "mingw";
+    } {
+      engine = "mswin";
+    } {
+      engine = "rbx";
+    } {
+      engine = "ruby";
+    }];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ibcpajsgq530xrz3dk578mfvivrlfd624j6ifz6ms4w69j8jqj6";
+      type = "gem";
+    };
+    version = "4.0.0";
+  };
+  listen = {
+    dependencies = ["rb-fsevent" "rb-inotify"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1w923wmdi3gyiky0asqdw5dnh3gcjs2xyn82ajvjfjwh6sn0clgi";
+      type = "gem";
+    };
+    version = "3.2.1";
+  };
+  mercenary = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0f2i827w4lmsizrxixsrv2ssa3gk1b7lmqh8brk8ijmdb551wnmj";
+      type = "gem";
+    };
+    version = "0.4.0";
+  };
+  mime-types = {
+    dependencies = ["mime-types-data"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zj12l9qk62anvk9bjvandpa6vy4xslil15wl6wlivyf51z773vh";
+      type = "gem";
+    };
+    version = "3.3.1";
+  };
+  mime-types-data = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1z75svngyhsglx0y2f9rnil2j08f9ab54b3l95bpgz67zq2if753";
+      type = "gem";
+    };
+    version = "3.2020.0512";
+  };
+  mini_portile2 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy";
+      type = "gem";
+    };
+    version = "2.4.0";
+  };
+  minitest = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09bz9nsznxgaf06cx3b5z71glgl0hdw469gqx3w7bqijgrb55p5g";
+      type = "gem";
+    };
+    version = "5.14.1";
+  };
+  multipart-post = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zgw9zlwh2a6i1yvhhc4a84ry1hv824d6g2iw2chs3k5aylpmpfj";
+      type = "gem";
+    };
+    version = "2.1.1";
+  };
+  nokogiri = {
+    dependencies = ["mini_portile2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12j76d0bp608932xkzmfi638c7aqah57l437q8494znzbj610qnm";
+      type = "gem";
+    };
+    version = "1.10.9";
+  };
+  octokit = {
+    dependencies = ["faraday" "sawyer"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0zvfr9njmj5svi39fcsi2b0g7pcxb0vamw9dlyas8bg814jlzhi6";
+      type = "gem";
+    };
+    version = "4.18.0";
+  };
+  pathutil = {
+    dependencies = ["forwardable-extended"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4";
+      type = "gem";
+    };
+    version = "0.16.2";
+  };
+  public_suffix = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vywld400fzi17cszwrchrzcqys4qm6sshbv73wy5mwcixmrgg7g";
+      type = "gem";
+    };
+    version = "4.0.5";
+  };
+  rb-fsevent = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1k9bsj7ni0g2fd7scyyy1sk9dy2pg9akniahab0iznvjmhn54h87";
+      type = "gem";
+    };
+    version = "0.10.4";
+  };
+  rb-inotify = {
+    dependencies = ["ffi"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005";
+      type = "gem";
+    };
+    version = "0.10.1";
+  };
+  rdoc = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08862mr1575j8g32wma4pv2qwj4xpllk29i5j61hgf9nwn64afhc";
+      type = "gem";
+    };
+    version = "6.2.1";
+  };
+  rexml = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1mkvkcw9fhpaizrhca0pdgjcrbns48rlz4g6lavl5gjjq3rk2sq3";
+      type = "gem";
+    };
+    version = "3.2.4";
+  };
+  rouge = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "102rc07d78k5bkl0s9nd1gw6wz0w0zcvg4g5sl7z9xxi4r793c35";
+      type = "gem";
+    };
+    version = "3.19.0";
+  };
+  safe_yaml = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0j7qv63p0vqcd838i2iy2f76c3dgwzkiz1d1xkg7n0pbnxj2vb56";
+      type = "gem";
+    };
+    version = "1.0.5";
+  };
+  sassc = {
+    dependencies = ["ffi"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qzfnvb8khvc6w2sn3k91mndc2w50xxx5c84jkr6xdxlmaq1a3kg";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+  sawyer = {
+    dependencies = ["addressable" "faraday"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yrdchs3psh583rjapkv33mljdivggqn99wkydkjdckcjn43j3cz";
+      type = "gem";
+    };
+    version = "0.8.2";
+  };
+  terminal-table = {
+    dependencies = ["unicode-display_width"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1512cngw35hsmhvw4c05rscihc59mnj09m249sm9p3pik831ydqk";
+      type = "gem";
+    };
+    version = "1.8.0";
+  };
+  thread_safe = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
+      type = "gem";
+    };
+    version = "0.3.6";
+  };
+  tomlrb = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00x5y9h4fbvrv4xrjk4cqlkm4vq8gv73ax4alj3ac2x77zsnnrk8";
+      type = "gem";
+    };
+    version = "1.3.0";
+  };
+  tzinfo = {
+    dependencies = ["thread_safe"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1i3jh086w1kbdj3k5l60lc3nwbanmzdf8yjj3mlrx9b2gjjxhi9r";
+      type = "gem";
+    };
+    version = "1.2.7";
+  };
+  unicode-display_width = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06i3id27s60141x6fdnjn5rar1cywdwy64ilc59cz937303q3mna";
+      type = "gem";
+    };
+    version = "1.7.0";
+  };
+  yajl-ruby = {
+    groups = ["default"];
+    platforms = [{
+      engine = "maglev";
+    } {
+      engine = "mingw";
+    } {
+      engine = "mingw";
+    } {
+      engine = "mswin";
+    } {
+      engine = "rbx";
+    } {
+      engine = "ruby";
+    }];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf";
+      type = "gem";
+    };
+    version = "1.4.1";
+  };
+  zeitwerk = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1akpm3pwvyiack2zk6giv9yn3cqb8pw6g40p4394pdc3xmy3s4k0";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/misc/jekyll/update.sh b/nixpkgs/pkgs/applications/misc/jekyll/update.sh
new file mode 100755
index 000000000000..528f1062c733
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jekyll/update.sh
@@ -0,0 +1,15 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p bundix zlib
+
+set -o errexit
+set -o nounset
+
+readonly BASEDIR="$(dirname $(readlink -f $0))"
+
+for directory in "basic" "full"; do
+  pushd "$BASEDIR/$directory"
+  rm -f Gemfile.lock gemset.nix
+  bundix --magic
+  rm -rf .bundle vendor
+  popd
+done
diff --git a/nixpkgs/pkgs/applications/misc/jgmenu/default.nix b/nixpkgs/pkgs/applications/misc/jgmenu/default.nix
new file mode 100644
index 000000000000..e6a140ec7f96
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jgmenu/default.nix
@@ -0,0 +1,67 @@
+{ stdenv
+, fetchFromGitHub
+, pkgconfig
+, python3Packages
+, pango
+, librsvg
+, libxml2
+, menu-cache
+, xorg
+, makeWrapper
+, enableXfcePanelApplet ? false
+, xfce
+, gtk3
+}:
+
+stdenv.mkDerivation rec {
+  pname = "jgmenu";
+  version = "4.2.1";
+
+  src = fetchFromGitHub {
+    owner = "johanmalm";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "00q4v31x4q7nm61wda4v0gznv18bm3qs8mp04pcns60qacdv9lkk";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    makeWrapper
+    python3Packages.wrapPython
+  ];
+
+  buildInputs = [
+    pango
+    librsvg
+    libxml2
+    menu-cache
+    xorg.libXinerama
+    xorg.libXrandr
+    python3Packages.python
+  ] ++ stdenv.lib.optionals enableXfcePanelApplet [
+    gtk3
+    xfce.libxfce4util
+    xfce.xfce4-panel
+  ];
+
+  configureFlags = [
+  ]
+  ++ stdenv.lib.optionals enableXfcePanelApplet [
+    "--with-xfce4-panel-applet"
+  ];
+
+  postFixup = ''
+    wrapPythonProgramsIn "$out/lib/jgmenu"
+    for f in $out/bin/jgmenu{,_run}; do
+      wrapProgram $f --prefix PATH : $out/bin
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/johanmalm/jgmenu";
+    description = "Small X11 menu intended to be used with openbox and tint2";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/jigdo/default.nix b/nixpkgs/pkgs/applications/misc/jigdo/default.nix
new file mode 100644
index 000000000000..134354de40b7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jigdo/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, db, gtk2, bzip2 }:
+
+stdenv.mkDerivation {
+  name = "jigdo-0.7.3";
+
+  # Debian sources
+  src = fetchurl {
+    url = "http://ftp.de.debian.org/debian/pool/main/j/jigdo/jigdo_0.7.3.orig.tar.gz";
+    sha256 = "1qvqzgzb0dzq82fa1ffs6hyij655rajnfwkljk1y0mnkygnha1xv";
+  };
+
+  patches = [
+    (fetchurl {
+      url = "http://ftp.de.debian.org/debian/pool/main/j/jigdo/jigdo_0.7.3-4.diff.gz";
+      sha256 = "03zsh57fijciiv23lf55k6fbfhhzm866xjhx83x54v5s1g2h6m8y";
+    })
+    ./sizewidth.patch
+  ];
+
+  buildInputs = [ db gtk2 bzip2 ];
+
+  configureFlags = [ "--without-libdb" ];
+
+  meta = {
+    description = "Download utility that can fetch files from several sources simultaneously";
+    homepage = "http://atterer.net/jigdo/";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/jigdo/sizewidth.patch b/nixpkgs/pkgs/applications/misc/jigdo/sizewidth.patch
new file mode 100644
index 000000000000..17b1749fcf77
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jigdo/sizewidth.patch
@@ -0,0 +1,40 @@
+diff --git i/src/mkimage.cc w/src/mkimage.cc
+index 02e65b1..b263796 100755
+--- i/src/mkimage.cc
++++ w/src/mkimage.cc
+@@ -285,27 +285,27 @@ bostream& JigdoDescVec::put(bostream& file, MD5Sum* md) const {
+ //______________________________________________________________________
+ 
+ namespace {
+-  const int SIZE_WIDTH = 12;
++  const int MKIMAGE_SIZE_WIDTH = 12;
+ }
+ 
+ ostream& JigdoDesc::ImageInfo::put(ostream& s) const {
+-  s << "image-info  " << setw(SIZE_WIDTH) << size() << "              "
++  s << "image-info  " << setw(MKIMAGE_SIZE_WIDTH) << size() << "              "
+     << md5() << ' ' << blockLength() << '\n';
+   return s;
+ }
+ ostream& JigdoDesc::UnmatchedData::put(ostream& s) const {
+-  s << "in-template " << setw(SIZE_WIDTH) << offset() << ' '
+-    << setw(SIZE_WIDTH) << size() << '\n';
++  s << "in-template " << setw(MKIMAGE_SIZE_WIDTH) << offset() << ' '
++    << setw(MKIMAGE_SIZE_WIDTH) << size() << '\n';
+   return s;
+ }
+ ostream& JigdoDesc::MatchedFile::put(ostream& s) const {
+-  s << "need-file   " << setw(SIZE_WIDTH) << offset() << ' '
+-    << setw(SIZE_WIDTH) << size() << ' ' << md5() << ' ' << rsync() << '\n';
++  s << "need-file   " << setw(MKIMAGE_SIZE_WIDTH) << offset() << ' '
++    << setw(MKIMAGE_SIZE_WIDTH) << size() << ' ' << md5() << ' ' << rsync() << '\n';
+   return s;
+ }
+ ostream& JigdoDesc::WrittenFile::put(ostream& s) const {
+-  s << "have-file   " << setw(SIZE_WIDTH) << offset() << ' '
+-    << setw(SIZE_WIDTH) << size() << ' ' << md5() << ' ' << rsync() << '\n';
++  s << "have-file   " << setw(MKIMAGE_SIZE_WIDTH) << offset() << ' '
++    << setw(MKIMAGE_SIZE_WIDTH) << size() << ' ' << md5() << ' ' << rsync() << '\n';
+   return s;
+ }
+ 
diff --git a/nixpkgs/pkgs/applications/misc/joplin-desktop/default.nix b/nixpkgs/pkgs/applications/misc/joplin-desktop/default.nix
new file mode 100644
index 000000000000..6515b3132d27
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/joplin-desktop/default.nix
@@ -0,0 +1,48 @@
+{ appimageTools, fetchurl, lib, gsettings-desktop-schemas, gtk3, makeDesktopItem }:
+
+let
+  pname = "joplin-desktop";
+  version = "1.0.216";
+  desktopItem = makeDesktopItem {
+     name = "Joplin";
+     exec = "joplin-desktop";
+     type = "Application";
+     desktopName = "Joplin";
+  };
+in appimageTools.wrapType2 rec {
+  name = "${pname}-${version}";
+  src = fetchurl {
+    url = "https://github.com/laurent22/joplin/releases/download/v${version}/Joplin-${version}.AppImage";
+    sha256 = "17rb7h98h9i2p5kw5gznx5swpz6yxqdxwc9x5cgbkc31vk10iszn";
+  };
+
+
+  profile = ''
+    export LC_ALL=C.UTF-8
+    export XDG_DATA_DIRS=${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS
+  '';
+
+  multiPkgs = null; # no 32bit needed
+  extraPkgs = appimageTools.defaultFhsEnvArgs.multiPkgs;
+  extraInstallCommands = ''
+    mkdir -p $out/share/applications
+    ln -s ${desktopItem}/share/applications/* $out/share/applications
+    mv $out/bin/{${name},${pname}}
+  '';
+
+
+  meta = with lib; {
+    description = "An open source note taking and to-do application with synchronisation capabilities";
+    longDescription = ''
+      Joplin is a free, open source note taking and to-do application, which can
+      handle a large number of notes organised into notebooks. The notes are
+      searchable, can be copied, tagged and modified either from the
+      applications directly or from your own text editor. The notes are in
+      Markdown format.
+    '';
+    homepage = "https://joplinapp.org";
+    license = licenses.mit;
+    maintainers = with maintainers; [ hugoreeves ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/josm/default.nix b/nixpkgs/pkgs/applications/misc/josm/default.nix
new file mode 100644
index 000000000000..89d09703ddc5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/josm/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchurl, fetchsvn, makeWrapper, unzip, jre, libXxf86vm }:
+let
+  pname = "josm";
+  version = "16538";
+  srcs = {
+    jar = fetchurl {
+      url = "https://josm.openstreetmap.de/download/josm-snapshot-${version}.jar";
+      sha256 = "07hzwcjnfbl3s8l0m6japln0clm6wjm1zd3r1pd47b1dvclnyv28";
+    };
+    macosx = fetchurl {
+      url = "https://josm.openstreetmap.de/download/macosx/josm-macosx-${version}.zip";
+      sha256 = "1y0ssrwfqnmcvxwjfa3gdc3m9a952n8l3pdx0zmmaqwws4kak2a2";
+    };
+    pkg = fetchsvn {
+      url = "https://josm.openstreetmap.de/svn/trunk/native/linux/tested";
+      rev = version;
+      sha256 = "0ybjca6dhnbwl3xqwrc91c444fzs1zrlnz7qr3l79s1vll9r4qd1";
+    };
+  };
+in
+stdenv.mkDerivation {
+  inherit pname version;
+
+  dontUnpack = true;
+
+  buildInputs = stdenv.lib.optionals (!stdenv.isDarwin) [ jre makeWrapper ];
+
+  installPhase =
+    if stdenv.isDarwin then ''
+      mkdir -p $out/Applications
+      ${unzip}/bin/unzip ${srcs.macosx} 'JOSM.app/*' -d $out/Applications
+    '' else ''
+      install -Dm644 ${srcs.jar} $out/share/josm/josm.jar
+      cp -R ${srcs.pkg}/usr/share $out
+
+      # Add libXxf86vm to path because it is needed by at least Kendzi3D plugin
+      makeWrapper ${jre}/bin/java $out/bin/josm \
+        --add-flags "-Djosm.restart=true -Djava.net.useSystemProxies=true" \
+        --add-flags "-jar $out/share/josm/josm.jar" \
+        --prefix LD_LIBRARY_PATH ":" '${libXxf86vm}/lib'
+    '';
+
+  meta = with stdenv.lib; {
+    description = "An extensible editor for OpenStreetMap";
+    homepage = "https://josm.openstreetmap.de/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ rycee sikmir ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/jotta-cli/default.nix b/nixpkgs/pkgs/applications/misc/jotta-cli/default.nix
new file mode 100644
index 000000000000..70ca28b46783
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jotta-cli/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchzip }:
+
+let
+  arch = "amd64";
+in
+stdenv.mkDerivation rec {
+  pname = "jotta-cli";
+  version = "0.6.24251";
+  src = fetchzip {
+      url = "https://repo.jotta.us/archives/linux/${arch}/jotta-cli-${version}_linux_${arch}.tar.gz";
+      sha256 = "0f26fg5fqpz0f6jxp72cj5f2kf76jah5iaqlqsl87250y0hm330g";
+      stripRoot = false;
+    };
+
+  installPhase = ''
+    install -D usr/bin/jotta-cli usr/bin/jottad -t $out/bin/
+    mkdir -p $out/share/bash-completion/completions
+  '';
+
+  postFixup = ''
+    patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) $out/bin/jotta-cli
+    patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) $out/bin/jottad
+    $out/bin/jotta-cli completion > $out/share/bash-completion/completions/jotta-cli.bash
+  '';
+
+  meta = with stdenv.lib; {
+    description  = "Jottacloud CLI";
+    homepage     = "https://www.jottacloud.com/";
+    downloadPage = "https://repo.jotta.us/archives/linux/";
+    maintainers  = with maintainers; [ evenbrenden ];
+    license      = licenses.unfree;
+    platforms    = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/jp2a/default.nix b/nixpkgs/pkgs/applications/misc/jp2a/default.nix
new file mode 100644
index 000000000000..d30e5d96df45
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jp2a/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, libjpeg, autoreconfHook }:
+
+stdenv.mkDerivation rec {
+  version = "1.0.7";
+  pname = "jp2a";
+
+  src = fetchFromGitHub {
+    owner = "cslarsen";
+    repo = "jp2a";
+    rev = "v${version}";
+    sha256 = "12a1z9ba2j16y67f41y8ax5sgv1wdjd71pg7circdxkj263n78ql";
+  };
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ libjpeg ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://csl.name/jp2a/";
+    description = "A small utility that converts JPG images to ASCII";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/jrnl/default.nix b/nixpkgs/pkgs/applications/misc/jrnl/default.nix
new file mode 100644
index 000000000000..992b981c0037
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jrnl/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, python3
+}:
+
+with python3.pkgs;
+
+buildPythonApplication rec {
+  pname = "jrnl";
+  version = "1.9.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "d254c9c8f24dcf985b98a1d5311337c7f416e6305107eec34c567f58c95b06f4";
+  };
+
+  propagatedBuildInputs = [
+    pytz six tzlocal keyring dateutil
+    parsedatetime pycrypto
+  ];
+
+  # No tests in archive
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = "http://maebert.github.io/jrnl/";
+    description = "A simple command line journal application that stores your journal in a plain text file";
+    license = licenses.mit;
+    maintainers = with maintainers; [ zalakain ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/k2pdfopt/default.nix b/nixpkgs/pkgs/applications/misc/k2pdfopt/default.nix
new file mode 100644
index 000000000000..8899654cc4c8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/k2pdfopt/default.nix
@@ -0,0 +1,82 @@
+{ stdenv, fetchzip, fetchurl, fetchpatch, cmake, pkgconfig
+, zlib, libpng
+, enableGSL ? true, gsl
+, enableGhostScript ? true, ghostscript
+, enableMuPDF ? true, mupdf
+, enableJPEG2K ? false, jasper ? null  # disabled by default, jasper has unfixed CVE
+, enableDJVU ? true, djvulibre
+, enableGOCR ? false, gocr # Disabled by default due to crashes
+, enableTesseract ? true, leptonica, tesseract4
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "k2pdfopt";
+  version = "2.51a";
+
+  src = (fetchzip {
+    url = "http://www.willus.com/k2pdfopt/src/k2pdfopt_v2.51_src.zip";
+    sha256 = "133l7xkvi67s6sfk8cfh7rmavbsf7ib5fyksk1ci6b6sch3z2sw9";
+  });
+
+  # Note: the v2.51a zip contains only files to be replaced in the v2.50 zip.
+  v251a_src = (fetchzip {
+    url = "http://www.willus.com/k2pdfopt/src/k2pdfopt_v2.51a_src.zip";
+    sha256 = "0vvwblii7kgdwfxw8dzk6jbmz4dv94d7rkv18i60y8wkayj6yhl6";
+  });
+
+  postUnpack = ''
+    cp -r ${v251a_src}/* $sourceRoot
+  '';
+
+  patches = [ ./k2pdfopt.patch ./k2pdfopt-mupdf-1.16.1.patch ];
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs =
+  let
+    #  The patches below were constructed by taking the files from k2pdfopt in
+    #  the {mupdf,leptonica,tesseract}_mod/ directories, replacing the
+    #  corresponding files in the respective source trees, resolving any errors
+    #  with more recent versions of these depencencies, and running diff.
+    mupdf_modded = mupdf.overrideAttrs (attrs: {
+      patches = attrs.patches ++ [ ./mupdf.patch ]; # Last verified with mupdf 1.16.1
+    });
+    leptonica_modded = leptonica.overrideAttrs (attrs: {
+      patches = [ ./leptonica.patch ]; # Last verified with leptonica 1.78.0
+    });
+    tesseract_modded = tesseract4.override {
+      tesseractBase = tesseract4.tesseractBase.overrideAttrs (_: {
+        patches = [ ./tesseract.patch ]; # Last verified with tesseract 1.4
+      });
+    };
+  in
+    [ zlib libpng ] ++
+    optional enableGSL gsl ++
+    optional enableGhostScript ghostscript ++
+    optional enableMuPDF mupdf_modded ++
+    optional enableJPEG2K jasper ++
+    optional enableDJVU djvulibre ++
+    optional enableGOCR gocr ++
+    optionals enableTesseract [ leptonica_modded tesseract_modded ];
+
+  dontUseCmakeBuildDir = true;
+
+  cmakeFlags = [ "-DCMAKE_C_FLAGS=-I${src}/include_mod" ];
+
+  NIX_LDFLAGS = "-lpthread";
+
+  installPhase = ''
+    install -D -m 755 k2pdfopt $out/bin/k2pdfopt
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Optimizes PDF/DJVU files for mobile e-readers (e.g. the Kindle) and smartphones";
+    homepage = "http://www.willus.com/k2pdfopt";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ bosu danielfullmer ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/k2pdfopt/k2pdfopt-mupdf-1.16.1.patch b/nixpkgs/pkgs/applications/misc/k2pdfopt/k2pdfopt-mupdf-1.16.1.patch
new file mode 100644
index 000000000000..3a9eca30e751
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/k2pdfopt/k2pdfopt-mupdf-1.16.1.patch
@@ -0,0 +1,151 @@
+diff --git a/willuslib/wmupdf.c b/willuslib/wmupdf.c
+index 81627ef..f14a96c 100644
+--- a/willuslib/wmupdf.c
++++ b/willuslib/wmupdf.c
+@@ -189,8 +189,6 @@ int wmupdf_remake_pdf(char *infile,char *outfile,WPDFPAGEINFO *pageinfo,int use_
+     pdf_write_opts.do_compress=1;
+     pdf_write_opts.do_linear=0;
+     pdf_write_opts.do_garbage=1; /* 2 and 3 don't work for this. */
+-    pdf_write_opts.continue_on_error=0;
+-    pdf_write_opts.errors=NULL;
+     write_failed=0;
+     wpdfpageinfo_sort(pageinfo);
+     xref=NULL;
+@@ -1687,8 +1685,8 @@ WPDFOUTLINE *wpdfoutline_read_from_pdf_file(char *filename)
+         /* Sumatra version of MuPDF v1.4 -- use locally installed fonts */
+         pdf_install_load_system_font_funcs(ctx);
+         fz_try(ctx) { doc=fz_open_document(ctx,filename); }
+-        fz_catch(ctx) 
+-            { 
++        fz_catch(ctx)
++            {
+             fz_drop_context(ctx);
+             return(NULL);
+             }
+@@ -1890,5 +1888,5 @@ static pdf_obj *pdf_new_string_utf8(fz_context *ctx,char *string)
+     willus_mem_free((double **)&utfbuf,funcname);
+     return(pdfobj);
+     }
+-    
++
+ #endif /* HAVE_MUPDF_LIB */
+diff --git a/willuslib/wmupdfinfo.c b/willuslib/wmupdfinfo.c
+index 5c7f38c..9b9e6fd 100644
+--- a/willuslib/wmupdfinfo.c
++++ b/willuslib/wmupdfinfo.c
+@@ -237,23 +237,22 @@ static void showglobalinfo(fz_context *ctx, globals *glo,char *filename)
+         pdf_obj *robj;
+ 
+         robj=pdf_resolve_indirect(ctx,obj);
+-        n=pdf_sprint_obj(ctx,NULL,0,robj,1);
+-        buf=malloc(n+2);
++        buf=pdf_sprint_obj(ctx,NULL,0,&n,robj,1,0);
+         if (buf==NULL)
+             {
+             fz_write_printf(ctx,out,"Info object (%d %d R):\n",pdf_to_num(ctx,obj),pdf_to_gen(ctx,obj));
+-		    pdf_print_obj(ctx,out,robj,1);
++		    pdf_print_obj(ctx,out,robj,1,0);
+             }
+         else
+             {
+-            pdf_sprint_obj(ctx,buf,n+2,robj,1);
++            pdf_sprint_obj(ctx,buf,n+2,&n,robj,1,0);
+             display_pdf_field(ctx,out,buf,"Title","TITLE");
+             display_pdf_field(ctx,out,buf,"CreationDate","CREATED");
+             display_pdf_field(ctx,out,buf,"ModDate","LAST MODIFIED");
+             display_pdf_field(ctx,out,buf,"Producer","PDF PRODUCER");
+             display_pdf_field(ctx,out,buf,"Creator","CREATOR");
+             display_file_size(ctx,out,filename);
+-            free(buf);
++            fz_free(ctx,buf);
+             }
+ 	    }
+     if (glo->dims==1)
+@@ -275,7 +274,7 @@ static void showglobalinfo(fz_context *ctx, globals *glo,char *filename)
+ 	if (obj)
+         {
+ 		fz_write_printf(ctx,out, "\nEncryption object (%d %d R):\n", pdf_to_num(ctx,obj), pdf_to_gen(ctx,obj));
+-		pdf_print_obj(ctx,out, pdf_resolve_indirect(ctx,obj), 1);
++		pdf_print_obj(ctx,out, pdf_resolve_indirect(ctx,obj), 1, 0);
+         }
+     }
+ 
+@@ -396,7 +395,7 @@ gatherdimensions(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_
+ 	if (j < glo->dims)
+ 		return;
+ 
+-	glo->dim = fz_resize_array(ctx, glo->dim, glo->dims+1, sizeof(struct info));
++	glo->dim = fz_realloc_array(ctx, glo->dim, glo->dims+1, struct info);
+ 	glo->dims++;
+ 
+ 	glo->dim[glo->dims - 1].page = page;
+@@ -441,7 +440,7 @@ gatherfonts(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_obj *
+ 		if (k < glo->fonts)
+ 			continue;
+ 
+-		glo->font = fz_resize_array(ctx, glo->font, glo->fonts+1, sizeof(struct info));
++		glo->font = fz_realloc_array(ctx, glo->font, glo->fonts+1, struct info);
+ 		glo->fonts++;
+ 
+ 		glo->font[glo->fonts - 1].page = page;
+@@ -510,7 +509,7 @@ gatherimages(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_obj
+ 		if (k < glo->images)
+ 			continue;
+ 
+-		glo->image = fz_resize_array(ctx, glo->image, glo->images+1, sizeof(struct info));
++		glo->image = fz_realloc_array(ctx, glo->image, glo->images+1, struct info);
+ 		glo->images++;
+ 
+ 		glo->image[glo->images - 1].page = page;
+@@ -568,7 +567,7 @@ gatherforms(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_obj *
+ 		if (k < glo->forms)
+ 			continue;
+ 
+-		glo->form = fz_resize_array(ctx, glo->form, glo->forms+1, sizeof(struct info));
++		glo->form = fz_realloc_array(ctx, glo->form, glo->forms+1, struct info);
+ 		glo->forms++;
+ 
+ 		glo->form[glo->forms - 1].page = page;
+@@ -613,7 +612,7 @@ gatherpsobjs(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_obj
+ 		if (k < glo->psobjs)
+ 			continue;
+ 
+-		glo->psobj = fz_resize_array(ctx, glo->psobj, glo->psobjs+1, sizeof(struct info));
++		glo->psobj = fz_realloc_array(ctx, glo->psobj, glo->psobjs+1, struct info);
+ 		glo->psobjs++;
+ 
+ 		glo->psobj[glo->psobjs - 1].page = page;
+@@ -656,7 +655,7 @@ gathershadings(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_ob
+ 		if (k < glo->shadings)
+ 			continue;
+ 
+-		glo->shading = fz_resize_array(ctx, glo->shading, glo->shadings+1, sizeof(struct info));
++		glo->shading = fz_realloc_array(ctx, glo->shading, glo->shadings+1, struct info);
+ 		glo->shadings++;
+ 
+ 		glo->shading[glo->shadings - 1].page = page;
+@@ -724,7 +723,7 @@ gatherpatterns(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_ob
+ 		if (k < glo->patterns)
+ 			continue;
+ 
+-		glo->pattern = fz_resize_array(ctx, glo->pattern, glo->patterns+1, sizeof(struct info));
++		glo->pattern = fz_realloc_array(ctx, glo->pattern, glo->patterns+1, struct info);
+ 		glo->patterns++;
+ 
+ 		glo->pattern[glo->patterns - 1].page = page;
+@@ -1216,7 +1215,7 @@ void wmupdfinfo_get(char *filename,int *pagelist,char **buf)
+     if (fout==NULL)
+         return;
+     */
+-    
++
+     ctx = fz_new_context(NULL, NULL, FZ_STORE_UNLIMITED);
+     if (!ctx)
+         {
+@@ -1307,5 +1306,5 @@ static void date_convert(char *dst,char *src)
+     else if (src[i]!='\0')
+         sprintf(&dst[strlen(dst)]," %s",&src[i]);
+     }
+-    
++
+ #endif /* HAVE_MUPDF_LIB */
diff --git a/nixpkgs/pkgs/applications/misc/k2pdfopt/k2pdfopt.patch b/nixpkgs/pkgs/applications/misc/k2pdfopt/k2pdfopt.patch
new file mode 100644
index 000000000000..cf7e4896b803
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/k2pdfopt/k2pdfopt.patch
@@ -0,0 +1,99 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 4a2378b..502c477 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -52,6 +52,7 @@ endif(JPEG_FOUND)
+ include(FindJasper)
+ if(JASPER_FOUND)
+   set(HAVE_JASPER_LIB 1)
++  set(K2PDFOPT_LIB ${K2PDFOPT_LIB} ${JASPER_LIBRARY})
+ endif(JASPER_FOUND)
+ 
+ # paths from willuslib/wgs.c
+@@ -66,8 +67,12 @@ else()
+   message(STATUS "Could NOT find ghostscript executable")
+ endif(GHOSTSCRIPT_EXECUTABLE)
+ 
+-# willus.h
+-# HAVE_GSL_LIB
++pkg_check_modules(GSL gsl)
++if(GSL_FOUND)
++  set(HAVE_GSL_LIB 1)
++  include_directories(SYSTEM ${GSL_INCLUDEDIR})
++  set(K2PDFOPT_LIB ${K2PDFOPT_LIB} ${GSL_LDFLAGS})
++endif(GSL_FOUND)
+ 
+ 
+ # libfreetype6 (>= 2.3.9), libjbig2dec0, libjpeg8 (>= 8c), libx11-6, libxext6, zlib1g (>= 1:1.2.0)
+@@ -80,7 +85,7 @@ if(MUPDF_FOUND)
+   include_directories(SYSTEM ${MUPDF_INCLUDEDIR})
+   message(STATUS "mupdf libraries: ${MUPDF_LDFLAGS}")
+   set(K2PDFOPT_LIB ${K2PDFOPT_LIB} ${MUPDF_LDFLAGS} 
+-    -lmupdf-js-none -lopenjpeg -ljbig2dec -ljpeg -lfreetype
++ 
+   )
+ endif(MUPDF_FOUND)
+ 
+@@ -91,9 +96,25 @@ if(DJVU_FOUND)
+   set(K2PDFOPT_LIB ${K2PDFOPT_LIB} ${DJVU_LDFLAGS})
+ endif(DJVU_FOUND)
+ 
+-# HAVE_GOCR_LIB
+-# HAVE_LEPTONICA_LIB
+-# HAVE_TESSERACT_LIB
++find_library(GOCR_LIB NAMES Pgm2asc)
++if(GOCR_LIB)
++  set(HAVE_GOCR_LIB 1)
++  set(K2PDFOPT_LIB ${K2PDFOPT_LIB} ${GOCR_LIB})
++endif(GOCR_LIB)
++
++pkg_check_modules(LEPTONICA lept)
++if(LEPTONICA_FOUND)
++  set(HAVE_LEPTONICA_LIB 1)
++  include_directories(SYSTEM ${LEPTONICA_INCLUDEDIR})
++  set(K2PDFOPT_LIB ${K2PDFOPT_LIB} ${LEPTONICA_LDFLAGS})
++endif(LEPTONICA_FOUND)
++
++pkg_check_modules(TESSERACT tesseract)
++if(TESSERACT_FOUND)
++  set(HAVE_TESSERACT_LIB 1)
++  include_directories(SYSTEM ${TESSERACT_INCLUDEDIR})
++  set(K2PDFOPT_LIB ${K2PDFOPT_LIB} ${TESSERACT_LDFLAGS})
++endif(TESSERACT_FOUND)
+ 
+ # ---- Describe project
+ 
+diff --git a/willuslib/CMakeLists.txt b/willuslib/CMakeLists.txt
+index 463bbc9..8043db5 100644
+--- a/willuslib/CMakeLists.txt
++++ b/willuslib/CMakeLists.txt
+@@ -6,7 +6,7 @@ include_directories(..)
+ set(WILLUSLIB_SRC
+     ansi.c array.c bmp.c bmpdjvu.c bmpmupdf.c dtcompress.c filelist.c
+     fontdata.c fontrender.c gslpolyfit.c linux.c math.c mem.c ocr.c
+-    ocrjocr.c ocrtess.c pdfwrite.c point2d.c render.c strbuf.c string.c
++    ocrgocr.c ocrtess.c pdfwrite.c point2d.c render.c strbuf.c string.c
+     token.c wfile.c wgs.c wgui.c willusversion.c win.c winbmp.c
+     wincomdlg.c winmbox.c winshell.c wmupdf.c wmupdfinfo.c wpdf.c wsys.c
+     wzfile.c wleptonica.c
+diff --git a/willuslib/ocrgocr.c b/willuslib/ocrgocr.c
+index 6027e9a..fbe10f0 100644
+--- a/willuslib/ocrgocr.c
++++ b/willuslib/ocrgocr.c
+@@ -29,6 +29,8 @@
+ #ifdef HAVE_GOCR_LIB
+ #include <gocr.h>
+ 
++job_t *OCR_JOB;
++
+ /*
+ ** bmp8 must be grayscale
+ ** (x1,y1) and (x2,y2) from top left of bitmap
+@@ -63,6 +65,7 @@ void gocr_single_word_from_bmp8(char *text,int maxlen,WILLUSBITMAP *bmp8,
+     h=y2-y1+1;
+     dh=h+bw*2;
+     job=&_job;
++    OCR_JOB=job;
+     job_init(job);
+     job_init_image(job);
+     // willus_mem_alloc_warn((void **)&job->src.p.p,w*h,funcname,10);
diff --git a/nixpkgs/pkgs/applications/misc/k2pdfopt/leptonica.patch b/nixpkgs/pkgs/applications/misc/k2pdfopt/leptonica.patch
new file mode 100644
index 000000000000..dfab99fd0130
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/k2pdfopt/leptonica.patch
@@ -0,0 +1,254 @@
+From 8c11a20925686855023df90ed477957c7d7fe91e Mon Sep 17 00:00:00 2001
+From: Daniel Fullmer <danielrf12@gmail.com>
+Date: Fri, 13 Sep 2019 15:54:21 -0400
+Subject: [PATCH] Willus mod for k2pdfopt
+
+---
+ src/allheaders.h |   4 ++
+ src/dewarp2.c    | 106 ++++++++++++++++++++++++++++++++++++++++++-----
+ src/leptwin.c    |   6 ++-
+ 3 files changed, 104 insertions(+), 12 deletions(-)
+
+diff --git a/src/allheaders.h b/src/allheaders.h
+index e68eff1..b3cc729 100644
+--- a/src/allheaders.h
++++ b/src/allheaders.h
+@@ -669,6 +669,10 @@ LEPT_DLL extern L_DEWARPA * dewarpaReadMem ( const l_uint8 *data, size_t size );
+ LEPT_DLL extern l_ok dewarpaWrite ( const char *filename, L_DEWARPA *dewa );
+ LEPT_DLL extern l_ok dewarpaWriteStream ( FILE *fp, L_DEWARPA *dewa );
+ LEPT_DLL extern l_ok dewarpaWriteMem ( l_uint8 **pdata, size_t *psize, L_DEWARPA *dewa );
++/* WILLUS MOD */
++    LEPT_DLL extern l_int32 dewarpBuildPageModel_ex ( L_DEWARP *dew, const char *debugfile,l_int32 fit_order );
++    LEPT_DLL extern l_int32 dewarpFindVertDisparity_ex ( L_DEWARP *dew, PTAA *ptaa, l_int32 rotflag,l_int32 fit_order );
++    LEPT_DLL extern l_int32 dewarpBuildLineModel_ex ( L_DEWARP *dew, l_int32 opensize, const char *debugfile,l_int32 fit_order );
+ LEPT_DLL extern l_ok dewarpBuildPageModel ( L_DEWARP *dew, const char *debugfile );
+ LEPT_DLL extern l_ok dewarpFindVertDisparity ( L_DEWARP *dew, PTAA *ptaa, l_int32 rotflag );
+ LEPT_DLL extern l_ok dewarpFindHorizDisparity ( L_DEWARP *dew, PTAA *ptaa );
+diff --git a/src/dewarp2.c b/src/dewarp2.c
+index 220eec1..2e29500 100644
+--- a/src/dewarp2.c
++++ b/src/dewarp2.c
+@@ -144,9 +144,17 @@ static const l_float32   L_ALLOWED_W_FRACT = 0.05;  /* no bigger */
+  *          longest textlines.
+  * </pre>
+  */
++/* WILLUS MOD */
+ l_ok
+-dewarpBuildPageModel(L_DEWARP    *dew,
+-                     const char  *debugfile)
++dewarpBuildPageModel(L_DEWARP *dew,const char *debugfile)
++{
++return(dewarpBuildPageModel_ex(dew,debugfile,2));
++}
++
++l_ok
++dewarpBuildPageModel_ex(L_DEWARP    *dew,
++                     const char  *debugfile,
++                     l_int32 fit_order)
+ {
+ l_int32  linecount, topline, botline, ret;
+ PIX     *pixs, *pix1, *pix2, *pix3;
+@@ -225,7 +233,7 @@ PTAA    *ptaa1, *ptaa2;
+         /* Get the sampled vertical disparity from the textline centers.
+          * The disparity array will push pixels vertically so that each
+          * textline is flat and centered at the y-position of the mid-point. */
+-    if (dewarpFindVertDisparity(dew, ptaa2, 0) != 0) {
++    if (dewarpFindVertDisparity_ex(dew, ptaa2, 0, fit_order) != 0) {
+         L_WARNING("vertical disparity not built\n", procName);
+         ptaaDestroy(&ptaa2);
+         return 1;
+@@ -290,13 +298,24 @@ PTAA    *ptaa1, *ptaa2;
+  *          a pdf.  Non-pix debug output goes to /tmp.
+  * </pre>
+  */
++/* WILLUS MOD */
+ l_ok
+ dewarpFindVertDisparity(L_DEWARP  *dew,
+                         PTAA      *ptaa,
+                         l_int32    rotflag)
+ {
++return(dewarpFindVertDisparity_ex(dew,ptaa,rotflag,2));
++}
++/* WILLUS MOD -- add cubic and quartic fits and ..._ex functions */
++l_int32
++dewarpFindVertDisparity_ex(L_DEWARP  *dew,
++                        PTAA      *ptaa,
++                        l_int32    rotflag,
++                        l_int32    fit_order)
++{
+ l_int32     i, j, nlines, npts, nx, ny, sampling;
+-l_float32   c0, c1, c2, x, y, midy, val, medval, meddev, minval, maxval;
++/* WILLUS MOD */
++l_float32   c0, c1, c2, c3, c4, x, y, midy, val, medval, meddev, minval, maxval;
+ l_float32  *famidys;
+ NUMA       *nax, *nafit, *nacurve0, *nacurve1, *nacurves;
+ NUMA       *namidy, *namidys, *namidysi;
+@@ -304,11 +323,22 @@ PIX        *pix1, *pix2, *pixcirc, *pixdb;
+ PTA        *pta, *ptad, *ptacirc;
+ PTAA       *ptaa0, *ptaa1, *ptaa2, *ptaa3, *ptaa4, *ptaa5, *ptaat;
+ FPIX       *fpix;
++/* WILLUS MOD */
++l_int32 fit_order1,fit_order2;
+ 
+     PROCNAME("dewarpFindVertDisparity");
+ 
+     if (!dew)
+         return ERROR_INT("dew not defined", procName, 1);
++/* WILLUS MOD */
++    if (fit_order < 10)
++        fit_order1 = fit_order2 = fit_order;
++    else
++        {
++        fit_order1=fit_order % 10;
++        fit_order2=fit_order / 10;
++        fit_order2=fit_order2 % 10;
++        }
+     dew->vsuccess = 0;
+     if (!ptaa)
+         return ERROR_INT("ptaa not defined", procName, 1);
+@@ -331,12 +361,32 @@ FPIX       *fpix;
+     pixdb = (rotflag) ? pixRotateOrth(dew->pixs, 1) : pixClone(dew->pixs);
+     for (i = 0; i < nlines; i++) {  /* for each line */
+         pta = ptaaGetPta(ptaa, i, L_CLONE);
+-        ptaGetQuadraticLSF(pta, &c2, &c1, &c0, NULL);
+-        numaAddNumber(nacurve0, c2);
++/* WILLUS MOD */
++if (fit_order1>3)
++    {
++    ptaGetQuarticLSF(pta, &c4, &c3, &c2, &c1, &c0, NULL);
++    numaAddNumber(nacurve0, c4);
++    }
++else if (fit_order1==3)
++    {
++    ptaGetCubicLSF(pta, &c3, &c2, &c1, &c0, NULL);
++    numaAddNumber(nacurve0, c3);
++    }
++else
++    {
++    ptaGetQuadraticLSF(pta, &c2, &c1, &c0, NULL);
++    numaAddNumber(nacurve0, c2);
++    }
+         ptad = ptaCreate(nx);
+         for (j = 0; j < nx; j++) {  /* uniformly sampled in x */
+              x = j * sampling;
+-             applyQuadraticFit(c2, c1, c0, x, &y);
++/* WILLUS MOD */
++if (fit_order1>3)
++    applyQuarticFit(c4, c3, c2, c1, c0, x, &y);
++else if (fit_order1==3)
++    applyCubicFit(c3, c2, c1, c0, x, &y);
++else
++    applyQuadraticFit(c2, c1, c0, x, &y);
+              ptaAddPt(ptad, x, y);
+         }
+         ptaaAddPta(ptaa0, ptad, L_INSERT);
+@@ -350,7 +400,13 @@ FPIX       *fpix;
+         for (i = 0; i < nlines; i++) {
+             pta = ptaaGetPta(ptaa, i, L_CLONE);
+             ptaGetArrays(pta, &nax, NULL);
+-            ptaGetQuadraticLSF(pta, NULL, NULL, NULL, &nafit);
++/* WILLUS MOD */
++if (fit_order1>3)
++ptaGetQuarticLSF(pta, NULL, NULL, NULL, NULL, NULL, &nafit);
++else if (fit_order1==3)
++ptaGetCubicLSF(pta, NULL, NULL, NULL, NULL, &nafit);
++else
++ptaGetQuadraticLSF(pta, NULL, NULL, NULL, &nafit);
+             ptad = ptaCreateFromNuma(nax, nafit);
+             ptaaAddPta(ptaat, ptad, L_INSERT);
+             ptaDestroy(&pta);
+@@ -494,11 +550,24 @@ FPIX       *fpix;
+     ptaa5 = ptaaCreate(nx);  /* uniformly sampled across full height of image */
+     for (j = 0; j < nx; j++) {  /* for each column */
+         pta = ptaaGetPta(ptaa4, j, L_CLONE);
+-        ptaGetQuadraticLSF(pta, &c2, &c1, &c0, NULL);
++/* WILLUS MOD */
++/* Order higher than 2 can cause a little craziness here. */
++if (fit_order2>3)
++    ptaGetQuarticLSF(pta, &c4, &c3, &c2, &c1, &c0, NULL);
++else if (fit_order2==3)
++    ptaGetCubicLSF(pta, &c3, &c2, &c1, &c0, NULL);
++else
++    ptaGetQuadraticLSF(pta, &c2, &c1, &c0, NULL);
+         ptad = ptaCreate(ny);
+         for (i = 0; i < ny; i++) {  /* uniformly sampled in y */
+              y = i * sampling;
+-             applyQuadraticFit(c2, c1, c0, y, &val);
++/* WILLUS MOD */
++if (fit_order2>3)
++    applyQuarticFit(c4, c3, c2, c1, c0, y, &val);
++else if (fit_order2==3)
++    applyCubicFit(c3, c2, c1, c0, y, &val);
++else
++    applyQuadraticFit(c2, c1, c0, y, &val);
+              ptaAddPt(ptad, y, val);
+         }
+         ptaaAddPta(ptaa5, ptad, L_INSERT);
+@@ -1602,11 +1671,21 @@ FPIX      *fpix;
+  *          See notes there.
+  * </pre>
+  */
++/* WILLUS MOD */
+ l_ok
+ dewarpBuildLineModel(L_DEWARP    *dew,
+                      l_int32      opensize,
+                      const char  *debugfile)
+ {
++return(dewarpBuildLineModel_ex(dew,opensize,debugfile,2));
++}
++
++l_int32
++dewarpBuildLineModel_ex(L_DEWARP    *dew,
++                     l_int32      opensize,
++                     const char  *debugfile,
++                     l_int32 fit_order)
++{
+ char     buf[64];
+ l_int32  i, j, bx, by, ret, nlines;
+ BOXA    *boxa;
+@@ -1695,6 +1774,8 @@ PTAA    *ptaa1, *ptaa2;
+ 
+             /* Remove all lines that are not at least 0.75 times the length
+              * of the longest line. */
++/* WILLUS MOD */
++/*
+         ptaa2 = dewarpRemoveShortLines(pix, ptaa1, 0.75, DEBUG_SHORT_LINES);
+         if (debugfile) {
+             pix1 = pixConvertTo32(pix);
+@@ -1704,6 +1785,8 @@ PTAA    *ptaa1, *ptaa2;
+             pixDestroy(&pix1);
+             pixDestroy(&pix2);
+         }
++*/
++ptaa2=ptaa1;
+         ptaaDestroy(&ptaa1);
+         nlines = ptaaGetCount(ptaa2);
+         if (nlines < dew->minlines) {
+@@ -1717,7 +1800,8 @@ PTAA    *ptaa1, *ptaa2;
+              * centers.  The disparity array will push pixels vertically
+              * so that each line is flat and centered at the y-position
+              * of the mid-point. */
+-        ret = dewarpFindVertDisparity(dew, ptaa2, 1 - i);
++/* WILLUS MOD */
++        ret = dewarpFindVertDisparity_ex(dew, ptaa2, 1 - i, fit_order);
+ 
+             /* If i == 0, move the result to the horizontal disparity,
+              * rotating it back by -90 degrees. */
+diff --git a/src/leptwin.c b/src/leptwin.c
+index 72643a0..573d33e 100644
+--- a/src/leptwin.c
++++ b/src/leptwin.c
+@@ -364,5 +364,9 @@ PIXCMAP   *cmap;
+ 
+     return hBitmap;
+ }
+-
++#else
++/* willus mod: Avoid weird issue with OS/X library archiver when there are no symbols */
++int leptwin_my_empty_func(void);
++int leptwin_my_empty_func(void)
++{return(0);}
+ #endif   /* _WIN32 */
+-- 
+2.22.0
+
diff --git a/nixpkgs/pkgs/applications/misc/k2pdfopt/mupdf.patch b/nixpkgs/pkgs/applications/misc/k2pdfopt/mupdf.patch
new file mode 100644
index 000000000000..0c59a1d20163
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/k2pdfopt/mupdf.patch
@@ -0,0 +1,1060 @@
+From d8927c969e3387ca2669a616c0ba53bce918a031 Mon Sep 17 00:00:00 2001
+From: Daniel Fullmer <danielrf12@gmail.com>
+Date: Fri, 13 Sep 2019 15:11:45 -0400
+Subject: [PATCH] Willus mod for k2pdfopt
+
+---
+ source/fitz/filter-basic.c |   3 +
+ source/fitz/font-win32.c   | 866 +++++++++++++++++++++++++++++++++++++
+ source/fitz/font.c         |   3 +
+ source/fitz/stext-device.c |   5 +
+ source/fitz/string.c       |   5 +
+ source/pdf/pdf-annot.c     |  14 +-
+ source/pdf/pdf-link.c      |   3 +
+ source/pdf/pdf-parse.c     |   5 +
+ source/pdf/pdf-xref.c      |   9 +
+ 9 files changed, 912 insertions(+), 1 deletion(-)
+ create mode 100644 source/fitz/font-win32.c
+
+diff --git a/source/fitz/filter-basic.c b/source/fitz/filter-basic.c
+index 0713a62e7..b8ef4d292 100644
+--- a/source/fitz/filter-basic.c
++++ b/source/fitz/filter-basic.c
+@@ -259,7 +259,10 @@ look_for_endstream:
+ 	if (!state->warned)
+ 	{
+ 		state->warned = 1;
++/* willus mod -- no warning */
++/*
+ 		fz_warn(ctx, "PDF stream Length incorrect");
++*/
+ 	}
+ 	return *stm->rp++;
+ }
+diff --git a/source/fitz/font-win32.c b/source/fitz/font-win32.c
+new file mode 100644
+index 000000000..45de8cfd3
+--- /dev/null
++++ b/source/fitz/font-win32.c
+@@ -0,0 +1,866 @@
++/*
++** Routines to access MS Windows system fonts.
++** From sumatra PDF distro.
++** Modified for MuPDF v1.9a by willus.com
++*/
++#include "mupdf/pdf.h"
++
++/*
++	Which fonts are embedded is based on a few preprocessor definitions.
++
++	The base 14 fonts are always embedded.
++	For CJK font substitution we embed DroidSansFallback.
++
++	Set NOCJK to skip all CJK support (this also omits embedding the CJK CMaps)
++	Set NOCJKFONT to skip the embedded CJK font.
++	Set NOCJKFULL to embed a smaller CJK font without CJK Extension A support.
++*/
++
++#ifdef NOCJK
++#define NOCJKFONT
++#endif
++
++/* SumatraPDF: also load fonts included with Windows */
++#ifdef _WIN32
++
++#ifndef UNICODE
++#define UNICODE
++#endif
++#ifndef _UNICODE
++#define _UNICODE
++#endif
++
++#include <windows.h>
++
++// TODO: Use more of FreeType for TTF parsing (for performance reasons,
++//       the fonts can't be parsed completely, though)
++#include <ft2build.h>
++#include FT_TRUETYPE_IDS_H
++#include FT_TRUETYPE_TAGS_H
++
++#define TTC_VERSION1	0x00010000
++#define TTC_VERSION2	0x00020000
++
++#define MAX_FACENAME	128
++
++// Note: the font face must be the first field so that the structure
++//       can be treated like a simple string for searching
++typedef struct pdf_fontmapMS_s
++{
++	char fontface[MAX_FACENAME];
++	char fontpath[MAX_PATH];
++	int index;
++} pdf_fontmapMS;
++
++typedef struct pdf_fontlistMS_s
++{
++	pdf_fontmapMS *fontmap;
++	int len;
++	int cap;
++} pdf_fontlistMS;
++
++typedef struct _tagTT_OFFSET_TABLE
++{
++	ULONG	uVersion;
++	USHORT	uNumOfTables;
++	USHORT	uSearchRange;
++	USHORT	uEntrySelector;
++	USHORT	uRangeShift;
++} TT_OFFSET_TABLE;
++
++typedef struct _tagTT_TABLE_DIRECTORY
++{
++	ULONG	uTag;				//table name
++	ULONG	uCheckSum;			//Check sum
++	ULONG	uOffset;			//Offset from beginning of file
++	ULONG	uLength;			//length of the table in bytes
++} TT_TABLE_DIRECTORY;
++
++typedef struct _tagTT_NAME_TABLE_HEADER
++{
++	USHORT	uFSelector;			//format selector. Always 0
++	USHORT	uNRCount;			//Name Records count
++	USHORT	uStorageOffset;		//Offset for strings storage, from start of the table
++} TT_NAME_TABLE_HEADER;
++
++typedef struct _tagTT_NAME_RECORD
++{
++	USHORT	uPlatformID;
++	USHORT	uEncodingID;
++	USHORT	uLanguageID;
++	USHORT	uNameID;
++	USHORT	uStringLength;
++	USHORT	uStringOffset;	//from start of storage area
++} TT_NAME_RECORD;
++
++typedef struct _tagFONT_COLLECTION
++{
++	ULONG	Tag;
++	ULONG	Version;
++	ULONG	NumFonts;
++} FONT_COLLECTION;
++
++static struct {
++	char *name;
++	char *pattern;
++} baseSubstitutes[] = {
++	{ "Courier", "CourierNewPSMT" },
++	{ "Courier-Bold", "CourierNewPS-BoldMT" },
++	{ "Courier-Oblique", "CourierNewPS-ItalicMT" },
++	{ "Courier-BoldOblique", "CourierNewPS-BoldItalicMT" },
++	{ "Helvetica", "ArialMT" },
++	{ "Helvetica-Bold", "Arial-BoldMT" },
++	{ "Helvetica-Oblique", "Arial-ItalicMT" },
++	{ "Helvetica-BoldOblique", "Arial-BoldItalicMT" },
++	{ "Times-Roman", "TimesNewRomanPSMT" },
++	{ "Times-Bold", "TimesNewRomanPS-BoldMT" },
++	{ "Times-Italic", "TimesNewRomanPS-ItalicMT" },
++	{ "Times-BoldItalic", "TimesNewRomanPS-BoldItalicMT" },
++	{ "Symbol", "SymbolMT" },
++};
++static const char *base_font_names[][10] =
++{
++	{ "Courier", "CourierNew", "CourierNewPSMT", NULL },
++	{ "Courier-Bold", "CourierNew,Bold", "Courier,Bold",
++		"CourierNewPS-BoldMT", "CourierNew-Bold", NULL },
++	{ "Courier-Oblique", "CourierNew,Italic", "Courier,Italic",
++		"CourierNewPS-ItalicMT", "CourierNew-Italic", NULL },
++	{ "Courier-BoldOblique", "CourierNew,BoldItalic", "Courier,BoldItalic",
++		"CourierNewPS-BoldItalicMT", "CourierNew-BoldItalic", NULL },
++	{ "Helvetica", "ArialMT", "Arial", NULL },
++	{ "Helvetica-Bold", "Arial-BoldMT", "Arial,Bold", "Arial-Bold",
++		"Helvetica,Bold", NULL },
++	{ "Helvetica-Oblique", "Arial-ItalicMT", "Arial,Italic", "Arial-Italic",
++		"Helvetica,Italic", "Helvetica-Italic", NULL },
++	{ "Helvetica-BoldOblique", "Arial-BoldItalicMT",
++		"Arial,BoldItalic", "Arial-BoldItalic",
++		"Helvetica,BoldItalic", "Helvetica-BoldItalic", NULL },
++	{ "Times-Roman", "TimesNewRomanPSMT", "TimesNewRoman",
++		"TimesNewRomanPS", NULL },
++	{ "Times-Bold", "TimesNewRomanPS-BoldMT", "TimesNewRoman,Bold",
++		"TimesNewRomanPS-Bold", "TimesNewRoman-Bold", NULL },
++	{ "Times-Italic", "TimesNewRomanPS-ItalicMT", "TimesNewRoman,Italic",
++		"TimesNewRomanPS-Italic", "TimesNewRoman-Italic", NULL },
++	{ "Times-BoldItalic", "TimesNewRomanPS-BoldItalicMT",
++		"TimesNewRoman,BoldItalic", "TimesNewRomanPS-BoldItalic",
++		"TimesNewRoman-BoldItalic", NULL },
++	{ "Symbol", "Symbol,Italic", "Symbol,Bold", "Symbol,BoldItalic",
++		"SymbolMT", "SymbolMT,Italic", "SymbolMT,Bold", "SymbolMT,BoldItalic", NULL },
++	{ "ZapfDingbats", NULL }
++};
++
++static pdf_fontlistMS fontlistMS =
++{
++	NULL,
++	0,
++	0,
++};
++static int strcmp_ignore_space(const char *a, const char *b);
++static const char *clean_font_name(const char *fontname);
++static const char *pdf_clean_base14_name(const char *fontname);
++
++static inline USHORT BEtoHs(USHORT x)
++{
++	BYTE *data = (BYTE *)&x;
++	return (data[0] << 8) | data[1];
++}
++
++static inline ULONG BEtoHl(ULONG x)
++{
++	BYTE *data = (BYTE *)&x;
++	return (data[0] << 24) | (data[1] << 16) | (data[2] << 8) | data[3];
++}
++
++static int strcmp_ignore_space(const char *a, const char *b)
++{
++	while (1)
++	{
++		while (*a == ' ')
++			a++;
++		while (*b == ' ')
++			b++;
++		if (*a != *b)
++			return 1;
++		if (*a == 0)
++			return *a != *b;
++		if (*b == 0)
++			return *a != *b;
++		a++;
++		b++;
++	}
++}
++
++/* A little bit more sophisticated name matching so that e.g. "EurostileExtended"
++   matches "EurostileExtended-Roman" or "Tahoma-Bold,Bold" matches "Tahoma-Bold" */
++static int
++lookup_compare(const void *elem1, const void *elem2)
++{
++	const char *val1 = elem1;
++	const char *val2 = elem2;
++	int len1 = strlen(val1);
++	int len2 = strlen(val2);
++
++	if (len1 != len2)
++	{
++		const char *rest = len1 > len2 ? val1 + len2 : val2 + len1;
++		if (',' == *rest || !_stricmp(rest, "-roman"))
++			return _strnicmp(val1, val2, fz_mini(len1, len2));
++	}
++
++	return _stricmp(val1, val2);
++}
++
++static void
++remove_spaces(char *srcDest)
++{
++	char *dest;
++
++	for (dest = srcDest; *srcDest; srcDest++)
++		if (*srcDest != ' ')
++			*dest++ = *srcDest;
++	*dest = '\0';
++}
++
++static int
++str_ends_with(const char *str, const char *end)
++{
++	size_t len1 = strlen(str);
++	size_t len2 = strlen(end);
++
++	return len1 >= len2 && !strcmp(str + len1 - len2, end);
++}
++
++static pdf_fontmapMS *
++pdf_find_windows_font_path(const char *fontname)
++{
++	return bsearch(fontname, fontlistMS.fontmap, fontlistMS.len, sizeof(pdf_fontmapMS), lookup_compare);
++}
++
++/* source and dest can be same */
++static void
++decode_unicode_BE(fz_context *ctx, char *source, int sourcelen, char *dest, int destlen)
++{
++	WCHAR *tmp;
++	int converted, i;
++
++	if (sourcelen % 2 != 0)
++		fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : invalid unicode string");
++
++	tmp = fz_malloc_array(ctx, sourcelen / 2 + 1, sizeof(WCHAR));
++	for (i = 0; i < sourcelen / 2; i++)
++		tmp[i] = BEtoHs(((WCHAR *)source)[i]);
++	tmp[sourcelen / 2] = '\0';
++
++	converted = WideCharToMultiByte(CP_UTF8, 0, tmp, -1, dest, destlen, NULL, NULL);
++	fz_free(ctx, tmp);
++	if (!converted)
++		fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : invalid unicode string");
++}
++
++static void
++decode_platform_string(fz_context *ctx, int platform, int enctype, char *source, int sourcelen, char *dest, int destlen)
++{
++	switch (platform)
++	{
++	case TT_PLATFORM_APPLE_UNICODE:
++		switch (enctype)
++		{
++		case TT_APPLE_ID_DEFAULT:
++		case TT_APPLE_ID_UNICODE_2_0:
++			decode_unicode_BE(ctx, source, sourcelen, dest, destlen);
++			return;
++		}
++		fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : unsupported encoding (%d/%d)", platform, enctype);
++	case TT_PLATFORM_MACINTOSH:
++		switch (enctype)
++		{
++		case TT_MAC_ID_ROMAN:
++			if (sourcelen + 1 > destlen)
++				fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : overlong fontname: %s", source);
++			// TODO: Convert to UTF-8 from what encoding?
++			memcpy(dest, source, sourcelen);
++			dest[sourcelen] = 0;
++			return;
++		}
++		fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : unsupported encoding (%d/%d)", platform, enctype);
++	case TT_PLATFORM_MICROSOFT:
++		switch (enctype)
++		{
++		case TT_MS_ID_SYMBOL_CS:
++		case TT_MS_ID_UNICODE_CS:
++		case TT_MS_ID_UCS_4:
++			decode_unicode_BE(ctx, source, sourcelen, dest, destlen);
++			return;
++		}
++		fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : unsupported encoding (%d/%d)", platform, enctype);
++	default:
++		fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : unsupported encoding (%d/%d)", platform, enctype);
++	}
++}
++
++static void
++grow_system_font_list(fz_context *ctx, pdf_fontlistMS *fl)
++{
++	int newcap;
++	pdf_fontmapMS *newitems;
++
++	if (fl->cap == 0)
++		newcap = 1024;
++	else
++		newcap = fl->cap * 2;
++
++	// use realloc/free for the fontmap, since the list can
++	// remain in memory even with all fz_contexts destroyed
++	newitems = realloc(fl->fontmap, newcap * sizeof(pdf_fontmapMS));
++	if (!newitems)
++		fz_throw(ctx, FZ_ERROR_GENERIC, "OOM in grow_system_font_list");
++	memset(newitems + fl->cap, 0, sizeof(pdf_fontmapMS) * (newcap - fl->cap));
++
++	fl->fontmap = newitems;
++	fl->cap = newcap;
++}
++
++static void
++append_mapping(fz_context *ctx, pdf_fontlistMS *fl, const char *facename, const char *path, int index)
++{
++	if (fl->len == fl->cap)
++		grow_system_font_list(ctx, fl);
++
++	if (fl->len >= fl->cap)
++		fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : fontlist overflow");
++
++	fz_strlcpy(fl->fontmap[fl->len].fontface, facename, sizeof(fl->fontmap[0].fontface));
++	fz_strlcpy(fl->fontmap[fl->len].fontpath, path, sizeof(fl->fontmap[0].fontpath));
++	fl->fontmap[fl->len].index = index;
++
++	++fl->len;
++}
++
++static void
++safe_read(fz_context *ctx, fz_stream *file, int offset, char *buf, int size)
++{
++	int n;
++	fz_seek(ctx, file, offset, 0);
++	n = fz_read(ctx, file, (unsigned char *)buf, size);
++	if (n != size)
++		fz_throw(ctx, FZ_ERROR_GENERIC, "safe_read: read %d, expected %d", n, size);
++}
++
++static void
++read_ttf_string(fz_context *ctx, fz_stream *file, int offset, TT_NAME_RECORD *ttRecordBE, char *buf, int size)
++{
++	char szTemp[MAX_FACENAME * 2];
++	// ignore empty and overlong strings
++	int stringLength = BEtoHs(ttRecordBE->uStringLength);
++	if (stringLength == 0 || stringLength >= sizeof(szTemp))
++		return;
++
++	safe_read(ctx, file, offset + BEtoHs(ttRecordBE->uStringOffset), szTemp, stringLength);
++	decode_platform_string(ctx, BEtoHs(ttRecordBE->uPlatformID),
++		BEtoHs(ttRecordBE->uEncodingID), szTemp, stringLength, buf, size);
++}
++
++static void
++makeFakePSName(char szName[MAX_FACENAME], const char *szStyle)
++{
++	// append the font's subfamily, unless it's a Regular font
++	if (*szStyle && _stricmp(szStyle, "Regular") != 0)
++	{
++		fz_strlcat(szName, "-", MAX_FACENAME);
++		fz_strlcat(szName, szStyle, MAX_FACENAME);
++	}
++	remove_spaces(szName);
++}
++
++static void
++parseTTF(fz_context *ctx, fz_stream *file, int offset, int index, const char *path)
++{
++	TT_OFFSET_TABLE ttOffsetTableBE;
++	TT_TABLE_DIRECTORY tblDirBE;
++	TT_NAME_TABLE_HEADER ttNTHeaderBE;
++	TT_NAME_RECORD ttRecordBE;
++
++	char szPSName[MAX_FACENAME] = { 0 };
++	char szTTName[MAX_FACENAME] = { 0 };
++	char szStyle[MAX_FACENAME] = { 0 };
++	char szCJKName[MAX_FACENAME] = { 0 };
++	int i, count, tblOffset;
++
++	safe_read(ctx, file, offset, (char *)&ttOffsetTableBE, sizeof(TT_OFFSET_TABLE));
++
++	// check if this is a TrueType font of version 1.0 or an OpenType font
++	if (BEtoHl(ttOffsetTableBE.uVersion) != TTC_VERSION1 &&
++		BEtoHl(ttOffsetTableBE.uVersion) != TTAG_OTTO)
++	{
++		fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : invalid font version %x", (unsigned int)BEtoHl(ttOffsetTableBE.uVersion));
++	}
++
++	// determine the name table's offset by iterating through the offset table
++	count = BEtoHs(ttOffsetTableBE.uNumOfTables);
++	for (i = 0; i < count; i++)
++	{
++		int entryOffset = offset + sizeof(TT_OFFSET_TABLE) + i * sizeof(TT_TABLE_DIRECTORY);
++		safe_read(ctx, file, entryOffset, (char *)&tblDirBE, sizeof(TT_TABLE_DIRECTORY));
++		if (!BEtoHl(tblDirBE.uTag) || BEtoHl(tblDirBE.uTag) == TTAG_name)
++			break;
++	}
++	if (count == i || !BEtoHl(tblDirBE.uTag))
++		fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : nameless font");
++	tblOffset = BEtoHl(tblDirBE.uOffset);
++
++	// read the 'name' table for record count and offsets
++	safe_read(ctx, file, tblOffset, (char *)&ttNTHeaderBE, sizeof(TT_NAME_TABLE_HEADER));
++	offset = tblOffset + sizeof(TT_NAME_TABLE_HEADER);
++	tblOffset += BEtoHs(ttNTHeaderBE.uStorageOffset);
++
++	// read through the strings for PostScript name and font family
++	count = BEtoHs(ttNTHeaderBE.uNRCount);
++	for (i = 0; i < count; i++)
++	{
++		short langId, nameId;
++		BOOL isCJKName;
++
++		safe_read(ctx, file, offset + i * sizeof(TT_NAME_RECORD), (char *)&ttRecordBE, sizeof(TT_NAME_RECORD));
++
++		langId = BEtoHs(ttRecordBE.uLanguageID);
++		nameId = BEtoHs(ttRecordBE.uNameID);
++		isCJKName = TT_NAME_ID_FONT_FAMILY == nameId && LANG_CHINESE == PRIMARYLANGID(langId);
++
++		// ignore non-English strings (except for Chinese font names)
++		if (langId && langId != TT_MS_LANGID_ENGLISH_UNITED_STATES && !isCJKName)
++			continue;
++		// ignore names other than font (sub)family and PostScript name
++		fz_try(ctx)
++		{
++			if (isCJKName)
++				read_ttf_string(ctx, file, tblOffset, &ttRecordBE, szCJKName, sizeof(szCJKName));
++			else if (TT_NAME_ID_FONT_FAMILY == nameId)
++				read_ttf_string(ctx, file, tblOffset, &ttRecordBE, szTTName, sizeof(szTTName));
++			else if (TT_NAME_ID_FONT_SUBFAMILY == nameId)
++				read_ttf_string(ctx, file, tblOffset, &ttRecordBE, szStyle, sizeof(szStyle));
++			else if (TT_NAME_ID_PS_NAME == nameId)
++				read_ttf_string(ctx, file, tblOffset, &ttRecordBE, szPSName, sizeof(szPSName));
++		}
++		fz_catch(ctx)
++		{
++			fz_warn(ctx, "ignoring face name decoding fonterror");
++		}
++	}
++
++	// try to prevent non-Arial fonts from accidentally substituting Arial
++	if (!strcmp(szPSName, "ArialMT"))
++	{
++		// cf. https://code.google.com/p/sumatrapdf/issues/detail?id=2471
++		if (strcmp(szTTName, "Arial") != 0)
++			szPSName[0] = '\0';
++		// TODO: is there a better way to distinguish Arial Caps from Arial proper?
++		// cf. http://code.google.com/p/sumatrapdf/issues/detail?id=1290
++		else if (strstr(path, "caps") || strstr(path, "Caps"))
++			fz_throw(ctx, FZ_ERROR_GENERIC, "ignore %s, as it can't be distinguished from Arial,Regular", path);
++	}
++
++	if (szPSName[0])
++		append_mapping(ctx, &fontlistMS, szPSName, path, index);
++	if (szTTName[0])
++	{
++		// derive a PostScript-like name and add it, if it's different from the font's
++		// included PostScript name; cf. http://code.google.com/p/sumatrapdf/issues/detail?id=376
++		makeFakePSName(szTTName, szStyle);
++		// compare the two names before adding this one
++		if (lookup_compare(szTTName, szPSName))
++			append_mapping(ctx, &fontlistMS, szTTName, path, index);
++	}
++	if (szCJKName[0])
++	{
++		makeFakePSName(szCJKName, szStyle);
++		if (lookup_compare(szCJKName, szPSName) && lookup_compare(szCJKName, szTTName))
++			append_mapping(ctx, &fontlistMS, szCJKName, path, index);
++	}
++}
++
++static void
++parseTTFs(fz_context *ctx, const char *path)
++{
++	fz_stream *file = fz_open_file(ctx, path);
++	/* "fonterror : %s not found", path */
++	fz_try(ctx)
++	{
++		parseTTF(ctx, file, 0, 0, path);
++	}
++	fz_always(ctx)
++	{
++		fz_drop_stream(ctx,file);
++	}
++	fz_catch(ctx)
++	{
++		fz_rethrow(ctx);
++	}
++}
++
++static void
++parseTTCs(fz_context *ctx, const char *path)
++{
++	FONT_COLLECTION fontcollectionBE;
++	ULONG i, numFonts, *offsettableBE = NULL;
++
++	fz_stream *file = fz_open_file(ctx, path);
++	/* "fonterror : %s not found", path */
++
++	fz_var(offsettableBE);
++
++	fz_try(ctx)
++	{
++		safe_read(ctx, file, 0, (char *)&fontcollectionBE, sizeof(FONT_COLLECTION));
++		if (BEtoHl(fontcollectionBE.Tag) != TTAG_ttcf)
++			fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : wrong format %x", (unsigned int)BEtoHl(fontcollectionBE.Tag));
++		if (BEtoHl(fontcollectionBE.Version) != TTC_VERSION1 &&
++			BEtoHl(fontcollectionBE.Version) != TTC_VERSION2)
++		{
++			fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : invalid version %x", (unsigned int)BEtoHl(fontcollectionBE.Version));
++		}
++
++		numFonts = BEtoHl(fontcollectionBE.NumFonts);
++		offsettableBE = fz_malloc_array(ctx, numFonts, sizeof(ULONG));
++
++		safe_read(ctx, file, sizeof(FONT_COLLECTION), (char *)offsettableBE, numFonts * sizeof(ULONG));
++		for (i = 0; i < numFonts; i++)
++			parseTTF(ctx, file, BEtoHl(offsettableBE[i]), i, path);
++	}
++	fz_always(ctx)
++	{
++		fz_free(ctx, offsettableBE);
++		fz_drop_stream(ctx,file);
++	}
++	fz_catch(ctx)
++	{
++		fz_rethrow(ctx);
++	}
++}
++
++static void
++extend_system_font_list(fz_context *ctx, const WCHAR *path)
++{
++	WCHAR szPath[MAX_PATH], *lpFileName;
++	WIN32_FIND_DATA FileData;
++	HANDLE hList;
++
++	GetFullPathName(path, nelem(szPath), szPath, &lpFileName);
++
++	hList = FindFirstFile(szPath, &FileData);
++	if (hList == INVALID_HANDLE_VALUE)
++	{
++		// Don't complain about missing directories
++		if (GetLastError() == ERROR_FILE_NOT_FOUND)
++			return;
++		fz_throw(ctx, FZ_ERROR_GENERIC, "extend_system_font_list: unknown error %d", (int)GetLastError());
++	}
++	do
++	{
++		if (!(FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
++		{
++			char szPathUtf8[MAX_PATH], *fileExt;
++			int res;
++			lstrcpyn(lpFileName, FileData.cFileName, szPath + MAX_PATH - lpFileName);
++			res = WideCharToMultiByte(CP_UTF8, 0, szPath, -1, szPathUtf8, sizeof(szPathUtf8), NULL, NULL);
++			if (!res)
++			{
++				fz_warn(ctx, "WideCharToMultiByte failed for %S", szPath);
++				continue;
++			}
++			fileExt = szPathUtf8 + strlen(szPathUtf8) - 4;
++			fz_try(ctx)
++			{
++				if (!_stricmp(fileExt, ".ttc"))
++					parseTTCs(ctx, szPathUtf8);
++				else if (!_stricmp(fileExt, ".ttf") || !_stricmp(fileExt, ".otf"))
++					parseTTFs(ctx, szPathUtf8);
++			}
++			fz_catch(ctx)
++			{
++				// ignore errors occurring while parsing a given font file
++			}
++		}
++	} while (FindNextFile(hList, &FileData));
++	FindClose(hList);
++}
++
++static void
++destroy_system_font_list(void)
++{
++	free(fontlistMS.fontmap);
++	memset(&fontlistMS, 0, sizeof(fontlistMS));
++}
++
++static void
++create_system_font_list(fz_context *ctx)
++{
++	WCHAR szFontDir[MAX_PATH];
++	UINT cch;
++
++	cch = GetWindowsDirectory(szFontDir, nelem(szFontDir) - 12);
++	if (0 < cch && cch < nelem(szFontDir) - 12)
++	{
++        /* willus.com edit--Win XP default MSVCRT.DLL doesn't have wcscat_s */
++#ifdef _WIN64
++		wcscat_s(szFontDir, MAX_PATH, L"\\Fonts\\*.?t?");
++#else
++		wcscat(szFontDir,L"\\Fonts\\*.?t?");
++#endif
++		extend_system_font_list(ctx, szFontDir);
++	}
++
++	if (fontlistMS.len == 0)
++		fz_warn(ctx, "couldn't find any usable system fonts");
++
++#ifdef NOCJKFONT
++	{
++		// If no CJK fallback font is builtin but one has been shipped separately (in the same
++		// directory as the main executable), add it to the list of loadable system fonts
++		WCHAR szFile[MAX_PATH], *lpFileName;
++		GetModuleFileName(0, szFontDir, MAX_PATH);
++		GetFullPathName(szFontDir, MAX_PATH, szFile, &lpFileName);
++		lstrcpyn(lpFileName, L"DroidSansFallback.ttf", szFile + MAX_PATH - lpFileName);
++		extend_system_font_list(ctx, szFile);
++	}
++#endif
++
++	// sort the font list, so that it can be searched binarily
++	qsort(fontlistMS.fontmap, fontlistMS.len, sizeof(pdf_fontmapMS), _stricmp);
++
++#ifdef DEBUG
++	// allow to overwrite system fonts for debugging purposes
++	// (either pass a full path or a search pattern such as "fonts\*.ttf")
++	cch = GetEnvironmentVariable(L"MUPDF_FONTS_PATTERN", szFontDir, nelem(szFontDir));
++	if (0 < cch && cch < nelem(szFontDir))
++	{
++		int i, prev_len = fontlistMS.len;
++		extend_system_font_list(ctx, szFontDir);
++		for (i = prev_len; i < fontlistMS.len; i++)
++		{
++			pdf_fontmapMS *entry = bsearch(fontlistMS.fontmap[i].fontface, fontlistMS.fontmap, prev_len, sizeof(pdf_fontmapMS), lookup_compare);
++			if (entry)
++				*entry = fontlistMS.fontmap[i];
++		}
++		qsort(fontlistMS.fontmap, fontlistMS.len, sizeof(pdf_fontmapMS), _stricmp);
++	}
++#endif
++
++	// make sure to clean up after ourselves
++	atexit(destroy_system_font_list);
++}
++
++static fz_font *
++pdf_load_windows_font_by_name(fz_context *ctx, const char *orig_name)
++{
++	pdf_fontmapMS *found = NULL;
++	char *comma, *fontname;
++	fz_font *font;
++
++    /* WILLUS MOD--not multi-threaded for k2pdfopt */
++	/* fz_synchronize_begin(); */
++	if (fontlistMS.len == 0)
++	{
++		fz_try(ctx)
++		{
++			create_system_font_list(ctx);
++		}
++		fz_catch(ctx) { }
++	}
++    /* WILLUS MOD--not multi-threaded for k2pdfopt */
++	/* fz_synchronize_end(); */
++	if (fontlistMS.len == 0)
++		fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror: couldn't find any fonts");
++
++	// work on a normalized copy of the font name
++	fontname = fz_strdup(ctx, orig_name);
++	remove_spaces(fontname);
++
++	// first, try to find the exact font name (including appended style information)
++	comma = strchr(fontname, ',');
++	if (comma)
++	{
++		*comma = '-';
++		found = pdf_find_windows_font_path(fontname);
++		*comma = ',';
++	}
++	// second, substitute the font name with a known PostScript name
++	else
++	{
++		int i;
++		for (i = 0; i < nelem(baseSubstitutes) && !found; i++)
++			if (!strcmp(fontname, baseSubstitutes[i].name))
++				found = pdf_find_windows_font_path(baseSubstitutes[i].pattern);
++	}
++	// third, search for the font name without additional style information
++	if (!found)
++		found = pdf_find_windows_font_path(fontname);
++	// fourth, try to separate style from basename for prestyled fonts (e.g. "ArialBold")
++	if (!found && !comma && (str_ends_with(fontname, "Bold") || str_ends_with(fontname, "Italic")))
++	{
++		int styleLen = str_ends_with(fontname, "Bold") ? 4 : str_ends_with(fontname, "BoldItalic") ? 10 : 6;
++		fontname = fz_resize_array(ctx, fontname, strlen(fontname) + 2, sizeof(char));
++		comma = fontname + strlen(fontname) - styleLen;
++		memmove(comma + 1, comma, styleLen + 1);
++		*comma = '-';
++		found = pdf_find_windows_font_path(fontname);
++		*comma = ',';
++		if (!found)
++			found = pdf_find_windows_font_path(fontname);
++	}
++	// fifth, try to convert the font name from the common Chinese codepage 936
++	if (!found && fontname[0] < 0)
++	{
++		WCHAR cjkNameW[MAX_FACENAME];
++		char cjkName[MAX_FACENAME];
++		if (MultiByteToWideChar(936, MB_ERR_INVALID_CHARS, fontname, -1, cjkNameW, nelem(cjkNameW)) &&
++			WideCharToMultiByte(CP_UTF8, 0, cjkNameW, -1, cjkName, nelem(cjkName), NULL, NULL))
++		{
++			comma = strchr(cjkName, ',');
++			if (comma)
++			{
++				*comma = '-';
++				found = pdf_find_windows_font_path(cjkName);
++				*comma = ',';
++			}
++			if (!found)
++				found = pdf_find_windows_font_path(cjkName);
++		}
++	}
++
++	fz_free(ctx, fontname);
++	if (!found)
++		fz_throw(ctx, FZ_ERROR_GENERIC, "couldn't find system font '%s'", orig_name);
++
++    /*
++	fz_warn(ctx, "loading non-embedded font '%s' from '%s'", orig_name, found->fontpath);
++    */
++
++	font = fz_new_font_from_file(ctx, orig_name, found->fontpath, found->index,
++		strcmp(found->fontface, "DroidSansFallback") != 0);
++    /* willus mod for MuPDF v1.10, 10-21-2016 */
++    {
++    fz_font_flags_t *flags;
++    flags=fz_font_flags(font);
++    if (flags!=NULL)
++    	flags->ft_substitute = 1;
++    }
++	return font;
++}
++
++static fz_font *
++pdf_load_windows_font(fz_context *ctx, const char *fontname, int bold, int italic, int needs_exact_metrics)
++{
++	if (needs_exact_metrics)
++	{
++		const char *clean_name;
++        /* WILLUS: Declare pdf_clean_base14_name() */
++        extern const char *pdf_clean_base14_name(const char *fontname);
++
++		/* TODO: the metrics for Times-Roman and Courier don't match
++		   those of Windows' Times New Roman and Courier New; for
++		   some reason, Poppler doesn't seem to have this problem */
++		int len;
++		if (fz_lookup_builtin_font(ctx,fontname, bold, italic, &len))
++			return NULL;
++
++		/* cf. http://code.google.com/p/sumatrapdf/issues/detail?id=2173 */
++		clean_name = pdf_clean_base14_name(fontname);
++		if (clean_name != fontname && !strncmp(clean_name, "Times-", 6))
++			return NULL;
++	}
++
++	// TODO: unset font->ft_substitute for base14/needs_exact_metrics?
++	return pdf_load_windows_font_by_name(ctx, fontname);
++}
++
++static const char *clean_font_name(const char *fontname)
++{
++	int i, k;
++	for (i = 0; i < nelem(base_font_names); i++)
++		for (k = 0; base_font_names[i][k]; k++)
++			if (!strcmp_ignore_space(base_font_names[i][k], fontname))
++				return base_font_names[i][0];
++	return fontname;
++}
++
++
++/* SumatraPDF: expose clean_font_name */
++static const char * pdf_clean_base14_name(const char *fontname)
++{
++	return clean_font_name(fontname);
++}
++
++static fz_font *
++pdf_load_windows_cjk_font(fz_context *ctx, const char *fontname, int ros, int serif)
++{
++	fz_font *font;
++
++    font=NULL; /* WILLUS: Avoid compiler warning */
++	/* try to find a matching system font before falling back to an approximate one */
++	fz_try(ctx)
++	{
++		font = pdf_load_windows_font_by_name(ctx, fontname);
++	}
++	fz_catch(ctx)
++	{
++		font = NULL;
++	}
++	if (font)
++		return font;
++
++	/* try to fall back to a reasonable system font */
++	fz_try(ctx)
++	{
++		if (serif)
++		{
++			switch (ros)
++			{
++			case FZ_ADOBE_CNS: font = pdf_load_windows_font_by_name(ctx, "MingLiU"); break;
++			case FZ_ADOBE_GB: font = pdf_load_windows_font_by_name(ctx, "SimSun"); break;
++			case FZ_ADOBE_JAPAN: font = pdf_load_windows_font_by_name(ctx, "MS-Mincho"); break;
++			case FZ_ADOBE_KOREA: font = pdf_load_windows_font_by_name(ctx, "Batang"); break;
++			default: fz_throw(ctx, FZ_ERROR_GENERIC, "invalid serif ros");
++			}
++		}
++		else
++		{
++			switch (ros)
++			{
++			case FZ_ADOBE_CNS: font = pdf_load_windows_font_by_name(ctx, "DFKaiShu-SB-Estd-BF"); break;
++			case FZ_ADOBE_GB:
++				fz_try(ctx)
++				{
++					font = pdf_load_windows_font_by_name(ctx, "KaiTi");
++				}
++				fz_catch(ctx)
++				{
++					font = pdf_load_windows_font_by_name(ctx, "KaiTi_GB2312");
++				}
++				break;
++			case FZ_ADOBE_JAPAN: font = pdf_load_windows_font_by_name(ctx, "MS-Gothic"); break;
++			case FZ_ADOBE_KOREA: font = pdf_load_windows_font_by_name(ctx, "Gulim"); break;
++			default: fz_throw(ctx, FZ_ERROR_GENERIC, "invalid sans-serif ros");
++			}
++		}
++	}
++	fz_catch(ctx)
++	{
++#ifdef NOCJKFONT
++		/* If no CJK fallback font is builtin, maybe one has been shipped separately */
++		font = pdf_load_windows_font_by_name(ctx, "DroidSansFallback");
++#else
++		fz_rethrow(ctx);
++#endif
++	}
++
++	return font;
++}
++
++#endif
++
++void pdf_install_load_system_font_funcs(fz_context *ctx)
++{
++#ifdef _WIN32
++	fz_install_load_system_font_funcs(ctx, pdf_load_windows_font, pdf_load_windows_cjk_font, NULL);
++#endif
++}
+diff --git a/source/fitz/font.c b/source/fitz/font.c
+index 00c6e8f99..1448b4a56 100644
+--- a/source/fitz/font.c
++++ b/source/fitz/font.c
+@@ -4,8 +4,11 @@
+ #include "draw-imp.h"
+ 
+ #include <ft2build.h>
++/* willus mod -- remove hb includes */
++/*
+ #include "hb.h"
+ #include "hb-ft.h"
++*/
+ 
+ #include <assert.h>
+ 
+diff --git a/source/fitz/stext-device.c b/source/fitz/stext-device.c
+index 2df90305e..b1f99e056 100644
+--- a/source/fitz/stext-device.c
++++ b/source/fitz/stext-device.c
+@@ -825,6 +825,11 @@ fz_new_stext_device(fz_context *ctx, fz_stext_page *page, const fz_stext_options
+ 	dev->lastchar = ' ';
+ 	dev->curdir = 1;
+ 	dev->lasttext = NULL;
++    /* willus mod -- seems like this should be here, but not sure. */
++    if (opts)
++        dev->flags = opts->flags;
++    else
++        dev->flags = 0;
+ 
+ 	return (fz_device*)dev;
+ }
+diff --git a/source/fitz/string.c b/source/fitz/string.c
+index f8eedb682..7a767983d 100644
+--- a/source/fitz/string.c
++++ b/source/fitz/string.c
+@@ -560,6 +560,10 @@ fz_utflen(const char *s)
+ */
+ float fz_atof(const char *s)
+ {
++/* willus mod: atof(s), #if-#else-#endif */
++#if (!defined(__SSE__))
++    return(atof(s));
++#else
+ 	float result;
+ 
+ 	if (s == NULL)
+@@ -572,6 +576,7 @@ float fz_atof(const char *s)
+ 		return 1;
+ 	result = fz_clamp(result, -FLT_MAX, FLT_MAX);
+ 	return result;
++#endif
+ }
+ 
+ /*
+diff --git a/source/pdf/pdf-annot.c b/source/pdf/pdf-annot.c
+index 4dfdf36fe..acff7d12a 100644
+--- a/source/pdf/pdf-annot.c
++++ b/source/pdf/pdf-annot.c
+@@ -5,8 +5,20 @@
+ #include <string.h>
+ #include <time.h>
+ 
++/* willus mod--don't use _mkgmtime--not available in Win XP */
+ #ifdef _WIN32
+-#define timegm _mkgmtime
++static time_t timegm(struct tm *date);
++static time_t timegm(struct tm *date)
++
++    {
++    time_t t,z;
++    struct tm gmz;
++
++    z=(time_t)0;
++    gmz=(*gmtime(&z));
++    t=mktime(date)-mktime(&gmz);
++    return(t);
++    }
+ #endif
+ 
+ #define isdigit(c) (c >= '0' && c <= '9')
+diff --git a/source/pdf/pdf-link.c b/source/pdf/pdf-link.c
+index 37444b471..613cc05b9 100644
+--- a/source/pdf/pdf-link.c
++++ b/source/pdf/pdf-link.c
+@@ -345,6 +345,9 @@ pdf_resolve_link(fz_context *ctx, pdf_document *doc, const char *uri, float *xp,
+ 		}
+ 		return page;
+ 	}
++/* willus mod -- be quiet */
++/*
+ 	fz_warn(ctx, "unknown link uri '%s'", uri);
++*/
+ 	return -1;
+ }
+diff --git a/source/pdf/pdf-parse.c b/source/pdf/pdf-parse.c
+index 04a772204..9dd0cd898 100644
+--- a/source/pdf/pdf-parse.c
++++ b/source/pdf/pdf-parse.c
+@@ -663,9 +663,14 @@ pdf_parse_ind_obj(fz_context *ctx, pdf_document *doc,
+ 			if (c == '\r')
+ 			{
+ 				c = fz_peek_byte(ctx, file);
++/* willus mod -- no warning */
++/*
+ 				if (c != '\n')
+ 					fz_warn(ctx, "line feed missing after stream begin marker (%d %d R)", num, gen);
+ 				else
++*/
++if (c=='\n')
++/* willus mod -- end */
+ 					fz_read_byte(ctx, file);
+ 			}
+ 			stm_ofs = fz_tell(ctx, file);
+diff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c
+index 8f888059b..08de7bfba 100644
+--- a/source/pdf/pdf-xref.c
++++ b/source/pdf/pdf-xref.c
+@@ -710,8 +710,11 @@ pdf_xref_size_from_old_trailer(fz_context *ctx, pdf_document *doc, pdf_lexbuf *b
+ 		if (!s)
+ 			fz_throw(ctx, FZ_ERROR_GENERIC, "xref subsection length missing");
+ 		len = fz_atoi(fz_strsep(&s, " "));
++/* willus mod -- no warning */
++/*
+ 		if (len < 0)
+ 			fz_throw(ctx, FZ_ERROR_GENERIC, "xref subsection length must be positive");
++*/
+ 
+ 		/* broken pdfs where the section is not on a separate line */
+ 		if (s && *s != '\0')
+@@ -1378,7 +1381,10 @@ pdf_init_document(fz_context *ctx, pdf_document *doc)
+ 	{
+ 		pdf_drop_xref_sections(ctx, doc);
+ 		fz_rethrow_if(ctx, FZ_ERROR_TRYLATER);
++/* willus mod -- be quiet */
++/*
+ 		fz_warn(ctx, "trying to repair broken xref");
++*/
+ 		repaired = 1;
+ 	}
+ 
+@@ -1506,7 +1512,10 @@ pdf_drop_document_imp(fz_context *ctx, pdf_document *doc)
+ 		/* Swallow error, but continue dropping */
+ 	}
+ 
++/* willu smod -- no pdf_drop_js */
++/*
+ 	pdf_drop_js(ctx, doc->js);
++*/
+ 
+ 	pdf_drop_xref_sections(ctx, doc);
+ 	fz_free(ctx, doc->xref_index);
+-- 
+2.22.0
+
diff --git a/nixpkgs/pkgs/applications/misc/k2pdfopt/tesseract.patch b/nixpkgs/pkgs/applications/misc/k2pdfopt/tesseract.patch
new file mode 100644
index 000000000000..adfee9ae282f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/k2pdfopt/tesseract.patch
@@ -0,0 +1,675 @@
+From 39aa8502eee7bb669a29d1a9b3bfe5c9595ad960 Mon Sep 17 00:00:00 2001
+From: Daniel Fullmer <danielrf12@gmail.com>
+Date: Fri, 13 Sep 2019 13:45:05 -0400
+Subject: [PATCH] Willus mod changes from k2pdfopt
+
+---
+ src/api/Makefile.am        |   1 +
+ src/api/baseapi.cpp        |  87 +++++++++++
+ src/api/baseapi.h          |   3 +
+ src/api/tesscapi.cpp       | 311 +++++++++++++++++++++++++++++++++++++
+ src/api/tesseract.h        |  29 ++++
+ src/ccmain/tessedit.cpp    |   5 +-
+ src/ccutil/ccutil.h        |   7 +
+ src/ccutil/genericvector.h |  21 ++-
+ src/ccutil/mainblk.cpp     |  17 +-
+ src/ccutil/params.cpp      |   3 +-
+ src/ccutil/serialis.cpp    |   3 +
+ src/ccutil/serialis.h      |   2 +
+ src/lstm/input.cpp         |   3 +
+ 13 files changed, 488 insertions(+), 4 deletions(-)
+ create mode 100644 src/api/tesscapi.cpp
+ create mode 100644 src/api/tesseract.h
+
+diff --git a/src/api/Makefile.am b/src/api/Makefile.am
+index d9b76eb6..cd2dc30f 100644
+--- a/src/api/Makefile.am
++++ b/src/api/Makefile.am
+@@ -39,6 +39,7 @@ libtesseract_api_la_SOURCES += lstmboxrenderer.cpp
+ libtesseract_api_la_SOURCES += pdfrenderer.cpp
+ libtesseract_api_la_SOURCES += wordstrboxrenderer.cpp
+ libtesseract_api_la_SOURCES += renderer.cpp
++libtesseract_api_la_SOURCES += tesscapi.cpp
+ 
+ lib_LTLIBRARIES += libtesseract.la
+ libtesseract_la_LDFLAGS = $(LEPTONICA_LIBS) $(OPENCL_LDFLAGS) $(libarchive_LIBS)
+diff --git a/src/api/baseapi.cpp b/src/api/baseapi.cpp
+index 9245d07c..ea964ee6 100644
+--- a/src/api/baseapi.cpp
++++ b/src/api/baseapi.cpp
+@@ -215,6 +215,14 @@ TessBaseAPI::TessBaseAPI()
+   // Use the current locale if building debug code.
+   std::locale::global(std::locale(""));
+ #endif
++  const char *locale;
++  locale = std::setlocale(LC_ALL, nullptr);
++/* willus mod Remove assertions--taken care of in tesscapi.cpp */
++//  ASSERT_HOST(!strcmp(locale, "C"));
++  locale = std::setlocale(LC_CTYPE, nullptr);
++//  ASSERT_HOST(!strcmp(locale, "C"));
++  locale = std::setlocale(LC_NUMERIC, nullptr);
++//  ASSERT_HOST(!strcmp(locale, "C"));
+ }
+ 
+ TessBaseAPI::~TessBaseAPI() {
+@@ -1333,6 +1341,85 @@ static void AddBoxToTSV(const PageIterator* it, PageIteratorLevel level,
+   text->add_str_int("\t", bottom - top);
+ }
+ 
++/* willus mod */
++int TessBaseAPI::GetOCRWords(int **x00,int **y00,int **x11,int **y11,int **ybaseline0,
++                             char **utf8words)
++
++    {
++    int iword,nwords,totlen,it8;
++    int *x0,*y0,*x1,*y1,*ybaseline;
++    char *tutf8;
++
++    ResultIterator *res_it = GetIterator();
++    /* Count words */
++    iword=0;
++    totlen=0;
++    while (!res_it->Empty(RIL_BLOCK))
++        {
++        if (res_it->Empty(RIL_WORD))
++            {
++            res_it->Next(RIL_WORD);
++            continue;
++            }
++        iword++;
++        STRING textstr=std::unique_ptr<const char[]>(res_it->GetUTF8Text(RIL_WORD)).get();
++        totlen+=strlen(textstr.string())+1;
++        res_it->Next(RIL_WORD);
++        }
++    nwords=iword;
++/*
++printf("\nnwords=%d, totlen=%d\n",nwords,totlen);
++*/
++    x0=(*x00)=(int *)malloc(sizeof(int)*5*nwords);
++    y0=(*y00)=&x0[nwords];
++    x1=(*x11)=&y0[nwords];
++    y1=(*y11)=&x1[nwords];
++    ybaseline=(*ybaseline0)=&y1[nwords];
++    tutf8=(*utf8words)=(char *)malloc(totlen);
++    iword=0;
++    it8=0;
++    res_it->Begin();
++    while (!res_it->Empty(RIL_BLOCK))
++        {
++        if (res_it->Empty(RIL_WORD))
++            {
++            res_it->Next(RIL_WORD);
++            continue;
++            }
++        STRING textstr=std::unique_ptr<const char[]>(res_it->GetUTF8Text(RIL_WORD)).get();
++        strcpy(&tutf8[it8],textstr.string());
++        it8 += strlen(&tutf8[it8])+1;
++        /*
++        STRING textstr("");
++        textstr += std::unique_ptr<const char[]>(res_it->GetUTF8Text(RIL_WORD)).get();
++        */
++/*
++printf("Word %d: '%s'\n",iword,textstr.string());
++*/
++        int left, top, right, bottom;
++        int u1,v1,u2,v2;
++        res_it->BoundingBox(RIL_WORD, &left, &top, &right, &bottom);
++        res_it->Baseline(RIL_WORD, &u1, &v1, &u2, &v2);
++        x0[iword]=left;
++        x1[iword]=right;
++        y0[iword]=top;
++        y1[iword]=bottom;
++        ybaseline[iword]=(v1+v2)/2;
++        iword++;
++/*
++printf("BB: (%d,%d)-(%d,%d)  BL: (%d,%d)-(%d,%d)\n",left,bottom,right,top,x1,y1,x2,y2);
++*/
++        res_it->Next(RIL_WORD);
++        }
++/*
++printf("iword=%d\n",iword);
++*/
++    return(iword);
++    }
++
++/* willus mod */
++int GetOCRWords(int **x0,int **y0,int **x1,int **y1,int **ybaseline,char **utf8words);
++
+ /**
+  * Make a TSV-formatted string from the internal data structures.
+  * page_number is 0-based but will appear in the output as 1-based.
+diff --git a/src/api/baseapi.h b/src/api/baseapi.h
+index 3724dd92..23be5920 100644
+--- a/src/api/baseapi.h
++++ b/src/api/baseapi.h
+@@ -575,6 +575,9 @@ class TESS_API TessBaseAPI {
+    */
+   char* GetHOCRText(ETEXT_DESC* monitor, int page_number);
+ 
++/* willus mod */
++int GetOCRWords(int **x0,int **y0,int **x1,int **y1,int **ybaseline,char **utf8words);
++
+   /**
+    * Make a HTML-formatted string with hOCR markup from the internal
+    * data structures.
+diff --git a/src/api/tesscapi.cpp b/src/api/tesscapi.cpp
+new file mode 100644
+index 00000000..1752fafe
+--- /dev/null
++++ b/src/api/tesscapi.cpp
+@@ -0,0 +1,311 @@
++/*
++** tesscapi.cpp    willus.com attempt at C wrapper for tesseract.
++**                 (Butchered from tesseractmain.cpp)
++**                 Last udpated 9-1-12
++**
++** Copyright (C) 2012  http://willus.com
++**
++** This program is free software: you can redistribute it and/or modify
++** it under the terms of the GNU Affero General Public License as
++** published by the Free Software Foundation, either version 3 of the
++** License, or (at your option) any later version.
++**
++** This program is distributed in the hope that it will be useful,
++** but WITHOUT ANY WARRANTY; without even the implied warranty of
++** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++** GNU Affero General Public License for more details.
++**
++** You should have received a copy of the GNU Affero General Public License
++** along with this program.  If not, see <http://www.gnu.org/licenses/>.
++**
++*/
++
++/*
++#include "mfcpch.h"
++*/
++// #define USE_VLD //Uncomment for Visual Leak Detector.
++#if (defined _MSC_VER && defined USE_VLD)
++#include <vld.h>
++#endif
++
++// Include automatically generated configuration file if running autoconf
++#ifdef HAVE_CONFIG_H
++#include "config_auto.h"
++#endif
++#include <locale.h>
++#ifdef USING_GETTEXT
++#include <libintl.h>
++#define _(x) gettext(x)
++#else
++#define _(x) (x)
++#endif
++
++#include "allheaders.h"
++#include "baseapi.h"
++#include "strngs.h"
++#include "params.h"
++#include "blobs.h"
++#include "simddetect.h"
++#include "tesseractclass.h"
++/*
++#include "notdll.h"
++*/
++
++/* C Wrappers */
++#include "tesseract.h"
++
++// static tesseract::TessBaseAPI api[4];
++
++/*
++** ocr_type=0:  OEM_DEFAULT
++** ocr_type=1:  OEM_TESSERACT_ONLY
++** ocr_type=2:  OEM_LSTM_ONLY
++** ocr_type=3:  OEM_TESSERACT_LSTM_COMBINED
++*/
++void *tess_capi_init(char *datapath,char *language,int ocr_type,FILE *out,
++                     char *initstr,int maxlen,int *status)
++
++    {
++    char original_locale[256];
++    tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI;
++/*
++printf("@tess_capi_init\n");
++printf("    datapath='%s'\n",datapath);
++printf("    language='%s'\n",language);
++printf("    ocr_type=%d\n",ocr_type);
++*/
++#ifdef USE_NLS
++    setlocale (LC_ALL, "");
++    bindtextdomain (PACKAGE, LOCALEDIR);
++    textdomain (PACKAGE);
++#endif
++    /* willus mod, 11-24-16 */
++    /* Tesseract needs "C" locale to correctly parse all data .traineddata files. */
++/*
++printf("locale='%s'\n",setlocale(LC_ALL,NULL));
++printf("ctype='%s'\n",setlocale(LC_CTYPE,NULL));
++printf("numeric='%s'\n",setlocale(LC_NUMERIC,NULL));
++*/
++    strncpy(original_locale,setlocale(LC_ALL,NULL),255);
++    original_locale[255]='\0';
++/*
++printf("original_locale='%s'\n",original_locale);
++*/
++    setlocale(LC_ALL,"C");
++/*
++printf("new locale='%s'\n",setlocale(LC_ALL,NULL));
++printf("new ctype='%s'\n",setlocale(LC_CTYPE,NULL));
++printf("new numeric='%s'\n",setlocale(LC_NUMERIC,NULL));
++*/
++    // fprintf(stderr, "tesseract %s\n", tesseract::TessBaseAPI::Version());
++    // Make the order of args a bit more forgiving than it used to be.
++    const char* lang = "eng";
++    tesseract::PageSegMode pagesegmode = tesseract::PSM_SINGLE_BLOCK;
++    if (language!=NULL && language[0]!='\0')
++        lang = language;
++    /*
++    if (output == NULL)
++        {
++        fprintf(stderr, _("Usage:%s imagename outputbase [-l lang] "
++                      "[-psm pagesegmode] [configfile...]\n"), argv[0]);
++        fprintf(stderr,
++            _("pagesegmode values are:\n"
++              "0 = Orientation and script detection (OSD) only.\n"
++              "1 = Automatic page segmentation with OSD.\n"
++              "2 = Automatic page segmentation, but no OSD, or OCR\n"
++              "3 = Fully automatic page segmentation, but no OSD. (Default)\n"
++              "4 = Assume a single column of text of variable sizes.\n"
++              "5 = Assume a single uniform block of vertically aligned text.\n"
++              "6 = Assume a single uniform block of text.\n"
++              "7 = Treat the image as a single text line.\n"
++              "8 = Treat the image as a single word.\n"
++              "9 = Treat the image as a single word in a circle.\n"
++              "10 = Treat the image as a single character.\n"));
++        fprintf(stderr, _("-l lang and/or -psm pagesegmode must occur before any"
++                      "configfile.\n"));
++        exit(1);
++        }
++    */
++/*
++printf("SSE = %s\n",SIMDDetect::IsSSEAvailable() ? "AVAILABLE" : "NOT AVAILABLE");
++printf("AVX = %s\n",SIMDDetect::IsAVXAvailable() ? "AVAILABLE" : "NOT AVAILABLE");
++*/
++/*
++v4.00 loads either TESSERACT enginer, LSTM engine, or both.  No CUBE.
++*/
++    ocr_type=0; /* Ignore specified and use default */
++    api->SetOutputName(NULL);
++    (*status)=api->Init(datapath,lang,
++              ocr_type==0 ? tesseract::OEM_DEFAULT :
++                (ocr_type==1 ? tesseract::OEM_TESSERACT_ONLY :
++                   (ocr_type==2 ? tesseract::OEM_LSTM_ONLY :
++                                  (tesseract::OEM_TESSERACT_LSTM_COMBINED))));
++    if ((*status)!=0)
++        {
++        /* willus mod, 11-24-16 */
++        setlocale(LC_ALL,original_locale);
++        api->End();
++        delete api;
++        return(NULL);
++        }
++    /*
++    api.Init("tesscapi",lang,tesseract::OEM_DEFAULT,
++           &(argv[arg]), argc - arg, NULL, NULL, false);
++    */
++    // We have 2 possible sources of pagesegmode: a config file and
++    // the command line. For backwards compatability reasons, the
++    // default in tesseract is tesseract::PSM_SINGLE_BLOCK, but the
++    // default for this program is tesseract::PSM_AUTO. We will let
++    // the config file take priority, so the command-line default
++    // can take priority over the tesseract default, so we use the
++    // value from the command line only if the retrieved mode
++    // is still tesseract::PSM_SINGLE_BLOCK, indicating no change
++    // in any config file. Therefore the only way to force
++    // tesseract::PSM_SINGLE_BLOCK is from the command line.
++    // It would be simpler if we could set the value before Init,
++    // but that doesn't work.
++    if (api->GetPageSegMode() == tesseract::PSM_SINGLE_BLOCK)
++        api->SetPageSegMode(pagesegmode);
++
++    /*
++    ** Initialization message
++    */
++    {
++    char istr[1024];
++    int sse,avx;
++
++// printf("tessedit_ocr_engine_mode = %d\n",tessedit_ocr_engine_mode);
++    sprintf(istr,"%s",api->Version());
++    sse=tesseract::SIMDDetect::IsSSEAvailable();
++    avx=tesseract::SIMDDetect::IsAVXAvailable();
++    if (sse || avx)
++        sprintf(&istr[strlen(istr)]," [%s]",sse&&avx?"SSE+AVX":(sse?"SSE":"AVX"));
++    sprintf(&istr[strlen(istr)],"\n    Tesseract data folder = '%s'",datapath==NULL?getenv("TESSDATA_PREFIX"):datapath);
++    strcat(istr,"\n    Tesseract languages: ");
++    GenericVector<STRING> languages;
++    api->GetLoadedLanguagesAsVector(&languages);
++/*
++printf("OEM=%d\n",api->oem());
++printf("Langs='%s'\n",api->GetInitLanguagesAsString());
++printf("AnyTessLang()=%d\n",(int)api->tesseract()->AnyTessLang());
++printf("AnyLSTMLang()=%d\n",(int)api->tesseract()->AnyLSTMLang());
++printf("num_sub_langs()=%d\n",api->tesseract()->num_sub_langs());
++printf("languages.size()=%d\n",(int)languages.size());
++*/
++
++    for (int i=0;i<=api->tesseract()->num_sub_langs();i++)
++        {
++        tesseract::Tesseract *lang1;
++        int eng;
++        lang1 = i==0 ? api->tesseract() : api->tesseract()->get_sub_lang(i-1);
++        eng=(int)lang1->tessedit_ocr_engine_mode;
++        sprintf(&istr[strlen(istr)],"%s%s [%s]",i==0?"":", ",lang1->lang.string(),
++                 eng==2?"LSTM+Tess":(eng==1?"LSTM":"Tess"));
++        }
++/*
++printf("%d. '%s'\n",i+1,languages[i].string());
++printf("    sublang[%d].oem_engine = %d\n",i+1,(int)api->tesseract()->get_sub_lang(i)->tessedit_ocr_engine_mode);
++*/
++
++    /*
++    if (ocr_type==0 || ocr_type==3)
++        sprintf(&istr[strlen(istr)],"[LSTM+] (lang=");
++    else if (ocr_type==2)
++        sprintf(&istr[strlen(istr)],"[LSTM] (lang=");
++    strncpy(&istr[strlen(istr)],language,253-strlen(istr));
++    istr[253]='\0';
++    strcat(istr,")");
++    */
++    if (out!=NULL)
++        fprintf(out,"%s\n",istr);
++    if (initstr!=NULL)
++        {
++        strncpy(initstr,istr,maxlen-1);
++        initstr[maxlen-1]='\0';
++        }
++    }
++
++
++    /* Turn off LSTM debugging output */
++    api->SetVariable("lstm_debug_level","0");
++#if (WILLUSDEBUG & 1)
++    api->SetVariable("lstm_debug_level","9");
++    api->SetVariable("paragraph_debug_level","9");
++    api->SetVariable("tessdata_manager_debug_level","9");
++    api->SetVariable("tosp_debug_level","9");
++    api->SetVariable("wordrec_debug_level","9");
++    api->SetVariable("segsearch_debug_level","9");
++#endif
++    /* willus mod, 11-24-16 */
++    setlocale(LC_ALL,original_locale);
++    return((void *)api);
++    }
++
++
++int tess_capi_get_ocr(void *vapi,PIX *pix,char *outstr,int maxlen,int segmode,FILE *out)
++
++    {
++    tesseract::TessBaseAPI *api;
++    static int old_segmode=-1;
++
++    api=(tesseract::TessBaseAPI *)vapi;
++    if (old_segmode != segmode)
++        {
++        old_segmode=segmode;
++        api->SetPageSegMode((tesseract::PageSegMode)segmode);
++        }
++    if (!api->ProcessPage(pix,0,NULL,NULL,0,NULL))
++        {
++        /* pixDestroy(&pix); */
++        if (out!=NULL)
++            fprintf(out,"tesscapi:  Error during bitmap processing.\n");
++        api->Clear();
++        return(-1);
++        }
++    strncpy(outstr,api->GetUTF8Text(),maxlen-1);
++    outstr[maxlen-1]='\0';
++    api->Clear();
++    return(0);
++    }
++
++
++int tess_capi_get_ocr_multiword(void *vapi,PIX *pix,int segmode,
++                                int **left,int **top,int **right,int **bottom,
++                                int **ybase,char **text,int *nw,
++                                FILE *out)
++
++    {
++    tesseract::TessBaseAPI *api;
++    static int old_segmode=-1;
++
++    api=(tesseract::TessBaseAPI *)vapi;
++    if (old_segmode != segmode)
++        {
++        old_segmode=segmode;
++        api->SetPageSegMode((tesseract::PageSegMode)segmode);
++        }
++    if (!api->ProcessPage(pix,0,NULL,NULL,0,NULL))
++        {
++        if (out!=NULL)
++            fprintf(out,"tesscapi:  Error during bitmap processing.\n");
++        api->Clear();
++        (*nw)=0;
++        return(-1);
++        }
++    (*nw)=api->GetOCRWords(left,top,right,bottom,ybase,text);
++    api->Clear();
++    return(0);
++    }
++
++
++void tess_capi_end(void *vapi)
++
++    {
++    tesseract::TessBaseAPI *api;
++
++    if (vapi==NULL)
++        return;
++    api=(tesseract::TessBaseAPI *)vapi;
++    api->End();
++    delete api;
++    }
+diff --git a/src/api/tesseract.h b/src/api/tesseract.h
+new file mode 100644
+index 00000000..575948cc
+--- /dev/null
++++ b/src/api/tesseract.h
+@@ -0,0 +1,29 @@
++/*
++** Willus.com's Tesseract C Wrappers
++**
++** 6-8-12
++**
++*/
++
++#ifndef           _TESSERACT_H_
++#define           _TESSERACT_H_
++
++//#include <leptonica.h>
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++void *tess_capi_init(char *datapath,char *language,int ocr_type,FILE *out,
++                    char *initstr,int maxlen,int *status);
++int tess_capi_get_ocr(void *api,PIX *pix,char *outstr,int maxlen,int segmode,FILE *out);
++int tess_capi_get_ocr_multiword(void *vapi,PIX *pix,int segmode,
++                                int **left,int **top,int **right,int **bottom,
++                                int **ybase,char **text,int *nw,
++                                FILE *out);
++void tess_capi_end(void *api);
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif
+diff --git a/src/ccmain/tessedit.cpp b/src/ccmain/tessedit.cpp
+index 17f0951b..7af94ee2 100644
+--- a/src/ccmain/tessedit.cpp
++++ b/src/ccmain/tessedit.cpp
+@@ -101,6 +101,10 @@ bool Tesseract::init_tesseract_lang_data(
+         " to your \"tessdata\" directory.\n");
+     return false;
+   }
++  /* willus mod */
++  TFile fp;
++  strncpy(fp.tfile_filename,tessdata_path.string(),511);
++  fp.tfile_filename[511]='\0';
+ #ifndef DISABLED_LEGACY_ENGINE
+   if (oem == OEM_DEFAULT) {
+     // Set the engine mode from availability, which can then be overridden by
+@@ -116,7 +120,6 @@ bool Tesseract::init_tesseract_lang_data(
+ #endif  // ndef DISABLED_LEGACY_ENGINE
+ 
+   // If a language specific config file (lang.config) exists, load it in.
+-  TFile fp;
+   if (mgr->GetComponent(TESSDATA_LANG_CONFIG, &fp)) {
+     ParamUtils::ReadParamsFromFp(SET_PARAM_CONSTRAINT_NONE, &fp,
+                                  this->params());
+diff --git a/src/ccutil/ccutil.h b/src/ccutil/ccutil.h
+index 71e89c60..bdeccc14 100644
+--- a/src/ccutil/ccutil.h
++++ b/src/ccutil/ccutil.h
+@@ -80,6 +80,13 @@ class CCUtil {
+   // Member parameters.
+   // These have to be declared and initialized after params_ member, since
+   // params_ should be initialized before parameters are added to it.
++/* willus mod */
++/*
++  #ifdef _WIN32
++  STRING_VAR_H(tessedit_module_name, WINDLLNAME,
++               "Module colocated with tessdata dir");
++  #endif
++*/
+   INT_VAR_H(ambigs_debug_level, 0, "Debug level for unichar ambiguities");
+   BOOL_VAR_H(use_definite_ambigs_for_classifier, false,
+              "Use definite ambiguities when running character classifier");
+diff --git a/src/ccutil/genericvector.h b/src/ccutil/genericvector.h
+index 3556d153..3a5e8662 100644
+--- a/src/ccutil/genericvector.h
++++ b/src/ccutil/genericvector.h
+@@ -382,7 +382,26 @@ inline bool LoadDataFromFile(const char* filename, GenericVector<char>* data) {
+       // reserve an extra byte in case caller wants to append a '\0' character
+       data->reserve(size + 1);
+       data->resize_no_init(size);
+-      result = static_cast<long>(fread(&(*data)[0], 1, size, fp)) == size;
++    /* willus mod Dec 2018--weird issue with Win XP and MinGW gcc 7.3.0 */
++    /* Can't read entire file at once -- need to break up into smaller blocksize reads */
++    {
++    int frs,n;
++    int blocksize;
++    blocksize=1024*1024;
++    for (n=0;1;)
++        {
++        int bs;
++        bs= size-n > blocksize ? blocksize : size-n;
++        frs=(int)fread(&(*data)[n],1,bs,fp);
++        n+=frs;
++        if (frs<bs || bs<blocksize || n>=size)
++            break;
++        }
++    result = static_cast<long>((long)n==size);
++    }
++    /*
++    result = static_cast<long>(fread(&(*data)[0], 1, size, fp)) == size;
++    */
+     }
+     fclose(fp);
+   }
+diff --git a/src/ccutil/mainblk.cpp b/src/ccutil/mainblk.cpp
+index 52b04b04..80b26044 100644
+--- a/src/ccutil/mainblk.cpp
++++ b/src/ccutil/mainblk.cpp
+@@ -55,8 +55,22 @@ void CCUtil::main_setup(const char *argv0, const char *basename) {
+ #if defined(_WIN32)
+   } else if (datadir == nullptr || _access(datadir.string(), 0) != 0) {
+     /* Look for tessdata in directory of executable. */
++    /*
++    char drive[_MAX_DRIVE];
++    char dir[_MAX_DIR];
++    */
+     char path[_MAX_PATH];
+-    DWORD length = GetModuleFileName(nullptr, path, sizeof(path));
++    int i;
++    /* DWORD length = */ GetModuleFileName(nullptr, path, sizeof(path));
++    /* willus mod--avoid _splitpath_s -- not in XP */
++    for (i=strlen(path)-1;i>=0 && path[i]!='/' && path[i]!='\\';i--);
++    if (i>=0)
++        {
++        path[i]='\0';
++        datadir=path;
++        datadir += "/tessdata";
++        }
++    /*
+     if (length > 0 && length < sizeof(path)) {
+       char* separator = std::strrchr(path, '\\');
+       if (separator != nullptr) {
+@@ -65,6 +79,7 @@ void CCUtil::main_setup(const char *argv0, const char *basename) {
+         datadir += "/tessdata";
+       }
+     }
++    */
+ #endif /* _WIN32 */
+ #if defined(TESSDATA_PREFIX)
+   } else {
+diff --git a/src/ccutil/params.cpp b/src/ccutil/params.cpp
+index 00bf2563..486c5ce0 100644
+--- a/src/ccutil/params.cpp
++++ b/src/ccutil/params.cpp
+@@ -82,7 +82,8 @@ bool ParamUtils::ReadParamsFromFp(SetParamConstraint constraint, TFile *fp,
+ 
+       if (!foundit) {
+         anyerr = true;         // had an error
+-        tprintf("Warning: Parameter not found: %s\n", line);
++        /* willus mod */
++        tprintf("Tesseract warning: Parameter %s not found in file %s.\n",line,fp->tfile_filename);
+       }
+     }
+   }
+diff --git a/src/ccutil/serialis.cpp b/src/ccutil/serialis.cpp
+index 7def011f..6107a494 100644
+--- a/src/ccutil/serialis.cpp
++++ b/src/ccutil/serialis.cpp
+@@ -201,6 +201,9 @@ bool TFile::Open(const STRING& filename, FileReader reader) {
+   offset_ = 0;
+   is_writing_ = false;
+   swap_ = false;
++  /* willus mod */
++  strncpy(tfile_filename,filename.string(),511);
++  tfile_filename[511]='\0';
+   if (reader == nullptr)
+     return LoadDataFromFile(filename, data_);
+   else
+diff --git a/src/ccutil/serialis.h b/src/ccutil/serialis.h
+index 095b9227..4cc8251e 100644
+--- a/src/ccutil/serialis.h
++++ b/src/ccutil/serialis.h
+@@ -77,6 +77,8 @@ class TFile {
+  public:
+   TFile();
+   ~TFile();
++  /* willus mod */
++  char tfile_filename[512];
+ 
+   // All the Open methods load the whole file into memory for reading.
+   // Opens a file with a supplied reader, or nullptr to use the default.
+diff --git a/src/lstm/input.cpp b/src/lstm/input.cpp
+index 73b584b3..0b0b54c3 100644
+--- a/src/lstm/input.cpp
++++ b/src/lstm/input.cpp
+@@ -93,8 +93,11 @@ Pix* Input::PrepareLSTMInputs(const ImageData& image_data,
+     return nullptr;
+   }
+   if (width < min_width || height < min_width) {
++    /* willus mod -- no warning */
++    /*
+     tprintf("Image too small to scale!! (%dx%d vs min width of %d)\n", width,
+             height, min_width);
++    */
+     pixDestroy(&pix);
+     return nullptr;
+   }
+-- 
+2.22.0
+
diff --git a/nixpkgs/pkgs/applications/misc/kanboard/default.nix b/nixpkgs/pkgs/applications/misc/kanboard/default.nix
new file mode 100644
index 000000000000..e6193d435639
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/kanboard/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "kanboard";
+  version = "1.2.14";
+
+  src = fetchFromGitHub {
+    owner = "kanboard";
+    repo = "kanboard";
+    rev = "v${version}";
+    sha256 = "11bwajzidnyagdyip7i8rwni1f66acv0k4lybdm0mc4195anivjh";
+  };
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/share/kanboard
+    cp -rv . $out/share/kanboard
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Kanban project management software";
+    homepage = "https://kanboard.net";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fpletz lheckemann ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/kdbplus/default.nix b/nixpkgs/pkgs/applications/misc/kdbplus/default.nix
new file mode 100644
index 000000000000..4c4b461303fb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/kdbplus/default.nix
@@ -0,0 +1,75 @@
+{ stdenv, requireFile, unzip, rlwrap, bash, zlib }:
+
+assert (stdenv.hostPlatform.system == "i686-linux");
+
+let
+  libPath = stdenv.lib.makeLibraryPath
+    [ stdenv.cc.libc stdenv.cc.cc zlib ];
+in
+stdenv.mkDerivation rec {
+  pname = "kdbplus";
+  version = "3.6";
+
+  src = requireFile rec {
+    message = ''
+      Nix can't download kdb+ for you automatically. Go to
+      http://kx.com and download the free, 32-bit version for
+      Linux. Then run "nix-prefetch-url file://\$PWD/${name}" in
+      the directory where you saved it. Note you need version ${version}.
+    '';
+    name   = "linuxx86.zip";
+    sha256 = "0w6znd9warcqx28vf648n0vgmxyyy9kvsfpsfw37d1kp5finap4p";
+  };
+
+  dontStrip = true;
+  buildInputs = [ unzip ];
+
+  phases = "unpackPhase installPhase";
+  unpackPhase = "mkdir ${pname}-${version} && cd ${pname}-${version} && unzip -qq ${src}";
+  installPhase = ''
+    mkdir -p $out/bin $out/libexec
+
+    patchelf \
+      --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath ${libPath} \
+      ./q/l32/q
+    mv ./q/l32/q $out/libexec/q
+
+    # Shell script wrappers to make things more convenient...
+
+    cat > $out/bin/q-install <<- EOF
+    #!${bash}/bin/bash
+    if [ -f \$HOME/q/q.k ]; then
+      echo "kdb has already been unpacked in \$HOME. Skipping..."
+      exit 0
+    fi
+    echo -n "Unzipping ${src} into \$HOME... "
+    cd \$HOME && ${unzip}/bin/unzip -qq ${src}
+    echo "Done"
+    EOF
+
+    cat > $out/bin/q <<- EOF
+    #!${bash}/bin/bash
+    if [ ! -f \$HOME/q/q.k ]; then
+      echo "ERROR: You need to unzip the Q sources into \$HOME before running q."
+      echo
+      echo "Try:"
+      echo "  cd \$HOME && unzip ${src}"
+      echo "(or run q-install)"
+      exit 1
+    fi
+
+    exec ${rlwrap}/bin/rlwrap $out/libexec/q \$@
+    EOF
+
+    chmod +x $out/bin/q $out/bin/q-install
+  '';
+
+  meta = {
+    description = "Analytics and time-series database";
+    homepage    = "http://www.kx.com/";
+    license     = stdenv.lib.licenses.unfree;
+    platforms   = [ "i686-linux" ];
+    maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/kdeconnect/default.nix b/nixpkgs/pkgs/applications/misc/kdeconnect/default.nix
new file mode 100644
index 000000000000..c3d2feb2fed7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/kdeconnect/default.nix
@@ -0,0 +1,51 @@
+{ mkDerivation
+, lib
+, fetchurl
+, extra-cmake-modules
+, kcmutils
+, kconfigwidgets
+, kdbusaddons
+, kdoctools
+, kiconthemes
+, ki18n
+, knotifications
+, qca-qt5
+, libfakekey
+, libXtst
+, qtx11extras
+, sshfs
+, makeWrapper
+, kwayland
+, kio
+}:
+
+mkDerivation rec {
+  pname = "kdeconnect";
+  version = "1.3.5";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/${pname}/${version}/${pname}-kde-${version}.tar.xz";
+    sha256 = "02lr3xx5s2mgddac4n3lkgr7ppf1z5m6ajs90rjix0vs8a271kp5";
+  };
+
+  buildInputs = [
+    libfakekey libXtst
+    ki18n kiconthemes kcmutils kconfigwidgets kdbusaddons knotifications
+    qca-qt5 qtx11extras makeWrapper kwayland kio
+  ];
+
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+
+  postInstall = ''
+    wrapProgram $out/libexec/kdeconnectd --prefix PATH : ${lib.makeBinPath [ sshfs ]}
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "KDE Connect provides several features to integrate your phone and your computer";
+    homepage    = "https://community.kde.org/KDEConnect";
+    license     = with licenses; [ gpl2 ];
+    maintainers = with maintainers; [ fridh ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/keepass-plugins/keeagent/default.nix b/nixpkgs/pkgs/applications/misc/keepass-plugins/keeagent/default.nix
new file mode 100644
index 000000000000..85749af0a561
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepass-plugins/keeagent/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildEnv, fetchzip, mono }:
+
+let
+  version = "0.12.0";
+  drv = stdenv.mkDerivation {
+    pname = "keeagent";
+    inherit version;
+
+    src = fetchzip {
+      url = "https://lechnology.com/wp-content/uploads/2020/05/KeeAgent_v0.12.0.zip";
+      sha256 = "0fcfbj3yikiv3dmp69236h9r3c416amdq849kn131w1129gb68xd";
+      stripRoot = false;
+    };
+
+    meta = {
+      description = "KeePass plugin to allow other programs to access SSH keys stored in a KeePass database for authentication";
+      homepage    = "http://lechnology.com/software/keeagent";
+      platforms   = with stdenv.lib.platforms; linux;
+      license     = stdenv.lib.licenses.gpl2;
+      maintainers = [ ];
+    };
+
+    pluginFilename = "KeeAgent.plgx";
+
+    installPhase = ''
+      mkdir -p $out/lib/dotnet/keepass/
+      cp $pluginFilename $out/lib/dotnet/keepass/$pluginFilename
+    '';
+  };
+in
+  # Mono is required to compile plugin at runtime, after loading.
+  buildEnv { name = drv.name; paths = [ mono drv ]; }
diff --git a/nixpkgs/pkgs/applications/misc/keepass-plugins/keepasshttp/default.nix b/nixpkgs/pkgs/applications/misc/keepass-plugins/keepasshttp/default.nix
new file mode 100644
index 000000000000..f9dbf14624f7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepass-plugins/keepasshttp/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, buildEnv, fetchFromGitHub, mono }:
+
+let
+  version = "1.8.4.2";
+  drv = stdenv.mkDerivation {
+    pname = "keepasshttp";
+    inherit version;
+    src = fetchFromGitHub {
+      owner = "pfn";
+      repo = "keepasshttp";
+      #rev = "${version}";
+      # for 1.8.4.2 the tag is at the wrong commit (they fixed stuff
+      # afterwards and didn't move the tag), hence reference by commitid
+      rev = "c2c4eb5388a02169400cba7a67be325caabdcc37";
+      sha256 = "0bkzxggbqx7sql3sp46bqham6r457in0vrgh3ai3lw2jrw79pwmh";
+    };
+
+    meta = {
+      description = "KeePass plugin to expose password entries securely (256bit AES/CBC) over HTTP";
+      homepage    = "https://github.com/pfn/keepasshttp";
+      platforms   = with stdenv.lib.platforms; linux;
+      license     = stdenv.lib.licenses.gpl3;
+    };
+
+    pluginFilename = "KeePassHttp.plgx";
+
+    installPhase = ''
+      mkdir -p $out/lib/dotnet/keepass/
+      cp $pluginFilename $out/lib/dotnet/keepass/$pluginFilename
+    '';
+  };
+in
+  # Mono is required to compile plugin at runtime, after loading.
+  buildEnv { name = drv.name; paths = [ mono drv ]; }
diff --git a/nixpkgs/pkgs/applications/misc/keepass-plugins/keepassrpc/default.nix b/nixpkgs/pkgs/applications/misc/keepass-plugins/keepassrpc/default.nix
new file mode 100644
index 000000000000..3d41c45f6dc5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepass-plugins/keepassrpc/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, buildEnv, fetchurl, mono }:
+
+let
+  version = "1.8.0";
+  drv = stdenv.mkDerivation {
+    pname = "keepassrpc";
+    inherit version;
+    src = fetchurl {
+      url    = "https://github.com/kee-org/keepassrpc/releases/download/v${version}/KeePassRPC.plgx";
+      sha256 = "1dclfpia559cqf78qw29zz235h1df5md4kgjv3bbi8y41wwmx7cd";
+    };
+
+    meta = with stdenv.lib; {
+      description = "The KeePassRPC plugin that needs to be installed inside KeePass in order for Kee to be able to connect your browser to your passwords";
+      homepage    = "https://github.com/kee-org/keepassrpc";
+      platforms   = [ "x86_64-linux" ];
+      license     = licenses.gpl2;
+      maintainers = with maintainers; [ mjanczyk svsdep mgregoire ];
+    };
+
+    pluginFilename = "KeePassRPC.plgx";
+
+    unpackCmd = ''
+      mkdir deps/
+      cp -p $src deps/$pluginFilename
+    '';
+    sourceRoot = "deps";
+
+    installPhase = ''
+      mkdir -p $out/lib/dotnet/keepass/
+      cp $pluginFilename $out/lib/dotnet/keepass/$pluginFilename
+    '';
+  };
+in
+  # Mono is required to compile plugin at runtime, after loading.
+  buildEnv { name = drv.name; paths = [ mono drv ]; }
diff --git a/nixpkgs/pkgs/applications/misc/keepass-plugins/otpkeyprov/default.nix b/nixpkgs/pkgs/applications/misc/keepass-plugins/otpkeyprov/default.nix
new file mode 100644
index 000000000000..e2b26eaee901
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepass-plugins/otpkeyprov/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildEnv, fetchzip, mono }:
+
+let
+  version = "2.6";
+  drv = stdenv.mkDerivation {
+    pname = "otpkeyprov";
+    inherit version;
+
+    src = fetchzip {
+      url = "https://keepass.info/extensions/v2/otpkeyprov/OtpKeyProv-${version}.zip";
+      sha256 = "1p60k55v2sxnv1varmp0dgbsi2rhjg9kj19cf54mkc87nss5h1ki";
+      stripRoot = false;
+    };
+
+    meta = {
+      description = "OtpKeyProv is a key provider based on one-time passwords";
+      homepage    = "https://keepass.info/plugins.html#otpkeyprov";
+      platforms   = with stdenv.lib.platforms; linux;
+      license     = stdenv.lib.licenses.gpl2;
+      maintainers = [ stdenv.lib.maintainers.ente ];
+    };
+
+    pluginFilename = "OtpKeyProv.plgx";
+
+    installPhase = ''
+      mkdir -p $out/lib/dotnet/keepass/
+      cp $pluginFilename $out/lib/dotnet/keepass/$pluginFilename
+    '';
+  };
+in
+  # Mono is required to compile plugin at runtime, after loading.
+  buildEnv { name = drv.name; paths = [ mono drv ]; }
diff --git a/nixpkgs/pkgs/applications/misc/keepass/default.nix b/nixpkgs/pkgs/applications/misc/keepass/default.nix
new file mode 100644
index 000000000000..3a1393913ef6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepass/default.nix
@@ -0,0 +1,118 @@
+{ stdenv, lib, fetchurl, buildDotnetPackage, substituteAll, makeWrapper, makeDesktopItem,
+  unzip, icoutils, gtk2, xorg, xdotool, xsel, coreutils, unixtools, glib, plugins ? [] }:
+
+with builtins; buildDotnetPackage rec {
+  baseName = "keepass";
+  version = "2.45";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/keepass/KeePass-${version}-Source.zip";
+    sha256 = "07wyp3k2kiprr47mc4vxb7vmh7g5kshcqw0gq3qr87gi78c9i66m";
+  };
+
+  sourceRoot = ".";
+
+  buildInputs = [ unzip makeWrapper icoutils ];
+
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      xsel = "${xsel}/bin/xsel";
+      xprop = "${xorg.xprop}/bin/xprop";
+      xdotool = "${xdotool}/bin/xdotool";
+      uname = "${coreutils}/bin/uname";
+      whereis = "${unixtools.whereis}/bin/whereis";
+      gsettings = "${glib}/bin/gsettings";
+    })
+  ];
+
+  # KeePass looks for plugins in under directory in which KeePass.exe is
+  # located. It follows symlinks where looking for that directory, so
+  # buildEnv is not enough to bring KeePass and plugins together.
+  #
+  # This derivation patches KeePass to search for plugins in specified
+  # plugin derivations in the Nix store and nowhere else.
+  pluginLoadPathsPatch =
+    let outputLc = toString (add 7 (length plugins));
+        patchTemplate = readFile ./keepass-plugins.patch;
+        loadTemplate  = readFile ./keepass-plugins-load.patch;
+        loads =
+          lib.concatStrings
+            (map
+              (p: replaceStrings ["$PATH$"] [ (unsafeDiscardStringContext (toString p)) ] loadTemplate)
+              plugins);
+    in replaceStrings ["$OUTPUT_LC$" "$DO_LOADS$"] [outputLc loads] patchTemplate;
+
+  passAsFile = [ "pluginLoadPathsPatch" ];
+  postPatch = ''
+    sed -i 's/\r*$//' KeePass/Forms/MainForm.cs
+    patch -p1 <$pluginLoadPathsPatchPath
+  '';
+
+  preConfigure = ''
+    rm -rvf Build/*
+    find . -name "*.sln" -print -exec sed -i 's/Format Version 10.00/Format Version 11.00/g' {} \;
+    find . -name "*.csproj" -print -exec sed -i '
+      s#ToolsVersion="3.5"#ToolsVersion="4.0"#g
+      s#<TargetFrameworkVersion>.*</TargetFrameworkVersion>##g
+      s#<PropertyGroup>#<PropertyGroup><TargetFrameworkVersion>v4.5</TargetFrameworkVersion>#g
+      s#<SignAssembly>.*$#<SignAssembly>false</SignAssembly>#g
+      s#<PostBuildEvent>.*sgen.exe.*$##
+    ' {} \;
+  '';
+
+  desktopItem = makeDesktopItem {
+    name = "keepass";
+    exec = "keepass";
+    comment = "Password manager";
+    icon = "keepass";
+    desktopName = "Keepass";
+    genericName = "Password manager";
+    categories = "Application;Utility;";
+    mimeType = stdenv.lib.concatStringsSep ";" [
+      "application/x-keepass2"
+      ""
+    ];
+  };
+
+  outputFiles = [ "Build/KeePass/Release/*" "Build/KeePassLib/Release/*" ];
+  dllFiles = [ "KeePassLib.dll" ];
+  exeFiles = [ "KeePass.exe" ];
+
+  # plgx plugin like keefox requires mono to compile at runtime
+  # after loading. It is brought into plugins bin/ directory using
+  # buildEnv in the plugin derivation. Wrapper below makes sure it
+  # is found and does not pollute output path.
+  binPaths = lib.concatStrings (lib.intersperse ":" (map (x: x + "/bin") plugins));
+
+  dynlibPath = stdenv.lib.makeLibraryPath [ gtk2 ];
+
+  postInstall = 
+  let
+    extractFDeskIcons = ./extractWinRscIconsToStdFreeDesktopDir.sh;
+  in
+  ''
+    mkdir -p "$out/share/applications"
+    cp ${desktopItem}/share/applications/* $out/share/applications
+    wrapProgram $out/bin/keepass \
+      --prefix PATH : "$binPaths" \
+      --prefix LD_LIBRARY_PATH : "$dynlibPath"
+
+    ${extractFDeskIcons} \
+      "./Translation/TrlUtil/Resources/KeePass.ico" \
+      '[^\.]+_[0-9]+_([0-9]+x[0-9]+)x[0-9]+\.png' \
+      '\1' \
+      '([^\.]+).+' \
+      'keepass' \
+      "$out" \
+      "./tmp"
+  '';
+
+  meta = {
+    description = "GUI password manager with strong cryptography";
+    homepage = "http://www.keepass.info/";
+    maintainers = with stdenv.lib.maintainers; [ amorsillo obadz joncojonathan jraygauthier ];
+    platforms = with stdenv.lib.platforms; all;
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/keepass/extractWinRscIconsToStdFreeDesktopDir.sh b/nixpkgs/pkgs/applications/misc/keepass/extractWinRscIconsToStdFreeDesktopDir.sh
new file mode 100755
index 000000000000..04485b146a04
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepass/extractWinRscIconsToStdFreeDesktopDir.sh
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+# The file from which to extract *.ico files.
+#rscFile="./KeePass.exe"
+rscFile=$1
+
+# A regexp that can extract the image size from the file name.
+# sizeRegex='[^\.]+\.exe_[0-9]+_[0-9]+_[0-9]+_[0-9]+_([0-9]+x[0-9]+)x[0-9]+\.png'
+sizeRegex=$2
+
+# sizeReplaceExp='\1'
+sizeReplaceExp=$3
+
+# A regexp that can extract the name of the target image from the file name.
+# nameRegex='([^\.]+)\.exe.+'
+nameRegex=$4
+
+# nameReplaceExp='\1'
+nameReplaceExp=$5
+
+# out=./myOut
+out=$6
+
+# An optional temp dir. TODO: Generate it randomly by default instead.
+tmp=./tmp
+if [ "" != "$4" ]; then
+    tmp=$7
+fi
+
+
+
+rm -rf $tmp/png $tmp/ico
+mkdir -p $tmp/png $tmp/ico
+
+# Extract the ressource file's extension.
+rscFileExt=`echo "$rscFile" | sed -re 's/.+\.(.+)$/\1/'`
+
+# Debug ressource file extension.
+echo "rscFileExt=$rscFileExt"
+
+if [ "ico" = "$rscFileExt" ]; then
+    cp -p $rscFile $tmp/ico
+else
+    wrestool -x --output=$tmp/ico -t14 $rscFile
+fi
+    
+icotool --icon -x --palette-size=0 -o $tmp/png $tmp/ico/*.ico
+
+mkdir -p $out
+
+for i in $tmp/png/*.png; do
+  fn=`basename "$i"`
+  size=$(echo $fn | sed -re 's/'${sizeRegex}'/'${sizeReplaceExp}'/')
+  name=$(echo $fn | sed -re 's/'${nameRegex}'/'${nameReplaceExp}'/')
+  targetDir=$out/share/icons/hicolor/$size/apps
+  targetFile=$targetDir/$name.png
+  mkdir -p $targetDir
+  mv $i $targetFile
+done
+
+rm -rf $tmp/png $tmp/ico
diff --git a/nixpkgs/pkgs/applications/misc/keepass/fix-paths.patch b/nixpkgs/pkgs/applications/misc/keepass/fix-paths.patch
new file mode 100644
index 000000000000..5ff36a21c002
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepass/fix-paths.patch
@@ -0,0 +1,144 @@
+From 830d0db80f2fce09e12c117f8338b8e4b05866ff Mon Sep 17 00:00:00 2001
+From: Pascal Winkelmann <pascal@wnklmnn.de>
+Date: Tue, 19 May 2020 10:28:31 +0200
+Subject: [PATCH] fixpaths
+
+---
+ KeePass/Native/NativeMethods.Unix.cs  |  2 +-
+ KeePass/UI/UISystemFonts.cs           |  2 +-
+ KeePass/Util/AppLocator.cs            |  2 +-
+ KeePass/Util/ClipboardUtil.Unix.cs    | 14 +++++++-------
+ KeePassLib/Native/ClipboardU.cs       |  2 +-
+ KeePassLib/Native/NativeLib.cs        |  2 +-
+ KeePassLib/Utility/MonoWorkarounds.cs |  4 ++--
+ 7 files changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/KeePass/Native/NativeMethods.Unix.cs b/KeePass/Native/NativeMethods.Unix.cs
+index 4c47258..79cfdb2 100644
+--- a/KeePass/Native/NativeMethods.Unix.cs
++++ b/KeePass/Native/NativeMethods.Unix.cs
+@@ -130,7 +130,7 @@ namespace KeePass.Native
+ 			try

+ 			{

+ 				Application.DoEvents(); // E.g. for clipboard updates

+-				string strOutput = NativeLib.RunConsoleApp("xdotool", strParams);

++				string strOutput = NativeLib.RunConsoleApp("@xdotool@", strParams);

+ 				Application.DoEvents(); // E.g. for clipboard updates

+ 				return (strOutput ?? string.Empty);

+ 			}

+diff --git a/KeePass/UI/UISystemFonts.cs b/KeePass/UI/UISystemFonts.cs
+index 08d6134..2bfa4a2 100644
+--- a/KeePass/UI/UISystemFonts.cs
++++ b/KeePass/UI/UISystemFonts.cs
+@@ -188,7 +188,7 @@ namespace KeePass.UI
+ 

+ 		private static void UbuntuLoadFonts()

+ 		{

+-			string strDef = NativeLib.RunConsoleApp("gsettings",

++			string strDef = NativeLib.RunConsoleApp("@gsettings@",

+ 				"get org.gnome.desktop.interface font-name");

+ 			if(strDef == null) return;

+ 

+diff --git a/KeePass/Util/AppLocator.cs b/KeePass/Util/AppLocator.cs
+index af02803..8a32c9d 100644
+--- a/KeePass/Util/AppLocator.cs
++++ b/KeePass/Util/AppLocator.cs
+@@ -429,7 +429,7 @@ namespace KeePass.Util
+ 			if(NativeLib.GetPlatformID() == PlatformID.MacOSX)

+ 				strArgPrefix = string.Empty; // FR 3535696

+ 

+-			string str = NativeLib.RunConsoleApp("whereis", strArgPrefix + strApp);

++			string str = NativeLib.RunConsoleApp("@whereis@", strArgPrefix + strApp);

+ 			if(str == null) return null;

+ 

+ 			str = str.Trim();

+diff --git a/KeePass/Util/ClipboardUtil.Unix.cs b/KeePass/Util/ClipboardUtil.Unix.cs
+index ab49ee2..7f6c50f 100644
+--- a/KeePass/Util/ClipboardUtil.Unix.cs
++++ b/KeePass/Util/ClipboardUtil.Unix.cs
+@@ -62,7 +62,7 @@ namespace KeePass.Util
+ 			//	"-out -selection clipboard");

+ 			// if(str != null) return str;

+ 

+-			string str = NativeLib.RunConsoleApp("xsel",

++			string str = NativeLib.RunConsoleApp("@xsel@",

+ 				"--output --clipboard", null, XSelFlags);

+ 			if(str != null) return str;

+ 

+@@ -83,10 +83,10 @@ namespace KeePass.Util
+ 			if(string.IsNullOrEmpty(str))

+ 			{

+ 				// xsel with an empty input can hang, thus use --clear

+-				if(NativeLib.RunConsoleApp("xsel", "--clear --primary",

++				if(NativeLib.RunConsoleApp("@xsel@", "--clear --primary",

+ 					null, XSelFlags) != null)

+ 				{

+-					NativeLib.RunConsoleApp("xsel", "--clear --clipboard",

++					NativeLib.RunConsoleApp("@xsel@", "--clear --clipboard",

+ 						null, XSelFlags);

+ 					return;

+ 				}

+@@ -97,10 +97,10 @@ namespace KeePass.Util
+ 			}

+ 

+ 			// xsel does not support --primary and --clipboard together

+-			if(NativeLib.RunConsoleApp("xsel", "--input --primary",

++			if(NativeLib.RunConsoleApp("@xsel@", "--input --primary",

+ 				str, XSelFlags) != null)

+ 			{

+-				NativeLib.RunConsoleApp("xsel", "--input --clipboard",

++				NativeLib.RunConsoleApp("@xsel@", "--input --clipboard",

+ 					str, XSelFlags);

+ 				return;

+ 			}

+diff --git a/KeePassLib/Native/ClipboardU.cs b/KeePassLib/Native/ClipboardU.cs
+index 291c51d..3c76380 100644
+--- a/KeePassLib/Native/ClipboardU.cs
++++ b/KeePassLib/Native/ClipboardU.cs
+@@ -27,7 +27,7 @@ namespace KeePassLib.Native
+ {

+ 	internal static class ClipboardU

+ 	{

+-		internal const string XSel = "xsel";

++		internal const string XSel = "@xsel@";

+ 		private const string XSelV = "--version";

+ 		private const string XSelR = "--output --clipboard";

+ 		private const string XSelC = "--clear --clipboard";

+diff --git a/KeePassLib/Native/NativeLib.cs b/KeePassLib/Native/NativeLib.cs
+index 2d227a3..243f4ee 100644
+--- a/KeePassLib/Native/NativeLib.cs
++++ b/KeePassLib/Native/NativeLib.cs
+@@ -145,7 +145,7 @@ namespace KeePassLib.Native
+ 			// Mono returns PlatformID.Unix on Mac OS X, workaround this

+ 			if(m_platID.Value == PlatformID.Unix)

+ 			{

+-				if((RunConsoleApp("uname", null) ?? string.Empty).Trim().Equals(

++				if((RunConsoleApp("@uname@", null) ?? string.Empty).Trim().Equals(

+ 					"Darwin", StrUtil.CaseIgnoreCmp))

+ 					m_platID = PlatformID.MacOSX;

+ 			}

+diff --git a/KeePassLib/Utility/MonoWorkarounds.cs b/KeePassLib/Utility/MonoWorkarounds.cs
+index e20bb3a..4fd875b 100644
+--- a/KeePassLib/Utility/MonoWorkarounds.cs
++++ b/KeePassLib/Utility/MonoWorkarounds.cs
+@@ -41,7 +41,7 @@ namespace KeePassLib.Utility
+ {

+ 	public static class MonoWorkarounds

+ 	{

+-		private const string AppXDoTool = "xdotool";

++		private const string AppXDoTool = "@xdotool@";

+ 

+ 		private static Dictionary<uint, bool> g_dForceReq = new Dictionary<uint, bool>();

+ 		private static Thread g_thFixClip = null;

+@@ -335,7 +335,7 @@ namespace KeePassLib.Utility
+ 				// }

+ 				// else { Debug.Assert(false); }

+ 

+-				string strWmClass = (NativeLib.RunConsoleApp("xprop",

++				string strWmClass = (NativeLib.RunConsoleApp("@xprop@",

+ 					"-id " + strHandle + " WM_CLASS") ?? string.Empty);

+ 

+ 				if(strWmClass.IndexOf("\"" + PwDefs.ResClass + "\"",

+-- 
+2.25.4
+
diff --git a/nixpkgs/pkgs/applications/misc/keepass/keepass-plugins-load.patch b/nixpkgs/pkgs/applications/misc/keepass/keepass-plugins-load.patch
new file mode 100644
index 000000000000..e6a6bff8dad3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepass/keepass-plugins-load.patch
@@ -0,0 +1 @@
++			m_pluginManager.LoadAllPlugins("$PATH$/lib/dotnet/keepass", System.IO.SearchOption.TopDirectoryOnly, new string[] {});
diff --git a/nixpkgs/pkgs/applications/misc/keepass/keepass-plugins.patch b/nixpkgs/pkgs/applications/misc/keepass/keepass-plugins.patch
new file mode 100644
index 000000000000..891be1ffa314
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepass/keepass-plugins.patch
@@ -0,0 +1,25 @@
+From 4cb0b18f5326a07927453897180289a4b254ac4f Mon Sep 17 00:00:00 2001
+From: Pascal Winkelmann <pascal@wnklmnn.de>
+Date: Tue, 19 May 2020 10:43:49 +0200
+Subject: [PATCH] loadplugin
+
+---
+ KeePass/Forms/MainForm.cs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/KeePass/Forms/MainForm.cs b/KeePass/Forms/MainForm.cs
+index 347eaf5..b92e1e2 100644
+--- a/KeePass/Forms/MainForm.cs
++++ b/KeePass/Forms/MainForm.cs
+@@ -440,7 +440,$OUTPUT_LC$ @@ namespace KeePass.Forms
+ 				ToolStripItemCollection tsicT = m_ctxTray.Items;
+ 				ToolStripItem tsiPrevT = m_ctxTrayOptions;
+ 
+-				m_pluginManager.LoadAllPlugins();
+$DO_LOADS$+
+ 
+ 				m_pluginManager.AddMenuItems(PluginMenuType.Main, tsicM, tsiPrevM);
+ 				m_pluginManager.AddMenuItems(PluginMenuType.Group, tsicGM, tsiPrevGM);
+-- 
+2.25.4
+
diff --git a/nixpkgs/pkgs/applications/misc/keepassx/2.0.nix b/nixpkgs/pkgs/applications/misc/keepassx/2.0.nix
new file mode 100644
index 000000000000..fdd11db509fc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepassx/2.0.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, cmake, libgcrypt, qt4, xorg, ... }:
+
+stdenv.mkDerivation rec {
+  pname = "keepassx2";
+  version = "2.0.3";
+
+  src = fetchurl {
+    url = "https://www.keepassx.org/releases/${version}/keepassx-${version}.tar.gz";
+    sha256 = "1ia7cqx9ias38mnffsl7da7g1f66bcbjsi23k49sln0c6spb9zr3";
+  };
+
+  buildInputs = [ cmake libgcrypt qt4 xorg.libXtst ];
+
+  meta = {
+    description = "Qt password manager compatible with its Win32 and Pocket PC versions";
+    homepage = "https://www.keepassx.org/";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [ qknight ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/keepassx/community.nix b/nixpkgs/pkgs/applications/misc/keepassx/community.nix
new file mode 100644
index 000000000000..469b4cf5ea6d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepassx/community.nix
@@ -0,0 +1,134 @@
+{ stdenv
+, fetchFromGitHub
+, fetchpatch
+, cmake
+, makeWrapper
+, qttools
+, darwin
+
+, curl
+, glibcLocales
+, libXi
+, libXtst
+, libargon2
+, libgcrypt
+, libgpgerror
+, libsodium
+, libyubikey
+, pkg-config
+, qrencode
+, qtbase
+, qtmacextras
+, qtsvg
+, qtx11extras
+, quazip
+, wrapQtAppsHook
+, yubikey-personalization
+, zlib
+
+, withKeePassBrowser ? true
+, withKeePassKeeShare ? true
+, withKeePassKeeShareSecure ? true
+, withKeePassSSHAgent ? true
+, withKeePassNetworking ? false
+, withKeePassTouchID ? true
+, withKeePassFDOSecrets ? true
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "keepassxc";
+  version = "2.5.4";
+
+  src = fetchFromGitHub {
+    owner = "keepassxreboot";
+    repo = "keepassxc";
+    rev = version;
+    sha256 = "1xih9q1pxszalc0l29fmjxwn1vrrrrbnhc8gmi8brw5sclhbs6bh";
+  };
+
+  NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.cc.isClang [
+    "-Wno-old-style-cast"
+    "-Wno-error"
+    "-D__BIG_ENDIAN__=${if stdenv.isBigEndian then "1" else "0"}"
+  ];
+
+  postPatch = stdenv.lib.optionalString stdenv.isDarwin ''
+    substituteInPlace CMakeLists.txt \
+      --replace "/usr/local/bin" "../bin" \
+      --replace "/usr/local/share/man" "../share/man"
+  '';
+  NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isDarwin "-rpath ${libargon2}/lib";
+
+  patches = [
+    ./darwin.patch
+    # use wl-copy on Wayland - can be dropped with the next version update
+    (fetchpatch {
+      url = "https://github.com/keepassxreboot/keepassxc/commit/6128e5d58294f26411160f44da91087ebe7f4b07.patch";
+      sha256 = "16q0h7kijqjdbskmk4ar6p3g8vcxr0bq1zrlq2bk16pk10nv4bh1";
+    })
+  ];
+
+  cmakeFlags = [
+    "-DKEEPASSXC_BUILD_TYPE=Release"
+    "-DWITH_GUI_TESTS=ON"
+    "-DWITH_XC_AUTOTYPE=ON"
+    "-DWITH_XC_UPDATECHECK=OFF"
+    "-DWITH_XC_YUBIKEY=ON"
+  ]
+  ++ (optional withKeePassBrowser "-DWITH_XC_BROWSER=ON")
+  ++ (optional withKeePassKeeShare "-DWITH_XC_KEESHARE=ON")
+  ++ (optional withKeePassKeeShareSecure "-DWITH_XC_KEESHARE_SECURE=ON")
+  ++ (optional withKeePassNetworking "-DWITH_XC_NETWORKING=ON")
+  ++ (optional (withKeePassTouchID && stdenv.isDarwin) "-DWITH_XC_TOUCHID=ON")
+  ++ (optional (withKeePassFDOSecrets && stdenv.isLinux) "-DWITH_XC_FDOSECRETS=ON")
+  ++ (optional withKeePassSSHAgent "-DWITH_XC_SSHAGENT=ON");
+
+  doCheck = true;
+  checkPhase = ''
+    export LC_ALL="en_US.UTF-8"
+    export QT_QPA_PLATFORM=offscreen
+    export QT_PLUGIN_PATH="${qtbase.bin}/${qtbase.qtPluginPrefix}"
+    # testcli and testgui are flaky - skip them both
+    make test ARGS+="-E 'testcli|testgui' --output-on-failure"
+  '';
+
+  nativeBuildInputs = [ cmake wrapQtAppsHook qttools ];
+
+  buildInputs = [
+    curl
+    glibcLocales
+    libXi
+    libXtst
+    libargon2
+    libgcrypt
+    libgpgerror
+    libsodium
+    libyubikey
+    pkg-config
+    qrencode
+    qtbase
+    qtsvg
+    qtx11extras
+    yubikey-personalization
+    zlib
+  ]
+  ++ stdenv.lib.optional withKeePassKeeShareSecure quazip
+  ++ stdenv.lib.optional stdenv.isDarwin qtmacextras
+  ++ stdenv.lib.optional (stdenv.isDarwin && withKeePassTouchID) darwin.apple_sdk.frameworks.LocalAuthentication;
+
+  preFixup = optionalString stdenv.isDarwin ''
+    # Make it work without Qt in PATH.
+    wrapQtApp $out/Applications/KeePassXC.app/Contents/MacOS/KeePassXC
+  '';
+
+  meta = {
+    description = "Password manager to store your passwords safely and auto-type them into your everyday websites and applications";
+    longDescription = "A community fork of KeePassX, which is itself a port of KeePass Password Safe. The goal is to extend and improve KeePassX with new features and bugfixes to provide a feature-rich, fully cross-platform and modern open-source password manager. Accessible via native cross-platform GUI, CLI, and browser integration with the KeePassXC Browser Extension (https://github.com/keepassxreboot/keepassxc-browser).";
+    homepage = "https://keepassxc.org/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ jonafato turion ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/keepassx/darwin.patch b/nixpkgs/pkgs/applications/misc/keepassx/darwin.patch
new file mode 100644
index 000000000000..95ca5d4587fe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepassx/darwin.patch
@@ -0,0 +1,53 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 74b1a7ff..0a713a32 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -307,6 +307,7 @@ if(MINGW)
+     set(PLUGIN_INSTALL_DIR ".")
+     set(DATA_INSTALL_DIR "share")
+ elseif(APPLE AND WITH_APP_BUNDLE)
++    set(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/Applications")
+     set(BUNDLE_INSTALL_DIR "${PROGNAME}.app/Contents")
+     set(CMAKE_INSTALL_MANDIR "${PROGNAME}.app/Contents/Resources/man")
+     set(CLI_INSTALL_DIR "${PROGNAME}.app/Contents/MacOS")
+@@ -369,12 +370,6 @@ set(CMAKE_AUTORCC ON)
+ 
+ if(APPLE)
+     set(CMAKE_MACOSX_RPATH TRUE)
+-    find_program(MACDEPLOYQT_EXE macdeployqt HINTS ${Qt5_PREFIX}/bin ENV PATH)
+-    if(NOT MACDEPLOYQT_EXE)
+-        message(FATAL_ERROR "macdeployqt is required to build on macOS")
+-    else()
+-        message(STATUS "Using macdeployqt: ${MACDEPLOYQT_EXE}")
+-    endif()
+ elseif(MINGW)
+     find_program(WINDEPLOYQT_EXE windeployqt HINTS ${Qt5_PREFIX}/bin ENV PATH)
+     if(NOT WINDEPLOYQT_EXE)
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index f142f368..0742512d 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -351,11 +351,6 @@ if(APPLE AND WITH_APP_BUNDLE)
+     set(CPACK_PACKAGE_FILE_NAME "${PROGNAME}-${KEEPASSXC_VERSION}")
+     include(CPack)
+ 
+-    add_custom_command(TARGET ${PROGNAME}
+-            POST_BUILD
+-            COMMAND ${MACDEPLOYQT_EXE} ${PROGNAME}.app
+-            WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src
+-            COMMENT "Deploying app bundle")
+ endif()
+ 
+ install(TARGETS ${PROGNAME}
+diff --git a/src/autotype/mac/CMakeLists.txt b/src/autotype/mac/CMakeLists.txt
+index 7427450a..a0a58d71 100644
+--- a/src/autotype/mac/CMakeLists.txt
++++ b/src/autotype/mac/CMakeLists.txt
+@@ -8,7 +8,6 @@ if(WITH_APP_BUNDLE)
+     add_custom_command(TARGET keepassx-autotype-cocoa
+             POST_BUILD
+             COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/libkeepassx-autotype-cocoa.so ${PLUGIN_INSTALL_DIR}
+-            COMMAND ${MACDEPLOYQT_EXE} ${PROGNAME}.app -executable=${PLUGIN_INSTALL_DIR}/libkeepassx-autotype-cocoa.so -no-plugins
+             WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src
+             COMMENT "Deploying autotype plugin")
+ else()
diff --git a/nixpkgs/pkgs/applications/misc/keepassx/default.nix b/nixpkgs/pkgs/applications/misc/keepassx/default.nix
new file mode 100644
index 000000000000..d0980001c8f6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepassx/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, bzip2, qt4, qmake4Hook, libX11, xorgproto, libXtst }:
+
+stdenv.mkDerivation rec {
+  pname = "keepassx";
+  version = "0.4.4";
+
+  src = fetchurl {
+    url = "https://www.keepassx.org/releases/${version}/${pname}-${version}.tar.gz";
+    sha256 = "1i5dq10x28mg7m4c0yacm32xfj4j7imir4ph8x9p0s2ym260c9ry";
+  };
+
+  patches = [ ./random.patch ];
+
+  buildInputs = [ bzip2 qt4 libX11 xorgproto libXtst ];
+
+  nativeBuildInputs = [ qmake4Hook ];
+
+  meta = {
+    description = "Qt password manager compatible with its Win32 and Pocket PC versions";
+    homepage = "https://www.keepassx.org/";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [ qknight ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/keepassx/random.patch b/nixpkgs/pkgs/applications/misc/keepassx/random.patch
new file mode 100644
index 000000000000..0a0b26f6e8c9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepassx/random.patch
@@ -0,0 +1,13 @@
+--- a/src/lib/random.cpp	2014-01-21 21:15:55.829312723 +0000
++++ b/src/lib/random.cpp	2014-01-21 21:16:36.752535839 +0000
+@@ -28,6 +28,10 @@
+ 	#include <wincrypt.h>
+ 	#include <QSysInfo>
+ #endif
++#ifndef Q_WS_WIN
++	#include <sys/types.h>
++	#include <unistd.h>
++#endif
+ 
+ #include <QCryptographicHash>
+ #include <QCursor>
diff --git a/nixpkgs/pkgs/applications/misc/khal/default.nix b/nixpkgs/pkgs/applications/misc/khal/default.nix
new file mode 100644
index 000000000000..323fc501c842
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/khal/default.nix
@@ -0,0 +1,76 @@
+{ stdenv, pkgs, python3, fetchpatch, glibcLocales }:
+
+with python3.pkgs; buildPythonApplication rec {
+  pname = "khal";
+  version = "0.10.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1r8bkgjwkh7i8ygvsv51h1cnax50sb183vafg66x5snxf3dgjl6l";
+  };
+
+  # Include a khal.desktop file via upstream commit.
+  # This patch should be removed when updating to the next version, probably.
+  patches = [
+    (fetchpatch {
+      name = "add-khal-dot-desktop.patch";
+      url = "https://github.com/pimutils/khal/commit/1f93d238fec7c934dd2f8e48f54925d22130e3aa.patch";
+      sha256 = "06skn3van7zd93348fc6axllx71ckkc7h2zljqlvwa339vca608c";
+    })
+    ./skip-broken-test.patch
+  ];
+
+  propagatedBuildInputs = [
+    atomicwrites
+    click
+    click-log
+    configobj
+    dateutil
+    icalendar
+    lxml
+    pkgs.vdirsyncer
+    pytz
+    pyxdg
+    requests_toolbelt
+    tzlocal
+    urwid
+    pkginfo
+    freezegun
+  ];
+  nativeBuildInputs = [ setuptools_scm sphinx sphinxcontrib_newsfeed ];
+  checkInputs = [ pytest glibcLocales ];
+  LC_ALL = "en_US.UTF-8";
+
+  postPatch = ''
+    sed -i \
+      -e "s/Invalid value for \"ics\"/Invalid value for \\\'ics\\\'/" \
+      -e "s/Invalid value for \"\[ICS\]\"/Invalid value for \\\'\[ICS\]\\\'/" \
+      tests/cli_test.py
+  '';
+
+  postInstall = ''
+    # zsh completion
+    install -D misc/__khal $out/share/zsh/site-functions/__khal
+
+    # man page
+    PATH="${python3.withPackages (ps: with ps; [ sphinx sphinxcontrib_newsfeed ])}/bin:$PATH" \
+    make -C doc man
+    install -Dm755 doc/build/man/khal.1 -t $out/share/man/man1
+
+    # desktop
+    install -Dm755 misc/khal.desktop -t $out/share/applications
+  '';
+
+  doCheck = !stdenv.isAarch64;
+
+  checkPhase = ''
+    py.test
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://lostpackets.de/khal/";
+    description = "CLI calendar application";
+    license = licenses.mit;
+    maintainers = with maintainers; [ gebner ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/khal/skip-broken-test.patch b/nixpkgs/pkgs/applications/misc/khal/skip-broken-test.patch
new file mode 100644
index 000000000000..c3c982547aef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/khal/skip-broken-test.patch
@@ -0,0 +1,21 @@
+diff --git a/tests/ui/test_editor.py b/tests/ui/test_editor.py
+index 27b7fa5..5978d72 100644
+--- a/tests/ui/test_editor.py
++++ b/tests/ui/test_editor.py
+@@ -1,5 +1,7 @@
+ import datetime as dt
+ 
++import pytest
++
+ import icalendar
+ from khal.ui.editor import RecurrenceEditor, StartEndEditor
+ 
+@@ -19,7 +21,7 @@ palette = {
+     'edit': 'blue',
+ }
+ 
+-
++@pytest.mark.skip(reason="Mocking breaks in this testcase")
+ def test_popup(monkeypatch):
+     """making sure the popup calendar gets callend with the right inital value
+ 
diff --git a/nixpkgs/pkgs/applications/misc/khard/default.nix b/nixpkgs/pkgs/applications/misc/khard/default.nix
new file mode 100644
index 000000000000..8646b9864d9e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/khard/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, glibcLocales, python3 }:
+
+python3.pkgs.buildPythonApplication rec {
+  version = "0.16.1";
+  pname = "khard";
+
+  src = python3.pkgs.fetchPypi {
+    inherit pname version;
+    sha256 = "0fg4qh5gzki5wg958wlpc8a2icnk74gzg33lqxjm755cfnjng7qd";
+  };
+
+  propagatedBuildInputs = with python3.pkgs; [
+    atomicwrites
+    configobj
+    vobject
+    ruamel_yaml
+    ruamel_base
+    unidecode
+  ];
+
+  postInstall = ''
+    install -D misc/zsh/_khard $out/share/zsh/site-functions/_khard
+  '';
+
+  meta = {
+    homepage = "https://github.com/scheibler/khard";
+    description = "Console carddav client";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = with stdenv.lib.maintainers; [ matthiasbeyer ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/kitty/default.nix b/nixpkgs/pkgs/applications/misc/kitty/default.nix
new file mode 100644
index 000000000000..80cf90ced16e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/kitty/default.nix
@@ -0,0 +1,131 @@
+{ stdenv, substituteAll, fetchFromGitHub, python3Packages, libunistring,
+  harfbuzz, fontconfig, pkgconfig, ncurses, imagemagick, xsel,
+  libstartup_notification, libGL, libX11, libXrandr, libXinerama, libXcursor,
+  libxkbcommon, libXi, libXext, wayland-protocols, wayland,
+  installShellFiles,
+  which, dbus,
+  Cocoa,
+  CoreGraphics,
+  Foundation,
+  IOKit,
+  Kernel,
+  OpenGL,
+  libcanberra,
+  libicns,
+  libpng,
+  python3,
+  zlib,
+}:
+
+with python3Packages;
+buildPythonApplication rec {
+  pname = "kitty";
+  version = "0.17.4";
+  format = "other";
+
+  src = fetchFromGitHub {
+    owner = "kovidgoyal";
+    repo = "kitty";
+    rev = "v${version}";
+    sha256 = "1rbyj84y8r6h7qd6w7cw58v2abspippignj458ihv2m26i4als2x";
+  };
+
+  buildInputs = [
+    harfbuzz
+    ncurses
+  ] ++ stdenv.lib.optionals stdenv.isDarwin [
+    Cocoa
+    CoreGraphics
+    Foundation
+    IOKit
+    Kernel
+    OpenGL
+    libpng
+    python3
+    zlib
+  ] ++ stdenv.lib.optionals stdenv.isLinux [
+    fontconfig libunistring libcanberra libX11
+    libXrandr libXinerama libXcursor libxkbcommon libXi libXext
+    wayland-protocols wayland dbus
+  ];
+
+  nativeBuildInputs = [
+    pkgconfig which sphinx ncurses
+  ] ++ stdenv.lib.optionals stdenv.isDarwin [
+    imagemagick
+    libicns  # For the png2icns tool.
+    installShellFiles
+  ];
+
+  propagatedBuildInputs = stdenv.lib.optional stdenv.isLinux libGL;
+
+  outputs = [ "out" "terminfo" ];
+
+  patches = [
+    ./fix-paths.patch
+  ] ++ stdenv.lib.optionals stdenv.isLinux [
+    (substituteAll {
+      src = ./library-paths.patch;
+      libstartup_notification = "${libstartup_notification}/lib/libstartup-notification-1.so";
+      libcanberra = "${libcanberra}/lib/libcanberra.so";
+      libEGL = "${stdenv.lib.getLib libGL}/lib/libEGL.so.1";
+    })
+  ] ++ stdenv.lib.optionals stdenv.isDarwin [
+    ./no-lto.patch
+  ];
+
+  # Causes build failure due to warning
+  hardeningDisable = stdenv.lib.optional stdenv.isDarwin "strictoverflow";
+
+  buildPhase = if stdenv.isDarwin then ''
+    ${python.interpreter} setup.py kitty.app --update-check-interval=0
+    make man
+  '' else ''
+    ${python.interpreter} setup.py linux-package --update-check-interval=0
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out
+    ${if stdenv.isDarwin then ''
+    mkdir "$out/bin"
+    ln -s ../Applications/kitty.app/Contents/MacOS/kitty "$out/bin/kitty"
+    mkdir "$out/Applications"
+    cp -r kitty.app "$out/Applications/kitty.app"
+
+    installManPage 'docs/_build/man/kitty.1'
+    '' else ''
+    cp -r linux-package/{bin,share,lib} $out
+    ''}
+    wrapProgram "$out/bin/kitty" --prefix PATH : "$out/bin:${stdenv.lib.makeBinPath [ imagemagick xsel ncurses.dev ]}"
+    runHook postInstall
+
+    # ZSH completions need to be invoked with `source`:
+    # https://github.com/kovidgoyal/kitty/blob/8ceb941051b89b7c50850778634f0b6137aa5e6e/docs/index.rst#zsh
+    mkdir -p "$out/share/"{bash-completion/completions,fish/vendor_completions.d,zsh/site-functions}
+    "$out/bin/kitty" + complete setup fish > "$out/share/fish/vendor_completions.d/kitty.fish"
+    "$out/bin/kitty" + complete setup bash > "$out/share/bash-completion/completions/kitty.bash"
+    "$out/bin/kitty" + complete setup zsh > "$out/share/zsh/site-functions/_kitty"
+  '';
+
+  postInstall = ''
+    terminfo_src=${if stdenv.isDarwin then
+      ''"$out/Applications/kitty.app/Contents/Resources/terminfo"''
+      else
+      "$out/share/terminfo"}
+
+    mkdir -p $terminfo/share
+    mv "$terminfo_src" $terminfo/share/terminfo
+
+    mkdir -p $out/nix-support
+    echo "$terminfo" >> $out/nix-support/propagated-user-env-packages
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/kovidgoyal/kitty";
+    description = "A modern, hackable, featureful, OpenGL based terminal emulator";
+    license = licenses.gpl3;
+    platforms = platforms.darwin ++ platforms.linux;
+    maintainers = with maintainers; [ tex rvolosatovs ma27 Luflosi ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/kitty/fix-paths.patch b/nixpkgs/pkgs/applications/misc/kitty/fix-paths.patch
new file mode 100644
index 000000000000..380f6d749146
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/kitty/fix-paths.patch
@@ -0,0 +1,16 @@
+--- a/docs/Makefile
++++ b/docs/Makefile
+@@ -3,7 +3,7 @@
+# Patching is needed here for the following reason:
+# * importing the `constants` package from Kitty has a side effect that it
+#   creates the user configuration directory. This package gets imported
+#   while sphinx scans the code for documentation strings.
+#
+ 
+ # You can set these variables from the command line.
+ SPHINXOPTS    = -j auto -T $(FAIL_WARN)
+-SPHINXBUILD   = sphinx-build
++SPHINXBUILD   = PYTHONPATH=${PYTHONPATH}:.. HOME=${TMPDIR}/kitty-build-home sphinx-build
+ SPHINXPROJ    = kitty
+ SOURCEDIR     = .
+ BUILDDIR      = _build
diff --git a/nixpkgs/pkgs/applications/misc/kitty/library-paths.patch b/nixpkgs/pkgs/applications/misc/kitty/library-paths.patch
new file mode 100644
index 000000000000..608dfb80d61f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/kitty/library-paths.patch
@@ -0,0 +1,38 @@
+--- a/glfw/egl_context.c
++++ b/glfw/egl_context.c
+@@ -314,7 +314,7 @@ bool _glfwInitEGL(void)
+ #elif defined(__CYGWIN__)
+         "libEGL-1.so",
+ #else
+-        "libEGL.so.1",
++        "@libEGL@",
+ #endif
+         NULL
+     };
+
+--- a/kitty/desktop.c
++++ b/kitty/desktop.c
+@@ -34,10 +34,7 @@ init_x11_startup_notification(PyObject UNUSED *self, PyObject *args) {
+         done = true;
+ 
+         const char* libnames[] = {
+-            "libstartup-notification-1.so",
+-            // some installs are missing the .so symlink, so try the full name
+-            "libstartup-notification-1.so.0",
+-            "libstartup-notification-1.so.0.0.0",
++            "@libstartup_notification@",
+             NULL
+         };
+         for (int i = 0; libnames[i]; i++) {
+@@ -113,10 +110,7 @@ load_libcanberra(void) {
+     if (done) return;
+     done = true;
+     const char* libnames[] = {
+-        "libcanberra.so",
+-        // some installs are missing the .so symlink, so try the full name
+-        "libcanberra.so.0",
+-        "libcanberra.so.0.2.5",
++        "@libcanberra@",
+         NULL
+     };
+     for (int i = 0; libnames[i]; i++) {
diff --git a/nixpkgs/pkgs/applications/misc/kitty/no-lto.patch b/nixpkgs/pkgs/applications/misc/kitty/no-lto.patch
new file mode 100644
index 000000000000..8073c11fbd2a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/kitty/no-lto.patch
@@ -0,0 +1,13 @@
+--- a/setup.py
++++ b/setup.py
+@@ -277,10 +277,6 @@ def init_env(
+     cppflags += shlex.split(os.environ.get('CPPFLAGS', ''))
+     cflags += shlex.split(os.environ.get('CFLAGS', ''))
+     ldflags += shlex.split(os.environ.get('LDFLAGS', ''))
+-    if not debug and not sanitize:
+-        # See https://github.com/google/sanitizers/issues/647
+-        cflags.append('-flto')
+-        ldflags.append('-flto')
+
+     if profile:
+         cppflags.append('-DWITH_PROFILER')
diff --git a/nixpkgs/pkgs/applications/misc/kiwix/default.nix b/nixpkgs/pkgs/applications/misc/kiwix/default.nix
new file mode 100644
index 000000000000..ff6b1e9de2dc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/kiwix/default.nix
@@ -0,0 +1,109 @@
+{ stdenv, fetchurl, makeWrapper, pkgconfig
+, zip, python, zlib, which, icu, libmicrohttpd, lzma, aria2, wget, bc
+, libuuid, libX11, libXext, libXt, libXrender, glib, dbus, dbus-glib
+, gtk2, gdk-pixbuf, pango, cairo, freetype, fontconfig, alsaLib, atk, cmake
+, xapian, ctpp2, zimlib
+}:
+
+with stdenv.lib;
+
+let
+  xulrunner64_tar = fetchurl {
+    url = "http://download.kiwix.org/dev/xulrunner-29.0.en-US.linux-x86_64.tar.bz2";
+    sha256 = "0i3m30gm5z7qmas14id6ypvbmnb2k7jhz8aby2wz5vvv49zqmx3s";
+  };
+  xulrunnersdk64_tar = fetchurl {
+    url = "http://download.kiwix.org/dev/xulrunner-29.0.en-US.linux-x86_64.sdk.tar.bz2";
+    sha256 = "0z90v7c4mq15g5klmsj8vs2r10fbygj3qzynx4952hkv8ihw8n3a";
+  };
+  xulrunner32_tar = fetchurl {
+    url = "http://download.kiwix.org/dev/xulrunner-29.0.en-US.linux-i686.tar.bz2";
+    sha256 = "0yln6pxz8f6b9wm9124sx049z8mgi17lgd63rcv2hnix825y8gjb";
+  };
+  xulrunnersdk32_tar = fetchurl {
+    url = "http://download.kiwix.org/dev/xulrunner-29.0.en-US.linux-i686.sdk.tar.bz2";
+    sha256 = "1h9vcbvf8wgds6i2z20y7krpys0mqsqhv1ijyfljanp6vyll9fvi";
+  };
+
+  xulrunner = if stdenv.hostPlatform.system == "x86_64-linux"
+              then { tar = xulrunner64_tar; sdk = xulrunnersdk64_tar; }
+              else { tar = xulrunner32_tar; sdk = xulrunnersdk32_tar; };
+
+  pugixml = stdenv.mkDerivation rec {
+    version = "1.2";
+    pname = "pugixml";
+
+    src = fetchurl {
+      url = "http://download.kiwix.org/dev/${pname}-${version}.tar.gz";
+      sha256 = "0sqk0vdwjq44jxbbkj1cy8qykrmafs1sickzldb2w2nshsnjshhg";
+    };
+
+    buildInputs = [ cmake ];
+
+    unpackPhase = ''
+      # not a nice src archive: all the files are in the root :(
+      mkdir ${pname}-${version}
+      cd ${pname}-${version}
+      tar -xf ${src}
+
+      # and the build scripts are in there :'(
+      cd scripts
+    '';
+  };
+
+in
+
+stdenv.mkDerivation rec {
+  pname = "kiwix";
+  version = "0.9";
+
+  src = fetchurl {
+    url = "http://download.kiwix.org/src/kiwix-${version}-src.tar.xz";
+    sha256 = "0577phhy2na59cpcqjgldvksp0jwczyg0l6c9ghnr19i375l7yqc";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    zip python zlib xapian which icu libmicrohttpd
+    lzma zimlib ctpp2 aria2 wget bc libuuid makeWrapper pugixml
+  ];
+
+  postUnpack = ''
+    cd kiwix*
+    mkdir static
+    cp Makefile.in static/
+
+    cd src/dependencies
+
+    tar -xf ${xulrunner.tar}
+    tar -xf ${xulrunner.sdk}
+
+    cd ../../..
+  '';
+
+  configureFlags = [
+    "--disable-staticbins"
+  ];
+
+  postInstall = ''
+    cp -r src/dependencies/xulrunner $out/lib/kiwix
+
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/lib/kiwix/xulrunner/xulrunner
+
+    rm $out/bin/kiwix
+    makeWrapper $out/lib/kiwix/kiwix-launcher $out/bin/kiwix \
+      --suffix LD_LIBRARY_PATH : ${makeLibraryPath [stdenv.cc.cc libX11 libXext libXt libXrender glib dbus dbus-glib gtk2 gdk-pixbuf pango cairo freetype fontconfig alsaLib atk]} \
+      --suffix PATH : ${aria2}/bin
+  '';
+
+  meta = {
+    description = "An offline reader for Web content";
+    homepage = "https://kiwix.org";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ robbinch ];
+    knownVulnerabilities = [
+      "CVE-2015-1032"
+    ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/kjv/default.nix b/nixpkgs/pkgs/applications/misc/kjv/default.nix
new file mode 100644
index 000000000000..307781931e97
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/kjv/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, fetchpatch }:
+
+let
+
+patch-base = "https://github.com/LukeSmithxyz/kjv/commit/";
+
+add-apocrypha = fetchpatch {
+  url = patch-base + "b92b7622285d10464f9274f11e740bef90705bbc.patch";
+  sha256 = "0n4sj8p9m10fcair4msc129jxkkx5whqzhjbr5k4lfgp6nb1zk8k";
+};
+
+add-install-target = fetchpatch {
+  url = patch-base + "f4ad73539eb73f1890f4b791d8d38dd95900a4a4.patch";
+  sha256 = "1yzj72i5fkzn2i4wl09q6jx7nwn2h4jwm49fc23nxfwchzar9m1q";
+};
+
+in
+
+stdenv.mkDerivation rec {
+  pname = "kjv";
+  version = "unstable-2018-12-25";
+
+  src = fetchFromGitHub {
+    owner = "bontibon";
+    repo = pname;
+    rev = "fda81a610e4be0e7c5cf242de655868762dda1d4";
+    sha256 = "1favfcjvd3pzz1ywwv3pbbxdg7v37s8vplgsz8ag016xqf5ykqqf";
+  };
+
+  patches = [ add-apocrypha add-install-target ];
+
+  makeFlags = [
+    "PREFIX=${placeholder "out"}"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "The Bible, King James Version";
+    homepage = "https://github.com/bontibon/kjv";
+    license = licenses.publicDomain;
+    maintainers = [ maintainers.jtobin ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/klayout/default.nix b/nixpkgs/pkgs/applications/misc/klayout/default.nix
new file mode 100644
index 000000000000..784656b8b96f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/klayout/default.nix
@@ -0,0 +1,63 @@
+{ lib, mkDerivation, fetchFromGitHub, fetchpatch
+, python, ruby, qtbase, qtmultimedia, qttools, qtxmlpatterns
+, which, perl, makeWrapper, fixDarwinDylibNames
+}:
+
+mkDerivation rec {
+  pname = "klayout";
+  version = "0.26.5";
+
+  src = fetchFromGitHub {
+    owner = "KLayout";
+    repo = "klayout";
+    rev = "v${version}";
+    sha256 = "1zv8yazhdyxm33vdn0m5cciw7zzg45nwdg4rdcsydnrwg7d667r6";
+  };
+
+  postPatch = ''
+    substituteInPlace src/klayout.pri --replace "-Wno-reserved-user-defined-literal" ""
+    patchShebangs .
+  '';
+
+  nativeBuildInputs = [
+    which
+  ];
+
+  buildInputs = [
+    python
+    ruby
+    qtbase
+    qtmultimedia
+    qttools
+    qtxmlpatterns
+  ];
+
+  buildPhase = ''
+    runHook preBuild
+    mkdir -p $out/lib
+    ./build.sh -qt5 -prefix $out/lib -j$NIX_BUILD_CORES
+    runHook postBuild
+  '';
+
+  postBuild = ''
+    mkdir $out/bin
+    mv $out/lib/klayout $out/bin/
+  '';
+
+  NIX_CFLAGS_COMPILE = [ "-Wno-parentheses" ];
+
+  dontInstall = true; # Installation already happens as part of "build.sh"
+
+  # Fix: "gsiDeclQMessageLogger.cc:126:42: error: format not a string literal
+  # and no format arguments [-Werror=format-security]"
+  hardeningDisable = [ "format" ];
+
+  meta = with lib; {
+    description = "High performance layout viewer and editor with support for GDS and OASIS";
+    license = with licenses; [ gpl3 ];
+    homepage = "https://www.klayout.de/";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ knedlsepp ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/kondo/default.nix b/nixpkgs/pkgs/applications/misc/kondo/default.nix
new file mode 100644
index 000000000000..9df4c59717cc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/kondo/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, rustPlatform, fetchFromGitHub }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "kondo";
+  version = "0.3";
+
+  src = fetchFromGitHub {
+    owner = "tbillington";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1rrg0xfm3vn5jh861r4ismrga673g7v6qnzl2v1haflgjhvdazwd";
+  };
+
+  cargoSha256 = "1y7g8gw9hsm997d6i99c3dj2gb8y8cgws5001n85f9bpnlvvmf9y";
+
+  meta = with stdenv.lib; {
+    description = "Save disk space by cleaning unneeded files from software projects";
+    homepage = "https://github.com/tbillington/kondo";
+    license = licenses.mit;
+    maintainers = with maintainers; [ filalex77 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/krename/default.nix b/nixpkgs/pkgs/applications/misc/krename/default.nix
new file mode 100644
index 000000000000..816b352460ba
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/krename/default.nix
@@ -0,0 +1,33 @@
+{
+  mkDerivation, fetchurl, lib,
+  extra-cmake-modules, kdoctools, wrapGAppsHook,
+  kconfig, kinit, kjsembed, taglib, exiv2, podofo,
+  kcrash
+}:
+
+let
+  pname = "krename";
+  version = "5.0.0";
+
+in mkDerivation rec {
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/${pname}/${version}/src/${name}.tar.xz";
+    sha256 = "136j1dkqrhv458rjh5v3vzjhvq6dhz7k79zk6mmx8zvqacc7cq8a";
+  };
+
+  buildInputs = [ taglib exiv2 podofo ];
+
+  nativeBuildInputs = [ extra-cmake-modules kdoctools wrapGAppsHook ];
+
+  propagatedBuildInputs = [ kconfig kcrash kinit kjsembed ];
+
+  meta = with lib; {
+    description = "A powerful batch renamer for KDE";
+    homepage = "https://kde.org/applications/utilities/krename/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ peterhoeg ];
+    inherit (kconfig.meta) platforms;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/krusader/default.nix b/nixpkgs/pkgs/applications/misc/krusader/default.nix
new file mode 100644
index 000000000000..ab13c4989d9a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/krusader/default.nix
@@ -0,0 +1,28 @@
+{
+  mkDerivation, fetchurl, lib,
+  extra-cmake-modules, kdoctools, wrapGAppsHook,
+  karchive, kconfig, kcrash, kguiaddons, kinit, kparts, kwindowsystem
+}:
+
+let
+  pname = "krusader";
+  version = "2.7.2";
+in mkDerivation rec {
+  pname = "krusader";
+  inherit version;
+
+  src = fetchurl {
+    url = "mirror://kde/stable/${pname}/${version}/${pname}-${version}.tar.xz";
+    sha256 = "02b1jz5a7cjr13v6c7fczrhs1xmg1krnva5fxk8x2bf4nd1rm8s1";
+  };
+
+  meta = with lib; {
+    description = "Norton/Total Commander clone for KDE";
+    license = licenses.gpl2;
+    homepage = "http://www.krusader.org";
+    maintainers = with maintainers; [ sander turion ];
+  };
+
+  nativeBuildInputs = [ extra-cmake-modules kdoctools wrapGAppsHook ];
+  propagatedBuildInputs = [ karchive kconfig kcrash kguiaddons kinit kparts kwindowsystem ];
+}
diff --git a/nixpkgs/pkgs/applications/misc/ksmoothdock/default.nix b/nixpkgs/pkgs/applications/misc/ksmoothdock/default.nix
new file mode 100644
index 000000000000..9538329bf9b5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ksmoothdock/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, fetchpatch
+, cmake
+, extra-cmake-modules
+, kactivities
+, qtbase
+}:
+
+mkDerivation rec {
+  pname = "KSmoothDock";
+  version = "6.2";
+
+  src = fetchFromGitHub {
+    owner = "dangvd";
+    repo = "ksmoothdock";
+    rev = "v${version}";
+    sha256 = "182x47cymgnp5xisa0xx93hmd5wrfigy8zccrr23p4r9hp8xbnam";
+  };
+
+  patches = [
+    # Fixed hard coded installation path to use CMAKE_INSTALL_BINDIR and CMAKE_INSTALL_PREFIX instead
+    (fetchpatch {
+      url = "https://github.com/dangvd/ksmoothdock/commit/00799bef8a1c1fe61ef9274866267d9fe9194041.patch";
+      sha256 = "1nmb7gf1ggzicxz8k4fd67xhwjy404myqzjpgjym66wqxm0arni4";
+    })
+  ];
+
+  nativeBuildInputs = [ cmake extra-cmake-modules ];
+
+  buildInputs = [ kactivities qtbase ];
+
+  cmakeDir = "../src";
+
+  meta = with lib; {
+    description = "A cool desktop panel for KDE Plasma 5";
+    license = licenses.mit;
+    homepage = "https://dangvd.github.io/ksmoothdock/";
+    maintainers = with maintainers; [ shamilton ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/kupfer/default.nix b/nixpkgs/pkgs/applications/misc/kupfer/default.nix
new file mode 100644
index 000000000000..c7f54990107f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/kupfer/default.nix
@@ -0,0 +1,56 @@
+{ stdenv
+, fetchurl
+, intltool
+, python3Packages
+, gobject-introspection
+, gtk3
+, libwnck3
+, keybinder3
+, wrapGAppsHook
+, wafHook
+}:
+
+with python3Packages;
+
+buildPythonApplication rec {
+  pname = "kupfer";
+  version = "319";
+
+  src = fetchurl {
+    url = "https://github.com/kupferlauncher/kupfer/releases/download/v${version}/kupfer-v${version}.tar.xz";
+    sha256 = "0c9xjx13r8ckfr4az116bhxsd3pk78v04c3lz6lqhraak0rp4d92";
+  };
+
+  nativeBuildInputs = [
+    wrapGAppsHook intltool
+    # For setup hook
+    gobject-introspection wafHook
+  ];
+  buildInputs = [ docutils libwnck3 keybinder3 ];
+  propagatedBuildInputs = [ pygobject3 gtk3 pyxdg dbus-python pycairo ];
+
+  # without strictDeps kupfer fails to build: Could not find the python module 'gi.repository.Gtk'
+  # see https://github.com/NixOS/nixpkgs/issues/56943 for details
+  strictDeps = false;
+
+  postInstall = let
+    pythonPath = (stdenv.lib.concatMapStringsSep ":"
+      (m: "${m}/lib/${python.libPrefix}/site-packages")
+      propagatedBuildInputs);
+  in ''
+    gappsWrapperArgs+=(
+      "--prefix" "PYTHONPATH" : "${pythonPath}"
+      "--set" "PYTHONNOUSERSITE" "1"
+    )
+  '';
+
+  doCheck = false; # no tests
+
+  meta = with stdenv.lib; {
+    description = "A smart, quick launcher";
+    homepage    = "https://kupferlauncher.github.io/";
+    license     = licenses.gpl3;
+    maintainers = with maintainers; [ cobbal ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/latte-dock/default.nix b/nixpkgs/pkgs/applications/misc/latte-dock/default.nix
new file mode 100644
index 000000000000..424da3ad3605
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/latte-dock/default.nix
@@ -0,0 +1,30 @@
+{ mkDerivation, lib, cmake, xorg, plasma-framework, fetchurl
+, extra-cmake-modules, karchive, kwindowsystem, qtx11extras, kcrash, knewstuff }:
+
+mkDerivation rec {
+  pname = "latte-dock";
+  version = "0.9.11";
+
+  src = fetchurl {
+    url = "https://download.kde.org/stable/${pname}/${pname}-${version}.tar.xz";
+    sha256 = "0x7a93a7axsa0fzpbkkv1z722k9za4p51xcpzdpnh5ih1zij0csi";
+    name = "${pname}-${version}.tar.xz";
+  };
+
+  buildInputs = [ plasma-framework xorg.libpthreadstubs xorg.libXdmcp xorg.libSM ];
+
+  nativeBuildInputs = [ extra-cmake-modules cmake karchive kwindowsystem
+    qtx11extras kcrash knewstuff ];
+
+
+
+  meta = with lib; {
+    description = "Dock-style app launcher based on Plasma frameworks";
+    homepage = "https://github.com/psifidotos/Latte-Dock";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.benley maintainers.ysndr ];
+  };
+
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/lenmus/default.nix b/nixpkgs/pkgs/applications/misc/lenmus/default.nix
new file mode 100644
index 000000000000..532166cf6fb0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/lenmus/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, pkgconfig, fetchFromGitHub, fetchpatch
+, cmake, boost
+, portmidi, sqlite
+, freetype, libpng, pngpp, zlib
+, wxGTK30, wxsqlite3
+}:
+
+stdenv.mkDerivation rec {
+  pname = "lenmus";
+  version = "5.4.2";
+
+  src = fetchFromGitHub {
+    owner = "lenmus";
+    repo = "lenmus";
+    rev = "Release_${version}";
+    sha256 = "1n639xr1qxx6rhqs0c6sjxp3bv8cwkmw1vfk1cji7514gj2a9v3p";
+  };
+
+  enableParallelBuilding = true;
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/lenmus/lenmus/commit/421760d84694a0e6e72d0e9b1d4fd30a7e129c6f.patch";
+      sha256 = "1z1wwh0pcr8w1zlr8swx99si9y2kxx5bmavgwvy6bvdhxgm58yqs";
+    })
+    (fetchpatch {
+      url = "https://github.com/lenmus/lenmus/commit/6613d20d4051effc782203c9c6d92962a3f66b5f.patch";
+      sha256 = "01vvzzpamv90jpqbbq1f2m2b4gb9xab9z70am8i41d90nqvg6agn";
+    })
+  ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    cmake boost
+    portmidi sqlite
+    freetype libpng pngpp zlib
+    wxGTK30 wxsqlite3
+  ];
+
+  meta = with stdenv.lib; {
+    description = "LenMus Phonascus is a program for learning music";
+    longDescription = ''
+      LenMus Phonascus is a free open source program (GPL v3) for learning music.
+      It allows you to focus on specific skills and exercises, on both theory and aural training.
+      The different activities can be customized to meet your needs
+    '';
+    homepage = "http://www.lenmus.org/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers;  [ ramkromberg ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/libosmocore/default.nix b/nixpkgs/pkgs/applications/misc/libosmocore/default.nix
new file mode 100644
index 000000000000..2bd8bfa99bcd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/libosmocore/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig
+, pcsclite, talloc, python2, gnutls
+}:
+
+stdenv.mkDerivation rec {
+  pname = "libosmocore";
+  version = "1.2.0";
+
+  src = fetchFromGitHub {
+    owner = "osmocom";
+    repo = "libosmocore";
+    rev = version;
+    sha256 = "1535y6r4csvslrxcki80ya6zhhc5jw2nvy9bymb55ln77pf853vg";
+  };
+
+  propagatedBuildInputs = [
+    talloc
+  ];
+
+  nativeBuildInputs = [
+    autoreconfHook pkgconfig
+  ];
+
+  buildInputs = [
+    pcsclite python2 gnutls
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "libosmocore";
+    homepage = "https://github.com/osmocom/libosmocore";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ mog ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/librecad/default.nix b/nixpkgs/pkgs/applications/misc/librecad/default.nix
new file mode 100644
index 000000000000..0df0f86ef456
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/librecad/default.nix
@@ -0,0 +1,94 @@
+{ boost
+, fetchFromGitHub
+, installShellFiles
+, mkDerivationWith
+, muparser
+, pkgconfig
+, qmake
+, qtbase
+, qtsvg
+, qttools
+, runtimeShell
+, gcc8Stdenv
+}:
+
+let
+  stdenv = gcc8Stdenv;
+in
+
+# Doesn't build with gcc9
+mkDerivationWith stdenv.mkDerivation rec {
+  pname = "librecad";
+  version = "2.2.0-rc1";
+
+  src = fetchFromGitHub {
+    owner = "LibreCAD";
+    repo = "LibreCAD";
+    rev = version;
+    sha256 = "0kwj838hqzbw95gl4x6scli9gj3gs72hdmrrkzwq5rjxam18k3f3";
+  };
+
+  patches = [
+    ./fix_qt_5_11_build.patch
+  ];
+
+  postPatch = ''
+    substituteInPlace scripts/postprocess-unix.sh \
+      --replace /bin/sh ${runtimeShell}
+
+    substituteInPlace librecad/src/lib/engine/rs_system.cpp \
+      --replace /usr/share $out/share
+
+    substituteInPlace librecad/src/main/qc_applicationwindow.cpp \
+      --replace __DATE__ 0
+  '';
+
+  qmakeFlags = [
+    "MUPARSER_DIR=${muparser}"
+    "BOOST_DIR=${boost.dev}"
+  ];
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm555 -t $out/bin                unix/{librecad,ttf2lff}
+    install -Dm444 -t $out/share/applications desktop/librecad.desktop
+    install -Dm644 -t $out/share/pixmaps      librecad/res/main/librecad.png
+    install -Dm444 desktop/librecad.sharedmimeinfo $out/share/mime/packages/librecad.xml
+    install -Dm444 desktop/graphics_icons_and_splash/Icon\ LibreCAD/Icon_Librecad.svg \
+      $out/share/icons/hicolor/scalable/apps/librecad.svg
+
+    installManPage desktop/librecad.?
+
+    cp -R unix/resources $out/share/librecad
+
+    runHook postInstall
+  '';
+
+  buildInputs = [
+    boost
+    muparser
+    qtbase
+    qtsvg
+  ];
+
+  nativeBuildInputs = [
+    installShellFiles
+    pkgconfig
+    qmake
+    qttools
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "2D CAD package based on Qt";
+    homepage = "https://librecad.org";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [
+      kiwi
+      viric
+    ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/librecad/fix_qt_5_11_build.patch b/nixpkgs/pkgs/applications/misc/librecad/fix_qt_5_11_build.patch
new file mode 100644
index 000000000000..04701e5ab1ee
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/librecad/fix_qt_5_11_build.patch
@@ -0,0 +1,36 @@
+diff --git a/librecad/src/ui/forms/qg_commandwidget.cpp b/librecad/src/ui/forms/qg_commandwidget.cpp
+index 835e47d..2c878e8 100644
+--- a/librecad/src/ui/forms/qg_commandwidget.cpp
++++ b/librecad/src/ui/forms/qg_commandwidget.cpp
+@@ -27,6 +27,7 @@
+ 
+ #include <algorithm>
+ 
++#include <QAction>
+ #include <QKeyEvent>
+ #include <QFileDialog>
+ #include <QSettings>
+diff --git a/librecad/src/ui/generic/colorwizard.cpp b/librecad/src/ui/generic/colorwizard.cpp
+index 2beaceb..84068ad 100644
+--- a/librecad/src/ui/generic/colorwizard.cpp
++++ b/librecad/src/ui/generic/colorwizard.cpp
+@@ -27,6 +27,7 @@
+ #include "colorwizard.h"
+ #include "ui_colorwizard.h"
+ 
++#include <QAction>
+ #include <QColorDialog>
+ #include <QLineEdit>
+ #include <QListWidget>
+diff --git a/librecad/src/ui/generic/widgetcreator.cpp b/librecad/src/ui/generic/widgetcreator.cpp
+index 7c35144..0e394f2 100644
+--- a/librecad/src/ui/generic/widgetcreator.cpp
++++ b/librecad/src/ui/generic/widgetcreator.cpp
+@@ -27,6 +27,7 @@
+ #include "widgetcreator.h"
+ #include "ui_widgetcreator.h"
+ 
++#include <QActionGroup>
+ #include <QSettings>
+ #include <QLineEdit>
+ #include <QPushButton>
diff --git a/nixpkgs/pkgs/applications/misc/lifelines/default.nix b/nixpkgs/pkgs/applications/misc/lifelines/default.nix
new file mode 100644
index 000000000000..7207dea9d522
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/lifelines/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, gettext, libiconv, bison, ncurses, perl, autoreconfHook }:
+
+stdenv.mkDerivation rec {
+  pname = "lifelines";
+  version = "unstable-2019-05-07";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "43f29285ed46fba322b6a14322771626e6b02c59";
+    sha256 = "1agszzlmkxmznpc1xj0vzxkskrcfagfjvqsdyw1yp5yg6bsq272y";
+  };
+
+  buildInputs = [
+    gettext
+    libiconv
+    ncurses
+    perl
+  ];
+  nativeBuildInputs = [ autoreconfHook bison ];
+
+  meta = with stdenv.lib; {
+    description = "Genealogy tool with ncurses interface";
+    homepage = "https://lifelines.github.io/lifelines/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ disassembler ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/lighthouse/default.nix b/nixpkgs/pkgs/applications/misc/lighthouse/default.nix
new file mode 100644
index 000000000000..9e651c59d4eb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/lighthouse/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, pkgconfig
+, libX11, libxcb, cairo, gtk2, pango, python27, python3
+}:
+
+stdenv.mkDerivation rec {
+  name = "lighthouse-${date}";
+  date = "2016-07-20";
+
+  src = fetchFromGitHub {
+    owner = "emgram769";
+    repo = "lighthouse";
+    rev = "d1813ef8e2aca9f6b3609b1e0c6d1d5ee683281a";
+    sha256 = "0v6ylm49f1b44zwq1y1gqxp2csyqblplr24ajllc2q3r0sc9m1ys";
+   };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    libX11 libxcb cairo gtk2 pango python27 python3
+  ];
+
+  makeFlags = [ "PREFIX=\${out}" ];
+
+  preFixup = "chmod +x $out/share/lighthouse/.config/lighthouse/google.py";
+
+  postFixup = "chmod -x $out/share/lighthouse/.config/lighthouse/google.py";
+
+  meta = with stdenv.lib; {
+    description = "A simple flexible popup dialog to run on X";
+    homepage = "https://github.com/emgram769/lighthouse";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ramkromberg ];
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/lilyterm/default.nix b/nixpkgs/pkgs/applications/misc/lilyterm/default.nix
new file mode 100644
index 000000000000..28f9625b5b66
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/lilyterm/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, lib, fetchurl, fetchFromGitHub
+, pkgconfig
+, autoconf, automake, intltool, gettext
+, gtk, vte
+, flavour ? "stable"
+}:
+
+assert lib.assertOneOf "flavour" flavour [ "stable"  "git" ];
+
+let
+  pname = "lilyterm";
+  stuff =
+    if flavour == "stable"
+    then rec {
+        version = "0.9.9.4";
+        src = fetchurl {
+          url = "https://lilyterm.luna.com.tw/file/${pname}-${version}.tar.gz";
+          sha256 = "0x2x59qsxq6d6xg5sd5lxbsbwsdvkwqlk17iw3h4amjg3m1jc9mp";
+        };
+      }
+    else {
+        version = "2019-07-25";
+        src = fetchFromGitHub {
+          owner = "Tetralet";
+          repo = pname;
+          rev = "faf1254f46049edfb1fd6e9191e78b1b23b9c51d";
+          sha256 = "054450gk237c62b677365bcwrijr63gd9xm8pv68br371wdzylz7";
+        };
+      };
+
+in
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  inherit pname;
+
+  inherit (stuff) src version;
+
+  nativeBuildInputs = [ pkgconfig autoconf automake intltool gettext ];
+  buildInputs = [ gtk vte ];
+
+  preConfigure = "sh autogen.sh";
+
+  configureFlags = [
+    "--enable-nls"
+    "--enable-safe-mode"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A fast, lightweight terminal emulator";
+    longDescription = ''
+      LilyTerm is a terminal emulator based off of libvte that aims to be fast and lightweight.
+    '';
+    homepage = "https://lilyterm.luna.com.tw/";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ AndersonTorres Profpatsch ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/llpp/default.nix b/nixpkgs/pkgs/applications/misc/llpp/default.nix
new file mode 100644
index 000000000000..d7752258df98
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/llpp/default.nix
@@ -0,0 +1,57 @@
+{ stdenv, lib, substituteAll, makeWrapper, fetchgit, ocaml, mupdf, libX11,
+libGLU, libGL, freetype, xclip, inotify-tools, procps }:
+
+assert lib.versionAtLeast (lib.getVersion ocaml) "4.07";
+
+stdenv.mkDerivation rec {
+  pname = "llpp";
+  version = "32";
+
+  src = fetchgit {
+    url = "git://repo.or.cz/llpp.git";
+    rev = "v${version}";
+    sha256 = "1h1zysm5cz8laq8li49djl6929cnrjlflag9hw0c1dcr4zaxk32y";
+    fetchSubmodules = false;
+  };
+
+  patches = (substituteAll {
+    inherit version;
+    src = ./fix-build-bash.patch;
+  });
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ ocaml mupdf libX11 libGLU libGL freetype ];
+
+  dontStrip = true;
+
+  configurePhase = ''
+    mkdir -p build/mupdf/thirdparty
+    ln -s ${freetype.dev} build/mupdf/thirdparty/freetype
+  '';
+
+  buildPhase = ''
+    bash ./build.bash build
+  '';
+
+  installPhase = ''
+    install -d $out/bin
+    install build/llpp $out/bin
+    install misc/llpp.inotify $out/bin/llpp.inotify
+
+    wrapProgram $out/bin/llpp \
+        --prefix PATH ":" "${xclip}/bin"
+
+    wrapProgram $out/bin/llpp.inotify \
+        --prefix PATH ":" "$out/bin" \
+        --prefix PATH ":" "${inotify-tools}/bin" \
+        --prefix PATH ":" "${procps}/bin"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://repo.or.cz/w/llpp.git";
+    description = "A MuPDF based PDF pager written in OCaml";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ pSub enzime ];
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/llpp/fix-build-bash.patch b/nixpkgs/pkgs/applications/misc/llpp/fix-build-bash.patch
new file mode 100644
index 000000000000..fbc341c8af78
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/llpp/fix-build-bash.patch
@@ -0,0 +1,78 @@
+diff --git a/build.bash b/build.bash
+index 7c278b6..41494c5 100755
+--- a/build.bash
++++ b/build.bash
+@@ -29,7 +29,6 @@ srcd="$(dirname $0)"
+ mudir=$outd/mupdf
+ muinc="-I $mudir/include -I $mudir/thirdparty/freetype/include"
+ 
+-test -d "$mudir" || die muPDF not found, consult $(dirname $0)/BUILDING
+ 
+ mkdir -p $outd/{$wsid,lablGL}
+ :>$outd/ordered
+@@ -39,12 +38,6 @@ isfresh() { test -r "$1.past" && . "$1.past" && test "$k" = "$2"; }
+ mbt=${mbt:-native}
+ mulibs="$mudir/build/$mbt/libmupdf.a" # $mudir/build/$mbt/libmupdf-third.a
+ 
+-keycmd="(cd $mudir && make -q build=$mbt libs && echo); digest $mulibs"
+-isfresh "$mulibs" "$(eval $keycmd)" || (
+-    make -C "$mudir" build=$mbt -j $mjobs libs
+-    eval $keycmd >$mudir/build/$mbt/libmupdf.a.past
+-) && vecho "fresh mupdf"
+-
+ oincs() {
+     local i=
+     local incs1=
+@@ -89,34 +82,6 @@ mflags() {
+ }
+ 
+ overs="$(ocamlc -vnum 2>/dev/null)" || overs=""
+-test "$overs" = "4.10.0" || {
+-    url=https://caml.inria.fr/pub/distrib/ocaml-4.10/ocaml-4.10.0.tar.xz
+-    txz=$outd/$(basename $url)
+-    keycmd="printf $url; digest $txz;"
+-    isfresh $txz "$(eval $keycmd)" || {
+-        executable_p() { command -v "$1" >/dev/null 2>&1; }
+-        if executable_p wget; then dl() { wget -q "$1" -O "$2"; }
+-        elif executable_p curl; then dl() { curl -L "$1" -o "$2"; }
+-        else die "no program to fetch remote urls found"
+-        fi
+-        dl $url $txz
+-        eval $keycmd >$txz.past
+-    } && vecho "fresh $txz"
+-    absprefix=$(cd $outd &>/dev/null; pwd -P)
+-    export PATH=$absprefix/bin:$PATH
+-    ocamlc=$absprefix/bin/ocamlc
+-    keycmd="printf $url; digest $ocamlc;"
+-    isfresh $ocamlc "$(eval $keycmd)" || (
+-        tar xf $txz -C $outd
+-        bn=$(basename $url)
+-        cd $outd/${bn%.tar.xz}
+-        ./configure --disable-ocamldoc --enable-debugger=no --prefix=$absprefix
+-        make -j $mjobs world
+-        make install
+-        eval $keycmd >$absprefix/bin/ocamlc.past
+-    ) && vecho "fresh ocamlc"
+-    overs=$(ocamlc -vnum 2>/dev/null)
+-}
+ 
+ ccomp=${LLPP_CC-$(ocamlc -config | grep "^c_compiler: " | \
+                       { read _ c; echo $c; })}
+@@ -230,7 +195,7 @@ bobjc() {
+     } && vecho "fresh $o"
+ }
+ 
+-ver=$(cd $srcd && git describe --tags --dirty) || ver=unknown
++ver=@version@
+ 
+ cmd="(. $srcd/genconfstr.sh >$outd/confstruct.ml)"
+ keycmd="digest $srcd/genconfstr.sh $outd/confstruct.ml"
+@@ -284,7 +249,7 @@ for m in ml_gl ml_glarray ml_raw; do
+ done
+ 
+ libs="str.cma unix.cma"
+-clibs="-L$mudir/build/$mbt -lmupdf -lmupdf-third -lpthread"
++clibs="-lmupdf -lfreetype -lpthread"
+ if $darwin; then
+     mcomp=$(ocamlc -config | grep bytecomp_c_co | { read _ c; echo $c; })
+     clibs="$clibs -framework Cocoa -framework OpenGL"
diff --git a/nixpkgs/pkgs/applications/misc/loxodo/default.nix b/nixpkgs/pkgs/applications/misc/loxodo/default.nix
new file mode 100644
index 000000000000..4b201c66fe5e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/loxodo/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, python27Packages, fetchgit }:
+let
+  py = python27Packages;
+  python = py.python;
+in
+py.buildPythonApplication {
+  name = "loxodo-0.20150124";
+
+  src = fetchgit {
+    url = "https://github.com/sommer/loxodo.git";
+    rev = "6c56efb4511fd6f645ad0f8eb3deafc8071c5795";
+    sha256 = "1cg0dfcv57ps54f1a0ksib7hgkrbdi9q699w302xyyfyvjcb5dd2";
+  };
+
+  propagatedBuildInputs = with py; [ wxPython ];
+
+  postInstall = ''
+    mv $out/bin/loxodo.py $out/bin/loxodo
+    mkdir -p $out/share/applications
+    cat > $out/share/applications/loxodo.desktop <<EOF
+    [Desktop Entry]
+    Type=Application
+    Exec=$out/bin/loxodo
+    Icon=$out/lib/${python.libPrefix}/site-packages/resources/loxodo-icon.png
+    Name=Loxodo
+    GenericName=Password Vault
+    Categories=Application;Other;
+    EOF
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A Password Safe V3 compatible password vault";
+    homepage = "https://www.christoph-sommer.de/loxodo/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/lsd2dsl/default.nix b/nixpkgs/pkgs/applications/misc/lsd2dsl/default.nix
new file mode 100644
index 000000000000..335279c7084a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/lsd2dsl/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, mkDerivation, lib, fetchFromGitHub, cmake
+, boost, libvorbis, libsndfile, minizip, gtest, qtwebkit }:
+
+mkDerivation rec {
+  pname = "lsd2dsl";
+  version = "0.5.1";
+
+  src = fetchFromGitHub {
+    owner = "nongeneric";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "100qd9i0x6r0nkw1ic2p0xjr16jlhinxkn1x7i98s4xmw4wyb8n8";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ boost libvorbis libsndfile minizip gtest qtwebkit ];
+
+  NIX_CFLAGS_COMPILE = "-Wno-error=unused-result -Wno-error=missing-braces";
+
+  installPhase = ''
+    install -Dm755 console/lsd2dsl $out/bin/lsd2dsl
+    install -m755 gui/lsd2dsl-qtgui $out/bin/lsd2dsl-qtgui
+  '' + lib.optionalString stdenv.isDarwin ''
+    wrapQtApp $out/bin/lsd2dsl
+    wrapQtApp $out/bin/lsd2dsl-qtgui
+  '';
+
+  meta = with lib; {
+    homepage = "https://rcebits.com/lsd2dsl/";
+    description = "Lingvo dictionaries decompiler";
+    longDescription = ''
+      A decompiler for ABBYY Lingvo’s proprietary dictionaries.
+    '';
+    license = licenses.mit;
+    maintainers = with maintainers; [ sikmir ];
+    platforms = with platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ltwheelconf/default.nix b/nixpkgs/pkgs/applications/misc/ltwheelconf/default.nix
new file mode 100644
index 000000000000..2ceb8e91def8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ltwheelconf/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, libusb1, pkgconfig, fetchFromGitHub }:
+
+stdenv.mkDerivation {
+  pname = "ltwheelconf";
+  version = "0.2.7";
+
+  src = fetchFromGitHub {
+    owner = "thk";
+    repo = "ltwheelconf";
+    rev = "df55451f059d593b0259431662612ab5c2bef859";
+    sha256 = "1fsz7k73yln987gcx1jvb5irxfbp1x2c457a60a8yap27nkp5y2w";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libusb1 ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp ltwheelconf $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/thk/LTWheelConf";
+    description = "Logitech wheels configuration tool";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.ebzzry ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/lutris/chrootenv.nix b/nixpkgs/pkgs/applications/misc/lutris/chrootenv.nix
new file mode 100644
index 000000000000..798c32aa722c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/lutris/chrootenv.nix
@@ -0,0 +1,120 @@
+{ lib, buildFHSUserEnv, lutris-unwrapped
+, steamSupport ? true
+}:
+
+let
+
+  qt5Deps = pkgs: with pkgs.qt5; [ qtbase qtmultimedia ];
+  gnome3Deps = pkgs: with pkgs; [ gnome3.zenity gtksourceview gnome3.gnome-desktop gnome3.libgnome-keyring webkitgtk ];
+  xorgDeps = pkgs: with pkgs.xorg; [
+    libX11 libXrender libXrandr libxcb libXmu libpthreadstubs libXext libXdmcp
+    libXxf86vm libXinerama libSM libXv libXaw libXi libXcursor libXcomposite
+  ];
+
+in buildFHSUserEnv {
+  name = "lutris";
+
+  runScript = "lutris";
+
+  targetPkgs = pkgs: with pkgs; [
+    lutris-unwrapped
+
+    # Adventure Game Studio
+    allegro dumb
+
+    # Desmume
+    lua agg soundtouch openal desktop-file-utils atk
+
+    # DGen // TODO: libarchive is broken
+
+    # Dolphin
+    bluez ffmpeg_3 gettext portaudio wxGTK30 miniupnpc mbedtls lzo sfml gsm
+    wavpack orc nettle gmp pcre vulkan-loader
+
+    # DOSBox
+    SDL_net SDL_sound
+
+    # GOG
+    glib-networking
+
+    # Higan // TODO: "higan is not available for the x86_64 architecture"
+
+    # Libretro
+    fluidsynth hidapi mesa libdrm
+
+    # MAME
+    qt48 fontconfig SDL2_ttf
+
+    # Mednafen
+    freeglut mesa_glu
+
+    # MESS
+    expat
+
+    # Minecraft
+    nss
+
+    # Mupen64Plus
+    boost dash
+
+    # Osmose
+    qt4
+
+    # PPSSPP
+    glew snappy
+
+    # Redream // "redream is not available for the x86_64 architecture"
+
+    # ResidualVM
+    flac
+
+    # rpcs3 // TODO: "error while loading shared libraries: libz.so.1..."
+    llvm
+
+    # ScummVM
+    nasm sndio
+
+    # Snes9x
+    epoxy minizip
+
+    # Vice
+    bison flex
+
+    # WINE
+    xorg.xrandr perl which p7zip gnused gnugrep psmisc opencl-headers
+
+    # ZDOOM
+    soundfont-fluid bzip2 game-music-emu
+  ] ++ qt5Deps pkgs
+    ++ gnome3Deps pkgs
+    ++ lib.optional steamSupport pkgs.steam;
+
+  multiPkgs = pkgs: with pkgs; [
+    # Common
+    libsndfile libtheora libogg libvorbis libopus libGLU libpcap libpulseaudio
+    libao libevdev udev libgcrypt libxml2 libusb-compat-0_1 libpng libmpeg2 libv4l
+    libjpeg libxkbcommon libass libcdio libjack2 libsamplerate libzip libmad libaio
+    libcap libtiff libva libgphoto2 libxslt libsndfile giflib zlib glib
+    alsaLib zziplib bash dbus keyutils zip cabextract freetype unzip coreutils
+    readline gcc SDL SDL2 curl graphite2 gtk2 gtk3 udev ncurses wayland libglvnd
+    vulkan-loader xdg_utils sqlite gnutls libbsd
+
+    # PCSX2 // TODO: "libgobject-2.0.so.0: wrong ELF class: ELFCLASS64"
+
+    # WINE
+    cups lcms2 mpg123 cairo unixODBC samba4 sane-backends openldap
+    ocl-icd utillinux libkrb5
+
+    # Proton
+    libselinux
+
+    # Winetricks
+    fribidi
+  ] ++ xorgDeps pkgs;
+
+  extraInstallCommands = ''
+    mkdir -p $out/share
+    ln -sf ${lutris-unwrapped}/share/applications $out/share
+    ln -sf ${lutris-unwrapped}/share/icons $out/share
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/misc/lutris/default.nix b/nixpkgs/pkgs/applications/misc/lutris/default.nix
new file mode 100644
index 000000000000..2ff2a82dd4fb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/lutris/default.nix
@@ -0,0 +1,66 @@
+{ buildPythonApplication, lib, fetchFromGitHub, fetchpatch
+, wrapGAppsHook, gobject-introspection, glib-networking, gnome-desktop, libnotify, libgnome-keyring, pango
+, gdk-pixbuf, atk, webkitgtk, gst_all_1
+, dbus-python, evdev, pyyaml, pygobject3, requests, pillow
+, xrandr, pciutils, psmisc, glxinfo, vulkan-tools, xboxdrv, pulseaudio, p7zip, xgamma
+, libstrangle, wine, fluidsynth, xorgserver
+}:
+
+let
+  # See lutris/util/linux.py
+  binPath = lib.makeBinPath [
+    xrandr
+    pciutils
+    psmisc
+    glxinfo
+    vulkan-tools
+    xboxdrv
+    pulseaudio
+    p7zip
+    xgamma
+    libstrangle
+    wine
+    fluidsynth
+    xorgserver
+  ];
+
+  gstDeps = with gst_all_1; [
+    gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly
+    gst-libav
+  ];
+
+in buildPythonApplication rec {
+  pname = "lutris-original";
+  version = "0.5.5";
+
+  src = fetchFromGitHub {
+    owner = "lutris";
+    repo = "lutris";
+    rev = "v${version}";
+    sha256 = "1g093g0difnkjmnm91p20issdsxn9ri4c56zzddj5wfrbmhwdfag";
+  };
+
+  nativeBuildInputs = [ wrapGAppsHook ];
+  buildInputs = [
+    gobject-introspection glib-networking gnome-desktop libnotify libgnome-keyring pango
+    gdk-pixbuf atk webkitgtk
+  ] ++ gstDeps;
+
+  makeWrapperArgs = [
+    "--prefix PATH : ${binPath}"
+  ];
+
+  propagatedBuildInputs = [
+    evdev pyyaml pygobject3 requests pillow dbus-python
+  ];
+
+  preCheck = "export HOME=$PWD";
+
+  meta = with lib; {
+    homepage = "https://lutris.net";
+    description = "Open Source gaming platform for GNU/Linux";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ chiiruno ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/lxterminal/default.nix b/nixpkgs/pkgs/applications/misc/lxterminal/default.nix
new file mode 100644
index 000000000000..8c002bd14b08
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/lxterminal/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchurl, automake, autoconf, intltool, pkgconfig, gtk3, vte, wrapGAppsHook
+, libxslt, docbook_xml_dtd_412, docbook_xsl, libxml2, findXMLCatalogs
+}:
+
+let version = "0.3.2"; in
+
+stdenv.mkDerivation {
+  pname = "lxterminal";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://github.com/lxde/lxterminal/archive/${version}.tar.gz";
+    sha256 = "1iafqmccsm3nnzwp6pb2c04iniqqnscj83bq1rvf58ppzk0bvih3";
+  };
+
+  configureFlags = [
+    "--enable-man"
+    "--enable-gtk3"
+  ];
+
+  nativeBuildInputs = [
+    automake autoconf intltool pkgconfig wrapGAppsHook
+    libxslt docbook_xml_dtd_412 docbook_xsl libxml2 findXMLCatalogs
+  ];
+
+  buildInputs = [ gtk3 vte ];
+
+  patches = [
+    ./respect-xml-catalog-files-var.patch
+  ];
+
+  preConfigure = ''
+    ./autogen.sh
+  '';
+
+  doCheck = true;
+
+  meta = {
+    description = "The standard terminal emulator of LXDE";
+    longDescription = ''
+      LXTerminal is the standard terminal emulator of LXDE. The terminal is a
+      desktop-independent VTE-based terminal emulator for LXDE without any
+      unnecessary dependencies.
+    '';
+    homepage = "https://wiki.lxde.org/en/LXTerminal";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.velovix ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/lxterminal/respect-xml-catalog-files-var.patch b/nixpkgs/pkgs/applications/misc/lxterminal/respect-xml-catalog-files-var.patch
new file mode 100644
index 000000000000..598f506118f2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/lxterminal/respect-xml-catalog-files-var.patch
@@ -0,0 +1,15 @@
+diff --git a/acinclude.m4 b/acinclude.m4
+index be626c5..b449b1b 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -40,8 +40,8 @@ AC_DEFUN([JH_CHECK_XML_CATALOG],
+ [
+   AC_REQUIRE([JH_PATH_XML_CATALOG],[JH_PATH_XML_CATALOG(,[:])])dnl
+   AC_MSG_CHECKING([for ifelse([$2],,[$1],[$2]) in XML catalog])
+-  if $jh_found_xmlcatalog && \
+-     AC_RUN_LOG([$XMLCATALOG --noout "$XML_CATALOG_FILE" "$1" >&2]); then
++  # empty argument forces libxml to use XML_CATALOG_FILES variable
++  if AC_RUN_LOG([$XMLCATALOG --noout "" "$1" >&2]); then
+     AC_MSG_RESULT([found])
+     ifelse([$3],,,[$3
+ ])dnl
diff --git a/nixpkgs/pkgs/applications/misc/lyx/default.nix b/nixpkgs/pkgs/applications/misc/lyx/default.nix
new file mode 100644
index 000000000000..4f6b73d592c2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/lyx/default.nix
@@ -0,0 +1,45 @@
+{ fetchurl, lib, mkDerivation, pkgconfig, python, file, bc
+, qtbase, qtsvg, hunspell, makeWrapper #, mythes, boost
+}:
+
+mkDerivation rec {
+  version = "2.3.5.1";
+  pname = "lyx";
+
+  src = fetchurl {
+    url = "ftp://ftp.lyx.org/pub/lyx/stable/2.3.x/${pname}-${version}.tar.xz";
+    sha256 = "0mv32s26igm0pd8vs7d2mk1240dpr83y0a2wyh3xz6b67ph0w157";
+  };
+
+  # LaTeX is used from $PATH, as people often want to have it with extra pkgs
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    qtbase qtsvg python file/*for libmagic*/ bc
+    hunspell makeWrapper # enchant
+  ];
+
+  configureFlags = [
+    "--enable-qt5"
+    #"--without-included-boost"
+    /*  Boost is a huge dependency from which 1.4 MB of libs would be used.
+        Using internal boost stuff only increases executable by around 0.2 MB. */
+    #"--without-included-mythes" # such a small library isn't worth a separate package
+  ];
+
+  enableParallelBuilding = true;
+  doCheck = true;
+
+  # python is run during runtime to do various tasks
+  qtWrapperArgs = [
+    " --prefix PATH : ${python}/bin"
+  ];
+
+  meta = with lib; {
+    description = "WYSIWYM frontend for LaTeX, DocBook";
+    homepage = "http://www.lyx.org";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.vcunat ];
+    platforms = platforms.linux;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/madonctl/default.nix b/nixpkgs/pkgs/applications/misc/madonctl/default.nix
new file mode 100644
index 000000000000..a61c66d93746
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/madonctl/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "madonctl";
+  version = "1.1.0";
+
+  goPackagePath = "github.com/McKael/madonctl";
+
+  src = fetchFromGitHub {
+    owner = "McKael";
+    repo = "madonctl";
+    rev  = "v${version}";
+    sha256 = "1dnc1xaafhwhhf5afhb0wc2wbqq0s1r7qzj5k0xzc58my541gadc";
+  };
+
+  # How to update:
+  # go get -u github.com/McKael/madonctl
+  # cd $GOPATH/src/github.com/McKael/madonctl
+  # git checkout v<version-number>
+  # go2nix save
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    description = "CLI for the Mastodon social network API";
+    homepage = "https://github.com/McKael/madonctl";
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/madonctl/deps.nix b/nixpkgs/pkgs/applications/misc/madonctl/deps.nix
new file mode 100644
index 000000000000..9f94bb09ce4e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/madonctl/deps.nix
@@ -0,0 +1,228 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.0
+[
+  {
+    goPackagePath = "github.com/McKael/madon";
+    fetch = {
+      type = "git";
+      url = "https://github.com/McKael/madon";
+      rev = "e580cd41ac42bbb0b2ea5b3843b3f1f854db357c";
+      sha256 = "0jvvfkf3wlzisvcq54xv3jxncx178ks5wxd6cx8k8215437b3hra";
+    };
+  }
+  {
+    goPackagePath = "github.com/fsnotify/fsnotify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev = "4da3e2cfbabc9f751898f250b49f2439785783a1";
+      sha256 = "1y2l9jaf99j6gidcfdgq3hifxyiwv4f7awpll80p170ixdbqxvl3";
+    };
+  }
+  {
+    goPackagePath = "github.com/ghodss/yaml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ghodss/yaml";
+      rev = "0ca9ea5df5451ffdf184b4428c902747c2c11cd7";
+      sha256 = "0skwmimpy7hlh7pva2slpcplnm912rp3igs98xnqmn859kwa5v8g";
+    };
+  }
+  {
+    goPackagePath = "github.com/gorilla/websocket";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gorilla/websocket";
+      rev = "a91eba7f97777409bc2c443f5534d41dd20c5720";
+      sha256 = "13cg6wwkk2ddqbm0nh9fpx4mq7f6qym12ch4lvs53n028ycdgw87";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/hcl";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/hcl";
+      rev = "392dba7d905ed5d04a5794ba89f558b27e2ba1ca";
+      sha256 = "1rfm67kma2hpakabf7hxlj196jags4rpjpcirwg4kan4g9b6j0kb";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/text";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/text";
+      rev = "7cafcd837844e784b526369c9bce262804aebc60";
+      sha256 = "0br693pf6vdr1sfvzdz6zxq7hjpdgci0il4wj0v636r8lyy21vsx";
+    };
+  }
+  {
+    goPackagePath = "github.com/m0t0k1ch1/gomif";
+    fetch = {
+      type = "git";
+      url = "https://github.com/m0t0k1ch1/gomif";
+      rev = "f5864f63e1ed5a138f015cc2cb71a2e99c148d21";
+      sha256 = "0djg8chax1g0m02xz84ic19758jzv5m50b7vpwjkpjk3181j5z9k";
+    };
+  }
+  {
+    goPackagePath = "github.com/magiconair/properties";
+    fetch = {
+      type = "git";
+      url = "https://github.com/magiconair/properties";
+      rev = "51463bfca2576e06c62a8504b5c0f06d61312647";
+      sha256 = "0d7hr78y8gg2mrm5z4jjgm2w3awkznz383b7wvyzk3l33jw6i288";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-isatty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-isatty";
+      rev = "fc9e8d8ef48496124e79ae0df75490096eccf6fe";
+      sha256 = "1r5f9gkavkb1w6sr0qs5kj16706xirl3qnlq3hqpszkw9w27x65a";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/mapstructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/mapstructure";
+      rev = "cc8532a8e9a55ea36402aa21efdf403a60d34096";
+      sha256 = "0705c0hq7b993sabnjy65yymvpy9w1j84bg9bjczh5607z16nw86";
+    };
+  }
+  {
+    goPackagePath = "github.com/pelletier/go-buffruneio";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pelletier/go-buffruneio";
+      rev = "c37440a7cf42ac63b919c752ca73a85067e05992";
+      sha256 = "0l83p1gg6g5mmhmxjisrhfimhbm71lwn1r2w7d6siwwqm9q08sd2";
+    };
+  }
+  {
+    goPackagePath = "github.com/pelletier/go-toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pelletier/go-toml";
+      rev = "5c26a6ff6fd178719e15decac1c8196da0d7d6d1";
+      sha256 = "0f4l7mq0nb2p2vjfjqx251s6jzkl646n1vw45chykwvv1sbad8nq";
+    };
+  }
+  {
+    goPackagePath = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev = "c605e284fe17294bda444b34710735b29d1a9d90";
+      sha256 = "1izjk4msnc6wn1mclg0ypa6i31zfwb1r3032k8q4jfbd57hp0bz6";
+    };
+  }
+  {
+    goPackagePath = "github.com/sendgrid/rest";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sendgrid/rest";
+      rev = "14de1ac72d9ae5c3c0d7c02164c52ebd3b951a4e";
+      sha256 = "0wrggvgnqdmhscim52hvhg77jhksprxp52sc4ipd69kasd32b5dm";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/afero";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/afero";
+      rev = "9be650865eab0c12963d8753212f4f9c66cdcf12";
+      sha256 = "12dhh6d07304lsjv7c4p95hkip0hnshqhwivdw39pbypgg0p8y34";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/cast";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cast";
+      rev = "acbeb36b902d72a7a4c18e8f3241075e7ab763e4";
+      sha256 = "0w25s6gjbbwv47b9208hysyqqphd6pib3d2phg24mjy4wigkm050";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/cobra";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cobra";
+      rev = "ca5710c94eabe15aa1f74490b8e5976dc652e8c6";
+      sha256 = "1z5fxh9akwn95av6ra8p6804nhyxjc63m0s6abxi3l424n30b08i";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/jwalterweatherman";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/jwalterweatherman";
+      rev = "8f07c835e5cc1450c082fe3a439cf87b0cbb2d99";
+      sha256 = "1dhl6kdbyczhnsgiyc8mcb7kmxd9garx8gy3q2gx5mmv96xxzxx7";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev = "e57e3eeb33f795204c1ca35f56c44f83227c6e66";
+      sha256 = "13mhx4i913jil32j295m3a36jzvq1y64xig0naadiz7q9ja011r2";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/viper";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/viper";
+      rev = "0967fc9aceab2ce9da34061253ac10fb99bba5b2";
+      sha256 = "016syis0rvccp2indjqi1vnz3wk7c9dhkvkgam0j79sb019kl80f";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "513929065c19401a1c7b76ecd942f9f86a0c061b";
+      sha256 = "19ziin0k3n45nccjbk094f61hr198wzqnas93cmcxdja8f8fz27q";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/oauth2";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/oauth2";
+      rev = "f047394b6d14284165300fd82dad67edb3a4d7f6";
+      sha256 = "1l1a2iz1nmfmzzbjj1h8066prag4jvjqh13iv1jdlh05fgv6769i";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "a2e06a18b0d52d8cb2010e04b372a1965d8e3439";
+      sha256 = "0m0r2w2qk8jkdk21h52n66g4yqckmzpx3mph73cilkhvdfgwfd21";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "19e51611da83d6be54ddafce4a4af510cb3e9ea4";
+      sha256 = "09pcfzx7nrma0gjv93jx57c28farf8m1qm4x07vk5505wlcgvvfl";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "cd8b52f8269e0feb286dfeef29f8fe4d5b397e0b";
+      sha256 = "1hj2ag9knxflpjibck0n90jrhsrqz7qvad4qnif7jddyapi9bqzl";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/misc/makeself/default.nix b/nixpkgs/pkgs/applications/misc/makeself/default.nix
new file mode 100644
index 000000000000..6fcd86596fb3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/makeself/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  version = "2.4.2";
+  pname = "makeself";
+
+  src = fetchFromGitHub {
+    owner = "megastep";
+    repo = "makeself";
+    rev = "release-${version}";
+    fetchSubmodules = true;
+    sha256 = "07cq7q71bv3fwddkp2863ylry2ivds00f8sjy8npjpdbkailxm21";
+  };
+
+  patchPhase = "patchShebangs test";
+
+  doCheck = true;
+  checkTarget = "test";
+
+  installPhase = ''
+    mkdir -p $out/{bin,share/{${pname}-${version},man/man1}}
+    cp makeself.lsm README.md $out/share/${pname}-${version}
+    cp makeself.sh $out/bin/makeself
+    cp makeself.1  $out/share/man/man1/
+    cp makeself-header.sh $out/share/${pname}-${version}
+  '';
+
+  fixupPhase = ''
+    sed -e "s|^HEADER=.*|HEADER=$out/share/${pname}-${version}/makeself-header.sh|" -i $out/bin/makeself
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://megastep.org/makeself";
+    description = "Utility to create self-extracting packages";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.wmertens ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/mako/default.nix b/nixpkgs/pkgs/applications/misc/mako/default.nix
new file mode 100644
index 000000000000..e1b14acb46f4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mako/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, scdoc
+, systemd, pango, cairo, gdk-pixbuf
+, wayland, wayland-protocols
+, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "mako";
+  version = "1.4.1";
+
+  src = fetchFromGitHub {
+    owner = "emersion";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0hwvibpnrximb628w9dsfjpi30b5jy7nfkm4d94z5vhp78p43vxh";
+  };
+
+  nativeBuildInputs = [ meson ninja pkgconfig scdoc wayland-protocols wrapGAppsHook ];
+  buildInputs = [ systemd pango cairo gdk-pixbuf wayland ];
+
+  mesonFlags = [ "-Dzsh-completions=true" ];
+
+  meta = with stdenv.lib; {
+    description = "A lightweight Wayland notification daemon";
+    homepage = "https://wayland.emersion.fr/mako/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ dywedir synthetica ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/mapproxy/default.nix b/nixpkgs/pkgs/applications/misc/mapproxy/default.nix
new file mode 100644
index 000000000000..5676aef23607
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mapproxy/default.nix
@@ -0,0 +1,64 @@
+{ lib
+, pkgs
+, python
+}:
+let
+  py = python.override {
+    packageOverrides = self: super: {
+      pyproj = super.pyproj.overridePythonAttrs (oldAttrs: rec {
+      version = "1.9.6";
+      src = pkgs.fetchFromGitHub {
+        owner = "pyproj4";
+        repo = "pyproj";
+        rev = "v${version}rel";
+        sha256 = "18v4h7jx4mcc0x2xy8y7dfjq9bzsyxs8hdb6v67cabvlz2njziqy";
+      };
+      nativeBuildInputs = with python.pkgs; [ cython ];
+      patches = [ ];
+      checkPhase = ''
+        runHook preCheck
+        pushd unittest  # changing directory should ensure we're importing the global pyproj
+        ${python.interpreter} test.py && ${python.interpreter} -c "import doctest, pyproj, sys; sys.exit(doctest.testmod(pyproj)[0])"
+        popd
+        runHook postCheck
+      '';
+      });
+    };
+  };
+in
+with py.pkgs;
+buildPythonApplication rec {
+  pname = "MapProxy";
+  version = "1.12.0";
+  src = fetchPypi {
+  inherit pname version;
+  sha256 = "622e3a7796ef861ba21e42231b49c18d00d75f03eaf3f01a2b7687be7568e2ec";
+  };
+  prePatch = ''
+    substituteInPlace mapproxy/util/ext/serving.py --replace "args = [sys.executable] + sys.argv" "args = sys.argv"
+  '';
+  propagatedBuildInputs = [
+    boto3 # needed for caches service
+    pillow
+    pyyaml
+    pyproj
+    shapely
+    gdal
+    lxml
+    setuptools
+  ];
+  # Tests are disabled:
+  # 1) Dependency list is huge.
+  #    https://github.com/mapproxy/mapproxy/blob/master/requirements-tests.txt
+  #
+  # 2) There are security issues with package Riak
+  #    https://github.com/NixOS/nixpkgs/issues/33876
+  #    https://github.com/NixOS/nixpkgs/pull/56480
+  doCheck = false;
+  meta = with lib; {
+  description = "MapProxy is an open source proxy for geospatial data";
+  homepage = "https://mapproxy.org/";
+  license = licenses.asl20;
+  maintainers = with maintainers; [ rakesh4g ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/marktext/default.nix b/nixpkgs/pkgs/applications/misc/marktext/default.nix
new file mode 100644
index 000000000000..5813fc15c0d0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/marktext/default.nix
@@ -0,0 +1,35 @@
+{ appimageTools, fetchurl, lib }:
+
+let
+  pname = "marktext";
+  version = "v0.16.0-rc.2";
+in
+appimageTools.wrapType2 rec {
+  name = "${pname}-${version}-binary";
+
+  src = fetchurl {
+    url = "https://github.com/marktext/marktext/releases/download/${version}/marktext-x86_64.AppImage";
+    sha256 = "1w1mxa1j94zr36xhvlhzq8d77pi359vdxqb2j8mnz2bib9khxk9k";
+  };
+
+  profile = ''
+    export LC_ALL=C.UTF-8
+  '';
+
+  multiPkgs = null; # no 32bit needed
+  extraPkgs = p: (appimageTools.defaultFhsEnvArgs.multiPkgs p) ++ [
+    p.libsecret
+    p.xlibs.libxkbfile
+  ];
+
+  # Strip version from binary name.
+  extraInstallCommands = "mv $out/bin/${name} $out/bin/${pname}";
+
+  meta = with lib; {
+    description = "A simple and elegant markdown editor, available for Linux, macOS and Windows.";
+    homepage = "https://marktext.app";
+    license = licenses.mit;
+    maintainers = with maintainers; [ nh2 ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/masterpdfeditor/default.nix b/nixpkgs/pkgs/applications/misc/masterpdfeditor/default.nix
new file mode 100644
index 000000000000..5df4a1b8d93c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/masterpdfeditor/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, sane-backends, qtbase, qtsvg, nss, autoPatchelfHook, lib, wrapQtAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "masterpdfeditor";
+  version = "5.4.38";
+
+  src = fetchurl {
+    url = "https://code-industry.net/public/master-pdf-editor-${version}-qt5.amd64.tar.gz";
+    sha256 = "0fidy8gd4mqvyfgmrwdiz8z53dyzihqqhgfrffj0z0idm2zi4mcq";
+  };
+
+  nativeBuildInputs = [ autoPatchelfHook wrapQtAppsHook ];
+
+  buildInputs = [ nss qtbase qtsvg sane-backends stdenv.cc.cc ];
+
+  dontStrip = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    p=$out/opt/masterpdfeditor
+    mkdir -p $out/bin
+
+    substituteInPlace masterpdfeditor5.desktop \
+      --replace 'Exec=/opt/master-pdf-editor-5' "Exec=$out/bin" \
+      --replace 'Path=/opt/master-pdf-editor-5' "Path=$out/bin" \
+      --replace 'Icon=/opt/master-pdf-editor-5' "Icon=$out/share/pixmaps"
+
+    install -Dm644 -t $out/share/pixmaps      masterpdfeditor5.png
+    install -Dm644 -t $out/share/applications masterpdfeditor5.desktop
+    install -Dm755 -t $p                      masterpdfeditor5
+    install -Dm644 license.txt $out/share/$name/LICENSE
+    ln -s $p/masterpdfeditor5 $out/bin/masterpdfeditor5
+    cp -v -r stamps templates lang fonts $p
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Master PDF Editor";
+    homepage = "https://code-industry.net/free-pdf-editor/";
+    license = licenses.unfreeRedistributable;
+    platforms = with platforms; [ "x86_64-linux" ];
+    maintainers = with maintainers; [ cmcdragonkai flokli ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/mbutil/default.nix b/nixpkgs/pkgs/applications/misc/mbutil/default.nix
new file mode 100644
index 000000000000..b108d1a5647e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mbutil/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonApplication, fetchFromGitHub, nose }:
+
+buildPythonApplication rec {
+  pname = "mbutil";
+  version = "0.3.0";
+
+  src = fetchFromGitHub {
+    owner = "mapbox";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "06d62r89h026asaa4ryzb23m86j0cmbvy54kf4zl5f35sgiha45z";
+  };
+
+  checkInputs = [ nose ];
+  checkPhase = "nosetests";
+
+  meta = with lib; {
+    description = "An importer and exporter for MBTiles";
+    homepage = "https://github.com/mapbox/mbutil";
+    license = licenses.bsd3;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ sikmir ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/mdp/default.nix b/nixpkgs/pkgs/applications/misc/mdp/default.nix
new file mode 100644
index 000000000000..b96c4d00214b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mdp/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, ncurses }:
+
+stdenv.mkDerivation rec {
+  version = "1.0.15";
+  pname = "mdp";
+
+  src = fetchFromGitHub {
+    owner = "visit1985";
+    repo = "mdp";
+    rev = version;
+    sha256 = "1m9a0vvyw2m55cn7zcq011vrjkiaj5a3g5g6f2dpq953gyi7gff9";
+  };
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  buildInputs = [ ncurses ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/visit1985/mdp";
+    description = "A command-line based markdown presentation tool";
+    maintainers = with maintainers; [ matthiasbeyer vrthra ];
+    license = licenses.gpl3;
+    platforms = with platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/mediainfo-gui/default.nix b/nixpkgs/pkgs/applications/misc/mediainfo-gui/default.nix
new file mode 100644
index 000000000000..79dcf1053614
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mediainfo-gui/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, autoreconfHook, pkgconfig, libzen, libmediainfo, wxGTK
+, desktop-file-utils, libSM, imagemagick }:
+
+stdenv.mkDerivation rec {
+  version = "20.03";
+  pname = "mediainfo-gui";
+  src = fetchurl {
+    url = "https://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz";
+    sha256 = "1f1shnycf0f1fwka9k9s250l228xjkg0k4k73h8bpld8msighgnw";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ libzen libmediainfo wxGTK desktop-file-utils libSM
+                  imagemagick ];
+
+  sourceRoot = "./MediaInfo/Project/GNU/GUI/";
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Supplies technical and tag information about a video or audio file (GUI version)";
+    longDescription = ''
+      MediaInfo is a convenient unified display of the most relevant technical
+      and tag data for video and audio files.
+    '';
+    homepage = "https://mediaarea.net/";
+    license = licenses.bsd2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.devhell ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/mediainfo/default.nix b/nixpkgs/pkgs/applications/misc/mediainfo/default.nix
new file mode 100644
index 000000000000..1ed1ef4afb53
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mediainfo/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, autoreconfHook, pkgconfig, libzen, libmediainfo, zlib }:
+
+stdenv.mkDerivation rec {
+  version = "20.03";
+  pname = "mediainfo";
+  src = fetchurl {
+    url = "https://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz";
+    sha256 = "1f1shnycf0f1fwka9k9s250l228xjkg0k4k73h8bpld8msighgnw";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ libzen libmediainfo zlib ];
+
+  sourceRoot = "./MediaInfo/Project/GNU/CLI/";
+
+  configureFlags = [ "--with-libmediainfo=${libmediainfo}" ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Supplies technical and tag information about a video or audio file";
+    longDescription = ''
+      MediaInfo is a convenient unified display of the most relevant technical
+      and tag data for video and audio files.
+    '';
+    homepage = "https://mediaarea.net/";
+    license = licenses.bsd2;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.devhell ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/megacmd/default.nix b/nixpkgs/pkgs/applications/misc/megacmd/default.nix
new file mode 100644
index 000000000000..899b069f0542
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/megacmd/default.nix
@@ -0,0 +1,88 @@
+{ stdenv
+, autoconf
+, automake
+, c-ares
+, cryptopp
+, curl
+, fetchFromGitHub
+, ffmpeg_3
+, freeimage
+, gcc-unwrapped
+, libmediainfo
+, libraw
+, libsodium
+, libtool
+, libuv
+, libzen
+, pcre-cpp
+, pkgconfig
+, readline
+, sqlite
+}:
+
+stdenv.mkDerivation rec {
+  pname = "megacmd";
+  version = "1.2.0";
+
+  src = fetchFromGitHub {
+    owner = "meganz";
+    repo = "MEGAcmd";
+    rev = "${version}_Linux";
+    sha256 = "0czyhsms0a0237d6h9b21n9p4nm4zkjanhhbvw26k6266g6c1nyr";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    autoconf
+    automake
+    libtool
+    pkgconfig
+  ];
+
+  buildInputs = [
+    c-ares
+    cryptopp
+    curl
+    ffmpeg_3
+    freeimage
+    gcc-unwrapped
+    libmediainfo
+    libraw
+    libsodium
+    libtool
+    libuv
+    libzen
+    pcre-cpp
+    readline
+    sqlite
+  ];
+
+  preConfigure = ''
+    ./autogen.sh
+  '';
+
+  configureFlags = [
+    "--disable-curl-checks"
+    "--disable-examples"
+    "--with-cares"
+    "--with-cryptopp"
+    "--with-curl"
+    "--with-ffmpeg"
+    "--with-freeimage"
+    "--with-libmediainfo"
+    "--with-libuv"
+    "--with-libzen"
+    "--with-pcre"
+    "--with-readline"
+    "--with-sodium"
+    "--with-termcap"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "MEGA Command Line Interactive and Scriptable Application";
+    homepage    = "https://mega.nz/";
+    license     = licenses.unfree;
+    platforms   = [ "i686-linux" "x86_64-linux" ];
+    maintainers = [ maintainers.wedens ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/megasync/default.nix b/nixpkgs/pkgs/applications/misc/megasync/default.nix
new file mode 100644
index 000000000000..e04833cd4b2c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/megasync/default.nix
@@ -0,0 +1,96 @@
+{ stdenv, autoconf, automake, c-ares, cryptopp, curl, doxygen, fetchFromGitHub
+, fetchpatch, ffmpeg_3, libmediainfo, libraw, libsodium, libtool, libuv, libzen
+, lsb-release, mkDerivation, pkgconfig, qtbase, qttools, sqlite, swig, unzip
+, wget }:
+
+mkDerivation rec {
+  pname = "megasync";
+  version = "4.3.0.8";
+
+  src = fetchFromGitHub {
+    owner = "meganz";
+    repo = "MEGAsync";
+    rev = "v${version}_Linux";
+    sha256 = "1rhxkc6j3039rcsi8cxy3n00g6w7acir82ymnksbpsnp4yxqv5r3";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs =
+    [ autoconf automake doxygen lsb-release pkgconfig qttools swig ];
+  buildInputs = [
+    c-ares
+    cryptopp
+    curl
+    ffmpeg_3
+    libmediainfo
+    libraw
+    libsodium
+    libtool
+    libuv
+    libzen
+    qtbase
+    sqlite
+    unzip
+    wget
+  ];
+
+  patches = [
+    # Distro and version targets attempt to use lsb_release which is broken
+    # (see issue: https://github.com/NixOS/nixpkgs/issues/22729)
+    ./noinstall-distro-version.patch
+    # megasync target is not part of the install rule thanks to a commented block
+    ./install-megasync.patch
+  ];
+
+  postPatch = ''
+    for file in $(find src/ -type f \( -iname configure -o -iname \*.sh  \) ); do
+      substituteInPlace "$file" --replace "/bin/bash" "${stdenv.shell}"
+    done
+  '';
+
+  dontUseQmakeConfigure = true;
+  enableParallelBuilding = true;
+
+  preConfigure = ''
+    cd src/MEGASync/mega
+    ./autogen.sh
+  '';
+
+  configureFlags = [
+    "--disable-examples"
+    "--disable-java"
+    "--disable-php"
+    "--enable-chat"
+    "--with-cares"
+    "--with-cryptopp"
+    "--with-curl"
+    "--with-ffmpeg"
+    "--without-freeimage" # unreferenced even when found
+    "--without-readline"
+    "--without-termcap"
+    "--with-sodium"
+    "--with-sqlite"
+    "--with-zlib"
+  ];
+
+  postConfigure = ''
+    cd ../..
+  '';
+
+  preBuild = ''
+    qmake CONFIG+="release" MEGA.pro
+    pushd MEGASync
+      lrelease MEGASync.pro
+      DESKTOP_DESTDIR="$out" qmake PREFIX="$out" -o Makefile MEGASync.pro CONFIG+=release
+    popd
+  '';
+
+  meta = with stdenv.lib; {
+    description =
+      "Easy automated syncing between your computers and your MEGA Cloud Drive";
+    homepage = "https://mega.nz/";
+    license = licenses.unfree;
+    platforms = [ "i686-linux" "x86_64-linux" ];
+    maintainers = [ maintainers.michojel ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/megasync/install-megasync.patch b/nixpkgs/pkgs/applications/misc/megasync/install-megasync.patch
new file mode 100644
index 000000000000..7d8748528e7f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/megasync/install-megasync.patch
@@ -0,0 +1,21 @@
+Index: source/src/MEGASync/MEGASync.pro
+===================================================================
+--- source.orig/src/MEGASync/MEGASync.pro
++++ source/src/MEGASync/MEGASync.pro
+@@ -28,11 +28,11 @@ unix:!macx {
+     TARGET = megasync
+ 
+ #    Uncomment the following if "make install" doesn't copy megasync in /usr/bin directory
+-#    isEmpty(PREFIX) {
+-#        PREFIX = /usr
+-#    }
+-#    target.path = $$PREFIX/bin
+-#    INSTALLS += target
++    isEmpty(PREFIX) {
++        PREFIX = /usr
++    }
++    target.path = $$PREFIX/bin
++    INSTALLS += target
+ }
+ else {
+     TARGET = MEGAsync
diff --git a/nixpkgs/pkgs/applications/misc/megasync/noinstall-distro-version.patch b/nixpkgs/pkgs/applications/misc/megasync/noinstall-distro-version.patch
new file mode 100644
index 000000000000..bbf100737bc4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/megasync/noinstall-distro-version.patch
@@ -0,0 +1,13 @@
+Index: source/src/MEGASync/platform/platform.pri
+===================================================================
+--- source.orig/src/MEGASync/platform/platform.pri
++++ source/src/MEGASync/platform/platform.pri
+@@ -37,7 +37,7 @@ unix:!macx {
+     system(command -v lsb_release): version.commands = lsb_release -rs > $$version.target
+ 	version.files = $$version.target
+ 
+-	INSTALLS += distro version
++	# INSTALLS += distro version
+ 
+     QT += dbus
+     SOURCES += $$PWD/linux/LinuxPlatform.cpp \
diff --git a/nixpkgs/pkgs/applications/misc/memo/default.nix b/nixpkgs/pkgs/applications/misc/memo/default.nix
new file mode 100644
index 000000000000..66fe0d7207c2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/memo/default.nix
@@ -0,0 +1,52 @@
+{ fetchFromGitHub, silver-searcher, tree, man, stdenv,
+  git,
+  pandocSupport ? true, pandoc ? null
+  , ... }:
+
+assert pandocSupport -> pandoc != null;
+
+stdenv.mkDerivation rec {
+
+  pname = "memo";
+
+  version = "0.8";
+
+  src = fetchFromGitHub {
+    owner  = "mrVanDalo";
+    repo   = "memo";
+    rev    = version;
+    sha256 = "0azx2bx6y7j0637fg3m8zigcw09zfm2mw9wjfg218sx88cm1wdkp";
+  };
+
+  installPhase = let
+    pandocReplacement = if pandocSupport then
+      "pandoc_cmd=${pandoc}/bin/pandoc"
+    else
+      "#pandoc_cmd=pandoc";
+  in ''
+    mkdir -p $out/{bin,share/man/man1,share/bash-completion/completions,share/zsh/site-functions}
+    substituteInPlace memo \
+      --replace "ack_cmd=ack"       "ack_cmd=${silver-searcher}/bin/ag" \
+      --replace "tree_cmd=tree"     "tree_cmd=${tree}/bin/tree" \
+      --replace "man_cmd=man"       "man_cmd=${man}/bin/man" \
+      --replace "git_cmd=git"       "git_cmd=${git}/bin/git" \
+      --replace "pandoc_cmd=pandoc" "${pandocReplacement}"
+    mv memo $out/bin/
+    mv doc/memo.1 $out/share/man/man1/memo.1
+    mv completion/bash/memo.sh $out/share/bash-completion/completions/memo.sh
+    mv completion/zsh/_memo    $out/share/zsh/site-functions/_memo
+  '';
+
+  meta = {
+    description = "A simple tool written in bash to memorize stuff";
+    longDescription = ''
+      A simple tool written in bash to memorize stuff.
+      Memo organizes is structured through topics which are folders in ~/memo.
+    '';
+    homepage = "http://palovandalo.com/memo/";
+    downloadPage = "https://github.com/mrVanDalo/memo/releases";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.mrVanDalo ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/mencal/default.nix b/nixpkgs/pkgs/applications/misc/mencal/default.nix
new file mode 100644
index 000000000000..df0a4db7fc70
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mencal/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, perl }:
+
+stdenv.mkDerivation rec {
+  name = "mencal-3.0";
+
+  src = fetchurl {
+    url = "http://kyberdigi.cz/projects/mencal/files/${name}.tar.gz";
+    sha256 = "9328d0b2f3f57847e8753c5184531f4832be7123d1b6623afdff892074c03080";
+  };
+
+  installPhase = ''
+      mkdir -p $out/bin
+      cp mencal $out/bin/
+    '';
+
+  buildInputs = [ perl ];
+
+  meta = with stdenv.lib; {
+    description = "Menstruation calendar";
+    longDescription = ''
+      Mencal is a simple variation of the well-known unix command cal.
+      The main difference is that you can have some periodically repeating
+      days highlighted in color. This can be used to track
+      menstruation (or other) cycles conveniently.
+    '';
+    homepage = "http://www.kyberdigi.cz/projects/mencal/english.html";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.mmahut ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/menumaker/default.nix b/nixpkgs/pkgs/applications/misc/menumaker/default.nix
new file mode 100644
index 000000000000..f76d6cb6b8a8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/menumaker/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, pythonPackages }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "menumaker";
+  version = "0.99.12";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/menumaker/${pname}-${version}.tar.gz";
+    sha256 = "034v5204bsgkzzk6zfa5ia63q95gln47f7hwf96yvad5hrhmd8z3";
+  };
+
+  format = "other";
+
+  meta = with stdenv.lib; {
+    description = "Heuristics-driven menu generator for several window managers";
+    homepage = "http://menumaker.sourceforge.net";
+    license = licenses.bsd2;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/merkaartor/default.nix b/nixpkgs/pkgs/applications/misc/merkaartor/default.nix
new file mode 100644
index 000000000000..79ee45b4c1c4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/merkaartor/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, makeWrapper, qmake, pkgconfig, boost, gdal, proj
+, qtbase, qtsvg, qtwebview, qtwebkit }:
+
+stdenv.mkDerivation rec {
+  pname = "merkaartor";
+  version = "unstable-2019-11-12";
+
+  src = fetchFromGitHub {
+    owner = "openstreetmap";
+    repo = "merkaartor";
+    rev = "29b3388680a03f1daac0037a2b504ea710da879a";
+    sha256 = "0h3d3srzl06p2ajq911j05zr4vkl88qij18plydx45yqmvyvh0xz";
+  };
+
+  nativeBuildInputs = [ makeWrapper qmake pkgconfig ];
+
+  buildInputs = [ boost gdal proj qtbase qtsvg qtwebview qtwebkit ];
+
+  enableParallelBuilding = true;
+
+  NIX_CFLAGS_COMPILE = "-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H";
+
+  postInstall = ''
+    wrapProgram $out/bin/merkaartor \
+      --set QT_QPA_PLATFORM_PLUGIN_PATH ${qtbase.bin}/lib/qt-*/plugins/platforms
+  '';
+
+  meta = with stdenv.lib; {
+    description = "OpenStreetMap editor";
+    homepage = "http://merkaartor.be/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/metamorphose2/default.nix b/nixpkgs/pkgs/applications/misc/metamorphose2/default.nix
new file mode 100644
index 000000000000..a81aec9d0364
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/metamorphose2/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchgit, makeWrapper, gettext
+, python27, python2Packages
+}:
+
+stdenv.mkDerivation {
+  pname = "metamorphose2";
+  version = "0.9.0beta";
+
+  # exif-py vendored via submodule
+  # mutagen vendored via copy
+  src = fetchgit {
+    url = "https://github.com/metamorphose/metamorphose2.git";
+    #rev = "refs/tags/v2.${version}"; #for when wxPython3 support is released
+    rev = "d2bdd6a86340b9668e93b35a6a568894c9909d68";
+    sha256 = "0ivcb3c8hidrff0ivl4dnwa2p3ihpqjdbvdig8dhg9mm5phdbabn";
+  };
+
+  postPatch = ''
+    substituteInPlace messages/Makefile \
+      --replace "\$(shell which msgfmt)" "${gettext}/bin/msgfmt"
+  '';
+
+  postInstall = ''
+    rm $out/bin/metamorphose2
+    makeWrapper ${python27}/bin/python $out/bin/metamorphose2 \
+      --prefix PYTHONPATH : $PYTHONPATH:$(toPythonPath "$out") \
+      --add-flags "-O $out/share/metamorphose2/metamorphose2.py -w=3"
+  '';
+
+  buildInput = [ gettext python27 ];
+  nativeBuildInputs = [ makeWrapper ];
+  propagatedBuildInputs = [ python2Packages.wxPython python2Packages.pillow ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    description = "a graphical mass renaming program for files and folders";
+    homepage    = "https://github.com/metamorphose/metamorphose2";
+    license     = with licenses; gpl3Plus;
+    maintainers = with maintainers; [ ramkromberg ];
+    platforms   = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/metar/default.nix b/nixpkgs/pkgs/applications/misc/metar/default.nix
new file mode 100644
index 000000000000..f5185c639873
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/metar/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchgit, curl }:
+
+stdenv.mkDerivation {
+  name = "metar-20161013.1";
+
+  src = fetchgit {
+    url = "https://github.com/keesL/metar.git";
+    rev = "20e9ca69faea330f6c2493b6829131c24cb55147";
+    sha256 = "1fgrlnpasqf1ihh9y6zy6mzzybqx0lxvh7gmv03rjdb55dr42dxj";
+  };
+
+  buildInputs = [ curl ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/keesL/metar";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.zalakain ];
+    description = "Downloads weather reports and optionally decodes them";
+    longDescription = ''
+      METAR reports are meteorogical weather reports for aviation. Metar is a small
+      program which downloads weather reports for user-specified stations and
+      optionally decodes them into a human-readable format.
+
+      Currently, metar supports decoding date/time, wind, visibility, cloud layers,
+      temperature, air pressure and weather phenomena, such as rain, fog, etc. Also,
+      more work in the area of clouds need to be done, as support for Cumulus or
+      Cumulunimbus is not yet decoded.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/michabo/default.nix b/nixpkgs/pkgs/applications/misc/michabo/default.nix
new file mode 100644
index 000000000000..015a326fdc9b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/michabo/default.nix
@@ -0,0 +1,53 @@
+{ lib
+, mkDerivation
+, makeDesktopItem
+, fetchFromGitLab
+, qmake
+# qt
+, qtbase
+, qtwebsockets
+}:
+
+let
+  desktopItem = makeDesktopItem {
+    type = "Application";
+    name = "Michabo";
+    desktopName = "Michabo";
+    exec = "Michabo";
+  };
+
+in mkDerivation rec {
+  pname = "michabo";
+  version = "0.1";
+
+  src = fetchFromGitLab {
+    domain = "git.pleroma.social";
+    owner = "kaniini";
+    repo = "michabo";
+    rev = "v${version}";
+    sha256 = "0pl4ymdb36r0kwlclfjjp6b1qml3fm9ql7ag5inprny5y8vcjpzn";
+  };
+
+  nativeBuildInputs = [
+    qmake
+  ];
+  buildInputs = [
+    qtbase
+    qtwebsockets
+  ];
+
+  qmakeFlags = [ "michabo.pro" "DESTDIR=${placeholder "out"}/bin" ];
+
+  postInstall = ''
+    ln -s ${desktopItem}/share $out/share
+  '';
+
+  meta = with lib; {
+    description = "A native desktop app for Pleroma and Mastodon servers";
+    homepage = "https://git.pleroma.social/kaniini/michabo";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ fgaz ];
+    platforms = platforms.all;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/microcom/default.nix b/nixpkgs/pkgs/applications/misc/microcom/default.nix
new file mode 100644
index 000000000000..8377505ec1c5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/microcom/default.nix
@@ -0,0 +1,29 @@
+{ stdenv,
+  lib,
+  fetchFromGitHub,
+  readline,
+  autoreconfHook }:
+
+stdenv.mkDerivation rec {
+  pname = "microcom";
+  version = "2019.01.0";
+
+  src = fetchFromGitHub {
+    owner = "pengutronix";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "056v28hvagnzns6p8i3bq8609k82d3w1ab2lab5dr4cdfwhs4pqj";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ readline ];
+
+  meta = with lib; {
+    description = "A minimalistic terminal program for communicating
+    with devices over a serial connection";
+    inherit (src.meta) homepage;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ emantor ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/milu/default.nix b/nixpkgs/pkgs/applications/misc/milu/default.nix
new file mode 100644
index 000000000000..84cc0e0bc8dc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/milu/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub, unzip, pkgconfig, glib, llvmPackages }:
+
+stdenv.mkDerivation {
+  pname = "milu-nightly";
+  version = "2016-05-09";
+
+  src = fetchFromGitHub {
+    sha256 = "14cglw04cliwlpvw7qrs6rfm5sv6qa558d7iby5ng3wdjcwx43nk";
+    rev = "b5f2521859c0319d321ad3c1ad793b826ab5f6e1";
+    repo = "Milu";
+    owner = "yuejia";
+  };
+
+  hardeningDisable = [ "format" ];
+
+  preConfigure = ''
+    sed -i 's#/usr/bin/##g' Makefile
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp bin/milu $out/bin
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+     glib
+     unzip
+     llvmPackages.libclang
+  ];
+
+  meta = {
+    description = "Higher Order Mutation Testing Tool for C and C++ programs";
+    homepage = "https://github.com/yuejia/Milu";
+    license = stdenv.lib.licenses.bsd2;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.vrthra ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/minder/default.nix b/nixpkgs/pkgs/applications/misc/minder/default.nix
new file mode 100644
index 000000000000..28157d615377
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/minder/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchFromGitHub
+, pkgconfig, meson, ninja, python3
+, wrapGAppsHook, vala, shared-mime-info
+, cairo, pantheon, glib, gtk3, libxml2, libgee, libarchive
+, discount, gtksourceview3
+, hicolor-icon-theme # for setup-hook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "minder";
+  version = "1.8.0";
+
+  src = fetchFromGitHub {
+    owner = "phase1geo";
+    repo = pname;
+    rev = version;
+    sha256 = "13klasvrndwsmpcxkgy7kvsl2jqmp2cl52vb4i0hk18lr004scgy";
+  };
+
+  nativeBuildInputs = [ pkgconfig meson ninja python3 wrapGAppsHook vala shared-mime-info ];
+  buildInputs = [ cairo pantheon.granite glib gtk3 libxml2 libgee libarchive hicolor-icon-theme discount gtksourceview3 ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  postFixup = ''
+    for x in $out/bin/*; do
+      ln -vrs $x "$out/bin/''${x##*.}"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Mind-mapping application for Elementary OS";
+    homepage = "https://github.com/phase1geo/Minder";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/minergate-cli/default.nix b/nixpkgs/pkgs/applications/misc/minergate-cli/default.nix
new file mode 100644
index 000000000000..61b900c40122
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/minergate-cli/default.nix
@@ -0,0 +1,36 @@
+{ fetchurl, stdenv, dpkg, makeWrapper, openssl }:
+
+stdenv.mkDerivation {
+  version = "8.2";
+  pname = "minergate-cli";
+  src = fetchurl {
+    url = "https://minergate.com/download/ubuntu-cli";
+    sha256 = "393c5ba236f6f92c449496fcda9509f4bfd3887422df98ffa59b3072124a99d8";
+  };
+
+  nativeBuildInputs = [ dpkg makeWrapper ];
+
+  phases = [ "installPhase" ];
+
+  installPhase = ''
+    dpkg-deb -x $src $out
+    pgm=$out/opt/minergate-cli/minergate-cli
+
+    interpreter=${stdenv.glibc}/lib/ld-linux-x86-64.so.2
+    patchelf --set-interpreter "$interpreter" $pgm
+
+    wrapProgram $pgm --prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath [ openssl stdenv.cc.cc ]} 
+
+    rm $out/usr/bin/minergate-cli
+    mkdir -p $out/bin
+    ln -s $pgm $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Minergate CPU/GPU console client mining software";
+    homepage = "https://www.minergate.com/";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ bfortz ];
+    platforms = [ "x86_64-linux" ];
+};
+}
diff --git a/nixpkgs/pkgs/applications/misc/minergate/default.nix b/nixpkgs/pkgs/applications/misc/minergate/default.nix
new file mode 100644
index 000000000000..6fbe39c4da2d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/minergate/default.nix
@@ -0,0 +1,36 @@
+{ fetchurl, stdenv, dpkg, makeWrapper, fontconfig, freetype, openssl, xorg, xkeyboard_config }:
+
+stdenv.mkDerivation {
+  version = "8.1";
+  pname = "minergate";
+  src = fetchurl {
+    url = "https://minergate.com/download/ubuntu";
+    sha256 = "1dbbbb8e0735cde239fca9e82c096dcc882f6cecda20bba7c14720a614c16e13";
+  };
+
+  nativeBuildInputs = [ dpkg makeWrapper ];
+
+  phases = [ "installPhase" ];
+
+  installPhase = ''
+    dpkg-deb -x $src $out
+    pgm=$out/opt/minergate/minergate
+
+    interpreter=${stdenv.glibc}/lib/ld-linux-x86-64.so.2
+    patchelf --set-interpreter "$interpreter" $pgm
+
+    wrapProgram $pgm --prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath [ fontconfig freetype openssl stdenv.cc.cc xorg.libX11 xorg.libxcb ]} --prefix "QT_XKB_CONFIG_ROOT" ":" "${xkeyboard_config}/share/X11/xkb"
+
+    rm $out/usr/bin/minergate
+    mkdir -p $out/bin
+    ln -s $out/opt/minergate/minergate $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Minergate CPU/GPU mining software";
+    homepage = "https://www.minergate.com/";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ bfortz ];
+    platforms = [ "x86_64-linux" ];
+};
+}
diff --git a/nixpkgs/pkgs/applications/misc/mkgmap/build.xml.patch b/nixpkgs/pkgs/applications/misc/mkgmap/build.xml.patch
new file mode 100644
index 000000000000..6ec40786b249
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mkgmap/build.xml.patch
@@ -0,0 +1,11 @@
+--- a/build.xml	2019-08-26 23:22:55.104829846 +0300
++++ b/build.xml	2019-08-27 00:11:07.366257594 +0300
+@@ -227,7 +227,7 @@
+ 	</target>
+ 
+ 	<!-- Compile the product itself (no tests). -->
+-	<target name="compile" depends="prepare, resolve-compile"
++	<target name="compile" depends="prepare"
+ 					description="main compilation">
+ 
+ 		<javac srcdir="${src}" destdir="${build.classes}" encoding="utf-8" debug="true" includeantruntime="false">
diff --git a/nixpkgs/pkgs/applications/misc/mkgmap/default.nix b/nixpkgs/pkgs/applications/misc/mkgmap/default.nix
new file mode 100644
index 000000000000..471ec1d4a76a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mkgmap/default.nix
@@ -0,0 +1,57 @@
+{ stdenv, fetchurl, fetchsvn, jdk, jre, ant, makeWrapper }:
+
+let
+  fastutil = fetchurl {
+    url = "http://ivy.mkgmap.org.uk/repo/it.unimi.dsi/fastutil/6.5.15-mkg.1b/jars/fastutil.jar";
+    sha256 = "0d88m0rpi69wgxhnj5zh924q4zsvxq8m4ybk7m9mr3gz1hx0yx8c";
+  };
+  osmpbf = fetchurl {
+    url = "http://ivy.mkgmap.org.uk/repo/crosby/osmpbf/1.3.3/jars/osmpbf.jar";
+    sha256 = "0zb4pqkwly5z30ww66qhhasdhdrzwmrw00347yrbgyk2ii4wjad3";
+  };
+  protobuf = fetchurl {
+    url = "https://repo1.maven.org/maven2/com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0.jar";
+    sha256 = "0x6c4pbsizvk3lm6nxcgi1g2iqgrxcna1ip74lbn01f0fm2wdhg0";
+  };
+in
+
+stdenv.mkDerivation rec {
+  pname = "mkgmap";
+  version = "4432";
+
+  src = fetchsvn {
+    url = "https://svn.mkgmap.org.uk/mkgmap/mkgmap/trunk";
+    rev = version;
+    sha256 = "1z1ppf9v1b9clnx20v15xkmdrfw6q4h7i15drzxsdh2wl6bafzvx";
+  };
+
+  # This patch removes from the build process
+  # the automatic download of dependencies (see configurePhase)
+  patches = [ ./build.xml.patch ];
+
+  nativeBuildInputs = [ jdk ant makeWrapper ];
+
+  configurePhase = ''
+    mkdir -p lib/compile
+    cp ${fastutil} ${osmpbf} ${protobuf} lib/compile/
+  '';
+
+  buildPhase = "ant";
+
+  installPhase = ''
+    cd dist
+    install -Dm644 mkgmap.jar $out/share/java/mkgmap/mkgmap.jar
+    install -Dm644 doc/mkgmap.1 $out/share/man/man1/mkgmap.1
+    cp -r lib/ $out/share/java/mkgmap/
+    makeWrapper ${jre}/bin/java $out/bin/mkgmap \
+      --add-flags "-jar $out/share/java/mkgmap/mkgmap.jar"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Create maps for Garmin GPS devices from OpenStreetMap (OSM) data";
+    homepage = "http://www.mkgmap.org.uk";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ sikmir ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/mlterm/default.nix b/nixpkgs/pkgs/applications/misc/mlterm/default.nix
new file mode 100644
index 000000000000..f58fb13e61f0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mlterm/default.nix
@@ -0,0 +1,93 @@
+{ stdenv, fetchurl, pkgconfig, autoconf, makeDesktopItem
+, libX11, gdk-pixbuf, cairo, libXft, gtk3, vte
+, harfbuzz #substituting glyphs with opentype fonts
+, fribidi, m17n_lib #bidi and encoding
+, openssl, libssh2 #build-in ssh
+}:
+
+stdenv.mkDerivation rec {
+  pname = "mlterm";
+  version = "3.9.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/mlterm/01release/${pname}-${version}/${pname}-${version}.tar.gz";
+    sha256 = "17h6j4nmbyvsx2shm8mqm7smzq9i7mbqxjw19c2m0rhf5yzqhr3k";
+  };
+
+  nativeBuildInputs = [ pkgconfig autoconf ];
+  buildInputs = [
+    libX11 gdk-pixbuf.dev cairo libXft gtk3 vte
+    harfbuzz fribidi m17n_lib openssl libssh2
+  ];
+
+  #bad configure.ac and Makefile.in everywhere
+  preConfigure = ''
+    sed -ie 's;-L/usr/local/lib -R/usr/local/lib;;g' \
+      main/Makefile.in \
+      tool/mlfc/Makefile.in \
+      tool/mlimgloader/Makefile.in \
+      tool/mlconfig/Makefile.in \
+      uitoolkit/libtype/Makefile.in \
+      uitoolkit/libotl/Makefile.in
+    sed -ie 's;cd ..srcdir. && rm -f ...lang..gmo.*;;g' \
+      tool/mlconfig/po/Makefile.in.in
+    #utmp and mlterm-fb
+    substituteInPlace configure.in \
+      --replace "-m 2755 -g utmp" " " \
+      --replace "-m 4755 -o root" " "
+    substituteInPlace configure \
+      --replace "-m 2755 -g utmp" " " \
+      --replace "-m 4755 -o root" " "
+  '';
+  NIX_LDFLAGS = "
+    -L${stdenv.cc.cc.lib}/lib
+    -lX11 -lgdk_pixbuf-2.0 -lcairo -lfontconfig -lfreetype -lXft
+    -lvte-2.91 -lgtk-3 -lharfbuzz -lfribidi -lm17n
+  " + stdenv.lib.optionalString (openssl != null) "
+    -lcrypto
+  " + stdenv.lib.optionalString (libssh2 != null) "
+    -lssh2
+  ";
+
+  configureFlags = [
+    "--with-x=yes"
+    "--with-gui=xlib,fb"
+    "--with-imagelib=gdk-pixbuf" #or mlimgloader depending on your bugs of choice
+    "--with-type-engines=cairo,xft,xcore"
+    "--with-gtk=3.0"
+    "--enable-ind" #indic scripts
+    "--enable-fribidi" #bidi scripts
+    "--enable-m17nlib" #character encodings
+    "--with-tools=mlclient,mlconfig,mlcc,mlterm-menu,mlimgloader,registobmp,mlfc"
+     #mlterm-menu and mlconfig depend on enabling gnome3.at-spi2-core
+     #and configuring ~/.mlterm/key correctly.
+ ] ++ stdenv.lib.optional (libssh2 == null) "--disable-ssh2";
+
+  postInstall = ''
+    install -D contrib/icon/mlterm-icon.svg "$out/share/icons/hicolor/scalable/apps/mlterm.svg"
+    install -D contrib/icon/mlterm-icon-gnome2.png "$out/share/icons/hicolor/48x48/apps/mlterm.png"
+    install -D -t $out/share/applications $desktopItem/share/applications/*
+  '';
+
+  desktopItem = makeDesktopItem {
+    name = "mlterm";
+    exec = "mlterm %U";
+    icon = "mlterm";
+    type = "Application";
+    comment = "Terminal emulator";
+    desktopName = "mlterm";
+    genericName = "Terminal emulator";
+    categories = stdenv.lib.concatStringsSep ";" [
+      "Application" "System" "TerminalEmulator"
+    ];
+    startupNotify = "false";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Multi Lingual TERMinal emulator on X11";
+    homepage = "http://mlterm.sourceforge.net/";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ vrthra ramkromberg ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/moolticute/default.nix b/nixpkgs/pkgs/applications/misc/moolticute/default.nix
new file mode 100644
index 000000000000..6a1521764156
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/moolticute/default.nix
@@ -0,0 +1,46 @@
+{ lib, mkDerivation, fetchFromGitHub
+, libusb1
+, pkg-config
+, qmake
+, qtbase
+, qttools
+, qtwebsockets
+}:
+
+mkDerivation rec {
+  pname = "moolticute";
+  version = "0.43.16";
+
+  src = fetchFromGitHub {
+    owner = "mooltipass";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1gx1hbxiilggwfw0jspyk2cw92r6qs9a8yqa8x1d2ndf493mjx9y";
+  };
+
+  outputs = [ "out" "udev" ];
+
+  nativeBuildInputs = [ pkg-config qmake qttools ];
+  buildInputs = [ libusb1 qtbase qtwebsockets ];
+
+  preConfigure = "mkdir -p build && cd build";
+  qmakeFlags = [ "../Moolticute.pro" ];
+
+  preInstall = ''
+    mkdir -p $udev/lib/udev/rules.d
+    sed -n '/^ \+cat > "$tmpfile" <<- EOF$/,/^EOF$/p' ../data/moolticute.sh |
+        sed '1d;$d' > $udev/lib/udev/rules.d/50-mooltipass.rules
+ '';
+
+  meta = with lib; {
+    description = "GUI app and daemon to work with Mooltipass device via USB";
+    longDescription = ''
+      To install udev rules, add `services.udev.packages == [ moolticute.udev ]`
+      into `nixos/configuration.nix`.
+    '';
+    homepage = "https://github.com/mooltipass/moolticute";
+    license = licenses.gpl3Plus;
+    maintainers = [ maintainers.kirikaza ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/moonlight-embedded/default.nix b/nixpkgs/pkgs/applications/misc/moonlight-embedded/default.nix
new file mode 100644
index 000000000000..2ae3f1894d53
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/moonlight-embedded/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, cmake, perl
+, alsaLib, libevdev, libopus, udev, SDL2
+, ffmpeg_3, pkgconfig, xorg, libvdpau, libpulseaudio, libcec
+, curl, expat, avahi, enet, libuuid, libva
+}:
+
+stdenv.mkDerivation rec {
+  pname = "moonlight-embedded";
+  version = "2.4.10";
+
+  src = fetchFromGitHub {
+    owner = "irtimmer";
+    repo = "moonlight-embedded";
+    rev = "v${version}";
+    sha256 = "0m5i3q3hbjl51cndjpz5hxi3br6fvpn1fzdv0f6lxjxgw9z32413";
+    fetchSubmodules = true;
+  };
+
+  outputs = [ "out" "man" ];
+
+  nativeBuildInputs = [ cmake perl ];
+  buildInputs = [
+    alsaLib libevdev libopus udev SDL2
+    ffmpeg_3 pkgconfig xorg.libxcb libvdpau libpulseaudio libcec
+    xorg.libpthreadstubs curl expat avahi enet libuuid libva
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Open source implementation of NVIDIA's GameStream";
+    homepage = "https://github.com/irtimmer/moonlight-embedded";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.globin ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/mop/default.nix b/nixpkgs/pkgs/applications/misc/mop/default.nix
new file mode 100644
index 000000000000..81c236589654
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mop/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildGoPackage, fetchgit }:
+
+buildGoPackage rec {
+  pname = "mop";
+  version = "0.2.0";
+  rev = "bc666ec165d08b43134f7ec0bf29083ad5466243";
+
+  goPackagePath = "github.com/michaeldv/mop";
+  goDeps = ./deps.nix;
+
+  preConfigure = ''
+    for i in $(find . -type f);do
+        substituteInPlace $i --replace michaeldv/termbox-go nsf/termbox-go
+    done
+    substituteInPlace Makefile --replace mop/cmd mop/mop
+    mv cmd mop
+  '';
+
+  src = fetchgit {
+    inherit rev;
+    url = "https://github.com/mop-tracker/mop";
+    sha256 = "0zp51g9i8rw6acs4vnrxclbxa5z1v0a0m1xx27szszp0rphcczkx";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Simple stock tracker implemented in go";
+    homepage =  "https://github.com/mop-tracker/mop";
+    license = licenses.mit;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/mop/deps.nix b/nixpkgs/pkgs/applications/misc/mop/deps.nix
new file mode 100644
index 000000000000..4081cd1ddaa2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mop/deps.nix
@@ -0,0 +1,11 @@
+[
+  {
+    goPackagePath = "github.com/nsf/termbox-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/nsf/termbox-go";
+      rev = "9aecf65084a5754f12d27508fa2e6ed56851953b";
+      sha256 = "16sak07bgvmax4zxfrd4jia1dgygk733xa8vk8cdx28z98awbfsh";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/misc/mps-youtube/default.nix b/nixpkgs/pkgs/applications/misc/mps-youtube/default.nix
new file mode 100644
index 000000000000..b1118cfc5977
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mps-youtube/default.nix
@@ -0,0 +1,34 @@
+{ lib, python3Packages, fetchFromGitHub }:
+
+with python3Packages;
+
+buildPythonApplication rec {
+  pname = "mps-youtube";
+  version = "unstable-2020-01-28";
+
+  src = fetchFromGitHub {
+    owner = "mps-youtube";
+    repo = "mps-youtube";
+    rev = "b808697133ec2ad7654953232d1e841b20aa7cc3";
+    sha256 = "0lqprlpc0v092xqkjc0cc395ag45lijwgd34dpg2jy6i0f2szywv";
+  };
+
+  propagatedBuildInputs = [ pafy ];
+
+  # disabled due to error in loading unittest
+  # don't know how to make test from: <mps_youtube. ...>
+  doCheck = false;
+
+  # before check create a directory and redirect XDG_CONFIG_HOME to it
+  preCheck = ''
+    mkdir -p check-phase
+    export XDG_CONFIG_HOME=$(pwd)/check-phase
+  '';
+
+  meta = with lib; {
+    description = "Terminal based YouTube player and downloader";
+    homepage = "https://github.com/mps-youtube/mps-youtube";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ koral odi ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/mpvc/default.nix b/nixpkgs/pkgs/applications/misc/mpvc/default.nix
new file mode 100644
index 000000000000..eacc4b5758c3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mpvc/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, socat, fetchFromGitHub, makeWrapper }:
+
+stdenv.mkDerivation {
+  name = "mpvc-unstable-2017-03-18";
+
+  src = fetchFromGitHub {
+    owner = "wildefyr";
+    repo = "mpvc";
+    rev = "aea5c661455248cde7ac9ddba5f63cc790d26512";
+    sha256 = "0qiyvb3ck1wyd3izajwvlq4bwgsbq7x8ya3fgi5i0g2qr39a1qml";
+  };
+
+  makeFlags = [ "PREFIX=$(out)" ];
+  installFlags = [ "PREFIX=$(out)" ];
+
+  postInstall = ''
+    wrapProgram $out/bin/mpvc --prefix PATH : "${socat}/bin/"
+  '';
+
+  buildInputs = [ socat makeWrapper ];
+
+  meta = with stdenv.lib; {
+    description = "A mpc-like control interface for mpv";
+    homepage = "https://github.com/wildefyr/mpvc";
+    license = licenses.mit;
+    maintainers = [ maintainers.neeasade ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/mqtt-bench/default.nix b/nixpkgs/pkgs/applications/misc/mqtt-bench/default.nix
new file mode 100644
index 000000000000..1f6112d7d7bb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mqtt-bench/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, fetchpatch }:
+
+buildGoPackage rec {
+  pname = "mqtt-bench";
+  version = "0.3.0";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/takanorig/mqtt-bench";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "takanorig";
+    repo = "mqtt-bench";
+    sha256 = "03b9ak2j303iwq6abd7j10f2cs2ianwnbflwmyx9g96i7zd74f5m";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://patch-diff.githubusercontent.com/raw/takanorig/mqtt-bench/pull/13.patch";
+      name = "mqtt-paho-changes.patch";
+      sha256 = "17c8ajrp5dmbsasj6njxrlhy0x08b65fignzm3yccqbhb4ijcvha";
+    })
+  ];
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    description = "Mosquitto benchmark tool";
+    homepage = "https://github.com/takanorig/mqtt-bench";
+    maintainers = with maintainers; [ disassembler ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/mqtt-bench/deps.nix b/nixpkgs/pkgs/applications/misc/mqtt-bench/deps.nix
new file mode 100644
index 000000000000..d93d3c468145
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mqtt-bench/deps.nix
@@ -0,0 +1,21 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+[
+  {
+    goPackagePath = "github.com/eclipse/paho.mqtt.golang";
+    fetch = {
+      type = "git";
+      url = "https://github.com/eclipse/paho.mqtt.golang";
+      rev = "65f43bda5f7edbbf6b7533d3a5a13b2c67cf3545";
+      sha256 = "1ad136xf78br599ya43j45f8dycjip1k0hkplayy1slg8ckwrhdr";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "8351a756f30f1297fe94bbf4b767ec589c6ea6d0";
+      sha256 = "0b6m579i3wrx1m69mqkdng5gjfssprxx0pg45kzrdi68sh0zr5d1";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/misc/mrxvt/default.nix b/nixpkgs/pkgs/applications/misc/mrxvt/default.nix
new file mode 100644
index 000000000000..6717fc3c97f9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mrxvt/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, libX11, libXft, libXi, xorgproto, libSM, libICE
+, freetype, pkgconfig, which }:
+
+stdenv.mkDerivation {
+  name = "mrxvt-0.5.4";
+
+  buildInputs =
+    [ libX11 libXft libXi xorgproto libSM libICE freetype pkgconfig which ];
+
+  configureFlags = [
+    "--with-x"
+    "--enable-frills"
+    "--enable-xft"
+    "--enable-xim"
+    # "--with-term=xterm"
+    "--with-max-profiles=100"
+    "--with-max-term=100"
+    "--with-save-lines=10000"
+  ];
+
+  preConfigure = ''
+    NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${freetype.dev}/include/freetype2";
+  '';
+
+  src = fetchurl {
+    url = "mirror://sourceforge/materm/mrxvt-0.5.4.tar.gz";
+    sha256 = "1mqhmnlz32lvld9rc6c1hyz7gjw4anwf39yhbsjkikcgj1das0zl";
+  };
+
+  meta = { 
+    description = "Lightweight multitabbed feature-rich X11 terminal emulator";
+    longDescription = "
+    	Multitabbed lightweight terminal emulator based on rxvt. 
+	Supports transparency, backgroundimages, freetype fonts, ...
+    ";
+    homepage = "https://sourceforge.net/projects/materm";
+    license = "GPL";
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/mu-repo/default.nix b/nixpkgs/pkgs/applications/misc/mu-repo/default.nix
new file mode 100644
index 000000000000..ddee1939b02a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mu-repo/default.nix
@@ -0,0 +1,26 @@
+{ lib, fetchFromGitHub, buildPythonApplication, pytest, git }:
+
+buildPythonApplication rec {
+  pname = "mu-repo";
+  version = "1.8.0";
+
+  src = fetchFromGitHub {
+    owner = "fabioz";
+    repo = pname;
+    rev = with lib;
+      "mu_repo_" + concatStringsSep "_" (splitVersion version);
+    sha256 = "1dxfggzbhiips0ww2s93yba9842ycp0i3x2i8vvcx0vgicv3rv6f";
+  };
+
+  checkInputs = [ pytest git ];
+  # disable test which assumes it's a git repo
+  checkPhase = "py.test mu_repo --ignore=mu_repo/tests/test_checkout.py";
+
+  meta = with lib; {
+    description = "Tool to help in dealing with multiple git repositories";
+    homepage = "http://fabioz.github.io/mu-repo/";
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ sikmir ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/mucommander/default.nix b/nixpkgs/pkgs/applications/misc/mucommander/default.nix
new file mode 100644
index 000000000000..e598e099d065
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mucommander/default.nix
@@ -0,0 +1,86 @@
+{ stdenv, fetchFromGitHub, gradle_4_10, perl, makeWrapper, jre, gsettings-desktop-schemas }:
+
+let
+  version = "0.9.3-3";
+  name = "mucommander-${version}";
+
+  src = fetchFromGitHub {
+    owner = "mucommander";
+    repo = "mucommander";
+    rev = version;
+    sha256 = "1zhglsx3b5k6np3ppfkkrqz9wg0j7ip598xxfgn75gjl020w0can";
+  };
+
+  postPatch = ''
+    # there is no .git anyway
+    substituteInPlace build.gradle \
+      --replace "git = org.ajoberstar.grgit.Grgit.open(file('.'))"  "" \
+      --replace "revision = git.head().id"                          "revision = 'abcdefgh'" \
+      --replace "proguard.enabled =" "// proguard.enabled =" \
+      --replace "version = '0.9.4'" "version = '${version}'"
+
+    # disable gradle plugins with native code and their targets
+    perl -i.bak1 -pe "s#(^\s*id '.+' version '.+'$)#// \1#" build.gradle
+    perl -i.bak2 -pe "s#(.*)#// \1# if /^(buildscript|task portable|task nsis|task proguard|task tgz|task\(afterEclipseImport\)|launch4j|macAppBundle|buildRpm|buildDeb|shadowJar)/ ... /^}/" build.gradle
+
+    # fix source encoding
+    find . -type f -name build.gradle \
+      -exec perl -i.bak3 -pe "s#(repositories\.jcenter\(\))#
+                                \1
+                                compileJava.options.encoding = 'UTF-8'
+                                compileTestJava.options.encoding = 'UTF-8'
+                               #" {} \;
+  '';
+
+  # fake build to pre-download deps into fixed-output derivation
+  deps = stdenv.mkDerivation {
+    name = "${name}-deps";
+    inherit src postPatch;
+    nativeBuildInputs = [ gradle_4_10 perl ];
+    buildPhase = ''
+      export GRADLE_USER_HOME=$(mktemp -d)
+      gradle --no-daemon build
+    '';
+    # perl code mavenizes pathes (com.squareup.okio/okio/1.13.0/a9283170b7305c8d92d25aff02a6ab7e45d06cbe/okio-1.13.0.jar -> com/squareup/okio/okio/1.13.0/okio-1.13.0.jar)
+    installPhase = ''
+      find $GRADLE_USER_HOME/caches/modules-2 -type f -regex '.*\.\(jar\|pom\)' \
+        | perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \
+        | sh
+    '';
+    outputHashAlgo = "sha256";
+    outputHashMode = "recursive";
+    outputHash = "1v5a76pvk7llbyv2rg50wlxc2wf468l2cslz1vi20aihycbyky7j";
+  };
+
+in stdenv.mkDerivation {
+  inherit name src postPatch;
+  nativeBuildInputs = [ gradle_4_10 perl makeWrapper ];
+
+  buildPhase = ''
+    export GRADLE_USER_HOME=$(mktemp -d)
+
+    # point to offline repo
+    find . -type f -name build.gradle \
+      -exec perl -i.bak3 -pe "s#repositories\.jcenter\(\)#
+                                repositories { mavenLocal(); maven { url '${deps}' } }
+                               #" {} \;
+
+    gradle --offline --no-daemon distTar
+  '';
+
+  installPhase = ''
+    mkdir $out
+    tar xvf build/distributions/mucommander-${version}.tar --directory=$out --strip=1
+    wrapProgram $out/bin/mucommander \
+      --prefix XDG_DATA_DIRS : ${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name} \
+      --set JAVA_HOME ${jre}
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.mucommander.com/";
+    description = "Cross-platform file manager";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ volth ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/multibootusb/default.nix b/nixpkgs/pkgs/applications/misc/multibootusb/default.nix
new file mode 100644
index 000000000000..8f90c7a581d0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/multibootusb/default.nix
@@ -0,0 +1,114 @@
+{ fetchFromGitHub, libxcb, mtools, p7zip, parted, procps, qemu, unzip, zip,
+  coreutils, gnugrep, which, gnused, e2fsprogs, autoPatchelfHook, gptfdisk,
+  python36Packages, qt5, runtimeShell, stdenv, utillinux, wrapQtAppsHook }:
+
+# Note: Multibootusb is tricky to maintain. It relies on the
+# $PYTHONPATH variable containing some of their code, so that
+# something like:
+#
+# from scripts import config
+#
+# works. It also relies on the current directory to find some runtime
+# resources thanks to a use of __file__.
+#
+# https://github.com/mbusb/multibootusb/blob/0d34d70c3868f1d7695cfd141141b17c075de967/scripts/osdriver.py#L59
+
+python36Packages.buildPythonApplication rec {
+  pname = "multibootusb";
+  name = "${pname}-${version}";
+  version = "9.2.0";
+
+  nativeBuildInputs = [
+    wrapQtAppsHook
+    autoPatchelfHook
+    unzip
+    zip
+  ];
+
+  runTimeDeps = [
+    coreutils
+    gnugrep
+    which
+    parted
+    utillinux
+    qemu
+    p7zip
+    gnused
+    mtools
+    procps
+    e2fsprogs
+    gptfdisk
+  ];
+
+  buildInputs = [
+    libxcb
+    python36Packages.python
+    qt5.full
+  ];
+
+  src = fetchFromGitHub {
+    owner = "mbusb";
+    repo = pname;
+    rev = "v${version}";
+
+    sha256 = "0wlan0cp6c2i0nahixgpmkm0h4n518gj8rc515d579pqqp91p2h3";
+  };
+
+  # Tests can't run inside the NixOS sandbox
+  # "Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory"
+  doCheck = false;
+
+  pythonPath = [
+    python36Packages.dbus-python
+    python36Packages.pyqt5
+    python36Packages.pytest-shutil
+    python36Packages.pyudev
+    python36Packages.six
+  ];
+
+  # multibootusb ships zips with various versions of syslinux, we need to patchelf them
+  postPatch = ''
+    for zip in $(find . -name "*.zip"); do
+      zip=$(readlink -f $zip)
+      target="$(mktemp -d)"
+      pushd $target
+      unzip $zip
+      rm $zip
+      autoPatchelf .
+      zip -r $zip *
+      popd
+    done
+  '';
+
+  postInstall = ''
+    # This script doesn't work and it doesn't add much anyway
+    rm $out/bin/multibootusb-pkexec
+
+    # The installed data isn't sufficient for whatever reason, missing gdisk/gdisk.exe
+    mkdir -p "$out/share/${pname}"
+    cp -r data "$out/share/${pname}/data"
+  '';
+
+  preFixup = ''
+    makeWrapperArgs+=(
+      # Firstly, add all necessary QT variables
+      "''${qtWrapperArgs[@]}"
+
+      # Then, add the installed scripts/ directory to the python path
+      --prefix "PYTHONPATH" ":" "$out/lib/${python36Packages.python.libPrefix}/site-packages"
+
+      # Add some runtime dependencies
+      --prefix "PATH" ":" "${stdenv.lib.makeBinPath runTimeDeps}"
+
+      # Finally, move to directory that contains data
+      --run "cd $out/share/${pname}"
+    )
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Multiboot USB creator for Linux live disks";
+    homepage = "http://multibootusb.org/";
+    license = licenses.gpl2;
+    maintainers = []; # Looking for a maintainer!
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/mupdf/darwin.patch b/nixpkgs/pkgs/applications/misc/mupdf/darwin.patch
new file mode 100644
index 000000000000..be1b84b0012f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mupdf/darwin.patch
@@ -0,0 +1,30 @@
+diff -ruN mupdf-1.14.0-source.orig/Makerules mupdf-1.14.0-source/Makerules
+--- mupdf-1.14.0-source.orig/Makerules	2018-11-02 06:57:12.114012496 +0100
++++ mupdf-1.14.0-source/Makerules	2018-11-02 10:11:56.717232992 +0100
+@@ -80,13 +80,6 @@
+   HAVE_GLUT := yes
+   SYS_GLUT_CFLAGS := -Wno-deprecated-declarations
+   SYS_GLUT_LIBS := -framework GLUT -framework OpenGL
+-  CC = xcrun cc
+-  AR = xcrun ar
+-  LD = xcrun ld
+-  RANLIB = xcrun ranlib
+-
+-else ifeq ($(OS),Linux)
+-  HAVE_OBJCOPY := yes
+ 
+   ifeq ($(shell pkg-config --exists freetype2 && echo yes),yes)
+ 	SYS_FREETYPE_CFLAGS := $(shell pkg-config --cflags freetype2)
+@@ -119,12 +112,6 @@
+ 	SYS_CURL_LIBS := $(shell pkg-config --libs libcurl)
+   endif
+ 
+-  HAVE_GLUT := yes
+-  ifeq ($(HAVE_GLUT),yes)
+-	SYS_GLUT_CFLAGS :=
+-	SYS_GLUT_LIBS := -lglut -lGL
+-  endif
+-
+   HAVE_X11 := $(shell pkg-config --exists x11 xext && echo yes)
+   ifeq ($(HAVE_X11),yes)
+ 	X11_CFLAGS := $(shell pkg-config --cflags x11 xext)
diff --git a/nixpkgs/pkgs/applications/misc/mupdf/default.nix b/nixpkgs/pkgs/applications/misc/mupdf/default.nix
new file mode 100644
index 000000000000..61eb32bbd5cd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mupdf/default.nix
@@ -0,0 +1,91 @@
+{ stdenv, lib, fetchurl, fetchpatch, pkgconfig, freetype, harfbuzz, openjpeg
+, jbig2dec, libjpeg , darwin
+, enableX11 ? true, libX11, libXext, libXi, libXrandr
+, enableCurl ? true, curl, openssl
+, enableGL ? true, freeglut, libGLU
+}:
+
+let
+
+  # OpenJPEG version is hardcoded in package source
+  openJpegVersion = with stdenv;
+    lib.versions.majorMinor (lib.getVersion openjpeg);
+
+
+in stdenv.mkDerivation rec {
+  version = "1.17.0";
+  pname = "mupdf";
+
+  src = fetchurl {
+    url = "https://mupdf.com/downloads/archive/${pname}-${version}-source.tar.gz";
+    sha256 = "13nl9nrcx2awz9l83mlv2psi1lmn3hdnfwxvwgwiwbxlkjl3zqq0";
+  };
+
+  patches =
+    # Use shared libraries to decrease size
+    stdenv.lib.optional (!stdenv.isDarwin) ./mupdf-1.14-shared_libs.patch
+    ++ stdenv.lib.optional stdenv.isDarwin ./darwin.patch
+  ;
+
+  postPatch = ''
+    sed -i "s/__OPENJPEG__VERSION__/${openJpegVersion}/" source/fitz/load-jpx.c
+  '';
+
+  makeFlags = [ "prefix=$(out) USE_SYSTEM_LIBS=yes" ];
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ freetype harfbuzz openjpeg jbig2dec libjpeg freeglut libGLU ]
+                ++ lib.optionals enableX11 [ libX11 libXext libXi libXrandr ]
+                ++ lib.optionals enableCurl [ curl openssl ]
+                ++ lib.optionals enableGL (
+                  if stdenv.isDarwin then
+                    with darwin.apple_sdk.frameworks; [ GLUT OpenGL ]
+                  else
+                    [ freeglut libGLU ])
+                ;
+  outputs = [ "bin" "dev" "out" "man" "doc" ];
+
+  preConfigure = ''
+    # Don't remove mujs because upstream version is incompatible
+    rm -rf thirdparty/{curl,freetype,glfw,harfbuzz,jbig2dec,libjpeg,openjpeg,zlib}
+  '';
+
+  postInstall = ''
+    mkdir -p "$out/lib/pkgconfig"
+    cat >"$out/lib/pkgconfig/mupdf.pc" <<EOF
+    prefix=$out
+    libdir=$out/lib
+    includedir=$out/include
+
+    Name: mupdf
+    Description: Library for rendering PDF documents
+    Version: ${version}
+    Libs: -L$out/lib -lmupdf -lmupdf-third
+    Cflags: -I$dev/include
+    EOF
+
+    moveToOutput "bin" "$bin"
+    ln -s "$bin/bin/mupdf-x11" "$bin/bin/mupdf"
+    mkdir -p $bin/share/applications
+    cat > $bin/share/applications/mupdf.desktop <<EOF
+    [Desktop Entry]
+    Type=Application
+    Version=1.0
+    Name=mupdf
+    Comment=PDF viewer
+    Exec=$bin/bin/mupdf-x11 %f
+    Terminal=false
+    MimeType=application/pdf;application/x-pdf;application/x-cbz;application/oxps;application/vnd.ms-xpsdocument;application/epub+zip
+    EOF
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://mupdf.com";
+    repositories.git = "git://git.ghostscript.com/mupdf.git";
+    description = "Lightweight PDF, XPS, and E-book viewer and toolkit written in portable C";
+    license = licenses.agpl3Plus;
+    maintainers = with maintainers; [ vrthra fpletz ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/mupdf/default.upstream b/nixpkgs/pkgs/applications/misc/mupdf/default.upstream
new file mode 100644
index 000000000000..852233633ca5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mupdf/default.upstream
@@ -0,0 +1,7 @@
+url https://mupdf.com/downloads/archive/
+do_overwrite(){
+  ensure_hash
+  ensure_version
+  set_var_value version $CURRENT_VERSION
+  set_var_value sha256 $CURRENT_HASH
+}
diff --git a/nixpkgs/pkgs/applications/misc/mupdf/mupdf-1.14-shared_libs.patch b/nixpkgs/pkgs/applications/misc/mupdf/mupdf-1.14-shared_libs.patch
new file mode 100644
index 000000000000..131a1bbbf6bd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mupdf/mupdf-1.14-shared_libs.patch
@@ -0,0 +1,39 @@
+--- mupdf-1.14.0-source.orig/Makefile	2018-11-02 06:57:12.114012496 +0100
++++ mupdf-1.14.0-source/Makefile	2018-11-02 09:57:10.067945307 +0100
+@@ -20,7 +20,7 @@
+ # Do not specify CFLAGS or LIBS on the make invocation line - specify
+ # XCFLAGS or XLIBS instead. Make ignores any lines in the makefile that
+ # set a variable that was set on the command line.
+-CFLAGS += $(XCFLAGS) -Iinclude
++CFLAGS += $(XCFLAGS) -Iinclude -fPIC
+ LIBS += $(XLIBS) -lm
+ 
+ ifneq ($(threading),no)
+@@ -190,17 +190,21 @@
+ 
+ # --- Library ---
+ 
+-MUPDF_LIB = $(OUT)/libmupdf.a
+-THIRD_LIB = $(OUT)/libmupdf-third.a
+-THREAD_LIB = $(OUT)/libmupdf-threads.a
+-PKCS7_LIB = $(OUT)/libmupdf-pkcs7.a
++MUPDF_LIB = $(OUT)/libmupdf.so
++THIRD_LIB = $(OUT)/libmupdf-third.so
++THREAD_LIB = $(OUT)/libmupdf-threads.so
++PKCS7_LIB = $(OUT)/libmupdf-pkcs7.so
+ 
+-$(MUPDF_LIB) : $(MUPDF_OBJ)
++$(MUPDF_LIB) : $(MUPDF_OBJ) $(THIRD_LIB) $(THREAD_LIB)
++	$(LINK_CMD) $(THIRD_LIBS) -shared -Wl,-soname -Wl,libmupdf.so -Wl,--no-undefined
+ $(THIRD_LIB) : $(THIRD_OBJ)
++	$(LINK_CMD) -shared -Wl,-soname -Wl,libmupdf-third.so -Wl,--no-undefined
+ $(THREAD_LIB) : $(THREAD_OBJ)
++	$(LINK_CMD) -shared -Wl,-soname -Wl,libmupdf-threads.so -Wl,--no-undefined -lpthread
+ $(PKCS7_LIB) : $(PKCS7_OBJ)
++	$(LINK_CMD) -shared -Wl,-soname -Wl,libmupdf-pkcs7.so
+ 
+-INSTALL_LIBS := $(MUPDF_LIB) $(THIRD_LIB)
++INSTALL_LIBS := $(MUPDF_LIB) $(THIRD_LIB) $(THREAD_LIB) $(PKCS7_LIB)
+ 
+ # --- Main tools and viewers ---
+ 
diff --git a/nixpkgs/pkgs/applications/misc/mwic/default.nix b/nixpkgs/pkgs/applications/misc/mwic/default.nix
new file mode 100644
index 000000000000..3be02e7c41c2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mwic/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, pythonPackages }:
+
+stdenv.mkDerivation rec {
+  version = "0.7.8";
+  pname = "mwic";
+
+  src = fetchurl {
+    url = "https://github.com/jwilk/mwic/releases/download/${version}/${pname}-${version}.tar.gz";
+    sha256 = "0nnhziz9v523hpciylnxfajmxabh2ig5iawzwrfpf7aww70v330x";
+  };
+
+  makeFlags=["PREFIX=\${out}"];
+
+  nativeBuildInputs = [
+    pythonPackages.wrapPython
+  ];
+
+  propagatedBuildInputs = with pythonPackages; [ pyenchant regex ];
+
+  postFixup = ''
+    buildPythonPath "$out"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://jwilk.net/software/mwic";
+    description = "spell-checker that groups possible misspellings and shows them in their contexts";
+    license = licenses.mit;
+    maintainers = with maintainers; [ matthiasbeyer ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/mysql-workbench/default.nix b/nixpkgs/pkgs/applications/misc/mysql-workbench/default.nix
new file mode 100644
index 000000000000..07ca64518e52
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mysql-workbench/default.nix
@@ -0,0 +1,189 @@
+{ stdenv
+, fetchurl
+, substituteAll
+, cmake
+, ninja
+, pkgconfig
+, glibc
+, gtk3
+, gtkmm3
+, pcre
+, swig
+, antlr4_7
+, sudo
+, mysql
+, libxml2
+, libmysqlconnectorcpp
+, vsqlite
+, gdal
+, libiodbc
+, libpthreadstubs
+, libXdmcp
+, libuuid
+, libzip
+, libsecret
+, libssh
+, python2
+, jre
+, boost
+, libsigcxx
+, libX11
+, openssl
+, rapidjson
+, proj
+, cairo
+, libxkbcommon
+, epoxy
+, wrapGAppsHook
+, at-spi2-core
+, dbus
+, bash
+, coreutils
+}:
+
+let
+  inherit (python2.pkgs) paramiko pycairo pyodbc;
+in stdenv.mkDerivation rec {
+  pname = "mysql-workbench";
+  version = "8.0.20";
+
+  src = fetchurl {
+    url = "http://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-${version}-src.tar.gz";
+    sha256 = "0c0ig2fqfpli7fwb4v4iwvfh4szzj3grx8j9rbh40kllkc8v5qh6";
+  };
+
+  patches = [
+    ./fix-gdal-includes.patch
+
+    (substituteAll {
+      src = ./hardcode-paths.patch;
+      catchsegv = "${glibc.bin}/bin/catchsegv";
+      bash = "${bash}/bin/bash";
+      cp = "${coreutils}/bin/cp";
+      dd = "${coreutils}/bin/dd";
+      ls = "${coreutils}/bin/ls";
+      mkdir = "${coreutils}/bin/mkdir";
+      nohup = "${coreutils}/bin/nohup";
+      rm = "${coreutils}/bin/rm";
+      rmdir = "${coreutils}/bin/rmdir";
+      sudo = "${sudo}/bin/sudo";
+    })
+
+    # Fix swig not being able to find headers
+    # https://github.com/NixOS/nixpkgs/pull/82362#issuecomment-597948461
+    (substituteAll {
+      src = ./fix-swig-build.patch;
+      cairoDev = "${cairo.dev}";
+    })
+  ];
+
+  # have it look for 4.7.2 instead of 4.7.1
+  preConfigure = ''
+    substituteInPlace CMakeLists.txt \
+      --replace "antlr-4.7.1-complete.jar" "antlr-4.7.2-complete.jar"
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    ninja
+    pkgconfig
+    jre
+    swig
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    gtkmm3
+    libX11
+    antlr4_7.runtime.cpp
+    python2
+    mysql
+    libxml2
+    libmysqlconnectorcpp
+    vsqlite
+    gdal
+    boost
+    libssh
+    openssl
+    rapidjson
+    libiodbc
+    pcre
+    cairo
+    libuuid
+    libzip
+    libsecret
+    libsigcxx
+    proj
+
+    # python dependencies:
+    paramiko
+    pycairo
+    pyodbc
+    # TODO: package sqlanydb and add it here
+
+    # transitive dependencies:
+    libpthreadstubs
+    libXdmcp
+    libxkbcommon
+    epoxy
+    at-spi2-core
+    dbus
+  ];
+
+  postPatch = ''
+    patchShebangs tools/get_wb_version.sh
+  '';
+
+  # error: 'OGRErr OGRSpatialReference::importFromWkt(char**)' is deprecated
+  NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations";
+
+  cmakeFlags = [
+    "-DMySQL_CONFIG_PATH=${mysql}/bin/mysql_config"
+    "-DIODBC_CONFIG_PATH=${libiodbc}/bin/iodbc-config"
+    "-DWITH_ANTLR_JAR=${antlr4_7.jarLocation}"
+    # mysql-workbench 8.0.20 depends on libmysqlconnectorcpp 1.1.8.
+    # Newer versions of connector still provide the legacy library when enabled
+    # but the headers are in a different location.
+    "-DMySQLCppConn_INCLUDE_DIR=${libmysqlconnectorcpp}/include/jdbc"
+  ];
+
+  # There is already an executable and a wrapper in bindir
+  # No need to wrap both
+  dontWrapGApps = true;
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      --prefix PATH : "${python2}/bin"
+      --prefix PROJSO : "${proj}/lib/libproj.so"
+      --set PYTHONPATH $PYTHONPATH
+    )
+  '';
+
+  # Let’s wrap the programs not ending with bin
+  # until https://bugs.mysql.com/bug.php?id=91948 is fixed
+  postFixup = ''
+    find -L "$out/bin" -type f -executable -print0 \
+      | while IFS= read -r -d ''' file; do
+      if [[ "''${file}" != *-bin ]]; then
+        echo "Wrapping program $file"
+        wrapGApp "$file"
+      fi
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Visual MySQL database modeling, administration and querying tool";
+    longDescription = ''
+      MySQL Workbench is a modeling tool that allows you to design
+      and generate MySQL databases graphically. It also has administration
+      and query development modules where you can manage MySQL server instances
+      and execute SQL queries.
+    '';
+
+    homepage = "http://wb.mysql.com/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.kkallio ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/mysql-workbench/fix-gdal-includes.patch b/nixpkgs/pkgs/applications/misc/mysql-workbench/fix-gdal-includes.patch
new file mode 100644
index 000000000000..0a5c31fd40a2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mysql-workbench/fix-gdal-includes.patch
@@ -0,0 +1,47 @@
+--- a/backend/wbpublic/grt/spatial_handler.h
++++ b/backend/wbpublic/grt/spatial_handler.h
+@@ -24,12 +24,12 @@
+ #ifndef SPATIAL_HANDLER_H_
+ #define SPATIAL_HANDLER_H_
+ 
+-#include <gdal/ogrsf_frmts.h>
+-#include <gdal/ogr_api.h>
+-#include <gdal/gdal_pam.h>
+-#include <gdal/memdataset.h>
+-#include <gdal/gdal_alg.h>
+-#include <gdal/gdal.h>
++#include <ogrsf_frmts.h>
++#include <ogr_api.h>
++#include <gdal_pam.h>
++#include <memdataset.h>
++#include <gdal_alg.h>
++#include <gdal.h>
+ #include <deque>
+ #include "base/geometry.h"
+ #include "wbpublic_public_interface.h"
+--- a/backend/wbpublic/grtui/geom_draw_box.h
++++ b/backend/wbpublic/grtui/geom_draw_box.h
+@@ -25,7 +25,7 @@
+ #define _GEOM_DRAW_BOX_H_
+ 
+ #include <mforms/drawbox.h>
+-#include <gdal/ogr_geometry.h>
++#include <ogr_geometry.h>
+ #include "wbpublic_public_interface.h"
+ 
+ class WBPUBLICBACKEND_PUBLIC_FUNC GeomDrawBox : public mforms::DrawBox {
+--- a/backend/wbpublic/objimpl/db.query/db_query_Resultset.cpp
++++ b/backend/wbpublic/objimpl/db.query/db_query_Resultset.cpp
+@@ -21,9 +21,9 @@
+  * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 
+  */
+ 
+-#include <gdal/ogrsf_frmts.h>
+-#include <gdal/ogr_api.h>
+-#include <gdal/gdal.h>
++#include <ogrsf_frmts.h>
++#include <ogr_api.h>
++#include <gdal.h>
+ 
+ #include <grts/structs.db.query.h>
+ #include <grtpp_util.h>
diff --git a/nixpkgs/pkgs/applications/misc/mysql-workbench/fix-swig-build.patch b/nixpkgs/pkgs/applications/misc/mysql-workbench/fix-swig-build.patch
new file mode 100644
index 000000000000..ace1e5add43f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mysql-workbench/fix-swig-build.patch
@@ -0,0 +1,12 @@
+--- a/library/forms/swig/CMakeLists.txt
++++ b/library/forms/swig/CMakeLists.txt
+@@ -57,7 +57,7 @@
+ 
+ set(CMAKE_SWIG_FLAGS -w312)
+ set_source_files_properties(cairo.i PROPERTIES CPLUSPLUS ON)
+-set_property(SOURCE cairo.i PROPERTY SWIG_FLAGS -DCAIRO_HAS_PNG_FUNCTIONS=1 -fcompact -DSWIG_PYTHON_LEGACY_BOOL -I/usr/include)
++set_property(SOURCE cairo.i PROPERTY SWIG_FLAGS -DCAIRO_HAS_PNG_FUNCTIONS=1 -fcompact -DSWIG_PYTHON_LEGACY_BOOL -I@cairoDev@/include)
+ if(CMAKE_VERSION VERSION_LESS 3.8)
+   swig_add_module(cairo python cairo.i)
+ else()
+
diff --git a/nixpkgs/pkgs/applications/misc/mysql-workbench/hardcode-paths.patch b/nixpkgs/pkgs/applications/misc/mysql-workbench/hardcode-paths.patch
new file mode 100644
index 000000000000..dddf992e4c12
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mysql-workbench/hardcode-paths.patch
@@ -0,0 +1,187 @@
+--- a/frontend/linux/workbench/mysql-workbench.in
++++ b/frontend/linux/workbench/mysql-workbench.in
+@@ -99,8 +99,8 @@
+ if test "$WB_DEBUG" != ""; then
+   $WB_DEBUG $MWB_BINARIES_DIR/mysql-workbench-bin "$@"
+ else
+-  if type -p catchsegv > /dev/null; then
+-  catchsegv $MWB_BINARIES_DIR/mysql-workbench-bin "$@"
++  if type -p @catchsegv@ > /dev/null; then
++  @catchsegv@ $MWB_BINARIES_DIR/mysql-workbench-bin "$@"
+   else
+   $MWB_BINARIES_DIR/mysql-workbench-bin "$@"
+   fi
+--- a/plugins/migration/frontend/migration_bulk_copy_data.py
++++ b/plugins/migration/frontend/migration_bulk_copy_data.py
+@@ -110,7 +110,7 @@
+         return 'sh'
+ 
+     def generate_import_script(self, connection_args, path_to_file, schema_name):
+-        output = ['#!/bin/bash']
++        output = ['#!/usr/bin/env bash']
+         output.append('MYPATH=\`pwd\`')
+         
+         output.append('if [ -f \$MYPATH/%s ] ; then' % self.error_log_name)
+@@ -164,7 +164,7 @@
+         return 'sh'
+ 
+     def generate_import_script(self, connection_args, path_to_file, schema_name):
+-        output = ['#!/bin/bash']
++        output = ['#!/usr/bin/env bash']
+         output.append('MYPATH=\`pwd\`')
+         
+         output.append('if [ -f \$MYPATH/%s ] ; then' % self.error_log_name)
+@@ -417,7 +417,7 @@
+     
+         with open(script_path, 'w+') as f:
+             os.chmod(script_path, 0700)
+-            f.write('#!/bin/bash\n\n')
++            f.write('#!/usr/bin/env bash\n\n')
+             f.write('MYPATH=`pwd`\n')
+             
+             f.write("arg_source_password=\"<put source password here>\"\n")
+@@ -521,7 +521,7 @@
+     
+         with open(script_path, 'w+') as f:
+             os.chmod(script_path, 0700)
+-            f.write('#!/bin/bash\n\n')
++            f.write('#!/usr/bin/env bash\n\n')
+             f.write('MYPATH=`pwd`\n')
+             
+             f.write("arg_source_password=\"<put source password here>\"\n")
+--- a/plugins/wb.admin/backend/wb_server_control.py
++++ b/plugins/wb.admin/backend/wb_server_control.py
+@@ -39,7 +39,7 @@
+ 
+ UnixVariant = {
+     "" : {
+-        'sudo_command' : "/usr/bin/sudo -k -S -p EnterPasswordHere ",
++        'sudo_command' : "@sudo@ -k -S -p EnterPasswordHere ",
+     }
+ }
+ 
+--- a/plugins/wb.admin/backend/wb_server_management.py
++++ b/plugins/wb.admin/backend/wb_server_management.py
+@@ -40,7 +40,7 @@
+ 
+ def reset_sudo_prefix():
+     global default_sudo_prefix
+-    default_sudo_prefix       = '/usr/bin/sudo -k -S -p EnterPasswordHere'
++    default_sudo_prefix       = '@sudo@ -k -S -p EnterPasswordHere'
+ 
+ reset_sudo_prefix()
+ 
+@@ -100,7 +100,7 @@
+ 
+     if to_spawn:
+         command += ' &'
+-        sudo_prefix += ' /usr/bin/nohup'
++        sudo_prefix += ' @nohup@'
+       
+     # If as_user is the CURRENT then there's no need to sudo
+     if as_user != Users.CURRENT:
+@@ -111,7 +111,7 @@
+         if '/bin/sh' in sudo_prefix or '/bin/bash' in sudo_prefix:
+             command = "LANG=C " + sudo_prefix + " \"" + command.replace('\\', '\\\\').replace('"', r'\"').replace('$','\\$') + "\""
+         else:
+-            command = "LANG=C " + sudo_prefix + " /bin/bash -c \"" + command.replace('\\', '\\\\').replace('"', r'\"').replace('$','\\$') + "\""
++            command = "LANG=C " + sudo_prefix + " @bash@ -c \"" + command.replace('\\', '\\\\').replace('"', r'\"').replace('$','\\$') + "\""
+ 
+     return command
+ 
+@@ -896,9 +896,9 @@
+             if as_user == Users.CURRENT:
+                 raise PermissionDeniedError("Cannot set owner of directory %s" % path)        
+             else:
+-                command = "/bin/mkdir %s && chown %s %s" % (quote_path(path), with_owner, quote_path(path))
++                command = "@mkdir@ %s && chown %s %s" % (quote_path(path), with_owner, quote_path(path))
+         else:
+-            command = "/bin/mkdir %s" % (quote_path(path))
++            command = "@mkdir@ %s" % (quote_path(path))
+             
+         res = self.process_ops.exec_cmd(command,
+                                         as_user   = as_user,
+@@ -927,7 +927,7 @@
+     @useAbsPath("path")
+     def remove_directory(self, path, as_user = Users.CURRENT, user_password = None):
+         output = StringIO.StringIO()
+-        res = self.process_ops.exec_cmd('/bin/rmdir ' + quote_path(path),
++        res = self.process_ops.exec_cmd('@rmdir@ ' + quote_path(path),
+                                         as_user   = as_user,
+                                         user_password = user_password,
+                                         output_handler = output.write,
+@@ -940,7 +940,7 @@
+     @useAbsPath("path")
+     def remove_directory_recursive(self, path, as_user = Users.CURRENT, user_password = None):
+         output = StringIO.StringIO()
+-        res = self.process_ops.exec_cmd('/bin/rm -R ' + quote_path(path),
++        res = self.process_ops.exec_cmd('@rm@ -R ' + quote_path(path),
+                                         as_user   = as_user,
+                                         user_password = user_password,
+                                         output_handler = output.write,
+@@ -953,7 +953,7 @@
+     @useAbsPath("path")
+     def delete_file(self, path, as_user = Users.CURRENT, user_password = None):
+         output = StringIO.StringIO()
+-        res = self.process_ops.exec_cmd("/bin/rm " + quote_path(path),
++        res = self.process_ops.exec_cmd("@rm@ " + quote_path(path),
+                                         as_user   = as_user,
+                                         user_password = user_password,
+                                         output_handler = output.write,
+@@ -1001,7 +1001,7 @@
+     def _copy_file(self, source, dest, as_user = Users.CURRENT, user_password = None):
+         output = StringIO.StringIO()
+         
+-        res = self.process_ops.exec_cmd("LC_ALL=C /bin/cp " + quote_path(source) + " " + quote_path(dest),
++        res = self.process_ops.exec_cmd("LC_ALL=C @cp@ " + quote_path(source) + " " + quote_path(dest),
+                       as_user   = as_user,
+                       user_password = user_password,
+                       output_handler = output.write,
+@@ -1077,9 +1077,9 @@
+             # for ls -l, the output format changes depending on stdout being a terminal or not
+             # since both cases are possible, we need to handle both at the same time (1st line being total <nnnn> or not)
+             # the good news is that if the line is there, then it will always start with total, regardless of the locale
+-            command = 'LC_ALL=C /bin/ls -l -p %s' % quote_path(path)
++            command = 'LC_ALL=C @ls@ -l -p %s' % quote_path(path)
+         else:
+-            command = 'LC_ALL=C /bin/ls -1 -p %s' % quote_path(path)
++            command = 'LC_ALL=C @ls@ -1 -p %s' % quote_path(path)
+             
+         output = StringIO.StringIO()
+         res = self.process_ops.exec_cmd(command,
+@@ -2160,9 +2160,9 @@
+     def get_range(self, start, end):
+         f = StringIO.StringIO()
+         if not self._need_sudo:
+-            ret = self.server_helper.execute_command("/bin/dd if=%s ibs=1 skip=%i count=%i 2> /dev/null" % (quote_path(self.path), start, end-start), as_user = Users.CURRENT, user_password=None, output_handler=f.write)
++            ret = self.server_helper.execute_command("@dd@ if=%s ibs=1 skip=%i count=%i 2> /dev/null" % (quote_path(self.path), start, end-start), as_user = Users.CURRENT, user_password=None, output_handler=f.write)
+         else:
+-            ret = self.server_helper.execute_command("/bin/dd if=%s ibs=1 skip=%i count=%i 2> /dev/null" % (quote_path(self.path), start, end-start), as_user = Users.ADMIN, user_password=self.get_password, output_handler=f.write)
++            ret = self.server_helper.execute_command("@dd@ if=%s ibs=1 skip=%i count=%i 2> /dev/null" % (quote_path(self.path), start, end-start), as_user = Users.ADMIN, user_password=self.get_password, output_handler=f.write)
+ 
+         if ret != 0:
+             raise RuntimeError("Could not get data from file %s" % self.path)
+@@ -2170,9 +2170,9 @@
+ 
+     def read_task(self, offset, file):
+         if not self._need_sudo:
+-            self.server_helper.execute_command("/bin/dd if=%s ibs=1 skip=%i 2> /dev/null" % (quote_path(self.path), offset), as_user = Users.CURRENT, user_password=None, output_handler=file.write)
++            self.server_helper.execute_command("@dd@ if=%s ibs=1 skip=%i 2> /dev/null" % (quote_path(self.path), offset), as_user = Users.CURRENT, user_password=None, output_handler=file.write)
+         else:
+-            self.server_helper.execute_command("/bin/dd if=%s ibs=1 skip=%i 2> /dev/null" % (quote_path(self.path), offset), as_user = Users.ADMIN, user_password=self.get_password, output_handler=file.write)
++            self.server_helper.execute_command("@dd@ if=%s ibs=1 skip=%i 2> /dev/null" % (quote_path(self.path), offset), as_user = Users.ADMIN, user_password=self.get_password, output_handler=file.write)
+         # this will signal the reader end that there's no more data
+         file.close()
+ 
+@@ -2198,9 +2198,9 @@
+         self._pos = offset
+         f = StringIO.StringIO()
+         if not self._need_sudo:
+-            self.server_helper.execute_command("/bin/dd if=%s ibs=1 skip=%i 2> /dev/null" % (quote_path(self.path), offset), as_user = Users.CURRENT, user_password=None, output_handler=f.write)
++            self.server_helper.execute_command("@dd@ if=%s ibs=1 skip=%i 2> /dev/null" % (quote_path(self.path), offset), as_user = Users.CURRENT, user_password=None, output_handler=f.write)
+         else:
+-            self.server_helper.execute_command("/bin/dd if=%s ibs=1 skip=%i 2> /dev/null" % (quote_path(self.path), offset), as_user = Users.ADMIN, user_password=self._password, output_handler=f.write)
++            self.server_helper.execute_command("@dd@ if=%s ibs=1 skip=%i 2> /dev/null" % (quote_path(self.path), offset), as_user = Users.ADMIN, user_password=self._password, output_handler=f.write)
+         self.data = f
+         self.data.seek(0)
+         if self.skip_first_newline:
diff --git a/nixpkgs/pkgs/applications/misc/mystem/default.nix b/nixpkgs/pkgs/applications/misc/mystem/default.nix
new file mode 100644
index 000000000000..27caef9ea2eb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mystem/default.nix
@@ -0,0 +1,26 @@
+{stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "mystem";
+  version = "3.1";
+
+  src = fetchurl {
+    url = "http://download.cdn.yandex.net/mystem/${pname}-${version}-linux-64bit.tar.gz";
+    sha256 = "0qha7jvkdmil3jiwrpsfhkqsbkqn9dzgx3ayxwjdmv73ikmg95j6";
+  };
+
+  buildCommand = ''
+    tar -xaf "$src"
+    mkdir -p $out/bin
+    install -Dm755 mystem $out/bin/mystem
+    patchelf --set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) $out/bin/mystem
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Morphological analysis of Russian text";
+    homepage = "https://yandex.ru/dev/mystem/";
+    license = licenses.unfreeRedistributable;
+    maintainers = with maintainers; [ abbradar ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/nanoblogger/default.nix b/nixpkgs/pkgs/applications/misc/nanoblogger/default.nix
new file mode 100644
index 000000000000..cf7689367bd3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/nanoblogger/default.nix
@@ -0,0 +1,30 @@
+{ fetchurl, stdenv, bash }:
+
+stdenv.mkDerivation rec {
+  version = "3.5-rc1";
+  pname = "nanoblogger";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/nanoblogger/${pname}-${version}.tar.gz";
+    sha256 = "09mv52a5f0h3das8x96irqyznm69arfskx472b7w3b9q4a2ipxbq";
+  };
+
+  buildInputs = [ ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -r * $out
+    cat > $out/bin/nb << EOF 
+    #!${bash}/bin/bash
+    $out/nb "\$@"
+    EOF
+    chmod 755 $out/bin/nb
+  '';
+
+  meta = {
+    description = "Small weblog engine written in Bash for the command line";
+    homepage = "http://nanoblogger.sourceforge.net/";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/navipowm/default.nix b/nixpkgs/pkgs/applications/misc/navipowm/default.nix
new file mode 100644
index 000000000000..80c455f41a0e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/navipowm/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, qt4, qmake4Hook }:
+stdenv.mkDerivation rec {
+  name = "navipowm-0.2.4";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/navipowm/NaviPOWM-0.2.4.tar.gz";
+    sha256 = "1kdih8kwpgcgfh6l6njkr9gq2j5hv39xvzmzgvhip553kn6bss7b";
+  };
+
+  preConfigure = ''
+    cd Qt/KDevelop
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/${name}/Icons
+    cp bin/NaviPOWM $out/bin
+    cp ../../common/Config/navipowm.ini $out/share/${name}
+    cp ../../common/Images/* $out/share/${name}
+  '';
+
+  buildInputs = [ qt4 ];
+  nativeBuildInputs = [ qmake4Hook ];
+
+  meta = {
+    homepage = "http://navipowm.sourceforge.net/";
+    description = "Car navigation system";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [ ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/navit/CMakeLists.txt.patch b/nixpkgs/pkgs/applications/misc/navit/CMakeLists.txt.patch
new file mode 100644
index 000000000000..7f8a75f319be
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/navit/CMakeLists.txt.patch
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 763f75b..defa74a 100755
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -212,7 +212,7 @@ CHECK_INCLUDE_FILES(endian.h HAVE_ENDIAN_H)
+ CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H)
+ CHECK_INCLUDE_FILES(byteswap.h HAVE_BYTESWAP_H)
+ CHECK_LIBRARY_EXISTS(gypsy gypsy_control_get_default "" GYPSY_FOUND)
+-CHECK_INCLUDE_FILES(libspeechd.h HAVE_LIBSPEECHD)
++CHECK_INCLUDE_FILES(speech-dispatcher/libspeechd.h HAVE_LIBSPEECHD)
+ CHECK_INCLUDE_FILES(sys/socket.h HAVE_SOCKET)
+ CHECK_INCLUDE_FILES(sys/shm.h HAVE_SHMEM)
+ CHECK_FUNCTION_EXISTS(snprintf   HAVE_SNPRINTF)
diff --git a/nixpkgs/pkgs/applications/misc/navit/default.nix b/nixpkgs/pkgs/applications/misc/navit/default.nix
new file mode 100644
index 000000000000..099bcbfb25df
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/navit/default.nix
@@ -0,0 +1,90 @@
+{ stdenv, fetchFromGitHub, pkgconfig, gtk2, fontconfig, freetype, imlib2
+, SDL_image, libGLU, libGL, libXmu, freeglut, pcre, dbus, dbus-glib, glib
+, librsvg, freeimage, libxslt, cairo, gdk-pixbuf, pango
+, atk, patchelf, fetchurl, bzip2, python, gettext, quesoglc
+, gd, cmake, shapelib, SDL_ttf, fribidi, makeWrapper
+, qtquickcontrols, qtmultimedia, qtspeech, qtsensors
+, qtlocation, qtdeclarative, qtsvg
+, qtSupport ? false, qtbase #need to fix qt_qpainter
+, sdlSupport ? true, SDL
+, xkbdSupport ? true, xkbd
+, espeakSupport ? true, espeak
+, postgresqlSupport ? false, postgresql
+, speechdSupport ? false, speechd ? null
+}:
+
+assert speechdSupport -> speechd != null;
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  pname = "navit";
+  version = "0.5.3";
+
+  src = fetchFromGitHub {
+    owner = "navit-gps";
+    repo = "navit";
+    rev = "v${version}";
+    sha256 = "071drvqzxpxbfh0lf0lra5a97rv8ny40l96n9xl0dx0s8w30j61i";
+  };
+
+  sample_map = fetchurl {
+    url = "http://www.navit-project.org/maps/osm_bbox_11.3,47.9,11.7,48.2.osm.bz2";
+    name = "sample_map.bz2";
+    sha256 = "0vg6b6rhsa2cxqj4rbhfhhfss71syhnfa6f1jg2i2d7l88dm5x7d";
+  };
+
+  patches = [ ./CMakeLists.txt.patch ];
+
+  NIX_CFLAGS_COMPILE = toString (optional sdlSupport "-I${SDL.dev}/include/SDL"
+    ++ optional speechdSupport "-I${speechd}/include/speech-dispatcher");
+
+  # we choose only cmdline and speech-dispatcher speech options.
+  # espeak builtins is made for non-cmdline OS as winCE
+  cmakeFlags = [
+    "-DSAMPLE_MAP=n " "-DCMAKE_BUILD_TYPE=Release"
+    "-Dspeech/qt5_espeak=FALSE" "-Dsupport/espeak=FALSE"
+  ];
+
+  buildInputs = [
+    gtk2 fontconfig freetype imlib2 libGLU libGL freeimage
+    libxslt libXmu freeglut python gettext quesoglc gd
+    fribidi pcre  dbus dbus-glib librsvg shapelib glib
+    cairo gdk-pixbuf pango atk
+  ] ++ optionals sdlSupport [ SDL SDL_ttf SDL_image ]
+    ++ optional postgresqlSupport postgresql
+    ++ optional speechdSupport speechd
+    ++ optionals qtSupport [
+      qtquickcontrols qtmultimedia qtspeech qtsensors
+      qtbase qtlocation qtdeclarative qtsvg
+  ];
+
+  nativeBuildInputs = [ makeWrapper pkgconfig cmake patchelf bzip2 ];
+
+  # we dont want blank screen by defaut
+  postInstall = ''
+    # emulate DSAMPLE_MAP
+    mkdir -p $out/share/navit/maps/
+    bzcat "${sample_map}" | $out/bin/maptool "$out/share/navit/maps/osm_bbox_11.3,47.9,11.7,48.2.bin"
+  '';
+
+  # TODO: fix upstream?
+  libPath = stdenv.lib.makeLibraryPath ([ stdenv.cc.libc ] ++ buildInputs );
+  postFixup =
+  ''
+    find "$out/lib" -type f -name "*.so" -exec patchelf --set-rpath $libPath {} \;
+
+    wrapProgram $out/bin/navit \
+      --prefix PATH : ${makeBinPath (
+        optional xkbdSupport xkbd
+        ++ optional espeakSupport espeak
+        ++ optional speechdSupport speechd ) }
+  '';
+
+  meta = {
+    homepage = "https://www.navit-project.org";
+    description = "Car navigation system with routing engine using OSM maps";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.genesis ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/neap/default.nix b/nixpkgs/pkgs/applications/misc/neap/default.nix
new file mode 100644
index 000000000000..992a3c0248a0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/neap/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitHub, python2Packages }:
+
+stdenv.mkDerivation rec {
+  pname = "neap";
+  version = "0.7.2";
+
+  src = fetchFromGitHub {
+    owner = "vzxwco";
+    repo = "neap";
+    rev = "v${version}";
+    sha256 = "04da8rq23rl1qcvrdm5m3l90xbwyli7x601sckv7hmkip2q3g1kz";
+  };
+
+  nativeBuildInputs = [
+    python2Packages.wrapPython
+  ];
+
+  buildInputs = [
+    python2Packages.python
+  ];
+
+  pythonPath = [
+    python2Packages.xlib
+    python2Packages.pygtk
+  ];
+
+  installPhase = ''
+    install -D -t $out/bin neap
+    install -D -t $out/share/man/man1 neap.1
+    install -D -t $out/share/applications neap.desktop
+  '';
+
+  postFixup = ''
+    wrapPythonPrograms
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Systray workspace pager";
+    homepage = "https://github.com/vzxwco/neap";
+    license = licenses.bsd2;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/netsurf/browser/default.nix b/nixpkgs/pkgs/applications/misc/netsurf/browser/default.nix
new file mode 100644
index 000000000000..f2fdd01215d6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/browser/default.nix
@@ -0,0 +1,90 @@
+{ stdenv, fetchurl, fetchpatch, makeWrapper, wrapGAppsHook
+
+# Buildtime dependencies.
+
+, check, pkgconfig, xxd
+
+# Runtime dependencies.
+
+, curl, expat, libXcursor, libXrandr, libidn, libjpeg, libpng, libwebp, libxml2
+, openssl, perl, perlPackages
+
+# uilib-specific dependencies
+
+, gtk2 # GTK 2
+, SDL  # Framebuffer
+
+# Configuration
+
+, uilib ? "framebuffer"
+
+# Netsurf-specific dependencies
+
+, libcss, libdom, libhubbub, libnsbmp, libnsfb, libnsgif
+, libnslog, libnspsl, libnsutils, libparserutils, libsvgtiny, libutf8proc
+, libwapcaplet, nsgenbind
+}:
+
+let
+  inherit (stdenv.lib) optional optionals;
+in
+stdenv.mkDerivation rec {
+
+  pname = "netsurf";
+  version = "3.9";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/netsurf/releases/source/netsurf-${version}-src.tar.gz";
+    sha256 = "1hzcm2s2wh5sapgr000lg63hcdbj6hyajxl43xa1x80kc5piqbyp";
+  };
+
+  patches = [
+    # GTK: prefer using curl's intrinsic defaults for CURLOPT_CA*
+    (fetchpatch {
+	  name = "0001-GTK-prefer-using-curl-s-intrinsic-defaults-for-CURLO.patch";
+      url = "http://source.netsurf-browser.org/netsurf.git/patch/?id=87177d8aa109206d131e0d80a2080ce55dab01c7";
+      sha256 = "08bc60pc5k5qpckqv21zgmgszj3rpwskfc84shs8vg92vkimv2ai";
+    })
+  ];
+
+  nativeBuildInputs = [
+    makeWrapper
+    perl
+    perlPackages.HTMLParser
+    pkgconfig
+    xxd
+  ]
+  ++ optional (uilib == "gtk") wrapGAppsHook
+  ;
+
+  buildInputs = [ 
+    check curl libXcursor libXrandr libidn libjpeg libpng libwebp libxml2 openssl
+    # Netsurf-specific libraries
+    nsgenbind libnsfb libwapcaplet libparserutils libnslog libcss
+    libhubbub libdom libnsbmp libnsgif libsvgtiny libnsutils libnspsl
+    libutf8proc
+  ]
+  ++ optionals (uilib == "framebuffer") [ expat SDL ]
+  ++ optional (uilib == "gtk") gtk2
+  ;
+
+  preConfigure = ''
+    cat <<EOF > Makefile.conf
+    override NETSURF_GTK_RES_PATH  := $out/share/
+    override NETSURF_USE_GRESOURCE := YES
+    EOF
+  '';
+
+  makeFlags = [
+    "PREFIX=${placeholder "out"}"
+    "TARGET=${uilib}"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.netsurf-browser.org/";
+    description = "Free opensource web browser";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.vrthra ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/netsurf/buildsystem/default.nix b/nixpkgs/pkgs/applications/misc/netsurf/buildsystem/default.nix
new file mode 100644
index 000000000000..9d690546102a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/buildsystem/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+
+  pname = "netsurf-buildsystem";
+  version = "1.8";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/buildsystem-${version}.tar.gz";
+    sha256 = "0ffdjwskxlnh8sk40qqfgksbb1nrdzfxsshrscra0p4nqpkj98z6";
+  };
+
+  makeFlags = [
+    "PREFIX=$(out)"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.netsurf-browser.org/";
+    description = "Build system for netsurf browser";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.vrthra ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/netsurf/libcss/default.nix b/nixpkgs/pkgs/applications/misc/netsurf/libcss/default.nix
new file mode 100644
index 000000000000..528b0d9b9585
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/libcss/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, pkgconfig, perl
+, buildsystem
+, libwapcaplet
+, libparserutils
+}:
+
+stdenv.mkDerivation rec {
+
+  name = "netsurf-${libname}-${version}";
+  libname = "libcss";
+  version = "0.9.0";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "1vw9j3d2mr4wbvs8fyqmgslkbxknvac10456775hflxxcivbm3xr";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ perl
+    buildsystem
+    libwapcaplet
+    libparserutils
+  ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
+  ];
+
+  NIX_CFLAGS_COMPILE= "-Wno-error=implicit-fallthrough";
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.netsurf-browser.org/";
+    description = "Cascading Style Sheets library for netsurf browser";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.vrthra ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/netsurf/libdom/default.nix b/nixpkgs/pkgs/applications/misc/netsurf/libdom/default.nix
new file mode 100644
index 000000000000..8dde3e336cdb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/libdom/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, pkgconfig, expat
+, buildsystem
+, libparserutils
+, libwapcaplet
+, libhubbub
+}:
+
+stdenv.mkDerivation rec {
+
+  name = "netsurf-${libname}-${version}";
+  libname = "libdom";
+  version = "0.4.0";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "1ixkqsl3f7dl1kajksm0c231w1v5xy8z6hm3v67hgm9nh4qcvfcy";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ expat
+    buildsystem
+    libparserutils
+    libwapcaplet
+    libhubbub
+  ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.netsurf-browser.org/";
+    description = "Document Object Model library for netsurf browser";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.vrthra ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/netsurf/libhubbub/default.nix b/nixpkgs/pkgs/applications/misc/netsurf/libhubbub/default.nix
new file mode 100644
index 000000000000..7cfd0a935f3d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/libhubbub/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, pkgconfig, perl
+, buildsystem
+, libparserutils
+}:
+
+stdenv.mkDerivation rec {
+
+  name = "netsurf-${libname}-${version}";
+  libname = "libhubbub";
+  version = "0.3.6";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "1x3v7xvagx85v9h3pypzc86rcxs4mij87mmcqkp8pq50q6awfmnp";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ perl
+    buildsystem
+    libparserutils
+  ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.netsurf-browser.org/";
+    description = "HTML5 parser library for netsurf browser";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.vrthra ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/netsurf/libnsbmp/default.nix b/nixpkgs/pkgs/applications/misc/netsurf/libnsbmp/default.nix
new file mode 100644
index 000000000000..a553eb3e7153
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/libnsbmp/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, pkgconfig
+, buildsystem
+}:
+
+stdenv.mkDerivation rec {
+
+  name = "netsurf-${libname}-${version}";
+  libname = "libnsbmp";
+  version = "0.1.5";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "0lib2m07d1i0k80m4blkwnj0g7rha4jbm5vrgd0wwbkyfa0hvk35";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    buildsystem
+  ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.netsurf-browser.org/";
+    description = "BMP Decoder for netsurf browser";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.vrthra ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/netsurf/libnsfb/default.nix b/nixpkgs/pkgs/applications/misc/netsurf/libnsfb/default.nix
new file mode 100644
index 000000000000..4e56ce7f5a12
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/libnsfb/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, pkgconfig, uilib? "framebuffer", SDL
+, buildsystem
+}:
+
+stdenv.mkDerivation rec {
+
+  name = "netsurf-${libname}-${version}";
+  libname = "libnsfb";
+  version = "0.2.1";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "09qag9lgn5ahanbcyf2rvfmsz15vazfwnl8xpn8f1iczd44b0bv0";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ buildsystem SDL ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
+    "TARGET=${uilib}"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.netsurf-browser.org/";
+    description = "CSS parser and selection library for netsurf browser";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.vrthra ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/netsurf/libnsgif/default.nix b/nixpkgs/pkgs/applications/misc/netsurf/libnsgif/default.nix
new file mode 100644
index 000000000000..8bb67df70da9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/libnsgif/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, pkgconfig
+, buildsystem
+}:
+
+stdenv.mkDerivation rec {
+
+  name = "netsurf-${libname}-${version}";
+  libname = "libnsgif";
+  version = "0.2.1";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "0jwshypgmx16xlsbx3d8njk8a5khazlplca5mxd3rdbhrlsabbly";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ buildsystem];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.netsurf-browser.org/";
+    description = "GIF Decoder for netsurf browser";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.vrthra ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/netsurf/libnslog/default.nix b/nixpkgs/pkgs/applications/misc/netsurf/libnslog/default.nix
new file mode 100644
index 000000000000..43b4622ab03a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/libnslog/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, pkgconfig, bison, flex
+, buildsystem
+}:
+
+stdenv.mkDerivation rec {
+
+  name = "netsurf-${libname}-${version}";
+  libname = "libnslog";
+  version = "0.1.2";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "1ggs6xvxp8fbg5w8pifalipm458ygr9ab6j2yvj8fnnmxwvdh4jd";
+  };
+
+  nativeBuildInputs = [ pkgconfig bison flex ];
+  buildInputs = [
+    buildsystem
+  ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.netsurf-browser.org/";
+    description = "NetSurf Parametric Logging Library";
+    license = licenses.mit;
+    maintainers = [ maintainers.samueldr ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/netsurf/libnspsl/default.nix b/nixpkgs/pkgs/applications/misc/netsurf/libnspsl/default.nix
new file mode 100644
index 000000000000..5ded38d974e0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/libnspsl/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, pkgconfig
+, buildsystem
+}:
+
+stdenv.mkDerivation rec {
+
+  name = "netsurf-${libname}-${version}";
+  libname = "libnspsl";
+  version = "0.1.5";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "0siq8zjfxv75i9fw6q5hkaijpdm1w3zskd5qk6vsvz8cqan4vifd";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    buildsystem
+  ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.netsurf-browser.org/";
+    description = "NetSurf Public Suffix List - Handling library";
+    license = licenses.mit;
+    maintainers = [ maintainers.samueldr ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/netsurf/libnsutils/default.nix b/nixpkgs/pkgs/applications/misc/netsurf/libnsutils/default.nix
new file mode 100644
index 000000000000..6d3a3d1f104f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/libnsutils/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, pkgconfig
+, buildsystem
+}:
+
+stdenv.mkDerivation rec {
+
+  name = "netsurf-${libname}-${version}";
+  libname = "libnsutils";
+  version = "0.0.5";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "09w1rixps1iiq6wirjwxmd6h87llvjzvw565rahjb3rlyhcplfqf";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ buildsystem];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.netsurf-browser.org/";
+    description = "Generalised utility library for netsurf browser";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.vrthra ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/netsurf/libparserutils/default.nix b/nixpkgs/pkgs/applications/misc/netsurf/libparserutils/default.nix
new file mode 100644
index 000000000000..9fcd5cfebf6e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/libparserutils/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, perl
+, buildsystem
+}:
+
+stdenv.mkDerivation rec {
+
+  name = "netsurf-${libname}-${version}";
+  libname = "libparserutils";
+  version = "0.2.4";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "1n2794y2l0c8nv8z2pxwfnbn882987ifmxjv60zdxkhcndhswarj";
+  };
+
+  buildInputs = [ buildsystem perl ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.netsurf-browser.org/";
+    description = "Parser building library for netsurf browser";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.vrthra ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/netsurf/libsvgtiny/default.nix b/nixpkgs/pkgs/applications/misc/netsurf/libsvgtiny/default.nix
new file mode 100644
index 000000000000..b6e1b5a1667e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/libsvgtiny/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, pkgconfig, gperf
+, buildsystem
+, libdom
+, libhubbub
+, libparserutils
+, libwapcaplet
+}:
+
+stdenv.mkDerivation rec {
+
+  name = "netsurf-${libname}-${version}";
+  libname = "libsvgtiny";
+  version = "0.1.7";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "10bpkmvfpydj74im3r6kqm9vnvgib6afy0alx71q5n0w5yawy39c";
+  };
+
+  nativeBuildInputs = [ pkgconfig gperf ];
+  buildInputs = [
+    buildsystem
+    libdom
+    libhubbub
+    libparserutils
+    libwapcaplet
+  ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.netsurf-browser.org/";
+    description = "NetSurf SVG decoder";
+    license = licenses.mit;
+    maintainers = [ maintainers.samueldr ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/netsurf/libutf8proc/default.nix b/nixpkgs/pkgs/applications/misc/netsurf/libutf8proc/default.nix
new file mode 100644
index 000000000000..dcd56182e320
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/libutf8proc/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, pkgconfig
+, buildsystem
+}:
+
+stdenv.mkDerivation rec {
+
+  name = "netsurf-${libname}-${version}";
+  libname = "libutf8proc";
+  version = "2.4.0-1";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "0wn409laqaqlqnz2d77419b5rya99vvc696vj187biy1i5livaq1";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ buildsystem];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.netsurf-browser.org/";
+    description = "UTF8 Processing library for netsurf browser";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.vrthra ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/netsurf/libwapcaplet/default.nix b/nixpkgs/pkgs/applications/misc/netsurf/libwapcaplet/default.nix
new file mode 100644
index 000000000000..f3c7bcbd1a0e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/libwapcaplet/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl
+, buildsystem
+}:
+
+stdenv.mkDerivation rec {
+
+  name = "netsurf-${libname}-${version}";
+  libname = "libwapcaplet";
+  version = "0.4.2";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "1fjwzbn7j8bi1b9bvwxsy3i2cr6byq2s2d29866801pjnf528g86";
+  };
+
+  buildInputs = [ buildsystem ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
+  ];
+
+  NIX_CFLAGS_COMPILE = "-Wno-error=cast-function-type";
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.netsurf-browser.org/";
+    description = "String internment library for netsurf browser";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.vrthra ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/netsurf/nsgenbind/default.nix b/nixpkgs/pkgs/applications/misc/netsurf/nsgenbind/default.nix
new file mode 100644
index 000000000000..2dd4b830102a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/nsgenbind/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl
+, flex, bison
+, buildsystem
+}:
+
+stdenv.mkDerivation rec {
+
+  pname = "netsurf-nsgenbind";
+  version = "0.7";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/nsgenbind-${version}-src.tar.gz";
+    sha256 = "0rplmky4afsjwiwh7grkmcdmzg86zksa55j93dvq92f91yljwqqq";
+  };
+
+  buildInputs = [ buildsystem flex bison ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.netsurf-browser.org/";
+    description = "Generator for JavaScript bindings for netsurf browser";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.vrthra ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/nix-tour/default.nix b/nixpkgs/pkgs/applications/misc/nix-tour/default.nix
new file mode 100644
index 000000000000..05ef696f99b8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/nix-tour/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchgit, electron, runtimeShell } :
+
+stdenv.mkDerivation rec {
+  pname = "nix-tour";
+  version = "0.0.1";
+
+  buildInputs = [ electron ];
+
+  src = fetchgit {
+    url = "https://github.com/nixcloud/tour_of_nix";
+    rev = "v${version}";
+    sha256 = "09b1vxli4zv1nhqnj6c0vrrl51gaira94i8l7ww96fixqxjgdwvb";
+  };
+
+  phases = [ "unpackPhase" "installPhase" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mkdir -p $out/share
+    cp -R * $out/share
+    chmod 0755 $out/share/ -R
+    echo "#!${runtimeShell}" > $out/bin/nix-tour
+    echo "cd $out/share/" >> $out/bin/nix-tour
+    echo "${electron}/bin/electron $out/share/electron-main.js" >> $out/bin/nix-tour
+    chmod 0755 $out/bin/nix-tour
+  '';
+
+  meta = with stdenv.lib; {
+    description = "'the tour of nix' from nixcloud.io/tour as offline version";
+    homepage = "https://nixcloud.io/tour";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ qknight ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/nixnote2/default.nix b/nixpkgs/pkgs/applications/misc/nixnote2/default.nix
new file mode 100644
index 000000000000..92bb4ca22077
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/nixnote2/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, mkDerivation, fetchFromGitHub, boost
+, qtbase, qtwebkit, poppler, qmake, hunspell, html-tidy}:
+
+mkDerivation rec {
+  pname = "nixnote2";
+  version = "2.0.2";
+
+  src = fetchFromGitHub {
+    owner = "baumgarr";
+    repo = "nixnote2";
+    rev = "v${version}";
+    sha256 = "0cfq95mxvcgby66r61gclm1a2c6zck5aln04xmg2q8kg6p9d31fr";
+  };
+
+  buildInputs = [ boost qtbase qtwebkit poppler hunspell ];
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ qmake ];
+
+  postPatch = ''
+    # Fix location of poppler-qt5.h
+    for f in threads/indexrunner.cpp html/noteformatter.cpp utilities/noteindexer.cpp gui/plugins/popplerviewer.h gui/plugins/pluginfactory.h gui/plugins/popplerviewer.cpp ; do
+      substituteInPlace $f \
+        --replace '#include <poppler-qt5.h>' '#include <poppler/qt5/poppler-qt5.h>'
+    done
+
+    substituteInPlace help/about.html --replace '__VERSION__' '${version}'
+
+    substituteInPlace nixnote.cpp --replace 'tidyProcess.start("tidy' 'tidyProcess.start("${html-tidy}/bin/tidy'
+  '';
+
+  postInstall = ''
+    cp images/windowIcon.png $out/share/pixmaps/nixnote2.png
+    cp theme.ini $out/share/nixnote2/theme.ini
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An unofficial client of Evernote";
+    homepage = "http://www.nixnote.org/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ htr ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/nnn/default.nix b/nixpkgs/pkgs/applications/misc/nnn/default.nix
new file mode 100644
index 000000000000..95920362a5f4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/nnn/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, pkgconfig, ncurses, readline, conf ? null }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "nnn";
+  version = "3.2";
+
+  src = fetchFromGitHub {
+    owner = "jarun";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "13p3379c26l57121ymx0kw7afh51zv614p57di311d2a41jaz5cw";
+  };
+
+  configFile = optionalString (conf != null) (builtins.toFile "nnn.h" conf);
+  preBuild = optionalString (conf != null) "cp ${configFile} src/nnn.h";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ readline ncurses ];
+
+  makeFlags = [ "DESTDIR=${placeholder "out"}" "PREFIX=" ];
+
+  # shell completions
+  postInstall = ''
+    install -Dm555 misc/auto-completion/bash/nnn-completion.bash $out/share/bash-completion/completions/nnn.bash
+    install -Dm555 misc/auto-completion/zsh/_nnn -t $out/share/zsh/site-functions
+    install -Dm555 misc/auto-completion/fish/nnn.fish -t $out/share/fish/vendor_completions.d
+  '';
+
+  meta = {
+    description = "Small ncurses-based file browser forked from noice";
+    homepage = "https://github.com/jarun/nnn";
+    license = licenses.bsd2;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ jfrankenau filalex77 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/noice/default.nix b/nixpkgs/pkgs/applications/misc/noice/default.nix
new file mode 100644
index 000000000000..2be5a4ab83b9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/noice/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchgit, ncurses, conf ? null }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "noice";
+  version = "0.8";
+
+  src = fetchgit {
+    url = "git://git.2f30.org/noice.git";
+    rev = "refs/tags/v${version}";
+    sha256 = "0975j4m93s9a21pazwdzn4gqhkngwq7q6ghp0q8a75r6c4fb7aar";
+  };
+
+  configFile = optionalString (conf!=null) (builtins.toFile "config.def.h" conf);
+  preBuild = optionalString (conf!=null) "cp ${configFile} config.def.h";
+
+  buildInputs = [ ncurses ];
+
+  buildFlags = [ "LDLIBS=-lncurses" ];
+
+  installFlags = [ "DESTDIR=$(out)" "PREFIX=" ];
+
+  meta = {
+    description = "Small ncurses-based file browser";
+    homepage = "https://git.2f30.org/noice/";
+    license = licenses.bsd2;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ jfrankenau ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/notable/default.nix b/nixpkgs/pkgs/applications/misc/notable/default.nix
new file mode 100644
index 000000000000..923f5fb4528e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/notable/default.nix
@@ -0,0 +1,47 @@
+{ appimageTools, fetchurl, lib, gsettings-desktop-schemas, gtk3 }:
+
+let
+  pname = "notable";
+  version = "1.8.4";
+  sha256 = "0rvz8zwsi62kiq89pv8n2wh9h5yb030kvdr1vf65xwqkhqcrzrby";
+
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/notable/notable/releases/download/v${version}/Notable-${version}.AppImage";
+    inherit sha256;
+  };
+
+  appimageContents = appimageTools.extract {
+    inherit name src;
+  };
+
+in
+appimageTools.wrapType2 rec {
+
+  inherit name src;
+
+  profile = ''
+    export LC_ALL=C.UTF-8
+    export XDG_DATA_DIRS=${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS
+  '';
+
+  multiPkgs = null; # no 32bit needed
+  extraPkgs = p: (appimageTools.defaultFhsEnvArgs.multiPkgs p) ++ [ p.at-spi2-atk p.at-spi2-core ];
+  extraInstallCommands = ''
+    mv $out/bin/{${name},${pname}}
+    install -m 444 -D ${appimageContents}/notable.desktop $out/share/applications/notable.desktop
+    install -m 444 -D ${appimageContents}/usr/share/icons/hicolor/1024x1024/apps/notable.png \
+      $out/share/icons/hicolor/1024x1024/apps/notable.png
+    substituteInPlace $out/share/applications/notable.desktop \
+      --replace 'Exec=AppRun' 'Exec=${pname}'
+  '';
+
+  meta = with lib; {
+    description = "The markdown-based note-taking app that doesn't suck";
+    homepage = "https://github.com/notable/notable";
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/notejot/default.nix b/nixpkgs/pkgs/applications/misc/notejot/default.nix
new file mode 100644
index 000000000000..3498ef278675
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/notejot/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchFromGitHub, vala, pkgconfig, meson, ninja, python3, pantheon
+, gtk3, gtksourceview, json-glib, libgee, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "notejot";
+  version = "1.6.3";
+
+  src = fetchFromGitHub {
+    owner = "lainsce";
+    repo = pname;
+    rev = version;
+    sha256 = "170dzgd6cnf2k3hfifjysmdggpskx6v1pjmblqgbwaj2d3snf3h8";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    vala
+    pkgconfig
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    gtksourceview
+    json-glib
+    libgee
+    pantheon.elementary-icon-theme
+    pantheon.granite
+  ];
+
+  postPatch = ''
+    patchShebangs meson/post_install.py
+  '';
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Stupidly-simple sticky notes applet";
+    homepage = "https://github.com/lainsce/notejot";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ worldofpeace ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/notify-osd-customizable/default.nix b/nixpkgs/pkgs/applications/misc/notify-osd-customizable/default.nix
new file mode 100644
index 000000000000..36fa888e8884
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/notify-osd-customizable/default.nix
@@ -0,0 +1,48 @@
+{ stdenv
+, dbus-glib
+, fetchurl
+, glib
+, gnome3
+, libnotify
+, libtool
+, libwnck3
+, makeWrapper
+, pkgconfig
+, gsettings-desktop-schemas
+}:
+
+let baseURI = "https://launchpad.net/~leolik/+archive/leolik";
+in stdenv.mkDerivation rec {
+  pname = "notify-osd";
+  version = "0.9.35+16.04.20160415";
+
+  src = fetchurl {
+    url = "${baseURI}/+files/notify-osd_${version}-0ubuntu1-leolik~ppa0.tar.gz";
+    sha256 = "026dr46jh3xc4103wnslzy7pxbxkkpflh52c59j8vzwaa7bvvzkv";
+    name = "notify-osd-customizable.tar.gz";
+  };
+
+  preConfigure = "./autogen.sh --libexecdir=$(out)/bin";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    glib libwnck3 libnotify dbus-glib makeWrapper
+    gsettings-desktop-schemas gnome3.gnome-common
+    libtool
+  ];
+
+  configureFlags = [ "--libexecdir=$(out)/bin" ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/notify-osd" \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Daemon that displays passive pop-up notifications";
+    homepage = "https://launchpad.net/notify-osd";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.imalison ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/notify-osd/default.nix b/nixpkgs/pkgs/applications/misc/notify-osd/default.nix
new file mode 100644
index 000000000000..e2bff0031186
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/notify-osd/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, pkgconfig, glib, libwnck3, libnotify, dbus-glib, makeWrapper, gsettings-desktop-schemas }:
+
+stdenv.mkDerivation rec {
+  pname = "notify-osd";
+  version = "0.9.34";
+
+  src = fetchurl {
+    url = "https://launchpad.net/notify-osd/precise/${version}/+download/notify-osd-${version}.tar.gz";
+    sha256 = "0g5a7a680b05x27apz0y1ldl5csxpp152wqi42s107jymbp0s20j";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    glib libwnck3 libnotify dbus-glib makeWrapper
+    gsettings-desktop-schemas
+  ];
+
+  configureFlags = [ "--libexecdir=$(out)/bin" ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/notify-osd" \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Daemon that displays passive pop-up notifications";
+    homepage = "https://launchpad.net/notify-osd";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.bodil ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/nrsc5/default.nix b/nixpkgs/pkgs/applications/misc/nrsc5/default.nix
new file mode 100644
index 000000000000..ada603cba963
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/nrsc5/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchFromGitHub,
+  autoconf, automake, libtool, cmake,
+  rtl-sdr, libao, fftwFloat
+} :
+let
+  src_faad2 = fetchFromGitHub {
+    owner = "dsvensson";
+    repo = "faad2";
+    rev = "b7aa099fd3220b71180ed2b0bc19dc6209a1b418";
+    sha256 = "0pcw2x9rjgkf5g6irql1j4m5xjb4lxj6468z8v603921bnir71mf";
+  };
+
+  version = "1.0";
+
+in stdenv.mkDerivation {
+  pname = "nrsc5";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "theori-io";
+    repo = "nrsc5";
+    rev = "v${version}";
+    sha256 = "09zzh3h1zzf2lwrbz3i7rif2hw36d9ska8irvxaa9lz6xc1y68pg";
+  };
+
+  postUnpack = ''
+    export srcRoot=`pwd`
+    export faadSrc="$srcRoot/faad2-prefix/src/faad2_external"
+    mkdir -p $faadSrc
+    cp -r ${src_faad2}/* $faadSrc
+    chmod -R u+w $faadSrc
+  '';
+
+  postPatch = ''
+    sed -i '/GIT_REPOSITORY/d' CMakeLists.txt
+    sed -i '/GIT_TAG/d' CMakeLists.txt
+    sed -i "s:set (FAAD2_PREFIX .*):set (FAAD2_PREFIX \"$srcRoot/faad2-prefix\"):" CMakeLists.txt
+  '';
+
+  nativeBuildInputs = [ cmake autoconf automake libtool ];
+  buildInputs = [ rtl-sdr libao fftwFloat ];
+
+  cmakeFlags = [ "-DUSE_COLOR=ON" "-DUSE_FAAD2=ON" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/theori-io/nrsc5";
+    description = "HD-Radio decoder for RTL-SDR";
+    platforms = stdenv.lib.platforms.linux;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ markuskowa ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/nut/default.nix b/nixpkgs/pkgs/applications/misc/nut/default.nix
new file mode 100644
index 000000000000..8f188818d4f7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/nut/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, fetchurl, pkgconfig, neon, libusb-compat-0_1, openssl, udev, avahi, freeipmi
+, libtool, makeWrapper, autoreconfHook, fetchpatch
+}:
+
+stdenv.mkDerivation rec {
+  pname = "nut";
+  version = "2.7.4";
+
+  src = fetchurl {
+    url = "https://networkupstools.org/source/2.7/${pname}-${version}.tar.gz";
+    sha256 = "19r5dm07sfz495ckcgbfy0pasx0zy3faa0q7bih69lsjij8q43lq";
+  };
+
+  patches = [
+    (fetchpatch {
+      # Fix build with openssl >= 1.1.0
+      url = "https://github.com/networkupstools/nut/commit/612c05efb3c3b243da603a3a050993281888b6e3.patch";
+      sha256 = "0jdbii1z5sqyv24286j5px65j7b3gp8zk3ahbph83pig6g46m3hs";
+    })
+  ];
+
+  buildInputs = [ neon libusb-compat-0_1 openssl udev avahi freeipmi ];
+
+  nativeBuildInputs = [ autoreconfHook libtool pkgconfig makeWrapper ];
+
+  configureFlags =
+    [ "--with-all"
+      "--with-ssl"
+      "--without-snmp" # Until we have it ...
+      "--without-powerman" # Until we have it ...
+      "--without-cgi"
+      "--without-hal"
+      "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
+      "--with-udev-dir=$(out)/etc/udev"
+    ];
+
+  enableParallelBuilding = true;
+
+  postInstall = ''
+    wrapProgram $out/bin/nut-scanner --prefix LD_LIBRARY_PATH : \
+      "$out/lib:${neon}/lib:${libusb-compat-0_1.out}/lib:${avahi}/lib:${freeipmi}/lib"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Network UPS Tools";
+    longDescription = ''
+      Network UPS Tools is a collection of programs which provide a common
+      interface for monitoring and administering UPS, PDU and SCD hardware.
+      It uses a layered approach to connect all of the parts.
+    '';
+    homepage = "https://networkupstools.org/";
+    repositories.git = "https://github.com/networkupstools/nut.git";
+    platforms = platforms.linux;
+    maintainers = [ maintainers.pierron ];
+    license = with licenses; [ gpl1Plus gpl2Plus gpl3Plus ];
+    priority = 10;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/obinskit/default.nix b/nixpkgs/pkgs/applications/misc/obinskit/default.nix
new file mode 100644
index 000000000000..bbaa135f47e1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/obinskit/default.nix
@@ -0,0 +1,63 @@
+{ stdenv
+, fetchurl
+, libxkbcommon
+, systemd
+, xorg
+, electron_3
+, makeWrapper
+, makeDesktopItem
+}:
+let
+  desktopItem = makeDesktopItem rec {
+    name = "Obinskit";
+    exec = "obinskit";
+    icon = "obinskit";
+    desktopName = "Obinskit";
+    genericName = "Obinskit keyboard configurator";
+    categories = "Utility";
+  };
+
+in
+stdenv.mkDerivation rec {
+  pname = "obinskit";
+  version = "1.1.4";
+
+  src = fetchurl {
+    url = "http://releases.obins.net/occ/linux/tar/ObinsKit_${version}_x64.tar.gz";
+    sha256 = "0q422rmfn4k4ww1qlgrwdmxz4l10dxkd6piynbcw5cr4i5icnh2l";
+  };
+
+  unpackPhase = "tar -xzf $src";
+
+  sourceRoot = "ObinsKit_${version}_x64";
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  dontConfigure = true;
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/opt/obinskit
+
+    cp -r resources $out/opt/obinskit/
+    cp -r locales $out/opt/obinskit/
+
+    mkdir -p $out/share/{applications,pixmaps}
+    install resources/icons/tray-darwin@2x.png $out/share/pixmaps/obinskit.png
+    ln -s ${desktopItem}/share/applications/* $out/share/applications
+  '';
+
+  postFixup = ''
+    makeWrapper ${electron_3}/bin/electron $out/bin/${pname} \
+      --add-flags $out/opt/obinskit/resources/app.asar \
+      --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ stdenv.cc.cc.lib libxkbcommon systemd.lib xorg.libXt ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Graphical configurator for Anne Pro and Anne Pro II keyboards";
+    homepage = "http://en.obins.net/obinskit/"; # https is broken
+    license = licenses.unfree;
+    maintainers = with maintainers; [ shou ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ocropus/default.nix b/nixpkgs/pkgs/applications/misc/ocropus/default.nix
new file mode 100644
index 000000000000..ef371dc59fff
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ocropus/default.nix
@@ -0,0 +1,59 @@
+{ stdenv, fetchFromGitHub, fetchurl, pythonPackages, curl }:
+
+let
+  getmodel = name: sha256: {
+    inherit name;
+    src = fetchurl {
+      url = "http://www.tmbdev.net/ocropy/${name}";
+      inherit sha256;
+    };
+  };
+
+  models = [
+    (getmodel "en-default.pyrnn.gz"
+      "1xyi3k3p81mfw0491gb1haisazfyi2i18f1wjs1m34ak39qfqjdp")
+    (getmodel "fraktur.pyrnn.gz"
+      "1wlwvxn91ilgmlri1hj81arl3mbzxc24ycdnkf5icq4hdi4c6y8b")
+  ];
+
+in
+pythonPackages.buildPythonApplication rec {
+  pname = "ocropus";
+  version = "1.3.3";
+
+  src = fetchFromGitHub {
+    sha256 = "02p1334mic5cfhvpfphfrbim4036yfd8s2zzpwm0xmm829z71nr7";
+    rev = "v${version}";
+    repo = "ocropy";
+    owner = "tmbdev";
+  };
+
+  propagatedBuildInputs = with pythonPackages; [ curl numpy scipy pillow
+    matplotlib beautifulsoup4 pygtk lxml ];
+
+  enableParallelBuilding = true;
+
+  preConfigure = with stdenv.lib; ''
+    ${concatStrings (map (x: "cp -R ${x.src} models/`basename ${x.name}`;")
+      models)}
+
+    substituteInPlace ocrolib/common.py --replace /usr/local $out
+    substituteInPlace ocrolib/default.py --replace /usr/local $out
+  '';
+
+  doCheck = false;  # fails
+  checkPhase = ''
+    patchShebangs .
+    substituteInPlace ./run-test \
+      --replace 'ocropus-rpred' 'ocropus-rpred -Q $NIX_BUILD_CORES'
+    PATH=".:$PATH" ./run-test
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Open source document analysis and OCR system";
+    license = licenses.asl20;
+    homepage = "https://github.com/tmbdev/ocropy/";
+    maintainers = with maintainers; [ domenkozar ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/octoprint/default.nix b/nixpkgs/pkgs/applications/misc/octoprint/default.nix
new file mode 100644
index 000000000000..7d613f376758
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/octoprint/default.nix
@@ -0,0 +1,108 @@
+{ pkgs, stdenv, lib, fetchFromGitHub, python3
+# To include additional plugins, pass them here as an overlay.
+, packageOverrides ? self: super: {}
+}:
+let
+  mkOverride = attrname: version: sha256:
+    self: super: {
+      ${attrname} = super.${attrname}.overridePythonAttrs (oldAttrs: {
+        inherit version;
+        src = oldAttrs.src.override {
+          inherit version sha256;
+        };
+      });
+    };
+
+  py = python3.override {
+    self = py;
+    packageOverrides = lib.foldr lib.composeExtensions (self: super: { }) ([
+      (mkOverride "flask"       "0.12.5" "fac2b9d443e49f7e7358a444a3db5950bdd0324674d92ba67f8f1f15f876b14f")
+      (mkOverride "flaskbabel"  "0.12.2" "11jwp8vvq1gnm31qh6ihy2h393hy18yn9yjp569g60r0wj1x2sii")
+      (mkOverride "tornado"     "4.5.3"  "02jzd23l4r6fswmwxaica9ldlyc2p6q8dk6dyff7j58fmdzf853d")
+      (mkOverride "psutil"      "5.6.7"  "ffad8eb2ac614518bbe3c0b8eb9dffdb3a8d2e3a7d5da51c5b974fb723a5c5aa")
+      (mkOverride "watchdog"    "0.9.0"  "07cnvvlpif7a6cg4rav39zq8fxa5pfqawchr46433pij0y6napwn")
+
+      # Octoprint holds back jinja2 to 2.8.1 due to breaking changes.
+      # This old version does not have updated test config for pytest 4,
+      # and pypi tarball doesn't contain tests dir anyways.
+      (self: super: {
+        jinja2 = super.jinja2.overridePythonAttrs (oldAttrs: rec {
+          version = "2.8.1";
+          src = oldAttrs.src.override {
+            inherit version;
+            sha256 = "14aqmhkc9rw5w0v311jhixdm6ym8vsm29dhyxyrjfqxljwx1yd1m";
+          };
+          doCheck = false;
+        });
+
+        httpretty = super.httpretty.overridePythonAttrs (oldAttrs: rec {
+          doCheck = false;
+        });
+
+        celery = super.celery.overridePythonAttrs (oldAttrs: rec {
+          doCheck = false;
+        });
+      })
+      (self: super: {
+        octoprint = self.buildPythonPackage rec {
+          pname = "OctoPrint";
+          version = "1.4.0";
+
+          src = fetchFromGitHub {
+            owner  = "foosel";
+            repo   = "OctoPrint";
+            rev    = version;
+            sha256 = "0387228544v28d69dcdg2zr5gp6qavkfr6dydpjgj5awxv3w25d5";
+          };
+
+          propagatedBuildInputs = with super; [
+            awesome-slugify flask flask_assets rsa requests pkginfo watchdog
+            semantic-version werkzeug flaskbabel tornado
+            psutil pyserial flask_login netaddr markdown
+            pylru pyyaml sarge feedparser netifaces click websocket_client
+            scandir chainmap future wrapt monotonic emoji jinja2
+            frozendict cachelib sentry-sdk filetype markupsafe
+          ] ++ lib.optionals stdenv.isDarwin [ py.pkgs.appdirs ];
+
+          checkInputs = with super; [ pytestCheckHook mock ddt ];
+
+          postPatch = let
+            ignoreVersionConstraints = [
+              "sentry-sdk"
+            ];
+          in ''
+            sed -r -i \
+              ${lib.concatStringsSep "\n" (map (e:
+                ''-e 's@${e}[<>=]+.*@${e}",@g' \''
+              ) ignoreVersionConstraints)}
+              setup.py
+          '';
+
+          dontUseSetuptoolsCheck = true;
+
+          preCheck = ''
+            export HOME=$(mktemp -d)
+            rm pytest.ini
+          '';
+
+          disabledTests = [
+            "test_check_setup" # Why should it be able to call pip?
+          ] ++ lib.optionals stdenv.isDarwin [
+            "test_set_external_modification"
+          ];
+
+          passthru.python = self.python;
+
+          meta = with stdenv.lib; {
+            homepage = "https://octoprint.org/";
+            description = "The snappy web interface for your 3D printer";
+            license = licenses.agpl3;
+            maintainers = with maintainers; [ abbradar gebner WhittlesJr ];
+          };
+        };
+      })
+      (import ./plugins.nix {inherit pkgs;})
+      packageOverrides
+    ]);
+  };
+in with py.pkgs; toPythonApplication octoprint
diff --git a/nixpkgs/pkgs/applications/misc/octoprint/m33-fio-one-library.patch b/nixpkgs/pkgs/applications/misc/octoprint/m33-fio-one-library.patch
new file mode 100644
index 000000000000..24c9c4a80f5d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/octoprint/m33-fio-one-library.patch
@@ -0,0 +1,175 @@
+From 314bcebfcd1759981ce12255be29d8ae68cd400b Mon Sep 17 00:00:00 2001
+From: Nikolay Amiantov <ab@fmap.me>
+Date: Wed, 23 Nov 2016 00:40:48 +0300
+Subject: [PATCH] Build and use one version of preprocessor library
+
+---
+ octoprint_m33fio/__init__.py   | 73 ++----------------------------------------
+ shared library source/Makefile | 62 +++--------------------------------
+ 2 files changed, 6 insertions(+), 129 deletions(-)
+
+diff --git a/octoprint_m33fio/__init__.py b/octoprint_m33fio/__init__.py
+index 054870a..4d5ecc1 100755
+--- a/octoprint_m33fio/__init__.py
++++ b/octoprint_m33fio/__init__.py
+@@ -1189,78 +1189,9 @@ class M33FioPlugin(
+ 		# Check if using shared library or checking if it is usable
+ 		if self._settings.get_boolean(["UseSharedLibrary"]) or isUsable :
+ 	
+-			# Check if running on Linux
+-			if platform.uname()[0].startswith("Linux") :
+-
+-				# Check if running on a Raspberry Pi 1
+-				if platform.uname()[4].startswith("armv6l") and self.getCpuHardware() == "BCM2708" :
+-	
+-					# Set shared library
+-					self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_arm1176jzf-s.so")
+-	
+-				# Otherwise check if running on a Raspberry Pi 2 or Raspberry Pi 3
+-				elif platform.uname()[4].startswith("armv7l") and self.getCpuHardware() == "BCM2709" :
+-	
+-					# Set shared library
+-					self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_arm_cortex-a7.so")
+-	
+-				# Otherwise check if running on an ARM7 device
+-				elif platform.uname()[4].startswith("armv7") :
+-	
+-					# Set shared library
+-					self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_arm7.so")
+-	
+-				# Otherwise check if using an i386 or x86-64 device
+-				elif platform.uname()[4].endswith("86") or platform.uname()[4].endswith("64") :
+-
+-					# Check if Python is running as 32-bit
+-					if platform.architecture()[0].startswith("32") :
+-		
+-						# Set shared library
+-						self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_i386.so")
+-	
+-					# Otherwise check if Python is running as 64-bit
+-					elif platform.architecture()[0].startswith("64") :
+-		
+-						# Set shared library
+-						self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_x86-64.so")
+-
+-			# Otherwise check if running on Windows and using an i386 or x86-64 device
+-			elif platform.uname()[0].startswith("Windows") and (platform.uname()[4].endswith("86") or platform.uname()[4].endswith("64")) :
++			# Set shared library
++			self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace('\\', '/') + "/static/libraries/libpreprocessor.so")
+ 
+-				# Check if Python is running as 32-bit
+-				if platform.architecture()[0].startswith("32") :
+-	
+-					# Set shared library
+-					self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_i386.dll")
+-
+-				# Otherwise check if Python is running as 64-bit
+-				elif platform.architecture()[0].startswith("64") :
+-	
+-					# Set shared library
+-					self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_x86-64.dll")
+-
+-			# Otherwise check if running on macOS and using an i386 or x86-64 device
+-			elif platform.uname()[0].startswith("Darwin") and (platform.uname()[4].endswith("86") or platform.uname()[4].endswith("64")) :
+-
+-				# Check if Python is running as 32-bit
+-				if platform.architecture()[0].startswith("32") :
+-	
+-					# Set shared library
+-					self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_i386.dylib")
+-
+-				# Otherwise check if Python is running as 64-bit
+-				elif platform.architecture()[0].startswith("64") :
+-	
+-					# Set shared library
+-					self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_x86-64.dylib")
+-			
+-			# Otherwise check if running FreeBSD
+-			elif platform.uname()[0].startswith("FreeBSD") :
+-			
+-				# TODO: Compile FreeBSD shared library pre-processors
+-				pass
+-			
+ 			# Check if shared library was set
+ 			if self.sharedLibrary :
+ 
+diff --git a/shared library source/Makefile b/shared library source/Makefile
+index 792b4f4..4c74f5c 100755
+--- a/shared library source/Makefile	
++++ b/shared library source/Makefile	
+@@ -1,68 +1,14 @@
+-# Target platform options: LINUX32, LINUX64, WINDOWS32, WINDOWS64, PI, PI2, ARM7, MACOS32, MACOS64
+-LIBRARY_NAME = preprocessor
+-TARGET_PLATFORM = LINUX64
++LIBRARY_NAME = libpreprocessor
+ VER = .1
+ 
+-ifeq ($(TARGET_PLATFORM), LINUX32)
+-	PROG = $(LIBRARY_NAME)_i386.so
+-	CC = g++
+-	CFLAGS = -fPIC -m32 -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++
+-endif
+-
+-ifeq ($(TARGET_PLATFORM), LINUX64)
+-	PROG = $(LIBRARY_NAME)_x86-64.so
+-	CC = g++
+-	CFLAGS = -fPIC -m64 -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++
+-endif
+-
+-ifeq ($(TARGET_PLATFORM), WINDOWS32)
+-	PROG = $(LIBRARY_NAME)_i386.dll
+-	CC = i686-w64-mingw32-g++
+-	CFLAGS = -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++
+-endif
+-
+-ifeq ($(TARGET_PLATFORM), WINDOWS64)
+-	PROG = $(LIBRARY_NAME)_x86-64.dll
+-	CC = x86_64-w64-mingw32-g++
+-	CFLAGS = -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++
+-endif
+-
+-ifeq ($(TARGET_PLATFORM), PI)
+-	PROG = $(LIBRARY_NAME)_arm1176jzf-s.so
+-	CC = /opt/arm-toolchain/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
+-	CFLAGS = -fPIC -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++
+-endif
+-
+-ifeq ($(TARGET_PLATFORM), PI2)
+-	PROG = $(LIBRARY_NAME)_arm_cortex-a7.so
+-	CC = /opt/arm-toolchain/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
+-	CFLAGS = -fPIC -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++
+-endif
+-
+-ifeq ($(TARGET_PLATFORM), ARM7)
+-	PROG = $(LIBRARY_NAME)_arm7.so
+-	CC = /opt/arm-toolchain/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++
+-	CFLAGS = -fPIC -mcpu=generic-armv7-a -mfpu=vfp -mfloat-abi=hard -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++
+-endif
+-
+-ifeq ($(TARGET_PLATFORM), MACOS32)
+-	PROG = $(LIBRARY_NAME)_i386.dylib
+-	CC = clang++
+-	CFLAGS = -fPIC -m32 -stdlib=libc++ -O3 -Wl,-install_name,$(PROG)$(VER)
+-
+-endif
+-
+-ifeq ($(TARGET_PLATFORM), MACOS64)
+-	PROG = $(LIBRARY_NAME)_x86-64.dylib
+-	CC = clang++
+-	CFLAGS = -fPIC -m64 -stdlib=libc++ -O3 -Wl,-install_name,$(PROG)$(VER)
+-endif
++PROG = $(LIBRARY_NAME).so
++CFLAGS = -fPIC -O3 -Wl,-soname,$(PROG)$(VER)
+ 
+ SRCS = preprocessor.cpp gcode.cpp vector.cpp
+ CFLAGS += -Wall -std=c++11 -fvisibility=hidden -shared
+ 
+ all:
+-	$(CC) $(CFLAGS) -o ../octoprint_m33fio/static/libraries/$(PROG) $(SRCS)
++	$(CXX) $(CFLAGS) -o ../octoprint_m33fio/static/libraries/$(PROG) $(SRCS)
+ 
+ clean:
+ 	rm -f ../octoprint_m33fio/static/libraries/$(PROG)
+-- 
+2.14.1
+
diff --git a/nixpkgs/pkgs/applications/misc/octoprint/plugins.nix b/nixpkgs/pkgs/applications/misc/octoprint/plugins.nix
new file mode 100644
index 000000000000..b5d52f5e5f89
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/octoprint/plugins.nix
@@ -0,0 +1,255 @@
+{ pkgs }:
+
+with pkgs;
+
+self: super: let
+  buildPlugin = args: self.buildPythonPackage (args // {
+    pname = "OctoPrintPlugin-${args.pname}";
+    inherit (args) version;
+    propagatedBuildInputs = (args.propagatedBuildInputs or []) ++ [ super.octoprint ];
+    # none of the following have tests
+    doCheck = false;
+  });
+in {
+  inherit buildPlugin;
+
+  # Deprecated alias
+  m3d-fio = self.m33-fio; # added 2016-08-13
+
+  m33-fio = buildPlugin rec {
+    pname = "M33-Fio";
+    version = "1.21";
+
+    src = fetchFromGitHub {
+      owner = "donovan6000";
+      repo = "M33-Fio";
+      rev = "V${version}";
+      sha256 = "1la3611kkqn8yiwjn6cizc45ri8pnk6ckld1na4nk6mqk88jvjq7";
+    };
+
+    patches = [
+      ./m33-fio-one-library.patch
+    ];
+
+    postPatch = ''
+      rm -rf octoprint_m33fio/static/libraries/*
+      (
+        cd 'shared library source'
+        make
+      )
+    '';
+
+    meta = with stdenv.lib; {
+      description = "OctoPrint plugin for the Micro 3D printer";
+      homepage = "https://github.com/donovan6000/M33-Fio";
+      license = licenses.gpl3;
+      maintainers = with maintainers; [ abbradar ];
+    };
+  };
+
+  mqtt = buildPlugin rec {
+    pname = "MQTT";
+    version = "0.8.6";
+
+    src = fetchFromGitHub {
+      owner = "OctoPrint";
+      repo = "OctoPrint-MQTT";
+      rev = version;
+      sha256 = "0y1jnfplcy8mh3szrfbbvngl02j49cbdizglrfsry4fvqg50zjxd";
+    };
+
+    propagatedBuildInputs = with super; [ paho-mqtt ];
+
+    meta = with stdenv.lib; {
+      description = "Publish printer status MQTT";
+      homepage = "https://github.com/OctoPrint/OctoPrint-MQTT";
+      license = licenses.agpl3;
+      maintainers = with maintainers; [ peterhoeg ];
+    };
+  };
+
+  titlestatus = buildPlugin rec {
+    pname = "TitleStatus";
+    version = "0.0.4";
+
+    src = fetchFromGitHub {
+      owner = "MoonshineSG";
+      repo = "OctoPrint-TitleStatus";
+      rev = version;
+      sha256 = "1l78xrabn5hcly2mgxwi17nwgnp2s6jxi9iy4wnw8k8icv74ag7k";
+    };
+
+    meta = with stdenv.lib; {
+      description = "Show printers status in window title";
+      homepage = "https://github.com/MoonshineSG/OctoPrint-TitleStatus";
+      license = licenses.agpl3;
+      maintainers = with maintainers; [ abbradar ];
+    };
+  };
+
+  stlviewer = buildPlugin rec {
+    pname = "STLViewer";
+    version = "0.4.2";
+
+    src = fetchFromGitHub {
+      owner = "jneilliii";
+      repo = "OctoPrint-STLViewer";
+      rev = version;
+      sha256 = "0mkvh44fn2ch4z2avsdjwi1rp353ylmk9j5fln4x7rx8ph8y7g2b";
+    };
+
+    meta = with stdenv.lib; {
+      description = "A simple stl viewer tab for OctoPrint";
+      homepage = "https://github.com/jneilliii/Octoprint-STLViewer";
+      license = licenses.agpl3;
+      maintainers = with maintainers; [ abbradar ];
+    };
+  };
+
+  curaenginelegacy = buildPlugin rec {
+    pname = "CuraEngineLegacy";
+    version = "1.0.2";
+
+    src = fetchFromGitHub {
+      owner = "OctoPrint";
+      repo = "OctoPrint-${pname}";
+      rev = version;
+      sha256 = "1cdb276wfyf3wcfj5g3migd6b6aqmkrxncrqjfcfx4j4k3xac965";
+    };
+
+    meta = with stdenv.lib; {
+      description = "Plugin for slicing via Cura Legacy from within OctoPrint";
+      homepage = "https://github.com/OctoPrint/OctoPrint-CuraEngineLegacy";
+      license = licenses.agpl3;
+      maintainers = with maintainers; [ gebner ];
+    };
+  };
+
+  touchui = buildPlugin rec {
+    pname = "TouchUI";
+    version = "0.3.14";
+
+    src = fetchFromGitHub {
+      owner = "BillyBlaze";
+      repo = "OctoPrint-${pname}";
+      rev = version;
+      sha256 = "033b9nk3kpnmjw9nggcaxy39hcgfviykcy2cx0j6m411agvmqbzf";
+    };
+
+    meta = with stdenv.lib; {
+      description = "Touch friendly interface for a small TFT module or phone for OctoPrint";
+      homepage = "https://github.com/BillyBlaze/OctoPrint-TouchUI";
+      license = licenses.agpl3;
+      maintainers = with maintainers; [ gebner ];
+    };
+  };
+
+  psucontrol = buildPlugin rec {
+    pname = "PSUControl";
+    version = "0.1.9";
+
+    src = fetchFromGitHub {
+      owner = "kantlivelong";
+      repo = "OctoPrint-${pname}";
+      rev = version;
+      sha256 = "1cn009bdgn6c9ba9an5wfj8z02wi0xcsmbhkqggiqlnqy1fq45ca";
+    };
+
+    preConfigure = ''
+      # optional; RPi.GPIO is broken on vanilla kernels
+      sed /RPi.GPIO/d -i requirements.txt
+    '';
+
+    meta = with stdenv.lib; {
+      description = "OctoPrint plugin to control ATX/AUX power supply";
+      homepage = "https://github.com/kantlivelong/OctoPrint-PSUControl";
+      license = licenses.agpl3;
+      maintainers = with maintainers; [ gebner ];
+    };
+  };
+
+  printtimegenius = buildPlugin rec {
+    pname = "PrintTimeGenius";
+    version = "2.2.1";
+
+    src = fetchFromGitHub {
+      owner = "eyal0";
+      repo = "OctoPrint-${pname}";
+      rev = version;
+      sha256 = "1dr93vbpxgxw3b1q4rwam8f4dmiwr5vnfr9796g6jx8xkpfzzy1h";
+    };
+
+    preConfigure = ''
+      # PrintTimeGenius ships with marlin-calc binaries for multiple architectures
+      rm */analyzers/marlin-calc*
+      sed 's@"{}.{}".format(binary_base_name, machine)@"${pkgs.marlin-calc}/bin/marlin-calc"@' -i */analyzers/analyze_progress.py
+    '';
+
+    patches = [
+      ./printtimegenius-logging.patch
+    ];
+
+    meta = with stdenv.lib; {
+      description = "Better print time estimation for OctoPrint";
+      homepage = "https://github.com/eyal0/OctoPrint-PrintTimeGenius";
+      license = licenses.agpl3;
+      maintainers = with maintainers; [ gebner ];
+    };
+  };
+
+  abl-expert = buildPlugin rec {
+    pname = "ABL_Expert";
+    version = "2019-12-21";
+
+    src = fetchgit {
+      url = "https://framagit.org/razer/Octoprint_ABL_Expert/";
+      rev = "f11fbe05088ad618bfd9d064ac3881faec223f33";
+      sha256 = "026r4prkyvwzxag5pv36455q7s3gaig37nmr2nbvhwq3d2lbi5s4";
+    };
+
+    meta = with stdenv.lib; {
+      description = "Marlin auto bed leveling control, mesh correction, and z probe handling";
+      homepage = "https://framagit.org/razer/Octoprint_ABL_Expert/";
+      license = licenses.agpl3;
+      maintainers = with maintainers; [ WhittlesJr ];
+    };
+  };
+
+  gcodeeditor = buildPlugin rec {
+    pname = "GcodeEditor";
+    version = "0.2.6";
+
+    src = fetchFromGitHub {
+      owner = "ieatacid";
+      repo = "OctoPrint-${pname}";
+      rev = version;
+      sha256 = "0c6p78r3vd6ys3kld308pyln09zjbr9yif1ljvcx6wlml2i5l1vh";
+    };
+
+    meta = with stdenv.lib; {
+      description = "Edit gcode on OctoPrint";
+      homepage = "https://github.com/ieatacid/OctoPrint-GcodeEditor";
+      license = licenses.agpl3;
+      maintainers = with maintainers; [ WhittlesJr ];
+    };
+  };
+
+  simpleemergencystop = buildPlugin rec {
+    pname = "SimpleEmergencyStop";
+    version = "0.2.5";
+
+    src = fetchFromGitHub {
+      owner = "Sebclem";
+      repo = "OctoPrint-${pname}";
+      rev = version;
+      sha256 = "10wadv09wv2h96igvq3byw9hz1si82n3c7v5y0ii3j7hm2d06y8p";
+    };
+
+    meta = with stdenv.lib; {
+      description = "A simple plugin that add an emergency stop buton on NavBar of OctoPrint";
+      homepage = "https://github.com/Sebclem/OctoPrint-SimpleEmergencyStop";
+      license = licenses.agpl3;
+      maintainers = with maintainers; [ WhittlesJr ];
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/octoprint/printtimegenius-logging.patch b/nixpkgs/pkgs/applications/misc/octoprint/printtimegenius-logging.patch
new file mode 100644
index 000000000000..66c2e83d62ca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/octoprint/printtimegenius-logging.patch
@@ -0,0 +1,17 @@
+diff --git a/setup.py b/setup.py
+index 6a6610e..cc45902 100644
+--- a/setup.py
++++ b/setup.py
+@@ -35,9 +35,9 @@ plugin_license = "AGPLv3"
+ # Any additional requirements besides OctoPrint should be listed here
+ # For now, require the working release, which is only 1.3.9rc1.
+ plugin_requires = ["OctoPrint>=1.3.9rc1", "psutil", "sarge"]
+-from sys import version_info
+-if version_info[0] < 3:
+-    plugin_requires.append("logging")
++#from sys import version_info
++#if version_info[0] < 3:
++#    plugin_requires.append("logging")
+ 
+ ### --------------------------------------------------------------------------------------------------------------------
+ ### More advanced options that you usually shouldn't have to touch follow after this point
diff --git a/nixpkgs/pkgs/applications/misc/ola/default.nix b/nixpkgs/pkgs/applications/misc/ola/default.nix
new file mode 100644
index 000000000000..b9529981c7ca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ola/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, bison, flex, pkgconfig
+, libuuid, cppunit, protobuf3_1, zlib, avahi, libmicrohttpd
+, perl, python36 # Replace by python3 after the next update
+}:
+
+stdenv.mkDerivation rec {
+  pname = "ola";
+  version = "0.10.7";
+
+  src = fetchFromGitHub {
+    owner = "OpenLightingProject";
+    repo = "ola";
+    rev = version;
+    sha256 = "18krwrw7w1qzwih8gnmv7r4sah5ppvq7ax65r7l5yjxn3ihwp2kf";
+  };
+
+  nativeBuildInputs = [ autoreconfHook bison flex pkgconfig perl ];
+  buildInputs = [ libuuid cppunit protobuf3_1 zlib avahi libmicrohttpd python36 ];
+  propagatedBuildInputs = [
+    (python36.pkgs.protobuf.override { protobuf = protobuf3_1; })
+    python36.pkgs.numpy
+  ];
+
+  configureFlags = [ "--enable-python-libs" ];
+
+  meta = with stdenv.lib; {
+    description = "A framework for controlling entertainment lighting equipment.";
+    maintainers = [ maintainers.globin ];
+    license = with licenses; [ lgpl21 gpl2Plus ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/omegat.nix b/nixpkgs/pkgs/applications/misc/omegat.nix
new file mode 100644
index 000000000000..47536cc9f6a4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/omegat.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, unzip, jdk, makeWrapper}:
+
+stdenv.mkDerivation {
+  version = "4.3.0";
+  pname = "omegat";
+
+  src = fetchurl {  # their zip has repeated files or something, so no fetchzip
+    url = "mirror://sourceforge/project/omegat/OmegaT%20-%20Standard/OmegaT%204.3.0/OmegaT_4.3.0_Without_JRE.zip";
+    sha256 = "0axz7r30p34z5hgvdglznc82g7yvm3g56dv5190jixskx6ba58rs";
+  };
+
+  buildInputs = [ unzip makeWrapper ];
+
+  unpackCmd = "unzip -o $curSrc";  # tries to go interactive without -o
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -r lib docs images plugins scripts *.txt *.html OmegaT.jar $out/
+
+    cat > $out/bin/omegat <<EOF
+    #! $SHELL -e
+    CLASSPATH="$out/lib"
+    exec ${jdk}/bin/java -jar -Xmx1024M $out/OmegaT.jar "\$@"
+    EOF
+    chmod +x $out/bin/omegat
+  '';
+
+  meta = with stdenv.lib; {
+    description = "The free computer aided translation (CAT) tool for professionals";
+    longDescription = ''
+      OmegaT is a free and open source multiplatform Computer Assisted Translation
+      tool with fuzzy matching, translation memory, keyword search, glossaries, and
+      translation leveraging into updated projects.
+    '';
+    homepage = "http://www.omegat.org/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ t184256 ];
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/onboard/default.nix b/nixpkgs/pkgs/applications/misc/onboard/default.nix
new file mode 100644
index 000000000000..e427519d4d6e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/onboard/default.nix
@@ -0,0 +1,181 @@
+{ fetchurl
+, stdenv
+, substituteAll
+, aspellWithDicts
+, at-spi2-core ? null
+, atspiSupport ? true
+, bash
+, glib
+, glibcLocales
+, dconf
+, gobject-introspection
+, gsettings-desktop-schemas
+, gtk3
+, hunspell
+, hunspellDicts
+, hunspellWithDicts
+, intltool
+, isocodes
+, libcanberra-gtk3
+, mousetweaks
+, udev
+, libxkbcommon
+, pkgconfig
+, procps
+, python3
+, wrapGAppsHook
+, xorg
+, yelp
+}:
+
+let
+
+  customHunspell = hunspellWithDicts [
+    hunspellDicts.en-us
+  ];
+
+  majorVersion = "1.4";
+
+in
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "onboard";
+  version = "${majorVersion}.1";
+
+  src = fetchurl {
+    url = "https://launchpad.net/onboard/${majorVersion}/${version}/+download/${pname}-${version}.tar.gz";
+    sha256 = "0r9q38ikmr4in4dwqd8m9gh9xjbgxnfxglnjbfcapw8ybfnf3jh1";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      inherit mousetweaks;
+    })
+    # Allow loading hunspell dictionaries installed in NixOS system path
+    ./hunspell-use-xdg-datadirs.patch
+  ];
+
+  nativeBuildInputs = [
+    gobject-introspection
+    intltool
+    pkgconfig
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    bash
+    glib
+    dconf
+    gsettings-desktop-schemas
+    gtk3
+    hunspell
+    isocodes
+    libcanberra-gtk3
+    libxkbcommon
+    mousetweaks
+    udev
+    xorg.libXtst
+    xorg.libxkbfile
+  ] ++ stdenv.lib.optional atspiSupport at-spi2-core;
+
+  propagatedBuildInputs = with python3.pkgs; [
+    dbus-python
+    distutils_extra
+    pyatspi
+    pycairo
+    pygobject3
+    systemd
+  ];
+
+  propagatedUserEnvPkgs = [
+    dconf
+  ];
+
+  checkInputs = [
+    # for Onboard.SpellChecker.aspell_cmd doctests
+    (aspellWithDicts (dicts: with dicts; [ en ]))
+
+    # for Onboard.SpellChecker.hunspell_cmd doctests
+    customHunspell
+
+    # for Onboard.SpellChecker.hunspell doctests
+    hunspellDicts.en-us
+    hunspellDicts.es-es
+    hunspellDicts.it-it
+
+    python3.pkgs.nose
+  ];
+
+  # Temporary fix, see https://github.com/NixOS/nixpkgs/issues/56943
+  strictDeps = false;
+
+  doCheck = false;
+
+  preBuild = ''
+    # Unnecessary file, has been removed upstream
+    # https://github.com/NixOS/nixpkgs/pull/24986#issuecomment-296114062
+    rm -r Onboard/pypredict/attic
+
+    substituteInPlace  ./scripts/sokSettings.py \
+      --replace "#!/usr/bin/python3" "" \
+      --replace "PYTHON_EXECUTABLE," "\"$out/bin/onboard-settings\"" \
+      --replace '"-cfrom Onboard.settings import Settings\ns = Settings(False)"' ""
+
+    chmod -x ./scripts/sokSettings.py
+
+    patchShebangs .
+
+    substituteInPlace setup.py \
+      --replace "/etc" "$out/etc"
+
+    substituteInPlace  ./Onboard/LanguageSupport.py \
+      --replace "/usr/share/xml/iso-codes" "${isocodes}/share/xml/iso-codes" \
+      --replace "/usr/bin/yelp" "${yelp}/bin/yelp"
+
+    substituteInPlace  ./Onboard/Indicator.py \
+      --replace   "/usr/bin/yelp" "${yelp}/bin/yelp"
+
+    substituteInPlace  ./gnome/Onboard_Indicator@onboard.org/extension.js \
+      --replace "/usr/bin/yelp" "${yelp}/bin/yelp"
+
+    substituteInPlace  ./Onboard/SpellChecker.py \
+      --replace "/usr/lib" "$out/lib"
+
+    substituteInPlace  ./data/org.onboard.Onboard.service  \
+      --replace "/usr/bin" "$out/bin"
+
+    substituteInPlace  ./Onboard/utils.py \
+      --replace "/usr/share" "$out/share"
+    substituteInPlace  ./onboard-defaults.conf.example \
+      --replace "/usr/share" "$out/share"
+    substituteInPlace  ./Onboard/Config.py \
+      --replace "/usr/share/onboard" "$out/share/onboard"
+
+    substituteInPlace  ./Onboard/WordSuggestions.py \
+      --replace "/usr/bin" "$out/bin"
+
+    # killall is dangerous on non-gnu platforms. Use pkill instead.
+    substituteInPlace  ./setup.py \
+      --replace '"killall",' '"${procps}/bin/pkill", "-x",'
+  '';
+
+  installPhase = ''
+    ${python3.interpreter} setup.py install --prefix="$out"
+
+    cp onboard-default-settings.gschema.override.example $out/share/glib-2.0/schemas/10_onboard-default-settings.gschema.override
+    glib-compile-schemas $out/share/glib-2.0/schemas/
+  '';
+
+  # Remove ubuntu icons.
+  postFixup = ''
+    rm -rf  $out/share/icons/ubuntu-mono-*
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://launchpad.net/onboard";
+    description = "Onscreen keyboard useful for tablet PC users and for mobility impaired users";
+    maintainers = with maintainers; [ johnramsden ];
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/onboard/fix-paths.patch b/nixpkgs/pkgs/applications/misc/onboard/fix-paths.patch
new file mode 100644
index 000000000000..64acc9b138c4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/onboard/fix-paths.patch
@@ -0,0 +1,11 @@
+--- a/Onboard/ClickSimulator.py
++++ b/Onboard/ClickSimulator.py
+@@ -479,7 +479,7 @@ class CSMousetweaks(ConfigObject, ClickSimulator):
+         self._daemon_running_notify_callbacks = []
+
+     def _launch_daemon(self, delay):
+-        self.launcher.launch_delayed(["mousetweaks"], delay)
++        self.launcher.launch_delayed(["@mousetweaks@/bin/mousetweaks"], delay)
+
+     def _set_connection(self, active):
+         ''' Update interface object, state and notify listeners '''
diff --git a/nixpkgs/pkgs/applications/misc/onboard/hunspell-use-xdg-datadirs.patch b/nixpkgs/pkgs/applications/misc/onboard/hunspell-use-xdg-datadirs.patch
new file mode 100644
index 000000000000..2463c8d5f5ac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/onboard/hunspell-use-xdg-datadirs.patch
@@ -0,0 +1,20 @@
+diff --git a/Onboard/SpellChecker.py b/Onboard/SpellChecker.py
+index 6a92757..46e755e 100644
+--- a/Onboard/SpellChecker.py
++++ b/Onboard/SpellChecker.py
+@@ -506,6 +506,10 @@ class hunspell(SCBackend):
+         if dicpath:
+             paths.extend(dicpath.split(pathsep))
+ 
++        datadirs = os.getenv("XDG_DATA_DIRS")
++        if datadirs:
++            paths.extend(map(lambda datadir: os.path.join(datadir, 'hunspell'), datadirs.split(pathsep)))
++
+         paths.extend(LIBDIRS)
+ 
+         home = os.getenv("HOME")
+@@ -723,4 +727,3 @@ class aspell_cmd(SCBackend):
+             _logger.error(_format("Failed to execute '{}', {}", \
+                             " ".join(args), e))
+         return [id for id in dict_ids if id]
+-
diff --git a/nixpkgs/pkgs/applications/misc/oneko/default.nix b/nixpkgs/pkgs/applications/misc/oneko/default.nix
new file mode 100644
index 000000000000..1c5858b5677f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/oneko/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, imake, gccmakedep, xlibsWrapper }:
+
+stdenv.mkDerivation rec {
+  version_name = "1.2.sakura.5";
+  version = "1.2.5";
+  pname = "oneko";
+  src = fetchurl {
+    url = "http://www.daidouji.com/oneko/distfiles/oneko-${version_name}.tar.gz";
+    sha256 = "2c2e05f1241e9b76f54475b5577cd4fb6670de058218d04a741a04ebd4a2b22f";
+  };
+  nativeBuildInputs = [ imake gccmakedep ];
+  buildInputs = [ xlibsWrapper ];
+
+  makeFlags = [ "BINDIR=$(out)/bin" "MANPATH=$(out)/share/man" ];
+  installTargets = [ "install" "install.man" ];
+
+  meta = with stdenv.lib; {
+    description = "Creates a cute cat chasing around your mouse cursor";
+    longDescription = ''
+    Oneko changes your mouse cursor into a mouse
+    and creates a little cute cat, which starts
+    chasing around your mouse cursor.
+    When the cat is done catching the mouse, it starts sleeping.
+    '';
+    homepage = "http://www.daidouji.com/oneko/";
+    license = licenses.publicDomain;
+    maintainers = [ maintainers.xaverdh ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/openbox-menu/default.nix b/nixpkgs/pkgs/applications/misc/openbox-menu/default.nix
new file mode 100644
index 000000000000..e58570103240
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/openbox-menu/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, pkgconfig, glib, gtk2, menu-cache }:
+
+stdenv.mkDerivation rec {
+  pname = "openbox-menu";
+  version = "0.8.0";
+
+  src = fetchurl {
+    url = "https://bitbucket.org/fabriceT/openbox-menu/downloads/${pname}-${version}.tar.bz2";
+    sha256 = "1hi4b6mq97y6ajq4hhsikbkk23aha7ikaahm92djw48mgj2f1w8l";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ glib gtk2 menu-cache ];
+
+  patches = [ ./with-svg.patch ];
+
+  installPhase = "make install prefix=$out";
+
+  meta = {
+    homepage = "http://fabrice.thiroux.free.fr/openbox-menu_en.html";
+    description = "Dynamic XDG menu generator for Openbox";
+    longDescription = ''
+      Openbox-menu is a pipemenu for Openbox window manager. It provides a
+      dynamic menu listing installed applications. Most of the work is done by
+      the LXDE library menu-cache.
+    '';
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.romildo ];
+    platforms   = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/openbox-menu/with-svg.patch b/nixpkgs/pkgs/applications/misc/openbox-menu/with-svg.patch
new file mode 100644
index 000000000000..dd6710f5cfc9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/openbox-menu/with-svg.patch
@@ -0,0 +1,11 @@
+--- a/Makefile.old	2013-12-11 06:39:44.397358610 +0100
++++ b/Makefile	2013-12-11 06:39:51.082275037 +0100
+@@ -7,7 +7,7 @@
+ CFLAGS+=-DWITH_ICONS
+ # Uncomment this line if Openbox can display SVG icons 
+ # Check SVG support with '$ ldd /usr/bin/openbox | grep svg', librsvg must appear..
+-# CFLAGS+=-DWITH_SVG
++CFLAGS+=-DWITH_SVG
+ 
+ prefix= /usr/local
+ DESTDIR ?= $(prefix)
diff --git a/nixpkgs/pkgs/applications/misc/openbrf/default.nix b/nixpkgs/pkgs/applications/misc/openbrf/default.nix
new file mode 100644
index 000000000000..8e990b6dffba
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/openbrf/default.nix
@@ -0,0 +1,47 @@
+{ mkDerivation, stdenv, fetchFromGitHub, qtbase, vcg, glew, qmake, libGLU, libGL }:
+
+
+mkDerivation {
+  name = "openbrf-unstable-2016-01-09";
+
+  src = fetchFromGitHub {
+    owner = "cfcohen";
+    repo = "openbrf";
+    rev = "4bdc66e38def5e5184f5379c84a7558b7484c70a";
+    sha256 = "16254cnr60ihcn7bki7wl1qm6gkvzb99cn66md1pnb7za8nvzf4j";
+  };
+
+  buildInputs = [ qtbase vcg glew ];
+
+  enableParallelBuilding = true;
+  nativeBuildInputs = [ qmake ];
+
+  qmakeFlags = [ "openBrf.pro" ];
+
+  postPatch = ''
+    sed -i 's,^VCGLIB .*,VCGLIB = ${vcg}/include,' openBrf.pro
+  '';
+
+  installPhase = ''
+    install -Dm755 openBrf $out/share/openBrf/openBrf
+    install -Dm644 carry_positions.txt $out/share/openBrf/carry_positions.txt
+    install -Dm644 reference.brf $out/share/openBrf/reference.brf
+
+    patchelf  \
+      --set-rpath "${stdenv.lib.makeLibraryPath [ qtbase glew stdenv.cc.cc libGLU libGL ]}" \
+      $out/share/openBrf/openBrf
+
+    mkdir -p "$out/bin"
+    ln -s "$out/share/openBrf/openBrf" "$out/bin/openBrf"
+  '';
+
+  dontPatchELF = true;
+
+  meta = with stdenv.lib; {
+    description = "A tool to edit resource files (BRF)";
+    homepage = "https://github.com/cfcohen/openbrf";
+    maintainers = with stdenv.lib.maintainers; [ abbradar ];
+    license = licenses.free;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/opencpn/default.nix b/nixpkgs/pkgs/applications/misc/opencpn/default.nix
new file mode 100644
index 000000000000..f5a88cbaee17
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/opencpn/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, pkgconfig, cmake, gtk2, wxGTK30, libpulseaudio, curl,
+  gettext, glib, portaudio }:
+
+stdenv.mkDerivation rec {
+  pname = "opencpn-unstable";
+  version = "2019-11-21";
+
+  src = fetchFromGitHub {
+    owner = "OpenCPN";
+    repo = "OpenCPN";
+    rev = "e73dc935545b2bbcf193cc61d987a0178c52d7a7";
+    sha256 = "0yiqahkzwcbzgabc5xgxmwlngapkfiaqyva3mwz29xj0c5lg2bdk";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ cmake gtk2 wxGTK30 libpulseaudio curl gettext
+                  glib portaudio ];
+
+  cmakeFlags = [
+    "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.out}/lib/gtk-2.0/include"
+    "-DGTK2_GLIBCONFIG_INCLUDE_DIR=${glib.out}/lib/glib-2.0/include"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "A concise ChartPlotter/Navigator";
+    maintainers = [ stdenv.lib.maintainers.kragniz ];
+    platforms = [ "x86_64-linux" ];
+    license = stdenv.lib.licenses.gpl2;
+    homepage = "https://opencpn.org/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/openjump/default.nix b/nixpkgs/pkgs/applications/misc/openjump/default.nix
new file mode 100644
index 000000000000..e537180686cd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/openjump/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, unzip, runtimeShell }:
+
+stdenv.mkDerivation {
+  name = "openjump-1.3.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/jump-pilot/OpenJUMP/1.3.1/openjump-1.3.1.zip";
+    sha256 = "0y4z53yx0x7rp3c8rnj028ni3gr47r35apgcpqp3jl7r2di6zgqm";
+  };
+
+  # ln jump.log hack: a different user will probably get a permission denied
+  # error. Still this is better than getting it always.
+  # TODO: build from source and patch this
+  unpackPhase = ''
+    mkdir -p $out/bin;
+    cd $out; unzip $src
+    s=$out/bin/OpenJump
+    dir=$(echo $out/openjump-*)
+    cat >> $s << EOF
+    #!${runtimeShell}
+    cd $dir/bin
+    exec ${stdenv.shell} openjump.sh
+    EOF
+    chmod +x $s
+    ln -s /tmp/openjump.log $dir/bin/jump.log
+  '';
+
+  installPhase = ":";
+
+  buildInputs = [unzip];
+
+  meta = {
+    description = "Open source Geographic Information System (GIS) written in the Java programming language";
+    homepage = "http://www.openjump.org/index.html";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [stdenv.lib.maintainers.marcweber];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/opentx/default.nix b/nixpkgs/pkgs/applications/misc/opentx/default.nix
new file mode 100644
index 000000000000..a117ecc06a9c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/opentx/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, mkDerivation, fetchFromGitHub
+, cmake, gcc-arm-embedded, python3Packages
+, qtbase, qtmultimedia, qttranslations, SDL, gtest
+, dfu-util, avrdude
+}:
+
+mkDerivation rec {
+  pname = "opentx";
+  version = "2.3.9";
+
+  src = fetchFromGitHub {
+    owner = "opentx";
+    repo = "opentx";
+    rev = "release/${version}";
+    sha256 = "0kh3jdy1pgvns8lrncf61ayaq0hmsv41j8xv4r4rf17zyvjl0qph";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ cmake gcc-arm-embedded python3Packages.pillow ];
+
+  buildInputs = [ qtbase qtmultimedia qttranslations SDL ];
+
+  postPatch = ''
+    sed -i companion/src/burnconfigdialog.cpp \
+      -e 's|/usr/.*bin/dfu-util|${dfu-util}/bin/dfu-util|' \
+      -e 's|/usr/.*bin/avrdude|${avrdude}/bin/avrdude|'
+  '';
+
+  cmakeFlags = [
+    "-DGTEST_ROOT=${gtest.src}/googletest"
+    "-DQT_TRANSLATIONS_DIR=${qttranslations}/translations"
+    # XXX I would prefer to include these here, though we will need to file a bug upstream to get that changed.
+    #"-DDFU_UTIL_PATH=${dfu-util}/bin/dfu-util"
+    #"-DAVRDUDE_PATH=${avrdude}/bin/avrdude"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "OpenTX Companion transmitter support software";
+    longDescription = ''
+      OpenTX Companion is used for many different tasks like loading OpenTX
+      firmware to the radio, backing up model settings, editing settings and
+      running radio simulators.
+    '';
+    homepage = "https://www.open-tx.org/";
+    license = licenses.gpl2;
+    platforms = [ "i686-linux" "x86_64-linux" "aarch64-linux" ];
+    maintainers = with maintainers; [ elitak lopsided98 ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/orca/default.nix b/nixpkgs/pkgs/applications/misc/orca/default.nix
new file mode 100644
index 000000000000..849e156b5292
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/orca/default.nix
@@ -0,0 +1,117 @@
+{ stdenv
+, pkgconfig
+, fetchurl
+, buildPythonApplication
+, autoreconfHook
+, wrapGAppsHook
+, gobject-introspection
+, gettext
+, yelp-tools
+, itstool
+, libxmlxx3
+, python
+, pygobject3
+, gtk3
+, gnome3
+, substituteAll
+, at-spi2-atk
+, at-spi2-core
+, pyatspi
+, dbus
+, dbus-python
+, pyxdg
+, xkbcomp
+, procps
+, lsof
+, coreutils
+, gsettings-desktop-schemas
+, speechd
+, brltty
+, liblouis
+, setproctitle
+, gst_all_1
+, gst-python
+}:
+
+buildPythonApplication rec {
+  pname = "orca";
+  version = "3.36.3";
+
+  format = "other";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1x0xrcyxlvcjlqp6wcsx5d951i500079wqs04scssjzwqggy330n";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      cat = "${coreutils}/bin/cat";
+      lsof = "${lsof}/bin/lsof";
+      pgrep = "${procps}/bin/pgrep";
+      xkbcomp = "${xkbcomp}/bin/xkbcomp";
+    })
+  ];
+
+  nativeBuildInputs = [
+    autoreconfHook
+    wrapGAppsHook
+    pkgconfig
+    libxmlxx3
+    gettext
+    yelp-tools
+    itstool
+    gobject-introspection
+  ];
+
+  propagatedBuildInputs = [
+    pygobject3
+    pyatspi
+    dbus-python
+    pyxdg
+    brltty
+    liblouis
+    speechd
+    gst-python
+    setproctitle
+  ];
+
+  strictDeps = false;
+
+  buildInputs = [
+    python
+    gtk3
+    at-spi2-atk
+    at-spi2-core
+    dbus
+    gsettings-desktop-schemas
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+  ];
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    homepage = "https://wiki.gnome.org/Projects/Orca";
+    description = "Screen reader";
+    longDescription = ''
+      A free, open source, flexible and extensible screen reader that provides
+      access to the graphical desktop via speech and refreshable braille.
+      It works with applications and toolkits that support the Assistive
+      Technology Service Provider Interface (AT-SPI). That includes the GNOME
+      GTK toolkit, the Java platform's Swing toolkit, LibreOffice, Gecko, and
+      WebKitGtk. AT-SPI support for the KDE Qt toolkit is being pursued.
+
+      Needs `services.gnome3.at-spi2-core.enable = true;` in `configuration.nix`.
+    '';
+    maintainers = with maintainers; [ berce ] ++ teams.gnome.members;
+    license = licenses.lgpl21;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/orca/fix-paths.patch b/nixpkgs/pkgs/applications/misc/orca/fix-paths.patch
new file mode 100644
index 000000000000..ffb56dbe239c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/orca/fix-paths.patch
@@ -0,0 +1,78 @@
+--- a/src/orca/debug.py
++++ b/src/orca/debug.py
+@@ -474,7 +474,7 @@
+     return traceit
+ 
+ def getOpenFDCount(pid):
+-    procs = subprocess.check_output([ 'lsof', '-w', '-Ff', '-p', str(pid)])
++    procs = subprocess.check_output([ '@lsof@', '-w', '-Ff', '-p', str(pid)])
+     procs = procs.decode('UTF-8').split('\n')
+     files = list(filter(lambda s: s and s[0] == 'f' and s[1:].isdigit(), procs))
+ 
+@@ -482,7 +482,7 @@
+ 
+ def getCmdline(pid):
+     try:
+-        openFile = os.popen('cat /proc/%s/cmdline' % pid)
++        openFile = os.popen('@cat@ /proc/%s/cmdline' % pid)
+         cmdline = openFile.read()
+         openFile.close()
+     except:
+@@ -492,7 +492,7 @@
+     return cmdline
+ 
+ def pidOf(procName):
+-    openFile = subprocess.Popen('pgrep %s' % procName,
++    openFile = subprocess.Popen('@pgrep@ %s' % procName,
+                                 shell=True,
+                                 stdout=subprocess.PIPE).stdout
+     pids = openFile.read()
+--- a/src/orca/orca.py
++++ b/src/orca/orca.py
+@@ -239,7 +239,7 @@
+ 
+ def _setXmodmap(xkbmap):
+     """Set the keyboard map using xkbcomp."""
+-    p = subprocess.Popen(['xkbcomp', '-w0', '-', os.environ['DISPLAY']],
++    p = subprocess.Popen(['@xkbcomp@', '-w0', '-', os.environ['DISPLAY']],
+         stdin=subprocess.PIPE, stdout=None, stderr=None)
+     p.communicate(xkbmap)
+ 
+@@ -297,7 +297,7 @@
+     """
+ 
+     global _originalXmodmap
+-    _originalXmodmap = subprocess.check_output(['xkbcomp', os.environ['DISPLAY'], '-'])
++    _originalXmodmap = subprocess.check_output(['@xkbcomp@', os.environ['DISPLAY'], '-'])
+ 
+ def _restoreXmodmap(keyList=[]):
+     """Restore the original xmodmap values for the keys in keyList.
+@@ -309,7 +309,7 @@
+ 
+     global _capsLockCleared
+     _capsLockCleared = False
+-    p = subprocess.Popen(['xkbcomp', '-w0', '-', os.environ['DISPLAY']],
++    p = subprocess.Popen(['@xkbcomp@', '-w0', '-', os.environ['DISPLAY']],
+         stdin=subprocess.PIPE, stdout=None, stderr=None)
+     p.communicate(_originalXmodmap)
+ 
+--- a/src/orca/orca_bin.py.in
++++ b/src/orca/orca_bin.py.in
+@@ -59,7 +59,7 @@
+                 name = "[DEAD]"
+ 
+             try:
+-                cmdline = subprocess.getoutput('cat /proc/%s/cmdline' % pid)
++                cmdline = subprocess.getoutput('@cat@ /proc/%s/cmdline' % pid)
+             except:
+                 cmdline = '(exception encountered)'
+             else:
+@@ -192,7 +192,7 @@
+ def otherOrcas():
+     """Returns the pid of any other instances of Orca owned by this user."""
+ 
+-    openFile = subprocess.Popen('pgrep -u %s orca' % os.getuid(),
++    openFile = subprocess.Popen('@pgrep@ -u %s orca' % os.getuid(),
+                                 shell=True,
+                                 stdout=subprocess.PIPE).stdout
+     pids = openFile.read()
diff --git a/nixpkgs/pkgs/applications/misc/orpie/default.nix b/nixpkgs/pkgs/applications/misc/orpie/default.nix
new file mode 100644
index 000000000000..d869b0939558
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/orpie/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, ocamlPackages, ncurses, gsl }:
+
+stdenv.mkDerivation rec {
+  pname = "orpie";
+  version = "1.5.2";
+
+  src = fetchurl {
+    url = "http://pessimization.com/software/orpie/${pname}-${version}.tar.gz";
+    sha256 = "0v9xgpcf186ni55rkmx008msyszw0ypd6rd98hgwpih8yv3pymfy";
+  };
+
+  buildInputs = [ ncurses gsl ] ++ (with ocamlPackages; [ ocaml camlp4 ]);
+
+  meta = {
+    homepage = "https://github.com/pelzlpj/orpie";
+    description = "A fullscreen RPN calculator for the console";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.all;
+    maintainers = with stdenv.lib.maintainers; [ obadz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/osm2xmap/default.nix b/nixpkgs/pkgs/applications/misc/osm2xmap/default.nix
new file mode 100644
index 000000000000..e5838dc1bbe6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/osm2xmap/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, libroxml, proj, libyamlcpp, boost } :
+
+stdenv.mkDerivation rec {
+  pname = "osm2xmap";
+  version = "2.0";
+
+  src = fetchFromGitHub {
+    sha256 = "1d3f18wzk240yp0q8i2vskhcfj5ar61s4hw83vgps0wr2aglph3w";
+    repo = "osm2xmap";
+    owner = "sembruk";
+    rev = "v${version}";
+  };
+
+  makeFlags = [
+    "GIT_VERSION=${version}"
+    "GIT_TIMESTAMP="
+    "SHAREDIR=${placeholder ''out''}/share/osm2xmap"
+    "INSTALL_BINDIR=${placeholder ''out''}/bin"
+    "INSTALL_MANDIR=${placeholder ''out''}/share/man/man1"
+  ];
+
+  NIX_CFLAGS_COMPILE = "-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H";
+
+  buildInputs = [ libroxml proj libyamlcpp boost ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/sembruk/osm2xmap";
+    description = "Converter from OpenStreetMap data format to OpenOrienteering Mapper format.";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.mpickering ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/osmctools/default.nix b/nixpkgs/pkgs/applications/misc/osmctools/default.nix
new file mode 100644
index 000000000000..b0f1f48d9aea
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/osmctools/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitLab, autoreconfHook, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "osmctools";
+  version = "0.9";
+
+  src = fetchFromGitLab {
+    owner = "osm-c-tools";
+    repo = pname;
+    rev = version;
+    sha256 = "1m8d3r1q1v05pkr8k9czrmb4xjszw6hvgsf3kn9pf0v14gpn4r8f";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ zlib ];
+
+  meta = with stdenv.lib; {
+    description = "Command line tools for transforming Open Street Map files";
+    homepage = [
+      "https://wiki.openstreetmap.org/wiki/osmconvert"
+      "https://wiki.openstreetmap.org/wiki/osmfilter"
+      "https://wiki.openstreetmap.org/wiki/osmupdate"
+    ];
+    maintainers = with maintainers; [ sikmir ];
+    platforms = platforms.unix;
+    license = licenses.agpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/osmium-tool/default.nix b/nixpkgs/pkgs/applications/misc/osmium-tool/default.nix
new file mode 100644
index 000000000000..c0d20c14f7ce
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/osmium-tool/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, cmake, libosmium, protozero, boost, bzip2, zlib, expat }:
+
+stdenv.mkDerivation rec {
+  pname = "osmium-tool";
+  version = "1.12.0";
+
+  src = fetchFromGitHub {
+    owner = "osmcode";
+    repo = "osmium-tool";
+    rev = "v${version}";
+    sha256 = "18afn5qzdjpip176kk5pr04mj0p7dv70dbz1n36qmqnq3gyms10q";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ libosmium protozero boost bzip2 zlib expat ];
+
+  meta = with stdenv.lib; {
+    description = "Multipurpose command line tool for working with OpenStreetMap data based on the Osmium library";
+    homepage = "https://osmcode.org/osmium-tool/";
+    license = with licenses; [ gpl3 mit bsd3 ];
+    maintainers = with maintainers; [ das-g ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/overmind/default.nix b/nixpkgs/pkgs/applications/misc/overmind/default.nix
new file mode 100644
index 000000000000..ca05facaa48f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/overmind/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildGoPackage, fetchFromGitHub, tmux, which, makeWrapper }:
+
+buildGoPackage rec {
+  pname = "overmind";
+  version = "2.1.1";
+  goPackagePath = "github.com/DarthSim/overmind";
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  postInstall = ''
+    wrapProgram "$out/bin/overmind" --prefix PATH : "${lib.makeBinPath [ tmux which ]}"
+  '';
+
+  src = fetchFromGitHub {
+    owner = "DarthSim";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0akqn8s1mgk5q00gzh3ymq7nrnkyi6avyaxxvbxnjyq9bxsqz327";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with lib; {
+    homepage = "https://github.com/DarthSim/overmind";
+    description = "Process manager for Procfile-based applications and tmux";
+    license = with licenses; [ mit ];
+    maintainers = [ maintainers.adisbladis ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/overmind/deps.nix b/nixpkgs/pkgs/applications/misc/overmind/deps.nix
new file mode 100644
index 000000000000..afcc8d9726fe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/overmind/deps.nix
@@ -0,0 +1,147 @@
+# file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix)
+[
+  {
+    goPackagePath = "github.com/BurntSushi/toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/BurntSushi/toml";
+      rev = "v0.3.1";
+      sha256 = "1fjdwwfzyzllgiwydknf1pwjvy49qxfsczqx5gz3y0izs7as99j6";
+    };
+  }
+  {
+    goPackagePath = "github.com/DarthSim/godotenv";
+    fetch = {
+      type = "git";
+      url = "https://github.com/DarthSim/godotenv";
+      rev = "v1.3.1";
+      sha256 = "0fb9nl5qrnv7f9w0pgg00ak34afw9kjgcql0l38z22faz2bhgl1q";
+    };
+  }
+  {
+    goPackagePath = "github.com/cpuguy83/go-md2man";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cpuguy83/go-md2man";
+      rev = "f79a8a8ca69d";
+      sha256 = "0r1f7v475dxxgzqci1mxfliwadcrk86ippflx9n411325l4g3ghv";
+    };
+  }
+  {
+    goPackagePath = "github.com/kardianos/osext";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kardianos/osext";
+      rev = "2bc1f35cddc0";
+      sha256 = "1pvrbrvmrf4mx0fxbfaphbzgqgwn8v6lkfk2vyrs0znxrs1xyc5r";
+    };
+  }
+  {
+    goPackagePath = "github.com/matoous/go-nanoid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/matoous/go-nanoid";
+      rev = "eab626deece6";
+      sha256 = "1a82lclk56y7c44jg7wn5vq733dmn0g20r5yqbchrxnpfl75dw89";
+    };
+  }
+  {
+    goPackagePath = "github.com/pkg/term";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/term";
+      rev = "aa71e9d9e942";
+      sha256 = "1gyxnj4jq3z2k4gjwwlz8hn56c1ys8jvafdd61nd6qs8jwp6iqp3";
+    };
+  }
+  {
+    goPackagePath = "github.com/pmezard/go-difflib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pmezard/go-difflib";
+      rev = "v1.0.0";
+      sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
+    };
+  }
+  {
+    goPackagePath = "github.com/russross/blackfriday";
+    fetch = {
+      type = "git";
+      url = "https://github.com/russross/blackfriday";
+      rev = "v2.0.1";
+      sha256 = "0nlz7isdd4rgnwzs68499hlwicxz34j2k2a0b8jy0y7ycd2bcr5j";
+    };
+  }
+  {
+    goPackagePath = "github.com/sevlyar/go-daemon";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sevlyar/go-daemon";
+      rev = "v0.1.5";
+      sha256 = "1y3gnxaifykcjcbzx91lz9bc93b95w3xj4rjxjbii26pm3j7gqyk";
+    };
+  }
+  {
+    goPackagePath = "github.com/shurcooL/sanitized_anchor_name";
+    fetch = {
+      type = "git";
+      url = "https://github.com/shurcooL/sanitized_anchor_name";
+      rev = "v1.0.0";
+      sha256 = "1gv9p2nr46z80dnfjsklc6zxbgk96349sdsxjz05f3z6wb6m5l8f";
+    };
+  }
+  {
+    goPackagePath = "github.com/urfave/cli";
+    fetch = {
+      type = "git";
+      url = "https://github.com/urfave/cli";
+      rev = "v1.22.2";
+      sha256 = "10mcnvi5qmn00vpyk6si8gjka7p654wr9hac4zc9w5h3ickhvbdc";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "88737f569e3a";
+      sha256 = "02vkqfd6kc28zm6lffagw8nr78sayv6jabfgk9dcifl7826vi3k7";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "81d4e9dc473e";
+      sha256 = "0074zjpkhclz5qbgjv0zmdwy6hmf5k2ri5yagnm6i12ahxaa48dr";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/check.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/check.v1";
+      rev = "20d25e280405";
+      sha256 = "0k1m83ji9l1a7ng8a7v40psbymxasmssbrrhpdv2wl4rhs0nc3np";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/urfave/cli.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/urfave/cli.v1";
+      rev = "v1.20.0";
+      sha256 = "0y6f4sbzkiiwrxbl15biivj8c7qwxnvm3zl2dd3mw4wzg4x10ygj";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "v2.2.2";
+      sha256 = "01wj12jzsdqlnidpyjssmj0r4yavlqy7dwrg7adqd8dicjc4ncsa";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/misc/pastel/default.nix b/nixpkgs/pkgs/applications/misc/pastel/default.nix
new file mode 100644
index 000000000000..348ea4b991ec
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pastel/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, rustPlatform, Security }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "pastel";
+  version = "0.8.0";
+
+  src = fetchFromGitHub {
+    owner = "sharkdp";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "00xxrssa3gbr5w2jsqlf632jlzc0lc2rpybnbv618ndy5lxidnw0";
+  };
+
+  cargoSha256 = "1ji64h0f8f2sq12cx33kymypzar9swhaj903gclf3jdwgna77326";
+
+  buildInputs = stdenv.lib.optional stdenv.isDarwin Security;
+
+  meta = with stdenv.lib; {
+    description = "A command-line tool to generate, analyze, convert and manipulate colors";
+    homepage = "https://github.com/sharkdp/pastel";
+    changelog = "https://github.com/sharkdp/pastel/releases/tag/v${version}";
+    license = with licenses; [ asl20 /* or */ mit ];
+    maintainers = with maintainers; [ davidtwco ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pbpst/default.nix b/nixpkgs/pkgs/applications/misc/pbpst/default.nix
new file mode 100644
index 000000000000..c1fd6c5d7cb8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pbpst/default.nix
@@ -0,0 +1,50 @@
+{ llvmPackages, stdenv, fetchFromGitHub
+, python36Packages, which, pkgconfig, curl, git, gettext, jansson
+
+# Optional overrides
+, maxFileSize ? 64 # in MB
+, provider ? "https://ptpb.pw/"
+}:
+
+llvmPackages.stdenv.mkDerivation rec {
+  version = "unstable-2018-01-11";
+  name = "pbpst-${version}";
+
+  src = fetchFromGitHub {
+    owner = "HalosGhost";
+    repo = "pbpst";
+    rev = "ecbe08a0b72a6e4212f09fc6cf52a73506992346";
+    sha256 = "0dwhmw1dg4hg75nlvk5kmvv3slz2n3b9x65q4ig16agwqfsp4mdm";
+  };
+
+  nativeBuildInputs = [
+    python36Packages.sphinx
+    which
+    pkgconfig
+    curl
+    git
+    gettext
+  ];
+  buildInputs = [ curl jansson ];
+
+  patchPhase = ''
+    patchShebangs ./configure
+
+    # Remove hardcoded check for libs in /usr/lib/
+    sed -e '64,67d' -i ./configure
+  '';
+
+  configureFlags = [
+    "--file-max=${toString (maxFileSize * 1024 * 1024)}" # convert to bytes
+    "--provider=${provider}"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A command-line libcurl C client for pb deployments";
+    inherit (src.meta) homepage;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ tmplt ];
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pcmanfm/default.nix b/nixpkgs/pkgs/applications/misc/pcmanfm/default.nix
new file mode 100644
index 000000000000..202e7a2de95f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pcmanfm/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, glib, intltool, libfm, libX11, pango, pkgconfig
+, wrapGAppsHook, gnome3, withGtk3 ? true, gtk2, gtk3 }:
+
+let
+  libfm' = libfm.override { inherit withGtk3; };
+  gtk = if withGtk3 then gtk3 else gtk2;
+  inherit (stdenv.lib) optional;
+in
+stdenv.mkDerivation rec {
+  name = "pcmanfm-1.3.1";
+  src = fetchurl {
+    url = "mirror://sourceforge/pcmanfm/${name}.tar.xz";
+    sha256 = "0mb8hg76x1z0szdyl0w7jpz0bdblc6a29is1vvnh79z37qxh8138";
+  };
+
+  buildInputs = [ glib gtk libfm' libX11 pango gnome3.adwaita-icon-theme ];
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook intltool ];
+
+  configureFlags = optional withGtk3 "--with-gtk=3";
+
+  meta = with stdenv.lib; {
+    homepage = "https://blog.lxde.org/category/pcmanfm/";
+    license = licenses.gpl2Plus;
+    description = "File manager with GTK interface";
+    maintainers = [ maintainers.ttuegel ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pcmanx-gtk2/default.nix b/nixpkgs/pkgs/applications/misc/pcmanx-gtk2/default.nix
new file mode 100644
index 000000000000..6c3241d629b8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pcmanx-gtk2/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, gtk2, libXft, intltool, automake, autoconf, libtool, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "pcmanx-gtk2";
+  version = "1.3";
+
+  src = fetchFromGitHub {
+    owner = "pcman-bbs";
+    repo = "pcmanx";
+    rev = version;
+    sha256 = "0fbwd149wny67rfhczz4cbh713a1qnswjiz7b6c2bxfcwh51f9rc";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gtk2 libXft intltool automake autoconf libtool ];
+
+  preConfigure = ''
+    ./autogen.sh
+    # libtoolize generates configure script which uses older version of automake, we need to autoreconf it
+    cd libltdl; autoreconf; cd ..
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://pcman.ptt.cc";
+    license = licenses.gpl2;
+    description = "Telnet BBS browser with GTK interface";
+    maintainers = [ maintainers.sifmelcara ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pdf-quench/default.nix b/nixpkgs/pkgs/applications/misc/pdf-quench/default.nix
new file mode 100644
index 000000000000..d364074d4450
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pdf-quench/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, pkgs, pythonPackages, wrapGAppsHook}:
+
+pythonPackages.buildPythonApplication {
+  pname = "pdf-quench";
+  version = "1.0.5";
+
+  src = fetchFromGitHub {
+    owner = "linuxerwang";
+    repo = "pdf-quench";
+    rev = "b72b3970b371026f9a7ebe6003581e8a63af98f6";
+    sha256 = "1rp9rlwr6rarcsxygv5x2c5psgwl6r69k0lsgribgyyla9cf2m7n";
+  };
+
+  nativeBuildInputs = [ wrapGAppsHook ];
+  buildInputs = with pkgs; [
+    gtk3
+    gobject-introspection
+    goocanvas2
+    poppler_gi
+  ];
+  propagatedBuildInputs = with pythonPackages; [ pygobject3 pypdf2 ];
+
+  format = "other";
+  doCheck = false;
+
+  installPhase = ''
+    install -D -T -m 755 src/pdf_quench.py $out/bin/pdf-quench
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/linuxerwang/pdf-quench";
+    description = "A visual tool for cropping pdf files";
+    platforms = platforms.linux;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ flokli ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pdfarranger/default.nix b/nixpkgs/pkgs/applications/misc/pdfarranger/default.nix
new file mode 100644
index 000000000000..c43ae1de9a1e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pdfarranger/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchFromGitHub, lib
+, wrapGAppsHook, intltool
+, python3Packages, gtk3, poppler_gi
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "pdfarranger";
+  version = "1.5.3";
+
+  src = fetchFromGitHub {
+    owner = "jeromerobert";
+    repo = pname;
+    rev = version;
+    sha256 = "0a9ap7p8iw57sn5nmhim7gp5as8gj6ir6l3p0bpmg4iqjsr4169h";
+  };
+
+  nativeBuildInputs = [
+    wrapGAppsHook intltool
+  ] ++ (with python3Packages; [
+    setuptools distutils_extra
+  ]);
+
+  buildInputs = [
+    gtk3 poppler_gi
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
+    pygobject3
+    pikepdf
+    setuptools
+  ];
+
+  # incompatible with wrapGAppsHook
+  strictDeps = false;
+
+  doCheck = false; # no tests
+
+  meta = with lib; {
+    inherit (src.meta) homepage;
+    description = "Merge or split pdf documents and rotate, crop and rearrange their pages using an interactive and intuitive graphical interface";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ symphorien ];
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pdfdiff/default.nix b/nixpkgs/pkgs/applications/misc/pdfdiff/default.nix
new file mode 100644
index 000000000000..93ca8c644798
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pdfdiff/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, pythonPackages, fetchurl, xpdf }:
+let
+  py = pythonPackages;
+in
+py.buildPythonApplication rec {
+  name = "pdfdiff-${version}";
+  version = "0.92";
+
+  src = fetchurl {
+    url = "https://www.cs.ox.ac.uk/people/cas.cremers/downloads/software/pdfdiff.py";
+    sha256 = "0zxwjjbklz87wkbhkmsvhc7xmv5php7m2a9vm6ydhmhlxsybf836";
+  };
+
+  buildInputs = [  pythonPackages.wrapPython ];
+
+  doCheck = false;
+
+  phases = [ "unpackPhase" "patchPhase" "installPhase" ];
+
+  unpackPhase = "cp $src pdfdiff.py";
+
+  postPatch = ''
+    sed -i -r 's|pdftotextProgram = "pdftotext"|pdftotextProgram = "${xpdf}/bin/pdftotext"|' pdfdiff.py
+    sed -i -r 's|progName = "pdfdiff.py"|progName = "pdfdiff"|' pdfdiff.py
+    '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp pdfdiff.py $out/bin/pdfdiff
+    chmod +x $out/bin/pdfdiff
+
+    substituteInPlace $out/bin/pdfdiff --replace "#!/usr/bin/python" "#!${pythonPackages.python.interpreter}"
+    '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.cs.ox.ac.uk/people/cas.cremers/misc/pdfdiff.html";
+    description = "Tool to view the difference between two PDF or PS files";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pdfmod/default.nix b/nixpkgs/pkgs/applications/misc/pdfmod/default.nix
new file mode 100644
index 000000000000..90107be64c72
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pdfmod/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchurl, fetchpatch, pkgconfig, gnome-doc-utils, intltool, lib
+, mono, gtk-sharp-2_0, gnome-sharp, hyena
+, which, makeWrapper, glib, gnome2, poppler, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "pdfmod";
+  version = "0.9.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "eb7c987514a053106ddf03f26544766c751c801d87762909b36415d46bc425c9";
+  };
+
+  patches = [ (fetchpatch {
+    url = "https://raw.githubusercontent.com/City-busz/Arch-Linux-Repository"
+      + "/master/gnome/pdfmod/pdfmod/pdfmod-mono-2.10.patch";
+    sha256 = "0fpz9ifr6476lqhd5rkb94dm68vlrwdq5w1aaxzgyjgdax9hxx81";
+  }) ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    gnome-doc-utils intltool mono gtk-sharp-2_0 gnome-sharp
+    hyena which makeWrapper wrapGAppsHook
+  ];
+
+  preConfigure = ''
+    substituteInPlace lib/poppler-sharp/poppler-sharp/poppler-sharp.dll.config \
+      --replace libpoppler-glib.so.4 libpoppler-glib.so
+  '';
+
+  postInstall = ''
+    makeWrapper "${mono}/bin/mono" "$out/bin/pdfmod" \
+      --add-flags "$out/lib/pdfmod/PdfMod.exe" \
+      --prefix MONO_GAC_PREFIX : ${gtk-sharp-2_0} \
+      --prefix MONO_GAC_PREFIX : ${gnome-sharp} \
+      --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ glib gnome-sharp gnome2.GConf gtk-sharp-2_0 gtk-sharp-2_0.gtk poppler ]}
+  '';
+
+  dontStrip = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://wiki.gnome.org/Attic/PdfMod";
+    description = "A simple application for modifying PDF documents";
+    platforms = platforms.all;
+    maintainers = with maintainers; [ obadz ];
+    license = licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pdfpc/default.nix b/nixpkgs/pkgs/applications/misc/pdfpc/default.nix
new file mode 100644
index 000000000000..d8203b9e7b5d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pdfpc/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, vala, gtk3, libgee, fetchpatch
+, poppler, libpthreadstubs, gstreamer, gst-plugins-base, gst-plugins-good, gst-libav, librsvg, pcre, gobject-introspection, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  name = "${product}-${version}";
+  product = "pdfpc";
+  version = "4.3.4";
+
+  src = fetchFromGitHub {
+    repo = product;
+    owner = product;
+    rev = "v${version}";
+    sha256 = "07aafsm4jzdgpahz83p0ajv40hry7gviyadqi13ahr8xdhhwy2sd";
+  };
+
+  nativeBuildInputs = [
+    cmake pkgconfig vala
+    # For setup hook
+    gobject-introspection
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3 libgee poppler
+    libpthreadstubs librsvg pcre
+    gstreamer
+    gst-plugins-base
+    (gst-plugins-good.override { gtkSupport = true; })
+    gst-libav
+  ];
+
+  cmakeFlags = stdenv.lib.optional stdenv.isDarwin "-DMOVIES=OFF";
+
+  patches = [
+    # Fix build vala 0.46
+    (fetchpatch {
+      url = "https://github.com/pdfpc/pdfpc/commit/bbc16b97ecbdcdd22c2dc827a5c0e8b569073312.patch";
+      sha256 = "0wi1rqcvg65cxnxvmvavcvghqyksnpijq1p91m57jaby3hb0pdcy";
+    })
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A presenter console with multi-monitor support for PDF files";
+    homepage = "https://pdfpc.github.io/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ pSub ];
+    platforms = platforms.unix;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/pdfsam-basic/default.nix b/nixpkgs/pkgs/applications/misc/pdfsam-basic/default.nix
new file mode 100644
index 000000000000..d18923527851
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pdfsam-basic/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, makeDesktopItem, fetchurl, jdk11, wrapGAppsHook, glib }:
+
+stdenv.mkDerivation rec {
+  pname = "pdfsam-basic";
+  version = "4.1.3";
+
+  src = fetchurl {
+    url = "https://github.com/torakiki/pdfsam/releases/download/v${version}/pdfsam_${version}-1_amd64.deb";
+    sha256 = "1rhv6mf6pr9aaa8516i3b7v6h622qb1p8c4jsy3j0s5wrdry5l9l";
+  };
+
+  unpackPhase = ''
+    ar vx ${src}
+    tar xvf data.tar.gz
+  '';
+
+  nativeBuildInputs = [ wrapGAppsHook ];
+  buildInputs = [ glib ];
+
+  preFixup = ''
+    gappsWrapperArgs+=(--set JAVA_HOME "${jdk11}" --set PDFSAM_JAVA_PATH "${jdk11}")
+  '';
+
+  installPhase = ''
+    cp -R opt/pdfsam-basic/ $out/
+    mkdir -p "$out"/share/icons
+    cp --recursive ${desktopItem}/share/applications $out/share
+    cp $out/icon.svg "$out"/share/icons/pdfsam-basic.svg
+  '';
+
+  desktopItem = makeDesktopItem {
+    name = pname;
+    exec = pname;
+    icon = pname;
+    comment = meta.description;
+    desktopName = "PDFsam Basic";
+    genericName = "PDF Split and Merge";
+    mimeType = "application/pdf;";
+    categories = "Office;Application;";
+  };
+
+  meta = with stdenv.lib; {
+      homepage = "https://github.com/torakiki/pdfsam";
+      description = "Multi-platform software designed to extract pages, split, merge, mix and rotate PDF files";
+      license = licenses.agpl3;
+      platforms = platforms.all;
+      maintainers = with maintainers; [ maintainers."1000101" ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/misc/pell/default.nix b/nixpkgs/pkgs/applications/misc/pell/default.nix
new file mode 100644
index 000000000000..ae96ce6925e3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pell/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub, scsh, sox, libnotify }:
+
+stdenv.mkDerivation rec {
+  pname = "pell";
+  version = "0.0.4";
+
+  src = fetchFromGitHub {
+    owner = "ebzzry";
+    repo = pname;
+    rev = "f251625ece6bb5517227970287119e7d2dfcea8b";
+    sha256 = "0k8m1lv2kyrs8fylxmbgxg3jn65g57frf2bndc82gkr5svwb554a";
+  };
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mkdir -p $out/share
+    cp pell $out/bin
+    cp resources/online.mp3 $out/share
+    cp resources/offline.mp3 $out/share
+    chmod +x $out/bin/pell
+  '';
+
+  postFixup = ''
+    substituteInPlace $out/bin/pell --replace "/usr/bin/env scsh" "${scsh}/bin/scsh"
+    substituteInPlace $out/bin/pell --replace "(play " "(${sox}/bin/play "
+    substituteInPlace $out/bin/pell --replace "(notify-send " "(${libnotify}/bin/notify-send "
+    substituteInPlace $out/bin/pell --replace "/usr/share/pell/online.mp3" "$out/share/online.mp3"
+    substituteInPlace $out/bin/pell --replace "/usr/share/pell/offline.mp3" "$out/share/offline.mp3"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/ebzzry/pell";
+    description = "A simple host availability monitor";
+    license = licenses.mit;
+    maintainers = [ maintainers.ebzzry ];
+    platforms = platforms.unix;
+  };
+
+  dontBuild = true;
+}
diff --git a/nixpkgs/pkgs/applications/misc/perkeep/default.nix b/nixpkgs/pkgs/applications/misc/perkeep/default.nix
new file mode 100644
index 000000000000..5a1e5ba65ded
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/perkeep/default.nix
@@ -0,0 +1,51 @@
+{ buildGoPackage, fetchurl, fetchFromGitHub, lib }:
+
+let
+  gouiJS = fetchurl {
+    url = "https://storage.googleapis.com/perkeep-release/gopherjs/goui.js";
+    sha256 = "0xbkdpd900gnmzj8p0x38dn4sv170pdvgzcvzsq70s80p6ykkh6g";
+  };
+
+  publisherJS = fetchurl {
+    url = "https://storage.googleapis.com/perkeep-release/gopherjs/publisher.js";
+    sha256 = "09hd7p0xscqnh612jbrjvh3njmlm4292zd5sbqx2lg0aw688q8p2";
+  };
+
+in buildGoPackage rec {
+  name = "perkeep-${version}";
+  version = "unstable-2020-03-23";
+
+  src = fetchFromGitHub {
+    owner = "perkeep";
+    repo = "perkeep";
+    rev = "c2e31370ddefd86b6112a5d891100ea3382a4254";
+    sha256 = "0jf02k20ms7h60wglcq6dj3vqi9rlfww7db5iplgwznbij70c1i4";
+  };
+
+  goPackagePath = "perkeep.org";
+
+  buildPhase = ''
+    cd "$NIX_BUILD_TOP/go/src/$goPackagePath"
+
+    # Skip network fetches
+    sed -i '/fetchAllJS/a if true { return nil }' make.go
+    cp ${publisherJS} app/publisher/publisher.js
+    cp ${gouiJS} server/perkeepd/ui/goui.js
+
+    go run make.go
+  '';
+
+  # devcam is only useful when developing perkeep, we should not install it as
+  # part of this derivation.
+  postInstall = ''
+    rm -f $out/bin/devcam
+  '';
+
+  meta = with lib; {
+    description = "A way of storing, syncing, sharing, modelling and backing up content (née Camlistore)";
+    homepage = "https://perkeep.org";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ cstrahan kalbasit ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pgadmin/default.nix b/nixpkgs/pkgs/applications/misc/pgadmin/default.nix
new file mode 100644
index 000000000000..5fc0703e011b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pgadmin/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, fetchurl, fetchpatch, postgresql, wxGTK, libxml2, libxslt, openssl, zlib, makeDesktopItem }:
+
+stdenv.mkDerivation rec {
+  pname = "pgadmin3";
+  version = "1.22.2";
+
+  src = fetchurl {
+    url = "https://ftp.postgresql.org/pub/pgadmin/pgadmin3/v${version}/src/pgadmin3-${version}.tar.gz";
+    sha256 = "1b24b356h8z188nci30xrb57l7kxjqjnh6dq9ws638phsgiv0s4v";
+  };
+
+  enableParallelBuilding = true;
+
+  buildInputs = [ postgresql wxGTK openssl zlib ];
+
+  patches = [
+    (fetchpatch {
+      sha256 = "09hp7s3zjz80rpx2j3xyznwswwfxzi70z7c05dzrdk74mqjjpkfk";
+      name = "843344.patch";
+      url = "https://sources.debian.net/data/main/p/pgadmin3/1.22.2-1/debian/patches/843344";
+    })
+  ];
+
+  preConfigure = ''
+    substituteInPlace pgadmin/ver_svn.sh --replace "bin/bash" "$shell"
+  '';
+
+  configureFlags = [
+    "--with-pgsql=${postgresql}"
+    "--with-libxml2=${libxml2.dev}"
+    "--with-libxslt=${libxslt.dev}"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "PostgreSQL administration GUI tool";
+    homepage = "https://www.pgadmin.org";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ domenkozar wmertens ];
+    platforms = platforms.unix;
+  };
+
+  postFixup = let
+    desktopItem = makeDesktopItem {
+      name = "pgAdmin";
+      desktopName = "pgAdmin III";
+      genericName = "SQL Administration";
+      exec = "pgadmin3";
+      icon = "pgAdmin3";
+      type = "Application";
+      categories = "Application;Development;";
+      mimeType = "text/html";
+    };
+  in ''
+    mkdir -p $out/share/pixmaps;
+    cp pgadmin/include/images/pgAdmin3.png $out/share/pixmaps/;
+    cp -rv ${desktopItem}/share/applications $out/share/
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/misc/pgmanage/default.nix b/nixpkgs/pkgs/applications/misc/pgmanage/default.nix
new file mode 100644
index 000000000000..68f29cb9b9ac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pgmanage/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, postgresql, openssl } :
+
+stdenv.mkDerivation rec {
+  pname = "pgmanage";
+  version = "11.0.1";
+
+  src = fetchFromGitHub {
+    owner  = "pgManage";
+    repo   = "pgManage";
+    rev    = "v${version}";
+    sha256 = "1a1dbc32b3y0ph8ydf800h6pz7dg6g1gxgid4gffk7k58xj0c5yf";
+  };
+
+  patchPhase = ''
+    patchShebangs src/configure
+  '';
+
+  configurePhase = ''
+    ./configure --prefix $out
+  '';
+
+  buildInputs = [ postgresql openssl ];
+
+  meta = with stdenv.lib; {
+    description = "A fast replacement for PGAdmin";
+    longDescription = ''
+      At the heart of pgManage is a modern, fast, event-based C-binary, built in
+      the style of NGINX and Node.js. This heart makes pgManage as fast as any
+      PostgreSQL interface can hope to be. (Note: pgManage replaces Postage,
+      which is no longer maintained.)
+    '';
+    homepage = "https://github.com/pgManage/pgManage";
+    license = licenses.postgresql;
+    maintainers = [ maintainers.basvandijk ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pgmodeler/default.nix b/nixpkgs/pkgs/applications/misc/pgmodeler/default.nix
new file mode 100644
index 000000000000..7532c6e9bc91
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pgmodeler/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, lib, fetchFromGitHub, pkgconfig, qmake, mkDerivation,
+  qtsvg,
+  libxml2, postgresql }:
+
+mkDerivation rec {
+  pname = "pgmodeler";
+  version = "0.9.2";
+
+  src = fetchFromGitHub {
+    owner = "pgmodeler";
+    repo = "pgmodeler";
+    rev = "v${version}";
+    sha256 = "1wkvg20krfwkziz7skgmwlinx07jm5nl3455payg5brv69zf60kl";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ pkgconfig qmake ];
+  qmakeFlags = [ "pgmodeler.pro" "CONFIG+=release" ];
+
+  # todo: libpq would suffice here. Unfortunately this won't work, if one uses only postgresql.lib here.
+  buildInputs = [ postgresql qtsvg ];
+
+  meta = with stdenv.lib; {
+    description = "A database modeling tool for PostgreSQL";
+    longDescription = ''pgModeler (PostgreSQL Database Modeler) is an open source database modeling tool designed for PostgreSQL.'';
+    homepage = "https://pgmodeler.io/";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.esclear ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/phwmon/default.nix b/nixpkgs/pkgs/applications/misc/phwmon/default.nix
new file mode 100644
index 000000000000..017383a79a2d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/phwmon/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitLab, pythonPackages }:
+
+stdenv.mkDerivation {
+  pname = "phwmon";
+  version = "2017-04-10";
+
+  src = fetchFromGitLab {
+    owner = "o9000";
+    repo = "phwmon";
+    rev = "b162e53dccc4adf8f11f49408d05fd85d9c6c909";
+    sha256 = "1hqmsq66y8bqkpvszw84jyk8haxq3cjnz105hlkmp7786vfmkisq";
+  };
+
+  nativeBuildInputs = [ pythonPackages.wrapPython ];
+
+  buildInputs = [ pythonPackages.pygtk pythonPackages.psutil ];
+
+  pythonPath = [ pythonPackages.pygtk pythonPackages.psutil ];
+  
+  patchPhase = ''
+    substituteInPlace install.sh --replace "/usr/local" "$out"
+  '';
+    
+  installPhase = ''
+    mkdir -p $out/bin $out/share/applications
+    ./install.sh
+  '';
+
+  postFixup = ''
+    wrapPythonPrograms
+  '';
+
+  meta = {
+    homepage = "https://gitlab.com/o9000/phwmon";
+    description = "Hardware monitor (CPU, memory, network and disk I/O) for the system tray";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pinfo/default.nix b/nixpkgs/pkgs/applications/misc/pinfo/default.nix
new file mode 100644
index 000000000000..55093b21f950
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pinfo/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, autoreconfHook, gettext, texinfo, ncurses, readline }:
+
+stdenv.mkDerivation {
+  name = "pinfo-0.6.10";
+
+  src = fetchurl {
+    # homepage needed you to login to download the tarball
+    url = "https://src.fedoraproject.org/repo/pkgs/pinfo/pinfo-0.6.10.tar.bz2"
+      + "/fe3d3da50371b1773dfe29bf870dbc5b/pinfo-0.6.10.tar.bz2";
+    sha256 = "0p8wyrpz9npjcbx6c973jspm4c3xz4zxx939nngbq49xqah8088j";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ gettext texinfo ncurses readline ];
+
+  configureFlags = [ "--with-curses=${ncurses.dev}" "--with-readline=${readline.dev}" ];
+
+  meta = with stdenv.lib; {
+    description = "A viewer for info files";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/plank/default.nix b/nixpkgs/pkgs/applications/misc/plank/default.nix
new file mode 100644
index 000000000000..0ae9e7379e7c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/plank/default.nix
@@ -0,0 +1,89 @@
+{ stdenv
+, fetchurl
+, vala
+, atk
+, cairo
+, dconf
+, glib
+, gnome3
+, gtk3
+, libwnck3
+, libX11
+, libXfixes
+, libXi
+, pango
+, gettext
+, pkgconfig
+, libxml2
+, bamf
+, gdk-pixbuf
+, libdbusmenu-gtk3
+, file
+, gnome-menus
+, libgee
+, wrapGAppsHook
+, autoreconfHook
+, pantheon
+}:
+
+stdenv.mkDerivation rec {
+  pname = "plank";
+  version = "0.11.89";
+
+  src = fetchurl {
+    url = "https://launchpad.net/${pname}/1.0/${version}/+download/${pname}-${version}.tar.xz";
+    sha256 = "17cxlmy7n13jp1v8i4abxyx9hylzb39andhz3mk41ggzmrpa8qm6";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    gettext
+    gnome3.gnome-common
+    libxml2 # xmllint
+    pkgconfig
+    vala
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    atk
+    bamf
+    cairo
+    gdk-pixbuf
+    glib
+    gnome-menus
+    dconf
+    gtk3
+    libX11
+    libXfixes
+    libXi
+    libdbusmenu-gtk3
+    libgee
+    libwnck3
+    pango
+  ];
+
+  # fix paths
+  makeFlags = [
+    "INTROSPECTION_GIRDIR=${placeholder "out"}/share/gir-1.0/"
+    "INTROSPECTION_TYPELIBDIR=${placeholder "out"}/lib/girepository-1.0"
+  ];
+
+  # Make plank's application launcher hidden in Pantheon
+  patches = [
+    ./hide-in-pantheon.patch
+  ];
+
+  postPatch = ''
+    substituteInPlace ./configure \
+      --replace "/usr/bin/file" "${file}/bin/file"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Elegant, simple, clean dock";
+    homepage = "https://launchpad.net/plank";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ davidak ] ++ pantheon.maintainers;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/plank/hide-in-pantheon.patch b/nixpkgs/pkgs/applications/misc/plank/hide-in-pantheon.patch
new file mode 100644
index 000000000000..ab8a4c723897
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/plank/hide-in-pantheon.patch
@@ -0,0 +1,9 @@
+diff --git a/data/plank.desktop.in b/data/plank.desktop.in
+index 330c3a4..e1bdf5f 100644
+--- a/data/plank.desktop.in
++++ b/data/plank.desktop.in
+@@ -8,3 +8,4 @@ Exec=plank
+ Icon=plank
+ Terminal=false
+ NoDisplay=false
++NotShowIn=Pantheon;
diff --git a/nixpkgs/pkgs/applications/misc/plasma-applet-volumewin7mixer/cmake.patch b/nixpkgs/pkgs/applications/misc/plasma-applet-volumewin7mixer/cmake.patch
new file mode 100644
index 000000000000..b33a3e174bc4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/plasma-applet-volumewin7mixer/cmake.patch
@@ -0,0 +1,20 @@
+diff -Naur org.kde.plasma.volumewin7mixer/CMakeLists.txt org.kde.plasma.volumewin7mixer.patch/CMakeLists.txt
+--- org.kde.plasma.volumewin7mixer/CMakeLists.txt	1970-01-01 01:00:00.000000000 +0100
++++ org.kde.plasma.volumewin7mixer.patch/CMakeLists.txt	2016-04-19 11:23:35.137866949 +0200
+@@ -0,0 +1,15 @@
++# Set minimum CMake version (required for CMake 3.0 or later)
++cmake_minimum_required(VERSION 2.8.12)
++
++# Use Extra CMake Modules (ECM) for common functionality.
++# See http://api.kde.org/ecm/manual/ecm.7.html
++# and http://api.kde.org/ecm/manual/ecm-kde-modules.7.html
++find_package(ECM REQUIRED NO_MODULE)
++# Needed by find_package(KF5Plasma) below.
++set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR} ${CMAKE_MODULE_PATH})
++
++# Locate plasma_install_package macro.
++find_package(KF5Plasma REQUIRED)
++
++# Add installatation target ("make install").
++plasma_install_package(package org.kde.plasma.volumewin7mixer)
+
diff --git a/nixpkgs/pkgs/applications/misc/plasma-applet-volumewin7mixer/default.nix b/nixpkgs/pkgs/applications/misc/plasma-applet-volumewin7mixer/default.nix
new file mode 100644
index 000000000000..3ecace18f924
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/plasma-applet-volumewin7mixer/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, cmake, extra-cmake-modules, plasma-framework, kwindowsystem, plasma-pa, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "plasma-applet-volumewin7mixer";
+  version = "24";
+
+  src = fetchFromGitHub {
+    owner = "Zren";
+    repo = "plasma-applet-volumewin7mixer";
+    rev = "v${version}";
+    sha256 = "1pms71229y7fv3zs38a0l9mdcg5qkcdv9yrcvdm6xqpdyk21jbz2";
+  };
+
+  patches = [ ./cmake.patch ];
+  postPatch = '' rm build '';
+  nativeBuildInputs = [ cmake extra-cmake-modules ];
+  buildInputs = [ plasma-framework kwindowsystem plasma-pa ];
+
+  meta = with stdenv.lib; {
+    description = "A fork of the default volume plasmoid with a Windows 7 theme (vertical sliders).";
+    homepage = "https://github.com/Zren/plasma-applet-volumewin7mixer";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ mdevlamynck ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/playonlinux/default.nix b/nixpkgs/pkgs/applications/misc/playonlinux/default.nix
new file mode 100644
index 000000000000..e3b7c48d2b4b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/playonlinux/default.nix
@@ -0,0 +1,113 @@
+{ stdenv
+, makeWrapper
+, fetchurl
+, cabextract
+, gettext
+, glxinfo
+, gnupg
+, icoutils
+, imagemagick
+, netcat-gnu
+, p7zip
+, python2
+, unzip
+, wget
+, wine
+, xdg-user-dirs
+, xterm
+, pkgs
+, pkgsi686Linux
+, which
+, curl
+, jq
+, xorg
+, libGL
+}:
+
+let
+  version = "4.3.4";
+
+  binpath = stdenv.lib.makeBinPath [ 
+    cabextract
+    python
+    gettext
+    glxinfo
+    gnupg
+    icoutils
+    imagemagick
+    netcat-gnu
+    p7zip
+    unzip
+    wget
+    wine
+    xdg-user-dirs
+    xterm
+    which
+    curl
+    jq
+  ];
+
+  ld32 =
+    if stdenv.hostPlatform.system == "x86_64-linux" then "${stdenv.cc}/nix-support/dynamic-linker-m32"
+    else if stdenv.hostPlatform.system == "i686-linux" then "${stdenv.cc}/nix-support/dynamic-linker"
+    else throw "Unsupported platform for PlayOnLinux: ${stdenv.hostPlatform.system}";
+  ld64 = "${stdenv.cc}/nix-support/dynamic-linker";
+  libs = pkgs: stdenv.lib.makeLibraryPath [ xorg.libX11 libGL ];
+
+  python = python2.withPackages(ps: with ps; [
+    wxPython
+    setuptools
+  ]);
+
+in stdenv.mkDerivation {
+  pname = "playonlinux";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://www.playonlinux.com/script_files/PlayOnLinux/${version}/PlayOnLinux_${version}.tar.gz";
+    sha256 = "019dvb55zqrhlbx73p6913807ql866rm0j011ix5mkk2g79dzhqp";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildInputs = [ 
+    xorg.libX11
+    libGL
+    python
+  ];
+
+  postPatch = ''
+    patchShebangs python tests/python
+    sed -i "s/ %F//g" etc/PlayOnLinux.desktop
+  '';
+
+  installPhase = ''
+    install -d $out/share/playonlinux
+    cp -r . $out/share/playonlinux/
+
+    install -D -m644 etc/PlayOnLinux.desktop $out/share/applications/playonlinux.desktop
+
+    makeWrapper $out/share/playonlinux/playonlinux $out/bin/playonlinux \
+      --prefix PATH : ${binpath}
+
+    bunzip2 $out/share/playonlinux/bin/check_dd_x86.bz2
+    patchelf --set-interpreter $(cat ${ld32}) --set-rpath ${libs pkgsi686Linux} $out/share/playonlinux/bin/check_dd_x86
+    ${if stdenv.hostPlatform.system == "x86_64-linux" then ''
+      bunzip2 $out/share/playonlinux/bin/check_dd_amd64.bz2
+      patchelf --set-interpreter $(cat ${ld64}) --set-rpath ${libs pkgs} $out/share/playonlinux/bin/check_dd_amd64
+    '' else ''
+      rm $out/share/playonlinux/bin/check_dd_amd64.bz2
+    ''}
+    for f in $out/share/playonlinux/bin/*; do
+      bzip2 $f
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "GUI for managing Windows programs under linux";
+    homepage = "https://www.playonlinux.com/";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.a1russell ];
+    platforms = [ "x86_64-linux" "i686-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/plover/default.nix b/nixpkgs/pkgs/applications/misc/plover/default.nix
new file mode 100644
index 000000000000..8ecc4f974b45
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/plover/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchurl, python27Packages, python36Packages, wmctrl,
+  qtbase, mkDerivationWith }:
+
+{
+  stable = with python27Packages; buildPythonPackage rec {
+    pname = "plover";
+    version = "3.1.1";
+
+    meta = with stdenv.lib; {
+      description = "OpenSteno Plover stenography software";
+      maintainers = with maintainers; [ twey kovirobi ];
+      license     = licenses.gpl2;
+    };
+
+    src = fetchurl {
+      url    = "https://github.com/openstenoproject/plover/archive/v${version}.tar.gz";
+      sha256 = "1hdg5491phx6svrxxsxp8v6n4b25y7y4wxw7x3bxlbyhaskgj53r";
+    };
+
+    nativeBuildInputs     = [ setuptools_scm ];
+    buildInputs           = [ pytest mock ];
+    propagatedBuildInputs = [
+      six setuptools pyserial appdirs hidapi wxPython xlib wmctrl dbus-python
+    ];
+  };
+
+  dev = with python36Packages; mkDerivationWith buildPythonPackage rec {
+    pname = "plover";
+    version = "4.0.0.dev8";
+
+    meta = with stdenv.lib; {
+      description = "OpenSteno Plover stenography software";
+      maintainers = with maintainers; [ twey kovirobi ];
+      license     = licenses.gpl2;
+    };
+
+    src = fetchurl {
+      url    = "https://github.com/openstenoproject/plover/archive/v${version}.tar.gz";
+      sha256 = "1wxkmik1zyw5gqig5r0cas5v6f5408fbnximzw610rdisqy09rxp";
+    };
+
+    # I'm not sure why we don't find PyQt5 here but there's a similar
+    # sed on many of the platforms Plover builds for
+    postPatch = "sed -i /PyQt5/d setup.cfg";
+
+    checkInputs           = [ pytest mock ];
+    propagatedBuildInputs = [ Babel pyqt5 xlib pyserial appdirs wcwidth setuptools ];
+
+    dontWrapQtApps = true;
+
+    preFixup = ''
+      makeWrapperArgs+=("''${qtWrapperArgs[@]}")
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/polar-bookshelf/default.nix b/nixpkgs/pkgs/applications/misc/polar-bookshelf/default.nix
new file mode 100644
index 000000000000..fc86b2e885de
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/polar-bookshelf/default.nix
@@ -0,0 +1,91 @@
+{ stdenv, lib, makeWrapper, fetchurl
+, dpkg, wrapGAppsHook, autoPatchelfHook
+, gtk3, cairo, gnome2, atk, gdk-pixbuf, glib
+, at-spi2-atk, dbus, libX11, libxcb, libXi
+, libXcursor, libXdamage, libXrandr, libXcomposite
+, libXext, libXfixes, libXrender, libXtst, libXScrnSaver
+, nss, nspr, alsaLib, cups, fontconfig, expat
+, libudev0-shim, glibc, curl, openssl, libnghttp2, gnome3 }:
+
+
+stdenv.mkDerivation rec {
+  pname = "polar-bookshelf";
+  version = "1.13.10";
+
+  # fetching a .deb because there's no easy way to package this Electron app
+  src = fetchurl {
+    url = "https://github.com/burtonator/polar-bookshelf/releases/download/v${version}/polar-bookshelf-${version}-amd64.deb";
+    sha256 = "1bxcyf6n2m5x1z8ic6kzskinyyc6lh6nj0bycbwc524n6ms5j99p";
+  };
+
+  buildInputs = [
+    gnome3.gsettings_desktop_schemas
+    glib
+    gtk3
+    cairo
+    gnome2.pango
+    atk
+    gdk-pixbuf
+    at-spi2-atk
+    dbus
+    libX11
+    libxcb
+    libXi
+    libXcursor
+    libXdamage
+    libXrandr
+    libXcomposite
+    libXext
+    libXfixes
+    libXrender
+    libXtst
+    libXScrnSaver
+    nss
+    nspr
+    alsaLib
+    cups
+    fontconfig
+    expat
+  ];
+
+  nativeBuildInputs = [
+    wrapGAppsHook
+    autoPatchelfHook
+    makeWrapper
+    dpkg
+  ];
+
+  runtimeLibs = lib.makeLibraryPath [ libudev0-shim glibc curl openssl libnghttp2 ];
+
+  unpackPhase = "dpkg-deb -x $src .";
+
+  installPhase = ''
+    mkdir -p $out/share/polar-bookshelf
+    mkdir -p $out/bin
+    mkdir -p $out/lib
+
+    mv opt/Polar\ Bookshelf/* $out/share/polar-bookshelf
+    mv $out/share/polar-bookshelf/*.so $out/lib
+
+    mv usr/share/* $out/share/
+
+    ln -s $out/share/polar-bookshelf/polar-bookshelf $out/bin/polar-bookshelf
+
+    # Correct desktop file `Exec`
+    substituteInPlace $out/share/applications/polar-bookshelf.desktop \
+      --replace "/opt/Polar Bookshelf/polar-bookshelf" "$out/bin/polar-bookshelf"
+  '';
+
+  preFixup = ''
+    gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : "${runtimeLibs}" )
+  '';
+
+  meta = {
+    homepage = "https://getpolarized.io/";
+    description = "Personal knowledge repository for PDF and web content supporting incremental reading and document annotation";
+    license = stdenv.lib.licenses.gpl3;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.noneucat ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/polybar/default.nix b/nixpkgs/pkgs/applications/misc/polybar/default.nix
new file mode 100644
index 000000000000..c324a3f8be40
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/polybar/default.nix
@@ -0,0 +1,84 @@
+{ cairo, cmake, fetchFromGitHub, libXdmcp, libpthreadstubs, libxcb, pcre, pkgconfig
+, python3, stdenv, xcbproto, xcbutil, xcbutilcursor, xcbutilimage
+, xcbutilrenderutil, xcbutilwm, xcbutilxrm, makeWrapper
+, removeReferencesTo
+
+# optional packages-- override the variables ending in 'Support' to enable or
+# disable modules
+, alsaSupport   ? true,  alsaLib       ? null
+, githubSupport ? false, curl          ? null
+, mpdSupport    ? false, mpd_clientlib ? null
+, pulseSupport  ? false, libpulseaudio ? null
+, iwSupport     ? false, wirelesstools ? null
+, nlSupport     ? true,  libnl         ? null
+, i3Support ? false, i3GapsSupport ? false, i3 ? null, i3-gaps ? null, jsoncpp ? null
+}:
+
+assert alsaSupport   -> alsaLib       != null;
+assert githubSupport -> curl          != null;
+assert mpdSupport    -> mpd_clientlib != null;
+assert pulseSupport  -> libpulseaudio != null;
+
+assert iwSupport     -> ! nlSupport && wirelesstools != null;
+assert nlSupport     -> ! iwSupport && libnl         != null;
+
+assert i3Support     -> ! i3GapsSupport && jsoncpp != null && i3      != null;
+assert i3GapsSupport -> ! i3Support     && jsoncpp != null && i3-gaps != null;
+
+stdenv.mkDerivation rec {
+    pname = "polybar";
+    version = "3.4.3";
+
+    src = fetchFromGitHub {
+      owner = pname;
+      repo = pname;
+      rev = version;
+      sha256 = "0fsfh3xv0c0hz10xqzvd01c0p0wvzcnanbyczi45zhaxfrisb39w";
+      fetchSubmodules = true;
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "https://polybar.github.io/";
+      description = "A fast and easy-to-use tool for creating status bars";
+      longDescription = ''
+        Polybar aims to help users build beautiful and highly customizable
+        status bars for their desktop environment, without the need of
+        having a black belt in shell scripting.
+      '';
+      license = licenses.mit;
+      maintainers = with maintainers; [ afldcr filalex77 ];
+      platforms = platforms.linux;
+    };
+
+    buildInputs = [
+      cairo libXdmcp libpthreadstubs libxcb pcre python3 xcbproto xcbutil
+      xcbutilcursor xcbutilimage xcbutilrenderutil xcbutilwm xcbutilxrm
+
+      (if alsaSupport   then alsaLib       else null)
+      (if githubSupport then curl          else null)
+      (if mpdSupport    then mpd_clientlib else null)
+      (if pulseSupport  then libpulseaudio else null)
+
+      (if iwSupport     then wirelesstools else null)
+      (if nlSupport     then libnl         else null)
+
+      (if i3Support || i3GapsSupport then jsoncpp else null)
+      (if i3Support then i3 else null)
+      (if i3GapsSupport then i3-gaps else null)
+
+      (if i3Support || i3GapsSupport then makeWrapper else null)
+    ];
+
+    postInstall = if (i3Support || i3GapsSupport) then ''
+      wrapProgram $out/bin/polybar \
+        --prefix PATH : "${if i3Support then i3 else i3-gaps}/bin"
+    '' else "";
+
+    nativeBuildInputs = [
+      cmake pkgconfig removeReferencesTo
+    ];
+
+    postFixup = ''
+        remove-references-to -t ${stdenv.cc} $out/bin/polybar
+    '';
+}
diff --git a/nixpkgs/pkgs/applications/misc/posterazor/default.nix b/nixpkgs/pkgs/applications/misc/posterazor/default.nix
new file mode 100644
index 000000000000..674570ec3dd7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/posterazor/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, cmake, unzip, pkgconfig, libXpm, fltk13, freeimage }:
+
+stdenv.mkDerivation {
+  name = "posterazor-1.5.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/posterazor/1.5.1/PosteRazor-1.5.1-Source.zip";
+    sha256 = "1dqpdk8zl0smdg4fganp3hxb943q40619qmxjlga9jhjc01s7fq5";
+  };
+
+  hardeningDisable = [ "format" ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ cmake unzip libXpm fltk13 freeimage ];
+
+  unpackPhase = ''
+    unzip $src -d posterazor
+    cd posterazor/src
+  '';
+
+  # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=667328
+  patchPhase = ''
+    sed "s/\(#define CASESENSITIVESTRCMP strcasecmp\)/#include <unistd.h>\n\1/" -i FlPosteRazorDialog.cpp
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp PosteRazor $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://posterazor.sourceforge.net/";
+    description = "Cuts a raster image into pieces which can afterwards be printed out and assembled to a poster";
+    maintainers = [ maintainers.madjar ];
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/printrun/default.nix b/nixpkgs/pkgs/applications/misc/printrun/default.nix
new file mode 100644
index 000000000000..cadd98c74260
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/printrun/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, python27Packages, fetchFromGitHub }:
+
+python27Packages.buildPythonApplication rec {
+  name = "printrun-20150310";
+
+  src = fetchFromGitHub {
+    owner = "kliment";
+    repo = "Printrun";
+    rev = name;
+    sha256 = "09ijv8h4k5h15swg64s7igamvynawz7gdi7hiymzrzywdvr0zwsa";
+  };
+
+  propagatedBuildInputs = with python27Packages; [
+    wxPython30 pyserial dbus-python psutil numpy pyopengl pyglet cython
+  ];
+
+  doCheck = false;
+
+  setupPyBuildFlags = ["-i"];
+
+  postPatch = ''
+    sed -i -r "s|/usr(/local)?/share/|$out/share/|g" printrun/utils.py
+  '';
+
+  postInstall = ''
+    for f in $out/share/applications/*.desktop; do
+      sed -i -e "s|/usr/|$out/|g" "$f"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Pronterface, Pronsole, and Printcore - Pure Python 3d printing host software";
+    homepage = "https://github.com/kliment/Printrun";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/procmail/CVE-2014-3618.patch b/nixpkgs/pkgs/applications/misc/procmail/CVE-2014-3618.patch
new file mode 100644
index 000000000000..e3aa5600e40e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/procmail/CVE-2014-3618.patch
@@ -0,0 +1,18 @@
+From http://seclists.org/oss-sec/2014/q3/495 (with whitespace corrected).
+
+--- a/src/formisc.c 2013-08-04 00:13:33.000000000 -0700
++++ b/src/formisc.c 2014-09-03 11:42:25.986002396 -0700
+@@ -84,12 +84,11 @@
+ 	case '"':*target++=delim='"';start++;
+       }
+      ;{ int i;
+-	do
++	while(*start)
+ 	   if((i= *target++= *start++)==delim)	 /* corresponding delimiter? */
+ 	      break;
+ 	   else if(i=='\\'&&*start)		    /* skip quoted character */
+ 	      *target++= *start++;
+-	while(*start);						/* anything? */
+       }
+      hitspc=2;
+    }
diff --git a/nixpkgs/pkgs/applications/misc/procmail/default.nix b/nixpkgs/pkgs/applications/misc/procmail/default.nix
new file mode 100644
index 000000000000..1e6c558defbe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/procmail/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation {
+  name = "procmail-3.22";
+
+  patches = [
+    ./CVE-2014-3618.patch
+    (fetchurl {
+      url = "https://sources.debian.org/data/main/p/procmail/3.22-26/debian/patches/30";
+      sha256 = "11zmz1bj0v9pay3ldmyyg7473b80h89gycrhndsgg9q50yhcqaaq";
+      name = "CVE-2017-16844";
+    })
+  ];
+
+  # getline is defined differently in glibc now. So rename it.
+  # Without the .PHONY target "make install" won't install anything on Darwin.
+  postPatch = ''
+    sed -e "s%^RM.*$%#%" -i Makefile
+    sed -e "s%^BASENAME.*%\BASENAME=$out%" -i Makefile
+    sed -e "s%^LIBS=.*%LIBS=-lm%" -i Makefile
+    sed -e "s%getline%thisgetline%g" -i src/*.c src/*.h
+    sed -e "3i\
+.PHONY: install
+" -i Makefile
+  '';
+
+  src = fetchurl {
+    url = "ftp://ftp.fu-berlin.de/pub/unix/mail/procmail/procmail-3.22.tar.gz";
+    sha256 = "05z1c803n5cppkcq99vkyd5myff904lf9sdgynfqngfk9nrpaz08";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Mail processing and filtering utility";
+    homepage = "http://www.procmail.org/";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ gebner ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/projectlibre/default.nix b/nixpkgs/pkgs/applications/misc/projectlibre/default.nix
new file mode 100644
index 000000000000..344c3d7168ac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/projectlibre/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchgit, ant, jdk, makeWrapper, jre, coreutils, which }:
+
+stdenv.mkDerivation rec {
+  pname = "projectlibre";
+  version = "1.7.0";
+
+  src = fetchgit {
+    url = "https://git.code.sf.net/p/projectlibre/code";
+    rev = "0c939507cc63e9eaeb855437189cdec79e9386c2"; # version 1.7.0 was not tagged
+    sha256 = "0vy5vgbp45ai957gaby2dj1hvmbxfdlfnwcanwqm9f8q16qipdbq";
+  };
+
+  buildInputs = [ ant jdk makeWrapper ];
+  buildPhase = ''
+    export ANT_OPTS=-Dbuild.sysclasspath=ignore
+    ${ant}/bin/ant -f openproj_build/build.xml
+  '';
+
+  resourcesPath = "openproj_build/resources";
+  desktopItem = "${resourcesPath}/projectlibre.desktop";
+
+  installPhase = ''
+    mkdir -p $out/share/{applications,projectlibre/samples,pixmaps,doc/projectlibre} $out/bin
+
+    substitute $resourcesPath/projectlibre $out/bin/projectlibre \
+      --replace "\"/usr/share/projectlibre\"" "\"$out/share/projectlibre\""
+    chmod +x $out/bin/projectlibre
+    wrapProgram $out/bin/projectlibre \
+     --prefix PATH : "${jre}/bin:${coreutils}/bin:${which}/bin"
+
+    cp -R openproj_build/dist/* $out/share/projectlibre
+    cp -R openproj_build/license $out/share/doc/projectlibre
+    cp $desktopItem $out/share/applications
+    cp $resourcesPath/projectlibre.png $out/share/pixmaps
+    cp -R $resourcesPath/samples/* $out/share/projectlibre/samples
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.projectlibre.com/";
+    description = "Project-Management Software similar to MS-Project";
+    maintainers = [ maintainers.Mogria ];
+    license = licenses.cpal10;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/prusa-slicer/default.nix b/nixpkgs/pkgs/applications/misc/prusa-slicer/default.nix
new file mode 100644
index 000000000000..144addf02c66
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/prusa-slicer/default.nix
@@ -0,0 +1,98 @@
+{ stdenv, lib, fetchFromGitHub, cmake, pkgconfig
+, boost, cereal, curl, eigen, expat, glew, libpng, tbb, wxGTK31
+, gtest, nlopt, xorg, makeDesktopItem
+, cgal_5, gmp, ilmbase, mpfr, qhull, openvdb, systemd
+}:
+stdenv.mkDerivation rec {
+  pname = "prusa-slicer";
+  version = "2.2.0";
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [
+    cmake
+    pkgconfig
+  ];
+
+  buildInputs = [
+    boost
+    cereal
+    cgal_5
+    curl
+    eigen
+    expat
+    glew
+    gmp
+    ilmbase
+    libpng
+    mpfr
+    nlopt
+    openvdb
+    systemd
+    tbb
+    wxGTK31
+    xorg.libX11
+  ] ++ checkInputs;
+
+  checkInputs = [ gtest ];
+
+  # The build system uses custom logic - defined in
+  # cmake/modules/FindNLopt.cmake in the package source - for finding the nlopt
+  # library, which doesn't pick up the package in the nix store.  We
+  # additionally need to set the path via the NLOPT environment variable.
+  NLOPT = nlopt;
+
+  # Disable compiler warnings that clutter the build log.
+  # It seems to be a known issue for Eigen:
+  # http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1221
+  NIX_CFLAGS_COMPILE = "-Wno-ignored-attributes";
+
+  # prusa-slicer uses dlopen on `libudev.so` at runtime
+  NIX_LDFLAGS = "-ludev";
+
+  prePatch = ''
+    # In nix ioctls.h isn't available from the standard kernel-headers package
+    # like in other distributions. The copy in glibc seems to be identical to the
+    # one in the kernel though, so we use that one instead.
+    sed -i 's|"/usr/include/asm-generic/ioctls.h"|<asm-generic/ioctls.h>|g' src/libslic3r/GCodeSender.cpp
+
+    # Since version 2.5.0 of nlopt we need to link to libnlopt, as libnlopt_cxx
+    # now seems to be integrated into the main lib.
+    sed -i 's|nlopt_cxx|nlopt|g' cmake/modules/FindNLopt.cmake
+  '';
+
+  src = fetchFromGitHub {
+    owner = "prusa3d";
+    repo = "PrusaSlicer";
+    sha256 = "0954k9sm09y8qnz1jyswyysg10k54ywz8mswnwa4n2hnpq9qx73m";
+    rev = "version_${version}";
+  };
+
+  cmakeFlags = [
+    "-DSLIC3R_FHS=1"
+  ];
+
+  postInstall = ''
+    mkdir -p "$out/share/pixmaps/"
+    ln -s "$out/share/PrusaSlicer/icons/PrusaSlicer.png" "$out/share/pixmaps/PrusaSlicer.png"
+    mkdir -p "$out/share/applications"
+    cp "$desktopItem"/share/applications/* "$out/share/applications/"
+  '';
+
+  desktopItem = makeDesktopItem {
+    name = "PrusaSlicer";
+    exec = "prusa-slicer";
+    icon = "PrusaSlicer";
+    comment = "G-code generator for 3D printers";
+    desktopName = "PrusaSlicer";
+    genericName = "3D printer tool";
+    categories = "Application;Development;";
+  };
+
+  meta = with stdenv.lib; {
+    description = "G-code generator for 3D printer";
+    homepage = "https://github.com/prusa3d/PrusaSlicer";
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ moredread tweber ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pstree/default.nix b/nixpkgs/pkgs/applications/misc/pstree/default.nix
new file mode 100644
index 000000000000..7aaa8a8c38d2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pstree/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "pstree";
+  version = "2.39";
+
+  src = fetchurl {
+    urls = [
+      "https://distfiles.macports.org/${pname}/${pname}-${version}.tar.gz"
+      "https://fossies.org/linux/misc/${pname}-${version}.tar.gz"
+      "ftp://ftp.thp.uni-duisburg.de/pub/source/${pname}-${version}.tar.gz"
+    ];
+    sha256 = "17s7v15c4gryjpi11y1xq75022nkg4ggzvjlq2dkmyg67ssc76vw";
+  };
+
+  sourceRoot = ".";
+  buildPhase = ''
+    runHook preBuild
+    $CC $NIX_CFLAGS -o pstree pstree.c
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm0555 ${pname} -t $out/bin
+    install -Dm0444 ${pname}.1 -t $out/share/man/man1
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Show the set of running processes as a tree";
+    homepage = "http://www.thp.uni-duisburg.de/pstree/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.c0bw3b ];
+    platforms = platforms.unix;
+    priority = 5; # Lower than psmisc also providing pstree on Linux platforms
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pt/.bundle/config b/nixpkgs/pkgs/applications/misc/pt/.bundle/config
new file mode 100644
index 000000000000..88cb2d529351
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pt/.bundle/config
@@ -0,0 +1,2 @@
+---
+BUNDLE_NO_INSTALL: true
diff --git a/nixpkgs/pkgs/applications/misc/pt/Gemfile b/nixpkgs/pkgs/applications/misc/pt/Gemfile
new file mode 100644
index 000000000000..ed2136ea5b85
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pt/Gemfile
@@ -0,0 +1,3 @@
+source "https://rubygems.org"
+
+gem 'pt'
diff --git a/nixpkgs/pkgs/applications/misc/pt/Gemfile.lock b/nixpkgs/pkgs/applications/misc/pt/Gemfile.lock
new file mode 100644
index 000000000000..dfaa018d3724
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pt/Gemfile.lock
@@ -0,0 +1,69 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    addressable (2.6.0)
+      public_suffix (>= 2.0.2, < 4.0)
+    axiom-types (0.1.1)
+      descendants_tracker (~> 0.0.4)
+      ice_nine (~> 0.11.0)
+      thread_safe (~> 0.3, >= 0.3.1)
+    coercible (1.0.0)
+      descendants_tracker (~> 0.0.1)
+    colored (1.2)
+    declarative (0.0.10)
+    declarative-option (0.1.0)
+    descendants_tracker (0.0.4)
+      thread_safe (~> 0.3, >= 0.3.1)
+    equalizer (0.0.11)
+    excon (0.64.0)
+    faraday (0.9.2)
+      multipart-post (>= 1.2, < 3)
+    faraday_middleware (0.13.1)
+      faraday (>= 0.7.4, < 1.0)
+    highline (2.0.2)
+    hirb (0.7.3)
+    hirb-unicode (0.0.5)
+      hirb (~> 0.5)
+      unicode-display_width (~> 0.1.1)
+    ice_nine (0.11.2)
+    multi_json (1.13.1)
+    multipart-post (2.0.0)
+    pt (0.10.0)
+      colored (~> 1.2)
+      highline
+      hirb (~> 0.7, >= 0.7.3)
+      hirb-unicode (~> 0.0.5, >= 0.0.5)
+      thor
+      tracker_api (~> 1.6.0)
+    public_suffix (3.0.3)
+    representable (3.0.4)
+      declarative (< 0.1.0)
+      declarative-option (< 0.2.0)
+      uber (< 0.2.0)
+    thor (0.20.3)
+    thread_safe (0.3.6)
+    tracker_api (1.6.0)
+      addressable
+      equalizer
+      excon
+      faraday (~> 0.9.0)
+      faraday_middleware
+      multi_json
+      representable
+      virtus
+    uber (0.1.0)
+    unicode-display_width (0.1.1)
+    virtus (1.0.5)
+      axiom-types (~> 0.1)
+      coercible (~> 1.0)
+      descendants_tracker (~> 0.0, >= 0.0.3)
+      equalizer (~> 0.0, >= 0.0.9)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  pt
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/applications/misc/pt/default.nix b/nixpkgs/pkgs/applications/misc/pt/default.nix
new file mode 100644
index 000000000000..ef490702a672
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pt/default.nix
@@ -0,0 +1,17 @@
+{ lib, bundlerApp, bundlerUpdateScript }:
+
+bundlerApp {
+  pname = "pt";
+  gemdir = ./.;
+  exes = [ "pt" ];
+
+  passthru.updateScript = bundlerUpdateScript "pt";
+
+  meta = with lib; {
+    description = "Minimalist command-line Pivotal Tracker client";
+    homepage    = "http://www.github.com/raul/pt";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ ebzzry manveru nicknovitski ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pt/gemset.nix b/nixpkgs/pkgs/applications/misc/pt/gemset.nix
new file mode 100644
index 000000000000..f1f69c252142
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pt/gemset.nix
@@ -0,0 +1,273 @@
+{
+  addressable = {
+    dependencies = ["public_suffix"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bcm2hchn897xjhqj9zzsxf3n9xhddymj4lsclz508f4vw3av46l";
+      type = "gem";
+    };
+    version = "2.6.0";
+  };
+  axiom-types = {
+    dependencies = ["descendants_tracker" "ice_nine" "thread_safe"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10q3k04pll041mkgy0m5fn2b1lazm6ly1drdbcczl5p57lzi3zy1";
+      type = "gem";
+    };
+    version = "0.1.1";
+  };
+  coercible = {
+    dependencies = ["descendants_tracker"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p5azydlsz0nkxmcq0i1gzmcfq02lgxc4as7wmf47j1c6ljav0ah";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  colored = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0b0x5jmsyi0z69bm6sij1k89z7h0laag3cb4mdn7zkl9qmxb90lx";
+      type = "gem";
+    };
+    version = "1.2";
+  };
+  declarative = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0642xvwzzbgi3kp1bg467wma4g3xqrrn0sk369hjam7w579gnv5j";
+      type = "gem";
+    };
+    version = "0.0.10";
+  };
+  declarative-option = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1g4ibxq566f1frnhdymzi9hxxcm4g2gw4n21mpjk2mhwym4q6l0p";
+      type = "gem";
+    };
+    version = "0.1.0";
+  };
+  descendants_tracker = {
+    dependencies = ["thread_safe"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15q8g3fcqyb41qixn6cky0k3p86291y7xsh1jfd851dvrza1vi79";
+      type = "gem";
+    };
+    version = "0.0.4";
+  };
+  equalizer = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1kjmx3fygx8njxfrwcmn7clfhjhb6bvv3scy2lyyi0wqyi3brra4";
+      type = "gem";
+    };
+    version = "0.0.11";
+  };
+  excon = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vcplvlykirg2vc56jjxavgpkllzq26xgp7ind7wc5ikaqaz64gn";
+      type = "gem";
+    };
+    version = "0.64.0";
+  };
+  faraday = {
+    dependencies = ["multipart-post"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1kplqkpn2s2yl3lxdf6h7sfldqvkbkpxwwxhyk7mdhjplb5faqh6";
+      type = "gem";
+    };
+    version = "0.9.2";
+  };
+  faraday_middleware = {
+    dependencies = ["faraday"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1a93rs58bakqck7bcihasz66a1riy22h2zpwrpmb13gp8mw3wkmr";
+      type = "gem";
+    };
+    version = "0.13.1";
+  };
+  highline = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1g0zpalfj8wvca86hcnirir5py2zyqrhkgdgv9f87fxkjaw815wr";
+      type = "gem";
+    };
+    version = "2.0.2";
+  };
+  hirb = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mzch3c2lvmf8gskgzlx6j53d10j42ir6ik2dkrl27sblhy76cji";
+      type = "gem";
+    };
+    version = "0.7.3";
+  };
+  hirb-unicode = {
+    dependencies = ["hirb" "unicode-display_width"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1b7hka1p4mkjdy2wr2cxsivnsmnz31zz1bswznmmxnvf5a6c00jk";
+      type = "gem";
+    };
+    version = "0.0.5";
+  };
+  ice_nine = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nv35qg1rps9fsis28hz2cq2fx1i96795f91q4nmkm934xynll2x";
+      type = "gem";
+    };
+    version = "0.11.2";
+  };
+  multi_json = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv";
+      type = "gem";
+    };
+    version = "1.13.1";
+  };
+  multipart-post = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x";
+      type = "gem";
+    };
+    version = "2.0.0";
+  };
+  pt = {
+    dependencies = ["colored" "highline" "hirb" "hirb-unicode" "thor" "tracker_api"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ypyya7bk0w7zd9c3224zsizhv5wbs1icjpn0023wh3ii1by16a8";
+      type = "gem";
+    };
+    version = "0.10.0";
+  };
+  public_suffix = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l";
+      type = "gem";
+    };
+    version = "3.0.3";
+  };
+  representable = {
+    dependencies = ["declarative" "declarative-option" "uber"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qm9rgi1j5a6nv726ka4mmixivlxfsg91h8rpp72wwd4vqbkkm07";
+      type = "gem";
+    };
+    version = "3.0.4";
+  };
+  thor = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yhrnp9x8qcy5vc7g438amd5j9sw83ih7c30dr6g6slgw9zj3g29";
+      type = "gem";
+    };
+    version = "0.20.3";
+  };
+  thread_safe = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
+      type = "gem";
+    };
+    version = "0.3.6";
+  };
+  tracker_api = {
+    dependencies = ["addressable" "equalizer" "excon" "faraday" "faraday_middleware" "multi_json" "representable" "virtus"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pxwzbjzxign81wynl44napkvkrrhlyl7rm4ywrcdqahmzxmavsp";
+      type = "gem";
+    };
+    version = "1.6.0";
+  };
+  uber = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p1mm7mngg40x05z52md3mbamkng0zpajbzqjjwmsyw0zw3v9vjv";
+      type = "gem";
+    };
+    version = "0.1.0";
+  };
+  unicode-display_width = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06dpm3yqc974qfy6nyx7b0w0f6b8k08jadd5l9xnmla3fji6c405";
+      type = "gem";
+    };
+    version = "0.1.1";
+  };
+  virtus = {
+    dependencies = ["axiom-types" "coercible" "descendants_tracker" "equalizer"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06iphwi3c4f7y9i2rvhvaizfswqbaflilziz4dxqngrdysgkn1fk";
+      type = "gem";
+    };
+    version = "1.0.5";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/misc/ptask/default.nix b/nixpkgs/pkgs/applications/misc/ptask/default.nix
new file mode 100644
index 000000000000..a5fd55c967bb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ptask/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, pkgconfig, makeWrapper, gtk3, json_c, taskwarrior }:
+
+stdenv.mkDerivation rec {
+  name = "ptask-1.0.0";
+
+  src = fetchurl {
+    url = "https://wpitchoune.net/ptask/files/${name}.tar.gz";
+    sha256 = "13nirr7b29bv3w2zc8zxphhmc9ayhs61i11jl4819nabk7vy1kdq";
+  };
+
+  buildInputs = [ gtk3 json_c ];
+
+  nativeBuildInputs = [ pkgconfig makeWrapper ];
+
+  patches = [ ./tw-version.patch ./json_c_is_error.patch ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/ptask" \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \
+      --prefix PATH : "${taskwarrior}/bin"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://wpitchoune.net/ptask/";
+    description = "GTK-based GUI for taskwarrior";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.spacefrogg ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ptask/json_c_is_error.patch b/nixpkgs/pkgs/applications/misc/ptask/json_c_is_error.patch
new file mode 100644
index 000000000000..435c8b26e6f7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ptask/json_c_is_error.patch
@@ -0,0 +1,13 @@
+diff --git a/src/tw.c b/src/tw.c
+index 602f7b3..ca601cd 100644
+--- a/src/tw.c
++++ b/src/tw.c
+@@ -163,7 +163,7 @@ static struct json_object *task_exec_json(const char *opts)
+ 
+ 	free(cmd);
+ 
+-	if (o && is_error(o))
++	if (!o)
+ 		return NULL;
+ 
+ 	return o;
diff --git a/nixpkgs/pkgs/applications/misc/ptask/tw-version.patch b/nixpkgs/pkgs/applications/misc/ptask/tw-version.patch
new file mode 100644
index 000000000000..995fffeda2f8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ptask/tw-version.patch
@@ -0,0 +1,11 @@
+--- a/src/tw.c	2017-02-21 22:56:19.289037608 +0100
++++ b/src/tw.c	2017-02-21 22:57:04.726814256 +0100
+@@ -116,7 +116,7 @@
+ 	    || !strcmp(ver, "2.3.0")
+ 	    || !strcmp(ver, "2.4.0")
+ 	    || !strcmp(ver, "2.4.1")
+-	    || !strcmp(ver, "2.5.0"))
++	    || !strcmp(ver, "2.5.1"))
+ 		return 1;
+ 	else
+ 		return 0;
diff --git a/nixpkgs/pkgs/applications/misc/pueue/default.nix b/nixpkgs/pkgs/applications/misc/pueue/default.nix
new file mode 100644
index 000000000000..db84f5fbb9bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pueue/default.nix
@@ -0,0 +1,34 @@
+{ lib, rustPlatform, fetchFromGitHub, installShellFiles }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "pueue";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "Nukesor";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "06jxj89ya91grrwxfs7l1ahy46y993kxsc8gpkxajc0j5ihax2al";
+  };
+
+  cargoSha256 = "191j3lpd24ycissw0y2hv65i1cjzf24draamq3sxv7hv0sxcjw4d";
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  checkFlagsArray = [ "--skip=test_single_huge_payload" ];
+
+  postInstall = ''
+    # zsh completion generation fails. See: https://github.com/Nukesor/pueue/issues/57
+    for shell in bash fish; do
+      $out/bin/pueue completions $shell .
+      installShellCompletion pueue.$shell
+    done
+  '';
+
+  meta = with lib; {
+    description = "A daemon for managing long running shell commands";
+    homepage = "https://github.com/Nukesor/pueue";
+    license = licenses.mit;
+    maintainers = [ maintainers.marsam ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pwsafe/default.nix b/nixpkgs/pkgs/applications/misc/pwsafe/default.nix
new file mode 100644
index 000000000000..43197c6bf276
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pwsafe/default.nix
@@ -0,0 +1,69 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, zip, gettext, perl
+, wxGTK31, libXext, libXi, libXt, libXtst, xercesc
+, qrencode, libuuid, libyubikey, yubikey-personalization
+, curl, openssl, file
+}:
+
+stdenv.mkDerivation rec {
+  pname = "pwsafe";
+  version = "3.52.0";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "${version}";
+    sha256 = "1ka7xsl63v0559fzf3pwc1iqr37gwr4vq5iaxa2hzar2g28hsxvh";
+  };
+
+  nativeBuildInputs = [ 
+    cmake gettext perl pkgconfig zip
+  ];
+  buildInputs = [
+    libXext libXi libXt libXtst wxGTK31
+    curl qrencode libuuid openssl xercesc
+    libyubikey yubikey-personalization
+    file
+  ];
+
+  cmakeFlags = [
+    "-DNO_GTEST=ON"
+    "-DCMAKE_CXX_FLAGS=-I${yubikey-personalization}/include/ykpers-1"
+  ];
+  enableParallelBuilding = true;
+
+  postPatch = ''
+    # Fix perl scripts used during the build.
+    for f in `find . -type f -name '*.pl'`; do
+      patchShebangs $f
+    done
+
+    # Fix hard coded paths.
+    for f in `grep -Rl /usr/share/ src`; do
+      substituteInPlace $f --replace /usr/share/ $out/share/
+    done
+
+    # Fix hard coded zip path.
+    substituteInPlace help/Makefile.linux --replace /usr/bin/zip ${zip}/bin/zip
+
+    for f in `grep -Rl /usr/bin/ .`; do
+      substituteInPlace $f --replace /usr/bin/ ""
+    done
+  '';
+
+  installFlags = [ "PREFIX=${placeholder "out"}" ];
+
+  meta = with stdenv.lib; {
+    description = "A password database utility";
+    longDescription = ''
+      Password Safe is a password database utility. Like many other
+      such products, commercial and otherwise, it stores your
+      passwords in an encrypted file, allowing you to remember only
+      one password (the "safe combination"), instead of all the
+      username/password combinations that you use.
+    '';
+    homepage = "https://pwsafe.org/";
+    maintainers = with maintainers; [ c0bw3b pjones ];
+    platforms = platforms.linux;
+    license = licenses.artistic2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pydf/default.nix b/nixpkgs/pkgs/applications/misc/pydf/default.nix
new file mode 100644
index 000000000000..aa2835107088
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pydf/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, python3Packages }:
+
+python3Packages.buildPythonPackage rec {
+  pname = "pydf";
+  version = "12";
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "7f47a7c3abfceb1ac04fc009ded538df1ae449c31203962a1471a4eb3bf21439";
+  };
+
+  postInstall = ''
+    mkdir -p $out/share/man/man1 $out/share/pydf
+    install -t $out/share/pydf -m 444 pydfrc
+    install -t $out/share/man/man1 -m 444 pydf.1
+  '';
+
+  meta = with stdenv.lib; {
+    description = "colourised df(1)-clone";
+    homepage = "http://kassiopeia.juls.savba.sk/~garabik/software/pydf/";
+    license = licenses.publicDomain;
+    maintainers = with maintainers; [ monsieurp ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pyditz/cerberus.nix b/nixpkgs/pkgs/applications/misc/pyditz/cerberus.nix
new file mode 100644
index 000000000000..be12906e61ec
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pyditz/cerberus.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytestrunner, pytest }:
+
+buildPythonPackage rec {
+  pname = "Cerberus";
+  version = "1.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1pxzr8sfm2hc5s96m9k044i44nwkva70n0ypr6a35v73zn891cx5";
+  };
+
+  checkInputs = [ pytestrunner pytest ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://python-cerberus.org/";
+    description = "Lightweight, extensible schema and data validation tool for Python dictionaries";
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pyditz/default.nix b/nixpkgs/pkgs/applications/misc/pyditz/default.nix
new file mode 100644
index 000000000000..05338b38dfef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pyditz/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, pythonPackages }:
+
+with pythonPackages;
+
+let
+  cerberus_1_1 = callPackage ./cerberus.nix { };
+in buildPythonApplication rec {
+  pname = "pyditz";
+  version = "0.10.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0hxxz7kxv9gsrr86ccsc31g7bc2agw1ihbxhd659c2m6nrqq5qaf";
+  };
+  nativeBuildInputs = [ setuptools_scm ];
+  propagatedBuildInputs = [ pyyaml six jinja2 cerberus_1_1 ];
+
+  checkPhase = ''
+    ${python.interpreter} -m unittest discover
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://pythonhosted.org/pyditz/";
+    description = "Drop-in replacement for the Ditz distributed issue tracker";
+    maintainers = [ maintainers.ilikeavocadoes ];
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pytrainer/default.nix b/nixpkgs/pkgs/applications/misc/pytrainer/default.nix
new file mode 100644
index 000000000000..00c451141792
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pytrainer/default.nix
@@ -0,0 +1,94 @@
+{ stdenv
+, fetchFromGitHub
+, perl
+, python3
+, sqlite
+, gpsbabel
+, gnome3
+, gobject-introspection
+, wrapGAppsHook
+, gtk3
+, xvfb_run
+, webkitgtk
+, glib-networking
+, glibcLocales
+, tzdata
+, substituteAll
+}:
+
+let
+  # Pytrainer needs a matplotlib with GTK backend.
+  matplotlibGtk = python3.pkgs.matplotlib.override {
+    enableGtk3 = true;
+  };
+
+in
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "pytrainer";
+  version = "2.0.1";
+
+  src = fetchFromGitHub {
+    owner = "pytrainer";
+    repo = "pytrainer";
+    rev = "v${version}";
+    sha256 = "0m2sy3f5pyc4wv1ns31r7vlafqkzp0a2jasaskwrkl6273agbbk9";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      perl = "${perl}/bin/perl";
+    })
+  ];
+
+  postPatch = ''
+    substituteInPlace ./setup.py \
+      --replace "'mysqlclient'," ""
+  '';
+
+  propagatedBuildInputs = with python3.pkgs; [
+    dateutil
+    lxml
+    matplotlibGtk
+    pygobject3
+    sqlalchemy
+    sqlalchemy_migrate
+    psycopg2
+    requests
+    certifi
+    setuptools
+  ];
+
+  nativeBuildInputs = [
+    gobject-introspection
+    wrapGAppsHook
+    xvfb_run
+  ];
+
+  buildInputs = [
+    gpsbabel
+    sqlite
+    gtk3
+    webkitgtk
+    glib-networking
+    glibcLocales
+    gnome3.adwaita-icon-theme
+  ];
+
+  checkPhase = ''
+    env HOME=$TEMPDIR TZDIR=${tzdata}/share/zoneinfo \
+      TZ=Europe/Kaliningrad \
+      LC_ALL=en_US.UTF-8 \
+      xvfb-run -s '-screen 0 800x600x24' \
+      ${python3.interpreter} setup.py test
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/pytrainer/pytrainer/wiki";
+    description = "Application for logging and graphing sporting excursions";
+    maintainers = [ maintainers.rycee ];
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pytrainer/fix-paths.patch b/nixpkgs/pkgs/applications/misc/pytrainer/fix-paths.patch
new file mode 100644
index 000000000000..7781f5aa4bed
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pytrainer/fix-paths.patch
@@ -0,0 +1,11 @@
+--- a/imports/file_garminfit.py
++++ b/imports/file_garminfit.py
+@@ -81,7 +81,7 @@
+         logging.debug(">>")
+         result = False
+         try:
+-            result = subprocess.check_output(["perl",
++            result = subprocess.check_output(["@perl@",
+                                               self.main_data_path+"plugins/garmin-fit/bin/fit2tcx",
+                                               filename])
+         except subprocess.CalledProcessError:
diff --git a/nixpkgs/pkgs/applications/misc/qMasterPassword/default.nix b/nixpkgs/pkgs/applications/misc/qMasterPassword/default.nix
new file mode 100644
index 000000000000..c2adcabe414c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qMasterPassword/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, mkDerivation, fetchFromGitHub, qtbase, qmake, libX11, libXtst, openssl, libscrypt }:
+
+mkDerivation rec {
+  name = "qMasterPassword";
+  version = "1.2.2";
+
+  src = fetchFromGitHub {
+    owner = "bkueng";
+    repo = name;
+    rev = "v${version}";
+    sha256 = "0l0jarvfdc69rcjl2wa0ixq8gp3fmjsy9n84m38sxf3n9j2bh13c";
+  };
+
+  buildInputs = [ qtbase libX11 libXtst openssl libscrypt ];
+  nativeBuildInputs = [ qmake ];
+
+  # Upstream install is mostly defunct. It hardcodes target.path and doesn't
+  # install anything but the binary.
+  installPhase = if stdenv.isDarwin then ''
+    mkdir -p "$out"/{Applications,bin}
+    mv qMasterPassword.app "$out"/Applications/
+    ln -s ../Applications/qMasterPassword.app/Contents/MacOS/qMasterPassword "$out"/bin/qMasterPassword
+  '' else ''
+    mkdir -p $out/bin
+    mkdir -p $out/share/{applications,doc/qMasterPassword,icons/qmasterpassword,icons/hicolor/512x512/apps}
+    mv qMasterPassword $out/bin
+    mv data/qMasterPassword.desktop $out/share/applications
+    mv LICENSE README.md $out/share/doc/qMasterPassword
+    mv data/icons/app_icon.png $out/share/icons/hicolor/512x512/apps/qmasterpassword.png
+    mv data/icons/* $out/share/icons/qmasterpassword
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Stateless Master Password Manager";
+    longDescription = ''
+      Access all your passwords using only a single master password. But in
+      contrast to other managers it does not store any passwords: Unique
+      passwords are generated from the master password and a site name. This
+      means you automatically get different passwords for each account and
+      there is no password file that can be lost or get stolen. There is also
+      no need to trust any online password service.
+    '';
+    homepage = "https://github.com/bkueng/qMasterPassword";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.tadeokondrak ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/qcad/application-dir.patch b/nixpkgs/pkgs/applications/misc/qcad/application-dir.patch
new file mode 100644
index 000000000000..84782e1e7178
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qcad/application-dir.patch
@@ -0,0 +1,35 @@
+diff --git a/src/core/RS.cpp b/src/core/RS.cpp
+index d8a135d6f..659795dbb 100644
+--- a/src/core/RS.cpp
++++ b/src/core/RS.cpp
+@@ -151,7 +151,7 @@ QStringList RS::getDirectoryList(const QString& subDirectory) {
+     dirList.append(appDir + "/../../../" + subDirectory);
+     dirList.append(QDir::currentPath() + "/" + subDirectory);
+ #else
+-    dirList.append(appDir + "/" + subDirectory);
++    dirList.append(appDir + "/../lib/" + subDirectory);
+ #endif
+ 
+     /*
+diff --git a/src/core/RSettings.cpp b/src/core/RSettings.cpp
+index c6c31cbf5..c51b59ce6 100644
+--- a/src/core/RSettings.cpp
++++ b/src/core/RSettings.cpp
+@@ -367,6 +367,8 @@ QString RSettings::getApplicationPath() {
+         ret.cdUp();
+     }
+ 
++    ret.cd("../lib");
++
+     return ret.path();
+ }
+ 
+@@ -1268,7 +1270,7 @@ QString RSettings::getRevisionString() {
+ }
+ 
+ QString RSettings::getReleaseDate() {
+-    return __DATE__;
++    return "";
+ }
+ 
+ int RSettings::getSnapRange() {
diff --git a/nixpkgs/pkgs/applications/misc/qcad/default.nix b/nixpkgs/pkgs/applications/misc/qcad/default.nix
new file mode 100644
index 000000000000..3dfda8b9c5f3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qcad/default.nix
@@ -0,0 +1,92 @@
+{ boost
+, fetchFromGitHub
+, mkDerivationWith
+, muparser
+, pkgconfig
+, qmake
+, qt5
+, stdenv
+, libGLU
+}:
+
+mkDerivationWith stdenv.mkDerivation rec {
+  pname = "qcad";
+  version = "3.24.3.4";
+
+  src = fetchFromGitHub {
+    owner = "qcad";
+    repo = "qcad";
+    rev = "v${version}";
+    sha256 = "0hv9050srrq7fm1fqla8b52mwpilsvr1jriz4ay633s63svss3zz";
+  };
+
+  patches = [
+    ./application-dir.patch
+  ];
+
+  postPatch = ''
+    mkdir src/3rdparty/qt-labs-qtscriptgenerator-${qt5.qtbase.version}
+    cp \
+      src/3rdparty/qt-labs-qtscriptgenerator-5.12.3/qt-labs-qtscriptgenerator-5.12.3.pro \
+      src/3rdparty/qt-labs-qtscriptgenerator-${qt5.qtbase.version}/qt-labs-qtscriptgenerator-${qt5.qtbase.version}.pro
+  '';
+
+  qmakeFlags = [
+    "MUPARSER_DIR=${muparser}"
+    "INSTALLROOT=$(out)"
+    "BOOST_DIR=${boost.dev}"
+  ];
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm555 -t $out/bin release/qcad-bin
+    install -Dm555 -t $out/lib release/libspatialindexnavel.so
+    install -Dm555 -t $out/lib release/libqcadcore.so
+    install -Dm555 -t $out/lib release/libqcadentity.so
+    install -Dm555 -t $out/lib release/libqcadgrid.so
+    install -Dm555 -t $out/lib release/libqcadsnap.so
+    install -Dm555 -t $out/lib release/libqcadoperations.so
+    install -Dm555 -t $out/lib release/libqcadstemmer.so
+    install -Dm555 -t $out/lib release/libqcadspatialindex.so
+    install -Dm555 -t $out/lib release/libqcadgui.so
+    install -Dm555 -t $out/lib release/libqcadecmaapi.so
+
+    install -Dm444 -t $out/share/applications qcad.desktop
+    install -Dm644 -t $out/share/pixmaps      scripts/qcad_icon.png
+
+    cp -r scripts $out/lib
+    cp -r plugins $out/lib/plugins
+    cp -r patterns $out/lib/patterns
+
+    install -Dm644 scripts/qcad_icon.svg $out/share/icons/hicolor/scalable/apps/qcad.svg
+
+    runHook postInstall
+    '';
+
+  buildInputs = [
+    boost
+    muparser
+    libGLU
+    qt5.qtbase
+    qt5.qtscript
+    qt5.qtsvg
+    qt5.qtxmlpatterns
+  ];
+
+  nativeBuildInputs = [
+    pkgconfig
+    qt5.qmake
+    qt5.qttools
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "2D CAD package based on Qt";
+    homepage = "https://qcad.org";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ yvesf ];
+    platforms = qt5.qtbase.meta.platforms;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/qdirstat/default.nix b/nixpkgs/pkgs/applications/misc/qdirstat/default.nix
new file mode 100644
index 000000000000..c57153fe0e0d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qdirstat/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchFromGitHub, qmake
+, coreutils, xdg_utils, bash
+, makeWrapper, perlPackages, mkDerivation }:
+
+let
+  version = "1.6.1";
+in mkDerivation rec {
+  pname = "qdirstat";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "shundhammer";
+    repo = "qdirstat";
+    rev = version;
+    sha256 = "0q77a347qv1aka6sni6l03zh5jzyy9s74aygg554r73g01kxczpb";
+  };
+
+  nativeBuildInputs = [ qmake makeWrapper ];
+
+  buildInputs = [ perlPackages.perl ];
+
+  postPatch = ''
+    substituteInPlace scripts/scripts.pro \
+      --replace /bin/true ${coreutils}/bin/true
+
+    for i in src/SysUtil.cpp src/FileSizeStatsWindow.cpp
+    do
+      substituteInPlace $i \
+        --replace /usr/bin/xdg-open ${xdg_utils}/bin/xdg-open
+    done
+    for i in src/Cleanup.cpp src/cleanup-config-page.ui
+    do
+      substituteInPlace $i \
+        --replace /bin/bash ${bash}/bin/bash \
+        --replace /bin/sh ${bash}/bin/sh
+    done
+    substituteInPlace src/StdCleanup.cpp \
+      --replace /bin/bash ${bash}/bin/bash
+  '';
+
+  qmakeFlags = [ "INSTALL_PREFIX=${placeholder "out"}" ];
+
+  postInstall = ''
+    wrapProgram $out/bin/qdirstat-cache-writer \
+      --set PERL5LIB "${perlPackages.makePerlPath [ perlPackages.URI ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Graphical disk usage analyzer";
+    homepage = src.meta.homepage;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ gnidorah ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/qlandkartegt/default.nix b/nixpkgs/pkgs/applications/misc/qlandkartegt/default.nix
new file mode 100644
index 000000000000..d780125fbbfa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qlandkartegt/default.nix
@@ -0,0 +1,91 @@
+{ mkDerivation, lib, fetchurl, fetchpatch, cmake
+, qtmultimedia, qtserialport, qtscript, qtwebkit
+, garmindev, gdal, gpsd, libdmtx, libexif, libGLU, proj }:
+
+mkDerivation rec {
+  pname = "qlandkartegt";
+  version = "1.8.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
+    sha256 = "1rwv5ar5jv15g1cc6pp0lk69q3ip10pjazsh3ds2ggaciymha1ly";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://aur.archlinux.org/cgit/aur.git/plain/fix-gps_read.patch?h=qlandkartegt";
+      sha256 = "1xyqxdqxwviq7b8jjxssxjlkldk01ms8dzqdjgvjs8n3fh7w0l70";
+    })
+    (fetchpatch {
+      url = "https://aur.archlinux.org/cgit/aur.git/plain/fix-incomplete-type.patch?h=qlandkartegt";
+      sha256 = "1q7rm321az3q6pq5mq0yjrihxl9sf3nln9z3xp20g9qldslv2cy2";
+    })
+    (fetchpatch {
+      url = "https://aur.archlinux.org/cgit/aur.git/plain/fix-proj_api.patch?h=qlandkartegt";
+      sha256 = "12yibxn85z2n30azmhyv02q091jj5r50nlnjq4gfzyqd3xb9582n";
+    })
+    (fetchpatch {
+      url = "https://aur.archlinux.org/cgit/aur.git/plain/fix-qt5-build.patch?h=qlandkartegt";
+      sha256 = "1wq2hr06gzq8m7zddh10vizmvpwp4lcy1g86rlpppvdc5cm3jpkl";
+    })
+    (fetchpatch {
+      url = "https://aur.archlinux.org/cgit/aur.git/plain/fix-qtgui-include.patch?h=qlandkartegt";
+      sha256 = "16hql8ignzw4n1hlp4icbvaddqcadh2rjns0bvis720535112sc8";
+    })
+    (fetchpatch {
+      url = "https://aur.archlinux.org/cgit/aur.git/plain/fix-ver_str.patch?h=qlandkartegt";
+      sha256 = "13fg05gqrjfa9j00lrqz1b06xf6r5j01kl6l06vkn0hz1jzxss5m";
+    })
+    (fetchpatch {
+      url = "https://aur.archlinux.org/cgit/aur.git/plain/improve-gpx-creator.patch?h=qlandkartegt";
+      sha256 = "1sdf5z8qrd43azrhwfw06zc0qr48z925hgbcfqlp0xrsxv2n6kks";
+    })
+    (fetchpatch {
+      url = "https://aur.archlinux.org/cgit/aur.git/plain/improve-gpx-name.patch?h=qlandkartegt";
+      sha256 = "10phafhns79i3rl4zpc7arw11x46cywgkdkxm7gw1i9y5h0cal79";
+    })
+  ];
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    qtmultimedia qtserialport qtscript qtwebkit
+    garmindev gdal gpsd libdmtx libexif libGLU proj
+  ];
+
+  cmakeFlags = [
+    "-DQK_QT5_PORT=ON"
+    "-DEXIF_LIBRARIES=${libexif}/lib/libexif.so"
+    "-DEXIF_INCLUDE_DIRS=${libexif}/include"
+  ];
+
+  enableParallelBuilding = true;
+
+  postPatch = ''
+    substituteInPlace ConfigureChecks.cmake \
+      --replace \$\{PLUGIN_INSTALL_DIR\} "${garmindev}/lib/qlandkartegt"
+  '';
+
+  postInstall = ''
+    mkdir -p $out/share/mime/packages
+    cat << EOF > $out/share/mime/packages/qlandkartegt.xml
+    <mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
+      <mime-type type="application/vnd.qlandkartegt.qlb">
+        <comment>QLandkarteGT File</comment>
+        <glob pattern="*.qlb"/>
+      </mime-type>
+    </mime-info>
+    EOF
+  '';
+
+  meta = with lib; {
+    homepage = "http://www.qlandkarte.org/";
+    description = ''
+      QLandkarte GT is the ultimate outdoor aficionado's tool.
+      It supports GPS maps in GeoTiff format as well as Garmin's img vector map format.
+    '';
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ sikmir ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/qlandkartegt/garmindev.nix b/nixpkgs/pkgs/applications/misc/qlandkartegt/garmindev.nix
new file mode 100644
index 000000000000..8705abd92596
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qlandkartegt/garmindev.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, cmake, libusb-compat-0_1 }:
+
+stdenv.mkDerivation rec {
+  pname = "garmindev";
+  version = "0.3.4";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/qlandkartegt/${pname}-${version}.tar.gz";
+    sha256 = "1mc7rxdn9790pgbvz02xzipxp2dp9h4hfq87xgawa18sp9jqzhw6";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ libusb-compat-0_1 ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.qlandkarte.org/";
+    description = "Garmin Device Drivers for QlandkarteGT";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ sikmir ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/qlcplus/default.nix b/nixpkgs/pkgs/applications/misc/qlcplus/default.nix
new file mode 100644
index 000000000000..77a24413bdd6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qlcplus/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, mkDerivation, fetchFromGitHub, qmake, pkgconfig, udev
+, qtmultimedia, qtscript, alsaLib, ola, libftdi1, libusb-compat-0_1
+, libsndfile, libmad
+}:
+
+mkDerivation rec {
+  pname = "qlcplus";
+  version = "4.12.2";
+
+  src = fetchFromGitHub {
+    owner = "mcallegari";
+    repo = "qlcplus";
+    rev = "QLC+_${version}";
+    sha256 = "1j0jhgql78p5ghcaz36l1k55447s5qiv396a448qic7xqpym2vl3";
+  };
+
+  nativeBuildInputs = [ qmake pkgconfig ];
+  buildInputs = [
+    udev qtmultimedia qtscript alsaLib ola libftdi1 libusb-compat-0_1 libsndfile libmad
+  ];
+
+  qmakeFlags = [ "INSTALLROOT=$(out)" ];
+
+  postPatch = ''
+    patchShebangs .
+    sed -i -e '/unix:!macx:INSTALLROOT += \/usr/d' \
+            -e "s@\$\$LIBSDIR/qt4/plugins@''${qtPluginPrefix}@" \
+            -e "s@/etc/udev/rules.d@''${out}/lib/udev/rules.d@" \
+      variables.pri
+  '';
+
+  enableParallelBuilding = true;
+
+  postInstall = ''
+    ln -sf $out/lib/*/libqlcplus* $out/lib
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A free and cross-platform software to control DMX or analog lighting systems like moving heads, dimmers, scanners etc.";
+    maintainers = [ maintainers.globin ];
+    license = licenses.asl20;
+    platforms = platforms.all;
+    homepage = "https://www.qlcplus.org/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/qmapshack/default.nix b/nixpkgs/pkgs/applications/misc/qmapshack/default.nix
new file mode 100644
index 000000000000..1a8758955cef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qmapshack/default.nix
@@ -0,0 +1,43 @@
+{ mkDerivation, lib, fetchFromGitHub, cmake
+, qtscript, qtwebengine, gdal, proj, routino, quazip }:
+
+mkDerivation rec {
+  pname = "qmapshack";
+  version = "1.15.0";
+
+  src = fetchFromGitHub {
+    owner = "Maproom";
+    repo = pname;
+    rev = "V_${version}";
+    sha256 = "157bssrbwcc1w58b0v60jb3wrjf2ig4z6z6crjnpvflkqj5p8vwy";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ qtscript qtwebengine gdal proj routino quazip ];
+
+  cmakeFlags = [
+    "-DROUTINO_XML_PATH=${routino}/share/routino"
+    "-DQUAZIP_INCLUDE_DIR=${quazip}/include/quazip5"
+    "-DLIBQUAZIP_LIBRARY=${quazip}/lib/libquazip.so"
+  ];
+
+  enableParallelBuilding = true;
+
+  patches = [
+    "${src}/FindPROJ4.patch"
+    "${src}/FindQuaZip5.patch"
+  ];
+
+  qtWrapperArgs = [
+    "--suffix PATH : ${lib.makeBinPath [ gdal routino ]}"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/Maproom/qmapshack";
+    description = "Consumer grade GIS software";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ dotlambda sikmir ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/qmetro/default.nix b/nixpkgs/pkgs/applications/misc/qmetro/default.nix
new file mode 100644
index 000000000000..623bd050dc9b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qmetro/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, qmake4Hook, unzip, qt4 }:
+
+stdenv.mkDerivation rec {
+  name = "${project}-${version}";
+  project = "qmetro";
+  version = "0.7.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${project}/${name}.zip";
+    sha256 = "1zdj87lzcr43gr2h05g17z31pd22n5kxdwbvx7rx656rmhv0sjq5";
+  };
+
+  nativeBuildInputs = [ qmake4Hook unzip ];
+
+  buildInputs = [ qt4 ];
+
+  postPatch = ''
+    sed -e 's#Exec=/usr/bin/qmetro#Exec=qmetro#' -i rc/qmetro.desktop
+    echo 'LIBS += -lz' >> qmetro.pro
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://sourceforge.net/projects/qmetro/";
+    description = "Worldwide transit maps viewer";
+    license = licenses.gpl3;
+
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/qolibri/default.nix b/nixpkgs/pkgs/applications/misc/qolibri/default.nix
new file mode 100644
index 000000000000..913d2bc3c6ba
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qolibri/default.nix
@@ -0,0 +1,29 @@
+{ mkDerivation, lib, fetchFromGitHub, pkgconfig, cmake, libeb, lzo
+, qtbase, qtmultimedia, qttools, qtwebengine }:
+
+mkDerivation {
+  pname = "qolibri";
+  version = "2019-07-22";
+
+  src = fetchFromGitHub {
+    owner = "ludios";
+    repo = "qolibri";
+    rev = "b58f9838d39300cba444eba725a369181c5d746b";
+    sha256 = "0kcc6dvbcmq9y7hk8mp23pydiaqz6f0clg64d1f2y04ppphmah42";
+  };
+
+  nativeBuildInputs = [ pkgconfig cmake ];
+  buildInputs = [
+    libeb lzo qtbase qtmultimedia qttools qtwebengine
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    homepage = "https://github.com/ludios/qolibri";
+    description = "EPWING reader for viewing Japanese dictionaries";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ];
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/qpdfview/default.nix b/nixpkgs/pkgs/applications/misc/qpdfview/default.nix
new file mode 100644
index 000000000000..3e55215f4733
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qpdfview/default.nix
@@ -0,0 +1,49 @@
+{stdenv, mkDerivation, fetchurl, qmake, qtbase, qtsvg, pkgconfig, poppler, djvulibre, libspectre, cups
+, file, ghostscript
+}:
+let
+  s = # Generated upstream information
+  rec {
+    baseName="qpdfview";
+    version = "0.4.18";
+    name="${baseName}-${version}";
+    url="https://launchpad.net/qpdfview/trunk/${version}/+download/qpdfview-${version}.tar.gz";
+    sha256 = "0v1rl126hvblajnph2hkansgi0s8vjdc5yxrm4y3faa0lxzjwr6c";
+  };
+  nativeBuildInputs = [ qmake pkgconfig ];
+  buildInputs = [
+    qtbase qtsvg poppler djvulibre libspectre cups file ghostscript
+  ];
+in
+mkDerivation {
+  pname = s.baseName;
+  inherit (s) version;
+  inherit nativeBuildInputs buildInputs;
+  src = fetchurl {
+    inherit (s) url sha256;
+  };
+
+  preConfigure = ''
+    qmakeFlags+=(*.pro)
+  '';
+
+  qmakeFlags = [
+    "TARGET_INSTALL_PATH=${placeholder "out"}/bin"
+    "PLUGIN_INSTALL_PATH=${placeholder "out"}/lib/qpdfview"
+    "DATA_INSTALL_PATH=${placeholder "out"}/share/qpdfview"
+    "MANUAL_INSTALL_PATH=${placeholder "out"}/share/man/man1"
+    "ICON_INSTALL_PATH=${placeholder "out"}/share/icons/hicolor/scalable/apps"
+    "LAUNCHER_INSTALL_PATH=${placeholder "out"}/share/applications"
+    "APPDATA_INSTALL_PATH=${placeholder "out"}/share/appdata"
+  ];
+
+  meta = {
+    inherit (s) version;
+    description = "A tabbed document viewer";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    homepage = "https://launchpad.net/qpdfview";
+    updateWalker = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/qsudo/default.nix b/nixpkgs/pkgs/applications/misc/qsudo/default.nix
new file mode 100644
index 000000000000..63d97b3001c4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qsudo/default.nix
@@ -0,0 +1,42 @@
+{ stdenv
+, mkDerivation
+, fetchFromGitHub
+, qmake
+, qtbase
+, sudo
+}:
+
+mkDerivation rec {
+  pname = "qsudo";
+  version = "2020.03.27";
+
+  src = fetchFromGitHub {
+    owner = "project-trident";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "06kg057vwkvafnk69m9rar4wih3vq4h36wbzwbfc2kndsnn47lfl";
+  };
+
+  sourceRoot = "source/src-qt5";
+
+  nativeBuildInputs = [
+    qmake
+  ];
+
+  buildInputs = [
+    qtbase
+    sudo
+  ];
+
+  postPatch = ''
+    substituteInPlace qsudo.pro --replace /usr/bin $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Graphical sudo utility from Project Trident";
+    homepage = "https://github.com/project-trident/qsudo";
+    license = licenses.bsd2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/qsyncthingtray/default.nix b/nixpkgs/pkgs/applications/misc/qsyncthingtray/default.nix
new file mode 100644
index 000000000000..70d9f600fa03
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qsyncthingtray/default.nix
@@ -0,0 +1,74 @@
+{ mkDerivation, stdenv, lib, fetchFromGitHub, fetchpatch, procps
+, qtbase, qtwebengine, qtwebkit
+, cmake
+, syncthing
+, preferQWebView ? false
+, preferNative   ? true }:
+
+mkDerivation rec {
+  version = "0.5.8";
+  pname = "qsyncthingtray";
+
+  src = fetchFromGitHub {
+    owner  = "sieren";
+    repo   = "QSyncthingTray";
+    rev    = version;
+    sha256 = "1n9g4j7qznvg9zl6x163pi9f7wsc3x6q76i33psnm7x2v1i22x5w";
+  };
+
+  buildInputs = [ qtbase qtwebengine ] ++ lib.optional preferQWebView qtwebkit;
+
+  nativeBuildInputs = [ cmake ];
+
+  cmakeFlags = [ ]
+    ++ lib.optional preferQWebView "-DQST_BUILD_WEBKIT=1"
+    ++ lib.optional preferNative   "-DQST_BUILD_NATIVEBROWSER=1";
+
+  patches = [ (fetchpatch {
+    name = "support_native_browser.patch";
+    url = "https://patch-diff.githubusercontent.com/raw/sieren/QSyncthingTray/pull/225.patch";
+    sha256 = "0w665xdlsbjxs977pdpzaclxpswf7xys1q3rxriz181lhk2y66yy";
+  }) ] ++ lib.optional (!preferQWebView && !preferNative) ./qsyncthingtray-0.5.8-qt-5.6.3.patch;
+
+  postPatch = ''
+    ${lib.optionalString stdenv.isLinux ''
+      substituteInPlace includes/platforms/linux/posixUtils.hpp \
+        --replace '"/usr/local/bin/syncthing"'         '"${syncthing}/bin/syncthing"' \
+        --replace '"pgrep -x'                          '"${procps}/bin/pgrep -x'
+    ''}
+
+    ${lib.optionalString stdenv.isDarwin ''
+      substituteInPlace includes/platforms/darwin/macUtils.hpp \
+        --replace '"/usr/local/bin/syncthing"'         '"${syncthing}/bin/syncthing"'
+    ''}
+  '';
+
+  installPhase = let qst = "qsyncthingtray"; in ''
+    runHook preInstall
+
+    mkdir -p $out/bin
+    install -m755 QSyncthingTray $out/bin/${qst}
+    ln -s $out/bin/${qst} $out/bin/QSyncthingTray
+
+    runHook postInstall
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    homepage = "https://github.com/sieren/QSyncthingTray/";
+    description = "A Traybar Application for Syncthing written in C++";
+    longDescription = ''
+        A cross-platform status bar for Syncthing.
+        Currently supports macOS, Windows and Linux.
+        Written in C++ with Qt.
+    '';
+    license = licenses.lgpl3;
+    maintainers = with maintainers; [ zraexy peterhoeg ];
+    platforms = platforms.all;
+    # 0.5.7 segfaults when opening the main panel with qt 5.7 and fails to compile with qt 5.8
+    # but qt > 5.6 works when only using the native browser
+    # https://github.com/sieren/QSyncthingTray/issues/223
+    broken = (builtins.compareVersions qtbase.version "5.7.0" >= 0 && !preferNative);
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/qsyncthingtray/qsyncthingtray-0.5.8-qt-5.6.3.patch b/nixpkgs/pkgs/applications/misc/qsyncthingtray/qsyncthingtray-0.5.8-qt-5.6.3.patch
new file mode 100644
index 000000000000..424bbe171779
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qsyncthingtray/qsyncthingtray-0.5.8-qt-5.6.3.patch
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b778d09..247b606 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -12,7 +12,7 @@ set(CMAKE_AUTOMOC ON)
+ 
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+ 
+-find_package(Qt5 5.6 COMPONENTS Widgets Network PrintSupport)
++find_package(Qt5 5.6 COMPONENTS Widgets Network PrintSupport WebEngineWidgets)
+ if (NOT Qt5_FOUND)
+   message(FATAL_ERROR
+     "Some components of Qt5 not found (see above messages for details. "
diff --git a/nixpkgs/pkgs/applications/misc/qt-box-editor/default.nix b/nixpkgs/pkgs/applications/misc/qt-box-editor/default.nix
new file mode 100644
index 000000000000..852f0d30f9a5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qt-box-editor/default.nix
@@ -0,0 +1,39 @@
+{ mkDerivation
+, stdenv
+, fetchFromGitHub
+, qtbase
+, qtsvg
+, qmake
+, leptonica
+, tesseract
+}:
+
+mkDerivation {
+  pname = "qt-box-editor";
+  version = "unstable-2019-07-12";
+
+  src = fetchFromGitHub {
+    owner = "zdenop";
+    repo = "qt-box-editor";
+    rev = "75a68b466868ba41ba2886caa796057403fe1901";
+    sha256 = "0zwsyy7cnbhy5aazwlkhd9y8bnzlgy1gffqa46abajn4809b95k3";
+  };
+
+  buildInputs = [ qtbase qtsvg leptonica tesseract ];
+
+  nativeBuildInputs = [ qmake ];
+
+  # remove with next release
+  # https://github.com/zdenop/qt-box-editor/pull/78
+  postPatch = ''
+    printf "INSTALLS += target\ntarget.path = $out/bin" >>  qt-box-editor.pro
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Editor of tesseract-ocr box files";
+    homepage = "https://github.com/zdenop/qt-box-editor";
+    license = licenses.asl20;
+    maintainers = [ maintainers.costrouc ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/qtbitcointrader/default.nix b/nixpkgs/pkgs/applications/misc/qtbitcointrader/default.nix
new file mode 100644
index 000000000000..c5dfdf95fb5e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qtbitcointrader/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchzip, qt5, mkDerivation }:
+
+let
+  version = "1.40.43";
+in
+mkDerivation {
+  pname = "qtbitcointrader";
+  inherit version;
+
+  src = fetchzip {
+    url = "https://github.com/JulyIGHOR/QtBitcoinTrader/archive/v${version}.tar.gz";
+    sha256 = "07xbsi78cykpyxidp1bw5ahmymdrs2afg7b0lla7dfhagz18lzxv";
+  };
+
+  buildInputs = [ qt5.qtbase qt5.qtmultimedia qt5.qtscript ];
+
+  postUnpack = "sourceRoot=\${sourceRoot}/src";
+
+  configurePhase = ''
+    runHook preConfigure
+    qmake $qmakeFlags \
+      PREFIX=$out \
+      DESKTOPDIR=$out/share/applications \
+      ICONDIR=$out/share/pixmaps \
+      QtBitcoinTrader_Desktop.pro
+    runHook postConfigure
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Bitcoin trading client";
+    homepage = "https://centrabit.com/";
+    license = licenses.gpl3;
+    platforms = qt5.qtbase.meta.platforms;
+    maintainers = [ maintainers.ehmry ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/qtpass/default.nix b/nixpkgs/pkgs/applications/misc/qtpass/default.nix
new file mode 100644
index 000000000000..faa199147490
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qtpass/default.nix
@@ -0,0 +1,61 @@
+{ lib, mkDerivation, fetchFromGitHub
+, git, gnupg, pass, pwgen, qrencode
+, fetchpatch
+, qtbase, qtsvg, qttools, qmake
+}:
+
+mkDerivation rec {
+  pname = "qtpass";
+  version = "1.3.2";
+
+  src = fetchFromGitHub {
+    owner  = "IJHack";
+    repo   = "QtPass";
+    rev    = "v${version}";
+    sha256 = "0748hjvhjrybi33ci3c8hcr74k9pdrf5jv8npf9hrsrmdyy1kr9x";
+  };
+
+  postPatch = ''
+    substituteInPlace src/qtpass.cpp \
+      --replace "/usr/bin/qrencode" "${qrencode}/bin/qrencode"
+  '';
+
+  buildInputs = [ git gnupg pass qtbase qtsvg ];
+
+  nativeBuildInputs = [ qmake qttools ];
+
+  enableParallelBuilding = true;
+
+  patches = [
+    # Fix path to pass-otp plugin `/usr/lib/password-store/extensions/otp.bash` being hardcoded.
+    # TODO: Remove when https://github.com/IJHack/QtPass/pull/499 is merged and available.
+    (fetchpatch {
+      name = "qtpass-Dont-hardcode-pass-otp-usr-lib-path.patch";
+      url = "https://github.com/IJHack/QtPass/commit/2ca9f0ec5a8d709c97a2433c5cd814040c82d4f3.patch";
+      sha256 = "0ljlvqxvarrz2a4j71i66aflrxi84zirb6cg9kvygnvhvm1zbc7d";
+    })
+  ];
+
+  qmakeFlags = [
+    # setup hook only sets QMAKE_LRELEASE, set QMAKE_LUPDATE too:
+    "QMAKE_LUPDATE=${qttools.dev}/bin/lupdate"
+  ];
+
+  qtWrapperArgs = [
+    "--suffix PATH : ${lib.makeBinPath [ git gnupg pass pwgen ]}"
+  ];
+
+  postInstall = ''
+    install -D qtpass.desktop -t $out/share/applications
+    install -D artwork/icon.svg $out/share/icons/hicolor/scalable/apps/qtpass-icon.svg
+    install -D qtpass.1 -t $out/share/man/man1
+  '';
+
+  meta = with lib; {
+    description = "A multi-platform GUI for pass, the standard unix password manager";
+    homepage = "https://qtpass.org";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.hrdinka ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/quicksynergy/default.nix b/nixpkgs/pkgs/applications/misc/quicksynergy/default.nix
new file mode 100644
index 000000000000..1956f0ad41d5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/quicksynergy/default.nix
@@ -0,0 +1,37 @@
+{stdenv, fetchurl, pkgconfig, gtk2, synergy}:
+
+stdenv.mkDerivation rec {
+  pname = "quicksynergy";
+  version = "0.9.0";
+  src = fetchurl {
+    url = "mirror://sourceforge/project/quicksynergy/Linux/${version}/quicksynergy-${version}.tar.gz";
+    sha256 = "1pi8503bg8q1psw50y6d780i33nnvfjqiy9vnr3v52pdcfip8pix";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    gtk2
+    synergy
+  ];
+  preBuild = "
+    sed -i 's@/usr/bin@${synergy.out}/bin@' src/synergy_config.c
+  ";
+  meta = {
+    description = "GUI application to share mouse and keyboard between computers";
+    longDescription = "
+      QuickSynergy is a graphical interface (GUI) for easily configuring
+      Synergy2, an application that allows the user to share his mouse and
+      keyboard between two or more computers.
+
+      Without the need for any external hardware, Synergy2 uses the TCP-IP
+      protocol to share the resources, even between machines with diferent
+      operating systems, such as Mac OS, Linux and Windows.
+
+      Remember to open port 24800 (used by synergys program) if you want to
+      host mouse and keyboard.";
+    homepage = "https://sourceforge.net/projects/quicksynergy/";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.spinus ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/raiseorlaunch/default.nix b/nixpkgs/pkgs/applications/misc/raiseorlaunch/default.nix
new file mode 100644
index 000000000000..6bbbc671bf86
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/raiseorlaunch/default.nix
@@ -0,0 +1,23 @@
+{ lib, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "raiseorlaunch";
+  version = "2.3.3";
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "3d694015d020a888b42564d56559213b94981ca2b32b952a49b2de4d029d2e59";
+  };
+
+  nativeBuildInputs = [ python3Packages.setuptools_scm ];
+  checkInputs = [ python3Packages.pytest ];
+  pythonPath = with python3Packages; [ i3ipc ];
+
+  meta = with lib; {
+    maintainers = with maintainers; [ winpat ];
+    description = "A run-or-raise-application-launcher for i3 window manager";
+    homepage = "https://github.com/open-dynaMIX/raiseorlaunch";
+    license = licenses.mit;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ranger/default.nix b/nixpkgs/pkgs/applications/misc/ranger/default.nix
new file mode 100644
index 000000000000..68ddef656972
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ranger/default.nix
@@ -0,0 +1,64 @@
+{ stdenv, lib, fetchFromGitHub, python3Packages, file, less, highlight
+, imagePreviewSupport ? true, w3m ? null}:
+
+with stdenv.lib;
+
+assert imagePreviewSupport -> w3m != null;
+
+python3Packages.buildPythonApplication rec {
+  name = "ranger-${version}";
+  version = "1.9.3";
+
+  src = fetchFromGitHub {
+    owner = "ranger";
+    repo = "ranger";
+    rev = "v${version}";
+    sha256= "1rygfryczanvqxn43lmlkgs04sbqznbvbb9hlbm3h5qgdcl0xlw8";
+  };
+
+  LC_ALL = "en_US.UTF-8";
+
+  checkInputs = with python3Packages; [ pytest ];
+  propagatedBuildInputs = [ file ]
+    ++ lib.optionals (imagePreviewSupport) [ python3Packages.pillow ];
+
+  checkPhase = ''
+    py.test tests
+  '';
+
+  preConfigure = ''
+    ${lib.optionalString (highlight != null) ''
+      sed -i -e 's|^\s*highlight\b|${highlight}/bin/highlight|' \
+        ranger/data/scope.sh
+    ''}
+
+    substituteInPlace ranger/data/scope.sh \
+      --replace "/bin/echo" "echo"
+
+    substituteInPlace ranger/__init__.py \
+      --replace "DEFAULT_PAGER = 'less'" "DEFAULT_PAGER = '${stdenv.lib.getBin less}/bin/less'"
+
+    for i in ranger/config/rc.conf doc/config/rc.conf ; do
+      substituteInPlace $i --replace /usr/share $out/share
+    done
+
+    # give file previews out of the box
+    substituteInPlace ranger/config/rc.conf \
+      --replace "#set preview_script ~/.config/ranger/scope.sh" "set preview_script $out/share/doc/ranger/config/scope.sh"
+  '' + optionalString imagePreviewSupport ''
+    substituteInPlace ranger/ext/img_display.py \
+      --replace /usr/lib/w3m ${w3m}/libexec/w3m
+
+    # give image previews out of the box when building with w3m
+    substituteInPlace ranger/config/rc.conf \
+      --replace "set preview_images false" "set preview_images true"
+  '';
+
+  meta =  with lib; {
+    description = "File manager with minimalistic curses interface";
+    homepage = "http://ranger.github.io/";
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.toonn maintainers.magnetophon ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/razergenie/default.nix b/nixpkgs/pkgs/applications/misc/razergenie/default.nix
new file mode 100644
index 000000000000..9042ab38e758
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/razergenie/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, lib, meson, ninja, pkgconfig, qtbase, qttools
+, wrapQtAppsHook
+, enableExperimental ? false
+, includeMatrixDiscovery ? false
+}:
+
+let
+  version = "0.8.1";
+  pname = "razergenie";
+
+in stdenv.mkDerivation {
+  inherit pname version;
+
+  src = fetchFromGitHub {
+    owner = "z3ntu";
+    repo = "RazerGenie";
+    rev = "v${version}";
+    sha256 = "1ggxnaidxbbpkv1h3zwwyci6886sssgslk5adbikbhz9kc9qg239";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig meson ninja wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    qtbase qttools
+  ];
+
+  mesonFlags = [
+    "-Denable_experimental=${if enableExperimental then "true" else "false"}"
+    "-Dinclude_matrix_discovery=${if includeMatrixDiscovery then "true" else "false"}"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/z3ntu/RazerGenie";
+    description = "Qt application for configuring your Razer devices under GNU/Linux";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ f4814n ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/redis-desktop-manager/default.nix b/nixpkgs/pkgs/applications/misc/redis-desktop-manager/default.nix
new file mode 100644
index 000000000000..ec40347cbcb3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/redis-desktop-manager/default.nix
@@ -0,0 +1,83 @@
+{ stdenv, lib, fetchFromGitHub, fetchFromGitiles, pkgconfig, libssh2
+, qtbase, qtdeclarative, qtgraphicaleffects, qtimageformats, qtquickcontrols
+, qtsvg, qttools, qtquick1, qtcharts
+, qmake
+}:
+
+let
+  breakpad_lss = fetchFromGitiles {
+    url = "https://chromium.googlesource.com/linux-syscall-support";
+    rev = "08056836f2b4a5747daff75435d10d649bed22f6";
+    sha256 = "1ryshs2nyxwa0kn3rlbnd5b3fhna9vqm560yviddcfgdm2jyg0hz";
+  };
+
+in
+
+stdenv.mkDerivation rec {
+  pname = "redis-desktop-manager";
+  version = "0.9.1";
+
+  src = fetchFromGitHub {
+    owner = "uglide";
+    repo = "RedisDesktopManager";
+    fetchSubmodules = true;
+    rev = version;
+    sha256 = "0yd4i944d4blw8jky0nxl7sfkkj975q4d328rdcbhizwvf6dx81f";
+  };
+
+  nativeBuildInputs = [ pkgconfig qmake ];
+  buildInputs = [
+    libssh2 qtbase qtdeclarative qtgraphicaleffects qtimageformats
+    qtquick1 qtquickcontrols qtsvg qttools qtcharts
+  ];
+
+  dontUseQmakeConfigure = true;
+
+  NIX_CFLAGS_COMPILE = [ "-Wno-error=deprecated" ];
+
+  # Disable annoying update reminder
+  postPatch = ''
+    sed -i s/'^\s*initUpdater();'/'\/\/initUpdater():'/ src/app/app.cpp
+  '';
+
+  buildPhase = ''
+    srcdir=$PWD
+
+    cat <<EOF > src/version.h
+#ifndef RDM_VERSION
+    #define RDM_VERSION "${version}-120"
+#endif // !RDM_VERSION
+EOF
+
+    cd $srcdir/3rdparty/gbreakpad
+    cp -r ${breakpad_lss} src/third_party/lss
+    chmod +w -R src/third_party/lss
+    touch README
+
+    cd $srcdir/3rdparty/crashreporter
+    qmake CONFIG+=release DESTDIR="$srcdir/rdm/bin/linux/release" QMAKE_LFLAGS_RPATH=""
+    make
+
+    cd $srcdir/3rdparty/gbreakpad
+    ./configure
+    make
+
+    cd $srcdir/src
+    qmake
+    make
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    instdir="$srcdir/bin/linux/release"
+    cp $instdir/rdm $out/bin
+  '';
+
+  meta = with lib; {
+    description = "Cross-platform open source Redis DB management tool";
+    homepage = "https://redisdesktop.com/";
+    license = licenses.lgpl21;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ cstrahan ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/redshift-plasma-applet/default.nix b/nixpkgs/pkgs/applications/misc/redshift-plasma-applet/default.nix
new file mode 100644
index 000000000000..c14eee398cee
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/redshift-plasma-applet/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, cmake, extra-cmake-modules, plasma-framework, kwindowsystem, redshift, fetchFromGitHub, }:
+
+let version = "1.0.18"; in
+
+stdenv.mkDerivation {
+  pname = "redshift-plasma-applet";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "kotelnik";
+    repo = "plasma-applet-redshift-control";
+    rev = "v${version}";
+    sha256 = "122nnbafa596rxdxlfshxk45lzch8c9342bzj7kzrsjkjg0xr9pq";
+  };
+
+  patchPhase = ''
+    substituteInPlace package/contents/ui/main.qml \
+      --replace "redshiftCommand: 'redshift'" \
+                "redshiftCommand: '${redshift}/bin/redshift'" \
+      --replace "redshiftOneTimeCommand: 'redshift -O " \
+                "redshiftOneTimeCommand: '${redshift}/bin/redshift -O "
+
+    substituteInPlace package/contents/ui/config/ConfigAdvanced.qml \
+      --replace "'redshift -V'" \
+                "'${redshift}/bin/redshift -V'"
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    extra-cmake-modules
+  ];
+
+  buildInputs = [
+    plasma-framework
+    kwindowsystem
+  ];
+
+  meta = with stdenv.lib; {
+    description = "KDE Plasma 5 widget for controlling Redshift";
+    homepage = "https://github.com/kotelnik/plasma-applet-redshift-control";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ benley zraexy ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/redshift/575.patch b/nixpkgs/pkgs/applications/misc/redshift/575.patch
new file mode 100644
index 000000000000..d731d8ec43ad
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/redshift/575.patch
@@ -0,0 +1,51 @@
+From 467156efccc5e36a36bec8c0b64cc5a70f14d5ed Mon Sep 17 00:00:00 2001
+From: Yegor Timoshenko <yegortimoshenko@riseup.net>
+Date: Tue, 16 Jan 2018 11:43:46 +0000
+Subject: [PATCH] Fix Autoconf script
+
+gettext/intltool macros are not used correctly, see:
+https://bugs.launchpad.net/inkscape/+bug/1418943
+---
+ bootstrap    | 6 +-----
+ configure.ac | 5 +----
+ 2 files changed, 2 insertions(+), 9 deletions(-)
+
+diff --git a/bootstrap b/bootstrap
+index 0599cf5..40b1dca 100755
+--- a/bootstrap
++++ b/bootstrap
+@@ -1,7 +1,3 @@
+ #!/bin/sh
+ 
+-# change to root directory
+-cd $(dirname "$0")
+-
+-autopoint --force && \
+-	AUTOPOINT="intltoolize --automake --copy" autoreconf --force --install --verbose
++autoreconf --force --install && intltoolize
+diff --git a/configure.ac b/configure.ac
+index be0b51a..a2e7c42 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -17,6 +17,7 @@ AC_PROG_OBJC # For macOS support modules
+ AC_LANG([C])
+ 
+ AC_PROG_INTLTOOL([0.50])
++AC_SUBST(LIBINTL)
+ 
+ AC_CANONICAL_HOST
+ 
+@@ -51,10 +52,6 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [
+ ])
+ AC_LANG_POP([Objective C])
+ 
+-# Checks for libraries.
+-AM_GNU_GETTEXT_VERSION([0.17])
+-AM_GNU_GETTEXT([external])
+-
+ GETTEXT_PACKAGE=redshift
+ AC_SUBST(GETTEXT_PACKAGE)
+ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Package name for gettext])
+-- 
+2.15.1
+
diff --git a/nixpkgs/pkgs/applications/misc/redshift/default.nix b/nixpkgs/pkgs/applications/misc/redshift/default.nix
new file mode 100644
index 000000000000..05dc4c429b61
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/redshift/default.nix
@@ -0,0 +1,121 @@
+{ stdenv, fetchFromGitHub, autoconf, automake, gettext, intltool
+, libtool, pkgconfig, wrapGAppsHook, wrapPython, gobject-introspection
+, gtk3, python, pygobject3, pyxdg
+
+, withQuartz ? stdenv.isDarwin, ApplicationServices
+, withRandr ? stdenv.isLinux, libxcb
+, withDrm ? stdenv.isLinux, libdrm
+
+, withGeolocation ? true
+, withCoreLocation ? withGeolocation && stdenv.isDarwin, CoreLocation, Foundation, Cocoa
+, withGeoclue ? withGeolocation && stdenv.isLinux, geoclue
+, withAppIndicator ? true, libappindicator
+}:
+
+let
+  mkRedshift =
+    { pname, version, src, meta }:
+    stdenv.mkDerivation rec {
+      inherit pname version src meta;
+
+      patches = [
+        # https://github.com/jonls/redshift/pull/575
+        ./575.patch
+      ];
+
+      nativeBuildInputs = [
+        autoconf
+        automake
+        gettext
+        intltool
+        libtool
+        pkgconfig
+        wrapGAppsHook
+        wrapPython
+      ];
+
+      configureFlags = [
+        "--enable-randr=${if withRandr then "yes" else "no"}"
+        "--enable-geoclue2=${if withGeoclue then "yes" else "no"}"
+        "--enable-drm=${if withDrm then "yes" else "no"}"
+        "--enable-quartz=${if withQuartz then "yes" else "no"}"
+        "--enable-corelocation=${if withCoreLocation then "yes" else "no"}"
+      ];
+
+      buildInputs = [
+        gobject-introspection
+        gtk3
+        python
+      ] ++ stdenv.lib.optional  withRandr        libxcb
+        ++ stdenv.lib.optional  withGeoclue      geoclue
+        ++ stdenv.lib.optional  withDrm          libdrm
+        ++ stdenv.lib.optional  withQuartz       ApplicationServices
+        ++ stdenv.lib.optionals withCoreLocation [ CoreLocation Foundation Cocoa ]
+        ++ stdenv.lib.optional  withAppIndicator libappindicator
+        ;
+
+      pythonPath = [ pygobject3 pyxdg ];
+
+      preConfigure = "./bootstrap";
+
+      postFixup = "wrapPythonPrograms";
+
+      # the geoclue agent may inspect these paths and expect them to be
+      # valid without having the correct $PATH set
+      postInstall = ''
+        substituteInPlace $out/share/applications/redshift.desktop \
+          --replace 'Exec=redshift' "Exec=$out/bin/redshift"
+        substituteInPlace $out/share/applications/redshift.desktop \
+          --replace 'Exec=redshift-gtk' "Exec=$out/bin/redshift-gtk"
+      '';
+
+      enableParallelBuilding = true;
+    };
+in
+rec {
+  redshift = mkRedshift rec {
+    pname = "redshift";
+    version = "1.12";
+
+    src = fetchFromGitHub {
+      owner = "jonls";
+      repo = "redshift";
+      rev = "v${version}";
+      sha256 = "12cb4gaqkybp4bkkns8pam378izr2mwhr2iy04wkprs2v92j7bz6";
+    };
+
+    meta = with stdenv.lib; {
+      description = "Screen color temperature manager";
+      longDescription = ''
+        Redshift adjusts the color temperature according to the position
+        of the sun. A different color temperature is set during night and
+        daytime. During twilight and early morning, the color temperature
+        transitions smoothly from night to daytime temperature to allow
+        your eyes to slowly adapt. At night the color temperature should
+        be set to match the lamps in your room.
+      '';
+      license = licenses.gpl3Plus;
+      homepage = "http://jonls.dk/redshift";
+      platforms = platforms.unix;
+      maintainers = with maintainers; [ yegortimoshenko globin ];
+    };
+  };
+
+  redshift-wlr = mkRedshift {
+    pname = "redshift-wlr";
+    # upstream rebases so this is the push date
+    version = "2019-08-24";
+
+    src = fetchFromGitHub {
+      owner = "minus7";
+      repo = "redshift";
+      rev = "7da875d34854a6a34612d5ce4bd8718c32bec804";
+      sha256 = "0rs9bxxrw4wscf4a8yl776a8g880m5gcm75q06yx2cn3lw2b7v22";
+    };
+
+    meta = redshift.meta // {
+      description = redshift.meta.description + "(with wlroots patches)";
+      homepage = "https://github.com/minus7/redshift";
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/regextester/default.nix b/nixpkgs/pkgs/applications/misc/regextester/default.nix
new file mode 100644
index 000000000000..22f46eed7df4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/regextester/default.nix
@@ -0,0 +1,59 @@
+{ stdenv
+, fetchFromGitHub
+, vala
+, gettext
+, libxml2
+, pkgconfig
+, glib
+, gtk3
+, gnome3
+, meson
+, ninja
+, gobject-introspection
+, gsettings-desktop-schemas
+, pantheon
+, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "regextester";
+  version = "1.0.1";
+
+  src = fetchFromGitHub {
+    owner = "artemanufrij";
+    repo = "regextester";
+    rev = version;
+    sha256 = "1xwwv1hccni1mrbl58f7ly4qfq6738vn24bcbl2q346633cd7kx3";
+  };
+
+  nativeBuildInputs = [
+    vala
+    gettext
+    gobject-introspection
+    libxml2
+    meson
+    ninja
+    pkgconfig
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    pantheon.elementary-icon-theme
+    pantheon.granite
+    glib
+    gnome3.libgee
+    gsettings-desktop-schemas
+    gtk3
+  ];
+
+  postInstall = ''
+    ${glib.dev}/bin/glib-compile-schemas $out/share/glib-2.0/schemas
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A desktop application to test regular expressions interactively";
+    homepage = "https://github.com/artemanufrij/regextester";
+    maintainers = with maintainers; [ samdroid-apps ];
+    platforms = platforms.linux;
+    license = licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/remarkable/remarkable-mouse/default.nix b/nixpkgs/pkgs/applications/misc/remarkable/remarkable-mouse/default.nix
new file mode 100644
index 000000000000..8d668f7a38d1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/remarkable/remarkable-mouse/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonApplication, fetchPypi, python3Packages }:
+
+buildPythonApplication rec {
+  pname = "remarkable-mouse";
+  version = "5.2.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0k2wjfcgnvb8yqn4c4ddfyyhrvl6hj61kn1ddnyp6ay9vklnw160";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ screeninfo paramiko pynput libevdev ];
+
+  meta = with stdenv.lib; {
+    description = "A program to use a reMarkable as a graphics tablet";
+    homepage = "https://github.com/evidlo/remarkable_mouse";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.nickhu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/remarkable/rmapi/default.nix b/nixpkgs/pkgs/applications/misc/remarkable/rmapi/default.nix
new file mode 100644
index 000000000000..0fe0e03060a8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/remarkable/rmapi/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "rmapi";
+  version = "0.0.11";
+
+  src = fetchFromGitHub {
+    owner = "juruen";
+    repo = "rmapi";
+    rev = "v${version}";
+    sha256 = "0zks1pcj2s2pqkmw0hhm41vgdhfgj2r6dmvpsagbmf64578ww349";
+  };
+
+  vendorSha256 = "077s13pcql5w2m6wzls1q06r7p501kazbwzxgfh6akwza15kb4is";
+
+  meta = with stdenv.lib; {
+    description = "A Go app that allows access to the ReMarkable Cloud API programmatically";
+    homepage = "https://github.com/juruen/rmapi";
+    changelog = "https://github.com/juruen/rmapi/blob/v${version}/CHANGELOG.md";
+    license = licenses.agpl3;
+    maintainers = [ maintainers.nickhu ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rescuetime/default.nix b/nixpkgs/pkgs/applications/misc/rescuetime/default.nix
new file mode 100644
index 000000000000..9784e24187bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rescuetime/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, lib, fetchurl, dpkg, patchelf, qt5, libXtst, libXext, libX11, mkDerivation, makeWrapper, libXScrnSaver }:
+
+let
+  src =
+    if stdenv.hostPlatform.system == "i686-linux" then fetchurl {
+      name = "rescuetime-installer.deb";
+      url = "https://www.rescuetime.com/installers/rescuetime_current_i386.deb";
+      sha256 = "1yzbs2lg04bq0clkr6gfkx3j6wrahpnxqfiq4askk9k76y4ncd4m";
+    } else fetchurl {
+      name = "rescuetime-installer.deb";
+      url = "https://www.rescuetime.com/installers/rescuetime_current_amd64.deb";
+      sha256 = "1njxsh601d0p6n0hxv44gcg8gd43xwym83xwqba26vj6xw82bknv";
+    };
+in mkDerivation {
+  # https://www.rescuetime.com/updates/linux_release_notes.html
+  name = "rescuetime-2.15.0.1";
+  inherit src;
+  nativeBuildInputs = [ dpkg ];
+  # avoid https://github.com/NixOS/patchelf/issues/99
+  dontStrip = true;
+  unpackPhase = ''
+    mkdir pkg
+    dpkg-deb -x $src pkg
+    sourceRoot=pkg
+  '';
+  installPhase = ''
+    mkdir -p $out/bin
+    cp usr/bin/rescuetime $out/bin
+
+    ${patchelf}/bin/patchelf \
+      --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${lib.makeLibraryPath [ qt5.qtbase libXtst libXext libX11 libXScrnSaver ]}" \
+      $out/bin/rescuetime
+  '';
+  meta = with lib; {
+    description = "Helps you understand your daily habits so you can focus and be more productive";
+    homepage    = "https://www.rescuetime.com";
+    maintainers = with maintainers; [ cstrahan ];
+    license     = licenses.unfree;
+    platforms   = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/robo3t/default.nix b/nixpkgs/pkgs/applications/misc/robo3t/default.nix
new file mode 100644
index 000000000000..d1e31b4077f4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/robo3t/default.nix
@@ -0,0 +1,79 @@
+{ stdenv, fetchurl, zlib, glib, xorg, dbus, fontconfig, libGL,
+  freetype, xkeyboard_config, makeDesktopItem, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "robo3t";
+  version = "1.3.1";
+  rev = "7419c406";
+
+  src = fetchurl {
+    url = "https://download-test.robomongo.org/linux/robo3t-${version}-linux-x86_64-${rev}.tar.gz";
+    sha256 = "1mp5i8iahd4qkwgi5ix98hlg17ivw5da27n0drnr0wk458wn99hi";
+  };
+
+  icon = fetchurl {
+    url = "https://github.com/Studio3T/robomongo/raw/${version}/trash/install/linux/robomongo.png";
+    sha256 = "15li8536x600kkfkb3h6mw7y0f2ljkv951pc45dpiw036vldibv2";
+  };
+
+  desktopItem = makeDesktopItem {
+    name = "robo3t";
+    exec = "robo3t";
+    icon = icon;
+    comment = "Query GUI for mongodb";
+    desktopName = "Robo3T";
+    genericName = "MongoDB management tool";
+    categories = "Development;IDE;";
+  };
+
+  nativeBuildInputs = [makeWrapper];
+
+  ldLibraryPath = stdenv.lib.makeLibraryPath [
+    stdenv.cc.cc
+    zlib
+    glib
+    xorg.libXi
+    xorg.libxcb
+    xorg.libXrender
+    xorg.libX11
+    xorg.libSM
+    xorg.libICE
+    xorg.libXext
+    dbus
+    fontconfig
+    freetype
+    libGL
+  ];
+
+  installPhase = ''
+    BASEDIR=$out/lib/robo3t
+
+    mkdir -p $BASEDIR/bin
+    cp bin/* $BASEDIR/bin
+
+    mkdir -p $BASEDIR/lib
+    cp -r lib/* $BASEDIR/lib
+
+    mkdir -p $out/share/applications
+    cp $desktopItem/share/applications/* $out/share/applications
+
+    mkdir -p $out/share/icons
+    cp ${icon} $out/share/icons/robomongo.png
+
+    patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux-x86-64.so.2 $BASEDIR/bin/robo3t
+
+    mkdir $out/bin
+
+    makeWrapper $BASEDIR/bin/robo3t $out/bin/robo3t \
+      --suffix LD_LIBRARY_PATH : ${ldLibraryPath} \
+      --suffix QT_XKB_CONFIG_ROOT : ${xkeyboard_config}/share/X11/xkb
+  '';
+
+  meta = {
+    homepage = "https://robomongo.org/";
+    description = "Query GUI for mongodb";
+    platforms = [ "x86_64-linux" ];
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.eperuffo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/robomongo/default.nix b/nixpkgs/pkgs/applications/misc/robomongo/default.nix
new file mode 100644
index 000000000000..ef0a30472974
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/robomongo/default.nix
@@ -0,0 +1,77 @@
+{ stdenv, fetchurl, zlib, glib, xorg, dbus, fontconfig,
+  freetype, xkeyboard_config, makeDesktopItem, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "robomongo";
+  version = "0.9.0";
+
+  src = fetchurl {
+    url = "https://download.robomongo.org/${version}/linux/robomongo-${version}-linux-x86_64-0786489.tar.gz";
+    sha256 = "1q8ahdz3afcw002p8dl2pybzkq4srk6bnikrz216yx1gswivdcad";
+  };
+
+  icon = fetchurl {
+    url = "https://github.com/Studio3T/robomongo/raw/${version}/trash/install/linux/robomongo.png";
+    sha256 = "15li8536x600kkfkb3h6mw7y0f2ljkv951pc45dpiw036vldibv2";
+  };
+
+  desktopItem = makeDesktopItem {
+    name = "robomongo";
+    exec = "robomongo";
+    icon = icon;
+    comment = "Query GUI for mongodb";
+    desktopName = "Robomongo";
+    genericName = "MongoDB management tool";
+    categories = "Development;IDE;mongodb;";
+  };
+
+  nativeBuildInputs = [makeWrapper];
+
+  ldLibraryPath = stdenv.lib.makeLibraryPath [
+    stdenv.cc.cc
+    zlib
+    glib
+    xorg.libXi
+    xorg.libxcb
+    xorg.libXrender
+    xorg.libX11
+    xorg.libSM
+    xorg.libICE
+    xorg.libXext
+    dbus
+    fontconfig
+    freetype
+  ];
+
+  installPhase = ''
+    BASEDIR=$out/lib/robomongo
+
+    mkdir -p $BASEDIR/bin
+    cp bin/* $BASEDIR/bin
+
+    mkdir -p $BASEDIR/lib
+    cp -r lib/* $BASEDIR/lib
+
+    mkdir -p $out/share/applications
+    cp $desktopItem/share/applications/* $out/share/applications
+
+    mkdir -p $out/share/icons
+    cp ${icon} $out/share/icons/robomongo.png
+
+    patchelf --set-interpreter ${stdenv.glibc}/lib/ld-linux-x86-64.so.2 $BASEDIR/bin/robomongo
+
+    mkdir $out/bin
+
+    makeWrapper $BASEDIR/bin/robomongo $out/bin/robomongo \
+      --suffix LD_LIBRARY_PATH : ${ldLibraryPath} \
+      --suffix QT_XKB_CONFIG_ROOT : ${xkeyboard_config}/share/X11/xkb
+  '';
+
+  meta = {
+    homepage = "https://robomongo.org/";
+    description = "Query GUI for mongodb";
+    platforms = stdenv.lib.intersectLists stdenv.lib.platforms.linux stdenv.lib.platforms.x86_64;
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.eperuffo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rofi-emoji/0001-Patch-plugindir-to-output.patch b/nixpkgs/pkgs/applications/misc/rofi-emoji/0001-Patch-plugindir-to-output.patch
new file mode 100644
index 000000000000..9b9479b1b49a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rofi-emoji/0001-Patch-plugindir-to-output.patch
@@ -0,0 +1,25 @@
+From 695e7a441fc28b874e65917fe2c0059b5b8ca749 Mon Sep 17 00:00:00 2001
+From: Cole Helbling <cole.e.helbling@outlook.com>
+Date: Sat, 28 Mar 2020 23:46:03 -0700
+Subject: [PATCH] Patch plugindir to output
+
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 75e476f..cb1ddf7 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -55,7 +55,7 @@ PKG_CHECK_MODULES([glib],     [glib-2.0 >= 2.40 gio-unix-2.0 gmodule-2.0 ])
+ PKG_CHECK_MODULES([cairo],    [cairo])
+ PKG_CHECK_MODULES([rofi],     [rofi])
+ 
+-[rofi_PLUGIN_INSTALL_DIR]="`$PKG_CONFIG --variable=pluginsdir rofi`"
++[rofi_PLUGIN_INSTALL_DIR]="`echo $out/lib/rofi`"
+ AC_SUBST([rofi_PLUGIN_INSTALL_DIR])
+ 
+ LT_INIT([disable-static])
+-- 
+2.25.1
+
diff --git a/nixpkgs/pkgs/applications/misc/rofi-emoji/default.nix b/nixpkgs/pkgs/applications/misc/rofi-emoji/default.nix
new file mode 100644
index 000000000000..14742da35dae
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rofi-emoji/default.nix
@@ -0,0 +1,69 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, fetchpatch
+, substituteAll
+, makeWrapper
+
+, autoreconfHook
+, pkgconfig
+
+, cairo
+, glib
+, libnotify
+, rofi-unwrapped
+, wl-clipboard
+, xclip
+, xsel
+}:
+
+stdenv.mkDerivation rec {
+  pname = "rofi-emoji";
+  version = "2.1.2";
+
+  src = fetchFromGitHub {
+    owner = "Mange";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0knsvsdff2c7ww94120bq92735qrfriyd28mi0n72ccb2iikyi8b";
+  };
+
+  patches = [
+    # Look for plugin-related files in $out/lib/rofi
+    ./0001-Patch-plugindir-to-output.patch
+  ];
+
+  postPatch = ''
+    patchShebangs clipboard-adapter.sh
+  '';
+
+  postFixup = ''
+    chmod +x $out/share/rofi-emoji/clipboard-adapter.sh
+    wrapProgram $out/share/rofi-emoji/clipboard-adapter.sh \
+      --prefix PATH ":" ${lib.makeBinPath [ libnotify wl-clipboard xclip xsel ]}
+  '';
+
+  nativeBuildInputs = [
+    autoreconfHook
+    pkgconfig
+  ];
+
+  buildInputs = [
+    cairo
+    glib
+    libnotify
+    makeWrapper
+    rofi-unwrapped
+    wl-clipboard
+    xclip
+    xsel
+  ];
+
+  meta = with lib; {
+    description = "An emoji selector plugin for Rofi";
+    homepage = "https://github.com/Mange/rofi-emoji";
+    license = licenses.mit;
+    maintainers = with maintainers; [ cole-h ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rofi-file-browser/default.nix b/nixpkgs/pkgs/applications/misc/rofi-file-browser/default.nix
new file mode 100644
index 000000000000..10453b858491
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rofi-file-browser/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, rofi, gtk3 }:
+
+stdenv.mkDerivation rec {
+  pname = "rofi-file-browser-extended";
+  version = "1.1.1";
+
+  src = fetchFromGitHub {
+    owner = "marvinkreis";
+    repo = pname;
+    rev = version;
+    sha256 = "10wk5sif3bmvsgyk2gdy0qhpv1b37zgzf89n3h0yh7pg195fi2gn";
+    fetchSubmodules = true;
+  };
+
+  prePatch = ''
+    substituteInPlace ./CMakeLists.txt \
+      --replace ' ''${ROFI_PLUGINS_DIR}' " $out/lib/rofi" \
+      --replace "/usr/share/" "$out/share/"
+  '';
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [ rofi gtk3 ];
+
+  ROFI_PLUGINS_DIR = "$out/lib/rofi";
+
+  dontUseCmakeBuildDir = true;
+
+  meta = with stdenv.lib; {
+    description = "Use rofi to quickly open files";
+    homepage = "https://github.com/marvinkreis/rofi-file-browser-extended";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jluttine ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rofi-menugen/default.nix b/nixpkgs/pkgs/applications/misc/rofi-menugen/default.nix
new file mode 100644
index 000000000000..088ec29ae37b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rofi-menugen/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, rofi, gnused }:
+
+stdenv.mkDerivation rec {
+  rev = "168efd2608fdb88b1aff3e0244bda8402169f207";
+  name = "rofi-menugen-2015-12-28-${builtins.substring 0 7 rev}";
+  src = fetchFromGitHub {
+    owner = "octotep";
+    repo = "menugen";
+    inherit rev;
+    sha256 = "09fk9i6crw772qlc5zld35pcff1jq4jcag0syial2q000fbpjx5m";
+  };
+  patchPhase = ''
+    sed -i -e "s|menugenbase|$out/bin/rofi-menugenbase|" menugen
+    sed -i -e "s|rofi |${rofi}/bin/rofi |" menugen
+    sed -i -e "s|sed |${gnused}/bin/sed |" menugenbase
+  '';
+  installPhase = ''
+    mkdir -p $out/bin
+    cp menugen $out/bin/rofi-menugen
+    cp menugenbase $out/bin/rofi-menugenbase
+  '';
+  meta = with stdenv.lib; {
+    description = "Generates menu based applications using rofi";
+    homepage = "https://github.com/octotep/menugen";
+    maintainers = with maintainers; [ ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rofi/default.nix b/nixpkgs/pkgs/applications/misc/rofi/default.nix
new file mode 100644
index 000000000000..d8e600f60193
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rofi/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, lib, fetchurl
+, autoreconfHook, pkgconfig, libxkbcommon, pango, which, git
+, cairo, libxcb, xcbutil, xcbutilwm, xcbutilxrm, libstartup_notification
+, bison, flex, librsvg, check
+}:
+
+stdenv.mkDerivation rec {
+  pname = "rofi-unwrapped";
+  version = "1.5.4";
+
+  src = fetchurl {
+    url = "https://github.com/davatorium/rofi/releases/download/${version}/rofi-${version}.tar.gz";
+    sha256 = "1g1170zmh5v7slnm1sm2d08jgz6icikf8rm17apm1bjzzyw1lhk7";
+  };
+
+  preConfigure = ''
+    patchShebangs "script"
+    # root not present in build /etc/passwd
+    sed -i 's/~root/~nobody/g' test/helper-expand.c
+  '';
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ libxkbcommon pango cairo git bison flex librsvg check
+    libstartup_notification libxcb xcbutil xcbutilwm xcbutilxrm which
+  ];
+
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Window switcher, run dialog and dmenu replacement";
+    homepage = "https://github.com/davatorium/rofi";
+    license = licenses.mit;
+    maintainers = with maintainers; [ mbakke ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rofi/wrapper.nix b/nixpkgs/pkgs/applications/misc/rofi/wrapper.nix
new file mode 100644
index 000000000000..4e69f9cce145
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rofi/wrapper.nix
@@ -0,0 +1,33 @@
+{ symlinkJoin, lib, rofi-unwrapped, makeWrapper, hicolor-icon-theme, theme ? null, plugins ? [] }:
+
+symlinkJoin {
+  name = "rofi-${rofi-unwrapped.version}";
+
+  paths = [
+    rofi-unwrapped.out
+  ] ++ (lib.forEach plugins (p: p.out));
+
+  buildInputs = [ makeWrapper ];
+  preferLocalBuild = true;
+  passthru.unwrapped = rofi-unwrapped;
+  postBuild = ''
+    rm -rf $out/bin
+    mkdir $out/bin
+    ln -s ${rofi-unwrapped}/bin/* $out/bin
+
+    rm $out/bin/rofi
+    makeWrapper ${rofi-unwrapped}/bin/rofi $out/bin/rofi \
+      --prefix XDG_DATA_DIRS : ${hicolor-icon-theme}/share \
+      ${lib.optionalString (plugins != []) ''--prefix XDG_DATA_DIRS : ${lib.concatStringsSep ":" (lib.forEach plugins (p: "${p.out}/share"))}''} \
+      ${lib.optionalString (theme != null) ''--add-flags "-theme ${theme}"''} \
+      ${lib.optionalString (plugins != []) ''--add-flags "-plugin-path $out/lib/rofi"''}
+
+    rm $out/bin/rofi-theme-selector
+    makeWrapper ${rofi-unwrapped}/bin/rofi-theme-selector $out/bin/rofi-theme-selector \
+      --prefix XDG_DATA_DIRS : $out/share
+  '';
+
+  meta = rofi-unwrapped.meta // {
+    priority = (rofi-unwrapped.meta.priority or 0) - 1;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/roxterm/default.nix b/nixpkgs/pkgs/applications/misc/roxterm/default.nix
new file mode 100644
index 000000000000..d02296f0e16d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/roxterm/default.nix
@@ -0,0 +1,47 @@
+{ at-spi2-core, cmake, dbus, dbus-glib, docbook_xsl, epoxy, fetchpatch, fetchFromGitHub
+, glib, gtk3, harfbuzz, libXdmcp, libXtst, libpthreadstubs
+, libselinux, libsepol, libtasn1, libxkbcommon, libxslt, p11-kit, pcre2
+, pkgconfig, stdenv, utillinuxMinimal, vte, wrapGAppsHook, xmlto
+}:
+
+stdenv.mkDerivation rec {
+  pname = "roxterm";
+  version = "3.7.5";
+
+  src = fetchFromGitHub {
+    owner = "realh";
+    repo = "roxterm";
+    rev = version;
+    sha256 = "042hchvgk9jzz035zsgnfhh8105zvspbzz6b78waylsdlgqn0pp1";
+  };
+
+  patches = [
+    # This is the commit directly after v3.7.5.  It is needed to get roxterm to
+    # build correctly.  It can be removed when v3.7.6 (or v3.8.0) has been
+    # released.
+    (fetchpatch {
+      url = "https://github.com/realh/roxterm/commit/f7c38fd48bd1810e16d82794bdfb61a9760a2fe1.patch";
+      sha256 = "1v77b7ilgf8zy1npxxcyc06mq6lck6bi6lw4aksnq3mi61n5znmx";
+    })
+  ];
+
+  nativeBuildInputs = [ cmake pkgconfig wrapGAppsHook libxslt ];
+
+  buildInputs =
+    [ gtk3 dbus dbus-glib vte pcre2 harfbuzz libpthreadstubs libXdmcp
+      utillinuxMinimal glib docbook_xsl xmlto libselinux
+      libsepol libxkbcommon epoxy at-spi2-core libXtst libtasn1 p11-kit
+    ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/realh/roxterm";
+    license = licenses.gpl3;
+    description = "Tabbed, VTE-based terminal emulator";
+    longDescription = ''
+      Tabbed, VTE-based terminal emulator. Similar to gnome-terminal without
+      the dependencies on Gnome.
+    '';
+    maintainers = with maintainers; [ cdepillabout ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rsclock/default.nix b/nixpkgs/pkgs/applications/misc/rsclock/default.nix
new file mode 100644
index 000000000000..4f63ed057b78
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rsclock/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, rustPlatform, fetchFromGitHub }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "rsClock";
+  version = "0.1.4";
+
+  src = fetchFromGitHub {
+    owner = "valebes";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1i93qkz6d8sbk78i4rvx099hnn4lklp4cjvanpm9ssv8na4rqvh2";
+  };
+   
+  cargoSha256 = "01dhkis6zswq1y40n7sdq9xv1sp61f2v7nfqbkicyjngmdrmcgrl";
+
+  meta = with stdenv.lib; {
+    description = "A simple terminal clock written in Rust";
+    homepage = "https://github.com/valebes/rsClock";
+    license = licenses.mit;
+    maintainers = with maintainers; [valebes];
+    platforms = platforms.all;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/rsibreak/default.nix b/nixpkgs/pkgs/applications/misc/rsibreak/default.nix
new file mode 100644
index 000000000000..eefc0a0c5772
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rsibreak/default.nix
@@ -0,0 +1,28 @@
+{
+  mkDerivation, fetchurl, lib,
+  extra-cmake-modules, kdoctools,
+  knotifyconfig, kidletime, kwindowsystem, ktextwidgets, kcrash
+}:
+
+let
+  pname = "rsibreak";
+  version = "0.12";
+  revision = ".8";
+in mkDerivation rec {
+  name = "rsibreak-${version}${revision}";
+
+  src = fetchurl {
+    url = "https://download.kde.org/stable/${pname}/${version}/${name}.tar.xz";
+    sha256 = "1qn9xdjx9zzw47jsj7f4nkqmrangfhdgafm2jxm7cm6z6kcvzr28";
+  };
+
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedBuildInputs = [ knotifyconfig kidletime kwindowsystem ktextwidgets kcrash ];
+
+  meta = with lib; {
+    description = "RSIBreak takes care of your health and regularly breaks your work to avoid repetitive strain injury (RSI)";
+    license = licenses.gpl2;
+    homepage = "https://www.kde.org/applications/utilities/rsibreak/";
+    maintainers = with maintainers; [ vandenoever ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rtv/default.nix b/nixpkgs/pkgs/applications/misc/rtv/default.nix
new file mode 100644
index 000000000000..c4547e875130
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rtv/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchFromGitHub, python3Packages }:
+
+with python3Packages;
+buildPythonApplication rec {
+  version = "1.27.0";
+  pname = "rtv";
+
+  src = fetchFromGitHub {
+    owner = "michael-lazar";
+    repo = "rtv";
+    rev = "v${version}";
+    sha256 = "1hw7xy2kjxq7y3wcibcz4l7zj8icvigialqr17l362xry0y17y5j";
+  };
+
+  # Tests try to access network
+  doCheck = false;
+
+  checkPhase = ''
+    py.test
+  '';
+
+  checkInputs = [
+    coverage
+    coveralls
+    docopt
+    mock
+    pylint
+    pytest
+    vcrpy
+  ];
+
+  propagatedBuildInputs = [
+    beautifulsoup4
+    decorator
+    kitchen
+    requests
+    six
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/michael-lazar/rtv";
+    description = "Browse Reddit from your Terminal";
+    license = licenses.mit;
+    maintainers = with maintainers; [ matthiasbeyer wedens ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/default.nix b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/default.nix
new file mode 100644
index 000000000000..74bfbe83e91f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/default.nix
@@ -0,0 +1,22 @@
+{ callPackage }:
+
+{
+  autocomplete-all-the-things = callPackage ./urxvt-autocomplete-all-the-things { };
+
+  bidi = callPackage ./urxvt-bidi { };
+
+  font-size = callPackage ./urxvt-font-size { };
+
+  perl = callPackage ./urxvt-perl { };
+
+  perls = callPackage ./urxvt-perls { };
+
+  resize-font = callPackage ./urxvt-resize-font { };
+
+  tabbedex = callPackage ./urxvt-tabbedex { };
+
+  theme-switch = callPackage ./urxvt-theme-switch { };
+
+  vtwheel = callPackage ./urxvt-vtwheel { };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-autocomplete-all-the-things/default.nix b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-autocomplete-all-the-things/default.nix
new file mode 100644
index 000000000000..a4e03fa347f0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-autocomplete-all-the-things/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "urxvt-autocomplete-all-the-things";
+  version = "1.6.0";
+
+  src = fetchFromGitHub {
+    owner = "Vifon";
+    repo = "autocomplete-ALL-the-things";
+    rev = version;
+    sha256 = "06xd59c6gd9rglwq4km93n2p078k7v4x300lqrg1f32vvnjvs7sr";
+  };
+
+  installPhase = ''
+    mkdir -p $out/lib/urxvt/perl
+    cp autocomplete-ALL-the-things $out/lib/urxvt/perl
+  '';
+
+  meta = with stdenv.lib; {
+    description = "urxvt plugin allowing user to easily complete arbitrary text";
+    homepage = "https://github.com/Vifon/autocomplete-ALL-the-things";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ nickhu ];
+    platforms = with platforms; unix;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-bidi/default.nix b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-bidi/default.nix
new file mode 100644
index 000000000000..4b6b4eb8184c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-bidi/default.nix
@@ -0,0 +1,27 @@
+{ lib, fetchurl, perlPackages, pkgconfig, fribidi }:
+
+perlPackages.buildPerlPackage rec {
+  pname = "urxvt-bidi";
+  version = "2.15";
+
+  src = fetchurl {
+    url = "mirror://cpan/authors/id/K/KA/KAMENSKY/Text-Bidi-${version}.tar.gz";
+    sha256 = "1w65xbi4mw5acsrpv3phyzv82ghb29kpbb3b1b1gcinlfxl6f61m";
+  };
+
+  nativeBuildInputs = [ pkgconfig perlPackages.ExtUtilsPkgConfig ];
+  buildInputs = [ fribidi ];
+
+  postInstall = ''
+    install -Dm555 misc/bidi "$out/lib/urxvt/perl/bidi"
+  '';
+
+  passthru.perlPackages = [ "self" ];
+
+  meta = with lib; {
+    description = "Text::Bidi Perl package using fribidi, providing a urxvt plugin";
+    homepage = "https://github.com/mkamensky/Text-Bidi";
+    maintainers = with maintainers; [ doronbehar ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-font-size/default.nix b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-font-size/default.nix
new file mode 100644
index 000000000000..f81709b97390
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-font-size/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, xrdb, xlsfonts }:
+
+stdenv.mkDerivation {
+  name = "urxvt-font-size-2015-05-22";
+  dontPatchShebangs = true;
+
+  src = fetchFromGitHub {
+    owner = "majutsushi";
+    repo = "urxvt-font-size";
+    rev = "fd5b09c10798c6723bbf771d4d8881cf6563bc69";
+    sha256 = "16m3kkypg3y00x597zx05zy167a0kaqpawz0l591wzb2bv1dz55z";
+  };
+
+  installPhase = ''
+    substituteInPlace font-size \
+      --replace "xrdb -merge" "${xrdb}/bin/xrdb -merge" \
+      --replace "xlsfonts" "${xlsfonts}/bin/xlsfonts"
+
+    mkdir -p $out/lib/urxvt/perl
+    cp font-size $out/lib/urxvt/perl
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Change the urxvt font size on the fly";
+    homepage = "https://github.com/majutsushi/urxvt-font-size";
+    license = licenses.mit;
+    maintainers = with maintainers; [ cstrahan ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-perl/default.nix b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-perl/default.nix
new file mode 100644
index 000000000000..0c95acd72057
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-perl/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, wmctrl }:
+
+stdenv.mkDerivation {
+  name = "urxvt-perl-2015-01-16";
+
+  src = fetchFromGitHub {
+    owner = "effigies";
+    repo = "urxvt-perl";
+    rev = "c3beb9ff09a7139591416c61f8e9458c8a23bea5";
+    sha256 = "1w1p8ng7bwq5hnaprjl1zf073y5l3hdsj7sz7cll6isjswcm6r0s";
+  };
+
+  installPhase = ''
+    substituteInPlace fullscreen \
+      --replace "wmctrl" "${wmctrl}/bin/wmctrl"
+
+    mkdir -p $out/lib/urxvt/perl
+    cp fullscreen $out/lib/urxvt/perl
+    cp newterm $out/lib/urxvt/perl
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Perl extensions for the rxvt-unicode terminal emulator";
+    homepage = "https://github.com/effigies/urxvt-perl";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ cstrahan ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-perls/default.nix b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-perls/default.nix
new file mode 100644
index 000000000000..53bb938c3330
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-perls/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "urxvt-perls";
+  version = "2.3";
+
+  src = fetchFromGitHub {
+    owner = "muennich";
+    repo = "urxvt-perls";
+    rev = version;
+    sha256 = "0xvwfw7965ghhd9g6rl6y6fgpd444l46rjqmlgg0rfjypbh6c0p1";
+  };
+
+  installPhase = ''
+    mkdir -p $out/lib/urxvt/perl
+    cp keyboard-select $out/lib/urxvt/perl
+    cp deprecated/clipboard \
+       deprecated/url-select \
+    $out/lib/urxvt/perl
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Perl extensions for the rxvt-unicode terminal emulator";
+    homepage = "https://github.com/muennich/urxvt-perls";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ abbradar ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-resize-font/default.nix b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-resize-font/default.nix
new file mode 100644
index 000000000000..a056e603f004
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-resize-font/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation {
+  pname = "urxvt-resize-font";
+  version = "2019-10-05";
+  dontPatchShebangs = true;
+
+  src = fetchFromGitHub {
+    owner = "simmel";
+    repo = "urxvt-resize-font";
+    rev = "e966a5d77264e9263bfc8a51e160fad24055776b";
+    sha256 = "18ab3bsfdkzzh1n9fpi2al5bksvv2b7fjmvxpx6fzqcy4bc64vkh";
+  };
+
+  installPhase = ''
+    mkdir -p $out/lib/urxvt/perl
+    cp resize-font $out/lib/urxvt/perl
+  '';
+
+  meta = with stdenv.lib; {
+    description = "URxvt Perl extension for resizing the font";
+    homepage = "https://github.com/simmel/urxvt-resize-font";
+    license = licenses.mit;
+    maintainers = with maintainers; [ rnhmjoj ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-tabbedex/default.nix b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-tabbedex/default.nix
new file mode 100644
index 000000000000..71a55f9293c6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-tabbedex/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub, perl }:
+
+stdenv.mkDerivation rec {
+  pname = "urxvt-tabbedex";
+  version = "19.21";
+
+  src = fetchFromGitHub {
+    owner = "mina86";
+    repo = "urxvt-tabbedex";
+    rev = "v${version}";
+    sha256 = "06msd156h6r8ss7qg66sjz5jz8613qfq2yvp0pc24i6mxzj8vl77";
+  };
+
+  nativeBuildInputs = [ perl ];
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    description = "Tabbed plugin for rxvt-unicode with many enhancements (mina86's fork)";
+    homepage = "https://github.com/mina86/urxvt-tabbedex";
+    maintainers = with maintainers; [ abbradar ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-theme-switch/default.nix b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-theme-switch/default.nix
new file mode 100644
index 000000000000..5a84a9b472a5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-theme-switch/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  rev = "cfcbcc3dd5a5b09a3fec0f6a1fea95f4a36a48c4";
+  name = "urxvt-theme-switch-2014-12-21_rev${builtins.substring 0 1 rev}";
+  dontPatchShebangs = true;
+
+  src = fetchFromGitHub {
+    owner = "felixr";
+    repo = "urxvt-theme-switch";
+    inherit rev;
+    sha256 = "0x27m1vdqprn3lqpwgxvffill7prmaj6j9rhgvkvi13mzl5wmlli";
+  };
+
+  installPhase = ''
+    mkdir -p $out/lib/urxvt/perl
+    sed -i -e "s|/usr/bin/env||" color-themes
+    cp color-themes $out/lib/urxvt/perl
+  '';
+
+  meta = with stdenv.lib; {
+    description = "urxvt plugin that allows to switch color themes during runtime";
+    homepage = "https://github.com/felixr/urxvt-theme-switch";
+    license = "CCBYNC";
+    maintainers = with maintainers; [ ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-vtwheel/default.nix b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-vtwheel/default.nix
new file mode 100644
index 000000000000..aebbedacef64
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-vtwheel/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchgit, perl }:
+
+stdenv.mkDerivation {
+
+  name = "rxvt-unicode-vtwheel-0.3.2";
+
+  src = fetchgit {
+   url = "https://aur.archlinux.org/urxvt-vtwheel.git";
+   rev = "36d3e861664aeae36a45f96100f10f8fe2218035";
+   sha256 = "1h3vrsbli5q9kr84j5ijbivlhpwlh3l8cv233pg362v2zz4ja8i7";
+  };
+  
+  installPhase = ''
+    sed -i 's|#! perl|#! ${perl}/bin/perl|g' vtwheel
+    mkdir -p $out/lib/urxvt/perl
+    cp vtwheel $out/lib/urxvt/perl
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Pass mouse wheel commands to secondary screens (screen, less, nano, etc)";
+    homepage = "https://aur.archlinux.org/packages/urxvt-vtwheel";
+    license = licenses.mit;
+    maintainers = with maintainers; [ danbst ];
+    platforms = with platforms; unix;
+  };
+  
+}
diff --git a/nixpkgs/pkgs/applications/misc/rxvt-unicode/default.nix b/nixpkgs/pkgs/applications/misc/rxvt-unicode/default.nix
new file mode 100644
index 000000000000..6512f402ffbd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt-unicode/default.nix
@@ -0,0 +1,88 @@
+{ stdenv, fetchurl, makeDesktopItem
+, libX11, libXt, libXft, libXrender
+, ncurses, fontconfig, freetype
+, pkgconfig, gdk-pixbuf, perl
+, perlSupport      ? true
+, gdkPixbufSupport ? true
+, unicode3Support  ? true
+}:
+
+let
+  pname = "rxvt-unicode";
+  version = "9.22";
+  description = "A clone of the well-known terminal emulator rxvt";
+
+  desktopItem = makeDesktopItem {
+    name = pname;
+    exec = "urxvt";
+    icon = "utilities-terminal";
+    comment = description;
+    desktopName = "URxvt";
+    genericName = pname;
+    categories = "System;TerminalEmulator;";
+  };
+in
+
+with stdenv.lib;
+
+stdenv.mkDerivation {
+  name = "${pname}-unwrapped-${version}";
+  inherit pname version;
+
+  src = fetchurl {
+    url = "http://dist.schmorp.de/rxvt-unicode/Attic/rxvt-unicode-${version}.tar.bz2";
+    sha256 = "1pddjn5ynblwfrdmskylrsxb9vfnk3w4jdnq2l8xn2pspkljhip9";
+  };
+
+  buildInputs =
+    [ libX11 libXt libXft ncurses  # required to build the terminfo file
+      fontconfig freetype pkgconfig libXrender
+    ] ++ optional perlSupport perl
+      ++ optional gdkPixbufSupport gdk-pixbuf;
+
+  outputs = [ "out" "terminfo" ];
+
+  patches = [
+    ./patches/9.06-font-width.patch
+    ./patches/256-color-resources.patch
+  ] ++ optional stdenv.isDarwin ./patches/makefile-phony.patch;
+
+
+  configureFlags = [
+    "--with-terminfo=$terminfo/share/terminfo"
+    "--enable-256-color"
+    (enableFeature perlSupport "perl")
+    (enableFeature unicode3Support "unicode3")
+  ];
+
+  LDFLAGS = [ "-lfontconfig" "-lXrender" "-lpthread" ];
+  CFLAGS = [ "-I${freetype.dev}/include/freetype2" ];
+
+  preConfigure =
+    ''
+      # without this the terminfo won't be compiled by tic, see man tic
+      mkdir -p $terminfo/share/terminfo
+      export TERMINFO=$terminfo/share/terminfo
+    ''
+    + stdenv.lib.optionalString perlSupport ''
+      # make urxvt find its perl file lib/perl5/site_perl
+      # is added to PERL5LIB automatically
+      mkdir -p $out/$(dirname ${perl.libPrefix})
+      ln -s $out/lib/urxvt $out/${perl.libPrefix}
+    '';
+
+  postInstall = ''
+    mkdir -p $out/nix-support
+    echo "$terminfo" >> $out/nix-support/propagated-user-env-packages
+    cp -r ${desktopItem}/share/applications/ $out/share/
+  '';
+
+  meta = {
+    inherit description;
+    homepage = "http://software.schmorp.de/pkg/rxvt-unicode.html";
+    downloadPage = "http://dist.schmorp.de/rxvt-unicode/Attic/";
+    maintainers = with maintainers; [ rnhmjoj ];
+    platforms = platforms.unix;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rxvt-unicode/patches/256-color-resources.patch b/nixpkgs/pkgs/applications/misc/rxvt-unicode/patches/256-color-resources.patch
new file mode 100644
index 000000000000..c8d2acfbdc51
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt-unicode/patches/256-color-resources.patch
@@ -0,0 +1,255 @@
+diff --git a/src/xdefaults.C b/src/xdefaults.C
+index 23b6822..382f3b1 100644
+--- a/src/xdefaults.C
++++ b/src/xdefaults.C
+@@ -155,6 +155,250 @@ optList[] = {
+               RSTRG (Rs_color + minCOLOR + 5, "color5", "color"),
+               RSTRG (Rs_color + minCOLOR + 6, "color6", "color"),
+               RSTRG (Rs_color + minCOLOR + 7, "color7", "color"),
++              // 88 xterm colors
++              RSTRG (Rs_color + minCOLOR + 16, "color16", "color"),
++              RSTRG (Rs_color + minCOLOR + 17, "color17", "color"),
++              RSTRG (Rs_color + minCOLOR + 18, "color18", "color"),
++              RSTRG (Rs_color + minCOLOR + 19, "color19", "color"),
++              RSTRG (Rs_color + minCOLOR + 20, "color20", "color"),
++              RSTRG (Rs_color + minCOLOR + 21, "color21", "color"),
++              RSTRG (Rs_color + minCOLOR + 22, "color22", "color"),
++              RSTRG (Rs_color + minCOLOR + 23, "color23", "color"),
++              RSTRG (Rs_color + minCOLOR + 24, "color24", "color"),
++              RSTRG (Rs_color + minCOLOR + 25, "color25", "color"),
++              RSTRG (Rs_color + minCOLOR + 26, "color26", "color"),
++              RSTRG (Rs_color + minCOLOR + 27, "color27", "color"),
++              RSTRG (Rs_color + minCOLOR + 28, "color28", "color"),
++              RSTRG (Rs_color + minCOLOR + 29, "color29", "color"),
++              RSTRG (Rs_color + minCOLOR + 30, "color30", "color"),
++              RSTRG (Rs_color + minCOLOR + 31, "color31", "color"),
++              RSTRG (Rs_color + minCOLOR + 32, "color32", "color"),
++              RSTRG (Rs_color + minCOLOR + 33, "color33", "color"),
++              RSTRG (Rs_color + minCOLOR + 34, "color34", "color"),
++              RSTRG (Rs_color + minCOLOR + 35, "color35", "color"),
++              RSTRG (Rs_color + minCOLOR + 36, "color36", "color"),
++              RSTRG (Rs_color + minCOLOR + 37, "color37", "color"),
++              RSTRG (Rs_color + minCOLOR + 38, "color38", "color"),
++              RSTRG (Rs_color + minCOLOR + 39, "color39", "color"),
++              RSTRG (Rs_color + minCOLOR + 40, "color40", "color"),
++              RSTRG (Rs_color + minCOLOR + 41, "color41", "color"),
++              RSTRG (Rs_color + minCOLOR + 42, "color42", "color"),
++              RSTRG (Rs_color + minCOLOR + 43, "color43", "color"),
++              RSTRG (Rs_color + minCOLOR + 44, "color44", "color"),
++              RSTRG (Rs_color + minCOLOR + 45, "color45", "color"),
++              RSTRG (Rs_color + minCOLOR + 46, "color46", "color"),
++              RSTRG (Rs_color + minCOLOR + 47, "color47", "color"),
++              RSTRG (Rs_color + minCOLOR + 48, "color48", "color"),
++              RSTRG (Rs_color + minCOLOR + 49, "color49", "color"),
++              RSTRG (Rs_color + minCOLOR + 50, "color50", "color"),
++              RSTRG (Rs_color + minCOLOR + 51, "color51", "color"),
++              RSTRG (Rs_color + minCOLOR + 52, "color52", "color"),
++              RSTRG (Rs_color + minCOLOR + 53, "color53", "color"),
++              RSTRG (Rs_color + minCOLOR + 54, "color54", "color"),
++              RSTRG (Rs_color + minCOLOR + 55, "color55", "color"),
++              RSTRG (Rs_color + minCOLOR + 56, "color56", "color"),
++              RSTRG (Rs_color + minCOLOR + 57, "color57", "color"),
++              RSTRG (Rs_color + minCOLOR + 58, "color58", "color"),
++              RSTRG (Rs_color + minCOLOR + 59, "color59", "color"),
++              RSTRG (Rs_color + minCOLOR + 60, "color60", "color"),
++              RSTRG (Rs_color + minCOLOR + 61, "color61", "color"),
++              RSTRG (Rs_color + minCOLOR + 62, "color62", "color"),
++              RSTRG (Rs_color + minCOLOR + 63, "color63", "color"),
++              RSTRG (Rs_color + minCOLOR + 64, "color64", "color"),
++              RSTRG (Rs_color + minCOLOR + 65, "color65", "color"),
++              RSTRG (Rs_color + minCOLOR + 66, "color66", "color"),
++              RSTRG (Rs_color + minCOLOR + 67, "color67", "color"),
++              RSTRG (Rs_color + minCOLOR + 68, "color68", "color"),
++              RSTRG (Rs_color + minCOLOR + 69, "color69", "color"),
++              RSTRG (Rs_color + minCOLOR + 70, "color70", "color"),
++              RSTRG (Rs_color + minCOLOR + 71, "color71", "color"),
++              RSTRG (Rs_color + minCOLOR + 72, "color72", "color"),
++              RSTRG (Rs_color + minCOLOR + 73, "color73", "color"),
++              RSTRG (Rs_color + minCOLOR + 74, "color74", "color"),
++              RSTRG (Rs_color + minCOLOR + 75, "color75", "color"),
++              RSTRG (Rs_color + minCOLOR + 76, "color76", "color"),
++              RSTRG (Rs_color + minCOLOR + 77, "color77", "color"),
++              RSTRG (Rs_color + minCOLOR + 78, "color78", "color"),
++              RSTRG (Rs_color + minCOLOR + 79, "color79", "color"),
++              RSTRG (Rs_color + minCOLOR + 80, "color80", "color"),
++              RSTRG (Rs_color + minCOLOR + 81, "color81", "color"),
++              RSTRG (Rs_color + minCOLOR + 82, "color82", "color"),
++              RSTRG (Rs_color + minCOLOR + 83, "color83", "color"),
++              RSTRG (Rs_color + minCOLOR + 84, "color84", "color"),
++              RSTRG (Rs_color + minCOLOR + 85, "color85", "color"),
++              RSTRG (Rs_color + minCOLOR + 86, "color86", "color"),
++              RSTRG (Rs_color + minCOLOR + 87, "color87", "color"),
++#if USE_256_COLORS
++              // 256 xterm colors
++              RSTRG (Rs_color + minCOLOR + 88, "color88", "color"),
++              RSTRG (Rs_color + minCOLOR + 89, "color89", "color"),
++              RSTRG (Rs_color + minCOLOR + 90, "color90", "color"),
++              RSTRG (Rs_color + minCOLOR + 91, "color91", "color"),
++              RSTRG (Rs_color + minCOLOR + 92, "color92", "color"),
++              RSTRG (Rs_color + minCOLOR + 93, "color93", "color"),
++              RSTRG (Rs_color + minCOLOR + 94, "color94", "color"),
++              RSTRG (Rs_color + minCOLOR + 95, "color95", "color"),
++              RSTRG (Rs_color + minCOLOR + 96, "color96", "color"),
++              RSTRG (Rs_color + minCOLOR + 97, "color97", "color"),
++              RSTRG (Rs_color + minCOLOR + 98, "color98", "color"),
++              RSTRG (Rs_color + minCOLOR + 99, "color99", "color"),
++              RSTRG (Rs_color + minCOLOR + 100, "color100", "color"),
++              RSTRG (Rs_color + minCOLOR + 101, "color101", "color"),
++              RSTRG (Rs_color + minCOLOR + 102, "color102", "color"),
++              RSTRG (Rs_color + minCOLOR + 103, "color103", "color"),
++              RSTRG (Rs_color + minCOLOR + 104, "color104", "color"),
++              RSTRG (Rs_color + minCOLOR + 105, "color105", "color"),
++              RSTRG (Rs_color + minCOLOR + 106, "color106", "color"),
++              RSTRG (Rs_color + minCOLOR + 107, "color107", "color"),
++              RSTRG (Rs_color + minCOLOR + 108, "color108", "color"),
++              RSTRG (Rs_color + minCOLOR + 109, "color109", "color"),
++              RSTRG (Rs_color + minCOLOR + 110, "color110", "color"),
++              RSTRG (Rs_color + minCOLOR + 111, "color111", "color"),
++              RSTRG (Rs_color + minCOLOR + 112, "color112", "color"),
++              RSTRG (Rs_color + minCOLOR + 113, "color113", "color"),
++              RSTRG (Rs_color + minCOLOR + 114, "color114", "color"),
++              RSTRG (Rs_color + minCOLOR + 115, "color115", "color"),
++              RSTRG (Rs_color + minCOLOR + 116, "color116", "color"),
++              RSTRG (Rs_color + minCOLOR + 117, "color117", "color"),
++              RSTRG (Rs_color + minCOLOR + 118, "color118", "color"),
++              RSTRG (Rs_color + minCOLOR + 119, "color119", "color"),
++              RSTRG (Rs_color + minCOLOR + 120, "color120", "color"),
++              RSTRG (Rs_color + minCOLOR + 121, "color121", "color"),
++              RSTRG (Rs_color + minCOLOR + 122, "color122", "color"),
++              RSTRG (Rs_color + minCOLOR + 123, "color123", "color"),
++              RSTRG (Rs_color + minCOLOR + 124, "color124", "color"),
++              RSTRG (Rs_color + minCOLOR + 125, "color125", "color"),
++              RSTRG (Rs_color + minCOLOR + 126, "color126", "color"),
++              RSTRG (Rs_color + minCOLOR + 127, "color127", "color"),
++              RSTRG (Rs_color + minCOLOR + 128, "color128", "color"),
++              RSTRG (Rs_color + minCOLOR + 129, "color129", "color"),
++              RSTRG (Rs_color + minCOLOR + 130, "color130", "color"),
++              RSTRG (Rs_color + minCOLOR + 131, "color131", "color"),
++              RSTRG (Rs_color + minCOLOR + 132, "color132", "color"),
++              RSTRG (Rs_color + minCOLOR + 133, "color133", "color"),
++              RSTRG (Rs_color + minCOLOR + 134, "color134", "color"),
++              RSTRG (Rs_color + minCOLOR + 135, "color135", "color"),
++              RSTRG (Rs_color + minCOLOR + 136, "color136", "color"),
++              RSTRG (Rs_color + minCOLOR + 137, "color137", "color"),
++              RSTRG (Rs_color + minCOLOR + 138, "color138", "color"),
++              RSTRG (Rs_color + minCOLOR + 139, "color139", "color"),
++              RSTRG (Rs_color + minCOLOR + 140, "color140", "color"),
++              RSTRG (Rs_color + minCOLOR + 141, "color141", "color"),
++              RSTRG (Rs_color + minCOLOR + 142, "color142", "color"),
++              RSTRG (Rs_color + minCOLOR + 143, "color143", "color"),
++              RSTRG (Rs_color + minCOLOR + 144, "color144", "color"),
++              RSTRG (Rs_color + minCOLOR + 145, "color145", "color"),
++              RSTRG (Rs_color + minCOLOR + 146, "color146", "color"),
++              RSTRG (Rs_color + minCOLOR + 147, "color147", "color"),
++              RSTRG (Rs_color + minCOLOR + 148, "color148", "color"),
++              RSTRG (Rs_color + minCOLOR + 149, "color149", "color"),
++              RSTRG (Rs_color + minCOLOR + 150, "color150", "color"),
++              RSTRG (Rs_color + minCOLOR + 151, "color151", "color"),
++              RSTRG (Rs_color + minCOLOR + 152, "color152", "color"),
++              RSTRG (Rs_color + minCOLOR + 153, "color153", "color"),
++              RSTRG (Rs_color + minCOLOR + 154, "color154", "color"),
++              RSTRG (Rs_color + minCOLOR + 155, "color155", "color"),
++              RSTRG (Rs_color + minCOLOR + 156, "color156", "color"),
++              RSTRG (Rs_color + minCOLOR + 157, "color157", "color"),
++              RSTRG (Rs_color + minCOLOR + 158, "color158", "color"),
++              RSTRG (Rs_color + minCOLOR + 159, "color159", "color"),
++              RSTRG (Rs_color + minCOLOR + 160, "color160", "color"),
++              RSTRG (Rs_color + minCOLOR + 161, "color161", "color"),
++              RSTRG (Rs_color + minCOLOR + 162, "color162", "color"),
++              RSTRG (Rs_color + minCOLOR + 163, "color163", "color"),
++              RSTRG (Rs_color + minCOLOR + 164, "color164", "color"),
++              RSTRG (Rs_color + minCOLOR + 165, "color165", "color"),
++              RSTRG (Rs_color + minCOLOR + 166, "color166", "color"),
++              RSTRG (Rs_color + minCOLOR + 167, "color167", "color"),
++              RSTRG (Rs_color + minCOLOR + 168, "color168", "color"),
++              RSTRG (Rs_color + minCOLOR + 169, "color169", "color"),
++              RSTRG (Rs_color + minCOLOR + 170, "color170", "color"),
++              RSTRG (Rs_color + minCOLOR + 171, "color171", "color"),
++              RSTRG (Rs_color + minCOLOR + 172, "color172", "color"),
++              RSTRG (Rs_color + minCOLOR + 173, "color173", "color"),
++              RSTRG (Rs_color + minCOLOR + 174, "color174", "color"),
++              RSTRG (Rs_color + minCOLOR + 175, "color175", "color"),
++              RSTRG (Rs_color + minCOLOR + 176, "color176", "color"),
++              RSTRG (Rs_color + minCOLOR + 177, "color177", "color"),
++              RSTRG (Rs_color + minCOLOR + 178, "color178", "color"),
++              RSTRG (Rs_color + minCOLOR + 179, "color179", "color"),
++              RSTRG (Rs_color + minCOLOR + 180, "color180", "color"),
++              RSTRG (Rs_color + minCOLOR + 181, "color181", "color"),
++              RSTRG (Rs_color + minCOLOR + 182, "color182", "color"),
++              RSTRG (Rs_color + minCOLOR + 183, "color183", "color"),
++              RSTRG (Rs_color + minCOLOR + 184, "color184", "color"),
++              RSTRG (Rs_color + minCOLOR + 185, "color185", "color"),
++              RSTRG (Rs_color + minCOLOR + 186, "color186", "color"),
++              RSTRG (Rs_color + minCOLOR + 187, "color187", "color"),
++              RSTRG (Rs_color + minCOLOR + 188, "color188", "color"),
++              RSTRG (Rs_color + minCOLOR + 189, "color189", "color"),
++              RSTRG (Rs_color + minCOLOR + 190, "color190", "color"),
++              RSTRG (Rs_color + minCOLOR + 191, "color191", "color"),
++              RSTRG (Rs_color + minCOLOR + 192, "color192", "color"),
++              RSTRG (Rs_color + minCOLOR + 193, "color193", "color"),
++              RSTRG (Rs_color + minCOLOR + 194, "color194", "color"),
++              RSTRG (Rs_color + minCOLOR + 195, "color195", "color"),
++              RSTRG (Rs_color + minCOLOR + 196, "color196", "color"),
++              RSTRG (Rs_color + minCOLOR + 197, "color197", "color"),
++              RSTRG (Rs_color + minCOLOR + 198, "color198", "color"),
++              RSTRG (Rs_color + minCOLOR + 199, "color199", "color"),
++              RSTRG (Rs_color + minCOLOR + 200, "color200", "color"),
++              RSTRG (Rs_color + minCOLOR + 201, "color201", "color"),
++              RSTRG (Rs_color + minCOLOR + 202, "color202", "color"),
++              RSTRG (Rs_color + minCOLOR + 203, "color203", "color"),
++              RSTRG (Rs_color + minCOLOR + 204, "color204", "color"),
++              RSTRG (Rs_color + minCOLOR + 205, "color205", "color"),
++              RSTRG (Rs_color + minCOLOR + 206, "color206", "color"),
++              RSTRG (Rs_color + minCOLOR + 207, "color207", "color"),
++              RSTRG (Rs_color + minCOLOR + 208, "color208", "color"),
++              RSTRG (Rs_color + minCOLOR + 209, "color209", "color"),
++              RSTRG (Rs_color + minCOLOR + 210, "color210", "color"),
++              RSTRG (Rs_color + minCOLOR + 211, "color211", "color"),
++              RSTRG (Rs_color + minCOLOR + 212, "color212", "color"),
++              RSTRG (Rs_color + minCOLOR + 213, "color213", "color"),
++              RSTRG (Rs_color + minCOLOR + 214, "color214", "color"),
++              RSTRG (Rs_color + minCOLOR + 215, "color215", "color"),
++              RSTRG (Rs_color + minCOLOR + 216, "color216", "color"),
++              RSTRG (Rs_color + minCOLOR + 217, "color217", "color"),
++              RSTRG (Rs_color + minCOLOR + 218, "color218", "color"),
++              RSTRG (Rs_color + minCOLOR + 219, "color219", "color"),
++              RSTRG (Rs_color + minCOLOR + 220, "color220", "color"),
++              RSTRG (Rs_color + minCOLOR + 221, "color221", "color"),
++              RSTRG (Rs_color + minCOLOR + 222, "color222", "color"),
++              RSTRG (Rs_color + minCOLOR + 223, "color223", "color"),
++              RSTRG (Rs_color + minCOLOR + 224, "color224", "color"),
++              RSTRG (Rs_color + minCOLOR + 225, "color225", "color"),
++              RSTRG (Rs_color + minCOLOR + 226, "color226", "color"),
++              RSTRG (Rs_color + minCOLOR + 227, "color227", "color"),
++              RSTRG (Rs_color + minCOLOR + 228, "color228", "color"),
++              RSTRG (Rs_color + minCOLOR + 229, "color229", "color"),
++              RSTRG (Rs_color + minCOLOR + 230, "color230", "color"),
++              RSTRG (Rs_color + minCOLOR + 231, "color231", "color"),
++              RSTRG (Rs_color + minCOLOR + 232, "color232", "color"),
++              RSTRG (Rs_color + minCOLOR + 233, "color233", "color"),
++              RSTRG (Rs_color + minCOLOR + 234, "color234", "color"),
++              RSTRG (Rs_color + minCOLOR + 235, "color235", "color"),
++              RSTRG (Rs_color + minCOLOR + 236, "color236", "color"),
++              RSTRG (Rs_color + minCOLOR + 237, "color237", "color"),
++              RSTRG (Rs_color + minCOLOR + 238, "color238", "color"),
++              RSTRG (Rs_color + minCOLOR + 239, "color239", "color"),
++              RSTRG (Rs_color + minCOLOR + 240, "color240", "color"),
++              RSTRG (Rs_color + minCOLOR + 241, "color241", "color"),
++              RSTRG (Rs_color + minCOLOR + 242, "color242", "color"),
++              RSTRG (Rs_color + minCOLOR + 243, "color243", "color"),
++              RSTRG (Rs_color + minCOLOR + 244, "color244", "color"),
++              RSTRG (Rs_color + minCOLOR + 245, "color245", "color"),
++              RSTRG (Rs_color + minCOLOR + 246, "color246", "color"),
++              RSTRG (Rs_color + minCOLOR + 247, "color247", "color"),
++              RSTRG (Rs_color + minCOLOR + 248, "color248", "color"),
++              RSTRG (Rs_color + minCOLOR + 249, "color249", "color"),
++              RSTRG (Rs_color + minCOLOR + 250, "color250", "color"),
++              RSTRG (Rs_color + minCOLOR + 251, "color251", "color"),
++              RSTRG (Rs_color + minCOLOR + 252, "color252", "color"),
++              RSTRG (Rs_color + minCOLOR + 253, "color253", "color"),
++              RSTRG (Rs_color + minCOLOR + 254, "color254", "color"),
++              RSTRG (Rs_color + minCOLOR + 255, "color255", "color"),
++#endif
+               RSTRG (Rs_color + minBrightCOLOR + 0, "color8", "color"),
+               RSTRG (Rs_color + minBrightCOLOR + 1, "color9", "color"),
+               RSTRG (Rs_color + minBrightCOLOR + 2, "color10", "color"),
diff --git a/nixpkgs/pkgs/applications/misc/rxvt-unicode/patches/9.06-font-width.patch b/nixpkgs/pkgs/applications/misc/rxvt-unicode/patches/9.06-font-width.patch
new file mode 100644
index 000000000000..636083218fa5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt-unicode/patches/9.06-font-width.patch
@@ -0,0 +1,21 @@
+--- a/src/rxvtfont.C	2008-07-09 12:21:45.000000000 +0400
++++ b/src/rxvtfont.C	2009-10-30 14:32:53.000000000 +0300
+@@ -1195,12 +1195,14 @@
+           XGlyphInfo g;
+           XftTextExtents16 (disp, f, &ch, 1, &g);
+ 
+-          g.width -= g.x;
+-
++/*
++ * bukind: don't use g.width as a width of a character!
++ * instead use g.xOff, see e.g.: http://keithp.com/~keithp/render/Xft.tutorial
++ */
+           int wcw = WCWIDTH (ch);
+-          if (wcw > 0) g.width = (g.width + wcw - 1) / wcw;
++          if (wcw > 1) g.xOff = g.xOff / wcw;
++          if (width < g.xOff) width = g.xOff;
+ 
+-          if (width    < g.width       ) width    = g.width;
+           if (height   < g.height      ) height   = g.height;
+           if (glheight < g.height - g.y) glheight = g.height - g.y;
+         }
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/misc/rxvt-unicode/patches/makefile-phony.patch b/nixpkgs/pkgs/applications/misc/rxvt-unicode/patches/makefile-phony.patch
new file mode 100644
index 000000000000..5e42e17c156a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt-unicode/patches/makefile-phony.patch
@@ -0,0 +1,10 @@
+--- a/Makefile.in	2015-01-13 08:52:30.000000000 +0100
++++ b/Makefile.in	2015-01-13 08:52:58.000000000 +0100
+@@ -30,6 +30,7 @@
+ subdirs = src doc
+ 
+ RECURSIVE_TARGETS = all allbin alldoc tags clean distclean realclean install
++.PHONY: $(RECURSIVE_TARGETS)
+ 
+ #-------------------------------------------------------------------------
+ 
diff --git a/nixpkgs/pkgs/applications/misc/rxvt-unicode/wrapper.nix b/nixpkgs/pkgs/applications/misc/rxvt-unicode/wrapper.nix
new file mode 100644
index 000000000000..38978799b5a8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt-unicode/wrapper.nix
@@ -0,0 +1,58 @@
+{ callPackage
+, symlinkJoin
+, makeWrapper
+, lib
+, rxvt-unicode-unwrapped
+, rxvt-unicode-plugins
+, perlPackages
+, configure ? { availablePlugins, ... }:
+  { plugins = builtins.attrValues availablePlugins;
+    extraDeps = [ ];
+    perlDeps = [ ];
+  }
+}:
+
+let
+  availablePlugins = rxvt-unicode-plugins;
+
+  # Transform the string "self" to the plugin itself.
+  # It's needed for plugins like bidi who depends on the perl
+  # package they provide themself.
+  mkPerlDeps = p:
+    let deps = p.perlPackages or [ ];
+    in map (x: if x == "self" then p else x) deps;
+
+  # The wrapper is called with a `configure` function
+  # that takes the urxvt plugins as input and produce
+  # the configuration of the wrapper: list of plugins,
+  # extra dependencies and perl dependencies.
+  # This provides simple way to customize urxvt using
+  # the `.override` mechanism.
+  wrapper = { configure, ... }:
+    let 
+      config = configure { inherit availablePlugins; };
+      plugins = config.plugins or (builtins.attrValues availablePlugins);
+      extraDeps = config.extraDeps or [ ];
+      perlDeps = (config.perlDeps or [ ]) ++ lib.concatMap mkPerlDeps plugins;
+    in
+      symlinkJoin {
+        name = "rxvt-unicode-${rxvt-unicode-unwrapped.version}";
+
+        paths = [ rxvt-unicode-unwrapped ] ++ plugins ++ extraDeps;
+
+        buildInputs = [ makeWrapper ];
+
+        postBuild = ''
+          wrapProgram $out/bin/urxvt \
+            --prefix PERL5LIB : "${perlPackages.makePerlPath perlDeps}" \
+            --suffix-each URXVT_PERL_LIB ':' "$out/lib/urxvt/perl"
+          wrapProgram $out/bin/urxvtd \
+            --prefix PERL5LIB : "${perlPackages.makePerlPath perlDeps}" \
+            --suffix-each URXVT_PERL_LIB ':' "$out/lib/urxvt/perl"
+        '';
+
+        passthru.plugins = plugins;
+      };
+
+in
+  lib.makeOverridable wrapper { inherit configure; }
diff --git a/nixpkgs/pkgs/applications/misc/rxvt/default.nix b/nixpkgs/pkgs/applications/misc/rxvt/default.nix
new file mode 100644
index 000000000000..c71973da13be
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl
+, pkgconfig, libtool
+, libX11, libXt, libXpm }:
+
+stdenv.mkDerivation rec {
+  pname = "rxvt";
+  version = "2.7.10";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/rxvt/${pname}-${version}.tar.gz";
+    sha256 = "0jfl71gz3k7zh3kxdb8lxi06kajjnx7bq1rxjgk680l209jxask1";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libtool libX11 libXt libXpm ];
+
+  configurePhase = ''
+    LIBTOOL=${libtool}/bin/libtool ./configure --prefix=$out --enable-everything --enable-smart-resize --enable-256-color
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://rxvt.sourceforge.net/";
+    description = "Colour vt102 terminal emulator with less features and lower memory consumption";
+    longDescription = ''
+      rxvt (acronym for our extended virtual terminal) is a terminal
+      emulator for the X Window System, originally written by Rob Nation
+      as an extended version of the older xvt terminal by John Bovey of
+      University of Kent. Mark Olesen extensively modified it later and
+      took over maintenance for several years.
+
+      rxvt is intended to be a slimmed-down alternate for xterm,
+      omitting some of its little-used features, like Tektronix 4014
+      emulation and toolkit-style configurability.
+    '';
+    maintainers = with maintainers; [ AndersonTorres ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/safeeyes/default.nix b/nixpkgs/pkgs/applications/misc/safeeyes/default.nix
new file mode 100644
index 000000000000..f6bb7133d999
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/safeeyes/default.nix
@@ -0,0 +1,70 @@
+{ lib, python3Packages, gobject-introspection, libappindicator-gtk3, libnotify, gtk3, gnome3, xprintidle-ng, wrapGAppsHook, gdk-pixbuf, shared-mime-info, librsvg
+}:
+
+let inherit (python3Packages) python buildPythonApplication fetchPypi;
+
+in buildPythonApplication rec {
+  pname = "safeeyes";
+  version = "2.0.9";
+  namePrefix = "";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "13q06jv8hm0dynmr3g5pf1m4j3w9iabrpz1nhpl02f7x0d90whg2";
+  };
+
+  buildInputs = [
+    gtk3
+    gobject-introspection
+    gnome3.adwaita-icon-theme
+    gnome3.adwaita-icon-theme
+  ];
+
+  nativeBuildInputs = [
+    wrapGAppsHook
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
+    Babel
+    psutil
+    xlib
+    pygobject3
+    dbus-python
+
+    libappindicator-gtk3
+    libnotify
+    xprintidle-ng
+  ];
+
+  # patch smartpause plugin
+  postPatch = ''
+    sed -i \
+      -e 's!xprintidle!xprintidle-ng!g' \
+      safeeyes/plugins/smartpause/plugin.py
+
+    sed -i \
+      -e 's!xprintidle!xprintidle-ng!g' \
+      safeeyes/plugins/smartpause/config.json
+  '';
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      --prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share"
+      --prefix XDG_DATA_DIRS : "${shared-mime-info}/share"
+      --prefix XDG_DATA_DIRS : "${librsvg}/share"
+
+      # safeeyes images
+      --prefix XDG_DATA_DIRS : "$out/lib/${python.libPrefix}/site-packages/usr/share"
+    )
+  '';
+
+  doCheck = false; # no tests
+
+  meta = {
+    homepage = "http://slgobinath.github.io/SafeEyes";
+    description = "Protect your eyes from eye strain using this simple and beautiful, yet extensible break reminder. A Free and Open Source Linux alternative to EyeLeo";
+    license = lib.licenses.gpl3;
+    maintainers = with lib.maintainers; [ srghma ];
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/sakura/default.nix b/nixpkgs/pkgs/applications/misc/sakura/default.nix
new file mode 100644
index 000000000000..34a6142e83a1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sakura/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, cmake, pkgconfig, gtk3, perl, vte, pcre2, glib , makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "sakura";
+  version = "3.7.0";
+
+  src = fetchurl {
+    url = "https://launchpad.net/sakura/trunk/${version}/+download/${pname}-${version}.tar.gz";
+    sha256 = "15gskj5yv5qs3cj4ps43735kfx2nzjlhq4dk9ghirl8lvhhxsm5m";
+  };
+
+  nativeBuildInputs = [ cmake perl pkgconfig ];
+
+  buildInputs = [ makeWrapper gtk3 vte pcre2 glib ];
+
+  # Wrapper sets path to gsettings-schemata so sakura knows where to find colorchooser, fontchooser ...
+  postInstall = "wrapProgram $out/bin/sakura --suffix XDG_DATA_DIRS : ${gtk3}/share/gsettings-schemas/${gtk3.name}/";
+
+  meta = with stdenv.lib; {
+    description = "A terminal emulator based on GTK and VTE";
+    homepage    = "http://www.pleyades.net/david/projects/sakura";
+    license     = licenses.gpl2;
+    maintainers = with maintainers; [ astsmtl codyopel ];
+    platforms   = platforms.linux;
+    longDescription = ''
+      sakura is a terminal emulator based on GTK and VTE. It's a terminal
+      emulator with few dependencies, so you don't need a full GNOME desktop
+      installed to have a decent terminal emulator. Current terminal emulators
+      based on VTE are gnome-terminal, XFCE Terminal, TermIt and a small
+      sample program included in the vte sources. The differences between
+      sakura and the last one are that it uses a notebook to provide several
+      terminals in one window and adds a contextual menu with some basic
+      options. No more no less.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/sampler/default.nix b/nixpkgs/pkgs/applications/misc/sampler/default.nix
new file mode 100644
index 000000000000..a1f4c8f41bca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sampler/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildGoModule, fetchFromGitHub, alsaLib }:
+
+buildGoModule rec {
+  pname = "sampler";
+  version = "1.1.0";
+
+  src = fetchFromGitHub {
+    owner = "sqshq";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1lanighxhnn28dfzils7i55zgxbw2abd6y723mq7x9wg1aa2bd0z";
+  };
+
+  vendorSha256 = "04nywhkil5xkipcibrp6vi63rfcvqgv7yxbxmmrhqys2cdxfvazv";
+
+  subPackages = [ "." ];
+
+  buildInputs = [ alsaLib ];
+
+  meta = with lib; {
+    description = "Tool for shell commands execution, visualization and alerting";
+    homepage = "https://sampler.dev";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ uvnikita ];
+    platforms = platforms.unix;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/misc/sbagen/default.nix b/nixpkgs/pkgs/applications/misc/sbagen/default.nix
new file mode 100644
index 000000000000..821fbe35ca1a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sbagen/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "sbagen-1.4.4";
+
+  src = fetchurl {
+    url = "https://uazu.net/sbagen/${name}.tgz";
+    sha256 = "0w62yk1b0hq79kl0angma897yqa8p1ww0dwydf3zlwav333prkd2";
+  };
+
+  postPatch = ''
+    patchShebangs ./mk
+  '';
+
+  buildPhase = "./mk";
+
+  installPhase = ''
+    mkdir -p $out/{bin,share/sbagen/doc}
+    cp -r --target-directory=$out/share/sbagen examples scripts river1.ogg river2.ogg
+    cp sbagen $out/bin
+    cp --target-directory=$out/share/sbagen/doc README.txt SBAGEN.txt theory{,2}.txt {wave,holosync,focus,TODO}.txt
+  '';
+
+  meta = {
+    description = "Binaural sound generator";
+    homepage = "http://uazu.net/sbagen";
+    license = "GPL";
+    platforms = [ "i686-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/sc-im/default.nix b/nixpkgs/pkgs/applications/misc/sc-im/default.nix
new file mode 100644
index 000000000000..6ee4695d1717
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sc-im/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, yacc, ncurses, libxml2, libzip, libxls, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  version = "0.7.0";
+  pname = "sc-im";
+
+  src = fetchFromGitHub {
+    owner = "andmarti1424";
+    repo = "sc-im";
+    rev = "v${version}";
+    sha256 = "0xi0n9qzby012y2j7hg4fgcwyly698sfi4i9gkvy0q682jihprbk";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ yacc ncurses libxml2 libzip libxls ];
+
+  buildPhase = ''
+    cd src
+
+    sed 's/LDLIBS += -lm/& -lncurses/' -i Makefile
+
+    sed -e "\|^prefix  = /usr/local|   s|/usr/local|$out|" \
+        -e "\|^#LDLIBS += -lxlsreader| s|^#||            " \
+        -e "\|^#CFLAGS += -DXLS|       s|^#||            " \
+        -i Makefile
+
+    make
+    export DESTDIR=$out
+  '';
+
+  installPhase = ''
+    make install prefix=
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/andmarti1424/sc-im";
+    description = "SC-IM - Spreadsheet Calculator Improvised - SC fork";
+    license = licenses.bsdOriginal;
+    maintainers = [ ];
+    platforms = platforms.unix;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/sdcv/default.nix b/nixpkgs/pkgs/applications/misc/sdcv/default.nix
new file mode 100644
index 000000000000..997786fc1072
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sdcv/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, glib, gettext, readline }:
+
+stdenv.mkDerivation rec {
+  pname = "sdcv";
+  version = "0.5.2";
+
+  src = fetchFromGitHub {
+    owner = "Dushistov";
+    repo = "sdcv";
+    rev = "v${version}";
+    sha256 = "1b67s4nj0s5fh3cjk7858qvhiisc557xx72xwzrb8hq6ijpwx5k0";
+  };
+
+  hardeningDisable = [ "format" ];
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [ glib gettext readline ];
+
+  preInstall = ''
+    mkdir locale
+  '';
+
+  NIX_CFLAGS_COMPILE = "-D__GNU_LIBRARY__";
+
+  meta = with stdenv.lib; {
+    homepage = "https://dushistov.github.io/sdcv/";
+    description = "Console version of StarDict";
+    maintainers = with maintainers; [ lovek323 ];
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/sent/default.nix b/nixpkgs/pkgs/applications/misc/sent/default.nix
new file mode 100644
index 000000000000..fe8598e49157
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sent/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, farbfeld, libX11, libXft, makeWrapper
+, patches ? [] }:
+
+stdenv.mkDerivation rec {
+  name = "sent-1";
+
+  src = fetchurl {
+    url = "https://dl.suckless.org/tools/${name}.tar.gz";
+    sha256 = "0cxysz5lp25mgww73jl0mgip68x7iyvialyzdbriyaff269xxwvv";
+  };
+
+  buildInputs = [ libX11 libXft ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  # unpacking doesn't create a directory
+  sourceRoot = ".";
+
+  inherit patches;
+
+  installFlags = [ "PREFIX=$(out)" ];
+  postInstall = ''
+    wrapProgram "$out/bin/sent" --prefix PATH : "${farbfeld}/bin"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A simple plaintext presentation tool";
+    homepage = "https://tools.suckless.org/sent/";
+    license = licenses.isc;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ pSub ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/sequeler/default.nix b/nixpkgs/pkgs/applications/misc/sequeler/default.nix
new file mode 100644
index 000000000000..04ceed635436
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sequeler/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchFromGitHub
+, vala, meson, ninja, pkgconfig, pantheon, gettext, wrapGAppsHook, python3, desktop-file-utils
+, gtk3, glib, libgee, libgda, gtksourceview, libxml2, libsecret, libssh2 }:
+
+
+let
+  sqlGda = libgda.override {
+    mysqlSupport = true;
+    postgresSupport = true;
+  };
+
+in stdenv.mkDerivation rec {
+  pname = "sequeler";
+  version = "0.7.91";
+
+  src = fetchFromGitHub {
+    owner = "Alecaddd";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "071vfx7bdf7hfa4784xz97vrj9x5aipgjbp30r00kg2zhg8wa2ls";
+  };
+
+  nativeBuildInputs = [ meson ninja pkgconfig vala gettext wrapGAppsHook python3 desktop-file-utils ];
+
+  buildInputs = [ gtk3 glib pantheon.granite libgee sqlGda gtksourceview libxml2 libsecret libssh2 ];
+
+  postPatch = ''
+    chmod +x build-aux/meson_post_install.py
+    patchShebangs build-aux/meson_post_install.py
+  '';
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Friendly SQL Client";
+    longDescription = ''
+      Sequeler is a native Linux SQL client built in Vala and Gtk. It allows you
+      to connect to your local and remote databases, write SQL in a handy text
+      editor with language recognition, and visualize SELECT results in a
+      Gtk.Grid Widget.
+    '';
+    homepage = "https://github.com/Alecaddd/sequeler";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.etu ] ++ pantheon.maintainers;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/sequelpro/default.nix b/nixpkgs/pkgs/applications/misc/sequelpro/default.nix
new file mode 100644
index 000000000000..16a11342d812
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sequelpro/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, undmg }:
+
+stdenv.mkDerivation {
+  pname = "sequel-pro";
+  version = "1.1.2";
+
+  src = fetchurl {
+    url = "https://github.com/sequelpro/sequelpro/releases/download/release-1.1.2/sequel-pro-1.1.2.dmg";
+    sha256 = "1il7yc3f0yzxkra27bslnmka5ycxzx0q4m3xz2j9r7iyq5izsd3v";
+  };
+
+  buildInputs = [ undmg ];
+  installPhase = ''
+    mkdir -p "$out/Applications/Sequel Pro.app"
+    cp -R . "$out/Applications/Sequel Pro.app"
+    chmod +x "$out/Applications/Sequel Pro.app/Contents/MacOS/Sequel Pro"
+  '';
+
+  meta = {
+    description = "MySQL database management for macOS";
+    homepage = "http://www.sequelpro.com/";
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/sidequest/default.nix b/nixpkgs/pkgs/applications/misc/sidequest/default.nix
new file mode 100644
index 000000000000..6c55c3157f5c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sidequest/default.nix
@@ -0,0 +1,69 @@
+{ stdenv, lib, fetchurl, buildFHSUserEnv, makeDesktopItem, makeWrapper, atomEnv, libuuid, at-spi2-atk, icu, openssl, zlib }:
+	let
+		pname = "sidequest";
+		version = "0.10.2";
+
+		desktopItem = makeDesktopItem rec {
+			name = "SideQuest";
+			exec = "SideQuest";
+			desktopName = name;
+			genericName = "VR App Store";
+			categories = "Settings;PackageManager;";
+		};
+
+		sidequest = stdenv.mkDerivation {
+			inherit pname version;
+
+			src = fetchurl {
+				url = "https://github.com/the-expanse/SideQuest/releases/download/v${version}/SideQuest-${version}.tar.xz";
+				sha256 = "1vfxn4gx5b138gj6nk4w3jlp2l56cqpb8hq2kn5mrf4dhjii8n88";
+			};
+
+			buildInputs = [ makeWrapper ];
+
+			buildCommand = ''
+				mkdir -p "$out/lib/SideQuest" "$out/bin"
+				tar -xJf "$src" -C "$out/lib/SideQuest" --strip-components 1
+
+				ln -s "$out/lib/SideQuest/sidequest" "$out/bin"
+
+				fixupPhase
+
+				# mkdir -p "$out/share/applications"
+				# ln -s "${desktopItem}/share/applications/*" "$out/share/applications"
+
+				patchelf \
+					--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+					--set-rpath "${atomEnv.libPath}/lib:${lib.makeLibraryPath [libuuid at-spi2-atk]}:$out/lib/SideQuest" \
+					"$out/lib/SideQuest/sidequest"
+			'';
+		};
+	in buildFHSUserEnv {
+		name = "SideQuest";
+
+		passthru = {
+			inherit pname version;
+
+			meta = with stdenv.lib; {
+				description = "An open app store and side-loading tool for Android-based VR devices such as the Oculus Go, Oculus Quest or Moverio BT 300";
+				homepage = "https://github.com/the-expanse/SideQuest";
+				downloadPage = "https://github.com/the-expanse/SideQuest/releases";
+				license = licenses.mit;
+				maintainers = with maintainers; [ joepie91 rvolosatovs ];
+				platforms = [ "x86_64-linux" ];
+			};
+		};
+
+		targetPkgs = pkgs: [
+			sidequest
+			# Needed in the environment on runtime, to make QuestSaberPatch work
+			icu openssl zlib
+		];
+
+		extraInstallCommands = ''
+			mkdir -p "$out/share/applications"
+			ln -s ${desktopItem}/share/applications/* "$out/share/applications"
+		'';
+
+		runScript = "sidequest";
+	}
diff --git a/nixpkgs/pkgs/applications/misc/sigal/default.nix b/nixpkgs/pkgs/applications/misc/sigal/default.nix
new file mode 100644
index 000000000000..1802eef54092
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sigal/default.nix
@@ -0,0 +1,34 @@
+{ lib, python3Packages, ffmpeg_3 }:
+
+python3Packages.buildPythonApplication rec {
+  version = "2.0";
+  pname   = "sigal";
+
+  src = python3Packages.fetchPypi {
+    inherit version pname;
+    sha256 = "0ff8hpihbd30xjy155ksfpypjskilqg4zmyavgvpri8jaf1qpv89";
+  };
+
+  checkInputs = with python3Packages; [ pytest ];
+  propagatedBuildInputs = with python3Packages; [
+    jinja2
+    markdown
+    pillow
+    pilkit
+    clint
+    click
+    blinker
+  ];
+
+  makeWrapperArgs = [ "--prefix PATH : ${ffmpeg_3}/bin" ];
+
+  # No tests included
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Yet another simple static gallery generator";
+    homepage    = "http://sigal.saimon.org/en/latest/index.html";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ domenkozar matthiasbeyer ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/simplenote/default.nix b/nixpkgs/pkgs/applications/misc/simplenote/default.nix
new file mode 100644
index 000000000000..917e1965e2ea
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/simplenote/default.nix
@@ -0,0 +1,96 @@
+{ atomEnv
+, autoPatchelfHook
+, dpkg
+, fetchurl
+, makeDesktopItem
+, makeWrapper
+, stdenv
+, udev
+, wrapGAppsHook
+}:
+
+let
+  inherit (stdenv.hostPlatform) system;
+
+  throwSystem = throw "Unsupported system: ${system}";
+
+  pname = "simplenote";
+
+  version = "1.17.0";
+
+  sha256 = {
+    x86_64-linux = "14kjx4y3kvw7h8wk8mmkpx1288jscmd8bgl10bw6kcfigcwahpw3";
+  }.${system} or throwSystem;
+
+  meta = with stdenv.lib; {
+    description = "The simplest way to keep notes";
+    homepage = "https://github.com/Automattic/simplenote-electron";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [
+      kiwi
+    ];
+    platforms = [
+      "x86_64-linux"
+    ];
+  };
+
+  linux = stdenv.mkDerivation rec {
+    inherit pname version meta;
+
+    src = fetchurl {
+      url =
+        "https://github.com/Automattic/simplenote-electron/releases/download/"
+        + "v${version}/Simplenote-linux-${version}-amd64.deb";
+      inherit sha256;
+    };
+
+    desktopItem = makeDesktopItem {
+      categories = "Development";
+      comment = "Simplenote for Linux";
+      desktopName = "Simplenote";
+      exec = "simplenote %U";
+      icon = "simplenote";
+      name = "simplenote";
+      startupNotify = "true";
+      type = "Application";
+    };
+
+    dontBuild = true;
+    dontConfigure = true;
+    dontPatchELF = true;
+    dontWrapGApps = true;
+
+    nativeBuildInputs = [
+      autoPatchelfHook
+      dpkg
+      makeWrapper
+      wrapGAppsHook
+    ];
+
+    buildInputs = atomEnv.packages;
+
+    unpackPhase = "dpkg-deb -x $src .";
+
+    installPhase = ''
+      mkdir -p "$out/bin"
+      cp -R "opt" "$out"
+      cp -R "usr/share" "$out/share"
+      chmod -R g-w "$out"
+
+      mkdir -p "$out/share/applications"
+      cp "${desktopItem}/share/applications/"* "$out/share/applications"
+    '';
+
+    runtimeDependencies = [
+      udev.lib
+    ];
+
+    postFixup = ''
+      makeWrapper $out/opt/Simplenote/simplenote $out/bin/simplenote \
+        --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ stdenv.cc.cc ] }" \
+        "''${gappsWrapperArgs[@]}"
+    '';
+  };
+
+in
+linux
diff --git a/nixpkgs/pkgs/applications/misc/slade/default.nix b/nixpkgs/pkgs/applications/misc/slade/default.nix
new file mode 100644
index 000000000000..e93baa997c86
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/slade/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, wxGTK, gtk2, sfml, fluidsynth, curl, freeimage, ftgl, glew, zip }:
+
+stdenv.mkDerivation rec {
+  pname = "slade";
+  version = "3.1.1.5";
+
+  src = fetchFromGitHub {
+    owner = "sirjuddington";
+    repo = "SLADE";
+    rev = version;
+    sha256 = "0mdn59jm6ab4cdh99bgvadif3wdlqmk5mq635gg7krq35njgw6f6";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig zip ];
+  buildInputs = [ wxGTK gtk2 sfml fluidsynth curl freeimage ftgl glew ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Doom editor";
+    homepage = "http://slade.mancubus.net/";
+    license = licenses.gpl2;
+    platforms = [ "x86_64-linux" "i686-linux" ];
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/slade/git.nix b/nixpkgs/pkgs/applications/misc/slade/git.nix
new file mode 100644
index 000000000000..1eaf907b7edf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/slade/git.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, wxGTK, gtk2, sfml, fluidsynth, curl, freeimage, ftgl, glew, zip }:
+
+stdenv.mkDerivation {
+  name = "slade-git-3.1.2.2018.01.29";
+
+  src = fetchFromGitHub {
+    owner = "sirjuddington";
+    repo = "SLADE";
+    rev = "f7409c504b40c4962f419038db934c32688ddd2e";
+    sha256 = "14icxiy0r9rlcc10skqs1ylnxm1f0f3irhzfmx4sazq0pjv5ivld";
+  };
+
+  cmakeFlags = ["-DNO_WEBVIEW=1"];
+  nativeBuildInputs = [ cmake pkgconfig zip ];
+  buildInputs = [ wxGTK gtk2 sfml fluidsynth curl freeimage ftgl glew ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Doom editor";
+    homepage = "http://slade.mancubus.net/";
+    license = licenses.gpl2Plus;
+    platforms = [ "x86_64-linux" "i686-linux" ];
+    maintainers = with maintainers; [ ertes ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/sleepyhead/default.nix b/nixpkgs/pkgs/applications/misc/sleepyhead/default.nix
new file mode 100644
index 000000000000..17c5ec9be265
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sleepyhead/default.nix
@@ -0,0 +1,51 @@
+{ lib, stdenv, mkDerivation, fetchgit, zlib, libGLU, libX11, qtbase, qtwebkit, qtserialport, wrapQtAppsHook }:
+
+let
+  name = "sleepyhead-${version}";
+  version = "1.0.0-beta-git";
+in mkDerivation {
+  inherit name;
+
+  src = fetchgit {
+    url = "https://gitlab.com/sleepyhead/sleepyhead-code.git";
+    rev = "9e2329d8bca45693231b5e3dae80063717c24578";
+    sha256 = "0448z8gyaxpgpnksg34lzmffj36jdpm0ir4xxa5gvzagkx0wk07h";
+  };
+
+  buildInputs = [
+    qtbase qtwebkit qtserialport
+    zlib
+    libGLU
+    libX11
+  ];
+
+  nativeBuildInputs = [ wrapQtAppsHook ];
+
+  patchPhase = ''
+    patchShebangs configure
+  '';
+  
+  installPhase = if stdenv.isDarwin then ''
+    mkdir -p $out/Applications
+    cp -r sleepyhead/SleepyHead.app $out/Applications
+  '' else ''
+    mkdir -p $out/bin
+    cp sleepyhead/SleepyHead $out/bin
+  '';
+
+  postFixup = stdenv.lib.optionalString stdenv.isDarwin ''
+    wrapQtApp "$out/Applications/SleepyHead.app/Contents/MacOS/SleepyHead"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://sleepyhead.jedimark.net/";
+    description = "Review and explore data produced by CPAP and related machines";
+    longDescription = ''
+      SleepyHead is cross platform, opensource sleep tracking program for reviewing CPAP and Oximetry data, which are devices used in the treatment of Sleep Disorders like Obstructive Sleep Apnea.
+    '';
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = [ maintainers.krav ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/slic3r/boost-compile-error.patch b/nixpkgs/pkgs/applications/misc/slic3r/boost-compile-error.patch
new file mode 100644
index 000000000000..4dbdb85f743d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/slic3r/boost-compile-error.patch
@@ -0,0 +1,12 @@
+diff --git a/xs/src/libslic3r/GCodeSender.hpp b/xs/src/libslic3r/GCodeSender.hpp
+index cc0b2983..0f39f5a3 100644
+--- a/xs/src/libslic3r/GCodeSender.hpp
++++ b/xs/src/libslic3r/GCodeSender.hpp
+@@ -9,6 +9,7 @@
+ #include <boost/asio.hpp>
+ #include <boost/bind.hpp>
+ #include <boost/thread.hpp>
++#include <boost/core/noncopyable.hpp>
+ 
+ namespace Slic3r {
+ 
diff --git a/nixpkgs/pkgs/applications/misc/slic3r/default.nix b/nixpkgs/pkgs/applications/misc/slic3r/default.nix
new file mode 100644
index 000000000000..912deee4cb1b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/slic3r/default.nix
@@ -0,0 +1,90 @@
+{ lib, stdenv, fetchgit, perl, makeWrapper
+, makeDesktopItem, which, perlPackages, boost
+}:
+
+stdenv.mkDerivation rec {
+  version = "1.3.0";
+  pname = "slic3r";
+
+  src = fetchgit {
+    url = "git://github.com/alexrj/Slic3r";
+    rev = version;
+    sha256 = "1pg4jxzb7f58ls5s8mygza8kqdap2c50kwlsdkf28bz1xi611zbi";
+  };
+
+  buildInputs =
+  [boost] ++
+  (with perlPackages; [ perl makeWrapper which
+    EncodeLocale MathClipper ExtUtilsXSpp
+    MathConvexHullMonotoneChain MathGeometryVoronoi MathPlanePath Moo
+    IOStringy ClassXSAccessor Wx GrowlGNTP NetDBus ImportInto XMLSAX
+    ExtUtilsMakeMaker OpenGL WxGLCanvas ModuleBuild LWP
+    ExtUtilsCppGuess ModuleBuildWithXSpp ExtUtilsTypemapsDefault
+    DevelChecklib locallib
+  ]);
+
+  desktopItem = makeDesktopItem {
+    name = "slic3r";
+    exec = "slic3r";
+    icon = "slic3r";
+    comment = "G-code generator for 3D printers";
+    desktopName = "Slic3r";
+    genericName = "3D printer tool";
+    categories = "Application;Development;";
+  };
+
+  prePatch = ''
+    # In nix ioctls.h isn't available from the standard kernel-headers package
+    # on other distributions. As the copy in glibc seems to be identical to the
+    # one in the kernel, we use that one instead.
+    sed -i 's|"/usr/include/asm-generic/ioctls.h"|<asm-generic/ioctls.h>|g' xs/src/libslic3r/GCodeSender.cpp
+  '';
+
+  # note the boost-compile-error is fixed in
+  # https://github.com/slic3r/Slic3r/commit/90f108ae8e7a4315f82e317f2141733418d86a68
+  # this patch can be probably be removed in the next version after 1.3.0
+  patches = lib.optional (lib.versionAtLeast boost.version "1.56.0") ./boost-compile-error.patch;
+
+  buildPhase = ''
+    export SLIC3R_NO_AUTO=true
+    export LD=$CXX
+    export PERL5LIB="./xs/blib/arch/:./xs/blib/lib:$PERL5LIB"
+
+    substituteInPlace Build.PL \
+      --replace "0.9918" "0.9923" \
+      --replace "eval" ""
+
+    pushd xs
+      perl Build.PL
+      perl Build
+    popd
+
+    perl Build.PL --gui
+  '';
+
+  installPhase = ''
+    mkdir -p "$out/share/slic3r/"
+    cp -r * "$out/share/slic3r/"
+    wrapProgram "$out/share/slic3r/slic3r.pl" \
+      --prefix PERL5LIB : "$out/share/slic3r/xs/blib/arch:$out/share/slic3r/xs/blib/lib:$PERL5LIB"
+    mkdir -p "$out/bin"
+    ln -s "$out/share/slic3r/slic3r.pl" "$out/bin/slic3r"
+    mkdir -p "$out/share/pixmaps/"
+    ln -s "$out/share/slic3r/var/Slic3r.png" "$out/share/pixmaps/slic3r.png"
+    mkdir -p "$out/share/applications"
+    cp "$desktopItem"/share/applications/* "$out/share/applications/"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "G-code generator for 3D printers";
+    longDescription = ''
+      Slic3r is the tool you need to convert a digital 3D model into printing
+      instructions for your 3D printer. It cuts the model into horizontal
+      slices (layers), generates toolpaths to fill them and calculates the
+      amount of material to be extruded.'';
+    homepage = "https://slic3r.org/";
+    license = licenses.agpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/slmenu/default.nix b/nixpkgs/pkgs/applications/misc/slmenu/default.nix
new file mode 100644
index 000000000000..55025621fc7d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/slmenu/default.nix
@@ -0,0 +1,30 @@
+{stdenv, fetchhg}:
+let
+  s =
+  rec {
+    baseName = "slmenu";
+    version = "hg-${date}";
+    date = "2012-02-01";
+    name = "${baseName}-${version}";
+    url = "https://bitbucket.org/rafaelgg/slmenu/";
+    rev = "7e74fa5db73e8b018da48d50dbbaf11cb5c62d13";
+    sha256 = "0zb7mm8344d3xmvrl62psazcabfk75pp083jqkmywdsrikgjagv6";
+  };
+  buildInputs = [
+  ];
+in
+stdenv.mkDerivation {
+  inherit (s) name version;
+  inherit buildInputs;
+  src = fetchhg {
+    inherit (s) url sha256;
+  };
+  makeFlags = [ "PREFIX=$(out)" ];
+  meta = {
+    inherit (s) version;
+    description = ''A console dmenu-like tool'';
+    license = stdenv.lib.licenses.mit;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/slstatus/default.nix b/nixpkgs/pkgs/applications/misc/slstatus/default.nix
new file mode 100644
index 000000000000..5c13cbf86694
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/slstatus/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchgit, pkgconfig, writeText, libX11, conf ? null }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "slstatus";
+  version = "unstable-2018-04-16";
+
+  src = fetchgit {
+    url = "https://git.suckless.org/slstatus";
+    rev = "97ef7c2a1d67bb2c9c379e657fbc8e35acd6aafb";
+    sha256 = "1777hgl10imk0l2sgnqgbkfchv1mpxrd82ninzwp7f1rgwchz36v";
+  };
+
+  configFile = optionalString (conf!=null) (writeText "config.def.h" conf);
+  preBuild = optionalString (conf!=null) "cp ${configFile} config.def.h";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libX11 ];
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  meta = {
+    homepage = "https://tools.suckless.org/slstatus/";
+    description = "status monitor for window managers that use WM_NAME like dwm";
+    license = licenses.isc;
+    maintainers = with maintainers; [ geistesk ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/solaar/default.nix b/nixpkgs/pkgs/applications/misc/solaar/default.nix
new file mode 100644
index 000000000000..83a7e9d62165
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/solaar/default.nix
@@ -0,0 +1,46 @@
+{ fetchFromGitHub, lib, gobject-introspection, gtk3, python3Packages }:
+# Although we copy in the udev rules here, you probably just want to use logitech-udev-rules instead of
+# adding this to services.udev.packages on NixOS
+python3Packages.buildPythonApplication rec {
+  pname = "solaar";
+  version = "1.0.2";
+  src = fetchFromGitHub {
+    owner = "pwr-Solaar";
+    repo = "Solaar";
+    rev = "${version}";
+    sha256 = "0k5z9dap6rawiafkg1x7zjx51ala7wra6j6lvc2nn0y8r79yp7a9";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ gobject-introspection gtk3 pygobject3 pyudev ];
+
+  postInstall = ''
+    wrapProgram "$out/bin/solaar" \
+      --prefix PYTHONPATH : "$PYTHONPATH" \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH"
+    wrapProgram "$out/bin/solaar-cli" \
+      --prefix PYTHONPATH : "$PYTHONPATH" \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH"
+
+    install -Dm644 -t $out/etc/udev/rules.d rules.d/*.rules
+  '';
+
+  enableParallelBuilding = true;
+  meta = with lib; {
+    description = "Linux devices manager for the Logitech Unifying Receiver";
+    longDescription = ''
+      Solaar is a Linux device manager for Logitech’s Unifying Receiver
+      peripherals. It is able to pair/unpair devices to the receiver, and for
+      most devices read battery status.
+
+      It comes in two flavors, command-line and GUI. Both are able to list the
+      devices paired to a Unifying Receiver, show detailed info for each
+      device, and also pair/unpair supported devices with the receiver.
+
+      To be able to use it, make sure you have access to /dev/hidraw* files.
+    '';
+    license = licenses.gpl2;
+    homepage = "https://pwr-solaar.github.io/Solaar/";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ spinus ysndr ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/spacefm/default.nix b/nixpkgs/pkgs/applications/misc/spacefm/default.nix
new file mode 100644
index 000000000000..45dc487c8ed1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/spacefm/default.nix
@@ -0,0 +1,55 @@
+{ pkgs, fetchFromGitHub, stdenv, gtk3, udev, desktop-file-utils
+, shared-mime-info, intltool, pkgconfig, wrapGAppsHook, ffmpegthumbnailer
+, jmtpfs, ifuseSupport ? false, ifuse ? null, lsof, udisks2 }:
+
+stdenv.mkDerivation rec {
+  pname = "spacefm";
+  version = "1.0.6";
+
+  src = fetchFromGitHub {
+    owner = "IgnorantGuru";
+    repo = "spacefm";
+    rev = version;
+    sha256 = "089r6i40lxcwzp60553b18f130asspnzqldlpii53smz52kvpirx";
+  };
+
+  patches = [ ./glibc-fix.patch ];
+
+  configureFlags = [
+    "--with-bash-path=${pkgs.bash}/bin/bash"
+  ];
+
+  preConfigure = ''
+    configureFlags="$configureFlags --sysconfdir=$out/etc"
+  '';
+
+  postInstall = ''
+    rm -f $out/etc/spacefm/spacefm.conf
+    ln -s /etc/spacefm/spacefm.conf $out/etc/spacefm/spacefm.conf
+  '';
+
+  preFixup = ''
+    gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share")
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    gtk3 udev desktop-file-utils shared-mime-info intltool
+    wrapGAppsHook ffmpegthumbnailer jmtpfs lsof udisks2
+  ] ++ (if ifuseSupport then [ ifuse ] else []);
+  # Introduced because ifuse doesn't build due to CVEs in libplist
+  # Revert when libplist builds again…
+
+  meta = with stdenv.lib;  {
+    description = "A multi-panel tabbed file manager";
+    longDescription = ''
+      Multi-panel tabbed file and desktop manager for Linux
+      with built-in VFS, udev- or HAL-based device manager,
+      customizable menu system, and bash integration
+    '';
+    homepage = "http://ignorantguru.github.io/spacefm/";
+    platforms = platforms.linux;
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ jagajaga obadz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/spacefm/glibc-fix.patch b/nixpkgs/pkgs/applications/misc/spacefm/glibc-fix.patch
new file mode 100644
index 000000000000..b8e9f1e9195e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/spacefm/glibc-fix.patch
@@ -0,0 +1,12 @@
+diff --git a/src/main.c b/src/main.c
+index 27f5614..2b45708 100644
+--- a/src/main.c
++++ b/src/main.c
+@@ -23,6 +23,7 @@
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <sys/un.h>
++#include <sys/sysmacros.h>
+ 
+ #include <signal.h>
+ 
diff --git a/nixpkgs/pkgs/applications/misc/speedread/default.nix b/nixpkgs/pkgs/applications/misc/speedread/default.nix
new file mode 100644
index 000000000000..180b66fda8ce
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/speedread/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, perl }:
+
+stdenv.mkDerivation rec {
+  name = "speedread-unstable-2016-09-21";
+
+  src = fetchFromGitHub {
+    owner  = "pasky";
+    repo   = "speedread";
+    rev    = "93acfd61a1bf4482537ce5d71b9164b8446cb6bd";
+    sha256 = "1h94jx3v18fdlc64lfmj2g5x63fjyqb8c56k5lihl7bva0xgdkxd";
+  };
+
+  buildInputs = [ perl ];
+
+  installPhase = ''
+    install -m755 -D speedread $out/bin/speedread
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A simple terminal-based open source Spritz-alike";
+    longDescription = ''
+      Speedread is a command line filter that shows input text as a
+      per-word rapid serial visual presentation aligned on optimal
+      reading points. This allows reading text at a much more rapid
+      pace than usual as the eye can stay fixed on a single place.
+    '';
+    homepage = src.meta.homepage;
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.oxij ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/sqliteman/default.nix b/nixpkgs/pkgs/applications/misc/sqliteman/default.nix
new file mode 100644
index 000000000000..27d5610956d0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sqliteman/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, cmake, qt4, qscintilla }:
+
+stdenv.mkDerivation rec {
+  pname = "sqliteman";
+  version = "1.2.0";
+
+  src = fetchFromGitHub {
+    repo = "sqliteman";
+    owner = "pvanek";
+    rev = version;
+    sha256 = "1blzyh1646955d580f71slgdvz0nqx0qacryx0jc9w02yrag17cs";
+  };
+
+  buildInputs = [ cmake qt4 qscintilla ];
+
+  prePatch = ''
+    sed -i 's,m_file(0),m_file(QString()),' Sqliteman/sqliteman/main.cpp
+  '';
+
+  preConfigure = ''
+    cd Sqliteman
+    sed -i 's,/usr/include/Qsci,${qscintilla}/include/Qsci,' cmake/modules/FindQScintilla.cmake
+    sed -i 's,PATHS ''${QT_LIBRARY_DIR},PATHS ${qscintilla}/libs,' cmake/modules/FindQScintilla.cmake
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A simple but powerful Sqlite3 GUI database manager";
+    homepage = "http://sqliteman.yarpen.cz/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.eikek ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ssocr/default.nix b/nixpkgs/pkgs/applications/misc/ssocr/default.nix
new file mode 100644
index 000000000000..c52573785ef6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ssocr/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub, imlib2, libX11 }:
+
+stdenv.mkDerivation {
+  pname = "ssocr";
+  version = "unstable-2018-08-11";
+
+  src = fetchFromGitHub {
+    owner = "auerswal";
+    repo = "ssocr";
+    rev = "5e47e26b125a1a13bc79de93a5e87dd0b51354ca";
+    sha256 = "0yzprwflky9a7zxa3zic7gvdwqg0zy49zvrqkdxng2k1ng78k3s7";
+  };
+
+  nativeBuildInputs = [ imlib2 libX11 ]; 
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    description = "Seven Segment Optical Character Recognition";
+    homepage = "https://github.com/auerswal/ssocr";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.kroell ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ssw/default.nix b/nixpkgs/pkgs/applications/misc/ssw/default.nix
new file mode 100644
index 000000000000..24b7953fe3d2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ssw/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, pkg-config, gtk3 }:
+
+stdenv.mkDerivation rec {
+  pname = "ssw";
+  version = "0.3";
+
+  src = fetchurl {
+    url = "https://alpha.gnu.org/gnu/ssw/spread-sheet-widget-${version}.tar.gz";
+    sha256 = "1h93yyh2by6yrmkwqg38nd5knids05k5nqzcihc1hdwgzg3c4b8y";
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ gtk3 ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.gnu.org/software/ssw/";
+    license = licenses.gpl3;
+    description = "GNU Spread Sheet Widget";
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/st/default.nix b/nixpkgs/pkgs/applications/misc/st/default.nix
new file mode 100644
index 000000000000..018fd9306ae5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/st/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, pkgconfig, writeText, libX11, ncurses
+, libXft, conf ? null, patches ? [], extraLibs ? []}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "st-0.8.3";
+
+  src = fetchurl {
+    url = "https://dl.suckless.org/st/${name}.tar.gz";
+    sha256 = "0ll5wbw1szs70wdf8zy1y2ig5mfbqw2w4ls8d64r8z3y4gdf76lk";
+  };
+
+  inherit patches;
+
+  configFile = optionalString (conf!=null) (writeText "config.def.h" conf);
+  postPatch = optionalString (conf!=null) "cp ${configFile} config.def.h";
+
+  nativeBuildInputs = [ pkgconfig ncurses ];
+  buildInputs = [ libX11 libXft ] ++ extraLibs;
+
+  installPhase = ''
+    TERMINFO=$out/share/terminfo make install PREFIX=$out
+  '';
+
+  meta = {
+    homepage = "https://st.suckless.org/";
+    description = "Simple Terminal for X from Suckless.org Community";
+    license = licenses.mit;
+    maintainers = with maintainers; [andsild];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/st/xst.nix b/nixpkgs/pkgs/applications/misc/st/xst.nix
new file mode 100644
index 000000000000..3e29abee5d65
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/st/xst.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, pkgconfig, libX11, ncurses, libXext, libXft, fontconfig }:
+
+with stdenv.lib;
+
+let
+  version = "0.7.2";
+  name = "xst-${version}";
+in stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchFromGitHub {
+    owner = "gnotclub";
+    repo = "xst";
+    rev = "v${version}";
+    sha256 = "1fplgy30gyrwkjsw3z947327r98i13zd1whwkplpj9fzckhb9vs9";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libX11 ncurses libXext libXft fontconfig ];
+
+  installPhase = ''
+    TERMINFO=$out/share/terminfo make install PREFIX=$out
+  '';
+
+  meta = {
+    homepage = "https://github.com/neeasade/xst";
+    description = "Simple terminal fork that can load config from Xresources";
+    license = licenses.mit;
+    maintainers = [ maintainers.vyp ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/stag/default.nix b/nixpkgs/pkgs/applications/misc/stag/default.nix
new file mode 100644
index 000000000000..6b4bf1946306
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/stag/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchgit, curses }:
+
+stdenv.mkDerivation {
+  name = "stag-1.0";
+
+  src = fetchgit {
+    url = "https://github.com/seenaburns/stag.git";
+    rev = "90e2964959ea8242349250640d24cee3d1966ad6";
+    sha256 = "1yrzjhcwrxrxq5jj695wvpgb0pz047m88yq5n5ymkcw5qr78fy1v";
+  };
+
+  buildInputs = [ stdenv curses ];
+
+  installPhase = ''
+    make install PREFIX=$out
+  '';
+
+  meta = {
+    homepage = "https://github.com/seenaburns/stag";
+    description = "Terminal streaming bar graph passed through stdin";
+    license = stdenv.lib.licenses.bsdOriginal;
+    maintainers = [ stdenv.lib.maintainers.matthiasbeyer ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/stog/default.nix b/nixpkgs/pkgs/applications/misc/stog/default.nix
new file mode 100644
index 000000000000..038d04adeaa8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/stog/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitLab, ocaml, findlib, ocf, ptime,
+  uutf, uri, ppx_blob, xtmpl, ocaml_lwt, higlo, omd
+}:
+
+stdenv.mkDerivation rec {
+  pname = "stog";
+  version = "0.18.0";
+  src = fetchFromGitLab {
+    domain = "framagit.org";
+    owner = "zoggy";
+    repo = "stog";
+    rev = version;
+    sha256 = "154gl3ljxqlw8wz1vmsyv8180igrl5bjq0wir7ybrnzq2cdflkv0";
+  };
+
+  buildInputs = [ ocaml uutf ];
+  propagatedBuildInputs = [ findlib omd ppx_blob ocf ptime uri xtmpl ocaml_lwt higlo ];
+
+  createFindlibDestdir = true;
+
+  patches = [ ./install.patch ];
+
+  meta = with stdenv.lib; {
+    description = "XML documents and web site compiler";
+    homepage = "https://www.good-eris.net/stog";
+    license = licenses.lgpl3;
+    platforms = ocaml.meta.platforms or [];
+    maintainers = with maintainers; [ regnat ];
+  };
+}
+
+
diff --git a/nixpkgs/pkgs/applications/misc/stog/install.patch b/nixpkgs/pkgs/applications/misc/stog/install.patch
new file mode 100644
index 000000000000..a2407d3079f5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/stog/install.patch
@@ -0,0 +1,18 @@
+diff --git a/src/Makefile b/src/Makefile
+index 736dd037..79a85b9c 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -431,11 +431,12 @@ install-lib:
+ install-share:
+ 
+ install-bin:
++	mkdir $(out)/bin
+ 	$(CP) $(MAIN) $(MAIN_BYTE) $(TMPL) $(TMPL_BYTE) \
+ 		$(SERVER) $(SERVER_BYTE) $(OCAML_SESSION) \
+ 	  $(MK_STOG) $(MK_STOG_BYTE) $(MK_STOG_OCAML) \
+ 	  $(LATEX2STOG) $(LATEX2STOG_BYTE) \
+-		`dirname \`which $(OCAMLC)\``/
++	  $(out)/bin
+ 
+ uninstall: uninstall-lib uninstall-share uninstall-bin
+ 
diff --git a/nixpkgs/pkgs/applications/misc/stretchly/default.nix b/nixpkgs/pkgs/applications/misc/stretchly/default.nix
new file mode 100644
index 000000000000..87e8316c2c4f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/stretchly/default.nix
@@ -0,0 +1,62 @@
+{ stdenv, lib, fetchurl, makeWrapper, wrapGAppsHook, electron
+, common-updater-scripts
+, writeShellScript
+}:
+
+stdenv.mkDerivation rec {
+  pname = "stretchly";
+  version = "0.21.1";
+
+  src = fetchurl {
+    url = "https://github.com/hovancik/stretchly/releases/download/v${version}/stretchly-${version}.tar.xz";
+    sha256 = "0776pywyqylwd33m85l4wdr89x0q9xkrjgliag10fp1bswz844lf";
+  };
+
+  nativeBuildInputs = [
+    wrapGAppsHook
+  ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin $out/share/${pname}/
+    mv resources/app.asar $out/share/${pname}/
+
+    makeWrapper ${electron}/bin/electron $out/bin/${pname} \
+      --add-flags $out/share/${pname}/app.asar \
+      "''${gappsWrapperArgs[@]}" \
+      --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ stdenv.cc.cc.lib ]}"
+
+    runHook postInstall
+  '';
+
+
+  passthru = {
+    updateScript = writeShellScript "update-stretchly" ''
+      set -eu -o pipefail
+
+      # get the latest release version
+      latest_version=$(curl -s https://api.github.com/repos/hovancik/stretchly/releases/latest | jq --raw-output .tag_name | sed -e 's/^v//')
+
+      echo "updating to $latest_version..."
+
+      ${common-updater-scripts}/bin/update-source-version stretchly "$latest_version"
+    '';
+  };
+
+  meta = with stdenv.lib; {
+    description = "A break time reminder app";
+    longDescription = ''
+      stretchly is a cross-platform electron app that reminds you to take
+      breaks when working on your computer. By default, it runs in your tray
+      and displays a reminder window containing an idea for a microbreak for 20
+      seconds every 10 minutes. Every 30 minutes, it displays a window
+      containing an idea for a longer 5 minute break.
+    '';
+    homepage = "https://hovancik.net/stretchly";
+    downloadPage = "https://hovancik.net/stretchly/downloads/";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ cdepillabout ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/stupidterm/default.nix b/nixpkgs/pkgs/applications/misc/stupidterm/default.nix
new file mode 100644
index 000000000000..2016059d81e7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/stupidterm/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, pkgconfig, vte, gtk, pcre2 }:
+
+stdenv.mkDerivation {
+  pname = "stupidterm";
+  version = "2019-03-26";
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ vte gtk pcre2 ];
+
+  src = fetchFromGitHub {
+    owner = "esmil";
+    repo = "stupidterm";
+    rev = "f824e41c2ca9016db73556c5d2f5a2861e235c8e";
+    sha256 = "1f73wvqqvj5pr3fvb7jjc4bi1iwgkkknz24k8n69mdb75jnfjipp";
+  };
+
+  makeFlags = [ "PKGCONFIG=${pkgconfig}/bin/${pkgconfig.targetPrefix}pkg-config" "binary=stupidterm" ];
+
+  installPhase = ''
+    install -D stupidterm $out/bin/stupidterm
+    install -D -m 644 stupidterm.desktop $out/share/applications/stupidterm.desktop
+    install -D -m 644 stupidterm.ini $out/share/stupidterm/stupidterm.ini
+
+    substituteInPlace $out/share/applications/stupidterm.desktop \
+      --replace "Exec=st" "Exec=$out/bin/stupidterm"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple wrapper around the VTE terminal emulator widget for GTK";
+    homepage = "https://github.com/esmil/stupidterm";
+    license = licenses.lgpl3Plus;
+    maintainers = [ maintainers.etu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/styx/default.nix b/nixpkgs/pkgs/applications/misc/styx/default.nix
new file mode 100644
index 000000000000..06bf1bd5f2fa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/styx/default.nix
@@ -0,0 +1,71 @@
+{ stdenv, fetchFromGitHub, caddy, asciidoctor
+, file, lessc, sass, multimarkdown, linkchecker
+, perlPackages, python27 }:
+
+stdenv.mkDerivation rec {
+  pname = "styx";
+  version = "0.7.2";
+
+  src = fetchFromGitHub {
+    owner  = "styx-static";
+    repo   = "styx";
+    rev    = "0f0a878156eac416620a177cc030fa9f2f69b1b8";
+    sha256 = "0ig456j1s17w4zhhcmkrskpy6n7061v5f2isa3qhipmn0gwb91af";
+  };
+
+  server = "${caddy}/bin/caddy";
+  linkcheck = "${linkchecker}/bin/linkchecker";
+
+  nativeBuildInputs = [ asciidoctor ];
+
+  outputs = [ "out" "lib" "themes" ];
+
+  propagatedBuildInputs = [
+    file
+    lessc
+    sass
+    asciidoctor
+    multimarkdown
+    perlPackages.ImageExifTool
+    (python27.withPackages (ps: [ ps.parsimonious ]))
+  ];
+
+  installPhase = ''
+    mkdir $out
+    install -D -m 777 src/styx.sh $out/bin/styx
+
+    mkdir -p $out/share/styx-src
+    cp -r ./* $out/share/styx-src
+
+    mkdir -p $out/share/doc/styx
+    asciidoctor src/doc/index.adoc       -o $out/share/doc/styx/index.html
+    asciidoctor src/doc/styx-themes.adoc -o $out/share/doc/styx/styx-themes.html
+    asciidoctor src/doc/library.adoc     -o $out/share/doc/styx/library.html
+    cp -r src/doc/highlight $out/share/doc/styx/
+    cp -r src/doc/imgs $out/share/doc/styx/
+
+    substituteAllInPlace $out/bin/styx
+    substituteAllInPlace $out/share/doc/styx/index.html
+    substituteAllInPlace $out/share/doc/styx/styx-themes.html
+    substituteAllInPlace $out/share/doc/styx/library.html
+
+    mkdir -p $out/share/styx/scaffold
+    cp -r src/scaffold $out/share/styx
+    cp -r src/tools $out/share/styx
+
+    mkdir $lib
+    cp -r src/lib/* $lib
+
+    mkdir $themes
+    cp -r themes/* $themes
+  '';
+
+  meta = with stdenv.lib; {
+    description  = "Nix based static site generator";
+    maintainers  = with maintainers; [ ericsagnes ];
+    homepage     = "https://styx-static.github.io/styx-site/";
+    downloadPage = "https://github.com/styx-static/styx/";
+    platforms    = platforms.all;
+    license      = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/subsurface/0001-core-fix-libgit-ifdef-to-handle-libgit2-v1.0-and-onw.patch b/nixpkgs/pkgs/applications/misc/subsurface/0001-core-fix-libgit-ifdef-to-handle-libgit2-v1.0-and-onw.patch
new file mode 100644
index 000000000000..027e3f493e12
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/subsurface/0001-core-fix-libgit-ifdef-to-handle-libgit2-v1.0-and-onw.patch
@@ -0,0 +1,41 @@
+From dfa4bcafec4425659a409550085417af3c5c787b Mon Sep 17 00:00:00 2001
+From: Florian Klink <flokli@flokli.de>
+Date: Sat, 11 Apr 2020 12:38:38 +0200
+Subject: [PATCH] core: fix libgit ifdef to handle libgit2 v1.0 and onwards
+
+Conditional code for older libgit versions was removed in
+https://github.com/Subsurface-divelog/subsurface/pull/2737,
+but it's a non-trivial backport, and master currently isn't really ready
+for a release.
+
+So instead ship a patch fixing the one broken libgit2 conditional until
+a 4.10 release has been made.
+
+Note the inverted logic - the if branch now handles the old libgit
+condition, and the else branch the newer versions, consistent with how
+it's done in the rest of the subsurface codebase.
+---
+ core/git-access.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/core/git-access.c b/core/git-access.c
+index 3688cb90c..9997fc8fd 100644
+--- a/core/git-access.c
++++ b/core/git-access.c
+@@ -359,10 +359,10 @@ static int try_to_git_merge(git_repository *repo, git_reference **local_p, git_r
+ 	}
+ 
+ 	git_merge_init_options(&merge_options, GIT_MERGE_OPTIONS_VERSION);
+-#if !LIBGIT2_VER_MAJOR && LIBGIT2_VER_MINOR > 23
+-	merge_options.flags = GIT_MERGE_FIND_RENAMES;
+-#else
++#if !LIBGIT2_VER_MAJOR && LIBGIT2_VER_MINOR <= 22
+ 	merge_options.tree_flags = GIT_MERGE_TREE_FIND_RENAMES;
++#else
++	merge_options.flags = GIT_MERGE_FIND_RENAMES;
+ #endif
+ 	merge_options.file_favor = GIT_MERGE_FILE_FAVOR_UNION;
+ 	merge_options.rename_threshold = 100;
+-- 
+2.25.1
+
diff --git a/nixpkgs/pkgs/applications/misc/subsurface/default.nix b/nixpkgs/pkgs/applications/misc/subsurface/default.nix
new file mode 100644
index 000000000000..e189351022b9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/subsurface/default.nix
@@ -0,0 +1,114 @@
+{ stdenv, fetchurl, fetchFromGitHub, autoreconfHook, cmake, wrapQtAppsHook, pkgconfig, qmake
+, curl, grantlee, libgit2, libusb-compat-0_1, libssh2, libxml2, libxslt, libzip, zlib
+, qtbase, qtconnectivity, qtlocation, qtsvg, qttools, qtwebkit, libXcomposite
+}:
+
+let
+  version = "4.9.3";
+
+  subsurfaceSrc = (fetchFromGitHub {
+    owner = "Subsurface-divelog";
+    repo = "subsurface";
+    rev = "v${version}";
+    sha256 = "1i07f7appifx9j205x5a7ng01wsipxr6n9a3692pm60jli2nsir5";
+    fetchSubmodules = true;
+  });
+
+  libdc = stdenv.mkDerivation {
+    pname = "libdivecomputer-ssrf";
+    inherit version;
+
+    src = subsurfaceSrc;
+    sourceRoot = "source/libdivecomputer";
+
+    nativeBuildInputs = [ autoreconfHook ];
+
+    buildInputs = [ zlib ];
+
+    enableParallelBuilding = true;
+
+    meta = with stdenv.lib; {
+      homepage = "http://www.libdivecomputer.org";
+      description = "A cross-platform and open source library for communication with dive computers from various manufacturers";
+      maintainers = with maintainers; [ mguentner ];
+      license = licenses.lgpl21;
+      platforms = platforms.all;
+    };
+  };
+
+  googlemaps = stdenv.mkDerivation rec {
+    pname = "googlemaps";
+
+    version = "2017-12-18";
+
+    src = fetchFromGitHub {
+      owner = "vladest";
+      repo = "googlemaps";
+      rev = "79f3511d60dc9640de02a5f24656094c8982b26d";
+      sha256 = "11334w0bnfb97sv23vvj2b5hcwvr0171hxldn91jms9y12l5j15d";
+    };
+
+    nativeBuildInputs = [ qmake ];
+
+    buildInputs = [ qtbase qtlocation libXcomposite ];
+
+    pluginsSubdir = "lib/qt-${qtbase.qtCompatVersion}/plugins";
+
+    installPhase = ''
+      mkdir -p $out $(dirname ${pluginsSubdir}/geoservices)
+      mkdir -p ${pluginsSubdir}/geoservices
+      mv *.so ${pluginsSubdir}/geoservices
+      mv lib $out/
+    '';
+
+    enableParallelBuilding = true;
+
+    meta = with stdenv.lib; {
+      inherit (src.meta) homepage;
+      description = "QtLocation plugin for Google maps tile API";
+      maintainers = with maintainers; [ orivej ];
+      license = licenses.mit;
+      platforms = platforms.all;
+    };
+  };
+
+in stdenv.mkDerivation {
+  pname = "subsurface";
+  inherit version;
+
+  src = subsurfaceSrc;
+
+  # remove with the 4.10 release
+  patches = [ ./0001-core-fix-libgit-ifdef-to-handle-libgit2-v1.0-and-onw.patch ];
+
+  buildInputs = [
+    libdc googlemaps
+    curl grantlee libgit2 libssh2 libusb-compat-0_1 libxml2 libxslt libzip
+    qtbase qtconnectivity qtsvg qttools qtwebkit
+  ];
+
+  nativeBuildInputs = [ cmake wrapQtAppsHook pkgconfig ];
+
+  cmakeFlags = [
+    "-DLIBDC_FROM_PKGCONFIG=ON"
+    "-DNO_PRINTING=OFF"
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru = { inherit version libdc googlemaps; };
+
+  meta = with stdenv.lib; {
+    description = "A divelog program";
+    longDescription = ''
+      Subsurface can track single- and multi-tank dives using air, Nitrox or TriMix.
+      It allows tracking of dive locations including GPS coordinates (which can also
+      conveniently be entered using a map interface), logging of equipment used and
+      names of other divers, and lets users rate dives and provide additional notes.
+    '';
+    homepage = "https://subsurface-divelog.org";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ mguentner ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/super_user_spark/default.nix b/nixpkgs/pkgs/applications/misc/super_user_spark/default.nix
new file mode 100644
index 000000000000..dd1218282d85
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/super_user_spark/default.nix
@@ -0,0 +1,32 @@
+{ mkDerivation, fetchgit, aeson, aeson-pretty, base, bytestring, directory
+, filepath, hspec, hspec-core, HUnit, mtl, optparse-applicative
+, parsec, process, pureMD5, QuickCheck, shelly, stdenv, text
+, transformers, unix
+}:
+mkDerivation {
+  pname = "super-user-spark";
+  version = "0.3.2.0-dev";
+  src = fetchgit {
+    url = "https://github.com/NorfairKing/super-user-spark";
+    sha256 = "0akyc51bghzkk8j75n0i8v8rrsklidwvljhx3aibxfbkqp33372g";
+    rev = "ab8635682d67842b9e6d909cf3c618014e4157f2";
+  };
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    aeson aeson-pretty base bytestring directory filepath mtl
+    optparse-applicative parsec process pureMD5 shelly text
+    transformers unix
+  ];
+  executableHaskellDepends = [ base ];
+  testHaskellDepends = [
+    aeson aeson-pretty base bytestring directory filepath hspec
+    hspec-core HUnit mtl optparse-applicative parsec process pureMD5
+    QuickCheck shelly text transformers unix
+  ];
+  jailbreak = true;
+  description = "Configure your dotfile deployment with a DSL";
+  license = stdenv.lib.licenses.mit;
+  homepage = "https://github.com/NorfairKing/super-user-spark";
+  maintainers = [ stdenv.lib.maintainers.badi ];
+}
diff --git a/nixpkgs/pkgs/applications/misc/sweethome3d/default.nix b/nixpkgs/pkgs/applications/misc/sweethome3d/default.nix
new file mode 100644
index 000000000000..926db03652d6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sweethome3d/default.nix
@@ -0,0 +1,98 @@
+{ lib, stdenv, fetchurl, fetchsvn, makeWrapper, makeDesktopItem, jdk, jre, ant
+, gtk3, gsettings-desktop-schemas, p7zip, libXxf86vm }:
+
+let
+
+  # TODO: Should we move this to `lib`? Seems like its would be useful in many cases.
+  extensionOf = filePath:
+    lib.concatStringsSep "." (lib.tail (lib.splitString "." (builtins.baseNameOf filePath)));
+
+  installIcons = iconName: icons: lib.concatStringsSep "\n" (lib.mapAttrsToList (size: iconFile: ''
+    mkdir -p "$out/share/icons/hicolor/${size}/apps"
+    ln -s -T "${iconFile}" "$out/share/icons/hicolor/${size}/apps/${iconName}.${extensionOf iconFile}"
+  '') icons);
+
+  mkSweetHome3D =
+  { pname, module, version, src, license, description, desktopName, icons }:
+
+  stdenv.mkDerivation rec {
+    inherit pname version src description;
+    exec = stdenv.lib.toLower module;
+    sweethome3dItem = makeDesktopItem {
+      inherit exec desktopName;
+      name = pname;
+      icon = pname;
+      comment =  description;
+      genericName = "Computer Aided (Interior) Design";
+      categories = "Application;Graphics;2DGraphics;3DGraphics;";
+    };
+
+    patchPhase = ''
+      patchelf --set-rpath ${libXxf86vm}/lib lib/java3d-1.6/linux/amd64/libnativewindow_awt.so
+      patchelf --set-rpath ${libXxf86vm}/lib lib/java3d-1.6/linux/amd64/libnativewindow_x11.so
+      patchelf --set-rpath ${libXxf86vm}/lib lib/java3d-1.6/linux/i586/libnativewindow_awt.so
+      patchelf --set-rpath ${libXxf86vm}/lib lib/java3d-1.6/linux/i586/libnativewindow_x11.so
+    '';
+
+    buildInputs = [ ant jdk jre makeWrapper p7zip gtk3 gsettings-desktop-schemas ];
+
+    buildPhase = ''
+      ant furniture textures help
+      mkdir -p $out/share/{java,applications}
+      mv "build/"*.jar $out/share/java/.
+      ant
+    '';
+
+    installPhase = ''
+      mkdir -p $out/bin
+      cp install/${module}-${version}.jar $out/share/java/.
+
+      ${installIcons pname icons}
+
+      cp "${sweethome3dItem}/share/applications/"* $out/share/applications
+
+      makeWrapper ${jre}/bin/java $out/bin/$exec \
+        --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3.out}/share:${gsettings-desktop-schemas}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" \
+        --add-flags "-jar $out/share/java/${module}-${version}.jar -cp $out/share/java/Furniture.jar:$out/share/java/Textures.jar:$out/share/java/Help.jar -d${toString stdenv.hostPlatform.parsed.cpu.bits}"
+    '';
+
+    dontStrip = true;
+
+    meta = {
+      homepage = "http://www.sweethome3d.com/index.jsp";
+      inherit description;
+      inherit license;
+      maintainers = [ stdenv.lib.maintainers.edwtjo ];
+      platforms = stdenv.lib.platforms.linux;
+    };
+  };
+
+  d2u = stdenv.lib.replaceChars ["."] ["_"];
+
+in {
+
+  application = mkSweetHome3D rec {
+    pname = stdenv.lib.toLower module + "-application";
+    version = "6.3";
+    module = "SweetHome3D";
+    description = "Design and visualize your future home";
+    license = stdenv.lib.licenses.gpl2Plus;
+    src = fetchsvn {
+      url = "https://svn.code.sf.net/p/sweethome3d/code/tags/V_" + d2u version + "/SweetHome3D/";
+      sha256 = "1c13g0f73jgbzmjhdm9knqq1kh3vdl04zl3xlp30g9a1n0jkr38i";
+      rev = "6896";
+    };
+    desktopName = "Sweet Home 3D";
+    icons = {
+      "32x32" = fetchurl {
+        url = "http://sweethome3d.cvs.sourceforge.net/viewvc/sweethome3d/SweetHome3D/deploy/SweetHome3DIcon32x32.png";
+        sha256 = "1r2fhfg27mx00nfv0qj66rhf719s2g1vhdis7bdc9mqk9x0mb0ir";
+      };
+      "48x48" = fetchurl {
+        url = "http://sweethome3d.cvs.sourceforge.net/viewvc/sweethome3d/SweetHome3D/deploy/SweetHome3DIcon48x48.png";
+        sha256 = "1ap6d75dyqqvx21wddvn8vw2apq3v803vmbxdriwd0dw9rq3zn4g";
+      };
+    };
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/sweethome3d/editors.nix b/nixpkgs/pkgs/applications/misc/sweethome3d/editors.nix
new file mode 100644
index 000000000000..ec759572443c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sweethome3d/editors.nix
@@ -0,0 +1,93 @@
+{ stdenv, fetchcvs, makeWrapper, makeDesktopItem, jdk, jre, ant
+, gtk3, gsettings-desktop-schemas, sweethome3dApp }:
+
+let
+
+  sweetExec = with stdenv.lib;
+    m: "sweethome3d-"
+    + removeSuffix "libraryeditor" (toLower m)
+    + "-editor";
+
+  mkEditorProject =
+  { pname, module, version, src, license, description, desktopName }:
+
+  stdenv.mkDerivation rec {
+    application = sweethome3dApp;
+    inherit pname module version src description;
+    exec = sweetExec module;
+    editorItem = makeDesktopItem {
+      inherit exec desktopName;
+      name = pname;
+      comment =  description;
+      genericName = "Computer Aided (Interior) Design";
+      categories = "Application;Graphics;2DGraphics;3DGraphics;";
+    };
+
+    buildInputs = [ ant jre jdk makeWrapper gtk3 gsettings-desktop-schemas ];
+
+    patchPhase = ''
+      sed -i -e 's,../SweetHome3D,${application.src},g' build.xml
+      sed -i -e 's,lib/macosx/java3d-1.6/jogl-all.jar,lib/java3d-1.6/jogl-all.jar,g' build.xml
+    '';
+
+    buildPhase = ''
+      ant -lib ${application.src}/libtest -lib ${application.src}/lib -lib ${jdk}/lib
+    '';
+
+    installPhase = ''
+      mkdir -p $out/bin
+      mkdir -p $out/share/{java,applications}
+      cp ${module}-${version}.jar $out/share/java/.
+      cp "${editorItem}/share/applications/"* $out/share/applications
+      makeWrapper ${jre}/bin/java $out/bin/$exec \
+        --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3.out}/share:${gsettings-desktop-schemas}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" \
+        --add-flags "-jar $out/share/java/${module}-${version}.jar -d${toString stdenv.hostPlatform.parsed.cpu.bits}"
+    '';
+
+    dontStrip = true;
+
+    meta = {
+      homepage = "http://www.sweethome3d.com/index.jsp";
+      inherit description;
+      inherit license;
+      maintainers = [ stdenv.lib.maintainers.edwtjo ];
+      platforms = stdenv.lib.platforms.linux;
+    };
+
+  };
+
+  d2u = stdenv.lib.replaceChars ["."] ["_"];
+
+in {
+
+  textures-editor = mkEditorProject rec {
+    version = "1.5";
+    module = "TexturesLibraryEditor";
+    pname = module;
+    description = "Easily create SH3T files and edit the properties of the texture images it contain";
+    license = stdenv.lib.licenses.gpl2Plus;
+    src = fetchcvs {
+      cvsRoot = ":pserver:anonymous@sweethome3d.cvs.sourceforge.net:/cvsroot/sweethome3d";
+      sha256 = "15wxdns3hc8yq362x0rj53bcxran2iynxznfcb9js85psd94zq7h";
+      module = module;
+      tag = "V_" + d2u version;
+    };
+    desktopName = "Sweet Home 3D - Textures Library Editor";
+  };
+
+  furniture-editor = mkEditorProject rec {
+    version = "1.19";
+    module = "FurnitureLibraryEditor";
+    pname = module;
+    description = "Quickly create SH3F files and edit the properties of the 3D models it contain";
+    license = stdenv.lib.licenses.gpl2;
+    src = fetchcvs {
+      cvsRoot = ":pserver:anonymous@sweethome3d.cvs.sourceforge.net:/cvsroot/sweethome3d";
+      sha256 = "0rr4nqil1mngak3ds5vz7f1whrgcgzpk6fb0qcr5ljms0jx0ylvs";
+      module = module;
+      tag = "V_" + d2u version;
+    };
+    desktopName = "Sweet Home 3D - Furniture Library Editor";
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/synapse/default.nix b/nixpkgs/pkgs/applications/misc/synapse/default.nix
new file mode 100644
index 000000000000..751c0a48f5b3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/synapse/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, gettext, pkgconfig, glib, libnotify, gtk3, libgee
+, keybinder3, json-glib, zeitgeist, vala, gobject-introspection
+}:
+
+let
+  version = "0.2.99.4";
+in stdenv.mkDerivation rec {
+  pname = "synapse";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://launchpad.net/synapse-project/0.3/${version}/+download/${pname}-${version}.tar.xz";
+    sha256 = "1g6x9knb4jy1d8zgssjhzkgac583137pibisy9whjs8mckaj4k1j";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig gettext vala
+    # For setup hook
+    gobject-introspection
+  ];
+  buildInputs = [
+    glib libnotify gtk3 libgee keybinder3 json-glib zeitgeist
+  ];
+
+  meta = with stdenv.lib; {
+    longDescription = ''
+      Semantic launcher written in Vala that you can use to start applications
+      as well as find and access relevant documents and files by making use of
+      the Zeitgeist engine
+    '';
+    description = "Semantic launcher to start applications and find relevant files";
+    homepage = "https://launchpad.net/synapse-project";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ mahe ];
+    platforms = with platforms; all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/syncthing-tray/default.nix b/nixpkgs/pkgs/applications/misc/syncthing-tray/default.nix
new file mode 100644
index 000000000000..38826b7735fb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/syncthing-tray/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, buildGoPackage, pkgconfig, libappindicator-gtk3 }:
+
+buildGoPackage rec {
+  pname = "syncthing-tray";
+  version = "0.7";
+
+  goPackagePath = "github.com/alex2108/syncthing-tray";
+
+  src = fetchFromGitHub {
+    owner = "alex2108";
+    repo = "syncthing-tray";
+    rev = "v${version}";
+    sha256 = "0869kinnsfzb8ydd0sv9fgqsi1sy5rhqg4whfdnrv82xjc71xyw3";
+  };
+
+  goDeps = ./deps.nix;
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libappindicator-gtk3 ];
+
+  meta = with stdenv.lib; {
+    description = "Simple application tray for syncthing";
+    homepage = "https://github.com/alex2108/syncthing-tray";
+    license = licenses.mit;
+    maintainers = with maintainers; [ nickhu ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/syncthing-tray/deps.nix b/nixpkgs/pkgs/applications/misc/syncthing-tray/deps.nix
new file mode 100644
index 000000000000..1103146ed1b7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/syncthing-tray/deps.nix
@@ -0,0 +1,93 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+[
+  {
+    goPackagePath = "github.com/alex2108/systray";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alex2108/systray";
+      rev = "40e874866be2dc2c57ab031bcbde27a76b90721a";
+      sha256 = "1bxnb6skb9ss0lwlwswql07ardkhm28nxglvlsxkdlmzv1dcwy1q";
+    };
+  }
+  {
+    goPackagePath = "github.com/getlantern/context";
+    fetch = {
+      type = "git";
+      url = "https://github.com/getlantern/context";
+      rev = "624d99b1798d7c5375ea1d3ca4c5b04d58f7c775";
+      sha256 = "09yf9x6478a5z01hybr98zwa8ax3fx7l6wwsvdkxp3fdg9dqm13b";
+    };
+  }
+  {
+    goPackagePath = "github.com/getlantern/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/getlantern/errors";
+      rev = "99fa440517e8f3d1e4cd8d6dbed6b41f4c1ed3d6";
+      sha256 = "08rl32l5ks67hcgjxik62nd5g558mv4101kmz1ak7d3vfgg3m6i3";
+    };
+  }
+  {
+    goPackagePath = "github.com/getlantern/golog";
+    fetch = {
+      type = "git";
+      url = "https://github.com/getlantern/golog";
+      rev = "cca714f7feb5df8e455f409b549d384441ac4578";
+      sha256 = "0gnf30n38zkx356cqc6jdv1kbzy59ddqhqndwrxsm2n2zc3b5p7q";
+    };
+  }
+  {
+    goPackagePath = "github.com/getlantern/hex";
+    fetch = {
+      type = "git";
+      url = "https://github.com/getlantern/hex";
+      rev = "083fba3033ad473db3dd31c9bb368473d37581a7";
+      sha256 = "18q6rypmcqmcwlfzrrdcz08nff0a289saplvd9y3ifnfcqdw3j77";
+    };
+  }
+  {
+    goPackagePath = "github.com/getlantern/hidden";
+    fetch = {
+      type = "git";
+      url = "https://github.com/getlantern/hidden";
+      rev = "d52a649ab33af200943bb599898dbdcfdbc94cb7";
+      sha256 = "0133qmp4sjq8da5di3459vc5g5nqbpqra0f558zd95js3fdmkmsi";
+    };
+  }
+  {
+    goPackagePath = "github.com/getlantern/ops";
+    fetch = {
+      type = "git";
+      url = "https://github.com/getlantern/ops";
+      rev = "b70875f5d689a9438bca72aefd7142a2af889b18";
+      sha256 = "0cfa2bbkykbzbskmgd2an34him72z6f3y88ag1v5ffpb0d6bnar7";
+    };
+  }
+  {
+    goPackagePath = "github.com/getlantern/stack";
+    fetch = {
+      type = "git";
+      url = "https://github.com/getlantern/stack";
+      rev = "02f928aad224fbccd50d66edd776fc9d1e9f2f2b";
+      sha256 = "0ddl5r4iw3c7p4drh4d8phl7d0ssdddsnd3xjm1lzgxylqq6r568";
+    };
+  }
+  {
+    goPackagePath = "github.com/oxtoacart/bpool";
+    fetch = {
+      type = "git";
+      url = "https://github.com/oxtoacart/bpool";
+      rev = "4e1c5567d7c2dd59fa4c7c83d34c2f3528b025d6";
+      sha256 = "01kk6dhkz96yhp3p5v2rjwq8mbrwrdsn6glqw7jp4h7g5za7yi95";
+    };
+  }
+  {
+    goPackagePath = "github.com/toqueteos/webbrowser";
+    fetch = {
+      type = "git";
+      url = "https://github.com/toqueteos/webbrowser";
+      rev = "e2ebfdc6cb1a3fdc4fc4dbd20a0cae0c2e406792";
+      sha256 = "0sgjnxrq0jgipkij8b6xiy4am9bv9zziqxxdhw15rdjc5piyk3a2";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/misc/syncthingtray/default.nix b/nixpkgs/pkgs/applications/misc/syncthingtray/default.nix
new file mode 100644
index 000000000000..28506c8fa883
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/syncthingtray/default.nix
@@ -0,0 +1,64 @@
+{ mkDerivation
+, stdenv
+, lib
+, fetchFromGitHub
+, qtbase
+, qtwebengine
+, qtdeclarative
+, extra-cmake-modules
+, cpp-utilities
+, qtutilities
+, cmake
+, kio
+, plasma-framework
+, qttools
+, webviewSupport ? true
+, jsSupport ? true
+, kioPluginSupport ? true
+, plasmoidSupport  ? true
+, systemdSupport ? true
+}:
+
+mkDerivation rec {
+  version = "0.10.10";
+  pname = "syncthingtray";
+
+  src = fetchFromGitHub {
+    owner = "Martchus";
+    repo = "syncthingtray";
+    rev = "v${version}";
+    sha256 = "14nn0igcx4kd7pcna1ggz3yz9xfk1czgy87fxkmn2p91psmy2i18";
+  };
+
+  buildInputs = [ qtbase cpp-utilities qtutilities ]
+    ++ lib.optionals webviewSupport [ qtwebengine ]
+    ++ lib.optionals jsSupport [ qtdeclarative ]
+    ++ lib.optionals kioPluginSupport [ kio ]
+    ++ lib.optionals plasmoidSupport [ extra-cmake-modules plasma-framework ]
+  ;
+
+  nativeBuildInputs = [ cmake qttools ];
+
+  # No tests are available by upstream, but we test --help anyway
+  doInstallCheck = true;
+  installCheckPhase = ''
+    $out/bin/syncthingtray --help | grep ${version}
+  '';
+
+  cmakeFlags = [
+    # See https://github.com/Martchus/syncthingtray/issues/42
+    "-DQT_PLUGIN_DIR:STRING=${placeholder "out"}/lib/qt-5"
+  ] ++ lib.optionals (!plasmoidSupport) ["-DNO_PLASMOID=ON"]
+    ++ lib.optionals (!kioPluginSupport) ["-DNO_FILE_ITEM_ACTION_PLUGIN=ON"]
+    ++ lib.optionals systemdSupport ["-DSYSTEMD_SUPPORT=ON"]
+    ++ lib.optionals (!webviewSupport) ["-DWEBVIEW_PROVIDER:STRING=none"]
+  ;
+
+  meta = with lib; {
+    homepage = "https://github.com/Martchus/syncthingtray";
+    description = "Tray application and Dolphin/Plasma integration for Syncthing";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ doronbehar ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/synergy/build-tests.patch b/nixpkgs/pkgs/applications/misc/synergy/build-tests.patch
new file mode 100644
index 000000000000..ab08195e794d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/synergy/build-tests.patch
@@ -0,0 +1,97 @@
+From 9c2278dad498b8e4040f30c80cf65b3a089ba218 Mon Sep 17 00:00:00 2001
+From: talyz <kim.lindberger@gmail.com>
+Date: Fri, 14 Feb 2020 16:26:36 +0100
+Subject: [PATCH] Build tests again
+
+The tests were accidentally disabled in
+688095d0a7d22704b5c3282bc68b41ceca42ab7e. Since then, the code has
+drifted slightly: the synergy lib has been renamed from synergy to
+synlib in 4263fd17177d7717b04ac6d6ec62efa2f657ed74 and the curl
+dependency was dropped in 491bb2de000245a943b8298462c4a9d8f34c9a44.
+
+This reenables the tests, targets the right lib and removes the
+obsolete test.
+---
+ src/CMakeLists.txt                            |  2 +
+ src/test/integtests/CMakeLists.txt            |  2 +-
+ .../integtests/arch/ArchInternetTests.cpp     | 37 -------------------
+ src/test/unittests/CMakeLists.txt             |  2 +-
+ 4 files changed, 4 insertions(+), 39 deletions(-)
+ delete mode 100644 src/test/integtests/arch/ArchInternetTests.cpp
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index ab63a066..fee080ab 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -22,3 +22,5 @@ add_subdirectory(cmd)
+ if (SYNERGY_BUILD_LEGACY_GUI)
+ add_subdirectory(gui)
+ endif (SYNERGY_BUILD_LEGACY_GUI)
++
++add_subdirectory(test)
+diff --git a/src/test/integtests/CMakeLists.txt b/src/test/integtests/CMakeLists.txt
+index f39968a3..096ba3d5 100644
+--- a/src/test/integtests/CMakeLists.txt
++++ b/src/test/integtests/CMakeLists.txt
+@@ -68,4 +68,4 @@ endif()
+ 
+ add_executable(integtests ${sources})
+ target_link_libraries(integtests
+-    arch base client common io ipc mt net platform server synergy gtest gmock ${libs} ${OPENSSL_LIBS})
++    arch base client common io ipc mt net platform server synlib gtest gmock ${libs} ${OPENSSL_LIBS})
+diff --git a/src/test/integtests/arch/ArchInternetTests.cpp b/src/test/integtests/arch/ArchInternetTests.cpp
+deleted file mode 100644
+index 95823e9f..00000000
+--- a/src/test/integtests/arch/ArchInternetTests.cpp
++++ /dev/null
+@@ -1,37 +0,0 @@
+-/*
+- * synergy -- mouse and keyboard sharing utility
+- * Copyright (C) 2014-2016 Symless Ltd.
+- *
+- * This package is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU General Public License
+- * found in the file LICENSE that should have accompanied this file.
+- *
+- * This package is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+- */
+-
+-#include "arch/Arch.h"
+-
+-#include "test/global/gtest.h"
+-
+-#define TEST_URL "https://symless.com/tests/?testString"
+-//#define TEST_URL "http://localhost/synergy/tests/?testString"
+-
+-TEST(ArchInternetTests, get)
+-{
+-    ARCH_INTERNET internet;
+-    String result = internet.get(TEST_URL);
+-    ASSERT_EQ("Hello world!", result);
+-}
+-
+-TEST(ArchInternetTests, urlEncode)
+-{
+-    ARCH_INTERNET internet;
+-    String result = internet.urlEncode("hello=+&world");
+-    ASSERT_EQ("hello%3D%2B%26world", result);
+-}
+diff --git a/src/test/unittests/CMakeLists.txt b/src/test/unittests/CMakeLists.txt
+index 54131eb2..46307e90 100644
+--- a/src/test/unittests/CMakeLists.txt
++++ b/src/test/unittests/CMakeLists.txt
+@@ -68,4 +68,4 @@ endif()
+ 
+ add_executable(unittests ${sources})
+ target_link_libraries(unittests
+-    arch base client server common io net platform server synergy mt ipc gtest gmock shared ${libs} ${OPENSSL_LIBS})
++    arch base client server common io net platform server synlib mt ipc gtest gmock shared ${libs} ${OPENSSL_LIBS})
+-- 
+2.25.0
+
diff --git a/nixpkgs/pkgs/applications/misc/synergy/default.nix b/nixpkgs/pkgs/applications/misc/synergy/default.nix
new file mode 100644
index 000000000000..bb922f3ca5b2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/synergy/default.nix
@@ -0,0 +1,81 @@
+{ stdenv, lib, fetchFromGitHub, cmake, openssl, qttools
+, ApplicationServices, Carbon, Cocoa, CoreServices, ScreenSaver
+, xlibsWrapper, libX11, libXi, libXtst, libXrandr, xinput, avahi-compat
+, withGUI ? true, wrapQtAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "synergy";
+  version = "1.11.1";
+
+  src = fetchFromGitHub {
+    owner = "symless";
+    repo = "synergy-core";
+    rev = "${version}-stable";
+    sha256 = "1jk60xw4h6s5crha89wk4y8rrf1f3bixgh5mzh3cq3xyrkba41gh";
+  };
+
+  patches = [ ./build-tests.patch
+  ] ++ lib.optional stdenv.isDarwin ./macos_build_fix.patch;
+
+  # Since the included gtest and gmock don't support clang and the
+  # segfault when built with gcc9, we replace it with 1.10.0 for
+  # synergy-1.11.0. This should become unnecessary when upstream
+  # updates these dependencies.
+  googletest = fetchFromGitHub {
+    owner = "google";
+    repo = "googletest";
+    rev = "release-1.10.0";
+    sha256 = "1zbmab9295scgg4z2vclgfgjchfjailjnvzc6f5x9jvlsdi3dpwz";
+  };
+
+  postPatch = ''
+    rm -r ext/*
+    cp -r ${googletest}/googlemock ext/gmock/
+    cp -r ${googletest}/googletest ext/gtest/
+    chmod -R +w ext/
+  '';
+
+  cmakeFlags = lib.optional (!withGUI) "-DSYNERGY_BUILD_LEGACY_GUI=OFF";
+
+  nativeBuildInputs = [ cmake ] ++ lib.optional withGUI wrapQtAppsHook;
+
+  dontWrapQtApps = true;
+
+  buildInputs = [
+    openssl
+  ] ++ lib.optionals withGUI [
+    qttools
+  ] ++ lib.optionals stdenv.isDarwin [
+    ApplicationServices Carbon Cocoa CoreServices ScreenSaver
+  ] ++ lib.optionals stdenv.isLinux [
+    xlibsWrapper libX11 libXi libXtst libXrandr xinput avahi-compat
+  ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp bin/{synergyc,synergys,synergyd,syntool} $out/bin/
+  '' + lib.optionalString withGUI ''
+    cp bin/synergy $out/bin/
+    wrapQtApp $out/bin/synergy --prefix PATH : ${lib.makeBinPath [ openssl ]}
+  '' + lib.optionalString stdenv.isLinux ''
+    mkdir -p $out/share/icons/hicolor/scalable/apps
+    cp ../res/synergy.svg $out/share/icons/hicolor/scalable/apps/
+    mkdir -p $out/share/applications
+    substitute ../res/synergy.desktop $out/share/applications/synergy.desktop --replace /usr/bin $out/bin
+  '' + lib.optionalString stdenv.isDarwin ''
+    mkdir -p $out/Applications/
+    mv bundle/Synergy.app $out/Applications/
+    ln -s $out/bin $out/Applications/Synergy.app/Contents/MacOS
+  '';
+
+  doCheck = true;
+  checkPhase = "bin/unittests";
+
+  meta = with lib; {
+    description = "Share one mouse and keyboard between multiple computers";
+    homepage = "http://synergy-project.org/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ aszlig enzime ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/synergy/macos_build_fix.patch b/nixpkgs/pkgs/applications/misc/synergy/macos_build_fix.patch
new file mode 100644
index 000000000000..2ce277d261b1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/synergy/macos_build_fix.patch
@@ -0,0 +1,29 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index a2297311..25a51f56 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -138,7 +138,7 @@ if (UNIX)
+ 
+ 
+     if (APPLE)
+-        set (CMAKE_CXX_FLAGS "--sysroot ${CMAKE_OSX_SYSROOT} ${CMAKE_CXX_FLAGS} -DGTEST_USE_OWN_TR1_TUPLE=1")
++        set (CMAKE_CXX_FLAGS "--sysroot ${CMAKE_OSX_SYSROOT} ${CMAKE_CXX_FLAGS}")
+ 
+         find_library (lib_ScreenSaver ScreenSaver)
+         find_library (lib_IOKit IOKit)
+@@ -292,14 +292,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
+         ${OPENSSL_ROOT}/lib/libssl.lib
+         ${OPENSSL_ROOT}/lib/libcrypto.lib
+     )
+-elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+-    set (OPENSSL_ROOT /usr/local/opt/openssl)
+-    include_directories (BEFORE SYSTEM ${OPENSSL_ROOT}/include)
+-    set (OPENSSL_LIBS
+-        ${OPENSSL_ROOT}/lib/libssl.a
+-        ${OPENSSL_ROOT}/lib/libcrypto.a
+-    )
+-elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
++elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+     set (OPENSSL_LIBS ssl crypto)
+ else()
+     message (FATAL_ERROR "Couldn't find OpenSSL")
diff --git a/nixpkgs/pkgs/applications/misc/systembus-notify/default.nix b/nixpkgs/pkgs/applications/misc/systembus-notify/default.nix
new file mode 100644
index 000000000000..28c1be4219d6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/systembus-notify/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, systemd }:
+
+stdenv.mkDerivation rec {
+  pname = "systembus-notify";
+  version = "1.0";
+
+  src = fetchFromGitHub {
+    owner = "rfjakob";
+    repo = "systembus-notify";
+    rev = "v${version}";
+    sha256 = "11zq84qfmbyl51d3r6294l2bjhlgwa9bx7d263g9fkqrwsg0si0y";
+  };
+
+  buildInputs = [ systemd ];
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm755 systembus-notify -t $out/bin
+    install -Dm644 systembus-notify.desktop -t $out/etc/xdg/autostart
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "System bus notification daemon";
+    homepage = "https://github.com/rfjakob/systembus-notify";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/tabula/default.nix b/nixpkgs/pkgs/applications/misc/tabula/default.nix
new file mode 100644
index 000000000000..1b29118c9b14
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tabula/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchzip, jre, makeWrapper }:
+
+
+stdenv.mkDerivation rec {
+  pname = "tabula";
+  version = "1.2.1";
+
+
+  src = fetchzip {
+    url = "https://github.com/tabulapdf/tabula/releases/download/v${version}/tabula-jar-${version}.zip";
+    sha256 = "0lkpv8hkji81fanyxm7ph8421fr9a6phqc3pbhw2bc4gljg7sgxi";
+  };
+
+
+  buildInputs = [ makeWrapper ];
+
+
+  installPhase = ''
+    mkdir -pv $out/share/tabula
+    cp -v * $out/share/tabula
+
+    makeWrapper ${jre}/bin/java $out/bin/tabula --add-flags "-jar $out/share/tabula/tabula.jar"
+  '';
+
+
+  meta = with stdenv.lib; {
+    description = "A tool for liberating data tables locked inside PDF files";
+    longDescription = ''
+      If you’ve ever tried to do anything with data provided to you in PDFs, you
+      know how painful it is — there's no easy way to copy-and-paste rows of data
+      out of PDF files. Tabula allows you to extract that data into a CSV or
+      Microsoft Excel spreadsheet using a simple, easy-to-use interface.
+    '';
+    homepage = "https://tabula.technology/";
+    license = licenses.mit;
+    maintainers = [ maintainers.dpaetzel ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/taizen/default.nix b/nixpkgs/pkgs/applications/misc/taizen/default.nix
new file mode 100644
index 000000000000..993606d39c0e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taizen/default.nix
@@ -0,0 +1,25 @@
+{ rustPlatform, lib, fetchFromGitHub, ncurses, openssl, pkgconfig, Security, stdenv }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "taizen";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "NerdyPepper";
+    repo = pname;
+    rev = "5c1876429e2da7424e9d31b1e16f5a3147cc58d0";
+    sha256 = "09izgx7icvizskdy9kplk0am61p7550fsd0v42zcihq2vap2j92z";
+  };
+
+  buildInputs = [ ncurses openssl ] ++ lib.optional stdenv.isDarwin Security;
+  nativeBuildInputs = [ pkgconfig ];
+
+  cargoSha256 = "0chrgwm97y1a3gj218x25yqk1y1h74a6gzyxjdm023msvs58nkni";
+
+  meta = with lib; {
+    homepage = "https://crates.io/crates/taizen";
+    license = licenses.mit;
+    description = "curses based mediawiki browser";
+    maintainers = with maintainers; [ ma27 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/taskell/default.nix b/nixpkgs/pkgs/applications/misc/taskell/default.nix
new file mode 100644
index 000000000000..488e49c21817
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskell/default.nix
@@ -0,0 +1,65 @@
+{ lib, haskellPackages, fetchFromGitHub }:
+
+let
+  version = "1.7.3";
+  sha256  = "1439fh79ilc6jvz894cfzhk7gy5r2sv4v79bvqmmqbzbqk9qsbvx";
+
+in (haskellPackages.mkDerivation {
+  pname = "taskell";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "smallhadroncollider";
+    repo = "taskell";
+    rev = version;
+    inherit sha256;
+  };
+
+  postPatch = ''${haskellPackages.hpack}/bin/hpack'';
+
+  # basically justStaticExecutables; TODO: use justStaticExecutables
+  enableSharedExecutables = false;
+  enableLibraryProfiling = false;
+  isExecutable = true;
+  doHaddock = false;
+  postFixup = "rm -rf $out/lib $out/nix-support $out/share/doc";
+
+  # copied from packages.yaml
+  libraryHaskellDepends = with haskellPackages; [
+    classy-prelude
+    # base <=5
+    aeson
+    brick
+    # bytestring
+    config-ini
+    # containers
+    # directory
+    file-embed
+    fold-debounce
+    http-conduit
+    http-client
+    http-types
+    lens
+    raw-strings-qq
+    # mtl
+    # template-haskell
+    # text
+    time
+    vty
+  ];
+
+  executableHaskellDepends = [];
+
+  testHaskellDepends = with haskellPackages; [
+    tasty
+    tasty-discover
+    tasty-expected-failure
+    tasty-hunit
+  ];
+
+  description = "Command-line Kanban board/task manager with support for Trello boards and GitHub projects";
+  homepage    = "https://taskell.app";
+  license     = lib.licenses.bsd3;
+  maintainers = with lib.maintainers; [ matthiasbeyer ];
+  platforms   = with lib.platforms; unix ++ darwin;
+})
diff --git a/nixpkgs/pkgs/applications/misc/taskjuggler/2.x/default.nix b/nixpkgs/pkgs/applications/misc/taskjuggler/2.x/default.nix
new file mode 100644
index 000000000000..a1d04a13af85
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskjuggler/2.x/default.nix
@@ -0,0 +1,75 @@
+{stdenv, fetchurl,
+zlib, libpng, libjpeg, perl, expat, qt3,
+libX11, libXext, libSM, libICE,
+}:
+
+stdenv.mkDerivation rec {
+  name = "taskjuggler-2.4.3";
+  src = fetchurl {
+    url = "http://www.taskjuggler.org/download/${name}.tar.bz2";
+    sha256 = "14gkxa2vwfih5z7fffbavps7m44z5bq950qndigw2icam5ks83jl";
+  };
+
+  buildInputs =
+    [zlib libpng libX11 libXext libSM libICE perl expat libjpeg]
+    ;
+
+  patches = [ ./timezone-glibc.patch ];
+
+  preConfigure = ''
+    for i in $(grep -R "/bin/bash" .  | sed 's/:.*//'); do
+      substituteInPlace $i --replace /bin/bash $(type -Pp bash)
+    done
+    for i in $(grep -R "/usr/bin/perl" .  | sed 's/:.*//'); do
+      substituteInPlace $i --replace /usr/bin/perl ${perl}/bin/perl
+    done
+
+    # Fix install
+    for i in docs/en/Makefile.in Examples/BigProject/Common/Makefile.in Examples/BigProject/Makefile.in Examples/BigProject/Project1/Makefile.in Examples/BigProject/Project2/Makefile.in Examples/FirstProject/Makefile.in Examples/ShiftSchedule/Makefile.in; do
+      # Do not use variable substitution because there is some text after the last '@'
+      substituteInPlace $i --replace 'docprefix = @PACKAGES_DIR@' 'docprefix = $(docdir)/'
+    done
+
+    # Comment because the ical export need the KDE support.
+    for i in Examples/FirstProject/AccountingSoftware.tjp; do
+      substituteInPlace $i --replace "icalreport" "# icalreport"
+    done
+
+    for i in TestSuite/testdir TestSuite/createrefs \
+      TestSuite/Scheduler/Correct/Expression.sh; do
+      substituteInPlace $i --replace '/bin/rm' 'rm'
+    done
+
+    # Some tests require writing at $HOME
+    HOME=$TMPDIR
+  '';
+
+  configureFlags = [
+    "--without-arts" "--disable-docs"
+    "--x-includes=${libX11.dev}/include"
+    "--x-libraries=${libX11.out}/lib"
+    "--with-qt-dir=${qt3}"
+  ];
+
+  preInstall = ''
+    mkdir -p $out/share/emacs/site-lisp/
+    cp Contrib/emacs/taskjug.el $out/share/emacs/site-lisp/
+  '';
+
+  # kde_locale is not defined when installing without kde.
+  installFlags = [ "kde_locale=\${out}/share/locale" ];
+
+  meta = {
+    homepage = "http://www.taskjuggler.org";
+    license = stdenv.lib.licenses.gpl2;
+    description = "Project management tool";
+    longDescription = ''
+      TaskJuggler is a modern and powerful, Open Source project management
+      tool. Its new approach to project planing and tracking is more
+      flexible and superior to the commonly used Gantt chart editing
+      tools. It has already been successfully used in many projects and
+      scales easily to projects with hundreds of resources and thousands of
+      tasks.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/taskjuggler/2.x/timezone-glibc.patch b/nixpkgs/pkgs/applications/misc/taskjuggler/2.x/timezone-glibc.patch
new file mode 100644
index 000000000000..f599e8a1730c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskjuggler/2.x/timezone-glibc.patch
@@ -0,0 +1,48 @@
+From the discussion in http://groups.google.com/group/taskjuggler-users/browse_thread/thread/f65a3efd4dcae2fc/a44c711a9d28ebee?show_docid=a44c711a9d28ebee
+
+From: Chris Schlaeger <cs@kde.org>
+Date: Sat, 27 Feb 2010 06:33:35 +0000 (+0100)
+Subject: Try to fix time zone check for glibc 2.11.
+X-Git-Url: http://www.taskjuggler.org/cgi-bin/gitweb.cgi?p=taskjuggler.git;a=commitdiff_plain;h=2382ed54f90c3c899badb3f56aaa2b3b5dba361e;hp=c666c5068312fec7db75e17d1c567d94127d1dda
+
+Try to fix time zone check for glibc 2.11.
+
+Reported-by: Lee <pFQh8RQn4fqB@dyweni.com>
+---
+
+diff --git a/taskjuggler/Utility.cpp b/taskjuggler/Utility.cpp
+index 5e2bf21..9b7fce2 100644
+--- a/taskjuggler/Utility.cpp
++++ b/taskjuggler/Utility.cpp
+@@ -206,16 +206,28 @@ setTimezone(const char* tZone)
+ 
+     /* To validate the tZone value we call tzset(). It will convert the zone
+      * into a three-letter acronym in case the tZone value is good. If not, it
+-     * will just copy the wrong value to tzname[0] (glibc < 2.5) or fall back
+-     * to UTC. */
++     * will
++     * - copy the wrong value to tzname[0] (glibc < 2.5)
++     * - or fall back to UTC (glibc >= 2.5 && < 2.11)
++     * - copy the part before the '/' to tzname[0] (glibc >= 2.11).
++     */
+     tzset();
++    char* region = new(char[strlen(tZone) + 1]);
++    region[0] = 0;
++    if (strchr(tZone, '/'))
++    {
++        strcpy(region, tZone);
++        *strchr(region, '/') = 0;
++    }
+     if (timezone2tz(tZone) == 0 &&
+-        (strcmp(tzname[0], tZone) == 0 ||
++        (strcmp(tzname[0], tZone) == 0 || strcmp(tzname[0], region) == 0 ||
+          (strcmp(tZone, "UTC") != 0 && strcmp(tzname[0], "UTC") == 0)))
+     {
+         UtilityError = QString(i18n("Illegal timezone '%1'")).arg(tZone);
++        delete region;
+         return false;
+     }
++    delete region;
+ 
+     if (!LtHashTab)
+         return true;
diff --git a/nixpkgs/pkgs/applications/misc/taskjuggler/3.x/Gemfile b/nixpkgs/pkgs/applications/misc/taskjuggler/3.x/Gemfile
new file mode 100644
index 000000000000..77cbaeeed793
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskjuggler/3.x/Gemfile
@@ -0,0 +1,2 @@
+source 'http://rubygems.org'
+gem 'taskjuggler'
diff --git a/nixpkgs/pkgs/applications/misc/taskjuggler/3.x/Gemfile.lock b/nixpkgs/pkgs/applications/misc/taskjuggler/3.x/Gemfile.lock
new file mode 100644
index 000000000000..8831993117d2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskjuggler/3.x/Gemfile.lock
@@ -0,0 +1,21 @@
+GEM
+  remote: http://rubygems.org/
+  specs:
+    mail (2.6.3)
+      mime-types (>= 1.16, < 3)
+    mime-types (2.6.1)
+    taskjuggler (3.5.0)
+      mail (>= 2.4.3)
+      term-ansicolor (>= 1.0.7)
+    term-ansicolor (1.3.2)
+      tins (~> 1.0)
+    tins (1.6.0)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  taskjuggler
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/applications/misc/taskjuggler/3.x/default.nix b/nixpkgs/pkgs/applications/misc/taskjuggler/3.x/default.nix
new file mode 100644
index 000000000000..6b3ef60d6382
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskjuggler/3.x/default.nix
@@ -0,0 +1,15 @@
+{ lib, bundlerEnv, ruby }:
+
+bundlerEnv {
+  name = "taskjuggler-3.5.0";
+
+  inherit ruby;
+  gemdir = ./.;
+
+  meta = {
+    description = "A modern and powerful project management tool";
+    homepage    = "http://taskjuggler.org/";
+    license     = lib.licenses.gpl2;
+    platforms   = lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/taskjuggler/3.x/gemset.nix b/nixpkgs/pkgs/applications/misc/taskjuggler/3.x/gemset.nix
new file mode 100644
index 000000000000..deeeac106943
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskjuggler/3.x/gemset.nix
@@ -0,0 +1,47 @@
+{
+  mail = {
+    version = "2.6.3";
+    source = {
+      type = "gem";
+      sha256 = "1nbg60h3cpnys45h7zydxwrl200p7ksvmrbxnwwbpaaf9vnf3znp";
+    };
+    dependencies = [
+      "mime-types"
+    ];
+  };
+  mime-types = {
+    version = "2.6.1";
+    source = {
+      type = "gem";
+      sha256 = "1vnrvf245ijfyxzjbj9dr6i1hkjbyrh4yj88865wv9bs75axc5jv";
+    };
+  };
+  taskjuggler = {
+    version = "3.5.0";
+    source = {
+      type = "gem";
+      sha256 = "0r84rlc7a6w7p9nc9mgycbs5h0hq0kzscjq7zj3296xyf0afiwj2";
+    };
+    dependencies = [
+      "mail"
+      "term-ansicolor"
+    ];
+  };
+  term-ansicolor = {
+    version = "1.3.2";
+    source = {
+      type = "gem";
+      sha256 = "0ydbbyjmk5p7fsi55ffnkq79jnfqx65c3nj8d9rpgl6sw85ahyys";
+    };
+    dependencies = [
+      "tins"
+    ];
+  };
+  tins = {
+    version = "1.6.0";
+    source = {
+      type = "gem";
+      sha256 = "02qarvy17nbwvslfgqam8y6y7479cwmb1a6di9z18hzka4cf90hz";
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/taskjuggler/Gemfile b/nixpkgs/pkgs/applications/misc/taskjuggler/Gemfile
new file mode 100644
index 000000000000..ab9f5a354646
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskjuggler/Gemfile
@@ -0,0 +1,2 @@
+source 'https://rubygems.org'
+gem 'taskjuggler'
diff --git a/nixpkgs/pkgs/applications/misc/taskjuggler/Gemfile.lock b/nixpkgs/pkgs/applications/misc/taskjuggler/Gemfile.lock
new file mode 100644
index 000000000000..0f05c496173f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskjuggler/Gemfile.lock
@@ -0,0 +1,21 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    mail (2.7.1)
+      mini_mime (>= 0.1.1)
+    mini_mime (1.0.1)
+    taskjuggler (3.6.0)
+      mail (>= 2.4.3)
+      term-ansicolor (>= 1.0.7)
+    term-ansicolor (1.7.1)
+      tins (~> 1.0)
+    tins (1.20.2)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  taskjuggler
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/applications/misc/taskjuggler/default.nix b/nixpkgs/pkgs/applications/misc/taskjuggler/default.nix
new file mode 100644
index 000000000000..64753397833a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskjuggler/default.nix
@@ -0,0 +1,21 @@
+{ lib, bundlerApp, bundlerUpdateScript }:
+
+bundlerApp {
+  pname = "taskjuggler";
+  gemdir = ./.;
+
+  exes = [
+    "tj3" "tj3client" "tj3d" "tj3man" "tj3ss_receiver" "tj3ss_sender"
+    "tj3ts_receiver" "tj3ts_sender" "tj3ts_summary" "tj3webd"
+  ];
+
+  passthru.updateScript = bundlerUpdateScript "taskjuggler";
+
+  meta = with lib; {
+    description = "A modern and powerful project management tool";
+    homepage    = "http://taskjuggler.org/";
+    license     = licenses.gpl2;
+    platforms   = platforms.unix;
+    maintainers = with maintainers; [ manveru nicknovitski ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/taskjuggler/gemset.nix b/nixpkgs/pkgs/applications/misc/taskjuggler/gemset.nix
new file mode 100644
index 000000000000..fcf607de8157
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskjuggler/gemset.nix
@@ -0,0 +1,55 @@
+{
+  mail = {
+    dependencies = ["mini_mime"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc";
+      type = "gem";
+    };
+    version = "2.7.1";
+  };
+  mini_mime = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1q4pshq387lzv9m39jv32vwb8wrq3wc4jwgl4jk209r4l33v09d3";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  taskjuggler = {
+    dependencies = ["mail" "term-ansicolor"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ky3cydl3szhdyxsy4k6zxzjlbll7mlq025aj6xd5jmh49k3pfbp";
+      type = "gem";
+    };
+    version = "3.6.0";
+  };
+  term-ansicolor = {
+    dependencies = ["tins"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xq5kci9215skdh27npyd3y55p812v4qb4x2hv3xsjvwqzz9ycwj";
+      type = "gem";
+    };
+    version = "1.7.1";
+  };
+  tins = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1pqj45n216zrz7yckdbdknlmhh187iqzx8fp76y2h0jrgqjfkxmj";
+      type = "gem";
+    };
+    version = "1.20.2";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/misc/tasknc/default.nix b/nixpkgs/pkgs/applications/misc/tasknc/default.nix
new file mode 100644
index 000000000000..46378aec33ae
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tasknc/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, makeWrapper, perl, ncurses5, taskwarrior }:
+
+stdenv.mkDerivation rec {
+  version = "2017-05-15";
+  pname = "tasknc";
+
+  src = fetchFromGitHub {
+    owner = "lharding";
+    repo = "tasknc";
+    rev = "c41d0240e9b848e432f01de735f28de93b934ae7";
+    sha256 = "0f7l7fy06p33vw6f6sjnjxfhw951664pmwhjl573jvmh6gi2h1yr";
+  };
+
+  nativeBuildInputs = [
+    makeWrapper
+    perl # For generating the man pages with pod2man
+  ];
+
+  buildInputs = [ ncurses5 ];
+
+  hardeningDisable = [ "format" ];
+
+  buildFlags = [ "VERSION=${version}" ];
+
+  installPhase = ''
+    mkdir -p $out/bin/
+    mkdir -p $out/share/man/man1
+    mkdir -p $out/share/tasknc
+
+    DESTDIR=$out PREFIX= MANPREFIX=/share/man make install
+
+    wrapProgram $out/bin/tasknc --prefix PATH : ${taskwarrior}/bin
+  '';
+
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/lharding/tasknc";
+    description = "A ncurses wrapper around taskwarrior";
+    maintainers = with maintainers; [ matthiasbeyer infinisil ];
+    platforms = platforms.linux; # Cannot test others
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/taskopen/default.nix b/nixpkgs/pkgs/applications/misc/taskopen/default.nix
new file mode 100644
index 000000000000..a60ca997ee03
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskopen/default.nix
@@ -0,0 +1,34 @@
+{ fetchurl, stdenv, makeWrapper, which, perl, perlPackages }:
+
+stdenv.mkDerivation {
+  name = "taskopen-1.1.4";
+  src = fetchurl {
+    url = "https://github.com/ValiValpas/taskopen/archive/v1.1.4.tar.gz";
+    sha256 = "774dd89f5c92462098dd6227e181268e5ec9930bbc569f25784000df185c71ba";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ which perl ] ++ (with perlPackages; [ JSON ]);
+
+  installPhase = ''
+    # We don't need a DESTDIR and an empty string results in an absolute path
+    # (due to the trailing slash) which breaks the build.
+    sed 's|$(DESTDIR)/||' -i Makefile
+
+    make PREFIX=$out
+    make PREFIX=$out install
+  '';
+
+  postFixup = ''
+    wrapProgram $out/bin/taskopen \
+         --set PERL5LIB "$PERL5LIB"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Script for taking notes and open urls with taskwarrior";
+    homepage = "https://github.com/ValiValpas/taskopen";
+    platforms = platforms.linux;
+    license = stdenv.lib.licenses.free ;
+    maintainers = [ maintainers.winpat ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/tasksh/default.nix b/nixpkgs/pkgs/applications/misc/tasksh/default.nix
new file mode 100644
index 000000000000..4c577049f44a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tasksh/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, cmake, readline }:
+
+stdenv.mkDerivation rec {
+  pname = "tasksh";
+  version = "1.2.0";
+
+  enableParallelBuilding = true;
+
+  src = fetchurl {
+    url = "https://taskwarrior.org/download/${pname}-${version}.tar.gz";
+    sha256 = "1z8zw8lld62fjafjvy248dncjk0i4fwygw0ahzjdvyyppx4zjhkf";
+  };
+
+  buildInputs = [ readline ];
+  nativeBuildInputs = [ cmake ];
+
+  meta = with stdenv.lib; {
+    description = "REPL for taskwarrior";
+    homepage = "http://tasktools.org";
+    license = licenses.mit;
+    maintainers = with maintainers; [ matthiasbeyer ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/taskwarrior/0001-bash-completion-quote-pattern-argument-to-grep.patch b/nixpkgs/pkgs/applications/misc/taskwarrior/0001-bash-completion-quote-pattern-argument-to-grep.patch
new file mode 100644
index 000000000000..8e5c0139e555
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskwarrior/0001-bash-completion-quote-pattern-argument-to-grep.patch
@@ -0,0 +1,28 @@
+From 0d677475b710b9bb61d4b3ac5435c36b47d3a155 Mon Sep 17 00:00:00 2001
+From: Peter Simons <simons@cryp.to>
+Date: Wed, 8 Feb 2017 11:28:42 +0100
+Subject: [PATCH] bash-completion: quote pattern argument to grep
+
+Without the quotes, bash might expand that pattern based on the contents of the
+current working directory or -- if nullglob is set -- the argument disappears
+outright if no directory entry matches.
+---
+ scripts/bash/task.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/scripts/bash/task.sh b/scripts/bash/task.sh
+index e0c7fb03..d15ed3eb 100644
+--- a/scripts/bash/task.sh
++++ b/scripts/bash/task.sh
+@@ -72,7 +72,7 @@ _task_offer_contexts() {
+     COMPREPLY=( $(compgen -W "$($taskcommand _context) define delete list none show" -- $cur) )
+ }
+ 
+-_task_context_alias=$($taskcommand show | grep alias.*context | cut -d' ' -f1 | cut -d. -f2)
++_task_context_alias=$($taskcommand show | grep "alias.*context" | cut -d' ' -f1 | cut -d. -f2)
+ 
+ _task()
+ {
+-- 
+2.11.1
+
diff --git a/nixpkgs/pkgs/applications/misc/taskwarrior/default.nix b/nixpkgs/pkgs/applications/misc/taskwarrior/default.nix
new file mode 100644
index 000000000000..67f2fd8927bd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskwarrior/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, cmake, libuuid, gnutls }:
+
+stdenv.mkDerivation rec {
+  pname = "taskwarrior";
+  version = "2.5.1";
+
+  src = fetchurl {
+    url = "https://taskwarrior.org/download/task-${version}.tar.gz";
+    sha256 = "059a9yc58wcicc6xxsjh1ph7k2yrag0spsahp1wqmsq6h7jwwyyq";
+  };
+
+  patches = [ ./0001-bash-completion-quote-pattern-argument-to-grep.patch ];
+
+  nativeBuildInputs = [ cmake libuuid gnutls ];
+
+  postInstall = ''
+    mkdir -p "$out/share/bash-completion/completions"
+    ln -s "../../doc/task/scripts/bash/task.sh" "$out/share/bash-completion/completions/task.bash"
+    mkdir -p "$out/share/fish/vendor_completions.d"
+    ln -s "../../../share/doc/task/scripts/fish/task.fish" "$out/share/fish/vendor_completions.d/"
+    mkdir -p "$out/share/zsh/site-functions"
+    ln -s "../../../share/doc/task/scripts/zsh/_task" "$out/share/zsh/site-functions/"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Highly flexible command-line tool to manage TODO lists";
+    homepage = "https://taskwarrior.org";
+    license = licenses.mit;
+    maintainers = with maintainers; [ marcweber ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/tdrop/default.nix b/nixpkgs/pkgs/applications/misc/tdrop/default.nix
new file mode 100644
index 000000000000..020298a0c523
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tdrop/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, lib, fetchFromGitHub, makeWrapper
+, xwininfo, xdotool, xprop }:
+
+stdenv.mkDerivation {
+  pname = "tdrop";
+  version = "unstable-2018-11-13";
+
+  src = fetchFromGitHub {
+    owner = "noctuid";
+    repo = "tdrop";
+    rev = "198795c0d2573a31979330d6a2ae946eb81deebf";
+    sha256 = "1fhibqgmls64mylcb6q46ipmg1q6pvaqm26vz933gqav6cqsbdzs";
+  };
+
+  dontBuild = true;
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  postInstall = ''
+    wrapProgram $out/bin/tdrop \
+      --prefix PATH : ${lib.makeBinPath [ xwininfo xdotool xprop ]}
+  '';
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  meta = with stdenv.lib; {
+    description = "A Glorified WM-Independent Dropdown Creator";
+    homepage = "https://github.com/noctuid/tdrop";
+    license = licenses.bsd2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ wedens ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/teleprompter/default.nix b/nixpkgs/pkgs/applications/misc/teleprompter/default.nix
new file mode 100644
index 000000000000..7cca3afa764d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/teleprompter/default.nix
@@ -0,0 +1,42 @@
+{ lib, stdenv, fetchurl, electron, makeDesktopItem, makeWrapper, nodePackages, autoPatchelfHook}:
+
+stdenv.mkDerivation rec {
+  pname = "teleprompter";
+  version = "2.3.4";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/teleprompter-imaginary-films/imaginary-${pname}-${version}-64bit.tar.gz";
+    sha256 = "084ml2l3qg46bsazaapyxdx4zavvxp0j4ycsdpdwk3f94g9xb120";
+  };
+
+  dontBuild = true;
+  dontStrip = true;
+
+  nativeBuildInputs = [ autoPatchelfHook makeWrapper nodePackages.asar ];
+  installPhase = ''
+    mkdir -p $out/bin $out/opt/teleprompter $out/share/applications
+    asar e resources/app.asar $out/opt/teleprompter/resources/app.asar.unpacked
+    ln -s ${desktopItem}/share/applications/* $out/share/applications
+  '';
+
+  postFixup = ''
+    makeWrapper ${electron}/bin/electron $out/bin/teleprompter \
+      --add-flags "$out/opt/teleprompter/resources/app.asar.unpacked --without-update"
+  '';
+
+  desktopItem = makeDesktopItem {
+     name = "teleprompter";
+     exec = "teleprompter";
+     type = "Application";
+     desktopName = "Teleprompter";
+  };
+
+  meta = with lib; {
+    description = "The most complete, free, teleprompter app on the web";
+    license = [ licenses.gpl3 ];
+    homepage = "https://github.com/ImaginarySense/Teleprompter-Core";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ Scriptkiddi ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/termdown/default.nix b/nixpkgs/pkgs/applications/misc/termdown/default.nix
new file mode 100644
index 000000000000..ad6f9e9382b7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/termdown/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, fetchFromGitHub
+, buildPythonApplication
+, click
+, pyfiglet
+, dateutil
+, setuptools
+}:
+
+buildPythonApplication rec {
+  pname = "termdown";
+  version = "1.17.0";
+
+  src = fetchFromGitHub {
+    rev = version;
+    sha256 = "1sd9z5n2a4ir35832wgxs68vwav7wxhq39b5h8pq934mp8sl3v2k";
+    repo = "termdown";
+    owner = "trehn";
+  };
+
+  propagatedBuildInputs = [ dateutil click pyfiglet setuptools ];
+
+  meta = with stdenv.lib; {
+    description = "Starts a countdown to or from TIMESPEC";
+    longDescription = "Countdown timer and stopwatch in your terminal";
+    homepage = "https://github.com/trehn/termdown";
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/terminal-notifier/default.nix b/nixpkgs/pkgs/applications/misc/terminal-notifier/default.nix
new file mode 100644
index 000000000000..cde53ef41654
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/terminal-notifier/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, runtimeShell, lib, fetchzip }:
+
+stdenv.mkDerivation rec {
+  pname = "terminal-notifier";
+
+  version = "2.0.0";
+
+  src = fetchzip {
+    url = "https://github.com/alloy/terminal-notifier/releases/download/${version}/terminal-notifier-${version}.zip";
+    sha256 = "0gi54v92hi1fkryxlz3k5s5d8h0s66cc57ds0vbm1m1qk3z4xhb0";
+    stripRoot = false;
+  };
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/Applications
+    mkdir -p $out/bin
+    cp -r terminal-notifier.app $out/Applications
+    cat >$out/bin/terminal-notifier <<EOF
+    #!${runtimeShell}
+    cd $out/Applications/terminal-notifier.app
+    exec ./Contents/MacOS/terminal-notifier "\$@"
+    EOF
+    chmod +x $out/bin/terminal-notifier
+  '';
+
+  meta = with lib; {
+    maintainers = with maintainers; [ cstrahan ];
+    homepage = "https://github.com/julienXX/terminal-notifier";
+    license = licenses.mit;
+    platforms  = platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/terminal-parrot/default.nix b/nixpkgs/pkgs/applications/misc/terminal-parrot/default.nix
new file mode 100644
index 000000000000..accaf62c60e2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/terminal-parrot/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "terminal-parrot";
+  version = "1.1.1";
+
+  src = fetchFromGitHub {
+    owner = "jmhobbs";
+    repo = "terminal-parrot";
+    rev = version;
+    sha256 = "1b4vr4s1zpkpf5kc1r2kdlp3hf88qp1f7h05g8kd62zf4sfbj722";
+  };
+
+  vendorSha256 = "1qalnhhq3fmyzj0hkzc5gk9wbypr558mz3ik5msw7fid68k2i48c";
+
+  meta = with stdenv.lib; {
+    description = "Shows colorful, animated party parrot in your terminial";
+    homepage = "https://github.com/jmhobbs/terminal-parrot";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = [ maintainers.heel ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/misc/terminator/default.nix b/nixpkgs/pkgs/applications/misc/terminator/default.nix
new file mode 100644
index 000000000000..5de8109e3a4d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/terminator/default.nix
@@ -0,0 +1,77 @@
+{ stdenv
+, fetchFromGitHub
+, python3
+, keybinder3
+, intltool
+, file
+, gtk3
+, gobject-introspection
+, libnotify
+, wrapGAppsHook
+, vte
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "terminator";
+  version = "1.92";
+
+  src = fetchFromGitHub {
+    owner = "gnome-terminator";
+    repo = "terminator";
+    rev = "v${version}";
+    sha256 = "105f660wzf9cpn24xzwaaa09igg5h3qhchafv190v5nqck6g1ssh";
+  };
+
+  nativeBuildInputs = [
+    file
+    intltool
+    gobject-introspection
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    gobject-introspection # Temporary fix, see https://github.com/NixOS/nixpkgs/issues/56943
+    keybinder3
+    libnotify
+    python3
+    vte
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    configobj
+    dbus-python
+    pygobject3
+    psutil
+    pycairo
+  ];
+
+  postPatch = ''
+    patchShebangs run_tests tests po
+    # dbus-python is correctly passed in propagatedBuildInputs, but for some reason setup.py complains.
+    # The wrapped terminator has the correct path added, so ignore this.
+    substituteInPlace setup.py --replace "'dbus-python'," ""
+  '';
+
+  checkPhase = ''
+    runHook preCheck
+
+    ./run_tests
+
+    runHook postCheck
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Terminal emulator with support for tiling and tabs";
+    longDescription = ''
+      The goal of this project is to produce a useful tool for arranging
+      terminals. It is inspired by programs such as gnome-multi-term,
+      quadkonsole, etc. in that the main focus is arranging terminals in grids
+      (tabs is the most common default method, which Terminator also supports).
+    '';
+    homepage = "https://github.com/gnome-terminator/terminator";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ bjornfor ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/terminus/default.nix b/nixpkgs/pkgs/applications/misc/terminus/default.nix
new file mode 100644
index 000000000000..4c38e530247e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/terminus/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, lib, fetchurl, dpkg, gnome2, gtk2, atk, glib, pango, gdk-pixbuf, cairo
+, freetype, fontconfig, dbus, libXi, libXcursor, libXdamage, libXrandr
+, libXcomposite, libXext, libXfixes, libXrender, libX11, libXtst, libXScrnSaver
+, libxcb, makeWrapper, nodejs
+, nss, nspr, alsaLib, cups, expat, systemd, libpulseaudio }:
+
+let
+  libPath = stdenv.lib.makeLibraryPath [
+    stdenv.cc.cc gtk2 atk glib pango gdk-pixbuf cairo freetype fontconfig dbus
+    libXi libXcursor libXdamage libXrandr libXcomposite libXext libXfixes libxcb
+    libXrender libX11 libXtst libXScrnSaver gnome2.GConf nss nspr alsaLib cups expat systemd libpulseaudio
+  ];
+in
+stdenv.mkDerivation rec {
+  version = "1.0.0-alpha.42";
+  pname = "terminus";
+  src = fetchurl {
+    url = "https://github.com/Eugeny/terminus/releases/download/v${version}/terminus_${version}_amd64.deb";
+    sha256 = "1r5n75n71zwahg4rxlnf9qzrb0651gxv0987m6bykqmfpnw91nmb";
+  };
+  buildInputs = [ dpkg makeWrapper ];
+  unpackPhase = ''
+    mkdir pkg
+    dpkg-deb -x $src pkg
+    sourceRoot=pkg
+  '';
+  installPhase = ''
+    mkdir -p "$out/bin"
+    mv opt "$out/"
+    ln -s "$out/opt/Terminus/terminus" "$out/bin/terminus"
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" --set-rpath "${libPath}:\$ORIGIN" "$out/opt/Terminus/terminus"
+    mv usr/* "$out/"
+    wrapProgram $out/bin/terminus --prefix PATH : ${lib.makeBinPath [ nodejs ]}
+  '';
+  dontPatchELF = true;
+  meta = with lib; {
+    description = "A terminal for a more modern age";
+    homepage    = "https://eugeny.github.io/terminus/";
+    maintainers = with maintainers; [ jlesquembre ];
+    license     = licenses.mit;
+    platforms   = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/termite/add_errno_header.patch b/nixpkgs/pkgs/applications/misc/termite/add_errno_header.patch
new file mode 100644
index 000000000000..81283f86a21d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/termite/add_errno_header.patch
@@ -0,0 +1,24 @@
+From 95c90f302c384f410dc92e64468ac7061b57fe2d Mon Sep 17 00:00:00 2001
+From: Michael Hoang <enzime@users.noreply.github.com>
+Date: Fri, 13 Jul 2018 19:03:09 +1000
+Subject: [PATCH] Add errno.h header which isn't always included automatically.
+
+---
+ termite.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/termite.cc b/termite.cc
+index 160fe82..13e2572 100644
+--- a/termite.cc
++++ b/termite.cc
+@@ -21,6 +21,7 @@
+ #include <cstdlib>
+ #include <cstring>
+ #include <cmath>
++#include <errno.h>
+ #include <functional>
+ #include <limits>
+ #include <map>
+-- 
+2.17.1
+
diff --git a/nixpkgs/pkgs/applications/misc/termite/default.nix b/nixpkgs/pkgs/applications/misc/termite/default.nix
new file mode 100644
index 000000000000..63565e207f77
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/termite/default.nix
@@ -0,0 +1,84 @@
+{ stdenv, fetchFromGitHub, fetchpatch, pkgconfig, vte, gtk3, ncurses, pcre2, wrapGAppsHook }:
+
+let
+
+  # termite requires VTE with some internals exposed
+  # https://github.com/thestinger/vte-ng
+  vte-ng =  vte.overrideAttrs (attrs: {
+    patches = attrs.patches or [] ++ [
+      (fetchpatch {
+        name = "0001-expose-functions-for-pausing-unpausing-output.patch";
+        url = "https://github.com/thestinger/vte-ng/commit/342e26574f50dcd40bbeaad9e839c2a6144d0c1c.patch";
+        sha256 = "1b0k9ys545q85vfki417p21kis9f36yd0hyp12phayynss6fn715";
+      })
+      (fetchpatch {
+        name = "0002-expose-function-for-setting-cursor-position.patch";
+        url = "https://github.com/thestinger/vte-ng/commit/5ae3acb69474fe5bc43767a4a3625e9ed23607a1.patch";
+        sha256 = "091sb44g2pl0zbxnxidpfmsqqc65dmkakhjb0wvlnsjckqalhs89";
+      })
+      (fetchpatch {
+        name = "0003-add-function-for-setting-the-text-selections.patch";
+        url = "https://github.com/thestinger/vte-ng/commit/742d57ecf15e24f6a5f2133a81b6c70acc8ff03c.patch";
+        sha256 = "12rq3svbj1nzridbssxsvmmb8njky3w8qdnkymz7850b3kqg277x";
+      })
+      (fetchpatch {
+        name = "0004-add-functions-to-get-set-block-selection-mode.patch";
+        url = "https://github.com/thestinger/vte-ng/commit/08748fd9cb82bd191e5c476b1682ca71f7732572.patch";
+        sha256 = "1cnhd8f7ywdgcyd6xmcd2nn39jjxzkxp4d0zsj2k7m5v74nhcs1g";
+      })
+      (fetchpatch {
+        name = "0005-expose-function-for-getting-the-selected-text.patch";
+        url = "https://github.com/thestinger/vte-ng/commit/dd74ae7c06e8888af2fc090ac6f8920a9d8227fb.patch";
+        sha256 = "0pbnbkwqxm4p9xsgvqwayvh8srk5z1kyjnigmahf9mlqn7hi6v27";
+      })
+    ];
+  });
+
+in stdenv.mkDerivation rec {
+  pname = "termite";
+  version = "15";
+
+  src = fetchFromGitHub {
+    owner = "thestinger";
+    repo = "termite";
+    rev = "v${version}";
+    sha256 = "0hp1x6lj098m3jgna274wv5dv60lnzg22297di68g4hw9djjyd2k";
+    fetchSubmodules = true;
+  };
+
+  # https://github.com/thestinger/termite/pull/516
+  patches = [ ./url_regexp_trailing.patch ./add_errno_header.patch
+    # Fix off-by-one in select_text() on libvte >= 0.55.0
+    # Expected to be included in next release (16).
+    (fetchpatch {
+      url = "https://github.com/thestinger/termite/commit/7e9a93b421b9596f8980645a46ac2ad5468dac06.patch";
+      sha256 = "0vph2m5919f7w1xnc8i6z0j44clsm1chxkfg7l71nahxyfw5yh4j";
+    })
+  ] ++ stdenv.lib.optional stdenv.isDarwin ./remove_ldflags_macos.patch;
+
+  makeFlags = [ "VERSION=v${version}" "PREFIX=" "DESTDIR=$(out)" ];
+
+  buildInputs = [ vte-ng gtk3 ncurses pcre2 ];
+
+  nativeBuildInputs = [ wrapGAppsHook pkgconfig ];
+
+  outputs = [ "out" "terminfo" ];
+
+  passthru = { inherit vte-ng; };
+
+  postInstall = ''
+    mkdir -p $terminfo/share
+    mv $out/share/terminfo $terminfo/share/terminfo
+
+    mkdir -p $out/nix-support
+    echo "$terminfo" >> $out/nix-support/propagated-user-env-packages
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A simple VTE-based terminal";
+    license = licenses.lgpl2Plus;
+    homepage = "https://github.com/thestinger/termite/";
+    maintainers = with maintainers; [ koral ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/termite/remove_ldflags_macos.patch b/nixpkgs/pkgs/applications/misc/termite/remove_ldflags_macos.patch
new file mode 100644
index 000000000000..f8c68518bb4d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/termite/remove_ldflags_macos.patch
@@ -0,0 +1,25 @@
+From 1b5a6934635c55472eb7949bd87ab3f45fa1b2f3 Mon Sep 17 00:00:00 2001
+From: Michael Hoang <enzime@users.noreply.github.com>
+Date: Fri, 13 Jul 2018 19:01:51 +1000
+Subject: [PATCH] Remove --as-needed flag from ld to fix compilation on macOS.
+
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index b115f42..ab301ba 100644
+--- a/Makefile
++++ b/Makefile
+@@ -29,7 +29,7 @@ ifeq (${CXX}, clang++)
+ 	CXXFLAGS += -Wimplicit-fallthrough
+ endif
+ 
+-LDFLAGS := -s -Wl,--as-needed ${LDFLAGS}
++LDFLAGS := -s -Wl ${LDFLAGS}
+ LDLIBS := ${shell pkg-config --libs ${GTK} ${VTE}}
+ 
+ termite: termite.cc url_regex.hh util/clamp.hh util/maybe.hh util/memory.hh
+-- 
+2.17.1
+
diff --git a/nixpkgs/pkgs/applications/misc/termite/url_regexp_trailing.patch b/nixpkgs/pkgs/applications/misc/termite/url_regexp_trailing.patch
new file mode 100644
index 000000000000..96deaa073d71
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/termite/url_regexp_trailing.patch
@@ -0,0 +1,27 @@
+Based on https://github.com/thestinger/termite/pull/516
+Modified to apply to v13
+
+From 65a454ffa8e681f3f14729cba7c42e1570a85e8a Mon Sep 17 00:00:00 2001
+From: Paul Baecher <pbaecher@gmail.com>
+Date: Thu, 7 Sep 2017 22:58:51 +0200
+Subject: [PATCH] Do not match punctuation at the end of URLs
+
+Punctuation at the end of URLs is most likely part of natural language
+or markup (for example in Markdown). Do not match it as part of the URL.
+---
+ url_regex.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/url_regex.hh b/url_regex.hh
+index 2ec6be8..3039b53 100644
+--- a/url_regex.hh
++++ b/url_regex.hh
+@@ -9,7 +9,7 @@
+ #define PORT            "(?:\\:[[:digit:]]{1,5})?"
+ #define SCHEME          "(?:[[:alpha:]][+-.[:alnum:]]*:)"
+ #define USERPASS        USERCHARS_CLASS "+(?:\\:" PASSCHARS_CLASS "+)?"
+-#define URLPATH         "(?:/[[:alnum:]\\Q-_.!~*'();/?:@&=+$,#%\\E]*)?"
++#define URLPATH         "(?:/[[:alnum:]\\Q-_.!~*'();/?:@&=+$,#%\\E]*(?<![\\Q.,:;()!?\\E]))?"
+ 
+ const char * const url_regex = SCHEME "//(?:" USERPASS "\\@)?" HOST PORT URLPATH;
+ 
diff --git a/nixpkgs/pkgs/applications/misc/termite/wrapper.nix b/nixpkgs/pkgs/applications/misc/termite/wrapper.nix
new file mode 100644
index 000000000000..379223d9076d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/termite/wrapper.nix
@@ -0,0 +1,15 @@
+{  makeWrapper, symlinkJoin, configFile ? null, termite }:
+
+if configFile == null then termite else symlinkJoin {
+  name = "termite-with-config-${termite.version}";
+
+  paths = [ termite ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  postBuild = ''
+    wrapProgram $out/bin/termite \
+      --add-flags "--config ${configFile}"
+  '';
+
+  passthru.terminfo = termite.terminfo;
+}
diff --git a/nixpkgs/pkgs/applications/misc/termonad/default.nix b/nixpkgs/pkgs/applications/misc/termonad/default.nix
new file mode 100644
index 000000000000..4388cbcfb441
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/termonad/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, ghcWithPackages, makeWrapper, packages ? (pkgSet: []) }:
+
+let
+  termonadEnv = ghcWithPackages (self: [ self.termonad ] ++ packages self);
+in stdenv.mkDerivation {
+  name = "termonad-with-packages-${termonadEnv.version}";
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildCommand = ''
+    mkdir -p $out/bin $out/share
+    makeWrapper ${termonadEnv}/bin/termonad $out/bin/termonad \
+      --set NIX_GHC "${termonadEnv}/bin/ghc"
+  '';
+
+  # trivial derivation
+  preferLocalBuild = true;
+  allowSubstitutes = false;
+}
diff --git a/nixpkgs/pkgs/applications/misc/termpdf.py/default.nix b/nixpkgs/pkgs/applications/misc/termpdf.py/default.nix
new file mode 100644
index 000000000000..5988f569109b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/termpdf.py/default.nix
@@ -0,0 +1,51 @@
+{ stdenv
+, buildPythonApplication
+, fetchFromGitHub
+, fetchPypi
+, bibtool
+, pybtex
+, pymupdf
+, pynvim
+, pyperclip
+, roman
+, pdfrw
+, pagelabels
+, setuptools
+}:
+
+buildPythonApplication {
+  pname = "termpdf.py";
+  version = "2019-10-03";
+
+  src = fetchFromGitHub {
+    owner = "dsanson";
+    repo = "termpdf.py";
+    rev = "4f3bdf4b5a00801631f2498f2c38c81e0a588ae2";
+    sha256 = "05gbj2fqzqndq1mx6g9asa7i6z8a9jdjrvilfwx8lg23cs356m6m";
+  };
+
+  propagatedBuildInputs = [
+    bibtool
+    pybtex
+    pymupdf
+    pyperclip
+    roman
+    pagelabels
+    pdfrw
+    pynvim
+    setuptools
+  ];
+
+  # upstream doesn't contain tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = ''
+      A graphical pdf (and epub, cbz, ...) reader that works
+      inside the kitty terminal.
+    '';
+    homepage = "https://github.com/dsanson/termpdf.py";
+    maintainers = with maintainers; [ teto ];
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/teseq/default.nix b/nixpkgs/pkgs/applications/misc/teseq/default.nix
new file mode 100644
index 000000000000..1ba22911c51f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/teseq/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl }:
+
+let
+  version = "1.1.1";
+in
+stdenv.mkDerivation {
+  pname = "teseq";
+  inherit version;
+
+  src = fetchurl {
+    url = "mirror://gnu/teseq/teseq-${version}.tar.gz";
+    sha256 = "08ln005qciy7f3jhv980kfhhfmh155naq59r5ah9crz1q4mx5yrj";
+  };
+
+  meta = {
+    homepage = "https://www.gnu.org/software/teseq/";
+    description = "Escape sequence illuminator";
+    license = stdenv.lib.licenses.gpl3;
+
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.vaibhavsagar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/thinking-rock/default.nix b/nixpkgs/pkgs/applications/misc/thinking-rock/default.nix
new file mode 100644
index 000000000000..fd6065010fb6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/thinking-rock/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, runtimeShell }:
+
+stdenv.mkDerivation {
+  name = "thinkingrock-binary-2.2.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/thinkingrock/ThinkingRock/TR%202.2.1/tr-2.2.1.tar.gz";
+    sha256 = "0hnwvvyc8miiz8w2g4iy7s4rgfy0kfbncgbgfzpsq6nrzq334kgm";
+  };
+
+  /* it would be a really bad idea to put thinkingrock tr executable in PATH!
+     the tr.sh script does use the coreutils tr itself
+     That's why I've renamed the wrapper and called it thinkingrock
+     However you may not rename the bin/tr script cause it will notice and throw an
+     "java.lang.IllegalArgumentException: Malformed branding token: thinkingrock"
+     exception. I hope that's fine
+  */
+
+  buildPhase = ''
+    # only keep /bin/tr
+    ls -1 bin/* | grep -ve  'bin/tr''$' | xargs rm
+    # don't keep the other .exe file either
+    find . -iname "*.exe" | xargs -n1 rm
+    mkdir -p $out/{nix-support/tr-files,bin}
+    cp -r . $out/nix-support/tr-files
+    cat >> $out/bin/thinkingrock << EOF
+    #!${runtimeShell}
+    exec $out/nix-support/tr-files/bin/tr "$@"
+    EOF
+    chmod +x $out/bin/thinkingrock
+  '';
+
+  installPhase = ":";
+
+  meta = {
+    description = "Task management system";
+    homepage = "http://www.thinkingrock.com.au/";
+    license = "CDDL"; # Common Development and Distribution License
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/tilda/default.nix b/nixpkgs/pkgs/applications/misc/tilda/default.nix
new file mode 100644
index 000000000000..84d37a4f461d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tilda/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, pkgconfig
+, autoreconfHook, gettext, expat, pcre2
+, libconfuse, vte, gtk
+, makeWrapper }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+
+  pname = "tilda";
+  version = "1.5.1";
+
+  src = fetchFromGitHub {
+    owner = "lanoxx";
+    repo = "tilda";
+    rev = "${pname}-${version}";
+    sha256 = "1kk69sg7ph906yr5jagkjx0qfkhr5w2nyx407wl2dsjimbps44rd";
+  };
+
+  nativeBuildInputs = [ autoreconfHook makeWrapper pkgconfig ];
+  buildInputs = [ gettext pcre2 libconfuse vte gtk ];
+
+  LD_LIBRARY_PATH = "${expat.out}/lib"; # ugly hack for xgettext to work during build
+
+  # The config locking scheme relies on the binary being called "tilda",
+  # (`pgrep -C tilda`), so a simple `wrapProgram` won't suffice:
+  postInstall = ''
+    mkdir $out/bin/wrapped
+    mv "$out/bin/tilda" "$out/bin/wrapped/tilda"
+    makeWrapper "$out/bin/wrapped/tilda" "$out/bin/tilda" \
+        --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = {
+    description = "A Gtk based drop down terminal for Linux and Unix";
+    homepage = "https://github.com/lanoxx/tilda/";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/tilix/default.nix b/nixpkgs/pkgs/applications/misc/tilix/default.nix
new file mode 100644
index 000000000000..4707685e3dab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tilix/default.nix
@@ -0,0 +1,74 @@
+{ stdenv
+, fetchFromGitHub
+, fetchpatch
+, meson
+, ninja
+, python3
+, pkgconfig
+, dmd
+, dconf
+, dbus
+, gsettings-desktop-schemas
+, desktop-file-utils
+, gettext
+, gtkd
+, libsecret
+, glib
+, wrapGAppsHook
+, libunwind
+}:
+
+stdenv.mkDerivation {
+  pname = "tilix";
+  version = "unstable-2019-10-02";
+
+  src = fetchFromGitHub {
+    owner = "gnunn1";
+    repo = "tilix";
+    rev = "ffcd31e3c0e1a560ce89468152d8726065e8fb1f";
+    sha256 = "1bzv7xiqhyblz1rw8ln4zpspmml49vnshn1zsv9di5q7kfgpqrgq";
+  };
+
+  # Default upstream else LDC fails to link
+  mesonBuildType = [
+    "debugoptimized"
+  ];
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    dmd
+    meson
+    ninja
+    pkgconfig
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    dbus
+    gettext
+    dconf
+    gsettings-desktop-schemas
+    gtkd
+    libsecret
+    libunwind
+  ];
+
+  postPatch = ''
+    chmod +x meson_post_install.py
+    patchShebangs meson_post_install.py
+  '';
+
+  preFixup = ''
+    substituteInPlace $out/share/applications/com.gexperts.Tilix.desktop \
+      --replace "Exec=tilix" "Exec=$out/bin/tilix"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Tiling terminal emulator following the Gnome Human Interface Guidelines";
+    homepage = "https://gnunn1.github.io/tilix-web";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ midchildan worldofpeace ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/timewarrior/default.nix b/nixpkgs/pkgs/applications/misc/timewarrior/default.nix
new file mode 100644
index 000000000000..25cd3a536700
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/timewarrior/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, cmake }:
+
+stdenv.mkDerivation rec {
+  pname = "timewarrior";
+  version = "1.3.0";
+
+  enableParallelBuilding = true;
+
+  src = fetchFromGitHub {
+    owner = "GothenburgBitFactory";
+    repo = "timewarrior";
+    rev = "v${version}";
+    sha256 = "1aijh1ad7gpa61cn7b57w24vy7fyjj0zx5k9z8d6m1ldzbw589cl";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  meta = with stdenv.lib; {
+    description = "A command-line time tracker";
+    homepage = "https://timewarrior.net";
+    license = licenses.mit;
+    maintainers = with maintainers; [ matthiasbeyer mrVanDalo ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/tint2/default.nix b/nixpkgs/pkgs/applications/misc/tint2/default.nix
new file mode 100644
index 000000000000..dc991402eec6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tint2/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitLab, pkgconfig, cmake, gettext, cairo, pango, pcre
+, glib, imlib2, gtk2, libXinerama, libXrender, libXcomposite, libXdamage
+, libX11, libXrandr, librsvg, libpthreadstubs, libXdmcp
+, libstartup_notification, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tint2";
+  version = "16.7";
+
+  src = fetchFromGitLab {
+    owner = "o9000";
+    repo = "tint2";
+    rev = version;
+    sha256 = "1937z0kixb6r82izj12jy4x8z4n96dfq1hx05vcsvsg1sx3wxgb0";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ pkgconfig cmake gettext wrapGAppsHook ];
+
+  buildInputs = [ cairo pango pcre glib imlib2 gtk2 libXinerama libXrender
+    libXcomposite libXdamage libX11 libXrandr librsvg libpthreadstubs
+    libXdmcp libstartup_notification ];
+
+  postPatch = ''
+    for f in ./src/launcher/apps-common.c \
+             ./src/launcher/icon-theme-common.c
+    do
+      substituteInPlace $f --replace /usr/share/ /run/current-system/sw/share/
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://gitlab.com/o9000/tint2";
+    description = "Simple panel/taskbar unintrusive and light (memory, cpu, aestetic)";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/tipp10/default.nix b/nixpkgs/pkgs/applications/misc/tipp10/default.nix
new file mode 100644
index 000000000000..8316fd918ab1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tipp10/default.nix
@@ -0,0 +1,25 @@
+{ cmake, stdenv, mkDerivation, fetchFromGitLab,
+  qtmultimedia, qttools, ... }:
+
+mkDerivation rec {
+  pname = "tipp10";
+  version = "3.1.0";
+
+  src = fetchFromGitLab {
+    owner = "a_a";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1mksga1zyqz1y2s524nkw86irg36zpjwz7ff87n2ygrlysczvnx1";
+  };
+
+  nativeBuildInputs = [ cmake qttools ];
+  buildInputs = [ qtmultimedia ];
+
+  meta = with stdenv.lib; {
+    description = "Learn and train typing with the ten-finger system";
+    homepage = "https://gitlab.com/a_a/tipp10";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ petabyteboy ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/tippecanoe/default.nix b/nixpkgs/pkgs/applications/misc/tippecanoe/default.nix
new file mode 100644
index 000000000000..c85192603cbc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tippecanoe/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, sqlite, zlib, perl }:
+
+stdenv.mkDerivation rec {
+  pname = "tippecanoe";
+  version = "1.35.0";
+
+  src = fetchFromGitHub {
+    owner = "mapbox";
+    repo = pname;
+    rev = version;
+    sha256 = "0v5ycc3gsqnl9pps3m45yrnb1gvw5pk6jdyr0q6516b4ac6x67m5";
+  };
+
+  buildInputs = [ sqlite zlib ];
+  checkInputs = [ perl ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  enableParallelBuilding = true;
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    description = "Build vector tilesets from large collections of GeoJSON features";
+    homepage = "https://github.com/mapbox/tippecanoe";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ sikmir ];
+    platforms = with platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/tmatrix/default.nix b/nixpkgs/pkgs/applications/misc/tmatrix/default.nix
new file mode 100644
index 000000000000..c03918c4875e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tmatrix/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, installShellFiles
+, ncurses
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tmatrix";
+  version = "1.3";
+
+  src = fetchFromGitHub {
+    owner = "M4444";
+    repo = "TMatrix";
+    rev = "v${version}";
+    sha256 = "1cvgxmdpdzpl8w4z3sh4g5pbd15rd8s1kcspi9v95yf9rydyy69s";
+  };
+
+  nativeBuildInputs = [ cmake installShellFiles ];
+  buildInputs = [ ncurses ];
+
+  postInstall = ''
+    installManPage ../tmatrix.6
+  '';
+
+  meta = with lib; {
+    description = "Terminal based replica of the digital rain from The Matrix";
+    longDescription = ''
+      TMatrix is a program that simulates the digital rain form The Matrix.
+      It's focused on being the most accurate replica of the digital rain effect
+      achievable on a typical terminal, while also being customizable and
+      performant.
+    '';
+    homepage = "https://github.com/M4444/TMatrix";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ infinisil filalex77 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/tnef/default.nix b/nixpkgs/pkgs/applications/misc/tnef/default.nix
new file mode 100644
index 000000000000..40505c4fdbea
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tnef/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, autoreconfHook }:
+
+stdenv.mkDerivation rec {
+  version = "1.4.18";
+  pname = "tnef";
+
+  src = fetchFromGitHub {
+    owner  = "verdammelt";
+    repo   = "tnef";
+    rev    = version;
+    sha256 = "104g48mcm00bgiyzas2vf86331w7bnw7h3bc11ib4lp7rz6zqfck";
+  };
+
+  doCheck = true;
+
+  nativeBuildInputs = [ autoreconfHook ];
+
+  meta = with stdenv.lib; {
+    description = "Unpacks MIME attachments of type application/ms-tnef";
+    longDescription = ''
+      TNEF is a program for unpacking MIME attachments of type "application/ms-tnef". This is a Microsoft only attachment.
+
+      Due to the proliferation of Microsoft Outlook and Exchange mail servers, more and more mail is encapsulated into this format.
+
+      The TNEF program allows one to unpack the attachments which were encapsulated into the TNEF attachment. Thus alleviating the need to use Microsoft Outlook to view the attachment.
+    '';
+    homepage = "https://github.com/verdammelt/tnef";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ peterhoeg ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/todiff/default.nix b/nixpkgs/pkgs/applications/misc/todiff/default.nix
new file mode 100644
index 000000000000..f55b3852e5bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/todiff/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, rustPlatform, fetchFromGitHub }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "todiff";
+  version = "0.6.1";
+
+  src = fetchFromGitHub {
+    owner = "Ekleog";
+    repo = "todiff";
+    rev = version;
+    sha256 = "1y0v8nkaqb8kn61xwarpbyrq019gxx1f5f5p1hzw73nqxadc1rcm";
+  };
+
+  cargoSha256 = "1vyc230a2b0dry2057mkdkrjb7s9d0p43fnz4q67aqrpyr4jxwx2";
+
+  checkPhase = "cargo test --features=integration_tests";
+
+  meta = with stdenv.lib; {
+    description = "Human-readable diff for todo.txt files";
+    homepage = "https://github.com/Ekleog/todiff";
+    maintainers = with maintainers; [ ekleog ];
+    license = licenses.mit;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/todoist-electron/default.nix b/nixpkgs/pkgs/applications/misc/todoist-electron/default.nix
new file mode 100644
index 000000000000..be9027f9d098
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/todoist-electron/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, lib, fetchurl, makeDesktopItem, dpkg, atk, at-spi2-atk, glib, pango, gdk-pixbuf
+, gtk3, cairo, freetype, fontconfig, dbus, xorg, nss, nspr, alsaLib, cups, expat
+, udev, libpulseaudio, utillinux, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "todoist-electron";
+  version = "1.22";
+
+  src = fetchurl {
+    url = "https://github.com/KryDos/todoist-linux/releases/download/${version}/Todoist_${version}.0_amd64.deb";
+    sha256 = "09w2040xkvv78190fmhx99c0dwy7vpab5fvxs67s7yyjwh5n4693";
+  };
+
+  desktopItem = makeDesktopItem {
+    name = "Todoist";
+    exec = "todoist";
+    desktopName = "Todoist";
+    categories = "Utility";
+  };
+
+  nativeBuildInputs = [ makeWrapper dpkg ];
+  unpackPhase = ''
+    mkdir pkg
+    dpkg-deb -x $src pkg
+    sourceRoot=pkg
+  '';
+  installPhase = let
+    libPath = lib.makeLibraryPath ([
+      stdenv.cc.cc gtk3 atk at-spi2-atk glib pango gdk-pixbuf cairo freetype fontconfig dbus
+      nss nspr alsaLib libpulseaudio cups expat udev utillinux
+    ] ++ (with xorg; [
+      libXi libXcursor libXdamage libXrandr libXcomposite libXext libXfixes libxcb
+      libXrender libX11 libXtst libXScrnSaver
+    ]));
+  in ''
+    mkdir -p "$out/bin"
+    mv opt "$out/"
+
+    # Patch binary
+    patchelf \
+      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${libPath}:\$ORIGIN" \
+      $out/opt/Todoist/todoist
+
+    # Hacky workaround for RPATH problems
+    makeWrapper $out/opt/Todoist/todoist $out/bin/todoist \
+      --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libpulseaudio udev ]}
+
+    # Desktop item
+    mkdir -p "$out/share"
+    ln -s "${desktopItem}/share/applications" "$out/share/applications"
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/KryDos/todoist-linux";
+    description = "The Linux wrapper for Todoist web version";
+    platforms = [ "x86_64-linux" ];
+    license = licenses.isc;
+    maintainers = with maintainers; [ i077 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/todoist/default.nix b/nixpkgs/pkgs/applications/misc/todoist/default.nix
new file mode 100644
index 000000000000..b3b3561227f1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/todoist/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "todoist";
+  version = "0.15.0";
+
+  src = fetchFromGitHub {
+    owner = "sachaos";
+    repo = "todoist";
+    rev = "v${version}";
+    sha256 = "0d3c621jaqxd6i58xm6nvi0avrh5mk23r169i95bn73igzw62w33";
+  };
+
+  vendorSha256 = "0cznb8glh36dwyyn1gx1ggkwa9zffrrxg52k78brnaczsl0rsmky";
+
+  meta = {
+    homepage = "https://github.com/sachaos/todoist";
+    description = "Todoist CLI Client";
+    license = lib.licenses.mit;
+    platforms = lib.platforms.unix;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/misc/todolist/default.nix b/nixpkgs/pkgs/applications/misc/todolist/default.nix
new file mode 100644
index 000000000000..669c06a9480e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/todolist/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "todolist";
+  version = "v0.8.1";
+
+  goPackagePath = "github.com/gammons/todolist";
+
+  src = fetchFromGitHub {
+    owner = "gammons";
+    repo = "todolist";
+    rev = version;
+    sha256 = "0dazfymby5xm4482p9cyj23djmkz5q7g79cqm2d85mczvz7vks8p";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Simple GTD-style todo list for the command line";
+    homepage = "http://todolist.site";
+    license = licenses.mit;
+    maintainers = with maintainers; [ uvnikita ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/toggldesktop/TogglDesktop.pro b/nixpkgs/pkgs/applications/misc/toggldesktop/TogglDesktop.pro
new file mode 100644
index 000000000000..e86156313d1f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/toggldesktop/TogglDesktop.pro
@@ -0,0 +1,19 @@
+QT += core network widgets
+
+DEFINES += APP_ENVIRONMENT=\\\"production\\\"
+DEFINES += APP_VERSION=\\\"@version@\\\"
+
+TARGET = toggldesktop
+TEMPLATE = app
+
+SOURCES += *.cpp
+HEADERS += *.h
+FORMS += *.ui
+RESOURCES += *.qrc
+
+target.path = $$PREFIX
+
+INSTALLS += target
+
+CONFIG += link_pkgconfig
+PKGCONFIG += bugsnag-qt qxtglobalshortcut qt-oauth-lib toggl x11 xscrnsaver
diff --git a/nixpkgs/pkgs/applications/misc/toggldesktop/default.nix b/nixpkgs/pkgs/applications/misc/toggldesktop/default.nix
new file mode 100644
index 000000000000..410c17be803a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/toggldesktop/default.nix
@@ -0,0 +1,148 @@
+{ mkDerivation, lib, fetchzip, buildEnv, makeDesktopItem, runCommand, writeText, pkgconfig
+, cmake, qmake, cacert, jsoncpp, libX11, libXScrnSaver, lua, openssl, poco
+, qtbase, qtwebengine, qtx11extras, sqlite }:
+
+let
+  name = "toggldesktop-${version}";
+  version = "7.4.231";
+
+  src = fetchzip {
+    url = "https://github.com/toggl/toggldesktop/archive/v${version}.tar.gz";
+    sha256 = "01hqkx9dljnhwnyqi6mmzfp02hnbi2j50rsfiasniqrkbi99x9v1";
+  };
+
+  bugsnag-qt = mkDerivation rec {
+    pname = "bugsnag-qt";
+    version = "20180522.005732";
+
+    src = fetchzip {
+      url = "https://github.com/yegortimoshenko/bugsnag-qt/archive/${version}.tar.gz";
+      sha256 = "02s6mlggh0i4a856md46dipy6mh47isap82jlwmjr7hfsk2ykgnq";
+    };
+
+    nativeBuildInputs = [ qmake ];
+    buildInputs = [ qtbase ];
+  };
+
+  qxtglobalshortcut = mkDerivation rec {
+    pname = "qxtglobalshortcut";
+    version = "f584471dada2099ba06c574bdfdd8b078c2e3550";
+
+    src = fetchzip {
+      url = "https://github.com/hluk/qxtglobalshortcut/archive/${version}.tar.gz";
+      sha256 = "1iy17gypav10z8aa62s5jb6mq9y4kb9ms4l61ydmk3xwlap7igw1";
+    };
+
+    nativeBuildInputs = [ cmake ];
+    buildInputs = [ qtbase qtx11extras ];
+  };
+
+  qt-oauth-lib = mkDerivation rec {
+    pname = "qt-oauth-lib";
+    version = "20190125.190943";
+
+    src = fetchzip {
+      url = "https://github.com/yegortimoshenko/qt-oauth-lib/archive/${version}.tar.gz";
+      sha256 = "0zmfgvdf6n79mgfvbda7lkdxxlzjmy86436gqi2r5x05vq04sfrj";
+    };
+
+    nativeBuildInputs = [ qmake ];
+    buildInputs = [ qtbase qtwebengine ];
+  };
+
+  poco-pc = writeText "poco.pc" ''
+    Name: Poco
+    Description: ${poco.meta.description}
+    Version: ${poco.version}
+    Libs: -L${poco}/lib -lPocoDataSQLite -lPocoData -lPocoNet -lPocoNetSSL -lPocoCrypto -lPocoUtil -lPocoXML -lPocoFoundation
+    Cflags: -I${poco}/include/Poco
+  '';
+
+  poco-pc-wrapped = runCommand "poco-pc-wrapped" {} ''
+    mkdir -p $out/lib/pkgconfig && ln -s ${poco-pc} $_/poco.pc
+  '';
+
+  libtoggl = mkDerivation {
+    name = "libtoggl-${version}";
+    inherit src version;
+
+    sourceRoot = "source/src";
+
+    nativeBuildInputs = [ qmake pkgconfig ];
+    buildInputs = [ jsoncpp lua openssl poco poco-pc-wrapped sqlite libX11 ];
+
+    postPatch = ''
+      cat ${./libtoggl.pro} > libtoggl.pro
+      rm get_focused_window_{mac,windows}.cc
+    '';
+  };
+
+  toggldesktop = mkDerivation {
+    name = "${name}-unwrapped";
+    inherit src version;
+
+    sourceRoot = "source/src/ui/linux/TogglDesktop";
+
+    postPatch = ''
+      substituteAll ${./TogglDesktop.pro} TogglDesktop.pro
+      substituteInPlace toggl.cpp \
+        --replace ./../../../toggl_api.h toggl_api.h
+    '';
+
+    postInstall = ''
+      ln -s ${cacert}/etc/ssl/certs/ca-bundle.crt $out/cacert.pem
+    '';
+
+    nativeBuildInputs = [ qmake pkgconfig ];
+
+    buildInputs = [
+      bugsnag-qt
+      libtoggl
+      qxtglobalshortcut
+      qtbase
+      qtwebengine
+      qt-oauth-lib
+      qtx11extras
+      libX11
+      libXScrnSaver
+    ];
+  };
+
+  toggldesktop-icons = mkDerivation {
+    name = "${name}-icons";
+    inherit (toggldesktop) src sourceRoot;
+
+    installPhase = ''
+      for f in icons/*; do
+        mkdir -p $out/share/icons/hicolor/$(basename $f)/apps
+        mv $f/toggldesktop.png $_
+      done
+    '';
+  };
+
+  toggldesktop-wrapped = runCommand "toggldesktop-wrapped" {} ''
+    mkdir -p $out/bin && ln -s ${toggldesktop}/toggldesktop $_
+  '';
+
+  desktopItem = makeDesktopItem rec {
+    categories = "Utility;";
+    desktopName = "Toggl";
+    genericName = desktopName;
+    name = "toggldesktop";
+    exec = "${toggldesktop-wrapped}/bin/toggldesktop";
+    icon = "toggldesktop";
+  };
+in
+
+buildEnv {
+  inherit name;
+  paths = [ desktopItem toggldesktop-icons toggldesktop-wrapped ];
+
+  meta = with lib; {
+    description = "Client for Toggl time tracking service";
+    homepage = "https://github.com/toggl/toggldesktop";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ yegortimoshenko ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/toggldesktop/libtoggl.pro b/nixpkgs/pkgs/applications/misc/toggldesktop/libtoggl.pro
new file mode 100644
index 000000000000..c8303440fe67
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/toggldesktop/libtoggl.pro
@@ -0,0 +1,20 @@
+TARGET = toggl
+TEMPLATE = lib
+
+SOURCES += *.cc
+HEADERS += *.h
+
+headers.files = $$HEADERS
+headers.path = $$PREFIX/include
+target.path = $$PREFIX/lib
+
+INSTALLS += headers target
+
+CONFIG += create_prl create_pc link_pkgconfig
+PKGCONFIG += jsoncpp openssl lua poco sqlite3 x11
+
+QMAKE_PKGCONFIG_NAME = $$TARGET
+QMAKE_PKGCONFIG_PREFIX = $$PREFIX
+QMAKE_PKGCONFIG_LIBDIR = $$target.path
+QMAKE_PKGCONFIG_INCDIR = $$headers.path
+QMAKE_PKGCONFIG_DESTDIR = pkgconfig
diff --git a/nixpkgs/pkgs/applications/misc/tomboy/default.nix b/nixpkgs/pkgs/applications/misc/tomboy/default.nix
new file mode 100644
index 000000000000..ff4faf139e6c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tomboy/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, itstool, intltool, pkgconfig
+, libxml2, gnome2, atk, gtk2, glib
+, mono, mono-addins, dbus-sharp-2_0, dbus-sharp-glib-2_0, gnome-sharp, gtk-sharp-2_0
+, makeWrapper, lib}:
+
+let
+  version = "1.15.9";
+in
+
+stdenv.mkDerivation {
+  pname = "tomboy";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://github.com/tomboy-notes/tomboy/releases/download/${version}/tomboy-${version}.tar.xz";
+    sha256 = "0j5jmd079bm2fydqaic5ymbfdxna3qlx6fkp2mqhgcdr7prsbl3q";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ itstool intltool
+    libxml2 gnome2.GConf atk gtk2
+    mono mono-addins dbus-sharp-2_0 dbus-sharp-glib-2_0 gnome-sharp gtk-sharp-2_0
+    makeWrapper ];
+
+  postInstall = ''
+    makeWrapper "${mono}/bin/mono" "$out/bin/tomboy" \
+      --add-flags "$out/lib/tomboy/Tomboy.exe" \
+      --prefix MONO_GAC_PREFIX : ${dbus-sharp-2_0} \
+      --prefix MONO_GAC_PREFIX : ${dbus-sharp-glib-2_0} \
+      --prefix MONO_GAC_PREFIX : ${gtk-sharp-2_0} \
+      --prefix MONO_GAC_PREFIX : ${gnome-sharp} \
+      --prefix MONO_GAC_PREFIX : ${mono-addins} \
+      --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ glib gtk-sharp-2_0 gtk-sharp-2_0.gtk gnome2.GConf ]}
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://wiki.gnome.org/Apps/Tomboy";
+    description = "A simple note-taking application with synchronization";
+    platforms = platforms.linux;
+    license = stdenv.lib.licenses.lgpl2;
+    maintainers = with maintainers; [ stesie ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/toot/default.nix b/nixpkgs/pkgs/applications/misc/toot/default.nix
new file mode 100644
index 000000000000..5ce35f3292bd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/toot/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  version = "0.26.0";
+  name    = "toot-${version}";
+
+  src = fetchFromGitHub {
+    owner  = "ihabunek";
+    repo   = "toot";
+    rev    = version;
+    sha256 = "146jj83jixahgxwh12bbkfvci2wrz398h5x01kgppdy59m4pa4pl";
+  };
+
+  checkInputs = with python3Packages; [ pytest ];
+
+  propagatedBuildInputs = with python3Packages;
+    [ requests beautifulsoup4 future wcwidth urwid ];
+
+  checkPhase = ''
+    py.test
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Mastodon CLI interface";
+    homepage    = "https://github.com/ihabunek/toot";
+    license     = licenses.mit;
+    maintainers = [ maintainers.matthiasbeyer ];
+  };
+
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/tootle/default.nix b/nixpkgs/pkgs/applications/misc/tootle/default.nix
new file mode 100644
index 000000000000..904782f3e1f8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tootle/default.nix
@@ -0,0 +1,77 @@
+{ stdenv
+, fetchFromGitHub
+, fetchpatch
+, vala
+, meson
+, ninja
+, pkgconfig
+, python3
+, libgee
+, gsettings-desktop-schemas
+, gnome3
+, pantheon
+, wrapGAppsHook
+, gtk3
+, json-glib
+, glib
+, glib-networking
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tootle";
+  version = "0.2.0";
+
+  src = fetchFromGitHub {
+    owner = "bleakgrey";
+    repo = pname;
+    rev = version;
+    sha256 = "1z3wyx316nns6gi7vlvcfmalhvxncmvcmmlgclbv6b6hwl5x2ysi";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkgconfig
+    python3
+    vala
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    glib-networking
+    gnome3.libsoup
+    gsettings-desktop-schemas
+    gtk3
+    json-glib
+    libgee
+    pantheon.granite
+  ];
+
+  patches = [
+    # Fix build with Vala 0.46
+    # https://github.com/bleakgrey/tootle/pull/164
+    (fetchpatch {
+      url = "https://github.com/worldofpeace/tootle/commit/0a88bdad6d969ead1e4058b1a19675c9d6857b16.patch";
+      sha256 = "0xyx00pgswnhxxbsxngsm6khvlbfcl6ic5wv5n64x7klk8rzh6cm";
+    })
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Simple Mastodon client designed for elementary OS";
+    homepage = "https://github.com/bleakgrey/tootle";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/topydo/default.nix b/nixpkgs/pkgs/applications/misc/topydo/default.nix
new file mode 100644
index 000000000000..eb3894c7b47d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/topydo/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, python3Packages, fetchFromGitHub, glibcLocales }:
+
+with python3Packages;
+
+buildPythonApplication rec {
+  pname = "topydo";
+  version = "0.13";
+
+  src = fetchFromGitHub {
+    owner = "bram85";
+    repo = pname;
+    rev = version;
+    sha256 = "0b3dz137lpbvpjvfy42ibqvj3yk526x4bpn819fd11lagn77w69r";
+  };
+
+  propagatedBuildInputs = [
+    arrow
+    icalendar
+    glibcLocales
+    prompt_toolkit
+    urwid
+    watchdog
+  ];
+
+  checkInputs = [ mock freezegun coverage green pylint ];
+
+  LC_ALL="en_US.UTF-8";
+
+  meta = with stdenv.lib; {
+    description = "A cli todo application compatible with the todo.txt format";
+    homepage = "https://github.com/bram85/topydo";
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/tpmmanager/default.nix b/nixpkgs/pkgs/applications/misc/tpmmanager/default.nix
new file mode 100644
index 000000000000..2bbb95d01ae7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tpmmanager/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchgit, qt4, qmake4Hook, trousers }:
+
+stdenv.mkDerivation rec {
+  version = "0.8.1";
+  pname = "tpmmanager";
+
+  src = fetchgit {
+    url = "https://github.com/Sirrix-AG/TPMManager";
+    rev = "9f989206635a6d2c1342576c90fa73eb239519cd";
+    sha256 = "24a606f88fed67ed0d0e61dc220295e9e1ab8db3ef3d028fa34b04ff30652d8e";
+  };
+
+  nativeBuildInputs = [ qmake4Hook ];
+
+  buildInputs = [ qt4 trousers ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install -Dpm755 -D bin/tpmmanager $out/bin/tpmmanager
+
+    mkdir -p $out/share/applications
+    cat > $out/share/applications/tpmmanager.desktop <<EOF
+    [Desktop Entry]
+    Type=Application
+    Version=1.0
+    Name=tpmmanager
+    Comment=TPM manager
+    Exec=$out/bin/tpmmanager
+    Terminal=false
+    EOF
+    '';
+
+  meta = {
+    homepage = "https://projects.sirrix.com/trac/tpmmanager";
+    description = "Tool for managing the TPM";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [ tstrobel ];
+    platforms = with stdenv.lib.platforms; linux;
+    inherit version;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/translate-shell/default.nix b/nixpkgs/pkgs/applications/misc/translate-shell/default.nix
new file mode 100644
index 000000000000..62e66055a2f9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/translate-shell/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, makeWrapper, curl, fribidi, rlwrap, gawk, groff, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "translate-shell";
+  version = "0.9.6.12";
+
+  src = fetchFromGitHub {
+    owner = "soimort";
+    repo = "translate-shell";
+    rev = "v${version}";
+    sha256 = "075vqnha21rhr1b61dim7dqlfwm1yffyzcaa83s36rpk9r5sddzx";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  postInstall = ''
+    wrapProgram $out/bin/trans \
+      --prefix PATH : ${stdenv.lib.makeBinPath [
+        gawk
+        curl
+        ncurses
+        rlwrap
+        groff
+        fribidi
+      ]}
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.soimort.org/translate-shell";
+    description = "Command-line translator using Google Translate, Bing Translator, Yandex.Translate, and Apertium";
+    license = licenses.unlicense;
+    maintainers = with maintainers; [ ebzzry infinisil ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/tthsum/default.nix b/nixpkgs/pkgs/applications/misc/tthsum/default.nix
new file mode 100644
index 000000000000..792b80d04629
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tthsum/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "tthsum";
+  version = "1.3.2";
+
+  src = fetchurl {
+    url = "http://tthsum.devs.nu/pkg/tthsum-${version}.tar.bz2";
+    sha256 = "0z6jq8lbg9rasv98kxfs56936dgpgzsg3yc9k52878qfw1l2bp59";
+  };
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/man/man1
+    cp share/tthsum.1.gz $out/share/man/man1
+    cp obj-unix/tthsum $out/bin
+  '';
+
+  doCheck = !stdenv.isDarwin;
+
+  meta = with stdenv.lib; {
+    description = "An md5sum-alike program that works with Tiger/THEX hashes";
+    longDescription = ''
+      tthsum generates or checks TTH checksums (root of the THEX hash
+      tree). The Merkle Hash Tree, invented by Ralph Merkle, is a hash
+      construct that exhibits desirable properties for verifying the
+      integrity of files and file subranges in an incremental or
+      out-of-order fashion. tthsum uses the Tiger hash algorithm for
+      both the internal and the leaf nodes.
+
+      The specification of the Tiger hash algorithm is at:
+      http://www.cs.technion.ac.il/~biham/Reports/Tiger/
+
+      The specification of the THEX algorithm is at:
+      http://adc.sourceforge.net/draft-jchapweske-thex-02.html
+    '';
+    homepage = "http://tthsum.devs.nu/";
+    license = licenses.gpl3Plus;
+    maintainers = [ maintainers.ebzzry ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/tuir/default.nix b/nixpkgs/pkgs/applications/misc/tuir/default.nix
new file mode 100644
index 000000000000..11bf70cb56b3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tuir/default.nix
@@ -0,0 +1,32 @@
+{ lib, fetchFromGitLab, python3Packages }:
+
+with python3Packages;
+buildPythonApplication rec {
+  pname = "tuir";
+  version = "1.29.0";
+
+  src = fetchFromGitLab {
+    owner = "ajak";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1fqp6bvq8kzdsf3nna4mn1phdcixpx76bya43xrivxjbzsfl59ib";
+  };
+
+  # Tests try to access network
+  doCheck = false;
+
+  checkPhase = ''
+    py.test
+  '';
+
+  checkInputs = [ coverage coveralls docopt mock pylint pytest vcrpy ];
+
+  propagatedBuildInputs = [ beautifulsoup4 decorator kitchen requests ];
+
+  meta = with lib; {
+    description = "Browse Reddit from your Terminal (fork of rtv)";
+    homepage = "https://gitlab.com/ajak/tuir/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ filalex77 matthiasbeyer ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/tut/default.nix b/nixpkgs/pkgs/applications/misc/tut/default.nix
new file mode 100644
index 000000000000..7b9efb6bbe5d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tut/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "tut";
+  version = "0.0.9";
+
+  goPackagePath = "github.com/RasmusLindroth/tut";
+  goDeps = ./deps.nix;
+
+  src = fetchFromGitHub {
+    owner = "RasmusLindroth";
+    repo = pname;
+    rev = version;
+    sha256 = "19y6brw1d6dlp2gnkdpbp261662h5j46rmiqg73cxhrlws0y0kfk";
+  };
+
+  meta = with stdenv.lib; {
+    description = "A TUI for Mastodon with vim inspired keys";
+    homepage = "https://github.com/RasmusLindroth/tut";
+    license = licenses.mit;
+    maintainers = with maintainers; [ equirosa ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/tut/deps.nix b/nixpkgs/pkgs/applications/misc/tut/deps.nix
new file mode 100644
index 000000000000..9264153e5030
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tut/deps.nix
@@ -0,0 +1,318 @@
+# file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix)
+[
+  {
+    goPackagePath = "github.com/BurntSushi/toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/BurntSushi/toml";
+      rev = "v0.3.1";
+      sha256 = "1fjdwwfzyzllgiwydknf1pwjvy49qxfsczqx5gz3y0izs7as99j6";
+    };
+  }
+  {
+    goPackagePath = "github.com/DATA-DOG/go-sqlmock";
+    fetch = {
+      type = "git";
+      url = "https://github.com/DATA-DOG/go-sqlmock";
+      rev = "v1.3.3";
+      sha256 = "1xrly2vmy1mgj9dbkmivhh8gvq6v9f9xy2yp2dw54i1895zzs928";
+    };
+  }
+  {
+    goPackagePath = "github.com/PuerkitoBio/goquery";
+    fetch = {
+      type = "git";
+      url = "https://github.com/PuerkitoBio/goquery";
+      rev = "v1.5.0";
+      sha256 = "1fqf4rs66wy02nxz6w4mvs2qawf2j8srz17i294v64y8gvxisp56";
+    };
+  }
+  {
+    goPackagePath = "github.com/andybalholm/cascadia";
+    fetch = {
+      type = "git";
+      url = "https://github.com/andybalholm/cascadia";
+      rev = "v1.0.0";
+      sha256 = "09j8cavbhqqdxjqrkwbc40g8p0i49zf3184rpjm5p2rjbprcghcc";
+    };
+  }
+  {
+    goPackagePath = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev = "v1.1.1";
+      sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y";
+    };
+  }
+  {
+    goPackagePath = "github.com/fatih/color";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fatih/color";
+      rev = "v1.9.0";
+      sha256 = "086z8ssmr1fn9ba4mqnw7pnccfpys6l5yfhvycv1gdrsk7n27mvs";
+    };
+  }
+  {
+    goPackagePath = "github.com/gdamore/encoding";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gdamore/encoding";
+      rev = "v1.0.0";
+      sha256 = "1vmm5zll92i2fm4ajqx0gyx0p9j36496x5nabi3y0x7h0inv0pk9";
+    };
+  }
+  {
+    goPackagePath = "github.com/gdamore/tcell";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gdamore/tcell";
+      rev = "v1.3.0";
+      sha256 = "1csg9qkmbg4ksj5247kgqcy7bxvqgz6b98r0rv2s4c1mkc99gx2r";
+    };
+  }
+  {
+    goPackagePath = "github.com/gopherjs/gopherjs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gopherjs/gopherjs";
+      rev = "0766667cb4d1";
+      sha256 = "13pfc9sxiwjky2lm1xb3i3lcisn8p6mgjk2d927l7r92ysph8dmw";
+    };
+  }
+  {
+    goPackagePath = "github.com/gorilla/websocket";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gorilla/websocket";
+      rev = "v1.4.1";
+      sha256 = "03n1n0nwz3k9qshmriycqznnnvd3dkzsfwpnfjzzvafjxk9kyapv";
+    };
+  }
+  {
+    goPackagePath = "github.com/jtolds/gls";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jtolds/gls";
+      rev = "v4.20.0";
+      sha256 = "1k7xd2q2ysv2xsh373qs801v6f359240kx0vrl0ydh7731lngvk6";
+    };
+  }
+  {
+    goPackagePath = "github.com/kyoh86/xdg";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kyoh86/xdg";
+      rev = "v1.2.0";
+      sha256 = "0a5nz53fdz1c2qvwlf2dpjdd72nxri95i6q4b07c37kiipgaxncn";
+    };
+  }
+  {
+    goPackagePath = "github.com/lucasb-eyer/go-colorful";
+    fetch = {
+      type = "git";
+      url = "https://github.com/lucasb-eyer/go-colorful";
+      rev = "v1.0.3";
+      sha256 = "12bgz6dxbb2ki1g3x7fg9ipsjgfkd58fp7cdpv63h4kvlj2n7j69";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-colorable";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-colorable";
+      rev = "v0.1.4";
+      sha256 = "1yxcz08kminqr1221zxpibnbzfcgs3fafin0z9zqb3gqvf74jywz";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-isatty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-isatty";
+      rev = "v0.0.11";
+      sha256 = "0h671sv7hfprja495kavazkalkx7xzaqksjh13brcnwq67ijrali";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-mastodon";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-mastodon";
+      rev = "3e91c76504df";
+      sha256 = "1wh2hqrzx80gfs1y34f4h68mnz83asx88v0bsw372ch5j1shswlr";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-runewidth";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-runewidth";
+      rev = "v0.0.8";
+      sha256 = "14ilkbhnhl8yj443dd1ga4biapswv4g0b4vm2mix78a8srdww39j";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-tty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-tty";
+      rev = "v0.0.3";
+      sha256 = "0d1d63q02pc5k5ga8bw4yjbkrli2769vg237psajsskjirjy53vf";
+    };
+  }
+  {
+    goPackagePath = "github.com/microcosm-cc/bluemonday";
+    fetch = {
+      type = "git";
+      url = "https://github.com/microcosm-cc/bluemonday";
+      rev = "v1.0.2";
+      sha256 = "0j0aylsxqjcj49w7ph8cmpaqjlpvg7mb5mrcrd9bg71dlb9z9ir2";
+    };
+  }
+  {
+    goPackagePath = "github.com/pelletier/go-toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pelletier/go-toml";
+      rev = "v1.7.0";
+      sha256 = "0sqrwldjj2qxrgjz1diw1ffviya4ma7mz7nhdgydbisi2h55lqla";
+    };
+  }
+  {
+    goPackagePath = "github.com/rivo/tview";
+    fetch = {
+      type = "git";
+      url = "https://github.com/rivo/tview";
+      rev = "ca37f83cb2e7";
+      sha256 = "05nifgrxv6aib8f20mhs9m0grdfdyyg5vyhk6zgwsxjlwbzaj021";
+    };
+  }
+  {
+    goPackagePath = "github.com/rivo/uniseg";
+    fetch = {
+      type = "git";
+      url = "https://github.com/rivo/uniseg";
+      rev = "v0.1.0";
+      sha256 = "0flpc1px1l6b1lxzhdxi0mvpkkjchppvgxshxxnlmm40s76i9ww5";
+    };
+  }
+  {
+    goPackagePath = "github.com/smartystreets/assertions";
+    fetch = {
+      type = "git";
+      url = "https://github.com/smartystreets/assertions";
+      rev = "b2de0cb4f26d";
+      sha256 = "1i7ldgavgl35c7gk25p7bvdr282ckng090zr4ch9mk1705akx09y";
+    };
+  }
+  {
+    goPackagePath = "github.com/smartystreets/goconvey";
+    fetch = {
+      type = "git";
+      url = "https://github.com/smartystreets/goconvey";
+      rev = "v1.6.4";
+      sha256 = "07zjxwszayal88z1j2bwnqrsa32vg8l4nivks5yfr9j8xfsw7n6m";
+    };
+  }
+  {
+    goPackagePath = "github.com/tomnomnom/linkheader";
+    fetch = {
+      type = "git";
+      url = "https://github.com/tomnomnom/linkheader";
+      rev = "02ca5825eb80";
+      sha256 = "1ghrv28vrvvrpyr4d4q817yby8g1j04mid8ql00sds1pvfv67d32";
+    };
+  }
+  {
+    goPackagePath = "github.com/urfave/cli";
+    fetch = {
+      type = "git";
+      url = "https://github.com/urfave/cli";
+      rev = "v1.20.0";
+      sha256 = "0y6f4sbzkiiwrxbl15biivj8c7qwxnvm3zl2dd3mw4wzg4x10ygj";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "c2843e01d9a2";
+      sha256 = "01xgxbj5r79nmisdvpq48zfy8pzaaj90bn6ngd4nf33j9ar1dp8r";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "d3edc9973b7e";
+      sha256 = "12zbjwcsh9b0lwycqlkrnbyg5a6a9dzgj8hhgq399bdda5bd97y7";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sync";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sync";
+      rev = "cd5d95a43a6e";
+      sha256 = "1nqkyz2y1qvqcma52ijh02s8aiqmkfb95j08f6zcjhbga3ds6hds";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "85ca7c5b95cd";
+      sha256 = "1504qkgbhhm4f0bhk77v2r1lj6x171ay5m79alkg78wjb5cign5l";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "v0.3.2";
+      sha256 = "0flv9idw0jm5nm8lx25xqanbkqgfiym6619w575p7nrdh0riqwqh";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "ab21143f2384";
+      sha256 = "15fk0psk53pplpyghz55bhay0kvsv5rikmn5hwgjnnyxq9vfy178";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/check.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/check.v1";
+      rev = "20d25e280405";
+      sha256 = "0k1m83ji9l1a7ng8a7v40psbymxasmssbrrhpdv2wl4rhs0nc3np";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/ini.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/ini.v1";
+      rev = "v1.55.0";
+      sha256 = "1b7wsfal3b3pl5pv5n2qix09b3imh0zhirrphlsg5p2rb8fk0d0j";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "v2.2.8";
+      sha256 = "1inf7svydzscwv9fcjd2rm61a4xjk6jkswknybmns2n58shimapw";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/misc/tvbrowser/bin.nix b/nixpkgs/pkgs/applications/misc/tvbrowser/bin.nix
new file mode 100644
index 000000000000..68d25e4e3de7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tvbrowser/bin.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchurl, makeWrapper, jre, makeDesktopItem }:
+
+let
+  desktopItem = makeDesktopItem {
+    name = "tvbrowser";
+    exec = "tvbrowser";
+    icon = "tvbrowser";
+    comment = "Themeable and easy to use TV Guide";
+    desktopName = "TV-Browser";
+    genericName = "Electronic TV Program Guide";
+    categories = "AudioVideo;TV;Java;";
+    startupNotify = "true";
+    extraEntries = ''
+      StartupWMClass=tvbrowser-TVBrowser
+    '';
+  };
+
+in stdenv.mkDerivation rec {
+  pname = "tvbrowser";
+  version = "4.0.1";
+  name = "${pname}-bin-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${pname}/TV-Browser%20Releases%20%28Java%208%20and%20higher%29/${version}/${pname}_${version}_bin.tar.gz";
+    sha256 = "0ahsirf6cazs5wykgbwsc6n35w6jprxyphzqmm7d370n37sb07pm";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/share/java/${pname}
+    cp -R * $out/share/java/${pname}
+    rm $out/share/java/${pname}/${pname}.{sh,desktop}
+
+    mkdir -p $out/share/applications
+    ln -s ${desktopItem}/share/applications/* $out/share/applications/
+
+    for i in 16 32 48 128; do
+      mkdir -p $out/share/icons/hicolor/''${i}x''${i}/apps
+      ln -s $out/share/java/${pname}/imgs/${pname}$i.png $out/share/icons/hicolor/''${i}x''${i}/apps/${pname}.png
+    done
+
+    mkdir -p $out/bin
+    makeWrapper ${jre}/bin/java $out/bin/${pname} \
+      --add-flags "-jar $out/share/java/${pname}/${pname}.jar" \
+      --run "cd $out/share/java/${pname}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Electronic TV Program Guide";
+    homepage = "https://www.tvbrowser.org/";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ jfrankenau ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/twmn/default.nix b/nixpkgs/pkgs/applications/misc/twmn/default.nix
new file mode 100644
index 000000000000..69f58b828c46
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/twmn/default.nix
@@ -0,0 +1,36 @@
+{ lib, mkDerivation, fetchFromGitHub, qtbase, qtx11extras, qmake, pkgconfig, boost }:
+
+mkDerivation {
+  name = "twmn-git-2018-10-01";
+
+  src = fetchFromGitHub {
+    owner = "sboli";
+    repo = "twmn";
+    rev = "80f48834ef1a07087505b82358308ee2374b6dfb";
+    sha256 = "0mpjvp800x07lp9i3hfcc5f4bqj1fj4w3dyr0zwaxc6wqmm0fdqz";
+  };
+
+  nativeBuildInputs = [ pkgconfig qmake ];
+  buildInputs = [ qtbase qtx11extras boost ];
+
+  postPatch = ''
+    sed -i s/-Werror// twmnd/twmnd.pro
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p "$out/bin"
+    cp bin/* "$out/bin"
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A notification system for tiling window managers";
+    homepage = "https://github.com/sboli/twmn";
+    platforms = with lib.platforms; linux;
+    maintainers = [ lib.maintainers.matejc ];
+    license = lib.licenses.lgpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/tzupdate/default.nix b/nixpkgs/pkgs/applications/misc/tzupdate/default.nix
new file mode 100644
index 000000000000..5c2b1312faf9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tzupdate/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, python3 }:
+
+let
+  inherit (python3.pkgs) buildPythonApplication fetchPypi requests;
+in
+buildPythonApplication rec {
+  pname = "tzupdate";
+  version = "2.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "12jvyza9pfhazkzq94nizacknnp32lf7kalrjmpz1z2bqqxhx0fm";
+  };
+
+  propagatedBuildInputs = [ requests ];
+
+  meta = with stdenv.lib; {
+    description = "Update timezone information based on geoip";
+    homepage = "https://github.com/cdown/tzupdate";
+    maintainers = [ maintainers.michaelpj ];
+    license = licenses.unlicense;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/udevil/default.nix b/nixpkgs/pkgs/applications/misc/udevil/default.nix
new file mode 100644
index 000000000000..dbf721888df6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/udevil/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, intltool, glib, pkgconfig, udev, utillinux, acl }:
+stdenv.mkDerivation {
+  name = "udevil-0.4.4";
+  src = fetchurl {
+    url = "https://github.com/IgnorantGuru/udevil/archive/0.4.4.tar.gz";
+    sha256 = "0z1bhaayambrcn7bgnrqk445k50ifabmw8q4i9qj49nnbcvxhbxd";
+  };
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ intltool glib udev ];
+  configurePhase = ''
+    substituteInPlace src/Makefile.in --replace "-o root -g root" ""
+    # do not set setuid bit in nix store
+    substituteInPlace src/Makefile.in --replace 4755 0755
+    ./configure \
+      --prefix=$out \
+      --with-mount-prog=${utillinux}/bin/mount \
+      --with-umount-prog=${utillinux}/bin/umount \
+      --with-losetup-prog=${utillinux}/bin/losetup \
+      --with-setfacl-prog=${acl.bin}/bin/setfacl \
+      --sysconfdir=$prefix/etc
+  '';
+  patches = [ ./device-info-sys-stat.patch ];
+  meta = {
+    description = "A command line Linux program which mounts and unmounts removable devices without a password, shows device info, and monitors device changes";
+    homepage = "https://ignorantguru.github.io/udevil/";
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/udevil/device-info-sys-stat.patch b/nixpkgs/pkgs/applications/misc/udevil/device-info-sys-stat.patch
new file mode 100644
index 000000000000..554682108e39
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/udevil/device-info-sys-stat.patch
@@ -0,0 +1,14 @@
+diff --git a/src/device-info.h b/src/device-info.h
+index 6cb3683..ddac24c 100644
+--- a/src/device-info.h
++++ b/src/device-info.h
+@@ -18,7 +18,8 @@
+ // intltool
+ #include <glib/gi18n.h>
+ 
+-
++// stat
++#include <sys/stat.h>
+ 
+ typedef struct device_t  {
+     struct udev_device *udevice;
diff --git a/nixpkgs/pkgs/applications/misc/udiskie/default.nix b/nixpkgs/pkgs/applications/misc/udiskie/default.nix
new file mode 100644
index 000000000000..a6efc492d8a3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/udiskie/default.nix
@@ -0,0 +1,62 @@
+{ stdenv, fetchFromGitHub, asciidoc-full, gettext
+, gobject-introspection, gtk3, libappindicator-gtk3, libnotify, librsvg
+, udisks2, wrapGAppsHook
+, python3Packages
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "udiskie";
+  version = "2.2.0";
+
+  src = fetchFromGitHub {
+    owner = "coldfix";
+    repo = "udiskie";
+    rev = version;
+    sha256 = "0kn5w6bm3rmbszphzbxpjfnkawb2naa230svzkpmh3n6dcdvk4qa";
+  };
+
+  nativeBuildInputs = [
+    gettext
+    asciidoc-full        # For building man page.
+    gobject-introspection
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    librsvg              # required for loading svg icons (udiskie uses svg icons)
+    gobject-introspection
+    libnotify
+    gtk3
+    udisks2
+    libappindicator-gtk3
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
+    docopt
+    pygobject3
+    pyyaml
+  ];
+
+  postBuild = "make -C doc";
+
+  postInstall = ''
+    mkdir -p $out/share/man/man8
+    cp -v doc/udiskie.8 $out/share/man/man8/
+  '';
+
+  checkInputs = with python3Packages; [
+    nose
+    keyutils
+  ];
+
+  checkPhase = ''
+    nosetests
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Removable disk automounter for udisks";
+    license = licenses.mit;
+    homepage = "https://github.com/coldfix/udiskie";
+    maintainers = with maintainers; [ AndersonTorres ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ulauncher/0001-Adjust-get_data_path-for-NixOS.patch b/nixpkgs/pkgs/applications/misc/ulauncher/0001-Adjust-get_data_path-for-NixOS.patch
new file mode 100644
index 000000000000..f14d7f718027
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ulauncher/0001-Adjust-get_data_path-for-NixOS.patch
@@ -0,0 +1,55 @@
+From 86cc27022015697a61d1ec1b13e52f9dbe7f6c57 Mon Sep 17 00:00:00 2001
+From: worldofpeace <worldofpeace@protonmail.ch>
+Date: Mon, 23 Mar 2020 18:34:00 -0400
+Subject: [PATCH] Adjust get_data_path for NixOS
+
+We construct the ulauncher data path from xdg_data_dirs
+and prevent it from being a nix store path or being xdg_data_home.
+We do this to prevent /nix/store paths being hardcoded to shortcuts.json.
+On NixOS this path will either be /run/current-system/sw/share/ulauncher
+or $HOME/.nix-profile/share/ulauncher if the user used nix-env.
+---
+ ulauncher/config.py | 27 ++++++++++++++++++---------
+ 1 file changed, 18 insertions(+), 9 deletions(-)
+
+diff --git a/ulauncher/config.py b/ulauncher/config.py
+index f21014e..cc636e1 100644
+--- a/ulauncher/config.py
++++ b/ulauncher/config.py
+@@ -50,15 +50,24 @@ def get_data_path():
+     is specified at installation time.
+     """
+ 
+-    # Get pathname absolute or relative.
+-    path = os.path.join(
+-        os.path.dirname(__file__), __ulauncher_data_directory__)
+-
+-    abs_data_path = os.path.abspath(path)
+-    if not os.path.exists(abs_data_path):
+-        raise ProjectPathNotFoundError(abs_data_path)
+-
+-    return abs_data_path
++    paths = list(
++        filter(
++            os.path.exists,
++            [
++                os.path.join(dir, "ulauncher")
++                for dir in xdg_data_dirs
++                # Get path that isn't in the /nix/store so they don't get hardcoded into configs
++                if not dir.startswith("/nix/store/")
++                # Exclude .local/share/ulauncher which isn't what we want
++                if not dir.startswith(xdg_data_home)
++            ],
++        )
++    )
++
++    try:
++        return paths[0]
++    except:
++        raise ProjectPathNotFoundError()
+ 
+ 
+ def is_wayland():
+-- 
+2.25.1
+
diff --git a/nixpkgs/pkgs/applications/misc/ulauncher/default.nix b/nixpkgs/pkgs/applications/misc/ulauncher/default.nix
new file mode 100644
index 000000000000..34ca82b8d04c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ulauncher/default.nix
@@ -0,0 +1,113 @@
+{ stdenv
+, fetchurl
+, python3Packages
+, gdk-pixbuf
+, glib
+, gnome3
+, gobject-introspection
+, gtk3
+, wrapGAppsHook
+, webkitgtk
+, libnotify
+, keybinder3
+, libappindicator
+, intltool
+, wmctrl
+, xvfb_run
+, librsvg
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "ulauncher";
+  version = "5.7.3";
+
+  disabled = python3Packages.isPy27;
+
+  src = fetchurl {
+    url = "https://github.com/Ulauncher/Ulauncher/releases/download/${version}/ulauncher_${version}.tar.gz";
+    sha256 = "0wq2zsq3496fjfg89q01dsm7sb7kv92sycvqm6ad8z1z2kpisrbh";
+  };
+
+  nativeBuildInputs = with python3Packages; [
+    distutils_extra
+    intltool
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gdk-pixbuf
+    glib
+    gnome3.adwaita-icon-theme
+    gobject-introspection
+    gtk3
+    keybinder3
+    libappindicator
+    libnotify
+    librsvg
+    webkitgtk
+    wmctrl
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
+    mock
+    mypy
+    mypy-extensions
+    dbus-python
+    pygobject3
+    pyinotify
+    python-Levenshtein
+    pyxdg
+    requests
+    websocket_client
+  ];
+
+  checkInputs = with python3Packages; [
+    mock
+    pytest
+    pytest-mock
+    pytestpep8
+    xvfb_run
+  ];
+
+  patches = [
+    ./fix-path.patch
+    ./0001-Adjust-get_data_path-for-NixOS.patch
+    ./fix-extensions.patch
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py --subst-var out
+  '';
+
+  # https://github.com/Ulauncher/Ulauncher/issues/390
+  doCheck = false;
+
+  preCheck = ''
+    export PYTHONPATH=$PYTHONPATH:$out/${python3Packages.python.sitePackages}
+  '';
+
+  # Simple translation of
+  # - https://github.com/Ulauncher/Ulauncher/blob/f5a601bdca75198a6a31b9d84433496b63530e74/test
+  checkPhase = ''
+    runHook preCheck
+
+    # skip tests in invocation that handle paths that
+    # aren't nix friendly (i think)
+    xvfb-run -s '-screen 0 1024x768x16' \
+      pytest -k 'not TestPath and not test_handle_key_press_event' --pep8 tests
+
+    runHook postCheck
+  '';
+
+  preFixup = ''
+    gappsWrapperArgs+=(--prefix PATH : "${stdenv.lib.makeBinPath [ wmctrl ]}")
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A fast application launcher for Linux, written in Python, using GTK";
+    homepage = "https://ulauncher.io/";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ aaronjanse worldofpeace ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ulauncher/fix-extensions.patch b/nixpkgs/pkgs/applications/misc/ulauncher/fix-extensions.patch
new file mode 100644
index 000000000000..f6d00f9fafd5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ulauncher/fix-extensions.patch
@@ -0,0 +1,13 @@
+diff --git a/ulauncher/api/server/ExtensionRunner.py b/ulauncher/api/server/ExtensionRunner.py
+index 22042bf..f7b31c8 100644
+--- a/ulauncher/api/server/ExtensionRunner.py
++++ b/ulauncher/api/server/ExtensionRunner.py
+@@ -79,7 +79,7 @@ class ExtensionRunner:
+         cmd = [sys.executable, os.path.join(self.extensions_dir, extension_id, 'main.py')]
+         env = os.environ.copy()
+         env['ULAUNCHER_WS_API'] = self.extension_server.generate_ws_url(extension_id)
+-        env['PYTHONPATH'] = ':'.join(filter(bool, [ULAUNCHER_APP_DIR, os.getenv('PYTHONPATH')]))
++        env['PYTHONPATH'] = ':'.join([ULAUNCHER_APP_DIR] + sys.path)
+ 
+         if self.verbose:
+             env['VERBOSE'] = '1'
diff --git a/nixpkgs/pkgs/applications/misc/ulauncher/fix-path.patch b/nixpkgs/pkgs/applications/misc/ulauncher/fix-path.patch
new file mode 100644
index 000000000000..2936df65194e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ulauncher/fix-path.patch
@@ -0,0 +1,13 @@
+diff --git a/setup.py b/setup.py
+index 3616104..e9bbfda 100755
+--- a/setup.py
++++ b/setup.py
+@@ -112,7 +112,7 @@ class InstallAndUpdateDataDirectory(DistUtilsExtra.auto.install_auto):
+         DistUtilsExtra.auto.install_auto.run(self)
+ 
+         target_data = '/' + os.path.relpath(self.install_data, self.root) + '/'
+-        target_pkgdata = target_data + 'share/ulauncher/'
++        target_pkgdata = '@out@/share/ulauncher/'
+         target_scripts = '/' + os.path.relpath(self.install_scripts,
+                                                self.root) + '/'
+ 
diff --git a/nixpkgs/pkgs/applications/misc/upwork/default.nix b/nixpkgs/pkgs/applications/misc/upwork/default.nix
new file mode 100644
index 000000000000..3757c8ce3bb4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/upwork/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchurl, dpkg, wrapGAppsHook, autoPatchelfHook, writeShellScript
+, alsaLib, atk, at-spi2-atk, at-spi2-core, cairo, cups, dbus, expat, fontconfig, freetype
+, gdk-pixbuf, glib, gtk3, libnotify, libX11, libXcomposite, libXcursor, libXdamage, libuuid
+, libXext, libXfixes, libXi, libXrandr, libXrender, libXtst, nspr, nss, libxcb
+, pango, systemd, libXScrnSaver, libcxx, libpulseaudio }:
+
+stdenv.mkDerivation rec {
+  pname = "upwork";
+  version = "5.3.3-883";
+
+  src = fetchurl {
+    url = "https://updates-desktopapp.upwork.com/binaries/v5_3_3_883_1f817bc1fefd44e7/upwork_5.3.3.883_amd64.deb";
+    sha256 = "072zns79w4h46bvbj23rvr8i12sf2l378ry0z3hchwcimkrph9wx";
+  };
+
+  dontWrapGApps = true;
+
+  nativeBuildInputs = [ 
+    dpkg
+    wrapGAppsHook
+    autoPatchelfHook
+  ];
+
+  buildInputs = [
+    libcxx systemd libpulseaudio
+    stdenv.cc.cc alsaLib atk at-spi2-atk at-spi2-core cairo cups dbus expat fontconfig freetype
+    gdk-pixbuf glib gtk3 libnotify libX11 libXcomposite libuuid
+    libXcursor libXdamage libXext libXfixes libXi libXrandr libXrender
+    libXtst nspr nss libxcb pango systemd libXScrnSaver
+  ];
+
+  libPath = stdenv.lib.makeLibraryPath buildInputs;
+
+  unpackPhase = ''
+    dpkg-deb -x ${src} ./
+  '';
+
+  installPhase = ''
+    mv usr $out
+    mv opt $out
+    sed -e "s|/opt/Upwork|$out/bin|g" -i $out/share/applications/upwork.desktop
+
+    makeWrapper $out/opt/Upwork/upwork \
+      $out/bin/upwork \
+      --prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}/" \
+      --prefix LD_LIBRARY_PATH : ${libPath}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Online freelancing platform desktop application for time tracking";
+    homepage = "https://www.upwork.com/ab/downloads/";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ zakkor ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/misc/urlscan/default.nix b/nixpkgs/pkgs/applications/misc/urlscan/default.nix
new file mode 100644
index 000000000000..ef4684689b8a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/urlscan/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, python3Packages, fetchFromGitHub }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "urlscan";
+  version = "0.9.4";
+
+  src = fetchFromGitHub {
+    owner = "firecat53";
+    repo = pname;
+    rev = version;
+    sha256 = "11wkwjqsq848ks6m2jqsb8h0xnz75fb60bm0c4jkxys9wzy4chg5";
+  };
+
+  propagatedBuildInputs = [ python3Packages.urwid ];
+
+  doCheck = false; # No tests available
+
+  meta = with stdenv.lib; {
+    description = "Mutt and terminal url selector (similar to urlview)";
+    homepage = "https://github.com/firecat53/urlscan";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ dpaetzel jfrankenau ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/urlview/default.nix b/nixpkgs/pkgs/applications/misc/urlview/default.nix
new file mode 100644
index 000000000000..6430a1bc7196
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/urlview/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchurl, ncurses, autoreconfHook }:
+
+stdenv.mkDerivation rec {
+  version    = "0.9";
+  patchLevel = "19";
+
+  name = "urlview-${version}-${patchLevel}";
+
+  urlBase = "mirror://debian/pool/main/u/urlview/";
+
+  src = fetchurl {
+    url = urlBase + "urlview_${version}.orig.tar.gz";
+    sha256 = "746ff540ccf601645f500ee7743f443caf987d6380e61e5249fc15f7a455ed42";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ ncurses ];
+
+  preAutoreconf = ''
+    touch NEWS
+  '';
+
+  preConfigure = ''
+    mkdir -p $out/share/man/man1
+  '';
+
+  debianPatches = fetchurl {
+    url = urlBase + "urlview_${version}-${patchLevel}.diff.gz";
+    sha256 = "056883c17756f849fb9235596d274fbc5bc0d944fcc072bdbb13d1e828301585";
+  };
+
+  patches = debianPatches;
+
+  postPatch = ''
+    substituteInPlace urlview.c \
+      --replace '/etc/urlview/url_handler.sh' "$out/etc/urlview/url_handler.sh"
+  '';
+
+  postInstall = ''
+    install -Dm755 url_handler.sh $out/etc/urlview/url_handler.sh
+    patchShebangs $out/etc/urlview
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Extract URLs from text";
+    homepage = "https://packages.qa.debian.org/u/urlview.html";
+    license = licenses.gpl2;
+    platforms = with platforms; linux ++ darwin;
+    maintainers = with maintainers; [ ma27 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/usync/default.nix b/nixpkgs/pkgs/applications/misc/usync/default.nix
new file mode 100644
index 000000000000..9234d8ad202a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/usync/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, scsh, rsync, unison }:
+
+stdenv.mkDerivation rec {
+  pname = "usync";
+  version = "0.0.3";
+
+  src = fetchFromGitHub {
+    owner = "ebzzry";
+    repo = pname;
+    rev = "9c87ea8a707a47c3d7f6ef94d07591c5ab594282";
+    sha256 = "1r05gw041fz9dkkb70zd6kqw9dd8dhpv87407qxqg43pd7x47kf4";
+  };
+
+  installPhase = ''
+    install -m 555 -Dt $out/bin $pname
+  '';
+
+  postFixup = ''
+    substituteInPlace $out/bin/$pname --replace "/usr/bin/env scsh" "${scsh}/bin/scsh"
+    substituteInPlace $out/bin/$pname --replace "(rsync " "(${rsync}/bin/rsync "
+    substituteInPlace $out/bin/$pname --replace "(unison " "(${unison}/bin/unison "
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/ebzzry/usync";
+    description = "A simple site-to-site synchronization tool";
+    license = licenses.mit;
+    maintainers = [ maintainers.ebzzry ];
+    platforms = platforms.unix;
+  };
+
+  dontBuild = true;
+}
diff --git a/nixpkgs/pkgs/applications/misc/valentina/default.nix b/nixpkgs/pkgs/applications/misc/valentina/default.nix
new file mode 100644
index 000000000000..e9e8cfed796a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/valentina/default.nix
@@ -0,0 +1,66 @@
+{ mkDerivation, stdenv, fetchhg
+, qmake, qttools
+, qtbase, qtsvg, qtxmlpatterns
+, poppler_utils
+}:
+
+with stdenv.lib;
+
+mkDerivation rec {
+  pname = "valentina";
+  version = "0.6.1";
+
+  src = fetchhg {
+    url = "https://bitbucket.org/dismine/valentina";
+    rev = "v${version}";
+    sha256 = "0dxk2av7xbsd233sr9wa1hamzb7pp8yx6p5b43rsnvnzchkqf423";
+  };
+
+  postPatch = ''
+    substituteInPlace common.pri \
+      --replace '$$[QT_INSTALL_HEADERS]/QtXmlPatterns' '${getDev qtxmlpatterns}/include/QtXmlPatterns' \
+      --replace '$$[QT_INSTALL_HEADERS]/QtSvg' '${getDev qtsvg}/include/QtSvg' \
+      --replace '$$[QT_INSTALL_HEADERS]/' '${getDev qtbase}/include/' \
+      --replace '$$[QT_INSTALL_HEADERS]' '${getDev qtbase}'
+    substituteInPlace src/app/tape/tape.pro \
+      --replace '$$[QT_INSTALL_BINS]/rcc' '${getDev qtbase}/bin/rcc'
+    substituteInPlace src/app/translations.pri \
+      --replace '$$[QT_INSTALL_BINS]/$$LRELEASE' '${getDev qttools}/bin/lrelease'
+    substituteInPlace src/app/valentina/mainwindowsnogui.cpp \
+      --replace 'define PDFTOPS "pdftops"' 'define PDFTOPS "${getBin poppler_utils}/bin/pdftops"'
+    substituteInPlace src/app/valentina/dialogs/dialogsavelayout.h \
+      --replace 'define PDFTOPS "pdftops"' 'define PDFTOPS "${getBin poppler_utils}/bin/pdftops"'
+  '';
+
+  nativeBuildInputs = [ qmake qttools ];
+
+  buildInputs = [ qtbase qtsvg qtxmlpatterns poppler_utils ];
+
+  configurePhase = ''
+    qmake PREFIX=/ Valentina.pro -r "CONFIG += noTests noRunPath no_ccache noDebugSymbols"
+  '';
+
+  installFlags = [ "INSTALL_ROOT=$(out)" ];
+
+  postInstall = ''
+    mv $out/usr/share $out/
+    rmdir $out/usr
+
+    mkdir -p $out/share/man/man1
+    gzip -9c dist/debian/valentina.1 > $out/share/man/man1/valentina.1.gz
+    gzip -9c dist/debian/tape.1 > $out/share/man/man1/tape.1.gz
+
+    mkdir -p $out/share/mime/packages
+    cp dist/debian/valentina.sharedmimeinfo $out/share/mime/packages/valentina.xml
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "An open source sewing pattern drafting software";
+    homepage = "https://valentinaproject.bitbucket.io/";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ jfrankenau ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/variety/default.nix b/nixpkgs/pkgs/applications/misc/variety/default.nix
new file mode 100644
index 000000000000..4241f9153293
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/variety/default.nix
@@ -0,0 +1,73 @@
+{
+  fehSupport ? false, feh
+, imagemagickSupport ? true, imagemagick
+, stdenv
+, lib
+, python37Packages
+, fetchFromGitHub
+, intltool
+, gtk3
+, gexiv2
+, libnotify
+, wrapGAppsHook
+, gobject-introspection
+, hicolor-icon-theme
+, librsvg
+}:
+
+with python37Packages;
+
+buildPythonApplication rec {
+  pname = "variety";
+  version = "0.7.2-96-g3afe3ab";
+
+  src = fetchFromGitHub {
+    owner = "varietywalls";
+    repo = "variety";
+    rev = "3afe3abf725e5db2aec0db575a17c9907ab20de1";
+    sha256 = "10vw0202dwrwi497nsbq077v4qd3qn5b8cmkfcsgbvvjwlz7ldm5";
+  };
+
+  nativeBuildInputs = [ intltool wrapGAppsHook ];
+
+  buildInputs = [ distutils_extra ];
+
+  doCheck = false;
+
+  prePatch = ''
+    substituteInPlace variety_lib/varietyconfig.py \
+      --replace "__variety_data_directory__ = \"../data\"" "__variety_data_directory__ = \"$out/share/variety\""
+    substituteInPlace data/scripts/set_wallpaper \
+      --replace /bin/bash ${stdenv.shell}
+    substituteInPlace data/scripts/get_wallpaper \
+      --replace /bin/bash ${stdenv.shell}
+  '';
+
+  propagatedBuildInputs =
+       [ gtk3
+         gexiv2
+         libnotify
+         beautifulsoup4
+         lxml
+         pycairo
+         pygobject3
+         configobj
+         pillow
+         setuptools
+         requests
+         httplib2
+         dbus-python
+         gobject-introspection
+         hicolor-icon-theme
+         librsvg
+       ]
+    ++ lib.optional fehSupport feh
+    ++ lib.optional imagemagickSupport imagemagick;
+
+  meta = with lib; {
+    description = "A wallpaper manager for Linux systems. It supports numerous desktops and wallpaper sources, including local files and online services: Flickr, Wallhaven, Unsplash, and more";
+    homepage = "https://github.com/varietywalls/variety";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.zfnmxt ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/vcal/default.nix b/nixpkgs/pkgs/applications/misc/vcal/default.nix
new file mode 100644
index 000000000000..9519e033473e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/vcal/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, lib, fetchurl, perl }:
+
+stdenv.mkDerivation rec {
+  pname = "vcal";
+  version = "2.8";
+
+  src = fetchurl {
+    url    = "https://waynemorrison.com/software/vcal";
+    sha256 = "0jrm0jzqxb1xjp24hwbzlxsh22gjssay9gj4zszljzdm68r5afvc";
+  };
+
+  nativeBuildInputs = [ perl ]; # for pod2man
+
+  dontUnpack = true;
+  dontBuild = true;
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/{bin,share/man/man1}
+    substitute ${src} $out/bin/vcal \
+      --replace /usr/bin/perl ${perl}/bin/perl
+    chmod 0755 $out/bin/*
+    pod2man --name=vcal --release=${version} ${src} > $out/share/man/man1/vcal.1
+
+    runHook postInstall
+  '';
+
+  # There are no tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Parser for VCalendar and ICalendar files, usable from the command line";
+    homepage = "https://waynemorrison.com/software/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/veracrypt/default.nix b/nixpkgs/pkgs/applications/misc/veracrypt/default.nix
new file mode 100644
index 000000000000..07e0a046ac53
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/veracrypt/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl, fetchpatch, pkgconfig, makeself, yasm, fuse, wxGTK, lvm2 }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "veracrypt";
+  version = "1.24-Hotfix1";
+
+  src = fetchurl {
+    url = "https://launchpad.net/${pname}/trunk/${toLower version}/+download/VeraCrypt_${version}_Source.tar.bz2";
+    sha256 = "8b40ece805b216843d7a71b1a30069c4057931341b030bf65caace59263c5c8c";
+  };
+
+
+  patches = [
+    # https://github.com/veracrypt/VeraCrypt/issues/529 - fix build on non-x86
+    (fetchpatch {
+      url = "https://github.com/veracrypt/VeraCrypt/commit/afe6b2f45b15393026a1159e5f3d165ac7d0b94a.patch";
+      sha256 = "1xm9cl6zinlr0vah5xr9bvh0y9gw4331zl7d2n5xvqrcdxw3ww1y";
+      stripLen = 1;
+    })
+    # https://github.com/veracrypt/VeraCrypt/issues/529 - fix build on non-x86
+    (fetchpatch {
+      url = "https://github.com/veracrypt/VeraCrypt/commit/3fa636d477119fff6e372074568edb42d038f508.patch";
+      sha256 = "0qsccilip0ksnlzxina38a052gb533r4s422lxhrj3wv9zgpp7l3";
+      stripLen = 1;
+    })
+  ];
+
+  sourceRoot = "src";
+
+  nativeBuildInputs = [ makeself pkgconfig yasm ];
+  buildInputs = [ fuse lvm2 wxGTK ];
+
+  enableParallelBuilding = true;
+
+  installPhase = ''
+    install -Dm 755 Main/${pname} "$out/bin/${pname}"
+    install -Dm 444 Resources/Icons/VeraCrypt-256x256.xpm "$out/share/pixmaps/${pname}.xpm"
+    install -Dm 444 License.txt -t "$out/share/doc/${pname}/"
+    install -d $out/share/applications
+    substitute Setup/Linux/${pname}.desktop $out/share/applications/${pname}.desktop \
+      --replace "Exec=/usr/bin/veracrypt" "Exec=$out/bin/veracrypt" \
+      --replace "Icon=veracrypt" "Icon=veracrypt.xpm"
+  '';
+
+  meta = {
+    description = "Free Open-Source filesystem on-the-fly encryption";
+    homepage = "https://www.veracrypt.fr/";
+    license = [ licenses.asl20 /* or */ "TrueCrypt License version 3.0" ];
+    maintainers = with maintainers; [ dsferruzza ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/verbiste/default.nix b/nixpkgs/pkgs/applications/misc/verbiste/default.nix
new file mode 100644
index 000000000000..a322756c157f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/verbiste/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, pkgconfig, libgnomeui, libxml2 }:
+
+stdenv.mkDerivation rec {
+  pname = "verbiste";
+
+  version = "0.1.47";
+
+  src = fetchurl {
+    url = "https://perso.b2b2c.ca/~sarrazip/dev/${pname}-${version}.tar.gz";
+    sha256 = "02kzin3pky2q2jnihrch8y0hy043kqqmzxq8j741x80kl0j1qxkm";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ libgnomeui libxml2 ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "http://sarrazip.com/dev/verbiste.html";
+    description = "French and Italian verb conjugator";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ orivej ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/vifm/default.nix b/nixpkgs/pkgs/applications/misc/vifm/default.nix
new file mode 100644
index 000000000000..d939beb443e1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/vifm/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, makeWrapper
+, pkgconfig
+, ncurses, libX11
+, utillinux, file, which, groff
+
+  # adds support for handling removable media (vifm-media). Linux only!
+, mediaSupport ? false, python3 ? null, udisks2 ? null, lib ? null 
+}:
+
+let isFullPackage = mediaSupport;
+in stdenv.mkDerivation rec {
+  pname = if isFullPackage then "vifm-full" else "vifm";
+  version = "0.10.1";
+
+  src = fetchurl {
+    url = "https://github.com/vifm/vifm/releases/download/v${version}/vifm-${version}.tar.bz2";
+    sha256 = "0fyhxh7ndjn8fyjhj14ymkr3pjcs3k1xbs43g7xvvq85vdb6y04r";
+  };
+
+  nativeBuildInputs = [ pkgconfig makeWrapper ];
+  buildInputs = [ ncurses libX11 utillinux file which groff ];
+
+  postFixup = let
+    path = lib.makeBinPath 
+      [ udisks2 
+        (python3.withPackages (p: [p.dbus-python]))
+      ];
+
+    wrapVifmMedia = "wrapProgram $out/share/vifm/vifm-media --prefix PATH : ${path}";
+  in ''
+    ${if mediaSupport then wrapVifmMedia else ""}
+  '';
+
+  meta = with stdenv.lib; {
+    description = ''A vi-like file manager${if isFullPackage then "; Includes support for optional features" else ""}'';
+    maintainers = with maintainers; [ raskin ];
+    platforms = if mediaSupport then platforms.linux else platforms.unix;
+    license = licenses.gpl2;
+    downloadPage = "https://vifm.info/downloads.shtml";
+    homepage = "https://vifm.info/";
+    inherit version;
+    updateWalker = true;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/viking/default.nix b/nixpkgs/pkgs/applications/misc/viking/default.nix
new file mode 100644
index 000000000000..03d3256e375a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/viking/default.nix
@@ -0,0 +1,74 @@
+{ fetchurl, fetchpatch, stdenv, makeWrapper
+, pkgconfig, intltool, gettext, gtk2, expat, curl
+, gpsd, bc, file, gnome-doc-utils, libexif, libxml2, libxslt, scrollkeeper
+, docbook_xml_dtd_412, gexiv2, gpsbabel, expect
+, withMapnik ? false, mapnik
+, withMBTiles ? true, sqlite
+, withOAuth ? true, liboauth
+, withMd5Hash ? true, nettle
+, withGeoClue ? true, geoclue2 }:
+
+stdenv.mkDerivation rec {
+  pname = "viking";
+  version = "1.8";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/viking/viking/viking-${version}.tar.bz2";
+    sha256 = "1a0g0fbj4q5s9p8fv0mqvxws10q3naj81l72sz30vvqpbz6vqp45";
+  };
+
+  patches = [
+    # Fix build without mapnik and sqlite https://github.com/viking-gps/viking/pull/79
+    (fetchpatch {
+      url = "https://github.com/viking-gps/viking/commit/995feefcb97bdb1590ed018224cf47ce197fe0c1.patch";
+      sha256 = "1xb0b76kg690fag9mw3yfj5k766jmqp1sm8q4f29n1h3nz5g8izd";
+    })
+  ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ makeWrapper intltool gettext gtk2 expat curl gpsd bc file gnome-doc-utils
+    libexif libxml2 libxslt scrollkeeper docbook_xml_dtd_412 gexiv2
+  ] ++ stdenv.lib.optional withMapnik mapnik
+    ++ stdenv.lib.optional withGeoClue geoclue2
+    ++ stdenv.lib.optional withMd5Hash nettle
+    ++ stdenv.lib.optional withOAuth liboauth
+    ++ stdenv.lib.optional withMBTiles sqlite;
+
+  configureFlags = [
+    "--disable-scrollkeeper"
+    (stdenv.lib.enableFeature withMapnik "mapnik")
+    (stdenv.lib.enableFeature withGeoClue "geoclue")
+    (stdenv.lib.enableFeature withMd5Hash "nettle")
+    (stdenv.lib.enableFeature withOAuth "oauth")
+    (stdenv.lib.enableFeature withMBTiles "mbtiles")
+  ];
+
+  preBuild = ''
+    sed -i help/Makefile \
+        -e 's|--noout|--noout --nonet --path "${scrollkeeper}/share/xml/scrollkeeper/dtds"|g'
+    sed -i help/Makefile -e 's|--postvalid||g'
+  '';
+
+  doCheck = true;
+
+  postInstall = ''
+    wrapProgram $out/bin/viking \
+      --prefix PATH : "${gpsbabel}/bin" \
+      --prefix PATH : "${expect}/bin"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "GPS data editor and analyzer";
+    longDescription = ''
+      Viking is a free/open source program to manage GPS data.  You
+      can import and plot tracks and waypoints, show Openstreetmaps
+      and/or Terraserver maps under it, download geocaches for an area
+      on the map, make new tracks and waypoints, see real-time GPS
+      position, etc.
+    '';
+    homepage = "https://sourceforge.net/projects/viking/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ pSub sikmir ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/visidata/default.nix b/nixpkgs/pkgs/applications/misc/visidata/default.nix
new file mode 100644
index 000000000000..4cecf07f0fa3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/visidata/default.nix
@@ -0,0 +1,49 @@
+{ buildPythonApplication
+, lib
+, fetchFromGitHub
+, dateutil
+, pyyaml
+, openpyxl
+, xlrd
+, h5py
+, fonttools
+, lxml
+, pandas
+, pyshp
+, setuptools
+}:
+buildPythonApplication rec {
+  pname = "visidata";
+  version = "1.5.2";
+
+  src = fetchFromGitHub {
+    owner = "saulpw";
+    repo = "visidata";
+    rev = "v${version}";
+    sha256 = "19gs8i6chrrwibz706gib5sixx1cjgfzh7v011kp3izcrn524mc0";
+  };
+
+  propagatedBuildInputs = [
+    dateutil
+    pyyaml
+    openpyxl
+    xlrd
+    h5py
+    fonttools
+    lxml
+    pandas
+    pyshp
+    setuptools
+  ];
+
+  doCheck = false;
+
+  meta = {
+    inherit version;
+    description = "Interactive terminal multitool for tabular data";
+    license = lib.licenses.gpl3;
+    maintainers = [ lib.maintainers.raskin ];
+    platforms = with lib.platforms; linux ++ darwin;
+    homepage = "http://visidata.org/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/vit/default.nix b/nixpkgs/pkgs/applications/misc/vit/default.nix
new file mode 100644
index 000000000000..3ae4aacb872b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/vit/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, python3Packages
+, taskwarrior
+, glibcLocales
+}:
+
+with python3Packages;
+
+buildPythonApplication rec {
+  pname = "vit";
+  version = "2.0.0";
+  disabled = lib.versionOlder python.version "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "5282d8076d9814d9248071aec8784cffbd968601542533ccb28ca61d1d08205e";
+  };
+
+  propagatedBuildInputs = [
+    pytz
+    tasklib
+    tzlocal
+    urwid
+  ];
+
+  checkInputs = [ glibcLocales ];
+
+  makeWrapperArgs = [ "--suffix" "PATH" ":" "${taskwarrior}/bin" ];
+
+  preCheck = ''
+    export TERM=''${TERM-linux}
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/scottkosty/vit";
+    description = "Visual Interactive Taskwarrior";
+    maintainers = with maintainers; [ dtzWill arcnmx ];
+    platforms = platforms.all;
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/volnoti/default.nix b/nixpkgs/pkgs/applications/misc/volnoti/default.nix
new file mode 100644
index 000000000000..845bdae6bec7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/volnoti/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, fetchpatch
+, pkgconfig, dbus, gdk-pixbuf, glib, libX11, gtk2, librsvg
+, dbus-glib, autoreconfHook, wrapGAppsHook }:
+
+stdenv.mkDerivation {
+  pname = "volnoti-unstable";
+  version = "2013-09-23";
+
+  src = fetchFromGitHub {
+    owner = "davidbrazdil";
+    repo = "volnoti";
+    rev = "4af7c8e54ecc499097121909f02ecb42a8a60d24";
+    sha256 = "155lb7w563dkdkdn4752hl0zjhgnq3j4cvs9z98nb25k1xpmpki7";
+  };
+
+  patches = [
+    # Fix dbus interface headers. See
+    # https://github.com/davidbrazdil/volnoti/pull/10
+    (fetchpatch {
+      url = "https://github.com/davidbrazdil/volnoti/pull/10.patch";
+      sha256 = "046zfdjmvhb7jrsgh04vfgi35sgy1zkrhd3bzdby3nvds1wslfam";
+    })
+  ];
+
+  nativeBuildInputs = [ pkgconfig autoreconfHook wrapGAppsHook ];
+
+  buildInputs = [
+    dbus gdk-pixbuf glib libX11 gtk2 dbus-glib librsvg
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Lightweight volume notification for Linux";
+    homepage = "https://github.com/davidbrazdil/volnoti";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.gilligan ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/vp/default.nix b/nixpkgs/pkgs/applications/misc/vp/default.nix
new file mode 100644
index 000000000000..7284fa65e8bd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/vp/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, SDL, SDL_image }:
+
+stdenv.mkDerivation rec {
+  pname = "vp";
+  version = "1.8";
+
+  src = fetchFromGitHub {
+    owner = "erikg";
+    repo = "vp";
+    rev = "v${version}";
+    sha256 = "08q6xrxsyj6vj0sz59nix9isqz84gw3x9hym63lz6v8fpacvykdq";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+
+  buildInputs = [ SDL SDL_image ];
+
+  NIX_CFLAGS_COMPILE="-I${SDL}/include/SDL -I${SDL_image}/include/SDL";
+
+  meta = with stdenv.lib; {
+    homepage = "http://brlcad.org/~erik/";
+    description = "SDL based picture viewer/slideshow";
+    platforms = platforms.unix;
+    license  = licenses.gpl3;
+    maintainers = [ maintainers.vrthra ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/vue/default.nix b/nixpkgs/pkgs/applications/misc/vue/default.nix
new file mode 100644
index 000000000000..d6404ca65965
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/vue/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, jre, runtimeShell }:
+
+stdenv.mkDerivation rec {
+  pname = "vue";
+  version = "3.3.0";
+  src = fetchurl {
+    url = "http://releases.atech.tufts.edu/jenkins/job/VUE/116/deployedArtifacts/download/artifact.1";
+    sha256 = "0yfzr80pw632lkayg4qfmwzrqk02y30yz8br7isyhmgkswyp5rnx";
+  };
+
+  phases = "installPhase";
+
+  installPhase = ''
+    mkdir -p "$out"/{share/vue,bin}
+    cp ${src} "$out/share/vue/vue.jar"
+    echo '#!${runtimeShell}' >> "$out/bin/vue"
+    echo '${jre}/bin/java -jar "'"$out/share/vue/vue.jar"'" "$@"' >> "$out/bin/vue"
+    chmod a+x "$out/bin/vue"
+  '';
+
+  meta = {
+    description = "Visual Understanding Environment - mind mapping software";
+    maintainers = with stdenv.lib.maintainers; [ raskin ];
+    platforms = with stdenv.lib.platforms; linux;
+    license = stdenv.lib.licenses.free; # Apache License fork, actually
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/vym/default.nix b/nixpkgs/pkgs/applications/misc/vym/default.nix
new file mode 100644
index 000000000000..ce45471c2f02
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/vym/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, mkDerivation, fetchurl, pkgconfig, qmake, qtscript, qtsvg }:
+
+mkDerivation rec {
+  pname = "vym";
+  version = "2.7.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/vym/${version}/${pname}-${version}.tar.bz2";
+    sha256 = "0lyf0m4y5kn5s47z4sg10215f3jsn3k1bl389jfbh2f5v4srav4g";
+  };
+
+  # Hardcoded paths scattered about all have form share/vym
+  # which is encouraging, although we'll need to patch them (below).
+  qmakeFlags = [
+    "DATADIR=${placeholder "out"}/share"
+    "DOCDIR=${placeholder "out"}/share/doc/vym"
+  ];
+
+  postPatch = ''
+    for x in \
+      exportoofiledialog.cpp \
+      main.cpp \
+      mainwindow.cpp \
+      tex/*.{tex,lyx}; \
+    do
+      substituteInPlace $x \
+        --replace /usr/share/vym $out/share/vym \
+        --replace /usr/local/share/vym $out/share/vym \
+        --replace /usr/share/doc $out/share/doc/vym
+    done
+  '';
+
+  hardeningDisable = [ "format" ];
+
+  nativeBuildInputs = [ pkgconfig qmake ];
+  buildInputs = [ qtscript qtsvg ];
+
+  postInstall = ''
+    install -Dm755 -t $out/share/man/man1 doc/*.1.gz
+  '';
+
+  dontGzipMan = true;
+
+  meta = with stdenv.lib; {
+    description = "A mind-mapping software";
+    longDescription = ''
+      VYM (View Your Mind) is a tool to generate and manipulate maps which show your thoughts.
+      Such maps can help you to improve your creativity and effectivity. You can use them
+      for time management, to organize tasks, to get an overview over complex contexts,
+      to sort your ideas etc.
+
+      Maps can be drawn by hand on paper or a flip chart and help to structure your thoughs.
+      While a tree like structure like shown on this page can be drawn by hand or any drawing software
+      vym offers much more features to work with such maps.
+    '';
+    homepage = "http://www.insilmaril.de/vym/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/waybar/default.nix b/nixpkgs/pkgs/applications/misc/waybar/default.nix
new file mode 100644
index 000000000000..7ecaabe9a922
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/waybar/default.nix
@@ -0,0 +1,71 @@
+{ stdenv, fetchFromGitHub, meson, pkgconfig, ninja, wrapGAppsHook
+, wayland, wlroots, gtkmm3, libinput, libsigcxx, jsoncpp, fmt, scdoc, spdlog, gtk-layer-shell
+, howard-hinnant-date, cmake
+, traySupport  ? true,  libdbusmenu-gtk3
+, pulseSupport ? false, libpulseaudio
+, nlSupport    ? true,  libnl
+, udevSupport  ? true,  udev
+, swaySupport  ? true,  sway
+, mpdSupport   ? true,  mpd_clientlib
+, withMediaPlayer ? false, glib, gobject-introspection, python3, python38Packages, playerctl
+}:
+  stdenv.mkDerivation rec {
+    pname = "waybar";
+    version = "0.9.2";
+
+    src = fetchFromGitHub {
+      owner = "Alexays";
+      repo = "Waybar";
+      rev = version;
+      sha256 = "1gfxyjzwfqznyrpyr3322z3w844i1lh77kly4hcpy9y5gsfmlafy";
+    };
+
+    nativeBuildInputs = [
+      meson ninja pkgconfig scdoc wrapGAppsHook cmake
+    ] ++ stdenv.lib.optional withMediaPlayer gobject-introspection;
+
+    propagatedBuildInputs = stdenv.lib.optionals withMediaPlayer [
+      glib
+      playerctl
+      python38Packages.pygobject3
+    ];
+    strictDeps = false;
+
+    buildInputs = with stdenv.lib;
+      [ wayland wlroots gtkmm3 libinput libsigcxx jsoncpp fmt spdlog gtk-layer-shell howard-hinnant-date ]
+      ++ optional  traySupport  libdbusmenu-gtk3
+      ++ optional  pulseSupport libpulseaudio
+      ++ optional  nlSupport    libnl
+      ++ optional  udevSupport  udev
+      ++ optional  swaySupport  sway
+      ++ optional  mpdSupport   mpd_clientlib;
+
+    mesonFlags = (stdenv.lib.mapAttrsToList
+      (option: enable: "-D${option}=${if enable then "enabled" else "disabled"}")
+      {
+        dbusmenu-gtk = traySupport;
+        pulseaudio = pulseSupport;
+        libnl = nlSupport;
+        libudev = udevSupport;
+        mpd = mpdSupport;
+      }
+    ) ++ [
+      "-Dout=${placeholder "out"}"
+      "-Dsystemd=disabled"
+    ];
+
+    preFixup = stdenv.lib.optional withMediaPlayer ''
+      cp $src/resources/custom_modules/mediaplayer.py $out/bin/waybar-mediaplayer.py
+
+      wrapProgram $out/bin/waybar-mediaplayer.py \
+        --prefix PYTHONPATH : "$PYTHONPATH:$out/${python3.sitePackages}"
+    '';
+
+    meta = with stdenv.lib; {
+      description = "Highly customizable Wayland bar for Sway and Wlroots based compositors";
+      license = licenses.mit;
+      maintainers = with maintainers; [ FlorianFranzen minijackson synthetica ];
+      platforms = platforms.unix;
+      homepage = "https://github.com/alexays/waybar";
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/misc/wcalc/default.nix b/nixpkgs/pkgs/applications/misc/wcalc/default.nix
new file mode 100644
index 000000000000..94c56ba5439c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/wcalc/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, mpfr, readline }:
+
+stdenv.mkDerivation rec {
+  pname = "wcalc";
+  version = "2.5";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/w-calc/${pname}-${version}.tar.bz2";
+    sha256 = "1vi8dl6rccqiq1apmpwawyg2ywx6a1ic1d3cvkf2hlwk1z11fb0f";
+  };
+
+  buildInputs = [ mpfr readline ];
+
+  meta = with stdenv.lib; {
+    description = "A command line calculator";
+    homepage = "http://w-calc.sourceforge.net";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/weather/default.nix b/nixpkgs/pkgs/applications/misc/weather/default.nix
new file mode 100644
index 000000000000..ce4fae1cb229
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/weather/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, pythonPackages }:
+
+stdenv.mkDerivation rec {
+    version = "2.3";
+    pname = "weather";
+
+    src = fetchurl {
+        url = "http://fungi.yuggoth.org/weather/src/${pname}-${version}.tar.xz";
+        sha256 = "0inij30prqqcmzjwcmfzjjn0ya5klv18qmajgxipz1jr3lpqs546";
+    };
+
+    nativeBuildInputs = [ pythonPackages.wrapPython ];
+
+    buildInputs = [ pythonPackages.python ];
+
+    phases = [ "unpackPhase" "installPhase" ];
+
+    installPhase = ''
+        site_packages=$out/${pythonPackages.python.sitePackages}
+        mkdir -p $out/{share/{man,weather-util},bin,etc} $site_packages
+        cp weather $out/bin/
+        cp weather.py $site_packages/
+        chmod +x $out/bin/weather
+        cp airports overrides.{conf,log} places slist stations zctas zlist zones $out/share/weather-util/
+        cp weatherrc $out/etc
+        cp weather.1 weatherrc.5 $out/share/man/
+        sed -i \
+          -e "s|/etc|$out/etc|g" \
+          -e "s|else: default_setpath = \".:~/.weather|&:$out/share/weather-util|" \
+          $site_packages/weather.py
+        wrapPythonPrograms
+    '';
+
+    meta = {
+        homepage = "http://fungi.yuggoth.org/weather";
+        description = "Quick access to current weather conditions and forecasts";
+        license = stdenv.lib.licenses.isc;
+        maintainers = [ stdenv.lib.maintainers.matthiasbeyer ];
+        platforms = with stdenv.lib.platforms; linux; # my only platform
+    };
+}
diff --git a/nixpkgs/pkgs/applications/misc/web-media-controller/default.nix b/nixpkgs/pkgs/applications/misc/web-media-controller/default.nix
new file mode 100644
index 000000000000..b2a3394f8aec
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/web-media-controller/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, glib, pcre, json-glib }:
+
+stdenv.mkDerivation rec {
+  pname = "wmc-mpris";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "f1u77y";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1zcnaf9g55cbj9d2zlsr0i15qh0w9gp5jmxkm6dcp1j6yd7j3ymc";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [ glib pcre json-glib ];
+  cmakeFlags = [
+    "-DCHROMIUM_MANIFEST_DESTINATION=${placeholder "out"}/etc/chromium/native-messaging-hosts"
+    "-DCHROME_MANIFEST_DESTINATION=${placeholder "out"}/etc/opt/chrome/native-messaging-hosts"
+    "-DFIREFOX_MANIFEST_DESTINATION=${placeholder "out"}/lib/mozilla/native-messaging-hosts"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/f1u77y/wmc-mpris";
+    description = "MPRIS proxy for usage with 'Web Media Controller' web extension";
+    license = licenses.unlicense;
+    maintainers = with maintainers; [ doronbehar ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/wego/default.nix b/nixpkgs/pkgs/applications/misc/wego/default.nix
new file mode 100644
index 000000000000..0dc13e290f58
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/wego/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildGoPackage, fetchgit }:
+
+buildGoPackage rec {
+  pname = "wego";
+  version = "unstable-2019-02-11";
+  rev = "994e4f141759a1070d7b0c8fbe5fad2cc7ee7d45";
+
+  goPackagePath = "github.com/schachmat/wego";
+
+  src = fetchgit {
+    inherit rev;
+    url = "https://github.com/schachmat/wego";
+    sha256 = "1affzwi5rbp4zkirhmby8bvlhsafw7a4rs27caqwyj8g3jhczmhy";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = {
+    license = stdenv.lib.licenses.isc;
+    homepage = "https://github.com/schachmat/wego";
+    description = "Weather app for the terminal";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/wego/deps.nix b/nixpkgs/pkgs/applications/misc/wego/deps.nix
new file mode 100644
index 000000000000..133315cd0222
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/wego/deps.nix
@@ -0,0 +1,48 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.3.0
+[
+  {
+    goPackagePath = "github.com/mattn/go-colorable";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-colorable";
+      rev = "98ec13f34aabf44cc914c65a1cfb7b9bc815aef1";
+      sha256 = "1yxcz08kminqr1221zxpibnbzfcgs3fafin0z9zqb3gqvf74jywz";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-isatty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-isatty";
+      rev = "31745d66dd679ac0ac4f8d3ecff168fce6170c6a";
+      sha256 = "0h671sv7hfprja495kavazkalkx7xzaqksjh13brcnwq67ijrali";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-runewidth";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-runewidth";
+      rev = "18c3d09a134a52720932bbaa92c798a0ab111004";
+      sha256 = "1snr8mk63vz2h44knq26dm81p83887v7kb09iywqmx0nqzngih66";
+    };
+  }
+  {
+    goPackagePath = "github.com/schachmat/ingo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/schachmat/ingo";
+      rev = "a4bdc0729a3fda62cc4069b6e490fc657fd54e33";
+      sha256 = "1gw0kddy7jh3467imsqni86cf9yq7k6vpfc0ywkbwj0zsjsdgd49";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "b016eb3dc98ea7f69ed55e8216b87187067ae621";
+      sha256 = "1k0qr26046d228gi6ngkfxp4m1rjgxk4jj75h0kh1cpyp91n5rja";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/misc/wikicurses/default.nix b/nixpkgs/pkgs/applications/misc/wikicurses/default.nix
new file mode 100644
index 000000000000..e528dab0c9fd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/wikicurses/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, pythonPackages }:
+
+pythonPackages.buildPythonApplication rec {
+  version = "1.4";
+  pname = "wikicurses";
+
+  src = fetchFromGitHub {
+    owner = "ids1024";
+    repo = "wikicurses";
+    rev = "v${version}";
+    sha256 = "0f14s4qx3q5pr5vn460c34b5mbz2xs62d8ljs3kic8gmdn8x2knm";
+  };
+
+  outputs = [ "out" "man" ];
+
+  propagatedBuildInputs = with pythonPackages; [ urwid beautifulsoup4 lxml ];
+
+  postInstall = ''
+    mkdir -p $man/share/man/man{1,5}
+    cp wikicurses.1 $man/share/man/man1/
+    cp wikicurses.conf.5 $man/share/man/man5/
+  '';
+
+  doCheck = false;
+
+  meta = {
+    description = "A simple curses interface for MediaWiki sites such as Wikipedia";
+    homepage = "https://github.com/ids1024/wikicurses/";
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = with stdenv.lib.maintainers; [ pSub ];
+  };
+
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/with-shell/default.nix b/nixpkgs/pkgs/applications/misc/with-shell/default.nix
new file mode 100644
index 000000000000..d3b5541ac4db
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/with-shell/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchFromGitHub }:
+stdenv.mkDerivation {
+  name = "with-2016-08-20";
+  src = fetchFromGitHub {
+    owner = "mchav";
+    repo = "With";
+    rev = "cc2828bddd92297147d4365765f4ef36385f050a";
+    sha256 = "10m2xv6icrdp6lfprw3a9hsrzb3bip19ipkbmscap0niddqgcl9b";
+  };
+  installPhase = ''
+    mkdir -p $out/bin
+    cp with $out/bin/with
+  '';
+  meta = {
+    homepage = "https://github.com/mchav/With";
+    description = "Command prefixing for continuous workflow using a single tool";
+    license = stdenv.lib.licenses.asl20;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/wmname/default.nix b/nixpkgs/pkgs/applications/misc/wmname/default.nix
new file mode 100644
index 000000000000..8e760b787b49
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/wmname/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, libX11 }:
+
+stdenv.mkDerivation rec {
+  name = "wmname-0.1";
+
+  src = fetchurl {
+    url = "https://dl.suckless.org/tools/${name}.tar.gz";
+    sha256 = "559ad188b2913167dcbb37ecfbb7ed474a7ec4bbcb0129d8d5d08cb9208d02c5";
+  };
+
+  buildInputs = [ libX11 ];
+
+  preConfigure = [ ''sed -i "s@PREFIX = /usr/local@PREFIX = $out@g" config.mk'' ];
+
+  meta = {
+    description = "Prints or set the window manager name property of the root window";
+    homepage = "https://tools.suckless.org/wmname";
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/wofi/default.nix b/nixpkgs/pkgs/applications/misc/wofi/default.nix
new file mode 100644
index 000000000000..37b991e6d476
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/wofi/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, lib, fetchhg, fetchpatch, pkg-config, meson, ninja, wayland, gtk3, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "wofi";
+  version = "1.1.2";
+
+  src = fetchhg {
+    url = "https://hg.sr.ht/~scoopta/wofi";
+    rev = "v${version}";
+    sha256 = "086j5wshawjbwdmmmldivfagc2rr7g5a2gk11l0snqqslm294xsn";
+  };
+
+  nativeBuildInputs = [ pkg-config meson ninja wrapGAppsHook ];
+  buildInputs = [ wayland gtk3 ];
+
+  # Fixes icon bug on NixOS.
+  # Will need to be removed on next release
+  # see https://todo.sr.ht/~scoopta/wofi/54
+  patches = [
+    (fetchpatch {
+      url = "https://paste.sr.ht/blob/1cbddafac3806afb203940c029e78ce8390d8f49";
+      sha256 = "1n4jpmh66p7asjhj0z2s94ny91lmaq4hhh2356nj406vlqr15vbb";
+    })
+  ];
+
+  meta = with lib; {
+    description = "A launcher/menu program for wlroots based wayland compositors such as sway";
+    homepage = "https://hg.sr.ht/~scoopta/wofi";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ elyhaka ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/wordnet/default.nix b/nixpkgs/pkgs/applications/misc/wordnet/default.nix
new file mode 100644
index 000000000000..1f0414838adb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/wordnet/default.nix
@@ -0,0 +1,52 @@
+{stdenv, fetchurl, tcl, tk, xlibsWrapper, makeWrapper}:
+
+stdenv.mkDerivation rec {
+  version = "3.0";
+  pname = "wordnet";
+  src = fetchurl {
+    url = "http://wordnetcode.princeton.edu/${version}/WordNet-${version}.tar.bz2";
+    sha256 = "08pgjvd2vvmqk3h641x63nxp7wqimb9r30889mkyfh2agc62sjbc";
+  };
+
+  buildInputs = [tcl tk xlibsWrapper makeWrapper];
+
+  hardeningDisable = [ "format" ];
+
+  patchPhase = ''
+    sed "13i#define USE_INTERP_RESULT 1" -i src/stubs.c
+  '';
+
+  # Needs the path to `tclConfig.sh' and `tkConfig.sh'.
+  configureFlags = [
+    "--with-tcl=${tcl}/lib"
+    "--with-tk=${tk}/lib"
+  ];
+
+  postInstall = ''
+    wrapProgram $out/bin/wishwn --set TK_LIBRARY "${tk}/lib/${tk.libPrefix}"
+    wrapProgram $out/bin/wnb    --prefix PATH : "$out/bin"
+  '';
+
+  meta = {
+    description = "Lexical database for the English language";
+
+    longDescription =
+      '' WordNet® is a large lexical database of English.  Nouns, verbs,
+         adjectives and adverbs are grouped into sets of cognitive synonyms
+         (synsets), each expressing a distinct concept.  Synsets are
+         interlinked by means of conceptual-semantic and lexical relations.
+         The resulting network of meaningfully related words and concepts can
+         be navigated with the browser.  WordNet is also freely and publicly
+         available for download.  WordNet's structure makes it a useful tool
+         for computational linguistics and natural language processing.
+      '';
+
+    homepage = "https://wordnet.princeton.edu/";
+    license = {
+      fullName = "WordNet 3.0 license";
+      url = "https://wordnet.princeton.edu/license-and-commercial-use";
+    };
+    maintainers = [ ];
+    platforms = with stdenv.lib.platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/worker/default.nix b/nixpkgs/pkgs/applications/misc/worker/default.nix
new file mode 100644
index 000000000000..9e3022457a0e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/worker/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, libX11, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "worker";
+  version = "4.4.0";
+
+  src = fetchurl {
+    url = "http://www.boomerangsworld.de/cms/worker/downloads/${pname}-${version}.tar.gz";
+    sha256 = "1k2svpzq01n1h9365nhi7r2k7dmsviczxi9m6fb80ccccdz7i530";
+  };
+
+  buildInputs = [ libX11 ];
+
+  meta = with stdenv.lib; {
+    description = "A two-pane file manager with advanced file manipulation features";
+    homepage = "http://www.boomerangsworld.de/cms/worker/index.html";
+    license =  licenses.gpl2;
+    maintainers = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/workrave/default.nix b/nixpkgs/pkgs/applications/misc/workrave/default.nix
new file mode 100644
index 000000000000..b0020b64eded
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/workrave/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchFromGitHub, wrapGAppsHook
+, autoconf, autoconf-archive, automake, gettext, intltool, libtool, pkgconfig
+, libICE, libSM, libXScrnSaver, libXtst, cheetah
+, gobject-introspection, glib, glibmm, gtkmm3, atk, pango, pangomm, cairo
+, cairomm , dbus, dbus-glib, gdome2, gstreamer, gst-plugins-base
+, gst-plugins-good, libsigcxx }:
+
+stdenv.mkDerivation rec {
+  pname = "workrave";
+  version = "1.10.31";
+
+  src = fetchFromGitHub {
+    sha256 = "0v2mx2idaxlsyv5w66b7pknlill9j9i2gqcs3vq54gak7ix9fj1p";
+    rev = with stdenv.lib;
+      "v" + concatStringsSep "_" (splitVersion version);
+    repo = "workrave";
+    owner = "rcaelers";
+  };
+
+  nativeBuildInputs = [
+    autoconf autoconf-archive automake gettext intltool libtool pkgconfig wrapGAppsHook
+  ];
+  buildInputs = [
+    libICE libSM libXScrnSaver libXtst cheetah
+    gobject-introspection glib glibmm gtkmm3 atk pango pangomm cairo cairomm
+    dbus dbus-glib gdome2 gstreamer gst-plugins-base gst-plugins-good libsigcxx
+  ];
+
+  preConfigure = "./autogen.sh";
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "A program to help prevent Repetitive Strain Injury";
+    longDescription = ''
+      Workrave is a program that assists in the recovery and prevention of
+      Repetitive Strain Injury (RSI). The program frequently alerts you to
+      take micro-pauses, rest breaks and restricts you to your daily limit.
+    '';
+    homepage = "http://www.workrave.org/";
+    downloadPage = "https://github.com/rcaelers/workrave/releases";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ prikhi ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/wtf/default.nix b/nixpkgs/pkgs/applications/misc/wtf/default.nix
new file mode 100644
index 000000000000..aeece53e779b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/wtf/default.nix
@@ -0,0 +1,39 @@
+{ buildGoModule
+, fetchFromGitHub
+, lib
+, makeWrapper
+, ncurses
+}:
+
+buildGoModule rec {
+  pname = "wtf";
+  version = "0.30.0";
+
+  src = fetchFromGitHub {
+    owner = "wtfutil";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "11vy39zygk1gxb1nc1zmxlgs6fn7yq68090fwm2jar0lsxx8a83i";
+   };
+
+  vendorSha256 = "0qfb352gmsmy5glrsjwc3w57di5k2kjdsyfqn4xf7p4v12yg88va";
+
+  buildFlagsArray = [ "-ldflags=-s -w -X main.version=${version}" ];
+
+  subPackages = [ "." ];
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  postInstall = ''
+    mv "$out/bin/wtf" "$out/bin/wtfutil"
+    wrapProgram "$out/bin/wtfutil" --prefix PATH : "${ncurses.dev}/bin"
+  '';
+
+  meta = with lib; {
+    description = "The personal information dashboard for your terminal";
+    homepage = "https://wtfutil.com/";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xastir/default.nix b/nixpkgs/pkgs/applications/misc/xastir/default.nix
new file mode 100644
index 000000000000..84e4eee2bddc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xastir/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, autoreconfHook
+, curl, db, libgeotiff
+, libXpm, libXt, motif, pcre
+, perl, proj, rastermagick, shapelib
+}:
+
+stdenv.mkDerivation rec {
+  pname = "xastir";
+  version = "2.1.6";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "Release-${version}";
+    sha256 = "0yrvwy6hlc73gzwrsrczflyymyz0k33hj991ajrd1vijq14m3n91";
+  };
+
+  buildInputs = [
+    autoreconfHook
+    curl db libgeotiff
+    libXpm libXt motif pcre
+    perl proj rastermagick shapelib
+  ];
+
+  configureFlags = [ "--with-motif-includes=${motif}/include" ];
+
+  postPatch = "patchShebangs .";
+
+  meta = with stdenv.lib; {
+    description = "Graphical APRS client";
+    homepage = "https://xastir.org";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.ehmry ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xautoclick/default.nix b/nixpkgs/pkgs/applications/misc/xautoclick/default.nix
new file mode 100644
index 000000000000..4f441d8a9a99
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xautoclick/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, xorg, pkgconfig
+, gtkSupport ? true, gtk2
+, qtSupport ? true, qt4
+}:
+
+stdenv.mkDerivation {
+  version = "0.31";
+  pname = "xautoclick";
+  src = fetchurl {
+    url = "mirror://sourceforge/project/xautoclick/xautoclick/xautoclick-0.31/xautoclick-0.31.tar.gz";
+    sha256 = "0h522f12a7v2b89411xm51iwixmjp2mp90rnizjgiakx9ajnmqnm";
+  };
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ xorg.libX11 xorg.libXtst xorg.xinput xorg.libXi xorg.libXext ]
+    ++ stdenv.lib.optionals gtkSupport [ gtk2 ]
+    ++ stdenv.lib.optionals qtSupport [ qt4 ];
+  patchPhase = ''
+    substituteInPlace configure --replace /usr/X11R6 ${xorg.libX11.dev}
+  '';
+  preConfigure = stdenv.lib.optional qtSupport ''
+    mkdir .bin
+    ln -s ${qt4}/bin/moc .bin/moc-qt4
+    addToSearchPath PATH .bin
+    sed -i -e "s@LD=\$_cc@LD=\$_cxx@" configure
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Autoclicker application, which enables you to automatically click the left mousebutton";
+    homepage = "http://xautoclick.sourceforge.net";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xca/default.nix b/nixpkgs/pkgs/applications/misc/xca/default.nix
new file mode 100644
index 000000000000..bf6b37b10286
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xca/default.nix
@@ -0,0 +1,33 @@
+{ mkDerivation, lib, fetchFromGitHub, autoreconfHook, perl, pkgconfig
+, libtool, openssl, qtbase, qttools }:
+
+mkDerivation rec {
+  pname = "xca";
+  version = "2.2.1";
+
+  src = fetchFromGitHub {
+    owner  = "chris2511";
+    repo   = "xca";
+    rev    = "RELEASE.${version}";
+    sha256 = "0na2816lkfkkvssh9kmf5vwy6x8kd4x7h138jzy61wrvs69vhnbi";
+  };
+
+  postPatch = ''
+    substituteInPlace doc/code2html \
+      --replace /usr/bin/perl ${perl}/bin/perl
+  '';
+
+  buildInputs = [ libtool openssl qtbase ];
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig qttools ];
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "An x509 certificate generation tool, handling RSA, DSA and EC keys, certificate signing requests (PKCS#10) and CRLs";
+    homepage    = "https://hohnstaedt.de/xca/";
+    license     = licenses.bsd3;
+    maintainers = with maintainers; [ offline peterhoeg ];
+    platforms   = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xchm/default.nix b/nixpkgs/pkgs/applications/misc/xchm/default.nix
new file mode 100644
index 000000000000..fb1b59ed01fa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xchm/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, wxGTK30, chmlib }:
+
+stdenv.mkDerivation rec {
+  pname = "xchm";
+  version = "1.31";
+
+  src = fetchFromGitHub {
+    owner = "rzvncj";
+    repo = "xCHM";
+    rev = version;
+    sha256 = "1mzafbpc1c211byf8bnwl13by7vi8xvxlaykyrajb1bj0ynbmmgp";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ wxGTK30 chmlib ];
+
+  configureFlags = [ "--with-wx-prefix=${wxGTK30}" ];
+
+  preConfigure = ''
+    export LDFLAGS="$LDFLAGS $(${wxGTK30}/bin/wx-config --libs | sed -e s@-pthread@@) -lwx_gtk2u_aui-3.0"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A viewer for Microsoft HTML Help files";
+    homepage = "https://github.com/rzvncj/xCHM";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ sikmir ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xcruiser/default.nix b/nixpkgs/pkgs/applications/misc/xcruiser/default.nix
new file mode 100644
index 000000000000..80a1ced563f8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xcruiser/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, gccmakedep, imake, libXt, libXaw, libXpm, libXext }:
+
+stdenv.mkDerivation {
+  name = "xcruiser-0.30";
+
+  src = fetchurl {
+      url = "mirror://sourceforge/xcruiser/xcruiser/xcruiser-0.30/xcruiser-0.30.tar.gz";
+      sha256 = "1r8whva38xizqdh7jmn6wcmfmsndc67pkw22wzfzr6rq0vf6hywi";
+    };
+
+  nativeBuildInputs = [ gccmakedep imake ];
+  buildInputs = [ libXt libXaw libXpm libXext ];
+
+  makeFlags = [
+    "BINDIR=$(out)/bin"
+    "XAPPLOADDIR=$(out)/etc/X11/app-defaults"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Filesystem visualization utility";
+    longDescription = ''
+      XCruiser, formerly known as XCruise, is a filesystem visualization utility.
+      It constructs a virtually 3-D formed universe from a directory
+      tree and allows you to "cruise" within a visualized filesystem.
+    '';
+    homepage = "http://xcruiser.sourceforge.net/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ ehmry ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xdgmenumaker/default.nix b/nixpkgs/pkgs/applications/misc/xdgmenumaker/default.nix
new file mode 100644
index 000000000000..b4d821e1deb1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xdgmenumaker/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchFromGitHub, txt2tags, python3Packages, glib, gobject-introspection, wrapGAppsHook }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "xdgmenumaker";
+  version = "1.5";
+
+  src = fetchFromGitHub {
+    owner = "gapan";
+    repo = pname;
+    rev = version;
+    sha256 = "1vrsp5c1ah7p4dpwd6aqvinpwzd8crdimvyyr3lbm3c6cwpyjmif";
+  };
+
+  format = "other";
+
+  strictDeps = false;
+
+  nativeBuildInputs = [
+    gobject-introspection
+    txt2tags
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+  ];
+
+  pythonPath = with python3Packages; [
+    pyxdg
+    pygobject3
+  ];
+
+  makeFlags = [
+    "PREFIX=${placeholder "out"}"
+  ];
+
+  installFlags = [
+    "DESTDIR="
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Command line tool that generates XDG menus for several window managers";
+    homepage = "https://github.com/gapan/xdgmenumaker";
+    license = licenses.gpl2Plus;
+    # NOTE: exclude darwin from platforms because Travis reports hash mismatch
+    platforms = with platforms; filter (x: !(elem x darwin)) unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xfe/default.nix b/nixpkgs/pkgs/applications/misc/xfe/default.nix
new file mode 100644
index 000000000000..29a20e0ece29
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xfe/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, fox, pkgconfig, gettext, xlibsWrapper, gcc, intltool, file, libpng }:
+
+stdenv.mkDerivation rec {
+  name = "xfe-1.42";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/xfe/${name}.tar.gz";
+    sha256 = "1v1v0vcbnm30kpyd3rj8f56yh7lfnwy7nbs9785wi229b29fiqx1";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ fox gettext xlibsWrapper gcc intltool file libpng ];
+
+  preConfigure = ''
+    sed -i s,/usr/share/xfe,$out/share/xfe, src/xfedefs.h
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "MS-Explorer like file manager for X";
+    longDescription = ''
+      X File Explorer (Xfe) is an MS-Explorer like file manager for X.
+      It is based on the popular, but discontinued, X Win Commander, which was developed by Maxim Baranov.
+      Xfe aims to be the filemanager of choice for all the Unix addicts!
+    '';
+    homepage = "https://sourceforge.net/projects/xfe/";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xfontsel/default.nix b/nixpkgs/pkgs/applications/misc/xfontsel/default.nix
new file mode 100644
index 000000000000..c61e64a8a3a7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xfontsel/default.nix
@@ -0,0 +1,36 @@
+# This program used to come with xorg releases, but now I could only find it
+# at https://www.x.org/releases/individual/.
+# That is why this expression is not inside pkgs.xorg
+
+{stdenv, fetchurl, makeWrapper, libX11, pkgconfig, libXaw}:
+stdenv.mkDerivation rec {
+  name = "xfontsel-1.0.6";
+
+  src = fetchurl {
+    url = "mirror://xorg/individual/app/${name}.tar.bz2";
+    sha256 = "0700lf6hx7dg88wq1yll7zjvf9gbwh06xff20yffkxb289y0pai5";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [libX11 makeWrapper libXaw];
+
+  # Without this, it gets Xmu as a dependency, but without rpath entry
+  NIX_LDFLAGS = "-lXmu";
+
+  # This will not make xfontsel find its app-defaults, but at least the $out
+  # directory will contain them.
+  # hack: Copying the XFontSel app-defaults file to $HOME makes xfontsel work.
+  installPhase = ''
+    make install appdefaultdir=$out/share/X11/app-defaults
+    wrapProgram $out/bin/xfontsel \
+      --set XAPPLRESDIR $out/share/X11/app-defaults
+  '';
+
+  meta = {
+    homepage = "https://www.x.org/";
+    description = "Allows testing the fonts available in an X server";
+    license = stdenv.lib.licenses.free;
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xiphos/default.nix b/nixpkgs/pkgs/applications/misc/xiphos/default.nix
new file mode 100644
index 000000000000..ae18ff72d27e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xiphos/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchFromGitHub, pkgconfig
+, python
+, intltool
+, docbook2x, docbook_xml_dtd_412, libxslt
+, sword, clucene_core, biblesync
+, gnome-doc-utils
+, libgsf, gconf
+, gtkhtml, libglade, scrollkeeper
+, webkitgtk
+, dbus-glib, enchant, isocodes, libuuid, icu
+, wrapGAppsHook
+, wafHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "xiphos";
+  version = "4.1.0";
+
+  src = fetchFromGitHub {
+    owner = "crosswire";
+    repo = "xiphos";
+    rev = version;
+    sha256 = "14il9k4i58qbc78hcadw3gqy21sb9q661d75vlj6fwpczbzj7x1a";
+  };
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook wafHook ];
+  buildInputs = [ python intltool docbook2x docbook_xml_dtd_412 libxslt
+                  sword clucene_core biblesync gnome-doc-utils libgsf gconf gtkhtml
+                  libglade scrollkeeper webkitgtk dbus-glib enchant isocodes libuuid icu ];
+
+  prePatch = ''
+    patchShebangs .;
+  '';
+
+  preConfigure =  ''
+    export CLUCENE_HOME=${clucene_core};
+    export SWORD_HOME=${sword};
+  '';
+
+  wafConfigureFlags = [ "--enable-webkit2" ];
+
+  meta = with stdenv.lib; {
+    description = "A GTK Bible study tool";
+    longDescription = ''
+      Xiphos (formerly known as GnomeSword) is a Bible study tool
+      written for Linux, UNIX, and Windows using GTK, offering a rich
+      and featureful environment for reading, study, and research using
+      modules from The SWORD Project and elsewhere.
+    '';
+    homepage = "http://www.xiphos.org/";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xkbd/default.nix b/nixpkgs/pkgs/applications/misc/xkbd/default.nix
new file mode 100644
index 000000000000..d03d78a9fd1d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xkbd/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, freetype, libXrender, libXft, xorgproto
+, xinput, libXi, libXext, libXtst, libXpm, libX11, autoreconfHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "xkbd";
+  version = "0.8.18";
+
+  src = fetchFromGitHub {
+    owner = "mahatma-kaganovich";
+    repo = "xkbd";
+    rev = "${pname}-${version}";
+    sha256 = "05ry6q75jq545kf6p20nhfywaqf2wdkfiyp6iwdpv9jh238hf7m9";
+  };
+
+  buildInputs = [
+    freetype libXrender libXft libXext libXtst libXpm libX11
+    libXi xorgproto xinput
+  ];
+
+  nativeBuildInputs = [ autoreconfHook ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/mahatma-kaganovich/xkbd";
+    description = "onscreen soft keyboard for X11";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.genesis ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xkblayout-state/default.nix b/nixpkgs/pkgs/applications/misc/xkblayout-state/default.nix
new file mode 100644
index 000000000000..296d6f38db64
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xkblayout-state/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, qt4 }:
+
+stdenv.mkDerivation rec {
+  pname = "xkblayout-state";
+  version = "1b";
+
+  src = fetchurl {
+    url = "https://github.com/nonpop/${pname}/archive/v${version}.tar.gz";
+    sha256 = "1m1nnplrdb2mclhj0881wf78ckvdnyk24g4k4p5s5gpd96cxxwnx";
+  };
+
+  buildInputs = [ qt4 ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp xkblayout-state $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A small command-line program to get/set the current XKB keyboard layout";
+    homepage = "https://github.com/nonpop/xkblayout-state";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.jagajaga ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xkbmon/default.nix b/nixpkgs/pkgs/applications/misc/xkbmon/default.nix
new file mode 100644
index 000000000000..1e6384c7d576
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xkbmon/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, libX11 }:
+
+stdenv.mkDerivation rec {
+  pname = "xkbmon";
+  version = "0.3";
+
+  src = fetchFromGitHub {
+    owner = "xkbmon";
+    repo = "xkbmon";
+    rev = version;
+    sha256 = "03v8f6fijgwagjphyj8w7lgh5hlc8jk0j2n45n7fm0xwy82cxxx9";
+  };
+
+  buildInputs = [ libX11 ];
+
+  installPhase = "install -D -t $out/bin xkbmon";
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/xkbmon/xkbmon";
+    description = "Command-line keyboard layout monitor for X11";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xmind/default.nix b/nixpkgs/pkgs/applications/misc/xmind/default.nix
new file mode 100644
index 000000000000..3e729af71fe5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xmind/default.nix
@@ -0,0 +1,92 @@
+{ stdenv, lib, fetchzip, fetchurl, gtk2, jre, libXtst, makeWrapper, makeDesktopItem, runtimeShell }:
+
+stdenv.mkDerivation rec {
+  pname = "xmind";
+  version = "8-update8";
+
+  src = fetchzip {
+    url = "https://xmind.net/xmind/downloads/${pname}-${version}-linux.zip";
+    stripRoot = false;
+    sha256 = "1p68z0b4brgiyybz190alqv716ncql49vsksm41y90mcjd8s4jhn";
+  };
+
+  srcIcon = fetchurl {
+    url = "https://aur.archlinux.org/cgit/aur.git/plain/xmind.png?h=xmind";
+    sha256 = "0jxq2fiq69q9ly0m6hx2qfybqad22sl42ciw636071khpqgc885f";
+  };
+
+  preferLocalBuild = true;
+
+  patches = [ ./java-env-config-fixes.patch ];
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  dontBuild = true;
+  dontPatchELF = true;
+  dontStrip = true;
+
+  libPath = lib.makeLibraryPath [ gtk2 libXtst ];
+
+  desktopItem = makeDesktopItem {
+    name = "XMind";
+    exec = "XMind";
+    icon = "xmind";
+    desktopName = "XMind";
+    comment = meta.description;
+    categories = "Office;";
+    mimeType = "application/xmind;x-scheme-handler/xmind";
+  };
+
+  installPhase = let
+    targetDir = if stdenv.hostPlatform.system == "i686-linux"
+      then "XMind_i386"
+      else "XMind_amd64";
+  in ''
+    mkdir -p $out/{bin,libexec/configuration/,share/{applications/,fonts/,icons/hicolor/scalable/apps/}}
+    cp -r ${targetDir}/{configuration,p2,XMind{,.ini}} $out/libexec
+    cp -r {plugins,features} $out/libexec/
+    cp -r fonts $out/share/fonts/
+    cp "${desktopItem}/share/applications/XMind.desktop" $out/share/applications/XMind.desktop
+    cp ${srcIcon} $out/share/icons/hicolor/scalable/apps/xmind.png
+
+    patchelf --set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) \
+      $out/libexec/XMind
+
+    wrapProgram $out/libexec/XMind \
+      --prefix LD_LIBRARY_PATH : "${libPath}"
+
+    # Inspired by https://aur.archlinux.org/cgit/aur.git/tree/?h=xmind
+    cat >$out/bin/XMind <<EOF
+      #! ${runtimeShell}
+      if [ ! -d "\$HOME/.xmind" ]; then
+        mkdir -p "\$HOME/.xmind/configuration-cathy/"
+        cp -r $out/libexec/configuration/ \$HOME/.xmind/configuration-cathy/
+      fi
+
+      exec "$out/libexec/XMind" "\$@"
+    EOF
+    chmod +x $out/bin/XMind
+
+    ln -s ${jre} $out/libexec/jre
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Mind-mapping software";
+    longDescription = ''
+      XMind is a mind mapping and brainstorming software. In addition
+      to the management elements, the software can capture ideas,
+      clarify thinking, manage complex information, and promote team
+      collaboration for higher productivity.
+
+      It supports mind maps, fishbone diagrams, tree diagrams,
+      organization charts, spreadsheets, etc. Normally, it is used for
+      knowledge management, meeting minutes, task management, and
+      GTD. Meanwhile, XMind can read FreeMind and MindManager files,
+      and save to Evernote.
+    '';
+    homepage = "https://www.xmind.net/";
+    license = licenses.unfree;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ michalrus ma27 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xmind/java-env-config-fixes.patch b/nixpkgs/pkgs/applications/misc/xmind/java-env-config-fixes.patch
new file mode 100644
index 000000000000..f359a9c2ba46
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xmind/java-env-config-fixes.patch
@@ -0,0 +1,40 @@
+diff --git a/XMind_amd64/XMind.ini b/XMind_amd64/XMind.ini
+index bdd8a37..5f35daf 100644
+--- a/XMind_amd64/XMind.ini
++++ b/XMind_amd64/XMind.ini
+@@ -1,11 +1,11 @@
+ -configuration
+-./configuration
++@user.home/.xmind/configuration-cathy_linux_64
+ -data
+-../workspace
++@user.home/.xmind/workspace-cathy
+ -startup
+-../plugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar
++plugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar
+ --launcher.library
+-../plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.400.v20160518-1444
++plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.400.v20160518-1444
+ --launcher.defaultAction
+ openFile
+ --launcher.GTK_version
+diff --git a/XMind_i386/XMind.ini b/XMind_i386/XMind.ini
+index 4ed3225..1d74258 100644
+--- a/XMind_i386/XMind.ini
++++ b/XMind_i386/XMind.ini
+@@ -1,11 +1,11 @@
+ -configuration
+-./configuration
++@user.home/.xmind/configuration-cathy_linux_64
+ -data
+-../workspace
++@user.home/.xmind/workspace-cathy
+ -startup
+-../plugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar
++plugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar
+ --launcher.library
+-../plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.400.v20160518-1444
++plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.400.v20160518-1444
+ --launcher.defaultAction
+ openFile
+ --launcher.GTK_version
diff --git a/nixpkgs/pkgs/applications/misc/xmr-stak/default.nix b/nixpkgs/pkgs/applications/misc/xmr-stak/default.nix
new file mode 100644
index 000000000000..b6f05ea3094a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xmr-stak/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, stdenvGcc6, lib
+, fetchFromGitHub, cmake, libmicrohttpd, openssl
+, opencl-headers, ocl-icd, hwloc, cudatoolkit
+, devDonationLevel ? "0.0"
+, cudaSupport ? false
+, openclSupport ? true
+}:
+
+let
+  stdenv' = if cudaSupport then stdenvGcc6 else stdenv;
+in
+
+stdenv'.mkDerivation rec {
+  name = "xmr-stak-${version}";
+  version = "2.10.8";
+
+  src = fetchFromGitHub {
+    owner = "fireice-uk";
+    repo = "xmr-stak";
+    rev = version;
+    sha256 = "0ilx5mhh91ks7dwvykfyynh53l6vkkignjpwkkss8ss6b2k8gdbj";
+  };
+
+  NIX_CFLAGS_COMPILE = "-O3";
+
+  cmakeFlags = lib.optional (!cudaSupport) "-DCUDA_ENABLE=OFF"
+    ++ lib.optional (!openclSupport) "-DOpenCL_ENABLE=OFF";
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ libmicrohttpd openssl hwloc ]
+    ++ lib.optional cudaSupport cudatoolkit
+    ++ lib.optionals openclSupport [ opencl-headers ocl-icd ];
+
+  postPatch = ''
+    substituteInPlace xmrstak/donate-level.hpp \
+      --replace 'fDevDonationLevel = 2.0' 'fDevDonationLevel = ${devDonationLevel}'
+  '';
+
+  meta = with lib; {
+    description = "Unified All-in-one Monero miner";
+    homepage = "https://github.com/fireice-uk/xmr-stak";
+    license = licenses.gpl3Plus;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ fpletz bfortz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xmrig/default.nix b/nixpkgs/pkgs/applications/misc/xmrig/default.nix
new file mode 100644
index 000000000000..d4d93c77ed42
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xmrig/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, lib, fetchFromGitHub, cmake, libuv, libmicrohttpd, openssl, hwloc
+, donateLevel ? 0
+}:
+
+stdenv.mkDerivation rec {
+  pname = "xmrig";
+  version = "5.11.3";
+
+  src = fetchFromGitHub {
+    owner = "xmrig";
+    repo = "xmrig";
+    rev = "v${version}";
+    sha256 = "019g64rp6g0b0w17bm9l4q5lh7szc6ai8r3bfmy98ngi929r4rl7";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ libuv libmicrohttpd openssl hwloc ];
+
+  postPatch = ''
+    substituteInPlace src/donate.h \
+      --replace "kDefaultDonateLevel = 5;" "kDefaultDonateLevel = ${toString donateLevel};" \
+      --replace "kMinimumDonateLevel = 1;" "kMinimumDonateLevel = ${toString donateLevel};"
+  '';
+
+  installPhase = ''
+    install -vD xmrig $out/bin/xmrig
+  '';
+
+  meta = with lib; {
+    description = "Monero (XMR) CPU miner";
+    homepage = "https://github.com/xmrig/xmrig";
+    license = licenses.gpl3Plus;
+    platforms   = [ "x86_64-linux" "x86_64-darwin" ];
+    maintainers = with maintainers; [ fpletz kim0 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xmrig/proxy.nix b/nixpkgs/pkgs/applications/misc/xmrig/proxy.nix
new file mode 100644
index 000000000000..39cd50204095
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xmrig/proxy.nix
@@ -0,0 +1,34 @@
+{ stdenv, lib, fetchFromGitHub, cmake, libuv, libmicrohttpd, openssl
+, donateLevel ? 0
+}:
+
+stdenv.mkDerivation rec {
+  pname = "xmrig-proxy";
+  version = "5.11.0";
+
+  src = fetchFromGitHub {
+    owner = "xmrig";
+    repo = "xmrig-proxy";
+    rev = "v${version}";
+    sha256 = "0wwvsmanvcn0kbb5zqrj8786yg9rmdbink6rsnsm7ifak1iwvls9";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ libuv libmicrohttpd openssl ];
+
+  postPatch = ''
+    # Link dynamically against libuuid instead of statically
+    substituteInPlace CMakeLists.txt --replace uuid.a uuid
+  '';
+
+  installPhase = ''
+    install -vD xmrig-proxy $out/bin/xmrig-proxy
+  '';
+
+  meta = with lib; {
+    description = "Monero (XMR) Stratum protocol proxy";
+    homepage = "https://github.com/xmrig/xmrig-proxy";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ aij ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xneur/default.nix b/nixpkgs/pkgs/applications/misc/xneur/default.nix
new file mode 100644
index 000000000000..e75055e92b80
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xneur/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, pkgconfig, intltool, xorg, pcre, gst_all_1, glib
+, xosd, libnotify, enchant, wrapGAppsHook, gdk-pixbuf }:
+
+stdenv.mkDerivation {
+   pname = "xneur";
+   version = "0.20.0";
+
+  src = fetchurl {
+    url = "https://github.com/AndrewCrewKuznetsov/xneur-devel/raw/f66723feb272c68f7c22a8bf0dbcafa5e3a8a5ee/dists/0.20.0/xneur_0.20.0.orig.tar.gz";
+    sha256 = "1lg3qpi9pkx9f5xvfc8yf39wwc98f769yb7i2438vqn66kla1xpr";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig intltool wrapGAppsHook
+  ];
+
+  buildInputs = [
+    xorg.libX11 xorg.libXtst pcre gst_all_1.gstreamer glib
+    xosd xorg.libXext xorg.libXi libnotify
+    enchant gdk-pixbuf
+    gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good
+  ];
+
+  postPatch = ''
+    sed -e 's@for xosd_dir in@for xosd_dir in ${xosd} @' -i configure
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Utility for switching between keyboard layouts";
+    homepage = "https://xneur.ru";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.raskin ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xpad/default.nix b/nixpkgs/pkgs/applications/misc/xpad/default.nix
new file mode 100644
index 000000000000..8944011a8d73
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xpad/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl
+, autoreconfHook, pkgconfig, wrapGAppsHook
+, glib, intltool, gtk3, gtksourceview }:
+
+stdenv.mkDerivation rec {
+  pname = "xpad";
+  version = "5.4.0";
+
+  src = fetchurl {
+    url = "https://launchpad.net/xpad/trunk/${version}/+download/xpad-${version}.tar.bz2";
+    sha256 = "1qpmlwn0bcw1q73ag0l0fdnlzmwawfvsy4g9y5b0vyrc58lcp5d3";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig wrapGAppsHook ];
+
+  buildInputs = [ glib intltool gtk3 gtksourceview ];
+
+  meta = with stdenv.lib; {
+    description = "A sticky note application for jotting down things to remember";
+    homepage = "https://launchpad.net/xpad";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ michalrus ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xpdf/cmake_version.patch b/nixpkgs/pkgs/applications/misc/xpdf/cmake_version.patch
new file mode 100644
index 000000000000..59a51f7506d5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xpdf/cmake_version.patch
@@ -0,0 +1,15 @@
+
+Fix "No known features for CXX compiler", see
+https://cmake.org/pipermail/cmake/2016-December/064733.html and the note at
+https://cmake.org/cmake/help/v3.10/command/cmake_minimum_required.html
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -8,7 +8,7 @@
+ #
+ #========================================================================
+ 
+-cmake_minimum_required(VERSION 2.8.8)
++cmake_minimum_required(VERSION 3.1.0)
+ 
+ project(xpdf)
+ 
diff --git a/nixpkgs/pkgs/applications/misc/xpdf/default.nix b/nixpkgs/pkgs/applications/misc/xpdf/default.nix
new file mode 100644
index 000000000000..f5ec9b71503e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xpdf/default.nix
@@ -0,0 +1,83 @@
+{ enableGUI ? true
+, enablePDFtoPPM ? true
+, enablePrinting ? true
+, stdenv, fetchzip, cmake, makeDesktopItem
+, zlib, libpng, cups ? null, freetype ? null
+, qtbase ? null, qtsvg ? null, wrapQtAppsHook
+}:
+
+assert enableGUI -> qtbase != null && qtsvg != null && freetype != null;
+assert enablePDFtoPPM -> freetype != null;
+assert enablePrinting -> cups != null;
+
+stdenv.mkDerivation rec {
+  pname = "xpdf";
+  version = "4.02";
+
+  src = fetchzip {
+    url = "https://xpdfreader-dl.s3.amazonaws.com/${pname}-${version}.tar.gz";
+    sha256 = "0dzwq6fnk013wa4l5mjpvm4mms2mh5hbrxv4rhk2ab5ljbzz7b2w";
+  };
+
+  # Fix "No known features for CXX compiler", see
+  # https://cmake.org/pipermail/cmake/2016-December/064733.html and the note at
+  # https://cmake.org/cmake/help/v3.10/command/cmake_minimum_required.html
+  patches = stdenv.lib.optional stdenv.isDarwin  ./cmake_version.patch;
+
+  nativeBuildInputs =
+    [ cmake ]
+    ++ stdenv.lib.optional enableGUI wrapQtAppsHook;
+
+  cmakeFlags = ["-DSYSTEM_XPDFRC=/etc/xpdfrc" "-DA4_PAPER=ON" "-DOPI_SUPPORT=ON"]
+    ++ stdenv.lib.optional (!enablePrinting) "-DXPDFWIDGET_PRINTING=OFF";
+
+  buildInputs = [ zlib libpng ] ++
+    stdenv.lib.optional enableGUI qtbase ++
+    stdenv.lib.optional enablePrinting cups ++
+    stdenv.lib.optional enablePDFtoPPM freetype;
+
+  hardeningDisable = [ "format" ];
+
+  desktopItem = makeDesktopItem {
+    name = "xpdf";
+    desktopName = "Xpdf";
+    comment = "Views Adobe PDF files";
+    icon = "xpdf";
+    exec = "xpdf %f";
+    categories = "Office;";
+    terminal = "false";
+  };
+
+  postInstall = ''
+    install -Dm644 ${desktopItem}/share/applications/xpdf.desktop $out/share/applications/xpdf.desktop
+    install -Dm644 $src/xpdf-qt/xpdf-icon.svg $out/share/pixmaps/xpdf.svg
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.xpdfreader.com";
+    description = "Viewer for Portable Document Format (PDF) files";
+    longDescription = ''
+      XPDF includes multiple tools for viewing and processing PDF files.
+        xpdf:      PDF viewer (with Graphical Interface)
+        pdftotext: converts PDF to text
+        pdftops:   converts PDF to PostScript
+        pdftoppm:  converts PDF pages to netpbm (PPM/PGM/PBM) image files
+        pdftopng:  converts PDF pages to PNG image files
+        pdftohtml: converts PDF to HTML
+        pdfinfo:   extracts PDF metadata
+        pdfimages: extracts raw images from PDF files
+        pdffonts:  lists fonts used in PDF files
+        pdfdetach: extracts attached files from PDF files
+    '';
+    license = with licenses; [ gpl2 gpl3 ];
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ sikmir ];
+    knownVulnerabilities = [
+      "CVE-2018-7453: loop in PDF objects"
+      "CVE-2018-16369: loop in PDF objects"
+      "CVE-2019-9587: loop in PDF objects"
+      "CVE-2019-9588: loop in PDF objects"
+      "CVE-2019-16088: loop in PDF objects"
+    ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xpdf/libxpdf.nix b/nixpkgs/pkgs/applications/misc/xpdf/libxpdf.nix
new file mode 100644
index 000000000000..3b982b1766f9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xpdf/libxpdf.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchurl
+}:
+
+stdenv.mkDerivation {
+  name = "libxpdf-3.02pl4";
+
+  src = fetchurl {
+    url = "ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02.tar.gz";
+    sha256 = "000zq4ddbwyxiki4vdwpmxbnw5n9hsg9hvwra2p33hslyib7sfmk";
+  };
+  
+  patches = [
+    (fetchurl {
+      url = "ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl1.patch";
+      sha256 = "1wxv9l0d2kkwi961ihpdwi75whdvk7cgqxkbfym8cjj11fq17xjq";
+    })
+    (fetchurl {
+      url = "ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl2.patch";
+      sha256 = "1nfrgsh9xj0vryd8h65myzd94bjz117y89gq0hzji9dqn23xihfi";
+    })
+    (fetchurl {
+      url = "ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl3.patch";
+      sha256 = "0jskkv8x6dqr9zj4azaglas8cziwqqrkbbnzrpm2kzrvsbxyhk2r";
+    })
+    (fetchurl {
+      url = "ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl4.patch";
+      sha256 = "1c48h7aizx0ngmzlzw0mpja1w8vqyy3pg62hyxp7c60k86al715h";
+    })
+    ./xpdf-3.02-protection.patch
+    ./libxpdf.patch
+  ];
+
+  installPhase = ''
+    mkdir -p $out/lib/goo
+    mkdir -p $out/lib/fofi
+    mkdir -p $out/lib/xpdf
+    mkdir -p $out/include
+
+    cp -v goo/libGoo.a $out/lib/goo
+    cp -v fofi/libfofi.a $out/lib/fofi
+    cp -v xpdf/libxpdf.a $out/lib/xpdf
+    
+    cp -v *.h $out/include
+    cp -v goo/*.h $out/include
+    cp -v fofi/*.h $out/include
+    cp -v xpdf/*.h $out/include
+  '';
+    
+  meta = {
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xpdf/libxpdf.patch b/nixpkgs/pkgs/applications/misc/xpdf/libxpdf.patch
new file mode 100644
index 000000000000..606da76c7293
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xpdf/libxpdf.patch
@@ -0,0 +1,45 @@
+diff -rc xpdf-3.02/xpdf/Makefile.in xpdf-3.02-new/xpdf/Makefile.in
+*** xpdf-3.02/xpdf/Makefile.in	2007-02-27 23:05:52.000000000 +0100
+--- xpdf-3.02-new/xpdf/Makefile.in	2010-08-25 14:54:14.000000000 +0200
+***************
+*** 110,116 ****
+  	pdffonts$(EXE) pdftoppm$(EXE) pdfimages$(EXE)
+  
+  all-no-x: pdftops$(EXE) pdftotext$(EXE) pdfinfo$(EXE) pdffonts$(EXE) \
+! 	pdfimages$(EXE)
+  
+  #------------------------------------------------------------------------
+  
+--- 110,116 ----
+  	pdffonts$(EXE) pdftoppm$(EXE) pdfimages$(EXE)
+  
+  all-no-x: pdftops$(EXE) pdftotext$(EXE) pdfinfo$(EXE) pdffonts$(EXE) \
+! 	pdfimages$(EXE) libxpdf.a
+  
+  #------------------------------------------------------------------------
+  
+***************
+*** 248,253 ****
+--- 248,269 ----
+  
+  #------------------------------------------------------------------------
+  
++ PDFTOEPDF_OBJS = \
++         Array.o BuiltinFont.o BuiltinFontTables.o CMap.o \
++         Catalog.o CharCodeToUnicode.o Decrypt.o Dict.o Error.o \
++         FontEncodingTables.o Gfx.o GfxFont.o GfxState.o \
++         GlobalParams.o JArithmeticDecoder.o JBIG2Stream.o JPXStream.o Lexer.o Link.o \
++         NameToCharCode.o Object.o OutputDev.o Outline.o PDFDoc.o Page.o \
++         Parser.o PDFDocEncoding.o Stream.o UnicodeMap.o XRef.o Function.o \
++         PSTokenizer.o UnicodeTypeTable.o
++ 
++ libxpdf.a: $(PDFTOEPDF_OBJS)
++ 	rm -f $@
++ 	$(AR) $(ARFLAGS) $@ *.o
++ 	ranlib $@
++ 
++ #------------------------------------------------------------------------
++ 
+  depend:
+  	$(CXX) $(CXXFLAGS) -MM $(CXX_SRC) >Makefile.dep
+  
diff --git a/nixpkgs/pkgs/applications/misc/xpdf/xpdf-3.02-protection.patch b/nixpkgs/pkgs/applications/misc/xpdf/xpdf-3.02-protection.patch
new file mode 100644
index 000000000000..598fc6dbd073
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xpdf/xpdf-3.02-protection.patch
@@ -0,0 +1,74 @@
+diff -C 3 -r orig/xpdf/pdfimages.cc xpdf-3.02/xpdf/pdfimages.cc
+*** orig/xpdf/pdfimages.cc	2007-02-27 23:05:52.000000000 +0100
+--- xpdf-3.02/xpdf/pdfimages.cc	2007-10-31 20:17:22.601449943 +0100
+***************
+*** 118,130 ****
+      goto err1;
+    }
+  
+-   // check for copy permission
+-   if (!doc->okToCopy()) {
+-     error(-1, "Copying of images from this document is not allowed.");
+-     exitCode = 3;
+-     goto err1;
+-   }
+- 
+    // get page range
+    if (firstPage < 1)
+      firstPage = 1;
+--- 118,123 ----
+diff -C 3 -r orig/xpdf/pdftotext.cc xpdf-3.02/xpdf/pdftotext.cc
+*** orig/xpdf/pdftotext.cc	2007-02-27 23:05:52.000000000 +0100
+--- xpdf-3.02/xpdf/pdftotext.cc	2007-10-31 20:17:34.392224196 +0100
+***************
+*** 160,172 ****
+      goto err2;
+    }
+  
+-   // check for copy permission
+-   if (!doc->okToCopy()) {
+-     error(-1, "Copying of text from this document is not allowed.");
+-     exitCode = 3;
+-     goto err2;
+-   }
+- 
+    // construct text file name
+    if (argc == 3) {
+      textFileName = new GString(argv[2]);
+--- 160,165 ----
+diff -C 3 -r orig/xpdf/XPDFCore.cc xpdf-3.02/xpdf/XPDFCore.cc
+*** orig/xpdf/XPDFCore.cc	2007-02-27 23:05:52.000000000 +0100
+--- xpdf-3.02/xpdf/XPDFCore.cc	2007-10-31 20:18:05.370494431 +0100
+***************
+*** 384,394 ****
+  #ifndef NO_TEXT_SELECT
+        if (selectULX != selectLRX &&
+  	  selectULY != selectLRY) {
+! 	if (doc->okToCopy()) {
+! 	  copySelection();
+! 	} else {
+! 	  error(-1, "Copying of text from this document is not allowed.");
+! 	}
+        }
+  #endif
+      }
+--- 384,390 ----
+  #ifndef NO_TEXT_SELECT
+        if (selectULX != selectLRX &&
+  	  selectULY != selectLRY) {
+! 	copySelection();
+        }
+  #endif
+      }
+***************
+*** 407,415 ****
+    int pg;
+    double ulx, uly, lrx, lry;
+  
+-   if (!doc->okToCopy()) {
+-     return;
+-   }
+    if (getSelection(&pg, &ulx, &uly, &lrx, &lry)) {
+      //~ for multithreading: need a mutex here
+      if (currentSelection) {
+--- 403,408 ----
diff --git a/nixpkgs/pkgs/applications/misc/xrandr-invert-colors/default.nix b/nixpkgs/pkgs/applications/misc/xrandr-invert-colors/default.nix
new file mode 100644
index 000000000000..9d57b4fcfac0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xrandr-invert-colors/default.nix
@@ -0,0 +1,26 @@
+{ fetchurl, stdenv, libXrandr}:
+
+stdenv.mkDerivation rec {
+  version = "0.01";
+  pname = "xrandr-invert-colors";
+  src = fetchurl {
+    url = "https://github.com/zoltanp/xrandr-invert-colors/archive/v${version}.tar.gz";
+    sha256 = "1z4hxn56rlflvqanb8ncqa1xqawnda85b1b37w6r2iqs8rw52d75";
+  };
+
+  buildInputs = [ libXrandr ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mv xrandr-invert-colors.bin xrandr-invert-colors
+    install xrandr-invert-colors $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Inverts the colors of your screen";
+    license = stdenv.lib.licenses.gpl3Plus;
+    homepage = "https://github.com/zoltanp/xrandr-invert-colors";
+    maintainers = [stdenv.lib.maintainers.magnetophon ];
+    platforms = platforms.linux;
+  }; 
+}
diff --git a/nixpkgs/pkgs/applications/misc/xrq/default.nix b/nixpkgs/pkgs/applications/misc/xrq/default.nix
new file mode 100644
index 000000000000..e3db746ee028
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xrq/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, libX11}:
+
+stdenv.mkDerivation {
+  name = "xrq-unstable-2016-01-15";
+
+  src = fetchFromGitHub {
+	  owner = "arianon";
+	  repo = "xrq";
+    rev = "d5dc19c63881ebdd1287a02968e3a1447dde14a9";
+    sha256 = "1bxf6h3fjw3kjraz7028m7p229l423y1ngy88lqvf0xl1g3dhp36";
+  };
+
+  installPhase = ''
+    make PREFIX=$out install
+  '';
+
+  outputs = [ "out" "man" ];
+
+  buildInputs = [ libX11 ];
+
+  meta = {
+    description = "X utility for querying xrdb";
+    homepage = "https://github.com/arianon/xrq";
+    license = stdenv.lib.licenses.mit;
+    platforms = with stdenv.lib.platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xscope/default.nix b/nixpkgs/pkgs/applications/misc/xscope/default.nix
new file mode 100644
index 000000000000..4db034476c7a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xscope/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, pkgconfig, libXt }:
+
+stdenv.mkDerivation rec {
+  pname = "xscope";
+  version = "1.4.1";
+
+  src = fetchurl {
+    url = "mirror://xorg/individual/app/${pname}-${version}.tar.bz2";
+    sha256 = "08zl3zghvbcqy0r5dn54dim84lp52s0ygrr87jr3a942a6ypz01k";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libXt ];
+
+  meta = with stdenv.lib; {
+    description = "program to monitor X11/Client conversations";
+    homepage = "https://cgit.freedesktop.org/xorg/app/xscope/";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ ];
+    platforms = with platforms; unix;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/xsuspender/default.nix b/nixpkgs/pkgs/applications/misc/xsuspender/default.nix
new file mode 100644
index 000000000000..55ecd358c6cd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xsuspender/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenv, fetchFromGitHub, cmake, makeWrapper, pkgconfig
+, glib, libwnck3, procps }:
+
+with lib;
+
+stdenv.mkDerivation rec {
+  pname = "xsuspender";
+  version = "1.1";
+
+  src = fetchFromGitHub {
+    owner = "kernc";
+    repo = "xsuspender";
+    rev = version;
+    sha256 = "03lbga68dxg89d227sdwk1f5xj4r1pmj0qh2kasi2cqh8ll7qv4b";
+  };
+
+  outputs = [ "out" "man" "doc" ];
+
+  nativeBuildInputs = [ cmake pkgconfig makeWrapper ];
+  buildInputs = [ glib libwnck3 ];
+
+  enableParallelBuilding = true;
+
+  postInstall = ''
+    wrapProgram $out/bin/xsuspender \
+      --prefix PATH : "${makeBinPath [ procps ]}"
+  '';
+
+  meta = {
+    description = "Auto-suspend inactive X11 applications.";
+    homepage = "https://kernc.github.io/xsuspender/";
+    license = licenses.wtfpl;
+    maintainers = with maintainers; [ offline ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xsw/default.nix b/nixpkgs/pkgs/applications/misc/xsw/default.nix
new file mode 100644
index 000000000000..c7c10254c0ca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xsw/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, lib, fetchFromGitHub, pkgconfig, SDL, SDL_image, SDL_ttf, SDL_gfx, flex, bison }:
+
+let
+  makeSDLFlags = map (p: "-I${lib.getDev p}/include/SDL");
+
+in stdenv.mkDerivation rec {
+  pname = "xsw";
+  version = "0.1.2";
+
+  src = fetchFromGitHub {
+    owner = "andrenho";
+    repo = "xsw";
+    rev = version;
+    sha256 = "092vp61ngd2vscsvyisi7dv6qrk5m1i81gg19hyfl5qvjq5p0p8g";
+  };
+
+  nativeBuildInputs = [ pkgconfig flex bison ];
+
+  buildInputs = [ SDL SDL_image SDL_ttf SDL_gfx ];
+
+  NIX_CFLAGS_COMPILE = toString (makeSDLFlags [ SDL SDL_image SDL_ttf SDL_gfx ]);
+
+  patches = [
+    ./parse.patch # Fixes compilation error by avoiding redundant definitions.
+  ];
+
+  meta = with stdenv.lib; {
+    inherit (src.meta) homepage;
+    description = "A slide show presentation tool";
+
+    platforms = platforms.unix;
+    license  = licenses.gpl3;
+    maintainers = [ maintainers.vrthra ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xsw/parse.patch b/nixpkgs/pkgs/applications/misc/xsw/parse.patch
new file mode 100644
index 000000000000..6db6c14c26a7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xsw/parse.patch
@@ -0,0 +1,21 @@
+The `%code` causes Color definition to be added in both parser.h and parser.c
+causing duplicate definitions error. This ensures that once it has been included
+as part of parser.h, it wont be redefined in parser.c
+
+--- xsw-0.1.2-src/src/parser.y	1969-12-31 16:00:01.000000000 -0800
++++ xsw-0.1.2-src/src/parser.y	2016-06-28 13:21:35.707027770 -0700
+@@ -38,7 +38,13 @@
+ 
+ %}
+ 
+-%code requires { typedef struct { unsigned char c; } Color; }
++%code requires
++{
++#ifndef COLORDEF
++#define COLORDEF
++typedef struct { unsigned char c; } Color;
++#endif
++}
+ 
+ %token SLIDE COLON HIFEN TEXT X Y W H IMAGE SIZE SCALE TEMPLATE BACKGROUND FONT
+ %token STYLE ALIGN EXPAND PLUS IMAGE_PATH
diff --git a/nixpkgs/pkgs/applications/misc/xteddy/default.nix b/nixpkgs/pkgs/applications/misc/xteddy/default.nix
new file mode 100644
index 000000000000..856ddb8ff50c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xteddy/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitLab, pkg-config, xorg, imlib2, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "xteddy";
+  version = "2.2-5";
+  src = fetchFromGitLab {
+    domain = "salsa.debian.org";
+    owner = "games-team";
+    repo = "xteddy";
+    rev = "debian%2F${version}"; # %2F = urlquote("/");
+    sha256 = "0rm7w78d6qajq4fvi4agyqm0c70f3c1i0cy2jdb6kqql2k8w78qy";
+  };
+
+  nativeBuildInputs = [ pkg-config makeWrapper ];
+  buildInputs = [ imlib2 xorg.libX11 xorg.libXext ];
+
+  patches = [ "${src}/debian/patches/10_libXext.patch" "${src}/debian/patches/wrong-man-page-section.patch" ];
+
+  postPatch = ''
+    sed -i "s:/usr/games/xteddy:$out/bin/xteddy:" xtoys
+    sed -i "s:/usr/share/xteddy:$out/share/xteddy:" xtoys
+  '';
+
+  postInstall = ''
+    cp -R images $out/share/images
+    # remove broken test script
+    rm $out/bin/xteddy_test
+  '';
+
+  postFixup = ''
+    # this is needed, because xteddy expects images to reside
+    # in the current working directory
+    wrapProgram $out/bin/xteddy --run "cd $out/share/images/"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Cuddly teddy bear for your X desktop";
+    homepage = "https://weber.itn.liu.se/~stegu/xteddy/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.xaverdh ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xterm/default.nix b/nixpkgs/pkgs/applications/misc/xterm/default.nix
new file mode 100644
index 000000000000..109444fc5180
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xterm/default.nix
@@ -0,0 +1,71 @@
+{ stdenv, fetchurl, fetchpatch, xorg, ncurses, freetype, fontconfig, pkgconfig, makeWrapper
+, enableDecLocator ? true
+}:
+
+stdenv.mkDerivation rec {
+  name = "xterm-353";
+
+  src = fetchurl {
+    urls = [
+     "ftp://ftp.invisible-island.net/xterm/${name}.tgz"
+     "https://invisible-mirror.net/archives/xterm/${name}.tgz"
+   ];
+    sha256 = "0s5pkfn4r8iy09s1q1y78zhnr9f3sm6wgbqir7azaqggkppd68g5";
+  };
+
+  buildInputs =
+    [ xorg.libXaw xorg.xorgproto xorg.libXt xorg.libXext xorg.libX11 xorg.libSM xorg.libICE
+      ncurses freetype fontconfig pkgconfig xorg.libXft xorg.luit makeWrapper
+    ];
+
+  patches = [
+    ./sixel-256.support.patch
+  ] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl
+    (fetchpatch {
+      name = "posix-ptys.patch";
+      url = "https://git.alpinelinux.org/aports/plain/community/xterm/posix-ptys.patch?id=3aa532e77875fa1db18c7fcb938b16647031bcc1";
+      sha256 = "0czgnsxkkmkrk1idw69qxbprh0jb4sw3c24zpnqq2v76jkl7zvlr";
+    });
+
+  configureFlags = [
+    "--enable-wide-chars"
+    "--enable-256-color"
+    "--enable-sixel-graphics"
+    "--enable-regis-graphics"
+    "--enable-load-vt-fonts"
+    "--enable-i18n"
+    "--enable-doublechars"
+    "--enable-luit"
+    "--enable-mini-luit"
+    "--with-tty-group=tty"
+    "--with-app-defaults=$(out)/lib/X11/app-defaults"
+  ] ++ stdenv.lib.optional enableDecLocator "--enable-dec-locator";
+
+  # Work around broken "plink.sh".
+  NIX_LDFLAGS = "-lXmu -lXt -lICE -lX11 -lfontconfig";
+
+  # Hack to get xterm built with the feature of releasing a possible setgid of 'utmp',
+  # decided by the sysadmin to allow the xterm reporting to /var/run/utmp
+  # If we used the configure option, that would have affected the xterm installation,
+  # (setgid with the given group set), and at build time the environment even doesn't have
+  # groups, and the builder will end up removing any setgid.
+  postConfigure = ''
+    echo '#define USE_UTMP_SETGID 1'
+  '';
+
+  postInstall = ''
+    for bin in $out/bin/*; do
+      wrapProgram $bin --set XAPPLRESDIR $out/lib/X11/app-defaults/
+    done
+
+    install -D -t $out/share/applications xterm.desktop
+    install -D -t $out/share/icons/hicolor/48x48/apps icons/xterm-color_48x48.xpm
+  '';
+
+  meta = {
+    homepage = "https://invisible-island.net/xterm";
+    license = with stdenv.lib.licenses; [ mit ];
+    maintainers = with stdenv.lib.maintainers; [vrthra];
+    platforms = with stdenv.lib.platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xterm/sixel-256.support.patch b/nixpkgs/pkgs/applications/misc/xterm/sixel-256.support.patch
new file mode 100644
index 000000000000..480e67e89ca3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xterm/sixel-256.support.patch
@@ -0,0 +1,11 @@
+--- xterm-325/graphics.c	2016-05-17 03:04:40.000000000 -0700
++++ xterm-325/graphics.c	2016-06-11 16:37:29.552584281 -0700
+@@ -667,7 +667,7 @@
+     case 330:
+ 	return 4U;
+     case 340:
+-	return 16U;
++	return 256U;
+     case 382:
+ 	return 2U;
+     default:
diff --git a/nixpkgs/pkgs/applications/misc/xtermcontrol/default.nix b/nixpkgs/pkgs/applications/misc/xtermcontrol/default.nix
new file mode 100644
index 000000000000..f7c0edf22420
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xtermcontrol/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  version = "3.7";
+  pname = "xtermcontrol";
+
+  src = fetchurl {
+    url = "https://thrysoee.dk/xtermcontrol/xtermcontrol-${version}.tar.gz";
+    sha256 = "04m12ddaps5sdbqvkwkp6lh81i8vh5ya5gzcxkrkilsga3m6qff2";
+  };
+
+  meta = {
+    description = "Enables dynamic control of xterm properties";
+    longDescription = ''
+      Enables dynamic control of xterm properties.
+      It makes it easy to change colors, title, font and geometry of a running xterm, as well as to report the current settings of these properties.
+      Window manipulations de-/iconify, raise/lower, maximize/restore and reset are also supported.
+      To complete the feature set; xtermcontrol lets advanced users issue any xterm control sequence of their choosing.
+    '';
+    homepage = "http://thrysoee.dk/xtermcontrol";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.derchris ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xxkb/default.nix b/nixpkgs/pkgs/applications/misc/xxkb/default.nix
new file mode 100644
index 000000000000..64d55322896b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xxkb/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, libX11, libXt, libXext, libXpm, imake, gccmakedep
+, svgSupport ? false, librsvg, glib, gdk-pixbuf, pkgconfig
+}:
+
+assert svgSupport ->
+  librsvg != null && glib != null && gdk-pixbuf != null && pkgconfig != null;
+
+stdenv.mkDerivation rec {
+  name = "xxkb-1.11.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/xxkb/${name}-src.tar.gz";
+    sha256 = "0hl1i38z9xnbgfjkaz04vv1n8xbgfg88g5z8fyzyb2hxv2z37anf";
+  };
+
+  nativeBuildInputs = [ imake gccmakedep ];
+  buildInputs = [
+    libX11 libXt libXext libXpm
+  ] ++ stdenv.lib.optionals svgSupport [ librsvg glib gdk-pixbuf pkgconfig ];
+
+  outputs = [ "out" "man" ];
+
+  imakeFlags = stdenv.lib.optionalString svgSupport "-DWITH_SVG_SUPPORT";
+
+  makeFlags = [
+    "BINDIR=${placeholder "out"}/bin"
+    "PIXMAPDIR=${placeholder "out"}/share/xxkb"
+    "XAPPLOADDIR=${placeholder "out"}/etc/X11/app-defaults"
+    "MANDIR=${placeholder "man"}/share/man"
+  ];
+
+  installTargets = [ "install" "install.man" ];
+
+  meta = {
+    description = "A keyboard layout indicator and switcher";
+    homepage = "http://xxkb.sourceforge.net/";
+    license = stdenv.lib.licenses.artistic2;
+    maintainers = with stdenv.lib.maintainers; [ rasendubi ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xygrib/default.nix b/nixpkgs/pkgs/applications/misc/xygrib/default.nix
new file mode 100644
index 000000000000..c7f449d97cdb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xygrib/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, wrapQtAppsHook, cmake, bzip2, qtbase, qttools, libnova, proj, libpng, openjpeg } :
+
+stdenv.mkDerivation rec {
+  version = "1.2.6.1";
+  pname = "xygrib";
+
+  src = fetchFromGitHub {
+    owner = "opengribs";
+    repo = "XyGrib";
+    rev = "v${version}";
+    sha256 = "0xzsm8pr0zjk3f8j880fg5n82jyxn8xf1330qmmq1fqv7rsrg9ia";
+  };
+
+  nativeBuildInputs = [ cmake qttools wrapQtAppsHook ];
+  buildInputs = [ bzip2 qtbase libnova proj openjpeg libpng ];
+  cmakeFlags = [ "-DOPENJPEG_INCLUDE_DIR=${openjpeg.dev}/include/openjpeg-2.3" ];
+
+  postInstall = ''
+    wrapQtApp $out/XyGrib/XyGrib
+    mkdir -p $out/bin
+    ln -s $out/XyGrib/XyGrib $out/bin/xygrib
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://opengribs.org";
+    description = "Weather Forecast Visualization";
+    longDescription = ''XyGrib is a leading opensource weather visualization package.
+                        It interacts with OpenGribs's Grib server providing a choice
+                        of global and large area atmospheric and wave models.'';
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = [ maintainers.j03 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/yaft/default.nix b/nixpkgs/pkgs/applications/misc/yaft/default.nix
new file mode 100644
index 000000000000..e66f397a3830
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/yaft/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, ncurses }:
+
+stdenv.mkDerivation rec {
+  version = "0.2.9";
+  pname = "yaft";
+
+  src = fetchFromGitHub {
+    owner = "uobikiemukot";
+    repo = "yaft";
+    rev = "v${version}";
+    sha256 = "0l1ig8wm545kpn4l7186rymny83jkahnjim290wsl7hsszfq1ckd";
+  };
+
+  buildInputs = [ ncurses ];
+
+  installFlags = [ "PREFIX=$(out)" "MANPREFIX=$(out)/share/man" ];
+
+  meta = {
+    homepage = "https://github.com/uobikiemukot/yaft";
+    description = "Yet another framebuffer terminal";
+    license = stdenv.lib.licenses.mit;
+    maintainers = [ stdenv.lib.maintainers.matthiasbeyer ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/yarssr/default.nix b/nixpkgs/pkgs/applications/misc/yarssr/default.nix
new file mode 100644
index 000000000000..c5489b8b9813
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/yarssr/default.nix
@@ -0,0 +1,64 @@
+{ fetchFromGitHub, stdenv, lib, gettext, gtk2, makeWrapper, perlPackages, gnome2 }:
+
+let
+  perlDeps = with perlPackages; [
+    Glib Gtk2 Gnome2 Pango Cairo Gnome2Canvas Gnome2VFS Gtk2GladeXML Gtk2TrayIcon
+    XMLLibXML XMLSAXBase XMLParser XMLRSS
+    HTMLParser
+    DateTime DateTimeFormatMail DateTimeFormatW3CDTF DateTimeLocale DateTimeTimeZone
+    ParamsValidate
+    ModuleImplementation ModuleRuntime
+    TryTiny
+    ClassSingleton
+    URI
+    AnyEvent AnyEventHTTP
+    commonsense
+    FileSlurp
+    JSON
+    Guard
+    LocaleGettext
+  ];
+  libs = [
+    stdenv.cc.cc.lib
+    gtk2
+  ];
+in
+stdenv.mkDerivation {
+  version = "git-2017-12-01";
+  pname = "yarssr";
+
+  src = fetchFromGitHub {
+    owner = "JGRennison";
+    repo = "yarssr";
+    rev = "e70eb9fc6563599bfb91c6de6a79654de531c18d";
+    sha256 = "0x7hz8x8qyp3i1vb22zhcnvwxm3jhmmmlr22jqc5b09vpmbw1l45";
+  };
+
+  nativeBuildInputs = [ perlPackages.perl gettext makeWrapper ];
+  buildInputs = perlDeps ++ [gnome2.libglade];
+  propagatedBuildInputs = libs ++ perlDeps;
+
+  installPhase = ''
+    DESTDIR=$out make install
+    mv $out/usr/* $out/
+    rm -R $out/usr
+    sed -i -r "s!use lib [^;]+;!use lib '$out/share/yarssr';!" $out/bin/yarssr
+    sed -i -r "s!$Yarssr::PREFIX = [^;]+;!$Yarssr::PREFIX = '$out';!" $out/bin/yarssr
+    sed -i -r "s!use Yarssr::Browser;!!" $out/share/yarssr/Yarssr/GUI.pm
+    chmod a+x $out/bin/yarssr
+  '';
+
+  postFixup = ''
+    wrapProgram $out/bin/yarssr \
+      --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath libs} \
+      --set PERL5LIB "${perlPackages.makePerlPath perlDeps}"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/tsyrogit/zxcvbn-c";
+    description = "A fork of Yarssr (a RSS reader for the GNOME Tray) from http://yarssr.sf.net with various fixes.";
+    license = licenses.gpl1;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ xurei ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/yate/default.nix b/nixpkgs/pkgs/applications/misc/yate/default.nix
new file mode 100644
index 000000000000..6c03bbc33b39
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/yate/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, lib, qt4, openssl, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "yate";
+  version = "6.1.0-1";
+
+  src = fetchurl {
+    url = "http://voip.null.ro/tarballs/yate${lib.versions.major version}/${pname}-${version}.tar.gz";
+    sha256 = "0xx3i997nsf2wzbv6m5n6adsym0qhgc6xg4rsv0fwqrgisf5327d";
+  };
+
+  # TODO zaptel ? postgres ?
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ qt4 openssl ];
+
+  # /dev/null is used when linking which is a impure path for the wrapper
+  preConfigure =
+    ''
+      sed -i 's@,/dev/null@@' configure
+      patchShebangs configure
+    '';
+
+  # --unresolved-symbols=ignore-in-shared-libs makes ld no longer find --library=yate? Why?
+  preBuild =
+    ''
+      export NIX_LDFLAGS="-L$TMP/yate $NIX_LDFLAGS"
+      find . -type f -iname Makefile | xargs sed -i \
+        -e 's@-Wl,--unresolved-symbols=ignore-in-shared-libs@@' \
+        -e 's@-Wl,--retain-symbols-file@@'
+    '';
+
+  meta = {
+    description = "Yet another telephony engine";
+    homepage = "http://yate.null.ro/";
+    # Yate's license is GPL with an exception for linking with
+    # OpenH323 and PWlib (licensed under MPL).
+    license = ["GPL" "MPL"];
+    maintainers = [ lib.maintainers.marcweber ];
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/yokadi/default.nix b/nixpkgs/pkgs/applications/misc/yokadi/default.nix
new file mode 100644
index 000000000000..00507d2ee888
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/yokadi/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, buildPythonApplication, dateutil,
+  sqlalchemy, setproctitle, icalendar }:
+
+buildPythonApplication rec {
+  pname = "yokadi";
+  version = "1.2.0";
+
+  src = fetchurl {
+    url = "https://yokadi.github.io/download/${pname}-${version}.tar.gz";
+    sha256 = "681c8aa52b2e4b5255e1311e76b4b81dcb63ee7f6ca3a47178e684c06baf330f";
+  };
+
+  propagatedBuildInputs = [
+    dateutil
+    sqlalchemy
+    setproctitle
+    icalendar
+  ];
+
+  # Yokadi doesn't have any tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A command line oriented, sqlite powered, todo-list";
+    homepage = "https://yokadi.github.io/index.html";
+    license = licenses.gpl3Plus;
+    maintainers = [ maintainers.nipav ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/yubioath-desktop/default.nix b/nixpkgs/pkgs/applications/misc/yubioath-desktop/default.nix
new file mode 100644
index 000000000000..c6a1022288f7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/yubioath-desktop/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, fetchurl, mkDerivation
+, qmake, qtbase, qtquickcontrols2, qtgraphicaleffects
+, python3, pyotherside
+, pcsclite, yubikey-personalization
+, yubikey-manager, makeWrapper }:
+
+mkDerivation rec {
+  pname = "yubioath-desktop";
+  version = "5.0.4";
+
+  src = fetchurl {
+    url = "https://developers.yubico.com/yubioath-desktop/Releases/yubioath-desktop-${version}.tar.gz";
+    sha256 = "1aw88xvg6gjsfwmmlcrdcgyycn2cp7b8vxjzj14h7igcj02xh84h";
+  };
+
+  doCheck = false;
+
+  buildInputs = [ stdenv qtbase qtquickcontrols2 qtgraphicaleffects python3 ];
+
+  nativeBuildInputs = [ qmake makeWrapper python3.pkgs.wrapPython ];
+
+  postPatch = ''
+    substituteInPlace deployment.pri \
+      --replace '/usr/bin' "$out/bin"
+  '';
+
+  pythonPath = [ yubikey-manager ];
+
+  # Need LD_PRELOAD for libykpers as the Nix cpython disables ctypes.cdll.LoadLibrary
+  # support that the yubicommon library uses to load libykpers
+
+  postInstall = ''
+    buildPythonPath "$out $pythonPath"
+    wrapProgram $out/bin/yubioath-desktop \
+      --prefix PYTHONPATH : "$program_PYTHONPATH" \
+      --prefix QML2_IMPORT_PATH : "${pyotherside}/${qtbase.qtQmlPrefix}" \
+      --prefix LD_PRELOAD : "${yubikey-personalization}/lib/libykpers-1.so" \
+      --prefix LD_LIBRARY_PATH : "${stdenv.lib.getLib pcsclite}/lib:${yubikey-personalization}/lib"
+
+      mkdir -p $out/share/applications
+      cp resources/com.yubico.yubioath.desktop \
+        $out/share/applications/com.yubico.yubioath.desktop
+      mkdir -p $out/share/yubioath/icons
+      cp resources/icons/*.{icns,ico,png,svg} $out/share/yubioath/icons
+      substituteInPlace $out/share/applications/com.yubico.yubioath.desktop \
+        --replace 'Exec=yubioath-desktop' "Exec=$out/bin/yubioath-desktop" \
+        --replace 'Icon=yubioath' "Icon=$out/share/yubioath/icons/com.yubico.yubioath.png"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Yubico Authenticator";
+    longDescription = ''
+      Application for generating Open Authentication (OATH) time-based TOTP and
+      event-based HOTP one-time password codes, with the help of a YubiKey that
+      protects the shared secrets.
+    '';
+
+    homepage = "https://developers.yubico.com/yubioath-desktop";
+    downloadPage = "https://developers.yubico.com/yubioath-desktop/Releases/";
+    changelog = "https://developers.yubico.com/yubioath-desktop/Release_Notes.html";
+
+    license = stdenv.lib.licenses.bsd2;
+    maintainers = with maintainers; [ mic92 risson ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/zathura/cb/default.nix b/nixpkgs/pkgs/applications/misc/zathura/cb/default.nix
new file mode 100644
index 000000000000..4e2d16819ba5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/zathura/cb/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, lib, fetchurl, meson, ninja, pkgconfig, zathura_core
+, girara, gettext, libarchive }:
+
+stdenv.mkDerivation rec {
+  pname = "zathura-cb";
+  version = "0.1.8";
+
+  src = fetchurl {
+    url = "https://pwmt.org/projects/${pname}/download/${pname}-${version}.tar.xz";
+    sha256 = "1i6cf0vks501cggwvfsl6qb7mdaf3sszdymphimfvnspw810faj5";
+  };
+
+  nativeBuildInputs = [ meson ninja pkgconfig gettext ];
+  buildInputs = [ libarchive zathura_core girara ];
+
+  PKG_CONFIG_ZATHURA_PLUGINDIR = "lib/zathura";
+
+  meta = with lib; {
+    homepage = "https://pwmt.org/projects/zathura-cb/";
+    description = "A zathura CB plugin";
+    longDescription = ''
+      The zathura-cb plugin adds comic book support to zathura.
+      '';
+    license = licenses.zlib;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ jlesquembre ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/zathura/core/default.nix b/nixpkgs/pkgs/applications/misc/zathura/core/default.nix
new file mode 100644
index 000000000000..44f200174d9b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/zathura/core/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchurl, meson, ninja, wrapGAppsHook, pkgconfig
+, appstream-glib, desktop-file-utils, python3
+, gtk, girara, gettext, libxml2, check
+, sqlite, glib, texlive, libintl, libseccomp
+, file, librsvg
+, gtk-mac-integration
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "zathura";
+  version = "0.4.5";
+
+  src = fetchurl {
+    url = "https://pwmt.org/projects/${pname}/download/${pname}-${version}.tar.xz";
+    sha256 = "0b3nrcvykkpv2vm99kijnic2gpfzva520bsjlihaxandzfm9ff8c";
+  };
+
+  outputs = [ "bin" "man" "dev" "out" ];
+
+  # Flag list:
+  # https://github.com/pwmt/zathura/blob/master/meson_options.txt
+  mesonFlags = [
+    "-Dsqlite=enabled"
+    "-Dmagic=enabled"
+    # "-Dseccomp=enabled"
+    "-Dmanpages=enabled"
+    "-Dconvert-icon=enabled"
+    "-Dsynctex=enabled"
+    # Make sure tests are enabled for doCheck
+    "-Dtests=enabled"
+  ];
+
+  nativeBuildInputs = [
+    meson ninja pkgconfig desktop-file-utils python3.pkgs.sphinx
+    gettext wrapGAppsHook libxml2 check
+  ] ++ optional stdenv.isLinux appstream-glib;
+
+  buildInputs = [
+    gtk girara libintl sqlite glib file librsvg
+    texlive.bin.core
+  ] ++ optional stdenv.isLinux libseccomp
+    ++ optional stdenv.isDarwin gtk-mac-integration;
+
+  doCheck = true;
+
+  meta = {
+    homepage = "https://git.pwmt.org/pwmt/zathura";
+    description = "A core component for zathura PDF viewer";
+    license = licenses.zlib;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ globin ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/zathura/default.nix b/nixpkgs/pkgs/applications/misc/zathura/default.nix
new file mode 100644
index 000000000000..1548b0581b65
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/zathura/default.nix
@@ -0,0 +1,33 @@
+{ config, pkgs
+# zathura_pdf_mupdf fails to load _opj_create_decompress at runtime on Darwin (https://github.com/NixOS/nixpkgs/pull/61295#issue-277982980)
+, useMupdf ? config.zathura.useMupdf or (!pkgs.stdenv.isDarwin) }:
+
+let
+  callPackage = pkgs.newScope self;
+
+  self = rec {
+    gtk = pkgs.gtk3;
+
+    zathura_core = callPackage ./core { };
+
+    zathura_pdf_poppler = callPackage ./pdf-poppler { };
+
+    zathura_pdf_mupdf = callPackage ./pdf-mupdf { };
+
+    zathura_djvu = callPackage ./djvu { };
+
+    zathura_ps = callPackage ./ps { };
+
+    zathura_cb = callPackage ./cb { };
+
+    zathuraWrapper = callPackage ./wrapper.nix {
+      plugins = [
+        zathura_djvu
+        zathura_ps
+        zathura_cb
+        (if useMupdf then zathura_pdf_mupdf else zathura_pdf_poppler)
+      ];
+    };
+  };
+
+in self.zathuraWrapper
diff --git a/nixpkgs/pkgs/applications/misc/zathura/djvu/default.nix b/nixpkgs/pkgs/applications/misc/zathura/djvu/default.nix
new file mode 100644
index 000000000000..954df5301e31
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/zathura/djvu/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, meson, ninja, pkgconfig, gtk, zathura_core, girara, djvulibre, gettext }:
+
+stdenv.mkDerivation rec {
+  pname = "zathura-djvu";
+  version = "0.2.9";
+
+  src = fetchurl {
+    url = "https://pwmt.org/projects/${pname}/download/${pname}-${version}.tar.xz";
+    sha256 = "0062n236414db7q7pnn3ccg5111ghxj3407pn9ri08skxskgirln";
+  };
+
+  nativeBuildInputs = [ meson ninja pkgconfig ];
+  buildInputs = [ djvulibre gettext zathura_core gtk girara ];
+
+  PKG_CONFIG_ZATHURA_PLUGINDIR = "lib/zathura";
+
+  meta = with stdenv.lib; {
+    homepage = "https://pwmt.org/projects/zathura-djvu/";
+    description = "A zathura DJVU plugin";
+    longDescription = ''
+      The zathura-djvu plugin adds DjVu support to zathura by using the
+      djvulibre library.
+    '';
+    license = licenses.zlib;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/zathura/pdf-mupdf/default.nix b/nixpkgs/pkgs/applications/misc/zathura/pdf-mupdf/default.nix
new file mode 100644
index 000000000000..32a2ec420110
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/zathura/pdf-mupdf/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, lib, meson, ninja, fetchurl, fetchpatch
+, pkgconfig, zathura_core, cairo , gtk-mac-integration, girara, mupdf }:
+
+stdenv.mkDerivation rec {
+  version = "0.3.5";
+  pname = "zathura-pdf-mupdf";
+
+  src = fetchurl {
+    url = "https://pwmt.org/projects/${pname}/download/${pname}-${version}.tar.xz";
+    sha256 = "1pjwsb7zwclxsvz229fl7y2saf1pv3ifwv3ay8viqxgrp9x3z9hq";
+  };
+
+  patches = [
+    # compatibility with MuPDF 1.17
+    (fetchpatch {
+      url = "https://git.pwmt.org/pwmt/zathura-pdf-mupdf/-/commit/c7f341addb76d5e6fd8c24c666d8fe97c451a4cb.patch";
+      sha256 = "12rikx2j7dpngfma9x4i504w58a8xx3rc0gmyz183v19hn54c075";
+    })
+  ];
+
+  nativeBuildInputs = [ meson ninja pkgconfig ];
+
+  buildInputs = [
+    zathura_core girara mupdf cairo
+  ] ++ lib.optional stdenv.isDarwin gtk-mac-integration;
+
+  PKG_CONFIG_ZATHURA_PLUGINDIR= "lib/zathura";
+
+  meta = with lib; {
+    homepage = "https://pwmt.org/projects/zathura-pdf-mupdf/";
+    description = "A zathura PDF plugin (mupdf)";
+    longDescription = ''
+      The zathura-pdf-mupdf plugin adds PDF support to zathura by
+      using the mupdf rendering library.
+    '';
+    license = licenses.zlib;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ cstrahan ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/zathura/pdf-poppler/default.nix b/nixpkgs/pkgs/applications/misc/zathura/pdf-poppler/default.nix
new file mode 100644
index 000000000000..bafa293ad9c3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/zathura/pdf-poppler/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, lib, fetchurl, meson, ninja, pkgconfig, zathura_core, girara, poppler }:
+
+stdenv.mkDerivation rec {
+  pname = "zathura-pdf-poppler";
+  version = "0.3.0";
+
+  src = fetchurl {
+    url = "https://pwmt.org/projects/${pname}/download/${pname}-${version}.tar.xz";
+    sha256 = "1vfl4vkyy3rf39r1sqaa7y8113bgkh2bkfq3nn2inis9mrykmk6m";
+  };
+
+  nativeBuildInputs = [ meson ninja pkgconfig zathura_core ];
+  buildInputs = [ poppler girara ];
+
+  PKG_CONFIG_ZATHURA_PLUGINDIR = "lib/zathura";
+
+  meta = with lib; {
+    homepage = "https://pwmt.org/projects/zathura-pdf-poppler/";
+    description = "A zathura PDF plugin (poppler)";
+    longDescription = ''
+      The zathura-pdf-poppler plugin adds PDF support to zathura by
+      using the poppler rendering library.
+    '';
+    license = licenses.zlib;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ cstrahan ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/zathura/ps/default.nix b/nixpkgs/pkgs/applications/misc/zathura/ps/default.nix
new file mode 100644
index 000000000000..05cc570eb8f1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/zathura/ps/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, lib, fetchurl, meson, ninja, pkgconfig, zathura_core, girara, libspectre, gettext }:
+
+stdenv.mkDerivation rec {
+  pname = "zathura-ps";
+  version = "0.2.6";
+
+  src = fetchurl {
+    url = "https://pwmt.org/projects/${pname}/download/${pname}-${version}.tar.xz";
+    sha256 = "0wygq89nyjrjnsq7vbpidqdsirjm6iq4w2rijzwpk2f83ys8bc3y";
+  };
+
+  nativeBuildInputs = [ meson ninja pkgconfig gettext ];
+  buildInputs = [ libspectre zathura_core girara ];
+
+  PKG_CONFIG_ZATHURA_PLUGINDIR = "lib/zathura";
+
+  meta = with lib; {
+    homepage = "https://pwmt.org/projects/zathura-ps/";
+    description = "A zathura PS plugin";
+    longDescription = ''
+      The zathura-ps plugin adds PS support to zathura by using the
+      libspectre library.
+      '';
+    license = licenses.zlib;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ cstrahan ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/zathura/wrapper.nix b/nixpkgs/pkgs/applications/misc/zathura/wrapper.nix
new file mode 100644
index 000000000000..5d37b5190d02
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/zathura/wrapper.nix
@@ -0,0 +1,34 @@
+{ symlinkJoin, lib, makeWrapper, zathura_core, file, plugins ? [] }:
+
+let
+  pluginsPath = lib.makeSearchPath "lib/zathura" plugins;
+
+in symlinkJoin {
+  name = "zathura-with-plugins-${zathura_core.version}";
+
+  paths = with zathura_core; [ man dev out ];
+
+  inherit plugins;
+
+  buildInputs = [ makeWrapper ];
+
+  postBuild = ''
+    makeWrapper ${zathura_core.bin}/bin/zathura $out/bin/zathura \
+      --prefix PATH ":" "${lib.makeBinPath [ file ]}" \
+      --add-flags --plugins-dir=${pluginsPath}
+  '';
+
+  meta = with lib; {
+    homepage = "https://git.pwmt.org/pwmt/zathura/";
+    description = "A highly customizable and functional PDF viewer";
+    longDescription = ''
+      Zathura is a highly customizable and functional PDF viewer based on the
+      poppler rendering library and the GTK toolkit. The idea behind zathura
+      is an application that provides a minimalistic and space saving interface
+      as well as an easy usage that mainly focuses on keyboard interaction.
+    '';
+    license = licenses.zlib;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ smironov globin ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/zk-shell/default.nix b/nixpkgs/pkgs/applications/misc/zk-shell/default.nix
new file mode 100644
index 000000000000..df6e011e4d58
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/zk-shell/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, pythonPackages }:
+
+pythonPackages.buildPythonApplication rec {
+  version = "1.0.0";
+  name = "zk-shell-" + version;
+
+  src = fetchFromGitHub {
+    owner = "rgs1";
+    repo = "zk_shell";
+    rev = "v${version}";
+    sha256 = "0zisvvlclsf4sdh7dpqcl1149xbxw6pi1aqcwjbqblgf8m4nm0c7";
+  };
+
+  propagatedBuildInputs = (with pythonPackages; [
+    ansi kazoo nose six tabulate twitter
+  ]);
+
+  #requires a running zookeeper, don't know how to fix that for the moment
+  doCheck = false;
+
+  meta = {
+    description = "A powerful & scriptable shell for Apache ZooKeeper";
+    homepage = "https://github.com/rgs1/zk_shell";
+    license = stdenv.lib.licenses.asl20;
+    maintainers = [ stdenv.lib.maintainers.mahe ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/zola/default.nix b/nixpkgs/pkgs/applications/misc/zola/default.nix
new file mode 100644
index 000000000000..d88d7296fd64
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/zola/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, rustPlatform, cmake, pkg-config, openssl, CoreServices }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "zola";
+  version = "0.11.0";
+
+  src = fetchFromGitHub {
+    owner = "getzola";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "137ak9gzcn3689fmcb90wa4szw43rh2m51mf26l77a5gksn5y6cn";
+  };
+
+  cargoSha256 = "0v40bcqh48dlhdc0kz7wm3q9r3i1m6j9s74bfiv237dqx5dymmsg";
+
+  nativeBuildInputs = [ cmake pkg-config ];
+  buildInputs = [ openssl ]
+    ++ stdenv.lib.optional stdenv.isDarwin CoreServices;
+
+  postInstall = ''
+    install -D -m 444 completions/zola.bash \
+      -t $out/share/bash-completion/completions
+    install -D -m 444 completions/_zola \
+      -t $out/share/zsh/site-functions
+    install -D -m 444 completions/zola.fish \
+      -t $out/share/fish/vendor_completions.d
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A fast static site generator with everything built-in";
+    homepage = "https://www.getzola.org/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ dywedir ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/zscroll/default.nix b/nixpkgs/pkgs/applications/misc/zscroll/default.nix
new file mode 100644
index 000000000000..402032b5cec3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/zscroll/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, python3, python3Packages, fetchFromGitHub }:
+
+let version = "1.0"; in
+
+python3Packages.buildPythonApplication {
+  name = "zscroll-${version}";
+  # don't prefix with python version
+  namePrefix = "";
+
+  src = fetchFromGitHub {
+    owner = "noctuid";
+    repo = "zscroll";
+    rev = "v${version}";
+    sha256 = "0rf9m1czy19hzpcp8dq9c5zawk0nhwfzzjxlhk9r2n06lhb81ig5";
+  };
+
+  doCheck = false;
+
+  propagatedBuildInputs = [ python3 ];
+
+  meta = with stdenv.lib; {
+    description = "A text scroller for use with panels and shells";
+    homepage = "https://github.com/noctuid/zscroll";
+    license = licenses.bsd2;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/3proxy/default.nix b/nixpkgs/pkgs/applications/networking/3proxy/default.nix
new file mode 100644
index 000000000000..a1e54b502289
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/3proxy/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, coreutils }:
+
+stdenv.mkDerivation rec {
+  pname = "3proxy";
+  version = "0.8.13";
+  src = fetchFromGitHub {
+    owner = "z3APA3A";
+    repo = pname;
+    rev = version;
+    sha256 = "1k5rqldiyakhwhplazlhswkgy3psdkpxhn85605ncwaqx49qy8vk";
+  };
+  makeFlags = [
+    "INSTALL=${coreutils}/bin/install"
+    "prefix=$(out)"
+  ];
+  preConfigure = ''
+    ln -s Makefile.Linux Makefile
+  '';
+  meta = with stdenv.lib; {
+    description = "Tiny free proxy server";
+    homepage = "https://github.com/z3APA3A/3proxy";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.misuzu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/Sylk/default.nix b/nixpkgs/pkgs/applications/networking/Sylk/default.nix
new file mode 100644
index 000000000000..f6a88f26e9a2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/Sylk/default.nix
@@ -0,0 +1,32 @@
+{ appimageTools, fetchurl, lib, gsettings-desktop-schemas, gtk3 }:
+
+let
+  pname = "Sylk";
+  version = "2.7.2";
+in
+
+appimageTools.wrapType2 rec {
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "http://download.ag-projects.com/Sylk/Sylk-${version}-x86_64.AppImage";
+    sha256 = "1hz41jan8hw56ahpaajlb1yy5zjkyxrclzmqhklm5x59b76pd0zx";
+  };
+
+  profile = ''
+    export LC_ALL=C.UTF-8
+    export XDG_DATA_DIRS=${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS
+  '';
+
+  multiPkgs = null; # no 32bit needed
+  extraPkgs = appimageTools.defaultFhsEnvArgs.multiPkgs;
+  extraInstallCommands = "mv $out/bin/{${name},${pname}}";
+
+  meta = with lib; {
+    description = "Sylk WebRTC client";
+    homepage = "http://sylkserver.com/";
+    license = licenses.agpl3Plus;
+    maintainers = with maintainers; [ zimbatm ];
+    platforms = [ "i386-linux" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/apache-directory-studio/default.nix b/nixpkgs/pkgs/applications/networking/apache-directory-studio/default.nix
new file mode 100644
index 000000000000..0c8136724ffc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/apache-directory-studio/default.nix
@@ -0,0 +1,63 @@
+{ stdenv, fetchurl, xorg, jre, makeWrapper, makeDesktopItem }:
+
+let
+  rpath = stdenv.lib.makeLibraryPath (with xorg; [
+    libXtst
+  ]);
+
+  desktopItem = makeDesktopItem {
+    name = "apache-directory-studio";
+    exec = "ApacheDirectoryStudio";
+    icon = "apache-directory-studio";
+    comment = "Eclipse-based LDAP browser and directory client";
+    desktopName = "Apache Directory Studio";
+    genericName = "Apache Directory Studio";
+    categories = "Java;Network";
+  };
+  version = "2.0.0-M14";
+  versionWithDate = "2.0.0.v20180908-M14";
+in
+stdenv.mkDerivation rec {
+  pname = "apache-directory-studio";
+  inherit version;
+
+  src =
+    if stdenv.hostPlatform.system == "x86_64-linux" then
+      fetchurl {
+        url = "mirror://apache/directory/studio/${versionWithDate}/ApacheDirectoryStudio-${versionWithDate}-linux.gtk.x86_64.tar.gz";
+        sha256 = "0kq4l3755q69p7bry9xpm5xxw56ksncp76fdqqd1xzbvsg309bps";
+      }
+    else if stdenv.hostPlatform.system == "i686-linux" then
+      fetchurl {
+        url = "mirror://apache/directory/studio/${versionWithDate}/ApacheDirectoryStudio-${versionWithDate}-linux.gtk.x86.tar.gz";
+        sha256 = "038dy8jjgq5gj5r56y9ps3ycqi9gn57i4q1r3mmjx1b1950wmh1q";
+      }
+    else throw "Unsupported system: ${stdenv.hostPlatform.system}";
+
+  buildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    dest="$out/libexec/ApacheDirectoryStudio"
+    mkdir -p "$dest"
+    cp -r . "$dest"
+
+    mkdir -p "$out/bin"
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        "$dest/ApacheDirectoryStudio"
+    makeWrapper "$dest/ApacheDirectoryStudio" \
+        "$out/bin/ApacheDirectoryStudio" \
+        --prefix PATH : "${jre}/bin" \
+        --prefix LD_LIBRARY_PATH : "${rpath}"
+    install -D icon.xpm "$out/share/pixmaps/apache-directory-studio.xpm"
+    install -D -t "$out/share/applications" ${desktopItem}/share/applications/*
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Eclipse-based LDAP browser and directory client";
+    homepage = "https://directory.apache.org/studio/";
+    license = licenses.asl20;
+    # Upstream supports macOS and Windows too.
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/brig/default.nix b/nixpkgs/pkgs/applications/networking/brig/default.nix
new file mode 100644
index 000000000000..66329b64eace
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/brig/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "brig";
+  version = "0.4.1";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/sahib/brig";
+  subPackages = ["."];
+
+  src = fetchFromGitHub {
+    owner = "sahib";
+    repo = "brig";
+    inherit rev;
+    sha256 = "0gi39jmnzqrgj146yw8lcmgmvzx7ii1dgw4iqig7kx8c0jiqi600";
+  };
+
+  meta = with stdenv.lib; {
+    description = "File synchronization on top of ipfs with git like interface and FUSE filesystem";
+    homepage = "https://github.com/sahib/brig";
+    license = licenses.agpl3;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ offline ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/arora/default.nix b/nixpkgs/pkgs/applications/networking/browsers/arora/default.nix
new file mode 100644
index 000000000000..88ad2c609bfa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/arora/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, qt4, qmake4Hook }:
+
+stdenv.mkDerivation rec {
+  pname = "arora";
+  version = "0.11.0";
+
+  src = fetchFromGitHub {
+    owner = "Arora";
+    repo = "arora";
+    rev = version;
+    sha256 = "0wmivgx3mw51rghi6q8fgivpkqc98z2mqmllf7c98ln0wd8rkf3c";
+  };
+
+  buildInputs = [ qt4 ];
+  nativeBuildInputs = [ qmake4Hook ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    platforms = qt4.meta.platforms;
+    maintainers = [ maintainers.phreedom ];
+    description = "A cross-platform Qt4 Webkit browser";
+    homepage = "https://github.com/Arora/arora";
+    license = with licenses; [ gpl2 gpl3 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/brave/default.nix b/nixpkgs/pkgs/applications/networking/browsers/brave/default.nix
new file mode 100644
index 000000000000..b3261431ccd3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/brave/default.nix
@@ -0,0 +1,161 @@
+{ stdenv, lib, fetchurl
+, dpkg
+, alsaLib
+, at-spi2-atk
+, at-spi2-core
+, atk
+, cairo
+, cups
+, dbus
+, expat
+, fontconfig
+, freetype
+, gdk-pixbuf
+, glib
+, gnome2
+, gnome3
+, gsettings-desktop-schemas
+, gtk3
+, libpulseaudio
+, libuuid
+, libdrm
+, libX11
+, libXcomposite
+, libXcursor
+, libXdamage
+, libXext
+, libXfixes
+, libXi
+, libXrandr
+, libXrender
+, libXScrnSaver
+, libXtst
+, mesa
+, nspr
+, nss
+, pango
+, udev
+, xorg
+, zlib
+, xdg_utils
+, wrapGAppsHook
+}:
+
+let
+
+rpath = lib.makeLibraryPath [
+  alsaLib
+  at-spi2-atk
+  at-spi2-core
+  atk
+  cairo
+  cups
+  dbus
+  expat
+  fontconfig
+  freetype
+  gdk-pixbuf
+  glib
+  gnome2.GConf
+  gtk3
+  libdrm
+  libpulseaudio
+  libX11
+  libXScrnSaver
+  libXcomposite
+  libXcursor
+  libXdamage
+  libXext
+  libXfixes
+  libXi
+  libXrandr
+  libXrender
+  libXtst
+  libuuid
+  mesa
+  nspr
+  nss
+  pango
+  udev
+  xdg_utils
+  xorg.libxcb
+  zlib
+];
+
+in
+
+stdenv.mkDerivation rec {
+  pname = "brave";
+  version = "1.8.95";
+
+  src = fetchurl {
+    url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
+    sha256 = "1mlffg2v31b42gj354w5yv0yzlqc2f4f3cmdnddzkplw10jgw6f1";
+  };
+
+  dontConfigure = true;
+  dontBuild = true;
+  dontPatchELF = true;
+
+  nativeBuildInputs = [ dpkg wrapGAppsHook ];
+
+  buildInputs = [ glib gsettings-desktop-schemas gnome3.adwaita-icon-theme ];
+
+  unpackPhase = "dpkg-deb --fsys-tarfile $src | tar -x --no-same-permissions --no-same-owner";
+
+  installPhase = ''
+      mkdir -p $out $out/bin
+
+      cp -R usr/share $out
+      cp -R opt/ $out/opt
+
+      export BINARYWRAPPER=$out/opt/brave.com/brave/brave-browser
+
+      # Fix path to bash in $BINARYWRAPPER
+      substituteInPlace $BINARYWRAPPER \
+          --replace /bin/bash ${stdenv.shell}
+
+      ln -sf $BINARYWRAPPER $out/bin/brave
+
+      patchelf \
+          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath "${rpath}" $out/opt/brave.com/brave/brave
+
+      # Fix paths
+      substituteInPlace $out/share/applications/brave-browser.desktop \
+          --replace /usr/bin/brave-browser-stable $out/bin/brave
+      substituteInPlace $out/share/gnome-control-center/default-apps/brave-browser.xml \
+          --replace /opt/brave.com $out/opt/brave.com
+      substituteInPlace $out/share/menu/brave-browser.menu \
+          --replace /opt/brave.com $out/opt/brave.com
+      substituteInPlace $out/opt/brave.com/brave/default-app-block \
+          --replace /opt/brave.com $out/opt/brave.com
+
+      # Correct icons location
+      icon_sizes=("16" "22" "24" "32" "48" "64" "128" "256")
+
+      for icon in ''${icon_sizes[*]}
+      do
+          mkdir -p $out/share/icons/hicolor/$icon\x$icon/apps
+          ln -s $out/opt/brave.com/brave/product_logo_$icon.png $out/share/icons/hicolor/$icon\x$icon/apps/brave-browser.png
+      done
+
+      # Replace xdg-settings and xdg-mime
+      ln -sf ${xdg_utils}/bin/xdg-settings $out/opt/brave.com/brave/xdg-settings
+      ln -sf ${xdg_utils}/bin/xdg-mime $out/opt/brave.com/brave/xdg-mime
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://brave.com/";
+    description = "Privacy-oriented browser for Desktop and Laptop computers";
+    changelog = "https://github.com/brave/brave-browser/blob/v${version}/CHANGELOG.md";
+    longDescription = ''
+      Brave browser blocks the ads and trackers that slow you down,
+      chew up your bandwidth, and invade your privacy. Brave lets you
+      contribute to your favorite creators automatically.
+    '';
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ uskudnik rht jefflabonte ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/browsh/default.nix b/nixpkgs/pkgs/applications/networking/browsers/browsh/default.nix
new file mode 100644
index 000000000000..3662c3badd3e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/browsh/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, buildGoPackage, fetchurl, fetchFromGitHub, go-bindata }:
+
+let
+  version = "1.6.4";
+
+  # TODO: must build the extension instead of downloading it. But since it's
+  # literally an asset that is indifferent regardless of the platform, this
+  # might be just enough.
+  webext = fetchurl {
+    url = "https://github.com/browsh-org/browsh/releases/download/v${version}/browsh-${version}-an.fx.xpi";
+    sha256 = "1shf1s9s525wns5vrsc4ns21zjxm1si43lx6v0q8ma6vd5x5445l";
+  };
+
+in buildGoPackage rec {
+  inherit version;
+
+  pname = "browsh";
+
+  goPackagePath = "browsh";
+
+  # further go package dependencies are defined in deps.nix, see line below.
+  src = fetchFromGitHub {
+    owner = "browsh-org";
+    repo = "browsh";
+    rev = "v${version}";
+    sha256 = "0gvf5k1gm81xxg7ha309kgfkgl5357dli0fbc4z01rmfgbl0rfa0";
+  };
+
+  nativeBuildInputs = [ go-bindata ];
+
+  # embed the web extension in a go file and place it where it's supposed to
+  # be. See
+  # https://github.com/browsh-org/browsh/blob/v1.5.0/interfacer/contrib/xpi2bin.sh
+  preBuild = ''
+    xpiprefix="$(mktemp -d)"
+    cp "${webext}" "$xpiprefix/browsh.xpi"
+    go-bindata \
+      -prefix "$xpiprefix" \
+      -pkg browsh \
+      -o "$NIX_BUILD_TOP/go/src/${goPackagePath}/interfacer/src/browsh/webextension.go" \
+      "$xpiprefix/browsh.xpi"
+
+    sed \
+      -e 's:Asset("/browsh.xpi"):Asset("browsh.xpi"):g' \
+      -i "$NIX_BUILD_TOP/go/src/${goPackagePath}/interfacer/src/browsh/firefox.go"
+  '';
+
+  postBuild = ''
+    mv "$NIX_BUILD_TOP/go/bin/src" "$NIX_BUILD_TOP/go/bin/browsh"
+  '';
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    description = "A fully-modern text-based browser, rendering to TTY and browsers";
+    homepage = "https://www.brow.sh/";
+    maintainers = [ maintainers.kalbasit ];
+    license = stdenv.lib.licenses.lgpl21;
+    platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/browsh/deps.nix b/nixpkgs/pkgs/applications/networking/browsers/browsh/deps.nix
new file mode 100644
index 000000000000..9a6a898beb5b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/browsh/deps.nix
@@ -0,0 +1,264 @@
+# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix)
+[
+  {
+    goPackagePath  = "github.com/NYTimes/gziphandler";
+    fetch = {
+      type = "git";
+      url = "https://github.com/NYTimes/gziphandler";
+      rev =  "dd0439581c7657cb652dfe5c71d7d48baf39541d";
+      sha256 = "0rhrjlw220hnymzfccm0yir3pc9dpj7h3gwzhzq2cbsb3hhsqvyy";
+    };
+  }
+  {
+    goPackagePath  = "github.com/fsnotify/fsnotify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev =  "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gdamore/encoding";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gdamore/encoding";
+      rev =  "6289cdc94c00ac4aa177771c5fce7af2f96b626d";
+      sha256 = "1vmm5zll92i2fm4ajqx0gyx0p9j36496x5nabi3y0x7h0inv0pk9";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gdamore/tcell";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gdamore/tcell";
+      rev =  "b5d0c1ac570211e469f43ff88c0c6aa4b56cc99a";
+      sha256 = "0g2zfbgyk3djlk0qpmrgcyy0ba9ad932yswpaacswi21qyf9gwag";
+    };
+  }
+  {
+    goPackagePath  = "github.com/go-errors/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-errors/errors";
+      rev =  "a6af135bd4e28680facf08a3d206b454abc877a4";
+      sha256 = "0rznpknk19rxkr7li6dqs52c26pjazp69lh493l4ny4sxn5922lp";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gorilla/websocket";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gorilla/websocket";
+      rev =  "66b9c49e59c6c48f0ffce28c2d8b8a5678502c6d";
+      sha256 = "00i4vb31nsfkzzk7swvx3i75r2d960js3dri1875vypk3v2s0pzk";
+    };
+  }
+  {
+    goPackagePath  = "github.com/hashicorp/hcl";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/hcl";
+      rev =  "8cb6e5b959231cc1119e43259c4a608f9c51a241";
+      sha256 = "0q6ml0qqs0yil76mpn4mdx4lp94id8vbv575qm60jzl1ijcl5i66";
+    };
+  }
+  {
+    goPackagePath  = "github.com/hpcloud/tail";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hpcloud/tail";
+      rev =  "a30252cb686a21eb2d0b98132633053ec2f7f1e5";
+      sha256 = "1njpzc0pi1acg5zx9y6vj9xi6ksbsc5d387rd6904hy6rh2m6kn0";
+    };
+  }
+  {
+    goPackagePath  = "github.com/lucasb-eyer/go-colorful";
+    fetch = {
+      type = "git";
+      url = "https://github.com/lucasb-eyer/go-colorful";
+      rev =  "30298f24079860c4dee452fdef6519b362a4a026";
+      sha256 = "0fig06880bvk1l92j4127v4x9sar4ds7ga8959gxxghb2w70b7l2";
+    };
+  }
+  {
+    goPackagePath  = "github.com/magiconair/properties";
+    fetch = {
+      type = "git";
+      url = "https://github.com/magiconair/properties";
+      rev =  "de8848e004dd33dc07a2947b3d76f618a7fc7ef1";
+      sha256 = "19zqw1x0w0crh8zc84yy82nkcc5yjz72gviaf2xjgfm5a8np7nyb";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mattn/go-runewidth";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-runewidth";
+      rev =  "3ee7d812e62a0804a7d0a324e0249ca2db3476d3";
+      sha256 = "00b3ssm7wiqln3k54z2wcnxr3k3c7m1ybyhb9h8ixzbzspld0qzs";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mitchellh/mapstructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/mapstructure";
+      rev =  "3536a929edddb9a5b34bd6861dc4a9647cb459fe";
+      sha256 = "03bpv28jz9zhn4947saqwi328ydj7f6g6pf1m2d4m5zdh5jlfkrr";
+    };
+  }
+  {
+    goPackagePath  = "github.com/onsi/ginkgo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/onsi/ginkgo";
+      rev =  "eea6ad008b96acdaa524f5b409513bf062b500ad";
+      sha256 = "1326s5fxgasdpz1qqwrw4n5p3k0vz44msnyz14knrhlw5l97lx33";
+    };
+  }
+  {
+    goPackagePath  = "github.com/onsi/gomega";
+    fetch = {
+      type = "git";
+      url = "https://github.com/onsi/gomega";
+      rev =  "90e289841c1ed79b7a598a7cd9959750cb5e89e2";
+      sha256 = "1n7i4hksdgv410m43v2sw14bl5vy59dkp6nlw5l76nibbh37syr9";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pelletier/go-toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pelletier/go-toml";
+      rev =  "728039f679cbcd4f6a54e080d2219a4c4928c546";
+      sha256 = "1v76s3vds0i9dxaha4ikd6xjm7vqqfk6sy9l6jc2lsvmj99d5sy6";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev =  "ba968bfe8b2f7e042a574c888954fccecfa385b4";
+      sha256 = "0g5qcb4d4fd96midz0zdk8b9kz8xkzwfa8kr1cliqbg8sxsy5vd1";
+    };
+  }
+  {
+    goPackagePath  = "github.com/shibukawa/configdir";
+    fetch = {
+      type = "git";
+      url = "https://github.com/shibukawa/configdir";
+      rev =  "e180dbdc8da04c4fa04272e875ce64949f38bd3e";
+      sha256 = "0vbma9jkwh0ifz8dk2ssgmy7aiaify63lpa0lah7i4dkkxr94c9z";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/afero";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/afero";
+      rev =  "588a75ec4f32903aa5e39a2619ba6a4631e28424";
+      sha256 = "0j9r65qgd58324m85lkl49vk9dgwd62g7dwvkfcm3k6i9dc555a9";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/cast";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cast";
+      rev =  "8c9545af88b134710ab1cd196795e7f2388358d7";
+      sha256 = "0xq1ffqj8y8h7dcnm0m9lfrh0ga7pssnn2c1dnr09chqbpn4bdc5";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/jwalterweatherman";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/jwalterweatherman";
+      rev =  "94f6ae3ed3bceceafa716478c5fbf8d29ca601a1";
+      sha256 = "1ywmkwci5zyd88ijym6f30fj5c0k2yayxarkmnazf5ybljv50q7b";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev =  "298182f68c66c05229eb03ac171abe6e309ee79a";
+      sha256 = "1cj3cjm7d3zk0mf1xdybh0jywkbbw7a6yr3y22x9sis31scprswd";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/viper";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/viper";
+      rev =  "b5bf975e5823809fb22c7644d008757f78a4259e";
+      sha256 = "1zpzxvn13wpvbblbbn73svaq39zgxfjqhci9d68g3qf309pcfy19";
+    };
+  }
+  {
+    goPackagePath  = "github.com/ulule/limiter";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ulule/limiter";
+      rev =  "38b2a440be905c8be884fd5e114dc893a64e5d81";
+      sha256 = "0sbbfz9k3m2hf45cx7y7xshsr3rac495lks9ciwmnrzsnxfdh3l5";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev =  "461777fb6f67e8cb9d70cda16573678d085a74cf";
+      sha256 = "0sc0llch05q6h7nqgayi3sgismsznpnlsz4gh89y4klpymdcpbh2";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev =  "93c9922d18aeb82498a065f07aec7ad7fa60dfb7";
+      sha256 = "0hv96nwbv0li3nrv43ldfzmf12yrrbji2cf8n44iibv8ps5kfssx";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev =  "342b2e1fbaa52c93f31447ad2c6abc048c63e475";
+      sha256 = "0flv9idw0jm5nm8lx25xqanbkqgfiym6619w575p7nrdh0riqwqh";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/fsnotify.v1";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev =  "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/tomb.v1";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-tomb/tomb";
+      rev =  "dd632973f1e7218eb1089048e0798ec9ae7dceb8";
+      sha256 = "1lqmq1ag7s4b3gc3ddvr792c5xb5k6sfn0cchr3i2s7f1c231zjv";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-yaml/yaml";
+      rev =  "51d6538a90f86fe93ac480b35f37b2be17fef232";
+      sha256 = "01wj12jzsdqlnidpyjssmj0r4yavlqy7dwrg7adqd8dicjc4ncsa";
+    };
+  }
+]
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/browsers/captive-browser/default.nix b/nixpkgs/pkgs/applications/networking/browsers/captive-browser/default.nix
new file mode 100644
index 000000000000..3ce04842c6e4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/captive-browser/default.nix
@@ -0,0 +1,22 @@
+{ lib, fetchFromGitHub, buildGoPackage }:
+
+buildGoPackage rec {
+  name = "captive-browser";
+  version = "2019-04-16";
+  goPackagePath = name;
+
+  src = fetchFromGitHub {
+    owner  = "FiloSottile";
+    repo   = "captive-browser";
+    rev    = "08450562e58bf9564ee98ad64ef7b2800e53338f";
+    sha256 = "17icgjg7h0xm8g4yy38qjhsvlz9pmlmj9kydz01y2nyl0v02i648";
+  };
+
+  meta = with lib; {
+    description = "Dedicated Chrome instance to log into captive portals without messing with DNS settings";
+    homepage = "https://blog.filippo.io/captive-browser";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ volth ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/browser.nix b/nixpkgs/pkgs/applications/networking/browsers/chromium/browser.nix
new file mode 100644
index 000000000000..7c0609730c24
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/browser.nix
@@ -0,0 +1,94 @@
+{ stdenv, mkChromiumDerivation, channel, enableWideVine }:
+
+with stdenv.lib;
+
+mkChromiumDerivation (base: rec {
+  name = "chromium-browser";
+  packageName = "chromium";
+  buildTargets = [ "mksnapshot" "chrome_sandbox" "chrome" ];
+
+  outputs = ["out" "sandbox"];
+
+  sandboxExecutableName = "__chromium-suid-sandbox";
+
+  installPhase = ''
+    mkdir -p "$libExecPath"
+    cp -v "$buildPath/"*.pak "$buildPath/"*.bin "$libExecPath/"
+    cp -v "$buildPath/icudtl.dat" "$libExecPath/"
+    cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/"
+    cp -v "$buildPath/chrome" "$libExecPath/$packageName"
+
+    # Swiftshader
+    # See https://stackoverflow.com/a/4264351/263061 for the find invocation.
+    if [ -n "$(find "$buildPath/swiftshader/" -maxdepth 1 -name '*.so' -print -quit)" ]; then
+      echo "Swiftshader files found; installing"
+      mkdir -p "$libExecPath/swiftshader"
+      cp -v "$buildPath/swiftshader/"*.so "$libExecPath/swiftshader/"
+    else
+      echo "Swiftshader files not found"
+    fi
+
+    mkdir -p "$sandbox/bin"
+    cp -v "$buildPath/chrome_sandbox" "$sandbox/bin/${sandboxExecutableName}"
+
+    mkdir -vp "$out/share/man/man1"
+    cp -v "$buildPath/chrome.1" "$out/share/man/man1/$packageName.1"
+
+    for icon_file in chrome/app/theme/chromium/product_logo_*[0-9].png; do
+      num_and_suffix="''${icon_file##*logo_}"
+      icon_size="''${num_and_suffix%.*}"
+      expr "$icon_size" : "^[0-9][0-9]*$" || continue
+      logo_output_prefix="$out/share/icons/hicolor"
+      logo_output_path="$logo_output_prefix/''${icon_size}x''${icon_size}/apps"
+      mkdir -vp "$logo_output_path"
+      cp -v "$icon_file" "$logo_output_path/$packageName.png"
+    done
+
+    # Install Desktop Entry
+    install -D chrome/installer/linux/common/desktop.template \
+      $out/share/applications/chromium-browser.desktop
+
+    substituteInPlace $out/share/applications/chromium-browser.desktop \
+      --replace "@@MENUNAME@@" "Chromium" \
+      --replace "@@PACKAGE@@" "chromium" \
+      --replace "Exec=/usr/bin/@@USR_BIN_SYMLINK_NAME@@" "Exec=chromium"
+
+    # Append more mime types to the end
+    sed -i '/^MimeType=/ s,$,x-scheme-handler/webcal;x-scheme-handler/mailto;x-scheme-handler/about;x-scheme-handler/unknown,' \
+      $out/share/applications/chromium-browser.desktop
+
+    # See https://github.com/NixOS/nixpkgs/issues/12433
+    sed -i \
+      -e '/\[Desktop Entry\]/a\' \
+      -e 'StartupWMClass=chromium-browser' \
+      $out/share/applications/chromium-browser.desktop
+  '';
+
+  passthru = { inherit sandboxExecutableName; };
+
+  requiredSystemFeatures = [ "big-parallel" ];
+
+  meta = {
+    description = "An open source web browser from Google";
+    longDescription = ''
+      Chromium is an open source web browser from Google that aims to build a
+      safer, faster, and more stable way for all Internet users to experience
+      the web. It has a minimalist user interface and provides the vast majority
+      of source code for Google Chrome (which has some additional features).
+    '';
+    homepage = "https://www.chromium.org/";
+    maintainers = with maintainers; [ bendlas thefloweringash primeos ];
+    # Overview of the maintainer roles:
+    # nixos-unstable:
+    # - TODO: Need a new maintainer for x86_64 [0]
+    # - @thefloweringash: aarch64
+    # - @primeos: Provisional maintainer (x86_64)
+    # Stable channel:
+    # - TODO (need someone to test backports [0])
+    # [0]: https://github.com/NixOS/nixpkgs/issues/78450
+    license = if enableWideVine then licenses.unfree else licenses.bsd3;
+    platforms = platforms.linux;
+    hydraPlatforms = if channel == "stable" then ["aarch64-linux" "x86_64-linux"] else [];
+    timeout = 172800; # 48 hours
+  };
+})
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/common.nix b/nixpkgs/pkgs/applications/networking/browsers/chromium/common.nix
new file mode 100644
index 000000000000..5dbafcee837e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/common.nix
@@ -0,0 +1,346 @@
+{ stdenv, llvmPackages, gnChromium, ninja, which, nodejs, fetchpatch, gnutar
+
+# default dependencies
+, bzip2, flac, speex, libopus
+, libevent, expat, libjpeg, snappy
+, libpng, libcap
+, xdg_utils, yasm, nasm, minizip, libwebp
+, libusb1, pciutils, nss, re2, zlib
+
+, python2Packages, perl, pkgconfig
+, nspr, systemd, kerberos
+, utillinux, alsaLib
+, bison, gperf
+, glib, gtk3, dbus-glib
+, glibc
+, xorg
+, libXScrnSaver, libXcursor, libXtst, libGLU, libGL
+, protobuf, speechd, libXdamage, cups
+, ffmpeg_3, libxslt, libxml2, at-spi2-core
+, jre
+, pipewire_0_2
+
+# optional dependencies
+, libgcrypt ? null # gnomeSupport || cupsSupport
+, libva ? null # useVaapi
+, libdrm ? null, wayland ? null, mesa_drivers ? null, libxkbcommon ? null # useOzone
+
+# package customization
+, useOzone ? false
+, useVaapi ? !(useOzone || stdenv.isAarch64) # Built if supported, but disabled in the wrapper
+# VA-API TODOs:
+# - Ozone: M81 fails to build due to "ozone_platform_gbm = false"
+#   - Possible solutions: Write a patch to fix the build (wrong gn dependencies)
+#     or build with minigbm
+# - AArch64: Causes serious regressions (https://github.com/NixOS/nixpkgs/pull/85253#issuecomment-614405879)
+, gnomeSupport ? false, gnome ? null
+, gnomeKeyringSupport ? false, libgnome-keyring3 ? null
+, proprietaryCodecs ? true
+, cupsSupport ? true
+, pulseSupport ? false, libpulseaudio ? null
+
+, upstream-info
+}:
+
+buildFun:
+
+with stdenv.lib;
+
+# see http://www.linuxfromscratch.org/blfs/view/cvs/xsoft/chromium.html
+
+let
+  # The additional attributes for creating derivations based on the chromium
+  # source tree.
+  extraAttrs = buildFun base;
+
+  githubPatch = commit: sha256: fetchpatch {
+    url = "https://github.com/chromium/chromium/commit/${commit}.patch";
+    inherit sha256;
+  };
+
+  mkGnFlags =
+    let
+      # Serialize Nix types into GN types according to this document:
+      # https://chromium.googlesource.com/chromium/src/+/master/tools/gn/docs/language.md
+      mkGnString = value: "\"${escape ["\"" "$" "\\"] value}\"";
+      sanitize = value:
+        if value == true then "true"
+        else if value == false then "false"
+        else if isList value then "[${concatMapStringsSep ", " sanitize value}]"
+        else if isInt value then toString value
+        else if isString value then mkGnString value
+        else throw "Unsupported type for GN value `${value}'.";
+      toFlag = key: value: "${key}=${sanitize value}";
+    in attrs: concatStringsSep " " (attrValues (mapAttrs toFlag attrs));
+
+  gnSystemLibraries = [
+    "flac" "libwebp" "libxslt" "opus" "snappy" "libpng"
+    # "zlib" # version 77 reports unresolved dependency on //third_party/zlib:zlib_config
+    # "libjpeg" # fails with multiple undefined references to chromium_jpeg_*
+    # "re2" # fails with linker errors
+    # "ffmpeg" # https://crbug.com/731766
+    # "harfbuzz-ng" # in versions over 63 harfbuzz and freetype are being built together
+                    # so we can't build with one from system and other from source
+  ] ++ optional (versionRange "0" "84") "yasm";
+
+  opusWithCustomModes = libopus.override {
+    withCustomModes = true;
+  };
+
+  defaultDependencies = [
+    bzip2 flac speex opusWithCustomModes
+    libevent expat libjpeg snappy
+    libpng libcap
+    xdg_utils minizip libwebp
+    libusb1 re2 zlib
+    ffmpeg_3 libxslt libxml2
+    # harfbuzz # in versions over 63 harfbuzz and freetype are being built together
+               # so we can't build with one from system and other from source
+  ] ++ (if (versionRange "0" "84") then [ yasm ] else [ nasm ]);
+
+  # build paths and release info
+  packageName = extraAttrs.packageName or extraAttrs.name;
+  buildType = "Release";
+  buildPath = "out/${buildType}";
+  libExecPath = "$out/libexec/${packageName}";
+
+  versionRange = min-version: upto-version:
+    let inherit (upstream-info) version;
+        result = versionAtLeast version min-version && versionOlder version upto-version;
+        stable-version = (import ./upstream-info.nix).stable.version;
+    in if versionAtLeast stable-version upto-version
+       then warn "chromium: stable version ${stable-version} is newer than a patchset bounded at ${upto-version}. You can safely delete it."
+            result
+       else result;
+
+  base = rec {
+    name = "${packageName}-unwrapped-${version}";
+    inherit (upstream-info) channel version;
+    inherit packageName buildType buildPath;
+
+    src = upstream-info.main;
+
+    nativeBuildInputs = [
+      ninja which python2Packages.python perl pkgconfig
+      python2Packages.ply python2Packages.jinja2 nodejs
+      gnutar
+    ] ++ optional (versionAtLeast version "83") python2Packages.setuptools
+      ++ optional (versionAtLeast version "84") (xorg.xcbproto.override { python = python2Packages.python; });
+
+    buildInputs = defaultDependencies ++ [
+      nspr nss systemd
+      utillinux alsaLib
+      bison gperf kerberos
+      glib gtk3 dbus-glib
+      libXScrnSaver libXcursor libXtst libGLU libGL
+      pciutils protobuf speechd libXdamage at-spi2-core
+      jre
+      pipewire_0_2
+    ] ++ optional useVaapi libva
+      ++ optional gnomeKeyringSupport libgnome-keyring3
+      ++ optionals gnomeSupport [ gnome.GConf libgcrypt ]
+      ++ optionals cupsSupport [ libgcrypt cups ]
+      ++ optional pulseSupport libpulseaudio
+      ++ optionals useOzone [ libdrm wayland mesa_drivers libxkbcommon ];
+
+    patches = [
+      ./patches/nix_plugin_paths_68.patch
+      ./patches/remove-webp-include-69.patch
+      ./patches/no-build-timestamps.patch
+      ./patches/widevine-79.patch
+      ./patches/dont-use-ANGLE-by-default.patch
+      # Unfortunately, chromium regularly breaks on major updates and
+      # then needs various patches backported in order to be compiled with GCC.
+      # Good sources for such patches and other hints:
+      # - https://gitweb.gentoo.org/repo/gentoo.git/plain/www-client/chromium/
+      # - https://git.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/chromium
+      # - https://github.com/chromium/chromium/search?q=GCC&s=committer-date&type=Commits
+      #
+      # ++ optionals (channel == "dev") [ ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" ) ]
+      # ++ optional (versionRange "68" "72") ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" )
+    ] ++ optionals (useVaapi) [ # Improvements for the VA-API build:
+      ./patches/enable-vdpau-support-for-nvidia.patch # https://aur.archlinux.org/cgit/aur.git/tree/vdpau-support.patch?h=chromium-vaapi
+      ./patches/enable-video-acceleration-on-linux.patch # Can be controlled at runtime (i.e. without rebuilding Chromium)
+    ];
+
+    postPatch = ''
+      # We want to be able to specify where the sandbox is via CHROME_DEVEL_SANDBOX
+      substituteInPlace sandbox/linux/suid/client/setuid_sandbox_host.cc \
+        --replace \
+          'return sandbox_binary;' \
+          'return base::FilePath(GetDevelSandboxPath());'
+
+      substituteInPlace services/audio/audio_sandbox_hook_linux.cc \
+        --replace \
+          '/usr/share/alsa/' \
+          '${alsaLib}/share/alsa/' \
+        --replace \
+          '/usr/lib/x86_64-linux-gnu/gconv/' \
+          '${glibc}/lib/gconv/' \
+        --replace \
+          '/usr/share/locale/' \
+          '${glibc}/share/locale/'
+
+      sed -i -e 's@"\(#!\)\?.*xdg-@"\1${xdg_utils}/bin/xdg-@' \
+        chrome/browser/shell_integration_linux.cc
+
+      sed -i -e '/lib_loader.*Load/s!"\(libudev\.so\)!"${systemd.lib}/lib/\1!' \
+        device/udev_linux/udev?_loader.cc
+
+      sed -i -e '/libpci_loader.*Load/s!"\(libpci\.so\)!"${pciutils}/lib/\1!' \
+        gpu/config/gpu_info_collector_linux.cc
+
+      sed -i -re 's/([^:])\<(isnan *\()/\1std::\2/g' \
+        chrome/browser/ui/webui/engagement/site_engagement_ui.cc
+
+      sed -i -e '/#include/ {
+        i #include <algorithm>
+        :l; n; bl
+      }' gpu/config/gpu_control_list.cc
+
+      # Allow to put extensions into the system-path.
+      sed -i -e 's,/usr,/run/current-system/sw,' chrome/common/chrome_paths.cc
+
+      patchShebangs .
+      # use our own nodejs
+      mkdir -p third_party/node/linux/node-linux-x64/bin
+      ln -s $(which node) third_party/node/linux/node-linux-x64/bin/node
+
+      # remove unused third-party
+      # in third_party/crashpad third_party/zlib contains just a header-adapter
+      for lib in ${toString gnSystemLibraries}; do
+        find -type f -path "*third_party/$lib/*"     \
+            \! -path "*third_party/crashpad/crashpad/third_party/zlib/*"  \
+            \! -path "*third_party/$lib/chromium/*"  \
+            \! -path "*third_party/$lib/google/*"    \
+            \! -path "*base/third_party/icu/*"       \
+            \! -path "*base/third_party/libevent/*"  \
+            \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \
+            -delete
+      done
+    '' + optionalString stdenv.isAarch64 ''
+      substituteInPlace build/toolchain/linux/BUILD.gn \
+        --replace 'toolprefix = "aarch64-linux-gnu-"' 'toolprefix = ""'
+    '' + optionalString stdenv.cc.isClang ''
+      mkdir -p third_party/llvm-build/Release+Asserts/bin
+      ln -s ${stdenv.cc}/bin/clang              third_party/llvm-build/Release+Asserts/bin/clang
+      ln -s ${stdenv.cc}/bin/clang++            third_party/llvm-build/Release+Asserts/bin/clang++
+      ln -s ${llvmPackages.llvm}/bin/llvm-ar    third_party/llvm-build/Release+Asserts/bin/llvm-ar
+    '' + optionalString (versionAtLeast version "84") ''
+      substituteInPlace ui/gfx/x/BUILD.gn \
+        --replace \
+          '/usr/share/xcb' \
+          '${xorg.xcbproto}/share/xcb/'
+    '';
+
+    gnFlags = mkGnFlags (optionalAttrs (versionRange "0" "84") {
+      linux_use_bundled_binutils = false;
+    } // {
+      use_lld = false;
+      use_gold = true;
+      gold_path = "${stdenv.cc}/bin";
+      is_debug = false;
+
+      proprietary_codecs = false;
+      use_sysroot = false;
+      use_gnome_keyring = gnomeKeyringSupport;
+      use_gio = gnomeSupport;
+      # ninja: error: '../../native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-objcopy',
+      # needed by 'nacl_irt_x86_64.nexe', missing and no known rule to make it
+      enable_nacl = false;
+      # Enabling the Widevine component here doesn't affect whether we can
+      # redistribute the chromium package; the Widevine component is either
+      # added later in the wrapped -wv build or downloaded from Google.
+      enable_widevine = true;
+      use_cups = cupsSupport;
+      # Provides the enable-webrtc-pipewire-capturer flag to support Wayland screen capture.
+      rtc_use_pipewire = true;
+
+      treat_warnings_as_errors = false;
+      is_clang = stdenv.cc.isClang;
+      clang_use_chrome_plugins = false;
+      blink_symbol_level = 0;
+      fieldtrial_testing_like_official_build = true;
+
+      # Google API keys, see:
+      #   http://www.chromium.org/developers/how-tos/api-keys
+      # Note: These are for NixOS/nixpkgs use ONLY. For your own distribution,
+      # please get your own set of keys.
+      google_api_key = "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI";
+      google_default_client_id = "404761575300.apps.googleusercontent.com";
+      google_default_client_secret = "9rIFQjfnkykEmqb6FfjJQD1D";
+    } // optionalAttrs proprietaryCodecs {
+      # enable support for the H.264 codec
+      proprietary_codecs = true;
+      enable_hangout_services_extension = true;
+      ffmpeg_branding = "Chrome";
+    } // optionalAttrs useVaapi {
+      use_vaapi = true;
+    } // optionalAttrs pulseSupport {
+      use_pulseaudio = true;
+      link_pulseaudio = true;
+    } // optionalAttrs useOzone {
+      use_ozone = true;
+      ozone_platform_gbm = false;
+      use_xkbcommon = true;
+      use_glib = true;
+      use_gtk = true;
+      use_system_libwayland = true;
+      use_system_minigbm = true;
+      use_system_libdrm = true;
+      system_wayland_scanner_path = "${wayland}/bin/wayland-scanner";
+    } // (extraAttrs.gnFlags or {}));
+
+    configurePhase = ''
+      runHook preConfigure
+
+      # This is to ensure expansion of $out.
+      libExecPath="${libExecPath}"
+      python build/linux/unbundle/replace_gn_files.py \
+        --system-libraries ${toString gnSystemLibraries}
+      ${gnChromium}/bin/gn gen --args=${escapeShellArg gnFlags} out/Release | tee gn-gen-outputs.txt
+
+      # Fail if `gn gen` contains a WARNING.
+      grep -o WARNING gn-gen-outputs.txt && echo "Found gn WARNING, exiting nix build" && exit 1
+
+      runHook postConfigure
+    '';
+
+    # Don't spam warnings about unknown warning options. This is useful because
+    # our Clang is always older than Chromium's and the build logs have a size
+    # of approx. 25 MB without this option (and this saves e.g. 66 %).
+    NIX_CFLAGS_COMPILE = "-Wno-unknown-warning-option";
+
+    buildPhase = let
+      # Build paralelism: on Hydra the build was frequently running into memory
+      # exhaustion, and even other users might be running into similar issues.
+      # -j is halved to avoid memory problems, and -l is slightly increased
+      # so that the build gets slight preference before others
+      # (it will often be on "critical path" and at risk of timing out)
+      buildCommand = target: ''
+        ninja -C "${buildPath}"  \
+          -j$(( ($NIX_BUILD_CORES+1) / 2 )) -l$(( $NIX_BUILD_CORES+1 )) \
+          "${target}"
+        (
+          source chrome/installer/linux/common/installer.include
+          PACKAGE=$packageName
+          MENUNAME="Chromium"
+          process_template chrome/app/resources/manpage.1.in "${buildPath}/chrome.1"
+        )
+      '';
+      targets = extraAttrs.buildTargets or [];
+      commands = map buildCommand targets;
+    in concatStringsSep "\n" commands;
+
+    postFixup = ''
+      # Make sure that libGLESv2 is found by dlopen (if using EGL).
+      chromiumBinary="$libExecPath/$packageName"
+      origRpath="$(patchelf --print-rpath "$chromiumBinary")"
+      patchelf --set-rpath "${libGL}/lib:$origRpath" "$chromiumBinary"
+    '';
+  };
+
+# Remove some extraAttrs we supplied to the base attributes already.
+in stdenv.mkDerivation (base // removeAttrs extraAttrs [
+  "name" "gnFlags" "buildTargets"
+])
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/default.nix b/nixpkgs/pkgs/applications/networking/browsers/chromium/default.nix
new file mode 100644
index 000000000000..2fea779a8f83
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/default.nix
@@ -0,0 +1,217 @@
+{ newScope, config, stdenv, llvmPackages_9, llvmPackages_10
+, makeWrapper, ed
+, glib, gtk3, gnome3, gsettings-desktop-schemas, gn, fetchgit
+, libva ? null
+, pipewire_0_2
+, gcc, nspr, nss, patchelfUnstable, runCommand
+, lib
+
+# package customization
+# Note: enable* flags should not require full rebuilds (i.e. only affect the wrapper)
+, channel ? "stable"
+, gnomeSupport ? false, gnome ? null
+, gnomeKeyringSupport ? false
+, proprietaryCodecs ? true
+, enablePepperFlash ? false
+, enableWideVine ? false
+, useVaapi ? false # Deprecated, use enableVaapi instead!
+, enableVaapi ? false # Disabled by default due to unofficial support and issues on radeon
+, useOzone ? false
+, cupsSupport ? true
+, pulseSupport ? config.pulseaudio or stdenv.isLinux
+, commandLineArgs ? ""
+}:
+
+let
+  llvmPackages = llvmPackages_10;
+  stdenv = llvmPackages.stdenv;
+
+  callPackage = newScope chromium;
+
+  chromium = {
+    inherit stdenv llvmPackages;
+
+    upstream-info = (callPackage ./update.nix {}).getChannel channel;
+
+    mkChromiumDerivation = callPackage ./common.nix ({
+      inherit gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs cupsSupport pulseSupport useOzone;
+      # TODO: Remove after we can update gn for the stable channel (backward incompatible changes):
+      gnChromium = gn.overrideAttrs (oldAttrs: {
+        version = "2020-03-23";
+        src = fetchgit {
+          url = "https://gn.googlesource.com/gn";
+          rev = "5ed3c9cc67b090d5e311e4bd2aba072173e82db9";
+          sha256 = "00y2d35wvqmx9glaqhfb62wdgbfpwr77v0934nnvh9ks71vnsjqy";
+        };
+      });
+    } // lib.optionalAttrs (channel == "dev") {
+      gnChromium = gn.overrideAttrs (oldAttrs: {
+        version = "2020-05-19";
+        src = fetchgit {
+          url = "https://gn.googlesource.com/gn";
+          rev = "d0a6f072070988e7b038496c4e7d6c562b649732";
+          sha256 = "0197msabskgfbxvhzq73gc3wlr3n9cr4bzrhy5z5irbvy05lxk17";
+        };
+      });
+    });
+
+    browser = callPackage ./browser.nix { inherit channel enableWideVine; };
+
+    plugins = callPackage ./plugins.nix {
+      inherit enablePepperFlash;
+    };
+  };
+
+  mkrpath = p: "${lib.makeSearchPathOutput "lib" "lib64" p}:${lib.makeLibraryPath p}";
+  widevineCdm = let upstream-info = chromium.upstream-info; in stdenv.mkDerivation {
+    name = "chrome-widevine-cdm";
+
+    # The .deb file for Google Chrome
+    src = upstream-info.binary;
+
+    nativeBuildInputs = [ patchelfUnstable ];
+
+    phases = [ "unpackPhase" "patchPhase" "installPhase" "checkPhase" ];
+
+    unpackCmd = let
+      widevineCdmPath =
+        if upstream-info.channel == "stable" then
+          "./opt/google/chrome/WidevineCdm"
+        else if upstream-info.channel == "beta" then
+          "./opt/google/chrome-beta/WidevineCdm"
+        else if upstream-info.channel == "dev" then
+          "./opt/google/chrome-unstable/WidevineCdm"
+        else
+          throw "Unknown chromium channel.";
+    in ''
+      # Extract just WidevineCdm from upstream's .deb file
+      ar p "$src" data.tar.xz | tar xJ "${widevineCdmPath}"
+
+      # Move things around so that we don't have to reference a particular
+      # chrome-* directory later.
+      mv "${widevineCdmPath}" ./
+
+      # unpackCmd wants a single output directory; let it take WidevineCdm/
+      rm -rf opt
+    '';
+
+    doCheck = true;
+    checkPhase = ''
+      ! find -iname '*.so' -exec ldd {} + | grep 'not found'
+    '';
+
+    PATCH_RPATH = mkrpath [ gcc.cc glib nspr nss ];
+
+    patchPhase = ''
+      patchelf --set-rpath "$PATCH_RPATH" _platform_specific/linux_x64/libwidevinecdm.so
+    '';
+
+    installPhase = ''
+      mkdir -p $out/WidevineCdm
+      cp -a * $out/WidevineCdm/
+    '';
+
+    meta = {
+      platforms = [ "x86_64-linux" ];
+      license = lib.licenses.unfree;
+    };
+  };
+
+  suffix = if channel != "stable" then "-" + channel else "";
+
+  sandboxExecutableName = chromium.browser.passthru.sandboxExecutableName;
+
+  version = chromium.browser.version;
+
+  # We want users to be able to enableWideVine without rebuilding all of
+  # chromium, so we have a separate derivation here that copies chromium
+  # and adds the unfree WidevineCdm.
+  chromiumWV = let browser = chromium.browser; in if enableWideVine then
+    runCommand (browser.name + "-wv") { version = browser.version; }
+      ''
+        mkdir -p $out
+        cp -a ${browser}/* $out/
+        chmod u+w $out/libexec/chromium
+        cp -a ${widevineCdm}/WidevineCdm $out/libexec/chromium/
+      ''
+    else browser;
+
+  optionalVaapiFlags = if useVaapi # TODO: Remove after 20.09:
+    then throw ''
+      Chromium's useVaapi was replaced by enableVaapi and you don't need to pass
+      "--ignore-gpu-blacklist" anymore (also no rebuilds are required anymore).
+    '' else lib.optionalString
+      (!enableVaapi)
+      "--add-flags --disable-accelerated-video-decode --add-flags --disable-accelerated-video-encode";
+in stdenv.mkDerivation {
+  name = "chromium${suffix}-${version}";
+  inherit version;
+
+  buildInputs = [
+    makeWrapper ed
+
+    # needed for GSETTINGS_SCHEMAS_PATH
+    gsettings-desktop-schemas glib gtk3
+
+    # needed for XDG_ICON_DIRS
+    gnome3.adwaita-icon-theme
+  ];
+
+  outputs = ["out" "sandbox"];
+
+  buildCommand = let
+    browserBinary = "${chromiumWV}/libexec/chromium/chromium";
+    getWrapperFlags = plugin: "$(< \"${plugin}/nix-support/wrapper-flags\")";
+    libPath = stdenv.lib.makeLibraryPath [ libva pipewire_0_2 ];
+
+  in with stdenv.lib; ''
+    mkdir -p "$out/bin"
+
+    eval makeWrapper "${browserBinary}" "$out/bin/chromium" \
+      --add-flags ${escapeShellArg (escapeShellArg commandLineArgs)} \
+      ${optionalVaapiFlags} \
+      ${concatMapStringsSep " " getWrapperFlags chromium.plugins.enabled}
+
+    ed -v -s "$out/bin/chromium" << EOF
+    2i
+
+    if [ -x "/run/wrappers/bin/${sandboxExecutableName}" ]
+    then
+      export CHROME_DEVEL_SANDBOX="/run/wrappers/bin/${sandboxExecutableName}"
+    else
+      export CHROME_DEVEL_SANDBOX="$sandbox/bin/${sandboxExecutableName}"
+    fi
+
+  '' + lib.optionalString (libPath != "") ''
+    # To avoid loading .so files from cwd, LD_LIBRARY_PATH here must not
+    # contain an empty section before or after a colon.
+    export LD_LIBRARY_PATH="\$LD_LIBRARY_PATH\''${LD_LIBRARY_PATH:+:}${libPath}"
+  '' + ''
+
+    # libredirect causes chromium to deadlock on startup
+    export LD_PRELOAD="\$(echo -n "\$LD_PRELOAD" | tr ':' '\n' | grep -v /lib/libredirect\\\\.so$ | tr '\n' ':')"
+
+    export XDG_DATA_DIRS=$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH\''${XDG_DATA_DIRS:+:}\$XDG_DATA_DIRS
+
+    .
+    w
+    EOF
+
+    ln -sv "${chromium.browser.sandbox}" "$sandbox"
+
+    ln -s "$out/bin/chromium" "$out/bin/chromium-browser"
+
+    mkdir -p "$out/share"
+    for f in '${chromium.browser}'/share/*; do # hello emacs */
+      ln -s -t "$out/share/" "$f"
+    done
+  '';
+
+  inherit (chromium.browser) packageName;
+  meta = chromium.browser.meta;
+  passthru = {
+    inherit (chromium) upstream-info browser;
+    mkDerivation = chromium.mkChromiumDerivation;
+    inherit sandboxExecutableName;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/dont-use-ANGLE-by-default.patch b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/dont-use-ANGLE-by-default.patch
new file mode 100644
index 000000000000..9f14a304eb34
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/dont-use-ANGLE-by-default.patch
@@ -0,0 +1,26 @@
+A field trial currently enables the passthrough command decoder, which causes
+gl_factory.cc to try kGLImplementationEGLANGLE first, which causes Chromium to fail
+to load libGLESv2.so on NixOS.  It somehow does not try kGLImplementationDesktopGL,
+and so there is no GL support at all.
+
+Revert to using the validating command decoder, which prevents gl_factory.cc
+from touching allowed_impls, allowing it to successfully use kGLImplementationDesktopGL.
+
+diff --git a/ui/gl/gl_utils.cc b/ui/gl/gl_utils.cc
+index 697cbed5fe2d..8419bdb21a2f 100644
+--- a/ui/gl/gl_utils.cc
++++ b/ui/gl/gl_utils.cc
+@@ -71,9 +71,10 @@ bool UsePassthroughCommandDecoder(const base::CommandLine* command_line) {
+   } else if (switch_value == kCmdDecoderValidatingName) {
+     return false;
+   } else {
+-    // Unrecognized or missing switch, use the default.
+-    return base::FeatureList::IsEnabled(
+-        features::kDefaultPassthroughCommandDecoder);
++    // Ignore the field trial that enables it; disable it until
++    // gl_factory.cc kGLImplementationEGLANGLE issues are sorted
++    // out on NixOS.
++    return false;
+   }
+ }
+ }
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/enable-vdpau-support-for-nvidia.patch b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/enable-vdpau-support-for-nvidia.patch
new file mode 100644
index 000000000000..b5372d1a2556
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/enable-vdpau-support-for-nvidia.patch
@@ -0,0 +1,74 @@
+--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
++++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
+@@ -641,6 +641,7 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers(
+   // |vpp_vaapi_wrapper_| for VaapiPicture to DownloadFromSurface() the VA's
+   // internal decoded frame.
+   if (buffer_allocation_mode_ != BufferAllocationMode::kNone &&
++      buffer_allocation_mode_ != BufferAllocationMode::kWrapVdpau &&
+       !vpp_vaapi_wrapper_) {
+     vpp_vaapi_wrapper_ = VaapiWrapper::Create(
+         VaapiWrapper::kVideoProcess, VAProfileNone,
+@@ -665,7 +666,8 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers(
+     PictureBuffer buffer = buffers[i];
+     buffer.set_size(requested_pic_size_);
+     std::unique_ptr<VaapiPicture> picture = vaapi_picture_factory_->Create(
+-        (buffer_allocation_mode_ == BufferAllocationMode::kNone)
++        ((buffer_allocation_mode_ == BufferAllocationMode::kNone) ||
++         (buffer_allocation_mode_ == BufferAllocationMode::kWrapVdpau))
+             ? vaapi_wrapper_
+             : vpp_vaapi_wrapper_,
+         make_context_current_cb_, bind_image_cb_, buffer);
+@@ -1093,6 +1095,12 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() {
+
+ VaapiVideoDecodeAccelerator::BufferAllocationMode
+ VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
++  // NVIDIA blobs use VDPAU
++  if (VaapiWrapper::GetImplementationType() == VAImplementation::kNVIDIAVDPAU) {
++    LOG(INFO) << "VA-API driver on VDPAU backend";
++    return BufferAllocationMode::kWrapVdpau;
++  }
++
+   // TODO(crbug.com/912295): Enable a better BufferAllocationMode for IMPORT
+   // |output_mode_| as well.
+   if (output_mode_ == VideoDecodeAccelerator::Config::OutputMode::IMPORT)
+@@ -1105,7 +1113,7 @@ VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
+   // depends on the bitstream and sometimes it's not enough to cover the amount
+   // of frames needed by the client pipeline (see b/133733739).
+   // TODO(crbug.com/911754): Enable for VP9 Profile 2.
+-  if (IsGeminiLakeOrLater() &&
++  if (false && IsGeminiLakeOrLater() &&
+       (profile_ == VP9PROFILE_PROFILE0 || profile_ == VP8PROFILE_ANY)) {
+     // Add one to the reference frames for the one being currently egressed, and
+     // an extra allocation for both |client_| and |decoder_|, see
+--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.h
++++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.h
+@@ -204,6 +204,7 @@ class MEDIA_GPU_EXPORT VaapiVideoDecodeAccelerator
+     // Using |client_|s provided PictureBuffers and as many internally
+     // allocated.
+     kNormal,
++    kWrapVdpau,
+   };
+
+   // Decides the concrete buffer allocation mode, depending on the hardware
+--- a/media/gpu/vaapi/vaapi_wrapper.cc
++++ b/media/gpu/vaapi/vaapi_wrapper.cc
+@@ -131,6 +131,9 @@ media::VAImplementation VendorStringToImplementationType(
+   } else if (base::StartsWith(va_vendor_string, "Intel iHD driver",
+                               base::CompareCase::SENSITIVE)) {
+     return media::VAImplementation::kIntelIHD;
++  } else if (base::StartsWith(va_vendor_string, "Splitted-Desktop Systems VDPAU",
++                              base::CompareCase::SENSITIVE)) {
++    return media::VAImplementation::kNVIDIAVDPAU;
+   }
+   return media::VAImplementation::kOther;
+ }
+--- a/media/gpu/vaapi/vaapi_wrapper.h
++++ b/media/gpu/vaapi/vaapi_wrapper.h
+@@ -79,6 +79,7 @@ enum class VAImplementation {
+   kIntelIHD,
+   kOther,
+   kInvalid,
++  kNVIDIAVDPAU,
+ };
+
+ // This class handles VA-API calls and ensures proper locking of VA-API calls
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/enable-video-acceleration-on-linux.patch b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/enable-video-acceleration-on-linux.patch
new file mode 100644
index 000000000000..bd278633f67e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/enable-video-acceleration-on-linux.patch
@@ -0,0 +1,48 @@
+From b2144fd28e09cd52e7a88a62a9d9b54cf9922f9f Mon Sep 17 00:00:00 2001
+From: Michael Weiss <dev.primeos@gmail.com>
+Date: Tue, 14 Apr 2020 14:16:10 +0200
+Subject: [PATCH] Enable accelerated video decode on Linux
+
+This will enable accelerated video decode on Linux by default (i.e.
+without "--ignore-gpu-blacklist"), but on NixOS we'll provide
+"--disable-accelerated-video-decode" and
+"--disable-accelerated-video-encode" by default to avoid regressions
+(e.g. VA-API doesn't work properly for some radeon drivers).
+
+Video acceleration can then be enabled via:
+chromium.override { enableVaapi = true; }
+without rebuilding Chromium.
+---
+ gpu/config/software_rendering_list.json | 16 ----------------
+ 1 file changed, 16 deletions(-)
+
+diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json
+index 22712bdbf38f..a06dd19a50e4 100644
+--- a/gpu/config/software_rendering_list.json
++++ b/gpu/config/software_rendering_list.json
+@@ -336,22 +336,6 @@
+       ]
+     },
+     {
+-      "id": 48,
+-      "description": "Accelerated video decode is unavailable on Linux",
+-      "cr_bugs": [137247, 1032907],
+-      "os": {
+-        "type": "linux"
+-      },
+-      "exceptions": [
+-        {
+-          "machine_model_name": ["Chromecast"]
+-        }
+-      ],
+-      "features": [
+-        "accelerated_video_decode"
+-      ]
+-    },
+-    {
+       "id": 50,
+       "description": "Disable VMware software renderer on older Mesa",
+       "cr_bugs": [145531, 332596, 571899, 629434],
+-- 
+2.11.0
+
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/nix_plugin_paths_68.patch b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/nix_plugin_paths_68.patch
new file mode 100644
index 000000000000..e7aa4f1ea0ac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/nix_plugin_paths_68.patch
@@ -0,0 +1,61 @@
+diff --git a/chrome/common/chrome_paths.cc b/chrome/common/chrome_paths.cc
+index f4e119d..d9775bd 100644
+--- a/chrome/common/chrome_paths.cc
++++ b/chrome/common/chrome_paths.cc
+@@ -68,21 +68,14 @@ static base::LazyInstance<base::FilePath>
+     g_invalid_specified_user_data_dir = LAZY_INSTANCE_INITIALIZER;
+ 
+ // Gets the path for internal plugins.
+-bool GetInternalPluginsDirectory(base::FilePath* result) {
+-#if defined(OS_MACOSX)
+-  // If called from Chrome, get internal plugins from a subdirectory of the
+-  // framework.
+-  if (base::mac::AmIBundled()) {
+-    *result = chrome::GetFrameworkBundlePath();
+-    DCHECK(!result->empty());
+-    *result = result->Append("Internet Plug-Ins");
+-    return true;
+-  }
+-  // In tests, just look in the module directory (below).
+-#endif
+-
+-  // The rest of the world expects plugins in the module directory.
+-  return base::PathService::Get(base::DIR_MODULE, result);
++bool GetInternalPluginsDirectory(base::FilePath* result,
++                                 const std::string& ident) {
++  std::string full_env = std::string("NIX_CHROMIUM_PLUGIN_PATH_") + ident;
++  const char* value = getenv(full_env.c_str());
++  if (value == NULL)
++      return base::PathService::Get(base::DIR_MODULE, result);
++  *result = base::FilePath(value);
++  return true;
+ }
+ 
+ // Gets the path for bundled implementations of components. Note that these
+@@ -272,7 +265,7 @@ bool PathProvider(int key, base::FilePath* result) {
+       create_dir = true;
+       break;
+     case chrome::DIR_INTERNAL_PLUGINS:
+-      if (!GetInternalPluginsDirectory(&cur))
++      if (!GetInternalPluginsDirectory(&cur, "ALL"))
+         return false;
+       break;
+     case chrome::DIR_COMPONENTS:
+@@ -280,7 +273,7 @@ bool PathProvider(int key, base::FilePath* result) {
+         return false;
+       break;
+     case chrome::DIR_PEPPER_FLASH_PLUGIN:
+-      if (!GetInternalPluginsDirectory(&cur))
++      if (!GetInternalPluginsDirectory(&cur, "PEPPERFLASH"))
+         return false;
+       cur = cur.Append(kPepperFlashBaseDirectory);
+       break;
+@@ -358,7 +351,7 @@ bool PathProvider(int key, base::FilePath* result) {
+         cur = cur.DirName();
+       }
+ #else
+-      if (!GetInternalPluginsDirectory(&cur))
++      if (!GetInternalPluginsDirectory(&cur, "PNACL"))
+         return false;
+ #endif
+       cur = cur.Append(FILE_PATH_LITERAL("pnacl"));
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/no-build-timestamps.patch b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/no-build-timestamps.patch
new file mode 100644
index 000000000000..6b788f43d29c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/no-build-timestamps.patch
@@ -0,0 +1,17 @@
+--- chromium-70.0.3538.67/build/compute_build_timestamp.py.orig	2018-11-02 16:00:34.368933077 +0200
++++ chromium-70.0.3538.67/build/compute_build_timestamp.py	2018-11-08 04:06:21.658105129 +0200
+@@ -94,6 +94,14 @@
+       'build_type', help='The type of build', choices=('official', 'default'))
+   args = argument_parser.parse_args()
+ 
++  # I don't trust LASTCHANGE magic, and I definelly want something deterministic here
++  SOURCE_DATE_EPOCH = os.getenv("SOURCE_DATE_EPOCH", None)
++  if SOURCE_DATE_EPOCH is not None:
++    print(SOURCE_DATE_EPOCH)
++    return 0
++  else:
++    raise RuntimeError("SOURCE_DATE_EPOCH not set")
++
+   # The mtime of the revision in build/util/LASTCHANGE is stored in a file
+   # next to it. Read it, to get a deterministic time close to "now".
+   # That date is then modified as described at the top of the file so that
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/remove-webp-include-69.patch b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/remove-webp-include-69.patch
new file mode 100644
index 000000000000..07572cf7ee94
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/remove-webp-include-69.patch
@@ -0,0 +1,11 @@
+--- a/third_party/blink/renderer/platform/image-encoders/image_encoder.cc
++++ b/third_party/blink/renderer/platform/image-encoders/image_encoder.cc
+@@ -13,7 +13,7 @@
+
+ #include "jpeglib.h"  // for JPEG_MAX_DIMENSION
+
+-#include "third_party/libwebp/src/webp/encode.h"  // for WEBP_MAX_DIMENSION
++#define WEBP_MAX_DIMENSION 16383
+
+ namespace blink {
+
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/widevine-79.patch b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/widevine-79.patch
new file mode 100644
index 000000000000..32f0ae2fb5e6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/widevine-79.patch
@@ -0,0 +1,13 @@
+diff --git a/third_party/widevine/cdm/BUILD.gn b/third_party/widevine/cdm/BUILD.gn
+index ed0e2f5208b..5b431a030d5 100644
+--- a/third_party/widevine/cdm/BUILD.gn
++++ b/third_party/widevine/cdm/BUILD.gn
+@@ -14,7 +14,7 @@ buildflag_header("buildflags") {
+ 
+   flags = [
+     "ENABLE_WIDEVINE=$enable_widevine",
+-    "BUNDLE_WIDEVINE_CDM=$bundle_widevine_cdm",
++    "BUNDLE_WIDEVINE_CDM=true",
+     "ENABLE_WIDEVINE_CDM_COMPONENT=$enable_widevine_cdm_component",
+   ]
+ }
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/plugins.nix b/nixpkgs/pkgs/applications/networking/browsers/chromium/plugins.nix
new file mode 100644
index 000000000000..707bf2056f0e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/plugins.nix
@@ -0,0 +1,93 @@
+{ stdenv, gcc
+, jshon
+, glib
+, nspr
+, nss
+, fetchzip
+, patchelfUnstable
+, enablePepperFlash ? false
+
+, upstream-info
+}:
+
+with stdenv.lib;
+
+let
+  mkrpath = p: "${makeSearchPathOutput "lib" "lib64" p}:${makeLibraryPath p}";
+
+  # Generate a shell fragment that emits flags appended to the
+  # final makeWrapper call for wrapping the browser's main binary.
+  #
+  # Note that this is shell-escaped so that only the variable specified
+  # by the "output" attribute is substituted.
+  mkPluginInfo = { output ? "out", allowedVars ? [ output ]
+                 , flags ? [], envVars ? {}
+                 }: let
+    shSearch = ["'"] ++ map (var: "@${var}@") allowedVars;
+    shReplace = ["'\\''"] ++ map (var: "'\"\${${var}}\"'") allowedVars;
+    # We need to triple-escape "val":
+    #  * First because makeWrapper doesn't do any quoting of its arguments by
+    #    itself.
+    #  * Second because it's passed to the makeWrapper call separated by IFS but
+    #    not by the _real_ arguments, for example the Widevine plugin flags
+    #    contain spaces, so they would end up as separate arguments.
+    #  * Third in order to be correctly quoted for the "echo" call below.
+    shEsc = val: "'${replaceStrings ["'"] ["'\\''"] val}'";
+    mkSh = val: "'${replaceStrings shSearch shReplace (shEsc val)}'";
+    mkFlag = flag: ["--add-flags" (shEsc flag)];
+    mkEnvVar = key: val: ["--set" (shEsc key) (shEsc val)];
+    envList = mapAttrsToList mkEnvVar envVars;
+    quoted = map mkSh (flatten ((map mkFlag flags) ++ envList));
+  in ''
+    mkdir -p "''$${output}/nix-support"
+    echo ${toString quoted} > "''$${output}/nix-support/wrapper-flags"
+  '';
+
+  flash = stdenv.mkDerivation rec {
+    pname = "flashplayer-ppapi";
+    version = "32.0.0.387";
+
+    src = fetchzip {
+      url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
+      sha256 = "1igs8nh3zpfcps97ahzh7kknx3rddh6yliig8lxf6jskbpf0qgzf";
+      stripRoot = false;
+    };
+
+    patchPhase = ''
+      chmod +x libpepflashplayer.so
+      patchelf --set-rpath "${mkrpath [ gcc.cc ]}" libpepflashplayer.so
+    '';
+
+    doCheck = true;
+    checkPhase = ''
+      ! find -iname '*.so' -exec ldd {} + | grep 'not found'
+    '';
+
+    installPhase = ''
+      flashVersion="$(
+        "${jshon}/bin/jshon" -F manifest.json -e version -u
+      )"
+
+      install -vD libpepflashplayer.so "$out/lib/libpepflashplayer.so"
+
+      ${mkPluginInfo {
+        allowedVars = [ "out" "flashVersion" ];
+        flags = [
+          "--ppapi-flash-path=@out@/lib/libpepflashplayer.so"
+          "--ppapi-flash-version=@flashVersion@"
+        ];
+      }}
+    '';
+
+    dontStrip = true;
+
+    meta = {
+      license = stdenv.lib.licenses.unfree;
+      maintainers = with stdenv.lib.maintainers; [ taku0 ];
+      platforms = platforms.x86_64;
+    };
+  };
+
+in {
+  enabled = optional enablePepperFlash flash;
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/update.nix b/nixpkgs/pkgs/applications/networking/browsers/chromium/update.nix
new file mode 100644
index 000000000000..6dff17c69ddb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/update.nix
@@ -0,0 +1,271 @@
+let maybePkgs = import ../../../../../. {}; in
+
+{ stdenv     ? maybePkgs.stdenv
+, runCommand ? maybePkgs.runCommand
+, fetchurl   ? maybePkgs.fetchurl
+, writeText  ? maybePkgs.writeText
+, curl       ? maybePkgs.curl
+, cacert     ? maybePkgs.cacert
+, nix        ? maybePkgs.nix
+}:
+
+let
+  inherit (stdenv) lib;
+
+  sources = if builtins.pathExists ./upstream-info.nix
+            then import ./upstream-info.nix
+            else {};
+
+  bucketURL = "https://commondatastorage.googleapis.com/"
+            + "chromium-browser-official";
+
+  mkVerURL = version: "${bucketURL}/chromium-${version}.tar.xz";
+
+  debURL = "https://dl.google.com/linux/chrome/deb/pool/main/g";
+
+  getDebURL = channelName: version: arch: mirror: let
+    packageSuffix = if channelName == "dev" then "unstable" else channelName;
+    packageName = "google-chrome-${packageSuffix}";
+  in "${mirror}/${packageName}/${packageName}_${version}-1_${arch}.deb";
+
+  # Untrusted mirrors, don't try to update from them!
+  debMirrors = [
+    "http://95.31.35.30/chrome/pool/main/g"
+    "http://mirror.pcbeta.com/google/chrome/deb/pool/main/g"
+    "http://repo.fdzh.org/chrome/deb/pool/main/g"
+  ];
+
+in {
+  getChannel = channel: let
+    chanAttrs = builtins.getAttr channel sources;
+  in {
+    inherit channel;
+    inherit (chanAttrs) version;
+
+    main = fetchurl {
+      url = mkVerURL chanAttrs.version;
+      inherit (chanAttrs) sha256;
+    };
+
+    binary = fetchurl (let
+      mkUrls = arch: let
+        mkURLForMirror = getDebURL channel chanAttrs.version arch;
+      in map mkURLForMirror ([ debURL ] ++ debMirrors);
+    in if stdenv.is64bit && chanAttrs ? sha256bin64 then {
+      urls = mkUrls "amd64";
+      sha256 = chanAttrs.sha256bin64;
+    } else if !stdenv.is64bit && chanAttrs ? sha256bin32 then {
+      urls = mkUrls "i386";
+      sha256 = chanAttrs.sha256bin32;
+    } else throw "No Chrome plugins are available for your architecture.");
+  };
+
+  update = let
+    csv2nix = name: src: import (runCommand "${name}.nix" {
+      src = builtins.fetchurl src;
+    } ''
+      esc() { echo "\"$(echo "$1" | sed -e 's/"\\$/\\&/')\""; } # ohai emacs "
+      IFS=, read -r -a headings <<< "$(head -n1 "$src")"
+      echo "[" > "$out"
+      tail -n +2 "$src" | while IFS=, read -r -a line; do
+        echo "  {"
+        for idx in "''${!headings[@]}"; do
+          echo "    $(esc "''${headings[idx]}") = $(esc ''${line[$idx]});"
+        done
+        echo "  }"
+      done >> "$out"
+      echo "]" >> "$out"
+    '');
+
+    channels = lib.fold lib.recursiveUpdate {} (map (attrs: {
+      ${attrs.os}.${attrs.channel} = attrs // {
+        history = let
+          drvName = "omahaproxy-${attrs.os}.${attrs.channel}-info";
+          history = csv2nix drvName "http://omahaproxy.appspot.com/history";
+          cond = h: attrs.os == h.os && attrs.channel == h.channel
+                 && lib.versionOlder h.version attrs.current_version;
+          # Note that this is a *reverse* sort!
+          sorter = a: b: lib.versionOlder b.version a.version;
+          sorted = builtins.sort sorter (lib.filter cond history);
+        in map (lib.flip removeAttrs ["os" "channel"]) sorted;
+        version = attrs.current_version;
+      };
+    }) (csv2nix "omahaproxy-info" "http://omahaproxy.appspot.com/all?csv=1"));
+
+    /*
+      XXX: This is essentially the same as:
+
+        builtins.tryEval (builtins.fetchurl url)
+
+      ... except that tryEval on fetchurl isn't working and doesn't catch
+      errors for fetchurl, so we go for a different approach.
+
+      We only have fixed-output derivations that can have networking access, so
+      we abuse SHA1 and its weaknesses to forge a fixed-output derivation which
+      is not so fixed, because it emits different contents that have the same
+      SHA1 hash.
+
+      Using this method, we can distinguish whether the URL is available or
+      whether it's not based on the actual content.
+
+      So let's use tryEval as soon as it's working with fetchurl in Nix.
+    */
+    tryFetch = url: let
+      # SHA1 hash collisions from https://shattered.io/static/shattered.pdf:
+      collisions = runCommand "sha1-collisions" {
+        outputs = [ "out" "good" "bad" ];
+        base64 = ''
+          QlpoOTFBWSZTWbL5V5MABl///////9Pv///v////+/////HDdK739/677r+W3/75rUNr4
+          Aa/AAAAAAACgEVTRtQDQAaA0AAyGmjTQGmgAAANGgAaMIAYgGgAABo0AAAAAADQAIAGQ0
+          MgDIGmjQA0DRk0AaMQ0DQAGIANGgAAGRoNGQMRpo0GIGgBoGQAAIAGQ0MgDIGmjQA0DRk
+          0AaMQ0DQAGIANGgAAGRoNGQMRpo0GIGgBoGQAAIAGQ0MgDIGmjQA0DRk0AaMQ0DQAGIAN
+          GgAAGRoNGQMRpo0GIGgBoGQAAIAGQ0MgDIGmjQA0DRk0AaMQ0DQAGIANGgAAGRoNGQMRp
+          o0GIGgBoGQAABVTUExEZATTICnkxNR+p6E09JppoyamjGhkm0ammIyaekbUejU9JiGnqZ
+          qaaDxJ6m0JkZMQ2oaYmJ6gxqMyE2TUzJqfItligtJQJfYbl9Zy9QjQuB5mHQRdSSXCCTH
+          MgmSDYmdOoOmLTBJWiCpOhMQYpQlOYpJjn+wQUJSTCEpOMekaFaaNB6glCC0hKEJdHr6B
+          mUIHeph7YxS8WJYyGwgWnMTFJBDFSxSCCYljiEk7HZgJzJVDHJxMgY6tCEIIWgsKSlSZ0
+          S8GckoIIF+551Ro4RCw260VCEpWJSlpWx/PMrLyVoyhWMAneDilBcUIeZ1j6NCkus0qUC
+          Wnahhk5KT4GpWMh3vm2nJWjTL9Qg+84iExBJhNKpbV9tvEN265t3fu/TKkt4rXFTsV+Nc
+          upJXhOhOhJMQQktrqt4K8mSh9M2DAO2X7uXGVL9YQxUtzQmS7uBndL7M6R7vX869VxqPu
+          renSuHYNq1yTXOfNWLwgvKlRlFYqLCs6OChDp0HuTzCWscmGudLyqUuwVGG75nmyZhKpJ
+          yOE/pOZyHyrZxGM51DYIN+Jc8yVJgAykxKCEtW55MlfudLg3KG6TtozalunXrroSxUpVL
+          StWrWLFihMnVpkyZOrQnUrE6xq1CGtJlbAb5ShMbV1CZgqlKC0wCFCpMmUKSEkvFLaZC8
+          wHOCVAlvzaJQ/T+XLb5Dh5TNM67p6KZ4e4ZSGyVENx2O27LzrTIteAreTkMZpW95GS0CE
+          JYhMc4nToTJ0wQhKEyddaLb/rTqmgJSlkpnALxMhlNmuKEpkEkqhKUoEq3SoKUpIQcDgW
+          lC0rYahMmLuPQ0fHqZaF4v2W8IoJ2EhMhYmSw7qql27WJS+G4rUplToFi2rSv0NSrVvDU
+          pltQ8Lv6F8pXyxmFBSxiLSxglNC4uvXVKmAtusXy4YXGX1ixedEvXF1aX6t8adYnYCpC6
+          rW1ZzdZYlCCxKEv8vpbqdSsXl8v1jCQv0KEPxPTa/5rtWSF1dSgg4z4KjfIMNtgwWoWLE
+          sRhKxsSA9ji7V5LRPwtumeQ8V57UtFSPIUmtQdOQfseI2Ly1DMtk4Jl8n927w34zrWG6P
+          i4jzC82js/46Rt2IZoadWxOtMInS2xYmcu8mOw9PLYxQ4bdfFw3ZPf/g2pzSwZDhGrZAl
+          9lqky0W+yeanadC037xk496t0Dq3ctfmqmjgie8ln9k6Q0K1krb3dK9el4Xsu44LpGcen
+          r2eQZ1s1IhOhnE56WnXf0BLWn9Xz15fMkzi4kpVxiTKGEpffErEEMvEeMZhUl6yD1SdeJ
+          YbxzGNM3ak2TAaglLZlDCVnoM6wV5DRrycwF8Zh/fRsdmhkMfAO1duwknrsFwrzePWeMw
+          l107DWzymxdQwiSXx/lncnn75jL9mUzw2bUDqj20LTgtawxK2SlQg1CCZDQMgSpEqLjRM
+          sykM9zbSIUqil0zNk7Nu+b5J0DKZlhl9CtpGKgX5uyp0idoJ3we9bSrY7PupnUL5eWiDp
+          V5mmnNUhOnYi8xyClkLbNmAXyoWk7GaVrM2umkbpqHDzDymiKjetgzTocWNsJ2E0zPcfh
+          t46J4ipaXGCfF7fuO0a70c82bvqo3HceIcRlshgu73seO8BqlLIap2z5jTOY+T2ucCnBt
+          Atva3aHdchJg9AJ5YdKHz7LoA3VKmeqxAlFyEnQLBxB2PAhAZ8KvmuR6ELXws1Qr13Nd1
+          i4nsp189jqvaNzt+0nEnIaniuP1+/UOZdyfoZh57ku8sYHKdvfW/jYSUks+0rK+qtte+p
+          y8jWL9cOJ0fV8rrH/t+85/p1z2N67p/ZsZ3JmdyliL7lrNxZUlx0MVIl6PxXOUuGOeArW
+          3vuEvJ2beoh7SGyZKHKbR2bBWO1d49JDIcVM6lQtu9UO8ec8pOnXmkcponBPLNM2CwZ9k
+          NC/4ct6rQkPkQHMcV/8XckU4UJCy+VeTA==
+        '';
+      } ''
+        echo "$base64" | base64 -d | tar xj
+        mv good.pdf "$good"
+        mv bad.pdf "$bad"
+        touch "$out"
+      '';
+
+      cacheVal = let
+        urlHash = builtins.hashString "sha256" url;
+        timeSlice = builtins.currentTime / 600;
+      in "${urlHash}-${toString timeSlice}";
+
+    in {
+      success = import (runCommand "check-success" {
+        result = stdenv.mkDerivation {
+          name = "tryfetch-${cacheVal}";
+          inherit url;
+
+          outputHash = "d00bbe65d80f6d53d5c15da7c6b4f0a655c5a86a";
+          outputHashMode = "flat";
+          outputHashAlgo = "sha1";
+
+          nativeBuildInputs = [ curl ];
+          preferLocalBuild = true;
+
+          inherit (collisions) good bad;
+
+          buildCommand = ''
+            if SSL_CERT_FILE="${cacert}/etc/ssl/certs/ca-bundle.crt" \
+               curl -s -L -f -I "$url" > /dev/null; then
+              cp "$good" "$out"
+            else
+              cp "$bad" "$out"
+            fi
+          '';
+
+          impureEnvVars = lib.fetchers.proxyImpureEnvVars;
+        };
+        inherit (collisions) good;
+      } ''
+        if cmp -s "$result" "$good"; then
+          echo true > "$out"
+        else
+          echo false > "$out"
+        fi
+      '');
+      value = builtins.fetchurl url;
+    };
+
+    fetchLatest = channel: let
+      result = tryFetch (mkVerURL channel.version);
+    in if result.success then result.value else fetchLatest (channel // {
+      version = if channel.history != []
+                then (lib.head channel.history).version
+                else throw "Unfortunately there's no older version than " +
+                           "${channel.version} available for channel " +
+                           "${channel.channel} on ${channel.os}.";
+      history = lib.tail channel.history;
+    });
+
+    getHash = path: import (runCommand "gethash.nix" {
+      inherit path;
+      nativeBuildInputs = [ nix ];
+    } ''
+      sha256="$(nix-hash --flat --base32 --type sha256 "$path")"
+      echo "\"$sha256\"" > "$out"
+    '');
+
+    isLatest = channel: version: let
+      ourVersion = sources.${channel}.version or null;
+    in if ourVersion == null then false
+       else lib.versionOlder version sources.${channel}.version
+         || version == sources.${channel}.version;
+
+    # We only support GNU/Linux right now.
+    linuxChannels = let
+      genLatest = channelName: channel: let
+        newUpstream = {
+          inherit (channel) version;
+          sha256 = getHash (fetchLatest channel);
+        };
+        keepOld = let
+          oldChannel = sources.${channelName};
+        in {
+          inherit (oldChannel) version sha256;
+        } // lib.optionalAttrs (oldChannel ? sha256bin32) {
+          inherit (oldChannel) sha256bin32;
+        } // lib.optionalAttrs (oldChannel ? sha256bin64) {
+          inherit (oldChannel) sha256bin64;
+        };
+      in if isLatest channelName channel.version then keepOld else newUpstream;
+    in lib.mapAttrs genLatest channels.linux;
+
+    getLinuxFlash = channelName: channel: let
+      inherit (channel) version;
+      fetchArch = arch: tryFetch (getDebURL channelName version arch debURL);
+      packages = lib.genAttrs ["i386" "amd64"] fetchArch;
+      isNew = arch: attr: !(builtins.hasAttr attr channel)
+                       && packages.${arch}.success;
+    in channel // lib.optionalAttrs (isNew "i386" "sha256bin32") {
+      sha256bin32 = getHash (packages.i386.value);
+    } // lib.optionalAttrs (isNew "amd64" "sha256bin64") {
+      sha256bin64 = getHash (packages.amd64.value);
+    };
+
+    newChannels = lib.mapAttrs getLinuxFlash linuxChannels;
+
+    dumpAttrs = indent: attrs: let
+      mkVal = val: if lib.isAttrs val then dumpAttrs (indent + 1) val
+                   else "\"${lib.escape ["$" "\\" "\""] (toString val)}\"";
+      mkIndent = level: lib.concatStrings (builtins.genList (_: "  ") level);
+      mkAttr = key: val: "${mkIndent (indent + 1)}${key} = ${mkVal val};\n";
+      attrLines = lib.mapAttrsToList mkAttr attrs;
+    in "{\n" + (lib.concatStrings attrLines) + (mkIndent indent) + "}";
+  in writeText "chromium-new-upstream-info.nix" ''
+    # This file is autogenerated from update.sh in the same directory.
+    ${dumpAttrs 0 newChannels}
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/update.sh b/nixpkgs/pkgs/applications/networking/browsers/chromium/update.sh
new file mode 100755
index 000000000000..ea67a62c107a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/update.sh
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+cd "$(dirname "$0")"
+sp="$(nix-build --builders "" -Q --no-out-link update.nix -A update)"
+cat "$sp" > upstream-info.nix
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.nix b/nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.nix
new file mode 100644
index 000000000000..65dda4931422
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.nix
@@ -0,0 +1,18 @@
+# This file is autogenerated from update.sh in the same directory.
+{
+  beta = {
+    sha256 = "0wsqxq8xxcafmjxsjkagysrcbr6qryiyqn6m3ysp256aam7z3d88";
+    sha256bin64 = "03jff1sdv05hbn37cw0ij0r4rils0q11lnnhxg52igg633jzwyc1";
+    version = "84.0.4147.45";
+  };
+  dev = {
+    sha256 = "16rmzyzjmxmhmr5yqbzqbwf5sq94iqcwlm04fkafiwcycd17nyhs";
+    sha256bin64 = "0wjmc1wdmwiq9d1f5gk4c9jkj1p116kaz9nb0hvhjf01iv07xl2m";
+    version = "85.0.4168.2";
+  };
+  stable = {
+    sha256 = "0bvy17ymlih87n4ymnzvyn0m34ghmr1yasvy7gxv02qbw6i57lfg";
+    sha256bin64 = "00hjr5y0cczs6h2pxrigpmjiv24456948v32q7mr7x5ysr5kxpn6";
+    version = "83.0.4103.106";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/dillo/default.nix b/nixpkgs/pkgs/applications/networking/browsers/dillo/default.nix
new file mode 100644
index 000000000000..fa1fa76340c3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/dillo/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl
+, fltk
+, openssl
+, libjpeg, libpng
+, perl
+, libXcursor, libXi, libXinerama }:
+
+stdenv.mkDerivation rec {
+  version = "3.0.5";
+  pname = "dillo";
+
+  src = fetchurl {
+    url = "https://www.dillo.org/download/${pname}-${version}.tar.bz2";
+    sha256 = "12ql8n1lypv3k5zqgwjxlw1md90ixz3ag6j1gghfnhjq3inf26yv";
+  };
+
+  buildInputs = with stdenv.lib;
+  [ perl fltk openssl libjpeg libpng libXcursor libXi libXinerama ];
+
+  configureFlags = [ "--enable-ssl" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.dillo.org/";
+    description = "A fast graphical web browser with a small footprint";
+    longDescription = ''
+      Dillo is a small, fast web browser, tailored for older machines.
+    '';
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/elinks/default.nix b/nixpkgs/pkgs/applications/networking/browsers/elinks/default.nix
new file mode 100644
index 000000000000..985497a095cb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/elinks/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchurl, ncurses, xlibsWrapper, bzip2, zlib, openssl
+, gpm
+, # Incompatible licenses, LGPLv3 - GPLv2
+  enableGuile        ? false,                                         guile ? null
+, enablePython       ? false,                                         python ? null
+, enablePerl         ? (stdenv.hostPlatform == stdenv.buildPlatform), perl ? null
+, enableSpidermonkey ? (stdenv.hostPlatform == stdenv.buildPlatform), spidermonkey ? null
+}:
+
+assert enableGuile -> guile != null;
+assert enablePython -> python != null;
+
+stdenv.mkDerivation {
+  name = "elinks-0.12pre6";
+
+  src = fetchurl {
+    url = "http://elinks.or.cz/download/elinks-0.12pre6.tar.bz2";
+    sha256 = "1nnakbi01g7yd3zqwprchh5yp45br8086b0kbbpmnclabcvlcdiq";
+  };
+
+  patches = [
+    ./gc-init.patch
+    ./openssl-1.1.patch
+  ];
+
+  buildInputs = [ ncurses xlibsWrapper bzip2 zlib openssl spidermonkey gpm ]
+    ++ stdenv.lib.optional enableGuile guile
+    ++ stdenv.lib.optional enablePython python
+    ++ stdenv.lib.optional enablePerl perl
+    ;
+
+  configureFlags = [
+    "--enable-finger"
+    "--enable-html-highlight"
+    "--enable-gopher"
+    "--enable-cgi"
+    "--enable-bittorrent"
+    "--enable-nntp"
+    "--with-openssl=${openssl.dev}"
+    "--with-bzip2=${bzip2.dev}"
+  ] ++ stdenv.lib.optional enableGuile        "--with-guile"
+    ++ stdenv.lib.optional enablePython       "--with-python"
+    ++ stdenv.lib.optional enablePerl         "--with-perl"
+    ++ stdenv.lib.optional enableSpidermonkey "--with-spidermonkey=${spidermonkey}"
+    ;
+
+  meta = {
+    description = "Full-featured text-mode web browser";
+    homepage = "http://elinks.or.cz";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/elinks/gc-init.patch b/nixpkgs/pkgs/applications/networking/browsers/elinks/gc-init.patch
new file mode 100644
index 000000000000..de06f563d6e6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/elinks/gc-init.patch
@@ -0,0 +1,17 @@
+Fix libgc initialization in the presence of Guile 2.0.
+
+--- elinks-0.12pre5/src/main/main.c	2009-07-07 14:23:17.000000000 +0200
++++ elinks-0.12pre5/src/main/main.c	2011-04-28 23:20:15.000000000 +0200
+@@ -339,6 +339,11 @@ int
+ main(int argc, char *argv[])
+ {
+ #ifdef CONFIG_GC
++	/* Guile 2.x uses libgc too and it initializes it this way, so we
++	 * must make sure to initialize it the same way, or it will just
++	 * segfault.  */
++	GC_all_interior_pointers = 0;
++
+ 	GC_INIT();
+ 	GC_set_warn_proc(gc_warning);
+ #endif
+
diff --git a/nixpkgs/pkgs/applications/networking/browsers/elinks/openssl-1.1.patch b/nixpkgs/pkgs/applications/networking/browsers/elinks/openssl-1.1.patch
new file mode 100644
index 000000000000..22792b6c0790
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/elinks/openssl-1.1.patch
@@ -0,0 +1,51 @@
+diff --git a/src/network/ssl/socket.c b/src/network/ssl/socket.c
+index 45b4b4a8..0385a431 100644
+--- a/src/network/ssl/socket.c
++++ b/src/network/ssl/socket.c
+@@ -67,7 +67,9 @@ static void
+ ssl_set_no_tls(struct socket *socket)
+ {
+ #ifdef CONFIG_OPENSSL
+-	((ssl_t *) socket->ssl)->options |= SSL_OP_NO_TLSv1;
++#ifdef SSL_OP_NO_TLSv1
++	SSL_set_options((ssl_t *)socket->ssl, SSL_OP_NO_TLSv1);
++#endif
+ #elif defined(CONFIG_GNUTLS)
+ 	{
+ 		/* GnuTLS does not support SSLv2 because it is "insecure".
+@@ -145,9 +147,11 @@ ssl_connect(struct socket *socket)
+ 		}
+ 
+ 		if (client_cert) {
+-			SSL_CTX *ctx = ((SSL *) socket->ssl)->ctx;
++			SSL_CTX *ctx = SSL_get_SSL_CTX((SSL *) socket->ssl);
+ 
+-			SSL_CTX_use_certificate_chain_file(ctx, client_cert);
++			SSL_CTX_use_certificate_chain_file(
++					(SSL *) socket->ssl,
++					client_cert);
+ 			SSL_CTX_use_PrivateKey_file(ctx, client_cert,
+ 						    SSL_FILETYPE_PEM);
+ 		}
+diff --git a/src/network/ssl/ssl.c b/src/network/ssl/ssl.c
+index c008121d..c06a80a7 100644
+--- a/src/network/ssl/ssl.c
++++ b/src/network/ssl/ssl.c
+@@ -50,11 +50,16 @@ init_openssl(struct module *module)
+ 	 * cannot initialize the PRNG and so every attempt to use SSL fails.
+ 	 * It's actually an OpenSSL FAQ, and according to them, it's up to the
+ 	 * application coders to seed the RNG. -- William Yodlowsky */
+-	if (RAND_egd(RAND_file_name(f_randfile, sizeof(f_randfile))) < 0) {
++	RAND_file_name(f_randfile, sizeof(f_randfile));
++#ifdef HAVE_RAND_EGD
++	if (RAND_egd(f_randfile) < 0) {
+ 		/* Not an EGD, so read and write to it */
++#endif
+ 		if (RAND_load_file(f_randfile, -1))
+ 			RAND_write_file(f_randfile);
++#ifdef HAVE_RAND_EGD
+ 	}
++#endif
+ 
+ 	SSLeay_add_ssl_algorithms();
+ 	context = SSL_CTX_new(SSLv23_client_method());
diff --git a/nixpkgs/pkgs/applications/networking/browsers/eolie/default.nix b/nixpkgs/pkgs/applications/networking/browsers/eolie/default.nix
new file mode 100644
index 000000000000..cfccacf1ae08
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/eolie/default.nix
@@ -0,0 +1,67 @@
+{ stdenv, fetchgit, meson, ninja, pkgconfig
+, python3, gtk3, libsecret, gst_all_1, webkitgtk
+, glib-networking, gtkspell3, hunspell, desktop-file-utils
+, gobject-introspection, wrapGAppsHook }:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "eolie";
+  version = "0.9.63";
+
+  format = "other";
+  doCheck = false;
+
+  src = fetchgit {
+    url = "https://gitlab.gnome.org/World/eolie";
+    rev = "refs/tags/${version}";
+    fetchSubmodules = true;
+    sha256 = "0z8gcfg7i842rr5p8r3vqa31kf7nnj1yv3afax3jzf4zbnhb8wm0";
+  };
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    gobject-introspection
+    meson
+    ninja
+    pkgconfig
+    wrapGAppsHook
+  ];
+
+  buildInputs = with gst_all_1; [
+    glib-networking
+    gobject-introspection
+    gst-libav
+    gst-plugins-base
+    gst-plugins-ugly
+    gstreamer
+    gtk3
+    gtkspell3
+    hunspell
+    libsecret
+    webkitgtk
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    beautifulsoup4
+    pycairo
+    pygobject3
+    python-dateutil
+  ];
+
+  postPatch = ''
+    chmod +x meson_post_install.py
+    patchShebangs meson_post_install.py
+  '';
+
+  preFixup = ''
+    buildPythonPath "$out $propagatedBuildInputs"
+    patchPythonScript "$out/libexec/eolie-sp"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A new GNOME web browser";
+    homepage = "https://wiki.gnome.org/Apps/Eolie";
+    license  = licenses.gpl3Plus;
+    maintainers = with maintainers; [ samdroid-apps worldofpeace ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/ephemeral/default.nix b/nixpkgs/pkgs/applications/networking/browsers/ephemeral/default.nix
new file mode 100644
index 000000000000..69e8179489cf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/ephemeral/default.nix
@@ -0,0 +1,70 @@
+{ stdenv
+, fetchFromGitHub
+, desktop-file-utils
+, vala
+, gettext
+, glib
+, gtk3
+, libgee
+, libdazzle
+, meson
+, ninja
+, pantheon
+, pkgconfig
+, python3
+, webkitgtk
+, wrapGAppsHook
+, glib-networking
+}:
+
+stdenv.mkDerivation rec {
+  pname = "ephemeral";
+  version = "6.4.1";
+
+  src = fetchFromGitHub {
+    owner = "cassidyjames";
+    repo = "ephemeral";
+    rev = version;
+    sha256 = "1lzcwaczh601kwbx7fzg32nrzlg67asby7p86qy10qz86xf4g608";
+  };
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    gettext
+    meson
+    ninja
+    vala
+    pkgconfig
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    glib-networking
+    gtk3
+    libdazzle
+    libgee
+    pantheon.granite
+    webkitgtk
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "The always-incognito web browser";
+    homepage = "https://github.com/cassidyjames/ephemeral";
+    maintainers = with maintainers; [ xiorcale ] ++ pantheon.maintainers;
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/falkon/default.nix b/nixpkgs/pkgs/applications/networking/browsers/falkon/default.nix
new file mode 100644
index 000000000000..f9e814a0941b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/falkon/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, mkDerivation, lib, fetchFromGitHub
+, cmake, extra-cmake-modules, pkgconfig, qmake
+, libpthreadstubs, libxcb, libXdmcp
+, qtsvg, qttools, qtwebengine, qtx11extras
+, qtwayland, wrapQtAppsHook
+, kwallet
+}:
+
+mkDerivation rec {
+  pname = "falkon";
+  version = "3.1.0";
+
+  src = fetchFromGitHub {
+    owner  = "KDE";
+    repo   = "falkon";
+    rev    = "v${version}";
+    sha256 = "1w64slh9wpcfi4v7ds9wci1zvwh0dh787ndpi6hd4kmdgnswvsw7";
+  };
+
+  preConfigure = ''
+    export NONBLOCK_JS_DIALOGS=true
+    export KDE_INTEGRATION=true
+    export GNOME_INTEGRATION=false
+    export FALKON_PREFIX=$out
+  '';
+
+  buildInputs = [
+    libpthreadstubs libxcb libXdmcp
+    qtsvg qttools qtwebengine qtx11extras
+    kwallet
+  ] ++ lib.optionals stdenv.isLinux [ qtwayland ];
+
+  nativeBuildInputs = [
+    cmake
+    extra-cmake-modules
+    pkgconfig
+    qmake
+    qttools
+    wrapQtAppsHook
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "QtWebEngine based cross-platform web browser";
+    homepage    = "https://community.kde.org/Incubator/Projects/Falkon";
+    license     = licenses.gpl3;
+    maintainers = with maintainers; [ peterhoeg ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix
new file mode 100644
index 000000000000..601e4a77db5b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix
@@ -0,0 +1,965 @@
+{
+  version = "78.0b2";
+  sources = [
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/ach/firefox-78.0b2.tar.bz2";
+      locale = "ach";
+      arch = "linux-x86_64";
+      sha512 = "f70d001f2415f46f0a2fddb7a3de19d0b4be6fb185b1e4e875bb3f374b9e73f65369117b197ddeea7cea72bf8993984ff166d0a58dd9fcea1a555db19df242af";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/af/firefox-78.0b2.tar.bz2";
+      locale = "af";
+      arch = "linux-x86_64";
+      sha512 = "9376bfa53068581a4bcbbf2fa7fe946d3ae006770edef1060f82b0c1722c90712c65cd86e89292c03167bebbe3e67c5b3215b88e11681c723f430470f84e685c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/an/firefox-78.0b2.tar.bz2";
+      locale = "an";
+      arch = "linux-x86_64";
+      sha512 = "51b4294f4ecd8716b875060b219af558df8298113c487f24a23c0e598ef7c5516fdab9a888022c4ad6679efdf0cd86cdb601179c146e6b97ccd332d22f0d08a6";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/ar/firefox-78.0b2.tar.bz2";
+      locale = "ar";
+      arch = "linux-x86_64";
+      sha512 = "4fc9a968ffaa96019819603ab9788ef0580f43da222c899c1af68db2e8f4e9d056356ea99d27481bb9b7eb451504bbe31fb857bd511d1862cb366ad4177616e2";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/ast/firefox-78.0b2.tar.bz2";
+      locale = "ast";
+      arch = "linux-x86_64";
+      sha512 = "c70026f3a7ec4572750c01df1d7ab5859afd91dd12b242534c5afbfeaf99dfe2585655d5d87d861f5211cef6cf67a0ab177190adcfca0697a89c7a6f7de022c4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/az/firefox-78.0b2.tar.bz2";
+      locale = "az";
+      arch = "linux-x86_64";
+      sha512 = "005b79149215e2f85851900e08ffb1214f8b100a0a1bcf73365115769f8744e687f9b0ff8500a40cc48dc53cb203d33b757153266157cda3406532e5a1cb0c5a";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/be/firefox-78.0b2.tar.bz2";
+      locale = "be";
+      arch = "linux-x86_64";
+      sha512 = "11e1ec1146b0688ccadf1c9ce4c219a722533ecd00a3df828e0519c2b49bdb66280aee053254fecd00fc90e0d577de167ea3c1e146e2f9c351b9bfe4756c21eb";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/bg/firefox-78.0b2.tar.bz2";
+      locale = "bg";
+      arch = "linux-x86_64";
+      sha512 = "4a8cc34e0a59d9000b62181461633863583c2f35e50dd7e2de8307b0d537e0f3b439112b2879a95c9a4341a01b361971f0160abd9409be1f4169cad44c3c3825";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/bn/firefox-78.0b2.tar.bz2";
+      locale = "bn";
+      arch = "linux-x86_64";
+      sha512 = "8330315eb21da9da68840bfa64e8f4a150fd4df5e12d10ebd504f38dacab17cf43a246c10cd77ccb6fafbd8f4094d1f6ede53b623308fae90e161d4cf86e6fe6";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/br/firefox-78.0b2.tar.bz2";
+      locale = "br";
+      arch = "linux-x86_64";
+      sha512 = "cfd67e67af7d97f0bbae051b3c366fba48a09ec4615fa4ff178bc12610962952dd2584916df5a76e52a5f575fd4060e473ff4a2ccb63322f8cb8ed1a351b5a94";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/bs/firefox-78.0b2.tar.bz2";
+      locale = "bs";
+      arch = "linux-x86_64";
+      sha512 = "e4781c53f1eeae10b6af48c4841a2ecff7f82006ecdea50b3afd40d000af3d4d89806a5372feb13c5d44b04c0c7dca32a0ca6f2d9a138b393569a9f1d96d572c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/ca-valencia/firefox-78.0b2.tar.bz2";
+      locale = "ca-valencia";
+      arch = "linux-x86_64";
+      sha512 = "9dc0395dd7f7e2c704a77deb4823882e1ea7c9ccc38bc49da4c906e70a009d912afb0cf05359d1f757b4591243091adc6890caaa85ee15cf1b2a26d2245cae58";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/ca/firefox-78.0b2.tar.bz2";
+      locale = "ca";
+      arch = "linux-x86_64";
+      sha512 = "118980cb81ac4d84d456675db91d61ea54a35ad4796acc59434cfe294fd1e0355c1ee92a73de867b18ae04972a28d849d8ed4c8feb5dd6bacd1066175ae3968a";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/cak/firefox-78.0b2.tar.bz2";
+      locale = "cak";
+      arch = "linux-x86_64";
+      sha512 = "47f85a0a6dd1c8540abdb017de664577d9ca79da8057c26b84045fb2ae1fa3b03dafb6c067c9bfe485e0d208d114449ac3cc02274ffef6e80affde8c2ec0c530";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/cs/firefox-78.0b2.tar.bz2";
+      locale = "cs";
+      arch = "linux-x86_64";
+      sha512 = "0a51c2fbd9ea337487073b7c6e4fe616762019682b91cb9513f1a8a8436ec73f2c1175ee3fd66ce81084d0122f3f550fb49c5d91ac461bb6f2ac47d29dd69152";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/cy/firefox-78.0b2.tar.bz2";
+      locale = "cy";
+      arch = "linux-x86_64";
+      sha512 = "aa795f346fe87ac8afbca19add1bcf6aaacdf051323e4dbe8f04fa83c27444d9814cd4b7ae169390fbe3c3987deed14e453f45800393c64d896b8607af05b65b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/da/firefox-78.0b2.tar.bz2";
+      locale = "da";
+      arch = "linux-x86_64";
+      sha512 = "80796ffe89d9dd15b354015585dd722da3047db5b8b15fb380f7566fd99792959133a100bebe7d4b77ce5dfa710117fab61f5f5d0569eae88284138718e5fa63";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/de/firefox-78.0b2.tar.bz2";
+      locale = "de";
+      arch = "linux-x86_64";
+      sha512 = "a75dea0908d83630e2df0991250102fc8d3148644005e70e31a15cc626d189735565e49021de9ed766419873adcded2086186a520b6edd8c8f753710381e55e6";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/dsb/firefox-78.0b2.tar.bz2";
+      locale = "dsb";
+      arch = "linux-x86_64";
+      sha512 = "729e10b88c59a24b4d838b3888ed6ba910e28199211df046c1f09d68b19b5547e5e9953c131118fda4c302b23b09a5a8d6a78a6e220207701590d815af74097e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/el/firefox-78.0b2.tar.bz2";
+      locale = "el";
+      arch = "linux-x86_64";
+      sha512 = "862377ff91054392814f851da646f18a2e485753fce3338411fa590eb461100d94f5b9926fc97848e38d4d1715a8cbd82b87033575daf2e3cff00bddb5c7f165";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/en-CA/firefox-78.0b2.tar.bz2";
+      locale = "en-CA";
+      arch = "linux-x86_64";
+      sha512 = "5a02d99dad00e69f47117f41a0b5f48b3a52d64b1595f9c8cc13086ed0db67c7f9debee30c071140d633821fd42f588430bd8ef93a16bb80f0def1f965da7135";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/en-GB/firefox-78.0b2.tar.bz2";
+      locale = "en-GB";
+      arch = "linux-x86_64";
+      sha512 = "a8fefe63ff03015f945d45294d20954808488bbbb8f28629ac0bd2309500f64b6c766a1c75cc2b340f65bb511d1a50516097ac82d7bc2f3e7f82ae88789aeb91";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/en-US/firefox-78.0b2.tar.bz2";
+      locale = "en-US";
+      arch = "linux-x86_64";
+      sha512 = "73df2d07120716b9e25028f8fc46c0e0e671b6ae1b131f9045049c709a1d678f9227d882ebe2f496cf0dfb71ae7bdab4185015728d1bd8e2b3661acf74ee1573";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/eo/firefox-78.0b2.tar.bz2";
+      locale = "eo";
+      arch = "linux-x86_64";
+      sha512 = "835944b50e3005cfa69c8c0aa0644d76ad2f953d1b01be6d019423a276f8ba5abc39cad0393356029f5bfd4d2edf6b94c653a1590017eaa4cd206161e3513350";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/es-AR/firefox-78.0b2.tar.bz2";
+      locale = "es-AR";
+      arch = "linux-x86_64";
+      sha512 = "7395feba72406eb9888a59587674e1ad0041fb8339fef29f2bf136a7a7a54aeeb082e9be897b2137ee2f48bb09c844ed153213393d0492b05b93ec13fb9852cc";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/es-CL/firefox-78.0b2.tar.bz2";
+      locale = "es-CL";
+      arch = "linux-x86_64";
+      sha512 = "ec654f43750239ba622b8e0dffe99acc7bd04144f8a116ffe2f40b3995ca37abfd94b6827cf3af916d0657e38041b8ae3e86c6f5c0d215b24fcabbc97accf51d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/es-ES/firefox-78.0b2.tar.bz2";
+      locale = "es-ES";
+      arch = "linux-x86_64";
+      sha512 = "65ad0d7c4d9d0ca6501b7c957175661bf692ee388679c435471af6199d4ed0e070168490c4dcb65d53b66d8b517c5271019f869af7a5048be81259c3d73d01ea";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/es-MX/firefox-78.0b2.tar.bz2";
+      locale = "es-MX";
+      arch = "linux-x86_64";
+      sha512 = "de8fd8cd130f6de8bd26ca054c8eb655de4c958d183cc05bcb41e64102697a4805abe706e760eaa32121e777f20170eaa48eb46db468a51c3c77fc74b4ca2626";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/et/firefox-78.0b2.tar.bz2";
+      locale = "et";
+      arch = "linux-x86_64";
+      sha512 = "d39f4f6a65ae24aac5d4c541246ca5911d6af14cb851eef3869e9481f52c9dc593f5518d1c475dfd3a7f2f55d661463e0d6510e0267f46795b3282a6a26684ae";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/eu/firefox-78.0b2.tar.bz2";
+      locale = "eu";
+      arch = "linux-x86_64";
+      sha512 = "4661cf17da33ed88b8bb0ef8967809f0748c3cd1c8afaf22ba679aec95a9d0ee95cd5c1d08f7a449fafb55f49a32e2a4ef366d09056460985ee5b6999ae80181";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/fa/firefox-78.0b2.tar.bz2";
+      locale = "fa";
+      arch = "linux-x86_64";
+      sha512 = "83181415420d2c8c5d56f81d40ad587c1ff1ccf21b1469a235efabad0960db78e912f459e7264f10cc9c2707fa3d6756b8c0b0f8321754e44ca5b319a952f9e2";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/ff/firefox-78.0b2.tar.bz2";
+      locale = "ff";
+      arch = "linux-x86_64";
+      sha512 = "7821df8329fa367002e526bc792432631e098b1ee15e116af2b0ca06d629594d650e8310e701d5e02711bc438c7be9aac997686ee314d226b834ae9ad661fbbc";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/fi/firefox-78.0b2.tar.bz2";
+      locale = "fi";
+      arch = "linux-x86_64";
+      sha512 = "9cb5b49cd326ba3f3effa2c844a9b2cec1f5e55a56f4e86514e6b8607dd8d3fdf88335614c974a8d2362f6967bca800032411e2d18a6ae5f1d44ea815baba134";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/fr/firefox-78.0b2.tar.bz2";
+      locale = "fr";
+      arch = "linux-x86_64";
+      sha512 = "fcc80e9643c05ab9c581c9652bb24aa682b76c07702c3cc6bf4fb6abc3b5e198bba5691e0403cafacd1a52e45eeab707897603a24311a78a4b54da706208123b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/fy-NL/firefox-78.0b2.tar.bz2";
+      locale = "fy-NL";
+      arch = "linux-x86_64";
+      sha512 = "6df59da001300587d579b6202b85c089867b2b762ddb4705cd44927f16766e8c85d9c72fa00a5c47904b07e475f7ebf4f26428b9f4af73684a1b8140a8a6e7ba";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/ga-IE/firefox-78.0b2.tar.bz2";
+      locale = "ga-IE";
+      arch = "linux-x86_64";
+      sha512 = "b94d32ed84c6c06a060040fa349f470886ce06a33139b987a04540fd567f74be779a63d7a8e860b22abb8711114cbd2c22b882bfaea4baba1eaa73d9a31670ba";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/gd/firefox-78.0b2.tar.bz2";
+      locale = "gd";
+      arch = "linux-x86_64";
+      sha512 = "4dfd64b333aac4848dcf3ff44b56d2070dcaa5b81150d643e50c68a1c1c32e533f6b00befef3daa1fa6f6bfa8041593acfbef4fbf91694c9cbea931b0082f890";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/gl/firefox-78.0b2.tar.bz2";
+      locale = "gl";
+      arch = "linux-x86_64";
+      sha512 = "b4f10e6c26cf215b810512786988af3e961383d5c00e4d0c6ff2e0cf45d4616a3f999837df0b15c642109f0a930a543192d69b38fd5ac6d2adc4b8e147c85297";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/gn/firefox-78.0b2.tar.bz2";
+      locale = "gn";
+      arch = "linux-x86_64";
+      sha512 = "f51911301d88ca070defb75ff49bdc6d1ca5dc60534518febfad20f2aa256dc226f15945993300e96ff4fe1aadb427aa51340dc1f3ec7420c15432f57fa31d8f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/gu-IN/firefox-78.0b2.tar.bz2";
+      locale = "gu-IN";
+      arch = "linux-x86_64";
+      sha512 = "c122187243467d12422da400affa93fc62070801d30976fda1fde6664c5dbff3cab37c3b1e0a20a1b62605eb1127f13bdf806c07063cd84ee5f8fb9d19397573";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/he/firefox-78.0b2.tar.bz2";
+      locale = "he";
+      arch = "linux-x86_64";
+      sha512 = "5f0208c47710d0bdde59742392c4086add04cce787cf257d9295243426cd3085b5693a382985a6a0b5cc46815049012807c6fdf5c4835fce8c0f60c105743020";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/hi-IN/firefox-78.0b2.tar.bz2";
+      locale = "hi-IN";
+      arch = "linux-x86_64";
+      sha512 = "28c296e2e3e6c17ddeb5bdff5b3c75e81eebe631c10bfe63a8b7755cbce78627634cdd300d8ca7e65bebab1ad3a058eed0be6704a1f3eb0c46761b2516e25a34";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/hr/firefox-78.0b2.tar.bz2";
+      locale = "hr";
+      arch = "linux-x86_64";
+      sha512 = "638cc3b5f2a1f5fb3e45e81beb209234a1a89356bdc99b933a7c7d84811691a33dca27163e93e9b77b2cd1168decac98d2c21a6837dee4335214f87e5f1cd78c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/hsb/firefox-78.0b2.tar.bz2";
+      locale = "hsb";
+      arch = "linux-x86_64";
+      sha512 = "40e842a776c591dbe92ad2d191e6fd1c1c26c00aec6110b74e734ace0b5868afe430017ee2e953692fcbdb542115904229adb9294c64ffa63a15ae4da6abd949";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/hu/firefox-78.0b2.tar.bz2";
+      locale = "hu";
+      arch = "linux-x86_64";
+      sha512 = "b544898a2433c66c6b69fa84e36558f95d722e986d09afeb76f412c128a351977389bf554d524e28c02d8e5554519ebcdc136d57f17b0baaf40f78f0738c9aa9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/hy-AM/firefox-78.0b2.tar.bz2";
+      locale = "hy-AM";
+      arch = "linux-x86_64";
+      sha512 = "1a3a40148fb35f3d741f732e3a39e6f1662e6196b1d0ab149b0f42f2f7dfc103fa51df0dfe1874a5d483a5a998555d858be06f8afce9815f7242b7b86d8b3af6";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/ia/firefox-78.0b2.tar.bz2";
+      locale = "ia";
+      arch = "linux-x86_64";
+      sha512 = "7e8472462754b358a4ed7f7d9a1d853d0f590a680a64e985ff1db631e84e6200908348d85ae3757b9236c76e9b3e302f18bba3a84b620834345142e3e39f95ec";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/id/firefox-78.0b2.tar.bz2";
+      locale = "id";
+      arch = "linux-x86_64";
+      sha512 = "028df055359a2fc5088b65ee1f377b94dd69f7c6c718cc954084ef5a53e3f53ddb95a8e52c46b2e463e5de6ecd7272a4d687e49718ad96ac17579ad121403bc5";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/is/firefox-78.0b2.tar.bz2";
+      locale = "is";
+      arch = "linux-x86_64";
+      sha512 = "232ed8f86d6c825444a0e2448b5d5f06a8d17be5c4ce35fc0d6cff24cf3e49253ab92c16d82ff52726540104106c242e3bfd0b3b969f8a437f46b60114654f42";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/it/firefox-78.0b2.tar.bz2";
+      locale = "it";
+      arch = "linux-x86_64";
+      sha512 = "43f29ac4beb67d8859cc8cd7abdb3ffe2e3c3aec7c962e4e9481d89005a72598571a0dd53a65b06241ed04e6022b7992b2a2c4cb95bbaac95c4132e1bde4869e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/ja/firefox-78.0b2.tar.bz2";
+      locale = "ja";
+      arch = "linux-x86_64";
+      sha512 = "c469704306f8e28f8508b66bc418a867b3f39eb33405430c0b3fce3f5ff5cf0390d03889ab1c20aa52d5f0b7f4631cb98e0315ab63c3e9412f30f484ac88df5d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/ka/firefox-78.0b2.tar.bz2";
+      locale = "ka";
+      arch = "linux-x86_64";
+      sha512 = "5c4eb2a1f8167ab3f6e818291595a67b3b9f125f800ca84b930e0ffe64357e37b9a9999efc17593e502abd1912498250423fd672c7c479d227dd7d6df3092c49";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/kab/firefox-78.0b2.tar.bz2";
+      locale = "kab";
+      arch = "linux-x86_64";
+      sha512 = "d7b7eb5065a6d949b018d0b1bd7c3613a97311168783a64597731da0b7bd248f11b13069833f3fc794563b1de1f4e0c40be23231b33471dc49bbe112f8e536e2";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/kk/firefox-78.0b2.tar.bz2";
+      locale = "kk";
+      arch = "linux-x86_64";
+      sha512 = "7c2a20a0e20bf581aa8ebcea29ce7096fe14c8181780364ca6c828e0df71862b4da85e46ad5e9b73c6fb1dd575732ad1bf36e7dd9f6087f187cd56e29861aa4b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/km/firefox-78.0b2.tar.bz2";
+      locale = "km";
+      arch = "linux-x86_64";
+      sha512 = "47ce70d662ad99540a0186f62c51918e1728976467f612cba3fc36b9d336b1435db1c06a834bec54e1546b9842028c03fc965efc472a08db81a6c13766db48bd";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/kn/firefox-78.0b2.tar.bz2";
+      locale = "kn";
+      arch = "linux-x86_64";
+      sha512 = "3a62cacb7f5e3b4d2652731268fb0517678ed38508f5fa0fc2fc5288031c706ef95a2ebc09116b35a1587e4b42fb8e9b07667ec90f3727be0541d398acc1e8eb";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/ko/firefox-78.0b2.tar.bz2";
+      locale = "ko";
+      arch = "linux-x86_64";
+      sha512 = "9fe53ec1bb0e5b2ab583c2f7709101ef6ad8f7a246ed0ce9988dbd086640cf34321b49b753960eda5b47a09fc162b0a2a2eb103287e208f75a85c97ad7752545";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/lij/firefox-78.0b2.tar.bz2";
+      locale = "lij";
+      arch = "linux-x86_64";
+      sha512 = "221ca319327c9bc4f68f12f93309612ab7b286f3df0971dba3f42d6e0ffaf12bb554cd0dca83a4bb9de4c9a239af724eaf5f70d0f0b594593b64f8338b4c7954";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/lt/firefox-78.0b2.tar.bz2";
+      locale = "lt";
+      arch = "linux-x86_64";
+      sha512 = "2aff555428cc9b04ed2134178e8c2da1ac702f1a77b3f5b648cad9bb4c59875277830ba657aaa7dff7652a4fc35fb39b6dbfce3013213a503cc39700156193bd";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/lv/firefox-78.0b2.tar.bz2";
+      locale = "lv";
+      arch = "linux-x86_64";
+      sha512 = "540057409baa8b823ba2eb2ee1a823e24ff08510637caed97635d719c1e3be6fa12379f86f08a68e53c9084ea1d79bb89d188bb3520c723c52db2fef3ee8025b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/mk/firefox-78.0b2.tar.bz2";
+      locale = "mk";
+      arch = "linux-x86_64";
+      sha512 = "adde84f336cc36f23daf58b006a0cfef18acaade8892c2368b0a3b3322ddf2b26a0783f04a533e173d71a4e2f579fde2f6fa6a6c23d80506a1dfe1945a2fb073";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/mr/firefox-78.0b2.tar.bz2";
+      locale = "mr";
+      arch = "linux-x86_64";
+      sha512 = "93b021845b9dcf173b4fef281dd4f51ae5a84de3bdf80c3861fd0e5e4d9431366b4592f0bd553d45fd2f9f3cf690ff82cfef6b32f9bab06fa916b417658402cf";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/ms/firefox-78.0b2.tar.bz2";
+      locale = "ms";
+      arch = "linux-x86_64";
+      sha512 = "071217dc5109570a1f5a98a06ebc0120aa809a189b3a78a3cc19dbdce0ad1cae409f665eaf97cdc7b4df529c8406fa2fa2c57e5b34dc32e3a0f4a62d981aa2f7";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/my/firefox-78.0b2.tar.bz2";
+      locale = "my";
+      arch = "linux-x86_64";
+      sha512 = "39fa770a4b6632d1dc0e3bee24ff7ed95caa26db7298c93a7e0f4732ef18d72a1f21612275908dd12ee94da0a89b08e2b575cb745340ef0d595263f554fc61b1";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/nb-NO/firefox-78.0b2.tar.bz2";
+      locale = "nb-NO";
+      arch = "linux-x86_64";
+      sha512 = "f408f1ffa88b3c918e52c001ee95027730e4961e13a0b47a0c8c6d3c39aa8d7cab172329738ec546207051bc1d682b8d62d59ee9efae4d7533036cc9a6869f71";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/ne-NP/firefox-78.0b2.tar.bz2";
+      locale = "ne-NP";
+      arch = "linux-x86_64";
+      sha512 = "6b8bda91d969a832ffbadd4d2241b9bb572637d0d34c910f7e5f14921d7c9f76b4a88e0e3bdbfa259a0090cc8b7cbe638f60596f05d8b8c5f48faa181393a37e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/nl/firefox-78.0b2.tar.bz2";
+      locale = "nl";
+      arch = "linux-x86_64";
+      sha512 = "ea86fff04dfa7cdb8344af38b5b983dc9043b5b754999ac4b2ee1fef19df31fb4c43be6952e0e97ecd4af62c97b1a8c12914f0473dcb19d1a9fdcce4c0710869";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/nn-NO/firefox-78.0b2.tar.bz2";
+      locale = "nn-NO";
+      arch = "linux-x86_64";
+      sha512 = "9bb74a166716654e32f1b2931241dc556d399148bac3b1fc44a96a101f48e74413d40f380f6e469639c186a2483bd9131ee27b8acd8e442e4a3c2eec7361bf1e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/oc/firefox-78.0b2.tar.bz2";
+      locale = "oc";
+      arch = "linux-x86_64";
+      sha512 = "3d7445cf18226db6a4a875f2f006150d709b53a8837f4dbb2bfc7782149c01949473a1fa7ac0d5ab3ce269b2a41077cc93f7635b3b55a08c2a105973c926e62b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/pa-IN/firefox-78.0b2.tar.bz2";
+      locale = "pa-IN";
+      arch = "linux-x86_64";
+      sha512 = "0208389b74ca0070c727f6fde7102e12e28b460eaa062839c23a81f5f25f68ebf4596e5dfa661a2de7c21c233e09d621dca716233c6b73368c7eb7fb0aed6d93";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/pl/firefox-78.0b2.tar.bz2";
+      locale = "pl";
+      arch = "linux-x86_64";
+      sha512 = "9765be62795d6a0efdac06a91d2993a1da2b015ea20679aca8ea6d70768b2a0f9603533d2ab81bd2cf33dafe842e9c78d0a0bdf2b705c74f22b7d9fc22cf2c32";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/pt-BR/firefox-78.0b2.tar.bz2";
+      locale = "pt-BR";
+      arch = "linux-x86_64";
+      sha512 = "c59eb5f10a8f94e44f785bdb8425e8b889e0120434c1796def1fb521a77d5da356176d1c864a2fdef08cb650a1b6c71cd334a3cd0d1b2f647519d46d2d65ef8c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/pt-PT/firefox-78.0b2.tar.bz2";
+      locale = "pt-PT";
+      arch = "linux-x86_64";
+      sha512 = "8fa1dd31772b0de062c1621ef9346ee1b0fa77629977c39a8111f0f22b00a1656e6bf143c3ac74af7abeb8f2c2cd26495327ec72b067c4ab7743957248b62e32";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/rm/firefox-78.0b2.tar.bz2";
+      locale = "rm";
+      arch = "linux-x86_64";
+      sha512 = "737c5614d84fd72313c3ee4eb72779bbb339a40f249967417d591137e19d76b32e9ce528adb167415134ec75b796f7ee4dfa624cdefa4bd42e11148297b08867";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/ro/firefox-78.0b2.tar.bz2";
+      locale = "ro";
+      arch = "linux-x86_64";
+      sha512 = "0744ff66859699c611597113c77de6bdfb5ddb543768671a48f9cb83da888ea88ed6fbde5fb86f610a35fb6e7daaf0a4c6fec1d9658c700c16f37e04f7b41366";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/ru/firefox-78.0b2.tar.bz2";
+      locale = "ru";
+      arch = "linux-x86_64";
+      sha512 = "77e085bcbbb2ee78c486f85d86a5be43498ea094214fa1e769c3edf7af42821c833d6dd207766ad1fea9eb9ad2354229617b6ee49b38d869024092d317790781";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/si/firefox-78.0b2.tar.bz2";
+      locale = "si";
+      arch = "linux-x86_64";
+      sha512 = "1742142be1d9fdcb13f6d68c5fe413b9ad019556491263855c172d350fe0bd00d467bd91683caae51eee3e512023e309ad97319e3327098ee47ab6be35d1a851";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/sk/firefox-78.0b2.tar.bz2";
+      locale = "sk";
+      arch = "linux-x86_64";
+      sha512 = "2c292ca74a5424315e22d595a688d14167389cd7afbf73e07342b7e77ca32e9b56300594790f26d048b32d0ec014d23f144b9226b01cdeea3233050998394f99";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/sl/firefox-78.0b2.tar.bz2";
+      locale = "sl";
+      arch = "linux-x86_64";
+      sha512 = "d6dad078272c4afd6d0641bd53db9d9af4b9ff9ec34c45917ad313cd6088ccfdce614669765281d57c57dd83a5b7e428514e21c6fa13cea70c93e91690ece671";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/son/firefox-78.0b2.tar.bz2";
+      locale = "son";
+      arch = "linux-x86_64";
+      sha512 = "7a382d02653006c00e4761a7f61746f6ee80ae2f922cb2eb027da3ec7f6cebfccacbd51c528a29186557dd9e905a744e6db7e07c273751a1f80a277a08a86410";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/sq/firefox-78.0b2.tar.bz2";
+      locale = "sq";
+      arch = "linux-x86_64";
+      sha512 = "0ee0ed873edeae765b624e1f76612b06bd6bc7b8df396656c76b59b1e1ef8d5b7f056a18a71eb2cf9f950382ca272bb9517ce24c6145e966f6e895b4ad843e6b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/sr/firefox-78.0b2.tar.bz2";
+      locale = "sr";
+      arch = "linux-x86_64";
+      sha512 = "d8589397053bd3b5068885925ad69ccbece3b439ee61b787babce92f24a8cec9e32164616d73fbd35f34047d1f5ebee48e91bd9f1ddedda2dc4f19d5ba869afd";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/sv-SE/firefox-78.0b2.tar.bz2";
+      locale = "sv-SE";
+      arch = "linux-x86_64";
+      sha512 = "d72111d03ddd880a24590a5b1e17e950401fe9d61fafc7b4b256f877d8c950689ca393ef6fdae048566beb1aa46ccebc7f1de8273c22b8a02a651730a75e29b9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/ta/firefox-78.0b2.tar.bz2";
+      locale = "ta";
+      arch = "linux-x86_64";
+      sha512 = "8b3c549bd419861fbf8d3dd30e10482922af955454bc1974f0c9bbe065a6aa88aa55b8808b2c4865ea3bb5ec240490b882a3d1251291513b234cee3c075f28c6";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/te/firefox-78.0b2.tar.bz2";
+      locale = "te";
+      arch = "linux-x86_64";
+      sha512 = "8d8c74aa0811c24d97ce03628d9fa3be139ae53356296d8599c5c4a9269f479a2dd720dace92e86560a3986fe68daf042b18e2bf1c4d4339033b5c42cbca0f26";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/th/firefox-78.0b2.tar.bz2";
+      locale = "th";
+      arch = "linux-x86_64";
+      sha512 = "7c6645a2287b0da7c346f1075e44658c72d9c95e4e47413d0e18024691471e0165f2ca58142658e4ecc605fa5398d047e9acd248e1090231809887189ab19926";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/tl/firefox-78.0b2.tar.bz2";
+      locale = "tl";
+      arch = "linux-x86_64";
+      sha512 = "d27d4f5815ebf6d92c9394fb9b187985eee43b89034f6378a862c5e0099156423d925e4f239da7f4dadde31a68053eef909d53814a2342157f42a1ffaef48df1";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/tr/firefox-78.0b2.tar.bz2";
+      locale = "tr";
+      arch = "linux-x86_64";
+      sha512 = "e9001e4ac3d56a76955c04f2cc43915696e3ecf0ed0d7446a282bae6bd3ff7461ee6abfe7db40ad61cfe37361636089f2d4b353eb5f7f09a9af16f933c9e1ea5";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/trs/firefox-78.0b2.tar.bz2";
+      locale = "trs";
+      arch = "linux-x86_64";
+      sha512 = "9aa5a64c8ab17beccaa53cda383383b28b7ba311c08c21dc9bc097d2e43f351901399f315f2b12fddfcf101023212e61c5e416442a726a324c66c7872dea75af";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/uk/firefox-78.0b2.tar.bz2";
+      locale = "uk";
+      arch = "linux-x86_64";
+      sha512 = "8d33e4ff58711e2bd71144b00a96fde332675c6a81b09c1896eea25b6599fa37358c762d951e4515ed398f746b368216fe26beafdcea51cd3e927e132d26856f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/ur/firefox-78.0b2.tar.bz2";
+      locale = "ur";
+      arch = "linux-x86_64";
+      sha512 = "2f8e5d91c9f4119340762efe519b11eb69c4dca355a4add963cf71a5aa58b53c315c0315caab323b27cca293f383bc07325dcbc483326dadf95f305fb2ecd067";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/uz/firefox-78.0b2.tar.bz2";
+      locale = "uz";
+      arch = "linux-x86_64";
+      sha512 = "b23309f728ccd814f7444c1e3e129034c66a1ad1fd216e6960c79470fe37d765314fbe9d221d8bf2f423ec07406657135029b280e2d5884c5f3a55050e0194f7";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/vi/firefox-78.0b2.tar.bz2";
+      locale = "vi";
+      arch = "linux-x86_64";
+      sha512 = "698f917a168d753d7dea3f0e91566beb6cd96cb708abebfeda808115775ee5ee2dd906ed68f99cc571c752560d765dbb49ddf701de4f74df2ddc8a6642f9bb19";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/xh/firefox-78.0b2.tar.bz2";
+      locale = "xh";
+      arch = "linux-x86_64";
+      sha512 = "1b1dc73a235218bdb832bde08f4de5f157fd9acc2257fbee5f1684e2d4bc2f14a22ab70e062d53612b36588dc3f252a6a1e6707cbff392d9d1b1365adfecb13e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/zh-CN/firefox-78.0b2.tar.bz2";
+      locale = "zh-CN";
+      arch = "linux-x86_64";
+      sha512 = "07d21c46ff1cad5cc9e75d6719224721e230895bde0adc34b69eb5a34f14d400206e0d2e4de80ba4e029de0b185b2c6ae0a44624b5838eee210726831ad082f6";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-x86_64/zh-TW/firefox-78.0b2.tar.bz2";
+      locale = "zh-TW";
+      arch = "linux-x86_64";
+      sha512 = "13be3323975a7ed42f6a9ccb8bea4b71d875cd5dd8e1e5bbef8ed36d1020819f3189b6e933200ce58793bf89cd7d989e6e22dda60321c9ea3c5d3b776cdf8e5b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/ach/firefox-78.0b2.tar.bz2";
+      locale = "ach";
+      arch = "linux-i686";
+      sha512 = "383146225929a318a6dbe25e74880f7c8b630bedf4ee91adfda3b8c9626b2967d6e6e76573e05fec2a4efeefd0573c6ba63ab252acc453b691cca3f09dac7f1b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/af/firefox-78.0b2.tar.bz2";
+      locale = "af";
+      arch = "linux-i686";
+      sha512 = "4b0fdbdddd7c5eb18a25dfa03a95580826c940941f66c984a9d6e46f1ec88ab932b0db8d94644310dc5fa1519d44a3cbc24d8373a449b6987e2401b9bc2800c2";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/an/firefox-78.0b2.tar.bz2";
+      locale = "an";
+      arch = "linux-i686";
+      sha512 = "72495918ee96313318db942c8c403286ff6ccbeb59811ab2c595723cd18c2a57d6a42adea7d8779b22b9dfdd1e5c5c0e19b5fb438d198f9e770f3034a932e610";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/ar/firefox-78.0b2.tar.bz2";
+      locale = "ar";
+      arch = "linux-i686";
+      sha512 = "61117afc0748e44daf713234b91911336875b8d9eaaeecf8e183d54d2c6bbabebd1cbf34c74a019ab660b06bfaa28c417d7ea3ae8cc476c26c9c40bb9fff5392";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/ast/firefox-78.0b2.tar.bz2";
+      locale = "ast";
+      arch = "linux-i686";
+      sha512 = "63f66ac824c1ace695000cebd357684d0b09c3e69f46021f44ffb2201327468c2d4d21597a660cb14f6fd08c21d58e0e47520f72595da8f59c808459ae8ef0e6";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/az/firefox-78.0b2.tar.bz2";
+      locale = "az";
+      arch = "linux-i686";
+      sha512 = "481f350c51b234aa44091e7e6ba308364c84ef988bc11c0f66aac72511e0aaed0c0a4bd865e781516cad6a867bcb2e09fd4d1726871290f828837398712ca401";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/be/firefox-78.0b2.tar.bz2";
+      locale = "be";
+      arch = "linux-i686";
+      sha512 = "1c4b35ac02bec3daf9f5a7fd984071beb274281ccc3f3a8979d8255709fa22396a1d2ab2606521f279943c872294e19b99e974b116f1293d63d10dae0f92e586";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/bg/firefox-78.0b2.tar.bz2";
+      locale = "bg";
+      arch = "linux-i686";
+      sha512 = "9bf06f95a1769a9f0a4e63ddc15f612d8f5f8678ac217671c58f3fe8669d3936186a2695b6b49ab6d37a052a2844ac53e6d65795f4539033467f2405930e191f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/bn/firefox-78.0b2.tar.bz2";
+      locale = "bn";
+      arch = "linux-i686";
+      sha512 = "7388dbc16b05f32a0c2cb69489e8dc5054c6ae785881b91571d2ef7bd010300efffcf322598c51157f681ba599f7f39791bd2dae217147eeb478be92efc82f7a";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/br/firefox-78.0b2.tar.bz2";
+      locale = "br";
+      arch = "linux-i686";
+      sha512 = "ca7fd9c0c46c92b26e1038a4b611f26690b4385cadae2651611f079323a6775f47d305d9547d98711eeebcc00374df5172fddafaacf44279cbe0c765c7fe011f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/bs/firefox-78.0b2.tar.bz2";
+      locale = "bs";
+      arch = "linux-i686";
+      sha512 = "fcd846854ff686542a0159e722722a97b6be0a797341bbfb2fac62cd8b6bdcaa3aa2f51bbd6a7b2d90b46188af1ebc5c1b6ae6e6dc24f3f4f1a1bb26cf2205e9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/ca-valencia/firefox-78.0b2.tar.bz2";
+      locale = "ca-valencia";
+      arch = "linux-i686";
+      sha512 = "4e997173753a7eda937c5c04c1bfed27a2368e58db459d1e0918642d2c5878a5abf5437f96de9e47e0322f4f0d0e8782cda27bd24f6c5efecf685fdab3b9d149";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/ca/firefox-78.0b2.tar.bz2";
+      locale = "ca";
+      arch = "linux-i686";
+      sha512 = "c2ba20e8217134b641d9c97e3332167236549e027946d7cd4200ace74498639e6841eae76f753195ba8ffd2872dc3dc81576970a128cc618c51526497d14c1ba";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/cak/firefox-78.0b2.tar.bz2";
+      locale = "cak";
+      arch = "linux-i686";
+      sha512 = "e89879635fcda716916f5e0afe2372172a7e3e13db6a57310cc2d4e8bed95ebc76fd2a39d730ba548a8f2871e68ec6c80364a67a8a9f2f72e8770a6088cd489b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/cs/firefox-78.0b2.tar.bz2";
+      locale = "cs";
+      arch = "linux-i686";
+      sha512 = "ce657c44e1ae63db3f206601b5be7107e0334de7be574c8ff9211fabb6d41936eca3aca33f58e05220adf1213aa96ccd20f183a72c4bfd7cd71c145e8e8c051d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/cy/firefox-78.0b2.tar.bz2";
+      locale = "cy";
+      arch = "linux-i686";
+      sha512 = "fa217e8a7dcf509132c35775c85c74eba600dbbbf2952a00a61bdf258396f134759667f6c3b8195bcc0fce8a6d896e70fcbfe514bb50346969fec258a8ce9342";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/da/firefox-78.0b2.tar.bz2";
+      locale = "da";
+      arch = "linux-i686";
+      sha512 = "ace0ea8fdcc68845f948656c31e142d5158eb2ebd0ead6c8d1752d6ffd4ad6d915b632034ac328751e69fe133d288309b2db0e97caa8cfcbf697150abc757839";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/de/firefox-78.0b2.tar.bz2";
+      locale = "de";
+      arch = "linux-i686";
+      sha512 = "6e87302f9a5c9a08c7e9c56257a31787c013ce8b5b800d4a7be1cb7ebc66c32d9cee536312ba0042638c33b614fcee051f99b83b71007cb21716e0d12d380696";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/dsb/firefox-78.0b2.tar.bz2";
+      locale = "dsb";
+      arch = "linux-i686";
+      sha512 = "5f09de6e10b863e06699b9131c5bb819aae6afb40030550a1e2785555588fee83e18abf60825b27f8e458dc9459ed101db213c230a06507e95e9b43a0fb1fd58";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/el/firefox-78.0b2.tar.bz2";
+      locale = "el";
+      arch = "linux-i686";
+      sha512 = "03dc3e0ee03c27653c42f314a3e65d9e45b717803a869827cedc5ed5351ef32dcc768f7c13a9cd3eb14b0ac8a0d386a8392e677f7481bf81699d4cd22f91cc3e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/en-CA/firefox-78.0b2.tar.bz2";
+      locale = "en-CA";
+      arch = "linux-i686";
+      sha512 = "9eefc744bbfd503e6cb0cc0c25a1955a3246775ad2f204b7004aef96f24e6268576b89a83853de93998c228208174cab91cc0615ca16d42c6f2dc043939aa213";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/en-GB/firefox-78.0b2.tar.bz2";
+      locale = "en-GB";
+      arch = "linux-i686";
+      sha512 = "66e3abfa4acd7b701285a8bf9a48f6be2401e8bafe19c694f1307b7b3437efdf500e12ceaeb5b41f3deaab29a3ac90b78ff79fd5521e94bae055b119d4918690";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/en-US/firefox-78.0b2.tar.bz2";
+      locale = "en-US";
+      arch = "linux-i686";
+      sha512 = "38500788aeaa19cc295c038e85ab11ed7a091fd5b4105cc2b7202b22e271dd8f3ca8139586e87273f98b1e17b6a7f526131ded5e4bddd0c4e52896cb7f47c5c5";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/eo/firefox-78.0b2.tar.bz2";
+      locale = "eo";
+      arch = "linux-i686";
+      sha512 = "d3e5aad8cbf2b2a61cf52d3f17d99d050ee46567a7aefb04d0855922f86e7820d11c15d60efe6beea76232a7d1f43f2b5a4aca088844906affdb2d272364a492";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/es-AR/firefox-78.0b2.tar.bz2";
+      locale = "es-AR";
+      arch = "linux-i686";
+      sha512 = "81aeaf4e97d53db8dc93d0e6b163b4df6218621781dcabd85755baad71a4454f406d5119d16044ccb867f8f6826006943b72d97dd6b5d658daf196d16bac040e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/es-CL/firefox-78.0b2.tar.bz2";
+      locale = "es-CL";
+      arch = "linux-i686";
+      sha512 = "e22ece882fe8141864f1efd7d72774aa659cea88ac45380c709f8da92906b8f0d72ff959add05b6be57955b4687ae52a138b51bc4da81223c16ca40b76c056ca";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/es-ES/firefox-78.0b2.tar.bz2";
+      locale = "es-ES";
+      arch = "linux-i686";
+      sha512 = "26b6d729d72b302d38d7a372e716dc9cf741658e3c42c7080a8593f3eb5e5e96fb40b5188082a2ff9eae528f387801f034744fd2ca47cc279461669550e29502";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/es-MX/firefox-78.0b2.tar.bz2";
+      locale = "es-MX";
+      arch = "linux-i686";
+      sha512 = "2069eacc1ef1ec020088b3406755dbe2cb178f53555371f7132636033b4ec4883973a00f5f89907f8d6588a1cbe7fbb2d0b6dbb9d42c74165698bb222669bf42";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/et/firefox-78.0b2.tar.bz2";
+      locale = "et";
+      arch = "linux-i686";
+      sha512 = "1c2c865b8a7106a91ecc223a167216da94be3373a4d43012165989e6482a3d0a90f685b163f5bba50d14d1f2abe1f0866d6f1f75871cafd5823b060d9f6272e4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/eu/firefox-78.0b2.tar.bz2";
+      locale = "eu";
+      arch = "linux-i686";
+      sha512 = "3f2e68d6fe86a59cee48023cb646d5002495e2ae416ee18c7ae51c3e48690969c704da16e574068ea7f91fd17cc581be7cdae8303f0666fda3025cd87f173c4c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/fa/firefox-78.0b2.tar.bz2";
+      locale = "fa";
+      arch = "linux-i686";
+      sha512 = "6e6c7a29a1a20cab73b82f2c6d6167c8de66a249c0b02170c9a1ea052bc1eb8af5195dee3e83b597004127639fe96b4d89ffd020625a0aa0369dc47cc9560d05";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/ff/firefox-78.0b2.tar.bz2";
+      locale = "ff";
+      arch = "linux-i686";
+      sha512 = "3975634e0395df6377e7a240d4ae6328691709f50f115a0c364de9a9da849a6655c8397defd80df6e8edefb6f6b413bb877fccd847bc56b1bf71431e2151b114";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/fi/firefox-78.0b2.tar.bz2";
+      locale = "fi";
+      arch = "linux-i686";
+      sha512 = "1a96293cb6aad59b5706ff26f7324cb6dafeb9f17de4043c03aa789b9a81f7555218213923fac0abc16700cff4bc68848345f99376696025238122626a341177";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/fr/firefox-78.0b2.tar.bz2";
+      locale = "fr";
+      arch = "linux-i686";
+      sha512 = "1d3d243663ed47c7ee3ab68a578d87769b617a4e961572d3db2b34dd62b8b1c997d223104ded10b42a00a0f0382b0ba10c089060f613e30001253ed008b09ddd";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/fy-NL/firefox-78.0b2.tar.bz2";
+      locale = "fy-NL";
+      arch = "linux-i686";
+      sha512 = "8f1a40d1a46e5b4bd9cc679f07893f407b1ba7de11cbaf0ac6889ed9d344ac6a9f10842359e85f92187256548365b038d619c58d62eeb80538ee592691aca6f8";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/ga-IE/firefox-78.0b2.tar.bz2";
+      locale = "ga-IE";
+      arch = "linux-i686";
+      sha512 = "e15f1d055f6bf4c81736370577a102dd4ffd548d66bcd6c74c807d4996d400979bc5761ae5e5053dd0600b9c7e69ca0fd9e4b03f8428032e4a1acd3485a47f37";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/gd/firefox-78.0b2.tar.bz2";
+      locale = "gd";
+      arch = "linux-i686";
+      sha512 = "564f101816eb3812fc1498725562205f10590b8b2a97dd80fb2f5965a6f69d6dc10d42ba21171b4064107e8403ff81bd6a65da13d302d93a142ffd19dd13778f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/gl/firefox-78.0b2.tar.bz2";
+      locale = "gl";
+      arch = "linux-i686";
+      sha512 = "bf67fab5222c481088dabcc92f1298cfb4420f5d4e93c5e320d6bc1c306a51a4fea98c7bff52821b61b70d02c7cbb2e0a8a01bd76a21bb5d8dd7ccbf1a2cca72";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/gn/firefox-78.0b2.tar.bz2";
+      locale = "gn";
+      arch = "linux-i686";
+      sha512 = "306887a8436502fbd8f6654b6bcff057cb279e81e01e05eba6394a109fd21ca5d5b45a61570b9b880a5d104b1a52b002a3efcdb4018b44a9437443e3ea4678ed";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/gu-IN/firefox-78.0b2.tar.bz2";
+      locale = "gu-IN";
+      arch = "linux-i686";
+      sha512 = "84a27c6b14035bd8a6679e954a7f62728a24b7720cf32f1dd93533c97dec7965a963bca8bad7ae1b1895f5d8b30a9356f8fb87a45ae2bed99661852107dc4613";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/he/firefox-78.0b2.tar.bz2";
+      locale = "he";
+      arch = "linux-i686";
+      sha512 = "f9ab81b3f184c3351492deba6e4cdcf87306c378eca65813269d779467c68951e9000636d2ed6bc7d548453a5be59b50db2658e69d385bcb800eb452e360a245";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/hi-IN/firefox-78.0b2.tar.bz2";
+      locale = "hi-IN";
+      arch = "linux-i686";
+      sha512 = "d4ee0b984ca5679fa4d5922c321ba2e96f7fb2f6e0c3221eb4e22b25cf8385869c195e668932cf95b28efb17b7f9946dfd3453e679047d74eaa49032f7f494ec";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/hr/firefox-78.0b2.tar.bz2";
+      locale = "hr";
+      arch = "linux-i686";
+      sha512 = "f8217dd5f3772500584eea717cf142cf7a16655ed02c2628edbb6ef43c8a53cc8c73e3b829bd71f98e1c3d8e54619155ba5db8f988a5435e86587367ee754ea5";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/hsb/firefox-78.0b2.tar.bz2";
+      locale = "hsb";
+      arch = "linux-i686";
+      sha512 = "1883d76849ff588abb135f594ec7f8faa7c6eed2dd899ce4d7fb5e3f20e0884cb91bd6c606248910dd1d680c516336faea352b043ef7f0cbf95c86b82fb8781f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/hu/firefox-78.0b2.tar.bz2";
+      locale = "hu";
+      arch = "linux-i686";
+      sha512 = "36434f4fd5be4c50bdaa2b2a3ebea4ba1e89f18d51b337d17455a35169c3ec65d5b0aa17c6771f211b81f607175b6df754a28efc927a951e4d34072da343e0e9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/hy-AM/firefox-78.0b2.tar.bz2";
+      locale = "hy-AM";
+      arch = "linux-i686";
+      sha512 = "0b09ba2521e364fd839769725292bacee154806d94239e21dab70e4fd167b2295cac01e070cc5a50b1fc767ed57f50bdfa428fd5aa57a2ce6d2c0639c1b82807";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/ia/firefox-78.0b2.tar.bz2";
+      locale = "ia";
+      arch = "linux-i686";
+      sha512 = "2753b8d3413bad99cdb40e4dc2576ffd559e4ea92a507e0617e04b8fa41abef34ee642d6e8bb58c973a837e1483d117638cc49f1df3f485987be96c2b6d0dc77";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/id/firefox-78.0b2.tar.bz2";
+      locale = "id";
+      arch = "linux-i686";
+      sha512 = "a0f863f34f4ba67c049749453220d06f9737d855f6385c16e933a24c9a73f9a28928049fb99a89fe976db9224f40fd90495016388c5442eb0b977100bd5a8ff3";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/is/firefox-78.0b2.tar.bz2";
+      locale = "is";
+      arch = "linux-i686";
+      sha512 = "4425c986b537b04ad0d9740bcd835388b1bfd3a719867c7ea264eb1665a96deca9f4fa58d84e6e9dc7e038ab9bc55fe86fc69381c055f88899fc68b39505f393";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/it/firefox-78.0b2.tar.bz2";
+      locale = "it";
+      arch = "linux-i686";
+      sha512 = "4869bca5c889deced2e2d1029262726db3aee7a1aa5c79e928038295c1367ff6003b030ab2fa8940fa1920129c89636e059d9b20e20fa43f2dd938a44995b4fb";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/ja/firefox-78.0b2.tar.bz2";
+      locale = "ja";
+      arch = "linux-i686";
+      sha512 = "e4f288ec38c5a9723f3c653e3d995f9cc2c2dd86f285277a1b44f315df2bfe51e6ed58db00e7df1914b34bcad3b8258ae43075d02d4440cec2c1fd307baaaa9f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/ka/firefox-78.0b2.tar.bz2";
+      locale = "ka";
+      arch = "linux-i686";
+      sha512 = "f03488b30e3551cf670ee3a193452dde79c72fb5ed63288c41922e627ea0033cb31b1117a4b270260235492ef9d37ce7b6317d637c2495d1732c606aa2d5f6aa";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/kab/firefox-78.0b2.tar.bz2";
+      locale = "kab";
+      arch = "linux-i686";
+      sha512 = "ed496b1cec1152db8f63a04f056479019b90338220b163f1da1022de11b1064dff1dc32299f92a0464073d4938551da813f88d5dcc8536c61abc84347098cd20";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/kk/firefox-78.0b2.tar.bz2";
+      locale = "kk";
+      arch = "linux-i686";
+      sha512 = "01eef4b39491227ba2a0428066fe99b59222dc1d9c98d435254558d14d91b4cfc062a2649d87c86da3b83e327ef8a7889a78068ba1e118140dde8d696aaa4654";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/km/firefox-78.0b2.tar.bz2";
+      locale = "km";
+      arch = "linux-i686";
+      sha512 = "f284b80465c175a141210dc57b4bb472418981197ef5c7cc4b32c5d2d65898dc9def0f29a096d14eeb8d66328713afdbedd26e9b88a969a43ec62117c2d38d0b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/kn/firefox-78.0b2.tar.bz2";
+      locale = "kn";
+      arch = "linux-i686";
+      sha512 = "1b3f97c710a45441fb66c83ba6b2e648f726d8fcd0d245f9f8121a86d878c6bf3b0b114878d70f64f6f18f057218f84c5e30ea0f4f4ad8b1921d22ac9aba5e7d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/ko/firefox-78.0b2.tar.bz2";
+      locale = "ko";
+      arch = "linux-i686";
+      sha512 = "4deaf19c5b1fd396566dabd7f9cefe416e29ec885781f7aedca1bfad37645c2878a884b516d1300eaf2292220616ba494be4b8d763998cacd1d5e9e5b7a902e7";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/lij/firefox-78.0b2.tar.bz2";
+      locale = "lij";
+      arch = "linux-i686";
+      sha512 = "17bf34017b58765bc0f90d08ac8cd73065edb223e1d8222425122460c8a502ba2430caca3447e535ed9f444dc5d05b5958984e8a87e29dd1b713095cb68c130f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/lt/firefox-78.0b2.tar.bz2";
+      locale = "lt";
+      arch = "linux-i686";
+      sha512 = "43240bde81bb7a27a9a9b9ecd95bfcfdcc701441a5820ef2abfc0d13fcb8eb41abe240e16bef0a5c1126d498216c9d2c5302c787c93093665cbadeafbd81bcd2";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/lv/firefox-78.0b2.tar.bz2";
+      locale = "lv";
+      arch = "linux-i686";
+      sha512 = "6c91a4d5e746ce88522ee9ab1fb5ade7293365eb3bd67f5f5648fc8b298fdb41227408bfde8c567d238bf65ba5276021edb630c4b8f3314493a6f2d5face7845";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/mk/firefox-78.0b2.tar.bz2";
+      locale = "mk";
+      arch = "linux-i686";
+      sha512 = "c9a29a67dba15e60aa3a08499c19c151ed88e4f9b108204fffc42a56cc2b73f2ac65460f1f6ead90595deb1b874a0aaec466d5decf3c975c9507f32c6708e4e4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/mr/firefox-78.0b2.tar.bz2";
+      locale = "mr";
+      arch = "linux-i686";
+      sha512 = "e83006eb8bb225c5c8961e73c02dab509cc99be714a563f7de6203d7b1f9aeea61228de5c2c0353203bf206d113af6d95b47ab83793aedd0d8fc57c66774ed08";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/ms/firefox-78.0b2.tar.bz2";
+      locale = "ms";
+      arch = "linux-i686";
+      sha512 = "30c08210314a0bb9854ec3ec7db222bc03a3118578940f28fd503a90b266b3d803b59e4d691be4d5d50281b6036d3162676a775de1b0d22d57473ca4f277331d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/my/firefox-78.0b2.tar.bz2";
+      locale = "my";
+      arch = "linux-i686";
+      sha512 = "744153ef1626a18fc6295934e4ba53a12854f7f8eee73a451e996ff9497caa7c33a85a8fcda2ce8c510ad516568909dcf793acd69f2b183775dc2e2921280c6c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/nb-NO/firefox-78.0b2.tar.bz2";
+      locale = "nb-NO";
+      arch = "linux-i686";
+      sha512 = "f1519f65a3437394906750a19b9581a2bbdd295f8491caac191a6d702cfd81eee31dc58f18297a2c77b7a3099c1cde191017590881613cec21ece0abb3b33b0b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/ne-NP/firefox-78.0b2.tar.bz2";
+      locale = "ne-NP";
+      arch = "linux-i686";
+      sha512 = "c433b58a5c95c8bb15eba38fbbb443ddcd6e996809e382925284d46c5357901f3996d677cd1a7a4e3afb5d36fe9ff7aeeac9202f333a0acaf4cede1932fb9c1f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/nl/firefox-78.0b2.tar.bz2";
+      locale = "nl";
+      arch = "linux-i686";
+      sha512 = "4a08f0571fb66742cf99abc582f761cc8dcd7297bc66db56f11f12bcbc5c46ad0030b6943d31d4f42faa9b2caed5b25576df34d4078ffad5712bc1cd7f9fb3bf";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/nn-NO/firefox-78.0b2.tar.bz2";
+      locale = "nn-NO";
+      arch = "linux-i686";
+      sha512 = "97768cf2279b49a5d2ee5dafbd1315a9645ae017d6658106c4dfed682079d8b1aaaed201d8b571e8c00a5a305e5390a7f799307f167c24930b6e08b601586071";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/oc/firefox-78.0b2.tar.bz2";
+      locale = "oc";
+      arch = "linux-i686";
+      sha512 = "2bfb1e7d79c8c7256c7a4af08e33bd3cfd7bb3b5e214b06d50714d602b0ed44db5556d555d506b29d5779b86c8f15cabd6e9d4151e76e0c4e03003a49f1e2460";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/pa-IN/firefox-78.0b2.tar.bz2";
+      locale = "pa-IN";
+      arch = "linux-i686";
+      sha512 = "e53b42fcc15613bef2201e2c8269269901130884fc7b3d4fbb5cc3eea1c9ff1a219503c2e2960643ae23ed0ee99287ba977f55f77df00c0cdbacd380623967ff";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/pl/firefox-78.0b2.tar.bz2";
+      locale = "pl";
+      arch = "linux-i686";
+      sha512 = "bce7db6d18de63080a806dbf8639bd2f6dd00876605b17b9fcc741678618f1f17a5d991c461daa765cd2f3f217d2f39971e572e2e607b91bcdfc8ca15529526c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/pt-BR/firefox-78.0b2.tar.bz2";
+      locale = "pt-BR";
+      arch = "linux-i686";
+      sha512 = "7260d2a9ff4fc0b29f5c72942eee47c36b4041982924ece2a32f70a5a821bbbff07ebd57a3b97c64700a6e7815e3f00f8fc521ca7f99192b25f3199089b33738";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/pt-PT/firefox-78.0b2.tar.bz2";
+      locale = "pt-PT";
+      arch = "linux-i686";
+      sha512 = "47f02eb60a50799c542ec8f82dd5e43a684ca03dd8daf487d651a33c7ed78ab12be1ab910c2a658e67645b2537f6f112d9000b59377be448c066f218bc9287a9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/rm/firefox-78.0b2.tar.bz2";
+      locale = "rm";
+      arch = "linux-i686";
+      sha512 = "dcea73109f2c6bd570729175e136856d1a8141cd3e6caa04ad5a0b94096171587980d9567181c41fcc950da92c15155ef23402ff7e97939fd7cc4d3c6d349e6d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/ro/firefox-78.0b2.tar.bz2";
+      locale = "ro";
+      arch = "linux-i686";
+      sha512 = "5189292876c243ef963f552123876d9a392a258efdd3704d4ac2b4da26d98e3ff5d281dd54be89ae414c8a78abf080234259045326487eabca45a645a1ba29c9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/ru/firefox-78.0b2.tar.bz2";
+      locale = "ru";
+      arch = "linux-i686";
+      sha512 = "c4ced260fbae120147c18cc03be8ed6c604c5b98c4c63d3f7ba579154cbfc04003b5ff03c65617cb6a2c65a49c36c81fc1c1b2d6315e51ea368165d0c6fe971c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/si/firefox-78.0b2.tar.bz2";
+      locale = "si";
+      arch = "linux-i686";
+      sha512 = "84f62ba8c25c46cfde46e2dfd2ca6e9051d75ff4b930f1898da661714976103530571a39ba19f374beb4ecbcbcb30a390483d91433558e2f263d9106efaefabb";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/sk/firefox-78.0b2.tar.bz2";
+      locale = "sk";
+      arch = "linux-i686";
+      sha512 = "9f9792fb821396d46c5ef30acd2d71ed224db8a8a533a6dc3f0afe3b8aa7c9915f425d921fc2f8adc11fa3f5d9ef2580eece36f488417cee4b4dd3988d9f7553";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/sl/firefox-78.0b2.tar.bz2";
+      locale = "sl";
+      arch = "linux-i686";
+      sha512 = "55d0c5d17f80d9a35ea5dffcc93ad6cf9af2414e8b74bb7f0681dc97b9c7292a95a9175400b1710ce5eb78e2aab6ca9a57deba96df68bc8b0949029a4fca55e4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/son/firefox-78.0b2.tar.bz2";
+      locale = "son";
+      arch = "linux-i686";
+      sha512 = "a341592537300f4aaaee8010c58143204487642bfd72fc25086aaf94bf916aeef57ac1a8cf5aa6d3456759a4a9416da6c72a6e222a1011bf3dcef3a1bacc53fc";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/sq/firefox-78.0b2.tar.bz2";
+      locale = "sq";
+      arch = "linux-i686";
+      sha512 = "ce6f8b75467d9a97732a9541ceae1611b37ad81c2cac1a150502e4d96b3d2f0a35e3031f534cc974a13810716e2c2f4bd30d71f84076a98c0bff85b37bcdd51a";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/sr/firefox-78.0b2.tar.bz2";
+      locale = "sr";
+      arch = "linux-i686";
+      sha512 = "644cfbad8921ad9101eaa2eb20cc4764baecf8c2ac29e30ded8470df6b103cd39f2ac913b30a89cc92b8cd6e2a0a16a2c5dec61102a599e43675d9edf59ce2b7";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/sv-SE/firefox-78.0b2.tar.bz2";
+      locale = "sv-SE";
+      arch = "linux-i686";
+      sha512 = "6b4805545d53241e6f4bd6de168fe642d502cdcb33d805f696e7622894b7e1e347870294b168f2be191b96c8d109bf567a0c102c727b0d6d399e4bf1f0e0464b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/ta/firefox-78.0b2.tar.bz2";
+      locale = "ta";
+      arch = "linux-i686";
+      sha512 = "0681cef623d3266b40cf3081c19f5fd54b0aac447684553fa9205735099bacd615d024f2205329c2c14a4f48c81cb7356039cb8bdc76c0e68b0c4c85c821f0a7";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/te/firefox-78.0b2.tar.bz2";
+      locale = "te";
+      arch = "linux-i686";
+      sha512 = "d1b4eab69607d6ce2b94841c2320aebdfbbf2ed71d09d2d34eaeedf18828b3db6c85062f52dfd7555230d29b5431db742ed261d76c7ff61bc8e652dd9af5eae1";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/th/firefox-78.0b2.tar.bz2";
+      locale = "th";
+      arch = "linux-i686";
+      sha512 = "2020ca64cc8aac6fc5cf45fb9201dfff33f29c453bd2e876456017876f7965bde5308464bf08eaafd457da2d51dbee385cdf35921ca8f92f651ed9cf3b900697";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/tl/firefox-78.0b2.tar.bz2";
+      locale = "tl";
+      arch = "linux-i686";
+      sha512 = "9cef23915220fd61dd699fae18ce7ceac585d5b704ebf8268365a36108d0e52a488a88deb49e0b942fc2cfc164d5306d1bcba9c2ebefaabcead775bde181f368";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/tr/firefox-78.0b2.tar.bz2";
+      locale = "tr";
+      arch = "linux-i686";
+      sha512 = "7f02a59ba18c59648c98f5965bd0e960149b2edf121ebc2590353d4aa8fc26a270ef2fb16f9a80fa69e604244d56cdaf3029c12149049aabe9796e347fcc4d77";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/trs/firefox-78.0b2.tar.bz2";
+      locale = "trs";
+      arch = "linux-i686";
+      sha512 = "e1dc9905817bdff2db64f60440044204c9335c443b9db605915a4b412426ae877f5e7b2a83cb8b73ca534627d2b1b8b4b9a11306779baa8516ba06d85b3b9a18";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/uk/firefox-78.0b2.tar.bz2";
+      locale = "uk";
+      arch = "linux-i686";
+      sha512 = "3bb99eda1b5c33418ae7267dfe65bb905c617818f405b80e775d70d6bb8a78f143843aa2256e442aa36304ae6f4284524ce4836a1c864ba06fe558c202f04258";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/ur/firefox-78.0b2.tar.bz2";
+      locale = "ur";
+      arch = "linux-i686";
+      sha512 = "e1f71eb9b6b5f0dcdeedd3cca964a6110e6d9cf4e5fae815922135b3dee8bd6ce42c97b893eb922e436c5088130035793d99293ec1c5ce8c70d4ae5e0a097f7b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/uz/firefox-78.0b2.tar.bz2";
+      locale = "uz";
+      arch = "linux-i686";
+      sha512 = "39cc68ab411bbfb784ea3a70306ad2fd27cf377e796f3cf39a1f68d70363923dd1fb0cfcd39f62efa2940439969ae0467191c0c62ac68dfb5205b29760f9a923";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/vi/firefox-78.0b2.tar.bz2";
+      locale = "vi";
+      arch = "linux-i686";
+      sha512 = "4ab8ee124d40ed7a26ff0cf7257c60dc8a9879c82b6b881ee0fbae1662fa8e26f672ad59993419dbe93458723c4d4b1a1dbec261ec3811c348449a1a352dd688";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/xh/firefox-78.0b2.tar.bz2";
+      locale = "xh";
+      arch = "linux-i686";
+      sha512 = "fea8a74c935e7213e551b1f9c2c00286eca13a2d1a987bf523ebabcd57bcc5dfdcdceb23b4d589e354f116900b8ace28e41a069fa0d8692656e70960025e39f8";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/zh-CN/firefox-78.0b2.tar.bz2";
+      locale = "zh-CN";
+      arch = "linux-i686";
+      sha512 = "a5b1dcc1fad60e62f3d7b258193f7c76a807ec3efbc766c50096649eb1e4bb523a981f4b30c9d93a1bd814dea1d99230ad3091a1f8502ac44e177073c0afcb3c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/78.0b2/linux-i686/zh-TW/firefox-78.0b2.tar.bz2";
+      locale = "zh-TW";
+      arch = "linux-i686";
+      sha512 = "3f82220802d5fee6502464faf62bc0dd7edcddd0bb93d9e9636da70b7a5e4760d1b1928976793d984c56c6aa73cc9bb13b687590b0a85b395137fa4d7ec72d90";
+    }
+    ];
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/default.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/default.nix
new file mode 100644
index 000000000000..27eba126de9e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/default.nix
@@ -0,0 +1,210 @@
+{ lib, stdenv, fetchurl, config, wrapGAppsHook
+, alsaLib
+, atk
+, cairo
+, curl
+, cups
+, dbus-glib
+, dbus
+, fontconfig
+, freetype
+, gconf
+, gdk-pixbuf
+, glib
+, glibc
+, gtk2
+, gtk3
+, kerberos
+, libX11
+, libXScrnSaver
+, libxcb
+, libXcomposite
+, libXcursor
+, libXdamage
+, libXext
+, libXfixes
+, libXi
+, libXinerama
+, libXrender
+, libXt
+, libcanberra-gtk2
+, libgnome
+, libgnomeui
+, libnotify
+, gnome3
+, libGLU, libGL
+, nspr
+, nss
+, pango
+, libheimdal
+, libpulseaudio
+, systemd
+, channel
+, generated
+, writeScript
+, writeText
+, xidel
+, coreutils
+, gnused
+, gnugrep
+, gnupg
+, ffmpeg_3
+, runtimeShell
+, systemLocale ? config.i18n.defaultLocale or "en-US"
+}:
+
+let
+
+  inherit (generated) version sources;
+
+  mozillaPlatforms = {
+    i686-linux = "linux-i686";
+    x86_64-linux = "linux-x86_64";
+  };
+
+  arch = mozillaPlatforms.${stdenv.hostPlatform.system};
+
+  isPrefixOf = prefix: string:
+    builtins.substring 0 (builtins.stringLength prefix) string == prefix;
+
+  sourceMatches = locale: source:
+      (isPrefixOf source.locale locale) && source.arch == arch;
+
+  policies = {
+    DisableAppUpdate = true;
+  };
+
+  policiesJson = writeText "no-update-firefox-policy.json" (builtins.toJSON { inherit policies; });
+
+  defaultSource = stdenv.lib.findFirst (sourceMatches "en-US") {} sources;
+
+  source = stdenv.lib.findFirst (sourceMatches systemLocale) defaultSource sources;
+
+  name = "firefox-${channel}-bin-unwrapped-${version}";
+
+in
+
+stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchurl { inherit (source) url sha512; };
+
+  phases = [ "unpackPhase" "patchPhase" "installPhase" "fixupPhase" ];
+
+  libPath = stdenv.lib.makeLibraryPath
+    [ stdenv.cc.cc
+      alsaLib
+      (lib.getDev alsaLib)
+      atk
+      cairo
+      curl
+      cups
+      dbus-glib
+      dbus
+      fontconfig
+      freetype
+      gconf
+      gdk-pixbuf
+      glib
+      glibc
+      gtk2
+      gtk3
+      kerberos
+      libX11
+      libXScrnSaver
+      libXcomposite
+      libXcursor
+      libxcb
+      libXdamage
+      libXext
+      libXfixes
+      libXi
+      libXinerama
+      libXrender
+      libXt
+      libcanberra-gtk2
+      libgnome
+      libgnomeui
+      libnotify
+      libGLU libGL
+      nspr
+      nss
+      pango
+      libheimdal
+      libpulseaudio
+      (lib.getDev libpulseaudio)
+      systemd
+      ffmpeg_3
+    ] + ":" + stdenv.lib.makeSearchPathOutput "lib" "lib64" [
+      stdenv.cc.cc
+    ];
+
+  inherit gtk3;
+
+  buildInputs = [ wrapGAppsHook gtk3 gnome3.adwaita-icon-theme ];
+
+  # "strip" after "patchelf" may break binaries.
+  # See: https://github.com/NixOS/patchelf/issues/10
+  dontStrip = true;
+  dontPatchELF = true;
+
+  patchPhase = ''
+    # Don't download updates from Mozilla directly
+    echo 'pref("app.update.auto", "false");' >> defaults/pref/channel-prefs.js
+  '';
+
+  installPhase =
+    ''
+      mkdir -p "$prefix/usr/lib/firefox-bin-${version}"
+      cp -r * "$prefix/usr/lib/firefox-bin-${version}"
+
+      mkdir -p "$out/bin"
+      ln -s "$prefix/usr/lib/firefox-bin-${version}/firefox" "$out/bin/"
+
+      for executable in \
+        firefox firefox-bin plugin-container \
+        updater crashreporter webapprt-stub
+      do
+        if [ -e "$out/usr/lib/firefox-bin-${version}/$executable" ]; then
+          patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+            "$out/usr/lib/firefox-bin-${version}/$executable"
+        fi
+      done
+
+      find . -executable -type f -exec \
+        patchelf --set-rpath "$libPath" \
+          "$out/usr/lib/firefox-bin-${version}/{}" \;
+
+      # wrapFirefox expects "$out/lib" instead of "$out/usr/lib"
+      ln -s "$out/usr/lib" "$out/lib"
+
+      gappsWrapperArgs+=(--argv0 "$out/bin/.firefox-wrapped")
+
+      # See: https://github.com/mozilla/policy-templates/blob/master/README.md
+      mkdir -p "$out/lib/firefox-bin-${version}/distribution";
+      ln -s ${policiesJson} "$out/lib/firefox-bin-${version}/distribution/policies.json";
+    '';
+
+  passthru.execdir = "/bin";
+  passthru.ffmpegSupport = true;
+  passthru.gssSupport = true;
+  # update with:
+  # $ nix-shell maintainers/scripts/update.nix --argstr package firefox-bin-unwrapped
+  passthru.updateScript = import ./update.nix {
+    inherit name channel writeScript xidel coreutils gnused gnugrep gnupg curl runtimeShell;
+    baseUrl =
+      if channel == "devedition"
+        then "http://archive.mozilla.org/pub/devedition/releases/"
+        else "http://archive.mozilla.org/pub/firefox/releases/";
+  };
+  meta = with stdenv.lib; {
+    description = "Mozilla Firefox, free web browser (binary package)";
+    homepage = "http://www.mozilla.org/firefox/";
+    license = {
+      free = false;
+      url = "http://www.mozilla.org/en-US/foundation/trademarks/policy/";
+    };
+    platforms = builtins.attrNames mozillaPlatforms;
+    maintainers = with maintainers; [ taku0 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/devedition_sources.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/devedition_sources.nix
new file mode 100644
index 000000000000..f9045a4cc19e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/devedition_sources.nix
@@ -0,0 +1,965 @@
+{
+  version = "77.0b7";
+  sources = [
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/ach/firefox-77.0b7.tar.bz2";
+      locale = "ach";
+      arch = "linux-x86_64";
+      sha512 = "b377d891ec1ede4d13a55bf6dccf67e9cacdad118241902ea97a1719f784cd8dcae47fc015bc79e4bf7c4a76dd66472cc56a39173021ee1c259bcd5f0b7c3097";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/af/firefox-77.0b7.tar.bz2";
+      locale = "af";
+      arch = "linux-x86_64";
+      sha512 = "729d7a9cff65d7d002e732a4224921621e3b29c1afa0575506863dece3290722d916ab6072ddf6701628204e9b78d19a5b0ee90c11fc27772ea2eb30ae62858e";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/an/firefox-77.0b7.tar.bz2";
+      locale = "an";
+      arch = "linux-x86_64";
+      sha512 = "7421dac51885269cbdea9514e4d96a9dc9a5acff496176f80fedf8dc570bb3113d3eceaaf25203aeadf2357b364e46b010df2d973f0d8c39cd6df7e408d286c1";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/ar/firefox-77.0b7.tar.bz2";
+      locale = "ar";
+      arch = "linux-x86_64";
+      sha512 = "922cc579853ee87f9055b48c12df6ae5a756dcb0e6fef8907ea0befec3f7c2d53f158b4a089bd8bd42765104e0118328d27da4ca8924e732125b207ef72887d1";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/ast/firefox-77.0b7.tar.bz2";
+      locale = "ast";
+      arch = "linux-x86_64";
+      sha512 = "6d193a8a8aa22a667de3fa4c2b53ce9d9a674919c7e3c95fa7357cb968e3dd36bbd123b2fec06a3cb08bc298e5fdd38c4dce690d10ff15bd31768c7694d0e6c9";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/az/firefox-77.0b7.tar.bz2";
+      locale = "az";
+      arch = "linux-x86_64";
+      sha512 = "5048b6b859650523c1a98d6f0c471dce49833f6303a67f8bd02295dbd341981d145145671660ded3c777817aaf970b478e377bbd3fb367fcad5850402a16474b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/be/firefox-77.0b7.tar.bz2";
+      locale = "be";
+      arch = "linux-x86_64";
+      sha512 = "0288debe1839fcbc9067e26411233b8b29960dbbe65c0878955eae67b91da7de0d51000e8adcac1e3f3e91d531c371f677e418366e50ed33337a4ce46c811b6d";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/bg/firefox-77.0b7.tar.bz2";
+      locale = "bg";
+      arch = "linux-x86_64";
+      sha512 = "35821fcb332de76d2dbd039e9dc417631d8303921cb30947d39e6d0e57edd62f5fa1935238899076029189250a73dd657f25662f5bfdd193a5eb6227c706fb7f";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/bn/firefox-77.0b7.tar.bz2";
+      locale = "bn";
+      arch = "linux-x86_64";
+      sha512 = "82b553daf2ad0e93232b655fbe1c24928625c7f682ef755e1f1759847cd93f0b66bd000784274a40ab5ea0e89985018bf17835208746197b546244503138db55";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/br/firefox-77.0b7.tar.bz2";
+      locale = "br";
+      arch = "linux-x86_64";
+      sha512 = "69952a7d21006632a77c0e719bcdd3370d72760c98df348486d4f5c9d4d6ba73641b2133a615f8c5548e5708d4d68a499466d4ac32f690c9b76eea54f988325c";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/bs/firefox-77.0b7.tar.bz2";
+      locale = "bs";
+      arch = "linux-x86_64";
+      sha512 = "fdf0975e3b17097469f54e57b99fd99b69ed8241263600524b1599db94640b4b7bc105a67edcf67b70766188ba20ba7e9b7e96b181c2ed6de020c112af75dcd6";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/ca-valencia/firefox-77.0b7.tar.bz2";
+      locale = "ca-valencia";
+      arch = "linux-x86_64";
+      sha512 = "438c3e5e9f6a34bda35ffced50e00012a9b84ef589b8868a7746f4f0abbe4143e591f5710d075def1187d61b7f289df0c4a5add6ba4c37227d04509c2b645207";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/ca/firefox-77.0b7.tar.bz2";
+      locale = "ca";
+      arch = "linux-x86_64";
+      sha512 = "884d87560ea62da3218fc7bcb5b3b3fb9d98e70d5c13bf86627ce61e20aca5a8717db595b9141a302753fb0d704f1c1da99c0a8bb3e1f83fd3f6eddeeea5218a";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/cak/firefox-77.0b7.tar.bz2";
+      locale = "cak";
+      arch = "linux-x86_64";
+      sha512 = "6525cd987abbd4e871122a20c25c4ba353272437b56f82e1a9baec9581a6a10637a85942bbc261a375842660606259fd030c59e325b05aa9fe7f3dda77864a7b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/cs/firefox-77.0b7.tar.bz2";
+      locale = "cs";
+      arch = "linux-x86_64";
+      sha512 = "c3eb1d943b892fc41e25ee2bf15f0877ac297483595f7abea31332311e764353d8b12b7879044f688d8cc97f3104a7bc2b0305b02b8412a78e388e59b04d29ac";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/cy/firefox-77.0b7.tar.bz2";
+      locale = "cy";
+      arch = "linux-x86_64";
+      sha512 = "0a66eed4424c392f5dfaafa6aa198108757abffb069f8f665c06bdd24dfca08dff314447c57cd81815fdfaf54edc87eb67a6dd5c190e3512a15645e31d5d8428";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/da/firefox-77.0b7.tar.bz2";
+      locale = "da";
+      arch = "linux-x86_64";
+      sha512 = "e29aeeafc1f0d456dbe66d7ab07a632e91a25c62cfa03355eb3c4d9396529bf7908980b59acb9fe04204342b4c99f4f05ef5f440d638340272d20fd2bcfbc596";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/de/firefox-77.0b7.tar.bz2";
+      locale = "de";
+      arch = "linux-x86_64";
+      sha512 = "b3aaec2e3d1a23976378bbe526c63503406690e23ccbf0e255f54c5eae34452491f414d5a8be6f9d8e7bf14d6d4479b9819289074b342691c607dd1a013db45c";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/dsb/firefox-77.0b7.tar.bz2";
+      locale = "dsb";
+      arch = "linux-x86_64";
+      sha512 = "ebaff33285d3d78e22deb21da917174a8db140d05d511ad75dd1125361e4c1e7c6530f5fa096634f3bbe364c42c55cc0e36ca7066c05ac21822b28898841c49a";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/el/firefox-77.0b7.tar.bz2";
+      locale = "el";
+      arch = "linux-x86_64";
+      sha512 = "706fbbb44ecb6e7acb93d7fe8c1bd5f4fb3d3fad7a8e64648770fa69756309c0aaf0c2ff583b2bccb30c9f34450631ca886db0343ace3fa80bc1a6e7934cc134";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/en-CA/firefox-77.0b7.tar.bz2";
+      locale = "en-CA";
+      arch = "linux-x86_64";
+      sha512 = "62206c436f7fe811149936b8c73d62126e21874d63f66c72e7aff0e8d4f9fa26496a8adcd842071a602638ee01a14451c65c0ba8a2847f0b30b3d7da9c2625b8";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/en-GB/firefox-77.0b7.tar.bz2";
+      locale = "en-GB";
+      arch = "linux-x86_64";
+      sha512 = "6481706c1f34378bc4c804216217b15ca90a214baaf6ad29ca0fd80cf050b4f5eca17d29427d0e4bb0a5c966b407ad7d4ce08c085a68a193a500480c9196c760";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/en-US/firefox-77.0b7.tar.bz2";
+      locale = "en-US";
+      arch = "linux-x86_64";
+      sha512 = "74ece95a9a152addfc30de6f3daccbb64172c4081163467401d6459d4f7a65a7e459ec91663dd066f9cd7f867e7455e09fd1bad4fd9da7a6c3af20426474f95a";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/eo/firefox-77.0b7.tar.bz2";
+      locale = "eo";
+      arch = "linux-x86_64";
+      sha512 = "fca83582fe7cf14948fc352981dcbbc136cafbfd19fc85732466aa8af27cfde37264dd3168e9388c12eeb624d9af561bdd4caeceffe8d42a393d1133a8c20277";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/es-AR/firefox-77.0b7.tar.bz2";
+      locale = "es-AR";
+      arch = "linux-x86_64";
+      sha512 = "442f9e533a1fa892d19aef77ca64024938ab934f4f963268ccdef1a715a2c3f2feb73f9c2f6c46751217d4dba9f72dbe88ed1b1114be22e2839c0b34a68e8c35";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/es-CL/firefox-77.0b7.tar.bz2";
+      locale = "es-CL";
+      arch = "linux-x86_64";
+      sha512 = "29f4c00ccf180e239a6660f5832d6ba21c733ae0b90150b1da128e7cd072b6ff5974c6479e161c7b646f1367449b8373af9ffd7d072bad2a190e50627a17816c";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/es-ES/firefox-77.0b7.tar.bz2";
+      locale = "es-ES";
+      arch = "linux-x86_64";
+      sha512 = "f1d9ea6a116804e7deedf6e6d62b83224e1f7514255394f78fedecf500cc3343fc9fad1da1f690fde9a7eea4d3dfe0cd214a99a2f9bf3b83eb45ab00cc12de7e";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/es-MX/firefox-77.0b7.tar.bz2";
+      locale = "es-MX";
+      arch = "linux-x86_64";
+      sha512 = "8d4be6d04c22e1c98953b1a1468b2768d956b4d0190638cd24273d1a0356dd8479dca22566c5d45b8ec18a074be472e9ba9726b5224fbd3a2b7f05af3b46c411";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/et/firefox-77.0b7.tar.bz2";
+      locale = "et";
+      arch = "linux-x86_64";
+      sha512 = "2c9962437d764aa27dc3d6a6c00e3cc40a456504cd74fe3a7f74a0f0216d54e9e4d9383fe6c5368fc28ae08d0b5424f65b9f50e33a7b6dc14c344a1aafb90fd0";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/eu/firefox-77.0b7.tar.bz2";
+      locale = "eu";
+      arch = "linux-x86_64";
+      sha512 = "c465778901b01e966fdf81e56b0f1b7667898ff0359711fd32e343692dd216704941e30c3ae7f4882f42fa297715f778e68094db85583c0e60a57cb91e95cbce";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/fa/firefox-77.0b7.tar.bz2";
+      locale = "fa";
+      arch = "linux-x86_64";
+      sha512 = "e194a9be6f993b177031a2fd3d91d955abb6d7a4d249e8864d5a894f1f9af87c39034801ebc9d1cda5f934c8259706c6e7fdcea344b5602f6d4ea8008375ed53";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/ff/firefox-77.0b7.tar.bz2";
+      locale = "ff";
+      arch = "linux-x86_64";
+      sha512 = "613dd230689ca36df61d558db43d8d204da5168ed1172bd29e732e0a640d5f954ec4f5eb03e8c6abe5646139005981bfed716dba8fcfdb2e697627e563a6ba0b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/fi/firefox-77.0b7.tar.bz2";
+      locale = "fi";
+      arch = "linux-x86_64";
+      sha512 = "63dfc7ea59a29901165707b3c11f1087c6e23a27805de1d355d677943c84303b7c54c199d0610a714b930539bbde96991a79aa895fdd3f6952174548fe014d0a";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/fr/firefox-77.0b7.tar.bz2";
+      locale = "fr";
+      arch = "linux-x86_64";
+      sha512 = "477539bce633a1447937d5689972fedaa1592954ea3cd1537f648d1aca9801fba8441ba6c35cd2148646607982d84fec743bbb115da6807f29790c38d5c22e45";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/fy-NL/firefox-77.0b7.tar.bz2";
+      locale = "fy-NL";
+      arch = "linux-x86_64";
+      sha512 = "cab7637566adf3d41e25915b6e94020214da31aa12a6e913754d1de2fad0fac9abf61686af64bad21eb07e696f23ece8ac38d8255848d5bcc6b0c1ba4c9bd374";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/ga-IE/firefox-77.0b7.tar.bz2";
+      locale = "ga-IE";
+      arch = "linux-x86_64";
+      sha512 = "843f136635783c6a586ed273f5d97f152b004406c53958e59d265f48e5390fd42246c2e92491ff4b39633bcfa15ab1c8c420b3749a468b87672ad900fbe23de2";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/gd/firefox-77.0b7.tar.bz2";
+      locale = "gd";
+      arch = "linux-x86_64";
+      sha512 = "380ee84b44b90329eb253a604508584cb15fb3d36dd25a859dcfc8443cedefa54959fa958827132d1260cd040b70369d65319f8e18d06359aeb420b96068ea7d";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/gl/firefox-77.0b7.tar.bz2";
+      locale = "gl";
+      arch = "linux-x86_64";
+      sha512 = "e328dfe710d097c49062b9d0a54f42d4896177ad7ba174fb5e45b37baf78ada25089360bb0bc7211d605cab92a2f3c220cd1b78a7bc0c65ac17d15314c68dc94";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/gn/firefox-77.0b7.tar.bz2";
+      locale = "gn";
+      arch = "linux-x86_64";
+      sha512 = "2f65aa3b62e2573cbfb0591e1ccc729f983035c3ada9159e9fb8014263f38731d19e5a2da41943c0c540ff1dbc7620c9fde82c24dac49da7b2d920c1d7faa4f3";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/gu-IN/firefox-77.0b7.tar.bz2";
+      locale = "gu-IN";
+      arch = "linux-x86_64";
+      sha512 = "2d756897a5e3f7f038d3e000bfe6f1976611eae436ced45d5c06eea140ba26041c08588b6ceb7fc5026945a19a46715b154d0860ec7744762183f17d07b5e792";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/he/firefox-77.0b7.tar.bz2";
+      locale = "he";
+      arch = "linux-x86_64";
+      sha512 = "fb5e2142f842ca0afbc5473dc3031eaba2bbc1f7ebe412d88696f05d8ab7102d9d8c57c318e7f6a8106b07e9cd6d7832ec9012868cf6b7571367ae1514959cc3";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/hi-IN/firefox-77.0b7.tar.bz2";
+      locale = "hi-IN";
+      arch = "linux-x86_64";
+      sha512 = "5e779dc92115568c08ad511469e03af1b4018ed15638f88ff83df08cd5dacaf9bda39cb5877757f7eef3d0d47b43777eac5363ba4a2a4ea895663d8deedd643a";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/hr/firefox-77.0b7.tar.bz2";
+      locale = "hr";
+      arch = "linux-x86_64";
+      sha512 = "2d196ec8cecd41fc5ea76aa535d830f98cec1572f7d8e7d8999769c09a49cd2063c9cc59314748579b8fb0fa9446b22df96b43c4f462b25dab96c265ba4f4d41";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/hsb/firefox-77.0b7.tar.bz2";
+      locale = "hsb";
+      arch = "linux-x86_64";
+      sha512 = "647bf9dbfb8f5d053b84c507abc1b121387464542621264df72236a29accdb895e8c71ecef80f7a5a241ff4a18db47e4340f67a0653669e39cc56cfa622dbc1d";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/hu/firefox-77.0b7.tar.bz2";
+      locale = "hu";
+      arch = "linux-x86_64";
+      sha512 = "7a67cd7d6c4563189c93bc2b418423d6f787b36c5b188411ce49f763421d66ed37404b9caa0bf63ec4c150019df79de1992ef5a98600e63b5a8902ab44354a0a";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/hy-AM/firefox-77.0b7.tar.bz2";
+      locale = "hy-AM";
+      arch = "linux-x86_64";
+      sha512 = "3a9fc6e362af83a1776619e0a5b36ce6f5e59cb46d2e8f9be2c57bc35b7e4e2f82b5ba4b61e637bddb470342fa67993b0374f2065946ae0ce24af1e187695211";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/ia/firefox-77.0b7.tar.bz2";
+      locale = "ia";
+      arch = "linux-x86_64";
+      sha512 = "5eaa3a5d9b0cfcee453de81138ab9ffbf1abb58eedb97a6b1dddc73eeb919c89bf077138d7b86bf804bb545fdec404724f7f76936cb09fca3844a93c7008dea8";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/id/firefox-77.0b7.tar.bz2";
+      locale = "id";
+      arch = "linux-x86_64";
+      sha512 = "714c19533e92d23d7ceb7ba07dea6842d6f378c8d705ab9fd51769720c1b7faa8fdfdc9786dee881aeb5106e5a38b840aae4f5134962db225d0d13c0a9dd886c";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/is/firefox-77.0b7.tar.bz2";
+      locale = "is";
+      arch = "linux-x86_64";
+      sha512 = "0b7216b9c09eb67d774fd0b8cf1a1b43a6cfd14d5327f6768136de3190974bc2fcb250f920253de8e77f7c61efcd23d0790da1eac2aeccc77e4e74fb4cc5d643";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/it/firefox-77.0b7.tar.bz2";
+      locale = "it";
+      arch = "linux-x86_64";
+      sha512 = "898c073e7335e7f2ef15abcbe9411f31522c2da464b62c2997550660dcb068fcaec2ab5e12fa4818816a34b37cf2a46bf9c5b36f65697a521cd5b0c05960122f";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/ja/firefox-77.0b7.tar.bz2";
+      locale = "ja";
+      arch = "linux-x86_64";
+      sha512 = "f6dfd4d7aa9c1a0ced11034b59de3add54ef2b30aaff30a14081824bcfbd7bc020ef840f8c12544329b506fad1567400d2c7f57ddea22bd1fd37c17ddbe851d9";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/ka/firefox-77.0b7.tar.bz2";
+      locale = "ka";
+      arch = "linux-x86_64";
+      sha512 = "5dfb93fa63f26772a52b7d52a0839f1bb624408097cf927de0222eb06fc9b9b7a9649475d2fc6a02e7c66ab1e6aecd8fe3d959452a73b1f9d3d1be6fa1aa018e";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/kab/firefox-77.0b7.tar.bz2";
+      locale = "kab";
+      arch = "linux-x86_64";
+      sha512 = "767e3793cbe7e4023f227818617819026693287c3927d18193883e603d21d23c0239173266c89d776afc8ab0cbfb40ce9b4516e4663a44928abdb7672dea3f85";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/kk/firefox-77.0b7.tar.bz2";
+      locale = "kk";
+      arch = "linux-x86_64";
+      sha512 = "b4b7147631146a53b9ab32f8a3319466f0837219284d4757e29588890bd518b45c7ce329cf73e3840c018a160a13f841851c407a0c4ea06cc3acce163be8cf79";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/km/firefox-77.0b7.tar.bz2";
+      locale = "km";
+      arch = "linux-x86_64";
+      sha512 = "d3fc7706838fd310d34e9b45ee2fbdda352620b434e011a9b54aab598777001aaf24db2ea528da413356a486fa330729d121acf7e103905eac9bd914b5473426";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/kn/firefox-77.0b7.tar.bz2";
+      locale = "kn";
+      arch = "linux-x86_64";
+      sha512 = "61621680b5dddd1058e58e741d2190a7d07ca74301706dc61d823b1577ba3b76c72cccd30fa64f4b5b95748e6ee4077945d6b7dfcc21d648f13ed7be62de2eca";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/ko/firefox-77.0b7.tar.bz2";
+      locale = "ko";
+      arch = "linux-x86_64";
+      sha512 = "66677835319f120fbd2290d7a050f2846484229527820e3e49daf3b7f377acbbfd0a736f2e71c388691f1d04ee013864813119e7f7c5c7528887b8061b62bc0b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/lij/firefox-77.0b7.tar.bz2";
+      locale = "lij";
+      arch = "linux-x86_64";
+      sha512 = "d590da1e993a5d598411717a9e4ec87876066fe106ae1cf37deeed77a0508885d47836cf6653d144be30dc21917a56cf5977f99f3c38d5e9843eb52d69a7d267";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/lt/firefox-77.0b7.tar.bz2";
+      locale = "lt";
+      arch = "linux-x86_64";
+      sha512 = "450772baf4bec1a8077aa4ae1dd52d84ecefffcd4f93b9c486bbb4eec12c879a8daf2cbe51dfa2f81598abab6242bd63100d8243477d3176985a689eb2688147";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/lv/firefox-77.0b7.tar.bz2";
+      locale = "lv";
+      arch = "linux-x86_64";
+      sha512 = "3ef9bcbc9356a83b20f3f3fa83530790209866456f44f9115f8f22a1dece72bc28f485f24dbfb854c77d4306e2f3da5f759f7fbaf151ac8a8f303b2dd24832ae";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/mk/firefox-77.0b7.tar.bz2";
+      locale = "mk";
+      arch = "linux-x86_64";
+      sha512 = "59e8a7fdaa37513e11722397d9708db397aca75eecf3ae2e3b99f42a9e40e89b183c6ff36fccec1c310269b5a4ec3ff9f81985ece314a868585082e4d132012a";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/mr/firefox-77.0b7.tar.bz2";
+      locale = "mr";
+      arch = "linux-x86_64";
+      sha512 = "bb7a9577fc6080fbb82918601405e8a6da59662c9edbb568e558ceaf71e04e95aa3dbd7acfbc780759b0cdeaca4b67e24cec1aa57fec30473d8410fe717450c5";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/ms/firefox-77.0b7.tar.bz2";
+      locale = "ms";
+      arch = "linux-x86_64";
+      sha512 = "e8bfbc9f54b3cb2d2a3f816329948f9e13723dc6c680c41e33cdf3bbe4825e89c9547144cf5dfd3ecebb0fe8759cbbedbe7caddd85c31007ab28b42219a8c159";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/my/firefox-77.0b7.tar.bz2";
+      locale = "my";
+      arch = "linux-x86_64";
+      sha512 = "b95c1800738ebf79b5ffc64fa1a11ef772614eef6f49faeb977677c31e545e4bbaec3c9c75567afdc75397cd40dd80a671ff03ac17bc62ede2bdf162323e6559";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/nb-NO/firefox-77.0b7.tar.bz2";
+      locale = "nb-NO";
+      arch = "linux-x86_64";
+      sha512 = "505d68a0009efa7c8312fc5230c00e3d72c8412d6308360cc10257ceaeff98b3f22a5eea9ceaddd7566a9a690b4f0c04f91dd8a447bd338af02c915115cde506";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/ne-NP/firefox-77.0b7.tar.bz2";
+      locale = "ne-NP";
+      arch = "linux-x86_64";
+      sha512 = "01eb90cc8c93afdc34fdc0e47eb5b4a012c9fe7d3dde1301ecece240562766066901d80cd3789e97f2f7a7188d56aaf7bd67c56c4e4a210b30ad10a738ca5b1b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/nl/firefox-77.0b7.tar.bz2";
+      locale = "nl";
+      arch = "linux-x86_64";
+      sha512 = "486aba5ffc551be80e8e9b35cd92b903e318a3870638c532dcfc10cf0a7d545825eb7ef54b74d76f66cca2e86e25614896f78eac63b3662b43ed313b853ad4e7";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/nn-NO/firefox-77.0b7.tar.bz2";
+      locale = "nn-NO";
+      arch = "linux-x86_64";
+      sha512 = "b0e885c206d93c294997b3798a93738f99e4bbc459f7e8c7ff688414b73f69509686056f86b12407677a79b7d4bd7aa34f4dbebd5965c6a92766f3448a33cd79";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/oc/firefox-77.0b7.tar.bz2";
+      locale = "oc";
+      arch = "linux-x86_64";
+      sha512 = "1b04601dfa2110a2999dea0d6fcc19fc40b487296c705a403e741c9a9e0405fc90c774af7665c9335e605d6fcba3c8826701a497483b896e7911bae3a7ca7a80";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/pa-IN/firefox-77.0b7.tar.bz2";
+      locale = "pa-IN";
+      arch = "linux-x86_64";
+      sha512 = "59d6957fcd1b2527cb77622df7cec4267d84fea180dbd2a7397871c90b2c27e8dd0b01881229eeb7219b548258d72448e690d654262ee55cfdcfa9d4a337e102";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/pl/firefox-77.0b7.tar.bz2";
+      locale = "pl";
+      arch = "linux-x86_64";
+      sha512 = "1d18dc2e580238d59997198d9aeea8673aa1d32db329c0dae79e52d9e3e64b063f4b96695bd18ca0a449ac3fd5bf77815aeeae05c108c139dd73134199a6e599";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/pt-BR/firefox-77.0b7.tar.bz2";
+      locale = "pt-BR";
+      arch = "linux-x86_64";
+      sha512 = "1d8bf57c135e56eb6fd823c605e870aa62f2b2c4d99f50447169411a3877fc089c588fb085d4c3a2dd62a2a955c5f7bb39cc6e8c391dad0f6c2d1f20f4a5944a";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/pt-PT/firefox-77.0b7.tar.bz2";
+      locale = "pt-PT";
+      arch = "linux-x86_64";
+      sha512 = "41d3c18252287a172dbbd70c713e7176de8ff107ba0bff47c6f2546b8573bdb11508ca550fd8cc56d23172a84e30e1573dfa43232d4298c1862d5e8fa0ac2451";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/rm/firefox-77.0b7.tar.bz2";
+      locale = "rm";
+      arch = "linux-x86_64";
+      sha512 = "b0b485f098475c1a1d422b8bf170e77ddd3ff2b7b3432bbd43dda975522767b9103368c74b8a74b7cf5639b6fe72690380b9c7c94995afa1badf728969123f62";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/ro/firefox-77.0b7.tar.bz2";
+      locale = "ro";
+      arch = "linux-x86_64";
+      sha512 = "ad8312d0ca6595dcf0073fc2de8a52dac61610e2714500372250ce142f1220ba4449f6cd5f0c0a2754eee11aef5a71062e82c08417ffd0222d771ea701943b3f";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/ru/firefox-77.0b7.tar.bz2";
+      locale = "ru";
+      arch = "linux-x86_64";
+      sha512 = "ca9bdf02f34f92f0c752fbb55d6f69d17206f47b8745df9d224dca47d57ca1cc4b5646f374b37d1250733f66d83afe287bb698bbf783b08a6b7ddfdfe35a2e64";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/si/firefox-77.0b7.tar.bz2";
+      locale = "si";
+      arch = "linux-x86_64";
+      sha512 = "2c621f00a6b2f2978fdbc28fceadcf2385711cc56c0b47c536c690ff3c7549a2b9cae71c9eb1ce40c7a199cc936f1402e7d3f5055a70b98b015ac25006019464";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/sk/firefox-77.0b7.tar.bz2";
+      locale = "sk";
+      arch = "linux-x86_64";
+      sha512 = "2fbbdc40f1308513fb9064f6057a383af60d5a7f60d07a4918f6631d59762a2a8cc11b23de167ed0a7317c290436cc15443e6d893b92a53df1bae2b7da3098ba";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/sl/firefox-77.0b7.tar.bz2";
+      locale = "sl";
+      arch = "linux-x86_64";
+      sha512 = "7a993dea012e011c97b98938bdacba53c498fd15bb94b9deb05b27d7b842986e3748aef6a6bf96b1e288c8bf59df5ded37337ffd10063b3bf7afa81cfb1622f5";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/son/firefox-77.0b7.tar.bz2";
+      locale = "son";
+      arch = "linux-x86_64";
+      sha512 = "22acbd2b46bc7eba4003295fcd2fd01dd9e6ea7a45b7ecb595d55801030dd7baa7363f2d8b414554b07e8e4ea7418901b0412c43e5bc7a5c3c03bcf54318c5f3";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/sq/firefox-77.0b7.tar.bz2";
+      locale = "sq";
+      arch = "linux-x86_64";
+      sha512 = "5e0f2a51073728b8b90eef284f9e632365360f45839b0622e6a52c34dd0eb41ee7ad07d320e6b3610ea6265ae48daa05cfc022bff0b2bdb97caa8dce1b38e0e2";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/sr/firefox-77.0b7.tar.bz2";
+      locale = "sr";
+      arch = "linux-x86_64";
+      sha512 = "4bdd5193455e99f98ed90aa05349e2beae496c44718f07b6d81f81abe75d755f4a88fba8dc020998fd6199dcf1271dc7fff3177625e7872e1d271da743d4de00";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/sv-SE/firefox-77.0b7.tar.bz2";
+      locale = "sv-SE";
+      arch = "linux-x86_64";
+      sha512 = "14e7db0c882d5a84439926602d6d706084001499aed5db4adae6a11cf7c25e95d0c77a59340c74bbe11c6cbf960500eac902a2ea23f7bbbffb9805b789242eac";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/ta/firefox-77.0b7.tar.bz2";
+      locale = "ta";
+      arch = "linux-x86_64";
+      sha512 = "f0948c827cedd46641a26facc08c30c1b8292d48d8d703fd7fa846bdd1c9f631feb64b50457fc6d10b0b2a6effcf304b659e1d5f666215613bed75307de37a6e";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/te/firefox-77.0b7.tar.bz2";
+      locale = "te";
+      arch = "linux-x86_64";
+      sha512 = "a0df152f09d0c6abfdaaa1c3c352282374c71fb2cb674199ae8fe4c53b891d98a5cbb19c5c20e92e7cb602bf4be1b66ccf6db295cb91190b639e2ccac9c68b86";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/th/firefox-77.0b7.tar.bz2";
+      locale = "th";
+      arch = "linux-x86_64";
+      sha512 = "eda5d9fc2798e04addb6cf093548cd819a23ca480e392440838dc8a023e074b4b235a2df7a1ed26d4fd795c7e21c041be6f7c08d6dae35b05fefe9c31c79bb9c";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/tl/firefox-77.0b7.tar.bz2";
+      locale = "tl";
+      arch = "linux-x86_64";
+      sha512 = "09aef5e2ff0eb455284ad185274fb6fefa2ff6f768a16e6301c58be9f97aa357bb18147d7a909694c69daae683ac636ebb16f800b6e0d7d90e931426f74cf3a0";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/tr/firefox-77.0b7.tar.bz2";
+      locale = "tr";
+      arch = "linux-x86_64";
+      sha512 = "f936b11f4fbe0ee2f31b5c4f773e3e0044468bec15806afe21ee4e3f95862909f6cd68e35731ba29a32aa7cecc8c06120c3722500d9f3bd2912a29702045251e";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/trs/firefox-77.0b7.tar.bz2";
+      locale = "trs";
+      arch = "linux-x86_64";
+      sha512 = "4089f69168225d62d89bb34bf8c2cba4c9225b1b768e9a94b13024bdffd485d83f3389a8d9964b6afdd5575917d70070d7779dda0bd0119a15946ceed2839afe";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/uk/firefox-77.0b7.tar.bz2";
+      locale = "uk";
+      arch = "linux-x86_64";
+      sha512 = "4ecafcda0026949c745378e32a8bb68a1dcdaa292db74f7a88bd13e38dd39f2d1748a69e9e2827ad6e8a2a71f1872f0ec3cb846ff071954a41dee242ab233243";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/ur/firefox-77.0b7.tar.bz2";
+      locale = "ur";
+      arch = "linux-x86_64";
+      sha512 = "25bf5543b9586e542968aba4896a0c0c00ab5eaf99b82c8d9b7354c82c33d2eab68dbae2295823230cd5708ef02817a51e9b9f12954a43aa0c0b131a44388d72";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/uz/firefox-77.0b7.tar.bz2";
+      locale = "uz";
+      arch = "linux-x86_64";
+      sha512 = "90aaa4ed0f9377d17ec0b02ceb934ea775d5f378a01f8b4c0ba7cf5c67975bbf4f7ac59103e8002116118972eb6d2a48c6dd3d6cf515f766667309d0d515f994";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/vi/firefox-77.0b7.tar.bz2";
+      locale = "vi";
+      arch = "linux-x86_64";
+      sha512 = "0fccb7e7aa3ae6f8b539864ed44c7d8349ef96ae5d55d9ebec33bdc1dbf470a9a831b440fb0cf008e86421290760422201ec55e704b5ecb388155605ddaf35a8";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/xh/firefox-77.0b7.tar.bz2";
+      locale = "xh";
+      arch = "linux-x86_64";
+      sha512 = "fd7d880ace4221cb8031bfcd9c90c07ed51fe345c9592791bcef61e52a29fefc035bce0a24a24594f310cb7113ebaae8525df0b2462f86560a45253b89b7a53b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/zh-CN/firefox-77.0b7.tar.bz2";
+      locale = "zh-CN";
+      arch = "linux-x86_64";
+      sha512 = "d7c386894783434732c56460fa30de8ecc360041934743b4632c8a03c36b00227fa8e23d2180a7f5dc742cb324329aceb2eaa4831c9eb9545920a95ae3b7db44";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-x86_64/zh-TW/firefox-77.0b7.tar.bz2";
+      locale = "zh-TW";
+      arch = "linux-x86_64";
+      sha512 = "52a64ca3d152b0afa2be9206ad08fa1edef8411d41c23d984c4015b629bbc0ba21970c1059cda76041366221a193040db474218dabad7131766e53ed6b719d81";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/ach/firefox-77.0b7.tar.bz2";
+      locale = "ach";
+      arch = "linux-i686";
+      sha512 = "d88c9bf2fc5b38d367a3e6210b59a4488092d42b380bf020bdf82b1c0527f03ecd48c08813a8bf73fcea48ff58a77fae80b2c907498f2d9f5275fc3a7f80c5a3";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/af/firefox-77.0b7.tar.bz2";
+      locale = "af";
+      arch = "linux-i686";
+      sha512 = "cb15b0cd5980a7021abadbe765c714604840a2127722f8b61bf9187bcce3b70af2e902220d5f0faa0cc7b3d513e64a250bbfe43a090d13ae4b8835db0c28428e";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/an/firefox-77.0b7.tar.bz2";
+      locale = "an";
+      arch = "linux-i686";
+      sha512 = "8ee5673c42ba46e41ede5f3657a5fd7c9073fbf9f27e5583a0471802542012b67e8e0730cb58f0833fdb1d036dd887ed797b752d79290ad8982d3addf6739c44";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/ar/firefox-77.0b7.tar.bz2";
+      locale = "ar";
+      arch = "linux-i686";
+      sha512 = "25a2d1144a734270e0304bfc6a42a6f6585bb79e7289b381791fb6a45b86891f570c9c4d6a71de2fb8f0aefc6533a11862363ca60bdff14f817704fed4e9bb23";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/ast/firefox-77.0b7.tar.bz2";
+      locale = "ast";
+      arch = "linux-i686";
+      sha512 = "525fea1b71c9a51706033c4b2f523813e61666df6230ba51752a2161704c48c26ddd5d781285186beb53e90f01cb35e7de743723bb049b729fe26799eca6036b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/az/firefox-77.0b7.tar.bz2";
+      locale = "az";
+      arch = "linux-i686";
+      sha512 = "743377d9a76b6acbec6a7c005824c6286e10e26e30a6bce90a8750657d52e19f62cb6653513a241ff9a6f3cebb5caf63dc438293568db5418827cee6dfd94b56";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/be/firefox-77.0b7.tar.bz2";
+      locale = "be";
+      arch = "linux-i686";
+      sha512 = "2b96da128311fbf97cbb31e3b4b6e0d1fe0158ff7892195d7074de67e0f5b7e22f82c8131dbc0ff209e043d89191d269f5b7af224f6d2646fb5a58168b2f0d31";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/bg/firefox-77.0b7.tar.bz2";
+      locale = "bg";
+      arch = "linux-i686";
+      sha512 = "fc5712958fd93700d39bc60799a32e99ba0db868997e1c0b4750bf6258caab3296decc55d14a48d9ed065b9beabfcbd9b7979fd9289b4243d0449fa124267e2d";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/bn/firefox-77.0b7.tar.bz2";
+      locale = "bn";
+      arch = "linux-i686";
+      sha512 = "eef007d4b60b487a1a8352ed7daab3cc5fa0f3e24a235f5fc28979c2fa69390032feac2590401533b66add014ef85f573e89613334b0b4933bad903c8576d566";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/br/firefox-77.0b7.tar.bz2";
+      locale = "br";
+      arch = "linux-i686";
+      sha512 = "51f73c61512ac4f568161ea0dbc045a11dfdf810bed9e56a109c127b8e64b649cd368f02f06791433ef694190a08eb5b2efc66db48674244553c997b783d0610";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/bs/firefox-77.0b7.tar.bz2";
+      locale = "bs";
+      arch = "linux-i686";
+      sha512 = "71a6dcb6af95976882eaaf330dcbd64942decc76ad2a110e11721d8dce64c1fc28522520f2dfd1484b430c8c5a6f531c57ec96e533d35a7cb3bc3d688939ef8a";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/ca-valencia/firefox-77.0b7.tar.bz2";
+      locale = "ca-valencia";
+      arch = "linux-i686";
+      sha512 = "e18c221ca0781c3a9a95ca1b2542eb7bfd66a09c9ceaa88b9d0ef76396f21635fd5d79bcc4881432426673865fe9aea679b8c4986bae668587371bdd237a3a89";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/ca/firefox-77.0b7.tar.bz2";
+      locale = "ca";
+      arch = "linux-i686";
+      sha512 = "76135be63a3da2968dd35055207d58fd58241846b4e680aba92541047ddcb97635ebb58b218dd86f86c94aaccc58162007e964a63099b26d139cb8537787ff10";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/cak/firefox-77.0b7.tar.bz2";
+      locale = "cak";
+      arch = "linux-i686";
+      sha512 = "088e14979cca1a9e9296dc0fba4507e2e5a04b71211fd9c4d64032b6e76f2c5060eb40b331762727dffaae5595883e7162b8fa6c7915666e0c4183889ae64089";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/cs/firefox-77.0b7.tar.bz2";
+      locale = "cs";
+      arch = "linux-i686";
+      sha512 = "35dc0443d861b8345610448ec145b1933c6de5eafca6fe83580632d086f0ca2a818bfc03cab85e9cf1aeb32a7ded6f47e7f9af1859c1432d8ae47f09440d81d4";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/cy/firefox-77.0b7.tar.bz2";
+      locale = "cy";
+      arch = "linux-i686";
+      sha512 = "5d3ffd08d02c2be15fe5e66c7fce402b2b3fa6534192fdfc38f718d3a341bdde25012a59e5f8481314986fe2cbeffbd9ed0d79726067fa4d3658d27855839af7";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/da/firefox-77.0b7.tar.bz2";
+      locale = "da";
+      arch = "linux-i686";
+      sha512 = "79dc2dcb1d1dcd17da99cc668086a42b25b32f867cd381016f5cf76529363680db5c7ffe53f2660d8883eafa965e320f3d8bfca00dd84759685dfdd2d3504f5d";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/de/firefox-77.0b7.tar.bz2";
+      locale = "de";
+      arch = "linux-i686";
+      sha512 = "075639fd73e2595c5bf99632e0aac36664675a3aab3b1b96e9fa701fb4b4a6988a4d966cd111a206fae5a6d21a79286d7b24ebff44738fed2cba0fcb7af29ed3";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/dsb/firefox-77.0b7.tar.bz2";
+      locale = "dsb";
+      arch = "linux-i686";
+      sha512 = "05d5b528aad3ca76449300e4708c5ee8c13951e72c8343b8c0ae7587d2470c485e7320e7ef70bf806caa2530217d525ca72a95f046ad5a1576d5fdd69a971969";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/el/firefox-77.0b7.tar.bz2";
+      locale = "el";
+      arch = "linux-i686";
+      sha512 = "08334bae31f5ca6da017fc93889303d93f39be6d27bd79031e5f4f01038d78caced4ed5f407730d3c48b2094cb40448906f53f190415830d91bf7dda1463fbd7";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/en-CA/firefox-77.0b7.tar.bz2";
+      locale = "en-CA";
+      arch = "linux-i686";
+      sha512 = "054fe82f776c2b38175ce2ea6acc10f81c2e9f9ce3e6f96f49cd8d0521d447d26386384327011d0f7879e58a3af81c93b7f227ad4b5385fb8903ea29c28cb1ca";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/en-GB/firefox-77.0b7.tar.bz2";
+      locale = "en-GB";
+      arch = "linux-i686";
+      sha512 = "82e9e546f77e94d4f91eac13b9f1600bcbbe05a250c6049693489ca46c93a3ccfc791879123f1b49c82ba83c9f472e8f6f3d00f50794cc491a99d756ee9eff22";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/en-US/firefox-77.0b7.tar.bz2";
+      locale = "en-US";
+      arch = "linux-i686";
+      sha512 = "f8e5e352b94e9ff12c86f2b2d189c88b6e1c24cd912e3777eb256403e691c0a28e860c22e098d8a3b4c5d526580db2da2deb408f1e8bdea91deda5dd8cb94e9d";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/eo/firefox-77.0b7.tar.bz2";
+      locale = "eo";
+      arch = "linux-i686";
+      sha512 = "c6a806f7b7655861c1e44837e6b116c70d64a158e5f38c13179d52230d1bad34121c04865959d0608f6a3193bbd55fe081d2b6b3f9ffe9c9a41a1ea8c24d63ce";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/es-AR/firefox-77.0b7.tar.bz2";
+      locale = "es-AR";
+      arch = "linux-i686";
+      sha512 = "c894fbce700c17200eee40d35fe423dfb19f5e4703b1bbf39925e4fae85e094eb5124b8dcd1e8f09f57e73be4793a92af32018b385bff09f7d111f8da06517ec";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/es-CL/firefox-77.0b7.tar.bz2";
+      locale = "es-CL";
+      arch = "linux-i686";
+      sha512 = "9896a7b6a72632a42b68e4bf0effb25b0882cbf1571c782045de452a5e58608b41fcd2027cec5677d31a454f6bc82b8104df7490bf1c4b1b05a36aa170fd2e7f";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/es-ES/firefox-77.0b7.tar.bz2";
+      locale = "es-ES";
+      arch = "linux-i686";
+      sha512 = "4708a94835a987f040e27342d73adde1094de3824ae444d124f2e02223de5f4bc280fbd954631eaff8f17d839896c02050c78e00dd54b4a166f291faecedf1a8";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/es-MX/firefox-77.0b7.tar.bz2";
+      locale = "es-MX";
+      arch = "linux-i686";
+      sha512 = "430c0ea67e09e36b5736f039995b3f6ee4a7bc83327366acf34cf2ac11d79c49d37a336b9b0a39a61381fb4d9c47b0908f25b4f303fa4b21242fc46749498c17";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/et/firefox-77.0b7.tar.bz2";
+      locale = "et";
+      arch = "linux-i686";
+      sha512 = "e200e5b679a45d6a03784373861a7e78151289888f05561c9f58f4afd9cec36df5df85865d790483989b23435c1d762e8020863d0f3dd6e02f3fca31fbf642f6";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/eu/firefox-77.0b7.tar.bz2";
+      locale = "eu";
+      arch = "linux-i686";
+      sha512 = "d7d5355aa60043fe759a86134bba37fb99ccea19978b0c56298f1acd465e5ec53d50761671e2636c535cdc6003fa82f8e99027969d254a3f0003995ba7db995f";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/fa/firefox-77.0b7.tar.bz2";
+      locale = "fa";
+      arch = "linux-i686";
+      sha512 = "fb174f97e2e21f6ba70fa8eab316a445a0c01a32fb00237790cddd4e6a32e461e89977238a47317ef2c11268d75ea34e84ecf96eac346661da6a4e7fd1509666";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/ff/firefox-77.0b7.tar.bz2";
+      locale = "ff";
+      arch = "linux-i686";
+      sha512 = "d453cd657ce54da24179b74723e2e0c793d6253f31bcfab914ce5cce9992266a3533b0358f53ee17aac0b1e616bc9c5c2d32112a514ac85061da61bd7b8a425e";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/fi/firefox-77.0b7.tar.bz2";
+      locale = "fi";
+      arch = "linux-i686";
+      sha512 = "ddd65dbe5e8a9cc59b1c44b40b0f836d56b1042b5a2a37fd021166929485fe013acd14ac59f0c985b6a691b1ccd8b62f5d0bbe89ba341c414003e73fbe839546";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/fr/firefox-77.0b7.tar.bz2";
+      locale = "fr";
+      arch = "linux-i686";
+      sha512 = "5473918598bad367a0f8cc71f50b54c899fc6ff015c78884040c09f558e0a80508dd104112b9ebfa92b8fe5f328262fb2c784dc8726c588ac84e41bcff95f943";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/fy-NL/firefox-77.0b7.tar.bz2";
+      locale = "fy-NL";
+      arch = "linux-i686";
+      sha512 = "5e49d9d3a9aaace6192a838697ce0220ec347b93c0896dcd1cc46f97cee9a7835aae967d4413d71770feaf917eb984a5547d1dd5b6587baff7bb895e5c2fadbf";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/ga-IE/firefox-77.0b7.tar.bz2";
+      locale = "ga-IE";
+      arch = "linux-i686";
+      sha512 = "84b39f6aa3f9845d2d34ce089eddfbaad0c914a21bf68dc64e649a358739eff111e3809e48d882de0980b96537472e90b922ed2bb17a340e92000f0fedd17b4d";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/gd/firefox-77.0b7.tar.bz2";
+      locale = "gd";
+      arch = "linux-i686";
+      sha512 = "88657692e941513807522e7513f480915f2f40278ed3ba36855a03e47879eea2c17d48bb626543e71a19eebd7b554d797f522b499066e7a52f8a4363c8987a44";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/gl/firefox-77.0b7.tar.bz2";
+      locale = "gl";
+      arch = "linux-i686";
+      sha512 = "21cd90d9e5010ee858fd5b499b64cb1b0a695ea04c7551fff884e426895bf80e041244a5a27ca4e37a6a283b9058723b9b62ade273446a5ec9b0f5055c612a6b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/gn/firefox-77.0b7.tar.bz2";
+      locale = "gn";
+      arch = "linux-i686";
+      sha512 = "23ad0e28b4d5bf1e83983e3b498d78019b78f821f17cb9c1e9b18a2f98b4c044ee25ec2de8ca43381366344010c81979c6f568ef9ccd70cf67bb933789b96179";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/gu-IN/firefox-77.0b7.tar.bz2";
+      locale = "gu-IN";
+      arch = "linux-i686";
+      sha512 = "6914fe4888f878904eced34e13392dfef90b313c4b66fbcdbdd02070b62a8b12a397267012267551f8ea36e826912e26e5563d0f2d8c320589ad7c572786316f";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/he/firefox-77.0b7.tar.bz2";
+      locale = "he";
+      arch = "linux-i686";
+      sha512 = "453bd36930e6749afc97dc995565d72dcc8e1196d719b8ef3eba080796392297d698e439a2ffbe2c388dc78c7296baf40e2a02e539651f1c1b8bc62f9a294226";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/hi-IN/firefox-77.0b7.tar.bz2";
+      locale = "hi-IN";
+      arch = "linux-i686";
+      sha512 = "67570140e8087e721ca4951fc7f8845164f6d6a6ac2bf7cbb84c2cdfc522bc1c8578a11154207097893b3556b415ee2724403ea377a59d2bca53bf1cadb78895";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/hr/firefox-77.0b7.tar.bz2";
+      locale = "hr";
+      arch = "linux-i686";
+      sha512 = "949d494a971d4abb4a0a7f41d994758cae50ede8db4be8c240382ee2f33b21e383bf9fe9ee53a1f767960c5c01005285f899f4c575e734dccd2ab95f6fbcbe73";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/hsb/firefox-77.0b7.tar.bz2";
+      locale = "hsb";
+      arch = "linux-i686";
+      sha512 = "5987ac4a7b8ff18604de100f2dd5099d3f7b4217e1d921e3804a86b340686188761eee33240d8416aa6ec7cc538026039082953df34d2978d30992bd451c8e53";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/hu/firefox-77.0b7.tar.bz2";
+      locale = "hu";
+      arch = "linux-i686";
+      sha512 = "438344b07b4f788496de76cf361db5b8a8d43b71dbaabf025f05b24bb47f0fad17d93d683743a0a7673727339324d82196053e67eadccff901c5ad02b45b15bd";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/hy-AM/firefox-77.0b7.tar.bz2";
+      locale = "hy-AM";
+      arch = "linux-i686";
+      sha512 = "123f20b8b235009474b3b7e3d57619131a4f607dbd600ae23bb52a8f726c458a23356fc12929fb0557da96c9eca489ac8b87909b43d2f0bf4024b8a306e99148";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/ia/firefox-77.0b7.tar.bz2";
+      locale = "ia";
+      arch = "linux-i686";
+      sha512 = "afcc7cf79d5d8f023699d6a9d2c35897329a9372f5161f28188b75126f5b843d105e50bc49968a7ec8acdb290ecfab5ab06731d7b002d2721c0161cd46dcd01b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/id/firefox-77.0b7.tar.bz2";
+      locale = "id";
+      arch = "linux-i686";
+      sha512 = "3b505e26ba7fb53c27aee55dd47771abe2e16ddce33413cf61d21d757be2f9744b7e406294ed86a95f2ed645c73efca2714e405a6b0947e08e19f3c667f886ad";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/is/firefox-77.0b7.tar.bz2";
+      locale = "is";
+      arch = "linux-i686";
+      sha512 = "7444d0cd5ab0f667a46f6e6ce685102a4a3940d422c671bcbe4c454333714dd17e2b6784cd3d865ff13fe9b5fd63c6bdff79a17188038baa2b558d0764f31d10";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/it/firefox-77.0b7.tar.bz2";
+      locale = "it";
+      arch = "linux-i686";
+      sha512 = "675f81a6a7266855ff6ebb8effa0646b3bf48da50246bc4aafcaf35aab52be107df98767e51f3aafdee7ad7b866f7304c859aabf9039ce08ab601df8f3aaebf5";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/ja/firefox-77.0b7.tar.bz2";
+      locale = "ja";
+      arch = "linux-i686";
+      sha512 = "296f7a8ebe0e685e854d5f2674af347c2c3dbe0735bc763cbb1b12ed7862cc44592795b0cd1b01030e36b3c933e3e5cdd6288e77283633655c60182f1b91b0d4";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/ka/firefox-77.0b7.tar.bz2";
+      locale = "ka";
+      arch = "linux-i686";
+      sha512 = "514409c1bebc87ac575edc28d461d165e64779e95e54a27f83b0f9194d86d7c3473b29e34c2666e4f9ee04a0365e963c0ad54dd0d34b979b0d444c2059d3681e";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/kab/firefox-77.0b7.tar.bz2";
+      locale = "kab";
+      arch = "linux-i686";
+      sha512 = "d53d3b7fd5cfa7c96ddc528ae531d111998c95e8ddf0fb44a5e3e55f3223492680acf87590d1fb4d26278604eda2ed48b8681cd62a398a779ff76429df7bdb5e";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/kk/firefox-77.0b7.tar.bz2";
+      locale = "kk";
+      arch = "linux-i686";
+      sha512 = "8a9fb7e5070ee73dc8d87935cf0d328616ddeb67f1f3955678cbcec6e240ec375117daca8a574f4379677959e7acd30efb65114e4941ffd204c3cfdbb848c570";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/km/firefox-77.0b7.tar.bz2";
+      locale = "km";
+      arch = "linux-i686";
+      sha512 = "754254377c41865d6a5aa8f2e338353987885a6e54a7738c36b1566249a0b3becce3bcca9419905be64d935d97a90b3108f0020a313621c64cfdc568f663cc2c";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/kn/firefox-77.0b7.tar.bz2";
+      locale = "kn";
+      arch = "linux-i686";
+      sha512 = "79cb8cb3f8daacd1015a2d23b8cab568f9622396a983cbf1a3c6e231929d8bcc40ba84ba2787c9b60a1c9bdbb0729e2637ff3bfc87501bb0e156ff29c3a98148";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/ko/firefox-77.0b7.tar.bz2";
+      locale = "ko";
+      arch = "linux-i686";
+      sha512 = "262a471319ecd41cfced36e353dd32f22c1aa79224198d203ed029d21f858bf283db75b33f3af7abc48cf3a995d7ed90d75701d70e371c8a937d6259ef50e7ca";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/lij/firefox-77.0b7.tar.bz2";
+      locale = "lij";
+      arch = "linux-i686";
+      sha512 = "59b93c56ebe8022ac3ff72acec539639cf290c0339e825a27e6fe0a6e85ae02c6c4ac62ac056ade775eddf0462131e2c7cff99639c1626f2a6d979d2d340ed6d";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/lt/firefox-77.0b7.tar.bz2";
+      locale = "lt";
+      arch = "linux-i686";
+      sha512 = "7578bf3f0d9428345d0d5f16c1cf6557d6fc0962382df1359e9a2c3b94feb3ef279266635da41cca1a90660640b0d5c0d20a415130a860aade0ab554b6fc8415";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/lv/firefox-77.0b7.tar.bz2";
+      locale = "lv";
+      arch = "linux-i686";
+      sha512 = "610f14f6e3ddc8b2f732e40e79ad07e40e5cedc2e92dcab6b39b3b3895970d9c82749f4af90f034b7431191faef6bb0f61e230a3374efae7c5715e096048878f";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/mk/firefox-77.0b7.tar.bz2";
+      locale = "mk";
+      arch = "linux-i686";
+      sha512 = "cfddb67634a2e05d41c3595f62b88e53c05f5b07973ed16128f7620cabc9422a8f028458118e404148a2f5187fd0209910be1d5fede135caea25a2ee076811bc";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/mr/firefox-77.0b7.tar.bz2";
+      locale = "mr";
+      arch = "linux-i686";
+      sha512 = "5bb458faf0495b24600395250f8800587f6cff04d46437fdfef4dfd1fc240c7c9bcc49f6679258bb761f587b2c8115f0bbb6ef5c0b11421b79cf8d534e70c8ea";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/ms/firefox-77.0b7.tar.bz2";
+      locale = "ms";
+      arch = "linux-i686";
+      sha512 = "0e509780c72eb1d6154e3b3d804ca434be340f6fe8e706b87e2fd9e00aff3b82002a8b1a2f5d6994da2b566f5678f1b489e3b116af95776b323da7f5f674ea17";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/my/firefox-77.0b7.tar.bz2";
+      locale = "my";
+      arch = "linux-i686";
+      sha512 = "2a036f00f40e98a5dade0d380e416f869d0c42f4004878dd1a51e99386a118cd88ad603915b741e91e16a7bedc0db9029d8627037e17f275c74736cdd69375f8";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/nb-NO/firefox-77.0b7.tar.bz2";
+      locale = "nb-NO";
+      arch = "linux-i686";
+      sha512 = "f289ad816331cebb6634def4c7faf5ff6d1c6000cf5677502027a7823c34becca72a0cec5bbb13d5c4c16ca22fd87da941d0569b47369e1cf5ce00cbad326693";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/ne-NP/firefox-77.0b7.tar.bz2";
+      locale = "ne-NP";
+      arch = "linux-i686";
+      sha512 = "6084544df0c3f45562a3bd380386217c4a4a6cd4968159006e3c24ece9cf6c178731c4e8fb0466ddf484776ec533e838e24018ed3d41bc5f54d9757081a963cd";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/nl/firefox-77.0b7.tar.bz2";
+      locale = "nl";
+      arch = "linux-i686";
+      sha512 = "1d31ffd4e7e9cbf728d552cc1cf6692037f62884cd396ce5ff3c96f89096d44a9fd789ecffef1516cdc0d66413a30ce67daffaff224854dfab2e9a3fa37e6150";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/nn-NO/firefox-77.0b7.tar.bz2";
+      locale = "nn-NO";
+      arch = "linux-i686";
+      sha512 = "0f97a3a2807b1087e1569e0f31cd80ef2995b89c69743c3441ad974a5786b789793c94828935027cd45f52b738a28dfdf86b1e95c5026d34de2e1f20107bf784";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/oc/firefox-77.0b7.tar.bz2";
+      locale = "oc";
+      arch = "linux-i686";
+      sha512 = "91f5dd7f7c4ac97bde1235e9bf9594623f531a5558ed06d5ba61fe8cd584d80e6b01fdb070fe53b7c702893b2689fcdfedabd28c440ff865decbe4119bf4ef06";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/pa-IN/firefox-77.0b7.tar.bz2";
+      locale = "pa-IN";
+      arch = "linux-i686";
+      sha512 = "763e900df5673e5f88fd326ff6ced28502ebdf09001fa06fa37912317bab9d0ab6c737233baf8d644de286766a7d4dfe740242ab70fe938c0c3bbcaa1aa1b314";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/pl/firefox-77.0b7.tar.bz2";
+      locale = "pl";
+      arch = "linux-i686";
+      sha512 = "1aeb0dff591ad21dd506da2cc89d7082044b762e7c987e364631cb6f28bb07618d51d138d9d7a936f244841cc4f5208dfb9bf8dcd1ee0d839fca5e6e58823c1d";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/pt-BR/firefox-77.0b7.tar.bz2";
+      locale = "pt-BR";
+      arch = "linux-i686";
+      sha512 = "643a666005cfcb726a18dcd81c8af6d3fefb77861c2a4db884227044c39d907659f1b2abe640950c4cf31ff3552d4d12a52fd9e7527637a68543aecd93a61763";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/pt-PT/firefox-77.0b7.tar.bz2";
+      locale = "pt-PT";
+      arch = "linux-i686";
+      sha512 = "f17fff22865d6e64ba77069012072d24ab79abdf783652337a7dae7d9a901569f00f9d3cd20c2e3a268fc81188b478b9036229dfa248bd5b1ddd7a0f9c7b7201";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/rm/firefox-77.0b7.tar.bz2";
+      locale = "rm";
+      arch = "linux-i686";
+      sha512 = "3e105652654c1691bdbf8ab51f20f4ebb9b62d6a6d09f0f6527079bbc1f5832f4170800e6b200c00dd43f62dde531e7e8bd6bebd0ce27fd058552672d423a967";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/ro/firefox-77.0b7.tar.bz2";
+      locale = "ro";
+      arch = "linux-i686";
+      sha512 = "5062a90cc4712f30c9dc428d8ccbfe3bc1d0a50de3e84b5c475fbfbabad09394219fcb03db9313d7773518e24e5eb5b41dc16723ee235a87677dd07bdb1e975b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/ru/firefox-77.0b7.tar.bz2";
+      locale = "ru";
+      arch = "linux-i686";
+      sha512 = "5b457059285c31381a03b9e0285874989cbf93cb264a74ee875ec9e120027d5bd921a666a95275c56631ebbe3f435764890852ba25d199b0c8c8258d5b8a5807";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/si/firefox-77.0b7.tar.bz2";
+      locale = "si";
+      arch = "linux-i686";
+      sha512 = "4f8ec721ae19da2466a31e363ecdd9743f90a597d0bcfba12c12120207545ed03685a552515c9fc1deb27e79dac41345b8c87efc025dddef6c0347d21c2809a2";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/sk/firefox-77.0b7.tar.bz2";
+      locale = "sk";
+      arch = "linux-i686";
+      sha512 = "4953e879c353d7a9a71e517454ffdd793546d5c863676ffae3a1bc725000b5f69f0f74fdb9ba979fc54d809d576918e6def88ec1b1b7a81cdb6d1dffab624093";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/sl/firefox-77.0b7.tar.bz2";
+      locale = "sl";
+      arch = "linux-i686";
+      sha512 = "ce930f05f2a6f3716ff54a71af907cfafb1398d4f86999e8b161771197c60260abf82d0431093ecd8894d2de2aabc317ee5b6f348d8c05f3a823ac706bce0b2c";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/son/firefox-77.0b7.tar.bz2";
+      locale = "son";
+      arch = "linux-i686";
+      sha512 = "1862101ca5ae8d8e2543f55e6b283dc8f935eacf38dece8c0e1b62a0cf83342065b467ab001a9709dc25f305294506f84a1036ce618bd7d47ed8d60f89b838db";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/sq/firefox-77.0b7.tar.bz2";
+      locale = "sq";
+      arch = "linux-i686";
+      sha512 = "511b7f3dba5083414d62090ff1202599d8b6d4623df06d8749c0bae2c18249b3370af71eacb87b77711982a196fac380f982c55156b2bc589572796607128763";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/sr/firefox-77.0b7.tar.bz2";
+      locale = "sr";
+      arch = "linux-i686";
+      sha512 = "372420a6a308e94a438b9b220a268264f3dbb0c45ebf5053fb0826948fb6f5e0598567f2e237a4c753431a135274a9867fb8d092f1abc3b90900039fa2be5322";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/sv-SE/firefox-77.0b7.tar.bz2";
+      locale = "sv-SE";
+      arch = "linux-i686";
+      sha512 = "cab258cbae1aff73f16f4be2217274f0be2e82bd587ffa45846308b90d0bac043953828706fb3ad33e33d06ca4eba6d0fb4d96caa684dd18f9fc96a33e1b8445";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/ta/firefox-77.0b7.tar.bz2";
+      locale = "ta";
+      arch = "linux-i686";
+      sha512 = "dad1630c0fea645199cf5577d3928cdb06bea5bd718d4da4ab27b194aa5068107b0bcf433ac530c53050137a42b700834fc30a778834885976c090a9a6817840";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/te/firefox-77.0b7.tar.bz2";
+      locale = "te";
+      arch = "linux-i686";
+      sha512 = "7b903192af9e954b8b595e6f7eb7b176fa7fa91dad3891f364c676e0627a5eb7426b1f676c522943eda22565d459d049a5e10b2584e65b1e1fdf7bc27a7c2aa9";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/th/firefox-77.0b7.tar.bz2";
+      locale = "th";
+      arch = "linux-i686";
+      sha512 = "5ddba062f7ed0de1b9b7782ad34acc32762ec5b4a33cbb3805eda39ac667d239ad23bf81777b8ea0d9dbf82d688c9a2fb273c635b4d44cd7afbe887a16c34ee6";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/tl/firefox-77.0b7.tar.bz2";
+      locale = "tl";
+      arch = "linux-i686";
+      sha512 = "8f78278bd75240622edf86bcfef0563d51d671a7b7731195b698f3e6baf2e467c0864ddbafe38fa7728ff00c4ae059f2e60c1cf67a81772445639cfb75fddf04";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/tr/firefox-77.0b7.tar.bz2";
+      locale = "tr";
+      arch = "linux-i686";
+      sha512 = "20081f6fd914bdfa14ddf0a7896986290f3e7f35d7c77c90448be53a0ae09c5697b37ff8b63a0138ae20327d110a1eda2bcb5a41ce1927e36eb222795fb492f3";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/trs/firefox-77.0b7.tar.bz2";
+      locale = "trs";
+      arch = "linux-i686";
+      sha512 = "023b6a4cc9069ba73e0072c8e4ef8d782b4e8cbbd9ab4810c921998d6eb87f8d631fe8e62771f8c3e5b0da83f43aac8a7d569a8309603e75b984b4233dd7b652";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/uk/firefox-77.0b7.tar.bz2";
+      locale = "uk";
+      arch = "linux-i686";
+      sha512 = "5d9774938c64271ccd14a498151436feb8ac3a2b46f8f093c7c11bc84b7f49ec559acd620ed0c4e1d76b6f466f8be5d19d64af4d84606c12271814cca88801fb";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/ur/firefox-77.0b7.tar.bz2";
+      locale = "ur";
+      arch = "linux-i686";
+      sha512 = "73aecd84a201e7047ebddc71695cfbddcff8d7866f1ed1299217bfb81c49865ce4140deaf0d3d0ca34f82bfeb1e3598059f299f163e816fc4f85bf0a1b8d93c5";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/uz/firefox-77.0b7.tar.bz2";
+      locale = "uz";
+      arch = "linux-i686";
+      sha512 = "0b0a0f8bcc7a96222ab09c113b537b2e56d1ae38f198c9a0efd0a7defe917aae30b64b81047b404e09953146ca78588e8184127d1ec86ed05c642a8f03b0478d";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/vi/firefox-77.0b7.tar.bz2";
+      locale = "vi";
+      arch = "linux-i686";
+      sha512 = "2b41d980f54907cf4f84ac5159ecf3d0b4ee4d6ff0003d2d26cf8ef51befbb67410c99eb75bfdba3f8afbc64c1911011946cc8ad23ec7f514982d522857a8304";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/xh/firefox-77.0b7.tar.bz2";
+      locale = "xh";
+      arch = "linux-i686";
+      sha512 = "9f07d1b5b54ccd5764aab35df797ef866cb6dfc705bb6db0337168eb0453d847d6068230ddd00368ef27f3f58300f8009c9848a9ad1dc3a459d90889e2f7c5aa";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/zh-CN/firefox-77.0b7.tar.bz2";
+      locale = "zh-CN";
+      arch = "linux-i686";
+      sha512 = "1a5c6b1abab116fb0cf3e98e50024070c894e64334a82a3cff7c3a755b72a0ff8992f3a4c631cbb5489e2c03b5cd5dc5918dad56d5818c6050eab32335bf347b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/77.0b7/linux-i686/zh-TW/firefox-77.0b7.tar.bz2";
+      locale = "zh-TW";
+      arch = "linux-i686";
+      sha512 = "0b16ba221c9c681e44bcb8ab6ebcbc0698dc8ecdcf31d14b9b4818afd396fa8608b389cedd372d15dfd833e4e7e028dadc7087af21c4c2d423fd97e1d2c0030f";
+    }
+    ];
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix
new file mode 100644
index 000000000000..464eef9f4b7c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix
@@ -0,0 +1,965 @@
+{
+  version = "77.0.1";
+  sources = [
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/ach/firefox-77.0.1.tar.bz2";
+      locale = "ach";
+      arch = "linux-x86_64";
+      sha512 = "12adc58633a67921e1d1944501191510baf3b0308213f417a202abcc09d5abad3155a478c2541508273d6e8b07bd3c13f7f8ab6e40855927429a94cc8d989888";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/af/firefox-77.0.1.tar.bz2";
+      locale = "af";
+      arch = "linux-x86_64";
+      sha512 = "ee58827ac139f48b870d3c30d8c317857ad5973593fa99addd7d09faa1fc53ae5ae31e36cd1f5c9dec6ff56ab31b987baccad98d4c8f8e009830e2e5065b8a4a";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/an/firefox-77.0.1.tar.bz2";
+      locale = "an";
+      arch = "linux-x86_64";
+      sha512 = "ba8a36a8e7a8638c88355ce68ca4f320d13b60522f7699dbefd056ad01c4476799c38c3cb5817d5c506f29ec32532b533bb6aa5a592cef971f1a617d353b12aa";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/ar/firefox-77.0.1.tar.bz2";
+      locale = "ar";
+      arch = "linux-x86_64";
+      sha512 = "507a3c9487f0d2fd89b91473afbb9607d2c8fe2f642e331a4c781078d0f474b5345827a83167981c0d9b06556370b6d7baddd9eb3355dfd8c64014d139483e06";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/ast/firefox-77.0.1.tar.bz2";
+      locale = "ast";
+      arch = "linux-x86_64";
+      sha512 = "70df4d795059609d2935243ca1af753e9e57d303f43df42f72a423135d095b8a295cf06fc3aa0284f68415c77de46b6925b34fc19987309a9b3f749e8234d9c5";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/az/firefox-77.0.1.tar.bz2";
+      locale = "az";
+      arch = "linux-x86_64";
+      sha512 = "34a95a03400f67bc17a405767d174de67103a57cfc2154621e4452b914e070344b361547876b2a17813638405440642f28684f84782285960d3ed5bd0d8c0eec";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/be/firefox-77.0.1.tar.bz2";
+      locale = "be";
+      arch = "linux-x86_64";
+      sha512 = "66acd13f56a2a3c79cc49f3cd5cd203c7b7e1f7f978a1ce1eb90f702f35f501bf7b16b1fbc9be8ba9b176b103bc37d0868aaf765ca485c854192c2c4d27b1030";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/bg/firefox-77.0.1.tar.bz2";
+      locale = "bg";
+      arch = "linux-x86_64";
+      sha512 = "44f3dc39fb73c03461d16a34f1fcfeb385722a0b4deb7b75199a8f8fb40fe85cec8116e11eb2f7852580a4ce9925d8f022c6133647232f6547db689b6d87912a";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/bn/firefox-77.0.1.tar.bz2";
+      locale = "bn";
+      arch = "linux-x86_64";
+      sha512 = "2ecc1a1433eb8301cc7e9d66dadf1926aa20b609b7683e69004dd56a12b3a8a2a1db19ec85113bdb0bb0759c29b0e70a157ef6f2f7ba29a121f22d39cb256c5e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/br/firefox-77.0.1.tar.bz2";
+      locale = "br";
+      arch = "linux-x86_64";
+      sha512 = "f9561f0d2f00da6736af19dfc2ec21a25a46b0a2c0ae195e0725a59f8df0367be3c0dbbfacc4b79ba82bce7643b00127b9a9431379e533c0393d49c6d3017ccf";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/bs/firefox-77.0.1.tar.bz2";
+      locale = "bs";
+      arch = "linux-x86_64";
+      sha512 = "e76982df74ee812f37f802d3e82a7ba842d6a211be3beff4fe6347a991ed49601678f11c01847a9708ce36ec2ca956f452b2d7b1fe168a7608ae7999113fbf22";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/ca-valencia/firefox-77.0.1.tar.bz2";
+      locale = "ca-valencia";
+      arch = "linux-x86_64";
+      sha512 = "a2633b6e009edcb98c4af62df6cac991254a0f370384c2d0a3b81f8c4e49648ab6cdc580888a628668acd0a4daef1bf6b65633c58441aa0e9aaf84dfccfd10fa";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/ca/firefox-77.0.1.tar.bz2";
+      locale = "ca";
+      arch = "linux-x86_64";
+      sha512 = "c8ba559b912670a86f94188e1b3c0962093955a527b2751e4264699bdf343050999d76b93857f6819c797dbafbbd0980032cf5c497b0d34a50c5c8395cd07cd9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/cak/firefox-77.0.1.tar.bz2";
+      locale = "cak";
+      arch = "linux-x86_64";
+      sha512 = "52f446f2a2c4bd6d79f680ebdb38e2f62e0830d14fc98dc6ad01c5b404794da1e59f4b8da2d7f4a0483187f4725a212e41edcc2006190818e6229a5a9af8a597";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/cs/firefox-77.0.1.tar.bz2";
+      locale = "cs";
+      arch = "linux-x86_64";
+      sha512 = "91d8dbd3d8dd6e242943d9b416534492125746694a721fff6c9d51f811e2f93b5d521f63357addd0e11bbeac80d3a07d2fda0133d746eb3d4d5d086e59a713b9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/cy/firefox-77.0.1.tar.bz2";
+      locale = "cy";
+      arch = "linux-x86_64";
+      sha512 = "14a04b2d97ea473b45602ab44d8ad08f35f21e98621e93b901ae25731fd86d207b4949bca3283e39cf22aea7667e110c94b948b51a370551c4416a3009f10854";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/da/firefox-77.0.1.tar.bz2";
+      locale = "da";
+      arch = "linux-x86_64";
+      sha512 = "5ff9be1796f70f608e12732c71f46c6c4f636e52ed03cb445ee1fc35d4db2897ee1b8f231ba0a5724696d3f7db04845dddf268a3ba59b26a869f65729abd57e5";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/de/firefox-77.0.1.tar.bz2";
+      locale = "de";
+      arch = "linux-x86_64";
+      sha512 = "b15a90114ea7f2c69fa94bb6e9c2559be0f7a7a0b7c4c1042823153000bc6a04a27f62c9373cb4c73535e676c41b23dfd260396fa691f2ac0319badb7a087f05";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/dsb/firefox-77.0.1.tar.bz2";
+      locale = "dsb";
+      arch = "linux-x86_64";
+      sha512 = "bd10d40bb2f52c1b5cae9c7d91d53b3cc33bac0415a6f0b37fa5e1e2f5249ce5313a45e0e8b8b218ad961b2e3b3597c7132486a71eae76acdc61805181cd7220";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/el/firefox-77.0.1.tar.bz2";
+      locale = "el";
+      arch = "linux-x86_64";
+      sha512 = "4c28c9104085d2ddd024a1418f0f54cd4c57d0ad5fc59bbd26d28bf173a78999eadb025618f0221273c5cb697708f944764a88fe9c08695b10694c68ec54473c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/en-CA/firefox-77.0.1.tar.bz2";
+      locale = "en-CA";
+      arch = "linux-x86_64";
+      sha512 = "0722520753a1bdb093e696cebe1e9074661b7602b5d8285b41f62acd462e740cb0833b751d870d602e7473bd11f3bcb3e5dd8e84ca00ca3babeea3a19d45974d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/en-GB/firefox-77.0.1.tar.bz2";
+      locale = "en-GB";
+      arch = "linux-x86_64";
+      sha512 = "8f6aa14f4dddadf19661e3bf11573d930c5e931f383498fd22826cb1e61f97bb5cc5db7507e5363648fba3368c7d49d7395bd4d68c6f9787db65401e990a62c7";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/en-US/firefox-77.0.1.tar.bz2";
+      locale = "en-US";
+      arch = "linux-x86_64";
+      sha512 = "28b0f843220a88759893813c48f9b02a255c26fe954632e530f956f43c4cda6441546f3e9d827fd61bca0d61fc6a5580d3134b8d5315cdab90fb57aaf96fa5f8";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/eo/firefox-77.0.1.tar.bz2";
+      locale = "eo";
+      arch = "linux-x86_64";
+      sha512 = "da2d5d3d337c39236ecf39291dc44ce5c023dc0dc0b093c73b17425befa5f8b54239f166831b2d2b88d3556b9ea1e3dddcda8bdf2907fa7c5a63d78ef222b214";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/es-AR/firefox-77.0.1.tar.bz2";
+      locale = "es-AR";
+      arch = "linux-x86_64";
+      sha512 = "ffece84feea0c13e2f1b40c41ddf0c6bcb9db03d5d377c509421abc2bbab7d04134e14f9eda5bb87bf7a63da57ac214cf88a054fd58cf7785e620e37076b5820";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/es-CL/firefox-77.0.1.tar.bz2";
+      locale = "es-CL";
+      arch = "linux-x86_64";
+      sha512 = "649bcc8ffa5ae82a26c277ed648e7e02bdae3df782c2716ae15834f46230105ec4c33bf838a7c5dc7cd1ab1ef92f9babe9bd39e8dd5d34376ae76121119e7a2a";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/es-ES/firefox-77.0.1.tar.bz2";
+      locale = "es-ES";
+      arch = "linux-x86_64";
+      sha512 = "c292b0f01d5289ca978b0af87d15a0472748db192ef4f09b36f5fcb1a671edc9a3286d3981e482bbe0b33158f930ee1514cf0e8b18cdf31a47a2c72b0e0dbf19";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/es-MX/firefox-77.0.1.tar.bz2";
+      locale = "es-MX";
+      arch = "linux-x86_64";
+      sha512 = "969f18a23691d80f7cd7df0ac43c6a725eaffbee73d8044daf90ff4ea0baf504cba9e73049f74b9cf8619b78326797d831f247f86e5181a791fb4ae211b20e46";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/et/firefox-77.0.1.tar.bz2";
+      locale = "et";
+      arch = "linux-x86_64";
+      sha512 = "cacc56bec434d5c44422f2178bce9db151249b4298df079a00c378995cd353d6369b6a1edc841928eef26a5dfa23d44f25cc33f0dabe96b44c13004bf134ecf4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/eu/firefox-77.0.1.tar.bz2";
+      locale = "eu";
+      arch = "linux-x86_64";
+      sha512 = "a5fcf26a1b614006463f0b2503c39c00009ccadeeeef54c7ade12717837858594037cdcf96983cec88c5816e436e97eebacd07b40182504c016d238207bd3e62";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/fa/firefox-77.0.1.tar.bz2";
+      locale = "fa";
+      arch = "linux-x86_64";
+      sha512 = "68a2938aa4f190941595e66efad29adb7770657dc755725e926a19e189f15f83a5e234d896f589c693fc3665e50b5da95fb3538238a2c2c2f955caf08d7a9cd0";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/ff/firefox-77.0.1.tar.bz2";
+      locale = "ff";
+      arch = "linux-x86_64";
+      sha512 = "28298f6619a3c485f08d25fd9cfcd9ff8c60014c702ff7e4b6e462a0877b7225829d4a5014a653a3073d4d51dca731859bb6600ba9a66fdc488734af7487f9a4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/fi/firefox-77.0.1.tar.bz2";
+      locale = "fi";
+      arch = "linux-x86_64";
+      sha512 = "fb4ee19b0b71d6d51f82cdfa384a4229e4cb735e0901ef9d246dd192ea5fab010de5549a0236917ee0002de0cb28b0328692079087184f46511c429b4c0201f5";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/fr/firefox-77.0.1.tar.bz2";
+      locale = "fr";
+      arch = "linux-x86_64";
+      sha512 = "73a06198b1b62ce230c76d045b8950008b0ea608a967cd7a143b79b745ca269b6d5960232dc2f20a26af6b9df785785db535182b2fcea2bc1fb6d46abffa1659";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/fy-NL/firefox-77.0.1.tar.bz2";
+      locale = "fy-NL";
+      arch = "linux-x86_64";
+      sha512 = "a7a2ae5b4e1c5b6e0bee93e4dba501638d4f6aefb094833eca2e1a4c342beb29102d92840ef8c898106c8689d585548a2dd192dfdcdfae3a0c7a9fdffa604008";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/ga-IE/firefox-77.0.1.tar.bz2";
+      locale = "ga-IE";
+      arch = "linux-x86_64";
+      sha512 = "1341a646c758c1b879464722a536743cbe406b964ba289d9bd36ac973db8cfe008331f1736a838c1b0fa5c2c3a01e12fd8a4b3bbc073e0772ec3d50da7ea7159";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/gd/firefox-77.0.1.tar.bz2";
+      locale = "gd";
+      arch = "linux-x86_64";
+      sha512 = "d7996916bf60c44df2a354c2f09bd1116c2bf1f20bc4445686e16f1eadfa6606e772fb0f9f3086231b8666a5a22a4dd549a4efcf7aad4529ac57a49adf9a7777";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/gl/firefox-77.0.1.tar.bz2";
+      locale = "gl";
+      arch = "linux-x86_64";
+      sha512 = "38068429fb33f17451babe535ed9692f8d97aa9bd10a419016f6b61c8a02232c801a2e018bb6164ddcd1c4b3216fae71c1cc7f00cbfab3e20b85d3aabda02727";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/gn/firefox-77.0.1.tar.bz2";
+      locale = "gn";
+      arch = "linux-x86_64";
+      sha512 = "ceedc3f1e05ca7b33e03bea9e0da10eec1930ebe30cc5b539e6b928da8a19eaa619289f25188888799c3a0d91c12a6873e38411e136fa684f5ad27d6ded6d6e0";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/gu-IN/firefox-77.0.1.tar.bz2";
+      locale = "gu-IN";
+      arch = "linux-x86_64";
+      sha512 = "f2497076febb3f19964b3ffa29de9061cd64706224c29ea8680a4e7277131de559b67c0012d6d7a8905143e6b19ebf27b5ddccb3263d5fb3bfcc8aed1f93b294";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/he/firefox-77.0.1.tar.bz2";
+      locale = "he";
+      arch = "linux-x86_64";
+      sha512 = "d91a982c027d2b68c449fcaeb719d8943d089c778d017534d72b571b26af8c7e01ed9ee37309394b6984daec3579b91c901a3a1d9ecf5485a2a0a1a8f93d522e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/hi-IN/firefox-77.0.1.tar.bz2";
+      locale = "hi-IN";
+      arch = "linux-x86_64";
+      sha512 = "7aa929a279e568ca517f3727b4c51417cb4acb6e2606da30658c9a213fb789dba9191b51d62037928a47daa394ddb5baa0e2746f68a4c5569bda3632be17a719";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/hr/firefox-77.0.1.tar.bz2";
+      locale = "hr";
+      arch = "linux-x86_64";
+      sha512 = "07fde2ae76e5b9ffe81ed5d68114f66aacd7209e5edb353d1962a9509c7cf75bd42ae21ee8cf30216f502e31af5caa7984676192a714712bd279440659dc1661";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/hsb/firefox-77.0.1.tar.bz2";
+      locale = "hsb";
+      arch = "linux-x86_64";
+      sha512 = "b591a29c05f751374fbcf9c8557d208842ee26eb27ec0be766fa1f5c608c4eac7311e667f27f95bddb4d55b984d1975533e4c6d3267c69130ec21ddf189e84ac";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/hu/firefox-77.0.1.tar.bz2";
+      locale = "hu";
+      arch = "linux-x86_64";
+      sha512 = "cd5f400c8e66e201f34155450eadf6d920327a19e87f0d0d1f7728c481c03588268b7711c865a011a207287ba16ada555b6d370badb28ee3ea2b469a76f0a03a";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/hy-AM/firefox-77.0.1.tar.bz2";
+      locale = "hy-AM";
+      arch = "linux-x86_64";
+      sha512 = "f08d7c0d8db0cfefad662eece31ef9d23de333f88aac225960bffd20a9de4bdeb4f2c9835be7351e20615f24024861231a79ab7ee598caa83dde88e810d973f4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/ia/firefox-77.0.1.tar.bz2";
+      locale = "ia";
+      arch = "linux-x86_64";
+      sha512 = "b5bc06630095041dffff149743d7dd43fe0d4c698f514f2f91ec0d8dea62273501df4a304903dd96532e9fc1756a8330f052a5833e331bb39478397dca5fe7b0";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/id/firefox-77.0.1.tar.bz2";
+      locale = "id";
+      arch = "linux-x86_64";
+      sha512 = "2960c0551aadd142c5fac2e99b327be4393bc2e5515d3c67cca617cdbbf6dac8e20898d124960420a8804bc7e1c61a8bc3de715fe43ff7c5a9dba62d515a4e10";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/is/firefox-77.0.1.tar.bz2";
+      locale = "is";
+      arch = "linux-x86_64";
+      sha512 = "ca9be0a8d2ed5cbaa3228de5d5cbc4ed6a0b14c5bf5f1e978e28fa1840c00d3cb32334f24cd9846e9aacbd61e04f79949f5271d061d62b5654a44e95f813b397";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/it/firefox-77.0.1.tar.bz2";
+      locale = "it";
+      arch = "linux-x86_64";
+      sha512 = "20259f0b35d85a75a90182851cb57f33b9e043e358a2b80e9d3e4fc5e6b0f3ce8bfffd9dca4f574304d66070f307c3832647d4829169202b119a998cf969ef39";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/ja/firefox-77.0.1.tar.bz2";
+      locale = "ja";
+      arch = "linux-x86_64";
+      sha512 = "41234ac1f73c3f93f61bb6f1dda395d7e6b969627b86fe36f93f33353c1b28b4f9302014ad7cde6b3e8df2f84b3eaf0bb75c6df884de0a9a77ed2d133beef863";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/ka/firefox-77.0.1.tar.bz2";
+      locale = "ka";
+      arch = "linux-x86_64";
+      sha512 = "be9130cd5835cb103c3149dc53dc325c54c1cc5f5006cbf3598314be2022c1f51928529cf3218052abc5f7f6f649e862f69ccb5b39ab5053141e231e56113ba1";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/kab/firefox-77.0.1.tar.bz2";
+      locale = "kab";
+      arch = "linux-x86_64";
+      sha512 = "75d15e95416f3f61e49164b7be43f9335049f62f8350cb4abcbe3c7df6848a124ff5b5e43f81a4eb2f492ad3a61ab1c0979083d14998b684b2ba8988c94d6b57";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/kk/firefox-77.0.1.tar.bz2";
+      locale = "kk";
+      arch = "linux-x86_64";
+      sha512 = "df7ecfd04df63351d35425f74bcd5b0b342302b6c7b24deb35394aff9ed3f025ea9ad1c1147d46a789a2a11d8dda924c15584ee826819fb4b1fb0509aa71cc9e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/km/firefox-77.0.1.tar.bz2";
+      locale = "km";
+      arch = "linux-x86_64";
+      sha512 = "811876b5a4d070aba73426b2da43ffa5e9f9beb1a4ca37ecfb5e058100c60d3455e6284e9a71d5ae58af8cb9fe9e3e0703847ffb16fd963b4eb1410a3921f260";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/kn/firefox-77.0.1.tar.bz2";
+      locale = "kn";
+      arch = "linux-x86_64";
+      sha512 = "8c195accc9adbe3662abf62435d3b42ae4e2affcc41cefbb8f5a702ef75ad8566cab07eead40869118ef9164fb6529e1b4203970b908ed7d3f0cf43190049b2f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/ko/firefox-77.0.1.tar.bz2";
+      locale = "ko";
+      arch = "linux-x86_64";
+      sha512 = "2c571a931e88a49e4c977728bfe51a2008d4c384aae55b759dea665bf2810e5929a693f633c82c5ee26e1236cdcbc003a9a39e0e01ac46db71c9bcc20eb8d17c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/lij/firefox-77.0.1.tar.bz2";
+      locale = "lij";
+      arch = "linux-x86_64";
+      sha512 = "d624ab2b73c03157d0559a3a41a7a50f985364b8b2c03466f949d2cd212d206bb39957eed9ea769796f4091d7644cf7191fdd0881eb8101e2cb8944923c677ca";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/lt/firefox-77.0.1.tar.bz2";
+      locale = "lt";
+      arch = "linux-x86_64";
+      sha512 = "72607d7201c562103dd241f18cdc2b681fcd5d28302f5afcf9e03f8aded2339a88e2b8c2b81fffdad5e10bfef94fe39810116d61a415f9625d0a48c794078bd4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/lv/firefox-77.0.1.tar.bz2";
+      locale = "lv";
+      arch = "linux-x86_64";
+      sha512 = "f928e22f29e46bd9405f5d2bc902c82093ad8073d8f6ea52af20c93805b0c7b5523f489f9140baae1b04b015b7c185ba27398ca857b00c171dce32f38ea0d706";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/mk/firefox-77.0.1.tar.bz2";
+      locale = "mk";
+      arch = "linux-x86_64";
+      sha512 = "f6c7bcda5da5d3315a0a5a47d7a0b9ec0d4a6d4b0daf8fc11d41a8a8376fa05607889d108d38f3a6085c0f9cfdde86a6486993f72f44822a75a97b1b9dbfe185";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/mr/firefox-77.0.1.tar.bz2";
+      locale = "mr";
+      arch = "linux-x86_64";
+      sha512 = "8a41b844c5faf640f78615593343dee0bde8dfc2c20977b80a6e9de37fbe10e997345c801b025e4eb79627aac27a92169e0c332e7595715227b2d3015b2c9b3b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/ms/firefox-77.0.1.tar.bz2";
+      locale = "ms";
+      arch = "linux-x86_64";
+      sha512 = "866daf16e535cf9e404a788c8b792c8cbb391c43912738d7eafa723c5e6eaee7290d94c39324708533b4c8514391a0eabd62626029ee7591934e5ff6abd72969";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/my/firefox-77.0.1.tar.bz2";
+      locale = "my";
+      arch = "linux-x86_64";
+      sha512 = "94ba7fa3a0cb791daaeaaf9998b0c574759f7afcafcd388b0b5aeb9bb1ce97e36671378f0c56c3d5120872ab2ca48933b2a304f3ef3e194a77741c492e8e75bd";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/nb-NO/firefox-77.0.1.tar.bz2";
+      locale = "nb-NO";
+      arch = "linux-x86_64";
+      sha512 = "c46ada870f940387fa6bff044176aa59f3fb376a8d8b1df1715f6abbe3bf87f932a49e53f2c4bde967bdc04c930fa2e426f7c4f66c22c64353be68220d9ed94a";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/ne-NP/firefox-77.0.1.tar.bz2";
+      locale = "ne-NP";
+      arch = "linux-x86_64";
+      sha512 = "005aac3f43e0104b284f1805062eea457e81e8b29940b8c034f99de7e07d38dcbf9077d62a1c44a1f2dccd65258b1346889e08b7736d9fc983f03df788fd5e2f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/nl/firefox-77.0.1.tar.bz2";
+      locale = "nl";
+      arch = "linux-x86_64";
+      sha512 = "9d00c7ebf4589615afffddf6a33f0e75172059fa3e9ccd56d3fe720b01c521fa30a88217b77cb2ebc37b088ce69ad280488da6ab53525170cb1fafba64816235";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/nn-NO/firefox-77.0.1.tar.bz2";
+      locale = "nn-NO";
+      arch = "linux-x86_64";
+      sha512 = "5a9ff27a1355497d57056826ea0ba465d9f10fe0112628634267b262b4bdaa07b0133fbacb8a5644063cacbd0d59526a09a6b98caef78d25c39173934445432d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/oc/firefox-77.0.1.tar.bz2";
+      locale = "oc";
+      arch = "linux-x86_64";
+      sha512 = "02e1519ec4097a990325cdcc2e13e70c16b25febb466d9d06db64b8b0c689c7246546d0666a71003a533d73d0b73b472aa8312d9bc59463dffde979618570ef8";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/pa-IN/firefox-77.0.1.tar.bz2";
+      locale = "pa-IN";
+      arch = "linux-x86_64";
+      sha512 = "9f7218eeb5abe8f2196b2a43cc24a0cf6cd13dcf8801f7b57100336a90550bce23579dac36353fdefe542714e67bdb86102de734ef74e4ccd29a55c8f79a2689";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/pl/firefox-77.0.1.tar.bz2";
+      locale = "pl";
+      arch = "linux-x86_64";
+      sha512 = "d986bfcc489a89a9f49defd9383904043d36d4b29b02715186977cd60add217845dd1785fb457228c71ae02243d10a110b563f18fe5352e68e315ffa8290848a";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/pt-BR/firefox-77.0.1.tar.bz2";
+      locale = "pt-BR";
+      arch = "linux-x86_64";
+      sha512 = "cfb4d9510ec5e35d25d53302e553c9a85f8eea4120a236dffc5f2350b70868016b852bb1d43eddcc03b7dc9593f8f76e133fc8329c000f315f68f2e4ae5e3201";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/pt-PT/firefox-77.0.1.tar.bz2";
+      locale = "pt-PT";
+      arch = "linux-x86_64";
+      sha512 = "335fa2e31e66f0ee0323a50154dcbfdb1516b8376a587f0097e40c51c93e3c019de3e1c4af19cbeb4f57c1b736703b82dd63af91e53c2af5532eac42d80fd800";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/rm/firefox-77.0.1.tar.bz2";
+      locale = "rm";
+      arch = "linux-x86_64";
+      sha512 = "f7f06e4ad2f0f01f398afb5e95c4d88e6c045d57c86d7e004aac3bc79c29043853aeeb4a6162fe004ebcdd7278055a19f6c25d60887ed451905ec4e376eed175";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/ro/firefox-77.0.1.tar.bz2";
+      locale = "ro";
+      arch = "linux-x86_64";
+      sha512 = "4017ef08f0f1d7fb82bd9b7afa72a617a3f781ef6296b97b9c351528d8107523df5c2dac5aa1ca112cf6e6b5aaea818195f3458cbd20b9f0cf88b3acf09699f3";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/ru/firefox-77.0.1.tar.bz2";
+      locale = "ru";
+      arch = "linux-x86_64";
+      sha512 = "7aa2ade09571ea44e08b12f2c758e56fa66eac8cbd49d90c28abad04b99f9fe005eaa04f5b6b238cdf56cd7a59ca388ff769c862310dff0a41d952d35f1cc7a5";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/si/firefox-77.0.1.tar.bz2";
+      locale = "si";
+      arch = "linux-x86_64";
+      sha512 = "668df6d1741a9d300e975d1d25b42931a7eb3c2883c33c4ce1a585ed7a065a589ff569732e1ee04ef8f25c84d69ec3458f92263aaa5b2a36fa6da8a1ccacaffd";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/sk/firefox-77.0.1.tar.bz2";
+      locale = "sk";
+      arch = "linux-x86_64";
+      sha512 = "e295e69e84a768ba070f087aecf3cf041e67bc297f144af5eed9a75758e0d322f730b797601fa0733b1b9260f5d3225c899ccd80a3861fdc77ab1ce9179dc589";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/sl/firefox-77.0.1.tar.bz2";
+      locale = "sl";
+      arch = "linux-x86_64";
+      sha512 = "63dd33ca7ce582b4f3284e936f54469a4c31ae1006dcd95ec5952dc4d97b2d524a91adfebc041e8a7b9358f5af847a6fb6af35b41af744c2701d408f64d181d6";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/son/firefox-77.0.1.tar.bz2";
+      locale = "son";
+      arch = "linux-x86_64";
+      sha512 = "801bbdd3da93480dedcc13589c77dd2bebed151df9ff468e8d9d2358f69fb57c22f8916a9581e460ce4fefed6bff651126f92ca588392169556444c21a4aaf42";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/sq/firefox-77.0.1.tar.bz2";
+      locale = "sq";
+      arch = "linux-x86_64";
+      sha512 = "4eff5f67eaededa77e962609ef7da1af2b10f5510f3d354d5d8065957aec115d827da0c0ea056d02b5d7c11f05db7e4b91cfdd6bb0f879ab92f6fe84a1e137a3";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/sr/firefox-77.0.1.tar.bz2";
+      locale = "sr";
+      arch = "linux-x86_64";
+      sha512 = "d688aa2911bd7925f6be1307bfad521ac29364f047b8c7d683328b95b871a7ca0f382c103babffd518f607eea0298177d6ce145511271f3c92b8e2de81da06e8";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/sv-SE/firefox-77.0.1.tar.bz2";
+      locale = "sv-SE";
+      arch = "linux-x86_64";
+      sha512 = "27fad5bd1e0a2b2a06ff48c90049ed2d03fe8c463ce5a5a5b5a83a24add6d1fb72ec83d02f4c9e2e741c3d43b86e9fd3a821cb6d158d3fc940fadcac9d040061";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/ta/firefox-77.0.1.tar.bz2";
+      locale = "ta";
+      arch = "linux-x86_64";
+      sha512 = "1dc96ca10fdedd37369037126c48940c060ec1b0238cb4c592db79b3154c8e1ed167152ebbd33bd7375b241776109222c1c3e886dacf4f885319eeeb7e33ee8b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/te/firefox-77.0.1.tar.bz2";
+      locale = "te";
+      arch = "linux-x86_64";
+      sha512 = "4c203815b896aec1a94416ae2baf96dda2c0c035da00e592ed16eadb9b729710d5cca26cd0d03fc654576b9458b4c2fc50be159164e6ef1f1fddf90609221eb3";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/th/firefox-77.0.1.tar.bz2";
+      locale = "th";
+      arch = "linux-x86_64";
+      sha512 = "22ae877469cd895afd487175ebf04c6a10b42cd7b408e5dcb352143e457690bc13561395abe15db0bb6594074f2298609fc381d2137c5e1aef2af273f17e2489";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/tl/firefox-77.0.1.tar.bz2";
+      locale = "tl";
+      arch = "linux-x86_64";
+      sha512 = "10d60e3389f43f1206a3eb1252897d0a047cb14272f8408c61f34eaeb227966e8e43f9fbb92d246bbffde77fd139e5354fd2abdf0abc91b8631dbbb64635b549";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/tr/firefox-77.0.1.tar.bz2";
+      locale = "tr";
+      arch = "linux-x86_64";
+      sha512 = "c17c8ae0e97b130ee437752410eec9d2bbacc84aa2e5f13e0c52147d7540fe6f76e91a01b0c94aa81b1a67f2a7d8ac29fe9e21197b659a6840c3c9933603c119";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/trs/firefox-77.0.1.tar.bz2";
+      locale = "trs";
+      arch = "linux-x86_64";
+      sha512 = "df664c21640b9d36c487030a5db3f83a2947f375a7bbea3fef9a86add22ebe23f482091cff6205ef22e8544dacad43345302a7b34f0a4729a8da6670ee9ec9cd";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/uk/firefox-77.0.1.tar.bz2";
+      locale = "uk";
+      arch = "linux-x86_64";
+      sha512 = "68f6c6a804b40441cd5bccab2e925864ae8642dd2be6433e215e1a786043b50eebb8e00299d47c19d5b3c52a86c8a0877a511f3142299b906ea2bf4bcd92099f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/ur/firefox-77.0.1.tar.bz2";
+      locale = "ur";
+      arch = "linux-x86_64";
+      sha512 = "05751d956fe5c5d3662c722bf97af4056e32daaff5b704e0f514a16529d8110ffb6caa4207747745b9c46bdaabe51be658b15b54168fea4f0b27287ba7ae9173";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/uz/firefox-77.0.1.tar.bz2";
+      locale = "uz";
+      arch = "linux-x86_64";
+      sha512 = "bbc479208f90b22da1a8cc154870b1b2eaaed25395525820c5add437186c7e3a391545f5efef0d1b11e6ff82d5cb7ba85d1a0872e919cd681eca7abf92aefb92";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/vi/firefox-77.0.1.tar.bz2";
+      locale = "vi";
+      arch = "linux-x86_64";
+      sha512 = "9414e3c51efde79c1d959036d6365416cb421d0cf37bc5e2fbfadf7673d5bd87d506e0ee1914949292c4cdb9061dc93ec50c405eff5cbba8bfe5f1870afb4948";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/xh/firefox-77.0.1.tar.bz2";
+      locale = "xh";
+      arch = "linux-x86_64";
+      sha512 = "61c8b31b28f406eb63688258757ba072065eccc91cf0195f03721cb774ac3e5d5aca0fdba27e09933be8e4106e30ba39ba4cdcfa85d3bda1a8e976695a3e47e8";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/zh-CN/firefox-77.0.1.tar.bz2";
+      locale = "zh-CN";
+      arch = "linux-x86_64";
+      sha512 = "4fc2046f4f2cce47c27876cb63a7b07024b639e43cd01c771bf01ffbbaa70943dab0a17e08ecf63d47b66416a7fbf89cd37cb06dd0eb5d589f0e58168632d6ab";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-x86_64/zh-TW/firefox-77.0.1.tar.bz2";
+      locale = "zh-TW";
+      arch = "linux-x86_64";
+      sha512 = "5eaca5f3d81588547f0df7929f8591527c2a331d52136b23aca547e7d97b711ef45d1b5309d63b08eef44897fb9ba47d91b0b94f077856dbc5e6db3bb62ae441";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/ach/firefox-77.0.1.tar.bz2";
+      locale = "ach";
+      arch = "linux-i686";
+      sha512 = "10723c4bfb26d00637f4e190330bcce602b80b4693c4321b7fd7cfa58cf7ee33d8829c0afd23c17c836ef82f03d5c7da98695248bf932264697015a2949a3576";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/af/firefox-77.0.1.tar.bz2";
+      locale = "af";
+      arch = "linux-i686";
+      sha512 = "276a26621d0fb37f9c57bb5de992a3213cfc97ddf891b6fbec331722455221d71b1dbe6f5ec63cbb552a1dd0addc2ca8549451facd83d9b3b3b5d88fc0e5537c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/an/firefox-77.0.1.tar.bz2";
+      locale = "an";
+      arch = "linux-i686";
+      sha512 = "2cd26f8507a49676c32fb7c9c8ce43a9df082a965d59340ec794f11e85077f126a2052c86ab78edc6087a1fbbed3e58e773930f20a5e3e69fece29df0931aa1f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/ar/firefox-77.0.1.tar.bz2";
+      locale = "ar";
+      arch = "linux-i686";
+      sha512 = "80a4fa4279f0121fddc956ebec61b9ad2fc4417f8e41461517e50fbbd6d44278640590e4d4ae383a3e1d732382f037ed7bcbfe599fb08ab21a0d98b52f32d0f8";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/ast/firefox-77.0.1.tar.bz2";
+      locale = "ast";
+      arch = "linux-i686";
+      sha512 = "68392bec35e5ae6913311c7f6187d916dee6e3702663e0812a557e331a5cc4f30cf8cd6555abdf132ae7d638100ddbcd485bdbbe1519693ba34d607e32c361e6";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/az/firefox-77.0.1.tar.bz2";
+      locale = "az";
+      arch = "linux-i686";
+      sha512 = "e15dda365436f32ce3b553f63e459e5d32c5a00aa3b4413899c9028e0b18d1a575c33747cd621d1b8e08a84a77ee2ead5c5fdd8b4077055dbe96cbf2d223cb05";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/be/firefox-77.0.1.tar.bz2";
+      locale = "be";
+      arch = "linux-i686";
+      sha512 = "46dc546bf28e57f7d2fd462733eb7486f88d4198159e77873a5b566590fa1b81db8ef4149dffcf60cbc6aad1529be11b8eaf5aa4fc410600a4a1eff3b576f0e0";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/bg/firefox-77.0.1.tar.bz2";
+      locale = "bg";
+      arch = "linux-i686";
+      sha512 = "f44fbeb1b25249a28a9fd77dda908c3247f85f788ba22dc131155e6c21d80450975687e546a63291832974555745e29bc8b8b177c338bf911c212125a10f95c1";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/bn/firefox-77.0.1.tar.bz2";
+      locale = "bn";
+      arch = "linux-i686";
+      sha512 = "b2fdfb72aede045bbdf03feeb38d0f8530edbf6f2e9ecd9723b481365eaf0827e879a38136e6d72efb666138403205c13cdb10a1018e5d255a847d8fda4a2507";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/br/firefox-77.0.1.tar.bz2";
+      locale = "br";
+      arch = "linux-i686";
+      sha512 = "68cd1a7eaabab81400c78e1fa36850dd84fae8f2b05d5c57a4769beb7948d050b6cdb5b4b6928afa3a70ab9cd97e37214d67ccc5cebf62d09b7c1194ff410b24";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/bs/firefox-77.0.1.tar.bz2";
+      locale = "bs";
+      arch = "linux-i686";
+      sha512 = "4fa4d41a85e4746e383bb514aab8222a9c0aa4ebb1779009a50e891c672e6a1002ba454ed24d7d4fc4f0f79ca53a985ff56981acb2845762085570bed93da3f2";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/ca-valencia/firefox-77.0.1.tar.bz2";
+      locale = "ca-valencia";
+      arch = "linux-i686";
+      sha512 = "23b3a60a34fdc9dc31e54141e5f62d21fc118b9932ed5b0eef6614535174c107b113bbcb3c42a940fcf6a86d1e734d5478dcf840f882cad6a772c6006c8944c6";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/ca/firefox-77.0.1.tar.bz2";
+      locale = "ca";
+      arch = "linux-i686";
+      sha512 = "227cbe52a302f4030fe610ba816c70c5051c58732964fbe64462b62e879df0e35069b0a5d5a862bed87c21f36387fa43bdb82db827fe58b1e1d80c966f0ccf5f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/cak/firefox-77.0.1.tar.bz2";
+      locale = "cak";
+      arch = "linux-i686";
+      sha512 = "5a615b7de8caefaab8f4f75401b13f40f3cc4ea23404f9a998979402789e8b2493c1cdb88b56a450b3a0bdc075a42722d963c3f65241ed3b690398d0d71dc196";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/cs/firefox-77.0.1.tar.bz2";
+      locale = "cs";
+      arch = "linux-i686";
+      sha512 = "75f06c1697372e0432e8c6e9691497e0cd328ed7e050a0bdf76acd3513328994d734c4ebddd923e2d19b5a83142c4570e16f3079fa6e0406ac83de25e3fe6e42";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/cy/firefox-77.0.1.tar.bz2";
+      locale = "cy";
+      arch = "linux-i686";
+      sha512 = "7636a99636e77e4a6b6ea20c6d73eefc11c91691d0418d75a3fa7033d844c8ab652cc5dd1caa1c574dbf4c1a143ed738c08346af4ff4323493aca461fa256b44";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/da/firefox-77.0.1.tar.bz2";
+      locale = "da";
+      arch = "linux-i686";
+      sha512 = "0a591e75f79f196dc45630b32e237e8b28cc2ae8463ababfb36b1fa9ae4f271eb53d7cf31834de8ebc0e453b89310e5789996add2f57d0035d1d9a80369e6ae6";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/de/firefox-77.0.1.tar.bz2";
+      locale = "de";
+      arch = "linux-i686";
+      sha512 = "fcbfe21676ccda69d67f945260ec5a62a7513b5d4c4a51dadd252d083860f2b0d2ca0882714af55485a0e11b36a0059c87db682032901506973ca54a8e341c38";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/dsb/firefox-77.0.1.tar.bz2";
+      locale = "dsb";
+      arch = "linux-i686";
+      sha512 = "76e8200017f7a89b0418ff555ef8028e38012fa520ca2fa83239290eebfbf4c1e063d42bbe288e6d32daf9dd27d463cc6fde2d8c60e7a3b8ab2cd442742da450";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/el/firefox-77.0.1.tar.bz2";
+      locale = "el";
+      arch = "linux-i686";
+      sha512 = "73f5a0f278556b0c99eb479407401f19ce228cfef164ab1cfc61c766052beac10ad9ca3d8bb2e9684d31db75b764572203ad22682f48af3db9d74b3b2c7e327d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/en-CA/firefox-77.0.1.tar.bz2";
+      locale = "en-CA";
+      arch = "linux-i686";
+      sha512 = "51d76ddee014df74e45fcf960fbcf61aff4500fbd86d4ce99b9f52223955af2b7f81bf6c66501085460ec759471a8ea45d45b09295d3be8f9d03a3b55d788570";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/en-GB/firefox-77.0.1.tar.bz2";
+      locale = "en-GB";
+      arch = "linux-i686";
+      sha512 = "93aa0d761f68c2b5b6c387284418795a77491d5f880d3cc0fa9ccdea2971563326545fc9dbb1f5ca0bae19e7199553c757320706e95afb2b77c00c2e06fba911";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/en-US/firefox-77.0.1.tar.bz2";
+      locale = "en-US";
+      arch = "linux-i686";
+      sha512 = "b3da650b9da5df10c611aeb5e08a6f96be431a85edc0c3768221faabfc3b302bb23677b33527d23d9df37aac7b83daf869f4a373d461893a9be83d1b74937e87";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/eo/firefox-77.0.1.tar.bz2";
+      locale = "eo";
+      arch = "linux-i686";
+      sha512 = "c089b6425c683a1a75956fe50be90e9027693eb4bf3dd7b19efcfedcae36cf8c989898b5d6e69f15810be0a2485a353fd0d6a1ef9041e50ac62888769e9187cf";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/es-AR/firefox-77.0.1.tar.bz2";
+      locale = "es-AR";
+      arch = "linux-i686";
+      sha512 = "369fe08d54a48e9d6c5260b03c4af124ab43676ba46d96eac08f71b4bcd3a9776563e6bebf37ed523828463735792f6a160e222cba912cea9020a84b92136d31";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/es-CL/firefox-77.0.1.tar.bz2";
+      locale = "es-CL";
+      arch = "linux-i686";
+      sha512 = "dc9f850c487209b414b77d9bbebfbf3c32a8ee5644dbb2a9a119fb0f9da6d3d711a3783a4151dbf3036b9f94c28273802893add63238ffffdbf77cf213686c12";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/es-ES/firefox-77.0.1.tar.bz2";
+      locale = "es-ES";
+      arch = "linux-i686";
+      sha512 = "331a100f8b71ad1e33e436e0d03c37438e0c7dfaad9f280d627dd02c2c28e28756d7856d36e407b84c254ca45b88a761e9a940955a8aa52c0c558fb98b4e6bc2";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/es-MX/firefox-77.0.1.tar.bz2";
+      locale = "es-MX";
+      arch = "linux-i686";
+      sha512 = "c4ce60e070214ca4901e153c3033e66cfcfe8d0ebf9c1d1e448105467b8a129e7904a3293fb3d895a6380a0e54bfd007e5d581bba4f1d2ee7ba3cd44b5117705";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/et/firefox-77.0.1.tar.bz2";
+      locale = "et";
+      arch = "linux-i686";
+      sha512 = "bae0eec7d0578f8ba911f71505d803efcb8b7005e6e6ba0bc7dc36093f462c7f704c1244dddad5d38249204b553cdf8b0efeb12c235db171d98f5e2827d085eb";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/eu/firefox-77.0.1.tar.bz2";
+      locale = "eu";
+      arch = "linux-i686";
+      sha512 = "821d3b331ac1bda31543c08ca678d141f640e862986da1c5b0e8c48981fe88252cacbc728b63e4552fbd83dcd086268420f63a0afad5a37ab0348e7d29828d03";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/fa/firefox-77.0.1.tar.bz2";
+      locale = "fa";
+      arch = "linux-i686";
+      sha512 = "1ded2445623c10c5b348041935c03050eebfe1af1fcbc9ca9c2bb630a38a095408f3d09e9f4ecb9db4e06ea51d9aa139ddde8531db0072f6a57c7932fe302e80";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/ff/firefox-77.0.1.tar.bz2";
+      locale = "ff";
+      arch = "linux-i686";
+      sha512 = "1f3a2d9c0c981c20f1dcabcdc5c8b6a8170a238f4381004183f8381bc1059d65d650374f03d124d22e821cb8d9bef59d59aba6ef132dec991b72af4c77f61d8b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/fi/firefox-77.0.1.tar.bz2";
+      locale = "fi";
+      arch = "linux-i686";
+      sha512 = "8f4737e9bbdfae980faae68758906099aede135167cc99b3ee98eab85e6d9d22616e8043af7f02981ab96b885312a89869980a06fc0ddc117806b1d5f9b2d3ab";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/fr/firefox-77.0.1.tar.bz2";
+      locale = "fr";
+      arch = "linux-i686";
+      sha512 = "8680f38e6b9d56f3339f243e99cb5d541d6b2eb10a7210d8cd81bdc91f35dedd0de3b551e1b857b216806bda223c3a638cdd7e786d97674c5b7ea6710f669304";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/fy-NL/firefox-77.0.1.tar.bz2";
+      locale = "fy-NL";
+      arch = "linux-i686";
+      sha512 = "aa34dde7faed1b86707f71fe190abde730f0ecf33351c487d1a2fdd369dd67375d122a266fb5dc2b28aba87c93663a5606c43fe3092597b04cf9adc752c3bcb4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/ga-IE/firefox-77.0.1.tar.bz2";
+      locale = "ga-IE";
+      arch = "linux-i686";
+      sha512 = "bb1988e6b4b718cc698a5de87b9f339dd28a2d552906c24fbe9d67385c70e3669eb284220f506f3afe03949be5df0178af1d13c727716e1bcc07d9020c180661";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/gd/firefox-77.0.1.tar.bz2";
+      locale = "gd";
+      arch = "linux-i686";
+      sha512 = "57b665e7bf404a0ae8c7602b88d987ff550d66a2a72c47ad8d163d9a697cef18753dde981d46471c5276002ebc5464bae54316e595d1d2aa8a00ca07bae25d69";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/gl/firefox-77.0.1.tar.bz2";
+      locale = "gl";
+      arch = "linux-i686";
+      sha512 = "409cec1407ab01070aa75a0234ecc82e974f00ef7391119828b1a2ab019c62b5986a15226f620bb1fb403288d9aabded3bad1226ae8ce516476929a181b0ffad";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/gn/firefox-77.0.1.tar.bz2";
+      locale = "gn";
+      arch = "linux-i686";
+      sha512 = "e2db32222279de40ae37392af9df330ab6d3bc1d1a583c93530262ad541b4d3139392a5d0043d6e9d0841fd0eaeb40c53b5e6f3f8fea762ad160888012dc7428";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/gu-IN/firefox-77.0.1.tar.bz2";
+      locale = "gu-IN";
+      arch = "linux-i686";
+      sha512 = "99bb0e4244ad5c406259d627161c8abbf5dbedd664c83ecff6767656af8e4101c8d62081ded7a8cd1842d739689cb6aaee02bba593ab162dad3139d5b03ad3cd";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/he/firefox-77.0.1.tar.bz2";
+      locale = "he";
+      arch = "linux-i686";
+      sha512 = "ec00d7c46d50f38d0d43efe2e98d6e404398676eaee9640a4148e3cc196cb73ac62711a188d32c167c48bf048a5e0155db714172ba0bb7024dce6c2122c656ed";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/hi-IN/firefox-77.0.1.tar.bz2";
+      locale = "hi-IN";
+      arch = "linux-i686";
+      sha512 = "e107c3042a1e9ab1896a7b98dcff5918b8b3adf35d3e50fea5847337c505d2cb4073a9a15fd2d3b4f6949615cd8b0376541e715d686388e418d5ce64c1001e0b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/hr/firefox-77.0.1.tar.bz2";
+      locale = "hr";
+      arch = "linux-i686";
+      sha512 = "cee9eb9a7b13944d2dd4c52456cc44404b2377062972eb3c9992499f3835d352567fb05560829ebd9db083f62bf9722d9c0e9610d439fb5d79c2dc120542970f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/hsb/firefox-77.0.1.tar.bz2";
+      locale = "hsb";
+      arch = "linux-i686";
+      sha512 = "7936c949ac42d69b573f8b6be4055cf3b4cc62a8ad7c5c060ee4be8aaf0ad1e9e3c651289dab7c159e8ab18584374023dc605629233f58d944f13ca87db574c7";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/hu/firefox-77.0.1.tar.bz2";
+      locale = "hu";
+      arch = "linux-i686";
+      sha512 = "a68299f239c80c1346a5aa559fc5dd6f6e6dfc13f883c2e7be88c267725c837b6ca3c4dda06e5bf6c81ecd16739a1921c21bc71c3caf72944797915f452ba450";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/hy-AM/firefox-77.0.1.tar.bz2";
+      locale = "hy-AM";
+      arch = "linux-i686";
+      sha512 = "a8ef4b5467d58ef6935bb4525363d38a9167a00a8ad84665b2971cae231c60706ac46618d62d183c19ca2eaaee04d0f386c845cefe6eed3a3e12dae188524f2c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/ia/firefox-77.0.1.tar.bz2";
+      locale = "ia";
+      arch = "linux-i686";
+      sha512 = "5c3b30a18467b416b109e2ff48e3a50c1cf10e550b22436115a44d13aaa03696443a5fee6c978e3560ada583fdd2806f3f1ec13c221dea097768b2d282d12160";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/id/firefox-77.0.1.tar.bz2";
+      locale = "id";
+      arch = "linux-i686";
+      sha512 = "bfbd86bd3eef27c2eed900c23c29a0236884b1fd4d858ee8bcdda2a071abe1d042624b31ef258f9ea415b04ff1d17e70333c6507ef2a534033f1869e742e8b82";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/is/firefox-77.0.1.tar.bz2";
+      locale = "is";
+      arch = "linux-i686";
+      sha512 = "459e4c9686952467d7e179c1b4f9f422e6445509813b0e0fba200e46468dabbefe59210a2cb218b226a6c41a333a64bc17005380be7e319015d722fa70a600fc";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/it/firefox-77.0.1.tar.bz2";
+      locale = "it";
+      arch = "linux-i686";
+      sha512 = "6cd7c36d28e6abbcb92582b14022e56b048481cda7832b93c5dec6b0b4e38bd99de121c433eb0e90c9ebaad2bd00f681f22fadd09acfb1b669c0886544ebd8d4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/ja/firefox-77.0.1.tar.bz2";
+      locale = "ja";
+      arch = "linux-i686";
+      sha512 = "cecda310147fc3298bbdb250d4d7a5a66225dd96f1bb0317b1846049a15c47bd2b7579982dac583dd4eaa1cd8bf706e7213b0c7bbe48ca980070f413380a133e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/ka/firefox-77.0.1.tar.bz2";
+      locale = "ka";
+      arch = "linux-i686";
+      sha512 = "ad29814eb9cbe19061b361c23c896f8bf8cb21c67d36942a1614af74a5adcb225df20dccf3af8d34dba27036d38feb758a945cb69a66c6ad1ec0271fe1c316b6";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/kab/firefox-77.0.1.tar.bz2";
+      locale = "kab";
+      arch = "linux-i686";
+      sha512 = "cadd0cb80e9d00d2a4f6f5a5274d85b23eaf802874c813a87fd7464d4cf7ac528c4b2ff30446c7cb438fd1faa514c80a2576d1d6b36779ab983fac5fd6654317";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/kk/firefox-77.0.1.tar.bz2";
+      locale = "kk";
+      arch = "linux-i686";
+      sha512 = "033bdb4274c05b06b2c1fc3822a220aceb7b39bff310de6fbe2e59a097eac77a6aafcd275be690e84334ea7bf70c6bdb1a43f4bec0b82286e42db7797348ee57";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/km/firefox-77.0.1.tar.bz2";
+      locale = "km";
+      arch = "linux-i686";
+      sha512 = "d028d387c7546ccba6b3001d006d0243300d770b1e255cbe02841bba759a8b4d75a55a68dc5f8a7dcc869badde9d7bd38f572e26d544444190ae05c23ff4b9c6";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/kn/firefox-77.0.1.tar.bz2";
+      locale = "kn";
+      arch = "linux-i686";
+      sha512 = "e7c17380869b5f47359bcbb82fbe6b2b16d814536218bfa1447432f0affae78d6c53e68a7ff7153e0e2ed72979c026edf6e8a9689b0cc90ff3d10919b3e06061";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/ko/firefox-77.0.1.tar.bz2";
+      locale = "ko";
+      arch = "linux-i686";
+      sha512 = "bda7e81ddb11dd7a197a9e6e286b3a8cc10e3c3d2a627f5c970643427a158c7615901aa05fc4da737586d5bd86eb4411a23e5830c1f6af582963f18c169eaa05";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/lij/firefox-77.0.1.tar.bz2";
+      locale = "lij";
+      arch = "linux-i686";
+      sha512 = "4a2a07e90d9ec3aa26557523c0c20d1aef34895ee06ee02dfedbb6f3d612623c23c84f10eaaeaabb35133e3f69b9545dd8720929ea04b73af8c9c3acac53901e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/lt/firefox-77.0.1.tar.bz2";
+      locale = "lt";
+      arch = "linux-i686";
+      sha512 = "ddccb22c9d0dac8abe9c81782293834213a53b182ae0650b7904c6cc8f5777255ef642cb442345c64a1cad96d0ec8f45ce6d6cafb0e6405474c2a8e972250254";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/lv/firefox-77.0.1.tar.bz2";
+      locale = "lv";
+      arch = "linux-i686";
+      sha512 = "86af4440803d27a5f6312b8a7dbd0d5f66fd1cf90b0e9b1cee8c4ee3b555927830a8cc3a06b6c72a66cee4e75d7e11168060d8681fa1f7c39ea2522819dc893d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/mk/firefox-77.0.1.tar.bz2";
+      locale = "mk";
+      arch = "linux-i686";
+      sha512 = "e3876258021cd0d3197af334eff967ef2d1429eee880b63ee0d88569b94f0ab938b5843153cf4b9e6608c4c63c50682671ef4f6c15d8298b43748885f8d57c17";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/mr/firefox-77.0.1.tar.bz2";
+      locale = "mr";
+      arch = "linux-i686";
+      sha512 = "9b7379aef1061ffc24f9f70e28dde4c5828315bbff4848cec7764a7d373f3590539a052e6578e1e87d214263f009c831dd2890f3d7a7eb071b0011f75402ecc0";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/ms/firefox-77.0.1.tar.bz2";
+      locale = "ms";
+      arch = "linux-i686";
+      sha512 = "36d44b200a554476da7c63918b709d57c31741901bd33081f493d9ef8bfb27969d491381ccbb8f4a21e48693cd35bc1630144121c8871dbc0d1a87a730d467b1";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/my/firefox-77.0.1.tar.bz2";
+      locale = "my";
+      arch = "linux-i686";
+      sha512 = "4e290ea118b8b2ce63879a926d7992a3a231343ae98f9d6f61de720c5c39e2b4dd5b2e63ce8937945b02cc6b2acad1e7ee6aa3c2c15441e11270d817ea2615df";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/nb-NO/firefox-77.0.1.tar.bz2";
+      locale = "nb-NO";
+      arch = "linux-i686";
+      sha512 = "82820f7da33b522f6e4547f650ff85e8d05e8b2142d2e113b9e0d94af560792ca3314a1afe98d3f18d3fc0fcf887de601bc22e93101908cc31a2238af359d150";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/ne-NP/firefox-77.0.1.tar.bz2";
+      locale = "ne-NP";
+      arch = "linux-i686";
+      sha512 = "591699f34737fcbfdf9c72b12be83ba5bc83bc027ef439c40f5b0eb22014fac54b5661da9fa0f118ed82bb5290147445f4d703e40a152ad4f7d2cb7153b9586b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/nl/firefox-77.0.1.tar.bz2";
+      locale = "nl";
+      arch = "linux-i686";
+      sha512 = "fbeae8de6a8297a9e0fab0a10e2c95aaa2d82af7304bbf49fad7cae69f26c5a9dae9de4d84614a1061cf9a82f71abb7eba2e8cb4988ad93d1b5667912ee537fb";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/nn-NO/firefox-77.0.1.tar.bz2";
+      locale = "nn-NO";
+      arch = "linux-i686";
+      sha512 = "4cbef717a02fec48d29a9f0ed80c8db34fcee2ccd1f2cd6e0fbf0d2b0d36cb5101bbe794c59c8bdafe28c6286eb4c0fa28942c77b3d4a4c047a97bd66c41b7c0";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/oc/firefox-77.0.1.tar.bz2";
+      locale = "oc";
+      arch = "linux-i686";
+      sha512 = "5a1cf2f3b9200c0fc039ff7c961eb7fff97464f0259c4b6a5fbfecf54d7d333abdc8b052d3138278c87726769bf7b10f2bd4557493e6e666f96187386289c8b0";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/pa-IN/firefox-77.0.1.tar.bz2";
+      locale = "pa-IN";
+      arch = "linux-i686";
+      sha512 = "355656300dfd9bef921e2123ffcc633d0562798b5ac692506c87204f2951f3800c03fc3e9e85c6dc9110644b17e40fe5058149b805255f43b1217b1cd71aacf0";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/pl/firefox-77.0.1.tar.bz2";
+      locale = "pl";
+      arch = "linux-i686";
+      sha512 = "b677c207bad42145fac04efb40d9c48800ca0796536ece583d6588f612a3e7c1e5dfa8476e38795eac7362ee0cf4ff60e803bf4263bb6ef875337688d2f9897b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/pt-BR/firefox-77.0.1.tar.bz2";
+      locale = "pt-BR";
+      arch = "linux-i686";
+      sha512 = "96e99c72d3131b7e920652a9adfa0794ed67932adfa9193796a8375e907a6c7817a21a2aa41f852e5c58897f41de8394c8e7e81462d74900fa45e2b3b5837d51";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/pt-PT/firefox-77.0.1.tar.bz2";
+      locale = "pt-PT";
+      arch = "linux-i686";
+      sha512 = "2c119a0774f6ae8802a15ae24f2a1fae50da1d4a2f676e3fee7349745ffac497859aafdfca3d092dd3b2dae7f51307953337281ca3274a2746503161b93ff2d3";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/rm/firefox-77.0.1.tar.bz2";
+      locale = "rm";
+      arch = "linux-i686";
+      sha512 = "09c9669f36b03be27b4defde30cb3c20ea2790e18a05a2059bc79ecde006f019053cdf6c8f0eb2523de0c8d0fca3b2f0bd9cf02b8e2b6d9890ca3ecd51abe965";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/ro/firefox-77.0.1.tar.bz2";
+      locale = "ro";
+      arch = "linux-i686";
+      sha512 = "24b1b5587dafc81a45e6ed89db33cf0bdf054f14a4d7e883a4f779573d17fc04cde1065b22243d0e0827c73accdc0dd08619a56e8caa04986e7500a57916f95e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/ru/firefox-77.0.1.tar.bz2";
+      locale = "ru";
+      arch = "linux-i686";
+      sha512 = "dbb9654c696ac29966551843b6c27d0867750565c21e84c9e71b6443bb5557847e109826ff550107bd56008e913c625e89ac60268f4cd140d2278a4eb82b1a67";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/si/firefox-77.0.1.tar.bz2";
+      locale = "si";
+      arch = "linux-i686";
+      sha512 = "a47e67c9b3e6a33dcd0dc489e32d95f44345593fac2e678610045fe5408928e12445551011ae87d4e6e242f35c11ee0edad2b6955485394d1f55d3d4e8f68dd3";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/sk/firefox-77.0.1.tar.bz2";
+      locale = "sk";
+      arch = "linux-i686";
+      sha512 = "c73e183daea5adc333c04b0c473af3189c2d24f84ee352733b211925e62c02cdcd2125c4ccb12fa15b08a48bd0a690a06e39c364108ce47b834b321268cf5488";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/sl/firefox-77.0.1.tar.bz2";
+      locale = "sl";
+      arch = "linux-i686";
+      sha512 = "7f64f829c83b5483fd3a839aca41dbc0e3506576d633f8c6dfb9265a5bf783aeed537ca801fd07f8356b71aa47719e742b1bcf680f4a6d6c21469327bfa0b9b9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/son/firefox-77.0.1.tar.bz2";
+      locale = "son";
+      arch = "linux-i686";
+      sha512 = "fc8120011f886f996840420c07bd7502622f63a1b53b7d918c16ba1b60ed76a737bc6bd27532f03262671cbfc0f094e41422f5485b4c6854d78d4f95422141da";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/sq/firefox-77.0.1.tar.bz2";
+      locale = "sq";
+      arch = "linux-i686";
+      sha512 = "9116b54651b0ed2caa04f7c9327cb1fb977242364ee17ea19e114d8fcfad03c08cc3706ab6e355f91ecc3d1f6232955db0668e5f7f290d191a051b214f06b779";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/sr/firefox-77.0.1.tar.bz2";
+      locale = "sr";
+      arch = "linux-i686";
+      sha512 = "ec0ac112222d35bf2345a91f448677ccc24f213710a1d5cda976c6ac15b8d3ca28bc32790f301103cfd3f2ae52ebfdf41464b6fb95df4b0f8535238b714649de";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/sv-SE/firefox-77.0.1.tar.bz2";
+      locale = "sv-SE";
+      arch = "linux-i686";
+      sha512 = "7e3a6c8da1143c3cf19e3f98542ed6b3e9dc1bab0667a2e64ab82c5f68f9623ed2196ed4378174998070e72a77bf00d5d9bc9d727b319d1c7699992a7bb67aef";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/ta/firefox-77.0.1.tar.bz2";
+      locale = "ta";
+      arch = "linux-i686";
+      sha512 = "5e3d653003fe036687bc55f4f5f0a2f1008ae58a196047654a1a067d88c7cf06b132207a3647ad5d3a707d85322d0d9eee21222c832daf67b9dc2895e6cf75ce";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/te/firefox-77.0.1.tar.bz2";
+      locale = "te";
+      arch = "linux-i686";
+      sha512 = "2f42f73eb590ed605e1871d11217027abed2dfe0d2bdba2e9c29c6cbcc5c639b48e4bc26b8a6807c316dde23005e5e1010ebef4c4dfb385bf2e41a4710acf12e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/th/firefox-77.0.1.tar.bz2";
+      locale = "th";
+      arch = "linux-i686";
+      sha512 = "49f4f6d2f5dacf108debe915116905f5da4c65bed1c13d7f2a65b8b21b0734a34add68c6b56c340e90f6f82ba1f8cbcf9b7fb2546ce64e33c73e2a73e9b3bb17";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/tl/firefox-77.0.1.tar.bz2";
+      locale = "tl";
+      arch = "linux-i686";
+      sha512 = "6e4368b4a0ebe0b296eae341563f8712567f08c7889b0600cd5c0ab881b1de1f5bf8e657b5ac497746fdfe087c8bed902014bb6daa0ce4c2d3712dda614b698e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/tr/firefox-77.0.1.tar.bz2";
+      locale = "tr";
+      arch = "linux-i686";
+      sha512 = "fedfa95f6516d3685d73ec3997148eb0954a8ef6713e8cffc304080937a1962a26cf384a85e937a9394150d52fc9db14c3a85b8b483d18615759dd06bb04a558";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/trs/firefox-77.0.1.tar.bz2";
+      locale = "trs";
+      arch = "linux-i686";
+      sha512 = "3b165460a7a34e5b2a059101a508a6353ca7f89c03c9eeb7b062e734c2cb1786b1cd2f9415cef7fd3ca2aceb72b4311b2b5da778f96b51f33aeb39cd7e69f1e4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/uk/firefox-77.0.1.tar.bz2";
+      locale = "uk";
+      arch = "linux-i686";
+      sha512 = "02c39e86a144dcb6ccffaf4a6c6620088409b8a098e3d2d92268d5b2dd7098c01b9a55878a9ebf1a91552b3f1be8dc86a6a8ff514e3988ffa51e581dfcf43b8b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/ur/firefox-77.0.1.tar.bz2";
+      locale = "ur";
+      arch = "linux-i686";
+      sha512 = "d244301b2ee17b78a1ab20cb7a8fe362b6ac86e0cdb9d811afc11c0637ad3fe1e1dffb721411f36960ecec011b7b691a12df1bef1d257c22ae45d345096b7166";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/uz/firefox-77.0.1.tar.bz2";
+      locale = "uz";
+      arch = "linux-i686";
+      sha512 = "8fc3cf2b1eca9b229ada7ca632fd362e42bc1063ad1bc22df1f6781cf996d179dd8e8fa231e02ffb12dcdfccd6f6641735e0b4b28c6e2a1a9372d80c0dc8fd78";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/vi/firefox-77.0.1.tar.bz2";
+      locale = "vi";
+      arch = "linux-i686";
+      sha512 = "3676a6246a7fbd49a5779fb2b9ad3e14be809228e15bb19f81ca3b880ee5d584c4aba07d1a94ed2cdb6ec7549409d7738750422d06fa2415722d3424e948ab98";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/xh/firefox-77.0.1.tar.bz2";
+      locale = "xh";
+      arch = "linux-i686";
+      sha512 = "d4a8d251a4ad5603f301ad45f7eb3518066f06668a765d1583d067e0b89caa87f6699e1e06f67853527dd352b903c4b3a063d5ad7d19d297a040671a98aac2dc";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/zh-CN/firefox-77.0.1.tar.bz2";
+      locale = "zh-CN";
+      arch = "linux-i686";
+      sha512 = "2137ced68047439bfff22eaa7bccdeac3b0c30c7e71e3523c54f47a3127a8f0ecf6ff3a3ff789e05c5df525f3c3d32d616eb731f022fe063170d3c67e459b093";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/77.0.1/linux-i686/zh-TW/firefox-77.0.1.tar.bz2";
+      locale = "zh-TW";
+      arch = "linux-i686";
+      sha512 = "23efdb7382ea3483784589fe0cfb9919630f34e5418734de9bd52ad9e91438a4d86f8760b1c4a4c127e1fe05de19ed24aedd0e21c2bdb32c5ab62183bc32fb18";
+    }
+    ];
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/update.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/update.nix
new file mode 100644
index 000000000000..d6593be8890c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/update.nix
@@ -0,0 +1,90 @@
+{ name
+, channel
+, writeScript
+, xidel
+, coreutils
+, gnused
+, gnugrep
+, curl
+, gnupg
+, runtimeShell
+, baseName ? "firefox"
+, basePath ? "pkgs/applications/networking/browsers/firefox-bin"
+, baseUrl
+}:
+
+let
+  isBeta =
+    channel != "release";
+
+in writeScript "update-${name}" ''
+  #!${runtimeShell}
+  PATH=${coreutils}/bin:${gnused}/bin:${gnugrep}/bin:${xidel}/bin:${curl}/bin:${gnupg}/bin
+  set -eux
+  pushd ${basePath}
+
+  export GNUPGHOME=`mktemp -d`
+  gpg --keyserver hkps://gpg.mozilla.org --recv-keys 14F26682D0916CDD81E37B6D61B7B526D98F0353
+
+  tmpfile=`mktemp`
+  url=${baseUrl}
+
+  # retriving latest released version
+  #  - extracts all links from the $url
+  #  - removes . and ..
+  #  - this line remove everything not starting with a number
+  #  - this line sorts everything with semver in mind
+  #  - we remove lines that are mentioning funnelcake
+  #  - this line removes beta version if we are looking for final release
+  #    versions or removes release versions if we are looking for beta
+  #    versions
+  # - this line pick up latest release
+  version=`xidel -s $url --extract "//a" | \
+           sed s"/.$//" | \
+           grep "^[0-9]" | \
+           sort --version-sort | \
+           grep -v "funnelcake" | \
+           grep -e "${if isBeta then "b" else ""}\([[:digit:]]\|[[:digit:]][[:digit:]]\)$" | ${if isBeta then "" else "grep -v \"b\" |"} \
+           tail -1`
+
+  curl --silent -o $HOME/shasums "$url$version/SHA512SUMS"
+  curl --silent -o $HOME/shasums.asc "$url$version/SHA512SUMS.asc"
+  gpgv --keyring=$GNUPGHOME/pubring.kbx $HOME/shasums.asc $HOME/shasums
+
+  # this is a list of sha512 and tarballs for both arches
+  shasums=`cat $HOME/shasums`
+
+  cat > $tmpfile <<EOF
+  {
+    version = "$version";
+    sources = [
+  EOF
+  for arch in linux-x86_64 linux-i686; do
+    # retriving a list of all tarballs for each arch
+    #  - only select tarballs for current arch
+    #  - only select tarballs for current version
+    #  - rename space with colon so that for loop doesnt
+    #  - inteprets sha and path as 2 lines
+    for line in `echo "$shasums" | \
+                 grep $arch | \
+                 grep "${baseName}-$version.tar.bz2$" | \
+                 tr " " ":"`; do
+      # create an entry for every locale
+      cat >> $tmpfile <<EOF
+      { url = "$url$version/`echo $line | cut -d":" -f3`";
+        locale = "`echo $line | cut -d":" -f3 | sed "s/$arch\///" | sed "s/\/.*//"`";
+        arch = "$arch";
+        sha512 = "`echo $line | cut -d":" -f1`";
+      }
+  EOF
+    done
+  done
+  cat >> $tmpfile <<EOF
+      ];
+  }
+  EOF
+
+  mv $tmpfile ${channel}_sources.nix
+
+  popd
+''
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/common.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox/common.nix
new file mode 100644
index 000000000000..e979f300ab10
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/common.nix
@@ -0,0 +1,314 @@
+{ pname, ffversion, meta, updateScript ? null
+, src, unpackPhase ? null, patches ? []
+, extraNativeBuildInputs ? [], extraConfigureFlags ? [], extraMakeFlags ? [] }:
+
+{ lib, stdenv, pkgconfig, pango, perl, python2, python3, zip, libIDL
+, libjpeg, zlib, dbus, dbus-glib, bzip2, xorg
+, freetype, fontconfig, file, nspr, nss, libnotify
+, yasm, libGLU, libGL, sqlite, unzip, makeWrapper
+, hunspell, libXdamage, libevent, libstartup_notification
+, libvpx, libvpx_1_8
+, icu, libpng, jemalloc, glib
+, autoconf213, which, gnused, cargo, rustc, llvmPackages
+, rust-cbindgen, nodejs, nasm, fetchpatch
+, debugBuild ? false
+
+### optionals
+
+## optional libraries
+
+, alsaSupport ? stdenv.isLinux, alsaLib
+, pulseaudioSupport ? stdenv.isLinux, libpulseaudio
+, ffmpegSupport ? true
+, gtk3Support ? true, gtk2, gtk3, wrapGAppsHook
+, gssSupport ? true, kerberos
+, waylandSupport ? gtk3Support, libxkbcommon
+
+## privacy-related options
+
+, privacySupport ? false
+
+# WARNING: NEVER set any of the options below to `true` by default.
+# Set to `!privacySupport` or `false`.
+
+# webrtcSupport breaks the aarch64 build on version >= 60, fixed in 63.
+# https://bugzilla.mozilla.org/show_bug.cgi?id=1434589
+, webrtcSupport ? !privacySupport
+, geolocationSupport ? !privacySupport
+, googleAPISupport ? geolocationSupport
+, crashreporterSupport ? false
+
+, safeBrowsingSupport ? false
+, drmSupport ? false
+
+# macOS dependencies
+, xcbuild, CoreMedia, ExceptionHandling, Kerberos, AVFoundation, MediaToolbox
+, CoreLocation, Foundation, AddressBook, libobjc, cups, rsync
+
+## other
+
+# As stated by Sylvestre Ledru (@sylvestre) on Nov 22, 2017 at
+# https://github.com/NixOS/nixpkgs/issues/31843#issuecomment-346372756 we
+# have permission to use the official firefox branding.
+#
+# Fur purposes of documentation the statement of @sylvestre:
+# > As the person who did part of the work described in the LWN article
+# > and release manager working for Mozilla, I can confirm the statement
+# > that I made in
+# > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=815006
+# >
+# > @garbas shared with me the list of patches applied for the Nix package.
+# > As they are just for portability and tiny modifications, they don't
+# > alter the experience of the product. In parallel, Rok also shared the
+# > build options. They seem good (even if I cannot judge the quality of the
+# > packaging of the underlying dependencies like sqlite, png, etc).
+# > Therefor, as long as you keep the patch queue sane and you don't alter
+# > the experience of Firefox users, you won't have any issues using the
+# > official branding.
+, enableOfficialBranding ? true
+}:
+
+assert stdenv.cc.libc or null != null;
+
+let
+  flag = tf: x: [(if tf then "--enable-${x}" else "--disable-${x}")];
+
+  default-toolkit = if stdenv.isDarwin then "cairo-cocoa"
+                    else "cairo-gtk${if gtk3Support then "3${lib.optionalString waylandSupport "-wayland"}" else "2"}";
+
+  binaryName = "firefox";
+  binaryNameCapitalized = lib.toUpper (lib.substring 0 1 binaryName) + lib.substring 1 (-1) binaryName;
+
+  browserName = if stdenv.isDarwin then binaryNameCapitalized else binaryName;
+
+  execdir = if stdenv.isDarwin
+            then "/Applications/${binaryNameCapitalized}.app/Contents/MacOS"
+            else "/bin";
+in
+
+stdenv.mkDerivation ({
+  name = "${pname}-unwrapped-${ffversion}";
+  version = ffversion;
+
+  inherit src unpackPhase meta;
+
+  patches = [
+    ./env_var_for_system_dir.patch
+  ]
+  ++ patches;
+
+
+  # Ignore trivial whitespace changes in patches, this fixes compatibility of
+  # ./env_var_for_system_dir.patch with Firefox >=65 without having to track
+  # two patches.
+  patchFlags = [ "-p1" "-l" ];
+
+  buildInputs = [
+    gtk2 perl zip libIDL libjpeg zlib bzip2
+    dbus dbus-glib pango freetype fontconfig xorg.libXi xorg.libXcursor
+    xorg.libX11 xorg.libXrender xorg.libXft xorg.libXt file
+    libnotify xorg.pixman yasm libGLU libGL
+    xorg.libXScrnSaver xorg.xorgproto
+    xorg.libXext unzip makeWrapper
+    libevent libstartup_notification /* cairo */
+    icu libpng jemalloc glib
+    nasm
+    # >= 66 requires nasm for the AV1 lib dav1d
+    # yasm can potentially be removed in future versions
+    # https://bugzilla.mozilla.org/show_bug.cgi?id=1501796
+    # https://groups.google.com/forum/#!msg/mozilla.dev.platform/o-8levmLU80/SM_zQvfzCQAJ
+    nspr nss
+  ]
+  ++ lib.optionals  (lib.versionOlder ffversion "75") [ libvpx sqlite ]
+  ++ lib.optional  (lib.versionAtLeast ffversion "75.0") libvpx_1_8
+  ++ lib.optional  alsaSupport alsaLib
+  ++ lib.optional  pulseaudioSupport libpulseaudio # only headers are needed
+  ++ lib.optional  gtk3Support gtk3
+  ++ lib.optional  waylandSupport libxkbcommon
+  ++ lib.optional  gssSupport kerberos
+  ++ lib.optional  waylandSupport libxkbcommon
+  ++ lib.optionals stdenv.isDarwin [ CoreMedia ExceptionHandling Kerberos
+                                     AVFoundation MediaToolbox CoreLocation
+                                     Foundation libobjc AddressBook cups ];
+
+  NIX_CFLAGS_COMPILE = toString ([
+    "-I${glib.dev}/include/gio-unix-2.0"
+    "-I${nss.dev}/include/nss"
+  ]
+  ++ lib.optional (pname == "firefox-esr" && lib.versionOlder ffversion "69")
+    "-Wno-error=format-security");
+
+  postPatch = ''
+    rm -rf obj-x86_64-pc-linux-gnu
+  '';
+
+  nativeBuildInputs =
+    [
+      autoconf213
+      cargo
+      gnused
+      llvmPackages.llvm # llvm-objdump
+      nodejs
+      perl
+      pkgconfig
+      python2
+      python3
+      rust-cbindgen
+      rustc
+      which
+    ]
+    ++ lib.optional gtk3Support wrapGAppsHook
+    ++ lib.optionals stdenv.isDarwin [ xcbuild rsync ]
+    ++ extraNativeBuildInputs;
+
+  preConfigure = ''
+    # remove distributed configuration files
+    rm -f configure
+    rm -f js/src/configure
+    rm -f .mozconfig*
+    # this will run autoconf213
+    configureScript="$(realpath ./mach) configure"
+    export MOZCONFIG=$(pwd)/mozconfig
+
+    # Set C flags for Rust's bindgen program. Unlike ordinary C
+    # compilation, bindgen does not invoke $CC directly. Instead it
+    # uses LLVM's libclang. To make sure all necessary flags are
+    # included we need to look in a few places.
+    # TODO: generalize this process for other use-cases.
+
+    BINDGEN_CFLAGS="$(< ${stdenv.cc}/nix-support/libc-cflags) \
+      $(< ${stdenv.cc}/nix-support/cc-cflags) \
+      ${stdenv.cc.default_cxx_stdlib_compile} \
+      ${lib.optionalString stdenv.cc.isClang "-idirafter ${stdenv.cc.cc}/lib/clang/${lib.getVersion stdenv.cc.cc}/include"} \
+      ${lib.optionalString stdenv.cc.isGNU "-isystem ${stdenv.cc.cc}/include/c++/${lib.getVersion stdenv.cc.cc} -isystem ${stdenv.cc.cc}/include/c++/${lib.getVersion stdenv.cc.cc}/${stdenv.hostPlatform.config}"} \
+      $NIX_CFLAGS_COMPILE"
+
+    echo "ac_add_options BINDGEN_CFLAGS='$BINDGEN_CFLAGS'" >> $MOZCONFIG
+  '' + (lib.optionalString googleAPISupport ''
+    # Google API key used by Chromium and Firefox.
+    # Note: These are for NixOS/nixpkgs use ONLY. For your own distribution,
+    # please get your own set of keys.
+    echo "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI" > $TMPDIR/ga
+    # 60.5+ & 66+ did split the google API key arguments: https://bugzilla.mozilla.org/show_bug.cgi?id=1531176
+    configureFlagsArray+=("--with-google-location-service-api-keyfile=$TMPDIR/ga")
+    configureFlagsArray+=("--with-google-safebrowsing-api-keyfile=$TMPDIR/ga")
+  '') + ''
+    # AS=as in the environment causes build failure https://bugzilla.mozilla.org/show_bug.cgi?id=1497286
+    unset AS
+  '';
+
+  configureFlags = [
+    "--enable-application=browser"
+    "--with-system-jpeg"
+    "--with-system-zlib"
+    "--with-system-bz2"
+    "--with-system-libevent"
+    "--with-system-libvpx"
+    "--with-system-png" # needs APNG support
+    "--with-system-icu"
+    "--enable-system-ffi"
+    "--enable-system-pixman"
+    #"--enable-system-cairo"
+    "--enable-startup-notification"
+    #"--enable-content-sandbox" # TODO: probably enable after 54
+    "--disable-tests"
+    "--disable-necko-wifi" # maybe we want to enable this at some point
+    "--disable-updater"
+    "--enable-jemalloc"
+    "--disable-gconf"
+    "--enable-default-toolkit=${default-toolkit}"
+    "--with-libclang-path=${llvmPackages.libclang}/lib"
+    "--with-clang-path=${llvmPackages.clang}/bin/clang"
+    "--with-system-nspr"
+    "--with-system-nss"
+  ]
+  ++ lib.optional (lib.versionOlder ffversion "75") "--enable-system-sqlite"
+  ++ lib.optional (stdenv.isDarwin) "--disable-xcode-checks"
+  ++ lib.optionals (lib.versionOlder ffversion "69") [
+    "--enable-webrender=build"
+  ]
+
+  ++ flag alsaSupport "alsa"
+  ++ flag pulseaudioSupport "pulseaudio"
+  ++ flag ffmpegSupport "ffmpeg"
+  ++ flag gssSupport "negotiateauth"
+  ++ flag webrtcSupport "webrtc"
+  ++ flag crashreporterSupport "crashreporter"
+  ++ lib.optional (!drmSupport) "--disable-eme"
+
+  ++ (if debugBuild then [ "--enable-debug" "--enable-profiling" ]
+                    else [ "--disable-debug" "--enable-release"
+                           "--enable-optimize"
+                           "--enable-strip" ])
+  ++ lib.optional enableOfficialBranding "--enable-official-branding"
+  ++ extraConfigureFlags;
+
+  postConfigure = ''
+    cd obj-*
+  '';
+
+  makeFlags = lib.optionals enableOfficialBranding [
+    "MOZILLA_OFFICIAL=1"
+    "BUILD_OFFICIAL=1"
+  ]
+  ++ extraMakeFlags;
+
+  enableParallelBuilding = true;
+  doCheck = false; # "--disable-tests" above
+
+  installPhase = if stdenv.isDarwin then ''
+    mkdir -p $out/Applications
+    cp -LR dist/${binaryNameCapitalized}.app $out/Applications
+  '' else null;
+
+  postInstall = lib.optionalString stdenv.isLinux ''
+    # Remove SDK cruft. FIXME: move to a separate output?
+    rm -rf $out/share/idl $out/include $out/lib/${binaryName}-devel-*
+
+    # Needed to find Mozilla runtime
+    gappsWrapperArgs+=(--argv0 "$out/bin/.${binaryName}-wrapped")
+  '';
+
+  postFixup = lib.optionalString stdenv.isLinux ''
+    # Fix notifications. LibXUL uses dlopen for this, unfortunately; see #18712.
+    patchelf --set-rpath "${lib.getLib libnotify
+      }/lib:$(patchelf --print-rpath "$out"/lib/${binaryName}*/libxul.so)" \
+        "$out"/lib/${binaryName}*/libxul.so
+  '';
+
+  doInstallCheck = true;
+  installCheckPhase = ''
+    # Some basic testing
+    "$out${execdir}/${browserName}" --version
+  '';
+
+  passthru = {
+    inherit updateScript;
+    version = ffversion;
+    isFirefox3Like = true;
+    gtk = gtk2;
+    inherit nspr;
+    inherit ffmpegSupport;
+    inherit gssSupport;
+    inherit execdir;
+    inherit browserName;
+  } // lib.optionalAttrs gtk3Support { inherit gtk3; };
+} //
+lib.optionalAttrs (lib.versionAtLeast ffversion "74") {
+  hardeningDisable = [ "format" ]; # -Werror=format-security
+} //
+# the build system verifies checksums of the bundled rust sources
+# ./third_party/rust is be patched by our libtool fixup code in stdenv
+# unfortunately we can't just set this to `false` when we do not want it.
+# See https://github.com/NixOS/nixpkgs/issues/77289 for more details
+
+lib.optionalAttrs (lib.versionAtLeast ffversion "72") {
+  # Ideally we would figure out how to tell the build system to not
+  # care about changed hashes as we are already doing that when we
+  # fetch the sources. Any further modifications of the source tree
+  # is on purpose by some of our tool (or by accident and a bug?).
+  dontFixLibtool = true;
+
+  # on aarch64 this is also required
+  dontUpdateAutotoolsGnuConfigScripts = true;
+})
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/env_var_for_system_dir.patch b/nixpkgs/pkgs/applications/networking/browsers/firefox/env_var_for_system_dir.patch
new file mode 100644
index 000000000000..18d31356989a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/env_var_for_system_dir.patch
@@ -0,0 +1,6 @@
+--- a/toolkit/xre/nsXREDirProvider.cpp        2019-02-28 21:00:14.157543388 +0100
++++ b/toolkit/xre/nsXREDirProvider.cpp   2019-02-28 21:01:28.731128320 +0100
+@@ -302 +302,2 @@
+-  rv = NS_NewNativeLocalFile(dirname, false, getter_AddRefs(localDir));
++  const char* pathVar = PR_GetEnv("MOZ_SYSTEM_DIR");
++  rv = NS_NewNativeLocalFile((pathVar && *pathVar) ? nsDependentCString(pathVar) : reinterpret_cast<const nsCString&>(dirname), false, getter_AddRefs(localDir));
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-ffx65.patch b/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-ffx65.patch
new file mode 100644
index 000000000000..7d129dc78f98
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-ffx65.patch
@@ -0,0 +1,23 @@
+diff -ur firefox-65.0-orig/docshell/base/nsAboutRedirector.cpp firefox-65.0/docshell/base/nsAboutRedirector.cpp
+--- firefox-65.0-orig/docshell/base/nsAboutRedirector.cpp       2019-01-23 00:48:28.988747428 +0100
++++ firefox-65.0/docshell/base/nsAboutRedirector.cpp    2019-01-23 00:51:13.378188397 +0100
+@@ -67,8 +67,6 @@
+     {"about", "chrome://global/content/aboutAbout.xhtml", 0},
+     {"addons", "chrome://mozapps/content/extensions/extensions.xul",
+      nsIAboutModule::ALLOW_SCRIPT},
+-    {"buildconfig", "chrome://global/content/buildconfig.html",
+-     nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT},
+     {"checkerboard", "chrome://global/content/aboutCheckerboard.xhtml",
+      nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
+          nsIAboutModule::ALLOW_SCRIPT},
+diff -ur firefox-65.0-orig/toolkit/content/jar.mn firefox-65.0/toolkit/content/jar.mn
+--- firefox-65.0-orig/toolkit/content/jar.mn    2019-01-23 00:48:35.033372506 +0100
++++ firefox-65.0/toolkit/content/jar.mn 2019-01-23 00:50:45.126565924 +0100
+@@ -36,7 +36,6 @@
+    content/global/plugins.css
+    content/global/browser-child.js
+    content/global/browser-content.js
+-*   content/global/buildconfig.html
+    content/global/buildconfig.css
+    content/global/contentAreaUtils.js
+    content/global/datepicker.xhtml
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-ffx76.patch b/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-ffx76.patch
new file mode 100644
index 000000000000..2fe30980a35c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-ffx76.patch
@@ -0,0 +1,23 @@
+diff -ur firefox-65.0-orig/docshell/base/nsAboutRedirector.cpp firefox-65.0/docshell/base/nsAboutRedirector.cpp
+--- firefox-76.0.orig/docshell/base/nsAboutRedirector.cpp       2020-05-03 19:01:29.926544735 +0200
++++ firefox-76.0/docshell/base/nsAboutRedirector.cpp    2020-05-03 19:12:00.845035570 +0200
+@@ -62,8 +62,6 @@
+     {"about", "chrome://global/content/aboutAbout.html", 0},
+     {"addons", "chrome://mozapps/content/extensions/extensions.xhtml",
+      nsIAboutModule::ALLOW_SCRIPT},
+-    {"buildconfig", "chrome://global/content/buildconfig.html",
+-     nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT},
+     {"checkerboard", "chrome://global/content/aboutCheckerboard.html",
+      nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
+          nsIAboutModule::ALLOW_SCRIPT},
+diff -ur firefox-65.0-orig/toolkit/content/jar.mn firefox-65.0/toolkit/content/jar.mn
+--- firefox-65.0-orig/toolkit/content/jar.mn    2019-01-23 00:48:35.033372506 +0100
++++ firefox-65.0/toolkit/content/jar.mn 2019-01-23 00:50:45.126565924 +0100
+@@ -36,7 +36,6 @@
+    content/global/plugins.css
+    content/global/browser-child.js
+    content/global/browser-content.js
+-*   content/global/buildconfig.html
+    content/global/buildconfig.css
+    content/global/contentAreaUtils.js
+    content/global/datepicker.xhtml
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-min-65.patch b/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-min-65.patch
new file mode 100644
index 000000000000..708004781efc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-min-65.patch
@@ -0,0 +1,25 @@
+diff --git a/docshell/base/nsAboutRedirector.cpp b/docshell/base/nsAboutRedirector.cpp
+index fe0a5af..3df1e0e 100644
+--- a/docshell/base/nsAboutRedirector.cpp
++++ b/docshell/base/nsAboutRedirector.cpp
+@@ -67,8 +67,6 @@ static const RedirEntry kRedirMap[] = {
+     {"about", "chrome://global/content/aboutAbout.xhtml", 0},
+     {"addons", "chrome://mozapps/content/extensions/extensions.xul",
+      nsIAboutModule::ALLOW_SCRIPT},
+-    {"buildconfig", "chrome://global/content/buildconfig.html",
+-     nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT},
+     {"checkerboard", "chrome://global/content/aboutCheckerboard.xhtml",
+      nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
+          nsIAboutModule::ALLOW_SCRIPT},
+diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
+index 2ec137d..579ef4d 100644
+--- a/toolkit/content/jar.mn
++++ b/toolkit/content/jar.mn
+@@ -36,7 +36,6 @@ toolkit.jar:
+    content/global/plugins.css
+    content/global/browser-child.js
+    content/global/browser-content.js
+-*   content/global/buildconfig.html
+    content/global/buildconfig.css
+    content/global/contentAreaUtils.js
+    content/global/datepicker.xhtml
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/packages.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox/packages.nix
new file mode 100644
index 000000000000..da25f00b868a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/packages.nix
@@ -0,0 +1,94 @@
+{ config, stdenv, lib, callPackage, fetchurl, firefoxCommon }:
+
+rec {
+  firefox = firefoxCommon rec {
+    pname = "firefox";
+    ffversion = "77.0.1";
+    src = fetchurl {
+      url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz";
+      sha512 = "ngLihC0YuclLJEV3iPEX+tRzDKIdBe+CCOuFxvWNo7DnX8royOvTj2m4YyWyZoTQ5UCbPTQYmP4otgfovZSe8g==";
+    };
+
+    patches = [
+      ./no-buildconfig-ffx76.patch
+    ];
+
+    meta = {
+      description = "A web browser built from Firefox source tree";
+      homepage = "http://www.mozilla.com/en-US/firefox/";
+      maintainers = with lib.maintainers; [ eelco andir ];
+      platforms = lib.platforms.unix;
+      badPlatforms = lib.platforms.darwin;
+      broken = stdenv.buildPlatform.is32bit; # since Firefox 60, build on 32-bit platforms fails with "out of memory".
+                                             # not in `badPlatforms` because cross-compilation on 64-bit machine might work.
+      license = lib.licenses.mpl20;
+    };
+    updateScript = callPackage ./update.nix {
+      attrPath = "firefox-unwrapped";
+      versionKey = "ffversion";
+    };
+  };
+
+  firefox-esr-68 = firefoxCommon rec {
+    pname = "firefox-esr";
+    ffversion = "68.9.0esr";
+    src = fetchurl {
+      url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz";
+      sha512 = "mEMYANgPfGgK757t4p34IXgQkSoxmn9/jC5jfEPs1PTikiOkF6+ypjFegl+XlFP/bmtaV1ZJq6XMY85ZVjdbuA==";
+    };
+
+    patches = [
+      ./no-buildconfig-ffx65.patch
+    ];
+
+    meta = firefox.meta // {
+      description = "A web browser built from Firefox Extended Support Release source tree";
+    };
+    updateScript = callPackage ./update.nix {
+      attrPath = "firefox-esr-68-unwrapped";
+      versionSuffix = "esr";
+      versionKey = "ffversion";
+    };
+  };
+
+  firefox-beta = firefoxCommon rec {
+    pname = "firefox";
+    ffversion = "66.0b5";
+    src = fetchurl {
+      url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz";
+      sha512 = "2cnv8pnl220dxqfpcdnwibwidc8b9zg3bj9wkzc83r4cdsfcjy3hqyw01gpc30a4qwbbabsgask3hl3dg7d3d8qqw4c588b00z67mvs";
+    };
+
+    patches = [
+      ./no-buildconfig-ffx65.patch
+    ];
+
+    meta = firefox.meta // {
+      description = "A web browser built from Firefox Beta source tree";
+    };
+    updateScript = callPackage ./update.nix {
+      attrPath = "firefox-beta";
+      versionKey = "ffversion";
+    };
+  };
+
+} // lib.optionalAttrs (config.allowAliases or true) {
+  #### ALIASES
+  #### remove after 20.03 branchoff
+
+  firefox-esr-52 = throw ''
+    firefoxPackages.firefox-esr-52 was removed as it's an unsupported ESR with
+    open security issues. If you need it because you need to run some plugins
+    not having been ported to WebExtensions API, import it from an older
+    nixpkgs checkout still containing it.
+  '';
+  firefox-esr-60 = throw "firefoxPackages.firefox-esr-60 was removed as it's an unsupported ESR with open security issues.";
+
+  icecat = throw "firefoxPackages.icecat was removed as even its latest upstream version is based on an unsupported ESR release with open security issues.";
+  icecat-52 = throw "firefoxPackages.icecat was removed as even its latest upstream version is based on an unsupported ESR release with open security issues.";
+
+  tor-browser-7-5 = throw "firefoxPackages.tor-browser-7-5 was removed because it was out of date and inadequately maintained. Please use tor-browser-bundle-bin instead. See #77452.";
+  tor-browser-8-5 = throw "firefoxPackages.tor-browser-8-5 was removed because it was out of date and inadequately maintained. Please use tor-browser-bundle-bin instead. See #77452.";
+  tor-browser = throw "firefoxPackages.tor-browser was removed because it was out of date and inadequately maintained. Please use tor-browser-bundle-bin instead. See #77452.";
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/update.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox/update.nix
new file mode 100644
index 000000000000..e12b552535d2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/update.nix
@@ -0,0 +1,35 @@
+{ writeScript
+, lib
+, xidel
+, common-updater-scripts
+, coreutils
+, gnused
+, gnugrep
+, curl
+, attrPath
+, runtimeShell
+, baseUrl ? "http://archive.mozilla.org/pub/firefox/releases/"
+, versionSuffix ? ""
+, versionKey ? "version"
+}:
+
+writeScript "update-${attrPath}" ''
+  #!${runtimeShell}
+  PATH=${lib.makeBinPath [ common-updater-scripts coreutils curl gnugrep gnused xidel ]}
+
+  url=${baseUrl}
+
+  # retriving latest released version
+  #  - extracts all links from the $url
+  #  - extracts lines only with number and dots followed by a slash
+  #  - removes trailing slash
+  #  - sorts everything with semver in mind
+  #  - picks up latest release
+  version=`xidel -s $url --extract "//a" | \
+           grep "^[0-9.]*${versionSuffix}/$" | \
+           sed s/[/]$// | \
+           sort --version-sort | \
+           tail -n 1`
+
+  update-source-version ${attrPath} "$version" "" "" --version-key=${versionKey}
+''
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/wrapper.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox/wrapper.nix
new file mode 100644
index 000000000000..7505e7e21967
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/wrapper.nix
@@ -0,0 +1,183 @@
+{ stdenv, lib, makeDesktopItem, makeWrapper, lndir, config
+
+## various stuff that can be plugged in
+, flashplayer, hal-flash
+, ffmpeg, xorg, libpulseaudio, libcanberra-gtk2, libglvnd
+, gnome3/*.gnome-shell*/
+, browserpass, chrome-gnome-shell, uget-integrator, plasma-browser-integration, bukubrow
+, tridactyl-native
+, fx_cast_bridge
+, udev
+, kerberos
+, libva
+}:
+
+## configurability of the wrapper itself
+
+browser:
+
+let
+  wrapper =
+    { browserName ? browser.browserName or (lib.getName browser)
+    , pname ? browserName
+    , version ? lib.getVersion browser
+    , desktopName ? # browserName with first letter capitalized
+      (lib.toUpper (lib.substring 0 1 browserName) + lib.substring 1 (-1) browserName)
+    , nameSuffix ? ""
+    , icon ? browserName
+    , extraNativeMessagingHosts ? []
+    , gdkWayland ? false
+    , cfg ? config.${browserName} or {}
+    }:
+
+    assert gdkWayland -> (browser ? gtk3); # Can only use the wayland backend if gtk3 is being used
+
+    let
+      enableAdobeFlash = cfg.enableAdobeFlash or false;
+      ffmpegSupport = browser.ffmpegSupport or false;
+      gssSupport = browser.gssSupport or false;
+
+      plugins =
+        let
+          removed = lib.filter (a: builtins.hasAttr a cfg) [
+            "enableVLC"
+            "enableDjvu"
+            "enableMPlayer"
+            "jre"
+            "icedtea"
+            "enableGoogleTalkPlugin"
+            "enableFriBIDPlugin"
+            "enableBluejeans"
+            "enableAdobeReader"
+          ];
+        in if removed != []
+           then throw "Your configuration mentions ${lib.concatMapStringsSep ", " (p: browserName + "." + p) removed}. All plugin related options, except for the adobe flash player, have been removed, since Firefox from version 52 onwards no longer supports npapi plugins (see https://support.mozilla.org/en-US/kb/npapi-plugins)."
+           else lib.optional enableAdobeFlash flashplayer;
+
+      nativeMessagingHosts =
+        ([ ]
+          ++ lib.optional (cfg.enableBrowserpass or false) (lib.getBin browserpass)
+          ++ lib.optional (cfg.enableBukubrow or false) bukubrow
+          ++ lib.optional (cfg.enableTridactylNative or false) tridactyl-native
+          ++ lib.optional (cfg.enableGnomeExtensions or false) chrome-gnome-shell
+          ++ lib.optional (cfg.enableUgetIntegrator or false) uget-integrator
+          ++ lib.optional (cfg.enablePlasmaBrowserIntegration or false) plasma-browser-integration
+          ++ lib.optional (cfg.enableFXCastBridge or false) fx_cast_bridge
+          ++ extraNativeMessagingHosts
+        );
+      libs =   lib.optionals stdenv.isLinux [ udev libva ]
+            ++ lib.optional ffmpegSupport ffmpeg
+            ++ lib.optional gssSupport kerberos
+            ++ lib.optional gdkWayland libglvnd
+            ++ lib.optionals (cfg.enableQuakeLive or false)
+            (with xorg; [ stdenv.cc libX11 libXxf86dga libXxf86vm libXext libXt alsaLib zlib ])
+            ++ lib.optional (enableAdobeFlash && (cfg.enableAdobeFlashDRM or false)) hal-flash
+            ++ lib.optional (config.pulseaudio or true) libpulseaudio;
+      gtk_modules = [ libcanberra-gtk2 ];
+
+    in stdenv.mkDerivation {
+      inherit pname version;
+
+      desktopItem = makeDesktopItem {
+        name = browserName;
+        exec = "${browserName}${nameSuffix} %U";
+        inherit icon;
+        comment = "";
+        desktopName = "${desktopName}${nameSuffix}${lib.optionalString gdkWayland " (Wayland)"}";
+        genericName = "Web Browser";
+        categories = "Application;Network;WebBrowser;";
+        mimeType = stdenv.lib.concatStringsSep ";" [
+          "text/html"
+          "text/xml"
+          "application/xhtml+xml"
+          "application/vnd.mozilla.xul+xml"
+          "x-scheme-handler/http"
+          "x-scheme-handler/https"
+          "x-scheme-handler/ftp"
+        ];
+      };
+
+      nativeBuildInputs = [ makeWrapper lndir ];
+      buildInputs = lib.optional (browser ? gtk3) browser.gtk3;
+
+      buildCommand = lib.optionalString stdenv.isDarwin ''
+        mkdir -p $out/Applications
+        cp -R --no-preserve=mode,ownership ${browser}/Applications/${browserName}.app $out/Applications
+        rm -f $out${browser.execdir or "/bin"}/${browserName}
+      '' + ''
+        if [ ! -x "${browser}${browser.execdir or "/bin"}/${browserName}" ]
+        then
+            echo "cannot find executable file \`${browser}${browser.execdir or "/bin"}/${browserName}'"
+            exit 1
+        fi
+
+        makeWrapper "$(readlink -v --canonicalize-existing "${browser}${browser.execdir or "/bin"}/${browserName}")" \
+          "$out${browser.execdir or "/bin"}/${browserName}${nameSuffix}" \
+            --suffix-each MOZ_PLUGIN_PATH ':' "$plugins" \
+            --suffix LD_LIBRARY_PATH ':' "$libs" \
+            --suffix-each GTK_PATH ':' "$gtk_modules" \
+            --suffix-each LD_PRELOAD ':' "$(cat $(filterExisting $(addSuffix /extra-ld-preload $plugins)))" \
+            --prefix-contents PATH ':' "$(filterExisting $(addSuffix /extra-bin-path $plugins))" \
+            --suffix PATH ':' "$out${browser.execdir or "/bin"}" \
+            --set MOZ_APP_LAUNCHER "${browserName}${nameSuffix}" \
+            --set MOZ_SYSTEM_DIR "$out/lib/mozilla" \
+            --set SNAP_NAME "firefox" \
+            --set MOZ_LEGACY_PROFILES 1 \
+            --set MOZ_ALLOW_DOWNGRADE 1 \
+            ${lib.optionalString gdkWayland ''
+              --set GDK_BACKEND "wayland" \
+            ''}${lib.optionalString (browser ? gtk3)
+                ''--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \
+                  --suffix XDG_DATA_DIRS : '${gnome3.adwaita-icon-theme}/share'
+                ''
+            }
+
+        if [ -e "${browser}/share/icons" ]; then
+            mkdir -p "$out/share"
+            ln -s "${browser}/share/icons" "$out/share/icons"
+        else
+            for res in 16 32 48 64 128; do
+            mkdir -p "$out/share/icons/hicolor/''${res}x''${res}/apps"
+            icon=( "${browser}/lib/"*"/browser/chrome/icons/default/default''${res}.png" )
+              if [ -e "$icon" ]; then ln -s "$icon" \
+                "$out/share/icons/hicolor/''${res}x''${res}/apps/${browserName}.png"
+              fi
+            done
+        fi
+
+        install -D -t $out/share/applications $desktopItem/share/applications/*
+
+        mkdir -p $out/lib/mozilla/native-messaging-hosts
+        for ext in ${toString nativeMessagingHosts}; do
+            ln -sLt $out/lib/mozilla/native-messaging-hosts $ext/lib/mozilla/native-messaging-hosts/*
+        done
+
+        # For manpages, in case the program supplies them
+        mkdir -p $out/nix-support
+        echo ${browser} > $out/nix-support/propagated-user-env-packages
+      '';
+
+      preferLocalBuild = true;
+
+      # Let each plugin tell us (through its `mozillaPlugin') attribute
+      # where to find the plugin in its tree.
+      plugins = map (x: x + x.mozillaPlugin) plugins;
+      libs = lib.makeLibraryPath libs + ":" + lib.makeSearchPathOutput "lib" "lib64" libs;
+      gtk_modules = map (x: x + x.gtkModule) gtk_modules;
+
+      passthru = { unwrapped = browser; };
+
+      disallowedRequisites = [ stdenv.cc ];
+
+      meta = browser.meta // {
+        description =
+          browser.meta.description
+          + " (with plugins: "
+          + lib.concatStrings (lib.intersperse ", " (map (x: x.name) plugins))
+          + ")";
+        hydraPlatforms = [];
+        priority = (browser.meta.priority or 0) - 1; # prefer wrapper over the package
+      };
+    };
+in
+  lib.makeOverridable wrapper
diff --git a/nixpkgs/pkgs/applications/networking/browsers/google-chrome/default.nix b/nixpkgs/pkgs/applications/networking/browsers/google-chrome/default.nix
new file mode 100644
index 000000000000..fb30bbfd2b6c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/google-chrome/default.nix
@@ -0,0 +1,144 @@
+{ stdenv, patchelf, makeWrapper
+
+# Linked dynamic libraries.
+, glib, fontconfig, freetype, pango, cairo, libX11, libXi, atk, gconf, nss, nspr
+, libXcursor, libXext, libXfixes, libXrender, libXScrnSaver, libXcomposite, libxcb
+, alsaLib, libXdamage, libXtst, libXrandr, expat, cups
+, dbus, gtk2, gtk3, gdk-pixbuf, gcc-unwrapped, at-spi2-atk, at-spi2-core
+, kerberos, libdrm, mesa
+
+# Command line programs
+, coreutils
+
+# command line arguments which are always set e.g "--disable-gpu"
+, commandLineArgs ? ""
+
+# Will crash without.
+, systemd
+
+# Loaded at runtime.
+, libexif
+
+# Additional dependencies according to other distros.
+## Ubuntu
+, liberation_ttf, curl, utillinux, xdg_utils, wget
+## Arch Linux.
+, flac, harfbuzz, icu, libpng, libopus, snappy, speechd
+## Gentoo
+, bzip2, libcap
+
+# Which distribution channel to use.
+, channel ? "stable"
+
+# Necessary for USB audio devices.
+, pulseSupport ? true, libpulseaudio ? null
+
+# Only needed for getting information about upstream binaries
+, chromium
+
+, gsettings-desktop-schemas
+, gnome2, gnome3
+}:
+
+with stdenv.lib;
+
+let
+  opusWithCustomModes = libopus.override {
+    withCustomModes = true;
+  };
+
+  version = chromium.upstream-info.version;
+  gtk = if (versionAtLeast version "59.0.0.0") then gtk3 else gtk2;
+  gnome = if (versionAtLeast version "59.0.0.0") then gnome3 else gnome2;
+
+  deps = [
+    glib fontconfig freetype pango cairo libX11 libXi atk gconf nss nspr
+    libXcursor libXext libXfixes libXrender libXScrnSaver libXcomposite libxcb
+    alsaLib libXdamage libXtst libXrandr expat cups
+    dbus gdk-pixbuf gcc-unwrapped.lib
+    systemd
+    libexif
+    liberation_ttf curl utillinux xdg_utils wget
+    flac harfbuzz icu libpng opusWithCustomModes snappy speechd
+    bzip2 libcap at-spi2-atk at-spi2-core
+    kerberos libdrm mesa coreutils
+  ] ++ optional pulseSupport libpulseaudio
+    ++ [ gtk ];
+
+  suffix = if channel != "stable" then "-" + channel else "";
+
+in stdenv.mkDerivation {
+  inherit version;
+
+  name = "google-chrome${suffix}-${version}";
+
+  src = chromium.upstream-info.binary;
+
+  nativeBuildInputs = [ patchelf makeWrapper ];
+  buildInputs = [
+    # needed for GSETTINGS_SCHEMAS_PATH
+    gsettings-desktop-schemas glib gtk
+
+    # needed for XDG_ICON_DIRS
+    gnome.adwaita-icon-theme
+  ];
+
+  unpackPhase = ''
+    ar x $src
+    tar xf data.tar.xz
+  '';
+
+  rpath = makeLibraryPath deps + ":" + makeSearchPathOutput "lib" "lib64" deps;
+  binpath = makeBinPath deps;
+
+  installPhase = ''
+    case ${channel} in
+      beta) appname=chrome-beta      dist=beta     ;;
+      dev)  appname=chrome-unstable  dist=unstable ;;
+      *)    appname=chrome           dist=stable   ;;
+    esac
+
+    exe=$out/bin/google-chrome-$dist
+
+    mkdir -p $out/bin $out/share
+
+    cp -a opt/* $out/share
+    cp -a usr/share/* $out/share
+
+    substituteInPlace $out/share/applications/google-$appname.desktop \
+      --replace /usr/bin/google-chrome-$dist $exe
+    substituteInPlace $out/share/gnome-control-center/default-apps/google-$appname.xml \
+      --replace /opt/google/$appname/google-$appname $exe
+    substituteInPlace $out/share/menu/google-$appname.menu \
+      --replace /opt $out/share \
+      --replace $out/share/google/$appname/google-$appname $exe
+
+    for icon_file in $out/share/google/chrome*/product_logo_*[0-9].png; do
+      num_and_suffix="''${icon_file##*logo_}"
+      icon_size="''${num_and_suffix%.*}"
+      logo_output_prefix="$out/share/icons/hicolor"
+      logo_output_path="$logo_output_prefix/''${icon_size}x''${icon_size}/apps"
+      mkdir -p "$logo_output_path"
+      mv "$icon_file" "$logo_output_path/google-$appname.png"
+    done
+
+    makeWrapper "$out/share/google/$appname/google-$appname" "$exe" \
+      --prefix LD_LIBRARY_PATH : "$rpath" \
+      --prefix PATH            : "$binpath" \
+      --prefix XDG_DATA_DIRS   : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \
+      --add-flags ${escapeShellArg commandLineArgs}
+
+    for elf in $out/share/google/$appname/{chrome,chrome-sandbox,nacl_helper}; do
+      patchelf --set-rpath $rpath $elf
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $elf
+    done
+  '';
+
+  meta = {
+    description = "A freeware web browser developed by Google";
+    homepage = "https://www.google.com/chrome/browser/";
+    license = licenses.unfree;
+    maintainers = [ maintainers.msteen ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/kristall/default.nix b/nixpkgs/pkgs/applications/networking/browsers/kristall/default.nix
new file mode 100644
index 000000000000..34f23f452388
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/kristall/default.nix
@@ -0,0 +1,30 @@
+{ lib, mkDerivation, fetchFromGitHub, qtbase, qtmultimedia }:
+
+mkDerivation rec {
+  pname = "kristall";
+  version = "0.2";
+  src = fetchFromGitHub {
+    owner = "MasterQ32";
+    repo = "kristall";
+    rev = "V" + version;
+    sha256 = "08k3rg0sa91ra0nzla5rw806nnncnyvq1s7k09k5i74fvcsnpqyp";
+  };
+
+  buildInputs = [ qtbase qtmultimedia ];
+
+  qmakeFlags = [ "src/kristall.pro" ];
+
+  installPhase = ''
+    install -Dt $out/bin kristall
+    install -D Kristall.desktop $out/share/applications/net.random-projects.kristall.desktop
+  '';
+
+  meta = with lib;
+    src.meta // {
+      description =
+        "Graphical small-internet client, supports gemini, http, https, gopher, finger";
+      homepage = "https://random-projects.net/projects/kristall.gemini";
+      maintainers = with maintainers; [ ehmry ];
+      inherit (qtmultimedia.meta) platforms;
+    };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/links2/default.nix b/nixpkgs/pkgs/applications/networking/browsers/links2/default.nix
new file mode 100644
index 000000000000..d58fc8fd19bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/links2/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl
+, gpm, openssl, pkgconfig, libev # Misc.
+, libpng, libjpeg, libtiff, librsvg # graphic formats
+, bzip2, zlib, xz # Transfer encodings
+, enableFB ? true
+, enableDirectFB ? false, directfb
+, enableX11 ? true, libX11, libXt, libXau # GUI support
+}:
+
+stdenv.mkDerivation rec {
+  version = "2.20.2";
+  pname = "links2";
+
+  src = fetchurl {
+    url = "${meta.homepage}/download/links-${version}.tar.bz2";
+    sha256 = "097ll98ympzfx7qfdyhc52yzvsp167x5nnjs6v8ih496wv80fksb";
+  };
+
+  buildInputs = with stdenv.lib;
+    [ libev librsvg libpng libjpeg libtiff openssl xz bzip2 zlib ]
+    ++ optionals stdenv.isLinux [ gpm ]
+    ++ optionals enableX11 [ libX11 libXau libXt ]
+    ++ optional enableDirectFB [ directfb ];
+
+  nativeBuildInputs = [ pkgconfig bzip2 ];
+
+  configureFlags = [ "--with-ssl" ]
+    ++ stdenv.lib.optional (enableX11 || enableFB || enableDirectFB) "--enable-graphics"
+    ++ stdenv.lib.optional enableX11 "--with-x"
+    ++ stdenv.lib.optional enableFB "--with-fb"
+    ++ stdenv.lib.optional enableDirectFB "--with-directfb";
+
+  meta = with stdenv.lib; {
+    homepage = "http://links.twibright.com/";
+    description = "A small browser with some graphics support";
+    maintainers = with maintainers; [ raskin ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/luakit/default.nix b/nixpkgs/pkgs/applications/networking/browsers/luakit/default.nix
new file mode 100644
index 000000000000..bf10043e942e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/luakit/default.nix
@@ -0,0 +1,62 @@
+{ stdenv, fetchFromGitHub, pkgconfig, wrapGAppsHook
+, help2man, luafilesystem, luajit, sqlite
+, webkitgtk, gtk3, gst_all_1, glib-networking
+}:
+
+stdenv.mkDerivation rec {
+  pname = "luakit";
+  version = "2.1";
+
+  src = fetchFromGitHub {
+    owner = "luakit";
+    repo = "luakit";
+    rev = version;
+    sha256 = "05mm76g72fs48410pbij4mw0s3nqji3r7f3mnr2fvhv02xqj05aa";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig help2man wrapGAppsHook
+  ];
+
+  buildInputs = [
+    webkitgtk luafilesystem luajit sqlite gtk3
+    gst_all_1.gstreamer gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad gst_all_1.gst-plugins-ugly
+    gst_all_1.gst-libav
+    glib-networking # TLS support
+  ];
+
+  preBuild = ''
+    # build-utils/docgen/gen.lua:2: module 'lib.lousy.util' not found
+    # TODO: why is not this the default? The test runner adds
+    # ';./lib/?.lua;./lib/?/init.lua' to package.path, but the build-utils
+    # scripts don't add an equivalent
+    export LUA_PATH="$LUA_PATH;./?.lua;./?/init.lua"
+  '';
+
+  makeFlags = [
+    "DEVELOPMENT_PATHS=0"
+    "USE_LUAJIT=1"
+    "INSTALLDIR=${placeholder "out"}"
+    "PREFIX=${placeholder "out"}"
+    "USE_GTK3=1"
+    "XDGPREFIX=${placeholder "out"}/etc/xdg"
+  ];
+
+  preFixup = let
+    luaKitPath = "$out/share/luakit/lib/?/init.lua;$out/share/luakit/lib/?.lua";
+  in ''
+    gappsWrapperArgs+=(
+      --prefix XDG_CONFIG_DIRS : "$out/etc/xdg"
+      --prefix LUA_PATH ';' "${luaKitPath};$LUA_PATH"
+      --prefix LUA_CPATH ';' "$LUA_CPATH"
+    )
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Fast, small, webkit based browser framework extensible in Lua";
+    homepage    = "https://luakit.github.io/";
+    license     = licenses.gpl3;
+    platforms   = platforms.linux; # Only tested linux
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/lynx/default.nix b/nixpkgs/pkgs/applications/networking/browsers/lynx/default.nix
new file mode 100644
index 000000000000..8aeee45b9e54
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/lynx/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, buildPackages
+, fetchurl, pkgconfig, ncurses, gzip
+, sslSupport ? true, openssl ? null
+, nukeReferences
+}:
+
+assert sslSupport -> openssl != null;
+
+stdenv.mkDerivation rec {
+  pname = "lynx";
+  version = "2.8.9rel.1";
+
+  src = fetchurl {
+    urls = [
+      "ftp://ftp.invisible-island.net/lynx/tarballs/lynx${version}.tar.bz2"
+      "https://invisible-mirror.net/archives/lynx/tarballs/lynx${version}.tar.bz2"
+    ];
+    sha256 = "15cmyyma2kz1hfaa6mwjgli8zwdzq3jv0q2cl6nwzycjfwyijzrq";
+  };
+
+  enableParallelBuilding = true;
+
+  hardeningEnable = [ "pie" ];
+
+  configureFlags = [
+    "--enable-default-colors"
+    "--enable-widec"
+    "--enable-ipv6"
+  ] ++ stdenv.lib.optional sslSupport "--with-ssl";
+
+  depsBuildBuild = [ buildPackages.stdenv.cc ];
+  nativeBuildInputs = [ nukeReferences ]
+    ++ stdenv.lib.optional sslSupport pkgconfig;
+
+  buildInputs = [ ncurses gzip ] ++ stdenv.lib.optional sslSupport openssl.dev;
+
+  # cfg_defs.h captures lots of references to build-only dependencies, derived
+  # from config.cache.
+  postConfigure = ''
+    make cfg_defs.h
+    nuke-refs cfg_defs.h
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A text-mode web browser";
+    homepage = "https://lynx.invisible-island.net/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/midori/default.nix b/nixpkgs/pkgs/applications/networking/browsers/midori/default.nix
new file mode 100644
index 000000000000..66f6384643ad
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/midori/default.nix
@@ -0,0 +1,59 @@
+{ stdenv
+, fetchurl
+, cmake
+, ninja
+, pkgconfig
+, intltool
+, vala
+, wrapGAppsHook
+, gcr
+, libpeas
+, gtk3
+, webkitgtk
+, sqlite
+, gsettings-desktop-schemas
+, libsoup
+, glib-networking
+, json-glib
+, libarchive
+}:
+
+stdenv.mkDerivation rec {
+  pname = "midori";
+  version = "9.0";
+
+  src = fetchurl {
+    url = "https://github.com/midori-browser/core/releases/download/v${version}/midori-v${version}.tar.gz";
+    sha256 = "05i04qa83dnarmgkx4xsk6fga5lw1lmslh4rb3vhyyy4ala562jy";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    intltool
+    ninja
+    pkgconfig
+    vala
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    (libsoup.override { gnomeSupport = true; })
+    gcr
+    glib-networking
+    gsettings-desktop-schemas
+    gtk3
+    libpeas
+    sqlite
+    webkitgtk
+    json-glib
+    libarchive
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Lightweight WebKitGTK web browser";
+    homepage = "https://www.midori-browser.org/";
+    license = with licenses; [ lgpl21Plus ];
+    platforms = with platforms; linux;
+    maintainers = with maintainers; [ raskin ramkromberg ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/default.nix b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/default.nix
new file mode 100644
index 000000000000..e967578a7cef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/default.nix
@@ -0,0 +1,147 @@
+{ stdenv
+, lib
+, fetchurl
+, alsaLib
+, atk
+, bzip2
+, cairo
+, curl
+, expat
+, fontconfig
+, freetype
+, gdk-pixbuf
+, glib
+, glibc
+, graphite2
+, gtk2
+, harfbuzz
+, libICE
+, libSM
+, libX11
+, libXau
+, libXcomposite
+, libXcursor
+, libXdamage
+, libXdmcp
+, libXext
+, libXfixes
+, libXi
+, libXinerama
+, libXrandr
+, libXrender
+, libXt
+, libXxf86vm
+, libdrm
+, libffi
+, libglvnd
+, libpng
+, libvdpau
+, libxcb
+, libxshmfence
+, nspr
+, nss
+, pango
+, pcre
+, pixman
+, zlib
+, unzip
+, debug ? false
+
+/* you have to add ~/mm.cfg :
+
+    TraceOutputFileEnable=1
+    ErrorReportingEnable=1
+    MaxWarnings=1
+
+  in order to read the flash trace at ~/.macromedia/Flash_Player/Logs/flashlog.txt
+  Then FlashBug (a FireFox plugin) shows the log as well
+*/
+
+}:
+
+let
+  arch =
+    if stdenv.hostPlatform.system == "x86_64-linux" then
+      "x86_64"
+    else if stdenv.hostPlatform.system == "i686-linux"   then
+      "i386"
+    else throw "Flash Player is not supported on this platform";
+  lib_suffix =
+      if stdenv.hostPlatform.system == "x86_64-linux" then
+      "64"
+    else
+      "";
+in
+stdenv.mkDerivation rec {
+  pname = "flashplayer";
+  version = "32.0.0.387";
+
+  src = fetchurl {
+    url =
+      if debug then
+        "https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_npapi_linux_debug.${arch}.tar.gz"
+      else
+        "https://fpdownload.adobe.com/get/flashplayer/pdc/${version}/flash_player_npapi_linux.${arch}.tar.gz";
+    sha256 =
+      if debug then
+        if arch == "x86_64" then
+          "1wmk60lnlrj9f8dvk4b6j7pqyl00w00qbzbdw4awzx91wmgfc4x0"
+        else
+          "1afjxhi5jzn8zbkva940i9fayzxj1r3n6rqsiny02fpnv0waypfy"
+      else
+        if arch == "x86_64" then
+          "0si8rx955kyfsprk5465hfzafxvrdm7g686q7p5xykmh88nck6k2"
+        else
+          "02pw2knvgdkahyp7lmy7fmynmplaz5wswdz48h3sdj6ibr066h97";
+  };
+
+  nativeBuildInputs = [ unzip ];
+
+  sourceRoot = ".";
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  preferLocalBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/lib/mozilla/plugins
+    cp -pv libflashplayer.so $out/lib/mozilla/plugins
+
+    mkdir -p $out/bin
+    cp -pv usr/bin/flash-player-properties $out/bin
+
+    mkdir -p $out/lib${lib_suffix}/kde4
+    cp -pv usr/lib${lib_suffix}/kde4/kcm_adobe_flash_player.so $out/lib${lib_suffix}/kde4
+
+    patchelf --set-rpath "$rpath" \
+      $out/lib/mozilla/plugins/libflashplayer.so \
+      $out/lib${lib_suffix}/kde4/kcm_adobe_flash_player.so
+
+    patchelf \
+      --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+      --set-rpath "$rpath" \
+      $out/bin/flash-player-properties
+  '';
+
+  passthru = {
+    mozillaPlugin = "/lib/mozilla/plugins";
+  };
+
+  rpath = lib.makeLibraryPath
+    [ stdenv.cc.cc
+      alsaLib atk bzip2 cairo curl expat fontconfig freetype gdk-pixbuf glib
+      glibc graphite2 gtk2 harfbuzz libICE libSM libX11 libXau libXcomposite
+      libXcursor libXdamage libXdmcp libXext libXfixes libXi libXinerama
+      libXrandr libXrender libXt libXxf86vm libdrm libffi libglvnd libpng
+      libvdpau libxcb libxshmfence nspr nss pango pcre pixman zlib
+    ];
+
+  meta = {
+    description = "Adobe Flash Player browser plugin";
+    homepage = "http://www.adobe.com/products/flashplayer/";
+    license = stdenv.lib.licenses.unfree;
+    maintainers = with stdenv.lib.maintainers; [ taku0 ];
+    platforms = [ "x86_64-linux" "i686-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/standalone.nix b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/standalone.nix
new file mode 100644
index 000000000000..9d7d6eeeee86
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/standalone.nix
@@ -0,0 +1,106 @@
+{ stdenv
+, lib
+, fetchurl
+, alsaLib
+, atk
+, bzip2
+, cairo
+, curl
+, expat
+, fontconfig
+, freetype
+, gdk-pixbuf
+, glib
+, glibc
+, graphite2
+, gtk2
+, harfbuzz
+, libICE
+, libSM
+, libX11
+, libXau
+, libXcomposite
+, libXcursor
+, libXdamage
+, libXdmcp
+, libXext
+, libXfixes
+, libXi
+, libXinerama
+, libXrandr
+, libXrender
+, libXt
+, libXxf86vm
+, libdrm
+, libffi
+, libglvnd
+, libpng
+, libvdpau
+, libxcb
+, libxshmfence
+, nspr
+, nss
+, pango
+, pcre
+, pixman
+, zlib
+, unzip
+, debug ? false
+}:
+
+stdenv.mkDerivation {
+  pname = "flashplayer-standalone";
+  version = "32.0.0.387";
+
+  src = fetchurl {
+    url =
+      if debug then
+        "https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_sa_linux_debug.x86_64.tar.gz"
+      else
+        "https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_sa_linux.x86_64.tar.gz";
+    sha256 =
+      if debug then
+        "1yxdwmm2gz162rmc9hwlccqgq613gnrihjicnzgan4vk7hjlga5y"
+      else
+        "0hm5is3giz45a4v9m77q0i1dgyhpqqkagpjndbnynsnl9a61r0ly";
+  };
+
+  nativeBuildInputs = [ unzip ];
+
+  sourceRoot = ".";
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  preferLocalBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -pv flashplayer${lib.optionalString debug "debugger"} $out/bin
+
+    patchelf \
+      --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+      --set-rpath "$rpath" \
+      $out/bin/flashplayer${lib.optionalString debug "debugger"}
+  '';
+
+  rpath = lib.makeLibraryPath
+    [ stdenv.cc.cc
+      alsaLib atk bzip2 cairo curl expat fontconfig freetype gdk-pixbuf glib
+      glibc graphite2 gtk2 harfbuzz libICE libSM libX11 libXau libXcomposite
+      libXcursor libXdamage libXdmcp libXext libXfixes libXi libXinerama
+      libXrandr libXrender libXt libXxf86vm libdrm libffi libglvnd libpng
+      libvdpau libxcb libxshmfence nspr nss pango pcre pixman zlib
+    ];
+
+  meta = {
+    description = "Adobe Flash Player standalone executable";
+    homepage = "https://www.adobe.com/support/flashplayer/debug_downloads.html";
+    license = stdenv.lib.licenses.unfree;
+    maintainers = with stdenv.lib.maintainers; [ taku0 ];
+    platforms = [ "x86_64-linux" ];
+    # Application crashed with an unhandled SIGSEGV
+    # Not on all systems, though. Video driver problem?
+    broken = false;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/next/default.nix b/nixpkgs/pkgs/applications/networking/browsers/next/default.nix
new file mode 100644
index 000000000000..e03f918a587c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/next/default.nix
@@ -0,0 +1,95 @@
+{ stdenv
+, fetchFromGitHub
+, lispPackages
+, sbcl
+, callPackage
+}:
+
+let
+
+  # This is the wrapped webkitgtk platform port that we hardcode into the Lisp Core.
+  # See https://github.com/atlas-engineer/next/tree/master/ports#next-platform-ports
+  next-gtk-webkit = callPackage ./next-gtk-webkit.nix {};
+
+in
+
+stdenv.mkDerivation rec {
+  pname = "next";
+  version = "1.5.0";
+
+  src = fetchFromGitHub {
+    owner = "atlas-engineer";
+    repo = "next";
+    rev = version;
+    sha256 = "1gqkp185wcwaxr8py90hqk44nqjblrrdwvig19gizrbzr2gx2zhy";
+  };
+
+  nativeBuildInputs = [
+    sbcl
+  ] ++ (with lispPackages; [
+    prove-asdf
+    trivial-features
+  ]);
+
+  buildInputs = with lispPackages; [
+    alexandria
+    bordeaux-threads
+    cl-annot
+    cl-ansi-text
+    cl-css
+    cl-json
+    cl-markup
+    cl-ppcre
+    cl-ppcre-unicode
+    cl-prevalence
+    closer-mop
+    dbus
+    dexador
+    ironclad
+    local-time
+    log4cl
+    lparallel
+    mk-string-metrics
+    parenscript
+    plump
+    quri
+    serapeum
+    sqlite
+    str
+    swank
+    trivia
+    trivial-clipboard
+    trivial-types
+    unix-opts
+  ];
+
+  # This reference is unfortunately not detected by Nix
+  propagatedBuildInputs = [ next-gtk-webkit ];
+
+  prePatch = ''
+    substituteInPlace source/ports/gtk-webkit.lisp \
+      --replace "next-gtk-webkit" "${next-gtk-webkit}/bin/next-gtk-webkit"
+  '';
+
+  buildPhase = ''
+    common-lisp.sh --eval "(require :asdf)" \
+                   --eval "(asdf:load-asd (truename \"next.asd\") :name \"next\")" \
+                   --eval '(asdf:make :next)' \
+                   --quit
+  '';
+
+  installPhase = ''
+    install -D -m0755 next $out/bin/next
+  '';
+
+  # Stripping destroys the generated SBCL image
+  dontStrip = true;
+
+  meta = with stdenv.lib; {
+    description = "Infinitely extensible web-browser (with Lisp development files using WebKitGTK platform port)";
+    homepage = "https://next.atlas.engineer";
+    license = licenses.bsd3;
+    maintainers = [ maintainers.lewo ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/next/next-gtk-webkit.nix b/nixpkgs/pkgs/applications/networking/browsers/next/next-gtk-webkit.nix
new file mode 100644
index 000000000000..8039c5492408
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/next/next-gtk-webkit.nix
@@ -0,0 +1,50 @@
+# https://github.com/atlas-engineer/next/tree/master/ports/gtk-webkit
+
+{ stdenv
+, pkg-config
+, next
+, webkitgtk
+, gtk3
+, glib
+, gsettings-desktop-schemas
+, glib-networking
+, gst_all_1
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "next-gtk-webkit";
+  inherit (next) src version;
+
+  nativeBuildInputs = [
+    pkg-config
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    glib-networking
+    gsettings-desktop-schemas
+    gtk3
+    webkitgtk
+    gst_all_1.gst-plugins-base
+    gst_all_1.gstreamer
+  ];
+
+  makeFlags = [
+    "gtk-webkit"
+    "PREFIX=${placeholder "out"}"
+  ];
+
+  installTargets =  [
+    "install-gtk-webkit"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Infinitely extensible web-browser (user interface only)";
+    homepage = "https://next.atlas.engineer";
+    license = licenses.bsd3;
+    maintainers = [ maintainers.lewo ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/opera/default.nix b/nixpkgs/pkgs/applications/networking/browsers/opera/default.nix
new file mode 100644
index 000000000000..686ffee91488
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/opera/default.nix
@@ -0,0 +1,122 @@
+{ alsaLib
+, atk
+, cairo
+, cups
+, curl
+, dbus
+, dpkg
+, expat
+, fetchurl
+, fontconfig
+, freetype
+, gdk-pixbuf
+, glib
+, gnome2
+, gtk3
+, lib
+, libX11
+, libxcb
+, libXScrnSaver
+, libXcomposite
+, libXcursor
+, libXdamage
+, libXext
+, libXfixes
+, libXi
+, libXrandr
+, libXrender
+, libXtst
+, libnotify
+, libpulseaudio
+, libuuid
+, nspr
+, nss
+, pango
+, stdenv
+, systemd
+, at-spi2-atk
+, at-spi2-core
+, autoPatchelfHook
+, wrapGAppsHook
+}:
+
+let
+
+  mirror = "https://get.geo.opera.com/pub/opera/desktop";
+
+in stdenv.mkDerivation rec {
+
+  pname = "opera";
+  version = "67.0.3575.31";
+
+  src = fetchurl {
+    url = "${mirror}/${version}/linux/${pname}-stable_${version}_amd64.deb";
+    sha256 = "1ghygin7xf5lwd77s8f6bag339di4alwlkqwjzlq20wzwx4lns4w";
+  };
+
+  unpackCmd = "${dpkg}/bin/dpkg-deb -x $curSrc .";
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    alsaLib
+    at-spi2-atk
+    at-spi2-core
+    atk
+    cairo
+    cups
+    curl
+    dbus
+    expat
+    fontconfig.lib
+    freetype
+    gdk-pixbuf
+    glib
+    gnome2.GConf
+    gtk3
+    libX11
+    libXScrnSaver
+    libXcomposite
+    libXcursor
+    libXdamage
+    libXext
+    libXfixes
+    libXi
+    libXrandr
+    libXrender
+    libXtst
+    libnotify
+    libuuid
+    libxcb
+    nspr
+    nss
+    pango
+    stdenv.cc.cc.lib
+  ];
+
+  runtimeDependencies = [
+    # Works fine without this except there is no sound.
+    libpulseaudio.out
+
+    # This is a little tricky. Without it the app starts then crashes. Then it
+    # brings up the crash report, which also crashes. `strace -f` hints at a
+    # missing libudev.so.0.
+    systemd.lib
+  ];
+
+  installPhase = ''
+    mkdir -p $out
+    cp -r . $out/
+    mv $out/lib/*/opera/*.so $out/lib/
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.opera.com";
+    description = "Web browser";
+    platforms = [ "x86_64-linux" ];
+    license = licenses.unfree;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/palemoon/default.nix b/nixpkgs/pkgs/applications/networking/browsers/palemoon/default.nix
new file mode 100644
index 000000000000..8d51f5c888ad
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/palemoon/default.nix
@@ -0,0 +1,151 @@
+{ stdenv, lib, fetchgit, makeDesktopItem
+, pkgconfig, autoconf213, alsaLib, bzip2, cairo
+, dbus, dbus-glib, ffmpeg_3, file, fontconfig, freetype
+, gnome2, gnum4, gtk2, hunspell, libevent, libjpeg
+, libnotify, libstartup_notification, makeWrapper
+, libGLU, libGL, perl, python2, libpulseaudio
+, unzip, xorg, wget, which, yasm, zip, zlib
+
+, withGTK3 ? false, gtk3
+}:
+
+let
+
+  libPath = lib.makeLibraryPath [ ffmpeg_3 ];
+  gtkVersion = if withGTK3 then "3" else "2";
+
+in stdenv.mkDerivation rec {
+  pname = "palemoon";
+  version = "28.10.0";
+
+  src = fetchgit {
+    url = "https://github.com/MoonchildProductions/Pale-Moon.git";
+    rev = "${version}_Release";
+    sha256 = "0c64vmrp46sbl1dgl9dq2vkmpgz9gvgd59dk02jqwyhx4lln1g2l";
+    fetchSubmodules = true;
+  };
+
+  desktopItem = makeDesktopItem {
+    name = "palemoon";
+    exec = "palemoon %U";
+    icon = "palemoon";
+    desktopName = "Pale Moon";
+    genericName = "Web Browser";
+    categories = "Application;Network;WebBrowser;";
+    mimeType = lib.concatStringsSep ";" [
+      "text/html"
+      "text/xml"
+      "application/xhtml+xml"
+      "application/vnd.mozilla.xul+xml"
+      "x-scheme-handler/http"
+      "x-scheme-handler/https"
+      "x-scheme-handler/ftp"
+    ];
+  };
+
+  nativeBuildInputs = [
+    file gnum4 makeWrapper perl pkgconfig python2 wget which
+  ];
+
+  buildInputs = [
+    alsaLib bzip2 cairo dbus dbus-glib ffmpeg_3 fontconfig freetype
+    gnome2.GConf gtk2 hunspell libevent libjpeg libnotify
+    libstartup_notification libGLU libGL
+    libpulseaudio unzip yasm zip zlib
+  ]
+  ++ (with xorg; [
+    libX11 libXext libXft libXi libXrender libXScrnSaver
+    libXt pixman xorgproto
+  ])
+  ++ lib.optional withGTK3 gtk3;
+
+  enableParallelBuilding = true;
+
+  configurePhase = ''
+    export MOZCONFIG=$(pwd)/mozconfig
+    export MOZ_NOSPAM=1
+
+    # Keep this similar to the official .mozconfig file,
+    # only minor changes for portability are permitted with branding.
+    # https://developer.palemoon.org/build/linux/
+    echo > $MOZCONFIG '
+    # Clear this if not a 64bit build
+    _BUILD_64=${lib.optionalString stdenv.hostPlatform.is64bit "1"}
+
+    # Set GTK Version to 2 or 3
+    _GTK_VERSION=${gtkVersion}
+
+    # Standard build options for Pale Moon
+    ac_add_options --enable-application=palemoon
+    ac_add_options --enable-optimize="-O2 -w"
+    ac_add_options --enable-default-toolkit=cairo-gtk$_GTK_VERSION
+    ac_add_options --enable-jemalloc
+    ac_add_options --enable-strip
+    ac_add_options --enable-devtools
+
+    ac_add_options --disable-eme
+    ac_add_options --disable-webrtc
+    ac_add_options --disable-gamepad
+    ac_add_options --disable-tests
+    ac_add_options --disable-debug
+    ac_add_options --disable-necko-wifi
+    ac_add_options --disable-updater
+    ac_add_options --with-pthreads
+
+    # Please see https://www.palemoon.org/redist.shtml for restrictions when using the official branding.
+    ac_add_options --enable-official-branding
+    export MOZILLA_OFFICIAL=1
+
+    ac_add_options --x-libraries=${lib.makeLibraryPath [ xorg.libX11 ]}
+
+    export MOZ_PKG_SPECIAL=gtk$_GTK_VERSION
+
+    #
+    # NixOS-specific adjustments
+    #
+
+    ac_add_options --prefix=$out
+
+    mk_add_options MOZ_MAKE_FLAGS="-j$NIX_BUILD_CORES"
+    mk_add_options AUTOCONF=${autoconf213}/bin/autoconf
+    '
+  '';
+
+  buildPhase = "$src/mach build";
+
+  installPhase = ''
+    $src/mach install
+
+    mkdir -p $out/share/applications
+    cp ${desktopItem}/share/applications/* $out/share/applications
+
+    for n in 16 22 24 32 48 256; do
+      size=$n"x"$n
+      mkdir -p $out/share/icons/hicolor/$size/apps
+      cp $src/palemoon/branding/official/default$n.png \
+         $out/share/icons/hicolor/$size/apps/palemoon.png
+    done
+
+    wrapProgram $out/lib/palemoon-${version}/palemoon \
+      --prefix LD_LIBRARY_PATH : "${libPath}"
+  '';
+
+  meta = with lib; {
+    description = "An Open Source, Goanna-based web browser focusing on efficiency and customization";
+    longDescription = ''
+      Pale Moon is an Open Source, Goanna-based web browser focusing on
+      efficiency and customization.
+
+      Pale Moon offers you a browsing experience in a browser completely built
+      from its own, independently developed source that has been forked off from
+      Firefox/Mozilla code a number of years ago, with carefully selected
+      features and optimizations to improve the browser's stability and user
+      experience, while offering full customization and a growing collection of
+      extensions and themes to make the browser truly your own.
+    '';
+    homepage    = "https://www.palemoon.org/";
+    license     = licenses.mpl20;
+    maintainers = with maintainers; [ AndersonTorres OPNA2608 ];
+    platforms   = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/qtchan/default.nix b/nixpkgs/pkgs/applications/networking/browsers/qtchan/default.nix
new file mode 100644
index 000000000000..9a4d61a50aee
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/qtchan/default.nix
@@ -0,0 +1,31 @@
+{ mkDerivation, lib, fetchFromGitHub, qmake, qtbase }:
+
+mkDerivation rec {
+  pname = "qtchan";
+  version = "1.0.1";
+
+  src = fetchFromGitHub {
+    owner  = "siavash119";
+    repo   = "qtchan";
+    rev    = "v${version}";
+    sha256 = "1x11m1kwqindzc0dkpfifcglsb362impaxs85kgzx50p898sz9ll";
+  };
+
+  enableParallelBuilding = true;
+  nativeBuildInputs = [ qmake ];
+  buildInputs = [ qtbase ];
+  qmakeFlags = [ "CONFIG-=app_bundle" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp qtchan $out/bin
+  '';
+
+  meta = with lib; {
+    description = "4chan browser in qt5";
+    homepage    = "https://github.com/siavash119/qtchan";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ chiiruno ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/qutebrowser/default.nix b/nixpkgs/pkgs/applications/networking/browsers/qutebrowser/default.nix
new file mode 100644
index 000000000000..773585183515
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/qutebrowser/default.nix
@@ -0,0 +1,113 @@
+{ stdenv, lib, fetchurl, fetchzip, python3Packages
+, mkDerivationWith, wrapQtAppsHook, wrapGAppsHook, qtbase, glib-networking
+, asciidoc, docbook_xml_dtd_45, docbook_xsl, libxml2
+, libxslt, gst_all_1 ? null
+, withPdfReader        ? true
+, withMediaPlayback    ? true
+}:
+
+assert withMediaPlayback -> gst_all_1 != null;
+
+let
+  pdfjs = let
+    version = "2.3.200";
+  in
+  fetchzip rec {
+    name = "pdfjs-${version}";
+    url = "https://github.com/mozilla/pdf.js/releases/download/v${version}/${name}-dist.zip";
+    sha256 = "1fpxsw0hzahccyng08acvc7g0gk29j2x701p6w6fg1718mvcrm1q";
+    stripRoot = false;
+  };
+
+in mkDerivationWith python3Packages.buildPythonApplication rec {
+  pname = "qutebrowser";
+  version = "1.12.0";
+
+  # the release tarballs are different from the git checkout!
+  src = fetchurl {
+    url = "https://github.com/qutebrowser/qutebrowser/releases/download/v${version}/${pname}-${version}.tar.gz";
+    sha256 = "0pywyhi4v6ymxpn85grrdr1agmcxsnm5jfqf3rlxqx5swbnxbfs1";
+  };
+
+  # Needs tox
+  doCheck = false;
+
+  buildInputs = [
+    qtbase
+    glib-networking
+  ] ++ lib.optionals withMediaPlayback (with gst_all_1; [
+    gst-plugins-base gst-plugins-good
+    gst-plugins-bad gst-plugins-ugly gst-libav
+  ]);
+
+  nativeBuildInputs = [
+    wrapQtAppsHook wrapGAppsHook asciidoc
+    docbook_xml_dtd_45 docbook_xsl libxml2 libxslt
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
+    pyyaml pyqt5 pyqtwebengine jinja2 pygments
+    pypeg2 cssutils pyopengl attrs setuptools
+    # scripts and userscripts libs
+    tldextract beautifulsoup4
+    pyreadability pykeepass stem
+  ];
+
+  patches = [
+    ./fix-restart.patch
+  ];
+
+  dontWrapGApps = true;
+  dontWrapQtApps = true;
+
+  postPatch = ''
+    substituteInPlace qutebrowser/app.py --subst-var-by qutebrowser "$out/bin/qutebrowser"
+
+    sed -i "s,/usr/share/,$out/share/,g" qutebrowser/utils/standarddir.py
+  '' + lib.optionalString withPdfReader ''
+    sed -i "s,/usr/share/pdf.js,${pdfjs},g" qutebrowser/browser/pdfjs.py
+  '';
+
+  postBuild = ''
+    a2x -f manpage doc/qutebrowser.1.asciidoc
+  '';
+
+  postInstall = ''
+    install -Dm644 doc/qutebrowser.1 "$out/share/man/man1/qutebrowser.1"
+    install -Dm644 misc/org.qutebrowser.qutebrowser.desktop \
+        "$out/share/applications/org.qutebrowser.qutebrowser.desktop"
+
+    # Install icons
+    for i in 16 24 32 48 64 128 256 512; do
+        install -Dm644 "icons/qutebrowser-''${i}x''${i}.png" \
+            "$out/share/icons/hicolor/''${i}x''${i}/apps/qutebrowser.png"
+    done
+    install -Dm644 icons/qutebrowser.svg \
+        "$out/share/icons/hicolor/scalable/apps/qutebrowser.svg"
+
+    # Install scripts
+    sed -i "s,/usr/bin/,$out/bin/,g" scripts/open_url_in_instance.sh
+    install -Dm755 -t "$out/share/qutebrowser/scripts/" $(find scripts -type f)
+    install -Dm755 -t "$out/share/qutebrowser/userscripts/" misc/userscripts/*
+
+    # Patch python scripts
+    buildPythonPath "$out $propagatedBuildInputs"
+    scripts=$(grep -rl python "$out"/share/qutebrowser/{user,}scripts/)
+    for i in $scripts; do
+      patchPythonScript "$i"
+    done
+  '';
+
+  postFixup = ''
+    wrapProgram $out/bin/qutebrowser \
+      "''${gappsWrapperArgs[@]}" \
+      "''${qtWrapperArgs[@]}"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage    = "https://github.com/The-Compiler/qutebrowser";
+    description = "Keyboard-focused browser with a minimal GUI";
+    license     = licenses.gpl3Plus;
+    maintainers = with maintainers; [ jagajaga rnhmjoj ebzzry ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/qutebrowser/fix-restart.patch b/nixpkgs/pkgs/applications/networking/browsers/qutebrowser/fix-restart.patch
new file mode 100644
index 000000000000..d54a37fe71fe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/qutebrowser/fix-restart.patch
@@ -0,0 +1,19 @@
+diff --git a/quitter.py b/quitterb.py
+index a42b9d0..f544ccb 100644
+--- a/qutebrowser/misc/quitter.py
++++ b/qutebrowser/misc/quitter.py
+@@ -112,13 +112,7 @@ class Quitter(QObject):
+         Return:
+             The commandline as a list of strings.
+         """
+-        if os.path.basename(sys.argv[0]) == 'qutebrowser':
+-            # Launched via launcher script
+-            args = [sys.argv[0]]
+-        elif hasattr(sys, 'frozen'):
+-            args = [sys.executable]
+-        else:
+-            args = [sys.executable, '-m', 'qutebrowser']
++        args = ['@qutebrowser@']
+ 
+         # Add all open pages so they get reopened.
+         page_args = []  # type: typing.MutableSequence[str]
diff --git a/nixpkgs/pkgs/applications/networking/browsers/surf/default.nix b/nixpkgs/pkgs/applications/networking/browsers/surf/default.nix
new file mode 100644
index 000000000000..03571469da1f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/surf/default.nix
@@ -0,0 +1,47 @@
+{ lib, stdenv, fetchurl
+, pkgconfig, wrapGAppsHook
+, glib, glib-networking, gsettings-desktop-schemas, gtk, libsoup, webkitgtk
+, xorg, dmenu, findutils, gnused, coreutils
+, patches ? null
+}:
+
+stdenv.mkDerivation rec {
+  pname = "surf";
+  version = "2.0";
+
+  src = fetchurl {
+    url = "https://dl.suckless.org/surf/surf-${version}.tar.gz";
+    sha256 = "07cmajyafljigy10d21kkyvv5jf3hxkx06pz3rwwk3y3c9x4rvps";
+  };
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+  buildInputs = [ glib glib-networking gsettings-desktop-schemas gtk libsoup webkitgtk ];
+
+  inherit patches;
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  # Add run-time dependencies to PATH. Append them to PATH so the user can
+  # override the dependencies with their own PATH.
+  preFixup = let
+    depsPath = lib.makeBinPath [ xorg.xprop dmenu findutils gnused coreutils ];
+  in ''
+    gappsWrapperArgs+=(
+      --suffix PATH : ${depsPath}
+    )
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A simple web browser based on WebKit/GTK";
+    longDescription = ''
+      Surf is a simple web browser based on WebKit/GTK. It is able to display
+      websites and follow links. It supports the XEmbed protocol which makes it
+      possible to embed it in another application. Furthermore, one can point
+      surf to another URI by setting its XProperties.
+    '';
+    homepage = "https://surf.suckless.org";
+    license = licenses.mit;
+    platforms = webkitgtk.meta.platforms;
+    maintainers = with maintainers; [ joachifm ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix b/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix
new file mode 100644
index 000000000000..1b4fa5ef595a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix
@@ -0,0 +1,413 @@
+{ stdenv
+, fetchurl
+, makeDesktopItem
+
+# Common run-time dependencies
+, zlib
+
+# libxul run-time dependencies
+, atk
+, cairo
+, dbus
+, dbus-glib
+, fontconfig
+, freetype
+, gdk-pixbuf
+, glib
+, gtk3
+, libxcb
+, libX11
+, libXext
+, libXrender
+, libXt
+, pango
+
+, audioSupport ? mediaSupport
+, pulseaudioSupport ? false
+, libpulseaudio
+, apulse
+
+# Media support (implies audio support)
+, mediaSupport ? true
+, ffmpeg_3
+
+, gmp
+
+# Pluggable transport dependencies
+, python27
+
+# Wrapper runtime
+, coreutils
+, glibcLocales
+, gnome3
+, runtimeShell
+, shared-mime-info
+, gsettings-desktop-schemas
+
+# Hardening
+, graphene-hardened-malloc
+, useHardenedMalloc ? graphene-hardened-malloc != null && builtins.elem stdenv.system graphene-hardened-malloc.meta.platforms
+
+# Whether to disable multiprocess support to work around crashing tabs
+# TODO: fix the underlying problem instead of this terrible work-around
+, disableContentSandbox ? true
+
+# Extra preferences
+, extraPrefs ? ""
+}:
+
+with stdenv.lib;
+
+let
+  libPath = makeLibraryPath libPkgs;
+
+  libPkgs = [
+    atk
+    cairo
+    dbus
+    dbus-glib
+    fontconfig
+    freetype
+    gdk-pixbuf
+    glib
+    gtk3
+    libxcb
+    libX11
+    libXext
+    libXrender
+    libXt
+    pango
+    stdenv.cc.cc
+    stdenv.cc.libc
+    zlib
+  ]
+  ++ optionals pulseaudioSupport [ libpulseaudio ]
+  ++ optionals mediaSupport [
+    ffmpeg_3
+  ];
+
+  # Library search path for the fte transport
+  fteLibPath = makeLibraryPath [ stdenv.cc.cc gmp ];
+
+  # Upstream source
+  version = "9.5";
+
+  lang = "en-US";
+
+  srcs = {
+    x86_64-linux = fetchurl {
+      url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz";
+      sha256 = "0l4fz2zkgwv2qniia4nv53a4pd79hfbgb66jn68r44diails1z08";
+    };
+
+    i686-linux = fetchurl {
+      url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux32-${version}_${lang}.tar.xz";
+      sha256 = "1h4awhyaiws68s727pq9r32xqg2878dl2df4kbc2nmllwrl2fxq3";
+    };
+  };
+in
+
+stdenv.mkDerivation rec {
+  pname = "tor-browser-bundle-bin";
+  inherit version;
+
+  src = srcs.${stdenv.hostPlatform.system} or (throw "unsupported system: ${stdenv.hostPlatform.system}");
+
+  preferLocalBuild = true;
+  allowSubstitutes = false;
+
+  desktopItem = makeDesktopItem {
+    name = "torbrowser";
+    exec = "tor-browser";
+    icon = "torbrowser";
+    desktopName = "Tor Browser";
+    genericName = "Web Browser";
+    comment = meta.description;
+    categories = "Network;WebBrowser;Security;";
+  };
+
+  buildCommand = ''
+    # For convenience ...
+    TBB_IN_STORE=$out/share/tor-browser
+    interp=$(< $NIX_CC/nix-support/dynamic-linker)
+
+    # Unpack & enter
+    mkdir -p "$TBB_IN_STORE"
+    tar xf "${src}" -C "$TBB_IN_STORE" --strip-components=2
+    pushd "$TBB_IN_STORE"
+
+    # Set ELF interpreter
+    for exe in firefox.real TorBrowser/Tor/tor ; do
+      echo "Setting ELF interpreter on $exe ..." >&2
+      patchelf --set-interpreter "$interp" "$exe"
+    done
+
+    # firefox is a wrapper that checks for a more recent libstdc++ & appends it to the ld path
+    mv firefox.real firefox
+
+    # The final libPath.  Note, we could split this into firefoxLibPath
+    # and torLibPath for accuracy, but this is more convenient ...
+    libPath=${libPath}:$TBB_IN_STORE:$TBB_IN_STORE/TorBrowser/Tor
+
+    # apulse uses a non-standard library path.  For now special-case it.
+    ${optionalString (audioSupport && !pulseaudioSupport) ''
+      libPath=${apulse}/lib/apulse:$libPath
+    ''}
+
+    # Fixup paths to pluggable transports.
+    sed -i TorBrowser/Data/Tor/torrc-defaults \
+        -e "s,./TorBrowser,$TBB_IN_STORE/TorBrowser,g"
+
+    # Fixup obfs transport.  Work around patchelf failing to set
+    # interpreter for pre-compiled Go binaries by invoking the interpreter
+    # directly.
+    sed -i TorBrowser/Data/Tor/torrc-defaults \
+        -e "s|\(ClientTransportPlugin meek_lite,obfs2,obfs3,obfs4,scramblesuit\) exec|\1 exec $interp|"
+
+    # Similarly fixup snowflake
+    sed -i TorBrowser/Data/Tor/torrc-defaults \
+        -e "s|\(ClientTransportPlugin snowflake\) exec|\1 exec $interp|"
+
+
+    # Prepare for autoconfig.
+    #
+    # See https://developer.mozilla.org/en-US/Firefox/Enterprise_deployment
+    cat >defaults/pref/autoconfig.js <<EOF
+    //
+    pref("general.config.filename", "mozilla.cfg");
+    pref("general.config.obscure_value", 0);
+    EOF
+
+    # Hard-coded Firefox preferences.
+    cat >mozilla.cfg <<EOF
+    // First line must be a comment
+
+    // Always update via Nixpkgs
+    lockPref("app.update.auto", false);
+    lockPref("app.update.enabled", false);
+    lockPref("extensions.update.autoUpdateDefault", false);
+    lockPref("extensions.update.enabled", false);
+    lockPref("extensions.torbutton.versioncheck_enabled", false);
+
+    // User should never change these.  Locking prevents these
+    // values from being written to prefs.js, avoiding Store
+    // path capture.
+    lockPref("extensions.torlauncher.torrc-defaults_path", "$TBB_IN_STORE/TorBrowser/Data/Tor/torrc-defaults");
+    lockPref("extensions.torlauncher.tor_path", "$TBB_IN_STORE/TorBrowser/Tor/tor");
+
+    // Reset pref that captures store paths.
+    clearPref("extensions.xpiState");
+
+    // Stop obnoxious first-run redirection.
+    lockPref("noscript.firstRunRedirection", false);
+
+    // Insist on using IPC for communicating with Tor
+    //
+    // Defaults to creating \$TBB_HOME/TorBrowser/Data/Tor/{socks,control}.socket
+    lockPref("extensions.torlauncher.control_port_use_ipc", true);
+    lockPref("extensions.torlauncher.socks_port_use_ipc", true);
+
+    // Optionally disable multiprocess support.  We always set this to ensure that
+    // toggling the pref takes effect.
+    lockPref("browser.tabs.remote.autostart.2", ${if disableContentSandbox then "false" else "true"});
+
+    // Allow sandbox access to sound devices if using ALSA directly
+    ${if (audioSupport && !pulseaudioSupport) then ''
+      pref("security.sandbox.content.write_path_whitelist", "/dev/snd/");
+    '' else ''
+      clearPref("security.sandbox.content.write_path_whitelist");
+    ''}
+
+    ${optionalString (extraPrefs != "") ''
+      ${extraPrefs}
+    ''}
+    EOF
+
+    # Hard-code path to TBB fonts; see also FONTCONFIG_FILE in
+    # the wrapper below.
+    FONTCONFIG_FILE=$TBB_IN_STORE/TorBrowser/Data/fontconfig/fonts.conf
+    sed -i "$FONTCONFIG_FILE" \
+        -e "s,<dir>fonts</dir>,<dir>$TBB_IN_STORE/fonts</dir>,"
+
+    # Preload extensions by moving into the runtime instead of storing under the
+    # user's profile directory.
+    mkdir -p "$TBB_IN_STORE/browser/extensions"
+    mv "$TBB_IN_STORE/TorBrowser/Data/Browser/profile.default/extensions/"* \
+      "$TBB_IN_STORE/browser/extensions"
+
+    # Hard-code paths to geoip data files.  TBB resolves the geoip files
+    # relative to torrc-defaults_path but if we do not hard-code them
+    # here, these paths end up being written to the torrc in the user's
+    # state dir.
+    cat >>TorBrowser/Data/Tor/torrc-defaults <<EOF
+    GeoIPFile $TBB_IN_STORE/TorBrowser/Data/Tor/geoip
+    GeoIPv6File $TBB_IN_STORE/TorBrowser/Data/Tor/geoip6
+    EOF
+
+    WRAPPER_LD_PRELOAD=${optionalString useHardenedMalloc
+      "${graphene-hardened-malloc}/lib/libhardened_malloc.so"}
+
+    WRAPPER_XDG_DATA_DIRS=${concatMapStringsSep ":" (x: "${x}/share") [
+      gnome3.adwaita-icon-theme
+      shared-mime-info
+    ]}
+    WRAPPER_XDG_DATA_DIRS+=":"${concatMapStringsSep ":" (x: "${x}/share/gsettings-schemas/${x.name}") [
+      glib
+      gsettings-desktop-schemas
+      gtk3
+    ]};
+
+    # Generate wrapper
+    mkdir -p $out/bin
+    cat > "$out/bin/tor-browser" << EOF
+    #! ${runtimeShell}
+    set -o errexit -o nounset
+
+    PATH=${makeBinPath [ coreutils ]}
+    export LC_ALL=C
+    export LOCALE_ARCHIVE=${glibcLocales}/lib/locale/locale-archive
+
+    # Enter local state directory.
+    REAL_HOME=\$HOME
+    TBB_HOME=\''${TBB_HOME:-''${XDG_DATA_HOME:-\$REAL_HOME/.local/share}/tor-browser}
+    HOME=\$TBB_HOME
+
+    mkdir -p "\$HOME"
+    cd "\$HOME"
+
+    # Initialize empty TBB local state directory hierarchy.  We
+    # intentionally mirror the layout that TBB would see if executed from
+    # the unpacked bundle dir.
+    mkdir -p "\$HOME/TorBrowser" "\$HOME/TorBrowser/Data"
+
+    # Initialize the Tor data directory.
+    mkdir -p "\$HOME/TorBrowser/Data/Tor"
+
+    # TBB will fail if ownership is too permissive
+    chmod 0700 "\$HOME/TorBrowser/Data/Tor"
+
+    # Initialize the browser profile state.  Note that the only data
+    # copied from the Store payload is the initial bookmark file, which is
+    # never updated once created.  All other files under user's profile
+    # dir are generated by TBB.
+    mkdir -p "\$HOME/TorBrowser/Data/Browser/profile.default"
+    cp -u --no-preserve=mode,owner "$TBB_IN_STORE/TorBrowser/Data/Browser/profile.default/bookmarks.html" \
+      "\$HOME/TorBrowser/Data/Browser/profile.default/bookmarks.html"
+
+    # Clear out some files that tend to capture store references but are
+    # easily generated by firefox at startup.
+    rm -f "\$HOME/TorBrowser/Data/Browser/profile.default"/{addonStartup.json.lz4,compatibility.ini,extensions.ini,extensions.json}
+    rm -f "\$HOME/TorBrowser/Data/Browser/profile.default"/startupCache/*
+
+    # XDG
+    : "\''${XDG_RUNTIME_DIR:=/run/user/\$(id -u)}"
+    : "\''${XDG_CONFIG_HOME:=\$REAL_HOME/.config}"
+
+    ${optionalString pulseaudioSupport ''
+      # Figure out some envvars for pulseaudio
+      : "\''${PULSE_SERVER:=\$XDG_RUNTIME_DIR/pulse/native}"
+      : "\''${PULSE_COOKIE:=\$XDG_CONFIG_HOME/pulse/cookie}"
+    ''}
+
+    # Font cache files capture store paths; clear them out on the off
+    # chance that TBB would continue using old font files.
+    rm -rf "\$HOME/.cache/fontconfig"
+
+    # Lift-off
+    #
+    # XAUTHORITY and DISPLAY are required for TBB to work at all.
+    #
+    # DBUS_SESSION_BUS_ADDRESS is inherited to avoid auto-launch; to
+    # prevent that, set it to an empty/invalid value prior to running
+    # tor-browser.
+    #
+    # PULSE_SERVER is necessary for audio playback.
+    #
+    # Setting FONTCONFIG_FILE is required to make fontconfig read the TBB
+    # fonts.conf; upstream uses FONTCONFIG_PATH, but FC_DEBUG=1024
+    # indicates the system fonts.conf being used instead.
+    #
+    # XDG_DATA_DIRS is set to prevent searching system dirs (looking for .desktop & icons)
+    exec env -i \
+      LD_PRELOAD=$WRAPPER_LD_PRELOAD \
+      \
+      TZ=":" \
+      TZDIR="\''${TZDIR:-}" \
+      LOCALE_ARCHIVE="\$LOCALE_ARCHIVE" \
+      \
+      TMPDIR="\''${TMPDIR:-/tmp}" \
+      HOME="\$HOME" \
+      XAUTHORITY="\''${XAUTHORITY:-\$HOME/.Xauthority}" \
+      DISPLAY="\$DISPLAY" \
+      DBUS_SESSION_BUS_ADDRESS="\''${DBUS_SESSION_BUS_ADDRESS:-unix:path=\$XDG_RUNTIME_DIR/bus}" \\
+      \
+      XDG_DATA_HOME="\$HOME/.local/share" \
+      XDG_DATA_DIRS="$WRAPPER_XDG_DATA_DIRS" \
+      \
+      PULSE_SERVER="\''${PULSE_SERVER:-}" \
+      PULSE_COOKIE="\''${PULSE_COOKIE:-}" \
+      \
+      APULSE_PLAYBACK_DEVICE="\''${APULSE_PLAYBACK_DEVICE:-plug:dmix}" \
+      \
+      TOR_SKIP_LAUNCH="\''${TOR_SKIP_LAUNCH:-}" \
+      TOR_CONTROL_PORT="\''${TOR_CONTROL_PORT:-}" \
+      TOR_SOCKS_PORT="\''${TOR_SOCKS_PORT:-}" \
+      \
+      FONTCONFIG_FILE="$FONTCONFIG_FILE" \
+      \
+      LD_LIBRARY_PATH="$libPath" \
+      \
+      "$TBB_IN_STORE/firefox" \
+        --class "Tor Browser" \
+        -no-remote \
+        -profile "\$HOME/TorBrowser/Data/Browser/profile.default" \
+        "\''${@}"
+    EOF
+    chmod +x $out/bin/tor-browser
+
+    # Easier access to docs
+    mkdir -p $out/share/doc
+    ln -s $TBB_IN_STORE/TorBrowser/Docs $out/share/doc/tor-browser
+
+    # Install .desktop item
+    mkdir -p $out/share/applications
+    cp $desktopItem/share/applications"/"* $out/share/applications
+    sed -i $out/share/applications/torbrowser.desktop \
+        -e "s,Exec=.*,Exec=$out/bin/tor-browser," \
+        -e "s,Icon=.*,Icon=tor-browser,"
+    for i in 16 32 48 64 128; do
+      mkdir -p $out/share/icons/hicolor/''${i}x''${i}/apps/
+      ln -s $out/share/tor-browser/browser/chrome/icons/default/default$i.png $out/share/icons/hicolor/''${i}x''${i}/apps/tor-browser.png
+    done
+
+    # Check installed apps
+    echo "Checking bundled Tor ..."
+    LD_LIBRARY_PATH=$libPath $TBB_IN_STORE/TorBrowser/Tor/tor --version >/dev/null
+
+    echo "Checking tor-browser wrapper ..."
+    DISPLAY="" XAUTHORITY="" DBUS_SESSION_BUS_ADDRESS="" TBB_HOME=$(mktemp -d) \
+      $out/bin/tor-browser --version >/dev/null
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Tor Browser Bundle built by torproject.org";
+    longDescription = ''
+      Tor Browser Bundle is a bundle of the Tor daemon, Tor Browser (heavily patched version of
+      Firefox), several essential extensions for Tor Browser, and some tools that glue those
+      together with a convenient UI.
+
+      `tor-browser-bundle-bin` package is the official version built by torproject.org patched with
+      `patchelf` to work under nix and with bundled scripts adapted to the read-only nature of
+      the `/nix/store`.
+    '';
+    homepage = "https://www.torproject.org/";
+    changelog = "https://gitweb.torproject.org/builders/tor-browser-build.git/plain/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt?h=maint-${version}";
+    platforms = attrNames srcs;
+    maintainers = with maintainers; [ offline matejc doublec thoughtpolice joachifm hax404 cap ];
+    hydraPlatforms = [];
+    # MPL2.0+, GPL+, &c.  While it's not entirely clear whether
+    # the compound is "libre" in a strict sense (some components place certain
+    # restrictions on redistribution), it's free enough for our purposes.
+    license = licenses.free;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle/extensions.nix b/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle/extensions.nix
new file mode 100644
index 000000000000..7356768f3973
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle/extensions.nix
@@ -0,0 +1,111 @@
+{ stdenv
+, fetchgit
+, fetchurl
+
+# common
+, zip
+
+# HTTPS Everywhere
+, git
+, libxml2 # xmllint
+, python27
+, python27Packages
+, rsync
+}:
+
+{
+  https-everywhere = stdenv.mkDerivation rec {
+    pname = "https-everywhere";
+    version = "2017.10.4";
+
+    extid = "https-everywhere-eff@eff.org";
+
+    src = fetchgit {
+      url = "https://git.torproject.org/https-everywhere.git";
+      rev = "refs/tags/${version}";
+      sha256 = "1g7971xygnhagnb25xjdf6mli6091ai9igx42d0ww88g8i0cqfzj";
+      fetchSubmodules = true; # for translations, TODO: remove
+    };
+
+    nativeBuildInputs = [
+      git
+      libxml2 # xmllint
+      python27
+      python27Packages.lxml
+      rsync
+      zip
+    ];
+
+    buildPhase = ''
+      $shell ./makexpi.sh ${version} --no-recurse
+    '';
+
+    installPhase = ''
+      install -m 444 -D pkg/https-everywhere-$version-eff.xpi "$out/$extid.xpi"
+    '';
+  };
+
+  noscript = stdenv.mkDerivation rec {
+    pname = "noscript";
+    version = "5.1.2";
+
+    extid = "{73a6fe31-595d-460b-a920-fcc0f8843232}";
+
+    src = fetchurl {
+      url = "https://secure.informaction.com/download/releases/noscript-${version}.xpi";
+      sha256 = "1fzspdiwhjabwz1yxb3gzj7giz9jbc1xxm65i93rvhzcp537cs42";
+    };
+
+    dontUnpack = true;
+
+    installPhase = ''
+      install -m 444 -D $src "$out/$extid.xpi"
+    '';
+  };
+
+  torbutton = stdenv.mkDerivation rec {
+    pname = "torbutton";
+    version = "1.9.8.1";
+
+    extid = "torbutton@torproject.org";
+
+    src = fetchgit {
+      url = "https://git.torproject.org/torbutton.git";
+      rev = "refs/tags/${version}";
+      sha256 = "1amp0c9ky0a7fsa0bcbi6n6ginw7s2g3an4rj7kvc1lxmrcsm65l";
+    };
+
+    nativeBuildInputs = [ zip ];
+
+    buildPhase = ''
+      $shell ./makexpi.sh
+    '';
+
+    installPhase = ''
+      install -m 444 -D pkg/torbutton-$version.xpi "$out/$extid.xpi"
+    '';
+  };
+
+  tor-launcher = stdenv.mkDerivation rec {
+    pname = "tor-launcher";
+    version = "0.2.13";
+
+    extid = "tor-launcher@torproject.org";
+
+    src = fetchgit {
+      url = "https://git.torproject.org/tor-launcher.git";
+      rev = "refs/tags/${version}";
+      sha256 = "1f98v88y2clwvjiw77kxqc9cacp5h0489a540nc2wmsx7vnskrq0";
+    };
+
+    nativeBuildInputs = [ zip ];
+
+    buildPhase = ''
+      make package
+    '';
+
+    installPhase = ''
+      install -m 444 -D pkg/tor-launcher-$version.xpi "$out/$extid.xpi"
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/browser.nix b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/browser.nix
new file mode 100644
index 000000000000..f87acc8722e4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/browser.nix
@@ -0,0 +1,94 @@
+{ stdenv, mkChromiumDerivation, channel, enableWideVine }:
+
+with stdenv.lib;
+
+mkChromiumDerivation (base: rec {
+  name = "chromium-browser";
+  packageName = "chromium";
+  buildTargets = [ "mksnapshot" "chrome_sandbox" "chrome" ];
+
+  outputs = ["out" "sandbox"];
+
+  sandboxExecutableName = "__chromium-suid-sandbox";
+
+  installPhase = ''
+    mkdir -p "$libExecPath"
+    cp -v "$buildPath/"*.pak "$buildPath/"*.bin "$libExecPath/"
+    cp -v "$buildPath/icudtl.dat" "$libExecPath/"
+    cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/"
+    cp -v "$buildPath/chrome" "$libExecPath/$packageName"
+
+    # Swiftshader
+    # See https://stackoverflow.com/a/4264351/263061 for the find invocation.
+    if [ -n "$(find "$buildPath/swiftshader/" -maxdepth 1 -name '*.so' -print -quit)" ]; then
+      echo "Swiftshader files found; installing"
+      mkdir -p "$libExecPath/swiftshader"
+      cp -v "$buildPath/swiftshader/"*.so "$libExecPath/swiftshader/"
+    else
+      echo "Swiftshader files not found"
+    fi
+
+    mkdir -p "$sandbox/bin"
+    cp -v "$buildPath/chrome_sandbox" "$sandbox/bin/${sandboxExecutableName}"
+
+    mkdir -vp "$out/share/man/man1"
+    cp -v "$buildPath/chrome.1" "$out/share/man/man1/$packageName.1"
+
+    for icon_file in chrome/app/theme/chromium/product_logo_*[0-9].png; do
+      num_and_suffix="''${icon_file##*logo_}"
+      icon_size="''${num_and_suffix%.*}"
+      expr "$icon_size" : "^[0-9][0-9]*$" || continue
+      logo_output_prefix="$out/share/icons/hicolor"
+      logo_output_path="$logo_output_prefix/''${icon_size}x''${icon_size}/apps"
+      mkdir -vp "$logo_output_path"
+      cp -v "$icon_file" "$logo_output_path/$packageName.png"
+    done
+
+    # Install Desktop Entry
+    install -D chrome/installer/linux/common/desktop.template \
+      $out/share/applications/chromium-browser.desktop
+
+    substituteInPlace $out/share/applications/chromium-browser.desktop \
+      --replace "@@MENUNAME@@" "Chromium" \
+      --replace "@@PACKAGE@@" "chromium" \
+      --replace "Exec=/usr/bin/@@USR_BIN_SYMLINK_NAME@@" "Exec=chromium"
+
+    # Append more mime types to the end
+    sed -i '/^MimeType=/ s,$,x-scheme-handler/webcal;x-scheme-handler/mailto;x-scheme-handler/about;x-scheme-handler/unknown,' \
+      $out/share/applications/chromium-browser.desktop
+
+    # See https://github.com/NixOS/nixpkgs/issues/12433
+    sed -i \
+      -e '/\[Desktop Entry\]/a\' \
+      -e 'StartupWMClass=chromium-browser' \
+      $out/share/applications/chromium-browser.desktop
+  '';
+
+  passthru = { inherit sandboxExecutableName; };
+
+  requiredSystemFeatures = [ "big-parallel" ];
+
+  meta = {
+    description = "An open source web browser from Google, with dependencies on Google web services removed";
+    longDescription = ''
+      Chromium is an open source web browser from Google that aims to build a
+      safer, faster, and more stable way for all Internet users to experience
+      the web. It has a minimalist user interface and provides the vast majority
+      of source code for Google Chrome (which has some additional features).
+    '';
+    homepage = "https://github.com/Eloston/ungoogled-chromium";
+    maintainers = with maintainers; [ squalus ];
+    # Overview of the maintainer roles:
+    # nixos-unstable:
+    # - TODO: Need a new maintainer for x86_64 [0]
+    # - @thefloweringash: aarch64
+    # - @primeos: Provisional maintainer (x86_64)
+    # Stable channel:
+    # - TODO (need someone to test backports [0])
+    # [0]: https://github.com/NixOS/nixpkgs/issues/78450
+    license = if enableWideVine then licenses.unfree else licenses.bsd3;
+    platforms = platforms.linux;
+    hydraPlatforms = if channel == "stable" then ["aarch64-linux" "x86_64-linux"] else [];
+    timeout = 172800; # 48 hours
+  };
+})
diff --git a/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/common.nix b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/common.nix
new file mode 100644
index 000000000000..a5bea6cf34a9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/common.nix
@@ -0,0 +1,366 @@
+{ stdenv, llvmPackages, gnChromium, ninja, which, nodejs, fetchpatch, gnutar
+
+# default dependencies
+, bzip2, flac, speex, libopus
+, libevent, expat, libjpeg, snappy
+, libpng, libcap
+, xdg_utils, yasm, minizip, libwebp
+, libusb1, pciutils, nss, re2, zlib
+
+, python2Packages, perl, pkgconfig
+, nspr, systemd, kerberos
+, utillinux, alsaLib
+, bison, gperf
+, glib, gtk3, dbus-glib
+, glibc
+, libXScrnSaver, libXcursor, libXtst, libGLU, libGL
+, protobuf, speechd, libXdamage, cups
+, ffmpeg_3, libxslt, libxml2, at-spi2-core
+, jre
+
+# optional dependencies
+, libgcrypt ? null # gnomeSupport || cupsSupport
+, libva ? null # useVaapi
+, libdrm ? null, wayland ? null, mesa_drivers ? null, libxkbcommon ? null # useOzone
+
+# package customization
+, useOzone ? false
+, useVaapi ? !(useOzone || stdenv.isAarch64) # Built if supported, but disabled in the wrapper
+# VA-API TODOs:
+# - Ozone: M81 fails to build due to "ozone_platform_gbm = false"
+#   - Possible solutions: Write a patch to fix the build (wrong gn dependencies)
+#     or build with minigbm
+# - AArch64: Causes serious regressions (https://github.com/NixOS/nixpkgs/pull/85253#issuecomment-614405879)
+, gnomeSupport ? false, gnome ? null
+, gnomeKeyringSupport ? false, libgnome-keyring3 ? null
+, proprietaryCodecs ? true
+, cupsSupport ? true
+, pulseSupport ? false, libpulseaudio ? null
+, ungoogled-chromium
+, ungoogled ? false
+
+, upstream-info
+}:
+
+buildFun:
+
+with stdenv.lib;
+
+# see http://www.linuxfromscratch.org/blfs/view/cvs/xsoft/chromium.html
+
+let
+  # The additional attributes for creating derivations based on the chromium
+  # source tree.
+  extraAttrs = buildFun base;
+
+  githubPatch = commit: sha256: fetchpatch {
+    url = "https://github.com/chromium/chromium/commit/${commit}.patch";
+    inherit sha256;
+  };
+
+  mkGnFlags =
+    let
+      # Serialize Nix types into GN types according to this document:
+      # https://chromium.googlesource.com/chromium/src/+/master/tools/gn/docs/language.md
+      mkGnString = value: "\"${escape ["\"" "$" "\\"] value}\"";
+      sanitize = value:
+        if value == true then "true"
+        else if value == false then "false"
+        else if isList value then "[${concatMapStringsSep ", " sanitize value}]"
+        else if isInt value then toString value
+        else if isString value then mkGnString value
+        else throw "Unsupported type for GN value `${value}'.";
+      toFlag = key: value: "${key}=${sanitize value}";
+    in attrs: concatStringsSep " " (attrValues (mapAttrs toFlag attrs));
+
+  gnSystemLibraries = [
+    "flac" "libwebp" "libxslt" "yasm" "opus" "snappy" "libpng"
+    # "zlib" # version 77 reports unresolved dependency on //third_party/zlib:zlib_config
+    # "libjpeg" # fails with multiple undefined references to chromium_jpeg_*
+    # "re2" # fails with linker errors
+    # "ffmpeg" # https://crbug.com/731766
+    # "harfbuzz-ng" # in versions over 63 harfbuzz and freetype are being built together
+                    # so we can't build with one from system and other from source
+  ];
+
+  opusWithCustomModes = libopus.override {
+    withCustomModes = true;
+  };
+
+  defaultDependencies = [
+    bzip2 flac speex opusWithCustomModes
+    libevent expat libjpeg snappy
+    libpng libcap
+    xdg_utils yasm minizip libwebp
+    libusb1 re2 zlib
+    ffmpeg_3 libxslt libxml2
+    # harfbuzz # in versions over 63 harfbuzz and freetype are being built together
+               # so we can't build with one from system and other from source
+  ];
+
+  # build paths and release info
+  packageName = extraAttrs.packageName or extraAttrs.name;
+  buildType = "Release";
+  buildPath = "out/${buildType}";
+  libExecPath = "$out/libexec/${packageName}";
+
+  versionRange = min-version: upto-version:
+    let inherit (upstream-info) version;
+        result = versionAtLeast version min-version && versionOlder version upto-version;
+        stable-version = (import ./upstream-info.nix).stable.version;
+    in if versionAtLeast stable-version upto-version
+       then warn "chromium: stable version ${stable-version} is newer than a patchset bounded at ${upto-version}. You can safely delete it."
+            result
+       else result;
+
+  ungoogler =
+    let versionEntry = (import ./ungoogled-src.nix)."${upstream-info.version}";
+    in ungoogled-chromium {
+      inherit (versionEntry) rev sha256;
+    };
+  base = rec {
+    name = "${packageName}-unwrapped-${version}";
+    inherit (upstream-info) channel version;
+    inherit packageName buildType buildPath;
+
+    src = upstream-info.main;
+
+    nativeBuildInputs = [
+      ninja which python2Packages.python perl pkgconfig
+      python2Packages.ply python2Packages.jinja2 nodejs
+      gnutar
+    ] ++ optional (versionAtLeast version "83") python2Packages.setuptools;
+
+    buildInputs = defaultDependencies ++ [
+      nspr nss systemd
+      utillinux alsaLib
+      bison gperf kerberos
+      glib gtk3 dbus-glib
+      libXScrnSaver libXcursor libXtst libGLU libGL
+      pciutils protobuf speechd libXdamage at-spi2-core
+      jre
+    ] ++ optional useVaapi libva
+      ++ optional gnomeKeyringSupport libgnome-keyring3
+      ++ optionals gnomeSupport [ gnome.GConf libgcrypt ]
+      ++ optionals cupsSupport [ libgcrypt cups ]
+      ++ optional pulseSupport libpulseaudio
+      ++ optionals useOzone [ libdrm wayland mesa_drivers libxkbcommon ];
+
+    patches = [
+      ./patches/nix_plugin_paths_68.patch
+      ./patches/remove-webp-include-69.patch
+      ./patches/no-build-timestamps.patch
+      ./patches/widevine-79.patch
+      ./patches/dont-use-ANGLE-by-default.patch
+      # Unfortunately, chromium regularly breaks on major updates and
+      # then needs various patches backported in order to be compiled with GCC.
+      # Good sources for such patches and other hints:
+      # - https://gitweb.gentoo.org/repo/gentoo.git/plain/www-client/chromium/
+      # - https://git.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/chromium
+      # - https://github.com/chromium/chromium/search?q=GCC&s=committer-date&type=Commits
+      #
+      # ++ optionals (channel == "dev") [ ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" ) ]
+      # ++ optional (versionRange "68" "72") ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" )
+    ] ++ optionals (useVaapi) ([ # Fixes for the VA-API build:
+      ./patches/enable-vdpau-support-for-nvidia.patch # https://aur.archlinux.org/cgit/aur.git/tree/vdpau-support.patch?h=chromium-vaapi
+      ./patches/enable-video-acceleration-on-linux.patch # Can be controlled at runtime (i.e. without rebuilding Chromium)
+    ] ++ optionals (versionRange "81" "82") [
+      (githubPatch "5b2ff215473e0526b5b24aeff4ad90d369b21c75" "0n00vh8wfpn2ay5fqsxcsx0zadnv7mihm72bcvnrfzh75nzbg902")
+      (githubPatch "98e343ab369e4262511b5fce547728e3e5eefba8" "00wwp653jk0k0yvix00vr7ymgck9dj7fxjwx4nc67ynn84dh6064")
+    ]);
+
+    postPatch = ''
+      # We want to be able to specify where the sandbox is via CHROME_DEVEL_SANDBOX
+      substituteInPlace sandbox/linux/suid/client/setuid_sandbox_host.cc \
+        --replace \
+          'return sandbox_binary;' \
+          'return base::FilePath(GetDevelSandboxPath());'
+
+      substituteInPlace services/audio/audio_sandbox_hook_linux.cc \
+        --replace \
+          '/usr/share/alsa/' \
+          '${alsaLib}/share/alsa/' \
+        --replace \
+          '/usr/lib/x86_64-linux-gnu/gconv/' \
+          '${glibc}/lib/gconv/' \
+        --replace \
+          '/usr/share/locale/' \
+          '${glibc}/share/locale/'
+
+      sed -i -e 's@"\(#!\)\?.*xdg-@"\1${xdg_utils}/bin/xdg-@' \
+        chrome/browser/shell_integration_linux.cc
+
+      sed -i -e '/lib_loader.*Load/s!"\(libudev\.so\)!"${systemd.lib}/lib/\1!' \
+        device/udev_linux/udev?_loader.cc
+
+      sed -i -e '/libpci_loader.*Load/s!"\(libpci\.so\)!"${pciutils}/lib/\1!' \
+        gpu/config/gpu_info_collector_linux.cc
+
+      sed -i -re 's/([^:])\<(isnan *\()/\1std::\2/g' \
+        chrome/browser/ui/webui/engagement/site_engagement_ui.cc
+
+      sed -i -e '/#include/ {
+        i #include <algorithm>
+        :l; n; bl
+      }' gpu/config/gpu_control_list.cc
+
+      # Allow to put extensions into the system-path.
+      sed -i -e 's,/usr,/run/current-system/sw,' chrome/common/chrome_paths.cc
+
+      patchShebangs .
+      # use our own nodejs
+      mkdir -p third_party/node/linux/node-linux-x64/bin
+      ln -s $(which node) third_party/node/linux/node-linux-x64/bin/node
+
+      # remove unused third-party
+      # in third_party/crashpad third_party/zlib contains just a header-adapter
+      for lib in ${toString gnSystemLibraries}; do
+        find -type f -path "*third_party/$lib/*"     \
+            \! -path "*third_party/crashpad/crashpad/third_party/zlib/*"  \
+            \! -path "*third_party/$lib/chromium/*"  \
+            \! -path "*third_party/$lib/google/*"    \
+            \! -path "*base/third_party/icu/*"       \
+            \! -path "*base/third_party/libevent/*"  \
+            \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \
+            -delete
+      done
+    '' + optionalString stdenv.isAarch64 ''
+      substituteInPlace build/toolchain/linux/BUILD.gn \
+        --replace 'toolprefix = "aarch64-linux-gnu-"' 'toolprefix = ""'
+    '' + optionalString stdenv.cc.isClang ''
+      mkdir -p third_party/llvm-build/Release+Asserts/bin
+      ln -s ${stdenv.cc}/bin/clang              third_party/llvm-build/Release+Asserts/bin/clang
+      ln -s ${stdenv.cc}/bin/clang++            third_party/llvm-build/Release+Asserts/bin/clang++
+      ln -s ${llvmPackages.llvm}/bin/llvm-ar    third_party/llvm-build/Release+Asserts/bin/llvm-ar
+    '' + optionalString ungoogled ''
+      ${ungoogler}/utils/prune_binaries.py . ${ungoogler}/pruning.list || echo "some errors"
+      ${ungoogler}/utils/patches.py . ${ungoogler}/patches
+      ${ungoogler}/utils/domain_substitution.py apply -r ${ungoogler}/domain_regex.list -f ${ungoogler}/domain_substitution.list -c ./ungoogled-domsubcache.tar.gz .
+    '';
+
+    gnFlags = mkGnFlags ({
+      linux_use_bundled_binutils = false;
+      use_lld = false;
+      use_gold = true;
+      gold_path = "${stdenv.cc}/bin";
+      is_debug = false;
+
+      proprietary_codecs = false;
+      use_sysroot = false;
+      use_gnome_keyring = gnomeKeyringSupport;
+      use_gio = gnomeSupport;
+      # ninja: error: '../../native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-objcopy',
+      # needed by 'nacl_irt_x86_64.nexe', missing and no known rule to make it
+      enable_nacl = false;
+      # Enabling the Widevine component here doesn't affect whether we can
+      # redistribute the chromium package; the Widevine component is either
+      # added later in the wrapped -wv build or downloaded from Google.
+      enable_widevine = true;
+      use_cups = cupsSupport;
+
+      treat_warnings_as_errors = false;
+      is_clang = stdenv.cc.isClang;
+      clang_use_chrome_plugins = false;
+      blink_symbol_level = 0;
+      fieldtrial_testing_like_official_build = true;
+
+      # Google API keys, see:
+      #   http://www.chromium.org/developers/how-tos/api-keys
+      # Note: These are for NixOS/nixpkgs use ONLY. For your own distribution,
+      # please get your own set of keys.
+      google_api_key = "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI";
+      google_default_client_id = "404761575300.apps.googleusercontent.com";
+      google_default_client_secret = "9rIFQjfnkykEmqb6FfjJQD1D";
+    } // optionalAttrs proprietaryCodecs {
+      # enable support for the H.264 codec
+      proprietary_codecs = true;
+      enable_hangout_services_extension = true;
+      ffmpeg_branding = "Chrome";
+    } // optionalAttrs useVaapi {
+      use_vaapi = true;
+    } // optionalAttrs pulseSupport {
+      use_pulseaudio = true;
+      link_pulseaudio = true;
+    } // optionalAttrs useOzone {
+      use_ozone = true;
+      ozone_platform_gbm = false;
+      use_xkbcommon = true;
+      use_glib = true;
+      use_gtk = true;
+      use_system_libwayland = true;
+      use_system_minigbm = true;
+      use_system_libdrm = true;
+      system_wayland_scanner_path = "${wayland}/bin/wayland-scanner";
+    } // optionalAttrs ungoogled {
+      closure_compile = false;
+      enable_hangout_services_extension = false;
+      enable_mdns = false;
+      enable_nacl_nonsfi = false;
+      enable_one_click_signin = false;
+      enable_reading_list = false;
+      enable_remoting = false;
+      enable_reporting = false;
+      enable_service_discovery = false;
+      exclude_unwind_tables = true;
+      google_api_key = "";
+      google_default_client_id = "";
+      google_default_client_secret = "";
+      optimize_webui = false;
+      safe_browsing_mode = 0;
+      use_official_google_api_keys = false;
+      use_unofficial_version_number = false;
+    } // (extraAttrs.gnFlags or {}));
+
+    configurePhase = ''
+      runHook preConfigure
+
+      # This is to ensure expansion of $out.
+      libExecPath="${libExecPath}"
+      python build/linux/unbundle/replace_gn_files.py \
+        --system-libraries ${toString gnSystemLibraries}
+      ${gnChromium}/bin/gn gen --args=${escapeShellArg gnFlags} out/Release | tee gn-gen-outputs.txt
+
+      # Fail if `gn gen` contains a WARNING.
+      grep -o WARNING gn-gen-outputs.txt && echo "Found gn WARNING, exiting nix build" && exit 1
+
+      runHook postConfigure
+    '';
+
+    # Don't spam warnings about unknown warning options. This is useful because
+    # our Clang is always older than Chromium's and the build logs have a size
+    # of approx. 25 MB without this option (and this saves e.g. 66 %).
+    NIX_CFLAGS_COMPILE = "-Wno-unknown-warning-option";
+
+    buildPhase = let
+      # Build paralelism: on Hydra the build was frequently running into memory
+      # exhaustion, and even other users might be running into similar issues.
+      # -j is halved to avoid memory problems, and -l is slightly increased
+      # so that the build gets slight preference before others
+      # (it will often be on "critical path" and at risk of timing out)
+      buildCommand = target: ''
+        ninja -C "${buildPath}"  \
+          -j$(( ($NIX_BUILD_CORES+1) / 2 )) -l$(( $NIX_BUILD_CORES+1 )) \
+          "${target}"
+        (
+          source chrome/installer/linux/common/installer.include
+          PACKAGE=$packageName
+          MENUNAME="Chromium"
+          process_template chrome/app/resources/manpage.1.in "${buildPath}/chrome.1"
+        )
+      '';
+      targets = extraAttrs.buildTargets or [];
+      commands = map buildCommand targets;
+    in concatStringsSep "\n" commands;
+
+    postFixup = ''
+      # Make sure that libGLESv2 is found by dlopen (if using EGL).
+      chromiumBinary="$libExecPath/$packageName"
+      origRpath="$(patchelf --print-rpath "$chromiumBinary")"
+      patchelf --set-rpath "${libGL}/lib:$origRpath" "$chromiumBinary"
+    '';
+  };
+
+# Remove some extraAttrs we supplied to the base attributes already.
+in stdenv.mkDerivation (base // removeAttrs extraAttrs [
+  "name" "gnFlags" "buildTargets"
+])
diff --git a/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/default.nix b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/default.nix
new file mode 100644
index 000000000000..9d6c7fada709
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/default.nix
@@ -0,0 +1,215 @@
+{ newScope, config, stdenv, llvmPackages_9, llvmPackages_10
+, makeWrapper, ed
+, glib, gtk3, gnome3, gsettings-desktop-schemas, gn, fetchgit
+, libva ? null
+, gcc, nspr, nss, patchelfUnstable, runCommand
+, lib
+
+# package customization
+# Note: enable* flags should not require full rebuilds (i.e. only affect the wrapper)
+, channel ? "stable"
+, gnomeSupport ? false, gnome ? null
+, gnomeKeyringSupport ? false
+, proprietaryCodecs ? true
+, enablePepperFlash ? false
+, enableWideVine ? false
+, useVaapi ? false # Deprecated, use enableVaapi instead!
+, enableVaapi ? false # Disabled by default due to unofficial support and issues on radeon
+, ungoogled ? true
+, useOzone ? false
+, cupsSupport ? true
+, pulseSupport ? config.pulseaudio or stdenv.isLinux
+, commandLineArgs ? ""
+}:
+
+let
+  llvmPackages = if channel != "stable"
+    then llvmPackages_10
+    else llvmPackages_9;
+  stdenv = llvmPackages.stdenv;
+
+  callPackage = newScope chromium;
+
+  chromium = {
+    inherit stdenv llvmPackages;
+
+    upstream-info = (callPackage ./update.nix {}).getChannel channel;
+
+    mkChromiumDerivation = callPackage ./common.nix ({
+      inherit gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs cupsSupport pulseSupport useOzone;
+      inherit ungoogled;
+      gnChromium = gn;
+    } // lib.optionalAttrs (channel != "stable") {
+      # TODO: Remove after we can update gn for the stable channel (backward incompatible changes):
+      gnChromium = gn.overrideAttrs (oldAttrs: {
+        version = "2020-03-23";
+        src = fetchgit {
+          url = "https://gn.googlesource.com/gn";
+          rev = "5ed3c9cc67b090d5e311e4bd2aba072173e82db9";
+          sha256 = "00y2d35wvqmx9glaqhfb62wdgbfpwr77v0934nnvh9ks71vnsjqy";
+        };
+      });
+    });
+
+    browser = callPackage ./browser.nix { inherit channel enableWideVine; };
+
+    plugins = callPackage ./plugins.nix {
+      inherit enablePepperFlash;
+    };
+
+    ungoogled-chromium = callPackage ./ungoogled.nix {};
+  };
+
+  mkrpath = p: "${lib.makeSearchPathOutput "lib" "lib64" p}:${lib.makeLibraryPath p}";
+  widevineCdm = let upstream-info = chromium.upstream-info; in stdenv.mkDerivation {
+    name = "chrome-widevine-cdm";
+
+    # The .deb file for Google Chrome
+    src = upstream-info.binary;
+
+    nativeBuildInputs = [ patchelfUnstable ];
+
+    phases = [ "unpackPhase" "patchPhase" "installPhase" "checkPhase" ];
+
+    unpackCmd = let
+      widevineCdmPath =
+        if upstream-info.channel == "stable" then
+          "./opt/google/chrome/WidevineCdm"
+        else if upstream-info.channel == "beta" then
+          "./opt/google/chrome-beta/WidevineCdm"
+        else if upstream-info.channel == "dev" then
+          "./opt/google/chrome-unstable/WidevineCdm"
+        else
+          throw "Unknown chromium channel.";
+    in ''
+      # Extract just WidevineCdm from upstream's .deb file
+      ar p "$src" data.tar.xz | tar xJ "${widevineCdmPath}"
+
+      # Move things around so that we don't have to reference a particular
+      # chrome-* directory later.
+      mv "${widevineCdmPath}" ./
+
+      # unpackCmd wants a single output directory; let it take WidevineCdm/
+      rm -rf opt
+    '';
+
+    doCheck = true;
+    checkPhase = ''
+      ! find -iname '*.so' -exec ldd {} + | grep 'not found'
+    '';
+
+    PATCH_RPATH = mkrpath [ gcc.cc glib nspr nss ];
+
+    patchPhase = ''
+      patchelf --set-rpath "$PATCH_RPATH" _platform_specific/linux_x64/libwidevinecdm.so
+    '';
+
+    installPhase = ''
+      mkdir -p $out/WidevineCdm
+      cp -a * $out/WidevineCdm/
+    '';
+
+    meta = {
+      platforms = [ "x86_64-linux" ];
+      license = lib.licenses.unfree;
+    };
+  };
+
+  suffix = if channel != "stable" then "-" + channel else "";
+
+  sandboxExecutableName = chromium.browser.passthru.sandboxExecutableName;
+
+  version = chromium.browser.version;
+
+  # We want users to be able to enableWideVine without rebuilding all of
+  # chromium, so we have a separate derivation here that copies chromium
+  # and adds the unfree WidevineCdm.
+  chromiumWV = let browser = chromium.browser; in if enableWideVine then
+    runCommand (browser.name + "-wv") { version = browser.version; }
+      ''
+        mkdir -p $out
+        cp -a ${browser}/* $out/
+        chmod u+w $out/libexec/chromium
+        cp -a ${widevineCdm}/WidevineCdm $out/libexec/chromium/
+      ''
+    else browser;
+
+  optionalVaapiFlags = if useVaapi # TODO: Remove after 20.09:
+    then throw ''
+      Chromium's useVaapi was replaced by enableVaapi and you don't need to pass
+      "--ignore-gpu-blacklist" anymore (also no rebuilds are required anymore).
+    '' else lib.optionalString
+      (!enableVaapi)
+      "--add-flags --disable-accelerated-video-decode --add-flags --disable-accelerated-video-encode";
+in stdenv.mkDerivation {
+  name = "chromium${suffix}-${version}";
+  inherit version;
+
+  buildInputs = [
+    makeWrapper ed
+
+    # needed for GSETTINGS_SCHEMAS_PATH
+    gsettings-desktop-schemas glib gtk3
+
+    # needed for XDG_ICON_DIRS
+    gnome3.adwaita-icon-theme
+  ];
+
+  outputs = ["out" "sandbox"];
+
+  buildCommand = let
+    browserBinary = "${chromiumWV}/libexec/chromium/chromium";
+    getWrapperFlags = plugin: "$(< \"${plugin}/nix-support/wrapper-flags\")";
+    libPath = stdenv.lib.makeLibraryPath [ libva ];
+
+  in with stdenv.lib; ''
+    mkdir -p "$out/bin"
+
+    eval makeWrapper "${browserBinary}" "$out/bin/chromium" \
+      --add-flags ${escapeShellArg (escapeShellArg commandLineArgs)} \
+      ${optionalVaapiFlags} \
+      ${concatMapStringsSep " " getWrapperFlags chromium.plugins.enabled}
+
+    ed -v -s "$out/bin/chromium" << EOF
+    2i
+
+    if [ -x "/run/wrappers/bin/${sandboxExecutableName}" ]
+    then
+      export CHROME_DEVEL_SANDBOX="/run/wrappers/bin/${sandboxExecutableName}"
+    else
+      export CHROME_DEVEL_SANDBOX="$sandbox/bin/${sandboxExecutableName}"
+    fi
+
+  '' + lib.optionalString (libPath != "") ''
+    # To avoid loading .so files from cwd, LD_LIBRARY_PATH here must not
+    # contain an empty section before or after a colon.
+    export LD_LIBRARY_PATH="\$LD_LIBRARY_PATH\''${LD_LIBRARY_PATH:+:}${libPath}"
+  '' + ''
+
+    # libredirect causes chromium to deadlock on startup
+    export LD_PRELOAD="\$(echo -n "\$LD_PRELOAD" | tr ':' '\n' | grep -v /lib/libredirect\\\\.so$ | tr '\n' ':')"
+
+    export XDG_DATA_DIRS=$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH\''${XDG_DATA_DIRS:+:}\$XDG_DATA_DIRS
+
+    .
+    w
+    EOF
+
+    ln -sv "${chromium.browser.sandbox}" "$sandbox"
+
+    ln -s "$out/bin/chromium" "$out/bin/chromium-browser"
+
+    mkdir -p "$out/share"
+    for f in '${chromium.browser}'/share/*; do # hello emacs */
+      ln -s -t "$out/share/" "$f"
+    done
+  '';
+
+  inherit (chromium.browser) packageName;
+  meta = chromium.browser.meta;
+  passthru = {
+    inherit (chromium) upstream-info browser;
+    mkDerivation = chromium.mkChromiumDerivation;
+    inherit sandboxExecutableName;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/dont-use-ANGLE-by-default.patch b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/dont-use-ANGLE-by-default.patch
new file mode 100644
index 000000000000..9f14a304eb34
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/dont-use-ANGLE-by-default.patch
@@ -0,0 +1,26 @@
+A field trial currently enables the passthrough command decoder, which causes
+gl_factory.cc to try kGLImplementationEGLANGLE first, which causes Chromium to fail
+to load libGLESv2.so on NixOS.  It somehow does not try kGLImplementationDesktopGL,
+and so there is no GL support at all.
+
+Revert to using the validating command decoder, which prevents gl_factory.cc
+from touching allowed_impls, allowing it to successfully use kGLImplementationDesktopGL.
+
+diff --git a/ui/gl/gl_utils.cc b/ui/gl/gl_utils.cc
+index 697cbed5fe2d..8419bdb21a2f 100644
+--- a/ui/gl/gl_utils.cc
++++ b/ui/gl/gl_utils.cc
+@@ -71,9 +71,10 @@ bool UsePassthroughCommandDecoder(const base::CommandLine* command_line) {
+   } else if (switch_value == kCmdDecoderValidatingName) {
+     return false;
+   } else {
+-    // Unrecognized or missing switch, use the default.
+-    return base::FeatureList::IsEnabled(
+-        features::kDefaultPassthroughCommandDecoder);
++    // Ignore the field trial that enables it; disable it until
++    // gl_factory.cc kGLImplementationEGLANGLE issues are sorted
++    // out on NixOS.
++    return false;
+   }
+ }
+ }
diff --git a/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/enable-vdpau-support-for-nvidia.patch b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/enable-vdpau-support-for-nvidia.patch
new file mode 100644
index 000000000000..b5372d1a2556
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/enable-vdpau-support-for-nvidia.patch
@@ -0,0 +1,74 @@
+--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
++++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
+@@ -641,6 +641,7 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers(
+   // |vpp_vaapi_wrapper_| for VaapiPicture to DownloadFromSurface() the VA's
+   // internal decoded frame.
+   if (buffer_allocation_mode_ != BufferAllocationMode::kNone &&
++      buffer_allocation_mode_ != BufferAllocationMode::kWrapVdpau &&
+       !vpp_vaapi_wrapper_) {
+     vpp_vaapi_wrapper_ = VaapiWrapper::Create(
+         VaapiWrapper::kVideoProcess, VAProfileNone,
+@@ -665,7 +666,8 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers(
+     PictureBuffer buffer = buffers[i];
+     buffer.set_size(requested_pic_size_);
+     std::unique_ptr<VaapiPicture> picture = vaapi_picture_factory_->Create(
+-        (buffer_allocation_mode_ == BufferAllocationMode::kNone)
++        ((buffer_allocation_mode_ == BufferAllocationMode::kNone) ||
++         (buffer_allocation_mode_ == BufferAllocationMode::kWrapVdpau))
+             ? vaapi_wrapper_
+             : vpp_vaapi_wrapper_,
+         make_context_current_cb_, bind_image_cb_, buffer);
+@@ -1093,6 +1095,12 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() {
+
+ VaapiVideoDecodeAccelerator::BufferAllocationMode
+ VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
++  // NVIDIA blobs use VDPAU
++  if (VaapiWrapper::GetImplementationType() == VAImplementation::kNVIDIAVDPAU) {
++    LOG(INFO) << "VA-API driver on VDPAU backend";
++    return BufferAllocationMode::kWrapVdpau;
++  }
++
+   // TODO(crbug.com/912295): Enable a better BufferAllocationMode for IMPORT
+   // |output_mode_| as well.
+   if (output_mode_ == VideoDecodeAccelerator::Config::OutputMode::IMPORT)
+@@ -1105,7 +1113,7 @@ VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
+   // depends on the bitstream and sometimes it's not enough to cover the amount
+   // of frames needed by the client pipeline (see b/133733739).
+   // TODO(crbug.com/911754): Enable for VP9 Profile 2.
+-  if (IsGeminiLakeOrLater() &&
++  if (false && IsGeminiLakeOrLater() &&
+       (profile_ == VP9PROFILE_PROFILE0 || profile_ == VP8PROFILE_ANY)) {
+     // Add one to the reference frames for the one being currently egressed, and
+     // an extra allocation for both |client_| and |decoder_|, see
+--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.h
++++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.h
+@@ -204,6 +204,7 @@ class MEDIA_GPU_EXPORT VaapiVideoDecodeAccelerator
+     // Using |client_|s provided PictureBuffers and as many internally
+     // allocated.
+     kNormal,
++    kWrapVdpau,
+   };
+
+   // Decides the concrete buffer allocation mode, depending on the hardware
+--- a/media/gpu/vaapi/vaapi_wrapper.cc
++++ b/media/gpu/vaapi/vaapi_wrapper.cc
+@@ -131,6 +131,9 @@ media::VAImplementation VendorStringToImplementationType(
+   } else if (base::StartsWith(va_vendor_string, "Intel iHD driver",
+                               base::CompareCase::SENSITIVE)) {
+     return media::VAImplementation::kIntelIHD;
++  } else if (base::StartsWith(va_vendor_string, "Splitted-Desktop Systems VDPAU",
++                              base::CompareCase::SENSITIVE)) {
++    return media::VAImplementation::kNVIDIAVDPAU;
+   }
+   return media::VAImplementation::kOther;
+ }
+--- a/media/gpu/vaapi/vaapi_wrapper.h
++++ b/media/gpu/vaapi/vaapi_wrapper.h
+@@ -79,6 +79,7 @@ enum class VAImplementation {
+   kIntelIHD,
+   kOther,
+   kInvalid,
++  kNVIDIAVDPAU,
+ };
+
+ // This class handles VA-API calls and ensures proper locking of VA-API calls
diff --git a/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/enable-video-acceleration-on-linux.patch b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/enable-video-acceleration-on-linux.patch
new file mode 100644
index 000000000000..bd278633f67e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/enable-video-acceleration-on-linux.patch
@@ -0,0 +1,48 @@
+From b2144fd28e09cd52e7a88a62a9d9b54cf9922f9f Mon Sep 17 00:00:00 2001
+From: Michael Weiss <dev.primeos@gmail.com>
+Date: Tue, 14 Apr 2020 14:16:10 +0200
+Subject: [PATCH] Enable accelerated video decode on Linux
+
+This will enable accelerated video decode on Linux by default (i.e.
+without "--ignore-gpu-blacklist"), but on NixOS we'll provide
+"--disable-accelerated-video-decode" and
+"--disable-accelerated-video-encode" by default to avoid regressions
+(e.g. VA-API doesn't work properly for some radeon drivers).
+
+Video acceleration can then be enabled via:
+chromium.override { enableVaapi = true; }
+without rebuilding Chromium.
+---
+ gpu/config/software_rendering_list.json | 16 ----------------
+ 1 file changed, 16 deletions(-)
+
+diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json
+index 22712bdbf38f..a06dd19a50e4 100644
+--- a/gpu/config/software_rendering_list.json
++++ b/gpu/config/software_rendering_list.json
+@@ -336,22 +336,6 @@
+       ]
+     },
+     {
+-      "id": 48,
+-      "description": "Accelerated video decode is unavailable on Linux",
+-      "cr_bugs": [137247, 1032907],
+-      "os": {
+-        "type": "linux"
+-      },
+-      "exceptions": [
+-        {
+-          "machine_model_name": ["Chromecast"]
+-        }
+-      ],
+-      "features": [
+-        "accelerated_video_decode"
+-      ]
+-    },
+-    {
+       "id": 50,
+       "description": "Disable VMware software renderer on older Mesa",
+       "cr_bugs": [145531, 332596, 571899, 629434],
+-- 
+2.11.0
+
diff --git a/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/nix_plugin_paths_68.patch b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/nix_plugin_paths_68.patch
new file mode 100644
index 000000000000..da6a4c92b460
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/nix_plugin_paths_68.patch
@@ -0,0 +1,61 @@
+diff --git a/chrome/common/chrome_paths.cc b/chrome/common/chrome_paths.cc
+index f4e119d..d9775bd 100644
+--- a/chrome/common/chrome_paths.cc
++++ b/chrome/common/chrome_paths.cc
+@@ -68,21 +68,14 @@ static base::LazyInstance<base::FilePath>
+     g_invalid_specified_user_data_dir = LAZY_INSTANCE_INITIALIZER;
+ 
+ // Gets the path for internal plugins.
+-bool GetInternalPluginsDirectory(base::FilePath* result) {
+-#if defined(OS_MACOSX)
+-  // If called from Chrome, get internal plugins from a subdirectory of the
+-  // framework.
+-  if (base::mac::AmIBundled()) {
+-    *result = chrome::GetFrameworkBundlePath();
+-    DCHECK(!result->empty());
+-    *result = result->Append("Internet Plug-Ins");
+-    return true;
+-  }
+-  // In tests, just look in the module directory (below).
+-#endif
+-
+-  // The rest of the world expects plugins in the module directory.
+-  return base::PathService::Get(base::DIR_MODULE, result);
++bool GetInternalPluginsDirectory(base::FilePath* result,
++                                 const std::string& ident) {
++  std::string full_env = std::string("NIX_CHROMIUM_PLUGIN_PATH_") + ident;
++  const char* value = getenv(full_env.c_str());
++  if (value == NULL)
++      return base::PathService::Get(base::DIR_MODULE, result);
++  else
++      *result = base::FilePath(value);
+ }
+ 
+ // Gets the path for bundled implementations of components. Note that these
+@@ -272,7 +265,7 @@ bool PathProvider(int key, base::FilePath* result) {
+       create_dir = true;
+       break;
+     case chrome::DIR_INTERNAL_PLUGINS:
+-      if (!GetInternalPluginsDirectory(&cur))
++      if (!GetInternalPluginsDirectory(&cur, "ALL"))
+         return false;
+       break;
+     case chrome::DIR_COMPONENTS:
+@@ -280,7 +273,7 @@ bool PathProvider(int key, base::FilePath* result) {
+         return false;
+       break;
+     case chrome::DIR_PEPPER_FLASH_PLUGIN:
+-      if (!GetInternalPluginsDirectory(&cur))
++      if (!GetInternalPluginsDirectory(&cur, "PEPPERFLASH"))
+         return false;
+       cur = cur.Append(kPepperFlashBaseDirectory);
+       break;
+@@ -358,7 +351,7 @@ bool PathProvider(int key, base::FilePath* result) {
+         cur = cur.DirName();
+       }
+ #else
+-      if (!GetInternalPluginsDirectory(&cur))
++      if (!GetInternalPluginsDirectory(&cur, "PNACL"))
+         return false;
+ #endif
+       cur = cur.Append(FILE_PATH_LITERAL("pnacl"));
diff --git a/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/no-build-timestamps.patch b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/no-build-timestamps.patch
new file mode 100644
index 000000000000..6b788f43d29c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/no-build-timestamps.patch
@@ -0,0 +1,17 @@
+--- chromium-70.0.3538.67/build/compute_build_timestamp.py.orig	2018-11-02 16:00:34.368933077 +0200
++++ chromium-70.0.3538.67/build/compute_build_timestamp.py	2018-11-08 04:06:21.658105129 +0200
+@@ -94,6 +94,14 @@
+       'build_type', help='The type of build', choices=('official', 'default'))
+   args = argument_parser.parse_args()
+ 
++  # I don't trust LASTCHANGE magic, and I definelly want something deterministic here
++  SOURCE_DATE_EPOCH = os.getenv("SOURCE_DATE_EPOCH", None)
++  if SOURCE_DATE_EPOCH is not None:
++    print(SOURCE_DATE_EPOCH)
++    return 0
++  else:
++    raise RuntimeError("SOURCE_DATE_EPOCH not set")
++
+   # The mtime of the revision in build/util/LASTCHANGE is stored in a file
+   # next to it. Read it, to get a deterministic time close to "now".
+   # That date is then modified as described at the top of the file so that
diff --git a/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/remove-webp-include-69.patch b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/remove-webp-include-69.patch
new file mode 100644
index 000000000000..07572cf7ee94
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/remove-webp-include-69.patch
@@ -0,0 +1,11 @@
+--- a/third_party/blink/renderer/platform/image-encoders/image_encoder.cc
++++ b/third_party/blink/renderer/platform/image-encoders/image_encoder.cc
+@@ -13,7 +13,7 @@
+
+ #include "jpeglib.h"  // for JPEG_MAX_DIMENSION
+
+-#include "third_party/libwebp/src/webp/encode.h"  // for WEBP_MAX_DIMENSION
++#define WEBP_MAX_DIMENSION 16383
+
+ namespace blink {
+
diff --git a/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/widevine-79.patch b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/widevine-79.patch
new file mode 100644
index 000000000000..32f0ae2fb5e6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/widevine-79.patch
@@ -0,0 +1,13 @@
+diff --git a/third_party/widevine/cdm/BUILD.gn b/third_party/widevine/cdm/BUILD.gn
+index ed0e2f5208b..5b431a030d5 100644
+--- a/third_party/widevine/cdm/BUILD.gn
++++ b/third_party/widevine/cdm/BUILD.gn
+@@ -14,7 +14,7 @@ buildflag_header("buildflags") {
+ 
+   flags = [
+     "ENABLE_WIDEVINE=$enable_widevine",
+-    "BUNDLE_WIDEVINE_CDM=$bundle_widevine_cdm",
++    "BUNDLE_WIDEVINE_CDM=true",
+     "ENABLE_WIDEVINE_CDM_COMPONENT=$enable_widevine_cdm_component",
+   ]
+ }
diff --git a/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/plugins.nix b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/plugins.nix
new file mode 100644
index 000000000000..d45a3c9f864a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/plugins.nix
@@ -0,0 +1,93 @@
+{ stdenv, gcc
+, jshon
+, glib
+, nspr
+, nss
+, fetchzip
+, patchelfUnstable
+, enablePepperFlash ? false
+
+, upstream-info
+}:
+
+with stdenv.lib;
+
+let
+  mkrpath = p: "${makeSearchPathOutput "lib" "lib64" p}:${makeLibraryPath p}";
+
+  # Generate a shell fragment that emits flags appended to the
+  # final makeWrapper call for wrapping the browser's main binary.
+  #
+  # Note that this is shell-escaped so that only the variable specified
+  # by the "output" attribute is substituted.
+  mkPluginInfo = { output ? "out", allowedVars ? [ output ]
+                 , flags ? [], envVars ? {}
+                 }: let
+    shSearch = ["'"] ++ map (var: "@${var}@") allowedVars;
+    shReplace = ["'\\''"] ++ map (var: "'\"\${${var}}\"'") allowedVars;
+    # We need to triple-escape "val":
+    #  * First because makeWrapper doesn't do any quoting of its arguments by
+    #    itself.
+    #  * Second because it's passed to the makeWrapper call separated by IFS but
+    #    not by the _real_ arguments, for example the Widevine plugin flags
+    #    contain spaces, so they would end up as separate arguments.
+    #  * Third in order to be correctly quoted for the "echo" call below.
+    shEsc = val: "'${replaceStrings ["'"] ["'\\''"] val}'";
+    mkSh = val: "'${replaceStrings shSearch shReplace (shEsc val)}'";
+    mkFlag = flag: ["--add-flags" (shEsc flag)];
+    mkEnvVar = key: val: ["--set" (shEsc key) (shEsc val)];
+    envList = mapAttrsToList mkEnvVar envVars;
+    quoted = map mkSh (flatten ((map mkFlag flags) ++ envList));
+  in ''
+    mkdir -p "''$${output}/nix-support"
+    echo ${toString quoted} > "''$${output}/nix-support/wrapper-flags"
+  '';
+
+  flash = stdenv.mkDerivation rec {
+    pname = "flashplayer-ppapi";
+    version = "32.0.0.371";
+
+    src = fetchzip {
+      url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
+      sha256 = "1nks2wx74b21hv0l7bnrzkxn7c6p6r8zgwbqvy3cqpi8famyr5v9";
+      stripRoot = false;
+    };
+
+    patchPhase = ''
+      chmod +x libpepflashplayer.so
+      patchelf --set-rpath "${mkrpath [ gcc.cc ]}" libpepflashplayer.so
+    '';
+
+    doCheck = true;
+    checkPhase = ''
+      ! find -iname '*.so' -exec ldd {} + | grep 'not found'
+    '';
+
+    installPhase = ''
+      flashVersion="$(
+        "${jshon}/bin/jshon" -F manifest.json -e version -u
+      )"
+
+      install -vD libpepflashplayer.so "$out/lib/libpepflashplayer.so"
+
+      ${mkPluginInfo {
+        allowedVars = [ "out" "flashVersion" ];
+        flags = [
+          "--ppapi-flash-path=@out@/lib/libpepflashplayer.so"
+          "--ppapi-flash-version=@flashVersion@"
+        ];
+      }}
+    '';
+
+    dontStrip = true;
+
+    meta = {
+      license = stdenv.lib.licenses.unfree;
+      maintainers = with stdenv.lib.maintainers; [ taku0 ];
+      platforms = platforms.x86_64;
+    };
+  };
+
+in {
+  enabled = optional enablePepperFlash flash;
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled-src.nix b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled-src.nix
new file mode 100644
index 000000000000..c393f7fe28ec
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled-src.nix
@@ -0,0 +1,6 @@
+{
+  "81.0.4044.138" = {
+    rev = "81.0.4044.138-1";
+    sha256 = "1qa5lw2psaqxr2zklaldx4sm6by4gsw3mfrp01ijc4kkp9jmvg7r";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled.nix b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled.nix
new file mode 100644
index 000000000000..17418c90af49
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled.nix
@@ -0,0 +1,42 @@
+{ stdenv
+, fetchFromGitHub
+, python3Packages
+, makeWrapper
+, patch
+}:
+{ rev
+, sha256
+}:
+
+stdenv.mkDerivation rec {
+  name = "ungoogled-chromium-${version}";
+
+  version = rev;
+
+  src = fetchFromGitHub {
+    owner = "Eloston";
+    repo = "ungoogled-chromium";
+    inherit rev sha256;
+  };
+
+  dontBuild = true;
+
+  buildInputs = [
+    python3Packages.python
+    patch
+  ];
+
+  nativeBuildInputs = [
+    makeWrapper
+  ];
+
+  patchPhase = ''
+    sed -i '/chromium-widevine/d' patches/series
+  '';
+
+  installPhase = ''
+    mkdir $out
+    cp -R * $out/
+    wrapProgram $out/utils/patches.py --add-flags "apply" --prefix PATH : "${patch}/bin"
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/update.nix b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/update.nix
new file mode 100644
index 000000000000..6dff17c69ddb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/update.nix
@@ -0,0 +1,271 @@
+let maybePkgs = import ../../../../../. {}; in
+
+{ stdenv     ? maybePkgs.stdenv
+, runCommand ? maybePkgs.runCommand
+, fetchurl   ? maybePkgs.fetchurl
+, writeText  ? maybePkgs.writeText
+, curl       ? maybePkgs.curl
+, cacert     ? maybePkgs.cacert
+, nix        ? maybePkgs.nix
+}:
+
+let
+  inherit (stdenv) lib;
+
+  sources = if builtins.pathExists ./upstream-info.nix
+            then import ./upstream-info.nix
+            else {};
+
+  bucketURL = "https://commondatastorage.googleapis.com/"
+            + "chromium-browser-official";
+
+  mkVerURL = version: "${bucketURL}/chromium-${version}.tar.xz";
+
+  debURL = "https://dl.google.com/linux/chrome/deb/pool/main/g";
+
+  getDebURL = channelName: version: arch: mirror: let
+    packageSuffix = if channelName == "dev" then "unstable" else channelName;
+    packageName = "google-chrome-${packageSuffix}";
+  in "${mirror}/${packageName}/${packageName}_${version}-1_${arch}.deb";
+
+  # Untrusted mirrors, don't try to update from them!
+  debMirrors = [
+    "http://95.31.35.30/chrome/pool/main/g"
+    "http://mirror.pcbeta.com/google/chrome/deb/pool/main/g"
+    "http://repo.fdzh.org/chrome/deb/pool/main/g"
+  ];
+
+in {
+  getChannel = channel: let
+    chanAttrs = builtins.getAttr channel sources;
+  in {
+    inherit channel;
+    inherit (chanAttrs) version;
+
+    main = fetchurl {
+      url = mkVerURL chanAttrs.version;
+      inherit (chanAttrs) sha256;
+    };
+
+    binary = fetchurl (let
+      mkUrls = arch: let
+        mkURLForMirror = getDebURL channel chanAttrs.version arch;
+      in map mkURLForMirror ([ debURL ] ++ debMirrors);
+    in if stdenv.is64bit && chanAttrs ? sha256bin64 then {
+      urls = mkUrls "amd64";
+      sha256 = chanAttrs.sha256bin64;
+    } else if !stdenv.is64bit && chanAttrs ? sha256bin32 then {
+      urls = mkUrls "i386";
+      sha256 = chanAttrs.sha256bin32;
+    } else throw "No Chrome plugins are available for your architecture.");
+  };
+
+  update = let
+    csv2nix = name: src: import (runCommand "${name}.nix" {
+      src = builtins.fetchurl src;
+    } ''
+      esc() { echo "\"$(echo "$1" | sed -e 's/"\\$/\\&/')\""; } # ohai emacs "
+      IFS=, read -r -a headings <<< "$(head -n1 "$src")"
+      echo "[" > "$out"
+      tail -n +2 "$src" | while IFS=, read -r -a line; do
+        echo "  {"
+        for idx in "''${!headings[@]}"; do
+          echo "    $(esc "''${headings[idx]}") = $(esc ''${line[$idx]});"
+        done
+        echo "  }"
+      done >> "$out"
+      echo "]" >> "$out"
+    '');
+
+    channels = lib.fold lib.recursiveUpdate {} (map (attrs: {
+      ${attrs.os}.${attrs.channel} = attrs // {
+        history = let
+          drvName = "omahaproxy-${attrs.os}.${attrs.channel}-info";
+          history = csv2nix drvName "http://omahaproxy.appspot.com/history";
+          cond = h: attrs.os == h.os && attrs.channel == h.channel
+                 && lib.versionOlder h.version attrs.current_version;
+          # Note that this is a *reverse* sort!
+          sorter = a: b: lib.versionOlder b.version a.version;
+          sorted = builtins.sort sorter (lib.filter cond history);
+        in map (lib.flip removeAttrs ["os" "channel"]) sorted;
+        version = attrs.current_version;
+      };
+    }) (csv2nix "omahaproxy-info" "http://omahaproxy.appspot.com/all?csv=1"));
+
+    /*
+      XXX: This is essentially the same as:
+
+        builtins.tryEval (builtins.fetchurl url)
+
+      ... except that tryEval on fetchurl isn't working and doesn't catch
+      errors for fetchurl, so we go for a different approach.
+
+      We only have fixed-output derivations that can have networking access, so
+      we abuse SHA1 and its weaknesses to forge a fixed-output derivation which
+      is not so fixed, because it emits different contents that have the same
+      SHA1 hash.
+
+      Using this method, we can distinguish whether the URL is available or
+      whether it's not based on the actual content.
+
+      So let's use tryEval as soon as it's working with fetchurl in Nix.
+    */
+    tryFetch = url: let
+      # SHA1 hash collisions from https://shattered.io/static/shattered.pdf:
+      collisions = runCommand "sha1-collisions" {
+        outputs = [ "out" "good" "bad" ];
+        base64 = ''
+          QlpoOTFBWSZTWbL5V5MABl///////9Pv///v////+/////HDdK739/677r+W3/75rUNr4
+          Aa/AAAAAAACgEVTRtQDQAaA0AAyGmjTQGmgAAANGgAaMIAYgGgAABo0AAAAAADQAIAGQ0
+          MgDIGmjQA0DRk0AaMQ0DQAGIANGgAAGRoNGQMRpo0GIGgBoGQAAIAGQ0MgDIGmjQA0DRk
+          0AaMQ0DQAGIANGgAAGRoNGQMRpo0GIGgBoGQAAIAGQ0MgDIGmjQA0DRk0AaMQ0DQAGIAN
+          GgAAGRoNGQMRpo0GIGgBoGQAAIAGQ0MgDIGmjQA0DRk0AaMQ0DQAGIANGgAAGRoNGQMRp
+          o0GIGgBoGQAABVTUExEZATTICnkxNR+p6E09JppoyamjGhkm0ammIyaekbUejU9JiGnqZ
+          qaaDxJ6m0JkZMQ2oaYmJ6gxqMyE2TUzJqfItligtJQJfYbl9Zy9QjQuB5mHQRdSSXCCTH
+          MgmSDYmdOoOmLTBJWiCpOhMQYpQlOYpJjn+wQUJSTCEpOMekaFaaNB6glCC0hKEJdHr6B
+          mUIHeph7YxS8WJYyGwgWnMTFJBDFSxSCCYljiEk7HZgJzJVDHJxMgY6tCEIIWgsKSlSZ0
+          S8GckoIIF+551Ro4RCw260VCEpWJSlpWx/PMrLyVoyhWMAneDilBcUIeZ1j6NCkus0qUC
+          Wnahhk5KT4GpWMh3vm2nJWjTL9Qg+84iExBJhNKpbV9tvEN265t3fu/TKkt4rXFTsV+Nc
+          upJXhOhOhJMQQktrqt4K8mSh9M2DAO2X7uXGVL9YQxUtzQmS7uBndL7M6R7vX869VxqPu
+          renSuHYNq1yTXOfNWLwgvKlRlFYqLCs6OChDp0HuTzCWscmGudLyqUuwVGG75nmyZhKpJ
+          yOE/pOZyHyrZxGM51DYIN+Jc8yVJgAykxKCEtW55MlfudLg3KG6TtozalunXrroSxUpVL
+          StWrWLFihMnVpkyZOrQnUrE6xq1CGtJlbAb5ShMbV1CZgqlKC0wCFCpMmUKSEkvFLaZC8
+          wHOCVAlvzaJQ/T+XLb5Dh5TNM67p6KZ4e4ZSGyVENx2O27LzrTIteAreTkMZpW95GS0CE
+          JYhMc4nToTJ0wQhKEyddaLb/rTqmgJSlkpnALxMhlNmuKEpkEkqhKUoEq3SoKUpIQcDgW
+          lC0rYahMmLuPQ0fHqZaF4v2W8IoJ2EhMhYmSw7qql27WJS+G4rUplToFi2rSv0NSrVvDU
+          pltQ8Lv6F8pXyxmFBSxiLSxglNC4uvXVKmAtusXy4YXGX1ixedEvXF1aX6t8adYnYCpC6
+          rW1ZzdZYlCCxKEv8vpbqdSsXl8v1jCQv0KEPxPTa/5rtWSF1dSgg4z4KjfIMNtgwWoWLE
+          sRhKxsSA9ji7V5LRPwtumeQ8V57UtFSPIUmtQdOQfseI2Ly1DMtk4Jl8n927w34zrWG6P
+          i4jzC82js/46Rt2IZoadWxOtMInS2xYmcu8mOw9PLYxQ4bdfFw3ZPf/g2pzSwZDhGrZAl
+          9lqky0W+yeanadC037xk496t0Dq3ctfmqmjgie8ln9k6Q0K1krb3dK9el4Xsu44LpGcen
+          r2eQZ1s1IhOhnE56WnXf0BLWn9Xz15fMkzi4kpVxiTKGEpffErEEMvEeMZhUl6yD1SdeJ
+          YbxzGNM3ak2TAaglLZlDCVnoM6wV5DRrycwF8Zh/fRsdmhkMfAO1duwknrsFwrzePWeMw
+          l107DWzymxdQwiSXx/lncnn75jL9mUzw2bUDqj20LTgtawxK2SlQg1CCZDQMgSpEqLjRM
+          sykM9zbSIUqil0zNk7Nu+b5J0DKZlhl9CtpGKgX5uyp0idoJ3we9bSrY7PupnUL5eWiDp
+          V5mmnNUhOnYi8xyClkLbNmAXyoWk7GaVrM2umkbpqHDzDymiKjetgzTocWNsJ2E0zPcfh
+          t46J4ipaXGCfF7fuO0a70c82bvqo3HceIcRlshgu73seO8BqlLIap2z5jTOY+T2ucCnBt
+          Atva3aHdchJg9AJ5YdKHz7LoA3VKmeqxAlFyEnQLBxB2PAhAZ8KvmuR6ELXws1Qr13Nd1
+          i4nsp189jqvaNzt+0nEnIaniuP1+/UOZdyfoZh57ku8sYHKdvfW/jYSUks+0rK+qtte+p
+          y8jWL9cOJ0fV8rrH/t+85/p1z2N67p/ZsZ3JmdyliL7lrNxZUlx0MVIl6PxXOUuGOeArW
+          3vuEvJ2beoh7SGyZKHKbR2bBWO1d49JDIcVM6lQtu9UO8ec8pOnXmkcponBPLNM2CwZ9k
+          NC/4ct6rQkPkQHMcV/8XckU4UJCy+VeTA==
+        '';
+      } ''
+        echo "$base64" | base64 -d | tar xj
+        mv good.pdf "$good"
+        mv bad.pdf "$bad"
+        touch "$out"
+      '';
+
+      cacheVal = let
+        urlHash = builtins.hashString "sha256" url;
+        timeSlice = builtins.currentTime / 600;
+      in "${urlHash}-${toString timeSlice}";
+
+    in {
+      success = import (runCommand "check-success" {
+        result = stdenv.mkDerivation {
+          name = "tryfetch-${cacheVal}";
+          inherit url;
+
+          outputHash = "d00bbe65d80f6d53d5c15da7c6b4f0a655c5a86a";
+          outputHashMode = "flat";
+          outputHashAlgo = "sha1";
+
+          nativeBuildInputs = [ curl ];
+          preferLocalBuild = true;
+
+          inherit (collisions) good bad;
+
+          buildCommand = ''
+            if SSL_CERT_FILE="${cacert}/etc/ssl/certs/ca-bundle.crt" \
+               curl -s -L -f -I "$url" > /dev/null; then
+              cp "$good" "$out"
+            else
+              cp "$bad" "$out"
+            fi
+          '';
+
+          impureEnvVars = lib.fetchers.proxyImpureEnvVars;
+        };
+        inherit (collisions) good;
+      } ''
+        if cmp -s "$result" "$good"; then
+          echo true > "$out"
+        else
+          echo false > "$out"
+        fi
+      '');
+      value = builtins.fetchurl url;
+    };
+
+    fetchLatest = channel: let
+      result = tryFetch (mkVerURL channel.version);
+    in if result.success then result.value else fetchLatest (channel // {
+      version = if channel.history != []
+                then (lib.head channel.history).version
+                else throw "Unfortunately there's no older version than " +
+                           "${channel.version} available for channel " +
+                           "${channel.channel} on ${channel.os}.";
+      history = lib.tail channel.history;
+    });
+
+    getHash = path: import (runCommand "gethash.nix" {
+      inherit path;
+      nativeBuildInputs = [ nix ];
+    } ''
+      sha256="$(nix-hash --flat --base32 --type sha256 "$path")"
+      echo "\"$sha256\"" > "$out"
+    '');
+
+    isLatest = channel: version: let
+      ourVersion = sources.${channel}.version or null;
+    in if ourVersion == null then false
+       else lib.versionOlder version sources.${channel}.version
+         || version == sources.${channel}.version;
+
+    # We only support GNU/Linux right now.
+    linuxChannels = let
+      genLatest = channelName: channel: let
+        newUpstream = {
+          inherit (channel) version;
+          sha256 = getHash (fetchLatest channel);
+        };
+        keepOld = let
+          oldChannel = sources.${channelName};
+        in {
+          inherit (oldChannel) version sha256;
+        } // lib.optionalAttrs (oldChannel ? sha256bin32) {
+          inherit (oldChannel) sha256bin32;
+        } // lib.optionalAttrs (oldChannel ? sha256bin64) {
+          inherit (oldChannel) sha256bin64;
+        };
+      in if isLatest channelName channel.version then keepOld else newUpstream;
+    in lib.mapAttrs genLatest channels.linux;
+
+    getLinuxFlash = channelName: channel: let
+      inherit (channel) version;
+      fetchArch = arch: tryFetch (getDebURL channelName version arch debURL);
+      packages = lib.genAttrs ["i386" "amd64"] fetchArch;
+      isNew = arch: attr: !(builtins.hasAttr attr channel)
+                       && packages.${arch}.success;
+    in channel // lib.optionalAttrs (isNew "i386" "sha256bin32") {
+      sha256bin32 = getHash (packages.i386.value);
+    } // lib.optionalAttrs (isNew "amd64" "sha256bin64") {
+      sha256bin64 = getHash (packages.amd64.value);
+    };
+
+    newChannels = lib.mapAttrs getLinuxFlash linuxChannels;
+
+    dumpAttrs = indent: attrs: let
+      mkVal = val: if lib.isAttrs val then dumpAttrs (indent + 1) val
+                   else "\"${lib.escape ["$" "\\" "\""] (toString val)}\"";
+      mkIndent = level: lib.concatStrings (builtins.genList (_: "  ") level);
+      mkAttr = key: val: "${mkIndent (indent + 1)}${key} = ${mkVal val};\n";
+      attrLines = lib.mapAttrsToList mkAttr attrs;
+    in "{\n" + (lib.concatStrings attrLines) + (mkIndent indent) + "}";
+  in writeText "chromium-new-upstream-info.nix" ''
+    # This file is autogenerated from update.sh in the same directory.
+    ${dumpAttrs 0 newChannels}
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/update.sh b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/update.sh
new file mode 100755
index 000000000000..ea67a62c107a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/update.sh
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+cd "$(dirname "$0")"
+sp="$(nix-build --builders "" -Q --no-out-link update.nix -A update)"
+cat "$sp" > upstream-info.nix
diff --git a/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/upstream-info.nix b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/upstream-info.nix
new file mode 100644
index 000000000000..defb58822a03
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/upstream-info.nix
@@ -0,0 +1,18 @@
+# This file is autogenerated from update.sh in the same directory.
+{
+  beta = {
+    sha256 = "0z9p4v5mkinf7hbdagh4bz6ymqjxg3df3wjpvm201ilzzngmjqz1";
+    sha256bin64 = "1srvlirhnynh0q2a17p8z13p7r54z0cchh1d1h07hqljnwmsf8qj";
+    version = "83.0.4103.34";
+  };
+  dev = {
+    sha256 = "178fc112bsbrgj2hss78y8rhnz8hl85fr33gawk9fz88zk5qz7xd";
+    sha256bin64 = "06qra245l2bbgxc3k04aabkgq1qnzybnrjhrjb25vriv31ji36b1";
+    version = "84.0.4128.3";
+  };
+  stable = {
+    sha256 = "19kpzmqmld0m0nflx13w9flxfal19msnxhzl3lip1jqih65z4y7l";
+    sha256bin64 = "0sl4wv7npc3rhi7jgn679hi7j5ykzwpx5dahy78h87yfg4fx84wx";
+    version = "81.0.4044.138";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/vimb/default.nix b/nixpkgs/pkgs/applications/networking/browsers/vimb/default.nix
new file mode 100644
index 000000000000..099d81c99f80
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/vimb/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, pkgconfig, libsoup, webkitgtk, gtk3, glib-networking
+, gsettings-desktop-schemas, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "vimb";
+  version = "3.3.0";
+
+  src = fetchFromGitHub {
+    owner = "fanglingsu";
+    repo = "vimb";
+    rev = version;
+    sha256 = "1qg18z2gnsli9qgrqfhqfrsi6g9mcgr90w8yab28nxrq4aha6brf";
+  };
+
+  nativeBuildInputs = [ wrapGAppsHook pkgconfig ];
+  buildInputs = [ gtk3 libsoup webkitgtk glib-networking gsettings-desktop-schemas ];
+
+  makeFlags = [ "PREFIX=${placeholder "out"}" ];
+
+  meta = {
+    description = "A Vim-like browser";
+    longDescription = ''
+      A fast and lightweight vim like web browser based on the webkit web
+      browser engine and the GTK toolkit. Vimb is modal like the great vim
+      editor and also easily configurable during runtime. Vimb is mostly
+      keyboard driven and does not detract you from your daily work.
+    '';
+    homepage = "https://fanglingsu.github.io/vimb/";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/vivaldi/default.nix b/nixpkgs/pkgs/applications/networking/browsers/vivaldi/default.nix
new file mode 100644
index 000000000000..248980e5b2b1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/vivaldi/default.nix
@@ -0,0 +1,96 @@
+{ stdenv, fetchurl, zlib, libX11, libXext, libSM, libICE
+, libXfixes, libXt, libXi, libXcursor, libXScrnSaver, libXcomposite, libXdamage, libXtst, libXrandr
+, alsaLib, dbus, cups, libexif, ffmpeg_3, systemd
+, freetype, fontconfig, libXft, libXrender, libxcb, expat
+, libuuid
+, gstreamer, gst-plugins-base, libxml2
+, glib, gtk3, pango, gdk-pixbuf, cairo, atk, at-spi2-atk, at-spi2-core, gnome2
+, libdrm, mesa
+, nss, nspr
+, patchelf, makeWrapper
+, isSnapshot ? false
+, proprietaryCodecs ? false, vivaldi-ffmpeg-codecs ? null
+, enableWidevine ? false, vivaldi-widevine ? null
+}:
+
+let
+  branch = if isSnapshot then "snapshot" else "stable";
+  vivaldiName = if isSnapshot then "vivaldi-snapshot" else "vivaldi";
+in stdenv.mkDerivation rec {
+  pname = "vivaldi";
+  version = "3.0.1874.38-1";
+
+  src = fetchurl {
+    url = "https://downloads.vivaldi.com/${branch}/vivaldi-${branch}_${version}_amd64.deb";
+    sha256 = "03667f8rlk8shxq6ghjg4q9hqhsaw4gwpqnjpyili49qczd5423w";
+  };
+
+  unpackPhase = ''
+    ar vx $src
+    tar -xvf data.tar.xz
+  '';
+
+  nativeBuildInputs = [ patchelf makeWrapper ];
+
+  buildInputs = [
+    stdenv.cc.cc stdenv.cc.libc zlib libX11 libXt libXext libSM libICE libxcb
+    libXi libXft libXcursor libXfixes libXScrnSaver libXcomposite libXdamage libXtst libXrandr
+    atk at-spi2-atk at-spi2-core alsaLib dbus cups gtk3 gdk-pixbuf libexif ffmpeg_3 systemd
+    freetype fontconfig libXrender libuuid expat glib nss nspr
+    gstreamer libxml2 gst-plugins-base pango cairo gnome2.GConf
+    libdrm mesa
+  ] ++ stdenv.lib.optional proprietaryCodecs vivaldi-ffmpeg-codecs;
+
+  libPath = stdenv.lib.makeLibraryPath buildInputs
+    + stdenv.lib.optionalString (stdenv.is64bit)
+      (":" + stdenv.lib.makeSearchPathOutput "lib" "lib64" buildInputs)
+    + ":$out/opt/${vivaldiName}/lib";
+
+  buildPhase = ''
+    echo "Patching Vivaldi binaries"
+    patchelf \
+      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${libPath}" \
+      opt/${vivaldiName}/vivaldi-bin
+  '' + stdenv.lib.optionalString proprietaryCodecs ''
+    ln -s ${vivaldi-ffmpeg-codecs}/lib/libffmpeg.so opt/${vivaldiName}/libffmpeg.so.''${version%\.*\.*}
+  '' + ''
+    echo "Finished patching Vivaldi binaries"
+  '';
+
+  dontPatchELF = true;
+  dontStrip    = true;
+
+  installPhase = ''
+    mkdir -p "$out"
+    cp -r opt "$out"
+    mkdir "$out/bin"
+    ln -s "$out/opt/${vivaldiName}/${vivaldiName}" "$out/bin/vivaldi"
+    mkdir -p "$out/share"
+    cp -r usr/share/{applications,xfce4} "$out"/share
+    substituteInPlace "$out"/share/applications/*.desktop \
+      --replace /usr/bin/${vivaldiName} "$out"/bin/vivaldi
+    substituteInPlace "$out"/share/applications/*.desktop \
+      --replace vivaldi-stable vivaldi
+    local d
+    for d in 16 22 24 32 48 64 128 256; do
+      mkdir -p "$out"/share/icons/hicolor/''${d}x''${d}/apps
+      ln -s \
+        "$out"/opt/${vivaldiName}/product_logo_''${d}.png \
+        "$out"/share/icons/hicolor/''${d}x''${d}/apps/vivaldi.png
+    done
+    wrapProgram "$out/bin/vivaldi" \
+      --suffix XDG_DATA_DIRS : ${gtk3}/share/gsettings-schemas/${gtk3.name}/ \
+      ${stdenv.lib.optionalString enableWidevine "--suffix LD_LIBRARY_PATH : ${libPath}"}
+  '' + stdenv.lib.optionalString enableWidevine ''
+    ln -sf ${vivaldi-widevine}/share/google/chrome/WidevineCdm $out/opt/${vivaldiName}/WidevineCdm
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A Browser for our Friends, powerful and personal";
+    homepage    = "https://vivaldi.com";
+    license     = licenses.unfree;
+    maintainers = with maintainers; [ otwieracz nequissimus ];
+    platforms   = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix b/nixpkgs/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix
new file mode 100644
index 000000000000..2643bd3e58d9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl
+, dpkg
+}:
+
+stdenv.mkDerivation rec {
+  name = "chromium-codecs-ffmpeg";
+  version = "78.0.3904.70";
+
+  src = fetchurl {
+    url = "https://launchpadlibrarian.net/449403909/${name}-extra_${version}-0ubuntu0.16.04.2_amd64.deb";
+    sha256 = "00j604nm49z6hbyw7xsxcvmdjf7117kb478plkpizzvmm3w72b9v";
+  };
+
+  buildInputs = [ dpkg ];
+
+  unpackPhase = ''
+    dpkg-deb -x $src .
+    find .
+  '';
+
+  installPhase = ''
+    install -vD usr/lib/chromium-browser/libffmpeg.so $out/lib/libffmpeg.so
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Additional support for proprietary codecs for Vivaldi";
+    homepage    = "https://ffmpeg.org/";
+    license     = licenses.lgpl21;
+    maintainers = with maintainers; [ betaboon lluchs ];
+    platforms   = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/vivaldi/update.sh b/nixpkgs/pkgs/applications/networking/browsers/vivaldi/update.sh
new file mode 100755
index 000000000000..2e6c2853eb14
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/vivaldi/update.sh
@@ -0,0 +1,46 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p libarchive curl common-updater-scripts
+
+set -eu -o pipefail
+
+cd "$(dirname "${BASH_SOURCE[0]}")"
+root=../../../../..
+export NIXPKGS_ALLOW_UNFREE=1
+
+version() {
+  (cd "$root" && nix-instantiate --eval --strict -A "$1.version" | tr -d '"')
+}
+
+vivaldi_version_old=$(version vivaldi)
+vivaldi_version=$(curl -sS https://vivaldi.com/download/ | sed -rne 's/.*vivaldi-stable_([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+-[0-9]+)_amd64\.deb.*/\1/p')
+
+if [[ "$vivaldi_version" = "$vivaldi_version_old" ]]; then
+  echo "vivaldi is already up-to-date"
+  exit
+fi
+
+# Download vivaldi and save hash and file path.
+url="https://downloads.vivaldi.com/stable/vivaldi-stable_${vivaldi_version}_amd64.deb"
+mapfile -t prefetch < <(nix-prefetch-url --print-path "$url")
+hash=${prefetch[0]}
+path=${prefetch[1]}
+
+nixpkgs="$(git rev-parse --show-toplevel)"
+default_nix="$nixpkgs/pkgs/applications/networking/browsers/vivaldi/default.nix"
+ffmpeg_nix="$nixpkgs/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix"
+
+(cd "$root" && update-source-version vivaldi "$vivaldi_version" "$hash")
+
+git add "${default_nix}"
+git commit -m "vivaldi: ${vivaldi_version_old} -> ${vivaldi_version}"
+
+# Check vivaldi-ffmpeg-codecs version.
+chromium_version_old=$(version vivaldi-ffmpeg-codecs)
+chromium_version=$(bsdtar xOf "$path" data.tar.xz | bsdtar xOf - ./opt/vivaldi/vivaldi-bin | strings | grep '^[0-9]\{2,\}\.[0-9]\+\.[0-9]\{4,\}\+\.[0-9]\+$')
+
+if [[ "$chromium_version" != "$chromium_version_old" ]]; then
+  (cd "$root" && update-source-version vivaldi-ffmpeg-codecs "$chromium_version")
+
+  git add "${ffmpeg_nix}"
+  git commit -m "vivaldi-ffmepg-codecs: $chromium_version_old -> $chromium_version"
+fi
diff --git a/nixpkgs/pkgs/applications/networking/browsers/vivaldi/widevine.nix b/nixpkgs/pkgs/applications/networking/browsers/vivaldi/widevine.nix
new file mode 100644
index 000000000000..6e807aac5df6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/vivaldi/widevine.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl
+, unzip
+}:
+
+stdenv.mkDerivation rec {
+  name = "widevine";
+  version = "4.10.1582.1";
+
+  src = fetchurl {
+    url = "https://dl.google.com/widevine-cdm/${version}-linux-x64.zip";
+    sha256 = "0l743f2yyaq1vvc3iicajgnfpjxjsfvjcqvanndbxs23skgjcv6r";
+  };
+
+  buildInputs = [ unzip ];
+
+  unpackPhase = ''
+    unzip $src
+  '';
+
+  installPhase = ''
+    install -vD manifest.json $out/share/google/chrome/WidevineCdm/manifest.json
+    install -vD LICENSE.txt $out/share/google/chrome/WidevineCdm/LICENSE.txt
+    install -vD libwidevinecdm.so $out/share/google/chrome/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Widevine support for Vivaldi";
+    homepage = "https://www.widevine.com";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ betaboon ];
+    platforms   = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/w3m/RAND_egd.libressl.patch b/nixpkgs/pkgs/applications/networking/browsers/w3m/RAND_egd.libressl.patch
new file mode 100644
index 000000000000..49dd417d1c39
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/w3m/RAND_egd.libressl.patch
@@ -0,0 +1,11 @@
+--- a/url.c  2014-07-14 12:31:30.476563116 +0200
++++ b/url.c   2014-07-14 12:32:16.364918248 +0200
+@@ -268,7 +268,7 @@ init_PRNG()
+     if (RAND_status())
+ 	return;
+     if ((file = RAND_file_name(buffer, sizeof(buffer)))) {
+-#ifdef USE_EGD
++#if defined(USE_EGD) && defined(HAVE_SSL_RAND_EGD)
+ 	if (RAND_egd(file) > 0)
+ 	    return;
+ #endif
diff --git a/nixpkgs/pkgs/applications/networking/browsers/w3m/default.nix b/nixpkgs/pkgs/applications/networking/browsers/w3m/default.nix
new file mode 100644
index 000000000000..a15d6844f56d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/w3m/default.nix
@@ -0,0 +1,100 @@
+{ stdenv, fetchFromGitHub, fetchpatch
+, ncurses, boehmgc, gettext, zlib
+, sslSupport ? true, openssl ? null
+, graphicsSupport ? !stdenv.isDarwin, imlib2 ? null
+, x11Support ? graphicsSupport, libX11 ? null
+, mouseSupport ? !stdenv.isDarwin, gpm-ncurses ? null
+, perl, man, pkgconfig, buildPackages, w3m
+}:
+
+assert sslSupport -> openssl != null;
+assert graphicsSupport -> imlib2 != null;
+assert x11Support -> graphicsSupport && libX11 != null;
+assert mouseSupport -> gpm-ncurses != null;
+
+with stdenv.lib;
+
+let
+  mktable = buildPackages.stdenv.mkDerivation {
+    name = "w3m-mktable";
+    inherit (w3m) src;
+    nativeBuildInputs = [ pkgconfig boehmgc ];
+    makeFlags = [ "mktable" ];
+    installPhase = ''
+      install -D mktable $out/bin/mktable
+    '';
+  };
+in stdenv.mkDerivation rec {
+  pname = "w3m";
+  version = "0.5.3+git20190105";
+
+  src = fetchFromGitHub {
+    owner = "tats";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1fbg2p8qh2gvi3g4iz4q6vc0k70pf248r4yndi5lcn2m3mzvjx0i";
+  };
+
+  NIX_LDFLAGS = optionalString stdenv.isSunOS "-lsocket -lnsl";
+
+  # we must set these so that the generated files (e.g. w3mhelp.cgi) contain
+  # the correct paths.
+  PERL = "${perl}/bin/perl";
+  MAN = "${man}/bin/man";
+
+  makeFlags = [ "AR=${stdenv.cc.bintools.targetPrefix}ar" ];
+
+  patches = [
+    ./RAND_egd.libressl.patch
+    (fetchpatch {
+      name = "https.patch";
+      url = "https://aur.archlinux.org/cgit/aur.git/plain/https.patch?h=w3m-mouse&id=5b5f0fbb59f674575e87dd368fed834641c35f03";
+      sha256 = "08skvaha1hjyapsh8zw5dgfy433mw2hk7qy9yy9avn8rjqj7kjxk";
+    })
+  ] ++ optional (graphicsSupport && !x11Support) [ ./no-x11.patch ];
+
+  postPatch = optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
+    ln -s ${mktable}/bin/mktable mktable
+    # stop make from recompiling mktable
+    sed -ie 's!mktable.*:.*!mktable:!' Makefile.in
+  '';
+
+  nativeBuildInputs = [ pkgconfig gettext ];
+  buildInputs = [ ncurses boehmgc zlib ]
+    ++ optional sslSupport openssl
+    ++ optional mouseSupport gpm-ncurses
+    ++ optional graphicsSupport imlib2
+    ++ optional x11Support libX11;
+
+  postInstall = optionalString graphicsSupport ''
+    ln -s $out/libexec/w3m/w3mimgdisplay $out/bin
+  '';
+
+  hardeningDisable = [ "format" ];
+
+  configureFlags =
+    [ "--with-ssl=${openssl.dev}" "--with-gc=${boehmgc.dev}" ]
+    ++ optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
+      "ac_cv_func_setpgrp_void=yes"
+    ]
+    ++ optional graphicsSupport "--enable-image=${optionalString x11Support "x11,"}fb";
+
+  preConfigure = ''
+    substituteInPlace ./configure --replace "/lib /usr/lib /usr/local/lib /usr/ucblib /usr/ccslib /usr/ccs/lib /lib64 /usr/lib64" /no-such-path
+    substituteInPlace ./configure --replace /usr /no-such-path
+  '';
+
+  enableParallelBuilding = false;
+
+  # for w3mimgdisplay
+  # see: https://bbs.archlinux.org/viewtopic.php?id=196093
+  LIBS = optionalString x11Support "-lX11";
+
+  meta = {
+    homepage = "http://w3m.sourceforge.net/";
+    description = "A text-mode web browser";
+    maintainers = [ maintainers.cstrahan ];
+    platforms = stdenv.lib.platforms.unix;
+    license = stdenv.lib.licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/w3m/no-x11.patch b/nixpkgs/pkgs/applications/networking/browsers/w3m/no-x11.patch
new file mode 100644
index 000000000000..0816c022926d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/w3m/no-x11.patch
@@ -0,0 +1,14 @@
+Forget about X11 in fb module.
+This breaks w3mimgdisplay under X11, but removes X11 dependency it in pure fb.
+diff --git a/w3mimg/fb/fb_imlib2.c b/w3mimg/fb/fb_imlib2.c
+index 1a5151c..d3d7bc3 100644
+--- a/w3mimg/fb/fb_imlib2.c
++++ b/w3mimg/fb/fb_imlib2.c
+@@ -3,6 +3,7 @@
+                 fb_imlib2.c 0.3 Copyright (C) 2002, hito
+  **************************************************************************/
+ 
++#define X_DISPLAY_MISSING
+ #include <Imlib2.h>
+ #include "fb.h"
+ #include "fb_img.h"
diff --git a/nixpkgs/pkgs/applications/networking/browsers/webmacs/default.nix b/nixpkgs/pkgs/applications/networking/browsers/webmacs/default.nix
new file mode 100644
index 000000000000..7dbb6a3c5388
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/webmacs/default.nix
@@ -0,0 +1,75 @@
+{ lib
+, mkDerivationWith
+, fetchFromGitHub
+, python3Packages
+, herbstluftwm
+}:
+
+mkDerivationWith python3Packages.buildPythonApplication rec {
+  pname = "webmacs";
+  version = "0.8";
+
+  disabled = python3Packages.isPy27;
+
+  src = fetchFromGitHub {
+    owner = "parkouss";
+    repo = "webmacs";
+    rev = version;
+    fetchSubmodules = true;
+    sha256 = "1hzb9341hybgrqcy1w20hshm6xaiby4wbjpjkigf4zq389407368";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    pyqtwebengine
+    setuptools
+    dateparser
+    jinja2
+    pygments
+  ];
+
+  checkInputs = [
+    python3Packages.pytest
+    #python3Packages.pytest-xvfb
+    #python3Packages.pytest-qt
+    python3Packages.pytestCheckHook
+    herbstluftwm
+
+    # The following are listed in test-requirements.txt but appear not
+    # to be needed at present:
+
+    # python3Packages.pytest-mock
+    # python3Packages.flake8
+  ];
+
+  # See https://github.com/parkouss/webmacs/blob/1a04fb7bd3f33d39cb4d71621b48c2458712ed39/setup.py#L32
+  # Don't know why they're using CC for g++.
+  preConfigure = ''
+   export CC=$CXX
+  '';
+
+  doCheck = false; # test dependencies not packaged up yet
+
+  dontWrapQtApps = true;
+
+  preFixup = ''
+    makeWrapperArgs+=("''${qtWrapperArgs[@]}")
+  '';
+
+  meta = with lib; {
+    description = "Keyboard-based web browser with Emacs/conkeror heritage";
+    longDescription = ''
+      webmacs is yet another browser for keyboard-based web navigation.
+
+      It mainly targets emacs-like navigation, and started as a clone (in terms of
+      features) of conkeror.
+
+      Based on QtWebEngine and Python 3. Fully customizable in Python.
+    '';
+    homepage = "https://webmacs.readthedocs.io/en/latest/";
+    changelog = "https://github.com/parkouss/webmacs/blob/master/CHANGELOG.md";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ jacg ];
+    platforms = platforms.all;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/c14/default.nix b/nixpkgs/pkgs/applications/networking/c14/default.nix
new file mode 100644
index 000000000000..98d2f4aa81d6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/c14/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "c14-cli";
+  version = "0.3";
+
+  goPackagePath = "github.com/online-net/c14-cli";
+
+  src = fetchFromGitHub {
+    owner = "online-net";
+    repo = "c14-cli";
+    rev = version;
+    sha256 = "0b1piviy6vvdbak8y8bc24rk3c1fi67vv3352pmnzvrhsar2r5yf";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    description = "C14 is designed for data archiving & long-term backups.";
+    homepage = "https://www.online.net/en/storage/c14-cold-storage";
+    license = licenses.mit;
+    maintainers = with maintainers; [ apeyroux ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/c14/deps.nix b/nixpkgs/pkgs/applications/networking/c14/deps.nix
new file mode 100644
index 000000000000..fe51488c7066
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/c14/deps.nix
@@ -0,0 +1 @@
+[]
diff --git a/nixpkgs/pkgs/applications/networking/calls/default.nix b/nixpkgs/pkgs/applications/networking/calls/default.nix
new file mode 100644
index 000000000000..39ad9ef1d15f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/calls/default.nix
@@ -0,0 +1,85 @@
+{ stdenv
+, fetchFromGitLab
+, meson
+, ninja
+, pkgconfig
+, libhandy
+, modemmanager
+, gtk3
+, gom
+, gsound
+, evolution-data-server
+, folks
+, desktop-file-utils
+, libpeas
+, dbus
+, vala
+, wrapGAppsHook
+, xorg
+, xvfb_run
+, libxml2
+}:
+
+stdenv.mkDerivation rec {
+  pname = "calls";
+  version = "0.1.5";
+
+  src = fetchFromGitLab {
+    domain = "source.puri.sm";
+    owner = "Librem5";
+    repo = "calls";
+    rev = "v${version}";
+    sha256 = "1wqkczl1fn4d2py00fsb6kh05avmc7c49gi49j3592fqsvi87j18";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkgconfig
+    desktop-file-utils
+    vala
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    modemmanager
+    libhandy
+    evolution-data-server
+    folks
+    gom
+    gsound
+    gtk3
+    libhandy
+    libpeas
+  ];
+
+  checkInputs = [
+    dbus
+    xvfb_run
+  ];
+
+  mesonFlags = [
+    # docs fail to build
+    # https://source.puri.sm/Librem5/calls/issues/99
+    "-Dgtk_doc=false"
+  ];
+
+  doCheck = true;
+
+  checkPhase = ''
+    runHook preCheck
+    NO_AT_BRIDGE=1 \
+    xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
+      --config-file=${dbus.daemon}/share/dbus-1/session.conf \
+      meson test --print-errorlogs
+    runHook postCheck
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A phone dialer and call handler";
+    homepage = "https://source.puri.sm/Librem5/calls";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ craigem lheckemann ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cawbird/default.nix b/nixpkgs/pkgs/applications/networking/cawbird/default.nix
new file mode 100644
index 000000000000..2ff9e5581b0a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cawbird/default.nix
@@ -0,0 +1,76 @@
+{ stdenv
+, fetchFromGitHub
+, glib
+, gtk3
+, json-glib
+, sqlite
+, libsoup
+, gettext
+, gspell
+, vala
+, meson
+, ninja
+, pkgconfig
+, dconf
+, gst_all_1
+, wrapGAppsHook
+, gobject-introspection
+, glib-networking
+, python3
+}:
+
+stdenv.mkDerivation rec {
+  version = "1.1.0";
+  pname = "cawbird";
+
+  src = fetchFromGitHub {
+    owner = "IBBoard";
+    repo = "cawbird";
+    rev = "v${version}";
+    sha256 = "0zghryx5y47ff8kxa65lvgmy1cnhvhazxml7r1lxixxj3d88wh7p";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    vala
+    pkgconfig
+    wrapGAppsHook
+    python3
+    gobject-introspection # for setup hook
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    json-glib
+    sqlite
+    libsoup
+    gettext
+    dconf
+    gspell
+    glib-networking
+  ] ++ (with gst_all_1; [
+    gstreamer
+    gst-plugins-base
+    gst-plugins-bad
+    (gst-plugins-good.override {
+      gtkSupport = true;
+    })
+    gst-libav
+  ]);
+
+  postPatch = ''
+    chmod +x data/meson_post_install.py # patchShebangs requires executable file
+    patchShebangs data/meson_post_install.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Native GTK Twitter client for the Linux desktop";
+    longDescription = "Cawbird is a modern, easy and fun Twitter client. Fork of the discontinued Corebird.";
+    homepage = "https://ibboard.co.uk/cawbird/";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with stdenv.lib.maintainers; [ jonafato schmittlauch ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/charles/default.nix b/nixpkgs/pkgs/applications/networking/charles/default.nix
new file mode 100644
index 000000000000..11eb24ff7031
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/charles/default.nix
@@ -0,0 +1,67 @@
+{
+stdenv
+, makeWrapper
+, makeDesktopItem
+, fetchurl
+, jre
+}:
+
+let
+  generic = { version, sha256, ... }@attrs:
+  let
+    desktopItem = makeDesktopItem {
+      categories = "Network;Development;WebDevelopment;Java;";
+      desktopName = "Charles";
+      exec = "charles %F";
+      genericName  = "Web Debugging Proxy";
+      icon = "charles-proxy";
+      mimeType = "application/x-charles-savedsession;application/x-charles-savedsession+xml;application/x-charles-savedsession+json;application/har+json;application/vnd.tcpdump.pcap;application/x-charles-trace";
+      name = "Charles";
+      startupNotify = "true";
+    };
+
+  in stdenv.mkDerivation {
+      pname = "charles";
+      inherit version;
+
+      src = fetchurl {
+        url = "https://www.charlesproxy.com/assets/release/${version}/charles-proxy-${version}.tar.gz";
+        inherit sha256;
+      };
+      buildInputs = [ makeWrapper ];
+
+      installPhase = ''
+        makeWrapper ${jre}/bin/java $out/bin/charles \
+          --add-flags "-Xmx1024M -Dcharles.config='~/.charles.config' -jar $out/share/java/charles.jar"
+
+        for fn in lib/*.jar; do
+          install -D -m644 $fn $out/share/java/$(basename $fn)
+        done
+
+        mkdir -p $out/share/applications
+        ln -s ${desktopItem}/share/applications/* $out/share/applications/
+
+        mkdir -p $out/share/icons
+        cp -r icon $out/share/icons/hicolor
+      '';
+
+      meta = with stdenv.lib; {
+        description = "Web Debugging Proxy";
+        homepage = "https://www.charlesproxy.com/";
+        maintainers = [ maintainers.kalbasit ];
+        license = stdenv.lib.licenses.unfree;
+        platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
+      };
+    };
+
+in {
+  charles4 = (generic {
+    version = "4.2.8";
+    sha256 = "1jzjdhzxgrq7pdfryfkg0hsjpyni14ma4x8jbdk1rqll78ccr080";
+  });
+  charles3 = (generic {
+    version = "3.12.3";
+    sha256 = "13zk82ny1w5zd9qcs9qkq0kdb22ni5byzajyshpxdfm4zv6p32ss";
+  });
+}
+
diff --git a/nixpkgs/pkgs/applications/networking/cloudflared/default.nix b/nixpkgs/pkgs/applications/networking/cloudflared/default.nix
new file mode 100644
index 000000000000..aca523545adb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cloudflared/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "cloudflared";
+  version = "2020.5.1";
+
+  src = fetchFromGitHub {
+    owner  = "cloudflare";
+    repo   = "cloudflared";
+    rev    = version;
+    sha256 = "0r1n3a8h8gyww4p2amb24jmp8zkyxy1ava3nbqgwlfjr3zagga00";
+  };
+
+  vendorSha256 = null;
+
+  buildFlagsArray = "-ldflags=-X main.Version=${version}";
+
+  meta = with stdenv.lib; {
+    description = "CloudFlare Argo Tunnel daemon (and DNS-over-HTTPS client)";
+    homepage    = "https://www.cloudflare.com/products/argo-tunnel";
+    license     = licenses.unfree;
+    platforms   = platforms.unix;
+    maintainers = [ maintainers.thoughtpolice maintainers.enorris ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/argo/default.nix b/nixpkgs/pkgs/applications/networking/cluster/argo/default.nix
new file mode 100644
index 000000000000..3ef2412a9f5c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/argo/default.nix
@@ -0,0 +1,58 @@
+{ lib, buildGoModule, buildGoPackage, fetchFromGitHub }:
+
+let
+  # Argo can package a static server in the CLI using the `staticfiles` go module.
+  # We build the CLI without the static server for simplicity, but the tool is still required for
+  # compilation to succeed.
+  # See: https://github.com/argoproj/argo/blob/d7690e32faf2ac5842468831daf1443283703c25/Makefile#L117
+  staticfiles = buildGoPackage rec {
+    name = "staticfiles";
+    src = fetchFromGitHub {
+      owner = "bouk";
+      repo = "staticfiles";
+      rev = "827d7f6389cd410d0aa3f3d472a4838557bf53dd";
+      sha256 = "0xarhmsqypl8036w96ssdzjv3k098p2d4mkmw5f6hkp1m3j67j61";
+    };
+
+    goPackagePath = "bou.ke/staticfiles";
+  };
+in
+buildGoModule rec {
+  pname = "argo";
+  version = "2.8.1";
+
+  src = fetchFromGitHub {
+    owner = "argoproj";
+    repo = "argo";
+    rev = "v${version}";
+    sha256 = "193nxc27fh37wf035mclvwwwxjjfc8nnbncg009fg19ycqmvmgvc";
+  };
+
+  vendorSha256 = "1p9b2m20gxc7iyq08mvllf5dpi4m06aw233sb45d05d624kw4aps";
+
+  subPackages = [ "cmd/argo" ];
+
+  preBuild = ''
+    mkdir -p ui/dist/app
+    echo "Built without static files" > ui/dist/app/index.html
+
+    ${staticfiles}/bin/staticfiles -o server/static/files.go ui/dist/app
+  '';
+
+  buildFlagsArray = ''
+    -ldflags=
+      -s -w
+      -X github.com/argoproj/argo.version=${version}
+      -X github.com/argoproj/argo.gitCommit=${src.rev}
+      -X github.com/argoproj/argo.gitTreeState=clean
+      -X github.com/argoproj/argo.gitTag=${version}
+  '';
+
+  meta = with lib; {
+    description = "Container native workflow engine for Kubernetes";
+    homepage = "https://github.com/argoproj/argo";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ groodt ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/argocd/default.nix b/nixpkgs/pkgs/applications/networking/cluster/argocd/default.nix
new file mode 100644
index 000000000000..409498905051
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/argocd/default.nix
@@ -0,0 +1,40 @@
+{ lib, buildGoModule, fetchFromGitHub, packr }:
+
+buildGoModule rec {
+  pname = "argocd";
+  version = "1.4.2";
+  commit = "48cced9d925b5bc94f6aa9fa4a8a19b2a59e128a";
+
+  src = fetchFromGitHub {
+    owner = "argoproj";
+    repo = "argo-cd";
+    rev = "v${version}";
+    sha256 = "01vsyrks1k5yfvrarv8ia0isr7snilr21b7lfiy860si82r2r8hj";
+  };
+
+  vendorSha256 = "0r2nh7v00m6zbdnhsgjn01q9pkiz41ckkqgfnpqmkxaqmjz31iyj";
+
+  nativeBuildInputs = [ packr ];
+
+  patches = [ ./use-go-module.patch ];
+
+  buildFlagsArray = ''
+     -ldflags=
+      -X github.com/argoproj/argo-cd/common.version=${version}
+      -X github.com/argoproj/argo-cd/common.buildDate=unknown
+      -X github.com/argoproj/argo-cd/common.gitCommit=${commit}
+      -X github.com/argoproj/argo-cd/common.gitTreeState=clean
+  '';
+ 
+  # run packr to embed assets
+  preBuild = ''
+    packr
+  '';
+  
+  meta = with lib; {
+    description = "Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes";
+    homepage = "https://github.com/argoproj/argo";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ shahrukh330 ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/argocd/use-go-module.patch b/nixpkgs/pkgs/applications/networking/cluster/argocd/use-go-module.patch
new file mode 100644
index 000000000000..ac597f4187e9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/argocd/use-go-module.patch
@@ -0,0 +1,3058 @@
+diff --git a/Gopkg.lock b/Gopkg.lock
+deleted file mode 100644
+index 03737a95..00000000
+--- a/Gopkg.lock
++++ /dev/null
+@@ -1,2103 +0,0 @@
+-# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
+-
+-
+-[[projects]]
+-  digest = "1:6d5a057da97a9dbdb10e7beedd2f43452b6bf7691001c0c8886e8dacf5610349"
+-  name = "bou.ke/monkey"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "bdf6dea004c6fd1cdf4b25da8ad45a606c09409a"
+-  version = "v1.0.1"
+-
+-[[projects]]
+-  digest = "1:9702dc153c9bb6ee7ee0587c248b7024700e89e4a7be284faaeeab9da32e1c6b"
+-  name = "cloud.google.com/go"
+-  packages = ["compute/metadata"]
+-  pruneopts = ""
+-  revision = "767c40d6a2e058483c25fa193e963a22da17236d"
+-  version = "v0.18.0"
+-
+-[[projects]]
+-  digest = "1:8ec1618fc3ee146af104d6c13be250f25e5976e34557d4afbfe4b28035ce6c05"
+-  name = "github.com/Knetic/govaluate"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "d216395917cc49052c7c7094cf57f09657ca08a8"
+-  version = "v3.0.0"
+-
+-[[projects]]
+-  digest = "1:63e57618d792cccb87ad7cb8a0602e6205732beb3b01b0ea858fc4a5fd3ce8f1"
+-  name = "github.com/MakeNowJust/heredoc"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "efb6ca8de9d5385c3963279701760e37637cf238"
+-  version = "v2.0.1"
+-
+-[[projects]]
+-  digest = "1:b856d8248663c39265a764561c1a1a149783f6cc815feb54a1f3a591b91f6eca"
+-  name = "github.com/Masterminds/semver"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "c7af12943936e8c39859482e61f0574c2fd7fc75"
+-  version = "v1.4.2"
+-
+-[[projects]]
+-  digest = "1:71c0dfb843260bfb9b03357cae8eac261b8d82e149ad8f76938b87a23aa47c43"
+-  name = "github.com/PuerkitoBio/purell"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "b938d81255b5473c57635324295cb0fe398c7a58"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:331a419049c2be691e5ba1d24342fc77c7e767a80c666a18fd8a9f7b82419c1c"
+-  name = "github.com/PuerkitoBio/urlesc"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "de5bf2ad457846296e2031421a34e2568e304e35"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:a1b56af5e69569454f55ef4842485a0da5616e240a610d77c987e17a73b0e265"
+-  name = "github.com/TomOnTime/utfutil"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "09c41003ee1d5015b75f331e52215512e7145b8d"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:52905b00a73cda93a2ce8c5fa35185daed673d59e39576e81ad6ab6fb7076b3c"
+-  name = "github.com/argoproj/pkg"
+-  packages = [
+-    "errors",
+-    "exec",
+-    "rand",
+-    "time",
+-  ]
+-  pruneopts = ""
+-  revision = "02a6aac40ac4cd23de448afe7a1ec0ba4b6d2b96"
+-
+-[[projects]]
+-  digest = "1:d8a2bb36a048d1571bcc1aee208b61f39dc16c6c53823feffd37449dde162507"
+-  name = "github.com/asaskevich/govalidator"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "ccb8e960c48f04d6935e72476ae4a51028f9e22f"
+-  version = "v9"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:c0bec5f9b98d0bc872ff5e834fac186b807b656683bd29cb82fb207a1513fabb"
+-  name = "github.com/beorn7/perks"
+-  packages = ["quantile"]
+-  pruneopts = ""
+-  revision = "3a771d992973f24aa725d07868b467d1ddfceafb"
+-
+-[[projects]]
+-  digest = "1:6e2b0748ea11cffebe87b4a671a44ecfb243141cdd5df54cb44b7e8e93cb7ea3"
+-  name = "github.com/casbin/casbin"
+-  packages = [
+-    ".",
+-    "config",
+-    "effect",
+-    "errors",
+-    "log",
+-    "model",
+-    "persist",
+-    "persist/file-adapter",
+-    "rbac",
+-    "rbac/default-role-manager",
+-    "util",
+-  ]
+-  pruneopts = ""
+-  revision = "aaed1b7a7eac65d37ec4e15e308429fdf0bd6a9e"
+-  version = "v1.9.1"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:9c19f8c33e635e0439c8afc167d6d02e3aa6eea5b69d64880244fd354a99edc4"
+-  name = "github.com/chai2010/gettext-go"
+-  packages = [
+-    "gettext",
+-    "gettext/mo",
+-    "gettext/plural",
+-    "gettext/po",
+-  ]
+-  pruneopts = ""
+-  revision = "bf70f2a70fb1b1f36d90d671a72795984eab0fcb"
+-
+-[[projects]]
+-  branch = "v2"
+-  digest = "1:d8ee1b165eb7f4fd9ada718e1e7eeb0bc1fd462592d0bd823df694443f448681"
+-  name = "github.com/coreos/go-oidc"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "1180514eaf4d9f38d0d19eef639a1d695e066e72"
+-
+-[[projects]]
+-  digest = "1:56c130d885a4aacae1dd9c7b71cfe39912c7ebc1ff7d2b46083c8812996dc43b"
+-  name = "github.com/davecgh/go-spew"
+-  packages = ["spew"]
+-  pruneopts = ""
+-  revision = "346938d642f2ec3594ed81d874461961cd0faa76"
+-  version = "v1.1.0"
+-
+-[[projects]]
+-  digest = "1:6098222470fe0172157ce9bbef5d2200df4edde17ee649c5d6e48330e4afa4c6"
+-  name = "github.com/dgrijalva/jwt-go"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "06ea1031745cb8b3dab3f6a236daf2b0aa468b7e"
+-  version = "v3.2.0"
+-
+-[[projects]]
+-  digest = "1:c05f1899f086e3b4613d94d9e6f7ba6f4b6587498a1aa6037c5c294b22f5a743"
+-  name = "github.com/docker/distribution"
+-  packages = [
+-    "digestset",
+-    "reference",
+-  ]
+-  pruneopts = ""
+-  revision = "2461543d988979529609e8cb6fca9ca190dc48da"
+-  version = "v2.7.1"
+-
+-[[projects]]
+-  digest = "1:b021ef379356343bdc13ec101e546b756fcef4b1186d08163bef7d3bc8c1e07f"
+-  name = "github.com/docker/docker"
+-  packages = [
+-    "pkg/term",
+-    "pkg/term/winconsole",
+-  ]
+-  pruneopts = ""
+-  revision = "fc4825d5ef5e0e1af74904208f9b925c22f0b6f8"
+-  version = "v1.6.0-rc5"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:d6c13a378213e3de60445e49084b8a0a9ce582776dfc77927775dbeb3ff72a35"
+-  name = "github.com/docker/spdystream"
+-  packages = [
+-    ".",
+-    "spdy",
+-  ]
+-  pruneopts = ""
+-  revision = "6480d4af844c189cf5dd913db24ddd339d3a4f85"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:f1a75a8e00244e5ea77ff274baa9559eb877437b240ee7b278f3fc560d9f08bf"
+-  name = "github.com/dustin/go-humanize"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "9f541cc9db5d55bce703bd99987c9d5cb8eea45e"
+-
+-[[projects]]
+-  digest = "1:971e9ba63a417c5f1f83ab358677bc59e96ff04285f26c6646ff089fb60b15e8"
+-  name = "github.com/emicklei/go-restful"
+-  packages = [
+-    ".",
+-    "log",
+-  ]
+-  pruneopts = ""
+-  revision = "3658237ded108b4134956c1b3050349d93e7b895"
+-  version = "v2.7.1"
+-
+-[[projects]]
+-  digest = "1:ba7c75e38d81b9cf3e8601c081567be3b71bccca8c11aee5de98871360aa4d7b"
+-  name = "github.com/emirpasic/gods"
+-  packages = [
+-    "containers",
+-    "lists",
+-    "lists/arraylist",
+-    "trees",
+-    "trees/binaryheap",
+-    "utils",
+-  ]
+-  pruneopts = ""
+-  revision = "f6c17b524822278a87e3b3bd809fec33b51f5b46"
+-  version = "v1.9.0"
+-
+-[[projects]]
+-  digest = "1:46ddeb9dd35d875ac7568c4dc1fc96ce424e034bdbb984239d8ffc151398ec01"
+-  name = "github.com/evanphx/json-patch"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "026c730a0dcc5d11f93f1cf1cc65b01247ea7b6f"
+-  version = "v4.5.0"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:549f95037fea25e00a5341ac6a169a5b3e5306be107f45260440107b779b74f9"
+-  name = "github.com/exponent-io/jsonpath"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "d6023ce2651d8eafb5c75bb0c7167536102ec9f5"
+-
+-[[projects]]
+-  digest = "1:23a5efa4b272df86a8ebffc942f5e0c1aac4b750836037394cc450b6d91e241a"
+-  name = "github.com/fatih/camelcase"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "44e46d280b43ec1531bb25252440e34f1b800b65"
+-  version = "v1.0.0"
+-
+-[[projects]]
+-  digest = "1:b13707423743d41665fd23f0c36b2f37bb49c30e94adb813319c44188a51ba22"
+-  name = "github.com/ghodss/yaml"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "0ca9ea5df5451ffdf184b4428c902747c2c11cd7"
+-  version = "v1.0.0"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:eb77b66abaf9649747230eb973350bd1c311a0d0362213192efbdd222082b072"
+-  name = "github.com/go-openapi/analysis"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "5957818e100395077187fb7ef3b8a28227af06c6"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:ee273c95c1414ef11bd4da259b40e83f41c1d5a6bee7d1b54a05ef5f3565fd92"
+-  name = "github.com/go-openapi/errors"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "b2b2befaf267d082d779bcef52d682a47c779517"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:1287439f7765209116509fffff2b8f853845e4b35572b41a1aadda42cbcffcc2"
+-  name = "github.com/go-openapi/jsonpointer"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "779f45308c19820f1a69e9a4cd965f496e0da10f"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:07ac8ac445f68b0bc063d11845d479fb7e09c906ead7a8c4165b59777df09d74"
+-  name = "github.com/go-openapi/jsonreference"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "36d33bfe519efae5632669801b180bf1a245da3b"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:c4a8c916364abeda1c5cf36684320298bbf4d87718b0b2bd9c4ca663157fdc75"
+-  name = "github.com/go-openapi/loads"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "2a2b323bab96e6b1fdee110e57d959322446e9c9"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:1d9c762f6695e6e7ed0b4c055fa0eab7d20c2b36c935943282273d37f114e302"
+-  name = "github.com/go-openapi/runtime"
+-  packages = [
+-    ".",
+-    "logger",
+-    "middleware",
+-    "middleware/denco",
+-    "middleware/header",
+-    "middleware/untyped",
+-    "security",
+-  ]
+-  pruneopts = ""
+-  revision = "cd9d8ed52e4b4665463cbc655500e4faa09c3c16"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:fd4008f8283b993180f0626d0c7b2f48880e9dbb6bd92a91cac7ded30dc66777"
+-  name = "github.com/go-openapi/spec"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "1de3e0542de65ad8d75452a595886fdd0befb363"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:4ddc424130bcfbf6f782f433192ca2502a02a09e4ac55dcbecf91f22ed4e3138"
+-  name = "github.com/go-openapi/strfmt"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "481808443b00a14745fada967cb5eeff0f9b1df2"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:366052ef634d344217d6720719c9f8e95de13a94d211f09785b0ba3c4c181b06"
+-  name = "github.com/go-openapi/swag"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "84f4bee7c0a6db40e3166044c7983c1c32125429"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:671e25496d550c80a9d6e7e588d32b380c6b4877f113750724f69acc6ce6790f"
+-  name = "github.com/go-openapi/validate"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "b0a3ed684d0fdd3e1eda00433382188ce8aa7169"
+-
+-[[projects]]
+-  digest = "1:024c9473f363a12918e87e7efc778091839beab514b01309a6ecd8aa336c8065"
+-  name = "github.com/go-redis/cache"
+-  packages = [
+-    ".",
+-    "internal/lrucache",
+-    "internal/singleflight",
+-  ]
+-  pruneopts = ""
+-  revision = "c58ada1e23a3b66593f81c70572c20a0bb805a90"
+-  version = "v6.3.5"
+-
+-[[projects]]
+-  digest = "1:b73fabc1ff8f2417bc5cc51d3f7274d6af5300b5ad9b8606967213134c1700dc"
+-  name = "github.com/go-redis/redis"
+-  packages = [
+-    ".",
+-    "internal",
+-    "internal/consistenthash",
+-    "internal/hashtag",
+-    "internal/pool",
+-    "internal/proto",
+-    "internal/util",
+-  ]
+-  pruneopts = ""
+-  revision = "22be8a3eaf992c828cecb69dc07348313bf08d2e"
+-  version = "v6.15.1"
+-
+-[[projects]]
+-  digest = "1:842c1acbacc80da775cfc0c412c4fe322c2d1b86c260db632987730d0d67a6bd"
+-  name = "github.com/gobuffalo/packr"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "7f4074995d431987caaa35088199f13c44b24440"
+-  version = "v1.11.0"
+-
+-[[projects]]
+-  digest = "1:9ab1b1c637d7c8f49e39d8538a650d7eb2137b076790cff69d160823b505964c"
+-  name = "github.com/gobwas/glob"
+-  packages = [
+-    ".",
+-    "compiler",
+-    "match",
+-    "syntax",
+-    "syntax/ast",
+-    "syntax/lexer",
+-    "util/runes",
+-    "util/strings",
+-  ]
+-  pruneopts = ""
+-  revision = "5ccd90ef52e1e632236f7326478d4faa74f99438"
+-  version = "v0.2.3"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:9a06e7365c6039daf4db9bbf79650e2933a2880982cbab8106cb74a36617f40d"
+-  name = "github.com/gogits/go-gogs-client"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "5a05380e4bc2440e0ec12f54f6f45648dbdd5e55"
+-
+-[[projects]]
+-  digest = "1:d69d2ba23955582a64e367ff2b0808cdbd048458c178cea48f11ab8c40bd7aea"
+-  name = "github.com/gogo/protobuf"
+-  packages = [
+-    "gogoproto",
+-    "plugin/compare",
+-    "plugin/defaultcheck",
+-    "plugin/description",
+-    "plugin/embedcheck",
+-    "plugin/enumstringer",
+-    "plugin/equal",
+-    "plugin/face",
+-    "plugin/gostring",
+-    "plugin/marshalto",
+-    "plugin/oneofcheck",
+-    "plugin/populate",
+-    "plugin/size",
+-    "plugin/stringer",
+-    "plugin/testgen",
+-    "plugin/union",
+-    "plugin/unmarshal",
+-    "proto",
+-    "protoc-gen-gofast",
+-    "protoc-gen-gogo/descriptor",
+-    "protoc-gen-gogo/generator",
+-    "protoc-gen-gogo/generator/internal/remap",
+-    "protoc-gen-gogo/grpc",
+-    "protoc-gen-gogo/plugin",
+-    "protoc-gen-gogofast",
+-    "sortkeys",
+-    "vanity",
+-    "vanity/command",
+-  ]
+-  pruneopts = ""
+-  revision = "5628607bb4c51c3157aacc3a50f0ab707582b805"
+-  version = "v1.3.1"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:107b233e45174dbab5b1324201d092ea9448e58243ab9f039e4c0f332e121e3a"
+-  name = "github.com/golang/glog"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "23def4e6c14b4da8ac2ed8007337bc5eb5007998"
+-
+-[[projects]]
+-  digest = "1:3dd078fda7500c341bc26cfbc6c6a34614f295a2457149fc1045cab767cbcf18"
+-  name = "github.com/golang/protobuf"
+-  packages = [
+-    "jsonpb",
+-    "proto",
+-    "protoc-gen-go",
+-    "protoc-gen-go/descriptor",
+-    "protoc-gen-go/generator",
+-    "protoc-gen-go/generator/internal/remap",
+-    "protoc-gen-go/grpc",
+-    "protoc-gen-go/plugin",
+-    "ptypes",
+-    "ptypes/any",
+-    "ptypes/duration",
+-    "ptypes/empty",
+-    "ptypes/struct",
+-    "ptypes/timestamp",
+-  ]
+-  pruneopts = ""
+-  revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5"
+-  version = "v1.2.0"
+-
+-[[projects]]
+-  digest = "1:1e5b1e14524ed08301977b7b8e10c719ed853cbf3f24ecb66fae783a46f207a6"
+-  name = "github.com/google/btree"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "4030bb1f1f0c35b30ca7009e9ebd06849dd45306"
+-  version = "v1.0.0"
+-
+-[[projects]]
+-  digest = "1:9fcb267c272bc5054564b392e3ff7e65e35400fd9914afb1d169f92b95e7dbc9"
+-  name = "github.com/google/go-cmp"
+-  packages = [
+-    "cmp",
+-    "cmp/internal/diff",
+-    "cmp/internal/flags",
+-    "cmp/internal/function",
+-    "cmp/internal/value",
+-  ]
+-  pruneopts = ""
+-  revision = "2d0692c2e9617365a95b295612ac0d4415ba4627"
+-  version = "v0.3.1"
+-
+-[[projects]]
+-  digest = "1:14d826ee25139b4674e9768ac287a135f4e7c14e1134a5b15e4e152edfd49f41"
+-  name = "github.com/google/go-jsonnet"
+-  packages = [
+-    ".",
+-    "ast",
+-    "parser",
+-  ]
+-  pruneopts = ""
+-  revision = "dfddf2b4e3aec377b0dcdf247ff92e7d078b8179"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:754f77e9c839b24778a4b64422236d38515301d2baeb63113aa3edc42e6af692"
+-  name = "github.com/google/gofuzz"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "24818f796faf91cd76ec7bddd72458fbced7a6c1"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:d0899ec7c2f61fd5e4ccba7dbefe72e366a3ecce23ecdb982c768fa1d38812fb"
+-  name = "github.com/google/shlex"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "c34317bd91bf98fab745d77b03933cf8769299fe"
+-
+-[[projects]]
+-  digest = "1:2a131706ff80636629ab6373f2944569b8252ecc018cda8040931b05d32e3c16"
+-  name = "github.com/googleapis/gnostic"
+-  packages = [
+-    "OpenAPIv2",
+-    "compiler",
+-    "extensions",
+-  ]
+-  pruneopts = ""
+-  revision = "ee43cbb60db7bd22502942cccbc39059117352ab"
+-  version = "v0.1.0"
+-
+-[[projects]]
+-  digest = "1:09aa5dd1332b93c96bde671bafb053249dc813febf7d5ca84e8f382ba255d67d"
+-  name = "github.com/gorilla/websocket"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "66b9c49e59c6c48f0ffce28c2d8b8a5678502c6d"
+-  version = "v1.4.0"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:e1fd67b5695fb12f54f979606c5d650a5aa72ef242f8e71072bfd4f7b5a141a0"
+-  name = "github.com/gregjones/httpcache"
+-  packages = [
+-    ".",
+-    "diskcache",
+-  ]
+-  pruneopts = ""
+-  revision = "901d90724c7919163f472a9812253fb26761123d"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:9dca8c981b8aed7448d94e78bc68a76784867a38b3036d5aabc0b32d92ffd1f4"
+-  name = "github.com/grpc-ecosystem/go-grpc-middleware"
+-  packages = [
+-    ".",
+-    "auth",
+-    "logging",
+-    "logging/logrus",
+-    "logging/logrus/ctxlogrus",
+-    "retry",
+-    "tags",
+-    "tags/logrus",
+-    "util/backoffutils",
+-    "util/metautils",
+-  ]
+-  pruneopts = ""
+-  revision = "bc372cc64f55abd91995ba3f219b380ffbc59e9d"
+-
+-[[projects]]
+-  digest = "1:e24dc5ef44694848785de507f439a24e9e6d96d7b43b8cf3d6cfa857aa1e2186"
+-  name = "github.com/grpc-ecosystem/go-grpc-prometheus"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "c225b8c3b01faf2899099b768856a9e916e5087b"
+-  version = "v1.2.0"
+-
+-[[projects]]
+-  digest = "1:9feb7485bc57adbcbc1e1037ca05588e9d8b0a3a1875fbf730021fc118859b75"
+-  name = "github.com/grpc-ecosystem/grpc-gateway"
+-  packages = [
+-    "protoc-gen-grpc-gateway",
+-    "protoc-gen-grpc-gateway/descriptor",
+-    "protoc-gen-grpc-gateway/generator",
+-    "protoc-gen-grpc-gateway/gengateway",
+-    "protoc-gen-grpc-gateway/httprule",
+-    "protoc-gen-swagger",
+-    "protoc-gen-swagger/genswagger",
+-    "protoc-gen-swagger/options",
+-    "runtime",
+-    "runtime/internal",
+-    "utilities",
+-  ]
+-  pruneopts = ""
+-  revision = "07f5e79768022f9a3265235f0db4ac8c3f675fec"
+-  version = "v1.3.1"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:9c776d7d9c54b7ed89f119e449983c3f24c0023e75001d6092442412ebca6b94"
+-  name = "github.com/hashicorp/golang-lru"
+-  packages = [
+-    ".",
+-    "simplelru",
+-  ]
+-  pruneopts = ""
+-  revision = "0fb14efe8c47ae851c0034ed7a448854d3d34cf3"
+-
+-[[projects]]
+-  digest = "1:23bc0b496ba341c6e3ba24d6358ff4a40a704d9eb5f9a3bd8e8fbd57ad869013"
+-  name = "github.com/imdario/mergo"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "163f41321a19dd09362d4c63cc2489db2015f1f4"
+-  version = "0.3.2"
+-
+-[[projects]]
+-  digest = "1:6f7a8f1f3e04174c426eea1c8661ef49a6b4c63bd2e40c0ad74b5ba9051f4812"
+-  name = "github.com/improbable-eng/grpc-web"
+-  packages = ["go/grpcweb"]
+-  pruneopts = ""
+-  revision = "16092bd1d58ae1b3c2d8be1cb67e65956f945dea"
+-  version = "0.7.0"
+-
+-[[projects]]
+-  digest = "1:870d441fe217b8e689d7949fef6e43efbc787e50f200cb1e70dbca9204a1d6be"
+-  name = "github.com/inconshreveable/mousetrap"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75"
+-  version = "v1.0"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:95abc4eba158a39873bd4fabdee576d0ae13826b550f8b710881d80ae4093a0f"
+-  name = "github.com/jbenet/go-context"
+-  packages = ["io"]
+-  pruneopts = ""
+-  revision = "d14ea06fba99483203c19d92cfcd13ebe73135f4"
+-
+-[[projects]]
+-  digest = "1:302ad9379eb146668760df4d779a95379acab43ce5f9a28f27f3273f98232020"
+-  name = "github.com/jonboulle/clockwork"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "2eee05ed794112d45db504eb05aa693efd2b8b09"
+-  version = "v0.1.0"
+-
+-[[projects]]
+-  digest = "1:31c6f3c4f1e15fcc24fcfc9f5f24603ff3963c56d6fa162116493b4025fb6acc"
+-  name = "github.com/json-iterator/go"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "f2b4162afba35581b6d4a50d3b8f34e33c144682"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:63e7368fcf6b54804076eaec26fd9cf0c4466166b272393db4b93102e1e962df"
+-  name = "github.com/kballard/go-shellquote"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "95032a82bc518f77982ea72343cc1ade730072f0"
+-
+-[[projects]]
+-  digest = "1:41e0bed5df4f9fd04c418bf9b6b7179b3671e416ad6175332601ca1c8dc74606"
+-  name = "github.com/kevinburke/ssh_config"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "81db2a75821ed34e682567d48be488a1c3121088"
+-  version = "0.5"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:448b4a6e39e46d8740b00dc871f26d58dc39341b160e01267b7917132831a136"
+-  name = "github.com/konsorten/go-windows-terminal-sequences"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "b729f2633dfe35f4d1d8a32385f6685610ce1cb5"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:93018a4331df9925058905133cb997aec8f54d5303f4536a23e49b5648632d06"
+-  name = "github.com/liggitt/tabwriter"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "89fcab3d43de07060e4fd4c1547430ed57e87f24"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:ccc20cacf54eb16464dad02efa1c14fa7c0b9e124639b0d2a51dcc87b0154e4c"
+-  name = "github.com/mailru/easyjson"
+-  packages = [
+-    "buffer",
+-    "jlexer",
+-    "jwriter",
+-  ]
+-  pruneopts = ""
+-  revision = "32fa128f234d041f196a9f3e0fea5ac9772c08e1"
+-
+-[[projects]]
+-  digest = "1:63722a4b1e1717be7b98fc686e0b30d5e7f734b9e93d7dee86293b6deab7ea28"
+-  name = "github.com/matttproud/golang_protobuf_extensions"
+-  packages = ["pbutil"]
+-  pruneopts = ""
+-  revision = "c12348ce28de40eed0136aa2b644d0ee0650e56c"
+-  version = "v1.0.1"
+-
+-[[projects]]
+-  digest = "1:096a8a9182648da3d00ff243b88407838902b6703fc12657f76890e08d1899bf"
+-  name = "github.com/mitchellh/go-homedir"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "ae18d6b8b3205b561c79e8e5f69bff09736185f4"
+-  version = "v1.0.0"
+-
+-[[projects]]
+-  digest = "1:713b341855f1480e4baca1e7c5434e1d266441340685ecbde32d59bdc065fb3f"
+-  name = "github.com/mitchellh/go-wordwrap"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "9e67c67572bc5dd02aef930e2b0ae3c02a4b5a5c"
+-  version = "v1.0.0"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:eb9117392ee8e7aa44f78e0db603f70b1050ee0ebda4bd40040befb5b218c546"
+-  name = "github.com/mitchellh/mapstructure"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "bb74f1db0675b241733089d5a1faa5dd8b0ef57b"
+-
+-[[projects]]
+-  digest = "1:0c0ff2a89c1bb0d01887e1dac043ad7efbf3ec77482ef058ac423d13497e16fd"
+-  name = "github.com/modern-go/concurrent"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94"
+-  version = "1.0.3"
+-
+-[[projects]]
+-  digest = "1:e32bdbdb7c377a07a9a46378290059822efdce5c8d96fe71940d87cb4f918855"
+-  name = "github.com/modern-go/reflect2"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd"
+-  version = "1.0.1"
+-
+-[[projects]]
+-  digest = "1:5d9b668b0b4581a978f07e7d2e3314af18eb27b3fb5d19b70185b7c575723d11"
+-  name = "github.com/opencontainers/go-digest"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "279bed98673dd5bef374d3b6e4b09e2af76183bf"
+-  version = "v1.0.0-rc1"
+-
+-[[projects]]
+-  digest = "1:4c0404dc03d974acd5fcd8b8d3ce687b13bd169db032b89275e8b9d77b98ce8c"
+-  name = "github.com/patrickmn/go-cache"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "a3647f8e31d79543b2d0f0ae2fe5c379d72cedc0"
+-  version = "v2.1.0"
+-
+-[[projects]]
+-  digest = "1:049b5bee78dfdc9628ee0e557219c41f683e5b06c5a5f20eaba0105ccc586689"
+-  name = "github.com/pelletier/go-buffruneio"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "c37440a7cf42ac63b919c752ca73a85067e05992"
+-  version = "v0.2.0"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:5f0faa008e8ff4221b55a1a5057c8b02cb2fd68da6a65c9e31c82b72cbc836d0"
+-  name = "github.com/petar/GoLLRB"
+-  packages = ["llrb"]
+-  pruneopts = ""
+-  revision = "33fb24c13b99c46c93183c291836c573ac382536"
+-
+-[[projects]]
+-  digest = "1:4709c61d984ef9ba99b037b047546d8a576ae984fb49486e48d99658aa750cd5"
+-  name = "github.com/peterbourgon/diskv"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "0be1b92a6df0e4f5cb0a5d15fb7f643d0ad93ce6"
+-  version = "v3.0.0"
+-
+-[[projects]]
+-  digest = "1:7365acd48986e205ccb8652cc746f09c8b7876030d53710ea6ef7d0bd0dcd7ca"
+-  name = "github.com/pkg/errors"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "645ef00459ed84a119197bfb8d8205042c6df63d"
+-  version = "v0.8.0"
+-
+-[[projects]]
+-  digest = "1:256484dbbcd271f9ecebc6795b2df8cad4c458dd0f5fd82a8c2fa0c29f233411"
+-  name = "github.com/pmezard/go-difflib"
+-  packages = ["difflib"]
+-  pruneopts = ""
+-  revision = "792786c7400a136282c1664665ae0a8db921c6c2"
+-  version = "v1.0.0"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:90daff4630a8cf2fa207dbd3ccaed0e860936ead1851a473019674e6b5993a13"
+-  name = "github.com/pquerna/cachecontrol"
+-  packages = [
+-    ".",
+-    "cacheobject",
+-  ]
+-  pruneopts = ""
+-  revision = "525d0eb5f91d30e3b1548de401b7ef9ea6898520"
+-
+-[[projects]]
+-  digest = "1:9d34d575593e3dd27bbd119138ba009ef1535a0df2aad7259e1dd5aed7405eea"
+-  name = "github.com/prometheus/client_golang"
+-  packages = [
+-    "prometheus",
+-    "prometheus/internal",
+-    "prometheus/promhttp",
+-  ]
+-  pruneopts = ""
+-  revision = "7858729281ec582767b20e0d696b6041d995d5e0"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:185cf55b1f44a1bf243558901c3f06efa5c64ba62cfdcbb1bf7bbe8c3fb68561"
+-  name = "github.com/prometheus/client_model"
+-  packages = ["go"]
+-  pruneopts = ""
+-  revision = "5c3871d89910bfb32f5fcab2aa4b9ec68e65a99f"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:f477ef7b65d94fb17574fc6548cef0c99a69c1634ea3b6da248b63a61ebe0498"
+-  name = "github.com/prometheus/common"
+-  packages = [
+-    "expfmt",
+-    "internal/bitbucket.org/ww/goautoneg",
+-    "model",
+-  ]
+-  pruneopts = ""
+-  revision = "c7de2306084e37d54b8be01f3541a8464345e9a5"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:e04aaa0e8f8da0ed3d6c0700bd77eda52a47f38510063209d72d62f0ef807d5e"
+-  name = "github.com/prometheus/procfs"
+-  packages = [
+-    ".",
+-    "internal/util",
+-    "nfs",
+-    "xfs",
+-  ]
+-  pruneopts = ""
+-  revision = "05ee40e3a273f7245e8777337fc7b46e533a9a92"
+-
+-[[projects]]
+-  digest = "1:6bb048133650d1fb7fbff9fb3c35bd5c7e8653fc95c3bae6df94cd17d1580278"
+-  name = "github.com/robfig/cron"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "45fbe1491cdd47d74d1bf1396286d67faee8b8b5"
+-  version = "v3.0.0"
+-
+-[[projects]]
+-  digest = "1:5f47c69f85311c4dc292be6cc995a0a3fe8337a6ce38ef4f71e5b7efd5ad42e0"
+-  name = "github.com/rs/cors"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "9a47f48565a795472d43519dd49aac781f3034fb"
+-  version = "v1.6.0"
+-
+-[[projects]]
+-  digest = "1:2761e287c811d0948d47d0252b82281eca3801eb3c9d5f9530956643d5b9f430"
+-  name = "github.com/russross/blackfriday"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "05f3235734ad95d0016f6a23902f06461fcf567a"
+-  version = "v1.5.2"
+-
+-[[projects]]
+-  digest = "1:3962f553b77bf6c03fc07cd687a22dd3b00fe11aa14d31194f5505f5bb65cdc8"
+-  name = "github.com/sergi/go-diff"
+-  packages = ["diffmatchpatch"]
+-  pruneopts = ""
+-  revision = "1744e2970ca51c86172c8190fadad617561ed6e7"
+-  version = "v1.0.0"
+-
+-[[projects]]
+-  digest = "1:01d968ff6535945510c944983eee024e81f1c949043e9bbfe5ab206ebc3588a4"
+-  name = "github.com/sirupsen/logrus"
+-  packages = [
+-    ".",
+-    "hooks/test",
+-  ]
+-  pruneopts = ""
+-  revision = "a67f783a3814b8729bd2dac5780b5f78f8dbd64d"
+-  version = "v1.1.0"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:50b5be512f924d289f20e8b2aef8951d98b9bd8c44666cf169514906df597a4c"
+-  name = "github.com/skratchdot/open-golang"
+-  packages = ["open"]
+-  pruneopts = ""
+-  revision = "75fb7ed4208cf72d323d7d02fd1a5964a7a9073c"
+-
+-[[projects]]
+-  digest = "1:022a4e2a8c327eb46a99088a51c0dda5d5be86928ace2afd72145dc1d746a323"
+-  name = "github.com/soheilhy/cmux"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "e09e9389d85d8492d313d73d1469c029e710623f"
+-  version = "v0.1.4"
+-
+-[[projects]]
+-  digest = "1:0c63b3c7ad6d825a898f28cb854252a3b29d37700c68a117a977263f5ec94efe"
+-  name = "github.com/spf13/cobra"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "0.0.5"
+-
+-[[projects]]
+-  digest = "1:8e243c568f36b09031ec18dff5f7d2769dcf5ca4d624ea511c8e3197dc3d352d"
+-  name = "github.com/spf13/pflag"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "583c0c0531f06d5278b7d917446061adc344b5cd"
+-  version = "v1.0.1"
+-
+-[[projects]]
+-  digest = "1:b1861b9a1aa0801b0b62945ed7477c1ab61a4bd03b55dfbc27f6d4f378110c8c"
+-  name = "github.com/src-d/gcfg"
+-  packages = [
+-    ".",
+-    "scanner",
+-    "token",
+-    "types",
+-  ]
+-  pruneopts = ""
+-  revision = "f187355171c936ac84a82793659ebb4936bc1c23"
+-  version = "v1.3.0"
+-
+-[[projects]]
+-  digest = "1:306417ea2f31ea733df356a2b895de63776b6a5107085b33458e5cd6eb1d584d"
+-  name = "github.com/stretchr/objx"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "facf9a85c22f48d2f52f2380e4efce1768749a89"
+-  version = "v0.1"
+-
+-[[projects]]
+-  digest = "1:c587772fb8ad29ad4db67575dad25ba17a51f072ff18a22b4f0257a4d9c24f75"
+-  name = "github.com/stretchr/testify"
+-  packages = [
+-    "assert",
+-    "mock",
+-  ]
+-  pruneopts = ""
+-  revision = "f35b8ab0b5a2cef36673838d662e249dd9c94686"
+-  version = "v1.2.2"
+-
+-[[projects]]
+-  digest = "1:51cf0fca93f4866709ceaf01b750e51d997c299a7bd2edf7ccd79e3b428754ae"
+-  name = "github.com/vmihailenco/msgpack"
+-  packages = [
+-    ".",
+-    "codes",
+-  ]
+-  pruneopts = ""
+-  revision = "a053f3dac71df214bfe8b367f34220f0029c9c02"
+-  version = "v3.3.1"
+-
+-[[projects]]
+-  digest = "1:afc0b8068986a01e2d8f449917829753a54f6bd4d1265c2b4ad9cba75560020f"
+-  name = "github.com/xanzy/ssh-agent"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "640f0ab560aeb89d523bb6ac322b1244d5c3796c"
+-  version = "v0.2.0"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:3cf699a0df65293cc8fd2339606950d3e2f6d02a435703951d1da411a23f7cef"
+-  name = "github.com/yudai/gojsondiff"
+-  packages = [
+-    ".",
+-    "formatter",
+-  ]
+-  pruneopts = ""
+-  revision = "0525c875b75ca60b9e67ddc44496aa16f21066b0"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:9857bb2293f372b2181004d8b62179bbdb4ab0982ec6f762abe6cf2bfedaff85"
+-  name = "github.com/yudai/golcs"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "ecda9a501e8220fae3b4b600c3db4b0ba22cfc68"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:525776d99293affd2c61dfb573007ff9f22863068c20c220ef3f58620758c341"
+-  name = "github.com/yuin/gopher-lua"
+-  packages = [
+-    ".",
+-    "ast",
+-    "parse",
+-    "pm",
+-  ]
+-  pruneopts = ""
+-  revision = "732aa6820ec4fb93d60c4057dd574c33db8ad4e7"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:2ea6df0f542cc95a5e374e9cdd81eaa599ed0d55366eef92d2f6b9efa2795c07"
+-  name = "golang.org/x/crypto"
+-  packages = [
+-    "bcrypt",
+-    "blowfish",
+-    "cast5",
+-    "curve25519",
+-    "ed25519",
+-    "ed25519/internal/edwards25519",
+-    "internal/chacha20",
+-    "openpgp",
+-    "openpgp/armor",
+-    "openpgp/elgamal",
+-    "openpgp/errors",
+-    "openpgp/packet",
+-    "openpgp/s2k",
+-    "poly1305",
+-    "ssh",
+-    "ssh/agent",
+-    "ssh/knownhosts",
+-    "ssh/terminal",
+-  ]
+-  pruneopts = ""
+-  revision = "432090b8f568c018896cd8a0fb0345872bbac6ce"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:b4ba046df563f56fe42b6270b20039107a37e1ab47c97aa47a16f848aa5b6d9a"
+-  name = "golang.org/x/net"
+-  packages = [
+-    "context",
+-    "context/ctxhttp",
+-    "http2",
+-    "http2/hpack",
+-    "idna",
+-    "internal/timeseries",
+-    "lex/httplex",
+-    "trace",
+-  ]
+-  pruneopts = ""
+-  revision = "cbe0f9307d0156177f9dd5dc85da1a31abc5f2fb"
+-
+-[[projects]]
+-  digest = "1:8a58c605e58272e3d280181a24749b07499cf98968da6f7c1d19c8d5649c6b1b"
+-  name = "golang.org/x/oauth2"
+-  packages = [
+-    ".",
+-    "google",
+-    "internal",
+-    "jws",
+-    "jwt",
+-  ]
+-  pruneopts = ""
+-  revision = "cce311a261e6fcf29de72ca96827bdb0b7d9c9e6"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:b2ea75de0ccb2db2ac79356407f8a4cd8f798fe15d41b381c00abf3ae8e55ed1"
+-  name = "golang.org/x/sync"
+-  packages = [
+-    "errgroup",
+-    "semaphore",
+-  ]
+-  pruneopts = ""
+-  revision = "1d60e4601c6fd243af51cc01ddf169918a5407ca"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:ed900376500543ca05f2a2383e1f541b4606f19cd22f34acb81b17a0b90c7f3e"
+-  name = "golang.org/x/sys"
+-  packages = [
+-    "unix",
+-    "windows",
+-  ]
+-  pruneopts = ""
+-  revision = "d0be0721c37eeb5299f245a996a483160fc36940"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:31985a0ed491dba5ba7fe92e18be008acd92ca9435ed9b35b06f3e6c00fd82cb"
+-  name = "golang.org/x/text"
+-  packages = [
+-    "collate",
+-    "collate/build",
+-    "encoding",
+-    "encoding/internal",
+-    "encoding/internal/identifier",
+-    "encoding/unicode",
+-    "internal/colltab",
+-    "internal/gen",
+-    "internal/tag",
+-    "internal/triegen",
+-    "internal/ucd",
+-    "internal/utf8internal",
+-    "language",
+-    "runes",
+-    "secure/bidirule",
+-    "transform",
+-    "unicode/bidi",
+-    "unicode/cldr",
+-    "unicode/norm",
+-    "unicode/rangetable",
+-    "width",
+-  ]
+-  pruneopts = ""
+-  revision = "4e4a3210bb54bb31f6ab2cdca2edcc0b50c420c1"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:55a681cb66f28755765fa5fa5104cbd8dc85c55c02d206f9f89566451e3fe1aa"
+-  name = "golang.org/x/time"
+-  packages = ["rate"]
+-  pruneopts = ""
+-  revision = "fbb02b2291d28baffd63558aa44b4b56f178d650"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:77e1d6ed91936b206979806b0aacbf817ec54b840803d8f8cd7a1de5bfbf92a4"
+-  name = "golang.org/x/tools"
+-  packages = [
+-    "go/ast/astutil",
+-    "imports",
+-  ]
+-  pruneopts = ""
+-  revision = "5e776fee60db37e560cee3fb46db699d2f095386"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:e9e4b928898842a138bc345d42aae33741baa6d64f3ca69b0931f9c7a4fd0437"
+-  name = "gonum.org/v1/gonum"
+-  packages = [
+-    "blas",
+-    "blas/blas64",
+-    "blas/cblas128",
+-    "blas/gonum",
+-    "floats",
+-    "graph",
+-    "graph/internal/linear",
+-    "graph/internal/ordered",
+-    "graph/internal/set",
+-    "graph/internal/uid",
+-    "graph/iterator",
+-    "graph/simple",
+-    "graph/topo",
+-    "graph/traverse",
+-    "internal/asm/c128",
+-    "internal/asm/c64",
+-    "internal/asm/f32",
+-    "internal/asm/f64",
+-    "internal/cmplx64",
+-    "internal/math32",
+-    "lapack",
+-    "lapack/gonum",
+-    "lapack/lapack64",
+-    "mat",
+-  ]
+-  pruneopts = ""
+-  revision = "90b7154515874cee6c33cf56b29e257403a09a69"
+-
+-[[projects]]
+-  digest = "1:934fb8966f303ede63aa405e2c8d7f0a427a05ea8df335dfdc1833dd4d40756f"
+-  name = "google.golang.org/appengine"
+-  packages = [
+-    ".",
+-    "datastore",
+-    "internal",
+-    "internal/app_identity",
+-    "internal/base",
+-    "internal/datastore",
+-    "internal/log",
+-    "internal/modules",
+-    "internal/remote_api",
+-    "internal/urlfetch",
+-    "urlfetch",
+-  ]
+-  pruneopts = ""
+-  revision = "150dc57a1b433e64154302bdc40b6bb8aefa313a"
+-  version = "v1.0.0"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:2d833b53e432cd69645da559b822661ebc5c0a13c571dee1c1f80fb1a0241330"
+-  name = "google.golang.org/genproto"
+-  packages = [
+-    "googleapis/api/annotations",
+-    "googleapis/rpc/status",
+-  ]
+-  pruneopts = ""
+-  revision = "2b5a72b8730b0b16380010cfe5286c42108d88e7"
+-
+-[[projects]]
+-  digest = "1:15656947b87a6a240e61dcfae9e71a55a8d5677f240d12ab48f02cdbabf1e309"
+-  name = "google.golang.org/grpc"
+-  packages = [
+-    ".",
+-    "balancer",
+-    "balancer/base",
+-    "balancer/roundrobin",
+-    "codes",
+-    "connectivity",
+-    "credentials",
+-    "encoding",
+-    "encoding/proto",
+-    "grpclog",
+-    "internal",
+-    "internal/backoff",
+-    "internal/channelz",
+-    "internal/envconfig",
+-    "internal/grpcrand",
+-    "internal/transport",
+-    "keepalive",
+-    "metadata",
+-    "naming",
+-    "peer",
+-    "reflection",
+-    "reflection/grpc_reflection_v1alpha",
+-    "resolver",
+-    "resolver/dns",
+-    "resolver/passthrough",
+-    "stats",
+-    "status",
+-    "tap",
+-  ]
+-  pruneopts = ""
+-  revision = "8dea3dc473e90c8179e519d91302d0597c0ca1d1"
+-  version = "v1.15.0"
+-
+-[[projects]]
+-  digest = "1:adf5b0ae3467c3182757ecb86fbfe819939473bb870a42789dc1a3e7729397cd"
+-  name = "gopkg.in/go-playground/webhooks.v5"
+-  packages = [
+-    "bitbucket",
+-    "bitbucket-server",
+-    "github",
+-    "gitlab",
+-    "gogs",
+-  ]
+-  pruneopts = ""
+-  revision = "175186584584a83966dc9a7b8ec6c3d3a4ce6110"
+-  version = "v5.11.0"
+-
+-[[projects]]
+-  digest = "1:e5d1fb981765b6f7513f793a3fcaac7158408cca77f75f7311ac82cc88e9c445"
+-  name = "gopkg.in/inf.v0"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4"
+-  version = "v0.9.0"
+-
+-[[projects]]
+-  branch = "v2"
+-  digest = "1:c80894778314c7fb90d94a5ab925214900e1341afeddc953cda7398b8cdcd006"
+-  name = "gopkg.in/mgo.v2"
+-  packages = [
+-    "bson",
+-    "internal/json",
+-  ]
+-  pruneopts = ""
+-  revision = "3f83fa5005286a7fe593b055f0d7771a7dce4655"
+-
+-[[projects]]
+-  digest = "1:de0ec5755ee1a5e61f079c8855cf2073b5a5f614ae3b51db65f2c4e1044455fd"
+-  name = "gopkg.in/square/go-jose.v2"
+-  packages = [
+-    ".",
+-    "cipher",
+-    "json",
+-  ]
+-  pruneopts = ""
+-  revision = "76dd09796242edb5b897103a75df2645c028c960"
+-  version = "v2.1.6"
+-
+-[[projects]]
+-  digest = "1:c8f3ff1edaf7208bf7633e5952ffb8d697552343f8010aee12427400b434ae63"
+-  name = "gopkg.in/src-d/go-billy.v4"
+-  packages = [
+-    ".",
+-    "helper/chroot",
+-    "helper/polyfill",
+-    "osfs",
+-    "util",
+-  ]
+-  pruneopts = ""
+-  revision = "59952543636f55de3f860b477b615093d5c2c3e4"
+-  version = "v4.2.1"
+-
+-[[projects]]
+-  digest = "1:a72d911e18578e34367f4b849340501c7e6a2787a3a05651b3d53c6cb96990f4"
+-  name = "gopkg.in/src-d/go-git.v4"
+-  packages = [
+-    ".",
+-    "config",
+-    "internal/revision",
+-    "plumbing",
+-    "plumbing/cache",
+-    "plumbing/filemode",
+-    "plumbing/format/config",
+-    "plumbing/format/diff",
+-    "plumbing/format/gitignore",
+-    "plumbing/format/idxfile",
+-    "plumbing/format/index",
+-    "plumbing/format/objfile",
+-    "plumbing/format/packfile",
+-    "plumbing/format/pktline",
+-    "plumbing/object",
+-    "plumbing/protocol/packp",
+-    "plumbing/protocol/packp/capability",
+-    "plumbing/protocol/packp/sideband",
+-    "plumbing/revlist",
+-    "plumbing/storer",
+-    "plumbing/transport",
+-    "plumbing/transport/client",
+-    "plumbing/transport/file",
+-    "plumbing/transport/git",
+-    "plumbing/transport/http",
+-    "plumbing/transport/internal/common",
+-    "plumbing/transport/server",
+-    "plumbing/transport/ssh",
+-    "storage",
+-    "storage/filesystem",
+-    "storage/filesystem/dotgit",
+-    "storage/memory",
+-    "utils/binary",
+-    "utils/diff",
+-    "utils/ioutil",
+-    "utils/merkletrie",
+-    "utils/merkletrie/filesystem",
+-    "utils/merkletrie/index",
+-    "utils/merkletrie/internal/frame",
+-    "utils/merkletrie/noder",
+-  ]
+-  pruneopts = ""
+-  revision = "a1f6ef44dfed1253ef7f3bc049f66b15f8fc2ab2"
+-  version = "v4.9.1"
+-
+-[[projects]]
+-  digest = "1:ceec7e96590fb8168f36df4795fefe17051d4b0c2acc7ec4e260d8138c4dafac"
+-  name = "gopkg.in/warnings.v0"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "ec4a0fea49c7b46c2aeb0b51aac55779c607e52b"
+-  version = "v0.1.2"
+-
+-[[projects]]
+-  digest = "1:cedccf16b71e86db87a24f8d4c70b0a855872eb967cb906a66b95de56aefbd0d"
+-  name = "gopkg.in/yaml.v2"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "51d6538a90f86fe93ac480b35f37b2be17fef232"
+-  version = "v2.2.2"
+-
+-[[projects]]
+-  branch = "release-1.16"
+-  digest = "1:5e5cfbab57ea5444c1eb295a39fdc403f097f5ace592c829db7b3e0e3ea66903"
+-  name = "k8s.io/api"
+-  packages = [
+-    "admission/v1",
+-    "admission/v1beta1",
+-    "admissionregistration/v1",
+-    "admissionregistration/v1beta1",
+-    "apps/v1",
+-    "apps/v1beta1",
+-    "apps/v1beta2",
+-    "auditregistration/v1alpha1",
+-    "authentication/v1",
+-    "authentication/v1beta1",
+-    "authorization/v1",
+-    "authorization/v1beta1",
+-    "autoscaling/v1",
+-    "autoscaling/v2beta1",
+-    "autoscaling/v2beta2",
+-    "batch/v1",
+-    "batch/v1beta1",
+-    "batch/v2alpha1",
+-    "certificates/v1beta1",
+-    "coordination/v1",
+-    "coordination/v1beta1",
+-    "core/v1",
+-    "discovery/v1alpha1",
+-    "events/v1beta1",
+-    "extensions/v1beta1",
+-    "imagepolicy/v1alpha1",
+-    "networking/v1",
+-    "networking/v1beta1",
+-    "node/v1alpha1",
+-    "node/v1beta1",
+-    "policy/v1beta1",
+-    "rbac/v1",
+-    "rbac/v1alpha1",
+-    "rbac/v1beta1",
+-    "scheduling/v1",
+-    "scheduling/v1alpha1",
+-    "scheduling/v1beta1",
+-    "settings/v1alpha1",
+-    "storage/v1",
+-    "storage/v1alpha1",
+-    "storage/v1beta1",
+-  ]
+-  pruneopts = ""
+-  revision = "195af9ec35214c6d98662c5791364285bf2e2cf2"
+-
+-[[projects]]
+-  branch = "release-1.16"
+-  digest = "1:7f29d62c07c68767171cf2ed8598e0cb862b99584bb8beb93189e2ed00ac520e"
+-  name = "k8s.io/apiextensions-apiserver"
+-  packages = [
+-    "pkg/apis/apiextensions",
+-    "pkg/apis/apiextensions/v1",
+-    "pkg/apis/apiextensions/v1beta1",
+-    "pkg/client/clientset/clientset",
+-    "pkg/client/clientset/clientset/scheme",
+-    "pkg/client/clientset/clientset/typed/apiextensions/v1",
+-    "pkg/client/clientset/clientset/typed/apiextensions/v1beta1",
+-    "pkg/features",
+-  ]
+-  pruneopts = ""
+-  revision = "07afe84a85e43cf2503133660c424a0b594b21db"
+-
+-[[projects]]
+-  branch = "release-1.16"
+-  digest = "1:36db89a45a8cb3d565f7ebfd67dafd42c9c0bbb80d6bbd4991629b39b02a4c64"
+-  name = "k8s.io/apimachinery"
+-  packages = [
+-    "pkg/api/equality",
+-    "pkg/api/errors",
+-    "pkg/api/meta",
+-    "pkg/api/resource",
+-    "pkg/api/validation",
+-    "pkg/api/validation/path",
+-    "pkg/apis/meta/internalversion",
+-    "pkg/apis/meta/v1",
+-    "pkg/apis/meta/v1/unstructured",
+-    "pkg/apis/meta/v1/unstructured/unstructuredscheme",
+-    "pkg/apis/meta/v1/validation",
+-    "pkg/apis/meta/v1beta1",
+-    "pkg/conversion",
+-    "pkg/conversion/queryparams",
+-    "pkg/fields",
+-    "pkg/labels",
+-    "pkg/runtime",
+-    "pkg/runtime/schema",
+-    "pkg/runtime/serializer",
+-    "pkg/runtime/serializer/json",
+-    "pkg/runtime/serializer/protobuf",
+-    "pkg/runtime/serializer/recognizer",
+-    "pkg/runtime/serializer/streaming",
+-    "pkg/runtime/serializer/versioning",
+-    "pkg/selection",
+-    "pkg/types",
+-    "pkg/util/cache",
+-    "pkg/util/clock",
+-    "pkg/util/diff",
+-    "pkg/util/duration",
+-    "pkg/util/errors",
+-    "pkg/util/framer",
+-    "pkg/util/httpstream",
+-    "pkg/util/httpstream/spdy",
+-    "pkg/util/intstr",
+-    "pkg/util/json",
+-    "pkg/util/jsonmergepatch",
+-    "pkg/util/mergepatch",
+-    "pkg/util/naming",
+-    "pkg/util/net",
+-    "pkg/util/remotecommand",
+-    "pkg/util/runtime",
+-    "pkg/util/sets",
+-    "pkg/util/strategicpatch",
+-    "pkg/util/validation",
+-    "pkg/util/validation/field",
+-    "pkg/util/wait",
+-    "pkg/util/yaml",
+-    "pkg/version",
+-    "pkg/watch",
+-    "third_party/forked/golang/json",
+-    "third_party/forked/golang/netutil",
+-    "third_party/forked/golang/reflect",
+-  ]
+-  pruneopts = ""
+-  revision = "72ed19daf4bb788ae595ae4103c404cb0fa09c84"
+-
+-[[projects]]
+-  branch = "release-1.16"
+-  digest = "1:4e236f3f94cfc5f005ceb143948ad39a4b2ad10373f394b232838f797bddd6ef"
+-  name = "k8s.io/apiserver"
+-  packages = [
+-    "pkg/apis/audit",
+-    "pkg/authentication/serviceaccount",
+-    "pkg/authentication/user",
+-    "pkg/endpoints/request",
+-    "pkg/features",
+-    "pkg/util/feature",
+-  ]
+-  pruneopts = ""
+-  revision = "ebfe712c1fff40c4800d779470515e6025eda218"
+-
+-[[projects]]
+-  branch = "release-1.16"
+-  digest = "1:b46a88b317c3187b6fa7c5351eca48b35aad182eee371168677747430ff955bb"
+-  name = "k8s.io/cli-runtime"
+-  packages = [
+-    "pkg/genericclioptions",
+-    "pkg/kustomize",
+-    "pkg/kustomize/k8sdeps",
+-    "pkg/kustomize/k8sdeps/configmapandsecret",
+-    "pkg/kustomize/k8sdeps/kunstruct",
+-    "pkg/kustomize/k8sdeps/kv",
+-    "pkg/kustomize/k8sdeps/transformer",
+-    "pkg/kustomize/k8sdeps/transformer/hash",
+-    "pkg/kustomize/k8sdeps/transformer/patch",
+-    "pkg/kustomize/k8sdeps/validator",
+-    "pkg/printers",
+-    "pkg/resource",
+-  ]
+-  pruneopts = ""
+-  revision = "6bff60de437070d7e8644b7a930837d5de512240"
+-
+-[[projects]]
+-  branch = "release-13.0"
+-  digest = "1:84f90f6a3b5b16f2c57164c5281d302b2647da8f77aa9cb14d5ebeb17fccc25e"
+-  name = "k8s.io/client-go"
+-  packages = [
+-    "discovery",
+-    "discovery/cached/disk",
+-    "discovery/fake",
+-    "dynamic",
+-    "dynamic/fake",
+-    "informers/core/v1",
+-    "informers/internalinterfaces",
+-    "kubernetes",
+-    "kubernetes/fake",
+-    "kubernetes/scheme",
+-    "kubernetes/typed/admissionregistration/v1",
+-    "kubernetes/typed/admissionregistration/v1/fake",
+-    "kubernetes/typed/admissionregistration/v1beta1",
+-    "kubernetes/typed/admissionregistration/v1beta1/fake",
+-    "kubernetes/typed/apps/v1",
+-    "kubernetes/typed/apps/v1/fake",
+-    "kubernetes/typed/apps/v1beta1",
+-    "kubernetes/typed/apps/v1beta1/fake",
+-    "kubernetes/typed/apps/v1beta2",
+-    "kubernetes/typed/apps/v1beta2/fake",
+-    "kubernetes/typed/auditregistration/v1alpha1",
+-    "kubernetes/typed/auditregistration/v1alpha1/fake",
+-    "kubernetes/typed/authentication/v1",
+-    "kubernetes/typed/authentication/v1/fake",
+-    "kubernetes/typed/authentication/v1beta1",
+-    "kubernetes/typed/authentication/v1beta1/fake",
+-    "kubernetes/typed/authorization/v1",
+-    "kubernetes/typed/authorization/v1/fake",
+-    "kubernetes/typed/authorization/v1beta1",
+-    "kubernetes/typed/authorization/v1beta1/fake",
+-    "kubernetes/typed/autoscaling/v1",
+-    "kubernetes/typed/autoscaling/v1/fake",
+-    "kubernetes/typed/autoscaling/v2beta1",
+-    "kubernetes/typed/autoscaling/v2beta1/fake",
+-    "kubernetes/typed/autoscaling/v2beta2",
+-    "kubernetes/typed/autoscaling/v2beta2/fake",
+-    "kubernetes/typed/batch/v1",
+-    "kubernetes/typed/batch/v1/fake",
+-    "kubernetes/typed/batch/v1beta1",
+-    "kubernetes/typed/batch/v1beta1/fake",
+-    "kubernetes/typed/batch/v2alpha1",
+-    "kubernetes/typed/batch/v2alpha1/fake",
+-    "kubernetes/typed/certificates/v1beta1",
+-    "kubernetes/typed/certificates/v1beta1/fake",
+-    "kubernetes/typed/coordination/v1",
+-    "kubernetes/typed/coordination/v1/fake",
+-    "kubernetes/typed/coordination/v1beta1",
+-    "kubernetes/typed/coordination/v1beta1/fake",
+-    "kubernetes/typed/core/v1",
+-    "kubernetes/typed/core/v1/fake",
+-    "kubernetes/typed/discovery/v1alpha1",
+-    "kubernetes/typed/discovery/v1alpha1/fake",
+-    "kubernetes/typed/events/v1beta1",
+-    "kubernetes/typed/events/v1beta1/fake",
+-    "kubernetes/typed/extensions/v1beta1",
+-    "kubernetes/typed/extensions/v1beta1/fake",
+-    "kubernetes/typed/networking/v1",
+-    "kubernetes/typed/networking/v1/fake",
+-    "kubernetes/typed/networking/v1beta1",
+-    "kubernetes/typed/networking/v1beta1/fake",
+-    "kubernetes/typed/node/v1alpha1",
+-    "kubernetes/typed/node/v1alpha1/fake",
+-    "kubernetes/typed/node/v1beta1",
+-    "kubernetes/typed/node/v1beta1/fake",
+-    "kubernetes/typed/policy/v1beta1",
+-    "kubernetes/typed/policy/v1beta1/fake",
+-    "kubernetes/typed/rbac/v1",
+-    "kubernetes/typed/rbac/v1/fake",
+-    "kubernetes/typed/rbac/v1alpha1",
+-    "kubernetes/typed/rbac/v1alpha1/fake",
+-    "kubernetes/typed/rbac/v1beta1",
+-    "kubernetes/typed/rbac/v1beta1/fake",
+-    "kubernetes/typed/scheduling/v1",
+-    "kubernetes/typed/scheduling/v1/fake",
+-    "kubernetes/typed/scheduling/v1alpha1",
+-    "kubernetes/typed/scheduling/v1alpha1/fake",
+-    "kubernetes/typed/scheduling/v1beta1",
+-    "kubernetes/typed/scheduling/v1beta1/fake",
+-    "kubernetes/typed/settings/v1alpha1",
+-    "kubernetes/typed/settings/v1alpha1/fake",
+-    "kubernetes/typed/storage/v1",
+-    "kubernetes/typed/storage/v1/fake",
+-    "kubernetes/typed/storage/v1alpha1",
+-    "kubernetes/typed/storage/v1alpha1/fake",
+-    "kubernetes/typed/storage/v1beta1",
+-    "kubernetes/typed/storage/v1beta1/fake",
+-    "listers/core/v1",
+-    "pkg/apis/clientauthentication",
+-    "pkg/apis/clientauthentication/v1alpha1",
+-    "pkg/apis/clientauthentication/v1beta1",
+-    "pkg/version",
+-    "plugin/pkg/client/auth/exec",
+-    "plugin/pkg/client/auth/gcp",
+-    "plugin/pkg/client/auth/oidc",
+-    "rest",
+-    "rest/watch",
+-    "restmapper",
+-    "scale",
+-    "scale/scheme",
+-    "scale/scheme/appsint",
+-    "scale/scheme/appsv1beta1",
+-    "scale/scheme/appsv1beta2",
+-    "scale/scheme/autoscalingv1",
+-    "scale/scheme/extensionsint",
+-    "scale/scheme/extensionsv1beta1",
+-    "testing",
+-    "third_party/forked/golang/template",
+-    "tools/auth",
+-    "tools/cache",
+-    "tools/clientcmd",
+-    "tools/clientcmd/api",
+-    "tools/clientcmd/api/latest",
+-    "tools/clientcmd/api/v1",
+-    "tools/metrics",
+-    "tools/pager",
+-    "tools/portforward",
+-    "tools/reference",
+-    "tools/remotecommand",
+-    "tools/watch",
+-    "transport",
+-    "transport/spdy",
+-    "util/cert",
+-    "util/connrotation",
+-    "util/exec",
+-    "util/flowcontrol",
+-    "util/homedir",
+-    "util/jsonpath",
+-    "util/keyutil",
+-    "util/retry",
+-    "util/workqueue",
+-  ]
+-  pruneopts = ""
+-  revision = "85029d69edeae82e97dd1a0de3b24668cee9a15d"
+-
+-[[projects]]
+-  branch = "release-1.16"
+-  digest = "1:254da4cb69b3776686b730a206e081e6f8898bb64760619d1895c25c407e718f"
+-  name = "k8s.io/code-generator"
+-  packages = [
+-    "cmd/go-to-protobuf",
+-    "cmd/go-to-protobuf/protobuf",
+-    "pkg/util",
+-    "third_party/forked/golang/reflect",
+-  ]
+-  pruneopts = ""
+-  revision = "8e001e5d18949be7e823ccb9cfe9b60026e7bda0"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:06c18e328063f3612dfda3c4c5e5b8becda1eabceca689335c8d98704dffe70a"
+-  name = "k8s.io/component-base"
+-  packages = ["featuregate"]
+-  pruneopts = ""
+-  revision = "435ce712a6949916fa293dc4d3d49429962043d8"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:6a2a63e09a59caff3fd2d36d69b7b92c2fe7cf783390f0b7349fb330820f9a8e"
+-  name = "k8s.io/gengo"
+-  packages = [
+-    "args",
+-    "examples/set-gen/sets",
+-    "generator",
+-    "namer",
+-    "parser",
+-    "types",
+-  ]
+-  pruneopts = ""
+-  revision = "e17681d19d3ac4837a019ece36c2a0ec31ffe985"
+-
+-[[projects]]
+-  digest = "1:9eaf86f4f6fb4a8f177220d488ef1e3255d06a691cca95f14ef085d4cd1cef3c"
+-  name = "k8s.io/klog"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "d98d8acdac006fb39831f1b25640813fef9c314f"
+-  version = "v0.3.3"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:0d737d598e9db0a38d6ef6cba514c358b9fe7e1bc6b1128d02b2622700c75f2a"
+-  name = "k8s.io/kube-aggregator"
+-  packages = [
+-    "pkg/apis/apiregistration",
+-    "pkg/apis/apiregistration/v1",
+-    "pkg/apis/apiregistration/v1beta1",
+-  ]
+-  pruneopts = ""
+-  revision = "e80910364765199a4baebd4dec54c885fe52b680"
+-
+-[[projects]]
+-  digest = "1:16a343bd9d820ae320de4d1eaa8acc7a214aac4b38fb21d03255d3a457d861df"
+-  name = "k8s.io/kube-openapi"
+-  packages = [
+-    "cmd/openapi-gen",
+-    "cmd/openapi-gen/args",
+-    "pkg/common",
+-    "pkg/generators",
+-    "pkg/generators/rules",
+-    "pkg/util/proto",
+-    "pkg/util/proto/validation",
+-    "pkg/util/sets",
+-  ]
+-  pruneopts = ""
+-  revision = "30be4d16710ac61bce31eb28a01054596fe6a9f1"
+-
+-[[projects]]
+-  branch = "release-1.16"
+-  digest = "1:687af22932f9b53ff2e6755b2eefe160f076d522794abb980f0ddb187bcefacd"
+-  name = "k8s.io/kubectl"
+-  packages = [
+-    "pkg/cmd/apply",
+-    "pkg/cmd/delete",
+-    "pkg/cmd/util",
+-    "pkg/cmd/util/editor",
+-    "pkg/cmd/util/editor/crlf",
+-    "pkg/cmd/wait",
+-    "pkg/describe",
+-    "pkg/describe/versioned",
+-    "pkg/generated",
+-    "pkg/rawhttp",
+-    "pkg/scheme",
+-    "pkg/util",
+-    "pkg/util/certificate",
+-    "pkg/util/deployment",
+-    "pkg/util/event",
+-    "pkg/util/fieldpath",
+-    "pkg/util/i18n",
+-    "pkg/util/interrupt",
+-    "pkg/util/openapi",
+-    "pkg/util/openapi/validation",
+-    "pkg/util/printers",
+-    "pkg/util/qos",
+-    "pkg/util/rbac",
+-    "pkg/util/resource",
+-    "pkg/util/slice",
+-    "pkg/util/storage",
+-    "pkg/util/templates",
+-    "pkg/util/term",
+-    "pkg/validation",
+-    "pkg/version",
+-  ]
+-  pruneopts = ""
+-  revision = "14647fd13a8b4cffc5a8f327b0018e037f72e4e8"
+-
+-[[projects]]
+-  branch = "release-1.16"
+-  digest = "1:02241e5570c239d31e52955b1a8e6d603a35fd6542d14e98882fb6c3c4ef3d56"
+-  name = "k8s.io/kubernetes"
+-  packages = [
+-    "pkg/api/legacyscheme",
+-    "pkg/api/v1/pod",
+-    "pkg/apis/apps",
+-    "pkg/apis/apps/install",
+-    "pkg/apis/apps/v1",
+-    "pkg/apis/apps/v1beta1",
+-    "pkg/apis/apps/v1beta2",
+-    "pkg/apis/authentication",
+-    "pkg/apis/authentication/install",
+-    "pkg/apis/authentication/v1",
+-    "pkg/apis/authentication/v1beta1",
+-    "pkg/apis/authorization",
+-    "pkg/apis/authorization/install",
+-    "pkg/apis/authorization/v1",
+-    "pkg/apis/authorization/v1beta1",
+-    "pkg/apis/autoscaling",
+-    "pkg/apis/autoscaling/install",
+-    "pkg/apis/autoscaling/v1",
+-    "pkg/apis/autoscaling/v2beta1",
+-    "pkg/apis/autoscaling/v2beta2",
+-    "pkg/apis/batch",
+-    "pkg/apis/batch/install",
+-    "pkg/apis/batch/v1",
+-    "pkg/apis/batch/v1beta1",
+-    "pkg/apis/batch/v2alpha1",
+-    "pkg/apis/certificates",
+-    "pkg/apis/certificates/install",
+-    "pkg/apis/certificates/v1beta1",
+-    "pkg/apis/coordination",
+-    "pkg/apis/coordination/install",
+-    "pkg/apis/coordination/v1",
+-    "pkg/apis/coordination/v1beta1",
+-    "pkg/apis/core",
+-    "pkg/apis/core/install",
+-    "pkg/apis/core/v1",
+-    "pkg/apis/events",
+-    "pkg/apis/events/install",
+-    "pkg/apis/events/v1beta1",
+-    "pkg/apis/extensions",
+-    "pkg/apis/extensions/install",
+-    "pkg/apis/extensions/v1beta1",
+-    "pkg/apis/networking",
+-    "pkg/apis/policy",
+-    "pkg/apis/policy/install",
+-    "pkg/apis/policy/v1beta1",
+-    "pkg/apis/rbac",
+-    "pkg/apis/rbac/install",
+-    "pkg/apis/rbac/v1",
+-    "pkg/apis/rbac/v1alpha1",
+-    "pkg/apis/rbac/v1beta1",
+-    "pkg/apis/scheduling",
+-    "pkg/apis/scheduling/install",
+-    "pkg/apis/scheduling/v1",
+-    "pkg/apis/scheduling/v1alpha1",
+-    "pkg/apis/scheduling/v1beta1",
+-    "pkg/apis/settings",
+-    "pkg/apis/settings/install",
+-    "pkg/apis/settings/v1alpha1",
+-    "pkg/apis/storage",
+-    "pkg/apis/storage/install",
+-    "pkg/apis/storage/v1",
+-    "pkg/apis/storage/v1alpha1",
+-    "pkg/apis/storage/v1beta1",
+-    "pkg/features",
+-    "pkg/kubectl/cmd/auth",
+-    "pkg/registry/rbac/reconciliation",
+-    "pkg/registry/rbac/validation",
+-    "pkg/util/node",
+-    "pkg/util/parsers",
+-    "pkg/util/slice",
+-    "pkg/util/workqueue/prometheus",
+-  ]
+-  pruneopts = ""
+-  revision = "bfafae8f1c2fdf3c3cfef04674db028531a7c098"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:a8a2e6bbef691323b833d0eb11bb0e570e7eb9619ac76f7b11265530e1cac922"
+-  name = "k8s.io/utils"
+-  packages = [
+-    "buffer",
+-    "exec",
+-    "integer",
+-    "net",
+-    "pointer",
+-    "trace",
+-  ]
+-  pruneopts = ""
+-  revision = "6ca3b61696b65b0e81f1a39b4937fc2d2994ed6a"
+-
+-[[projects]]
+-  branch = "master"
+-  digest = "1:9b9f12f4c13ca4a4f4b4554c00ba46cb2910ff4079825d96d520b03c447e6da5"
+-  name = "layeh.com/gopher-json"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "97fed8db84274c421dbfffbb28ec859901556b97"
+-
+-[[projects]]
+-  digest = "1:0b2daace3dcced8712072529b621360cf520f3c2ead92d755f35a0ec8dca2714"
+-  name = "sigs.k8s.io/kustomize"
+-  packages = [
+-    "pkg/commands/build",
+-    "pkg/constants",
+-    "pkg/expansion",
+-    "pkg/factory",
+-    "pkg/fs",
+-    "pkg/git",
+-    "pkg/gvk",
+-    "pkg/ifc",
+-    "pkg/ifc/transformer",
+-    "pkg/image",
+-    "pkg/internal/error",
+-    "pkg/loader",
+-    "pkg/patch",
+-    "pkg/patch/transformer",
+-    "pkg/resid",
+-    "pkg/resmap",
+-    "pkg/resource",
+-    "pkg/target",
+-    "pkg/transformers",
+-    "pkg/transformers/config",
+-    "pkg/transformers/config/defaultconfig",
+-    "pkg/types",
+-  ]
+-  pruneopts = ""
+-  revision = "a6f65144121d1955266b0cd836ce954c04122dc8"
+-  version = "v2.0.3"
+-
+-[[projects]]
+-  digest = "1:321081b4a44256715f2b68411d8eda9a17f17ebfe6f0cc61d2cc52d11c08acfa"
+-  name = "sigs.k8s.io/yaml"
+-  packages = ["."]
+-  pruneopts = ""
+-  revision = "fd68e9863619f6ec2fdd8625fe1f02e7c877e480"
+-  version = "v1.1.0"
+-
+-[solve-meta]
+-  analyzer-name = "dep"
+-  analyzer-version = 1
+-  input-imports = [
+-    "bou.ke/monkey",
+-    "github.com/Masterminds/semver",
+-    "github.com/TomOnTime/utfutil",
+-    "github.com/argoproj/pkg/errors",
+-    "github.com/argoproj/pkg/exec",
+-    "github.com/argoproj/pkg/time",
+-    "github.com/casbin/casbin",
+-    "github.com/casbin/casbin/model",
+-    "github.com/coreos/go-oidc",
+-    "github.com/dgrijalva/jwt-go",
+-    "github.com/dustin/go-humanize",
+-    "github.com/evanphx/json-patch",
+-    "github.com/ghodss/yaml",
+-    "github.com/go-openapi/loads",
+-    "github.com/go-openapi/runtime/middleware",
+-    "github.com/go-openapi/spec",
+-    "github.com/go-redis/cache",
+-    "github.com/go-redis/redis",
+-    "github.com/gobuffalo/packr",
+-    "github.com/gobwas/glob",
+-    "github.com/gogits/go-gogs-client",
+-    "github.com/gogo/protobuf/gogoproto",
+-    "github.com/gogo/protobuf/proto",
+-    "github.com/gogo/protobuf/protoc-gen-gofast",
+-    "github.com/gogo/protobuf/protoc-gen-gogofast",
+-    "github.com/gogo/protobuf/sortkeys",
+-    "github.com/golang/protobuf/proto",
+-    "github.com/golang/protobuf/protoc-gen-go",
+-    "github.com/golang/protobuf/ptypes/empty",
+-    "github.com/google/go-jsonnet",
+-    "github.com/google/shlex",
+-    "github.com/grpc-ecosystem/go-grpc-middleware",
+-    "github.com/grpc-ecosystem/go-grpc-middleware/auth",
+-    "github.com/grpc-ecosystem/go-grpc-middleware/logging",
+-    "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus",
+-    "github.com/grpc-ecosystem/go-grpc-middleware/retry",
+-    "github.com/grpc-ecosystem/go-grpc-middleware/tags/logrus",
+-    "github.com/grpc-ecosystem/go-grpc-prometheus",
+-    "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway",
+-    "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger",
+-    "github.com/grpc-ecosystem/grpc-gateway/runtime",
+-    "github.com/grpc-ecosystem/grpc-gateway/utilities",
+-    "github.com/improbable-eng/grpc-web/go/grpcweb",
+-    "github.com/kballard/go-shellquote",
+-    "github.com/patrickmn/go-cache",
+-    "github.com/pkg/errors",
+-    "github.com/prometheus/client_golang/prometheus",
+-    "github.com/prometheus/client_golang/prometheus/promhttp",
+-    "github.com/robfig/cron",
+-    "github.com/sirupsen/logrus",
+-    "github.com/sirupsen/logrus/hooks/test",
+-    "github.com/skratchdot/open-golang/open",
+-    "github.com/soheilhy/cmux",
+-    "github.com/spf13/cobra",
+-    "github.com/spf13/pflag",
+-    "github.com/stretchr/testify/assert",
+-    "github.com/stretchr/testify/mock",
+-    "github.com/vmihailenco/msgpack",
+-    "github.com/yudai/gojsondiff",
+-    "github.com/yudai/gojsondiff/formatter",
+-    "github.com/yuin/gopher-lua",
+-    "golang.org/x/crypto/bcrypt",
+-    "golang.org/x/crypto/ssh",
+-    "golang.org/x/crypto/ssh/knownhosts",
+-    "golang.org/x/crypto/ssh/terminal",
+-    "golang.org/x/net/context",
+-    "golang.org/x/oauth2",
+-    "golang.org/x/sync/errgroup",
+-    "golang.org/x/sync/semaphore",
+-    "google.golang.org/genproto/googleapis/api/annotations",
+-    "google.golang.org/grpc",
+-    "google.golang.org/grpc/codes",
+-    "google.golang.org/grpc/credentials",
+-    "google.golang.org/grpc/grpclog",
+-    "google.golang.org/grpc/metadata",
+-    "google.golang.org/grpc/reflection",
+-    "google.golang.org/grpc/status",
+-    "gopkg.in/go-playground/webhooks.v5/bitbucket",
+-    "gopkg.in/go-playground/webhooks.v5/bitbucket-server",
+-    "gopkg.in/go-playground/webhooks.v5/github",
+-    "gopkg.in/go-playground/webhooks.v5/gitlab",
+-    "gopkg.in/go-playground/webhooks.v5/gogs",
+-    "gopkg.in/src-d/go-git.v4",
+-    "gopkg.in/src-d/go-git.v4/config",
+-    "gopkg.in/src-d/go-git.v4/plumbing",
+-    "gopkg.in/src-d/go-git.v4/plumbing/transport",
+-    "gopkg.in/src-d/go-git.v4/plumbing/transport/client",
+-    "gopkg.in/src-d/go-git.v4/plumbing/transport/http",
+-    "gopkg.in/src-d/go-git.v4/plumbing/transport/ssh",
+-    "gopkg.in/src-d/go-git.v4/storage/memory",
+-    "gopkg.in/src-d/go-git.v4/utils/ioutil",
+-    "gopkg.in/yaml.v2",
+-    "k8s.io/api/apps/v1",
+-    "k8s.io/api/batch/v1",
+-    "k8s.io/api/core/v1",
+-    "k8s.io/api/extensions/v1beta1",
+-    "k8s.io/api/networking/v1beta1",
+-    "k8s.io/api/rbac/v1",
+-    "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1",
+-    "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset",
+-    "k8s.io/apimachinery/pkg/api/equality",
+-    "k8s.io/apimachinery/pkg/api/errors",
+-    "k8s.io/apimachinery/pkg/apis/meta/v1",
+-    "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
+-    "k8s.io/apimachinery/pkg/fields",
+-    "k8s.io/apimachinery/pkg/labels",
+-    "k8s.io/apimachinery/pkg/runtime",
+-    "k8s.io/apimachinery/pkg/runtime/schema",
+-    "k8s.io/apimachinery/pkg/runtime/serializer",
+-    "k8s.io/apimachinery/pkg/selection",
+-    "k8s.io/apimachinery/pkg/types",
+-    "k8s.io/apimachinery/pkg/util/intstr",
+-    "k8s.io/apimachinery/pkg/util/jsonmergepatch",
+-    "k8s.io/apimachinery/pkg/util/runtime",
+-    "k8s.io/apimachinery/pkg/util/strategicpatch",
+-    "k8s.io/apimachinery/pkg/util/wait",
+-    "k8s.io/apimachinery/pkg/watch",
+-    "k8s.io/cli-runtime/pkg/genericclioptions",
+-    "k8s.io/cli-runtime/pkg/printers",
+-    "k8s.io/client-go/discovery",
+-    "k8s.io/client-go/discovery/fake",
+-    "k8s.io/client-go/dynamic",
+-    "k8s.io/client-go/dynamic/fake",
+-    "k8s.io/client-go/informers/core/v1",
+-    "k8s.io/client-go/kubernetes",
+-    "k8s.io/client-go/kubernetes/fake",
+-    "k8s.io/client-go/kubernetes/scheme",
+-    "k8s.io/client-go/listers/core/v1",
+-    "k8s.io/client-go/plugin/pkg/client/auth/gcp",
+-    "k8s.io/client-go/plugin/pkg/client/auth/oidc",
+-    "k8s.io/client-go/rest",
+-    "k8s.io/client-go/testing",
+-    "k8s.io/client-go/tools/cache",
+-    "k8s.io/client-go/tools/clientcmd",
+-    "k8s.io/client-go/tools/clientcmd/api",
+-    "k8s.io/client-go/tools/portforward",
+-    "k8s.io/client-go/transport/spdy",
+-    "k8s.io/client-go/util/flowcontrol",
+-    "k8s.io/client-go/util/workqueue",
+-    "k8s.io/code-generator/cmd/go-to-protobuf",
+-    "k8s.io/klog",
+-    "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1",
+-    "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1",
+-    "k8s.io/kube-openapi/cmd/openapi-gen",
+-    "k8s.io/kube-openapi/pkg/common",
+-    "k8s.io/kubectl/pkg/cmd/apply",
+-    "k8s.io/kubectl/pkg/cmd/util",
+-    "k8s.io/kubectl/pkg/scheme",
+-    "k8s.io/kubectl/pkg/util/term",
+-    "k8s.io/kubernetes/pkg/api/legacyscheme",
+-    "k8s.io/kubernetes/pkg/api/v1/pod",
+-    "k8s.io/kubernetes/pkg/apis/apps/install",
+-    "k8s.io/kubernetes/pkg/apis/authentication/install",
+-    "k8s.io/kubernetes/pkg/apis/authorization/install",
+-    "k8s.io/kubernetes/pkg/apis/autoscaling/install",
+-    "k8s.io/kubernetes/pkg/apis/batch/install",
+-    "k8s.io/kubernetes/pkg/apis/certificates/install",
+-    "k8s.io/kubernetes/pkg/apis/coordination/install",
+-    "k8s.io/kubernetes/pkg/apis/core",
+-    "k8s.io/kubernetes/pkg/apis/core/install",
+-    "k8s.io/kubernetes/pkg/apis/events/install",
+-    "k8s.io/kubernetes/pkg/apis/extensions/install",
+-    "k8s.io/kubernetes/pkg/apis/policy/install",
+-    "k8s.io/kubernetes/pkg/apis/rbac/install",
+-    "k8s.io/kubernetes/pkg/apis/scheduling/install",
+-    "k8s.io/kubernetes/pkg/apis/settings/install",
+-    "k8s.io/kubernetes/pkg/apis/storage/install",
+-    "k8s.io/kubernetes/pkg/kubectl/cmd/auth",
+-    "k8s.io/kubernetes/pkg/util/node",
+-    "k8s.io/kubernetes/pkg/util/slice",
+-    "k8s.io/kubernetes/pkg/util/workqueue/prometheus",
+-    "k8s.io/utils/pointer",
+-    "layeh.com/gopher-json",
+-  ]
+-  solver-name = "gps-cdcl"
+-  solver-version = 1
+diff --git a/Gopkg.toml b/Gopkg.toml
+deleted file mode 100644
+index 2fa04ee4..00000000
+--- a/Gopkg.toml
++++ /dev/null
+@@ -1,117 +0,0 @@
+-# Packages should only be added to the following list when we use them *outside* of our go code.
+-# (e.g. we want to build the binary to invoke as part of the build process, such as in
+-# generate-proto.sh). Normal use of golang packages should be added via `dep ensure`, and pinned
+-# with a [[constraint]] or [[override]] when version is important.
+-required = [
+-  "github.com/golang/protobuf/protoc-gen-go",
+-  "github.com/gogo/protobuf/protoc-gen-gofast",
+-  "github.com/gogo/protobuf/protoc-gen-gogofast",
+-  "k8s.io/code-generator/cmd/go-to-protobuf",
+-  "k8s.io/kube-openapi/cmd/openapi-gen",
+-  "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway",
+-  "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger",
+-  "golang.org/x/sync/errgroup",
+-]
+-
+-[[constraint]]
+-  name = "google.golang.org/grpc"
+-  version = "1.15.0"
+-
+-[[constraint]]
+-  name = "github.com/gogo/protobuf"
+-  version = "1.3.1"
+-
+-# override github.com/grpc-ecosystem/go-grpc-middleware's constraint on master
+-[[override]]
+-  name = "github.com/golang/protobuf"
+-  version = "1.2.0"
+-
+-[[constraint]]
+-  name = "github.com/grpc-ecosystem/grpc-gateway"
+-  version = "v1.3.1"
+-
+-# prometheus does not believe in semversioning yet
+-[[constraint]]
+-  name = "github.com/prometheus/client_golang"
+-  revision = "7858729281ec582767b20e0d696b6041d995d5e0"
+-
+-[[override]]
+-  branch = "release-1.16"
+-  name = "k8s.io/api"
+-
+-[[override]]
+-  branch = "release-1.16"
+-  name = "k8s.io/kubernetes"
+-
+-[[override]]
+-  branch = "release-1.16"
+-  name = "k8s.io/code-generator"
+-
+-[[override]]
+-  branch = "release-1.16"
+-  name = "k8s.io/apimachinery"
+-
+-[[override]]
+-  branch = "release-1.16"
+-  name = "k8s.io/apiextensions-apiserver"
+-
+-[[override]]
+-  branch = "release-1.16"
+-  name = "k8s.io/apiserver"
+-
+-[[override]]
+-  branch = "release-1.16"
+-  name = "k8s.io/kubectl"
+-
+-[[override]]
+-  branch = "release-1.16"
+-  name = "k8s.io/cli-runtime"
+-
+-[[override]]
+-  version = "2.0.3"
+-  name = "sigs.k8s.io/kustomize"
+-
+-# ASCIIRenderer does not implement blackfriday.Renderer
+-[[override]]
+-  name = "github.com/russross/blackfriday"
+-  version = "1.5.2"
+- 
+-[[override]]
+-  branch = "release-13.0"
+-  name = "k8s.io/client-go"
+-
+-[[override]]
+-  name = "github.com/casbin/casbin"
+-  version = "1.9.1"
+-
+-[[constraint]]
+-  name = "github.com/stretchr/testify"
+-  version = "1.2.2"
+-
+-[[constraint]]
+-  name = "github.com/gobuffalo/packr"
+-  version = "v1.11.0"
+-
+-[[constraint]]
+-  branch = "master"
+-  name = "github.com/argoproj/pkg"
+-
+-[[constraint]]
+-  branch = "master"
+-  name = "github.com/yudai/gojsondiff"
+-
+-# Fixes: Could not introduce sigs.k8s.io/kustomize@v2.0.3, as it has a dependency on github.com/spf13/cobra with constraint ^0.0.2, which has no overlap with existing constraint 0.0.5 from (root)
+-[[override]]
+-  name = "github.com/spf13/cobra"
+-  revision = "0.0.5"
+-
+-# TODO: move off of k8s.io/kube-openapi and use controller-tools for CRD spec generation
+-# (override argoproj/argo contraint on master)
+-[[override]]
+-  revision = "30be4d16710ac61bce31eb28a01054596fe6a9f1"
+-  name = "k8s.io/kube-openapi"
+-
+-# jsonpatch replace operation does not apply: doc is missing key: /metadata/annotations
+-[[override]]
+-  name = "github.com/evanphx/json-patch"
+-  version = "v4.1.0"
+diff --git a/go.mod b/go.mod
+new file mode 100644
+index 00000000..2e741ab3
+--- /dev/null
++++ b/go.mod
+@@ -0,0 +1,114 @@
++module github.com/argoproj/argo-cd
++
++go 1.12
++
++require (
++	bou.ke/monkey v1.0.1
++	github.com/Masterminds/semver v1.4.2
++	github.com/TomOnTime/utfutil v0.0.0-20180511104225-09c41003ee1d
++	github.com/argoproj/pkg v0.0.0-20191031223000-02a6aac40ac4
++	github.com/casbin/casbin v1.9.1
++	github.com/chai2010/gettext-go v0.0.0-20170215093142-bf70f2a70fb1 // indirect
++	github.com/coreos/go-oidc v2.1.0+incompatible
++	github.com/dgrijalva/jwt-go v3.2.0+incompatible
++	github.com/docker/docker v1.6.0-rc5 // indirect
++	github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c // indirect
++	github.com/dustin/go-humanize v1.0.0
++	github.com/evanphx/json-patch v4.5.0+incompatible
++	github.com/ghodss/yaml v1.0.0
++	github.com/go-openapi/loads v0.19.2
++	github.com/go-openapi/runtime v0.19.0
++	github.com/go-openapi/spec v0.19.2
++	github.com/go-redis/cache v6.3.5+incompatible
++	github.com/go-redis/redis v6.15.1+incompatible
++	github.com/gobuffalo/packr v1.11.0
++	github.com/gobwas/glob v0.2.3
++	github.com/gogits/go-gogs-client v0.0.0-20190616193657-5a05380e4bc2
++	github.com/gogo/protobuf v1.3.1
++	github.com/golang/protobuf v1.3.1
++	github.com/google/btree v1.0.0 // indirect
++	github.com/google/go-cmp v0.3.1 // indirect
++	github.com/google/go-jsonnet v0.10.0
++	github.com/google/shlex v0.0.0-20181106134648-c34317bd91bf
++	github.com/googleapis/gnostic v0.1.0 // indirect
++	github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect
++	github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79
++	github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
++	github.com/grpc-ecosystem/grpc-gateway v1.3.1
++	github.com/improbable-eng/grpc-web v0.0.0-20181111100011-16092bd1d58a
++	github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 // indirect
++	github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
++	github.com/malexdev/utfutil v0.0.0-20180510171754-00c8d4a8e7a8 // indirect
++	github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect
++	github.com/patrickmn/go-cache v2.1.0+incompatible
++	github.com/pkg/errors v0.8.1
++	github.com/pquerna/cachecontrol v0.0.0-20180306154005-525d0eb5f91d // indirect
++	github.com/prometheus/client_golang v0.9.2
++	github.com/robfig/cron v1.1.0
++	github.com/rs/cors v1.6.0 // indirect
++	github.com/sirupsen/logrus v1.4.2
++	github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c
++	github.com/soheilhy/cmux v0.1.4
++	github.com/spf13/cobra v0.0.5
++	github.com/spf13/pflag v1.0.5
++	github.com/stretchr/testify v1.3.0
++	github.com/vmihailenco/msgpack v3.3.1+incompatible
++	github.com/yudai/gojsondiff v0.0.0-20180504020246-0525c875b75c
++	github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect
++	github.com/yudai/pp v2.0.1+incompatible // indirect
++	github.com/yuin/gopher-lua v0.0.0-20190115140932-732aa6820ec4
++	golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586
++	golang.org/x/net v0.0.0-20191004110552-13f9640d40b9
++	golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45
++	golang.org/x/sync v0.0.0-20190423024810-112230192c58
++	google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873
++	google.golang.org/grpc v1.23.0
++	gopkg.in/go-playground/webhooks.v5 v5.11.0
++	gopkg.in/src-d/go-git.v4 v4.9.1
++	gopkg.in/yaml.v2 v2.2.8
++	k8s.io/api v0.0.0
++	k8s.io/apiextensions-apiserver v0.0.0
++	k8s.io/apimachinery v0.16.5-beta.1
++	k8s.io/cli-runtime v0.0.0
++	k8s.io/client-go v0.0.0
++	k8s.io/klog v1.0.0
++	k8s.io/kube-aggregator v0.0.0
++	k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a
++	k8s.io/kubectl v0.0.0
++	k8s.io/kubernetes v0.0.0-20191207011953-bfafae8f1c2f
++	k8s.io/utils v0.0.0-20191114200735-6ca3b61696b6
++	layeh.com/gopher-json v0.0.0-20190114024228-97fed8db8427
++)
++
++replace (
++	k8s.io/api => k8s.io/api v0.0.0-20200131112707-d64dbec685a4
++	k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.0.0-20200208193839-84fe3c0be50e
++	k8s.io/apimachinery => k8s.io/apimachinery v0.16.7-beta.0.0.20200131112342-0c9ec93240c9
++	k8s.io/apiserver => k8s.io/apiserver v0.0.0-20200208192130-2d005a048922
++	k8s.io/cli-runtime => k8s.io/cli-runtime v0.0.0-20200131120220-9674fbb91442
++	k8s.io/client-go => k8s.io/client-go v0.0.0-20191016111102-bec269661e48
++	k8s.io/cloud-provider => k8s.io/cloud-provider v0.0.0-20200131203752-f498d522efeb
++	k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.0.0-20200131121422-fc6110069b18
++	k8s.io/code-generator => k8s.io/code-generator v0.16.7-beta.0.0.20200131112027-a3045e5e55c0
++	k8s.io/component-base => k8s.io/component-base v0.0.0-20200131113804-409d4deb41dd
++	k8s.io/cri-api => k8s.io/cri-api v0.16.8-beta.0
++	k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.0.0-20200131121824-f033562d74c3
++	k8s.io/gengo => k8s.io/gengo v0.0.0-20190822140433-26a664648505
++	k8s.io/heapster => k8s.io/heapster v1.2.0-beta.1
++	k8s.io/klog => k8s.io/klog v0.4.0
++	k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.0.0-20200208192621-0eeb50407007
++	k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.0.0-20200131121224-13b3f231e47d
++	k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf
++	k8s.io/kube-proxy => k8s.io/kube-proxy v0.0.0-20200131120626-5b8ba5e54e1f
++	k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.0.0-20200131121024-5f0ba0866863
++	k8s.io/kubectl => k8s.io/kubectl v0.0.0-20200131122652-b28c9fbca10f
++	k8s.io/kubelet => k8s.io/kubelet v0.0.0-20200131120825-905bd8eea4c4
++	k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.0.0-20200208200602-3a1c7effd2b3
++	k8s.io/metrics => k8s.io/metrics v0.0.0-20200131120008-5c623d74062d
++	k8s.io/node-api => k8s.io/node-api v0.0.0-20200131122255-04077c800298
++	k8s.io/repo-infra => k8s.io/repo-infra v0.0.0-20181204233714-00fe14e3d1a3
++	k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.0.0-20200208192953-f8dc80bbc173
++	k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.0.0-20200131120425-dca0863cb511
++	k8s.io/sample-controller => k8s.io/sample-controller v0.0.0-20200131115407-2b45fb79af22
++	k8s.io/utils => k8s.io/utils v0.0.0-20190801114015-581e00157fb1
++)
+diff --git a/go.sum b/go.sum
+new file mode 100644
+index 00000000..3d39244f
+--- /dev/null
++++ b/go.sum
+@@ -0,0 +1,700 @@
++bitbucket.org/bertimus9/systemstat v0.0.0-20180207000608-0eeff89b0690/go.mod h1:Ulb78X89vxKYgdL24HMTiXYHlyHEvruOj1ZPlqeNEZM=
++bou.ke/monkey v1.0.1 h1:zEMLInw9xvNakzUUPjfS4Ds6jYPqCFx3m7bRmG5NH2U=
++bou.ke/monkey v1.0.1/go.mod h1:FgHuK96Rv2Nlf+0u1OOVDpCMdsWyOFmeeketDHE7LIg=
++cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
++cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
++cloud.google.com/go v0.38.0 h1:ROfEUZz+Gh5pa62DJWXSaonyu3StP6EA6lPEXPI6mCo=
++cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
++github.com/Azure/azure-sdk-for-go v32.5.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
++github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
++github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
++github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0=
++github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA=
++github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
++github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
++github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocmRAJWqST1wQYhyyjXJ3SJc=
++github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8=
++github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc=
++github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=
++github.com/BurntSushi/toml v0.3.0/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
++github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
++github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
++github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20190822182118-27a4ced34534/go.mod h1:iroGtC8B3tQiqtds1l+mgk/BBOrxbqjH+eUfFQYRc14=
++github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab/go.mod h1:3VYc5hodBMJ5+l/7J4xAyMeuM2PNuepvHlGs8yilUCA=
++github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw=
++github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
++github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd h1:sjQovDkwrZp8u+gxLtPgKGjk5hCxuy2hrRejBTA9xFU=
++github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E=
++github.com/Masterminds/semver v1.4.2 h1:WBLTQ37jOCzSLtXNdoo8bNM8876KhNqOKvrlGITgsTc=
++github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
++github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA=
++github.com/Microsoft/hcsshim v0.0.0-20190417211021-672e52e9209d/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg=
++github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
++github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
++github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
++github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI=
++github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
++github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
++github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=
++github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
++github.com/Rican7/retry v0.1.0/go.mod h1:FgOROf8P5bebcC1DS0PdOQiqGUridaZvikzUmkFW6gg=
++github.com/TomOnTime/utfutil v0.0.0-20180511104225-09c41003ee1d h1:WtAMR0fPCOfK7TPGZ8ZpLLY18HRvL7XJ3xcs0wnREgo=
++github.com/TomOnTime/utfutil v0.0.0-20180511104225-09c41003ee1d/go.mod h1:WML6KOYjeU8N6YyusMjj2qRvaPNUEvrQvaxuFcMRFJY=
++github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs=
++github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs=
++github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA=
++github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
++github.com/argoproj/pkg v0.0.0-20191031223000-02a6aac40ac4 h1:ykGEoo3WuCNoqO+rnaa0j/RdYfXZFp5Aqim+CjzdBaQ=
++github.com/argoproj/pkg v0.0.0-20191031223000-02a6aac40ac4/go.mod h1:2EZ44RG/CcgtPTwrRR0apOc7oU6UIw8GjCUJWZ8X3bM=
++github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
++github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
++github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
++github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=
++github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
++github.com/auth0/go-jwt-middleware v0.0.0-20170425171159-5493cabe49f7/go.mod h1:LWMyo4iOLWXHGdBki7NIht1kHru/0wM179h+d3g8ATM=
++github.com/aws/aws-sdk-go v1.16.26/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
++github.com/bazelbuild/bazel-gazelle v0.0.0-20181012220611-c728ce9f663e/go.mod h1:uHBSeeATKpVazAACZBDPL/Nk/UhQDDsJWDlqYJo8/Us=
++github.com/bazelbuild/buildtools v0.0.0-20180226164855-80c7f0d45d7e/go.mod h1:5JP0TXzWDHXv8qvxRC4InIazwdyDseBDbzESUMKk1yU=
++github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0=
++github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
++github.com/bifurcation/mint v0.0.0-20180715133206-93c51c6ce115/go.mod h1:zVt7zX3K/aDCk9Tj+VM7YymsX66ERvzCJzw8rFCX2JU=
++github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
++github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
++github.com/caddyserver/caddy v1.0.3/go.mod h1:G+ouvOY32gENkJC+jhgl62TyhvqEsFaDiZ4uw0RzP1E=
++github.com/casbin/casbin v1.9.1 h1:ucjbS5zTrmSLtH4XogqOG920Poe6QatdXtz1FEbApeM=
++github.com/casbin/casbin v1.9.1/go.mod h1:z8uPsfBJGUsnkagrt3G8QvjgTKFMBJ32UP8HpZllfog=
++github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
++github.com/cespare/prettybench v0.0.0-20150116022406-03b8cfe5406c/go.mod h1:Xe6ZsFhtM8HrDku0pxJ3/Lr51rwykrzgFwpmTzleatY=
++github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw=
++github.com/chai2010/gettext-go v0.0.0-20170215093142-bf70f2a70fb1 h1:HD4PLRzjuCVW79mQ0/pdsalOLHJ+FaEoqJLxfltpb2U=
++github.com/chai2010/gettext-go v0.0.0-20170215093142-bf70f2a70fb1/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw=
++github.com/checkpoint-restore/go-criu v0.0.0-20190109184317-bdb7599cd87b/go.mod h1:TrMrLQfeENAPYPRsJuq3jsqdlRh3lvi6trTZJG8+tho=
++github.com/cheekybits/genny v0.0.0-20170328200008-9127e812e1e9/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ=
++github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
++github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
++github.com/cloudflare/cfssl v0.0.0-20180726162950-56268a613adf/go.mod h1:yMWuSON2oQp+43nFtAV/uvKQIFpSPerB57DCt9t8sSA=
++github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313/go.mod h1:P1wt9Z3DP8O6W3rvwCt0REIlshg1InHImaLW0t3ObY0=
++github.com/codegangsta/negroni v1.0.0/go.mod h1:v0y3T5G7Y1UlFfyxFn/QLRU4a2EuNau2iZY63YTKWo0=
++github.com/container-storage-interface/spec v1.1.0/go.mod h1:6URME8mwIBbpVyZV93Ce5St17xBiQJQY67NDsuohiy4=
++github.com/containerd/console v0.0.0-20170925154832-84eeaae905fa/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw=
++github.com/containerd/containerd v1.0.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA=
++github.com/containerd/typeurl v0.0.0-20190228175220-2a93cfde8c20/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc=
++github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY=
++github.com/coredns/corefile-migration v1.0.2/go.mod h1:OFwBp/Wc9dJt5cAZzHWMNhK1r5L0p0jDwIBc6j8NC8E=
++github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
++github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
++github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
++github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
++github.com/coreos/go-oidc v2.1.0+incompatible h1:sdJrfw8akMnCuUlaZU3tE/uYXFgfqom8DBE9so9EBsM=
++github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc=
++github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
++github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
++github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
++github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
++github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
++github.com/coreos/rkt v1.30.0/go.mod h1:O634mlH6U7qk87poQifK6M2rsFNt+FyUTWNMnP1hF1U=
++github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
++github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4=
++github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
++github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
++github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
++github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
++github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE=
++github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
++github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
++github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
++github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug=
++github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
++github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
++github.com/docker/docker v1.6.0-rc5 h1:8dnqiCOcZf2QXwR4LNnG7AK9hXeeT6adGmtjicsVswc=
++github.com/docker/docker v1.6.0-rc5/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
++github.com/docker/go-connections v0.3.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
++github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
++github.com/docker/libnetwork v0.0.0-20180830151422-a9cd636e3789/go.mod h1:93m0aTqz6z+g32wla4l4WxTrdtvBRmVzYRkYvasA5Z8=
++github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM=
++github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c h1:ZfSZ3P3BedhKGUhzj7BQlPSU4OvT6tfOKe3DVHzOA7s=
++github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM=
++github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
++github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
++github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e h1:p1yVGRW3nmb85p1Sh1ZJSDm4A4iKLS5QNbvUHMgGu/M=
++github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
++github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
++github.com/emicklei/go-restful v2.9.5+incompatible h1:spTtZBk5DYEvbxMVutUuTyh1Ao2r4iyvLdACqsl/Ljk=
++github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
++github.com/emirpasic/gods v1.9.0 h1:rUF4PuzEjMChMiNsVjdI+SyLu7rEqpQ5reNFnhC7oFo=
++github.com/emirpasic/gods v1.9.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o=
++github.com/euank/go-kmsg-parser v2.0.0+incompatible/go.mod h1:MhmAMZ8V4CYH4ybgdRwPr2TU5ThnS43puaKEMpja1uw=
++github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
++github.com/evanphx/json-patch v4.5.0+incompatible h1:ouOWdg56aJriqS0huScTkVXPC5IcNrDCXZ6OoTAWu7M=
++github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
++github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM=
++github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4=
++github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8=
++github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc=
++github.com/fatih/color v1.6.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
++github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ=
++github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
++github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
++github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
++github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
++github.com/ghodss/yaml v0.0.0-20180820084758-c7ce16629ff4/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
++github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
++github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
++github.com/gliderlabs/ssh v0.1.1 h1:j3L6gSLQalDETeEg/Jg0mGY0/y/N6zI2xX1978P0Uqw=
++github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
++github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
++github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8 h1:DujepqpGd1hyOd7aW59XpK7Qymp8iy83xq74fLr21is=
++github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
++github.com/go-acme/lego v2.5.0+incompatible/go.mod h1:yzMNe9CasVUhkquNvti5nAtPmG94USbYxYrZfTkIn0M=
++github.com/go-bindata/go-bindata v3.1.1+incompatible/go.mod h1:xK8Dsgwmeed+BBsSy2XTopBn/8uK2HWuGSnA11C3Joo=
++github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
++github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI=
++github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik=
++github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik=
++github.com/go-openapi/analysis v0.19.2 h1:ophLETFestFZHk3ji7niPEL4d466QjW+0Tdg5VyDq7E=
++github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk=
++github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0=
++github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0=
++github.com/go-openapi/errors v0.19.2 h1:a2kIyV3w+OS3S97zxUndRVD46+FhGOUBDFY7nmu4CsY=
++github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94=
++github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0=
++github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
++github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
++github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg=
++github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w=
++github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
++github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg=
++github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I=
++github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I=
++github.com/go-openapi/jsonreference v0.19.2 h1:o20suLFB4Ri0tuzpWtyHlh7E7HnkqTNLq6aR6WVNS1w=
++github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc=
++github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
++github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
++github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
++github.com/go-openapi/loads v0.19.2 h1:rf5ArTHmIJxyV5Oiks+Su0mUens1+AjpkPoWr5xFRcI=
++github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs=
++github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA=
++github.com/go-openapi/runtime v0.19.0 h1:sU6pp4dSV2sGlNKKyHxZzi1m1kG4WnYtWcJ+HYbygjE=
++github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64=
++github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc=
++github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI=
++github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI=
++github.com/go-openapi/spec v0.19.2 h1:SStNd1jRcYtfKCN7R0laGNs80WYYvn5CbBjM2sOmCrE=
++github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY=
++github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU=
++github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU=
++github.com/go-openapi/strfmt v0.19.0 h1:0Dn9qy1G9+UJfRU7TR8bmdGxb4uifB7HNrJjOnV0yPk=
++github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY=
++github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I=
++github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg=
++github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg=
++github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
++github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY=
++github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
++github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4=
++github.com/go-openapi/validate v0.19.2 h1:ky5l57HjyVRrsJfd2+Ro5Z9PjGuKbsmftwyMtk8H7js=
++github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA=
++github.com/go-ozzo/ozzo-validation v3.5.0+incompatible/go.mod h1:gsEKFIVnabGBt6mXmxK0MoFy+cZoTJY6mu5Ll3LVLBU=
++github.com/go-redis/cache v6.3.5+incompatible h1:4OUyoXXYRRQ6tKA4ue3TlPUkBzk3occzjtXBZBxCzgs=
++github.com/go-redis/cache v6.3.5+incompatible/go.mod h1:XNnMdvlNjcZvHjsscEozHAeOeSE5riG9Fj54meG4WT4=
++github.com/go-redis/redis v6.15.1+incompatible h1:BZ9s4/vHrIqwOb0OPtTQ5uABxETJ3NRuUNoSUurnkew=
++github.com/go-redis/redis v6.15.1+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=
++github.com/gobuffalo/packr v1.11.0 h1:lxysfHcxVCWGNMHzKABP7ZEL3A7iIVYfkev/D7AR0aM=
++github.com/gobuffalo/packr v1.11.0/go.mod h1:rYwMLC6NXbAbkKb+9j3NTKbxSswkKLlelZYccr4HYVw=
++github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
++github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
++github.com/godbus/dbus v4.1.0+incompatible/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw=
++github.com/gogits/go-gogs-client v0.0.0-20190616193657-5a05380e4bc2 h1:BbwX8wsMRDZRdNYxAna+4ls3wvMKJyn4PT6Zk1CPxP4=
++github.com/gogits/go-gogs-client v0.0.0-20190616193657-5a05380e4bc2/go.mod h1:cY2AIrMgHm6oOHmR7jY+9TtjzSjQ3iG7tURJG3Y6XH0=
++github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
++github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls=
++github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
++github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
++github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
++github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903 h1:LbsanbbD6LieFkXbj9YNNBupiGHJgFeLpO0j0Fza1h8=
++github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
++github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
++github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
++github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
++github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
++github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg=
++github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
++github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho=
++github.com/golangplus/fmt v0.0.0-20150411045040-2a5d6d7d2995/go.mod h1:lJgMEyOkYFkPcDKwRXegd+iM6E7matEszMG5HhwytU8=
++github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk=
++github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
++github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo=
++github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
++github.com/google/cadvisor v0.34.0/go.mod h1:1nql6U13uTHaLYB8rLS5x9IJc2qT6Xd/Tr1sTX6NE48=
++github.com/google/certificate-transparency-go v1.0.21/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg=
++github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
++github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
++github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg=
++github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
++github.com/google/go-jsonnet v0.10.0 h1:NzmG/5DRTYDjNnsL/OmX6wT+ByeKbSoRoV6VxOy+QdM=
++github.com/google/go-jsonnet v0.10.0/go.mod h1:gVu3UVSfOt5fRFq+dh9duBqXa5905QY8S1QvMNcEIVs=
++github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI=
++github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
++github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
++github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
++github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
++github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
++github.com/google/shlex v0.0.0-20181106134648-c34317bd91bf h1:7+FW5aGwISbqUtkfmIpZJGRgNFg2ioYPvFaUxdqpDsg=
++github.com/google/shlex v0.0.0-20181106134648-c34317bd91bf/go.mod h1:RpwtwJQFrIEPstU94h88MWPXP2ektJZ8cZ0YntAmXiE=
++github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
++github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
++github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
++github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
++github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
++github.com/googleapis/gnostic v0.1.0 h1:rVsPeBmXbYv4If/cumu1AzZPwV58q433hvONV1UEZoI=
++github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
++github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8=
++github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
++github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
++github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
++github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=
++github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
++github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
++github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA=
++github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
++github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79 h1:lR9ssWAqp9qL0bALxqEEkuudiP1eweOdv9jsRK3e7lE=
++github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
++github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
++github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
++github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
++github.com/grpc-ecosystem/grpc-gateway v1.3.1 h1:k2neygAEBYavP90THffKBVlkASdxu4XiI8cAWuL3MG0=
++github.com/grpc-ecosystem/grpc-gateway v1.3.1/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
++github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
++github.com/hashicorp/golang-lru v0.0.0-20180201235237-0fb14efe8c47/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
++github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
++github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU=
++github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
++github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
++github.com/heketi/heketi v9.0.0+incompatible/go.mod h1:bB9ly3RchcQqsQ9CpyaQwvva7RS5ytVoSoholZQON6o=
++github.com/heketi/rest v0.0.0-20180404230133-aa6a65207413/go.mod h1:BeS3M108VzVlmAue3lv2WcGuPAX94/KN63MUURzbYSI=
++github.com/heketi/tests v0.0.0-20151005000721-f3775cbcefd6/go.mod h1:xGMAM8JLi7UkZt1i4FQeQy0R2T8GLUwQhOP5M1gBhy4=
++github.com/heketi/utils v0.0.0-20170317161834-435bc5bdfa64/go.mod h1:RYlF4ghFZPPmk2TC5REt5OFwvfb6lzxFWrTWB+qs28s=
++github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
++github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
++github.com/imdario/mergo v0.3.5 h1:JboBksRwiiAJWvIYJVo46AfV+IAIKZpfrSzVKj42R4Q=
++github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
++github.com/improbable-eng/grpc-web v0.0.0-20181111100011-16092bd1d58a h1:RweVA0vnEyStwtAelyGmnU8ENDnwd1Q7pQr7U3J/rXo=
++github.com/improbable-eng/grpc-web v0.0.0-20181111100011-16092bd1d58a/go.mod h1:6hRR09jOEG81ADP5wCQju1z71g6OL4eEvELdran/3cs=
++github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
++github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
++github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
++github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
++github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
++github.com/jimstudt/http-authentication v0.0.0-20140401203705-3eca13d6893a/go.mod h1:wK6yTYYcgjHE1Z1QtXACPDjcFJyBskHEdagmnq3vsP8=
++github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
++github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo=
++github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
++github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
++github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
++github.com/json-iterator/go v1.1.7 h1:KfgG9LzI+pYjr4xvmz/5H4FXjokeP+rlHLhv3iH62Fo=
++github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
++github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
++github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
++github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 h1:uC1QfSlInpQF+M0ao65imhwqKnz3Q2z/d8PWZRMQvDM=
++github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k=
++github.com/karrick/godirwalk v1.7.5/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34=
++github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
++github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
++github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e h1:RgQk53JHp/Cjunrr1WlsXSZpqXn+uREuHvUVcK82CV8=
++github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
++github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
++github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
++github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
++github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk=
++github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
++github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
++github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
++github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
++github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
++github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
++github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
++github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
++github.com/libopenstorage/openstorage v1.0.0/go.mod h1:Sp1sIObHjat1BeXhfMqLZ14wnOzEhNx2YQedreMcUyc=
++github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0=
++github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE=
++github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc=
++github.com/lpabon/godbc v0.1.1/go.mod h1:Jo9QV0cf3U6jZABgiJ2skINAXb9j8m51r07g4KI92ZA=
++github.com/lucas-clemente/aes12 v0.0.0-20171027163421-cd47fb39b79f/go.mod h1:JpH9J1c9oX6otFSgdUHwUBUizmKlrMjxWnIAjff4m04=
++github.com/lucas-clemente/quic-clients v0.1.0/go.mod h1:y5xVIEoObKqULIKivu+gD/LU90pL73bTdtQjPBvtCBk=
++github.com/lucas-clemente/quic-go v0.10.2/go.mod h1:hvaRS9IHjFLMq76puFJeWNfmn+H70QZ/CXoxqw9bzao=
++github.com/lucas-clemente/quic-go-certificates v0.0.0-20160823095156-d2f86524cced/go.mod h1:NCcRLrOTZbzhZvixZLlERbJtDtYsmMw8Jc4vS8Z0g58=
++github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
++github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
++github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
++github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
++github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
++github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
++github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e h1:hB2xlXdHp/pmPZq0y3QnmWAArdw9PqbmotexnWx/FU8=
++github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
++github.com/malexdev/utfutil v0.0.0-20180510171754-00c8d4a8e7a8 h1:A6SLdFpRzUUF5v9F/7T1fu3DERmOCgTwwP6x54eyFfU=
++github.com/malexdev/utfutil v0.0.0-20180510171754-00c8d4a8e7a8/go.mod h1:UtpLyb/EupVKXF/N0b4NRe1DNg+QYJsnsHQ038romhM=
++github.com/marten-seemann/qtls v0.2.3/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwmjgmPuiQEcYk=
++github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4=
++github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
++github.com/mattn/go-isatty v0.0.3 h1:ns/ykhmWi7G9O+8a448SecJU3nSMBXJfqQkl0upE1jI=
++github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
++github.com/mattn/go-shellwords v1.0.5/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o=
++github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
++github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
++github.com/mesos/mesos-go v0.0.9/go.mod h1:kPYCMQ9gsOXVAle1OsoY4I1+9kPu8GHkf88aV59fDr4=
++github.com/mholt/certmagic v0.6.2-0.20190624175158-6a42ef9fe8c2/go.mod h1:g4cOPxcjV0oFq3qwpjSA30LReKD8AoIfwAY9VvG35NY=
++github.com/miekg/dns v1.1.3/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
++github.com/miekg/dns v1.1.4/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
++github.com/mindprince/gonvml v0.0.0-20171110221305-fee913ce8fb2/go.mod h1:2eu9pRWp8mo84xCg6KswZ+USQHjwgRhNp06sozOdsTY=
++github.com/mistifyio/go-zfs v2.1.1+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4=
++github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
++github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
++github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
++github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4=
++github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
++github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=
++github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
++github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
++github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
++github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
++github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
++github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
++github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
++github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
++github.com/mohae/deepcopy v0.0.0-20170603005431-491d3605edfb/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
++github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
++github.com/mrunalp/fileutils v0.0.0-20160930181131-4ee1cc9a8058/go.mod h1:x8F1gnqOkIEiO4rqoeEEEqQbo7HjGMTvyoq3gej4iT0=
++github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
++github.com/mvdan/xurls v1.1.0/go.mod h1:tQlNn3BED8bE/15hnSL2HLkDeLWpNPAwtw7wkEq44oU=
++github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=
++github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
++github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
++github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0=
++github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E=
++github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
++github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
++github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w=
++github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
++github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
++github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
++github.com/onsi/gomega v1.5.0 h1:izbySO9zDPmjJ8rDjLvkA2zJHIo+HkYXHnf7eN7SSyo=
++github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
++github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2iki3E3Ii+WN7gQ=
++github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s=
++github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
++github.com/opencontainers/runc v1.0.0-rc2.0.20190611121236-6cc515888830/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
++github.com/opencontainers/runtime-spec v1.0.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
++github.com/opencontainers/selinux v1.2.2/go.mod h1:+BLncwf63G4dgOzykXAxcmnFlUaOlkDdmw/CqsW6pjs=
++github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
++github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
++github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
++github.com/pelletier/go-buffruneio v0.2.0 h1:U4t4R6YkofJ5xHm3dJzuRpPZ0mr5MMCoAWooScCR7aA=
++github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo=
++github.com/pelletier/go-toml v1.0.1/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
++github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
++github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=
++github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
++github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
++github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
++github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
++github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
++github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
++github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
++github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
++github.com/pquerna/cachecontrol v0.0.0-20180306154005-525d0eb5f91d h1:7gXyC293Lsm2YWgQ+0uaAFFFDO82ruiQSwc3ua+Vtlc=
++github.com/pquerna/cachecontrol v0.0.0-20180306154005-525d0eb5f91d/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
++github.com/pquerna/ffjson v0.0.0-20180717144149-af8b230fcd20/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M=
++github.com/prometheus/client_golang v0.9.2 h1:awm861/B8OKDd2I/6o1dy3ra4BamzKhYOiGItCeZ740=
++github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM=
++github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910 h1:idejC8f05m9MGOsuEi1ATq9shN03HrxNkD/luQvxCv8=
++github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
++github.com/prometheus/common v0.0.0-20181126121408-4724e9255275 h1:PnBWHBf+6L0jOqq0gIVUe6Yk0/QMZ640k6NvkxcBf+8=
++github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
++github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a h1:9a8MnZMP0X2nLJdBg+pBmGgkJlSaKC2KaQmTCk1XDtE=
++github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
++github.com/quobyte/api v0.1.2/go.mod h1:jL7lIHrmqQ7yh05OJ+eEEdHr0u/kmT1Ff9iHd+4H6VI=
++github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M=
++github.com/robfig/cron v1.1.0 h1:jk4/Hud3TTdcrJgUOBgsqrZBarcxl6ADIjSC2iniwLY=
++github.com/robfig/cron v1.1.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k=
++github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
++github.com/rs/cors v1.6.0 h1:G9tHG9lebljV9mfp9SNPDL36nCDxmo3zTlAf1YgvzmI=
++github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
++github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto=
++github.com/russross/blackfriday v0.0.0-20170610170232-067529f716f4/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
++github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo=
++github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
++github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
++github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo=
++github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ=
++github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
++github.com/sirupsen/logrus v1.0.5/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc=
++github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4=
++github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
++github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c h1:fyKiXKO1/I/B6Y2U8T7WdQGWzwehOuGIrljPtt7YTTI=
++github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog=
++github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
++github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
++github.com/soheilhy/cmux v0.1.3/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
++github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E=
++github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
++github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
++github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
++github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
++github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s=
++github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
++github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
++github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
++github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
++github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
++github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
++github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
++github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
++github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
++github.com/src-d/gcfg v1.4.0 h1:xXbNR5AlLSA315x2UO+fTSSAXCDf+Ar38/6oyGbDKQ4=
++github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI=
++github.com/storageos/go-api v0.0.0-20180912212459-343b3eff91fc/go.mod h1:ZrLn+e0ZuF3Y65PNF6dIwbJPZqfmtCXxFm9ckv0agOY=
++github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
++github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
++github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48=
++github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
++github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
++github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
++github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
++github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
++github.com/syndtr/gocapability v0.0.0-20160928074757-e7cb7fa329f4/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
++github.com/thecodeteam/goscaleio v0.1.0/go.mod h1:68sdkZAsK8bvEwBlbQnlLS+xU+hvLYM/iQ8KXej1AwM=
++github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
++github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
++github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4=
++github.com/vishvananda/netlink v0.0.0-20171020171820-b2de5d10e38e/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk=
++github.com/vishvananda/netns v0.0.0-20171111001504-be1fbeda1936/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI=
++github.com/vmihailenco/msgpack v3.3.1+incompatible h1:ibe+d1lqocBmxbJ+gwcDO8LpAHFr3PGDYovoURuTVGk=
++github.com/vmihailenco/msgpack v3.3.1+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
++github.com/vmware/govmomi v0.20.1/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU=
++github.com/xanzy/ssh-agent v0.2.0 h1:Adglfbi5p9Z0BmK2oKU9nTG+zKfniSfnaMYB+ULd+Ro=
++github.com/xanzy/ssh-agent v0.2.0/go.mod h1:0NyE30eGUDliuLEHJgYte/zncp2zdTStcOnWhgSqHD8=
++github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
++github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1/go.mod h1:QcJo0QPSfTONNIgpN5RA8prR7fF8nkF6cTWTcNerRO8=
++github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
++github.com/yudai/gojsondiff v0.0.0-20180504020246-0525c875b75c h1:/8Xb/f8s2/ZZpzMzBkFwW2Jvj7Pglk+AW8m8FFqOoIQ=
++github.com/yudai/gojsondiff v0.0.0-20180504020246-0525c875b75c/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg=
++github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3IfnEUduWvb9is428/nNb5L3U01M=
++github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM=
++github.com/yudai/pp v2.0.1+incompatible h1:Q4//iY4pNF6yPLZIigmvcl7k/bPgrcTPIFIcmawg5bI=
++github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc=
++github.com/yuin/gopher-lua v0.0.0-20190115140932-732aa6820ec4 h1:1yOVVSFiradDwXpgdkDjlGOcGJqcohH/W49Zn8Ywgco=
++github.com/yuin/gopher-lua v0.0.0-20190115140932-732aa6820ec4/go.mod h1:fFiAh+CowNFr0NK5VASokuwKwkbacRmHsVA7Yb1Tqac=
++go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
++go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
++go.uber.org/atomic v0.0.0-20181018215023-8dc6146f7569/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
++go.uber.org/multierr v0.0.0-20180122172545-ddea229ff1df/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
++go.uber.org/zap v0.0.0-20180814183419-67bc79d13d15/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
++golang.org/x/crypto v0.0.0-20180426230345-b49d69b5da94/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
++golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
++golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
++golang.org/x/crypto v0.0.0-20190123085648-057139ce5d2b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
++golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
++golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
++golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
++golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
++golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
++golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
++golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586 h1:7KByu05hhLed2MO29w7p1XfZvZ13m8mub3shuVftRs0=
++golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
++golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
++golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
++golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
++golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
++golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
++golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
++golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
++golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
++golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
++golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
++golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
++golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
++golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
++golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
++golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
++golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
++golang.org/x/net v0.0.0-20181102091132-c10e9556a7bc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
++golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
++golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
++golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
++golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
++golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
++golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
++golang.org/x/net v0.0.0-20190328230028-74de082e2cca/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
++golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
++golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
++golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
++golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
++golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
++golang.org/x/net v0.0.0-20191004110552-13f9640d40b9 h1:rjwSpXsdiK0dV8/Naq3kAw9ymfAeJIyd0upUIElB+lI=
++golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
++golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
++golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
++golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0=
++golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
++golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
++golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
++golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
++golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
++golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
++golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
++golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
++golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
++golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
++golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
++golang.org/x/sys v0.0.0-20181004145325-8469e314837c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
++golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
++golang.org/x/sys v0.0.0-20190124100055-b90733256f2e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
++golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
++golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
++golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
++golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
++golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
++golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
++golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
++golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
++golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
++golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a h1:aYOabOQFp6Vj6W1F80affTUvO9UxmJRx8K0gsfABByQ=
++golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
++golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
++golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
++golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
++golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
++golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
++golang.org/x/time v0.0.0-20181108054448-85acf8d2951c h1:fqgJT0MGcGpPgpWU7VRdRjuArfcOvC4AoJmILihzhDg=
++golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
++golang.org/x/tools v0.0.0-20170824195420-5d2fd3ccab98/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
++golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
++golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
++golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
++golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
++golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
++golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
++golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
++golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
++golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
++golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
++golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
++golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
++golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
++golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
++golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
++golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
++gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0=
++gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
++gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ=
++google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
++google.golang.org/api v0.6.1-0.20190607001116-5213b8090861/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4=
++google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
++google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
++google.golang.org/appengine v1.5.0 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4c=
++google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
++google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
++google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
++google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
++google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873 h1:nfPFGzJkUDX6uBmpN/pSw7MbOAWegH5QDQuoXFHedLg=
++google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
++google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
++google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
++google.golang.org/grpc v1.23.0 h1:AzbTB6ux+okLTzP8Ru1Xs41C303zdcfEht7MQnYJt5A=
++google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
++gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
++gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
++gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
++gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
++gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
++gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
++gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
++gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
++gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo=
++gopkg.in/go-playground/webhooks.v5 v5.11.0 h1:V3vej+ZXrVvO2EmBTKlhClEbpTqXH44K5OyLUMOkHMg=
++gopkg.in/go-playground/webhooks.v5 v5.11.0/go.mod h1:LZbya/qLVdbqDR1aKrGuWV6qbia2zCYSR5dpom2SInQ=
++gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
++gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
++gopkg.in/mcuadros/go-syslog.v2 v2.2.1/go.mod h1:l5LPIyOOyIdQquNg+oU6Z3524YwrcqEm0aKH+5zpt2U=
++gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
++gopkg.in/square/go-jose.v2 v2.2.2 h1:orlkJ3myw8CN1nVQHBFfloD+L3egixIa4FvUP6RosSA=
++gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
++gopkg.in/src-d/go-billy.v4 v4.2.1 h1:omN5CrMrMcQ+4I8bJ0wEhOBPanIRWzFC953IiXKdYzo=
++gopkg.in/src-d/go-billy.v4 v4.2.1/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk=
++gopkg.in/src-d/go-git-fixtures.v3 v3.1.1 h1:XWW/s5W18RaJpmo1l0IYGqXKuJITWRFuA45iOf1dKJs=
++gopkg.in/src-d/go-git-fixtures.v3 v3.1.1/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g=
++gopkg.in/src-d/go-git.v4 v4.9.1 h1:0oKHJZY8tM7B71378cfTg2c5jmWyNlXvestTT6WfY+4=
++gopkg.in/src-d/go-git.v4 v4.9.1/go.mod h1:Vtut8izDyrM8BUVQnzJ+YvmNcem2J89EmfZYCkLokZk=
++gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
++gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
++gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
++gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
++gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
++gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
++gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
++gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
++gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
++gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
++gotest.tools v2.1.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
++gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
++gotest.tools/gotestsum v0.3.5/go.mod h1:Mnf3e5FUzXbkCfynWBGOwLssY7gTQgCHObK9tMpAriY=
++honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
++honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
++honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
++honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
++honnef.co/go/tools v0.0.1-2019.2.2/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
++k8s.io/api v0.0.0-20200131112707-d64dbec685a4 h1:7kA/ATNKWB1TVM0pwxzl/JONybbBVROCxqndoCd57fU=
++k8s.io/api v0.0.0-20200131112707-d64dbec685a4/go.mod h1:SGkmWEIoDg63In+t6yMJLEXQSkK5XxTNDcVydoy58dc=
++k8s.io/apiextensions-apiserver v0.0.0-20200208193839-84fe3c0be50e h1:L/XqOouONrybm+3jyUJZPo5JIMARb5qFNfmmUqy81Eg=
++k8s.io/apiextensions-apiserver v0.0.0-20200208193839-84fe3c0be50e/go.mod h1:YzEcimsSKeVDDQnLTI9Qf8uws94WpMl4qut8Rbx4dVk=
++k8s.io/apimachinery v0.16.7-beta.0.0.20200131112342-0c9ec93240c9 h1:pusQlPC9d40F13jjdYyJDFDwnUjCTDN5P/y5WteLVkA=
++k8s.io/apimachinery v0.16.7-beta.0.0.20200131112342-0c9ec93240c9/go.mod h1:Xk2vD2TRRpuWYLQNM6lT9R7DSFZUYG03SarNkbGrnKE=
++k8s.io/apiserver v0.0.0-20200208192130-2d005a048922 h1:kgU/Yr5/GsGK3GAaFgmSp+y0IMLu+FoZK+wnKlgzIrQ=
++k8s.io/apiserver v0.0.0-20200208192130-2d005a048922/go.mod h1:kcWyL8/bV2c1b/FeWrxbO08zraTaYuhR7leZ4l9iOmo=
++k8s.io/cli-runtime v0.0.0-20200131120220-9674fbb91442 h1:gHF/ZIm6hTWAuN/rKdH1IO/iJfKPjn0d1kdeIMbPiDg=
++k8s.io/cli-runtime v0.0.0-20200131120220-9674fbb91442/go.mod h1:sL3otDuOz8AlMrzsrBeB/ektmi6qYAE4a9Gid/pxtSo=
++k8s.io/client-go v0.0.0-20191016111102-bec269661e48 h1:C2XVy2z0dV94q9hSSoCuTPp1KOG7IegvbdXuz9VGxoU=
++k8s.io/client-go v0.0.0-20191016111102-bec269661e48/go.mod h1:hrwktSwYGI4JK+TJA3dMaFyyvHVi/aLarVHpbs8bgCU=
++k8s.io/cloud-provider v0.0.0-20200131203752-f498d522efeb/go.mod h1:hb9XI7OCOFjqueeUaUYHbEuGG/nSq0UZtydmOu83p6M=
++k8s.io/cluster-bootstrap v0.0.0-20200131121422-fc6110069b18/go.mod h1:2U3dLDmef+EIuACENgQ1f8jQV//Z+aX/bp9DsglDXK0=
++k8s.io/code-generator v0.16.7-beta.0.0.20200131112027-a3045e5e55c0/go.mod h1:wFdrXdVi/UC+xIfLi+4l9elsTT/uEF61IfcN2wOLULQ=
++k8s.io/component-base v0.0.0-20200131113804-409d4deb41dd h1:W0AuOSSgValfdhcR68oayHewqFJh/nMA+JDPQbXGrkg=
++k8s.io/component-base v0.0.0-20200131113804-409d4deb41dd/go.mod h1:55xG5ozAlA2bbjfmFYC2LPf4cQqp4nOJT5e4+cXUDnY=
++k8s.io/cri-api v0.16.8-beta.0/go.mod h1:W6aMMPN5fmxcRGaHnb6BEfoTeS82OsJcsUJyKf+EWYc=
++k8s.io/csi-translation-lib v0.0.0-20200131121824-f033562d74c3/go.mod h1:2NVc4Xw5CEBgQj3/GtHOKPs5M68nhbszaFFuoB+xGUE=
++k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
++k8s.io/heapster v1.2.0-beta.1/go.mod h1:h1uhptVXMwC8xtZBYsPXKVi8fpdlYkTs6k949KozGrM=
++k8s.io/klog v0.4.0 h1:lCJCxf/LIowc2IGS9TPjWDyXY4nOmdGdfcwwDQCOURQ=
++k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
++k8s.io/kube-aggregator v0.0.0-20200208192621-0eeb50407007 h1:PqWgdqcu7/ZAno0sqGoqo3eC/qhwnz+XTotZfG+84ic=
++k8s.io/kube-aggregator v0.0.0-20200208192621-0eeb50407007/go.mod h1:u6psj4FzpmwlJuQKReXypLOIhIF2UxzZRBThWtnjIDU=
++k8s.io/kube-controller-manager v0.0.0-20200131121224-13b3f231e47d/go.mod h1:rlvqwtZiupLrqd54U19Th2a0sMf0PNbGA1J3zPTwFAc=
++k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf h1:EYm5AW/UUDbnmnI+gK0TJDVK9qPLhM+sRHYanNKw0EQ=
++k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E=
++k8s.io/kube-proxy v0.0.0-20200131120626-5b8ba5e54e1f/go.mod h1:3/a8cJm4V50vBnkRwRhpgdIdsTH+4cj/kV66oxybGxc=
++k8s.io/kube-scheduler v0.0.0-20200131121024-5f0ba0866863/go.mod h1:1xme9q7fNwDPtgIELmyOFGQErlOzFlQ1XHjTPUz1GYc=
++k8s.io/kubectl v0.0.0-20200131122652-b28c9fbca10f h1:7764TWFJ+UYY6TX1Vq3jCo/3BkORLtywarY8SEdQh18=
++k8s.io/kubectl v0.0.0-20200131122652-b28c9fbca10f/go.mod h1:d78MZ7MR2Q5xMwSrGvbJARH13CsOo5mSoDZWfjIe1TQ=
++k8s.io/kubelet v0.0.0-20200131120825-905bd8eea4c4/go.mod h1:VkwV80jJy9GciSRBPFduby5qJxI5v5lV3D6WMMCveek=
++k8s.io/kubernetes v0.0.0-20191207011953-bfafae8f1c2f h1:bGmDtZ96ysKXeBFw0+9cw9twoCQjrPRkkpSQqhxEXVs=
++k8s.io/kubernetes v0.0.0-20191207011953-bfafae8f1c2f/go.mod h1:OdJXH1Q9L+NDVj158Zo8f6R3NSaOx1ewLUcaJv8hSRE=
++k8s.io/legacy-cloud-providers v0.0.0-20200208200602-3a1c7effd2b3/go.mod h1:Egd+aHCesdnzDDtUaaWnAhnyt5/dgQIfM4UL5z2WJxg=
++k8s.io/metrics v0.0.0-20200131120008-5c623d74062d/go.mod h1:18pR44uxuhPU05LZpHhJiPPzQvGoFmCf2UlTp2EhSM8=
++k8s.io/repo-infra v0.0.0-20181204233714-00fe14e3d1a3/go.mod h1:+G1xBfZDfVFsm1Tj/HNCvg4QqWx8rJ2Fxpqr1rqp/gQ=
++k8s.io/sample-apiserver v0.0.0-20200208192953-f8dc80bbc173/go.mod h1:Bnw1dM0HuYH49aVse0I8cV6KeyOFPBaWxnhsU7uR2UA=
++k8s.io/utils v0.0.0-20190801114015-581e00157fb1 h1:+ySTxfHnfzZb9ys375PXNlLhkJPLKgHajBU0N62BDvE=
++k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew=
++layeh.com/gopher-json v0.0.0-20190114024228-97fed8db8427 h1:RZkKxMR3jbQxdCEcglq3j7wY3PRJIopAwBlx1RE71X0=
++layeh.com/gopher-json v0.0.0-20190114024228-97fed8db8427/go.mod h1:ivKkcY8Zxw5ba0jldhZCYYQfGdb2K6u9tbYK1AwMIBc=
++modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw=
++modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk=
++modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k=
++modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs=
++modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I=
++sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0=
++sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU=
++sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI=
++sigs.k8s.io/structured-merge-diff v1.0.2/go.mod h1:IIgPezJWb76P0hotTxzDbWsMYB8APh18qZnxkomBpxA=
++sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs=
++sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
++vbom.ml/util v0.0.0-20160121211510-db5cfe13f5cc/go.mod h1:so/NYdZXCz+E3ZpW0uAoCj6uzU2+8OWDFv/HxUSs7kI=
diff --git a/nixpkgs/pkgs/applications/networking/cluster/atlantis/default.nix b/nixpkgs/pkgs/applications/networking/cluster/atlantis/default.nix
new file mode 100644
index 000000000000..0152f80afbf3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/atlantis/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "atlantis";
+  version = "0.13.0";
+
+  src = fetchFromGitHub {
+    owner = "runatlantis";
+    repo = "atlantis";
+    rev = "v${version}";
+    sha256 = "1ymixbix9sxhzmixqm9yjm9181aqnwnllqnswr0fq0nljw4018dn";
+  };
+
+  vendorSha256 = null;
+
+  subPackages = [ "." ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/runatlantis/atlantis";
+    description = "Terraform Pull Request Automation";
+    platforms = platforms.all;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ jpotier ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/chronos/chronos-deps.nix b/nixpkgs/pkgs/applications/networking/cluster/chronos/chronos-deps.nix
new file mode 100644
index 000000000000..aac0dd10e15a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/chronos/chronos-deps.nix
@@ -0,0 +1,14 @@
+{stdenv, curl}:
+
+stdenv.mkDerivation {
+  name = "chronos-maven-deps";
+  builder = ./fetch-chronos-deps.sh;
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "0mm2sb1p5zz6b0z2s4zhdlix6fafydsxmqjy8zbkwzw4f6lazzyl";
+
+  nativeBuildInputs = [ curl ];
+
+  impureEnvVars = stdenv.lib.fetchers.proxyImpureEnvVars;
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/chronos/default.nix b/nixpkgs/pkgs/applications/networking/cluster/chronos/default.nix
new file mode 100644
index 000000000000..e0cc780841bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/chronos/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, lib, makeWrapper, fetchgit, curl, jdk, maven, nodejs, mesos }:
+
+stdenv.mkDerivation rec {
+  pname = "chronos";
+  version = "286b2ccb8e4695f8e413406ceca85b60d3a87e22";
+
+  src = fetchgit {
+    url = "https://github.com/airbnb/chronos";
+    rev = version;
+    sha256 = "0hrln3ad2g2cq2xqmy5mq32cdxxb9vb6v6jp6kcq03f8km6v3g9c";
+  };
+
+  buildInputs = [ makeWrapper curl jdk maven nodejs mesos ];
+
+  mavenRepo = import ./chronos-deps.nix { inherit stdenv curl; };
+
+  buildPhase = ''
+    ln -s $mavenRepo .m2
+    mvn package -Dmaven.repo.local=$(pwd)/.m2
+  '';
+
+  installPhase = ''
+    mkdir -p $out/{bin,libexec/chronos}
+    cp target/chronos*.jar $out/libexec/chronos/${pname}-${version}.jar
+
+    makeWrapper ${jdk.jre}/bin/java $out/bin/chronos \
+      --add-flags "-Xmx384m -Xms384m -cp $out/libexec/chronos/${pname}-${version}.jar com.airbnb.scheduler.Main" \
+      --prefix "MESOS_NATIVE_LIBRARY" : "$MESOS_NATIVE_LIBRARY"
+  '';
+
+  meta = with lib; {
+    homepage    = "http://airbnb.github.io/chronos";
+    license     = licenses.asl20;
+    description = "Fault tolerant job scheduler for Mesos which handles dependencies and ISO8601 based schedules";
+    maintainers = with maintainers; [ offline ];
+    platforms   = platforms.unix;
+    broken = true; # doesn't build https://hydra.nixos.org/build/25768319
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/chronos/fetch-chronos-deps.sh b/nixpkgs/pkgs/applications/networking/cluster/chronos/fetch-chronos-deps.sh
new file mode 100644
index 000000000000..2e337076107d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/chronos/fetch-chronos-deps.sh
@@ -0,0 +1,1672 @@
+source $stdenv/setup
+header "fetching Chronos maven repo"
+
+function fetchArtifact {
+  repoPath="$1"
+  echo "fetching $repoPath"
+  mkdir -p $(dirname $out/$repoPath)
+  curl --fail --location --insecure --max-redirs 20 "http://repo.maven.apache.org/maven2/$repoPath" --output "$out/$repoPath" ||
+  curl --fail --location --insecure --max-redirs 20 "https://repository.apache.org/content/repositories/release/$repoPath" --output "$out/$repoPath" ||
+  curl --fail --location --insecure --max-redirs 20 "http://downloads.mesosphere.io/maven/$repoPath" --output "$out/$repoPath"
+}
+
+fetchArtifact commons-collections/commons-collections/3.1/commons-collections-3.1.pom.sha1
+fetchArtifact commons-collections/commons-collections/3.1/commons-collections-3.1.pom
+fetchArtifact commons-collections/commons-collections/2.0/commons-collections-2.0.pom
+fetchArtifact commons-collections/commons-collections/2.0/commons-collections-2.0.pom.sha1
+fetchArtifact commons-collections/commons-collections/3.2/commons-collections-3.2.pom.sha1
+fetchArtifact commons-collections/commons-collections/3.2/commons-collections-3.2.jar.sha1
+fetchArtifact commons-collections/commons-collections/3.2/commons-collections-3.2.pom
+fetchArtifact commons-collections/commons-collections/3.2/commons-collections-3.2.jar
+fetchArtifact commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.pom.sha1
+fetchArtifact commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar.sha1
+fetchArtifact commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.pom
+fetchArtifact commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar
+fetchArtifact commons-collections/commons-collections/2.1/commons-collections-2.1.pom
+fetchArtifact commons-collections/commons-collections/2.1/commons-collections-2.1.pom.sha1
+fetchArtifact commons-io/commons-io/1.4/commons-io-1.4.jar
+fetchArtifact commons-io/commons-io/1.4/commons-io-1.4.pom.sha1
+fetchArtifact commons-io/commons-io/1.4/commons-io-1.4.pom
+fetchArtifact commons-io/commons-io/1.4/commons-io-1.4.jar.sha1
+fetchArtifact commons-io/commons-io/2.2/commons-io-2.2.pom
+fetchArtifact commons-io/commons-io/2.2/commons-io-2.2.jar
+fetchArtifact commons-io/commons-io/2.2/commons-io-2.2.jar.sha1
+fetchArtifact commons-io/commons-io/2.2/commons-io-2.2.pom.sha1
+fetchArtifact aopalliance/aopalliance/1.0/aopalliance-1.0.jar
+fetchArtifact aopalliance/aopalliance/1.0/aopalliance-1.0.pom.sha1
+fetchArtifact aopalliance/aopalliance/1.0/aopalliance-1.0.pom
+fetchArtifact aopalliance/aopalliance/1.0/aopalliance-1.0.jar.sha1
+fetchArtifact commons-cli/commons-cli/1.0/commons-cli-1.0.pom
+fetchArtifact commons-cli/commons-cli/1.0/commons-cli-1.0.jar.sha1
+fetchArtifact commons-cli/commons-cli/1.0/commons-cli-1.0.pom.sha1
+fetchArtifact commons-cli/commons-cli/1.0/commons-cli-1.0.jar
+fetchArtifact net/kencochrane/raven/raven-all/4.1.2/raven-all-4.1.2.pom
+fetchArtifact net/kencochrane/raven/raven-all/4.1.2/raven-all-4.1.2.pom.sha1
+fetchArtifact net/kencochrane/raven/raven/4.1.2/raven-4.1.2.jar
+fetchArtifact net/kencochrane/raven/raven/4.1.2/raven-4.1.2.pom
+fetchArtifact net/kencochrane/raven/raven/4.1.2/raven-4.1.2.jar.sha1
+fetchArtifact net/kencochrane/raven/raven/4.1.2/raven-4.1.2.pom.sha1
+fetchArtifact net/kencochrane/raven/raven-getsentry/4.1.2/raven-getsentry-4.1.2.jar.sha1
+fetchArtifact net/kencochrane/raven/raven-getsentry/4.1.2/raven-getsentry-4.1.2.jar
+fetchArtifact net/kencochrane/raven/raven-getsentry/4.1.2/raven-getsentry-4.1.2.pom.sha1
+fetchArtifact net/kencochrane/raven/raven-getsentry/4.1.2/raven-getsentry-4.1.2.pom
+fetchArtifact net/liftweb/lift-markdown_2.11/2.6-M4/lift-markdown_2.11-2.6-M4.jar.sha1
+fetchArtifact net/liftweb/lift-markdown_2.11/2.6-M4/lift-markdown_2.11-2.6-M4.pom
+fetchArtifact net/liftweb/lift-markdown_2.11/2.6-M4/lift-markdown_2.11-2.6-M4.jar
+fetchArtifact net/liftweb/lift-markdown_2.11/2.6-M4/lift-markdown_2.11-2.6-M4.pom.sha1
+fetchArtifact net/java/jvnet-parent/4/jvnet-parent-4.pom
+fetchArtifact net/java/jvnet-parent/4/jvnet-parent-4.pom.sha1
+fetchArtifact net/java/jvnet-parent/1/jvnet-parent-1.pom
+fetchArtifact net/java/jvnet-parent/1/jvnet-parent-1.pom.sha1
+fetchArtifact net/java/jvnet-parent/3/jvnet-parent-3.pom.sha1
+fetchArtifact net/java/jvnet-parent/3/jvnet-parent-3.pom
+fetchArtifact net/alchim31/maven/scala-maven-plugin/3.1.0/scala-maven-plugin-3.1.0.jar.sha1
+fetchArtifact net/alchim31/maven/scala-maven-plugin/3.1.0/scala-maven-plugin-3.1.0.pom.sha1
+fetchArtifact net/alchim31/maven/scala-maven-plugin/3.1.0/scala-maven-plugin-3.1.0.pom
+fetchArtifact net/alchim31/maven/scala-maven-plugin/3.1.0/scala-maven-plugin-3.1.0.jar
+fetchArtifact net/jpountz/lz4/lz4/1.2.0/lz4-1.2.0.jar
+fetchArtifact net/jpountz/lz4/lz4/1.2.0/lz4-1.2.0.pom
+fetchArtifact net/jpountz/lz4/lz4/1.2.0/lz4-1.2.0.jar.sha1
+fetchArtifact net/jpountz/lz4/lz4/1.2.0/lz4-1.2.0.pom.sha1
+fetchArtifact classworlds/classworlds/1.1/classworlds-1.1.pom
+fetchArtifact classworlds/classworlds/1.1/classworlds-1.1.pom.sha1
+fetchArtifact classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar.sha1
+fetchArtifact classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.pom.sha1
+fetchArtifact classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.pom
+fetchArtifact classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar
+fetchArtifact xerces/xercesImpl/2.8.1/xercesImpl-2.8.1.pom.sha1
+fetchArtifact xerces/xercesImpl/2.8.1/xercesImpl-2.8.1.pom
+fetchArtifact xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.pom.sha1
+fetchArtifact xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.pom
+fetchArtifact xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar
+fetchArtifact xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar.sha1
+fetchArtifact io/dropwizard/metrics/metrics-core/3.1.0/metrics-core-3.1.0.pom
+fetchArtifact io/dropwizard/metrics/metrics-core/3.1.0/metrics-core-3.1.0.jar
+fetchArtifact io/dropwizard/metrics/metrics-core/3.1.0/metrics-core-3.1.0.jar.sha1
+fetchArtifact io/dropwizard/metrics/metrics-core/3.1.0/metrics-core-3.1.0.pom.sha1
+fetchArtifact io/dropwizard/metrics/metrics-graphite/3.1.0/metrics-graphite-3.1.0.jar.sha1
+fetchArtifact io/dropwizard/metrics/metrics-graphite/3.1.0/metrics-graphite-3.1.0.jar
+fetchArtifact io/dropwizard/metrics/metrics-graphite/3.1.0/metrics-graphite-3.1.0.pom.sha1
+fetchArtifact io/dropwizard/metrics/metrics-graphite/3.1.0/metrics-graphite-3.1.0.pom
+fetchArtifact io/dropwizard/metrics/metrics-parent/3.1.0/metrics-parent-3.1.0.pom.sha1
+fetchArtifact io/dropwizard/metrics/metrics-parent/3.1.0/metrics-parent-3.1.0.pom
+fetchArtifact io/netty/netty/3.7.0.Final/netty-3.7.0.Final.jar.sha1
+fetchArtifact io/netty/netty/3.7.0.Final/netty-3.7.0.Final.pom
+fetchArtifact io/netty/netty/3.7.0.Final/netty-3.7.0.Final.jar
+fetchArtifact io/netty/netty/3.7.0.Final/netty-3.7.0.Final.pom.sha1
+fetchArtifact io/netty/netty/3.9.0.Final/netty-3.9.0.Final.pom.sha1
+fetchArtifact io/netty/netty/3.9.0.Final/netty-3.9.0.Final.jar
+fetchArtifact io/netty/netty/3.9.0.Final/netty-3.9.0.Final.pom
+fetchArtifact io/netty/netty/3.9.0.Final/netty-3.9.0.Final.jar.sha1
+fetchArtifact commons-lang/commons-lang/2.4/commons-lang-2.4.jar.sha1
+fetchArtifact commons-lang/commons-lang/2.4/commons-lang-2.4.pom.sha1
+fetchArtifact commons-lang/commons-lang/2.4/commons-lang-2.4.jar
+fetchArtifact commons-lang/commons-lang/2.4/commons-lang-2.4.pom
+fetchArtifact commons-lang/commons-lang/2.6/commons-lang-2.6.pom.sha1
+fetchArtifact commons-lang/commons-lang/2.6/commons-lang-2.6.jar.sha1
+fetchArtifact commons-lang/commons-lang/2.6/commons-lang-2.6.jar
+fetchArtifact commons-lang/commons-lang/2.6/commons-lang-2.6.pom
+fetchArtifact commons-lang/commons-lang/2.1/commons-lang-2.1.jar
+fetchArtifact commons-lang/commons-lang/2.1/commons-lang-2.1.pom.sha1
+fetchArtifact commons-lang/commons-lang/2.1/commons-lang-2.1.pom
+fetchArtifact commons-lang/commons-lang/2.1/commons-lang-2.1.jar.sha1
+fetchArtifact log4j/log4j/1.2.12/log4j-1.2.12.pom
+fetchArtifact log4j/log4j/1.2.12/log4j-1.2.12.pom.sha1
+fetchArtifact log4j/log4j/1.2.16/log4j-1.2.16.jar.sha1
+fetchArtifact log4j/log4j/1.2.16/log4j-1.2.16.pom.sha1
+fetchArtifact log4j/log4j/1.2.16/log4j-1.2.16.jar
+fetchArtifact log4j/log4j/1.2.16/log4j-1.2.16.pom
+fetchArtifact log4j/log4j/1.2.17/log4j-1.2.17.pom.sha1
+fetchArtifact log4j/log4j/1.2.17/log4j-1.2.17.jar
+fetchArtifact log4j/log4j/1.2.17/log4j-1.2.17.jar.sha1
+fetchArtifact log4j/log4j/1.2.17/log4j-1.2.17.pom
+fetchArtifact commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.pom
+fetchArtifact commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.pom
+fetchArtifact commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar
+fetchArtifact commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar.sha1
+fetchArtifact commons-logging/commons-logging/1.0/commons-logging-1.0.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.0/commons-logging-1.0.pom
+fetchArtifact commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom
+fetchArtifact commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.pom
+fetchArtifact commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.pom.sha1
+fetchArtifact com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0.pom.sha1
+fetchArtifact com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0.jar
+fetchArtifact com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0.jar.sha1
+fetchArtifact com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0.pom
+fetchArtifact com/google/inject/guice-parent/3.0/guice-parent-3.0.pom.sha1
+fetchArtifact com/google/inject/guice-parent/3.0/guice-parent-3.0.pom
+fetchArtifact com/google/inject/extensions/guice-servlet/3.0/guice-servlet-3.0.pom.sha1
+fetchArtifact com/google/inject/extensions/guice-servlet/3.0/guice-servlet-3.0.jar
+fetchArtifact com/google/inject/extensions/guice-servlet/3.0/guice-servlet-3.0.jar.sha1
+fetchArtifact com/google/inject/extensions/guice-servlet/3.0/guice-servlet-3.0.pom
+fetchArtifact com/google/inject/extensions/extensions-parent/3.0/extensions-parent-3.0.pom.sha1
+fetchArtifact com/google/inject/extensions/extensions-parent/3.0/extensions-parent-3.0.pom
+fetchArtifact com/google/inject/guice/3.0/guice-3.0.jar
+fetchArtifact com/google/inject/guice/3.0/guice-3.0.jar.sha1
+fetchArtifact com/google/inject/guice/3.0/guice-3.0.pom.sha1
+fetchArtifact com/google/inject/guice/3.0/guice-3.0.pom
+fetchArtifact com/google/google/1/google-1.pom
+fetchArtifact com/google/google/1/google-1.pom.sha1
+fetchArtifact com/google/google/5/google-5.pom.sha1
+fetchArtifact com/google/google/5/google-5.pom
+fetchArtifact com/google/collections/google-collections/1.0/google-collections-1.0.pom
+fetchArtifact com/google/collections/google-collections/1.0/google-collections-1.0.pom.sha1
+fetchArtifact com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.pom
+fetchArtifact com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.jar.sha1
+fetchArtifact com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.jar
+fetchArtifact com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.pom.sha1
+fetchArtifact com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.pom.sha1
+fetchArtifact com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.pom
+fetchArtifact com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar.sha1
+fetchArtifact com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar
+fetchArtifact com/google/guava/guava-parent/15.0/guava-parent-15.0.pom
+fetchArtifact com/google/guava/guava-parent/15.0/guava-parent-15.0.pom.sha1
+fetchArtifact com/google/guava/guava-parent/13.0.1/guava-parent-13.0.1.pom.sha1
+fetchArtifact com/google/guava/guava-parent/13.0.1/guava-parent-13.0.1.pom
+fetchArtifact com/google/guava/guava-parent/17.0/guava-parent-17.0.pom.sha1
+fetchArtifact com/google/guava/guava-parent/17.0/guava-parent-17.0.pom
+fetchArtifact com/google/guava/guava-parent/16.0.1/guava-parent-16.0.1.pom
+fetchArtifact com/google/guava/guava-parent/16.0.1/guava-parent-16.0.1.pom.sha1
+fetchArtifact com/google/guava/guava-parent/11.0.2/guava-parent-11.0.2.pom
+fetchArtifact com/google/guava/guava-parent/11.0.2/guava-parent-11.0.2.pom.sha1
+fetchArtifact com/google/guava/guava/15.0/guava-15.0.pom.sha1
+fetchArtifact com/google/guava/guava/15.0/guava-15.0.pom
+fetchArtifact com/google/guava/guava/13.0.1/guava-13.0.1.pom
+fetchArtifact com/google/guava/guava/13.0.1/guava-13.0.1.pom.sha1
+fetchArtifact com/google/guava/guava/17.0/guava-17.0.pom
+fetchArtifact com/google/guava/guava/17.0/guava-17.0.pom.sha1
+fetchArtifact com/google/guava/guava/16.0.1/guava-16.0.1.pom.sha1
+fetchArtifact com/google/guava/guava/16.0.1/guava-16.0.1.pom
+fetchArtifact com/google/guava/guava/16.0.1/guava-16.0.1.jar
+fetchArtifact com/google/guava/guava/16.0.1/guava-16.0.1.jar.sha1
+fetchArtifact com/google/guava/guava/11.0.2/guava-11.0.2.jar.sha1
+fetchArtifact com/google/guava/guava/11.0.2/guava-11.0.2.pom
+fetchArtifact com/google/guava/guava/11.0.2/guava-11.0.2.jar
+fetchArtifact com/google/guava/guava/11.0.2/guava-11.0.2.pom.sha1
+fetchArtifact com/github/spullara/mustache/java/compiler/0.8.12/compiler-0.8.12.pom
+fetchArtifact com/github/spullara/mustache/java/compiler/0.8.12/compiler-0.8.12.pom.sha1
+fetchArtifact com/github/spullara/mustache/java/compiler/0.8.12/compiler-0.8.12.jar
+fetchArtifact com/github/spullara/mustache/java/compiler/0.8.12/compiler-0.8.12.jar.sha1
+fetchArtifact com/github/spullara/mustache/java/mustache.java/0.8.12/mustache.java-0.8.12.pom
+fetchArtifact com/github/spullara/mustache/java/mustache.java/0.8.12/mustache.java-0.8.12.pom.sha1
+fetchArtifact com/codahale/metrics/metrics-servlets/3.0.2/metrics-servlets-3.0.2.jar
+fetchArtifact com/codahale/metrics/metrics-servlets/3.0.2/metrics-servlets-3.0.2.pom.sha1
+fetchArtifact com/codahale/metrics/metrics-servlets/3.0.2/metrics-servlets-3.0.2.jar.sha1
+fetchArtifact com/codahale/metrics/metrics-servlets/3.0.2/metrics-servlets-3.0.2.pom
+fetchArtifact com/codahale/metrics/metrics-annotation/3.0.2/metrics-annotation-3.0.2.jar.sha1
+fetchArtifact com/codahale/metrics/metrics-annotation/3.0.2/metrics-annotation-3.0.2.pom
+fetchArtifact com/codahale/metrics/metrics-annotation/3.0.2/metrics-annotation-3.0.2.pom.sha1
+fetchArtifact com/codahale/metrics/metrics-annotation/3.0.2/metrics-annotation-3.0.2.jar
+fetchArtifact com/codahale/metrics/metrics-jvm/3.0.2/metrics-jvm-3.0.2.pom
+fetchArtifact com/codahale/metrics/metrics-jvm/3.0.2/metrics-jvm-3.0.2.pom.sha1
+fetchArtifact com/codahale/metrics/metrics-jvm/3.0.2/metrics-jvm-3.0.2.jar.sha1
+fetchArtifact com/codahale/metrics/metrics-jvm/3.0.2/metrics-jvm-3.0.2.jar
+fetchArtifact com/codahale/metrics/metrics-json/3.0.2/metrics-json-3.0.2.jar.sha1
+fetchArtifact com/codahale/metrics/metrics-json/3.0.2/metrics-json-3.0.2.pom
+fetchArtifact com/codahale/metrics/metrics-json/3.0.2/metrics-json-3.0.2.jar
+fetchArtifact com/codahale/metrics/metrics-json/3.0.2/metrics-json-3.0.2.pom.sha1
+fetchArtifact com/codahale/metrics/metrics-jersey/3.0.2/metrics-jersey-3.0.2.pom.sha1
+fetchArtifact com/codahale/metrics/metrics-jersey/3.0.2/metrics-jersey-3.0.2.jar
+fetchArtifact com/codahale/metrics/metrics-jersey/3.0.2/metrics-jersey-3.0.2.jar.sha1
+fetchArtifact com/codahale/metrics/metrics-jersey/3.0.2/metrics-jersey-3.0.2.pom
+fetchArtifact com/codahale/metrics/metrics-jetty8/3.0.2/metrics-jetty8-3.0.2.pom.sha1
+fetchArtifact com/codahale/metrics/metrics-jetty8/3.0.2/metrics-jetty8-3.0.2.jar
+fetchArtifact com/codahale/metrics/metrics-jetty8/3.0.2/metrics-jetty8-3.0.2.jar.sha1
+fetchArtifact com/codahale/metrics/metrics-jetty8/3.0.2/metrics-jetty8-3.0.2.pom
+fetchArtifact com/codahale/metrics/metrics-healthchecks/3.0.2/metrics-healthchecks-3.0.2.jar.sha1
+fetchArtifact com/codahale/metrics/metrics-healthchecks/3.0.2/metrics-healthchecks-3.0.2.pom.sha1
+fetchArtifact com/codahale/metrics/metrics-healthchecks/3.0.2/metrics-healthchecks-3.0.2.jar
+fetchArtifact com/codahale/metrics/metrics-healthchecks/3.0.2/metrics-healthchecks-3.0.2.pom
+fetchArtifact com/codahale/metrics/metrics-parent/3.0.2/metrics-parent-3.0.2.pom.sha1
+fetchArtifact com/codahale/metrics/metrics-parent/3.0.2/metrics-parent-3.0.2.pom
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-base/2.4.1/jackson-jaxrs-base-2.4.1.pom
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-base/2.4.1/jackson-jaxrs-base-2.4.1.pom.sha1
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-base/2.4.1/jackson-jaxrs-base-2.4.1.jar
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-base/2.4.1/jackson-jaxrs-base-2.4.1.jar.sha1
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-json-provider/2.4.1/jackson-jaxrs-json-provider-2.4.1.pom.sha1
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-json-provider/2.4.1/jackson-jaxrs-json-provider-2.4.1.jar.sha1
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-json-provider/2.4.1/jackson-jaxrs-json-provider-2.4.1.pom
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-json-provider/2.4.1/jackson-jaxrs-json-provider-2.4.1.jar
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-providers/2.4.1/jackson-jaxrs-providers-2.4.1.pom.sha1
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-providers/2.4.1/jackson-jaxrs-providers-2.4.1.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-annotations/2.4.1/jackson-annotations-2.4.1.jar
+fetchArtifact com/fasterxml/jackson/core/jackson-annotations/2.4.1/jackson-annotations-2.4.1.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-annotations/2.4.1/jackson-annotations-2.4.1.pom.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-annotations/2.4.1/jackson-annotations-2.4.1.jar.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-annotations/2.4.0/jackson-annotations-2.4.0.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-annotations/2.4.0/jackson-annotations-2.4.0.pom.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-annotations/2.2.2/jackson-annotations-2.2.2.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-annotations/2.2.2/jackson-annotations-2.2.2.pom.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-databind/2.4.1/jackson-databind-2.4.1.pom.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-databind/2.4.1/jackson-databind-2.4.1.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-databind/2.4.1.1/jackson-databind-2.4.1.1.jar.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-databind/2.4.1.1/jackson-databind-2.4.1.1.jar
+fetchArtifact com/fasterxml/jackson/core/jackson-databind/2.4.1.1/jackson-databind-2.4.1.1.pom.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-databind/2.4.1.1/jackson-databind-2.4.1.1.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-databind/2.2.2/jackson-databind-2.2.2.pom.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-databind/2.2.2/jackson-databind-2.2.2.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-core/2.3.0/jackson-core-2.3.0.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-core/2.3.0/jackson-core-2.3.0.jar.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-core/2.3.0/jackson-core-2.3.0.pom.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-core/2.3.0/jackson-core-2.3.0.jar
+fetchArtifact com/fasterxml/jackson/core/jackson-core/2.4.1/jackson-core-2.4.1.pom.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-core/2.4.1/jackson-core-2.4.1.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-core/2.2.2/jackson-core-2.2.2.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-core/2.2.2/jackson-core-2.2.2.pom.sha1
+fetchArtifact com/fasterxml/jackson/jackson-parent/2.4/jackson-parent-2.4.pom
+fetchArtifact com/fasterxml/jackson/jackson-parent/2.4/jackson-parent-2.4.pom.sha1
+fetchArtifact com/fasterxml/jackson/module/jackson-module-scala_2.11/2.4.1/jackson-module-scala_2.11-2.4.1.pom
+fetchArtifact com/fasterxml/jackson/module/jackson-module-scala_2.11/2.4.1/jackson-module-scala_2.11-2.4.1.jar
+fetchArtifact com/fasterxml/jackson/module/jackson-module-scala_2.11/2.4.1/jackson-module-scala_2.11-2.4.1.pom.sha1
+fetchArtifact com/fasterxml/jackson/module/jackson-module-scala_2.11/2.4.1/jackson-module-scala_2.11-2.4.1.jar.sha1
+fetchArtifact com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.4.1/jackson-module-jaxb-annotations-2.4.1.jar
+fetchArtifact com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.4.1/jackson-module-jaxb-annotations-2.4.1.pom.sha1
+fetchArtifact com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.4.1/jackson-module-jaxb-annotations-2.4.1.jar.sha1
+fetchArtifact com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.4.1/jackson-module-jaxb-annotations-2.4.1.pom
+fetchArtifact com/fasterxml/oss-parent/16/oss-parent-16.pom
+fetchArtifact com/fasterxml/oss-parent/16/oss-parent-16.pom.sha1
+fetchArtifact com/fasterxml/oss-parent/11/oss-parent-11.pom.sha1
+fetchArtifact com/fasterxml/oss-parent/11/oss-parent-11.pom
+fetchArtifact com/fasterxml/oss-parent/10/oss-parent-10.pom.sha1
+fetchArtifact com/fasterxml/oss-parent/10/oss-parent-10.pom
+fetchArtifact com/fasterxml/classmate/1.0.0/classmate-1.0.0.pom.sha1
+fetchArtifact com/fasterxml/classmate/1.0.0/classmate-1.0.0.jar
+fetchArtifact com/fasterxml/classmate/1.0.0/classmate-1.0.0.pom
+fetchArtifact com/fasterxml/classmate/1.0.0/classmate-1.0.0.jar.sha1
+fetchArtifact com/datastax/cassandra/cassandra-driver-core/2.1.0/cassandra-driver-core-2.1.0.jar
+fetchArtifact com/datastax/cassandra/cassandra-driver-core/2.1.0/cassandra-driver-core-2.1.0.pom.sha1
+fetchArtifact com/datastax/cassandra/cassandra-driver-core/2.1.0/cassandra-driver-core-2.1.0.pom
+fetchArtifact com/datastax/cassandra/cassandra-driver-core/2.1.0/cassandra-driver-core-2.1.0.jar.sha1
+fetchArtifact com/datastax/cassandra/cassandra-driver-parent/2.1.0/cassandra-driver-parent-2.1.0.pom.sha1
+fetchArtifact com/datastax/cassandra/cassandra-driver-parent/2.1.0/cassandra-driver-parent-2.1.0.pom
+fetchArtifact com/typesafe/sbt/compiler-interface/0.12.0/compiler-interface-0.12.0.pom.sha1
+fetchArtifact com/typesafe/sbt/compiler-interface/0.12.0/compiler-interface-0.12.0-sources.jar
+fetchArtifact com/typesafe/sbt/compiler-interface/0.12.0/compiler-interface-0.12.0.pom
+fetchArtifact com/typesafe/sbt/compiler-interface/0.12.0/compiler-interface-0.12.0-sources.jar.sha1
+fetchArtifact com/typesafe/sbt/sbt-interface/0.12.0/sbt-interface-0.12.0.jar.sha1
+fetchArtifact com/typesafe/sbt/sbt-interface/0.12.0/sbt-interface-0.12.0.jar
+fetchArtifact com/typesafe/sbt/sbt-interface/0.12.0/sbt-interface-0.12.0.pom
+fetchArtifact com/typesafe/sbt/sbt-interface/0.12.0/sbt-interface-0.12.0.pom.sha1
+fetchArtifact com/typesafe/sbt/incremental-compiler/0.12.0/incremental-compiler-0.12.0.jar.sha1
+fetchArtifact com/typesafe/sbt/incremental-compiler/0.12.0/incremental-compiler-0.12.0.pom.sha1
+fetchArtifact com/typesafe/sbt/incremental-compiler/0.12.0/incremental-compiler-0.12.0.jar
+fetchArtifact com/typesafe/sbt/incremental-compiler/0.12.0/incremental-compiler-0.12.0.pom
+fetchArtifact com/typesafe/config/1.2.1/config-1.2.1.pom.sha1
+fetchArtifact com/typesafe/config/1.2.1/config-1.2.1.jar.sha1
+fetchArtifact com/typesafe/config/1.2.1/config-1.2.1.pom
+fetchArtifact com/typesafe/config/1.2.1/config-1.2.1.jar
+fetchArtifact com/typesafe/zinc/zinc/0.1.0/zinc-0.1.0.jar
+fetchArtifact com/typesafe/zinc/zinc/0.1.0/zinc-0.1.0.pom.sha1
+fetchArtifact com/typesafe/zinc/zinc/0.1.0/zinc-0.1.0.pom
+fetchArtifact com/typesafe/zinc/zinc/0.1.0/zinc-0.1.0.jar.sha1
+fetchArtifact com/typesafe/akka/akka-actor_2.11/2.3.6/akka-actor_2.11-2.3.6.pom.sha1
+fetchArtifact com/typesafe/akka/akka-actor_2.11/2.3.6/akka-actor_2.11-2.3.6.jar.sha1
+fetchArtifact com/typesafe/akka/akka-actor_2.11/2.3.6/akka-actor_2.11-2.3.6.pom
+fetchArtifact com/typesafe/akka/akka-actor_2.11/2.3.6/akka-actor_2.11-2.3.6.jar
+fetchArtifact com/thoughtworks/paranamer/paranamer-parent/2.6/paranamer-parent-2.6.pom.sha1
+fetchArtifact com/thoughtworks/paranamer/paranamer-parent/2.6/paranamer-parent-2.6.pom
+fetchArtifact com/thoughtworks/paranamer/paranamer/2.6/paranamer-2.6.pom
+fetchArtifact com/thoughtworks/paranamer/paranamer/2.6/paranamer-2.6.jar.sha1
+fetchArtifact com/thoughtworks/paranamer/paranamer/2.6/paranamer-2.6.pom.sha1
+fetchArtifact com/thoughtworks/paranamer/paranamer/2.6/paranamer-2.6.jar
+fetchArtifact com/sun/jersey/jersey-server/1.18.1/jersey-server-1.18.1.pom
+fetchArtifact com/sun/jersey/jersey-server/1.18.1/jersey-server-1.18.1.jar.sha1
+fetchArtifact com/sun/jersey/jersey-server/1.18.1/jersey-server-1.18.1.pom.sha1
+fetchArtifact com/sun/jersey/jersey-server/1.18.1/jersey-server-1.18.1.jar
+fetchArtifact com/sun/jersey/jersey-server/1.17.1/jersey-server-1.17.1.pom.sha1
+fetchArtifact com/sun/jersey/jersey-server/1.17.1/jersey-server-1.17.1.pom
+fetchArtifact com/sun/jersey/jersey-servlet/1.18.1/jersey-servlet-1.18.1.jar.sha1
+fetchArtifact com/sun/jersey/jersey-servlet/1.18.1/jersey-servlet-1.18.1.jar
+fetchArtifact com/sun/jersey/jersey-servlet/1.18.1/jersey-servlet-1.18.1.pom
+fetchArtifact com/sun/jersey/jersey-servlet/1.18.1/jersey-servlet-1.18.1.pom.sha1
+fetchArtifact com/sun/jersey/jersey-core/1.18.1/jersey-core-1.18.1.pom.sha1
+fetchArtifact com/sun/jersey/jersey-core/1.18.1/jersey-core-1.18.1.jar
+fetchArtifact com/sun/jersey/jersey-core/1.18.1/jersey-core-1.18.1.pom
+fetchArtifact com/sun/jersey/jersey-core/1.18.1/jersey-core-1.18.1.jar.sha1
+fetchArtifact com/sun/jersey/jersey-core/1.17.1/jersey-core-1.17.1.pom
+fetchArtifact com/sun/jersey/jersey-core/1.17.1/jersey-core-1.17.1.pom.sha1
+fetchArtifact com/sun/jersey/jersey-project/1.18.1/jersey-project-1.18.1.pom.sha1
+fetchArtifact com/sun/jersey/jersey-project/1.18.1/jersey-project-1.18.1.pom
+fetchArtifact com/sun/jersey/jersey-project/1.17.1/jersey-project-1.17.1.pom.sha1
+fetchArtifact com/sun/jersey/jersey-project/1.17.1/jersey-project-1.17.1.pom
+fetchArtifact com/sun/jersey/contribs/jersey-guice/1.18.1/jersey-guice-1.18.1.pom.sha1
+fetchArtifact com/sun/jersey/contribs/jersey-guice/1.18.1/jersey-guice-1.18.1.jar.sha1
+fetchArtifact com/sun/jersey/contribs/jersey-guice/1.18.1/jersey-guice-1.18.1.jar
+fetchArtifact com/sun/jersey/contribs/jersey-guice/1.18.1/jersey-guice-1.18.1.pom
+fetchArtifact com/sun/jersey/contribs/jersey-contribs/1.18.1/jersey-contribs-1.18.1.pom
+fetchArtifact com/sun/jersey/contribs/jersey-contribs/1.18.1/jersey-contribs-1.18.1.pom.sha1
+fetchArtifact com/sun/mail/all/1.4.5/all-1.4.5.pom
+fetchArtifact com/sun/mail/all/1.4.5/all-1.4.5.pom.sha1
+fetchArtifact commons-digester/commons-digester/1.6/commons-digester-1.6.jar
+fetchArtifact commons-digester/commons-digester/1.6/commons-digester-1.6.pom
+fetchArtifact commons-digester/commons-digester/1.6/commons-digester-1.6.jar.sha1
+fetchArtifact commons-digester/commons-digester/1.6/commons-digester-1.6.pom.sha1
+fetchArtifact backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.pom.sha1
+fetchArtifact backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.pom
+fetchArtifact backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar
+fetchArtifact backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar.sha1
+fetchArtifact jgraph/jgraph/5.13.0.0/jgraph-5.13.0.0.jar
+fetchArtifact jgraph/jgraph/5.13.0.0/jgraph-5.13.0.0.pom
+fetchArtifact jgraph/jgraph/5.13.0.0/jgraph-5.13.0.0.pom.sha1
+fetchArtifact jgraph/jgraph/5.13.0.0/jgraph-5.13.0.0.jar.sha1
+fetchArtifact asm/asm-parent/3.3.1/asm-parent-3.3.1.pom
+fetchArtifact asm/asm-parent/3.3.1/asm-parent-3.3.1.pom.sha1
+fetchArtifact asm/asm-parent/3.1/asm-parent-3.1.pom.sha1
+fetchArtifact asm/asm-parent/3.1/asm-parent-3.1.pom
+fetchArtifact asm/asm/3.3.1/asm-3.3.1.pom
+fetchArtifact asm/asm/3.3.1/asm-3.3.1.jar
+fetchArtifact asm/asm/3.3.1/asm-3.3.1.pom.sha1
+fetchArtifact asm/asm/3.3.1/asm-3.3.1.jar.sha1
+fetchArtifact asm/asm/3.1/asm-3.1.pom.sha1
+fetchArtifact asm/asm/3.1/asm-3.1.pom
+fetchArtifact jline/jline/0.9.94/jline-0.9.94.pom
+fetchArtifact jline/jline/0.9.94/jline-0.9.94.pom.sha1
+fetchArtifact jline/jline/0.9.94/jline-0.9.94.jar.sha1
+fetchArtifact jline/jline/0.9.94/jline-0.9.94.jar
+fetchArtifact xml-apis/xml-apis/1.3.03/xml-apis-1.3.03.pom
+fetchArtifact xml-apis/xml-apis/1.3.03/xml-apis-1.3.03.pom.sha1
+fetchArtifact xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.pom
+fetchArtifact xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.pom.sha1
+fetchArtifact xml-apis/xml-apis/2.0.2/xml-apis-2.0.2.pom
+fetchArtifact xml-apis/xml-apis/2.0.2/xml-apis-2.0.2.pom.sha1
+fetchArtifact xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.pom
+fetchArtifact xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar
+fetchArtifact xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar.sha1
+fetchArtifact xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.pom.sha1
+fetchArtifact commons-codec/commons-codec/1.3/commons-codec-1.3.pom.sha1
+fetchArtifact commons-codec/commons-codec/1.3/commons-codec-1.3.jar
+fetchArtifact commons-codec/commons-codec/1.3/commons-codec-1.3.pom
+fetchArtifact commons-codec/commons-codec/1.3/commons-codec-1.3.jar.sha1
+fetchArtifact commons-codec/commons-codec/1.2/commons-codec-1.2.pom
+fetchArtifact commons-codec/commons-codec/1.2/commons-codec-1.2.pom.sha1
+fetchArtifact commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.pom
+fetchArtifact commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.pom.sha1
+fetchArtifact org/vafer/jdependency/0.9/jdependency-0.9.jar
+fetchArtifact org/vafer/jdependency/0.9/jdependency-0.9.jar.sha1
+fetchArtifact org/vafer/jdependency/0.9/jdependency-0.9.pom
+fetchArtifact org/vafer/jdependency/0.9/jdependency-0.9.pom.sha1
+fetchArtifact org/joda/joda-convert/1.7/joda-convert-1.7.jar.sha1
+fetchArtifact org/joda/joda-convert/1.7/joda-convert-1.7.jar
+fetchArtifact org/joda/joda-convert/1.7/joda-convert-1.7.pom
+fetchArtifact org/joda/joda-convert/1.7/joda-convert-1.7.pom.sha1
+fetchArtifact org/mockito/mockito-core/1.9.5/mockito-core-1.9.5.pom
+fetchArtifact org/mockito/mockito-core/1.9.5/mockito-core-1.9.5.jar.sha1
+fetchArtifact org/mockito/mockito-core/1.9.5/mockito-core-1.9.5.pom.sha1
+fetchArtifact org/mockito/mockito-core/1.9.5/mockito-core-1.9.5.jar
+fetchArtifact org/mockito/mockito-all/1.9.5/mockito-all-1.9.5.jar
+fetchArtifact org/mockito/mockito-all/1.9.5/mockito-all-1.9.5.pom.sha1
+fetchArtifact org/mockito/mockito-all/1.9.5/mockito-all-1.9.5.pom
+fetchArtifact org/mockito/mockito-all/1.9.5/mockito-all-1.9.5.jar.sha1
+fetchArtifact org/javabits/jgrapht/jgrapht-ext/0.9.1/jgrapht-ext-0.9.1.pom.sha1
+fetchArtifact org/javabits/jgrapht/jgrapht-ext/0.9.1/jgrapht-ext-0.9.1.jar
+fetchArtifact org/javabits/jgrapht/jgrapht-ext/0.9.1/jgrapht-ext-0.9.1.pom
+fetchArtifact org/javabits/jgrapht/jgrapht-ext/0.9.1/jgrapht-ext-0.9.1.jar.sha1
+fetchArtifact org/javabits/jgrapht/jgrapht-core/0.9.1/jgrapht-core-0.9.1.pom
+fetchArtifact org/javabits/jgrapht/jgrapht-core/0.9.1/jgrapht-core-0.9.1.jar
+fetchArtifact org/javabits/jgrapht/jgrapht-core/0.9.1/jgrapht-core-0.9.1.jar.sha1
+fetchArtifact org/javabits/jgrapht/jgrapht-core/0.9.1/jgrapht-core-0.9.1.pom.sha1
+fetchArtifact org/javabits/jgrapht/jgrapht/0.9.1/jgrapht-0.9.1.pom.sha1
+fetchArtifact org/javabits/jgrapht/jgrapht/0.9.1/jgrapht-0.9.1.pom
+fetchArtifact org/scala-lang/scala-compiler/2.11.2/scala-compiler-2.11.2.pom
+fetchArtifact org/scala-lang/scala-compiler/2.11.2/scala-compiler-2.11.2.jar.sha1
+fetchArtifact org/scala-lang/scala-compiler/2.11.2/scala-compiler-2.11.2.jar
+fetchArtifact org/scala-lang/scala-compiler/2.11.2/scala-compiler-2.11.2.pom.sha1
+fetchArtifact org/scala-lang/scala-compiler/2.11.0-RC3/scala-compiler-2.11.0-RC3.jar.sha1
+fetchArtifact org/scala-lang/scala-compiler/2.11.0-RC3/scala-compiler-2.11.0-RC3.jar
+fetchArtifact org/scala-lang/scala-compiler/2.11.0-RC3/scala-compiler-2.11.0-RC3.pom.sha1
+fetchArtifact org/scala-lang/scala-compiler/2.11.0-RC3/scala-compiler-2.11.0-RC3.pom
+fetchArtifact org/scala-lang/scala-compiler/2.9.2/scala-compiler-2.9.2.jar
+fetchArtifact org/scala-lang/scala-compiler/2.9.2/scala-compiler-2.9.2.pom.sha1
+fetchArtifact org/scala-lang/scala-compiler/2.9.2/scala-compiler-2.9.2.pom
+fetchArtifact org/scala-lang/scala-compiler/2.9.2/scala-compiler-2.9.2.jar.sha1
+fetchArtifact org/scala-lang/scala-library/2.11.1/scala-library-2.11.1.jar.sha1
+fetchArtifact org/scala-lang/scala-library/2.11.1/scala-library-2.11.1.jar
+fetchArtifact org/scala-lang/scala-library/2.11.1/scala-library-2.11.1.pom
+fetchArtifact org/scala-lang/scala-library/2.11.1/scala-library-2.11.1.pom.sha1
+fetchArtifact org/scala-lang/scala-library/2.11.2/scala-library-2.11.2.pom.sha1
+fetchArtifact org/scala-lang/scala-library/2.11.2/scala-library-2.11.2.jar.sha1
+fetchArtifact org/scala-lang/scala-library/2.11.2/scala-library-2.11.2.pom
+fetchArtifact org/scala-lang/scala-library/2.11.2/scala-library-2.11.2.jar
+fetchArtifact org/scala-lang/scala-library/2.11.0-RC3/scala-library-2.11.0-RC3.pom
+fetchArtifact org/scala-lang/scala-library/2.11.0-RC3/scala-library-2.11.0-RC3.pom.sha1
+fetchArtifact org/scala-lang/scala-library/2.11.0-RC3/scala-library-2.11.0-RC3.jar
+fetchArtifact org/scala-lang/scala-library/2.11.0-RC3/scala-library-2.11.0-RC3.jar.sha1
+fetchArtifact org/scala-lang/scala-library/2.11.0/scala-library-2.11.0.pom
+fetchArtifact org/scala-lang/scala-library/2.11.0/scala-library-2.11.0.pom.sha1
+fetchArtifact org/scala-lang/scala-library/2.9.2/scala-library-2.9.2.pom.sha1
+fetchArtifact org/scala-lang/scala-library/2.9.2/scala-library-2.9.2.pom
+fetchArtifact org/scala-lang/scala-library/2.9.2/scala-library-2.9.2.jar.sha1
+fetchArtifact org/scala-lang/scala-library/2.9.2/scala-library-2.9.2.jar
+fetchArtifact org/scala-lang/scala-reflect/2.11.1/scala-reflect-2.11.1.pom.sha1
+fetchArtifact org/scala-lang/scala-reflect/2.11.1/scala-reflect-2.11.1.pom
+fetchArtifact org/scala-lang/scala-reflect/2.11.2/scala-reflect-2.11.2.jar
+fetchArtifact org/scala-lang/scala-reflect/2.11.2/scala-reflect-2.11.2.jar.sha1
+fetchArtifact org/scala-lang/scala-reflect/2.11.2/scala-reflect-2.11.2.pom
+fetchArtifact org/scala-lang/scala-reflect/2.11.2/scala-reflect-2.11.2.pom.sha1
+fetchArtifact org/scala-lang/scala-reflect/2.11.0-RC3/scala-reflect-2.11.0-RC3.pom.sha1
+fetchArtifact org/scala-lang/scala-reflect/2.11.0-RC3/scala-reflect-2.11.0-RC3.jar.sha1
+fetchArtifact org/scala-lang/scala-reflect/2.11.0-RC3/scala-reflect-2.11.0-RC3.pom
+fetchArtifact org/scala-lang/scala-reflect/2.11.0-RC3/scala-reflect-2.11.0-RC3.jar
+fetchArtifact org/scala-lang/scala-reflect/2.11.0/scala-reflect-2.11.0.pom.sha1
+fetchArtifact org/scala-lang/scala-reflect/2.11.0/scala-reflect-2.11.0.pom
+fetchArtifact org/scala-lang/modules/scala-xml_2.11.0-RC3/1.0.1/scala-xml_2.11.0-RC3-1.0.1.pom
+fetchArtifact org/scala-lang/modules/scala-xml_2.11.0-RC3/1.0.1/scala-xml_2.11.0-RC3-1.0.1.pom.sha1
+fetchArtifact org/scala-lang/modules/scala-xml_2.11.0-RC3/1.0.1/scala-xml_2.11.0-RC3-1.0.1.jar
+fetchArtifact org/scala-lang/modules/scala-xml_2.11.0-RC3/1.0.1/scala-xml_2.11.0-RC3-1.0.1.jar.sha1
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11.0-RC3/1.0.1/scala-parser-combinators_2.11.0-RC3-1.0.1.jar.sha1
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11.0-RC3/1.0.1/scala-parser-combinators_2.11.0-RC3-1.0.1.jar
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11.0-RC3/1.0.1/scala-parser-combinators_2.11.0-RC3-1.0.1.pom
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11.0-RC3/1.0.1/scala-parser-combinators_2.11.0-RC3-1.0.1.pom.sha1
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11/1.0.1/scala-parser-combinators_2.11-1.0.1.pom.sha1
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11/1.0.1/scala-parser-combinators_2.11-1.0.1.pom
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11/1.0.1/scala-parser-combinators_2.11-1.0.1.jar.sha1
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11/1.0.1/scala-parser-combinators_2.11-1.0.1.jar
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11/1.0.2/scala-parser-combinators_2.11-1.0.2.jar.sha1
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11/1.0.2/scala-parser-combinators_2.11-1.0.2.jar
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11/1.0.2/scala-parser-combinators_2.11-1.0.2.pom.sha1
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11/1.0.2/scala-parser-combinators_2.11-1.0.2.pom
+fetchArtifact org/scala-lang/modules/scala-xml_2.11/1.0.1/scala-xml_2.11-1.0.1.jar.sha1
+fetchArtifact org/scala-lang/modules/scala-xml_2.11/1.0.1/scala-xml_2.11-1.0.1.pom
+fetchArtifact org/scala-lang/modules/scala-xml_2.11/1.0.1/scala-xml_2.11-1.0.1.jar
+fetchArtifact org/scala-lang/modules/scala-xml_2.11/1.0.1/scala-xml_2.11-1.0.1.pom.sha1
+fetchArtifact org/scala-lang/modules/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2.pom.sha1
+fetchArtifact org/scala-lang/modules/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2.jar.sha1
+fetchArtifact org/scala-lang/modules/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2.pom
+fetchArtifact org/scala-lang/modules/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2.jar
+fetchArtifact org/scala-sbt/test-interface/1.0/test-interface-1.0.jar.sha1
+fetchArtifact org/scala-sbt/test-interface/1.0/test-interface-1.0.pom.sha1
+fetchArtifact org/scala-sbt/test-interface/1.0/test-interface-1.0.pom
+fetchArtifact org/scala-sbt/test-interface/1.0/test-interface-1.0.jar
+fetchArtifact org/specs2/specs2_2.11.0-RC3/2.3.10/specs2_2.11.0-RC3-2.3.10.jar.sha1
+fetchArtifact org/specs2/specs2_2.11.0-RC3/2.3.10/specs2_2.11.0-RC3-2.3.10.pom.sha1
+fetchArtifact org/specs2/specs2_2.11.0-RC3/2.3.10/specs2_2.11.0-RC3-2.3.10.pom
+fetchArtifact org/specs2/specs2_2.11.0-RC3/2.3.10/specs2_2.11.0-RC3-2.3.10.jar
+fetchArtifact org/specs2/classycle/1.4.3/classycle-1.4.3.jar
+fetchArtifact org/specs2/classycle/1.4.3/classycle-1.4.3.pom
+fetchArtifact org/specs2/classycle/1.4.3/classycle-1.4.3.jar.sha1
+fetchArtifact org/specs2/classycle/1.4.3/classycle-1.4.3.pom.sha1
+fetchArtifact org/jdom/jdom/1.1/jdom-1.1.pom
+fetchArtifact org/jdom/jdom/1.1/jdom-1.1.jar
+fetchArtifact org/jdom/jdom/1.1/jdom-1.1.jar.sha1
+fetchArtifact org/jdom/jdom/1.1/jdom-1.1.pom.sha1
+fetchArtifact org/jboss/shrinkwrap/shrinkwrap-bom/1.0.1/shrinkwrap-bom-1.0.1.pom
+fetchArtifact org/jboss/shrinkwrap/shrinkwrap-bom/1.0.1/shrinkwrap-bom-1.0.1.pom.sha1
+fetchArtifact org/jboss/shrinkwrap/descriptors/shrinkwrap-descriptors-bom/2.0.0-alpha-3/shrinkwrap-descriptors-bom-2.0.0-alpha-3.pom.sha1
+fetchArtifact org/jboss/shrinkwrap/descriptors/shrinkwrap-descriptors-bom/2.0.0-alpha-3/shrinkwrap-descriptors-bom-2.0.0-alpha-3.pom
+fetchArtifact org/jboss/shrinkwrap/resolver/shrinkwrap-resolver-bom/1.0.0-beta-7/shrinkwrap-resolver-bom-1.0.0-beta-7.pom
+fetchArtifact org/jboss/shrinkwrap/resolver/shrinkwrap-resolver-bom/1.0.0-beta-7/shrinkwrap-resolver-bom-1.0.0-beta-7.pom.sha1
+fetchArtifact org/jboss/jboss-parent/9/jboss-parent-9.pom.sha1
+fetchArtifact org/jboss/jboss-parent/9/jboss-parent-9.pom
+fetchArtifact org/jboss/logging/jboss-logging/3.1.3.GA/jboss-logging-3.1.3.GA.pom
+fetchArtifact org/jboss/logging/jboss-logging/3.1.3.GA/jboss-logging-3.1.3.GA.jar
+fetchArtifact org/jboss/logging/jboss-logging/3.1.3.GA/jboss-logging-3.1.3.GA.jar.sha1
+fetchArtifact org/jboss/logging/jboss-logging/3.1.3.GA/jboss-logging-3.1.3.GA.pom.sha1
+fetchArtifact org/jboss/arquillian/arquillian-bom/1.0.2.Final/arquillian-bom-1.0.2.Final.pom
+fetchArtifact org/jboss/arquillian/arquillian-bom/1.0.2.Final/arquillian-bom-1.0.2.Final.pom.sha1
+fetchArtifact org/rogach/scallop_2.11/0.9.5/scallop_2.11-0.9.5.jar.sha1
+fetchArtifact org/rogach/scallop_2.11/0.9.5/scallop_2.11-0.9.5.pom
+fetchArtifact org/rogach/scallop_2.11/0.9.5/scallop_2.11-0.9.5.pom.sha1
+fetchArtifact org/rogach/scallop_2.11/0.9.5/scallop_2.11-0.9.5.jar
+fetchArtifact org/scalacheck/scalacheck_2.11.0-RC3/1.11.3/scalacheck_2.11.0-RC3-1.11.3.pom
+fetchArtifact org/scalacheck/scalacheck_2.11.0-RC3/1.11.3/scalacheck_2.11.0-RC3-1.11.3.jar.sha1
+fetchArtifact org/scalacheck/scalacheck_2.11.0-RC3/1.11.3/scalacheck_2.11.0-RC3-1.11.3.jar
+fetchArtifact org/scalacheck/scalacheck_2.11.0-RC3/1.11.3/scalacheck_2.11.0-RC3-1.11.3.pom.sha1
+fetchArtifact org/tinyjee/jgraphx/jgraphx/2.0.0.1/jgraphx-2.0.0.1.jar.sha1
+fetchArtifact org/tinyjee/jgraphx/jgraphx/2.0.0.1/jgraphx-2.0.0.1.pom
+fetchArtifact org/tinyjee/jgraphx/jgraphx/2.0.0.1/jgraphx-2.0.0.1.jar
+fetchArtifact org/tinyjee/jgraphx/jgraphx/2.0.0.1/jgraphx-2.0.0.1.pom.sha1
+fetchArtifact org/hibernate/hibernate-validator/5.1.2.Final/hibernate-validator-5.1.2.Final.jar
+fetchArtifact org/hibernate/hibernate-validator/5.1.2.Final/hibernate-validator-5.1.2.Final.pom
+fetchArtifact org/hibernate/hibernate-validator/5.1.2.Final/hibernate-validator-5.1.2.Final.jar.sha1
+fetchArtifact org/hibernate/hibernate-validator/5.1.2.Final/hibernate-validator-5.1.2.Final.pom.sha1
+fetchArtifact org/hibernate/hibernate-validator-parent/5.1.2.Final/hibernate-validator-parent-5.1.2.Final.pom.sha1
+fetchArtifact org/hibernate/hibernate-validator-parent/5.1.2.Final/hibernate-validator-parent-5.1.2.Final.pom
+fetchArtifact org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.pom.sha1
+fetchArtifact org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.pom
+fetchArtifact org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7.jar
+fetchArtifact org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7.pom
+fetchArtifact org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7.pom.sha1
+fetchArtifact org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7.jar.sha1
+fetchArtifact org/slf4j/slf4j-api/1.7.6/slf4j-api-1.7.6.pom
+fetchArtifact org/slf4j/slf4j-api/1.7.6/slf4j-api-1.7.6.pom.sha1
+fetchArtifact org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar
+fetchArtifact org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.pom
+fetchArtifact org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.pom.sha1
+fetchArtifact org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar.sha1
+fetchArtifact org/slf4j/jul-to-slf4j/1.7.7/jul-to-slf4j-1.7.7.jar.sha1
+fetchArtifact org/slf4j/jul-to-slf4j/1.7.7/jul-to-slf4j-1.7.7.pom.sha1
+fetchArtifact org/slf4j/jul-to-slf4j/1.7.7/jul-to-slf4j-1.7.7.pom
+fetchArtifact org/slf4j/jul-to-slf4j/1.7.7/jul-to-slf4j-1.7.7.jar
+fetchArtifact org/slf4j/slf4j-parent/1.7.5/slf4j-parent-1.7.5.pom
+fetchArtifact org/slf4j/slf4j-parent/1.7.5/slf4j-parent-1.7.5.pom.sha1
+fetchArtifact org/slf4j/slf4j-parent/1.7.7/slf4j-parent-1.7.7.pom
+fetchArtifact org/slf4j/slf4j-parent/1.7.7/slf4j-parent-1.7.7.pom.sha1
+fetchArtifact org/slf4j/slf4j-parent/1.7.6/slf4j-parent-1.7.6.pom.sha1
+fetchArtifact org/slf4j/slf4j-parent/1.7.6/slf4j-parent-1.7.6.pom
+fetchArtifact org/slf4j/slf4j-parent/1.6.1/slf4j-parent-1.6.1.pom
+fetchArtifact org/slf4j/slf4j-parent/1.6.1/slf4j-parent-1.6.1.pom.sha1
+fetchArtifact org/slf4j/slf4j-log4j12/1.7.7/slf4j-log4j12-1.7.7.jar
+fetchArtifact org/slf4j/slf4j-log4j12/1.7.7/slf4j-log4j12-1.7.7.pom
+fetchArtifact org/slf4j/slf4j-log4j12/1.7.7/slf4j-log4j12-1.7.7.jar.sha1
+fetchArtifact org/slf4j/slf4j-log4j12/1.7.7/slf4j-log4j12-1.7.7.pom.sha1
+fetchArtifact org/apache/xbean/xbean/3.4/xbean-3.4.pom.sha1
+fetchArtifact org/apache/xbean/xbean/3.4/xbean-3.4.pom
+fetchArtifact org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.pom.sha1
+fetchArtifact org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.pom
+fetchArtifact org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.jar.sha1
+fetchArtifact org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.pom.sha1
+fetchArtifact org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.jar
+fetchArtifact org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.pom
+fetchArtifact org/apache/httpcomponents/httpcomponents-core/4.0.1/httpcomponents-core-4.0.1.pom.sha1
+fetchArtifact org/apache/httpcomponents/httpcomponents-core/4.0.1/httpcomponents-core-4.0.1.pom
+fetchArtifact org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.pom
+fetchArtifact org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.jar.sha1
+fetchArtifact org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.pom.sha1
+fetchArtifact org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.jar
+fetchArtifact org/apache/httpcomponents/httpcomponents-client/4.0.2/httpcomponents-client-4.0.2.pom.sha1
+fetchArtifact org/apache/httpcomponents/httpcomponents-client/4.0.2/httpcomponents-client-4.0.2.pom
+fetchArtifact org/apache/httpcomponents/project/4.0/project-4.0.pom.sha1
+fetchArtifact org/apache/httpcomponents/project/4.0/project-4.0.pom
+fetchArtifact org/apache/httpcomponents/project/4.1/project-4.1.pom
+fetchArtifact org/apache/httpcomponents/project/4.1/project-4.1.pom.sha1
+fetchArtifact org/apache/ant/ant-launcher/1.8.2/ant-launcher-1.8.2.jar.sha1
+fetchArtifact org/apache/ant/ant-launcher/1.8.2/ant-launcher-1.8.2.jar
+fetchArtifact org/apache/ant/ant-launcher/1.8.2/ant-launcher-1.8.2.pom
+fetchArtifact org/apache/ant/ant-launcher/1.8.2/ant-launcher-1.8.2.pom.sha1
+fetchArtifact org/apache/ant/ant/1.8.2/ant-1.8.2.jar
+fetchArtifact org/apache/ant/ant/1.8.2/ant-1.8.2.pom.sha1
+fetchArtifact org/apache/ant/ant/1.8.2/ant-1.8.2.pom
+fetchArtifact org/apache/ant/ant/1.8.2/ant-1.8.2.jar.sha1
+fetchArtifact org/apache/ant/ant-parent/1.8.2/ant-parent-1.8.2.pom.sha1
+fetchArtifact org/apache/ant/ant-parent/1.8.2/ant-parent-1.8.2.pom
+fetchArtifact org/apache/velocity/velocity/1.5/velocity-1.5.jar.sha1
+fetchArtifact org/apache/velocity/velocity/1.5/velocity-1.5.pom.sha1
+fetchArtifact org/apache/velocity/velocity/1.5/velocity-1.5.jar
+fetchArtifact org/apache/velocity/velocity/1.5/velocity-1.5.pom
+fetchArtifact org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom
+fetchArtifact org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.jar
+fetchArtifact org/apache/maven/plugins/maven-shade-plugin/2.3/maven-shade-plugin-2.3.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-shade-plugin/2.3/maven-shade-plugin-2.3.jar
+fetchArtifact org/apache/maven/plugins/maven-shade-plugin/2.3/maven-shade-plugin-2.3.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-shade-plugin/2.3/maven-shade-plugin-2.3.pom
+fetchArtifact org/apache/maven/plugins/maven-compiler-plugin/2.3.2/maven-compiler-plugin-2.3.2.pom
+fetchArtifact org/apache/maven/plugins/maven-compiler-plugin/2.3.2/maven-compiler-plugin-2.3.2.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-compiler-plugin/2.3.2/maven-compiler-plugin-2.3.2.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-compiler-plugin/2.3.2/maven-compiler-plugin-2.3.2.jar
+fetchArtifact org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.pom
+fetchArtifact org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.jar
+fetchArtifact org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-jar-plugin/2.4/maven-jar-plugin-2.4.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-jar-plugin/2.4/maven-jar-plugin-2.4.pom
+fetchArtifact org/apache/maven/plugins/maven-jar-plugin/2.4/maven-jar-plugin-2.4.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-jar-plugin/2.4/maven-jar-plugin-2.4.jar
+fetchArtifact org/apache/maven/plugins/maven-antrun-plugin/1.7/maven-antrun-plugin-1.7.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-antrun-plugin/1.7/maven-antrun-plugin-1.7.pom
+fetchArtifact org/apache/maven/plugins/maven-antrun-plugin/1.7/maven-antrun-plugin-1.7.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-antrun-plugin/1.7/maven-antrun-plugin-1.7.jar
+fetchArtifact org/apache/maven/plugins/maven-plugins/22/maven-plugins-22.pom
+fetchArtifact org/apache/maven/plugins/maven-plugins/22/maven-plugins-22.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-plugins/24/maven-plugins-24.pom
+fetchArtifact org/apache/maven/plugins/maven-plugins/24/maven-plugins-24.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-plugins/18/maven-plugins-18.pom
+fetchArtifact org/apache/maven/plugins/maven-plugins/18/maven-plugins-18.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-plugins/25/maven-plugins-25.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-plugins/25/maven-plugins-25.pom
+fetchArtifact org/apache/maven/plugins/maven-plugins/23/maven-plugins-23.pom
+fetchArtifact org/apache/maven/plugins/maven-plugins/23/maven-plugins-23.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-surefire-report-plugin/2.14.1/maven-surefire-report-plugin-2.14.1.pom
+fetchArtifact org/apache/maven/plugins/maven-surefire-report-plugin/2.14.1/maven-surefire-report-plugin-2.14.1.jar
+fetchArtifact org/apache/maven/plugins/maven-surefire-report-plugin/2.14.1/maven-surefire-report-plugin-2.14.1.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-surefire-report-plugin/2.14.1/maven-surefire-report-plugin-2.14.1.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-surefire-plugin/2.14.1/maven-surefire-plugin-2.14.1.jar
+fetchArtifact org/apache/maven/plugins/maven-surefire-plugin/2.14.1/maven-surefire-plugin-2.14.1.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-surefire-plugin/2.14.1/maven-surefire-plugin-2.14.1.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-surefire-plugin/2.14.1/maven-surefire-plugin-2.14.1.pom
+fetchArtifact org/apache/maven/maven-monitor/2.0.6/maven-monitor-2.0.6.pom
+fetchArtifact org/apache/maven/maven-monitor/2.0.6/maven-monitor-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-monitor/2.0.9/maven-monitor-2.0.9.pom
+fetchArtifact org/apache/maven/maven-monitor/2.0.9/maven-monitor-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.6/maven-error-diagnostics-2.0.6.pom
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.6/maven-error-diagnostics-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.9/maven-error-diagnostics-2.0.9.pom
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.9/maven-error-diagnostics-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/1.2/maven-dependency-tree-1.2.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/1.2/maven-dependency-tree-1.2.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/1.2/maven-dependency-tree-1.2.jar
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/1.2/maven-dependency-tree-1.2.pom
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/2.1/maven-dependency-tree-2.1.jar
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/2.1/maven-dependency-tree-2.1.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/2.1/maven-dependency-tree-2.1.pom
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/2.1/maven-dependency-tree-2.1.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.jar
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.pom
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-filtering/1.1/maven-filtering-1.1.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-filtering/1.1/maven-filtering-1.1.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-filtering/1.1/maven-filtering-1.1.pom
+fetchArtifact org/apache/maven/shared/maven-filtering/1.1/maven-filtering-1.1.jar
+fetchArtifact org/apache/maven/shared/maven-shared-components/19/maven-shared-components-19.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/19/maven-shared-components-19.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/9/maven-shared-components-9.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/9/maven-shared-components-9.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/17/maven-shared-components-17.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/17/maven-shared-components-17.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/12/maven-shared-components-12.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/12/maven-shared-components-12.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/8/maven-shared-components-8.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/8/maven-shared-components-8.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/15/maven-shared-components-15.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/15/maven-shared-components-15.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/11/maven-shared-components-11.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/11/maven-shared-components-11.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/10/maven-shared-components-10.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/10/maven-shared-components-10.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.11/maven-invoker-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.11/maven-invoker-2.0.11.jar
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.11/maven-invoker-2.0.11.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.11/maven-invoker-2.0.11.pom
+fetchArtifact org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.pom
+fetchArtifact org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.jar
+fetchArtifact org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.jar.sha1
+fetchArtifact org/apache/maven/shared/file-management/1.2.1/file-management-1.2.1.jar.sha1
+fetchArtifact org/apache/maven/shared/file-management/1.2.1/file-management-1.2.1.jar
+fetchArtifact org/apache/maven/shared/file-management/1.2.1/file-management-1.2.1.pom
+fetchArtifact org/apache/maven/shared/file-management/1.2.1/file-management-1.2.1.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-analyzer/1.4/maven-dependency-analyzer-1.4.jar
+fetchArtifact org/apache/maven/shared/maven-dependency-analyzer/1.4/maven-dependency-analyzer-1.4.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-analyzer/1.4/maven-dependency-analyzer-1.4.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-analyzer/1.4/maven-dependency-analyzer-1.4.pom
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.4/maven-common-artifact-filters-1.4.pom
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.4/maven-common-artifact-filters-1.4.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.4/maven-common-artifact-filters-1.4.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.4/maven-common-artifact-filters-1.4.jar
+fetchArtifact org/apache/maven/shared/maven-shared-utils/0.4/maven-shared-utils-0.4.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-utils/0.4/maven-shared-utils-0.4.jar
+fetchArtifact org/apache/maven/shared/maven-shared-utils/0.4/maven-shared-utils-0.4.pom
+fetchArtifact org/apache/maven/shared/maven-shared-utils/0.4/maven-shared-utils-0.4.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.6/maven-plugin-parameter-documenter-2.0.6.pom
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.6/maven-plugin-parameter-documenter-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.9/maven-plugin-parameter-documenter-2.0.9.pom
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.9/maven-plugin-parameter-documenter-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-core/3.0/maven-core-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-core/3.0/maven-core-3.0.pom
+fetchArtifact org/apache/maven/maven-core/2.0.6/maven-core-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-core/2.0.6/maven-core-2.0.6.pom
+fetchArtifact org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.5/maven-artifact-manager-2.0.5.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.5/maven-artifact-manager-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.2.0/maven-artifact-manager-2.2.0.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.2.0/maven-artifact-manager-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.10/maven-artifact-manager-2.0.10.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.10/maven-artifact-manager-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.8/maven-artifact-manager-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.8/maven-artifact-manager-2.0.8.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.2/maven-artifact-manager-2.0.2.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.2/maven-artifact-manager-2.0.2.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.11/maven-artifact-manager-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.11/maven-artifact-manager-2.0.11.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.9/maven-artifact-manager-2.0.9.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.9/maven-artifact-manager-2.0.9.jar
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.9/maven-artifact-manager-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.9/maven-artifact-manager-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/plugin-tools/maven-plugin-tools/3.2/maven-plugin-tools-3.2.pom
+fetchArtifact org/apache/maven/plugin-tools/maven-plugin-tools/3.2/maven-plugin-tools-3.2.pom.sha1
+fetchArtifact org/apache/maven/plugin-tools/maven-plugin-annotations/3.2/maven-plugin-annotations-3.2.pom.sha1
+fetchArtifact org/apache/maven/plugin-tools/maven-plugin-annotations/3.2/maven-plugin-annotations-3.2.jar
+fetchArtifact org/apache/maven/plugin-tools/maven-plugin-annotations/3.2/maven-plugin-annotations-3.2.pom
+fetchArtifact org/apache/maven/plugin-tools/maven-plugin-annotations/3.2/maven-plugin-annotations-3.2.jar.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.jar
+fetchArtifact org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.pom.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.pom
+fetchArtifact org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.jar.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.5/maven-profile-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.5/maven-profile-2.0.5.pom
+fetchArtifact org/apache/maven/maven-profile/2.2.0/maven-profile-2.2.0.pom
+fetchArtifact org/apache/maven/maven-profile/2.2.0/maven-profile-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.6/maven-profile-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.6/maven-profile-2.0.6.pom
+fetchArtifact org/apache/maven/maven-profile/2.0.10/maven-profile-2.0.10.pom
+fetchArtifact org/apache/maven/maven-profile/2.0.10/maven-profile-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.8/maven-profile-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.8/maven-profile-2.0.8.pom
+fetchArtifact org/apache/maven/maven-profile/2.0.11/maven-profile-2.0.11.pom
+fetchArtifact org/apache/maven/maven-profile/2.0.11/maven-profile-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.9/maven-profile-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.9/maven-profile-2.0.9.jar
+fetchArtifact org/apache/maven/maven-profile/2.0.9/maven-profile-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.9/maven-profile-2.0.9.pom
+fetchArtifact org/apache/maven/maven-project/2.0.5/maven-project-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.5/maven-project-2.0.5.pom
+fetchArtifact org/apache/maven/maven-project/2.2.0/maven-project-2.2.0.pom
+fetchArtifact org/apache/maven/maven-project/2.2.0/maven-project-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.6/maven-project-2.0.6.pom
+fetchArtifact org/apache/maven/maven-project/2.0.6/maven-project-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.10/maven-project-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.10/maven-project-2.0.10.pom
+fetchArtifact org/apache/maven/maven-project/2.0.8/maven-project-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.8/maven-project-2.0.8.pom
+fetchArtifact org/apache/maven/maven-project/2.0.11/maven-project-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.11/maven-project-2.0.11.pom
+fetchArtifact org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.pom
+fetchArtifact org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.jar
+fetchArtifact org/apache/maven/maven-model/2.0.5/maven-model-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.5/maven-model-2.0.5.pom
+fetchArtifact org/apache/maven/maven-model/2.2.0/maven-model-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.2.0/maven-model-2.2.0.pom
+fetchArtifact org/apache/maven/maven-model/3.0/maven-model-3.0.pom
+fetchArtifact org/apache/maven/maven-model/3.0/maven-model-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.6/maven-model-2.0.6.pom
+fetchArtifact org/apache/maven/maven-model/2.0.6/maven-model-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.10/maven-model-2.0.10.pom
+fetchArtifact org/apache/maven/maven-model/2.0.10/maven-model-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.8/maven-model-2.0.8.pom
+fetchArtifact org/apache/maven/maven-model/2.0.8/maven-model-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.11/maven-model-2.0.11.pom
+fetchArtifact org/apache/maven/maven-model/2.0.11/maven-model-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.pom
+fetchArtifact org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.jar
+fetchArtifact org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire/2.14.1/surefire-2.14.1.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire/2.14.1/surefire-2.14.1.pom
+fetchArtifact org/apache/maven/surefire/surefire-report-parser/2.14.1/surefire-report-parser-2.14.1.jar
+fetchArtifact org/apache/maven/surefire/surefire-report-parser/2.14.1/surefire-report-parser-2.14.1.jar.sha1
+fetchArtifact org/apache/maven/surefire/surefire-report-parser/2.14.1/surefire-report-parser-2.14.1.pom
+fetchArtifact org/apache/maven/surefire/surefire-report-parser/2.14.1/surefire-report-parser-2.14.1.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire-junit4/2.14.1/surefire-junit4-2.14.1.pom
+fetchArtifact org/apache/maven/surefire/surefire-junit4/2.14.1/surefire-junit4-2.14.1.jar.sha1
+fetchArtifact org/apache/maven/surefire/surefire-junit4/2.14.1/surefire-junit4-2.14.1.jar
+fetchArtifact org/apache/maven/surefire/surefire-junit4/2.14.1/surefire-junit4-2.14.1.pom.sha1
+fetchArtifact org/apache/maven/surefire/maven-surefire-common/2.14.1/maven-surefire-common-2.14.1.jar.sha1
+fetchArtifact org/apache/maven/surefire/maven-surefire-common/2.14.1/maven-surefire-common-2.14.1.pom
+fetchArtifact org/apache/maven/surefire/maven-surefire-common/2.14.1/maven-surefire-common-2.14.1.pom.sha1
+fetchArtifact org/apache/maven/surefire/maven-surefire-common/2.14.1/maven-surefire-common-2.14.1.jar
+fetchArtifact org/apache/maven/surefire/surefire-booter/2.14.1/surefire-booter-2.14.1.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire-booter/2.14.1/surefire-booter-2.14.1.jar
+fetchArtifact org/apache/maven/surefire/surefire-booter/2.14.1/surefire-booter-2.14.1.pom
+fetchArtifact org/apache/maven/surefire/surefire-booter/2.14.1/surefire-booter-2.14.1.jar.sha1
+fetchArtifact org/apache/maven/surefire/surefire-api/2.14.1/surefire-api-2.14.1.pom
+fetchArtifact org/apache/maven/surefire/surefire-api/2.14.1/surefire-api-2.14.1.jar
+fetchArtifact org/apache/maven/surefire/surefire-api/2.14.1/surefire-api-2.14.1.jar.sha1
+fetchArtifact org/apache/maven/surefire/surefire-api/2.14.1/surefire-api-2.14.1.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire-providers/2.14.1/surefire-providers-2.14.1.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire-providers/2.14.1/surefire-providers-2.14.1.pom
+fetchArtifact org/apache/maven/maven-settings-builder/3.0/maven-settings-builder-3.0.pom
+fetchArtifact org/apache/maven/maven-settings-builder/3.0/maven-settings-builder-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.5/maven-repository-metadata-2.0.5.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.5/maven-repository-metadata-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.2.0/maven-repository-metadata-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.2.0/maven-repository-metadata-2.2.0.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/3.0/maven-repository-metadata-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/3.0/maven-repository-metadata-3.0.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.6/maven-repository-metadata-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.6/maven-repository-metadata-2.0.6.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.10/maven-repository-metadata-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.10/maven-repository-metadata-2.0.10.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.8/maven-repository-metadata-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.8/maven-repository-metadata-2.0.8.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.2/maven-repository-metadata-2.0.2.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.2/maven-repository-metadata-2.0.2.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.11/maven-repository-metadata-2.0.11.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.11/maven-repository-metadata-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.jar
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.6/maven-plugin-descriptor-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.6/maven-plugin-descriptor-2.0.6.pom
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.9/maven-plugin-descriptor-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.9/maven-plugin-descriptor-2.0.9.pom
+fetchArtifact org/apache/maven/maven/2.0.5/maven-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.5/maven-2.0.5.pom
+fetchArtifact org/apache/maven/maven/2.2.0/maven-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven/2.2.0/maven-2.2.0.pom
+fetchArtifact org/apache/maven/maven/3.0/maven-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven/3.0/maven-3.0.pom
+fetchArtifact org/apache/maven/maven/2.0.6/maven-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.6/maven-2.0.6.pom
+fetchArtifact org/apache/maven/maven/2.0.10/maven-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.10/maven-2.0.10.pom
+fetchArtifact org/apache/maven/maven/2.0.8/maven-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.8/maven-2.0.8.pom
+fetchArtifact org/apache/maven/maven/2.2.1/maven-2.2.1.pom
+fetchArtifact org/apache/maven/maven/2.2.1/maven-2.2.1.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.2/maven-2.0.2.pom
+fetchArtifact org/apache/maven/maven/2.0.2/maven-2.0.2.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.11/maven-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.11/maven-2.0.11.pom
+fetchArtifact org/apache/maven/maven/2.0.9/maven-2.0.9.pom
+fetchArtifact org/apache/maven/maven/2.0.9/maven-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-aether-provider/3.0/maven-aether-provider-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-aether-provider/3.0/maven-aether-provider-3.0.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.5/maven-artifact-2.0.5.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.5/maven-artifact-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.2.0/maven-artifact-2.2.0.pom
+fetchArtifact org/apache/maven/maven-artifact/2.2.0/maven-artifact-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/3.0/maven-artifact-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/3.0/maven-artifact-3.0.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.6/maven-artifact-2.0.6.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.6/maven-artifact-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.10/maven-artifact-2.0.10.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.10/maven-artifact-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.8/maven-artifact-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.8/maven-artifact-2.0.8.pom
+fetchArtifact org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.pom
+fetchArtifact org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.2/maven-artifact-2.0.2.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.2/maven-artifact-2.0.2.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.11/maven-artifact-2.0.11.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.11/maven-artifact-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.jar
+fetchArtifact org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.5/maven-settings-2.0.5.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.5/maven-settings-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.2.0/maven-settings-2.2.0.pom
+fetchArtifact org/apache/maven/maven-settings/2.2.0/maven-settings-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/3.0/maven-settings-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/3.0/maven-settings-3.0.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.6/maven-settings-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.6/maven-settings-2.0.6.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.10/maven-settings-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.10/maven-settings-2.0.10.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.8/maven-settings-2.0.8.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.8/maven-settings-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.11/maven-settings-2.0.11.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.11/maven-settings-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.9/maven-settings-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.9/maven-settings-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.9/maven-settings-2.0.9.jar
+fetchArtifact org/apache/maven/maven-settings/2.0.9/maven-settings-2.0.9.pom
+fetchArtifact org/apache/maven/maven-compat/3.0/maven-compat-3.0.pom
+fetchArtifact org/apache/maven/maven-compat/3.0/maven-compat-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-model-builder/3.0/maven-model-builder-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-model-builder/3.0/maven-model-builder-3.0.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.2.0/maven-plugin-registry-2.2.0.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.2.0/maven-plugin-registry-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.6/maven-plugin-registry-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.6/maven-plugin-registry-2.0.6.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.10/maven-plugin-registry-2.0.10.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.10/maven-plugin-registry-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.8/maven-plugin-registry-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.8/maven-plugin-registry-2.0.8.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.11/maven-plugin-registry-2.0.11.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.11/maven-plugin-registry-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.9/maven-plugin-registry-2.0.9.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.9/maven-plugin-registry-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.9/maven-plugin-registry-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.9/maven-plugin-registry-2.0.9.jar
+fetchArtifact org/apache/maven/maven-parent/7/maven-parent-7.pom
+fetchArtifact org/apache/maven/maven-parent/7/maven-parent-7.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/4/maven-parent-4.pom
+fetchArtifact org/apache/maven/maven-parent/4/maven-parent-4.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/16/maven-parent-16.pom
+fetchArtifact org/apache/maven/maven-parent/16/maven-parent-16.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/22/maven-parent-22.pom
+fetchArtifact org/apache/maven/maven-parent/22/maven-parent-22.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/9/maven-parent-9.pom
+fetchArtifact org/apache/maven/maven-parent/9/maven-parent-9.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/24/maven-parent-24.pom
+fetchArtifact org/apache/maven/maven-parent/24/maven-parent-24.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/13/maven-parent-13.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/13/maven-parent-13.pom
+fetchArtifact org/apache/maven/maven-parent/5/maven-parent-5.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/5/maven-parent-5.pom
+fetchArtifact org/apache/maven/maven-parent/6/maven-parent-6.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/6/maven-parent-6.pom
+fetchArtifact org/apache/maven/maven-parent/21/maven-parent-21.pom
+fetchArtifact org/apache/maven/maven-parent/21/maven-parent-21.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/12/maven-parent-12.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/12/maven-parent-12.pom
+fetchArtifact org/apache/maven/maven-parent/23/maven-parent-23.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/23/maven-parent-23.pom
+fetchArtifact org/apache/maven/maven-parent/8/maven-parent-8.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/8/maven-parent-8.pom
+fetchArtifact org/apache/maven/maven-parent/15/maven-parent-15.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/15/maven-parent-15.pom
+fetchArtifact org/apache/maven/maven-parent/11/maven-parent-11.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/11/maven-parent-11.pom
+fetchArtifact org/apache/maven/maven-parent/10/maven-parent-10.pom
+fetchArtifact org/apache/maven/maven-parent/10/maven-parent-10.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.jar.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.pom
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.jar
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-6/wagon-provider-api-1.0-beta-6.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-6/wagon-provider-api-1.0-beta-6.pom
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-alpha-6/wagon-provider-api-1.0-alpha-6.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-alpha-6/wagon-provider-api-1.0-alpha-6.pom
+fetchArtifact org/apache/maven/wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom
+fetchArtifact org/apache/maven/wagon/wagon/1.0-beta-6/wagon-1.0-beta-6.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon/1.0-beta-6/wagon-1.0-beta-6.pom
+fetchArtifact org/apache/maven/wagon/wagon/1.0-alpha-6/wagon-1.0-alpha-6.pom
+fetchArtifact org/apache/maven/wagon/wagon/1.0-alpha-6/wagon-1.0-alpha-6.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.0.5/maven-reporting-impl-2.0.5.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.0.5/maven-reporting-impl-2.0.5.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.0.5/maven-reporting-impl-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.0.5/maven-reporting-impl-2.0.5.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.1/maven-reporting-impl-2.1.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.1/maven-reporting-impl-2.1.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.1/maven-reporting-impl-2.1.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.1/maven-reporting-impl-2.1.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0.6/maven-reporting-2.0.6.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0.6/maven-reporting-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0.9/maven-reporting-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0.9/maven-reporting-2.0.9.pom
+fetchArtifact org/apache/maven/maven-plugin-api/3.0/maven-plugin-api-3.0.pom
+fetchArtifact org/apache/maven/maven-plugin-api/3.0/maven-plugin-api-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.10/maven-plugin-api-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.10/maven-plugin-api-2.0.10.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.8/maven-plugin-api-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.8/maven-plugin-api-2.0.8.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.11/maven-plugin-api-2.0.11.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.11/maven-plugin-api-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.jar
+fetchArtifact org/apache/maven/maven-toolchain/1.0/maven-toolchain-1.0.pom
+fetchArtifact org/apache/maven/maven-toolchain/1.0/maven-toolchain-1.0.pom.sha1
+fetchArtifact org/apache/maven/maven-toolchain/2.0.9/maven-toolchain-2.0.9.pom
+fetchArtifact org/apache/maven/maven-toolchain/2.0.9/maven-toolchain-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.0/doxia-modules-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.0/doxia-modules-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.1.4/doxia-modules-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.1.4/doxia-modules-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.1.2/doxia-modules-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.1.2/doxia-modules-1.1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.1.4/doxia-decoration-model-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.1.4/doxia-decoration-model-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.1.4/doxia-decoration-model-1.1.4.jar
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.1.4/doxia-decoration-model-1.1.4.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.1.2/doxia-decoration-model-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.1.2/doxia-decoration-model-1.1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.1.4/doxia-module-fml-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.1.4/doxia-module-fml-1.1.4.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.1.4/doxia-module-fml-1.1.4.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.1.4/doxia-module-fml-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.1.2/doxia-module-fml-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.1.2/doxia-module-fml-1.1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.0/doxia-sitetools-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.0/doxia-sitetools-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.1.4/doxia-sitetools-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.1.4/doxia-sitetools-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.1.2/doxia-sitetools-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.1.2/doxia-sitetools-1.1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-core/1.1.4/doxia-core-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-core/1.1.4/doxia-core-1.1.4.jar
+fetchArtifact org/apache/maven/doxia/doxia-core/1.1.4/doxia-core-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia-core/1.1.4/doxia-core-1.1.4.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-core/1.1.2/doxia-core-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-core/1.1.2/doxia-core-1.1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.1.4/doxia-logging-api-1.1.4.jar
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.1.4/doxia-logging-api-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.1.4/doxia-logging-api-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.1.4/doxia-logging-api-1.1.4.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.1.2/doxia-logging-api-1.1.2.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.1.2/doxia-logging-api-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.1.2/doxia-logging-api-1.1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.1.2/doxia-logging-api-1.1.2.jar
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-10/doxia-sink-api-1.0-alpha-10.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-10/doxia-sink-api-1.0-alpha-10.pom
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.1.4/doxia-sink-api-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.1.4/doxia-sink-api-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.1.4/doxia-sink-api-1.1.4.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.1.4/doxia-sink-api-1.1.4.jar
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.1.2/doxia-sink-api-1.1.2.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.1.2/doxia-sink-api-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.1.2/doxia-sink-api-1.1.2.jar
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.1.2/doxia-sink-api-1.1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.jar
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.1.4/doxia-module-xhtml-1.1.4.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.1.4/doxia-module-xhtml-1.1.4.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.1.4/doxia-module-xhtml-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.1.4/doxia-module-xhtml-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.1.2/doxia-module-xhtml-1.1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.1.2/doxia-module-xhtml-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.0-alpha-10/doxia-1.0-alpha-10.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.0-alpha-10/doxia-1.0-alpha-10.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.0/doxia-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.0/doxia-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.1.4/doxia-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.1.4/doxia-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.1.2/doxia-1.1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.1.2/doxia-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.0-alpha-7/doxia-1.0-alpha-7.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.0-alpha-7/doxia-1.0-alpha-7.pom
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.1.4/doxia-site-renderer-1.1.4.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.1.4/doxia-site-renderer-1.1.4.jar
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.1.4/doxia-site-renderer-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.1.4/doxia-site-renderer-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.1.2/doxia-site-renderer-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.1.2/doxia-site-renderer-1.1.2.pom.sha1
+fetchArtifact org/apache/apache/7/apache-7.pom
+fetchArtifact org/apache/apache/7/apache-7.pom.sha1
+fetchArtifact org/apache/apache/4/apache-4.pom
+fetchArtifact org/apache/apache/4/apache-4.pom.sha1
+fetchArtifact org/apache/apache/1/apache-1.pom
+fetchArtifact org/apache/apache/1/apache-1.pom.sha1
+fetchArtifact org/apache/apache/9/apache-9.pom
+fetchArtifact org/apache/apache/9/apache-9.pom.sha1
+fetchArtifact org/apache/apache/14/apache-14.pom.sha1
+fetchArtifact org/apache/apache/14/apache-14.pom
+fetchArtifact org/apache/apache/13/apache-13.pom
+fetchArtifact org/apache/apache/13/apache-13.pom.sha1
+fetchArtifact org/apache/apache/3/apache-3.pom
+fetchArtifact org/apache/apache/3/apache-3.pom.sha1
+fetchArtifact org/apache/apache/5/apache-5.pom
+fetchArtifact org/apache/apache/5/apache-5.pom.sha1
+fetchArtifact org/apache/apache/6/apache-6.pom.sha1
+fetchArtifact org/apache/apache/6/apache-6.pom
+fetchArtifact org/apache/apache/11/apache-11.pom
+fetchArtifact org/apache/apache/11/apache-11.pom.sha1
+fetchArtifact org/apache/apache/10/apache-10.pom
+fetchArtifact org/apache/apache/10/apache-10.pom.sha1
+fetchArtifact org/apache/mesos/mesos/0.20.1/mesos-0.20.1.pom
+fetchArtifact org/apache/mesos/mesos/0.20.1/mesos-0.20.1.pom.sha1
+fetchArtifact org/apache/mesos/mesos/0.20.1/mesos-0.20.1.jar.sha1
+fetchArtifact org/apache/mesos/mesos/0.20.1/mesos-0.20.1.jar
+fetchArtifact org/apache/zookeeper/zookeeper/3.4.6/zookeeper-3.4.6.pom
+fetchArtifact org/apache/zookeeper/zookeeper/3.4.6/zookeeper-3.4.6.jar
+fetchArtifact org/apache/zookeeper/zookeeper/3.4.6/zookeeper-3.4.6.pom.sha1
+fetchArtifact org/apache/zookeeper/zookeeper/3.4.6/zookeeper-3.4.6.jar.sha1
+fetchArtifact org/apache/curator/apache-curator/2.6.0/apache-curator-2.6.0.pom
+fetchArtifact org/apache/curator/apache-curator/2.6.0/apache-curator-2.6.0.pom.sha1
+fetchArtifact org/apache/curator/curator-framework/2.6.0/curator-framework-2.6.0.pom.sha1
+fetchArtifact org/apache/curator/curator-framework/2.6.0/curator-framework-2.6.0.jar
+fetchArtifact org/apache/curator/curator-framework/2.6.0/curator-framework-2.6.0.pom
+fetchArtifact org/apache/curator/curator-framework/2.6.0/curator-framework-2.6.0.jar.sha1
+fetchArtifact org/apache/curator/curator-client/2.6.0/curator-client-2.6.0.jar
+fetchArtifact org/apache/curator/curator-client/2.6.0/curator-client-2.6.0.jar.sha1
+fetchArtifact org/apache/curator/curator-client/2.6.0/curator-client-2.6.0.pom.sha1
+fetchArtifact org/apache/curator/curator-client/2.6.0/curator-client-2.6.0.pom
+fetchArtifact org/apache/curator/curator-test/2.6.0/curator-test-2.6.0.pom.sha1
+fetchArtifact org/apache/curator/curator-test/2.6.0/curator-test-2.6.0.jar
+fetchArtifact org/apache/curator/curator-test/2.6.0/curator-test-2.6.0.pom
+fetchArtifact org/apache/curator/curator-test/2.6.0/curator-test-2.6.0.jar.sha1
+fetchArtifact org/apache/curator/curator-recipes/2.6.0/curator-recipes-2.6.0.jar.sha1
+fetchArtifact org/apache/curator/curator-recipes/2.6.0/curator-recipes-2.6.0.pom.sha1
+fetchArtifact org/apache/curator/curator-recipes/2.6.0/curator-recipes-2.6.0.pom
+fetchArtifact org/apache/curator/curator-recipes/2.6.0/curator-recipes-2.6.0.jar
+fetchArtifact org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.pom
+fetchArtifact org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.jar.sha1
+fetchArtifact org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.jar
+fetchArtifact org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.pom.sha1
+fetchArtifact org/apache/commons/commons-math/2.2/commons-math-2.2.jar.sha1
+fetchArtifact org/apache/commons/commons-math/2.2/commons-math-2.2.pom
+fetchArtifact org/apache/commons/commons-math/2.2/commons-math-2.2.jar
+fetchArtifact org/apache/commons/commons-math/2.2/commons-math-2.2.pom.sha1
+fetchArtifact org/apache/commons/commons-email/1.3.2/commons-email-1.3.2.jar
+fetchArtifact org/apache/commons/commons-email/1.3.2/commons-email-1.3.2.jar.sha1
+fetchArtifact org/apache/commons/commons-email/1.3.2/commons-email-1.3.2.pom.sha1
+fetchArtifact org/apache/commons/commons-email/1.3.2/commons-email-1.3.2.pom
+fetchArtifact org/apache/commons/commons-exec/1.0.1/commons-exec-1.0.1.jar
+fetchArtifact org/apache/commons/commons-exec/1.0.1/commons-exec-1.0.1.pom.sha1
+fetchArtifact org/apache/commons/commons-exec/1.0.1/commons-exec-1.0.1.pom
+fetchArtifact org/apache/commons/commons-exec/1.0.1/commons-exec-1.0.1.jar.sha1
+fetchArtifact org/apache/commons/commons-parent/28/commons-parent-28.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/28/commons-parent-28.pom
+fetchArtifact org/apache/commons/commons-parent/7/commons-parent-7.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/7/commons-parent-7.pom
+fetchArtifact org/apache/commons/commons-parent/22/commons-parent-22.pom
+fetchArtifact org/apache/commons/commons-parent/22/commons-parent-22.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/9/commons-parent-9.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/9/commons-parent-9.pom
+fetchArtifact org/apache/commons/commons-parent/24/commons-parent-24.pom
+fetchArtifact org/apache/commons/commons-parent/24/commons-parent-24.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/17/commons-parent-17.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/17/commons-parent-17.pom
+fetchArtifact org/apache/commons/commons-parent/32/commons-parent-32.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/32/commons-parent-32.pom
+fetchArtifact org/apache/commons/commons-parent/5/commons-parent-5.pom
+fetchArtifact org/apache/commons/commons-parent/5/commons-parent-5.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/18/commons-parent-18.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/18/commons-parent-18.pom
+fetchArtifact org/apache/commons/commons-parent/11/commons-parent-11.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/11/commons-parent-11.pom
+fetchArtifact org/apache/commons/commons-math3/3.2/commons-math3-3.2.pom.sha1
+fetchArtifact org/apache/commons/commons-math3/3.2/commons-math3-3.2.jar.sha1
+fetchArtifact org/apache/commons/commons-math3/3.2/commons-math3-3.2.jar
+fetchArtifact org/apache/commons/commons-math3/3.2/commons-math3-3.2.pom
+fetchArtifact org/codehaus/jackson/jackson-mapper-asl/1.6.1/jackson-mapper-asl-1.6.1.pom
+fetchArtifact org/codehaus/jackson/jackson-mapper-asl/1.6.1/jackson-mapper-asl-1.6.1.jar
+fetchArtifact org/codehaus/jackson/jackson-mapper-asl/1.6.1/jackson-mapper-asl-1.6.1.pom.sha1
+fetchArtifact org/codehaus/jackson/jackson-mapper-asl/1.6.1/jackson-mapper-asl-1.6.1.jar.sha1
+fetchArtifact org/codehaus/jackson/jackson-core-asl/1.6.1/jackson-core-asl-1.6.1.jar
+fetchArtifact org/codehaus/jackson/jackson-core-asl/1.6.1/jackson-core-asl-1.6.1.pom.sha1
+fetchArtifact org/codehaus/jackson/jackson-core-asl/1.6.1/jackson-core-asl-1.6.1.pom
+fetchArtifact org/codehaus/jackson/jackson-core-asl/1.6.1/jackson-core-asl-1.6.1.jar.sha1
+fetchArtifact org/codehaus/codehaus-parent/4/codehaus-parent-4.pom
+fetchArtifact org/codehaus/codehaus-parent/4/codehaus-parent-4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.19/plexus-components-1.1.19.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.19/plexus-components-1.1.19.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.3/plexus-components-1.3.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.3/plexus-components-1.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.18/plexus-components-1.1.18.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.18/plexus-components-1.1.18.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.2/plexus-components-1.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.2/plexus-components-1.2.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.14/plexus-components-1.1.14.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.14/plexus-components-1.1.14.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.15/plexus-components-1.1.15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.15/plexus-components-1.1.15.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.12/plexus-components-1.1.12.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.12/plexus-components-1.1.12.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.5.5/plexus-containers-1.5.5.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.5.5/plexus-containers-1.5.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-20/plexus-containers-1.0-alpha-20.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-20/plexus-containers-1.0-alpha-20.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0.3/plexus-containers-1.0.3.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0.3/plexus-containers-1.0.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-30/plexus-containers-1.0-alpha-30.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-30/plexus-containers-1.0-alpha-30.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.5.4/plexus-containers-1.5.4.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.5.4/plexus-containers-1.5.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.5.5/plexus-container-default-1.5.5.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.5.5/plexus-container-default-1.5.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-20/plexus-container-default-1.0-alpha-20.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-20/plexus-container-default-1.0-alpha-20.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-30/plexus-container-default-1.0-alpha-30.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-30/plexus-container-default-1.0-alpha-30.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.jar
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9/plexus-container-default-1.0-alpha-9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9/plexus-container-default-1.0-alpha-9.pom
+fetchArtifact org/codehaus/plexus/plexus-compiler-javac/1.8.1/plexus-compiler-javac-1.8.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-javac/1.8.1/plexus-compiler-javac-1.8.1.pom
+fetchArtifact org/codehaus/plexus/plexus-compiler-javac/1.8.1/plexus-compiler-javac-1.8.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-javac/1.8.1/plexus-compiler-javac-1.8.1.jar
+fetchArtifact org/codehaus/plexus/plexus-compilers/1.8.1/plexus-compilers-1.8.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compilers/1.8.1/plexus-compilers-1.8.1.pom
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.3/plexus-archiver-2.3.pom
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.3/plexus-archiver-2.3.jar
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.3/plexus-archiver-2.3.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.3/plexus-archiver-2.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.jar
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.pom
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.pom
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.4/plexus-component-annotations-1.5.4.pom
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.4/plexus-component-annotations-1.5.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.jar
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.12/plexus-interpolation-1.12.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.12/plexus-interpolation-1.12.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.jar
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.1/plexus-interpolation-1.1.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.1/plexus-interpolation-1.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.1/plexus-interpolation-1.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.1/plexus-interpolation-1.1.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.10/plexus-utils-3.0.10.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.10/plexus-utils-3.0.10.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.7/plexus-utils-1.5.7.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.7/plexus-utils-1.5.7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/1.3/plexus-utils-1.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.3/plexus-utils-1.3.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.2/plexus-utils-1.4.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.2/plexus-utils-1.4.2.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.1/plexus-utils-1.5.1.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.1/plexus-utils-1.5.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.1/plexus-utils-1.5.1.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.1/plexus-utils-1.5.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.1/plexus-utils-1.4.1.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.1/plexus-utils-1.4.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.6/plexus-utils-1.5.6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.6/plexus-utils-1.5.6.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.6/plexus-utils-1.4.6.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.6/plexus-utils-1.4.6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.4/plexus-utils-2.0.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.4/plexus-utils-2.0.4.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.9/plexus-utils-3.0.9.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.9/plexus-utils-3.0.9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.9/plexus-utils-3.0.9.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.9/plexus-utils-3.0.9.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.12/plexus-utils-1.5.12.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.12/plexus-utils-1.5.12.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/2.1/plexus-utils-2.1.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/2.1/plexus-utils-2.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-api/1.8.1/plexus-compiler-api-1.8.1.jar
+fetchArtifact org/codehaus/plexus/plexus-compiler-api/1.8.1/plexus-compiler-api-1.8.1.pom
+fetchArtifact org/codehaus/plexus/plexus-compiler-api/1.8.1/plexus-compiler-api-1.8.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-api/1.8.1/plexus-compiler-api-1.8.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.6/plexus-io-2.0.6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.6/plexus-io-2.0.6.jar
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.6/plexus-io-2.0.6.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.6/plexus-io-2.0.6.pom
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.jar
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.pom
+fetchArtifact org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.pom
+fetchArtifact org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.jar
+fetchArtifact org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-manager/1.8.1/plexus-compiler-manager-1.8.1.jar
+fetchArtifact org/codehaus/plexus/plexus-compiler-manager/1.8.1/plexus-compiler-manager-1.8.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-manager/1.8.1/plexus-compiler-manager-1.8.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-manager/1.8.1/plexus-compiler-manager-1.8.1.pom
+fetchArtifact org/codehaus/plexus/plexus/2.0.5/plexus-2.0.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.5/plexus-2.0.5.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.12/plexus-1.0.12.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.12/plexus-1.0.12.pom
+fetchArtifact org/codehaus/plexus/plexus/2.0.6/plexus-2.0.6.pom
+fetchArtifact org/codehaus/plexus/plexus/2.0.6/plexus-2.0.6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/3.3/plexus-3.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/3.3/plexus-3.3.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom
+fetchArtifact org/codehaus/plexus/plexus/3.3.1/plexus-3.3.1.pom
+fetchArtifact org/codehaus/plexus/plexus/3.3.1/plexus-3.3.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.2/plexus-2.0.2.pom
+fetchArtifact org/codehaus/plexus/plexus/2.0.2/plexus-2.0.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/3.2/plexus-3.2.pom
+fetchArtifact org/codehaus/plexus/plexus/3.2/plexus-3.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.7/plexus-2.0.7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.7/plexus-2.0.7.pom
+fetchArtifact org/codehaus/plexus/plexus/3.0.1/plexus-3.0.1.pom
+fetchArtifact org/codehaus/plexus/plexus/3.0.1/plexus-3.0.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.3/plexus-2.0.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.3/plexus-2.0.3.pom
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.pom
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.jar
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.pom
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-9/plexus-classworlds-1.2-alpha-9.pom
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-9/plexus-classworlds-1.2-alpha-9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.3/plexus-classworlds-2.2.3.pom
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.3/plexus-classworlds-2.2.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.2/plexus-classworlds-2.2.2.pom
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.2/plexus-classworlds-2.2.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler/1.8.1/plexus-compiler-1.8.1.pom
+fetchArtifact org/codehaus/plexus/plexus-compiler/1.8.1/plexus-compiler-1.8.1.pom.sha1
+fetchArtifact org/parboiled/parboiled-java/1.1.4/parboiled-java-1.1.4.pom.sha1
+fetchArtifact org/parboiled/parboiled-java/1.1.4/parboiled-java-1.1.4.pom
+fetchArtifact org/parboiled/parboiled-java/1.1.4/parboiled-java-1.1.4.jar.sha1
+fetchArtifact org/parboiled/parboiled-java/1.1.4/parboiled-java-1.1.4.jar
+fetchArtifact org/parboiled/parboiled-core/1.1.4/parboiled-core-1.1.4.jar
+fetchArtifact org/parboiled/parboiled-core/1.1.4/parboiled-core-1.1.4.jar.sha1
+fetchArtifact org/parboiled/parboiled-core/1.1.4/parboiled-core-1.1.4.pom
+fetchArtifact org/parboiled/parboiled-core/1.1.4/parboiled-core-1.1.4.pom.sha1
+fetchArtifact org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.pom.sha1
+fetchArtifact org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.pom
+fetchArtifact org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.jar
+fetchArtifact org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.jar.sha1
+fetchArtifact org/eclipse/aether/aether/0.9.0.M2/aether-0.9.0.M2.pom.sha1
+fetchArtifact org/eclipse/aether/aether/0.9.0.M2/aether-0.9.0.M2.pom
+fetchArtifact org/eclipse/jetty/jetty-server/8.1.11.v20130520/jetty-server-8.1.11.v20130520.pom
+fetchArtifact org/eclipse/jetty/jetty-server/8.1.11.v20130520/jetty-server-8.1.11.v20130520.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-server/8.1.15.v20140411/jetty-server-8.1.15.v20140411.jar
+fetchArtifact org/eclipse/jetty/jetty-server/8.1.15.v20140411/jetty-server-8.1.15.v20140411.pom
+fetchArtifact org/eclipse/jetty/jetty-server/8.1.15.v20140411/jetty-server-8.1.15.v20140411.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-server/8.1.15.v20140411/jetty-server-8.1.15.v20140411.jar.sha1
+fetchArtifact org/eclipse/jetty/jetty-continuation/8.1.11.v20130520/jetty-continuation-8.1.11.v20130520.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-continuation/8.1.11.v20130520/jetty-continuation-8.1.11.v20130520.pom
+fetchArtifact org/eclipse/jetty/jetty-continuation/8.1.15.v20140411/jetty-continuation-8.1.15.v20140411.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-continuation/8.1.15.v20140411/jetty-continuation-8.1.15.v20140411.pom
+fetchArtifact org/eclipse/jetty/jetty-continuation/8.1.15.v20140411/jetty-continuation-8.1.15.v20140411.jar
+fetchArtifact org/eclipse/jetty/jetty-continuation/8.1.15.v20140411/jetty-continuation-8.1.15.v20140411.jar.sha1
+fetchArtifact org/eclipse/jetty/jetty-security/8.1.15.v20140411/jetty-security-8.1.15.v20140411.jar
+fetchArtifact org/eclipse/jetty/jetty-security/8.1.15.v20140411/jetty-security-8.1.15.v20140411.jar.sha1
+fetchArtifact org/eclipse/jetty/jetty-security/8.1.15.v20140411/jetty-security-8.1.15.v20140411.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-security/8.1.15.v20140411/jetty-security-8.1.15.v20140411.pom
+fetchArtifact org/eclipse/jetty/jetty-util/8.1.11.v20130520/jetty-util-8.1.11.v20130520.pom
+fetchArtifact org/eclipse/jetty/jetty-util/8.1.11.v20130520/jetty-util-8.1.11.v20130520.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-util/8.1.15.v20140411/jetty-util-8.1.15.v20140411.jar.sha1
+fetchArtifact org/eclipse/jetty/jetty-util/8.1.15.v20140411/jetty-util-8.1.15.v20140411.pom
+fetchArtifact org/eclipse/jetty/jetty-util/8.1.15.v20140411/jetty-util-8.1.15.v20140411.jar
+fetchArtifact org/eclipse/jetty/jetty-util/8.1.15.v20140411/jetty-util-8.1.15.v20140411.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-project/8.1.11.v20130520/jetty-project-8.1.11.v20130520.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-project/8.1.11.v20130520/jetty-project-8.1.11.v20130520.pom
+fetchArtifact org/eclipse/jetty/jetty-project/8.1.15.v20140411/jetty-project-8.1.15.v20140411.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-project/8.1.15.v20140411/jetty-project-8.1.15.v20140411.pom
+fetchArtifact org/eclipse/jetty/jetty-http/8.1.11.v20130520/jetty-http-8.1.11.v20130520.pom
+fetchArtifact org/eclipse/jetty/jetty-http/8.1.11.v20130520/jetty-http-8.1.11.v20130520.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-http/8.1.15.v20140411/jetty-http-8.1.15.v20140411.jar.sha1
+fetchArtifact org/eclipse/jetty/jetty-http/8.1.15.v20140411/jetty-http-8.1.15.v20140411.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-http/8.1.15.v20140411/jetty-http-8.1.15.v20140411.jar
+fetchArtifact org/eclipse/jetty/jetty-http/8.1.15.v20140411/jetty-http-8.1.15.v20140411.pom
+fetchArtifact org/eclipse/jetty/jetty-parent/20/jetty-parent-20.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-parent/20/jetty-parent-20.pom
+fetchArtifact org/eclipse/jetty/jetty-parent/18/jetty-parent-18.pom
+fetchArtifact org/eclipse/jetty/jetty-parent/18/jetty-parent-18.pom.sha1
+fetchArtifact org/eclipse/jetty/orbit/jetty-orbit/1/jetty-orbit-1.pom
+fetchArtifact org/eclipse/jetty/orbit/jetty-orbit/1/jetty-orbit-1.pom.sha1
+fetchArtifact org/eclipse/jetty/orbit/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.jar
+fetchArtifact org/eclipse/jetty/orbit/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.pom.sha1
+fetchArtifact org/eclipse/jetty/orbit/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.jar.sha1
+fetchArtifact org/eclipse/jetty/orbit/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.pom
+fetchArtifact org/eclipse/jetty/jetty-servlet/8.1.15.v20140411/jetty-servlet-8.1.15.v20140411.pom
+fetchArtifact org/eclipse/jetty/jetty-servlet/8.1.15.v20140411/jetty-servlet-8.1.15.v20140411.jar
+fetchArtifact org/eclipse/jetty/jetty-servlet/8.1.15.v20140411/jetty-servlet-8.1.15.v20140411.jar.sha1
+fetchArtifact org/eclipse/jetty/jetty-servlet/8.1.15.v20140411/jetty-servlet-8.1.15.v20140411.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-io/8.1.11.v20130520/jetty-io-8.1.11.v20130520.pom
+fetchArtifact org/eclipse/jetty/jetty-io/8.1.11.v20130520/jetty-io-8.1.11.v20130520.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-io/8.1.15.v20140411/jetty-io-8.1.15.v20140411.pom
+fetchArtifact org/eclipse/jetty/jetty-io/8.1.15.v20140411/jetty-io-8.1.15.v20140411.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-io/8.1.15.v20140411/jetty-io-8.1.15.v20140411.jar
+fetchArtifact org/eclipse/jetty/jetty-io/8.1.15.v20140411/jetty-io-8.1.15.v20140411.jar.sha1
+fetchArtifact org/scalaz/scalaz-core_2.11.0-RC3/7.0.6/scalaz-core_2.11.0-RC3-7.0.6.pom.sha1
+fetchArtifact org/scalaz/scalaz-core_2.11.0-RC3/7.0.6/scalaz-core_2.11.0-RC3-7.0.6.pom
+fetchArtifact org/scalaz/scalaz-core_2.11.0-RC3/7.0.6/scalaz-core_2.11.0-RC3-7.0.6.jar
+fetchArtifact org/scalaz/scalaz-core_2.11.0-RC3/7.0.6/scalaz-core_2.11.0-RC3-7.0.6.jar.sha1
+fetchArtifact org/scalaz/scalaz-effect_2.11.0-RC3/7.0.6/scalaz-effect_2.11.0-RC3-7.0.6.jar.sha1
+fetchArtifact org/scalaz/scalaz-effect_2.11.0-RC3/7.0.6/scalaz-effect_2.11.0-RC3-7.0.6.pom.sha1
+fetchArtifact org/scalaz/scalaz-effect_2.11.0-RC3/7.0.6/scalaz-effect_2.11.0-RC3-7.0.6.jar
+fetchArtifact org/scalaz/scalaz-effect_2.11.0-RC3/7.0.6/scalaz-effect_2.11.0-RC3-7.0.6.pom
+fetchArtifact org/scalaz/scalaz-concurrent_2.11.0-RC3/7.0.6/scalaz-concurrent_2.11.0-RC3-7.0.6.jar
+fetchArtifact org/scalaz/scalaz-concurrent_2.11.0-RC3/7.0.6/scalaz-concurrent_2.11.0-RC3-7.0.6.pom
+fetchArtifact org/scalaz/scalaz-concurrent_2.11.0-RC3/7.0.6/scalaz-concurrent_2.11.0-RC3-7.0.6.jar.sha1
+fetchArtifact org/scalaz/scalaz-concurrent_2.11.0-RC3/7.0.6/scalaz-concurrent_2.11.0-RC3-7.0.6.pom.sha1
+fetchArtifact org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
+fetchArtifact org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom
+fetchArtifact org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom.sha1
+fetchArtifact org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar.sha1
+fetchArtifact org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.pom
+fetchArtifact org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.pom.sha1
+fetchArtifact org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom
+fetchArtifact org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom.sha1
+fetchArtifact org/hamcrest/hamcrest-parent/1.1/hamcrest-parent-1.1.pom.sha1
+fetchArtifact org/hamcrest/hamcrest-parent/1.1/hamcrest-parent-1.1.pom
+fetchArtifact org/sonatype/oss/oss-parent/7/oss-parent-7.pom.sha1
+fetchArtifact org/sonatype/oss/oss-parent/7/oss-parent-7.pom
+fetchArtifact org/sonatype/oss/oss-parent/5/oss-parent-5.pom
+fetchArtifact org/sonatype/oss/oss-parent/5/oss-parent-5.pom.sha1
+fetchArtifact org/sonatype/aether/aether-spi/1.7/aether-spi-1.7.pom.sha1
+fetchArtifact org/sonatype/aether/aether-spi/1.7/aether-spi-1.7.pom
+fetchArtifact org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar
+fetchArtifact org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar.sha1
+fetchArtifact org/sonatype/aether/aether-util/1.7/aether-util-1.7.pom.sha1
+fetchArtifact org/sonatype/aether/aether-util/1.7/aether-util-1.7.pom
+fetchArtifact org/sonatype/aether/aether-impl/1.7/aether-impl-1.7.pom.sha1
+fetchArtifact org/sonatype/aether/aether-impl/1.7/aether-impl-1.7.pom
+fetchArtifact org/sonatype/aether/aether-api/1.7/aether-api-1.7.pom.sha1
+fetchArtifact org/sonatype/aether/aether-api/1.7/aether-api-1.7.pom
+fetchArtifact org/sonatype/aether/aether-parent/1.7/aether-parent-1.7.pom
+fetchArtifact org/sonatype/aether/aether-parent/1.7/aether-parent-1.7.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-parent/1.4.2/sisu-parent-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-parent/1.4.2/sisu-parent-1.4.2.pom
+fetchArtifact org/sonatype/sisu/sisu-inject/1.4.2/sisu-inject-1.4.2.pom
+fetchArtifact org/sonatype/sisu/sisu-inject/1.4.2/sisu-inject-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/inject/guice-plexus/1.4.2/guice-plexus-1.4.2.pom
+fetchArtifact org/sonatype/sisu/inject/guice-plexus/1.4.2/guice-plexus-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/inject/guice-bean/1.4.2/guice-bean-1.4.2.pom
+fetchArtifact org/sonatype/sisu/inject/guice-bean/1.4.2/guice-bean-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-inject-plexus/1.4.2/sisu-inject-plexus-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-inject-plexus/1.4.2/sisu-inject-plexus-1.4.2.pom
+fetchArtifact org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar.sha1
+fetchArtifact org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar
+fetchArtifact org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7.pom
+fetchArtifact org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar.sha1
+fetchArtifact org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar
+fetchArtifact org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.pom
+fetchArtifact org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.pom.sha1
+fetchArtifact org/sonatype/spice/spice-parent/16/spice-parent-16.pom
+fetchArtifact org/sonatype/spice/spice-parent/16/spice-parent-16.pom.sha1
+fetchArtifact org/sonatype/spice/spice-parent/17/spice-parent-17.pom.sha1
+fetchArtifact org/sonatype/spice/spice-parent/17/spice-parent-17.pom
+fetchArtifact org/sonatype/spice/spice-parent/12/spice-parent-12.pom
+fetchArtifact org/sonatype/spice/spice-parent/12/spice-parent-12.pom.sha1
+fetchArtifact org/sonatype/spice/spice-parent/10/spice-parent-10.pom.sha1
+fetchArtifact org/sonatype/spice/spice-parent/10/spice-parent-10.pom
+fetchArtifact org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.jar
+fetchArtifact org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.jar.sha1
+fetchArtifact org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.pom
+fetchArtifact org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.pom.sha1
+fetchArtifact org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.pom.sha1
+fetchArtifact org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
+fetchArtifact org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.pom
+fetchArtifact org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar.sha1
+fetchArtifact org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.pom.sha1
+fetchArtifact org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar.sha1
+fetchArtifact org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
+fetchArtifact org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.pom
+fetchArtifact org/sonatype/forge/forge-parent/4/forge-parent-4.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/4/forge-parent-4.pom
+fetchArtifact org/sonatype/forge/forge-parent/3/forge-parent-3.pom
+fetchArtifact org/sonatype/forge/forge-parent/3/forge-parent-3.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/5/forge-parent-5.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/5/forge-parent-5.pom
+fetchArtifact org/sonatype/forge/forge-parent/6/forge-parent-6.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/6/forge-parent-6.pom
+fetchArtifact org/sonatype/forge/forge-parent/10/forge-parent-10.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/10/forge-parent-10.pom
+fetchArtifact org/objenesis/objenesis/1.0/objenesis-1.0.jar.sha1
+fetchArtifact org/objenesis/objenesis/1.0/objenesis-1.0.pom.sha1
+fetchArtifact org/objenesis/objenesis/1.0/objenesis-1.0.pom
+fetchArtifact org/objenesis/objenesis/1.0/objenesis-1.0.jar
+fetchArtifact org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA.pom
+fetchArtifact org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA.pom.sha1
+fetchArtifact org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA.jar.sha1
+fetchArtifact org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA.jar
+fetchArtifact org/ow2/asm/asm-parent/5.0.2/asm-parent-5.0.2.pom.sha1
+fetchArtifact org/ow2/asm/asm-parent/5.0.2/asm-parent-5.0.2.pom
+fetchArtifact org/ow2/asm/asm-parent/4.1/asm-parent-4.1.pom
+fetchArtifact org/ow2/asm/asm-parent/4.1/asm-parent-4.1.pom.sha1
+fetchArtifact org/ow2/asm/asm-analysis/5.0.2/asm-analysis-5.0.2.jar
+fetchArtifact org/ow2/asm/asm-analysis/5.0.2/asm-analysis-5.0.2.pom.sha1
+fetchArtifact org/ow2/asm/asm-analysis/5.0.2/asm-analysis-5.0.2.pom
+fetchArtifact org/ow2/asm/asm-analysis/5.0.2/asm-analysis-5.0.2.jar.sha1
+fetchArtifact org/ow2/asm/asm-analysis/4.1/asm-analysis-4.1.pom
+fetchArtifact org/ow2/asm/asm-analysis/4.1/asm-analysis-4.1.jar
+fetchArtifact org/ow2/asm/asm-analysis/4.1/asm-analysis-4.1.pom.sha1
+fetchArtifact org/ow2/asm/asm-analysis/4.1/asm-analysis-4.1.jar.sha1
+fetchArtifact org/ow2/asm/asm/5.0.2/asm-5.0.2.jar.sha1
+fetchArtifact org/ow2/asm/asm/5.0.2/asm-5.0.2.pom.sha1
+fetchArtifact org/ow2/asm/asm/5.0.2/asm-5.0.2.pom
+fetchArtifact org/ow2/asm/asm/5.0.2/asm-5.0.2.jar
+fetchArtifact org/ow2/asm/asm/4.1/asm-4.1.jar.sha1
+fetchArtifact org/ow2/asm/asm/4.1/asm-4.1.pom.sha1
+fetchArtifact org/ow2/asm/asm/4.1/asm-4.1.pom
+fetchArtifact org/ow2/asm/asm/4.1/asm-4.1.jar
+fetchArtifact org/ow2/asm/asm-util/5.0.2/asm-util-5.0.2.pom
+fetchArtifact org/ow2/asm/asm-util/5.0.2/asm-util-5.0.2.jar
+fetchArtifact org/ow2/asm/asm-util/5.0.2/asm-util-5.0.2.pom.sha1
+fetchArtifact org/ow2/asm/asm-util/5.0.2/asm-util-5.0.2.jar.sha1
+fetchArtifact org/ow2/asm/asm-util/4.1/asm-util-4.1.jar
+fetchArtifact org/ow2/asm/asm-util/4.1/asm-util-4.1.pom
+fetchArtifact org/ow2/asm/asm-util/4.1/asm-util-4.1.pom.sha1
+fetchArtifact org/ow2/asm/asm-util/4.1/asm-util-4.1.jar.sha1
+fetchArtifact org/ow2/asm/asm-tree/5.0.2/asm-tree-5.0.2.jar
+fetchArtifact org/ow2/asm/asm-tree/5.0.2/asm-tree-5.0.2.jar.sha1
+fetchArtifact org/ow2/asm/asm-tree/5.0.2/asm-tree-5.0.2.pom
+fetchArtifact org/ow2/asm/asm-tree/5.0.2/asm-tree-5.0.2.pom.sha1
+fetchArtifact org/ow2/asm/asm-tree/4.1/asm-tree-4.1.jar
+fetchArtifact org/ow2/asm/asm-tree/4.1/asm-tree-4.1.pom.sha1
+fetchArtifact org/ow2/asm/asm-tree/4.1/asm-tree-4.1.jar.sha1
+fetchArtifact org/ow2/asm/asm-tree/4.1/asm-tree-4.1.pom
+fetchArtifact org/ow2/asm/asm-commons/5.0.2/asm-commons-5.0.2.pom
+fetchArtifact org/ow2/asm/asm-commons/5.0.2/asm-commons-5.0.2.jar
+fetchArtifact org/ow2/asm/asm-commons/5.0.2/asm-commons-5.0.2.jar.sha1
+fetchArtifact org/ow2/asm/asm-commons/5.0.2/asm-commons-5.0.2.pom.sha1
+fetchArtifact org/ow2/ow2/1.3/ow2-1.3.pom.sha1
+fetchArtifact org/ow2/ow2/1.3/ow2-1.3.pom
+fetchArtifact org/glassfish/web/javax.el/2.2.5/javax.el-2.2.5.jar.sha1
+fetchArtifact org/glassfish/web/javax.el/2.2.5/javax.el-2.2.5.jar
+fetchArtifact org/glassfish/web/javax.el/2.2.5/javax.el-2.2.5.pom
+fetchArtifact org/glassfish/web/javax.el/2.2.5/javax.el-2.2.5.pom.sha1
+fetchArtifact org/pegdown/pegdown/1.2.1/pegdown-1.2.1.jar.sha1
+fetchArtifact org/pegdown/pegdown/1.2.1/pegdown-1.2.1.pom
+fetchArtifact org/pegdown/pegdown/1.2.1/pegdown-1.2.1.pom.sha1
+fetchArtifact org/pegdown/pegdown/1.2.1/pegdown-1.2.1.jar
+fetchArtifact junit/junit/4.11/junit-4.11.jar
+fetchArtifact junit/junit/4.11/junit-4.11.pom
+fetchArtifact junit/junit/4.11/junit-4.11.jar.sha1
+fetchArtifact junit/junit/4.11/junit-4.11.pom.sha1
+fetchArtifact junit/junit/3.8.1/junit-3.8.1.pom
+fetchArtifact junit/junit/3.8.1/junit-3.8.1.jar
+fetchArtifact junit/junit/3.8.1/junit-3.8.1.jar.sha1
+fetchArtifact junit/junit/3.8.1/junit-3.8.1.pom.sha1
+fetchArtifact junit/junit/3.8.2/junit-3.8.2.pom
+fetchArtifact junit/junit/3.8.2/junit-3.8.2.pom.sha1
+fetchArtifact joda-time/joda-time/2.3/joda-time-2.3.pom
+fetchArtifact joda-time/joda-time/2.3/joda-time-2.3.jar.sha1
+fetchArtifact joda-time/joda-time/2.3/joda-time-2.3.jar
+fetchArtifact joda-time/joda-time/2.3/joda-time-2.3.pom.sha1
+fetchArtifact commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar
+fetchArtifact commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.pom.sha1
+fetchArtifact commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.pom
+fetchArtifact commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar.sha1
+fetchArtifact commons-beanutils/commons-beanutils/1.6/commons-beanutils-1.6.pom
+fetchArtifact commons-beanutils/commons-beanutils/1.6/commons-beanutils-1.6.pom.sha1
+fetchArtifact javax/inject/javax.inject/1/javax.inject-1.pom
+fetchArtifact javax/inject/javax.inject/1/javax.inject-1.jar
+fetchArtifact javax/inject/javax.inject/1/javax.inject-1.jar.sha1
+fetchArtifact javax/inject/javax.inject/1/javax.inject-1.pom.sha1
+fetchArtifact javax/el/javax.el-api/2.2.4/javax.el-api-2.2.4.pom.sha1
+fetchArtifact javax/el/javax.el-api/2.2.4/javax.el-api-2.2.4.jar.sha1
+fetchArtifact javax/el/javax.el-api/2.2.4/javax.el-api-2.2.4.jar
+fetchArtifact javax/el/javax.el-api/2.2.4/javax.el-api-2.2.4.pom
+fetchArtifact javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.pom
+fetchArtifact javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar.sha1
+fetchArtifact javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.pom.sha1
+fetchArtifact javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar
+fetchArtifact javax/mail/mail/1.4.5/mail-1.4.5.pom.sha1
+fetchArtifact javax/mail/mail/1.4.5/mail-1.4.5.jar
+fetchArtifact javax/mail/mail/1.4.5/mail-1.4.5.pom
+fetchArtifact javax/mail/mail/1.4.5/mail-1.4.5.jar.sha1
+fetchArtifact javax/activation/activation/1.1/activation-1.1.pom.sha1
+fetchArtifact javax/activation/activation/1.1/activation-1.1.pom
+fetchArtifact javax/activation/activation/1.1.1/activation-1.1.1.jar.sha1
+fetchArtifact javax/activation/activation/1.1.1/activation-1.1.1.pom
+fetchArtifact javax/activation/activation/1.1.1/activation-1.1.1.jar
+fetchArtifact javax/activation/activation/1.1.1/activation-1.1.1.pom.sha1
+fetchArtifact commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.jar.sha1
+fetchArtifact commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.pom.sha1
+fetchArtifact commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.jar
+fetchArtifact commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.pom
+fetchArtifact mesosphere/chaos_2.11/0.6.1/chaos_2.11-0.6.1.jar
+fetchArtifact mesosphere/chaos_2.11/0.6.1/chaos_2.11-0.6.1.pom
+fetchArtifact mesosphere/chaos_2.11/0.6.1/chaos_2.11-0.6.1.jar.sha1
+fetchArtifact mesosphere/chaos_2.11/0.6.1/chaos_2.11-0.6.1.pom.sha1
+fetchArtifact mesosphere/mesos-utils_2.11/0.20.1-1/mesos-utils_2.11-0.20.1-1.jar.sha1
+fetchArtifact mesosphere/mesos-utils_2.11/0.20.1-1/mesos-utils_2.11-0.20.1-1.pom
+fetchArtifact mesosphere/mesos-utils_2.11/0.20.1-1/mesos-utils_2.11-0.20.1-1.pom.sha1
+fetchArtifact mesosphere/mesos-utils_2.11/0.20.1-1/mesos-utils_2.11-0.20.1-1.jar
+fetchArtifact oro/oro/2.0.8/oro-2.0.8.pom
+fetchArtifact oro/oro/2.0.8/oro-2.0.8.jar.sha1
+fetchArtifact oro/oro/2.0.8/oro-2.0.8.pom.sha1
+fetchArtifact oro/oro/2.0.8/oro-2.0.8.jar
diff --git a/nixpkgs/pkgs/applications/networking/cluster/click/default.nix b/nixpkgs/pkgs/applications/networking/cluster/click/default.nix
new file mode 100644
index 000000000000..2c0e73fb30db
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/click/default.nix
@@ -0,0 +1,27 @@
+{ darwin, fetchFromGitHub, rustPlatform, stdenv }:
+
+with rustPlatform;
+
+buildRustPackage rec {
+  pname = "click";
+  version = "0.4.2";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "databricks";
+    repo = "click";
+    sha256 = "18mpzvvww2g6y2d3m8wcfajzdshagihn59k03xvcknd5d8zxagl3";
+  };
+
+  cargoSha256 = "1f9yn4pvp58laylngdrfdkwygisnzkhkm7pndf6l33k3aqxhz5mm";
+
+  buildInputs = stdenv.lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ];
+
+  meta = with stdenv.lib; {
+    description = ''The "Command Line Interactive Controller for Kubernetes"'';
+    homepage = "https://github.com/databricks/click";
+    license = [ licenses.asl20 ];
+    maintainers = [ maintainers.mbode ];
+    platforms = [ "x86_64-linux" "x86_64-darwin" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/cni/default.nix b/nixpkgs/pkgs/applications/networking/cluster/cni/default.nix
new file mode 100644
index 000000000000..49d3aaa298de
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/cni/default.nix
@@ -0,0 +1,23 @@
+{ lib, fetchFromGitHub, buildGoPackage }:
+
+buildGoPackage rec {
+  pname = "cni";
+  version = "0.7.1";
+
+  src = fetchFromGitHub {
+    owner = "containernetworking";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "02qn1br8164d99978acalisy1sx294g1axnii4yh1wji0fc735xz";
+  };
+
+  goPackagePath = "github.com/containernetworking/cni";
+
+  meta = with lib; {
+    description = "Container Network Interface - networking for Linux containers";
+    license = licenses.asl20;
+    homepage = "https://github.com/containernetworking/cni";
+    maintainers = with maintainers; [ offline vdemeester ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/cni/plugins.nix b/nixpkgs/pkgs/applications/networking/cluster/cni/plugins.nix
new file mode 100644
index 000000000000..4aa15b218df7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/cni/plugins.nix
@@ -0,0 +1,48 @@
+{ lib, fetchFromGitHub, buildGoModule, nixosTests }:
+
+buildGoModule rec {
+  pname = "cni-plugins";
+  version = "0.8.6";
+
+  src = fetchFromGitHub {
+    owner = "containernetworking";
+    repo = "plugins";
+    rev = "v${version}";
+    sha256 = "0f1cqxjf26sy1c4aw6y7pyd9lrz0vknby4q5j6xj77a1pab9073m";
+  };
+
+  vendorSha256 = null;
+
+  buildFlagsArray = [
+    "-ldflags=-X github.com/containernetworking/plugins/pkg/utils/buildversion.BuildVersion=${version}"
+  ];
+
+  subPackages = [
+    "plugins/ipam/dhcp"
+    "plugins/ipam/host-local"
+    "plugins/ipam/static"
+    "plugins/main/bridge"
+    "plugins/main/host-device"
+    "plugins/main/ipvlan"
+    "plugins/main/loopback"
+    "plugins/main/macvlan"
+    "plugins/main/ptp"
+    "plugins/main/vlan"
+    "plugins/meta/bandwidth"
+    "plugins/meta/firewall"
+    "plugins/meta/flannel"
+    "plugins/meta/portmap"
+    "plugins/meta/sbr"
+    "plugins/meta/tuning"
+  ];
+
+  passthru.tests.podman = nixosTests.podman;
+
+  meta = with lib; {
+    description = "Some standard networking plugins, maintained by the CNI team";
+    homepage = "https://github.com/containernetworking/plugins";
+    license = licenses.asl20;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ cstrahan ] ++ teams.podman.members;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/docker-machine/default.nix b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/default.nix
new file mode 100644
index 000000000000..a801a1223744
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/default.nix
@@ -0,0 +1,33 @@
+# This file was generated by go2nix.
+{ stdenv, buildGoPackage, fetchFromGitHub, installShellFiles }:
+
+buildGoPackage rec {
+  pname = "machine";
+  version = "0.16.1";
+
+  goPackagePath = "github.com/docker/machine";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "docker";
+    repo = "machine";
+    sha256 = "0xxzxi5v7ji9j2k7kxhi0ah91lfa7b9rg3nywgx0lkv8dlgp8kmy";
+  };
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  postInstall = ''
+    pushd go/src/${goPackagePath}/contrib/completion
+    installShellCompletion --bash bash/*
+    installShellCompletion --zsh zsh/*
+    popd
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://docs.docker.com/machine/";
+    description = "Docker Machine is a tool that lets you install Docker Engine on virtual hosts, and manage Docker Engine on the hosts.";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ offline tailhook ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/docker-machine/hyperkit.nix b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/hyperkit.nix
new file mode 100644
index 000000000000..0c5a716aa8a1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/hyperkit.nix
@@ -0,0 +1,23 @@
+{ lib, buildGoModule, minikube }:
+
+buildGoModule rec {
+  inherit (minikube) version src nativeBuildInputs buildInputs vendorSha256 commit;
+
+  pname = "docker-machine-hyperkit";
+
+  buildPhase = ''
+    make docker-machine-driver-hyperkit COMMIT=${commit}
+  '';
+
+  installPhase = ''
+    install out/docker-machine-driver-hyperkit -Dt $out/bin
+  '';
+
+  meta = with lib; {
+    homepage = "https://minikube.sigs.k8s.io/docs/drivers/hyperkit";
+    description = "HyperKit driver for docker-machine.";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ atkinschang ];
+    platforms = platforms.darwin;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm-deps.nix b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm-deps.nix
new file mode 100644
index 000000000000..e321b2c1b0ac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm-deps.nix
@@ -0,0 +1,21 @@
+# This file was generated by go2nix.
+[
+  {
+    goPackagePath = "github.com/docker/machine";
+    fetch = {
+      type = "git";
+      url = "https://github.com/docker/machine";
+      rev = "457c02d06a155827c1c4af9b5ab38c0b6b4e48ea";
+      sha256 = "0hx5bhjc7q9ml6h6d2a5csqg6vqwjj68599q0cccw3pcfrb34gmd";
+    };
+  }
+  {
+    goPackagePath = "github.com/libvirt/libvirt-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/libvirt/libvirt-go";
+      rev = "e9642325d747c353ca7b76b4893d5dbdc81c296f";
+      sha256 = "1822b2kbwyxb2gigbiashcs7v4fsyw7k3sdlqh43ga0l6058fmhl";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm.nix b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm.nix
new file mode 100644
index 000000000000..9352ba69da88
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm.nix
@@ -0,0 +1,28 @@
+# This file was generated by go2nix.
+{ stdenv, buildGoPackage, fetchFromGitHub, libvirt, pkgconfig }:
+
+buildGoPackage rec {
+  pname = "docker-machine-kvm";
+  version = "0.10.0";
+
+  goPackagePath = "github.com/dhiltgen/docker-machine-kvm";
+  goDeps = ./kvm-deps.nix;
+
+  src = fetchFromGitHub {
+    rev    = "v${version}";
+    owner  = "dhiltgen";
+    repo   = "docker-machine-kvm";
+    sha256 = "0ch4zwb6h7hnr5l3skj1daypvpyms2i666lbnmakpw1fw3zvjmgy";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libvirt ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/dhiltgen/docker-machine-kvm";
+    description = "KVM driver for docker-machine.";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ offline ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm2.nix b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm2.nix
new file mode 100644
index 000000000000..60d478fe1584
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm2.nix
@@ -0,0 +1,27 @@
+{ lib, buildGoModule, minikube }:
+
+buildGoModule rec {
+  inherit (minikube) version src nativeBuildInputs buildInputs vendorSha256 commit;
+
+  pname = "docker-machine-kvm2";
+
+  postPatch = ''
+    sed -i '/GOARCH=$*/d' Makefile
+  '';
+
+  buildPhase = ''
+    make docker-machine-driver-kvm2 COMMIT=${commit}
+  '';
+
+  installPhase = ''
+    install out/docker-machine-driver-kvm2 -Dt $out/bin
+  '';
+
+  meta = with lib; {
+    homepage = "https://minikube.sigs.k8s.io/docs/drivers/kvm2";
+    description = "KVM2 driver for docker-machine.";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ tadfisher atkinschang ];
+    platforms = platforms.linux;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/docker-machine/xhyve.nix b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/xhyve.nix
new file mode 100644
index 000000000000..8c63a70b6d6e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/xhyve.nix
@@ -0,0 +1,39 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, fetchpatch, pkgconfig, cctools, Hypervisor, vmnet }:
+
+buildGoPackage rec {
+  pname = "docker-machine-xhyve";
+  version = "0.4.0";
+
+  goPackagePath = "github.com/zchee/docker-machine-driver-xhyve";
+
+  # https://github.com/machine-drivers/docker-machine-driver-xhyve/pull/225
+  patches = fetchpatch {
+    url = "https://github.com/machine-drivers/docker-machine-driver-xhyve/commit/546256494bf2ccc33e4125bf45f504b0e3027d5a.patch";
+    sha256 = "1i8wxqccqkxvqrbsyd0g9s0kdskd8xi2jv0c1bji9aj4rq0a8cgz";
+  };
+
+  preBuild = ''
+    make -C go/src/${goPackagePath} CC=${stdenv.cc}/bin/cc LIBTOOL=${cctools}/bin/libtool GIT_CMD=: lib9p
+    export CGO_CFLAGS=-I$(pwd)/go/src/${goPackagePath}/vendor/github.com/jceel/lib9p
+    export CGO_LDFLAGS=$(pwd)/go/src/${goPackagePath}/vendor/build/lib9p/lib9p.a
+  '';
+  buildFlags = "--tags lib9p";
+
+  src = fetchFromGitHub {
+    rev    = "v${version}";
+    owner  = "machine-drivers";
+    repo   = "docker-machine-driver-xhyve";
+    sha256 = "0000v97fr8xc5b39v44hsa87wrbk4bcwyaaivxv4hxlf4vlgg863";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ Hypervisor vmnet ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/machine-drivers/docker-machine-driver-xhyve";
+    description = "Xhyve driver for docker-machine.";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ periklis ];
+    platforms = platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/flink/default.nix b/nixpkgs/pkgs/applications/networking/cluster/flink/default.nix
new file mode 100644
index 000000000000..3d418f9a47fb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/flink/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl, makeWrapper, jre
+, version ? "1.6" }:
+
+let
+  versionMap = {
+    "1.5" = {
+      flinkVersion = "1.5.5";
+      sha256 = "18wqcqi3gyqd40nspih99gq7ylfs20b35f4dcrspffagwkfp2l4z";
+    };
+    "1.6" = {
+      flinkVersion = "1.9.0";
+      sha256 = "1dzfcmqz5j4b545wq2q3xb2xkbhqllr04s3av1afv54y61l5y952";
+    };
+  };
+in
+
+with versionMap.${version};
+
+stdenv.mkDerivation rec {
+  name = "flink-${flinkVersion}";
+
+  src = fetchurl {
+    url = "mirror://apache/flink/${name}/${name}-bin-scala_2.11.tgz";
+    inherit sha256;
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildInputs = [ jre ];
+
+  installPhase = ''
+    rm bin/*.bat
+
+    mkdir -p $out/bin $out/opt/flink
+    mv * $out/opt/flink/
+    makeWrapper $out/opt/flink/bin/flink $out/bin/flink \
+      --prefix PATH : ${jre}/bin
+
+    cat <<EOF >> $out/opt/flink/conf/flink-conf.yaml
+    env.java.home: ${jre}"
+    env.log.dir: /tmp/flink-logs
+    EOF
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A distributed stream processing framework";
+    homepage = "https://flink.apache.org";
+    downloadPage = "https://flink.apache.org/downloads.html";
+    license = licenses.asl20;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ mbode ];
+    repositories.git = "git://git.apache.org/flink.git";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/fluxctl/default.nix b/nixpkgs/pkgs/applications/networking/cluster/fluxctl/default.nix
new file mode 100644
index 000000000000..4354d72a5bd9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/fluxctl/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "fluxctl";
+  version = "1.19.0";
+
+  src = fetchFromGitHub {
+    owner = "weaveworks";
+    repo = "flux";
+    rev = version;
+    sha256 = "1w6ndp0nrpps6pkxnq38hikbnzwahi6j9gn8l0bxd0qkf7cjc5w0";
+  };
+
+  vendorSha256 = "0w5l1lkzx4frllflkbilj8qqwf54wkz7hin7q8xn1vflkv3lxcnp";
+
+  subPackages = [ "cmd/fluxctl" ];
+
+  buildFlagsArray = [ "-ldflags=-s -w -X main.version=${version}" ];
+
+  meta = with stdenv.lib; {
+    description = "CLI client for Flux, the GitOps Kubernetes operator";
+    homepage = "https://github.com/fluxcd/flux";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ Gonzih filalex77 ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/habitat/default.nix b/nixpkgs/pkgs/applications/networking/cluster/habitat/default.nix
new file mode 100644
index 000000000000..f2f3925fbe4d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/habitat/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, rustPlatform, pkgconfig
+, libsodium, libarchive, openssl, zeromq }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "habitat";
+  # Newer versions required protobuf, which requires some finesse to get to
+  # compile with the vendored protobuf crate.
+  version = "0.90.6";
+
+  src = fetchFromGitHub {
+    owner = "habitat-sh";
+    repo = "habitat";
+    rev = version;
+    sha256 = "0rwi0lkmhlq4i8fba3s9nd9ajhz2dqxzkgfp5i8y0rvbfmhmfd6b";
+  };
+
+  cargoSha256 = "08sncz0jgsr2s821j3s4bk7d54xqwmnld7m57avavym1xqvsnbmy";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libsodium libarchive openssl zeromq ];
+
+  cargoBuildFlags = ["--package hab"];
+
+  checkPhase = ''
+    runHook preCheck
+    echo "Running cargo test"
+    cargo test --package hab
+    runHook postCheck
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An application automation framework";
+    homepage = "https://www.habitat.sh";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ rushmorem ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/hadoop/default.nix b/nixpkgs/pkgs/applications/networking/cluster/hadoop/default.nix
new file mode 100644
index 000000000000..5fc35e6a0af1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/hadoop/default.nix
@@ -0,0 +1,161 @@
+{ stdenv, fetchurl, makeWrapper, pkgconfig, which, maven, cmake, jre, bash
+, coreutils, glibc, protobuf2_5, fuse, snappy, zlib, bzip2, openssl, openssl_1_0_2
+}:
+
+let
+  common = { version, sha256, dependencies-sha256, tomcat, opensslPkg ? openssl }:
+    let
+      # compile the hadoop tarball from sources, it requires some patches
+      binary-distributon = stdenv.mkDerivation rec {
+        name = "hadoop-${version}-bin";
+        src = fetchurl {
+          url = "mirror://apache/hadoop/common/hadoop-${version}/hadoop-${version}-src.tar.gz";
+          inherit sha256;
+        };
+
+        postUnpack = stdenv.lib.optionalString (tomcat != null) ''
+          install -D ${tomcat.src} $sourceRoot/hadoop-hdfs-project/hadoop-hdfs-httpfs/downloads/apache-tomcat-${tomcat.version}.tar.gz
+          install -D ${tomcat.src} $sourceRoot/hadoop-common-project/hadoop-kms/downloads/apache-tomcat-${tomcat.version}.tar.gz
+        '';
+
+        # perform fake build to make a fixed-output derivation of dependencies downloaded from maven central (~100Mb in ~3000 files)
+        fetched-maven-deps = stdenv.mkDerivation {
+          name = "hadoop-${version}-maven-deps";
+          inherit src postUnpack nativeBuildInputs buildInputs;
+          buildPhase = ''
+            while mvn package -Dmaven.repo.local=$out/.m2 ${mavenFlags} -Dmaven.wagon.rto=5000; [ $? = 1 ]; do
+              echo "timeout, restart maven to continue downloading"
+            done
+          '';
+          # keep only *.{pom,jar,xml,sha1,so,dll,dylib} and delete all ephemeral files with lastModified timestamps inside
+          installPhase = ''find $out/.m2 -type f -regex '.+\(\.lastUpdated\|resolver-status\.properties\|_remote\.repositories\)' -delete'';
+          outputHashAlgo = "sha256";
+          outputHashMode = "recursive";
+          outputHash = dependencies-sha256;
+        };
+
+        nativeBuildInputs = [ maven cmake pkgconfig ];
+        buildInputs = [ fuse snappy zlib bzip2 opensslPkg protobuf2_5 ];
+        # most of the hardcoded pathes are fixed in 2.9.x and 3.0.0, this list of patched files might be reduced when 2.7.x and 2.8.x will be deprecated
+        postPatch = ''
+          for file in hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/HardLink.java \
+                      hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Shell.java \
+                      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DefaultContainerExecutor.java \
+                      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DockerContainerExecutor.java \
+                      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/launcher/ContainerLaunch.java \
+                      hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/MRJobConfig.java; do
+            if [ -f "$file" ]; then
+              substituteInPlace "$file" \
+                --replace '/usr/bin/stat' 'stat' \
+                --replace '/bin/bash'     'bash' \
+                --replace '/bin/ls'       'ls'   \
+                --replace '/bin/mv'       'mv'
+            fi
+          done
+        '';
+        dontConfigure = true; # do not trigger cmake hook
+        mavenFlags = "-Drequire.snappy -Drequire.bzip2 -DskipTests -Pdist,native -e";
+        buildPhase = ''
+          # 'maven.repo.local' must be writable
+          mvn package --offline -Dmaven.repo.local=$(cp -dpR ${fetched-maven-deps}/.m2 ./ && chmod +w -R .m2 && pwd)/.m2 ${mavenFlags}
+          # remove runtime dependency on $jdk/jre/lib/amd64/server/libjvm.so
+          patchelf --set-rpath ${stdenv.lib.makeLibraryPath [glibc]} hadoop-dist/target/hadoop-${version}/lib/native/libhadoop.so.1.0.0
+          patchelf --set-rpath ${stdenv.lib.makeLibraryPath [glibc]} hadoop-dist/target/hadoop-${version}/lib/native/libhdfs.so.0.0.0
+        '';
+        installPhase = "mv hadoop-dist/target/hadoop-${version} $out";
+      };
+    in
+      stdenv.mkDerivation {
+        pname = "hadoop";
+        inherit version;
+
+        src = binary-distributon;
+
+        nativeBuildInputs = [ makeWrapper ];
+
+        installPhase = ''
+          mkdir -p $out/share/doc/hadoop
+          cp -dpR * $out/
+          mv $out/*.txt $out/share/doc/hadoop/
+
+          #
+          # Do not use `wrapProgram` here, script renaming may result to weird things: http://i.imgur.com/0Xee013.png
+          #
+          mkdir -p $out/bin.wrapped
+          for n in $out/bin/*; do
+            if [ -f "$n" ]; then # only regular files
+              mv $n $out/bin.wrapped/
+              makeWrapper $out/bin.wrapped/$(basename $n) $n \
+                --prefix PATH : "${stdenv.lib.makeBinPath [ which jre bash coreutils ]}" \
+                --prefix JAVA_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ opensslPkg snappy zlib bzip2 ]}" \
+                --set JAVA_HOME "${jre}" \
+                --set HADOOP_PREFIX "$out"
+            fi
+          done
+        '';
+
+        meta = with stdenv.lib; {
+          homepage = "http://hadoop.apache.org/";
+          description = "Framework for distributed processing of large data sets across clusters of computers";
+          license = licenses.asl20;
+
+          longDescription = ''
+            The Apache Hadoop software library is a framework that allows for
+            the distributed processing of large data sets across clusters of
+            computers using a simple programming model. It is designed to
+            scale up from single servers to thousands of machines, each
+            offering local computation and storage. Rather than rely on
+            hardware to deliver high-avaiability, the library itself is
+            designed to detect and handle failures at the application layer,
+            so delivering a highly-availabile service on top of a cluster of
+            computers, each of which may be prone to failures.
+          '';
+          maintainers = with maintainers; [ volth ];
+          platforms = [ "x86_64-linux" ];
+        };
+      };
+
+  tomcat_6_0_48 = rec {
+    version = "6.0.48";
+    src = fetchurl {
+      # do not use "mirror://apache/" here, tomcat-6 is legacy and has been removed from the mirrors
+      url = "https://archive.apache.org/dist/tomcat/tomcat-6/v${version}/bin/apache-tomcat-${version}.tar.gz";
+      sha256 = "1w4jf28g8p25fmijixw6b02iqlagy2rvr57y3n90hvz341kb0bbc";
+    };
+  };
+
+in {
+  hadoop_2_7 = common {
+    version = "2.7.7";
+    sha256 = "1ahv67f3lwak3kbjvnk1gncq56z6dksbajj872iqd0awdsj3p5rf";
+    dependencies-sha256 = "1lsr9nvrynzspxqcamb10d596zlnmnfpxhkd884gdiva0frm0b1r";
+    tomcat = tomcat_6_0_48;
+    opensslPkg = openssl_1_0_2;
+  };
+  hadoop_2_8 = common {
+    version = "2.8.4";
+    sha256 = "16c3ljhrzibkjn3y1bmjxdgf0kn60l23ay5hqpp7vpbnqx52x68w";
+    dependencies-sha256 = "1j4f461487fydgr5978nnm245ksv4xbvskfr8pbmfhcyss6b7w03";
+    tomcat = tomcat_6_0_48;
+    opensslPkg = openssl_1_0_2;
+  };
+  hadoop_2_9 = common {
+    version = "2.9.1";
+    sha256 = "0qgmpfbpv7f521fkjy5ldzdb4lwiblhs0hyl8qy041ws17y5x7d7";
+    dependencies-sha256 = "1d5i8jj5y746rrqb9lscycnd7acmxlkz64ydsiyqsh5cdqgy2x7x";
+    tomcat = tomcat_6_0_48;
+    opensslPkg = openssl_1_0_2;
+  };
+  hadoop_3_0 = common {
+    version = "3.0.3";
+    sha256 = "1vvkci0kx4b48dg0niifn2d3r4wwq8pb3c5z20wy8pqsqrqhlci5";
+    dependencies-sha256 = "1kzkna9ywacm2m1cirj9cyip66bgqjhid2xf9rrhq6g10lhr8j9m";
+    tomcat = null;
+  };
+  hadoop_3_1 = common {
+    version = "3.1.1";
+    sha256 = "04hhdbyd4x1hy0fpy537f8mi0864hww97zap29x7dk1smrffwabd";
+    dependencies-sha256 = "1q63jsxg3d31x0p8hvhpvbly2b07almyzsbhwphbczl3fhlqgiwn";
+    tomcat = null;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/helm/default.nix b/nixpkgs/pkgs/applications/networking/cluster/helm/default.nix
new file mode 100644
index 000000000000..5e51fe4267d4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/helm/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildGoModule, fetchFromGitHub, installShellFiles }:
+
+buildGoModule rec {
+  pname = "helm";
+  version = "3.2.1";
+
+  src = fetchFromGitHub {
+    owner = "helm";
+    repo = "helm";
+    rev = "v${version}";
+    sha256 = "1453qkd9s4z4r0xzmv8ym7qfg33szf6gizfkb5zxj590fcbsgnd7";
+  };
+  vendorSha256 = null;
+
+  subPackages = [ "cmd/helm" ];
+  buildFlagsArray = [ "-ldflags=-w -s -X helm.sh/helm/v3/internal/version.version=v${version}" ];
+
+  nativeBuildInputs = [ installShellFiles ];
+  postInstall = ''
+    $out/bin/helm completion bash > helm.bash
+    $out/bin/helm completion zsh > helm.zsh
+    installShellCompletion helm.{bash,zsh}
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/kubernetes/helm";
+    description = "A package manager for kubernetes";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ rlupton20 edude03 saschagrunert Frostman ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/helmfile/default.nix b/nixpkgs/pkgs/applications/networking/cluster/helmfile/default.nix
new file mode 100644
index 000000000000..856fa51437e8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/helmfile/default.nix
@@ -0,0 +1,39 @@
+{ lib, buildGoModule, fetchFromGitHub, makeWrapper, kubernetes-helm, ... }:
+
+let version = "0.118.6"; in
+
+buildGoModule {
+  pname = "helmfile";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "roboll";
+    repo = "helmfile";
+    rev = "v${version}";
+    sha256 = "0zbvz8kn52c1q4yn8n9z4rrf761h495fhjw72x9q1nh44hr7npwd";
+  };
+
+  goPackagePath = "github.com/roboll/helmfile";
+
+  vendorSha256 = "0xj14f0yx7x9ziijd1yka1n6kbmmhbibsk3ppp8cn1pqrwgqk7pr";
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildFlagsArray = ''
+    -ldflags=
+    -X main.Version=${version}
+  '';
+
+  postInstall = ''
+    wrapProgram $out/bin/helmfile \
+      --prefix PATH : ${lib.makeBinPath [ kubernetes-helm ]}
+  '';
+
+  meta = {
+    description = "Deploy Kubernetes Helm charts";
+    homepage = "https://github.com/roboll/helmfile";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ pneumaticat yurrriq ];
+    platforms = lib.platforms.unix;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/helmsman/default.nix b/nixpkgs/pkgs/applications/networking/cluster/helmsman/default.nix
new file mode 100644
index 000000000000..5fb0b3658851
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/helmsman/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildGoModule, fetchFromGitHub, ... }:
+
+buildGoModule rec {
+  pname = "helmsman";
+  version = "3.4.3";
+
+  src = fetchFromGitHub {
+    owner = "Praqma";
+    repo = "helmsman";
+    rev = "v${version}";
+    sha256 = "0jbinnzdw32l7zh02k81gnw9rnqi8f5k5sp2qv8p9l9kgziaycvn";
+  };
+
+  vendorSha256 = "05vnysr5r3hbayss1pyifgp989kjw81h95iack8ady62k6ys5njl";
+
+  meta = with lib; {
+    description = "Helm Charts (k8s applications) as Code tool";
+    homepage = "https://github.com/Praqma/helmsman";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lynty ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/heptio-ark/default.nix b/nixpkgs/pkgs/applications/networking/cluster/heptio-ark/default.nix
new file mode 100644
index 000000000000..aa86dcbeb241
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/heptio-ark/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "heptio-ark";
+  version = "0.10.0";
+
+  goPackagePath = "github.com/heptio/ark";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "heptio";
+    repo = "ark";
+    sha256 = "18h9hvp95va0hyl268gnzciwy1dqmc57bpifbj885870rdfp0ffv";
+  };
+
+  excludedPackages = [ "issue-template-gen" ];
+
+  meta = with stdenv.lib; {
+    description = "A utility for managing disaster recovery, specifically for your Kubernetes cluster resources and persistent volumes";
+    homepage = "https://heptio.github.io/ark/";
+    license = licenses.asl20;
+    maintainers = [maintainers.mbode];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/hetzner-kube/default.nix b/nixpkgs/pkgs/applications/networking/cluster/hetzner-kube/default.nix
new file mode 100644
index 000000000000..98edd849bac5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/hetzner-kube/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "hetzner-kube";
+  version = "0.5.1";
+
+  src = fetchFromGitHub {
+    owner = "xetys";
+    repo = "hetzner-kube";
+    rev = version;
+    sha256 = "1iqgpmljqx6rhmvsir2675waj78amcfiw08knwvlmavjgpxx2ysw";
+  };
+
+  vendorSha256 = "1jh2f66ys6rmrrwrf5zqfprgcvziyq6l4z8bfqwxgf1ysnxx525h";
+
+  buildFlagsArray = ''
+    -ldflags=
+    -X github.com/xetys/hetzner-kube/cmd.version=${version}
+  '';
+
+  meta = {
+    description = "A CLI tool for provisioning Kubernetes clusters on Hetzner Cloud";
+    homepage = "https://github.com/xetys/hetzner-kube";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ eliasp ];
+    platforms = lib.platforms.unix;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/jx/default.nix b/nixpkgs/pkgs/applications/networking/cluster/jx/default.nix
new file mode 100644
index 000000000000..304a3c6fa289
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/jx/default.nix
@@ -0,0 +1,36 @@
+{ buildGoModule, fetchFromGitHub, lib }:
+
+buildGoModule rec {
+  pname = "jx";
+  version = "2.1.65";
+
+  src = fetchFromGitHub {
+    owner = "jenkins-x";
+    repo = "jx";
+    rev = "v${version}";
+    sha256 = "0zkp0z5qpqw44bjnl20xna7s251k7jsxccqnqkdqqrzmqjpkkwgx";
+  };
+
+  vendorSha256 = "0zi2n8fywzy87yfwcx7di74s8mx0468zmg6kwjln7mwhr6q23adf";
+
+  subPackages = [ "cmd/jx" ];
+
+  buildFlagsArray = ''
+    -ldflags=
+    -X github.com/jenkins-x/jx/pkg/version.Version=${version}
+    -X github.com/jenkins-x/jx/pkg/version.Revision=${version}
+  '';
+
+  meta = with lib; {
+    description = "JX is a command line tool for installing and using Jenkins X.";
+    homepage = "https://jenkins-x.io";
+    longDescription = ''
+      Jenkins X provides automated CI+CD for Kubernetes with Preview
+      Environments on Pull Requests using Jenkins, Knative Build, Prow,
+      Skaffold and Helm.
+    '';
+    license = licenses.asl20 ;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/k3s/default.nix b/nixpkgs/pkgs/applications/networking/cluster/k3s/default.nix
new file mode 100644
index 000000000000..eedc34d7d488
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/k3s/default.nix
@@ -0,0 +1,265 @@
+{ stdenv
+, lib
+, makeWrapper
+, socat
+, iptables
+, iproute
+, bridge-utils
+, conntrack-tools
+, buildGoPackage
+, git
+, runc
+, libseccomp
+, pkgconfig
+, ethtool
+, utillinux
+, ipset
+, fetchFromGitHub
+, fetchurl
+, fetchzip
+, fetchgit
+}:
+
+with lib;
+
+# k3s is a kinda weird derivation. One of the main points of k3s is the
+# simplicity of it being one binary that can perform several tasks.
+# However, when you have a good package manager (like nix), that doesn't
+# actually make much of a difference; you don't really care if it's one binary
+# or 10 since with a good package manager, installing and running it is
+# identical.
+# Since upstream k3s packages itself as one large binary with several
+# "personalities" (in the form of subcommands like 'k3s agent' and 'k3s
+# kubectl'), it ends up being easiest to mostly mimic upstream packaging, with
+# some exceptions.
+# K3s also carries patches to some packages (such as containerd and cni
+# plugins), so we intentionally use the k3s versions of those binaries for k3s,
+# even if the upstream version of those binaries exist in nixpkgs already. In
+# the end, that means we have a thick k3s binary that behaves like the upstream
+# one for the most part.
+# However, k3s also bundles several pieces of unpatched software, from the
+# strongswan vpn software, to iptables, to socat, conntrack, busybox, etc.
+# Those pieces of software we entirely ignore upstream's handling of, and just
+# make sure they're in the path if desired.
+let
+  k3sVersion = "1.18.2+k3s1";     # k3s git tag
+  traefikChartVersion = "1.81.0"; # taken from ./scripts/download at the above k3s tag
+  k3sRootVersion = "0.3.0";       # taken from .s/cripts/download at the above k3s tag
+  # bundled into the k3s binary
+  traefikChart = fetchurl {
+    url = "https://kubernetes-charts.storage.googleapis.com/traefik-${traefikChartVersion}.tgz";
+    sha256 = "1aqpzgjlvqhil0g3angz94zd4xbl4iq0qmpjcy5aq1xv9qciwdi9";
+  };
+  # so, k3s is a complicated thing to package
+  # This derivation attempts to avoid including any random binaries from the
+  # internet. k3s-root is _mostly_ binaries built to be bundled in k3s (which
+  # we don't care about doing, we can add those as build or runtime
+  # dependencies using a real package manager).
+  # In addition to those binaries, it's also configuration though (right now
+  # mostly strongswan configuration), and k3s does use those files.
+  # As such, we download it in order to grab 'etc' and bundle it into the final
+  # k3s binary.
+  k3sRoot = fetchzip {
+    # Note: marked as apache 2.0 license
+    url = "https://github.com/rancher/k3s-root/releases/download/v${k3sRootVersion}/k3s-root-amd64.tar";
+    sha256 = "12xafn5jivl8lqdcs25b28xrc4mf7yf1xif5np169nvvxgvmpdxp";
+    stripRoot = false;
+  };
+  k3sPlugins = buildGoPackage rec {
+    name = "k3s-cni-plugins";
+    version = "0.7.6-k3s1"; # from ./scripts/version.sh 'VERSION_CNIPLUGINS'; update when k3s's repo is updated.
+
+    goPackagePath = "github.com/containernetworking/plugins";
+    subPackages = [ "." ];
+
+    src = fetchFromGitHub {
+      owner = "rancher";
+      repo = "plugins";
+      rev = "v${version}";
+      sha256 = "0ax72z1ziann352bp6khfds8vlf3bbkqckrkpx4l4jxgqks45izs";
+    };
+
+    meta = {
+      description = "CNI plugins, as patched by rancher for k3s";
+      license = licenses.asl20;
+      homepage = "https://k3s.io";
+      maintainers = [ maintainers.euank ];
+      platforms = platforms.linux;
+    };
+  };
+  # Grab this separately from a build because it's used by both stages of the
+  # k3s build.
+  k3sRepo = fetchgit {
+    url = "https://github.com/rancher/k3s";
+    rev = "v${k3sVersion}";
+    leaveDotGit = true; # ./scripts/version.sh depends on git
+    sha256 = "01ww3d71mlri2fk6z54rbd697aqwj942kbg323k0hfsnx7flkhps";
+  };
+  # Stage 1 of the k3s build:
+  # Let's talk about how k3s is structured.
+  # One of the ideas of k3s is that there's the single "k3s" binary which can
+  # do everything you need, from running a k3s server, to being a worker node,
+  # to running kubectl.
+  # The way that actually works is that k3s is a single go binary that contains
+  # a bunch of bindata that it unpacks at runtime into directories (either the
+  # user's home directory or /var/lib/rancher if run as root).
+  # This bindata includes both binaries and configuration.
+  # In order to let nixpkgs do all its autostripping/patching/etc, we split this into two derivations.
+  # First, we build all the binaries that get packed into the thick k3s binary
+  # (and output them from one derivation so they'll all be suitably patched up).
+  # Then, we bundle those binaries into our thick k3s binary and use that as
+  # the final single output.
+  # This approach was chosen because it ensures the bundled binaries all are
+  # correctly built to run with nix (we can lean on the existing buildGoPackage
+  # stuff), and we can again lean on that tooling for the final k3s binary too.
+  # Other alternatives would be to manually run the
+  # strip/patchelf/remove-references step ourselves in the installPhase of the
+  # derivation when we've built all the binaries, but haven't bundled them in
+  # with generated bindata yet.
+  k3sBuildStage1 = buildGoPackage rec {
+    name = "k3s-build-1";
+    version = "${k3sVersion}";
+
+    goPackagePath = "github.com/rancher/k3s";
+
+    src = k3sRepo;
+
+    patches = [ ./patches/0001-Use-rm-from-path-in-go-generate.patch ./patches/0002-Add-nixpkgs-patches.patch ];
+
+    nativeBuildInputs = [ git pkgconfig ];
+    buildInputs = [ libseccomp ];
+
+    buildPhase = ''
+      pushd go/src/${goPackagePath}
+
+      patchShebangs ./scripts/build ./scripts/version.sh
+      mkdir -p bin
+      ./scripts/build
+
+      popd
+    '';
+
+    installPhase = ''
+      pushd go/src/${goPackagePath}
+
+      mkdir -p "$out/bin"
+      install -m 0755 -t "$out/bin" ./bin/*
+
+      popd
+    '';
+
+    meta = {
+      description = "The various binaries that get packaged into the final k3s binary.";
+      license = licenses.asl20;
+      homepage = "https://k3s.io";
+      maintainers = [ maintainers.euank ];
+      platforms = platforms.linux;
+    };
+  };
+  k3sBuild = buildGoPackage rec {
+    name = "k3s-build";
+    version = "${k3sVersion}";
+
+    goPackagePath = "github.com/rancher/k3s";
+
+    src = k3sRepo;
+
+    patches = [ ./patches/0001-Use-rm-from-path-in-go-generate.patch ./patches/0002-Add-nixpkgs-patches.patch ];
+
+    nativeBuildInputs = [ git pkgconfig ];
+    buildInputs = [ k3sBuildStage1 k3sPlugins runc ];
+
+    # k3s appends a suffix to the final distribution binary for some arches
+    archSuffix =
+      if stdenv.hostPlatform.system == "x86_64-linux" then ""
+      else if stdenv.hostPlatform.system == "aarch64-linux" then "-arm64"
+      else throw "k3s isn't being built for ${stdenv.hostPlatform.system} yet.";
+
+    # In order to build the thick k3s binary (which is what
+    # ./scripts/package-cli does), we need to get all the binaries that script
+    # expects in place.
+    buildPhase = ''
+      pushd go/src/${goPackagePath}
+
+      patchShebangs ./scripts/build ./scripts/version.sh ./scripts/package-cli
+
+      mkdir -p bin
+
+      install -m 0755 -t ./bin ${k3sBuildStage1}/bin/*
+      install -m 0755 -T "${k3sPlugins}/bin/plugins" ./bin/cni
+      # Note: use the already-nixpkgs-bundled k3s rather than the one bundled
+      # in k3s because the k3s one is completely unmodified from upstream
+      # (unlike containerd, cni, etc)
+      install -m 0755 -T "${runc}/bin/runc" ./bin/runc
+      cp -R "${k3sRoot}/etc" ./etc
+      mkdir -p "build/static/charts"
+      cp "${traefikChart}" "build/static/charts/traefik-${traefikChartVersion}.tgz"
+
+      ./scripts/package-cli
+
+      popd
+    '';
+
+    installPhase = ''
+      pushd go/src/${goPackagePath}
+
+      mkdir -p "$out/bin"
+      install -m 0755 -T ./dist/artifacts/k3s${archSuffix} "$out/bin/k3s"
+
+      popd
+    '';
+
+    meta = {
+      description = "The k3s go binary which is used by the final wrapped output below.";
+      license = licenses.asl20;
+      homepage = "https://k3s.io";
+      maintainers = [ maintainers.euank ];
+      platforms = platforms.linux;
+    };
+  };
+in
+stdenv.mkDerivation rec {
+  name = "k3s";
+
+  # Important utilities used by  the kubelet, see
+  # https://github.com/kubernetes/kubernetes/issues/26093#issuecomment-237202494
+  # Note the list in that issue is stale and some aren't relevant for k3s.
+  k3sRuntimeDeps = [
+    socat
+    iptables
+    iproute
+    bridge-utils
+    ethtool
+    utillinux
+    ipset
+    conntrack-tools
+  ];
+
+  buildInputs = [
+    k3sBuild
+    makeWrapper
+  ] ++ k3sRuntimeDeps;
+
+  unpackPhase = "true";
+
+  # And, one final derivation (you thought the last one was it, right?)
+  # We got the binary we wanted above, but it doesn't have all the runtime
+  # dependencies k8s wants, including mount utilities for kubelet, networking
+  # tools for cni/kubelet stuff, etc
+  # Use a wrapper script to reference all the binaries that k3s tries to
+  # execute, but that we didn't bundle with it.
+  installPhase = ''
+    mkdir -p "$out/bin"
+    makeWrapper ${k3sBuild}/bin/k3s "$out/bin/k3s" \
+      --prefix PATH : ${lib.makeBinPath k3sRuntimeDeps} \
+      --prefix PATH : "$out/bin"
+  '';
+
+  meta = {
+    description = "A lightweight Kubernetes distribution.";
+    license = licenses.asl20;
+    homepage = "https://k3s.io";
+    maintainers = [ maintainers.euank ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/k3s/patches/0001-Use-rm-from-path-in-go-generate.patch b/nixpkgs/pkgs/applications/networking/cluster/k3s/patches/0001-Use-rm-from-path-in-go-generate.patch
new file mode 100644
index 000000000000..c439241e8558
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/k3s/patches/0001-Use-rm-from-path-in-go-generate.patch
@@ -0,0 +1,25 @@
+From e79ddef65d08599ae3fe8ff39d202ea2416650b8 Mon Sep 17 00:00:00 2001
+From: Euan Kemp <euank@euank.com>
+Date: Sun, 31 May 2020 17:27:05 -0700
+Subject: [PATCH 1/2] Use 'rm' from path in go generate
+
+/bin/rm is less portable. On some distros, like nixos, it doesn't exist
+at all.
+---
+ main.go | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/main.go b/main.go
+index 62908bb7bb..0527222887 100644
+--- a/main.go
++++ b/main.go
+@@ -1,5 +1,5 @@
+ //go:generate go run pkg/codegen/cleanup/main.go
+-//go:generate /bin/rm -rf pkg/generated
++//go:generate rm -rf pkg/generated
+ //go:generate go run pkg/codegen/main.go
+ //go:generate go fmt pkg/deploy/zz_generated_bindata.go
+ //go:generate go fmt pkg/static/zz_generated_bindata.go
+-- 
+2.25.4
+
diff --git a/nixpkgs/pkgs/applications/networking/cluster/k3s/patches/0002-Add-nixpkgs-patches.patch b/nixpkgs/pkgs/applications/networking/cluster/k3s/patches/0002-Add-nixpkgs-patches.patch
new file mode 100644
index 000000000000..71dea7a9c6ee
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/k3s/patches/0002-Add-nixpkgs-patches.patch
@@ -0,0 +1,87 @@
+From 1891be119e298ef7c86347a6b74d40ff539cf06e Mon Sep 17 00:00:00 2001
+From: Euan Kemp <euank@euank.com>
+Date: Sun, 31 May 2020 19:02:37 -0700
+Subject: [PATCH 2/2] Add nixpkgs patches
+
+These patches let us re-use the upstream build scripts when building for
+nix.
+---
+ scripts/build       | 20 ++++----------------
+ scripts/package-cli | 10 ++++++----
+ 2 files changed, 10 insertions(+), 20 deletions(-)
+
+diff --git a/scripts/build b/scripts/build
+index 4ca6333c4a..df15f7db1d 100755
+--- a/scripts/build
++++ b/scripts/build
+@@ -12,7 +12,8 @@ PKG_CONTAINERD="github.com/containerd/containerd"
+ PKG_RANCHER_CONTAINERD="github.com/rancher/containerd"
+ PKG_CRICTL="github.com/kubernetes-sigs/cri-tools"
+ 
+-buildDate=$(date -u '+%Y-%m-%dT%H:%M:%SZ')
++# nixpkgs: deterministic build date
++buildDate="$(date -d "$(git log -1 --format=%ai)" -u "+%Y-%m-%dT%H:%M:%SZ")"
+ 
+ VENDOR_PREFIX="${PKG}/vendor/"
+ VERSIONFLAGS="
+@@ -92,17 +93,7 @@ cleanup() {
+ }
+ 
+ INSTALLBIN=$(pwd)/bin
+-if [ ! -x ${INSTALLBIN}/cni ]; then
+-(
+-    echo Building cni
+-    TMPDIR=$(mktemp -d)
+-    trap cleanup EXIT
+-    WORKDIR=$TMPDIR/src/github.com/containernetworking/plugins
+-    git clone -b $VERSION_CNIPLUGINS https://github.com/rancher/plugins.git $WORKDIR
+-    cd $WORKDIR
+-    GOPATH=$TMPDIR CGO_ENABLED=0 "${GO}" build -tags "$TAGS" -ldflags "$LDFLAGS $STATIC" -o $INSTALLBIN/cni
+-)
+-fi
++# nixpkgs: skip building cni, we build it separately
+ # echo Building agent
+ # CGO_ENABLED=1 "${GO}" build -tags "$TAGS" -ldflags "$VERSIONFLAGS $LDFLAGS $STATIC" -o bin/k3s-agent ./cmd/agent/main.go
+ echo Building server
+@@ -118,10 +109,7 @@ ln -s containerd ./bin/ctr
+ #CGO_ENABLED=1 "${GO}" build -tags "$TAGS" -ldflags "$VERSIONFLAGS $LDFLAGS $STATIC_SQLITE" -o bin/ctr ./cmd/ctr/main.go
+ # echo Building containerd
+ # CGO_ENABLED=0 "${GO}" build -tags "$TAGS" -ldflags "$VERSIONFLAGS $LDFLAGS $STATIC" -o bin/containerd ./cmd/containerd/
+-echo Building runc
+-rm -f ./vendor/github.com/opencontainers/runc/runc
+-make EXTRA_LDFLAGS="-w -s" BUILDTAGS="$RUNC_TAGS" -C ./vendor/github.com/opencontainers/runc $RUNC_STATIC
+-cp -f ./vendor/github.com/opencontainers/runc/runc ./bin/runc
++# nixpkgs: we build runc separately
+ 
+ echo Building containerd-shim
+ rm -f ./vendor/github.com/containerd/containerd/bin/containerd-shim
+diff --git a/scripts/package-cli b/scripts/package-cli
+index f33d8c66dd..da34397a28 100755
+--- a/scripts/package-cli
++++ b/scripts/package-cli
+@@ -49,16 +49,18 @@ fi
+ 
+ CMD_NAME=dist/artifacts/k3s${BIN_SUFFIX}
+ 
+-"${GO}" generate
++CGO_ENABLED=0 env -u GOARCH "${GO}" generate
+ LDFLAGS="
+     -X github.com/rancher/k3s/pkg/version.Version=$VERSION
+     -X github.com/rancher/k3s/pkg/version.GitCommit=${COMMIT:0:8}
+     -w -s
+ "
+-STATIC="-extldflags '-static'"
++# STATIC="-extldflags '-static'"
++# nixpkgs: we can depend on dynamic linking because we have a good package manager
+ if [ "$DQLITE" = "true" ]; then
+     DQLITE_TAGS="dqlite"
+ fi
+-CGO_ENABLED=0 "${GO}" build -tags "$DQLITE_TAGS" -ldflags "$LDFLAGS $STATIC" -o ${CMD_NAME} ./cmd/k3s/main.go
++"${GO}" build -tags "$DQLITE_TAGS" -ldflags "$LDFLAGS" -o ${CMD_NAME} ./cmd/k3s/main.go
+ 
+-./scripts/build-upload ${CMD_NAME} ${COMMIT}
++# nixpkgs: skip uploading
++# ./scripts/build-upload ${CMD_NAME} ${COMMIT}
+-- 
+2.25.4
+
diff --git a/nixpkgs/pkgs/applications/networking/cluster/k9s/default.nix b/nixpkgs/pkgs/applications/networking/cluster/k9s/default.nix
new file mode 100644
index 000000000000..4be3398f4be8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/k9s/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "k9s";
+  version = "0.19.4";
+
+  src = fetchFromGitHub {
+    owner  = "derailed";
+    repo   = "k9s";
+    rev    = "v${version}";
+    sha256 = "1ya3lrw31pxd1rxzf88l5hzilaxwrng1a3ibawgn57my333hrmf6";
+  };
+
+  buildFlagsArray = ''
+    -ldflags=
+      -s -w
+      -X github.com/derailed/k9s/cmd.version=${version}
+      -X github.com/derailed/k9s/cmd.commit=${src.rev}
+  '';
+
+  vendorSha256 = "0vvzv5v7j77v809h2ial9n23244j1sy3xhkarsv0wwkifc3swvq5";
+
+  meta = with stdenv.lib; {
+    description = "Kubernetes CLI To Manage Your Clusters In Style.";
+    homepage = "https://github.com/derailed/k9s";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ Gonzih ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kanif/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kanif/default.nix
new file mode 100644
index 000000000000..ebf98840ee2b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kanif/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, perl , taktuk}:
+
+stdenv.mkDerivation rec {
+  version = "1.2.2";
+  pname = "kanif";
+
+  src = fetchurl {
+    url = "https://gforge.inria.fr/frs/download.php/26773/${pname}-${version}.tar.gz";
+    sha256 = "3f0c549428dfe88457c1db293cfac2a22b203f872904c3abf372651ac12e5879";
+  };
+
+  preBuild = ''
+      substituteInPlace ./kanif --replace "/usr/bin/perl" "${perl}/bin/perl"
+      substituteInPlace ./kanif --replace '$taktuk_command = "taktuk";' '$taktuk_command = "${taktuk}/bin/taktuk";'
+  '';
+
+  meta = {
+    description = "Cluster management and administration swiss army knife";
+    longDescription = ''
+      Kanif is a tool for high performance computing clusters management and
+      administration. It combines the main functionalities of well-known cluster
+      management tools such as c3, pdsh and dsh, and mimics their syntax. It
+      provides three tools to run the same command on several nodes ("parallel
+      ssh", using the 'kash' command), to broadcast the copy of files or
+      directories to several nodes ('kaput' command), and to gather several
+      remote files or directories locally ('kaget' command). It relies on TakTuk
+      for efficiency and scalability.'';
+    homepage = "http://taktuk.gforge.inria.fr/kanif";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.bzizou ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+
+}
+
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kompose/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kompose/default.nix
new file mode 100644
index 000000000000..c01e1c8c0041
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kompose/default.nix
@@ -0,0 +1,31 @@
+{ lib, buildGoPackage, fetchFromGitHub, installShellFiles }:
+
+buildGoPackage rec {
+  pname = "kompose";
+  version = "1.21.0";
+
+  goPackagePath = "github.com/kubernetes/kompose";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "kubernetes";
+    repo = "kompose";
+    sha256 = "15a1alf6ywwfc4z5kdcnv64fp3cfy3qrcw62ny6xyn1kh1w24vkh";
+  };
+
+  nativeBuildInputs = [ installShellFiles ];
+  postInstall = ''
+    for shell in bash zsh; do
+      $out/bin/kompose completion $shell > kompose.$shell
+      installShellCompletion kompose.$shell
+    done
+  '';
+
+  meta = with lib; {
+    description = "A tool to help users who are familiar with docker-compose move to Kubernetes";
+    homepage = "https://kompose.io";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ thpham vdemeester ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kontemplate/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kontemplate/default.nix
new file mode 100644
index 000000000000..87ae71f6a48d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kontemplate/default.nix
@@ -0,0 +1,35 @@
+{ lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "kontemplate";
+  version       = "1.8.0";
+  goPackagePath = "github.com/tazjin/kontemplate";
+  goDeps        = ./deps.nix;
+
+  src = fetchFromGitHub {
+    owner  = "tazjin";
+    repo   = "kontemplate";
+    rev    = "v${version}";
+    sha256 = "123mjmmm4hynraq1fpn3j5i0a1i87l265kkjraxxxbl0zacv74i1";
+  };
+
+  meta = with lib; {
+    description      = "Extremely simple Kubernetes resource templates";
+    homepage         = "http://kontemplate.works";
+    downloadPage     = "https://github.com/tazjin/kontemplate/releases";
+    license          = licenses.gpl3;
+    maintainers      = with maintainers; [ mbode tazjin ];
+    platforms        = platforms.unix;
+    repositories.git = "git://github.com/tazjin/kontemplate.git";
+
+    longDescription = ''
+      Kontemplate is a simple CLI tool that can take sets of
+      Kubernetes resource files with placeholders and insert values
+      per environment.
+
+      It can be used as a simple way of deploying the same set of
+      resources to different Kubernetes contexts with context-specific
+      configuration.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kontemplate/deps.nix b/nixpkgs/pkgs/applications/networking/cluster/kontemplate/deps.nix
new file mode 100644
index 000000000000..7693968bd550
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kontemplate/deps.nix
@@ -0,0 +1,111 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.3.0
+[
+  {
+    goPackagePath = "github.com/Masterminds/goutils";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Masterminds/goutils";
+      rev = "41ac8693c5c10a92ea1ff5ac3a7f95646f6123b0";
+      sha256 = "180px47gj936qyk5bkv5mbbgiil9abdjq6kwkf7sq70vyi9mcfiq";
+    };
+  }
+  {
+    goPackagePath = "github.com/Masterminds/semver";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Masterminds/semver";
+      rev = "5bc3b9184d48f1412b300b87a200cf020d9254cf";
+      sha256 = "1vdfm653v50jf63cw0kg2hslx50cn4mk6lj3p51bi11jrg48kfng";
+    };
+  }
+  {
+    goPackagePath = "github.com/Masterminds/sprig";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Masterminds/sprig";
+      rev = "6f509977777c33eae63b2136d97f7b976cb971cc";
+      sha256 = "05h9k6fhjxnpwlihj3z02q9kvqvnq53jix0ab84sx0666bci3cdh";
+    };
+  }
+  {
+    goPackagePath = "github.com/alecthomas/template";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/template";
+      rev = "fb15b899a75114aa79cc930e33c46b577cc664b1";
+      sha256 = "1vlasv4dgycydh5wx6jdcvz40zdv90zz1h7836z7lhsi2ymvii26";
+    };
+  }
+  {
+    goPackagePath = "github.com/alecthomas/units";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/units";
+      rev = "c3de453c63f4bdb4dadffab9805ec00426c505f7";
+      sha256 = "0js37zlgv37y61j4a2d46jh72xm5kxmpaiw0ya9v944bjpc386my";
+    };
+  }
+  {
+    goPackagePath = "github.com/ghodss/yaml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ghodss/yaml";
+      rev = "25d852aebe32c875e9c044af3eef9c7dc6bc777f";
+      sha256 = "1w9yq0bxzygc4qwkwwiy7k1k1yviaspcqqv18255k2xkjv5ipccz";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/uuid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/uuid";
+      rev = "c2e93f3ae59f2904160ceaab466009f965df46d6";
+      sha256 = "0zw8fvl6jqg0fmv6kmvhss0g4gkrbvgyvl2zgy5wdbdlgp4fja0h";
+    };
+  }
+  {
+    goPackagePath = "github.com/huandu/xstrings";
+    fetch = {
+      type = "git";
+      url = "https://github.com/huandu/xstrings";
+      rev = "8bbcf2f9ccb55755e748b7644164cd4bdce94c1d";
+      sha256 = "1ivvc95514z63k7cpz71l0dwlanffmsh1pijhaqmp41kfiby8rsx";
+    };
+  }
+  {
+    goPackagePath = "github.com/imdario/mergo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/imdario/mergo";
+      rev = "4c317f2286be3bd0c4f1a0e622edc6398ec4656d";
+      sha256 = "0bihha1qsgfjk14yv1hwddv3d8dzxpbjlaxwwyys6lhgxz1cr9h9";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "9756ffdc24725223350eb3266ffb92590d28f278";
+      sha256 = "0q7hxaaq6lp0v8qqzifvysl47z5rfdlrxkh3d29vsl3wyby3dxl8";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/alecthomas/kingpin.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/alecthomas/kingpin.v2";
+      rev = "947dcec5ba9c011838740e680966fd7087a71d0d";
+      sha256 = "0mndnv3hdngr3bxp7yxfd47cas4prv98sqw534mx7vp38gd88n5r";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "51d6538a90f86fe93ac480b35f37b2be17fef232";
+      sha256 = "01wj12jzsdqlnidpyjssmj0r4yavlqy7dwrg7adqd8dicjc4ncsa";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kops/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kops/default.nix
new file mode 100644
index 000000000000..e34f7e8412d7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kops/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, lib, buildGoPackage, fetchFromGitHub, go-bindata, installShellFiles }:
+
+let
+  goPackagePath = "k8s.io/kops";
+
+  generic = { version, sha256, ...}@attrs:
+    let attrs' = builtins.removeAttrs attrs ["version" "sha256"] ; in
+      buildGoPackage {
+        pname = "kops";
+        inherit version;
+
+        inherit goPackagePath;
+
+        src = fetchFromGitHub {
+          rev = version;
+          owner = "kubernetes";
+          repo = "kops";
+          inherit sha256;
+        };
+
+        nativeBuildInputs = [ go-bindata installShellFiles ];
+        subPackages = [ "cmd/kops" ];
+
+        buildFlagsArray = ''
+          -ldflags=
+              -X k8s.io/kops.Version=${version}
+              -X k8s.io/kops.GitVersion=${version}
+        '';
+
+        preBuild = ''
+          (cd go/src/k8s.io/kops
+           go-bindata -o upup/models/bindata.go -pkg models -prefix upup/models/ upup/models/...)
+        '';
+
+        postInstall = ''
+          for shell in bash zsh; do
+            $out/bin/kops completion $shell > kops.$shell
+            installShellCompletion kops.$shell
+          done
+        '';
+
+        meta = with stdenv.lib; {
+          description = "Easiest way to get a production Kubernetes up and running";
+          homepage = "https://github.com/kubernetes/kops";
+          license = licenses.asl20;
+          maintainers = with maintainers; [ offline zimbatm kampka ];
+          platforms = platforms.unix;
+        };
+      } // attrs';
+in rec {
+
+  mkKops = generic;
+
+  kops_1_15 = mkKops {
+    version = "1.15.3";
+    sha256 = "0pzgrsl61nw8pm3s032lj020fw13x3fpzlj7lknsnd581f0gg4df";
+  };
+
+  kops_1_16 = mkKops {
+    version = "1.16.3";
+    sha256 = "01j7r89vim12wgb2dv6p2pib8wj2daain179cawlyb5kjyyb3jnq";
+  };
+
+  kops_1_17 = mkKops {
+    version = "1.17.0";
+    sha256 = "175fi7pdzncqyv2gyaf96rn96zaywlyqrb6669n42faxilhyjbw7";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kube-router/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kube-router/default.nix
new file mode 100644
index 000000000000..cd946284fa77
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kube-router/default.nix
@@ -0,0 +1,31 @@
+{ lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "kube-router";
+  version = "0.4.0";
+
+  goPackagePath = "github.com/cloudnativelabs/kube-router";
+
+  src = fetchFromGitHub {
+    owner = "cloudnativelabs";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1g1y3l87a4il9g2yrl1ryx8xfd4x220azxhr3rxm5l9vhnnjwswa";
+  };
+
+  buildFlagsArray = ''
+    -ldflags=
+    -X
+    ${goPackagePath}/pkg/cmd.version=${version}
+    -X
+    ${goPackagePath}/pkg/cmd.buildDate=Nix
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.kube-router.io/";
+    description = "All-in-one router, firewall and service proxy for Kubernetes";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ colemickens johanot ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kube3d/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kube3d/default.nix
new file mode 100644
index 000000000000..c6ae0629d7c6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kube3d/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "kube3d";
+  version = "1.7.0";
+  k3sVersion = "1.17.3-k3s1";
+
+  goPackagePath = "github.com/rancher/k3d";
+
+  src = fetchFromGitHub {
+    owner  = "rancher";
+    repo   = "k3d";
+    rev    = "v${version}";
+    sha256 = "0aij2l7zmg4cxbw7pwf7ddc64di25hpjvbmp1madhz9q28rwfa9w";
+  };
+
+  buildFlagsArray = ''
+    -ldflags=
+      -w -s
+      -X github.com/rancher/k3d/version.Version=${version}
+      -X github.com/rancher/k3d/version.K3sVersion=v${k3sVersion}
+  '';
+
+  vendorSha256 = null;
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/rancher/k3d";
+    description = "A helper to run k3s (Lightweight Kubernetes. 5 less than k8s) in a docker container";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ kuznero jlesquembre ngerstle ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubecfg/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kubecfg/default.nix
new file mode 100644
index 000000000000..b8bef9ecc052
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubecfg/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildGoPackage, fetchFromGitHub, ... }:
+
+let version = "0.16.0"; in
+
+buildGoPackage {
+  pname = "kubecfg";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "bitnami";
+    repo = "kubecfg";
+    rev = "v${version}";
+    sha256 = "1ipw7r9fyqbh1bjvk7ifmj3skh799ly90y4ph37r8mqk1wb92rz4";
+  };
+
+  goPackagePath = "github.com/bitnami/kubecfg";
+
+  meta = {
+    description = "A tool for managing Kubernetes resources as code";
+    homepage = "https://github.com/bitnami/kubecfg";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ benley ];
+    platforms = lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubectl/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kubectl/default.nix
new file mode 100644
index 000000000000..fed40523a9b7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubectl/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, kubernetes }:
+
+stdenv.mkDerivation {
+  name = "kubectl-${kubernetes.version}";
+
+  # kubectl is currently part of the main distribution but will eventially be
+  # split out (see homepage)
+  src = kubernetes;
+
+  outputs = [ "out" "man" ];
+
+  installPhase = ''
+    mkdir -p \
+      "$out/bin" \
+      "$out/share/bash-completion/completions" \
+      "$out/share/zsh/site-functions" \
+      "$man/share/man/man1"
+
+    cp bin/kubectl $out/bin/kubectl
+
+    cp "${kubernetes.man}/share/man/man1"/kubectl* "$man/share/man/man1"
+
+    $out/bin/kubectl completion bash > $out/share/bash-completion/completions/kubectl
+    $out/bin/kubectl completion zsh > $out/share/zsh/site-functions/_kubectl
+  '';
+
+  meta = kubernetes.meta // {
+    description = "Kubernetes CLI";
+    homepage = "https://github.com/kubernetes/kubectl";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubeless/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kubeless/default.nix
new file mode 100644
index 000000000000..5b1f12452469
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubeless/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "kubeless";
+  version = "1.0.6";
+
+  src = fetchFromGitHub {
+    owner = "kubeless";
+    repo = "kubeless";
+    rev = "v${version}";
+    sha256 = "1fcdyd1jf0yibfx9jc16m0vmazm2jymps92llh3vh5zqd36bxbyd";
+  };
+
+  goPackagePath = "github.com/kubeless/kubeless";
+
+  subPackages = [ "cmd/kubeless" ];
+
+  buildFlagsArray = ''
+    -ldflags=-X github.com/kubeless/kubeless/pkg/version.Version=${version}
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://kubeless.io";
+    description = "The Kubernetes Native Serverless Framework";
+    license = licenses.asl20;
+    maintainers = with maintainers; [];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubernetes/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kubernetes/default.nix
new file mode 100644
index 000000000000..d1dbac56a1ec
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubernetes/default.nix
@@ -0,0 +1,79 @@
+{ stdenv, lib, fetchFromGitHub, removeReferencesTo, which, go, go-bindata, makeWrapper, rsync
+, components ? [
+    "cmd/kubeadm"
+    "cmd/kubectl"
+    "cmd/kubelet"
+    "cmd/kube-apiserver"
+    "cmd/kube-controller-manager"
+    "cmd/kube-proxy"
+    "cmd/kube-scheduler"
+    "test/e2e/e2e.test"
+  ]
+}:
+
+with lib;
+
+stdenv.mkDerivation rec {
+  pname = "kubernetes";
+  version = "1.18.3";
+
+  src = fetchFromGitHub {
+    owner = "kubernetes";
+    repo = "kubernetes";
+    rev = "v${version}";
+    sha256 = "01r6yym74x8ysvs4i23082nm8maisg6ipy9h41y4h8glvnpha0h8";
+  };
+
+  nativeBuildInputs = [ removeReferencesTo makeWrapper which go rsync go-bindata ];
+
+  outputs = ["out" "man" "pause"];
+
+  postPatch = ''
+    # go env breaks the sandbox
+    substituteInPlace "hack/lib/golang.sh" \
+      --replace 'echo "$(go env GOHOSTOS)/$(go env GOHOSTARCH)"' 'echo "${go.GOOS}/${go.GOARCH}"'
+
+    substituteInPlace "hack/update-generated-docs.sh" --replace "make" "make SHELL=${stdenv.shell}"
+    # hack/update-munge-docs.sh only performs some tests on the documentation.
+    # They broke building k8s; disabled for now.
+    echo "true" > "hack/update-munge-docs.sh"
+
+    patchShebangs ./hack
+  '';
+
+  WHAT=concatStringsSep " " components;
+
+  postBuild = ''
+    ./hack/update-generated-docs.sh
+    (cd build/pause && cc pause.c -o pause)
+  '';
+
+  installPhase = ''
+    mkdir -p "$out/bin" "$out/share/bash-completion/completions" "$out/share/zsh/site-functions" "$man/share/man" "$pause/bin"
+
+    cp _output/local/go/bin/* "$out/bin/"
+    cp build/pause/pause "$pause/bin/pause"
+    cp -R docs/man/man1 "$man/share/man"
+
+    cp cluster/addons/addon-manager/kube-addons.sh $out/bin/kube-addons
+    patchShebangs $out/bin/kube-addons
+    wrapProgram $out/bin/kube-addons --set "KUBECTL_BIN" "$out/bin/kubectl"
+
+    cp ${./mk-docker-opts.sh} $out/bin/mk-docker-opts.sh
+
+    $out/bin/kubectl completion bash > $out/share/bash-completion/completions/kubectl
+    $out/bin/kubectl completion zsh > $out/share/zsh/site-functions/_kubectl
+  '';
+
+  preFixup = ''
+    find $out/bin $pause/bin -type f -exec remove-references-to -t ${go} '{}' +
+  '';
+
+  meta = {
+    description = "Production-Grade Container Scheduling and Management";
+    license = licenses.asl20;
+    homepage = "https://kubernetes.io";
+    maintainers = with maintainers; [johanot offline saschagrunert];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubernetes/mk-docker-opts.sh b/nixpkgs/pkgs/applications/networking/cluster/kubernetes/mk-docker-opts.sh
new file mode 100755
index 000000000000..22a459f51349
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubernetes/mk-docker-opts.sh
@@ -0,0 +1,113 @@
+#!/usr/bin/env bash
+
+# Copyright 2014 The Kubernetes Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Generate Docker daemon options based on flannel env file.
+
+# exit on any error
+set -e
+
+usage() {
+  echo "$0 [-f FLANNEL-ENV-FILE] [-d DOCKER-ENV-FILE] [-i] [-c] [-m] [-k COMBINED-KEY]
+
+Generate Docker daemon options based on flannel env file
+OPTIONS:
+    -f  Path to flannel env file. Defaults to /run/flannel/subnet.env
+    -d  Path to Docker env file to write to. Defaults to /run/docker_opts.env
+    -i  Output each Docker option as individual var. e.g. DOCKER_OPT_MTU=1500
+    -c  Output combined Docker options into DOCKER_OPTS var
+    -k  Set the combined options key to this value (default DOCKER_OPTS=)
+    -m  Do not output --ip-masq (useful for older Docker version)
+" >/dev/stderr
+  exit 1
+}
+
+flannel_env="/run/flannel/subnet.env"
+docker_env="/run/docker_opts.env"
+combined_opts_key="DOCKER_OPTS"
+indiv_opts=false
+combined_opts=false
+ipmasq=true
+val=""
+
+while getopts "f:d:icmk:" opt; do
+  case $opt in
+    f)
+      flannel_env=$OPTARG
+      ;;
+    d)
+      docker_env=$OPTARG
+      ;;
+    i)
+      indiv_opts=true
+      ;;
+    c)
+      combined_opts=true
+      ;;
+    m)
+      ipmasq=false
+      ;;
+    k)
+      combined_opts_key=$OPTARG
+      ;;
+    \?)
+      usage
+      ;;
+  esac
+done
+
+if [[ $indiv_opts = false ]] && [[ $combined_opts = false ]]; then
+  indiv_opts=true
+  combined_opts=true
+fi
+
+if [[ -f "${flannel_env}" ]]; then
+  source "${flannel_env}"
+fi
+
+if [[ -n "$FLANNEL_SUBNET" ]]; then
+  # shellcheck disable=SC2034  # Variable name referenced in OPT_LOOP below
+  DOCKER_OPT_BIP="--bip=$FLANNEL_SUBNET"
+fi
+
+if [[ -n "$FLANNEL_MTU" ]]; then
+  # shellcheck disable=SC2034  # Variable name referenced in OPT_LOOP below
+  DOCKER_OPT_MTU="--mtu=$FLANNEL_MTU"
+fi
+
+if [[ "$FLANNEL_IPMASQ" = true ]] && [[ $ipmasq = true ]]; then
+  # shellcheck disable=SC2034  # Variable name referenced in OPT_LOOP below
+  DOCKER_OPT_IPMASQ="--ip-masq=false"
+fi
+
+eval docker_opts="\$${combined_opts_key}"
+docker_opts+=" "
+
+echo -n "" >"${docker_env}"
+
+# OPT_LOOP
+for opt in $(compgen -v DOCKER_OPT_); do
+  eval val=\$"${opt}"
+
+  if [[ "$indiv_opts" = true ]]; then
+    echo "$opt=\"$val\"" >>"${docker_env}"
+  fi
+
+  docker_opts+="$val "
+done
+
+if [[ "$combined_opts" = true ]]; then
+  echo "${combined_opts_key}=\"${docker_opts}\"" >>"${docker_env}"
+fi
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubernix/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kubernix/default.nix
new file mode 100644
index 000000000000..2251b12e499a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubernix/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub, rustPlatform }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "kubernix";
+  version = "0.2.0";
+
+  src = fetchFromGitHub {
+    owner = "saschagrunert";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "04dzfdzjwcwwaw9min322g30q0saxpq5kqzld4f22fmk820ki6gp";
+  };
+
+  cargoSha256 = "17agwqx7nhzi124yq1s6zpqb227drrhp9c11r3jbicc08dz88bwg";
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Single dependency Kubernetes clusters for local testing, experimenting and development";
+    homepage = "https://github.com/saschagrunert/kubernix";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ saschagrunert ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubeseal/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kubeseal/default.nix
new file mode 100644
index 000000000000..c739be763243
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubeseal/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "kubeseal";
+  version = "0.12.4";
+
+  src = fetchFromGitHub {
+    owner = "bitnami-labs";
+    repo = "sealed-secrets";
+    rev = "v${version}";
+    sha256 = "1abm63fb40zky5i97wm6h8ifmdf6i71ws9y7217hv2rnja37f4zd";
+  };
+
+  vendorSha256 = null;
+
+  subPackages = [ "cmd/kubeseal" ];
+
+  buildFlagsArray = [ "-ldflags=-s -w -X main.VERSION=${version}" ];
+
+  meta = with lib; {
+    description = "A Kubernetes controller and tool for one-way encrypted Secrets";
+    homepage = "https://github.com/bitnami-labs/sealed-secrets";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ groodt ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubetail/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kubetail/default.nix
new file mode 100644
index 000000000000..114c5f5af152
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubetail/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, lib, ... }:
+
+stdenv.mkDerivation rec {
+  pname = "kubetail";
+  version = "1.6.10";
+
+  src = fetchFromGitHub {
+    owner = "johanhaleby";
+    repo = "kubetail";
+    rev = version;
+    sha256 = "0bg872n9fs6pl03rmjny9sgby718yznx9jwi5rx3hi4km3ha9j0b";
+  };
+
+  installPhase = ''
+    install -Dm755 kubetail                 "$out/bin/kubetail"
+    install -Dm755 completion/kubetail.bash "$out/share/bash-completion/completions/kubetail"
+    install -Dm755 completion/kubetail.fish "$out/share/fish/vendor_completions.d/kubetail.fish"
+    install -Dm755 completion/kubetail.zsh  "$out/share/zsh/site-functions/_kubetail"
+  '';
+
+  meta = with lib; {
+    description = "Bash script to tail Kubernetes logs from multiple pods at the same time";
+    longDescription = ''
+      Bash script that enables you to aggregate (tail/follow) logs from
+      multiple pods into one stream. This is the same as running "kubectl logs
+      -f " but for multiple pods.
+    '';
+    homepage = "https://github.com/johanhaleby/kubetail";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubeval/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kubeval/default.nix
new file mode 100644
index 000000000000..10d75435e421
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubeval/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, lib, fetchFromGitHub, buildGoModule, makeWrapper }:
+
+buildGoModule rec {
+  pname = "kubeval";
+  version = "0.15.0";
+
+  src = fetchFromGitHub {
+    owner = "instrumenta";
+    repo = "kubeval";
+    rev = "${version}";
+    sha256 = "05li0qv4q7fy2lr50r6c1r8dhx00jb1g01qmgc72a9zqp378yiq0";
+  };
+
+  vendorSha256 = "1kpwvi84i3h1yjprd6m6hn8l9j235931871y3qk9cl0g8q0hv9ja";
+
+  meta = with lib; {
+    description = "Validate your Kubernetes configuration files";
+    homepage = "https://github.com/instrumenta/kubeval";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ johanot nicknovitski ];
+    platforms = platforms.all;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubeval/schema.nix b/nixpkgs/pkgs/applications/networking/cluster/kubeval/schema.nix
new file mode 100644
index 000000000000..370fe9a1cd82
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubeval/schema.nix
@@ -0,0 +1,15 @@
+{ fetchFromGitHub }:
+# To cache schema as a package so network calls are not
+# necessary at runtime, allowing use in package builds you can use the following:
+
+#   KUBEVAL_SCHEMA_LOCATION="file:///${kubeval-schema}";
+(fetchFromGitHub {
+  name = "kubeval-schema";
+  owner = "instrumenta";
+  repo = "kubernetes-json-schema";
+  rev = "6a498a60dc68c5f6a1cc248f94b5cd1e7241d699";
+  sha256 = "1y9m2ma3n4h7sf2lg788vjw6pkfyi0fa7gzc870faqv326n6x2jr";
+}) // {
+  # the schema is huge (> 7GB), we don't get any benefit from building int on hydra
+  meta.hydraPlatforms = [];
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/linkerd/default.nix b/nixpkgs/pkgs/applications/networking/cluster/linkerd/default.nix
new file mode 100644
index 000000000000..331cef0444cd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/linkerd/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub, buildGoModule }:
+
+buildGoModule {
+  pname = "linkerd-unstablle";
+  version = "2020-05-01";
+
+  src = fetchFromGitHub {
+    owner = "linkerd";
+    repo = "linkerd2";
+    rev = "9e9f3bb1e2aeab8cf20f98f5cad159bbb6f24883";
+    sha256 = "1pvj31wz1klwhcqga1m8kixdqsxwmppp9ix6r3wpp4dwfig45fm0";
+  };
+
+  vendorSha256 = "0vls58ld50jca5yn73kvg3lx4z83cc7skky54a90pkbj737y58pz";
+
+  subPackages = [ "cli/cmd" ];
+
+  meta = with stdenv.lib; {
+    description = "A service mesh for Kubernetes and beyond.";
+    homepage = "https://linkerd.io/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ Gonzih ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/luigi/default.nix b/nixpkgs/pkgs/applications/networking/cluster/luigi/default.nix
new file mode 100644
index 000000000000..c6e2b7d85598
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/luigi/default.nix
@@ -0,0 +1,31 @@
+{ lib, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "luigi";
+  version = "3.0.0";
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "1km9fnq4pf0iqqcmz94idm0zb3l92zinz0bn6ip86xqhchafd4vf";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ dateutil tornado_4 python-daemon boto3 ];
+
+  # Requires tox, hadoop, and google cloud
+  doCheck = false;
+
+  # This enables accessing modules stored in cwd
+  makeWrapperArgs = ["--prefix PYTHONPATH . :"];
+
+  meta = with lib; {
+    description = "Python package that helps you build complex pipelines of batch jobs";
+    longDescription = ''
+      Luigi handles dependency resolution, workflow management, visualization,
+      handling failures, command line integration, and much more.
+    '';
+    homepage = "https://github.com/spotify/luigi";
+    changelog = "https://github.com/spotify/luigi/releases/tag/${version}";
+    license =  [ licenses.asl20 ];
+    maintainers = [ maintainers.bhipple ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/marathon/default.nix b/nixpkgs/pkgs/applications/networking/cluster/marathon/default.nix
new file mode 100644
index 000000000000..df571f4cf869
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/marathon/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, makeWrapper, jdk, mesos, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "marathon";
+  version = "1.4.2";
+
+  src = fetchurl {
+    url = "https://downloads.mesosphere.com/marathon/v${version}/marathon-${version}.tgz";
+    sha256 = "6eab65a95c87a989e922aca2b49ba872b50a94e46a8fd4831d1ab41f319d6932";
+  };
+
+  buildInputs = [ makeWrapper jdk mesos ];
+
+  installPhase = ''
+    mkdir -p $out/{bin,libexec/marathon}
+    cp target/scala-*/marathon*.jar $out/libexec/marathon/${pname}-${version}.jar
+
+    makeWrapper ${jdk.jre}/bin/java $out/bin/marathon \
+      --add-flags "-Xmx512m -jar $out/libexec/marathon/${pname}-${version}.jar" \
+      --set "MESOS_NATIVE_JAVA_LIBRARY" "$MESOS_NATIVE_JAVA_LIBRARY"
+    '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://mesosphere.github.io/marathon";
+    description = "Cluster-wide init and control system for services in cgroups or Docker containers";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ kamilchm pradeepchhetri ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/mesos/default.nix b/nixpkgs/pkgs/applications/networking/cluster/mesos/default.nix
new file mode 100644
index 000000000000..ac1feee5d72b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/mesos/default.nix
@@ -0,0 +1,263 @@
+{ stdenv, lib, makeWrapper, fetchurl, curl, sasl, openssh
+, unzip, gnutar, jdk, python, wrapPython
+, setuptools, boto, pythonProtobuf, apr, subversion, gzip
+, leveldb, glog, perf, utillinux, libnl, iproute, openssl, libevent
+, ethtool, coreutils, which, iptables, maven
+, bash, autoreconfHook
+, utf8proc, lz4
+, withJava ? !stdenv.isDarwin
+}:
+
+let
+  mavenRepo = import ./mesos-deps.nix { inherit stdenv curl; };
+  # `tar -z` requires gzip on $PATH, so wrap tar.
+  # At some point, we should try to patch mesos so we add gzip to the PATH when
+  # tar is invoked. I think that only needs to be done here:
+  #   src/common/command_utils.cpp
+  # https://github.com/NixOS/nixpkgs/issues/13783
+  tarWithGzip = lib.overrideDerivation gnutar (oldAttrs: {
+    # Original builder is bash 4.3.42 from bootstrap tools, too old for makeWrapper.
+    builder = "${bash}/bin/bash";
+    buildInputs = (oldAttrs.buildInputs or []) ++ [ makeWrapper ];
+    postInstall = (oldAttrs.postInstall or "") + ''
+      wrapProgram $out/bin/tar --prefix PATH ":" "${gzip}/bin"
+    '';
+  });
+
+in stdenv.mkDerivation rec {
+  version = "1.4.1";
+  pname = "mesos";
+
+  enableParallelBuilding = true;
+  dontDisableStatic = true;
+
+  src = fetchurl {
+    url = "mirror://apache/mesos/${version}/${pname}-${version}.tar.gz";
+    sha256 = "1c7l0rim9ija913gpppz2mcms08ywyqhlzbbspqsi7wwfdd7jwsr";
+  };
+
+  patches = [
+    # https://reviews.apache.org/r/36610/
+    # TODO: is this still needed?
+    ./rb36610.patch
+
+    # see https://github.com/cstrahan/mesos/tree/nixos-${version}
+    ./nixos.patch
+  ];
+  nativeBuildInputs = [
+    autoreconfHook
+  ];
+  buildInputs = [
+    makeWrapper curl sasl
+    python wrapPython boto setuptools leveldb
+    subversion apr glog openssl libevent
+    utf8proc lz4
+  ] ++ lib.optionals stdenv.isLinux [
+    libnl
+  ] ++ lib.optionals withJava [
+    jdk maven
+  ];
+
+  propagatedBuildInputs = [
+    pythonProtobuf
+  ];
+
+  NIX_CFLAGS_COMPILE = "-Wno-error=format-overflow -Wno-error=class-memaccess";
+
+  preConfigure = ''
+    # https://issues.apache.org/jira/browse/MESOS-6616
+    configureFlagsArray+=(
+      "CXXFLAGS=-O2 -Wno-error=strict-aliasing"
+    )
+
+    substituteInPlace 3rdparty/stout/include/stout/jsonify.hpp \
+      --replace '<xlocale.h>' '<locale.h>'
+    # Fix cases where makedev(),major(),minor() are referenced through
+    # <sys/types.h> instead of <sys/sysmacros.h>
+    sed 1i'#include <sys/sysmacros.h>' -i src/linux/fs.cpp
+    sed 1i'#include <sys/sysmacros.h>' -i src/slave/containerizer/mesos/isolators/gpu/isolator.cpp
+    substituteInPlace 3rdparty/stout/include/stout/os/posix/chown.hpp \
+      --subst-var-by chown ${coreutils}/bin/chown
+
+    substituteInPlace 3rdparty/stout/Makefile.am \
+      --replace "-lprotobuf" \
+                "${pythonProtobuf.protobuf}/lib/libprotobuf.a"
+
+    substituteInPlace 3rdparty/stout/include/stout/os/posix/fork.hpp \
+      --subst-var-by sh ${bash}/bin/bash
+
+    substituteInPlace 3rdparty/stout/include/stout/posix/os.hpp \
+      --subst-var-by tar ${tarWithGzip}/bin/tar
+
+    substituteInPlace src/cli/mesos-scp \
+      --subst-var-by scp ${openssh}/bin/scp
+
+    substituteInPlace src/common/command_utils.cpp \
+      --subst-var-by curl      ${curl}/bin/curl \
+      --subst-var-by gzip      ${gzip}/bin/gzip \
+      --subst-var-by sha512sum ${coreutils}/bin/sha512sum \
+      --subst-var-by tar       ${tarWithGzip}/bin/tar
+
+    substituteInPlace src/launcher/fetcher.cpp \
+      --subst-var-by cp    ${coreutils}/bin/cp \
+      --subst-var-by gzip  ${gzip}/bin/gzip \
+      --subst-var-by tar   ${tarWithGzip}/bin/tar \
+      --subst-var-by unzip ${unzip}/bin/unzip
+
+    substituteInPlace src/python/cli/src/mesos/cli.py \
+      --subst-var-by mesos-resolve $out/bin/mesos-resolve
+
+    substituteInPlace src/python/native_common/ext_modules.py.in \
+      --replace "-lprotobuf" \
+                "${pythonProtobuf.protobuf}/lib/libprotobuf.a"
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/gpu/volume.cpp \
+      --subst-var-by cp    ${coreutils}/bin/cp \
+      --subst-var-by which ${which}/bin/which
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/posix/disk.cpp \
+      --subst-var-by du ${coreutils}/bin/du
+
+    substituteInPlace src/slave/containerizer/mesos/provisioner/backends/copy.cpp \
+      --subst-var-by cp ${coreutils}/bin/cp \
+      --subst-var-by rm ${coreutils}/bin/rm
+
+    substituteInPlace src/uri/fetchers/copy.cpp \
+      --subst-var-by cp ${coreutils}/bin/cp
+
+    substituteInPlace src/uri/fetchers/curl.cpp \
+      --subst-var-by curl ${curl}/bin/curl
+
+    substituteInPlace src/uri/fetchers/docker.cpp \
+      --subst-var-by curl ${curl}/bin/curl
+
+    substituteInPlace src/Makefile.am \
+      --subst-var-by mavenRepo ${mavenRepo} \
+      --replace "-lprotobuf" \
+                "${pythonProtobuf.protobuf}/lib/libprotobuf.a"
+
+  '' + lib.optionalString stdenv.isLinux ''
+
+    substituteInPlace src/linux/perf.cpp \
+      --subst-var-by perf ${perf}/bin/perf
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp \
+      --subst-var-by mount ${utillinux}/bin/mount
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/filesystem/linux.cpp \
+      --subst-var-by mount ${utillinux}/bin/mount
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/filesystem/shared.cpp \
+      --subst-var-by mount ${utillinux}/bin/mount
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/gpu/isolator.cpp \
+      --subst-var-by mount ${utillinux}/bin/mount
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/namespaces/pid.cpp \
+      --subst-var-by mount ${utillinux}/bin/mount
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/network/cni/cni.cpp \
+      --subst-var-by mount ${utillinux}/bin/mount
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp \
+      --subst-var-by iptables ${iptables}/bin/iptables
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/network/port_mapping.cpp \
+      --subst-var-by ethtool ${ethtool}/sbin/ethtool \
+      --subst-var-by ip      ${iproute}/bin/ip \
+      --subst-var-by mount   ${utillinux}/bin/mount \
+      --subst-var-by tc      ${iproute}/bin/tc
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/volume/image.cpp \
+      --subst-var-by mount   ${utillinux}/bin/mount
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp \
+      --subst-var-by mount   ${utillinux}/bin/mount
+  '';
+
+  configureFlags = [
+    "--sbindir=\${out}/bin"
+    "--with-apr=${apr.dev}"
+    "--with-svn=${subversion.dev}"
+    "--with-leveldb=${leveldb}"
+    "--with-glog=${glog}"
+    "--enable-optimize"
+    "--disable-python-dependency-install"
+    "--enable-ssl"
+    "--with-ssl=${openssl.dev}"
+    "--enable-libevent"
+    "--with-libevent=${libevent.dev}"
+    "--with-protobuf=${pythonProtobuf.protobuf}"
+    "PROTOBUF_JAR=${mavenRepo}/com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.jar"
+    (if withJava then "--enable-java" else "--disable-java")
+  ] ++ lib.optionals stdenv.isLinux [
+    "--with-network-isolator"
+    "--with-nl=${libnl.dev}"
+  ];
+
+  postInstall = ''
+    rm -rf $out/var
+    rm $out/bin/*.sh
+
+    # Inspired by: pkgs/development/python-modules/generic/default.nix
+    pushd src/python
+    mkdir -p $out/lib/${python.libPrefix}/site-packages
+    export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH"
+    ${python}/bin/${python.executable} setup.py install \
+      --install-lib=$out/lib/${python.libPrefix}/site-packages \
+      --old-and-unmanageable \
+      --prefix="$out"
+    rm -f "$out/lib/${python.libPrefix}"/site-packages/site.py*
+    popd
+
+    # optional python dependency for mesos cli
+    pushd src/python/cli
+    ${python}/bin/${python.executable} setup.py install \
+      --install-lib=$out/lib/${python.libPrefix}/site-packages \
+      --old-and-unmanageable \
+      --prefix="$out"
+    popd
+  '' + stdenv.lib.optionalString withJava ''
+    mkdir -p $out/share/java
+    cp src/java/target/mesos-*.jar $out/share/java
+
+    MESOS_NATIVE_JAVA_LIBRARY=$out/lib/libmesos${stdenv.hostPlatform.extensions.sharedLibrary}
+
+    mkdir -p $out/nix-support
+    touch $out/nix-support/setup-hook
+    echo "export MESOS_NATIVE_JAVA_LIBRARY=$MESOS_NATIVE_JAVA_LIBRARY" >> $out/nix-support/setup-hook
+    echo "export MESOS_NATIVE_LIBRARY=$MESOS_NATIVE_JAVA_LIBRARY" >> $out/nix-support/setup-hook
+  '';
+
+  postFixup = ''
+    if test -e $out/nix-support/propagated-build-inputs; then
+      ln -s $out/nix-support/propagated-build-inputs $out/nix-support/propagated-user-env-packages
+    fi
+
+    for inputsfile in propagated-build-inputs propagated-native-build-inputs; do
+      if test -e $out/nix-support/$inputsfile; then
+        createBuildInputsPth $inputsfile "$(cat $out/nix-support/$inputsfile)"
+      fi
+    done
+
+    for f in $out/libexec/mesos/python/mesos/*.py; do
+      ${python}/bin/${python.executable} -c "import py_compile; py_compile.compile('$f')"
+    done
+
+    # wrap the python programs
+    for prog in mesos-cat mesos-ps mesos-scp mesos-tail; do
+      wrapProgram "$out/bin/$prog" \
+        --prefix PYTHONPATH ":" "$out/lib/${python.libPrefix}/site-packages"
+      true
+    done
+  '';
+
+  meta = with lib; {
+    homepage    = "http://mesos.apache.org";
+    license     = licenses.asl20;
+    description = "A cluster manager that provides efficient resource isolation and sharing across distributed applications, or frameworks";
+    maintainers = with maintainers; [ cstrahan offline ];
+    platforms   = platforms.unix;
+    broken = true; # Broken since 2019-10-22 (https://hydra.nixos.org/build/115475123)
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/mesos/fetch-mesos-deps.sh b/nixpkgs/pkgs/applications/networking/cluster/mesos/fetch-mesos-deps.sh
new file mode 100644
index 000000000000..1e2840017b34
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/mesos/fetch-mesos-deps.sh
@@ -0,0 +1,1359 @@
+source $stdenv/setup
+header "fetching Apache Mesos maven repo"
+
+function fetchArtifact {
+  repoPath="$1"
+  echo "Fetching $repoPath"
+  url="https://repo.maven.apache.org/maven2/$repoPath"
+  mkdir -p $(dirname $out/$repoPath)
+  curl --fail --location --insecure --retry 3 --max-redirs 20 "$url" --output "$out/$repoPath"
+}
+
+fetchArtifact org/apache/apache/11/apache-11.pom
+fetchArtifact org/apache/apache/11/apache-11.pom.sha1
+fetchArtifact org/apache/apache/10/apache-10.pom
+fetchArtifact org/apache/apache/10/apache-10.pom.sha1
+fetchArtifact org/apache/apache/7/apache-7.pom
+fetchArtifact org/apache/apache/7/apache-7.pom.sha1
+fetchArtifact org/apache/apache/9/apache-9.pom
+fetchArtifact org/apache/apache/9/apache-9.pom.sha1
+fetchArtifact org/apache/apache/13/apache-13.pom
+fetchArtifact org/apache/apache/13/apache-13.pom.sha1
+fetchArtifact org/apache/apache/3/apache-3.pom
+fetchArtifact org/apache/apache/3/apache-3.pom.sha1
+fetchArtifact org/apache/apache/6/apache-6.pom
+fetchArtifact org/apache/apache/6/apache-6.pom.sha1
+fetchArtifact org/apache/apache/4/apache-4.pom
+fetchArtifact org/apache/apache/4/apache-4.pom.sha1
+fetchArtifact org/apache/apache/2/apache-2.pom
+fetchArtifact org/apache/apache/2/apache-2.pom.sha1
+fetchArtifact org/apache/apache/5/apache-5.pom
+fetchArtifact org/apache/apache/5/apache-5.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-remote-resources-plugin/1.3/maven-remote-resources-plugin-1.3.pom
+fetchArtifact org/apache/maven/plugins/maven-remote-resources-plugin/1.3/maven-remote-resources-plugin-1.3.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-remote-resources-plugin/1.3/maven-remote-resources-plugin-1.3.jar
+fetchArtifact org/apache/maven/plugins/maven-remote-resources-plugin/1.3/maven-remote-resources-plugin-1.3.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-plugins/22/maven-plugins-22.pom
+fetchArtifact org/apache/maven/plugins/maven-plugins/22/maven-plugins-22.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-plugins/18/maven-plugins-18.pom
+fetchArtifact org/apache/maven/plugins/maven-plugins/18/maven-plugins-18.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-plugins/19/maven-plugins-19.pom
+fetchArtifact org/apache/maven/plugins/maven-plugins/19/maven-plugins-19.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-plugins/24/maven-plugins-24.pom
+fetchArtifact org/apache/maven/plugins/maven-plugins/24/maven-plugins-24.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-site-plugin/3.1/maven-site-plugin-3.1.pom
+fetchArtifact org/apache/maven/plugins/maven-site-plugin/3.1/maven-site-plugin-3.1.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-site-plugin/3.1/maven-site-plugin-3.1.jar
+fetchArtifact org/apache/maven/plugins/maven-site-plugin/3.1/maven-site-plugin-3.1.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-source-plugin/2.1.2/maven-source-plugin-2.1.2.pom
+fetchArtifact org/apache/maven/plugins/maven-source-plugin/2.1.2/maven-source-plugin-2.1.2.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-source-plugin/2.1.2/maven-source-plugin-2.1.2.jar
+fetchArtifact org/apache/maven/plugins/maven-source-plugin/2.1.2/maven-source-plugin-2.1.2.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-gpg-plugin/1.4/maven-gpg-plugin-1.4.pom
+fetchArtifact org/apache/maven/plugins/maven-gpg-plugin/1.4/maven-gpg-plugin-1.4.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-gpg-plugin/1.4/maven-gpg-plugin-1.4.jar
+fetchArtifact org/apache/maven/plugins/maven-gpg-plugin/1.4/maven-gpg-plugin-1.4.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom
+fetchArtifact org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.jar
+fetchArtifact org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom
+fetchArtifact org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar
+fetchArtifact org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-compiler-plugin/2.5.1/maven-compiler-plugin-2.5.1.pom
+fetchArtifact org/apache/maven/plugins/maven-compiler-plugin/2.5.1/maven-compiler-plugin-2.5.1.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-compiler-plugin/2.5.1/maven-compiler-plugin-2.5.1.jar
+fetchArtifact org/apache/maven/plugins/maven-compiler-plugin/2.5.1/maven-compiler-plugin-2.5.1.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-surefire-plugin/2.12/maven-surefire-plugin-2.12.pom
+fetchArtifact org/apache/maven/plugins/maven-surefire-plugin/2.12/maven-surefire-plugin-2.12.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-surefire-plugin/2.12/maven-surefire-plugin-2.12.jar
+fetchArtifact org/apache/maven/plugins/maven-surefire-plugin/2.12/maven-surefire-plugin-2.12.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-jar-plugin/2.4/maven-jar-plugin-2.4.pom
+fetchArtifact org/apache/maven/plugins/maven-jar-plugin/2.4/maven-jar-plugin-2.4.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-jar-plugin/2.4/maven-jar-plugin-2.4.jar
+fetchArtifact org/apache/maven/plugins/maven-jar-plugin/2.4/maven-jar-plugin-2.4.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-javadoc-plugin/2.8.1/maven-javadoc-plugin-2.8.1.pom
+fetchArtifact org/apache/maven/plugins/maven-javadoc-plugin/2.8.1/maven-javadoc-plugin-2.8.1.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-javadoc-plugin/2.8.1/maven-javadoc-plugin-2.8.1.jar
+fetchArtifact org/apache/maven/plugins/maven-javadoc-plugin/2.8.1/maven-javadoc-plugin-2.8.1.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-shade-plugin/2.2/maven-shade-plugin-2.2.pom
+fetchArtifact org/apache/maven/plugins/maven-shade-plugin/2.2/maven-shade-plugin-2.2.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-shade-plugin/2.2/maven-shade-plugin-2.2.jar
+fetchArtifact org/apache/maven/plugins/maven-shade-plugin/2.2/maven-shade-plugin-2.2.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.pom
+fetchArtifact org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.jar
+fetchArtifact org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.jar.sha1
+fetchArtifact org/apache/maven/maven-parent/21/maven-parent-21.pom
+fetchArtifact org/apache/maven/maven-parent/21/maven-parent-21.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/16/maven-parent-16.pom
+fetchArtifact org/apache/maven/maven-parent/16/maven-parent-16.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/19/maven-parent-19.pom
+fetchArtifact org/apache/maven/maven-parent/19/maven-parent-19.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/23/maven-parent-23.pom
+fetchArtifact org/apache/maven/maven-parent/23/maven-parent-23.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/5/maven-parent-5.pom
+fetchArtifact org/apache/maven/maven-parent/5/maven-parent-5.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/13/maven-parent-13.pom
+fetchArtifact org/apache/maven/maven-parent/13/maven-parent-13.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/7/maven-parent-7.pom
+fetchArtifact org/apache/maven/maven-parent/7/maven-parent-7.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/6/maven-parent-6.pom
+fetchArtifact org/apache/maven/maven-parent/6/maven-parent-6.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/8/maven-parent-8.pom
+fetchArtifact org/apache/maven/maven-parent/8/maven-parent-8.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/20/maven-parent-20.pom
+fetchArtifact org/apache/maven/maven-parent/20/maven-parent-20.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/10/maven-parent-10.pom
+fetchArtifact org/apache/maven/maven-parent/10/maven-parent-10.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/15/maven-parent-15.pom
+fetchArtifact org/apache/maven/maven-parent/15/maven-parent-15.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/11/maven-parent-11.pom
+fetchArtifact org/apache/maven/maven-parent/11/maven-parent-11.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/9/maven-parent-9.pom
+fetchArtifact org/apache/maven/maven-parent/9/maven-parent-9.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire/2.12/surefire-2.12.pom
+fetchArtifact org/apache/maven/surefire/surefire/2.12/surefire-2.12.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire-booter/2.12/surefire-booter-2.12.pom
+fetchArtifact org/apache/maven/surefire/surefire-booter/2.12/surefire-booter-2.12.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire-booter/2.12/surefire-booter-2.12.jar
+fetchArtifact org/apache/maven/surefire/surefire-booter/2.12/surefire-booter-2.12.jar.sha1
+fetchArtifact org/apache/maven/surefire/surefire-api/2.12/surefire-api-2.12.pom
+fetchArtifact org/apache/maven/surefire/surefire-api/2.12/surefire-api-2.12.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire-api/2.12/surefire-api-2.12.jar
+fetchArtifact org/apache/maven/surefire/surefire-api/2.12/surefire-api-2.12.jar.sha1
+fetchArtifact org/apache/maven/surefire/maven-surefire-common/2.12/maven-surefire-common-2.12.pom
+fetchArtifact org/apache/maven/surefire/maven-surefire-common/2.12/maven-surefire-common-2.12.pom.sha1
+fetchArtifact org/apache/maven/surefire/maven-surefire-common/2.12/maven-surefire-common-2.12.jar
+fetchArtifact org/apache/maven/surefire/maven-surefire-common/2.12/maven-surefire-common-2.12.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.jar
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.1/maven-plugin-api-2.0.1.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.1/maven-plugin-api-2.0.1.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.jar
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/3.0/maven-plugin-api-3.0.pom
+fetchArtifact org/apache/maven/maven-plugin-api/3.0/maven-plugin-api-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/3.0/maven-plugin-api-3.0.jar
+fetchArtifact org/apache/maven/maven-plugin-api/3.0/maven-plugin-api-3.0.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.2.1/maven-plugin-api-2.2.1.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.2.1/maven-plugin-api-2.2.1.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.8/maven-plugin-api-2.0.8.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.8/maven-plugin-api-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.6/maven-2.0.6.pom
+fetchArtifact org/apache/maven/maven/2.0.6/maven-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.1/maven-2.0.1.pom
+fetchArtifact org/apache/maven/maven/2.0.1/maven-2.0.1.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.8/maven-2.0.8.pom
+fetchArtifact org/apache/maven/maven/2.0.8/maven-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0/maven-2.0.pom
+fetchArtifact org/apache/maven/maven/2.0/maven-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.9/maven-2.0.9.pom
+fetchArtifact org/apache/maven/maven/2.0.9/maven-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven/3.0/maven-3.0.pom
+fetchArtifact org/apache/maven/maven/3.0/maven-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven/2.2.1/maven-2.2.1.pom
+fetchArtifact org/apache/maven/maven/2.2.1/maven-2.2.1.pom.sha1
+fetchArtifact org/apache/maven/maven/2.2.0/maven-2.2.0.pom
+fetchArtifact org/apache/maven/maven/2.2.0/maven-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.2/maven-2.0.2.pom
+fetchArtifact org/apache/maven/maven/2.0.2/maven-2.0.2.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.5/maven-2.0.5.pom
+fetchArtifact org/apache/maven/maven/2.0.5/maven-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.6/maven-model-2.0.6.pom
+fetchArtifact org/apache/maven/maven-model/2.0.6/maven-model-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.6/maven-model-2.0.6.jar
+fetchArtifact org/apache/maven/maven-model/2.0.6/maven-model-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-model/2.0/maven-model-2.0.pom
+fetchArtifact org/apache/maven/maven-model/2.0/maven-model-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.pom
+fetchArtifact org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.jar
+fetchArtifact org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-model/3.0/maven-model-3.0.pom
+fetchArtifact org/apache/maven/maven-model/3.0/maven-model-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-model/3.0/maven-model-3.0.jar
+fetchArtifact org/apache/maven/maven-model/3.0/maven-model-3.0.jar.sha1
+fetchArtifact org/apache/maven/maven-model/2.2.1/maven-model-2.2.1.pom
+fetchArtifact org/apache/maven/maven-model/2.2.1/maven-model-2.2.1.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.8/maven-model-2.0.8.pom
+fetchArtifact org/apache/maven/maven-model/2.0.8/maven-model-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.2.0/maven-model-2.2.0.pom
+fetchArtifact org/apache/maven/maven-model/2.2.0/maven-model-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.5/maven-model-2.0.5.pom
+fetchArtifact org/apache/maven/maven-model/2.0.5/maven-model-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.6/maven-project-2.0.6.pom
+fetchArtifact org/apache/maven/maven-project/2.0.6/maven-project-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.6/maven-project-2.0.6.jar
+fetchArtifact org/apache/maven/maven-project/2.0.6/maven-project-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-project/2.0/maven-project-2.0.pom
+fetchArtifact org/apache/maven/maven-project/2.0/maven-project-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.pom
+fetchArtifact org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.jar
+fetchArtifact org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.8/maven-project-2.0.8.pom
+fetchArtifact org/apache/maven/maven-project/2.0.8/maven-project-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.2.0/maven-project-2.2.0.pom
+fetchArtifact org/apache/maven/maven-project/2.2.0/maven-project-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.2.0/maven-project-2.2.0.jar
+fetchArtifact org/apache/maven/maven-project/2.2.0/maven-project-2.2.0.jar.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.5/maven-project-2.0.5.pom
+fetchArtifact org/apache/maven/maven-project/2.0.5/maven-project-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.6/maven-settings-2.0.6.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.6/maven-settings-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.6/maven-settings-2.0.6.jar
+fetchArtifact org/apache/maven/maven-settings/2.0.6/maven-settings-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0/maven-settings-2.0.pom
+fetchArtifact org/apache/maven/maven-settings/2.0/maven-settings-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.9/maven-settings-2.0.9.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.9/maven-settings-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.9/maven-settings-2.0.9.jar
+fetchArtifact org/apache/maven/maven-settings/2.0.9/maven-settings-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-settings/3.0/maven-settings-3.0.pom
+fetchArtifact org/apache/maven/maven-settings/3.0/maven-settings-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/3.0/maven-settings-3.0.jar
+fetchArtifact org/apache/maven/maven-settings/3.0/maven-settings-3.0.jar.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.8/maven-settings-2.0.8.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.8/maven-settings-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.2.0/maven-settings-2.2.0.pom
+fetchArtifact org/apache/maven/maven-settings/2.2.0/maven-settings-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.5/maven-settings-2.0.5.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.5/maven-settings-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.6/maven-profile-2.0.6.pom
+fetchArtifact org/apache/maven/maven-profile/2.0.6/maven-profile-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.6/maven-profile-2.0.6.jar
+fetchArtifact org/apache/maven/maven-profile/2.0.6/maven-profile-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0/maven-profile-2.0.pom
+fetchArtifact org/apache/maven/maven-profile/2.0/maven-profile-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.9/maven-profile-2.0.9.pom
+fetchArtifact org/apache/maven/maven-profile/2.0.9/maven-profile-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.9/maven-profile-2.0.9.jar
+fetchArtifact org/apache/maven/maven-profile/2.0.9/maven-profile-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.8/maven-profile-2.0.8.pom
+fetchArtifact org/apache/maven/maven-profile/2.0.8/maven-profile-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.2.0/maven-profile-2.2.0.pom
+fetchArtifact org/apache/maven/maven-profile/2.2.0/maven-profile-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.2.0/maven-profile-2.2.0.jar
+fetchArtifact org/apache/maven/maven-profile/2.2.0/maven-profile-2.2.0.jar.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.5/maven-profile-2.0.5.pom
+fetchArtifact org/apache/maven/maven-profile/2.0.5/maven-profile-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.jar
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.9/maven-artifact-manager-2.0.9.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.9/maven-artifact-manager-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.9/maven-artifact-manager-2.0.9.jar
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.9/maven-artifact-manager-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.8/maven-artifact-manager-2.0.8.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.8/maven-artifact-manager-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.2.0/maven-artifact-manager-2.2.0.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.2.0/maven-artifact-manager-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.2.0/maven-artifact-manager-2.2.0.jar
+fetchArtifact org/apache/maven/maven-artifact-manager/2.2.0/maven-artifact-manager-2.2.0.jar.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.2/maven-artifact-manager-2.0.2.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.2/maven-artifact-manager-2.0.2.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.5/maven-artifact-manager-2.0.5.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.5/maven-artifact-manager-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.6/maven-repository-metadata-2.0.6.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.6/maven-repository-metadata-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.6/maven-repository-metadata-2.0.6.jar
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.6/maven-repository-metadata-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.jar
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/3.0/maven-repository-metadata-3.0.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/3.0/maven-repository-metadata-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/3.0/maven-repository-metadata-3.0.jar
+fetchArtifact org/apache/maven/maven-repository-metadata/3.0/maven-repository-metadata-3.0.jar.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.8/maven-repository-metadata-2.0.8.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.8/maven-repository-metadata-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.2.0/maven-repository-metadata-2.2.0.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.2.0/maven-repository-metadata-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.2/maven-repository-metadata-2.0.2.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.2/maven-repository-metadata-2.0.2.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.5/maven-repository-metadata-2.0.5.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.5/maven-repository-metadata-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.6/maven-artifact-2.0.6.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.6/maven-artifact-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.6/maven-artifact-2.0.6.jar
+fetchArtifact org/apache/maven/maven-artifact/2.0.6/maven-artifact-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.8/maven-artifact-2.0.8.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.8/maven-artifact-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0/maven-artifact-2.0.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0/maven-artifact-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.jar
+fetchArtifact org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-artifact/3.0/maven-artifact-3.0.pom
+fetchArtifact org/apache/maven/maven-artifact/3.0/maven-artifact-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/3.0/maven-artifact-3.0.jar
+fetchArtifact org/apache/maven/maven-artifact/3.0/maven-artifact-3.0.jar.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.pom
+fetchArtifact org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.2.0/maven-artifact-2.2.0.pom
+fetchArtifact org/apache/maven/maven-artifact/2.2.0/maven-artifact-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.2/maven-artifact-2.0.2.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.2/maven-artifact-2.0.2.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.5/maven-artifact-2.0.5.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.5/maven-artifact-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.6/maven-plugin-registry-2.0.6.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.6/maven-plugin-registry-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.6/maven-plugin-registry-2.0.6.jar
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.6/maven-plugin-registry-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0/maven-plugin-registry-2.0.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0/maven-plugin-registry-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.9/maven-plugin-registry-2.0.9.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.9/maven-plugin-registry-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.9/maven-plugin-registry-2.0.9.jar
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.9/maven-plugin-registry-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.8/maven-plugin-registry-2.0.8.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.8/maven-plugin-registry-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.2.0/maven-plugin-registry-2.2.0.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.2.0/maven-plugin-registry-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.2.0/maven-plugin-registry-2.2.0.jar
+fetchArtifact org/apache/maven/maven-plugin-registry/2.2.0/maven-plugin-registry-2.2.0.jar.sha1
+fetchArtifact org/apache/maven/maven-core/2.0.6/maven-core-2.0.6.pom
+fetchArtifact org/apache/maven/maven-core/2.0.6/maven-core-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-core/2.0.6/maven-core-2.0.6.jar
+fetchArtifact org/apache/maven/maven-core/2.0.6/maven-core-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-core/2.0/maven-core-2.0.pom
+fetchArtifact org/apache/maven/maven-core/2.0/maven-core-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom
+fetchArtifact org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.jar
+fetchArtifact org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-core/3.0/maven-core-3.0.pom
+fetchArtifact org/apache/maven/maven-core/3.0/maven-core-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-core/3.0/maven-core-3.0.jar
+fetchArtifact org/apache/maven/maven-core/3.0/maven-core-3.0.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.6/maven-plugin-parameter-documenter-2.0.6.pom
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.6/maven-plugin-parameter-documenter-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.6/maven-plugin-parameter-documenter-2.0.6.jar
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.6/maven-plugin-parameter-documenter-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0/maven-plugin-parameter-documenter-2.0.pom
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0/maven-plugin-parameter-documenter-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.9/maven-plugin-parameter-documenter-2.0.9.pom
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.9/maven-plugin-parameter-documenter-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.9/maven-plugin-parameter-documenter-2.0.9.jar
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.9/maven-plugin-parameter-documenter-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0/maven-reporting-api-2.0.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0/maven-reporting-api-2.0.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0.6/maven-reporting-2.0.6.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0.6/maven-reporting-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0/maven-reporting-2.0.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0/maven-reporting-2.0.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0.9/maven-reporting-2.0.9.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0.9/maven-reporting-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-exec/1.0.2/maven-reporting-exec-1.0.2.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-exec/1.0.2/maven-reporting-exec-1.0.2.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-exec/1.0.2/maven-reporting-exec-1.0.2.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-exec/1.0.2/maven-reporting-exec-1.0.2.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.0.5/maven-reporting-impl-2.0.5.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.0.5/maven-reporting-impl-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.0.5/maven-reporting-impl-2.0.5.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.0.5/maven-reporting-impl-2.0.5.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.pom
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.jar
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.3/doxia-sink-api-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.3/doxia-sink-api-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.3/doxia-sink-api-1.3.jar
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.3/doxia-sink-api-1.3.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-10/doxia-sink-api-1.0-alpha-10.pom
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-10/doxia-sink-api-1.0-alpha-10.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.0-alpha-7/doxia-1.0-alpha-7.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.0-alpha-7/doxia-1.0-alpha-7.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.0/doxia-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.0/doxia-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.3/doxia-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.3/doxia-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.2/doxia-1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.2/doxia-1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.0-alpha-10/doxia-1.0-alpha-10.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.0-alpha-10/doxia-1.0-alpha-10.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.3/doxia-logging-api-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.3/doxia-logging-api-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.3/doxia-logging-api-1.3.jar
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.3/doxia-logging-api-1.3.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.2/doxia-logging-api-1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.2/doxia-logging-api-1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-core/1.3/doxia-core-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-core/1.3/doxia-core-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-core/1.3/doxia-core-1.3.jar
+fetchArtifact org/apache/maven/doxia/doxia-core/1.3/doxia-core-1.3.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.3/doxia-module-xhtml-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.3/doxia-module-xhtml-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.3/doxia-module-xhtml-1.3.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.3/doxia-module-xhtml-1.3.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.3/doxia-modules-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.3/doxia-modules-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.0/doxia-modules-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.0/doxia-modules-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.3/doxia-module-apt-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.3/doxia-module-apt-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.3/doxia-module-apt-1.3.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.3/doxia-module-apt-1.3.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.3/doxia-module-xdoc-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.3/doxia-module-xdoc-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.3/doxia-module-xdoc-1.3.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.3/doxia-module-xdoc-1.3.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.3/doxia-module-fml-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.3/doxia-module-fml-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.3/doxia-module-fml-1.3.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.3/doxia-module-fml-1.3.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.3/doxia-decoration-model-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.3/doxia-decoration-model-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.3/doxia-decoration-model-1.3.jar
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.3/doxia-decoration-model-1.3.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.2/doxia-decoration-model-1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.2/doxia-decoration-model-1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.3/doxia-sitetools-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.3/doxia-sitetools-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.2/doxia-sitetools-1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.2/doxia-sitetools-1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.0/doxia-sitetools-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.0/doxia-sitetools-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.3/doxia-site-renderer-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.3/doxia-site-renderer-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.3/doxia-site-renderer-1.3.jar
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.3/doxia-site-renderer-1.3.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.jar.sha1
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.6/maven-error-diagnostics-2.0.6.pom
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.6/maven-error-diagnostics-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.6/maven-error-diagnostics-2.0.6.jar
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.6/maven-error-diagnostics-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0/maven-error-diagnostics-2.0.pom
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0/maven-error-diagnostics-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.9/maven-error-diagnostics-2.0.9.pom
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.9/maven-error-diagnostics-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.9/maven-error-diagnostics-2.0.9.jar
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.9/maven-error-diagnostics-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.6/maven-plugin-descriptor-2.0.6.pom
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.6/maven-plugin-descriptor-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.6/maven-plugin-descriptor-2.0.6.jar
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.6/maven-plugin-descriptor-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0/maven-plugin-descriptor-2.0.pom
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0/maven-plugin-descriptor-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.9/maven-plugin-descriptor-2.0.9.pom
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.9/maven-plugin-descriptor-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.9/maven-plugin-descriptor-2.0.9.jar
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.9/maven-plugin-descriptor-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-monitor/2.0.6/maven-monitor-2.0.6.pom
+fetchArtifact org/apache/maven/maven-monitor/2.0.6/maven-monitor-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-monitor/2.0.6/maven-monitor-2.0.6.jar
+fetchArtifact org/apache/maven/maven-monitor/2.0.6/maven-monitor-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-monitor/2.0/maven-monitor-2.0.pom
+fetchArtifact org/apache/maven/maven-monitor/2.0/maven-monitor-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-monitor/2.0.9/maven-monitor-2.0.9.pom
+fetchArtifact org/apache/maven/maven-monitor/2.0.9/maven-monitor-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-monitor/2.0.9/maven-monitor-2.0.9.jar
+fetchArtifact org/apache/maven/maven-monitor/2.0.9/maven-monitor-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-artifact-resolver/1.0/maven-artifact-resolver-1.0.pom
+fetchArtifact org/apache/maven/shared/maven-artifact-resolver/1.0/maven-artifact-resolver-1.0.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-artifact-resolver/1.0/maven-artifact-resolver-1.0.jar
+fetchArtifact org/apache/maven/shared/maven-artifact-resolver/1.0/maven-artifact-resolver-1.0.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/12/maven-shared-components-12.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/12/maven-shared-components-12.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/8/maven-shared-components-8.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/8/maven-shared-components-8.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/7/maven-shared-components-7.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/7/maven-shared-components-7.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/16/maven-shared-components-16.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/16/maven-shared-components-16.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/17/maven-shared-components-17.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/17/maven-shared-components-17.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/15/maven-shared-components-15.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/15/maven-shared-components-15.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/9/maven-shared-components-9.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/9/maven-shared-components-9.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/19/maven-shared-components-19.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/19/maven-shared-components-19.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/11/maven-shared-components-11.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/11/maven-shared-components-11.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/10/maven-shared-components-10.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/10/maven-shared-components-10.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.0/maven-common-artifact-filters-1.0.pom
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.0/maven-common-artifact-filters-1.0.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.0/maven-common-artifact-filters-1.0.jar
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.0/maven-common-artifact-filters-1.0.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.3/maven-common-artifact-filters-1.3.pom
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.3/maven-common-artifact-filters-1.3.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.3/maven-common-artifact-filters-1.3.jar
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.3/maven-common-artifact-filters-1.3.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.4/maven-common-artifact-filters-1.4.pom
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.4/maven-common-artifact-filters-1.4.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.4/maven-common-artifact-filters-1.4.jar
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.4/maven-common-artifact-filters-1.4.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-plugin-testing-harness/1.1/maven-plugin-testing-harness-1.1.pom
+fetchArtifact org/apache/maven/shared/maven-plugin-testing-harness/1.1/maven-plugin-testing-harness-1.1.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-plugin-testing-harness/1.1/maven-plugin-testing-harness-1.1.jar
+fetchArtifact org/apache/maven/shared/maven-plugin-testing-harness/1.1/maven-plugin-testing-harness-1.1.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-filtering/1.0/maven-filtering-1.0.pom
+fetchArtifact org/apache/maven/shared/maven-filtering/1.0/maven-filtering-1.0.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-filtering/1.0/maven-filtering-1.0.jar
+fetchArtifact org/apache/maven/shared/maven-filtering/1.0/maven-filtering-1.0.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.4/maven-doxia-tools-1.4.pom
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.4/maven-doxia-tools-1.4.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.4/maven-doxia-tools-1.4.jar
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.4/maven-doxia-tools-1.4.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.pom
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.jar
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.9/maven-invoker-2.0.9.pom
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.9/maven-invoker-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.9/maven-invoker-2.0.9.jar
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.9/maven-invoker-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.11/maven-invoker-2.0.11.pom
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.11/maven-invoker-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.11/maven-invoker-2.0.11.jar
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.11/maven-invoker-2.0.11.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/2.1/maven-dependency-tree-2.1.pom
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/2.1/maven-dependency-tree-2.1.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/2.1/maven-dependency-tree-2.1.jar
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/2.1/maven-dependency-tree-2.1.jar.sha1
+fetchArtifact org/apache/maven/shared/file-management/1.2.1/file-management-1.2.1.pom
+fetchArtifact org/apache/maven/shared/file-management/1.2.1/file-management-1.2.1.pom.sha1
+fetchArtifact org/apache/maven/shared/file-management/1.2.1/file-management-1.2.1.jar
+fetchArtifact org/apache/maven/shared/file-management/1.2.1/file-management-1.2.1.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.pom
+fetchArtifact org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.jar
+fetchArtifact org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-analyzer/1.4/maven-dependency-analyzer-1.4.pom
+fetchArtifact org/apache/maven/shared/maven-dependency-analyzer/1.4/maven-dependency-analyzer-1.4.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-analyzer/1.4/maven-dependency-analyzer-1.4.jar
+fetchArtifact org/apache/maven/shared/maven-dependency-analyzer/1.4/maven-dependency-analyzer-1.4.jar.sha1
+fetchArtifact org/apache/maven/maven-toolchain/1.0/maven-toolchain-1.0.pom
+fetchArtifact org/apache/maven/maven-toolchain/1.0/maven-toolchain-1.0.pom.sha1
+fetchArtifact org/apache/maven/maven-toolchain/1.0/maven-toolchain-1.0.jar
+fetchArtifact org/apache/maven/maven-toolchain/1.0/maven-toolchain-1.0.jar.sha1
+fetchArtifact org/apache/maven/maven-toolchain/2.0.9/maven-toolchain-2.0.9.pom
+fetchArtifact org/apache/maven/maven-toolchain/2.0.9/maven-toolchain-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-toolchain/2.0.9/maven-toolchain-2.0.9.jar
+fetchArtifact org/apache/maven/maven-toolchain/2.0.9/maven-toolchain-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.pom
+fetchArtifact org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.pom.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.jar
+fetchArtifact org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.jar.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.4.2/maven-archiver-2.4.2.pom
+fetchArtifact org/apache/maven/maven-archiver/2.4.2/maven-archiver-2.4.2.pom.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.4.2/maven-archiver-2.4.2.jar
+fetchArtifact org/apache/maven/maven-archiver/2.4.2/maven-archiver-2.4.2.jar.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.3/maven-archiver-2.3.pom
+fetchArtifact org/apache/maven/maven-archiver/2.3/maven-archiver-2.3.pom.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.3/maven-archiver-2.3.jar
+fetchArtifact org/apache/maven/maven-archiver/2.3/maven-archiver-2.3.jar.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.4.1/maven-archiver-2.4.1.pom
+fetchArtifact org/apache/maven/maven-archiver/2.4.1/maven-archiver-2.4.1.pom.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.4.1/maven-archiver-2.4.1.jar
+fetchArtifact org/apache/maven/maven-archiver/2.4.1/maven-archiver-2.4.1.jar.sha1
+fetchArtifact org/apache/maven/wagon/wagon-ssh/1.0/wagon-ssh-1.0.pom
+fetchArtifact org/apache/maven/wagon/wagon-ssh/1.0/wagon-ssh-1.0.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-ssh/1.0/wagon-ssh-1.0.jar
+fetchArtifact org/apache/maven/wagon/wagon-ssh/1.0/wagon-ssh-1.0.jar.sha1
+fetchArtifact org/apache/maven/wagon/wagon-providers/1.0/wagon-providers-1.0.pom
+fetchArtifact org/apache/maven/wagon/wagon-providers/1.0/wagon-providers-1.0.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon/1.0/wagon-1.0.pom
+fetchArtifact org/apache/maven/wagon/wagon/1.0/wagon-1.0.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon/1.0-beta-6/wagon-1.0-beta-6.pom
+fetchArtifact org/apache/maven/wagon/wagon/1.0-beta-6/wagon-1.0-beta-6.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon/1.0-alpha-6/wagon-1.0-alpha-6.pom
+fetchArtifact org/apache/maven/wagon/wagon/1.0-alpha-6/wagon-1.0-alpha-6.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-ssh-common/1.0/wagon-ssh-common-1.0.pom
+fetchArtifact org/apache/maven/wagon/wagon-ssh-common/1.0/wagon-ssh-common-1.0.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-ssh-common/1.0/wagon-ssh-common-1.0.jar
+fetchArtifact org/apache/maven/wagon/wagon-ssh-common/1.0/wagon-ssh-common-1.0.jar.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0/wagon-provider-api-1.0.pom
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0/wagon-provider-api-1.0.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0/wagon-provider-api-1.0.jar
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0/wagon-provider-api-1.0.jar.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-6/wagon-provider-api-1.0-beta-6.pom
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-6/wagon-provider-api-1.0-beta-6.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-6/wagon-provider-api-1.0-beta-6.jar
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-6/wagon-provider-api-1.0-beta-6.jar.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-alpha-6/wagon-provider-api-1.0-alpha-6.pom
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-alpha-6/wagon-provider-api-1.0-alpha-6.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-alpha-6/wagon-provider-api-1.0-alpha-6.jar
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-alpha-6/wagon-provider-api-1.0-alpha-6.jar.sha1
+fetchArtifact org/apache/maven/maven-settings-builder/3.0/maven-settings-builder-3.0.pom
+fetchArtifact org/apache/maven/maven-settings-builder/3.0/maven-settings-builder-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-settings-builder/3.0/maven-settings-builder-3.0.jar
+fetchArtifact org/apache/maven/maven-settings-builder/3.0/maven-settings-builder-3.0.jar.sha1
+fetchArtifact org/apache/maven/maven-model-builder/3.0/maven-model-builder-3.0.pom
+fetchArtifact org/apache/maven/maven-model-builder/3.0/maven-model-builder-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-model-builder/3.0/maven-model-builder-3.0.jar
+fetchArtifact org/apache/maven/maven-model-builder/3.0/maven-model-builder-3.0.jar.sha1
+fetchArtifact org/apache/maven/maven-aether-provider/3.0/maven-aether-provider-3.0.pom
+fetchArtifact org/apache/maven/maven-aether-provider/3.0/maven-aether-provider-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-aether-provider/3.0/maven-aether-provider-3.0.jar
+fetchArtifact org/apache/maven/maven-aether-provider/3.0/maven-aether-provider-3.0.jar.sha1
+fetchArtifact org/apache/maven/maven-compat/3.0/maven-compat-3.0.pom
+fetchArtifact org/apache/maven/maven-compat/3.0/maven-compat-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-compat/3.0/maven-compat-3.0.jar
+fetchArtifact org/apache/maven/maven-compat/3.0/maven-compat-3.0.jar.sha1
+fetchArtifact org/apache/velocity/velocity/1.7/velocity-1.7.pom
+fetchArtifact org/apache/velocity/velocity/1.7/velocity-1.7.pom.sha1
+fetchArtifact org/apache/velocity/velocity/1.7/velocity-1.7.jar
+fetchArtifact org/apache/velocity/velocity/1.7/velocity-1.7.jar.sha1
+fetchArtifact org/apache/velocity/velocity/1.5/velocity-1.5.pom
+fetchArtifact org/apache/velocity/velocity/1.5/velocity-1.5.pom.sha1
+fetchArtifact org/apache/velocity/velocity/1.5/velocity-1.5.jar
+fetchArtifact org/apache/velocity/velocity/1.5/velocity-1.5.jar.sha1
+fetchArtifact org/apache/velocity/velocity/1.6.2/velocity-1.6.2.pom
+fetchArtifact org/apache/velocity/velocity/1.6.2/velocity-1.6.2.pom.sha1
+fetchArtifact org/apache/velocity/velocity-tools/2.0/velocity-tools-2.0.pom
+fetchArtifact org/apache/velocity/velocity-tools/2.0/velocity-tools-2.0.pom.sha1
+fetchArtifact org/apache/velocity/velocity-tools/2.0/velocity-tools-2.0.jar
+fetchArtifact org/apache/velocity/velocity-tools/2.0/velocity-tools-2.0.jar.sha1
+fetchArtifact org/apache/commons/commons-parent/9/commons-parent-9.pom
+fetchArtifact org/apache/commons/commons-parent/9/commons-parent-9.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/5/commons-parent-5.pom
+fetchArtifact org/apache/commons/commons-parent/5/commons-parent-5.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/7/commons-parent-7.pom
+fetchArtifact org/apache/commons/commons-parent/7/commons-parent-7.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/12/commons-parent-12.pom
+fetchArtifact org/apache/commons/commons-parent/12/commons-parent-12.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/3/commons-parent-3.pom
+fetchArtifact org/apache/commons/commons-parent/3/commons-parent-3.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/17/commons-parent-17.pom
+fetchArtifact org/apache/commons/commons-parent/17/commons-parent-17.pom.sha1
+fetchArtifact org/apache/apache-jar-resource-bundle/1.4/apache-jar-resource-bundle-1.4.jar
+fetchArtifact org/apache/apache-jar-resource-bundle/1.4/apache-jar-resource-bundle-1.4.jar.sha1
+fetchArtifact org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.pom
+fetchArtifact org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.pom.sha1
+fetchArtifact org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.jar
+fetchArtifact org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.jar.sha1
+fetchArtifact org/apache/httpcomponents/httpcomponents-client/4.0.2/httpcomponents-client-4.0.2.pom
+fetchArtifact org/apache/httpcomponents/httpcomponents-client/4.0.2/httpcomponents-client-4.0.2.pom.sha1
+fetchArtifact org/apache/httpcomponents/project/4.1/project-4.1.pom
+fetchArtifact org/apache/httpcomponents/project/4.1/project-4.1.pom.sha1
+fetchArtifact org/apache/httpcomponents/project/4.0/project-4.0.pom
+fetchArtifact org/apache/httpcomponents/project/4.0/project-4.0.pom.sha1
+fetchArtifact org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.pom
+fetchArtifact org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.pom.sha1
+fetchArtifact org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.jar
+fetchArtifact org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.jar.sha1
+fetchArtifact org/apache/httpcomponents/httpcomponents-core/4.0.1/httpcomponents-core-4.0.1.pom
+fetchArtifact org/apache/httpcomponents/httpcomponents-core/4.0.1/httpcomponents-core-4.0.1.pom.sha1
+fetchArtifact org/apache/struts/struts-core/1.3.8/struts-core-1.3.8.pom
+fetchArtifact org/apache/struts/struts-core/1.3.8/struts-core-1.3.8.pom.sha1
+fetchArtifact org/apache/struts/struts-core/1.3.8/struts-core-1.3.8.jar
+fetchArtifact org/apache/struts/struts-core/1.3.8/struts-core-1.3.8.jar.sha1
+fetchArtifact org/apache/struts/struts-parent/1.3.8/struts-parent-1.3.8.pom
+fetchArtifact org/apache/struts/struts-parent/1.3.8/struts-parent-1.3.8.pom.sha1
+fetchArtifact org/apache/struts/struts-master/4/struts-master-4.pom
+fetchArtifact org/apache/struts/struts-master/4/struts-master-4.pom.sha1
+fetchArtifact org/apache/struts/struts-taglib/1.3.8/struts-taglib-1.3.8.pom
+fetchArtifact org/apache/struts/struts-taglib/1.3.8/struts-taglib-1.3.8.pom.sha1
+fetchArtifact org/apache/struts/struts-taglib/1.3.8/struts-taglib-1.3.8.jar
+fetchArtifact org/apache/struts/struts-taglib/1.3.8/struts-taglib-1.3.8.jar.sha1
+fetchArtifact org/apache/struts/struts-tiles/1.3.8/struts-tiles-1.3.8.pom
+fetchArtifact org/apache/struts/struts-tiles/1.3.8/struts-tiles-1.3.8.pom.sha1
+fetchArtifact org/apache/struts/struts-tiles/1.3.8/struts-tiles-1.3.8.jar
+fetchArtifact org/apache/struts/struts-tiles/1.3.8/struts-tiles-1.3.8.jar.sha1
+fetchArtifact org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.pom
+fetchArtifact org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.pom.sha1
+fetchArtifact org/apache/xbean/xbean/3.4/xbean-3.4.pom
+fetchArtifact org/apache/xbean/xbean/3.4/xbean-3.4.pom.sha1
+fetchArtifact org/codehaus/mojo/build-helper-maven-plugin/1.8/build-helper-maven-plugin-1.8.pom
+fetchArtifact org/codehaus/mojo/build-helper-maven-plugin/1.8/build-helper-maven-plugin-1.8.pom.sha1
+fetchArtifact org/codehaus/mojo/build-helper-maven-plugin/1.8/build-helper-maven-plugin-1.8.jar
+fetchArtifact org/codehaus/mojo/build-helper-maven-plugin/1.8/build-helper-maven-plugin-1.8.jar.sha1
+fetchArtifact org/codehaus/mojo/mojo-parent/30/mojo-parent-30.pom
+fetchArtifact org/codehaus/mojo/mojo-parent/30/mojo-parent-30.pom.sha1
+fetchArtifact org/codehaus/codehaus-parent/4/codehaus-parent-4.pom
+fetchArtifact org/codehaus/codehaus-parent/4/codehaus-parent-4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.1/plexus-utils-1.4.1.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.1/plexus-utils-1.4.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.6/plexus-utils-1.4.6.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.6/plexus-utils-1.4.6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.2/plexus-utils-1.4.2.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.2/plexus-utils-1.4.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.2/plexus-utils-1.2.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.2/plexus-utils-1.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.12/plexus-utils-1.5.12.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.12/plexus-utils-1.5.12.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.12/plexus-utils-1.5.12.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.12/plexus-utils-1.5.12.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.1/plexus-utils-1.5.1.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.1/plexus-utils-1.5.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4/plexus-utils-1.4.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4/plexus-utils-1.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.4/plexus-utils-2.0.4.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.4/plexus-utils-2.0.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.3/plexus-utils-1.3.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.3/plexus-utils-1.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.10/plexus-utils-1.5.10.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.10/plexus-utils-1.5.10.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.10/plexus-utils-1.5.10.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.10/plexus-utils-1.5.10.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.9/plexus-utils-1.4.9.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.9/plexus-utils-1.4.9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.6/plexus-utils-1.5.6.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.6/plexus-utils-1.5.6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.7/plexus-utils-1.5.7.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.7/plexus-utils-1.5.7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.10/plexus-utils-3.0.10.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.10/plexus-utils-3.0.10.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.9/plexus-utils-3.0.9.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.9/plexus-utils-3.0.9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.9/plexus-utils-3.0.9.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.9/plexus-utils-3.0.9.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/2.1/plexus-utils-2.1.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/2.1/plexus-utils-2.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.2/plexus-2.0.2.pom
+fetchArtifact org/codehaus/plexus/plexus/2.0.2/plexus-2.0.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.5/plexus-1.0.5.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.5/plexus-1.0.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.3/plexus-2.0.3.pom
+fetchArtifact org/codehaus/plexus/plexus/2.0.3/plexus-2.0.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.6/plexus-2.0.6.pom
+fetchArtifact org/codehaus/plexus/plexus/2.0.6/plexus-2.0.6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/3.1/plexus-3.1.pom
+fetchArtifact org/codehaus/plexus/plexus/3.1/plexus-3.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/3.0.1/plexus-3.0.1.pom
+fetchArtifact org/codehaus/plexus/plexus/3.0.1/plexus-3.0.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.7/plexus-2.0.7.pom
+fetchArtifact org/codehaus/plexus/plexus/2.0.7/plexus-2.0.7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.5/plexus-2.0.5.pom
+fetchArtifact org/codehaus/plexus/plexus/2.0.5/plexus-2.0.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.12/plexus-1.0.12.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.12/plexus-1.0.12.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/3.3.1/plexus-3.3.1.pom
+fetchArtifact org/codehaus/plexus/plexus/3.3.1/plexus-3.3.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/3.3/plexus-3.3.pom
+fetchArtifact org/codehaus/plexus/plexus/3.3/plexus-3.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/3.2/plexus-3.2.pom
+fetchArtifact org/codehaus/plexus/plexus/3.2/plexus-3.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.jar
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9/plexus-container-default-1.0-alpha-9.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9/plexus-container-default-1.0-alpha-9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9/plexus-container-default-1.0-alpha-9.jar
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9/plexus-container-default-1.0-alpha-9.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-30/plexus-container-default-1.0-alpha-30.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-30/plexus-container-default-1.0-alpha-30.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-30/plexus-container-default-1.0-alpha-30.jar
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-30/plexus-container-default-1.0-alpha-30.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-20/plexus-container-default-1.0-alpha-20.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-20/plexus-container-default-1.0-alpha-20.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-15/plexus-container-default-1.0-alpha-15.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-15/plexus-container-default-1.0-alpha-15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.5.5/plexus-container-default-1.5.5.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.5.5/plexus-container-default-1.5.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0.3/plexus-containers-1.0.3.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0.3/plexus-containers-1.0.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.5.5/plexus-containers-1.5.5.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.5.5/plexus-containers-1.5.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.5.4/plexus-containers-1.5.4.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.5.4/plexus-containers-1.5.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-30/plexus-containers-1.0-alpha-30.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-30/plexus-containers-1.0-alpha-30.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-20/plexus-containers-1.0-alpha-20.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-20/plexus-containers-1.0-alpha-20.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-15/plexus-containers-1.0-alpha-15.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-15/plexus-containers-1.0-alpha-15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-16/plexus-containers-1.0-alpha-16.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-16/plexus-containers-1.0-alpha-16.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.pom
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-6/plexus-interactivity-api-1.0-alpha-6.pom
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-6/plexus-interactivity-api-1.0-alpha-6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-6/plexus-interactivity-api-1.0-alpha-6.jar
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-6/plexus-interactivity-api-1.0-alpha-6.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0-alpha-7/plexus-archiver-1.0-alpha-7.pom
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0-alpha-7/plexus-archiver-1.0-alpha-7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0-alpha-7/plexus-archiver-1.0-alpha-7.jar
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0-alpha-7/plexus-archiver-1.0-alpha-7.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.pom
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.jar
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.0.1/plexus-archiver-2.0.1.pom
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.0.1/plexus-archiver-2.0.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0/plexus-archiver-1.0.pom
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0/plexus-archiver-1.0.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0/plexus-archiver-1.0.jar
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0/plexus-archiver-1.0.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0-alpha-9/plexus-archiver-1.0-alpha-9.pom
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0-alpha-9/plexus-archiver-1.0-alpha-9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0-alpha-9/plexus-archiver-1.0-alpha-9.jar
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0-alpha-9/plexus-archiver-1.0-alpha-9.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.3/plexus-archiver-2.3.pom
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.3/plexus-archiver-2.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.3/plexus-archiver-2.3.jar
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.3/plexus-archiver-2.3.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.6/plexus-components-1.1.6.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.6/plexus-components-1.1.6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.14/plexus-components-1.1.14.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.14/plexus-components-1.1.14.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.15/plexus-components-1.1.15.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.15/plexus-components-1.1.15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.20/plexus-components-1.1.20.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.20/plexus-components-1.1.20.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.19/plexus-components-1.1.19.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.19/plexus-components-1.1.19.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.9/plexus-components-1.1.9.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.9/plexus-components-1.1.9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.18/plexus-components-1.1.18.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.18/plexus-components-1.1.18.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.12/plexus-components-1.1.12.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.12/plexus-components-1.1.12.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.17/plexus-components-1.1.17.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.17/plexus-components-1.1.17.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.3/plexus-components-1.3.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.3/plexus-components-1.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.2/plexus-components-1.2.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.2/plexus-components-1.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.12/plexus-interpolation-1.12.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.12/plexus-interpolation-1.12.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.12/plexus-interpolation-1.12.jar
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.12/plexus-interpolation-1.12.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.jar
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.jar
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-resources/1.0-alpha-5/plexus-resources-1.0-alpha-5.pom
+fetchArtifact org/codehaus/plexus/plexus-resources/1.0-alpha-5/plexus-resources-1.0-alpha-5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-resources/1.0-alpha-5/plexus-resources-1.0-alpha-5.jar
+fetchArtifact org/codehaus/plexus/plexus-resources/1.0-alpha-5/plexus-resources-1.0-alpha-5.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.8/plexus-velocity-1.1.8.pom
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.8/plexus-velocity-1.1.8.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.8/plexus-velocity-1.1.8.jar
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.8/plexus-velocity-1.1.8.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.pom
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.jar
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-api/1.9.1/plexus-compiler-api-1.9.1.pom
+fetchArtifact org/codehaus/plexus/plexus-compiler-api/1.9.1/plexus-compiler-api-1.9.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-api/1.9.1/plexus-compiler-api-1.9.1.jar
+fetchArtifact org/codehaus/plexus/plexus-compiler-api/1.9.1/plexus-compiler-api-1.9.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler/1.9.1/plexus-compiler-1.9.1.pom
+fetchArtifact org/codehaus/plexus/plexus-compiler/1.9.1/plexus-compiler-1.9.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-manager/1.9.1/plexus-compiler-manager-1.9.1.pom
+fetchArtifact org/codehaus/plexus/plexus-compiler-manager/1.9.1/plexus-compiler-manager-1.9.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-manager/1.9.1/plexus-compiler-manager-1.9.1.jar
+fetchArtifact org/codehaus/plexus/plexus-compiler-manager/1.9.1/plexus-compiler-manager-1.9.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-javac/1.9.1/plexus-compiler-javac-1.9.1.pom
+fetchArtifact org/codehaus/plexus/plexus-compiler-javac/1.9.1/plexus-compiler-javac-1.9.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-javac/1.9.1/plexus-compiler-javac-1.9.1.jar
+fetchArtifact org/codehaus/plexus/plexus-compiler-javac/1.9.1/plexus-compiler-javac-1.9.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-compilers/1.9.1/plexus-compilers-1.9.1.pom
+fetchArtifact org/codehaus/plexus/plexus-compilers/1.9.1/plexus-compilers-1.9.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.pom
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.jar
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.1/plexus-io-2.0.1.pom
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.1/plexus-io-2.0.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/1.0/plexus-io-1.0.pom
+fetchArtifact org/codehaus/plexus/plexus-io/1.0/plexus-io-1.0.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/1.0/plexus-io-1.0.jar
+fetchArtifact org/codehaus/plexus/plexus-io/1.0/plexus-io-1.0.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/1.0-alpha-1/plexus-io-1.0-alpha-1.pom
+fetchArtifact org/codehaus/plexus/plexus-io/1.0-alpha-1/plexus-io-1.0-alpha-1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/1.0-alpha-1/plexus-io-1.0-alpha-1.jar
+fetchArtifact org/codehaus/plexus/plexus-io/1.0-alpha-1/plexus-io-1.0-alpha-1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.6/plexus-io-2.0.6.pom
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.6/plexus-io-2.0.6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.6/plexus-io-2.0.6.jar
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.6/plexus-io-2.0.6.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interactivity/1.0-alpha-6/plexus-interactivity-1.0-alpha-6.pom
+fetchArtifact org/codehaus/plexus/plexus-interactivity/1.0-alpha-6/plexus-interactivity-1.0-alpha-6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.pom
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.4/plexus-component-annotations-1.5.4.pom
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.4/plexus-component-annotations-1.5.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.3/plexus-classworlds-2.2.3.pom
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.3/plexus-classworlds-2.2.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.3/plexus-classworlds-2.2.3.jar
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.3/plexus-classworlds-2.2.3.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-9/plexus-classworlds-1.2-alpha-9.pom
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-9/plexus-classworlds-1.2-alpha-9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-6/plexus-classworlds-1.2-alpha-6.pom
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-6/plexus-classworlds-1.2-alpha-6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.2/plexus-classworlds-2.2.2.pom
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.2/plexus-classworlds-2.2.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.pom
+fetchArtifact org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.jar
+fetchArtifact org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-component-api/1.0-alpha-15/plexus-component-api-1.0-alpha-15.pom
+fetchArtifact org/codehaus/plexus/plexus-component-api/1.0-alpha-15/plexus-component-api-1.0-alpha-15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.pom
+fetchArtifact org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.pom.sha1
+fetchArtifact org/sonatype/spice/spice-parent/16/spice-parent-16.pom
+fetchArtifact org/sonatype/spice/spice-parent/16/spice-parent-16.pom.sha1
+fetchArtifact org/sonatype/spice/spice-parent/10/spice-parent-10.pom
+fetchArtifact org/sonatype/spice/spice-parent/10/spice-parent-10.pom.sha1
+fetchArtifact org/sonatype/spice/spice-parent/17/spice-parent-17.pom
+fetchArtifact org/sonatype/spice/spice-parent/17/spice-parent-17.pom.sha1
+fetchArtifact org/sonatype/spice/spice-parent/12/spice-parent-12.pom
+fetchArtifact org/sonatype/spice/spice-parent/12/spice-parent-12.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/5/forge-parent-5.pom
+fetchArtifact org/sonatype/forge/forge-parent/5/forge-parent-5.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/3/forge-parent-3.pom
+fetchArtifact org/sonatype/forge/forge-parent/3/forge-parent-3.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/10/forge-parent-10.pom
+fetchArtifact org/sonatype/forge/forge-parent/10/forge-parent-10.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/4/forge-parent-4.pom
+fetchArtifact org/sonatype/forge/forge-parent/4/forge-parent-4.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/6/forge-parent-6.pom
+fetchArtifact org/sonatype/forge/forge-parent/6/forge-parent-6.pom.sha1
+fetchArtifact org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.pom
+fetchArtifact org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.pom.sha1
+fetchArtifact org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.jar
+fetchArtifact org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.jar.sha1
+fetchArtifact org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.pom
+fetchArtifact org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.pom.sha1
+fetchArtifact org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
+fetchArtifact org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar.sha1
+fetchArtifact org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.pom
+fetchArtifact org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.pom.sha1
+fetchArtifact org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
+fetchArtifact org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar.sha1
+fetchArtifact org/sonatype/oss/oss-parent/6/oss-parent-6.pom
+fetchArtifact org/sonatype/oss/oss-parent/6/oss-parent-6.pom.sha1
+fetchArtifact org/sonatype/oss/oss-parent/7/oss-parent-7.pom
+fetchArtifact org/sonatype/oss/oss-parent/7/oss-parent-7.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-inject-plexus/1.4.2/sisu-inject-plexus-1.4.2.pom
+fetchArtifact org/sonatype/sisu/sisu-inject-plexus/1.4.2/sisu-inject-plexus-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-inject-plexus/1.4.2/sisu-inject-plexus-1.4.2.jar
+fetchArtifact org/sonatype/sisu/sisu-inject-plexus/1.4.2/sisu-inject-plexus-1.4.2.jar.sha1
+fetchArtifact org/sonatype/sisu/inject/guice-plexus/1.4.2/guice-plexus-1.4.2.pom
+fetchArtifact org/sonatype/sisu/inject/guice-plexus/1.4.2/guice-plexus-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/inject/guice-bean/1.4.2/guice-bean-1.4.2.pom
+fetchArtifact org/sonatype/sisu/inject/guice-bean/1.4.2/guice-bean-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-inject/1.4.2/sisu-inject-1.4.2.pom
+fetchArtifact org/sonatype/sisu/sisu-inject/1.4.2/sisu-inject-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-parent/1.4.2/sisu-parent-1.4.2.pom
+fetchArtifact org/sonatype/sisu/sisu-parent/1.4.2/sisu-parent-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.pom
+fetchArtifact org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar
+fetchArtifact org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar.sha1
+fetchArtifact org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7.pom
+fetchArtifact org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar
+fetchArtifact org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar.sha1
+fetchArtifact org/sonatype/aether/aether-api/1.7/aether-api-1.7.pom
+fetchArtifact org/sonatype/aether/aether-api/1.7/aether-api-1.7.pom.sha1
+fetchArtifact org/sonatype/aether/aether-api/1.7/aether-api-1.7.jar
+fetchArtifact org/sonatype/aether/aether-api/1.7/aether-api-1.7.jar.sha1
+fetchArtifact org/sonatype/aether/aether-parent/1.7/aether-parent-1.7.pom
+fetchArtifact org/sonatype/aether/aether-parent/1.7/aether-parent-1.7.pom.sha1
+fetchArtifact org/sonatype/aether/aether-util/1.7/aether-util-1.7.pom
+fetchArtifact org/sonatype/aether/aether-util/1.7/aether-util-1.7.pom.sha1
+fetchArtifact org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar
+fetchArtifact org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar.sha1
+fetchArtifact org/sonatype/aether/aether-impl/1.7/aether-impl-1.7.pom
+fetchArtifact org/sonatype/aether/aether-impl/1.7/aether-impl-1.7.pom.sha1
+fetchArtifact org/sonatype/aether/aether-impl/1.7/aether-impl-1.7.jar
+fetchArtifact org/sonatype/aether/aether-impl/1.7/aether-impl-1.7.jar.sha1
+fetchArtifact org/sonatype/aether/aether-spi/1.7/aether-spi-1.7.pom
+fetchArtifact org/sonatype/aether/aether-spi/1.7/aether-spi-1.7.pom.sha1
+fetchArtifact org/sonatype/aether/aether-spi/1.7/aether-spi-1.7.jar
+fetchArtifact org/sonatype/aether/aether-spi/1.7/aether-spi-1.7.jar.sha1
+fetchArtifact org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.pom
+fetchArtifact org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.pom.sha1
+fetchArtifact org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar
+fetchArtifact org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar.sha1
+fetchArtifact org/hamcrest/hamcrest-parent/1.1/hamcrest-parent-1.1.pom
+fetchArtifact org/hamcrest/hamcrest-parent/1.1/hamcrest-parent-1.1.pom.sha1
+fetchArtifact org/beanshell/bsh/2.0b4/bsh-2.0b4.pom
+fetchArtifact org/beanshell/bsh/2.0b4/bsh-2.0b4.pom.sha1
+fetchArtifact org/beanshell/bsh/2.0b4/bsh-2.0b4.jar
+fetchArtifact org/beanshell/bsh/2.0b4/bsh-2.0b4.jar.sha1
+fetchArtifact org/beanshell/beanshell/2.0b4/beanshell-2.0b4.pom
+fetchArtifact org/beanshell/beanshell/2.0b4/beanshell-2.0b4.pom.sha1
+fetchArtifact org/mortbay/jetty/jetty/6.1.25/jetty-6.1.25.pom
+fetchArtifact org/mortbay/jetty/jetty/6.1.25/jetty-6.1.25.pom.sha1
+fetchArtifact org/mortbay/jetty/jetty/6.1.25/jetty-6.1.25.jar
+fetchArtifact org/mortbay/jetty/jetty/6.1.25/jetty-6.1.25.jar.sha1
+fetchArtifact org/mortbay/jetty/project/6.1.25/project-6.1.25.pom
+fetchArtifact org/mortbay/jetty/project/6.1.25/project-6.1.25.pom.sha1
+fetchArtifact org/mortbay/jetty/jetty-parent/10/jetty-parent-10.pom
+fetchArtifact org/mortbay/jetty/jetty-parent/10/jetty-parent-10.pom.sha1
+fetchArtifact org/mortbay/jetty/jetty-parent/7/jetty-parent-7.pom
+fetchArtifact org/mortbay/jetty/jetty-parent/7/jetty-parent-7.pom.sha1
+fetchArtifact org/mortbay/jetty/jetty-util/6.1.25/jetty-util-6.1.25.pom
+fetchArtifact org/mortbay/jetty/jetty-util/6.1.25/jetty-util-6.1.25.pom.sha1
+fetchArtifact org/mortbay/jetty/jetty-util/6.1.25/jetty-util-6.1.25.jar
+fetchArtifact org/mortbay/jetty/jetty-util/6.1.25/jetty-util-6.1.25.jar.sha1
+fetchArtifact org/mortbay/jetty/servlet-api/2.5-20081211/servlet-api-2.5-20081211.pom
+fetchArtifact org/mortbay/jetty/servlet-api/2.5-20081211/servlet-api-2.5-20081211.pom.sha1
+fetchArtifact org/mortbay/jetty/servlet-api/2.5-20081211/servlet-api-2.5-20081211.jar
+fetchArtifact org/mortbay/jetty/servlet-api/2.5-20081211/servlet-api-2.5-20081211.jar.sha1
+fetchArtifact org/eclipse/jetty/jetty-parent/14/jetty-parent-14.pom
+fetchArtifact org/eclipse/jetty/jetty-parent/14/jetty-parent-14.pom.sha1
+fetchArtifact org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.pom
+fetchArtifact org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.pom.sha1
+fetchArtifact org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.jar
+fetchArtifact org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.jar.sha1
+fetchArtifact org/eclipse/aether/aether/0.9.0.M2/aether-0.9.0.M2.pom
+fetchArtifact org/eclipse/aether/aether/0.9.0.M2/aether-0.9.0.M2.pom.sha1
+fetchArtifact org/mockito/mockito-core/1.8.5/mockito-core-1.8.5.pom
+fetchArtifact org/mockito/mockito-core/1.8.5/mockito-core-1.8.5.pom.sha1
+fetchArtifact org/mockito/mockito-core/1.8.5/mockito-core-1.8.5.jar
+fetchArtifact org/mockito/mockito-core/1.8.5/mockito-core-1.8.5.jar.sha1
+fetchArtifact org/objenesis/objenesis/1.0/objenesis-1.0.pom
+fetchArtifact org/objenesis/objenesis/1.0/objenesis-1.0.pom.sha1
+fetchArtifact org/objenesis/objenesis/1.0/objenesis-1.0.jar
+fetchArtifact org/objenesis/objenesis/1.0/objenesis-1.0.jar.sha1
+fetchArtifact org/jdom/jdom/1.1/jdom-1.1.pom
+fetchArtifact org/jdom/jdom/1.1/jdom-1.1.pom.sha1
+fetchArtifact org/jdom/jdom/1.1/jdom-1.1.jar
+fetchArtifact org/jdom/jdom/1.1/jdom-1.1.jar.sha1
+fetchArtifact org/vafer/jdependency/0.7/jdependency-0.7.pom
+fetchArtifact org/vafer/jdependency/0.7/jdependency-0.7.pom.sha1
+fetchArtifact org/vafer/jdependency/0.7/jdependency-0.7.jar
+fetchArtifact org/vafer/jdependency/0.7/jdependency-0.7.jar.sha1
+fetchArtifact com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.pom
+fetchArtifact com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.pom.sha1
+fetchArtifact com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.jar
+fetchArtifact com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.jar.sha1
+fetchArtifact com/google/protobuf/protobuf-parent/3.3.0/protobuf-parent-3.3.0.pom
+fetchArtifact com/google/protobuf/protobuf-parent/3.3.0/protobuf-parent-3.3.0.pom.sha1
+fetchArtifact com/google/google/1/google-1.pom
+fetchArtifact com/google/google/1/google-1.pom.sha1
+fetchArtifact com/google/guava/guava/11.0.2/guava-11.0.2.pom
+fetchArtifact com/google/guava/guava/11.0.2/guava-11.0.2.pom.sha1
+fetchArtifact com/google/guava/guava/11.0.2/guava-11.0.2.jar
+fetchArtifact com/google/guava/guava/11.0.2/guava-11.0.2.jar.sha1
+fetchArtifact com/google/guava/guava-parent/11.0.2/guava-parent-11.0.2.pom
+fetchArtifact com/google/guava/guava-parent/11.0.2/guava-parent-11.0.2.pom.sha1
+fetchArtifact com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.pom
+fetchArtifact com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.pom.sha1
+fetchArtifact com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar
+fetchArtifact com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar.sha1
+fetchArtifact com/google/collections/google-collections/1.0/google-collections-1.0.pom
+fetchArtifact com/google/collections/google-collections/1.0/google-collections-1.0.pom.sha1
+fetchArtifact com/jcraft/jsch/0.1.44-1/jsch-0.1.44-1.pom
+fetchArtifact com/jcraft/jsch/0.1.44-1/jsch-0.1.44-1.pom.sha1
+fetchArtifact com/jcraft/jsch/0.1.44-1/jsch-0.1.44-1.jar
+fetchArtifact com/jcraft/jsch/0.1.44-1/jsch-0.1.44-1.jar.sha1
+fetchArtifact com/thoughtworks/qdox/qdox/1.12/qdox-1.12.pom
+fetchArtifact com/thoughtworks/qdox/qdox/1.12/qdox-1.12.pom.sha1
+fetchArtifact com/thoughtworks/qdox/qdox/1.12/qdox-1.12.jar
+fetchArtifact com/thoughtworks/qdox/qdox/1.12/qdox-1.12.jar.sha1
+fetchArtifact junit/junit/4.10/junit-4.10.pom
+fetchArtifact junit/junit/4.10/junit-4.10.pom.sha1
+fetchArtifact junit/junit/3.8.1/junit-3.8.1.pom
+fetchArtifact junit/junit/3.8.1/junit-3.8.1.pom.sha1
+fetchArtifact junit/junit/3.8.1/junit-3.8.1.jar
+fetchArtifact junit/junit/3.8.1/junit-3.8.1.jar.sha1
+fetchArtifact junit/junit/3.8.2/junit-3.8.2.pom
+fetchArtifact junit/junit/3.8.2/junit-3.8.2.pom.sha1
+fetchArtifact classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.pom
+fetchArtifact classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.pom.sha1
+fetchArtifact classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar
+fetchArtifact classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar.sha1
+fetchArtifact classworlds/classworlds/1.1/classworlds-1.1.pom
+fetchArtifact classworlds/classworlds/1.1/classworlds-1.1.pom.sha1
+fetchArtifact classworlds/classworlds/1.1/classworlds-1.1.jar
+fetchArtifact classworlds/classworlds/1.1/classworlds-1.1.jar.sha1
+fetchArtifact commons-cli/commons-cli/1.0/commons-cli-1.0.pom
+fetchArtifact commons-cli/commons-cli/1.0/commons-cli-1.0.pom.sha1
+fetchArtifact commons-cli/commons-cli/1.0/commons-cli-1.0.jar
+fetchArtifact commons-cli/commons-cli/1.0/commons-cli-1.0.jar.sha1
+fetchArtifact doxia/doxia-sink-api/1.0-alpha-4/doxia-sink-api-1.0-alpha-4.pom
+fetchArtifact doxia/doxia-sink-api/1.0-alpha-4/doxia-sink-api-1.0-alpha-4.pom.sha1
+fetchArtifact commons-collections/commons-collections/3.1/commons-collections-3.1.pom
+fetchArtifact commons-collections/commons-collections/3.1/commons-collections-3.1.pom.sha1
+fetchArtifact commons-collections/commons-collections/3.1/commons-collections-3.1.jar
+fetchArtifact commons-collections/commons-collections/3.1/commons-collections-3.1.jar.sha1
+fetchArtifact commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.pom
+fetchArtifact commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.pom.sha1
+fetchArtifact commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar
+fetchArtifact commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar.sha1
+fetchArtifact commons-collections/commons-collections/2.0/commons-collections-2.0.pom
+fetchArtifact commons-collections/commons-collections/2.0/commons-collections-2.0.pom.sha1
+fetchArtifact commons-collections/commons-collections/2.1/commons-collections-2.1.pom
+fetchArtifact commons-collections/commons-collections/2.1/commons-collections-2.1.pom.sha1
+fetchArtifact commons-collections/commons-collections/3.2/commons-collections-3.2.pom
+fetchArtifact commons-collections/commons-collections/3.2/commons-collections-3.2.pom.sha1
+fetchArtifact commons-collections/commons-collections/3.2/commons-collections-3.2.jar
+fetchArtifact commons-collections/commons-collections/3.2/commons-collections-3.2.jar.sha1
+fetchArtifact commons-lang/commons-lang/2.4/commons-lang-2.4.pom
+fetchArtifact commons-lang/commons-lang/2.4/commons-lang-2.4.pom.sha1
+fetchArtifact commons-lang/commons-lang/2.4/commons-lang-2.4.jar
+fetchArtifact commons-lang/commons-lang/2.4/commons-lang-2.4.jar.sha1
+fetchArtifact commons-lang/commons-lang/2.1/commons-lang-2.1.pom
+fetchArtifact commons-lang/commons-lang/2.1/commons-lang-2.1.pom.sha1
+fetchArtifact commons-lang/commons-lang/2.1/commons-lang-2.1.jar
+fetchArtifact commons-lang/commons-lang/2.1/commons-lang-2.1.jar.sha1
+fetchArtifact commons-lang/commons-lang/2.5/commons-lang-2.5.pom
+fetchArtifact commons-lang/commons-lang/2.5/commons-lang-2.5.pom.sha1
+fetchArtifact commons-lang/commons-lang/2.5/commons-lang-2.5.jar
+fetchArtifact commons-lang/commons-lang/2.5/commons-lang-2.5.jar.sha1
+fetchArtifact commons-lang/commons-lang/2.6/commons-lang-2.6.pom
+fetchArtifact commons-lang/commons-lang/2.6/commons-lang-2.6.pom.sha1
+fetchArtifact commons-lang/commons-lang/2.6/commons-lang-2.6.jar
+fetchArtifact commons-lang/commons-lang/2.6/commons-lang-2.6.jar.sha1
+fetchArtifact oro/oro/2.0.8/oro-2.0.8.pom
+fetchArtifact oro/oro/2.0.8/oro-2.0.8.pom.sha1
+fetchArtifact oro/oro/2.0.8/oro-2.0.8.jar
+fetchArtifact oro/oro/2.0.8/oro-2.0.8.jar.sha1
+fetchArtifact velocity/velocity/1.5/velocity-1.5.pom
+fetchArtifact velocity/velocity/1.5/velocity-1.5.pom.sha1
+fetchArtifact velocity/velocity/1.5/velocity-1.5.jar
+fetchArtifact velocity/velocity/1.5/velocity-1.5.jar.sha1
+fetchArtifact xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.pom
+fetchArtifact xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.pom.sha1
+fetchArtifact xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar
+fetchArtifact xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar.sha1
+fetchArtifact xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.pom
+fetchArtifact xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.pom.sha1
+fetchArtifact xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.jar
+fetchArtifact xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.jar.sha1
+fetchArtifact xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.pom
+fetchArtifact xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.pom.sha1
+fetchArtifact xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar
+fetchArtifact xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar.sha1
+fetchArtifact xml-apis/xml-apis/2.0.2/xml-apis-2.0.2.pom
+fetchArtifact xml-apis/xml-apis/2.0.2/xml-apis-2.0.2.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom
+fetchArtifact commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar
+fetchArtifact commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar.sha1
+fetchArtifact commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.pom
+fetchArtifact commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.1/commons-logging-1.1.pom
+fetchArtifact commons-logging/commons-logging/1.1/commons-logging-1.1.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.0/commons-logging-1.0.pom
+fetchArtifact commons-logging/commons-logging/1.0/commons-logging-1.0.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.pom
+fetchArtifact commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar
+fetchArtifact commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar.sha1
+fetchArtifact commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.pom
+fetchArtifact commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.pom.sha1
+fetchArtifact commons-codec/commons-codec/1.3/commons-codec-1.3.pom
+fetchArtifact commons-codec/commons-codec/1.3/commons-codec-1.3.pom.sha1
+fetchArtifact commons-codec/commons-codec/1.3/commons-codec-1.3.jar
+fetchArtifact commons-codec/commons-codec/1.3/commons-codec-1.3.jar.sha1
+fetchArtifact commons-codec/commons-codec/1.2/commons-codec-1.2.pom
+fetchArtifact commons-codec/commons-codec/1.2/commons-codec-1.2.pom.sha1
+fetchArtifact commons-codec/commons-codec/1.2/commons-codec-1.2.jar
+fetchArtifact commons-codec/commons-codec/1.2/commons-codec-1.2.jar.sha1
+fetchArtifact javax/servlet/servlet-api/2.5/servlet-api-2.5.pom
+fetchArtifact javax/servlet/servlet-api/2.5/servlet-api-2.5.pom.sha1
+fetchArtifact javax/servlet/servlet-api/2.5/servlet-api-2.5.jar
+fetchArtifact javax/servlet/servlet-api/2.5/servlet-api-2.5.jar.sha1
+fetchArtifact javax/servlet/servlet-api/2.3/servlet-api-2.3.pom
+fetchArtifact javax/servlet/servlet-api/2.3/servlet-api-2.3.pom.sha1
+fetchArtifact commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.pom
+fetchArtifact commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.pom.sha1
+fetchArtifact commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar
+fetchArtifact commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar.sha1
+fetchArtifact commons-beanutils/commons-beanutils/1.6/commons-beanutils-1.6.pom
+fetchArtifact commons-beanutils/commons-beanutils/1.6/commons-beanutils-1.6.pom.sha1
+fetchArtifact commons-digester/commons-digester/1.8/commons-digester-1.8.pom
+fetchArtifact commons-digester/commons-digester/1.8/commons-digester-1.8.pom.sha1
+fetchArtifact commons-digester/commons-digester/1.8/commons-digester-1.8.jar
+fetchArtifact commons-digester/commons-digester/1.8/commons-digester-1.8.jar.sha1
+fetchArtifact commons-digester/commons-digester/1.6/commons-digester-1.6.pom
+fetchArtifact commons-digester/commons-digester/1.6/commons-digester-1.6.pom.sha1
+fetchArtifact commons-digester/commons-digester/1.6/commons-digester-1.6.jar
+fetchArtifact commons-digester/commons-digester/1.6/commons-digester-1.6.jar.sha1
+fetchArtifact log4j/log4j/1.2.12/log4j-1.2.12.pom
+fetchArtifact log4j/log4j/1.2.12/log4j-1.2.12.pom.sha1
+fetchArtifact log4j/log4j/1.2.14/log4j-1.2.14.pom
+fetchArtifact log4j/log4j/1.2.14/log4j-1.2.14.pom.sha1
+fetchArtifact log4j/log4j/1.2.14/log4j-1.2.14.jar
+fetchArtifact log4j/log4j/1.2.14/log4j-1.2.14.jar.sha1
+fetchArtifact logkit/logkit/1.0.1/logkit-1.0.1.pom
+fetchArtifact logkit/logkit/1.0.1/logkit-1.0.1.pom.sha1
+fetchArtifact avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.pom
+fetchArtifact avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.pom.sha1
+fetchArtifact commons-chain/commons-chain/1.1/commons-chain-1.1.pom
+fetchArtifact commons-chain/commons-chain/1.1/commons-chain-1.1.pom.sha1
+fetchArtifact commons-chain/commons-chain/1.1/commons-chain-1.1.jar
+fetchArtifact commons-chain/commons-chain/1.1/commons-chain-1.1.jar.sha1
+fetchArtifact commons-validator/commons-validator/1.3.1/commons-validator-1.3.1.pom
+fetchArtifact commons-validator/commons-validator/1.3.1/commons-validator-1.3.1.pom.sha1
+fetchArtifact commons-validator/commons-validator/1.3.1/commons-validator-1.3.1.jar
+fetchArtifact commons-validator/commons-validator/1.3.1/commons-validator-1.3.1.jar.sha1
+fetchArtifact commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.pom
+fetchArtifact commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.pom.sha1
+fetchArtifact commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.jar
+fetchArtifact commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.jar.sha1
+fetchArtifact dom4j/dom4j/1.1/dom4j-1.1.pom
+fetchArtifact dom4j/dom4j/1.1/dom4j-1.1.pom.sha1
+fetchArtifact dom4j/dom4j/1.1/dom4j-1.1.jar
+fetchArtifact dom4j/dom4j/1.1/dom4j-1.1.jar.sha1
+fetchArtifact sslext/sslext/1.2-0/sslext-1.2-0.pom
+fetchArtifact sslext/sslext/1.2-0/sslext-1.2-0.pom.sha1
+fetchArtifact sslext/sslext/1.2-0/sslext-1.2-0.jar
+fetchArtifact sslext/sslext/1.2-0/sslext-1.2-0.jar.sha1
+fetchArtifact antlr/antlr/2.7.2/antlr-2.7.2.pom
+fetchArtifact antlr/antlr/2.7.2/antlr-2.7.2.pom.sha1
+fetchArtifact antlr/antlr/2.7.2/antlr-2.7.2.jar
+fetchArtifact antlr/antlr/2.7.2/antlr-2.7.2.jar.sha1
+fetchArtifact commons-io/commons-io/1.4/commons-io-1.4.pom
+fetchArtifact commons-io/commons-io/1.4/commons-io-1.4.pom.sha1
+fetchArtifact commons-io/commons-io/1.4/commons-io-1.4.jar
+fetchArtifact commons-io/commons-io/1.4/commons-io-1.4.jar.sha1
+fetchArtifact commons-io/commons-io/1.3.2/commons-io-1.3.2.pom
+fetchArtifact commons-io/commons-io/1.3.2/commons-io-1.3.2.pom.sha1
+fetchArtifact commons-io/commons-io/1.3.2/commons-io-1.3.2.jar
+fetchArtifact commons-io/commons-io/1.3.2/commons-io-1.3.2.jar.sha1
+fetchArtifact commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.pom
+fetchArtifact commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.pom.sha1
+fetchArtifact commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar
+fetchArtifact commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar.sha1
+fetchArtifact asm/asm/3.3.1/asm-3.3.1.pom
+fetchArtifact asm/asm/3.3.1/asm-3.3.1.pom.sha1
+fetchArtifact asm/asm/3.3.1/asm-3.3.1.jar
+fetchArtifact asm/asm/3.3.1/asm-3.3.1.jar.sha1
+fetchArtifact asm/asm/3.2/asm-3.2.pom
+fetchArtifact asm/asm/3.2/asm-3.2.pom.sha1
+fetchArtifact asm/asm-parent/3.3.1/asm-parent-3.3.1.pom
+fetchArtifact asm/asm-parent/3.3.1/asm-parent-3.3.1.pom.sha1
+fetchArtifact asm/asm-parent/3.2/asm-parent-3.2.pom
+fetchArtifact asm/asm-parent/3.2/asm-parent-3.2.pom.sha1
+fetchArtifact asm/asm-commons/3.3.1/asm-commons-3.3.1.pom
+fetchArtifact asm/asm-commons/3.3.1/asm-commons-3.3.1.pom.sha1
+fetchArtifact asm/asm-commons/3.3.1/asm-commons-3.3.1.jar
+fetchArtifact asm/asm-commons/3.3.1/asm-commons-3.3.1.jar.sha1
+fetchArtifact asm/asm-commons/3.2/asm-commons-3.2.pom
+fetchArtifact asm/asm-commons/3.2/asm-commons-3.2.pom.sha1
+fetchArtifact asm/asm-tree/3.3.1/asm-tree-3.3.1.pom
+fetchArtifact asm/asm-tree/3.3.1/asm-tree-3.3.1.pom.sha1
+fetchArtifact asm/asm-tree/3.3.1/asm-tree-3.3.1.jar
+fetchArtifact asm/asm-tree/3.3.1/asm-tree-3.3.1.jar.sha1
+fetchArtifact asm/asm-tree/3.2/asm-tree-3.2.pom
+fetchArtifact asm/asm-tree/3.2/asm-tree-3.2.pom.sha1
+fetchArtifact asm/asm-analysis/3.2/asm-analysis-3.2.pom
+fetchArtifact asm/asm-analysis/3.2/asm-analysis-3.2.pom.sha1
+fetchArtifact asm/asm-analysis/3.2/asm-analysis-3.2.jar
+fetchArtifact asm/asm-analysis/3.2/asm-analysis-3.2.jar.sha1
+fetchArtifact asm/asm-util/3.2/asm-util-3.2.pom
+fetchArtifact asm/asm-util/3.2/asm-util-3.2.pom.sha1
+fetchArtifact asm/asm-util/3.2/asm-util-3.2.jar
+fetchArtifact asm/asm-util/3.2/asm-util-3.2.jar.sha1
+fetchArtifact backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.pom
+fetchArtifact backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.pom.sha1
+fetchArtifact backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar
+fetchArtifact backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar.sha1
+
+stopNest
diff --git a/nixpkgs/pkgs/applications/networking/cluster/mesos/mesos-deps.nix b/nixpkgs/pkgs/applications/networking/cluster/mesos/mesos-deps.nix
new file mode 100644
index 000000000000..1cf819870f4e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/mesos/mesos-deps.nix
@@ -0,0 +1,14 @@
+{stdenv, curl}:
+
+stdenv.mkDerivation {
+  name = "mesos-maven-deps";
+  builder = ./fetch-mesos-deps.sh;
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "10h0qs7svw0cqjkyxs8z6s3qraa8ga920zfrr59rdlanbwg4klly";
+
+  nativeBuildInputs = [ curl ];
+
+  impureEnvVars = stdenv.lib.fetchers.proxyImpureEnvVars;
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/mesos/nixos.patch b/nixpkgs/pkgs/applications/networking/cluster/mesos/nixos.patch
new file mode 100644
index 000000000000..a6fea024b087
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/mesos/nixos.patch
@@ -0,0 +1,731 @@
+diff --git i/3rdparty/stout/include/stout/os/posix/fork.hpp w/3rdparty/stout/include/stout/os/posix/fork.hpp
+index a29967d..290b98b 100644
+--- i/3rdparty/stout/include/stout/os/posix/fork.hpp
++++ w/3rdparty/stout/include/stout/os/posix/fork.hpp
+@@ -369,7 +369,7 @@ private:
+     if (exec.isSome()) {
+       // Execute the command (via '/bin/sh -c command').
+       const char* command = exec.get().command.c_str();
+-      execlp("sh", "sh", "-c", command, (char*) nullptr);
++      execlp("@sh@", "sh", "-c", command, (char*) nullptr);
+       EXIT(EXIT_FAILURE)
+         << "Failed to execute '" << command << "': " << os::strerror(errno);
+     } else if (wait.isSome()) {
+diff --git i/3rdparty/stout/include/stout/posix/os.hpp w/3rdparty/stout/include/stout/posix/os.hpp
+index 8511dfd..1e7be01 100644
+--- i/3rdparty/stout/include/stout/posix/os.hpp
++++ w/3rdparty/stout/include/stout/posix/os.hpp
+@@ -366,7 +366,7 @@ inline Try<std::set<pid_t>> pids(Option<pid_t> group, Option<pid_t> session)
+ inline Try<Nothing> tar(const std::string& path, const std::string& archive)
+ {
+   Try<std::string> tarOut =
+-    os::shell("tar %s %s %s", "-czf", archive.c_str(), path.c_str());
++    os::shell("@tar@ %s %s %s", "-czf", archive.c_str(), path.c_str());
+ 
+   if (tarOut.isError()) {
+     return Error("Failed to archive " + path + ": " + tarOut.error());
+diff --git i/src/Makefile.am w/src/Makefile.am
+index 68fff14..c572f92 100644
+--- i/src/Makefile.am
++++ w/src/Makefile.am
+@@ -1775,7 +1775,7 @@ if HAS_JAVA
+ 
+ $(MESOS_JAR): $(MESOS_JAR_SOURCE) $(MESOS_JAR_GENERATED) java/mesos.pom
+ 	@echo "Building mesos-$(PACKAGE_VERSION).jar ..."
+-	@cd $(abs_top_builddir)/src/java && $(MVN) -B -f mesos.pom clean package
++	@cd $(abs_top_builddir)/src/java && $(MVN) -B -f mesos.pom -Dmaven.repo.local=@mavenRepo@ clean package
+ 
+ # Convenience library for JNI bindings.
+ # TODO(Charles Reiss): We really should be building the Java library
+diff --git i/src/cli/mesos-scp w/src/cli/mesos-scp
+index a71ab07..1043d1b 100755
+--- i/src/cli/mesos-scp
++++ w/src/cli/mesos-scp
+@@ -19,7 +19,8 @@ if sys.version_info < (2,6,0):
+ 
+ 
+ def scp(host, src, dst):
+-    cmd = 'scp -pr %s %s' % (src, host + ':' + dst)
++    cmd = '@scp@ -pr %s %s' % (src, host + ':' + dst)
++
+     try:
+         process = subprocess.Popen(
+             cmd,
+diff --git i/src/common/command_utils.cpp w/src/common/command_utils.cpp
+index c50be76..388cc53 100644
+--- i/src/common/command_utils.cpp
++++ w/src/common/command_utils.cpp
+@@ -142,7 +142,7 @@ Future<Nothing> tar(
+ 
+   argv.emplace_back(input);
+ 
+-  return launch("tar", argv)
++  return launch("@tar@", argv)
+     .then([]() { return Nothing(); });
+ }
+ 
+@@ -164,7 +164,7 @@ Future<Nothing> untar(
+     argv.emplace_back(directory.get());
+   }
+ 
+-  return launch("tar", argv)
++  return launch("@tar@", argv)
+     .then([]() { return Nothing(); });
+ }
+ 
+@@ -172,7 +172,7 @@ Future<Nothing> untar(
+ Future<string> sha512(const Path& input)
+ {
+ #ifdef __linux__
+-  const string cmd = "sha512sum";
++  const string cmd = "@sha512sum@";
+   vector<string> argv = {
+     cmd,
+     input             // Input file to compute shasum.
+@@ -208,7 +208,7 @@ Future<Nothing> gzip(const Path& input)
+     input
+   };
+ 
+-  return launch("gzip", argv)
++  return launch("@gzip@", argv)
+     .then([]() { return Nothing(); });
+ }
+ 
+@@ -221,7 +221,7 @@ Future<Nothing> decompress(const Path& input)
+     input
+   };
+ 
+-  return launch("gzip", argv)
++  return launch("@gzip@", argv)
+     .then([]() { return Nothing(); });
+ }
+ 
+diff --git i/src/launcher/fetcher.cpp w/src/launcher/fetcher.cpp
+index 42980f5..3aebeed 100644
+--- i/src/launcher/fetcher.cpp
++++ w/src/launcher/fetcher.cpp
+@@ -80,17 +80,17 @@ static Try<bool> extract(
+       strings::endsWith(sourcePath, ".tar.bz2") ||
+       strings::endsWith(sourcePath, ".txz") ||
+       strings::endsWith(sourcePath, ".tar.xz")) {
+-    command = {"tar", "-C", destinationDirectory, "-xf", sourcePath};
++    command = {"@tar@", "-C", destinationDirectory, "-xf", sourcePath};
+   } else if (strings::endsWith(sourcePath, ".gz")) {
+     string pathWithoutExtension = sourcePath.substr(0, sourcePath.length() - 3);
+     string filename = Path(pathWithoutExtension).basename();
+     string destinationPath = path::join(destinationDirectory, filename);
+ 
+-    command = {"gunzip", "-d", "-c"};
++    command = {"@gunzip@", "-d", "-c"};
+     in = Subprocess::PATH(sourcePath);
+     out = Subprocess::PATH(destinationPath);
+   } else if (strings::endsWith(sourcePath, ".zip")) {
+-    command = {"unzip", "-o", "-d", destinationDirectory, sourcePath};
++    command = {"@unzip@", "-o", "-d", destinationDirectory, sourcePath};
+   } else {
+     return false;
+   }
+@@ -193,7 +193,7 @@ static Try<string> copyFile(
+     const string& sourcePath,
+     const string& destinationPath)
+ {
+-  int status = os::spawn("cp", {"cp", sourcePath, destinationPath});
++  int status = os::spawn("cp", {"@cp@", sourcePath, destinationPath});
+ 
+   if (status == -1) {
+     return ErrnoError("Failed to copy '" + sourcePath + "'");
+diff --git i/src/linux/perf.cpp w/src/linux/perf.cpp
+index b301e25..356a2cf 100644
+--- i/src/linux/perf.cpp
++++ w/src/linux/perf.cpp
+@@ -128,7 +128,7 @@ private:
+     // NOTE: The supervisor childhook places perf in its own process group
+     // and will kill the perf process when the parent dies.
+     Try<Subprocess> _perf = subprocess(
+-        "perf",
++        "@perf@",
+         argv,
+         Subprocess::PIPE(),
+         Subprocess::PIPE(),
+diff --git i/src/linux/systemd.cpp w/src/linux/systemd.cpp
+index 6318f48..394d88d 100644
+--- i/src/linux/systemd.cpp
++++ w/src/linux/systemd.cpp
+@@ -196,13 +196,21 @@ bool exists()
+   // This is static as the init system should not change while we are running.
+   static const bool exists = []() -> bool {
+     // (1) Test whether `/sbin/init` links to systemd.
+-    const Result<string> realpath = os::realpath("/sbin/init");
+-    if (realpath.isError() || realpath.isNone()) {
+-      LOG(WARNING) << "Failed to test /sbin/init for systemd environment: "
+-                   << (realpath.isError() ? realpath.error()
+-                                          : "does not exist");
+-
+-      return false;
++    // cstrahan(nixos): first assume we're on NixOS, then try non-NixOS
++    Result<string> realpath = os::realpath("/run/current-system/systemd/lib/systemd/systemd");
++    Result<string> realpathNixOS = realpath;
++    if (realpathNixOS.isError() || realpathNixOS.isNone()) {
++      Result<string> realpathNonNixOS = realpath = os::realpath("/sbin/init");
++      if (realpathNonNixOS.isError() || realpathNonNixOS.isNone()) {
++        LOG(WARNING) << "Failed to test /run/current-system/systemd/lib/systemd/systemd for systemd environment: "
++                     << (realpathNixOS.isError() ? realpathNixOS.error()
++                                                 : "does not exist");
++        LOG(WARNING) << "Failed to test /sbin/init for systemd environment: "
++                     << (realpathNonNixOS.isError() ? realpathNonNixOS.error()
++                                                    : "does not exist");
++
++        return false;
++      }
+     }
+ 
+     CHECK_SOME(realpath);
+@@ -278,6 +286,10 @@ Path hierarchy()
+ 
+ Try<Nothing> daemonReload()
+ {
++  // cstrahan(nixos): should we patch these `systemctl`s?
++  // probably don't want to hard-code a particular systemd store path here,
++  // but if we use /run/current-system/sw/bin/systemctl,
++  // we won't be able to support non-NixOS distros.
+   Try<string> daemonReload = os::shell("systemctl daemon-reload");
+   if (daemonReload.isError()) {
+     return Error("Failed to reload systemd daemon: " + daemonReload.error());
+diff --git i/src/python/cli/src/mesos/cli.py w/src/python/cli/src/mesos/cli.py
+index 4a9b558..c08a8b9 100644
+--- i/src/python/cli/src/mesos/cli.py
++++ w/src/python/cli/src/mesos/cli.py
+@@ -40,7 +40,7 @@ def resolve(master):
+     import subprocess
+ 
+     process = subprocess.Popen(
+-        ['mesos-resolve', master],
++        ['@mesos-resolve@', master],
+         stdin=None,
+         stdout=subprocess.PIPE,
+         stderr=subprocess.PIPE,
+diff --git i/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp w/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp
+index 5b630c1..d63ad69 100644
+--- i/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp
++++ w/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp
+@@ -499,7 +499,7 @@ Future<Option<ContainerLaunchInfo>> DockerVolumeIsolatorProcess::_prepare(
+     // unsafe arbitrary commands).
+     CommandInfo* command = launchInfo.add_pre_exec_commands();
+     command->set_shell(false);
+-    command->set_value("mount");
++    command->set_value("@mount@");
+     command->add_arguments("mount");
+     command->add_arguments("-n");
+     command->add_arguments("--rbind");
+diff --git i/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp w/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp
+index d7fe9a8..1361a4e 100644
+--- i/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp
++++ w/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp
+@@ -154,9 +154,9 @@ Try<Isolator*> LinuxFilesystemIsolatorProcess::create(const Flags& flags)
+       // here because 'create' will only be invoked during
+       // initialization.
+       Try<string> mount = os::shell(
+-          "mount --bind %s %s && "
+-          "mount --make-private %s && "
+-          "mount --make-shared %s",
++          "@mount@ --bind %s %s && "
++          "@mount@ --make-private %s && "
++          "@mount@ --make-shared %s",
+           workDir->c_str(),
+           workDir->c_str(),
+           workDir->c_str(),
+@@ -175,8 +175,8 @@ Try<Isolator*> LinuxFilesystemIsolatorProcess::create(const Flags& flags)
+       LOG(INFO) << "Making '" << workDir.get() << "' a shared mount";
+ 
+       Try<string> mount = os::shell(
+-          "mount --make-private %s && "
+-          "mount --make-shared %s",
++          "@mount@ --make-private %s && "
++          "@mount@ --make-shared %s",
+           workDir->c_str(),
+           workDir->c_str());
+ 
+@@ -422,7 +422,7 @@ Try<vector<CommandInfo>> LinuxFilesystemIsolatorProcess::getPreExecCommands(
+ 
+     CommandInfo command;
+     command.set_shell(false);
+-    command.set_value("mount");
++    command.set_value("@mount@");
+     command.add_arguments("mount");
+     command.add_arguments("-n");
+     command.add_arguments("--rbind");
+@@ -610,7 +610,7 @@ Try<vector<CommandInfo>> LinuxFilesystemIsolatorProcess::getPreExecCommands(
+     // TODO(jieyu): Consider the mode in the volume.
+     CommandInfo command;
+     command.set_shell(false);
+-    command.set_value("mount");
++    command.set_value("@mount@");
+     command.add_arguments("mount");
+     command.add_arguments("-n");
+     command.add_arguments("--rbind");
+diff --git i/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp w/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp
+index 927d95b..576dc63 100644
+--- i/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp
++++ w/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp
+@@ -208,7 +208,7 @@ Future<Option<ContainerLaunchInfo>> SharedFilesystemIsolatorProcess::prepare(
+     }
+ 
+     launchInfo.add_pre_exec_commands()->set_value(
+-        "mount -n --bind " + hostPath + " " + volume.container_path());
++        "@mount@ -n --bind " + hostPath + " " + volume.container_path());
+   }
+ 
+   return launchInfo;
+diff --git i/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp w/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp
+index 25636b5..33ec315 100644
+--- i/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp
++++ w/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp
+@@ -401,7 +401,7 @@ Future<Option<ContainerLaunchInfo>> NvidiaGpuIsolatorProcess::_prepare(
+     }
+ 
+     launchInfo.add_pre_exec_commands()->set_value(
+-      "mount --no-mtab --rbind --read-only " +
++      "@mount@ --no-mtab --rbind --read-only " +
+       volume.HOST_PATH() + " " + target);
+   }
+ 
+diff --git i/src/slave/containerizer/mesos/isolators/gpu/volume.cpp w/src/slave/containerizer/mesos/isolators/gpu/volume.cpp
+index 536a3c7..e2819dd 100644
+--- i/src/slave/containerizer/mesos/isolators/gpu/volume.cpp
++++ w/src/slave/containerizer/mesos/isolators/gpu/volume.cpp
+@@ -274,7 +274,7 @@ Try<NvidiaVolume> NvidiaVolume::create()
+     string path = path::join(hostPath, "bin", binary);
+ 
+     if (!os::exists(path)) {
+-      string command = "which " + binary;
++      string command = "@which@ " + binary;
+       Try<string> which = os::shell(command);
+ 
+       if (which.isSome()) {
+@@ -288,7 +288,7 @@ Try<NvidiaVolume> NvidiaVolume::create()
+                               : "No such file or directory"));
+         }
+ 
+-        command = "cp " + realpath.get() + " " + path;
++        command = "@cp@ " + realpath.get() + " " + path;
+         Try<string> cp = os::shell(command);
+         if (cp.isError()) {
+           return Error("Failed to os::shell '" + command + "': " + cp.error());
+@@ -360,7 +360,7 @@ Try<NvidiaVolume> NvidiaVolume::create()
+             Path(realpath.get()).basename());
+ 
+         if (!os::exists(libraryPath)) {
+-          string command = "cp " + realpath.get() + " " + libraryPath;
++          string command = "@cp@ " + realpath.get() + " " + libraryPath;
+           Try<string> cp = os::shell(command);
+           if (cp.isError()) {
+             return Error("Failed to os::shell '" + command + "':"
+diff --git i/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp w/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp
+index 42bc2e1..2f9066e 100644
+--- i/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp
++++ w/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp
+@@ -131,7 +131,7 @@ Future<Option<ContainerLaunchInfo>> NamespacesPidIsolatorProcess::prepare(
+   //
+   // TOOD(jieyu): Consider unmount the existing /proc.
+   launchInfo.add_pre_exec_commands()->set_value(
+-      "mount -n -t proc proc /proc -o nosuid,noexec,nodev");
++      "@mount@ -n -t proc proc /proc -o nosuid,noexec,nodev");
+ 
+   return launchInfo;
+ }
+diff --git i/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp w/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp
+index fc68f04..267b040 100644
+--- i/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp
++++ w/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp
+@@ -205,9 +205,9 @@ Try<Isolator*> NetworkCniIsolatorProcess::create(const Flags& flags)
+       // here because 'create' will only be invoked during
+       // initialization.
+       Try<string> mount = os::shell(
+-          "mount --bind %s %s && "
+-          "mount --make-private %s && "
+-          "mount --make-shared %s",
++          "@mount@ --bind %s %s && "
++          "@mount@ --make-private %s && "
++          "@mount@ --make-shared %s",
+           rootDir->c_str(),
+           rootDir->c_str(),
+           rootDir->c_str(),
+@@ -227,8 +227,8 @@ Try<Isolator*> NetworkCniIsolatorProcess::create(const Flags& flags)
+       LOG(INFO) << "Making '" << rootDir.get() << "' a shared mount";
+ 
+       Try<string> mount = os::shell(
+-          "mount --make-private %s && "
+-          "mount --make-shared %s",
++          "@mount@ --make-private %s && "
++          "@mount@ --make-shared %s",
+           rootDir->c_str(),
+           rootDir->c_str());
+ 
+diff --git i/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp w/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp
+index 43cf3e4..94bad8b 100644
+--- i/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp
++++ w/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp
+@@ -301,7 +301,7 @@ Try<Nothing> PortMapper::addPortMapping(
+       # Check if the `chain` exists in the iptable. If it does not
+       # exist go ahead and install the chain in the iptables NAT
+       # table.
+-      iptables -w -t nat --list %s
++      @iptables@ -w -t nat --list %s
+       if [ $? -ne 0 ]; then
+         # NOTE: When we create the chain, there is a possibility of a
+         # race due to which a container launch can fail. This can
+@@ -315,25 +315,25 @@ Try<Nothing> PortMapper::addPortMapping(
+         # since it can happen only when the chain is created the first
+         # time and two commands for creation of the chain are executed
+         # simultaneously.
+-        (iptables -w -t nat -N %s || exit 1)
++        (@iptables@ -w -t nat -N %s || exit 1)
+ 
+         # Once the chain has been installed add a rule in the PREROUTING
+         # chain to jump to this chain for any packets that are
+         # destined to a local address.
+-        (iptables -w -t nat -A PREROUTING \
++        (@iptables@ -w -t nat -A PREROUTING \
+         -m addrtype --dst-type LOCAL -j %s || exit 1)
+ 
+         # For locally generated packets we need a rule in the OUTPUT
+         # chain as well, since locally generated packets directly hit
+         # the output CHAIN, bypassing PREROUTING.
+-        (iptables -w -t nat -A OUTPUT \
++        (@iptables@ -w -t nat -A OUTPUT \
+         ! -d 127.0.0.0/8 -m addrtype \
+         --dst-type LOCAL -j %s || exit 1)
+       fi
+ 
+       # Within the `chain` go ahead and install the DNAT rule, if it
+       # does not exist.
+-      (iptables -w -t nat -C %s || iptables -t nat -A %s))~",
++      (@iptables@ -w -t nat -C %s || @iptables@ -t nat -A %s))~",
+       chain,
+       chain,
+       chain,
+@@ -360,7 +360,7 @@ Try<Nothing> PortMapper::delPortMapping()
+       # The iptables command searches for the DNAT rules with tag
+       # "container_id: <CNI_CONTAINERID>", and if it exists goes ahead
+       # and deletes it.
+-      iptables -w -t nat -S %s | sed "/%s/ s/-A/iptables -w -t nat -D/e")~",
++      @iptables@ -w -t nat -S %s | sed "/%s/ s/-A/@iptables@ -w -t nat -D/e")~",
+       chain,
+       getIptablesRuleTag()).get();
+ 
+diff --git i/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp w/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
+index 57d4ccd..68c9577 100644
+--- i/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
++++ w/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
+@@ -1394,19 +1394,19 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
+   // Check the availability of a few Linux commands that we will use.
+   // We use the blocking os::shell here because 'create' will only be
+   // invoked during initialization.
+-  Try<string> checkCommandTc = os::shell("tc filter show");
++  Try<string> checkCommandTc = os::shell("@tc@ filter show");
+   if (checkCommandTc.isError()) {
+     return Error("Check command 'tc' failed: " + checkCommandTc.error());
+   }
+ 
+   // NOTE: loopback device always exists.
+-  Try<string> checkCommandEthtool = os::shell("ethtool -k lo");
++  Try<string> checkCommandEthtool = os::shell("@ethtool@ -k lo");
+   if (checkCommandEthtool.isError()) {
+     return Error("Check command 'ethtool' failed: "
+                  + checkCommandEthtool.error());
+   }
+ 
+-  Try<string> checkCommandIp = os::shell("ip link show");
++  Try<string> checkCommandIp = os::shell("@ip@ link show");
+   if (checkCommandIp.isError()) {
+     return Error("Check command 'ip' failed: " + checkCommandIp.error());
+   }
+@@ -1940,9 +1940,9 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
+     // visible. It's OK to use the blocking os::shell here because
+     // 'create' will only be invoked during initialization.
+     Try<string> mount = os::shell(
+-        "mount --bind %s %s && "
+-        "mount --make-slave %s && "
+-        "mount --make-shared %s",
++        "@mount@ --bind %s %s && "
++        "@mount@ --make-slave %s && "
++        "@mount@ --make-shared %s",
+         bindMountRoot->c_str(),
+         bindMountRoot->c_str(),
+         bindMountRoot->c_str(),
+@@ -1959,8 +1959,8 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
+       // shared mount yet (possibly due to slave crash while preparing
+       // the work directory mount). It's safe to re-do the following.
+       Try<string> mount = os::shell(
+-          "mount --make-slave %s && "
+-          "mount --make-shared %s",
++          "@mount@ --make-slave %s && "
++          "@mount@ --make-shared %s",
+           bindMountRoot->c_str(),
+           bindMountRoot->c_str());
+ 
+@@ -1979,8 +1979,8 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
+           // so that they are in different peer groups.
+           if (entry.shared() == bindMountEntry->shared()) {
+             Try<string> mount = os::shell(
+-                "mount --make-slave %s && "
+-                "mount --make-shared %s",
++                "@mount@ --make-slave %s && "
++                "@mount@ --make-shared %s",
+                 bindMountRoot->c_str(),
+                 bindMountRoot->c_str());
+ 
+@@ -3927,6 +3927,8 @@ Try<Nothing> PortMappingIsolatorProcess::removeHostIPFilters(
+ // TODO(jieyu): Use the Subcommand abstraction to remove most of the
+ // logic here. Completely remove this function once we can assume a
+ // newer kernel where 'setns' works for mount namespaces.
++// cstrahan(nixos): this is executed in the container,
++// so we don't want to substitute paths here.
+ string PortMappingIsolatorProcess::scripts(Info* info)
+ {
+   ostringstream script;
+@@ -3937,7 +3939,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+   // Mark the mount point PORT_MAPPING_BIND_MOUNT_ROOT() as slave
+   // mount so that changes in the container will not be propagated to
+   // the host.
+-  script << "mount --make-rslave " << bindMountRoot << "\n";
++  script << "@mount@ --make-rslave " << bindMountRoot << "\n";
+ 
+   // Disable IPv6 when IPv6 module is loaded as IPv6 packets won't be
+   // forwarded anyway.
+@@ -3945,7 +3947,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+          << " echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6\n";
+ 
+   // Configure lo and eth0.
+-  script << "ip link set " << lo << " address " << hostMAC
++  script << "@ip@ link set " << lo << " address " << hostMAC
+          << " mtu " << hostEth0MTU << " up\n";
+ 
+   // NOTE: This is mostly a kernel issue: in veth_xmit() the kernel
+@@ -3954,12 +3956,12 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+   // when we receive a packet with a bad checksum. Disabling rx
+   // checksum offloading ensures the TCP layer will checksum and drop
+   // it.
+-  script << "ethtool -K " << eth0 << " rx off\n";
+-  script << "ip link set " << eth0 << " address " << hostMAC << " up\n";
+-  script << "ip addr add " << hostIPNetwork  << " dev " << eth0 << "\n";
++  script << "@ethtool@ -K " << eth0 << " rx off\n";
++  script << "@ip@ link set " << eth0 << " address " << hostMAC << " up\n";
++  script << "@ip@ addr add " << hostIPNetwork  << " dev " << eth0 << "\n";
+ 
+   // Set up the default gateway to match that of eth0.
+-  script << "ip route add default via " << hostDefaultGateway << "\n";
++  script << "@ip@ route add default via " << hostDefaultGateway << "\n";
+ 
+   // Restrict the ephemeral ports that can be used by the container.
+   script << "echo " << info->ephemeralPorts.lower() << " "
+@@ -3988,19 +3990,19 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+   }
+ 
+   // Set up filters on lo and eth0.
+-  script << "tc qdisc add dev " << lo << " ingress\n";
+-  script << "tc qdisc add dev " << eth0 << " ingress\n";
++  script << "@tc@ qdisc add dev " << lo << " ingress\n";
++  script << "@tc@ qdisc add dev " << eth0 << " ingress\n";
+ 
+   // Allow talking between containers and from container to host.
+   // TODO(chzhcn): Consider merging the following two filters.
+-  script << "tc filter add dev " << lo << " parent " << ingress::HANDLE
++  script << "@tc@ filter add dev " << lo << " parent " << ingress::HANDLE
+          << " protocol ip"
+          << " prio " << Priority(IP_FILTER_PRIORITY, NORMAL).get() << " u32"
+          << " flowid ffff:0"
+          << " match ip dst " << hostIPNetwork.address()
+          << " action mirred egress redirect dev " << eth0 << "\n";
+ 
+-  script << "tc filter add dev " << lo << " parent " << ingress::HANDLE
++  script << "@tc@ filter add dev " << lo << " parent " << ingress::HANDLE
+          << " protocol ip"
+          << " prio " << Priority(IP_FILTER_PRIORITY, NORMAL).get() << " u32"
+          << " flowid ffff:0"
+@@ -4011,7 +4013,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+   foreach (const PortRange& range,
+            getPortRanges(info->nonEphemeralPorts + info->ephemeralPorts)) {
+     // Local traffic inside a container will not be redirected to eth0.
+-    script << "tc filter add dev " << lo << " parent " << ingress::HANDLE
++    script << "@tc@ filter add dev " << lo << " parent " << ingress::HANDLE
+            << " protocol ip"
+            << " prio " << Priority(IP_FILTER_PRIORITY, HIGH).get() << " u32"
+            << " flowid ffff:0"
+@@ -4020,7 +4022,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+ 
+     // Traffic going to host loopback IP and ports assigned to this
+     // container will be redirected to lo.
+-    script << "tc filter add dev " << eth0 << " parent " << ingress::HANDLE
++    script << "@tc@ filter add dev " << eth0 << " parent " << ingress::HANDLE
+            << " protocol ip"
+            << " prio " << Priority(IP_FILTER_PRIORITY, NORMAL).get() << " u32"
+            << " flowid ffff:0"
+@@ -4032,14 +4034,14 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+   }
+ 
+   // Do not forward the ICMP packet if the destination IP is self.
+-  script << "tc filter add dev " << lo << " parent " << ingress::HANDLE
++  script << "@tc@ filter add dev " << lo << " parent " << ingress::HANDLE
+          << " protocol ip"
+          << " prio " << Priority(ICMP_FILTER_PRIORITY, NORMAL).get() << " u32"
+          << " flowid ffff:0"
+          << " match ip protocol 1 0xff"
+          << " match ip dst " << hostIPNetwork.address() << "\n";
+ 
+-  script << "tc filter add dev " << lo << " parent " << ingress::HANDLE
++  script << "@tc@ filter add dev " << lo << " parent " << ingress::HANDLE
+          << " protocol ip"
+          << " prio " << Priority(ICMP_FILTER_PRIORITY, NORMAL).get() << " u32"
+          << " flowid ffff:0"
+@@ -4048,9 +4050,9 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+          << net::IP::Network::LOOPBACK_V4().address() << "\n";
+ 
+   // Display the filters created on eth0 and lo.
+-  script << "tc filter show dev " << eth0
++  script << "@tc@ filter show dev " << eth0
+          << " parent " << ingress::HANDLE << "\n";
+-  script << "tc filter show dev " << lo
++  script << "@tc@ filter show dev " << lo
+          << " parent " << ingress::HANDLE << "\n";
+ 
+   // If throughput limit for container egress traffic exists, use HTB
+@@ -4062,9 +4064,9 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+   // throughput. TBF requires other parameters such as 'burst' that
+   // HTB already has default values for.
+   if (egressRateLimitPerContainer.isSome()) {
+-    script << "tc qdisc add dev " << eth0 << " root handle "
++    script << "@tc@ qdisc add dev " << eth0 << " root handle "
+            << CONTAINER_TX_HTB_HANDLE << " htb default 1\n";
+-    script << "tc class add dev " << eth0 << " parent "
++    script << "@tc@ class add dev " << eth0 << " parent "
+            << CONTAINER_TX_HTB_HANDLE << " classid "
+            << CONTAINER_TX_HTB_CLASS_ID << " htb rate "
+            << egressRateLimitPerContainer.get().bytes() * 8 << "bit\n";
+@@ -4075,12 +4077,12 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+     // fq_codel, which has a larger buffer and better control on
+     // buffer bloat.
+     // TODO(cwang): Verity that fq_codel qdisc is available.
+-    script << "tc qdisc add dev " << eth0
++    script << "@tc@ qdisc add dev " << eth0
+            << " parent " << CONTAINER_TX_HTB_CLASS_ID << " fq_codel\n";
+ 
+     // Display the htb qdisc and class created on eth0.
+-    script << "tc qdisc show dev " << eth0 << "\n";
+-    script << "tc class show dev " << eth0 << "\n";
++    script << "@tc@ qdisc show dev " << eth0 << "\n";
++    script << "@tc@ class show dev " << eth0 << "\n";
+   }
+ 
+   return script.str();
+diff --git i/src/slave/containerizer/mesos/isolators/posix/disk.cpp w/src/slave/containerizer/mesos/isolators/posix/disk.cpp
+index eb23025..db268ea 100644
+--- i/src/slave/containerizer/mesos/isolators/posix/disk.cpp
++++ w/src/slave/containerizer/mesos/isolators/posix/disk.cpp
+@@ -572,7 +572,7 @@ private:
+     // NOTE: The supervisor childhook will watch the parent process and kill
+     // the 'du' process in case that the parent die.
+     Try<Subprocess> s = subprocess(
+-        "du",
++        "@du@",
+         command,
+         Subprocess::PATH(os::DEV_NULL),
+         Subprocess::PIPE(),
+diff --git i/src/slave/containerizer/mesos/isolators/volume/image.cpp w/src/slave/containerizer/mesos/isolators/volume/image.cpp
+index 35966aa..b62fc86 100644
+--- i/src/slave/containerizer/mesos/isolators/volume/image.cpp
++++ w/src/slave/containerizer/mesos/isolators/volume/image.cpp
+@@ -231,7 +231,7 @@ Future<Option<ContainerLaunchInfo>> VolumeImageIsolatorProcess::_prepare(
+ 
+     CommandInfo* command = launchInfo.add_pre_exec_commands();
+     command->set_shell(false);
+-    command->set_value("mount");
++    command->set_value("@mount@");
+     command->add_arguments("mount");
+     command->add_arguments("-n");
+     command->add_arguments("--rbind");
+diff --git i/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp w/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp
+index b321b86..8ed3e78 100644
+--- i/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp
++++ w/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp
+@@ -265,7 +265,7 @@ Future<Option<ContainerLaunchInfo>> VolumeSandboxPathIsolatorProcess::prepare(
+ 
+       CommandInfo* command = launchInfo.add_pre_exec_commands();
+       command->set_shell(false);
+-      command->set_value("mount");
++      command->set_value("@mount@");
+       command->add_arguments("mount");
+       command->add_arguments("-n");
+       command->add_arguments("--rbind");
+diff --git i/src/slave/containerizer/mesos/provisioner/backends/copy.cpp w/src/slave/containerizer/mesos/provisioner/backends/copy.cpp
+index 69faa03..01a3ed6 100644
+--- i/src/slave/containerizer/mesos/provisioner/backends/copy.cpp
++++ w/src/slave/containerizer/mesos/provisioner/backends/copy.cpp
+@@ -266,7 +266,7 @@ Future<Nothing> CopyBackendProcess::_provision(
+ #endif // __APPLE__ || __FreeBSD__
+ 
+   Try<Subprocess> s = subprocess(
+-      "cp",
++      "@cp@",
+       args,
+       Subprocess::PATH(os::DEV_NULL),
+       Subprocess::PATH(os::DEV_NULL),
+@@ -313,7 +313,7 @@ Future<bool> CopyBackendProcess::destroy(const string& rootfs)
+   vector<string> argv{"rm", "-rf", rootfs};
+ 
+   Try<Subprocess> s = subprocess(
+-      "rm",
++      "@rm@",
+       argv,
+       Subprocess::PATH(os::DEV_NULL),
+       Subprocess::FD(STDOUT_FILENO),
+diff --git i/src/uri/fetchers/copy.cpp w/src/uri/fetchers/copy.cpp
+index 17f69be..831b08a 100644
+--- i/src/uri/fetchers/copy.cpp
++++ w/src/uri/fetchers/copy.cpp
+@@ -97,8 +97,8 @@ Future<Nothing> CopyFetcherPlugin::fetch(
+   VLOG(1) << "Copying '" << uri.path() << "' to '" << directory << "'";
+ 
+ #ifndef __WINDOWS__
+-  const char* copyCommand = "cp";
+-  const vector<string> argv = {"cp", "-a", uri.path(), directory};
++  const char* copyCommand = "@cp@";
++  const vector<string> argv = {"@cp@", "-a", uri.path(), directory};
+ #else // __WINDOWS__
+   const char* copyCommand = os::Shell::name;
+   const vector<string> argv =
+diff --git i/src/uri/fetchers/curl.cpp w/src/uri/fetchers/curl.cpp
+index f34daf2..6a50341 100644
+--- i/src/uri/fetchers/curl.cpp
++++ w/src/uri/fetchers/curl.cpp
+@@ -109,7 +109,7 @@ Future<Nothing> CurlFetcherPlugin::fetch(
+   };
+ 
+   Try<Subprocess> s = subprocess(
+-      "curl",
++      "@curl@",
+       argv,
+       Subprocess::PATH(os::DEV_NULL),
+       Subprocess::PIPE(),
+diff --git i/src/uri/fetchers/docker.cpp w/src/uri/fetchers/docker.cpp
+index 91db13b..82a7fc4 100644
+--- i/src/uri/fetchers/docker.cpp
++++ w/src/uri/fetchers/docker.cpp
+@@ -114,7 +114,7 @@ static Future<http::Response> curl(
+ 
+   // TODO(jieyu): Kill the process if discard is called.
+   Try<Subprocess> s = subprocess(
+-      "curl",
++      "@curl@",
+       argv,
+       Subprocess::PATH(os::DEV_NULL),
+       Subprocess::PIPE(),
+@@ -229,7 +229,7 @@ static Future<int> download(
+ 
+   // TODO(jieyu): Kill the process if discard is called.
+   Try<Subprocess> s = subprocess(
+-      "curl",
++      "@curl@",
+       argv,
+       Subprocess::PATH(os::DEV_NULL),
+       Subprocess::PIPE(),
diff --git a/nixpkgs/pkgs/applications/networking/cluster/mesos/rb36610.patch b/nixpkgs/pkgs/applications/networking/cluster/mesos/rb36610.patch
new file mode 100644
index 000000000000..bee578cc3e93
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/mesos/rb36610.patch
@@ -0,0 +1,12 @@
+diff --git a/src/linux/fs.cpp b/src/linux/fs.cpp
+index 913e233..c2917a6 100644
+--- a/src/linux/fs.cpp
++++ b/src/linux/fs.cpp
+@@ -17,6 +17,7 @@
+ #include <errno.h>
+ #include <stdio.h>
+ #include <string.h>
++#include <syscall.h>
+ 
+ #include <linux/limits.h>
+ #include <linux/unistd.h>
diff --git a/nixpkgs/pkgs/applications/networking/cluster/minikube/default.nix b/nixpkgs/pkgs/applications/networking/cluster/minikube/default.nix
new file mode 100644
index 000000000000..c409bf4712c8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/minikube/default.nix
@@ -0,0 +1,56 @@
+{ stdenv
+, buildGoModule
+, fetchFromGitHub
+, go-bindata
+, installShellFiles
+, pkg-config
+, which
+, libvirt
+, vmnet
+}:
+
+buildGoModule rec {
+  pname = "minikube";
+  version = "1.11.0";
+
+  # for -ldflags
+  commit = "57e2f55f47effe9ce396cea42a1e0eb4f611ebbd";
+
+  vendorSha256 = "1l9dxn7yy21x4b3cg6l5a08wx2ng8qf531ilg8yf1rznwfwjajrv";
+
+  src = fetchFromGitHub {
+    owner = "kubernetes";
+    repo = "minikube";
+    rev = "v${version}";
+    sha256 = "0y761svwyrpc4ywdd4vr9hxkg6593wg4wwqzn8n86g0zcz6qg11d";
+  };
+
+  nativeBuildInputs = [ go-bindata installShellFiles pkg-config which ];
+
+  buildInputs = if stdenv.isDarwin then [ vmnet ] else if stdenv.isLinux then [ libvirt ] else null;
+
+  buildPhase = ''
+    make COMMIT=${commit}
+  '';
+
+  installPhase = ''
+    install out/minikube -Dt $out/bin
+
+    export HOME=$PWD
+    export MINIKUBE_WANTUPDATENOTIFICATION=false
+    export MINIKUBE_WANTKUBECTLDOWNLOADMSG=false
+
+    for shell in bash zsh; do
+      $out/bin/minikube completion $shell > minikube.$shell
+      installShellCompletion minikube.$shell
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://minikube.sigs.k8s.io";
+    description = "A tool that makes it easy to run Kubernetes locally";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ebzzry copumpkin vdemeester atkinschang ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/minishift/default.nix b/nixpkgs/pkgs/applications/networking/cluster/minishift/default.nix
new file mode 100644
index 000000000000..cd11bcbb431c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/minishift/default.nix
@@ -0,0 +1,67 @@
+{ lib, buildGoPackage, fetchFromGitHub, go-bindata, pkgconfig, makeWrapper
+, glib, gtk3, libappindicator-gtk3, gpgme, openshift, ostree, libselinux, btrfs-progs
+, lvm2, docker-machine-kvm
+}:
+
+let
+  version = "1.34.2";
+
+  # Update these on version bumps according to Makefile
+  centOsIsoVersion = "v1.15.0";
+  openshiftVersion = "v3.11.0";
+
+in buildGoPackage rec {
+  pname = "minishift";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "minishift";
+    repo = "minishift";
+    rev = "v${version}";
+    sha256 = "1xzjzmjs2ijg7zzw53v02lgrg1j82jd7ljcn6lprg01hhvfrwgg7";
+  };
+
+  nativeBuildInputs = [ pkgconfig go-bindata makeWrapper ];
+  buildInputs = [ glib gtk3 libappindicator-gtk3 gpgme ostree libselinux btrfs-progs lvm2 ];
+
+  goPackagePath = "github.com/minishift/minishift";
+  subPackages = [ "cmd/minishift" ];
+
+  postPatch = ''
+    # minishift downloads openshift if not found therefore set the cache to /nix/store/...
+    substituteInPlace pkg/minishift/cache/oc_caching.go \
+      --replace 'filepath.Join(oc.MinishiftCacheDir, OC_CACHE_DIR, oc.OpenShiftVersion, runtime.GOOS)' '"${openshift}/bin"' \
+      --replace '"runtime"' ""
+  '';
+
+  buildFlagsArray = ''
+    -ldflags=
+      -X ${goPackagePath}/pkg/version.minishiftVersion=${version}
+      -X ${goPackagePath}/pkg/version.centOsIsoVersion=${centOsIsoVersion}
+      -X ${goPackagePath}/pkg/version.openshiftVersion=${openshiftVersion}
+  '';
+
+  preBuild = ''
+    (cd go/src/github.com/minishift/minishift
+      mkdir -p out/bindata
+      go-bindata -prefix addons -o out/bindata/addon_assets.go -pkg bindata addons/...)
+  '';
+
+  postInstall = ''
+    wrapProgram "$out/bin/minishift" \
+      --prefix PATH ':' '${lib.makeBinPath [ docker-machine-kvm openshift ]}'
+  '';
+
+  meta = with lib; {
+    description = "Run OpenShift locally";
+    longDescription = ''
+      Minishift is a tool that helps you run OpenShift locally by running
+      a single-node OpenShift cluster inside a VM. You can try out OpenShift
+      or develop with it, day-to-day, on your local host.
+    '';
+    homepage = "https://github.com/minishift/minishift";
+    maintainers = with maintainers; [ fpletz vdemeester ];
+    platforms = platforms.linux;
+    license = licenses.asl20;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/node-problem-detector/default.nix b/nixpkgs/pkgs/applications/networking/cluster/node-problem-detector/default.nix
new file mode 100644
index 000000000000..652518d892a8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/node-problem-detector/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, buildGoModule, fetchFromGitHub, systemd }:
+
+buildGoModule rec {
+  pname = "node-problem-detector";
+  version = "0.8.2";
+
+  src = fetchFromGitHub {
+    owner = "kubernetes";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0cphlaf9k2va879jgqd6fzdgkscpwg29j1cpr677i3zj3hfgaw1g";
+  };
+
+  vendorSha256 = null;
+
+  # Optionally, a log counter binary can be created to parse journald logs.
+  # The binary is dynamically linked against systemd libraries, making it a
+  # Linux-only feature. See 'ENABLE_JOURNALD' upstream:
+  # https://github.com/kubernetes/node-problem-detector/blob/master/Makefile
+  subPackages = [ "cmd/nodeproblemdetector" ] ++
+    stdenv.lib.optionals stdenv.isLinux [ "cmd/logcounter" ];
+
+  preBuild = ''
+    export CGO_ENABLED=${if stdenv.isLinux then "1" else "0"}
+  '';
+
+  buildInputs = stdenv.lib.optionals stdenv.isLinux [ systemd ];
+
+  buildFlags = "-mod vendor" +
+    stdenv.lib.optionalString stdenv.isLinux " -tags journald";
+
+  buildFlagsArray = [
+    "-ldflags="
+    "-X k8s.io/${pname}/pkg/version.version=v${version}"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Various problem detectors running on the Kubernetes nodes";
+    homepage = "https://github.com/kubernetes/node-problem-detector";
+    changelog = "https://github.com/kubernetes/node-problem-detector/releases/tag/v${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ lbpdt ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/nomad/default.nix b/nixpkgs/pkgs/applications/networking/cluster/nomad/default.nix
new file mode 100644
index 000000000000..990679a86688
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/nomad/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "nomad";
+  version = "0.11.3";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/hashicorp/nomad";
+  subPackages = [ "." ];
+
+  src = fetchFromGitHub {
+    owner = "hashicorp";
+    repo = pname;
+    inherit rev;
+    sha256 = "1p7g7x2gl77h1w7aip3xji3s530fj46gspargz4j3i6h4wkyvafb";
+  };
+
+  # ui:
+  #  Nomad release commits include the compiled version of the UI, but the file
+  #  is only included if we build with the ui tag.
+  # nonvidia:
+  #  We disable Nvidia GPU scheduling on Linux, as it doesn't work there:
+  #  Ref: https://github.com/hashicorp/nomad/issues/5535
+  preBuild = let
+    tags = ["ui"]
+      ++ stdenv.lib.optional stdenv.isLinux "nonvidia";
+    tagsString = stdenv.lib.concatStringsSep " " tags;
+  in ''
+    export buildFlagsArray=(
+      -tags="${tagsString}"
+    )
+ '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.nomadproject.io/";
+    description = "A Distributed, Highly Available, Datacenter-Aware Scheduler";
+    platforms = platforms.unix;
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ rushmorem pradeepchhetri endocrimes ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/openshift/default.nix b/nixpkgs/pkgs/applications/networking/cluster/openshift/default.nix
new file mode 100644
index 000000000000..b547434d8da1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/openshift/default.nix
@@ -0,0 +1,77 @@
+{ stdenv, lib, fetchFromGitHub, buildGoPackage, which, go-bindata, rsync, utillinux
+, coreutils, kerberos, ncurses, clang, installShellFiles
+, components ? [
+  "cmd/oc"
+  "cmd/openshift"
+  ]
+}:
+
+with lib;
+
+let
+  version = "4.1.0";
+  ver = stdenv.lib.elemAt (stdenv.lib.splitVersion version);
+  versionMajor = ver 0;
+  versionMinor = ver 1;
+  versionPatch = ver 2;
+  gitCommit = "b4261e0";
+  # version is in vendor/k8s.io/kubernetes/pkg/version/base.go
+  k8sversion = "v1.11.1";
+  k8sgitcommit = "b1b2997";
+  k8sgitMajor = "0";
+  k8sgitMinor = "1";
+in buildGoPackage rec {
+  pname = "openshift-origin";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "openshift";
+    repo = "origin";
+    rev = "v${version}";
+    sha256 = "16bc6ljm418kxz92gz8ldm82491mvlqamrvigyr6ff72rf7ml7ba";
+  };
+
+  goPackagePath = "github.com/openshift/origin";
+
+  buildInputs = [ kerberos ncurses ];
+
+  nativeBuildInputs = [ which rsync go-bindata clang installShellFiles ];
+
+  patchPhase = ''
+    patchShebangs ./hack
+  '';
+
+  buildPhase = ''
+    cd go/src/${goPackagePath}
+    # Openshift build require this variables to be set
+    # unless there is a .git folder which is not the case with fetchFromGitHub
+    echo "OS_GIT_VERSION=v${version}" >> os-version-defs
+    echo "OS_GIT_TREE_STATE=clean" >> os-version-defs
+    echo "OS_GIT_MAJOR=${versionMajor}" >> os-version-defs
+    echo "OS_GIT_MINOR=${versionMinor}" >> os-version-defs
+    echo "OS_GIT_PATCH=${versionPatch}" >> os-version-defs
+    echo "OS_GIT_COMMIT=${gitCommit}" >> os-version-defs
+    echo "KUBE_GIT_VERSION=${k8sversion}" >> os-version-defs
+    echo "KUBE_GIT_COMMIT=${k8sgitcommit}" >> os-version-defs
+    echo "KUBE_GIT_MAJOR=${k8sgitMajor}" >> os-version-defs
+    echo "KUBE_GIT_MINOR=${k8sgitMinor}" >> os-version-defs
+    export OS_VERSION_FILE="os-version-defs"
+    export CC=clang
+    make all WHAT='${concatStringsSep " " components}'
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -a "_output/local/bin/$(go env GOOS)/$(go env GOARCH)/"* "$out/bin/"
+    installShellCompletion --bash contrib/completions/bash/*
+    installShellCompletion --zsh contrib/completions/zsh/*
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Build, deploy, and manage your applications with Docker and Kubernetes";
+    license = licenses.asl20;
+    homepage = "http://www.openshift.org";
+    maintainers = with maintainers; [offline bachp moretea];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/pachyderm/default.nix b/nixpkgs/pkgs/applications/networking/cluster/pachyderm/default.nix
new file mode 100644
index 000000000000..65a4a1938430
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/pachyderm/default.nix
@@ -0,0 +1,24 @@
+{ lib, fetchFromGitHub, buildGoPackage }:
+
+buildGoPackage rec {
+  pname = "pachyderm";
+  version = "1.8.5";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/pachyderm/pachyderm";
+  subPackages = [ "src/server/cmd/pachctl" ];
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "pachyderm";
+    repo = "pachyderm";
+    sha256 = "1b9x2xn0sxsjid15lnwr79lps8xzf24i7jfl0i48nabdigmi04wp";
+  };
+
+  meta = with lib; {
+    description = "Containerized Data Analytics";
+    homepage = "https://github.com/pachyderm/pachyderm";
+    license = licenses.asl20;
+    maintainers = with maintainers; [offline];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/pig/default.nix b/nixpkgs/pkgs/applications/networking/cluster/pig/default.nix
new file mode 100644
index 000000000000..afcd736e629c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/pig/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, makeWrapper, hadoop, jre, bash }:
+
+stdenv.mkDerivation rec {
+
+  name = "pig-0.17.0";
+
+  src = fetchurl {
+    url = "mirror://apache/pig/${name}/${name}.tar.gz";
+    sha256 = "1wwpg0w47f49rnivn2d26vrxgyfl9gpqx3vmzbl5lhx6x5l3fqbd";
+
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out
+    mv * $out
+
+    # no need for the windows batch script
+    rm $out/bin/pig.cmd $out/bin/pig.py
+
+    for n in $out/{bin,sbin}"/"*; do
+      wrapProgram $n \
+        --prefix PATH : "${stdenv.lib.makeBinPath [ jre bash ]}" \
+        --set JAVA_HOME "${jre}" --set HADOOP_PREFIX "${hadoop}"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://pig.apache.org/";
+    description = "High-level language for Apache Hadoop";
+    license = licenses.asl20;
+
+    longDescription = ''
+      Apache Pig is a platform for analyzing large data sets that consists of a
+      high-level language for expressing data analysis programs, coupled with
+      infrastructure for evaluating these programs. The salient property of Pig
+      programs is that their structure is amenable to substantial parallelization,
+      which in turns enables them to handle very large data sets.
+    '';
+
+    platforms = platforms.linux;
+    maintainers = [ maintainers.skeidel ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/prow/default.nix b/nixpkgs/pkgs/applications/networking/cluster/prow/default.nix
new file mode 100644
index 000000000000..4ad685418d35
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/prow/default.nix
@@ -0,0 +1,66 @@
+{ buildGoModule, fetchFromGitHub, lib }:
+
+buildGoModule rec {
+  pname = "prow-unstable";
+  version = "2020-04-01";
+  rev = "32e3b5ce7695fb622381421653db436cb57b47c5";
+
+  src = fetchFromGitHub {
+    inherit rev;
+
+    owner = "kubernetes";
+    repo = "test-infra";
+    sha256 = "0mc3ynmbf3kidibdy8k3v3xjlvmxl8w7zm1z2m0skmhd0y4bpmk4";
+  };
+
+  vendorSha256 = "16fdc5r28andm8my4fxj0f1yygx6j2mvn92i6xdfhbcra0lvr4ql";
+
+  subPackages = [
+    "prow/cmd/admission"
+    "prow/cmd/branchprotector"
+    "prow/cmd/checkconfig"
+    "prow/cmd/clonerefs"
+    "prow/cmd/cm2kc"
+    "prow/cmd/config-bootstrapper"
+    "prow/cmd/crier"
+    "prow/cmd/deck"
+    "prow/cmd/entrypoint"
+    "prow/cmd/exporter"
+    "prow/cmd/gcsupload"
+    "prow/cmd/gerrit"
+    "prow/cmd/hook"
+    "prow/cmd/horologium"
+    "prow/cmd/initupload"
+    "prow/cmd/jenkins-operator"
+    "prow/cmd/mkbuild-cluster"
+    "prow/cmd/mkpj"
+    "prow/cmd/mkpod"
+    "prow/cmd/peribolos"
+    "prow/cmd/phaino"
+    "prow/cmd/phony"
+    "prow/cmd/pipeline"
+    "prow/cmd/plank"
+    "prow/cmd/sidecar"
+    "prow/cmd/sinker"
+    "prow/cmd/status-reconciler"
+    "prow/cmd/sub"
+    "prow/cmd/tackle"
+    "prow/cmd/tide"
+    "prow/cmd/tot"
+  ];
+
+  meta = with lib; {
+    description = "Prow is a Kubernetes based CI/CD system";
+    longDescription = ''
+      Prow is a Kubernetes based CI/CD system. Jobs can be triggered by various
+      types of events and report their status to many different services. In
+      addition to job execution, Prow provides GitHub automation in the form of
+      policy enforcement, chat-ops via /foo style commands, and automatic PR
+      merging.
+    '';
+    homepage = "https://github.com/kubernetes/test-infra/tree/master/prow";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/qbec/default.nix b/nixpkgs/pkgs/applications/networking/cluster/qbec/default.nix
new file mode 100644
index 000000000000..0689fd096b3b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/qbec/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "qbec";
+  version = "0.12.0";
+
+  src = fetchFromGitHub {
+    owner = "splunk";
+    repo = "qbec";
+    rev = "v${version}";
+    sha256 = "0vy1cqqyga68qjbvyhsgl281qkbsvhvmwbxc93hygsxzm9kczy4p";
+  };
+
+  vendorSha256 = "15hbjghi2ifylg7nr85qlk0alsy97h9zj6hf5w84m76dla2bcjf3";
+
+  meta = with lib; {
+    description = "Configure kubernetes objects on multiple clusters using jsonnet https://qbec.io";
+    homepage = "https://github.com/splunk/qbec";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ groodt ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/sonobuoy/default.nix b/nixpkgs/pkgs/applications/networking/cluster/sonobuoy/default.nix
new file mode 100644
index 000000000000..32dbced0a461
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/sonobuoy/default.nix
@@ -0,0 +1,43 @@
+{ lib, buildGoPackage, fetchFromGitHub }:
+
+# SHA of ${version} for the tool's help output
+let rev = "c9c2a461cd3397909fe6e45ff71836347ef89fd8";
+in
+buildGoPackage rec {
+  pname = "sonobuoy";
+  version = "0.16.1";
+
+  goPackagePath = "github.com/heptio/sonobuoy";
+
+  buildFlagsArray =
+    let t = goPackagePath;
+    in ''
+      -ldflags=
+        -s -X ${t}/pkg/buildinfo.Version=${version}
+           -X ${t}/pkg/buildinfo.GitSHA=${rev}
+           -X ${t}/pkg/buildDate=unknown
+    '';
+
+  src = fetchFromGitHub {
+    sha256 = "14qc5a7jbr403wjpk6pgpb94i72yx647sg9srz07q6drq650kyfv";
+    rev = "v${version}";
+    repo = "sonobuoy";
+    owner = "vmware-tanzu";
+  };
+
+  meta = with lib; {
+    description = ''
+      Diagnostic tool that makes it easier to understand the
+      state of a Kubernetes cluster.
+    '';
+    longDescription = ''
+      Sonobuoy is a diagnostic tool that makes it easier to understand the state of
+      a Kubernetes cluster by running a set of Kubernetes conformance tests in an
+      accessible and non-destructive manner.
+    '';
+
+    homepage = "https://sonobuoy.io";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ carlosdagos saschagrunert ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/spacegun/default.nix b/nixpkgs/pkgs/applications/networking/cluster/spacegun/default.nix
new file mode 100644
index 000000000000..2180d8d30489
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/spacegun/default.nix
@@ -0,0 +1,27 @@
+{ pkgs, nodejs, stdenv, lib, ... }:
+
+let
+
+  packageName = with lib; concatStrings (map (entry: (concatStrings (mapAttrsToList (key: value: "${key}-${value}") entry))) (importJSON ./package.json));
+
+  nodePackages = import ./node-composition.nix {
+    inherit pkgs nodejs;
+    inherit (stdenv.hostPlatform) system;
+  };
+in
+nodePackages."${packageName}".override {
+  nativeBuildInputs = [ pkgs.makeWrapper ];
+
+  postInstall = ''
+    # Patch shebangs in node_modules, otherwise the webpack build fails with interpreter problems
+    patchShebangs --build "$out/lib/node_modules/spacegun/node_modules/"
+    # compile Typescript sources
+    npm run build
+  '';
+
+  meta = with lib; {
+    description = "Version controlled multi-cluster deployment manager for kubernetes";
+    maintainers = with maintainers; [ kampka ];
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/spacegun/generate-dependencies.sh b/nixpkgs/pkgs/applications/networking/cluster/spacegun/generate-dependencies.sh
new file mode 100644
index 000000000000..293a72a16237
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/spacegun/generate-dependencies.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i bash -p nodePackages.node2nix
+
+node2nix \
+  --nodejs-10 \
+  --node-env ../../../../development/node-packages/node-env.nix \
+  --development \
+  --input package.json \
+  --output node-packages.nix \
+  --composition node-composition.nix
diff --git a/nixpkgs/pkgs/applications/networking/cluster/spacegun/node-composition.nix b/nixpkgs/pkgs/applications/networking/cluster/spacegun/node-composition.nix
new file mode 100644
index 000000000000..47cdb6942cec
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/spacegun/node-composition.nix
@@ -0,0 +1,17 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{pkgs ? import <nixpkgs> {
+    inherit system;
+  }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-10_x"}:
+
+let
+  nodeEnv = import ../../../../development/node-packages/node-env.nix {
+    inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile;
+    inherit nodejs;
+    libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
+  };
+in
+import ./node-packages.nix {
+  inherit (pkgs) fetchurl fetchgit;
+  inherit nodeEnv;
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/spacegun/node-packages.nix b/nixpkgs/pkgs/applications/networking/cluster/spacegun/node-packages.nix
new file mode 100644
index 000000000000..981d787c91a0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/spacegun/node-packages.nix
@@ -0,0 +1,11477 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {
+    "@babel/code-frame-7.8.3" = {
+      name = "_at_babel_slash_code-frame";
+      packageName = "@babel/code-frame";
+      version = "7.8.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz";
+        sha512 = "3d85pd9lfbm8yrlpn6wj9g56snbnpr9fx0w1b9x26jbirc2xfrvnifwzprp0f6bhqijshgm0q35axic8d11v4j0kq493dapcyk33n3b";
+      };
+    };
+    "@babel/core-7.8.7" = {
+      name = "_at_babel_slash_core";
+      packageName = "@babel/core";
+      version = "7.8.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/core/-/core-7.8.7.tgz";
+        sha512 = "34gjbasmqp8z2rbwlc5b9sfnvs7fw1hm3i5bcdk0ddymr9b280fbcgfx6mgiwhkv3gzgawjvzcg1bzqp9f0hhifkhrdg8r4fqbnl6dc";
+      };
+    };
+    "@babel/generator-7.8.8" = {
+      name = "_at_babel_slash_generator";
+      packageName = "@babel/generator";
+      version = "7.8.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz";
+        sha512 = "0k5w5pcsv2m6992nh49qjil2b1aqzdbdrcxzcp89v7wq9wx7llnx5ijyzl9w895iry3hnp8mk3srgp52kgz4swvjqf9lwdxxrb99b0w";
+      };
+    };
+    "@babel/helper-function-name-7.8.3" = {
+      name = "_at_babel_slash_helper-function-name";
+      packageName = "@babel/helper-function-name";
+      version = "7.8.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz";
+        sha512 = "0w35m1kq2dmsgdgjxvpmg6gxm1rzl1jqf23h3k7pwh9nmwsmqbgv0rzy7fs6dq31dqq6j17bwyww0091r41aj0rl3zi1nj2a1gn0b04";
+      };
+    };
+    "@babel/helper-get-function-arity-7.8.3" = {
+      name = "_at_babel_slash_helper-get-function-arity";
+      packageName = "@babel/helper-get-function-arity";
+      version = "7.8.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz";
+        sha512 = "12g2gjipd8svg02d12iqbf0rz4m99g36qccn3f81xij3ac4f7kqzx0407xma49h11j88iz8jil2whj7j96wqpwd67abi23xczwd2l0m";
+      };
+    };
+    "@babel/helper-plugin-utils-7.8.3" = {
+      name = "_at_babel_slash_helper-plugin-utils";
+      packageName = "@babel/helper-plugin-utils";
+      version = "7.8.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz";
+        sha512 = "1jj9ibj72hqv1qm4hvdnk728fi9mihrwhq0xcs2qlxbs8iz9d2zb4a23sm7ny0s42asrdyy2s98shgnqm0rhn2314k6pcyxspiymrwg";
+      };
+    };
+    "@babel/helper-split-export-declaration-7.8.3" = {
+      name = "_at_babel_slash_helper-split-export-declaration";
+      packageName = "@babel/helper-split-export-declaration";
+      version = "7.8.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz";
+        sha512 = "1sgm6wd88kmizvig5m0ims97vmlylfii72xcw4k01h2wsw3cpc312s1asnjrq5y472hcqfh2mwn8dwpqkpcvs0ssqwnz1c1xhwz47fz";
+      };
+    };
+    "@babel/helpers-7.8.4" = {
+      name = "_at_babel_slash_helpers";
+      packageName = "@babel/helpers";
+      version = "7.8.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz";
+        sha512 = "3rr2xlnr2hmpbrgysgs0jyrz4bjyg80cxij1wn899v53zqj4i1bcm3ajpnr03v1swlczkzapn7nvzmzhwlqxl1hw5pciq8h0zpxxxjl";
+      };
+    };
+    "@babel/highlight-7.8.3" = {
+      name = "_at_babel_slash_highlight";
+      packageName = "@babel/highlight";
+      version = "7.8.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz";
+        sha512 = "09353nlk7ng0h135l14dhwk4jahsdrapvd0185wra8l73wjbnkb11jl42znj1rxypb38jlzcraxf4xdka1ssis5khgjvgql2kkk4zix";
+      };
+    };
+    "@babel/parser-7.8.8" = {
+      name = "_at_babel_slash_parser";
+      packageName = "@babel/parser";
+      version = "7.8.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz";
+        sha512 = "1q85si9966ra57f43dccjanxnyy65c66lykxgv5z231wpi4w023nk8l7s8m54bp9fv4yd3pl682yh0krny22qmfygxggc2g61dldvlq";
+      };
+    };
+    "@babel/plugin-syntax-object-rest-spread-7.8.3" = {
+      name = "_at_babel_slash_plugin-syntax-object-rest-spread";
+      packageName = "@babel/plugin-syntax-object-rest-spread";
+      version = "7.8.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz";
+        sha512 = "2a9vg6b6p2rfhcflic2w6rbrbiqrdgj4ra2q20g1qv6ncwmvja2jq8snygwfw1ll1k94rqnbj4hc1fpizgr1v35rfvxqvwr6658r2jy";
+      };
+    };
+    "@babel/template-7.8.6" = {
+      name = "_at_babel_slash_template";
+      packageName = "@babel/template";
+      version = "7.8.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz";
+        sha512 = "0z8kzrpis50nr4vsyqr77cpqad0xfsacw45jdhwsl89mdzpvy8wcvc0kdy938kb0ll069plxhgy3a3fpag408ci2pb47gxzrhy2rcyd";
+      };
+    };
+    "@babel/traverse-7.8.6" = {
+      name = "_at_babel_slash_traverse";
+      packageName = "@babel/traverse";
+      version = "7.8.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz";
+        sha512 = "3s53fzm55c14accqfxhvdck1vkj87489w0rhcl7zj8phf9iz21qs0garpghgs0h1cj4s4n2fb7czipdm2mlrj19iaygh37zsv8ja7yq";
+      };
+    };
+    "@babel/types-7.8.7" = {
+      name = "_at_babel_slash_types";
+      packageName = "@babel/types";
+      version = "7.8.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz";
+        sha512 = "0kj404kqcscn0qdpis6kha2263fb0njap0qqcjbwf38jv9qvpxw39f84iiyjspgwz7v1bqcdpjpfb274dkgh2v9ih10w57i85wfnr4k";
+      };
+    };
+    "@cnakazawa/watch-1.0.4" = {
+      name = "_at_cnakazawa_slash_watch";
+      packageName = "@cnakazawa/watch";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz";
+        sha512 = "2hl7iz90jal2f27hgyb5rbmcp96p182xkmflyj5rsyqqffng8vkzz3fcjvbvcpdykij40ax4yirdc6p68yrmjvai7hr8y93mj20indz";
+      };
+    };
+    "@jest/console-24.9.0" = {
+      name = "_at_jest_slash_console";
+      packageName = "@jest/console";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz";
+        sha512 = "0nwvmyk8p01b6331xizblr7h9kkgp8rybjpfj1pa57h9w47lsnpyzzhh9vsji9q361bg17fmxwkgxs10k7nk9lcmfvphag7qipzms36";
+      };
+    };
+    "@jest/core-24.9.0" = {
+      name = "_at_jest_slash_core";
+      packageName = "@jest/core";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz";
+        sha512 = "3c0jsaq55pcz4gx9sg9dccqpakbdfplm0w715lw904p8lvvz6p9899j47ndfcpnb5pba3vdzr96f5gmanwgmskyapshm51hrvg2120n";
+      };
+    };
+    "@jest/environment-24.9.0" = {
+      name = "_at_jest_slash_environment";
+      packageName = "@jest/environment";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz";
+        sha512 = "1lpii90h62jy8h2awivnqdjarsicik5g1npmsyjm8yq24iv3n6d0ilgajw3v95qrw5m2gcpsy82cyqb35xkn9sn7i4gg1ngwjb503g4";
+      };
+    };
+    "@jest/fake-timers-24.9.0" = {
+      name = "_at_jest_slash_fake-timers";
+      packageName = "@jest/fake-timers";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz";
+        sha512 = "3s57a5043fphl08b2gb8frph1gm1x47lb7za0n0iqspr4p0iwibvm7wmzgal27b8h2v93i229cyh786kymy80l3b3bhqjwqmlsiqr3r";
+      };
+    };
+    "@jest/reporters-24.9.0" = {
+      name = "_at_jest_slash_reporters";
+      packageName = "@jest/reporters";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz";
+        sha512 = "0dkr3yy0x1n8b1226aczwz75785nl21hh913sadyqj48j0fq4sr9n2q2b2v23gqg6p63p4hcjcsdadlway599n57bgvf7ns539igvls";
+      };
+    };
+    "@jest/source-map-24.9.0" = {
+      name = "_at_jest_slash_source-map";
+      packageName = "@jest/source-map";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz";
+        sha512 = "038h2qlv880agd1b1mqxmkxbqv76ikcvdas4gjzkppg77yzd61ww2nwvliwgymc860niaa9xsi2p5svrwg80hrk4w6bwrbcd723nz7x";
+      };
+    };
+    "@jest/test-result-24.9.0" = {
+      name = "_at_jest_slash_test-result";
+      packageName = "@jest/test-result";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz";
+        sha512 = "2464cq11b9d51nrx8j5vi5m2572rrhi001l2lxz84wg5r6bkpskkszrk3s47w51h1rgm668ix0fgzwhgihjcxkafiy15738n0fnnhaw";
+      };
+    };
+    "@jest/test-sequencer-24.9.0" = {
+      name = "_at_jest_slash_test-sequencer";
+      packageName = "@jest/test-sequencer";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz";
+        sha512 = "3h61jyz33sya4wglmvp4f1m5lhxagwv76gdbjafdxfc1nag58vdv4b65yiggsry5xx9ixjd8j1grjw3d3rsjy8gpifnv49li99srapa";
+      };
+    };
+    "@jest/transform-24.9.0" = {
+      name = "_at_jest_slash_transform";
+      packageName = "@jest/transform";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz";
+        sha512 = "2cwna8zadqd9ahyf32pyg0hgrnn8qwwg55cdyw5imfbvj9g9kljwsbagx87074kzp3rdai22glvwkwpv7lk0aa49dw5ziai4fdi9i2d";
+      };
+    };
+    "@jest/types-24.9.0" = {
+      name = "_at_jest_slash_types";
+      packageName = "@jest/types";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz";
+        sha512 = "03hdscpch75yk366szkrfi63n6mqd5hscqslcpxklq5j99n05qg1p54zj51jhcld1dvkc4hgw0vmzjcr0qncphfb54yx9jsxp6vp8jw";
+      };
+    };
+    "@kubernetes/client-node-0.10.3" = {
+      name = "_at_kubernetes_slash_client-node";
+      packageName = "@kubernetes/client-node";
+      version = "0.10.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.10.3.tgz";
+        sha512 = "0ra42q33nywyiwiccxcg501ajdc1rz1lvg6kfwk6xypi1vlkmmvxiywc20y4s6v48i40m8j5sl2y40ni9jg7v396w86wcczsb6va3wv";
+      };
+    };
+    "@sindresorhus/is-0.7.0" = {
+      name = "_at_sindresorhus_slash_is";
+      packageName = "@sindresorhus/is";
+      version = "0.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz";
+        sha512 = "2ilygr40l2yqbk6lix4xnnnqsq6fxa6sysdxg49bg1ax5gzhwy3bcjbdlk7lndgh9055slpx6fybs3p8mhvbsnnjkmkqzrfy8l5mn1q";
+      };
+    };
+    "@types/accepts-1.3.5" = {
+      name = "_at_types_slash_accepts";
+      packageName = "@types/accepts";
+      version = "1.3.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz";
+        sha512 = "30y19l2wp8plrlgcj6fn0qc7wdy72rcn69zvmn8463738bx4mz7pxwl8dml92gi7y1ry2hqzaq0ljvk8wfp6f9k0v092kpazlingrwc";
+      };
+    };
+    "@types/axios-0.14.0" = {
+      name = "_at_types_slash_axios";
+      packageName = "@types/axios";
+      version = "0.14.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/axios/-/axios-0.14.0.tgz";
+        sha1 = "ec2300fbe7d7dddd7eb9d3abf87999964cafce46";
+      };
+    };
+    "@types/babel-types-7.0.7" = {
+      name = "_at_types_slash_babel-types";
+      packageName = "@types/babel-types";
+      version = "7.0.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.7.tgz";
+        sha512 = "18iifcb27svl3qmsh5vvpidyw3cj6hhif0il25xsg76vq9gb4h8gmfqs5hv3is2dab09a6nwbinf6f1q641spv7spr33a9ynxp426vl";
+      };
+    };
+    "@types/babel__core-7.1.6" = {
+      name = "_at_types_slash_babel__core";
+      packageName = "@types/babel__core";
+      version = "7.1.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.6.tgz";
+        sha512 = "17ggrqy35zds8rkpa2kglnk8f5dc43sgbkbjcfjbaygi53jxwm9ji6vr1xqanhs2yn4spla51fjdypl2hsfdrkfhpkzban0ridf2fdm";
+      };
+    };
+    "@types/babel__generator-7.6.1" = {
+      name = "_at_types_slash_babel__generator";
+      packageName = "@types/babel__generator";
+      version = "7.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz";
+        sha512 = "1xw1hijlii2sxf25d5pcqlgqsb6vpzw7c3z9s0s20f1cdyyb768cajmxxk3l1c9g8md3h797v6pzvjvpjmw8q83aw8w69agcpxsc4kc";
+      };
+    };
+    "@types/babel__template-7.0.2" = {
+      name = "_at_types_slash_babel__template";
+      packageName = "@types/babel__template";
+      version = "7.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz";
+        sha512 = "199fw9pirw68kdc47d80sy6gg5g6m8raxawnxwpcs0nc6bmxrv19qmv1212lfyw67a2l5b5abxz9g0i1fwnrxm6h6rqkv4njw5b7bpw";
+      };
+    };
+    "@types/babel__traverse-7.0.9" = {
+      name = "_at_types_slash_babel__traverse";
+      packageName = "@types/babel__traverse";
+      version = "7.0.9";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.9.tgz";
+        sha512 = "2vza0zha9nrlal5hgfdbaavx6xqxq195whl8274barqkyw26vrvvi9d7jkwp4harbx158wsxwjh4ypgkyb9w9cg73iz7fkdppq50hcc";
+      };
+    };
+    "@types/babylon-6.16.5" = {
+      name = "_at_types_slash_babylon";
+      packageName = "@types/babylon";
+      version = "6.16.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz";
+        sha512 = "3pvh96p07fz7ib5j5519lk4xm59i6yv2dyy4xsmjv853fi61lziwz0q03y3bih2nvvskcy82jqsaxaadagjmrr9wdbkv9m5qzkrwzf4";
+      };
+    };
+    "@types/body-parser-1.19.0" = {
+      name = "_at_types_slash_body-parser";
+      packageName = "@types/body-parser";
+      version = "1.19.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz";
+        sha512 = "0av4v9bdhgbq0jils3jajym9gcfddyx63g2xx8fh6vqafqb5vdcm98p1kfl70ydih9m393zp13krslmii5bmf05ngyaxn139nn0kpsv";
+      };
+    };
+    "@types/caseless-0.12.2" = {
+      name = "_at_types_slash_caseless";
+      packageName = "@types/caseless";
+      version = "0.12.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz";
+        sha512 = "39jv2a7v9mi41wxbv242icriy5asbzyk95iy25ay3gwa1d6yi40cd6gclbzn81hig9xvvi5z7j2gq4ybirjfyihpq8wa3s160r33jg9";
+      };
+    };
+    "@types/command-line-args-5.0.0" = {
+      name = "_at_types_slash_command-line-args";
+      packageName = "@types/command-line-args";
+      version = "5.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.0.0.tgz";
+        sha512 = "0vcqbwg68hir26fcyaqqn0w6i70cas8zn2ibhk9j0vl5mnwd2j448fvl6lqx5cny62szngdbjz6bxqfiz3ig360w3x663pr55gqzqz1";
+      };
+    };
+    "@types/connect-3.4.33" = {
+      name = "_at_types_slash_connect";
+      packageName = "@types/connect";
+      version = "3.4.33";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz";
+        sha512 = "3n5gxr7z1jn60gvcnzls1c3fgzbv171acdp4shbn095wnbb8hdba3cjq1sac8aina3bg957ww5hg89swcgbdjfp9irmkkiqfs8npqfv";
+      };
+    };
+    "@types/cookies-0.7.4" = {
+      name = "_at_types_slash_cookies";
+      packageName = "@types/cookies";
+      version = "0.7.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.4.tgz";
+        sha512 = "2pzkddkjlxs4h8rpkh6xd381f0m6hwhxsmfx7f4vkzjxv55hyvdx7km3ks4wckd7jz0rfzzr45nphaggj48q0iwin25n0ar6qrsscd1";
+      };
+    };
+    "@types/cron-1.7.2" = {
+      name = "_at_types_slash_cron";
+      packageName = "@types/cron";
+      version = "1.7.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/cron/-/cron-1.7.2.tgz";
+        sha512 = "17az71shn84qjqsnb5646z4amysvnhmgpsxj0ja2w2zlykmn7m3q1bchgrd30indnd0z8ryxzhisgd78yij87nv04wjfm9c2wnlsjh0";
+      };
+    };
+    "@types/events-3.0.0" = {
+      name = "_at_types_slash_events";
+      packageName = "@types/events";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz";
+        sha512 = "3v6shgxnlkc7izsc00g8ilpxi1q2mpcmbjyfawyqcj8mwfhlx2cnkm3hj87gsd39yyq33pilb0dbb4cdc8wwhn7dcwj4srg0amrp8qi";
+      };
+    };
+    "@types/express-4.17.3" = {
+      name = "_at_types_slash_express";
+      packageName = "@types/express";
+      version = "4.17.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/express/-/express-4.17.3.tgz";
+        sha512 = "1vd6aidhc6l28s5r9hjg2bzmmbmqp0dspsdp2h6affggfb9g8rzzxnbjxdan9n1b1n0d44n3amcx6yvzs1pdrzinf5j79zpk120dir3";
+      };
+    };
+    "@types/express-serve-static-core-4.17.2" = {
+      name = "_at_types_slash_express-serve-static-core";
+      packageName = "@types/express-serve-static-core";
+      version = "4.17.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.2.tgz";
+        sha512 = "1pa7rrhwf6wzp8lnbk2zjgvc2sxks36bw23p060kz1mm4kwyipddhn9zg4n2wnmym7a9ahw6fhk3ircal30f8ih8i7ancrdjwr74pqj";
+      };
+    };
+    "@types/formidable-1.0.31" = {
+      name = "_at_types_slash_formidable";
+      packageName = "@types/formidable";
+      version = "1.0.31";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/formidable/-/formidable-1.0.31.tgz";
+        sha512 = "3fx9xxa6d30fvgc3rkag182sjjpi43qdyzf9l6l050zi8hk2h4511m0pb59k7ha611khkjg7bamvxry5v1ig1zdb4lgsi15vzk4r23l";
+      };
+    };
+    "@types/glob-7.1.1" = {
+      name = "_at_types_slash_glob";
+      packageName = "@types/glob";
+      version = "7.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz";
+        sha512 = "3dhbgdkzpgx010hfgkhndrb094kbd3z6s4waicihnl0rp3jk0f0gs8vvzi84xzissrhml1dfgvbdhahzbh75nny1g6429fnqvlp866l";
+      };
+    };
+    "@types/http-assert-1.5.1" = {
+      name = "_at_types_slash_http-assert";
+      packageName = "@types/http-assert";
+      version = "1.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.1.tgz";
+        sha512 = "1cn6djbpsp6rky1sllzs6s311xz0zhzkwb38s68w83ij8whsygjr87ymzbp0x3gbxxnvhfa1xh1c5vxfan6q3dz2gbjgiv9kzphlq1w";
+      };
+    };
+    "@types/istanbul-lib-coverage-2.0.1" = {
+      name = "_at_types_slash_istanbul-lib-coverage";
+      packageName = "@types/istanbul-lib-coverage";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz";
+        sha512 = "2b0br9w70brjpzw8ck05lr79v6hc4sdk1q2jq6qs55nw869ylsfwng48ghj0yjcm9skkn76g8ry8rdf2b35i2iynbh957k7m3cl64l5";
+      };
+    };
+    "@types/istanbul-lib-report-3.0.0" = {
+      name = "_at_types_slash_istanbul-lib-report";
+      packageName = "@types/istanbul-lib-report";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz";
+        sha512 = "2parlinb7jrj152li79c6fs089y970f0s7yvzpkid8m4r8cgr9rn54bhg5ak7hsw6yvs9isx0diwjq20fb3dggnc5la2m6z0dfa0ld6";
+      };
+    };
+    "@types/istanbul-reports-1.1.1" = {
+      name = "_at_types_slash_istanbul-reports";
+      packageName = "@types/istanbul-reports";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz";
+        sha512 = "0s1jhax5h82lqchx13zj07h3zpyhqzckbnc76yl3a864xy91x11s06q3b2nds5pi89059xxa2b57p45ja90da60hr1gay9i5w3275jj";
+      };
+    };
+    "@types/jest-24.9.1" = {
+      name = "_at_types_slash_jest";
+      packageName = "@types/jest";
+      version = "24.9.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz";
+        sha512 = "3hkz9dl54is1hmjiscs6sdvmafpv192bb3qz6sq6yq862dhvl4i5qwqbikbkmcn1576jiccpvrc35kvlng132piy45hwm6j8lggrg8m";
+      };
+    };
+    "@types/js-yaml-3.12.2" = {
+      name = "_at_types_slash_js-yaml";
+      packageName = "@types/js-yaml";
+      version = "3.12.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.2.tgz";
+        sha512 = "2x03h69ivbpj4lsrpq698phn44jbq45jq31zdr7k30phrfv8r0gxr35qi98qbqa6rb599k8nhgj7gwnvll5lw6ml5j263961vz6w8fh";
+      };
+    };
+    "@types/keygrip-1.0.2" = {
+      name = "_at_types_slash_keygrip";
+      packageName = "@types/keygrip";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz";
+        sha512 = "0mqq8pzrfh058ha153xmyrbvcwpqq02z0ap89pw2rgfw9ll8c78dnxa0161i3pjhz7q0n7kizh73841637s4spc35qygnkkx96nk60q";
+      };
+    };
+    "@types/koa-2.11.2" = {
+      name = "_at_types_slash_koa";
+      packageName = "@types/koa";
+      version = "2.11.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/koa/-/koa-2.11.2.tgz";
+        sha512 = "2b2i4xy8zwfig5p744i5n32krsyvgbdjg1nzr2dawwykr9m6zp37l4g8m0mr7936yzd80yiwn2rmq4n6d1fcj6dkndnwd8dm2axwhyr";
+      };
+    };
+    "@types/koa-compose-3.2.5" = {
+      name = "_at_types_slash_koa-compose";
+      packageName = "@types/koa-compose";
+      version = "3.2.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz";
+        sha512 = "02hhnlq6kz27g5y2vlnj3pk1rnm16gh2qb7hf3gpxrarxrz35pc40y0aiz34ncaiggpk8306yz9q0pwm75mc099m1cy9m04xbycdj87";
+      };
+    };
+    "@types/koa-router-7.4.0" = {
+      name = "_at_types_slash_koa-router";
+      packageName = "@types/koa-router";
+      version = "7.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/koa-router/-/koa-router-7.4.0.tgz";
+        sha512 = "1m9sk2skfl0vrggx53s3d3aw2ijphxkig9mjiw90016ljmz7hryyi3z74qxwmfvwg265k0cvhffq0c7j1aaxd210klsl9w2cf274hqa";
+      };
+    };
+    "@types/koa-send-4.1.2" = {
+      name = "_at_types_slash_koa-send";
+      packageName = "@types/koa-send";
+      version = "4.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/koa-send/-/koa-send-4.1.2.tgz";
+        sha512 = "10xa7f3s5sdnr0ks3gbdmd635qyj160yj9b737qagw4bqbzg0hbk3irnvih4y0dc3i5lg8m8jf4p0nx52gv4vwwyhvxn5avzwi8mymd";
+      };
+    };
+    "@types/koa-static-4.0.1" = {
+      name = "_at_types_slash_koa-static";
+      packageName = "@types/koa-static";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/koa-static/-/koa-static-4.0.1.tgz";
+        sha512 = "3isnj0yxhf6xg0ymb317xj4a4fxdywk1xb0wadc5ghimab8m3q6vx3yv7zzyi84hx8wdm83fw65z108n0cdvnhij28hfw64jyvmqaj9";
+      };
+    };
+    "@types/koa-views-2.0.4" = {
+      name = "_at_types_slash_koa-views";
+      packageName = "@types/koa-views";
+      version = "2.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/koa-views/-/koa-views-2.0.4.tgz";
+        sha512 = "2bkbmh8mba0sm82lp0ividj4l09lbmdw1swfpf7kvdrc1q3710q1y57zysr0kpg3j4ngy4m4gf73a4cwqcjx1rsbmjb22wgp1a42qb8";
+      };
+    };
+    "@types/lodash-4.14.149" = {
+      name = "_at_types_slash_lodash";
+      packageName = "@types/lodash";
+      version = "4.14.149";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.149.tgz";
+        sha512 = "0jnvvzg602jxgjxl0fvi7iws4msvxvkff6mqvinyy0fcmxfxrpf46k30r6s0z7cb12r17sg0j6nbhg8s8xbvgf2rmgv0vvzkg6slcca";
+      };
+    };
+    "@types/lodash.clonedeep-4.5.6" = {
+      name = "_at_types_slash_lodash.clonedeep";
+      packageName = "@types/lodash.clonedeep";
+      version = "4.5.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.6.tgz";
+        sha512 = "2010qs0qh6d3vd77rhbwid7xvq511bgzp9vj4s3k2mlzqj78jwgb60dc84mdl4c38fz3bgx5shl6k57dm9mxbw90iq0s4lxpmi66kbh";
+      };
+    };
+    "@types/mime-2.0.1" = {
+      name = "_at_types_slash_mime";
+      packageName = "@types/mime";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz";
+        sha512 = "35iimmp0d3zg4774qavnq9wh54dgnxfks59fks65f8q8d1008x00a1fmkdnxcs27znlc69mzbxp1frzpxx85c5w4x0ha5prgs0ks0hp";
+      };
+    };
+    "@types/minimatch-3.0.3" = {
+      name = "_at_types_slash_minimatch";
+      packageName = "@types/minimatch";
+      version = "3.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz";
+        sha512 = "2ff7lcgph45bp2v5zsaxcy00rbh5n5h4njbicwhqilz66pd1lw7xfrpfl4i4ppfcx78zg9cp582b5fjif0dg7r18m44vxfksslvlyml";
+      };
+    };
+    "@types/mkdirp-0.5.2" = {
+      name = "_at_types_slash_mkdirp";
+      packageName = "@types/mkdirp";
+      version = "0.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz";
+        sha512 = "177ihvl818zn0w93xipz417pm2cj2jzwnqs2khkj0k2dd7gs6ssv460affznfiii54a5l8qffigcq6xl74zsy6339c7cqpvkdd9r62k";
+      };
+    };
+    "@types/node-10.17.17" = {
+      name = "_at_types_slash_node";
+      packageName = "@types/node";
+      version = "10.17.17";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/node/-/node-10.17.17.tgz";
+        sha512 = "3qw8j56g9078d7lahi73ifnpbk2x385diqgq1qgr62drcxbqgjnkbncy25nhdas05hwkfgzf69r2bj4x6mdwr1yrsrmbpagfr36g4w2";
+      };
+    };
+    "@types/node-12.12.30" = {
+      name = "_at_types_slash_node";
+      packageName = "@types/node";
+      version = "12.12.30";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/node/-/node-12.12.30.tgz";
+        sha512 = "0rdl54cn0jbb3g2mlp09fywwf8d6plyspmiggr5rja9z93z4n606kj8srbgjk9f83wjxd9qmq20ixj2a90369whvrmsbsp4zhblqgxk";
+      };
+    };
+    "@types/ora-3.2.0" = {
+      name = "_at_types_slash_ora";
+      packageName = "@types/ora";
+      version = "3.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/ora/-/ora-3.2.0.tgz";
+        sha512 = "3xvxw1cs55wdb1ihpg8df91crz17agjwq79kd342s137kwkz823n8adxxrr74fnb1rn0ffsq9zacyz2cv642ljn41dj39ha2pvpsncf";
+      };
+    };
+    "@types/range-parser-1.2.3" = {
+      name = "_at_types_slash_range-parser";
+      packageName = "@types/range-parser";
+      version = "1.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz";
+        sha512 = "0w59kqlbrl9ich2pv2xqanzmg9f51404zqsba9l8aimqd77zbrdxcyq9q13xfnhr0d1dz4mx6z7n976ryc2nk2gfch5p507njm5f0bv";
+      };
+    };
+    "@types/request-2.48.4" = {
+      name = "_at_types_slash_request";
+      packageName = "@types/request";
+      version = "2.48.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/request/-/request-2.48.4.tgz";
+        sha512 = "21mnsvbrykpzp1f1rd2ibk3nsgr8kyqikk5rdmq4qlkpf10gnpxp414hnvnbwjp27l5hvpc5l0fx0qhw20h7zi143qw6iwq68qpansv";
+      };
+    };
+    "@types/serve-static-1.13.3" = {
+      name = "_at_types_slash_serve-static";
+      packageName = "@types/serve-static";
+      version = "1.13.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.3.tgz";
+        sha512 = "39fm32fi9qpb1bz4q399y9rzv02ywml2m1qmclyr1ckrmy4vdn8nv5f9986ckn19yapxif0ljs0gc717xd7dmssjnh37qrxkp1d56m2";
+      };
+    };
+    "@types/stack-utils-1.0.1" = {
+      name = "_at_types_slash_stack-utils";
+      packageName = "@types/stack-utils";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz";
+        sha512 = "29j551rin7d7ygf7pd95db51b4jf48vsjnl03l4djdi6sh5jsk2f4kxwf21ixzj92mwq8y4cfhbcihwppxfkm4pkb5sqiv91a1833cp";
+      };
+    };
+    "@types/tough-cookie-2.3.6" = {
+      name = "_at_types_slash_tough-cookie";
+      packageName = "@types/tough-cookie";
+      version = "2.3.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.6.tgz";
+        sha512 = "0yla1v86agvz3wlkdjcn7i4hpgb02nwjsafg0xkdkclbiil08fkxjj9c4q4yj785ps3gdc5p3sqx2y0rajg1v6x068ih418g4r42wy0";
+      };
+    };
+    "@types/underscore-1.9.4" = {
+      name = "_at_types_slash_underscore";
+      packageName = "@types/underscore";
+      version = "1.9.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/underscore/-/underscore-1.9.4.tgz";
+        sha512 = "1czi6sv1hf482wlzsl9an3s18r033aiy54airz2558f1g32ppkz3jy44mnhzwyi9g87miwggp4l8yfgc95d4qg6qka6ywq2q48dcc8a";
+      };
+    };
+    "@types/websocket-0.0.40" = {
+      name = "_at_types_slash_websocket";
+      packageName = "@types/websocket";
+      version = "0.0.40";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/websocket/-/websocket-0.0.40.tgz";
+        sha512 = "0ajm2lr5mbfin316js7lzg3fvvhyd78ms1y929ppwqbg1fv6k9qnbcbz472p637xx29azlgiy3l0zzv4zvcmi9f7df5z0l80mkmxnwm";
+      };
+    };
+    "@types/ws-6.0.4" = {
+      name = "_at_types_slash_ws";
+      packageName = "@types/ws";
+      version = "6.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/ws/-/ws-6.0.4.tgz";
+        sha512 = "318vy2l4c8cw6nm061l15pp3ss2llblyy2y7a8w92vp6da3n7s3iiha5shpxrmc5c3gv0ap0vq9x10vv64g5np1xggdlnwrnigyp4ry";
+      };
+    };
+    "@types/yargs-13.0.8" = {
+      name = "_at_types_slash_yargs";
+      packageName = "@types/yargs";
+      version = "13.0.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz";
+        sha512 = "36csm2rf0wi6cj680qswwvyl3lvh88ayl578165z8d1hxh6saswzn2g2zl5v20c08jg9rdjhqwwi336yj0jh6l76fy0yldv04pwf2sw";
+      };
+    };
+    "@types/yargs-parser-15.0.0" = {
+      name = "_at_types_slash_yargs-parser";
+      packageName = "@types/yargs-parser";
+      version = "15.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz";
+        sha512 = "35k8bcpm51w11xbny2a8gqgz12pdn3pw8w0jf36jzlkcmpkrqlqnqf9gbrwj9sah0pv05clzlgk2a7kvnr9q3h1za4rbw9dzxdc23ql";
+      };
+    };
+    "@webassemblyjs/ast-1.8.5" = {
+      name = "_at_webassemblyjs_slash_ast";
+      packageName = "@webassemblyjs/ast";
+      version = "1.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz";
+        sha512 = "00rj3q9igpw0cihw48xx7qpmmv64yy821bvy52dqxqc7w8kq2hga2f2v2g5j83is5kdz4hfdla4a3h6q5lwpdshxynrzsqr0ag1z4v8";
+      };
+    };
+    "@webassemblyjs/floating-point-hex-parser-1.8.5" = {
+      name = "_at_webassemblyjs_slash_floating-point-hex-parser";
+      packageName = "@webassemblyjs/floating-point-hex-parser";
+      version = "1.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz";
+        sha512 = "2shwdw16zcsl2rkvyc8jlgcs5564si8m64b0v9f8ssmrxmrd84c82brnwbyblhynqldvyr8f3fl9pjvfgzw0phz0qm5mfzbc7svp7zn";
+      };
+    };
+    "@webassemblyjs/helper-api-error-1.8.5" = {
+      name = "_at_webassemblyjs_slash_helper-api-error";
+      packageName = "@webassemblyjs/helper-api-error";
+      version = "1.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz";
+        sha512 = "363avw28ls7abwqcy7wvhdr853pccnzd9b58i1k7l1aax5cads499b494i1lwj4nlb8ksypy3nchr97i9y5r57k91dag7ig7fgyvbv5";
+      };
+    };
+    "@webassemblyjs/helper-buffer-1.8.5" = {
+      name = "_at_webassemblyjs_slash_helper-buffer";
+      packageName = "@webassemblyjs/helper-buffer";
+      version = "1.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz";
+        sha512 = "3yxqbq2lizijhxxr5ics6i0c5hc6c00fw4dqlqiq669mr1b0zalzs0670psbddmd4sq3yks567n1wr00l5flg6lwf34xlcjfgr92ba6";
+      };
+    };
+    "@webassemblyjs/helper-code-frame-1.8.5" = {
+      name = "_at_webassemblyjs_slash_helper-code-frame";
+      packageName = "@webassemblyjs/helper-code-frame";
+      version = "1.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz";
+        sha512 = "0ljgrac16148nv6nbzk5jisalyjx3pgm4vdcbzympzn143367w1k82lvpr7iwrslildvi6ck1jj9vjqy8fj2fkyli6qhr4v5dsil02m";
+      };
+    };
+    "@webassemblyjs/helper-fsm-1.8.5" = {
+      name = "_at_webassemblyjs_slash_helper-fsm";
+      packageName = "@webassemblyjs/helper-fsm";
+      version = "1.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz";
+        sha512 = "2imw7y018r4hyvyaaw2cpvrv3qp9bv4vg816l2yvl79xwd2dnplmsmmwsv3vmy2b8mvdjzq0dknkd2i6sjbgpzgn4ychicfqvz9f6wi";
+      };
+    };
+    "@webassemblyjs/helper-module-context-1.8.5" = {
+      name = "_at_webassemblyjs_slash_helper-module-context";
+      packageName = "@webassemblyjs/helper-module-context";
+      version = "1.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz";
+        sha512 = "3gfr1zif7fxlfbpfkcqncq8vmrimncn6pmvh0x7av1pb82a9vhhahpy2mkrgdrc3w62gw0lbbhj4zwgrxzgabaf246vadx6gvdl3vgw";
+      };
+    };
+    "@webassemblyjs/helper-wasm-bytecode-1.8.5" = {
+      name = "_at_webassemblyjs_slash_helper-wasm-bytecode";
+      packageName = "@webassemblyjs/helper-wasm-bytecode";
+      version = "1.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz";
+        sha512 = "10klm32913whkdnjk7jgf262lgl6wqv9qkw6ssjg1lmlzwa0qbn159l962j6pfx3idzaf4w014gmcy17wssdri6v1xxj3dph4qiivha";
+      };
+    };
+    "@webassemblyjs/helper-wasm-section-1.8.5" = {
+      name = "_at_webassemblyjs_slash_helper-wasm-section";
+      packageName = "@webassemblyjs/helper-wasm-section";
+      version = "1.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz";
+        sha512 = "2s3d3bh4wrizs5y2p480qnxs5m1hx9pfkppa38f7mk9w49cfq6h0gq5c0q79aqrl4jpyzqzmrsdbyx9562q1bb547mm9y8i7kgkqpam";
+      };
+    };
+    "@webassemblyjs/ieee754-1.8.5" = {
+      name = "_at_webassemblyjs_slash_ieee754";
+      packageName = "@webassemblyjs/ieee754";
+      version = "1.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz";
+        sha512 = "3g8bqb43s1n4nrzn5f7vrhdpi88mnr49xpwcq5jb0ql7baslh3cxni2rijp0hng7daai5d0n7dnn0llyazis2mckwzvcaggi90sz839";
+      };
+    };
+    "@webassemblyjs/leb128-1.8.5" = {
+      name = "_at_webassemblyjs_slash_leb128";
+      packageName = "@webassemblyjs/leb128";
+      version = "1.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz";
+        sha512 = "3ncjzk3d9pjnjd0vfagpbaa02jpmgapq2hyamzpfpaidshgcyqbz6rfhfp3arvjcdxpws4d9bi0wf552pzr9vs9i8rv4y159jwi8mm6";
+      };
+    };
+    "@webassemblyjs/utf8-1.8.5" = {
+      name = "_at_webassemblyjs_slash_utf8";
+      packageName = "@webassemblyjs/utf8";
+      version = "1.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz";
+        sha512 = "27hlgvdfxw9arxzrdrnfd7zmzp953439jyjh8acb3g2nm0ysr9il2xl3v0dklr9yvv6jkmj7s9yi29l2izgghypxqvjrblhv5zf1g2k";
+      };
+    };
+    "@webassemblyjs/wasm-edit-1.8.5" = {
+      name = "_at_webassemblyjs_slash_wasm-edit";
+      packageName = "@webassemblyjs/wasm-edit";
+      version = "1.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz";
+        sha512 = "3lzdvq0vwmp3civ70pdrr3970i7viiywnwry8ysmvmfbd4zhkffs4d5vyy5ibvxmmass9nlmvs3cd8fwh633yx8prr0wnqc5wrl9383";
+      };
+    };
+    "@webassemblyjs/wasm-gen-1.8.5" = {
+      name = "_at_webassemblyjs_slash_wasm-gen";
+      packageName = "@webassemblyjs/wasm-gen";
+      version = "1.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz";
+        sha512 = "1d2nc7b2zjdyaxyrvxm5mck8aj0p95dznknn8j8wi5d3ah55zpf2kp18kk79l55fbb7k9vhri74yqbks9ay9qrwbh12si6l897l29h4";
+      };
+    };
+    "@webassemblyjs/wasm-opt-1.8.5" = {
+      name = "_at_webassemblyjs_slash_wasm-opt";
+      packageName = "@webassemblyjs/wasm-opt";
+      version = "1.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz";
+        sha512 = "3npgmsia24ap1yhdpdn1c9bwdq71glsxdyn7kyphz5x4gnxl97v04iwgcsaj2k1di5vgq1m8mlqfrllxk4fvviwl8xd11ylxyc3dahw";
+      };
+    };
+    "@webassemblyjs/wasm-parser-1.8.5" = {
+      name = "_at_webassemblyjs_slash_wasm-parser";
+      packageName = "@webassemblyjs/wasm-parser";
+      version = "1.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz";
+        sha512 = "2bprpybs2qm4m1fbdd877aqj8s153j4gg32bf8qnmigqnjcfwl6mxmbzb90xq7qx6zvwqniv4rirgd40b4c2qab6bfdgsjk9xh14bd6";
+      };
+    };
+    "@webassemblyjs/wast-parser-1.8.5" = {
+      name = "_at_webassemblyjs_slash_wast-parser";
+      packageName = "@webassemblyjs/wast-parser";
+      version = "1.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz";
+        sha512 = "2r6vw7gg4ij9mjl2f564mwnjsrn7nzsvr1gcrpch0f87xayvjky82f4cn6sh0d8714fpqqqrfq6a1797jnnqs2xidsp2n4abkac59bm";
+      };
+    };
+    "@webassemblyjs/wast-printer-1.8.5" = {
+      name = "_at_webassemblyjs_slash_wast-printer";
+      packageName = "@webassemblyjs/wast-printer";
+      version = "1.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz";
+        sha512 = "0r5hhrrqk2ww81xjvbxjglp0sh6igz55pjy45ly4786kq3b723vlhqsydr7j87sb3zyww9zvjil08jmk8dcr2978zpmk1h47sj38if3";
+      };
+    };
+    "@xtuc/ieee754-1.2.0" = {
+      name = "_at_xtuc_slash_ieee754";
+      packageName = "@xtuc/ieee754";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz";
+        sha512 = "1wczr2c331gq4q6w6nsiylqs6q6dp0j2lvc231826gfrdhr3lcimmyhswp4g0b5p7k7k525gq6gh0wpg65sjlp2s4f0n6ww18m2fzqd";
+      };
+    };
+    "@xtuc/long-4.2.2" = {
+      name = "_at_xtuc_slash_long";
+      packageName = "@xtuc/long";
+      version = "4.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz";
+        sha512 = "00n8akj5s578b8r7vcdz817cnmga21vznz895kygvb0j780968szj171f91b0bgvz880ff7zq025q4087cgxb2fqpyg01sgil2ymq9n";
+      };
+    };
+    "abab-2.0.3" = {
+      name = "abab";
+      packageName = "abab";
+      version = "2.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz";
+        sha512 = "192f58ba6nxqhzyxlp9dlj156ry71s8mlfvgbg37kj2slffixrwj2s3zwpnyyhy4mh5m7sy3idir119mk518hjhii6skd9djwz77hdn";
+      };
+    };
+    "abbrev-1.1.1" = {
+      name = "abbrev";
+      packageName = "abbrev";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz";
+        sha512 = "38s4f3id97wsb0rg9nm9zvxyq0nvwrmrpa5dzvrkp36mf5ibs98b4z6lvsbrwzzs0sbcank6c7gpp06vcwp9acfhp41rzlhi3ybsxwy";
+      };
+    };
+    "accepts-1.3.7" = {
+      name = "accepts";
+      packageName = "accepts";
+      version = "1.3.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz";
+        sha512 = "2j51dxzbgz22q0k7dhivimfsqx9a0f0h9slfd7n20gz3y1944gx3y7xai54za0x3zhbar6vqiaab2i9p913cwqk414qk3cnrm138pr2";
+      };
+    };
+    "acorn-3.3.0" = {
+      name = "acorn";
+      packageName = "acorn";
+      version = "3.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz";
+        sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a";
+      };
+    };
+    "acorn-4.0.13" = {
+      name = "acorn";
+      packageName = "acorn";
+      version = "4.0.13";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz";
+        sha1 = "105495ae5361d697bd195c825192e1ad7f253787";
+      };
+    };
+    "acorn-5.7.4" = {
+      name = "acorn";
+      packageName = "acorn";
+      version = "5.7.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz";
+        sha512 = "0k4pivh1yagdalb26khf36wscaxi3kbv6w48zg5jsll2scl2wq4f4gxcq9ggnzf37l4y446n4a3bmr85wx0fnwk89pvp1n1drabwgyl";
+      };
+    };
+    "acorn-6.4.1" = {
+      name = "acorn";
+      packageName = "acorn";
+      version = "6.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz";
+        sha512 = "1s65pswzbh0155lsrdln08lifgs34zb53vkfl8fvxwnfmrc84vj01m9b31w4n846k7vk8lr5ns6wqf0fxc8xz98vkihldxsgn9ksl35";
+      };
+    };
+    "acorn-7.1.1" = {
+      name = "acorn";
+      packageName = "acorn";
+      version = "7.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz";
+        sha512 = "29c8jlhwnfbnqa2s1v593lcpksv4hl56lywss4gy6w0mwmhx4ydf2n7var8bhcf39nm9asph0ybnf1hkw0s0j91qi7r99ir01v7pmv9";
+      };
+    };
+    "acorn-globals-3.1.0" = {
+      name = "acorn-globals";
+      packageName = "acorn-globals";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz";
+        sha1 = "fd8270f71fbb4996b004fa880ee5d46573a731bf";
+      };
+    };
+    "acorn-globals-4.3.4" = {
+      name = "acorn-globals";
+      packageName = "acorn-globals";
+      version = "4.3.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz";
+        sha512 = "38gm4qa9sr1znbnlv4w33f1zrqsvldv66yqlflsc7r5ifxwsnpizsa93yxd3d1a8wy08j424smizrywkzam36z4jpsf0ixm3l9d0mvj";
+      };
+    };
+    "acorn-walk-6.2.0" = {
+      name = "acorn-walk";
+      packageName = "acorn-walk";
+      version = "6.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz";
+        sha512 = "1q392w8cii4phm8maghmlfjzgzmwhd2n0xadah315lqflygnaf5g7gn6lhbdfszf1sdqx5j4bik89qa6zg03n8cfj1b6w7my74yrszd";
+      };
+    };
+    "acorn-walk-7.1.1" = {
+      name = "acorn-walk";
+      packageName = "acorn-walk";
+      version = "7.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz";
+        sha512 = "10s7pz9c2jqw7sjmkkwfb6kyyfgb7qqpmz2gc0fq9phhmfknyw029x1jbw0cwi47wbacpwkw65601arnid2l95lmz0xbzv6ddilznf1";
+      };
+    };
+    "aggregate-error-1.0.0" = {
+      name = "aggregate-error";
+      packageName = "aggregate-error";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/aggregate-error/-/aggregate-error-1.0.0.tgz";
+        sha1 = "888344dad0220a72e3af50906117f48771925fac";
+      };
+    };
+    "ajv-6.12.0" = {
+      name = "ajv";
+      packageName = "ajv";
+      version = "6.12.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz";
+        sha512 = "0gkcic96nmpcq311i2jfwbaa961x0mj7mkl7iwk213hyn4jgxbl0a472lcpg9dr7ybacn3i45fj6q0dz3g8rqmva7r14i9la240ba0g";
+      };
+    };
+    "ajv-errors-1.0.1" = {
+      name = "ajv-errors";
+      packageName = "ajv-errors";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz";
+        sha512 = "24kqslzd256yc0dckqcg8n1rngyfzdflfznp55hnhkv3rhyzirjhpj31rgiiryyjlw8a64x9ba7hdqkpiwf6jpllwyyyhr7zqxmy90c";
+      };
+    };
+    "ajv-keywords-3.4.1" = {
+      name = "ajv-keywords";
+      packageName = "ajv-keywords";
+      version = "3.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz";
+        sha512 = "1lyjmfg70gijr3gjs63qmawfazm5mz8vb1bknyy1vzdif6a30vi3dpwkrlv4j4i5dg56jd3fliqgfq0rxbm98a42jxbgnyxmdn65va4";
+      };
+    };
+    "align-text-0.1.4" = {
+      name = "align-text";
+      packageName = "align-text";
+      version = "0.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz";
+        sha1 = "0cd90a561093f35d0a99256c22b7069433fad117";
+      };
+    };
+    "ansi-colors-3.2.4" = {
+      name = "ansi-colors";
+      packageName = "ansi-colors";
+      version = "3.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz";
+        sha512 = "2n6gl8300ihln724832pvvzrii5c4qjli9xc16s632ywnyrfbv1kmcqg133v25583hqhflpsfi2yhkjy6nhzj0si5v36zhym0cifxc4";
+      };
+    };
+    "ansi-escapes-3.2.0" = {
+      name = "ansi-escapes";
+      packageName = "ansi-escapes";
+      version = "3.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz";
+        sha512 = "12pp3q4c44hrzr2xl9vqjigwjn2wr1j0lhvshl75z5m6a97hqkd047sdcma1inzjvxhpkzk1qkvag7cw3sya32s9wsfasr6xsnnj63h";
+      };
+    };
+    "ansi-html-0.0.7" = {
+      name = "ansi-html";
+      packageName = "ansi-html";
+      version = "0.0.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz";
+        sha1 = "813584021962a9e9e6fd039f940d12f56ca7859e";
+      };
+    };
+    "ansi-regex-2.1.1" = {
+      name = "ansi-regex";
+      packageName = "ansi-regex";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
+        sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
+      };
+    };
+    "ansi-regex-3.0.0" = {
+      name = "ansi-regex";
+      packageName = "ansi-regex";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz";
+        sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
+      };
+    };
+    "ansi-regex-4.1.0" = {
+      name = "ansi-regex";
+      packageName = "ansi-regex";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz";
+        sha512 = "1v2gfp292kslpvam0l0h1iba35yi0n7dc6qv6fmxsdyfcp6zakkl13vrh3hzsw4zgh50jrrsg7xb2q2hn4g8a0dmf947mfcylymxanm";
+      };
+    };
+    "ansi-styles-2.2.1" = {
+      name = "ansi-styles";
+      packageName = "ansi-styles";
+      version = "2.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz";
+        sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
+      };
+    };
+    "ansi-styles-3.2.1" = {
+      name = "ansi-styles";
+      packageName = "ansi-styles";
+      version = "3.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz";
+        sha512 = "2lgkskkj4c1fsnrksy0yffda0wss84p8lfiazdc7jli7iqnvrxkzbxjzpvx13lm28qw0zkawfxvz2bdiisc72ccy7hx8i8rm4iijgam";
+      };
+    };
+    "any-promise-1.3.0" = {
+      name = "any-promise";
+      packageName = "any-promise";
+      version = "1.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz";
+        sha1 = "abc6afeedcea52e809cdc0376aed3ce39635d17f";
+      };
+    };
+    "anymatch-2.0.0" = {
+      name = "anymatch";
+      packageName = "anymatch";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz";
+        sha512 = "03mjsaw6xk4zhvl17fpqn59j4v2bafqs0yfw5y45hl8x97xlihwvjmcx3icnaamvipplnczymvzg4sb4ixwpzak0k3p21c00nqqxmz6";
+      };
+    };
+    "aproba-1.2.0" = {
+      name = "aproba";
+      packageName = "aproba";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz";
+        sha512 = "13mgnbmdhdq0qncijvpip1l39q1a8labcvj3hc3n1yl2zch106mdkn7p7bd5knvmfkkn1js9nd47nzyjk1himbm8ry8i8gd6mk7mlk3";
+      };
+    };
+    "argparse-1.0.10" = {
+      name = "argparse";
+      packageName = "argparse";
+      version = "1.0.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz";
+        sha512 = "17fhywmdjcp8g0ys089i5xg26yajkkg9zg8hyry3fghz75b2pq5vdx997dk5p2sc15r9nsj8rmf4f27g81hi92kzj5q86sdmg5ni553";
+      };
+    };
+    "arr-diff-4.0.0" = {
+      name = "arr-diff";
+      packageName = "arr-diff";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz";
+        sha1 = "d6461074febfec71e7e15235761a329a5dc7c520";
+      };
+    };
+    "arr-flatten-1.1.0" = {
+      name = "arr-flatten";
+      packageName = "arr-flatten";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz";
+        sha512 = "2vdly17xk5kw7bfzajrjdnw4ml3wrfblx8064n0i4fxlchcscx2mvnwkq2bnnqvbqvdy4vs9ad462lz0rid7khysly9m9vzjiblly1g";
+      };
+    };
+    "arr-union-3.1.0" = {
+      name = "arr-union";
+      packageName = "arr-union";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz";
+        sha1 = "e39b09aea9def866a8f206e288af63919bae39c4";
+      };
+    };
+    "array-back-3.1.0" = {
+      name = "array-back";
+      packageName = "array-back";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz";
+        sha512 = "3aqfm29ppm74q3q0xlxldmf1a3vbkl9a6fbljf211cfgc7asjbkdglbpr6a5a04r0rvnk7y709k6nvaqa2nb3df1ipgqfh2hl1v2jsf";
+      };
+    };
+    "array-equal-1.0.0" = {
+      name = "array-equal";
+      packageName = "array-equal";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz";
+        sha1 = "8c2a5ef2472fd9ea742b04c77a75093ba2757c93";
+      };
+    };
+    "array-flatten-1.1.1" = {
+      name = "array-flatten";
+      packageName = "array-flatten";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz";
+        sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2";
+      };
+    };
+    "array-flatten-2.1.2" = {
+      name = "array-flatten";
+      packageName = "array-flatten";
+      version = "2.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz";
+        sha512 = "2swmvaw9xcvzv29i247057pq4khyss7gnc0p244v1l2g2p2xpsr47m0dfaf54yscd3fc9njh3kvwly99w8shvd9p5fq6nvwwmqg7mw4";
+      };
+    };
+    "array-union-1.0.2" = {
+      name = "array-union";
+      packageName = "array-union";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz";
+        sha1 = "9a34410e4f4e3da23dea375be5be70f24778ec39";
+      };
+    };
+    "array-uniq-1.0.3" = {
+      name = "array-uniq";
+      packageName = "array-uniq";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz";
+        sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6";
+      };
+    };
+    "array-unique-0.3.2" = {
+      name = "array-unique";
+      packageName = "array-unique";
+      version = "0.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz";
+        sha1 = "a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428";
+      };
+    };
+    "asap-2.0.6" = {
+      name = "asap";
+      packageName = "asap";
+      version = "2.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz";
+        sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46";
+      };
+    };
+    "asn1-0.2.4" = {
+      name = "asn1";
+      packageName = "asn1";
+      version = "0.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz";
+        sha512 = "1v2z1ll0l8rif8hh0d03jc49kz3p8hym63q8ixbas48w4a8akl413hwn08nx83m89sj3mxl06aa0grp7n8hj6hcbsb2k3fhj913674g";
+      };
+    };
+    "asn1.js-4.10.1" = {
+      name = "asn1.js";
+      packageName = "asn1.js";
+      version = "4.10.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz";
+        sha512 = "15j9ms7k6dx08m1wqrvc4958vcrshjjpicpxmz9bflsyk0x2r7w20lxlm27jpyj7cwj6158a0582vifk393hqp0ysn9mlbabqw9qzd7";
+      };
+    };
+    "assert-1.5.0" = {
+      name = "assert";
+      packageName = "assert";
+      version = "1.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz";
+        sha512 = "1n2xh5m359gm4my50j2206n32q2h044lqrl8h122gjn41fizlrh32j1lj7wqfix1iblyvi7zvdgvzbf97f840lr17vfk8ph1imj0fqh";
+      };
+    };
+    "assert-plus-1.0.0" = {
+      name = "assert-plus";
+      packageName = "assert-plus";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
+        sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
+      };
+    };
+    "assign-symbols-1.0.0" = {
+      name = "assign-symbols";
+      packageName = "assign-symbols";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz";
+        sha1 = "59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367";
+      };
+    };
+    "astral-regex-1.0.0" = {
+      name = "astral-regex";
+      packageName = "astral-regex";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz";
+        sha512 = "0ga6b0jymkw4jrfvjilhfrddml29l1nrvj7r57d140p7rn31mmbni4j9z343v2zzz2zcnlsr2s17kmlgjkyvs9pxrf88an11pm9y77r";
+      };
+    };
+    "async-2.6.3" = {
+      name = "async";
+      packageName = "async";
+      version = "2.6.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/async/-/async-2.6.3.tgz";
+        sha512 = "1g679kw2qqpqx1yd4s778r8rw3cv9qwmib5x3klk64kcl5ndw71bljcpav5jkk6grizlpvrqszsbs6fkmnlvcq5fnz2q33mrnb6zyfd";
+      };
+    };
+    "async-each-1.0.3" = {
+      name = "async-each";
+      packageName = "async-each";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz";
+        sha512 = "00vbg0zvq40mmvzz9q3klkk5ly5jh75kc8s3bf7j2ff9zivla3wlc8d622gajjq4w66mln5570dc936my6wh08ippfj5jagj51s3xfg";
+      };
+    };
+    "async-limiter-1.0.1" = {
+      name = "async-limiter";
+      packageName = "async-limiter";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz";
+        sha512 = "0sy81yyf4na58ic2m0ib0prkb9njb1qzl7wf3vlq4hhm4xnwgxaph0lr43gs1sd0rai2xp1h6phlwvni9jiggm94dd54i0wc1cabhvj";
+      };
+    };
+    "asynckit-0.4.0" = {
+      name = "asynckit";
+      packageName = "asynckit";
+      version = "0.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
+        sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
+      };
+    };
+    "atob-2.1.2" = {
+      name = "atob";
+      packageName = "atob";
+      version = "2.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz";
+        sha512 = "1rbq2rl2ry0y3nkqs3013vgjrnzf03609rg58092r8zkvzzn6v15grhv2yhzb48sz74zmjcj8ix7f5whrfp4zvsxyzrh64fhs9awvjs";
+      };
+    };
+    "awesome-typescript-loader-5.2.1" = {
+      name = "awesome-typescript-loader";
+      packageName = "awesome-typescript-loader";
+      version = "5.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-5.2.1.tgz";
+        sha512 = "3b9ng7k3l7342hb2qqggp8y84ifzgb7ncjwjjn770gy7fda0c9aq897i7c4gn4w8l02xg88pji4pad46wr6j5755wmwl1q9w3lglnxj";
+      };
+    };
+    "aws-sign2-0.7.0" = {
+      name = "aws-sign2";
+      packageName = "aws-sign2";
+      version = "0.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
+        sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
+      };
+    };
+    "aws4-1.9.1" = {
+      name = "aws4";
+      packageName = "aws4";
+      version = "1.9.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz";
+        sha512 = "2x4b6c0ny64yv6ljfs6sv82akh200klmnh1m1i18hdj28ksxkr9c0szphnwcasy3g5y3l1wn858wcxnc2gi9q5wql8s678fc61xbhf0";
+      };
+    };
+    "axios-0.19.2" = {
+      name = "axios";
+      packageName = "axios";
+      version = "0.19.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz";
+        sha512 = "0fa6ngb4rkbyp5r4ccjgs2ykdbz8i2hcr41av59jicgq6mfva739kcd6n5dqzj3hsx7d4qi201g93li3qddn14bz9qvh76irgj2cf3y";
+      };
+    };
+    "babel-6.23.0" = {
+      name = "babel";
+      packageName = "babel";
+      version = "6.23.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel/-/babel-6.23.0.tgz";
+        sha1 = "d0d1e7d803e974765beea3232d4e153c0efb90f4";
+      };
+    };
+    "babel-code-frame-6.26.0" = {
+      name = "babel-code-frame";
+      packageName = "babel-code-frame";
+      version = "6.26.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz";
+        sha1 = "63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b";
+      };
+    };
+    "babel-core-6.26.3" = {
+      name = "babel-core";
+      packageName = "babel-core";
+      version = "6.26.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz";
+        sha512 = "0617drz6fkpdpkl4snbfz7ivd296j19182m7x4klhqac60qr77wn8bkgpz696sscxykcv1n8cdv09pz7v9xq6s1k552fyp6w0p8ag7a";
+      };
+    };
+    "babel-generator-6.26.1" = {
+      name = "babel-generator";
+      packageName = "babel-generator";
+      version = "6.26.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz";
+        sha512 = "2jfjq7ggb0ygyzxg3vw248iq0iw2v00janjva1bf3l322k4zjcx9hvq9qqy67gxxyl2igw1asxfgp769hd5229pc70kwri9l1iz09qz";
+      };
+    };
+    "babel-helper-builder-binary-assignment-operator-visitor-6.24.1" = {
+      name = "babel-helper-builder-binary-assignment-operator-visitor";
+      packageName = "babel-helper-builder-binary-assignment-operator-visitor";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz";
+        sha1 = "cce4517ada356f4220bcae8a02c2b346f9a56664";
+      };
+    };
+    "babel-helper-call-delegate-6.24.1" = {
+      name = "babel-helper-call-delegate";
+      packageName = "babel-helper-call-delegate";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz";
+        sha1 = "ece6aacddc76e41c3461f88bfc575bd0daa2df8d";
+      };
+    };
+    "babel-helper-define-map-6.26.0" = {
+      name = "babel-helper-define-map";
+      packageName = "babel-helper-define-map";
+      version = "6.26.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz";
+        sha1 = "a5f56dab41a25f97ecb498c7ebaca9819f95be5f";
+      };
+    };
+    "babel-helper-explode-assignable-expression-6.24.1" = {
+      name = "babel-helper-explode-assignable-expression";
+      packageName = "babel-helper-explode-assignable-expression";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz";
+        sha1 = "f25b82cf7dc10433c55f70592d5746400ac22caa";
+      };
+    };
+    "babel-helper-function-name-6.24.1" = {
+      name = "babel-helper-function-name";
+      packageName = "babel-helper-function-name";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz";
+        sha1 = "d3475b8c03ed98242a25b48351ab18399d3580a9";
+      };
+    };
+    "babel-helper-get-function-arity-6.24.1" = {
+      name = "babel-helper-get-function-arity";
+      packageName = "babel-helper-get-function-arity";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz";
+        sha1 = "8f7782aa93407c41d3aa50908f89b031b1b6853d";
+      };
+    };
+    "babel-helper-hoist-variables-6.24.1" = {
+      name = "babel-helper-hoist-variables";
+      packageName = "babel-helper-hoist-variables";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz";
+        sha1 = "1ecb27689c9d25513eadbc9914a73f5408be7a76";
+      };
+    };
+    "babel-helper-optimise-call-expression-6.24.1" = {
+      name = "babel-helper-optimise-call-expression";
+      packageName = "babel-helper-optimise-call-expression";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz";
+        sha1 = "f7a13427ba9f73f8f4fa993c54a97882d1244257";
+      };
+    };
+    "babel-helper-regex-6.26.0" = {
+      name = "babel-helper-regex";
+      packageName = "babel-helper-regex";
+      version = "6.26.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz";
+        sha1 = "325c59f902f82f24b74faceed0363954f6495e72";
+      };
+    };
+    "babel-helper-remap-async-to-generator-6.24.1" = {
+      name = "babel-helper-remap-async-to-generator";
+      packageName = "babel-helper-remap-async-to-generator";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz";
+        sha1 = "5ec581827ad723fecdd381f1c928390676e4551b";
+      };
+    };
+    "babel-helper-replace-supers-6.24.1" = {
+      name = "babel-helper-replace-supers";
+      packageName = "babel-helper-replace-supers";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz";
+        sha1 = "bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a";
+      };
+    };
+    "babel-helpers-6.24.1" = {
+      name = "babel-helpers";
+      packageName = "babel-helpers";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz";
+        sha1 = "3471de9caec388e5c850e597e58a26ddf37602b2";
+      };
+    };
+    "babel-jest-24.9.0" = {
+      name = "babel-jest";
+      packageName = "babel-jest";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz";
+        sha512 = "0iziajgh09ldyj02pmxdkxhzy1wj6n84az4l30p7pllaxlbz9g678q59b0309wfihbj82n4v85pi66n9crksz0f6chy2dx2zisrvnwy";
+      };
+    };
+    "babel-messages-6.23.0" = {
+      name = "babel-messages";
+      packageName = "babel-messages";
+      version = "6.23.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz";
+        sha1 = "f3cdf4703858035b2a2951c6ec5edf6c62f2630e";
+      };
+    };
+    "babel-plugin-check-es2015-constants-6.22.0" = {
+      name = "babel-plugin-check-es2015-constants";
+      packageName = "babel-plugin-check-es2015-constants";
+      version = "6.22.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz";
+        sha1 = "35157b101426fd2ffd3da3f75c7d1e91835bbf8a";
+      };
+    };
+    "babel-plugin-istanbul-5.2.0" = {
+      name = "babel-plugin-istanbul";
+      packageName = "babel-plugin-istanbul";
+      version = "5.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz";
+        sha512 = "1kj4z39mavs3h7wmb3nwrvhjddb1r138q61nisldfzcb52aikgi0hgg7yvql7xlvy7pxygx7wka7gimvcvbdhjwidwcn0qj8l5n3fp4";
+      };
+    };
+    "babel-plugin-jest-hoist-24.9.0" = {
+      name = "babel-plugin-jest-hoist";
+      packageName = "babel-plugin-jest-hoist";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz";
+        sha512 = "1gvgnf01laddy7cnxb2ggd1qg1zlsj3s72azdvib6vi9sqmbc7snzhxy6xw4dsmpypb64ncqxlk1mmasy0sycqhs53bk9qmzzc00hyq";
+      };
+    };
+    "babel-plugin-syntax-async-functions-6.13.0" = {
+      name = "babel-plugin-syntax-async-functions";
+      packageName = "babel-plugin-syntax-async-functions";
+      version = "6.13.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz";
+        sha1 = "cad9cad1191b5ad634bf30ae0872391e0647be95";
+      };
+    };
+    "babel-plugin-syntax-exponentiation-operator-6.13.0" = {
+      name = "babel-plugin-syntax-exponentiation-operator";
+      packageName = "babel-plugin-syntax-exponentiation-operator";
+      version = "6.13.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz";
+        sha1 = "9ee7e8337290da95288201a6a57f4170317830de";
+      };
+    };
+    "babel-plugin-syntax-trailing-function-commas-6.22.0" = {
+      name = "babel-plugin-syntax-trailing-function-commas";
+      packageName = "babel-plugin-syntax-trailing-function-commas";
+      version = "6.22.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz";
+        sha1 = "ba0360937f8d06e40180a43fe0d5616fff532cf3";
+      };
+    };
+    "babel-plugin-transform-async-to-generator-6.24.1" = {
+      name = "babel-plugin-transform-async-to-generator";
+      packageName = "babel-plugin-transform-async-to-generator";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz";
+        sha1 = "6536e378aff6cb1d5517ac0e40eb3e9fc8d08761";
+      };
+    };
+    "babel-plugin-transform-es2015-arrow-functions-6.22.0" = {
+      name = "babel-plugin-transform-es2015-arrow-functions";
+      packageName = "babel-plugin-transform-es2015-arrow-functions";
+      version = "6.22.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz";
+        sha1 = "452692cb711d5f79dc7f85e440ce41b9f244d221";
+      };
+    };
+    "babel-plugin-transform-es2015-block-scoped-functions-6.22.0" = {
+      name = "babel-plugin-transform-es2015-block-scoped-functions";
+      packageName = "babel-plugin-transform-es2015-block-scoped-functions";
+      version = "6.22.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz";
+        sha1 = "bbc51b49f964d70cb8d8e0b94e820246ce3a6141";
+      };
+    };
+    "babel-plugin-transform-es2015-block-scoping-6.26.0" = {
+      name = "babel-plugin-transform-es2015-block-scoping";
+      packageName = "babel-plugin-transform-es2015-block-scoping";
+      version = "6.26.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz";
+        sha1 = "d70f5299c1308d05c12f463813b0a09e73b1895f";
+      };
+    };
+    "babel-plugin-transform-es2015-classes-6.24.1" = {
+      name = "babel-plugin-transform-es2015-classes";
+      packageName = "babel-plugin-transform-es2015-classes";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz";
+        sha1 = "5a4c58a50c9c9461e564b4b2a3bfabc97a2584db";
+      };
+    };
+    "babel-plugin-transform-es2015-computed-properties-6.24.1" = {
+      name = "babel-plugin-transform-es2015-computed-properties";
+      packageName = "babel-plugin-transform-es2015-computed-properties";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz";
+        sha1 = "6fe2a8d16895d5634f4cd999b6d3480a308159b3";
+      };
+    };
+    "babel-plugin-transform-es2015-destructuring-6.23.0" = {
+      name = "babel-plugin-transform-es2015-destructuring";
+      packageName = "babel-plugin-transform-es2015-destructuring";
+      version = "6.23.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz";
+        sha1 = "997bb1f1ab967f682d2b0876fe358d60e765c56d";
+      };
+    };
+    "babel-plugin-transform-es2015-duplicate-keys-6.24.1" = {
+      name = "babel-plugin-transform-es2015-duplicate-keys";
+      packageName = "babel-plugin-transform-es2015-duplicate-keys";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz";
+        sha1 = "73eb3d310ca969e3ef9ec91c53741a6f1576423e";
+      };
+    };
+    "babel-plugin-transform-es2015-for-of-6.23.0" = {
+      name = "babel-plugin-transform-es2015-for-of";
+      packageName = "babel-plugin-transform-es2015-for-of";
+      version = "6.23.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz";
+        sha1 = "f47c95b2b613df1d3ecc2fdb7573623c75248691";
+      };
+    };
+    "babel-plugin-transform-es2015-function-name-6.24.1" = {
+      name = "babel-plugin-transform-es2015-function-name";
+      packageName = "babel-plugin-transform-es2015-function-name";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz";
+        sha1 = "834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b";
+      };
+    };
+    "babel-plugin-transform-es2015-literals-6.22.0" = {
+      name = "babel-plugin-transform-es2015-literals";
+      packageName = "babel-plugin-transform-es2015-literals";
+      version = "6.22.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz";
+        sha1 = "4f54a02d6cd66cf915280019a31d31925377ca2e";
+      };
+    };
+    "babel-plugin-transform-es2015-modules-amd-6.24.1" = {
+      name = "babel-plugin-transform-es2015-modules-amd";
+      packageName = "babel-plugin-transform-es2015-modules-amd";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz";
+        sha1 = "3b3e54017239842d6d19c3011c4bd2f00a00d154";
+      };
+    };
+    "babel-plugin-transform-es2015-modules-commonjs-6.26.2" = {
+      name = "babel-plugin-transform-es2015-modules-commonjs";
+      packageName = "babel-plugin-transform-es2015-modules-commonjs";
+      version = "6.26.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz";
+        sha512 = "3sy41x9jlzyzy6wzsj60asahzm6hg9gmr6r1cckdqhzmvckl7jbfb5zwr0nslndnhqgjwdmvxsah41h8v8286hjqbfbhxn4w4w52pq9";
+      };
+    };
+    "babel-plugin-transform-es2015-modules-systemjs-6.24.1" = {
+      name = "babel-plugin-transform-es2015-modules-systemjs";
+      packageName = "babel-plugin-transform-es2015-modules-systemjs";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz";
+        sha1 = "ff89a142b9119a906195f5f106ecf305d9407d23";
+      };
+    };
+    "babel-plugin-transform-es2015-modules-umd-6.24.1" = {
+      name = "babel-plugin-transform-es2015-modules-umd";
+      packageName = "babel-plugin-transform-es2015-modules-umd";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz";
+        sha1 = "ac997e6285cd18ed6176adb607d602344ad38468";
+      };
+    };
+    "babel-plugin-transform-es2015-object-super-6.24.1" = {
+      name = "babel-plugin-transform-es2015-object-super";
+      packageName = "babel-plugin-transform-es2015-object-super";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz";
+        sha1 = "24cef69ae21cb83a7f8603dad021f572eb278f8d";
+      };
+    };
+    "babel-plugin-transform-es2015-parameters-6.24.1" = {
+      name = "babel-plugin-transform-es2015-parameters";
+      packageName = "babel-plugin-transform-es2015-parameters";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz";
+        sha1 = "57ac351ab49caf14a97cd13b09f66fdf0a625f2b";
+      };
+    };
+    "babel-plugin-transform-es2015-shorthand-properties-6.24.1" = {
+      name = "babel-plugin-transform-es2015-shorthand-properties";
+      packageName = "babel-plugin-transform-es2015-shorthand-properties";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz";
+        sha1 = "24f875d6721c87661bbd99a4622e51f14de38aa0";
+      };
+    };
+    "babel-plugin-transform-es2015-spread-6.22.0" = {
+      name = "babel-plugin-transform-es2015-spread";
+      packageName = "babel-plugin-transform-es2015-spread";
+      version = "6.22.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz";
+        sha1 = "d6d68a99f89aedc4536c81a542e8dd9f1746f8d1";
+      };
+    };
+    "babel-plugin-transform-es2015-sticky-regex-6.24.1" = {
+      name = "babel-plugin-transform-es2015-sticky-regex";
+      packageName = "babel-plugin-transform-es2015-sticky-regex";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz";
+        sha1 = "00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc";
+      };
+    };
+    "babel-plugin-transform-es2015-template-literals-6.22.0" = {
+      name = "babel-plugin-transform-es2015-template-literals";
+      packageName = "babel-plugin-transform-es2015-template-literals";
+      version = "6.22.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz";
+        sha1 = "a84b3450f7e9f8f1f6839d6d687da84bb1236d8d";
+      };
+    };
+    "babel-plugin-transform-es2015-typeof-symbol-6.23.0" = {
+      name = "babel-plugin-transform-es2015-typeof-symbol";
+      packageName = "babel-plugin-transform-es2015-typeof-symbol";
+      version = "6.23.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz";
+        sha1 = "dec09f1cddff94b52ac73d505c84df59dcceb372";
+      };
+    };
+    "babel-plugin-transform-es2015-unicode-regex-6.24.1" = {
+      name = "babel-plugin-transform-es2015-unicode-regex";
+      packageName = "babel-plugin-transform-es2015-unicode-regex";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz";
+        sha1 = "d38b12f42ea7323f729387f18a7c5ae1faeb35e9";
+      };
+    };
+    "babel-plugin-transform-exponentiation-operator-6.24.1" = {
+      name = "babel-plugin-transform-exponentiation-operator";
+      packageName = "babel-plugin-transform-exponentiation-operator";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz";
+        sha1 = "2ab0c9c7f3098fa48907772bb813fe41e8de3a0e";
+      };
+    };
+    "babel-plugin-transform-regenerator-6.26.0" = {
+      name = "babel-plugin-transform-regenerator";
+      packageName = "babel-plugin-transform-regenerator";
+      version = "6.26.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz";
+        sha1 = "e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f";
+      };
+    };
+    "babel-plugin-transform-strict-mode-6.24.1" = {
+      name = "babel-plugin-transform-strict-mode";
+      packageName = "babel-plugin-transform-strict-mode";
+      version = "6.24.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz";
+        sha1 = "d5faf7aa578a65bbe591cf5edae04a0c67020758";
+      };
+    };
+    "babel-preset-env-1.7.0" = {
+      name = "babel-preset-env";
+      packageName = "babel-preset-env";
+      version = "1.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz";
+        sha512 = "0g45grnsjds9va8zwb68gpm4ngzmnb351bbvphnmis7bifsh2ny2c00bwah57fn1yv87fs69hriimbysbm15dpsvfbpf3lazdlpdr7l";
+      };
+    };
+    "babel-preset-jest-24.9.0" = {
+      name = "babel-preset-jest";
+      packageName = "babel-preset-jest";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz";
+        sha512 = "01858ghqwnl2b16rmrwwf6w6z3awwvxm22ld8vnfghf6lil3pkxdjjpfn70iib4plm4ynwrfrsiyr0gf3qxjzgi8k9wfk1q26xd8d4b";
+      };
+    };
+    "babel-register-6.26.0" = {
+      name = "babel-register";
+      packageName = "babel-register";
+      version = "6.26.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz";
+        sha1 = "6ed021173e2fcb486d7acb45c6009a856f647071";
+      };
+    };
+    "babel-runtime-6.26.0" = {
+      name = "babel-runtime";
+      packageName = "babel-runtime";
+      version = "6.26.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz";
+        sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe";
+      };
+    };
+    "babel-template-6.26.0" = {
+      name = "babel-template";
+      packageName = "babel-template";
+      version = "6.26.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz";
+        sha1 = "de03e2d16396b069f46dd9fff8521fb1a0e35e02";
+      };
+    };
+    "babel-traverse-6.26.0" = {
+      name = "babel-traverse";
+      packageName = "babel-traverse";
+      version = "6.26.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz";
+        sha1 = "46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee";
+      };
+    };
+    "babel-types-6.26.0" = {
+      name = "babel-types";
+      packageName = "babel-types";
+      version = "6.26.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz";
+        sha1 = "a3b073f94ab49eb6fa55cd65227a334380632497";
+      };
+    };
+    "babylon-6.18.0" = {
+      name = "babylon";
+      packageName = "babylon";
+      version = "6.18.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz";
+        sha512 = "1qk460vyxfs08g8586jdc02wqzyy2y06596qcn1na9bz7yxra6vgh6177qf345xai0virpaz56bkpgmfcrd8yx5l2vjkn49y66h9xdb";
+      };
+    };
+    "balanced-match-1.0.0" = {
+      name = "balanced-match";
+      packageName = "balanced-match";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
+        sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
+      };
+    };
+    "base-0.11.2" = {
+      name = "base";
+      packageName = "base";
+      version = "0.11.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/base/-/base-0.11.2.tgz";
+        sha512 = "11dwi4v72034dqafp0qxsg8h6cpn92vv4vf909a9fybd69yfg6gqn4hhav6x59r1wbi8h1qlgfh9np0340mpljv1hc9v9p02giqygp5";
+      };
+    };
+    "base64-js-1.3.1" = {
+      name = "base64-js";
+      packageName = "base64-js";
+      version = "1.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz";
+        sha512 = "3mbfy80f2q6z8fwzch81hn7z0wjjsz6lwzz4jwrgr62pyql94mwi21k0l28xba2q1pydf8hf0jzzvr8w34rjmk135pjpmqfcj5kid4q";
+      };
+    };
+    "base64url-3.0.1" = {
+      name = "base64url";
+      packageName = "base64url";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz";
+        sha512 = "3hb3l768r5h0x6z47fw1kn6v50cx9xncmm6yzbhvrvgja0j26fwvhpyh8ppwnf1c2j8g62c912l7cq5h755fpdiafqhg4yxplz59gca";
+      };
+    };
+    "batch-0.6.1" = {
+      name = "batch";
+      packageName = "batch";
+      version = "0.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz";
+        sha1 = "dc34314f4e679318093fc760272525f94bf25c16";
+      };
+    };
+    "bcrypt-pbkdf-1.0.2" = {
+      name = "bcrypt-pbkdf";
+      packageName = "bcrypt-pbkdf";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
+        sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
+      };
+    };
+    "bfj-6.1.2" = {
+      name = "bfj";
+      packageName = "bfj";
+      version = "6.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz";
+        sha512 = "0dhyz488lykv8avkn9y738mnlkgkffxwsp5xmh9sffsh1xxdnigsd9a6l01vj0bdzqdmzqq0pbw31qh9x06fll38i7s19z2h9mljq06";
+      };
+    };
+    "big.js-5.2.2" = {
+      name = "big.js";
+      packageName = "big.js";
+      version = "5.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz";
+        sha512 = "2cin34lhbrlligarblnrqnl6f419mkpqd4abjms0y1fk1mxzb6rqvh1sg0zif7bgskirhh6shxnqa444syk4cf87fmndil954xzc8mz";
+      };
+    };
+    "binary-extensions-1.13.1" = {
+      name = "binary-extensions";
+      packageName = "binary-extensions";
+      version = "1.13.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz";
+        sha512 = "0drjfs8xmgc4rfi8nbbx7adsinnc5m0nc96dw3r3gars8zvg1kzay5a7a5s3islf13wmw7q9v15i7d2gdghs1lp6rh2wl6x80hcqzjj";
+      };
+    };
+    "bindings-1.5.0" = {
+      name = "bindings";
+      packageName = "bindings";
+      version = "1.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz";
+        sha512 = "24xpa35sym31k1x9hs78jbmsh58yx7ldkn03d4g5qhmvm0bi5cwqvpn2s6r8hkwhks5mhm81gz878gbp5g9b2s7zniy7gm1z6vvysm7";
+      };
+    };
+    "bluebird-3.7.2" = {
+      name = "bluebird";
+      packageName = "bluebird";
+      version = "3.7.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz";
+        sha512 = "2v12rs2wvv94hrlyv0nadxn9x11796k9mk7a8vg0bqsry8m2pbyy9dribalwikh34qkk3rp6gnis849y5z9x5mxzbbdgkfhc3l674sy";
+      };
+    };
+    "bn.js-4.11.8" = {
+      name = "bn.js";
+      packageName = "bn.js";
+      version = "4.11.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz";
+        sha512 = "20bg51v29zygy89w84qb64pkjikxfjdsgjs0ry6pvv8fkwn5kd1izrqn022d838q3rcaq8dmy033g7q8b6960j4f8ipan74y9ydimr2";
+      };
+    };
+    "body-parser-1.19.0" = {
+      name = "body-parser";
+      packageName = "body-parser";
+      version = "1.19.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz";
+        sha512 = "2rl5ww96fwgmxdqhqmnknsaafw44vsr2xz7vf7nax8qz9jy8bmmdyawcy6yfny0wm7pi8m2jssakzjc1nin8z8207kv0gclpnrhy4bn";
+      };
+    };
+    "bonjour-3.5.0" = {
+      name = "bonjour";
+      packageName = "bonjour";
+      version = "3.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz";
+        sha1 = "8e890a183d8ee9a2393b3844c691a42bcf7bc9f5";
+      };
+    };
+    "brace-expansion-1.1.11" = {
+      name = "brace-expansion";
+      packageName = "brace-expansion";
+      version = "1.1.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
+        sha512 = "248cnpbbf0p32h53rd3g8wzpgrkaj4p078ra1g6l16f82i6bzkvmhwqan5rk88apbll9ly1476kngd7f7z27i3b3zxpbb3064f8yaw8";
+      };
+    };
+    "braces-2.3.2" = {
+      name = "braces";
+      packageName = "braces";
+      version = "2.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz";
+        sha512 = "3gxrfbb03jf6nh75n99snhv4a9jni48hfc0gkj5yl1cginpqx3d73dnp8snph1fdkc804iz6zg0aqibifjnscjfbpfziw2g7yg5pmv8";
+      };
+    };
+    "brorand-1.1.0" = {
+      name = "brorand";
+      packageName = "brorand";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz";
+        sha1 = "12c25efe40a45e3c323eb8675a0a0ce57b22371f";
+      };
+    };
+    "browser-process-hrtime-1.0.0" = {
+      name = "browser-process-hrtime";
+      packageName = "browser-process-hrtime";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz";
+        sha512 = "2ijqy6cba233jd04p2sd4a372z807f9rsykxzbf3sn50102h7nv57bid0bldh9is9c4yajgdjwlif9xpnz5xsx06clij6ipq9wm93pn";
+      };
+    };
+    "browser-resolve-1.11.3" = {
+      name = "browser-resolve";
+      packageName = "browser-resolve";
+      version = "1.11.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz";
+        sha512 = "1slq1pnm0b2903am1rl17iczlsl08sq4rckkr5fgkchgzfac13kiibwdk08yy2m62lgir8dmj9d61vil8q0vrm1d2mzw1qn2vaf443v";
+      };
+    };
+    "browserify-aes-1.2.0" = {
+      name = "browserify-aes";
+      packageName = "browserify-aes";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz";
+        sha512 = "22gkxh9wf4hjxkyvj427k9r76xkz9vs63s1drwcggbpv0r7qdclzdvw167s7iq8936zak241cc5ck3bqkp6hy99zlkrbcmfl5g8gc7v";
+      };
+    };
+    "browserify-cipher-1.0.1" = {
+      name = "browserify-cipher";
+      packageName = "browserify-cipher";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz";
+        sha512 = "3bz6v63l37ndb18236yjdkbxjcvy4x16a8j7vsqxqprvnkcnkq1hg1ffd1c9zk9a3j555ppnpisfyh0x4adlb8lmpwbfa8i837n9y5h";
+      };
+    };
+    "browserify-des-1.0.2" = {
+      name = "browserify-des";
+      packageName = "browserify-des";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz";
+        sha512 = "3j1gv3firnsbjppm47ldxbav9rmh3plq026zn728wvhgf19i4r7kxzyyj7hpibhjv61lcm9i4b869yy90c8hfj7w8rmr17p2zbhwah6";
+      };
+    };
+    "browserify-rsa-4.0.1" = {
+      name = "browserify-rsa";
+      packageName = "browserify-rsa";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz";
+        sha1 = "21e0abfaf6f2029cf2fafb133567a701d4135524";
+      };
+    };
+    "browserify-sign-4.0.4" = {
+      name = "browserify-sign";
+      packageName = "browserify-sign";
+      version = "4.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz";
+        sha1 = "aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298";
+      };
+    };
+    "browserify-zlib-0.2.0" = {
+      name = "browserify-zlib";
+      packageName = "browserify-zlib";
+      version = "0.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz";
+        sha512 = "24488d4s6d901hj9d9jdddapmcvmibbdpjq6nv3bpyjx72546fcqa0vripy0ydsrw1jk6bakfzvynh5i9cz0g59hrmn4ph75d3kdpk7";
+      };
+    };
+    "browserslist-3.2.8" = {
+      name = "browserslist";
+      packageName = "browserslist";
+      version = "3.2.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz";
+        sha512 = "00i65frm5jkbv8pzc13i02fzd39q0ahh653zzjzhq35pz6p0idajfjqg1b7mnnlvxymihcpmd1cfhwaj51hnqjmh4alrg8sjrq6hxaq";
+      };
+    };
+    "bs-logger-0.2.6" = {
+      name = "bs-logger";
+      packageName = "bs-logger";
+      version = "0.2.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz";
+        sha512 = "2i44nrigqkrnr7acqqppsmv9y97b55vma5fwg30jdhy9m4pc13rb3bpfxm8r560fp81605chdi27mx8dpy3mji3hwxhfvk6ih507px5";
+      };
+    };
+    "bser-2.1.1" = {
+      name = "bser";
+      packageName = "bser";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz";
+        sha512 = "30jby01rqjgx78xnzyysjav12c0cj8dcwd40wprcfh1jn3768cdkb834q1zyf3wivhifi47xqa7jai7x16m1jv1mq4g40f69ws56341";
+      };
+    };
+    "buffer-4.9.2" = {
+      name = "buffer";
+      packageName = "buffer";
+      version = "4.9.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz";
+        sha512 = "1d85syv6ashl8f3a6h553d185cg3vq6nhjqnc80vr2z3bak0c9xbm1jawfk9zs43xz34yih6h6j3bhb3njkahdqpji12fsc4kfsmby6";
+      };
+    };
+    "buffer-from-1.1.1" = {
+      name = "buffer-from";
+      packageName = "buffer-from";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz";
+        sha512 = "3c0m16i3fdv3vlq2zz8dakrnhqvs16gvggj485f91fiaa5v0p7pyhamcdw5fggr7djzd8nshmvz4hgbp7714smqxlld2an28q8if1ri";
+      };
+    };
+    "buffer-indexof-1.1.1" = {
+      name = "buffer-indexof";
+      packageName = "buffer-indexof";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz";
+        sha512 = "3bgz1zhq9ng3gypq825f00p9qi9y6z7wvkkf28nhjlyifnb3lk1dkmbya84k0ja79zv8kmmhvalwcnnz92533ip7pnjp3is1w9cxyp3";
+      };
+    };
+    "buffer-xor-1.0.3" = {
+      name = "buffer-xor";
+      packageName = "buffer-xor";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz";
+        sha1 = "26e61ed1422fb70dd42e6e36729ed51d855fe8d9";
+      };
+    };
+    "builtin-status-codes-3.0.0" = {
+      name = "builtin-status-codes";
+      packageName = "builtin-status-codes";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz";
+        sha1 = "85982878e21b98e1c66425e03d0174788f569ee8";
+      };
+    };
+    "byline-5.0.0" = {
+      name = "byline";
+      packageName = "byline";
+      version = "5.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz";
+        sha1 = "741c5216468eadc457b03410118ad77de8c1ddb1";
+      };
+    };
+    "bytes-3.0.0" = {
+      name = "bytes";
+      packageName = "bytes";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz";
+        sha1 = "d32815404d689699f85a4ea4fa8755dd13a96048";
+      };
+    };
+    "bytes-3.1.0" = {
+      name = "bytes";
+      packageName = "bytes";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz";
+        sha512 = "073ccjmvxf726gcgzy0pksvi8x8r51dq6hyv69sc75ynrin7anwk9q3sqhbbbjhqjjrmq42s5f5gdbcgj2jxai6ldpyq6y2ny78payd";
+      };
+    };
+    "cacache-10.0.4" = {
+      name = "cacache";
+      packageName = "cacache";
+      version = "10.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz";
+        sha512 = "0f1zwi8bbiia995410m24xljd0ra0vk579q7rk48p7mrq9nbilx3qa2rnp7hjdwnvx28zfad0rfdcwyq3blzkb3rk8b9yl77crp960f";
+      };
+    };
+    "cacache-12.0.3" = {
+      name = "cacache";
+      packageName = "cacache";
+      version = "12.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz";
+        sha512 = "0zsyrn5azk0hm2mhfsa2wwz1g66wis9f7ifxl2sphms1i91z75mfmky892g7c538slj94fgd8nlbjnw5irki49vn5gfl586f5ynd9wj";
+      };
+    };
+    "cache-base-1.0.1" = {
+      name = "cache-base";
+      packageName = "cache-base";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz";
+        sha512 = "36i943khi87af4gif9r6imjgybqxq9cbd69z2h8p2s2j6scfbhrv7j3n591xl982fmyq29rkwh70a6qdcf3v0piwzfh8n2jf571v9q0";
+      };
+    };
+    "cache-content-type-1.0.1" = {
+      name = "cache-content-type";
+      packageName = "cache-content-type";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz";
+        sha512 = "209nv86cqszi98b5mij2w84m5ixnnwxh211nv0zjgfi46l52fp437hqznnc0ckm5nlgr4labfn16wxa7s7lmnaac4vdwliqb9krzar0";
+      };
+    };
+    "cacheable-request-2.1.4" = {
+      name = "cacheable-request";
+      packageName = "cacheable-request";
+      version = "2.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz";
+        sha1 = "0d808801b6342ad33c91df9d0b44dc09b91e5c3d";
+      };
+    };
+    "callsites-3.1.0" = {
+      name = "callsites";
+      packageName = "callsites";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz";
+        sha512 = "1ljrfqkxsjdvl02qlx1xdsw8csg4az6dkwvlk0zmcz7x3b6q3kbggd8i3ai8jcjicabdsqkhvpjy0898xcdf21m42ajyrggql167h1z";
+      };
+    };
+    "camelcase-1.2.1" = {
+      name = "camelcase";
+      packageName = "camelcase";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz";
+        sha1 = "9bb5304d2e0b56698b2c758b08a3eaa9daa58a39";
+      };
+    };
+    "camelcase-4.1.0" = {
+      name = "camelcase";
+      packageName = "camelcase";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz";
+        sha1 = "d545635be1e33c542649c69173e5de6acfae34dd";
+      };
+    };
+    "camelcase-5.3.1" = {
+      name = "camelcase";
+      packageName = "camelcase";
+      version = "5.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz";
+        sha512 = "0kg17fpj4c7akmpa9x0a3fi5glrc3y5k3ppjcpb3pd02ylg3fnzfdvz0pixd223crbs5980sjaxsk9q8kcqxm5d9cb7rlkv3m614vrg";
+      };
+    };
+    "caniuse-lite-1.0.30001035" = {
+      name = "caniuse-lite";
+      packageName = "caniuse-lite";
+      version = "1.0.30001035";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz";
+        sha512 = "0nv07k5fhwwhak7xbp0kf2z0v2bpjicyrs11c9d14cipzzgcx6has5910iwc7yhh3mja5h52d93x3hrmfam66yk27agdqw09f172mhb";
+      };
+    };
+    "capture-exit-2.0.0" = {
+      name = "capture-exit";
+      packageName = "capture-exit";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz";
+        sha512 = "3m6md2j1rsn26hijf0yfbbfnx6w2jrrqhr2b2xwjc9lyzvypidyz5krczc9wb04z1vq4mgb759ljwn7iggiiigijzhp38lk162zy91y";
+      };
+    };
+    "caseless-0.12.0" = {
+      name = "caseless";
+      packageName = "caseless";
+      version = "0.12.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
+        sha1 = "1b681c21ff84033c826543090689420d187151dc";
+      };
+    };
+    "center-align-0.1.3" = {
+      name = "center-align";
+      packageName = "center-align";
+      version = "0.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz";
+        sha1 = "aa0d32629b6ee972200411cbd4461c907bc2b7ad";
+      };
+    };
+    "chalk-1.1.3" = {
+      name = "chalk";
+      packageName = "chalk";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz";
+        sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
+      };
+    };
+    "chalk-2.4.2" = {
+      name = "chalk";
+      packageName = "chalk";
+      version = "2.4.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz";
+        sha512 = "2wr55z22i274wadq2cvpxga28a8igq9whc4m1q06sz5sn2hc4amradd5vd02wm92vyfg2qrb0bysd5drv7mfmlb2wqdf939v5zvxn1j";
+      };
+    };
+    "character-parser-2.2.0" = {
+      name = "character-parser";
+      packageName = "character-parser";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz";
+        sha1 = "c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0";
+      };
+    };
+    "check-types-8.0.3" = {
+      name = "check-types";
+      packageName = "check-types";
+      version = "8.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz";
+        sha512 = "30ql79azwkvqg2pfwvc0zp51fbwpijfbxdrnw5v5vsd3j2k6bzi5d78p78b877fzrji6clkw284pdakba5jg7dvmjwnx60lg1k8m5v2";
+      };
+    };
+    "chokidar-2.1.8" = {
+      name = "chokidar";
+      packageName = "chokidar";
+      version = "2.1.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz";
+        sha512 = "21d2yf3364v025ivy6ak1bh61qvvq9llryh8c1rhvrif1kalx0j996x8m0qs717cgl97q5c40awyv8gi8hbmpgfpl6zvkff6xmm8rk6";
+      };
+    };
+    "chownr-1.1.4" = {
+      name = "chownr";
+      packageName = "chownr";
+      version = "1.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz";
+        sha512 = "1b03acmav1awkygrda5h64pn8msd6wda119q553hik728i1j72bfqyq7yzn1x7nmw28hvg9mcyh7krsj8vwsq3karnn55mj6smip7cc";
+      };
+    };
+    "chrome-trace-event-1.0.2" = {
+      name = "chrome-trace-event";
+      packageName = "chrome-trace-event";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz";
+        sha512 = "06mh145f12ppkxn7xdzrvh7rrjg9c770rqai08m8r5i31br1ihc96i63dyn0c4arfl1hl0za33kzy5i09x4agz77c11xv7hb33z7vzm";
+      };
+    };
+    "ci-info-2.0.0" = {
+      name = "ci-info";
+      packageName = "ci-info";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz";
+        sha512 = "04yh5kqsx5akwc3rlcwqrvz3lrb8mak15ysxan17hw9pp00kmf20m8d9dpbnkq612wc1wwvjzcci1wgivd8cbak5j7dzl6rv89bplp6";
+      };
+    };
+    "cipher-base-1.0.4" = {
+      name = "cipher-base";
+      packageName = "cipher-base";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz";
+        sha512 = "3cm9kdc1sv7pakzlhrc1pazdvg9lk4hv31lximwbcrgmwfzg6imxrndszgx9yzlizknfh2b73cr7b5mfcv50bldpyq6jr5s4zknsj1a";
+      };
+    };
+    "class-utils-0.3.6" = {
+      name = "class-utils";
+      packageName = "class-utils";
+      version = "0.3.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz";
+        sha512 = "1xcqwmfmsbrm2ck76brwiqjmcza655khgh5szh6wngk357i37sgwsga1pbarwzaz9hvzkriqhq6j0z5mv0pmz61cf9wxvk3y5mlzs58";
+      };
+    };
+    "clean-css-4.2.3" = {
+      name = "clean-css";
+      packageName = "clean-css";
+      version = "4.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz";
+        sha512 = "0ad50l577m99sgpcdd49zspq8h9n9i3hhngapg9y5q76s7zwdz3hmaw2kc2jg30lk4z3wlyp9kgiyg71dvg0fg89g1xyr3qvq61dhsm";
+      };
+    };
+    "clean-stack-1.3.0" = {
+      name = "clean-stack";
+      packageName = "clean-stack";
+      version = "1.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz";
+        sha1 = "9e821501ae979986c46b1d66d2d432db2fd4ae31";
+      };
+    };
+    "cli-cursor-2.1.0" = {
+      name = "cli-cursor";
+      packageName = "cli-cursor";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz";
+        sha1 = "b35dac376479facc3e94747d41d0d0f5238ffcb5";
+      };
+    };
+    "cli-spinners-2.2.0" = {
+      name = "cli-spinners";
+      packageName = "cli-spinners";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz";
+        sha512 = "0lj50waj40l4a51whihhvrjb838jqjkp1znn7dqgw6bsb1z7qwfyaxfggwmy3122rvnz4gxa8fn7qmp94zk03q8265khqikmiy3f1dn";
+      };
+    };
+    "cliui-2.1.0" = {
+      name = "cliui";
+      packageName = "cliui";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz";
+        sha1 = "4b475760ff80264c762c3a1719032e91c7fea0d1";
+      };
+    };
+    "cliui-4.1.0" = {
+      name = "cliui";
+      packageName = "cliui";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz";
+        sha512 = "26knyxdavl3y7kq82vfa094ym3n05vy2h2j5srb9fhhy8l43l0kwlasah5i78jks77zqgc373hbf96xcxv6am042gpbw35x452vwlg0";
+      };
+    };
+    "cliui-5.0.0" = {
+      name = "cliui";
+      packageName = "cliui";
+      version = "5.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz";
+        sha512 = "1fg1afsij2xwc4gpqbyhrp3s7q19w7bmii0ghmdv6cdx6giz3v0yqn25i3g7fw2lpi388jpvaf6nf9z2c7xp7w7psrww7569548d1rx";
+      };
+    };
+    "clone-1.0.4" = {
+      name = "clone";
+      packageName = "clone";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz";
+        sha1 = "da309cc263df15994c688ca902179ca3c7cd7c7e";
+      };
+    };
+    "clone-response-1.0.2" = {
+      name = "clone-response";
+      packageName = "clone-response";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz";
+        sha1 = "d1dc973920314df67fbeb94223b4ee350239e96b";
+      };
+    };
+    "co-4.6.0" = {
+      name = "co";
+      packageName = "co";
+      version = "4.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/co/-/co-4.6.0.tgz";
+        sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184";
+      };
+    };
+    "co-body-5.2.0" = {
+      name = "co-body";
+      packageName = "co-body";
+      version = "5.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/co-body/-/co-body-5.2.0.tgz";
+        sha512 = "36nr6zz2qri7lg37azg3n5lq5cwgfi3pf7j35l908qlc0shbbi353k47ama8q7p8c4gb9czdjpr7xy05ar7pnqwdcr1hlpan91wnzxi";
+      };
+    };
+    "code-point-at-1.1.0" = {
+      name = "code-point-at";
+      packageName = "code-point-at";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz";
+        sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
+      };
+    };
+    "collection-visit-1.0.0" = {
+      name = "collection-visit";
+      packageName = "collection-visit";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz";
+        sha1 = "4bc0373c164bc3291b4d368c829cf1a80a59dca0";
+      };
+    };
+    "color-convert-1.9.3" = {
+      name = "color-convert";
+      packageName = "color-convert";
+      version = "1.9.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz";
+        sha512 = "0d5pmdh1dh0qbpjrzdczwqkh0jwf8gxhq71mknwlxqz80h1q6kdrpghq4qfp0y4v650ia2jdihmzpb2n8hg00h72lnx05dgvysi9w21";
+      };
+    };
+    "color-name-1.1.3" = {
+      name = "color-name";
+      packageName = "color-name";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz";
+        sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
+      };
+    };
+    "combined-stream-1.0.8" = {
+      name = "combined-stream";
+      packageName = "combined-stream";
+      version = "1.0.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz";
+        sha512 = "1v09nkip7zpn3k3prkkg53w331rhczpfgcqb0q42i97nafra43l2khl5zvhd4ar0qmh145nmw7944jy8p108ny0xpgy29gf2wqph0qm";
+      };
+    };
+    "command-line-args-5.1.1" = {
+      name = "command-line-args";
+      packageName = "command-line-args";
+      version = "5.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.1.tgz";
+        sha512 = "1dffdcll80c4cs7d9026187ild861bw26qph26frx8hx2dv23wwsw5g68kykqs8g2da57f62s56psxplx3bxcsprd85v5kbr4dxxgw4";
+      };
+    };
+    "commander-2.20.3" = {
+      name = "commander";
+      packageName = "commander";
+      version = "2.20.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz";
+        sha512 = "1qqrwy7z476gqa94kjjyyzyi3x49k28ji7znbc65plrp67yzmpa2yyslh6bl965yl4jqb2fwb2ljzhgcvv2xxj8ab86n5rgryc6958s";
+      };
+    };
+    "commondir-1.0.1" = {
+      name = "commondir";
+      packageName = "commondir";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz";
+        sha1 = "ddd800da0c66127393cca5950ea968a3aaf1253b";
+      };
+    };
+    "component-emitter-1.3.0" = {
+      name = "component-emitter";
+      packageName = "component-emitter";
+      version = "1.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz";
+        sha512 = "136ravx3m3gf0ca84sf21hj47wmpqyjzmx6yvhj0b14mga7xcxfcgdc7yj9z8klcbr4yfqzy88fksmf233qx68a9ysw7yh1lixyrpa5";
+      };
+    };
+    "compressible-2.0.18" = {
+      name = "compressible";
+      packageName = "compressible";
+      version = "2.0.18";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz";
+        sha512 = "13341lfj8d36v6gha16xmv92w4875z8irqdbns3jxlkc3a63aswys5sajq97y1sd42l08inw1l0s51r4l9lv20w6gy14nsxzvnfnp80";
+      };
+    };
+    "compression-1.7.4" = {
+      name = "compression";
+      packageName = "compression";
+      version = "1.7.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz";
+        sha512 = "24kqcbwm455isy2yiyfrdrsh011qi09pbgylw1jws2yfmiwmwp2j8pmax52c41z3x1n84v1j5va29dnxwygkl4pw599b9gx6c7qi94d";
+      };
+    };
+    "concat-map-0.0.1" = {
+      name = "concat-map";
+      packageName = "concat-map";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
+        sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
+      };
+    };
+    "concat-stream-1.6.2" = {
+      name = "concat-stream";
+      packageName = "concat-stream";
+      version = "1.6.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz";
+        sha512 = "05nnf80j9ls12y3cw2dfnc6rmand3ya5sx9cqn9dgg19ljzdnyfjjv8ig79xi73gr2y4rkfzn9wjip2zzwp5n2d49njd3ki2a1c3cfv";
+      };
+    };
+    "condense-newlines-0.2.1" = {
+      name = "condense-newlines";
+      packageName = "condense-newlines";
+      version = "0.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz";
+        sha1 = "3de985553139475d32502c83b02f60684d24c55f";
+      };
+    };
+    "config-chain-1.1.12" = {
+      name = "config-chain";
+      packageName = "config-chain";
+      version = "1.1.12";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz";
+        sha512 = "2hg7rni4gx8l765i8qzkp9dv69c8r06i8rxxkkkrsklbd8iz6ingxnp10r4fqqrm9jxy3gp8yp0lzpybwdf27kq49abkyxwrchqwmvb";
+      };
+    };
+    "connect-history-api-fallback-1.6.0" = {
+      name = "connect-history-api-fallback";
+      packageName = "connect-history-api-fallback";
+      version = "1.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz";
+        sha512 = "0p9s5aqb76hamj9z64zd53ndh5r1jv76iw97hwrylmwwjprjn1246hrr5nvp5vs1xwwipq6dv7zj4qwywbn3n4cxc3llfdzvbvh37kv";
+      };
+    };
+    "console-browserify-1.2.0" = {
+      name = "console-browserify";
+      packageName = "console-browserify";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz";
+        sha512 = "168x7bp4xr522yw92himv9xv14q336ps1kkg79qcmarg3q4yzpd52pa8x8zgq11b6996f8053799k6365437si3pk85w5z4y8xiijb4";
+      };
+    };
+    "consolidate-0.15.1" = {
+      name = "consolidate";
+      packageName = "consolidate";
+      version = "0.15.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz";
+        sha512 = "0rx5m8ygvw7y8rfs0fgpl6ppwk6gm7299qsnm005x88ws9yzb9fcj143f2irjsb94k8x9kdw7pap819dgg3w6x0jayhq9hcpfg3lvhd";
+      };
+    };
+    "constantinople-3.1.2" = {
+      name = "constantinople";
+      packageName = "constantinople";
+      version = "3.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz";
+        sha512 = "2xnhrmlbkfpcvckxxrl0hjp6qhhqv1p7c6pwxgqp1g0sa5q5cc514xn48g9x8kqj7g1imzciwgb2msbhvhn0w0v92mb7105l43drqy9";
+      };
+    };
+    "constants-browserify-1.0.0" = {
+      name = "constants-browserify";
+      packageName = "constants-browserify";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz";
+        sha1 = "c20b96d8c617748aaf1c16021760cd27fcb8cb75";
+      };
+    };
+    "content-disposition-0.5.3" = {
+      name = "content-disposition";
+      packageName = "content-disposition";
+      version = "0.5.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz";
+        sha512 = "3976ggkw1lp21a6m3s19blb9a74kq7a0spw47v0m3vvi1k5wiamrsn20slcr9byx80x2la2sppkwjp7x10gc58142dl7412pvpv84qk";
+      };
+    };
+    "content-type-1.0.4" = {
+      name = "content-type";
+      packageName = "content-type";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz";
+        sha512 = "1f4y61wc913jrnga7nny83gzf9l2488q6sl1ry9lbwgh5x5d3va0xcc0xrmjk6gdxl6d4r6rsk800xp5bazhjrx05yx1wpc8c8gg0w4";
+      };
+    };
+    "convert-source-map-1.7.0" = {
+      name = "convert-source-map";
+      packageName = "convert-source-map";
+      version = "1.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz";
+        sha512 = "2hgf7brri4yaflx3y24d2cvznsk0km17mq8mp7sb2hhskf45hcamlgf8vzzbimw36lw128bjbf442p2rx96d1bhn9sk044p69gn8lp0";
+      };
+    };
+    "cookie-0.4.0" = {
+      name = "cookie";
+      packageName = "cookie";
+      version = "0.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz";
+        sha512 = "1g7bscknfpc6zgznz77hvll6cy5m9jv7zg9nkpdqzmgi0vhv75kh8iyqf6rdslkml47l3jihsz7hy0i8x5n6bfx9ba0kvvrp9y7qypq";
+      };
+    };
+    "cookie-signature-1.0.6" = {
+      name = "cookie-signature";
+      packageName = "cookie-signature";
+      version = "1.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz";
+        sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
+      };
+    };
+    "cookies-0.8.0" = {
+      name = "cookies";
+      packageName = "cookies";
+      version = "0.8.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz";
+        sha512 = "2iqv33i76hmss097a18gkv8v1kawzs5zkgkri3nnrql9160y2vpkasv8dqj7l4c9hh6y6ki6nv072y13jrxzfcgp3kvay8zjh1fr8zi";
+      };
+    };
+    "copy-concurrently-1.0.5" = {
+      name = "copy-concurrently";
+      packageName = "copy-concurrently";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz";
+        sha512 = "3c1ggiqqnjgqlwdnimx94gm176c8rjsrih5qw2lbm642l8x7grx07v065k4j89c1p0adkm7v6sz11drb6j6sp51np2m1cazvycnhrvz";
+      };
+    };
+    "copy-descriptor-0.1.1" = {
+      name = "copy-descriptor";
+      packageName = "copy-descriptor";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz";
+        sha1 = "676f6eb3c39997c2ee1ac3a924fd6124748f578d";
+      };
+    };
+    "copy-webpack-plugin-4.6.0" = {
+      name = "copy-webpack-plugin";
+      packageName = "copy-webpack-plugin";
+      version = "4.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz";
+        sha512 = "1j7l2xm5blz3ylmq1c0mwlkfbx9faqm09zid0czbyyfr05236pkgvzjzfr7syqb95mgzkzxdag697p4wwsxpcr7my88admlbw491r33";
+      };
+    };
+    "core-js-2.6.11" = {
+      name = "core-js";
+      packageName = "core-js";
+      version = "2.6.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz";
+        sha512 = "1db6yjq48a8kkrfrxd0miblcf7nk2b4afgpr8dfgjl3jvz3xclvrqmz590hx2h59jh79lgl35r101lw5jqs46qybizdbpgzljjyf277";
+      };
+    };
+    "core-util-is-1.0.2" = {
+      name = "core-util-is";
+      packageName = "core-util-is";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
+        sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
+      };
+    };
+    "create-ecdh-4.0.3" = {
+      name = "create-ecdh";
+      packageName = "create-ecdh";
+      version = "4.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz";
+        sha512 = "1mhn55gf43qsdrp2klyyyxqjsd5mw9l6s51vsfj7wl44pq7ymfw68r8wkd4yd8dd6adg3k6q18sddxfjljr0gbk56lh3cqfyd00gc8r";
+      };
+    };
+    "create-hash-1.2.0" = {
+      name = "create-hash";
+      packageName = "create-hash";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz";
+        sha512 = "055xaldi3hy1bjxhvznh3470j1kq2xk827mxal79bgqik3lblax6s4inxqby27ymgcghl2hn7wnx9fnacmyq3q93hk6y327cc41nkfg";
+      };
+    };
+    "create-hmac-1.1.7" = {
+      name = "create-hmac";
+      packageName = "create-hmac";
+      version = "1.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz";
+        sha512 = "0p2jhk94k3as67lhrr1jyljkr0y65snxjzqnix0nifnfcanhilccrzkc47gwlg5wy0m8l1gv12lj78ivgmw5m1ww4f8iylr52bbv49h";
+      };
+    };
+    "cron-1.8.2" = {
+      name = "cron";
+      packageName = "cron";
+      version = "1.8.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cron/-/cron-1.8.2.tgz";
+        sha512 = "35a9lj0cl50q669jhxl1f68myxinkmbdbl2yn4z3d93swlckjjiganjcn8iphg2867jil7ahkpapx5md94lw5102ny46a5i5virqk8s";
+      };
+    };
+    "cross-spawn-6.0.5" = {
+      name = "cross-spawn";
+      packageName = "cross-spawn";
+      version = "6.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz";
+        sha512 = "1csj16gwq9riz0pm73dlxhbnsl1r3ldc5v0aincwj71ambi6xf3kc1kgsbwaakd8rj16k4mrli2syrjd57g6cr81zdzivdd2jn4ndbr";
+      };
+    };
+    "crypto-browserify-3.12.0" = {
+      name = "crypto-browserify";
+      packageName = "crypto-browserify";
+      version = "3.12.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz";
+        sha512 = "1d3mrhqlay037azmjp2ml5a8yyls9ijdhilv6f0znz0ajgfm972yr9bhm78wqi09p4crc3shgflk50jc63zijsqv777ikkyi2j2qgkz";
+      };
+    };
+    "cssom-0.3.8" = {
+      name = "cssom";
+      packageName = "cssom";
+      version = "0.3.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz";
+        sha512 = "1i0h2rg4hb1j2430jc46n2zjc5gqg26brpl2ypjank206vjwdbk4n1svfk7nrbdsx7czd1a025a9h6ssh9qhscw4r7vi0fynwflcjvg";
+      };
+    };
+    "cssstyle-1.4.0" = {
+      name = "cssstyle";
+      packageName = "cssstyle";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz";
+        sha512 = "1460djxnz2dn84cx1wln5l004dy95pgik0h5bij3f7gw1i45p3mnsylwdps4r37gckfzqv5zvyh3gx95dr0ca01zmx8qpvqhrjwn6hq";
+      };
+    };
+    "cyclist-1.0.1" = {
+      name = "cyclist";
+      packageName = "cyclist";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz";
+        sha1 = "596e9698fd0c80e12038c2b82d6eb1b35b6224d9";
+      };
+    };
+    "d-1.0.1" = {
+      name = "d";
+      packageName = "d";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/d/-/d-1.0.1.tgz";
+        sha512 = "0abwyrfpd8rm9bwzgcaxcwd92d07c31cxw1fgs7h51ri2igw4vib1a5x69cg14wqisjad1d0fhglca6218qm9dngr17yhwv8f295bcv";
+      };
+    };
+    "dashdash-1.14.1" = {
+      name = "dashdash";
+      packageName = "dashdash";
+      version = "1.14.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
+        sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
+      };
+    };
+    "data-urls-1.1.0" = {
+      name = "data-urls";
+      packageName = "data-urls";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz";
+        sha512 = "1wvgs0ccidbr67x52w8wx58knvvy7ir6j05z1sa3f4rdnpr3dvdlf6rwapfb09z0mi9w129llzvhxa0lj8jy84zpdwzxm0yvcirhdb1";
+      };
+    };
+    "debug-2.6.9" = {
+      name = "debug";
+      packageName = "debug";
+      version = "2.6.9";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz";
+        sha512 = "0q0fsr8bk1m83z0am0h2xn09vyfcf18adscxms8hclznwks1aihsisd96h8npx0idq5wwnypnqrkyk25m5d9zh3dk7rjs29nybc8bkc";
+      };
+    };
+    "debug-3.1.0" = {
+      name = "debug";
+      packageName = "debug";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz";
+        sha512 = "3g1hqsahr1ks2kpvdxrwzr57fj90nnr0hvwwrw8yyyzcv3i11sym8zwibxx67bl1mln0acddrzpkkdjjxnc6n2cm9fazmgzzsl1fzrr";
+      };
+    };
+    "debug-3.2.6" = {
+      name = "debug";
+      packageName = "debug";
+      version = "3.2.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz";
+        sha512 = "1cyv14044rfh792n1hhsa44kk8dk95zk14w96i49gwq6g9wi6h9vn90xaragfy7rvggqvj178l5f16c78g47xgrwhjx3bp7zs6pxscr";
+      };
+    };
+    "debug-4.1.1" = {
+      name = "debug";
+      packageName = "debug";
+      version = "4.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz";
+        sha512 = "1kmf9j5pka2rsljg5x6shniwmgs9444ksgdn0d3fjmis7yghxxn2zj526s36ip8rmpfni9zpj8z74w7irax32a67j59xw38wk6hi055";
+      };
+    };
+    "decamelize-1.2.0" = {
+      name = "decamelize";
+      packageName = "decamelize";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz";
+        sha1 = "f6534d15148269b20352e7bee26f501f9a191290";
+      };
+    };
+    "decode-uri-component-0.2.0" = {
+      name = "decode-uri-component";
+      packageName = "decode-uri-component";
+      version = "0.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz";
+        sha1 = "eb3913333458775cb84cd1a1fae062106bb87545";
+      };
+    };
+    "decompress-response-3.3.0" = {
+      name = "decompress-response";
+      packageName = "decompress-response";
+      version = "3.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz";
+        sha1 = "80a4dd323748384bfa248083622aedec982adff3";
+      };
+    };
+    "deep-equal-1.0.1" = {
+      name = "deep-equal";
+      packageName = "deep-equal";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz";
+        sha1 = "f5d260292b660e084eff4cdbc9f08ad3247448b5";
+      };
+    };
+    "deep-is-0.1.3" = {
+      name = "deep-is";
+      packageName = "deep-is";
+      version = "0.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz";
+        sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
+      };
+    };
+    "default-gateway-4.2.0" = {
+      name = "default-gateway";
+      packageName = "default-gateway";
+      version = "4.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz";
+        sha512 = "2067xswfnhdrq76l5wqibx50y8r46q0sdbkax2nxq6gq0ljjrrmmq95k99vnkgcz5xc7r1hhv0w7bw978krjxvdmnawam3ma2nhraw7";
+      };
+    };
+    "defaults-1.0.3" = {
+      name = "defaults";
+      packageName = "defaults";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz";
+        sha1 = "c656051e9817d9ff08ed881477f3fe4019f3ef7d";
+      };
+    };
+    "define-properties-1.1.3" = {
+      name = "define-properties";
+      packageName = "define-properties";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz";
+        sha512 = "1fsa8nx7qgi958fykj36cndsf8ygj3132if6k4a36mkf11bl2j2gn7dn2nz07mfsygkx0415yxrjpzx8j369z1767fvr57nm1h9zjnw";
+      };
+    };
+    "define-property-0.2.5" = {
+      name = "define-property";
+      packageName = "define-property";
+      version = "0.2.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz";
+        sha1 = "c35b1ef918ec3c990f9a5bc57be04aacec5c8116";
+      };
+    };
+    "define-property-1.0.0" = {
+      name = "define-property";
+      packageName = "define-property";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz";
+        sha1 = "769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6";
+      };
+    };
+    "define-property-2.0.2" = {
+      name = "define-property";
+      packageName = "define-property";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz";
+        sha512 = "1hrk3pzr4hyhfnrjy1msrlj2zh769x4l35q9fq0a2cy2glq3h1iwjkpmvz39y9idwy71h9hd98lydi92485bzkff1dzm70wbr8vc0lg";
+      };
+    };
+    "del-4.1.1" = {
+      name = "del";
+      packageName = "del";
+      version = "4.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/del/-/del-4.1.1.tgz";
+        sha512 = "1fkk8r4abk9009whl0yqapv13rjzj6mr01ghkxpbjkrvr6a6n6hg492mdr72wf3dc13zp3dmzq6z4bzm31h59q7q4anjgrf988sw0a3";
+      };
+    };
+    "delayed-stream-1.0.0" = {
+      name = "delayed-stream";
+      packageName = "delayed-stream";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
+        sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
+      };
+    };
+    "delegates-1.0.0" = {
+      name = "delegates";
+      packageName = "delegates";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz";
+        sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
+      };
+    };
+    "depd-1.1.2" = {
+      name = "depd";
+      packageName = "depd";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz";
+        sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
+      };
+    };
+    "depd-2.0.0" = {
+      name = "depd";
+      packageName = "depd";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz";
+        sha512 = "2phijq20j255bs4jjs11j5pa0x7y1084k6ch9xa8wgzp71zzgbpm23wyzbcs0mszvj971l9i5aav40sddm000484sl3ij4xzvlcgfc3";
+      };
+    };
+    "des.js-1.0.1" = {
+      name = "des.js";
+      packageName = "des.js";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz";
+        sha512 = "085ljc5q2yk3jabd61p91n821q4prv13qalbfni9ybcb900b4mmcdnndi5b5prfs9wybp13asd13shlxgrbsgvyfx7nbgvby6jkhhj3";
+      };
+    };
+    "destroy-1.0.4" = {
+      name = "destroy";
+      packageName = "destroy";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz";
+        sha1 = "978857442c44749e4206613e37946205826abd80";
+      };
+    };
+    "detect-file-1.0.0" = {
+      name = "detect-file";
+      packageName = "detect-file";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz";
+        sha1 = "f0d66d03672a825cb1b73bdb3fe62310c8e552b7";
+      };
+    };
+    "detect-indent-4.0.0" = {
+      name = "detect-indent";
+      packageName = "detect-indent";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz";
+        sha1 = "f76d064352cdf43a1cb6ce619c4ee3a9475de208";
+      };
+    };
+    "detect-newline-2.1.0" = {
+      name = "detect-newline";
+      packageName = "detect-newline";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz";
+        sha1 = "f41f1c10be4b00e87b5f13da680759f2c5bfd3e2";
+      };
+    };
+    "detect-node-2.0.4" = {
+      name = "detect-node";
+      packageName = "detect-node";
+      version = "2.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz";
+        sha512 = "0mncqs8asq6722qr5jcv5bwi1653nd4s61s9mb9iyk3jkv83w9iynwjfd6ynp1jwsmr7qaspk6yd1x8c05qi9pxikikwfkbnajd3334";
+      };
+    };
+    "diff-sequences-24.9.0" = {
+      name = "diff-sequences";
+      packageName = "diff-sequences";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz";
+        sha512 = "1xvcq6cya1qr0slk88xxgibba4win89nmmy6945vzi0cqs3f4h72inwbk7wb05v55c23sx69grj872yyk5mnswd2qz33jangf9rcghf";
+      };
+    };
+    "diffie-hellman-5.0.3" = {
+      name = "diffie-hellman";
+      packageName = "diffie-hellman";
+      version = "5.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz";
+        sha512 = "37186rz3862gn294acnwnm59jwm62x1rz9ca0y5anvmj0a7abs4rhw974qp1j684qpd4rxb8c2kagv21hapxfddr2q72zvyv7ya19lj";
+      };
+    };
+    "dir-glob-2.2.2" = {
+      name = "dir-glob";
+      packageName = "dir-glob";
+      version = "2.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz";
+        sha512 = "2rlgbmwy8bl5xqrwifdqhggx21ac4c8k6vgq7ia2h6cxmaiprrlm1p99cn4hb4dmax9wwk4vx96bc50b7ngxgx74fvqbk0njj5w3lkz";
+      };
+    };
+    "dns-equal-1.0.0" = {
+      name = "dns-equal";
+      packageName = "dns-equal";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz";
+        sha1 = "b39e7f1da6eb0a75ba9c17324b34753c47e0654d";
+      };
+    };
+    "dns-packet-1.3.1" = {
+      name = "dns-packet";
+      packageName = "dns-packet";
+      version = "1.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz";
+        sha512 = "19g682cvkba33mwrism28hibd2nv9xd16k5bj807jx3ih1cc7ff9dn8chmfjnqgglzl6lq3m3jarxng9vbarccgchd0aq118d15yk6i";
+      };
+    };
+    "dns-txt-2.0.2" = {
+      name = "dns-txt";
+      packageName = "dns-txt";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz";
+        sha1 = "b91d806f5d27188e4ab3e7d107d881a1cc4642b6";
+      };
+    };
+    "doctypes-1.1.0" = {
+      name = "doctypes";
+      packageName = "doctypes";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz";
+        sha1 = "ea80b106a87538774e8a3a4a5afe293de489e0a9";
+      };
+    };
+    "domain-browser-1.2.0" = {
+      name = "domain-browser";
+      packageName = "domain-browser";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz";
+        sha512 = "1fcxv8rzfhs99afvhji7bs5ppxwn9mw040ixdgvkm6iabz72q61arly2lr57086rjn4g2vkb3rkih1cyc7z35kzv1jjciwyrs4g4y4f";
+      };
+    };
+    "domexception-1.0.1" = {
+      name = "domexception";
+      packageName = "domexception";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz";
+        sha512 = "2x8mi3fy0wghky9i6bmz1d26yz1bbd4zmaqyc45fhrqhw8kdg6a4k4zz6jn9bisnxr8bff7fypz0vncby6sw8d2ld6r627v94ra1a5d";
+      };
+    };
+    "duplexer-0.1.1" = {
+      name = "duplexer";
+      packageName = "duplexer";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz";
+        sha1 = "ace6ff808c1ce66b57d1ebf97977acb02334cfc1";
+      };
+    };
+    "duplexer3-0.1.4" = {
+      name = "duplexer3";
+      packageName = "duplexer3";
+      version = "0.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz";
+        sha1 = "ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2";
+      };
+    };
+    "duplexify-3.7.1" = {
+      name = "duplexify";
+      packageName = "duplexify";
+      version = "3.7.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz";
+        sha512 = "3k23dn0v8n7r3ds3v137vmw1vg3ngd6fw3bb4hasa6bm40qasvdaidjwx0wb4gakp8xvdrsckjn0wkmmi90z8a2sswj8cxhznxgrg6k";
+      };
+    };
+    "ecc-jsbn-0.1.2" = {
+      name = "ecc-jsbn";
+      packageName = "ecc-jsbn";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
+        sha1 = "3a83a904e54353287874c564b7549386849a98c9";
+      };
+    };
+    "editorconfig-0.15.3" = {
+      name = "editorconfig";
+      packageName = "editorconfig";
+      version = "0.15.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz";
+        sha512 = "3ggssjvjbrq0q12nr33bfbd8qdmmyapkiivxczlp66gi9y14s7dhaqxdmvbmg6lkzzli17w6v3rx3fyb0d82zl18ysgmskxbhq0ip1k";
+      };
+    };
+    "ee-first-1.1.1" = {
+      name = "ee-first";
+      packageName = "ee-first";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz";
+        sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
+      };
+    };
+    "ejs-2.7.4" = {
+      name = "ejs";
+      packageName = "ejs";
+      version = "2.7.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz";
+        sha512 = "2ad39acbba96hqbgf714pacri515xjn8jd43bkfb1wwp04vflpjj0qhnnmsq074g7d1kycyj1bmf620s43qb3x74hrfb4ky3v5axygf";
+      };
+    };
+    "electron-to-chromium-1.3.376" = {
+      name = "electron-to-chromium";
+      packageName = "electron-to-chromium";
+      version = "1.3.376";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.376.tgz";
+        sha512 = "27ngh0x7siic0nydq0xics24lnqfqjb2d6ja2fdfp1z979lisiy52m8cbbvrxp2ksr3nlk4s4yg5v4rll49wxjzry63gczrbihwzzvj";
+      };
+    };
+    "elliptic-6.5.2" = {
+      name = "elliptic";
+      packageName = "elliptic";
+      version = "6.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz";
+        sha512 = "33kzl02iwbq3pl33ihcdq9nm48yzhfj96183zzra06hp3z6bacz3d99pl74jziwygys4npxbxwnvszz12wl8lpkjw8b4r9ki797p33z";
+      };
+    };
+    "emoji-regex-7.0.3" = {
+      name = "emoji-regex";
+      packageName = "emoji-regex";
+      version = "7.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz";
+        sha512 = "2s4i22ccvwa2l4xwl9yz6mkyn2kpf58hp1nqiwmmgqlpyr57345i3ll0l4656ryik6a6wz1lgk4vbl6y0dwj5hx2kcbpv0h8924n00b";
+      };
+    };
+    "emojis-list-2.1.0" = {
+      name = "emojis-list";
+      packageName = "emojis-list";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz";
+        sha1 = "4daa4d9db00f9819880c79fa457ae5b09a1fd389";
+      };
+    };
+    "emojis-list-3.0.0" = {
+      name = "emojis-list";
+      packageName = "emojis-list";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz";
+        sha512 = "3cib7aw0206bfcb324aqh3fsda46mjxghd08gaasxagv6jfc74r2jvcv78rb8h10m879w42nbrn3q8rjifg9s5rclbpr2hzq7bqqk7y";
+      };
+    };
+    "encodeurl-1.0.2" = {
+      name = "encodeurl";
+      packageName = "encodeurl";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz";
+        sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
+      };
+    };
+    "end-of-stream-1.4.4" = {
+      name = "end-of-stream";
+      packageName = "end-of-stream";
+      version = "1.4.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz";
+        sha512 = "3jyw0a0c7m1yxglwk7i5jh8zb3vvx7f9l4frbskxkgf9cyf4i8ww26p8bimnsryrh1dx7lwrxq64vbpjwfcv1svd4lg8m07fa53bv7s";
+      };
+    };
+    "enhanced-resolve-4.1.0" = {
+      name = "enhanced-resolve";
+      packageName = "enhanced-resolve";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz";
+        sha512 = "2g5bp8yrd5ixqfg81db9ifalcqdyjxmrc4va86ljng9vnhkk2v0gxc7w28q00wnlp0j6sjilzj7dh4mkj2z49z2jkjwzjgd4j9yzzhp";
+      };
+    };
+    "enhanced-resolve-4.1.1" = {
+      name = "enhanced-resolve";
+      packageName = "enhanced-resolve";
+      version = "4.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz";
+        sha512 = "2w4dww5r1bxbycbb3kq0pdl9v56942678c53j9rwikxf05xd2n5h0b3a6914wxcmzr9wx4m0w56adp3qp21rk1wzkhbybxb9z67djpp";
+      };
+    };
+    "errno-0.1.7" = {
+      name = "errno";
+      packageName = "errno";
+      version = "0.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz";
+        sha512 = "2bdzcjwgdkg5yrvlw6my57pn77k4j7a2pzppwqrq4va9f5bd4b5mzbhwpklhsy1jl7w9sjvnfs30h42nhz2dbdfhagnh8dk6l2d3yii";
+      };
+    };
+    "error-ex-1.3.2" = {
+      name = "error-ex";
+      packageName = "error-ex";
+      version = "1.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz";
+        sha512 = "3igrl2amb9mpa9d2z6qghz3ljqd7amjla8ahfs5fdgl0w52pw6gz3y32q5fk229yvfyg3x9kpfygadcm2w0lv4hv4nj25cyd8v4glgd";
+      };
+    };
+    "error-inject-1.0.0" = {
+      name = "error-inject";
+      packageName = "error-inject";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/error-inject/-/error-inject-1.0.0.tgz";
+        sha1 = "e2b3d91b54aed672f309d950d154850fa11d4f37";
+      };
+    };
+    "es-abstract-1.17.4" = {
+      name = "es-abstract";
+      packageName = "es-abstract";
+      version = "1.17.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz";
+        sha512 = "24sx605c7x5di53nzw0x2brrfvy4nw76ws0gsd1hskdifrcxafn8fwk0n11si002zxhfs9c8nba1acaj2zkrqrgp8k5vw0vz2dyxv81";
+      };
+    };
+    "es-to-primitive-1.2.1" = {
+      name = "es-to-primitive";
+      packageName = "es-to-primitive";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz";
+        sha512 = "2y6j97j2f10gc52kw7qin10gm24m5hz1qq7ph6jf89y8a9i8vb268f2q0z78qjmngc765y9v0f1ldc5qb10b638yqlabda90sbaa8s0";
+      };
+    };
+    "es5-ext-0.10.53" = {
+      name = "es5-ext";
+      packageName = "es5-ext";
+      version = "0.10.53";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz";
+        sha512 = "3wl9jgj276xsjcf4gvc9w7gg403rg02s1i24r7scvhwg0mmgbqwsszjk94xnzfd3wj4y2khk6wbz8dm9j6lvlcwrbbd324d1svr5kay";
+      };
+    };
+    "es6-iterator-2.0.3" = {
+      name = "es6-iterator";
+      packageName = "es6-iterator";
+      version = "2.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz";
+        sha1 = "a7de889141a05a94b0854403b2d0a0fbfa98f3b7";
+      };
+    };
+    "es6-promise-4.2.8" = {
+      name = "es6-promise";
+      packageName = "es6-promise";
+      version = "4.2.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz";
+        sha512 = "3zz892nih7z36hb24sqg3wgzgzp81zjq7h8bbrpdh80yxp46r9rk2ddhr65zqg9ygi4s8ph9fs3in3gkinvqwfhqlpy5iasjz3wd40w";
+      };
+    };
+    "es6-symbol-3.1.3" = {
+      name = "es6-symbol";
+      packageName = "es6-symbol";
+      version = "3.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz";
+        sha512 = "0sgbv9jpq91di424qar8xiw36az4msxqhgpk1ixq5hv4wdbgaxs45q8i671icpg085bh1j7hj93iyszp7x9fmhld30jj3kff6gri7il";
+      };
+    };
+    "escape-html-1.0.3" = {
+      name = "escape-html";
+      packageName = "escape-html";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz";
+        sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
+      };
+    };
+    "escape-string-regexp-1.0.5" = {
+      name = "escape-string-regexp";
+      packageName = "escape-string-regexp";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
+        sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
+      };
+    };
+    "escodegen-1.14.1" = {
+      name = "escodegen";
+      packageName = "escodegen";
+      version = "1.14.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz";
+        sha512 = "14kvh9zgpdp6ci9l9nqwwlhjz8gidkhgsv1yj8i7jbh087fchwwn62440spqk09f3qz13jrdyqdgfhf2yddkm7p6hgx4jbjqhspnsq6";
+      };
+    };
+    "eslint-scope-4.0.3" = {
+      name = "eslint-scope";
+      packageName = "eslint-scope";
+      version = "4.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz";
+        sha512 = "2p4myi99y1nk5dy7fvmbspjdynigw3dzkhcm7zaiwfyw2wp6j61y0i8mba18ksv9qi2s1wp6w6xhn7471qs631bqwmz8fzmvas6xdd7";
+      };
+    };
+    "esprima-4.0.1" = {
+      name = "esprima";
+      packageName = "esprima";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz";
+        sha512 = "3h999di4dnwxb22lxlb7cbz42nalrv8g8sqdvrkkl5c27gnwhp1rva4039hmq6g1i0y4mfjgx6p4i2vwxxl0zlahfzdd9fl1qbqasvq";
+      };
+    };
+    "esrecurse-4.2.1" = {
+      name = "esrecurse";
+      packageName = "esrecurse";
+      version = "4.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz";
+        sha512 = "06zyknk70y80n428x20wvjqy5822wgz2yaxzw387njnz3ar6ixzjcxzr2jsl8wrm0m9jpa4ysbcr9znpk6gbkqd7wby084zxw3l317b";
+      };
+    };
+    "estraverse-4.3.0" = {
+      name = "estraverse";
+      packageName = "estraverse";
+      version = "4.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz";
+        sha512 = "2kh3lczc7smb84ryllqrdvrknxl3h47khh7li6n9m76mj9jfh1ahz2jm8ffpcaac7i4k8zkf3sc3nczzp7djgqmsi6wrkynywlygnfz";
+      };
+    };
+    "esutils-2.0.3" = {
+      name = "esutils";
+      packageName = "esutils";
+      version = "2.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz";
+        sha512 = "3m321j8gmjllmmi1zyvbz0lsmkkjq26bvfr8niwr5b8saxh6icixmpxixyspjb40l54vpx3r3zvln190i47cx16y5x2lf1qg6liqnwi";
+      };
+    };
+    "etag-1.8.1" = {
+      name = "etag";
+      packageName = "etag";
+      version = "1.8.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz";
+        sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
+      };
+    };
+    "eventemitter3-4.0.0" = {
+      name = "eventemitter3";
+      packageName = "eventemitter3";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz";
+        sha512 = "05cdww9h7f3kjfmv478p0rcq2ia3lcrvqmsh155hd6wm895i2jn6j68w0ly09c3gjn8hshfdvnh99qchipbclycnb241y993m2d5sm9";
+      };
+    };
+    "events-3.1.0" = {
+      name = "events";
+      packageName = "events";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/events/-/events-3.1.0.tgz";
+        sha512 = "1d21craxji58ccc5l8c39mw7pgk0is7gj1sixm8v1va1zc81hrw8426b9rhrv7z2kwqvix5l7cyfc8awwypj19him6ffd67qbqaxzs6";
+      };
+    };
+    "eventsource-1.0.7" = {
+      name = "eventsource";
+      packageName = "eventsource";
+      version = "1.0.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz";
+        sha512 = "02zyvvhbzxhb7q9pzn867l80whipj03h4nkzjw1r8kppkmgaw0fcgvnkkv11fkfnlcdhkr9f55xrap5qpvbggkad4y4jkymxgpzbfg0";
+      };
+    };
+    "evp_bytestokey-1.0.3" = {
+      name = "evp_bytestokey";
+      packageName = "evp_bytestokey";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz";
+        sha512 = "1wd18zxd7n42asa63aa4k1bdf58warg29c7c8cdzzkd4r1wva7qwzqnn52h8g8hqwj7bxjkk3ryghajrvz4i27h5bzp30p8hjiqdzgx";
+      };
+    };
+    "exec-sh-0.3.4" = {
+      name = "exec-sh";
+      packageName = "exec-sh";
+      version = "0.3.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz";
+        sha512 = "3a56in0wklcqf6hk0n22z22yg9kzb7y4xj7yfmj2sahbnkjbr5s0sngpzrr60r5rq9b3f0f1m13da5fn9mfz7p3b5nbxgxmrs8lhhdh";
+      };
+    };
+    "execa-1.0.0" = {
+      name = "execa";
+      packageName = "execa";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz";
+        sha512 = "0nbazkdhh5zqw7l7y4ml860h6pbn72x5kp2iaknqbdk0ygcrp3yh6bnq0brzzsyk3f72ard3ss3kp9a2ffsglib3yiamqwm4mrz3mk9";
+      };
+    };
+    "exit-0.1.2" = {
+      name = "exit";
+      packageName = "exit";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz";
+        sha1 = "0632638f8d877cc82107d30a0fff1a17cba1cd0c";
+      };
+    };
+    "expand-brackets-2.1.4" = {
+      name = "expand-brackets";
+      packageName = "expand-brackets";
+      version = "2.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz";
+        sha1 = "b77735e315ce30f6b6eff0f83b04151a22449622";
+      };
+    };
+    "expand-tilde-2.0.2" = {
+      name = "expand-tilde";
+      packageName = "expand-tilde";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz";
+        sha1 = "97e801aa052df02454de46b02bf621642cdc8502";
+      };
+    };
+    "expect-24.9.0" = {
+      name = "expect";
+      packageName = "expect";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz";
+        sha512 = "38r26vw1qwvgj86dijd5hps0b5ijk4qq0zy9dcgc2dpafq6jjx1x4k9lpaqs1mbkg4d9a29qkx914y9waavswvgwvcmv8n8qp3l1xf2";
+      };
+    };
+    "express-4.17.1" = {
+      name = "express";
+      packageName = "express";
+      version = "4.17.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/express/-/express-4.17.1.tgz";
+        sha512 = "3i2sxjf2x1r9wbfdyh5ll8ybbnqq6n4xfxdlc4dsqhssljrlih18csqg142lf16lcfcdgsmvf9pff0rzxjw7p0shnlmpajipwxpswlq";
+      };
+    };
+    "ext-1.4.0" = {
+      name = "ext";
+      packageName = "ext";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz";
+        sha512 = "3n50kbfjicn887f19ragi6k288srkjidzvcnphnb2f8bqw4vn10y73p3ryjyqq0xgrdxnwhy2j9favm7pfb3j3vhf5dmi8licsbkv19";
+      };
+    };
+    "extend-3.0.2" = {
+      name = "extend";
+      packageName = "extend";
+      version = "3.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
+        sha512 = "3zad2109w3q3gh46s5msrnzfy2nl581sqpy20b52fs7v5pdjh3irpg7szl3xvh4sfy63218jy8ry6qlnir3baxbbfrb03swkw5swfky";
+      };
+    };
+    "extend-shallow-2.0.1" = {
+      name = "extend-shallow";
+      packageName = "extend-shallow";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz";
+        sha1 = "51af7d614ad9a9f610ea1bafbb989d6b1c56890f";
+      };
+    };
+    "extend-shallow-3.0.2" = {
+      name = "extend-shallow";
+      packageName = "extend-shallow";
+      version = "3.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz";
+        sha1 = "26a71aaf073b39fb2127172746131c2704028db8";
+      };
+    };
+    "extglob-2.0.4" = {
+      name = "extglob";
+      packageName = "extglob";
+      version = "2.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz";
+        sha512 = "2klp0045k4wnaspb9khqx90ddv7rjg997mlyp5qz41sl2yqdrpw8g8wji77qq16aawl4yhvg0f993ln48lja0kfmy0wnbh4g50zlrin";
+      };
+    };
+    "extsprintf-1.3.0" = {
+      name = "extsprintf";
+      packageName = "extsprintf";
+      version = "1.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
+        sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
+      };
+    };
+    "fast-deep-equal-3.1.1" = {
+      name = "fast-deep-equal";
+      packageName = "fast-deep-equal";
+      version = "3.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz";
+        sha512 = "1j7wq3vqvfgnpd2sjblnlgryxlic2fsy343fx8w4ywb2mngj1w5afq8fmly8cp9fi66dhz1fhcfpn23g5zasnzs6n1snb83qkkilhgi";
+      };
+    };
+    "fast-json-stable-stringify-2.1.0" = {
+      name = "fast-json-stable-stringify";
+      packageName = "fast-json-stable-stringify";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz";
+        sha512 = "0gz06zkjlqc4r59ka14n3vwqjdgn40zd8r115ql3rkwqb7j42frmnsj3axr7p2md8ik52nqjn3myyv8ddavdhl4cq3xz4wbbz07y5wn";
+      };
+    };
+    "fast-levenshtein-2.0.6" = {
+      name = "fast-levenshtein";
+      packageName = "fast-levenshtein";
+      version = "2.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
+        sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
+      };
+    };
+    "faye-websocket-0.10.0" = {
+      name = "faye-websocket";
+      packageName = "faye-websocket";
+      version = "0.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz";
+        sha1 = "4e492f8d04dfb6f89003507f6edbf2d501e7c6f4";
+      };
+    };
+    "faye-websocket-0.11.3" = {
+      name = "faye-websocket";
+      packageName = "faye-websocket";
+      version = "0.11.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz";
+        sha512 = "0wgmgai5pj0yjcc4gs5b6r94gr8ycsbv1xyjw055cxfy4vm6yrpqp0mpr89ychmzgr5y0mggqrljf9jhb8n5iq63bi3r9yqidpbhv0g";
+      };
+    };
+    "fb-watchman-2.0.1" = {
+      name = "fb-watchman";
+      packageName = "fb-watchman";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz";
+        sha512 = "1b67x7n9c1irns63lipsffgi0zm9kfms6k87mznvhak81dijqvfy26nqr3j5mw41mqb3vbbhxbbmcdgc787laz3kaq45slq0wlwjhqf";
+      };
+    };
+    "figgy-pudding-3.5.1" = {
+      name = "figgy-pudding";
+      packageName = "figgy-pudding";
+      version = "3.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz";
+        sha512 = "39n5js2y984px4bvwavskv70pazpjnrvy5lnyqif5pdh6pgfinnl3b5zknfkqvlws7gnylmlwryzfpdvh0jgpgsiphx8a64fhjb3lmw";
+      };
+    };
+    "file-uri-to-path-1.0.0" = {
+      name = "file-uri-to-path";
+      packageName = "file-uri-to-path";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz";
+        sha512 = "0px1qliabg53lwfq4izc9vdll68sd08nlczi2ms5nvg7frm3y6zgy07vdvxywazab26jc723qpmh9a6h3bdp685iddzsmgvfarpx6yi";
+      };
+    };
+    "filesize-3.6.1" = {
+      name = "filesize";
+      packageName = "filesize";
+      version = "3.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz";
+        sha512 = "1rfby2136b86m318244b42lrcx9hc28vz71cv9i84cd5z7dd3cwvj1gx8mykbjh937yyi1h4q5kk3vhjcldc8pkd2f7iapszgbd3a7c";
+      };
+    };
+    "fill-range-4.0.0" = {
+      name = "fill-range";
+      packageName = "fill-range";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz";
+        sha1 = "d544811d428f98eb06a63dc402d2403c328c38f7";
+      };
+    };
+    "finalhandler-1.1.2" = {
+      name = "finalhandler";
+      packageName = "finalhandler";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz";
+        sha512 = "1cfqk6g78cb12b1cki4pbcspsy40d0yny513myqji716njyhc5hrj7ll539kz96m6vn27168hhyqvd52cr5x1cs85mm7igfkrdrq1b8";
+      };
+    };
+    "find-cache-dir-1.0.0" = {
+      name = "find-cache-dir";
+      packageName = "find-cache-dir";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz";
+        sha1 = "9288e3e9e3cc3748717d39eade17cf71fc30ee6f";
+      };
+    };
+    "find-cache-dir-2.1.0" = {
+      name = "find-cache-dir";
+      packageName = "find-cache-dir";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz";
+        sha512 = "0wjlwmvadzac6hwmxv6hsc16z3285i2y0nkwpg4366flza0rx30s3ncx93xn8hkkpxr493zi5b0h94jczinr87h2m6gbhrl265qzbjf";
+      };
+    };
+    "find-replace-3.0.0" = {
+      name = "find-replace";
+      packageName = "find-replace";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz";
+        sha512 = "04qvcapazb6cj527naq4ycrydqph63gpsq9ly76cvnxy7cm9xwdn2q62rlyvn7iynvm59akggz5jiiygzzbq7wrpwh218124fdzcdp9";
+      };
+    };
+    "find-up-2.1.0" = {
+      name = "find-up";
+      packageName = "find-up";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz";
+        sha1 = "45d1b7e506c717ddd482775a2b77920a3c0c57a7";
+      };
+    };
+    "find-up-3.0.0" = {
+      name = "find-up";
+      packageName = "find-up";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz";
+        sha512 = "2bg49lifm64h5jqjc20612wrx7cazw9np9ms02ys94kif4li8cp5in4rvmb1c1ssa8yhbsqkgprykkj4lf3jbz8qrgp1mf8c93gl86p";
+      };
+    };
+    "findup-sync-3.0.0" = {
+      name = "findup-sync";
+      packageName = "findup-sync";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz";
+        sha512 = "1i4px24rzp6x5wczj63r720lxw2rl1yvsk8w36bcmmdsyji2yx59p1nxy3v0hqjfr5s9vzrxh55v83ly3d0mf5r78hw32awp1mdzdv1";
+      };
+    };
+    "flush-write-stream-1.1.1" = {
+      name = "flush-write-stream";
+      packageName = "flush-write-stream";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz";
+        sha512 = "3pkp1ymgv73zg0d94la628nagxyngq7zm1jmngx6vjc6vi5d4jkmvfygvgac6w6x929hqljwygaidq2znk3l5xd4apdvxvpas21g7nx";
+      };
+    };
+    "follow-redirects-1.5.10" = {
+      name = "follow-redirects";
+      packageName = "follow-redirects";
+      version = "1.5.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz";
+        sha512 = "1alfnscb0lnmf1ka8d5jrp48bizkbqrdz616r7q9yv4afqadlli1xmmf7lsvany1kmmnmwpvhbgx70mvcsnjf1ywjnzmkmk53h6apni";
+      };
+    };
+    "for-in-1.0.2" = {
+      name = "for-in";
+      packageName = "for-in";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz";
+        sha1 = "81068d295a8142ec0ac726c6e2200c30fb6d5e80";
+      };
+    };
+    "forever-agent-0.6.1" = {
+      name = "forever-agent";
+      packageName = "forever-agent";
+      version = "0.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
+        sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
+      };
+    };
+    "form-data-2.3.3" = {
+      name = "form-data";
+      packageName = "form-data";
+      version = "2.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz";
+        sha512 = "0jj3hgqp9pmxmfavx6rvdfl3r4yf98clpsarqadz3hq0dxhjlh2ppd9x8bvmaq3nwjdqpdvqx25pwyin4ipixhgsn7s3p9fcc3wllnn";
+      };
+    };
+    "form-data-2.5.1" = {
+      name = "form-data";
+      packageName = "form-data";
+      version = "2.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz";
+        sha512 = "1aa6m5c13kybvcycjdyhr0qbb7097qs7kah89bbhynjs9r5fl6ibbhscpin31nshzhw5nszw5c6x10krrig90afh88la456cgflsvcv";
+      };
+    };
+    "formidable-1.2.2" = {
+      name = "formidable";
+      packageName = "formidable";
+      version = "1.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz";
+        sha512 = "3jm9bdwpbsvpf9f7v9gh2dc01p5pg77g1q6g6jwxyaqykr6q6ljp3gvkbxrxa6wkhlnw52qd130f4nx8f6zwf74h8jgy8rmxsdhpj2p";
+      };
+    };
+    "forwarded-0.1.2" = {
+      name = "forwarded";
+      packageName = "forwarded";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz";
+        sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84";
+      };
+    };
+    "fragment-cache-0.2.1" = {
+      name = "fragment-cache";
+      packageName = "fragment-cache";
+      version = "0.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz";
+        sha1 = "4290fad27f13e89be7f33799c6bc5a0abfff0d19";
+      };
+    };
+    "fresh-0.5.2" = {
+      name = "fresh";
+      packageName = "fresh";
+      version = "0.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz";
+        sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
+      };
+    };
+    "from2-2.3.0" = {
+      name = "from2";
+      packageName = "from2";
+      version = "2.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz";
+        sha1 = "8bfb5502bde4a4d36cfdeea007fcca21d7e382af";
+      };
+    };
+    "fs-write-stream-atomic-1.0.10" = {
+      name = "fs-write-stream-atomic";
+      packageName = "fs-write-stream-atomic";
+      version = "1.0.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz";
+        sha1 = "b47df53493ef911df75731e70a9ded0189db40c9";
+      };
+    };
+    "fs.realpath-1.0.0" = {
+      name = "fs.realpath";
+      packageName = "fs.realpath";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
+        sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
+      };
+    };
+    "fsevents-1.2.11" = {
+      name = "fsevents";
+      packageName = "fsevents";
+      version = "1.2.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz";
+        sha512 = "0gh6646md6jag20cv3p6c36gf1k2h417lp8a7pwfdbvnbz9khs69hgs344jf2lk7pfqr8gyh13j56n9qvk2ad7nlq0isym93sbpgv7s";
+      };
+    };
+    "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 = "38chm1mh077ksx6hy2sssfz4q29hf0ncb9k6ila7si54zqcpl5fxd1rh6wi82blqp7jcspf4aynr7jqhbsg2yc9y42xpqqp6c1jz2n8";
+      };
+    };
+    "gensync-1.0.0-beta.1" = {
+      name = "gensync";
+      packageName = "gensync";
+      version = "1.0.0-beta.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz";
+        sha512 = "1r0jph65fg2w5p612lr79rb1k2xyvr3cymg0cbsk8nrncdm82l4k1k8sflk3q32zahpdjfsfs15rdqcj7wgahrpzw3picmmsgl05hdg";
+      };
+    };
+    "get-caller-file-1.0.3" = {
+      name = "get-caller-file";
+      packageName = "get-caller-file";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz";
+        sha512 = "3mw8nv3r73b3lp2pzj116p27flkrv1vq6v0ika46w3xqfinm6gxn38glryibvy834mja8ib4j9cjq27qn164z3793c9g88y79asppny";
+      };
+    };
+    "get-caller-file-2.0.5" = {
+      name = "get-caller-file";
+      packageName = "get-caller-file";
+      version = "2.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz";
+        sha512 = "0b7da6kb3xqk26cw4i6kb1lk911z06z53if2g8l23hmfpbhl6vfbn8iip55j1yplbqnly2abb9d349r6ky2z570839q3p9z2gf4y88g";
+      };
+    };
+    "get-paths-0.0.7" = {
+      name = "get-paths";
+      packageName = "get-paths";
+      version = "0.0.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/get-paths/-/get-paths-0.0.7.tgz";
+        sha512 = "2sbm9wgxb9lh20hl3rj1zrpvgq14kxvd16hq6p9drh7z26f6nmy4jp0irbaqk1gjal152shl7kwkwk6gskvla18p0qs8p5mn2vlj1yk";
+      };
+    };
+    "get-stream-3.0.0" = {
+      name = "get-stream";
+      packageName = "get-stream";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz";
+        sha1 = "8e943d1358dc37555054ecbe2edb05aa174ede14";
+      };
+    };
+    "get-stream-4.1.0" = {
+      name = "get-stream";
+      packageName = "get-stream";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz";
+        sha512 = "3pwlllj9naaqzlc5axbxz4jqg3v533xd9jz945mjd3zmca3hh3pr1dpwc7416kjszw6igk060v6x2dgwpr7m1rd4djavmvr8bhavihq";
+      };
+    };
+    "get-value-2.0.6" = {
+      name = "get-value";
+      packageName = "get-value";
+      version = "2.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz";
+        sha1 = "dc15ca1c672387ca76bd37ac0a395ba2042a2c28";
+      };
+    };
+    "getpass-0.1.7" = {
+      name = "getpass";
+      packageName = "getpass";
+      version = "0.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
+        sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
+      };
+    };
+    "glob-7.1.6" = {
+      name = "glob";
+      packageName = "glob";
+      version = "7.1.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz";
+        sha512 = "020qv13jbi1v4y5xavf6fw08h9svy4q9p67m4avkrrhgdjmk0c5k3h19bv7k6yn1vfxljpjw9kg81fbdg9v83cjplxvkn3v4v1v21ig";
+      };
+    };
+    "glob-parent-3.1.0" = {
+      name = "glob-parent";
+      packageName = "glob-parent";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz";
+        sha1 = "9e6af6299d8d3bd2bd40430832bd113df906c5ae";
+      };
+    };
+    "global-modules-1.0.0" = {
+      name = "global-modules";
+      packageName = "global-modules";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz";
+        sha512 = "1pgpsvm0rm1fnqmblx77xs67gh8c80nf4dsgcgalhh9phmlp8ahn5w7vzx3xkwyxw3fg33h8vhh3plsycw6fd7c2r76mm7m8w9fkb5h";
+      };
+    };
+    "global-modules-2.0.0" = {
+      name = "global-modules";
+      packageName = "global-modules";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz";
+        sha512 = "3q8nyi4i93sc7kfx7mmzmkr3656h7f27f5dkwx0908mz2m4bdih9024qmbss87anjf9d817zbr0mmm2zr9pfli2qw41zxv9j2cdyril";
+      };
+    };
+    "global-prefix-1.0.2" = {
+      name = "global-prefix";
+      packageName = "global-prefix";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz";
+        sha1 = "dbf743c6c14992593c655568cb66ed32c0122ebe";
+      };
+    };
+    "global-prefix-3.0.0" = {
+      name = "global-prefix";
+      packageName = "global-prefix";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz";
+        sha512 = "1dda0wwyqq1k8qa0cy6ifchm9zfbq0bsrvq68gccp4haqp0hgqs5ax1hrpxkcl9k9j3g1nb0nzi19v8ikcxxc9y6i37a24mjjfah03b";
+      };
+    };
+    "globals-11.12.0" = {
+      name = "globals";
+      packageName = "globals";
+      version = "11.12.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz";
+        sha512 = "1ab6f0n8yjl3zkl6dwhvxpxh63b4acc7nj7i21z3dx1fz1jv1c3673qpkwiavmcbbf8jlkxapx0x8ybzz5w2yra4ln24lh687y6kq2q";
+      };
+    };
+    "globals-9.18.0" = {
+      name = "globals";
+      packageName = "globals";
+      version = "9.18.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz";
+        sha512 = "18psd5ig23apaw07k4mma3z1hi2ndfwsqkm05hxashnf5lf7mpfs6kjiircc0x3x3q15j2x2j4zfzsqacxvfsmw40zjchn44bfccjab";
+      };
+    };
+    "globby-6.1.0" = {
+      name = "globby";
+      packageName = "globby";
+      version = "6.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz";
+        sha1 = "f5a6d70e8395e21c858fb0489d64df02424d506c";
+      };
+    };
+    "globby-7.1.1" = {
+      name = "globby";
+      packageName = "globby";
+      version = "7.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz";
+        sha1 = "fb2ccff9401f8600945dfada97440cca972b8680";
+      };
+    };
+    "got-8.3.2" = {
+      name = "got";
+      packageName = "got";
+      version = "8.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/got/-/got-8.3.2.tgz";
+        sha512 = "05i0zb81f4c0z48y9mjckyajm586ygznh8y8di5g0qrg3vi9hpbw2q3cf548as8zx9b4g1q5zf2cab43yx21wnan1l0qsz19zjhjdda";
+      };
+    };
+    "graceful-fs-4.2.3" = {
+      name = "graceful-fs";
+      packageName = "graceful-fs";
+      version = "4.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz";
+        sha512 = "12xdl6ai5jdxcpcavw2hk4zpiknz7g7f2cvgawzwlzv7cy7qf7riq8ymkgqdqxjkpl1mg627dxa65zc9b0yqhflsmqlfg5q3481azbb";
+      };
+    };
+    "growly-1.3.0" = {
+      name = "growly";
+      packageName = "growly";
+      version = "1.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz";
+        sha1 = "f10748cbe76af964b7c96c93c6bcc28af120c081";
+      };
+    };
+    "gzip-size-5.1.1" = {
+      name = "gzip-size";
+      packageName = "gzip-size";
+      version = "5.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz";
+        sha512 = "0y1sp7474a0w8329a3d69dgqdbaj7azkx415kcdrkri95c6gyvpj6c3mp5v0jdwjasq01xw07lr5l551z77ch0nkcszn7m8d7mf5l8l";
+      };
+    };
+    "handle-thing-2.0.0" = {
+      name = "handle-thing";
+      packageName = "handle-thing";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz";
+        sha512 = "28zz3rsr08yf5sib0pnnwyk99023ll7bp73z28r1pb6j722bfdhxmzww91cyh713b3a6bqvfxlglancn95pwdnsb5w8w2sda9xk72vp";
+      };
+    };
+    "har-schema-2.0.0" = {
+      name = "har-schema";
+      packageName = "har-schema";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
+        sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
+      };
+    };
+    "har-validator-5.1.3" = {
+      name = "har-validator";
+      packageName = "har-validator";
+      version = "5.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz";
+        sha512 = "3kaldgfsh3lfvgvw31s8b7q345zf7ixjahllncdckcw6qfs3gnbsamdxgs9kfigq7rwmja7v51ghh7y0rsp6q7jmvmbydhh645wxnxh";
+      };
+    };
+    "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 = "37vh53c11hws66navka0w9xxm6rcr034bxpyvaldiqz1msafqf0jpi1aqxbaygs53arz9y510qg6dl6vrm285hrxniygs2l8lxnyrvz";
+      };
+    };
+    "has-ansi-2.0.0" = {
+      name = "has-ansi";
+      packageName = "has-ansi";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz";
+        sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
+      };
+    };
+    "has-flag-3.0.0" = {
+      name = "has-flag";
+      packageName = "has-flag";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz";
+        sha1 = "b5d454dc2199ae225699f3467e5a07f3b955bafd";
+      };
+    };
+    "has-symbol-support-x-1.4.2" = {
+      name = "has-symbol-support-x";
+      packageName = "has-symbol-support-x";
+      version = "1.4.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz";
+        sha512 = "0kljkjnsw7jnqm8dpf05rd7a59xjfwlbmp1qxs5kdda78zwwqfpkq5ryc2510iyam6v5vbyy0h7bpkwqadajq1ag2zaa7dymyyhwfnx";
+      };
+    };
+    "has-symbols-1.0.1" = {
+      name = "has-symbols";
+      packageName = "has-symbols";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz";
+        sha512 = "0mb9d5yqvznqmq073hdc4wl7175niiqpkpb7iqqv8p0q6xgmrhfap9ni6iwrx44w8p9vyg8n3zsllil5pdflzlh462dkydymfi2rdrw";
+      };
+    };
+    "has-to-string-tag-x-1.4.1" = {
+      name = "has-to-string-tag-x";
+      packageName = "has-to-string-tag-x";
+      version = "1.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz";
+        sha512 = "0bqvhd628h3lrsydbp1xllh7jp23c58j7d4z0x0v9ddffindkk1zfrqmzm28z47ipjp0zxlmzvmlzk98zf9mzjsc47bmp1ydizcmmmx";
+      };
+    };
+    "has-value-0.3.1" = {
+      name = "has-value";
+      packageName = "has-value";
+      version = "0.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz";
+        sha1 = "7b1f58bada62ca827ec0a2078025654845995e1f";
+      };
+    };
+    "has-value-1.0.0" = {
+      name = "has-value";
+      packageName = "has-value";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz";
+        sha1 = "18b281da585b1c5c51def24c930ed29a0be6b177";
+      };
+    };
+    "has-values-0.1.4" = {
+      name = "has-values";
+      packageName = "has-values";
+      version = "0.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz";
+        sha1 = "6d61de95d91dfca9b9a02089ad384bff8f62b771";
+      };
+    };
+    "has-values-1.0.0" = {
+      name = "has-values";
+      packageName = "has-values";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz";
+        sha1 = "95b0b63fec2146619a6fe57fe75628d5a39efe4f";
+      };
+    };
+    "hash-base-3.0.4" = {
+      name = "hash-base";
+      packageName = "hash-base";
+      version = "3.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz";
+        sha1 = "5fc8686847ecd73499403319a6b0a3f3f6ae4918";
+      };
+    };
+    "hash.js-1.1.7" = {
+      name = "hash.js";
+      packageName = "hash.js";
+      version = "1.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz";
+        sha512 = "1f5xc15zpy3b7hssv57xnd92ja5r073zvd2pczvncxmy1jnbjcx716riyr2syvah88qk7328a6fz049mziv2k837093xqxd86r9m8xm";
+      };
+    };
+    "hmac-drbg-1.0.1" = {
+      name = "hmac-drbg";
+      packageName = "hmac-drbg";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz";
+        sha1 = "d2745701025a6c775a6c545793ed502fc0c649a1";
+      };
+    };
+    "home-or-tmp-2.0.0" = {
+      name = "home-or-tmp";
+      packageName = "home-or-tmp";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz";
+        sha1 = "e36c3f2d2cae7d746a857e38d18d5f32a7882db8";
+      };
+    };
+    "homedir-polyfill-1.0.3" = {
+      name = "homedir-polyfill";
+      packageName = "homedir-polyfill";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz";
+        sha512 = "1qc7ngn9k1w5lcqx2ygqb2x9f03knfbsym25l6qsp6q9qdcxa4fzwwjsh9d9lm5l1569v19rjp7sdnz11087f4b6sv34rav9rcacabr";
+      };
+    };
+    "hoopy-0.1.4" = {
+      name = "hoopy";
+      packageName = "hoopy";
+      version = "0.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz";
+        sha512 = "1yx4ynb45w5hn214j6xm2357i3hcbhyh21d7040ikmi9ywaqsjycbzp390wp1qixpyjnc8aaacwzqyf1cvlfz7c5fs6brxbd7xjq5qx";
+      };
+    };
+    "hosted-git-info-2.8.8" = {
+      name = "hosted-git-info";
+      packageName = "hosted-git-info";
+      version = "2.8.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz";
+        sha512 = "19a25b4xb3hg00d1nsirc3xfcc07rplbh6msa49rgc8xg5rg38y1z8rfrf0dmll8k4jaml8z337bi6y2cgah66jnwxinn0sch5k7z3z";
+      };
+    };
+    "hpack.js-2.1.6" = {
+      name = "hpack.js";
+      packageName = "hpack.js";
+      version = "2.1.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz";
+        sha1 = "87774c0949e513f42e84575b3c45681fade2a0b2";
+      };
+    };
+    "html-encoding-sniffer-1.0.2" = {
+      name = "html-encoding-sniffer";
+      packageName = "html-encoding-sniffer";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz";
+        sha512 = "1ir4rhs26z0x26nr1bca94rbgyginfyrdza1a550ish1ssv5cf9j94dgl2j47n65yvjsnmhx8m749bljr3qjn7pdndcp7l35375jngg";
+      };
+    };
+    "html-entities-1.2.1" = {
+      name = "html-entities";
+      packageName = "html-entities";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz";
+        sha1 = "0df29351f0721163515dfb9e5543e5f6eed5162f";
+      };
+    };
+    "html-escaper-2.0.0" = {
+      name = "html-escaper";
+      packageName = "html-escaper";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz";
+        sha512 = "0i7fxa00a4a7qdgxkiafdbpwvm5x80fivcnhmwbd8qdyxf18zdxzmriqq48k5a7yr7vn0hhzvvf1nki2105hqn29fznnn0iw42vv2vb";
+      };
+    };
+    "http-assert-1.4.1" = {
+      name = "http-assert";
+      packageName = "http-assert";
+      version = "1.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-assert/-/http-assert-1.4.1.tgz";
+        sha512 = "21ixj6v0igbmy7zx5g4kpqp9fr495ki1jm8qszg1gbwmwcbji51n4zcpm6ll8a927m626rw4vkdamvsi90azmsnapm2d5lkl6mkpp5d";
+      };
+    };
+    "http-cache-semantics-3.8.1" = {
+      name = "http-cache-semantics";
+      packageName = "http-cache-semantics";
+      version = "3.8.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz";
+        sha512 = "3gsj16kpvygynld5ajbvg8ii3n3bka4waamdzx30wwhz72mdr6wvffm20rfnxwzid9fq49d5g333yjq5dz1qqbnk9bwcmrj9f5bda75";
+      };
+    };
+    "http-deceiver-1.2.7" = {
+      name = "http-deceiver";
+      packageName = "http-deceiver";
+      version = "1.2.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz";
+        sha1 = "fa7168944ab9a519d337cb0bec7284dc3e723d87";
+      };
+    };
+    "http-errors-1.6.3" = {
+      name = "http-errors";
+      packageName = "http-errors";
+      version = "1.6.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz";
+        sha1 = "8b55680bb4be283a0b5bf4ea2e38580be1d9320d";
+      };
+    };
+    "http-errors-1.7.2" = {
+      name = "http-errors";
+      packageName = "http-errors";
+      version = "1.7.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz";
+        sha512 = "13c4825kzqlxdqfjrlrwh15ira0bjm9m3b8qcrfzaysiky1m3gb6dv6gcjgpnap9mbl0fajqiibzp1w5r8qnyn8glaj4wgzf6vh2i5r";
+      };
+    };
+    "http-errors-1.7.3" = {
+      name = "http-errors";
+      packageName = "http-errors";
+      version = "1.7.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz";
+        sha512 = "1zx0vws4k6lcw8j8pgc2yrwfw56s6n2z4dvhd9lcj9l1ywnl9ssianilmrlzr6ravkqxv0xbdqg4cn0q3l72d8h0achvcdbqp8dfd35";
+      };
+    };
+    "http-parser-js-0.4.10" = {
+      name = "http-parser-js";
+      packageName = "http-parser-js";
+      version = "0.4.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz";
+        sha1 = "92c9c1374c35085f75db359ec56cc257cbb93fa4";
+      };
+    };
+    "http-proxy-1.18.0" = {
+      name = "http-proxy";
+      packageName = "http-proxy";
+      version = "1.18.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz";
+        sha512 = "2jhzdgr7gcgj58mf798ak1a638wm4mnp45pk48im1rf03dpw39alpyabd7rqwqgjrilaggnmh6nd3m9pqnyn76q3mw5g7rzjf43d0pk";
+      };
+    };
+    "http-proxy-middleware-0.19.1" = {
+      name = "http-proxy-middleware";
+      packageName = "http-proxy-middleware";
+      version = "0.19.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz";
+        sha512 = "3fl42r9rpdqm0jrrd2wqws6syv02r8cqgy0j6ddrjvn5p3by8shm0mmbych1g5k9i5agc70x6z2904nrgidkdnlq1pwafqhcf0i6xn8";
+      };
+    };
+    "http-signature-1.2.0" = {
+      name = "http-signature";
+      packageName = "http-signature";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
+        sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
+      };
+    };
+    "https-browserify-1.0.0" = {
+      name = "https-browserify";
+      packageName = "https-browserify";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz";
+        sha1 = "ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73";
+      };
+    };
+    "iconv-lite-0.4.24" = {
+      name = "iconv-lite";
+      packageName = "iconv-lite";
+      version = "0.4.24";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz";
+        sha512 = "2n3ygx6km56rdcd5kq52bs2113xqm3vlw2kb9r7pnmxd2qhxrfahp2ngc4w7x8x76fyfpapnixnbjq1i24nc11mj6q7rghwj2fifwxz";
+      };
+    };
+    "ieee754-1.1.13" = {
+      name = "ieee754";
+      packageName = "ieee754";
+      version = "1.1.13";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz";
+        sha512 = "179jm8fhl2advz4j63klrp57sm99wvyb5jcxwfr9rhi730ybcxkyfqrr0pmwvir12zjzpkwwvjjkjclwrss7lpab7dg2myqc8izpxz2";
+      };
+    };
+    "iferr-0.1.5" = {
+      name = "iferr";
+      packageName = "iferr";
+      version = "0.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz";
+        sha1 = "c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501";
+      };
+    };
+    "ignore-3.3.10" = {
+      name = "ignore";
+      packageName = "ignore";
+      version = "3.3.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz";
+        sha512 = "2x7za00gs7ipwcq29bslxcdv7j47m28jx14n9ybs5h2icr4024jn5ppmbs6953g2qb3amhs1gg5x0s48ky3mk7ybi36wchsb7kks2ry";
+      };
+    };
+    "import-local-2.0.0" = {
+      name = "import-local";
+      packageName = "import-local";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz";
+        sha512 = "04jd526svpmpgya7i580qcb13s9b6bw4s9hng2fsni2gxsz6h8vqxl8gbm5k575yxm5aqhy001rl7p1iy60rsi6371cvynfdpi39avg";
+      };
+    };
+    "imurmurhash-0.1.4" = {
+      name = "imurmurhash";
+      packageName = "imurmurhash";
+      version = "0.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz";
+        sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea";
+      };
+    };
+    "indent-string-3.2.0" = {
+      name = "indent-string";
+      packageName = "indent-string";
+      version = "3.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz";
+        sha1 = "4a5fd6d27cc332f37e5419a504dbb837105c9289";
+      };
+    };
+    "infer-owner-1.0.4" = {
+      name = "infer-owner";
+      packageName = "infer-owner";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz";
+        sha512 = "3s364ysa3q0sxc852a6rlbx0y8spayvg5csradd7s9vn2fr0ky3xpfhy5kkv6afgji3df7kyiswx296kwfakydii9xygqzxgkwn6a90";
+      };
+    };
+    "inflation-2.0.0" = {
+      name = "inflation";
+      packageName = "inflation";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz";
+        sha1 = "8b417e47c28f925a45133d914ca1fd389107f30f";
+      };
+    };
+    "inflight-1.0.6" = {
+      name = "inflight";
+      packageName = "inflight";
+      version = "1.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
+        sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
+      };
+    };
+    "inherits-2.0.1" = {
+      name = "inherits";
+      packageName = "inherits";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz";
+        sha1 = "b17d08d326b4423e568eff719f91b0b1cbdf69f1";
+      };
+    };
+    "inherits-2.0.3" = {
+      name = "inherits";
+      packageName = "inherits";
+      version = "2.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
+        sha1 = "633c2c83e3da42a502f52466022480f4208261de";
+      };
+    };
+    "inherits-2.0.4" = {
+      name = "inherits";
+      packageName = "inherits";
+      version = "2.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";
+        sha512 = "30rw2i1k63pbf0n5dbwly05h95cdp1kj8c9r15gv1cwha141g61k56fx4qwsvhpm1ksnf7agch1wxirs3s0m31wbfvmcqizgrlwdywk";
+      };
+    };
+    "ini-1.3.5" = {
+      name = "ini";
+      packageName = "ini";
+      version = "1.3.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz";
+        sha512 = "1rjbvf1rg5ywhnba08sgagn2qf23lab330qrqmh7d891zap3xpxcyfyj1cblpf0f0rypglcfacybzyrpd4996aa1mbc820awa33k5j5";
+      };
+    };
+    "internal-ip-4.3.0" = {
+      name = "internal-ip";
+      packageName = "internal-ip";
+      version = "4.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz";
+        sha512 = "05c6ydjyg8633b07vn5g168r5lxwvl5k1mjm55brfx35c1z18195bh67f7cfk4bjvyapxfhh8q5i7pv75k353rfp0rcpkgsa2iw2p2b";
+      };
+    };
+    "interpret-1.2.0" = {
+      name = "interpret";
+      packageName = "interpret";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz";
+        sha512 = "1pibn9f6dn61lmilqiv8hb4aix4b78xf9sdws3rnl060vvv6l4qrw6gfmncq5n0f0rah2yj1ssfg80chaw9y5aa860wfdcccb4ghgcr";
+      };
+    };
+    "into-stream-3.1.0" = {
+      name = "into-stream";
+      packageName = "into-stream";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz";
+        sha1 = "96fb0a936c12babd6ff1752a17d05616abd094c6";
+      };
+    };
+    "invariant-2.2.4" = {
+      name = "invariant";
+      packageName = "invariant";
+      version = "2.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz";
+        sha512 = "0sa0bflh46zr7zqdifqk3a48bmqlmpikrnmwvgz8nx6979piw2m92qrn1g5xnpjzxn864y2jq3gl84jkws2dad3mlwr6s3fa10my4m6";
+      };
+    };
+    "invert-kv-2.0.0" = {
+      name = "invert-kv";
+      packageName = "invert-kv";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz";
+        sha512 = "0lamd4l8hybnh42bg1nav09fj3h7k31vnvsqbqk3mhbhml32042k8hpixhiapqfssi1jyhnw31mdv9zx0fvxzxqi8igahyh5zznzxf0";
+      };
+    };
+    "ip-1.1.5" = {
+      name = "ip";
+      packageName = "ip";
+      version = "1.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz";
+        sha1 = "bdded70114290828c0a039e72ef25f5aaec4354a";
+      };
+    };
+    "ip-regex-2.1.0" = {
+      name = "ip-regex";
+      packageName = "ip-regex";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz";
+        sha1 = "fa78bf5d2e6913c911ce9f819ee5146bb6d844e9";
+      };
+    };
+    "ipaddr.js-1.9.1" = {
+      name = "ipaddr.js";
+      packageName = "ipaddr.js";
+      version = "1.9.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz";
+        sha512 = "3gcwhv1wa2hb1vljlcmzhvzliks9rj7nzsw165vgy69jakw8g55ky474mj4j41vfbid8viy9nhwn9kx8pfqrikyl29i98zi9vmkz8nh";
+      };
+    };
+    "is-absolute-url-3.0.3" = {
+      name = "is-absolute-url";
+      packageName = "is-absolute-url";
+      version = "3.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz";
+        sha512 = "3ssxj0ds0anzx5qcgn5lcawrsv3br0zbi1qcfpi9sslp4iwzb0hr9aqy3y72rf9c0bwb0h5svy7l341j0arlkyvx2yp85pfgqhqv6d2";
+      };
+    };
+    "is-accessor-descriptor-0.1.6" = {
+      name = "is-accessor-descriptor";
+      packageName = "is-accessor-descriptor";
+      version = "0.1.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz";
+        sha1 = "a9e12cb3ae8d876727eeef3843f8a0897b5c98d6";
+      };
+    };
+    "is-accessor-descriptor-1.0.0" = {
+      name = "is-accessor-descriptor";
+      packageName = "is-accessor-descriptor";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz";
+        sha512 = "1qllik6fjwfq17ic0fxwqyll8mrhmcm36xfsq45xc57mq9ah4i4nn4f8fvgb0gx4kpl3jlpkzndp0xlmmf2mh0xmggw6mhw74fng64v";
+      };
+    };
+    "is-arrayish-0.2.1" = {
+      name = "is-arrayish";
+      packageName = "is-arrayish";
+      version = "0.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz";
+        sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d";
+      };
+    };
+    "is-binary-path-1.0.1" = {
+      name = "is-binary-path";
+      packageName = "is-binary-path";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz";
+        sha1 = "75f16642b480f187a711c814161fd3a4a7655898";
+      };
+    };
+    "is-buffer-1.1.6" = {
+      name = "is-buffer";
+      packageName = "is-buffer";
+      version = "1.1.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz";
+        sha512 = "3kr8dm9qyklmm2xyiz75s8db90bfilfals4x0g276kncihrrrz0ar4y6dqpvc7pwy7h43jay1bayi1r62x97nzvcswkk4ap18pl1irm";
+      };
+    };
+    "is-callable-1.1.5" = {
+      name = "is-callable";
+      packageName = "is-callable";
+      version = "1.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz";
+        sha512 = "3wmff73yzck45x5shydqswbww8zkl03i43yhy7mm6av9770yvd2gj7xfrc8f45fw2ncn7mwblxvxlcap5rngmklkjiis902qgkay8hi";
+      };
+    };
+    "is-ci-2.0.0" = {
+      name = "is-ci";
+      packageName = "is-ci";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz";
+        sha512 = "3inmiidgnyxsaypy9cq2pxcc0n7xcfsy3dlkjhk22y97vwz45b0hg972wj27kc0q5dd7k0zywjl3y5fjsqiq7fvllp1sh19p7p57wk1";
+      };
+    };
+    "is-data-descriptor-0.1.4" = {
+      name = "is-data-descriptor";
+      packageName = "is-data-descriptor";
+      version = "0.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz";
+        sha1 = "0b5ee648388e2c860282e793f1856fec3f301b56";
+      };
+    };
+    "is-data-descriptor-1.0.0" = {
+      name = "is-data-descriptor";
+      packageName = "is-data-descriptor";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz";
+        sha512 = "0ny6kxc752fg3z6fmj8a7fw2lai2y17d9fx0028nvyv1qj0sa30rfryhv9xd7b7is1yfs0val6amsy2b22rh589il10md36a75mgd4d";
+      };
+    };
+    "is-date-object-1.0.2" = {
+      name = "is-date-object";
+      packageName = "is-date-object";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz";
+        sha512 = "39f971gzwirnxjw4b72c175nbn1hnmrn1wljvbzvxv69hw9vpialhjafh9nkh0g3p26a49zss3rr7pxfww1f6day4s89hmqkm7l6aai";
+      };
+    };
+    "is-descriptor-0.1.6" = {
+      name = "is-descriptor";
+      packageName = "is-descriptor";
+      version = "0.1.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz";
+        sha512 = "0gbflcxmd30gzj91y19fylsfalirl6qg71sxjximc8lc2vxkg5h9scnahvxsczymchlx742i8ai489843ys431vyw73rp418jpxiw3a";
+      };
+    };
+    "is-descriptor-1.0.2" = {
+      name = "is-descriptor";
+      packageName = "is-descriptor";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz";
+        sha512 = "2v1a9mn2rzz52v8vs3i7njk9pv95fh971yc81xr0zkaw3dff4gbv1zv048xyjysfgwpajbyryk2px8hinwwh0wagblmw6chdbjsrs6r";
+      };
+    };
+    "is-expression-3.0.0" = {
+      name = "is-expression";
+      packageName = "is-expression";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz";
+        sha1 = "39acaa6be7fd1f3471dc42c7416e61c24317ac9f";
+      };
+    };
+    "is-extendable-0.1.1" = {
+      name = "is-extendable";
+      packageName = "is-extendable";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz";
+        sha1 = "62b110e289a471418e3ec36a617d472e301dfc89";
+      };
+    };
+    "is-extendable-1.0.1" = {
+      name = "is-extendable";
+      packageName = "is-extendable";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz";
+        sha512 = "0w73qlx9ynmv2iznw1kll86yd04z4rsz3788nzgh7amcnpsbyxbrs734im9dibqgps6pjyz61s8kp4lcsbjsdfrlc51m1pm2hrxgfba";
+      };
+    };
+    "is-extglob-2.1.1" = {
+      name = "is-extglob";
+      packageName = "is-extglob";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz";
+        sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2";
+      };
+    };
+    "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";
+      };
+    };
+    "is-fullwidth-code-point-1.0.0" = {
+      name = "is-fullwidth-code-point";
+      packageName = "is-fullwidth-code-point";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
+        sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
+      };
+    };
+    "is-fullwidth-code-point-2.0.0" = {
+      name = "is-fullwidth-code-point";
+      packageName = "is-fullwidth-code-point";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
+        sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
+      };
+    };
+    "is-generator-fn-2.1.0" = {
+      name = "is-generator-fn";
+      packageName = "is-generator-fn";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz";
+        sha512 = "14qphsynlkivbpi3hhf3wmcjh8f5s9d2z6nr1h98ijygyj2jql330h1w52a4z33plgjma305w3rn3nf28q4n6j1qfmz2byq4gih2cki";
+      };
+    };
+    "is-generator-function-1.0.7" = {
+      name = "is-generator-function";
+      packageName = "is-generator-function";
+      version = "1.0.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz";
+        sha512 = "2vr3bz9zc2d62mnsg16ppb5h2v5h9yfyjbijysi34b10vsly1fn1g4hmqwi40fng3i9pmbkc7vapr3yl23yxc96b2jgvqcf1h9kk5v1";
+      };
+    };
+    "is-glob-3.1.0" = {
+      name = "is-glob";
+      packageName = "is-glob";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz";
+        sha1 = "7ba5ae24217804ac70707b96922567486cc3e84a";
+      };
+    };
+    "is-glob-4.0.1" = {
+      name = "is-glob";
+      packageName = "is-glob";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz";
+        sha512 = "19c23n8r8rfbz5rgs5csbjbpwgxvwi7y6kpsvlylgs2v1r1z2zm18qzzz2g8vnnwaldn5c4qalpc6p88rl0gjrrm278j52ks0m2svg4";
+      };
+    };
+    "is-number-3.0.0" = {
+      name = "is-number";
+      packageName = "is-number";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz";
+        sha1 = "24fd6201a4782cf50561c810276afc7d12d71195";
+      };
+    };
+    "is-object-1.0.1" = {
+      name = "is-object";
+      packageName = "is-object";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz";
+        sha1 = "8952688c5ec2ffd6b03ecc85e769e02903083470";
+      };
+    };
+    "is-path-cwd-2.2.0" = {
+      name = "is-path-cwd";
+      packageName = "is-path-cwd";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz";
+        sha512 = "0aws7clcb9cyvvb4430df9fhfnpg9bl1n07ymzp7jdzia0bvjg25gyd39xp2xhgkgpkqazw8csglblifdql0rpj4kfwg1r26xnkdpn3";
+      };
+    };
+    "is-path-in-cwd-2.1.0" = {
+      name = "is-path-in-cwd";
+      packageName = "is-path-in-cwd";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz";
+        sha512 = "12yyg4jlg5mmiy2g0r91hz29v3jh5g2wyhdgs1qrfswx2sp7bfsn5g4632yfxmhrpjcy03bxfj12v93yd6pdykkpsmyz912g1f1rnmc";
+      };
+    };
+    "is-path-inside-2.1.0" = {
+      name = "is-path-inside";
+      packageName = "is-path-inside";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz";
+        sha512 = "0b5h3ls9n24ma1wqpfsv7n034ryz86rfn1vkz5g0sih2abi9wrs0vx6w583s6qhcgqa6rx5w5layfz7hlakhxvf07qcnnn36x7s2b62";
+      };
+    };
+    "is-plain-obj-1.1.0" = {
+      name = "is-plain-obj";
+      packageName = "is-plain-obj";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz";
+        sha1 = "71a50c8429dfca773c92a390a4a03b39fcd51d3e";
+      };
+    };
+    "is-plain-object-2.0.4" = {
+      name = "is-plain-object";
+      packageName = "is-plain-object";
+      version = "2.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz";
+        sha512 = "0xgsjz9m3kg5pm36lcchblxk53qay59ya7wi5jgdmz0dsl5b0j2j7wcd48yyfaip1m70mj9aqf8kib02fn62k0hy0vxg2hng60yk4w7";
+      };
+    };
+    "is-promise-2.1.0" = {
+      name = "is-promise";
+      packageName = "is-promise";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz";
+        sha1 = "79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa";
+      };
+    };
+    "is-regex-1.0.5" = {
+      name = "is-regex";
+      packageName = "is-regex";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz";
+        sha512 = "1hqaalcf1yqll2yzm71a1axvid0x87jp41hyicw16rl12rrh6sp6srr9lk7wxm6a1vl3ypw8qyd0imbq8fl2h7yq8l8xawdnkbrclmy";
+      };
+    };
+    "is-retry-allowed-1.2.0" = {
+      name = "is-retry-allowed";
+      packageName = "is-retry-allowed";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz";
+        sha512 = "134jdgzg4p15g5jvwsmb0bmglmymn1pyk6r2w8q1fm728f15l7k12sqmfngn0mg3vs34gzg12v684fp9c99l6jnv737b6rgmiwd8ij5";
+      };
+    };
+    "is-stream-1.1.0" = {
+      name = "is-stream";
+      packageName = "is-stream";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz";
+        sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
+      };
+    };
+    "is-symbol-1.0.3" = {
+      name = "is-symbol";
+      packageName = "is-symbol";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz";
+        sha512 = "1lmzzy2360gfg5639x8mzi5fpc1bgpdx0ffjlqaz9affd0lvvpi7yjwk15jsm1y1l8rf5jahyapv6rm2w3p86gxkghsp0jjlj2s621v";
+      };
+    };
+    "is-typedarray-1.0.0" = {
+      name = "is-typedarray";
+      packageName = "is-typedarray";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
+        sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
+      };
+    };
+    "is-whitespace-0.3.0" = {
+      name = "is-whitespace";
+      packageName = "is-whitespace";
+      version = "0.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz";
+        sha1 = "1639ecb1be036aec69a54cbb401cfbed7114ab7f";
+      };
+    };
+    "is-windows-1.0.2" = {
+      name = "is-windows";
+      packageName = "is-windows";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz";
+        sha512 = "0h9a8zw2ddl25yryp7i376iqjdvlsx4gw93sxy4067dw2yi98m3krfwd9xgi9q5w0idw9rqnyhhncr38xsppyi5izkb7ngai58bawkr";
+      };
+    };
+    "is-wsl-1.1.0" = {
+      name = "is-wsl";
+      packageName = "is-wsl";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz";
+        sha1 = "1f16e4aa22b04d1336b66188a66af3c600c3a66d";
+      };
+    };
+    "isarray-0.0.1" = {
+      name = "isarray";
+      packageName = "isarray";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz";
+        sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
+      };
+    };
+    "isarray-1.0.0" = {
+      name = "isarray";
+      packageName = "isarray";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
+        sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
+      };
+    };
+    "isexe-2.0.0" = {
+      name = "isexe";
+      packageName = "isexe";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz";
+        sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
+      };
+    };
+    "isobject-2.1.0" = {
+      name = "isobject";
+      packageName = "isobject";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz";
+        sha1 = "f065561096a3f1da2ef46272f815c840d87e0c89";
+      };
+    };
+    "isobject-3.0.1" = {
+      name = "isobject";
+      packageName = "isobject";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz";
+        sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df";
+      };
+    };
+    "isomorphic-ws-4.0.1" = {
+      name = "isomorphic-ws";
+      packageName = "isomorphic-ws";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz";
+        sha512 = "3bk7frapznyd2q46p7kbk6w1wby8dfjj14p06j485n3s08nc398ah9d3wlr1q59sj5hv1cycvalkmn1vfzlamkp93d69981ccvny406";
+      };
+    };
+    "isstream-0.1.2" = {
+      name = "isstream";
+      packageName = "isstream";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
+        sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
+      };
+    };
+    "istanbul-lib-coverage-2.0.5" = {
+      name = "istanbul-lib-coverage";
+      packageName = "istanbul-lib-coverage";
+      version = "2.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz";
+        sha512 = "2cgkn8swx4450c0m0alr4lb4fvqjyh3v9mg6ivx2sa9vq0hkb7r0yz87srf8263j089kpjmpnsl6d3l5vg7x4f4kk39n20gw6gg79gi";
+      };
+    };
+    "istanbul-lib-instrument-3.3.0" = {
+      name = "istanbul-lib-instrument";
+      packageName = "istanbul-lib-instrument";
+      version = "3.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz";
+        sha512 = "1j5bcfrd9sgjpm1mpgxv847jwwcjfpzfkynjcidpf4mwxbn0p6gz622rcrmbliphcbnw0nxipw0d7aw0gva7rym3lci9rz8icvwhyg6";
+      };
+    };
+    "istanbul-lib-report-2.0.8" = {
+      name = "istanbul-lib-report";
+      packageName = "istanbul-lib-report";
+      version = "2.0.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz";
+        sha512 = "2qm8v7vck1yv85lkx7n060wdvrr547mfrc83xyr6sl4p4av7r6c5jh6mdbvxiqz2m6d5spj6v8fksa9dc6c5r86hjhqh47pkqdmww3w";
+      };
+    };
+    "istanbul-lib-source-maps-3.0.6" = {
+      name = "istanbul-lib-source-maps";
+      packageName = "istanbul-lib-source-maps";
+      version = "3.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz";
+        sha512 = "1gm71m2lqpb1p2lrwmf9f9g2maz48s133zvk0zzlblgwnjgnn6dx129cbsx8znklhanwwgck6fwnfpsy5sga5pnwfbpw923rg6cm3j7";
+      };
+    };
+    "istanbul-reports-2.2.7" = {
+      name = "istanbul-reports";
+      packageName = "istanbul-reports";
+      version = "2.2.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz";
+        sha512 = "0m8fjnnvxyyd03g22xna4jnypd01jbvdsz5k9jnqlb1v678zikdzidq7p1x4pdlg1dfzfa9g8lzz01srnamalpmrj5qxrb8ppy4bvds";
+      };
+    };
+    "isurl-1.0.0" = {
+      name = "isurl";
+      packageName = "isurl";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz";
+        sha512 = "3vs53bpdrwiwwcql2xs20jmd8qha27k4iypdhr0b3isgdaj18vz80nhxwvvqxk6y3x5vj3slchxl0r91gjhz487xmkkp52gridg5zyl";
+      };
+    };
+    "jest-24.9.0" = {
+      name = "jest";
+      packageName = "jest";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz";
+        sha512 = "0dz2j03p5zng926y4l7d5ivp918xscx0rmpavzyh02wy397hc3qr7m8w90zyfizy0gkwcq6xcdw4a3p1rqpqyg8sy0xvvb6aqph3yb2";
+      };
+    };
+    "jest-changed-files-24.9.0" = {
+      name = "jest-changed-files";
+      packageName = "jest-changed-files";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz";
+        sha512 = "2m70h82g3b9fhgyvzvg189inyc1zq20jz8nv763k4zcqg05pswzg92kjwkk26ry257qpk1p7cdg5hivchvmmg5xhh1ms756xnjxd979";
+      };
+    };
+    "jest-cli-24.9.0" = {
+      name = "jest-cli";
+      packageName = "jest-cli";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz";
+        sha512 = "0d2yrlapfahrl57m7nwz7lw04gvx72f61sq0w8mga9c1ly2jqm1jfb7jx4xjwqy4rshz0xxrj1zcpy5s60m14n7l1b70kxd50mx2lpr";
+      };
+    };
+    "jest-config-24.9.0" = {
+      name = "jest-config";
+      packageName = "jest-config";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz";
+        sha512 = "1yjki6v7vm537dmjkfkdbmb9gqw90j3sz1815j1ckx21rb2pshsdpk7qccjn6hfbcn7zy287wb48ynbz6kq7mpvxplhlqamkd0fs124";
+      };
+    };
+    "jest-diff-24.9.0" = {
+      name = "jest-diff";
+      packageName = "jest-diff";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz";
+        sha512 = "02sb3bshly5aqlan0hxxw54d15jm33d68zhyl9mr86lwy736g3gdvcs18d3jv9zr82vnnnhcdvi7fc7fd4aglxai8v92x00rx7fpix8";
+      };
+    };
+    "jest-docblock-24.9.0" = {
+      name = "jest-docblock";
+      packageName = "jest-docblock";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz";
+        sha512 = "009kyd5sgsjr8fa7ayc30pggfywigyh6a49rwk6fs1lcn5r61iy7ffza0zssbbra98yp64qgjinbmk09m0pp1yyf0sw096cj1vf6l0p";
+      };
+    };
+    "jest-each-24.9.0" = {
+      name = "jest-each";
+      packageName = "jest-each";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz";
+        sha512 = "2i6r417rcfrcfm30qy6ahwx0bgnwmj43d9l43vj1fkzj22dp6aygkx8qb6v09iw43q0y2b8pmfdw1k2gjy2wdnbqdf8wnvgh13v9n1q";
+      };
+    };
+    "jest-environment-jsdom-24.9.0" = {
+      name = "jest-environment-jsdom";
+      packageName = "jest-environment-jsdom";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz";
+        sha512 = "2s9xjipxcg6j92q67l7c9xcc6dy8d5nhjw722j501cxha0fabdp0ld1vzdw9y4hnqbvcy2h6kagjv9vlccbvqxm03p34is1sdblbzv6";
+      };
+    };
+    "jest-environment-node-24.9.0" = {
+      name = "jest-environment-node";
+      packageName = "jest-environment-node";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz";
+        sha512 = "2wbp9q6p3l2n5zd9s9788rpbyy4xgf07fgf1q8vgnndzgk87jiillyhsjliznj924bssn8pwadqaimgsdpa7pg9q4rk5ir7zvcibpp9";
+      };
+    };
+    "jest-get-type-24.9.0" = {
+      name = "jest-get-type";
+      packageName = "jest-get-type";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz";
+        sha512 = "3qs6d7i3xgiwb787y3d4ymij99fqgrcn6bg0bz27ic0nr58cw49njbhnrb7jpmkq3823mqs1snx7rvz97zlhac7hh5jwyr560riwjwm";
+      };
+    };
+    "jest-haste-map-24.9.0" = {
+      name = "jest-haste-map";
+      packageName = "jest-haste-map";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz";
+        sha512 = "26w4jc0ic0x8j1vza10vnf1aqahg1wknvq9q40kbsv5i9j5h3krvjb8akjgkkpv9gjh9frq04kyml8gg01d8saliy92vflnrfd4bxci";
+      };
+    };
+    "jest-jasmine2-24.9.0" = {
+      name = "jest-jasmine2";
+      packageName = "jest-jasmine2";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz";
+        sha512 = "37r7lh1ni9sizsffg7zcymwr8v30jhnz5kxmpq06i4c5d2b62nmpnci0w2kfmx0nq21ndp6829ypajdbgrdpzn57rzalq0s128fzbha";
+      };
+    };
+    "jest-leak-detector-24.9.0" = {
+      name = "jest-leak-detector";
+      packageName = "jest-leak-detector";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz";
+        sha512 = "2n6cx7niz5q8aryz2gahj0kz5s7vvj4xjn5py635kmmrhr7xa0immgd7h6id9zxccrxz8pn8rlp9maz447xfik1dyq32a927ch0b2dm";
+      };
+    };
+    "jest-matcher-utils-24.9.0" = {
+      name = "jest-matcher-utils";
+      packageName = "jest-matcher-utils";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz";
+        sha512 = "0fa7wakjy0cpr8scy7i55r1bp13r42n334abwv6p2zfkxa1dgkv0s00qm31437ixxv0rjah1d86vvjg6nvyn7hc62ifds9fgchzd71r";
+      };
+    };
+    "jest-message-util-24.9.0" = {
+      name = "jest-message-util";
+      packageName = "jest-message-util";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz";
+        sha512 = "2bq0saksr0nf5i1vj8lkrgwpb1ssyasmmxj0bwhn6ckf921bx3lapbg7wwzp96aa0qd81pv5n6gi0iz7cpvm4l67x9lhlvp4qbgqa50";
+      };
+    };
+    "jest-mock-24.9.0" = {
+      name = "jest-mock";
+      packageName = "jest-mock";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz";
+        sha512 = "3byaz1py3zmdifhw4743mrj6vq5mkqmkr83ps0w20i3dw2f46sqspx2prn9gyvcqa0i7za0gy6ff0gc28qjrcp4fxqayjlvjlvih4fw";
+      };
+    };
+    "jest-pnp-resolver-1.2.1" = {
+      name = "jest-pnp-resolver";
+      packageName = "jest-pnp-resolver";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz";
+        sha512 = "2fsj6wsh0r9hbal035dfnly528jk85b00z1rnikavh6zprlhwspq8rqjlv4ds0qkr2l62frwq803h6awxx3hgzpcbhgrqdrv7d700d6";
+      };
+    };
+    "jest-regex-util-24.9.0" = {
+      name = "jest-regex-util";
+      packageName = "jest-regex-util";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz";
+        sha512 = "101f428mjhbpli5q63y48lr2j3010x571y5km5mfk2zxx9vrqwnwvprsib89f5nv2lysfr6cin7gxc6ryyqx7yfc8za1idfl1psd46k";
+      };
+    };
+    "jest-resolve-24.9.0" = {
+      name = "jest-resolve";
+      packageName = "jest-resolve";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz";
+        sha512 = "0qkydcrqaqslxls0wgkxipas27szpigp62bw03ab640ilj8ym1zfm9x9w0x1ghp14x218dq5jzraf5niwvdybch2lc4z5zma8nxx8jd";
+      };
+    };
+    "jest-resolve-dependencies-24.9.0" = {
+      name = "jest-resolve-dependencies";
+      packageName = "jest-resolve-dependencies";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz";
+        sha512 = "3xflqrzhsd48ckwqzd4cc5b2qxng8f9946lws7dam37gwd4dxb5spjsswqa624bh36ymv8il4i4gjv9x4ay5whms19qi7an17ldnvhn";
+      };
+    };
+    "jest-runner-24.9.0" = {
+      name = "jest-runner";
+      packageName = "jest-runner";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz";
+        sha512 = "1d1djjic2c29yjm7lccjh8vpa7imjmr3b4y87v255dvg7cn9p7v78298hzjvl00xkaqn4vrnwd9w6rq8hf9yagvf6hlkzrp491hjjra";
+      };
+    };
+    "jest-runtime-24.9.0" = {
+      name = "jest-runtime";
+      packageName = "jest-runtime";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz";
+        sha512 = "2gwrn1nf3fc73wdc0a4gjipld6ahf9iq9k37rdzp5wxish6691xnb4b72j31k2hksr6caijgdgjhgxsbxi36lgmx24zvpl5g616m0zj";
+      };
+    };
+    "jest-serializer-24.9.0" = {
+      name = "jest-serializer";
+      packageName = "jest-serializer";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz";
+        sha512 = "1nkvvhcv9qvpdxj7p66qpi46yy4yqvdw6kfdfpq3b00x4i4ypxa1c8m9s7xh672svcibgv3ghwzfh3limg7mjkx53mzffpw7aj245hg";
+      };
+    };
+    "jest-snapshot-24.9.0" = {
+      name = "jest-snapshot";
+      packageName = "jest-snapshot";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz";
+        sha512 = "1xq7ysip1hh99xijwdhk5xmax44mkf7r0ggqdfzdmfnj7h75myfzr39nwi3ljvgwgj7lwkliz9bidivggmgl9fd13qvvcwj66ryp3xq";
+      };
+    };
+    "jest-util-24.9.0" = {
+      name = "jest-util";
+      packageName = "jest-util";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz";
+        sha512 = "0xcvxjx6b045jaki9zg2qjf7j10fv9wmlq2173553l6z11g73id4xgv591r7wdjd81x088fmmv2c53pq60fcjhddiqy562iqm9ikry7";
+      };
+    };
+    "jest-validate-24.9.0" = {
+      name = "jest-validate";
+      packageName = "jest-validate";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz";
+        sha512 = "12y3aryz98ppjhkz6zs9pix68d6ng43dq40wyvjhdzlf1cyyfs27qk9ra1zir84g2y42smvq7rclxj8sbkzh8ic9am0h2s05vl2vwhw";
+      };
+    };
+    "jest-watcher-24.9.0" = {
+      name = "jest-watcher";
+      packageName = "jest-watcher";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz";
+        sha512 = "1kqdbclywg8vhhvh6dhrmzmdfj1ivkwdl639qxam38nxvvv869b7j9shaag8zg7cmc5nlw67yhhc7p1pynv6r491l4pcpcgy8wwpxzv";
+      };
+    };
+    "jest-worker-24.9.0" = {
+      name = "jest-worker";
+      packageName = "jest-worker";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz";
+        sha512 = "1bj47m96z8b7jibrl7ybpmk88l2ic0yzwanlsimc1ca2gz8rhj0zaxaix9baxmyms63lq8dj2yxpafr739k3lhrl83pfjcc2vic8lz7";
+      };
+    };
+    "js-beautify-1.10.3" = {
+      name = "js-beautify";
+      packageName = "js-beautify";
+      version = "1.10.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/js-beautify/-/js-beautify-1.10.3.tgz";
+        sha512 = "2yvdw134756wahvr97k7b7s5d10h3wf454j0vjmwhgbdsmqidlyccrqvjhlm82vdwc3m0074ad79wp4qwmpclhagi9ksvx80lh3zyf1";
+      };
+    };
+    "js-stringify-1.0.2" = {
+      name = "js-stringify";
+      packageName = "js-stringify";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz";
+        sha1 = "1736fddfd9724f28a3682adc6230ae7e4e9679db";
+      };
+    };
+    "js-tokens-3.0.2" = {
+      name = "js-tokens";
+      packageName = "js-tokens";
+      version = "3.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz";
+        sha1 = "9866df395102130e38f7f996bceb65443209c25b";
+      };
+    };
+    "js-tokens-4.0.0" = {
+      name = "js-tokens";
+      packageName = "js-tokens";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz";
+        sha512 = "0lwyvximqkf1q5w94x2747nj2v035is66vzalrbl3f2gdh9k1m3m29p8zw6r65ps5784x2lxwz8akmv085l4ai358rwbp84axz59lj5";
+      };
+    };
+    "js-yaml-3.13.1" = {
+      name = "js-yaml";
+      packageName = "js-yaml";
+      version = "3.13.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz";
+        sha512 = "0kkjjrr0znm2ka89ywc5518c8dw0210z91fm94c7v11l8c96mkjh0ddld5mb7jmmnpzap7vn0fhvr29lma63c9is2ixq3fpp0xxrxk1";
+      };
+    };
+    "jsbn-0.1.1" = {
+      name = "jsbn";
+      packageName = "jsbn";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
+        sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
+      };
+    };
+    "jsdom-11.12.0" = {
+      name = "jsdom";
+      packageName = "jsdom";
+      version = "11.12.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz";
+        sha512 = "27wagw1v4qv7snvz46q94kvwfzs4p86izsab5rm1bjh4dj18k527msjszrcnvb924sbwk4pj0ncvdqn6jzwydcpvlsi721jgbiz3hyb";
+      };
+    };
+    "jsesc-0.5.0" = {
+      name = "jsesc";
+      packageName = "jsesc";
+      version = "0.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz";
+        sha1 = "e7dee66e35d6fc16f710fe91d5cf69f70f08911d";
+      };
+    };
+    "jsesc-1.3.0" = {
+      name = "jsesc";
+      packageName = "jsesc";
+      version = "1.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz";
+        sha1 = "46c3fec8c1892b12b0833db9bc7622176dbab34b";
+      };
+    };
+    "jsesc-2.5.2" = {
+      name = "jsesc";
+      packageName = "jsesc";
+      version = "2.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz";
+        sha512 = "20bfkjw0zjachan7rfv75dn5ky7l12xhyz919mdhh9fjn395ss454ykknjza7fwyx09dj89makcs1xi341dvv4k1cvj94739ifbp2rr";
+      };
+    };
+    "json-buffer-3.0.0" = {
+      name = "json-buffer";
+      packageName = "json-buffer";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz";
+        sha1 = "5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898";
+      };
+    };
+    "json-parse-better-errors-1.0.2" = {
+      name = "json-parse-better-errors";
+      packageName = "json-parse-better-errors";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz";
+        sha512 = "2pv1kaf7gjr0bhr2djaf1i88li7q3v5daz4zm4hz57i4h21jgryihxb5c2h0p0q1vrq1ffyg279hp0vjrg73shvxr5lir6plxjb5fls";
+      };
+    };
+    "json-schema-0.2.3" = {
+      name = "json-schema";
+      packageName = "json-schema";
+      version = "0.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
+        sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
+      };
+    };
+    "json-schema-traverse-0.4.1" = {
+      name = "json-schema-traverse";
+      packageName = "json-schema-traverse";
+      version = "0.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
+        sha512 = "1bbgxs4777gn3q3yxi0n792cgz9pimf85pypr0w4wzpb22nr8fl9xi98pkcqd3n4fn7lnzffpq7qwpcl4dqc15py19lwqa2jwgw5dn5";
+      };
+    };
+    "json-stringify-safe-5.0.1" = {
+      name = "json-stringify-safe";
+      packageName = "json-stringify-safe";
+      version = "5.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
+        sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
+      };
+    };
+    "json3-3.3.3" = {
+      name = "json3";
+      packageName = "json3";
+      version = "3.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz";
+        sha512 = "049m3dzsr3mcgk3g8hw79w9lr296zxs0qmmn45ngfzinyxsvqh6k52i49690bfjlhsv16yrs87vh4nh6lfy80xrdh02haicnnczrgvk";
+      };
+    };
+    "json5-0.5.1" = {
+      name = "json5";
+      packageName = "json5";
+      version = "0.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz";
+        sha1 = "1eade7acc012034ad84e2396767ead9fa5495821";
+      };
+    };
+    "json5-1.0.1" = {
+      name = "json5";
+      packageName = "json5";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz";
+        sha512 = "0xzlb8ipv7y4s06gdr1j09fgp9a8xcjrwy5qq739vgadwzfyslk6xph4f9d8zv7rrc0fg3qn6fpwg3y1mrzf0hbi5qp8yng11cvi938";
+      };
+    };
+    "json5-2.1.1" = {
+      name = "json5";
+      packageName = "json5";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz";
+        sha512 = "22wbapqjyyia17kracx58ch53wppglmma2r3k2wzfjixnljynv3s7sscdxffl5v70j77j89wvq0ldmpm8xrxdbap3hqs4067mfcgvcp";
+      };
+    };
+    "jsonpath-plus-0.19.0" = {
+      name = "jsonpath-plus";
+      packageName = "jsonpath-plus";
+      version = "0.19.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-0.19.0.tgz";
+        sha512 = "29bszfdwjp446whcdh9mivbff8xl1v8jyamcwf6bg96mqr0jaghari3nfjqjrq33gv1di54kz17vrlj0bpakv2wwq0bpx6npjr7098r";
+      };
+    };
+    "jsprim-1.4.1" = {
+      name = "jsprim";
+      packageName = "jsprim";
+      version = "1.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
+        sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
+      };
+    };
+    "jstransformer-1.0.0" = {
+      name = "jstransformer";
+      packageName = "jstransformer";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz";
+        sha1 = "ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3";
+      };
+    };
+    "keygrip-1.1.0" = {
+      name = "keygrip";
+      packageName = "keygrip";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz";
+        sha512 = "00x227di73g3xvz8pmdhf4ykssibdigbhqw7kr6a22s8w54r7raw71apsc3r2bwda290y3wzsmay0xi59j27lh6icy295ky6a29r149";
+      };
+    };
+    "keyv-3.0.0" = {
+      name = "keyv";
+      packageName = "keyv";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz";
+        sha512 = "32ga97c763vprf4sjbb2f7gbngfppq9n1hy4cpq2h4yb1msrhh2zjimxib7p09mzgynm6askbigxlsqsm11p644avp4sf5nmng8f2vs";
+      };
+    };
+    "killable-1.0.1" = {
+      name = "killable";
+      packageName = "killable";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz";
+        sha512 = "272kk46rkfh4wq4mispvvy174y6fj8rlnf1m5z8pszpa2igz586k5f8vzz3q3nckxwvkcyqzf48sndd48krwzr9ag22mhjlm4nasfig";
+      };
+    };
+    "kind-of-3.2.2" = {
+      name = "kind-of";
+      packageName = "kind-of";
+      version = "3.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz";
+        sha1 = "31ea21a734bab9bbb0f32466d893aea51e4a3c64";
+      };
+    };
+    "kind-of-4.0.0" = {
+      name = "kind-of";
+      packageName = "kind-of";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz";
+        sha1 = "20813df3d712928b207378691a45066fae72dd57";
+      };
+    };
+    "kind-of-5.1.0" = {
+      name = "kind-of";
+      packageName = "kind-of";
+      version = "5.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz";
+        sha512 = "0zk87sccrjx6pgf9n74v4msnqwq5siyhrkpaklx7yk85ygy5ypcgmyfhbd5mmcyd53x8zcw0gzvp9bhbglziqbhp7a6n5zsf6p08q9l";
+      };
+    };
+    "kind-of-6.0.3" = {
+      name = "kind-of";
+      packageName = "kind-of";
+      version = "6.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz";
+        sha512 = "23pm3j7jjxhl5igjj2mg91b2w2x6j39axjy2y7b1z0dp9jgnhxl885znwwvglzhnb5ssdc4v5vy04ks7xpwgzllyy1ngdmxbyxbbi3m";
+      };
+    };
+    "kleur-3.0.3" = {
+      name = "kleur";
+      packageName = "kleur";
+      version = "3.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz";
+        sha512 = "3rh87j32f450qslsmms0br15jzkv6b71n08xsms6wv6qfvdxv1b5cridqb7bmkwmvzffx9asikjs4vh328pmifhqn4iylcjafak6ckr";
+      };
+    };
+    "koa-2.11.0" = {
+      name = "koa";
+      packageName = "koa";
+      version = "2.11.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/koa/-/koa-2.11.0.tgz";
+        sha512 = "0q4rl38fvrdnml9ix2ka3nav9zd8ilxh6738b27nvx4r05y0lb17pjw7la9nqgq0q401alrkv1cyyliig40r88c1rd3jk2195s7v50j";
+      };
+    };
+    "koa-body-4.1.1" = {
+      name = "koa-body";
+      packageName = "koa-body";
+      version = "4.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/koa-body/-/koa-body-4.1.1.tgz";
+        sha512 = "1wfnjmilqj9fhv5dhmhpr5vx38ja1x8599nnqwx2977mhz15ig66fpcyk2rim80l8b77ir6g6w3wz71hppb445gf129kapwa0lzzdmc";
+      };
+    };
+    "koa-compose-3.2.1" = {
+      name = "koa-compose";
+      packageName = "koa-compose";
+      version = "3.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/koa-compose/-/koa-compose-3.2.1.tgz";
+        sha1 = "a85ccb40b7d986d8e5a345b3a1ace8eabcf54de7";
+      };
+    };
+    "koa-compose-4.1.0" = {
+      name = "koa-compose";
+      packageName = "koa-compose";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz";
+        sha512 = "1grd8vfvlnkpwjj8da79mig7p54842wpxzf2dhkj4dmsjm3yh5afh7kq83pig53xbfg6fbds2iwkypgl7r6naqwblpwdf637bqxdq7h";
+      };
+    };
+    "koa-convert-1.2.0" = {
+      name = "koa-convert";
+      packageName = "koa-convert";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/koa-convert/-/koa-convert-1.2.0.tgz";
+        sha1 = "da40875df49de0539098d1700b50820cebcd21d0";
+      };
+    };
+    "koa-router-7.4.0" = {
+      name = "koa-router";
+      packageName = "koa-router";
+      version = "7.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/koa-router/-/koa-router-7.4.0.tgz";
+        sha512 = "3x0wdvpg0jxpv26fd4vqhw116nw797i4pzxsgpwm17yll74h8gyxg25zjnwihnm36lhxs9bb1p5m7bm0qcym4lm2b0z17c0fw6mls11";
+      };
+    };
+    "koa-send-5.0.0" = {
+      name = "koa-send";
+      packageName = "koa-send";
+      version = "5.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/koa-send/-/koa-send-5.0.0.tgz";
+        sha512 = "2fimqkgi0mli0fl0zfcylnbi29939cp2s7q8c60mnqiszbyyp4snkq5v87sfwjv04nkzc48l80jpkp3hdnw24fv6zp9vlpdbssnhipp";
+      };
+    };
+    "koa-static-5.0.0" = {
+      name = "koa-static";
+      packageName = "koa-static";
+      version = "5.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz";
+        sha512 = "1llav1xa767y46f8dhhapgqyyhc4hg7np4d34lbf0r0gg5fa9gi5lypzmn3q346rmym41g4jm0lb0hsnx6z0lpzmn4pc4aqgv49ib2j";
+      };
+    };
+    "koa-views-6.2.1" = {
+      name = "koa-views";
+      packageName = "koa-views";
+      version = "6.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/koa-views/-/koa-views-6.2.1.tgz";
+        sha512 = "1xzbplyv8h0gli3blaz4k8s148m29iq39mqk1jpdh6qs14x1y5ayimfscy1rvl1wy0ix6hmd1cd9g8bcsbd8c8d4qdckfhaiz1yskf1";
+      };
+    };
+    "lazy-cache-1.0.4" = {
+      name = "lazy-cache";
+      packageName = "lazy-cache";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz";
+        sha1 = "a1d78fc3a50474cb80845d3b3b6e1da49a446e8e";
+      };
+    };
+    "lcid-2.0.0" = {
+      name = "lcid";
+      packageName = "lcid";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz";
+        sha512 = "1wcm03j1xmwayngclsgc7xk3rfsn8d3lcas6yfxszjpjwa37nwiia213cxkagdfc56anijwb679bg42ak1w59d0bkq6j47wqdpw9wva";
+      };
+    };
+    "left-pad-1.3.0" = {
+      name = "left-pad";
+      packageName = "left-pad";
+      version = "1.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz";
+        sha512 = "08aih5wmcyaw8f8nxlcf6lhr8synqf7jpvcp0ah2vdkshckvhvw2a8sj2bqkf5dr3fq43rilnq8lj86zhasccqlrb09h0jd6lzlr3jw";
+      };
+    };
+    "leven-3.1.0" = {
+      name = "leven";
+      packageName = "leven";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz";
+        sha512 = "3acc4jl6xib9wx3gqgq9wqab262mwjyc8d6aa7igfiyfyami7w4g59b62if7hd8w0zh8k1q3kqkwdxgnqsvyygw6wdaak93gzw5mixa";
+      };
+    };
+    "levn-0.3.0" = {
+      name = "levn";
+      packageName = "levn";
+      version = "0.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz";
+        sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
+      };
+    };
+    "load-json-file-4.0.0" = {
+      name = "load-json-file";
+      packageName = "load-json-file";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz";
+        sha1 = "2f5f45ab91e33216234fd53adab668eb4ec0993b";
+      };
+    };
+    "loader-runner-2.4.0" = {
+      name = "loader-runner";
+      packageName = "loader-runner";
+      version = "2.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz";
+        sha512 = "13mmy8rws80fp5mw0b7qwq5zvvlwq8v20hykp1npzsc5i5sw426j6sgi77js3lrqzbc8b7gjxhsrf26bi8xnn7ii8q64p2wskrspj96";
+      };
+    };
+    "loader-utils-1.2.3" = {
+      name = "loader-utils";
+      packageName = "loader-utils";
+      version = "1.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz";
+        sha512 = "1j5jpk2rz5n0365vhmgknl49zq4sav613jn87b6khghcfsj3xvm2y0zil8zai7rr7wx0fvx1w78297fyiic1yydvq34776xx3qp6jky";
+      };
+    };
+    "loader-utils-1.4.0" = {
+      name = "loader-utils";
+      packageName = "loader-utils";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz";
+        sha512 = "1sdj0mw1y0adq9fpaafpv91yz2ijx06s6fpzjfs0db47cry0q2xjcahr5aksf6vlxp7ripisvjz21hjkkdzrwh8pc3zm7vdq141czd8";
+      };
+    };
+    "locate-path-2.0.0" = {
+      name = "locate-path";
+      packageName = "locate-path";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz";
+        sha1 = "2b568b265eec944c6d9c0de9c3dbbbca0354cd8e";
+      };
+    };
+    "locate-path-3.0.0" = {
+      name = "locate-path";
+      packageName = "locate-path";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz";
+        sha512 = "3jbllbkvv54d6k6zss6spzsknz5icscyfclf377jjpndb8mmacq0v9vjr1w07zjn14gaz4d2hfi0yaqk4nvg6hbm16qi70nrkivn0zc";
+      };
+    };
+    "lodash-4.17.15" = {
+      name = "lodash";
+      packageName = "lodash";
+      version = "4.17.15";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz";
+        sha512 = "3a41cs1932x00vd7h32v6rfkaak3vhkwv4x0bg27ilhlmbpl95r3abc4vja21k42cdfprsy3sdfcp2xs02sfp1fflf7m3n2gd29q4zk";
+      };
+    };
+    "lodash.camelcase-4.3.0" = {
+      name = "lodash.camelcase";
+      packageName = "lodash.camelcase";
+      version = "4.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz";
+        sha1 = "b28aa6288a2b9fc651035c7711f65ab6190331a6";
+      };
+    };
+    "lodash.clonedeep-4.5.0" = {
+      name = "lodash.clonedeep";
+      packageName = "lodash.clonedeep";
+      version = "4.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz";
+        sha1 = "e23f3f9c4f8fbdde872529c1071857a086e5ccef";
+      };
+    };
+    "lodash.memoize-4.1.2" = {
+      name = "lodash.memoize";
+      packageName = "lodash.memoize";
+      version = "4.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz";
+        sha1 = "bcc6c49a42a2840ed997f323eada5ecd182e0bfe";
+      };
+    };
+    "lodash.sortby-4.7.0" = {
+      name = "lodash.sortby";
+      packageName = "lodash.sortby";
+      version = "4.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz";
+        sha1 = "edd14c824e2cc9c1e0b0a1b42bb5210516a42438";
+      };
+    };
+    "log-symbols-2.2.0" = {
+      name = "log-symbols";
+      packageName = "log-symbols";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz";
+        sha512 = "093j1mha2zwbfkb6cvxr94l1dsx44607vvyxadxki3j69s40n2f6x6iqs6f9rzpvvqd8anclsqdlrm3klkwxixm4k2fl8bjr4b01qjm";
+      };
+    };
+    "loglevel-1.6.7" = {
+      name = "loglevel";
+      packageName = "loglevel";
+      version = "1.6.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz";
+        sha512 = "3y57kcbhh98x86dpx7apanxgnkqf5chybr4jnwhzljd3k2n9knm5h7fp9aiv6bzpyvq1xg0qssgg3i47ddiz80h7vahfj6hb8n9x3bi";
+      };
+    };
+    "loglevelnext-1.0.5" = {
+      name = "loglevelnext";
+      packageName = "loglevelnext";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz";
+        sha512 = "3l63lnbnnsg2dgy8c89m5fxgdnl56a04hyiabic65zj4p9dsbh4jykr9jblvn8v7c7wx1a12mjv9gq69zfdfif00mw6q9pf8fmggzjp";
+      };
+    };
+    "long-4.0.0" = {
+      name = "long";
+      packageName = "long";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/long/-/long-4.0.0.tgz";
+        sha512 = "0q7w59j4asw2i6n4hwbdrcigmaz042y2hsm31brmjfp3fg465mgqjmia2giil8kxbdh5ijdx00lv4a8n8lbj6srbziqczr22hmgxhsy";
+      };
+    };
+    "longest-1.0.1" = {
+      name = "longest";
+      packageName = "longest";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz";
+        sha1 = "30a0b2da38f73770e8294a0d22e6625ed77d0097";
+      };
+    };
+    "loose-envify-1.4.0" = {
+      name = "loose-envify";
+      packageName = "loose-envify";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz";
+        sha512 = "3fhlaj5f55z0d4f45a5vsyz1r5k40qy6mfbxphjgnz8x4jx4d1g4pz4v2793viw0hk04a1a6zbiqxbjsjzhidp9jmmzhngzd8yb2awp";
+      };
+    };
+    "lowercase-keys-1.0.0" = {
+      name = "lowercase-keys";
+      packageName = "lowercase-keys";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz";
+        sha1 = "4e3366b39e7f5457e35f1324bdf6f88d0bfc7306";
+      };
+    };
+    "lowercase-keys-1.0.1" = {
+      name = "lowercase-keys";
+      packageName = "lowercase-keys";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz";
+        sha512 = "1a7qa1zn5zl1nf7i6w3299lc3biabfb0w2c30cl770l2dbldvi72nwvjdlinhx7j0ldip82sj710aprdjbmbg782i2pa3jpbgmy6qhv";
+      };
+    };
+    "lru-cache-4.1.5" = {
+      name = "lru-cache";
+      packageName = "lru-cache";
+      version = "4.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz";
+        sha512 = "3k64s8pgffvqc84ar3r2jjvxnrll916m1q6s4m2k8pq2gqvlrzy11hdhvx2662fa4x7h1hcpn9wmy4kk28rgk3sj76w2fpn8dn6armi";
+      };
+    };
+    "lru-cache-5.1.1" = {
+      name = "lru-cache";
+      packageName = "lru-cache";
+      version = "5.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz";
+        sha512 = "3vjhn04mjkxbkfb4fh7xnlghlgmqffqp5i1w2vg1ndgh5izv7nwvr8lq1n1hypfs5pm3bvbk7wf3fjm2pavld1hipz0n8rp012l14ra";
+      };
+    };
+    "make-dir-1.3.0" = {
+      name = "make-dir";
+      packageName = "make-dir";
+      version = "1.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz";
+        sha512 = "2qkk2yzlzrfwnmw8l80cn4l91rfin7fmqn81j39s32i8gzijilbmc798wy51bs3m5gqa6dgrns95gals771jbbl4s4jgdl9ni3za3fv";
+      };
+    };
+    "make-dir-2.1.0" = {
+      name = "make-dir";
+      packageName = "make-dir";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz";
+        sha512 = "12asfdw6jlwcqjli9xywj755wznjxadmh7q6abrhldss26wdsik8w39dqww20i3ilr9mjam1r80ickwzlp9w7dz15bvqa1wszwmfbrd";
+      };
+    };
+    "make-error-1.3.6" = {
+      name = "make-error";
+      packageName = "make-error";
+      version = "1.3.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz";
+        sha512 = "2glh9fqac2bycfy6gmvv1r03pr484iglvv5ry3pjm6iz43h6qnkkw2l4sz9ydyadq6hip4wyjpj9jllbshxchh8k6lg5g5vsya23idk";
+      };
+    };
+    "makeerror-1.0.11" = {
+      name = "makeerror";
+      packageName = "makeerror";
+      version = "1.0.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz";
+        sha1 = "e01a5c9109f2af79660e4e8b9587790184f5a96c";
+      };
+    };
+    "mamacro-0.0.3" = {
+      name = "mamacro";
+      packageName = "mamacro";
+      version = "0.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz";
+        sha512 = "1670fzjdl58zpljl3vblrzfz0805w0d99kdhf9rz4cgr1f2g01ibb5s5b1n7w7dqfv8lyig9zcqw2f0gsjlzxxwj4zc939fwn3k1hd8";
+      };
+    };
+    "map-age-cleaner-0.1.3" = {
+      name = "map-age-cleaner";
+      packageName = "map-age-cleaner";
+      version = "0.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz";
+        sha512 = "3gk1kdfw4z4pjghrxyn53gyb40gbk71ycv5mi2mbidwxg76mbfgkxcn88zkcrjw38mq6vn5kcarw4n5zq79ligh5k1s6gr8fgmg373c";
+      };
+    };
+    "map-cache-0.2.2" = {
+      name = "map-cache";
+      packageName = "map-cache";
+      version = "0.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz";
+        sha1 = "c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf";
+      };
+    };
+    "map-visit-1.0.0" = {
+      name = "map-visit";
+      packageName = "map-visit";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz";
+        sha1 = "ecdca8f13144e660f1b5bd41f12f3479d98dfb8f";
+      };
+    };
+    "md5.js-1.3.5" = {
+      name = "md5.js";
+      packageName = "md5.js";
+      version = "1.3.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz";
+        sha512 = "29ds70y468n42xivsz4vrgy8rp2x4nxz52z1vkd1k49556gvn74pq998s510g3jgz9972m9yxs6yk1kw752blq97b9w8gaddkwlyay6";
+      };
+    };
+    "media-typer-0.3.0" = {
+      name = "media-typer";
+      packageName = "media-typer";
+      version = "0.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz";
+        sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
+      };
+    };
+    "mem-4.3.0" = {
+      name = "mem";
+      packageName = "mem";
+      version = "4.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz";
+        sha512 = "3znrz98ggx92y1crm2y017k8lriwz4m9y4w451wm0h1jzsq7jgpafymdvgpznvx07l3xw8inznd78zzwyxdzhb0aq8scki9iwdrnzd9";
+      };
+    };
+    "memory-fs-0.4.1" = {
+      name = "memory-fs";
+      packageName = "memory-fs";
+      version = "0.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz";
+        sha1 = "3a9a20b8462523e447cfbc7e8bb80ed667bfc552";
+      };
+    };
+    "memory-fs-0.5.0" = {
+      name = "memory-fs";
+      packageName = "memory-fs";
+      version = "0.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz";
+        sha512 = "0cgni6pl3js3s6ylnj3j9sydf6z5sbnpyi42xdh4437rd6c7xgbapzdq84wn8dzxrcf7sva66z7m6mna61sdagfs41078aa9rsjn3cc";
+      };
+    };
+    "merge-descriptors-1.0.1" = {
+      name = "merge-descriptors";
+      packageName = "merge-descriptors";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz";
+        sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61";
+      };
+    };
+    "merge-stream-2.0.0" = {
+      name = "merge-stream";
+      packageName = "merge-stream";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz";
+        sha512 = "3gyvijjr3va5jwglqgv7sqxm4a6nhzhj32sl68ffjf8axkzi5z25g0nl2r2mvw1kjs3z49wxjdclljkk4whzpqka4vzjg9fwylgzfv9";
+      };
+    };
+    "methods-1.1.2" = {
+      name = "methods";
+      packageName = "methods";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz";
+        sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
+      };
+    };
+    "micromatch-3.1.10" = {
+      name = "micromatch";
+      packageName = "micromatch";
+      version = "3.1.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz";
+        sha512 = "1r9rsac8gdslsplya0cnzyk6q0bh7m0wnxccdisacr5327k5k0v6f48dzp0022z8qqpzpvxw7sv1gzhvrqn6v5sz7qcvx37by1a8s1i";
+      };
+    };
+    "miller-rabin-4.0.1" = {
+      name = "miller-rabin";
+      packageName = "miller-rabin";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz";
+        sha512 = "12277knznlw4myxmgg6vgkrwmrhj9dyniscrlph3s08ndi2q25v3wrv6rwanvz29v5k5x756xa5yif4xllrghpn3jqaamnr3cp5ypnp";
+      };
+    };
+    "mime-1.6.0" = {
+      name = "mime";
+      packageName = "mime";
+      version = "1.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz";
+        sha512 = "1x901mk5cdib4xp27v4ivwwr7mhy64r4rk953bzivi5p9lf2bhw88ra2rhkd254xkdx2d3q30zkq239vc4yx4pfsj4hpys8rbr6fif7";
+      };
+    };
+    "mime-2.4.4" = {
+      name = "mime";
+      packageName = "mime";
+      version = "2.4.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz";
+        sha512 = "0c4qs0w88nqz2v7441rw9bbsgrsh50cifwmqm2i7c96yz2ncdy35cb5g42zhr6z0wmqqcwq5la04nnf1n4y3zncvgyg8b721hvnc71d";
+      };
+    };
+    "mime-db-1.43.0" = {
+      name = "mime-db";
+      packageName = "mime-db";
+      version = "1.43.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz";
+        sha512 = "36x3p6lll5v1g7na92kbba0bpcl36i1argsqn8iy4mgz3zh3llnqhzhfw0l26jqcb0mh9rhhmrx718kvqzchga6y79qdg9884c6r5zv";
+      };
+    };
+    "mime-types-2.1.26" = {
+      name = "mime-types";
+      packageName = "mime-types";
+      version = "2.1.26";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz";
+        sha512 = "1cxsgrndjg6jyfqzm74hv6cmy9lil52f1kzkq2niknaiqz20p3yiw0fpgsyld2zrbxr9abpdabz1q6nqa50xr9a0cmbjbi0cqymlnnk";
+      };
+    };
+    "mimic-fn-1.2.0" = {
+      name = "mimic-fn";
+      packageName = "mimic-fn";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz";
+        sha512 = "1clrrqw75rmpkw0x53axy8va2hq2gzynz9zb58m0xv1nh3lg81cv4dfdy7pk9vrlb9ydwmj6klpicwkv2bjx3m8aj4fi2ph3jxkizwd";
+      };
+    };
+    "mimic-fn-2.1.0" = {
+      name = "mimic-fn";
+      packageName = "mimic-fn";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz";
+        sha512 = "1r8csnc32c6rrvy8d5d1g33gba52m1863wdwl7qbancmzn795726im9mrwp20k3d8pl4x4msp7n6wpldvcwkmk5y4cy0h84ka9wx9is";
+      };
+    };
+    "mimic-response-1.0.1" = {
+      name = "mimic-response";
+      packageName = "mimic-response";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz";
+        sha512 = "32nwz24nh1f2nbpk8i638ff8hsg1ajmc6746abkssjr951z28362k5a92dd1cfr7bd1l9f507cn0pbam04ixfgsaygskv87g6v1r4cg";
+      };
+    };
+    "minimalistic-assert-1.0.1" = {
+      name = "minimalistic-assert";
+      packageName = "minimalistic-assert";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz";
+        sha512 = "3y39pa1xxg7j49vya7xca4p1mg89d0df56hj4yjhpyhmza3g5qvpgp11xs11wkd48zzy7ym970jfbn0ppimmczpijns249j7q05rljj";
+      };
+    };
+    "minimalistic-crypto-utils-1.0.1" = {
+      name = "minimalistic-crypto-utils";
+      packageName = "minimalistic-crypto-utils";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz";
+        sha1 = "f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a";
+      };
+    };
+    "minimatch-3.0.4" = {
+      name = "minimatch";
+      packageName = "minimatch";
+      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";
+      };
+    };
+    "minimist-1.2.5" = {
+      name = "minimist";
+      packageName = "minimist";
+      version = "1.2.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz";
+        sha512 = "0pif0kjsr0cdm73cyicn9xdx9zkly45w4akmyfa39lkaf6lzysfr8kr145p54wjk26pbsk0w0qfdds3k4bxy4wl5l210i1b8qsngkql";
+      };
+    };
+    "mississippi-2.0.0" = {
+      name = "mississippi";
+      packageName = "mississippi";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz";
+        sha512 = "2gnigixsj38hrqchkf6k8wqywihq6l14pg0qb23x3qpjn56vybljv3nz1z7cbzhl952h1xfw28vsqm09pjhpv9zs9sm43rdxazkqync";
+      };
+    };
+    "mississippi-3.0.0" = {
+      name = "mississippi";
+      packageName = "mississippi";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz";
+        sha512 = "2895y9fw0xa9bmwbbkv3ziz5gnvr2b9k6kgh1b815ppwhgpcnbzsmn3bjvd2c1852hfakgnxw5hbn8kr8ff1pfbnm8x0lk3qm5gb3n7";
+      };
+    };
+    "mixin-deep-1.3.2" = {
+      name = "mixin-deep";
+      packageName = "mixin-deep";
+      version = "1.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz";
+        sha512 = "08fzp03g97vcq1dm4qs3kfjbazfs8h2m99bzdhn9caddpi4xr9bw9n9adlrv24qwfdw2jphwfhjszdwnykawd3ysj4ihp76zygh66jr";
+      };
+    };
+    "mkdirp-0.5.1" = {
+      name = "mkdirp";
+      packageName = "mkdirp";
+      version = "0.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
+        sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
+      };
+    };
+    "moment-2.24.0" = {
+      name = "moment";
+      packageName = "moment";
+      version = "2.24.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz";
+        sha512 = "111s7ki890wwh47hr44ps1q5vsh23jpp56dlgvyzz7hg71np9xkrc7k683qvfs7zyijb9fdcwzvinjcnbz36lhn0hg2hhknm7xxypkd";
+      };
+    };
+    "moment-timezone-0.5.28" = {
+      name = "moment-timezone";
+      packageName = "moment-timezone";
+      version = "0.5.28";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.28.tgz";
+        sha512 = "0zr752vsxhfbfh884hzz8xbqkvs2l5778qwrkl7gxihdasi2ni80w61hvp858xclvgmcqgl2v8z1pjkffj5cbcihdb8aa1jy1k68cjc";
+      };
+    };
+    "move-concurrently-1.0.1" = {
+      name = "move-concurrently";
+      packageName = "move-concurrently";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz";
+        sha1 = "be2c005fda32e0b29af1f05d7c4b33214c701f92";
+      };
+    };
+    "ms-2.0.0" = {
+      name = "ms";
+      packageName = "ms";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
+        sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
+      };
+    };
+    "ms-2.1.1" = {
+      name = "ms";
+      packageName = "ms";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz";
+        sha512 = "352z145jr1zx0w6kmlz2jxcaw6j2pwwg9va3x4gk731zw1agka2b213avw12zx6hgn071ibm0f3p80n5cdv896npay4s6jwbrv7w2mn";
+      };
+    };
+    "ms-2.1.2" = {
+      name = "ms";
+      packageName = "ms";
+      version = "2.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
+        sha512 = "3dqfiiw6nxvvi24fndbzlccnjcas99bsd1kz5m2r78lzgpp6vx57jzbmxq3k1m7bsw88rwra0n4848l720fxxn5x20djck3wp3hysdh";
+      };
+    };
+    "multicast-dns-6.2.3" = {
+      name = "multicast-dns";
+      packageName = "multicast-dns";
+      version = "6.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz";
+        sha512 = "3m42kr8y2s1krl4gzb5xsa9v3h01xalvrgdkj99gyfaq7761asmj5m6kzm70mxb22125gia12g7rmarnzmh09403j8j2cyvx7jqjblf";
+      };
+    };
+    "multicast-dns-service-types-1.1.0" = {
+      name = "multicast-dns-service-types";
+      packageName = "multicast-dns-service-types";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz";
+        sha1 = "899f11d9686e5e05cb91b35d5f0e63b773cfc901";
+      };
+    };
+    "mz-2.7.0" = {
+      name = "mz";
+      packageName = "mz";
+      version = "2.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz";
+        sha512 = "3cpmwzmngnmxhklvicnsbl5dchvsy0yikzgf705cq1cplyps3waa03xbjp306bjf167wnplibwki0csnavz98dihq2877g7xqs4dkfg";
+      };
+    };
+    "nan-2.14.0" = {
+      name = "nan";
+      packageName = "nan";
+      version = "2.14.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz";
+        sha512 = "115f4m91pjscflwskc29clsspd2z02gdbz0dbj63ja8bf67nraw14gvppl4872y9z2f5vbjlkpg1i4625zvalx3gp04vvn2gs7qblr0";
+      };
+    };
+    "nanomatch-1.2.13" = {
+      name = "nanomatch";
+      packageName = "nanomatch";
+      version = "1.2.13";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz";
+        sha512 = "04al0wvh9hw1p9bblk847c5nbi3lcjz2pg5yzpqdzgllk57firrqinn4yk169iddaagdf9s5l987xh43z87w3hm9h0pqv0i7pcix6ky";
+      };
+    };
+    "natural-compare-1.4.0" = {
+      name = "natural-compare";
+      packageName = "natural-compare";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz";
+        sha1 = "4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7";
+      };
+    };
+    "negotiator-0.6.2" = {
+      name = "negotiator";
+      packageName = "negotiator";
+      version = "0.6.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz";
+        sha512 = "0xi79rad0khwah5v2k6pvh8ajjgi7hp3zlkg6gk11pv70ydcq7li0kzcv1gnaf13gmblzhvx7hxs2nhypphb0sp4cggiy4ympndr5c5";
+      };
+    };
+    "neo-async-2.6.1" = {
+      name = "neo-async";
+      packageName = "neo-async";
+      version = "2.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz";
+        sha512 = "1kvffl97cs76iidch6z424p50m0wdryx6h6b1jdgr71bfg035szlxcdl6dz9jy71aj8msvprdq2ilbs9jisbim3g1b4l2bfy3qsc9lb";
+      };
+    };
+    "next-tick-1.0.0" = {
+      name = "next-tick";
+      packageName = "next-tick";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz";
+        sha1 = "ca86d1fe8828169b0120208e3dc8424b9db8342c";
+      };
+    };
+    "nice-try-1.0.5" = {
+      name = "nice-try";
+      packageName = "nice-try";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz";
+        sha512 = "0swp764n5mcgqfjbm3hsw9iayqy46490y4lvqyk6www0a02bw130mji8lvsvlr34sc29rai5i4vpwwhh76mzplf6ljrlvwyszjphy6n";
+      };
+    };
+    "node-forge-0.8.5" = {
+      name = "node-forge";
+      packageName = "node-forge";
+      version = "0.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz";
+        sha512 = "3nzl12m7r7d345xjm7a1kq3yjdwfa9x892djy3444h7jaav25zmzh0bcg2f24ympwh7qmyihgpx7b2dgpka52nw5k2zw9vydchi0lxw";
+      };
+    };
+    "node-forge-0.9.0" = {
+      name = "node-forge";
+      packageName = "node-forge";
+      version = "0.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz";
+        sha512 = "0lhlm8x38i28zwmjycgdcyzcqlb0x3z8scjx7vm3s4ypj99bfj7pmv18yxjsnz532z7g9li2aa1x54hbv61dmvbvm4yj3z9ml6rl17c";
+      };
+    };
+    "node-int64-0.4.0" = {
+      name = "node-int64";
+      packageName = "node-int64";
+      version = "0.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz";
+        sha1 = "87a9065cdb355d3182d8f94ce11188b825c68a3b";
+      };
+    };
+    "node-jose-1.1.3" = {
+      name = "node-jose";
+      packageName = "node-jose";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/node-jose/-/node-jose-1.1.3.tgz";
+        sha512 = "3qb1g8mkwn2vfqj84a62sp2dfg52334f3dj7ab240w51qrf2wl2s62qjvjz46jid9r3dmasxs0hp1zbjgnqkbg9kiii8nl6if5mzslj";
+      };
+    };
+    "node-libs-browser-2.2.1" = {
+      name = "node-libs-browser";
+      packageName = "node-libs-browser";
+      version = "2.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz";
+        sha512 = "3jhlmpgvcnjkg1bh3qp6rqp4a4plsih4bcfqkg0by0acj58r2m1x1jlsgw1k114920vlsvwl563lfjh844mpm02ykcs14gxq47xrz47";
+      };
+    };
+    "node-modules-regexp-1.0.0" = {
+      name = "node-modules-regexp";
+      packageName = "node-modules-regexp";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz";
+        sha1 = "8d9dbe28964a4ac5712e9131642107c71e90ec40";
+      };
+    };
+    "node-notifier-5.4.3" = {
+      name = "node-notifier";
+      packageName = "node-notifier";
+      version = "5.4.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz";
+        sha512 = "3qq3cn12n130r2k8aldr2fn3afv21m8ichf87yj7nfp251ypmb5kv9vxs70k93g9nr6164l7crvyzmw4j6b3lr8yj5f739qrcch319k";
+      };
+    };
+    "nopt-4.0.3" = {
+      name = "nopt";
+      packageName = "nopt";
+      version = "4.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz";
+        sha512 = "0mb9va0ag1n8v5c2lhza37prcw4iyrmbw5n6yglk1kcg95xwqi9ng5dqwr17h63sl5dba2rnwwrzz7dnfvkx5z75h4j7d9kag0qdxha";
+      };
+    };
+    "normalize-package-data-2.5.0" = {
+      name = "normalize-package-data";
+      packageName = "normalize-package-data";
+      version = "2.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz";
+        sha512 = "1wbwhlsm965n61y23wrm50ric9l7rig90wvx7hjdl34np6n1bbqcc67wgm494z303s6y5aj4xjyism3n6kikp40iz9qaizlfhvqr47z";
+      };
+    };
+    "normalize-path-2.1.1" = {
+      name = "normalize-path";
+      packageName = "normalize-path";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz";
+        sha1 = "1ab28b556e198363a8c1a6f7e6fa20137fe6aed9";
+      };
+    };
+    "normalize-path-3.0.0" = {
+      name = "normalize-path";
+      packageName = "normalize-path";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz";
+        sha512 = "0n301s7qa4645iyk3zpcgin8r19p0p8h8g50c3mnnrl9n3m9rpyxv79hjl6miix9daq12s69am1sbskhqnzbabmn2id0nippgj6rrp9";
+      };
+    };
+    "normalize-url-2.0.1" = {
+      name = "normalize-url";
+      packageName = "normalize-url";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz";
+        sha512 = "0rykwifg14xfgm9m6md48rkqqxa2cya4xdsv7jjciacis2nz6dzaccpzyldlpvy14rvihpxbdiysfn49a8x8x5jw84klmxzh9di98qg";
+      };
+    };
+    "npm-run-path-2.0.2" = {
+      name = "npm-run-path";
+      packageName = "npm-run-path";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz";
+        sha1 = "35a9232dfa35d7067b4cb2ddf2357b1871536c5f";
+      };
+    };
+    "number-is-nan-1.0.1" = {
+      name = "number-is-nan";
+      packageName = "number-is-nan";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz";
+        sha1 = "097b602b53422a522c1afb8790318336941a011d";
+      };
+    };
+    "nwsapi-2.2.0" = {
+      name = "nwsapi";
+      packageName = "nwsapi";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz";
+        sha512 = "22vnwmwzxgzp9flhivwzrsa2jr754ysi133p4wdqdfgvg1mvhbjh1hv7ahbl7i2m7zv4vs6higga9c1gydywvwsi53y47qqvjsilq47";
+      };
+    };
+    "oauth-sign-0.9.0" = {
+      name = "oauth-sign";
+      packageName = "oauth-sign";
+      version = "0.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz";
+        sha512 = "1jz644r7ybsq688ifahm64ih3ljqjjskm533bgir20pvc350f9cl0z162scih0r1idx8lpw5f8hxa2pkf0lhbdhr5y6ak2ga5863v3x";
+      };
+    };
+    "object-assign-4.1.1" = {
+      name = "object-assign";
+      packageName = "object-assign";
+      version = "4.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
+        sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
+      };
+    };
+    "object-copy-0.1.0" = {
+      name = "object-copy";
+      packageName = "object-copy";
+      version = "0.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz";
+        sha1 = "7e7d858b781bd7c991a41ba975ed3812754e998c";
+      };
+    };
+    "object-hash-1.3.1" = {
+      name = "object-hash";
+      packageName = "object-hash";
+      version = "1.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz";
+        sha512 = "06crm6ynp4rxakk4frrb4kjmi758r38fs5h0f6b7giyxhj0dghb6mdx7sbp0nhnk2w8cyb1bli07d9nbm086i34j8yx641qjpzawarr";
+      };
+    };
+    "object-inspect-1.7.0" = {
+      name = "object-inspect";
+      packageName = "object-inspect";
+      version = "1.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz";
+        sha512 = "19lmsxagwl8zzqckw6p0bdjwjbq2bshicnw78az9ka40d0gjghmdm0ify1n3857fxadv43c6v0g27rk1dl514iwh40a5i3mv0fl9fkb";
+      };
+    };
+    "object-keys-1.1.1" = {
+      name = "object-keys";
+      packageName = "object-keys";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz";
+        sha512 = "0nf2rr25ncya39v7cq274x3w4drfbdrc3iqdwd017s1wndwh9plsjagbvhl6j6l6piipprdsvgfx4vfz8q2piz7bi4bjcll8d4h9q1n";
+      };
+    };
+    "object-visit-1.0.1" = {
+      name = "object-visit";
+      packageName = "object-visit";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz";
+        sha1 = "f79c4493af0c5377b59fe39d395e41042dd045bb";
+      };
+    };
+    "object.assign-4.1.0" = {
+      name = "object.assign";
+      packageName = "object.assign";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz";
+        sha512 = "3krdp08gvbxvipalq64qy7bm86znxxdb7ap6bjki235qs17i9fsn6hqd22ga31sqyqa6iyy5xjfnnqc7lsck1kaybwsh154mrxcj4bv";
+      };
+    };
+    "object.getownpropertydescriptors-2.1.0" = {
+      name = "object.getownpropertydescriptors";
+      packageName = "object.getownpropertydescriptors";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz";
+        sha512 = "1b08dy2xs3gqhwviks5245b0m3fa6kkdcqi8wldr5cfvkpgwbvdx474k9y5cjnsf2z075gysifxsc39i59fslxrl55kgpa03xmcx7b7";
+      };
+    };
+    "object.pick-1.3.0" = {
+      name = "object.pick";
+      packageName = "object.pick";
+      version = "1.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz";
+        sha1 = "87a10ac4c1694bd2e1cbf53591a66141fb5dd747";
+      };
+    };
+    "obuf-1.1.2" = {
+      name = "obuf";
+      packageName = "obuf";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz";
+        sha512 = "0vcjqppr8sr1in2haifxl9q8v6kgn8pddc4ffkjbx5n2fasb3kdrx7mybkfxqdaqfch2hqrwa87rrwllqd5lrmx73md609682xp0z9x";
+      };
+    };
+    "oidc-token-hash-3.0.2" = {
+      name = "oidc-token-hash";
+      packageName = "oidc-token-hash";
+      version = "3.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-3.0.2.tgz";
+        sha512 = "127wvn9pnb5jjxqhkr54w07z6s0njlqvrv4k8cnn2vf5y4hpbykcl2cyn8yw8zwqhzv6bqikhza5nkhmv1zm8kgpazddzgj9zryjg3m";
+      };
+    };
+    "on-finished-2.3.0" = {
+      name = "on-finished";
+      packageName = "on-finished";
+      version = "2.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz";
+        sha1 = "20f1336481b083cd75337992a16971aa2d906947";
+      };
+    };
+    "on-headers-1.0.2" = {
+      name = "on-headers";
+      packageName = "on-headers";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz";
+        sha512 = "2n6994y8y4b146a5wpzzgw779yc227cqkmwsifc3fbn2kc9dzypjigqf72bpgsqrk7gs93l6fk4iqdk752jnsnpr89j58sbabw09455";
+      };
+    };
+    "once-1.4.0" = {
+      name = "once";
+      packageName = "once";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
+        sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
+      };
+    };
+    "onetime-2.0.1" = {
+      name = "onetime";
+      packageName = "onetime";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz";
+        sha1 = "067428230fd67443b2794b22bba528b6867962d4";
+      };
+    };
+    "only-0.0.2" = {
+      name = "only";
+      packageName = "only";
+      version = "0.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/only/-/only-0.0.2.tgz";
+        sha1 = "2afde84d03e50b9a8edc444e30610a70295edfb4";
+      };
+    };
+    "opener-1.5.1" = {
+      name = "opener";
+      packageName = "opener";
+      version = "1.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz";
+        sha512 = "2yg0r89kjihas5gr319kw75b6bjalmhpy6yfabd8g7vnldsddnnwsdbzb3942c9c9zrbz8pwa17an3rkcb8nwdd8lw72l9njz5i51l2";
+      };
+    };
+    "openid-client-2.5.0" = {
+      name = "openid-client";
+      packageName = "openid-client";
+      version = "2.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/openid-client/-/openid-client-2.5.0.tgz";
+        sha512 = "339via1h7paxj3qwnzzs6p7x4r3p51k55pc6z85dpzk2gslhp84fnwa4scgcaib9xai7smcc5y7vgb88p20awllvda6v8a4ph7lay5p";
+      };
+    };
+    "opn-5.5.0" = {
+      name = "opn";
+      packageName = "opn";
+      version = "5.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz";
+        sha512 = "2qa90jg1bw4yx1an6vbx2cp7lpk6xwa94yrbr6mkpl2h95wl4iinlmlzzy2z5ihm79d4ypkjkf3w5m7cjl79775amsbav5x021fk89y";
+      };
+    };
+    "optionator-0.8.3" = {
+      name = "optionator";
+      packageName = "optionator";
+      version = "0.8.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz";
+        sha512 = "1n905a6d9xvmaqhy1xvpk4m7amkpx4wmky0w9764biihzkgachffm975qq5yqy4qjri2pbrrck994dsnz4ipmv4kbb7b4wx02jbv1gq";
+      };
+    };
+    "ora-3.4.0" = {
+      name = "ora";
+      packageName = "ora";
+      version = "3.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz";
+        sha512 = "1i331n8qj60jz6f51yfczwaspwsj57sykmgj34cwzhvlp761l2rx1iwqd247xys1749hhddfp6mmzznfp32dxqkjkl5ffsvsfwhgp3q";
+      };
+    };
+    "original-1.0.2" = {
+      name = "original";
+      packageName = "original";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/original/-/original-1.0.2.tgz";
+        sha512 = "038qn5613vi5gjik4pmng7zf2ib4w81hjyzy9dhflj7kw1p1ll09nq63x9rnkyyflkv33lq8bx0fbw1gzlpp4asy24l7adam2bma847";
+      };
+    };
+    "os-browserify-0.3.0" = {
+      name = "os-browserify";
+      packageName = "os-browserify";
+      version = "0.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz";
+        sha1 = "854373c7f5c2315914fc9bfc6bd8238fdda1ec27";
+      };
+    };
+    "os-homedir-1.0.2" = {
+      name = "os-homedir";
+      packageName = "os-homedir";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz";
+        sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
+      };
+    };
+    "os-locale-3.1.0" = {
+      name = "os-locale";
+      packageName = "os-locale";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz";
+        sha512 = "3frcfnhc4914snsnfqyqrz253i5dd31202gbx4dzkp6bvc8f7wnqhfyc89zp662v016gdqa7wb1z2g6p8nzk6cxzwscwn0qii3pgjb7";
+      };
+    };
+    "os-tmpdir-1.0.2" = {
+      name = "os-tmpdir";
+      packageName = "os-tmpdir";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
+        sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
+      };
+    };
+    "osenv-0.1.5" = {
+      name = "osenv";
+      packageName = "osenv";
+      version = "0.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz";
+        sha512 = "3ddw0y41pxv08ls5xhmq1bi81hppjbr45k78cjfx99vznh5znrj5g1b1wab9caj1mqlsvmfms0zm9cfb47ygm0d8wv5fccx8049q9fh";
+      };
+    };
+    "p-any-1.1.0" = {
+      name = "p-any";
+      packageName = "p-any";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-any/-/p-any-1.1.0.tgz";
+        sha512 = "3da1hqkqhwx9xiw283nnq04pvsj1a69k7k0np5126v33dmpgxyhg19s99bz6djzd6sp713yg02h3h636wlgi9v2099rlrq2mrajvz8i";
+      };
+    };
+    "p-cancelable-0.4.1" = {
+      name = "p-cancelable";
+      packageName = "p-cancelable";
+      version = "0.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz";
+        sha512 = "02ipk9sgz2q0msm9h53lxbjvqprh9k6zj8q21dvczv6p6a5d4q5yqcmwj6xm0icmdc94n42plfmwlymnqn4f15pgci5j1zgq81vbmhw";
+      };
+    };
+    "p-defer-1.0.0" = {
+      name = "p-defer";
+      packageName = "p-defer";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz";
+        sha1 = "9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c";
+      };
+    };
+    "p-each-series-1.0.0" = {
+      name = "p-each-series";
+      packageName = "p-each-series";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz";
+        sha1 = "930f3d12dd1f50e7434457a22cd6f04ac6ad7f71";
+      };
+    };
+    "p-finally-1.0.0" = {
+      name = "p-finally";
+      packageName = "p-finally";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz";
+        sha1 = "3fbcfb15b899a44123b34b6dcc18b724336a2cae";
+      };
+    };
+    "p-is-promise-1.1.0" = {
+      name = "p-is-promise";
+      packageName = "p-is-promise";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz";
+        sha1 = "9c9456989e9f6588017b0434d56097675c3da05e";
+      };
+    };
+    "p-is-promise-2.1.0" = {
+      name = "p-is-promise";
+      packageName = "p-is-promise";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz";
+        sha512 = "0z3jpi001p4scg2h40kyy7mjvscz8l9mpdp79lhk9b19lyiz140gbwi8963dr5nrysmkrl0hy52v6ikg2wzfsmk8m6ccasgak1b8xb3";
+      };
+    };
+    "p-limit-1.3.0" = {
+      name = "p-limit";
+      packageName = "p-limit";
+      version = "1.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz";
+        sha512 = "3sh18calqxbww99pxc84hldflmj0i915g8npihlmazw8wjqabihi9475v0ll3fhx44sxn35j014j1k5d2xr73q3mpwkmx09n2q1gxxy";
+      };
+    };
+    "p-limit-2.2.2" = {
+      name = "p-limit";
+      packageName = "p-limit";
+      version = "2.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz";
+        sha512 = "36v4kvifp6msn6gaal1pgwy5qi56fbv8295221a6araml7nzxsnw2jfy7i6k7ybxy3dida9xxnyx447s8i8f15m27xklacwfz27wr2q";
+      };
+    };
+    "p-locate-2.0.0" = {
+      name = "p-locate";
+      packageName = "p-locate";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz";
+        sha1 = "20a0103b222a70c8fd39cc2e580680f3dde5ec43";
+      };
+    };
+    "p-locate-3.0.0" = {
+      name = "p-locate";
+      packageName = "p-locate";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz";
+        sha512 = "14sa2r3zdhvy3sq757d4l21nxrlb7picyigb8zm956bbjadcv22chrfa95wzzrf28z0cyj62b6yihhdc9508q82gs2q3yz8yk1pdvf7";
+      };
+    };
+    "p-map-2.1.0" = {
+      name = "p-map";
+      packageName = "p-map";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz";
+        sha512 = "0bx813aqd3627xffp035h9nimfd19i0l6may47yd0k7x2bngiyp8z31im58ac1nnxy3gdb3yiilagbyqlb7qwc8wdw06f3wjwmgqxnb";
+      };
+    };
+    "p-reduce-1.0.0" = {
+      name = "p-reduce";
+      packageName = "p-reduce";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz";
+        sha1 = "18c2b0dd936a4690a529f8231f58a0fdb6a47dfa";
+      };
+    };
+    "p-retry-3.0.1" = {
+      name = "p-retry";
+      packageName = "p-retry";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz";
+        sha512 = "3gknqxqyn23vmgcqsvnvspzynkbkfn74f3plq72wj54kcyy5f3mbq3lw8pj2gwpmbkqcv7w0wvk3vv54dlny5j5dgv48khkwviqckjw";
+      };
+    };
+    "p-some-2.0.1" = {
+      name = "p-some";
+      packageName = "p-some";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-some/-/p-some-2.0.1.tgz";
+        sha1 = "65d87c8b154edbcf5221d167778b6d2e150f6f06";
+      };
+    };
+    "p-timeout-2.0.1" = {
+      name = "p-timeout";
+      packageName = "p-timeout";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz";
+        sha512 = "0h1wg3bw3pyf3vlnxxfnrs3h33lwbx5n1lz4cz8ivh7bi8vjd6makxf6p1xz1d70ww3gj2ghryhbg6w1myxacgirk51ym23qzksdizk";
+      };
+    };
+    "p-try-1.0.0" = {
+      name = "p-try";
+      packageName = "p-try";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz";
+        sha1 = "cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3";
+      };
+    };
+    "p-try-2.2.0" = {
+      name = "p-try";
+      packageName = "p-try";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz";
+        sha512 = "1skmb50xzdk3qzd1f9l5mw8xp29frkizl63bhb9l1amivqybqb23n2824906vx790hjlwyhhrfzpzr5xr6ilzvy1xyl0ly0ah0wz2a7";
+      };
+    };
+    "pako-1.0.11" = {
+      name = "pako";
+      packageName = "pako";
+      version = "1.0.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz";
+        sha512 = "1imm2ygnj1himskq6lblzdh3ngc6p9gkvhrbzivalqf3nwafzfglpmbh8wkaz0rsiaxh67jzxbb16m2ygapfcnfwqg9gkdqzkqc24p2";
+      };
+    };
+    "parallel-transform-1.2.0" = {
+      name = "parallel-transform";
+      packageName = "parallel-transform";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz";
+        sha512 = "35gr4098wc5ibbrpckgva8l9v50z6mcii4y3kv6wc1ymz3aj2i444y3m2qm2ngf0k02ylqkg3gn7g6awkqfs56ppljy5wmpifcd4srz";
+      };
+    };
+    "parse-asn1-5.1.5" = {
+      name = "parse-asn1";
+      packageName = "parse-asn1";
+      version = "5.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz";
+        sha512 = "16n59f599pq8832a6c5wyxnqdf4vrqrdnclzs6vp9m2z2h9qmxamjk6xcrl1aal758jyba0pvyz1bkf7npm7achfxxa29jwaygihhwf";
+      };
+    };
+    "parse-json-4.0.0" = {
+      name = "parse-json";
+      packageName = "parse-json";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz";
+        sha1 = "be35f5425be1f7f6c747184f98a788cb99477ee0";
+      };
+    };
+    "parse-passwd-1.0.0" = {
+      name = "parse-passwd";
+      packageName = "parse-passwd";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz";
+        sha1 = "6d5b934a456993b23d37f40a382d6f1666a8e5c6";
+      };
+    };
+    "parse5-4.0.0" = {
+      name = "parse5";
+      packageName = "parse5";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz";
+        sha512 = "0a10cnny1cy9csxrw2736fjbhqp0jqv8hnghr7gz9jrlkclw91f8rzg1173b43b3dbc1qq68g7vy4hq4b45r3bmw5j52kvpwxw7pdjn";
+      };
+    };
+    "parseurl-1.3.3" = {
+      name = "parseurl";
+      packageName = "parseurl";
+      version = "1.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz";
+        sha512 = "2lzxqjq4zp60k9gbskpqz7pr1yvb0c6nygd42sia7n6km2gc0cc844nlc5d6r9sshrjhjvs284143jzvz9wzd4r6xr9dz2k24xrwb0a";
+      };
+    };
+    "pascalcase-0.1.1" = {
+      name = "pascalcase";
+      packageName = "pascalcase";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz";
+        sha1 = "b363e55e8006ca6fe21784d2db22bd15d7917f14";
+      };
+    };
+    "path-browserify-0.0.1" = {
+      name = "path-browserify";
+      packageName = "path-browserify";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz";
+        sha512 = "2avzhwqw37c6l7a0f276z7qzchzhwppinxhgg6q7by5bskwb7q7sfhwijb6fx4ingbdzb4i1pw6la5pg0izb5s4z69268278gil1ah5";
+      };
+    };
+    "path-dirname-1.0.2" = {
+      name = "path-dirname";
+      packageName = "path-dirname";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz";
+        sha1 = "cc33d24d525e099a5388c0336c6e32b9160609e0";
+      };
+    };
+    "path-exists-3.0.0" = {
+      name = "path-exists";
+      packageName = "path-exists";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz";
+        sha1 = "ce0ebeaa5f78cb18925ea7d810d7b59b010fd515";
+      };
+    };
+    "path-is-absolute-1.0.1" = {
+      name = "path-is-absolute";
+      packageName = "path-is-absolute";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
+        sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
+      };
+    };
+    "path-is-inside-1.0.2" = {
+      name = "path-is-inside";
+      packageName = "path-is-inside";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz";
+        sha1 = "365417dede44430d1c11af61027facf074bdfc53";
+      };
+    };
+    "path-key-2.0.1" = {
+      name = "path-key";
+      packageName = "path-key";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz";
+        sha1 = "411cadb574c5a140d3a4b1910d40d80cc9f40b40";
+      };
+    };
+    "path-parse-1.0.6" = {
+      name = "path-parse";
+      packageName = "path-parse";
+      version = "1.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz";
+        sha512 = "37qw5986wccpwwqckqky509s4nd6zwv200s9r2v6mcf5nsyxgf2x00m4yp918mkkz84sdh4q0kjbg0hhfq4flpz0l6v47hvc57qwa8r";
+      };
+    };
+    "path-to-regexp-0.1.7" = {
+      name = "path-to-regexp";
+      packageName = "path-to-regexp";
+      version = "0.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
+        sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c";
+      };
+    };
+    "path-to-regexp-1.8.0" = {
+      name = "path-to-regexp";
+      packageName = "path-to-regexp";
+      version = "1.8.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz";
+        sha512 = "1a1s16c1sx28yq8nh8sqkj9izaypszmxfk27x5hl1wid9611b5viffw9vbwqw6sik20ksgmh18dqndglbvq82dii4jl0aal353ck3cz";
+      };
+    };
+    "path-type-3.0.0" = {
+      name = "path-type";
+      packageName = "path-type";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz";
+        sha512 = "2z1csf4c3fmlwl0ahk533z5zqkjdf36ccfx11kakl9xran9f5asxm4cxjq4lx1kwqdp8gki786cgpldvgrkvfc7pcvh07j5ssqm8rjg";
+      };
+    };
+    "pbkdf2-3.0.17" = {
+      name = "pbkdf2";
+      packageName = "pbkdf2";
+      version = "3.0.17";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz";
+        sha512 = "2s4nd3yv3kkyywvh5rkrvbr6w2h6a4q786v548w895ralcq9cllqzyxr0jgxf911k3zpmzycimsg3ggww3lkrhd3bk9wribrgjaby2k";
+      };
+    };
+    "performance-now-2.1.0" = {
+      name = "performance-now";
+      packageName = "performance-now";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
+        sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
+      };
+    };
+    "pify-2.3.0" = {
+      name = "pify";
+      packageName = "pify";
+      version = "2.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz";
+        sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
+      };
+    };
+    "pify-3.0.0" = {
+      name = "pify";
+      packageName = "pify";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz";
+        sha1 = "e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176";
+      };
+    };
+    "pify-4.0.1" = {
+      name = "pify";
+      packageName = "pify";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz";
+        sha512 = "3d9a1zsv7ca8ffpp7ffl67vp0ahiq78ix1jl21b4nfklinh2ilwh6c45f93syclab0b49p3cfq8d4agpphrbmf6xgfxgzjv268387xq";
+      };
+    };
+    "pinkie-2.0.4" = {
+      name = "pinkie";
+      packageName = "pinkie";
+      version = "2.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz";
+        sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
+      };
+    };
+    "pinkie-promise-2.0.1" = {
+      name = "pinkie-promise";
+      packageName = "pinkie-promise";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
+        sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
+      };
+    };
+    "pirates-4.0.1" = {
+      name = "pirates";
+      packageName = "pirates";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz";
+        sha512 = "0caxkzsq2j5ypg50bxyjcbyz66cpicl6gay0pzaskr5gwjf6m239v6qmydj5kwr15n1j5mdf8n24q22cnn4rxp7gmk7n8yc6qnnmqss";
+      };
+    };
+    "pkg-dir-2.0.0" = {
+      name = "pkg-dir";
+      packageName = "pkg-dir";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz";
+        sha1 = "f6d5d1109e19d63edf428e0bd57e12777615334b";
+      };
+    };
+    "pkg-dir-3.0.0" = {
+      name = "pkg-dir";
+      packageName = "pkg-dir";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz";
+        sha512 = "2znan90js3xrk8a8cvzv7vrjma5dgr9hkk4kpcgciyawbjz404a4rpdj6gngx1dc7f1xzmfm3q0an1rq69qyk2cmawhsy98i40pnkpw";
+      };
+    };
+    "pn-1.1.0" = {
+      name = "pn";
+      packageName = "pn";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz";
+        sha512 = "2fgy9i99qaapk6lrqsf0i396i0hw5prvpn2wwsccs7j9jz8960r59vjz98kjhfiif2pyf4fiizrwpminc29rdhpld2v8m7n18hxm8fs";
+      };
+    };
+    "portfinder-1.0.25" = {
+      name = "portfinder";
+      packageName = "portfinder";
+      version = "1.0.25";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz";
+        sha512 = "0388smj2gw4cwp6pddy75jr5x6sha60s4w055dpxpag7fi9ql9vxrkidnzc1v5h2zp6ra350y8q4n6lqsg0dq12blsm1iavf2f4jjg8";
+      };
+    };
+    "posix-character-classes-0.1.1" = {
+      name = "posix-character-classes";
+      packageName = "posix-character-classes";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz";
+        sha1 = "01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab";
+      };
+    };
+    "prelude-ls-1.1.2" = {
+      name = "prelude-ls";
+      packageName = "prelude-ls";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz";
+        sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
+      };
+    };
+    "prepend-http-2.0.0" = {
+      name = "prepend-http";
+      packageName = "prepend-http";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz";
+        sha1 = "e92434bfa5ea8c19f41cdfd401d741a3c819d897";
+      };
+    };
+    "prettier-1.19.1" = {
+      name = "prettier";
+      packageName = "prettier";
+      version = "1.19.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz";
+        sha512 = "1xv5n13ms7da26nl80isb703rvq4nwrpqsz4xh8z4bakjh79c631x9pnjrqfhyc77bcjr818yclpxzlq4k9qbh4dr78s87z7g4ficxk";
+      };
+    };
+    "pretty-2.0.0" = {
+      name = "pretty";
+      packageName = "pretty";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz";
+        sha1 = "adbc7960b7bbfe289a557dc5f737619a220d06a5";
+      };
+    };
+    "pretty-format-24.9.0" = {
+      name = "pretty-format";
+      packageName = "pretty-format";
+      version = "24.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz";
+        sha512 = "2f2qn4f43m108j6kw127wvywyyci2c5jdrnfb093ql7f626hwz0qh5z4nwllgpzs4gvdc7l5ljxy2xamzk85xsdgv6rls4791jlqink";
+      };
+    };
+    "private-0.1.8" = {
+      name = "private";
+      packageName = "private";
+      version = "0.1.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/private/-/private-0.1.8.tgz";
+        sha512 = "2dgznnpxsgy9bgp4kfby1is72blvca4lhmqb3nlja8yiig1v52c12p5yw0aag8jqazhkqvihpxmqf9gsjlg5dr1jb56jxzgnqrazy2n";
+      };
+    };
+    "process-0.11.10" = {
+      name = "process";
+      packageName = "process";
+      version = "0.11.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/process/-/process-0.11.10.tgz";
+        sha1 = "7332300e840161bda3e69a1d1d91a7d4bc16f182";
+      };
+    };
+    "process-nextick-args-2.0.1" = {
+      name = "process-nextick-args";
+      packageName = "process-nextick-args";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
+        sha512 = "1mgan8li4i2l4y7lsr7snks85n6xg5x693cqmzpid3fkk9br7v5xzgvh1zlfs08zkxn6s0n6qhykr64mszjfyxd77dhmdi1jhx992yy";
+      };
+    };
+    "promise-7.3.1" = {
+      name = "promise";
+      packageName = "promise";
+      version = "7.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz";
+        sha512 = "17cn4nns2nxh9r0pdiqsqx3fpvaa82c1mhcr8r84k2a9hkpb0mj4bxzfbg3l9iy74yn9hj6mh2gsddsi3v939a1zp7ycbzqkxfm12cy";
+      };
+    };
+    "promise-inflight-1.0.1" = {
+      name = "promise-inflight";
+      packageName = "promise-inflight";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz";
+        sha1 = "98472870bf228132fcbdd868129bad12c3c029e3";
+      };
+    };
+    "prompts-2.3.1" = {
+      name = "prompts";
+      packageName = "prompts";
+      version = "2.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/prompts/-/prompts-2.3.1.tgz";
+        sha512 = "0sdg37c3assj1gk6ybvyhzvkp891zqq7xqj34gcl41dnqgxyl5skijyf75pz5mhfi7cz8315id6430wnr4231yarpfqdhc21jazd0x8";
+      };
+    };
+    "proto-list-1.2.4" = {
+      name = "proto-list";
+      packageName = "proto-list";
+      version = "1.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz";
+        sha1 = "212d5bfe1318306a420f6402b8e26ff39647a849";
+      };
+    };
+    "proxy-addr-2.0.6" = {
+      name = "proxy-addr";
+      packageName = "proxy-addr";
+      version = "2.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz";
+        sha512 = "0xy6dm0910h3nsa0ik45yccdfm6f84nl3h9dpkb22crqhdr3mmiczcbrq9z53gq7l2ijxhxi3pzsfzafrzymw4c1nn68ml1y2pdy7vn";
+      };
+    };
+    "prr-1.0.1" = {
+      name = "prr";
+      packageName = "prr";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz";
+        sha1 = "d3fc114ba06995a45ec6893f484ceb1d78f5f476";
+      };
+    };
+    "pseudomap-1.0.2" = {
+      name = "pseudomap";
+      packageName = "pseudomap";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz";
+        sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3";
+      };
+    };
+    "psl-1.7.0" = {
+      name = "psl";
+      packageName = "psl";
+      version = "1.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz";
+        sha512 = "0whj0m29370fn3imrlj2dw0xmr33j2gn30kn96xpxckz7i1b21pj6vlgsn4ggxl79mz2ckng5mdxbkczcwkjry497s8xkgw7c815nz4";
+      };
+    };
+    "public-encrypt-4.0.3" = {
+      name = "public-encrypt";
+      packageName = "public-encrypt";
+      version = "4.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz";
+        sha512 = "3qnsvs746b98ifyv12qj1g6hl6fq25vip5mswhvn3gnl7r32fids6mw3jb0gdcqrrl5x9ik475sf0vx6mbhmif49idkwjwrhbr5lnnd";
+      };
+    };
+    "pug-2.0.4" = {
+      name = "pug";
+      packageName = "pug";
+      version = "2.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz";
+        sha512 = "2zis5am87x72261l3vnqzms2cybdk6bc8kqa6xdjxd337yayy3c4h3s3zm175iv61h3p2pvzpl40qs7g17vnrwg5wrx5s72bc71l6jy";
+      };
+    };
+    "pug-attrs-2.0.4" = {
+      name = "pug-attrs";
+      packageName = "pug-attrs";
+      version = "2.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz";
+        sha512 = "08vr4ngaa625x9jh03hs5alwzwlbw9wpgsxppr9r1vl28y3f8kyr4xis9li3dxpinrqacz4vnnwqidms56qvw2xf74z0l6ncikpi9jd";
+      };
+    };
+    "pug-code-gen-2.0.2" = {
+      name = "pug-code-gen";
+      packageName = "pug-code-gen";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.2.tgz";
+        sha512 = "05xmnv15k0jm1wyvk92ih7wlf6w3l17qja8f59gjl101lk1lp5hw34bqb2rzi1l8wlvi1cwnncbhvsaj6biha0q17yiy7y0zxd8a4wi";
+      };
+    };
+    "pug-error-1.3.3" = {
+      name = "pug-error";
+      packageName = "pug-error";
+      version = "1.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz";
+        sha512 = "24id0x6g1wh6gq1b72ibrp653d0knzzlg0aqsfap9m7cqsx49vvn1ma5ghs67q98wbjfig18irgp42gdnkq0jf1b1069nlg8j2dhkd8";
+      };
+    };
+    "pug-filters-3.1.1" = {
+      name = "pug-filters";
+      packageName = "pug-filters";
+      version = "3.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz";
+        sha512 = "112912ajq0dfvbibdba458952wpd9cyl0na8fn7p40fyx4i5igki4z0f541aj8nvy679i1rj9m8p1cjmxnd25qww215bjc444vy6mwl";
+      };
+    };
+    "pug-lexer-4.1.0" = {
+      name = "pug-lexer";
+      packageName = "pug-lexer";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz";
+        sha512 = "0y1ljrsfpv6jacmhcghkn6s9n46vm0ziwrf55fyqb0g0afwhsx0bbmh5xhq9lz2xg1df3905zfy9bin02xf0mlrjqk6v3kd836757lb";
+      };
+    };
+    "pug-linker-3.0.6" = {
+      name = "pug-linker";
+      packageName = "pug-linker";
+      version = "3.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz";
+        sha512 = "375crip8jzn5kx6lbx19nc12dyxqxc1wq0i3pmbjr8km8kc0p9j1kysysl69djiq0n663yxpqsjdv97in7dbcni02lh6zbdgfw1za3d";
+      };
+    };
+    "pug-load-2.0.12" = {
+      name = "pug-load";
+      packageName = "pug-load";
+      version = "2.0.12";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz";
+        sha512 = "2rdg2l72v2hwsiyiz0rvqff2vfd07dlxacs1qf3qhxcl861wgl96jrcjp6733nn53cc36bc83qiy8p90i5ypmyg4qh1cpdjkhd61ajj";
+      };
+    };
+    "pug-parser-5.0.1" = {
+      name = "pug-parser";
+      packageName = "pug-parser";
+      version = "5.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz";
+        sha512 = "30blpbplbbgh6xfirijjqbbfxkp3f70iz7scbspw6z56pw6g4nrkz9swd9bz1wadaij38mazdhybz212cwwpj637rzrxvilxhmylqcw";
+      };
+    };
+    "pug-runtime-2.0.5" = {
+      name = "pug-runtime";
+      packageName = "pug-runtime";
+      version = "2.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz";
+        sha512 = "2vnj0qdc3rhxbi060mkcss7mwn6avl864vj16shbf9fwf97a2lblkd9g1g6pivqgxszzvrh3ilcaaqp5sbvdw5ycg88g7vfgwmdgsiz";
+      };
+    };
+    "pug-strip-comments-1.0.4" = {
+      name = "pug-strip-comments";
+      packageName = "pug-strip-comments";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz";
+        sha512 = "2zpmf1c507g195spdxrm7wsfaxrd3kjifxvkfgj7wlbva0vmfydnh8wjsajqph42qzdhmym1y51la62qyiqhybsqi95ij5q4ksgz64b";
+      };
+    };
+    "pug-walk-1.1.8" = {
+      name = "pug-walk";
+      packageName = "pug-walk";
+      version = "1.1.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz";
+        sha512 = "1a288y26wmpn6f09g6z69xqmqazcvqn36fgrzwjm7wh9ik5pgqn44qvg06ibq2lvp9svz6nly5wni9v35y83plgpgipfbylk4rvgjqq";
+      };
+    };
+    "pump-2.0.1" = {
+      name = "pump";
+      packageName = "pump";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz";
+        sha512 = "288hcmlwdnqda84ylx9cv413ic0r59k0dp71hy7a200jsb7h1y63277jwdp1jdp13c1b3pl6g2gzr5gjv9p72f5sp7w3p0d34swrqxf";
+      };
+    };
+    "pump-3.0.0" = {
+      name = "pump";
+      packageName = "pump";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz";
+        sha512 = "31n24fqakqmhzk2ch644gziskmysmrgiwclsdsr0rwk9spgikqpwickbnayap0rynfjlq72s7iny2p35n3qszypr97ws5njkpx741ig";
+      };
+    };
+    "pumpify-1.5.1" = {
+      name = "pumpify";
+      packageName = "pumpify";
+      version = "1.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz";
+        sha512 = "1sxm2mh7jmxhjqdrpdqrhc61ipk2cjyyyvsn9hmxlxnlpsasyzjdicl98pm63zv30012qhrxl57vdpdnnq2m2hl4w4ybgn7gqimjad0";
+      };
+    };
+    "punycode-1.3.2" = {
+      name = "punycode";
+      packageName = "punycode";
+      version = "1.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz";
+        sha1 = "9653a036fb7c1ee42342f2325cceefea3926c48d";
+      };
+    };
+    "punycode-1.4.1" = {
+      name = "punycode";
+      packageName = "punycode";
+      version = "1.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz";
+        sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
+      };
+    };
+    "punycode-2.1.1" = {
+      name = "punycode";
+      packageName = "punycode";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz";
+        sha512 = "381vqgh5xkqzrr6cxbzfykgnnk83m7qgpx3wjwj1hddn3sg2aibjxyr30rajpgv4js0cqknrbzwbfk5ryhiiyigzfjrk3zysy6i26sx";
+      };
+    };
+    "qs-6.5.2" = {
+      name = "qs";
+      packageName = "qs";
+      version = "6.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz";
+        sha512 = "0c46ws0x9g3mmkgfmvd78bzvnmv2b8ryg4ah6jvyyqgjv9v994z7xdyvsc4vg9sf98gg7phvy3q1ahgaj5fy3dwzf2rki6bixgl15ip";
+      };
+    };
+    "qs-6.7.0" = {
+      name = "qs";
+      packageName = "qs";
+      version = "6.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz";
+        sha512 = "34x6fm4dnq8m0kps5ann831k8fvx7jzlrcw8vvri0ki2g2ywdrjr8j5y14bvj9c0fd01ndsyx43y6ji51bfhnxk2gr5fpsks52429sl";
+      };
+    };
+    "query-string-5.1.1" = {
+      name = "query-string";
+      packageName = "query-string";
+      version = "5.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz";
+        sha512 = "0kkwn38nmjd6n6byiz52gngvyiw46fbibx9c9p1vzn9g7l11f2jpbs39d4aqajk7kk2a6k69wx5bjgavbg1lh275ih6k84jdnr8wdc2";
+      };
+    };
+    "querystring-0.2.0" = {
+      name = "querystring";
+      packageName = "querystring";
+      version = "0.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz";
+        sha1 = "b209849203bb25df820da756e747005878521620";
+      };
+    };
+    "querystring-es3-0.2.1" = {
+      name = "querystring-es3";
+      packageName = "querystring-es3";
+      version = "0.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz";
+        sha1 = "9ec61f79049875707d69414596fd907a4d711e73";
+      };
+    };
+    "querystringify-2.1.1" = {
+      name = "querystringify";
+      packageName = "querystringify";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz";
+        sha512 = "1yd3j6k7rr39qm5zsh0k86znfksfcz9rbj48vv2dbsicnvvgzvw1vwl17vk2jlxszwqjiqsj9hy88r74wsdxf8by7a3wia2hk2cpdy3";
+      };
+    };
+    "randombytes-2.1.0" = {
+      name = "randombytes";
+      packageName = "randombytes";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz";
+        sha512 = "2cimbs750ysa2wxsiw9mmc1xqjb8w0c4s22p2mv2n676s8hchvzcl1l5p78jnk62d2jzacpr9zbl9w64kaqnipcbaa25q7ywn47g2dx";
+      };
+    };
+    "randomfill-1.0.4" = {
+      name = "randomfill";
+      packageName = "randomfill";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz";
+        sha512 = "0pm7c7mw7a3qwjr21f8cvxaa2sq5l4svqs51lppn833x0yvz3yx8x4vbd4rswjynykvlgvn4hrpq327pvbzp428f4b1fciy3xnmrfgk";
+      };
+    };
+    "range-parser-1.2.1" = {
+      name = "range-parser";
+      packageName = "range-parser";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz";
+        sha512 = "15b00vag4wijzsp0lwi9jznpz16n858vq5p1p3dgjrqqil9c6d4x55s1nl1fi4cbq8307bylbvkd9qkhyk6qib8ksh8raibxb3jrf0y";
+      };
+    };
+    "raw-body-2.4.0" = {
+      name = "raw-body";
+      packageName = "raw-body";
+      version = "2.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz";
+        sha512 = "3flyhj96ayiy8is22lwh9sp1yqq9ksym43x22yri2ikzladqqzxj6z657bc0xb5f2wl7qr2ja4byf57c9f7l2d3wqdglxih886zrv70";
+      };
+    };
+    "raw-body-2.4.1" = {
+      name = "raw-body";
+      packageName = "raw-body";
+      version = "2.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz";
+        sha512 = "1ngfzkci4v3yg989xbriv2giv775w4z9l34hyzfjhyh5ap8wdvc1sggkmqnkz19hgm5r3xyszrs7sppwslxi05r90sg14m6bql8hsgm";
+      };
+    };
+    "react-is-16.13.0" = {
+      name = "react-is";
+      packageName = "react-is";
+      version = "16.13.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/react-is/-/react-is-16.13.0.tgz";
+        sha512 = "00g57i5q020lc9cdswy1ba9bqds0a5wbpy88abfcbnjf0v54fmv4qcch3ad3336sdkxy4mjq3zaf142agbc0vkryipj14n79cpjslqq";
+      };
+    };
+    "read-pkg-3.0.0" = {
+      name = "read-pkg";
+      packageName = "read-pkg";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz";
+        sha1 = "9cbc686978fee65d16c00e2b19c237fcf6e38389";
+      };
+    };
+    "read-pkg-up-4.0.0" = {
+      name = "read-pkg-up";
+      packageName = "read-pkg-up";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz";
+        sha512 = "28400v5dwid6mc9x40s2mwfbkn22vj0dzx0ix8n2bffjx4p2ivb9b60bh743c74kdp0v391rdmladhgvrjgzihns456n977gr451sz9";
+      };
+    };
+    "readable-stream-2.3.7" = {
+      name = "readable-stream";
+      packageName = "readable-stream";
+      version = "2.3.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz";
+        sha512 = "0zrh6gjjzwwycwydra51xcrgjgzyqv6dq38bfpwzmlqn702mwb4nj4sjjn499rycqndfk6rby0dksnq72x8pcbvqv0b2893mvq6if0i";
+      };
+    };
+    "readable-stream-3.6.0" = {
+      name = "readable-stream";
+      packageName = "readable-stream";
+      version = "3.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz";
+        sha512 = "1s8hs6ax9jwmmw558j3hyfx5lfn7qf66xg0giplz9jci7d8zp2d8vh96dzlis6xzpxfa5b2zbm8nm4mgsr71r6rl3w3qyfanb5qfn05";
+      };
+    };
+    "readdirp-2.2.1" = {
+      name = "readdirp";
+      packageName = "readdirp";
+      version = "2.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz";
+        sha512 = "2yzl88bp25ig1xnrzqmqiwpfxyqkmdw27h3p90a4a58q0964xcijcx4i948msnlvin9f6hn5hmpxj1s90jzkj8aqxr5d04mmzr3z5fl";
+      };
+    };
+    "realpath-native-1.1.0" = {
+      name = "realpath-native";
+      packageName = "realpath-native";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz";
+        sha512 = "26fzz602hwidkkqwv7nk72xq07nlymik92psrcs5pifzqypr63pgz0sy8dzda0bpzl7abkz4kiy2z4f1w07xx5ch0yqh802lw1hyn62";
+      };
+    };
+    "rechoir-0.6.2" = {
+      name = "rechoir";
+      packageName = "rechoir";
+      version = "0.6.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz";
+        sha1 = "85204b54dba82d5742e28c96756ef43af50e3384";
+      };
+    };
+    "regenerate-1.4.0" = {
+      name = "regenerate";
+      packageName = "regenerate";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz";
+        sha512 = "0m5jil0f2yz4js80jxvwilkhq6im5h6h0pa4disk3fsv9lm23lz8ly5219518j47v4fn0h248s9jf5pqhxhcr6z5cmxvbnna0js6vnl";
+      };
+    };
+    "regenerator-runtime-0.11.1" = {
+      name = "regenerator-runtime";
+      packageName = "regenerator-runtime";
+      version = "0.11.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz";
+        sha512 = "03d4l8l8cyywh93wf5vw84lq56jh1b1d7jll4ny4z060j9hvx7w5q3q0b8q227jm93749k1c9h86r2pz0bm2xq5vp14g3r2kbvqc2rj";
+      };
+    };
+    "regenerator-transform-0.10.1" = {
+      name = "regenerator-transform";
+      packageName = "regenerator-transform";
+      version = "0.10.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz";
+        sha512 = "3lxj64s9v2jksipiz0pphfy6m12cf7j96w64bqlzjwnasbpqhc5ws5bjzv3x9ld625v1z4f15l30izpv3p6l9w8h1qsvf6vy1pak5rw";
+      };
+    };
+    "regex-not-1.0.2" = {
+      name = "regex-not";
+      packageName = "regex-not";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz";
+        sha512 = "3cggngaj8m70zdn8kghha4mhvavm7jfy5xm2iqi94w4gi5m5irs3nlrgg975w2231y49jnnw7zhsg648pbkl9zb6vwhii83926q7917";
+      };
+    };
+    "regexpu-core-2.0.0" = {
+      name = "regexpu-core";
+      packageName = "regexpu-core";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz";
+        sha1 = "49d038837b8dcf8bfa5b9a42139938e6ea2ae240";
+      };
+    };
+    "regjsgen-0.2.0" = {
+      name = "regjsgen";
+      packageName = "regjsgen";
+      version = "0.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz";
+        sha1 = "6c016adeac554f75823fe37ac05b92d5a4edb1f7";
+      };
+    };
+    "regjsparser-0.1.5" = {
+      name = "regjsparser";
+      packageName = "regjsparser";
+      version = "0.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz";
+        sha1 = "7ee8f84dc6fa792d3fd0ae228d24bd949ead205c";
+      };
+    };
+    "remove-trailing-separator-1.1.0" = {
+      name = "remove-trailing-separator";
+      packageName = "remove-trailing-separator";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz";
+        sha1 = "c24bce2a283adad5bc3f58e0d48249b92379d8ef";
+      };
+    };
+    "repeat-element-1.1.3" = {
+      name = "repeat-element";
+      packageName = "repeat-element";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz";
+        sha512 = "3dbpfrs4yh7dd9572m6dc8cxcgqacnvd24xm9licnw1hygqv51a18a84gm04sjssajbm437rq01raggrzmnzk4jnmbnxrnmk78sl4ba";
+      };
+    };
+    "repeat-string-1.6.1" = {
+      name = "repeat-string";
+      packageName = "repeat-string";
+      version = "1.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz";
+        sha1 = "8dcae470e1c88abc2d600fff4a776286da75e637";
+      };
+    };
+    "repeating-2.0.1" = {
+      name = "repeating";
+      packageName = "repeating";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz";
+        sha1 = "5214c53a926d3552707527fbab415dbc08d06dda";
+      };
+    };
+    "request-2.88.2" = {
+      name = "request";
+      packageName = "request";
+      version = "2.88.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/request/-/request-2.88.2.tgz";
+        sha512 = "23hm71jcxrwvp33azx8mx3w6dg21fr4w6lwvkvxyf6ckvhk3hz9dk8lzgkbiyzfl9ylhp4n807xp88ppq4gj5h07cmrgxf6nwxfvjrj";
+      };
+    };
+    "request-promise-core-1.1.3" = {
+      name = "request-promise-core";
+      packageName = "request-promise-core";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz";
+        sha512 = "00riv5nw32j70g67b1ll1h599bvdbnkgasnwl1m26pfdgdmgr6zaq500mprx5n77yrnhza27vs3c9icb4z5h6wnwmlha6f81bw3d2s0";
+      };
+    };
+    "request-promise-native-1.0.8" = {
+      name = "request-promise-native";
+      packageName = "request-promise-native";
+      version = "1.0.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz";
+        sha512 = "0qx1n06bjj430fidkma2dr90dmrixiza4ymk561v1xxpd5yp7r36lwirgsdn0nvra7s4xs9gs1xhd6fxvlps6q1wh5xq7m4d8n71akm";
+      };
+    };
+    "require-directory-2.1.1" = {
+      name = "require-directory";
+      packageName = "require-directory";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz";
+        sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42";
+      };
+    };
+    "require-main-filename-1.0.1" = {
+      name = "require-main-filename";
+      packageName = "require-main-filename";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz";
+        sha1 = "97f717b69d48784f5f526a6c5aa8ffdda055a4d1";
+      };
+    };
+    "require-main-filename-2.0.0" = {
+      name = "require-main-filename";
+      packageName = "require-main-filename";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz";
+        sha512 = "2d0gd2x49nz3hgfwms6326sjw5fx7gqf997dnggc7l084cibgang6wr6ryksky32fvdz1bq72xm73kfxd3lj2qnfyjsp57jq287k8rl";
+      };
+    };
+    "requires-port-1.0.0" = {
+      name = "requires-port";
+      packageName = "requires-port";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz";
+        sha1 = "925d2601d39ac485e091cf0da5c6e694dc3dcaff";
+      };
+    };
+    "resolve-1.1.7" = {
+      name = "resolve";
+      packageName = "resolve";
+      version = "1.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz";
+        sha1 = "203114d82ad2c5ed9e8e0411b3932875e889e97b";
+      };
+    };
+    "resolve-1.15.1" = {
+      name = "resolve";
+      packageName = "resolve";
+      version = "1.15.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz";
+        sha512 = "3pr5zjp8nh6qfllxnpqx531srx1igzdm28j4zg1y53yzc8qxp16yx01pw8cp7y4frla90gnpv622d6bi6aayi03iqlkb8gdjklji2pk";
+      };
+    };
+    "resolve-cwd-2.0.0" = {
+      name = "resolve-cwd";
+      packageName = "resolve-cwd";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz";
+        sha1 = "00a9f7387556e27038eae232caa372a6a59b665a";
+      };
+    };
+    "resolve-dir-1.0.1" = {
+      name = "resolve-dir";
+      packageName = "resolve-dir";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz";
+        sha1 = "79a40644c362be82f26effe739c9bb5382046f43";
+      };
+    };
+    "resolve-from-3.0.0" = {
+      name = "resolve-from";
+      packageName = "resolve-from";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz";
+        sha1 = "b22c7af7d9d6881bc8b6e653335eebcb0a188748";
+      };
+    };
+    "resolve-path-1.4.0" = {
+      name = "resolve-path";
+      packageName = "resolve-path";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz";
+        sha1 = "c4bda9f5efb2fce65247873ab36bb4d834fe16f7";
+      };
+    };
+    "resolve-url-0.2.1" = {
+      name = "resolve-url";
+      packageName = "resolve-url";
+      version = "0.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz";
+        sha1 = "2c637fe77c893afd2a663fe21aa9080068e2052a";
+      };
+    };
+    "responselike-1.0.2" = {
+      name = "responselike";
+      packageName = "responselike";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz";
+        sha1 = "918720ef3b631c5642be068f15ade5a46f4ba1e7";
+      };
+    };
+    "restore-cursor-2.0.0" = {
+      name = "restore-cursor";
+      packageName = "restore-cursor";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz";
+        sha1 = "9f7ee287f82fd326d4fd162923d62129eee0dfaf";
+      };
+    };
+    "ret-0.1.15" = {
+      name = "ret";
+      packageName = "ret";
+      version = "0.1.15";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz";
+        sha512 = "2d7igpgyzdlpx2ni0sql8gsnqk9qivfsw6bn1aklm19kbhgxjzmlazz8szfsbdpjka4gk6i3zf0jqa0llaf7dni636fnbwfmyjmhfad";
+      };
+    };
+    "retry-0.12.0" = {
+      name = "retry";
+      packageName = "retry";
+      version = "0.12.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz";
+        sha1 = "1b42a6266a21f07421d1b0b54b7dc167b01c013b";
+      };
+    };
+    "right-align-0.1.3" = {
+      name = "right-align";
+      packageName = "right-align";
+      version = "0.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz";
+        sha1 = "61339b722fe6a3515689210d24e14c96148613ef";
+      };
+    };
+    "rimraf-2.7.1" = {
+      name = "rimraf";
+      packageName = "rimraf";
+      version = "2.7.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz";
+        sha512 = "3ixwnv4h7x38jd12vyzhx6m6adnfhz1zv881allalyqs8sy3q3zgwldngk4cqslnn2d46l0g91yz8wprmzcsvas9573vp8al9ldns5r";
+      };
+    };
+    "ripemd160-2.0.2" = {
+      name = "ripemd160";
+      packageName = "ripemd160";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz";
+        sha512 = "0hbd4cqbkycj691cj7gm40x3x5w46xk56xkg6n11wskc3k4xbdz1xxxyy6r27rcwipkzp19y1fmpfmb4lgf10l8asn6prdn11m24bla";
+      };
+    };
+    "rsvp-4.8.5" = {
+      name = "rsvp";
+      packageName = "rsvp";
+      version = "4.8.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz";
+        sha512 = "2wdl1qh3bdrji9q0whkrhj7gzryfipskamagkg5dq54phmg5c7ifp8va0b8saxs4xmi6c5mlvkh6gbk6r4nqrld4v8ykx5f0ja0xwwx";
+      };
+    };
+    "run-queue-1.0.3" = {
+      name = "run-queue";
+      packageName = "run-queue";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz";
+        sha1 = "e848396f057d223f24386924618e25694161ec47";
+      };
+    };
+    "rxjs-6.5.4" = {
+      name = "rxjs";
+      packageName = "rxjs";
+      version = "6.5.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz";
+        sha512 = "3nzzg67sr57cc5n1065xsxjgrwa405bgbgqm9l8w01lnr660cy8zdjk99hm2n0did4kd75nwiz3843mfbrw7bs100n7g8q4r1fi18wx";
+      };
+    };
+    "safe-buffer-5.1.2" = {
+      name = "safe-buffer";
+      packageName = "safe-buffer";
+      version = "5.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
+        sha512 = "3xbm0dkya4bc3zwfwpdzbl8ngq0aai5ihlp2v3s39y7162c7wyvv9izj3g8hv6dy6vm2lq48lmfzygk0kxwbjb6xic7k4a329j99p8r";
+      };
+    };
+    "safe-buffer-5.2.0" = {
+      name = "safe-buffer";
+      packageName = "safe-buffer";
+      version = "5.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz";
+        sha512 = "1pb164cfv1ip3s1rp008433rak88mdcch24q84cbfndg0dzky2ij8vjvsiyx2qf3rg4dgs82zk7vnrd9hkqqdcvp4lbk5ymcr8314bx";
+      };
+    };
+    "safe-regex-1.1.0" = {
+      name = "safe-regex";
+      packageName = "safe-regex";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz";
+        sha1 = "40a3669f3b077d1e943d44629e157dd48023bf2e";
+      };
+    };
+    "safer-buffer-2.1.2" = {
+      name = "safer-buffer";
+      packageName = "safer-buffer";
+      version = "2.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
+        sha512 = "2v99f22kh56y72d3s8wrgdvf5n10ry40dh3fwnsxr4d5rfvxdfxfmc3qyqkscnj4f8799jy9bpg6cm21x2d811dr9ib83wjrlmkg6k1";
+      };
+    };
+    "sane-4.1.0" = {
+      name = "sane";
+      packageName = "sane";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz";
+        sha512 = "1jdy0h2kdi5d2lnxafnbxnqssf306v0pffvw10jspi9v899n7rxknzs78k7nnrgy1mgyfragq91y4ci7z7xksbp92xw6py80h1g65l6";
+      };
+    };
+    "sax-1.2.4" = {
+      name = "sax";
+      packageName = "sax";
+      version = "1.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz";
+        sha512 = "1dn291mjsda42w8kldlbmngk6dhjxfbvvd5lckyqmwbjaj6069iq3wx0nvcfglwnpddz2qa93lzf4hv77iz43bd2qixa079sjzl799n";
+      };
+    };
+    "schema-utils-1.0.0" = {
+      name = "schema-utils";
+      packageName = "schema-utils";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz";
+        sha512 = "3kgnvyq6cxrlx9xwba75z4wp364mf4y4d66d92zwhjdw8nqg5jxzp1bfl6n5srl0aircw32nmry28a4476cpb3ijqzz78hars4wqvlb";
+      };
+    };
+    "select-hose-2.0.0" = {
+      name = "select-hose";
+      packageName = "select-hose";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz";
+        sha1 = "625d8658f865af43ec962bfc376a37359a4994ca";
+      };
+    };
+    "selfsigned-1.10.7" = {
+      name = "selfsigned";
+      packageName = "selfsigned";
+      version = "1.10.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz";
+        sha512 = "165gijv79k6g333d52fwfnna4z0myalk0cywvf9b6pysjfwlib4cvldycwx6yiiy099v9s0yhgvhq1sn21dqy7r85kq4n6y5h2g1kgh";
+      };
+    };
+    "semver-5.7.1" = {
+      name = "semver";
+      packageName = "semver";
+      version = "5.7.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz";
+        sha512 = "0cl68vp0ymkjpvim4s24v3awyk37d1bfbqrqv4ybwfi8yxga3d8fma2d6bh8dd4i2dsfwca324vaxm5dms61kdlmihdarfgzw6rmaxi";
+      };
+    };
+    "semver-6.3.0" = {
+      name = "semver";
+      packageName = "semver";
+      version = "6.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz";
+        sha512 = "17wg4dv63jhss5hwqd135zz67r5c30b7a1xz33kfa7knxr0wfypyb8mj2xmc3l71qkxrz569n89xwp5d77m7adn0sr5wzfjlh2m6zvg";
+      };
+    };
+    "send-0.17.1" = {
+      name = "send";
+      packageName = "send";
+      version = "0.17.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/send/-/send-0.17.1.tgz";
+        sha512 = "016qgvxg1si6vn34p7piyc8mhvmav1zscm294wkcjf221y1l9zk5kwk5z6yn1ixspj12df25bpazb2h3fdclcf59xqc2h4w46r4mi86";
+      };
+    };
+    "serialize-javascript-1.9.1" = {
+      name = "serialize-javascript";
+      packageName = "serialize-javascript";
+      version = "1.9.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz";
+        sha512 = "3a0kvzr1rq0l6v4l587sv58i0xgajs9863srkhxxlzq3dk5mj8r5sag4yyxfidzsbwcbygbg7wdm2nja97kg5n4y9plxsl9hpkzymni";
+      };
+    };
+    "serialize-javascript-2.1.2" = {
+      name = "serialize-javascript";
+      packageName = "serialize-javascript";
+      version = "2.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz";
+        sha512 = "26vhlfjji0jk84cvbcpna4h1nfvdwj19g7rjmvz9mzlm277cpgz7xw9q61yrp3x4amas66fxrz0p2rrndv737j4imw4a5ql0614xkxf";
+      };
+    };
+    "serve-index-1.9.1" = {
+      name = "serve-index";
+      packageName = "serve-index";
+      version = "1.9.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz";
+        sha1 = "d3768d69b1e7d82e5ce050fff5b453bea12a9239";
+      };
+    };
+    "serve-static-1.14.1" = {
+      name = "serve-static";
+      packageName = "serve-static";
+      version = "1.14.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz";
+        sha512 = "0551vv6s1vgk5krzdn9cwnybsv6g4cyqpkk1dlkyv1pd8n7m8r7pi12r16bw12dzwl6ghj4qwizjsxc8vl26lv9c61fkq9r059yzji4";
+      };
+    };
+    "set-blocking-2.0.0" = {
+      name = "set-blocking";
+      packageName = "set-blocking";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz";
+        sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
+      };
+    };
+    "set-value-2.0.1" = {
+      name = "set-value";
+      packageName = "set-value";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz";
+        sha512 = "15idn47lw67wfq0qfva85xnphqxkzz5apix6gwcnylmqw4ch7bqhq4vzdh53f327agpcg6pdzkbj8m72wm887wd8lqaydw20zbxq497";
+      };
+    };
+    "setimmediate-1.0.5" = {
+      name = "setimmediate";
+      packageName = "setimmediate";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz";
+        sha1 = "290cbb232e306942d7d7ea9b83732ab7856f8285";
+      };
+    };
+    "setprototypeof-1.1.0" = {
+      name = "setprototypeof";
+      packageName = "setprototypeof";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz";
+        sha512 = "2jlhhawfqdiga1m6if01ks1q3yx56k5vj6wf372589vkswvdflw7224viivxali56b0jjsckpmjy10rj6fcakhw2dbq2psr197kzw86";
+      };
+    };
+    "setprototypeof-1.1.1" = {
+      name = "setprototypeof";
+      packageName = "setprototypeof";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz";
+        sha512 = "01qxzb0a6jrcxa6qh776v04ihqrmcy3qfbp9drfsjhfcsmaqd21mppr3ndj970ixfh6bpm8ai45jyqyzjfjw26pcyd82y6pyrcl1xr6";
+      };
+    };
+    "sha.js-2.4.11" = {
+      name = "sha.js";
+      packageName = "sha.js";
+      version = "2.4.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz";
+        sha512 = "2lihh3p2mrwymrly93ni37b1dvzwbm1jc47iqp66ax4bj41js4mr94wghv3c2agq98bb44nxxddn2n67ab978zk00xx2znw3vj2kha0";
+      };
+    };
+    "shebang-command-1.2.0" = {
+      name = "shebang-command";
+      packageName = "shebang-command";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz";
+        sha1 = "44aac65b695b03398968c39f363fee5deafdf1ea";
+      };
+    };
+    "shebang-regex-1.0.0" = {
+      name = "shebang-regex";
+      packageName = "shebang-regex";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz";
+        sha1 = "da42f49740c0b42db2ca9728571cb190c98efea3";
+      };
+    };
+    "shelljs-0.8.3" = {
+      name = "shelljs";
+      packageName = "shelljs";
+      version = "0.8.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz";
+        sha512 = "3ndzzikwq0c0084xy1s0v9q2msc8wc7qrmi0bi1llshsmlhfz4dn1k9i2r666ls7xmq62idmify0ksc1vq3mrjqcrqbm20na0m03kbx";
+      };
+    };
+    "shellwords-0.1.1" = {
+      name = "shellwords";
+      packageName = "shellwords";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz";
+        sha512 = "31h1mksdbashjfpvj7xh8nqw7siqm5v1yj77pmcsbkzqi4hrpjqmzv2sifjlljjyx87sfqnmcn0yqh1hfgn669c43i2dargyi8i4p5w";
+      };
+    };
+    "sigmund-1.0.1" = {
+      name = "sigmund";
+      packageName = "sigmund";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz";
+        sha1 = "3ff21f198cad2175f9f3b781853fd94d0d19b590";
+      };
+    };
+    "signal-exit-3.0.2" = {
+      name = "signal-exit";
+      packageName = "signal-exit";
+      version = "3.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz";
+        sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
+      };
+    };
+    "simple-git-1.96.0" = {
+      name = "simple-git";
+      packageName = "simple-git";
+      version = "1.96.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/simple-git/-/simple-git-1.96.0.tgz";
+        sha512 = "0ywlgw61ydavyi2sw2yvzlha4yaxcasrzzkfkvwhv51qm1pciagcmchampclwjrs40wnn0ydhbh1krn1krsrfr6rjyx46k9j76fw1gs";
+      };
+    };
+    "sisteransi-1.0.4" = {
+      name = "sisteransi";
+      packageName = "sisteransi";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.4.tgz";
+        sha512 = "25g5in0cfm4qpjw7rw3pnqyln8svln98bh34hiwmmk51wkfyb93sg52x9xc2nahx1lhvg4np6v5dq8vbsm2k7v4pii9y9qdrsh0rsgx";
+      };
+    };
+    "slash-1.0.0" = {
+      name = "slash";
+      packageName = "slash";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz";
+        sha1 = "c41f2f6c39fc16d1cd17ad4b5d896114ae470d55";
+      };
+    };
+    "slash-2.0.0" = {
+      name = "slash";
+      packageName = "slash";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz";
+        sha512 = "3sbrc1b1qf9m7lhlljmnc51k9bl7jbc9zfmdc4z55iafsck65d9ll77bifknvgvgbc0f0a7cvm1b785ab5d1avm27lm7kvnd3fs30k5";
+      };
+    };
+    "snapdragon-0.8.2" = {
+      name = "snapdragon";
+      packageName = "snapdragon";
+      version = "0.8.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz";
+        sha512 = "2b0sap2q0c6qbfkw6znql845b143frn5gkkz4gpirjhgwa2j3wy3jsvrfg51s5c1w1m4nkgis97x9yvmzsc533kap9j3h3zcffqxp0n";
+      };
+    };
+    "snapdragon-node-2.1.1" = {
+      name = "snapdragon-node";
+      packageName = "snapdragon-node";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz";
+        sha512 = "2gk18pdld8ij1bpa2mdwl8f7i4rl5d4ys3qw31hipj56wslnsfhp1vxp3q36kj1m4f34wzzlvj0282qx5xlflqf978xyqlc2viyaviv";
+      };
+    };
+    "snapdragon-util-3.0.1" = {
+      name = "snapdragon-util";
+      packageName = "snapdragon-util";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz";
+        sha512 = "1jsaqma4ycl2iq0761i1w7758z1kq7gbsij4xfb7p5cnw0qa62pszv6pr3j856n3pbxww7wwxs5wvcg2cb6vy020kw3bchashqs9clr";
+      };
+    };
+    "sockjs-0.3.19" = {
+      name = "sockjs";
+      packageName = "sockjs";
+      version = "0.3.19";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz";
+        sha512 = "0pn77r3rgi2blxla6ilhf4madx8n0cprzb295mw5knx2hyhiwn60z8n8n8clsb1l0wddcrjj5x4rn24ydf2wnxbrn63xwb5lsa293sp";
+      };
+    };
+    "sockjs-client-1.4.0" = {
+      name = "sockjs-client";
+      packageName = "sockjs-client";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz";
+        sha512 = "3pa683q7x6az2iwmd2bh0d2zwdkgklkfi4vpkwnxw4b49mgfdjkal83i9lzxlz6f6sqybyvb0mlyw0mmg9mdd76fawvi7izxz48ndp7";
+      };
+    };
+    "sort-keys-2.0.0" = {
+      name = "sort-keys";
+      packageName = "sort-keys";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz";
+        sha1 = "658535584861ec97d730d6cf41822e1f56684128";
+      };
+    };
+    "source-list-map-2.0.1" = {
+      name = "source-list-map";
+      packageName = "source-list-map";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz";
+        sha512 = "0izwdwncwz4s14qn5ahkb2mpcdpxq2arn5185dlhljns4nylsw2xfm425zi115ik4kz1vfa97qyix3vf3i149dyi1ndq61iaf0knx5a";
+      };
+    };
+    "source-map-0.5.7" = {
+      name = "source-map";
+      packageName = "source-map";
+      version = "0.5.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz";
+        sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
+      };
+    };
+    "source-map-0.6.1" = {
+      name = "source-map";
+      packageName = "source-map";
+      version = "0.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz";
+        sha512 = "3p7hw8p69ikj5mwapmqkacsjnbvdfk5ylyamjg9x5izkl717xvzj0vk3fnmx1n4pf54h5rs7r8ig5kk4jv4ycqqj0hv75cnx6k1lf2j";
+      };
+    };
+    "source-map-resolve-0.5.3" = {
+      name = "source-map-resolve";
+      packageName = "source-map-resolve";
+      version = "0.5.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz";
+        sha512 = "2gq1flmkac2lzw8rs6vpch0sanmv8r9gv6bggwkgxzj3n7gw33lbqzk7nk9vvsckdjjkm132jzbl3nxc69cf9bb7xz4wnhpgd3gxp0y";
+      };
+    };
+    "source-map-support-0.4.18" = {
+      name = "source-map-support";
+      packageName = "source-map-support";
+      version = "0.4.18";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz";
+        sha512 = "1n37icn5xpsxs2x8szv6ifajjf066fskm04xn6agr79sid57n0yws4n0cis7m9q5hr0hxzr8dv2fnmmpgb4mvz8kiyv2g5ikbyb9g5n";
+      };
+    };
+    "source-map-support-0.5.16" = {
+      name = "source-map-support";
+      packageName = "source-map-support";
+      version = "0.5.16";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz";
+        sha512 = "1ayqxcigra517ylxbrvri7jlw55cv0m6a8j9j6060c5xsh519ip69jjp4jk6bqcj5ra5y318k6la6lfhpsj0k8hhkyw1szbj128pz3r";
+      };
+    };
+    "source-map-url-0.4.0" = {
+      name = "source-map-url";
+      packageName = "source-map-url";
+      version = "0.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz";
+        sha1 = "3e935d7ddd73631b97659956d55128e87b5084a3";
+      };
+    };
+    "spdx-correct-3.1.0" = {
+      name = "spdx-correct";
+      packageName = "spdx-correct";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz";
+        sha512 = "3qslnh3c2x2g8lar94rladm2rz692d5ds1bp1cpl223jf67jnazl9ipy4n17n7vqvgwimij36gz740nfqr5pyxq8x6n02rd4xj89gcn";
+      };
+    };
+    "spdx-exceptions-2.2.0" = {
+      name = "spdx-exceptions";
+      packageName = "spdx-exceptions";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz";
+        sha512 = "12c442riig2hk7014ahh40chwirmmsl9dr4cnm2dr2bdbv1lnal8xxwsfx403pqkx7ib06gm2hyyd98kn30kxanjm92yai5y44h0x6r";
+      };
+    };
+    "spdx-expression-parse-3.0.0" = {
+      name = "spdx-expression-parse";
+      packageName = "spdx-expression-parse";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz";
+        sha512 = "351djgqvsgqmfg6h764c2k09dmixczw5073jirm8km6i1yym4xjrzc7g5ckwkidi3gls7s910m4ahl8sh37dsb478j8j3sigbfq63k2";
+      };
+    };
+    "spdx-license-ids-3.0.5" = {
+      name = "spdx-license-ids";
+      packageName = "spdx-license-ids";
+      version = "3.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz";
+        sha512 = "3sk6sk6r05ikn5qslbh04h54mv4a34wn4d76s800h94padnjydfvvq73ij6jh81yrigspyr50ay878jjwpj2mcq38br371jkb6mdq97";
+      };
+    };
+    "spdy-4.0.1" = {
+      name = "spdy";
+      packageName = "spdy";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz";
+        sha512 = "2h245q80im9phjaghcl16kb4sv4n7igk0ch8dsqkq32dsfhcqysjx19blvd45whyaqh9r6309wc6pf6885apd1bcnn0yc2xy3f55rhx";
+      };
+    };
+    "spdy-transport-3.0.0" = {
+      name = "spdy-transport";
+      packageName = "spdy-transport";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz";
+        sha512 = "1rha3zyhardm434kr4h4y44wxpd49hqzzxqk1d9lqg91bkzfbp6qkh9nahdkkmpgbkc5021x8c8cy1aqnaph5ib1a9hx32j9qadbhl6";
+      };
+    };
+    "split-string-3.1.0" = {
+      name = "split-string";
+      packageName = "split-string";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz";
+        sha512 = "25ih1dx2qb3lawqjxj85znd4l3x8nnigrcdlpfw8064gh2mwxic9bgg5ylgxm9gjl3v8dmyc47rycp8xvqz78jqalg0g9yqj225acrp";
+      };
+    };
+    "sprintf-js-1.0.3" = {
+      name = "sprintf-js";
+      packageName = "sprintf-js";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz";
+        sha1 = "04e6926f662895354f3dd015203633b857297e2c";
+      };
+    };
+    "sshpk-1.16.1" = {
+      name = "sshpk";
+      packageName = "sshpk";
+      version = "1.16.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz";
+        sha512 = "0i4jnrxh6i17qij2vfki7qxmk435cnacvg363qg0hya5incfj57akgbas8zcx2cl5pds9jfgfyhqm8wlqz6damsg059gymv99aylx8x";
+      };
+    };
+    "ssri-5.3.0" = {
+      name = "ssri";
+      packageName = "ssri";
+      version = "5.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz";
+        sha512 = "00qc3iqsi21cc2az3nz36q88psab4ickpzranndk6vmrb6yhn5xsq3kgp21x3lp0406bdaalpb59xy7zzqnl40ans69v3z2l8z8h52x";
+      };
+    };
+    "ssri-6.0.1" = {
+      name = "ssri";
+      packageName = "ssri";
+      version = "6.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz";
+        sha512 = "107yg08ib4232ppannc6fw8ml8p1fssnvcf88cpq3s5ybq3r5ppxnmc32rp40i0ppbgxcw9q04d5rc90if0q3xyp953swad93biws6x";
+      };
+    };
+    "stack-utils-1.0.2" = {
+      name = "stack-utils";
+      packageName = "stack-utils";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz";
+        sha512 = "300alvgq7a9y0fyilyifhirpj9k0qvs6lx7g8msrs6lilcs8wjgl3jzckcs3mvp5v6bi2g7q6k1ml18zpgqvr5cf5wdylxrw4qzwd9i";
+      };
+    };
+    "static-extend-0.1.2" = {
+      name = "static-extend";
+      packageName = "static-extend";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz";
+        sha1 = "60809c39cbff55337226fd5e0b520f341f1fb5c6";
+      };
+    };
+    "statuses-1.5.0" = {
+      name = "statuses";
+      packageName = "statuses";
+      version = "1.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz";
+        sha1 = "161c7dac177659fd9811f43771fa99381478628c";
+      };
+    };
+    "stealthy-require-1.1.1" = {
+      name = "stealthy-require";
+      packageName = "stealthy-require";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz";
+        sha1 = "35b09875b4ff49f26a777e509b3090a3226bf24b";
+      };
+    };
+    "stream-browserify-2.0.2" = {
+      name = "stream-browserify";
+      packageName = "stream-browserify";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz";
+        sha512 = "2mfvadpwj9mzxps4arl1frxlkz96hfp0sc5pvq76s0ijf8fgw26mm3a721zq3iz1f8155w3a41wkixbdlwn1cavv0mzics796da2zlx";
+      };
+    };
+    "stream-each-1.2.3" = {
+      name = "stream-each";
+      packageName = "stream-each";
+      version = "1.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz";
+        sha512 = "0pxki70s41jg18b738qvcwxlcakp6658ksicxkcgg8wp9q97fwp3mv13c5k38k47vxkyyk951k7gzavs3r7b93ackdyznh8zzch4lxy";
+      };
+    };
+    "stream-http-2.8.3" = {
+      name = "stream-http";
+      packageName = "stream-http";
+      version = "2.8.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz";
+        sha512 = "19y2xbs1xzzpjwfdczl21d0d76ahd7013cr3mhfa6a8nbwwv9jpncng8idf0g8hnmnq2mcl3xh912rjlasl06wsz44qw3j7hdya8d7r";
+      };
+    };
+    "stream-shift-1.0.1" = {
+      name = "stream-shift";
+      packageName = "stream-shift";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz";
+        sha512 = "1ai59bc5x8d6a1c37fp2d2gi6q7x6fhza2jsf1sblrdvbza8j14a4xnp20lg65b8lzm0s95m3pqizblbj6ks44qf73gdllhbahaqa02";
+      };
+    };
+    "strict-uri-encode-1.1.0" = {
+      name = "strict-uri-encode";
+      packageName = "strict-uri-encode";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz";
+        sha1 = "279b225df1d582b1f54e65addd4352e18faa0713";
+      };
+    };
+    "string-length-2.0.0" = {
+      name = "string-length";
+      packageName = "string-length";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz";
+        sha1 = "d40dbb686a3ace960c1cffca562bf2c45f8363ed";
+      };
+    };
+    "string-width-1.0.2" = {
+      name = "string-width";
+      packageName = "string-width";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz";
+        sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
+      };
+    };
+    "string-width-2.1.1" = {
+      name = "string-width";
+      packageName = "string-width";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz";
+        sha512 = "29s1fqgr4mnhfxwczgdghfmmc1f792m9hysvcjxw2h5lfj8ndf2b6gm02m96qk5m75g4aisijvng4pk618anwbr8i9ay2jyszkqgslw";
+      };
+    };
+    "string-width-3.1.0" = {
+      name = "string-width";
+      packageName = "string-width";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz";
+        sha512 = "3bix3jva53vcp1im3aa1y2v1lywkm7ix81gkwkj4915s2675pmw1c9n5x98q1m985hzgwkk1fnc2q78qz7s0fixhf994md3lazxr9xx";
+      };
+    };
+    "string.prototype.trimleft-2.1.1" = {
+      name = "string.prototype.trimleft";
+      packageName = "string.prototype.trimleft";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz";
+        sha512 = "013lf0f398s2xb9jhq9acspdnnk52k7whcga9am4b8a2wrgpc2w7xgkydg4sg4ah9z3i1syimzqs7dc89390xmwlx8zxf6gvlcq1vca";
+      };
+    };
+    "string.prototype.trimright-2.1.1" = {
+      name = "string.prototype.trimright";
+      packageName = "string.prototype.trimright";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz";
+        sha512 = "3x2qc2fc2fh9sj3vw9w45h246vspjfn88b0k356ldazylhap91vg825bppg73s9n63kwpql3gpw24lv8zx0b2arblcqhh7ygwpxcnx8";
+      };
+    };
+    "string_decoder-1.1.1" = {
+      name = "string_decoder";
+      packageName = "string_decoder";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz";
+        sha512 = "315yd4vzwrwk3vwj1klf46y1cj2jbvf88066y2rnwhksb98phj46jkxixbwsp3h607w7czy7cby522s7sx8mvspdpdm3s72y2ga3x4z";
+      };
+    };
+    "strip-ansi-3.0.1" = {
+      name = "strip-ansi";
+      packageName = "strip-ansi";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
+        sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
+      };
+    };
+    "strip-ansi-4.0.0" = {
+      name = "strip-ansi";
+      packageName = "strip-ansi";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz";
+        sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
+      };
+    };
+    "strip-ansi-5.2.0" = {
+      name = "strip-ansi";
+      packageName = "strip-ansi";
+      version = "5.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz";
+        sha512 = "1cf4mpsr46nik5xxyb9wc4cz6c4yymi2ijpfx1nghnkl39l8pgq1sc7q19jzrjkwpn9i7hwg4q3rs4ny3vssrc6506an1lv0bb6rr0f";
+      };
+    };
+    "strip-bom-3.0.0" = {
+      name = "strip-bom";
+      packageName = "strip-bom";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz";
+        sha1 = "2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3";
+      };
+    };
+    "strip-eof-1.0.0" = {
+      name = "strip-eof";
+      packageName = "strip-eof";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz";
+        sha1 = "bb43ff5598a6eb05d89b59fcd129c983313606bf";
+      };
+    };
+    "supports-color-2.0.0" = {
+      name = "supports-color";
+      packageName = "supports-color";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz";
+        sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
+      };
+    };
+    "supports-color-5.5.0" = {
+      name = "supports-color";
+      packageName = "supports-color";
+      version = "5.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz";
+        sha512 = "2ihqi2z38fr1sq2jvwqgjqymncmkhxqz0x3bi97w4b4fn24wsdy71j139p95sb3nfrh3a449n0sqhm1z0jsi04860y8vdy8sp0n6da2";
+      };
+    };
+    "supports-color-6.1.0" = {
+      name = "supports-color";
+      packageName = "supports-color";
+      version = "6.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz";
+        sha512 = "30pwyjmww4d54bf2m6lpw20ly4blhb88sy3gn6qcjih2rfq1s5zsl1nszzwgj2j1gqn3c8mw52df0z26rqyk8flzimb70scdmz67vd9";
+      };
+    };
+    "symbol-tree-3.2.4" = {
+      name = "symbol-tree";
+      packageName = "symbol-tree";
+      version = "3.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz";
+        sha512 = "17zjr1mhbpxi4zhrmghix8hw1pi9svlwzjxz51mj2hxx9qpjwn1z9rlyrmdn55hbdiqnl8m9gkci2294swkkwp3rxpy05q3mkj680zm";
+      };
+    };
+    "tapable-1.1.3" = {
+      name = "tapable";
+      packageName = "tapable";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz";
+        sha512 = "283f6rp3hhj0lvi5smcvh4mq56mifjchgv6qlnr4qb1xs2fsyb2vy71b308h1285nngcz8q7cbmjp8qqzh0im71mx5wr3v6hrnvyqp1";
+      };
+    };
+    "terser-4.6.6" = {
+      name = "terser";
+      packageName = "terser";
+      version = "4.6.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/terser/-/terser-4.6.6.tgz";
+        sha512 = "3b8jz65d3105j7jw1b5jv6ww4z89nr3zjvwzsv7sk6n6sn469bnwxf1x04n7cixyz2xrnlz24yx8sw30wmzzas4434dick6wg4hymp2";
+      };
+    };
+    "terser-webpack-plugin-1.4.3" = {
+      name = "terser-webpack-plugin";
+      packageName = "terser-webpack-plugin";
+      version = "1.4.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz";
+        sha512 = "2n44cgqgz070skn207m3l6zg3q444p1db54g0j87fcjxwyhmlfvgg3kak5v1ffhg765cdxah1l99kjdcy74mc75nlq7907zbiq5xk20";
+      };
+    };
+    "test-exclude-5.2.3" = {
+      name = "test-exclude";
+      packageName = "test-exclude";
+      version = "5.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz";
+        sha512 = "3dgwbvh6yz24lh2kbdigw3j3kpxmmvlrqdhlc4innvrmyj0wvhs5ayckl00161sdx6a2pik344ggs49w9z1h6nh1v2fs542qyv33sik";
+      };
+    };
+    "thenify-3.3.0" = {
+      name = "thenify";
+      packageName = "thenify";
+      version = "3.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz";
+        sha1 = "e69e38a1babe969b0108207978b9f62b88604839";
+      };
+    };
+    "thenify-all-1.6.0" = {
+      name = "thenify-all";
+      packageName = "thenify-all";
+      version = "1.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz";
+        sha1 = "1a1918d402d8fc3f98fbf234db0bcc8cc10e9726";
+      };
+    };
+    "throat-4.1.0" = {
+      name = "throat";
+      packageName = "throat";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz";
+        sha1 = "89037cbc92c56ab18926e6ba4cbb200e15672a6a";
+      };
+    };
+    "through2-2.0.5" = {
+      name = "through2";
+      packageName = "through2";
+      version = "2.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz";
+        sha512 = "14xi6lbly1f37015ny2pzcnf5kaksjmpnhm61gfhwn686w5ac519qb1icxdda974n84f342g0y15kysj1hci2vl40z91aiivyhx2spy";
+      };
+    };
+    "thunky-1.1.0" = {
+      name = "thunky";
+      packageName = "thunky";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz";
+        sha512 = "2n8ys98dmv1625inb52cdr421ry82ri2sninmss1njzy9hxrlblw3fkvgr3na4d69glygww3g80bj4pgr9ik1zcm10ki0gd2yf3nxkq";
+      };
+    };
+    "timed-out-4.0.1" = {
+      name = "timed-out";
+      packageName = "timed-out";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz";
+        sha1 = "f32eacac5a175bea25d7fab565ab3ed8741ef56f";
+      };
+    };
+    "timers-browserify-2.0.11" = {
+      name = "timers-browserify";
+      packageName = "timers-browserify";
+      version = "2.0.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz";
+        sha512 = "0lrwqck7qvpvxswx5kmydj9nmn2rwckzzfpdf5mf869fqrs9girj45i80hdv99b81m4g8fgwqx2lqk04k7zars7rldq3r89r3m9aipb";
+      };
+    };
+    "tmpl-1.0.4" = {
+      name = "tmpl";
+      packageName = "tmpl";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz";
+        sha1 = "23640dd7b42d00433911140820e5cf440e521dd1";
+      };
+    };
+    "to-arraybuffer-1.0.1" = {
+      name = "to-arraybuffer";
+      packageName = "to-arraybuffer";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz";
+        sha1 = "7d229b1fcc637e466ca081180836a7aabff83f43";
+      };
+    };
+    "to-fast-properties-1.0.3" = {
+      name = "to-fast-properties";
+      packageName = "to-fast-properties";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz";
+        sha1 = "b83571fa4d8c25b82e231b06e3a3055de4ca1a47";
+      };
+    };
+    "to-fast-properties-2.0.0" = {
+      name = "to-fast-properties";
+      packageName = "to-fast-properties";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz";
+        sha1 = "dc5e698cbd079265bc73e0377681a4e4e83f616e";
+      };
+    };
+    "to-object-path-0.3.0" = {
+      name = "to-object-path";
+      packageName = "to-object-path";
+      version = "0.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz";
+        sha1 = "297588b7b0e7e0ac08e04e672f85c1f4999e17af";
+      };
+    };
+    "to-regex-3.0.2" = {
+      name = "to-regex";
+      packageName = "to-regex";
+      version = "3.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz";
+        sha512 = "03lcq1y1ks55lss37m3cx52f8f4wj85rqsxfxrhi3y8rqa0iiny6df8ardg2f742z870v7xw749lcsxh8yplsmbvaig4rrds1w6asqm";
+      };
+    };
+    "to-regex-range-2.1.1" = {
+      name = "to-regex-range";
+      packageName = "to-regex-range";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz";
+        sha1 = "7c80c17b9dfebe599e27367e0d4dd5590141db38";
+      };
+    };
+    "toidentifier-1.0.0" = {
+      name = "toidentifier";
+      packageName = "toidentifier";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz";
+        sha512 = "1bip1yxcfy4c0yl2kwmj9jyzfg1ixyj564wd1aaf46rabdiasx62yznb8bwn9cki886f353axgca42zma7q9rb4b50lhm1zz7y8g8y9";
+      };
+    };
+    "token-stream-0.0.1" = {
+      name = "token-stream";
+      packageName = "token-stream";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz";
+        sha1 = "ceeefc717a76c4316f126d0b9dbaa55d7e7df01a";
+      };
+    };
+    "tough-cookie-2.5.0" = {
+      name = "tough-cookie";
+      packageName = "tough-cookie";
+      version = "2.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz";
+        sha512 = "3xgcny117pqhfncr4gbmagzlnjiqqgq0lrvmljdfcdy64nc0xjfcbf1r08dmp1v1m3s51kq0yxc18nl3j9lbpr5bp5lgmi6719yqlly";
+      };
+    };
+    "tr46-1.0.1" = {
+      name = "tr46";
+      packageName = "tr46";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz";
+        sha1 = "a8b13fd6bfd2489519674ccde55ba3693b706d09";
+      };
+    };
+    "trim-right-1.0.1" = {
+      name = "trim-right";
+      packageName = "trim-right";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz";
+        sha1 = "cb2e1203067e0c8de1f614094b9fe45704ea6003";
+      };
+    };
+    "tryer-1.0.1" = {
+      name = "tryer";
+      packageName = "tryer";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz";
+        sha512 = "0092ym5f8nqn9kwk6wczdd9g9cmyakl54rqrmrmhj1ncm4c5p8iy2sjxkxybnqp4y4bxsabar5kalggrz787665r6lnb49zpz4xlz3k";
+      };
+    };
+    "ts-jest-24.3.0" = {
+      name = "ts-jest";
+      packageName = "ts-jest";
+      version = "24.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ts-jest/-/ts-jest-24.3.0.tgz";
+        sha512 = "1arvrclb8plyklschblbipqilv7gih7yh7my5flmpa6y50x0908x7viisbb5wj93v4r2d12xcbi9rm2n0jwljcraliqhi4hzw5pigqx";
+      };
+    };
+    "tslib-1.11.1" = {
+      name = "tslib";
+      packageName = "tslib";
+      version = "1.11.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz";
+        sha512 = "0c0k843zya7w9k5snfr3g76wz2vyl99q149safl5g364jjwq839h3qf8c17i8mahdcqc3zj3xgfv0nv9pcxfm8axva0d49w4vqvr5b9";
+      };
+    };
+    "tsscmp-1.0.6" = {
+      name = "tsscmp";
+      packageName = "tsscmp";
+      version = "1.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz";
+        sha512 = "104f0vccp42fba9r2ij7ww4r7mazkmvqgj8is4ipg0jfx190n967qq5b1g0n77kcmm4d2m3l3q3cmh5kqgdmv886514akn38c16s61g";
+      };
+    };
+    "tty-browserify-0.0.0" = {
+      name = "tty-browserify";
+      packageName = "tty-browserify";
+      version = "0.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz";
+        sha1 = "a157ba402da24e9bf957f9aa69d524eed42901a6";
+      };
+    };
+    "tunnel-agent-0.6.0" = {
+      name = "tunnel-agent";
+      packageName = "tunnel-agent";
+      version = "0.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
+        sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
+      };
+    };
+    "tweetnacl-0.14.5" = {
+      name = "tweetnacl";
+      packageName = "tweetnacl";
+      version = "0.14.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
+        sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
+      };
+    };
+    "type-1.2.0" = {
+      name = "type";
+      packageName = "type";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/type/-/type-1.2.0.tgz";
+        sha512 = "1z2f06mzr855vwxwr0wkndnkn3fnjcwisd3iajkh6dmzz0dn1a5amq7m798j1ass4kiymz4gn3q0c573l21377dkq1ap2i703jfv6gv";
+      };
+    };
+    "type-2.0.0" = {
+      name = "type";
+      packageName = "type";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/type/-/type-2.0.0.tgz";
+        sha512 = "2iyk1bl159vr7i0r24jawi0lwrgns8xvsw72962lvzw6qshm5blls6p7spkpcqpgwb0p7liwdix0ph0j22dip1rg812xbw723rpj6r8";
+      };
+    };
+    "type-check-0.3.2" = {
+      name = "type-check";
+      packageName = "type-check";
+      version = "0.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz";
+        sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
+      };
+    };
+    "type-is-1.6.18" = {
+      name = "type-is";
+      packageName = "type-is";
+      version = "1.6.18";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz";
+        sha512 = "3r7402x79nilhdgk4z21yjh5y9vix8lwlll1kzcn8jd2m89vzksdb6wddia77cxv3iwhd6i5hkv6n7diwjbhpy7y03i2kqlvfplli2f";
+      };
+    };
+    "typedarray-0.0.6" = {
+      name = "typedarray";
+      packageName = "typedarray";
+      version = "0.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz";
+        sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
+      };
+    };
+    "typedarray-to-buffer-3.1.5" = {
+      name = "typedarray-to-buffer";
+      packageName = "typedarray-to-buffer";
+      version = "3.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz";
+        sha512 = "3cvrfgjsyvnh9fdyixjzx9mwkfcjfyhgsjizzxzmrsvb1pwch0y58crjh7p6b0ml9nl7jr55nx5dyslq3jn15qz555fl3a4qdfbrnyd";
+      };
+    };
+    "typescript-3.8.3" = {
+      name = "typescript";
+      packageName = "typescript";
+      version = "3.8.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz";
+        sha512 = "3rwcbg3l3w3l2zr5y9lszqs30s29jzvh1w594rbdljyr582yi6vajzs2fg04s9p79klh3iv0980b91mbr94sl77h9nb7b2mgrz4929i";
+      };
+    };
+    "typical-4.0.0" = {
+      name = "typical";
+      packageName = "typical";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz";
+        sha512 = "13n01mbvkc5ikjpc69q3ixakq46pp2nbagrwz2a40ff7as9sandwzp51nhh6hy42l9yxq2pjv2y1whds49yq7akh9c3211vyhigh0al";
+      };
+    };
+    "uglify-js-2.8.29" = {
+      name = "uglify-js";
+      packageName = "uglify-js";
+      version = "2.8.29";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz";
+        sha1 = "29c5733148057bb4e1f75df35b7a9cb72e6a59dd";
+      };
+    };
+    "uglify-to-browserify-1.0.2" = {
+      name = "uglify-to-browserify";
+      packageName = "uglify-to-browserify";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz";
+        sha1 = "6e0924d6bda6b5afe349e39a6d632850a0f882b7";
+      };
+    };
+    "underscore-1.9.2" = {
+      name = "underscore";
+      packageName = "underscore";
+      version = "1.9.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/underscore/-/underscore-1.9.2.tgz";
+        sha512 = "0fpcm4n2qlycl50j6k3fv7baybnzf1wbsm2ng0vwfsdi40fyvsvvl0k1i427hgpknhj5hbcwff3swckw6wx96kw4dgwvldi56v6lzqg";
+      };
+    };
+    "union-value-1.0.1" = {
+      name = "union-value";
+      packageName = "union-value";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz";
+        sha512 = "1g7i0bs3sa35zpsrr2l3wsz4j6bqpxgm77kg2fdz89irzw6nrk6j93j61wr134mg9rbf039xa4pp1dw0iqfsv15rkf8jn8y2fdxg5xl";
+      };
+    };
+    "unique-filename-1.1.1" = {
+      name = "unique-filename";
+      packageName = "unique-filename";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz";
+        sha512 = "0sp2fs9gsv3l6mc9kdk09z835d54gw04x02dlz9q208mda3f6bmqd4vix4634kv9njvvxcz3iswcj6fwcmszvima7wpv5knia678sjn";
+      };
+    };
+    "unique-slug-2.0.2" = {
+      name = "unique-slug";
+      packageName = "unique-slug";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz";
+        sha512 = "3dz3f3rqwqssr86c072j9m8m7l98l20b3i75diqrq5l871d647jmdf7pjjml7l83iqvjnb2frz7h6xbs8rpx3rkvk1h5i6swvsap1ff";
+      };
+    };
+    "unpipe-1.0.0" = {
+      name = "unpipe";
+      packageName = "unpipe";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz";
+        sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
+      };
+    };
+    "unset-value-1.0.0" = {
+      name = "unset-value";
+      packageName = "unset-value";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz";
+        sha1 = "8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559";
+      };
+    };
+    "upath-1.2.0" = {
+      name = "upath";
+      packageName = "upath";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz";
+        sha512 = "230pbhzxv0jr9n43qhghbsdbsp1rwalc3rclaqscwjaazi35s6vzw9p66s3ypk6yn3jgpmqflda2yh8j2rlypz9vihasfw5m6jhd739";
+      };
+    };
+    "uri-js-4.2.2" = {
+      name = "uri-js";
+      packageName = "uri-js";
+      version = "4.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz";
+        sha512 = "2fz60s71ghl56ddfiiaws81xpiidlbjk69jyjmahz190d2advy9zdbcwh5if4rgg5hxdbfxhkwiipjrnjy8w834bxsmzambd2p4b3r9";
+      };
+    };
+    "urijs-1.19.2" = {
+      name = "urijs";
+      packageName = "urijs";
+      version = "1.19.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/urijs/-/urijs-1.19.2.tgz";
+        sha512 = "3mmrbgqk7ihxy43py896gl9cv3q8bapnwfg5vcsd82b5mlkd3qa4i7vfdihpk5c2jxkhz5anm8qxxm31fahfi3xxkcr7q59ssmhixdk";
+      };
+    };
+    "urix-0.1.0" = {
+      name = "urix";
+      packageName = "urix";
+      version = "0.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz";
+        sha1 = "da937f7a62e21fec1fd18d49b35c2935067a6c72";
+      };
+    };
+    "url-0.11.0" = {
+      name = "url";
+      packageName = "url";
+      version = "0.11.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/url/-/url-0.11.0.tgz";
+        sha1 = "3838e97cfc60521eb73c525a8e55bfdd9e2e28f1";
+      };
+    };
+    "url-parse-1.4.7" = {
+      name = "url-parse";
+      packageName = "url-parse";
+      version = "1.4.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz";
+        sha512 = "2bdb8rqxq8xd530jx6q8awb1y9idrvd8cfznrlyc1h8j4ra1icxcssfg7qldhssj6dxvibkvx6rnn1ljkjbxi95l58dn1y35ibrlyvp";
+      };
+    };
+    "url-parse-lax-3.0.0" = {
+      name = "url-parse-lax";
+      packageName = "url-parse-lax";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz";
+        sha1 = "16b5cafc07dbe3676c1b1999177823d6503acb0c";
+      };
+    };
+    "url-to-options-1.0.1" = {
+      name = "url-to-options";
+      packageName = "url-to-options";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz";
+        sha1 = "1505a03a289a48cbd7a434efbaeec5055f5633a9";
+      };
+    };
+    "use-3.1.1" = {
+      name = "use";
+      packageName = "use";
+      version = "3.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/use/-/use-3.1.1.tgz";
+        sha512 = "2hzzynss1cv7kn1lf40hqk16qmbf38g7a28m27pcg05mg6vpf7sj0gy175fdscz534fxdi14622rmq3sdpib9c5ypjympjfg5ai40bk";
+      };
+    };
+    "util-0.10.3" = {
+      name = "util";
+      packageName = "util";
+      version = "0.10.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/util/-/util-0.10.3.tgz";
+        sha1 = "7afb1afe50805246489e3db7fe0ed379336ac0f9";
+      };
+    };
+    "util-0.11.1" = {
+      name = "util";
+      packageName = "util";
+      version = "0.11.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/util/-/util-0.11.1.tgz";
+        sha512 = "0fpzl6qczbzr5jniy99vgfxz1k4gdfl13lwwhlfysj22rm18ikfici89wpgv34v67ckays1d500fgk2dlzw95zncn9jvkdygjr40a0x";
+      };
+    };
+    "util-deprecate-1.0.2" = {
+      name = "util-deprecate";
+      packageName = "util-deprecate";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
+        sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
+      };
+    };
+    "util.promisify-1.0.1" = {
+      name = "util.promisify";
+      packageName = "util.promisify";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz";
+        sha512 = "2n8sxd1qdzc7pn348ayx8jm13kvi9wyjkshzwy1fam3aiy8phv8lbikbli433qvnq3ndnqj8yhcf9dgavm2xv6cvzk7cyy7zl5nkll3";
+      };
+    };
+    "utils-merge-1.0.1" = {
+      name = "utils-merge";
+      packageName = "utils-merge";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz";
+        sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
+      };
+    };
+    "uuid-3.4.0" = {
+      name = "uuid";
+      packageName = "uuid";
+      version = "3.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz";
+        sha512 = "3y9pcli1v8nqryqd2c4pxj9kcv92mjc22z4smg08pdjzrbwda19xmjbzms1dwr04995h4carz9s8mldbiqb8708694lwr501r3q6d0y";
+      };
+    };
+    "v8-compile-cache-2.0.3" = {
+      name = "v8-compile-cache";
+      packageName = "v8-compile-cache";
+      version = "2.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz";
+        sha512 = "3givf3csckgfmf3aahy2cdnn1wanqnyjhxq52s8mi349v658g9izi20prr2y5m8gxrv69idkvvwp5njwqds49kbyhmkq1hc0iprvn88";
+      };
+    };
+    "validate-npm-package-license-3.0.4" = {
+      name = "validate-npm-package-license";
+      packageName = "validate-npm-package-license";
+      version = "3.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz";
+        sha512 = "09vn7gn5jp2c07pxplc11lvk7ybfaz0rp3qzflyiyhnahkfgh76bij31ll5rg01ranlmljrky2q25d1f6bbd0h23pzxxi5z93csd4hf";
+      };
+    };
+    "vary-1.1.2" = {
+      name = "vary";
+      packageName = "vary";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz";
+        sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc";
+      };
+    };
+    "verror-1.10.0" = {
+      name = "verror";
+      packageName = "verror";
+      version = "1.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
+        sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
+      };
+    };
+    "vm-browserify-1.1.2" = {
+      name = "vm-browserify";
+      packageName = "vm-browserify";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz";
+        sha512 = "00japcjqx1df1bgck837ds0xvg5dr7g4j30a38zhbmanqss2kyxs4p7pgmldlnxpa31js50gydy8x9qi89s4x74iidf6k6nfgqsc5ns";
+      };
+    };
+    "void-elements-2.0.1" = {
+      name = "void-elements";
+      packageName = "void-elements";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz";
+        sha1 = "c066afb582bb1cb4128d60ea92392e94d5e9dbec";
+      };
+    };
+    "w3c-hr-time-1.0.2" = {
+      name = "w3c-hr-time";
+      packageName = "w3c-hr-time";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz";
+        sha512 = "1ykk57cjg94sdr82b43a5q815xrd4yhvpqzdwlpvfi50zv5zw4cincppdbkmizdc4zkmym57s8rqmpj5fpyxjl12kla136dy07gkhyg";
+      };
+    };
+    "walker-1.0.7" = {
+      name = "walker";
+      packageName = "walker";
+      version = "1.0.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz";
+        sha1 = "2f7f9b8fd10d677262b18a884e28d19618e028fb";
+      };
+    };
+    "watchpack-1.6.0" = {
+      name = "watchpack";
+      packageName = "watchpack";
+      version = "1.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz";
+        sha512 = "34gp4bbaidicl7azgivrrxb9kvdz501gg0xyf88lya75j9wmrbd1rs5rlk2h5g07q5rb453fkjkck54j2qzsdam1qk36bijf5xlg9wb";
+      };
+    };
+    "wbuf-1.7.3" = {
+      name = "wbuf";
+      packageName = "wbuf";
+      version = "1.7.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz";
+        sha512 = "066j9njgvk6mkjalv1zf1p8w9m2hrl97vz1iw8q6g9zlplhphz54j5j0ma0x9053zhczbyi3k1nr493vgnx1lk22hdwp2glg8x11kiv";
+      };
+    };
+    "wcwidth-1.0.1" = {
+      name = "wcwidth";
+      packageName = "wcwidth";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz";
+        sha1 = "f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8";
+      };
+    };
+    "webidl-conversions-4.0.2" = {
+      name = "webidl-conversions";
+      packageName = "webidl-conversions";
+      version = "4.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz";
+        sha512 = "15gwgjh9anvzcissfhxy3gki7jxn1dy9vq5rma1sgwkbbra8wbxnvimwalgmy8anm33x56mfp492akzhs0gidwmbnadx0ck3fdq23v1";
+      };
+    };
+    "webpack-4.42.0" = {
+      name = "webpack";
+      packageName = "webpack";
+      version = "4.42.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/webpack/-/webpack-4.42.0.tgz";
+        sha512 = "3my3qykp4laavc26aad536i8n5h6isv7rnrsv092i7nbyy7dkpi59w3jsxrz7yhbrzwvyiqs78kv8q2plswm8camnc1ij0hzhg52chk";
+      };
+    };
+    "webpack-bundle-analyzer-3.6.1" = {
+      name = "webpack-bundle-analyzer";
+      packageName = "webpack-bundle-analyzer";
+      version = "3.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.1.tgz";
+        sha512 = "13z3rjpds6nclkfxhf6pdnmp78a485psglljlmzibrlx4anhldzw2rvdwi9hzzjpfpi8d7ihhwc1w8s1k23zgh00xqisjqz7hf7rxrm";
+      };
+    };
+    "webpack-cli-3.3.11" = {
+      name = "webpack-cli";
+      packageName = "webpack-cli";
+      version = "3.3.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.11.tgz";
+        sha512 = "3i5vq7c9hpjb8z9x68dq56cjmv5hs584vgci6zbc7n0m8y1fk4y1kv4pyrq4q9crlkwirwy6gh5w3q0a2xv43w5q42z1ikvd6x5yybm";
+      };
+    };
+    "webpack-dev-middleware-3.7.2" = {
+      name = "webpack-dev-middleware";
+      packageName = "webpack-dev-middleware";
+      version = "3.7.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz";
+        sha512 = "27qjisacr2wrfj7r3z5hh2x7nrhadc27vg4kcalrdc7rrn8gnnlk64zf1pqmlkffy8klh8r0dr259v1sf6fjm886j5qlqjvpkcbh46p";
+      };
+    };
+    "webpack-dev-server-3.10.3" = {
+      name = "webpack-dev-server";
+      packageName = "webpack-dev-server";
+      version = "3.10.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz";
+        sha512 = "1wl6ahwwfvm7620d70by2abmqgvw54mdhr8bxhdnnsvjzincy83rg80vffb1vwm2cvxwdc9qpp7ipq8bqrkf773fi6lbk0qzxxdd2bv";
+      };
+    };
+    "webpack-log-1.2.0" = {
+      name = "webpack-log";
+      packageName = "webpack-log";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz";
+        sha512 = "0f0lcci53li31zhx7vhwaq4di0xvhd0n02rgy54kb4bcq6fzki0lz34s6ldzwf1ppaqw1n6jc3hp64blldhz8ianvbl3rzf54h2gl2k";
+      };
+    };
+    "webpack-log-2.0.0" = {
+      name = "webpack-log";
+      packageName = "webpack-log";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz";
+        sha512 = "191qr8nb4rszy53q0ydqfxr1pirimc3k3bi7mhgin5f15cd7vd28maxanyb248kdivmajhji580fv3a1i584icz3cc9bwvzykd0czvi";
+      };
+    };
+    "webpack-sources-1.4.3" = {
+      name = "webpack-sources";
+      packageName = "webpack-sources";
+      version = "1.4.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz";
+        sha512 = "1wn7ixcv4b15kj3jn4c08n3pgrrd2kgzm2llh9viqx6a6k3j6rqzd5iksxdkalzaz6iic1q4fjj6wr9wfa07llf5a751mkgg3fx414n";
+      };
+    };
+    "websocket-1.0.31" = {
+      name = "websocket";
+      packageName = "websocket";
+      version = "1.0.31";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/websocket/-/websocket-1.0.31.tgz";
+        sha512 = "22yr8a52nsijkqybp8fgzvh69wxrhmcqmcmjvmdwl6m9qix0lxdyakbvznj0wr90nl3mw5j4srhgxp6p8ihipil2j5gha66bfk2w2jl";
+      };
+    };
+    "websocket-driver-0.7.3" = {
+      name = "websocket-driver";
+      packageName = "websocket-driver";
+      version = "0.7.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz";
+        sha512 = "0b5m603phj37lw5vb70ijc77g29cz7vn1w1bs7rhkx1ax3gil0wys841m14gnm3p95lc630hs370dngh68p7aaq69yqw1yvysb5d73f";
+      };
+    };
+    "websocket-extensions-0.1.3" = {
+      name = "websocket-extensions";
+      packageName = "websocket-extensions";
+      version = "0.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz";
+        sha512 = "0d1n4yv45ibxf72hj7qka3j7v53dwn58savfiyvsppqhhrgg3g648ykk5v7fpb53hz85kj87m4f45r7d5iazx4yqgs381z6qnfd98cy";
+      };
+    };
+    "whatwg-encoding-1.0.5" = {
+      name = "whatwg-encoding";
+      packageName = "whatwg-encoding";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz";
+        sha512 = "09x9fa2rb8a6lmwy9hs7z4qn2bsyqw8l2hmfy50z3fa496x3p2xadmlccm8ad17nam5fz77z9mndw2yqp8jpvyw3ryz6f09ksdn56bg";
+      };
+    };
+    "whatwg-mimetype-2.3.0" = {
+      name = "whatwg-mimetype";
+      packageName = "whatwg-mimetype";
+      version = "2.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz";
+        sha512 = "3zaycdfc1hh0i4r1c42vgkzwmlfv8j68d90f6i577735i40hk9p9m790g2z2dlmdkchn2z73yj0zs73fmpjdnx4xwrp80m6pv18r31k";
+      };
+    };
+    "whatwg-url-6.5.0" = {
+      name = "whatwg-url";
+      packageName = "whatwg-url";
+      version = "6.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz";
+        sha512 = "36rzky2jm48j68kfvdhvr0cmbnvr2liaagpnnypc59mlvq4bbcwx9qbdb93hbi4vwx0w287zphiardpmfwyjl2ab58b4k3zmi35j55f";
+      };
+    };
+    "whatwg-url-7.1.0" = {
+      name = "whatwg-url";
+      packageName = "whatwg-url";
+      version = "7.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz";
+        sha512 = "1xa656b9abn0fnwqaybjm3h5gs9x26cc3zj7jkk5n3865l9d1wqpp461s4l3i2mgbwf90q6psgvbb80lbrmkihbl4xq7bj31m3bnjsr";
+      };
+    };
+    "which-1.3.1" = {
+      name = "which";
+      packageName = "which";
+      version = "1.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/which/-/which-1.3.1.tgz";
+        sha512 = "0hr4hxkk8yb9fz993bs69pf8z2z2qb6sdpxfxb84sd16lja9fsx444pk1ang1ivmjjv5srnsm6fihdj593w7rwxdh834cdmd9hms4hz";
+      };
+    };
+    "which-module-2.0.0" = {
+      name = "which-module";
+      packageName = "which-module";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz";
+        sha1 = "d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a";
+      };
+    };
+    "window-size-0.1.0" = {
+      name = "window-size";
+      packageName = "window-size";
+      version = "0.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz";
+        sha1 = "5438cd2ea93b202efa3a19fe8887aee7c94f9c9d";
+      };
+    };
+    "with-5.1.1" = {
+      name = "with";
+      packageName = "with";
+      version = "5.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/with/-/with-5.1.1.tgz";
+        sha1 = "fa4daa92daf32c4ea94ed453c81f04686b575dfe";
+      };
+    };
+    "word-wrap-1.2.3" = {
+      name = "word-wrap";
+      packageName = "word-wrap";
+      version = "1.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz";
+        sha512 = "2ykkqcs7vmimn8dsvs7xl55j0lbbrfj0nij9i7yqnxg9g759vqyrdis8w5n82k6xvas03x0xhgmbzjgsp7v803mzihx9d12vjnfcgqz";
+      };
+    };
+    "wordwrap-0.0.2" = {
+      name = "wordwrap";
+      packageName = "wordwrap";
+      version = "0.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz";
+        sha1 = "b79669bb42ecb409f83d583cad52ca17eaa1643f";
+      };
+    };
+    "worker-farm-1.7.0" = {
+      name = "worker-farm";
+      packageName = "worker-farm";
+      version = "1.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz";
+        sha512 = "37m9wq9rvylb71n9kw3qghinwa3x4sggz82k29aall83izni78ijnh8rd6nhas8advw0lbnhby8z74vjlhp3sjsr4qm1wjw6r0kgz5f";
+      };
+    };
+    "wrap-ansi-2.1.0" = {
+      name = "wrap-ansi";
+      packageName = "wrap-ansi";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz";
+        sha1 = "d8fc3d284dd05794fe84973caecdd1cf824fdd85";
+      };
+    };
+    "wrap-ansi-5.1.0" = {
+      name = "wrap-ansi";
+      packageName = "wrap-ansi";
+      version = "5.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz";
+        sha512 = "3nmsfqfd98a7bgjyhd334y5gzc98nnkipfkmk2z1v4m0acagmpq951d8brmrsxvpnk256fbrp7zkn5n8v02pn4q4zai7zgnvy47yba0";
+      };
+    };
+    "wrappy-1.0.2" = {
+      name = "wrappy";
+      packageName = "wrappy";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
+        sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
+      };
+    };
+    "write-file-atomic-2.4.1" = {
+      name = "write-file-atomic";
+      packageName = "write-file-atomic";
+      version = "2.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz";
+        sha512 = "2zcd4w8bmjv2qg25v2ysnj63r717jb6zmrh2f4c92r0dh0zwj3ybyzg5h619b4adxksn67cg8y5pgn43hq7wl8ih3z7nchrj5wwaqac";
+      };
+    };
+    "ws-5.2.2" = {
+      name = "ws";
+      packageName = "ws";
+      version = "5.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz";
+        sha512 = "0f6ay7yn6xslzh3h66d5krqnp48d9g3ikwk0ijiyyxfkwaqxxf3b0qdswy6ych79mj44315qd16snlnk6m6npc5l0habgy5lc7wb8cd";
+      };
+    };
+    "ws-6.2.1" = {
+      name = "ws";
+      packageName = "ws";
+      version = "6.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz";
+        sha512 = "2l27cfiaw6syjvy6vbpqf5c2swd37bqviizzck6842xlankppm9j1sg79x3m8jpda8v6khcpnm5ssab1b8vf34qpviv41ww5mf8130q";
+      };
+    };
+    "xml-name-validator-3.0.0" = {
+      name = "xml-name-validator";
+      packageName = "xml-name-validator";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz";
+        sha512 = "0zzh3xf5vk49fghwrf83qvq6v98qin1brnwd7yyh7qs05gc1w3xni0w17sj33534jrkm2za7wkm4q5rhgpchds54i5grcj3vjk99403";
+      };
+    };
+    "xtend-4.0.2" = {
+      name = "xtend";
+      packageName = "xtend";
+      version = "4.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz";
+        sha512 = "08w1d6fg23v422cfwd55306pfs9n9cqpz6hycahq3adm3n29wmhl9bmpn4vk75rlzgwn7hp4n3idqxvw8c53zbr04h7a98p43b199ic";
+      };
+    };
+    "y18n-4.0.0" = {
+      name = "y18n";
+      packageName = "y18n";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz";
+        sha512 = "3zj75gvpcgiphxpci4ji1znykk9n4cs0aw3dd6inwdvkmxyqn2483vya70lssjwq8alspnpw88vgii21fdrcn2vmfyppzgf4mkvzm5g";
+      };
+    };
+    "yaeti-0.0.6" = {
+      name = "yaeti";
+      packageName = "yaeti";
+      version = "0.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz";
+        sha1 = "f26f484d72684cf42bedfb76970aa1608fbf9577";
+      };
+    };
+    "yallist-2.1.2" = {
+      name = "yallist";
+      packageName = "yallist";
+      version = "2.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz";
+        sha1 = "1c11f9218f076089a47dd512f93c6699a6a81d52";
+      };
+    };
+    "yallist-3.1.1" = {
+      name = "yallist";
+      packageName = "yallist";
+      version = "3.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz";
+        sha512 = "3ig31a6zfbdlrs3l77a8avpp17hajryhyq2xk4h3ayc4dmxch146rdk7q1s1jgx9qvmxq125r0xq2bvnq0rq63m75k9y7wglm0hd1bb";
+      };
+    };
+    "yargs-12.0.5" = {
+      name = "yargs";
+      packageName = "yargs";
+      version = "12.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz";
+        sha512 = "1kjmh68p4rb4c04s0gk4ra20crfr32h6v9zhj4clrz61xanslza9g3drbf6471mmvqq3vmxk04grmgillx1rsp6v2zim7wqnr6gq71f";
+      };
+    };
+    "yargs-13.2.4" = {
+      name = "yargs";
+      packageName = "yargs";
+      version = "13.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz";
+        sha512 = "2ba88a0fmf5k7dddcbkyhlmh7pijzczza486f2vq9pyw739r7q4yy2xmv4hk8w4ibrj4sjgf6zw01phb89h4j9z3lkz1m2s09cc6vqw";
+      };
+    };
+    "yargs-13.3.2" = {
+      name = "yargs";
+      packageName = "yargs";
+      version = "13.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz";
+        sha512 = "19rg5b2rhj2kg44as5vv9jxmpr39lw250885w6nlfwyhvwd5nxnnx7fc35v7h615i65cik7k3wi7ac20c91kcgfi5wy7blgk31xjz81";
+      };
+    };
+    "yargs-3.10.0" = {
+      name = "yargs";
+      packageName = "yargs";
+      version = "3.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz";
+        sha1 = "f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1";
+      };
+    };
+    "yargs-parser-10.1.0" = {
+      name = "yargs-parser";
+      packageName = "yargs-parser";
+      version = "10.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz";
+        sha512 = "1nj7f7y3kyrc1ijsgnaf4mdkxhxy38lnckavl6inh9wwzhx12xfmgq0n45x4fbj0y6rd1zhjv57l49qm07kqfd9a9cl1809bi3k48jl";
+      };
+    };
+    "yargs-parser-11.1.1" = {
+      name = "yargs-parser";
+      packageName = "yargs-parser";
+      version = "11.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz";
+        sha512 = "14iaywclwncdp3p7878q12cqgdc5rbkl0f6ghi9g7k7f4f1bbqi41dc5ki6hnqmy6jbfk0kx88m47vk3igrql5j6i7ar2a3cbyh3a8b";
+      };
+    };
+    "yargs-parser-13.1.2" = {
+      name = "yargs-parser";
+      packageName = "yargs-parser";
+      version = "13.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz";
+        sha512 = "375nan6m28q81h8q9a8vmcxgiq7s81yn1ql7zdikac0c4j2kmxdjzmbq14fcp9jm4ilcfzkd9ym4x7c80s7r6g488wf13zz2wsyqmny";
+      };
+    };
+    "ylru-1.2.1" = {
+      name = "ylru";
+      packageName = "ylru";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ylru/-/ylru-1.2.1.tgz";
+        sha512 = "2yw1b7v991krvw6f597i39x9sqp12qxlfnqz8zd75x00m7jp2a08b2zivbx59b5ih7ka14swqmpfk9ni2inkdjh363z0w1ksfl2p93x";
+      };
+    };
+  };
+in
+{
+  "spacegun-git+https://github.com/dvallin/spacegun.git#v0.3.3" = nodeEnv.buildNodePackage {
+    name = "spacegun";
+    packageName = "spacegun";
+    version = "0.3.3";
+    src = fetchgit {
+      url = "https://github.com/dvallin/spacegun.git";
+      rev = "d32d2df34362f6744e8cff34c2d2bf6ce8b4662a";
+      sha256 = "589bfc9e3e26af38989144e8551547cbeb5ffc9a0b668a7a4cb211a2ebf7a931";
+    };
+    dependencies = [
+      sources."@babel/code-frame-7.8.3"
+      (sources."@babel/core-7.8.7" // {
+        dependencies = [
+          sources."debug-4.1.1"
+          sources."json5-2.1.1"
+          sources."minimist-1.2.5"
+          sources."ms-2.1.2"
+          sources."source-map-0.5.7"
+        ];
+      })
+      (sources."@babel/generator-7.8.8" // {
+        dependencies = [
+          sources."jsesc-2.5.2"
+          sources."source-map-0.5.7"
+        ];
+      })
+      sources."@babel/helper-function-name-7.8.3"
+      sources."@babel/helper-get-function-arity-7.8.3"
+      sources."@babel/helper-plugin-utils-7.8.3"
+      sources."@babel/helper-split-export-declaration-7.8.3"
+      sources."@babel/helpers-7.8.4"
+      (sources."@babel/highlight-7.8.3" // {
+        dependencies = [
+          sources."js-tokens-4.0.0"
+        ];
+      })
+      sources."@babel/parser-7.8.8"
+      sources."@babel/plugin-syntax-object-rest-spread-7.8.3"
+      sources."@babel/template-7.8.6"
+      (sources."@babel/traverse-7.8.6" // {
+        dependencies = [
+          sources."debug-4.1.1"
+          sources."globals-11.12.0"
+          sources."ms-2.1.2"
+        ];
+      })
+      (sources."@babel/types-7.8.7" // {
+        dependencies = [
+          sources."to-fast-properties-2.0.0"
+        ];
+      })
+      (sources."@cnakazawa/watch-1.0.4" // {
+        dependencies = [
+          sources."minimist-1.2.5"
+        ];
+      })
+      (sources."@jest/console-24.9.0" // {
+        dependencies = [
+          sources."slash-2.0.0"
+        ];
+      })
+      (sources."@jest/core-24.9.0" // {
+        dependencies = [
+          sources."slash-2.0.0"
+        ];
+      })
+      sources."@jest/environment-24.9.0"
+      sources."@jest/fake-timers-24.9.0"
+      (sources."@jest/reporters-24.9.0" // {
+        dependencies = [
+          sources."slash-2.0.0"
+        ];
+      })
+      sources."@jest/source-map-24.9.0"
+      sources."@jest/test-result-24.9.0"
+      sources."@jest/test-sequencer-24.9.0"
+      (sources."@jest/transform-24.9.0" // {
+        dependencies = [
+          sources."slash-2.0.0"
+        ];
+      })
+      sources."@jest/types-24.9.0"
+      (sources."@kubernetes/client-node-0.10.3" // {
+        dependencies = [
+          sources."@types/node-10.17.17"
+        ];
+      })
+      sources."@sindresorhus/is-0.7.0"
+      sources."@types/accepts-1.3.5"
+      sources."@types/axios-0.14.0"
+      sources."@types/babel-types-7.0.7"
+      sources."@types/babel__core-7.1.6"
+      sources."@types/babel__generator-7.6.1"
+      sources."@types/babel__template-7.0.2"
+      sources."@types/babel__traverse-7.0.9"
+      sources."@types/babylon-6.16.5"
+      sources."@types/body-parser-1.19.0"
+      sources."@types/caseless-0.12.2"
+      sources."@types/command-line-args-5.0.0"
+      sources."@types/connect-3.4.33"
+      sources."@types/cookies-0.7.4"
+      sources."@types/cron-1.7.2"
+      sources."@types/events-3.0.0"
+      sources."@types/express-4.17.3"
+      sources."@types/express-serve-static-core-4.17.2"
+      sources."@types/formidable-1.0.31"
+      sources."@types/glob-7.1.1"
+      sources."@types/http-assert-1.5.1"
+      sources."@types/istanbul-lib-coverage-2.0.1"
+      sources."@types/istanbul-lib-report-3.0.0"
+      sources."@types/istanbul-reports-1.1.1"
+      sources."@types/jest-24.9.1"
+      sources."@types/js-yaml-3.12.2"
+      sources."@types/keygrip-1.0.2"
+      sources."@types/koa-2.11.2"
+      sources."@types/koa-compose-3.2.5"
+      sources."@types/koa-router-7.4.0"
+      sources."@types/koa-send-4.1.2"
+      sources."@types/koa-static-4.0.1"
+      sources."@types/koa-views-2.0.4"
+      sources."@types/lodash-4.14.149"
+      sources."@types/lodash.clonedeep-4.5.6"
+      sources."@types/mime-2.0.1"
+      sources."@types/minimatch-3.0.3"
+      sources."@types/mkdirp-0.5.2"
+      sources."@types/node-12.12.30"
+      sources."@types/ora-3.2.0"
+      sources."@types/range-parser-1.2.3"
+      (sources."@types/request-2.48.4" // {
+        dependencies = [
+          sources."form-data-2.5.1"
+        ];
+      })
+      sources."@types/serve-static-1.13.3"
+      sources."@types/stack-utils-1.0.1"
+      sources."@types/tough-cookie-2.3.6"
+      sources."@types/underscore-1.9.4"
+      sources."@types/websocket-0.0.40"
+      sources."@types/ws-6.0.4"
+      sources."@types/yargs-13.0.8"
+      sources."@types/yargs-parser-15.0.0"
+      sources."@webassemblyjs/ast-1.8.5"
+      sources."@webassemblyjs/floating-point-hex-parser-1.8.5"
+      sources."@webassemblyjs/helper-api-error-1.8.5"
+      sources."@webassemblyjs/helper-buffer-1.8.5"
+      sources."@webassemblyjs/helper-code-frame-1.8.5"
+      sources."@webassemblyjs/helper-fsm-1.8.5"
+      sources."@webassemblyjs/helper-module-context-1.8.5"
+      sources."@webassemblyjs/helper-wasm-bytecode-1.8.5"
+      sources."@webassemblyjs/helper-wasm-section-1.8.5"
+      sources."@webassemblyjs/ieee754-1.8.5"
+      sources."@webassemblyjs/leb128-1.8.5"
+      sources."@webassemblyjs/utf8-1.8.5"
+      sources."@webassemblyjs/wasm-edit-1.8.5"
+      sources."@webassemblyjs/wasm-gen-1.8.5"
+      sources."@webassemblyjs/wasm-opt-1.8.5"
+      sources."@webassemblyjs/wasm-parser-1.8.5"
+      sources."@webassemblyjs/wast-parser-1.8.5"
+      sources."@webassemblyjs/wast-printer-1.8.5"
+      sources."@xtuc/ieee754-1.2.0"
+      sources."@xtuc/long-4.2.2"
+      sources."abab-2.0.3"
+      sources."abbrev-1.1.1"
+      sources."accepts-1.3.7"
+      sources."acorn-3.3.0"
+      (sources."acorn-globals-3.1.0" // {
+        dependencies = [
+          sources."acorn-4.0.13"
+        ];
+      })
+      sources."acorn-walk-6.2.0"
+      sources."aggregate-error-1.0.0"
+      sources."ajv-6.12.0"
+      sources."ajv-errors-1.0.1"
+      sources."ajv-keywords-3.4.1"
+      sources."align-text-0.1.4"
+      sources."ansi-colors-3.2.4"
+      sources."ansi-escapes-3.2.0"
+      sources."ansi-html-0.0.7"
+      sources."ansi-regex-4.1.0"
+      sources."ansi-styles-3.2.1"
+      sources."any-promise-1.3.0"
+      sources."anymatch-2.0.0"
+      sources."aproba-1.2.0"
+      sources."argparse-1.0.10"
+      sources."arr-diff-4.0.0"
+      sources."arr-flatten-1.1.0"
+      sources."arr-union-3.1.0"
+      sources."array-back-3.1.0"
+      sources."array-equal-1.0.0"
+      sources."array-flatten-1.1.1"
+      sources."array-union-1.0.2"
+      sources."array-uniq-1.0.3"
+      sources."array-unique-0.3.2"
+      sources."asap-2.0.6"
+      sources."asn1-0.2.4"
+      sources."asn1.js-4.10.1"
+      (sources."assert-1.5.0" // {
+        dependencies = [
+          sources."inherits-2.0.1"
+          sources."util-0.10.3"
+        ];
+      })
+      sources."assert-plus-1.0.0"
+      sources."assign-symbols-1.0.0"
+      sources."astral-regex-1.0.0"
+      sources."async-2.6.3"
+      sources."async-each-1.0.3"
+      sources."async-limiter-1.0.1"
+      sources."asynckit-0.4.0"
+      sources."atob-2.1.2"
+      sources."awesome-typescript-loader-5.2.1"
+      sources."aws-sign2-0.7.0"
+      sources."aws4-1.9.1"
+      sources."axios-0.19.2"
+      sources."babel-6.23.0"
+      (sources."babel-code-frame-6.26.0" // {
+        dependencies = [
+          sources."ansi-regex-2.1.1"
+          sources."ansi-styles-2.2.1"
+          sources."chalk-1.1.3"
+          sources."strip-ansi-3.0.1"
+          sources."supports-color-2.0.0"
+        ];
+      })
+      (sources."babel-core-6.26.3" // {
+        dependencies = [
+          sources."debug-2.6.9"
+          sources."json5-0.5.1"
+          sources."source-map-0.5.7"
+        ];
+      })
+      (sources."babel-generator-6.26.1" // {
+        dependencies = [
+          sources."source-map-0.5.7"
+        ];
+      })
+      sources."babel-helper-builder-binary-assignment-operator-visitor-6.24.1"
+      sources."babel-helper-call-delegate-6.24.1"
+      sources."babel-helper-define-map-6.26.0"
+      sources."babel-helper-explode-assignable-expression-6.24.1"
+      sources."babel-helper-function-name-6.24.1"
+      sources."babel-helper-get-function-arity-6.24.1"
+      sources."babel-helper-hoist-variables-6.24.1"
+      sources."babel-helper-optimise-call-expression-6.24.1"
+      sources."babel-helper-regex-6.26.0"
+      sources."babel-helper-remap-async-to-generator-6.24.1"
+      sources."babel-helper-replace-supers-6.24.1"
+      sources."babel-helpers-6.24.1"
+      (sources."babel-jest-24.9.0" // {
+        dependencies = [
+          sources."slash-2.0.0"
+        ];
+      })
+      sources."babel-messages-6.23.0"
+      sources."babel-plugin-check-es2015-constants-6.22.0"
+      sources."babel-plugin-istanbul-5.2.0"
+      sources."babel-plugin-jest-hoist-24.9.0"
+      sources."babel-plugin-syntax-async-functions-6.13.0"
+      sources."babel-plugin-syntax-exponentiation-operator-6.13.0"
+      sources."babel-plugin-syntax-trailing-function-commas-6.22.0"
+      sources."babel-plugin-transform-async-to-generator-6.24.1"
+      sources."babel-plugin-transform-es2015-arrow-functions-6.22.0"
+      sources."babel-plugin-transform-es2015-block-scoped-functions-6.22.0"
+      sources."babel-plugin-transform-es2015-block-scoping-6.26.0"
+      sources."babel-plugin-transform-es2015-classes-6.24.1"
+      sources."babel-plugin-transform-es2015-computed-properties-6.24.1"
+      sources."babel-plugin-transform-es2015-destructuring-6.23.0"
+      sources."babel-plugin-transform-es2015-duplicate-keys-6.24.1"
+      sources."babel-plugin-transform-es2015-for-of-6.23.0"
+      sources."babel-plugin-transform-es2015-function-name-6.24.1"
+      sources."babel-plugin-transform-es2015-literals-6.22.0"
+      sources."babel-plugin-transform-es2015-modules-amd-6.24.1"
+      sources."babel-plugin-transform-es2015-modules-commonjs-6.26.2"
+      sources."babel-plugin-transform-es2015-modules-systemjs-6.24.1"
+      sources."babel-plugin-transform-es2015-modules-umd-6.24.1"
+      sources."babel-plugin-transform-es2015-object-super-6.24.1"
+      sources."babel-plugin-transform-es2015-parameters-6.24.1"
+      sources."babel-plugin-transform-es2015-shorthand-properties-6.24.1"
+      sources."babel-plugin-transform-es2015-spread-6.22.0"
+      sources."babel-plugin-transform-es2015-sticky-regex-6.24.1"
+      sources."babel-plugin-transform-es2015-template-literals-6.22.0"
+      sources."babel-plugin-transform-es2015-typeof-symbol-6.23.0"
+      sources."babel-plugin-transform-es2015-unicode-regex-6.24.1"
+      sources."babel-plugin-transform-exponentiation-operator-6.24.1"
+      sources."babel-plugin-transform-regenerator-6.26.0"
+      sources."babel-plugin-transform-strict-mode-6.24.1"
+      sources."babel-preset-env-1.7.0"
+      sources."babel-preset-jest-24.9.0"
+      (sources."babel-register-6.26.0" // {
+        dependencies = [
+          sources."source-map-0.5.7"
+          sources."source-map-support-0.4.18"
+        ];
+      })
+      sources."babel-runtime-6.26.0"
+      sources."babel-template-6.26.0"
+      (sources."babel-traverse-6.26.0" // {
+        dependencies = [
+          sources."debug-2.6.9"
+        ];
+      })
+      sources."babel-types-6.26.0"
+      sources."babylon-6.18.0"
+      sources."balanced-match-1.0.0"
+      (sources."base-0.11.2" // {
+        dependencies = [
+          sources."define-property-1.0.0"
+        ];
+      })
+      sources."base64-js-1.3.1"
+      sources."base64url-3.0.1"
+      sources."batch-0.6.1"
+      sources."bcrypt-pbkdf-1.0.2"
+      sources."bfj-6.1.2"
+      sources."big.js-5.2.2"
+      sources."binary-extensions-1.13.1"
+      sources."bindings-1.5.0"
+      sources."bluebird-3.7.2"
+      sources."bn.js-4.11.8"
+      (sources."body-parser-1.19.0" // {
+        dependencies = [
+          sources."debug-2.6.9"
+          sources."http-errors-1.7.2"
+          sources."inherits-2.0.3"
+          sources."qs-6.7.0"
+          sources."raw-body-2.4.0"
+        ];
+      })
+      (sources."bonjour-3.5.0" // {
+        dependencies = [
+          sources."array-flatten-2.1.2"
+        ];
+      })
+      sources."brace-expansion-1.1.11"
+      sources."braces-2.3.2"
+      sources."brorand-1.1.0"
+      sources."browser-process-hrtime-1.0.0"
+      (sources."browser-resolve-1.11.3" // {
+        dependencies = [
+          sources."resolve-1.1.7"
+        ];
+      })
+      sources."browserify-aes-1.2.0"
+      sources."browserify-cipher-1.0.1"
+      sources."browserify-des-1.0.2"
+      sources."browserify-rsa-4.0.1"
+      sources."browserify-sign-4.0.4"
+      sources."browserify-zlib-0.2.0"
+      sources."browserslist-3.2.8"
+      sources."bs-logger-0.2.6"
+      sources."bser-2.1.1"
+      sources."buffer-4.9.2"
+      sources."buffer-from-1.1.1"
+      sources."buffer-indexof-1.1.1"
+      sources."buffer-xor-1.0.3"
+      sources."builtin-status-codes-3.0.0"
+      sources."byline-5.0.0"
+      sources."bytes-3.1.0"
+      (sources."cacache-10.0.4" // {
+        dependencies = [
+          sources."lru-cache-4.1.5"
+          sources."yallist-2.1.2"
+        ];
+      })
+      sources."cache-base-1.0.1"
+      sources."cache-content-type-1.0.1"
+      (sources."cacheable-request-2.1.4" // {
+        dependencies = [
+          sources."get-stream-3.0.0"
+          sources."lowercase-keys-1.0.0"
+        ];
+      })
+      sources."callsites-3.1.0"
+      sources."camelcase-1.2.1"
+      sources."caniuse-lite-1.0.30001035"
+      sources."capture-exit-2.0.0"
+      sources."caseless-0.12.0"
+      sources."center-align-0.1.3"
+      sources."chalk-2.4.2"
+      sources."character-parser-2.2.0"
+      sources."check-types-8.0.3"
+      (sources."chokidar-2.1.8" // {
+        dependencies = [
+          sources."normalize-path-3.0.0"
+        ];
+      })
+      sources."chownr-1.1.4"
+      sources."chrome-trace-event-1.0.2"
+      sources."ci-info-2.0.0"
+      sources."cipher-base-1.0.4"
+      (sources."class-utils-0.3.6" // {
+        dependencies = [
+          sources."define-property-0.2.5"
+          (sources."is-accessor-descriptor-0.1.6" // {
+            dependencies = [
+              sources."kind-of-3.2.2"
+            ];
+          })
+          (sources."is-data-descriptor-0.1.4" // {
+            dependencies = [
+              sources."kind-of-3.2.2"
+            ];
+          })
+          sources."is-descriptor-0.1.6"
+          sources."kind-of-5.1.0"
+        ];
+      })
+      sources."clean-css-4.2.3"
+      sources."clean-stack-1.3.0"
+      sources."cli-cursor-2.1.0"
+      sources."cli-spinners-2.2.0"
+      sources."cliui-2.1.0"
+      sources."clone-1.0.4"
+      sources."clone-response-1.0.2"
+      sources."co-4.6.0"
+      sources."co-body-5.2.0"
+      sources."code-point-at-1.1.0"
+      sources."collection-visit-1.0.0"
+      sources."color-convert-1.9.3"
+      sources."color-name-1.1.3"
+      sources."combined-stream-1.0.8"
+      sources."command-line-args-5.1.1"
+      sources."commander-2.20.3"
+      sources."commondir-1.0.1"
+      sources."component-emitter-1.3.0"
+      sources."compressible-2.0.18"
+      (sources."compression-1.7.4" // {
+        dependencies = [
+          sources."bytes-3.0.0"
+          sources."debug-2.6.9"
+          sources."safe-buffer-5.1.2"
+        ];
+      })
+      sources."concat-map-0.0.1"
+      sources."concat-stream-1.6.2"
+      sources."condense-newlines-0.2.1"
+      sources."config-chain-1.1.12"
+      sources."connect-history-api-fallback-1.6.0"
+      sources."console-browserify-1.2.0"
+      sources."consolidate-0.15.1"
+      sources."constantinople-3.1.2"
+      sources."constants-browserify-1.0.0"
+      (sources."content-disposition-0.5.3" // {
+        dependencies = [
+          sources."safe-buffer-5.1.2"
+        ];
+      })
+      sources."content-type-1.0.4"
+      (sources."convert-source-map-1.7.0" // {
+        dependencies = [
+          sources."safe-buffer-5.1.2"
+        ];
+      })
+      sources."cookie-0.4.0"
+      sources."cookie-signature-1.0.6"
+      (sources."cookies-0.8.0" // {
+        dependencies = [
+          sources."depd-2.0.0"
+        ];
+      })
+      sources."copy-concurrently-1.0.5"
+      sources."copy-descriptor-0.1.1"
+      (sources."copy-webpack-plugin-4.6.0" // {
+        dependencies = [
+          sources."p-limit-1.3.0"
+          sources."p-try-1.0.0"
+        ];
+      })
+      sources."core-js-2.6.11"
+      sources."core-util-is-1.0.2"
+      sources."create-ecdh-4.0.3"
+      sources."create-hash-1.2.0"
+      sources."create-hmac-1.1.7"
+      sources."cron-1.8.2"
+      sources."cross-spawn-6.0.5"
+      sources."crypto-browserify-3.12.0"
+      sources."cssom-0.3.8"
+      sources."cssstyle-1.4.0"
+      sources."cyclist-1.0.1"
+      sources."d-1.0.1"
+      sources."dashdash-1.14.1"
+      (sources."data-urls-1.1.0" // {
+        dependencies = [
+          sources."whatwg-url-7.1.0"
+        ];
+      })
+      sources."debug-3.1.0"
+      sources."decamelize-1.2.0"
+      sources."decode-uri-component-0.2.0"
+      sources."decompress-response-3.3.0"
+      sources."deep-equal-1.0.1"
+      sources."deep-is-0.1.3"
+      sources."default-gateway-4.2.0"
+      sources."defaults-1.0.3"
+      sources."define-properties-1.1.3"
+      sources."define-property-2.0.2"
+      (sources."del-4.1.1" // {
+        dependencies = [
+          (sources."globby-6.1.0" // {
+            dependencies = [
+              sources."pify-2.3.0"
+            ];
+          })
+          sources."pify-4.0.1"
+        ];
+      })
+      sources."delayed-stream-1.0.0"
+      sources."delegates-1.0.0"
+      sources."depd-1.1.2"
+      sources."des.js-1.0.1"
+      sources."destroy-1.0.4"
+      sources."detect-file-1.0.0"
+      sources."detect-indent-4.0.0"
+      sources."detect-newline-2.1.0"
+      sources."detect-node-2.0.4"
+      sources."diff-sequences-24.9.0"
+      sources."diffie-hellman-5.0.3"
+      sources."dir-glob-2.2.2"
+      sources."dns-equal-1.0.0"
+      sources."dns-packet-1.3.1"
+      sources."dns-txt-2.0.2"
+      sources."doctypes-1.1.0"
+      sources."domain-browser-1.2.0"
+      sources."domexception-1.0.1"
+      sources."duplexer-0.1.1"
+      sources."duplexer3-0.1.4"
+      sources."duplexify-3.7.1"
+      sources."ecc-jsbn-0.1.2"
+      (sources."editorconfig-0.15.3" // {
+        dependencies = [
+          sources."lru-cache-4.1.5"
+          sources."yallist-2.1.2"
+        ];
+      })
+      sources."ee-first-1.1.1"
+      sources."ejs-2.7.4"
+      sources."electron-to-chromium-1.3.376"
+      sources."elliptic-6.5.2"
+      sources."emoji-regex-7.0.3"
+      sources."emojis-list-3.0.0"
+      sources."encodeurl-1.0.2"
+      sources."end-of-stream-1.4.4"
+      sources."enhanced-resolve-4.1.1"
+      sources."errno-0.1.7"
+      sources."error-ex-1.3.2"
+      sources."error-inject-1.0.0"
+      sources."es-abstract-1.17.4"
+      sources."es-to-primitive-1.2.1"
+      sources."es5-ext-0.10.53"
+      sources."es6-iterator-2.0.3"
+      sources."es6-promise-4.2.8"
+      sources."es6-symbol-3.1.3"
+      sources."escape-html-1.0.3"
+      sources."escape-string-regexp-1.0.5"
+      sources."escodegen-1.14.1"
+      sources."eslint-scope-4.0.3"
+      sources."esprima-4.0.1"
+      sources."esrecurse-4.2.1"
+      sources."estraverse-4.3.0"
+      sources."esutils-2.0.3"
+      sources."etag-1.8.1"
+      sources."eventemitter3-4.0.0"
+      sources."events-3.1.0"
+      sources."eventsource-1.0.7"
+      sources."evp_bytestokey-1.0.3"
+      sources."exec-sh-0.3.4"
+      sources."execa-1.0.0"
+      sources."exit-0.1.2"
+      (sources."expand-brackets-2.1.4" // {
+        dependencies = [
+          sources."debug-2.6.9"
+          sources."define-property-0.2.5"
+          (sources."is-accessor-descriptor-0.1.6" // {
+            dependencies = [
+              sources."kind-of-3.2.2"
+            ];
+          })
+          (sources."is-data-descriptor-0.1.4" // {
+            dependencies = [
+              sources."kind-of-3.2.2"
+            ];
+          })
+          sources."is-descriptor-0.1.6"
+          sources."kind-of-5.1.0"
+        ];
+      })
+      sources."expand-tilde-2.0.2"
+      sources."expect-24.9.0"
+      (sources."express-4.17.1" // {
+        dependencies = [
+          sources."debug-2.6.9"
+          sources."path-to-regexp-0.1.7"
+          sources."qs-6.7.0"
+          sources."safe-buffer-5.1.2"
+        ];
+      })
+      (sources."ext-1.4.0" // {
+        dependencies = [
+          sources."type-2.0.0"
+        ];
+      })
+      sources."extend-3.0.2"
+      sources."extend-shallow-2.0.1"
+      (sources."extglob-2.0.4" // {
+        dependencies = [
+          sources."define-property-1.0.0"
+        ];
+      })
+      sources."extsprintf-1.3.0"
+      sources."fast-deep-equal-3.1.1"
+      sources."fast-json-stable-stringify-2.1.0"
+      sources."fast-levenshtein-2.0.6"
+      sources."faye-websocket-0.10.0"
+      sources."fb-watchman-2.0.1"
+      sources."figgy-pudding-3.5.1"
+      sources."file-uri-to-path-1.0.0"
+      sources."filesize-3.6.1"
+      sources."fill-range-4.0.0"
+      (sources."finalhandler-1.1.2" // {
+        dependencies = [
+          sources."debug-2.6.9"
+        ];
+      })
+      sources."find-cache-dir-1.0.0"
+      sources."find-replace-3.0.0"
+      sources."find-up-3.0.0"
+      sources."findup-sync-3.0.0"
+      sources."flush-write-stream-1.1.1"
+      sources."follow-redirects-1.5.10"
+      sources."for-in-1.0.2"
+      sources."forever-agent-0.6.1"
+      sources."form-data-2.3.3"
+      sources."formidable-1.2.2"
+      sources."forwarded-0.1.2"
+      sources."fragment-cache-0.2.1"
+      sources."fresh-0.5.2"
+      sources."from2-2.3.0"
+      sources."fs-write-stream-atomic-1.0.10"
+      sources."fs.realpath-1.0.0"
+      sources."fsevents-1.2.11"
+      sources."function-bind-1.1.1"
+      sources."gensync-1.0.0-beta.1"
+      sources."get-caller-file-2.0.5"
+      (sources."get-paths-0.0.7" // {
+        dependencies = [
+          sources."pify-4.0.1"
+        ];
+      })
+      sources."get-stream-4.1.0"
+      sources."get-value-2.0.6"
+      sources."getpass-0.1.7"
+      sources."glob-7.1.6"
+      (sources."glob-parent-3.1.0" // {
+        dependencies = [
+          sources."is-glob-3.1.0"
+        ];
+      })
+      (sources."global-modules-2.0.0" // {
+        dependencies = [
+          sources."global-prefix-3.0.0"
+          sources."kind-of-6.0.3"
+        ];
+      })
+      sources."global-prefix-1.0.2"
+      sources."globals-9.18.0"
+      sources."globby-7.1.1"
+      (sources."got-8.3.2" // {
+        dependencies = [
+          sources."get-stream-3.0.0"
+        ];
+      })
+      sources."graceful-fs-4.2.3"
+      sources."growly-1.3.0"
+      (sources."gzip-size-5.1.1" // {
+        dependencies = [
+          sources."pify-4.0.1"
+        ];
+      })
+      sources."handle-thing-2.0.0"
+      sources."har-schema-2.0.0"
+      sources."har-validator-5.1.3"
+      sources."has-1.0.3"
+      (sources."has-ansi-2.0.0" // {
+        dependencies = [
+          sources."ansi-regex-2.1.1"
+        ];
+      })
+      sources."has-flag-3.0.0"
+      sources."has-symbol-support-x-1.4.2"
+      sources."has-symbols-1.0.1"
+      sources."has-to-string-tag-x-1.4.1"
+      sources."has-value-1.0.0"
+      (sources."has-values-1.0.0" // {
+        dependencies = [
+          sources."kind-of-4.0.0"
+        ];
+      })
+      sources."hash-base-3.0.4"
+      sources."hash.js-1.1.7"
+      sources."hmac-drbg-1.0.1"
+      sources."home-or-tmp-2.0.0"
+      sources."homedir-polyfill-1.0.3"
+      sources."hoopy-0.1.4"
+      sources."hosted-git-info-2.8.8"
+      sources."hpack.js-2.1.6"
+      sources."html-encoding-sniffer-1.0.2"
+      sources."html-entities-1.2.1"
+      sources."html-escaper-2.0.0"
+      sources."http-assert-1.4.1"
+      sources."http-cache-semantics-3.8.1"
+      sources."http-deceiver-1.2.7"
+      sources."http-errors-1.7.3"
+      sources."http-parser-js-0.4.10"
+      sources."http-proxy-1.18.0"
+      sources."http-proxy-middleware-0.19.1"
+      sources."http-signature-1.2.0"
+      sources."https-browserify-1.0.0"
+      sources."iconv-lite-0.4.24"
+      sources."ieee754-1.1.13"
+      sources."iferr-0.1.5"
+      sources."ignore-3.3.10"
+      (sources."import-local-2.0.0" // {
+        dependencies = [
+          sources."pkg-dir-3.0.0"
+        ];
+      })
+      sources."imurmurhash-0.1.4"
+      sources."indent-string-3.2.0"
+      sources."infer-owner-1.0.4"
+      sources."inflation-2.0.0"
+      sources."inflight-1.0.6"
+      sources."inherits-2.0.4"
+      sources."ini-1.3.5"
+      sources."internal-ip-4.3.0"
+      sources."interpret-1.2.0"
+      sources."into-stream-3.1.0"
+      sources."invariant-2.2.4"
+      sources."invert-kv-2.0.0"
+      sources."ip-1.1.5"
+      sources."ip-regex-2.1.0"
+      sources."ipaddr.js-1.9.1"
+      sources."is-absolute-url-3.0.3"
+      (sources."is-accessor-descriptor-1.0.0" // {
+        dependencies = [
+          sources."kind-of-6.0.3"
+        ];
+      })
+      sources."is-arrayish-0.2.1"
+      sources."is-binary-path-1.0.1"
+      sources."is-buffer-1.1.6"
+      sources."is-callable-1.1.5"
+      sources."is-ci-2.0.0"
+      (sources."is-data-descriptor-1.0.0" // {
+        dependencies = [
+          sources."kind-of-6.0.3"
+        ];
+      })
+      sources."is-date-object-1.0.2"
+      (sources."is-descriptor-1.0.2" // {
+        dependencies = [
+          sources."kind-of-6.0.3"
+        ];
+      })
+      (sources."is-expression-3.0.0" // {
+        dependencies = [
+          sources."acorn-4.0.13"
+        ];
+      })
+      sources."is-extendable-0.1.1"
+      sources."is-extglob-2.1.1"
+      sources."is-finite-1.1.0"
+      sources."is-fullwidth-code-point-2.0.0"
+      sources."is-generator-fn-2.1.0"
+      sources."is-generator-function-1.0.7"
+      sources."is-glob-4.0.1"
+      sources."is-number-3.0.0"
+      sources."is-object-1.0.1"
+      sources."is-path-cwd-2.2.0"
+      sources."is-path-in-cwd-2.1.0"
+      sources."is-path-inside-2.1.0"
+      sources."is-plain-obj-1.1.0"
+      sources."is-plain-object-2.0.4"
+      sources."is-promise-2.1.0"
+      sources."is-regex-1.0.5"
+      sources."is-retry-allowed-1.2.0"
+      sources."is-stream-1.1.0"
+      sources."is-symbol-1.0.3"
+      sources."is-typedarray-1.0.0"
+      sources."is-whitespace-0.3.0"
+      sources."is-windows-1.0.2"
+      sources."is-wsl-1.1.0"
+      sources."isarray-1.0.0"
+      sources."isexe-2.0.0"
+      sources."isobject-3.0.1"
+      sources."isomorphic-ws-4.0.1"
+      sources."isstream-0.1.2"
+      sources."istanbul-lib-coverage-2.0.5"
+      (sources."istanbul-lib-instrument-3.3.0" // {
+        dependencies = [
+          sources."semver-6.3.0"
+        ];
+      })
+      (sources."istanbul-lib-report-2.0.8" // {
+        dependencies = [
+          sources."make-dir-2.1.0"
+          sources."pify-4.0.1"
+          sources."supports-color-6.1.0"
+        ];
+      })
+      (sources."istanbul-lib-source-maps-3.0.6" // {
+        dependencies = [
+          sources."debug-4.1.1"
+          sources."make-dir-2.1.0"
+          sources."ms-2.1.2"
+          sources."pify-4.0.1"
+        ];
+      })
+      sources."istanbul-reports-2.2.7"
+      sources."isurl-1.0.0"
+      sources."jest-24.9.0"
+      sources."jest-changed-files-24.9.0"
+      (sources."jest-cli-24.9.0" // {
+        dependencies = [
+          sources."cliui-5.0.0"
+          sources."yargs-13.3.2"
+        ];
+      })
+      sources."jest-config-24.9.0"
+      sources."jest-diff-24.9.0"
+      sources."jest-docblock-24.9.0"
+      sources."jest-each-24.9.0"
+      sources."jest-environment-jsdom-24.9.0"
+      sources."jest-environment-node-24.9.0"
+      sources."jest-get-type-24.9.0"
+      sources."jest-haste-map-24.9.0"
+      sources."jest-jasmine2-24.9.0"
+      sources."jest-leak-detector-24.9.0"
+      sources."jest-matcher-utils-24.9.0"
+      (sources."jest-message-util-24.9.0" // {
+        dependencies = [
+          sources."slash-2.0.0"
+        ];
+      })
+      sources."jest-mock-24.9.0"
+      sources."jest-pnp-resolver-1.2.1"
+      sources."jest-regex-util-24.9.0"
+      sources."jest-resolve-24.9.0"
+      sources."jest-resolve-dependencies-24.9.0"
+      sources."jest-runner-24.9.0"
+      (sources."jest-runtime-24.9.0" // {
+        dependencies = [
+          sources."cliui-5.0.0"
+          sources."slash-2.0.0"
+          sources."yargs-13.3.2"
+        ];
+      })
+      sources."jest-serializer-24.9.0"
+      (sources."jest-snapshot-24.9.0" // {
+        dependencies = [
+          sources."semver-6.3.0"
+        ];
+      })
+      (sources."jest-util-24.9.0" // {
+        dependencies = [
+          sources."slash-2.0.0"
+        ];
+      })
+      (sources."jest-validate-24.9.0" // {
+        dependencies = [
+          sources."camelcase-5.3.1"
+        ];
+      })
+      sources."jest-watcher-24.9.0"
+      (sources."jest-worker-24.9.0" // {
+        dependencies = [
+          sources."supports-color-6.1.0"
+        ];
+      })
+      sources."js-beautify-1.10.3"
+      sources."js-stringify-1.0.2"
+      sources."js-tokens-3.0.2"
+      sources."js-yaml-3.13.1"
+      sources."jsbn-0.1.1"
+      (sources."jsdom-11.12.0" // {
+        dependencies = [
+          sources."acorn-5.7.4"
+          (sources."acorn-globals-4.3.4" // {
+            dependencies = [
+              sources."acorn-6.4.1"
+            ];
+          })
+          sources."ws-5.2.2"
+        ];
+      })
+      sources."jsesc-1.3.0"
+      sources."json-buffer-3.0.0"
+      sources."json-parse-better-errors-1.0.2"
+      sources."json-schema-0.2.3"
+      sources."json-schema-traverse-0.4.1"
+      sources."json-stringify-safe-5.0.1"
+      sources."json3-3.3.3"
+      (sources."json5-1.0.1" // {
+        dependencies = [
+          sources."minimist-1.2.5"
+        ];
+      })
+      sources."jsonpath-plus-0.19.0"
+      sources."jsprim-1.4.1"
+      sources."jstransformer-1.0.0"
+      sources."keygrip-1.1.0"
+      sources."keyv-3.0.0"
+      sources."killable-1.0.1"
+      sources."kind-of-3.2.2"
+      sources."kleur-3.0.3"
+      sources."koa-2.11.0"
+      sources."koa-body-4.1.1"
+      sources."koa-compose-4.1.0"
+      (sources."koa-convert-1.2.0" // {
+        dependencies = [
+          sources."koa-compose-3.2.1"
+        ];
+      })
+      (sources."koa-router-7.4.0" // {
+        dependencies = [
+          sources."koa-compose-3.2.1"
+        ];
+      })
+      sources."koa-send-5.0.0"
+      sources."koa-static-5.0.0"
+      (sources."koa-views-6.2.1" // {
+        dependencies = [
+          sources."debug-4.1.1"
+          sources."ms-2.1.2"
+        ];
+      })
+      sources."lazy-cache-1.0.4"
+      sources."lcid-2.0.0"
+      sources."left-pad-1.3.0"
+      sources."leven-3.1.0"
+      sources."levn-0.3.0"
+      sources."load-json-file-4.0.0"
+      sources."loader-runner-2.4.0"
+      sources."loader-utils-1.4.0"
+      sources."locate-path-3.0.0"
+      sources."lodash-4.17.15"
+      sources."lodash.camelcase-4.3.0"
+      sources."lodash.clonedeep-4.5.0"
+      sources."lodash.memoize-4.1.2"
+      sources."lodash.sortby-4.7.0"
+      sources."log-symbols-2.2.0"
+      sources."loglevel-1.6.7"
+      sources."loglevelnext-1.0.5"
+      sources."long-4.0.0"
+      sources."longest-1.0.1"
+      sources."loose-envify-1.4.0"
+      sources."lowercase-keys-1.0.1"
+      sources."lru-cache-5.1.1"
+      sources."make-dir-1.3.0"
+      sources."make-error-1.3.6"
+      sources."makeerror-1.0.11"
+      sources."mamacro-0.0.3"
+      sources."map-age-cleaner-0.1.3"
+      sources."map-cache-0.2.2"
+      sources."map-visit-1.0.0"
+      sources."md5.js-1.3.5"
+      sources."media-typer-0.3.0"
+      (sources."mem-4.3.0" // {
+        dependencies = [
+          sources."mimic-fn-2.1.0"
+          sources."p-is-promise-2.1.0"
+        ];
+      })
+      sources."memory-fs-0.5.0"
+      sources."merge-descriptors-1.0.1"
+      sources."merge-stream-2.0.0"
+      sources."methods-1.1.2"
+      (sources."micromatch-3.1.10" // {
+        dependencies = [
+          sources."extend-shallow-3.0.2"
+          sources."is-extendable-1.0.1"
+          sources."kind-of-6.0.3"
+        ];
+      })
+      sources."miller-rabin-4.0.1"
+      sources."mime-1.6.0"
+      sources."mime-db-1.43.0"
+      sources."mime-types-2.1.26"
+      sources."mimic-fn-1.2.0"
+      sources."mimic-response-1.0.1"
+      sources."minimalistic-assert-1.0.1"
+      sources."minimalistic-crypto-utils-1.0.1"
+      sources."minimatch-3.0.4"
+      sources."minimist-0.0.8"
+      (sources."mississippi-2.0.0" // {
+        dependencies = [
+          sources."pump-2.0.1"
+        ];
+      })
+      (sources."mixin-deep-1.3.2" // {
+        dependencies = [
+          sources."is-extendable-1.0.1"
+        ];
+      })
+      sources."mkdirp-0.5.1"
+      sources."moment-2.24.0"
+      sources."moment-timezone-0.5.28"
+      sources."move-concurrently-1.0.1"
+      sources."ms-2.0.0"
+      sources."multicast-dns-6.2.3"
+      sources."multicast-dns-service-types-1.1.0"
+      sources."mz-2.7.0"
+      sources."nan-2.14.0"
+      (sources."nanomatch-1.2.13" // {
+        dependencies = [
+          sources."extend-shallow-3.0.2"
+          sources."is-extendable-1.0.1"
+          sources."kind-of-6.0.3"
+        ];
+      })
+      sources."natural-compare-1.4.0"
+      sources."negotiator-0.6.2"
+      sources."neo-async-2.6.1"
+      sources."next-tick-1.0.0"
+      sources."nice-try-1.0.5"
+      sources."node-forge-0.8.5"
+      sources."node-int64-0.4.0"
+      sources."node-jose-1.1.3"
+      (sources."node-libs-browser-2.2.1" // {
+        dependencies = [
+          sources."punycode-1.4.1"
+        ];
+      })
+      sources."node-modules-regexp-1.0.0"
+      sources."node-notifier-5.4.3"
+      sources."nopt-4.0.3"
+      sources."normalize-package-data-2.5.0"
+      sources."normalize-path-2.1.1"
+      sources."normalize-url-2.0.1"
+      sources."npm-run-path-2.0.2"
+      sources."number-is-nan-1.0.1"
+      sources."nwsapi-2.2.0"
+      sources."oauth-sign-0.9.0"
+      sources."object-assign-4.1.1"
+      (sources."object-copy-0.1.0" // {
+        dependencies = [
+          sources."define-property-0.2.5"
+          sources."is-accessor-descriptor-0.1.6"
+          sources."is-data-descriptor-0.1.4"
+          (sources."is-descriptor-0.1.6" // {
+            dependencies = [
+              sources."kind-of-5.1.0"
+            ];
+          })
+        ];
+      })
+      sources."object-hash-1.3.1"
+      sources."object-inspect-1.7.0"
+      sources."object-keys-1.1.1"
+      sources."object-visit-1.0.1"
+      sources."object.assign-4.1.0"
+      sources."object.getownpropertydescriptors-2.1.0"
+      sources."object.pick-1.3.0"
+      sources."obuf-1.1.2"
+      sources."oidc-token-hash-3.0.2"
+      sources."on-finished-2.3.0"
+      sources."on-headers-1.0.2"
+      sources."once-1.4.0"
+      sources."onetime-2.0.1"
+      sources."only-0.0.2"
+      sources."opener-1.5.1"
+      sources."openid-client-2.5.0"
+      sources."opn-5.5.0"
+      sources."optionator-0.8.3"
+      sources."ora-3.4.0"
+      sources."original-1.0.2"
+      sources."os-browserify-0.3.0"
+      sources."os-homedir-1.0.2"
+      sources."os-locale-3.1.0"
+      sources."os-tmpdir-1.0.2"
+      sources."osenv-0.1.5"
+      sources."p-any-1.1.0"
+      sources."p-cancelable-0.4.1"
+      sources."p-defer-1.0.0"
+      sources."p-each-series-1.0.0"
+      sources."p-finally-1.0.0"
+      sources."p-is-promise-1.1.0"
+      sources."p-limit-2.2.2"
+      sources."p-locate-3.0.0"
+      sources."p-map-2.1.0"
+      sources."p-reduce-1.0.0"
+      sources."p-retry-3.0.1"
+      sources."p-some-2.0.1"
+      sources."p-timeout-2.0.1"
+      sources."p-try-2.2.0"
+      sources."pako-1.0.11"
+      sources."parallel-transform-1.2.0"
+      sources."parse-asn1-5.1.5"
+      sources."parse-json-4.0.0"
+      sources."parse-passwd-1.0.0"
+      sources."parse5-4.0.0"
+      sources."parseurl-1.3.3"
+      sources."pascalcase-0.1.1"
+      sources."path-browserify-0.0.1"
+      sources."path-dirname-1.0.2"
+      sources."path-exists-3.0.0"
+      sources."path-is-absolute-1.0.1"
+      sources."path-is-inside-1.0.2"
+      sources."path-key-2.0.1"
+      sources."path-parse-1.0.6"
+      (sources."path-to-regexp-1.8.0" // {
+        dependencies = [
+          sources."isarray-0.0.1"
+        ];
+      })
+      sources."path-type-3.0.0"
+      sources."pbkdf2-3.0.17"
+      sources."performance-now-2.1.0"
+      sources."pify-3.0.0"
+      sources."pinkie-2.0.4"
+      sources."pinkie-promise-2.0.1"
+      sources."pirates-4.0.1"
+      (sources."pkg-dir-2.0.0" // {
+        dependencies = [
+          sources."find-up-2.1.0"
+          sources."locate-path-2.0.0"
+          sources."p-limit-1.3.0"
+          sources."p-locate-2.0.0"
+          sources."p-try-1.0.0"
+        ];
+      })
+      sources."pn-1.1.0"
+      (sources."portfinder-1.0.25" // {
+        dependencies = [
+          sources."debug-3.2.6"
+          sources."ms-2.1.2"
+        ];
+      })
+      sources."posix-character-classes-0.1.1"
+      sources."prelude-ls-1.1.2"
+      sources."prepend-http-2.0.0"
+      sources."prettier-1.19.1"
+      sources."pretty-2.0.0"
+      sources."pretty-format-24.9.0"
+      sources."private-0.1.8"
+      sources."process-0.11.10"
+      sources."process-nextick-args-2.0.1"
+      sources."promise-7.3.1"
+      sources."promise-inflight-1.0.1"
+      sources."prompts-2.3.1"
+      sources."proto-list-1.2.4"
+      sources."proxy-addr-2.0.6"
+      sources."prr-1.0.1"
+      sources."pseudomap-1.0.2"
+      sources."psl-1.7.0"
+      sources."public-encrypt-4.0.3"
+      sources."pug-2.0.4"
+      sources."pug-attrs-2.0.4"
+      sources."pug-code-gen-2.0.2"
+      sources."pug-error-1.3.3"
+      sources."pug-filters-3.1.1"
+      sources."pug-lexer-4.1.0"
+      sources."pug-linker-3.0.6"
+      sources."pug-load-2.0.12"
+      sources."pug-parser-5.0.1"
+      sources."pug-runtime-2.0.5"
+      sources."pug-strip-comments-1.0.4"
+      sources."pug-walk-1.1.8"
+      sources."pump-3.0.0"
+      (sources."pumpify-1.5.1" // {
+        dependencies = [
+          sources."pump-2.0.1"
+        ];
+      })
+      sources."punycode-2.1.1"
+      sources."qs-6.5.2"
+      sources."query-string-5.1.1"
+      sources."querystring-0.2.0"
+      sources."querystring-es3-0.2.1"
+      sources."querystringify-2.1.1"
+      sources."randombytes-2.1.0"
+      sources."randomfill-1.0.4"
+      sources."range-parser-1.2.1"
+      sources."raw-body-2.4.1"
+      sources."react-is-16.13.0"
+      sources."read-pkg-3.0.0"
+      sources."read-pkg-up-4.0.0"
+      (sources."readable-stream-2.3.7" // {
+        dependencies = [
+          sources."safe-buffer-5.1.2"
+        ];
+      })
+      sources."readdirp-2.2.1"
+      sources."realpath-native-1.1.0"
+      sources."rechoir-0.6.2"
+      sources."regenerate-1.4.0"
+      sources."regenerator-runtime-0.11.1"
+      sources."regenerator-transform-0.10.1"
+      (sources."regex-not-1.0.2" // {
+        dependencies = [
+          sources."extend-shallow-3.0.2"
+          sources."is-extendable-1.0.1"
+        ];
+      })
+      sources."regexpu-core-2.0.0"
+      sources."regjsgen-0.2.0"
+      (sources."regjsparser-0.1.5" // {
+        dependencies = [
+          sources."jsesc-0.5.0"
+        ];
+      })
+      sources."remove-trailing-separator-1.1.0"
+      sources."repeat-element-1.1.3"
+      sources."repeat-string-1.6.1"
+      sources."repeating-2.0.1"
+      sources."request-2.88.2"
+      sources."request-promise-core-1.1.3"
+      sources."request-promise-native-1.0.8"
+      sources."require-directory-2.1.1"
+      sources."require-main-filename-2.0.0"
+      sources."requires-port-1.0.0"
+      sources."resolve-1.15.1"
+      sources."resolve-cwd-2.0.0"
+      (sources."resolve-dir-1.0.1" // {
+        dependencies = [
+          sources."global-modules-1.0.0"
+        ];
+      })
+      sources."resolve-from-3.0.0"
+      (sources."resolve-path-1.4.0" // {
+        dependencies = [
+          sources."http-errors-1.6.3"
+          sources."inherits-2.0.3"
+          sources."setprototypeof-1.1.0"
+        ];
+      })
+      sources."resolve-url-0.2.1"
+      sources."responselike-1.0.2"
+      sources."restore-cursor-2.0.0"
+      sources."ret-0.1.15"
+      sources."retry-0.12.0"
+      sources."right-align-0.1.3"
+      sources."rimraf-2.7.1"
+      sources."ripemd160-2.0.2"
+      sources."rsvp-4.8.5"
+      sources."run-queue-1.0.3"
+      sources."rxjs-6.5.4"
+      sources."safe-buffer-5.2.0"
+      sources."safe-regex-1.1.0"
+      sources."safer-buffer-2.1.2"
+      (sources."sane-4.1.0" // {
+        dependencies = [
+          sources."minimist-1.2.5"
+        ];
+      })
+      sources."sax-1.2.4"
+      sources."schema-utils-1.0.0"
+      sources."select-hose-2.0.0"
+      (sources."selfsigned-1.10.7" // {
+        dependencies = [
+          sources."node-forge-0.9.0"
+        ];
+      })
+      sources."semver-5.7.1"
+      (sources."send-0.17.1" // {
+        dependencies = [
+          (sources."debug-2.6.9" // {
+            dependencies = [
+              sources."ms-2.0.0"
+            ];
+          })
+          sources."ms-2.1.1"
+        ];
+      })
+      sources."serialize-javascript-1.9.1"
+      (sources."serve-index-1.9.1" // {
+        dependencies = [
+          sources."debug-2.6.9"
+          sources."http-errors-1.6.3"
+          sources."inherits-2.0.3"
+          sources."setprototypeof-1.1.0"
+        ];
+      })
+      sources."serve-static-1.14.1"
+      sources."set-blocking-2.0.0"
+      sources."set-value-2.0.1"
+      sources."setimmediate-1.0.5"
+      sources."setprototypeof-1.1.1"
+      sources."sha.js-2.4.11"
+      sources."shebang-command-1.2.0"
+      sources."shebang-regex-1.0.0"
+      sources."shelljs-0.8.3"
+      sources."shellwords-0.1.1"
+      sources."sigmund-1.0.1"
+      sources."signal-exit-3.0.2"
+      sources."simple-git-1.96.0"
+      sources."sisteransi-1.0.4"
+      sources."slash-1.0.0"
+      (sources."snapdragon-0.8.2" // {
+        dependencies = [
+          sources."debug-2.6.9"
+          sources."define-property-0.2.5"
+          (sources."is-accessor-descriptor-0.1.6" // {
+            dependencies = [
+              sources."kind-of-3.2.2"
+            ];
+          })
+          (sources."is-data-descriptor-0.1.4" // {
+            dependencies = [
+              sources."kind-of-3.2.2"
+            ];
+          })
+          sources."is-descriptor-0.1.6"
+          sources."kind-of-5.1.0"
+          sources."source-map-0.5.7"
+        ];
+      })
+      (sources."snapdragon-node-2.1.1" // {
+        dependencies = [
+          sources."define-property-1.0.0"
+        ];
+      })
+      sources."snapdragon-util-3.0.1"
+      sources."sockjs-0.3.19"
+      (sources."sockjs-client-1.4.0" // {
+        dependencies = [
+          sources."debug-3.2.6"
+          sources."faye-websocket-0.11.3"
+          sources."ms-2.1.2"
+        ];
+      })
+      sources."sort-keys-2.0.0"
+      sources."source-list-map-2.0.1"
+      sources."source-map-0.6.1"
+      sources."source-map-resolve-0.5.3"
+      sources."source-map-support-0.5.16"
+      sources."source-map-url-0.4.0"
+      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."spdy-4.0.1" // {
+        dependencies = [
+          sources."debug-4.1.1"
+          sources."ms-2.1.2"
+        ];
+      })
+      (sources."spdy-transport-3.0.0" // {
+        dependencies = [
+          sources."debug-4.1.1"
+          sources."ms-2.1.2"
+          sources."readable-stream-3.6.0"
+        ];
+      })
+      (sources."split-string-3.1.0" // {
+        dependencies = [
+          sources."extend-shallow-3.0.2"
+          sources."is-extendable-1.0.1"
+        ];
+      })
+      sources."sprintf-js-1.0.3"
+      sources."sshpk-1.16.1"
+      sources."ssri-5.3.0"
+      sources."stack-utils-1.0.2"
+      (sources."static-extend-0.1.2" // {
+        dependencies = [
+          sources."define-property-0.2.5"
+          (sources."is-accessor-descriptor-0.1.6" // {
+            dependencies = [
+              sources."kind-of-3.2.2"
+            ];
+          })
+          (sources."is-data-descriptor-0.1.4" // {
+            dependencies = [
+              sources."kind-of-3.2.2"
+            ];
+          })
+          sources."is-descriptor-0.1.6"
+          sources."kind-of-5.1.0"
+        ];
+      })
+      sources."statuses-1.5.0"
+      sources."stealthy-require-1.1.1"
+      sources."stream-browserify-2.0.2"
+      sources."stream-each-1.2.3"
+      sources."stream-http-2.8.3"
+      sources."stream-shift-1.0.1"
+      sources."strict-uri-encode-1.1.0"
+      (sources."string-length-2.0.0" // {
+        dependencies = [
+          sources."ansi-regex-3.0.0"
+          sources."strip-ansi-4.0.0"
+        ];
+      })
+      sources."string-width-3.1.0"
+      sources."string.prototype.trimleft-2.1.1"
+      sources."string.prototype.trimright-2.1.1"
+      (sources."string_decoder-1.1.1" // {
+        dependencies = [
+          sources."safe-buffer-5.1.2"
+        ];
+      })
+      sources."strip-ansi-5.2.0"
+      sources."strip-bom-3.0.0"
+      sources."strip-eof-1.0.0"
+      sources."supports-color-5.5.0"
+      sources."symbol-tree-3.2.4"
+      sources."tapable-1.1.3"
+      sources."terser-4.6.6"
+      (sources."terser-webpack-plugin-1.4.3" // {
+        dependencies = [
+          sources."cacache-12.0.3"
+          sources."find-cache-dir-2.1.0"
+          sources."make-dir-2.1.0"
+          sources."mississippi-3.0.0"
+          sources."pify-4.0.1"
+          sources."pkg-dir-3.0.0"
+          sources."serialize-javascript-2.1.2"
+          sources."ssri-6.0.1"
+        ];
+      })
+      sources."test-exclude-5.2.3"
+      sources."thenify-3.3.0"
+      sources."thenify-all-1.6.0"
+      sources."throat-4.1.0"
+      sources."through2-2.0.5"
+      sources."thunky-1.1.0"
+      sources."timed-out-4.0.1"
+      sources."timers-browserify-2.0.11"
+      sources."tmpl-1.0.4"
+      sources."to-arraybuffer-1.0.1"
+      sources."to-fast-properties-1.0.3"
+      sources."to-object-path-0.3.0"
+      (sources."to-regex-3.0.2" // {
+        dependencies = [
+          sources."extend-shallow-3.0.2"
+          sources."is-extendable-1.0.1"
+        ];
+      })
+      sources."to-regex-range-2.1.1"
+      sources."toidentifier-1.0.0"
+      sources."token-stream-0.0.1"
+      sources."tough-cookie-2.5.0"
+      sources."tr46-1.0.1"
+      sources."trim-right-1.0.1"
+      sources."tryer-1.0.1"
+      (sources."ts-jest-24.3.0" // {
+        dependencies = [
+          sources."camelcase-4.1.0"
+          sources."json5-2.1.1"
+          sources."minimist-1.2.5"
+          sources."yargs-parser-10.1.0"
+        ];
+      })
+      sources."tslib-1.11.1"
+      sources."tsscmp-1.0.6"
+      sources."tty-browserify-0.0.0"
+      sources."tunnel-agent-0.6.0"
+      sources."tweetnacl-0.14.5"
+      sources."type-1.2.0"
+      sources."type-check-0.3.2"
+      sources."type-is-1.6.18"
+      sources."typedarray-0.0.6"
+      sources."typedarray-to-buffer-3.1.5"
+      sources."typescript-3.8.3"
+      sources."typical-4.0.0"
+      (sources."uglify-js-2.8.29" // {
+        dependencies = [
+          sources."source-map-0.5.7"
+        ];
+      })
+      sources."uglify-to-browserify-1.0.2"
+      sources."underscore-1.9.2"
+      sources."union-value-1.0.1"
+      sources."unique-filename-1.1.1"
+      sources."unique-slug-2.0.2"
+      sources."unpipe-1.0.0"
+      (sources."unset-value-1.0.0" // {
+        dependencies = [
+          (sources."has-value-0.3.1" // {
+            dependencies = [
+              sources."isobject-2.1.0"
+            ];
+          })
+          sources."has-values-0.1.4"
+        ];
+      })
+      sources."upath-1.2.0"
+      sources."uri-js-4.2.2"
+      sources."urijs-1.19.2"
+      sources."urix-0.1.0"
+      (sources."url-0.11.0" // {
+        dependencies = [
+          sources."punycode-1.3.2"
+        ];
+      })
+      sources."url-parse-1.4.7"
+      sources."url-parse-lax-3.0.0"
+      sources."url-to-options-1.0.1"
+      sources."use-3.1.1"
+      (sources."util-0.11.1" // {
+        dependencies = [
+          sources."inherits-2.0.3"
+        ];
+      })
+      sources."util-deprecate-1.0.2"
+      sources."util.promisify-1.0.1"
+      sources."utils-merge-1.0.1"
+      sources."uuid-3.4.0"
+      sources."v8-compile-cache-2.0.3"
+      sources."validate-npm-package-license-3.0.4"
+      sources."vary-1.1.2"
+      sources."verror-1.10.0"
+      sources."vm-browserify-1.1.2"
+      sources."void-elements-2.0.1"
+      sources."w3c-hr-time-1.0.2"
+      sources."walker-1.0.7"
+      sources."watchpack-1.6.0"
+      sources."wbuf-1.7.3"
+      sources."wcwidth-1.0.1"
+      sources."webidl-conversions-4.0.2"
+      (sources."webpack-4.42.0" // {
+        dependencies = [
+          sources."acorn-6.4.1"
+          sources."memory-fs-0.4.1"
+        ];
+      })
+      (sources."webpack-bundle-analyzer-3.6.1" // {
+        dependencies = [
+          sources."acorn-7.1.1"
+          sources."acorn-walk-7.1.1"
+        ];
+      })
+      (sources."webpack-cli-3.3.11" // {
+        dependencies = [
+          sources."cliui-5.0.0"
+          sources."emojis-list-2.1.0"
+          sources."enhanced-resolve-4.1.0"
+          sources."loader-utils-1.2.3"
+          sources."memory-fs-0.4.1"
+          sources."supports-color-6.1.0"
+          sources."yargs-13.2.4"
+        ];
+      })
+      (sources."webpack-dev-middleware-3.7.2" // {
+        dependencies = [
+          sources."memory-fs-0.4.1"
+          sources."mime-2.4.4"
+          sources."webpack-log-2.0.0"
+        ];
+      })
+      (sources."webpack-dev-server-3.10.3" // {
+        dependencies = [
+          sources."ansi-regex-2.1.1"
+          sources."camelcase-5.3.1"
+          (sources."cliui-4.1.0" // {
+            dependencies = [
+              sources."ansi-regex-3.0.0"
+              sources."strip-ansi-4.0.0"
+            ];
+          })
+          sources."debug-4.1.1"
+          sources."get-caller-file-1.0.3"
+          sources."is-fullwidth-code-point-1.0.0"
+          sources."ms-2.1.2"
+          sources."require-main-filename-1.0.1"
+          sources."semver-6.3.0"
+          (sources."string-width-2.1.1" // {
+            dependencies = [
+              sources."ansi-regex-3.0.0"
+              sources."is-fullwidth-code-point-2.0.0"
+              sources."strip-ansi-4.0.0"
+            ];
+          })
+          sources."strip-ansi-3.0.1"
+          sources."supports-color-6.1.0"
+          sources."webpack-log-2.0.0"
+          (sources."wrap-ansi-2.1.0" // {
+            dependencies = [
+              sources."string-width-1.0.2"
+            ];
+          })
+          sources."yargs-12.0.5"
+          sources."yargs-parser-11.1.1"
+        ];
+      })
+      sources."webpack-log-1.2.0"
+      sources."webpack-sources-1.4.3"
+      (sources."websocket-1.0.31" // {
+        dependencies = [
+          sources."debug-2.6.9"
+        ];
+      })
+      sources."websocket-driver-0.7.3"
+      sources."websocket-extensions-0.1.3"
+      sources."whatwg-encoding-1.0.5"
+      sources."whatwg-mimetype-2.3.0"
+      sources."whatwg-url-6.5.0"
+      sources."which-1.3.1"
+      sources."which-module-2.0.0"
+      sources."window-size-0.1.0"
+      sources."with-5.1.1"
+      sources."word-wrap-1.2.3"
+      sources."wordwrap-0.0.2"
+      sources."worker-farm-1.7.0"
+      sources."wrap-ansi-5.1.0"
+      sources."wrappy-1.0.2"
+      sources."write-file-atomic-2.4.1"
+      sources."ws-6.2.1"
+      sources."xml-name-validator-3.0.0"
+      sources."xtend-4.0.2"
+      sources."y18n-4.0.0"
+      sources."yaeti-0.0.6"
+      sources."yallist-3.1.1"
+      sources."yargs-3.10.0"
+      (sources."yargs-parser-13.1.2" // {
+        dependencies = [
+          sources."camelcase-5.3.1"
+        ];
+      })
+      sources."ylru-1.2.1"
+    ];
+    buildInputs = globalBuildInputs;
+    meta = {
+      license = "MIT";
+    };
+    production = false;
+    bypassCache = true;
+    reconstructLock = true;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/spacegun/package.json b/nixpkgs/pkgs/applications/networking/cluster/spacegun/package.json
new file mode 100644
index 000000000000..7d419edb74a2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/spacegun/package.json
@@ -0,0 +1,3 @@
+[
+  { "spacegun": "git+https://github.com/dvallin/spacegun.git#v0.3.3" }
+]
diff --git a/nixpkgs/pkgs/applications/networking/cluster/spark/default.nix b/nixpkgs/pkgs/applications/networking/cluster/spark/default.nix
new file mode 100644
index 000000000000..162585851d0c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/spark/default.nix
@@ -0,0 +1,59 @@
+{ stdenv, fetchzip, makeWrapper, jre, pythonPackages, coreutils, hadoop
+, RSupport? true, R
+, mesosSupport ? true, mesos
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+
+  pname = "spark";
+  version = "2.4.4";
+
+  src = fetchzip {
+    url    = "mirror://apache/spark/${pname}-${version}/${pname}-${version}-bin-without-hadoop.tgz";
+    sha256 = "1a9w5k0207fysgpxx6db3a00fs5hdc2ncx99x4ccy2s0v5ndc66g"; 
+  };
+
+  buildInputs = [ makeWrapper jre pythonPackages.python pythonPackages.numpy ]
+    ++ optional RSupport R
+    ++ optional mesosSupport mesos;
+
+  untarDir = "${pname}-${version}-bin-without-hadoop";
+  installPhase = ''
+    mkdir -p $out/{lib/${untarDir}/conf,bin,/share/java}
+    mv * $out/lib/${untarDir}
+
+    sed -e 's/INFO, console/WARN, console/' < \
+       $out/lib/${untarDir}/conf/log4j.properties.template > \
+       $out/lib/${untarDir}/conf/log4j.properties
+
+    cat > $out/lib/${untarDir}/conf/spark-env.sh <<- EOF
+    export JAVA_HOME="${jre}"
+    export SPARK_HOME="$out/lib/${untarDir}"
+    export SPARK_DIST_CLASSPATH=$(${hadoop}/bin/hadoop classpath)
+    export PYSPARK_PYTHON="${pythonPackages.python}/bin/${pythonPackages.python.executable}"
+    export PYTHONPATH="\$PYTHONPATH:$PYTHONPATH"
+    ${optionalString RSupport
+      ''export SPARKR_R_SHELL="${R}/bin/R"
+        export PATH=$PATH:"${R}/bin/R"''}
+    ${optionalString mesosSupport
+      ''export MESOS_NATIVE_LIBRARY="$MESOS_NATIVE_LIBRARY"''}
+    EOF
+
+    for n in $(find $out/lib/${untarDir}/bin -type f ! -name "*.*"); do
+      makeWrapper "$n" "$out/bin/$(basename $n)"
+      substituteInPlace "$n" --replace dirname ${coreutils.out}/bin/dirname
+    done
+    ln -s $out/lib/${untarDir}/lib/spark-assembly-*.jar $out/share/java
+  '';
+
+  meta = {
+    description      = "Apache Spark is a fast and general engine for large-scale data processing";
+    homepage         = "http://spark.apache.org";
+    license          = stdenv.lib.licenses.asl20;
+    platforms        = stdenv.lib.platforms.all;
+    maintainers      = with maintainers; [ thoughtpolice offline kamilchm ];
+    repositories.git = "git://git.apache.org/spark.git";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/ssm-agent/default.nix b/nixpkgs/pkgs/applications/networking/cluster/ssm-agent/default.nix
new file mode 100644
index 000000000000..0835d268cd79
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/ssm-agent/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, buildGoPackage }:
+
+buildGoPackage rec {
+  pname   = "amazon-ssm-agent";
+  version = "2.0.633.0";
+
+  goPackagePath = "github.com/aws/${pname}";
+  subPackages   = [ "agent" ];
+
+  src = fetchFromGitHub {
+    rev    = "v${version}";
+    owner  = "aws";
+    repo   = pname;
+    sha256 = "10arshfn2k3m3zzgw8b3xc6ywd0ss73746nq5srh2jir7mjzi4xv";
+  };
+
+  preBuild = ''
+    mv go/src/${goPackagePath}/vendor strange-vendor
+    mv strange-vendor/src go/src/${goPackagePath}/vendor
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Agent to enable remote management of your Amazon EC2 instance configuration";
+    homepage    = "https://github.com/aws/amazon-ssm-agent";
+    license     = licenses.asl20;
+    platforms   = platforms.unix;
+    maintainers = with maintainers; [ copumpkin ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/networking/cluster/ssm-session-manager-plugin/default.nix b/nixpkgs/pkgs/applications/networking/cluster/ssm-session-manager-plugin/default.nix
new file mode 100644
index 000000000000..7c948fbcdfc7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/ssm-session-manager-plugin/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, lib, fetchurl, autoPatchelfHook, dpkg, awscli }:
+stdenv.mkDerivation rec {
+  pname = "ssm-session-manager-plugin";
+  version = "1.1.61.0";
+
+  src = fetchurl {
+    url =
+      "https://s3.amazonaws.com/session-manager-downloads/plugin/${version}/ubuntu_64bit/session-manager-plugin.deb";
+    sha256 = "0z59irrpwhjjhn379454xyraqs590hij2n6n6k25w5hh8ak7imfl";
+  };
+
+  nativeBuildInputs = [ autoPatchelfHook dpkg ];
+
+  buildInputs = [ awscli ];
+
+  unpackPhase = "dpkg-deb -x $src .";
+
+  installPhase =
+    "install -m755 -D usr/local/sessionmanagerplugin/bin/session-manager-plugin $out/bin/session-manager-plugin";
+
+  meta = with lib; {
+    homepage =
+      "https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html";
+    description = "Amazon SSM Session Manager Plugin";
+    platforms = [ "x86_64-linux" ];
+    license = licenses.unfree;
+    maintainers = with maintainers; [ mbaillie ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/stern/default.nix b/nixpkgs/pkgs/applications/networking/cluster/stern/default.nix
new file mode 100644
index 000000000000..8ad0e8711f2f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/stern/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, lib, buildPackages, buildGoPackage, fetchFromGitHub, installShellFiles }:
+
+let isCrossBuild = stdenv.hostPlatform != stdenv.buildPlatform; in
+
+buildGoPackage rec {
+  pname = "stern";
+  version = "1.11.0";
+
+  goPackagePath = "github.com/wercker/stern";
+
+  src = fetchFromGitHub {
+    owner = "wercker";
+    repo = "stern";
+    rev = version;
+    sha256 = "0xndlq0ks8flzx6rdd4lnkxpkbvdy9sj1jwys5yj7p989ls8by3n";
+  };
+
+  goDeps = ./deps.nix;
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  postInstall =
+    let stern = if isCrossBuild then buildPackages.stern else "$out"; in
+    ''
+      for shell in bash zsh; do
+        ${stern}/bin/stern --completion $shell > stern.$shell
+        installShellCompletion stern.$shell
+      done
+    '';
+
+  meta = with lib; {
+    description      = "Multi pod and container log tailing for Kubernetes";
+    homepage         = "https://github.com/wercker/stern";
+    license          = licenses.asl20;
+    maintainers      = with maintainers; [ mbode ];
+    platforms        = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/stern/deps.nix b/nixpkgs/pkgs/applications/networking/cluster/stern/deps.nix
new file mode 100644
index 000000000000..fff5cf8c0de4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/stern/deps.nix
@@ -0,0 +1,336 @@
+# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix)
+[
+  {
+    goPackagePath  = "cloud.google.com/go";
+    fetch = {
+      type = "git";
+      url = "https://code.googlesource.com/gocloud";
+      rev =  "dfffe386c33fb24c34ee501e5723df5b97b98514";
+      sha256 = "1g681yxz4mmzapzpzxfaz1nhcr1w526793yapfsnxlbs2skap3fy";
+    };
+  }
+  {
+    goPackagePath  = "github.com/Azure/go-autorest";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Azure/go-autorest";
+      rev =  "1ff28809256a84bb6966640ff3d0371af82ccba4";
+      sha256 = "0sxvj2j1833bqwxvhq3wq3jgq73rnb81pnzvl0x3y1m0hzpaf2zv";
+    };
+  }
+  {
+    goPackagePath  = "github.com/dgrijalva/jwt-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dgrijalva/jwt-go";
+      rev =  "06ea1031745cb8b3dab3f6a236daf2b0aa468b7e";
+      sha256 = "08m27vlms74pfy5z79w67f9lk9zkx6a9jd68k3c4msxy75ry36mp";
+    };
+  }
+  {
+    goPackagePath  = "github.com/fatih/color";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fatih/color";
+      rev =  "2d684516a8861da43017284349b7e303e809ac21";
+      sha256 = "1fcfmz4wji3gqmmsdx493r7d101s58hwjalqps6hy25nva5pvmfs";
+    };
+  }
+  {
+    goPackagePath  = "github.com/ghodss/yaml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ghodss/yaml";
+      rev =  "73d445a93680fa1a78ae23a5839bad48f32ba1ee";
+      sha256 = "0pg53ky4sy3sp9j4n7vgf1p3gw4nbckwqfldcmmi9rf13kjh0mr7";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gogo/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gogo/protobuf";
+      rev =  "c0656edd0d9eab7c66d1eb0c568f9039345796f7";
+      sha256 = "0b943dhx571lhgcs3rqzy0092mi2x5mwy2kl7g8rryhy3r5rzrz9";
+    };
+  }
+  {
+    goPackagePath  = "github.com/golang/glog";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/glog";
+      rev =  "23def4e6c14b4da8ac2ed8007337bc5eb5007998";
+      sha256 = "0jb2834rw5sykfr937fxi8hxi2zy80sj2bdn9b3jb4b26ksqng30";
+    };
+  }
+  {
+    goPackagePath  = "github.com/golang/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/protobuf";
+      rev =  "b4deda0973fb4c70b50d226b1af49f3da59f5265";
+      sha256 = "0ya4ha7m20bw048m1159ppqzlvda4x0vdprlbk5sdgmy74h3xcdq";
+    };
+  }
+  {
+    goPackagePath  = "github.com/google/btree";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/btree";
+      rev =  "4030bb1f1f0c35b30ca7009e9ebd06849dd45306";
+      sha256 = "0ba430m9fbnagacp57krgidsyrgp3ycw5r7dj71brgp5r52g82p6";
+    };
+  }
+  {
+    goPackagePath  = "github.com/google/gofuzz";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/gofuzz";
+      rev =  "24818f796faf91cd76ec7bddd72458fbced7a6c1";
+      sha256 = "0cq90m2lgalrdfrwwyycrrmn785rgnxa3l3vp9yxkvnv88bymmlm";
+    };
+  }
+  {
+    goPackagePath  = "github.com/googleapis/gnostic";
+    fetch = {
+      type = "git";
+      url = "https://github.com/googleapis/gnostic";
+      rev =  "0c5108395e2debce0d731cf0287ddf7242066aba";
+      sha256 = "0jf3cp5clli88gpjf24r6wxbkvngnc1kf59d4cgjczsn2wasvsfc";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gregjones/httpcache";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gregjones/httpcache";
+      rev =  "787624de3eb7bd915c329cba748687a3b22666a6";
+      sha256 = "1zqlg9pkj7r6fqw7wv3ywvbz3bh0hvzifs2scgcraj812q5189w5";
+    };
+  }
+  {
+    goPackagePath  = "github.com/imdario/mergo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/imdario/mergo";
+      rev =  "6633656539c1639d9d78127b7d47c622b5d7b6dc";
+      sha256 = "1fffbq1l17i0gynmvcxypl7d9h4v81g5vlimiph5bfgf4sp4db7g";
+    };
+  }
+  {
+    goPackagePath  = "github.com/inconshreveable/mousetrap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/inconshreveable/mousetrap";
+      rev =  "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75";
+      sha256 = "1mn0kg48xkd74brf48qf5hzp0bc6g8cf5a77w895rl3qnlpfw152";
+    };
+  }
+  {
+    goPackagePath  = "github.com/json-iterator/go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/json-iterator/go";
+      rev =  "f2b4162afba35581b6d4a50d3b8f34e33c144682";
+      sha256 = "0siqfghsm2lkdwinvg8x5gls3p76rq3cdm59c1r4x0b2mdfhnvcd";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mattn/go-colorable";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-colorable";
+      rev =  "167de6bfdfba052fa6b2d3664c8f5272e23c9072";
+      sha256 = "1nwjmsppsjicr7anq8na6md7b1z84l9ppnlr045hhxjvbkqwalvx";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mattn/go-isatty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-isatty";
+      rev =  "6ca4dbf54d38eea1a992b3c722a76a5d1c4cb25c";
+      sha256 = "0zs92j2cqaw9j8qx1sdxpv3ap0rgbs0vrvi72m40mg8aa36gd39w";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mitchellh/go-homedir";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-homedir";
+      rev =  "b8bc1bf767474819792c23f32d8286a45736f1c6";
+      sha256 = "13ry4lylalkh4g2vny9cxwvryslzyzwp9r92z0b10idhdq3wad1q";
+    };
+  }
+  {
+    goPackagePath  = "github.com/modern-go/concurrent";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/concurrent";
+      rev =  "bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94";
+      sha256 = "0s0fxccsyb8icjmiym5k7prcqx36hvgdwl588y0491gi18k5i4zs";
+    };
+  }
+  {
+    goPackagePath  = "github.com/modern-go/reflect2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/reflect2";
+      rev =  "4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd";
+      sha256 = "1721y3yr3dpx5dx5ashf063qczk2awy5zjir1jvp1h5hn7qz4i49";
+    };
+  }
+  {
+    goPackagePath  = "github.com/petar/GoLLRB";
+    fetch = {
+      type = "git";
+      url = "https://github.com/petar/GoLLRB";
+      rev =  "53be0d36a84c2a886ca057d34b6aa4468df9ccb4";
+      sha256 = "01xp3lcamqkvl91jg6ly202gdsgf64j39rkrcqxi6v4pbrcv7hz0";
+    };
+  }
+  {
+    goPackagePath  = "github.com/peterbourgon/diskv";
+    fetch = {
+      type = "git";
+      url = "https://github.com/peterbourgon/diskv";
+      rev =  "5f041e8faa004a95c88a202771f4cc3e991971e6";
+      sha256 = "1mxpa5aad08x30qcbffzk80g9540wvbca4blc1r2qyzl65b8929b";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev =  "816c9085562cd7ee03e7f8188a1cfd942858cded";
+      sha256 = "1ws5crb7c70wdicavl6qr4g03nn6m92zd6wwp9n2ygz5c8rmxh8k";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/cobra";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cobra";
+      rev =  "a114f312e075f65bf30d6d9a1430113f857e543b";
+      sha256 = "10lmi5ni06yijxg02fcic5b7ycjkia12yma4a4lz8a56j30wykx1";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev =  "3ebe029320b2676d667ae88da602a5f854788a8a";
+      sha256 = "11yxs0wqy70wj106fkz8r923yg4ncnc2mbw33v48zmlg4a1rasgp";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev =  "49796115aa4b964c318aad4f3084fdb41e9aa067";
+      sha256 = "0pcq2drkzsw585xi6rda8imd7a139prrmvgmv8nz0zgzk6g4dy59";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev =  "1c05540f6879653db88113bc4a2b70aec4bd491f";
+      sha256 = "0h8yqb0vcqgllgydrf9d3rzp83w8wlr8f0nm6r1rwf2qg30pq1pd";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/oauth2";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/oauth2";
+      rev =  "a6bd8cefa1811bd24b86f8902872e4e8225f74c4";
+      sha256 = "151in8qcf5y97ziavl6b03vgw4r87zqx5kg4vjhjszjbh60cfswp";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev =  "8e24a49d80f82323e1c4db1b5da3e0f31171a151";
+      sha256 = "0zsdnyb8dy98jw6f9yn6g5gdhaqwk39hqridr0mh4dhwvwvlj724";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev =  "f21a4dfb5e38f5895301dc265a8def02365cc3d0";
+      sha256 = "0r6x6zjzhr8ksqlpiwm5gdd7s209kwk5p4lw54xjvz10cs3qlq19";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/time";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/time";
+      rev =  "f51c12702a4d776e4c1fa9b0fabab841babae631";
+      sha256 = "07wc6g2fvafkr6djsscm0jpbpl4135khhb6kpyx1953hi5d1jvyy";
+    };
+  }
+  {
+    goPackagePath  = "google.golang.org/appengine";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/appengine";
+      rev =  "ae0ab99deb4dc413a2b4bd6c8bdd0eb67f1e4d06";
+      sha256 = "1iabxnqgxvvn1239i6fvfl375vlbvhfrc03m1x2rvalmx4d6w9c7";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/inf.v0";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-inf/inf";
+      rev =  "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4";
+      sha256 = "0rf3vwyb8aqnac9x9d6ax7z5526c45a16yjm2pvkijr6qgqz8b82";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-yaml/yaml";
+      rev =  "5420a8b6744d3b0345ab293f6fcba19c978f1183";
+      sha256 = "0dwjrs2lp2gdlscs7bsrmyc5yf6mm4fvgw71bzr9mv2qrd2q73s1";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/api";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/api";
+      rev =  "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6";
+      sha256 = "1dpmd59jlkxgrp5aaf8420344c6nq4kjlc1avgcp7690yrzc50v6";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/apimachinery";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/apimachinery";
+      rev =  "594fc14b6f143d963ea2c8132e09e73fe244b6c9";
+      sha256 = "0xykhpmjgagyb0ac4y0ps4v1s9bd2b1sc0simh48c41a9fk3yvr7";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/client-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/client-go";
+      rev =  "739dd8f9d4801eb23e2bc43423c0b4acaaded29a";
+      sha256 = "15psjmb14rz4kwysim9vfbbylx0khkw29b195rziv1vk202lh28k";
+    };
+  }
+]
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/taktuk/default.nix b/nixpkgs/pkgs/applications/networking/cluster/taktuk/default.nix
new file mode 100644
index 000000000000..a5a2ace2399b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/taktuk/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, perl }:
+
+stdenv.mkDerivation rec {
+  version = "3.7.7";
+  pname = "taktuk";
+
+  buildInputs = [ perl ];
+
+  src = fetchurl {
+    url = "https://gforge.inria.fr/frs/download.php/33412/${pname}-${version}.tar.gz";
+    sha256 = "0w0h3ynlcxvq2nzm8hkj20g0805ww3vkw53g0qwj7wvp7p3gcvnr";
+  };
+
+  preBuild = ''
+      substituteInPlace ./taktuk --replace "/usr/bin/perl" "${perl}/bin/perl"
+  '';
+
+  meta = {
+    description = "Efficient, large scale, parallel remote execution of commands";
+    longDescription = ''
+      TakTuk allows one to execute commands in parallel on a potentially large set
+      of remote nodes (using ssh to connect to each node). It is typically used
+      inside high performance computing clusters and grids. It uses an adaptive
+      algorithm to efficiently distribute the work and sets up an interconnection
+      network to transport commands and perform I/Os multiplexing. It doesn't
+      require any specific software on the nodes thanks to a self-propagation
+      algorithm.'';
+    homepage = "http://taktuk.gforge.inria.fr/";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.bzizou ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-docs/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-docs/default.nix
new file mode 100644
index 000000000000..a5b6e7d2f5e7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-docs/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildGoPackage, fetchFromGitHub }:
+buildGoPackage rec {
+  pname = "terraform-docs";
+  version = "0.9.1";
+
+  goPackagePath = "github.com/segmentio/${pname}";
+
+  src = fetchFromGitHub {
+    owner  = "segmentio";
+    repo   = pname;
+    rev    = "v${version}";
+    sha256 = "00sfzdqhf8g85m03r6mbzfas5vvc67iq7syb8ljcgxg8l1knxnjx";
+  };
+
+  preBuild = ''
+    buildFlagsArray+=("-ldflags" "-X main.version=${version}")
+  '';
+
+  meta = with lib; {
+    description = "A utility to generate documentation from Terraform modules in various output formats";
+    homepage = "https://github.com/segmentio/terraform-docs/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ zimbatm ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-inventory/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-inventory/default.nix
new file mode 100644
index 000000000000..38fbd1b42865
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-inventory/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildGoPackage, fetchFromGitHub}:
+
+buildGoPackage rec {
+  pname = "terraform-inventory";
+  version = "0.7-pre";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/adammck/terraform-inventory";
+
+  subPackages = [ "./" ];
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "adammck";
+    repo = "terraform-inventory";
+    sha256 = "0wwyi2nfyn3wfpmvj8aabn0cjba0lpr5nw3rgd6qdywy7sc3rmb1";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/adammck/terraform-inventory";
+    description = "Terraform state to ansible inventory adapter";
+    platforms = platforms.all;
+    license = licenses.mit;
+    maintainers = with maintainers; [ htr ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-inventory/deps.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-inventory/deps.nix
new file mode 100644
index 000000000000..9f7b5e317fe3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-inventory/deps.nix
@@ -0,0 +1,20 @@
+[
+  {
+    goPackagePath = "github.com/adammck/venv";
+    fetch = {
+      type = "git";
+      url = "https://github.com/adammck/venv";
+      rev = "8a9c907a37d36a8f34fa1c5b81aaf80c2554a306";
+      sha256 = "1fzk3j4q59kpd2ks2aw8rmic6b123p5mh981cjh0kzs716grc6y8";
+    };
+  }
+  {
+    goPackagePath = "github.com/blang/vfs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/blang/vfs";
+      rev = "c14afcac17253ce7418da751ec6b1988790cdc8f";
+      sha256 = "00q5qzxpn9n59nrmrljz4w9lljxvrr8i5j8i8b4iw86j0alcx53b";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/Gemfile b/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/Gemfile
new file mode 100644
index 000000000000..c4f9a5511de9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/Gemfile
@@ -0,0 +1,2 @@
+source 'https://rubygems.org'
+gem 'terraform_landscape'
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/Gemfile.lock b/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/Gemfile.lock
new file mode 100644
index 000000000000..7307d8a33f3c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/Gemfile.lock
@@ -0,0 +1,25 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    colorize (0.8.1)
+    commander (4.4.6)
+      highline (~> 1.7.2)
+    diffy (3.2.1)
+    highline (1.7.10)
+    polyglot (0.3.5)
+    terraform_landscape (0.2.1)
+      colorize (~> 0.7)
+      commander (~> 4.4)
+      diffy (~> 3.0)
+      treetop (~> 1.6)
+    treetop (1.6.10)
+      polyglot (~> 0.3)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  terraform_landscape
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/default.nix
new file mode 100644
index 000000000000..903aa9abb6e2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/default.nix
@@ -0,0 +1,18 @@
+{ lib, bundlerApp, bundlerUpdateScript }:
+
+bundlerApp {
+  pname = "terraform_landscape";
+
+  gemdir = ./.;
+  exes = [ "landscape" ];
+
+  passthru.updateScript = bundlerUpdateScript "terraform-landscape";
+
+  meta = with lib; {
+    description = "Improve Terraform's plan output to be easier to read and understand";
+    homepage    = "https://github.com/coinbase/terraform-landscape";
+    license     = with licenses; asl20;
+    maintainers = with maintainers; [ mbode manveru nicknovitski ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/gemset.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/gemset.nix
new file mode 100644
index 000000000000..aa3f5142aa5e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/gemset.nix
@@ -0,0 +1,61 @@
+{
+  colorize = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b";
+      type = "gem";
+    };
+    version = "0.8.1";
+  };
+  commander = {
+    dependencies = ["highline"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11sd2sb0id2dbxkv4pvymdiia1xxhms45kh4nr8mryqybad0fwwf";
+      type = "gem";
+    };
+    version = "4.4.6";
+  };
+  diffy = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg";
+      type = "gem";
+    };
+    version = "3.2.1";
+  };
+  highline = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01ib7jp85xjc4gh4jg0wyzllm46hwv8p0w1m4c75pbgi41fps50y";
+      type = "gem";
+    };
+    version = "1.7.10";
+  };
+  polyglot = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr";
+      type = "gem";
+    };
+    version = "0.3.5";
+  };
+  terraform_landscape = {
+    dependencies = ["colorize" "commander" "diffy" "treetop"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1i93pih7r6zcqpjhsmvkpfkgbh0l66c60i6fkiymq7vy2xd6wnns";
+      type = "gem";
+    };
+    version = "0.2.1";
+  };
+  treetop = {
+    dependencies = ["polyglot"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0g31pijhnv7z960sd09lckmw9h8rs3wmc8g4ihmppszxqm99zpv7";
+      type = "gem";
+    };
+    version = "1.6.10";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ansible/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ansible/default.nix
new file mode 100644
index 000000000000..bb634a78e23c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ansible/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, buildGoPackage }:
+buildGoPackage rec {
+  pname = "terraform-provider-ansible";
+  version = "1.0.3";
+
+  goPackagePath = "github.com/nbering/terraform-provider-ansible";
+  goDeps = ./deps.nix;
+
+  src = fetchFromGitHub {
+    owner = "nbering";
+    repo = "terraform-provider-ansible";
+    rev = "v${version}";
+    sha256 = "0dqi9ym0xvnz3h73cmd1vf6k2qwfhxvj1mcakkpmsd4cpxq4l6pr";
+  };
+
+  # Terraform allow checking the provider versions, but this breaks
+  # if the versions are not provided via file paths.
+  postBuild = "mv go/bin/terraform-provider-ansible{,_v${version}}";
+
+  meta = with stdenv.lib; {
+    description = "A Terraform provider serving as an interop layer for an Ansible dynamic inventory script.";
+    homepage = "https://github.com/nbering/terraform-provider-ansible";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ uskudnik ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ansible/deps.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ansible/deps.nix
new file mode 100644
index 000000000000..dc49f24afa59
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ansible/deps.nix
@@ -0,0 +1,11 @@
+[
+  {
+    goPackagePath = "github.com/hashicorp/terraform";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/terraform";
+      rev = "v0.12.5";
+      sha256 = "0p064rhaanwx4szs8hv6mdqad8d2bgfd94h2la11j58xbsxc7hap";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/data.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/data.nix
new file mode 100644
index 000000000000..117fb874bc02
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/data.nix
@@ -0,0 +1,1163 @@
+# Generated with ./update-all
+{
+  aci =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-aci";
+      rev     = "v0.2.3";
+      version = "0.2.3";
+      sha256  = "0sk0pp178w03fhsb65b9mpim1l4wqfnv9r9x64kiapjnvfb1rz3j";
+    };
+  acme =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-acme";
+      rev     = "v1.5.0";
+      version = "1.5.0";
+      sha256  = "1h53bgflchavnn4laf801d920bsgqqg0ph4slnf7y1fpb0mz5vdv";
+    };
+  akamai =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-akamai";
+      rev     = "v0.7.1";
+      version = "0.7.1";
+      sha256  = "0mg81147yz0m24xqljpw6v0ayhvb4fwf6qwaj7ii34hy2gjwv405";
+    };
+  alicloud =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-alicloud";
+      rev     = "v1.86.0";
+      version = "1.86.0";
+      sha256  = "1hbv9ah7fd173sapwgsbg7790piwxw9zx90wfj5vz5b96ggbg28d";
+    };
+  archive =
+    {
+      owner   = "hashicorp";
+      repo    = "terraform-provider-archive";
+      rev     = "v1.3.0";
+      version = "1.3.0";
+      sha256  = "1hwg8ai4bvsmgnl669608lr4v940xnyig1xshps490f47c8hqy6y";
+    };
+  arukas =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-arukas";
+      rev     = "v1.1.0";
+      version = "1.1.0";
+      sha256  = "1akl9fzgm5qv01vz18xjzyqjnlxw699qq4x8vr96j16l1zf10h99";
+    };
+  auth0 =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-auth0";
+      rev     = "v0.11.0";
+      version = "0.11.0";
+      sha256  = "1dkcgzvvwmw5z5q4146jk0gj5b1zrv51vvkhhjd8qh9ipinipn97";
+    };
+  aviatrix =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-aviatrix";
+      rev     = "v2.14.1";
+      version = "2.14.1";
+      sha256  = "137z7fgy5gp9n9fdvllyjh3nkbalrs2giqljfldbllymhvrv7xgr";
+    };
+  avi =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-avi";
+      rev     = "v0.2.2";
+      version = "0.2.2";
+      sha256  = "0dgpjg6iw21vfcn4i0x6x1l329a09wrd2jwghrjigwlq68wd835d";
+    };
+  aws =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-aws";
+      rev     = "v2.65.0";
+      version = "2.65.0";
+      sha256  = "005vs1qd6payicxldc9lr4w6kzr58xw9b930j52g1q7hlddl5mbb";
+    };
+  azuread =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-azuread";
+      rev     = "v0.10.0";
+      version = "0.10.0";
+      sha256  = "0i9xrsqgh1024189hihm2nqrcy2pcyf1bwxnamwmwph5cas6hfb3";
+    };
+  azurerm =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-azurerm";
+      rev     = "v2.13.0";
+      version = "2.13.0";
+      sha256  = "0aj19vy1flpb2233rxaypjcfimjr1wfqri1m3p15dy1r108q84r7";
+    };
+  azurestack =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-azurestack";
+      rev     = "v0.9.0";
+      version = "0.9.0";
+      sha256  = "1msm7jwzry0vmas3l68h6p0migrsm6d18zpxcncv197m8xbvg324";
+    };
+  baiducloud =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-baiducloud";
+      rev     = "v1.2.0";
+      version = "1.2.0";
+      sha256  = "1s2vk4vjni5nc50pdw60pm0grrf835xy551i6d4cmfxkkpqx3f6f";
+    };
+  bigip =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-bigip";
+      rev     = "v1.2.0";
+      version = "1.2.0";
+      sha256  = "0z0l4j8sn8yf6kw5sbyhp6s0046f738lsm650skcspqa5f63mbd9";
+    };
+  bitbucket =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-bitbucket";
+      rev     = "v1.2.0";
+      version = "1.2.0";
+      sha256  = "11n4wpvmaab164g6k077n9dbdbhd5lwl7pxpha5492ks468nd95b";
+    };
+  brightbox =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-brightbox";
+      rev     = "v1.3.0";
+      version = "1.3.0";
+      sha256  = "127l1ic70fkcqr0h23qhbpl1j2mzp44p9593x8jl936xz4ll8l70";
+    };
+  checkpoint =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-checkpoint";
+      rev     = "v1.0.2";
+      version = "1.0.2";
+      sha256  = "0zypjcg1z8fkz31lfhysxx42lpw8ak4aqgdis6rxzqbnkk491fjp";
+    };
+  chef =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-chef";
+      rev     = "v0.2.0";
+      version = "0.2.0";
+      sha256  = "0ihn4706fflmf0585w22l7arzxsa9biq4cgh8nlhlp5y0zy934ns";
+    };
+  cherryservers =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-cherryservers";
+      rev     = "v1.0.0";
+      version = "1.0.0";
+      sha256  = "1z6ai6q8aw38kiy8x13rp0dsvb4jk40cv8pk5c069q15m4jab8lh";
+    };
+  ciscoasa =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-ciscoasa";
+      rev     = "v1.2.0";
+      version = "1.2.0";
+      sha256  = "033pgy42qwjpmjyzylpml7sfzd6dvvybs56cid1f6sm4ykmxbal7";
+    };
+  clc =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-clc";
+      rev     = "v0.1.0";
+      version = "0.1.0";
+      sha256  = "0gvsjnwk6xkgxai1gxsjf0hsjxbv8d8jg5hq8yd3hjhc6785fgnf";
+    };
+  cloudflare =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-cloudflare";
+      rev     = "v2.7.0";
+      version = "2.7.0";
+      sha256  = "1r18lxhfi2sd42ja4bzxbkf5bli8iljrpqbgdcn1a7rcf44vnxa2";
+    };
+  cloudinit =
+    {
+      owner   = "hashicorp";
+      repo    = "terraform-provider-cloudinit";
+      rev     = "v1.0.0";
+      version = "1.0.0";
+      sha256  = "0i926f4xkfydd2bxmim69xrvi9ymn1vrc66zl117axzsmy9200zx";
+    };
+  cloudscale =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-cloudscale";
+      rev     = "v2.1.2";
+      version = "2.1.2";
+      sha256  = "052pa17a77fkmhvygfgmpz87xlc08qvz1apzc2scg2449xfdv7zb";
+    };
+  cloudstack =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-cloudstack";
+      rev     = "v0.3.0";
+      version = "0.3.0";
+      sha256  = "0zmyww6z3j839ydlmv254hr8gcsixng4lcvmiwkhxb3hj1nw8hcw";
+    };
+  cobbler =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-cobbler";
+      rev     = "v1.1.0";
+      version = "1.1.0";
+      sha256  = "08ljqibfi6alpvv8f7pzvjl2k4w6br6g6ac755x4xw4ycrr24xw9";
+    };
+  cohesity =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-cohesity";
+      rev     = "v0.1.0";
+      version = "0.1.0";
+      sha256  = "1yifipjf51n8q9xyqcmc4zjpszmpyzb330f4zas81hahjml78hgx";
+    };
+  constellix =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-constellix";
+      rev     = "v0.1.0";
+      version = "0.1.0";
+      sha256  = "14y0v8ilbrjj0aymrw50fkz2mihnwyv83z8a9f8dh399s8l624w1";
+    };
+  consul =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-consul";
+      rev     = "v2.8.0";
+      version = "2.8.0";
+      sha256  = "1brd0fp9ksc3x8cygxm0k2q1sh4v5x89298pnidg6xirn41lvcr4";
+    };
+  ct =
+    {
+      owner   = "poseidon";
+      repo    = "terraform-provider-ct";
+      rev     = "v0.5.0";
+      version = "0.5.0";
+      sha256  = "1zqfaxlyhr9vpqj2qqpfyh1f1nfpynb7c5ris6mdmy9zin55ppni";
+    };
+  datadog =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-datadog";
+      rev     = "v2.7.0";
+      version = "2.7.0";
+      sha256  = "0cq11cjcm2nlszqhsrj425mk8dp0h5ljrrn7jplrbffp8g6wvadd";
+    };
+  digitalocean =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-digitalocean";
+      rev     = "v1.19.0";
+      version = "1.19.0";
+      sha256  = "0plfkwkfb19f7bzky4jfa2kmkqvbah02c6j6applsd3jyiawpbgy";
+    };
+  dme =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-dme";
+      rev     = "v0.1.0";
+      version = "0.1.0";
+      sha256  = "1ipqw1sbx0i9rhxawsysrqxvf10z8ra2y86xwd4iz0f12x9drblv";
+    };
+  dnsimple =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-dnsimple";
+      rev     = "v0.4.0";
+      version = "0.4.0";
+      sha256  = "1f1cpfa30frghp4yxp9n313yaf2mm1hnjq4kzmn6n9210prab9h1";
+    };
+  dns =
+    {
+      owner   = "hashicorp";
+      repo    = "terraform-provider-dns";
+      rev     = "v2.2.0";
+      version = "2.2.0";
+      sha256  = "11xdxj6hfclaq9glbh14nihmrsk220crm9ld8bdv77w0bppmrrch";
+    };
+  docker =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-docker";
+      rev     = "v2.7.1";
+      version = "2.7.1";
+      sha256  = "1jqnlc3dfy354yjdkj8iyxv0vamyxgmwxmhjim11alwzwjafbv9s";
+    };
+  dome9 =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-dome9";
+      rev     = "v1.19.0";
+      version = "1.19.0";
+      sha256  = "190q74aaa1v7n7pqcri8kib0g0d4njf9dzm3cygyzmsjs3pxj1lc";
+    };
+  dyn =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-dyn";
+      rev     = "v1.2.0";
+      version = "1.2.0";
+      sha256  = "1a3kxmbib2y0nl7gnxknbhsflj5kfknxnm3gjxxrb2h5d2kvqy48";
+    };
+  exoscale =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-exoscale";
+      rev     = "v0.16.2";
+      version = "0.16.2";
+      sha256  = "102z4v3shk0as76v90151j4c6p93wy16m1hzzk1yp50dlc8ffsks";
+    };
+  external =
+    {
+      owner   = "hashicorp";
+      repo    = "terraform-provider-external";
+      rev     = "v1.2.0";
+      version = "1.2.0";
+      sha256  = "1kx28bffhd1pg3m0cbldclc8l9zic16mqrk7gybcls9vyds5gbvc";
+    };
+  fastly =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-fastly";
+      rev     = "v0.16.1";
+      version = "0.16.1";
+      sha256  = "1pjrcw03a86xgkzcx778f7kk79svv8csy05b7qi0m5x77zy4pws7";
+    };
+  flexibleengine =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-flexibleengine";
+      rev     = "v1.12.1";
+      version = "1.12.1";
+      sha256  = "0klxi40dd3a4dp7gjsjjwh6zv2m94hh6mk5m9g0dyhvn0r28w5j2";
+    };
+  fortios =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-fortios";
+      rev     = "v1.2.0";
+      version = "1.2.0";
+      sha256  = "0sqp23pyldxjkfw33xn5l5fqs4vn00kkfhy9wnl690wn0cwmldbx";
+    };
+  genymotion =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-genymotion";
+      rev     = "v1.1.0";
+      version = "1.1.0";
+      sha256  = "02jpr3cm7rrf810c69sr6lcxzvxpnf7icc5z80gnvg67wwfg4ph4";
+    };
+  github =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-github";
+      rev     = "v2.8.0";
+      version = "2.8.0";
+      sha256  = "11aw9wqnayl786hvbgnb9ijijaipaggj18vkn5y0kcj2v4dwq4wg";
+    };
+  gitlab =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-gitlab";
+      rev     = "v2.9.0";
+      version = "2.9.0";
+      sha256  = "0l0b69nxxskpsylcgli2sm9qq7p4hw96dsri24w38shhnxmpysbb";
+    };
+  google-beta =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-google-beta";
+      rev     = "v3.18.0";
+      version = "3.18.0";
+      sha256  = "1rsaqrgr6ddgx1pala83y70dk32s0mvf6vi877awmimxjzsa1l4r";
+    };
+  google =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-google";
+      rev     = "v3.18.0";
+      version = "3.18.0";
+      sha256  = "18cxl1qw1wyvzvhgjm1s3c19hbi5z9s6mipgazhrac70myw8dmy7";
+    };
+  grafana =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-grafana";
+      rev     = "v1.5.0";
+      version = "1.5.0";
+      sha256  = "0zy3bqgpxymp2zygaxzllk1ysdankwxa1sy1djfgr4fs2nlggkwi";
+    };
+  gridscale =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-gridscale";
+      rev     = "v1.6.0";
+      version = "1.6.0";
+      sha256  = "00l3cwvyyjk0n3j535qfj3bsf1s5l07786gnxycj0f8vz3a06bcq";
+    };
+  hcloud =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-hcloud";
+      rev     = "v1.16.0";
+      version = "1.16.0";
+      sha256  = "09v2bg4ffyh4ibz449dygxgd7mvjgh4b2r242l3cwi7pzn66imrz";
+    };
+  hedvig =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-hedvig";
+      rev     = "v1.1.1";
+      version = "1.1.1";
+      sha256  = "1gd26jm9frn52hy2vm5sv003lbai5sjgdign6akhjmw5sdsmfr05";
+    };
+  helm =
+    {
+      owner   = "hashicorp";
+      repo    = "terraform-provider-helm";
+      rev     = "v1.2.2";
+      version = "1.2.2";
+      sha256  = "1hjlf0pzc9jkcvqi52kvqwmd8v0cvnhhcbahzxmv0zkdwh310c12";
+    };
+  heroku =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-heroku";
+      rev     = "v2.4.1";
+      version = "2.4.1";
+      sha256  = "10dacnd0y8q952s53n5myy08slw349pbfddjz63wcblcjyhvq0df";
+    };
+  http =
+    {
+      owner   = "hashicorp";
+      repo    = "terraform-provider-http";
+      rev     = "v1.2.0";
+      version = "1.2.0";
+      sha256  = "0q8ichbqrq62q1j0rc7sdz1jzfwg2l9v4ac9jqf6y485dblhmwqd";
+    };
+  huaweicloudstack =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-huaweicloudstack";
+      rev     = "v1.2.0";
+      version = "1.2.0";
+      sha256  = "0jhx9rap4128j8sfkvpp8lbdmvdba0rkd3nxvy38wr3n18m7v1xg";
+    };
+  huaweicloud =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-huaweicloud";
+      rev     = "v1.14.0";
+      version = "1.14.0";
+      sha256  = "10g5xl3pspzmj0bjzqbw3br4k7kh2jplph06f7sz2zg9dncl4h5z";
+    };
+  ibm =
+    {
+      owner   = "IBM-Cloud";
+      repo    = "terraform-provider-ibm";
+      rev     = "v1.7.0";
+      version = "1.7.0";
+      sha256  = "1kb2dxdygvph65hh7qiba9kl9k5aygxxvx3x1qi28jwny594j82a";
+    };
+  icinga2 =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-icinga2";
+      rev     = "v0.3.0";
+      version = "0.3.0";
+      sha256  = "0xwjxb84glhp9viqykziwanj696w2prq4r7k0565k0w3qiaz440v";
+    };
+  ignition =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-ignition";
+      rev     = "v1.2.1";
+      version = "1.2.1";
+      sha256  = "0wd29iw0a5w7ykgs9m1mmi0bw5z9dl4z640qyz64x8rlh5hl1wql";
+    };
+  incapsula =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-incapsula";
+      rev     = "v2.1.0";
+      version = "2.1.0";
+      sha256  = "12zw2m7j52rszfawywbiv9rgv976h1w6bp98012qn45d4ap2kvzy";
+    };
+  influxdb =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-influxdb";
+      rev     = "v1.3.0";
+      version = "1.3.0";
+      sha256  = "19af40g8hgz2rdz6523v0fs71ww7qdlf2mh5j9vb7pfzriqwa5k9";
+    };
+  infoblox =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-infoblox";
+      rev     = "v1.0.0";
+      version = "1.0.0";
+      sha256  = "0p95y5w3fzddygmsjc0j60z0f4aazvy5iwbwszj0i8gs42qhda2f";
+    };
+  jdcloud =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-jdcloud";
+      rev     = "v1.1.0";
+      version = "1.1.0";
+      sha256  = "04vz0m3z9rfw2hp0h3jhn625r2v37b319krznvhqylqzksv39dzf";
+    };
+  ksyun =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-ksyun";
+      rev     = "v1.0.0";
+      version = "1.0.0";
+      sha256  = "1vcx612bz2p0rjsrx11j6fdc0f0q2jm5m3xl94wrpx9jjb7aczvc";
+    };
+  kubernetes-alpha =
+    {
+      owner   = "hashicorp";
+      repo    = "terraform-provider-kubernetes-alpha";
+      rev     = "nightly20200608";
+      version = "nightly20200608";
+      sha256  = "1g171sppf3kq5qlp6g0qqdm0x8lnpizgw8bxjlhp9b6cl4kym70m";
+    };
+  kubernetes =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-kubernetes";
+      rev     = "v1.11.3";
+      version = "1.11.3";
+      sha256  = "13j4xwibjgiqpzwbwd0d3z1idv0lwz78ip38khhmhwa78mjjb4zz";
+    };
+  launchdarkly =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-launchdarkly";
+      rev     = "v1.3.2";
+      version = "1.3.2";
+      sha256  = "0vgkivzbf6hcl9by6l0whpwidva7zmmgdabkshjjk0npl2cj8f9n";
+    };
+  librato =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-librato";
+      rev     = "v0.1.0";
+      version = "0.1.0";
+      sha256  = "0bxadwj5s7bvc4vlymn3w6qckf14hz82r7q98w2nh55sqr52d923";
+    };
+  linode =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-linode";
+      rev     = "v1.12.3";
+      version = "1.12.3";
+      sha256  = "17hnm7wivd75psap2qdmlnmmlf964s7jf4jrfgsm6njx32wwwfpp";
+    };
+  local =
+    {
+      owner   = "hashicorp";
+      repo    = "terraform-provider-local";
+      rev     = "v1.4.0";
+      version = "1.4.0";
+      sha256  = "1k1kbdn99ypn1pi6vqbs1l9a8vvf4vs32wl8waa16i26514sz1wk";
+    };
+  logentries =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-logentries";
+      rev     = "v1.0.0";
+      version = "1.0.0";
+      sha256  = "04xprkb9zwdjyzmsdf10bgmn8sa8q7jw0izz8lw0cc9hag97qgbq";
+    };
+  logicmonitor =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-logicmonitor";
+      rev     = "v1.3.0";
+      version = "1.3.0";
+      sha256  = "00d8qx95cxaif636dyh935nv9nn6lmb1ybxy7n4myy9g80y50ap1";
+    };
+  mailgun =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-mailgun";
+      rev     = "v0.4.1";
+      version = "0.4.1";
+      sha256  = "1l76pg4hmww9zg2n4rkhm5dwjh42fxri6d41ih1bf670krkxwsmz";
+    };
+  matchbox =
+    {
+      owner   = "poseidon";
+      repo    = "terraform-provider-matchbox";
+      rev     = "v0.3.0";
+      version = "0.3.0";
+      sha256  = "1nq7k8qa7rv8xyryjigwpwcwvj1sw85c4j46rkfdv70b6js25jz3";
+    };
+  metalcloud =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-metalcloud";
+      rev     = "v2.2.0";
+      version = "2.2.0";
+      sha256  = "0xii9gk96srzi9y4pbvlx2cvwypll4igvk89f9qrg18qrw72ags3";
+    };
+  mongodbatlas =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-mongodbatlas";
+      rev     = "v0.5.1";
+      version = "0.5.1";
+      sha256  = "0sl5yd1bqj79f7pj49aqh7l3fvdrbf8r7a4g7cv15qbc8g3lr1dh";
+    };
+  mysql =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-mysql";
+      rev     = "v1.9.0";
+      version = "1.9.0";
+      sha256  = "14gxxki3jhncv3s2x828ns2vgmf2xxzigdyp9b54mbkw5rnv1k2g";
+    };
+  ncloud =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-ncloud";
+      rev     = "v1.2.0";
+      version = "1.2.0";
+      sha256  = "1h2fr0ss58dr3ypqj6kw90iyji6s83sz2i85vhs5z2adjbk7h8va";
+    };
+  netlify =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-netlify";
+      rev     = "v0.4.0";
+      version = "0.4.0";
+      sha256  = "07xds84k2vgpvn2cy3id7hmzg57sz2603zs4msn3ysxmi28lmqyg";
+    };
+  newrelic =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-newrelic";
+      rev     = "v1.19.0";
+      version = "1.19.0";
+      sha256  = "0nmbgw4qyzsw8kxi7p8dy4j1lkxcz7qfs56qsvwf2w07y4qm382p";
+    };
+  nixos =
+    {
+      owner   = "tweag";
+      repo    = "terraform-provider-nixos";
+      rev     = "v0.0.1";
+      version = "0.0.1";
+      sha256  = "00vz6qjq1pk39iqg4356b8g3c6slla9jifkv2knk46gc9q93q0lf";
+    };
+  nomad =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-nomad";
+      rev     = "v1.4.5";
+      version = "1.4.5";
+      sha256  = "1sccm4mspjn92ky6nscsrmbb573mx53wzsvvapsf2p4119h9s30i";
+    };
+  ns1 =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-ns1";
+      rev     = "v1.8.3";
+      version = "1.8.3";
+      sha256  = "18mq6r8sw2jjvngay0zyvzlfiln8c0xb8hcrl2wcmnpqv2iinbkl";
+    };
+  nsxt =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-nsxt";
+      rev     = "v2.0.0";
+      version = "2.0.0";
+      sha256  = "0fka793r0c06sz8vlxk0z7vbm6kab5xzk39r5pznkq34004r17sl";
+    };
+  null =
+    {
+      owner   = "hashicorp";
+      repo    = "terraform-provider-null";
+      rev     = "v2.1.2";
+      version = "2.1.2";
+      sha256  = "0di1hxmd3s80sz8hl5q2i425by8fbk15f0r4jmnm6vra0cq89jw2";
+    };
+  nutanix =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-nutanix";
+      rev     = "v1.0.2";
+      version = "1.0.2";
+      sha256  = "17sgsxsh8minirks08c6gz52cf7ndn220sx4xzi6bq64yi6qw2yc";
+    };
+  oci =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-oci";
+      rev     = "v3.79.0";
+      version = "3.79.0";
+      sha256  = "11n2v537zniiv5xvhpypqrm09my8zybirvq4ly94hp69v73xj89c";
+    };
+  oktaasa =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-oktaasa";
+      rev     = "v1.0.0";
+      version = "1.0.0";
+      sha256  = "093d5r8dz8gryk8qp5var2qrrgkvs1gwgw3zqpxry9xc5cpn30w0";
+    };
+  okta =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-okta";
+      rev     = "v3.3.0";
+      version = "3.3.0";
+      sha256  = "1z557z1yagp2caf85hmcr6sddax9a5h47jja17082qmmr1qy0i07";
+    };
+  oneandone =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-oneandone";
+      rev     = "v1.3.0";
+      version = "1.3.0";
+      sha256  = "0c412nqg3k17124i51nn3ffra6gcll904h37h7hyvz97cdblcncn";
+    };
+  opc =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-opc";
+      rev     = "v1.4.0";
+      version = "1.4.0";
+      sha256  = "1yl8bbh4pf94wlmna294zcawylr9hiaix82wr321g9wb0vi3d5l8";
+    };
+  opennebula =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-opennebula";
+      rev     = "v0.1.1";
+      version = "0.1.1";
+      sha256  = "048cqd89fz5xpji1w8ylg75nbzzcx1c5n89y1k0ra8d3g2208yb2";
+    };
+  openstack =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-openstack";
+      rev     = "v1.28.0";
+      version = "1.28.0";
+      sha256  = "1g2nxv312ddvkgpph17m9sh4zmy5ddj8gqwnfb3frbfbbamrgar6";
+    };
+  opentelekomcloud =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-opentelekomcloud";
+      rev     = "v1.17.1";
+      version = "1.17.1";
+      sha256  = "1d4w35hpvxy5wkb6n9wrh2nfcsy0xgk6d4jbk4sy7dn44w3nkqbg";
+    };
+  opsgenie =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-opsgenie";
+      rev     = "v0.3.4";
+      version = "0.3.4";
+      sha256  = "11pbkhn7yhz2mfa01ikn7rdajl28zwxfq9g9qdf9lvkdrv88gwh0";
+    };
+  oraclepaas =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-oraclepaas";
+      rev     = "v1.5.3";
+      version = "1.5.3";
+      sha256  = "0xb03b5jgm06rgrllib6zj1nkh54zv2mqjnyfflgnazpf4c1ia15";
+    };
+  ovh =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-ovh";
+      rev     = "v0.8.0";
+      version = "0.8.0";
+      sha256  = "1ww4ng8w5hm50rbxd83xzbkq8qsn04dqwpdjhs587v9d0x2vwrf1";
+    };
+  packet =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-packet";
+      rev     = "v2.9.0";
+      version = "2.9.0";
+      sha256  = "0d9r272gidkwn4zr130ml047512qq5d5d599s63blzy6m38vilha";
+    };
+  pagerduty =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-pagerduty";
+      rev     = "v1.7.2";
+      version = "1.7.2";
+      sha256  = "1a8g8rpn52wibrxhnvhlda7ja38vw9aadgdc8nbj7zs50x4aj3ic";
+    };
+  panos =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-panos";
+      rev     = "v1.6.2";
+      version = "1.6.2";
+      sha256  = "1qy6jynv61zhvq16s8jkwjhxz7r65cmk9k37ahh07pbhdx707mz5";
+    };
+  pass =
+    {
+      owner   = "camptocamp";
+      repo    = "terraform-provider-pass";
+      rev     = "1.2.1";
+      version = "1.2.1";
+      sha256  = "1hf5mvgz5ycp7shiy8px205d9kwswfjmclg7mlh9a55bkraffahk";
+    };
+  postgresql =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-postgresql";
+      rev     = "v1.6.0";
+      version = "1.6.0";
+      sha256  = "0m9x60hrry0cqx4bhmql081wjcbay3750jwzqiph5vpj9717banf";
+    };
+  powerdns =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-powerdns";
+      rev     = "v1.4.0";
+      version = "1.4.0";
+      sha256  = "1mfcj32v66w5gnzbrdkampydl3m9f1155vcdw8l1f2nba59irkgw";
+    };
+  profitbricks =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-profitbricks";
+      rev     = "v1.5.2";
+      version = "1.5.2";
+      sha256  = "0gass4gzv8axlzn5rgg35nqvd61q82k041r0sr6x6pv6j8v1ixln";
+    };
+  pureport =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-pureport";
+      rev     = "v1.1.8";
+      version = "1.1.8";
+      sha256  = "02vmqwjz5m5hj4zghwicjp27dxvc4qsiwj4gjsi66w6djdqnh4h1";
+    };
+  rabbitmq =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-rabbitmq";
+      rev     = "v1.3.0";
+      version = "1.3.0";
+      sha256  = "1adkbfm0p7a9i1i53bdmb34g5871rklgqkx7kzmwmk4fvv89n6g8";
+    };
+  rancher2 =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-rancher2";
+      rev     = "v1.8.3";
+      version = "1.8.3";
+      sha256  = "1k2d9j17b7sssliraww6as196ihdcra1ylhg1qbynklpr0asiwna";
+    };
+  rancher =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-rancher";
+      rev     = "v1.5.0";
+      version = "1.5.0";
+      sha256  = "0yhv9ahj6ajspgnl2f77gpyd6klq44dyl74lvl10bx6yy56abi2m";
+    };
+  random =
+    {
+      owner   = "hashicorp";
+      repo    = "terraform-provider-random";
+      rev     = "v2.2.1";
+      version = "2.2.1";
+      sha256  = "1qklsxj443vsj61lwl7qf7xwgnllwcvb2yk6s0kn9g3iq63pcv30";
+    };
+  rightscale =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-rightscale";
+      rev     = "v1.3.1";
+      version = "1.3.1";
+      sha256  = "0abwxaghrxpahpsk6kd02fjh0rhck4xsdrzcpv629yh8ip9rzcaj";
+    };
+  rundeck =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-rundeck";
+      rev     = "v0.4.0";
+      version = "0.4.0";
+      sha256  = "1x131djsny8w84yf7w2il33wlc3ysy3k399dziii2lmq4h8sgrpr";
+    };
+  runscope =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-runscope";
+      rev     = "v0.6.0";
+      version = "0.6.0";
+      sha256  = "1fsph2cnyvzdwa5hwdjabfk4azmc3x8a7afpwpawxfdvqhgpr595";
+    };
+  scaleway =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-scaleway";
+      rev     = "v1.15.0";
+      version = "1.15.0";
+      sha256  = "0bdhjrml14f5z4spkl7l305g0vdzpgama7ahngws8jhvl8yfa208";
+    };
+  secret =
+    {
+      owner   = "tweag";
+      repo    = "terraform-provider-secret";
+      rev     = "v1.1.1";
+      version = "1.1.1";
+      sha256  = "1pr0amzgv1i1lxniqlx8spdb73q522l7pm8a4m25hwy1kwby37sd";
+    };
+  segment =
+    {
+      owner   = "ajbosco";
+      repo    = "terraform-provider-segment";
+      rev     = "v0.2.0";
+      version = "0.2.0";
+      sha256  = "0ic5b9djhnb1bs2bz3zdprgy3r55dng09xgc4d9l9fyp85g2amaz";
+    };
+  selectel =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-selectel";
+      rev     = "v3.3.0";
+      version = "3.3.0";
+      sha256  = "1fs96qd2b4glk8hhn5m9r04ap679g0kf3nnhjx1a2idqwrv71gcl";
+    };
+  signalfx =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-signalfx";
+      rev     = "v4.23.0";
+      version = "4.23.0";
+      sha256  = "1v3whvqb6nilfvw4c0xziq6yrlkl96d2cya094c7bd7wp9hzif1l";
+    };
+  skytap =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-skytap";
+      rev     = "v0.14.1";
+      version = "0.14.1";
+      sha256  = "0ygsdkv7czyhsjsx1q57rmmcl8x66d65yarhg40hlng5c7xpi52g";
+    };
+  softlayer =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-softlayer";
+      rev     = "v0.0.1";
+      version = "0.0.1";
+      sha256  = "1xcg5zm2n1pc3l7ng94k589r7ykv6fxsmr5qn9xmmpdf912rdnfq";
+    };
+  sops =
+    {
+      owner   = "carlpett";
+      repo    = "terraform-provider-sops";
+      rev     = "v0.5.1";
+      version = "0.5.1";
+      sha256  = "1x32w1qw46rwa8bjhkfn6ybr1dkbdqk0prlm0bnwn3gvvj0hc7kh";
+    };
+  spotinst =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-spotinst";
+      rev     = "v1.17.0";
+      version = "1.17.0";
+      sha256  = "0pmbr2xdqrzkd66zv4gpyxzahs7p2m2xl5qyvqpg0apxn91z3ra7";
+    };
+  stackpath =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-stackpath";
+      rev     = "v1.3.0";
+      version = "1.3.0";
+      sha256  = "0gsr903v6fngaxm2r5h53g9yc3jpx2zccqq07rhzm9jbsfb6rlzn";
+    };
+  statuscake =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-statuscake";
+      rev     = "v1.0.0";
+      version = "1.0.0";
+      sha256  = "1x295va6c72465cxps0kx3rrb7s9aip2cniy6icsg1b2yrsb9b26";
+    };
+  sumologic =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-sumologic";
+      rev     = "v2.0.3";
+      version = "2.0.3";
+      sha256  = "0d7xsfdfs6dj02bh90bhwsa2jgxf84df3pqmsjlmxvpv65dv4vs8";
+    };
+  telefonicaopencloud =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-telefonicaopencloud";
+      rev     = "v1.0.0";
+      version = "1.0.0";
+      sha256  = "1761wkjz3d2458xl7855lxklyxgyk05fddh92rp6975y0ca6xa5m";
+    };
+  template =
+    {
+      owner   = "hashicorp";
+      repo    = "terraform-provider-template";
+      rev     = "v2.1.2";
+      version = "2.1.2";
+      sha256  = "18w1mmma81m9j7yf6q500w8v9ss28w6sw2ynssl99pyw2gwmd04q";
+    };
+  tencentcloud =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-tencentcloud";
+      rev     = "v1.36.0";
+      version = "1.36.0";
+      sha256  = "1sqynm0g1al5hnxzccv8iiqcgd07ys0g828f3xfw53b6f5vzbhfr";
+    };
+  terraform =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-terraform";
+      rev     = "v1.0.2";
+      version = "1.0.2";
+      sha256  = "1aj6g6l68n9kqmxfjlkwwxnac7fhha6wrmvsw4yylf0qyssww75v";
+    };
+  tfe =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-tfe";
+      rev     = "v0.18.0";
+      version = "0.18.0";
+      sha256  = "1cl83afm00fflsd3skynjvncid3r74fkxfznrs1v8qypcg1j79g1";
+    };
+  tls =
+    {
+      owner   = "hashicorp";
+      repo    = "terraform-provider-tls";
+      rev     = "v2.1.1";
+      version = "2.1.1";
+      sha256  = "1qsx540pjcq4ra034q2dwnw5nmzab5h1c3vm20ppg5dkhhyiizq8";
+    };
+  triton =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-triton";
+      rev     = "v0.7.0";
+      version = "0.7.0";
+      sha256  = "14wbdm2rlmjld9y7iizdinhk1fnx5s8fgjgd3jcs1b4g126s0pl0";
+    };
+  turbot =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-turbot";
+      rev     = "v1.3.0";
+      version = "1.3.0";
+      sha256  = "0z56s3kmx84raiwiny9jing8ac9msfd5vk8va24k8czwj2v5gb0f";
+    };
+  ucloud =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-ucloud";
+      rev     = "v1.20.0";
+      version = "1.20.0";
+      sha256  = "1s3xgdrngiy7slxwk5cmhij681yyfvc8185yig7jmrm21q2981f6";
+    };
+  ultradns =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-ultradns";
+      rev     = "v0.1.0";
+      version = "0.1.0";
+      sha256  = "0bq2y6bxdax7qnmq6vxh8pz9sqy1r3m05dv7q5dbv2xvba1b88hj";
+    };
+  vault =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-vault";
+      rev     = "v2.11.0";
+      version = "2.11.0";
+      sha256  = "1yzakc7jp0rs9axnfdqw409asrbjhq0qa7xn4xzpi7m94g1ii12d";
+    };
+  vcd =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-vcd";
+      rev     = "v2.8.0";
+      version = "2.8.0";
+      sha256  = "0myj5a9mrh7vg6h3gk5f0wsdp6832nz0z10h184107sdchpv253n";
+    };
+  venafi =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-venafi";
+      rev     = "v0.9.2";
+      version = "0.9.2";
+      sha256  = "06nk5c7lxs8fc04sz97lc3yk1zk1b9phkzw6fj9fnmpgaak87bj9";
+    };
+  vra7 =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-vra7";
+      rev     = "v1.0.1";
+      version = "1.0.1";
+      sha256  = "0qmldgxmrv840c5rbmskdf4f9g4v52gg9v7magm6j2w2g0dp1022";
+    };
+  vsphere =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-vsphere";
+      rev     = "v1.18.3";
+      version = "1.18.3";
+      sha256  = "1cvfmkckigi80cvv826m0d8wzd98qny0r5nqpl7nkzz5kybkb5qp";
+    };
+  vthunder =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-vthunder";
+      rev     = "v0.1.0";
+      version = "0.1.0";
+      sha256  = "1mw55g0kjgp300p6y4s8wc91fgfxjm0cbszfzgbc8ca4b00j8cc2";
+    };
+  vultr =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-vultr";
+      rev     = "v1.3.0";
+      version = "1.3.0";
+      sha256  = "0swc2fvp83d6w0cqvyxs346c756wr48xbn8m8jqkmma5s4ab2y4k";
+    };
+  wavefront =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-wavefront";
+      rev     = "v2.3.0";
+      version = "2.3.0";
+      sha256  = "0aci96852bd4y8bi9y68p550jiji0c69kiw4zhf9qfld0sjz44j2";
+    };
+  yandex =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-yandex";
+      rev     = "v0.40.0";
+      version = "0.40.0";
+      sha256  = "0dymhdrdm00m9xn4xka3zbvjqnckhl06vz5zm6rqivkmw8m2q0mz";
+    };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix
new file mode 100644
index 000000000000..3a8ebe635f62
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix
@@ -0,0 +1,150 @@
+{ lib
+, buildGoPackage
+, fetchFromGitHub
+, callPackage
+}:
+let
+  list = import ./data.nix;
+
+  toDrv = data:
+    buildGoPackage rec {
+      inherit (data) owner repo rev version sha256;
+      name = "${repo}-${version}";
+      goPackagePath = "github.com/${owner}/${repo}";
+      subPackages = [ "." ];
+      src = fetchFromGitHub {
+        inherit owner repo rev sha256;
+      };
+      # Terraform allow checking the provider versions, but this breaks
+      # if the versions are not provided via file paths.
+      postBuild = "mv go/bin/${repo}{,_v${version}}";
+    };
+
+  # Google is now using the vendored go modules, which works a bit differently
+  # and is not 100% compatible with the pre-modules vendored folders.
+  #
+  # Instead of switching to goModules which requires a goModSha256, patch the
+  # goPackage derivation so it can install the top-level.
+  patchGoModVendor = drv:
+    drv.overrideAttrs (attrs: {
+      buildFlags = "-mod=vendor";
+
+      # override configurePhase to not move the source into GOPATH
+      configurePhase = ''
+        export GOPATH=$NIX_BUILD_TOP/go:$GOPATH
+        export GOCACHE=$TMPDIR/go-cache
+        export GO111MODULE=on
+      '';
+
+      # just build and install into $GOPATH/bin
+      buildPhase = ''
+        go install -mod=vendor -v -p 16 .
+      '';
+
+      # don't run the tests, they are broken in this setup
+      doCheck = false;
+    });
+
+  # These providers are managed with the ./update-all script
+  automated-providers = lib.mapAttrs (_: toDrv) list;
+
+  # These are the providers that don't fall in line with the default model
+  special-providers = {
+    # Override providers that use Go modules + vendor/ folder
+    google = patchGoModVendor automated-providers.google;
+    google-beta = patchGoModVendor automated-providers.google-beta;
+    ibm = patchGoModVendor automated-providers.ibm;
+
+    # providers that were moved to the `hashicorp` organization,
+    # but haven't updated their references yet:
+
+    # https://github.com/hashicorp/terraform-provider-archive/pull/67
+    archive = automated-providers.archive.overrideAttrs (attrs: {
+      prePatch = attrs.prePatch or "" + ''
+        substituteInPlace go.mod --replace terraform-providers/terraform-provider-archive hashicorp/terraform-provider-archive
+        substituteInPlace main.go --replace terraform-providers/terraform-provider-archive hashicorp/terraform-provider-archive
+      '';
+    });
+
+    # https://github.com/hashicorp/terraform-provider-dns/pull/101
+    dns = automated-providers.dns.overrideAttrs (attrs: {
+      prePatch = attrs.prePatch or "" + ''
+        substituteInPlace go.mod --replace terraform-providers/terraform-provider-dns hashicorp/terraform-provider-dns
+        substituteInPlace main.go --replace terraform-providers/terraform-provider-dns hashicorp/terraform-provider-dns
+      '';
+    });
+
+    # https://github.com/hashicorp/terraform-provider-external/pull/41
+    external = automated-providers.external.overrideAttrs (attrs: {
+      prePatch = attrs.prePatch or "" + ''
+        substituteInPlace go.mod --replace terraform-providers/terraform-provider-external hashicorp/terraform-provider-external
+        substituteInPlace main.go --replace terraform-providers/terraform-provider-external hashicorp/terraform-provider-external
+      '';
+    });
+
+    # https://github.com/hashicorp/terraform-provider-helm/pull/522
+    helm = automated-providers.helm.overrideAttrs (attrs: {
+      prePatch = attrs.prePatch or "" + ''
+        substituteInPlace go.mod --replace terraform-providers/terraform-provider-helm hashicorp/terraform-provider-helm
+        substituteInPlace main.go --replace terraform-providers/terraform-provider-helm hashicorp/terraform-provider-helm
+      '';
+    });
+
+    # https://github.com/hashicorp/terraform-provider-http/pull/40
+    http = automated-providers.http.overrideAttrs (attrs: {
+      prePatch = attrs.prePatch or "" + ''
+        substituteInPlace go.mod --replace terraform-providers/terraform-provider-http hashicorp/terraform-provider-http
+        substituteInPlace main.go --replace terraform-providers/terraform-provider-http hashicorp/terraform-provider-http
+      '';
+    });
+
+    # https://github.com/hashicorp/terraform-provider-local/pull/40
+    local = automated-providers.local.overrideAttrs (attrs: {
+      prePatch = attrs.prePatch or "" + ''
+        substituteInPlace go.mod --replace terraform-providers/terraform-provider-local hashicorp/terraform-provider-local
+        substituteInPlace main.go --replace terraform-providers/terraform-provider-local hashicorp/terraform-provider-local
+      '';
+    });
+
+    # https://github.com/hashicorp/terraform-provider-null/pull/43
+    null = automated-providers.null.overrideAttrs (attrs: {
+      prePatch = attrs.prePatch or "" + ''
+        substituteInPlace go.mod --replace terraform-providers/terraform-provider-null hashicorp/terraform-provider-null
+        substituteInPlace main.go --replace terraform-providers/terraform-provider-null hashicorp/terraform-provider-null
+      '';
+    });
+
+    # https://github.com/hashicorp/terraform-provider-random/pull/107
+    random = automated-providers.random.overrideAttrs (attrs: {
+      prePatch = attrs.prePatch or "" + ''
+        substituteInPlace go.mod --replace terraform-providers/terraform-provider-random hashicorp/terraform-provider-random
+        substituteInPlace main.go --replace terraform-providers/terraform-provider-random hashicorp/terraform-provider-random
+      '';
+    });
+
+    # https://github.com/hashicorp/terraform-provider-template/pull/79
+    template = automated-providers.template.overrideAttrs (attrs: {
+      prePatch = attrs.prePatch or "" + ''
+        substituteInPlace go.mod --replace terraform-providers/terraform-provider-template hashicorp/terraform-provider-template
+        substituteInPlace main.go --replace terraform-providers/terraform-provider-template hashicorp/terraform-provider-template
+      '';
+    });
+
+    # https://github.com/hashicorp/terraform-provider-tls/pull/71
+    tls = automated-providers.tls.overrideAttrs (attrs: {
+      prePatch = attrs.prePatch or "" + ''
+        substituteInPlace go.mod --replace terraform-providers/terraform-provider-tls hashicorp/terraform-provider-tls
+        substituteInPlace main.go --replace terraform-providers/terraform-provider-tls hashicorp/terraform-provider-tls
+      '';
+    });
+
+    # Packages that don't fit the default model
+    ansible = callPackage ./ansible {};
+    gandi = callPackage ./gandi {};
+    elasticsearch = callPackage ./elasticsearch {};
+    libvirt = callPackage ./libvirt {};
+    lxd = callPackage ./lxd {};
+    vpsadmin = callPackage ./vpsadmin {};
+  };
+in
+  automated-providers // special-providers
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/elasticsearch/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/elasticsearch/default.nix
new file mode 100644
index 000000000000..6afa63c4a525
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/elasticsearch/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, buildGoModule }:
+buildGoModule rec {
+  pname = "terraform-provider-elasticsearch";
+  version = "0.7.0";
+
+  src = fetchFromGitHub {
+    owner = "phillbaker";
+    repo = "terraform-provider-elasticsearch";
+    rev = "v${version}";
+    sha256 = "0ci9gcn9ijdbx25wa99iy0b3sl7akqa7b6gi9wnnl1dawpqznj7v";
+  };
+
+  vendorSha256 = "1rdvyypdl3fk6af66gfjhyl271cnlx5xgrl1w68sc6sbvq00bqkd";
+
+  subPackages = [ "." ];
+
+  # Terraform allow checking the provider versions, but this breaks
+  # if the versions are not provided via file paths.
+  postInstall = "mv $out/bin/terraform-provider-elasticsearch{,_v${version}}";
+
+  meta = with stdenv.lib; {
+    description = "Terraform provider for elasticsearch";
+    homepage = "https://github.com/phillbaker/terraform-provider-elasticsearch";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ basvandijk ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/default.nix
new file mode 100644
index 000000000000..4571d368991f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, buildGoPackage }:
+buildGoPackage rec {
+  pname = "terraform-provider-gandi";
+  version = "1.0.0";
+
+  goPackagePath = "github.com/tiramiseb/terraform-provider-gandi";
+  goDeps = ./deps.nix;
+
+  src = fetchFromGitHub {
+    owner = "tiramiseb";
+    repo = "terraform-provider-gandi";
+    rev = "v${version}";
+    sha256 = "0byydpqsimvnk11bh9iz8zlxbsmsk65w55pvkp18vjzqrhf4kyfv";
+  };
+
+  # Terraform allow checking the provider versions, but this breaks
+  # if the versions are not provided via file paths.
+  postBuild = "mv go/bin/terraform-provider-gandi{,_v${version}}";
+
+  meta = with stdenv.lib; {
+    description = "Terraform provider for the Gandi LiveDNS service.";
+    homepage = "https://github.com/tiramiseb/terraform-provider-gandi";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ manveru ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/deps.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/deps.nix
new file mode 100644
index 000000000000..3d4a3547502d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/deps.nix
@@ -0,0 +1,21 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+[
+  {
+    goPackagePath = "github.com/hashicorp/terraform";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/terraform";
+      rev = "27b720113ed5143a870ec151b3b7c9d955a09bc0";
+      sha256 = "1f0hwdf2z68p0ll3pgrx949h09q52gcfaxap0zz52m7px98sfab4";
+    };
+  }
+  {
+    goPackagePath = "github.com/tiramiseb/go-gandi-livedns";
+    fetch = {
+      type = "git";
+      url = "https://github.com/tiramiseb/go-gandi-livedns";
+      rev = "4773a84f8ee7365ed21edc6cd0602aaf93e94e59";
+      sha256 = "1i8s7yclrkhf974vs2splh5symzk0ym54px0bc216bq4ifzkwkqc";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix
new file mode 100644
index 000000000000..42ed3d21066f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, libvirt, pkgconfig, makeWrapper, cdrtools }:
+
+# USAGE:
+# install the following package globally or in nix-shell:
+#
+#   (terraform.withPlugins (p: [p.libvirt]))
+#
+# configuration.nix:
+#
+#   virtualisation.libvirtd.enable = true;
+#
+# terraform-provider-libvirt does not manage pools at the moment:
+#
+#   $ virsh --connect "qemu:///system" pool-define-as default dir - - - - /var/lib/libvirt/images
+#   $ virsh --connect "qemu:///system" pool-start default
+#
+# pick an example from (i.e ubuntu):
+# https://github.com/dmacvicar/terraform-provider-libvirt/tree/master/examples
+
+buildGoPackage rec {
+  pname = "terraform-provider-libvirt";
+  version = "0.6.2";
+
+  goPackagePath = "github.com/dmacvicar/terraform-provider-libvirt";
+
+  src = fetchFromGitHub {
+    owner = "dmacvicar";
+    repo = "terraform-provider-libvirt";
+    rev = "v${version}";
+    sha256 = "1wkpns047ccff0clfb1108wjax1qb5v06hky0i3h2wpzysll7r7b";
+  };
+
+  nativeBuildInputs = [ pkgconfig makeWrapper ];
+
+  buildInputs = [ libvirt ];
+
+  # mkisofs needed to create ISOs holding cloud-init data,
+  # and wrapped to terraform via deecb4c1aab780047d79978c636eeb879dd68630
+  propagatedBuildInputs = [ cdrtools ];
+
+  # Terraform allow checking the provider versions, but this breaks
+  # if the versions are not provided via file paths.
+  postBuild = "mv go/bin/terraform-provider-libvirt{,_v${version}}";
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/dmacvicar/terraform-provider-libvirt";
+    description = "Terraform provider for libvirt";
+    platforms = platforms.linux;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ mic92 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/lxd/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/lxd/default.nix
new file mode 100644
index 000000000000..69d93ac1c754
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/lxd/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "terraform-provider-lxd";
+  version = "1.3.0";
+
+  src = fetchFromGitHub {
+    owner = "sl1pm4t";
+    repo = "terraform-provider-lxd";
+    rev = "v${version}";
+    sha256 = "1k54021178zybh9dqly2ly8ji9x5rka8dn9xd6rv7gkcl5w3y6fv";
+  };
+
+  vendorSha256 = "1shdpl1zsbbpc3mfs0l65ykq2h15ggvqylaixcap4j4lfl7m9my0";
+
+  postBuild = "mv ../go/bin/terraform-provider-lxd{,_v${version}}";
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/sl1pm4t/terraform-provider-lxd";
+    description = "Terraform provider for lxd";
+    platforms = platforms.linux;
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ gila ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-all b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-all
new file mode 100755
index 000000000000..e6e93b454034
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-all
@@ -0,0 +1,177 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i bash -p bash coreutils jq nix gitAndTools.hub
+# vim: ft=sh sw=2 et
+# shellcheck shell=bash
+#
+# This scripts scans the github terraform-providers repo for new releases,
+# generates the corresponding nix code and finally generates an index of
+# all the providers given in ./providers.txt.
+set -euo pipefail
+
+# the maximum number of attempts before giving up inside of GET and prefetch_github
+readonly maxAttempts=30
+
+get_tf_providers_org() {
+  # returns all terraform providers in a given organization, and their the
+  # latest tags, in the format
+  # $org/$repo $rev
+  local org=$1
+  hub api --paginate graphql -f query="
+    query(\$endCursor: String) {
+      repositoryOwner(login: \"${org}\") {
+        repositories(first: 100, after: \$endCursor) {
+          nodes {
+            nameWithOwner
+            name
+            refs(first: 1, refPrefix: \"refs/tags/\", orderBy: {field: TAG_COMMIT_DATE, direction: DESC}) {
+              nodes {
+                name
+              }
+            }
+          }
+          pageInfo {
+            hasNextPage
+            endCursor
+          }
+        }
+      }
+  }" | \
+  jq -r '.data.repositoryOwner.repositories.nodes[] | select(.name | startswith("terraform-provider-")) | select((.refs.nodes | length) > 0) | .nameWithOwner + " " + .refs.nodes[0].name'
+  # filter the result with jq:
+  # - repos need to start with `teraform-provider-`
+  # - they need to have at least one tag
+  # for each of the remaining repos, assemble a string $org/$repo $rev
+}
+
+get_latest_repo_tag() {
+  # of a given repo and owner, retrieve the latest tag
+  local owner=$1
+  local repo=$2
+  hub api --paginate "https://api.github.com/repos/$owner/$repo/git/refs/tags" | \
+    jq -r '.[].ref' | \
+    grep -v 'v\.' | \
+    cut -d '/' -f 3- | \
+    sort --version-sort | \
+    tail -1
+}
+
+prefetch_github() {
+  # of a given owner, repo and rev, fetch the tarball and return the output of
+  # `nix-prefetch-url`
+  local owner=$1
+  local repo=$2
+  local rev=$3
+  local retry=1
+  while ! nix-prefetch-url --unpack "https://github.com/$owner/$repo/archive/$rev.tar.gz"; do
+    echo "The nix-prefetch-url command has failed. Attempt $retry/${maxAttempts}" >&2
+    if [[ "${retry}" -eq "${maxAttempts}" ]]; then
+      exit 1
+    fi
+    retry=$(( retry + 1 ))
+    sleep 5
+  done
+}
+
+echo_entry() {
+  local owner=$1
+  local repo=$2
+  local rev=$3
+  local version=${rev#v}
+  local sha256=$4
+  cat <<EOF
+{
+  owner   = "$owner";
+  repo    = "$repo";
+  rev     = "$rev";
+  version = "$version";
+  sha256  = "$sha256";
+};
+EOF
+}
+
+indent() { sed 's/^/    /'; }
+
+add_provider() {
+  org="${1}"
+  repo="${2}"
+  rev="${3}"
+
+  echo "*** $org/$repo $rev ***"
+  name=$(echo "$repo" | cut -d - -f 3-)
+  sha256=$(prefetch_github "$org" "$repo" "$rev")
+
+  {
+    echo "  $name ="
+    echo_entry "$org" "$repo" "$rev" "$sha256" | indent
+  } >> data.nix
+}
+
+## Main ##
+
+cd "$(dirname "$0")"
+
+# individual repos to fetch
+slugs=(
+  IBM-Cloud/terraform-provider-ibm
+  ajbosco/terraform-provider-segment
+  camptocamp/terraform-provider-pass
+  carlpett/terraform-provider-sops
+  poseidon/terraform-provider-matchbox
+  poseidon/terraform-provider-ct
+  tweag/terraform-provider-nixos
+  tweag/terraform-provider-secret
+)
+
+# a list of providers to ignore
+blacklist=(
+  terraform-providers/terraform-provider-azure-classic
+  terraform-providers/terraform-provider-cidr
+  terraform-providers/terraform-provider-circonus
+  terraform-providers/terraform-provider-cloudinit
+  terraform-providers/terraform-provider-quorum
+  hashicorp/terraform-provider-time
+  terraform-providers/terraform-provider-vmc
+)
+
+cat <<HEADER > data.nix
+# Generated with ./update-all
+{
+HEADER
+
+# assemble list of terraform providers
+providers=$(get_tf_providers_org "terraform-providers")
+providers=$(echo "$providers";get_tf_providers_org "hashicorp")
+
+# add terraform-providers from slugs
+for slug in "${slugs[@]}"; do
+  # retrieve latest tag
+  org=${slug%/*}
+  repo=${slug#*/}
+  rev=$(get_latest_repo_tag "$org" "$repo")
+
+  # add to list
+  providers=$(echo "$providers";echo "$org/$repo $rev")
+done
+
+# filter out all providers on the blacklist
+for repo in "${blacklist[@]}"; do
+  providers=$(echo "$providers" | grep -v "^${repo} ")
+done
+
+# sort results alphabetically by repo name
+providers=$(echo "$providers" | sort -t "/" --key=2)
+
+# render list
+IFS=$'\n'
+for provider in $providers; do
+  org=$(echo "$provider" | cut -d " " -f 1 | cut -d "/" -f1)
+  repo=$(echo "$provider" | cut -d " " -f 1 | cut -d "/" -f2)
+  rev=$(echo "$provider" | cut -d " " -f 2)
+  add_provider "${org}" "${repo}" "${rev}"
+done
+
+cat <<FOOTER >> data.nix
+}
+FOOTER
+
+echo Done.
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/vpsadmin/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/vpsadmin/default.nix
new file mode 100644
index 000000000000..2832580287b1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/vpsadmin/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, buildGoModule }:
+buildGoModule rec {
+  pname = "terraform-provider-vpsadmin";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "vpsfreecz";
+    repo = "terraform-provider-vpsadmin";
+    rev = "v${version}";
+    sha256 = "1vny6w9arbbra04bjjafisaswinm93ic1phy59l0g78sqf6x3a7v";
+  };
+
+  vendorSha256 = "0j90fnzba23mwf9bzf9w5h0hszkl3h61p5i780s9v9c0hbzhbqsh";
+
+  subPackages = [ "." ];
+
+  # Terraform allow checking the provider versions, but this breaks
+  # if the versions are not provided via file paths.
+  postInstall = "mv $out/bin/${pname}{,_v${version}}";
+
+  meta = with stdenv.lib; {
+    description = "Terraform provider for vpsAdmin";
+    homepage = "https://github.com/vpsfreecz/terraform-provider-vpsadmin";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ zimbatm ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform/default.nix
new file mode 100644
index 000000000000..080bc832544a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform/default.nix
@@ -0,0 +1,153 @@
+{ stdenv, lib, buildEnv, buildGoPackage, fetchFromGitHub, makeWrapper, coreutils
+, runCommand, writeText, terraform-providers, fetchpatch }:
+
+let
+  goPackagePath = "github.com/hashicorp/terraform";
+
+  generic = { version, sha256, ... }@attrs:
+    let attrs' = builtins.removeAttrs attrs [ "version" "sha256" ];
+    in buildGoPackage ({
+      name = "terraform-${version}";
+
+      inherit goPackagePath;
+
+      src = fetchFromGitHub {
+        owner = "hashicorp";
+        repo = "terraform";
+        rev = "v${version}";
+        inherit sha256;
+      };
+
+      postPatch = ''
+        # speakeasy hardcodes /bin/stty https://github.com/bgentry/speakeasy/issues/22
+        substituteInPlace vendor/github.com/bgentry/speakeasy/speakeasy_unix.go \
+          --replace "/bin/stty" "${coreutils}/bin/stty"
+      '';
+
+      postInstall = ''
+        # remove all plugins, they are part of the main binary now
+        for i in $out/bin/*; do
+          if [[ $(basename $i) != terraform ]]; then
+            rm "$i"
+          fi
+        done
+      '';
+
+      preCheck = ''
+        export HOME=$TMP
+      '';
+
+      meta = with stdenv.lib; {
+        description =
+          "Tool for building, changing, and versioning infrastructure";
+        homepage = "https://www.terraform.io/";
+        license = licenses.mpl20;
+        maintainers = with maintainers; [
+          zimbatm
+          peterhoeg
+          kalbasit
+          marsam
+          babariviere
+        ];
+      };
+    } // attrs');
+
+  pluggable = terraform:
+    let
+      withPlugins = plugins:
+        let
+          actualPlugins = plugins terraform.plugins;
+
+          # Wrap PATH of plugins propagatedBuildInputs, plugins may have runtime dependencies on external binaries
+          wrapperInputs = lib.unique (lib.flatten
+            (lib.catAttrs "propagatedBuildInputs"
+              (builtins.filter (x: x != null) actualPlugins)));
+
+          passthru = {
+            withPlugins = newplugins:
+              withPlugins (x: newplugins x ++ actualPlugins);
+            full = withPlugins lib.attrValues;
+
+            # Ouch
+            overrideDerivation = f:
+              (pluggable (terraform.overrideDerivation f)).withPlugins plugins;
+            overrideAttrs = f:
+              (pluggable (terraform.overrideAttrs f)).withPlugins plugins;
+            override = x:
+              (pluggable (terraform.override x)).withPlugins plugins;
+          };
+          # Don't bother wrapping unless we actually have plugins, since the wrapper will stop automatic downloading
+          # of plugins, which might be counterintuitive if someone just wants a vanilla Terraform.
+        in if actualPlugins == [ ] then
+          terraform.overrideAttrs
+          (orig: { passthru = orig.passthru // passthru; })
+        else
+          lib.appendToName "with-plugins" (stdenv.mkDerivation {
+            inherit (terraform) name;
+            buildInputs = [ makeWrapper ];
+
+            buildCommand = ''
+              mkdir -p $out/bin/
+              makeWrapper "${terraform}/bin/terraform" "$out/bin/terraform" \
+                --set NIX_TERRAFORM_PLUGIN_DIR "${
+                  buildEnv {
+                    name = "tf-plugin-env";
+                    paths = actualPlugins;
+                  }
+                }/bin" \
+                --prefix PATH : "${lib.makeBinPath wrapperInputs}"
+            '';
+
+            inherit passthru;
+          });
+    in withPlugins (_: [ ]);
+
+  plugins = removeAttrs terraform-providers [
+    "override"
+    "overrideDerivation"
+    "recurseForDerivations"
+  ];
+in rec {
+  terraform_0_11 = pluggable (generic {
+    version = "0.11.14";
+    sha256 = "1bzz5wy13gh8j47mxxp6ij6yh20xmxd9n5lidaln3mf1bil19dmc";
+    patches = [ ./provider-path.patch ];
+    passthru = { inherit plugins; };
+  });
+
+  terraform_0_11-full = terraform_0_11.full;
+
+  terraform_0_12 = pluggable (generic {
+    version = "0.12.26";
+    sha256 = "1f0n2zdk1jyqcmchsprqfkiivmsmdlpsf5b7x5f1dmvms9jw3268";
+    patches = [
+        ./provider-path.patch
+        (fetchpatch {
+            name = "fix-mac-mojave-crashes.patch";
+            url = "https://github.com/hashicorp/terraform/commit/cd65b28da051174a13ac76e54b7bb95d3051255c.patch";
+            sha256 = "1k70kk4hli72x8gza6fy3vpckdm3sf881w61fmssrah3hgmfmbrs";
+        }) ];
+    passthru = { inherit plugins; };
+  });
+
+  # Tests that the plugins are being used. Terraform looks at the specific
+  # file pattern and if the plugin is not found it will try to download it
+  # from the Internet. With sandboxing enable this test will fail if that is
+  # the case.
+  terraform_plugins_test = let
+    mainTf = writeText "main.tf" ''
+      resource "random_id" "test" {}
+    '';
+    terraform = terraform_0_11.withPlugins (p: [ p.random ]);
+    test =
+      runCommand "terraform-plugin-test" { buildInputs = [ terraform ]; } ''
+        set -e
+        # make it fail outside of sandbox
+        export HTTP_PROXY=http://127.0.0.1:0 HTTPS_PROXY=https://127.0.0.1:0
+        cp ${mainTf} main.tf
+        terraform init
+        touch $out
+      '';
+  in test;
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform/provider-path.patch b/nixpkgs/pkgs/applications/networking/cluster/terraform/provider-path.patch
new file mode 100644
index 000000000000..39a69e4a389f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform/provider-path.patch
@@ -0,0 +1,16 @@
+diff --git a/command/init.go b/command/init.go
+index 403ca245b..05d98329a 100644
+--- a/command/init.go
++++ b/command/init.go
+@@ -64,6 +64,11 @@ func (c *InitCommand) Run(args []string) int {
+ 		return 1
+ 	}
+ 
++	val, ok := os.LookupEnv("NIX_TERRAFORM_PLUGIN_DIR")
++	if ok {
++		flagPluginPath = append(flagPluginPath, val)
++	}
++
+ 	if len(flagPluginPath) > 0 {
+ 		c.pluginPath = flagPluginPath
+ 		c.getPlugins = false
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terragrunt/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terragrunt/default.nix
new file mode 100644
index 000000000000..6a4e1979e883
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terragrunt/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, lib, buildGoModule, fetchFromGitHub, terraform, makeWrapper }:
+
+buildGoModule rec {
+  pname = "terragrunt";
+  version = "0.23.14";
+
+   src = fetchFromGitHub {
+    owner = "gruntwork-io";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1znb9d4n9zv3dq10dw17kb1h04gj8iz6gwx1a741fcf4ygp8zpy1";
+  };
+
+  vendorSha256 = "0h737h25f80zfx84vm6ry0581c32ylcb5h9givqk5k5kh5qgkbgx";
+
+  buildInputs = [ makeWrapper ];
+
+  preBuild = ''
+    buildFlagsArray+=("-ldflags" "-X main.VERSION=v${version}")
+  '';
+
+  postInstall = ''
+    wrapProgram $out/bin/terragrunt \
+      --set TERRAGRUNT_TFPATH ${lib.getBin terraform.full}/bin/terraform
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A thin wrapper for Terraform that supports locking for Terraform state and enforces best practices.";
+    homepage = "https://github.com/gruntwork-io/terragrunt/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/tilt/default.nix b/nixpkgs/pkgs/applications/networking/cluster/tilt/default.nix
new file mode 100644
index 000000000000..13f2c3d9bd9e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/tilt/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "tilt";
+  /* Do not use "dev" as a version. If you do, Tilt will consider itself
+     running in development environment and try to serve assets from the
+     source tree, which is not there once build completes.  */
+  version = "0.11.3";
+
+  src = fetchFromGitHub {
+    owner  = "windmilleng";
+    repo   = pname;
+    rev    = "v${version}";
+    sha256 = "035czgr0rn6gcv24vnlr35n9yvy0fwq4spdzsc76gfxckcbcmzz0";
+  };
+
+  goPackagePath = "github.com/windmilleng/tilt";
+
+  subPackages = [ "cmd/tilt" ];
+
+  buildFlagsArray = ("-ldflags=-X main.version=${version} -X main.date=2020-01-25");
+
+  meta = with stdenv.lib; {
+    description = "Local development tool to manage your developer instance when your team deploys to Kubernetes in production";
+    homepage = "https://tilt.dev/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ anton-dessiatov ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/compactor/default.nix b/nixpkgs/pkgs/applications/networking/compactor/default.nix
new file mode 100644
index 000000000000..5d9a658972c3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/compactor/default.nix
@@ -0,0 +1,59 @@
+{ autoconf, automake, boost, cbor-diag, cddl, fetchFromGitHub, file, libctemplate, libmaxminddb
+, libpcap, libtins, libtool, lzma, openssl, pkgconfig, stdenv, tcpdump, wireshark-cli
+}:
+
+stdenv.mkDerivation rec {
+  pname = "compactor";
+  version = "0.12.2";
+
+  src = fetchFromGitHub {
+    owner = "dns-stats";
+    repo = pname;
+    rev = version;
+    sha256 = "17p9wsslsh6ifnadvyygr0cgir4q4iirxfz9zpkpbhh76cx2qnay";
+  };
+
+  # cbor-diag, cddl and wireshark-cli are only used for tests.
+  nativeBuildInputs = [ autoconf automake libtool pkgconfig cbor-diag cddl wireshark-cli ];
+  buildInputs = [
+    boost
+    libpcap
+    openssl
+    libtins
+    lzma
+    libctemplate
+    libmaxminddb
+  ];
+
+  prePatch = ''
+    patchShebangs test-scripts/
+  '';
+
+  preConfigure = ''
+    ${stdenv.shell} autogen.sh
+    substituteInPlace configure \
+      --replace "/usr/bin/file" "${file}/bin/file"
+  '';
+  CXXFLAGS = "-std=c++11";
+  configureFlags = [
+    "--with-boost-libdir=${boost.out}/lib"
+    "--with-boost=${boost.dev}"
+  ];
+  enableParallelBuilding = true;
+
+  doCheck = true;
+  preCheck = ''
+    substituteInPlace test-scripts/check-live-pcap.sh \
+      --replace "/usr/sbin/tcpdump" "${tcpdump}/bin/tcpdump"
+    rm test-scripts/same-tshark-output.sh
+  ''; # TODO: https://github.com/dns-stats/compactor/issues/49  (failing test)
+
+  meta = with stdenv.lib; {
+    description = "Tools to capture DNS traffic and record it in C-DNS files";
+    homepage    = "http://dns-stats.org/";
+    changelog   = "https://github.com/dns-stats/${pname}/raw/${version}/ChangeLog.txt";
+    license     = [ licenses.boost licenses.mpl20 licenses.openssl ];
+    maintainers = with maintainers; [ fdns ];
+    platforms   = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/datovka/default.nix b/nixpkgs/pkgs/applications/networking/datovka/default.nix
new file mode 100644
index 000000000000..6dc996c79754
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/datovka/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, mkDerivation
+, fetchurl
+, libxml2
+, libisds
+, qmake
+, qtbase
+, qtsvg
+, pkg-config
+}:
+
+mkDerivation rec {
+  pname = "datovka";
+  version = "4.15.1";
+
+  src = fetchurl {
+    url = "https://secure.nic.cz/files/datove_schranky/${version}/${pname}-${version}.tar.xz";
+    sha256 = "0ab1s1r6zrqxcfjnij5ar352kzyrl1m92c04nqk6hahpzzma2p3r";
+  };
+
+  buildInputs = [ libisds qmake qtbase qtsvg libxml2 ];
+
+  nativeBuildInputs = [ pkg-config ];
+
+  meta = with stdenv.lib; {
+    description = "Client application for operating Czech government-provided Databox infomation system";
+    homepage = "https://www.datovka.cz/";
+    license = licenses.lgpl3;
+    maintainers = [ maintainers.mmahut ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/davmail/default.nix b/nixpkgs/pkgs/applications/networking/davmail/default.nix
new file mode 100644
index 000000000000..38a08aaf4c06
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/davmail/default.nix
@@ -0,0 +1,30 @@
+{ fetchurl, stdenv, jre, glib, libXtst, gtk2, makeWrapper, unzip }:
+
+stdenv.mkDerivation rec {
+  pname = "davmail";
+  version = "5.4.0";
+  src = fetchurl {
+    url = "mirror://sourceforge/${pname}/${version}/${pname}-${version}-3135.zip";
+    sha256 = "05n2j5canh046744arvni6yfdsandvjkld93w3p7rg116jrh19gq";
+  };
+
+  sourceRoot = ".";
+
+  nativeBuildInputs = [ makeWrapper unzip ];
+
+  installPhase = ''
+    mkdir -p $out/share/davmail
+    cp -vR ./* $out/share/davmail
+    makeWrapper $out/share/davmail/davmail $out/bin/davmail \
+      --prefix PATH : ${jre}/bin \
+      --prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath [ glib gtk2 libXtst ]}
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://davmail.sourceforge.net/";
+    description = "A Java application which presents a Microsoft Exchange server as local CALDAV, IMAP and SMTP servers";
+    maintainers = [ maintainers.hinton ];
+    platforms = platforms.all;
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/dnscontrol/default.nix b/nixpkgs/pkgs/applications/networking/dnscontrol/default.nix
new file mode 100644
index 000000000000..70e107c063fb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/dnscontrol/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub, buildGoPackage}:
+
+buildGoPackage rec {
+  pname = "dnscontrol";
+  version = "3.2.0";
+
+  goPackagePath = "github.com/StackExchange/dnscontrol";
+
+  src = fetchFromGitHub {
+    owner = "StackExchange";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1lrn1whmx9zkyvs505zxrsmnr5s6kpj3kjkr6rblfwdlnadkgfj7";
+  };
+
+  subPackages = [ "." ];
+
+  meta = with stdenv.lib; {
+    description = "Synchronize your DNS to multiple providers from a simple DSL";
+    homepage = "https://stackexchange.github.io/dnscontrol/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ mmahut ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/drive/default.nix b/nixpkgs/pkgs/applications/networking/drive/default.nix
new file mode 100644
index 000000000000..ad1a0c9a533c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/drive/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "drive";
+  version = "0.3.8.1";
+
+  goPackagePath = "github.com/odeke-em/drive";
+  subPackages = [ "cmd/drive" ];
+
+  src = fetchFromGitHub {
+    owner = "odeke-em";
+    repo = "drive";
+    rev = "v${version}";
+    sha256 = "1b9cgc148rg5irg4jas10zv9i2km75x1zin25hld340dmpjcpi82";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with lib; {
+    homepage = "https://github.com/odeke-em/drive";
+    description = "Google Drive client for the commandline";
+    license = licenses.asl20;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/drive/deps.nix b/nixpkgs/pkgs/applications/networking/drive/deps.nix
new file mode 100644
index 000000000000..ca132288bd69
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/drive/deps.nix
@@ -0,0 +1,192 @@
+# This file was generated by go2nix.
+[
+  {
+    goPackagePath = "cloud.google.com/go";
+    fetch = {
+      type = "git";
+      url = "https://code.googlesource.com/gocloud";
+      rev = "7450882a75c8d2600748666d1ed16e0a5afa532d";
+      sha256 = "1hl2lsf9m1imdszf5mww4h6qrcjfdjghwh6l2kqsy85d32vbkjgd";
+    };
+  }
+  {
+    goPackagePath = "github.com/boltdb/bolt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/boltdb/bolt";
+      rev = "074dffcc83e9f421e261526d297cd93f22a34080";
+      sha256 = "1kkmsby74n9czqx4mvng9x1cvnm4qgjl3dp6b4mfmg2b00fwbqnv";
+    };
+  }
+  {
+    goPackagePath = "github.com/cheggaaa/pb";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cheggaaa/pb";
+      rev = "ad4efe000aa550bb54918c06ebbadc0ff17687b9";
+      sha256 = "0w6dl2s0vzb64q85yfy1hd5z2fq2vzwygiwl65is6hwa4vkc7hi3";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-isatty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-isatty";
+      rev = "66b8e73f3f5cda9f96b69efd03dd3d7fc4a5cdb8";
+      sha256 = "17lf13ndnai9a6dlmykqkdyzf1z04q7kffs0l7kvd78wpv3l6rm5";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/cache";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/cache";
+      rev = "baf8e436bc97557118cb0bf118ab8ac6aeeda381";
+      sha256 = "00nvrnp40w4m1ld89k3s3gwi9qcfjxwi8hnp62zggnvqqyc4fyz1";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/cli-spinner";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/cli-spinner";
+      rev = "610063bb4aeef25f7645b3e6080456655ec0fb33";
+      sha256 = "13wzs2qrxd72ah32ym0ppswhvyimjw5cqaq3q153y68vlvxd048c";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/command";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/command";
+      rev = "91ca5ec5e9a1bc2668b1ccbe0967e04a349e3561";
+      sha256 = "1ghckzr8h99ckagpmb15p61xazdjmf9mjmlym634hsr9vcj84v62";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/exponential-backoff";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/exponential-backoff";
+      rev = "96e25d36ae36ad09ac02cbfe653b44c4043a8e09";
+      sha256 = "1as21p2jj8xpahvdxqwsw2i1s3fll14dlc9j192iq7xl1ybwpqs6";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/extractor";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/extractor";
+      rev = "801861aedb854c7ac5e1329e9713023e9dc2b4d4";
+      sha256 = "036zmnqxy48h6mxiwywgxix2p4fqvl4svlmcp734ri2rbq3cmxs1";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/go-utils";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/go-utils";
+      rev = "d915395a7a46a9fe73d93f4daeff5953eeac5ef2";
+      sha256 = "0c1z4vmz69vxak8ldw4qjcgwia5ph969gj80az7a3824gia7zhbh";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/go-uuid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/go-uuid";
+      rev = "b211d769a9aaba5b2b8bdbab5de3c227116f3c39";
+      sha256 = "086l4xmwkjl5qcylcb5iwy9ksk9k5g43xwfbkcgvmhpz5mq3wmz2";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/log";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/log";
+      rev = "cad53c4565a0b0304577bd13f3862350bdc5f907";
+      sha256 = "059c933qjikxlvaywzpzljqnab19svymbv6x32pc7khw156fh48w";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/meddler";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/meddler";
+      rev = "d2b51d2b40e786ab5f810d85e65b96404cf33570";
+      sha256 = "0m0fqrn3kxy4swyk4ja1y42dn1i35rq9j85y11wb222qppy2342x";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/pretty-words";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/pretty-words";
+      rev = "9d37a7fcb4ae6f94b288d371938482994458cecb";
+      sha256 = "1466wjhrg9lhqmzil1vf8qj16fxk32b5kxlcccyw2x6dybqa6pkl";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/semalim";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/semalim";
+      rev = "9c88bf5f9156ed06ec5110a705d41b8580fd96f7";
+      sha256 = "0nq93dcl84cmlvg31rdk281ndlc2452zlh5s7i40hasi0z0kmn1k";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/statos";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/statos";
+      rev = "6f7e4db337bc11fc46d9b0456a93836cbbfe5141";
+      sha256 = "1lijz3cxqxd78sl0nzfgvs675dg7q99jqwvhgisnk9n84ic4ffzj";
+    };
+  }
+  {
+    goPackagePath = "github.com/skratchdot/open-golang";
+    fetch = {
+      type = "git";
+      url = "https://github.com/skratchdot/open-golang";
+      rev = "75fb7ed4208cf72d323d7d02fd1a5964a7a9073c";
+      sha256 = "1b67imqbsdvg19vif1q1dfmapxy3v2anagacbql95fwnnw0v8jga";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "5dc8cb4b8a8eb076cbb5a06bc3b8682c15bdbbd3";
+      sha256 = "18c1vpqlj10z1id66hglgnv51d9gwphgsdvxgghc6mcm01f1g5xj";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "6acef71eb69611914f7a30939ea9f6e194c78172";
+      sha256 = "1fcsv50sbq0lpzrhx3m9jw51wa255fsbqjwsx9iszq4d0gysnnvc";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/oauth2";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/oauth2";
+      rev = "1e695b1c8febf17aad3bfa7bf0a819ef94b98ad5";
+      sha256 = "1sfgrc63jwslczkld7bsfipw1jm1rn06228dx0vc5gggd52155ys";
+    };
+  }
+  {
+    goPackagePath = "google.golang.org/api";
+    fetch = {
+      type = "git";
+      url = "https://code.googlesource.com/google-api-go-client";
+      rev = "eb84d1a029af1654777e7ba65c979085305c3e38";
+      sha256 = "0ldmzcx5lxa81lcr39djcvyhd0ls11jlswj5877rinq3505ayf5l";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/droopy/default.nix b/nixpkgs/pkgs/applications/networking/droopy/default.nix
new file mode 100644
index 000000000000..f3f5f54f4092
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/droopy/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, lib, fetchFromGitHub, wrapPython }:
+
+with lib;
+
+stdenv.mkDerivation {
+  pname = "droopy";
+  version = "20160830";
+
+  src = fetchFromGitHub {
+    owner = "stackp";
+    repo = "Droopy";
+    rev = "7a9c7bc46c4ff8b743755be86a9b29bd1a8ba1d9";
+    sha256 = "03i1arwyj9qpfyyvccl21lbpz3rnnp1hsadvc0b23nh1z2ng9sff";
+  };
+
+  nativeBuildInputs = [ wrapPython ];
+
+  installPhase = ''
+    install -vD droopy $out/bin/droopy
+    install -vD -m 644 man/droopy.1 $out/share/man/man1/droopy.1
+    wrapPythonPrograms
+  '';
+
+  meta = {
+    description = "Mini Web server that let others upload files to your computer";
+    homepage = "http://stackp.online.fr/droopy";
+    license = licenses.bsd3;
+    maintainers = [ maintainers.Profpatsch ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/dropbox/cli.nix b/nixpkgs/pkgs/applications/networking/dropbox/cli.nix
new file mode 100644
index 000000000000..5ff47f4859aa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/dropbox/cli.nix
@@ -0,0 +1,70 @@
+{ stdenv
+, substituteAll
+, pkgconfig
+, fetchurl
+, python3
+, dropbox
+, gtk3
+, gnome3
+, gdk-pixbuf
+, gobject-introspection
+}:
+
+let
+  version = "2020.03.04";
+  dropboxd = "${dropbox}/bin/dropbox";
+in
+stdenv.mkDerivation {
+  pname = "dropbox-cli";
+  inherit version;
+
+  outputs = [ "out" "nautilusExtension" ];
+
+  src = fetchurl {
+    url = "https://linux.dropboxstatic.com/packages/nautilus-dropbox-${version}.tar.bz2";
+    sha256 = "1jjc835n2j61d23kvygdb4n4jsrw33r9mbwxrm4fqin6x01l2w7k";
+  };
+
+  strictDeps = true;
+
+  patches = [
+    (substituteAll {
+      src = ./fix-cli-paths.patch;
+      inherit dropboxd;
+    })
+  ];
+
+  nativeBuildInputs = [
+    pkgconfig
+    gobject-introspection
+    gdk-pixbuf
+    # only for build, the install command also wants to use GTK through introspection
+    # but we are using Nix for installation so we will not need that.
+    (python3.withPackages (ps: with ps; [
+      docutils
+      pygobject3
+    ]))
+  ];
+
+  buildInputs = [
+    python3
+    gtk3
+    gnome3.nautilus
+  ];
+
+  configureFlags = [
+    "--with-nautilus-extension-dir=${placeholder "nautilusExtension"}/lib/nautilus/extensions-3.0"
+  ];
+
+  makeFlags = [
+    "EMBLEM_DIR=${placeholder "nautilusExtension"}/share/nautilus-dropbox/emblems"
+  ];
+
+  meta = {
+    homepage = "https://www.dropbox.com";
+    description = "Command line client for the dropbox daemon";
+    license = stdenv.lib.licenses.gpl3Plus;
+    # NOTE: Dropbox itself only works on linux, so this is ok.
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/dropbox/default.nix b/nixpkgs/pkgs/applications/networking/dropbox/default.nix
new file mode 100644
index 000000000000..b3655888e1d3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/dropbox/default.nix
@@ -0,0 +1,85 @@
+{ stdenv, lib, buildFHSUserEnv, writeScript, makeDesktopItem }:
+
+let platforms = [ "i686-linux" "x86_64-linux" ]; in
+
+assert lib.elem stdenv.hostPlatform.system platforms;
+
+# Dropbox client to bootstrap installation.
+# The client is self-updating, so the actual version may be newer.
+let
+  version = "83.4.152";
+
+  arch = {
+    x86_64-linux = "x86_64";
+    i686-linux   = "x86";
+  }.${stdenv.hostPlatform.system};
+
+  installer = "https://clientupdates.dropboxstatic.com/dbx-releng/client/dropbox-lnx.${arch}-${version}.tar.gz";
+in
+
+let
+  desktopItem = makeDesktopItem {
+    name = "dropbox";
+    exec = "dropbox";
+    comment = "Sync your files across computers and to the web";
+    desktopName = "Dropbox";
+    genericName = "File Synchronizer";
+    categories = "Network;FileTransfer;";
+    startupNotify = "false";
+  };
+in
+
+buildFHSUserEnv {
+  name = "dropbox";
+
+  targetPkgs = pkgs: with pkgs; with xorg; [
+    libICE libSM libX11 libXcomposite libXdamage libXext libXfixes libXrender
+    libXxf86vm libxcb xkeyboardconfig
+    curl dbus firefox-bin fontconfig freetype gcc glib gnutar libxml2 libxslt
+    procps zlib mesa libxshmfence libpthreadstubs libappindicator
+  ];
+
+  extraInstallCommands = ''
+    mkdir -p "$out/share/applications"
+    cp "${desktopItem}/share/applications/"* $out/share/applications
+  '';
+
+  runScript = writeScript "install-and-start-dropbox" ''
+    export BROWSER=firefox
+
+    set -e
+
+    do_install=
+    if ! [ -d "$HOME/.dropbox-dist" ]; then
+        do_install=1
+    else
+        installed_version=$(cat "$HOME/.dropbox-dist/VERSION")
+        latest_version=$(printf "${version}\n$installed_version\n" | sort -rV | head -n 1)
+        if [ "x$installed_version" != "x$latest_version" ]; then
+            do_install=1
+        fi
+    fi
+
+    if [ -n "$do_install" ]; then
+        installer=$(mktemp)
+        # Dropbox is not installed.
+        # Download and unpack the client. If a newer version is available,
+        # the client will update itself when run.
+        curl '${installer}' >"$installer"
+        pkill dropbox || true
+        rm -fr "$HOME/.dropbox-dist"
+        tar -C "$HOME" -x -z -f "$installer"
+        rm "$installer"
+    fi
+
+    exec "$HOME/.dropbox-dist/dropboxd" "$@"
+  '';
+
+  meta = with lib; {
+    description = "Online stored folders (daemon version)";
+    homepage    = "http://www.dropbox.com/";
+    license     = licenses.unfree;
+    maintainers = with maintainers; [ ttuegel ];
+    platforms   = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/dropbox/fix-cli-paths.patch b/nixpkgs/pkgs/applications/networking/dropbox/fix-cli-paths.patch
new file mode 100644
index 000000000000..84cd8014e1e6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/dropbox/fix-cli-paths.patch
@@ -0,0 +1,11 @@
+--- a/dropbox.in
++++ b/dropbox.in
+@@ -71,7 +71,7 @@
+ 
+ PARENT_DIR = os.path.expanduser("~")
+ DROPBOX_DIST_PATH = "%s/.dropbox-dist" % PARENT_DIR
+-DROPBOXD_PATH = os.path.join(DROPBOX_DIST_PATH, "dropboxd")
++DROPBOXD_PATH = "@dropboxd@"
+ DESKTOP_FILE = "@DESKTOP_FILE_DIR@/dropbox.desktop"
+ 
+ enc = locale.getpreferredencoding()
diff --git a/nixpkgs/pkgs/applications/networking/dsvpn/default.nix b/nixpkgs/pkgs/applications/networking/dsvpn/default.nix
new file mode 100644
index 000000000000..04d3887bf4ed
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/dsvpn/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "dsvpn";
+  version = "0.1.4";
+
+  src = fetchFromGitHub {
+    owner = "jedisct1";
+    repo = pname;
+    rev = version;
+    sha256 = "1gbj3slwmq990qxsbsaxasi98alnnzv3adp6f8w8sxd4gi6qxhdh";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm755 -t $out/bin dsvpn
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A Dead Simple VPN";
+    homepage = "https://github.com/jedisct1/dsvpn";
+    license = licenses.mit;
+    maintainers = [ maintainers.marsam ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/dyndns/cfdyndns/default.nix b/nixpkgs/pkgs/applications/networking/dyndns/cfdyndns/default.nix
new file mode 100644
index 000000000000..60a7e5b2fb21
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/dyndns/cfdyndns/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, rustPlatform, pkg-config, openssl }:
+
+with rustPlatform;
+
+buildRustPackage rec {
+  pname = "cfdyndns";
+  version = "0.0.3";
+  src = fetchFromGitHub {
+    owner = "colemickens";
+    repo = "cfdyndns";
+    rev = "v${version}";
+    sha256 = "1fba0w2979dmc2wyggqx4fj52rrl1s2vpjk6mkj1811a848l1hdi";
+  };
+
+  cargoSha256 = "04ryin24z3pfxjxy4smngy66xs7k85g6gdzsl77cij8ifb29im99";
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ openssl ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -p $releaseDir/cfdyndns $out/bin/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "CloudFlare Dynamic DNS Client";
+    homepage = "https://github.com/colemickens/cfdyndns";
+    license = stdenv.lib.licenses.mit;
+    maintainers = with maintainers; [ colemickens ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/enhanced-ctorrent/default.nix b/nixpkgs/pkgs/applications/networking/enhanced-ctorrent/default.nix
new file mode 100644
index 000000000000..76d6d39baf29
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/enhanced-ctorrent/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, fetchpatch }:
+
+stdenv.mkDerivation {
+  version = "3.3.2";
+  pname = "enhanced-ctorrent-dhn";
+
+  src = fetchurl {
+    url = "http://www.rahul.net/dholmes/ctorrent/ctorrent-dnh3.3.2.tar.gz";
+    sha256 = "0qs8waqwllk56i3yy3zhncy7nsnhmf09a494p5siz4vm2k4ncwy8";
+  };
+
+  # These patches come from Debian and fix CVE-2009-1759.
+  patches = [
+    (fetchpatch {
+      url = "https://sources.debian.org/data/main/c/ctorrent/1.3.4.dnh3.3.2-5/debian/patches/cve-security-fix.diff";
+      sha256 = "1qkzzm8sfspbcs10azmmif4qcr7pr8r38dsa2py84lsjm1yi3kls";
+    })
+    (fetchpatch {
+      url = "https://sources.debian.org/data/main/c/ctorrent/1.3.4.dnh3.3.2-5/debian/patches/FTBFS-fix.diff";
+      sha256 = "1m3zh96xwqjjzsbg62f7kx0miams58nys1f484qhdn870b5x9p06";
+    })
+  ];
+
+  meta = {
+    description = "BitTorrent client written in C++";
+    longDescription = ''
+      CTorrent, a BitTorrent client implemented in C++, with bugfixes and
+      performance enhancements.
+    '';
+    homepage = "http://www.rahul.net/dholmes/ctorrent/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.devhell ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/errbot/default.nix b/nixpkgs/pkgs/applications/networking/errbot/default.nix
new file mode 100644
index 000000000000..642677a9addc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/errbot/default.nix
@@ -0,0 +1,76 @@
+{ lib, fetchFromGitHub, python, glibcLocales }:
+
+let
+  py = python.override {
+    packageOverrides = self: super: {
+      # errbot requires markdown<3, and is not compatible with it either.
+      markdown = super.markdown.overridePythonAttrs (oldAttrs: rec {
+        version = "2.6.11";
+        src = super.fetchPypi {
+          pname = "Markdown";
+          inherit version;
+          sha256 = "108g80ryzykh8bj0i7jfp71510wrcixdi771lf2asyghgyf8cmm8";
+        };
+      });
+
+      # errbot requires slackclient 1.x, see https://github.com/errbotio/errbot/pull/1367
+      # latest 1.x release would be 1.3.2, but it requires an older websocket_client than the one in nixpkgs
+      # so let's just vendor the known-working version until they've migrated to 2.x.
+      slackclient = super.slackclient.overridePythonAttrs (oldAttrs: rec {
+        version = "1.2.1";
+        pname = "slackclient";
+        src = fetchFromGitHub {
+          owner  = "slackapi";
+          repo   = "python-slackclient";
+          rev    = version;
+          sha256 = "073fwf6fm2sqdp5ms3vm1v3ljh0pldi69k048404rp6iy3cfwkp0";
+        };
+
+        propagatedBuildInputs = with self; [ websocket_client requests six ];
+
+        checkInputs = with self; [ pytest codecov coverage mock pytestcov pytest-mock responses flake8 ];
+        # test_server.py fails because it needs connection (I think);
+        checkPhase = ''
+          py.test --cov-report= --cov=slackclient tests --ignore=tests/test_server.py
+        '';
+      });
+    };
+  };
+
+in
+py.pkgs.buildPythonApplication rec {
+  pname = "errbot";
+  version = "6.1.1";
+
+  src = fetchFromGitHub {
+    owner = "errbotio";
+    repo = "errbot";
+    rev = version;
+    sha256 = "1s4dl1za5imwsv6j3y7m47dy91hmqd5n221kkqm9ni4mpzgpffz0";
+  };
+
+  LC_ALL = "en_US.utf8";
+
+  buildInputs = [ glibcLocales ];
+  propagatedBuildInputs = with py.pkgs; [
+    webtest requests jinja2 flask dulwich
+    pyopenssl colorlog markdown ansi pygments
+    daemonize pygments-markdown-lexer telegram irc slackclient
+    sleekxmpp pyasn1 pyasn1-modules hypchat
+  ];
+
+  checkInputs = with py.pkgs; [ mock pytest ];
+  # avoid tests that do network calls
+  checkPhase = ''
+    pytest tests -k 'not backup and not broken_plugin and not plugin_cycle'
+  '';
+
+  meta = with lib; {
+    description = "Chatbot designed to be simple to extend with plugins written in Python";
+    homepage = "http://errbot.io/";
+    maintainers = with maintainers; [ fpletz globin ];
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    # flaky on darwin, "RuntimeError: can't start new thread"
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/esniper/default.nix b/nixpkgs/pkgs/applications/networking/esniper/default.nix
new file mode 100644
index 000000000000..0282483df8dc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/esniper/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchgit, openssl, curl, coreutils, gawk, bash, which }:
+
+stdenv.mkDerivation {
+  name = "esniper-2.35.0-21-g6379846";
+
+  src = fetchgit {
+    url    = "https://git.code.sf.net/p/esniper/git";
+    rev    = "637984623984ef36782d52d8968df7fae7bbb0a7";
+    sha256 = "1md3fzs0k88f6mgvrj1yrh96mn0qlca2p6vfqj6dnpyb8pjjwp8w";
+  };
+
+  buildInputs = [ openssl curl ];
+
+  # Add support for CURL_CA_BUNDLE variable.
+  # Fix <https://sourceforge.net/p/esniper/bugs/648/>.
+  patches = [ ./find-ca-bundle.patch ];
+
+  postInstall = ''
+    sed <"frontends/snipe" >"$out/bin/snipe" \
+      -e "2i export PATH=\"$out/bin:${stdenv.lib.makeBinPath [ coreutils gawk bash which ]}:\$PATH\""
+    chmod 555 "$out/bin/snipe"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple, lightweight tool for sniping eBay auctions";
+    homepage    = "http://esniper.sourceforge.net";
+    license     = licenses.gpl2;
+    maintainers = with maintainers; [ lovek323 peti ];
+    platforms   = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/esniper/find-ca-bundle.patch b/nixpkgs/pkgs/applications/networking/esniper/find-ca-bundle.patch
new file mode 100644
index 000000000000..e4df272a0c9a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/esniper/find-ca-bundle.patch
@@ -0,0 +1,26 @@
+diff -ubr '--exclude=*.o' esniper-2-27-0-orig/http.c esniper-2-27-0-patched/http.c
+--- esniper-2-27-0-orig/http.c	2012-02-06 22:04:06.000000000 +0100
++++ esniper-2-27-0-patched/http.c	2012-07-27 10:54:20.893054646 +0200
+@@ -200,6 +200,9 @@
+ int
+ initCurlStuff(void)
+ {
++	/* Path to OpenSSL bundle file. */
++	const char *ssl_capath=NULL;
++
+ 	/* list for custom headers */
+ 	struct curl_slist *slist=NULL;
+ 
+@@ -241,6 +244,12 @@
+ 	if ((curlrc = curl_easy_setopt(easyhandle, CURLOPT_COOKIEFILE, "")))
+ 		return initCurlStuffFailed();
+ 
++	/* If the environment variable CURL_CA_BUNDLE is set, pass through its
++	 * contents to curl. */
++	if ((ssl_capath = getenv("CURL_CA_BUNDLE")))
++		if ((curlrc = curl_easy_setopt(easyhandle, CURLOPT_CAINFO, ssl_capath)))
++			return initCurlStuffFailed();
++
+ 	slist = curl_slist_append(slist, "Accept: text/*");
+ 	slist = curl_slist_append(slist, "Accept-Language: en");
+ 	slist = curl_slist_append(slist, "Accept-Charset: iso-8859-1,*,utf-8");
diff --git a/nixpkgs/pkgs/applications/networking/feedreaders/canto-curses/default.nix b/nixpkgs/pkgs/applications/networking/feedreaders/canto-curses/default.nix
new file mode 100644
index 000000000000..80106085e1b6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/feedreaders/canto-curses/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, python3Packages, readline, ncurses, canto-daemon }:
+
+python3Packages.buildPythonApplication rec {
+  version = "0.9.9";
+  pname = "canto-curses";
+
+  src = fetchFromGitHub {
+    owner = "themoken";
+    repo = "canto-curses";
+    rev = "v${version}";
+    sha256 = "1vzb9n1j4gxigzll6654ln79lzbrrm6yy0lyazd9kldyl349b8sr";
+  };
+
+  buildInputs = [ readline ncurses canto-daemon ];
+  propagatedBuildInputs = [ canto-daemon ];
+
+  meta = {
+    description = "An ncurses-based console Atom/RSS feed reader";
+    longDescription = ''
+      Canto is an Atom/RSS feed reader for the console that is meant to be
+      quick, concise, and colorful. It's meant to allow you to crank through
+      feeds like you've never cranked before by providing a minimal, yet
+      information packed interface. No navigating menus. No dense blocks of
+      unreadable white text. An interface with almost infinite customization
+      and extensibility using the excellent Python programming language.
+    '';
+    homepage = "https://codezen.org/canto-ng/";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.devhell ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/feedreaders/canto-daemon/default.nix b/nixpkgs/pkgs/applications/networking/feedreaders/canto-daemon/default.nix
new file mode 100644
index 000000000000..b8279f22de4d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/feedreaders/canto-daemon/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, python3Packages, }:
+
+python3Packages.buildPythonApplication rec {
+  version = "0.9.7";
+  pname = "canto-daemon";
+
+  src = fetchFromGitHub {
+    owner = "themoken";
+    repo = "canto-next";
+    rev = "v${version}";
+    sha256 = "1si53r8cd4avfc56r315zyrghkppnjd6n125z1agfv59i7hdmk3n";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ feedparser ];
+
+  meta = {
+    description = "Daemon for the canto Atom/RSS feed reader";
+    longDescription = ''
+      Canto is an Atom/RSS feed reader for the console that is meant to be
+      quick, concise, and colorful. It's meant to allow you to crank through
+      feeds like you've never cranked before by providing a minimal, yet
+      information packed interface. No navigating menus. No dense blocks of
+      unreadable white text. An interface with almost infinite customization
+      and extensibility using the excellent Python programming language.
+    '';
+    homepage = "https://codezen.org/canto-ng/";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.devhell ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/feedreaders/castget/default.nix b/nixpkgs/pkgs/applications/networking/feedreaders/castget/default.nix
new file mode 100644
index 000000000000..33f8d8ca2383
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/feedreaders/castget/default.nix
@@ -0,0 +1,52 @@
+{ lib, stdenv, fetchFromGitHub
+, autoreconfHook
+, pkgconfig
+, glib
+, ronn
+, curl
+, id3lib
+, libxml2
+, glibcLocales
+}:
+
+stdenv.mkDerivation rec {
+  pname = "castget";
+  version = "2.0.0";
+
+  src = fetchFromGitHub {
+    owner = "mlj";
+    repo = pname;
+    # Upstream uses `_` instead of `.` for the version
+    rev = "rel_${lib.replaceStrings ["."] ["_"] version}";
+    sha256 = "1129x64rw587q3sdpa3lrgs0gni5f0siwbvmfz8ya4zkbhgi2ik7";
+  };
+
+  # without this, the build fails because of an encoding issue with the manual page.
+  # https://stackoverflow.com/a/17031697/4935114
+  # This requires glibcLocales to be present in the build so it will have an impact.
+  # See https://github.com/NixOS/nixpkgs/issues/8398
+  preBuild = ''
+    export LC_ALL="en_US.UTF-8";
+  '';
+
+  buildInputs = [ glib curl id3lib libxml2 ];
+  nativeBuildInputs = [
+    ronn
+    # See comment on locale above
+    glibcLocales
+    autoreconfHook
+    pkgconfig
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A simple, command-line based RSS enclosure downloader";
+    longDescription = ''
+      castget is a simple, command-line based RSS enclosure downloader. It is
+      primarily intended for automatic, unattended downloading of podcasts.
+    '';
+    homepage = "https://castget.johndal.com/";
+    maintainers = with maintainers; [ doronbehar ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/feedreaders/feedreader/default.nix b/nixpkgs/pkgs/applications/networking/feedreaders/feedreader/default.nix
new file mode 100644
index 000000000000..f399aeaa98d1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/feedreaders/feedreader/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, vala, gettext, python3
+, appstream-glib, desktop-file-utils, wrapGAppsHook, gnome-online-accounts, fetchpatch
+, gtk3, libgee, libpeas, librest, webkitgtk, gsettings-desktop-schemas, pantheon
+, curl, glib, gnome3, gst_all_1, json-glib, libnotify, libsecret, sqlite, gumbo, libxml2
+}:
+
+stdenv.mkDerivation rec {
+  pname = "feedreader";
+  version = "2.10.0";
+
+  src = fetchFromGitHub {
+    owner = "jangernert";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "154lzvd8acs4dyc91nlabpr284yrij8jkhgm0h18hp3cy0a11rv8";
+  };
+
+  nativeBuildInputs = [
+    meson ninja pkgconfig vala gettext appstream-glib desktop-file-utils
+    libxml2 python3 wrapGAppsHook
+  ];
+
+  buildInputs = [
+    curl glib json-glib libnotify libsecret sqlite gumbo gtk3
+    libgee libpeas gnome3.libsoup librest webkitgtk gsettings-desktop-schemas
+    gnome-online-accounts
+  ] ++ (with gst_all_1; [
+    gstreamer gst-plugins-base gst-plugins-good
+  ]);
+
+  postPatch = ''
+    patchShebangs build-aux/meson_post_install.py
+  '';
+
+  patches = [
+    # Fixes build with libsecret
+    (fetchpatch {
+      url = "https://patch-diff.githubusercontent.com/raw/jangernert/FeedReader/pull/943.patch";
+      sha256 = "0anrwvcg6607dzvfrhy5qcnpxzflskb3iy3khdg191aw1h2mqhb5";
+    })
+  ];
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "A modern desktop application designed to complement existing web-based RSS accounts";
+    homepage = "https://jangernert.github.io/FeedReader/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ edwtjo worldofpeace ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/feedreaders/newsboat/default.nix b/nixpkgs/pkgs/applications/networking/feedreaders/newsboat/default.nix
new file mode 100644
index 000000000000..74a43f00ca83
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/feedreaders/newsboat/default.nix
@@ -0,0 +1,63 @@
+{ stdenv, rustPlatform, fetchFromGitHub, stfl, sqlite, curl, gettext, pkgconfig, libxml2, json_c, ncurses
+, asciidoctor, libiconv, Security, makeWrapper }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "newsboat";
+  version = "2.19";
+
+  src = fetchFromGitHub {
+    owner = "newsboat";
+    repo = "newsboat";
+    rev = "r${version}";
+    sha256 = "0yyrq8a90l6pkrczm9qvdg75jhsdq0niwp79vrdpm8rsxqpdmfq7";
+  };
+
+  cargoSha256 = "1q3jf3d80c0ik38qk8jgbhfz5jxv0cy3lzmkyh2l002azp9hvv59";
+
+  postPatch = ''
+    substituteInPlace Makefile --replace "|| true" ""
+  '' + stdenv.lib.optionalString stdenv.isDarwin ''
+    # Allow other ncurses versions on Darwin
+    substituteInPlace config.sh \
+      --replace "ncurses5.4" "ncurses"
+  '';
+
+  nativeBuildInputs = [
+    pkgconfig
+    asciidoctor
+    gettext
+  ] ++ stdenv.lib.optionals stdenv.isDarwin [ makeWrapper ncurses ];
+
+  buildInputs = [ stfl sqlite curl libxml2 json_c ncurses ]
+    ++ stdenv.lib.optionals stdenv.isDarwin [ Security libiconv gettext ];
+
+  postBuild = ''
+    make prefix="$out"
+  '';
+
+  # TODO: Check if that's still needed
+  NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin " -Wno-error=format-security";
+
+  doCheck = true;
+
+  preCheck = ''
+    make test
+  '';
+
+  postInstall = ''
+    make prefix="$out" install
+    cp -r contrib $out
+  '' + stdenv.lib.optionalString stdenv.isDarwin ''
+    for prog in $out/bin/*; do
+      wrapProgram "$prog" --prefix DYLD_LIBRARY_PATH : "${stfl}/lib"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage    = "https://newsboat.org/";
+    description = "A fork of Newsbeuter, an RSS/Atom feed reader for the text console";
+    maintainers = with maintainers; [ dotlambda nicknovitski ];
+    license     = licenses.mit;
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/feedreaders/rawdog/default.nix b/nixpkgs/pkgs/applications/networking/feedreaders/rawdog/default.nix
new file mode 100644
index 000000000000..9fdee56b99b4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/feedreaders/rawdog/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, python2Packages }:
+
+python2Packages.buildPythonApplication rec {
+  pname = "rawdog";
+  version = "2.23";
+
+  src = fetchurl {
+    url = "https://offog.org/files/${pname}-${version}.tar.gz";
+    sha256 = "18nyg19mwxyqdnykplkqmzb4n27vvrhvp639zai8f81gg9vdbsjp";
+  };
+
+  propagatedBuildInputs = with python2Packages; [ feedparser ];
+
+  namePrefix = "";
+
+  meta = with stdenv.lib; {
+    homepage = "https://offog.org/code/rawdog/";
+    description = "RSS Aggregator Without Delusions Of Grandeur";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/feedreaders/rss2email/default.nix b/nixpkgs/pkgs/applications/networking/feedreaders/rss2email/default.nix
new file mode 100644
index 000000000000..18f154d3ff74
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/feedreaders/rss2email/default.nix
@@ -0,0 +1,47 @@
+{ pythonPackages, fetchurl, lib, nixosTests }:
+
+with pythonPackages;
+
+buildPythonApplication rec {
+  pname = "rss2email";
+  version = "3.11";
+
+  propagatedBuildInputs = [ feedparser beautifulsoup4 html2text ];
+
+  src = fetchurl {
+    url = "mirror://pypi/r/rss2email/${pname}-${version}.tar.gz";
+    sha256 = "1vk5slp2mhmc1qj30igqkyq3z5h2bl1ayhafqrjapa6cg6rbvhrn";
+  };
+
+  outputs = [ "out" "man" "doc" ];
+
+  postPatch = ''
+    # sendmail executable is called from PATH instead of sbin by default
+    sed -e 's|/usr/sbin/sendmail|sendmail|' \
+        -i rss2email/config.py
+  '';
+
+  postInstall = ''
+    install -Dm 644 r2e.1 $man/share/man/man1/r2e.1
+    # an alias for better finding the manpage
+    ln -s -T r2e.1 $man/share/man/man1/rss2email.1
+
+    # copy documentation
+    mkdir -p $doc/share/doc/rss2email
+    cp AUTHORS COPYING CHANGELOG README.rst $doc/share/doc/rss2email/
+  '';
+
+  postCheck = ''
+    env PATH=$out/bin:$PATH python ./test/test.py
+  '';
+
+  meta = with lib; {
+    description = "A tool that converts RSS/Atom newsfeeds to email.";
+    homepage = "https://pypi.python.org/pypi/rss2email";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ jb55 Profpatsch ];
+  };
+  passthru.tests = {
+    smoke-test = nixosTests.rss2email;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/feedreaders/rssguard/default.nix b/nixpkgs/pkgs/applications/networking/feedreaders/rssguard/default.nix
new file mode 100644
index 000000000000..b95d272e6512
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/feedreaders/rssguard/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, qmake, qtwebengine, qttools, wrapGAppsHook, wrapQtAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "rssguard";
+  version = "3.6.2";
+
+  src = fetchFromGitHub {
+    owner = "martinrotter";
+    repo = pname;
+    rev = version;
+    sha256 = "1dx7gcmrjyi115lf6d36i129zmxfb16z7wy4ff8z9m65paci24mw";
+  };
+
+  buildInputs =  [ qtwebengine qttools ];
+  nativeBuildInputs = [ qmake wrapGAppsHook wrapQtAppsHook ];
+  qmakeFlags = [ "CONFIG+=release" ];
+
+  meta = with stdenv.lib; {
+    description = "Simple RSS/Atom feed reader with online synchronization";
+    longDescription = ''
+      RSS Guard is a simple, light and easy-to-use RSS/ATOM feed aggregator
+      developed using Qt framework and with online feed synchronization support
+      for ownCloud/Nextcloud.
+    '';
+    homepage = "https://github.com/martinrotter/rssguard";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ jluttine ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/feedreaders/rsstail/default.nix b/nixpkgs/pkgs/applications/networking/feedreaders/rsstail/default.nix
new file mode 100644
index 000000000000..66228efe8952
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/feedreaders/rsstail/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, cppcheck, libmrss, libiconv }:
+
+stdenv.mkDerivation {
+  pname = "rsstail";
+  version = "2.1";
+
+  src = fetchFromGitHub {
+    sha256 = "12p69i3g1fwlw0bds9jqsdmzkid3k5a41w31d227i7vm12wcvjf6";
+    rev = "6f2436185372b3f945a4989406c4b6a934fe8a95";
+    repo = "rsstail";
+    owner = "flok99";
+  };
+
+  buildInputs = [ libmrss ] ++ stdenv.lib.optionals stdenv.isDarwin [ libiconv ];
+  checkInputs = [ cppcheck ];
+
+  postPatch = ''
+    substituteInPlace Makefile --replace -liconv_hook ""
+  '';
+
+  makeFlags = [ "prefix=$(out)" ];
+  enableParallelBuilding = true;
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    description = "Monitor RSS feeds for new entries";
+    longDescription = ''
+      RSSTail is more or less an RSS reader: it monitors an RSS feed and if it
+      detects a new entry it'll emit only that new entry.
+    '';
+    homepage = "http://www.vanheusden.com/rsstail/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/firehol/default.nix b/nixpkgs/pkgs/applications/networking/firehol/default.nix
new file mode 100644
index 000000000000..c6e8ab5c887b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/firehol/default.nix
@@ -0,0 +1,108 @@
+{ stdenv, lib, fetchFromGitHub, pkgs
+, autoconf, automake, curl, iprange, iproute, ipset, iptables, iputils
+, kmod, nettools, procps, tcpdump, traceroute, utillinux, whois
+
+# If true, just install FireQOS without FireHOL
+, onlyQOS ? false
+}:
+
+stdenv.mkDerivation rec {
+  pname = "firehol";
+  version = "3.1.6";
+
+  src = fetchFromGitHub {
+    owner = "firehol";
+    repo = "firehol";
+    rev = "v${version}";
+    sha256 = "0l7sjpsb300kqv21hawd26a7jszlmafplacpn5lfj64m4yip93fd";
+  };
+
+  patches = [
+    # configure tries to determine if `ping6` or the newer, combined
+    # `ping` is installed by using `ping -6` which would fail.
+    (pkgs.writeText "firehol-ping6.patch"
+      ''
+      --- a/m4/ax_check_ping_ipv6.m4
+      +++ b/m4/ax_check_ping_ipv6.m4
+      @@ -42,16 +42,16 @@ AC_DEFUN([AX_CHECK_PING_IPV6],
+
+           AC_CACHE_CHECK([whether ]PING[ has working -6 option], [ac_cv_ping_6_opt],
+           [
+      -        ac_cv_ping_6_opt=no
+      -        if test -n "$PING"; then
+      -            echo "Trying '$PING -6 -c 1 ::1'" >&AS_MESSAGE_LOG_FD
+      -            $PING -6 -c 1 ::1 > conftest.out 2>&1
+      -            if test "$?" = 0; then
+      -                ac_cv_ping_6_opt=yes
+      -            fi
+      -            cat conftest.out >&AS_MESSAGE_LOG_FD
+      -            rm -f conftest.out
+      -        fi
+      +        ac_cv_ping_6_opt=yes
+      +        #if test -n "$PING"; then
+      +        #    echo "Trying '$PING -6 -c 1 ::1'" >&AS_MESSAGE_LOG_FD
+      +        #    $PING -6 -c 1 ::1 > conftest.out 2>&1
+      +        #    if test "$?" = 0; then
+      +        #        ac_cv_ping_6_opt=yes
+      +        #    fi
+      +        #    cat conftest.out >&AS_MESSAGE_LOG_FD
+      +        #    rm -f conftest.out
+      +        #fi
+           ])
+
+           AS_IF([test "x$ac_cv_ping_6_opt" = "xyes"],[
+      '')
+
+    # put firehol config files in /etc/firehol (not $out/etc/firehol)
+    # to avoid error on startup, see #35114
+    (pkgs.writeText "firehol-sysconfdir.patch"
+      ''
+      --- a/sbin/install.config.in.in
+      +++ b/sbin/install.config.in.in
+      @@ -4 +4 @@
+      -SYSCONFDIR="@sysconfdir_POST@"
+      +SYSCONFDIR="/etc"
+      '')
+
+    # we must quote "$UNAME_CMD", or the dash in /nix/store/...-coreutils-.../bin/uname
+    # will be interpreted as IFS -> error. this might be considered an upstream bug
+    # but only appears when there are dashes in the command path
+    (pkgs.writeText "firehol-uname-command.patch"
+      ''
+      --- a/sbin/firehol
+      +++ b/sbin/firehol
+      @@ -10295,7 +10295,7 @@
+       	kmaj=$1
+       	kmin=$2
+       
+      -	set -- $($UNAME_CMD -r)
+      +	set -- $("$UNAME_CMD" -r)
+       	eval $kmaj=\$1 $kmin=\$2
+       }
+       kernel_maj_min KERNELMAJ KERNELMIN
+      '')
+  ];
+  
+  nativeBuildInputs = [ autoconf automake ];
+  buildInputs = [
+    curl iprange iproute ipset iptables iputils kmod
+    nettools procps tcpdump traceroute utillinux whois
+  ];
+
+  preConfigure = "./autogen.sh";
+  configureFlags = [ "--localstatedir=/var"
+                     "--disable-doc" "--disable-man" ] ++
+                   lib.optional onlyQOS [ "--disable-firehol" ];
+
+  meta = with stdenv.lib; {
+    description = "A firewall for humans";
+    longDescription = ''
+      FireHOL, an iptables stateful packet filtering firewall for humans!
+      FireQOS, a TC based bandwidth shaper for humans!
+    '';
+    homepage = "https://firehol.org/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ geistesk ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/firehol/iprange.nix b/nixpkgs/pkgs/applications/networking/firehol/iprange.nix
new file mode 100644
index 000000000000..e47afba02945
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/firehol/iprange.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "iprange";
+  version = "1.0.4";
+
+  src = fetchurl {
+    url = "https://github.com/firehol/iprange/releases/download/v${version}/iprange-${version}.tar.xz";
+    sha256 = "0rymw4ydn09dng34q4g5111706fyppzs2gd5br76frgvfj4x2f71";
+  };
+
+  meta = with stdenv.lib; {
+    description = "manage IP ranges";
+    homepage = "https://github.com/firehol/iprange";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ geistesk ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/flent/default.nix b/nixpkgs/pkgs/applications/networking/flent/default.nix
new file mode 100644
index 000000000000..19f813e5c758
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/flent/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, buildPythonApplication, fetchPypi, matplotlib, procps, pyqt5, python
+, pythonPackages, qt5, sphinx, xvfb_run }:
+
+buildPythonApplication rec {
+  pname = "flent";
+  version = "1.3.2";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1k265xxxjld6q38m9lsgy7p0j70qp9a49vh9zg0njbi4i21lxq23";
+  };
+
+  buildInputs = [ sphinx ];
+  nativeBuildInputs = [ qt5.wrapQtAppsHook ];
+  propagatedBuildInputs = [ matplotlib procps pyqt5 ];
+  checkInputs = [ procps pythonPackages.mock pyqt5 xvfb_run ];
+
+  checkPhase = ''
+    cat >test-runner <<EOF
+    #!/bin/sh
+
+    ${python.pythonForBuild.interpreter} nix_run_setup test
+    EOF
+    chmod +x test-runner
+    wrapQtApp test-runner --prefix PYTHONPATH : $PYTHONPATH
+    xvfb-run -s '-screen 0 800x600x24' ./test-runner
+  '';
+
+  postInstall = ''
+    for program in $out/bin/*; do
+      wrapQtApp $program --prefix PYTHONPATH : $PYTHONPATH
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "The FLExible Network Tester";
+    homepage = "https://flent.org";
+    license = licenses.gpl3;
+
+    maintainers = [ maintainers.mmlb ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/flent/http-getter.nix b/nixpkgs/pkgs/applications/networking/flent/http-getter.nix
new file mode 100644
index 000000000000..a38ac8511c23
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/flent/http-getter.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, cmake
+, curl, pkgconfig }:
+
+stdenv.mkDerivation {
+  pname = "http-getter";
+  version = "unstable-2018-06-06";
+
+  src = fetchFromGitHub {
+    owner = "tohojo";
+    repo = "http-getter";
+    rev = "79bcccce721825a745f089d0c347bbaf2e6e12f4";
+    sha256 = "1zxk52s1h5qx62idil237zdpj8agrry0w1xwkfx05wvv9sw4ld35";
+  };
+
+  buildInputs = [ cmake pkgconfig curl ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/tohojo/http-getter";
+    description = "Simple getter for HTTP URLs using cURL";
+    platforms = platforms.unix;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/flexget/default.nix b/nixpkgs/pkgs/applications/networking/flexget/default.nix
new file mode 100644
index 000000000000..7e6915828815
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/flexget/default.nix
@@ -0,0 +1,65 @@
+{ lib, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "FlexGet";
+  version = "3.1.59";
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "19vp2395sl6gdv54zn0k4vf1j6b902khvm44q5hfr805jd3fc11h";
+  };
+
+  postPatch = ''
+    # remove dependency constraints
+    sed 's/==\([0-9]\.\?\)\+//' -i requirements.txt
+
+    # "zxcvbn-python" was renamed to "zxcvbn", and we don't have the former in
+    # nixpkgs. See: https://github.com/NixOS/nixpkgs/issues/62110
+    substituteInPlace requirements.txt --replace "zxcvbn-python" "zxcvbn"
+  '';
+
+  # ~400 failures
+  doCheck = false;
+
+  propagatedBuildInputs = with python3Packages; [
+    # See https://github.com/Flexget/Flexget/blob/master/requirements.in
+    APScheduler
+    beautifulsoup4
+    cherrypy
+    colorclass
+    feedparser
+    flask-compress
+    flask-cors
+    flask_login
+    flask-restful
+    flask-restplus
+    flask
+    guessit
+    html5lib
+    jinja2
+    jsonschema
+    loguru
+    more-itertools
+    progressbar
+    pynzb
+    pyparsing
+    PyRSS2Gen
+    dateutil
+    pyyaml
+    rebulk
+    requests
+    rpyc
+    sqlalchemy
+    terminaltables
+    zxcvbn
+    # plugins
+    transmissionrpc
+  ];
+
+  meta = with lib; {
+    homepage    = "https://flexget.com/";
+    description = "Multipurpose automation tool for all of your media";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ marsam ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ftp/filezilla/default.nix b/nixpkgs/pkgs/applications/networking/ftp/filezilla/default.nix
new file mode 100644
index 000000000000..04f0296fe82e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ftp/filezilla/default.nix
@@ -0,0 +1,69 @@
+{ stdenv
+, fetchurl
+, dbus
+, gettext
+, gnutls
+, libfilezilla
+, libidn
+, nettle
+, pkgconfig
+, pugixml
+, sqlite
+, tinyxml
+, wxGTK30-gtk3
+, xdg_utils
+}:
+
+stdenv.mkDerivation rec {
+  pname = "filezilla";
+  version = "3.48.1";
+
+  src = fetchurl {
+    url = "https://download.filezilla-project.org/client/FileZilla_${version}_src.tar.bz2";
+    sha256 = "0pgg2gp4x5qmxwin2qhf6skw0z52y29p75g41kjyh1lhzxvxizxb";
+  };
+
+  # https://www.linuxquestions.org/questions/slackware-14/trouble-building-filezilla-3-47-2-1-current-4175671182/#post6099769
+  postPatch = ''
+    sed -i src/interface/Mainfrm.h \
+      -e '/^#define/a #include <list>'
+  '';
+
+  configureFlags = [
+    "--disable-manualupdatecheck"
+    "--disable-autoupdatecheck"
+  ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [
+    dbus
+    gettext
+    gnutls
+    libfilezilla
+    libidn
+    nettle
+    pugixml
+    sqlite
+    tinyxml
+    wxGTK30-gtk3
+    wxGTK30-gtk3.gtk
+    xdg_utils
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://filezilla-project.org/";
+    description = "Graphical FTP, FTPS and SFTP client";
+    longDescription = ''
+      FileZilla Client is a free, open source FTP client. It supports
+      FTP, SFTP, and FTPS (FTP over SSL/TLS). The client is available
+      under many platforms, binaries for Windows, Linux and macOS are
+      provided.
+    '';
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ pSub ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ftp/taxi/default.nix b/nixpkgs/pkgs/applications/networking/ftp/taxi/default.nix
new file mode 100644
index 000000000000..b6c8a534545b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ftp/taxi/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, python3, vala
+, gtk3, libgee, libsoup, libsecret, gobject-introspection, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "taxi";
+  version = "0.0.1";
+
+  src = fetchFromGitHub {
+    owner = "Alecaddd";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "01c552w68576pnsyqbwy3hjhbww6vys3r3s0wxjdiscjqj1aawqg";
+  };
+
+  nativeBuildInputs = [
+    vala
+    gobject-introspection
+    meson
+    ninja
+    pkgconfig
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    pantheon.granite
+    libgee
+    gtk3
+    libsecret
+    libsoup
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "The FTP Client that drives you anywhere";
+    homepage    = "https://github.com/Alecaddd/taxi";
+    license     = licenses.gpl3Plus;
+    maintainers = with maintainers; [ worldofpeace ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/gdrive/default.nix b/nixpkgs/pkgs/applications/networking/gdrive/default.nix
new file mode 100644
index 000000000000..c5a5d1e970a6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/gdrive/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "gdrive";
+  version = "2.1.0";
+  rev     = version;
+
+  goPackagePath = "github.com/prasmussen/gdrive";
+
+  src = fetchFromGitHub {
+    owner  = "prasmussen";
+    repo   = "gdrive";
+    sha256 = "0ywm4gdmrqzb1a99vg66a641r74p7lglavcpgkm6cc2gdwzjjfg7";
+    inherit rev;
+  };
+
+  meta = with stdenv.lib; {
+    homepage    = "https://github.com/prasmussen/gdrive";
+    description = "A command line utility for interacting with Google Drive";
+    platforms   = platforms.unix;
+    license     = licenses.mit;
+    maintainers = [ maintainers.rzetterberg ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/gmailctl/default.nix b/nixpkgs/pkgs/applications/networking/gmailctl/default.nix
new file mode 100644
index 000000000000..a9b9436a211a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/gmailctl/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildGoModule
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "gmailctl";
+  version = "0.7.0";
+
+  src = fetchFromGitHub {
+    owner = "mbrt";
+    repo = "gmailctl";
+    rev = "v${version}";
+    sha256 = "08q4yjfbwlldirf3j5db18l8kn6sf288wd364s50jlcx2ka8w50j";
+  };
+
+  vendorSha256 = "0qp8n7z3vcsbc6safp7i18i0i3r4hy4nidzwl85i981sg12vcg6b";
+
+  meta = with stdenv.lib; {
+    description = "Declarative configuration for Gmail filters";
+    homepage = "https://github.com/mbrt/gmailctl";
+    license = licenses.mit;
+    maintainers = [ maintainers.doronbehar ];
+    platforms = platforms.unix;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/gns3/default.nix b/nixpkgs/pkgs/applications/networking/gns3/default.nix
new file mode 100644
index 000000000000..6cfc5ed3a990
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/gns3/default.nix
@@ -0,0 +1,48 @@
+{ callPackage }:
+
+let
+  stableVersion = "2.2.8";
+  previewVersion = stableVersion;
+  addVersion = args:
+    let version = if args.stable then stableVersion else previewVersion;
+        branch = if args.stable then "stable" else "preview";
+    in args // { inherit version branch; };
+  extraArgs = rec {
+    mkOverride = attrname: version: sha256:
+      self: super: {
+        ${attrname} = super.${attrname}.overridePythonAttrs (oldAttrs: {
+          inherit version;
+          src = oldAttrs.src.override {
+            inherit version sha256;
+          };
+          doCheck = oldAttrs.doCheck && (attrname != "psutil");
+        });
+      };
+    commonOverrides = [
+      (mkOverride "psutil" "5.6.6"
+        "1rs6z8bfy6bqzw88s4i5zllrx3i18hnkv4akvmw7bifngcgjh8dd")
+    ];
+  };
+  mkGui = args: callPackage (import ./gui.nix (addVersion args // extraArgs)) { };
+  mkServer = args: callPackage (import ./server.nix (addVersion args // extraArgs)) { };
+  guiSrcHash = "1qgzad9hdbvkdalzdnlg5gnlzn2f9qlpd1aj8djmi6w1mmdkf9q7";
+  serverSrcHash = "1kg38dh0xk4yvi7hz0d5dq9k0wany0sfd185l0zxs3nz78zd23an";
+in {
+  guiStable = mkGui {
+    stable = true;
+    sha256Hash = guiSrcHash;
+  };
+  guiPreview = mkGui {
+    stable = false;
+    sha256Hash = guiSrcHash;
+  };
+
+  serverStable = mkServer {
+    stable = true;
+    sha256Hash = serverSrcHash;
+  };
+  serverPreview = mkServer {
+    stable = false;
+    sha256Hash = serverSrcHash;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/gns3/gui.nix b/nixpkgs/pkgs/applications/networking/gns3/gui.nix
new file mode 100644
index 000000000000..2524731cd05c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/gns3/gui.nix
@@ -0,0 +1,47 @@
+{ stable, branch, version, sha256Hash, mkOverride, commonOverrides }:
+
+{ lib, stdenv, python3, fetchFromGitHub }:
+
+let
+  # TODO: This package requires qt5Full to launch
+  defaultOverrides = commonOverrides ++ [
+    (mkOverride "jsonschema" "2.6.0"
+      "00kf3zmpp9ya4sydffpifn0j0mzm342a2vzh82p6r0vh10cg7xbg")
+  ];
+
+  python = python3.override {
+    packageOverrides = lib.foldr lib.composeExtensions (self: super: { }) defaultOverrides;
+  };
+in python.pkgs.buildPythonPackage rec {
+  name = "${pname}-${version}";
+  pname = "gns3-gui";
+
+  src = fetchFromGitHub {
+    owner = "GNS3";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = sha256Hash;
+  };
+
+  propagatedBuildInputs = with python.pkgs; [
+    raven psutil jsonschema # tox for check
+    # Runtime dependencies
+    sip (pyqt5.override { withWebSockets = true; }) distro setuptools
+  ];
+
+  doCheck = false; # Failing
+
+  meta = with stdenv.lib; {
+    description = "Graphical Network Simulator 3 GUI (${branch} release)";
+    longDescription = ''
+      Graphical user interface for controlling the GNS3 network simulator. This
+      requires access to a local or remote GNS3 server (it's recommended to
+      download the official GNS3 VM).
+    '';
+    homepage = "https://www.gns3.com/";
+    changelog = "https://github.com/GNS3/gns3-gui/releases/tag/v${version}";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/gns3/server.nix b/nixpkgs/pkgs/applications/networking/gns3/server.nix
new file mode 100644
index 000000000000..32dc42e9f51a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/gns3/server.nix
@@ -0,0 +1,56 @@
+{ stable, branch, version, sha256Hash, mkOverride, commonOverrides }:
+
+{ lib, stdenv, python3, fetchFromGitHub }:
+
+let
+  defaultOverrides = commonOverrides ++ [
+    (mkOverride "jsonschema" "2.6.0"
+      "00kf3zmpp9ya4sydffpifn0j0mzm342a2vzh82p6r0vh10cg7xbg")
+  ];
+
+  python = python3.override {
+    packageOverrides = lib.foldr lib.composeExtensions (self: super: { }) defaultOverrides;
+  };
+in python.pkgs.buildPythonPackage {
+  pname = "gns3-server";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "GNS3";
+    repo = "gns3-server";
+    rev = "v${version}";
+    sha256 = sha256Hash;
+  };
+
+  postPatch = ''
+    # yarl 1.4+ only requires Python 3.6+
+    sed -iE "s/yarl==1.3.0//" requirements.txt
+  '';
+
+  propagatedBuildInputs = with python.pkgs; [
+    aiohttp-cors yarl aiohttp multidict setuptools
+    jinja2 psutil zipstream raven jsonschema distro async_generator aiofiles
+    prompt_toolkit py-cpuinfo
+  ];
+
+  # Requires network access
+  doCheck = false;
+
+  postInstall = ''
+    rm $out/bin/gns3loopback # For Windows only
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Graphical Network Simulator 3 server (${branch} release)";
+    longDescription = ''
+      The GNS3 server manages emulators such as Dynamips, VirtualBox or
+      Qemu/KVM. Clients like the GNS3 GUI control the server using a HTTP REST
+      API.
+    '';
+    homepage = "https://www.gns3.com/";
+    changelog = "https://github.com/GNS3/gns3-server/releases/tag/v${version}";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/google-drive-ocamlfuse/default.nix b/nixpkgs/pkgs/applications/networking/google-drive-ocamlfuse/default.nix
new file mode 100644
index 000000000000..ac6ad4f22fe9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/google-drive-ocamlfuse/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildDunePackage, fetchFromGitHub
+, ocamlfuse, gapi_ocaml, ocaml_sqlite3
+}:
+
+buildDunePackage rec {
+  pname = "google-drive-ocamlfuse";
+  version = "0.7.21";
+
+  src = fetchFromGitHub {
+    owner = "astrada";
+    repo = "google-drive-ocamlfuse";
+    rev = "v${version}";
+    sha256 = "0by3qnjrr1mbxyl2n99zggx8dxnqlicsq2b2hhhxb2d0k8qn47sw";
+  };
+
+  buildInputs = [ ocamlfuse gapi_ocaml ocaml_sqlite3 ];
+
+  meta = {
+    homepage = "http://gdfuse.forge.ocamlcore.org/";
+    description = "A FUSE-based file system backed by Google Drive, written in OCaml";
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = with stdenv.lib.maintainers; [ obadz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/gopher/gopher/default.nix b/nixpkgs/pkgs/applications/networking/gopher/gopher/default.nix
new file mode 100644
index 000000000000..4e5716386442
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/gopher/gopher/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "gopher";
+  version = "3.0.17";
+
+  src = fetchFromGitHub {
+    owner = "jgoerzen";
+    repo = pname;
+    rev = "release/${version}";
+    sha256 = "1j6xh5l8v231d4mwl9gj1c34dc0jmazz6zg1qqfxmqr9y609jq3h";
+  };
+
+  buildInputs = [ ncurses ];
+
+  preConfigure = "export LIBS=-lncurses";
+
+  meta = with stdenv.lib; {
+    homepage = "http://gopher.quux.org:70/devel/gopher";
+    description = "A ncurses gopher client";
+    platforms = platforms.linux; # clang doesn't like local regex.h
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ sternenseemann ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/hpmyroom/default.nix b/nixpkgs/pkgs/applications/networking/hpmyroom/default.nix
new file mode 100644
index 000000000000..59274f4105b2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/hpmyroom/default.nix
@@ -0,0 +1,58 @@
+{ mkDerivation, stdenv, lib, fetchurl, rpmextract, autoPatchelfHook , libuuid
+, libXtst, libXfixes, glib, gst_all_1, alsaLib, freetype, fontconfig , libXext
+, libGL, libpng, libXScrnSaver, libxcb, xorg, libpulseaudio, libdrm
+}:
+mkDerivation rec {
+  pname = "hpmyroom";
+  version = "12.0.0.0220";
+
+  src = fetchurl {
+    url = "https://www.myroom.hpe.com/downloadfiles/${pname}-${version}.x86_64.rpm";
+    sha256 = "0gajj2s6l7jj8520agrv2dyisg7hhacbwzqlsp9a0xdxr0v71jhr";
+  };
+
+  nativeBuildInputs = [
+    rpmextract autoPatchelfHook
+  ];
+
+  buildInputs = [
+    libuuid libXtst libXScrnSaver libXfixes alsaLib freetype fontconfig libXext
+    libGL libpng libxcb libpulseaudio libdrm
+    glib  # For libgobject
+    stdenv.cc.cc  # For libstdc++
+    xorg.libX11
+  ] ++ (with gst_all_1; [ gstreamer gst-plugins-base ]);
+
+  unpackPhase = ''
+    rpmextract $src
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mv usr $out
+
+    runHook postInstall
+  '';
+
+  qtWrapperArgs = [
+    "--prefix QT_XKB_CONFIG_ROOT : '${xorg.xkeyboardconfig}/share/X11/xkb'"
+  ];
+
+  postFixup = ''
+    substituteInPlace $out/share/applications/HP-myroom.desktop \
+      --replace /usr/bin/hpmyroom hpmyroom \
+      --replace Icon=/usr/share/hpmyroom/Resources/MyRoom.png Icon=$out/share/hpmyroom/Resources/MyRoom.png
+
+    ln -s ${libpng}/lib/libpng.so $out/lib/hpmyroom/libpng15.so.15
+  '';
+
+  meta = {
+    description = "Client for HPE's MyRoom web conferencing solution";
+    maintainers = with lib.maintainers; [ johnazoidberg ];
+    license = lib.licenses.unfree;
+    homepage = "https://myroom.hpe.com";
+    # TODO: A Darwin binary is available upstream
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/hydroxide/default.nix b/nixpkgs/pkgs/applications/networking/hydroxide/default.nix
new file mode 100644
index 000000000000..4753cd464b13
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/hydroxide/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildGoModule, fetchFromGitHub, fetchpatch }:
+
+buildGoModule rec {
+  pname = "hydroxide";
+  version = "0.2.14";
+
+  src = fetchFromGitHub {
+    owner = "emersion";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0d8wjyzmw89yhrszz487f7i19rcz7xlx4w2wd4c69k5nsdrs6dys";
+  };
+
+  vendorSha256 = "0d8yfmsl8rycbq8gjnvc657j14644lq0zmr9l88ik360szw6v6gc";
+
+  subPackages = [ "cmd/hydroxide" ];
+
+  meta = with lib; {
+    description = "A third-party, open-source ProtonMail bridge";
+    homepage = "https://github.com/emersion/hydroxide";
+    license = licenses.mit;
+    maintainers = with maintainers; [ filalex77 ];
+    platforms = platforms.unix;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/ids/daq/default.nix b/nixpkgs/pkgs/applications/networking/ids/daq/default.nix
new file mode 100644
index 000000000000..871aba0a669f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ids/daq/default.nix
@@ -0,0 +1,27 @@
+{stdenv, fetchurl, flex, bison, libpcap, libdnet, libnfnetlink, libnetfilter_queue}:
+
+stdenv.mkDerivation rec {
+  name = "daq-2.2.2";
+
+  src = fetchurl {
+    name = "${name}.tar.gz";
+    url = "https://snort.org/downloads/archive/snort/${name}.tar.gz";
+    sha256 = "0yvzscy7vqj7s5rccza0f7p6awghfm3yaxihx1h57lqspg51in3w";
+  };
+
+  buildInputs = [ flex bison libpcap libdnet libnfnetlink libnetfilter_queue];
+
+  configureFlags = [
+    "--enable-nfq-module=yes"
+    "--with-dnet-includes=${libdnet}/includes"
+    "--with-dnet-libraries=${libdnet}/lib"
+  ];
+
+  meta = {
+    description = "Data AcQuisition library (DAQ), for packet I/O";
+    homepage = "https://www.snort.org";
+    maintainers = with stdenv.lib.maintainers; [ aycanirican ];
+    license = stdenv.lib.licenses.gpl2;
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ids/snort/default.nix b/nixpkgs/pkgs/applications/networking/ids/snort/default.nix
new file mode 100644
index 000000000000..49f7bbfd8120
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ids/snort/default.nix
@@ -0,0 +1,35 @@
+{stdenv, pkgconfig, luajit, openssl, fetchurl, libpcap, pcre, libdnet, daq, zlib, flex, bison, makeWrapper}:
+
+stdenv.mkDerivation rec {
+  version = "2.9.16";
+  pname = "snort";
+  
+  src = fetchurl {
+    name = "${pname}-${version}.tar.gz";
+    url = "https://snort.org/downloads/archive/snort/${pname}-${version}.tar.gz";
+    sha256 = "1mxspk0060f62xp631w589b9ryb21qygn020az3dw2fsy7nxi24n";
+  };
+  
+  buildInputs = [ makeWrapper pkgconfig luajit openssl libpcap pcre libdnet daq zlib flex bison ];
+
+  enableParallelBuilding = true;
+
+  configureFlags = [
+    "--disable-static-daq"
+    "--enable-control-socket"
+    "--with-daq-includes=${daq}/includes"
+    "--with-daq-libraries=${daq}/lib"
+  ]; 
+
+  postInstall = ''
+    wrapProgram $out/bin/snort --add-flags "--daq-dir ${daq}/lib/daq --dynamic-preprocessor-lib-dir $out/lib/snort_dynamicpreprocessor/ --dynamic-engine-lib-dir $out/lib/snort_dynamicengine"
+  '';
+  
+  meta = {
+    description = "Network intrusion prevention and detection system (IDS/IPS)";
+    homepage = "https://www.snort.org";
+    maintainers = with stdenv.lib.maintainers; [ aycanirican ];
+    license = stdenv.lib.licenses.gpl2;
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ids/suricata/bpf_stubs_workaround.patch b/nixpkgs/pkgs/applications/networking/ids/suricata/bpf_stubs_workaround.patch
new file mode 100644
index 000000000000..d4e8c95fea22
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ids/suricata/bpf_stubs_workaround.patch
@@ -0,0 +1,19 @@
+*** suricata-5.0.0/ebpf/Makefile.in	2019-10-16 22:39:13.174649416 +0200
+--- suricata-5.0.0/ebpf/Makefile.in.fixed	2019-10-16 22:38:41.822201802 +0200
+***************
+*** 527,533 ****
+  @BUILD_EBPF_TRUE@$(BPF_TARGETS): %.bpf: %.c
+  #      From C-code to LLVM-IR format suffix .ll (clang -S -emit-llvm)
+  @BUILD_EBPF_TRUE@	${CLANG} -Wall $(BPF_CFLAGS) -O2 \
+! @BUILD_EBPF_TRUE@		-I/usr/include/$(build_cpu)-$(build_os)/ \
+  @BUILD_EBPF_TRUE@		-D__KERNEL__ -D__ASM_SYSREG_H \
+  @BUILD_EBPF_TRUE@		-target bpf -S -emit-llvm $< -o ${@:.bpf=.ll}
+  #      From LLVM-IR to BPF-bytecode in ELF-obj file
+--- 527,533 ----
+  @BUILD_EBPF_TRUE@$(BPF_TARGETS): %.bpf: %.c
+  #      From C-code to LLVM-IR format suffix .ll (clang -S -emit-llvm)
+  @BUILD_EBPF_TRUE@	${CLANG} -Wall $(BPF_CFLAGS) -O2 \
+! @BUILD_EBPF_TRUE@		-idirafter ../bpf_stubs_workaround \
+  @BUILD_EBPF_TRUE@		-D__KERNEL__ -D__ASM_SYSREG_H \
+  @BUILD_EBPF_TRUE@		-target bpf -S -emit-llvm $< -o ${@:.bpf=.ll}
+  #      From LLVM-IR to BPF-bytecode in ELF-obj file
diff --git a/nixpkgs/pkgs/applications/networking/ids/suricata/default.nix b/nixpkgs/pkgs/applications/networking/ids/suricata/default.nix
new file mode 100644
index 000000000000..d6e9b2e74397
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ids/suricata/default.nix
@@ -0,0 +1,158 @@
+{ stdenv
+, lib
+, fetchurl
+, clang
+, llvm
+, pkgconfig
+, makeWrapper
+, file
+, hyperscan
+, jansson
+, libbpf
+, libcap_ng
+, libelf
+, libevent
+, libmaxminddb
+, libnet
+, libnetfilter_log
+, libnetfilter_queue
+, libnfnetlink
+, libpcap
+, libyaml
+, luajit
+, lz4
+, nspr
+, nss
+, pcre
+, python
+, zlib
+, redisSupport ? true, redis, hiredis
+, rustSupport ? true, rustc, cargo
+}: let
+  libmagic = file;
+  hyperscanSupport = stdenv.system == "x86_64-linux" || stdenv.system == "i686-linux";
+in
+stdenv.mkDerivation rec {
+  pname = "suricata";
+  version = "5.0.3";
+
+  src = fetchurl {
+    url = "https://www.openinfosecfoundation.org/download/${pname}-${version}.tar.gz";
+    sha256 = "1nv5aq5lpkpskkzw05hr2lshkzcs4zqj5kfv4qjlbwigmp6kwh9l";
+  };
+
+  nativeBuildInputs = [
+    clang
+    llvm
+    makeWrapper
+    pkgconfig
+  ]
+  ++ lib.optionals rustSupport [ rustc cargo ]
+  ;
+
+  buildInputs = [
+    jansson
+    libbpf
+    libcap_ng
+    libelf
+    libevent
+    libmagic
+    libmaxminddb
+    libnet
+    libnetfilter_log
+    libnetfilter_queue
+    libnfnetlink
+    libpcap
+    libyaml
+    luajit
+    lz4
+    nspr
+    nss
+    pcre
+    python
+    zlib
+  ]
+  ++ lib.optional hyperscanSupport hyperscan
+  ++ lib.optionals redisSupport [ redis hiredis ]
+  ;
+
+  enableParallelBuilding = true;
+
+  patches = lib.optional stdenv.is64bit ./bpf_stubs_workaround.patch;
+
+  postPatch = ''
+    substituteInPlace ./configure \
+      --replace "/usr/bin/file" "${file}/bin/file"
+    substituteInPlace ./libhtp/configure \
+      --replace "/usr/bin/file" "${file}/bin/file"
+
+    mkdir -p bpf_stubs_workaround/gnu
+    touch bpf_stubs_workaround/gnu/stubs-32.h
+  '';
+
+  configureFlags = [
+    "--disable-gccmarch-native"
+    "--enable-af-packet"
+    "--enable-ebpf"
+    "--enable-ebpf-build"
+    "--enable-gccprotect"
+    "--enable-geoip"
+    "--enable-luajit"
+    "--enable-nflog"
+    "--enable-nfqueue"
+    "--enable-pie"
+    "--disable-prelude"
+    "--enable-python"
+    "--enable-unix-socket"
+    "--localstatedir=/var"
+    "--sysconfdir=/etc"
+    "--with-libnet-includes=${libnet}/include"
+    "--with-libnet-libraries=${libnet}/lib"
+  ]
+  ++ lib.optionals hyperscanSupport [
+    "--with-libhs-includes=${hyperscan.dev}/include/hs"
+    "--with-libhs-libraries=${hyperscan}/lib"
+  ]
+  ++ lib.optional redisSupport "--enable-hiredis"
+  ++ lib.optionals rustSupport [
+    "--enable-rust"
+    "--enable-rust-experimental"
+  ];
+
+  postConfigure = ''
+    # Avoid unintended clousure growth.
+    sed -i 's|/nix/store/\(.\{8\}\)[^-]*-|/nix/store/\1...-|g' ./src/build-info.h
+  '';
+
+  hardeningDisable = [ "stackprotector" ];
+
+  installFlags = [
+    "e_localstatedir=\${TMPDIR}"
+    "e_logdir=\${TMPDIR}"
+    "e_logcertsdir=\${TMPDIR}"
+    "e_logfilesdir=\${TMPDIR}"
+    "e_rundir=\${TMPDIR}"
+    "e_sysconfdir=\${out}/etc/suricata"
+    "e_sysconfrulesdir=\${out}/etc/suricata/rules"
+    "localstatedir=\${TMPDIR}"
+    "runstatedir=\${TMPDIR}"
+    "sysconfdir=\${out}/etc"
+  ];
+
+  installTargets = [ "install" "install-conf" ];
+
+  postInstall = ''
+    wrapProgram "$out/bin/suricatasc" \
+      --prefix PYTHONPATH : $PYTHONPATH:$(toPythonPath "$out")
+    substituteInPlace "$out/etc/suricata/suricata.yaml" \
+      --replace "/etc/suricata" "$out/etc/suricata"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A free and open source, mature, fast and robust network threat detection engine";
+    homepage = "https://suricata-ids.org";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ magenbluten ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ids/zeek/default.nix b/nixpkgs/pkgs/applications/networking/ids/zeek/default.nix
new file mode 100644
index 000000000000..8fe856f9773f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ids/zeek/default.nix
@@ -0,0 +1,46 @@
+{stdenv, fetchurl, cmake, flex, bison, openssl, libpcap, zlib, file, curl
+, libmaxminddb, gperftools, python, swig, fetchpatch }:
+let
+  preConfigure = (import ./script.nix);
+in
+stdenv.mkDerivation rec {
+  pname = "zeek";
+  version = "3.1.2";
+
+  src = fetchurl {
+    url = "https://download.zeek.org/zeek-${version}.tar.gz";
+    sha256 = "18aa4pfwav8m6vq7cr4bhfg243da54ak933rqbriljnhsrgp4n0q";
+  };
+
+  nativeBuildInputs = [ cmake flex bison file ];
+  buildInputs = [ openssl libpcap zlib curl libmaxminddb gperftools python swig ];
+
+  #see issue https://github.com/zeek/zeek/issues/804 to modify hardlinking duplicate files.
+  inherit preConfigure;
+
+  enableParallelBuilding = true;
+
+  patches = stdenv.lib.optionals stdenv.cc.isClang [
+    # Fix pybind c++17 build with Clang. See: https://github.com/pybind/pybind11/issues/1604
+    (fetchpatch {
+      url = "https://github.com/pybind/pybind11/commit/759221f5c56939f59d8f342a41f8e2d2cacbc8cf.patch";
+      sha256 = "0l8z7d7chq1awd8dnfarj4c40wx36hkhcan0702p5l89x73wqk54";
+      extraPrefix = "aux/broker/bindings/python/3rdparty/pybind11/";
+      stripLen = 1;
+    })
+  ];
+
+  cmakeFlags = [
+    "-DPY_MOD_INSTALL_DIR=${placeholder "out"}/${python.sitePackages}"
+    "-DENABLE_PERFTOOLS=true"
+    "-DINSTALL_AUX_TOOLS=true"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Powerful network analysis framework much different from a typical IDS";
+    homepage = "https://www.zeek.org";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ pSub marsam tobim ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ids/zeek/script.nix b/nixpkgs/pkgs/applications/networking/ids/zeek/script.nix
new file mode 100644
index 000000000000..10a2d11a1489
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ids/zeek/script.nix
@@ -0,0 +1,62 @@
+''
+   sed -i "1i##! test dpd" $PWD/scripts/base/frameworks/dpd/__load__.zeek
+   sed -i "1i##! test x509" $PWD/scripts/base/files/x509/__load__.zeek
+   sed -i "1i##! test files-extract" $PWD/scripts/base/files/extract/__load__.zeek
+   sed -i "1i##! test files-hash" $PWD/scripts/base/files/hash/__load__.zeek
+   sed -i "1i##! test files-pe" $PWD/scripts/base/files/pe/__load__.zeek
+   sed -i "1i##! test analyzer" $PWD/scripts/base/frameworks/analyzer/__load__.zeek
+   sed -i "1i##! test cluster" $PWD/scripts/base/frameworks/cluster/__load__.zeek
+   sed -i "1i##! test config" $PWD/scripts/base/frameworks/config/__load__.zeek
+   sed -i "1i##! test contro" $PWD/scripts/base/frameworks/control/__load__.zeek
+   sed -i "1i##! test files" $PWD/scripts/base/frameworks/files/__load__.zeek
+   sed -i "1i##! test files-magic" $PWD/scripts/base/frameworks/files/magic/__load__.zeek
+   sed -i "1i##! test input" $PWD/scripts/base/frameworks/input/__load__.zeek
+   sed -i "1i##! test intel" $PWD/scripts/base/frameworks/intel/__load__.zeek
+   sed -i "1i##! test logging" $PWD/scripts/base/frameworks/logging/__load__.zeek
+   sed -i "1i##! test logging-postprocessors" $PWD/scripts/base/frameworks/logging/postprocessors/__load__.zeek
+   sed -i "1i##! test netcontrol" $PWD/scripts/base/frameworks/netcontrol/__load__.zeek
+   sed -i "1i##! test netcontrol-plugins" $PWD/scripts/base/frameworks/netcontrol/plugins/__load__.zeek
+   sed -i "1i##! test notice" $PWD/scripts/base/frameworks/notice/__load__.zeek
+   sed -i "1i##! test openflow" $PWD/scripts/base/frameworks/openflow/__load__.zeek
+   sed -i "1i##! test openflow-plugins" $PWD/scripts/base/frameworks/openflow/plugins/__load__.zeek
+   sed -i "1i##! test packet-filter" $PWD/scripts/base/frameworks/packet-filter/__load__.zeek
+   sed -i "1i##! test reporter" $PWD/scripts/base/frameworks/reporter/__load__.zeek
+   sed -i "1i##! test signatures" $PWD/scripts/base/frameworks/signatures/__load__.zeek
+   sed -i "1i##! test software" $PWD/scripts/base/frameworks/software/__load__.zeek
+   sed -i "1i##! test sumstats" $PWD/scripts/base/frameworks/sumstats/__load__.zeek
+   sed -i "1i##! test sumstats-plugins" $PWD/scripts/base/frameworks/sumstats/plugins/__load__.zeek
+   sed -i "1i##! test conn" $PWD/scripts/base/protocols/conn/__load__.zeek
+   sed -i "1i##! test dce-rpc" $PWD/scripts/base/protocols/dce-rpc/__load__.zeek
+   sed -i "1i##! test dhcp" $PWD/scripts/base/protocols/dhcp/__load__.zeek
+   sed -i "1i##! test dnp3" $PWD/scripts/base/protocols/dnp3/__load__.zeek
+   sed -i "1i##! test dns" $PWD/scripts/base/protocols/dns/__load__.zeek
+   sed -i "1i##! test ftp" $PWD/scripts/base/protocols/ftp/__load__.zeek
+   sed -i "1i##! test http" $PWD/scripts/base/protocols/http/__load__.zeek
+   sed -i "1i##! test imap" $PWD/scripts/base/protocols/imap/__load__.zeek
+   sed -i "1i##! test irc" $PWD/scripts/base/protocols/irc/__load__.zeek
+   sed -i "1i##! test krb" $PWD/scripts/base/protocols/krb/__load__.zeek
+   sed -i "1i##! test modbus" $PWD/scripts/base/protocols/modbus/__load__.zeek
+   sed -i "1i##! test mqtt" $PWD/scripts/base/protocols/mqtt/__load__.zeek
+   sed -i "1i##! test mysql" $PWD/scripts/base/protocols/mysql/__load__.zeek
+   sed -i "1i##! test ntlm" $PWD/scripts/base/protocols/ntlm/__load__.zeek
+   sed -i "1i##! test ntp" $PWD/scripts/base/protocols/ntp/__load__.zeek
+   sed -i "1i##! test pop3" $PWD/scripts/base/protocols/pop3/__load__.zeek
+   sed -i "1i##! test radius" $PWD/scripts/base/protocols/radius/__load__.zeek
+   sed -i "1i##! test rdp" $PWD/scripts/base/protocols/rdp/__load__.zeek
+   sed -i "1i##! test rfb" $PWD/scripts/base/protocols/rfb/__load__.zeek
+   sed -i "1i##! test sip" $PWD/scripts/base/protocols/sip/__load__.zeek
+   sed -i "1i##! test smb" $PWD/scripts/base/protocols/smb/__load__.zeek
+   sed -i "1i##! test smtp" $PWD/scripts/base/protocols/smtp/__load__.zeek
+   sed -i "1i##! test snmp" $PWD/scripts/base/protocols/snmp/__load__.zeek
+   sed -i "1i##! test socks" $PWD/scripts/base/protocols/socks/__load__.zeek
+   sed -i "1i##! test ssh" $PWD/scripts/base/protocols/ssh/__load__.zeek
+   sed -i "1i##! test ssl" $PWD/scripts/base/protocols/ssl/__load__.zeek
+   sed -i "1i##! test syslog" $PWD/scripts/base/protocols/syslog/__load__.zeek
+   sed -i "1i##! test xmpp" $PWD/scripts/base/protocols/xmpp/__load__.zeek
+   sed -i "1i##! test unified2" $PWD/scripts/policy/files/unified2/__load__.zeek
+   sed -i "1i##! test intel-seen" $PWD/scripts/policy/frameworks/intel/seen/__load__.zeek
+   sed -i "1i##! test notice" $PWD/scripts/policy/frameworks/notice/__load__.zeek
+   sed -i "1i##! test barnyard2" $PWD/scripts/policy/integration/barnyard2/__load__.zeek
+   sed -i "1i##! test collective-intel" $PWD/scripts/policy/integration/collective-intel/__load__.zeek
+   sed -i "1i##! test detect-traceroute" $PWD/scripts/policy/misc/detect-traceroute/__load__.zeek
+''
diff --git a/nixpkgs/pkgs/applications/networking/ike/default.nix b/nixpkgs/pkgs/applications/networking/ike/default.nix
new file mode 100644
index 000000000000..93858ba3027c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ike/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, fetchurl, fetchpatch, cmake, openssl, libedit, flex, bison, qt4, makeWrapper
+, gcc, nettools, iproute, linuxHeaders }:
+
+# NOTE: use $out/etc/iked.conf as sample configuration and also set: dhcp_file "/etc/iked.dhcp";
+# launch with "iked -f /etc/iked.conf"
+
+# NOTE: my testings reveal that kernels 3.11.10 and 3.12.6 won't let the traffic through the tunnel,
+# so I'm sticking with 3.4
+
+stdenv.mkDerivation rec {
+  pname = "ike";
+  version = "2.2.1";
+
+  src = fetchurl {
+    url = "https://www.shrew.net/download/ike/${pname}-${version}-release.tgz";
+    sha256 = "0fhyr2psd93b0zf7yfb72q3nqnh65mymgq5jpjcsj9jv5kfr6l8y";
+  };
+
+  patches = [
+    # required for openssl 1.1.x compatibility
+    (fetchpatch {
+      name = "openssl-1.1.0.patch";
+      url = "https://aur.archlinux.org/cgit/aur.git/plain/openssl-1.1.0.patch?h=ike&id=3a56735ddc26f750df4720f4baba0728bb4cb458";
+      sha256 = "1hw8q4xy858rivpjkq5288q3mc75d52bg4w3n30y99h05wik0h51";
+    })
+  ];
+
+  nativeBuildInputs = [ cmake flex bison makeWrapper ];
+  buildInputs = [ openssl libedit qt4 nettools iproute ];
+
+  postPatch = ''
+    # fix build with bison3
+    sed -i 's/define "parser_class_name"/define parser_class_name/' source/iked/conf.parse.yy
+  '';
+
+  configurePhase = ''
+    mkdir -p $out/{bin,sbin,lib}
+    cmake -DQTGUI=YES -DETCDIR=$out/etc -DLIBDIR=$out/lib -DSBINDIR=$out/sbin -DBINDIR=$out/bin \
+          -DKRNINC="${linuxHeaders}/include/" -DTESTS=YES \
+          -DMANDIR=$out/man -DNATT=YES -DCMAKE_INSTALL_PREFIX:BOOL=$out
+  '';
+
+  buildPhase = ''
+    make
+  '';
+
+  installPhase = ''
+    make install
+    for file in "$out"/bin/* "$out"/sbin/*; do
+        wrapProgram $file --prefix LD_LIBRARY_PATH ":" "$out/lib:${stdenv.lib.makeLibraryPath [ openssl gcc.cc stdenv.cc.libc libedit qt4 ]}"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.shrew.net/software";
+    description = "IPsec Client for FreeBSD, NetBSD and many Linux based operating systems";
+    platforms = platforms.unix;
+    maintainers = [ maintainers.domenkozar ];
+    license = licenses.sleepycat;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/SkypeExport/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/SkypeExport/default.nix
new file mode 100644
index 000000000000..f5ec3d7b6bd0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/SkypeExport/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, cmake, boost166 }:
+
+stdenv.mkDerivation rec {
+  pname = "SkypeExport";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "Temptin";
+    repo = "SkypeExport";
+    rev = "v${version}";
+    sha256 = "1ilkh0s3dz5cp83wwgmscnfmnyck5qcwqg1yxp9zv6s356dxnbak";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ boost166 ];
+
+  preConfigure = "cd src/SkypeExport/_gccbuild/linux";
+  installPhase = "install -Dt $out/bin SkypeExport";
+
+  meta = with stdenv.lib; {
+    description = "Export Skype history to HTML";
+    homepage = "https://github.com/Temptin/SkypeExport";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ yegortimoshenko ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/amsn/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/amsn/default.nix
new file mode 100644
index 000000000000..60d4ec829cc2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/amsn/default.nix
@@ -0,0 +1,28 @@
+{stdenv, fetchurl, which, tcl, tk, xlibsWrapper, libpng, libjpeg, makeWrapper}:
+
+stdenv.mkDerivation {
+  name = "amsn-0.98.9";
+  src = fetchurl {
+    url = "mirror://sourceforge/amsn/amsn-0.98.9-src.tar.gz";
+    sha256 = "0b8ir7spxnsz8f7kvr9f1k91nsy8cb65q6jv2l55b04fl20x4z7r";
+  };
+
+  configureFlags = [
+    "--with-tcl=${tcl}/lib"
+    "--with-tk=${tk}/lib"
+    "--enable-static"
+  ];
+
+  buildInputs = [which tcl tk xlibsWrapper libpng libjpeg makeWrapper];
+
+  postInstall = ''
+    wrapProgram $out/bin/amsn --prefix PATH : ${tk}/bin
+  '';
+
+  meta = {
+    description = "Instant messaging (MSN Messenger clone)";
+    homepage = "http://amsn-project.net";
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/baresip/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/baresip/default.nix
new file mode 100644
index 000000000000..37d8adceae1c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/baresip/default.nix
@@ -0,0 +1,53 @@
+{stdenv, fetchurl, zlib, openssl, libre, librem, pkgconfig, gst_all_1
+, cairo, mpg123, alsaLib, SDL, libv4l, celt, libsndfile, srtp, ffmpeg_3
+, gsm, speex, portaudio, spandsp, libuuid, ccache, libvpx
+}:
+stdenv.mkDerivation rec {
+  version = "0.6.5";
+  pname = "baresip";
+  src=fetchurl {
+    url = "http://www.creytiv.com/pub/baresip-${version}.tar.gz";
+    sha256 = "13di0ycdcr2q2a20mjvyaqfmvk5xldwqaxklqsz7470jnbc5n0rb";
+  };
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [zlib openssl libre librem cairo mpg123
+    alsaLib SDL libv4l celt libsndfile srtp ffmpeg_3 gsm speex portaudio spandsp libuuid
+    ccache libvpx
+  ] ++ (with gst_all_1; [ gstreamer gst-libav gst-plugins-base gst-plugins-bad gst-plugins-good ]);
+  makeFlags = [
+    "LIBRE_MK=${libre}/share/re/re.mk"
+    "LIBRE_INC=${libre}/include/re"
+    "LIBRE_SO=${libre}/lib"
+    "LIBREM_PATH=${librem}"
+    ''PREFIX=$(out)''
+    "USE_VIDEO=1"
+    "CCACHE_DISABLE=1"
+
+    "USE_ALSA=1" "USE_AMR=1" "USE_CAIRO=1" "USE_CELT=1"
+    "USE_CONS=1" "USE_EVDEV=1" "USE_FFMPEG=1"  "USE_GSM=1" "USE_GST1=1"
+    "USE_L16=1" "USE_MPG123=1" "USE_OSS=1" "USE_PLC=1" "USE_VPX=1"
+    "USE_PORTAUDIO=1" "USE_SDL=1" "USE_SNDFILE=1" "USE_SPEEX=1"
+    "USE_SPEEX_AEC=1" "USE_SPEEX_PP=1" "USE_SPEEX_RESAMP=1" "USE_SRTP=1"
+    "USE_STDIO=1" "USE_SYSLOG=1" "USE_UUID=1" "USE_V4L2=1" "USE_X11=1"
+
+    "USE_BV32=" "USE_COREAUDIO=" "USE_G711=1" "USE_G722=1" "USE_G722_1="
+    "USE_ILBC=" "USE_OPUS=" "USE_SILK="
+  ]
+  ++ stdenv.lib.optional (stdenv.cc.cc != null) "SYSROOT_ALT=${stdenv.cc.cc}"
+  ++ stdenv.lib.optional (stdenv.cc.libc != null) "SYSROOT=${stdenv.cc.libc}"
+  ;
+
+  NIX_CFLAGS_COMPILE='' -I${librem}/include/rem -I${gsm}/include/gsm
+    -DHAVE_INTTYPES_H -D__GLIBC__
+    -D__need_timeval -D__need_timespec -D__need_time_t '';
+  meta = {
+    homepage = "http://www.creytiv.com/baresip.html";
+    platforms = with stdenv.lib.platforms; linux;
+    maintainers = with stdenv.lib.maintainers; [raskin];
+    license = stdenv.lib.licenses.bsd3;
+    inherit version;
+    downloadPage = "http://www.creytiv.com/pub/";
+    updateWalker = true;
+    downloadURLRegexp = "/baresip-.*[.]tar[.].*";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-discord/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-discord/default.nix
new file mode 100644
index 000000000000..0b6f142f1e92
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-discord/default.nix
@@ -0,0 +1,32 @@
+{ fetchFromGitHub, stdenv, bitlbee, autoreconfHook, pkgconfig, glib }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  pname = "bitlbee-discord";
+  version = "0.4.3";
+
+  src = fetchFromGitHub {
+    rev = version;
+    owner = "sm00th";
+    repo = "bitlbee-discord";
+    sha256 = "00qgdvrp7hv02n0ns685igp810zxmv3adsama8601122al6x041n";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ bitlbee glib ];
+
+  preConfigure = ''
+    export BITLBEE_PLUGINDIR=$out/lib/bitlbee
+    export BITLBEE_DATADIR=$out/share/bitlbee
+    ./autogen.sh
+  '';
+
+  meta = {
+    description = "Bitlbee plugin for Discord";
+
+    homepage = "https://github.com/sm00th/bitlbee-discord";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ lassulus jb55 ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-facebook/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-facebook/default.nix
new file mode 100644
index 000000000000..78016065610b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-facebook/default.nix
@@ -0,0 +1,31 @@
+{ fetchFromGitHub, stdenv, bitlbee, autoconf, automake, libtool, pkgconfig, glib, json-glib }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  pname = "bitlbee-facebook";
+  version = "1.2.0";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "bitlbee";
+    repo = "bitlbee-facebook";
+    sha256 = "11068zhb1v55b1x0nhjc4f3p0glccxpcyk5c1630hfdzkj7vyqhn";
+  };
+
+  nativeBuildInputs = [ autoconf automake libtool pkgconfig ];
+
+  buildInputs = [ bitlbee glib json-glib ];
+
+  preConfigure = ''
+    export BITLBEE_PLUGINDIR=$out/lib/bitlbee
+    ./autogen.sh
+  '';
+
+  meta = {
+    description = "The Facebook protocol plugin for bitlbee";
+
+    homepage = "https://github.com/bitlbee/bitlbee-facebook";
+    license = licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-mastodon/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-mastodon/default.nix
new file mode 100644
index 000000000000..155ea5edc4d7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-mastodon/default.nix
@@ -0,0 +1,30 @@
+{ fetchgit, stdenv, bitlbee, autoreconfHook, pkgconfig, glib }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  pname = "bitlbee-mastodon";
+  version = "1.4.3";
+
+  src = fetchgit {
+    url = "https://alexschroeder.ch/cgit/bitlbee-mastodon";
+    rev = "v${version}";
+    sha256 = "1k9j4403w6x93f4ls3xj8nrabz8ynjby6sigqdmhb7cqv26l987p";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ bitlbee glib ];
+
+  preConfigure = ''
+    export BITLBEE_PLUGINDIR=$out/lib/bitlbee
+    export BITLBEE_DATADIR=$out/share/bitlbee
+    ./autogen.sh
+  '';
+
+  meta = {
+    description = "Bitlbee plugin for Mastodon";
+    homepage = "https://alexschroeder.ch/cgit/bitlbee-mastodon/about";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ jpotier ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-steam/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-steam/default.nix
new file mode 100644
index 000000000000..14a3319c1490
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-steam/default.nix
@@ -0,0 +1,30 @@
+{ fetchFromGitHub, stdenv, bitlbee, autoconf, automake, libtool, pkgconfig, glib, libgcrypt }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  version = "1.4.2";
+  pname = "bitlbee-steam";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "bitlbee";
+    repo = "bitlbee-steam";
+    sha256 = "121r92mgwv445wwxzh35n19fs5k81ihr0j19k256ia5502b1xxaq";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ bitlbee autoconf automake libtool glib libgcrypt ];
+
+  preConfigure = ''
+    export BITLBEE_PLUGINDIR=$out/lib/bitlbee
+    ./autogen.sh
+  '';
+
+  meta = {
+    description = "Steam protocol plugin for BitlBee";
+
+    homepage = "https://github.com/jgeboski/bitlbee-steam";
+    license = licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee/default.nix
new file mode 100644
index 000000000000..cf3f2549c810
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee/default.nix
@@ -0,0 +1,66 @@
+{ fetchurl, fetchpatch, stdenv, gnutls, glib, pkgconfig, check, libotr, python
+, enableLibPurple ? false, pidgin ? null
+, enablePam ? false, pam ? null
+}:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  name = "bitlbee-3.6";
+
+  src = fetchurl {
+    url = "mirror://bitlbee/src/${name}.tar.gz";
+    sha256 = "0zhhcbcr59sx9h4maf8zamzv2waya7sbsl7w74gbyilvy93dw5cz";
+  };
+
+  nativeBuildInputs = [ pkgconfig ] ++ optional doCheck check;
+
+  buildInputs = [ gnutls glib libotr python ]
+    ++ optional enableLibPurple pidgin
+    ++ optional enablePam pam;
+
+  configureFlags = [
+    "--otr=1"
+    "--ssl=gnutls"
+    "--pidfile=/var/lib/bitlbee/bitlbee.pid"
+  ] ++ optional enableLibPurple "--purple=1"
+    ++ optional enablePam "--pam=1";
+
+  patches = [
+    # This should be dropped once the issue is fixed upstream.
+    (fetchpatch {
+      url = "https://github.com/bitlbee/bitlbee/commit/6ff651b3ec93e5fd74f80766d5e9714d963137bc.diff";
+      sha256 = "144dpm4kq7c268fpww1q3n88ayg068n73fbabr5arh1zryw48qfv";
+    })
+  ];
+
+  installTargets = [ "install" "install-dev" ];
+
+  doCheck = !enableLibPurple; # Checks fail with libpurple for some reason
+  checkPhase = ''
+    # check flags set VERBOSE=y which breaks the build due overriding a command
+    make check
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "IRC instant messaging gateway";
+
+    longDescription = ''
+      BitlBee brings IM (instant messaging) to IRC clients.  It's a
+      great solution for people who have an IRC client running all the
+      time and don't want to run an additional MSN/AIM/whatever
+      client.
+
+      BitlBee currently supports the following IM networks/protocols:
+      XMPP/Jabber (including Google Talk), MSN Messenger, Yahoo!
+      Messenger, AIM and ICQ.
+    '';
+
+    homepage = "https://www.bitlbee.org/";
+    license = licenses.gpl2Plus;
+
+    maintainers = with maintainers; [ pSub ];
+    platforms = platforms.gnu ++ platforms.linux;  # arbitrary choice
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee/plugins.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee/plugins.nix
new file mode 100644
index 000000000000..4e05e7cae970
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee/plugins.nix
@@ -0,0 +1,20 @@
+{ stdenv, bitlbee }:
+
+with stdenv.lib;
+
+plugins:
+
+stdenv.mkDerivation {
+  inherit bitlbee plugins;
+  name = "bitlbee-plugins";
+  buildInputs = [ bitlbee plugins ];
+  phases = [ "installPhase" ];
+  installPhase = ''
+    mkdir -p $out/lib/bitlbee
+    for plugin in $plugins; do
+      for thing in $(ls $plugin/lib/bitlbee); do
+        ln -s $plugin/lib/bitlbee/$thing $out/lib/bitlbee/
+      done
+    done
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/blink/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/blink/default.nix
new file mode 100644
index 000000000000..f383daa6fd02
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/blink/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, fetchdarcs, pythonPackages, libvncserver, zlib
+, gnutls, libvpx, makeDesktopItem, mkDerivationWith }:
+
+mkDerivationWith pythonPackages.buildPythonApplication rec {
+
+  pname = "blink";
+  version = "3.2.0";
+
+  src = fetchdarcs {
+    url = "http://devel.ag-projects.com/repositories/blink-qt";
+    rev = "release-${version}";
+    sha256 = "19rcwr5scw48qnj79q1pysw95fz9h98nyc3161qy2kph5g7dwkc3";
+  };
+
+  patches = [ ./pythonpath.patch ];
+  postPatch = ''
+    sed -i 's|@out@|'"''${out}"'|g' blink/resources.py
+  '';
+
+  propagatedBuildInputs = with pythonPackages; [
+    pyqt5_with_qtwebkit
+    cjson
+    sipsimple
+    twisted
+    google_api_python_client
+  ];
+
+  buildInputs = [
+    pythonPackages.cython
+    zlib
+    libvncserver
+    libvpx
+  ];
+
+  desktopItem = makeDesktopItem {
+    name = "Blink";
+    exec = "blink";
+    comment = meta.description;
+    desktopName = "Blink";
+    icon = "blink";
+    genericName = "Instant Messaging";
+    categories = "Application;Internet;";
+  };
+
+  dontWrapQtApps = true;
+
+  postInstall = ''
+    mkdir -p "$out/share/applications"
+    mkdir -p "$out/share/pixmaps"
+    cp "$desktopItem"/share/applications/* "$out/share/applications"
+    cp "$out"/share/blink/icons/blink.* "$out/share/pixmaps"
+  '';
+
+  preFixup = ''
+    makeWrapperArgs+=(
+      --prefix "LD_LIBRARY_PATH" ":" "${gnutls.out}/lib"
+      "''${qtWrapperArgs[@]}"
+    )
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://icanblink.com/";
+    description = "A state of the art, easy to use SIP client for Voice, Video and IM";
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ pSub ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/blink/pythonpath.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/blink/pythonpath.patch
new file mode 100644
index 000000000000..0df8bc84ff30
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/blink/pythonpath.patch
@@ -0,0 +1,49 @@
+--- blink-2.0.0/blink/resources.py	2016-03-09 14:39:07.000000000 +0100
++++ blink-2.0.0/blink/resources-patched.py	2016-03-12 21:34:14.965476623 +0100
+@@ -1,7 +1,10 @@
++# Copyright (C) 2010-2013 AG Projects. See LICENSE for details.
++#
+ 
+ """Provide access to Blink's resources"""
+ 
+-import __main__
++__all__ = ['ApplicationData', 'Resources', 'IconManager']
++
+ import imghdr
+ import os
+ import platform
+@@ -19,14 +22,10 @@
+ from blink.util import run_in_gui_thread
+ 
+ 
+-__all__ = ['ApplicationData', 'Resources', 'IconManager']
+-
+-
+ class DirectoryContextManager(unicode):
+     def __enter__(self):
+         self.directory = os.getcwdu()
+         os.chdir(self)
+-
+     def __exit__(self, type, value, traceback):
+         os.chdir(self.directory)
+ 
+@@ -61,18 +60,7 @@
+     @classproperty
+     def directory(cls):
+         if cls._cached_directory is None:
+-            try:
+-                binary_directory = os.path.dirname(os.path.realpath(__main__.__file__))
+-            except AttributeError:
+-                if hasattr(sys, 'frozen'):
+-                    application_directory = os.path.dirname(os.path.realpath(sys.executable))
+-                else:
+-                    application_directory = os.path.realpath('')  # executed in interactive interpreter
+-            else:
+-                if os.path.basename(binary_directory) == 'bin':
+-                    application_directory = os.path.dirname(binary_directory)
+-                else:
+-                    application_directory = binary_directory
++            application_directory = '@out@'
+             if os.path.exists(os.path.join(application_directory, 'resources', 'blink.ui')):
+                 cls._cached_directory = os.path.join(application_directory, 'resources').decode(sys.getfilesystemencoding())
+             else:
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/bluejeans/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/bluejeans/default.nix
new file mode 100644
index 000000000000..bd71166be222
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/bluejeans/default.nix
@@ -0,0 +1,126 @@
+{ stdenv
+, fetchurl
+, rpmextract
+, patchelf
+, patchelfUnstable
+, libnotify
+, libuuid
+, cairo
+, cups
+, pango
+, fontconfig
+, udev
+, dbus
+, gtk3
+, atk
+, at-spi2-atk
+, expat
+, gdk-pixbuf
+, freetype
+, nspr
+, glib
+, nss
+, libX11
+, libXrandr
+, libXrender
+, libXtst
+, libXdamage
+, libxcb
+, libXcursor
+, libXi
+, libXext
+, libXfixes
+, libXft
+, libXcomposite
+, libXScrnSaver
+, alsaLib
+, pulseaudio
+, makeWrapper
+}:
+
+stdenv.mkDerivation rec {
+  pname = "bluejeans";
+  version = "2.3.0";
+
+  src = fetchurl {
+    url = "https://swdl.bluejeans.com/desktop-app/linux/${version}/BlueJeans.rpm";
+    sha256 = "06lcpkga8h0zpl2wlysj6n979f0yg361frp3zr0vwzln3fiil2a7";
+  };
+
+  nativeBuildInputs = [ rpmextract makeWrapper ];
+
+  libPath =
+    stdenv.lib.makeLibraryPath
+      [
+        libnotify
+        libuuid
+        cairo
+        cups
+        pango
+        fontconfig
+        gtk3
+        atk
+        at-spi2-atk
+        expat
+        gdk-pixbuf
+        dbus
+        udev.lib
+        freetype
+        nspr
+        glib
+        stdenv.cc.cc.lib
+        nss
+        libX11
+        libXrandr
+        libXrender
+        libXtst
+        libXdamage
+        libxcb
+        libXcursor
+        libXi
+        libXext
+        libXfixes
+        libXft
+        libXcomposite
+        libXScrnSaver
+        alsaLib
+        pulseaudio
+      ];
+
+  localtime64_stub = ./localtime64_stub.c;
+
+  buildCommand = ''
+    mkdir -p $out/bin/
+    cd $out
+    rpmextract $src
+    mv usr/share share
+    rmdir usr
+
+    ${patchelf}/bin/patchelf \
+      --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+      --replace-needed libudev.so.0 libudev.so.1 \
+      opt/BlueJeans/bluejeans-v2
+    ${patchelfUnstable}/bin/patchelf \
+      --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+      opt/BlueJeans/resources/BluejeansHelper
+
+    cc $localtime64_stub -shared -o "$out"/opt/BlueJeans/liblocaltime64_stub.so
+
+    makeWrapper $out/opt/BlueJeans/bluejeans-v2 $out/bin/bluejeans \
+      --set LD_LIBRARY_PATH "${libPath}":"${placeholder "out"}"/opt/BlueJeans \
+      --set LD_PRELOAD "$out"/opt/BlueJeans/liblocaltime64_stub.so
+
+    substituteInPlace "$out"/share/applications/bluejeans-v2.desktop \
+      --replace "/opt/BlueJeans/bluejeans-v2" "$out/bin/bluejeans"
+
+    patchShebangs "$out"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Video, audio, and web conferencing that works together with the collaboration tools you use every day";
+    homepage = "https://www.bluejeans.com";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ veprbl ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/bluejeans/localtime64_stub.c b/nixpkgs/pkgs/applications/networking/instant-messengers/bluejeans/localtime64_stub.c
new file mode 100644
index 000000000000..87c2fa11714c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/bluejeans/localtime64_stub.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+void *localtime64() {
+  fprintf(stderr, "nixpkgs: call into localtime64_r\n");
+  abort();
+}
+
+void *localtime64_r() {
+  fprintf(stderr, "nixpkgs: call into localtime64_r\n");
+  abort();
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/centerim/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/centerim/default.nix
new file mode 100644
index 000000000000..52d8178764c5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/centerim/default.nix
@@ -0,0 +1,32 @@
+{stdenv, fetchurl, gnused, openssl, curl, ncurses, libjpeg
+, withGpg ? true, gpgme ? null}:
+
+stdenv.mkDerivation rec {
+  version = "5.0.1";
+  pname = "centerim5";
+
+  src = fetchurl {
+    url = "http://centerim.org/download/cim5/${pname}-${version}.tar.gz";
+    sha256 = "0viz86jflp684vfginhl6aaw4gh2qvalc25anlwljjl3kkmibklk";
+  };
+
+  CXXFLAGS = "-std=gnu++98";
+
+  buildInputs = [ openssl curl ncurses libjpeg ]
+    ++ stdenv.lib.optional withGpg gpgme;
+
+  preConfigure = ''
+    ${gnused}/bin/sed -i '1,1i#include <stdio.h>' libicq2000/libicq2000/sigslot.h
+  '';
+
+  configureFlags = [
+    "--with-openssl=${openssl.dev}"
+  ];
+
+  meta = {
+    homepage = "http://www.centerim.org/";
+    description = "Fork of CenterICQ, a curses instant messaging program";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/chatterino2/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/chatterino2/default.nix
new file mode 100644
index 000000000000..553b466b12f9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/chatterino2/default.nix
@@ -0,0 +1,35 @@
+{ mkDerivation, stdenv, lib, pkgconfig, fetchFromGitHub, qtbase, qtsvg, qtmultimedia, qmake, boost, openssl, wrapQtAppsHook }:
+
+mkDerivation rec {
+  pname = "chatterino2";
+  version = "unstable-2019-05-11";
+  src = fetchFromGitHub {
+    owner = "fourtf";
+    repo = pname;
+    rev = "8c46cbf571dc8fd77287bf3186445ff52b1d1aaf";
+    sha256 = "0i2385hamhd9i7jdy906cfrd81cybw524j92l87c8pzrkxphignk";
+    fetchSubmodules = true;
+  };
+  nativeBuildInputs = [ qmake pkgconfig wrapQtAppsHook ];
+  buildInputs = [ qtbase qtsvg qtmultimedia boost openssl ];
+  postInstall = lib.optionalString stdenv.isDarwin ''
+    mkdir -p "$out/Applications"
+    mv bin/chatterino.app "$out/Applications/"
+  '';
+  postFixup = lib.optionalString stdenv.isDarwin ''
+    wrapQtApp "$out/Applications/chatterino.app/Contents/MacOS/chatterino"
+  '';
+  meta = with lib; {
+    description = "A chat client for Twitch chat";
+    longDescription = ''
+      Chatterino is a chat client for Twitch chat. It aims to be an
+      improved/extended version of the Twitch web chat. Chatterino 2 is
+      the second installment of the Twitch chat client series
+      "Chatterino".
+  '';
+    homepage = "https://github.com/fourtf/chatterino2";
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ rexim ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/coyim/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/coyim/default.nix
new file mode 100644
index 000000000000..67c2a0db2372
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/coyim/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, pkgconfig,
+  cairo, gdk-pixbuf, glib, gnome3, wrapGAppsHook, gtk3 }:
+
+buildGoPackage rec {
+  pname = "coyim";
+  version = "0.3.11";
+
+  goPackagePath = "github.com/coyim/coyim";
+
+  src = fetchFromGitHub {
+    owner = "coyim";
+    repo = "coyim";
+    rev = "v${version}";
+    sha256 = "1g8nf56j17rdhhj7pv3ha1rb2mfc0mdvyzl35pgcki08w7iw08j3";
+  };
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+
+  buildInputs = [ glib cairo gdk-pixbuf gtk3 gnome3.adwaita-icon-theme ];
+
+  meta = with stdenv.lib; {
+    description = "a safe and secure chat client";
+    homepage = "https://coy.im/";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/deltachat-electron/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/deltachat-electron/default.nix
new file mode 100644
index 000000000000..e58e73fdc85b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/deltachat-electron/default.nix
@@ -0,0 +1,36 @@
+{ lib, fetchurl, appimageTools }:
+
+let
+  pname = "deltachat-electron";
+  version = "1.3.0";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url =
+      "https://download.delta.chat/desktop/v${version}/DeltaChat-${version}.AppImage";
+    sha256 = "1xyp8cg11px8rras12sncjmq85alyvz7ycw1v1py8w8rlz60wkij";
+  };
+
+  appimageContents = appimageTools.extract { inherit name src; };
+
+in appimageTools.wrapType2 {
+  inherit name src;
+
+  extraInstallCommands = ''
+    mv $out/bin/${name} $out/bin/${pname}
+    install -m 444 -D \
+      ${appimageContents}/deltachat-desktop.desktop \
+      $out/share/applications/${pname}.desktop
+    substituteInPlace $out/share/applications/${pname}.desktop \
+      --replace 'Exec=AppRun' 'Exec=${pname}'
+    cp -r ${appimageContents}/usr/share/icons $out/share
+  '';
+
+  meta = with lib; {
+    description = "Electron client for DeltaChat";
+    homepage = "https://delta.chat/";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ ehmry ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/dino/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/dino/default.nix
new file mode 100644
index 000000000000..9c286d008320
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/dino/default.nix
@@ -0,0 +1,82 @@
+{ stdenv, fetchFromGitHub
+, vala, cmake, ninja, wrapGAppsHook, pkgconfig, gettext
+, gobject-introspection, gnome3, glib, gdk-pixbuf, gtk3, glib-networking
+, xorg, libXdmcp, libxkbcommon
+, libnotify, libsoup, libgee
+, librsvg, libsignal-protocol-c
+, fetchpatch
+, libgcrypt
+, epoxy
+, at-spi2-core
+, sqlite
+, dbus
+, gpgme
+, pcre
+, qrencode
+, icu
+ }:
+
+stdenv.mkDerivation rec {
+  pname = "dino";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "dino";
+    repo = "dino";
+    rev = "v${version}";
+    sha256 = "1k5cgj5n8s40i71wqdh6m1q0njl45ichfdbbywx9rga5hljz1c54";
+  };
+
+  patches = [
+    (fetchpatch {
+      # Allow newer versions of libsignal-protocol-c
+      url = "https://github.com/dino/dino/commit/fbd70ceaac5ebbddfa21a580c61165bf5b861303.patch";
+      sha256 = "0ydpwsmwrzfsry89fsffkfalhki4n1dw99ixjvpiingdrhjmwyl2";
+      excludes = [ "plugins/signal-protocol/libsignal-protocol-c" ];
+    })
+  ];
+
+  nativeBuildInputs = [
+    vala
+    cmake
+    ninja
+    pkgconfig
+    wrapGAppsHook
+    gettext
+  ];
+
+  buildInputs = [
+    qrencode
+    gobject-introspection
+    glib-networking
+    glib
+    libgee
+    gnome3.adwaita-icon-theme
+    sqlite
+    gdk-pixbuf
+    gtk3
+    libnotify
+    gpgme
+    libgcrypt
+    libsoup
+    pcre
+    xorg.libxcb
+    xorg.libpthreadstubs
+    libXdmcp
+    libxkbcommon
+    epoxy
+    at-spi2-core
+    dbus
+    icu
+    libsignal-protocol-c
+    librsvg
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Modern Jabber/XMPP Client using GTK/Vala";
+    homepage = "https://github.com/dino/dino";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ mic92 qyliss ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/discord/base.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/discord/base.nix
new file mode 100644
index 000000000000..c2af3e4d3e7d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/discord/base.nix
@@ -0,0 +1,79 @@
+{ pname, version, src, binaryName, desktopName
+, autoPatchelfHook, fetchurl, makeDesktopItem, stdenv, wrapGAppsHook
+, alsaLib, at-spi2-atk, at-spi2-core, atk, cairo, cups, dbus, expat, fontconfig
+, freetype, gdk-pixbuf, glib, gtk3, libcxx, libdrm, libnotify, libpulseaudio, libuuid
+, libX11, libXScrnSaver, libXcomposite, libXcursor, libXdamage, libXext
+, libXfixes, libXi, libXrandr, libXrender, libXtst, libxcb
+, mesa, nspr, nss, pango, systemd
+}:
+
+let
+  inherit binaryName;
+in stdenv.mkDerivation rec {
+  inherit pname version src;
+
+  nativeBuildInputs = [
+    alsaLib
+    autoPatchelfHook
+    cups
+    libdrm
+    libuuid
+    libX11
+    libXScrnSaver
+    libXtst
+    libxcb
+    mesa.drivers
+    nss
+    wrapGAppsHook
+  ];
+
+  dontWrapGApps = true;
+
+  libPath = stdenv.lib.makeLibraryPath [
+    libcxx systemd libpulseaudio
+    stdenv.cc.cc alsaLib atk at-spi2-atk at-spi2-core cairo cups dbus expat fontconfig freetype
+    gdk-pixbuf glib gtk3 libnotify libX11 libXcomposite libuuid
+    libXcursor libXdamage libXext libXfixes libXi libXrandr libXrender
+    libXtst nspr nss libxcb pango systemd libXScrnSaver
+   ];
+
+  installPhase = ''
+    mkdir -p $out/{bin,opt/${binaryName},share/pixmaps}
+    mv * $out/opt/${binaryName}
+
+    chmod +x $out/opt/${binaryName}/${binaryName}
+    patchelf --set-interpreter ${stdenv.cc.bintools.dynamicLinker} \
+        $out/opt/${binaryName}/${binaryName}
+
+    wrapProgram $out/opt/${binaryName}/${binaryName} \
+        "''${gappsWrapperArgs[@]}" \
+        --prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}/" \
+        --prefix LD_LIBRARY_PATH : ${libPath}
+
+    ln -s $out/opt/${binaryName}/${binaryName} $out/bin/
+    ln -s $out/opt/${binaryName}/discord.png $out/share/pixmaps/${pname}.png
+
+    ln -s "${desktopItem}/share/applications" $out/share/
+  '';
+
+  desktopItem = makeDesktopItem {
+    name = pname;
+    exec = binaryName;
+    icon = pname;
+    inherit desktopName;
+    genericName = meta.description;
+    categories = "Network;InstantMessaging;";
+    mimeType = "x-scheme-handler/discord";
+  };
+
+  passthru.updateScript = ./update-discord.sh;
+
+  meta = with stdenv.lib; {
+    description = "All-in-one cross-platform voice and text chat for gamers";
+    homepage = "https://discordapp.com/";
+    downloadPage = "https://discordapp.com/download";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ ldesgoui MP2E tadeokondrak ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/discord/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/discord/default.nix
new file mode 100644
index 000000000000..bc76949e80ab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/discord/default.nix
@@ -0,0 +1,36 @@
+{ branch ? "stable", pkgs }:
+# Generated by ./update-discord.sh
+let
+  inherit (pkgs) callPackage fetchurl;
+in {
+  stable = callPackage ./base.nix rec {
+    pname = "discord";
+    binaryName = "Discord";
+    desktopName = "Discord";
+    version = "0.0.10";
+    src = fetchurl {
+      url = "https://dl.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz";
+      sha256 = "0kx92i8naqr3algmyy3wyzbh8146z7gigxwf1nbpg1gl16wlplaq";
+    };
+  };
+  ptb = callPackage ./base.nix rec {
+    pname = "discord-ptb";
+    binaryName = "DiscordPTB";
+    desktopName = "Discord PTB";
+    version = "0.0.19";
+    src = fetchurl {
+      url = "https://dl-ptb.discordapp.net/apps/linux/${version}/discord-ptb-${version}.tar.gz";
+      sha256 = "0wixmm16qsmgbr0l9144vl5pc3s2p4jqhl7cnc6kmgy1y4ig56ib";
+    };
+  };
+  canary = callPackage ./base.nix rec {
+    pname = "discord-canary";
+    binaryName = "DiscordCanary";
+    desktopName = "Discord Canary";
+    version = "0.0.104";
+    src = fetchurl {
+      url = "https://dl-canary.discordapp.net/apps/linux/${version}/discord-canary-${version}.tar.gz";
+      sha256 = "17np1hqqygjlbmlln0d1ba2qlbjykwj156w5dw7g4lg77kfxicfk";
+    };
+  };
+}.${branch}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/discord/update-discord.sh b/nixpkgs/pkgs/applications/networking/instant-messengers/discord/update-discord.sh
new file mode 100755
index 000000000000..34c1574c65aa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/discord/update-discord.sh
@@ -0,0 +1,36 @@
+#!/usr/bin/env bash
+# script to generate ./default.nix
+
+set -e
+exec >"${BASH_SOURCE%/*}/default.nix"
+
+cat <<EOF
+{ branch ? "stable", pkgs }:
+# Generated by ./update-discord.sh
+let
+  inherit (pkgs) callPackage fetchurl;
+in {
+EOF
+
+for branch in "" ptb canary; do
+    url=$(curl -sI "https://discordapp.com/api/download${branch:+/}${branch}?platform=linux&format=tar.gz" | grep -oP 'location: \K\S+')
+    version=${url##https://dl*.discordapp.net/apps/linux/}
+    version=${version%%/*.tar.gz}
+    echo "  ${branch:-stable} = callPackage ./base.nix rec {"
+    echo "    pname = \"discord${branch:+-}${branch}\";"
+    case $branch in
+        "") suffix="" ;;
+        ptb) suffix="PTB" ;;
+        canary) suffix="Canary" ;;
+    esac
+    echo "    binaryName = \"Discord${suffix}\";"
+    echo "    desktopName = \"Discord${suffix:+ }${suffix}\";"
+    echo "    version = \"${version}\";"
+    echo "    src = fetchurl {"
+    echo "      url = \"${url//${version}/\$\{version\}}\";"
+    echo "      sha256 = \"$(nix-prefetch-url "$url")\";"
+    echo "    };"
+    echo "  };"
+done
+
+echo "}.\${branch}"
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/fractal/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/fractal/default.nix
new file mode 100644
index 000000000000..05767d1a9cd6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/fractal/default.nix
@@ -0,0 +1,87 @@
+{ stdenv
+, fetchFromGitLab
+, fetchpatch
+, meson
+, ninja
+, gettext
+, cargo
+, rustc
+, python3
+, rustPlatform
+, pkgconfig
+, gtksourceview4
+, glib
+, libhandy
+, gtk3
+, dbus
+, openssl
+, sqlite
+, gst_all_1
+, cairo
+, gdk-pixbuf
+, gspell
+, wrapGAppsHook
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "fractal";
+  version = "4.2.2";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "GNOME";
+    repo = "fractal";
+    rev = version;
+    sha256 = "0r98km3c8naj3mdr1wppzj823ir7jnsia7r3cbg3vsq8q52i480r";
+  };
+
+  cargoSha256 = "10fgw9m6gdazrca73g43sgvsghhac7xc3bg7hr0vpynzqyfigwa9";
+
+  nativeBuildInputs = [
+    cargo
+    gettext
+    meson
+    ninja
+    pkgconfig
+    python3
+    rustc
+    wrapGAppsHook
+    glib
+  ];
+
+  buildInputs = [
+    cairo
+    dbus
+    gdk-pixbuf
+    glib
+    gspell
+    gst_all_1.gst-editing-services
+    gst_all_1.gst-plugins-bad
+    gst_all_1.gst-plugins-base
+    gst_all_1.gstreamer
+    gst_all_1.gst-validate
+    gtk3
+    gtksourceview4
+    libhandy
+    openssl
+    sqlite
+  ];
+
+  postPatch = ''
+    chmod +x scripts/test.sh
+    patchShebangs scripts/meson_post_install.py scripts/test.sh
+  '';
+
+  # Don't use buildRustPackage phases, only use it for rust deps setup
+  configurePhase = null;
+  buildPhase = null;
+  checkPhase = null;
+  installPhase = null;
+
+  meta = with stdenv.lib; {
+    description = "Matrix group messaging app";
+    homepage = "https://gitlab.gnome.org/GNOME/fractal";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ dtzWill worldofpeace ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/franz/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/franz/default.nix
new file mode 100644
index 000000000000..0c5090574fa6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/franz/default.nix
@@ -0,0 +1,57 @@
+{ stdenv, fetchurl, makeWrapper, wrapGAppsHook, autoPatchelfHook, dpkg
+, xorg, atk, glib, pango, gdk-pixbuf, cairo, freetype, fontconfig, gtk3
+, gnome2, dbus, nss, nspr, alsaLib, cups, expat, udev, libnotify, xdg_utils }:
+
+let
+  version = "5.4.1";
+in stdenv.mkDerivation {
+  pname = "franz";
+  inherit version;
+  src = fetchurl {
+    url = "https://github.com/meetfranz/franz/releases/download/v${version}/franz_${version}_amd64.deb";
+    sha256 = "1g1z5zjm9l081hpqslfc4h7pqh4k76ccmlz71r21204wy630mw6h";
+  };
+
+  # don't remove runtime deps
+  dontPatchELF = true;
+
+  nativeBuildInputs = [ autoPatchelfHook makeWrapper wrapGAppsHook dpkg ];
+  buildInputs = (with xorg; [
+    libXi libXcursor libXdamage libXrandr libXcomposite libXext libXfixes
+    libXrender libX11 libXtst libXScrnSaver
+  ]) ++ [
+    gtk3 atk glib pango gdk-pixbuf cairo freetype fontconfig dbus
+    gnome2.GConf nss nspr alsaLib cups expat stdenv.cc.cc
+  ];
+  runtimeDependencies = [ udev.lib libnotify ];
+
+  unpackPhase = "dpkg-deb -x $src .";
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -r opt $out
+    ln -s $out/opt/Franz/franz $out/bin
+
+    # provide desktop item and icon
+    cp -r usr/share $out
+    substituteInPlace $out/share/applications/franz.desktop \
+      --replace /opt/Franz/franz franz
+  '';
+
+  dontWrapGApps = true;
+
+  postFixup = ''
+    wrapProgram $out/opt/Franz/franz \
+      --prefix PATH : ${xdg_utils}/bin \
+      "''${gappsWrapperArgs[@]}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A free messaging app that combines chat & messaging services into one application";
+    homepage = "https://meetfranz.com";
+    license = licenses.free;
+    maintainers = [ maintainers.davidtwco ];
+    platforms = ["x86_64-linux"];
+    hydraPlatforms = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/freetalk/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/freetalk/default.nix
new file mode 100644
index 000000000000..e24ac2e18317
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/freetalk/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub
+, guile, pkgconfig, glib, loudmouth, gmp, libidn, readline, libtool
+, libunwind, ncurses, curl, jansson, texinfo
+, automake, autoconf }:
+stdenv.mkDerivation rec {
+  pname = "freetalk";
+  version = "4.1";
+  
+  src = fetchFromGitHub {
+    owner = "GNUFreetalk";
+    repo = "freetalk";
+    rev = "v${version}";
+    sha256 = "09jwk2i8qd8c7wrn9xbqcwm32720dwxis22kf3jpbg8mn6w6i757";
+  };
+
+  preConfigure = ''
+    ./autogen.sh
+  '';
+
+  nativeBuildInputs = [ pkgconfig texinfo autoconf automake ];
+  buildInputs = [
+    guile glib loudmouth gmp libidn readline libtool
+    libunwind ncurses curl jansson
+  ];
+
+  meta = with stdenv.lib; {
+    description =  "Console XMPP client";
+    license = licenses.gpl3Plus ;
+    maintainers = with maintainers; [ raskin ];
+    platforms = platforms.linux;
+    downloadPage = "https://www.gnu.org/software/freetalk/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/gajim/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/gajim/default.nix
new file mode 100644
index 000000000000..b2be635728d7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/gajim/default.nix
@@ -0,0 +1,70 @@
+{ lib, fetchurl, gettext, wrapGAppsHook
+
+# Native dependencies
+, python3, gtk3, gobject-introspection, gnome3
+
+# Test dependencies
+, xvfb_run, dbus
+
+# Optional dependencies
+, enableJingle ? true, farstream, gstreamer, gst-plugins-base, gst-libav, gst-plugins-ugly, libnice
+, enableE2E ? true
+, enableSecrets ? true, libsecret
+, enableRST ? true, docutils
+, enableSpelling ? true, gspell
+, enableUPnP ? true, gupnp-igd
+, enableOmemoPluginDependencies ? true
+, extraPythonPackages ? ps: []
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "gajim";
+  majorVersion = "1.1";
+  version = "${majorVersion}.3";
+
+  src = fetchurl {
+    url = "https://gajim.org/downloads/${majorVersion}/gajim-${version}.tar.bz2";
+    sha256 = "0bzxwcpdd4ydh6d6mzpr0gxwhcb0x9ympk55fpvm1hcw9d28a716";
+  };
+
+  postPatch = ''
+    # This test requires network access
+    echo "" > test/integration/test_resolver.py
+  '';
+
+  buildInputs = [
+    gobject-introspection gtk3 gnome3.adwaita-icon-theme wrapGAppsHook
+  ] ++ lib.optionals enableJingle [ farstream gstreamer gst-plugins-base gst-libav gst-plugins-ugly libnice ]
+    ++ lib.optional enableSecrets libsecret
+    ++ lib.optional enableSpelling gspell
+    ++ lib.optional enableUPnP gupnp-igd;
+
+  nativeBuildInputs = [
+    gettext
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    nbxmpp pyasn1 pygobject3 dbus-python pillow cssutils precis-i18n keyring setuptools
+  ] ++ lib.optionals enableE2E [ pycrypto python-gnupg ]
+    ++ lib.optional enableRST docutils
+    ++ lib.optionals enableOmemoPluginDependencies [ python-axolotl qrcode ]
+    ++ extraPythonPackages python3.pkgs;
+
+  checkInputs = [ xvfb_run dbus.daemon ];
+
+  checkPhase = ''
+    xvfb-run dbus-run-session \
+      --config-file=${dbus.daemon}/share/dbus-1/session.conf \
+      ${python3.interpreter} setup.py test
+  '';
+
+  meta = {
+    homepage = "http://gajim.org/";
+    description = "Jabber client written in PyGTK";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ raskin aszlig abbradar ];
+    downloadPage = "http://gajim.org/downloads.php";
+    updateWalker = true;
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/gitter/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/gitter/default.nix
new file mode 100644
index 000000000000..57b745057dce
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/gitter/default.nix
@@ -0,0 +1,70 @@
+{ stdenv, alsaLib, atk, cairo, cups, dbus, dpkg, expat, fetchurl
+, fontconfig, freetype, gdk-pixbuf, glib, gnome2, gtk3, libX11
+, libXScrnSaver, libXcomposite, libXcursor, libXdamage, libXext, libXfixes
+, libXi, libXrandr, libXrender, libXtst, libappindicator-gtk3, libcxx
+, libnotify, libpulseaudio, libxcb, makeDesktopItem, makeWrapper, nspr, nss
+, pango, systemd }:
+
+let gitterDirectorySuffix = "opt/gitter";
+    doELFPatch = target: ''
+      patchelf --set-interpreter ${stdenv.cc.bintools.dynamicLinker} \
+         --set-rpath "$out/${gitterDirectorySuffix}/lib:${libPath}" \
+         $out/${gitterDirectorySuffix}/${target}
+       '';
+   libPath = stdenv.lib.makeLibraryPath [
+     alsaLib atk cairo cups dbus expat fontconfig freetype gdk-pixbuf glib
+     gnome2.GConf gtk3 libX11 libXScrnSaver libXcomposite libXcursor libXdamage
+     libXext libXfixes libXi libXrandr libXrender libXtst libappindicator-gtk3
+     libcxx libnotify libpulseaudio libxcb nspr nss pango stdenv.cc.cc systemd
+  ];
+in stdenv.mkDerivation rec {
+  pname = "gitter";
+  version = "4.1.0";
+
+  src = fetchurl {
+    url = "https://update.gitter.im/linux64/${pname}_${version}_amd64.deb";
+    sha256 = "1gny9i2pywvczzrs93k8krqn6hwm6c2zg8yr3xmjqs3p88817wbi";
+  };
+
+  nativeBuildInputs = [ makeWrapper dpkg ];
+
+  unpackPhase = "dpkg -x $src .";
+
+  installPhase = ''
+    mkdir -p $out/{bin,opt/gitter,share/pixmaps}
+    mv ./opt/Gitter/linux64/* $out/opt/gitter
+
+    ${doELFPatch "Gitter"}
+    ${doELFPatch "nacl_helper"}
+    ${doELFPatch "minidump_stackwalk"}
+    ${doELFPatch "nwjc"}
+    ${doELFPatch "chromedriver"}
+    ${doELFPatch "payload"}
+
+    patchelf --set-rpath "$out/${gitterDirectorySuffix}/lib:${libPath}" \
+         $out/${gitterDirectorySuffix}/lib/libnw.so
+
+    wrapProgram $out/${gitterDirectorySuffix}/Gitter --prefix LD_LIBRARY_PATH : ${libPath}
+
+    ln -s $out/${gitterDirectorySuffix}/Gitter $out/bin/
+    ln -s $out/${gitterDirectorySuffix}/logo.png $out/share/pixmaps/gitter.png
+    ln -s "${desktopItem}/share/applications" $out/share/
+  '';
+
+  desktopItem = makeDesktopItem {
+    name = pname;
+    exec = "Gitter";
+    icon = pname;
+    desktopName = "Gitter";
+    genericName = meta.description;
+    categories = "Network;InstantMessaging;";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Where developers come to talk";
+    downloadPage = "https://gitter.im/apps";
+    license = licenses.mit;
+    maintainers = [ maintainers.imalison ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/go-neb/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/go-neb/default.nix
new file mode 100644
index 000000000000..769e5cf55159
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/go-neb/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule {
+  pname = "go-neb";
+  version = "unstable-2020-04-09";
+  src = fetchFromGitHub {
+    owner = "matrix-org";
+    repo = "go-neb";
+    rev = "1e297c50ad2938e511a3c86f4b190fd3fc3559d6";
+    sha256 = "1azwy4s4kmypps1fjbz76flpi1b7sjzjj4qwx94cry0hn3qfnrc6";
+  };
+
+  subPackages = [ "." ];
+
+  patches = [ ./go-mod.patch ];
+
+  vendorSha256 = "1k3980yf6zl00dkd1djwhm2f9nnffzrsbs3kq3alpw2gm0aln739";
+
+  passthru.tests.go-neb = nixosTests.go-neb;
+
+  meta = with lib; {
+    description = "Extensible matrix bot written in Go";
+    homepage = "https://github.com/matrix-org/go-neb";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ hexa maralorn ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/go-neb/go-mod.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/go-neb/go-mod.patch
new file mode 100644
index 000000000000..1c725652d431
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/go-neb/go-mod.patch
@@ -0,0 +1,50 @@
+diff --git a/go.mod b/go.mod
+index 8ed4e68..83526e7 100644
+--- a/go.mod
++++ b/go.mod
+@@ -4,24 +4,15 @@ go 1.14
+ 
+ require (
+ 	github.com/PuerkitoBio/goquery v1.5.1 // indirect
+-	github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect
+-	github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4 // indirect
+ 	github.com/andygrunwald/go-jira v1.11.0
+ 	github.com/beorn7/perks v1.0.1 // indirect
+-	github.com/cespare/xxhash/v2 v2.1.1 // indirect
+ 	github.com/dghubble/oauth1 v0.6.0
+ 	github.com/die-net/lrucache v0.0.0-20190707192454-883874fe3947
+-	github.com/go-kit/kit v0.9.0 // indirect
+-	github.com/go-logfmt/logfmt v0.4.0 // indirect
+-	github.com/go-stack/stack v1.8.0 // indirect
+-	github.com/gogo/protobuf v1.1.1 // indirect
+ 	github.com/golang/protobuf v1.3.2 // indirect
+ 	github.com/google/go-cmp v0.4.0 // indirect
+ 	github.com/google/go-github v2.0.1-0.20160719063544-b5e5babef39c+incompatible
+ 	github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79
+ 	github.com/jaytaylor/html2text v0.0.0-20200220170450-61d9dc4d7195
+-	github.com/json-iterator/go v1.1.9 // indirect
+-	github.com/julienschmidt/httprouter v1.2.0 // indirect
+ 	github.com/kr/pretty v0.1.0 // indirect
+ 	github.com/lib/pq v1.3.0
+ 	github.com/matrix-org/dugong v0.0.0-20180820122854-51a565b5666b
+@@ -32,9 +23,6 @@ require (
+ 	github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
+ 	github.com/mmcdole/gofeed v1.0.0-beta2
+ 	github.com/mmcdole/goxpp v0.0.0-20181012175147-0068e33feabf // indirect
+-	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
+-	github.com/modern-go/reflect2 v1.0.1 // indirect
+-	github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223 // indirect
+ 	github.com/olekukonko/tablewriter v0.0.4 // indirect
+ 	github.com/pkg/errors v0.8.1 // indirect
+ 	github.com/prometheus/client_golang v0.8.1-0.20160916180340-5636dc67ae77
+@@ -47,10 +35,7 @@ require (
+ 	github.com/stretchr/testify v1.4.0 // indirect
+ 	golang.org/x/net v0.0.0-20200301022130-244492dfa37a
+ 	golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
+-	golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e // indirect
+ 	golang.org/x/sys v0.0.0-20200122134326-e047566fdf82 // indirect
+-	golang.org/x/tools v0.0.0-20200311090712-aafaee8bce8c // indirect
+-	gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect
+ 	gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
+ 	gopkg.in/yaml.v2 v2.2.8
+ )
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/gomuks/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/gomuks/default.nix
new file mode 100644
index 000000000000..f7fad7f4c45a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/gomuks/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, buildGoModule, fetchFromGitHub, olm, makeDesktopItem }:
+
+buildGoModule rec {
+  pname = "gomuks";
+  version = "0.1.0";
+
+  goPackagePath = "maunium.net/go/gomuks";
+  patches = [ ./gomod.patch ];
+
+  src = fetchFromGitHub {
+    owner = "tulir";
+    repo = pname;
+    rev = "v" + version;
+    sha256 = "1dcqkyxiqiyivzn85fwkjy8xs9yk89810x9mvkaiz0dx3ha57zhi";
+  };
+
+  vendorSha256 = "1mfi167mycnnlq8dwh1kkx6drhhi4ib58aad5fwc90ckdaq1rpb7";
+
+  buildInputs = [ olm ];
+
+  postInstall = ''
+    cp -r ${
+      makeDesktopItem {
+        name = "net.maunium.gomuks.desktop";
+        exec = "@out@/bin/gomuks";
+        terminal = "true";
+        desktopName = "Gomuks";
+        genericName = "Matrix client";
+        categories = "Network;Chat";
+        comment = meta.description;
+      }
+    }/* $out/
+    substituteAllInPlace $out/share/applications/*
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://maunium.net/go/gomuks/";
+    description = "A terminal based Matrix client written in Go";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ tilpner emily ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/gomuks/gomod.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/gomuks/gomod.patch
new file mode 100644
index 000000000000..7b5ae45d614a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/gomuks/gomod.patch
@@ -0,0 +1,12 @@
+diff --git a/go.mod b/go.mod
+index a07e991..ba5ae99 100644
+--- a/go.mod
++++ b/go.mod
+@@ -9,6 +9,7 @@ require (
+ 	github.com/lithammer/fuzzysearch v1.1.0
+ 	github.com/lucasb-eyer/go-colorful v1.0.3
+ 	github.com/mattn/go-runewidth v0.0.9
++	github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d
+ 	github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect
+ 	github.com/pkg/errors v0.9.1
+ 	github.com/rivo/uniseg v0.1.0
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/gtmess/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/gtmess/default.nix
new file mode 100644
index 000000000000..0661e6d7525e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/gtmess/default.nix
@@ -0,0 +1,19 @@
+{stdenv, fetchurl, ncurses, openssl, tcl, tk}:
+
+stdenv.mkDerivation {
+  name = "gtmess-0.97";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/gtmess/gtmess-0.97.tar.gz";
+    sha256 = "1ipmqsrj0r1ssbgs2fpr4x5vnzlxlqhx9jrnadp1jw7s0sxpjqv0";
+  };
+
+  buildInputs = [ ncurses openssl tcl tk];
+
+  meta = {
+    description = "Console MSN Messenger client for Linux and other unix systems";
+    homepage = "http://gtmess.sourceforge.net/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/hipchat/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/hipchat/default.nix
new file mode 100644
index 000000000000..7213332a549a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/hipchat/default.nix
@@ -0,0 +1,88 @@
+{ stdenv, fetchurl, xorg, freetype, fontconfig, openssl, glib, nss, nspr, expat
+, alsaLib, dbus, zlib, libxml2, libxslt, makeWrapper, xkeyboard_config, systemd
+, libGL, xcbutilkeysyms, xdg_utils, libtool }:
+
+let
+  version = "4.30.5.1682";
+
+  rpath = stdenv.lib.makeLibraryPath [
+    xdg_utils
+    xorg.libXext
+    xorg.libSM
+    xorg.libICE
+    xorg.libX11
+    xorg.libXrandr
+    xorg.libXdamage
+    xorg.libXrender
+    xorg.libXfixes
+    xorg.libXcomposite
+    xorg.libXcursor
+    xorg.libxcb
+    xorg.libXi
+    xorg.libXScrnSaver
+    xorg.libXtst
+    freetype
+    fontconfig
+    openssl
+    glib
+    nss
+    nspr
+    dbus
+    alsaLib
+    zlib
+    libtool
+    libxml2
+    libxslt
+    expat
+    xcbutilkeysyms
+    systemd
+    libGL
+  ] + ":${stdenv.cc.cc.lib}/lib64";
+in stdenv.mkDerivation {
+  pname = "hipchat";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://atlassian.artifactoryonline.com/atlassian/hipchat-apt-client/pool/HipChat4-${version}-Linux.deb";
+    sha256 = "03pz8wskafn848yvciq29kwdvqcgjrk6sjnm8nk9acl89xf0sn96";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  buildCommand = ''
+    ar x $src
+    tar xfvz data.tar.gz
+
+    mkdir -p $out/libexec/hipchat
+    d=$out/libexec/hipchat/lib
+    mv opt/HipChat4/* $out/libexec/hipchat/
+    mv usr/share $out
+
+    for file in $(find $d -type f); do
+        patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $file || true
+        patchelf --set-rpath ${rpath}:$out/libexec/hipchat/lib:\$ORIGIN $file || true
+    done
+
+    patchShebangs $d/linuxbrowserlaunch.sh
+
+    substituteInPlace $out/share/applications/hipchat4.desktop \
+      --replace /opt/HipChat4/bin/HipChat4 $out/bin/hipchat
+
+    makeWrapper $d/HipChat.bin $out/bin/hipchat \
+      --run 'export HIPCHAT_LD_LIBRARY_PATH=$LD_LIBRARY_PATH' \
+      --run 'export HIPCHAT_QT_PLUGIN_PATH=$QT_PLUGIN_PATH' \
+      --set QT_XKB_CONFIG_ROOT ${xkeyboard_config}/share/X11/xkb \
+      --set QTWEBENGINEPROCESS_PATH $d/QtWebEngineProcess
+
+    makeWrapper $d/QtWebEngineProcess.bin $d/QtWebEngineProcess \
+      --set QT_PLUGIN_PATH "$d/plugins"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Desktop client for HipChat services";
+    homepage = "http://www.hipchat.com";
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ puffnfresh ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/jackline/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/jackline/default.nix
new file mode 100644
index 000000000000..f2b026e79dac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/jackline/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, ocamlPackages }:
+
+assert stdenv.lib.versionAtLeast ocamlPackages.ocaml.version "4.07";
+
+stdenv.mkDerivation {
+  pname = "jackline";
+  version = "unstable-2020-04-24";
+
+  src = fetchFromGitHub {
+    owner  = "hannesm";
+    repo   = "jackline";
+    rev    = "885b97b90d565f5f7c2b5f66f5edf14a82251b87";
+    sha256 = "1mdn413ya2g0a1mrdbh1b65gnygrxb08k99z5lmidhh34kd1llsj";
+  };
+
+  buildInputs = with ocamlPackages; [
+                  ocaml ocamlbuild findlib topkg ppx_sexp_conv ppx_deriving
+                  erm_xmpp tls mirage-crypto mirage-crypto-pk x509 domain-name
+                  ocaml_lwt otr astring ptime notty sexplib hex uutf
+                  dns-client base64
+                ];
+
+  buildPhase = "${ocamlPackages.topkg.run} build --pinned true";
+
+  inherit (ocamlPackages.topkg) installPhase;
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/hannesm/jackline";
+    description = "minimalistic secure XMPP client in OCaml";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ sternenseemann ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/jitsi-meet-electron/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/jitsi-meet-electron/default.nix
new file mode 100644
index 000000000000..715eef4229ae
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/jitsi-meet-electron/default.nix
@@ -0,0 +1,60 @@
+{ stdenv
+, fetchurl
+, appimageTools
+, makeWrapper
+, electron_9
+}:
+
+let
+  electron = electron_9;
+in
+stdenv.mkDerivation rec {
+  pname = "jitsi-meet-electron";
+  version = "2.2.0";
+
+  src = fetchurl {
+    url = "https://github.com/jitsi/jitsi-meet-electron/releases/download/v${version}/jitsi-meet-x86_64.AppImage";
+    sha256 = "0gqyqjj69x1gxwj4zhwazddnj5xzy598xqz7vwkpdm1ldzna2iyj";
+    name = "${pname}-${version}.AppImage";
+  };
+
+  appimageContents = appimageTools.extractType2 {
+    name = "${pname}-${version}";
+    inherit src;
+  };
+
+  dontUnpack = true;
+  dontConfigure = true;
+  dontBuild = true;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin $out/share/${pname} $out/share/applications
+
+    cp -a ${appimageContents}/{locales,resources} $out/share/${pname}
+    cp -a ${appimageContents}/jitsi-meet.desktop $out/share/applications/${pname}.desktop
+    cp -a ${appimageContents}/usr/share/icons $out/share
+
+    substituteInPlace $out/share/applications/${pname}.desktop \
+      --replace 'Exec=AppRun' 'Exec=${pname}'
+
+    runHook postInstall
+  '';
+
+  postFixup = ''
+    makeWrapper ${electron}/bin/electron $out/bin/${pname} \
+      --add-flags $out/share/${pname}/resources/app.asar \
+      --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ stdenv.cc.cc ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Jitsi Meet desktop application powered by Electron";
+    homepage = "https://github.com/jitsi/jitsi-meet-electron";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ prusnak ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/jitsi/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/jitsi/default.nix
new file mode 100644
index 000000000000..025b66852f4a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/jitsi/default.nix
@@ -0,0 +1,71 @@
+{ stdenv, lib, fetchurl, makeDesktopItem, unzip, ant, jdk
+# Optional, Jitsi still runs without, but you may pass null:
+, alsaLib, dbus, gtk2, libpulseaudio, openssl, xorg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "jitsi";
+  version = "2.10.5550";
+
+  src = fetchurl {
+    url = "https://download.jitsi.org/jitsi/src/jitsi-src-${version}.zip";
+    sha256 = "11vjchc3dnzj55x7c62wsm6masvwmij1ifkds917r1qvil1nzz6d";
+  };
+
+  patches = [ ./jitsi.patch ];
+
+  jitsiItem = makeDesktopItem {
+    name = "Jitsi";
+    exec = "jitsi";
+    comment = "VoIP and Instant Messaging client";
+    desktopName = "Jitsi";
+    genericName = "Instant Messaging";
+    categories = "Application;X-Internet;";
+  };
+
+  libPath = lib.makeLibraryPath ([
+    stdenv.cc.cc  # For libstdc++.
+    alsaLib
+    dbus
+    gtk2
+    libpulseaudio
+    openssl
+    xorg.libX11
+    xorg.libXext
+    xorg.libXScrnSaver
+    xorg.libXv
+  ]);
+
+  nativeBuildInputs = [ unzip ];
+  buildInputs = [ ant jdk ];
+
+  buildPhase = ''ant make'';
+
+  installPhase = ''
+    mkdir -p $out
+    cp -a lib $out/
+    rm -rf $out/lib/native/solaris
+    cp -a sc-bundles $out/
+    mkdir $out/bin
+    cp resources/install/generic/run.sh $out/bin/jitsi
+    chmod +x $out/bin/jitsi
+    substituteInPlace $out/bin/jitsi \
+      --subst-var-by JAVA ${jdk}/bin/java \
+      --subst-var-by EXTRALIBS ${gtk2.out}/lib
+    sed -e 's,^java\ ,${jdk}/bin/java ,' -i $out/bin/jitsi
+    patchShebangs $out
+    libPath="$libPath:${jdk.home}/lib/${jdk.architecture}"
+    find $out/ -type f -name '*.so' | while read file; do
+      patchelf --set-rpath "$libPath" "$file" && \
+          patchelf --shrink-rpath "$file"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://jitsi.org/";
+    description = "Open Source Video Calls and Chat";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/jitsi/jitsi.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/jitsi/jitsi.patch
new file mode 100644
index 000000000000..e477bdfe2fd4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/jitsi/jitsi.patch
@@ -0,0 +1,27 @@
+--- /home/dario/Downloads/jitsi/resources/install/generic/run.sh	2013-11-01 15:37:21.000000000 +0000
++++ jitsi/resources/install/generic/run.sh	2014-03-04 11:52:30.796397567 +0000
+@@ -1,4 +1,9 @@
+-mkdir -p $HOME/.sip-communicator/log
++#! /bin/bash
++# A modified version of the generic run.sh
++
++#mkdir -p $HOME/.sip-communicator/log
++
++cd "$(dirname "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")"
+
+ # Get architecture
+ ARCH=`uname -m | sed -e s/x86_64/64/ -e s/i.86/32/`
+@@ -6,7 +11,9 @@
+ # Additionnal JVM arguments
+ CLIENTARGS=""
+
++NATIVELIBS="lib/native/linux-64"
+ if [ $ARCH = 32 ]
+ then
+     CLIENTARGS="-client -Xmx256m"
++    NATIVELIBS="lib/native/linux"
+ fi
+
+ export PATH=$PATH:native
+-java $CLIENTARGS -classpath "lib/felix.jar:sc-bundles/sc-launcher.jar:sc-bundles/util.jar:lib/" -Djava.library.path=native -Dfelix.config.properties=file:./lib/felix.client.run.properties -Djava.util.logging.config.file=lib/logging.properties net.java.sip.communicator.launcher.SIPCommunicator
++LD_LIBRARY_PATH=@EXTRALIBS@ exec @JAVA@ $CLIENTARGS -classpath "lib/felix.jar:sc-bundles/sc-launcher.jar:sc-bundles/util.jar:lib/" -Djava.library.path=$NATIVELIBS -Dfelix.config.properties=file:lib/felix.client.run.properties -Djava.util.logging.config.file=lib/logging.properties net.java.sip.communicator.launcher.SIPCommunicator
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/linphone/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/linphone/default.nix
new file mode 100644
index 000000000000..e27835851445
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/linphone/default.nix
@@ -0,0 +1,238 @@
+{ bcg729
+, bctoolbox
+, bcunit
+, belcard
+, belle-sip
+, belr
+, bzrtp
+, cairo
+, cmake
+, cyrus_sasl
+, fetchFromGitLab
+, fetchurl
+, ffmpeg_3
+, gdk-pixbuf
+, glib
+, gnused
+, graphviz
+, gtk2
+, intltool
+, lib
+, libexosip
+, liblinphone
+, libmatroska
+, libnotify
+, libosip
+, libsoup
+, libupnp
+, libX11
+, libxml2
+, makeWrapper
+, mbedtls
+, mediastreamer
+, mediastreamer-openh264
+, mkDerivation
+, openldap
+, ortp
+, pango
+, pkgconfig
+, python
+, qtbase
+, qtgraphicaleffects
+, qtquickcontrols2
+, qttranslations
+, readline
+, speex
+, sqlite
+, stdenv
+, udev
+, zlib
+  # For Minizip 2.2.7:
+, fetchFromGitHub
+, libbsd
+}:
+let
+  # Linphone Desktop requires Minizip 2.2.7. Nixpkgs contains a very old version
+  # from the time when it was part of zlib. The most recent release of Minizip
+  # is currently 2.9.2 but Linphone Desktop didn't work with that. So, even if
+  # we added most recent Minizip version to nixpkgs, probably Minizip 2.2.7 is
+  # only needed here and we shouldn't add this semi-old version to
+  # all-packages.nix. Therefore, just define it here locally.
+  minizip2 = stdenv.mkDerivation rec {
+    pname = "minizip";
+    version = "2.2.7";
+
+    disabled = stdenv.isAarch32;
+
+    src = fetchFromGitHub {
+      owner = "nmoinvaz";
+      repo = pname;
+      rev = version;
+      sha256 = "1a88v1gjlflsd17mlrgxh420rpa38q0d17yh9q8j1zzqfrd1azch";
+    };
+
+    nativeBuildInputs = [ cmake pkgconfig ];
+
+    cmakeFlags = [
+      "-DBUILD_SHARED_LIBS=YES"
+    ];
+
+    buildInputs = [
+      zlib
+      libbsd # required in 2.2.7 but not in 2.9.2?
+    ];
+
+    meta = with stdenv.lib; {
+      description = "Compression library implementing the deflate compression method found in gzip and PKZIP";
+      homepage = "https://github.com/nmoinvaz/minizip";
+      license = licenses.zlib;
+      platforms = platforms.unix;
+    };
+  };
+in
+mkDerivation rec {
+  pname = "linphone-desktop";
+  # Latest release is 4.1.1 old and doesn't build with the latest releases of
+  # some of the dependencies so let's use the latest commit.
+  version = "unstable-2020-03-06";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.linphone.org";
+    owner = "public";
+    group = "BC";
+    repo = pname;
+    rev = "971997e162558d37051f89c9c34bbc240135f704";
+    sha256 = "02ji4r8bpcm2kyisn9d3054m026l33g2574i1ag1cmb2dz2p8i1c";
+  };
+
+  # Without this patch, the build fails with:
+  #
+  #   No rule to make target
+  #   'minizip_OUTPUT/nix/store/...linphone-desktop.../lib/libminizip.so',
+  #
+  # So, the makefile tries to use a full absolute path to the library but does
+  # it incorrectly. As we have installed Minizip properly, it's sufficient to
+  # just use "minizip" and the library is found automatically. If this patched
+  # target_link_libraries line was removed entirely, the build would fail at the
+  # very end when linking minizip.
+  patches = [
+    ./fix_minizip_linking.patch
+  ];
+
+  # See: https://gitlab.linphone.org/BC/public/linphone-desktop/issues/21
+  postPatch = ''
+    substituteInPlace src/app/AppController.cpp \
+      --replace "LINPHONE_QT_GIT_VERSION" "\"${version}\""
+  '';
+
+  # TODO: After linphone-desktop and liblinphone split into separate packages,
+  # there might be some build inputs here that aren't needed for
+  # linphone-desktop.
+  buildInputs = [
+    bcg729
+    bctoolbox
+    belcard
+    belle-sip
+    belr
+    bzrtp
+    cairo
+    cyrus_sasl
+    ffmpeg_3
+    gdk-pixbuf
+    glib
+    gtk2
+    libX11
+    libexosip
+    liblinphone
+    libmatroska
+    libnotify
+    libosip
+    libsoup
+    libupnp
+    libxml2
+    mbedtls
+    mediastreamer
+    mediastreamer-openh264
+    minizip2
+    openldap
+    ortp
+    pango
+    qtbase
+    qtgraphicaleffects
+    qtquickcontrols2
+    qttranslations
+    readline
+    speex
+    sqlite
+    udev
+    zlib
+  ];
+
+  nativeBuildInputs = [
+    bcunit
+    cmake
+    gnused
+    graphviz
+    intltool
+    makeWrapper
+    pkgconfig
+  ];
+
+  cmakeFlags = [
+    "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
+    "-DMINIZIP_INCLUDE_DIRS=${minizip2}/include"
+    "-DMINIZIP_LIBRARIES=minizip"
+  ];
+
+  # The default install phase fails because the paths are somehow messed up in
+  # the makefiles. The errors were like:
+  #
+  #   CMake Error at cmake_builder/linphone_package/cmake_install.cmake:49 (file):
+  #     file INSTALL cannot find
+  #     "/build/linphone-desktop-.../build/linphone-sdk/desktop//nix/store/.../bin":
+  #     No such file or directory.
+  #
+  # If someone is able to figure out how to fix that, great. For now, just
+  # trying to pick all the relevant files to the output.
+  #
+  # Also, the exec path in linphone.desktop file remains invalid, pointing to
+  # the build directory, after the whole nix build process. So, let's use sed to
+  # manually fix that path.
+  #
+  # In order to find mediastreamer plugins, mediastreamer package was patched to
+  # support an environment variable pointing to the plugin directory. Set that
+  # environment variable by wrapping the Linphone executable.
+  #
+  # Also, some grammar files needed to be copied too from some dependencies. I
+  # suppose if one define a dependency in such a way that its share directory is
+  # found, then this copying would be unnecessary. These missing grammar files
+  # were discovered when linphone crashed at startup and it was run with
+  # --verbose flag. Instead of actually copying these files, create symlinks.
+  #
+  # It is quite likely that there are some other files still missing and
+  # Linphone will randomly crash when it tries to access those files. Then,
+  # those just need to be copied manually below.
+  installPhase = ''
+    mkdir -p $out/bin
+    cp linphone $out/bin/
+    wrapProgram $out/bin/linphone \
+      --set MEDIASTREAMER_PLUGINS_DIR \
+            ${mediastreamer-openh264}/lib/mediastreamer/plugins
+    mkdir -p $out/share/applications
+    sed -i "s@/build/.*/OUTPUT/bin@$out/bin@" linphone.desktop
+    cp linphone.desktop $out/share/applications/
+    cp -r ../assets/icons $out/share/
+    mkdir -p $out/share/belr/grammars
+    ln -s ${liblinphone}/share/belr/grammars/* $out/share/belr/grammars/
+    mkdir -p $out/share/linphone
+    ln -s ${liblinphone}/share/linphone/* $out/share/linphone/
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.linphone.org/";
+    description = "Open source SIP phone for voice/video calls and instant messaging";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ jluttine ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/linphone/fix_minizip_linking.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/linphone/fix_minizip_linking.patch
new file mode 100644
index 000000000000..bb88d0030fae
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/linphone/fix_minizip_linking.patch
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 3ee77441..18ea5c27 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -517,7 +517,7 @@ else()
+             target_link_libraries(${TARGET_NAME} "${MINIZIP_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/libminizip.dylib")
+             execute_process(COMMAND install_name_tool -id "@executable_path/../Frameworks/libminizip.dylib" "${MINIZIP_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/libminizip.dylib")
+         elseif(NOT WIN32)
+-            target_link_libraries(${TARGET_NAME} "${MINIZIP_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/libminizip.so")
++            target_link_libraries(${TARGET_NAME} "minizip")
+         endif()
+     endif()#If (LinphoneCxx_FOUND AND Minizip_FOUND)
+ endif()#If (LinphoneCxx_FOUND)
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/matrix-dl/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/matrix-dl/default.nix
new file mode 100644
index 000000000000..97f775220229
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/matrix-dl/default.nix
@@ -0,0 +1,25 @@
+{ lib, python3Packages, fetchFromGitHub }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "matrix-dl-unstable";
+  version = "2019-09-22";
+
+  src = fetchFromGitHub {
+    owner = "rubo77";
+    repo = "matrix-dl";
+    rev = "e91610f45b7b3b0aca34923309fc83ba377f8a69";
+    sha256 = "036xfdd21pcfjlilknc67z5jqpk0vz07853wwcsiac32iypc6f2q";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    matrix-client
+  ];
+
+  meta = with lib; {
+    description = "Download backlogs from Matrix as raw text";
+    homepage = src.meta.homepage;
+    license = licenses.gpl1Plus;
+    maintainers = with maintainers; [ aw ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/composition.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/composition.nix
new file mode 100644
index 000000000000..e03bdd9909e8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/composition.nix
@@ -0,0 +1,21 @@
+# This file has been generated by node2nix 1.7.0. Do not edit!
+
+{pkgs ? import <nixpkgs> {
+    inherit system;
+  }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-12_x"}:
+
+let
+  nodeEnv = import ./node-env.nix {
+    inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile;
+    inherit nodejs;
+    libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
+  };
+locpkgs = 
+import ./node-packages.nix {
+  inherit (pkgs) fetchurl fetchgit;
+  inherit nodeEnv;
+  globalBuildInputs = [
+    locpkgs.node-pre-gyp
+  ];
+};
+in locpkgs
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/default.nix
new file mode 100644
index 000000000000..633219626b68
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, pkgs }:
+(import ./composition.nix {
+  inherit pkgs;
+  inherit (stdenv.hostPlatform) system;
+})."package".override {
+  postInstall = ''
+    mkdir "$out/bin"
+    echo '#!/bin/sh' >> "$out/bin/matrix-recorder"
+    echo "'${pkgs.nodejs-12_x}/bin/node'" \
+         "'$out/lib/node_modules/matrix-recorder/matrix-recorder.js'" \
+         '"$@"' >> "$out/bin/matrix-recorder"
+    echo '#!/bin/sh' >> "$out/bin/matrix-recorder-to-html"
+    echo 'cd "$1"' >> "$out/bin/matrix-recorder-to-html"
+    echo "test -d templates/ || ln -sfT '$out/lib/node_modules/matrix-recorder/templates' templates" >> "$out/bin/matrix-recorder-to-html"
+    echo "'${pkgs.nodejs-12_x}/bin/node'" \
+         "'$out/lib/node_modules/matrix-recorder/recorder-to-html.js'" \
+         '.' >> "$out/bin/matrix-recorder-to-html"
+    chmod a+x "$out/bin/matrix-recorder"
+    chmod a+x "$out/bin/matrix-recorder-to-html"
+  '';
+  meta = {
+    description = "Matrix message recorder";
+    homepage = "https://gitlab.com/argit/matrix-recorder/";
+    license = stdenv.lib.licenses.mit;
+    maintainers = [ stdenv.lib.maintainers.raskin ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/node-env.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/node-env.nix
new file mode 100644
index 000000000000..670556bf271a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/node-env.nix
@@ -0,0 +1,540 @@
+# This file originates from node2nix
+
+{stdenv, nodejs, python2, utillinux, libtool, runCommand, writeTextFile}:
+
+let
+  python = if nodejs ? python then nodejs.python else python2;
+
+  # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise
+  tarWrapper = runCommand "tarWrapper" {} ''
+    mkdir -p $out/bin
+
+    cat > $out/bin/tar <<EOF
+    #! ${stdenv.shell} -e
+    $(type -p tar) "\$@" --warning=no-unknown-keyword --delay-directory-restore
+    EOF
+
+    chmod +x $out/bin/tar
+  '';
+
+  # Function that generates a TGZ file from a NPM project
+  buildNodeSourceDist =
+    { name, version, src, ... }:
+
+    stdenv.mkDerivation {
+      name = "node-tarball-${name}-${version}";
+      inherit src;
+      buildInputs = [ nodejs ];
+      buildPhase = ''
+        export HOME=$TMPDIR
+        tgzFile=$(npm pack | tail -n 1) # Hooks to the pack command will add output (https://docs.npmjs.com/misc/scripts)
+      '';
+      installPhase = ''
+        mkdir -p $out/tarballs
+        mv $tgzFile $out/tarballs
+        mkdir -p $out/nix-support
+        echo "file source-dist $out/tarballs/$tgzFile" >> $out/nix-support/hydra-build-products
+      '';
+    };
+
+  includeDependencies = {dependencies}:
+    stdenv.lib.optionalString (dependencies != [])
+      (stdenv.lib.concatMapStrings (dependency:
+        ''
+          # Bundle the dependencies of the package
+          mkdir -p node_modules
+          cd node_modules
+
+          # Only include dependencies if they don't exist. They may also be bundled in the package.
+          if [ ! -e "${dependency.name}" ]
+          then
+              ${composePackage dependency}
+          fi
+
+          cd ..
+        ''
+      ) dependencies);
+
+  # Recursively composes the dependencies of a package
+  composePackage = { name, packageName, src, dependencies ? [], ... }@args:
+    ''
+      DIR=$(pwd)
+      cd $TMPDIR
+
+      unpackFile ${src}
+
+      # Make the base dir in which the target dependency resides first
+      mkdir -p "$(dirname "$DIR/${packageName}")"
+
+      if [ -f "${src}" ]
+      then
+          # Figure out what directory has been unpacked
+          packageDir="$(find . -maxdepth 1 -type d | tail -1)"
+
+          # Restore write permissions to make building work
+          find "$packageDir" -type d -exec chmod u+x {} \;
+          chmod -R u+w "$packageDir"
+
+          # Move the extracted tarball into the output folder
+          mv "$packageDir" "$DIR/${packageName}"
+      elif [ -d "${src}" ]
+      then
+          # Get a stripped name (without hash) of the source directory.
+          # On old nixpkgs it's already set internally.
+          if [ -z "$strippedName" ]
+          then
+              strippedName="$(stripHash ${src})"
+          fi
+
+          # Restore write permissions to make building work
+          chmod -R u+w "$strippedName"
+
+          # Move the extracted directory into the output folder
+          mv "$strippedName" "$DIR/${packageName}"
+      fi
+
+      # Unset the stripped name to not confuse the next unpack step
+      unset strippedName
+
+      # Include the dependencies of the package
+      cd "$DIR/${packageName}"
+      ${includeDependencies { inherit dependencies; }}
+      cd ..
+      ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+    '';
+
+  pinpointDependencies = {dependencies, production}:
+    let
+      pinpointDependenciesFromPackageJSON = writeTextFile {
+        name = "pinpointDependencies.js";
+        text = ''
+          var fs = require('fs');
+          var path = require('path');
+
+          function resolveDependencyVersion(location, name) {
+              if(location == process.env['NIX_STORE']) {
+                  return null;
+              } else {
+                  var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json");
+
+                  if(fs.existsSync(dependencyPackageJSON)) {
+                      var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON));
+
+                      if(dependencyPackageObj.name == name) {
+                          return dependencyPackageObj.version;
+                      }
+                  } else {
+                      return resolveDependencyVersion(path.resolve(location, ".."), name);
+                  }
+              }
+          }
+
+          function replaceDependencies(dependencies) {
+              if(typeof dependencies == "object" && dependencies !== null) {
+                  for(var dependency in dependencies) {
+                      var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency);
+
+                      if(resolvedVersion === null) {
+                          process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n");
+                      } else {
+                          dependencies[dependency] = resolvedVersion;
+                      }
+                  }
+              }
+          }
+
+          /* Read the package.json configuration */
+          var packageObj = JSON.parse(fs.readFileSync('./package.json'));
+
+          /* Pinpoint all dependencies */
+          replaceDependencies(packageObj.dependencies);
+          if(process.argv[2] == "development") {
+              replaceDependencies(packageObj.devDependencies);
+          }
+          replaceDependencies(packageObj.optionalDependencies);
+
+          /* Write the fixed package.json file */
+          fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2));
+        '';
+      };
+    in
+    ''
+      node ${pinpointDependenciesFromPackageJSON} ${if production then "production" else "development"}
+
+      ${stdenv.lib.optionalString (dependencies != [])
+        ''
+          if [ -d node_modules ]
+          then
+              cd node_modules
+              ${stdenv.lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies}
+              cd ..
+          fi
+        ''}
+    '';
+
+  # Recursively traverses all dependencies of a package and pinpoints all
+  # dependencies in the package.json file to the versions that are actually
+  # being used.
+
+  pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args:
+    ''
+      if [ -d "${packageName}" ]
+      then
+          cd "${packageName}"
+          ${pinpointDependencies { inherit dependencies production; }}
+          cd ..
+          ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+      fi
+    '';
+
+  # Extract the Node.js source code which is used to compile packages with
+  # native bindings
+  nodeSources = runCommand "node-sources" {} ''
+    tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
+    mv node-* $out
+  '';
+
+  # Script that adds _integrity fields to all package.json files to prevent NPM from consulting the cache (that is empty)
+  addIntegrityFieldsScript = writeTextFile {
+    name = "addintegrityfields.js";
+    text = ''
+      var fs = require('fs');
+      var path = require('path');
+
+      function augmentDependencies(baseDir, dependencies) {
+          for(var dependencyName in dependencies) {
+              var dependency = dependencies[dependencyName];
+
+              // Open package.json and augment metadata fields
+              var packageJSONDir = path.join(baseDir, "node_modules", dependencyName);
+              var packageJSONPath = path.join(packageJSONDir, "package.json");
+
+              if(fs.existsSync(packageJSONPath)) { // Only augment packages that exist. Sometimes we may have production installs in which development dependencies can be ignored
+                  console.log("Adding metadata fields to: "+packageJSONPath);
+                  var packageObj = JSON.parse(fs.readFileSync(packageJSONPath));
+
+                  if(dependency.integrity) {
+                      packageObj["_integrity"] = dependency.integrity;
+                  } else {
+                      packageObj["_integrity"] = "sha1-000000000000000000000000000="; // When no _integrity string has been provided (e.g. by Git dependencies), add a dummy one. It does not seem to harm and it bypasses downloads.
+                  }
+
+                  if(dependency.resolved) {
+                      packageObj["_resolved"] = dependency.resolved; // Adopt the resolved property if one has been provided
+                  } else {
+                      packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories.
+                  }
+
+                  if(dependency.from !== undefined) { // Adopt from property if one has been provided
+                      packageObj["_from"] = dependency.from;
+                  }
+
+                  fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2));
+              }
+
+              // Augment transitive dependencies
+              if(dependency.dependencies !== undefined) {
+                  augmentDependencies(packageJSONDir, dependency.dependencies);
+              }
+          }
+      }
+
+      if(fs.existsSync("./package-lock.json")) {
+          var packageLock = JSON.parse(fs.readFileSync("./package-lock.json"));
+
+          if(packageLock.lockfileVersion !== 1) {
+             process.stderr.write("Sorry, I only understand lock file version 1!\n");
+             process.exit(1);
+          }
+
+          if(packageLock.dependencies !== undefined) {
+              augmentDependencies(".", packageLock.dependencies);
+          }
+      }
+    '';
+  };
+
+  # Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes
+  reconstructPackageLock = writeTextFile {
+    name = "addintegrityfields.js";
+    text = ''
+      var fs = require('fs');
+      var path = require('path');
+
+      var packageObj = JSON.parse(fs.readFileSync("package.json"));
+
+      var lockObj = {
+          name: packageObj.name,
+          version: packageObj.version,
+          lockfileVersion: 1,
+          requires: true,
+          dependencies: {}
+      };
+
+      function augmentPackageJSON(filePath, dependencies) {
+          var packageJSON = path.join(filePath, "package.json");
+          if(fs.existsSync(packageJSON)) {
+              var packageObj = JSON.parse(fs.readFileSync(packageJSON));
+              dependencies[packageObj.name] = {
+                  version: packageObj.version,
+                  integrity: "sha1-000000000000000000000000000=",
+                  dependencies: {}
+              };
+              processDependencies(path.join(filePath, "node_modules"), dependencies[packageObj.name].dependencies);
+          }
+      }
+
+      function processDependencies(dir, dependencies) {
+          if(fs.existsSync(dir)) {
+              var files = fs.readdirSync(dir);
+
+              files.forEach(function(entry) {
+                  var filePath = path.join(dir, entry);
+                  var stats = fs.statSync(filePath);
+
+                  if(stats.isDirectory()) {
+                      if(entry.substr(0, 1) == "@") {
+                          // When we encounter a namespace folder, augment all packages belonging to the scope
+                          var pkgFiles = fs.readdirSync(filePath);
+
+                          pkgFiles.forEach(function(entry) {
+                              if(stats.isDirectory()) {
+                                  var pkgFilePath = path.join(filePath, entry);
+                                  augmentPackageJSON(pkgFilePath, dependencies);
+                              }
+                          });
+                      } else {
+                          augmentPackageJSON(filePath, dependencies);
+                      }
+                  }
+              });
+          }
+      }
+
+      processDependencies("node_modules", lockObj.dependencies);
+
+      fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2));
+    '';
+  };
+
+  prepareAndInvokeNPM = {packageName, bypassCache, reconstructLock, npmFlags, production}:
+    let
+      forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
+    in
+    ''
+        # Pinpoint the versions of all dependencies to the ones that are actually being used
+        echo "pinpointing versions of dependencies..."
+        source $pinpointDependenciesScriptPath
+
+        # Patch the shebangs of the bundled modules to prevent them from
+        # calling executables outside the Nix store as much as possible
+        patchShebangs .
+
+        # Deploy the Node.js package by running npm install. Since the
+        # dependencies have been provided already by ourselves, it should not
+        # attempt to install them again, which is good, because we want to make
+        # it Nix's responsibility. If it needs to install any dependencies
+        # anyway (e.g. because the dependency parameters are
+        # incomplete/incorrect), it fails.
+        #
+        # The other responsibilities of NPM are kept -- version checks, build
+        # steps, postprocessing etc.
+
+        export HOME=$TMPDIR
+        cd "${packageName}"
+        runHook preRebuild
+
+        ${stdenv.lib.optionalString bypassCache ''
+          ${stdenv.lib.optionalString reconstructLock ''
+            if [ -f package-lock.json ]
+            then
+                echo "WARNING: Reconstruct lock option enabled, but a lock file already exists!"
+                echo "This will most likely result in version mismatches! We will remove the lock file and regenerate it!"
+                rm package-lock.json
+            else
+                echo "No package-lock.json file found, reconstructing..."
+            fi
+
+            node ${reconstructPackageLock}
+          ''}
+
+          node ${addIntegrityFieldsScript}
+        ''}
+
+        npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} rebuild
+
+        if [ "$dontNpmInstall" != "1" ]
+        then
+            # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
+            rm -f npm-shrinkwrap.json
+
+            npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
+        fi
+    '';
+
+  # Builds and composes an NPM package including all its dependencies
+  buildNodePackage =
+    { name
+    , packageName
+    , version
+    , dependencies ? []
+    , buildInputs ? []
+    , production ? true
+    , npmFlags ? ""
+    , dontNpmInstall ? false
+    , bypassCache ? false
+    , reconstructLock ? false
+    , preRebuild ? ""
+    , dontStrip ? true
+    , unpackPhase ? "true"
+    , buildPhase ? "true"
+    , ... }@args:
+
+    let
+      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" ];
+    in
+    stdenv.mkDerivation ({
+      name = "node_${name}-${version}";
+      buildInputs = [ tarWrapper python nodejs ]
+        ++ stdenv.lib.optional (stdenv.isLinux) utillinux
+        ++ stdenv.lib.optional (stdenv.isDarwin) libtool
+        ++ buildInputs;
+
+      inherit dontStrip; # Stripping may fail a build for some package deployments
+      inherit dontNpmInstall preRebuild unpackPhase buildPhase;
+
+      compositionScript = composePackage args;
+      pinpointDependenciesScript = pinpointDependenciesOfPackage args;
+
+      passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];
+
+      installPhase = ''
+        # Create and enter a root node_modules/ folder
+        mkdir -p $out/lib/node_modules
+        cd $out/lib/node_modules
+
+        # Compose the package and all its dependencies
+        source $compositionScriptPath
+
+        ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
+
+        # Create symlink to the deployed executable folder, if applicable
+        if [ -d "$out/lib/node_modules/.bin" ]
+        then
+            ln -s $out/lib/node_modules/.bin $out/bin
+        fi
+
+        # Create symlinks to the deployed manual page folders, if applicable
+        if [ -d "$out/lib/node_modules/${packageName}/man" ]
+        then
+            mkdir -p $out/share
+            for dir in "$out/lib/node_modules/${packageName}/man/"*
+            do
+                mkdir -p $out/share/man/$(basename "$dir")
+                for page in "$dir"/*
+                do
+                    ln -s $page $out/share/man/$(basename "$dir")
+                done
+            done
+        fi
+
+        # Run post install hook, if provided
+        runHook postInstall
+      '';
+    } // extraArgs);
+
+  # Builds a development shell
+  buildNodeShell =
+    { name
+    , packageName
+    , version
+    , src
+    , dependencies ? []
+    , buildInputs ? []
+    , production ? true
+    , npmFlags ? ""
+    , dontNpmInstall ? false
+    , bypassCache ? false
+    , reconstructLock ? false
+    , dontStrip ? true
+    , unpackPhase ? "true"
+    , buildPhase ? "true"
+    , ... }@args:
+
+    let
+      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
+
+      nodeDependencies = stdenv.mkDerivation ({
+        name = "node-dependencies-${name}-${version}";
+
+        buildInputs = [ tarWrapper python nodejs ]
+          ++ stdenv.lib.optional (stdenv.isLinux) utillinux
+          ++ stdenv.lib.optional (stdenv.isDarwin) libtool
+          ++ buildInputs;
+
+        inherit dontStrip; # Stripping may fail a build for some package deployments
+        inherit dontNpmInstall unpackPhase buildPhase;
+
+        includeScript = includeDependencies { inherit dependencies; };
+        pinpointDependenciesScript = pinpointDependenciesOfPackage args;
+
+        passAsFile = [ "includeScript" "pinpointDependenciesScript" ];
+
+        installPhase = ''
+          mkdir -p $out/${packageName}
+          cd $out/${packageName}
+
+          source $includeScriptPath
+
+          # Create fake package.json to make the npm commands work properly
+          cp ${src}/package.json .
+          chmod 644 package.json
+          ${stdenv.lib.optionalString bypassCache ''
+            if [ -f ${src}/package-lock.json ]
+            then
+                cp ${src}/package-lock.json .
+            fi
+          ''}
+
+          # Go to the parent folder to make sure that all packages are pinpointed
+          cd ..
+          ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+
+          ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
+
+          # Expose the executables that were installed
+          cd ..
+          ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+
+          mv ${packageName} lib
+          ln -s $out/lib/node_modules/.bin $out/bin
+        '';
+      } // extraArgs);
+    in
+    stdenv.mkDerivation {
+      name = "node-shell-${name}-${version}";
+
+      buildInputs = [ python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
+      buildCommand = ''
+        mkdir -p $out/bin
+        cat > $out/bin/shell <<EOF
+        #! ${stdenv.shell} -e
+        $shellHook
+        exec ${stdenv.shell}
+        EOF
+        chmod +x $out/bin/shell
+      '';
+
+      # Provide the dependencies in a development shell through the NODE_PATH environment variable
+      inherit nodeDependencies;
+      shellHook = stdenv.lib.optionalString (dependencies != []) ''
+        export NODE_PATH=$nodeDependencies/lib/node_modules
+        export PATH="$nodeDependencies/bin:$PATH"
+      '';
+    };
+in
+{
+  buildNodeSourceDist = stdenv.lib.makeOverridable buildNodeSourceDist;
+  buildNodePackage = stdenv.lib.makeOverridable buildNodePackage;
+  buildNodeShell = stdenv.lib.makeOverridable buildNodeShell;
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/node-packages.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/node-packages.nix
new file mode 100644
index 000000000000..1f968a62c9f9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/node-packages.nix
@@ -0,0 +1,1426 @@
+# This file has been generated by node2nix 1.7.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {
+    "abbrev-1.1.1" = {
+      name = "abbrev";
+      packageName = "abbrev";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz";
+        sha512 = "38s4f3id97wsb0rg9nm9zvxyq0nvwrmrpa5dzvrkp36mf5ibs98b4z6lvsbrwzzs0sbcank6c7gpp06vcwp9acfhp41rzlhi3ybsxwy";
+      };
+    };
+    "ajv-6.10.2" = {
+      name = "ajv";
+      packageName = "ajv";
+      version = "6.10.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz";
+        sha512 = "13mb943karizrqc9k4wpfs02jcrjzqyaysld4pmqacald7yj8wsjbx8gk2pbn6kc85fzjyb22x836g65fjj0mmndk2a9f878r858ysd";
+      };
+    };
+    "another-json-0.2.0" = {
+      name = "another-json";
+      packageName = "another-json";
+      version = "0.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/another-json/-/another-json-0.2.0.tgz";
+        sha1 = "b5f4019c973b6dd5c6506a2d93469cb6d32aeedc";
+      };
+    };
+    "ansi-regex-2.1.1" = {
+      name = "ansi-regex";
+      packageName = "ansi-regex";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
+        sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
+      };
+    };
+    "aproba-1.2.0" = {
+      name = "aproba";
+      packageName = "aproba";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz";
+        sha512 = "13mgnbmdhdq0qncijvpip1l39q1a8labcvj3hc3n1yl2zch106mdkn7p7bd5knvmfkkn1js9nd47nzyjk1himbm8ry8i8gd6mk7mlk3";
+      };
+    };
+    "are-we-there-yet-1.1.5" = {
+      name = "are-we-there-yet";
+      packageName = "are-we-there-yet";
+      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";
+      };
+    };
+    "asn1-0.2.4" = {
+      name = "asn1";
+      packageName = "asn1";
+      version = "0.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz";
+        sha512 = "1v2z1ll0l8rif8hh0d03jc49kz3p8hym63q8ixbas48w4a8akl413hwn08nx83m89sj3mxl06aa0grp7n8hj6hcbsb2k3fhj913674g";
+      };
+    };
+    "assert-plus-1.0.0" = {
+      name = "assert-plus";
+      packageName = "assert-plus";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
+        sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
+      };
+    };
+    "asynckit-0.4.0" = {
+      name = "asynckit";
+      packageName = "asynckit";
+      version = "0.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
+        sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
+      };
+    };
+    "aws-sign2-0.7.0" = {
+      name = "aws-sign2";
+      packageName = "aws-sign2";
+      version = "0.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
+        sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
+      };
+    };
+    "aws4-1.9.0" = {
+      name = "aws4";
+      packageName = "aws4";
+      version = "1.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/aws4/-/aws4-1.9.0.tgz";
+        sha512 = "3h6cs1b1kw3rsfczqb8jzjlsha24ax4hyhgrk4smwj1i66lgc63kv03cvkn7zbivqvnrpmk640mp3c1bnmm49v1v40kvl5xay2vmyjj";
+      };
+    };
+    "balanced-match-1.0.0" = {
+      name = "balanced-match";
+      packageName = "balanced-match";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
+        sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
+      };
+    };
+    "bcrypt-pbkdf-1.0.2" = {
+      name = "bcrypt-pbkdf";
+      packageName = "bcrypt-pbkdf";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
+        sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
+      };
+    };
+    "brace-expansion-1.1.11" = {
+      name = "brace-expansion";
+      packageName = "brace-expansion";
+      version = "1.1.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
+        sha512 = "248cnpbbf0p32h53rd3g8wzpgrkaj4p078ra1g6l16f82i6bzkvmhwqan5rk88apbll9ly1476kngd7f7z27i3b3zxpbb3064f8yaw8";
+      };
+    };
+    "browser-request-0.3.3" = {
+      name = "browser-request";
+      packageName = "browser-request";
+      version = "0.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/browser-request/-/browser-request-0.3.3.tgz";
+        sha1 = "9ece5b5aca89a29932242e18bf933def9876cc17";
+      };
+    };
+    "caseless-0.12.0" = {
+      name = "caseless";
+      packageName = "caseless";
+      version = "0.12.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
+        sha1 = "1b681c21ff84033c826543090689420d187151dc";
+      };
+    };
+    "chownr-1.1.3" = {
+      name = "chownr";
+      packageName = "chownr";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz";
+        sha512 = "1gqsfnpd5kpc4vi8v5b2dr480pk56d674a49bi0505qrjf9iash3n016cyz7qq1iwa41qny8dixp24w9vvam9sy9vnp0mv6g1a1zgcb";
+      };
+    };
+    "code-point-at-1.1.0" = {
+      name = "code-point-at";
+      packageName = "code-point-at";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz";
+        sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
+      };
+    };
+    "combined-stream-1.0.8" = {
+      name = "combined-stream";
+      packageName = "combined-stream";
+      version = "1.0.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz";
+        sha512 = "1v09nkip7zpn3k3prkkg53w331rhczpfgcqb0q42i97nafra43l2khl5zvhd4ar0qmh145nmw7944jy8p108ny0xpgy29gf2wqph0qm";
+      };
+    };
+    "concat-map-0.0.1" = {
+      name = "concat-map";
+      packageName = "concat-map";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
+        sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
+      };
+    };
+    "console-control-strings-1.1.0" = {
+      name = "console-control-strings";
+      packageName = "console-control-strings";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz";
+        sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
+      };
+    };
+    "core-util-is-1.0.2" = {
+      name = "core-util-is";
+      packageName = "core-util-is";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
+        sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
+      };
+    };
+    "dashdash-1.14.1" = {
+      name = "dashdash";
+      packageName = "dashdash";
+      version = "1.14.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
+        sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
+      };
+    };
+    "debug-3.2.6" = {
+      name = "debug";
+      packageName = "debug";
+      version = "3.2.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz";
+        sha512 = "1cyv14044rfh792n1hhsa44kk8dk95zk14w96i49gwq6g9wi6h9vn90xaragfy7rvggqvj178l5f16c78g47xgrwhjx3bp7zs6pxscr";
+      };
+    };
+    "deep-extend-0.6.0" = {
+      name = "deep-extend";
+      packageName = "deep-extend";
+      version = "0.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz";
+        sha512 = "0wc0sqg1aqx864bxf8xa4j8ncrc8rcvmiaj1sp3x1np2i8hdjybzjfd0w9gbf1yasmwycwzzg1mz6smr3q42hhv4pjx2qcgwqhg3q9c";
+      };
+    };
+    "delayed-stream-1.0.0" = {
+      name = "delayed-stream";
+      packageName = "delayed-stream";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
+        sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
+      };
+    };
+    "delegates-1.0.0" = {
+      name = "delegates";
+      packageName = "delegates";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz";
+        sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
+      };
+    };
+    "detect-libc-1.0.3" = {
+      name = "detect-libc";
+      packageName = "detect-libc";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz";
+        sha1 = "fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b";
+      };
+    };
+    "ecc-jsbn-0.1.2" = {
+      name = "ecc-jsbn";
+      packageName = "ecc-jsbn";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
+        sha1 = "3a83a904e54353287874c564b7549386849a98c9";
+      };
+    };
+    "encoding-0.1.12" = {
+      name = "encoding";
+      packageName = "encoding";
+      version = "0.1.12";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz";
+        sha1 = "538b66f3ee62cd1ab51ec323829d1f9480c74beb";
+      };
+    };
+    "extend-3.0.2" = {
+      name = "extend";
+      packageName = "extend";
+      version = "3.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
+        sha512 = "3zad2109w3q3gh46s5msrnzfy2nl581sqpy20b52fs7v5pdjh3irpg7szl3xvh4sfy63218jy8ry6qlnir3baxbbfrb03swkw5swfky";
+      };
+    };
+    "extsprintf-1.3.0" = {
+      name = "extsprintf";
+      packageName = "extsprintf";
+      version = "1.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
+        sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
+      };
+    };
+    "fast-deep-equal-2.0.1" = {
+      name = "fast-deep-equal";
+      packageName = "fast-deep-equal";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz";
+        sha1 = "7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49";
+      };
+    };
+    "fast-json-stable-stringify-2.0.0" = {
+      name = "fast-json-stable-stringify";
+      packageName = "fast-json-stable-stringify";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz";
+        sha1 = "d5142c0caee6b1189f87d3a76111064f86c8bbf2";
+      };
+    };
+    "forever-agent-0.6.1" = {
+      name = "forever-agent";
+      packageName = "forever-agent";
+      version = "0.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
+        sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
+      };
+    };
+    "form-data-2.3.3" = {
+      name = "form-data";
+      packageName = "form-data";
+      version = "2.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz";
+        sha512 = "0jj3hgqp9pmxmfavx6rvdfl3r4yf98clpsarqadz3hq0dxhjlh2ppd9x8bvmaq3nwjdqpdvqx25pwyin4ipixhgsn7s3p9fcc3wllnn";
+      };
+    };
+    "fs-minipass-1.2.7" = {
+      name = "fs-minipass";
+      packageName = "fs-minipass";
+      version = "1.2.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz";
+        sha512 = "1644yfnzfqikaff5s68dm4qfrblxrz68ynigkyzyixjqazxlli0svj1nxkawz35sv2vb3vjh41f1rhg0j4nr770a53fzqbjc4j94r0r";
+      };
+    };
+    "fs.realpath-1.0.0" = {
+      name = "fs.realpath";
+      packageName = "fs.realpath";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
+        sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
+      };
+    };
+    "gauge-2.7.4" = {
+      name = "gauge";
+      packageName = "gauge";
+      version = "2.7.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz";
+        sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
+      };
+    };
+    "getpass-0.1.7" = {
+      name = "getpass";
+      packageName = "getpass";
+      version = "0.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
+        sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
+      };
+    };
+    "glob-7.1.6" = {
+      name = "glob";
+      packageName = "glob";
+      version = "7.1.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz";
+        sha512 = "020qv13jbi1v4y5xavf6fw08h9svy4q9p67m4avkrrhgdjmk0c5k3h19bv7k6yn1vfxljpjw9kg81fbdg9v83cjplxvkn3v4v1v21ig";
+      };
+    };
+    "graceful-fs-4.2.3" = {
+      name = "graceful-fs";
+      packageName = "graceful-fs";
+      version = "4.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz";
+        sha512 = "12xdl6ai5jdxcpcavw2hk4zpiknz7g7f2cvgawzwlzv7cy7qf7riq8ymkgqdqxjkpl1mg627dxa65zc9b0yqhflsmqlfg5q3481azbb";
+      };
+    };
+    "har-schema-2.0.0" = {
+      name = "har-schema";
+      packageName = "har-schema";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
+        sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
+      };
+    };
+    "har-validator-5.1.3" = {
+      name = "har-validator";
+      packageName = "har-validator";
+      version = "5.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz";
+        sha512 = "3kaldgfsh3lfvgvw31s8b7q345zf7ixjahllncdckcw6qfs3gnbsamdxgs9kfigq7rwmja7v51ghh7y0rsp6q7jmvmbydhh645wxnxh";
+      };
+    };
+    "has-unicode-2.0.1" = {
+      name = "has-unicode";
+      packageName = "has-unicode";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz";
+        sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
+      };
+    };
+    "http-signature-1.2.0" = {
+      name = "http-signature";
+      packageName = "http-signature";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
+        sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
+      };
+    };
+    "iconv-lite-0.4.24" = {
+      name = "iconv-lite";
+      packageName = "iconv-lite";
+      version = "0.4.24";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz";
+        sha512 = "2n3ygx6km56rdcd5kq52bs2113xqm3vlw2kb9r7pnmxd2qhxrfahp2ngc4w7x8x76fyfpapnixnbjq1i24nc11mj6q7rghwj2fifwxz";
+      };
+    };
+    "ignore-walk-3.0.3" = {
+      name = "ignore-walk";
+      packageName = "ignore-walk";
+      version = "3.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz";
+        sha512 = "0mlk9s23jc3avly1bv6s5j7hs0aafxabmgn7iqi0bjag4b03nqckvcdrgnarpmysdq8yr1rgxh6k7p82vzjj1z6hnm5ckwswg33mflv";
+      };
+    };
+    "imurmurhash-0.1.4" = {
+      name = "imurmurhash";
+      packageName = "imurmurhash";
+      version = "0.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz";
+        sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea";
+      };
+    };
+    "inflight-1.0.6" = {
+      name = "inflight";
+      packageName = "inflight";
+      version = "1.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
+        sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
+      };
+    };
+    "inherits-2.0.4" = {
+      name = "inherits";
+      packageName = "inherits";
+      version = "2.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";
+        sha512 = "30rw2i1k63pbf0n5dbwly05h95cdp1kj8c9r15gv1cwha141g61k56fx4qwsvhpm1ksnf7agch1wxirs3s0m31wbfvmcqizgrlwdywk";
+      };
+    };
+    "ini-1.3.5" = {
+      name = "ini";
+      packageName = "ini";
+      version = "1.3.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz";
+        sha512 = "1rjbvf1rg5ywhnba08sgagn2qf23lab330qrqmh7d891zap3xpxcyfyj1cblpf0f0rypglcfacybzyrpd4996aa1mbc820awa33k5j5";
+      };
+    };
+    "is-fullwidth-code-point-1.0.0" = {
+      name = "is-fullwidth-code-point";
+      packageName = "is-fullwidth-code-point";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
+        sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
+      };
+    };
+    "is-stream-1.1.0" = {
+      name = "is-stream";
+      packageName = "is-stream";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz";
+        sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
+      };
+    };
+    "is-typedarray-1.0.0" = {
+      name = "is-typedarray";
+      packageName = "is-typedarray";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
+        sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
+      };
+    };
+    "isarray-1.0.0" = {
+      name = "isarray";
+      packageName = "isarray";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
+        sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
+      };
+    };
+    "isstream-0.1.2" = {
+      name = "isstream";
+      packageName = "isstream";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
+        sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
+      };
+    };
+    "jsbn-0.1.1" = {
+      name = "jsbn";
+      packageName = "jsbn";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
+        sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
+      };
+    };
+    "json-schema-0.2.3" = {
+      name = "json-schema";
+      packageName = "json-schema";
+      version = "0.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
+        sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
+      };
+    };
+    "json-schema-traverse-0.4.1" = {
+      name = "json-schema-traverse";
+      packageName = "json-schema-traverse";
+      version = "0.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
+        sha512 = "1bbgxs4777gn3q3yxi0n792cgz9pimf85pypr0w4wzpb22nr8fl9xi98pkcqd3n4fn7lnzffpq7qwpcl4dqc15py19lwqa2jwgw5dn5";
+      };
+    };
+    "json-stringify-safe-5.0.1" = {
+      name = "json-stringify-safe";
+      packageName = "json-stringify-safe";
+      version = "5.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
+        sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
+      };
+    };
+    "jsprim-1.4.1" = {
+      name = "jsprim";
+      packageName = "jsprim";
+      version = "1.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
+        sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
+      };
+    };
+    "marked-0.6.3" = {
+      name = "marked";
+      packageName = "marked";
+      version = "0.6.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/marked/-/marked-0.6.3.tgz";
+        sha512 = "0wnipqyl61ks0g90fa5pmgmzjcc16j8mbvs1h5s9lbqskdp7b76wwxr7xglzqrizggpilwd8pih983ynav61cramv61fswlmxxbp9hn";
+      };
+    };
+    "matrix-js-sdk-0.7.13" = {
+      name = "matrix-js-sdk";
+      packageName = "matrix-js-sdk";
+      version = "0.7.13";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-0.7.13.tgz";
+        sha1 = "283accc710009f5a0b02367682f2e86155fd00c4";
+      };
+    };
+    "mime-db-1.42.0" = {
+      name = "mime-db";
+      packageName = "mime-db";
+      version = "1.42.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz";
+        sha512 = "1hipkh3wjfb7m6qid0nrqdas0bj5c2hj3123pcwhcdb1qxxwyacnidn1nhdp01nnrkycwzymrf81jg6yin24pyah16m808l3q4wkdsi";
+      };
+    };
+    "mime-types-2.1.25" = {
+      name = "mime-types";
+      packageName = "mime-types";
+      version = "2.1.25";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz";
+        sha512 = "1b88jc29kn9ksarmd9ad8d4y4q1cn977g7nvfqyj7grmsll6y9zlfx4wwpcq0426y8dgvm412fhr9n1401h92kag3099ikrl2v55a74";
+      };
+    };
+    "minimatch-3.0.4" = {
+      name = "minimatch";
+      packageName = "minimatch";
+      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";
+      };
+    };
+    "minimist-1.2.0" = {
+      name = "minimist";
+      packageName = "minimist";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz";
+        sha1 = "a35008b20f41383eec1fb914f4cd5df79a264284";
+      };
+    };
+    "minipass-2.9.0" = {
+      name = "minipass";
+      packageName = "minipass";
+      version = "2.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz";
+        sha512 = "1x0k2ycn1r5fig2zy7jj5vjsc7sxdl2a8lidvzsfyhcbrmvyvlbkmb3ga6l8njclvhjz2yrcx57jn26bckzrms017zb2yan1y7d85y3";
+      };
+    };
+    "minizlib-1.3.3" = {
+      name = "minizlib";
+      packageName = "minizlib";
+      version = "1.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz";
+        sha512 = "3slcgy5kqasjl8k1n2indaaw0k6j2ipapzxrcqyy2zrwpv8z9w2im5i8c2c73pqdgkd31rwf5bajgv4pm2i6m9jg51cfmp694w0r5p9";
+      };
+    };
+    "mkdirp-0.5.1" = {
+      name = "mkdirp";
+      packageName = "mkdirp";
+      version = "0.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
+        sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
+      };
+    };
+    "ms-2.1.2" = {
+      name = "ms";
+      packageName = "ms";
+      version = "2.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
+        sha512 = "3dqfiiw6nxvvi24fndbzlccnjcas99bsd1kz5m2r78lzgpp6vx57jzbmxq3k1m7bsw88rwra0n4848l720fxxn5x20djck3wp3hysdh";
+      };
+    };
+    "mustache-2.3.2" = {
+      name = "mustache";
+      packageName = "mustache";
+      version = "2.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mustache/-/mustache-2.3.2.tgz";
+        sha512 = "1aihy6k9338c8w0cip0c3v4s2h5yqd8xksqrv17rjybj01nsrpplbniiv09fvjadwhbyjbhkr82lyx3gyidcli0zp73sqrcsk0hv4ra";
+      };
+    };
+    "nan-2.14.0" = {
+      name = "nan";
+      packageName = "nan";
+      version = "2.14.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz";
+        sha512 = "115f4m91pjscflwskc29clsspd2z02gdbz0dbj63ja8bf67nraw14gvppl4872y9z2f5vbjlkpg1i4625zvalx3gp04vvn2gs7qblr0";
+      };
+    };
+    "needle-2.4.0" = {
+      name = "needle";
+      packageName = "needle";
+      version = "2.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz";
+        sha512 = "1k9220dhvc3m78hzd1xh2135p19z15y964hmhsajayvj11j2p3rv5w0gii7lmgr8w57bqkjg0xby5f1gkcph60kxvyr52z6pp7g0yg0";
+      };
+    };
+    "node-fetch-1.7.3" = {
+      name = "node-fetch";
+      packageName = "node-fetch";
+      version = "1.7.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz";
+        sha512 = "0lz5m15w7qaks0a0s3dm0crsjrsd123dy00pn6qwcp50zfjykxkp22i5ymh6smlc0ags38nmdxlxw9yyq509azlv8kcdvdiq857h5in";
+      };
+    };
+    "node-localstorage-1.3.1" = {
+      name = "node-localstorage";
+      packageName = "node-localstorage";
+      version = "1.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/node-localstorage/-/node-localstorage-1.3.1.tgz";
+        sha512 = "1lwiz287h6lgv0xjnz0n1fzj3bpq1rbxawlrddympi9hrwwji839wwk6y7w36k2nrkpaq86z3n2nbysad9mmwlk9z3rds4wcm4q5i9l";
+      };
+    };
+    "node-pre-gyp-0.11.0" = {
+      name = "node-pre-gyp";
+      packageName = "node-pre-gyp";
+      version = "0.11.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz";
+        sha512 = "38q9mq0yq7pjnlqnxjiq8qz38jrgj7rccdf4n6dk95zwamncxmvb88192zabdccpnjhvd9rl4nmqxn727mzb7v6g2yvg3zljqwq01ag";
+      };
+    };
+    "nopt-4.0.1" = {
+      name = "nopt";
+      packageName = "nopt";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz";
+        sha1 = "d0d4685afd5415193c8c7505602d0d17cd64474d";
+      };
+    };
+    "npm-bundled-1.0.6" = {
+      name = "npm-bundled";
+      packageName = "npm-bundled";
+      version = "1.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz";
+        sha512 = "395ysq8prylnnimwxy4w37dwaxlk56dxwdc4jif41qghhcpdmignikigrpg6sfxxb0mr92z2p1kbad72sqxmcjfzrzvgha7zdll5wpk";
+      };
+    };
+    "npm-packlist-1.4.6" = {
+      name = "npm-packlist";
+      packageName = "npm-packlist";
+      version = "1.4.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.6.tgz";
+        sha512 = "2b0xwi30n7mqd43xc06yx3ck4j7ny8xaph36qs1zj2zxr64bn6m79cxfd9vxawcqpkdcy1apf1mfvc120wgqqa2pi30pazysr0nxbmv";
+      };
+    };
+    "npmlog-4.1.2" = {
+      name = "npmlog";
+      packageName = "npmlog";
+      version = "4.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz";
+        sha512 = "2967mavp7zw0aawf5fadqf4pmn7vy5gya1yx2s9wwppvivhd9q4mpdnszfqvd7p6yks649bwbpj8iviw86g0hpp4f93d5ca7dmjmrfs";
+      };
+    };
+    "number-is-nan-1.0.1" = {
+      name = "number-is-nan";
+      packageName = "number-is-nan";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz";
+        sha1 = "097b602b53422a522c1afb8790318336941a011d";
+      };
+    };
+    "oauth-sign-0.9.0" = {
+      name = "oauth-sign";
+      packageName = "oauth-sign";
+      version = "0.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz";
+        sha512 = "1jz644r7ybsq688ifahm64ih3ljqjjskm533bgir20pvc350f9cl0z162scih0r1idx8lpw5f8hxa2pkf0lhbdhr5y6ak2ga5863v3x";
+      };
+    };
+    "object-assign-4.1.1" = {
+      name = "object-assign";
+      packageName = "object-assign";
+      version = "4.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
+        sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
+      };
+    };
+    "olm-https://packages.matrix.org/npm/olm/olm-2.3.0.tgz" = {
+      name = "olm";
+      packageName = "olm";
+      version = "2.3.0";
+      src = fetchurl {
+        name = "olm-2.3.0.tar.gz";
+        url = "https://packages.matrix.org/npm/olm/olm-2.3.0.tgz";
+        sha256 = "1f0f037a025a44509646cb849ded7c1a1f55e7bfed240fad19676c002fcd953a";
+      };
+    };
+    "once-1.4.0" = {
+      name = "once";
+      packageName = "once";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
+        sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
+      };
+    };
+    "os-homedir-1.0.2" = {
+      name = "os-homedir";
+      packageName = "os-homedir";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz";
+        sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
+      };
+    };
+    "os-tmpdir-1.0.2" = {
+      name = "os-tmpdir";
+      packageName = "os-tmpdir";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
+        sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
+      };
+    };
+    "osenv-0.1.5" = {
+      name = "osenv";
+      packageName = "osenv";
+      version = "0.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz";
+        sha512 = "3ddw0y41pxv08ls5xhmq1bi81hppjbr45k78cjfx99vznh5znrj5g1b1wab9caj1mqlsvmfms0zm9cfb47ygm0d8wv5fccx8049q9fh";
+      };
+    };
+    "path-is-absolute-1.0.1" = {
+      name = "path-is-absolute";
+      packageName = "path-is-absolute";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
+        sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
+      };
+    };
+    "performance-now-2.1.0" = {
+      name = "performance-now";
+      packageName = "performance-now";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
+        sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
+      };
+    };
+    "process-nextick-args-2.0.1" = {
+      name = "process-nextick-args";
+      packageName = "process-nextick-args";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
+        sha512 = "1mgan8li4i2l4y7lsr7snks85n6xg5x693cqmzpid3fkk9br7v5xzgvh1zlfs08zkxn6s0n6qhykr64mszjfyxd77dhmdi1jhx992yy";
+      };
+    };
+    "psl-1.4.0" = {
+      name = "psl";
+      packageName = "psl";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz";
+        sha512 = "0bjwkcvqqwlhg86aa7pmd3n65y9hhiv5np25mw6g2phqx3mp9iv0d8sxl8r2j50hiniwz00k569h8hdxsviry8ql7r54w6ycc4fm70x";
+      };
+    };
+    "punycode-1.4.1" = {
+      name = "punycode";
+      packageName = "punycode";
+      version = "1.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz";
+        sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
+      };
+    };
+    "punycode-2.1.1" = {
+      name = "punycode";
+      packageName = "punycode";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz";
+        sha512 = "381vqgh5xkqzrr6cxbzfykgnnk83m7qgpx3wjwj1hddn3sg2aibjxyr30rajpgv4js0cqknrbzwbfk5ryhiiyigzfjrk3zysy6i26sx";
+      };
+    };
+    "q-1.5.1" = {
+      name = "q";
+      packageName = "q";
+      version = "1.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/q/-/q-1.5.1.tgz";
+        sha1 = "7e32f75b41381291d04611f1bf14109ac00651d7";
+      };
+    };
+    "qs-6.5.2" = {
+      name = "qs";
+      packageName = "qs";
+      version = "6.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz";
+        sha512 = "0c46ws0x9g3mmkgfmvd78bzvnmv2b8ryg4ah6jvyyqgjv9v994z7xdyvsc4vg9sf98gg7phvy3q1ahgaj5fy3dwzf2rki6bixgl15ip";
+      };
+    };
+    "rc-1.2.8" = {
+      name = "rc";
+      packageName = "rc";
+      version = "1.2.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz";
+        sha512 = "0xhy1n9n3y6cp28f8f0f2mi0xzc7ay1g5nhbp64fyvcwv9q30zq2zvyc5q2d0al8aa0hx101yq2y6d2ln4r5jxnqifh1pd3la1ccxnb";
+      };
+    };
+    "readable-stream-2.3.6" = {
+      name = "readable-stream";
+      packageName = "readable-stream";
+      version = "2.3.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz";
+        sha512 = "0mj9b6190amln9rg89x5pq2n195s3v0gzicpdamv1kbabg69aw5m71l34jsjn7bqil7405l6l35x9ijnb3h4jz5vx2i00l8sl1ll2xm";
+      };
+    };
+    "request-2.88.0" = {
+      name = "request";
+      packageName = "request";
+      version = "2.88.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/request/-/request-2.88.0.tgz";
+        sha512 = "2339w6v6d7n7pj0085vkfvk0864gs8kfh1kghbl3smj7s21ny3k265in140frsaipc6bvqbi4k696ic4z13d6a56dfvc653p15822il";
+      };
+    };
+    "rimraf-2.7.1" = {
+      name = "rimraf";
+      packageName = "rimraf";
+      version = "2.7.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz";
+        sha512 = "3ixwnv4h7x38jd12vyzhx6m6adnfhz1zv881allalyqs8sy3q3zgwldngk4cqslnn2d46l0g91yz8wprmzcsvas9573vp8al9ldns5r";
+      };
+    };
+    "safe-buffer-5.1.2" = {
+      name = "safe-buffer";
+      packageName = "safe-buffer";
+      version = "5.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
+        sha512 = "3xbm0dkya4bc3zwfwpdzbl8ngq0aai5ihlp2v3s39y7162c7wyvv9izj3g8hv6dy6vm2lq48lmfzygk0kxwbjb6xic7k4a329j99p8r";
+      };
+    };
+    "safe-buffer-5.2.0" = {
+      name = "safe-buffer";
+      packageName = "safe-buffer";
+      version = "5.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz";
+        sha512 = "1pb164cfv1ip3s1rp008433rak88mdcch24q84cbfndg0dzky2ij8vjvsiyx2qf3rg4dgs82zk7vnrd9hkqqdcvp4lbk5ymcr8314bx";
+      };
+    };
+    "safer-buffer-2.1.2" = {
+      name = "safer-buffer";
+      packageName = "safer-buffer";
+      version = "2.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
+        sha512 = "2v99f22kh56y72d3s8wrgdvf5n10ry40dh3fwnsxr4d5rfvxdfxfmc3qyqkscnj4f8799jy9bpg6cm21x2d811dr9ib83wjrlmkg6k1";
+      };
+    };
+    "sax-1.2.4" = {
+      name = "sax";
+      packageName = "sax";
+      version = "1.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz";
+        sha512 = "1dn291mjsda42w8kldlbmngk6dhjxfbvvd5lckyqmwbjaj6069iq3wx0nvcfglwnpddz2qa93lzf4hv77iz43bd2qixa079sjzl799n";
+      };
+    };
+    "semver-5.7.1" = {
+      name = "semver";
+      packageName = "semver";
+      version = "5.7.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz";
+        sha512 = "0cl68vp0ymkjpvim4s24v3awyk37d1bfbqrqv4ybwfi8yxga3d8fma2d6bh8dd4i2dsfwca324vaxm5dms61kdlmihdarfgzw6rmaxi";
+      };
+    };
+    "set-blocking-2.0.0" = {
+      name = "set-blocking";
+      packageName = "set-blocking";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz";
+        sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
+      };
+    };
+    "signal-exit-3.0.2" = {
+      name = "signal-exit";
+      packageName = "signal-exit";
+      version = "3.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz";
+        sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
+      };
+    };
+    "slide-1.1.6" = {
+      name = "slide";
+      packageName = "slide";
+      version = "1.1.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz";
+        sha1 = "56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707";
+      };
+    };
+    "sqlite3-4.1.0" = {
+      name = "sqlite3";
+      packageName = "sqlite3";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sqlite3/-/sqlite3-4.1.0.tgz";
+        sha512 = "1my61d8alqzqpi3xm9qvkb3sqvypxa511xq72h2v4f9p04zvw75rcz4jn9h1ajxldwnmnalwy5pq78mdiy6jfwsn33r1wmy38msiyj6";
+      };
+    };
+    "sshpk-1.16.1" = {
+      name = "sshpk";
+      packageName = "sshpk";
+      version = "1.16.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz";
+        sha512 = "0i4jnrxh6i17qij2vfki7qxmk435cnacvg363qg0hya5incfj57akgbas8zcx2cl5pds9jfgfyhqm8wlqz6damsg059gymv99aylx8x";
+      };
+    };
+    "string-width-1.0.2" = {
+      name = "string-width";
+      packageName = "string-width";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz";
+        sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
+      };
+    };
+    "string_decoder-1.1.1" = {
+      name = "string_decoder";
+      packageName = "string_decoder";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz";
+        sha512 = "315yd4vzwrwk3vwj1klf46y1cj2jbvf88066y2rnwhksb98phj46jkxixbwsp3h607w7czy7cby522s7sx8mvspdpdm3s72y2ga3x4z";
+      };
+    };
+    "strip-ansi-3.0.1" = {
+      name = "strip-ansi";
+      packageName = "strip-ansi";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
+        sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
+      };
+    };
+    "strip-json-comments-2.0.1" = {
+      name = "strip-json-comments";
+      packageName = "strip-json-comments";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz";
+        sha1 = "3c531942e908c2697c0ec344858c286c7ca0a60a";
+      };
+    };
+    "tar-4.4.13" = {
+      name = "tar";
+      packageName = "tar";
+      version = "4.4.13";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz";
+        sha512 = "10gwhmgx7fh619zv48r2lnm42qr7rw4qa9ph7142rizcn8in9dpi49jbmmv8ism60rcg1a7b4103r598jngi1rcn50sw7b8n1570rf3";
+      };
+    };
+    "tough-cookie-2.4.3" = {
+      name = "tough-cookie";
+      packageName = "tough-cookie";
+      version = "2.4.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz";
+        sha512 = "2akhyixx49dkqadghzwj53xwfa1aikf0iv04ib9zj0kbilkzxxh16j5c6vfkcwm3cy29y46q3d8lzinsy6ql2cvb1wcw31gzs9jp6s3";
+      };
+    };
+    "tunnel-agent-0.6.0" = {
+      name = "tunnel-agent";
+      packageName = "tunnel-agent";
+      version = "0.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
+        sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
+      };
+    };
+    "tweetnacl-0.14.5" = {
+      name = "tweetnacl";
+      packageName = "tweetnacl";
+      version = "0.14.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
+        sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
+      };
+    };
+    "uri-js-4.2.2" = {
+      name = "uri-js";
+      packageName = "uri-js";
+      version = "4.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz";
+        sha512 = "2fz60s71ghl56ddfiiaws81xpiidlbjk69jyjmahz190d2advy9zdbcwh5if4rgg5hxdbfxhkwiipjrnjy8w834bxsmzambd2p4b3r9";
+      };
+    };
+    "util-deprecate-1.0.2" = {
+      name = "util-deprecate";
+      packageName = "util-deprecate";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
+        sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
+      };
+    };
+    "uuid-3.3.3" = {
+      name = "uuid";
+      packageName = "uuid";
+      version = "3.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz";
+        sha512 = "14s78i0nwzf5q1xz1d5rjlsm2rk5rf75nizydkj19mhbk1hw00lwzilkncx3bqzqhsni41i88wajwmc2mxxckkjlkjhq7j6ajihsvd5";
+      };
+    };
+    "verror-1.10.0" = {
+      name = "verror";
+      packageName = "verror";
+      version = "1.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
+        sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
+      };
+    };
+    "wide-align-1.1.3" = {
+      name = "wide-align";
+      packageName = "wide-align";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz";
+        sha512 = "2224a32flpf40nhq6rj4idzkcdz0vx65bfxp90hd06db18l6fiqgxz1xnaygm3pbfb1a6v73hl8ryq4996b09zwwins0bqprx0hwsa0";
+      };
+    };
+    "wrappy-1.0.2" = {
+      name = "wrappy";
+      packageName = "wrappy";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
+        sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
+      };
+    };
+    "write-file-atomic-1.3.4" = {
+      name = "write-file-atomic";
+      packageName = "write-file-atomic";
+      version = "1.3.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz";
+        sha1 = "f807a4f0b1d9e913ae7a48112e6cc3af1991b45f";
+      };
+    };
+    "yallist-3.1.1" = {
+      name = "yallist";
+      packageName = "yallist";
+      version = "3.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz";
+        sha512 = "3ig31a6zfbdlrs3l77a8avpp17hajryhyq2xk4h3ayc4dmxch146rdk7q1s1jgx9qvmxq125r0xq2bvnq0rq63m75k9y7wglm0hd1bb";
+      };
+    };
+  };
+  node-pre-gyp = nodeEnv.buildNodePackage {
+    name = "node-pre-gyp";
+    packageName = "node-pre-gyp";
+    version = "0.14.0";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz";
+      sha512 = "32drv6q9sh4i2ff2djd1dhxxxiaiymmgycbm12wpkz9vxspnldxgmppf9sazp3c72771a1p5s4kkzgwn4w1csyz9bn4zdbdnq5w6azq";
+    };
+    dependencies = [
+      sources."abbrev-1.1.1"
+      sources."ansi-regex-2.1.1"
+      sources."aproba-1.2.0"
+      sources."are-we-there-yet-1.1.5"
+      sources."balanced-match-1.0.0"
+      sources."brace-expansion-1.1.11"
+      sources."chownr-1.1.3"
+      sources."code-point-at-1.1.0"
+      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."deep-extend-0.6.0"
+      sources."delegates-1.0.0"
+      sources."detect-libc-1.0.3"
+      sources."fs-minipass-1.2.7"
+      sources."fs.realpath-1.0.0"
+      sources."gauge-2.7.4"
+      sources."glob-7.1.6"
+      sources."has-unicode-2.0.1"
+      sources."iconv-lite-0.4.24"
+      sources."ignore-walk-3.0.3"
+      sources."inflight-1.0.6"
+      sources."inherits-2.0.4"
+      sources."ini-1.3.5"
+      sources."is-fullwidth-code-point-1.0.0"
+      sources."isarray-1.0.0"
+      sources."minimatch-3.0.4"
+      sources."minimist-0.0.8"
+      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."nopt-4.0.1"
+      sources."npm-bundled-1.0.6"
+      sources."npm-packlist-1.4.6"
+      sources."npmlog-4.1.2"
+      sources."number-is-nan-1.0.1"
+      sources."object-assign-4.1.1"
+      sources."once-1.4.0"
+      sources."os-homedir-1.0.2"
+      sources."os-tmpdir-1.0.2"
+      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.0"
+        ];
+      })
+      sources."readable-stream-2.3.6"
+      sources."rimraf-2.7.1"
+      sources."safe-buffer-5.1.2"
+      sources."safer-buffer-2.1.2"
+      sources."sax-1.2.4"
+      sources."semver-5.7.1"
+      sources."set-blocking-2.0.0"
+      sources."signal-exit-3.0.2"
+      sources."string-width-1.0.2"
+      sources."string_decoder-1.1.1"
+      sources."strip-ansi-3.0.1"
+      sources."strip-json-comments-2.0.1"
+      sources."tar-4.4.13"
+      sources."util-deprecate-1.0.2"
+      sources."wide-align-1.1.3"
+      sources."wrappy-1.0.2"
+      sources."yallist-3.1.1"
+    ];
+    buildInputs = [];
+    meta = {
+      description = "Node.js native addon binary install tool";
+      homepage = "https://github.com/mapbox/node-pre-gyp#readme";
+      license = "BSD-3-Clause";
+    };
+    production = true;
+    bypassCache = true;
+    reconstructLock = true;
+  };
+  args = {
+    name = "matrix-recorder";
+    packageName = "matrix-recorder";
+    version = "0.0.6";
+    src = fetchgit {
+      url = "https://gitlab.com/argit/matrix-recorder/";
+      rev = "006b78c8a4ddc636be8f6f1e3875b13a4a6d2c7c";
+      sha256 = "0m3kzwbrxymwl6hr981q6fsf752fqxwzbpxryx25j4lkwc23nmj3";
+    };
+    dependencies = [
+      sources."abbrev-1.1.1"
+      sources."ajv-6.10.2"
+      sources."another-json-0.2.0"
+      sources."ansi-regex-2.1.1"
+      sources."aproba-1.2.0"
+      sources."are-we-there-yet-1.1.5"
+      sources."asn1-0.2.4"
+      sources."assert-plus-1.0.0"
+      sources."asynckit-0.4.0"
+      sources."aws-sign2-0.7.0"
+      sources."aws4-1.9.0"
+      sources."balanced-match-1.0.0"
+      sources."bcrypt-pbkdf-1.0.2"
+      sources."brace-expansion-1.1.11"
+      sources."browser-request-0.3.3"
+      sources."caseless-0.12.0"
+      sources."chownr-1.1.3"
+      sources."code-point-at-1.1.0"
+      sources."combined-stream-1.0.8"
+      sources."concat-map-0.0.1"
+      sources."console-control-strings-1.1.0"
+      sources."core-util-is-1.0.2"
+      sources."dashdash-1.14.1"
+      sources."debug-3.2.6"
+      sources."deep-extend-0.6.0"
+      sources."delayed-stream-1.0.0"
+      sources."delegates-1.0.0"
+      sources."detect-libc-1.0.3"
+      sources."ecc-jsbn-0.1.2"
+      sources."encoding-0.1.12"
+      sources."extend-3.0.2"
+      sources."extsprintf-1.3.0"
+      sources."fast-deep-equal-2.0.1"
+      sources."fast-json-stable-stringify-2.0.0"
+      sources."forever-agent-0.6.1"
+      sources."form-data-2.3.3"
+      sources."fs-minipass-1.2.7"
+      sources."fs.realpath-1.0.0"
+      sources."gauge-2.7.4"
+      sources."getpass-0.1.7"
+      sources."glob-7.1.6"
+      sources."graceful-fs-4.2.3"
+      sources."har-schema-2.0.0"
+      sources."har-validator-5.1.3"
+      sources."has-unicode-2.0.1"
+      sources."http-signature-1.2.0"
+      sources."iconv-lite-0.4.24"
+      sources."ignore-walk-3.0.3"
+      sources."imurmurhash-0.1.4"
+      sources."inflight-1.0.6"
+      sources."inherits-2.0.4"
+      sources."ini-1.3.5"
+      sources."is-fullwidth-code-point-1.0.0"
+      sources."is-stream-1.1.0"
+      sources."is-typedarray-1.0.0"
+      sources."isarray-1.0.0"
+      sources."isstream-0.1.2"
+      sources."jsbn-0.1.1"
+      sources."json-schema-0.2.3"
+      sources."json-schema-traverse-0.4.1"
+      sources."json-stringify-safe-5.0.1"
+      sources."jsprim-1.4.1"
+      sources."marked-0.6.3"
+      sources."matrix-js-sdk-0.7.13"
+      sources."mime-db-1.42.0"
+      sources."mime-types-2.1.25"
+      sources."minimatch-3.0.4"
+      sources."minimist-0.0.8"
+      sources."minipass-2.9.0"
+      sources."minizlib-1.3.3"
+      sources."mkdirp-0.5.1"
+      sources."ms-2.1.2"
+      sources."mustache-2.3.2"
+      sources."nan-2.14.0"
+      sources."needle-2.4.0"
+      sources."node-fetch-1.7.3"
+      sources."node-localstorage-1.3.1"
+      sources."node-pre-gyp-0.11.0"
+      sources."nopt-4.0.1"
+      sources."npm-bundled-1.0.6"
+      sources."npm-packlist-1.4.6"
+      sources."npmlog-4.1.2"
+      sources."number-is-nan-1.0.1"
+      sources."oauth-sign-0.9.0"
+      sources."object-assign-4.1.1"
+      sources."olm-https://packages.matrix.org/npm/olm/olm-2.3.0.tgz"
+      sources."once-1.4.0"
+      sources."os-homedir-1.0.2"
+      sources."os-tmpdir-1.0.2"
+      sources."osenv-0.1.5"
+      sources."path-is-absolute-1.0.1"
+      sources."performance-now-2.1.0"
+      sources."process-nextick-args-2.0.1"
+      sources."psl-1.4.0"
+      sources."punycode-2.1.1"
+      sources."q-1.5.1"
+      sources."qs-6.5.2"
+      (sources."rc-1.2.8" // {
+        dependencies = [
+          sources."minimist-1.2.0"
+        ];
+      })
+      (sources."readable-stream-2.3.6" // {
+        dependencies = [
+          sources."safe-buffer-5.1.2"
+        ];
+      })
+      sources."request-2.88.0"
+      sources."rimraf-2.7.1"
+      sources."safe-buffer-5.2.0"
+      sources."safer-buffer-2.1.2"
+      sources."sax-1.2.4"
+      sources."semver-5.7.1"
+      sources."set-blocking-2.0.0"
+      sources."signal-exit-3.0.2"
+      sources."slide-1.1.6"
+      sources."sqlite3-4.1.0"
+      sources."sshpk-1.16.1"
+      sources."string-width-1.0.2"
+      (sources."string_decoder-1.1.1" // {
+        dependencies = [
+          sources."safe-buffer-5.1.2"
+        ];
+      })
+      sources."strip-ansi-3.0.1"
+      sources."strip-json-comments-2.0.1"
+      sources."tar-4.4.13"
+      (sources."tough-cookie-2.4.3" // {
+        dependencies = [
+          sources."punycode-1.4.1"
+        ];
+      })
+      sources."tunnel-agent-0.6.0"
+      sources."tweetnacl-0.14.5"
+      sources."uri-js-4.2.2"
+      sources."util-deprecate-1.0.2"
+      sources."uuid-3.3.3"
+      sources."verror-1.10.0"
+      sources."wide-align-1.1.3"
+      sources."wrappy-1.0.2"
+      sources."write-file-atomic-1.3.4"
+      sources."yallist-3.1.1"
+    ];
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "A recorder that can record Matrix rooms you are a member of (including E2E-encrypted rooms).";
+      license = "MIT";
+    };
+    production = true;
+    bypassCache = true;
+    reconstructLock = true;
+  };
+in
+{
+  tarball = nodeEnv.buildNodeSourceDist args;
+  package = nodeEnv.buildNodePackage args;
+  shell = nodeEnv.buildNodeShell args;
+  inherit node-pre-gyp;
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/package.json b/nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/package.json
new file mode 100644
index 000000000000..fc03d636ad21
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/matrix-recorder/package.json
@@ -0,0 +1,27 @@
+{
+  "name": "matrix-recorder",
+  "version": "0.0.6",
+  "description": "A recorder that can record Matrix rooms you are a member of (including E2E-encrypted rooms).",
+  "author": "Hello Matrix <hello@hello-matrix.net>",
+  "main": "matrix-recorder.js",
+  "scripts": {
+    "start": "node matrix-recorder.js"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://gitlab.com/argit/matrix-recorder.git"
+  },
+  "dependencies": {
+    "marked": "^0.6.2",
+    "matrix-js-sdk": "^0.7.13",
+    "mime-types": "^2.1.14",
+    "mustache": "^2.3.0",
+    "node-fetch": "^1.6.3",
+    "node-localstorage": "^1.3.0",
+    "sqlite3": "^4.0.7",
+    "olm": "https://packages.matrix.org/npm/olm/olm-2.3.0.tgz"
+  },
+  "license": "MIT",
+  "optionalDependencies": {
+  }
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/matrixcli/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/matrixcli/default.nix
new file mode 100644
index 000000000000..54b7ef2bd991
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/matrixcli/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchgit
+  , buildPythonApplication, buildPythonPackage
+  , pygobject3, pytestrunner, requests, responses, pytest, python-olm
+  , canonicaljson, olm
+}:
+let
+  mainsrc = fetchgit {
+    url = "https://github.com/saadnpq/matrixcli";
+    rev = "61ebde173ca2f77185c261c2b7f6db297ca89863";
+    sha256 = "0xcjjy2xwlcixr9fwgzcfjjkivqpk104h7dslfa7lz9jq9pzqzvq";
+    fetchSubmodules = true;
+  };
+
+  sdk = buildPythonPackage rec {
+    name = "${pname}-${version}";
+    pname = "matrix-python-sdk-matrixcli";
+    version = "0.0.2019-08-15";
+    
+    src = "${mainsrc}/matrix-python-sdk/";
+
+    propagatedBuildInputs = [
+      requests responses olm python-olm canonicaljson
+      pytestrunner pytest
+    ];
+
+    doCheck = false;
+    doInstallCheck = false;
+
+    meta = {
+      license = stdenv.lib.licenses.asl20;
+      description = "Fork of Matrix Python SDK";
+      platforms = stdenv.lib.platforms.linux;
+    };
+  };
+
+in
+buildPythonApplication rec {
+  name = "${pname}-${version}";
+  pname = "matrixcli";
+  version = "0.0.2019-08-15";
+
+  src = mainsrc;
+
+  propagatedBuildInputs = [pygobject3 sdk];
+
+  meta = {
+    description = "CLI client for Matrix";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    homepage = "https://github.com/saadnpq/matrixcli";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mattermost-desktop/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/mattermost-desktop/default.nix
new file mode 100644
index 000000000000..0a41c9666b68
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mattermost-desktop/default.nix
@@ -0,0 +1,98 @@
+{ stdenv, fetchurl, gnome2, gtk3, pango, atk, cairo, gdk-pixbuf, glib,
+freetype, fontconfig, dbus, libX11, xorg, libXi, libXcursor, libXdamage,
+libXrandr, libXcomposite, libXext, libXfixes, libXrender, libXtst,
+libXScrnSaver, nss, nspr, alsaLib, cups, expat, udev, wrapGAppsHook,
+hicolor-icon-theme, libuuid, at-spi2-core, at-spi2-atk }:
+
+let
+  rpath = stdenv.lib.makeLibraryPath [
+    alsaLib
+    at-spi2-atk
+    at-spi2-core
+    atk
+    cairo
+    cups
+    dbus
+    expat
+    fontconfig
+    freetype
+    gdk-pixbuf
+    glib
+    gnome2.GConf
+    gtk3
+    pango
+    libuuid
+    libX11
+    libXScrnSaver
+    libXcomposite
+    libXcursor
+    libXdamage
+    libXext
+    libXfixes
+    libXi
+    libXrandr
+    libXrender
+    libXtst
+    nspr
+    nss
+    stdenv.cc.cc
+    udev
+    xorg.libxcb
+  ];
+
+in
+  stdenv.mkDerivation rec {
+    pname = "mattermost-desktop";
+    version = "4.3.1";
+
+    src =
+      if stdenv.hostPlatform.system == "x86_64-linux" then
+        fetchurl {
+          url = "https://releases.mattermost.com/desktop/${version}/${pname}-${version}-linux-x64.tar.gz";
+          sha256 = "076nv5h6xscbw1987az00x493qhqgrli87gnn57zbvz0acgvlhfv";
+        }
+      else if stdenv.hostPlatform.system == "i686-linux" then
+        fetchurl {
+          url = "https://releases.mattermost.com/desktop/${version}/${pname}-${version}-linux-ia32.tar.gz";
+          sha256 = "19ps9g8j6kp4haj6r3yfy4ma2wm6isq5fa8zlcz6g042ajkqq0ij";
+        }
+      else
+        throw "Mattermost-Desktop is not currently supported on ${stdenv.hostPlatform.system}";
+
+    dontBuild = true;
+    dontConfigure = true;
+    dontPatchELF = true;
+
+    buildInputs = [ wrapGAppsHook gtk3 hicolor-icon-theme ];
+
+    installPhase = ''
+      mkdir -p $out/share/mattermost-desktop
+      cp -R . $out/share/mattermost-desktop
+
+      mkdir -p "$out/bin"
+      ln -s $out/share/mattermost-desktop/mattermost-desktop \
+        $out/bin/mattermost-desktop
+
+      patchShebangs $out/share/mattermost-desktop/create_desktop_file.sh
+      $out/share/mattermost-desktop/create_desktop_file.sh
+      rm $out/share/mattermost-desktop/create_desktop_file.sh
+      mkdir -p $out/share/applications
+      mv Mattermost.desktop $out/share/applications/Mattermost.desktop
+      substituteInPlace \
+        $out/share/applications/Mattermost.desktop \
+        --replace /share/mattermost-desktop/mattermost-desktop /bin/mattermost-desktop
+
+      patchelf \
+        --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        --set-rpath "${rpath}:$out/share/mattermost-desktop" \
+        $out/share/mattermost-desktop/mattermost-desktop
+    '';
+
+    meta = with stdenv.lib; {
+      description = "Mattermost Desktop client";
+      homepage    = "https://about.mattermost.com/";
+      license     = licenses.asl20;
+      platforms   = [ "x86_64-linux" "i686-linux" ];
+      maintainers = [ maintainers.joko ];
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mcabber/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/mcabber/default.nix
new file mode 100644
index 000000000000..98b326820b9f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mcabber/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, openssl, ncurses, pkgconfig, glib, loudmouth, libotr
+, gpgme
+}:
+
+stdenv.mkDerivation rec {
+  pname = "mcabber";
+  version = "1.1.0";
+
+  src = fetchurl {
+    url = "https://mcabber.com/files/mcabber-${version}.tar.bz2";
+    sha256 = "1ggh865p1rf10ffsnf4g6qv9i8bls36dxdb1nzs5r9vdqci2rz04";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ openssl ncurses glib loudmouth libotr gpgme ];
+
+  configureFlags = [
+    "--with-openssl=${openssl.dev}"
+    "--enable-modules"
+    "--enable-otr"
+  ];
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    homepage = "http://mcabber.com/";
+    description = "Small Jabber console client";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ pSub ];
+    platforms = with platforms; linux;
+    updateWalker = true;
+    downloadPage = "http://mcabber.com/files/";
+    downloadURLRegexp = "mcabber-[0-9.]+[.]tar[.][a-z0-9]+$";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/Gemfile b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/Gemfile
new file mode 100644
index 000000000000..216af305b4ad
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/Gemfile
@@ -0,0 +1,39 @@
+alias __source_distinct__ source
+def source(url)
+  @loaded ||= {}
+  unless @loaded[url]
+    @loaded[url] = true
+    __source_distinct__(url) end end
+
+source 'https://rubygems.org'
+
+ruby '>= 2.5.0'
+
+group :default do
+  gem 'addressable','>= 2.7.0', '< 2.8'
+  gem 'delayer','>= 1.0.1', '< 1.1'
+  gem 'delayer-deferred','>= 2.1.1', '< 2.2'
+  gem 'diva','>= 1.0.1', '< 1.1'
+  gem 'memoist','>= 0.16.2', '< 0.17'
+  gem 'oauth','>= 0.5.4'
+  gem 'pluggaloid','>= 1.2.0', '< 1.3'
+  gem 'typed-array','>= 0.1.2', '< 0.2'
+end
+
+group :test do
+  gem 'test-unit','>= 3.3.4', '< 4.0'
+  gem 'rake','>= 13.0.1'
+  gem 'mocha','>= 1.11.1'
+  gem 'webmock','>= 3.7.6'
+  gem 'ruby-prof','>= 1.1.0'
+end
+
+
+group :plugin do
+  Dir.glob(File.expand_path(File.join(__dir__, 'plugin/*/Gemfile'))){ |path|
+    eval File.open(path).read
+  }
+  Dir.glob(File.join(File.expand_path(ENV['MIKUTTER_CONFROOT'] || '~/.mikutter'), 'plugin/*/Gemfile')){ |path|
+    eval File.open(path).read
+  }
+end
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/Gemfile.lock b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/Gemfile.lock
new file mode 100644
index 000000000000..63f9a63849b1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/Gemfile.lock
@@ -0,0 +1,103 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    addressable (2.7.0)
+      public_suffix (>= 2.0.2, < 5.0)
+    atk (3.4.1)
+      glib2 (= 3.4.1)
+    cairo (1.16.4)
+      native-package-installer (>= 1.0.3)
+      pkg-config (>= 1.2.2)
+    cairo-gobject (3.4.1)
+      cairo (>= 1.16.2)
+      glib2 (= 3.4.1)
+    crack (0.4.3)
+      safe_yaml (~> 1.0.0)
+    delayer (1.0.1)
+    delayer-deferred (2.1.1)
+      delayer (>= 1.0, < 2.0)
+    diva (1.0.1)
+      addressable (>= 2.5.2, < 2.8)
+    gdk_pixbuf2 (3.4.1)
+      gio2 (= 3.4.1)
+    gettext (3.2.9)
+      locale (>= 2.0.5)
+      text (>= 1.3.0)
+    gio2 (3.4.1)
+      gobject-introspection (= 3.4.1)
+    glib2 (3.4.1)
+      native-package-installer (>= 1.0.3)
+      pkg-config (>= 1.3.5)
+    gobject-introspection (3.4.1)
+      glib2 (= 3.4.1)
+    gtk2 (3.4.1)
+      atk (= 3.4.1)
+      gdk_pixbuf2 (= 3.4.1)
+      pango (= 3.4.1)
+    hashdiff (1.0.0)
+    httpclient (2.8.3)
+    instance_storage (1.0.0)
+    io-console (0.5.3)
+    irb (1.2.1)
+      reline (>= 0.0.1)
+    locale (2.1.2)
+    memoist (0.16.2)
+    mini_portile2 (2.4.0)
+    mocha (1.11.1)
+    moneta (1.2.1)
+    native-package-installer (1.0.9)
+    nokogiri (1.10.7)
+      mini_portile2 (~> 2.4.0)
+    oauth (0.5.4)
+    pango (3.4.1)
+      cairo-gobject (= 3.4.1)
+      gobject-introspection (= 3.4.1)
+    pkg-config (1.4.0)
+    pluggaloid (1.2.0)
+      delayer (>= 1.0.0, < 2.0)
+      instance_storage (>= 1.0.0, < 2.0.0)
+    power_assert (1.1.5)
+    public_suffix (4.0.1)
+    rake (13.0.1)
+    reline (0.1.2)
+      io-console (~> 0.5)
+    ruby-prof (1.1.0)
+    safe_yaml (1.0.5)
+    test-unit (3.3.4)
+      power_assert
+    text (1.3.1)
+    typed-array (0.1.2)
+    webmock (3.7.6)
+      addressable (>= 2.3.6)
+      crack (>= 0.3.2)
+      hashdiff (>= 0.4.0, < 2.0.0)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  addressable (>= 2.7.0, < 2.8)
+  delayer (>= 1.0.1, < 1.1)
+  delayer-deferred (>= 2.1.1, < 2.2)
+  diva (>= 1.0.1, < 1.1)
+  gettext (>= 3.2.9, < 3.3)
+  gtk2 (= 3.4.1)
+  httpclient
+  irb (>= 1.2.0, < 1.3)
+  memoist (>= 0.16.2, < 0.17)
+  mocha (>= 1.11.1)
+  moneta
+  nokogiri
+  oauth (>= 0.5.4)
+  pluggaloid (>= 1.2.0, < 1.3)
+  rake (>= 13.0.1)
+  ruby-prof (>= 1.1.0)
+  test-unit (>= 3.3.4, < 4.0)
+  typed-array (>= 0.1.2, < 0.2)
+  webmock (>= 3.7.6)
+
+RUBY VERSION
+   ruby 2.7.0p0
+
+BUNDLED WITH
+   2.1.2
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/default.nix
new file mode 100644
index 000000000000..5c86157f5023
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/default.nix
@@ -0,0 +1,82 @@
+{ stdenv, fetchurl
+, bundlerEnv, ruby
+, alsaUtils, libnotify, which, wrapGAppsHook, gtk2, atk, gobject-introspection
+}:
+
+# how to update:
+# find latest version at: http://mikutter.hachune.net/download#download
+# run these commands:
+#
+# wget http://mikutter.hachune.net/bin/mikutter.4.0.0.tar.gz
+# mkdir mikutter
+# cd mikutter
+# tar xvf ../mikutter.4.0.0.tar.gz
+# find . -not -name Gemfile -exec rm {} \;
+# find . -type d -exec rmdir -p --ignore-fail-on-non-empty {} \;
+# cd ..
+# mv mikutter/* .
+# rm mikutter.4.0.0.tar.gz
+# rm gemset.nix Gemfile.lock; nix-shell -p bundler bundix --run 'bundle lock && bundix'
+
+stdenv.mkDerivation rec {
+  pname = "mikutter";
+  version = "4.0.0";
+
+  src = fetchurl {
+    url = "https://mikutter.hachune.net/bin/mikutter.${version}.tar.gz";
+    sha256 = "0nx14vlp7p69m2vw0s6kbiyymsfq0r2jd4nm0v5c4xb9avkpgc8g";
+  };
+
+  buildInputs = [ alsaUtils libnotify which gtk2 ruby atk gobject-introspection ];
+  nativeBuildInputs = [ wrapGAppsHook ];
+
+  unpackPhase = ''
+    mkdir source
+    cd source
+    unpackFile $src
+    rm -rf vendor
+  '';
+
+  installPhase = let
+    env = bundlerEnv {
+      name = "mikutter-${version}-gems";
+      gemdir = ./.;
+
+      inherit ruby;
+    };
+  in ''
+    install -v -D -m644 README $out/share/doc/mikutter/README
+    install -v -D -m644 LICENSE $out/share/doc/mikutter/LICENSE
+    rm -v README LICENSE
+
+    cp -rv . $out
+    mkdir $out/bin/
+    # hack wrapGAppsHook wants a file not a symlink
+    mv $out/mikutter.rb $out/bin/mikutter
+
+    gappsWrapperArgs+=(
+      --prefix PATH : "${ruby}/bin:${alsaUtils}/bin:${libnotify}/bin"
+      --prefix GEM_HOME : "${env}/${env.ruby.gemPath}"
+      --set DISABLE_BUNDLER_SETUP 1
+    )
+      # --prefix GIO_EXTRA_MODULES : "$prefix/lib/gio/modules"
+
+    mkdir -p $out/share/mikutter $out/share/applications
+    ln -sv $out/core/skin $out/share/mikutter/skin
+    substituteAll ${./mikutter.desktop} $out/share/applications/mikutter.desktop
+  '';
+
+  postFixup = ''
+    mv $out/bin/.mikutter-wrapped $out/mikutter.rb
+    substituteInPlace $out/bin/mikutter \
+      --replace "$out/bin/.mikutter-wrapped" "$out/mikutter.rb"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An extensible Twitter client";
+    homepage = "https://mikutter.hachune.net";
+    platforms = ruby.meta.platforms;
+    license = licenses.mit;
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/gemset.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/gemset.nix
new file mode 100644
index 000000000000..88ea97be1caf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/gemset.nix
@@ -0,0 +1,422 @@
+{
+  addressable = {
+    dependencies = ["public_suffix"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy";
+      type = "gem";
+    };
+    version = "2.7.0";
+  };
+  atk = {
+    dependencies = ["glib2"];
+    groups = ["default" "plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0a8q9a1f6x4gy55p8cf52a22bnpjgn18ad9n959x0f4gybbhs948";
+      type = "gem";
+    };
+    version = "3.4.1";
+  };
+  cairo = {
+    dependencies = ["native-package-installer" "pkg-config"];
+    groups = ["default" "plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yvv2lcbsybzbw1nrmfivmln23da4rndrs3av6ymjh0x3ww5h7p8";
+      type = "gem";
+    };
+    version = "1.16.4";
+  };
+  cairo-gobject = {
+    dependencies = ["cairo" "glib2"];
+    groups = ["default" "plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0gkxdfslcvrwrs48giilji3bgxd5bwijwq33p9h00r10jzfg2028";
+      type = "gem";
+    };
+    version = "3.4.1";
+  };
+  crack = {
+    dependencies = ["safe_yaml"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k";
+      type = "gem";
+    };
+    version = "0.4.3";
+  };
+  delayer = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09p4rkh3dpdm1mhq721m4d6zvxqqp44kg7069s8l7kmaf7nv2nb3";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  delayer-deferred = {
+    dependencies = ["delayer"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1mbdxn1hskjqf3zlj4waxl71ccvbj6lk81c99769paxw4fajwrgx";
+      type = "gem";
+    };
+    version = "2.1.1";
+  };
+  diva = {
+    dependencies = ["addressable"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "182gws1zihhpl7r3m8jsf29maqg9xdhj46s9lidbldar8clpl23h";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  gdk_pixbuf2 = {
+    dependencies = ["gio2"];
+    groups = ["default" "plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0194gzn0kialfh0j7crllvp808r64sg6dh297x69b0av21ar5pam";
+      type = "gem";
+    };
+    version = "3.4.1";
+  };
+  gettext = {
+    dependencies = ["locale" "text"];
+    groups = ["default" "plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0764vj7gacn0aypm2bf6m46dzjzwzrjlmbyx6qwwwzbmi94r40wr";
+      type = "gem";
+    };
+    version = "3.2.9";
+  };
+  gio2 = {
+    dependencies = ["gobject-introspection"];
+    groups = ["default" "plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1l3jpgbdvb55xhcmpkcqgwx5068dfyi8kijfvzhbqh96ng0p1m7g";
+      type = "gem";
+    };
+    version = "3.4.1";
+  };
+  glib2 = {
+    dependencies = ["native-package-installer" "pkg-config"];
+    groups = ["default" "plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18clyn0fp0h5alnkf9i2bqd6wvl78h468pdbzs1csqnba8vw4q1c";
+      type = "gem";
+    };
+    version = "3.4.1";
+  };
+  gobject-introspection = {
+    dependencies = ["glib2"];
+    groups = ["default" "plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1a3x8qiisbax3x0izj8l5w66r53ba5ma53ax2jhdbhbvaxx3d02n";
+      type = "gem";
+    };
+    version = "3.4.1";
+  };
+  gtk2 = {
+    dependencies = ["atk" "gdk_pixbuf2" "pango"];
+    groups = ["plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17az8g0n1yzz90kdbjg2hpabi04qccda7v6lin76bs637ivfg2md";
+      type = "gem";
+    };
+    version = "3.4.1";
+  };
+  hashdiff = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18jqpbvidrlnq3xf0hkdbs00607jgz35lry6gjw4bcxgh52am2mk";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  httpclient = {
+    groups = ["plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99";
+      type = "gem";
+    };
+    version = "2.8.3";
+  };
+  instance_storage = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08nf5fhq9dckq9lmaklxydq0hrlfi7phk66gr3bggxg45zd687pl";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  io-console = {
+    groups = ["default" "plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0srn91ly4cc5qvyj3r87sc7v8dnm52qj1hczzxmysib6ffparngd";
+      type = "gem";
+    };
+    version = "0.5.3";
+  };
+  irb = {
+    dependencies = ["reline"];
+    groups = ["default" "plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1r1y8i46qd5izdszzzn5jxvwvq00m89rk0hm8cs8f21p7nlwmh5w";
+      type = "gem";
+    };
+    version = "1.2.1";
+  };
+  locale = {
+    groups = ["default" "plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x";
+      type = "gem";
+    };
+    version = "2.1.2";
+  };
+  memoist = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0i9wpzix3sjhf6d9zw60dm4371iq8kyz7ckh2qapan2vyaim6b55";
+      type = "gem";
+    };
+    version = "0.16.2";
+  };
+  mini_portile2 = {
+    groups = ["default" "plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy";
+      type = "gem";
+    };
+    version = "2.4.0";
+  };
+  mocha = {
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06i2q5qjr9mvjgjc8w41pdf3qalw340y33wjvzc0rp4a1cbbb7pp";
+      type = "gem";
+    };
+    version = "1.11.1";
+  };
+  moneta = {
+    groups = ["plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0q7fskfdc0h5dhl8aamg3ypybd6cyl4x0prh4803gj7hxr17jfm1";
+      type = "gem";
+    };
+    version = "1.2.1";
+  };
+  native-package-installer = {
+    groups = ["default" "plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0piclgf6pw7hr10x57x0hn675djyna4sb3xc97yb9vh66wkx1fl0";
+      type = "gem";
+    };
+    version = "1.0.9";
+  };
+  nokogiri = {
+    dependencies = ["mini_portile2"];
+    groups = ["plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0r0qpgf80h764k176yr63gqbs2z0xbsp8vlvs2a79d5r9vs83kln";
+      type = "gem";
+    };
+    version = "1.10.7";
+  };
+  oauth = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zszdg8q1b135z7l7crjj234k4j0m347hywp5kj6zsq7q78pw09y";
+      type = "gem";
+    };
+    version = "0.5.4";
+  };
+  pango = {
+    dependencies = ["cairo-gobject" "gobject-introspection"];
+    groups = ["default" "plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1d0cn50qgpifrcv8qx72wi6l9xalw3ryngbfmm9xpg9vx5rl1qbp";
+      type = "gem";
+    };
+    version = "3.4.1";
+  };
+  pkg-config = {
+    groups = ["default" "plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1cxdpr2wlz9b587avlq04a1da5fz1vdw8jvr6lx23mcq7mqh2xcx";
+      type = "gem";
+    };
+    version = "1.4.0";
+  };
+  pluggaloid = {
+    dependencies = ["delayer" "instance_storage"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1gv0rjjdic8c41gfr3kyyphvf0fmv5rzcf6qd57zjdfcn6fvi3hh";
+      type = "gem";
+    };
+    version = "1.2.0";
+  };
+  power_assert = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s";
+      type = "gem";
+    };
+    version = "1.1.5";
+  };
+  public_suffix = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xnfv2j2bqgdpg2yq9i2rxby0w2sc9h5iyjkpaas2xknwrgmhdb0";
+      type = "gem";
+    };
+    version = "4.0.1";
+  };
+  rake = {
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0w6qza25bq1s825faaglkx1k6d59aiyjjk3yw3ip5sb463mhhai9";
+      type = "gem";
+    };
+    version = "13.0.1";
+  };
+  reline = {
+    dependencies = ["io-console"];
+    groups = ["default" "plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0908ijrngc3wkn5iny7d0kxkp74w6ixk2nwzzngplplfla1vkp8x";
+      type = "gem";
+    };
+    version = "0.1.2";
+  };
+  ruby-prof = {
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18ga5f4h1fnwn0xh910kpnw4cg3lq3jqljd3h16bdw9pgc5ff7dn";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  safe_yaml = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0j7qv63p0vqcd838i2iy2f76c3dgwzkiz1d1xkg7n0pbnxj2vb56";
+      type = "gem";
+    };
+    version = "1.0.5";
+  };
+  test-unit = {
+    dependencies = ["power_assert"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mrkpb6wz0cs1740kaca240k4ymmkbvb2v5xaxsy6vynqw8n0g6z";
+      type = "gem";
+    };
+    version = "3.3.4";
+  };
+  text = {
+    groups = ["default" "plugin"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg";
+      type = "gem";
+    };
+    version = "1.3.1";
+  };
+  typed-array = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qlv2rnkin9rwkgjx3k5qvc17m0m7jf5cdirw3wxbjnw5kga27w9";
+      type = "gem";
+    };
+    version = "0.1.2";
+  };
+  webmock = {
+    dependencies = ["addressable" "crack" "hashdiff"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19xvs7gdf8r75bmyb17w9g367qxzqnlrmbdda1y36cn1vrlnf2l8";
+      type = "gem";
+    };
+    version = "3.7.6";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/mikutter.desktop b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/mikutter.desktop
new file mode 100644
index 000000000000..092f5f35cbf8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/mikutter.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=mikutter
+Comment=Twitter Client
+Type=Application
+Exec=@out@/bin/mikutter
+Icon=@out@/core/skin/data/icon.png
+Terminal=false
+Categories=Network;
+Keywords=Twitter;
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/plugin/gtk/Gemfile b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/plugin/gtk/Gemfile
new file mode 100644
index 000000000000..3306c29e3cbf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/plugin/gtk/Gemfile
@@ -0,0 +1,4 @@
+source 'https://rubygems.org'
+
+gem 'gtk2', '3.4.1'
+
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/plugin/image_file_cache/Gemfile b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/plugin/image_file_cache/Gemfile
new file mode 100644
index 000000000000..f86005fef078
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/plugin/image_file_cache/Gemfile
@@ -0,0 +1 @@
+gem 'moneta'
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/plugin/photo_support/Gemfile b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/plugin/photo_support/Gemfile
new file mode 100644
index 000000000000..66016eee9c46
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/plugin/photo_support/Gemfile
@@ -0,0 +1,4 @@
+source 'https://rubygems.org'
+
+gem 'nokogiri'
+gem 'httpclient'
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/plugin/uitranslator/Gemfile b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/plugin/uitranslator/Gemfile
new file mode 100644
index 000000000000..14ebffd4e0ad
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/plugin/uitranslator/Gemfile
@@ -0,0 +1,6 @@
+source 'https://rubygems.org'
+
+group :default do
+  gem 'gettext', '>= 3.2.9', '< 3.3'
+  gem 'irb', '>= 1.2.0', '< 1.3'
+end
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mm/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/mm/default.nix
new file mode 100644
index 000000000000..3bdfcbfe7d1d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mm/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildGoPackage, fetchFromGitLab }:
+
+buildGoPackage {
+  pname = "mm";
+  version = "2016.11.04";
+
+  goPackagePath = "gitlab.com/meutraa/mm";
+
+  src = fetchFromGitLab {
+    owner = "meutraa";
+    repo = "mm";
+    rev = "473fdd97285168054b672dbad2ffc4047324c518";
+    sha256 = "1s8v5gxpw1sms1g3i8nq2x2mmmyz97qkmxs1fzlspfcd6i8vknkp";
+  };
+
+  meta = {
+    description = "A file system based matrix client";
+    homepage = "https://gitlab.com/meutraa/mm";
+    license = stdenv.lib.licenses.isc;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/nheko/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/nheko/default.nix
new file mode 100644
index 000000000000..f3b304564cbe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/nheko/default.nix
@@ -0,0 +1,82 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, fetchpatch
+, cmake
+, cmark
+, lmdb
+, lmdbxx
+, tweeny
+, mkDerivation
+, qtbase
+, qtmacextras
+, qtmultimedia
+, qttools
+, qtquickcontrols2
+, qtgraphicaleffects
+, mtxclient
+, boost17x
+, spdlog
+, olm
+, pkgconfig
+, nlohmann_json
+}:
+
+mkDerivation rec {
+  pname = "nheko";
+  version = "0.7.1";
+
+  src = fetchFromGitHub {
+    owner = "Nheko-Reborn";
+    repo = "nheko";
+    rev = "v${version}";
+    sha256 = "12sxibbrn79sxkf9jrm7jrlj7l5vz15claxrrll7pkv9mv44wady";
+  };
+
+  nativeBuildInputs = [
+    lmdbxx
+    cmake
+    pkgconfig
+  ];
+  cmakeFlags = [
+    # Can be removed once either https://github.com/NixOS/nixpkgs/pull/85254 or
+    # https://github.com/NixOS/nixpkgs/pull/73940 are merged
+    "-DBoost_NO_BOOST_CMAKE=TRUE"
+  ];
+  # commit missing from latest release and recommended by upstream:
+  # https://github.com/NixOS/nixpkgs/pull/85922#issuecomment-619263903
+  patches = [
+    (fetchpatch {
+      name = "room-ids-escape-patch";
+      url = "https://github.com/Nheko-Reborn/nheko/commit/d94ac86816f9f325cba11f71344a3ca99591130d.patch";
+      sha256 = "1p0kj4a60l3jf0rfakc88adld7ccg3vfjhzia5rf2i03h35cxw8c";
+    })
+  ];
+
+  buildInputs = [
+    nlohmann_json
+    tweeny
+    mtxclient
+    olm
+    boost17x
+    lmdb
+    spdlog
+    cmark
+    qtbase
+    qtmultimedia
+    qttools
+    qtquickcontrols2
+    qtgraphicaleffects
+  ] ++ lib.optional stdenv.isDarwin qtmacextras;
+
+  meta = with stdenv.lib; {
+    description = "Desktop client for the Matrix protocol";
+    homepage = "https://github.com/Nheko-Reborn/nheko";
+    maintainers = with maintainers; [ ekleog fpletz ];
+    platforms = platforms.all;
+    # Should be fixable if a higher clang version is used, see:
+    # https://github.com/NixOS/nixpkgs/pull/85922#issuecomment-619287177
+    broken = stdenv.targetPlatform.isDarwin;
+    license = licenses.gpl3Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/oysttyer/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/oysttyer/default.nix
new file mode 100644
index 000000000000..e3595e07a788
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/oysttyer/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, lib, perl, perlPackages, coreutils,
+fetchFromGitHub, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "oysttyer";
+  version = "2.10.0";
+
+  src = fetchFromGitHub {
+    owner  = "oysttyer";
+    repo   = "oysttyer";
+    rev    = version;
+    sha256 = "0cm1hvi68iqgjsg15xdii271pklgzjn9j9afb1c460z71kgy3wz2";
+  };
+
+  buildInputs = [
+    perl
+    makeWrapper
+  ];
+
+  propagatedBuildInputs = with perlPackages; [
+    DateTimeFormatDateParse
+    TermReadLineTTYtter
+    TermReadKey
+  ];
+
+  installPhase = ''
+    ${coreutils}/bin/install -Dm755 \
+      oysttyer.pl \
+      $out/bin/oysttyer
+
+    wrapProgram $out/bin/oysttyer \
+      --prefix PERL5LIB : $PERL5LIB
+  '';
+
+  meta = with lib; {
+    inherit version;
+    description = "Perl Console Twitter Client";
+    homepage    = "http://oysttyer.github.io/";
+    maintainers = with maintainers; [ woffs ];
+    license = with licenses; [ ffsl ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pantalaimon/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pantalaimon/default.nix
new file mode 100644
index 000000000000..faf4e4069354
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pantalaimon/default.nix
@@ -0,0 +1,62 @@
+{ lib, stdenv, buildPythonApplication, fetchFromGitHub, pythonOlder,
+  attrs, aiohttp, appdirs, click, keyring, Logbook, peewee, janus,
+  prompt_toolkit, matrix-nio, dbus-python, pydbus, notify2, pygobject3,
+
+  pytest, faker, pytest-aiohttp, aioresponses,
+
+  enableDbusUi ? true
+}:
+
+buildPythonApplication rec {
+  pname = "pantalaimon";
+  version = "0.6.1";
+
+  disabled = pythonOlder "3.6";
+
+  # pypi tarball miss tests
+  src = fetchFromGitHub {
+    owner = "matrix-org";
+    repo = pname;
+    rev = version;
+    sha256 = "0hn3731jh6xwyjayzdf41skhpdx002qs7n5l7ffh4dplhnv9vbxx";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    appdirs
+    attrs
+    click
+    janus
+    keyring
+    Logbook
+    matrix-nio
+    peewee
+    prompt_toolkit
+  ] ++ lib.optional enableDbusUi [
+      dbus-python
+      notify2
+      pygobject3
+      pydbus
+  ];
+
+  checkInputs = [
+    pytest
+    faker
+    pytest-aiohttp
+    aioresponses
+  ];
+
+  # darwin has difficulty communicating with server, fails some integration tests
+  doCheck = !stdenv.isDarwin;
+
+  checkPhase = ''
+    pytest
+  '';
+
+  meta = with lib; {
+    description = "An end-to-end encryption aware Matrix reverse proxy daemon.";
+    homepage = "https://github.com/matrix-org/pantalaimon";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ valodim ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/carbons/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/carbons/default.nix
new file mode 100644
index 000000000000..7c2150a584fe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/carbons/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, libxml2, pidgin, pkgconfig, fetchFromGitHub } :
+
+stdenv.mkDerivation rec {
+  pname = "pidgin-carbons";
+  version = "0.2.2";
+
+  src = fetchFromGitHub {
+    owner = "gkdr";
+    repo  = "carbons";
+    rev   = "v${version}";
+    sha256 = "1aq9bwgpmbwrigq6ywf0pjkngqcm0qxncygaj1fi57npjhcjs6ln";
+  };
+
+  makeFlags = [ "PURPLE_PLUGIN_DIR=$(out)/lib/pidgin" ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libxml2 pidgin ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/gkdr/carbons";
+    description = "XEP-0280: Message Carbons plugin for libpurple";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/msn-pecan/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/msn-pecan/default.nix
new file mode 100644
index 000000000000..eccb8de31e59
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/msn-pecan/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pidgin} :
+
+stdenv.mkDerivation {
+  name = "pidgin-msn-pecan-0.1.4";
+  src = fetchurl {
+    url = "http://msn-pecan.googlecode.com/files/msn-pecan-0.1.4.tar.bz2";
+    sha256 = "0d43z2ay9is1r2kkc9my8pz0fwdyzv7k19vdmbird18lg7rlbjd2";
+  };
+
+  meta = {
+    description = "Alternative MSN protocol plug-in for Pidgin IM";
+    homepage = "https://github.com/felipec/msn-pecan";
+    platforms = stdenv.lib.platforms.linux;
+  };
+
+  makeFlags = [
+    "PURPLE_LIBDIR=${placeholder "out"}/lib"
+    "PURPLE_DATADIR=${placeholder "out"}/share/data"
+  ];
+
+  buildInputs = [pidgin];
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/otr/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/otr/default.nix
new file mode 100644
index 000000000000..bdc16d101f55
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/otr/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, libotr, pidgin, intltool } :
+
+stdenv.mkDerivation rec {
+  name = "pidgin-otr-4.0.2";
+  src = fetchurl {
+    url = "http://www.cypherpunks.ca/otr/${name}.tar.gz";
+    sha256 = "1i5s9rrgbyss9rszq6c6y53hwqyw1k86s40cpsfx5ccl9bprxdgl";
+  };
+
+  postInstall = "ln -s \$out/lib/pidgin \$out/share/pidgin-otr";
+
+  buildInputs = [ libotr pidgin intltool ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://otr.cypherpunks.ca/";
+    description = "Plugin for Pidgin 2.x which implements OTR Messaging";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-latex/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-latex/default.nix
new file mode 100644
index 000000000000..1fd248e0c89d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-latex/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, pkgconfig, pidgin, texLive, imagemagick, glib, gtk2 }:
+
+let version = "1.5.0";
+in
+stdenv.mkDerivation {
+  pname = "pidgin-latex";
+  inherit version;
+
+  src = fetchurl {
+    url = "mirror://sourceforge/pidgin-latex/pidgin-latex_${version}.tar.bz2";
+    sha256 = "9c850aee90d7e59de834f83e09fa6e3e51b123f06e265ead70957608ada95441";
+  };
+
+  nativeBuildInputs = [pkgconfig];
+  buildInputs = [gtk2 glib pidgin];
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  postPatch = ''
+    sed -e 's/-Wl,-soname//' -i Makefile
+  '';
+
+  passthru = {
+    wrapArgs = "--prefix PATH ':' ${stdenv.lib.makeBinPath [ texLive imagemagick ]}";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = "https://sourceforge.net/projects/pidgin-latex/";
+    description = "LaTeX rendering plugin for Pidgin IM";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-mra/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-mra/default.nix
new file mode 100644
index 000000000000..13e165ad7a13
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-mra/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchgit, pkgconfig, pidgin } :
+
+let
+  version = "54b2992";
+in
+stdenv.mkDerivation {
+  pname = "pidgin-mra";
+  inherit version;
+
+  src = fetchgit {
+    url = "https://github.com/dreadatour/pidgin-mra";
+    rev = version;
+    sha256 = "1adq57g11kw7bfpivyvfk3nlpjkc8raiw4bzn3gn4nx3m0wl99vw";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ pidgin ];
+
+  postPatch = ''
+    sed -i 's|-I/usr/include/libpurple|$(shell pkg-config --cflags purple)|' Makefile
+  '';
+
+  makeFlags = [
+    "DESTDIR=/"
+    "LIBDIR=${placeholder "out"}/lib"
+    "DATADIR=${placeholder "out"}/share"
+  ];
+
+  meta = {
+    homepage = "https://github.com/dreadatour/pidgin-mra";
+    description = "Mail.ru Agent plugin for Pidgin / libpurple";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-opensteamworks/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-opensteamworks/default.nix
new file mode 100644
index 000000000000..067a71a93dd5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-opensteamworks/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, pkgconfig, pidgin, glib, json-glib, nss, nspr
+, libsecret
+} :
+
+stdenv.mkDerivation rec {
+  pname = "pidgin-opensteamworks";
+  version = "1.7";
+
+  src = fetchFromGitHub {
+    owner = "EionRobb";
+    repo = "pidgin-opensteamworks";
+    rev = version;
+    sha256 = "0zxd45g9ycw5kmm4i0800jnqg1ms2gbqcld6gkyv6n3ac1wxizpj";
+  };
+
+  sourceRoot = "source/steam-mobile";
+
+  installFlags = [
+    "PLUGIN_DIR_PURPLE=${placeholder "out"}/lib/purple-2"
+    "DATA_ROOT_DIR_PURPLE=${placeholder "out"}/share"
+  ];
+
+  nativeBuildInputs = [
+    pkgconfig
+  ];
+  buildInputs = [
+    pidgin glib json-glib nss nspr libsecret
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/EionRobb/pidgin-opensteamworks";
+    description = "Plugin for Pidgin 2.x which implements Steam Friends/Steam IM compatibility";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ arobyn ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-osd/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-osd/default.nix
new file mode 100644
index 000000000000..bf9979c19f25
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-osd/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, pidgin, xosd
+, autoreconfHook } :
+
+stdenv.mkDerivation rec {
+  name = "pidgin-osd-0.2.0";
+  src = fetchFromGitHub {
+    owner = "edanaher";
+    repo = "pidgin-osd";
+    rev = name;
+    sha256 = "07wa9anz99hnv6kffpcph3fbq8mjbyq17ij977ggwgw37zb9fzb5";
+  };
+
+  # autoreconf is run such that it *really* wants all the files, and there's no
+  # default ChangeLog.  So make it happy.
+  preAutoreconf = "touch ChangeLog";
+
+  postInstall = ''
+    mkdir -p $out/lib/pidgin
+    mv $out/lib/pidgin-osd.{la,so} $out/lib/pidgin
+  '';
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ xosd pidgin ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/mbroemme/pidgin-osd";
+    description = "Plugin for Pidgin which implements on-screen display via libxosd";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-skypeweb/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-skypeweb/default.nix
new file mode 100644
index 000000000000..cae84c054e89
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-skypeweb/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, pkgconfig, pidgin, json-glib }:
+
+stdenv.mkDerivation rec {
+  pname = "pidgin-skypeweb";
+  version = "1.5";
+
+  src = fetchFromGitHub {
+    owner = "EionRobb";
+    repo = "skype4pidgin";
+    rev = version;
+    sha256 = "1bd9gd36yhrbrww0dvai9rnzxxj1c9sb4003c72wg27w12y47xfv";
+  };
+
+  setSourceRoot = ''
+    sourceRoot=$(echo */skypeweb)
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ pidgin json-glib ];
+
+  PKG_CONFIG_PURPLE_PLUGINDIR = "${placeholder "out"}/lib/purple-2";
+  PKG_CONFIG_PURPLE_DATADIR = "${placeholder "out"}/share";
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/EionRobb/skype4pidgin";
+    description = "SkypeWeb plugin for Pidgin";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-xmpp-receipts/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-xmpp-receipts/default.nix
new file mode 100644
index 000000000000..463b6326b5a2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-xmpp-receipts/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, pidgin } :
+
+let
+  version = "0.8";
+in
+stdenv.mkDerivation {
+  pname = "pidgin-xmpp-receipts";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "noonien-d";
+    repo = "pidgin-xmpp-receipts";
+    rev = "release_${version}";
+    sha256 = "13kwaymzkymjsdv8q95byd173i4vanj211vgx9cm0y8ag2r3cjsb";
+  };
+
+  buildInputs = [ pidgin ];
+
+  installPhase = ''
+    mkdir -p $out/lib/pidgin/
+    cp xmpp-receipts.so $out/lib/pidgin/
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://devel.kondorgulasch.de/pidgin-xmpp-receipts/";
+    description = "Message delivery receipts (XEP-0184) Pidgin plugin";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ orivej ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-discord/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-discord/default.nix
new file mode 100644
index 000000000000..0322005ae935
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-discord/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, pkgconfig, pidgin, json-glib }:
+
+stdenv.mkDerivation {
+  pname = "purple-discord";
+  version = "unstable-2018-04-10";
+
+  src = fetchFromGitHub {
+    owner = "EionRobb";
+    repo = "purple-discord";
+    rev = "9a97886d15a1f028de54b5e6fc54e784531063b0";
+    sha256 = "0dc344zh1v4yh9c8javcw5ylzwc1wpx0ih8bww8p8cjmhr8kcl32";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ pidgin json-glib ];
+
+  PKG_CONFIG_PURPLE_PLUGINDIR = "${placeholder "out"}/lib/purple-2";
+  PKG_CONFIG_PURPLE_DATADIR = "${placeholder "out"}/share";
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/EionRobb/purple-discord";
+    description = "Discord plugin for Pidgin";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ sna ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-facebook/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-facebook/default.nix
new file mode 100644
index 000000000000..cff1bcc56b92
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-facebook/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, fetchFromGitHub, fetchhg, pidgin, glib, json-glib, autoreconfHook }:
+
+
+let
+  pidginHg = fetchhg {
+    url = "https://bitbucket.org/pidgin/main";
+    # take from VERSION file
+    rev = "9ff9acf9fa14";
+    sha256 = "06imlhsps4wrjgjb92zpaxprxfxl2pjb2x9pl859c8cryssrz2jv";
+  };
+
+in stdenv.mkDerivation rec {
+  name = "purple-facebook-0.9.5";
+
+  src = fetchFromGitHub {
+    owner = "dequis";
+    repo = "purple-facebook";
+    rev = "v0.9.5-9ff9acf9fa14";
+    sha256 = "0a1860bkzrmyxahm9rlxi80z335w491wzdaqaw6j9ccavbymhwhs";
+  };
+
+  postPatch = ''
+    # we do all patching from update.sh in preAutoreconf
+    echo "#!${stdenv.shell}" > update.sh
+  '';
+
+  preAutoreconf = ''
+    for FILE in $(cat MANIFEST_PIDGIN); do
+        install -Dm644 "${pidginHg}/$FILE" "pidgin/$FILE" || true
+    done
+
+    touch $(cat MANIFEST_VOIDS)
+
+    patchdir="$(pwd)/patches"
+    pushd pidgin
+
+    for patch in $(ls -1 "$patchdir"); do
+      patch -p1 -i "$patchdir/$patch"
+    done
+    popd
+
+    ./autogen.sh
+  '';
+
+  makeFlags = [
+    "PLUGIN_DIR_PURPLE=/lib/pidgin/"
+    "DATA_ROOT_DIR_PURPLE=/share"
+  ];
+
+  installPhase = ''
+    mkdir -p $out/lib/purple-2
+    cp pidgin/libpurple/protocols/facebook/.libs/*.so $out/lib/purple-2/
+  '';
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ pidgin glib json-glib ];
+
+  meta = with stdenv.lib; {
+    inherit (src.meta) homepage;
+    description = "Facebook protocol plugin for libpurple";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ davorb ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-hangouts/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-hangouts/default.nix
new file mode 100644
index 000000000000..204d99f6d7ab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-hangouts/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchhg, pidgin, glib, json-glib, protobuf, protobufc }:
+
+stdenv.mkDerivation {
+  pname = "purple-hangouts-hg";
+  version = "2018-12-02";
+
+  src = fetchhg {
+    url = "https://bitbucket.org/EionRobb/purple-hangouts/";
+    rev = "cccf2f6";
+    sha256 = "1zd1rlzqvw1zkb0ydyz039n3xa1kv1f20a4l6rkm9a8sp6rpf3pi";
+  };
+
+  buildInputs = [ pidgin glib json-glib protobuf protobufc ];
+
+  PKG_CONFIG_PURPLE_PLUGINDIR = "${placeholder "out"}/lib/purple-2";
+  PKG_CONFIG_PURPLE_DATADIR = "${placeholder "out"}/share";
+
+  meta = with stdenv.lib; {
+    homepage = "https://bitbucket.org/EionRobb/purple-hangouts";
+    description = "Native Hangouts support for pidgin";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ralith ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-lurch/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-lurch/default.nix
new file mode 100644
index 000000000000..0a6aa1a133d6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-lurch/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, cmake, pidgin, minixml, libxml2, sqlite, libgcrypt }:
+
+stdenv.mkDerivation rec {
+  pname = "purple-lurch";
+  version = "0.6.7";
+
+  src = fetchFromGitHub {
+    owner = "gkdr";
+    repo = "lurch";
+    rev = "v${version}";
+    sha256 = "029jjqinsfhpv0zgji3sv1cyk54fn9qp176fwy97d1clf0vflxrz";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ pidgin minixml libxml2 sqlite libgcrypt ];
+
+  dontUseCmakeConfigure = true;
+
+  installPhase = ''
+    install -Dm755 -t $out/lib/purple-2 build/lurch.so
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/gkdr/lurch";
+    description = "XEP-0384: OMEMO Encryption for libpurple";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ emmanuelrosa ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-matrix/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-matrix/default.nix
new file mode 100644
index 000000000000..999235314fe6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-matrix/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, pkgconfig, pidgin, json-glib, glib, http-parser, sqlite, olm, libgcrypt } :
+
+stdenv.mkDerivation rec {
+  pname = "purple-matrix-unstable";
+  version = "2019-06-06";
+
+  src = fetchFromGitHub {
+    owner = "matrix-org";
+    repo = "purple-matrix";
+    rev = "4494ba22b479917f0b1f96a3019792d3d75bcff1";
+    sha256 = "1gjm0z4wa5vi9x1xk43rany5pffrwg958n180ahdj9a7sa8a4hpm";
+  };
+
+  NIX_CFLAGS_COMPILE = builtins.toString [
+    # glib-2.62 deprecations
+    "-DGLIB_DISABLE_DEPRECATION_WARNINGS"
+    # override "-O0 -Werror" set by build system
+    "-O3" "-Wno-error"
+  ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ pidgin json-glib glib http-parser sqlite olm libgcrypt ];
+
+  makeFlags = [
+    "PLUGIN_DIR_PURPLE=${placeholder "out"}/lib/purple-2"
+    "DATA_ROOT_DIR_PURPLE=${placeholder "out"}/share"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/matrix-org/purple-matrix";
+    description = "Matrix support for Pidgin / libpurple";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ symphorien ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-plugin-pack/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-plugin-pack/default.nix
new file mode 100644
index 000000000000..6739befbfea4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-plugin-pack/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pidgin, intltool, python } :
+
+stdenv.mkDerivation rec {
+  name = "purple-plugin-pack-2.7.0";
+  src = fetchurl {
+    url = "https://bitbucket.org/rekkanoryo/purple-plugin-pack/downloads/${name}.tar.bz2";
+    sha256 = "0g5hmy7fwgjq59j52h9yps28jsjjrfkd4r18gyx6hfd3g3kzbg1b";
+  };
+
+  buildInputs = [ pidgin intltool python ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://bitbucket.org/rekkanoryo/purple-plugin-pack";
+    description = "Plugin pack for Pidgin 2.x";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ bdimcheff ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-slack/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-slack/default.nix
new file mode 100644
index 000000000000..7d7abbd1eed6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-slack/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, pidgin, pkgconfig }:
+
+stdenv.mkDerivation {
+  pname = "purple-slack-unstable";
+  version = "2019-08-18";
+
+  src = fetchFromGitHub {
+    owner = "dylex";
+    repo = "slack-libpurple";
+    rev = "be97802c7fd0b611722d2f551756e2a2672f6084";
+    sha256 = "0l6hwnnv6zzszxkk0a3nli88w5gijvlc9qgkkai0sb4v4c504y5v";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ pidgin ];
+
+  PKG_CONFIG_PURPLE_PLUGINDIR = "${placeholder "out"}/lib/purple-2";
+  PKG_CONFIG_PURPLE_DATAROOTDIR = "${placeholder "out"}/share";
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/dylex/slack-libpurple";
+    description = "Slack plugin for Pidgin";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ eyjhb ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-vk-plugin/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-vk-plugin/default.nix
new file mode 100644
index 000000000000..76b242659e7a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-vk-plugin/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchhg, pidgin, cmake, libxml2 } :
+
+let
+  version = "40ddb6d";
+in
+stdenv.mkDerivation {
+  pname = "purple-vk-plugin";
+  inherit version;
+
+  src = fetchhg {
+    url = "https://bitbucket.org/olegoandreev/purple-vk-plugin";
+    rev = version;
+    sha256 = "02p57fgx8ml00cbrb4f280ak2802svz80836dzk9f1zwm1bcr2qc";
+  };
+
+  buildInputs = [ pidgin cmake libxml2 ];
+
+  preConfigure = ''
+    sed -i -e 's|DESTINATION.*PURPLE_PLUGIN_DIR}|DESTINATION lib/purple-2|' CMakeLists.txt
+  '';
+
+  cmakeFlags = [ "-DCMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT=1" ];
+
+  meta = {
+    homepage = "https://bitbucket.org/olegoandreev/purple-vk-plugin";
+    description = "Vk (russian social network) plugin for Pidgin / libpurple";
+    license = stdenv.lib.licenses.gpl3;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-xmpp-http-upload/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-xmpp-http-upload/default.nix
new file mode 100644
index 000000000000..3277e12ec086
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-xmpp-http-upload/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchgit, pidgin, glib, libxml2 }:
+
+stdenv.mkDerivation {
+  name = "purple-xmpp-upload-2017-12-31";
+
+  src = fetchgit {
+    url = "https://github.com/Junker/purple-xmpp-http-upload";
+    rev = "178096cbfc9df165c2dc1677666439969d212b37";
+    sha256 = "12l9rqlgb4i50xxrfnvwz9sqfk0d3c0m6l09mnvfixqi8illyvlp";
+  };
+
+  buildInputs = [ pidgin glib libxml2 ];
+
+  installPhase = ''
+    install -Dm644 -t $out/lib/purple-2 jabber_http_file_upload.so
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/Junker/purple-xmpp-http-upload";
+    description = "HTTP File Upload plugin for libpurple (XMPP Protocol XEP-0363)";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ emmanuelrosa ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/sipe/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/sipe/default.nix
new file mode 100644
index 000000000000..3d1a6ac534c5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/sipe/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pidgin, intltool, libxml2, gmime, nss }:
+
+stdenv.mkDerivation rec {
+  pname = "pidgin-sipe";
+  version = "1.25.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/sipe/${pname}-${version}.tar.gz";
+    sha256 = "0262sz00iqxylx0xfyr48xikhiqzr8pg7b4b7vwj5iv4qxpxv939";
+  };
+
+  nativeBuildInputs = [ intltool ];
+  buildInputs = [ pidgin gmime libxml2 nss ];
+  enableParallelBuilding = true;
+
+  postInstall = "ln -s \$out/lib/purple-2 \$out/share/pidgin-sipe";
+
+  meta = with stdenv.lib; {
+    description = "SIPE plugin for Pidgin IM";
+    homepage = "http://sipe.sourceforge.net/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix
new file mode 100644
index 000000000000..253d2ddfe24a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, pkgconfig, pidgin, libnotify, gdk-pixbuf, glib, dbus
+, dbus-glib }:
+
+stdenv.mkDerivation rec {
+  name = "skype4pidgin-novas0x2a-20120411-6c53f7c48f";
+  src = fetchurl {
+    url = "https://github.com/novas0x2a/skype4pidgin/tarball/6c53f7c48f";
+    name = "${name}.tar.gz";
+    sha256 = "116jfh5ravaixivqx4a4bz0lbb9c49d5r83nwmripja56zdbpgr0";
+  };
+
+  NIX_CFLAGS_COMPILE = "-I${libnotify}/include/libnotify";
+
+  patchPhase = ''
+    sed -i -e 's/ [^ ]*-gcc/ gcc/' -e 's/-march[^ ]*//' \
+        -e 's/GLIB_CFLAGS =.*/GLIB_CFLAGS=`pkg-config --cflags glib-2.0 gdk-pixbuf-2.0 libnotify purple dbus-glib-1`/' Makefile
+    pkg-config --cflags glib-2.0 gdk-pixbuf-2.0 libnotify
+  '';
+
+  buildPhase  = "make libskype.so libskype_dbus.so";
+
+  installPhase = ''
+    mkdir -p $out/pixmaps/pidgin/protocols/{16,22,48} $out/bin $out/lib/pidgin
+    cp icons/16/skypeout.png $out/pixmaps/pidgin/protocols/16
+    cp icons/22/skypeout.png $out/pixmaps/pidgin/protocols/22
+    cp icons/48/skypeout.png $out/pixmaps/pidgin/protocols/48
+    cp libskype.so libskype_dbus.so $out/lib/pidgin
+  '';
+
+  postInstall = "ln -s \$out/lib/pidgin \$out/share/pidgin-otr";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ pidgin libnotify gdk-pixbuf glib dbus dbus-glib ];
+
+  meta = {
+    homepage = "https://github.com/novas0x2a/skype4pidgin";
+    license = stdenv.lib.licenses.gpl3Plus;
+    description = "Plugin to use a running skype account through pidgin";
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/telegram-purple/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/telegram-purple/default.nix
new file mode 100644
index 000000000000..38424ca25979
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/telegram-purple/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchgit, pkgconfig, pidgin, libwebp, libgcrypt, gettext } :
+
+let
+  version = "1.3.1";
+in
+stdenv.mkDerivation rec {
+  pname = "telegram-purple";
+  inherit version;
+
+  src = fetchgit {
+    url = "https://github.com/majn/telegram-purple";
+    rev = "v${version}";
+    sha256 = "0p93jpjpx7hszwffzgixw04zkrpsiyzz4za3gfr4j07krc4771fp";
+  };
+
+  NIX_CFLAGS_COMPILE = "-Wno-error=cast-function-type";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ pidgin libwebp libgcrypt gettext ];
+
+  preConfigure = ''
+    sed -i "s|/etc/telegram-purple/server.tglpub|$out/lib/purple-2/server.tglpub|g" telegram-purple.c
+    echo "#define GIT_COMMIT \"${builtins.substring 0 10 src.rev}\"" > commit.h
+  '';
+
+  installPhase = ''
+    mkdir -p $out/lib/purple-2/
+    cp bin/*.so $out/lib/purple-2/ #*/
+    cp tg-server.tglpub $out/lib/purple-2/server.tglpub
+    mkdir -p $out/pixmaps/pidgin/protocols/{16,22,48}
+    cp imgs/telegram16.png $out/pixmaps/pidgin/protocols/16
+    cp imgs/telegram22.png $out/pixmaps/pidgin/protocols/22
+    cp imgs/telegram48.png $out/pixmaps/pidgin/protocols/48
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/majn/telegram-purple";
+    description = "Telegram for Pidgin / libpurple";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.jagajaga ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/tox-prpl/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/tox-prpl/default.nix
new file mode 100644
index 000000000000..de48ee26a6ed
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/tox-prpl/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, libtoxcore, pidgin, autoreconfHook, libsodium }:
+
+stdenv.mkDerivation rec {
+  pname = "tox-prpl";
+  version = "0.5.1";
+
+  src = fetchFromGitHub {
+    owner  = "jin-eld";
+    repo   = "tox-prpl";
+    rev    = "v${version}";
+    sha256 = "0ms367l2f7x83k407c93bmhpyc820f1css61fh2gx4jq13cxqq3p";
+  };
+
+  NIX_LDFLAGS = "-lssp -lsodium";
+
+  postInstall = "mv $out/lib/purple-2 $out/lib/pidgin";
+
+  buildInputs = [ libtoxcore pidgin libsodium ];
+  nativeBuildInputs = [ autoreconfHook ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/jin-eld/tox-prpl";
+    description = "Tox plugin for Pidgin / libpurple";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/window-merge/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/window-merge/default.nix
new file mode 100644
index 000000000000..f576f2ad9c3e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/window-merge/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, pidgin } :
+
+stdenv.mkDerivation rec {
+  pname = "pidgin-window-merge";
+  version = "0.3";
+
+  src = fetchurl {
+    url = "https://github.com/downloads/dm0-/window_merge/window_merge-${version}.tar.gz";
+    sha256 = "0cb5rvi7jqvm345g9mlm4wpq0240kcybv81jpw5wlx7hz0lwi478";
+  };
+
+  buildInputs = [ pidgin ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/dm0-/window_merge";
+    description = "Pidgin plugin that merges the Buddy List window with a conversation window";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/add-search-path.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/add-search-path.patch
new file mode 100644
index 000000000000..b0758777186a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/add-search-path.patch
@@ -0,0 +1,20 @@
+diff --git a/libpurple/plugin.c b/libpurple/plugin.c
+index 4f2b402..fda9add 100644
+--- a/libpurple/plugin.c
++++ b/libpurple/plugin.c
+@@ -1181,8 +1181,15 @@ purple_plugins_get_handle(void) {
+ void
+ purple_plugins_init(void) {
+ 	void *handle = purple_plugins_get_handle();
++	gchar **paths, **p;
+ 
+ 	purple_plugins_add_search_path(LIBDIR);
++	paths = g_strsplit(g_getenv("PURPLE_PLUGIN_PATH"), ":", -1);
++	if (paths) {
++		for (p = paths; *p; ++p)
++			if (**p) purple_plugins_add_search_path(*p);
++	}
++	g_strfreev(paths);
+ 
+ 	purple_signal_register(handle, "plugin-load",
+ 						 purple_marshal_VOID__POINTER,
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/default.nix
new file mode 100644
index 000000000000..369ae0693246
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/default.nix
@@ -0,0 +1,81 @@
+{ stdenv, fetchurl, makeWrapper, pkgconfig, gtk2, gtkspell2, aspell
+, gst_all_1, startupnotification, gettext
+, perlPackages, libxml2, nss, nspr, farstream
+, libXScrnSaver, ncurses, avahi, dbus, dbus-glib, intltool, libidn
+, lib, python, libICE, libXext, libSM
+, cyrus_sasl ? null
+, openssl ? null
+, gnutls ? null
+, libgcrypt ? null
+, plugins, symlinkJoin
+}:
+
+# FIXME: clean the mess around choosing the SSL library (nss by default)
+
+let unwrapped = stdenv.mkDerivation rec {
+  pname = "pidgin";
+  majorVersion = "2";
+  version = "${majorVersion}.13.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/pidgin/${pname}-${version}.tar.bz2";
+    sha256 = "13vdqj70315p9rzgnbxjp9c51mdzf1l4jg1kvnylc4bidw61air7";
+  };
+
+  inherit nss ncurses;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  NIX_CFLAGS_COMPILE = "-I${gst_all_1.gst-plugins-base.dev}/include/gstreamer-1.0";
+
+  buildInputs = [
+    gtkspell2 aspell startupnotification
+    gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good
+    libxml2 nss nspr farstream
+    libXScrnSaver ncurses python
+    avahi dbus dbus-glib intltool libidn
+    libICE libXext libSM cyrus_sasl
+  ]
+  ++ (lib.optional (openssl != null) openssl)
+  ++ (lib.optional (gnutls != null) gnutls)
+  ++ (lib.optional (libgcrypt != null) libgcrypt);
+
+  propagatedBuildInputs = [ pkgconfig gtk2 gettext ]
+    ++ (with perlPackages; [ perl XMLParser ]);
+
+  patches = [ ./pidgin-makefile.patch ./add-search-path.patch ];
+
+  configureFlags = [
+    "--with-nspr-includes=${nspr.dev}/include/nspr"
+    "--with-nspr-libs=${nspr.out}/lib"
+    "--with-nss-includes=${nss.dev}/include/nss"
+    "--with-nss-libs=${nss.out}/lib"
+    "--with-ncurses-headers=${ncurses.dev}/include"
+    "--disable-meanwhile"
+    "--disable-nm"
+    "--disable-tcl"
+  ]
+  ++ (lib.optionals (cyrus_sasl != null) [ "--enable-cyrus-sasl=yes" ])
+  ++ (lib.optionals (gnutls != null) ["--enable-gnutls=yes" "--enable-nss=no"]);
+
+  enableParallelBuilding = true;
+
+  postInstall = ''
+    wrapProgram $out/bin/pidgin \
+      --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Multi-protocol instant messaging client";
+    homepage = "http://pidgin.im";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.vcunat ];
+  };
+};
+
+in if plugins == [] then unwrapped
+    else import ./wrapper.nix {
+      inherit makeWrapper symlinkJoin plugins;
+      pidgin = unwrapped;
+    }
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/pidgin-makefile.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/pidgin-makefile.patch
new file mode 100644
index 000000000000..049d404a8d5f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/pidgin-makefile.patch
@@ -0,0 +1,64 @@
+diff --git a/pidgin/Makefile.am b/pidgin/Makefile.am
+index 84d927b..1467c19 100644
+--- a/pidgin/Makefile.am
++++ b/pidgin/Makefile.am
+@@ -151,6 +151,7 @@ pidgin_LDADD = \
+ 	$(GLIB_LIBS) \
+ 	$(DBUS_LIBS) \
+ 	$(GSTREAMER_LIBS) \
++	$(GSTINTERFACES_LIBS) \
+ 	$(GSTVIDEO_LIBS) \
+ 	$(XSS_LIBS) \
+ 	$(SM_LIBS) \
+@@ -171,6 +172,7 @@ AM_CPPFLAGS = \
+ 	-I$(top_srcdir) \
+ 	$(GLIB_CFLAGS) \
+ 	$(GSTREAMER_CFLAGS) \
++	$(GSTINTERFACES_CFLAGS) \
+ 	$(DEBUG_CFLAGS) \
+ 	$(GTK_CFLAGS) \
+ 	$(DBUS_CFLAGS) \
+diff --git a/pidgin/Makefile.in b/pidgin/Makefile.in
+index 0d51e25..dd5d879 100644
+--- a/pidgin/Makefile.in
++++ b/pidgin/Makefile.in
+@@ -703,6 +703,7 @@ EXTRA_DIST = \
+ @ENABLE_GTK_TRUE@	$(GLIB_LIBS) \
+ @ENABLE_GTK_TRUE@	$(DBUS_LIBS) \
+ @ENABLE_GTK_TRUE@	$(GSTREAMER_LIBS) \
++@ENABLE_GTK_TRUE@	$(GSTINTERFACES_LIBS) \
+ @ENABLE_GTK_TRUE@	$(GSTVIDEO_LIBS) \
+ @ENABLE_GTK_TRUE@	$(XSS_LIBS) \
+ @ENABLE_GTK_TRUE@	$(SM_LIBS) \
+@@ -723,6 +724,7 @@ EXTRA_DIST = \
+ @ENABLE_GTK_TRUE@	-I$(top_srcdir) \
+ @ENABLE_GTK_TRUE@	$(GLIB_CFLAGS) \
+ @ENABLE_GTK_TRUE@	$(GSTREAMER_CFLAGS) \
++@ENABLE_GTK_TRUE@	$(GSTINTERFACES_CFLAGS) \
+ @ENABLE_GTK_TRUE@	$(DEBUG_CFLAGS) \
+ @ENABLE_GTK_TRUE@	$(GTK_CFLAGS) \
+ @ENABLE_GTK_TRUE@	$(DBUS_CFLAGS) \
+diff --git a/pidgin/plugins/Makefile.am b/pidgin/plugins/Makefile.am
+index 3bb8c22..6d1e869 100644
+--- a/pidgin/plugins/Makefile.am
++++ b/pidgin/plugins/Makefile.am
+@@ -145,6 +145,7 @@ AM_CPPFLAGS = \
+ 	$(GTK_CFLAGS) \
+ 	$(UNITY_CFLAGS) \
+ 	$(GSTREAMER_CFLAGS) \
++	$(GSTINTERFACES_CFLAGS) \
+ 	$(PLUGIN_CFLAGS)
+ 
+ #
+diff --git a/pidgin/plugins/Makefile.in b/pidgin/plugins/Makefile.in
+index 82a34aa..1f7db00 100644
+--- a/pidgin/plugins/Makefile.in
++++ b/pidgin/plugins/Makefile.in
+@@ -781,6 +781,7 @@ AM_CPPFLAGS = \
+ 	$(GTK_CFLAGS) \
+ 	$(UNITY_CFLAGS) \
+ 	$(GSTREAMER_CFLAGS) \
++	$(GSTINTERFACES_CFLAGS) \
+ 	$(PLUGIN_CFLAGS)
+ 
+ 
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/wrapper.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/wrapper.nix
new file mode 100644
index 000000000000..095f838fe981
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/wrapper.nix
@@ -0,0 +1,20 @@
+{ symlinkJoin, pidgin, makeWrapper, plugins }:
+
+let
+extraArgs = map (x: x.wrapArgs or "") plugins;
+in symlinkJoin {
+  name = "pidgin-with-plugins-${pidgin.version}";
+
+  paths = [ pidgin ] ++ plugins;
+
+  buildInputs = [ makeWrapper ];
+
+  postBuild = ''
+    wrapProgram $out/bin/pidgin \
+      --suffix-each PURPLE_PLUGIN_PATH ':' "$out/lib/purple-${pidgin.majorVersion} $out/lib/pidgin" \
+      ${toString extraArgs}
+    wrapProgram $out/bin/finch \
+      --suffix-each PURPLE_PLUGIN_PATH ':' "$out/lib/purple-${pidgin.majorVersion}" \
+      ${toString extraArgs}
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/poezio/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/poezio/default.nix
new file mode 100644
index 000000000000..8dc70d6d7921
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/poezio/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonApplication, fetchFromGitHub, pythonOlder
+, pytest, aiodns, slixmpp, pyinotify, potr, mpd2, cffi, pkgconfig, setuptools }:
+buildPythonApplication rec {
+    pname = "poezio";
+    version = "0.13.1";
+
+    disabled = pythonOlder "3.4";
+
+    checkInputs = [ pytest ];
+    propagatedBuildInputs = [ aiodns slixmpp pyinotify potr mpd2 cffi setuptools ];
+    nativeBuildInputs = [ pkgconfig ];
+
+    src = fetchFromGitHub {
+      owner = pname;
+      repo = pname;
+      rev = "v${version}";
+      sha256 = "041y61pcbdb86s04qwp8s1g6bp84yskc7vdizwpi2hz18y01x5fy";
+    };
+
+    checkPhase = ''
+      pytest
+    '';
+
+    meta = with lib; {
+      description = "Free console XMPP client";
+      homepage = "https://poez.io";
+      license = licenses.mit;
+      maintainers = [ maintainers.lsix ];
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pond/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pond/default.nix
new file mode 100644
index 000000000000..1d70c9641f8e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pond/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildGoPackage, trousers, dclxvi, wrapGAppsHook, pkgconfig, gtk3, gtkspell3,
+  fetchgit }:
+
+let
+  gui = true; # Might be implemented with nixpkgs config.
+in
+buildGoPackage rec {
+  pname = "pond";
+  version = "20150830-${stdenv.lib.strings.substring 0 7 rev}";
+  rev = "bce6e0dc61803c23699c749e29a83f81da3c41b2";
+
+  goPackagePath = "github.com/agl/pond";
+
+  src = fetchgit {
+    inherit rev;
+    url = "https://github.com/agl/pond";
+    sha256 = "1dmgbg4ak3jkbgmxh0lr4hga1nl623mh7pvsgby1rxl4ivbzwkh4";
+  };
+
+  goDeps = ./deps.nix;
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ trousers gtk3 gtkspell3 ]
+    ++ stdenv.lib.optional stdenv.hostPlatform.isx86_64 dclxvi
+    ++ stdenv.lib.optionals gui [ wrapGAppsHook ];
+  buildFlags = stdenv.lib.optionals (!gui) [ "-tags" "nogui" ];
+  excludedPackages = "\\(appengine\\|bn256cgo\\)";
+  postPatch = stdenv.lib.optionalString stdenv.hostPlatform.isx86_64 ''
+    grep -r 'bn256' | awk -F: '{print $1}' | xargs sed -i \
+      -e "s,golang.org/x/crypto/bn256,github.com/agl/pond/bn256cgo,g" \
+      -e "s,bn256\.,bn256cgo.,g"
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pond/deps.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pond/deps.nix
new file mode 100644
index 000000000000..55850f0a89c2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pond/deps.nix
@@ -0,0 +1,47 @@
+[
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "575fdbe86e5dd89229707ebec0575ce7d088a4a6";
+      sha256 = "1kgv1mkw9y404pk3lcwbs0vgl133mwyp294i18jg9hp10s5d56xa";
+    };
+  }
+  {
+    goPackagePath = "github.com/agl/ed25519";
+    fetch = {
+      type = "git";
+      url = "https://github.com/agl/ed25519";
+      rev = "278e1ec8e8a6e017cd07577924d6766039146ced";
+      sha256 = "165d89cc6dl28j4hkn86pny0jz3sa6hamzdvpvwdj4iha3x6lzc9";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/protobuf";
+      rev = "59b73b37c1e45995477aae817e4a653c89a858db";
+      sha256 = "1dx22jvhvj34ivpr7gw01fncg9yyx35mbpal4mpgnqka7ajmgjsa";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "62ac18b461605b4be188bbc7300e9aa2bc836cd4";
+      sha256 = "0lwwvbbwbf3yshxkfhn6z20gd45dkvnmw2ms36diiy34krgy402p";
+    };
+  }
+  {
+    goPackagePath = "github.com/agl/go-gtk";
+    fetch = {
+      type = "git";
+      url = "https://github.com/agl/go-gtk";
+      rev = "91c1edb38c241d73129e6b098ca1c9fa83abfc15";
+      sha256 = "156ixlhakpqgyp35rsvmndrqz8aggv5bcmzg9ynpri3b9j6kim4d";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/profanity/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/profanity/default.nix
new file mode 100644
index 000000000000..86e760d497ce
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/profanity/default.nix
@@ -0,0 +1,80 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, glib, openssl
+, glibcLocales, expect, ncurses, libotr, curl, readline, libuuid
+, cmocka, libmicrohttpd, stabber, expat, libmesode
+, autoconf-archive
+
+, autoAwaySupport ? true,       libXScrnSaver ? null, libX11 ? null
+, notifySupport ? true,         libnotify ? null, gdk-pixbuf ? null
+, traySupport ? true,           gnome2 ? null
+, pgpSupport ? true,            gpgme ? null
+, pythonPluginSupport ? true,   python ? null
+, omemoSupport ? true,          libsignal-protocol-c ? null, libgcrypt ? null
+}:
+
+assert autoAwaySupport     -> libXScrnSaver != null && libX11 != null;
+assert notifySupport       -> libnotify != null && gdk-pixbuf != null;
+assert traySupport         -> gnome2 != null;
+assert pgpSupport          -> gpgme != null;
+assert pythonPluginSupport -> python != null;
+assert omemoSupport        -> libsignal-protocol-c != null && libgcrypt != null;
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "profanity";
+  version = "0.8.1";
+
+  src = fetchFromGitHub {
+    owner = "profanity-im";
+    repo = "profanity";
+    rev = version;
+    sha256 = "0fg5xcdlvhsi7a40w4jcxyj7m7wl42jy1cvsa8fi2gb6g9y568k8";
+  };
+
+  patches = [ ./patches/packages-osx.patch ./patches/undefined-macros.patch ];
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [
+    autoreconfHook autoconf-archive glibcLocales pkgconfig
+  ];
+
+  buildInputs = [
+    expect readline libuuid glib openssl expat ncurses libotr
+    curl libmesode cmocka libmicrohttpd stabber
+  ] ++ optionals autoAwaySupport     [ libXScrnSaver libX11 ]
+    ++ optionals notifySupport       [ libnotify gdk-pixbuf ]
+    ++ optionals traySupport         [ gnome2.gtk ]
+    ++ optionals pgpSupport          [ gpgme ]
+    ++ optionals pythonPluginSupport [ python ]
+    ++ optionals omemoSupport        [ libsignal-protocol-c libgcrypt ];
+
+  # Enable feature flags, so that build fail if libs are missing
+  configureFlags = [ "--enable-c-plugins" "--enable-otr" ]
+    ++ optionals notifySupport       [ "--enable-notifications" ]
+    ++ optionals traySupport         [ "--enable-icons" ]
+    ++ optionals pgpSupport          [ "--enable-pgp" ]
+    ++ optionals pythonPluginSupport [ "--enable-python-plugins" ]
+    ++ optionals omemoSupport        [ "--enable-omemo" ];
+
+  preAutoreconf = ''
+    mkdir m4
+  '';
+
+  doCheck = true;
+
+  LC_ALL = "en_US.utf8";
+
+  meta = {
+    description = "A console based XMPP client";
+    longDescription = ''
+      Profanity is a console based XMPP client written in C using ncurses and
+      libstrophe, inspired by Irssi.
+    '';
+    homepage = "http://www.profanity.im/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.devhell ];
+    updateWalker = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/profanity/patches/packages-osx.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/profanity/patches/packages-osx.patch
new file mode 100644
index 000000000000..796ec6b0a615
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/profanity/patches/packages-osx.patch
@@ -0,0 +1,13 @@
+diff --git a/configure.ac b/configure.ac
+index 5c00aca..eb78060 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -23,7 +23,6 @@ PLATFORM="unknown"
+ AS_CASE([$host_os],
+     [freebsd*], [PLATFORM="freebsd"],
+     [openbsd*], [PLATFORM="openbsd"],
+-    [darwin*], [PLATFORM="osx"],
+     [cygwin], [PLATFORM="cygwin"],
+     [PLATFORM="nix"])
+ 
+
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/profanity/patches/undefined-macros.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/profanity/patches/undefined-macros.patch
new file mode 100644
index 000000000000..9ef4e7bebe54
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/profanity/patches/undefined-macros.patch
@@ -0,0 +1,40 @@
+diff --git a/configure.ac b/configure.ac
+index 1e55b1cc..0832a387 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -83,12 +81,12 @@ elif test "x$enable_python_plugins" != xno; then
+         AM_CONDITIONAL([BUILD_PYTHON_API], [true])
+         AC_DEFINE([HAVE_PYTHON], [1], [Python support])
+     else
+-        if test "x$enable_python_plugins" = xyes; then
+-            AC_MSG_ERROR([Python not found, cannot enable Python plugins.])
+-        else
+-            AM_CONDITIONAL([BUILD_PYTHON_API], [false])
+-            AC_MSG_NOTICE([Python development package not found, Python plugin support disabled.])
+-        fi
++        AS_IF(
++            [test "x$enable_python_plugins" = xyes],
++            [],
++            [AM_CONDITIONAL([BUILD_PYTHON_API], [false])
++            AC_MSG_NOTICE([Python development package not found, Python plugin support disabled.])]
++        )
+     fi
+     AS_IF([test "x$PLATFORM" = xosx], [rm -f Python.framework])
+ else
+@@ -107,7 +105,7 @@ else
+             [AM_CONDITIONAL([BUILD_C_API], [true]) LIBS="$LIBS -ldl" AC_DEFINE([HAVE_C], [1], [C support])],
+             [AS_IF(
+                 [test "x$enable_c_plugins" = xyes],
+-                    [AC_MSG_ERROR([dl library needed to run C plugins])],
++                [],
+                 [AM_CONDITIONAL([BUILD_C_API], [false])])
+             ])
+     else
+@@ -116,7 +114,6 @@ else
+ fi
+ 
+ # threading
+-ACX_PTHREAD([], [AC_MSG_ERROR([pthread is required])])
+ LIBS="$PTHREAD_LIBS $LIBS"
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+ AS_IF([test "x$PTHREAD_CC" != x], [ CC="$PTHREAD_CC" ])
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/psi-plus/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/psi-plus/default.nix
new file mode 100644
index 000000000000..f45170250105
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/psi-plus/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, cmake, wrapQtAppsHook
+, qtbase, qtmultimedia, qtx11extras, qttools, qtwebengine
+, libidn, qca2-qt5, libsecret, libXScrnSaver, hunspell
+, libgcrypt, libotr, html-tidy, libgpgerror, libsignal-protocol-c
+}:
+
+stdenv.mkDerivation rec {
+  pname = "psi-plus";
+  version = "1.4.1231";
+
+  src = fetchFromGitHub {
+    owner = "psi-plus";
+    repo = "psi-plus-snapshots";
+    rev = version;
+    sha256 = "0m5p8is8nk3g0cbwiq73cff9nn2y09fcnh1pzc6rlqqhmz1acg4i";
+  };
+
+  cmakeFlags = [
+    "-DENABLE_PLUGINS=ON"
+  ];
+
+  nativeBuildInputs = [ cmake wrapQtAppsHook ];
+
+  buildInputs = [
+    qtbase qtmultimedia qtx11extras qttools qtwebengine
+    libidn qca2-qt5 libsecret libXScrnSaver hunspell
+    libgcrypt libotr html-tidy libgpgerror libsignal-protocol-c
+  ];
+
+  meta = with stdenv.lib; {
+    description = "XMPP (Jabber) client";
+    maintainers = with maintainers; [ orivej misuzu ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/psi/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/psi/default.nix
new file mode 100644
index 000000000000..19438c4d037b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/psi/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, cmake, wrapQtAppsHook
+, qtbase, qtmultimedia, qtx11extras, qttools, qtwebengine
+, libidn, qca2-qt5, libXScrnSaver, hunspell
+}:
+stdenv.mkDerivation rec {
+  pname = "psi";
+  version = "1.4";
+  src = fetchFromGitHub {
+    owner = "psi-im";
+    repo = pname;
+    rev = version;
+    sha256 = "09c7cg96vgxzgbpypgcw7yv73gvzppbi1lm4svbpfn2cfxy059d4";
+    fetchSubmodules = true;
+  };
+  patches = [
+    ./fix-cmake-hunspell-1.7.patch
+  ];
+  nativeBuildInputs = [ cmake wrapQtAppsHook ];
+  buildInputs = [
+    qtbase qtmultimedia qtx11extras qttools qtwebengine
+    libidn qca2-qt5 libXScrnSaver hunspell
+  ];
+  enableParallelBuilding = true;
+  meta = with stdenv.lib; {
+    description = "Psi, an XMPP (Jabber) client";
+    maintainers = [ maintainers.raskin ];
+    license = licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/psi/fix-cmake-hunspell-1.7.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/psi/fix-cmake-hunspell-1.7.patch
new file mode 100644
index 000000000000..7d5711a6f2bc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/psi/fix-cmake-hunspell-1.7.patch
@@ -0,0 +1,12 @@
+diff --git a/cmake/modules/FindHunspell.cmake b/cmake/modules/FindHunspell.cmake
+index a2d180b3..3a5aef3a 100644
+--- a/cmake/modules/FindHunspell.cmake
++++ b/cmake/modules/FindHunspell.cmake
+@@ -64,6 +64,7 @@ set(HUNSPELL_NAMES
+ 	hunspell-1.4
+ 	hunspell-1.5
+ 	hunspell-1.6
++	hunspell-1.7
+ 	libhunspell${d}
+ )
+ find_library(
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pybitmessage/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pybitmessage/default.nix
new file mode 100644
index 000000000000..d76b8dd206e4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pybitmessage/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub, python2Packages, openssl }:
+
+python2Packages.buildPythonApplication rec {
+  pname = "pybitmessage";
+
+  version = "0.6.3.2";
+
+  src = fetchFromGitHub {
+    owner = "bitmessage";
+    repo = "PyBitmessage";
+    rev = version;
+    sha256 = "1lmhbpwsqh1v93krlqqhafw2pc3y0qp8zby186yllbph6s8kdp35";
+  };
+
+  propagatedBuildInputs = with python2Packages; [ msgpack pyqt4 numpy pyopencl setuptools ] ++ [ openssl ];
+
+  preConfigure = ''
+    # Remove interaction and misleading output
+    substituteInPlace setup.py \
+      --replace "nothing = raw_input()" pass \
+      --replace 'print "It looks like building the package failed.\n" \' pass \
+      --replace '    "You may be missing a C++ compiler and the OpenSSL headers."' pass \
+      --replace 'msgpack-python' 'msgpack'
+
+    substituteInPlace src/pyelliptic/openssl.py \
+      --replace "libdir.append(find_library('ssl'))" "libdir.append('${openssl.out}/lib/libssl.so')"
+
+    substituteInPlace src/depends.py \
+      --replace "ctypes.util.find_library('ssl')" "'${openssl.out}/lib/libssl.so'"
+
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://bitmessage.org/";
+    description = "The official Bitmessage client";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jgillich ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/qtox/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/qtox/default.nix
new file mode 100644
index 000000000000..0df7a5d8e560
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/qtox/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, mkDerivation, lib, fetchFromGitHub, cmake, pkgconfig
+, libtoxcore
+, libpthreadstubs, libXdmcp, libXScrnSaver
+, qtbase, qtsvg, qttools, qttranslations
+, ffmpeg_3, filter-audio, libexif, libsodium, libopus
+, libvpx, openal, pcre, qrencode, sqlcipher
+, AVFoundation ? null }:
+
+let
+  version = "1.17.2";
+  rev = "v${version}";
+
+in mkDerivation {
+  pname = "qtox";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner  = "qTox";
+    repo   = "qTox";
+    sha256 = "04pbv1zsxy8dph2v0r9xc8lcm5g6604pwnppi3la5w46ihbwxlb9";
+    inherit rev;
+  };
+
+  buildInputs = [
+    libtoxcore
+    libpthreadstubs libXdmcp libXScrnSaver
+    qtbase qtsvg qttranslations
+    ffmpeg_3 filter-audio libexif libopus libsodium
+    libvpx openal pcre qrencode sqlcipher
+  ] ++ lib.optionals stdenv.isDarwin [ AVFoundation] ;
+
+  nativeBuildInputs = [ cmake pkgconfig qttools ];
+
+  enableParallelBuilding = true;
+
+  cmakeFlags = [
+    "-DGIT_DESCRIBE=${rev}"
+    "-DENABLE_STATUSNOTIFIER=False"
+    "-DENABLE_GTK_SYSTRAY=False"
+    "-DENABLE_APPINDICATOR=False"
+    "-DTIMESTAMP=1"
+  ];
+
+  meta = with lib; {
+    description = "Qt Tox client";
+    homepage    = "https://tox.chat";
+    license     = licenses.gpl3;
+    maintainers = with maintainers; [ akaWolf peterhoeg ];
+    platforms   = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/quaternion/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/quaternion/default.nix
new file mode 100644
index 000000000000..b1577a37844d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/quaternion/default.nix
@@ -0,0 +1,47 @@
+{ mkDerivation, stdenv, lib, fetchFromGitHub, cmake
+, qtbase, qtquickcontrols, qtquickcontrols2, qtkeychain, qtmultimedia, qttools
+, libquotient, libsecret
+}:
+
+mkDerivation rec {
+  pname = "quaternion";
+  version = "0.0.9.4e";
+
+  src = fetchFromGitHub {
+    owner = "QMatrixClient";
+    repo = "Quaternion";
+    rev = "${version}";
+    sha256 = "0hqhg7l6wpkdbzrdjvrbqymmahziri07ba0hvbii7dd2p0h248fv";
+  };
+
+  buildInputs = [
+    qtbase
+    qtmultimedia
+    qtquickcontrols
+    qtquickcontrols2
+    qtkeychain
+    libquotient
+    libsecret
+  ];
+
+  nativeBuildInputs = [ cmake qttools ];
+
+  postInstall = if stdenv.isDarwin then ''
+    mkdir -p $out/Applications
+    mv $out/bin/quaternion.app $out/Applications
+    rmdir $out/bin || :
+  '' else ''
+    substituteInPlace $out/share/applications/com.github.quaternion.desktop \
+      --replace 'Exec=quaternion' "Exec=$out/bin/quaternion"
+  '';
+
+  meta = with lib; {
+    description =
+      "Cross-platform desktop IM client for the Matrix protocol";
+    homepage = "https://matrix.org/docs/projects/client/quaternion.html";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ peterhoeg ];
+    inherit (qtbase.meta) platforms;
+    inherit version;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/default.nix
new file mode 100644
index 000000000000..74a644d189d4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchurl, xdg_utils, dpkg, makeWrapper, autoPatchelfHook
+, libXtst, libXScrnSaver, gtk3, nss, alsaLib, udev, libnotify
+}:
+
+let
+  version = "0.7.5";
+in stdenv.mkDerivation rec {
+  pname = "rambox";
+  inherit version;
+  src = {
+    x86_64-linux = fetchurl {
+      url = "https://github.com/ramboxapp/community-edition/releases/download/${version}/Rambox-${version}-linux-amd64.deb";
+      sha256 = "108yd5djnap37yh0nbjyqkp5ci1zmydfzqcsbapin40a4f36zm31";
+    };
+    i686-linux = fetchurl {
+      url = "https://github.com/ramboxapp/community-edition/releases/download/${version}/Rambox-${version}-linux-i386.deb";
+      sha256 = "1pvh048h6m19rmbscsy69ih0jkyhazmq2pcagmf3kk8gmbi7y6p6";
+    };
+  }.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}");
+
+  nativeBuildInputs = [ dpkg makeWrapper autoPatchelfHook ];
+  buildInputs = [ libXtst libXScrnSaver gtk3 nss alsaLib ];
+  runtimeDependencies = [ udev.lib libnotify ];
+
+  unpackPhase = "dpkg-deb -x $src .";
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -r opt $out
+    ln -s $out/opt/Rambox/rambox $out/bin
+
+    # provide resources
+    cp -r usr/share $out
+    substituteInPlace $out/share/applications/rambox.desktop \
+      --replace Exec=/opt/Rambox/rambox Exec=rambox
+  '';
+
+  postFixup = ''
+    wrapProgram $out/opt/Rambox/rambox --prefix PATH : ${xdg_utils}/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Free and Open Source messaging and emailing app that combines common web applications into one";
+    homepage = "https://rambox.pro";
+    license = licenses.mit;
+    maintainers = with maintainers; [ gnidorah ma27 ];
+    platforms = ["i686-linux" "x86_64-linux"];
+    hydraPlatforms = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/pro.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/pro.nix
new file mode 100644
index 000000000000..215aebf2b2fa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/pro.nix
@@ -0,0 +1,53 @@
+{ autoPatchelfHook, electron, fetchurl, makeDesktopItem, makeWrapper, nodePackages, nss, stdenv, xdg_utils, xorg }:
+
+stdenv.mkDerivation rec {
+  pname = "rambox-pro";
+  version = "1.3.1";
+
+  dontBuild = true;
+  dontStrip = true;
+
+  buildInputs = [ nss xorg.libXext xorg.libxkbfile xorg.libXScrnSaver ];
+  nativeBuildInputs = [ autoPatchelfHook makeWrapper nodePackages.asar ];
+
+  src = fetchurl {
+    url = "https://github.com/ramboxapp/download/releases/download/v${version}/RamboxPro-${version}-linux-x64.tar.gz";
+    sha256 = "1cy4h2yzrpr3gxd16p4323w06i67d82jjlyx737c3ngzw7aahmq1";
+  };
+
+  installPhase = ''
+    mkdir -p $out/{bin,resources/dist/renderer/assets/images/app,share/applications,share/icons/hicolor/256x256/apps}
+
+    asar e resources/app.asar $out/resources
+
+    substituteInPlace "$out/resources/dist/electron/main.js" \
+      --replace ",isHidden:" ",path:\"$out/bin/ramboxpro\",isHidden:"
+
+    cp $desktopItem/share/applications/* $out/share/applications
+    cp $out/resources/dist/electron/imgs/256x256.png $out/share/icons/hicolor/256x256/apps/ramboxpro.png
+    cp $out/resources/dist/electron/imgs/256x256.png $out/resources/dist/renderer/assets/images/app/icon.png
+  '';
+
+  postFixup = ''
+    makeWrapper ${electron}/bin/electron $out/bin/ramboxpro \
+      --add-flags "$out/resources --without-update" \
+      --prefix PATH : ${xdg_utils}/bin
+  '';
+
+  desktopItem = makeDesktopItem {
+    name = "rambox-pro";
+    exec = "ramboxpro";
+    icon = "ramboxpro";
+    type = "Application";
+    desktopName = "Rambox Pro";
+    categories = "Network;";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Messaging and emailing app that combines common web applications into one";
+    homepage = "https://rambox.pro";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ chrisaw ];
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/ratox/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/ratox/default.nix
new file mode 100644
index 000000000000..212ba3a31a4b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/ratox/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchgit, libtoxcore
+, conf ? null }:
+
+with stdenv.lib;
+
+let
+  configFile = optionalString (conf!=null) (builtins.toFile "config.h" conf);
+
+in stdenv.mkDerivation {
+  name = "ratox-0.4.20180303";
+
+  src = fetchgit {
+    url = "git://git.2f30.org/ratox.git";
+    rev = "269f7f97fb374a8f9c0b82195c21de15b81ddbbb";
+    sha256 = "0bpn37h8jvsqd66fkba8ky42nydc8acawa5x31yxqlxc8mc66k74";
+  };
+
+  buildInputs = [ libtoxcore ];
+
+  preConfigure = ''
+    substituteInPlace config.mk \
+      --replace '-lsodium -lopus -lvpx ' ""
+
+    ${optionalString (conf!=null) "cp ${configFile} config.def.h"}
+  '';
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = {
+    description = "FIFO based tox client";
+    homepage = "http://ratox.2f30.org/";
+    license = licenses.isc;
+    maintainers = with maintainers; [ ehmry ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/ricochet/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/ricochet/default.nix
new file mode 100644
index 000000000000..de46c891d1fa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/ricochet/default.nix
@@ -0,0 +1,59 @@
+{ mkDerivation, stdenv, fetchurl, pkgconfig, makeDesktopItem
+, qtbase, qttools, qtmultimedia, qtquick1, qtquickcontrols
+, openssl, protobuf, qmake
+}:
+
+mkDerivation rec {
+  pname = "ricochet";
+  version = "1.1.4";
+
+  src = fetchurl {
+    url = "https://github.com/ricochet-im/ricochet/archive/v${version}.tar.gz";
+    sha256 = "1kfj42ksvj7axc809lb8siqzj5hck2pib427b63a3ipnqc5h1faf";
+  };
+
+  desktopItem = makeDesktopItem {
+    name = "ricochet";
+    exec = "ricochet";
+    icon = "ricochet";
+    desktopName = "Ricochet";
+    genericName = "Ricochet";
+    comment = meta.description;
+    categories = "Office;Email;";
+  };
+
+  buildInputs = [
+    qtbase qttools qtmultimedia qtquick1 qtquickcontrols
+    openssl protobuf
+  ];
+
+  nativeBuildInputs = [ pkgconfig qmake ];
+
+  preConfigure = ''
+    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config --cflags openssl)"
+  '';
+
+  qmakeFlags = [ "DEFINES+=RICOCHET_NO_PORTABLE" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp ricochet $out/bin
+
+    mkdir -p $out/share/applications
+    cp $desktopItem/share/applications"/"* $out/share/applications
+
+    mkdir -p $out/share/pixmaps
+    cp icons/ricochet.png $out/share/pixmaps/ricochet.png
+  '';
+
+  # RCC: Error in 'translation/embedded.qrc': Cannot find file 'ricochet_en.qm'
+  enableParallelBuilding = false;
+
+  meta = with stdenv.lib; {
+    description = "Anonymous peer-to-peer instant messaging";
+    homepage = "https://ricochet.im";
+    license = licenses.bsd3;
+    maintainers = [ maintainers.codsl maintainers.jgillich maintainers.np ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/default.nix
new file mode 100644
index 000000000000..4a95debdfd10
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/default.nix
@@ -0,0 +1,150 @@
+{ stdenv
+, fetchgit
+, which
+, autoreconfHook
+, pkgconfig
+, automake
+, libtool
+, pjsip
+, libyamlcpp
+, alsaLib
+, libpulseaudio
+, libsamplerate
+, libsndfile
+, dbus
+, dbus_cplusplus
+, ffmpeg_3
+, udev
+, pcre
+, gsm
+, speex
+, boost
+, opendht
+, msgpack
+, gnutls
+, zlib
+, jsoncpp
+, xorg
+, libargon2
+, cryptopp
+, openssl
+, perl
+, python3
+, libupnp
+, speexdsp
+, fetchFromGitHub
+, cmake
+, asio
+}:
+
+let
+  myPython = python3.withPackages (ps: with ps; [
+    pygobject3
+    dbus-python
+  ]);
+
+  src = fetchgit {
+    url = "https://gitlab.savoirfairelinux.com/ring/ring-daemon.git";
+    rev = "006b8dc7be08fe9beb68709af71004e7bc1ceb5c";
+    sha256 = "0ih9g0rismrhx6nqcy3jqfbcs166grg0shnfmrnmykl9h0xy8z47";
+  };
+
+  patchdir = "${src}/contrib/src";
+
+  restbed = import ./restbed.nix {
+    inherit stdenv fetchFromGitHub cmake asio openssl;
+    patches = [
+    "${patchdir}/restbed/CMakeLists.patch"
+    "${patchdir}/restbed/strand.patch"
+    "${patchdir}/restbed/uri_cpp.patch"
+    "${patchdir}/restbed/dns-resolution-error.patch"
+    "${patchdir}/restbed/string.patch"
+    ];
+  };
+
+  pjsip' = stdenv.lib.overrideDerivation pjsip (old: {
+    patches = [
+      "${patchdir}/pjproject/gnutls.patch"
+      ./notestsapps.patch # this one had to be modified
+      "${patchdir}/pjproject/fix_base64.patch"
+      "${patchdir}/pjproject/ipv6.patch"
+      "${patchdir}/pjproject/ice_config.patch"
+      "${patchdir}/pjproject/multiple_listeners.patch"
+      "${patchdir}/pjproject/pj_ice_sess.patch"
+      "${patchdir}/pjproject/fix_turn_fallback.patch"
+      "${patchdir}/pjproject/fix_ioqueue_ipv6_sendto.patch"
+      "${patchdir}/pjproject/add_dtls_transport.patch"
+    ];
+    CFLAGS = "-g -DPJ_ICE_MAX_CAND=256 -DPJ_ICE_MAX_CHECKS=150 -DPJ_ICE_COMP_BITS=2 -DPJ_ICE_MAX_STUN=3 -DPJSIP_MAX_PKT_LEN=8000";
+  });
+in
+stdenv.mkDerivation {
+  pname = "ring-daemon";
+  version = "2017-07-11";
+
+  inherit src;
+
+  nativeBuildInputs = [
+    which
+    autoreconfHook
+    automake
+    libtool
+    pkgconfig
+  ];
+
+  buildInputs = [
+    pjsip'
+    libyamlcpp
+    alsaLib
+    libpulseaudio
+    libsamplerate
+    libsndfile
+    dbus
+    dbus_cplusplus
+    ffmpeg_3
+    udev
+    pcre
+    gsm
+    speex
+    boost
+    opendht
+    msgpack
+    gnutls
+    zlib
+    jsoncpp
+    restbed
+    xorg.libX11
+    libargon2
+    cryptopp
+    openssl
+    perl
+    libupnp
+    speexdsp
+  ];
+
+  postInstall = ''
+    mkdir $out/bin
+    ln -s $out/lib/ring/dring $out/bin/dring
+    cp -R ./tools/dringctrl/ $out/
+    substitute ./tools/dringctrl/dringctrl.py $out/dringctrl/dringctrl.py \
+      --replace '#!/usr/bin/env python3' "#!${myPython}/bin/python3"
+    chmod +x $out/dringctrl/dringctrl.py
+    ln -s $out/dringctrl/dringctrl.py $out/bin/dringctrl.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A Voice-over-IP software phone";
+    longDescription = ''
+      As the SIP/audio daemon and the user interface are separate processes, it
+      is easy to provide different user interfaces. GNU Ring comes with various
+      graphical user interfaces and even scripts to control the daemon from the
+      shell.
+    '';
+    homepage = "https://ring.cx";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ taeer olynch ];
+    platforms = platforms.linux;
+    # pjsip' fails to compile with the supplied patch set, see: https://hydra.nixos.org/build/68667921/nixlog/4
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/notestsapps.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/notestsapps.patch
new file mode 100644
index 000000000000..842060935b04
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/notestsapps.patch
@@ -0,0 +1,106 @@
+/* diff --git a/Makefile b/Makefile */
+/* index 33a4e6b..a486eb7 100644 */
+/* --- a/Makefile */
+/* +++ b/Makefile */
+/* @@ -4,7 +4,7 @@ include build/host-$(HOST_NAME).mak */
+/*  include version.mak */
+ 
+/*  LIB_DIRS = pjlib/build pjlib-util/build pjnath/build third_party/build pjmedia/build pjsip/build */
+/* -DIRS = $(LIB_DIRS) pjsip-apps/build $(EXTRA_DIRS) */
+/* +DIRS = $(LIB_DIRS) $(EXTRA_DIRS) */
+ 
+/*  ifdef MINSIZE */
+/*  MAKE_FLAGS := MINSIZE=1 */
+diff --git a/pjlib-util/build/Makefile b/pjlib-util/build/Makefile
+index cb601cb..862a78a 100644
+--- a/pjlib-util/build/Makefile
++++ b/pjlib-util/build/Makefile
+@@ -54,7 +54,6 @@ export UTIL_TEST_OBJS += xml.o encryption.o stun.o resolver_test.o test.o \
+ export UTIL_TEST_CFLAGS += $(_CFLAGS)
+ export UTIL_TEST_CXXFLAGS += $(_CXXFLAGS)
+ export UTIL_TEST_LDFLAGS += $(PJLIB_UTIL_LDLIB) $(PJLIB_LDLIB) $(_LDFLAGS)
+-export UTIL_TEST_EXE:=pjlib-util-test-$(TARGET_NAME)$(HOST_EXE)
+ 
+ 	
+ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT 
+diff --git a/pjlib/build/Makefile b/pjlib/build/Makefile
+index 1e64950..a75fa65 100644
+--- a/pjlib/build/Makefile
++++ b/pjlib/build/Makefile
+@@ -56,7 +56,6 @@ export TEST_OBJS += activesock.o atomic.o echo_clt.o errno.o exception.o \
+ export TEST_CFLAGS += $(_CFLAGS)
+ export TEST_CXXFLAGS += $(_CXXFLAGS)
+ export TEST_LDFLAGS += $(PJLIB_LDLIB) $(_LDFLAGS)
+-export TEST_EXE := pjlib-test-$(TARGET_NAME)$(HOST_EXE)
+ 
+ 
+ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT 
+diff --git a/pjmedia/build/Makefile b/pjmedia/build/Makefile
+index 8012cb7..2ca283a 100644
+--- a/pjmedia/build/Makefile
++++ b/pjmedia/build/Makefile
+@@ -165,7 +165,6 @@ export PJMEDIA_TEST_LDFLAGS += $(PJMEDIA_CODEC_LDLIB) \
+ 			       $(PJLIB_UTIL_LDLIB) \
+ 			       $(PJNATH_LDLIB) \
+ 			       $(_LDFLAGS)
+-export PJMEDIA_TEST_EXE:=pjmedia-test-$(TARGET_NAME)$(HOST_EXE)
+ 
+ 	
+ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT 
+diff --git a/pjnath/build/Makefile b/pjnath/build/Makefile
+index 1bc08b5..109f79b 100644
+--- a/pjnath/build/Makefile
++++ b/pjnath/build/Makefile
+@@ -54,7 +54,6 @@ export PJNATH_TEST_OBJS += ice_test.o stun.o sess_auth.o server.o concur_test.o
+ export PJNATH_TEST_CFLAGS += $(_CFLAGS)
+ export PJNATH_TEST_CXXFLAGS += $(_CXXFLAGS)
+ export PJNATH_TEST_LDFLAGS += $(PJNATH_LDLIB) $(PJLIB_UTIL_LDLIB) $(PJLIB_LDLIB) $(_LDFLAGS)
+-export PJNATH_TEST_EXE:=pjnath-test-$(TARGET_NAME)$(HOST_EXE)
+ 
+ 	
+ ###############################################################################
+@@ -65,7 +64,6 @@ export PJTURN_CLIENT_OBJS += client_main.o
+ export PJTURN_CLIENT_CFLAGS += $(_CFLAGS)
+ export PJTURN_CLIENT_CXXFLAGS += $(_CXXFLAGS)
+ export PJTURN_CLIENT_LDFLAGS += $(PJNATH_LDLIB) $(PJLIB_UTIL_LDLIB) $(PJLIB_LDLIB) $(_LDFLAGS)
+-export PJTURN_CLIENT_EXE:=pjturn-client-$(TARGET_NAME)$(HOST_EXE)
+ 
+ ###############################################################################
+ # Defines for building TURN server application
+@@ -76,7 +74,6 @@ export PJTURN_SRV_OBJS += allocation.o auth.o listener_udp.o \
+ export PJTURN_SRV_CFLAGS += $(_CFLAGS)
+ export PJTURN_SRV_CXXFLAGS += $(_CXXFLAGS)
+ export PJTURN_SRV_LDFLAGS += $(PJNATH_LDLIB) $(PJLIB_UTIL_LDLIB) $(PJLIB_LDLIB) $(_LDFLAGS)
+-export PJTURN_SRV_EXE:=pjturn-srv-$(TARGET_NAME)$(HOST_EXE)
+ 
+ 	
+ 	
+diff --git a/pjsip/build/Makefile b/pjsip/build/Makefile
+index d2a5c2a..7e2ec60 100644
+--- a/pjsip/build/Makefile
++++ b/pjsip/build/Makefile
+@@ -140,7 +140,7 @@ export PJSUA2_LIB_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \
+ 			   account.o endpoint.o json.o persistent.o types.o \
+ 			   siptypes.o call.o presence.o media.o
+ export PJSUA2_LIB_CFLAGS += $(_CFLAGS) $(PJ_VIDEO_CFLAGS)
+-export PJSUA2_LIB_CXXFLAGS = $(PJSUA2_LIB_CFLAGS) 
++export PJSUA2_LIB_CXXFLAGS = $(_CXXFLAGS) $(PJ_VIDEO_CFLAGS) 
+ export PJSUA2_LIB_LDFLAGS += $(PJSUA_LIB_LDLIB) \
+ 			     $(PJSIP_UA_LDLIB) \
+ 			     $(PJSIP_SIMPLE_LDLIB) \
+@@ -165,7 +165,6 @@ export PJSUA2_TEST_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \
+ export PJSUA2_TEST_CFLAGS += $(_CFLAGS) $(PJ_VIDEO_CFLAGS)
+ export PJSUA2_TEST_CXXFLAGS = $(PJSUA2_LIB_CFLAGS) 
+ export PJSUA2_TEST_LDFLAGS += $(PJ_LDXXFLAGS) $(PJ_LDXXLIBS) $(LDFLAGS)
+-export PJSUA2_TEST_EXE := pjsua2-test-$(TARGET_NAME)$(HOST_EXE)
+ 
+ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT 
+ 
+@@ -195,7 +194,6 @@ export TEST_LDFLAGS += $(PJSIP_LDLIB) \
+ 		       $(PJLIB_UTIL_LDLIB) \
+ 		       $(PJNATH_LDLIB) \
+ 		       $(_LDFLAGS)
+-export TEST_EXE := pjsip-test-$(TARGET_NAME)$(HOST_EXE)
+ 
+ 	
+ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT 
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/restbed.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/restbed.nix
new file mode 100644
index 000000000000..775b9015eb0e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/restbed.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, asio
+, openssl
+, patches
+}:
+
+stdenv.mkDerivation {
+  pname = "restbed";
+  version = "2016-09-15";
+
+  src = fetchFromGitHub {
+    owner = "Corvusoft";
+    repo = "restbed";
+    rev = "34187502642144ab9f749ab40f5cdbd8cb17a54a";
+    sha256 = "1jb38331fcicyiisqdprhq6zwfc6g518fm3l4qw9aiv5k9nqim22";
+  };
+
+  inherit patches;
+
+  buildInputs = [
+    cmake
+    asio
+    openssl
+  ];
+
+  meta = with stdenv.lib; {
+    description = "HTTP framework for building networked applications";
+    longDescription = ''
+      HTTP framework for building networked applications that require seamless
+      and secure communication, with the flexability to model a range of
+      business processes. Targeting mobile, tablet, desktop, and embedded
+      production environments.
+    '';
+    homepage = "https://corvusoft.co.uk/";
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ taeer ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop-package.json b/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop-package.json
new file mode 100644
index 000000000000..f9a5ebdbebe3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop-package.json
@@ -0,0 +1,112 @@
+{
+  "name": "riot-desktop",
+  "productName": "Riot",
+  "main": "src/electron-main.js",
+  "version": "1.6.5",
+  "description": "A feature-rich client for Matrix.org",
+  "author": "New Vector Ltd.",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/vector-im/riot-desktop"
+  },
+  "license": "Apache-2.0",
+  "files": [],
+  "scripts": {
+    "mkdirs": "mkdirp packages deploys",
+    "fetch": "yarn run mkdirs && node scripts/fetch-package.js",
+    "asar-webapp": "asar p webapp webapp.asar",
+    "start": "electron .",
+    "lint": "eslint src/ scripts/ hak/",
+    "build:native": "yarn run hak",
+    "build32": "electron-builder --ia32",
+    "build64": "electron-builder --x64",
+    "build": "electron-builder",
+    "docker:setup": "docker build -t riot-desktop-dockerbuild dockerbuild",
+    "docker:build:native": "scripts/in-docker.sh yarn run hak",
+    "docker:build": "scripts/in-docker.sh yarn run build",
+    "docker:install": "scripts/in-docker.sh yarn install",
+    "debrepo": "scripts/mkrepo.sh",
+    "clean": "rimraf webapp.asar dist packages deploys",
+    "hak": "node scripts/hak/index.js"
+  },
+  "dependencies": {
+    "auto-launch": "^5.0.1",
+    "electron-store": "^2.0.0",
+    "electron-window-state": "^4.1.0",
+    "minimist": "^1.2.3",
+    "png-to-ico": "^1.0.2"
+  },
+  "devDependencies": {
+    "asar": "^2.0.1",
+    "electron-builder": "^22.3.2",
+    "electron-builder-squirrel-windows": "^22.3.2",
+    "electron-devtools-installer": "^2.2.4",
+    "electron-notarize": "^0.2.0",
+    "eslint": "^5.8.0",
+    "eslint-config-google": "^0.7.1",
+    "eslint-plugin-babel": "^4.1.2",
+    "find-npm-prefix": "^1.0.2",
+    "fs-extra": "^8.1.0",
+    "glob": "^7.1.6",
+    "matrix-js-sdk": "6.2.2",
+    "mkdirp": "^1.0.3",
+    "needle": "^2.3.2",
+    "node-pre-gyp": "^0.14.0",
+    "npm": "^6.13.7",
+    "rimraf": "^3.0.2",
+    "semver": "^7.1.3",
+    "tar": "^6.0.1"
+  },
+  "hakDependencies": {
+    "matrix-seshat": "^1.3.3"
+  },
+  "build": {
+    "appId": "im.riot.app",
+    "electronVersion": "8.0.3",
+    "files": [
+      "package.json",
+      {
+        "from": ".hak/hakModules",
+        "to": "node_modules"
+      },
+      "src/**"
+    ],
+    "extraResources": [
+      {
+        "from": "res/img",
+        "to": "img"
+      },
+      "webapp.asar"
+    ],
+    "linux": {
+      "target": "deb",
+      "category": "Network;InstantMessaging;Chat",
+      "maintainer": "support@riot.im",
+      "desktop": {
+        "StartupWMClass": "riot"
+      }
+    },
+    "mac": {
+      "category": "public.app-category.social-networking",
+      "darkModeSupport": true
+    },
+    "win": {
+      "target": {
+        "target": "squirrel"
+      },
+      "sign": "scripts/electron_winSign"
+    },
+    "directories": {
+      "output": "dist"
+    },
+    "afterSign": "scripts/electron_afterSign",
+    "protocols": [
+      {
+        "name": "riot",
+        "schemes": [
+          "riot"
+        ]
+      }
+    ]
+  }
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop-yarndeps.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop-yarndeps.nix
new file mode 100644
index 000000000000..30e1c9464755
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop-yarndeps.nix
@@ -0,0 +1,5669 @@
+{ fetchurl, fetchgit, linkFarm, runCommandNoCC, gnutar }: rec {
+  offline_cache = linkFarm "offline" packages;
+  packages = [
+    {
+      name = "7zip_bin___7zip_bin_4.0.2.tgz";
+      path = fetchurl {
+        name = "7zip_bin___7zip_bin_4.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-4.0.2.tgz";
+        sha1 = "6abbdc22f33cab742053777a26db2e25ca527179";
+      };
+    }
+    {
+      name = "7zip_bin___7zip_bin_5.0.3.tgz";
+      path = fetchurl {
+        name = "7zip_bin___7zip_bin_5.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.0.3.tgz";
+        sha1 = "bc5b5532ecafd923a61f2fb097e3b108c0106a3f";
+      };
+    }
+    {
+      name = "7zip___7zip_0.0.6.tgz";
+      path = fetchurl {
+        name = "7zip___7zip_0.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/7zip/-/7zip-0.0.6.tgz";
+        sha1 = "9cafb171af82329490353b4816f03347aa150a30";
+      };
+    }
+    {
+      name = "_babel_code_frame___code_frame_7.5.5.tgz";
+      path = fetchurl {
+        name = "_babel_code_frame___code_frame_7.5.5.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz";
+        sha1 = "bc0782f6d69f7b7d49531219699b988f669a8f9d";
+      };
+    }
+    {
+      name = "_babel_highlight___highlight_7.5.0.tgz";
+      path = fetchurl {
+        name = "_babel_highlight___highlight_7.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz";
+        sha1 = "56d11312bd9248fa619591d02472be6e8cb32540";
+      };
+    }
+    {
+      name = "_babel_runtime___runtime_7.9.2.tgz";
+      path = fetchurl {
+        name = "_babel_runtime___runtime_7.9.2.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz";
+        sha1 = "d90df0583a3a252f09aaa619665367bae518db06";
+      };
+    }
+    {
+      name = "_develar_schema_utils___schema_utils_2.1.0.tgz";
+      path = fetchurl {
+        name = "_develar_schema_utils___schema_utils_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/@develar/schema-utils/-/schema-utils-2.1.0.tgz";
+        sha1 = "eceb1695bfbed6f6bb84666d5d3abe5e1fd54e17";
+      };
+    }
+    {
+      name = "_iarna_cli___cli_1.2.0.tgz";
+      path = fetchurl {
+        name = "_iarna_cli___cli_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/@iarna/cli/-/cli-1.2.0.tgz";
+        sha1 = "0f7af5e851afe895104583c4ca07377a8094d641";
+      };
+    }
+    {
+      name = "_sindresorhus_is___is_0.14.0.tgz";
+      path = fetchurl {
+        name = "_sindresorhus_is___is_0.14.0.tgz";
+        url  = "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz";
+        sha1 = "9fb3a3cf3132328151f353de4632e01e52102bea";
+      };
+    }
+    {
+      name = "_szmarczak_http_timer___http_timer_1.1.2.tgz";
+      path = fetchurl {
+        name = "_szmarczak_http_timer___http_timer_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz";
+        sha1 = "b1665e2c461a2cd92f4c1bbf50d5454de0d4b421";
+      };
+    }
+    {
+      name = "_types_color_name___color_name_1.1.1.tgz";
+      path = fetchurl {
+        name = "_types_color_name___color_name_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz";
+        sha1 = "1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0";
+      };
+    }
+    {
+      name = "_types_debug___debug_4.1.5.tgz";
+      path = fetchurl {
+        name = "_types_debug___debug_4.1.5.tgz";
+        url  = "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz";
+        sha1 = "b14efa8852b7768d898906613c23f688713e02cd";
+      };
+    }
+    {
+      name = "_types_fs_extra___fs_extra_8.0.1.tgz";
+      path = fetchurl {
+        name = "_types_fs_extra___fs_extra_8.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.0.1.tgz";
+        sha1 = "a2378d6e7e8afea1564e44aafa2e207dadf77686";
+      };
+    }
+    {
+      name = "_types_node___node_13.7.1.tgz";
+      path = fetchurl {
+        name = "_types_node___node_13.7.1.tgz";
+        url  = "https://registry.yarnpkg.com/@types/node/-/node-13.7.1.tgz";
+        sha1 = "238eb34a66431b71d2aaddeaa7db166f25971a0d";
+      };
+    }
+    {
+      name = "_types_node___node_9.6.55.tgz";
+      path = fetchurl {
+        name = "_types_node___node_9.6.55.tgz";
+        url  = "https://registry.yarnpkg.com/@types/node/-/node-9.6.55.tgz";
+        sha1 = "7cc1358c9c18e71f6c020e410962971863232cf5";
+      };
+    }
+    {
+      name = "JSONStream___JSONStream_1.3.5.tgz";
+      path = fetchurl {
+        name = "JSONStream___JSONStream_1.3.5.tgz";
+        url  = "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz";
+        sha1 = "3208c1f08d3a4d99261ab64f92302bc15e111ca0";
+      };
+    }
+    {
+      name = "abbrev___abbrev_1.1.1.tgz";
+      path = fetchurl {
+        name = "abbrev___abbrev_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz";
+        sha1 = "f8f2c887ad10bf67f634f005b6987fed3179aac8";
+      };
+    }
+    {
+      name = "acorn_jsx___acorn_jsx_5.1.0.tgz";
+      path = fetchurl {
+        name = "acorn_jsx___acorn_jsx_5.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz";
+        sha1 = "294adb71b57398b0680015f0a38c563ee1db5384";
+      };
+    }
+    {
+      name = "acorn___acorn_6.4.1.tgz";
+      path = fetchurl {
+        name = "acorn___acorn_6.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz";
+        sha1 = "531e58ba3f51b9dacb9a6646ca4debf5b14ca474";
+      };
+    }
+    {
+      name = "agent_base___agent_base_4.3.0.tgz";
+      path = fetchurl {
+        name = "agent_base___agent_base_4.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz";
+        sha1 = "8165f01c436009bccad0b1d122f05ed770efc6ee";
+      };
+    }
+    {
+      name = "agent_base___agent_base_4.2.1.tgz";
+      path = fetchurl {
+        name = "agent_base___agent_base_4.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz";
+        sha1 = "d89e5999f797875674c07d87f260fc41e83e8ca9";
+      };
+    }
+    {
+      name = "agentkeepalive___agentkeepalive_3.5.2.tgz";
+      path = fetchurl {
+        name = "agentkeepalive___agentkeepalive_3.5.2.tgz";
+        url  = "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz";
+        sha1 = "a113924dd3fa24a0bc3b78108c450c2abee00f67";
+      };
+    }
+    {
+      name = "ajv_keywords___ajv_keywords_3.4.1.tgz";
+      path = fetchurl {
+        name = "ajv_keywords___ajv_keywords_3.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz";
+        sha1 = "ef916e271c64ac12171fd8384eaae6b2345854da";
+      };
+    }
+    {
+      name = "ajv___ajv_6.10.2.tgz";
+      path = fetchurl {
+        name = "ajv___ajv_6.10.2.tgz";
+        url  = "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz";
+        sha1 = "d3cea04d6b017b2894ad69040fec8b623eb4bd52";
+      };
+    }
+    {
+      name = "another_json___another_json_0.2.0.tgz";
+      path = fetchurl {
+        name = "another_json___another_json_0.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/another-json/-/another-json-0.2.0.tgz";
+        sha1 = "b5f4019c973b6dd5c6506a2d93469cb6d32aeedc";
+      };
+    }
+    {
+      name = "ansi_align___ansi_align_2.0.0.tgz";
+      path = fetchurl {
+        name = "ansi_align___ansi_align_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz";
+        sha1 = "c36aeccba563b89ceb556f3690f0b1d9e3547f7f";
+      };
+    }
+    {
+      name = "ansi_align___ansi_align_3.0.0.tgz";
+      path = fetchurl {
+        name = "ansi_align___ansi_align_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz";
+        sha1 = "b536b371cf687caaef236c18d3e21fe3797467cb";
+      };
+    }
+    {
+      name = "ansi_escapes___ansi_escapes_3.2.0.tgz";
+      path = fetchurl {
+        name = "ansi_escapes___ansi_escapes_3.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz";
+        sha1 = "8780b98ff9dbf5638152d1f1fe5c1d7b4442976b";
+      };
+    }
+    {
+      name = "ansi_regex___ansi_regex_2.1.1.tgz";
+      path = fetchurl {
+        name = "ansi_regex___ansi_regex_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz";
+        sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
+      };
+    }
+    {
+      name = "ansi_regex___ansi_regex_3.0.0.tgz";
+      path = fetchurl {
+        name = "ansi_regex___ansi_regex_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz";
+        sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
+      };
+    }
+    {
+      name = "ansi_regex___ansi_regex_4.1.0.tgz";
+      path = fetchurl {
+        name = "ansi_regex___ansi_regex_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz";
+        sha1 = "8b9f8f08cf1acb843756a839ca8c7e3168c51997";
+      };
+    }
+    {
+      name = "ansi_regex___ansi_regex_5.0.0.tgz";
+      path = fetchurl {
+        name = "ansi_regex___ansi_regex_5.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz";
+        sha1 = "388539f55179bf39339c81af30a654d69f87cb75";
+      };
+    }
+    {
+      name = "ansi_styles___ansi_styles_3.2.1.tgz";
+      path = fetchurl {
+        name = "ansi_styles___ansi_styles_3.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz";
+        sha1 = "41fbb20243e50b12be0f04b8dedbf07520ce841d";
+      };
+    }
+    {
+      name = "ansi_styles___ansi_styles_4.2.1.tgz";
+      path = fetchurl {
+        name = "ansi_styles___ansi_styles_4.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz";
+        sha1 = "90ae75c424d008d2624c5bf29ead3177ebfcf359";
+      };
+    }
+    {
+      name = "ansicolors___ansicolors_0.3.2.tgz";
+      path = fetchurl {
+        name = "ansicolors___ansicolors_0.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz";
+        sha1 = "665597de86a9ffe3aa9bfbe6cae5c6ea426b4979";
+      };
+    }
+    {
+      name = "ansistyles___ansistyles_0.1.3.tgz";
+      path = fetchurl {
+        name = "ansistyles___ansistyles_0.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz";
+        sha1 = "5de60415bda071bb37127854c864f41b23254539";
+      };
+    }
+    {
+      name = "app_builder_bin___app_builder_bin_3.5.2.tgz";
+      path = fetchurl {
+        name = "app_builder_bin___app_builder_bin_3.5.2.tgz";
+        url  = "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-3.5.2.tgz";
+        sha1 = "fba56e6e9ef76fcd37816738c5f9a0b3992d7183";
+      };
+    }
+    {
+      name = "app_builder_lib___app_builder_lib_22.3.2.tgz";
+      path = fetchurl {
+        name = "app_builder_lib___app_builder_lib_22.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-22.3.2.tgz";
+        sha1 = "d43e0bdff91d484c0bd07d7248043dbb2665b8ac";
+      };
+    }
+    {
+      name = "app_builder_lib___app_builder_lib_22.3.3.tgz";
+      path = fetchurl {
+        name = "app_builder_lib___app_builder_lib_22.3.3.tgz";
+        url  = "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-22.3.3.tgz";
+        sha1 = "9a95a3c14f69fb6131834dd840fba561191c9998";
+      };
+    }
+    {
+      name = "applescript___applescript_1.0.0.tgz";
+      path = fetchurl {
+        name = "applescript___applescript_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/applescript/-/applescript-1.0.0.tgz";
+        sha1 = "bb87af568cad034a4e48c4bdaf6067a3a2701317";
+      };
+    }
+    {
+      name = "aproba___aproba_1.2.0.tgz";
+      path = fetchurl {
+        name = "aproba___aproba_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz";
+        sha1 = "6802e6264efd18c790a1b0d517f0f2627bf2c94a";
+      };
+    }
+    {
+      name = "aproba___aproba_2.0.0.tgz";
+      path = fetchurl {
+        name = "aproba___aproba_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz";
+        sha1 = "52520b8ae5b569215b354efc0caa3fe1e45a8adc";
+      };
+    }
+    {
+      name = "archiver_utils___archiver_utils_2.1.0.tgz";
+      path = fetchurl {
+        name = "archiver_utils___archiver_utils_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz";
+        sha1 = "e8a460e94b693c3e3da182a098ca6285ba9249e2";
+      };
+    }
+    {
+      name = "archiver___archiver_3.1.1.tgz";
+      path = fetchurl {
+        name = "archiver___archiver_3.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/archiver/-/archiver-3.1.1.tgz";
+        sha1 = "9db7819d4daf60aec10fe86b16cb9258ced66ea0";
+      };
+    }
+    {
+      name = "archy___archy_1.0.0.tgz";
+      path = fetchurl {
+        name = "archy___archy_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz";
+        sha1 = "f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40";
+      };
+    }
+    {
+      name = "are_we_there_yet___are_we_there_yet_1.1.5.tgz";
+      path = fetchurl {
+        name = "are_we_there_yet___are_we_there_yet_1.1.5.tgz";
+        url  = "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz";
+        sha1 = "4b35c2944f062a8bfcda66410760350fe9ddfc21";
+      };
+    }
+    {
+      name = "argparse___argparse_1.0.10.tgz";
+      path = fetchurl {
+        name = "argparse___argparse_1.0.10.tgz";
+        url  = "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz";
+        sha1 = "bcd6791ea5ae09725e17e5ad988134cd40b3d911";
+      };
+    }
+    {
+      name = "asap___asap_2.0.6.tgz";
+      path = fetchurl {
+        name = "asap___asap_2.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz";
+        sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46";
+      };
+    }
+    {
+      name = "asar___asar_2.0.1.tgz";
+      path = fetchurl {
+        name = "asar___asar_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/asar/-/asar-2.0.1.tgz";
+        sha1 = "8518a1c62c238109c15a5f742213e83a09b9fd38";
+      };
+    }
+    {
+      name = "asn1___asn1_0.2.4.tgz";
+      path = fetchurl {
+        name = "asn1___asn1_0.2.4.tgz";
+        url  = "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz";
+        sha1 = "8d2475dfab553bb33e77b54e59e880bb8ce23136";
+      };
+    }
+    {
+      name = "assert_plus___assert_plus_1.0.0.tgz";
+      path = fetchurl {
+        name = "assert_plus___assert_plus_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz";
+        sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
+      };
+    }
+    {
+      name = "astral_regex___astral_regex_1.0.0.tgz";
+      path = fetchurl {
+        name = "astral_regex___astral_regex_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz";
+        sha1 = "6c8c3fb827dd43ee3918f27b82782ab7658a6fd9";
+      };
+    }
+    {
+      name = "async_exit_hook___async_exit_hook_2.0.1.tgz";
+      path = fetchurl {
+        name = "async_exit_hook___async_exit_hook_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz";
+        sha1 = "8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3";
+      };
+    }
+    {
+      name = "async___async_2.6.3.tgz";
+      path = fetchurl {
+        name = "async___async_2.6.3.tgz";
+        url  = "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz";
+        sha1 = "d72625e2344a3656e3a3ad4fa749fa83299d82ff";
+      };
+    }
+    {
+      name = "asynckit___asynckit_0.4.0.tgz";
+      path = fetchurl {
+        name = "asynckit___asynckit_0.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz";
+        sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
+      };
+    }
+    {
+      name = "auto_launch___auto_launch_5.0.5.tgz";
+      path = fetchurl {
+        name = "auto_launch___auto_launch_5.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/auto-launch/-/auto-launch-5.0.5.tgz";
+        sha1 = "d14bd002b1ef642f85e991a6195ff5300c8ad3c0";
+      };
+    }
+    {
+      name = "aws_sign2___aws_sign2_0.7.0.tgz";
+      path = fetchurl {
+        name = "aws_sign2___aws_sign2_0.7.0.tgz";
+        url  = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz";
+        sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
+      };
+    }
+    {
+      name = "aws4___aws4_1.9.0.tgz";
+      path = fetchurl {
+        name = "aws4___aws4_1.9.0.tgz";
+        url  = "https://registry.yarnpkg.com/aws4/-/aws4-1.9.0.tgz";
+        sha1 = "24390e6ad61386b0a747265754d2a17219de862c";
+      };
+    }
+    {
+      name = "balanced_match___balanced_match_1.0.0.tgz";
+      path = fetchurl {
+        name = "balanced_match___balanced_match_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz";
+        sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
+      };
+    }
+    {
+      name = "base_x___base_x_3.0.7.tgz";
+      path = fetchurl {
+        name = "base_x___base_x_3.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/base-x/-/base-x-3.0.7.tgz";
+        sha1 = "1c5a7fafe8f66b4114063e8da102799d4e7c408f";
+      };
+    }
+    {
+      name = "base64_js___base64_js_1.3.1.tgz";
+      path = fetchurl {
+        name = "base64_js___base64_js_1.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz";
+        sha1 = "58ece8cb75dd07e71ed08c736abc5fac4dbf8df1";
+      };
+    }
+    {
+      name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
+      path = fetchurl {
+        name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
+        sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
+      };
+    }
+    {
+      name = "bignumber.js___bignumber.js_2.4.0.tgz";
+      path = fetchurl {
+        name = "bignumber.js___bignumber.js_2.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-2.4.0.tgz";
+        sha1 = "838a992da9f9d737e0f4b2db0be62bb09dd0c5e8";
+      };
+    }
+    {
+      name = "bin_links___bin_links_1.1.7.tgz";
+      path = fetchurl {
+        name = "bin_links___bin_links_1.1.7.tgz";
+        url  = "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.7.tgz";
+        sha1 = "34b79ea9d0e575d7308afeff0c6b2fc24c793359";
+      };
+    }
+    {
+      name = "bl___bl_3.0.0.tgz";
+      path = fetchurl {
+        name = "bl___bl_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/bl/-/bl-3.0.0.tgz";
+        sha1 = "3611ec00579fd18561754360b21e9f784500ff88";
+      };
+    }
+    {
+      name = "bluebird_lst___bluebird_lst_1.0.9.tgz";
+      path = fetchurl {
+        name = "bluebird_lst___bluebird_lst_1.0.9.tgz";
+        url  = "https://registry.yarnpkg.com/bluebird-lst/-/bluebird-lst-1.0.9.tgz";
+        sha1 = "a64a0e4365658b9ab5fe875eb9dfb694189bb41c";
+      };
+    }
+    {
+      name = "bluebird___bluebird_3.7.2.tgz";
+      path = fetchurl {
+        name = "bluebird___bluebird_3.7.2.tgz";
+        url  = "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz";
+        sha1 = "9f229c15be272454ffa973ace0dbee79a1b0c36f";
+      };
+    }
+    {
+      name = "bmp_js___bmp_js_0.0.3.tgz";
+      path = fetchurl {
+        name = "bmp_js___bmp_js_0.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.0.3.tgz";
+        sha1 = "64113e9c7cf1202b376ed607bf30626ebe57b18a";
+      };
+    }
+    {
+      name = "boxen___boxen_1.3.0.tgz";
+      path = fetchurl {
+        name = "boxen___boxen_1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz";
+        sha1 = "55c6c39a8ba58d9c61ad22cd877532deb665a20b";
+      };
+    }
+    {
+      name = "boxen___boxen_4.2.0.tgz";
+      path = fetchurl {
+        name = "boxen___boxen_4.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz";
+        sha1 = "e411b62357d6d6d36587c8ac3d5d974daa070e64";
+      };
+    }
+    {
+      name = "brace_expansion___brace_expansion_1.1.11.tgz";
+      path = fetchurl {
+        name = "brace_expansion___brace_expansion_1.1.11.tgz";
+        url  = "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz";
+        sha1 = "3c7fcbf529d87226f3d2f52b966ff5271eb441dd";
+      };
+    }
+    {
+      name = "browser_request___browser_request_0.3.3.tgz";
+      path = fetchurl {
+        name = "browser_request___browser_request_0.3.3.tgz";
+        url  = "https://registry.yarnpkg.com/browser-request/-/browser-request-0.3.3.tgz";
+        sha1 = "9ece5b5aca89a29932242e18bf933def9876cc17";
+      };
+    }
+    {
+      name = "bs58___bs58_4.0.1.tgz";
+      path = fetchurl {
+        name = "bs58___bs58_4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz";
+        sha1 = "be161e76c354f6f788ae4071f63f34e8c4f0a42a";
+      };
+    }
+    {
+      name = "buffer_crc32___buffer_crc32_0.2.13.tgz";
+      path = fetchurl {
+        name = "buffer_crc32___buffer_crc32_0.2.13.tgz";
+        url  = "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz";
+        sha1 = "0d333e3f00eac50aa1454abd30ef8c2a5d9a7242";
+      };
+    }
+    {
+      name = "buffer_equal___buffer_equal_0.0.1.tgz";
+      path = fetchurl {
+        name = "buffer_equal___buffer_equal_0.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz";
+        sha1 = "91bc74b11ea405bc916bc6aa908faafa5b4aac4b";
+      };
+    }
+    {
+      name = "buffer_from___buffer_from_1.1.1.tgz";
+      path = fetchurl {
+        name = "buffer_from___buffer_from_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz";
+        sha1 = "32713bc028f75c02fdb710d7c7bcec1f2c6070ef";
+      };
+    }
+    {
+      name = "buffer___buffer_5.4.3.tgz";
+      path = fetchurl {
+        name = "buffer___buffer_5.4.3.tgz";
+        url  = "https://registry.yarnpkg.com/buffer/-/buffer-5.4.3.tgz";
+        sha1 = "3fbc9c69eb713d323e3fc1a895eee0710c072115";
+      };
+    }
+    {
+      name = "builder_util_runtime___builder_util_runtime_8.6.0.tgz";
+      path = fetchurl {
+        name = "builder_util_runtime___builder_util_runtime_8.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.6.0.tgz";
+        sha1 = "b7007c30126da9a90e99932128d2922c8c178649";
+      };
+    }
+    {
+      name = "builder_util___builder_util_22.3.2.tgz";
+      path = fetchurl {
+        name = "builder_util___builder_util_22.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/builder-util/-/builder-util-22.3.2.tgz";
+        sha1 = "23c61aaf0f0006f994087b33a26e47cdaec7aa8d";
+      };
+    }
+    {
+      name = "builder_util___builder_util_22.3.3.tgz";
+      path = fetchurl {
+        name = "builder_util___builder_util_22.3.3.tgz";
+        url  = "https://registry.yarnpkg.com/builder-util/-/builder-util-22.3.3.tgz";
+        sha1 = "62f0527ceaa1a2e4a60596a9b38ad1ffe3e20ae6";
+      };
+    }
+    {
+      name = "builtins___builtins_1.0.3.tgz";
+      path = fetchurl {
+        name = "builtins___builtins_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz";
+        sha1 = "cb94faeb61c8696451db36534e1422f94f0aee88";
+      };
+    }
+    {
+      name = "byline___byline_5.0.0.tgz";
+      path = fetchurl {
+        name = "byline___byline_5.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz";
+        sha1 = "741c5216468eadc457b03410118ad77de8c1ddb1";
+      };
+    }
+    {
+      name = "byte_size___byte_size_5.0.1.tgz";
+      path = fetchurl {
+        name = "byte_size___byte_size_5.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/byte-size/-/byte-size-5.0.1.tgz";
+        sha1 = "4b651039a5ecd96767e71a3d7ed380e48bed4191";
+      };
+    }
+    {
+      name = "cacache___cacache_12.0.3.tgz";
+      path = fetchurl {
+        name = "cacache___cacache_12.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz";
+        sha1 = "be99abba4e1bf5df461cd5a2c1071fc432573390";
+      };
+    }
+    {
+      name = "cacheable_request___cacheable_request_6.1.0.tgz";
+      path = fetchurl {
+        name = "cacheable_request___cacheable_request_6.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz";
+        sha1 = "20ffb8bd162ba4be11e9567d823db651052ca912";
+      };
+    }
+    {
+      name = "call_limit___call_limit_1.1.1.tgz";
+      path = fetchurl {
+        name = "call_limit___call_limit_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.1.tgz";
+        sha1 = "ef15f2670db3f1992557e2d965abc459e6e358d4";
+      };
+    }
+    {
+      name = "callsites___callsites_3.1.0.tgz";
+      path = fetchurl {
+        name = "callsites___callsites_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz";
+        sha1 = "b3630abd8943432f54b3f0519238e33cd7df2f73";
+      };
+    }
+    {
+      name = "camelcase___camelcase_4.1.0.tgz";
+      path = fetchurl {
+        name = "camelcase___camelcase_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz";
+        sha1 = "d545635be1e33c542649c69173e5de6acfae34dd";
+      };
+    }
+    {
+      name = "camelcase___camelcase_5.3.1.tgz";
+      path = fetchurl {
+        name = "camelcase___camelcase_5.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz";
+        sha1 = "e3c9b31569e106811df242f715725a1f4c494320";
+      };
+    }
+    {
+      name = "capture_stack_trace___capture_stack_trace_1.0.1.tgz";
+      path = fetchurl {
+        name = "capture_stack_trace___capture_stack_trace_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz";
+        sha1 = "a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d";
+      };
+    }
+    {
+      name = "caseless___caseless_0.12.0.tgz";
+      path = fetchurl {
+        name = "caseless___caseless_0.12.0.tgz";
+        url  = "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz";
+        sha1 = "1b681c21ff84033c826543090689420d187151dc";
+      };
+    }
+    {
+      name = "chalk___chalk_2.4.2.tgz";
+      path = fetchurl {
+        name = "chalk___chalk_2.4.2.tgz";
+        url  = "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz";
+        sha1 = "cd42541677a54333cf541a49108c1432b44c9424";
+      };
+    }
+    {
+      name = "chalk___chalk_3.0.0.tgz";
+      path = fetchurl {
+        name = "chalk___chalk_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz";
+        sha1 = "3f73c2bf526591f574cc492c51e2456349f844e4";
+      };
+    }
+    {
+      name = "chardet___chardet_0.7.0.tgz";
+      path = fetchurl {
+        name = "chardet___chardet_0.7.0.tgz";
+        url  = "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz";
+        sha1 = "90094849f0937f2eedc2425d0d28a9e5f0cbad9e";
+      };
+    }
+    {
+      name = "chownr___chownr_1.1.4.tgz";
+      path = fetchurl {
+        name = "chownr___chownr_1.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz";
+        sha1 = "6fc9d7b42d32a583596337666e7d08084da2cc6b";
+      };
+    }
+    {
+      name = "chownr___chownr_1.1.3.tgz";
+      path = fetchurl {
+        name = "chownr___chownr_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz";
+        sha1 = "42d837d5239688d55f303003a508230fa6727142";
+      };
+    }
+    {
+      name = "chromium_pickle_js___chromium_pickle_js_0.2.0.tgz";
+      path = fetchurl {
+        name = "chromium_pickle_js___chromium_pickle_js_0.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz";
+        sha1 = "04a106672c18b085ab774d983dfa3ea138f22205";
+      };
+    }
+    {
+      name = "ci_info___ci_info_1.6.0.tgz";
+      path = fetchurl {
+        name = "ci_info___ci_info_1.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz";
+        sha1 = "2ca20dbb9ceb32d4524a683303313f0304b1e497";
+      };
+    }
+    {
+      name = "ci_info___ci_info_2.0.0.tgz";
+      path = fetchurl {
+        name = "ci_info___ci_info_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz";
+        sha1 = "67a9e964be31a51e15e5010d58e6f12834002f46";
+      };
+    }
+    {
+      name = "cidr_regex___cidr_regex_2.0.10.tgz";
+      path = fetchurl {
+        name = "cidr_regex___cidr_regex_2.0.10.tgz";
+        url  = "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-2.0.10.tgz";
+        sha1 = "af13878bd4ad704de77d6dc800799358b3afa70d";
+      };
+    }
+    {
+      name = "cli_boxes___cli_boxes_1.0.0.tgz";
+      path = fetchurl {
+        name = "cli_boxes___cli_boxes_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz";
+        sha1 = "4fa917c3e59c94a004cd61f8ee509da651687143";
+      };
+    }
+    {
+      name = "cli_boxes___cli_boxes_2.2.0.tgz";
+      path = fetchurl {
+        name = "cli_boxes___cli_boxes_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz";
+        sha1 = "538ecae8f9c6ca508e3c3c95b453fe93cb4c168d";
+      };
+    }
+    {
+      name = "cli_columns___cli_columns_3.1.2.tgz";
+      path = fetchurl {
+        name = "cli_columns___cli_columns_3.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/cli-columns/-/cli-columns-3.1.2.tgz";
+        sha1 = "6732d972979efc2ae444a1f08e08fa139c96a18e";
+      };
+    }
+    {
+      name = "cli_cursor___cli_cursor_2.1.0.tgz";
+      path = fetchurl {
+        name = "cli_cursor___cli_cursor_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz";
+        sha1 = "b35dac376479facc3e94747d41d0d0f5238ffcb5";
+      };
+    }
+    {
+      name = "cli_table3___cli_table3_0.5.1.tgz";
+      path = fetchurl {
+        name = "cli_table3___cli_table3_0.5.1.tgz";
+        url  = "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz";
+        sha1 = "0252372d94dfc40dbd8df06005f48f31f656f202";
+      };
+    }
+    {
+      name = "cli_width___cli_width_2.2.0.tgz";
+      path = fetchurl {
+        name = "cli_width___cli_width_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz";
+        sha1 = "ff19ede8a9a5e579324147b0c11f0fbcbabed639";
+      };
+    }
+    {
+      name = "cliui___cliui_3.2.0.tgz";
+      path = fetchurl {
+        name = "cliui___cliui_3.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz";
+        sha1 = "120601537a916d29940f934da3b48d585a39213d";
+      };
+    }
+    {
+      name = "cliui___cliui_4.1.0.tgz";
+      path = fetchurl {
+        name = "cliui___cliui_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz";
+        sha1 = "348422dbe82d800b3022eef4f6ac10bf2e4d1b49";
+      };
+    }
+    {
+      name = "cliui___cliui_6.0.0.tgz";
+      path = fetchurl {
+        name = "cliui___cliui_6.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz";
+        sha1 = "511d702c0c4e41ca156d7d0e96021f23e13225b1";
+      };
+    }
+    {
+      name = "clone_response___clone_response_1.0.2.tgz";
+      path = fetchurl {
+        name = "clone_response___clone_response_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz";
+        sha1 = "d1dc973920314df67fbeb94223b4ee350239e96b";
+      };
+    }
+    {
+      name = "clone___clone_1.0.4.tgz";
+      path = fetchurl {
+        name = "clone___clone_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz";
+        sha1 = "da309cc263df15994c688ca902179ca3c7cd7c7e";
+      };
+    }
+    {
+      name = "cmd_shim___cmd_shim_3.0.3.tgz";
+      path = fetchurl {
+        name = "cmd_shim___cmd_shim_3.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-3.0.3.tgz";
+        sha1 = "2c35238d3df37d98ecdd7d5f6b8dc6b21cadc7cb";
+      };
+    }
+    {
+      name = "code_point_at___code_point_at_1.1.0.tgz";
+      path = fetchurl {
+        name = "code_point_at___code_point_at_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz";
+        sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
+      };
+    }
+    {
+      name = "color_convert___color_convert_1.9.3.tgz";
+      path = fetchurl {
+        name = "color_convert___color_convert_1.9.3.tgz";
+        url  = "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz";
+        sha1 = "bb71850690e1f136567de629d2d5471deda4c1e8";
+      };
+    }
+    {
+      name = "color_convert___color_convert_2.0.1.tgz";
+      path = fetchurl {
+        name = "color_convert___color_convert_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz";
+        sha1 = "72d3a68d598c9bdb3af2ad1e84f21d896abd4de3";
+      };
+    }
+    {
+      name = "color_name___color_name_1.1.3.tgz";
+      path = fetchurl {
+        name = "color_name___color_name_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz";
+        sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
+      };
+    }
+    {
+      name = "color_name___color_name_1.1.4.tgz";
+      path = fetchurl {
+        name = "color_name___color_name_1.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz";
+        sha1 = "c2a09a87acbde69543de6f63fa3995c826c536a2";
+      };
+    }
+    {
+      name = "colors___colors_1.4.0.tgz";
+      path = fetchurl {
+        name = "colors___colors_1.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz";
+        sha1 = "c50491479d4c1bdaed2c9ced32cf7c7dc2360f78";
+      };
+    }
+    {
+      name = "columnify___columnify_1.5.4.tgz";
+      path = fetchurl {
+        name = "columnify___columnify_1.5.4.tgz";
+        url  = "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz";
+        sha1 = "4737ddf1c7b69a8a7c340570782e947eec8e78bb";
+      };
+    }
+    {
+      name = "combined_stream___combined_stream_1.0.8.tgz";
+      path = fetchurl {
+        name = "combined_stream___combined_stream_1.0.8.tgz";
+        url  = "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz";
+        sha1 = "c3d45a8b34fd730631a110a8a2520682b31d5a7f";
+      };
+    }
+    {
+      name = "commander___commander_2.20.3.tgz";
+      path = fetchurl {
+        name = "commander___commander_2.20.3.tgz";
+        url  = "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz";
+        sha1 = "fd485e84c03eb4881c20722ba48035e8531aeb33";
+      };
+    }
+    {
+      name = "compress_commons___compress_commons_2.1.1.tgz";
+      path = fetchurl {
+        name = "compress_commons___compress_commons_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/compress-commons/-/compress-commons-2.1.1.tgz";
+        sha1 = "9410d9a534cf8435e3fbbb7c6ce48de2dc2f0610";
+      };
+    }
+    {
+      name = "concat_map___concat_map_0.0.1.tgz";
+      path = fetchurl {
+        name = "concat_map___concat_map_0.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz";
+        sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
+      };
+    }
+    {
+      name = "concat_stream___concat_stream_1.6.2.tgz";
+      path = fetchurl {
+        name = "concat_stream___concat_stream_1.6.2.tgz";
+        url  = "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz";
+        sha1 = "904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34";
+      };
+    }
+    {
+      name = "conf___conf_2.2.0.tgz";
+      path = fetchurl {
+        name = "conf___conf_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/conf/-/conf-2.2.0.tgz";
+        sha1 = "ee282efafc1450b61e205372041ad7d866802d9a";
+      };
+    }
+    {
+      name = "config_chain___config_chain_1.1.12.tgz";
+      path = fetchurl {
+        name = "config_chain___config_chain_1.1.12.tgz";
+        url  = "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz";
+        sha1 = "0fde8d091200eb5e808caf25fe618c02f48e4efa";
+      };
+    }
+    {
+      name = "configstore___configstore_3.1.2.tgz";
+      path = fetchurl {
+        name = "configstore___configstore_3.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz";
+        sha1 = "c6f25defaeef26df12dd33414b001fe81a543f8f";
+      };
+    }
+    {
+      name = "configstore___configstore_5.0.1.tgz";
+      path = fetchurl {
+        name = "configstore___configstore_5.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz";
+        sha1 = "d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96";
+      };
+    }
+    {
+      name = "console_control_strings___console_control_strings_1.1.0.tgz";
+      path = fetchurl {
+        name = "console_control_strings___console_control_strings_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz";
+        sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
+      };
+    }
+    {
+      name = "content_type___content_type_1.0.4.tgz";
+      path = fetchurl {
+        name = "content_type___content_type_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz";
+        sha1 = "e138cc75e040c727b1966fe5e5f8c9aee256fe3b";
+      };
+    }
+    {
+      name = "copy_concurrently___copy_concurrently_1.0.5.tgz";
+      path = fetchurl {
+        name = "copy_concurrently___copy_concurrently_1.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz";
+        sha1 = "92297398cae34937fcafd6ec8139c18051f0b5e0";
+      };
+    }
+    {
+      name = "core_util_is___core_util_is_1.0.2.tgz";
+      path = fetchurl {
+        name = "core_util_is___core_util_is_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz";
+        sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
+      };
+    }
+    {
+      name = "crc32_stream___crc32_stream_3.0.1.tgz";
+      path = fetchurl {
+        name = "crc32_stream___crc32_stream_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-3.0.1.tgz";
+        sha1 = "cae6eeed003b0e44d739d279de5ae63b171b4e85";
+      };
+    }
+    {
+      name = "crc___crc_3.8.0.tgz";
+      path = fetchurl {
+        name = "crc___crc_3.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz";
+        sha1 = "ad60269c2c856f8c299e2c4cc0de4556914056c6";
+      };
+    }
+    {
+      name = "create_error_class___create_error_class_3.0.2.tgz";
+      path = fetchurl {
+        name = "create_error_class___create_error_class_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz";
+        sha1 = "06be7abef947a3f14a30fd610671d401bca8b7b6";
+      };
+    }
+    {
+      name = "cross_spawn___cross_spawn_5.1.0.tgz";
+      path = fetchurl {
+        name = "cross_spawn___cross_spawn_5.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz";
+        sha1 = "e8bd0efee58fcff6f8f94510a0a554bbfa235449";
+      };
+    }
+    {
+      name = "cross_spawn___cross_spawn_6.0.5.tgz";
+      path = fetchurl {
+        name = "cross_spawn___cross_spawn_6.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz";
+        sha1 = "4a5ec7c64dfae22c3a14124dbacdee846d80cbc4";
+      };
+    }
+    {
+      name = "cross_unzip___cross_unzip_0.0.2.tgz";
+      path = fetchurl {
+        name = "cross_unzip___cross_unzip_0.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/cross-unzip/-/cross-unzip-0.0.2.tgz";
+        sha1 = "5183bc47a09559befcf98cc4657964999359372f";
+      };
+    }
+    {
+      name = "crypto_random_string___crypto_random_string_1.0.0.tgz";
+      path = fetchurl {
+        name = "crypto_random_string___crypto_random_string_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz";
+        sha1 = "a230f64f568310e1498009940790ec99545bca7e";
+      };
+    }
+    {
+      name = "crypto_random_string___crypto_random_string_2.0.0.tgz";
+      path = fetchurl {
+        name = "crypto_random_string___crypto_random_string_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz";
+        sha1 = "ef2a7a966ec11083388369baa02ebead229b30d5";
+      };
+    }
+    {
+      name = "cuint___cuint_0.2.2.tgz";
+      path = fetchurl {
+        name = "cuint___cuint_0.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz";
+        sha1 = "408086d409550c2631155619e9fa7bcadc3b991b";
+      };
+    }
+    {
+      name = "cyclist___cyclist_1.0.1.tgz";
+      path = fetchurl {
+        name = "cyclist___cyclist_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz";
+        sha1 = "596e9698fd0c80e12038c2b82d6eb1b35b6224d9";
+      };
+    }
+    {
+      name = "dashdash___dashdash_1.14.1.tgz";
+      path = fetchurl {
+        name = "dashdash___dashdash_1.14.1.tgz";
+        url  = "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz";
+        sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
+      };
+    }
+    {
+      name = "debug___debug_3.1.0.tgz";
+      path = fetchurl {
+        name = "debug___debug_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz";
+        sha1 = "5bb5a0672628b64149566ba16819e61518c67261";
+      };
+    }
+    {
+      name = "debug___debug_3.2.6.tgz";
+      path = fetchurl {
+        name = "debug___debug_3.2.6.tgz";
+        url  = "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz";
+        sha1 = "e83d17de16d8a7efb7717edbe5fb10135eee629b";
+      };
+    }
+    {
+      name = "debug___debug_4.1.1.tgz";
+      path = fetchurl {
+        name = "debug___debug_4.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz";
+        sha1 = "3b72260255109c6b589cee050f1d516139664791";
+      };
+    }
+    {
+      name = "debuglog___debuglog_1.0.1.tgz";
+      path = fetchurl {
+        name = "debuglog___debuglog_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz";
+        sha1 = "aa24ffb9ac3df9a2351837cfb2d279360cd78492";
+      };
+    }
+    {
+      name = "decamelize___decamelize_1.2.0.tgz";
+      path = fetchurl {
+        name = "decamelize___decamelize_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz";
+        sha1 = "f6534d15148269b20352e7bee26f501f9a191290";
+      };
+    }
+    {
+      name = "decode_uri_component___decode_uri_component_0.2.0.tgz";
+      path = fetchurl {
+        name = "decode_uri_component___decode_uri_component_0.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz";
+        sha1 = "eb3913333458775cb84cd1a1fae062106bb87545";
+      };
+    }
+    {
+      name = "decompress_response___decompress_response_3.3.0.tgz";
+      path = fetchurl {
+        name = "decompress_response___decompress_response_3.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz";
+        sha1 = "80a4dd323748384bfa248083622aedec982adff3";
+      };
+    }
+    {
+      name = "deep_equal___deep_equal_1.1.1.tgz";
+      path = fetchurl {
+        name = "deep_equal___deep_equal_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz";
+        sha1 = "b5c98c942ceffaf7cb051e24e1434a25a2e6076a";
+      };
+    }
+    {
+      name = "deep_extend___deep_extend_0.6.0.tgz";
+      path = fetchurl {
+        name = "deep_extend___deep_extend_0.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz";
+        sha1 = "c4fa7c95404a17a9c3e8ca7e1537312b736330ac";
+      };
+    }
+    {
+      name = "deep_is___deep_is_0.1.3.tgz";
+      path = fetchurl {
+        name = "deep_is___deep_is_0.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz";
+        sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
+      };
+    }
+    {
+      name = "defaults___defaults_1.0.3.tgz";
+      path = fetchurl {
+        name = "defaults___defaults_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz";
+        sha1 = "c656051e9817d9ff08ed881477f3fe4019f3ef7d";
+      };
+    }
+    {
+      name = "defer_to_connect___defer_to_connect_1.1.1.tgz";
+      path = fetchurl {
+        name = "defer_to_connect___defer_to_connect_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.1.tgz";
+        sha1 = "88ae694b93f67b81815a2c8c769aef6574ac8f2f";
+      };
+    }
+    {
+      name = "define_properties___define_properties_1.1.3.tgz";
+      path = fetchurl {
+        name = "define_properties___define_properties_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz";
+        sha1 = "cf88da6cbee26fe6db7094f61d870cbd84cee9f1";
+      };
+    }
+    {
+      name = "delayed_stream___delayed_stream_1.0.0.tgz";
+      path = fetchurl {
+        name = "delayed_stream___delayed_stream_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz";
+        sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
+      };
+    }
+    {
+      name = "delegates___delegates_1.0.0.tgz";
+      path = fetchurl {
+        name = "delegates___delegates_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz";
+        sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
+      };
+    }
+    {
+      name = "detect_indent___detect_indent_5.0.0.tgz";
+      path = fetchurl {
+        name = "detect_indent___detect_indent_5.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz";
+        sha1 = "3871cc0a6a002e8c3e5b3cf7f336264675f06b9d";
+      };
+    }
+    {
+      name = "detect_libc___detect_libc_1.0.3.tgz";
+      path = fetchurl {
+        name = "detect_libc___detect_libc_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz";
+        sha1 = "fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b";
+      };
+    }
+    {
+      name = "detect_newline___detect_newline_2.1.0.tgz";
+      path = fetchurl {
+        name = "detect_newline___detect_newline_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz";
+        sha1 = "f41f1c10be4b00e87b5f13da680759f2c5bfd3e2";
+      };
+    }
+    {
+      name = "dezalgo___dezalgo_1.0.3.tgz";
+      path = fetchurl {
+        name = "dezalgo___dezalgo_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz";
+        sha1 = "7f742de066fc748bc8db820569dddce49bf0d456";
+      };
+    }
+    {
+      name = "dmg_builder___dmg_builder_22.3.2.tgz";
+      path = fetchurl {
+        name = "dmg_builder___dmg_builder_22.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-22.3.2.tgz";
+        sha1 = "4c052f75d601e3358da1ff9d7d57738e1c01b157";
+      };
+    }
+    {
+      name = "doctrine___doctrine_3.0.0.tgz";
+      path = fetchurl {
+        name = "doctrine___doctrine_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz";
+        sha1 = "addebead72a6574db783639dc87a121773973961";
+      };
+    }
+    {
+      name = "dom_walk___dom_walk_0.1.1.tgz";
+      path = fetchurl {
+        name = "dom_walk___dom_walk_0.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz";
+        sha1 = "672226dc74c8f799ad35307df936aba11acd6018";
+      };
+    }
+    {
+      name = "dot_prop___dot_prop_4.2.0.tgz";
+      path = fetchurl {
+        name = "dot_prop___dot_prop_4.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz";
+        sha1 = "1f19e0c2e1aa0e32797c49799f2837ac6af69c57";
+      };
+    }
+    {
+      name = "dot_prop___dot_prop_5.2.0.tgz";
+      path = fetchurl {
+        name = "dot_prop___dot_prop_5.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz";
+        sha1 = "c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb";
+      };
+    }
+    {
+      name = "dotenv_expand___dotenv_expand_5.1.0.tgz";
+      path = fetchurl {
+        name = "dotenv_expand___dotenv_expand_5.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz";
+        sha1 = "3fbaf020bfd794884072ea26b1e9791d45a629f0";
+      };
+    }
+    {
+      name = "dotenv___dotenv_5.0.1.tgz";
+      path = fetchurl {
+        name = "dotenv___dotenv_5.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz";
+        sha1 = "a5317459bd3d79ab88cff6e44057a6a3fbb1fcef";
+      };
+    }
+    {
+      name = "dotenv___dotenv_8.2.0.tgz";
+      path = fetchurl {
+        name = "dotenv___dotenv_8.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz";
+        sha1 = "97e619259ada750eea3e4ea3e26bceea5424b16a";
+      };
+    }
+    {
+      name = "duplexer3___duplexer3_0.1.4.tgz";
+      path = fetchurl {
+        name = "duplexer3___duplexer3_0.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz";
+        sha1 = "ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2";
+      };
+    }
+    {
+      name = "duplexify___duplexify_3.7.1.tgz";
+      path = fetchurl {
+        name = "duplexify___duplexify_3.7.1.tgz";
+        url  = "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz";
+        sha1 = "2a4df5317f6ccfd91f86d6fd25d8d8a103b88309";
+      };
+    }
+    {
+      name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
+      path = fetchurl {
+        name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
+        sha1 = "3a83a904e54353287874c564b7549386849a98c9";
+      };
+    }
+    {
+      name = "editor___editor_1.0.0.tgz";
+      path = fetchurl {
+        name = "editor___editor_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/editor/-/editor-1.0.0.tgz";
+        sha1 = "60c7f87bd62bcc6a894fa8ccd6afb7823a24f742";
+      };
+    }
+    {
+      name = "ejs___ejs_3.0.1.tgz";
+      path = fetchurl {
+        name = "ejs___ejs_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/ejs/-/ejs-3.0.1.tgz";
+        sha1 = "30c8f6ee9948502cc32e85c37a3f8b39b5a614a5";
+      };
+    }
+    {
+      name = "electron_builder_squirrel_windows___electron_builder_squirrel_windows_22.3.3.tgz";
+      path = fetchurl {
+        name = "electron_builder_squirrel_windows___electron_builder_squirrel_windows_22.3.3.tgz";
+        url  = "https://registry.yarnpkg.com/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-22.3.3.tgz";
+        sha1 = "0a417af35c83b067096bd3217b6b7bd75c6c48a9";
+      };
+    }
+    {
+      name = "electron_builder___electron_builder_22.3.2.tgz";
+      path = fetchurl {
+        name = "electron_builder___electron_builder_22.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/electron-builder/-/electron-builder-22.3.2.tgz";
+        sha1 = "902d150fc0670cb90213262e5e0aa3c4f299ffa4";
+      };
+    }
+    {
+      name = "electron_devtools_installer___electron_devtools_installer_2.2.4.tgz";
+      path = fetchurl {
+        name = "electron_devtools_installer___electron_devtools_installer_2.2.4.tgz";
+        url  = "https://registry.yarnpkg.com/electron-devtools-installer/-/electron-devtools-installer-2.2.4.tgz";
+        sha1 = "261a50337e37121d338b966f07922eb4939a8763";
+      };
+    }
+    {
+      name = "electron_notarize___electron_notarize_0.2.1.tgz";
+      path = fetchurl {
+        name = "electron_notarize___electron_notarize_0.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/electron-notarize/-/electron-notarize-0.2.1.tgz";
+        sha1 = "759e8006decae19134f82996ed910db26d9192cc";
+      };
+    }
+    {
+      name = "electron_publish___electron_publish_22.3.2.tgz";
+      path = fetchurl {
+        name = "electron_publish___electron_publish_22.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/electron-publish/-/electron-publish-22.3.2.tgz";
+        sha1 = "d2e60caf7a9643fe57e501c20acaf32c737b1c50";
+      };
+    }
+    {
+      name = "electron_publish___electron_publish_22.3.3.tgz";
+      path = fetchurl {
+        name = "electron_publish___electron_publish_22.3.3.tgz";
+        url  = "https://registry.yarnpkg.com/electron-publish/-/electron-publish-22.3.3.tgz";
+        sha1 = "7d1e757a20ce0558fdc42900b6e3d773fdae9d9e";
+      };
+    }
+    {
+      name = "electron_store___electron_store_2.0.0.tgz";
+      path = fetchurl {
+        name = "electron_store___electron_store_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/electron-store/-/electron-store-2.0.0.tgz";
+        sha1 = "1035cca2a95409d1f54c7466606345852450d64a";
+      };
+    }
+    {
+      name = "electron_window_state___electron_window_state_4.1.1.tgz";
+      path = fetchurl {
+        name = "electron_window_state___electron_window_state_4.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/electron-window-state/-/electron-window-state-4.1.1.tgz";
+        sha1 = "6b34fdc31b38514dfec8b7c8f7b5d4addb67632d";
+      };
+    }
+    {
+      name = "emoji_regex___emoji_regex_7.0.3.tgz";
+      path = fetchurl {
+        name = "emoji_regex___emoji_regex_7.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz";
+        sha1 = "933a04052860c85e83c122479c4748a8e4c72156";
+      };
+    }
+    {
+      name = "emoji_regex___emoji_regex_8.0.0.tgz";
+      path = fetchurl {
+        name = "emoji_regex___emoji_regex_8.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz";
+        sha1 = "e818fd69ce5ccfcb404594f842963bf53164cc37";
+      };
+    }
+    {
+      name = "encoding___encoding_0.1.12.tgz";
+      path = fetchurl {
+        name = "encoding___encoding_0.1.12.tgz";
+        url  = "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz";
+        sha1 = "538b66f3ee62cd1ab51ec323829d1f9480c74beb";
+      };
+    }
+    {
+      name = "end_of_stream___end_of_stream_1.4.4.tgz";
+      path = fetchurl {
+        name = "end_of_stream___end_of_stream_1.4.4.tgz";
+        url  = "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz";
+        sha1 = "5ae64a5f45057baf3626ec14da0ca5e4b2431eb0";
+      };
+    }
+    {
+      name = "env_paths___env_paths_1.0.0.tgz";
+      path = fetchurl {
+        name = "env_paths___env_paths_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/env-paths/-/env-paths-1.0.0.tgz";
+        sha1 = "4168133b42bb05c38a35b1ae4397c8298ab369e0";
+      };
+    }
+    {
+      name = "env_paths___env_paths_2.2.0.tgz";
+      path = fetchurl {
+        name = "env_paths___env_paths_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz";
+        sha1 = "cdca557dc009152917d6166e2febe1f039685e43";
+      };
+    }
+    {
+      name = "err_code___err_code_1.1.2.tgz";
+      path = fetchurl {
+        name = "err_code___err_code_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz";
+        sha1 = "06e0116d3028f6aef4806849eb0ea6a748ae6960";
+      };
+    }
+    {
+      name = "errno___errno_0.1.7.tgz";
+      path = fetchurl {
+        name = "errno___errno_0.1.7.tgz";
+        url  = "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz";
+        sha1 = "4684d71779ad39af177e3f007996f7c67c852618";
+      };
+    }
+    {
+      name = "error_ex___error_ex_1.3.2.tgz";
+      path = fetchurl {
+        name = "error_ex___error_ex_1.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz";
+        sha1 = "b4ac40648107fdcdcfae242f428bea8a14d4f1bf";
+      };
+    }
+    {
+      name = "es_abstract___es_abstract_1.16.3.tgz";
+      path = fetchurl {
+        name = "es_abstract___es_abstract_1.16.3.tgz";
+        url  = "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.3.tgz";
+        sha1 = "52490d978f96ff9f89ec15b5cf244304a5bca161";
+      };
+    }
+    {
+      name = "es_to_primitive___es_to_primitive_1.2.1.tgz";
+      path = fetchurl {
+        name = "es_to_primitive___es_to_primitive_1.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz";
+        sha1 = "e55cd4c9cdc188bcefb03b366c736323fc5c898a";
+      };
+    }
+    {
+      name = "es6_promise___es6_promise_3.3.1.tgz";
+      path = fetchurl {
+        name = "es6_promise___es6_promise_3.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz";
+        sha1 = "a08cdde84ccdbf34d027a1451bc91d4bcd28a613";
+      };
+    }
+    {
+      name = "es6_promise___es6_promise_4.2.8.tgz";
+      path = fetchurl {
+        name = "es6_promise___es6_promise_4.2.8.tgz";
+        url  = "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz";
+        sha1 = "4eb21594c972bc40553d276e510539143db53e0a";
+      };
+    }
+    {
+      name = "es6_promisify___es6_promisify_5.0.0.tgz";
+      path = fetchurl {
+        name = "es6_promisify___es6_promisify_5.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz";
+        sha1 = "5109d62f3e56ea967c4b63505aef08291c8a5203";
+      };
+    }
+    {
+      name = "escape_goat___escape_goat_2.1.1.tgz";
+      path = fetchurl {
+        name = "escape_goat___escape_goat_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz";
+        sha1 = "1b2dc77003676c457ec760b2dc68edb648188675";
+      };
+    }
+    {
+      name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz";
+      path = fetchurl {
+        name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
+        sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
+      };
+    }
+    {
+      name = "eslint_config_google___eslint_config_google_0.7.1.tgz";
+      path = fetchurl {
+        name = "eslint_config_google___eslint_config_google_0.7.1.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-config-google/-/eslint-config-google-0.7.1.tgz";
+        sha1 = "5598f8498e9e078420f34b80495b8d959f651fb2";
+      };
+    }
+    {
+      name = "eslint_plugin_babel___eslint_plugin_babel_4.1.2.tgz";
+      path = fetchurl {
+        name = "eslint_plugin_babel___eslint_plugin_babel_4.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-4.1.2.tgz";
+        sha1 = "79202a0e35757dd92780919b2336f1fa2fe53c1e";
+      };
+    }
+    {
+      name = "eslint_scope___eslint_scope_4.0.3.tgz";
+      path = fetchurl {
+        name = "eslint_scope___eslint_scope_4.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz";
+        sha1 = "ca03833310f6889a3264781aa82e63eb9cfe7848";
+      };
+    }
+    {
+      name = "eslint_utils___eslint_utils_1.4.3.tgz";
+      path = fetchurl {
+        name = "eslint_utils___eslint_utils_1.4.3.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz";
+        sha1 = "74fec7c54d0776b6f67e0251040b5806564e981f";
+      };
+    }
+    {
+      name = "eslint_visitor_keys___eslint_visitor_keys_1.1.0.tgz";
+      path = fetchurl {
+        name = "eslint_visitor_keys___eslint_visitor_keys_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz";
+        sha1 = "e2a82cea84ff246ad6fb57f9bde5b46621459ec2";
+      };
+    }
+    {
+      name = "eslint___eslint_5.16.0.tgz";
+      path = fetchurl {
+        name = "eslint___eslint_5.16.0.tgz";
+        url  = "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz";
+        sha1 = "a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea";
+      };
+    }
+    {
+      name = "espree___espree_5.0.1.tgz";
+      path = fetchurl {
+        name = "espree___espree_5.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz";
+        sha1 = "5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a";
+      };
+    }
+    {
+      name = "esprima___esprima_4.0.1.tgz";
+      path = fetchurl {
+        name = "esprima___esprima_4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz";
+        sha1 = "13b04cdb3e6c5d19df91ab6987a8695619b0aa71";
+      };
+    }
+    {
+      name = "esquery___esquery_1.0.1.tgz";
+      path = fetchurl {
+        name = "esquery___esquery_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz";
+        sha1 = "406c51658b1f5991a5f9b62b1dc25b00e3e5c708";
+      };
+    }
+    {
+      name = "esrecurse___esrecurse_4.2.1.tgz";
+      path = fetchurl {
+        name = "esrecurse___esrecurse_4.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz";
+        sha1 = "007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf";
+      };
+    }
+    {
+      name = "estraverse___estraverse_4.3.0.tgz";
+      path = fetchurl {
+        name = "estraverse___estraverse_4.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz";
+        sha1 = "398ad3f3c5a24948be7725e83d11a7de28cdbd1d";
+      };
+    }
+    {
+      name = "esutils___esutils_2.0.3.tgz";
+      path = fetchurl {
+        name = "esutils___esutils_2.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz";
+        sha1 = "74d2eb4de0b8da1293711910d50775b9b710ef64";
+      };
+    }
+    {
+      name = "execa___execa_0.7.0.tgz";
+      path = fetchurl {
+        name = "execa___execa_0.7.0.tgz";
+        url  = "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz";
+        sha1 = "944becd34cc41ee32a63a9faf27ad5a65fc59777";
+      };
+    }
+    {
+      name = "execa___execa_1.0.0.tgz";
+      path = fetchurl {
+        name = "execa___execa_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz";
+        sha1 = "c6236a5bb4df6d6f15e88e7f017798216749ddd8";
+      };
+    }
+    {
+      name = "exif_parser___exif_parser_0.1.12.tgz";
+      path = fetchurl {
+        name = "exif_parser___exif_parser_0.1.12.tgz";
+        url  = "https://registry.yarnpkg.com/exif-parser/-/exif-parser-0.1.12.tgz";
+        sha1 = "58a9d2d72c02c1f6f02a0ef4a9166272b7760922";
+      };
+    }
+    {
+      name = "extend___extend_3.0.2.tgz";
+      path = fetchurl {
+        name = "extend___extend_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz";
+        sha1 = "f8b1136b4071fbd8eb140aff858b1019ec2915fa";
+      };
+    }
+    {
+      name = "external_editor___external_editor_3.1.0.tgz";
+      path = fetchurl {
+        name = "external_editor___external_editor_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz";
+        sha1 = "cb03f740befae03ea4d283caed2741a83f335495";
+      };
+    }
+    {
+      name = "extsprintf___extsprintf_1.3.0.tgz";
+      path = fetchurl {
+        name = "extsprintf___extsprintf_1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz";
+        sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
+      };
+    }
+    {
+      name = "extsprintf___extsprintf_1.4.0.tgz";
+      path = fetchurl {
+        name = "extsprintf___extsprintf_1.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz";
+        sha1 = "e2689f8f356fad62cca65a3a91c5df5f9551692f";
+      };
+    }
+    {
+      name = "fast_deep_equal___fast_deep_equal_2.0.1.tgz";
+      path = fetchurl {
+        name = "fast_deep_equal___fast_deep_equal_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz";
+        sha1 = "7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49";
+      };
+    }
+    {
+      name = "fast_json_stable_stringify___fast_json_stable_stringify_2.0.0.tgz";
+      path = fetchurl {
+        name = "fast_json_stable_stringify___fast_json_stable_stringify_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz";
+        sha1 = "d5142c0caee6b1189f87d3a76111064f86c8bbf2";
+      };
+    }
+    {
+      name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz";
+      path = fetchurl {
+        name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
+        sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
+      };
+    }
+    {
+      name = "figgy_pudding___figgy_pudding_3.5.1.tgz";
+      path = fetchurl {
+        name = "figgy_pudding___figgy_pudding_3.5.1.tgz";
+        url  = "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz";
+        sha1 = "862470112901c727a0e495a80744bd5baa1d6790";
+      };
+    }
+    {
+      name = "figures___figures_2.0.0.tgz";
+      path = fetchurl {
+        name = "figures___figures_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz";
+        sha1 = "3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962";
+      };
+    }
+    {
+      name = "file_entry_cache___file_entry_cache_5.0.1.tgz";
+      path = fetchurl {
+        name = "file_entry_cache___file_entry_cache_5.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz";
+        sha1 = "ca0f6efa6dd3d561333fb14515065c2fafdf439c";
+      };
+    }
+    {
+      name = "file_type___file_type_3.9.0.tgz";
+      path = fetchurl {
+        name = "file_type___file_type_3.9.0.tgz";
+        url  = "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz";
+        sha1 = "257a078384d1db8087bc449d107d52a52672b9e9";
+      };
+    }
+    {
+      name = "find_npm_prefix___find_npm_prefix_1.0.2.tgz";
+      path = fetchurl {
+        name = "find_npm_prefix___find_npm_prefix_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz";
+        sha1 = "8d8ce2c78b3b4b9e66c8acc6a37c231eb841cfdf";
+      };
+    }
+    {
+      name = "find_up___find_up_2.1.0.tgz";
+      path = fetchurl {
+        name = "find_up___find_up_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz";
+        sha1 = "45d1b7e506c717ddd482775a2b77920a3c0c57a7";
+      };
+    }
+    {
+      name = "find_up___find_up_3.0.0.tgz";
+      path = fetchurl {
+        name = "find_up___find_up_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz";
+        sha1 = "49169f1d7993430646da61ecc5ae355c21c97b73";
+      };
+    }
+    {
+      name = "find_up___find_up_4.1.0.tgz";
+      path = fetchurl {
+        name = "find_up___find_up_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz";
+        sha1 = "97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19";
+      };
+    }
+    {
+      name = "flat_cache___flat_cache_2.0.1.tgz";
+      path = fetchurl {
+        name = "flat_cache___flat_cache_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz";
+        sha1 = "5d296d6f04bda44a4630a301413bdbc2ec085ec0";
+      };
+    }
+    {
+      name = "flatted___flatted_2.0.1.tgz";
+      path = fetchurl {
+        name = "flatted___flatted_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz";
+        sha1 = "69e57caa8f0eacbc281d2e2cb458d46fdb449e08";
+      };
+    }
+    {
+      name = "flush_write_stream___flush_write_stream_1.1.1.tgz";
+      path = fetchurl {
+        name = "flush_write_stream___flush_write_stream_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz";
+        sha1 = "8dd7d873a1babc207d94ead0c2e0e44276ebf2e8";
+      };
+    }
+    {
+      name = "forever_agent___forever_agent_0.6.1.tgz";
+      path = fetchurl {
+        name = "forever_agent___forever_agent_0.6.1.tgz";
+        url  = "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz";
+        sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
+      };
+    }
+    {
+      name = "form_data___form_data_2.3.3.tgz";
+      path = fetchurl {
+        name = "form_data___form_data_2.3.3.tgz";
+        url  = "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz";
+        sha1 = "dcce52c05f644f298c6a7ab936bd724ceffbf3a6";
+      };
+    }
+    {
+      name = "from2___from2_1.3.0.tgz";
+      path = fetchurl {
+        name = "from2___from2_1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/from2/-/from2-1.3.0.tgz";
+        sha1 = "88413baaa5f9a597cfde9221d86986cd3c061dfd";
+      };
+    }
+    {
+      name = "from2___from2_2.3.0.tgz";
+      path = fetchurl {
+        name = "from2___from2_2.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz";
+        sha1 = "8bfb5502bde4a4d36cfdeea007fcca21d7e382af";
+      };
+    }
+    {
+      name = "fs_constants___fs_constants_1.0.0.tgz";
+      path = fetchurl {
+        name = "fs_constants___fs_constants_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz";
+        sha1 = "6be0de9be998ce16af8afc24497b9ee9b7ccd9ad";
+      };
+    }
+    {
+      name = "fs_extra___fs_extra_8.1.0.tgz";
+      path = fetchurl {
+        name = "fs_extra___fs_extra_8.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz";
+        sha1 = "49d43c45a88cd9677668cb7be1b46efdb8d2e1c0";
+      };
+    }
+    {
+      name = "fs_minipass___fs_minipass_1.2.7.tgz";
+      path = fetchurl {
+        name = "fs_minipass___fs_minipass_1.2.7.tgz";
+        url  = "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz";
+        sha1 = "ccff8570841e7fe4265693da88936c55aed7f7c7";
+      };
+    }
+    {
+      name = "fs_minipass___fs_minipass_2.0.0.tgz";
+      path = fetchurl {
+        name = "fs_minipass___fs_minipass_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.0.0.tgz";
+        sha1 = "a6415edab02fae4b9e9230bc87ee2e4472003cd1";
+      };
+    }
+    {
+      name = "fs_vacuum___fs_vacuum_1.2.10.tgz";
+      path = fetchurl {
+        name = "fs_vacuum___fs_vacuum_1.2.10.tgz";
+        url  = "https://registry.yarnpkg.com/fs-vacuum/-/fs-vacuum-1.2.10.tgz";
+        sha1 = "b7629bec07a4031a2548fdf99f5ecf1cc8b31e36";
+      };
+    }
+    {
+      name = "fs_write_stream_atomic___fs_write_stream_atomic_1.0.10.tgz";
+      path = fetchurl {
+        name = "fs_write_stream_atomic___fs_write_stream_atomic_1.0.10.tgz";
+        url  = "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz";
+        sha1 = "b47df53493ef911df75731e70a9ded0189db40c9";
+      };
+    }
+    {
+      name = "fs.realpath___fs.realpath_1.0.0.tgz";
+      path = fetchurl {
+        name = "fs.realpath___fs.realpath_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz";
+        sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
+      };
+    }
+    {
+      name = "function_bind___function_bind_1.1.1.tgz";
+      path = fetchurl {
+        name = "function_bind___function_bind_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz";
+        sha1 = "a56899d3ea3c9bab874bb9773b7c5ede92f4895d";
+      };
+    }
+    {
+      name = "functional_red_black_tree___functional_red_black_tree_1.0.1.tgz";
+      path = fetchurl {
+        name = "functional_red_black_tree___functional_red_black_tree_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz";
+        sha1 = "1b0ab3bd553b2a0d6399d29c0e3ea0b252078327";
+      };
+    }
+    {
+      name = "gauge___gauge_2.7.4.tgz";
+      path = fetchurl {
+        name = "gauge___gauge_2.7.4.tgz";
+        url  = "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz";
+        sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
+      };
+    }
+    {
+      name = "genfun___genfun_5.0.0.tgz";
+      path = fetchurl {
+        name = "genfun___genfun_5.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz";
+        sha1 = "9dd9710a06900a5c4a5bf57aca5da4e52fe76537";
+      };
+    }
+    {
+      name = "gentle_fs___gentle_fs_2.3.0.tgz";
+      path = fetchurl {
+        name = "gentle_fs___gentle_fs_2.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/gentle-fs/-/gentle-fs-2.3.0.tgz";
+        sha1 = "13538db5029400f98684be4894e8a7d8f0d1ea7f";
+      };
+    }
+    {
+      name = "get_caller_file___get_caller_file_1.0.3.tgz";
+      path = fetchurl {
+        name = "get_caller_file___get_caller_file_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz";
+        sha1 = "f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a";
+      };
+    }
+    {
+      name = "get_caller_file___get_caller_file_2.0.5.tgz";
+      path = fetchurl {
+        name = "get_caller_file___get_caller_file_2.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz";
+        sha1 = "4f94412a82db32f36e3b0b9741f8a97feb031f7e";
+      };
+    }
+    {
+      name = "get_stream___get_stream_3.0.0.tgz";
+      path = fetchurl {
+        name = "get_stream___get_stream_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz";
+        sha1 = "8e943d1358dc37555054ecbe2edb05aa174ede14";
+      };
+    }
+    {
+      name = "get_stream___get_stream_4.1.0.tgz";
+      path = fetchurl {
+        name = "get_stream___get_stream_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz";
+        sha1 = "c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5";
+      };
+    }
+    {
+      name = "get_stream___get_stream_5.1.0.tgz";
+      path = fetchurl {
+        name = "get_stream___get_stream_5.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz";
+        sha1 = "01203cdc92597f9b909067c3e656cc1f4d3c4dc9";
+      };
+    }
+    {
+      name = "getpass___getpass_0.1.7.tgz";
+      path = fetchurl {
+        name = "getpass___getpass_0.1.7.tgz";
+        url  = "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz";
+        sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
+      };
+    }
+    {
+      name = "glob___glob_7.1.6.tgz";
+      path = fetchurl {
+        name = "glob___glob_7.1.6.tgz";
+        url  = "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz";
+        sha1 = "141f33b81a7c2492e125594307480c46679278a6";
+      };
+    }
+    {
+      name = "global_dirs___global_dirs_0.1.1.tgz";
+      path = fetchurl {
+        name = "global_dirs___global_dirs_0.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz";
+        sha1 = "b319c0dd4607f353f3be9cca4c72fc148c49f445";
+      };
+    }
+    {
+      name = "global_dirs___global_dirs_2.0.1.tgz";
+      path = fetchurl {
+        name = "global_dirs___global_dirs_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz";
+        sha1 = "acdf3bb6685bcd55cb35e8a052266569e9469201";
+      };
+    }
+    {
+      name = "global___global_4.3.2.tgz";
+      path = fetchurl {
+        name = "global___global_4.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz";
+        sha1 = "e76989268a6c74c38908b1305b10fc0e394e9d0f";
+      };
+    }
+    {
+      name = "globals___globals_11.12.0.tgz";
+      path = fetchurl {
+        name = "globals___globals_11.12.0.tgz";
+        url  = "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz";
+        sha1 = "ab8795338868a0babd8525758018c2a7eb95c42e";
+      };
+    }
+    {
+      name = "got___got_6.7.1.tgz";
+      path = fetchurl {
+        name = "got___got_6.7.1.tgz";
+        url  = "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz";
+        sha1 = "240cd05785a9a18e561dc1b44b41c763ef1e8db0";
+      };
+    }
+    {
+      name = "got___got_9.6.0.tgz";
+      path = fetchurl {
+        name = "got___got_9.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz";
+        sha1 = "edf45e7d67f99545705de1f7bbeeeb121765ed85";
+      };
+    }
+    {
+      name = "graceful_fs___graceful_fs_4.2.3.tgz";
+      path = fetchurl {
+        name = "graceful_fs___graceful_fs_4.2.3.tgz";
+        url  = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz";
+        sha1 = "4a12ff1b60376ef09862c2093edd908328be8423";
+      };
+    }
+    {
+      name = "har_schema___har_schema_2.0.0.tgz";
+      path = fetchurl {
+        name = "har_schema___har_schema_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz";
+        sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
+      };
+    }
+    {
+      name = "har_validator___har_validator_5.1.3.tgz";
+      path = fetchurl {
+        name = "har_validator___har_validator_5.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz";
+        sha1 = "1ef89ebd3e4996557675eed9893110dc350fa080";
+      };
+    }
+    {
+      name = "has_flag___has_flag_3.0.0.tgz";
+      path = fetchurl {
+        name = "has_flag___has_flag_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz";
+        sha1 = "b5d454dc2199ae225699f3467e5a07f3b955bafd";
+      };
+    }
+    {
+      name = "has_flag___has_flag_4.0.0.tgz";
+      path = fetchurl {
+        name = "has_flag___has_flag_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz";
+        sha1 = "944771fd9c81c81265c4d6941860da06bb59479b";
+      };
+    }
+    {
+      name = "has_symbols___has_symbols_1.0.1.tgz";
+      path = fetchurl {
+        name = "has_symbols___has_symbols_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz";
+        sha1 = "9f5214758a44196c406d9bd76cebf81ec2dd31e8";
+      };
+    }
+    {
+      name = "has_unicode___has_unicode_2.0.1.tgz";
+      path = fetchurl {
+        name = "has_unicode___has_unicode_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz";
+        sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
+      };
+    }
+    {
+      name = "has_yarn___has_yarn_2.1.0.tgz";
+      path = fetchurl {
+        name = "has_yarn___has_yarn_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz";
+        sha1 = "137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77";
+      };
+    }
+    {
+      name = "has___has_1.0.3.tgz";
+      path = fetchurl {
+        name = "has___has_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz";
+        sha1 = "722d7cbfc1f6aa8241f16dd814e011e1f41e8796";
+      };
+    }
+    {
+      name = "hosted_git_info___hosted_git_info_2.8.5.tgz";
+      path = fetchurl {
+        name = "hosted_git_info___hosted_git_info_2.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz";
+        sha1 = "759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c";
+      };
+    }
+    {
+      name = "hosted_git_info___hosted_git_info_3.0.2.tgz";
+      path = fetchurl {
+        name = "hosted_git_info___hosted_git_info_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.2.tgz";
+        sha1 = "8b7e3bd114b59b51786f8bade0f39ddc80275a97";
+      };
+    }
+    {
+      name = "http_cache_semantics___http_cache_semantics_3.8.1.tgz";
+      path = fetchurl {
+        name = "http_cache_semantics___http_cache_semantics_3.8.1.tgz";
+        url  = "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz";
+        sha1 = "39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2";
+      };
+    }
+    {
+      name = "http_cache_semantics___http_cache_semantics_4.0.3.tgz";
+      path = fetchurl {
+        name = "http_cache_semantics___http_cache_semantics_4.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz";
+        sha1 = "495704773277eeef6e43f9ab2c2c7d259dda25c5";
+      };
+    }
+    {
+      name = "http_proxy_agent___http_proxy_agent_2.1.0.tgz";
+      path = fetchurl {
+        name = "http_proxy_agent___http_proxy_agent_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz";
+        sha1 = "e4821beef5b2142a2026bd73926fe537631c5405";
+      };
+    }
+    {
+      name = "http_signature___http_signature_1.2.0.tgz";
+      path = fetchurl {
+        name = "http_signature___http_signature_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz";
+        sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
+      };
+    }
+    {
+      name = "https_proxy_agent___https_proxy_agent_2.2.4.tgz";
+      path = fetchurl {
+        name = "https_proxy_agent___https_proxy_agent_2.2.4.tgz";
+        url  = "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz";
+        sha1 = "4ee7a737abd92678a293d9b34a1af4d0d08c787b";
+      };
+    }
+    {
+      name = "humanize_ms___humanize_ms_1.2.1.tgz";
+      path = fetchurl {
+        name = "humanize_ms___humanize_ms_1.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz";
+        sha1 = "c46e3159a293f6b896da29316d8b6fe8bb79bbed";
+      };
+    }
+    {
+      name = "iconv_lite___iconv_lite_0.4.24.tgz";
+      path = fetchurl {
+        name = "iconv_lite___iconv_lite_0.4.24.tgz";
+        url  = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz";
+        sha1 = "2022b4b25fbddc21d2f524974a474aafe733908b";
+      };
+    }
+    {
+      name = "iconv_lite___iconv_lite_0.5.1.tgz";
+      path = fetchurl {
+        name = "iconv_lite___iconv_lite_0.5.1.tgz";
+        url  = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.5.1.tgz";
+        sha1 = "b2425d3c7b18f7219f2ca663d103bddb91718d64";
+      };
+    }
+    {
+      name = "ieee754___ieee754_1.1.13.tgz";
+      path = fetchurl {
+        name = "ieee754___ieee754_1.1.13.tgz";
+        url  = "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz";
+        sha1 = "ec168558e95aa181fd87d37f55c32bbcb6708b84";
+      };
+    }
+    {
+      name = "iferr___iferr_0.1.5.tgz";
+      path = fetchurl {
+        name = "iferr___iferr_0.1.5.tgz";
+        url  = "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz";
+        sha1 = "c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501";
+      };
+    }
+    {
+      name = "iferr___iferr_1.0.2.tgz";
+      path = fetchurl {
+        name = "iferr___iferr_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/iferr/-/iferr-1.0.2.tgz";
+        sha1 = "e9fde49a9da06dc4a4194c6c9ed6d08305037a6d";
+      };
+    }
+    {
+      name = "ignore_walk___ignore_walk_3.0.3.tgz";
+      path = fetchurl {
+        name = "ignore_walk___ignore_walk_3.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz";
+        sha1 = "017e2447184bfeade7c238e4aefdd1e8f95b1e37";
+      };
+    }
+    {
+      name = "ignore___ignore_4.0.6.tgz";
+      path = fetchurl {
+        name = "ignore___ignore_4.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz";
+        sha1 = "750e3db5862087b4737ebac8207ffd1ef27b25fc";
+      };
+    }
+    {
+      name = "import_fresh___import_fresh_3.2.1.tgz";
+      path = fetchurl {
+        name = "import_fresh___import_fresh_3.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz";
+        sha1 = "633ff618506e793af5ac91bf48b72677e15cbe66";
+      };
+    }
+    {
+      name = "import_lazy___import_lazy_2.1.0.tgz";
+      path = fetchurl {
+        name = "import_lazy___import_lazy_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz";
+        sha1 = "05698e3d45c88e8d7e9d92cb0584e77f096f3e43";
+      };
+    }
+    {
+      name = "imurmurhash___imurmurhash_0.1.4.tgz";
+      path = fetchurl {
+        name = "imurmurhash___imurmurhash_0.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz";
+        sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea";
+      };
+    }
+    {
+      name = "infer_owner___infer_owner_1.0.4.tgz";
+      path = fetchurl {
+        name = "infer_owner___infer_owner_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz";
+        sha1 = "c4cefcaa8e51051c2a40ba2ce8a3d27295af9467";
+      };
+    }
+    {
+      name = "inflight___inflight_1.0.6.tgz";
+      path = fetchurl {
+        name = "inflight___inflight_1.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz";
+        sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
+      };
+    }
+    {
+      name = "inherits___inherits_2.0.4.tgz";
+      path = fetchurl {
+        name = "inherits___inherits_2.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz";
+        sha1 = "0fa2c64f932917c3433a0ded55363aae37416b7c";
+      };
+    }
+    {
+      name = "ini___ini_1.3.5.tgz";
+      path = fetchurl {
+        name = "ini___ini_1.3.5.tgz";
+        url  = "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz";
+        sha1 = "eee25f56db1c9ec6085e0c22778083f596abf927";
+      };
+    }
+    {
+      name = "init_package_json___init_package_json_1.10.3.tgz";
+      path = fetchurl {
+        name = "init_package_json___init_package_json_1.10.3.tgz";
+        url  = "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz";
+        sha1 = "45ffe2f610a8ca134f2bd1db5637b235070f6cbe";
+      };
+    }
+    {
+      name = "inquirer___inquirer_6.5.2.tgz";
+      path = fetchurl {
+        name = "inquirer___inquirer_6.5.2.tgz";
+        url  = "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz";
+        sha1 = "ad50942375d036d327ff528c08bd5fab089928ca";
+      };
+    }
+    {
+      name = "invert_kv___invert_kv_1.0.0.tgz";
+      path = fetchurl {
+        name = "invert_kv___invert_kv_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz";
+        sha1 = "104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6";
+      };
+    }
+    {
+      name = "invert_kv___invert_kv_2.0.0.tgz";
+      path = fetchurl {
+        name = "invert_kv___invert_kv_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz";
+        sha1 = "7393f5afa59ec9ff5f67a27620d11c226e3eec02";
+      };
+    }
+    {
+      name = "ip_regex___ip_regex_1.0.3.tgz";
+      path = fetchurl {
+        name = "ip_regex___ip_regex_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz";
+        sha1 = "dc589076f659f419c222039a33316f1c7387effd";
+      };
+    }
+    {
+      name = "ip_regex___ip_regex_2.1.0.tgz";
+      path = fetchurl {
+        name = "ip_regex___ip_regex_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz";
+        sha1 = "fa78bf5d2e6913c911ce9f819ee5146bb6d844e9";
+      };
+    }
+    {
+      name = "ip___ip_1.1.5.tgz";
+      path = fetchurl {
+        name = "ip___ip_1.1.5.tgz";
+        url  = "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz";
+        sha1 = "bdded70114290828c0a039e72ef25f5aaec4354a";
+      };
+    }
+    {
+      name = "is_arguments___is_arguments_1.0.4.tgz";
+      path = fetchurl {
+        name = "is_arguments___is_arguments_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz";
+        sha1 = "3faf966c7cba0ff437fb31f6250082fcf0448cf3";
+      };
+    }
+    {
+      name = "is_arrayish___is_arrayish_0.2.1.tgz";
+      path = fetchurl {
+        name = "is_arrayish___is_arrayish_0.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz";
+        sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d";
+      };
+    }
+    {
+      name = "is_callable___is_callable_1.1.4.tgz";
+      path = fetchurl {
+        name = "is_callable___is_callable_1.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz";
+        sha1 = "1e1adf219e1eeb684d691f9d6a05ff0d30a24d75";
+      };
+    }
+    {
+      name = "is_ci___is_ci_1.2.1.tgz";
+      path = fetchurl {
+        name = "is_ci___is_ci_1.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz";
+        sha1 = "e3779c8ee17fccf428488f6e281187f2e632841c";
+      };
+    }
+    {
+      name = "is_ci___is_ci_2.0.0.tgz";
+      path = fetchurl {
+        name = "is_ci___is_ci_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz";
+        sha1 = "6bc6334181810e04b5c22b3d589fdca55026404c";
+      };
+    }
+    {
+      name = "is_cidr___is_cidr_3.1.0.tgz";
+      path = fetchurl {
+        name = "is_cidr___is_cidr_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-cidr/-/is-cidr-3.1.0.tgz";
+        sha1 = "72e233d8e1c4cd1d3f11713fcce3eba7b0e3476f";
+      };
+    }
+    {
+      name = "is_date_object___is_date_object_1.0.1.tgz";
+      path = fetchurl {
+        name = "is_date_object___is_date_object_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz";
+        sha1 = "9aa20eb6aeebbff77fbd33e74ca01b33581d3a16";
+      };
+    }
+    {
+      name = "is_fullwidth_code_point___is_fullwidth_code_point_1.0.0.tgz";
+      path = fetchurl {
+        name = "is_fullwidth_code_point___is_fullwidth_code_point_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
+        sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
+      };
+    }
+    {
+      name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz";
+      path = fetchurl {
+        name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
+        sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
+      };
+    }
+    {
+      name = "is_fullwidth_code_point___is_fullwidth_code_point_3.0.0.tgz";
+      path = fetchurl {
+        name = "is_fullwidth_code_point___is_fullwidth_code_point_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz";
+        sha1 = "f116f8064fe90b3f7844a38997c0b75051269f1d";
+      };
+    }
+    {
+      name = "is_function___is_function_1.0.1.tgz";
+      path = fetchurl {
+        name = "is_function___is_function_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz";
+        sha1 = "12cfb98b65b57dd3d193a3121f5f6e2f437602b5";
+      };
+    }
+    {
+      name = "is_installed_globally___is_installed_globally_0.1.0.tgz";
+      path = fetchurl {
+        name = "is_installed_globally___is_installed_globally_0.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz";
+        sha1 = "0dfd98f5a9111716dd535dda6492f67bf3d25a80";
+      };
+    }
+    {
+      name = "is_installed_globally___is_installed_globally_0.3.1.tgz";
+      path = fetchurl {
+        name = "is_installed_globally___is_installed_globally_0.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.1.tgz";
+        sha1 = "679afef819347a72584617fd19497f010b8ed35f";
+      };
+    }
+    {
+      name = "is_npm___is_npm_1.0.0.tgz";
+      path = fetchurl {
+        name = "is_npm___is_npm_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz";
+        sha1 = "f2fb63a65e4905b406c86072765a1a4dc793b9f4";
+      };
+    }
+    {
+      name = "is_npm___is_npm_4.0.0.tgz";
+      path = fetchurl {
+        name = "is_npm___is_npm_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz";
+        sha1 = "c90dd8380696df87a7a6d823c20d0b12bbe3c84d";
+      };
+    }
+    {
+      name = "is_obj___is_obj_1.0.1.tgz";
+      path = fetchurl {
+        name = "is_obj___is_obj_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz";
+        sha1 = "3e4729ac1f5fde025cd7d83a896dab9f4f67db0f";
+      };
+    }
+    {
+      name = "is_obj___is_obj_2.0.0.tgz";
+      path = fetchurl {
+        name = "is_obj___is_obj_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz";
+        sha1 = "473fb05d973705e3fd9620545018ca8e22ef4982";
+      };
+    }
+    {
+      name = "is_path_inside___is_path_inside_1.0.1.tgz";
+      path = fetchurl {
+        name = "is_path_inside___is_path_inside_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz";
+        sha1 = "8ef5b7de50437a3fdca6b4e865ef7aa55cb48036";
+      };
+    }
+    {
+      name = "is_path_inside___is_path_inside_3.0.2.tgz";
+      path = fetchurl {
+        name = "is_path_inside___is_path_inside_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz";
+        sha1 = "f5220fc82a3e233757291dddc9c5877f2a1f3017";
+      };
+    }
+    {
+      name = "is_promise___is_promise_2.1.0.tgz";
+      path = fetchurl {
+        name = "is_promise___is_promise_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz";
+        sha1 = "79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa";
+      };
+    }
+    {
+      name = "is_redirect___is_redirect_1.0.0.tgz";
+      path = fetchurl {
+        name = "is_redirect___is_redirect_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz";
+        sha1 = "1d03dded53bd8db0f30c26e4f95d36fc7c87dc24";
+      };
+    }
+    {
+      name = "is_regex___is_regex_1.0.4.tgz";
+      path = fetchurl {
+        name = "is_regex___is_regex_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz";
+        sha1 = "5517489b547091b0930e095654ced25ee97e9491";
+      };
+    }
+    {
+      name = "is_retry_allowed___is_retry_allowed_1.2.0.tgz";
+      path = fetchurl {
+        name = "is_retry_allowed___is_retry_allowed_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz";
+        sha1 = "d778488bd0a4666a3be8a1482b9f2baafedea8b4";
+      };
+    }
+    {
+      name = "is_stream___is_stream_1.1.0.tgz";
+      path = fetchurl {
+        name = "is_stream___is_stream_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz";
+        sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
+      };
+    }
+    {
+      name = "is_symbol___is_symbol_1.0.3.tgz";
+      path = fetchurl {
+        name = "is_symbol___is_symbol_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz";
+        sha1 = "38e1014b9e6329be0de9d24a414fd7441ec61937";
+      };
+    }
+    {
+      name = "is_typedarray___is_typedarray_1.0.0.tgz";
+      path = fetchurl {
+        name = "is_typedarray___is_typedarray_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz";
+        sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
+      };
+    }
+    {
+      name = "is_yarn_global___is_yarn_global_0.3.0.tgz";
+      path = fetchurl {
+        name = "is_yarn_global___is_yarn_global_0.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz";
+        sha1 = "d502d3382590ea3004893746754c89139973e232";
+      };
+    }
+    {
+      name = "isarray___isarray_0.0.1.tgz";
+      path = fetchurl {
+        name = "isarray___isarray_0.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz";
+        sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
+      };
+    }
+    {
+      name = "isarray___isarray_1.0.0.tgz";
+      path = fetchurl {
+        name = "isarray___isarray_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz";
+        sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
+      };
+    }
+    {
+      name = "isbinaryfile___isbinaryfile_4.0.4.tgz";
+      path = fetchurl {
+        name = "isbinaryfile___isbinaryfile_4.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.4.tgz";
+        sha1 = "6803f81a8944201c642b6e17da041e24deb78712";
+      };
+    }
+    {
+      name = "isexe___isexe_2.0.0.tgz";
+      path = fetchurl {
+        name = "isexe___isexe_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz";
+        sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
+      };
+    }
+    {
+      name = "isstream___isstream_0.1.2.tgz";
+      path = fetchurl {
+        name = "isstream___isstream_0.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz";
+        sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
+      };
+    }
+    {
+      name = "jimp___jimp_0.2.28.tgz";
+      path = fetchurl {
+        name = "jimp___jimp_0.2.28.tgz";
+        url  = "https://registry.yarnpkg.com/jimp/-/jimp-0.2.28.tgz";
+        sha1 = "dd529a937190f42957a7937d1acc3a7762996ea2";
+      };
+    }
+    {
+      name = "jpeg_js___jpeg_js_0.2.0.tgz";
+      path = fetchurl {
+        name = "jpeg_js___jpeg_js_0.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.2.0.tgz";
+        sha1 = "53e448ec9d263e683266467e9442d2c5a2ef5482";
+      };
+    }
+    {
+      name = "js_tokens___js_tokens_4.0.0.tgz";
+      path = fetchurl {
+        name = "js_tokens___js_tokens_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz";
+        sha1 = "19203fb59991df98e3a287050d4647cdeaf32499";
+      };
+    }
+    {
+      name = "js_yaml___js_yaml_3.13.1.tgz";
+      path = fetchurl {
+        name = "js_yaml___js_yaml_3.13.1.tgz";
+        url  = "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz";
+        sha1 = "aff151b30bfdfa8e49e05da22e7415e9dfa37847";
+      };
+    }
+    {
+      name = "jsbn___jsbn_0.1.1.tgz";
+      path = fetchurl {
+        name = "jsbn___jsbn_0.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz";
+        sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
+      };
+    }
+    {
+      name = "json_buffer___json_buffer_3.0.0.tgz";
+      path = fetchurl {
+        name = "json_buffer___json_buffer_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz";
+        sha1 = "5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898";
+      };
+    }
+    {
+      name = "json_parse_better_errors___json_parse_better_errors_1.0.2.tgz";
+      path = fetchurl {
+        name = "json_parse_better_errors___json_parse_better_errors_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz";
+        sha1 = "bb867cfb3450e69107c131d1c514bab3dc8bcaa9";
+      };
+    }
+    {
+      name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
+      path = fetchurl {
+        name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
+        sha1 = "69f6a87d9513ab8bb8fe63bdb0979c448e684660";
+      };
+    }
+    {
+      name = "json_schema___json_schema_0.2.3.tgz";
+      path = fetchurl {
+        name = "json_schema___json_schema_0.2.3.tgz";
+        url  = "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz";
+        sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
+      };
+    }
+    {
+      name = "json_stable_stringify_without_jsonify___json_stable_stringify_without_jsonify_1.0.1.tgz";
+      path = fetchurl {
+        name = "json_stable_stringify_without_jsonify___json_stable_stringify_without_jsonify_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz";
+        sha1 = "9db7b59496ad3f3cfef30a75142d2d930ad72651";
+      };
+    }
+    {
+      name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
+      path = fetchurl {
+        name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
+        sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
+      };
+    }
+    {
+      name = "json5___json5_2.1.1.tgz";
+      path = fetchurl {
+        name = "json5___json5_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz";
+        sha1 = "81b6cb04e9ba496f1c7005d07b4368a2638f90b6";
+      };
+    }
+    {
+      name = "jsonfile___jsonfile_2.4.0.tgz";
+      path = fetchurl {
+        name = "jsonfile___jsonfile_2.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz";
+        sha1 = "3736a2b428b87bbda0cc83b53fa3d633a35c2ae8";
+      };
+    }
+    {
+      name = "jsonfile___jsonfile_4.0.0.tgz";
+      path = fetchurl {
+        name = "jsonfile___jsonfile_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz";
+        sha1 = "8771aae0799b64076b76640fca058f9c10e33ecb";
+      };
+    }
+    {
+      name = "jsonparse___jsonparse_1.3.1.tgz";
+      path = fetchurl {
+        name = "jsonparse___jsonparse_1.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz";
+        sha1 = "3f4dae4a91fac315f71062f8521cc239f1366280";
+      };
+    }
+    {
+      name = "jsprim___jsprim_1.4.1.tgz";
+      path = fetchurl {
+        name = "jsprim___jsprim_1.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz";
+        sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
+      };
+    }
+    {
+      name = "keyv___keyv_3.1.0.tgz";
+      path = fetchurl {
+        name = "keyv___keyv_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz";
+        sha1 = "ecc228486f69991e49e9476485a5be1e8fc5c4d9";
+      };
+    }
+    {
+      name = "latest_version___latest_version_3.1.0.tgz";
+      path = fetchurl {
+        name = "latest_version___latest_version_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz";
+        sha1 = "a205383fea322b33b5ae3b18abee0dc2f356ee15";
+      };
+    }
+    {
+      name = "latest_version___latest_version_5.1.0.tgz";
+      path = fetchurl {
+        name = "latest_version___latest_version_5.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz";
+        sha1 = "119dfe908fe38d15dfa43ecd13fa12ec8832face";
+      };
+    }
+    {
+      name = "lazy_property___lazy_property_1.0.0.tgz";
+      path = fetchurl {
+        name = "lazy_property___lazy_property_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/lazy-property/-/lazy-property-1.0.0.tgz";
+        sha1 = "84ddc4b370679ba8bd4cdcfa4c06b43d57111147";
+      };
+    }
+    {
+      name = "lazy_val___lazy_val_1.0.4.tgz";
+      path = fetchurl {
+        name = "lazy_val___lazy_val_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.4.tgz";
+        sha1 = "882636a7245c2cfe6e0a4e3ba6c5d68a137e5c65";
+      };
+    }
+    {
+      name = "lazystream___lazystream_1.0.0.tgz";
+      path = fetchurl {
+        name = "lazystream___lazystream_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz";
+        sha1 = "f6995fe0f820392f61396be89462407bb77168e4";
+      };
+    }
+    {
+      name = "lcid___lcid_1.0.0.tgz";
+      path = fetchurl {
+        name = "lcid___lcid_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz";
+        sha1 = "308accafa0bc483a3867b4b6f2b9506251d1b835";
+      };
+    }
+    {
+      name = "lcid___lcid_2.0.0.tgz";
+      path = fetchurl {
+        name = "lcid___lcid_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz";
+        sha1 = "6ef5d2df60e52f82eb228a4c373e8d1f397253cf";
+      };
+    }
+    {
+      name = "levn___levn_0.3.0.tgz";
+      path = fetchurl {
+        name = "levn___levn_0.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz";
+        sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
+      };
+    }
+    {
+      name = "libcipm___libcipm_4.0.7.tgz";
+      path = fetchurl {
+        name = "libcipm___libcipm_4.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/libcipm/-/libcipm-4.0.7.tgz";
+        sha1 = "76cd675c98bdaae64db88b782b01b804b6d02c8a";
+      };
+    }
+    {
+      name = "libnpm___libnpm_3.0.1.tgz";
+      path = fetchurl {
+        name = "libnpm___libnpm_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/libnpm/-/libnpm-3.0.1.tgz";
+        sha1 = "0be11b4c9dd4d1ffd7d95c786e92e55d65be77a2";
+      };
+    }
+    {
+      name = "libnpmaccess___libnpmaccess_3.0.2.tgz";
+      path = fetchurl {
+        name = "libnpmaccess___libnpmaccess_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.2.tgz";
+        sha1 = "8b2d72345ba3bef90d3b4f694edd5c0417f58923";
+      };
+    }
+    {
+      name = "libnpmconfig___libnpmconfig_1.2.1.tgz";
+      path = fetchurl {
+        name = "libnpmconfig___libnpmconfig_1.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/libnpmconfig/-/libnpmconfig-1.2.1.tgz";
+        sha1 = "c0c2f793a74e67d4825e5039e7a02a0044dfcbc0";
+      };
+    }
+    {
+      name = "libnpmhook___libnpmhook_5.0.3.tgz";
+      path = fetchurl {
+        name = "libnpmhook___libnpmhook_5.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-5.0.3.tgz";
+        sha1 = "4020c0f5edbf08ebe395325caa5ea01885b928f7";
+      };
+    }
+    {
+      name = "libnpmorg___libnpmorg_1.0.1.tgz";
+      path = fetchurl {
+        name = "libnpmorg___libnpmorg_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-1.0.1.tgz";
+        sha1 = "5d2503f6ceb57f33dbdcc718e6698fea6d5ad087";
+      };
+    }
+    {
+      name = "libnpmpublish___libnpmpublish_1.1.3.tgz";
+      path = fetchurl {
+        name = "libnpmpublish___libnpmpublish_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-1.1.3.tgz";
+        sha1 = "e3782796722d79eef1a0a22944c117e0c4ca4280";
+      };
+    }
+    {
+      name = "libnpmsearch___libnpmsearch_2.0.2.tgz";
+      path = fetchurl {
+        name = "libnpmsearch___libnpmsearch_2.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-2.0.2.tgz";
+        sha1 = "9a4f059102d38e3dd44085bdbfe5095f2a5044cf";
+      };
+    }
+    {
+      name = "libnpmteam___libnpmteam_1.0.2.tgz";
+      path = fetchurl {
+        name = "libnpmteam___libnpmteam_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-1.0.2.tgz";
+        sha1 = "8b48bcbb6ce70dd8150c950fcbdbf3feb6eec820";
+      };
+    }
+    {
+      name = "libnpx___libnpx_10.2.2.tgz";
+      path = fetchurl {
+        name = "libnpx___libnpx_10.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/libnpx/-/libnpx-10.2.2.tgz";
+        sha1 = "5a4171b9b92dd031463ef66a4af9f5cbd6b09572";
+      };
+    }
+    {
+      name = "load_bmfont___load_bmfont_1.4.0.tgz";
+      path = fetchurl {
+        name = "load_bmfont___load_bmfont_1.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/load-bmfont/-/load-bmfont-1.4.0.tgz";
+        sha1 = "75f17070b14a8c785fe7f5bee2e6fd4f98093b6b";
+      };
+    }
+    {
+      name = "load_json_file___load_json_file_2.0.0.tgz";
+      path = fetchurl {
+        name = "load_json_file___load_json_file_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz";
+        sha1 = "7947e42149af80d696cbf797bcaabcfe1fe29ca8";
+      };
+    }
+    {
+      name = "locate_path___locate_path_2.0.0.tgz";
+      path = fetchurl {
+        name = "locate_path___locate_path_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz";
+        sha1 = "2b568b265eec944c6d9c0de9c3dbbbca0354cd8e";
+      };
+    }
+    {
+      name = "locate_path___locate_path_3.0.0.tgz";
+      path = fetchurl {
+        name = "locate_path___locate_path_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz";
+        sha1 = "dbec3b3ab759758071b58fe59fc41871af21400e";
+      };
+    }
+    {
+      name = "locate_path___locate_path_5.0.0.tgz";
+      path = fetchurl {
+        name = "locate_path___locate_path_5.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz";
+        sha1 = "1afba396afd676a6d42504d0a67a3a7eb9f62aa0";
+      };
+    }
+    {
+      name = "lock_verify___lock_verify_2.2.0.tgz";
+      path = fetchurl {
+        name = "lock_verify___lock_verify_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/lock-verify/-/lock-verify-2.2.0.tgz";
+        sha1 = "12432feb68bb647071c78c44bde16029a0f7d935";
+      };
+    }
+    {
+      name = "lockfile___lockfile_1.0.4.tgz";
+      path = fetchurl {
+        name = "lockfile___lockfile_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz";
+        sha1 = "07f819d25ae48f87e538e6578b6964a4981a5609";
+      };
+    }
+    {
+      name = "lodash._baseuniq___lodash._baseuniq_4.6.0.tgz";
+      path = fetchurl {
+        name = "lodash._baseuniq___lodash._baseuniq_4.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz";
+        sha1 = "0ebb44e456814af7905c6212fa2c9b2d51b841e8";
+      };
+    }
+    {
+      name = "lodash._createset___lodash._createset_4.0.3.tgz";
+      path = fetchurl {
+        name = "lodash._createset___lodash._createset_4.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz";
+        sha1 = "0f4659fbb09d75194fa9e2b88a6644d363c9fe26";
+      };
+    }
+    {
+      name = "lodash._root___lodash._root_3.0.1.tgz";
+      path = fetchurl {
+        name = "lodash._root___lodash._root_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz";
+        sha1 = "fba1c4524c19ee9a5f8136b4609f017cf4ded692";
+      };
+    }
+    {
+      name = "lodash.clonedeep___lodash.clonedeep_4.5.0.tgz";
+      path = fetchurl {
+        name = "lodash.clonedeep___lodash.clonedeep_4.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz";
+        sha1 = "e23f3f9c4f8fbdde872529c1071857a086e5ccef";
+      };
+    }
+    {
+      name = "lodash.defaults___lodash.defaults_4.2.0.tgz";
+      path = fetchurl {
+        name = "lodash.defaults___lodash.defaults_4.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz";
+        sha1 = "d09178716ffea4dde9e5fb7b37f6f0802274580c";
+      };
+    }
+    {
+      name = "lodash.difference___lodash.difference_4.5.0.tgz";
+      path = fetchurl {
+        name = "lodash.difference___lodash.difference_4.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz";
+        sha1 = "9ccb4e505d486b91651345772885a2df27fd017c";
+      };
+    }
+    {
+      name = "lodash.flatten___lodash.flatten_4.4.0.tgz";
+      path = fetchurl {
+        name = "lodash.flatten___lodash.flatten_4.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz";
+        sha1 = "f31c22225a9632d2bbf8e4addbef240aa765a61f";
+      };
+    }
+    {
+      name = "lodash.isplainobject___lodash.isplainobject_4.0.6.tgz";
+      path = fetchurl {
+        name = "lodash.isplainobject___lodash.isplainobject_4.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz";
+        sha1 = "7c526a52d89b45c45cc690b88163be0497f550cb";
+      };
+    }
+    {
+      name = "lodash.union___lodash.union_4.6.0.tgz";
+      path = fetchurl {
+        name = "lodash.union___lodash.union_4.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz";
+        sha1 = "48bb5088409f16f1821666641c44dd1aaae3cd88";
+      };
+    }
+    {
+      name = "lodash.uniq___lodash.uniq_4.5.0.tgz";
+      path = fetchurl {
+        name = "lodash.uniq___lodash.uniq_4.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz";
+        sha1 = "d0225373aeb652adc1bc82e4945339a842754773";
+      };
+    }
+    {
+      name = "lodash.without___lodash.without_4.4.0.tgz";
+      path = fetchurl {
+        name = "lodash.without___lodash.without_4.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz";
+        sha1 = "3cd4574a00b67bae373a94b748772640507b7aac";
+      };
+    }
+    {
+      name = "lodash___lodash_4.17.15.tgz";
+      path = fetchurl {
+        name = "lodash___lodash_4.17.15.tgz";
+        url  = "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz";
+        sha1 = "b447f6670a0455bbfeedd11392eff330ea097548";
+      };
+    }
+    {
+      name = "loglevel___loglevel_1.6.6.tgz";
+      path = fetchurl {
+        name = "loglevel___loglevel_1.6.6.tgz";
+        url  = "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz";
+        sha1 = "0ee6300cc058db6b3551fa1c4bf73b83bb771312";
+      };
+    }
+    {
+      name = "lowercase_keys___lowercase_keys_1.0.1.tgz";
+      path = fetchurl {
+        name = "lowercase_keys___lowercase_keys_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz";
+        sha1 = "6f9e30b47084d971a7c820ff15a6c5167b74c26f";
+      };
+    }
+    {
+      name = "lowercase_keys___lowercase_keys_2.0.0.tgz";
+      path = fetchurl {
+        name = "lowercase_keys___lowercase_keys_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz";
+        sha1 = "2603e78b7b4b0006cbca2fbcc8a3202558ac9479";
+      };
+    }
+    {
+      name = "lru_cache___lru_cache_4.1.5.tgz";
+      path = fetchurl {
+        name = "lru_cache___lru_cache_4.1.5.tgz";
+        url  = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz";
+        sha1 = "8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd";
+      };
+    }
+    {
+      name = "lru_cache___lru_cache_5.1.1.tgz";
+      path = fetchurl {
+        name = "lru_cache___lru_cache_5.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz";
+        sha1 = "1da27e6710271947695daf6848e847f01d84b920";
+      };
+    }
+    {
+      name = "make_dir___make_dir_1.3.0.tgz";
+      path = fetchurl {
+        name = "make_dir___make_dir_1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz";
+        sha1 = "79c1033b80515bd6d24ec9933e860ca75ee27f0c";
+      };
+    }
+    {
+      name = "make_dir___make_dir_3.0.2.tgz";
+      path = fetchurl {
+        name = "make_dir___make_dir_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz";
+        sha1 = "04a1acbf22221e1d6ef43559f43e05a90dbb4392";
+      };
+    }
+    {
+      name = "make_fetch_happen___make_fetch_happen_5.0.2.tgz";
+      path = fetchurl {
+        name = "make_fetch_happen___make_fetch_happen_5.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz";
+        sha1 = "aa8387104f2687edca01c8687ee45013d02d19bd";
+      };
+    }
+    {
+      name = "map_age_cleaner___map_age_cleaner_0.1.3.tgz";
+      path = fetchurl {
+        name = "map_age_cleaner___map_age_cleaner_0.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz";
+        sha1 = "7d583a7306434c055fe474b0f45078e6e1b4b92a";
+      };
+    }
+    {
+      name = "matrix_js_sdk___matrix_js_sdk_6.2.2.tgz";
+      path = fetchurl {
+        name = "matrix_js_sdk___matrix_js_sdk_6.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-6.2.2.tgz";
+        sha1 = "103d951f61945217b110962f55ae43996756f615";
+      };
+    }
+    {
+      name = "meant___meant_1.0.1.tgz";
+      path = fetchurl {
+        name = "meant___meant_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/meant/-/meant-1.0.1.tgz";
+        sha1 = "66044fea2f23230ec806fb515efea29c44d2115d";
+      };
+    }
+    {
+      name = "mem___mem_1.1.0.tgz";
+      path = fetchurl {
+        name = "mem___mem_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz";
+        sha1 = "5edd52b485ca1d900fe64895505399a0dfa45f76";
+      };
+    }
+    {
+      name = "mem___mem_4.3.0.tgz";
+      path = fetchurl {
+        name = "mem___mem_4.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz";
+        sha1 = "461af497bc4ae09608cdb2e60eefb69bff744178";
+      };
+    }
+    {
+      name = "mime_db___mime_db_1.42.0.tgz";
+      path = fetchurl {
+        name = "mime_db___mime_db_1.42.0.tgz";
+        url  = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz";
+        sha1 = "3e252907b4c7adb906597b4b65636272cf9e7bac";
+      };
+    }
+    {
+      name = "mime_types___mime_types_2.1.25.tgz";
+      path = fetchurl {
+        name = "mime_types___mime_types_2.1.25.tgz";
+        url  = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz";
+        sha1 = "39772d46621f93e2a80a856c53b86a62156a6437";
+      };
+    }
+    {
+      name = "mime___mime_1.6.0.tgz";
+      path = fetchurl {
+        name = "mime___mime_1.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz";
+        sha1 = "32cd9e5c64553bd58d19a568af452acff04981b1";
+      };
+    }
+    {
+      name = "mime___mime_2.4.4.tgz";
+      path = fetchurl {
+        name = "mime___mime_2.4.4.tgz";
+        url  = "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz";
+        sha1 = "bd7b91135fc6b01cde3e9bae33d659b63d8857e5";
+      };
+    }
+    {
+      name = "mimic_fn___mimic_fn_1.2.0.tgz";
+      path = fetchurl {
+        name = "mimic_fn___mimic_fn_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz";
+        sha1 = "820c86a39334640e99516928bd03fca88057d022";
+      };
+    }
+    {
+      name = "mimic_fn___mimic_fn_2.1.0.tgz";
+      path = fetchurl {
+        name = "mimic_fn___mimic_fn_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz";
+        sha1 = "7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b";
+      };
+    }
+    {
+      name = "mimic_response___mimic_response_1.0.1.tgz";
+      path = fetchurl {
+        name = "mimic_response___mimic_response_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz";
+        sha1 = "4923538878eef42063cb8a3e3b0798781487ab1b";
+      };
+    }
+    {
+      name = "min_document___min_document_2.19.0.tgz";
+      path = fetchurl {
+        name = "min_document___min_document_2.19.0.tgz";
+        url  = "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz";
+        sha1 = "7bd282e3f5842ed295bb748cdd9f1ffa2c824685";
+      };
+    }
+    {
+      name = "minimatch___minimatch_3.0.4.tgz";
+      path = fetchurl {
+        name = "minimatch___minimatch_3.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz";
+        sha1 = "5166e286457f03306064be5497e8dbb0c3d32083";
+      };
+    }
+    {
+      name = "minimist___minimist_0.0.8.tgz";
+      path = fetchurl {
+        name = "minimist___minimist_0.0.8.tgz";
+        url  = "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz";
+        sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
+      };
+    }
+    {
+      name = "minimist___minimist_1.2.3.tgz";
+      path = fetchurl {
+        name = "minimist___minimist_1.2.3.tgz";
+        url  = "https://registry.yarnpkg.com/minimist/-/minimist-1.2.3.tgz";
+        sha1 = "3db5c0765545ab8637be71f333a104a965a9ca3f";
+      };
+    }
+    {
+      name = "minipass___minipass_2.9.0.tgz";
+      path = fetchurl {
+        name = "minipass___minipass_2.9.0.tgz";
+        url  = "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz";
+        sha1 = "e713762e7d3e32fed803115cf93e04bca9fcc9a6";
+      };
+    }
+    {
+      name = "minipass___minipass_3.1.1.tgz";
+      path = fetchurl {
+        name = "minipass___minipass_3.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz";
+        sha1 = "7607ce778472a185ad6d89082aa2070f79cedcd5";
+      };
+    }
+    {
+      name = "minizlib___minizlib_1.3.3.tgz";
+      path = fetchurl {
+        name = "minizlib___minizlib_1.3.3.tgz";
+        url  = "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz";
+        sha1 = "2290de96818a34c29551c8a8d301216bd65a861d";
+      };
+    }
+    {
+      name = "minizlib___minizlib_2.1.0.tgz";
+      path = fetchurl {
+        name = "minizlib___minizlib_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.0.tgz";
+        sha1 = "fd52c645301ef09a63a2c209697c294c6ce02cf3";
+      };
+    }
+    {
+      name = "mississippi___mississippi_3.0.0.tgz";
+      path = fetchurl {
+        name = "mississippi___mississippi_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz";
+        sha1 = "ea0a3291f97e0b5e8776b363d5f0a12d94c67022";
+      };
+    }
+    {
+      name = "mkdirp___mkdirp_0.5.1.tgz";
+      path = fetchurl {
+        name = "mkdirp___mkdirp_0.5.1.tgz";
+        url  = "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz";
+        sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
+      };
+    }
+    {
+      name = "mkdirp___mkdirp_1.0.3.tgz";
+      path = fetchurl {
+        name = "mkdirp___mkdirp_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.3.tgz";
+        sha1 = "4cf2e30ad45959dddea53ad97d518b6c8205e1ea";
+      };
+    }
+    {
+      name = "move_concurrently___move_concurrently_1.0.1.tgz";
+      path = fetchurl {
+        name = "move_concurrently___move_concurrently_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz";
+        sha1 = "be2c005fda32e0b29af1f05d7c4b33214c701f92";
+      };
+    }
+    {
+      name = "ms___ms_2.0.0.tgz";
+      path = fetchurl {
+        name = "ms___ms_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz";
+        sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
+      };
+    }
+    {
+      name = "ms___ms_2.1.2.tgz";
+      path = fetchurl {
+        name = "ms___ms_2.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz";
+        sha1 = "d09d1f357b443f493382a8eb3ccd183872ae6009";
+      };
+    }
+    {
+      name = "mute_stream___mute_stream_0.0.7.tgz";
+      path = fetchurl {
+        name = "mute_stream___mute_stream_0.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz";
+        sha1 = "3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab";
+      };
+    }
+    {
+      name = "mute_stream___mute_stream_0.0.8.tgz";
+      path = fetchurl {
+        name = "mute_stream___mute_stream_0.0.8.tgz";
+        url  = "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz";
+        sha1 = "1630c42b2251ff81e2a283de96a5497ea92e5e0d";
+      };
+    }
+    {
+      name = "natural_compare___natural_compare_1.4.0.tgz";
+      path = fetchurl {
+        name = "natural_compare___natural_compare_1.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz";
+        sha1 = "4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7";
+      };
+    }
+    {
+      name = "needle___needle_2.3.2.tgz";
+      path = fetchurl {
+        name = "needle___needle_2.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/needle/-/needle-2.3.2.tgz";
+        sha1 = "3342dea100b7160960a450dc8c22160ac712a528";
+      };
+    }
+    {
+      name = "nice_try___nice_try_1.0.5.tgz";
+      path = fetchurl {
+        name = "nice_try___nice_try_1.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz";
+        sha1 = "a3378a7696ce7d223e88fc9b764bd7ef1089e366";
+      };
+    }
+    {
+      name = "node_fetch_npm___node_fetch_npm_2.0.2.tgz";
+      path = fetchurl {
+        name = "node_fetch_npm___node_fetch_npm_2.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz";
+        sha1 = "7258c9046182dca345b4208eda918daf33697ff7";
+      };
+    }
+    {
+      name = "node_gyp___node_gyp_5.1.0.tgz";
+      path = fetchurl {
+        name = "node_gyp___node_gyp_5.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.0.tgz";
+        sha1 = "8e31260a7af4a2e2f994b0673d4e0b3866156332";
+      };
+    }
+    {
+      name = "node_pre_gyp___node_pre_gyp_0.14.0.tgz";
+      path = fetchurl {
+        name = "node_pre_gyp___node_pre_gyp_0.14.0.tgz";
+        url  = "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz";
+        sha1 = "9a0596533b877289bcad4e143982ca3d904ddc83";
+      };
+    }
+    {
+      name = "nopt___nopt_4.0.1.tgz";
+      path = fetchurl {
+        name = "nopt___nopt_4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz";
+        sha1 = "d0d4685afd5415193c8c7505602d0d17cd64474d";
+      };
+    }
+    {
+      name = "normalize_package_data___normalize_package_data_2.5.0.tgz";
+      path = fetchurl {
+        name = "normalize_package_data___normalize_package_data_2.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz";
+        sha1 = "e66db1838b200c1dfc233225d12cb36520e234a8";
+      };
+    }
+    {
+      name = "normalize_path___normalize_path_3.0.0.tgz";
+      path = fetchurl {
+        name = "normalize_path___normalize_path_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz";
+        sha1 = "0dcd69ff23a1c9b11fd0978316644a0388216a65";
+      };
+    }
+    {
+      name = "normalize_url___normalize_url_4.5.0.tgz";
+      path = fetchurl {
+        name = "normalize_url___normalize_url_4.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz";
+        sha1 = "453354087e6ca96957bd8f5baf753f5982142129";
+      };
+    }
+    {
+      name = "npm_audit_report___npm_audit_report_1.3.2.tgz";
+      path = fetchurl {
+        name = "npm_audit_report___npm_audit_report_1.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-1.3.2.tgz";
+        sha1 = "303bc78cd9e4c226415076a4f7e528c89fc77018";
+      };
+    }
+    {
+      name = "npm_bundled___npm_bundled_1.1.1.tgz";
+      path = fetchurl {
+        name = "npm_bundled___npm_bundled_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz";
+        sha1 = "1edd570865a94cdb1bc8220775e29466c9fb234b";
+      };
+    }
+    {
+      name = "npm_cache_filename___npm_cache_filename_1.0.2.tgz";
+      path = fetchurl {
+        name = "npm_cache_filename___npm_cache_filename_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz";
+        sha1 = "ded306c5b0bfc870a9e9faf823bc5f283e05ae11";
+      };
+    }
+    {
+      name = "npm_install_checks___npm_install_checks_3.0.2.tgz";
+      path = fetchurl {
+        name = "npm_install_checks___npm_install_checks_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.2.tgz";
+        sha1 = "ab2e32ad27baa46720706908e5b14c1852de44d9";
+      };
+    }
+    {
+      name = "npm_lifecycle___npm_lifecycle_3.1.4.tgz";
+      path = fetchurl {
+        name = "npm_lifecycle___npm_lifecycle_3.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.4.tgz";
+        sha1 = "de6975c7d8df65f5150db110b57cce498b0b604c";
+      };
+    }
+    {
+      name = "npm_logical_tree___npm_logical_tree_1.2.1.tgz";
+      path = fetchurl {
+        name = "npm_logical_tree___npm_logical_tree_1.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/npm-logical-tree/-/npm-logical-tree-1.2.1.tgz";
+        sha1 = "44610141ca24664cad35d1e607176193fd8f5b88";
+      };
+    }
+    {
+      name = "npm_normalize_package_bin___npm_normalize_package_bin_1.0.1.tgz";
+      path = fetchurl {
+        name = "npm_normalize_package_bin___npm_normalize_package_bin_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz";
+        sha1 = "6e79a41f23fd235c0623218228da7d9c23b8f6e2";
+      };
+    }
+    {
+      name = "npm_package_arg___npm_package_arg_6.1.1.tgz";
+      path = fetchurl {
+        name = "npm_package_arg___npm_package_arg_6.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz";
+        sha1 = "02168cb0a49a2b75bf988a28698de7b529df5cb7";
+      };
+    }
+    {
+      name = "npm_packlist___npm_packlist_1.4.8.tgz";
+      path = fetchurl {
+        name = "npm_packlist___npm_packlist_1.4.8.tgz";
+        url  = "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz";
+        sha1 = "56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e";
+      };
+    }
+    {
+      name = "npm_pick_manifest___npm_pick_manifest_3.0.2.tgz";
+      path = fetchurl {
+        name = "npm_pick_manifest___npm_pick_manifest_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz";
+        sha1 = "f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7";
+      };
+    }
+    {
+      name = "npm_profile___npm_profile_4.0.2.tgz";
+      path = fetchurl {
+        name = "npm_profile___npm_profile_4.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/npm-profile/-/npm-profile-4.0.2.tgz";
+        sha1 = "8272a71c19634d0dce9c35a5daf8ee589cbb0f52";
+      };
+    }
+    {
+      name = "npm_registry_fetch___npm_registry_fetch_4.0.2.tgz";
+      path = fetchurl {
+        name = "npm_registry_fetch___npm_registry_fetch_4.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.2.tgz";
+        sha1 = "2b1434f93ccbe6b6385f8e45f45db93e16921d7a";
+      };
+    }
+    {
+      name = "npm_run_path___npm_run_path_2.0.2.tgz";
+      path = fetchurl {
+        name = "npm_run_path___npm_run_path_2.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz";
+        sha1 = "35a9232dfa35d7067b4cb2ddf2357b1871536c5f";
+      };
+    }
+    {
+      name = "npm_user_validate___npm_user_validate_1.0.0.tgz";
+      path = fetchurl {
+        name = "npm_user_validate___npm_user_validate_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.0.tgz";
+        sha1 = "8ceca0f5cea04d4e93519ef72d0557a75122e951";
+      };
+    }
+    {
+      name = "npm___npm_6.13.7.tgz";
+      path = fetchurl {
+        name = "npm___npm_6.13.7.tgz";
+        url  = "https://registry.yarnpkg.com/npm/-/npm-6.13.7.tgz";
+        sha1 = "9533a3ddc57f9792db8a8b303efabaf878047841";
+      };
+    }
+    {
+      name = "npmlog___npmlog_4.1.2.tgz";
+      path = fetchurl {
+        name = "npmlog___npmlog_4.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz";
+        sha1 = "08a7f2a8bf734604779a9efa4ad5cc717abb954b";
+      };
+    }
+    {
+      name = "number_is_nan___number_is_nan_1.0.1.tgz";
+      path = fetchurl {
+        name = "number_is_nan___number_is_nan_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz";
+        sha1 = "097b602b53422a522c1afb8790318336941a011d";
+      };
+    }
+    {
+      name = "oauth_sign___oauth_sign_0.9.0.tgz";
+      path = fetchurl {
+        name = "oauth_sign___oauth_sign_0.9.0.tgz";
+        url  = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz";
+        sha1 = "47a7b016baa68b5fa0ecf3dee08a85c679ac6455";
+      };
+    }
+    {
+      name = "object_assign___object_assign_4.1.1.tgz";
+      path = fetchurl {
+        name = "object_assign___object_assign_4.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz";
+        sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
+      };
+    }
+    {
+      name = "object_inspect___object_inspect_1.7.0.tgz";
+      path = fetchurl {
+        name = "object_inspect___object_inspect_1.7.0.tgz";
+        url  = "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz";
+        sha1 = "f4f6bd181ad77f006b5ece60bd0b6f398ff74a67";
+      };
+    }
+    {
+      name = "object_is___object_is_1.0.1.tgz";
+      path = fetchurl {
+        name = "object_is___object_is_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz";
+        sha1 = "0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6";
+      };
+    }
+    {
+      name = "object_keys___object_keys_1.1.1.tgz";
+      path = fetchurl {
+        name = "object_keys___object_keys_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz";
+        sha1 = "1c47f272df277f3b1daf061677d9c82e2322c60e";
+      };
+    }
+    {
+      name = "object.getownpropertydescriptors___object.getownpropertydescriptors_2.0.3.tgz";
+      path = fetchurl {
+        name = "object.getownpropertydescriptors___object.getownpropertydescriptors_2.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz";
+        sha1 = "8758c846f5b407adab0f236e0986f14b051caa16";
+      };
+    }
+    {
+      name = "once___once_1.4.0.tgz";
+      path = fetchurl {
+        name = "once___once_1.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz";
+        sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
+      };
+    }
+    {
+      name = "onetime___onetime_2.0.1.tgz";
+      path = fetchurl {
+        name = "onetime___onetime_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz";
+        sha1 = "067428230fd67443b2794b22bba528b6867962d4";
+      };
+    }
+    {
+      name = "opener___opener_1.5.1.tgz";
+      path = fetchurl {
+        name = "opener___opener_1.5.1.tgz";
+        url  = "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz";
+        sha1 = "6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed";
+      };
+    }
+    {
+      name = "optionator___optionator_0.8.3.tgz";
+      path = fetchurl {
+        name = "optionator___optionator_0.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz";
+        sha1 = "84fa1d036fe9d3c7e21d99884b601167ec8fb495";
+      };
+    }
+    {
+      name = "os_homedir___os_homedir_1.0.2.tgz";
+      path = fetchurl {
+        name = "os_homedir___os_homedir_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz";
+        sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
+      };
+    }
+    {
+      name = "os_locale___os_locale_2.1.0.tgz";
+      path = fetchurl {
+        name = "os_locale___os_locale_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz";
+        sha1 = "42bc2900a6b5b8bd17376c8e882b65afccf24bf2";
+      };
+    }
+    {
+      name = "os_locale___os_locale_3.1.0.tgz";
+      path = fetchurl {
+        name = "os_locale___os_locale_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz";
+        sha1 = "a802a6ee17f24c10483ab9935719cef4ed16bf1a";
+      };
+    }
+    {
+      name = "os_tmpdir___os_tmpdir_1.0.2.tgz";
+      path = fetchurl {
+        name = "os_tmpdir___os_tmpdir_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
+        sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
+      };
+    }
+    {
+      name = "osenv___osenv_0.1.5.tgz";
+      path = fetchurl {
+        name = "osenv___osenv_0.1.5.tgz";
+        url  = "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz";
+        sha1 = "85cdfafaeb28e8677f416e287592b5f3f49ea410";
+      };
+    }
+    {
+      name = "p_cancelable___p_cancelable_1.1.0.tgz";
+      path = fetchurl {
+        name = "p_cancelable___p_cancelable_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz";
+        sha1 = "d078d15a3af409220c886f1d9a0ca2e441ab26cc";
+      };
+    }
+    {
+      name = "p_defer___p_defer_1.0.0.tgz";
+      path = fetchurl {
+        name = "p_defer___p_defer_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz";
+        sha1 = "9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c";
+      };
+    }
+    {
+      name = "p_finally___p_finally_1.0.0.tgz";
+      path = fetchurl {
+        name = "p_finally___p_finally_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz";
+        sha1 = "3fbcfb15b899a44123b34b6dcc18b724336a2cae";
+      };
+    }
+    {
+      name = "p_is_promise___p_is_promise_2.1.0.tgz";
+      path = fetchurl {
+        name = "p_is_promise___p_is_promise_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz";
+        sha1 = "918cebaea248a62cf7ffab8e3bca8c5f882fc42e";
+      };
+    }
+    {
+      name = "p_limit___p_limit_1.3.0.tgz";
+      path = fetchurl {
+        name = "p_limit___p_limit_1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz";
+        sha1 = "b86bd5f0c25690911c7590fcbfc2010d54b3ccb8";
+      };
+    }
+    {
+      name = "p_limit___p_limit_2.2.1.tgz";
+      path = fetchurl {
+        name = "p_limit___p_limit_2.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz";
+        sha1 = "aa07a788cc3151c939b5131f63570f0dd2009537";
+      };
+    }
+    {
+      name = "p_limit___p_limit_2.2.2.tgz";
+      path = fetchurl {
+        name = "p_limit___p_limit_2.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz";
+        sha1 = "61279b67721f5287aa1c13a9a7fbbc48c9291b1e";
+      };
+    }
+    {
+      name = "p_locate___p_locate_2.0.0.tgz";
+      path = fetchurl {
+        name = "p_locate___p_locate_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz";
+        sha1 = "20a0103b222a70c8fd39cc2e580680f3dde5ec43";
+      };
+    }
+    {
+      name = "p_locate___p_locate_3.0.0.tgz";
+      path = fetchurl {
+        name = "p_locate___p_locate_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz";
+        sha1 = "322d69a05c0264b25997d9f40cd8a891ab0064a4";
+      };
+    }
+    {
+      name = "p_locate___p_locate_4.1.0.tgz";
+      path = fetchurl {
+        name = "p_locate___p_locate_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz";
+        sha1 = "a3428bb7088b3a60292f66919278b7c297ad4f07";
+      };
+    }
+    {
+      name = "p_try___p_try_1.0.0.tgz";
+      path = fetchurl {
+        name = "p_try___p_try_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz";
+        sha1 = "cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3";
+      };
+    }
+    {
+      name = "p_try___p_try_2.2.0.tgz";
+      path = fetchurl {
+        name = "p_try___p_try_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz";
+        sha1 = "cb2868540e313d61de58fafbe35ce9004d5540e6";
+      };
+    }
+    {
+      name = "package_json___package_json_4.0.1.tgz";
+      path = fetchurl {
+        name = "package_json___package_json_4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz";
+        sha1 = "8869a0401253661c4c4ca3da6c2121ed555f5eed";
+      };
+    }
+    {
+      name = "package_json___package_json_6.5.0.tgz";
+      path = fetchurl {
+        name = "package_json___package_json_6.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz";
+        sha1 = "6feedaca35e75725876d0b0e64974697fed145b0";
+      };
+    }
+    {
+      name = "pacote___pacote_9.5.12.tgz";
+      path = fetchurl {
+        name = "pacote___pacote_9.5.12.tgz";
+        url  = "https://registry.yarnpkg.com/pacote/-/pacote-9.5.12.tgz";
+        sha1 = "1e11dd7a8d736bcc36b375a9804d41bb0377bf66";
+      };
+    }
+    {
+      name = "parallel_transform___parallel_transform_1.2.0.tgz";
+      path = fetchurl {
+        name = "parallel_transform___parallel_transform_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz";
+        sha1 = "9049ca37d6cb2182c3b1d2c720be94d14a5814fc";
+      };
+    }
+    {
+      name = "parent_module___parent_module_1.0.1.tgz";
+      path = fetchurl {
+        name = "parent_module___parent_module_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz";
+        sha1 = "691d2709e78c79fae3a156622452d00762caaaa2";
+      };
+    }
+    {
+      name = "parse_bmfont_ascii___parse_bmfont_ascii_1.0.6.tgz";
+      path = fetchurl {
+        name = "parse_bmfont_ascii___parse_bmfont_ascii_1.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz";
+        sha1 = "11ac3c3ff58f7c2020ab22769079108d4dfa0285";
+      };
+    }
+    {
+      name = "parse_bmfont_binary___parse_bmfont_binary_1.0.6.tgz";
+      path = fetchurl {
+        name = "parse_bmfont_binary___parse_bmfont_binary_1.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz";
+        sha1 = "d038b476d3e9dd9db1e11a0b0e53a22792b69006";
+      };
+    }
+    {
+      name = "parse_bmfont_xml___parse_bmfont_xml_1.1.4.tgz";
+      path = fetchurl {
+        name = "parse_bmfont_xml___parse_bmfont_xml_1.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz";
+        sha1 = "015319797e3e12f9e739c4d513872cd2fa35f389";
+      };
+    }
+    {
+      name = "parse_headers___parse_headers_2.0.3.tgz";
+      path = fetchurl {
+        name = "parse_headers___parse_headers_2.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.3.tgz";
+        sha1 = "5e8e7512383d140ba02f0c7aa9f49b4399c92515";
+      };
+    }
+    {
+      name = "parse_json___parse_json_2.2.0.tgz";
+      path = fetchurl {
+        name = "parse_json___parse_json_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz";
+        sha1 = "f480f40434ef80741f8469099f8dea18f55a4dc9";
+      };
+    }
+    {
+      name = "path_exists___path_exists_3.0.0.tgz";
+      path = fetchurl {
+        name = "path_exists___path_exists_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz";
+        sha1 = "ce0ebeaa5f78cb18925ea7d810d7b59b010fd515";
+      };
+    }
+    {
+      name = "path_exists___path_exists_4.0.0.tgz";
+      path = fetchurl {
+        name = "path_exists___path_exists_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz";
+        sha1 = "513bdbe2d3b95d7762e8c1137efa195c6c61b5b3";
+      };
+    }
+    {
+      name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
+      path = fetchurl {
+        name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
+        sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
+      };
+    }
+    {
+      name = "path_is_inside___path_is_inside_1.0.2.tgz";
+      path = fetchurl {
+        name = "path_is_inside___path_is_inside_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz";
+        sha1 = "365417dede44430d1c11af61027facf074bdfc53";
+      };
+    }
+    {
+      name = "path_key___path_key_2.0.1.tgz";
+      path = fetchurl {
+        name = "path_key___path_key_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz";
+        sha1 = "411cadb574c5a140d3a4b1910d40d80cc9f40b40";
+      };
+    }
+    {
+      name = "path_parse___path_parse_1.0.6.tgz";
+      path = fetchurl {
+        name = "path_parse___path_parse_1.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz";
+        sha1 = "d62dbb5679405d72c4737ec58600e9ddcf06d24c";
+      };
+    }
+    {
+      name = "path_type___path_type_2.0.0.tgz";
+      path = fetchurl {
+        name = "path_type___path_type_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz";
+        sha1 = "f012ccb8415b7096fc2daa1054c3d72389594c73";
+      };
+    }
+    {
+      name = "performance_now___performance_now_2.1.0.tgz";
+      path = fetchurl {
+        name = "performance_now___performance_now_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz";
+        sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
+      };
+    }
+    {
+      name = "phin___phin_2.9.3.tgz";
+      path = fetchurl {
+        name = "phin___phin_2.9.3.tgz";
+        url  = "https://registry.yarnpkg.com/phin/-/phin-2.9.3.tgz";
+        sha1 = "f9b6ac10a035636fb65dfc576aaaa17b8743125c";
+      };
+    }
+    {
+      name = "pify___pify_2.3.0.tgz";
+      path = fetchurl {
+        name = "pify___pify_2.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz";
+        sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
+      };
+    }
+    {
+      name = "pify___pify_3.0.0.tgz";
+      path = fetchurl {
+        name = "pify___pify_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz";
+        sha1 = "e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176";
+      };
+    }
+    {
+      name = "pixelmatch___pixelmatch_4.0.2.tgz";
+      path = fetchurl {
+        name = "pixelmatch___pixelmatch_4.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz";
+        sha1 = "8f47dcec5011b477b67db03c243bc1f3085e8854";
+      };
+    }
+    {
+      name = "pkg_up___pkg_up_2.0.0.tgz";
+      path = fetchurl {
+        name = "pkg_up___pkg_up_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz";
+        sha1 = "c819ac728059a461cab1c3889a2be3c49a004d7f";
+      };
+    }
+    {
+      name = "png_to_ico___png_to_ico_1.0.7.tgz";
+      path = fetchurl {
+        name = "png_to_ico___png_to_ico_1.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/png-to-ico/-/png-to-ico-1.0.7.tgz";
+        sha1 = "9346b5f4d6fd7e94cb08fd49eeb585f501c3e5f2";
+      };
+    }
+    {
+      name = "pngjs___pngjs_3.4.0.tgz";
+      path = fetchurl {
+        name = "pngjs___pngjs_3.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz";
+        sha1 = "99ca7d725965fb655814eaf65f38f12bbdbf555f";
+      };
+    }
+    {
+      name = "prelude_ls___prelude_ls_1.1.2.tgz";
+      path = fetchurl {
+        name = "prelude_ls___prelude_ls_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz";
+        sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
+      };
+    }
+    {
+      name = "prepend_http___prepend_http_1.0.4.tgz";
+      path = fetchurl {
+        name = "prepend_http___prepend_http_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz";
+        sha1 = "d4f4562b0ce3696e41ac52d0e002e57a635dc6dc";
+      };
+    }
+    {
+      name = "prepend_http___prepend_http_2.0.0.tgz";
+      path = fetchurl {
+        name = "prepend_http___prepend_http_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz";
+        sha1 = "e92434bfa5ea8c19f41cdfd401d741a3c819d897";
+      };
+    }
+    {
+      name = "process_nextick_args___process_nextick_args_2.0.1.tgz";
+      path = fetchurl {
+        name = "process_nextick_args___process_nextick_args_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
+        sha1 = "7820d9b16120cc55ca9ae7792680ae7dba6d7fe2";
+      };
+    }
+    {
+      name = "process___process_0.5.2.tgz";
+      path = fetchurl {
+        name = "process___process_0.5.2.tgz";
+        url  = "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz";
+        sha1 = "1638d8a8e34c2f440a91db95ab9aeb677fc185cf";
+      };
+    }
+    {
+      name = "progress___progress_2.0.3.tgz";
+      path = fetchurl {
+        name = "progress___progress_2.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz";
+        sha1 = "7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8";
+      };
+    }
+    {
+      name = "promise_inflight___promise_inflight_1.0.1.tgz";
+      path = fetchurl {
+        name = "promise_inflight___promise_inflight_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz";
+        sha1 = "98472870bf228132fcbdd868129bad12c3c029e3";
+      };
+    }
+    {
+      name = "promise_retry___promise_retry_1.1.1.tgz";
+      path = fetchurl {
+        name = "promise_retry___promise_retry_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz";
+        sha1 = "6739e968e3051da20ce6497fb2b50f6911df3d6d";
+      };
+    }
+    {
+      name = "promzard___promzard_0.3.0.tgz";
+      path = fetchurl {
+        name = "promzard___promzard_0.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz";
+        sha1 = "26a5d6ee8c7dee4cb12208305acfb93ba382a9ee";
+      };
+    }
+    {
+      name = "proto_list___proto_list_1.2.4.tgz";
+      path = fetchurl {
+        name = "proto_list___proto_list_1.2.4.tgz";
+        url  = "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz";
+        sha1 = "212d5bfe1318306a420f6402b8e26ff39647a849";
+      };
+    }
+    {
+      name = "protoduck___protoduck_5.0.1.tgz";
+      path = fetchurl {
+        name = "protoduck___protoduck_5.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz";
+        sha1 = "03c3659ca18007b69a50fd82a7ebcc516261151f";
+      };
+    }
+    {
+      name = "prr___prr_1.0.1.tgz";
+      path = fetchurl {
+        name = "prr___prr_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz";
+        sha1 = "d3fc114ba06995a45ec6893f484ceb1d78f5f476";
+      };
+    }
+    {
+      name = "pseudomap___pseudomap_1.0.2.tgz";
+      path = fetchurl {
+        name = "pseudomap___pseudomap_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz";
+        sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3";
+      };
+    }
+    {
+      name = "psl___psl_1.6.0.tgz";
+      path = fetchurl {
+        name = "psl___psl_1.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/psl/-/psl-1.6.0.tgz";
+        sha1 = "60557582ee23b6c43719d9890fb4170ecd91e110";
+      };
+    }
+    {
+      name = "pump___pump_2.0.1.tgz";
+      path = fetchurl {
+        name = "pump___pump_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz";
+        sha1 = "12399add6e4cf7526d973cbc8b5ce2e2908b3909";
+      };
+    }
+    {
+      name = "pump___pump_3.0.0.tgz";
+      path = fetchurl {
+        name = "pump___pump_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz";
+        sha1 = "b4a2116815bde2f4e1ea602354e8c75565107a64";
+      };
+    }
+    {
+      name = "pumpify___pumpify_1.5.1.tgz";
+      path = fetchurl {
+        name = "pumpify___pumpify_1.5.1.tgz";
+        url  = "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz";
+        sha1 = "36513be246ab27570b1a374a5ce278bfd74370ce";
+      };
+    }
+    {
+      name = "punycode___punycode_1.4.1.tgz";
+      path = fetchurl {
+        name = "punycode___punycode_1.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz";
+        sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
+      };
+    }
+    {
+      name = "punycode___punycode_2.1.1.tgz";
+      path = fetchurl {
+        name = "punycode___punycode_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz";
+        sha1 = "b58b010ac40c22c5657616c8d2c2c02c7bf479ec";
+      };
+    }
+    {
+      name = "pupa___pupa_2.0.1.tgz";
+      path = fetchurl {
+        name = "pupa___pupa_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/pupa/-/pupa-2.0.1.tgz";
+        sha1 = "dbdc9ff48ffbea4a26a069b6f9f7abb051008726";
+      };
+    }
+    {
+      name = "qrcode_terminal___qrcode_terminal_0.12.0.tgz";
+      path = fetchurl {
+        name = "qrcode_terminal___qrcode_terminal_0.12.0.tgz";
+        url  = "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz";
+        sha1 = "bb5b699ef7f9f0505092a3748be4464fe71b5819";
+      };
+    }
+    {
+      name = "qs___qs_6.9.1.tgz";
+      path = fetchurl {
+        name = "qs___qs_6.9.1.tgz";
+        url  = "https://registry.yarnpkg.com/qs/-/qs-6.9.1.tgz";
+        sha1 = "20082c65cb78223635ab1a9eaca8875a29bf8ec9";
+      };
+    }
+    {
+      name = "qs___qs_6.5.2.tgz";
+      path = fetchurl {
+        name = "qs___qs_6.5.2.tgz";
+        url  = "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz";
+        sha1 = "cb3ae806e8740444584ef154ce8ee98d403f3e36";
+      };
+    }
+    {
+      name = "query_string___query_string_6.10.1.tgz";
+      path = fetchurl {
+        name = "query_string___query_string_6.10.1.tgz";
+        url  = "https://registry.yarnpkg.com/query-string/-/query-string-6.10.1.tgz";
+        sha1 = "30b3505f6fca741d5ae541964d1b3ae9dc2a0de8";
+      };
+    }
+    {
+      name = "qw___qw_1.0.1.tgz";
+      path = fetchurl {
+        name = "qw___qw_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/qw/-/qw-1.0.1.tgz";
+        sha1 = "efbfdc740f9ad054304426acb183412cc8b996d4";
+      };
+    }
+    {
+      name = "rc___rc_1.2.8.tgz";
+      path = fetchurl {
+        name = "rc___rc_1.2.8.tgz";
+        url  = "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz";
+        sha1 = "cd924bf5200a075b83c188cd6b9e211b7fc0d3ed";
+      };
+    }
+    {
+      name = "read_chunk___read_chunk_1.0.1.tgz";
+      path = fetchurl {
+        name = "read_chunk___read_chunk_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/read-chunk/-/read-chunk-1.0.1.tgz";
+        sha1 = "5f68cab307e663f19993527d9b589cace4661194";
+      };
+    }
+    {
+      name = "read_cmd_shim___read_cmd_shim_1.0.5.tgz";
+      path = fetchurl {
+        name = "read_cmd_shim___read_cmd_shim_1.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz";
+        sha1 = "87e43eba50098ba5a32d0ceb583ab8e43b961c16";
+      };
+    }
+    {
+      name = "read_config_file___read_config_file_5.0.1.tgz";
+      path = fetchurl {
+        name = "read_config_file___read_config_file_5.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/read-config-file/-/read-config-file-5.0.1.tgz";
+        sha1 = "ead3df0d9822cc96006ca16322eaa79dac8591c2";
+      };
+    }
+    {
+      name = "read_installed___read_installed_4.0.3.tgz";
+      path = fetchurl {
+        name = "read_installed___read_installed_4.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/read-installed/-/read-installed-4.0.3.tgz";
+        sha1 = "ff9b8b67f187d1e4c29b9feb31f6b223acd19067";
+      };
+    }
+    {
+      name = "read_package_json___read_package_json_2.1.1.tgz";
+      path = fetchurl {
+        name = "read_package_json___read_package_json_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.1.tgz";
+        sha1 = "16aa66c59e7d4dad6288f179dd9295fd59bb98f1";
+      };
+    }
+    {
+      name = "read_package_tree___read_package_tree_5.3.1.tgz";
+      path = fetchurl {
+        name = "read_package_tree___read_package_tree_5.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz";
+        sha1 = "a32cb64c7f31eb8a6f31ef06f9cedf74068fe636";
+      };
+    }
+    {
+      name = "read_pkg_up___read_pkg_up_2.0.0.tgz";
+      path = fetchurl {
+        name = "read_pkg_up___read_pkg_up_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz";
+        sha1 = "6b72a8048984e0c41e79510fd5e9fa99b3b549be";
+      };
+    }
+    {
+      name = "read_pkg___read_pkg_2.0.0.tgz";
+      path = fetchurl {
+        name = "read_pkg___read_pkg_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz";
+        sha1 = "8ef1c0623c6a6db0dc6713c4bfac46332b2368f8";
+      };
+    }
+    {
+      name = "read___read_1.0.7.tgz";
+      path = fetchurl {
+        name = "read___read_1.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz";
+        sha1 = "b3da19bd052431a97671d44a42634adf710b40c4";
+      };
+    }
+    {
+      name = "readable_stream___readable_stream_2.3.7.tgz";
+      path = fetchurl {
+        name = "readable_stream___readable_stream_2.3.7.tgz";
+        url  = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz";
+        sha1 = "1eca1cf711aef814c04f62252a36a62f6cb23b57";
+      };
+    }
+    {
+      name = "readable_stream___readable_stream_2.3.6.tgz";
+      path = fetchurl {
+        name = "readable_stream___readable_stream_2.3.6.tgz";
+        url  = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz";
+        sha1 = "b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf";
+      };
+    }
+    {
+      name = "readable_stream___readable_stream_3.4.0.tgz";
+      path = fetchurl {
+        name = "readable_stream___readable_stream_3.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz";
+        sha1 = "a51c26754658e0a3c21dbf59163bd45ba6f447fc";
+      };
+    }
+    {
+      name = "readable_stream___readable_stream_1.1.14.tgz";
+      path = fetchurl {
+        name = "readable_stream___readable_stream_1.1.14.tgz";
+        url  = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz";
+        sha1 = "7cf4c54ef648e3813084c636dd2079e166c081d9";
+      };
+    }
+    {
+      name = "readdir_scoped_modules___readdir_scoped_modules_1.1.0.tgz";
+      path = fetchurl {
+        name = "readdir_scoped_modules___readdir_scoped_modules_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz";
+        sha1 = "8d45407b4f870a0dcaebc0e28670d18e74514309";
+      };
+    }
+    {
+      name = "regenerator_runtime___regenerator_runtime_0.13.5.tgz";
+      path = fetchurl {
+        name = "regenerator_runtime___regenerator_runtime_0.13.5.tgz";
+        url  = "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz";
+        sha1 = "d878a1d094b4306d10b9096484b33ebd55e26697";
+      };
+    }
+    {
+      name = "regexp.prototype.flags___regexp.prototype.flags_1.2.0.tgz";
+      path = fetchurl {
+        name = "regexp.prototype.flags___regexp.prototype.flags_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz";
+        sha1 = "6b30724e306a27833eeb171b66ac8890ba37e41c";
+      };
+    }
+    {
+      name = "regexpp___regexpp_2.0.1.tgz";
+      path = fetchurl {
+        name = "regexpp___regexpp_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz";
+        sha1 = "8d19d31cf632482b589049f8281f93dbcba4d07f";
+      };
+    }
+    {
+      name = "registry_auth_token___registry_auth_token_3.4.0.tgz";
+      path = fetchurl {
+        name = "registry_auth_token___registry_auth_token_3.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz";
+        sha1 = "d7446815433f5d5ed6431cd5dca21048f66b397e";
+      };
+    }
+    {
+      name = "registry_auth_token___registry_auth_token_4.0.0.tgz";
+      path = fetchurl {
+        name = "registry_auth_token___registry_auth_token_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.0.0.tgz";
+        sha1 = "30e55961eec77379da551ea5c4cf43cbf03522be";
+      };
+    }
+    {
+      name = "registry_url___registry_url_3.1.0.tgz";
+      path = fetchurl {
+        name = "registry_url___registry_url_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz";
+        sha1 = "3d4ef870f73dde1d77f0cf9a381432444e174942";
+      };
+    }
+    {
+      name = "registry_url___registry_url_5.1.0.tgz";
+      path = fetchurl {
+        name = "registry_url___registry_url_5.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz";
+        sha1 = "e98334b50d5434b81136b44ec638d9c2009c5009";
+      };
+    }
+    {
+      name = "request___request_2.88.0.tgz";
+      path = fetchurl {
+        name = "request___request_2.88.0.tgz";
+        url  = "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz";
+        sha1 = "9c2fca4f7d35b592efe57c7f0a55e81052124fef";
+      };
+    }
+    {
+      name = "require_directory___require_directory_2.1.1.tgz";
+      path = fetchurl {
+        name = "require_directory___require_directory_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz";
+        sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42";
+      };
+    }
+    {
+      name = "require_main_filename___require_main_filename_1.0.1.tgz";
+      path = fetchurl {
+        name = "require_main_filename___require_main_filename_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz";
+        sha1 = "97f717b69d48784f5f526a6c5aa8ffdda055a4d1";
+      };
+    }
+    {
+      name = "require_main_filename___require_main_filename_2.0.0.tgz";
+      path = fetchurl {
+        name = "require_main_filename___require_main_filename_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz";
+        sha1 = "d0b329ecc7cc0f61649f62215be69af54aa8989b";
+      };
+    }
+    {
+      name = "resolve_from___resolve_from_4.0.0.tgz";
+      path = fetchurl {
+        name = "resolve_from___resolve_from_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz";
+        sha1 = "4abcd852ad32dd7baabfe9b40e00a36db5f392e6";
+      };
+    }
+    {
+      name = "resolve___resolve_1.13.1.tgz";
+      path = fetchurl {
+        name = "resolve___resolve_1.13.1.tgz";
+        url  = "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz";
+        sha1 = "be0aa4c06acd53083505abb35f4d66932ab35d16";
+      };
+    }
+    {
+      name = "responselike___responselike_1.0.2.tgz";
+      path = fetchurl {
+        name = "responselike___responselike_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz";
+        sha1 = "918720ef3b631c5642be068f15ade5a46f4ba1e7";
+      };
+    }
+    {
+      name = "restore_cursor___restore_cursor_2.0.0.tgz";
+      path = fetchurl {
+        name = "restore_cursor___restore_cursor_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz";
+        sha1 = "9f7ee287f82fd326d4fd162923d62129eee0dfaf";
+      };
+    }
+    {
+      name = "retry___retry_0.10.1.tgz";
+      path = fetchurl {
+        name = "retry___retry_0.10.1.tgz";
+        url  = "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz";
+        sha1 = "e76388d217992c252750241d3d3956fed98d8ff4";
+      };
+    }
+    {
+      name = "retry___retry_0.12.0.tgz";
+      path = fetchurl {
+        name = "retry___retry_0.12.0.tgz";
+        url  = "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz";
+        sha1 = "1b42a6266a21f07421d1b0b54b7dc167b01c013b";
+      };
+    }
+    {
+      name = "rimraf___rimraf_2.6.3.tgz";
+      path = fetchurl {
+        name = "rimraf___rimraf_2.6.3.tgz";
+        url  = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz";
+        sha1 = "b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab";
+      };
+    }
+    {
+      name = "rimraf___rimraf_2.7.1.tgz";
+      path = fetchurl {
+        name = "rimraf___rimraf_2.7.1.tgz";
+        url  = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz";
+        sha1 = "35797f13a7fdadc566142c29d4f07ccad483e3ec";
+      };
+    }
+    {
+      name = "rimraf___rimraf_3.0.2.tgz";
+      path = fetchurl {
+        name = "rimraf___rimraf_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz";
+        sha1 = "f1a5402ba6220ad52cc1282bac1ae3aa49fd061a";
+      };
+    }
+    {
+      name = "run_async___run_async_2.3.0.tgz";
+      path = fetchurl {
+        name = "run_async___run_async_2.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz";
+        sha1 = "0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0";
+      };
+    }
+    {
+      name = "run_queue___run_queue_1.0.3.tgz";
+      path = fetchurl {
+        name = "run_queue___run_queue_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz";
+        sha1 = "e848396f057d223f24386924618e25694161ec47";
+      };
+    }
+    {
+      name = "rxjs___rxjs_6.5.3.tgz";
+      path = fetchurl {
+        name = "rxjs___rxjs_6.5.3.tgz";
+        url  = "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.3.tgz";
+        sha1 = "510e26317f4db91a7eb1de77d9dd9ba0a4899a3a";
+      };
+    }
+    {
+      name = "safe_buffer___safe_buffer_5.2.0.tgz";
+      path = fetchurl {
+        name = "safe_buffer___safe_buffer_5.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz";
+        sha1 = "b74daec49b1148f88c64b68d49b1e815c1f2f519";
+      };
+    }
+    {
+      name = "safe_buffer___safe_buffer_5.1.2.tgz";
+      path = fetchurl {
+        name = "safe_buffer___safe_buffer_5.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz";
+        sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d";
+      };
+    }
+    {
+      name = "safer_buffer___safer_buffer_2.1.2.tgz";
+      path = fetchurl {
+        name = "safer_buffer___safer_buffer_2.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz";
+        sha1 = "44fa161b0187b9549dd84bb91802f9bd8385cd6a";
+      };
+    }
+    {
+      name = "sanitize_filename___sanitize_filename_1.6.3.tgz";
+      path = fetchurl {
+        name = "sanitize_filename___sanitize_filename_1.6.3.tgz";
+        url  = "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz";
+        sha1 = "755ebd752045931977e30b2025d340d7c9090378";
+      };
+    }
+    {
+      name = "sax___sax_1.2.4.tgz";
+      path = fetchurl {
+        name = "sax___sax_1.2.4.tgz";
+        url  = "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz";
+        sha1 = "2816234e2378bddc4e5354fab5caa895df7100d9";
+      };
+    }
+    {
+      name = "semver_diff___semver_diff_2.1.0.tgz";
+      path = fetchurl {
+        name = "semver_diff___semver_diff_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz";
+        sha1 = "4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36";
+      };
+    }
+    {
+      name = "semver_diff___semver_diff_3.1.1.tgz";
+      path = fetchurl {
+        name = "semver_diff___semver_diff_3.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz";
+        sha1 = "05f77ce59f325e00e2706afd67bb506ddb1ca32b";
+      };
+    }
+    {
+      name = "semver___semver_5.7.1.tgz";
+      path = fetchurl {
+        name = "semver___semver_5.7.1.tgz";
+        url  = "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz";
+        sha1 = "a954f931aeba508d307bbf069eff0c01c96116f7";
+      };
+    }
+    {
+      name = "semver___semver_6.3.0.tgz";
+      path = fetchurl {
+        name = "semver___semver_6.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz";
+        sha1 = "ee0a64c8af5e8ceea67687b133761e1becbd1d3d";
+      };
+    }
+    {
+      name = "semver___semver_7.1.3.tgz";
+      path = fetchurl {
+        name = "semver___semver_7.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/semver/-/semver-7.1.3.tgz";
+        sha1 = "e4345ce73071c53f336445cfc19efb1c311df2a6";
+      };
+    }
+    {
+      name = "set_blocking___set_blocking_2.0.0.tgz";
+      path = fetchurl {
+        name = "set_blocking___set_blocking_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz";
+        sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
+      };
+    }
+    {
+      name = "sha___sha_3.0.0.tgz";
+      path = fetchurl {
+        name = "sha___sha_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/sha/-/sha-3.0.0.tgz";
+        sha1 = "b2f2f90af690c16a3a839a6a6c680ea51fedd1ae";
+      };
+    }
+    {
+      name = "shebang_command___shebang_command_1.2.0.tgz";
+      path = fetchurl {
+        name = "shebang_command___shebang_command_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz";
+        sha1 = "44aac65b695b03398968c39f363fee5deafdf1ea";
+      };
+    }
+    {
+      name = "shebang_regex___shebang_regex_1.0.0.tgz";
+      path = fetchurl {
+        name = "shebang_regex___shebang_regex_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz";
+        sha1 = "da42f49740c0b42db2ca9728571cb190c98efea3";
+      };
+    }
+    {
+      name = "signal_exit___signal_exit_3.0.2.tgz";
+      path = fetchurl {
+        name = "signal_exit___signal_exit_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz";
+        sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
+      };
+    }
+    {
+      name = "slice_ansi___slice_ansi_2.1.0.tgz";
+      path = fetchurl {
+        name = "slice_ansi___slice_ansi_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz";
+        sha1 = "cacd7693461a637a5788d92a7dd4fba068e81636";
+      };
+    }
+    {
+      name = "slide___slide_1.1.6.tgz";
+      path = fetchurl {
+        name = "slide___slide_1.1.6.tgz";
+        url  = "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz";
+        sha1 = "56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707";
+      };
+    }
+    {
+      name = "smart_buffer___smart_buffer_4.1.0.tgz";
+      path = fetchurl {
+        name = "smart_buffer___smart_buffer_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz";
+        sha1 = "91605c25d91652f4661ea69ccf45f1b331ca21ba";
+      };
+    }
+    {
+      name = "socks_proxy_agent___socks_proxy_agent_4.0.2.tgz";
+      path = fetchurl {
+        name = "socks_proxy_agent___socks_proxy_agent_4.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz";
+        sha1 = "3c8991f3145b2799e70e11bd5fbc8b1963116386";
+      };
+    }
+    {
+      name = "socks___socks_2.3.3.tgz";
+      path = fetchurl {
+        name = "socks___socks_2.3.3.tgz";
+        url  = "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz";
+        sha1 = "01129f0a5d534d2b897712ed8aceab7ee65d78e3";
+      };
+    }
+    {
+      name = "sorted_object___sorted_object_2.0.1.tgz";
+      path = fetchurl {
+        name = "sorted_object___sorted_object_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/sorted-object/-/sorted-object-2.0.1.tgz";
+        sha1 = "7d631f4bd3a798a24af1dffcfbfe83337a5df5fc";
+      };
+    }
+    {
+      name = "sorted_union_stream___sorted_union_stream_2.1.3.tgz";
+      path = fetchurl {
+        name = "sorted_union_stream___sorted_union_stream_2.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/sorted-union-stream/-/sorted-union-stream-2.1.3.tgz";
+        sha1 = "c7794c7e077880052ff71a8d4a2dbb4a9a638ac7";
+      };
+    }
+    {
+      name = "source_map_support___source_map_support_0.5.16.tgz";
+      path = fetchurl {
+        name = "source_map_support___source_map_support_0.5.16.tgz";
+        url  = "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz";
+        sha1 = "0ae069e7fe3ba7538c64c98515e35339eac5a042";
+      };
+    }
+    {
+      name = "source_map___source_map_0.6.1.tgz";
+      path = fetchurl {
+        name = "source_map___source_map_0.6.1.tgz";
+        url  = "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz";
+        sha1 = "74722af32e9614e9c287a8d0bbde48b5e2f1a263";
+      };
+    }
+    {
+      name = "spdx_correct___spdx_correct_3.1.0.tgz";
+      path = fetchurl {
+        name = "spdx_correct___spdx_correct_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz";
+        sha1 = "fb83e504445268f154b074e218c87c003cd31df4";
+      };
+    }
+    {
+      name = "spdx_exceptions___spdx_exceptions_2.2.0.tgz";
+      path = fetchurl {
+        name = "spdx_exceptions___spdx_exceptions_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz";
+        sha1 = "2ea450aee74f2a89bfb94519c07fcd6f41322977";
+      };
+    }
+    {
+      name = "spdx_expression_parse___spdx_expression_parse_3.0.0.tgz";
+      path = fetchurl {
+        name = "spdx_expression_parse___spdx_expression_parse_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz";
+        sha1 = "99e119b7a5da00e05491c9fa338b7904823b41d0";
+      };
+    }
+    {
+      name = "spdx_license_ids___spdx_license_ids_3.0.5.tgz";
+      path = fetchurl {
+        name = "spdx_license_ids___spdx_license_ids_3.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz";
+        sha1 = "3694b5804567a458d3c8045842a6358632f62654";
+      };
+    }
+    {
+      name = "split_on_first___split_on_first_1.1.0.tgz";
+      path = fetchurl {
+        name = "split_on_first___split_on_first_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz";
+        sha1 = "f610afeee3b12bce1d0c30425e76398b78249a5f";
+      };
+    }
+    {
+      name = "sprintf_js___sprintf_js_1.0.3.tgz";
+      path = fetchurl {
+        name = "sprintf_js___sprintf_js_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz";
+        sha1 = "04e6926f662895354f3dd015203633b857297e2c";
+      };
+    }
+    {
+      name = "sshpk___sshpk_1.16.1.tgz";
+      path = fetchurl {
+        name = "sshpk___sshpk_1.16.1.tgz";
+        url  = "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz";
+        sha1 = "fb661c0bef29b39db40769ee39fa70093d6f6877";
+      };
+    }
+    {
+      name = "ssri___ssri_6.0.1.tgz";
+      path = fetchurl {
+        name = "ssri___ssri_6.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz";
+        sha1 = "2a3c41b28dd45b62b63676ecb74001265ae9edd8";
+      };
+    }
+    {
+      name = "stat_mode___stat_mode_1.0.0.tgz";
+      path = fetchurl {
+        name = "stat_mode___stat_mode_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/stat-mode/-/stat-mode-1.0.0.tgz";
+        sha1 = "68b55cb61ea639ff57136f36b216a291800d1465";
+      };
+    }
+    {
+      name = "stream_each___stream_each_1.2.3.tgz";
+      path = fetchurl {
+        name = "stream_each___stream_each_1.2.3.tgz";
+        url  = "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz";
+        sha1 = "ebe27a0c389b04fbcc233642952e10731afa9bae";
+      };
+    }
+    {
+      name = "stream_iterate___stream_iterate_1.2.0.tgz";
+      path = fetchurl {
+        name = "stream_iterate___stream_iterate_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/stream-iterate/-/stream-iterate-1.2.0.tgz";
+        sha1 = "2bd7c77296c1702a46488b8ad41f79865eecd4e1";
+      };
+    }
+    {
+      name = "stream_shift___stream_shift_1.0.1.tgz";
+      path = fetchurl {
+        name = "stream_shift___stream_shift_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz";
+        sha1 = "d7088281559ab2778424279b0877da3c392d5a3d";
+      };
+    }
+    {
+      name = "stream_to_buffer___stream_to_buffer_0.1.0.tgz";
+      path = fetchurl {
+        name = "stream_to_buffer___stream_to_buffer_0.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz";
+        sha1 = "26799d903ab2025c9bd550ac47171b00f8dd80a9";
+      };
+    }
+    {
+      name = "stream_to___stream_to_0.2.2.tgz";
+      path = fetchurl {
+        name = "stream_to___stream_to_0.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/stream-to/-/stream-to-0.2.2.tgz";
+        sha1 = "84306098d85fdb990b9fa300b1b3ccf55e8ef01d";
+      };
+    }
+    {
+      name = "strict_uri_encode___strict_uri_encode_2.0.0.tgz";
+      path = fetchurl {
+        name = "strict_uri_encode___strict_uri_encode_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz";
+        sha1 = "b9c7330c7042862f6b142dc274bbcc5866ce3546";
+      };
+    }
+    {
+      name = "string_width___string_width_1.0.2.tgz";
+      path = fetchurl {
+        name = "string_width___string_width_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz";
+        sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
+      };
+    }
+    {
+      name = "string_width___string_width_2.1.1.tgz";
+      path = fetchurl {
+        name = "string_width___string_width_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz";
+        sha1 = "ab93f27a8dc13d28cac815c462143a6d9012ae9e";
+      };
+    }
+    {
+      name = "string_width___string_width_3.1.0.tgz";
+      path = fetchurl {
+        name = "string_width___string_width_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz";
+        sha1 = "22767be21b62af1081574306f69ac51b62203961";
+      };
+    }
+    {
+      name = "string_width___string_width_4.2.0.tgz";
+      path = fetchurl {
+        name = "string_width___string_width_4.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz";
+        sha1 = "952182c46cc7b2c313d1596e623992bd163b72b5";
+      };
+    }
+    {
+      name = "string.prototype.trimleft___string.prototype.trimleft_2.1.0.tgz";
+      path = fetchurl {
+        name = "string.prototype.trimleft___string.prototype.trimleft_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz";
+        sha1 = "6cc47f0d7eb8d62b0f3701611715a3954591d634";
+      };
+    }
+    {
+      name = "string.prototype.trimright___string.prototype.trimright_2.1.0.tgz";
+      path = fetchurl {
+        name = "string.prototype.trimright___string.prototype.trimright_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz";
+        sha1 = "669d164be9df9b6f7559fa8e89945b168a5a6c58";
+      };
+    }
+    {
+      name = "string_decoder___string_decoder_1.3.0.tgz";
+      path = fetchurl {
+        name = "string_decoder___string_decoder_1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz";
+        sha1 = "42f114594a46cf1a8e30b0a84f56c78c3edac21e";
+      };
+    }
+    {
+      name = "string_decoder___string_decoder_0.10.31.tgz";
+      path = fetchurl {
+        name = "string_decoder___string_decoder_0.10.31.tgz";
+        url  = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz";
+        sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
+      };
+    }
+    {
+      name = "string_decoder___string_decoder_1.1.1.tgz";
+      path = fetchurl {
+        name = "string_decoder___string_decoder_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz";
+        sha1 = "9cf1611ba62685d7030ae9e4ba34149c3af03fc8";
+      };
+    }
+    {
+      name = "stringify_package___stringify_package_1.0.1.tgz";
+      path = fetchurl {
+        name = "stringify_package___stringify_package_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.1.tgz";
+        sha1 = "e5aa3643e7f74d0f28628b72f3dad5cecfc3ba85";
+      };
+    }
+    {
+      name = "strip_ansi___strip_ansi_3.0.1.tgz";
+      path = fetchurl {
+        name = "strip_ansi___strip_ansi_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz";
+        sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
+      };
+    }
+    {
+      name = "strip_ansi___strip_ansi_4.0.0.tgz";
+      path = fetchurl {
+        name = "strip_ansi___strip_ansi_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz";
+        sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
+      };
+    }
+    {
+      name = "strip_ansi___strip_ansi_5.2.0.tgz";
+      path = fetchurl {
+        name = "strip_ansi___strip_ansi_5.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz";
+        sha1 = "8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae";
+      };
+    }
+    {
+      name = "strip_ansi___strip_ansi_6.0.0.tgz";
+      path = fetchurl {
+        name = "strip_ansi___strip_ansi_6.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz";
+        sha1 = "0b1571dd7669ccd4f3e06e14ef1eed26225ae532";
+      };
+    }
+    {
+      name = "strip_bom___strip_bom_3.0.0.tgz";
+      path = fetchurl {
+        name = "strip_bom___strip_bom_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz";
+        sha1 = "2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3";
+      };
+    }
+    {
+      name = "strip_eof___strip_eof_1.0.0.tgz";
+      path = fetchurl {
+        name = "strip_eof___strip_eof_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz";
+        sha1 = "bb43ff5598a6eb05d89b59fcd129c983313606bf";
+      };
+    }
+    {
+      name = "strip_json_comments___strip_json_comments_2.0.1.tgz";
+      path = fetchurl {
+        name = "strip_json_comments___strip_json_comments_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz";
+        sha1 = "3c531942e908c2697c0ec344858c286c7ca0a60a";
+      };
+    }
+    {
+      name = "supports_color___supports_color_5.5.0.tgz";
+      path = fetchurl {
+        name = "supports_color___supports_color_5.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz";
+        sha1 = "e2e69a44ac8772f78a1ec0b35b689df6530efc8f";
+      };
+    }
+    {
+      name = "supports_color___supports_color_7.1.0.tgz";
+      path = fetchurl {
+        name = "supports_color___supports_color_7.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz";
+        sha1 = "68e32591df73e25ad1c4b49108a2ec507962bfd1";
+      };
+    }
+    {
+      name = "table___table_5.4.6.tgz";
+      path = fetchurl {
+        name = "table___table_5.4.6.tgz";
+        url  = "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz";
+        sha1 = "1292d19500ce3f86053b05f0e8e7e4a3bb21079e";
+      };
+    }
+    {
+      name = "tar_stream___tar_stream_2.1.0.tgz";
+      path = fetchurl {
+        name = "tar_stream___tar_stream_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.0.tgz";
+        sha1 = "d1aaa3661f05b38b5acc9b7020efdca5179a2cc3";
+      };
+    }
+    {
+      name = "tar___tar_4.4.13.tgz";
+      path = fetchurl {
+        name = "tar___tar_4.4.13.tgz";
+        url  = "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz";
+        sha1 = "43b364bc52888d555298637b10d60790254ab525";
+      };
+    }
+    {
+      name = "tar___tar_6.0.1.tgz";
+      path = fetchurl {
+        name = "tar___tar_6.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/tar/-/tar-6.0.1.tgz";
+        sha1 = "7b3bd6c313cb6e0153770108f8d70ac298607efa";
+      };
+    }
+    {
+      name = "temp_file___temp_file_3.3.6.tgz";
+      path = fetchurl {
+        name = "temp_file___temp_file_3.3.6.tgz";
+        url  = "https://registry.yarnpkg.com/temp-file/-/temp-file-3.3.6.tgz";
+        sha1 = "bd7a1951338bf93b59380b498ec1804d5b76c449";
+      };
+    }
+    {
+      name = "term_size___term_size_1.2.0.tgz";
+      path = fetchurl {
+        name = "term_size___term_size_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz";
+        sha1 = "458b83887f288fc56d6fffbfad262e26638efa69";
+      };
+    }
+    {
+      name = "term_size___term_size_2.2.0.tgz";
+      path = fetchurl {
+        name = "term_size___term_size_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz";
+        sha1 = "1f16adedfe9bdc18800e1776821734086fcc6753";
+      };
+    }
+    {
+      name = "text_table___text_table_0.2.0.tgz";
+      path = fetchurl {
+        name = "text_table___text_table_0.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz";
+        sha1 = "7f5ee823ae805207c00af2df4a84ec3fcfa570b4";
+      };
+    }
+    {
+      name = "through2___through2_2.0.5.tgz";
+      path = fetchurl {
+        name = "through2___through2_2.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz";
+        sha1 = "01c1e39eb31d07cb7d03a96a70823260b23132cd";
+      };
+    }
+    {
+      name = "through___through_2.3.8.tgz";
+      path = fetchurl {
+        name = "through___through_2.3.8.tgz";
+        url  = "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz";
+        sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
+      };
+    }
+    {
+      name = "timed_out___timed_out_4.0.1.tgz";
+      path = fetchurl {
+        name = "timed_out___timed_out_4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz";
+        sha1 = "f32eacac5a175bea25d7fab565ab3ed8741ef56f";
+      };
+    }
+    {
+      name = "tiny_relative_date___tiny_relative_date_1.3.0.tgz";
+      path = fetchurl {
+        name = "tiny_relative_date___tiny_relative_date_1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz";
+        sha1 = "fa08aad501ed730f31cc043181d995c39a935e07";
+      };
+    }
+    {
+      name = "tinycolor2___tinycolor2_1.4.1.tgz";
+      path = fetchurl {
+        name = "tinycolor2___tinycolor2_1.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz";
+        sha1 = "f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8";
+      };
+    }
+    {
+      name = "tmp_promise___tmp_promise_1.1.0.tgz";
+      path = fetchurl {
+        name = "tmp_promise___tmp_promise_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-1.1.0.tgz";
+        sha1 = "bb924d239029157b9bc1d506a6aa341f8b13e64c";
+      };
+    }
+    {
+      name = "tmp___tmp_0.1.0.tgz";
+      path = fetchurl {
+        name = "tmp___tmp_0.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz";
+        sha1 = "ee434a4e22543082e294ba6201dcc6eafefa2877";
+      };
+    }
+    {
+      name = "tmp___tmp_0.0.33.tgz";
+      path = fetchurl {
+        name = "tmp___tmp_0.0.33.tgz";
+        url  = "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz";
+        sha1 = "6d34335889768d21b2bcda0aa277ced3b1bfadf9";
+      };
+    }
+    {
+      name = "to_readable_stream___to_readable_stream_1.0.0.tgz";
+      path = fetchurl {
+        name = "to_readable_stream___to_readable_stream_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz";
+        sha1 = "ce0aa0c2f3df6adf852efb404a783e77c0475771";
+      };
+    }
+    {
+      name = "tough_cookie___tough_cookie_2.4.3.tgz";
+      path = fetchurl {
+        name = "tough_cookie___tough_cookie_2.4.3.tgz";
+        url  = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz";
+        sha1 = "53f36da3f47783b0925afa06ff9f3b165280f781";
+      };
+    }
+    {
+      name = "truncate_utf8_bytes___truncate_utf8_bytes_1.0.2.tgz";
+      path = fetchurl {
+        name = "truncate_utf8_bytes___truncate_utf8_bytes_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz";
+        sha1 = "405923909592d56f78a5818434b0b78489ca5f2b";
+      };
+    }
+    {
+      name = "tslib___tslib_1.10.0.tgz";
+      path = fetchurl {
+        name = "tslib___tslib_1.10.0.tgz";
+        url  = "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz";
+        sha1 = "c3c19f95973fb0a62973fb09d90d961ee43e5c8a";
+      };
+    }
+    {
+      name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
+      path = fetchurl {
+        name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
+        sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
+      };
+    }
+    {
+      name = "tweetnacl___tweetnacl_0.14.5.tgz";
+      path = fetchurl {
+        name = "tweetnacl___tweetnacl_0.14.5.tgz";
+        url  = "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz";
+        sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
+      };
+    }
+    {
+      name = "type_check___type_check_0.3.2.tgz";
+      path = fetchurl {
+        name = "type_check___type_check_0.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz";
+        sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
+      };
+    }
+    {
+      name = "type_fest___type_fest_0.8.1.tgz";
+      path = fetchurl {
+        name = "type_fest___type_fest_0.8.1.tgz";
+        url  = "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz";
+        sha1 = "09e249ebde851d3b1e48d27c105444667f17b83d";
+      };
+    }
+    {
+      name = "typedarray_to_buffer___typedarray_to_buffer_3.1.5.tgz";
+      path = fetchurl {
+        name = "typedarray_to_buffer___typedarray_to_buffer_3.1.5.tgz";
+        url  = "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz";
+        sha1 = "a97ee7a9ff42691b9f783ff1bc5112fe3fca9080";
+      };
+    }
+    {
+      name = "typedarray___typedarray_0.0.6.tgz";
+      path = fetchurl {
+        name = "typedarray___typedarray_0.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz";
+        sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
+      };
+    }
+    {
+      name = "uid_number___uid_number_0.0.6.tgz";
+      path = fetchurl {
+        name = "uid_number___uid_number_0.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz";
+        sha1 = "0ea10e8035e8eb5b8e4449f06da1c730663baa81";
+      };
+    }
+    {
+      name = "umask___umask_1.1.0.tgz";
+      path = fetchurl {
+        name = "umask___umask_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz";
+        sha1 = "f29cebf01df517912bb58ff9c4e50fde8e33320d";
+      };
+    }
+    {
+      name = "unhomoglyph___unhomoglyph_1.0.3.tgz";
+      path = fetchurl {
+        name = "unhomoglyph___unhomoglyph_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/unhomoglyph/-/unhomoglyph-1.0.3.tgz";
+        sha1 = "8d3551622b57754e10a831bf81442d7f15d1ddfd";
+      };
+    }
+    {
+      name = "unique_filename___unique_filename_1.1.1.tgz";
+      path = fetchurl {
+        name = "unique_filename___unique_filename_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz";
+        sha1 = "1d69769369ada0583103a1e6ae87681b56573230";
+      };
+    }
+    {
+      name = "unique_slug___unique_slug_2.0.2.tgz";
+      path = fetchurl {
+        name = "unique_slug___unique_slug_2.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz";
+        sha1 = "baabce91083fc64e945b0f3ad613e264f7cd4e6c";
+      };
+    }
+    {
+      name = "unique_string___unique_string_1.0.0.tgz";
+      path = fetchurl {
+        name = "unique_string___unique_string_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz";
+        sha1 = "9e1057cca851abb93398f8b33ae187b99caec11a";
+      };
+    }
+    {
+      name = "unique_string___unique_string_2.0.0.tgz";
+      path = fetchurl {
+        name = "unique_string___unique_string_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz";
+        sha1 = "39c6451f81afb2749de2b233e3f7c5e8843bd89d";
+      };
+    }
+    {
+      name = "universalify___universalify_0.1.2.tgz";
+      path = fetchurl {
+        name = "universalify___universalify_0.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz";
+        sha1 = "b646f69be3942dabcecc9d6639c80dc105efaa66";
+      };
+    }
+    {
+      name = "unpipe___unpipe_1.0.0.tgz";
+      path = fetchurl {
+        name = "unpipe___unpipe_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz";
+        sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
+      };
+    }
+    {
+      name = "untildify___untildify_3.0.3.tgz";
+      path = fetchurl {
+        name = "untildify___untildify_3.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/untildify/-/untildify-3.0.3.tgz";
+        sha1 = "1e7b42b140bcfd922b22e70ca1265bfe3634c7c9";
+      };
+    }
+    {
+      name = "unzip_response___unzip_response_2.0.1.tgz";
+      path = fetchurl {
+        name = "unzip_response___unzip_response_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz";
+        sha1 = "d2f0f737d16b0615e72a6935ed04214572d56f97";
+      };
+    }
+    {
+      name = "update_notifier___update_notifier_2.5.0.tgz";
+      path = fetchurl {
+        name = "update_notifier___update_notifier_2.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz";
+        sha1 = "d0744593e13f161e406acb1d9408b72cad08aff6";
+      };
+    }
+    {
+      name = "update_notifier___update_notifier_4.1.0.tgz";
+      path = fetchurl {
+        name = "update_notifier___update_notifier_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.0.tgz";
+        sha1 = "4866b98c3bc5b5473c020b1250583628f9a328f3";
+      };
+    }
+    {
+      name = "uri_js___uri_js_4.2.2.tgz";
+      path = fetchurl {
+        name = "uri_js___uri_js_4.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz";
+        sha1 = "94c540e1ff772956e2299507c010aea6c8838eb0";
+      };
+    }
+    {
+      name = "url_parse_lax___url_parse_lax_1.0.0.tgz";
+      path = fetchurl {
+        name = "url_parse_lax___url_parse_lax_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz";
+        sha1 = "7af8f303645e9bd79a272e7a14ac68bc0609da73";
+      };
+    }
+    {
+      name = "url_parse_lax___url_parse_lax_3.0.0.tgz";
+      path = fetchurl {
+        name = "url_parse_lax___url_parse_lax_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz";
+        sha1 = "16b5cafc07dbe3676c1b1999177823d6503acb0c";
+      };
+    }
+    {
+      name = "url_regex___url_regex_3.2.0.tgz";
+      path = fetchurl {
+        name = "url_regex___url_regex_3.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/url-regex/-/url-regex-3.2.0.tgz";
+        sha1 = "dbad1e0c9e29e105dd0b1f09f6862f7fdb482724";
+      };
+    }
+    {
+      name = "utf8_byte_length___utf8_byte_length_1.0.4.tgz";
+      path = fetchurl {
+        name = "utf8_byte_length___utf8_byte_length_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz";
+        sha1 = "f45f150c4c66eee968186505ab93fcbb8ad6bf61";
+      };
+    }
+    {
+      name = "util_deprecate___util_deprecate_1.0.2.tgz";
+      path = fetchurl {
+        name = "util_deprecate___util_deprecate_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz";
+        sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
+      };
+    }
+    {
+      name = "util_extend___util_extend_1.0.3.tgz";
+      path = fetchurl {
+        name = "util_extend___util_extend_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz";
+        sha1 = "a7c216d267545169637b3b6edc6ca9119e2ff93f";
+      };
+    }
+    {
+      name = "util_promisify___util_promisify_2.1.0.tgz";
+      path = fetchurl {
+        name = "util_promisify___util_promisify_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz";
+        sha1 = "3c2236476c4d32c5ff3c47002add7c13b9a82a53";
+      };
+    }
+    {
+      name = "util.promisify___util.promisify_1.0.0.tgz";
+      path = fetchurl {
+        name = "util.promisify___util.promisify_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz";
+        sha1 = "440f7165a459c9a16dc145eb8e72f35687097030";
+      };
+    }
+    {
+      name = "uuid___uuid_3.3.3.tgz";
+      path = fetchurl {
+        name = "uuid___uuid_3.3.3.tgz";
+        url  = "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz";
+        sha1 = "4568f0216e78760ee1dbf3a4d2cf53e224112866";
+      };
+    }
+    {
+      name = "uuid___uuid_3.4.0.tgz";
+      path = fetchurl {
+        name = "uuid___uuid_3.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz";
+        sha1 = "b23e4358afa8a202fe7a100af1f5f883f02007ee";
+      };
+    }
+    {
+      name = "validate_npm_package_license___validate_npm_package_license_3.0.4.tgz";
+      path = fetchurl {
+        name = "validate_npm_package_license___validate_npm_package_license_3.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz";
+        sha1 = "fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a";
+      };
+    }
+    {
+      name = "validate_npm_package_name___validate_npm_package_name_3.0.0.tgz";
+      path = fetchurl {
+        name = "validate_npm_package_name___validate_npm_package_name_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz";
+        sha1 = "5fa912d81eb7d0c74afc140de7317f0ca7df437e";
+      };
+    }
+    {
+      name = "verror___verror_1.10.0.tgz";
+      path = fetchurl {
+        name = "verror___verror_1.10.0.tgz";
+        url  = "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz";
+        sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
+      };
+    }
+    {
+      name = "wcwidth___wcwidth_1.0.1.tgz";
+      path = fetchurl {
+        name = "wcwidth___wcwidth_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz";
+        sha1 = "f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8";
+      };
+    }
+    {
+      name = "which_module___which_module_2.0.0.tgz";
+      path = fetchurl {
+        name = "which_module___which_module_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz";
+        sha1 = "d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a";
+      };
+    }
+    {
+      name = "which___which_1.3.1.tgz";
+      path = fetchurl {
+        name = "which___which_1.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz";
+        sha1 = "a45043d54f5805316da8d62f9f50918d3da70b0a";
+      };
+    }
+    {
+      name = "wide_align___wide_align_1.1.3.tgz";
+      path = fetchurl {
+        name = "wide_align___wide_align_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz";
+        sha1 = "ae074e6bdc0c14a431e804e624549c633b000457";
+      };
+    }
+    {
+      name = "widest_line___widest_line_2.0.1.tgz";
+      path = fetchurl {
+        name = "widest_line___widest_line_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz";
+        sha1 = "7438764730ec7ef4381ce4df82fb98a53142a3fc";
+      };
+    }
+    {
+      name = "widest_line___widest_line_3.1.0.tgz";
+      path = fetchurl {
+        name = "widest_line___widest_line_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz";
+        sha1 = "8292333bbf66cb45ff0de1603b136b7ae1496eca";
+      };
+    }
+    {
+      name = "winreg___winreg_1.2.4.tgz";
+      path = fetchurl {
+        name = "winreg___winreg_1.2.4.tgz";
+        url  = "https://registry.yarnpkg.com/winreg/-/winreg-1.2.4.tgz";
+        sha1 = "ba065629b7a925130e15779108cf540990e98d1b";
+      };
+    }
+    {
+      name = "word_wrap___word_wrap_1.2.3.tgz";
+      path = fetchurl {
+        name = "word_wrap___word_wrap_1.2.3.tgz";
+        url  = "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz";
+        sha1 = "610636f6b1f703891bd34771ccb17fb93b47079c";
+      };
+    }
+    {
+      name = "worker_farm___worker_farm_1.7.0.tgz";
+      path = fetchurl {
+        name = "worker_farm___worker_farm_1.7.0.tgz";
+        url  = "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz";
+        sha1 = "26a94c5391bbca926152002f69b84a4bf772e5a8";
+      };
+    }
+    {
+      name = "wrap_ansi___wrap_ansi_2.1.0.tgz";
+      path = fetchurl {
+        name = "wrap_ansi___wrap_ansi_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz";
+        sha1 = "d8fc3d284dd05794fe84973caecdd1cf824fdd85";
+      };
+    }
+    {
+      name = "wrap_ansi___wrap_ansi_6.2.0.tgz";
+      path = fetchurl {
+        name = "wrap_ansi___wrap_ansi_6.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz";
+        sha1 = "e9393ba07102e6c91a3b221478f0257cd2856e53";
+      };
+    }
+    {
+      name = "wrappy___wrappy_1.0.2.tgz";
+      path = fetchurl {
+        name = "wrappy___wrappy_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz";
+        sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
+      };
+    }
+    {
+      name = "write_file_atomic___write_file_atomic_2.4.3.tgz";
+      path = fetchurl {
+        name = "write_file_atomic___write_file_atomic_2.4.3.tgz";
+        url  = "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz";
+        sha1 = "1fd2e9ae1df3e75b8d8c367443c692d4ca81f481";
+      };
+    }
+    {
+      name = "write_file_atomic___write_file_atomic_3.0.1.tgz";
+      path = fetchurl {
+        name = "write_file_atomic___write_file_atomic_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.1.tgz";
+        sha1 = "558328352e673b5bb192cf86500d60b230667d4b";
+      };
+    }
+    {
+      name = "write___write_1.0.3.tgz";
+      path = fetchurl {
+        name = "write___write_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz";
+        sha1 = "0800e14523b923a387e415123c865616aae0f5c3";
+      };
+    }
+    {
+      name = "xdg_basedir___xdg_basedir_3.0.0.tgz";
+      path = fetchurl {
+        name = "xdg_basedir___xdg_basedir_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz";
+        sha1 = "496b2cc109eca8dbacfe2dc72b603c17c5870ad4";
+      };
+    }
+    {
+      name = "xdg_basedir___xdg_basedir_4.0.0.tgz";
+      path = fetchurl {
+        name = "xdg_basedir___xdg_basedir_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz";
+        sha1 = "4bc8d9984403696225ef83a1573cbbcb4e79db13";
+      };
+    }
+    {
+      name = "xhr___xhr_2.5.0.tgz";
+      path = fetchurl {
+        name = "xhr___xhr_2.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz";
+        sha1 = "bed8d1676d5ca36108667692b74b316c496e49dd";
+      };
+    }
+    {
+      name = "xml_parse_from_string___xml_parse_from_string_1.0.1.tgz";
+      path = fetchurl {
+        name = "xml_parse_from_string___xml_parse_from_string_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz";
+        sha1 = "a9029e929d3dbcded169f3c6e28238d95a5d5a28";
+      };
+    }
+    {
+      name = "xml2js___xml2js_0.4.22.tgz";
+      path = fetchurl {
+        name = "xml2js___xml2js_0.4.22.tgz";
+        url  = "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.22.tgz";
+        sha1 = "4fa2d846ec803237de86f30aa9b5f70b6600de02";
+      };
+    }
+    {
+      name = "xmlbuilder___xmlbuilder_11.0.1.tgz";
+      path = fetchurl {
+        name = "xmlbuilder___xmlbuilder_11.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz";
+        sha1 = "be9bae1c8a046e76b31127726347d0ad7002beb3";
+      };
+    }
+    {
+      name = "xtend___xtend_4.0.2.tgz";
+      path = fetchurl {
+        name = "xtend___xtend_4.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz";
+        sha1 = "bb72779f5fa465186b1f438f674fa347fdb5db54";
+      };
+    }
+    {
+      name = "y18n___y18n_3.2.1.tgz";
+      path = fetchurl {
+        name = "y18n___y18n_3.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz";
+        sha1 = "6d15fba884c08679c0d77e88e7759e811e07fa41";
+      };
+    }
+    {
+      name = "y18n___y18n_4.0.0.tgz";
+      path = fetchurl {
+        name = "y18n___y18n_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz";
+        sha1 = "95ef94f85ecc81d007c264e190a120f0a3c8566b";
+      };
+    }
+    {
+      name = "yallist___yallist_2.1.2.tgz";
+      path = fetchurl {
+        name = "yallist___yallist_2.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz";
+        sha1 = "1c11f9218f076089a47dd512f93c6699a6a81d52";
+      };
+    }
+    {
+      name = "yallist___yallist_3.1.1.tgz";
+      path = fetchurl {
+        name = "yallist___yallist_3.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz";
+        sha1 = "dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd";
+      };
+    }
+    {
+      name = "yallist___yallist_4.0.0.tgz";
+      path = fetchurl {
+        name = "yallist___yallist_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz";
+        sha1 = "9bb92790d9c0effec63be73519e11a35019a3a72";
+      };
+    }
+    {
+      name = "yargs_parser___yargs_parser_16.1.0.tgz";
+      path = fetchurl {
+        name = "yargs_parser___yargs_parser_16.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz";
+        sha1 = "73747d53ae187e7b8dbe333f95714c76ea00ecf1";
+      };
+    }
+    {
+      name = "yargs_parser___yargs_parser_7.0.0.tgz";
+      path = fetchurl {
+        name = "yargs_parser___yargs_parser_7.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz";
+        sha1 = "8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9";
+      };
+    }
+    {
+      name = "yargs_parser___yargs_parser_9.0.2.tgz";
+      path = fetchurl {
+        name = "yargs_parser___yargs_parser_9.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz";
+        sha1 = "9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077";
+      };
+    }
+    {
+      name = "yargs___yargs_11.1.1.tgz";
+      path = fetchurl {
+        name = "yargs___yargs_11.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/yargs/-/yargs-11.1.1.tgz";
+        sha1 = "5052efe3446a4df5ed669c995886cc0f13702766";
+      };
+    }
+    {
+      name = "yargs___yargs_15.1.0.tgz";
+      path = fetchurl {
+        name = "yargs___yargs_15.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/yargs/-/yargs-15.1.0.tgz";
+        sha1 = "e111381f5830e863a89550bd4b136bb6a5f37219";
+      };
+    }
+    {
+      name = "yargs___yargs_8.0.2.tgz";
+      path = fetchurl {
+        name = "yargs___yargs_8.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz";
+        sha1 = "6299a9055b1cefc969ff7e79c1d918dceb22c360";
+      };
+    }
+    {
+      name = "zip_stream___zip_stream_2.1.2.tgz";
+      path = fetchurl {
+        name = "zip_stream___zip_stream_2.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/zip-stream/-/zip-stream-2.1.2.tgz";
+        sha1 = "841efd23214b602ff49c497cba1a85d8b5fbc39c";
+      };
+    }
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop.nix
new file mode 100644
index 000000000000..b05f64c13822
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop.nix
@@ -0,0 +1,84 @@
+{ stdenv, fetchFromGitHub
+, makeWrapper, makeDesktopItem, mkYarnPackage
+, electron_7, riot-web
+}:
+# Notes for maintainers:
+# * versions of `riot-web` and `riot-desktop` should be kept in sync.
+# * the Yarn dependency expression must be updated with `./update-riot-desktop.sh <git release tag>`
+
+let
+  executableName = "riot-desktop";
+  version = "1.6.5";
+  src = fetchFromGitHub {
+    owner = "vector-im";
+    repo = "riot-desktop";
+    rev = "v${version}";
+    sha256 = "1snmfn98z63a8ahh5c7y7h00i8qsdq6wsnidmjjrkzcz3mchfq60";
+  };
+  electron = electron_7;
+
+in mkYarnPackage rec {
+  name = "riot-desktop-${version}";
+  inherit version src;
+
+  packageJSON = ./riot-desktop-package.json;
+  yarnNix = ./riot-desktop-yarndeps.nix;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    # resources
+    mkdir -p "$out/share/riot"
+    ln -s '${riot-web}' "$out/share/riot/webapp"
+    cp -r './deps/riot-desktop' "$out/share/riot/electron"
+    cp -r './deps/riot-desktop/res/img' "$out/share/riot"
+    rm "$out/share/riot/electron/node_modules"
+    cp -r './node_modules' "$out/share/riot/electron"
+
+    # icons
+    for icon in $out/share/riot/electron/build/icons/*.png; do
+      mkdir -p "$out/share/icons/hicolor/$(basename $icon .png)/apps"
+      ln -s "$icon" "$out/share/icons/hicolor/$(basename $icon .png)/apps/riot.png"
+    done
+
+    # desktop item
+    mkdir -p "$out/share"
+    ln -s "${desktopItem}/share/applications" "$out/share/applications"
+
+    # executable wrapper
+    makeWrapper '${electron}/bin/electron' "$out/bin/${executableName}" \
+      --add-flags "$out/share/riot/electron"
+  '';
+
+  # Do not attempt generating a tarball for riot-web again.
+  # note: `doDist = false;` does not work.
+  distPhase = ''
+    true
+  '';
+
+  # The desktop item properties should be kept in sync with data from upstream:
+  # * productName and description from
+  #   https://github.com/vector-im/riot-web/blob/develop/electron_app/package.json
+  # * category and StartupWMClass from the build.linux section of
+  #   https://github.com/vector-im/riot-web/blob/develop/package.json
+  desktopItem = makeDesktopItem {
+    name = "riot";
+    exec = executableName;
+    icon = "riot";
+    desktopName = "Riot";
+    genericName = "Matrix Client";
+    comment = meta.description;
+    categories = "Network;InstantMessaging;Chat;";
+    extraEntries = ''
+      StartupWMClass=riot
+    '';
+  };
+
+  meta = with stdenv.lib; {
+    description = "A feature-rich client for Matrix.org";
+    homepage = "https://about.riot.im/";
+    license = licenses.asl20;
+    maintainers = teams.matrix.members;
+    inherit (electron.meta) platforms;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-web.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-web.nix
new file mode 100644
index 000000000000..cc4eb4161f1b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-web.nix
@@ -0,0 +1,40 @@
+{ lib, stdenv, fetchurl, writeText, jq, conf ? {} }:
+
+# Note for maintainers:
+# Versions of `riot-web` and `riot-desktop` should be kept in sync.
+
+let
+  noPhoningHome = {
+    disable_guests = true; # disable automatic guest account registration at matrix.org
+    piwik = false; # disable analytics
+  };
+  configOverrides = writeText "riot-config-overrides.json" (builtins.toJSON (noPhoningHome // conf));
+
+in stdenv.mkDerivation rec {
+  pname = "riot-web";
+  version = "1.6.5";
+
+  src = fetchurl {
+    url = "https://github.com/vector-im/riot-web/releases/download/v${version}/riot-v${version}.tar.gz";
+    sha256 = "0mx7ql76cbivc0d9gzix51bc1rdp9yg9vjx05mbf5r9sxrwmihz5";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/
+    cp -R . $out/
+    ${jq}/bin/jq -s '.[0] * .[1]' "config.sample.json" "${configOverrides}" > "$out/config.json"
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A glossy Matrix collaboration client for the web";
+    homepage = "http://riot.im/";
+    maintainers = stdenv.lib.teams.matrix.members;
+    license = stdenv.lib.licenses.asl20;
+    platforms = stdenv.lib.platforms.all;
+    hydraPlatforms = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/riot/update-riot-desktop.sh b/nixpkgs/pkgs/applications/networking/instant-messengers/riot/update-riot-desktop.sh
new file mode 100755
index 000000000000..d6e7259f19b9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/riot/update-riot-desktop.sh
@@ -0,0 +1,17 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -I nixpkgs=../../../../../ -i bash -p wget yarn2nix
+
+set -euo pipefail
+
+if [ "$#" -ne 1 ] || [[ "$1" == -* ]]; then
+	echo "Regenerates the Yarn dependency lock files for the riot-desktop package."
+	echo "Usage: $0 <git release tag>"
+	exit 1
+fi
+
+RIOT_WEB_SRC="https://raw.githubusercontent.com/vector-im/riot-desktop/$1"
+
+wget "$RIOT_WEB_SRC/package.json" -O riot-desktop-package.json
+wget "$RIOT_WEB_SRC/yarn.lock" -O riot-desktop-yarndeps.lock
+yarn2nix --lockfile=riot-desktop-yarndeps.lock > riot-desktop-yarndeps.nix
+rm riot-desktop-yarndeps.lock
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/ripcord/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/ripcord/default.nix
new file mode 100755
index 000000000000..f003bbec222f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/ripcord/default.nix
@@ -0,0 +1,69 @@
+{ lib, mkDerivation, fetchurl, makeFontsConf, appimageTools,
+  qtbase, qtsvg, qtmultimedia, qtwebsockets, qtimageformats,
+  autoPatchelfHook, desktop-file-utils, imagemagick, makeWrapper,
+  twemoji-color-font, xorg, libsodium, libopus, libGL, zlib, alsaLib }:
+
+mkDerivation rec {
+  pname = "ripcord";
+  version = "0.4.25";
+
+  src = let
+    appimage = fetchurl {
+      url = "https://cancel.fm/dl/Ripcord-${version}-x86_64.AppImage";
+      sha256 = "17s4fxqirmzdw0sn9s9zyk90gr00ivsmz4s6i6knsq354zhy5fda";
+      name = "${pname}-${version}.AppImage";
+    };
+  in appimageTools.extract {
+    name = "${pname}-${version}";
+    src = appimage;
+  };
+
+  nativeBuildInputs = [ autoPatchelfHook desktop-file-utils imagemagick ];
+  buildInputs = [ libsodium libopus libGL alsaLib ] ++
+                [ qtbase qtsvg qtmultimedia qtwebsockets qtimageformats ] ++
+                (with xorg; [ libX11 libXScrnSaver libXcursor xkeyboardconfig ]);
+
+  fontsConf = makeFontsConf {
+    fontDirectories = [ twemoji-color-font ];
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out
+    cp -r ${src}/{qt.conf,translations,twemoji.ripdb} $out
+
+    for size in 16 32 48 64 72 96 128 192 256 512 1024; do
+      mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
+      convert -resize "$size"x"$size" ${src}/Ripcord_Icon.png $out/share/icons/hicolor/"$size"x"$size"/apps/ripcord.png
+    done
+
+    desktop-file-install --dir $out/share/applications \
+      --set-key Exec --set-value ripcord \
+      --set-key Icon --set-value ripcord \
+      --set-key Comment --set-value "${meta.description}" \
+      ${src}/Ripcord.desktop
+    mv $out/share/applications/Ripcord.desktop $out/share/applications/ripcord.desktop
+
+    install -Dm755 ${src}/Ripcord $out/Ripcord
+    patchelf --replace-needed libsodium.so.18 libsodium.so $out/Ripcord
+    makeQtWrapper $out/Ripcord $out/bin/ripcord \
+      --run "cd $out" \
+      --set FONTCONFIG_FILE "${fontsConf}" \
+      --prefix LD_LIBRARY_PATH ":" "${xorg.libXcursor}/lib" \
+      --prefix QT_XKB_CONFIG_ROOT ":" "${xorg.xkeyboardconfig}/share/X11/xkb"
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Desktop chat client for Slack and Discord";
+    homepage = "https://cancel.fm/ripcord/";
+
+    # See: https://cancel.fm/ripcord/shareware-redistribution/
+    license = licenses.unfreeRedistributable;
+
+    maintainers = with maintainers; [ infinisil ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix
new file mode 100644
index 000000000000..6b9593a24b7f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchurl, python27Packages, file }:
+
+let
+  inherit (python27Packages) python;
+  requirements = (import ./requirements.nix {
+    inherit stdenv fetchurl;
+    pythonPackages = python27Packages;
+  });
+
+in
+  stdenv.mkDerivation rec {
+    pname = "salut-a-toi";
+    version = "0.6.1";
+
+    src = fetchurl {
+      url = "ftp://ftp.goffi.org/sat/sat-${version}.tar.bz2";
+      sha256 = "0kn9403n8fpzl0hsb9kkzicsmzq2fjl627l31yykbqzc4nsr780d";
+    };
+
+    buildInputs = with python27Packages;
+    [
+      python twisted urwid wxPython pygobject2
+      dbus-python wrapPython setuptools file
+      pycrypto pyxdg
+    ] ++  (with requirements; [
+      pyfeed
+      wokkel
+    ]);
+
+    configurePhase = ''
+      sed -i "/use_setuptools/d" setup.py
+      sed -e "s@sys.prefix@'$out'@g" -i setup.py
+      sed -e "1aexport PATH=\"\$PATH\":\"$out/bin\":\"${python27Packages.twisted}/bin\"" -i src/sat.sh
+      sed -e "1aexport PYTHONPATH=\"\$PYTHONPATHPATH\":\"$PYTHONPATH\":"$out/${python.sitePackages}"" -i src/sat.sh
+
+      echo 'import wokkel.muc' | python
+    '';
+
+    buildPhase = ''
+      ${python.interpreter} setup.py build
+    '';
+
+    installPhase = ''
+      ${python.interpreter} setup.py install --prefix="$out"
+
+      for i in "$out/bin"/*; do
+      head -n 1 "$i" | grep -E '[/ ]python( |$)' && {
+        wrapProgram "$i" --prefix PYTHONPATH : "$PYTHONPATH:$out/${python.sitePackages}"
+      } || true
+      done
+    '';
+
+    meta = with stdenv.lib; {
+      homepage = "http://sat.goffi.org/";
+      description = "A multi-frontend XMPP client";
+      platforms = platforms.linux;
+      maintainers = [ maintainers.raskin ];
+      license = licenses.gpl3Plus;
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/salut-a-toi/requirements.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/salut-a-toi/requirements.nix
new file mode 100644
index 000000000000..1a6811182453
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/salut-a-toi/requirements.nix
@@ -0,0 +1,67 @@
+{ fetchurl
+, stdenv
+, pythonPackages
+}:
+
+let
+  buildPythonPackage = pythonPackages.buildPythonPackage;
+
+  xe = buildPythonPackage rec {
+    url = "http://www.blarg.net/%7Esteveha/xe-0.7.4.tar.gz";
+    name = stdenv.lib.nameFromURL url ".tar";
+    src = fetchurl {
+      inherit url;
+      sha256 = "0v9878cl0y9cczdsr6xjy8v9l139lc23h4m5f86p4kpf2wlnpi42";
+    };
+
+    # error: invalid command 'test'
+    doCheck = false;
+
+    meta = {
+      homepage = "http://home.blarg.net/~steveha/xe.html";
+      description = "XML elements";
+    };
+  };
+
+in {
+
+  pyfeed = (buildPythonPackage rec {
+    url = "http://www.blarg.net/%7Esteveha/pyfeed-0.7.4.tar.gz";
+
+    name = stdenv.lib.nameFromURL url ".tar";
+
+    src = fetchurl {
+      inherit url;
+      sha256 = "1h4msq573m7wm46h3cqlx4rsn99f0l11rhdqgf50lv17j8a8vvy1";
+    };
+
+    propagatedBuildInputs = [ xe ];
+
+    # error: invalid command 'test'
+    doCheck = false;
+
+    meta = with stdenv.lib; {
+      homepage = "http://home.blarg.net/~steveha/pyfeed.html";
+      description = "Tools for syndication feeds";
+    };
+
+  });
+
+  wokkel = buildPythonPackage (rec {
+    url = "http://wokkel.ik.nu/releases/0.7.0/wokkel-0.7.0.tar.gz";
+    name = stdenv.lib.nameFromURL url ".tar";
+    src = fetchurl {
+      inherit url;
+      sha256 = "0rnshrzw8605x05mpd8ndrx3ri8h6cx713mp8sl4f04f4gcrz8ml";
+    };
+
+    propagatedBuildInputs = with pythonPackages; [twisted dateutil];
+
+    meta = with stdenv.lib; {
+      description = "Some (mainly XMPP-related) additions to twisted";
+      homepage = "http://wokkel.ik.nu/";
+      license = licenses.mit;
+    };
+  });
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/scudcloud/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/scudcloud/default.nix
new file mode 100644
index 000000000000..b16659ba44cd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/scudcloud/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, python3Packages }:
+
+let version = "1.63";
+in python3Packages.buildPythonPackage {
+  name = "scudcloud-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/raelgc/scudcloud/archive/v${version}.tar.gz";
+    sha256 = "e0d1cb72115d0fda17db92d28be51558ad8fe250972683fac3086dbe8d350d22";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ pyqt5_with_qtwebkit dbus-python jsmin ];
+
+  meta = with stdenv.lib; {
+    description = "Non-official desktop client for Slack";
+    homepage = "https://github.com/raelgc/scudcloud";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ volhovm ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/signal-cli/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/signal-cli/default.nix
new file mode 100644
index 000000000000..5c46a5a0fd22
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/signal-cli/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, lib, fetchurl, makeWrapper, jre_headless, libmatthew_java, dbus, dbus_java }:
+
+stdenv.mkDerivation rec {
+  pname = "signal-cli";
+  version = "0.6.8";
+
+  # Building from source would be preferred, but is much more involved.
+  src = fetchurl {
+    url = "https://github.com/AsamK/signal-cli/releases/download/v${version}/signal-cli-${version}.tar.gz";
+    sha256 = "0gcyj8r7156zn5zzfnabf0mw3kcaq7v29vsjb6mdvj8cjjm05dvd";
+  };
+
+  buildInputs = lib.optionals stdenv.isLinux [ libmatthew_java dbus dbus_java ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -r lib $out/lib
+    cp bin/signal-cli $out/bin/signal-cli
+  '' + (if stdenv.isLinux then ''
+    makeWrapper ${jre_headless}/bin/java $out/bin/signal-cli \
+      --set JAVA_HOME "${jre_headless}" \
+      --add-flags "-classpath '$out/lib/*:${libmatthew_java}/lib/jni'" \
+      --add-flags "-Djava.library.path=${libmatthew_java}/lib/jni:${dbus_java}/share/java/dbus:$out/lib" \
+      --add-flags "org.asamk.signal.Main"
+  '' else ''
+    wrapProgram $out/bin/signal-cli \
+      --prefix PATH : ${lib.makeBinPath [ jre_headless ]} \
+      --set JAVA_HOME ${jre_headless}
+  '');
+
+  # Execution in the macOS (10.13) sandbox fails with
+  # dyld: Library not loaded: /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
+  #   Referenced from: /nix/store/5ghc2l65p8jcjh0bsmhahd5m9k5p8kx0-zulu1.8.0_121-8.20.0.5/bin/java
+  #   Reason: no suitable image found.  Did find:
+  #         /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa: file system sandbox blocked stat()
+  #         /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa: file system sandbox blocked stat()
+  # /nix/store/in41dz8byyyz4c0w132l7mqi43liv4yr-stdenv-darwin/setup: line 1310:  2231 Abort trap: 6           signal-cli --version
+  doInstallCheck = stdenv.isLinux;
+
+  installCheckPhase = ''
+    export PATH=$PATH:$out/bin
+    # --help returns non-0 exit code even when working
+    signal-cli --version
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/AsamK/signal-cli";
+    description = "Command-line and dbus interface for communicating with the Signal messaging service";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ ivan erictapen ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
new file mode 100644
index 000000000000..dae1513884ab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
@@ -0,0 +1,139 @@
+{ stdenv, lib, fetchurl, autoPatchelfHook, dpkg, wrapGAppsHook, nixosTests
+, gnome2, gtk3, atk, at-spi2-atk, cairo, pango, gdk-pixbuf, glib, freetype, fontconfig
+, dbus, libX11, xorg, libXi, libXcursor, libXdamage, libXrandr, libXcomposite
+, libXext, libXfixes, libXrender, libXtst, libXScrnSaver, nss, nspr, alsaLib
+, cups, expat, systemd, libnotify, libuuid, at-spi2-core, libappindicator-gtk3
+# Unfortunately this also overwrites the UI language (not just the spell
+# checking language!):
+, hunspellDicts, spellcheckerLanguage ? null # E.g. "de_DE"
+# For a full list of available languages:
+# $ cat pkgs/development/libraries/hunspell/dictionaries.nix | grep "dictFileName =" | awk '{ print $3 }'
+}:
+
+let
+  customLanguageWrapperArgs = (with lib;
+    let
+      # E.g. "de_DE" -> "de-de" (spellcheckerLanguage -> hunspellDict)
+      spellLangComponents = splitString "_" spellcheckerLanguage;
+      hunspellDict = elemAt spellLangComponents 0 + "-" + toLower (elemAt spellLangComponents 1);
+    in if spellcheckerLanguage != null
+      then ''
+        --set HUNSPELL_DICTIONARIES "${hunspellDicts.${hunspellDict}}/share/hunspell" \
+        --set LC_MESSAGES "${spellcheckerLanguage}"''
+      else "");
+in stdenv.mkDerivation rec {
+  pname = "signal-desktop";
+  version = "1.34.2"; # Please backport all updates to the stable channel.
+  # All releases have a limited lifetime and "expire" 90 days after the release.
+  # When releases "expire" the application becomes unusable until an update is
+  # applied. The expiration date for the current release can be extracted with:
+  # $ grep -a "^{\"buildExpiration" "${signal-desktop}/lib/Signal/resources/app.asar"
+  # (Alternatively we could try to patch the asar archive, but that requires a
+  # few additional steps and might not be the best idea.)
+
+  src = fetchurl {
+    url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
+    sha256 = "0l0i6v6n6iyq1zb2rlgfjnsk37kzjqgglk824vl5kp8qbq0li6b6";
+  };
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+    dpkg
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    alsaLib
+    at-spi2-atk
+    at-spi2-core
+    atk
+    cairo
+    cups
+    dbus
+    expat
+    fontconfig
+    freetype
+    gdk-pixbuf
+    glib
+    gnome2.GConf
+    gtk3
+    libX11
+    libXScrnSaver
+    libXcomposite
+    libXcursor
+    libXdamage
+    libXext
+    libXfixes
+    libXi
+    libXrandr
+    libXrender
+    libXtst
+    libappindicator-gtk3
+    libnotify
+    libuuid
+    nspr
+    nss
+    pango
+    systemd
+    xorg.libxcb
+  ];
+
+  runtimeDependencies = [
+    systemd.lib
+    libnotify
+  ];
+
+  unpackPhase = "dpkg-deb -x $src .";
+
+  dontBuild = true;
+  dontConfigure = true;
+  dontPatchELF = true;
+  # We need to run autoPatchelf manually with the "no-recurse" option, see
+  # https://github.com/NixOS/nixpkgs/pull/78413 for the reasons.
+  dontAutoPatchelf = true;
+
+  installPhase = ''
+    mkdir -p $out/lib
+
+    mv usr/share $out/share
+    mv opt/Signal $out/lib/Signal
+
+    # Note: The following path contains bundled libraries:
+    # $out/lib/Signal/resources/app.asar.unpacked/node_modules/sharp/vendor/lib/
+    # We run autoPatchelf with the "no-recurse" option to avoid picking those
+    # up, but resources/app.asar still requires them.
+
+    # Symlink to bin
+    mkdir -p $out/bin
+    ln -s $out/lib/Signal/signal-desktop $out/bin/signal-desktop
+  '';
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ stdenv.cc.cc ] }"
+      ${customLanguageWrapperArgs}
+    )
+
+    # Fix the desktop link
+    substituteInPlace $out/share/applications/signal-desktop.desktop \
+      --replace /opt/Signal/signal-desktop $out/bin/signal-desktop
+
+    autoPatchelf --no-recurse -- $out/lib/Signal/
+  '';
+
+  # Tests if the application launches and waits for "Link your phone to Signal Desktop":
+  passthru.tests.application-launch = nixosTests.signal-desktop;
+
+  meta = {
+    description = "Private, simple, and secure messenger";
+    longDescription = ''
+      Signal Desktop is an Electron application that links with your
+      "Signal Android" or "Signal iOS" app.
+    '';
+    homepage    = "https://signal.org/";
+    changelog   = "https://github.com/signalapp/Signal-Desktop/releases/tag/v${version}";
+    license     = lib.licenses.gpl3;
+    maintainers = with lib.maintainers; [ ixmatus primeos equirosa ];
+    platforms   = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/silc-client/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/silc-client/default.nix
new file mode 100644
index 000000000000..0c84e1c5c80a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/silc-client/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, perl, pkgconfig, glib, ncurses
+, enablePlugin ? false }:
+
+# Enabling the plugin and using it with a recent irssi, segafults on join:
+# http://marc.info/?l=silc-devel&m=125610477802211
+
+let
+  basename = "silc-client-1.1.11";
+in
+stdenv.mkDerivation {
+  name = basename + stdenv.lib.optionalString enablePlugin "-irssi-plugin";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/silc/silc/client/sources/${basename}.tar.bz2";
+    sha256 = "13cp3fmdnj8scjak0d2xal3bfvs2k7ssrwdhp0zl6jar5rwc7prn";
+  };
+
+  enableParallelBuilding = true;
+
+  dontDisableStatic = true;
+
+  hardeningDisable = [ "format" ];
+
+  configureFlags = [ "--with-ncurses=${ncurses.dev}" ];
+
+  preConfigure = stdenv.lib.optionalString enablePlugin ''
+    configureFlags="$configureFlags --with-silc-plugin=$out/lib/irssi"
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ perl glib ncurses ];
+
+  meta = {
+    homepage = "http://silcnet.org/";
+    description = "Secure Internet Live Conferencing server";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/sky/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/sky/default.nix
new file mode 100644
index 000000000000..33bd4586bfdb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/sky/default.nix
@@ -0,0 +1,86 @@
+{ stdenv, fetchurl, file, libX11, libXScrnSaver
+, libGL, qt5, SDL, libpulseaudio
+, libXrandr, libXext, libXcursor, libXinerama, libXi
+, curl, sqlite, openssl
+, libuuid, openh264, libv4l, libxkbfile, libXv, zlib, libXmu
+, libXtst, libXdamage, pam, libXfixes, libXrender, libjpeg_original
+, ffmpeg_3
+}:
+ let
+   # Sky is linked to the libjpeg 8 version and checks for the version number in the code.
+   libjpeg_original_fix = libjpeg_original.overrideAttrs (oldAttrs: {
+    src = fetchurl{
+      url = "https://www.ijg.org/files/jpegsrc.v8d.tar.gz";
+      sha256 = "1cz0dy05mgxqdgjf52p54yxpyy95rgl30cnazdrfmw7hfca9n0h0";
+    };
+  });
+in
+stdenv.mkDerivation rec {
+  version_major = "2.1.7369";
+  version_minor = "1";
+  version = version_major + "." + version_minor;
+  pname = "sky";
+  unpackCmd = "ar x $curSrc; tar -xf data.tar.xz";
+  src = fetchurl {
+    url = "https://tel.red/repos/ubuntu/pool/non-free/sky_${version_major + "-" + version_minor}ubuntu+xenial_amd64.deb";
+    sha256 = "0b3j90km3rp5bgaklxw881g0gcy09mqzbhjdfrq4s2np026ql3d9";
+  };
+  buildInputs = [ 
+    file
+    qt5.qtbase
+    SDL
+    ffmpeg_3
+    sqlite
+    openssl
+    openh264
+    pam
+    curl
+    libX11 libXScrnSaver libGL libpulseaudio libXrandr
+    libXext libXcursor libXinerama libXi libuuid libv4l
+    libxkbfile libXv zlib libXmu libXtst libXdamage
+    libXfixes libXrender
+    libjpeg_original_fix
+  ];
+  dontBuild = true;
+
+  installPhase = ''
+    ls -al ./
+    mkdir -p "$out/bin" "$out/lib" "$out/share"
+    cp -a lib/sky/* $out/bin/
+    cp -aR lib/sky/lib64/* "$out/lib/"
+    cp -a lib/sky/man.sh "$out/bin"
+    chmod +x $out/bin/sky
+    cp -a share/* "$out/share"
+  ''
+  ;
+
+
+  postFixup = ''
+    patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}:${stdenv.lib.makeLibraryPath buildInputs} $out/lib/libfreerdp-client.so.2.0.0
+    patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}:${stdenv.lib.makeLibraryPath buildInputs} $out/lib/libfreerdp-server.so.2.0.0
+    patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}:${stdenv.lib.makeLibraryPath buildInputs} $out/lib/libfreerdp-shadow.so.2.0.0
+    patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}:${stdenv.lib.makeLibraryPath buildInputs} $out/lib/libfreerdp.so.2.0.0
+    patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}:${stdenv.lib.makeLibraryPath buildInputs} $out/lib/libopenh264.so.0
+    patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}:${stdenv.lib.makeLibraryPath buildInputs} $out/lib/librdtk.so.1.1.0
+    patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}:${stdenv.lib.makeLibraryPath buildInputs} $out/lib/libSDL-1.3.so.0.0.0
+    patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}:${stdenv.lib.makeLibraryPath buildInputs} $out/lib/libsipw.so.1.0.0
+    patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}:${stdenv.lib.makeLibraryPath buildInputs} $out/lib/libwinpr.so.1.1.0
+    patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}:${stdenv.lib.makeLibraryPath buildInputs} $out/lib/libxfreerdp-client.so.2.0.0
+    patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}:${stdenv.lib.makeLibraryPath buildInputs} --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) $out/bin/sky
+    patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}:${stdenv.lib.makeLibraryPath buildInputs} --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) $out/bin/sky_sender
+    sed -i "s#/usr/bin/sky#$out/bin/sky#g" $out/share/applications/sky.desktop
+    sed -i "s#/usr/lib/sky#$out/bin/#g" $out/share/applications/sky.desktop
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Skype for business";
+    longDescription = ''
+      Lync & Skype for business on linux
+    '';
+    homepage = "https://tel.red/";
+    license = licenses.unfree;
+    maintainers = [ maintainers.Scriptkiddi ];
+    platforms = platforms.unix;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/skype-call-recorder/conference.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/skype-call-recorder/conference.patch
new file mode 100644
index 000000000000..8b8ce8fd7bbf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/skype-call-recorder/conference.patch
@@ -0,0 +1,148 @@
+From abd67f1d44eef81baf2e9729f95e002c4ecc7350 Mon Sep 17 00:00:00 2001
+From: jlh <jlh@gmx.ch>
+Date: Fri, 16 Oct 2009 17:40:54 +0200
+Subject: [PATCH] Rudimentary support for recording hosted conference calls
+
+---
+ call.cpp |   37 +++++++++++++++++++++++++++++++++++--
+ call.h   |   11 ++++++++++-
+ 2 files changed, 45 insertions(+), 3 deletions(-)
+
+diff --git a/call.cpp b/call.cpp
+index c2b02f2..663c1c1 100644
+--- a/call.cpp
++++ b/call.cpp
+@@ -90,9 +90,10 @@ void AutoSync::reset() {
+ 
+ // Call class
+ 
+-Call::Call(QObject *p, Skype *sk, CallID i) :
+-	QObject(p),
++Call::Call(CallHandler *h, Skype *sk, CallID i) :
++	QObject(h),
+ 	skype(sk),
++	handler(h),
+ 	id(i),
+ 	status("UNKNOWN"),
+ 	writer(NULL),
+@@ -119,6 +120,13 @@ Call::Call(QObject *p, Skype *sk, CallID i) :
+ 		debug(QString("Call %1: cannot get partner display name").arg(id));
+ 		displayName = "Unnamed Caller";
+ 	}
++
++	// Skype does not properly send updates when the CONF_ID property
++	// changes.  since we need this information, check it now on all calls
++	handler->updateConfIDs();
++	// this call isn't yet in the list of calls, thus we need to
++	// explicitely check its CONF_ID
++	updateConfID();
+ }
+ 
+ Call::~Call() {
+@@ -134,6 +142,10 @@ Call::~Call() {
+ 	// QT takes care of deleting servers and sockets
+ }
+ 
++void Call::updateConfID() {
++	confID = skype->getObject(QString("CALL %1 CONF_ID").arg(id)).toLong();
++}
++
+ bool Call::okToDelete() const {
+ 	// this is used for checking whether past calls may now be deleted.
+ 	// when a past call hasn't been decided yet whether it should have been
+@@ -270,6 +282,11 @@ void Call::startRecording(bool force) {
+ 	if (isRecording)
+ 		return;
+ 
++	if (handler->isConferenceRecording(confID)) {
++		debug(QString("Call %1: call is part of a conference that is already being recorded").arg(id));
++		return;
++	}
++
+ 	if (force) {
+ 		emit showLegalInformation();
+ 	} else {
+@@ -589,6 +606,22 @@ CallHandler::~CallHandler() {
+ 	delete legalInformationDialog;
+ }
+ 
++void CallHandler::updateConfIDs() {
++	QList<Call *> list = calls.values();
++	for (int i = 0; i < list.size(); i++)
++		list.at(i)->updateConfID();
++}
++
++bool CallHandler::isConferenceRecording(CallID id) const {
++	QList<Call *> list = calls.values();
++	for (int i = 0; i < list.size(); i++) {
++		Call *c = list.at(i);
++		if (c->getConfID() == id && c->getIsRecording())
++			return true;
++	}
++	return false;
++}
++
+ void CallHandler::callCmd(const QStringList &args) {
+ 	CallID id = args.at(0).toInt();
+ 
+diff --git a/call.h b/call.h
+index cb8396d..b746f46 100644
+--- a/call.h
++++ b/call.h
+@@ -43,6 +43,8 @@ class QTcpServer;
+ class QTcpSocket;
+ class LegalInformationDialog;
+ 
++class CallHandler;
++
+ typedef int CallID;
+ 
+ class AutoSync {
+@@ -68,18 +70,21 @@ private:
+ class Call : public QObject {
+ 	Q_OBJECT
+ public:
+-	Call(QObject *, Skype *, CallID);
++	Call(CallHandler *, Skype *, CallID);
+ 	~Call();
+ 	void startRecording(bool = false);
+ 	void stopRecording(bool = true);
++	void updateConfID();
+ 	bool okToDelete() const;
+ 	void setStatus(const QString &);
+ 	QString getStatus() const { return status; }
+ 	bool statusDone() const;
+ 	bool statusActive() const;
+ 	CallID getID() const { return id; }
++	CallID getConfID() const { return confID; }
+ 	void removeFile();
+ 	void hideConfirmation(int);
++	bool getIsRecording() const { return isRecording; }
+ 
+ signals:
+ 	void startedCall(int, const QString &);
+@@ -99,10 +104,12 @@ private:
+ 
+ private:
+ 	Skype *skype;
++	CallHandler *handler;
+ 	CallID id;
+ 	QString status;
+ 	QString skypeName;
+ 	QString displayName;
++	CallID confID;
+ 	AudioFileWriter *writer;
+ 	bool isRecording;
+ 	int stereo;
+@@ -140,6 +147,8 @@ class CallHandler : public QObject {
+ public:
+ 	CallHandler(QObject *, Skype *);
+ 	~CallHandler();
++	void updateConfIDs();
++	bool isConferenceRecording(CallID) const;
+ 	void callCmd(const QStringList &);
+ 
+ signals:
+-- 
+1.6.5.GIT
+
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/skype-call-recorder/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/skype-call-recorder/default.nix
new file mode 100644
index 000000000000..57d1ffece71a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/skype-call-recorder/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, cmake, lame, id3lib, libvorbis, qt4, libogg }:
+
+stdenv.mkDerivation {
+  name = "skype-call-recorder-0.8";
+  src = fetchurl {
+    url = "https://atdot.ch/scr/files/0.8/skype-call-recorder-0.8.tar.gz";
+    sha256 = "1iijkhq3aj9gr3bx6zl8ryvzkqcdhsm9yisimakwq0lnw0lgf5di";
+  };
+
+  # Keep an rpath reference to the used libogg
+  prePatch = ''
+    sed -i -e '/ADD_EXECUTABLE/aSET(LIBRARIES ''${LIBRARIES} ogg)' CMakeLists.txt
+  '';
+
+  # Better support for hosted conferences
+  patches = [ ./conference.patch ];
+
+  buildInputs = [ cmake lame id3lib libvorbis qt4 libogg ];
+  NIX_LDFLAGS = "-lvorbis";
+
+  meta = {
+    homepage = "http://atdot.ch/scr/";
+    description = "Open source tool to record your Skype calls on Linux";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = with stdenv.lib.platforms; linux;
+    maintainers = with stdenv.lib.maintainers; [viric];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/skypeforlinux/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/skypeforlinux/default.nix
new file mode 100644
index 000000000000..e7ba1e7f9aac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/skypeforlinux/default.nix
@@ -0,0 +1,120 @@
+{ stdenv, fetchurl, dpkg
+, alsaLib, atk, cairo, cups, curl, dbus, expat, fontconfig, freetype, gdk-pixbuf, glib, glibc, gnome2, gnome3
+, gtk3, libappindicator-gtk3, libnotify, libpulseaudio, libsecret, libv4l, nspr, nss, pango, systemd, wrapGAppsHook, xorg
+, at-spi2-atk, libuuid, at-spi2-core }:
+
+let
+
+  # Please keep the version x.y.0.z and do not update to x.y.76.z because the
+  # source of the latter disappears much faster.
+  version = "8.60.0.76";
+
+  rpath = stdenv.lib.makeLibraryPath [
+    alsaLib
+    atk
+    at-spi2-atk
+    at-spi2-core
+    cairo
+    cups
+    curl
+    dbus
+    expat
+    fontconfig
+    freetype
+    glib
+    glibc
+    libsecret
+    libuuid
+
+    gnome2.GConf
+    gdk-pixbuf
+    gtk3
+    libappindicator-gtk3
+
+    gnome3.gnome-keyring
+
+    libnotify
+    libpulseaudio
+    nspr
+    nss
+    pango
+    stdenv.cc.cc
+    systemd
+    libv4l
+
+    xorg.libxkbfile
+    xorg.libX11
+    xorg.libXcomposite
+    xorg.libXcursor
+    xorg.libXdamage
+    xorg.libXext
+    xorg.libXfixes
+    xorg.libXi
+    xorg.libXrandr
+    xorg.libXrender
+    xorg.libXtst
+    xorg.libXScrnSaver
+    xorg.libxcb
+  ] + ":${stdenv.cc.cc.lib}/lib64";
+
+  src =
+    if stdenv.hostPlatform.system == "x86_64-linux" then
+      fetchurl {
+        urls = [
+          "https://repo.skype.com/deb/pool/main/s/skypeforlinux/skypeforlinux_${version}_amd64.deb"
+          "https://mirror.cs.uchicago.edu/skype/pool/main/s/skypeforlinux/skypeforlinux_${version}_amd64.deb"
+          "https://web.archive.org/web/https://repo.skype.com/deb/pool/main/s/skypeforlinux/skypeforlinux_${version}_amd64.deb"
+        ];
+        sha256 = "1y919ki0c17vip90fln17impwky08qgprw0j1dgz239qqpwakn7a";
+      }
+    else
+      throw "Skype for linux is not supported on ${stdenv.hostPlatform.system}";
+
+in stdenv.mkDerivation {
+  pname = "skypeforlinux";
+  inherit version;
+
+  system = "x86_64-linux";
+
+  inherit src;
+
+  nativeBuildInputs = [
+    wrapGAppsHook
+    glib # For setup hook populating GSETTINGS_SCHEMA_PATH
+  ];
+
+  buildInputs = [ dpkg ];
+
+  dontUnpack = true;
+  installPhase = ''
+    mkdir -p $out
+    dpkg -x $src $out
+    cp -av $out/usr/* $out
+    rm -rf $out/opt $out/usr
+    rm $out/bin/skypeforlinux
+
+    ln -s "$out/share/skypeforlinux/skypeforlinux" "$out/bin/skypeforlinux"
+
+    # Otherwise it looks "suspicious"
+    chmod -R g-w $out
+  '';
+
+  postFixup = ''
+    for file in $(find $out -type f \( -perm /0111 -o -name \*.so\* -or -name \*.node\* \) ); do
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$file" || true
+      patchelf --set-rpath ${rpath}:$out/share/skypeforlinux $file || true
+    done
+
+    # Fix the desktop link
+    substituteInPlace $out/share/applications/skypeforlinux.desktop \
+      --replace /usr/bin/ $out/bin/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Linux client for skype";
+    homepage = "https://www.skype.com";
+    license = licenses.unfree;
+    maintainers = with stdenv.lib.maintainers; [ panaeon jraygauthier ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/slack-term/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/slack-term/default.nix
new file mode 100644
index 000000000000..c862c253c00a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/slack-term/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  # https://github.com/erroneousboat/slack-term
+  pname = "slack-term";
+  version = "0.5.0";
+
+  goPackagePath = "github.com/erroneousboat/slack-term";
+
+  src = fetchFromGitHub {
+    owner = "erroneousboat";
+    repo = "slack-term";
+    rev = "v${version}";
+    sha256 = "1fbq7bdhy70hlkklppimgdjamnk0v059pg73xm9ax1f4616ki1m6";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Slack client for your terminal";
+    homepage = "https://github.com/erroneousboat/slack-term";
+    license = licenses.mit;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/slack/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/slack/default.nix
new file mode 100644
index 000000000000..ad831eb82a59
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/slack/default.nix
@@ -0,0 +1,166 @@
+{ stdenv
+, fetchurl
+, dpkg
+, makeWrapper
+, nodePackages
+, alsaLib
+, at-spi2-atk
+, at-spi2-core
+, atk
+, cairo
+, cups
+, curl
+, dbus
+, expat
+, fontconfig
+, freetype
+, gdk-pixbuf
+, glib
+, gnome2
+, gtk3
+, libappindicator-gtk3
+, libnotify
+, libpulseaudio
+, libuuid
+, libxcb
+, nspr
+, nss
+, pango
+, systemd
+, xdg_utils
+, xorg
+}:
+
+let
+
+  pname = "slack";
+
+  inherit (stdenv.hostPlatform) system;
+
+  throwSystem = throw "Unsupported system: ${system}";
+
+  sha256 = {
+    x86_64-darwin = "09daxnqxyccshkrmr7ysgjvgvgmlgd590ym68fz0l8n6ayfpkgw0";
+    x86_64-linux = "00ihhsgxm441nsmav7pq4n4y9s7p2r4x5dqld160658xyqi836cq";
+  }.${system} or throwSystem;
+
+  version = {
+    x86_64-darwin = "4.6.0";
+    x86_64-linux = "4.4.3";
+  }.${system} or throwSystem;
+
+  meta = with stdenv.lib; {
+    description = "Desktop client for Slack";
+    homepage = "https://slack.com";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ mmahut ];
+    platforms = [ "x86_64-darwin" "x86_64-linux" ];
+  };
+
+  linux = stdenv.mkDerivation rec {
+    inherit pname meta version;
+    src = fetchurl {
+      url = "https://downloads.slack-edge.com/linux_releases/slack-desktop-${version}-amd64.deb";
+      inherit sha256;
+    };
+
+    rpath = stdenv.lib.makeLibraryPath [
+      alsaLib
+      at-spi2-atk
+      at-spi2-core
+      atk
+      cairo
+      cups
+      curl
+      dbus
+      expat
+      fontconfig
+      freetype
+      gdk-pixbuf
+      glib
+      gnome2.GConf
+      gtk3
+      libappindicator-gtk3
+      libnotify
+      libpulseaudio
+      libuuid
+      libxcb
+      nspr
+      nss
+      pango
+      stdenv.cc.cc
+      systemd
+      xorg.libX11
+      xorg.libXScrnSaver
+      xorg.libXcomposite
+      xorg.libXcursor
+      xorg.libXdamage
+      xorg.libXext
+      xorg.libXfixes
+      xorg.libXi
+      xorg.libXrandr
+      xorg.libXrender
+      xorg.libXtst
+      xorg.libxkbfile
+    ] + ":${stdenv.cc.cc.lib}/lib64";
+
+    buildInputs = [
+      gtk3  # needed for GSETTINGS_SCHEMAS_PATH
+    ];
+
+    nativeBuildInputs = [ dpkg makeWrapper nodePackages.asar ];
+
+    dontUnpack = true;
+    dontBuild = true;
+    dontPatchELF = true;
+
+    installPhase = ''
+      # The deb file contains a setuid binary, so 'dpkg -x' doesn't work here
+      dpkg --fsys-tarfile $src | tar --extract
+      rm -rf usr/share/lintian
+
+      mkdir -p $out
+      mv usr/* $out
+
+      # Otherwise it looks "suspicious"
+      chmod -R g-w $out
+
+      for file in $(find $out -type f \( -perm /0111 -o -name \*.so\* \) ); do
+        patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$file" || true
+        patchelf --set-rpath ${rpath}:$out/lib/slack $file || true
+      done
+
+      # Replace the broken bin/slack symlink with a startup wrapper
+      rm $out/bin/slack
+      makeWrapper $out/lib/slack/slack $out/bin/slack \
+        --prefix XDG_DATA_DIRS : $GSETTINGS_SCHEMAS_PATH \
+        --prefix PATH : ${xdg_utils}/bin
+
+      # Fix the desktop link
+      substituteInPlace $out/share/applications/slack.desktop \
+        --replace /usr/bin/ $out/bin/ \
+        --replace /usr/share/ $out/share/
+    '';
+  };
+
+  darwin = stdenv.mkDerivation rec {
+    inherit pname meta version;
+
+    phases = [ "installPhase" ];
+
+    src = fetchurl {
+      url = "https://downloads.slack-edge.com/mac_releases/Slack-${version}-macOS.dmg";
+      inherit sha256;
+    };
+
+    installPhase = ''
+      /usr/bin/hdiutil mount -nobrowse -mountpoint slack-mnt $src
+      mkdir -p $out/Applications
+      cp -r ./slack-mnt/Slack.app $out/Applications
+      /usr/bin/hdiutil unmount slack-mnt
+      defaults write com.tinyspeck.slackmacgap SlackNoAutoUpdates -bool YES
+    '';
+  };
+in if stdenv.isDarwin
+  then darwin
+  else linux
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/spectral/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/spectral/default.nix
new file mode 100644
index 000000000000..23659e8a6c9c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/spectral/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchgit
+, pkgconfig, wrapQtAppsHook
+, cmake
+, qtbase, qttools, qtquickcontrols2, qtmultimedia, qtkeychain
+, libpulseaudio
+# Not mentioned but seems needed
+, qtgraphicaleffects
+, qtdeclarative
+, qtmacextras
+, olm, libsecret, cmark
+}:
+
+let qtkeychain-qt5 = qtkeychain.override {
+  inherit qtbase qttools;
+  withQt5 = true;
+};
+in stdenv.mkDerivation rec {
+  pname = "spectral";
+  version = "817";
+
+  src = fetchgit {
+    url = "https://gitlab.com/spectral-im/spectral.git";
+    rev = version;
+    sha256 = "0lg0bkz621cmqb67kz1zmn4xwbspcqalz68byll5iszqz9y4gnp1";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ pkgconfig cmake wrapQtAppsHook ];
+  buildInputs = [ qtbase qtkeychain-qt5 qtquickcontrols2 qtmultimedia qtgraphicaleffects qtdeclarative olm libsecret cmark ]
+    ++ stdenv.lib.optional stdenv.hostPlatform.isLinux libpulseaudio
+    ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin qtmacextras;
+
+  meta = with stdenv.lib; {
+    description = "A glossy cross-platform Matrix client.";
+    homepage = "https://spectral.im";
+    license = licenses.gpl3;
+    platforms = with platforms; linux ++ darwin;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/stride/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/stride/default.nix
new file mode 100644
index 000000000000..895ad30360e9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/stride/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, fetchurl, dpkg, alsaLib, atk, cairo, cups, dbus, expat, fontconfig
+, freetype, gdk-pixbuf, glib, gnome2, nspr, nss, pango, udev, xorg }:
+let
+  fullPath = stdenv.lib.makeLibraryPath [
+    alsaLib
+    atk
+    cairo
+    cups
+    dbus
+    expat
+    fontconfig
+    freetype
+    gdk-pixbuf
+    glib
+    gnome2.GConf
+    gnome2.gtk
+    nspr
+    nss
+    pango
+    udev
+    xorg.libX11
+    xorg.libXScrnSaver
+    xorg.libXcomposite
+    xorg.libXcursor
+    xorg.libXdamage
+    xorg.libXext
+    xorg.libXfixes
+    xorg.libXi
+    xorg.libXrandr
+    xorg.libXrender
+    xorg.libXtst
+    xorg.libxcb
+  ] + ":${stdenv.cc.cc.lib}/lib64";
+in
+stdenv.mkDerivation rec {
+  version = "1.17.82";
+  pname = "stride";
+
+  src = fetchurl {
+    url = "https://packages.atlassian.com/stride-apt-client/pool/stride_${version}_amd64.deb";
+    sha256 = "0lx61gdhw0kv4f9fwbfg69yq52dsp4db7c4li25d6wn11qanzqhy";
+  };
+
+  dontBuild = true;
+  dontFixup = true;
+
+  buildInputs = [ dpkg ];
+
+  unpackPhase = ''
+    dpkg-deb -x ${src} ./
+  '';
+
+  installPhase =''
+    mkdir "$out"
+    mv usr/* "$out/"
+    patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${fullPath}:\$ORIGIN" \
+      "$out/bin/stride"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Desktop client for Atlassian Stride";
+    homepage = "https://www.stride.com/";
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ puffnfresh ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/default.nix
new file mode 100644
index 000000000000..953ce2809c43
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/default.nix
@@ -0,0 +1,44 @@
+{ mkDerivation, stdenv, fetchurl, pkgconfig, qttools, scons
+, GConf, avahi, boost, hunspell, libXScrnSaver, libedit, libidn, libnatpmp, libxml2
+, lua, miniupnpc, openssl, qtbase, qtmultimedia, qtsvg, qtwebkit, qtx11extras, zlib
+}:
+
+mkDerivation rec {
+  pname = "swift-im";
+  version = "4.0.2";
+
+  src = fetchurl {
+    url = "https://swift.im/downloads/releases/swift-${version}/swift-${version}.tar.gz";
+    sha256 = "0w0aiszjd58ynxpacwcgf052zpmbpcym4dhci64vbfgch6wryz0w";
+  };
+
+  patches = [ ./qt-5.11.patch ./scons.patch ];
+
+  nativeBuildInputs = [ pkgconfig qttools scons.py2 ];
+
+  buildInputs = [
+    GConf avahi boost hunspell libXScrnSaver libedit libidn libnatpmp libxml2
+    lua miniupnpc openssl qtbase qtmultimedia qtsvg qtwebkit qtx11extras zlib
+  ];
+
+  propagatedUserEnvPkgs = [ GConf ];
+
+  NIX_CFLAGS_COMPILE = toString [
+    "-I${libxml2.dev}/include/libxml2"
+    "-I${miniupnpc}/include/miniupnpc"
+    "-I${qtwebkit.dev}/include/QtWebKit"
+    "-I${qtwebkit.dev}/include/QtWebKitWidgets"
+    "-fpermissive"
+  ];
+
+  installTargets = [ (placeholder "out") ];
+  installFlags = [ "SWIFT_INSTALLDIR=${placeholder "out"}" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://swift.im/";
+    description = "Qt XMPP client";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/qt-5.11.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/qt-5.11.patch
new file mode 100644
index 000000000000..911e7570427f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/qt-5.11.patch
@@ -0,0 +1,10 @@
+--- a/Swift/QtUI/UserSearch/QtUserSearchWindow.h
++++ b/Swift/QtUI/UserSearch/QtUserSearchWindow.h
+@@ -8,6 +8,7 @@
+
+ #include <set>
+
++#include <QAbstractItemModel>
+ #include <QWizard>
+
+ #include <Swiften/Base/Override.h>
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/scons.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/scons.patch
new file mode 100644
index 000000000000..c63b05d7acb1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/scons.patch
@@ -0,0 +1,53 @@
+diff --git a/BuildTools/SCons/SConscript.boot b/BuildTools/SCons/SConscript.boot
+index 40f242513..53e1ff26a 100644
+--- a/BuildTools/SCons/SConscript.boot
++++ b/BuildTools/SCons/SConscript.boot
+@@ -508,6 +508,7 @@ if env.get("distcc", False) :
+         if var.startswith("DISTCC_") :
+             env["ENV"][var] = os.environ[var]
+ 
++env["ENV"] = os.environ
+ conf_env = env.Clone()
+ 
+ Export("env")
+diff --git a/BuildTools/SCons/SConstruct b/BuildTools/SCons/SConstruct
+index 70bffbcfe..fef281899 100644
+--- a/BuildTools/SCons/SConstruct
++++ b/BuildTools/SCons/SConstruct
+@@ -272,7 +272,7 @@ if env.get("try_gconf", True) and env["PLATFORM"] != "win32" and env["PLATFORM"]
+     gconf_env = conf_env.Clone()
+     conf = Configure(gconf_env, custom_tests = {"CheckPKG": CheckPKG})
+     if conf.CheckPKG("gconf-2.0") :
+-        gconf_bare_env = Environment()
++        gconf_bare_env = Environment(ENV = os.environ)
+         gconf_bare_env.ParseConfig('pkg-config --cflags gconf-2.0 gobject-2.0 --libs gconf-2.0 gobject-2.0')
+         if os.path.basename(env["CXX"]).startswith(("g++", "clang++")) :
+             gconf_bare_env["CCFLAGS"] = [("-isystem" + ccflag) for ccflag in gconf_bare_env["CPPPATH"]]
+@@ -634,9 +634,9 @@ hunspell_env.MergeFlags(hunspell_flags)
+ env["HAVE_HUNSPELL"] = 0;
+ if env.get("hunspell_enable", False) :
+     hunspell_conf = Configure(hunspell_env)
+-    if hunspell_conf.CheckCXXHeader("hunspell/hunspell.hxx") and hunspell_conf.CheckLib("hunspell") :
++    if hunspell_conf.CheckCXXHeader("hunspell/hunspell.hxx") and hunspell_conf.CheckLib("hunspell-1.6") :
+         env["HAVE_HUNSPELL"] = 1
+-        hunspell_flags["LIBS"] = ["hunspell"]
++        hunspell_flags["LIBS"] = ["hunspell-1.6"]
+         env["HUNSPELL_FLAGS"] = hunspell_flags
+     hunspell_conf.Finish()
+ 
+diff --git a/BuildTools/SCons/Tools/textfile.py b/BuildTools/SCons/Tools/textfile.py
+index 89f8963dc..b8559f7a6 100644
+--- a/BuildTools/SCons/Tools/textfile.py
++++ b/BuildTools/SCons/Tools/textfile.py
+@@ -113,7 +113,10 @@ def _action(target, source, env):
+     lsep = None
+     for s in source:
+         if lsep: fd.write(lsep)
+-        fd.write(_do_subst(s, subs))
++        b = _do_subst(s, subs)
++        if isinstance(b, unicode):
++            b = b.encode('UTF-8')
++        fd.write(b)
+         lsep = linesep
+     fd.close()
+ 
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/teams/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/teams/default.nix
new file mode 100644
index 000000000000..6b5acd8344a8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/teams/default.nix
@@ -0,0 +1,85 @@
+{ lib
+, stdenv
+, fetchurl
+, autoPatchelfHook
+, wrapGAppsHook
+, dpkg
+, atomEnv
+, libuuid
+, pulseaudio
+, at-spi2-atk
+, coreutils
+, gawk
+, xdg_utils
+, systemd }:
+
+stdenv.mkDerivation rec {
+  pname = "teams";
+  version = "1.3.00.5153";
+
+  src = fetchurl {
+    url = "https://packages.microsoft.com/repos/ms-teams/pool/main/t/teams/teams_${version}_amd64.deb";
+    sha256 = "13c7fmij0gcg6mrjjj2mhs21q7fzdssscwhihzyrmbmj64cd0a69";
+  };
+
+  nativeBuildInputs = [ dpkg autoPatchelfHook wrapGAppsHook ];
+
+  unpackCmd = "dpkg -x $curSrc .";
+
+  buildInputs = atomEnv.packages ++ [
+    libuuid
+    at-spi2-atk
+  ];
+
+  runtimeDependencies = [
+    systemd.lib
+    pulseaudio
+  ];
+
+  preFixup = ''
+    gappsWrapperArgs+=(--prefix PATH : "${coreutils}/bin:${gawk}/bin:${xdg_utils}/bin")
+  '';
+
+  installPhase = ''
+    mkdir -p $out/{opt,bin}
+
+    mv share/teams $out/opt/
+    mv share $out/share
+
+    substituteInPlace $out/share/applications/teams.desktop \
+      --replace /usr/bin/ $out/bin/
+
+    ln -s $out/opt/teams/teams $out/bin/
+  '';
+
+  dontAutoPatchelf = true;
+
+  # Includes runtimeDependencies in the RPATH of the included Node modules
+  # so that dynamic loading works. We cannot use directly runtimeDependencies
+  # here, since the libraries from runtimeDependencies are not propagated 
+  # to the dynamically loadable node modules because of a condition in
+  # autoPatchElfHook since *.node modules have Type: DYN (Shared object file) 
+  # instead of EXEC or INTERP it expects.
+  # Fixes: https://github.com/NixOS/nixpkgs/issues/85449
+  postFixup = ''
+    autoPatchelf "$out"
+
+    runtime_rpath="${lib.makeLibraryPath runtimeDependencies}"
+
+    for mod in $(find "$out/opt/teams" -name '*.node'); do
+      mod_rpath="$(patchelf --print-rpath "$mod")"
+
+      echo "Adding runtime dependencies to RPATH of Node module $mod"
+      patchelf --set-rpath "$runtime_rpath:$mod_rpath" "$mod"
+    done;
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Microsoft Teams";
+    homepage = "https://teams.microsoft.com";
+    downloadPage = "https://teams.microsoft.com/downloads";
+    license = licenses.unfree;
+    maintainers = [ maintainers.liff ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/teamspeak/client.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/teamspeak/client.nix
new file mode 100644
index 000000000000..7d2586c67081
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/teamspeak/client.nix
@@ -0,0 +1,148 @@
+{ stdenv, fetchurl, makeWrapper, makeDesktopItem, zlib, glib, libpng, freetype, openssl
+, xorg, fontconfig, qtbase, qtwebengine, qtwebchannel, qtsvg, qtwebsockets, xkeyboard_config
+, alsaLib, libpulseaudio ? null, libredirect, quazip, which, unzip, llvmPackages, writeShellScriptBin
+}:
+
+let
+
+  arch = if stdenv.is64bit then "amd64" else "x86";
+
+  libDir = if stdenv.is64bit then "lib64" else "lib";
+
+  deps =
+    [ zlib glib libpng freetype xorg.libSM xorg.libICE xorg.libXrender openssl
+      xorg.libXrandr xorg.libXfixes xorg.libXcursor xorg.libXinerama
+      xorg.libxcb fontconfig xorg.libXext xorg.libX11 alsaLib qtbase qtwebengine qtwebchannel qtsvg
+      qtwebsockets libpulseaudio quazip llvmPackages.libcxx llvmPackages.libcxxabi
+    ];
+
+  desktopItem = makeDesktopItem {
+    name = "teamspeak";
+    exec = "ts3client";
+    icon = "teamspeak";
+    comment = "The TeamSpeak voice communication tool";
+    desktopName = "TeamSpeak";
+    genericName = "TeamSpeak";
+    categories = "Network";
+  };
+
+  fakeLess = writeShellScriptBin "less" "cat";
+
+in
+
+stdenv.mkDerivation rec {
+  pname = "teamspeak-client";
+
+  version = "3.5.3";
+
+  src = fetchurl {
+    url = "https://files.teamspeak-services.com/releases/client/${version}/TeamSpeak3-Client-linux_${arch}-${version}.run";
+    sha256 = if stdenv.is64bit
+                then "0fp9v2rkxf0zgvf3wcx8nsmf93bzdc22xlqxk3r8cb0415adp76a"
+                else "0ni7hijprc8xygyz41568f1m9wwhl8lk5c3q28bm9m5r6qym39l6";
+  };
+
+  # grab the plugin sdk for the desktop icon
+  pluginsdk = fetchurl {
+    url = "http://dl.4players.de/ts/client/pluginsdk/pluginsdk_3.1.1.1.zip";
+    sha256 = "1bywmdj54glzd0kffvr27r84n4dsd0pskkbmh59mllbxvj0qwy7f";
+  };
+
+  nativeBuildInputs = [ makeWrapper fakeLess which unzip ];
+
+  unpackPhase =
+    ''
+      echo -e '\ny' | sh -xe $src
+      cd TeamSpeak*
+    '';
+
+  buildPhase =
+    ''
+      mv ts3client_linux_${arch} ts3client
+      echo "patching ts3client..."
+      patchelf --replace-needed libquazip.so ${quazip}/lib/libquazip5.so ts3client
+      patchelf \
+        --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        --set-rpath ${stdenv.lib.makeLibraryPath deps}:$(cat $NIX_CC/nix-support/orig-cc)/${libDir} \
+        --force-rpath \
+        ts3client
+    '';
+
+  installPhase =
+    ''
+      # Delete unecessary libraries - these are provided by nixos.
+      rm *.so.* *.so
+      rm QtWebEngineProcess
+      rm qt.conf
+      rm -r platforms # contains libqxcb.so
+
+      # Install files.
+      mkdir -p $out/lib/teamspeak
+      mv * $out/lib/teamspeak/
+
+      # Make a desktop item
+      mkdir -p $out/share/applications/ $out/share/icons/
+      unzip ${pluginsdk}
+      cp pluginsdk/docs/client_html/images/logo.png $out/share/icons/teamspeak.png
+      cp ${desktopItem}/share/applications/* $out/share/applications/
+
+      # Make a symlink to the binary from bin.
+      mkdir -p $out/bin/
+      ln -s $out/lib/teamspeak/ts3client $out/bin/ts3client
+
+      wrapProgram $out/bin/ts3client \
+        --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
+        --set QT_PLUGIN_PATH "${qtbase}/${qtbase.qtPluginPrefix}" \
+        --set NIX_REDIRECTS /usr/share/X11/xkb=${xkeyboard_config}/share/X11/xkb
+    '';
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  meta = {
+    description = "The TeamSpeak voice communication tool";
+    homepage = "https://teamspeak.com/";
+    license = {
+      fullName = "Teamspeak client license";
+      url = "http://sales.teamspeakusa.com/licensing.php";
+      free = false;
+    };
+    maintainers = [ stdenv.lib.maintainers.lhvwb ];
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
+
+/*
+License issues:
+Date: Mon, 10 Dec 2007 19:55:16 -0500
+From: TeamSpeak Sales <sales@tritoncia.com>
+To: 'Marc Weber' <marco-oweber@gmx.de>
+Subject: RE: teamspeak on nix?
+
+Yes, that would be fine.  As long as you are not renting servers or selling
+TeamSpeak then you are more than welcome to distribute it.
+
+Thank you,
+
+TeamSpeak Sales Team
+________________________________
+e-Mail: sales@tritoncia.com
+TeamSpeak: http://www.TeamSpeak.com
+Account Login: https://sales.TritonCIA.com/users
+
+
+
+-----Original Message-----
+From: Marc Weber [mailto:marco-oweber@gmx.de]
+Sent: Monday, December 10, 2007 5:03 PM
+To: sales@tritoncia.com
+Subject: teamspeak on nix?
+
+Hello,
+
+nix is very young software distribution system (http://nix.cs.uu.nl/)
+I'd like to ask wether you permit us to add teamspeak (server/ client?)
+
+Sincerly
+Marc Weber (small nix contributor)
+*/
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/teamspeak/server.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/teamspeak/server.nix
new file mode 100644
index 000000000000..761d7cfcbd4b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/teamspeak/server.nix
@@ -0,0 +1,96 @@
+{ stdenv, fetchurl, autoPatchelfHook, writeScript }:
+
+let
+  arch = if stdenv.is64bit then "amd64" else "x86";
+in stdenv.mkDerivation rec {
+  pname = "teamspeak-server";
+  version = "3.12.1";
+
+  src = fetchurl {
+    url = "https://files.teamspeak-services.com/releases/server/${version}/teamspeak3-server_linux_${arch}-${version}.tar.bz2";
+    sha256 = if stdenv.is64bit
+      then "1dxbnk12ry6arn1p38hpv5jfak55pmfmxkkl7aihn3sp1aizpgyg"
+      else "0nfzx7pbzd95a7v08g29l84sc0lnv9fx8vz3mrmzhs0xqn9gxdkq";
+  };
+
+  buildInputs = [ stdenv.cc.cc ];
+
+  nativeBuildInputs = [ autoPatchelfHook ];
+
+  installPhase = ''
+    # Install files.
+    mkdir -p $out/lib/teamspeak
+    mv * $out/lib/teamspeak/
+
+    # Make symlinks to the binaries from bin.
+    mkdir -p $out/bin/
+    ln -s $out/lib/teamspeak/ts3server $out/bin/ts3server
+    ln -s $out/lib/teamspeak/tsdns/tsdnsserver $out/bin/tsdnsserver
+  '';
+
+  passthru.updateScript = writeScript "update-teampeak-server" ''
+    #!/usr/bin/env nix-shell
+    #!nix-shell -i bash -p common-updater-scripts curl gnugrep gnused
+
+    set -eu -o pipefail
+
+    version=$( \
+        curl -s "https://www.teamspeak.de/download/teamspeak-3-amd64-server-linux/" \
+        | grep softwareVersion \
+        | sed -E -e 's/^.*<span itemprop="softwareVersion">([^<]+)<\/span>.*$/\1/' \
+    )
+
+    versionOld=$(nix-instantiate --eval --strict -A "teamspeak_server.version")
+
+    nixFile=pkgs/applications/networking/instant-messengers/teamspeak/server.nix
+
+    update-source-version teamspeak_server "$version" --system=i686-linux
+
+    sed -i -e "s/version = \"$version\";/version = $versionOld;/" "$nixFile"
+
+    update-source-version teamspeak_server "$version" --system=x86_64-linux
+  '';
+
+  meta = with stdenv.lib; {
+    description = "TeamSpeak voice communication server";
+    homepage = "https://teamspeak.com/";
+    license = licenses.unfreeRedistributable;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ arobyn gerschtli ];
+  };
+}
+
+/*
+License issues:
+Date: Mon, 10 Dec 2007 19:55:16 -0500
+From: TeamSpeak Sales <sales@tritoncia.com>
+To: 'Marc Weber' <marco-oweber@gmx.de>
+Subject: RE: teamspeak on nix?
+
+Yes, that would be fine.  As long as you are not renting servers or selling
+TeamSpeak then you are more than welcome to distribute it.
+
+Thank you,
+
+TeamSpeak Sales Team
+________________________________
+e-Mail: sales@tritoncia.com
+TeamSpeak: http://www.TeamSpeak.com
+Account Login: https://sales.TritonCIA.com/users
+
+
+
+-----Original Message-----
+From: Marc Weber [mailto:marco-oweber@gmx.de]
+Sent: Monday, December 10, 2007 5:03 PM
+To: sales@tritoncia.com
+Subject: teamspeak on nix?
+
+Hello,
+
+nix is very young software distribution system (http://nix.cs.uu.nl/)
+I'd like to ask wether you permit us to add teamspeak (server/ client?)
+
+Sincerly
+Marc Weber (small nix contributor)
+*/
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix
new file mode 100644
index 000000000000..cfb41fa9fc52
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix
@@ -0,0 +1,50 @@
+{ mkDerivation, lib, fetchFromGitHub, pkg-config, python3, cmake, ninja
+, qtbase, qtimageformats, libsForQt5, hunspell, xdg_utils, ffmpeg_3, openalSoft
+, lzma, lz4, xxHash, zlib, minizip, openssl, libtgvoip, microsoft_gsl, tl-expected
+, range-v3
+}:
+
+with lib;
+
+mkDerivation rec {
+  pname = "kotatogram-desktop";
+  version = "1.2";
+
+  src = fetchFromGitHub {
+    owner = "kotatogram";
+    repo = "kotatogram-desktop";
+    rev = "k${version}";
+    sha256 = "00pdx3cjhrihf7ihhmszcf159jrzn1bcx20vwiiizs5r1qk8l210";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ pkg-config python3 cmake ninja ];
+
+  buildInputs = [
+    qtbase qtimageformats ffmpeg_3 openalSoft lzma lz4 xxHash libsForQt5.libdbusmenu
+    zlib minizip openssl hunspell libtgvoip microsoft_gsl tl-expected range-v3
+  ];
+
+  qtWrapperArgs = [
+    "--prefix PATH : ${xdg_utils}/bin"
+  ];
+
+  cmakeFlags = [
+    "-DTDESKTOP_API_TEST=ON"
+    "-DDESKTOP_APP_USE_PACKAGED_RLOTTIE=OFF"
+    "-DDESKTOP_APP_USE_PACKAGED_VARIANT=OFF"
+  ];
+
+  meta = {
+    description = "Kotatogram – experimental Telegram Desktop fork";
+    longDescription = ''
+      Unofficial desktop client for the Telegram messenger, based on Telegram Desktop.
+
+      It contains some useful (or purely cosmetic) features, but they could be unstable. A detailed list is available here: https://kotatogram.github.io/changes
+    '';
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    homepage = "https://kotatogram.github.io";
+    maintainers = with maintainers; [ ilya-fedin ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
new file mode 100644
index 000000000000..d4493355951f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
@@ -0,0 +1,107 @@
+{ mkDerivation, lib, fetchurl, fetchsvn
+, pkgconfig, cmake, ninja, python3, wrapGAppsHook, wrapQtAppsHook
+, qtbase, qtimageformats, gtk3, libsForQt5, enchant2, lz4, xxHash
+, dee, ffmpeg, openalSoft, minizip, libopus, alsaLib, libpulseaudio, range-v3
+, tl-expected, hunspell
+# TODO: Shouldn't be required:
+, pcre, xorg, utillinux, libselinux, libsepol, epoxy, at-spi2-core, libXtst
+, xdg_utils
+}:
+
+with lib;
+
+# Main reference:
+# - This package was originally based on the Arch package but all patches are now upstreamed:
+#   https://git.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/telegram-desktop
+# Other references that could be useful:
+# - https://git.alpinelinux.org/aports/tree/testing/telegram-desktop/APKBUILD
+# - https://github.com/void-linux/void-packages/blob/master/srcpkgs/telegram-desktop/template
+
+mkDerivation rec {
+  pname = "telegram-desktop";
+  version = "2.1.11";
+
+  # Telegram-Desktop with submodules
+  src = fetchurl {
+    url = "https://github.com/telegramdesktop/tdesktop/releases/download/v${version}/tdesktop-${version}-full.tar.gz";
+    sha256 = "1sd6nrcjg5gpq6ynvwnz8f4jz8flknybx6b0pfxqrqqpzy7wjl5m";
+  };
+
+  postPatch = ''
+    substituteInPlace Telegram/lib_spellcheck/spellcheck/platform/linux/linux_enchant.cpp \
+      --replace '"libenchant-2.so.2"' '"${enchant2}/lib/libenchant-2.so.2"'
+    substituteInPlace Telegram/CMakeLists.txt \
+      --replace '"''${TDESKTOP_LAUNCHER_BASENAME}.appdata.xml"' '"''${TDESKTOP_LAUNCHER_BASENAME}.metainfo.xml"'
+  '';
+
+  # We want to run wrapProgram manually (with additional parameters)
+  dontWrapGApps = true;
+  dontWrapQtApps = true;
+
+  nativeBuildInputs = [ pkgconfig cmake ninja python3 wrapGAppsHook wrapQtAppsHook ];
+
+  buildInputs = [
+    qtbase qtimageformats gtk3 libsForQt5.libdbusmenu enchant2 lz4 xxHash
+    dee ffmpeg openalSoft minizip libopus alsaLib libpulseaudio range-v3
+    tl-expected hunspell
+    # TODO: Shouldn't be required:
+    pcre xorg.libpthreadstubs xorg.libXdmcp utillinux libselinux libsepol epoxy at-spi2-core libXtst
+  ];
+
+  enableParallelBuilding = true;
+
+  cmakeFlags = [
+    "-Ddisable_autoupdate=ON"
+    # TODO: Officiall API credentials for Nixpkgs
+    # (see: https://github.com/NixOS/nixpkgs/issues/55271):
+    "-DTDESKTOP_API_TEST=ON"
+    "-DDESKTOP_APP_USE_PACKAGED_RLOTTIE=OFF"
+    "-DDESKTOP_APP_USE_PACKAGED_VARIANT=OFF"
+    "-DDESKTOP_APP_USE_PACKAGED_GSL=OFF"
+    "-DTDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME=ON"
+    "-DTDESKTOP_USE_PACKAGED_TGVOIP=OFF"
+    #"-DDESKTOP_APP_SPECIAL_TARGET=\"\"" # TODO: Error when set to "": Bad special target '""'
+    "-DTDESKTOP_LAUNCHER_BASENAME=telegramdesktop" # Note: This is the default
+  ];
+
+  # Note: The following packages could be packaged system-wide, but it's
+  # probably best to use the bundled ones from tdesktop (Arch does this too):
+  # rlottie:
+  # - CMake flag: "-DTDESKTOP_USE_PACKAGED_TGVOIP=ON"
+  # - Sources (problem: there are no stable releases!):
+  #   - desktop-app (tdesktop): https://github.com/desktop-app/rlottie
+  #   - upstream: https://github.com/Samsung/rlottie
+  # libtgvoip:
+  # - CMake flag: "-DDESKTOP_APP_USE_PACKAGED_RLOTTIE=ON"
+  # - Sources  (problem: the stable releases might be too old!):
+  #   - tdesktop: https://github.com/telegramdesktop/libtgvoip
+  #   - upstream: https://github.com/grishka/libtgvoip
+  # Both of these packages are included in this PR (kotatogram-desktop):
+  # https://github.com/NixOS/nixpkgs/pull/75210
+  # TODO: Package mapbox-variant
+
+  postFixup = ''
+    # This is necessary to run Telegram in a pure environment.
+    # We also use gappsWrapperArgs from wrapGAppsHook.
+    wrapProgram $out/bin/telegram-desktop \
+      "''${gappsWrapperArgs[@]}" \
+      "''${qtWrapperArgs[@]}" \
+      --prefix PATH : ${xdg_utils}/bin \
+      --set XDG_RUNTIME_DIR "XDG-RUNTIME-DIR"
+    sed -i $out/bin/telegram-desktop \
+      -e "s,'XDG-RUNTIME-DIR',\"\''${XDG_RUNTIME_DIR:-/run/user/\$(id --user)}\","
+  '';
+
+  meta = {
+    description = "Telegram Desktop messaging app";
+    longDescription = ''
+      Desktop client for the Telegram messenger, based on the Telegram API and
+      the MTProto secure protocol.
+    '';
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    homepage = "https://desktop.telegram.org/";
+    changelog = "https://github.com/telegramdesktop/tdesktop/releases/tag/v{version}";
+    maintainers = with maintainers; [ primeos abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/gabble/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/gabble/default.nix
new file mode 100644
index 000000000000..d81af8388aac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/gabble/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pkgconfig, libxslt, telepathy-glib, libxml2, dbus-glib, dbus
+, sqlite, libsoup, libnice, gnutls}:
+
+stdenv.mkDerivation rec {
+  name = "telepathy-gabble-0.18.4";
+
+  src = fetchurl {
+    url = "https://telepathy.freedesktop.org/releases/telepathy-gabble/${name}.tar.gz";
+    sha256 = "174nlkqm055vrhv11gy73m20jbsggcb0ddi51c7s9m3j5ibr2p0i";
+  };
+
+  nativeBuildInputs = [ pkgconfig libxslt ];
+  buildInputs = [ libxml2 dbus-glib sqlite libsoup libnice telepathy-glib gnutls telepathy-glib.python ];
+
+  checkInputs = [ dbus.daemon ];
+
+  configureFlags = [ "--with-ca-certificates=/etc/ssl/certs/ca-certificates.crt" ];
+
+  enableParallelBuilding = true;
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://telepathy.freedesktop.org/components/telepathy-gabble/";
+    description = "Jabber/XMPP connection manager for the Telepathy framework";
+    license = licenses.lgpl21Plus;
+    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/haze/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/haze/default.nix
new file mode 100644
index 000000000000..6d4ff62f22a8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/haze/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, fetchpatch, pidgin, telepathy-glib, glib, dbus-glib, pkgconfig, libxslt }:
+
+stdenv.mkDerivation rec {
+  pname = "telepathy-haze";
+  name = "${pname}-0.8.0";
+
+  src = fetchurl {
+    url = "https://telepathy.freedesktop.org/releases/${pname}/${name}.tar.gz";
+    sha256 = "1jgrp32p6rllj089ynbsk3n9xrvsvzmwzhf0ql05kkgj0nf08xiy";
+  };
+
+  buildInputs = [ glib telepathy-glib dbus-glib pidgin telepathy-glib.python ];
+
+  nativeBuildInputs = [ pkgconfig libxslt ];
+
+  patches = [
+    # Patch from Gentoo that helps telepathy-haze build with more
+    # recent versions of pidgin.
+    (fetchpatch {
+      url = "https://raw.githubusercontent.com/gentoo/gentoo/master/net-voip/telepathy-haze/files/telepathy-haze-0.8.0-pidgin-2.10.12-compat.patch";
+      sha256 = "0fa1p4n1559qd096w7ya4kvfnc1c98ykarkxzlpkwvzbczwzng3c";
+    })
+  ];
+
+  meta = {
+    description = "A Telepathy connection manager based on libpurple";
+    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux; # Random choice
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/idle/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/idle/default.nix
new file mode 100644
index 000000000000..f3d1e6cfd750
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/idle/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, glib, dconf, pkgconfig, dbus-glib, telepathy-glib, libxslt, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "telepathy-idle";
+  version = "0.2.0";
+
+  src = fetchurl {
+    url = "http://telepathy.freedesktop.org/releases/${pname}/${pname}-${version}.tar.gz";
+    sha256 = "1argdzbif1vdmwp5vqbgkadq9ancjmgdm2ncp0qfckni715ss4rh";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ glib telepathy-glib dbus-glib libxslt telepathy-glib.python (stdenv.lib.getLib dconf) makeWrapper ];
+
+  preFixup = ''
+    wrapProgram "$out/libexec/telepathy-idle" \
+      --prefix GIO_EXTRA_MODULES : "${stdenv.lib.getLib dconf}/lib/gio/modules"
+  '';
+
+  meta = {
+    description = "IRC connection manager for the Telepathy framework";
+    license = stdenv.lib.licenses.lgpl21;
+    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/logger/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/logger/default.nix
new file mode 100644
index 000000000000..f8e1f1f2c665
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/logger/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, dbus-glib, libxml2, sqlite, telepathy-glib, pkgconfig
+, dconf, makeWrapper, intltool, libxslt, gobject-introspection, dbus }:
+
+stdenv.mkDerivation rec {
+  project = "telepathy-logger";
+  name = "${project}-0.8.2";
+
+  src = fetchurl {
+    url = "https://telepathy.freedesktop.org/releases/${project}/${name}.tar.bz2";
+    sha256 = "1bjx85k7jyfi5pvl765fzc7q2iz9va51anrc2djv7caksqsdbjlg";
+  };
+
+  nativeBuildInputs = [
+    makeWrapper pkgconfig intltool libxslt gobject-introspection
+  ];
+  buildInputs = [
+    dbus-glib libxml2 sqlite telepathy-glib
+    dbus telepathy-glib.python
+  ];
+
+  configureFlags = [ "--enable-call" ];
+
+  preFixup = ''
+    wrapProgram "$out/libexec/telepathy-logger" \
+      --prefix GIO_EXTRA_MODULES : "${stdenv.lib.getLib dconf}/lib/gio/modules" \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Logger service for Telepathy framework";
+    homepage = "https://telepathy.freedesktop.org/components/telepathy-logger/";
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ jtojnar ];
+    platforms = platforms.gnu ++ platforms.linux; # Arbitrary choice
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/mission-control/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/mission-control/default.nix
new file mode 100644
index 000000000000..a6e74443f291
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/mission-control/default.nix
@@ -0,0 +1,64 @@
+{ stdenv
+, fetchurl
+, fetchpatch
+, pkgconfig
+, dconf
+, telepathy-glib
+, python3
+, libxslt
+, makeWrapper
+}:
+
+stdenv.mkDerivation rec {
+  pname = "telepathy-mission-control";
+  version = "5.16.5";
+
+  outputs = [ "out" "lib" "dev" ];
+
+  src = fetchurl {
+    url = "https://telepathy.freedesktop.org/releases/${pname}/${pname}-${version}.tar.gz";
+    sha256 = "00xxv38cfdirnfvgyd56m60j0nkmsv5fz6p2ydyzsychicxl6ssc";
+  };
+
+  patches = [
+    # Fix property name (new GLib is stricter)
+    # https://github.com/NixOS/nixpkgs/pull/81626#issuecomment-601494939
+    # https://gitlab.gnome.org/GNOME/polari/-/merge_requests/141
+    (fetchpatch {
+      url = "https://github.com/TelepathyIM/telepathy-mission-control/commit/d8dab08fe8db137c6bbd8bbdc3d9b01d98c48910.patch";
+      sha256 = "1rchl0lyfj5c3yhl63spzvx9b6ny3967dlq4hgp9qhqn0zjra3sb";
+    })
+  ];
+
+  buildInputs = [
+    python3
+  ]; # ToDo: optional stuff missing
+
+  nativeBuildInputs = [
+    pkgconfig
+    libxslt
+    makeWrapper
+  ];
+
+  propagatedBuildInputs = [
+    telepathy-glib
+  ];
+
+  doCheck = true;
+
+  enableParallelBuilding = true;
+
+  preFixup = ''
+    wrapProgram "$lib/libexec/mission-control-5" \
+      --prefix GIO_EXTRA_MODULES : "${stdenv.lib.getLib dconf}/lib/gio/modules" \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An account manager and channel dispatcher for the Telepathy framework";
+    homepage = "https://telepathy.freedesktop.org/components/telepathy-mission-control/";
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ jtojnar ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/salut/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/salut/default.nix
new file mode 100644
index 000000000000..6513c6324a61
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/salut/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, libxslt, glib, libxml2, telepathy-glib, avahi, libsoup
+, libuuid, openssl, pcre, sqlite, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "telepathy-salut";
+  name = "${pname}-0.8.1";
+
+  src = fetchurl {
+    url = "https://telepathy.freedesktop.org/releases/${pname}/${name}.tar.gz";
+    sha256 = "13k112vrr3zghzr03pnbqc1id65qvpj0sn0virlbf4dmr2511fbh";
+  };
+
+  # pcre needed because https://github.com/NixOS/nixpkgs/pull/15046
+  buildInputs = [ glib libxml2 telepathy-glib avahi libsoup libuuid openssl
+    sqlite pcre telepathy-glib.python ];
+
+  nativeBuildInputs = [ libxslt pkgconfig ];
+
+  configureFlags = [ "--disable-avahi-tests" ];
+
+  meta = with stdenv.lib; {
+    description = "Link-local XMPP connection manager for Telepathy";
+    platforms = platforms.gnu ++ platforms.linux; # Random choice
+    maintainers = [ maintainers.lethalman ];
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/tensor/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/tensor/default.nix
new file mode 100644
index 000000000000..1ea249a8b51b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/tensor/default.nix
@@ -0,0 +1,56 @@
+{ mkDerivation, stdenv, fetchgit, qtbase, qtquickcontrols, qmake, makeDesktopItem }:
+
+# we now have libqmatrixclient so a future version of tensor that supports it
+# should use that
+
+mkDerivation rec {
+  pname = "tensor-git";
+  version = "2017-02-21";
+
+  src = fetchgit {
+    url             = "https://github.com/davidar/tensor.git";
+    rev             = "f3f3056d770d7fb4a21c610cee7936ee900569f5";
+    sha256          = "19in8c7a2hxsx2c4lj540w5c3pn1882645m21l91mcriynqr67k9";
+    fetchSubmodules = true;
+  };
+
+  enableParallelBuilding = true;
+
+  buildInputs = [ qtbase qtquickcontrols ];
+  nativeBuildInputs = [ qmake ];
+
+  desktopItem = makeDesktopItem {
+    name        = "tensor";
+    exec        = "@bin@";
+    icon        = "tensor.png";
+    comment     = meta.description;
+    desktopName = "Tensor Matrix Client";
+    genericName = meta.description;
+    categories  = "Chat;Utility";
+    mimeType    = "application/x-chat";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm755 tensor $out/bin/tensor
+    install -Dm644 client/logo.png \
+                   $out/share/icons/hicolor/512x512/apps/tensor.png
+    install -Dm644 ${desktopItem}/share/applications/tensor.desktop \
+                   $out/share/applications/tensor.desktop
+
+    substituteInPlace $out/share/applications/tensor.desktop \
+      --subst-var-by bin $out/bin/tensor
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://matrix.org/docs/projects/client/tensor.html";
+    description = "Cross-platform Qt5/QML-based Matrix client";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ peterhoeg ];
+    inherit (qtbase.meta) platforms;
+    inherit version;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/torchat/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/torchat/default.nix
new file mode 100644
index 000000000000..8231f481ee0d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/torchat/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, python, unzip, wxPython, wrapPython, tor }:
+stdenv.mkDerivation rec {
+
+  pname = "torchat";
+  version = "0.9.9.553";
+
+  src = fetchurl {
+    url = "https://github.com/prof7bit/TorChat/archive/${version}.tar.gz";
+    sha256 = "0rb4lvv40pz6ab5kxq40ycvh7kh1yxn7swzgv2ff2nbhi62xnzp0";
+  };
+
+  buildInputs = [ python unzip wxPython wrapPython ];
+  pythonPath = [ wxPython ];
+
+  preConfigure = "cd torchat/src; rm portable.txt";
+
+  installPhase = ''
+    substituteInPlace "Tor/tor.sh" --replace "tor -f" "${tor}/bin/tor -f"
+
+    wrapPythonPrograms
+
+    mkdir -p $out/lib/torchat
+    cp -rf * $out/lib/torchat
+    makeWrapper ${python}/bin/python $out/bin/torchat \
+        --set PYTHONPATH $out/lib/torchat:$program_PYTHONPATH \
+        --run "cd $out/lib/torchat" \
+        --add-flags "-O $out/lib/torchat/torchat.py"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/prof7bit/TorChat";
+    description = "Instant messaging application on top of the Tor network and it's location hidden services";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.phreedom ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/toxic/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/toxic/default.nix
new file mode 100644
index 000000000000..540aa3fcea4d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/toxic/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, libsodium, ncurses, curl
+, libtoxcore, openal, libvpx, freealut, libconfig, pkgconfig, libopus
+, qrencode, gdk-pixbuf, libnotify }:
+
+stdenv.mkDerivation rec {
+  pname = "toxic";
+  version = "0.8.3";
+
+  src = fetchFromGitHub {
+    owner  = "Tox";
+    repo   = "toxic";
+    rev    = "v${version}";
+    sha256 = "09l2j3lwvrq7bf3051vjsnml9w63790ly3iylgf26gkrmld6k31w";
+  };
+
+  makeFlags = [ "PREFIX=$(out)"];
+  installFlags = [ "PREFIX=$(out)"];
+
+  buildInputs = [
+    libtoxcore libsodium ncurses curl gdk-pixbuf libnotify
+  ] ++ stdenv.lib.optionals (!stdenv.isAarch32) [
+    openal libopus libvpx freealut qrencode
+  ];
+  nativeBuildInputs = [ pkgconfig libconfig ];
+
+  meta = with stdenv.lib; {
+    description = "Reference CLI for Tox";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/turses/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/turses/default.nix
new file mode 100644
index 000000000000..b6017277b0a5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/turses/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchpatch, python3Packages }:
+
+with stdenv.lib;
+with python3Packages;
+
+buildPythonPackage rec {
+  pname = "turses";
+  version = "0.3.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "15mkhm3b5ka42h8qph0mhh8izfc1200v7651c62k7ldcs50ib9j6";
+  };
+
+  checkInputs = [ mock pytest coverage tox ];
+  propagatedBuildInputs = [ urwid tweepy future ];
+
+  LC_ALL = "en_US.UTF-8";
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/louipc/turses/commit/be0961b51f502d49fd9e2e5253ac130e543a31c7.patch";
+      sha256 = "17s1n0275mcj03vkf3n39dmc09niwv4y7ssrfk7k3vqx22kppzg3";
+    })
+    # python 3.7+ support
+    (fetchpatch {
+      url = "https://github.com/booxter/turses/commit/e6e285eae50fc3d2042a476185fe60daef1e758e.patch";
+      sha256 = "0g2zsrny955viwgs2l6gpiiz8m67b5sgdcxkjmfimfvvih5sg79f";
+    })
+  ];
+
+  checkPhase = ''
+    TMP_TURSES=`echo turses-$RANDOM`
+    mkdir $TMP_TURSES
+    PYTHONPATH=tests:$PYTHONPATH HOME=$TMP_TURSES py.test tests/
+    rm -rf $TMP_TURSES
+  '';
+
+  postPatch = ''
+    sed -i -e 's|urwid==1.3.0|urwid==${getVersion urwid}|' setup.py
+    sed -i -e "s|future==0.14.3|future==${getVersion future}|" setup.py
+    sed -i -e "s|tweepy==3.3.0|tweepy==${getVersion tweepy}|" setup.py
+    sed -i -e "s|config.generate_config_file.assert_called_once()|assert config.generate_config_file.call_count == 1|" tests/test_config.py
+    sed -i -e "s|self.observer.update.assert_called_once()|assert self.observer.update.call_count == 1|" tests/test_meta.py
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/louipc/turses";
+    description = "A Twitter client for the console";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/twinkle/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/twinkle/default.nix
new file mode 100644
index 000000000000..b6f0b87dc848
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/twinkle/default.nix
@@ -0,0 +1,84 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, libxml2
+, libsndfile
+, file
+, readline
+, bison
+, flex
+, ucommon
+, ccrtp
+, qtbase
+, qttools
+, qtquickcontrols2
+, alsaLib
+, speex
+, ilbc
+, fetchurl
+, mkDerivation
+, bcg729
+}:
+
+mkDerivation rec {
+  pname = "twinkle";
+  version = "1.10.2";
+
+  src = fetchFromGitHub {
+    repo = pname;
+    owner = "LubosD";
+    rev = "v${version}";
+    sha256 = "0s0gi03xwvzp02ah4q6j33r9jx9nbayr6dxlg2ck9pwbay1nq1hx";
+  };
+
+  buildInputs = [
+    libxml2
+    file # libmagic
+    libsndfile
+    readline
+    ucommon
+    ccrtp
+    qtbase
+    qttools
+    qtquickcontrols2
+    alsaLib
+    speex
+    ilbc
+  ];
+
+  patches = [
+    # patch for bcg729 1.0.2+
+    (fetchurl { # https://github.com/LubosD/twinkle/pull/152
+      url = "https://github.com/LubosD/twinkle/compare/05082ae12051821b1d969e6672d9e4e5afe1bc07...7a6c533cda387652b5b4cb2a867be1a18585890c.patch";
+      sha256 = "39fc6cef3e88cfca8db44612b2d082fb618027b0f99509138d3c0d2777a494c2";
+    })
+    # patch manual link to not link to old url, which now points to NSFW page
+    (fetchurl { # https://github.com/LubosD/twinkle/commit/05082ae12051821b1d969e6672d9e4e5afe1bc07
+      url = "https://github.com/LubosD/twinkle/commit/05082ae12051821b1d969e6672d9e4e5afe1bc07.diff";
+      sha256 = "1iamragr9wp2vczsnp6n261fpr1ai2nc2abp0228jlar9zafksw0";
+    })
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    bison
+    flex
+    bcg729
+  ];
+
+  cmakeFlags = [
+    "-DWITH_G729=On"
+    "-DWITH_SPEEX=On"
+    "-DWITH_ILBC=On"
+    /* "-DWITH_DIAMONDCARD=On" seems ancient and broken */
+  ];
+
+  meta = with stdenv.lib; {
+    changelog = "https://github.com/LubosD/twinkle/blob/${version}/NEWS";
+    description = "A SIP-based VoIP client";
+    homepage = "http://twinkle.dolezel.info/";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.mkg20001 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/utox/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/utox/default.nix
new file mode 100644
index 000000000000..b360793e484b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/utox/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, check, cmake, pkgconfig
+, libtoxcore, filter-audio, dbus, libvpx, libX11, openal, freetype, libv4l
+, libXrender, fontconfig, libXext, libXft, libsodium, libopus }:
+
+stdenv.mkDerivation rec {
+  pname = "utox";
+
+  version = "0.17.0";
+
+  src = fetchFromGitHub {
+    owner  = "uTox";
+    repo   = "uTox";
+    rev    = "v${version}";
+    sha256 = "12wbq883il7ikldayh8hm0cjfrkp45vn05xx9s1jbfz6gmkidyar";
+    fetchSubmodules = true;
+  };
+
+  buildInputs = [
+    libtoxcore dbus libvpx libX11 openal freetype
+    libv4l libXrender fontconfig libXext libXft filter-audio
+    libsodium libopus
+  ];
+
+  nativeBuildInputs = [
+    cmake pkgconfig
+  ];
+
+  cmakeFlags = [
+    "-DENABLE_AUTOUPDATE=OFF"
+    "-DENABLE_TESTS=${if doCheck then "ON" else "OFF"}"
+  ];
+
+  doCheck = stdenv.hostPlatform == stdenv.buildPlatform;
+  checkInputs = [ check ];
+
+  meta = with stdenv.lib; {
+    description = "Lightweight Tox client";
+    homepage = "https://github.com/uTox/uTox";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ domenkozar ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/vacuum/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/vacuum/default.nix
new file mode 100644
index 000000000000..ed320d9679d6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/vacuum/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub
+  , qt4, qmake4Hook, openssl
+  , xorgproto, libX11, libXScrnSaver
+  , xz, zlib
+}:
+stdenv.mkDerivation {
+  pname = "vacuum-im";
+  version = "1.3.0.20160104";
+
+  src = fetchFromGitHub {
+    owner = "Vacuum-IM";
+    repo = "vacuum-im";
+    rev = "1.3.0.20160104-Alpha";
+    sha256 = "1jcw9c7s75y4c3m4skfc3cc0i519z39b23n997vj5mwcjplxyc76";
+  };
+
+  buildInputs = [
+    qt4 openssl xorgproto libX11 libXScrnSaver xz zlib
+  ];
+
+  # hack: needed to fix build issues in
+  # https://hydra.nixos.org/build/38322959/nixlog/1
+  # should be an upstream issue but it's easy to fix
+  NIX_LDFLAGS = "-lz";
+
+  nativeBuildInputs = [ qmake4Hook ];
+
+  preConfigure = ''
+    qmakeFlags="$qmakeFlags INSTALL_PREFIX=$out"
+  '';
+
+  hardeningDisable = [ "format" ];
+
+  meta = with stdenv.lib; {
+    description = "An XMPP client fully composed of plugins";
+    maintainers = [ maintainers.raskin ];
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+    homepage = "http://www.vacuum-im.org";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/viber/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/viber/default.nix
new file mode 100644
index 000000000000..e53b8c7391e8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/viber/default.nix
@@ -0,0 +1,104 @@
+{fetchurl, stdenv, dpkg, makeWrapper,
+ alsaLib, cups, curl, dbus, expat, fontconfig, freetype, glib, gst_all_1, harfbuzz, libcap,
+ libpulseaudio, libxml2, libxslt, libGLU, libGL, nspr, nss, openssl, systemd, wayland, xorg, zlib, ...
+}:
+
+stdenv.mkDerivation {
+  pname = "viber";
+  version = "7.0.0.1035";
+
+  src = fetchurl {
+    url = "https://download.cdn.viber.com/cdn/desktop/Linux/viber.deb";
+    sha256 = "06mp2wvqx4y6rd5gs2mh442qcykjrrvwnkhlpx0lara331i2p0lj";
+  };
+
+  buildInputs = [ dpkg makeWrapper ];
+
+  dontUnpack = true;
+
+  libPath = stdenv.lib.makeLibraryPath [
+      alsaLib
+      cups
+      curl
+      dbus
+      expat
+      fontconfig
+      freetype
+      glib
+      gst_all_1.gst-plugins-base
+      gst_all_1.gstreamer
+      harfbuzz
+      libcap
+      libpulseaudio
+      libxml2
+      libxslt
+      libGLU libGL
+      nspr
+      nss
+      openssl
+      stdenv.cc.cc
+      systemd
+      wayland
+      zlib
+
+      xorg.libICE
+      xorg.libSM
+      xorg.libX11
+      xorg.libxcb
+      xorg.libXcomposite
+      xorg.libXcursor
+      xorg.libXdamage
+      xorg.libXext
+      xorg.libXfixes
+      xorg.libXi
+      xorg.libXrandr
+      xorg.libXrender
+      xorg.libXScrnSaver
+      xorg.libXtst
+      xorg.xcbutilimage
+      xorg.xcbutilkeysyms
+      xorg.xcbutilrenderutil
+      xorg.xcbutilwm
+  ]
+  ;
+
+  installPhase = ''
+    dpkg-deb -x $src $out
+    mkdir -p $out/bin
+
+    # Soothe nix-build "suspicions"
+    chmod -R g-w $out
+
+    for file in $(find $out -type f \( -perm /0111 -o -name \*.so\* \) ); do
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$file" || true
+      patchelf --set-rpath $libPath:$out/opt/viber/lib $file || true
+    done
+
+    # qt.conf is not working, so override everything using environment variables
+    wrapProgram $out/opt/viber/Viber \
+      --set QT_PLUGIN_PATH "$out/opt/viber/plugins" \
+      --set QT_XKB_CONFIG_ROOT "${xorg.xkeyboardconfig}/share/X11/xkb" \
+      --set QTCOMPOSE "${xorg.libX11.out}/share/X11/locale"
+    ln -s $out/opt/viber/Viber $out/bin/viber
+
+    mv $out/usr/share $out/share
+    rm -rf $out/usr
+
+    # Fix the desktop link
+    substituteInPlace $out/share/applications/viber.desktop \
+      --replace /opt/viber/Viber $out/opt/viber/Viber \
+      --replace /usr/share/ $out/share/
+  '';
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  meta = {
+    homepage = "http://www.viber.com";
+    description = "An instant messaging and Voice over IP (VoIP) app";
+    license = stdenv.lib.licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with stdenv.lib.maintainers; [ jagajaga ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/vk-messenger/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/vk-messenger/default.nix
new file mode 100644
index 000000000000..bece4e467a35
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/vk-messenger/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl, rpmextract, autoPatchelfHook
+, xorg, gtk3, gnome2, nss, alsaLib, udev, libnotify
+, wrapGAppsHook }:
+
+let
+  version = "5.0.1";
+in stdenv.mkDerivation {
+  pname = "vk-messenger";
+  inherit version;
+  src = {
+    i686-linux = fetchurl {
+      url = "https://desktop.userapi.com/rpm/master/vk-${version}.i686.rpm";
+      sha256 = "1ji23x13lzbkiqfrrwx1pj6gmms0p58cjmjc0y4g16kqhlxl60v6";
+    };
+    x86_64-linux = fetchurl {
+      url = "https://desktop.userapi.com/rpm/master/vk-${version}.x86_64.rpm";
+      sha256 = "01vvmia2qrxvrvavk9hkkyvfg4pg15m01grwb28884vy4nqw400y";
+    };
+  }.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}");
+
+  nativeBuildInputs = [ rpmextract autoPatchelfHook wrapGAppsHook ];
+  buildInputs = (with xorg; [
+    libXdamage libXtst libXScrnSaver libxkbfile
+  ]) ++ [
+    gtk3 nss alsaLib
+  ];
+  runtimeDependencies = [ udev.lib libnotify ];
+
+  unpackPhase = ''
+    rpmextract $src
+  '';
+
+  buildPhase = ''
+    substituteInPlace usr/share/applications/vk.desktop \
+      --replace /usr/share/pixmaps/vk.png vk
+  '';
+
+  installPhase = ''
+    mkdir $out
+    cd usr
+    cp -r --parents bin $out
+    cp -r --parents share/vk $out
+    cp -r --parents share/applications $out
+    cp -r --parents share/pixmaps $out
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple and Convenient Messaging App for VK";
+    homepage = "https://vk.com/messenger";
+    license = licenses.unfree;
+    maintainers = [ maintainers.gnidorah ];
+    platforms = ["i686-linux" "x86_64-linux"];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/wavebox/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/wavebox/default.nix
new file mode 100644
index 000000000000..1cd2df4c7ac1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/wavebox/default.nix
@@ -0,0 +1,68 @@
+{ alsaLib, autoPatchelfHook, fetchurl, gtk3, libnotify
+, makeDesktopItem, makeWrapper, nss, stdenv, udev, xdg_utils
+, xorg
+}:
+
+with stdenv.lib;
+
+let
+  bits = "x86_64";
+
+  version = "4.11.3";
+
+  desktopItem = makeDesktopItem rec {
+    name = "Wavebox";
+    exec = "wavebox";
+    icon = "wavebox";
+    desktopName = name;
+    genericName = name;
+    categories = "Network;";
+  };
+
+  tarball = "Wavebox_${replaceStrings ["."] ["_"] (toString version)}_linux_${bits}.tar.gz";
+
+in stdenv.mkDerivation {
+  pname = "wavebox";
+  inherit version;
+  src = fetchurl {
+    url = "https://github.com/wavebox/waveboxapp/releases/download/v${version}/${tarball}";
+    sha256 = "0z04071lq9bfyrlg034fmvd4346swgfhxbmsnl12m7c2m2b9z784";
+  };
+
+  # don't remove runtime deps
+  dontPatchELF = true;
+
+  nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
+
+  buildInputs = with xorg; [
+    libXdmcp libXScrnSaver libXtst
+  ] ++ [
+    alsaLib gtk3 nss
+  ];
+
+  runtimeDependencies = [ udev.lib libnotify ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/opt/wavebox
+    cp -r * $out/opt/wavebox
+
+    # provide desktop item and icon
+    mkdir -p $out/share/applications $out/share/pixmaps
+    ln -s ${desktopItem}/share/applications/* $out/share/applications
+    ln -s $out/opt/wavebox/Wavebox-linux-x64/wavebox_icon.png $out/share/pixmaps/wavebox.png
+  '';
+
+  postFixup = ''
+    makeWrapper $out/opt/wavebox/Wavebox $out/bin/wavebox \
+      --prefix PATH : ${xdg_utils}/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Wavebox messaging application";
+    homepage = "https://wavebox.io";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ rawkode ];
+    platforms = ["x86_64-linux"];
+    hydraPlatforms = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/wire-desktop/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/wire-desktop/default.nix
new file mode 100644
index 000000000000..8d874c581913
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/wire-desktop/default.nix
@@ -0,0 +1,151 @@
+{ atomEnv
+, autoPatchelfHook
+, dpkg
+, fetchurl
+, makeDesktopItem
+, makeWrapper
+, stdenv
+, udev
+, wrapGAppsHook
+, cpio
+, xar
+}:
+
+let
+
+  inherit (stdenv.hostPlatform) system;
+
+  throwSystem = throw "Unsupported system: ${system}";
+
+  pname = "wire-desktop";
+
+  version = {
+    x86_64-darwin = "3.18.3728";
+    x86_64-linux = "3.18.2925";
+  }.${system} or throwSystem;
+
+  sha256 = {
+    x86_64-darwin = "0xi3k95yw59xsfavncc1giwxlwjz26z34qm3i604ksjjalvpzy5l";
+    x86_64-linux = "01g39hncj1w0zyfrzv4mgv8npwvx0g0lw99azyai99877b30bm8j";
+  }.${system} or throwSystem;
+
+  meta = with stdenv.lib; {
+    description = "A modern, secure messenger for everyone";
+    longDescription = ''
+      Wire Personal is a secure, privacy-friendly messenger. It combines useful
+      and fun features, audited security, and a beautiful, distinct user
+      interface.  It does not require a phone number to register and chat.
+
+        * End-to-end encrypted chats, calls, and files
+        * Crystal clear voice and video calling
+        * File and screen sharing
+        * Timed messages and chats
+        * Synced across your phone, desktop and tablet
+    '';
+    homepage = "https://wire.com/";
+    downloadPage = "https://wire.com/download/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [
+      arianvp
+      kiwi
+      toonn
+      worldofpeace
+    ];
+    platforms = [
+      "x86_64-darwin"
+      "x86_64-linux"
+    ];
+  };
+
+  linux = stdenv.mkDerivation rec {
+    inherit pname version meta;
+
+    src = fetchurl {
+      url = "https://wire-app.wire.com/linux/debian/pool/main/"
+      + "Wire-${version}_amd64.deb";
+      inherit sha256;
+    };
+
+    desktopItem = makeDesktopItem {
+      categories = "Network;InstantMessaging;Chat;VideoConference";
+      comment = "Secure messenger for everyone";
+      desktopName = "Wire";
+      exec = "wire-desktop %U";
+      genericName = "Secure messenger";
+      icon = "wire-desktop";
+      name = "wire-desktop";
+      extraEntries = ''
+        StartupWMClass=Wire
+      '';
+    };
+
+    dontBuild = true;
+    dontConfigure = true;
+    dontPatchELF = true;
+    dontWrapGApps = true;
+
+    nativeBuildInputs = [
+      autoPatchelfHook
+      dpkg
+      makeWrapper
+      wrapGAppsHook
+    ];
+
+    buildInputs = atomEnv.packages;
+
+    unpackPhase = "dpkg-deb -x $src .";
+
+    installPhase = ''
+      mkdir -p "$out/bin"
+      cp -R "opt" "$out"
+      cp -R "usr/share" "$out/share"
+      chmod -R g-w "$out"
+
+      # Desktop file
+      mkdir -p "$out/share/applications"
+      cp "${desktopItem}/share/applications/"* "$out/share/applications"
+    '';
+
+    runtimeDependencies = [
+      udev.lib
+    ];
+
+    postFixup = ''
+      makeWrapper $out/opt/Wire/wire-desktop $out/bin/wire-desktop \
+        "''${gappsWrapperArgs[@]}"
+    '';
+  };
+
+  darwin = stdenv.mkDerivation {
+    inherit pname version meta;
+
+    src = fetchurl {
+      url = "https://github.com/wireapp/wire-desktop/releases/download/"
+          + "macos%2F${version}/Wire.pkg";
+      inherit sha256;
+    };
+
+    buildInputs = [
+      cpio
+      xar
+    ];
+
+    unpackPhase = ''
+      xar -xf $src
+      cd com.wearezeta.zclient.mac.pkg
+    '';
+
+    buildPhase = ''
+      cat Payload | gunzip -dc | cpio -i
+    '';
+
+    installPhase = ''
+      mkdir -p $out/Applications
+      cp -r Wire.app $out/Applications
+    '';
+  };
+
+in
+if stdenv.isDarwin
+then darwin
+else linux
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/xmpp-client/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/xmpp-client/default.nix
new file mode 100644
index 000000000000..52cf8e3279a0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/xmpp-client/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "xmpp-client";
+  version = "20160916-${stdenv.lib.strings.substring 0 7 rev}";
+  rev = "abbf9020393e8caae3e8996a16ce48446e31cf0e";
+
+  goPackagePath = "github.com/agl/xmpp-client";
+
+  src = fetchFromGitHub {
+    owner = "agl";
+    repo = "xmpp-client";
+    inherit rev;
+    sha256 = "0j9mfr208cachzm39i8b94v5qk9hws278vv2ms9ma4wn16wns81s";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    description = "An XMPP client with OTR support";
+    homepage = "https://github.com/agl/xmpp-client";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ codsl ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/xmpp-client/deps.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/xmpp-client/deps.nix
new file mode 100644
index 000000000000..caa41024fc61
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/xmpp-client/deps.nix
@@ -0,0 +1,20 @@
+[
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "62ac18b461605b4be188bbc7300e9aa2bc836cd4";
+      sha256 = "0lwwvbbwbf3yshxkfhn6z20gd45dkvnmw2ms36diiy34krgy402p";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "575fdbe86e5dd89229707ebec0575ce7d088a4a6";
+      sha256 = "1kgv1mkw9y404pk3lcwbs0vgl133mwyp294i18jg9hp10s5d56xa";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/default.nix
new file mode 100644
index 000000000000..7f5cf65e0937
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/default.nix
@@ -0,0 +1,132 @@
+{ stdenv, fetchurl, mkDerivation, autoPatchelfHook, bash
+, fetchFromGitHub
+# Dynamic libraries
+, dbus, glib, libGL, libX11, libXfixes, libuuid, libxcb, qtbase, qtdeclarative
+, qtgraphicaleffects, qtimageformats, qtlocation, qtquickcontrols
+, qtquickcontrols2, qtscript, qtsvg , qttools, qtwayland, qtwebchannel
+, qtwebengine
+# Runtime
+, coreutils, libjpeg_turbo, pciutils, procps, utillinux
+, pulseaudioSupport ? true, libpulseaudio ? null
+}:
+
+assert pulseaudioSupport -> libpulseaudio != null;
+
+let
+  inherit (stdenv.lib) concatStringsSep makeBinPath optional;
+
+  version = "5.0.418682.0603";
+  srcs = {
+    x86_64-linux = fetchurl {
+      url = "https://zoom.us/client/${version}/zoom_x86_64.tar.xz";
+      sha256 = "1vlba3jgp3dr16n5g29l0dpdd054d8h6lkwk3a6346shvd46mpja";
+    };
+  };
+
+  # Used for icons, appdata, and desktop file.
+  desktopIntegration = fetchFromGitHub {
+    owner = "flathub";
+    repo = "us.zoom.Zoom";
+    rev = "0d294e1fdd2a4ef4e05d414bc680511f24d835d7";
+    sha256 = "0rm188844a10v8d6zgl2pnwsliwknawj09b02iabrvjw5w1lp6wl";
+  };
+
+in mkDerivation {
+  pname = "zoom-us";
+  inherit version;
+
+  src = srcs.${stdenv.hostPlatform.system};
+
+  nativeBuildInputs = [ autoPatchelfHook ];
+
+  buildInputs = [
+    dbus glib libGL libX11 libXfixes libuuid libxcb libjpeg_turbo qtbase
+    qtdeclarative qtgraphicaleffects qtlocation qtquickcontrols qtquickcontrols2
+    qtscript qtwebchannel qtwebengine qtimageformats qtsvg qttools qtwayland
+  ];
+
+  runtimeDependencies = optional pulseaudioSupport libpulseaudio;
+
+  installPhase =
+    let
+      files = concatStringsSep " " [
+        "*.pcm"
+        "*.png"
+        "ZoomLauncher"
+        "config-dump.sh"
+        "timezones"
+        "translations"
+        "version.txt"
+        "zcacert.pem"
+        "zoom"
+        "zoom.sh"
+        "zoomlinux"
+        "zopen"
+      ];
+    in ''
+      runHook preInstall
+
+      mkdir -p $out/{bin,share/zoom-us}
+
+      cp -ar ${files} $out/share/zoom-us
+
+      # TODO Patch this somehow; tries to dlopen './libturbojpeg.so' from cwd
+      ln -s $(readlink -e "${libjpeg_turbo.out}/lib/libturbojpeg.so") $out/share/zoom-us/libturbojpeg.so
+
+      runHook postInstall
+    '';
+
+  postInstall = ''
+    mkdir -p $out/share/{applications,appdata,icons}
+
+    # Desktop File
+    cp ${desktopIntegration}/us.zoom.Zoom.desktop $out/share/applications
+    substituteInPlace $out/share/applications/us.zoom.Zoom.desktop \
+        --replace "Exec=zoom" "Exec=$out/bin/zoom-us"
+
+    # Appdata
+    cp ${desktopIntegration}/us.zoom.Zoom.appdata.xml $out/share/appdata
+
+    # Icons
+    for icon_size in 64 96 128 256; do
+        path=$icon_size'x'$icon_size
+        icon=${desktopIntegration}/us.zoom.Zoom.$icon_size.png
+
+        mkdir -p $out/share/icons/hicolor/$path/apps
+        cp $icon $out/share/icons/hicolor/$path/apps/us.zoom.Zoom.png
+    done
+  '';
+
+  # $out/share/zoom-us isn't in auto-wrap directories list, need manual wrapping
+  dontWrapQtApps = true;
+
+  qtWrapperArgs = [
+    ''--prefix PATH : ${makeBinPath [ coreutils glib.dev pciutils procps qttools.dev utillinux ]}''
+    # --run "cd ${placeholder "out"}/share/zoom-us"
+    # ^^ unfortunately, breaks run arg into multiple array elements, due to
+    # some bad array propagation. We'll do that in bash below
+  ];
+
+  postFixup = ''
+    # Zoom expects "zopen" executable (needed for web login) to be present in CWD. Or does it expect
+    # everybody runs Zoom only after cd to Zoom package directory? Anyway, :facepalm:
+    qtWrapperArgs+=( --run "cd ${placeholder "out"}/share/zoom-us" )
+
+    for app in ZoomLauncher zopen zoom; do
+      wrapQtApp $out/share/zoom-us/$app
+    done
+
+    ln -s $out/share/zoom-us/ZoomLauncher $out/bin/zoom-us
+  '';
+
+  passthru.updateScript = ./update.sh;
+
+  meta = {
+    homepage = "https://zoom.us/";
+    description = "zoom.us video conferencing application";
+    license = stdenv.lib.licenses.unfree;
+    platforms = builtins.attrNames srcs;
+    maintainers = with stdenv.lib.maintainers; [ danbst tadfisher ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/update.sh b/nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/update.sh
new file mode 100755
index 000000000000..6214d4e26255
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/update.sh
@@ -0,0 +1,17 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl pcre common-updater-scripts
+
+set -eu -o pipefail
+
+oldVersion=$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion zoom-us" | tr -d '"')
+version="$(curl -sI https://zoom.us/client/latest/zoom_x86_64.tar.xz | grep -Fi 'Location:' | pcregrep -o1 '/(([0-9]\.?)+)/')"
+
+if [ ! "${oldVersion}" = "${version}" ]; then
+  update-source-version zoom-us "$version"
+  nixpkgs="$(git rev-parse --show-toplevel)"
+  default_nix="$nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/default.nix"
+  git add "${default_nix}"
+  git commit -m "zoom-us: ${oldVersion} -> ${version}"
+else
+  echo "zoom-us is already up-to-date"
+fi
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/zulip/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/zulip/default.nix
new file mode 100644
index 000000000000..1adfb71dd9b6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/zulip/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, fetchurl
+, appimageTools
+}:
+
+let
+  pname = "zulip";
+  version = "5.2.0";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/zulip/zulip-desktop/releases/download/v${version}/Zulip-${version}-x86_64.AppImage";
+    sha256 = "0rgvllm1pzg6smyjrhh8v1ial0dvav0h2zccxp4p5nqmq6zdvs3h";
+    name="${pname}-${version}.AppImage";
+  };
+
+  appimageContents = appimageTools.extractType2 {
+    inherit name src;
+  };
+
+in appimageTools.wrapType2 {
+  inherit name src;
+
+  extraInstallCommands = ''
+    mv $out/bin/${name} $out/bin/${pname}
+    install -m 444 -D ${appimageContents}/zulip.desktop $out/share/applications/zulip.desktop
+    install -m 444 -D ${appimageContents}/usr/share/icons/hicolor/512x512/apps/zulip.png \
+      $out/share/icons/hicolor/512x512/apps/zulip.png
+    substituteInPlace $out/share/applications/zulip.desktop \
+      --replace 'Exec=AppRun' 'Exec=${pname}'
+  '';
+
+  meta = with lib; {
+    description = "Desktop client for Zulip Chat";
+    homepage = "https://zulipchat.com";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ jonafato ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/insync/default.nix b/nixpkgs/pkgs/applications/networking/insync/default.nix
new file mode 100644
index 000000000000..773a07dd6c24
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/insync/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "insync";
+  version = "1.5.7.37371";
+  src =
+    if stdenv.hostPlatform.system == "x86_64-linux" then
+      fetchurl {
+        url = "http://s.insynchq.com/builds/insync-portable_${version}_amd64.tar.bz2";
+        sha256 = "1cm3q6y2crw6pcsvh21sbkmh1hin7xl4fyslc96nbyql8rxsky5n";
+      }
+    else
+      throw "${pname}-${version} is not supported on ${stdenv.hostPlatform.system}";
+
+  buildInputs = [ makeWrapper ];
+
+  postPatch = ''
+    patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" client/insync-portable
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -a client $out/client
+    makeWrapper $out/client/insync-portable $out/bin/insync --set LC_TIME C
+  '';
+
+  meta = {
+    platforms = ["x86_64-linux"];
+    license = stdenv.lib.licenses.unfree;
+    maintainers = [ stdenv.lib.maintainers.benley ];
+    homepage = "https://www.insynchq.com";
+    description = "Google Drive sync and backup with multiple account support";
+    longDescription = ''
+     Insync is a commercial application that syncs your Drive files to your
+     computer.  It has more advanced features than Google's official client
+     such as multiple account support, Google Doc conversion, symlink support,
+     and built in sharing.
+
+     There is a 15-day free trial, and it is a paid application after that.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ipfs-cluster/default.nix b/nixpkgs/pkgs/applications/networking/ipfs-cluster/default.nix
new file mode 100644
index 000000000000..ee9e368a6590
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ipfs-cluster/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildGoModule, fetchFromGitHub, fetchgx, gx-go }:
+
+buildGoModule rec {
+  pname = "ipfs-cluster";
+  version = "0.13.0";
+  rev = "v${version}";
+
+  vendorSha256 = "00fkyxxi4iz16v0j33270x8qrspqpsv9j6csnikjy0klyb038pfq";
+
+  src = fetchFromGitHub {
+    owner = "ipfs";
+    repo = "ipfs-cluster";
+    inherit rev;
+    sha256 = "0jf3ngxqkgss5f1kifp5lp3kllb21jxc475ysl01ma8l3smqdvya";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Allocate, replicate, and track Pins across a cluster of IPFS daemons";
+    homepage = "https://cluster.ipfs.io/";
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ jglukasik ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/ipfs-migrator/default.nix b/nixpkgs/pkgs/applications/networking/ipfs-migrator/default.nix
new file mode 100644
index 000000000000..7a9d8f639707
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ipfs-migrator/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "ipfs-migrator";
+  version = "1.5.1";
+
+  src = fetchFromGitHub {
+    owner = "ipfs";
+    repo = "fs-repo-migrations";
+    rev = "v${version}";
+    sha256 = "18pjxkxfbsbbj4hs4xyzfmmz991h31785ldx41dll6wa9zx4lsnm";
+  };
+
+  vendorSha256 = null;
+
+  subPackages = [ "." ];
+
+  meta = with lib; {
+    description = "Migrations for the filesystem repository of ipfs clients";
+    homepage = "https://ipfs.io/";
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ elitak ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/ipfs/default.nix b/nixpkgs/pkgs/applications/networking/ipfs/default.nix
new file mode 100644
index 000000000000..8f141b0eade3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ipfs/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, buildGoModule, fetchurl, nixosTests }:
+
+buildGoModule rec {
+  pname = "ipfs";
+  version = "0.5.1";
+  rev = "v${version}";
+
+  # go-ipfs makes changes to it's source tarball that don't match the git source.
+  src = fetchurl {
+    url = "https://github.com/ipfs/go-ipfs/releases/download/${rev}/go-ipfs-source.tar.gz";
+    sha256 = "0lpilycjbc1g9adp4d5kryfprixj18hg3235fnivakmv7fy2akkm";
+  };
+
+  # tarball contains multiple files/directories
+  postUnpack = ''
+    mkdir ipfs-src
+    mv * ipfs-src || true
+    cd ipfs-src
+  '';
+
+  sourceRoot = ".";
+
+  subPackages = [ "cmd/ipfs" ];
+
+  passthru.tests.ipfs = nixosTests.ipfs;
+
+  vendorSha256 = null;
+
+  postInstall = ''
+    install -D misc/systemd/ipfs.service $out/etc/systemd/system/ipfs.service
+    install -D misc/systemd/ipfs-api.socket $out/etc/systemd/system/ipfs-api.socket
+    install -D misc/systemd/ipfs-gateway.socket $out/etc/systemd/system/ipfs-gateway.socket
+    substituteInPlace $out/etc/systemd/system/ipfs.service \
+      --replace /usr/bin/ipfs $out/bin/ipfs
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A global, versioned, peer-to-peer filesystem";
+    homepage = "https://ipfs.io/";
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ fpletz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ipget/default.nix b/nixpkgs/pkgs/applications/networking/ipget/default.nix
new file mode 100644
index 000000000000..d137fcf296fa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ipget/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "ipget";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "ipfs";
+    repo = "ipget";
+    rev = "v${version}";
+    sha256 = "14ygij6hj6bd4g4aw6jgfbi1fgpal0jgf1hr22zxm16dpx3vva6b";
+  };
+
+  vendorSha256 = "0vy21pdqk6q5fw7wlcv51myhh9y79n2qhvy61rmblwhxlrkh6sdv";
+
+  meta = with stdenv.lib; {
+    description = "Retrieve files over IPFS and save them locally";
+    homepage = "https://ipfs.io/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ Luflosi ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/iptraf-ng/default.nix b/nixpkgs/pkgs/applications/networking/iptraf-ng/default.nix
new file mode 100644
index 000000000000..1fc81be240bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/iptraf-ng/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, ncurses }:
+
+stdenv.mkDerivation rec {
+  version = "1.1.4";
+  pname = "iptraf-ng";
+
+  src = fetchurl {
+    url = "https://fedorahosted.org/releases/i/p/iptraf-ng/${pname}-${version}.tar.gz";
+    sha256 = "02gb8z9h2s6s1ybyikywz7jgb1mafdx88hijfasv3khcgkq0q53r";
+  };
+
+  buildInputs = [ ncurses ];
+
+  configurePhase = ''
+    ./configure --prefix=$out/usr --sysconfdir=$out/etc \
+                --localstatedir=$out/var --sbindir=$out/bin
+  '';
+
+  hardeningDisable = [ "format" ];
+
+  meta = {
+    description = "A console-based network monitoring utility (fork of iptraf)";
+    longDescription = ''
+      IPTraf-ng is a console-based network monitoring utility. IPTraf-ng
+      gathers data like TCP connection packet and byte counts, interface
+      statistics and activity indicators, TCP/UDP traffic breakdowns, and LAN
+      station packet and byte counts. IPTraf-ng features include an IP traffic
+      monitor which shows TCP flag information, packet and byte counts, ICMP
+      details, OSPF packet types, and oversized IP packet warnings; interface
+      statistics showing IP, TCP, UDP, ICMP, non-IP and other IP packet counts,
+      IP checksum errors, interface activity and packet size counts; a TCP and
+      UDP service monitor showing counts of incoming and outgoing packets for
+      common TCP and UDP application ports, a LAN statistics module that
+      discovers active hosts and displays statistics about their activity; TCP,
+      UDP and other protocol display filters so you can view just the traffic
+      you want; logging; support for Ethernet, FDDI, ISDN, SLIP, PPP, and
+      loopback interfaces; and utilization of the built-in raw socket interface
+      of the Linux kernel, so it can be used on a wide variety of supported
+      network cards.
+    '';
+    homepage = "https://fedorahosted.org/iptraf-ng/";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.devhell ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/iptraf/default.nix b/nixpkgs/pkgs/applications/networking/iptraf/default.nix
new file mode 100644
index 000000000000..83d9a019e48b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/iptraf/default.nix
@@ -0,0 +1,32 @@
+{stdenv, fetchurl, ncurses}:
+
+stdenv.mkDerivation {
+  name = "iptraf-3.0.1";
+
+  src = fetchurl {
+    url = "ftp://iptraf.seul.org/pub/iptraf/iptraf-3.0.1.tar.gz";
+    sha256 = "12n059j9iihhpf6spmlaspqzxz3wqan6kkpnhmlj08jdijpnk84m";
+  };
+
+  hardeningDisable = [ "format" ];
+
+  patchPhase = ''
+    sed -i -e 's,#include <linux/if_tr.h>,#include <netinet/if_tr.h>,' src/*
+  '';
+
+  preConfigure = "cd src";
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp iptraf $out/bin
+  '';
+
+  buildInputs = [ncurses];
+
+  meta = {
+    homepage = "http://iptraf.seul.org/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    description = "Console-based network statistics utility for Linux";
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/bip/default.nix b/nixpkgs/pkgs/applications/networking/irc/bip/default.nix
new file mode 100644
index 000000000000..af67c224e7d7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/bip/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchurl, fetchpatch, bison, flex, autoconf, automake, openssl }:
+
+stdenv.mkDerivation rec {
+  pname = "bip";
+  version = "0.8.9";
+
+  # fetch sources from debian, because the creator's website provides
+  # the files only via https but with an untrusted certificate.
+  src = fetchurl {
+    url = "mirror://debian/pool/main/b/bip/bip_${version}.orig.tar.gz";
+    sha256 = "0q942g9lyd8pjvqimv547n6vik5759r9npw3ws3bdj4ixxqhz59w";
+  };
+
+  buildInputs = [ bison flex autoconf automake openssl ];
+
+  # includes an important security patch
+  patches = [
+    (fetchpatch {
+      url = "mirror://gentoo/../gentoo-portage/net-irc/bip/files/bip-freenode.patch";
+      sha256 = "05qy7a62p16f5knrsdv2lkhc07al18qq32ciq3k4r0lq1wbahj2y";
+    })
+    (fetchpatch {
+      url = "https://projects.duckcorp.org/projects/bip/repository/revisions/39414f8ff9df63c8bc2e4eee34f09f829a5bf8f5/diff/src/connection.c?format=diff";
+      sha256 = "1hvg58vci6invh0z19wf04jjvnm8w6f6v4c4nk1j5hc3ymxdp1rb";
+    })
+    (fetchpatch {
+      url = "https://projects.duckcorp.org/projects/bip/repository/bip/revisions/87192685f55856d2c28021963ab2c308e21faddc/diff?format=diff";
+      sha256 = "0rspzp7q1lq8v0cl0c35xxpgisfk264i648vslgsjax2s0g9svx0";
+    })
+    (fetchpatch {
+      url = "https://projects.duckcorp.org/projects/bip/repository/bip/revisions/814d54c676d5827f6ea37c1cd2d6e846d080c13c/diff?format=diff";
+      sha256 = "137l77kmm6p9p4c4kvw2zc4xkr10ayyc9z5rlpwn67574h47v55i";
+    })
+    (fetchpatch {
+      url = "https://projects.duckcorp.org/projects/bip/repository/bip/revisions/d2dcb0adb1aa8c2c4526aa6ad650483b0e02ab7d/diff?format=diff";
+      sha256 = "1pvywaljdkmy4870xs6gvsk4qwg69h47qr0yjywbcdsfycrgp8aq";
+    })
+  ];
+
+  NIX_CFLAGS_COMPILE = "-Wno-error=unused-result -Wno-error=duplicate-decl-specifier";
+
+  meta = {
+    description = "An IRC proxy (bouncer)";
+    homepage = "http://bip.milkypond.org/";
+    license = stdenv.lib.licenses.gpl2;
+    downloadPage = "https://projects.duckcorp.org/projects/bip/files";
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/communi/default.nix b/nixpkgs/pkgs/applications/networking/irc/communi/default.nix
new file mode 100644
index 000000000000..6cb6f2c2ef67
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/communi/default.nix
@@ -0,0 +1,48 @@
+{ fetchgit, libcommuni, qtbase, qmake, stdenv }:
+
+stdenv.mkDerivation rec {
+  pname = "communi";
+  version = "3.5.0";
+
+  src = fetchgit {
+    url = "https://github.com/communi/communi-desktop.git";
+    rev = "v${version}";
+    sha256 = "10grskhczh8601s90ikdsbjabgr9ypcp2j7vivjkl456rmg6xbji";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ qmake ];
+
+  buildInputs = [ libcommuni qtbase ];
+
+  enableParallelBuilding = true;
+
+  preConfigure = ''
+    export QMAKEFEATURES=${libcommuni}/features
+    qmakeFlags="$qmakeFlags \
+      COMMUNI_INSTALL_PREFIX=$out \
+      COMMUNI_INSTALL_BINS=$out/bin \
+      COMMUNI_INSTALL_PLUGINS=$out/lib/communi/plugins \
+      COMMUNI_INSTALL_ICONS=$out/share/icons/hicolor \
+      COMMUNI_INSTALL_DESKTOP=$out/share/applications \
+      COMMUNI_INSTALL_THEMES=$out/share/communi/themes
+    "
+  '';
+
+  postInstall = stdenv.lib.optionalString stdenv.isLinux ''
+    substituteInPlace "$out/share/applications/communi.desktop" \
+      --replace "/usr/bin" "$out/bin"
+  '';
+
+  preFixup = ''
+    rm -rf lib
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A simple and elegant cross-platform IRC client";
+    homepage = "https://github.com/communi/communi-desktop";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ hrdinka ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/epic5/default.nix b/nixpkgs/pkgs/applications/networking/irc/epic5/default.nix
new file mode 100644
index 000000000000..cb2fa4ae6823
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/epic5/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, openssl, ncurses, libiconv, tcl, coreutils, fetchpatch }:
+
+stdenv.mkDerivation rec {
+  pname = "epic5";
+  version = "2.0.1";
+
+  src = fetchurl {
+    url = "http://ftp.epicsol.org/pub/epic/EPIC5-PRODUCTION/${pname}-${version}.tar.xz";
+    sha256 = "1ap73d5f4vccxjaaq249zh981z85106vvqmxfm4plvy76b40y9jm";
+  };
+
+  # Darwin needs libiconv, tcl; while Linux build don't
+  buildInputs = [ openssl ncurses ]
+    ++ stdenv.lib.optionals stdenv.isDarwin [ libiconv tcl ];
+
+  patches = [
+    (fetchpatch {
+      url = "https://sources.debian.net/data/main/e/epic5/2.0.1-1/debian/patches/openssl-1.1.patch";
+      sha256 = "03bpsyv1sr5icajs2qkdvv8nnn6rz6yvvj7pgiq8gz9sbp6siyfv";
+    })
+  ];
+
+  configureFlags = [ "--disable-debug" "--with-ipv6" ];
+
+  postConfigure = ''
+    substituteInPlace bsdinstall \
+      --replace /bin/cp ${coreutils}/bin/cp \
+      --replace /bin/rm ${coreutils}/bin/rm \
+      --replace /bin/chmod ${coreutils}/bin/chmod \
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://epicsol.org";
+    description = "A IRC client that offers a great ircII interface";
+    license = licenses.bsd3;
+    maintainers = [];
+  };
+}
+
+
+
diff --git a/nixpkgs/pkgs/applications/networking/irc/glowing-bear/default.nix b/nixpkgs/pkgs/applications/networking/irc/glowing-bear/default.nix
new file mode 100644
index 000000000000..59278dddad1a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/glowing-bear/default.nix
@@ -0,0 +1,27 @@
+{ fetchFromGitHub, stdenv }:
+
+stdenv.mkDerivation rec {
+  pname = "glowing-bear";
+  version = "0.7.2";
+
+  src = fetchFromGitHub {
+    rev = version;
+    owner = "glowing-bear";
+    repo = "glowing-bear";
+    sha256 = "14a3fqsmi28g7j3lzk4l4m47p2iml1aaf3514wazn2clw48lnqhw";
+  };
+
+  installPhase = ''
+    mkdir $out
+    cp index.html min.js serviceworker.js webapp.manifest.json $out
+    cp -R 3rdparty assets css directives js $out
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A web client for Weechat";
+    homepage = "https://github.com/glowing-bear/glowing-bear";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ delroth ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/hexchat/default.nix b/nixpkgs/pkgs/applications/networking/irc/hexchat/default.nix
new file mode 100644
index 000000000000..c5b2a9f1b28e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/hexchat/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchFromGitHub, fetchpatch, pkgconfig, gtk2, lua, perl, python3
+, pciutils, dbus-glib, libcanberra-gtk2, libproxy
+, enchant2, libnotify, openssl, isocodes
+, desktop-file-utils
+, meson, ninja
+}:
+
+stdenv.mkDerivation rec {
+  pname = "hexchat";
+  version = "2.14.3";
+
+  src = fetchFromGitHub {
+    owner = "hexchat";
+    repo = "hexchat";
+    rev = "v${version}";
+    sha256 = "08kvp0dcn3bvmlqcfp9312075bwkqkpa8m7zybr88pfp210gfl85";
+  };
+
+  nativeBuildInputs = [ meson ninja pkgconfig ];
+
+  buildInputs = [
+    gtk2 lua perl python3 pciutils dbus-glib libcanberra-gtk2 libproxy
+    libnotify openssl desktop-file-utils
+    isocodes
+  ];
+
+  #hexchat and hexchat-text loads enchant spell checking library at run time and so it needs to have route to the path
+  postPatch = ''
+    sed -i "s,libenchant-2.so.2,${enchant2}/lib/libenchant-2.so.2,g" src/fe-gtk/sexy-spell-entry.c
+    sed -i "/flag.startswith('-I')/i if flag.contains('no-such-path')\ncontinue\nendif" plugins/perl/meson.build
+    chmod +x meson_post_install.py
+    for f in meson_post_install.py \
+             src/common/make-te.py \
+             plugins/perl/generate_header.py \
+             po/validate-textevent-translations
+    do
+      patchShebangs $f
+    done
+  '';
+
+  mesonFlags = [ "-Dwith-lua=lua" "-Dwith-text=true" ];
+
+  meta = with stdenv.lib; {
+    description = "A popular and easy to use graphical IRC (chat) client";
+    homepage = "https://hexchat.github.io/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/ii/default.nix b/nixpkgs/pkgs/applications/networking/irc/ii/default.nix
new file mode 100644
index 000000000000..163dec194b15
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/ii/default.nix
@@ -0,0 +1,21 @@
+{stdenv, fetchurl}:
+
+stdenv.mkDerivation rec {
+  name = "ii-1.8";
+
+  src = fetchurl {
+    url = "https://dl.suckless.org/tools/${name}.tar.gz";
+    sha256 = "1lk8vjl7i8dcjh4jkg8h8bkapcbs465sy8g9c0chfqsywbmf3ndr";
+  };
+
+  installPhase = ''
+    make install PREFIX=$out
+  '';
+
+  meta = {
+    homepage = "https://tools.suckless.org/ii/";
+    license = stdenv.lib.licenses.mit;
+    description = "Irc it, simple FIFO based irc client";
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/irccloud/default.nix b/nixpkgs/pkgs/applications/networking/irc/irccloud/default.nix
new file mode 100644
index 000000000000..93ab9f828f64
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/irccloud/default.nix
@@ -0,0 +1,38 @@
+{ appimageTools, fetchurl, lib }:
+
+let
+  pname = "irccloud";
+  version = "0.13.0";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/irccloud/irccloud-desktop/releases/download/v${version}/IRCCloud-${version}-linux-x86_64.AppImage";
+    sha256 = "0ff69m5jav2c90918avsr5wvik2gds3klij3dzhkb352fgrd1s0l";
+  };
+
+  appimageContents = appimageTools.extractType2 {
+    inherit name src;
+  };
+
+in appimageTools.wrapType2 {
+  inherit name src;
+
+  extraPkgs = pkgs: with pkgs; [ at-spi2-core ];
+
+  extraInstallCommands = ''
+    mv $out/bin/${name} $out/bin/${pname}
+    install -m 444 -D ${appimageContents}/irccloud.desktop $out/share/applications/irccloud.desktop
+    install -m 444 -D ${appimageContents}/usr/share/icons/hicolor/512x512/apps/irccloud.png \
+      $out/share/icons/hicolor/512x512/apps/irccloud.png
+    substituteInPlace $out/share/applications/irccloud.desktop \
+      --replace 'Exec=AppRun' 'Exec=${pname}'
+  '';
+
+  meta = with lib; {
+    description = "A desktop client for IRCCloud";
+    homepage = "https://www.irccloud.com";
+    license = licenses.asl20;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ lightbulbjim ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/irssi/default.nix b/nixpkgs/pkgs/applications/networking/irc/irssi/default.nix
new file mode 100644
index 000000000000..27b37e78a1a4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/irssi/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, pkgconfig, ncurses, glib, openssl, perl, libintl, libgcrypt, libotr }:
+
+stdenv.mkDerivation rec {
+  pname = "irssi";
+  version = "1.2.2";
+
+  src = fetchurl {
+    url = "https://github.com/irssi/irssi/releases/download/${version}/${pname}-${version}.tar.gz";
+    sha256 = "0g2nxazn4lszmd6mf1s36x5ablk4999g1qx7byrnvgnjsihjh62k";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ ncurses glib openssl perl libintl libgcrypt libotr ];
+
+  configureFlags = [
+    "--with-proxy"
+    "--with-bot"
+    "--with-perl=yes"
+    "--with-otr=yes"
+    "--enable-true-color"
+  ];
+
+  meta = {
+    homepage    = "https://irssi.org";
+    description = "A terminal based IRC client";
+    platforms   = stdenv.lib.platforms.unix;
+    maintainers = with stdenv.lib.maintainers; [ lovek323 ];
+    license     = stdenv.lib.licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/irssi/fish/default.nix b/nixpkgs/pkgs/applications/networking/irc/irssi/fish/default.nix
new file mode 100644
index 000000000000..f1e0e9158ca6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/irssi/fish/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, irssi, gmp, automake, autoconf, libtool, openssl, glib, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  name = "fish-irssi-20130413-e98156bebd";
+  
+  src = fetchurl {
+    url = "https://github.com/falsovsky/FiSH-irssi/tarball/e98156bebd";
+    name = "${name}.tar.gz";
+    sha256 = "1ndr51qrg66h1mfzacwzl1vd6lj39pdc4p4z5iihrj4r2f6gk11a";
+  };
+
+  preConfigure = ''
+    tar xf ${irssi.src}
+    configureFlags="$configureFlags --with-irssi-source=`pwd`/${irssi.name}"
+
+    ./regen.sh
+  '';
+
+  installPhase = ''
+    mkdir -p $out/lib/irssi/modules
+    cp src/.libs/libfish.so $out/lib/irssi/modules
+  '';
+  
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gmp automake autoconf libtool openssl glib ];
+  
+  meta = {
+    homepage = "https://github.com/falsovsky/FiSH-irssi";
+    license = stdenv.lib.licenses.unfree; # I can't find any mention of license
+    maintainers = with stdenv.lib.maintainers; [viric];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/konversation/default.nix b/nixpkgs/pkgs/applications/networking/irc/konversation/default.nix
new file mode 100644
index 000000000000..2890deccb800
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/konversation/default.nix
@@ -0,0 +1,87 @@
+{ mkDerivation
+, lib
+, fetchurl
+, fetchpatch
+, extra-cmake-modules
+, kdoctools
+, kbookmarks
+, karchive
+, kconfig
+, kconfigwidgets
+, kcoreaddons
+, kcrash
+, kdbusaddons
+, kemoticons
+, kglobalaccel
+, ki18n
+, kiconthemes
+, kidletime
+, kitemviews
+, knotifications
+, knotifyconfig
+, kwindowsystem
+, kio
+, kparts
+, kwallet
+, solid
+, sonnet
+, phonon
+}:
+
+let
+  pname = "konversation";
+  version = "1.7.5";
+in mkDerivation rec {
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/${pname}/${version}/src/${name}.tar.xz";
+    sha256 = "0h098yhlp36ls6pdvs2r93ig8dv4fys62m0h6wxccprb0qrpbgv0";
+  };
+
+  patches = [
+    # Delete this patch for konversation > 1.7.5
+    (fetchpatch {
+      url = "https://cgit.kde.org/konversation.git/patch/?id=4d0036617becc26a76fd021138c98aceec4c7b53";
+      sha256 = "17hdj6zyln3n93b71by26mrwbgyh4k052ck5iw1drysx5dyd5l6y";
+    })
+  ];
+
+  buildInputs = [
+    kbookmarks
+    karchive
+    kconfig
+    kconfigwidgets
+    kcoreaddons
+    kcrash
+    kdbusaddons
+    kdoctools
+    kemoticons
+    kglobalaccel
+    ki18n
+    kiconthemes
+    kidletime
+    kitemviews
+    knotifications
+    knotifyconfig
+    kwindowsystem
+    kio
+    kparts
+    kwallet
+    solid
+    sonnet
+    phonon
+  ];
+
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+  ];
+
+  meta = {
+    description = "Integrated IRC client for KDE";
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = with lib.maintainers; [ fridh ];
+    homepage = "https://konversation.kde.org";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/kvirc/default.nix b/nixpkgs/pkgs/applications/networking/irc/kvirc/default.nix
new file mode 100644
index 000000000000..6fd66096b5b2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/kvirc/default.nix
@@ -0,0 +1,32 @@
+{ lib, mkDerivation, fetchFromGitHub
+, qtbase, qtmultimedia, qtsvg, qtx11extras
+, pkgconfig, cmake, gettext
+}:
+
+mkDerivation rec {
+  pname = "kvirc";
+  version = "5.0.0";
+
+  src = fetchFromGitHub {
+    owner = "kvirc";
+    repo = "KVIrc";
+    rev = version;
+    sha256 = "1dq7v6djw0gz56rvghs4r5gfhzx4sfg60rnv6b9zprw0vlvcxbn4";
+  };
+
+  buildInputs = [
+    qtbase qtmultimedia qtsvg qtx11extras
+  ];
+
+  nativeBuildInputs = [
+    pkgconfig cmake gettext
+  ];
+
+  meta = with lib; {
+    description = "Advanced IRC Client";
+    homepage = "http://www.kvirc.net/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.suhr ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/quassel/default.nix b/nixpkgs/pkgs/applications/networking/irc/quassel/default.nix
new file mode 100644
index 000000000000..86f7793819b0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/quassel/default.nix
@@ -0,0 +1,97 @@
+{ monolithic ? true # build monolithic Quassel
+, enableDaemon ? false # build Quassel daemon
+, client ? false # build Quassel client
+, tag ? "-kf5" # tag added to the package name
+, static ? false # link statically
+
+, stdenv, fetchFromGitHub, cmake, makeWrapper, dconf
+, mkDerivation, qtbase, qtscript
+, phonon, libdbusmenu, qca-qt5
+
+, withKDE ? true # enable KDE integration
+, extra-cmake-modules
+, kconfigwidgets
+, kcoreaddons
+, knotifications
+, knotifyconfig
+, ktextwidgets
+, kwidgetsaddons
+, kxmlgui
+}:
+
+let
+    inherit (stdenv) lib;
+    buildClient = monolithic || client;
+    buildCore = monolithic || enableDaemon;
+in
+
+assert monolithic -> !client && !enableDaemon;
+assert client || enableDaemon -> !monolithic;
+assert !buildClient -> !withKDE; # KDE is used by the client only
+
+let
+  edf = flag: feature: [("-D" + feature + (if flag then "=ON" else "=OFF"))];
+
+in (if !buildClient then stdenv.mkDerivation else mkDerivation) rec {
+  name = "quassel${tag}-${version}";
+  version = "0.13.1";
+
+  src = fetchFromGitHub {
+    owner = "quassel";
+    repo = "quassel";
+    rev = version;
+    sha256 = "0z8p7iv90yrrjbh31cyxhpr6hsynfmi23rlayn7p2f6ki5az7yc3";
+  };
+
+  enableParallelBuilding = true;
+
+  # Prevent ``undefined reference to `qt_version_tag''' in SSL check
+  NIX_CFLAGS_COMPILE = "-DQT_NO_VERSION_TAGGING=1";
+
+  buildInputs =
+       [ cmake makeWrapper qtbase ]
+    ++ lib.optionals buildCore [qtscript qca-qt5]
+    ++ lib.optionals buildClient [libdbusmenu phonon]
+    ++ lib.optionals (buildClient && withKDE) [
+      extra-cmake-modules kconfigwidgets kcoreaddons
+      knotifications knotifyconfig ktextwidgets kwidgetsaddons
+      kxmlgui
+    ];
+
+  cmakeFlags = [
+    "-DEMBED_DATA=OFF"
+    "-DUSE_QT5=ON"
+  ]
+    ++ edf static "STATIC"
+    ++ edf monolithic "WANT_MONO"
+    ++ edf enableDaemon "WANT_CORE"
+    ++ edf client "WANT_QTCLIENT"
+    ++ edf withKDE "WITH_KDE";
+
+  dontWrapQtApps = true;
+
+  postFixup =
+    lib.optionalString enableDaemon ''
+      wrapProgram "$out/bin/quasselcore" --suffix PATH : "${qtbase.bin}/bin"
+    '' +
+    lib.optionalString buildClient ''
+      wrapQtApp "$out/bin/quassel${lib.optionalString client "client"}" \
+        --prefix GIO_EXTRA_MODULES : "${dconf}/lib/gio/modules"
+    '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://quassel-irc.org/";
+    description = "Qt/KDE distributed IRC client suppporting a remote daemon";
+    longDescription = ''
+      Quassel IRC is a cross-platform, distributed IRC client,
+      meaning that one (or multiple) client(s) can attach to
+      and detach from a central core -- much like the popular
+      combination of screen and a text-based IRC client such
+      as WeeChat, but graphical (based on Qt4/KDE4 or Qt5/KF5).
+    '';
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ phreedom ttuegel ];
+    repositories.git = "https://github.com/quassel/quassel.git";
+    inherit (qtbase.meta) platforms;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/qweechat/default.nix b/nixpkgs/pkgs/applications/networking/irc/qweechat/default.nix
new file mode 100644
index 000000000000..27adb2cefc5f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/qweechat/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, python27Packages }:
+
+python27Packages.buildPythonApplication rec {
+  version = "2016-07-29";
+  name = "qweechat-unstable-${version}";
+  namePrefix = "";
+
+ src = fetchFromGitHub {
+    owner = "weechat";
+    repo = "qweechat";
+    rev = "f5e54d01691adb3abef47e051a6412186c33313c";
+    sha256 = "0dhlriwvkrsn7jj01p2wqhf2p63n9qd173jsgccgxlacm2zzvhaz";
+  };
+
+  prePatch = ''
+    substituteInPlace setup.py \
+      --replace 'qweechat = qweechat.qweechat' 'qweechat = qweechat.qweechat:main'
+  '';
+
+  propagatedBuildInputs = with python27Packages; [
+     pyside setuptools
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/weechat/qweechat";
+    description = "Qt remote GUI for WeeChat";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ ramkromberg ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/sic/default.nix b/nixpkgs/pkgs/applications/networking/irc/sic/default.nix
new file mode 100644
index 000000000000..69605af2f660
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/sic/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "sic";
+  version = "1.2";
+
+  makeFlags = [ "PREFIX=$(out)" ];
+  src = fetchurl {
+    url = "https://dl.suckless.org/tools/sic-${version}.tar.gz";
+    sha256 = "ac07f905995e13ba2c43912d7a035fbbe78a628d7ba1c256f4ca1372fb565185";
+  };
+
+  meta = {
+    description = "Simple IRC client";
+    homepage = "https://tools.suckless.org/sic/";
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/tiny/default.nix b/nixpkgs/pkgs/applications/networking/irc/tiny/default.nix
new file mode 100644
index 000000000000..abb296d64744
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/tiny/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, lib
+, rustPlatform
+, fetchpatch
+, fetchFromGitHub
+, pkg-config
+, dbus
+, openssl
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "tiny";
+  version = "0.5.1";
+
+  src = fetchFromGitHub {
+    owner = "osa1";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1m57xsrc7lzkrm8k1wh3yx3in5bhd0qjzygxdwr8lvigpsiy5caa";
+  };
+
+  cargoSha256 = "1s93zxk85wa7zw8745ba1sgipal75w1y18nc9vca6sig4pzvvj41";
+
+  RUSTC_BOOTSTRAP = 1;
+
+  nativeBuildInputs = lib.optional stdenv.isLinux pkg-config;
+  buildInputs = lib.optionals stdenv.isLinux [ dbus openssl ];
+
+  meta = with lib; {
+    description = "A console IRC client";
+    homepage = "https://github.com/osa1/tiny";
+    license = licenses.mit;
+    maintainers = with maintainers; [ filalex77 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/default.nix b/nixpkgs/pkgs/applications/networking/irc/weechat/default.nix
new file mode 100644
index 000000000000..866e50bd0ae2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/default.nix
@@ -0,0 +1,87 @@
+{ stdenv, fetchurl, lib
+, ncurses, openssl, aspell, gnutls, gettext
+, zlib, curl, pkgconfig, libgcrypt
+, cmake, makeWrapper, libobjc, libresolv, libiconv
+, asciidoctor # manpages
+, guileSupport ? true, guile
+, luaSupport ? true, lua5
+, perlSupport ? true, perl
+, pythonSupport ? true, python3Packages
+, rubySupport ? true, ruby
+, tclSupport ? true, tcl
+, extraBuildInputs ? []
+}:
+
+let
+  inherit (python3Packages) python;
+  plugins = [
+    { name = "perl"; enabled = perlSupport; cmakeFlag = "ENABLE_PERL"; buildInputs = [ perl ]; }
+    { name = "tcl"; enabled = tclSupport; cmakeFlag = "ENABLE_TCL"; buildInputs = [ tcl ]; }
+    { name = "ruby"; enabled = rubySupport; cmakeFlag = "ENABLE_RUBY"; buildInputs = [ ruby ]; }
+    { name = "guile"; enabled = guileSupport; cmakeFlag = "ENABLE_GUILE"; buildInputs = [ guile ]; }
+    { name = "lua"; enabled = luaSupport; cmakeFlag = "ENABLE_LUA"; buildInputs = [ lua5 ]; }
+    { name = "python"; enabled = pythonSupport; cmakeFlag = "ENABLE_PYTHON3"; buildInputs = [ python ]; }
+  ];
+  enabledPlugins = builtins.filter (p: p.enabled) plugins;
+
+  in
+    assert lib.all (p: p.enabled -> ! (builtins.elem null p.buildInputs)) plugins;
+    stdenv.mkDerivation rec {
+      version = "2.8";
+      pname = "weechat";
+
+      src = fetchurl {
+        url = "https://weechat.org/files/src/weechat-${version}.tar.bz2";
+        sha256 = "0xpzl7985j47rpmly4r833jxd448xpy7chqphaxmhlql2c0gc08z";
+      };
+
+      outputs = [ "out" "man" ] ++ map (p: p.name) enabledPlugins;
+
+      enableParallelBuilding = true;
+      cmakeFlags = with stdenv.lib; [
+        "-DENABLE_MAN=ON"
+        "-DENABLE_DOC=ON"
+        "-DENABLE_JAVASCRIPT=OFF"  # Requires v8 <= 3.24.3, https://github.com/weechat/weechat/issues/360
+        "-DENABLE_PHP=OFF"
+
+        # This just means it's okay to use Python 3 if it's in the environment.
+        "-DENABLE_PYTHON3=ON"
+      ]
+        ++ optionals stdenv.isDarwin ["-DICONV_LIBRARY=${libiconv}/lib/libiconv.dylib" "-DCMAKE_FIND_FRAMEWORK=LAST"]
+        ++ map (p: "-D${p.cmakeFlag}=" + (if p.enabled then "ON" else "OFF")) plugins
+        ;
+
+      buildInputs = with stdenv.lib; [
+          ncurses openssl aspell gnutls gettext zlib curl pkgconfig
+          libgcrypt makeWrapper cmake asciidoctor
+          ]
+        ++ optionals stdenv.isDarwin [ libobjc libresolv ]
+        ++ concatMap (p: p.buildInputs) enabledPlugins
+        ++ extraBuildInputs;
+
+      NIX_CFLAGS_COMPILE = "-I${python}/include/${python.libPrefix}"
+        # Fix '_res_9_init: undefined symbol' error
+        + (stdenv.lib.optionalString stdenv.isDarwin "-DBIND_8_COMPAT=1 -lresolv");
+
+      postInstall = with stdenv.lib; ''
+        for p in ${concatMapStringsSep " " (p: p.name) enabledPlugins}; do
+          from=$out/lib/weechat/plugins/$p.so
+          to=''${!p}/lib/weechat/plugins/$p.so
+          mkdir -p $(dirname $to)
+          mv $from $to
+        done
+      '';
+
+      meta = {
+        homepage = "http://www.weechat.org/";
+        description = "A fast, light and extensible chat client";
+        longDescription = ''
+          You can find more documentation as to how to customize this package
+          (eg. adding python modules for scripts that would require them, etc.)
+          on https://nixos.org/nixpkgs/manual/#sec-weechat .
+        '';
+        license = stdenv.lib.licenses.gpl3;
+        maintainers = with stdenv.lib.maintainers; [ lovek323 lheckemann ma27 ];
+        platforms = stdenv.lib.platforms.unix;
+      };
+    }
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/colorize_nicks/default.nix b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/colorize_nicks/default.nix
new file mode 100644
index 000000000000..646d1fa48a15
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/colorize_nicks/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, lib, fetchurl }:
+
+stdenv.mkDerivation {
+  pname = "weechat-colorize_nicks";
+  version = "26";
+
+  src = fetchurl {
+    url = "https://github.com/weechat/scripts/raw/ffda2e03486d1e90983a35ee3505b84d10fd5244/python/colorize_nicks.py";
+    sha256 = "1ldk6q4yhwgf1b8iizr971vqd9af6cz7f3krd3xw99wd1kjqqbx5";
+  };
+
+  unpackPhase = ''
+    :
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share
+    cp $src $out/share/colorize_nicks.py
+  '';
+
+  passthru = {
+    scripts = [ "colorize_nicks.py" ];
+  };
+
+  meta = with lib; {
+    description = "Use the weechat nick colors in the chat area";
+    licenses = licenses.gpl2Plus;
+    maintainers = with maintainers; [ qyliss ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/default.nix b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/default.nix
new file mode 100644
index 000000000000..8a61c4f5acce
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/default.nix
@@ -0,0 +1,22 @@
+{ callPackage, luaPackages, python3Packages }:
+
+{
+  colorize_nicks = callPackage ./colorize_nicks { };
+
+  go = callPackage ./go { };
+
+  weechat-matrix-bridge = callPackage ./weechat-matrix-bridge {
+    inherit (luaPackages) cjson luaffi;
+  };
+
+  weechat-matrix = python3Packages.callPackage ./weechat-matrix { };
+
+  wee-slack = callPackage ./wee-slack { };
+
+  weechat-autosort = callPackage ./weechat-autosort { };
+
+  weechat-otr = callPackage ./weechat-otr { };
+
+  zncplayback = callPackage ./zncplayback { };
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/go/default.nix b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/go/default.nix
new file mode 100644
index 000000000000..5f0afbfdc6d9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/go/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, lib, fetchurl }:
+
+stdenv.mkDerivation {
+  pname = "go.py";
+  version = "2.5";
+
+  src = fetchurl {
+    url = "https://github.com/weechat/scripts/raw/dc9e69f37fcdc51f0f5a8856ef977ee3d8d8e371/python/go.py";
+    sha256 = "0ajfv4sl66jq02zzmdas81rvnv2l6dl3ckb4xzkyb3kdm68w31rf";
+  };
+
+  unpackPhase = ''
+    :
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share
+    cp $src $out/share/go.py
+  '';
+
+  passthru = {
+    scripts = [ "go.py" ];
+  };
+
+  meta = with lib; {
+    description = "Quick jump to buffers";
+    licenses = licenses.gpl3;
+    maintainers = with maintainers; [ qyliss ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/default.nix b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/default.nix
new file mode 100644
index 000000000000..9650f903ed6b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, substituteAll, buildEnv, fetchFromGitHub, python3Packages }:
+
+stdenv.mkDerivation rec {
+  pname = "wee-slack";
+  version = "2.6.0";
+
+  src = fetchFromGitHub {
+    repo = "wee-slack";
+    owner = "wee-slack";
+    rev = "v${version}";
+    sha256 = "0s4qd1z40c1bczkvc840jwjmzbv7nyj06xqs1si9v54qmkh4gaq4";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./libpath.patch;
+      env = "${buildEnv {
+        name = "wee-slack-env";
+        paths = with python3Packages; [ websocket_client six ];
+      }}/${python3Packages.python.sitePackages}";
+    })
+    ./hardcode-json-file-path.patch
+  ];
+
+  postPatch = ''
+    substituteInPlace wee_slack.py --subst-var out
+  '';
+
+  passthru.scripts = [ "wee_slack.py" ];
+
+  installPhase = ''
+    mkdir -p $out/share
+    cp wee_slack.py $out/share/wee_slack.py
+    install -D -m 0444 weemoji.json $out/share/wee-slack/weemoji.json
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/wee-slack/wee-slack";
+    license = licenses.mit;
+    maintainers = with maintainers; [ willibutz ];
+    description = ''
+      A WeeChat plugin for Slack.com. Synchronizes read markers, provides typing notification, search, etc..
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/hardcode-json-file-path.patch b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/hardcode-json-file-path.patch
new file mode 100644
index 000000000000..7413a9229ce6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/hardcode-json-file-path.patch
@@ -0,0 +1,12 @@
+--- a/wee_slack.py
++++ b/wee_slack.py
+@@ -4560,8 +4560,7 @@
+ 
+ def load_emoji():
+     try:
+-        DIR = w.info_get('weechat_dir', '')
+-        with open('{}/weemoji.json'.format(DIR), 'r') as ef:
++        with open('@out@/share/wee-slack/weemoji.json', 'r') as ef:
+             emojis = json.loads(ef.read())
+             if 'emoji' in emojis:
+                 print_error('The weemoji.json file is in an old format. Please update it.')
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/libpath.patch b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/libpath.patch
new file mode 100644
index 000000000000..af2dd36b41c5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/libpath.patch
@@ -0,0 +1,13 @@
+diff --git a/wee_slack.py b/wee_slack.py
+index dbe6446..d1b7546 100644
+--- a/wee_slack.py
++++ b/wee_slack.py
+@@ -25,6 +25,8 @@ import random
+ import socket
+ import string
+ 
++sys.path.append('@env@')
++
+ from websocket import ABNF, create_connection, WebSocketConnectionClosedException
+ 
+ try:
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-autosort/default.nix b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-autosort/default.nix
new file mode 100644
index 000000000000..883ed793ced6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-autosort/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "weechat-autosort";
+  version = "3.8";
+
+  src = fetchFromGitHub {
+    owner = "de-vri-es";
+    repo = pname;
+    rev = version;
+    sha256 = "0a2gc8nhklvlivradhqy2pkymsqyy01pvzrmwg60cln8snmcqpd5";
+  };
+
+  passthru.scripts = [ "autosort.py" ];
+  installPhase = ''
+    install -D autosort.py $out/share/autosort.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Autosort is a weechat script to automatically or manually keep your buffers sorted";
+    homepage = "https://github.com/de-vri-es/weechat-autosort";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ emily ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix-bridge/default.nix b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix-bridge/default.nix
new file mode 100644
index 000000000000..f1b075e6d082
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix-bridge/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, curl, fetchFromGitHub, cjson, olm, luaffi }:
+
+stdenv.mkDerivation {
+  name = "weechat-matrix-bridge-2018-11-19";
+  src = fetchFromGitHub {
+    owner = "torhve";
+    repo = "weechat-matrix-protocol-script";
+    rev = "8d32e90d864a8f3f09ecc2857cd5dd6e39a8c3f7";
+    sha256 = "0qqd6qmkrdc0r3rnl53c3yp93fbcz7d3mdw3vq5gmdqxyym4s9lj";
+  };
+
+  patches = [
+    ./library-path.patch
+  ];
+
+  buildInputs = [ curl cjson olm luaffi ];
+
+  postPatch = ''
+    substituteInPlace matrix.lua \
+      --replace "/usr/bin/curl" "${curl}/bin/curl" \
+      --replace "__NIX_LIB_PATH__" "$out/lib/?.so" \
+      --replace "__NIX_OLM_PATH__" "$out/share/?.lua"
+
+    substituteInPlace olm.lua \
+      --replace "__NIX_LIB_PATH__" "$out/lib/?.so"
+  '';
+
+  passthru.scripts = [ "matrix.lua" ];
+
+  installPhase = ''
+    mkdir -p $out/{share,lib}
+
+    cp {matrix.lua,olm.lua} $out/share
+    cp ${cjson}/lib/lua/${cjson.lua.luaversion}/cjson.so $out/lib/cjson.so
+    cp ${olm}/lib/libolm.so $out/lib/libolm.so
+    cp ${luaffi}/lib/lua/${luaffi.lua.luaversion}/ffi.so $out/lib/ffi.so
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A WeeChat script in Lua that implements the matrix.org chat protocol";
+    homepage = "https://github.com/torhve/weechat-matrix-protocol-script";
+    maintainers = with maintainers; [ ma27 ];
+    license = licenses.mit; # see https://github.com/torhve/weechat-matrix-protocol-script/blob/0052e7275ae149dc5241226391c9b1889ecc3c6b/matrix.lua#L53
+    platforms = platforms.unix;
+
+    # As of 2019-06-30, all of the dependencies are available on macOS but the
+    # package itself does not build.
+    broken = stdenv.isDarwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix-bridge/library-path.patch b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix-bridge/library-path.patch
new file mode 100644
index 000000000000..d9945c2993b7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix-bridge/library-path.patch
@@ -0,0 +1,28 @@
+diff --git a/matrix.lua b/matrix.lua
+index b79f500..32b37a2 100644
+--- a/matrix.lua
++++ b/matrix.lua
+@@ -43,6 +43,9 @@ This script maps this as follows:
+ 
+ ]]
+ 
++package.cpath = package.cpath .. ";__NIX_LIB_PATH__"
++package.path = package.path .. ";__NIX_OLM_PATH__"
++
+ local json = require 'cjson' -- apt-get install lua-cjson
+ local olmstatus, olm = pcall(require, 'olm') -- LuaJIT olm FFI binding ln -s ~/olm/olm.lua /usr/local/share/lua/5.1
+ local w = weechat
+diff --git a/olm.lua b/olm.lua
+index 114649c..4828371 100644
+--- a/olm.lua
++++ b/olm.lua
+@@ -17,6 +17,9 @@
+  * limitations under the License.
+  */
+ --]]
++
++package.cpath = package.cpath .. ";__NIX_LIB_PATH__"
++
+ local ffi = require'ffi'
+ 
+ ffi.cdef[[
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix/default.nix b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix/default.nix
new file mode 100644
index 000000000000..aca9a9a111d6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix/default.nix
@@ -0,0 +1,79 @@
+{ buildPythonPackage
+, stdenv
+, python
+, fetchFromGitHub
+, pyopenssl
+, webcolors
+, future
+, atomicwrites
+, attrs
+, Logbook
+, pygments
+, matrix-nio
+, aiohttp
+, requests
+}:
+
+let
+  scriptPython = python.withPackages (ps: with ps; [
+    aiohttp
+    requests
+    python_magic
+  ]);
+in buildPythonPackage {
+  pname = "weechat-matrix";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "poljar";
+    repo = "weechat-matrix";
+    rev = "65a5db7291439b6132e35e8cc09ed901614fabf6";
+    sha256 = "0m3k5vrv5ab1aw1mjd0r8d71anwqzvncvv9v5zx9xp1i188sdm8x";
+  };
+
+  propagatedBuildInputs = [
+    pyopenssl
+    webcolors
+    future
+    atomicwrites
+    attrs
+    Logbook
+    pygments
+    matrix-nio
+    aiohttp
+    requests
+  ];
+
+  passthru.scripts = [ "matrix.py" ];
+
+  dontBuild = true;
+  doCheck = false;
+
+  installPhase = ''
+    mkdir -p $out/share $out/bin
+    cp $src/main.py $out/share/matrix.py
+
+    cp $src/contrib/matrix_upload.py $out/bin/matrix_upload
+    cp $src/contrib/matrix_decrypt.py $out/bin/matrix_decrypt
+    cp $src/contrib/matrix_sso_helper.py $out/bin/matrix_sso_helper
+    substituteInPlace $out/bin/matrix_upload \
+      --replace '/usr/bin/env -S python3' '${scriptPython}/bin/python'
+    substituteInPlace $out/bin/matrix_sso_helper \
+      --replace '/usr/bin/env -S python3' '${scriptPython}/bin/python'
+    substituteInPlace $out/bin/matrix_decrypt \
+      --replace '/usr/bin/env python3' '${scriptPython}/bin/python'
+
+    mkdir -p $out/${python.sitePackages}
+    cp -r $src/matrix $out/${python.sitePackages}/matrix
+  '';
+
+  dontPatchShebangs = true;
+
+  meta = with stdenv.lib; {
+    description = "A Python plugin for Weechat that lets Weechat communicate over the Matrix protocol";
+    homepage = "https://github.com/poljar/weechat-matrix";
+    license = licenses.isc;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ tilpner emily ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-otr/default.nix b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-otr/default.nix
new file mode 100644
index 000000000000..9682aa3169ac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-otr/default.nix
@@ -0,0 +1,64 @@
+{ stdenv, substituteAll, buildEnv, fetchgit, fetchFromGitHub, python3Packages, gmp }:
+
+let
+  # pure-python-otr (potr) requires an older version of pycrypto, which is
+  # not compatible with pycryptodome. Therefore, the latest patched version
+  # of pycrypto will be fetched from the Debian project.
+  # https://security-tracker.debian.org/tracker/source-package/python-crypto
+
+  pycrypto = python3Packages.buildPythonPackage rec {
+    pname = "pycrypto";
+    version = "2.6.1-10";
+
+    src = fetchgit {
+      url = "https://salsa.debian.org/sramacher/python-crypto.git";
+      rev = "debian/${version}";
+      sha256 = "10rgq8bmjfpiqqa1g1p1hh7pxlxs7x0nawvk6zip0pd6x2vsr661";
+    };
+
+    buildInputs = [ gmp ];
+
+    preConfigure = ''
+      sed -i 's,/usr/include,/no-such-dir,' configure
+      sed -i "s!,'/usr/include/'!!" setup.py
+    '';
+  };
+
+  potr = python3Packages.potr.overridePythonAttrs (oldAttrs: {
+    propagatedBuildInputs = [ pycrypto ];
+  });
+in stdenv.mkDerivation rec {
+  pname = "weechat-otr";
+  version = "1.9.2";
+
+  src = fetchFromGitHub {
+    repo = pname;
+    owner = "mmb";
+    rev = "v${version}";
+    sha256 = "1lngv98y6883vk8z2628cl4d5y8jxy39w8245gjdvshl8g18k5s2";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./libpath.patch;
+      env = "${buildEnv {
+        name = "weechat-otr-env";
+        paths = [ potr pycrypto ];
+      }}/${python3Packages.python.sitePackages}";
+    })
+  ];
+
+  passthru.scripts = [ "weechat_otr.py" ];
+
+  installPhase = ''
+    mkdir -p $out/share
+    cp weechat_otr.py $out/share/weechat_otr.py
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/mmb/weechat-otr";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ geistesk ];
+    description = "WeeChat script for Off-the-Record messaging";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-otr/libpath.patch b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-otr/libpath.patch
new file mode 100644
index 000000000000..a7b77ed9b602
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-otr/libpath.patch
@@ -0,0 +1,13 @@
+diff --git a/weechat_otr.py b/weechat_otr.py
+index 0ccfb35..c42bebf 100644
+--- a/weechat_otr.py
++++ b/weechat_otr.py
+@@ -41,6 +41,8 @@ import shlex
+ import shutil
+ import sys
+ 
++sys.path.append('@env@')
++
+ import potr
+ import weechat
+ 
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/zncplayback/default.nix b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/zncplayback/default.nix
new file mode 100644
index 000000000000..dcd74c0da0e8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/zncplayback/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, lib, fetchurl }:
+
+stdenv.mkDerivation {
+  pname = "weechat-zncplayback";
+  version = "0.1.0";
+
+  src = fetchurl {
+    url = "https://github.com/weechat/scripts/raw/643afdd25d29c2614cd67deb2388683cc270d686/python/zncplayback.py";
+    sha256 = "1mz9pmnrqv2pjk4wz9yp1bic49m8qbf4nh7pg4j7vghmpq9srkd9";
+  };
+
+  unpackPhase = ''
+    :
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share
+    cp $src $out/share/zncplayback.py
+  '';
+
+  passthru = {
+    scripts = [ "zncplayback.py" ];
+  };
+
+  meta = with lib; {
+    description = "Add support for the ZNC Playback module";
+    licenses = licenses.gpl2Plus;
+    maintainers = with maintainers; [ qyliss ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/wrapper.nix b/nixpkgs/pkgs/applications/networking/irc/weechat/wrapper.nix
new file mode 100644
index 000000000000..5c06bb8517a2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/wrapper.nix
@@ -0,0 +1,91 @@
+{ lib, runCommand, writeScriptBin, buildEnv
+, python3Packages, perlPackages, runtimeShell
+}:
+
+weechat:
+
+let
+  wrapper = {
+    installManPages ? true
+  , configure ? { availablePlugins, ... }: { plugins = builtins.attrValues availablePlugins; }
+  }:
+
+  let
+    perlInterpreter = perlPackages.perl;
+    availablePlugins = let
+        simplePlugin = name: {pluginFile = "${weechat.${name}}/lib/weechat/plugins/${name}.so";};
+      in rec {
+        python = (simplePlugin "python") // {
+          extraEnv = ''
+            export PATH="${python3Packages.python}/bin:$PATH"
+          '';
+          withPackages = pkgsFun: (python // {
+            extraEnv = ''
+              export PYTHONHOME="${python3Packages.python.withPackages pkgsFun}"
+            '';
+          });
+        };
+        perl = (simplePlugin "perl") // {
+          extraEnv = ''
+            export PATH="${perlInterpreter}/bin:$PATH"
+          '';
+          withPackages = pkgsFun: (perl // {
+            extraEnv = ''
+              ${perl.extraEnv}
+              export PERL5LIB=${perlPackages.makeFullPerlPath (pkgsFun perlPackages)}
+            '';
+          });
+        };
+        tcl = simplePlugin "tcl";
+        ruby = simplePlugin "ruby";
+        guile = simplePlugin "guile";
+        lua = simplePlugin "lua";
+      };
+
+    config = configure { inherit availablePlugins; };
+
+    plugins = config.plugins or (builtins.attrValues availablePlugins);
+
+    pluginsDir = runCommand "weechat-plugins" {} ''
+      mkdir -p $out/plugins
+      for plugin in ${lib.concatMapStringsSep " " (p: p.pluginFile) plugins} ; do
+        ln -s $plugin $out/plugins
+      done
+    '';
+
+    init = let
+      init = builtins.replaceStrings [ "\n" ] [ ";" ] (config.init or "");
+
+      mkScript = drv: lib.forEach drv.scripts (script: "/script load ${drv}/share/${script}");
+
+      scripts = builtins.concatStringsSep ";" (lib.foldl (scripts: drv: scripts ++ mkScript drv)
+        [ ] (config.scripts or []));
+    in "${scripts};${init}";
+
+    mkWeechat = bin: (writeScriptBin bin ''
+      #!${runtimeShell}
+      export WEECHAT_EXTRA_LIBDIR=${pluginsDir}
+      ${lib.concatMapStringsSep "\n" (p: lib.optionalString (p ? extraEnv) p.extraEnv) plugins}
+      exec ${weechat}/bin/${bin} "$@" --run-command ${lib.escapeShellArg init}
+    '') // {
+      inherit (weechat) name man;
+      unwrapped = weechat;
+      outputs = [ "out" "man" ];
+    };
+  in buildEnv {
+    name = "weechat-bin-env-${weechat.version}";
+    extraOutputsToInstall = lib.optionals installManPages [ "man" ];
+    paths = [
+      (mkWeechat "weechat")
+      (mkWeechat "weechat-headless")
+      (runCommand "weechat-out-except-bin" { } ''
+        mkdir $out
+        ln -sf ${weechat}/include $out/include
+        ln -sf ${weechat}/lib $out/lib
+        ln -sf ${weechat}/share $out/share
+      '')
+    ];
+    meta = builtins.removeAttrs weechat.meta [ "outputsToInstall" ];
+  };
+
+in lib.makeOverridable wrapper
diff --git a/nixpkgs/pkgs/applications/networking/irc/wraith/configure.patch b/nixpkgs/pkgs/applications/networking/irc/wraith/configure.patch
new file mode 100644
index 000000000000..e5fa2feb2019
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/wraith/configure.patch
@@ -0,0 +1,58 @@
+--- a/configure
++++ b/configure
+@@ -6029,53 +6029,8 @@
+ #AC_CHECK_HEADERS(zlib.h)
+ #EGG_CHECK_ZLIB
+ 
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for path to OpenSSL" >&5
+-$as_echo_n "checking for path to OpenSSL... " >&6; }
+-
+-
+-# Check whether --with-openssl was given.
+-if test "${with_openssl+set}" = set; then :
+-  withval=$with_openssl; with_openssl_path=$withval
+-else
+-  with_openssl_path=auto
+-fi
+-
+-
+-
+-cf_openssl_basedir=""
+-if test "$with_openssl_path" != "auto"; then
+-    cf_openssl_basedir="`echo ${with_openssl_path} | sed 's/\/$//'`"
+-else
+-    for dirs in /usr/local/ssl /usr/pkg /usr/local /usr/local/openssl; do
+-    if test -f "${dirs}/include/openssl/opensslv.h" && test -f "${dirs}/lib/libssl.so"; then
+-      cf_openssl_basedir="${dirs}"
+-      break
+-    fi
+-  done
+-  unset dirs
+-fi
+-if test ! -z "$cf_openssl_basedir"; then
+-  if test -f "${cf_openssl_basedir}/include/openssl/opensslv.h" && test -f "${cf_openssl_basedir}/lib/libssl.so"; then
+-    SSL_INCLUDES="-I${cf_openssl_basedir}/include"
+-    SSL_LIBS="-L${cf_openssl_basedir}/lib"
+-  else
+-        cf_openssl_basedir=""
+-  fi
+-else
+-    if test -f "/usr/include/openssl/opensslv.h" ; then
+-    cf_openssl_basedir="/usr"
+-  fi
+-fi
+-
+-if test ! -z "$cf_openssl_basedir"; then
+-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cf_openssl_basedir" >&5
+-$as_echo "$cf_openssl_basedir" >&6; }
+-else
+-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+-$as_echo "not found" >&6; }
+-  as_fn_error 1 "OpenSSL is required." "$LINENO" 5
+-fi
+-unset cf_openssl_basedir
++SSL_INCLUDES="-I@openssl.dev@/include"
++SSL_LIBS="-L@openssl.out@/lib"
+ 
+ save_CXX="$CXX"
+ CXX="$CXX $SSL_INCLUDES"
diff --git a/nixpkgs/pkgs/applications/networking/irc/wraith/default.nix b/nixpkgs/pkgs/applications/networking/irc/wraith/default.nix
new file mode 100644
index 000000000000..02bccb67bfe1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/wraith/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchurl, openssl }:
+
+with stdenv;
+with stdenv.lib;
+
+mkDerivation rec {
+  pname = "wraith";
+  version = "1.4.7";
+  src = fetchurl {
+    url = "mirror://sourceforge/wraithbotpack/wraith-v${version}.tar.gz";
+    sha256 = "0h6liac5y7im0jfm2sj18mibvib7d1l727fjs82irsjj1v9kif3j";
+  };
+  hardeningDisable = [ "format" ];
+  buildInputs = [ openssl ];
+  patches = [ ./configure.patch ./dlopen.patch ];
+  postPatch = ''
+    substituteInPlace configure        --subst-var-by openssl.dev ${openssl.dev} \
+                                       --subst-var-by openssl.out ${openssl.out}
+    substituteInPlace src/libssl.cc    --subst-var-by openssl ${openssl.out}
+    substituteInPlace src/libcrypto.cc --subst-var-by openssl ${openssl.out}
+  '';
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -a wraith $out/bin/wraith
+    ln -s wraith $out/bin/hub
+  '';
+
+  meta = {
+    description = "An IRC channel management bot written purely in C/C++";
+    longDescription = ''
+      Wraith is an IRC channel management bot written purely in C/C++. It has
+      been in development since late 2003. It is based on Eggdrop 1.6.12 but has
+      since evolved into something much different at its core. TCL and loadable
+      modules are currently not supported.
+
+      Maintainer's Notes:
+      Copy the binary out of the store before running it with the -C option to
+      configure it. See https://github.com/wraith/wraith/wiki/GettingStarted .
+
+      The binary will not run when moved onto non-NixOS systems; use patchelf
+      to fix its runtime dependenices.
+    '';
+    homepage = "https://wraith.botpack.net/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ elitak ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/wraith/dlopen.patch b/nixpkgs/pkgs/applications/networking/irc/wraith/dlopen.patch
new file mode 100644
index 000000000000..bfc854ef9e9c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/wraith/dlopen.patch
@@ -0,0 +1,48 @@
+diff --git a/src/libcrypto.cc b/src/libcrypto.cc
+index 0339258..68746c8 100644
+--- a/src/libcrypto.cc
++++ b/src/libcrypto.cc
+@@ -95,17 +95,9 @@ int load_libcrypto() {
+   }
+ 
+   sdprintf("Loading libcrypto");
++  dlerror(); // Clear Errors
++  libcrypto_handle = dlopen("@openssl@/lib/libcrypto.so", RTLD_LAZY|RTLD_GLOBAL);
+ 
+-  bd::Array<bd::String> libs_list(bd::String("libcrypto.so." SHLIB_VERSION_NUMBER " libcrypto.so libcrypto.so.0.9.8 libcrypto.so.7 libcrypto.so.6").split(' '));
+-
+-  for (size_t i = 0; i < libs_list.length(); ++i) {
+-    dlerror(); // Clear Errors
+-    libcrypto_handle = dlopen(bd::String(libs_list[i]).c_str(), RTLD_LAZY|RTLD_GLOBAL);
+-    if (libcrypto_handle) {
+-      sdprintf("Found libcrypto: %s", bd::String(libs_list[i]).c_str());
+-      break;
+-    }
+-  }
+   if (!libcrypto_handle) {
+     fprintf(stderr, STR("Unable to find libcrypto\n"));
+     return(1);
+diff --git a/src/libssl.cc b/src/libssl.cc
+index b432c7b..8940998 100644
+--- a/src/libssl.cc
++++ b/src/libssl.cc
+@@ -68,17 +68,9 @@ int load_libssl() {
+   }
+ 
+   sdprintf("Loading libssl");
++  dlerror(); // Clear Errors
++  libssl_handle = dlopen("@openssl@/lib/libssl.so", RTLD_LAZY);
+ 
+-  bd::Array<bd::String> libs_list(bd::String("libssl.so." SHLIB_VERSION_NUMBER " libssl.so libssl.so.0.9.8 libssl.so.7 libssl.so.6").split(' '));
+-
+-  for (size_t i = 0; i < libs_list.length(); ++i) {
+-    dlerror(); // Clear Errors
+-    libssl_handle = dlopen(bd::String(libs_list[i]).c_str(), RTLD_LAZY);
+-    if (libssl_handle) {
+-      sdprintf("Found libssl: %s", bd::String(libs_list[i]).c_str());
+-      break;
+-    }
+-  }
+   if (!libssl_handle) {
+     fprintf(stderr, STR("Unable to find libssl\n"));
+     return(1);
diff --git a/nixpkgs/pkgs/applications/networking/jmeter/default.nix b/nixpkgs/pkgs/applications/networking/jmeter/default.nix
new file mode 100644
index 000000000000..3f626a6ac483
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/jmeter/default.nix
@@ -0,0 +1,60 @@
+{ fetchurl, stdenv, jre, makeWrapper, coreutils }:
+
+stdenv.mkDerivation rec {
+  pname = "jmeter";
+  version = "5.1.1";
+  src = fetchurl {
+    url = "https://archive.apache.org/dist/jmeter/binaries/apache-${pname}-${version}.tgz";
+    sha256 = "1bmlxnlcias781mwf3wzpd4935awswbq3w8ijck65bsaw07m2kc4";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir $out
+
+    rm bin/*.bat bin/*.cmd
+
+    cp -R * $out/
+
+    substituteInPlace $out/bin/create-rmi-keystore.sh --replace \
+      "keytool -genkey" \
+      "${jre}/lib/openjdk/jre/bin/keytool -genkey"
+
+    # Prefix some scripts with jmeter to avoid clobbering the namespace
+    for i in heapdump.sh mirror-server mirror-server.sh shutdown.sh stoptest.sh create-rmi-keystore.sh; do
+      mv $out/bin/$i $out/bin/jmeter-$i
+      wrapProgram $out/bin/jmeter-$i \
+        --prefix PATH : "${jre}/bin"
+    done
+
+    wrapProgram $out/bin/jmeter --set JAVA_HOME "${jre}"
+    wrapProgram $out/bin/jmeter.sh --set JAVA_HOME "${jre}"
+  '';
+
+  doInstallCheck = true;
+
+  checkInputs = [ coreutils ];
+
+  installCheckPhase = ''
+    $out/bin/jmeter --version 2>&1 | grep -q "${version}"
+    $out/bin/jmeter-heapdump.sh > /dev/null
+    $out/bin/jmeter-shutdown.sh > /dev/null
+    $out/bin/jmeter-stoptest.sh > /dev/null
+    timeout --kill=1s 1s $out/bin/jmeter-mirror-server.sh || test "$?" = "124"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A 100% pure Java desktop application designed to load test functional behavior and measure performance";
+    longDescription = ''
+      The Apache JMeter desktop application is open source software, a 100%
+      pure Java application designed to load test functional behavior and
+      measure performance. It was originally designed for testing Web
+      Applications but has since expanded to other test functions.
+    '';
+    license = licenses.asl20;
+    maintainers = [ ];
+    priority = 1;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/jnetmap/default.nix b/nixpkgs/pkgs/applications/networking/jnetmap/default.nix
new file mode 100644
index 000000000000..e2a8a2d56bd1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/jnetmap/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, jre, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "jnetmap";
+  version = "0.5.4";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/jnetmap/jNetMap%20${version}/jNetMap-${version}.jar";
+    sha256 = "0nxsfa600jhazwbabxmr9j37mhwysp0fyrvczhv3f1smiy8rjanl";
+  };
+
+  buildInputs = [ jre makeWrapper ];
+
+  dontUnpack = true;
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    mkdir -p "$out/lib"
+
+    cp "${src}" "$out/lib/jnetmap.jar"
+    makeWrapper "${jre}/bin/java" "$out/bin/jnetmap" \
+        --add-flags "-jar \"$out/lib/jnetmap.jar\""
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Graphical network monitoring and documentation tool";
+    homepage = "http://www.rakudave.ch/jnetmap/";
+    license = licenses.gpl3Plus;
+    # Upstream supports macOS and Windows too.
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/libcoap/default.nix b/nixpkgs/pkgs/applications/networking/libcoap/default.nix
new file mode 100644
index 000000000000..d3a3dd6e29af
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/libcoap/default.nix
@@ -0,0 +1,31 @@
+{ fetchFromGitHub, automake, autoconf, which, pkgconfig, libtool, stdenv }:
+stdenv.mkDerivation rec {
+  pname = "libcoap";
+  version = "4.2.0";
+  src = fetchFromGitHub {
+    repo = "libcoap";
+    owner = "obgm";
+    rev = "v${version}";
+    fetchSubmodules = true;
+    sha256 = "0mmvkq72i4rda6b7g93qrwg2nwh2rvkq4xw70yppj51hsdrnpfl7";
+  };
+  nativeBuildInputs = [
+    automake
+    autoconf
+    which
+    libtool
+    pkgconfig
+  ];
+  preConfigure = "./autogen.sh";
+  configureFlags = [
+    "--disable-documentation"
+    "--disable-shared"
+  ];
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/obgm/libcoap";
+    description = "A CoAP (RFC 7252) implementation in C";
+    platforms = platforms.linux;
+    license = licenses.bsd2;
+    maintainers = [ maintainers.kmein ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/lieer/default.nix b/nixpkgs/pkgs/applications/networking/lieer/default.nix
new file mode 100644
index 000000000000..700ad011dff3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/lieer/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "lieer";
+  version = "1.2";
+
+  src = fetchFromGitHub {
+    owner = "gauteh";
+    repo = "lieer";
+    rev = "v${version}";
+    sha256 = "0qp8sycclzagkiszqk1pw2fr8s8s195bzy8r27dj7f5zx350nxk5";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    notmuch
+    oauth2client
+    google_api_python_client
+    tqdm
+  ];
+
+  meta = with stdenv.lib; {
+    description      = "Fast email-fetching and two-way tag synchronization between notmuch and GMail";
+    longDescription  = ''
+      This program can pull email and labels (and changes to labels)
+      from your GMail account and store them locally in a maildir with
+      the labels synchronized with a notmuch database. The changes to
+      tags in the notmuch database may be pushed back remotely to your
+      GMail account.
+    '';
+    homepage         = "https://lieer.gaute.vetsj.com/";
+    repositories.git = "https://github.com/gauteh/lieer.git";
+    license          = licenses.gpl3Plus;
+    maintainers      = with maintainers; [ flokli kaiha ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/linssid/0001-unbundled-qwt.patch b/nixpkgs/pkgs/applications/networking/linssid/0001-unbundled-qwt.patch
new file mode 100644
index 000000000000..46224ede33d4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/linssid/0001-unbundled-qwt.patch
@@ -0,0 +1,43 @@
+From e57f22a5089f194013534c9a9bbc42ee639297f1 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Sat, 19 Sep 2015 11:10:32 -0500
+Subject: [PATCH] unbundled qwt
+
+---
+ linssid-app/linssid-app.pro | 4 +---
+ linssid.pro                 | 4 +---
+ 2 files changed, 2 insertions(+), 6 deletions(-)
+
+diff --git a/linssid-app/linssid-app.pro b/linssid-app/linssid-app.pro
+index 26f61e7..7b80b60 100644
+--- a/linssid-app/linssid-app.pro
++++ b/linssid-app/linssid-app.pro
+@@ -19,13 +19,11 @@ QMAKE_CC = gcc
+ QMAKE_CXX = g++
+ DEFINES += 
+ INCLUDEPATH += /usr/include/qt5
+-# /usr/local/qwt-6.1.0/include
+-INCLUDEPATH += ../qwt-lib/src
+ # LIBS += /usr/lib/x86_64-linux-gnu/libboost_regex.a 
+ # LIBS += -lboost_regex
+ LIBS += -l:libboost_regex.a
+ # /usr/local/qwt-6.1.0/lib/libqwt.a
+-LIBS += ../qwt-lib/lib/libqwt.a
++LIBS += -lqwt
+ QMAKE_CXXFLAGS += -std=c++11
+ #
+ TARGET = linssid
+diff --git a/linssid.pro b/linssid.pro
+index 42dc277..26d1a2c 100644
+--- a/linssid.pro
++++ b/linssid.pro
+@@ -1,5 +1,3 @@
+ TEMPLATE = subdirs
+ CONFIG += ordered
+-SUBDIRS = qwt-lib \
+-          linssid-app
+-linssid-app.depends = qwt-lib
++SUBDIRS = linssid-app
+-- 
+2.5.2
+
diff --git a/nixpkgs/pkgs/applications/networking/linssid/default.nix b/nixpkgs/pkgs/applications/networking/linssid/default.nix
new file mode 100644
index 000000000000..f458e03913ba
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/linssid/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, qtbase, qtsvg, qmake, pkgconfig, boost, wirelesstools, iw, qwt, wrapQtAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "linssid";
+  version = "2.7";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/linssid/LinSSID_${version}/linssid_${version}.orig.tar.gz";
+    sha256 = "13d35rlcjncd8lx3khkgn9x8is2xjd5fp6ns5xsn3w6l4xj9b4gl";
+  };
+
+  nativeBuildInputs = [ pkgconfig qmake wrapQtAppsHook ];
+  buildInputs = [ qtbase qtsvg boost qwt ];
+
+  patches = [ ./0001-unbundled-qwt.patch ];
+
+  postPatch = ''
+    sed -e "s|/usr/include/qt5.*$|& ${qwt}/include|" -i linssid-app/linssid-app.pro
+    sed -e "s|/usr/include/|/nonexistent/|g" -i linssid-app/*.pro
+    sed -e 's|^LIBS .*= .*libboost_regex.a|LIBS += -lboost_regex|' \
+        -e "s|/usr|$out|g" \
+        -i linssid-app/linssid-app.pro linssid-app/linssid.desktop
+    sed -e "s|\.\./\.\./\.\./\.\./usr|$out|g" -i linssid-app/*.ui
+
+    # Remove bundled qwt
+    rm -fr qwt-lib
+  '';
+
+  qtWrapperArgs =
+    [ ''--prefix PATH : ${stdenv.lib.makeBinPath [ wirelesstools iw ]}'' ];
+
+  meta = with stdenv.lib; {
+    description = "Graphical wireless scanning for Linux";
+    homepage = "https://sourceforge.net/projects/linssid/";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/maestral/default.nix b/nixpkgs/pkgs/applications/networking/maestral/default.nix
new file mode 100644
index 000000000000..fe611892ae6c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/maestral/default.nix
@@ -0,0 +1,57 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, python3
+, withGui ? false
+, wrapQtAppsHook ? null
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "maestral${lib.optionalString withGui "-gui"}";
+  version = "0.6.4";
+
+  disabled = python3.pkgs.pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "SamSchott";
+    repo = "maestral-dropbox";
+    rev = "v${version}";
+    sha256 = "06psbjd205qj6vx7k7ywhclz1bs5zp43xnf275hf0k80h3b064sn";
+  };
+
+  propagatedBuildInputs = with python3.pkgs; [
+    blinker
+    bugsnag
+    click
+    dropbox
+    keyring
+    keyrings-alt
+    lockfile
+    pathspec
+    Pyro5
+    requests
+    u-msgpack-python
+    watchdog
+  ] ++ lib.optionals stdenv.isLinux [
+    sdnotify
+    systemd
+  ] ++ lib.optional withGui pyqt5;
+
+  nativeBuildInputs = lib.optional withGui wrapQtAppsHook;
+
+  postInstall = lib.optionalString withGui ''
+    makeQtWrapper $out/bin/maestral $out/bin/maestral-gui \
+      --add-flags gui
+  '';
+
+  # no tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Open-source Dropbox client for macOS and Linux";
+    license = licenses.mit;
+    maintainers = with maintainers; [ peterhoeg ];
+    platforms = platforms.unix;
+    inherit (src.meta) homepage;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/aerc/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/aerc/default.nix
new file mode 100644
index 000000000000..584128356393
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/aerc/default.nix
@@ -0,0 +1,78 @@
+{ stdenv, buildGoModule, fetchurl
+, go, ncurses, notmuch, scdoc
+, python3, perl, w3m, dante
+, fetchFromGitHub
+}:
+
+let
+  rev = "ea0df7bee433fedae5716906ea56141f92b9ce53";
+in buildGoModule rec {
+  pname = "aerc";
+  version = "unstable-2020-02-01";
+
+  src = fetchurl {
+    url = "https://git.sr.ht/~sircmpwn/aerc/archive/${rev}.tar.gz";
+    sha256 = "1bx2fypw053v3bzalfgyi6a0s5fvv040z8jy4i63s7p53m8gmzs9";
+  };
+
+  libvterm = fetchFromGitHub {
+    owner = "ddevault";
+    repo = "go-libvterm";
+    rev = "b7d861da381071e5d3701e428528d1bfe276e78f";
+    sha256 = "06vv4pgx0i6hjdjcar4ch18hp9g6q6687mbgkvs8ymmbacyhp7s6";
+  };
+
+  vendorSha256 = "0rnyjjlsxsi0y23m6ckyd52562m33qr35fvdcdzy31mbfpi8kl2k";
+
+  overrideModAttrs = (_: {
+      postBuild = ''
+      cp -r --reflink=auto ${libvterm}/libvterm vendor/github.com/ddevault/go-libvterm
+      cp -r --reflink=auto ${libvterm}/encoding vendor/github.com/ddevault/go-libvterm
+      '';
+    });
+
+  nativeBuildInputs = [
+    scdoc
+    python3.pkgs.wrapPython
+  ];
+
+  patches = [
+    ./runtime-sharedir.patch
+  ];
+
+  pythonPath = [
+    python3.pkgs.colorama
+  ];
+
+  buildInputs = [ python3 notmuch ];
+
+  GOFLAGS="-tags=notmuch";
+
+  buildPhase = "
+    runHook preBuild
+    # we use make instead of go build
+    runHook postBuild
+  ";
+
+  installPhase = ''
+    runHook preInstall
+    make PREFIX=$out install
+    wrapPythonProgramsIn $out/share/aerc/filters "$out $pythonPath"
+    runHook postInstall
+  '';
+
+  postFixup = ''
+    wrapProgram $out/bin/aerc --prefix PATH ":" \
+      "$out/share/aerc/filters:${stdenv.lib.makeBinPath [ ncurses ]}"
+    wrapProgram $out/share/aerc/filters/html --prefix PATH ":" \
+      ${stdenv.lib.makeBinPath [ w3m dante ]}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "aerc is an email client for your terminal";
+    homepage = "https://aerc-mail.org/";
+    maintainers = with maintainers; [ tadeokondrak ];
+    license = licenses.mit;
+    platforms = platforms.unix;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/aerc/runtime-sharedir.patch b/nixpkgs/pkgs/applications/networking/mailreaders/aerc/runtime-sharedir.patch
new file mode 100644
index 000000000000..ed670d61a7b3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/aerc/runtime-sharedir.patch
@@ -0,0 +1,56 @@
+From 6cf3c2e42d219b9665a43ca65f321c653b0aa102 Mon Sep 17 00:00:00 2001
+From: Tadeo Kondrak <me@tadeo.ca>
+Date: Mon, 28 Oct 2019 08:36:36 -0600
+Subject: [PATCH] Fix aerc breaking every time the package is rebuilt.
+
+On NixOS, the SHAREDIR changes on every rebuild to the package, but aerc
+fills it in as part of the default config and then installs that config
+to the users home folder. Fix this by not substituting @SHAREDIR@ in the
+default config until runtime.
+---
+ Makefile         | 2 +-
+ config/config.go | 8 ++++++++
+ 2 files changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index d1c755d..1185a96 100644
+--- a/Makefile
++++ b/Makefile
+@@ -24,7 +24,7 @@ aerc: $(GOSRC)
+ 		-o $@
+ 
+ aerc.conf: config/aerc.conf.in
+-	sed -e 's:@SHAREDIR@:$(SHAREDIR):g' > $@ < config/aerc.conf.in
++	cat config/aerc.conf.in > $@
+ 
+ DOCS := \
+ 	aerc.1 \
+diff --git a/config/config.go b/config/config.go
+index 32d07fc..8ffd3e8 100644
+--- a/config/config.go
++++ b/config/config.go
+@@ -355,6 +355,11 @@ func LoadConfigFromFile(root *string, sharedir string) (*AercConfig, error) {
+ 			return nil, err
+ 		}
+ 	}
++	if sec, err := file.GetSection("templates"); err == nil {
++		if key, err := sec.GetKey("template-dirs"); err == nil {
++			sec.NewKey("template-dirs", strings.ReplaceAll(key.String(), "@SHAREDIR@", sharedir))
++		}
++	}
+ 	file.NameMapper = mapName
+ 	config := &AercConfig{
+ 		Bindings: BindingConfig{
+@@ -423,6 +428,9 @@ func LoadConfigFromFile(root *string, sharedir string) (*AercConfig, error) {
+ 	if err = config.LoadConfig(file); err != nil {
+ 		return nil, err
+ 	}
++	for i, filter := range config.Filters {
++		config.Filters[i].Command = strings.ReplaceAll(filter.Command, "@SHAREDIR@", sharedir)
++	}
+ 	if ui, err := file.GetSection("general"); err == nil {
+ 		if err := ui.MapTo(&config.General); err != nil {
+ 			return nil, err
+-- 
+2.23.0
+
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/afew/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/afew/default.nix
new file mode 100644
index 000000000000..8b2a6f05c4e5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/afew/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, python3Packages, notmuch }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "afew";
+  version = "3.0.0";
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "18j3xyzchlslcrkycr2i59jg73cb6yh5s7l3qnl6sa7vgxcbhq7c";
+  };
+
+  nativeBuildInputs = with python3Packages; [ sphinx setuptools_scm ];
+
+  propagatedBuildInputs = with python3Packages; [
+    python3Packages.setuptools python3Packages.notmuch chardet dkimpy
+  ];
+
+  checkInputs = with python3Packages; [
+    freezegun notmuch
+  ];
+
+  makeWrapperArgs = [
+    ''--prefix PATH ':' "${notmuch}/bin"''
+  ];
+
+  outputs = [ "out" "doc" ];
+
+  postBuild =  ''
+    ${python3Packages.python.interpreter} setup.py build_sphinx -b html,man
+  '';
+
+  postInstall = ''
+    install -D -v -t $out/share/man/man1 build/sphinx/man/*
+    mkdir -p $out/share/doc/afew
+    cp -R build/sphinx/html/* $out/share/doc/afew
+  '';
+
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/afewmail/afew";
+    description = "An initial tagging script for notmuch mail";
+    license = licenses.isc;
+    maintainers = with maintainers; [ andir flokli ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/alpine/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/alpine/default.nix
new file mode 100644
index 000000000000..cfaa7dcd4af6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/alpine/default.nix
@@ -0,0 +1,32 @@
+{stdenv, fetchurl, ncurses, tcl, openssl, pam, kerberos
+, openldap
+}:
+
+stdenv.mkDerivation rec {
+  pname = "alpine";
+  version = "2.21";
+
+  src = fetchurl {
+    url = "http://alpine.x10host.com/alpine/release/src/${pname}-${version}.tar.xz";
+    sha256 = "0f3llxrmaxw7w9w6aixh752md3cdc91mwfmbarkm8s413f4bcc30";
+  };
+
+  buildInputs = [
+    ncurses tcl openssl pam kerberos openldap
+  ];
+
+  hardeningDisable = [ "format" ];
+
+  configureFlags = [
+    "--with-ssl-include-dir=${openssl.dev}/include/openssl"
+    "--with-passfile=.pine-passfile"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Console mail reader";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ raskin ];
+    platforms = platforms.linux;
+    homepage = "http://alpine.x10host.com/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/astroid/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/astroid/default.nix
new file mode 100644
index 000000000000..171136ce22ca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/astroid/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, gnome3, gmime3, webkitgtk
+, libsass, notmuch, boost, wrapGAppsHook, glib-networking, protobuf, vim_configurable
+, gtkmm3, libpeas, gsettings-desktop-schemas
+, python3, python3Packages
+, vim ? vim_configurable.override {
+                    features = "normal";
+                    gui = "auto";
+                  }
+, ronn
+}:
+
+stdenv.mkDerivation rec {
+  pname = "astroid";
+  version = "0.15";
+
+  src = fetchFromGitHub {
+    owner = "astroidmail";
+    repo = "astroid";
+    rev = "v${version}";
+    sha256 = "11cxbva9ni98gii59xmbxh4c6idcg3mg0pgdsp1c3j0yg7ix0lj3";
+  };
+
+  nativeBuildInputs = [ cmake ronn pkgconfig wrapGAppsHook ];
+
+  buildInputs = [
+    gtkmm3 gmime3 webkitgtk libsass libpeas
+    python3 python3Packages.pygobject3
+    notmuch boost gsettings-desktop-schemas gnome3.adwaita-icon-theme
+    glib-networking protobuf
+   ] ++ (if vim == null then [] else [ vim ]);
+
+  postPatch = ''
+    sed -i "s~gvim ~${vim}/bin/vim -g ~g" src/config.cc
+    sed -i "s~ -geom 10x10~~g" src/config.cc
+  '';
+
+  postInstall = ''
+    wrapProgram "$out/bin/astroid" --set CHARSET=en_us.UTF-8
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://astroidmail.github.io/";
+    description = "GTK frontend to the notmuch mail system";
+    maintainers = with maintainers; [ bdimcheff SuprDewd ];
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/balsa/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/balsa/default.nix
new file mode 100644
index 000000000000..055aa15b2ec8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/balsa/default.nix
@@ -0,0 +1,77 @@
+{ stdenv
+, fetchurl
+, glib
+, gmime3
+, gnutls
+, gobject-introspection
+, gpgme
+, gtk3
+, gtksourceview
+, gtkspell3
+, intltool
+, libcanberra-gtk3
+, libesmtp
+, libical
+, libnotify
+, libsecret
+, openssl
+, pkgconfig
+, webkitgtk
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "balsa";
+  version = "2.6.1";
+
+  src = fetchurl {
+    url = "https://pawsa.fedorapeople.org/balsa/${pname}-${version}.tar.bz2";
+    sha256 = "1xkxx801p7sbfkn0bh3cz85wra4xf1z1zhjqqc80z1z1nln7fhb4";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    intltool
+    gobject-introspection
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gmime3
+    gnutls
+    gpgme
+    gtk3
+    gtksourceview
+    gtkspell3
+    libcanberra-gtk3
+    libesmtp
+    libical
+    libnotify
+    libsecret
+    openssl
+    webkitgtk
+  ];
+
+  configureFlags = [
+    "--with-canberra"
+    "--with-gtksourceview"
+    "--with-libsecret"
+    "--with-ssl"
+    "--with-unique"
+    "--without-gnome"
+    "--with-spell-checker=gtkspell"
+  ];
+
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "http://pawsa.fedorapeople.org/balsa/";
+    description = "An e-mail client for GNOME";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/default.nix
new file mode 100644
index 000000000000..5f5e66597acc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/default.nix
@@ -0,0 +1,112 @@
+{ config, fetchurl, stdenv, wrapGAppsHook, autoreconfHook
+, curl, dbus, dbus-glib, enchant, gtk2, gnutls, gnupg, gpgme
+, libarchive, libcanberra-gtk2, libetpan, libnotify, libsoup, libxml2, networkmanager
+, openldap, perl, pkgconfig, poppler, python, shared-mime-info
+, glib-networking, gsettings-desktop-schemas, libSM, libytnef, libical
+# Build options
+# TODO: A flag to build the manual.
+# TODO: Plugins that complain about their missing dependencies, even when
+#       provided:
+#         gdata requires libgdata
+#         geolocation requires libchamplain
+, enableLdap ? false
+, enableNetworkManager ? config.networking.networkmanager.enable or false
+, enablePgp ? true
+, enablePluginArchive ? false
+, enablePluginNotificationDialogs ? true
+, enablePluginNotificationSounds ? true
+, enablePluginPdf ? false
+, enablePluginPython ? false
+, enablePluginRavatar ? false
+, enablePluginRssyl ? false
+, enablePluginSmime ? false
+, enablePluginSpamassassin ? false
+, enablePluginSpamReport ? false
+, enablePluginVcalendar ? false
+, enableSpellcheck ? false
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "claws-mail";
+  version = "3.17.5";
+
+  src = fetchurl {
+    url = "http://www.claws-mail.org/download.php?file=releases/claws-mail-${version}.tar.xz";
+    sha256 = "1gjrmdmhc7zzilrlss9yl86ybv9sra8v0qi7mkwv7d9azidx5kns";
+  };
+
+  outputs = [ "out" "dev" ];
+
+  patches = [ ./mime.patch ];
+
+  preConfigure = ''
+    # autotools check tries to dlopen libpython as a requirement for the python plugin
+    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${python}/lib
+  '';
+
+  postPatch = ''
+    substituteInPlace src/procmime.c \
+        --subst-var-by MIMEROOTDIR ${shared-mime-info}/share
+  '';
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig wrapGAppsHook python.pkgs.wrapPython ];
+  propagatedBuildInputs = with python.pkgs; [ python ] ++ optionals enablePluginPython [ pygtk pygobject2 ];
+
+  buildInputs =
+    [ curl dbus dbus-glib gtk2 gnutls gsettings-desktop-schemas
+      libetpan perl glib-networking libSM libytnef
+    ]
+    ++ optional enableSpellcheck enchant
+    ++ optionals (enablePgp || enablePluginSmime) [ gnupg gpgme ]
+    ++ optional enablePluginArchive libarchive
+    ++ optional enablePluginNotificationSounds libcanberra-gtk2
+    ++ optional enablePluginNotificationDialogs libnotify
+    ++ optional enablePluginRssyl libxml2
+    ++ optional enableNetworkManager networkmanager
+    ++ optional enableLdap openldap
+    ++ optional enablePluginPdf poppler
+    ++ optional enablePluginVcalendar libical;
+
+  configureFlags =
+    optional (!enableLdap) "--disable-ldap"
+    ++ optional (!enableNetworkManager) "--disable-networkmanager"
+    ++ optionals (!enablePgp) [
+      "--disable-pgpcore-plugin"
+      "--disable-pgpinline-plugin"
+      "--disable-pgpmime-plugin"
+    ]
+    ++ optional (!enablePluginArchive) "--disable-archive-plugin"
+    ++ optional (!enablePluginPdf) "--disable-pdf_viewer-plugin"
+    ++ optional (!enablePluginPython) "--disable-python-plugin"
+    ++ optional (!enablePluginRavatar) "--disable-libravatar-plugin"
+    ++ optional (!enablePluginRssyl) "--disable-rssyl-plugin"
+    ++ optional (!enablePluginSmime) "--disable-smime-plugin"
+    ++ optional (!enablePluginSpamassassin) "--disable-spamassassin-plugin"
+    ++ optional (!enablePluginSpamReport) "--disable-spam_report-plugin"
+    ++ optional (!enablePluginVcalendar) "--disable-vcalendar-plugin"
+    ++ optional (!enableSpellcheck) "--disable-enchant";
+
+  enableParallelBuilding = true;
+
+  pythonPath = with python.pkgs; [ pygobject2 pygtk ];
+
+  preFixup = ''
+    buildPythonPath "$out $pythonPath"
+    gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share" --prefix PYTHONPATH : "$program_PYTHONPATH")
+  '';
+
+  postInstall = ''
+    mkdir -p $out/share/applications
+    cp claws-mail.desktop $out/share/applications
+  '';
+
+  meta = {
+    description = "The user-friendly, lightweight, and fast email client";
+    homepage = "https://www.claws-mail.org/";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ fpletz globin orivej ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/gtk3.nix b/nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/gtk3.nix
new file mode 100644
index 000000000000..1e1909e7109a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/gtk3.nix
@@ -0,0 +1,121 @@
+{ config, fetchgit, stdenv, wrapGAppsHook, autoreconfHook, bison, flex
+, curl, dbus, dbus-glib, enchant, gtk3, gnutls, gnupg, gpgme
+, libarchive, libcanberra-gtk3, libetpan, libnotify, libsoup, libxml2, networkmanager
+, openldap, perl, pkgconfig, poppler, python, shared-mime-info, webkitgtk
+, glib-networking, gsettings-desktop-schemas, libSM, libytnef, libical
+# Build options
+# TODO: A flag to build the manual.
+# TODO: Plugins that complain about their missing dependencies, even when
+#       provided:
+#         gdata requires libgdata
+#         geolocation requires libchamplain
+, enableLdap ? false
+, enableNetworkManager ? config.networking.networkmanager.enable or false
+, enablePgp ? true
+, enablePluginArchive ? false
+, enablePluginFancy ? true
+, enablePluginNotificationDialogs ? true
+, enablePluginNotificationSounds ? true
+, enablePluginPdf ? false
+, enablePluginPython ? false
+, enablePluginRavatar ? false
+, enablePluginRssyl ? false
+, enablePluginSmime ? false
+, enablePluginSpamassassin ? false
+, enablePluginSpamReport ? false
+, enablePluginVcalendar ? false
+, enableSpellcheck ? false
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "claws-mail-gtk3";
+  version = "3.17.5";
+
+  src = fetchgit {
+    url = "git://git.claws-mail.org/claws.git";
+    rev = "c1e1902323c2b5dfe82144328b7933dc857ef343"; # this commit is "for release 3.17.5"
+    sha256 = "0cqzlzcms6alvsdsbcc06bsdi1h349b16qngn2z1p8fz16x6s6cy";
+  };
+
+  outputs = [ "out" "dev" ];
+
+  patches = [ ./mime.patch ];
+
+  preConfigure = ''
+    # autotools check tries to dlopen libpython as a requirement for the python plugin
+    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${python}/lib
+    # generate version without .git
+    [ -e version ] || echo "echo ${version}" > version
+  '';
+
+  postPatch = ''
+    substituteInPlace src/procmime.c \
+        --subst-var-by MIMEROOTDIR ${shared-mime-info}/share
+  '';
+
+  nativeBuildInputs = [ autoreconfHook bison flex pkgconfig wrapGAppsHook python.pkgs.wrapPython ];
+  propagatedBuildInputs = with python.pkgs; [ python ] ++ optionals enablePluginPython [ pygtk pygobject2 ];
+
+  buildInputs =
+    [ curl dbus dbus-glib gtk3 gnutls gsettings-desktop-schemas
+      libetpan perl glib-networking libSM libytnef
+    ]
+    ++ optional enableSpellcheck enchant
+    ++ optionals (enablePgp || enablePluginSmime) [ gnupg gpgme ]
+    ++ optional enablePluginArchive libarchive
+    ++ optional enablePluginNotificationSounds libcanberra-gtk3
+    ++ optional enablePluginNotificationDialogs libnotify
+    ++ optional enablePluginFancy libsoup
+    ++ optional enablePluginRssyl libxml2
+    ++ optional enableNetworkManager networkmanager
+    ++ optional enableLdap openldap
+    ++ optional enablePluginPdf poppler
+    ++ optional enablePluginFancy webkitgtk
+    ++ optional enablePluginVcalendar libical;
+
+  configureFlags =
+    optional (!enableLdap) "--disable-ldap"
+    ++ optional (!enableNetworkManager) "--disable-networkmanager"
+    ++ optionals (!enablePgp) [
+      "--disable-pgpcore-plugin"
+      "--disable-pgpinline-plugin"
+      "--disable-pgpmime-plugin"
+    ]
+    ++ optional (!enablePluginArchive) "--disable-archive-plugin"
+    ++ optional (!enablePluginFancy) "--disable-fancy-plugin"
+    ++ optional (!enablePluginPdf) "--disable-pdf_viewer-plugin"
+    ++ optional (!enablePluginPython) "--disable-python-plugin"
+    ++ optional (!enablePluginRavatar) "--disable-libravatar-plugin"
+    ++ optional (!enablePluginRssyl) "--disable-rssyl-plugin"
+    ++ optional (!enablePluginSmime) "--disable-smime-plugin"
+    ++ optional (!enablePluginSpamassassin) "--disable-spamassassin-plugin"
+    ++ optional (!enablePluginSpamReport) "--disable-spam_report-plugin"
+    ++ optional (!enablePluginVcalendar) "--disable-vcalendar-plugin"
+    ++ optional (!enableSpellcheck) "--disable-enchant";
+
+  enableParallelBuilding = true;
+
+  pythonPath = with python.pkgs; [ pygobject2 pygtk ];
+
+  preFixup = ''
+    buildPythonPath "$out $pythonPath"
+    gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share" --prefix PYTHONPATH : "$program_PYTHONPATH")
+  '';
+
+  postInstall = ''
+    mkdir -p $out/share/applications
+    cp claws-mail.desktop $out/share/applications
+  '';
+
+  NIX_CFLAGS_COMPILE = [ "-Wno-deprecated-declarations" ];
+
+  meta = {
+    description = "The user-friendly, lightweight, and fast email client";
+    homepage = "https://www.claws-mail.org/";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ fpletz globin orivej ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/mime.patch b/nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/mime.patch
new file mode 100644
index 000000000000..2ff4269c3329
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/mime.patch
@@ -0,0 +1,28 @@
+diff --git a/src/procmime.c b/src/procmime.c
+index bd3239e..06a3b26 100644
+--- a/src/procmime.c
++++ b/src/procmime.c
+@@ -1144,20 +1144,16 @@ GList *procmime_get_mime_type_list(void)
+ 	MimeType *mime_type;
+ 	gboolean fp_is_glob_file = TRUE;
+ 
+ 	if (mime_type_list) 
+ 		return mime_type_list;
+-	
+-#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__)
+-	if ((fp = claws_fopen(DATAROOTDIR "/mime/globs", "rb")) == NULL) 
+-#else
+-	if ((fp = claws_fopen("/usr/share/mime/globs", "rb")) == NULL) 
+-#endif
++
++	if ((fp = claws_fopen("@MIMEROOTDIR@/mime/globs", "rb")) == NULL)
+ 	{
+ 		fp_is_glob_file = FALSE;
+ 		if ((fp = claws_fopen("/etc/mime.types", "rb")) == NULL) {
+ 			if ((fp = claws_fopen(SYSCONFDIR "/mime.types", "rb")) 
+ 				== NULL) {
+ 				FILE_OP_ERROR(SYSCONFDIR "/mime.types", 
+ 					"claws_fopen");
+ 				return NULL;
+ 			}
+
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/hasmail/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/hasmail/default.nix
new file mode 100644
index 000000000000..b02788e67722
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/hasmail/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, pkgconfig
+, gobject-introspection
+, pango
+, cairo
+, gtk2
+}:
+
+buildGoModule rec {
+  pname = "hasmail-unstable";
+  version = "2019-08-24";
+
+  src = fetchFromGitHub {
+    owner = "jonhoo";
+    repo = "hasmail";
+    rev = "eb52536d26815383bfe5990cd5ace8bb9d036c8d";
+    sha256 = "1p6kwa5xk1mb1fkkxz1b5rcyp5kb4zc8nfif1gk6fab6wbdj9ia1";
+  };
+
+  vendorSha256 = "0sblgjmn3i3k31jfq5zy3bx7bv5z2cg6rjzr7aj87c57yhzzcmk7";
+
+  nativeBuildInputs = [
+    pkgconfig
+  ];
+
+  buildInputs = [
+    pango
+    cairo
+    gtk2
+  ];
+
+  meta = with lib; {
+    description = "Simple tray icon for detecting new email on IMAP servers";
+    homepage = "https://github.com/jonhoo/hasmail";
+    license = licenses.unlicense;
+    maintainers = with maintainers; [ doronbehar ];
+    platforms = platforms.all;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/imapfilter.nix b/nixpkgs/pkgs/applications/networking/mailreaders/imapfilter.nix
new file mode 100644
index 000000000000..b677d82dce47
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/imapfilter.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, openssl, lua, pcre }:
+
+stdenv.mkDerivation rec {
+  pname = "imapfilter";
+  version = "2.6.16";
+
+  src = fetchFromGitHub {
+    owner = "lefcha";
+    repo = "imapfilter";
+    rev = "v${version}";
+    sha256 = "0f65sg6hhv6778fxwsz4hvarbm97dsb8jj0mg7a9qs273r35pqck";
+  };
+  makeFlags = [
+    "SSLCAFILE=/etc/ssl/certs/ca-bundle.crt"
+    "PREFIX=$(out)"
+  ];
+
+  propagatedBuildInputs = [ openssl pcre lua ];
+
+  meta = {
+    homepage = "https://github.com/lefcha/imapfilter";
+    description = "Mail filtering utility";
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = with stdenv.lib.maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/inboxer/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/inboxer/default.nix
new file mode 100644
index 000000000000..189ac1e6aaed
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/inboxer/default.nix
@@ -0,0 +1,87 @@
+{ stdenv, fetchurl, binutils, patchelf, makeWrapper
+, expat, xorg, gdk-pixbuf, glib, gnome2, cairo, atk, freetype
+, fontconfig, dbus, nss, nspr, gtk2-x11, alsaLib, cups, libpulseaudio, udev }:
+
+stdenv.mkDerivation rec {
+  pname = "inboxer";
+  version = "1.2.1";
+
+  meta = with stdenv.lib; {
+    description = "Unofficial, free and open-source Google Inbox Desktop App";
+    homepage    = "https://denysdovhan.com/inboxer";
+    maintainers = [ maintainers.mgttlinger ];
+    license     = licenses.mit;
+    platforms   = [ "x86_64-linux" ];
+  };
+
+  src = fetchurl {
+    url = "https://github.com/denysdovhan/inboxer/releases/download/v${version}/inboxer_${version}_amd64.deb";
+    sha256 = "0nyxas07d6ckgjazxapmc6iyakd2cddla6wflr5rhfp78d7kax3a";
+  };
+
+  unpackPhase = ''
+    ar p $src data.tar.xz | tar xJ
+  '';
+  nativeBuildInputs = [ patchelf makeWrapper ];
+  buildInputs = [ binutils ];
+
+  preFixup = with stdenv.lib; let
+    lpath = makeLibraryPath [
+      alsaLib
+      atk
+      cairo
+      cups
+      dbus
+      nss
+      nspr
+      freetype
+      fontconfig
+      gtk2-x11
+      xorg.libX11
+      xorg.libXcursor
+      xorg.libXdamage
+      xorg.libXi
+      xorg.libXext
+      xorg.libXfixes
+      xorg.libXrandr
+      xorg.libXrender
+      xorg.libXcomposite
+      xorg.libXtst
+      xorg.libXScrnSaver
+      xorg.libxcb
+      gdk-pixbuf
+      glib
+      gnome2.pango
+      gnome2.GConf
+      expat
+      stdenv.cc.cc.lib
+      libpulseaudio
+      udev
+    ];
+  in ''
+    patchelf \
+      --set-rpath "$out/opt/Inboxer:${lpath}" \
+      $out/opt/Inboxer/libnode.so
+    patchelf \
+      --set-rpath "$out/opt/Inboxer:${lpath}" \
+      $out/opt/Inboxer/libffmpeg.so
+
+    patchelf \
+      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "$out/opt/Inboxer:${lpath}" \
+      $out/opt/Inboxer/inboxer
+
+    wrapProgram $out/opt/Inboxer/inboxer --set LD_LIBRARY_PATH "${xorg.libxkbfile}/lib:${lpath}"
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -R usr/share opt $out/
+    # fix the path in the desktop file
+    substituteInPlace \
+      $out/share/applications/inboxer.desktop \
+      --replace /opt/ $out/opt/
+    # symlink the binary to bin/
+    ln -s $out/opt/Inboxer/inboxer $out/bin/inboxer
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/lumail/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/lumail/default.nix
new file mode 100644
index 000000000000..3dd03c971203
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/lumail/default.nix
@@ -0,0 +1,82 @@
+{ stdenv, fetchurl, pkgconfig, lua, file, ncurses, gmime, pcre-cpp
+, perl, perlPackages, makeWrapper
+, debugBuild ? false
+, alternativeGlobalConfigFilePath ? null
+}:
+
+let
+  version    = "3.1";
+  binaryName = if debugBuild then "lumail2-debug" else "lumail2";
+  alternativeConfig = builtins.toFile "lumail2.lua"
+    (builtins.readFile alternativeGlobalConfigFilePath);
+
+  globalConfig = if alternativeGlobalConfigFilePath == null then ''
+    mkdir -p $out/etc/lumail2
+    cp global.config.lua $out/etc/lumail2.lua
+    for n in ./lib/*.lua; do
+      cp "$n" $out/etc/lumail2/
+    done
+  '' else ''
+    ln -s ${alternativeConfig} $out/etc/lumail2.lua
+  '';
+
+  getPath  = type : "${lua}/lib/?.${type};";
+  luaPath  = getPath "lua";
+  luaCPath = getPath "so";
+in
+stdenv.mkDerivation {
+  pname = "lumail";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://lumail.org/download/lumail-${version}.tar.gz";
+    sha256 = "0vj7p7f02m3w8wb74ilajcwznc4ai4h2ikkz9ildy0c00aqsi5w4";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ pkgconfig makeWrapper ];
+  buildInputs = [
+    lua file ncurses gmime pcre-cpp
+    perl perlPackages.JSON perlPackages.NetIMAPClient
+  ];
+
+  preConfigure = ''
+    sed -e 's|"/etc/lumail2|LUMAIL_LUAPATH"/..|' -i src/lumail2.cc src/imap_proxy.cc
+
+    perlFlags=
+    for i in $(IFS=:; echo $PERL5LIB); do
+        perlFlags="$perlFlags -I$i"
+    done
+
+    sed -e "s|^#\!\(.*/perl.*\)$|#\!\1$perlFlags|" -i perl.d/imap-proxy
+  '';
+
+  buildFlags = stdenv.lib.optional debugBuild "lumail2-debug";
+
+  installPhase = ''
+    mkdir -p $out/bin || true
+    install -m755 ${binaryName} $out/bin/
+  ''
+  + globalConfig
+  + ''
+    wrapProgram $out/bin/${binaryName} \
+        --prefix LUA_PATH : "${luaPath}" \
+        --prefix LUA_CPATH : "${luaCPath}"
+  '';
+
+  makeFlags = [
+    "LVER=lua"
+    "PREFIX=$(out)"
+    "SYSCONFDIR=$(out)/etc"
+    "LUMAIL_LIBS=$(out)/etc/lumail2"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Console-based email client";
+    homepage = "https://lumail.org/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [orivej];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/mailcheck/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/mailcheck/default.nix
new file mode 100644
index 000000000000..96ce99580fcb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/mailcheck/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "mailcheck";
+  version = "1.91.2";
+
+  patches = [ ./mailcheck-Makefile.patch ];
+
+  src = fetchurl {
+    url = "mirror://sourceforge/mailcheck/mailcheck_${version}.tar.gz";
+    sha256 = "0p0azaxsnjvjbg41ycicc1i0kzw6jiynq8k49cfkdhlckxfdm9kc";
+  };
+
+  meta = {
+    description = "Simple command line tool to check for new messages";
+    homepage    = "http://mailcheck.sourceforge.net/";
+    license     = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [ kovirobi ];
+    platforms   = stdenv.lib.platforms.linux;
+    inherit version;
+
+    longDescription = ''
+      A simple command line tool to check for new mail in local mbox and
+      maildir and remote POP3 and IMAP mailboxes.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/mailcheck/mailcheck-Makefile.patch b/nixpkgs/pkgs/applications/networking/mailreaders/mailcheck/mailcheck-Makefile.patch
new file mode 100644
index 000000000000..46b3bff4f7a9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/mailcheck/mailcheck-Makefile.patch
@@ -0,0 +1,22 @@
+diff -u a/Makefile b/Makefile
+--- a/Makefile	2015-04-05 19:31:41.871227295 +0100
++++ b/Makefile	2015-04-05 19:42:49.743517508 +0100
+@@ -1,3 +1,5 @@
++prefix=$(out)
++
+ all: mailcheck
+ 
+ debug: mailcheck.c netrc.c netrc.h socket.c
+@@ -7,8 +9,10 @@
+ 	$(CC) -Wall -O2 mailcheck.c netrc.c socket.c -s -o mailcheck
+ 
+ install: mailcheck
+-	install mailcheck $(prefix)/usr/bin
+-	install -m 644 mailcheckrc $(prefix)/etc
++	[ -d $(prefix)/bin ] || mkdir $(prefix)/bin
++	[ -d $(prefix)/etc ] || mkdir $(prefix)/etc
++	install mailcheck $(prefix)/bin/
++	install -m 644 mailcheckrc $(prefix)/etc/
+ 
+ distclean: clean
+ 
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/mailnag/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/mailnag/default.nix
new file mode 100644
index 000000000000..8341cc63092c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/mailnag/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchurl, gettext, gtk3, pythonPackages
+, gdk-pixbuf, libnotify, gst_all_1
+, libgnome-keyring3
+, wrapGAppsHook, gnome3
+# otherwise passwords are stored unencrypted
+, withGnomeKeyring ? true
+}:
+
+let
+  inherit (pythonPackages) python;
+in pythonPackages.buildPythonApplication rec {
+  pname = "mailnag";
+  version = "1.3.0";
+
+  src = fetchurl {
+    url = "https://github.com/pulb/mailnag/archive/v${version}.tar.gz";
+    sha256 = "0cp5pad6jzd5c14pddbi9ap5bi78wjhk1x2p0gbblmvmcasw309s";
+  };
+
+  buildInputs = [
+    gtk3 gdk-pixbuf libnotify gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good
+    gst_all_1.gst-plugins-bad
+    gnome3.adwaita-icon-theme
+  ] ++ stdenv.lib.optional withGnomeKeyring libgnome-keyring3;
+
+  nativeBuildInputs = [
+    gettext
+    wrapGAppsHook
+  ];
+
+  propagatedBuildInputs = with pythonPackages; [
+    pygobject3 dbus-python pyxdg
+  ];
+
+  buildPhase = "";
+
+  installPhase = "${python}/bin/python setup.py install --prefix=$out";
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "An extensible mail notification daemon";
+    homepage = "https://github.com/pulb/mailnag";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/mailpile/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/mailpile/default.nix
new file mode 100644
index 000000000000..6bd0995623db
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/mailpile/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchFromGitHub, python2Packages, gnupg1orig, openssl, git }:
+
+python2Packages.buildPythonApplication rec {
+  pname = "mailpile";
+  version = "1.0.0rc2";
+
+  src = fetchFromGitHub {
+    owner = "mailpile";
+    repo = "Mailpile";
+    rev = version;
+    sha256 = "1z5psh00fjr8gnl4yjcl4m9ywfj24y1ffa2rfb5q8hq4ksjblbdj";
+  };
+
+  postPatch = ''
+    patchShebangs scripts
+  '';
+
+  nativeBuildInputs = with python2Packages; [ pbr git ];
+  PBR_VERSION=version;
+
+  propagatedBuildInputs = with python2Packages; [
+    appdirs
+    cryptography
+    fasteners
+    gnupg1orig
+    jinja2
+    pgpdump
+    pillow
+    python2Packages.lxml
+    spambayes
+  ];
+
+  postInstall = ''
+    wrapProgram $out/bin/mailpile \
+      --prefix PATH ":" "${stdenv.lib.makeBinPath [ gnupg1orig openssl ]}" \
+      --set-default MAILPILE_SHARED "$out/share/mailpile"
+  '';
+
+  # No tests were found
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A modern, fast web-mail client with user-friendly encryption and privacy features";
+    homepage = "https://www.mailpile.is/";
+    license = [ licenses.asl20 licenses.agpl3 ];
+    platforms = platforms.linux;
+    maintainers = [ maintainers.domenkozar ];
+    knownVulnerabilities = [
+      "Numerous and uncounted, upstream has requested we not package it. See more: https://github.com/NixOS/nixpkgs/pull/23058#issuecomment-283515104"
+    ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/mblaze/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/mblaze/default.nix
new file mode 100644
index 000000000000..fc9001e59e32
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/mblaze/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, lib, fetchFromGitHub, fetchpatch, libiconv, ruby ? null }:
+
+stdenv.mkDerivation rec {
+  pname = "mblaze";
+  version = "0.5.1";
+
+  buildInputs = [ ruby ] ++ lib.optionals stdenv.isDarwin [ libiconv ];
+
+  src = fetchFromGitHub {
+    owner = "chneukirchen";
+    repo = "mblaze";
+    rev = "v${version}";
+    sha256 = "11x548dl2jy9cmgsakqrzfdq166whhk4ja7zkiaxrapkjmkf6pbh";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/leahneukirchen/mblaze/commit/53151f4f890f302291eb8d3375dec4f8ecb66ed7.patch";
+      sha256 = "1mcyrh053iiyzdhgm09g5h3a77np496whnc7jr4agpk1nkbcpfxc";
+    })
+  ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  postInstall = ''
+    install -Dm644 -t $out/share/zsh/site-functions contrib/_mblaze
+  '' + lib.optionalString (ruby != null) ''
+    install -Dt $out/bin contrib/msuck contrib/mblow
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/chneukirchen/mblaze";
+    description = "Unix utilities to deal with Maildir";
+    license = licenses.cc0;
+    platforms = platforms.all;
+    maintainers = [ maintainers.ajgrf ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/meli/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/meli/default.nix
new file mode 100644
index 000000000000..719965455f9c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/meli/default.nix
@@ -0,0 +1,50 @@
+{ stdenv
+, lib
+, fetchgit
+, rustPlatform
+, pkgconfig
+, openssl
+, dbus
+, sqlite
+, file
+, gzip
+, notmuch
+  # Build with support for notmuch backend
+, withNotmuch ? true
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "meli";
+  version = "alpha-0.5.1";
+
+  src = fetchgit {
+    url = "https://git.meli.delivery/meli/meli.git";
+    rev = version;
+    sha256 = "1y5567hdm1s2s272drxvmp6x4y1jpyl7423iz58hgqcsjm9085zv";
+  };
+
+  cargoSha256 = "040dfr09bg5z5pn68dy323hcppd599d3f6k7zxqw5f8n4whnlc9y";
+
+  cargoBuildFlags = lib.optional withNotmuch "--features=notmuch";
+
+  nativeBuildInputs = [ pkgconfig gzip ];
+
+  buildInputs = [ openssl dbus sqlite ] ++ lib.optional withNotmuch notmuch;
+
+  checkInputs = [ file ];
+
+  postInstall = ''
+    mkdir -p $out/share/man/man1
+    gzip < meli.1 > $out/share/man/man1/meli.1.gz
+    mkdir -p $out/share/man/man5
+    gzip < meli.conf.5 > $out/share/man/man5/meli.conf.5.gz
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Experimental terminal mail client aiming for configurability and extensibility with sane defaults";
+    homepage = "https://meli.delivery";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ maintainers."0x4A6F" matthiasbeyer erictapen ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/mlarchive2maildir/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/mlarchive2maildir/default.nix
new file mode 100644
index 000000000000..c7554fc84b08
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/mlarchive2maildir/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, python3, notmuch }:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "mlarchive2maildir";
+  version = "0.0.8";
+
+  src = python3.pkgs.fetchPypi {
+    inherit pname version;
+    sha256 = "1din3yay2sas85178v0xr0hbm2396y4dalkcqql1ny9vdm94h6sp";
+  };
+
+  nativeBuildInputs = with python3.pkgs; [ setuptools_scm ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    beautifulsoup4
+    click
+    click-log
+    requests
+    six
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/flokli/mlarchive2maildir";
+    description = "Imports mail from (pipermail) archives into a maildir";
+    license = licenses.mit;
+    maintainers = with maintainers; [ andir flokli ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/mmh/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/mmh/default.nix
new file mode 100644
index 000000000000..7d6254ed13cc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/mmh/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, ncurses, autoreconfHook, flex }:
+let rev = "431604647f89d5aac7b199a7883e98e56e4ccf9e";
+in stdenv.mkDerivation rec {
+  pname = "mmh-unstable";
+  version = "2019-09-08";
+
+  src = fetchurl {
+    url = "http://git.marmaro.de/?p=mmh;a=snapshot;h=${rev};sf=tgz";
+    name = "mmh-${rev}.tgz";
+    sha256 = "1q97p4g3f1q2m567i2dbx7mm7ixw3g91ww2rymwj42cxk9iyizhv";
+  };
+
+  buildInputs = [ ncurses ];
+  nativeBuildInputs = [ autoreconfHook flex ];
+
+  meta = with stdenv.lib; {
+    description = "Set of electronic mail handling programs";
+    homepage = "http://marmaro.de/prog/mmh";
+    license = licenses.bsd3;
+    platforms = platforms.unix;
+    broken = stdenv.isDarwin;
+    maintainers = with maintainers; [ kaction ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/msgviewer/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/msgviewer/default.nix
new file mode 100644
index 000000000000..3461b3b560f9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/msgviewer/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, makeWrapper, unzip, jre, runtimeShell }:
+
+let
+  version = "1.9";
+  name = "msgviewer-${version}";
+  uname = "MSGViewer-${version}";
+
+in stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchurl {
+    url    = "mirror://sourceforge/msgviewer/${uname}/${uname}.zip";
+    sha256 = "0igmr8c0757xsc94xlv2470zv2mz57zaj52dwr9wj8agmj23jbjz";
+  };
+
+  buildCommand = ''
+    dir=$out/lib/msgviewer
+    mkdir -p $out/bin $dir
+    unzip $src -d $dir
+    mv $dir/${uname}/* $dir
+    rmdir $dir/${uname}
+    cat <<_EOF > $out/bin/msgviewer
+    #!${runtimeShell} -eu
+    exec ${stdenv.lib.getBin jre}/bin/java -jar $dir/MSGViewer.jar "\$@"
+    _EOF
+    chmod 755 $out/bin/msgviewer
+  '';
+
+  nativeBuildInputs = [ makeWrapper unzip ];
+
+  meta = with stdenv.lib; {
+    description = "Viewer for .msg files (MS Outlook)";
+    homepage    = "https://www.washington.edu/alpine/";
+    license     = licenses.asl20;
+    maintainers = with maintainers; [ peterhoeg ];
+    platforms   = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/mutt/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/mutt/default.nix
new file mode 100644
index 000000000000..30b3194d590b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/mutt/default.nix
@@ -0,0 +1,96 @@
+{ stdenv, fetchurl, fetchpatch, ncurses, which, perl
+, gdbm ? null
+, openssl ? null
+, cyrus_sasl ? null
+, gnupg ? null
+, gpgme ? null
+, kerberos ? null
+, headerCache  ? true
+, sslSupport   ? true
+, saslSupport  ? true
+, smimeSupport ? false
+, gpgSupport   ? false
+, gpgmeSupport ? true
+, imapSupport  ? true
+, withSidebar  ? true
+, gssSupport   ? true
+}:
+
+assert headerCache  -> gdbm       != null;
+assert sslSupport   -> openssl    != null;
+assert saslSupport  -> cyrus_sasl != null;
+assert smimeSupport -> openssl    != null;
+assert gpgSupport   -> gnupg      != null;
+assert gpgmeSupport -> gpgme      != null && openssl != null;
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "mutt";
+  version = "1.14.3";
+
+  src = fetchurl {
+    url = "http://ftp.mutt.org/pub/mutt/${pname}-${version}.tar.gz";
+    sha256 = "0wd4cv1c9hqymvml979g607nh3xxmlyx1ifc4r4qf39v6grnsmdi";
+  };
+
+  patches = optional smimeSupport (fetchpatch {
+    url = "https://salsa.debian.org/mutt-team/mutt/raw/debian/1.10.1-2/debian/patches/misc/smime.rc.patch";
+    sha256 = "0b4i00chvx6zj9pcb06x2jysmrcb2znn831lcy32cgfds6gr3nsi";
+  });
+
+  buildInputs =
+    [ ncurses which perl ]
+    ++ optional headerCache  gdbm
+    ++ optional sslSupport   openssl
+    ++ optional gssSupport   kerberos
+    ++ optional saslSupport  cyrus_sasl
+    ++ optional gpgmeSupport gpgme;
+
+  configureFlags = [
+    (enableFeature headerCache  "hcache")
+    (enableFeature gpgmeSupport "gpgme")
+    (enableFeature imapSupport  "imap")
+    (enableFeature withSidebar  "sidebar")
+    "--enable-smtp"
+    "--enable-pop"
+    "--with-mailpath="
+
+    # Look in $PATH at runtime, instead of hardcoding /usr/bin/sendmail
+    "ac_cv_path_SENDMAIL=sendmail"
+
+    # This allows calls with "-d N", that output debug info into ~/.muttdebug*
+    "--enable-debug"
+
+    # The next allows building mutt without having anything setgid
+    # set by the installer, and removing the need for the group 'mail'
+    # I set the value 'mailbox' because it is a default in the configure script
+    "--with-homespool=mailbox"
+  ] ++ optional sslSupport  "--with-ssl"
+    ++ optional gssSupport  "--with-gss"
+    ++ optional saslSupport "--with-sasl";
+
+  postPatch = optionalString (smimeSupport || gpgmeSupport) ''
+    sed -i 's#/usr/bin/openssl#${openssl}/bin/openssl#' smime_keys.pl
+  '';
+
+  postInstall = optionalString smimeSupport ''
+    # S/MIME setup
+    cp contrib/smime.rc $out/etc/smime.rc
+    sed -i 's#openssl#${openssl}/bin/openssl#' $out/etc/smime.rc
+    echo "source $out/etc/smime.rc" >> $out/etc/Muttrc
+  '' + optionalString gpgSupport ''
+    # GnuPG setup
+    cp contrib/gpg.rc $out/etc/gpg.rc
+    sed -i 's#\(command="\)gpg #\1${gnupg}/bin/gpg #' $out/etc/gpg.rc
+    echo "source $out/etc/gpg.rc" >> $out/etc/Muttrc
+  '';
+
+  meta = {
+    description = "A small but very powerful text-based mail client";
+    homepage = "http://www.mutt.org";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ rnhmjoj ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/neomutt/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/neomutt/default.nix
new file mode 100644
index 000000000000..ad7b4debd3f2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/neomutt/default.nix
@@ -0,0 +1,103 @@
+{ stdenv, fetchFromGitHub, gettext, makeWrapper, tcl, which, writeScript
+, ncurses, perl , cyrus_sasl, gss, gpgme, kerberos, libidn, libxml2, notmuch, openssl
+, lmdb, libxslt, docbook_xsl, docbook_xml_dtd_42, mailcap, runtimeShell, sqlite, zlib
+, glibcLocales
+}:
+
+stdenv.mkDerivation rec {
+  version = "20200501";
+  pname = "neomutt";
+
+  src = fetchFromGitHub {
+    owner  = "neomutt";
+    repo   = "neomutt";
+    rev    = version;
+    sha256 = "1xrs2bagrcg489zp7g39l3rrpgz8n1ji9cbr21wrnasfbhqcsmnx";
+  };
+
+  buildInputs = [
+    cyrus_sasl gss gpgme kerberos libidn ncurses
+    notmuch openssl perl lmdb
+    mailcap sqlite
+  ];
+
+  nativeBuildInputs = [
+    docbook_xsl docbook_xml_dtd_42 gettext libxml2 libxslt.bin makeWrapper tcl which zlib
+  ];
+
+  enableParallelBuilding = true;
+
+  postPatch = ''
+    substituteInPlace contrib/smime_keys \
+      --replace /usr/bin/openssl ${openssl}/bin/openssl
+
+    for f in doc/*.{xml,xsl}*  ; do
+      substituteInPlace $f \
+        --replace http://docbook.sourceforge.net/release/xsl/current     ${docbook_xsl}/share/xml/docbook-xsl \
+        --replace http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd ${docbook_xml_dtd_42}/xml/dtd/docbook/docbookx.dtd
+    done
+
+
+    # allow neomutt to map attachments to their proper mime.types if specified wrongly
+    # and use a far more comprehensive list than the one shipped with neomutt
+    substituteInPlace sendlib.c \
+      --replace /etc/mime.types ${mailcap}/etc/mime.types
+
+    # The string conversion tests all fail with the first version of neomutt
+    # that has tests (20180223) as well as 20180716 so we disable them for now.
+    # I don't know if that is related to the tests or our build environment.
+    # Try again with a later release.
+    sed -i '/rfc2047/d' test/Makefile.autosetup test/main.c
+  '';
+
+  configureFlags = [
+    "--enable-autocrypt"
+    "--gpgme"
+    "--gss"
+    "--lmdb"
+    "--notmuch"
+    "--ssl"
+    "--sasl"
+    "--with-homespool=mailbox"
+    "--with-mailpath="
+    # Look in $PATH at runtime, instead of hardcoding /usr/bin/sendmail
+    "ac_cv_path_SENDMAIL=sendmail"
+    "--zlib"
+  ];
+
+  # Fix missing libidn in mutt;
+  # this fix is ugly since it links all binaries in mutt against libidn
+  # like pgpring, pgpewrap, ...
+  NIX_LDFLAGS = "-lidn";
+
+  postInstall = ''
+    wrapProgram "$out/bin/neomutt" --prefix PATH : "$out/libexec/neomutt"
+  '';
+
+  doCheck = true;
+
+  preCheck = ''
+    cp -r ${fetchFromGitHub {
+      owner = "neomutt";
+      repo = "neomutt-test-files";
+      rev = "1ee274e9ae1330fb901eb7b8275b3079d7869222";
+      sha256 = "0dhilz4rr7616jh8jcvh50a3rr09in43nsv72mm6f3vfklcqincp";
+    }} $(pwd)/test-files
+    (cd test-files && ./setup.sh)
+
+    export NEOMUTT_TEST_DIR=$(pwd)/test-files
+    export LC_ALL="en_US.UTF-8"
+  '';
+
+  checkInputs = [ glibcLocales ];
+  checkTarget = "test";
+  postCheck = "unset NEOMUTT_TEST_DIR";
+
+  meta = with stdenv.lib; {
+    description = "A small but very powerful text-based mail client";
+    homepage    = "http://www.neomutt.org";
+    license     = licenses.gpl2Plus;
+    maintainers = with maintainers; [ cstrahan erikryb jfrankenau vrthra ma27 ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/notbit/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/notbit/default.nix
new file mode 100644
index 000000000000..868037c33c1a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/notbit/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig,
+  gettext, openssl
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation {
+  pname = "notbit";
+  version = "2018-01-09";
+
+  src = fetchFromGitHub {
+    owner  = "bpeel";
+    repo   = "notbit";
+    rev    = "8b5d3d2da8ce54abae2536b4d97641d2c798cff3";
+    sha256 = "1623n0lvx42mamvb2vwin5i38hh0nxpxzmkr5188ss2x7m20lmii";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+
+  buildInputs = [ openssl gettext ];
+
+  meta = {
+    description = "A minimal Bitmessage client";
+    homepage = "https://github.com/bpeel/notbit";
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ mog ];
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/notmuch-addrlookup/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch-addrlookup/default.nix
new file mode 100644
index 000000000000..19b90b534efb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch-addrlookup/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, pkgconfig, glib, notmuch }:
+
+let
+  version = "9";
+in
+stdenv.mkDerivation {
+  pname = "notmuch-addrlookup";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "aperezdc";
+    repo = "notmuch-addrlookup-c";
+    rev ="v${version}";
+    sha256 = "1j3zdx161i1x4w0nic14ix5i8hd501rb31daf8api0k8855sx4rc";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ glib notmuch ];
+
+  installPhase = "install -D notmuch-addrlookup $out/bin/notmuch-addrlookup";
+
+  meta = with stdenv.lib; {
+    description = "Address lookup tool for Notmuch in C";
+    homepage = "https://github.com/aperezdc/notmuch-addrlookup-c";
+    maintainers = with maintainers; [ mog ];
+    platforms = platforms.unix;
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/notmuch-bower/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch-bower/default.nix
new file mode 100644
index 000000000000..0b2a76cc00f8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch-bower/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, gawk, mercury, pandoc, ncurses, gpgme }:
+
+stdenv.mkDerivation rec {
+  pname = "notmuch-bower";
+  version = "0.11";
+
+  src = fetchFromGitHub {
+    owner = "wangp";
+    repo = "bower";
+    rev = version;
+    sha256 = "0vhac8yjnhb1gz60jfzg27spyn96c1rr849gc6vjym5xamw7zp0v";
+  };
+
+  nativeBuildInputs = [ gawk mercury pandoc ];
+
+  buildInputs = [ ncurses gpgme ];
+
+  makeFlags = [ "PARALLEL=-j$(NIX_BUILD_CORES)" "bower" "man" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mv bower $out/bin/
+    mkdir -p $out/share/man/man1
+    mv bower.1 $out/share/man/man1/
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/wangp/bower";
+    description = "A curses terminal client for the Notmuch email system";
+    maintainers = with maintainers; [ erictapen ];
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/notmuch/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch/default.nix
new file mode 100644
index 000000000000..26f47dba4617
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch/default.nix
@@ -0,0 +1,102 @@
+{ fetchurl, stdenv
+, pkgconfig, gnupg
+, xapian, gmime, talloc, zlib
+, doxygen, perl, texinfo
+, pythonPackages
+, emacs
+, ruby
+, which, dtach, openssl, bash, gdb, man
+, withEmacs ? true
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  version = "0.29.3";
+  pname = "notmuch";
+
+  passthru = {
+    pythonSourceRoot = "${pname}-${version}/bindings/python";
+    inherit version;
+  };
+
+  src = fetchurl {
+    url = "https://notmuchmail.org/releases/${pname}-${version}.tar.xz";
+    sha256 = "0dfwa38vgnxk9cvvpza66szjgp8lir6iz6yy0cry9593lywh9xym";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    doxygen                   # (optional) api docs
+    pythonPackages.sphinx     # (optional) documentation -> doc/INSTALL
+    texinfo                   # (optional) documentation -> doc/INSTALL
+  ] ++ optional withEmacs [ emacs ];
+
+  buildInputs = [
+    gnupg                     # undefined dependencies
+    xapian gmime talloc zlib  # dependencies described in INSTALL
+    perl
+    pythonPackages.python
+    ruby
+  ];
+
+  postPatch = ''
+    patchShebangs configure
+    patchShebangs test/
+
+    substituteInPlace lib/Makefile.local \
+      --replace '-install_name $(libdir)' "-install_name $out/lib"
+  '' + optionalString withEmacs ''
+    substituteInPlace emacs/notmuch-emacs-mua \
+      --replace 'EMACS:-emacs' 'EMACS:-${emacs}/bin/emacs' \
+      --replace 'EMACSCLIENT:-emacsclient' 'EMACSCLIENT:-${emacs}/bin/emacsclient'
+  '';
+
+  configureFlags = [
+    "--zshcompletiondir=${placeholder "out"}/share/zsh/site-functions"
+    "--bashcompletiondir=${placeholder "out"}/share/bash-completion/completions"
+    "--infodir=${placeholder "info"}/share/info"
+  ] ++ optional (!withEmacs) "--without-emacs"
+    ++ optional (withEmacs) "--emacslispdir=${placeholder "emacs"}/share/emacs/site-lisp"
+    ++ optional (isNull ruby) "--without-ruby";
+
+  # Notmuch doesn't use autoconf and consequently doesn't tag --bindir and
+  # friends
+  setOutputFlags = false;
+  enableParallelBuilding = true;
+  makeFlags = [ "V=1" ];
+
+
+  outputs = [ "out" "man" "info" ] ++ stdenv.lib.optional withEmacs "emacs";
+
+  preCheck = let
+    test-database = fetchurl {
+      url = "https://notmuchmail.org/releases/test-databases/database-v1.tar.xz";
+      sha256 = "1lk91s00y4qy4pjh8638b5lfkgwyl282g1m27srsf7qfn58y16a2";
+    };
+  in ''
+    ln -s ${test-database} test/test-databases/database-v1.tar.xz
+  '';
+  doCheck = !stdenv.hostPlatform.isDarwin && (versionAtLeast gmime.version "3.0.3");
+  checkTarget = "test";
+  checkInputs = [
+    which dtach openssl bash
+    gdb man emacs
+  ];
+
+  installTargets = [ "install" "install-man" "install-info" ];
+
+  postInstall = stdenv.lib.optionalString withEmacs ''
+    moveToOutput bin/notmuch-emacs-mua $emacs
+  '';
+
+  dontGzipMan = true; # already compressed
+
+  meta = {
+    description = "Mail indexer";
+    homepage    = "https://notmuchmail.org/";
+    license     = licenses.gpl3;
+    maintainers = with maintainers; [ flokli puckipedia ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/notmuch/muchsync.nix b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch/muchsync.nix
new file mode 100644
index 000000000000..a0dbf98f2763
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch/muchsync.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl
+, notmuch, openssl, pkgconfig, sqlite, xapian, zlib
+}:
+stdenv.mkDerivation rec {
+  version = "5";
+  pname = "muchsync";
+  passthru = {
+    inherit version;
+  };
+  src = fetchurl {
+    url = "http://www.muchsync.org/src/${pname}-${version}.tar.gz";
+    sha256 = "1k2m44pj5i6vfhp9icdqs42chsp208llanc666p3d9nww8ngq2lb";
+  };
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ notmuch openssl sqlite xapian zlib ];
+  meta = {
+    description = "Synchronize maildirs and notmuch databases";
+    homepage = "http://www.muchsync.org/";
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = with stdenv.lib.maintainers; [ ocharles ];
+    license = stdenv.lib.licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/notmuch/mutt.nix b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch/mutt.nix
new file mode 100644
index 000000000000..18264c5c6af4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch/mutt.nix
@@ -0,0 +1,46 @@
+{ stdenv, lib, perl, perlPackages, makeWrapper, coreutils, notmuch }:
+
+stdenv.mkDerivation rec {
+  pname = "notmuch-mutt";
+  version = notmuch.version;
+
+  outputs = [ "out" ];
+
+  dontStrip = true;
+
+  buildInputs = [
+    perl
+    makeWrapper
+  ] ++ (with perlPackages; [
+    FileRemove
+    DigestSHA1
+    Later
+    MailBox
+    MailMaildir
+    MailTools
+    StringShellQuote
+    TermReadLineGnu
+  ]);
+
+  src = notmuch.src;
+
+  phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
+
+  installPhase = ''
+    ${coreutils}/bin/install -Dm755 \
+      ./contrib/notmuch-mutt/notmuch-mutt \
+      $out/bin/notmuch-mutt
+
+    wrapProgram $out/bin/notmuch-mutt \
+      --prefix PERL5LIB : $PERL5LIB
+  '';
+
+  meta = with lib; {
+    inherit version;
+    description = "Mutt support for notmuch";
+    homepage    = "https://notmuchmail.org/";
+    license     = with licenses; gpl3;
+    maintainers = with maintainers; [ peterhoeg ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/sylpheed/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/sylpheed/default.nix
new file mode 100644
index 000000000000..8f268e67c304
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/sylpheed/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, pkgconfig, gtk2, openssl ? null, gpgme ? null
+, gpgSupport ? true, sslSupport ? true }:
+
+assert gpgSupport -> gpgme != null;
+assert sslSupport -> openssl != null;
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "sylpheed";
+  version = "3.7.0";
+
+  src = fetchurl {
+    url = "https://sylpheed.sraoss.jp/sylpheed/v3.7/${pname}-${version}.tar.xz";
+    sha256 = "0j9y5vdzch251s264diw9clrn88dn20bqqkwfmis9l7m8vmwasqd";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ gtk2 ]
+    ++ optionals gpgSupport [ gpgme ]
+    ++ optionals sslSupport [ openssl ];
+
+  configureFlags = optional gpgSupport "--enable-gpgme"
+    ++ optional sslSupport "--enable-ssl";
+
+  meta = {
+    homepage = "http://sylpheed.sraoss.jp/en/";
+    description = "Lightweight and user-friendly e-mail client";
+    maintainers = with maintainers; [ eelco ];
+    platforms = platforms.linux ++ platforms.darwin;
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird-bin/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird-bin/default.nix
new file mode 100644
index 000000000000..e9217c84fc69
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird-bin/default.nix
@@ -0,0 +1,191 @@
+{ stdenv, fetchurl, config, makeWrapper
+, gconf
+, alsaLib
+, at-spi2-atk
+, atk
+, cairo
+, cups
+, curl
+, dbus-glib
+, dbus
+, fontconfig
+, freetype
+, gdk-pixbuf
+, glib
+, glibc
+, gst-plugins-base
+, gstreamer
+, gtk2
+, gtk3
+, kerberos
+, libX11
+, libXScrnSaver
+, libXcomposite
+, libXcursor
+, libXdamage
+, libXext
+, libXfixes
+, libXi
+, libXinerama
+, libXrender
+, libXt
+, libxcb
+, libcanberra-gtk2
+, libgnome
+, libgnomeui
+, gnome3
+, libGLU, libGL
+, nspr
+, nss
+, pango
+, writeScript
+, xidel
+, coreutils
+, gnused
+, gnugrep
+, gnupg
+, runtimeShell
+}:
+
+# imports `version` and `sources`
+with (import ./release_sources.nix);
+
+let
+  arch = if stdenv.hostPlatform.system == "i686-linux"
+    then "linux-i686"
+    else "linux-x86_64";
+
+  isPrefixOf = prefix: string:
+    builtins.substring 0 (builtins.stringLength prefix) string == prefix;
+
+  sourceMatches = locale: source:
+      (isPrefixOf source.locale locale) && source.arch == arch;
+
+  systemLocale = config.i18n.defaultLocale or "en-US";
+
+  defaultSource = stdenv.lib.findFirst (sourceMatches "en-US") {} sources;
+
+  source = stdenv.lib.findFirst (sourceMatches systemLocale) defaultSource sources;
+
+  name = "thunderbird-bin-${version}";
+in
+
+stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchurl {
+    url = "https://download-installer.cdn.mozilla.net/pub/thunderbird/releases/${version}/${source.arch}/${source.locale}/thunderbird-${version}.tar.bz2";
+    inherit (source) sha512;
+  };
+
+  phases = "unpackPhase installPhase";
+
+  libPath = stdenv.lib.makeLibraryPath
+    [ stdenv.cc.cc
+      gconf
+      alsaLib
+      at-spi2-atk
+      atk
+      cairo
+      cups
+      curl
+      dbus-glib
+      dbus
+      fontconfig
+      freetype
+      gdk-pixbuf
+      glib
+      glibc
+      gst-plugins-base
+      gstreamer
+      gtk2
+      gtk3
+      kerberos
+      libX11
+      libXScrnSaver
+      libXcomposite
+      libXcursor
+      libXdamage
+      libXext
+      libXfixes
+      libXi
+      libXinerama
+      libXrender
+      libXt
+      libxcb
+      libcanberra-gtk2
+      libgnome
+      libgnomeui
+      libGLU libGL
+      nspr
+      nss
+      pango
+    ] + ":" + stdenv.lib.makeSearchPathOutput "lib" "lib64" [
+      stdenv.cc.cc
+    ];
+
+  buildInputs = [ gtk3 gnome3.adwaita-icon-theme ];
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase =
+    ''
+      mkdir -p "$prefix/usr/lib/thunderbird-bin-${version}"
+      cp -r * "$prefix/usr/lib/thunderbird-bin-${version}"
+
+      mkdir -p "$out/bin"
+      ln -s "$prefix/usr/lib/thunderbird-bin-${version}/thunderbird" "$out/bin/"
+
+      for executable in \
+        thunderbird crashreporter thunderbird-bin plugin-container updater
+      do
+        patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          "$out/usr/lib/thunderbird-bin-${version}/$executable"
+      done
+
+      find . -executable -type f -exec \
+        patchelf --set-rpath "$libPath" \
+          "$out/usr/lib/thunderbird-bin-${version}/{}" \;
+
+      # Create a desktop item.
+      mkdir -p $out/share/applications
+      cat > $out/share/applications/thunderbird.desktop <<EOF
+      [Desktop Entry]
+      Type=Application
+      Exec=$out/bin/thunderbird
+      Icon=$out/usr/lib/thunderbird-bin-${version}/chrome/icons/default/default256.png
+      Name=Thunderbird
+      GenericName=Mail Reader
+      Categories=Application;Network;
+      EOF
+
+      # SNAP_NAME: https://github.com/NixOS/nixpkgs/pull/61980
+      # MOZ_LEGACY_PROFILES and MOZ_ALLOW_DOWNGRADE:
+      #   commit 87e261843c4236c541ee0113988286f77d2fa1ee
+      wrapProgram "$out/bin/thunderbird" \
+        --argv0 "$out/bin/.thunderbird-wrapped" \
+        --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:" \
+        --suffix XDG_DATA_DIRS : "$XDG_ICON_DIRS" \
+        --set SNAP_NAME "thunderbird" \
+        --set MOZ_LEGACY_PROFILES 1 \
+        --set MOZ_ALLOW_DOWNGRADE 1
+    '';
+
+  passthru.updateScript = import ./../../browsers/firefox-bin/update.nix {
+    inherit name writeScript xidel coreutils gnused gnugrep curl gnupg runtimeShell;
+    baseName = "thunderbird";
+    channel = "release";
+    basePath = "pkgs/applications/networking/mailreaders/thunderbird-bin";
+    baseUrl = "http://archive.mozilla.org/pub/thunderbird/releases/";
+  };
+  meta = with stdenv.lib; {
+    description = "Mozilla Thunderbird, a full-featured email client (binary package)";
+    homepage = "http://www.mozilla.org/thunderbird/";
+    license = {
+      free = false;
+      url = "http://www.mozilla.org/en-US/foundation/trademarks/policy/";
+    };
+    maintainers = with stdenv.lib.maintainers; [ ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix b/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix
new file mode 100644
index 000000000000..1f14ee3ae404
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix
@@ -0,0 +1,615 @@
+{
+  version = "68.9.0";
+  sources = [
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/ar/thunderbird-68.9.0.tar.bz2";
+      locale = "ar";
+      arch = "linux-x86_64";
+      sha512 = "7e0a07631f2130d2876e020f7f28817cbca343e0666abd156d8f5c48a7f4bb0f4775f6366deeffdcd0676172e3b75c48c02635d018a5f1050f635f334834908d";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/ast/thunderbird-68.9.0.tar.bz2";
+      locale = "ast";
+      arch = "linux-x86_64";
+      sha512 = "47ef45548aeb20dc8dbd4f35bf12913b642986cf6071f060611696da99da30a2b10c9c8aaff8974f4fc02403026146b516e84f8f2244932f290202ef2aa59853";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/be/thunderbird-68.9.0.tar.bz2";
+      locale = "be";
+      arch = "linux-x86_64";
+      sha512 = "c704c3e4be866d70c098b07bacdd4a1020ec109e92eb85c9c04d20d90db668a36bfef711acbe8bacb897543e3b8d499d35e54875bbe10fb3fc5436f8759828c3";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/bg/thunderbird-68.9.0.tar.bz2";
+      locale = "bg";
+      arch = "linux-x86_64";
+      sha512 = "ac31e7ceb3042c2f2ac4c833687a9a44b6ec593b2d50da2edf9f11fa9bba378dea192cd472470cb7cdb2a0b708b84de688f2988f6161447cf00e5a13fe6cdd9f";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/br/thunderbird-68.9.0.tar.bz2";
+      locale = "br";
+      arch = "linux-x86_64";
+      sha512 = "1c3342c2cca3061d07be17f57d967b1e9e478f5ff91cac1df1dbc901e102e2fbeb68375af20ccc0b6922364c62fcc44a6d7715aee43fef0b2165ac091427708c";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/ca/thunderbird-68.9.0.tar.bz2";
+      locale = "ca";
+      arch = "linux-x86_64";
+      sha512 = "2a0bca4b9fe58bb7872265384151ae7d2ed87122a9372ffd52752a11bec29b24a8d28f0e3102c0d6f84e545ccc6004fdace3bba7d68de206a3be5c72962c1a9e";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/cak/thunderbird-68.9.0.tar.bz2";
+      locale = "cak";
+      arch = "linux-x86_64";
+      sha512 = "ef27a17f5a44072596b753cd110ed4d24d7355649ddfae988a2d6622871421088d1502866226fc1f18bf8233478b5c00e98f10cf3f920ad6b4a7bad9c5e9cae2";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/cs/thunderbird-68.9.0.tar.bz2";
+      locale = "cs";
+      arch = "linux-x86_64";
+      sha512 = "1a68ecf3ae228078c67b296a1642578d8e5a7808707e8a7eab4cbe8191a6b19057fca8e3c4faa660d6a64732ca3a052579fa652bbe5bb30a85d577f7b702e55e";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/cy/thunderbird-68.9.0.tar.bz2";
+      locale = "cy";
+      arch = "linux-x86_64";
+      sha512 = "4d3cc4a57f3e210129ba47c2fc0798d852e4369a62dfefaf3b9a8fc77939431a7cc5839c667a062231ccf49e6eeedfc60c5492fdbf5eec080233b851203305f4";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/da/thunderbird-68.9.0.tar.bz2";
+      locale = "da";
+      arch = "linux-x86_64";
+      sha512 = "79e655f62bc95b65640e3556d2690725ff012a16b2cbe656223a118294915c5619563fbdef9b88fd5db3f982cea5e8ad85a9bc389776ea95ab155539d6a4c217";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/de/thunderbird-68.9.0.tar.bz2";
+      locale = "de";
+      arch = "linux-x86_64";
+      sha512 = "cad5d0c08e07f6d1247cae9737d0747875b9b35036892093230423d92530fe2de2975174dfd6ec0d2e2d7ddf86027601d37d3fce14343ad4cb89be5d68052785";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/dsb/thunderbird-68.9.0.tar.bz2";
+      locale = "dsb";
+      arch = "linux-x86_64";
+      sha512 = "15ca27de99125e4be3f6cf79ebe5e897efea14ea469040ab39ef2e0ab4a6ce61bb22f9afe95a670fcf9e1cf077512b8214226946e4f4a02e7bb04d136390bf6e";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/el/thunderbird-68.9.0.tar.bz2";
+      locale = "el";
+      arch = "linux-x86_64";
+      sha512 = "8fdda97681d04d9247d8030535d15888d24f3462ee8d91ac86ae9b0489ca4a2c759bbbcb151548786febed90de2ff4bf6e77fa55b8bc2b1cd4c8faef374fcc45";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/en-GB/thunderbird-68.9.0.tar.bz2";
+      locale = "en-GB";
+      arch = "linux-x86_64";
+      sha512 = "51ccb86fc17862c9264823568fb2453318a8b6625f1d51eecaa150358a9efe4a15126c1a132bc57834645ba3d5799f75dd48e7cacc6305970698bdcad85c0bfd";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/en-US/thunderbird-68.9.0.tar.bz2";
+      locale = "en-US";
+      arch = "linux-x86_64";
+      sha512 = "ed6caacf356c6487a489e983275a2c3d00eac3b2282445667a1f26ac9ce217afb8261a929ccc9aa2bdf7a89101a86faee2ef87c16f0677ecf5abcc727397275f";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/es-AR/thunderbird-68.9.0.tar.bz2";
+      locale = "es-AR";
+      arch = "linux-x86_64";
+      sha512 = "b8e75f5579740c8d0ae7ef30afb133b827c2e217bf9b0acdc8f117b6ffbd6c2674ff8670db87ede6db3c842af8d6f820bfa4370c0d611b7e74e99e8ad67a31b8";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/es-ES/thunderbird-68.9.0.tar.bz2";
+      locale = "es-ES";
+      arch = "linux-x86_64";
+      sha512 = "e51df8034b18c8dc0d7fa024c3e58317a614f4da4d286c837efac3d21c59d1e58a786cc2ae0afae8730f81e96a4f0263e4fa09b552df3b58f915fd0cad133c62";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/et/thunderbird-68.9.0.tar.bz2";
+      locale = "et";
+      arch = "linux-x86_64";
+      sha512 = "a81e2bf12df9ba23b8d330599eb9d32d25cb862d3cbd109183c0164ccfd2036bd327aaba36248e85f738d02d15d59f9fcaa837101b154834b53b04d2925ad666";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/eu/thunderbird-68.9.0.tar.bz2";
+      locale = "eu";
+      arch = "linux-x86_64";
+      sha512 = "98a3b4e765683a9fdb9f1b128354ddc8f81ffb7bcdfb3ecc04431e84862d65184f220cddf86ba2a3442f87c27ea990a2868ebf68dce7328857718f9e02ecd474";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/fi/thunderbird-68.9.0.tar.bz2";
+      locale = "fi";
+      arch = "linux-x86_64";
+      sha512 = "75d0523e83f9f95fdef45fb8b6de632eedb8b274225ac5c6d6d460cc7c129f7e34f735262cbc44e8f99957358e33eb8c8e2ce0cdbbd59d237dde468991139e6f";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/fr/thunderbird-68.9.0.tar.bz2";
+      locale = "fr";
+      arch = "linux-x86_64";
+      sha512 = "c7b070e1b5dbb682e6dd119436512c5e2200105294f1c4e84c88fc8326f342196da1abaf8b7b4882397cf797070a524c19b640fc41d532885b9ce867de46d055";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/fy-NL/thunderbird-68.9.0.tar.bz2";
+      locale = "fy-NL";
+      arch = "linux-x86_64";
+      sha512 = "bd93c4d482231c0c5444b653c045f4951d73c0c4c1ef9126757c41b30280f0009fddec38d8532af2c2e379a26128fe3b5e8db2857709fd2ed226d2fa73f0d88b";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/ga-IE/thunderbird-68.9.0.tar.bz2";
+      locale = "ga-IE";
+      arch = "linux-x86_64";
+      sha512 = "f6da6b1635d44f217b1ffe9e446d4ce8fbc82ecd5fa8a0421abdf83a0bdaf46db35343a5345b009fdf09a8237475b393d2cf0cd3f52fa16cd2cca63b792a546b";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/gd/thunderbird-68.9.0.tar.bz2";
+      locale = "gd";
+      arch = "linux-x86_64";
+      sha512 = "d6e4c7e51432c4bc81a9470615349624f2d8eea0d6092e53afb833a2cb4a9e770ea4c373fbef424e9139a1668cb695841fe2cf8c752befb650d0e72185693c5c";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/gl/thunderbird-68.9.0.tar.bz2";
+      locale = "gl";
+      arch = "linux-x86_64";
+      sha512 = "763f2dc852ac4ecc4accd7140ea9c1945bc343342a01efe8b09470cc41f76fad4f61ec25c9456b10a16f9db528fc6aed802d949252b12e0d73c89c299ee813be";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/he/thunderbird-68.9.0.tar.bz2";
+      locale = "he";
+      arch = "linux-x86_64";
+      sha512 = "82d66c85f843978d9b2e3e0353e831c7779a16cc3a977f225ef93c92cd8eb8ac98afd255e40b1da0c21a356a7f290027b7f2c1c2ecce656524f21d3f8d962a4d";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/hr/thunderbird-68.9.0.tar.bz2";
+      locale = "hr";
+      arch = "linux-x86_64";
+      sha512 = "7c013aff2eb1d4d2330df3ec81dd4e6bc99f4ec9b620fd13cc487a02825669f7fbab84d8f9a2cb76cc34290dc301522505352b0985f75b7f26133cc0987d30e3";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/hsb/thunderbird-68.9.0.tar.bz2";
+      locale = "hsb";
+      arch = "linux-x86_64";
+      sha512 = "707059d39c02b2c95f18817757a4ab5fcdef4eba63645c93a8e1cdb37dd013633aaa7b67628d357e8c530a7d9394448d61fde9fae32befdb351502c27db3cd93";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/hu/thunderbird-68.9.0.tar.bz2";
+      locale = "hu";
+      arch = "linux-x86_64";
+      sha512 = "238047229050a38375a05d9d16514c88c5312d56857b179d7818be4421e3fb6450558f378c18035707d2abbbbb878656f1aeff461fb9f6b0f7a1b9e7e9863b96";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/hy-AM/thunderbird-68.9.0.tar.bz2";
+      locale = "hy-AM";
+      arch = "linux-x86_64";
+      sha512 = "871c444b878cdc2c63d96d389ff0ece2773862e825bf00bb4534475130f4b0b684dcad1002bc1d183f6c81b730bb3af1098d29b81dd7d07a5321e01fff3c39c6";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/id/thunderbird-68.9.0.tar.bz2";
+      locale = "id";
+      arch = "linux-x86_64";
+      sha512 = "518ce09cb9cedf086549873f6cc868235afa24fd04be3e2af00d92dcce8c1f08c7855c7af9c4cc21d2329187f2a28ddcbcdd46fb5a7f26f2993261e0f2cf7afc";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/is/thunderbird-68.9.0.tar.bz2";
+      locale = "is";
+      arch = "linux-x86_64";
+      sha512 = "855c8d301067538bdd1494fb9a6b57e0182e94deab34a9aadc65dbe6a5829023145d88d4233f10702947fbbc7361812fea94b6a1352f687bc006988618781816";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/it/thunderbird-68.9.0.tar.bz2";
+      locale = "it";
+      arch = "linux-x86_64";
+      sha512 = "d447dcae327ceab2edc4302235d9055d1b11ff0407dc3a05cb1f16f8a53c6bd71dbaf5c33766f5c343ec357cbf8a8702c637c0748f658aa2083d244de9fff968";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/ja/thunderbird-68.9.0.tar.bz2";
+      locale = "ja";
+      arch = "linux-x86_64";
+      sha512 = "1ad5d5c0c7cb04fe7f471ea85557f8c4aac62eb9b7276b53fcc3111d3e37a7eed56e2e4521c1e978acc32c973618d84c05792b4100fbf9175d2a5db0c74eac1c";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/ka/thunderbird-68.9.0.tar.bz2";
+      locale = "ka";
+      arch = "linux-x86_64";
+      sha512 = "0d0f376c9a13165978e1b5d77e6b098f17ec552baa9e8e64d32b5d33c5b2d52f78c6e45ff92901f6c94cf9efc1d0349025c3dd7baff9693c9e5ce9f62e0a7c4f";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/kab/thunderbird-68.9.0.tar.bz2";
+      locale = "kab";
+      arch = "linux-x86_64";
+      sha512 = "76927cd9f2630d8aa4b501a8ff49ebdabeaf75ecf5dc166aaccc254d38493a94df7dc6d432bb68511b78b5e31b483859503bf846b4c2e7fee2ea4d40e4506db9";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/kk/thunderbird-68.9.0.tar.bz2";
+      locale = "kk";
+      arch = "linux-x86_64";
+      sha512 = "1a0d0a328341a7efffb6fa5ebb7bdced15f8202d37520b1e2972a3f82f37053669d52e0a8a815a8a9f2cb439227fba2c6f25a5967f459b1d2d7140e16315cac1";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/ko/thunderbird-68.9.0.tar.bz2";
+      locale = "ko";
+      arch = "linux-x86_64";
+      sha512 = "d4b654cfc6f0f8be641d844a52eb332c2218b419c7a699852ad693b90958d185ef29c2c1bba5b7b9e397e05fe1572b80b0f0df01e83b65edede368e0c6ad9ead";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/lt/thunderbird-68.9.0.tar.bz2";
+      locale = "lt";
+      arch = "linux-x86_64";
+      sha512 = "fdedc91f7bffbc4f464682f3a020ab161592015fe5c50180899eecf951e9f775cf5ef3cc6b5baf7faa58221f00e19fe99074f60d292ca258cf44dad2db0d0d69";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/ms/thunderbird-68.9.0.tar.bz2";
+      locale = "ms";
+      arch = "linux-x86_64";
+      sha512 = "1ecb61c99626dfbc8386364b747e94de7080facd6434813c8afeca60373d3cf07d2259ba90ed6de01c68a65e8b8408e58647d4e72b62f150f82da4a81e78f861";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/nb-NO/thunderbird-68.9.0.tar.bz2";
+      locale = "nb-NO";
+      arch = "linux-x86_64";
+      sha512 = "45ec1f8def3d2b57e29a3fd22bc38f08a9c7b1ebf44e6dfb736ee13d09cb1bcfcd632c2f8594e3c531d35aa7b696d45ffa1bf5c4cad7e1304fa92763f923df43";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/nl/thunderbird-68.9.0.tar.bz2";
+      locale = "nl";
+      arch = "linux-x86_64";
+      sha512 = "20dd4c7e946e0fca871fddc3481f2f44b72939de3a7f5064ab8f062981ea717d47f2a3c09af32c9913556e2f5fc01fe1dd78c2d35b5fd44a7f35cdef1e4252d7";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/nn-NO/thunderbird-68.9.0.tar.bz2";
+      locale = "nn-NO";
+      arch = "linux-x86_64";
+      sha512 = "c366bdbd0cda3143c7684c1cfd948965c2b80bd5076878cf3e98b9b5fb82baa6df419445ab0da134209a969baa0e36d759297bfda701d2ea4cd8c6720b61f123";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/pl/thunderbird-68.9.0.tar.bz2";
+      locale = "pl";
+      arch = "linux-x86_64";
+      sha512 = "163130f55ed9e0cbc68b48c41541748aa320d7a8fdb954c38fc25ca7e2dac6fea98b30b2653b6e8b31230ebd8364ca12281551e00375e4dd64b87515f08e6bec";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/pt-BR/thunderbird-68.9.0.tar.bz2";
+      locale = "pt-BR";
+      arch = "linux-x86_64";
+      sha512 = "5e362e0c53f898d1d156c53415469fe965162047bf5ab55798ece681a33322d677a874b80f9f934067a847da9f2c45a62d63753b866e368585ac5f0844e410df";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/pt-PT/thunderbird-68.9.0.tar.bz2";
+      locale = "pt-PT";
+      arch = "linux-x86_64";
+      sha512 = "b322096fd6fb0778fc26146b69fa9a63f249e927de6d2ae3fd6093e3e24b4825ed29a1d09cb68de274aebeb06effdec78e6445fa5282dd6a733b2181ead21248";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/rm/thunderbird-68.9.0.tar.bz2";
+      locale = "rm";
+      arch = "linux-x86_64";
+      sha512 = "715075dabca54e27001f68b11e6c3c99fc5e20f1fcba637e7613584d84a97520e06fd73761bc6c780ae8abbec3121504fb1b51b615a35c0d8660381d71f94eb0";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/ro/thunderbird-68.9.0.tar.bz2";
+      locale = "ro";
+      arch = "linux-x86_64";
+      sha512 = "fc279090426b3baef609f23228ac11d4665fd805d6118a4ecc2bfd1dd7b36d37004033db4be1095275c677a092026a083199e699b553c6eb82192db0190d844d";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/ru/thunderbird-68.9.0.tar.bz2";
+      locale = "ru";
+      arch = "linux-x86_64";
+      sha512 = "8c575c2749cd719878ffba2c8158597222d1d494f2c3749c6b5253a8d75607f42a45799a288f85042d8390225f74ac55d7497abc76a8fc870f89f8f7b7a3c699";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/si/thunderbird-68.9.0.tar.bz2";
+      locale = "si";
+      arch = "linux-x86_64";
+      sha512 = "b2edb098eea69332528f24a352e2cd318161ab3383cf13f878c7fdbca14f923f74a769fd494b435d0ef2fd760d4b7cfead063c91112fd44dfd3d4a47d4597549";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/sk/thunderbird-68.9.0.tar.bz2";
+      locale = "sk";
+      arch = "linux-x86_64";
+      sha512 = "2dde57c16b15b823a698f7c17d98eadd5528ea29cbc50d22a586c3ad7357289f2c4719edf8ba47c59c3419383c64b8ff948582a58356719990340f5db0be84c9";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/sl/thunderbird-68.9.0.tar.bz2";
+      locale = "sl";
+      arch = "linux-x86_64";
+      sha512 = "0014d8985ee139ec3ffae5ff18bcb8ac6f0921930853bab3ddcdcd6d21b9453aaa0af058068770dacb04bd1521b555945f9bfa7d9f47ba4a2adfd667fb067d78";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/sq/thunderbird-68.9.0.tar.bz2";
+      locale = "sq";
+      arch = "linux-x86_64";
+      sha512 = "5aa41dfc73adbad839452077b436ff302d0e611fb342998a7f6bffe98fd634d7995a30f49f8640645052b9f68c149c71a6bcdf0fd2df7e3c67783bca3c4ef511";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/sr/thunderbird-68.9.0.tar.bz2";
+      locale = "sr";
+      arch = "linux-x86_64";
+      sha512 = "266d0030c7d018dd68d5cd8496eeba061453e1d5a37e99c1645aa9c677492d0da397b2a9e70aed5d927c2e955449ff5b75efbad74d60fea4bb4ef90c36d765ec";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/sv-SE/thunderbird-68.9.0.tar.bz2";
+      locale = "sv-SE";
+      arch = "linux-x86_64";
+      sha512 = "6ce755bf48a29522e1f0805d6fb37bdbf145f75a4b6fa176c06562bd1b6b272d752a3d638ab66bf66dd6dc67fd817d76e70cc31fdf9b201f56c6bacd058e49df";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/tr/thunderbird-68.9.0.tar.bz2";
+      locale = "tr";
+      arch = "linux-x86_64";
+      sha512 = "302b03ab2e23f6c0cac0fff85cfeacfcebabea838fef824b7d1733054fd9a3cb766dcff1dad333b199ea876a16ab7a059fe4e01289aef4ed481126c27011b4c6";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/uk/thunderbird-68.9.0.tar.bz2";
+      locale = "uk";
+      arch = "linux-x86_64";
+      sha512 = "b3d59d62dd3d3e6e9ce8be3c4c746c41a0a0962d1327d1187b0b2034d0c1691970d181405cc7ab7e2f1fcafec6caaa26863020f5edae4479e453718619b7d02e";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/uz/thunderbird-68.9.0.tar.bz2";
+      locale = "uz";
+      arch = "linux-x86_64";
+      sha512 = "73d36534f000d00a52988825c0145288d8d1eb944065d11231501f6e2906e97b0beb89d59b796d3f2828054ed9393e8f65866cfcaed6eb7f939cf657b6f3d740";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/vi/thunderbird-68.9.0.tar.bz2";
+      locale = "vi";
+      arch = "linux-x86_64";
+      sha512 = "b3ec66f92f5d023933e8dae18f0827f0fc8c5880890f9986b339f06b4e565cbe228bc2b0843924bd2a524a77ded7667e63c2747d2ff6c3789d57c8a68e440714";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/zh-CN/thunderbird-68.9.0.tar.bz2";
+      locale = "zh-CN";
+      arch = "linux-x86_64";
+      sha512 = "e61e72c3dcd376d74e732d76c5a49203b47e2ea31c86bcdcaad673583795f5c01549fa2c5526205857e565f2a72b8abf8b2aa4e7ede45a94b218428607662a1e";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-x86_64/zh-TW/thunderbird-68.9.0.tar.bz2";
+      locale = "zh-TW";
+      arch = "linux-x86_64";
+      sha512 = "f47bfe43ec5b570863ed1fc81828a23beb250db24fb77d2df2dfb5ec60a9c750f188cbda1a0f2927688865219f6a36695d87e4a8eb1fd642c4c9650dcf2e9063";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/ar/thunderbird-68.9.0.tar.bz2";
+      locale = "ar";
+      arch = "linux-i686";
+      sha512 = "83a77d9f39196a8a3ec72469c038c835fb6b50872a2dd611519b178f5e46ef40293bfbdd908b3ce236681205b9b3ed133c845e357abb70285f9920401ad90cd2";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/ast/thunderbird-68.9.0.tar.bz2";
+      locale = "ast";
+      arch = "linux-i686";
+      sha512 = "83084855cf03e66968d20d2caca749a9ff9d47b0cfdecdcedf0320b4bc7e628ff5f3a971ae1f6472c5a44facfcaee419250f55ebb254bff9f344c64772f54791";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/be/thunderbird-68.9.0.tar.bz2";
+      locale = "be";
+      arch = "linux-i686";
+      sha512 = "722bcaa29137994e36f70a438fddb5be55355cd85d414fcf70cb8bbaf66a9ab0fc21408cf282272dbe977f46b5aa63575c7504bef8292adbd8d4c6e308655411";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/bg/thunderbird-68.9.0.tar.bz2";
+      locale = "bg";
+      arch = "linux-i686";
+      sha512 = "95464ffd5256fb181599ad795fbfe5d9cfe8ef0c02a7830174ee4732761cd94a2cca75b6a686559e07d996640f5e973a660fc857f0839d6bea5594e61f2f7e4e";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/br/thunderbird-68.9.0.tar.bz2";
+      locale = "br";
+      arch = "linux-i686";
+      sha512 = "fe09bb21248975aa60ffd74a970c9dcfbef578c1188bc1c3704c7411c2e94f88976ac7ac5e52a69ac6235723332f2fc76757ef9118092833fe64bf0a05e3ecf3";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/ca/thunderbird-68.9.0.tar.bz2";
+      locale = "ca";
+      arch = "linux-i686";
+      sha512 = "01ac3c0090448f1ffc7c97623df8576a7a3c184a2bc1a2761f0e3451a18dee6d4f6bc37b305dcaea89930a1750a9541116bdf03f613b333ddc47d5f257b3bfc0";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/cak/thunderbird-68.9.0.tar.bz2";
+      locale = "cak";
+      arch = "linux-i686";
+      sha512 = "27dad086126a268f2c6700a5f01006c40e911ecbc95dc994da7cd2dadc3f2bd3bc94d5da15a297b2e72e8b20254d40c757456c308b70bae2c1d451ec6ad7d1d8";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/cs/thunderbird-68.9.0.tar.bz2";
+      locale = "cs";
+      arch = "linux-i686";
+      sha512 = "b99dc13bf43a9aebd08f13fb113186e6e4a72c68d609895afc8a52c4909a0506f646ba394c705004272d1b91db4efc81a5518bbd06e359a8a24c85f4fbb30102";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/cy/thunderbird-68.9.0.tar.bz2";
+      locale = "cy";
+      arch = "linux-i686";
+      sha512 = "36c1557a9955e461128929b7be0f679a02592b65e4b401b052ecf1f467a231ba725c92eb96b8118bb75d49ae45f8287bb5fbeb22d94ba11dcf311cdb87170ee0";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/da/thunderbird-68.9.0.tar.bz2";
+      locale = "da";
+      arch = "linux-i686";
+      sha512 = "e81b41e38b322f2eddfd68c07f326ec9d716bdbdf31c3a02d22d9377002fd21b58a68a8ac952fed2ed164a02f8b20e9f6678c52fbaca741a4bcde1079ecbe38a";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/de/thunderbird-68.9.0.tar.bz2";
+      locale = "de";
+      arch = "linux-i686";
+      sha512 = "da6a44a2a6545b10bbe12644e433932c4410471f5948278b919baca1c6eb0181366114c1a6f611b897c71bf4091a6734393fd36f997c118f49466faa8dd2264d";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/dsb/thunderbird-68.9.0.tar.bz2";
+      locale = "dsb";
+      arch = "linux-i686";
+      sha512 = "6d19a0010553d1b08bc47a22c0c7f23bf4c86ca79ef3ca26c970cd502e6db003ccf045488f88d68a5b1b0ece4436de55d65592b314126b9b5792be30c9def553";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/el/thunderbird-68.9.0.tar.bz2";
+      locale = "el";
+      arch = "linux-i686";
+      sha512 = "67e6382474356c4ff25e6f49a7ee3859eba5bb29a4e795668e1ec52131dbaf0d87b9cfb8ffe1fa855bf8f34e841b8fac90c356545f47a711b533e3593219e957";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/en-GB/thunderbird-68.9.0.tar.bz2";
+      locale = "en-GB";
+      arch = "linux-i686";
+      sha512 = "f4e1d9b10ffc96aa7ef4202e73445d98a06082abcb87fb60d951ce491ead7cee4bad5c1009270004540d03aaf383eb5b8203845f84335b523d92bb586ed5932c";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/en-US/thunderbird-68.9.0.tar.bz2";
+      locale = "en-US";
+      arch = "linux-i686";
+      sha512 = "a8fcf918c869e8064c2dd39a03bb768616b1a5e4e1c6121aa544d72626bfb790625e2cc48dc973443b947c6e619f9481cb20239d544b10bdf287b7fa4e05128c";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/es-AR/thunderbird-68.9.0.tar.bz2";
+      locale = "es-AR";
+      arch = "linux-i686";
+      sha512 = "6b98ed36080e8eba879e305aa34ccc77e1735700d104f592095cf9810545bdf25665dd36a527e19cf12ec4cf782a6387e30f7b4406b76230c08a350f4cfd5fcc";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/es-ES/thunderbird-68.9.0.tar.bz2";
+      locale = "es-ES";
+      arch = "linux-i686";
+      sha512 = "0cf479d98ce943e20871e7073188db3c9162dec8cf2b0abaedbaabfac9b29411dad39fdf44c038680956c42f7f7e303d5e2bf8d7ef9225fa093821ce760e9974";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/et/thunderbird-68.9.0.tar.bz2";
+      locale = "et";
+      arch = "linux-i686";
+      sha512 = "51584ee5c76710a9b805d4da528d5463f1e51e3efa6ca3b9cf3fc6bb6b953cac6b7919f908975905f619d9be75e4b9ea32980bd5f198f77dae0f75795465fc23";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/eu/thunderbird-68.9.0.tar.bz2";
+      locale = "eu";
+      arch = "linux-i686";
+      sha512 = "bbcbd4a91856ebb9418c00feed41f00c93ffc5eed4af7c1c27585c707aa8dbfe4e48b0204cbb236a8205a219f0044811dc43f4cc94b6610f30d38120e3ab4b21";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/fi/thunderbird-68.9.0.tar.bz2";
+      locale = "fi";
+      arch = "linux-i686";
+      sha512 = "f03014cd7a28b4d85c2d896e8e2a5a1db959c7290c98cfd0c12839170956e98e0087685ab4304fbbdae42b06a8ff7b5563e70c9bbe0a787d2d9b4103019cf31a";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/fr/thunderbird-68.9.0.tar.bz2";
+      locale = "fr";
+      arch = "linux-i686";
+      sha512 = "ce7b187a572da6bee677cc7849bd5123545bf437005b16a855d9e4bfcd58a10f3b095a3b0a767d5a67aa113c0a9e0d437827c37fe1c8bf84a3fc8c8d2c702a8d";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/fy-NL/thunderbird-68.9.0.tar.bz2";
+      locale = "fy-NL";
+      arch = "linux-i686";
+      sha512 = "2062090196c7b07ce148a2937027637469e7593ac092db0bf7139286faac51d350c786c0bfed6e32903bcb7f2ddc4e3df6e993f8637fc68c1aae1be89ceddc98";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/ga-IE/thunderbird-68.9.0.tar.bz2";
+      locale = "ga-IE";
+      arch = "linux-i686";
+      sha512 = "fb11eadd35e46081a16116843a4a134b8197c4e8e1d1a52981a085f02bbda7ca49dbf1d9a88f4a7fe2542a99ff24f6d35fc661414cef1fb50edecb98c6693f4f";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/gd/thunderbird-68.9.0.tar.bz2";
+      locale = "gd";
+      arch = "linux-i686";
+      sha512 = "e9b985732d6619555c24ababbbe38303998750986395c647aadebb0c209467fcdfe5f9dca99ecef0e0b747aa8598f887ef2218140ad1d97e7e3d73b430dad1d6";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/gl/thunderbird-68.9.0.tar.bz2";
+      locale = "gl";
+      arch = "linux-i686";
+      sha512 = "3b8eff0004db222eff3b4f42be4eff168310fd0e17e676ae92fddd9c11e3a6d4826c63a35f9de37095a7fa88f7f4931e36bc17ace548e36f91bd8334fa53799f";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/he/thunderbird-68.9.0.tar.bz2";
+      locale = "he";
+      arch = "linux-i686";
+      sha512 = "e3dcd319e08ddb5aef2bc576f136eae7838e3aca3c9160aabdaecc32332f0c250201a80f31724233a77f4dd2857684f2bcd9b194df5ec965d69cc04a9e9b7da9";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/hr/thunderbird-68.9.0.tar.bz2";
+      locale = "hr";
+      arch = "linux-i686";
+      sha512 = "84164d00d087e507ab79aa4db6567311bd0cecbde1cb1be7337f4ffc42abc8c7cd0f4fe9a3aae2e35b01683f96e1bfbc816fa96e6fb872157cb473128679e19f";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/hsb/thunderbird-68.9.0.tar.bz2";
+      locale = "hsb";
+      arch = "linux-i686";
+      sha512 = "a3fac91f5e2fbf739d2f2c164c6d58ea89026c1e8250a41c51ee11640bd7831c73a4c3148cd80ae2b40a2e1a369d47d3832f96a276dae2c80ba2d90d6990d062";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/hu/thunderbird-68.9.0.tar.bz2";
+      locale = "hu";
+      arch = "linux-i686";
+      sha512 = "002c42f700616d2ddcf1753d37de064959965e4504112e96507a8aaf2398fa25f650e1fcb50189aebf3bc3d0c3de795b496d1f8e1550fc0186d74ef312a11d74";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/hy-AM/thunderbird-68.9.0.tar.bz2";
+      locale = "hy-AM";
+      arch = "linux-i686";
+      sha512 = "41fe16657886ccde1c6410e3e62ade72d8890a50e77526994e82cb929c8296110d0aa32d8d02dd7d1482d594322325d28cfa54afe113dc69e2520dcfd56516f1";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/id/thunderbird-68.9.0.tar.bz2";
+      locale = "id";
+      arch = "linux-i686";
+      sha512 = "8fb8703220a801bb2d29e436d28325a3310b61f6a22d3d8964b98bd9cea9e74f9e53cd41c8c9a501057d1915a6c71f6f5d27fea267b802082488d2690a0ee088";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/is/thunderbird-68.9.0.tar.bz2";
+      locale = "is";
+      arch = "linux-i686";
+      sha512 = "09c59bca1a0282416aff4043b7d64e5f8ce308792efd35e197b2d91125715453769b482e5815c9f33cd0d9d3809bbe898c40e767c13786868673bc7f041f1c17";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/it/thunderbird-68.9.0.tar.bz2";
+      locale = "it";
+      arch = "linux-i686";
+      sha512 = "c3f09f2681d0aa197084b0935855dba98517d6f5595595385d93dd7a998ff5b0c98f35141091f41ea8e91ea10b25f6464f242218cd7030351347f77f35396ca2";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/ja/thunderbird-68.9.0.tar.bz2";
+      locale = "ja";
+      arch = "linux-i686";
+      sha512 = "4bdea34b50edfea5b3dd3bb80935e1148b3ad926c95d84a3d265268f783ff3c487527726b0151643c8f3eb5d061d441742da23f6cb03297894a8076a87275574";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/ka/thunderbird-68.9.0.tar.bz2";
+      locale = "ka";
+      arch = "linux-i686";
+      sha512 = "ec029d7a58aa502742160e131eab70f50f83851124297fef72214d58f1309f047b9881d824432a8bd3841dd158493ca2b41e41f4f9bf9dc043db9ec4df1a1d24";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/kab/thunderbird-68.9.0.tar.bz2";
+      locale = "kab";
+      arch = "linux-i686";
+      sha512 = "cf291b9d2924e72b9871a4eadf10118cd0299e2206151c67bf36fe0c766b75c9e67e9b11e8612ca5d95c50c6cd3d90e95210e9625ed8eb1c14ba5a8d45bb997b";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/kk/thunderbird-68.9.0.tar.bz2";
+      locale = "kk";
+      arch = "linux-i686";
+      sha512 = "1031db4a9f0716973fb1ddbc8e12b2252bdb8450617a6c642ad4001c119cd3eb3bad999b861e8204a85699b415fdc5d768b6aafa6fee2c5b9efb7e9a3558eda2";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/ko/thunderbird-68.9.0.tar.bz2";
+      locale = "ko";
+      arch = "linux-i686";
+      sha512 = "bde75ae38856970c4da871cdbd63d96f31021f707869be7517d4c719ecce3f505f886c65e9faad8bcc0ac26885777e070246576fd47f75669b77f0247689954f";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/lt/thunderbird-68.9.0.tar.bz2";
+      locale = "lt";
+      arch = "linux-i686";
+      sha512 = "9459b50e1fd01ce742bfe6f13ac26241958ad5307c08e3980ed5a84023a12be009dc6a83085ad52c68e162e6a45f4f430e79e21e4d19f67e470ab07151c40bc8";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/ms/thunderbird-68.9.0.tar.bz2";
+      locale = "ms";
+      arch = "linux-i686";
+      sha512 = "0632af25fd5245ec2a15a09a075db24a64e3020ea6353e88f72fa74f929d8507cb868cc617da8e97f01efff19a9108c9b2b30adc8e58b0e7e6353332219e658d";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/nb-NO/thunderbird-68.9.0.tar.bz2";
+      locale = "nb-NO";
+      arch = "linux-i686";
+      sha512 = "b16523b5a40dbe496537df487d72f8cb16ccf338c1a96e6ec3dc7e1a5d3073991c12ada23fc6b31f34d2fb712050334eae145a45420994c607a63799ed42d264";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/nl/thunderbird-68.9.0.tar.bz2";
+      locale = "nl";
+      arch = "linux-i686";
+      sha512 = "82f0ab2e4969323ea8294f732b13144ddd453a613a68b582ff398cb85aee88874a5fb5eb61627f142ce8124b476f49fa6cf68cdaa41fdaf3621519c53c4ac16b";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/nn-NO/thunderbird-68.9.0.tar.bz2";
+      locale = "nn-NO";
+      arch = "linux-i686";
+      sha512 = "815d0010de5f6d9144a182a2170c59a502b167f18eec65d23987e4b73e6d5bae46be18d7f55462a3ec8634466639aceca03ad9b772c7e8b232eb874998e6148c";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/pl/thunderbird-68.9.0.tar.bz2";
+      locale = "pl";
+      arch = "linux-i686";
+      sha512 = "5be434a54c91097d4f6477767af96f8b862828912783eee48577cc450a14eceee2e067e9c10697633a2833f473b9d10bea33b3c6c6377b898a18d3d7c6568f96";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/pt-BR/thunderbird-68.9.0.tar.bz2";
+      locale = "pt-BR";
+      arch = "linux-i686";
+      sha512 = "b7b3fd6bb8535f2328ceb9259d7517bfd695cc881130720d3857d5a27197deba4fe683e163f49613054ebec2827e805a31a62c9a9e578f4ffb760f421a4ea506";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/pt-PT/thunderbird-68.9.0.tar.bz2";
+      locale = "pt-PT";
+      arch = "linux-i686";
+      sha512 = "b9561a6f55c25cff2bec9bda78e46204dc85429c52bb42f33b6ae972c0bf16f3a99ccbe3f283ef08cca955d31e5eb6d91ff9d8b50e85bd75443998236d6e08b1";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/rm/thunderbird-68.9.0.tar.bz2";
+      locale = "rm";
+      arch = "linux-i686";
+      sha512 = "7ff72dc448c9303a70403558ae46cd720e645c24681dabbf265db783ef872e92216f8ee9169e155904d3fcd3288f2ee0ad11ca22bbf041b380884d57b306876e";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/ro/thunderbird-68.9.0.tar.bz2";
+      locale = "ro";
+      arch = "linux-i686";
+      sha512 = "7f585b942076749269ca86161694ef1b9f4e68e75300d60ea4141b2404be0c79761a2658c123787d67e65992e4b3dd5b7406acfee6084846bdefdb0f82d9baea";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/ru/thunderbird-68.9.0.tar.bz2";
+      locale = "ru";
+      arch = "linux-i686";
+      sha512 = "e4ef9e081cfdb3567f1823866ffd0e3e5fbe8596fd3a7dbb94869a8d1ebd328938c490669c8f46bc6575d6b8c5c351e387faf8dd2a33db263cb2fb5ddb2974f5";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/si/thunderbird-68.9.0.tar.bz2";
+      locale = "si";
+      arch = "linux-i686";
+      sha512 = "42db8e43c4bd722102778d4a9cdfb0ba54b0151882b7963e07c0b8cd653d7303eb22a541a8fc3a5b93c9db09c1a24db8f5c3365b5654e997c17d3b4b2c2a5f38";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/sk/thunderbird-68.9.0.tar.bz2";
+      locale = "sk";
+      arch = "linux-i686";
+      sha512 = "fb025203b739cd89169bc25b36e6d541ebaf8726720c0b51e58a33fd0e71c2a4ae46428fe16547ed5e639e81ce35253a5519a28de9a8baa952a1b1af184b77a3";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/sl/thunderbird-68.9.0.tar.bz2";
+      locale = "sl";
+      arch = "linux-i686";
+      sha512 = "ba392d3748b697d323e63c7217ce3c3aa4eaf6b994d798655a1667644733a6f19b23b95df420b2235e9ee000a868485d4f32fbe5d737ef5c7296c085738168bd";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/sq/thunderbird-68.9.0.tar.bz2";
+      locale = "sq";
+      arch = "linux-i686";
+      sha512 = "b795928265f2b50a1032ab8fcce954f6d0d35a6dab2b381f11ca1b6b204aa1ae91b0ceb221da5ccadcca303f20792715d0f770c215dc59654df1b325ccc3e42e";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/sr/thunderbird-68.9.0.tar.bz2";
+      locale = "sr";
+      arch = "linux-i686";
+      sha512 = "274c3675cd3d5264c2ce74b101b7c87bfd1703645e4341f6499c25b4905781395f514ed8412b22289ad097994e748ee7b527f1d6081022429292a64155d2df74";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/sv-SE/thunderbird-68.9.0.tar.bz2";
+      locale = "sv-SE";
+      arch = "linux-i686";
+      sha512 = "318ccb06cf2c9f5fdbf25fe70a8c5e65c20e5d7ca375f52f64724410d2afa8a852f9e9e77b673c1f59e26bddd6fde74783a96f69f7bd73a1b7042633b624b310";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/tr/thunderbird-68.9.0.tar.bz2";
+      locale = "tr";
+      arch = "linux-i686";
+      sha512 = "a86a69a8c146a0765e9fb7c835c1cc774a0a7fc309fa7f6627f427bc2cb4bd1b3e18f4aa61288cb68483f267b0be02662250abcdcafcb6619f1b4e3437cbb908";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/uk/thunderbird-68.9.0.tar.bz2";
+      locale = "uk";
+      arch = "linux-i686";
+      sha512 = "86407123381e64df9f97190b0df253792582b0ba5296d6663bc0d8faf3004e3ec95cbc0140c9292928a7750cece1cc6887086a9e218f3169bee2246232643685";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/uz/thunderbird-68.9.0.tar.bz2";
+      locale = "uz";
+      arch = "linux-i686";
+      sha512 = "2d31a86952df2f5b339479cc6dabd1cbcc000119514775b07ca086e01e8310fe0d0d2c63cc57cb936588c59a5f72a5d9dae0e0a6e2f9b7cdf6225e400c24bd31";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/vi/thunderbird-68.9.0.tar.bz2";
+      locale = "vi";
+      arch = "linux-i686";
+      sha512 = "3c241242e918bb69d811289879323205c070620829e05488e224450e7edb2be32b0f2c36f3182fcab95a1673fd133635e89801feaf6a34fa1553d8fea3b57641";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/zh-CN/thunderbird-68.9.0.tar.bz2";
+      locale = "zh-CN";
+      arch = "linux-i686";
+      sha512 = "b4932b43158a5f8627ec951a3cb726863575a81b9d7b93ab35a9168224cd91480ecde55a1e7d4c01b9ed74f92440724475980010f1645db9b2ef0b6c42e92d93";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.9.0/linux-i686/zh-TW/thunderbird-68.9.0.tar.bz2";
+      locale = "zh-TW";
+      arch = "linux-i686";
+      sha512 = "018fff050295932a492433992a97fd01acc36685f7d1f96bba2f41972fdd6cd592c117434d2de81d0d018595c8473427aefe5a7b66194bc18d127c2e7eab5a34";
+    }
+    ];
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird/default.nix
new file mode 100644
index 000000000000..73536ae5fc1b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird/default.nix
@@ -0,0 +1,342 @@
+{ autoconf213
+, bzip2
+, cargo
+, common-updater-scripts
+, coreutils
+, curl
+, dbus
+, dbus-glib
+, fetchurl
+, file
+, fontconfig
+, freetype
+, glib
+, gnugrep
+, gnused
+, icu
+, jemalloc
+, lib
+, libGL
+, libGLU
+, libIDL
+, libevent
+, libjpeg
+, libnotify
+, libpng
+, libstartup_notification
+, libvpx
+, libwebp
+, llvmPackages
+, m4
+, makeDesktopItem
+, nasm
+, nodejs
+, nspr
+, nss
+, pango
+, perl
+, pkgconfig
+, python2
+, python3
+, runtimeShell
+, rust-cbindgen
+, rustc
+, sqlite
+, stdenv
+, systemd
+, unzip
+, which
+, writeScript
+, xidel
+, xorg
+, yasm
+, zip
+, zlib
+
+, debugBuild ? false
+
+, alsaSupport ? stdenv.isLinux, alsaLib
+, pulseaudioSupport ? stdenv.isLinux, libpulseaudio
+, gtk3Support ? true, gtk2, gtk3, wrapGAppsHook
+, waylandSupport ? true
+, libxkbcommon, calendarSupport ? true
+
+, # If you want the resulting program to call itself "Thunderbird" instead
+# of "Earlybird" or whatever, enable this option.  However, those
+# binaries may not be distributed without permission from the
+# Mozilla Foundation, see
+# http://www.mozilla.org/foundation/trademarks/.
+enableOfficialBranding ? false
+}:
+
+assert waylandSupport -> gtk3Support == true;
+
+stdenv.mkDerivation rec {
+  pname = "thunderbird";
+  version = "68.9.0";
+
+  src = fetchurl {
+    url =
+      "mirror://mozilla/thunderbird/releases/${version}/source/thunderbird-${version}.source.tar.xz";
+    sha512 =
+      "3q0dikgkfr72hhz39pxi2f0cljn09lw4940qcn9kzfwfid2h290j7pihx6gs0z6h82fl78f9fl1598d064lwl1i2434dzx6bg4p4549";
+  };
+
+  nativeBuildInputs = [
+    autoconf213
+    cargo
+    gnused
+    llvmPackages.llvm
+    m4
+    nasm
+    nodejs
+    perl
+    pkgconfig
+    python2
+    python3
+    rust-cbindgen
+    rustc
+    which
+    yasm
+  ] ++ lib.optional gtk3Support wrapGAppsHook;
+
+  buildInputs = [
+    bzip2
+    dbus
+    dbus-glib
+    file
+    fontconfig
+    freetype
+    glib
+    gtk2
+    icu
+    jemalloc
+    libGL
+    libGLU
+    libIDL
+    libevent
+    libjpeg
+    libnotify
+    libpng
+    libstartup_notification
+    libvpx
+    libwebp
+    nspr
+    nss
+    pango
+    perl
+    sqlite
+    unzip
+    xorg.libX11
+    xorg.libXScrnSaver
+    xorg.libXcursor
+    xorg.libXext
+    xorg.libXft
+    xorg.libXi
+    xorg.libXrender
+    xorg.libXt
+    xorg.pixman
+    xorg.xorgproto
+    zip
+    zlib
+  ] ++ lib.optional alsaSupport alsaLib
+    ++ lib.optional gtk3Support gtk3
+    ++ lib.optional pulseaudioSupport libpulseaudio
+    ++ lib.optional waylandSupport libxkbcommon;
+
+  NIX_CFLAGS_COMPILE =[
+    "-I${glib.dev}/include/gio-unix-2.0"
+    "-I${nss.dev}/include/nss"
+  ];
+
+  patches = [
+    ./no-buildconfig.patch
+  ];
+
+  postPatch = ''
+    rm -rf obj-x86_64-pc-linux-gnu
+  '';
+
+  hardeningDisable = [ "format" ];
+
+  preConfigure = ''
+    # remove distributed configuration files
+    rm -f configure
+    rm -f js/src/configure
+    rm -f .mozconfig*
+
+    configureScript="$(realpath ./mach) configure"
+    # AS=as in the environment causes build failure https://bugzilla.mozilla.org/show_bug.cgi?id=1497286
+    unset AS
+
+    export MOZCONFIG=$(pwd)/mozconfig
+
+    # Set C flags for Rust's bindgen program. Unlike ordinary C
+    # compilation, bindgen does not invoke $CC directly. Instead it
+    # uses LLVM's libclang. To make sure all necessary flags are
+    # included we need to look in a few places.
+    # TODO: generalize this process for other use-cases.
+
+    BINDGEN_CFLAGS="$(< ${stdenv.cc}/nix-support/libc-cflags) \
+      $(< ${stdenv.cc}/nix-support/cc-cflags) \
+      ${stdenv.cc.default_cxx_stdlib_compile} \
+      ${
+        lib.optionalString stdenv.cc.isClang
+        "-idirafter ${stdenv.cc.cc}/lib/clang/${
+          lib.getVersion stdenv.cc.cc
+        }/include"
+      } \
+      ${
+        lib.optionalString stdenv.cc.isGNU
+        "-isystem ${stdenv.cc.cc}/include/c++/${
+          lib.getVersion stdenv.cc.cc
+        } -isystem ${stdenv.cc.cc}/include/c++/${
+          lib.getVersion stdenv.cc.cc
+        }/${stdenv.hostPlatform.config}"
+      } \
+      $NIX_CFLAGS_COMPILE"
+
+    echo "ac_add_options BINDGEN_CFLAGS='$BINDGEN_CFLAGS'" >> $MOZCONFIG
+  '';
+
+  configureFlags = let
+    toolkitSlug = if gtk3Support then
+      "3${lib.optionalString waylandSupport "-wayland"}"
+    else
+      "2";
+    toolkitValue = "cairo-gtk${toolkitSlug}";
+  in [
+    "--enable-application=comm/mail"
+
+    "--with-system-bz2"
+    "--with-system-icu"
+    "--with-system-jpeg"
+    "--with-system-libevent"
+    "--with-system-nspr"
+    "--with-system-nss"
+    "--with-system-png" # needs APNG support
+    "--with-system-icu"
+    "--with-system-zlib"
+    "--with-system-webp"
+    "--with-system-libvpx"
+
+    "--enable-rust-simd"
+    "--enable-crashreporter"
+    "--enable-default-toolkit=${toolkitValue}"
+    "--enable-js-shell"
+    "--enable-necko-wifi"
+    "--enable-startup-notification"
+    "--enable-system-ffi"
+    "--enable-system-pixman"
+    "--enable-system-sqlite"
+
+    "--disable-gconf"
+    "--disable-tests"
+    "--disable-updater"
+    "--enable-jemalloc"
+  ] ++ (if debugBuild then [
+    "--enable-debug"
+    "--enable-profiling"
+  ] else [
+    "--disable-debug"
+    "--enable-release"
+    "--disable-debug-symbols"
+    "--enable-optimize"
+    "--enable-strip"
+  ]) ++ lib.optionals (!stdenv.hostPlatform.isi686) [
+    # on i686-linux: --with-libclang-path is not available in this configuration
+    "--with-libclang-path=${llvmPackages.libclang}/lib"
+    "--with-clang-path=${llvmPackages.clang}/bin/clang"
+  ] ++ lib.optional alsaSupport "--enable-alsa"
+  ++ lib.optional calendarSupport "--enable-calendar"
+  ++ lib.optional enableOfficialBranding "--enable-official-branding"
+  ++ lib.optional pulseaudioSupport "--enable-pulseaudio";
+
+  enableParallelBuilding = true;
+
+  postConfigure = ''
+    cd obj-*
+  '';
+
+  makeFlags = lib.optionals enableOfficialBranding [
+    "MOZILLA_OFFICIAL=1"
+    "BUILD_OFFICIAL=1"
+  ];
+
+  doCheck = false;
+
+  postInstall = let
+    desktopItem = makeDesktopItem {
+      categories = lib.concatStringsSep ";" [ "Application" "Network" ];
+      desktopName = "Thunderbird";
+      genericName = "Mail Reader";
+      name = "thunderbird";
+      exec = "thunderbird %U";
+      icon = "$out/lib/thunderbird/chrome/icons/default/default256.png";
+      mimeType = lib.concatStringsSep ";" [
+        # Email
+        "x-scheme-handler/mailto"
+        "message/rfc822"
+        # Feeds
+        "x-scheme-handler/feed"
+        "application/rss+xml"
+        "application/x-extension-rss"
+        # Newsgroups
+        "x-scheme-handler/news"
+        "x-scheme-handler/snews"
+        "x-scheme-handler/nntp"
+      ];
+    };
+  in ''
+    # TODO: Move to a dev output?
+    rm -rf $out/include $out/lib/thunderbird-devel-* $out/share/idl
+
+    ${desktopItem.buildCommand}
+  '';
+
+  preFixup = ''
+    # Needed to find Mozilla runtime
+    gappsWrapperArgs+=(
+      --argv0 "$out/bin/thunderbird"
+      --set MOZ_APP_LAUNCHER thunderbird
+      # https://github.com/NixOS/nixpkgs/pull/61980
+      --set SNAP_NAME "thunderbird"
+      --set MOZ_LEGACY_PROFILES 1
+      --set MOZ_ALLOW_DOWNGRADE 1
+    )
+  '';
+
+  # FIXME: The XUL portion of this can probably be removed as soon as we
+  # package a Thunderbird >=71.0 since XUL shouldn't be anymore (in use)?
+  postFixup = ''
+    local xul="$out/lib/thunderbird/libxul.so"
+    patchelf --set-rpath "${libnotify}/lib:${systemd.lib}/lib:$(patchelf --print-rpath $xul)" $xul
+  '';
+
+  doInstallCheck = true;
+  installCheckPhase = ''
+    "$out/bin/thunderbird" --version
+  '';
+
+  disallowedRequisites = [
+    stdenv.cc
+  ];
+
+  passthru.updateScript = import ./../../browsers/firefox/update.nix {
+    attrPath = "thunderbird";
+    baseUrl = "http://archive.mozilla.org/pub/thunderbird/releases/";
+    inherit writeScript lib common-updater-scripts xidel coreutils gnused
+      gnugrep curl runtimeShell;
+  };
+
+  meta = with stdenv.lib; {
+    description = "A full-featured e-mail client";
+    homepage = "https://www.thunderbird.net";
+    maintainers = with maintainers; [
+      eelco
+      lovesegfault
+      pierron
+    ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird/no-buildconfig.patch b/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird/no-buildconfig.patch
new file mode 100644
index 000000000000..fe3a93ebda7b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird/no-buildconfig.patch
@@ -0,0 +1,35 @@
+diff -ru -x '*~' a/docshell/base/nsAboutRedirector.cpp b/docshell/base/nsAboutRedirector.cpp
+--- a/docshell/base/nsAboutRedirector.cpp	2017-07-31 18:20:51.000000000 +0200
++++ b/docshell/base/nsAboutRedirector.cpp	2017-09-26 22:02:00.814151731 +0200
+@@ -32,8 +32,6 @@
+     {"about", "chrome://global/content/aboutAbout.xhtml", 0},
+     {"addons", "chrome://mozapps/content/extensions/extensions.xul",
+      nsIAboutModule::ALLOW_SCRIPT},
+-    {"buildconfig", "chrome://global/content/buildconfig.html",
+-     nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT},
+     {"checkerboard", "chrome://global/content/aboutCheckerboard.xhtml",
+      nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
+          nsIAboutModule::ALLOW_SCRIPT},
+diff -ru -x '*~' a/toolkit/content/jar.mn b/toolkit/content/jar.mn
+--- a/toolkit/content/jar.mn	2017-07-31 18:20:52.000000000 +0200
++++ b/toolkit/content/jar.mn	2017-09-26 22:01:42.383350314 +0200
+@@ -39,7 +39,6 @@
+    content/global/plugins.css
+    content/global/browser-child.js
+    content/global/browser-content.js
+-*   content/global/buildconfig.html
+    content/global/buildconfig.css
+    content/global/contentAreaUtils.js
+    content/global/datepicker.xhtml
+--- a/comm/mail/base/jar.mn
++++ b/comm/mail/base/jar.mn
+@@ -117,9 +117,7 @@
+ % override chrome://mozapps/content/profile/profileDowngrade.js chrome://messenger/content/profileDowngrade.js
+ % override chrome://mozapps/content/profile/profileDowngrade.xul chrome://messenger/content/profileDowngrade.xul
+ 
+-*   content/messenger/buildconfig.html              (content/buildconfig.html)
+     content/messenger/buildconfig.css               (content/buildconfig.css)
+-% override chrome://global/content/buildconfig.html chrome://messenger/content/buildconfig.html
+ % override chrome://global/content/buildconfig.css chrome://messenger/content/buildconfig.css
+ 
+ # L10n resources and overrides.
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/trojita/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/trojita/default.nix
new file mode 100644
index 000000000000..f383018e2537
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/trojita/default.nix
@@ -0,0 +1,59 @@
+{ akonadi-contacts
+, cmake
+, fetchgit
+, gnupg
+, gpgme
+, kcontacts
+, kf5gpgmepp
+, lib
+, libsecret
+, mimetic
+, mkDerivation
+, pkgconfig
+, qgpgme
+, qtbase
+, qtkeychain
+, qttools
+, qtwebkit
+}:
+
+mkDerivation rec {
+  pname = "trojita";
+  version = "0.7.20190618";
+
+  src = fetchgit {
+    url = "https://anongit.kde.org/trojita.git";
+    rev = "90b417b131853553c94ff93aef62abaf301aa8f1";
+    sha256 = "0xpxq5bzqaa68lkz90wima5q2m0mdcn0rvnigb66lylb4n20mnql";
+  };
+
+  buildInputs = [
+    akonadi-contacts
+    gpgme
+    kcontacts
+    libsecret
+    mimetic
+    qgpgme
+    qtbase
+    qtkeychain
+    qtwebkit
+    mimetic
+    kf5gpgmepp
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    pkgconfig
+    qttools
+    gnupg
+  ];
+
+  meta = with lib; {
+    description = "A Qt IMAP e-mail client";
+    homepage = "http://trojita.flaska.net/";
+    license = with licenses; [ gpl2 gpl3 ];
+    maintainers = with maintainers; [ ehmry ];
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/modem-manager-gui/default.nix b/nixpkgs/pkgs/applications/networking/modem-manager-gui/default.nix
new file mode 100644
index 000000000000..38662bf7f699
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/modem-manager-gui/default.nix
@@ -0,0 +1,72 @@
+{ stdenv
+, pkgconfig
+, python3
+, fetchhg
+, fetchpatch
+, gtk3
+, glib
+, gdbm
+, gtkspell3
+, ofono
+, itstool
+, libappindicator-gtk3
+, perlPackages
+, glibcLocales
+, meson
+, ninja
+}:
+
+stdenv.mkDerivation rec {
+  pname = "modem-manager-gui";
+  version = "0.0.19.1";
+
+  src = fetchhg {
+    url = "https://linuxonly@bitbucket.org/linuxonly/modem-manager-gui";
+    rev = "version ${version}";
+    sha256 = "11iibh36567814h2bz41sa1072b86p1l13xyj670pwkh9k8kw8fd";
+  };
+
+  patches = [
+    # Fix docs build
+    (fetchpatch {
+      url = "https://bitbucket.org/linuxonly/modem-manager-gui/commits/68fb09c12413b7de9b7477cbf4241c3527568325/raw";
+      sha256 = "033nrlhjlk0zvadv5g9n2id53ajagswf77mda0ixnrskyi7wiig7";
+    })
+  ];
+
+  nativeBuildInputs = [
+    pkgconfig
+    python3
+    perlPackages.Po4a
+    itstool
+    meson
+    ninja
+  ];
+
+  buildInputs = [
+    gtk3
+    glib
+    gdbm
+    gtkspell3
+    ofono
+    libappindicator-gtk3
+  ];
+
+  postPatch = ''
+    patchShebangs man/manhelper.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An app to send/receive SMS, make USSD requests, control mobile data usage and more";
+    longDescription = ''
+      A simple GTK based GUI compatible with Modem manager, Wader and oFono
+      system services able to control EDGE/3G/4G broadband modem specific
+      functions. You can check balance of your SIM card, send or receive SMS
+      messages, control mobile traffic consumption and more.
+    '';
+    homepage = "https://linuxonly.ru/page/modem-manager-gui";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ ahuzik ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mpop/default.nix b/nixpkgs/pkgs/applications/networking/mpop/default.nix
new file mode 100644
index 000000000000..f6c979b5173b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mpop/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, pkgconfig, gnutls, gsasl, libidn, Security }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "mpop";
+  version = "1.4.10";
+
+  src = fetchurl {
+    url = "https://marlam.de/${pname}/releases/${pname}-${version}.tar.xz";
+    sha256 = "1243hazpiwgvz2m3p48cdh0yw1019i6xjxgc7qyhmxcdy0inb6wy";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gnutls gsasl libidn ]
+    ++ optional stdenv.isDarwin Security;
+
+  configureFlags = optional stdenv.isDarwin [ "--with-macosx-keyring" ];
+
+  meta = {
+      description = "POP3 mail retrieval agent";
+      homepage = "https://marlam.de/mpop";
+      license = licenses.gpl3Plus;
+      platforms = platforms.unix;
+    };
+}
diff --git a/nixpkgs/pkgs/applications/networking/msmtp/default.nix b/nixpkgs/pkgs/applications/networking/msmtp/default.nix
new file mode 100644
index 000000000000..e21cd5b3f0fc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/msmtp/default.nix
@@ -0,0 +1,59 @@
+{ stdenv, lib, fetchurl, autoreconfHook, pkgconfig, texinfo
+, netcat-gnu, gnutls, gsasl, libidn2, Security
+, withKeyring ? true, libsecret ? null
+, systemd ? null }:
+
+let
+  tester = "n"; # {x| |p|P|n|s}
+  journal = if stdenv.isLinux then "y" else "n";
+
+in stdenv.mkDerivation rec {
+  pname = "msmtp";
+  version = "1.8.11";
+
+  src = fetchurl {
+    url = "https://marlam.de/${pname}/releases/${pname}-${version}.tar.xz";
+    sha256 = "0q0fg235qk448l1xjcwyxr7vcpzk6w57jzhjbkb0m7nffyhhypzj";
+  };
+
+  patches = [
+    ./paths.patch
+  ];
+
+  buildInputs = [ gnutls gsasl libidn2 ]
+    ++ stdenv.lib.optional stdenv.isDarwin Security
+    ++ stdenv.lib.optional withKeyring libsecret;
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig texinfo ];
+
+  configureFlags =
+    [ "--sysconfdir=/etc" ] ++ stdenv.lib.optional stdenv.isDarwin [ "--with-macosx-keyring" ];
+
+  postInstall = ''
+    install -d $out/share/doc/${pname}/scripts
+    cp -r scripts/{find_alias,msmtpqueue,msmtpq,set_sendmail} $out/share/doc/${pname}/scripts
+    install -Dm644 doc/*.example $out/share/doc/${pname}
+
+    substitute scripts/msmtpq/msmtpq $out/bin/msmtpq \
+      --replace @msmtp@      $out/bin/msmtp \
+      --replace @nc@         ${netcat-gnu}/bin/nc \
+      --replace @journal@    ${journal} \
+      ${lib.optionalString (journal == "y") "--replace @systemdcat@ ${systemd}/bin/systemd-cat" } \
+      --replace @test@       ${tester}
+
+    substitute scripts/msmtpq/msmtp-queue $out/bin/msmtp-queue \
+      --replace @msmtpq@ $out/bin/msmtpq
+
+    ln -s msmtp $out/bin/sendmail
+
+    chmod +x $out/bin/*
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple and easy to use SMTP client with excellent sendmail compatibility";
+    homepage = "https://marlam.de/msmtp/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ peterhoeg ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/msmtp/paths.patch b/nixpkgs/pkgs/applications/networking/msmtp/paths.patch
new file mode 100644
index 000000000000..707163bff0c9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/msmtp/paths.patch
@@ -0,0 +1,97 @@
+diff --git a/scripts/msmtpq/msmtp-queue b/scripts/msmtpq/msmtp-queue
+index 1dc220d..d834241 100755
+--- a/scripts/msmtpq/msmtp-queue
++++ b/scripts/msmtpq/msmtp-queue
+@@ -27,4 +27,4 @@
+ ## change the below line to be
+ ##   exec /path/to/msmtpq --q-mgmt
+ 
+-exec msmtpq --q-mgmt "$1"
++exec @msmtpq@ --q-mgmt "$1"
+diff --git a/scripts/msmtpq/msmtpq b/scripts/msmtpq/msmtpq
+index bdb4fb8..1363a67 100755
+--- a/scripts/msmtpq/msmtpq
++++ b/scripts/msmtpq/msmtpq
+@@ -59,7 +59,7 @@ err() { dsp '' "$@" '' ; exit 1 ; }
+ ##   enter the location of the msmtp executable  (no quotes !!)
+ ##   e.g. ( MSMTP=/path/to/msmtp )
+ ##   and uncomment the test for its existence
+-MSMTP=msmtp
++MSMTP=@msmtp@
+ #[ -x "$MSMTP" ] || \
+ #  log -e 1 "msmtpq : can't find the msmtp executable [ $MSMTP ]"   # if not found - complain ; quit
+ ##
+@@ -70,9 +70,8 @@ MSMTP=msmtp
+ ##            ( chmod 0700 msmtp.queue )
+ ##
+ ## the queue dir - modify this to reflect where you'd like it to be  (no quotes !!)
+-Q=~/.msmtp.queue
+-[ -d "$Q" ] || \
+-  err '' "msmtpq : can't find msmtp queue directory [ $Q ]" ''     # if not present - complain ; quit
++Q=${MSMTP_QUEUE:-~/.msmtp.queue}
++test -d "$Q" || mkdir -p "$Q"
+ ##
+ ## set the queue log file var to the location of the msmtp queue log file
+ ##   where it is or where you'd like it to be
+@@ -84,7 +83,10 @@ Q=~/.msmtp.queue
+ ##     (doing so would be inadvisable under most conditions, however)
+ ##
+ ## the queue log file - modify (or comment out) to taste  (but no quotes !!)
+-LOG=~/log/msmtp.queue.log
++LOG=${MSMTP_LOG:-~/log/msmtp.queue.log}
++test -d "$(dirname $LOG)" || mkdir -p "$(dirname $LOG)"
++
++JOURNAL=@journal@
+ ## ======================================================================================
+ 
+ ## msmtpq can use the following environment variables :
+@@ -108,7 +110,7 @@ LOG=~/log/msmtp.queue.log
+ ##
+ #EMAIL_CONN_NOTEST=y                 # deprecated ; use below var
+ #EMAIL_CONN_TEST={x| |p|P|n|s}       # see settings above for EMAIL_CONN_TEST
+-EMAIL_CONN_TEST=n
++EMAIL_CONN_TEST=@test@
+ #EMAIL_QUEUE_QUIET=t
+ ## ======================================================================================
+ 
+@@ -138,6 +140,7 @@ on_exit() {                          # unlock the queue on exit if the lock was
+ ## display msg to user, as well
+ ##
+ log() {
++  local NAME=msmtpq
+   local ARG RC PFX
+   PFX="$('date' +'%Y %d %b %H:%M:%S')"
+                                      # time stamp prefix - "2008 13 Mar 03:59:45 "
+   if [ "$1" = '-e' ] ; then          # there's an error exit code
+@@ -154,10 +157,19 @@ log() {
+     done
+   fi
+ 
++  if [ "$JOURNAL" == "y" ] ; then
++    for ARG ; do
++      [ -n "$ARG" ] && \
++        echo "$PFX : $ARG" | @systemdcat@ -t $NAME -p info
++    done
++  fi
++
+   if [ -n "$RC" ] ; then             # an error ; leave w/error return
+     [ -n "$LKD" ] && lock_queue -u   # unlock here (if locked)
+     [ -n "$LOG" ] && \
+       echo "    exit code = $RC" >> "$LOG" # logging ok ; send exit code to log
++    [ "$JOURNAL" == "y" ] && \
++      echo "exit code= $RC" | @systemdcat@ -t $NAME -p emerg
+     exit $RC                         # exit w/return code
+   fi
+ }
+@@ -207,10 +219,7 @@ connect_test() {
+     ping -qnc1 -w4 8.8.8.8 >/dev/null 2>&1 || return 1
+ 
+   elif [ "$EMAIL_CONN_TEST" = 'n' ] ; then                     # use netcat (nc) test
+-    # must, of course, have netcat (nc) installed
+-    which nc >/dev/null 2>&1 || \
+-      log -e 1 "msmtpq : can't find netcat executable [ nc ]"  # if not found - complain ; quit
+-    'nc' -vz www.debian.org 80 >/dev/null 2>&1 || return 1
++    @nc@ -vz www.debian.org 80 >/dev/null 2>&1 || return 1
+ 
+   elif [ "$EMAIL_CONN_TEST" = 's' ] ; then                     # use sh sockets test
+     # note that this does not work on debian systems
diff --git a/nixpkgs/pkgs/applications/networking/mullvad-vpn/default.nix b/nixpkgs/pkgs/applications/networking/mullvad-vpn/default.nix
new file mode 100644
index 000000000000..93a899742b5d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mullvad-vpn/default.nix
@@ -0,0 +1,92 @@
+{ stdenv, makeWrapper, fetchurl, dpkg
+, alsaLib, atk, cairo, cups, dbus, expat, fontconfig, freetype
+, gdk-pixbuf, glib, gnome2, pango, nspr, nss, gtk3
+, xorg, autoPatchelfHook, systemd, libnotify, libappindicator
+}:
+
+let deps = [
+    alsaLib
+    atk
+    cairo
+    cups
+    dbus
+    expat
+    fontconfig
+    freetype
+    gdk-pixbuf
+    glib
+    gnome2.GConf
+    pango
+    gtk3
+    libappindicator
+    libnotify
+    xorg.libX11
+    xorg.libXScrnSaver
+    xorg.libXcomposite
+    xorg.libXcursor
+    xorg.libXdamage
+    xorg.libXext
+    xorg.libXfixes
+    xorg.libXi
+    xorg.libXrandr
+    xorg.libXrender
+    xorg.libXtst
+    xorg.libxcb
+    nspr
+    nss
+    systemd
+  ];
+
+in
+
+stdenv.mkDerivation rec {
+  pname = "mullvad-vpn";
+  version = "2020.4";
+
+  src = fetchurl {
+    url = "https://www.mullvad.net/media/app/MullvadVPN-${version}_amd64.deb";
+    sha256 = "17xi8g2k89vi4d0j7pr33bx9zjapa2qh4pymbrqvxwli3yhq6zwr";
+  };
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+    dpkg
+  ];
+
+  buildInputs = deps;
+
+  dontBuild = true;
+  dontConfigure = true;
+
+  unpackPhase = "dpkg-deb -x $src .";
+
+  runtimeDependencies = [ systemd.lib libnotify libappindicator ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/mullvad $out/bin
+
+    mv usr/share/* $out/share
+    mv usr/bin/* $out/bin
+    mv opt/Mullvad\ VPN/* $out/share/mullvad
+
+    sed -i 's|\/opt\/Mullvad.*VPN|'$out'/bin|g' $out/share/applications/mullvad-vpn.desktop
+
+    ln -s $out/share/mullvad/mullvad-{gui,vpn} $out/bin/
+    ln -s $out/share/mullvad/resources/mullvad-daemon $out/bin/mullvad-daemon
+    ln -sf $out/share/mullvad/resources/mullvad-problem-report $out/bin/mullvad-problem-report
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/mullvad/mullvadvpn-app";
+    description = "Client for Mullvad VPN";
+    changelog = "https://github.com/mullvad/mullvadvpn-app/blob/${version}/CHANGELOG.md";
+    license = licenses.gpl3;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ filalex77 ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/mumble/default.nix b/nixpkgs/pkgs/applications/networking/mumble/default.nix
new file mode 100644
index 000000000000..b83e98a558c2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mumble/default.nix
@@ -0,0 +1,145 @@
+{ stdenv, fetchurl, fetchFromGitHub, fetchpatch, pkgconfig, qt5
+, avahi, boost, libopus, libsndfile, protobuf, speex, libcap
+, alsaLib, python
+, rnnoise
+, jackSupport ? false, libjack2 ? null
+, speechdSupport ? false, speechd ? null
+, pulseSupport ? false, libpulseaudio ? null
+, iceSupport ? false, zeroc-ice ? null
+, nixosTests
+}:
+
+assert jackSupport -> libjack2 != null;
+assert speechdSupport -> speechd != null;
+assert pulseSupport -> libpulseaudio != null;
+assert iceSupport -> zeroc-ice != null;
+
+with stdenv.lib;
+let
+  generic = overrides: source: qt5.mkDerivation (source // overrides // {
+    pname = overrides.type;
+    version = source.version;
+
+    patches = (source.patches or [])
+      ++ [ ./fix-rnnoise-argument.patch ];
+
+    nativeBuildInputs = [ pkgconfig python qt5.qmake ]
+      ++ (overrides.nativeBuildInputs or [ ]);
+
+    buildInputs = [ boost protobuf avahi ]
+      ++ (overrides.buildInputs or [ ]);
+
+    qmakeFlags = [
+      "CONFIG+=c++11"
+      "CONFIG+=shared"
+      "CONFIG+=no-g15"
+      "CONFIG+=packaged"
+      "CONFIG+=no-update"
+      "CONFIG+=no-embed-qt-translations"
+      "CONFIG+=bundled-celt"
+      "CONFIG+=no-bundled-opus"
+      "CONFIG+=no-bundled-speex"
+      "DEFINES+=PLUGIN_PATH=${placeholder "out"}/lib/mumble"
+    ] ++ optional (!speechdSupport) "CONFIG+=no-speechd"
+      ++ optional jackSupport "CONFIG+=no-oss CONFIG+=no-alsa CONFIG+=jackaudio"
+      ++ (overrides.configureFlags or [ ]);
+
+    preConfigure = ''
+       patchShebangs scripts
+    '';
+
+    makeFlags = [ "release" ];
+
+    installPhase = ''
+      runHook preInstall
+
+      ${overrides.installPhase}
+
+      # doc stuff
+      mkdir -p $out/share/man/man1
+      install -Dm644 man/mum* $out/share/man/man1/
+
+      runHook postInstall
+    '';
+
+    enableParallelBuilding = true;
+
+    passthru.tests.connectivity = nixosTests.mumble;
+
+    meta = {
+      description = "Low-latency, high quality voice chat software";
+      homepage = "https://mumble.info";
+      license = licenses.bsd3;
+      maintainers = with maintainers; [ petabyteboy infinisil ];
+      platforms = platforms.linux;
+    };
+  });
+
+  client = source: generic {
+    type = "mumble";
+
+    nativeBuildInputs = [ qt5.qttools ];
+    buildInputs = [ libopus libsndfile speex qt5.qtsvg rnnoise ]
+      ++ optional stdenv.isLinux alsaLib
+      ++ optional jackSupport libjack2
+      ++ optional speechdSupport speechd
+      ++ optional pulseSupport libpulseaudio;
+
+    configureFlags = [
+      "CONFIG+=no-server"
+    ];
+
+    NIX_CFLAGS_COMPILE = optional speechdSupport "-I${speechd}/include/speech-dispatcher";
+
+    installPhase = ''
+      # bin stuff
+      install -Dm755 release/mumble $out/bin/mumble
+      install -Dm755 scripts/mumble-overlay $out/bin/mumble-overlay
+
+      # lib stuff
+      mkdir -p $out/lib/mumble
+      cp -P release/libmumble.so* $out/lib
+      cp -P release/libcelt* $out/lib/mumble
+      cp -P release/plugins/* $out/lib/mumble
+
+      # icons
+      install -Dm644 scripts/mumble.desktop $out/share/applications/mumble.desktop
+      install -Dm644 icons/mumble.svg $out/share/icons/hicolor/scalable/apps/mumble.svg
+    '';
+  } source;
+
+  server = source: generic {
+    type = "murmur";
+
+    postPatch = optional iceSupport ''
+      grep -Rl '/usr/share/Ice' . | xargs sed -i 's,/usr/share/Ice/,${zeroc-ice.dev}/share/ice/,g'
+    '';
+
+    configureFlags = [
+      "CONFIG+=no-client"
+    ] ++ optional (!iceSupport) "CONFIG+=no-ice";
+
+    buildInputs = [ libcap ] ++ optional iceSupport zeroc-ice;
+
+    installPhase = ''
+      # bin stuff
+      install -Dm755 release/murmurd $out/bin/murmurd
+    '';
+  } source;
+
+  source = rec {
+    version = "1.3.1";
+
+    # Needs submodules
+    src = fetchFromGitHub {
+      owner = "mumble-voip";
+      repo = "mumble";
+      rev = version;
+      sha256 = "1xsla9g7xbq6xniwcsjik5hbjh0xahv44qh4z9hjn7p70b8vgnwc";
+      fetchSubmodules = true;
+    };
+  };
+in {
+  mumble  = client source;
+  murmur  = server source;
+}
diff --git a/nixpkgs/pkgs/applications/networking/mumble/fix-rnnoise-argument.patch b/nixpkgs/pkgs/applications/networking/mumble/fix-rnnoise-argument.patch
new file mode 100644
index 000000000000..78e8ed24d58f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mumble/fix-rnnoise-argument.patch
@@ -0,0 +1,16 @@
+nixpkgs has a more recent rnnoise than the one used by mumble, and rnnoise
+changed the argument rnnoise_create[1],
+
+[1] https://github.com/xiph/rnnoise/commit/231b9c02d14a74cb449a98004cb7a2cf1bdeca2f
+
+--- old/src/mumble/AudioInput.cpp	2020-02-18 22:55:32.000000000 -0500
++++ new/src/mumble/AudioInput.cpp	2020-02-18 22:58:08.000000000 -0500
+@@ -106,7 +106,7 @@
+ #endif
+ 
+ #ifdef USE_RNNOISE
+-	denoiseState = rnnoise_create();
++	denoiseState = rnnoise_create(NULL);
+ #endif
+ 
+ 	qWarning("AudioInput: %d bits/s, %d hz, %d sample", iAudioQuality, iSampleRate, iFrameSize);
diff --git a/nixpkgs/pkgs/applications/networking/mumble/overlay.nix b/nixpkgs/pkgs/applications/networking/mumble/overlay.nix
new file mode 100644
index 000000000000..babb3812bb92
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mumble/overlay.nix
@@ -0,0 +1,28 @@
+{ stdenv, lib, which, file, mumble, mumble_i686
+}:
+
+let
+  binPath = lib.makeBinPath [ which file ];
+in stdenv.mkDerivation {
+  name = "mumble-overlay-${mumble.version}";
+
+  inherit (mumble) src;
+
+  phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
+
+  installPhase = ''
+    mkdir -p $out/lib
+    ln -s ${mumble}/lib/libmumble.so.1.2.* $out/lib/libmumble.so.1
+    ${lib.optionalString (mumble_i686 != null) ''
+      mkdir -p $out/lib32
+      ln -s ${mumble_i686}/lib/libmumble.so.1.2.* $out/lib32/libmumble.so.1
+    ''}
+    install -Dm755 scripts/mumble-overlay $out/bin/mumble-overlay
+    sed -i "s,/usr/lib,$out/lib,g" $out/bin/mumble-overlay
+    sed -i '2iPATH="${binPath}:$PATH"' $out/bin/mumble-overlay
+  '';
+
+  meta = {
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ndppd/default.nix b/nixpkgs/pkgs/applications/networking/ndppd/default.nix
new file mode 100644
index 000000000000..931453624811
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ndppd/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, gzip }:
+
+stdenv.mkDerivation rec {
+  pname = "ndppd";
+  version = "0.2.5";
+
+  src = fetchFromGitHub {
+    owner = "DanielAdolfsson";
+    repo = "ndppd";
+    rev = version;
+    sha256 = "0niri5q9qyyyw5lmjpxk19pv3v4srjvmvyd5k6ks99mvqczjx9c0";
+  };
+
+  makeFlags = [
+    "PREFIX=$(out)"
+  ];
+
+  preConfigure = ''
+    substituteInPlace Makefile --replace /bin/gzip ${gzip}/bin/gzip
+  '';
+
+  postInstall = ''
+    mkdir -p $out/etc
+    cp ndppd.conf-dist $out/etc/ndppd.conf
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A daemon that proxies NDP (Neighbor Discovery Protocol) messages between interfaces";
+    homepage = "https://github.com/DanielAdolfsson/ndppd";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ fadenb globin ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/netperf/default.nix b/nixpkgs/pkgs/applications/networking/netperf/default.nix
new file mode 100644
index 000000000000..c2e51ee743b5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/netperf/default.nix
@@ -0,0 +1,30 @@
+{ libsmbios, stdenv, autoreconfHook, fetchFromGitHub }:
+
+stdenv.mkDerivation {
+  pname = "netperf";
+  version = "20180613";
+
+  src = fetchFromGitHub {
+    owner = "HewlettPackard";
+    repo = "netperf";
+    rev = "bcb868bde7f0203bbab69609f65d4088ba7398db";
+    sha256 = "1wbbgdvhadd3qs3afv6i777argdpcyxkwz4yv6aqp223n8ki6dm8";
+  };
+
+  buildInputs = stdenv.lib.optional (stdenv.hostPlatform.isx86) libsmbios;
+  nativeBuildInputs = [ autoreconfHook ];
+  autoreconfPhase = ''
+    autoreconf -i -I src/missing/m4
+  '';
+  configureFlags = [ "--enable-demo" ];
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Benchmark to measure the performance of many different types of networking";
+    homepage = "http://www.netperf.org/netperf/";
+    license = "Hewlett-Packard BSD-like license";
+
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.mmlb ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/newsreaders/liferea/default.nix b/nixpkgs/pkgs/applications/networking/newsreaders/liferea/default.nix
new file mode 100644
index 000000000000..2632acd73d35
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/newsreaders/liferea/default.nix
@@ -0,0 +1,86 @@
+{ stdenv
+, fetchurl
+, pkg-config
+, intltool
+, python3Packages
+, wrapGAppsHook
+, glib
+, libxml2
+, libxslt
+, sqlite
+, libsoup
+, webkitgtk
+, json-glib
+, gst_all_1
+, libnotify
+, gtk3
+, gsettings-desktop-schemas
+, libpeas
+, libsecret
+, gobject-introspection
+, glib-networking
+}:
+
+stdenv.mkDerivation rec {
+  pname = "liferea";
+  version = "1.12.6";
+
+  src = fetchurl {
+    url = "https://github.com/lwindolf/${pname}/releases/download/v${version}/${pname}-${version}b.tar.bz2";
+    sha256 = "03pr1gmiv5y0i92bkhcxr8s311ll91chz19wb96jkixx32xav91d";
+  };
+
+  nativeBuildInputs = [
+    wrapGAppsHook
+    python3Packages.wrapPython
+    intltool
+    pkg-config
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    webkitgtk
+    libxml2
+    libxslt
+    sqlite
+    libsoup
+    libpeas
+    gsettings-desktop-schemas
+    json-glib
+    gobject-introspection
+    libsecret
+    glib-networking
+    libnotify
+  ] ++ (with gst_all_1; [
+    gstreamer
+    gst-plugins-base
+    gst-plugins-good
+    gst-plugins-bad
+  ]);
+
+  pythonPath = with python3Packages; [
+    pygobject3
+    pycairo
+  ];
+
+  preFixup = ''
+    buildPythonPath "$out $pythonPath"
+    gappsWrapperArgs+=(--prefix PYTHONPATH : "$program_PYTHONPATH")
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A GTK-based news feed aggregator";
+    homepage = "http://lzone.de/liferea/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ vcunat romildo ];
+    platforms = platforms.linux;
+
+    longDescription = ''
+      Liferea (Linux Feed Reader) is an RSS/RDF feed reader.
+      It's intended to be a clone of the Windows-only FeedReader.
+      It can be used to maintain a list of subscribed feeds,
+      browse through their items, and show their contents.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/newsreaders/pan/default.nix b/nixpkgs/pkgs/applications/networking/newsreaders/pan/default.nix
new file mode 100644
index 000000000000..6dc0630d2db2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/newsreaders/pan/default.nix
@@ -0,0 +1,47 @@
+{ spellChecking ? true
+, stdenv, fetchurl, pkgconfig, gtk3, gtkspell3 ? null
+, gmime2, gettext, intltool, itstool, libxml2, libnotify, gnutls
+, makeWrapper, gnupg
+, gnomeSupport ? true, libsecret, gcr
+}:
+
+assert spellChecking -> gtkspell3 != null;
+
+let version = "0.146"; in
+
+stdenv.mkDerivation {
+  pname = "pan";
+  inherit version;
+
+  src = fetchurl {
+    url = "http://pan.rebelbase.com/download/releases/${version}/source/pan-${version}.tar.bz2";
+    sha256 = "17agd27sn4a7nahvkpg0w39kv74njgdrrygs74bbvpaj8rk2hb55";
+  };
+
+  nativeBuildInputs = [ pkgconfig gettext intltool itstool libxml2 makeWrapper ];
+  buildInputs = [ gtk3 gmime2 libnotify gnutls ]
+    ++ stdenv.lib.optional spellChecking gtkspell3
+    ++ stdenv.lib.optionals gnomeSupport [ libsecret gcr ];
+
+  configureFlags = [
+    "--with-dbus"
+    "--with-gtk3"
+    "--with-gnutls"
+    "--enable-libnotify"
+  ] ++ stdenv.lib.optional spellChecking "--with-gtkspell"
+    ++ stdenv.lib.optional gnomeSupport "--enable-gkr";
+
+  postInstall = ''
+    wrapProgram $out/bin/pan --suffix PATH : ${gnupg}/bin
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "A GTK-based Usenet newsreader good at both text and binaries";
+    homepage = "http://pan.rebelbase.com/";
+    maintainers = [ maintainers.eelco ];
+    platforms = platforms.linux;
+    license = with licenses; [ gpl2 fdl11 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/newsreaders/quiterss/default.nix b/nixpkgs/pkgs/applications/networking/newsreaders/quiterss/default.nix
new file mode 100644
index 000000000000..1cc4be8cb27a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/newsreaders/quiterss/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, qmake, pkg-config, wrapQtAppsHook
+, qtbase, qttools, qtwebkit, sqlite
+}:
+
+stdenv.mkDerivation rec {
+  pname = "quiterss";
+  version = "0.19.4";
+
+  src = fetchFromGitHub {
+    owner = "QuiteRSS";
+    repo = "quiterss";
+    rev = version;
+    sha256 = "1cgvl67vhn5y7bj5gbjbgk26bhb0196bgrgsp3r5fmrislarj8s6";
+  };
+
+  nativeBuildInputs = [ qmake pkg-config wrapQtAppsHook ];
+  buildInputs = [ qtbase qttools qtwebkit sqlite.dev ];
+
+  meta = with stdenv.lib; {
+    description = "A Qt-based RSS/Atom news feed reader";
+    longDescription = ''
+      QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader
+      written on Qt/C++
+    '';
+    homepage = "https://quiterss.org";
+    changelog = "https://github.com/QuiteRSS/quiterss/blob/${version}/CHANGELOG";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/newsreaders/slrn/default.nix b/nixpkgs/pkgs/applications/networking/newsreaders/slrn/default.nix
new file mode 100644
index 000000000000..1cc9c39c991d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/newsreaders/slrn/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl
+, slang, ncurses, openssl }:
+
+stdenv.mkDerivation rec {
+  pname = "slrn";
+  version = "1.0.3a";
+
+  src = fetchurl {
+    url = "http://www.jedsoft.org/releases/slrn/slrn-${version}.tar.bz2";
+    sha256 = "1b1d9iikr60w0vq86y9a0l4gjl0jxhdznlrdp3r405i097as9a1v";
+  };
+
+  preConfigure = ''
+    sed -i -e "s|-ltermcap|-lncurses|" configure
+    sed -i autoconf/Makefile.in src/Makefile.in \
+      -e "s|/bin/cp|cp|"  \
+      -e "s|/bin/rm|rm|"
+  '';
+
+  configureFlags = [
+    "--with-slang=${slang.dev}"
+    "--with-ssl=${openssl.dev}"
+  ];
+
+  buildInputs = [ slang ncurses openssl ];
+
+  meta = with stdenv.lib; {
+    description = "The slrn (S-Lang read news) newsreader";
+    homepage = "http://slrn.sourceforge.net/index.html";
+    maintainers = with maintainers; [ ehmry ];
+    license = licenses.gpl2;
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/nextcloud-client/0001-Explicitly-copy-dbus-files-into-the-store-dir.patch b/nixpkgs/pkgs/applications/networking/nextcloud-client/0001-Explicitly-copy-dbus-files-into-the-store-dir.patch
new file mode 100644
index 000000000000..ab7cb9bffa45
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/nextcloud-client/0001-Explicitly-copy-dbus-files-into-the-store-dir.patch
@@ -0,0 +1,25 @@
+From bbd366348d1f0e334d4604d04e293a046070e666 Mon Sep 17 00:00:00 2001
+From: Maximilian Bosch <maximilian@mbosch.me>
+Date: Fri, 23 Aug 2019 00:19:20 +0200
+Subject: [PATCH] Explicitly copy dbus files into the store dir
+
+---
+ shell_integration/libcloudproviders/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/shell_integration/libcloudproviders/CMakeLists.txt b/shell_integration/libcloudproviders/CMakeLists.txt
+index 1f35335..7f76951 100644
+--- a/shell_integration/libcloudproviders/CMakeLists.txt
++++ b/shell_integration/libcloudproviders/CMakeLists.txt
+@@ -19,7 +19,7 @@ MACRO(PKGCONFIG_GETVAR _package _var _output_variable)
+ ENDMACRO(PKGCONFIG_GETVAR _package _var _output_variable)
+ 
+ macro(dbus_add_activation_service _sources)
+-    PKGCONFIG_GETVAR(dbus-1 session_bus_services_dir _install_dir)
++    set(_install_dir "${CMAKE_INSTALL_DATADIR}/dbus-1/service")
+     foreach (_i ${_sources})
+         get_filename_component(_service_file ${_i} ABSOLUTE)
+         string(REGEX REPLACE "\\.service.*$" ".service" _output_file ${_i})
+-- 
+2.19.2
+
diff --git a/nixpkgs/pkgs/applications/networking/nextcloud-client/default.nix b/nixpkgs/pkgs/applications/networking/nextcloud-client/default.nix
new file mode 100644
index 000000000000..2560bc806eac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/nextcloud-client/default.nix
@@ -0,0 +1,66 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, inotify-tools
+, libcloudproviders
+, libsecret
+, openssl
+, pcre
+, pkgconfig
+, qtbase
+, qtkeychain
+, qttools
+, qtwebengine
+, sqlite
+}:
+
+mkDerivation rec {
+  pname = "nextcloud-client";
+  version = "2.6.4";
+
+  src = fetchFromGitHub {
+    owner = "nextcloud";
+    repo = "desktop";
+    rev = "v${version}";
+    sha256 = "1wr57qwcjfzbpb4p0ybfjpw2hhwp91yrk2n3ywrqywcvjj38jg1q";
+  };
+
+  patches = [
+    ./0001-Explicitly-copy-dbus-files-into-the-store-dir.patch
+  ];
+
+  nativeBuildInputs = [
+    pkgconfig
+    cmake
+  ];
+
+  buildInputs = [
+    inotify-tools
+    libcloudproviders
+    openssl
+    pcre
+    qtbase
+    qtkeychain
+    qttools
+    qtwebengine
+    sqlite
+  ];
+
+  qtWrapperArgs = [
+    "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libsecret ]}"
+  ];
+
+  cmakeFlags = [
+    "-DCMAKE_INSTALL_LIBDIR=lib" # expected to be prefix-relative by build code setting RPATH
+    "-DNO_SHIBBOLETH=1" # allows to compile without qtwebkit
+  ];
+
+  meta = with lib; {
+    description = "Nextcloud themed desktop client";
+    homepage = "https://nextcloud.com";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ caugner ma27 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/nload/default.nix b/nixpkgs/pkgs/applications/networking/nload/default.nix
new file mode 100644
index 000000000000..85a39f7e656a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/nload/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, fetchpatch, ncurses }:
+
+stdenv.mkDerivation rec {
+  version = "0.7.4";
+  pname = "nload";
+
+  src = fetchurl {
+    url = "http://www.roland-riegel.de/nload/${pname}-${version}.tar.gz";
+    sha256 = "1rb9skch2kgqzigf19x8bzk211jdfjfdkrcvaqyj89jy2pkm3h61";
+  };
+
+  patches = [
+    # Fixes an ugly bug of graphs scrolling to the side, corrupting the view.
+    # There is an upstream fix, but not a new upstream release that includes it.
+    # Other distributions like Gentoo also patch this as a result; see:
+    #   https://github.com/rolandriegel/nload/issues/3#issuecomment-427579143
+    # TODO Remove when https://github.com/rolandriegel/nload/issues/3 is merged and available
+    (fetchpatch {
+      url = "https://github.com/rolandriegel/nload/commit/8a93886e0fb33a81b8fe32e88ee106a581fedd34.patch";
+      name = "nload-0.7.4-Eliminate-flicker-on-some-terminals.patch";
+      sha256 = "10yppy5l50wzpcvagsqkbyf1rcan6aj30am4rw8hmkgnbidf4zbq";
+    })
+  ];
+
+  buildInputs = [ ncurses ];
+
+  meta = {
+    description = "Monitors network traffic and bandwidth usage with ncurses graphs";
+    longDescription = ''
+      nload is a console application which monitors network traffic and
+      bandwidth usage in real time. It visualizes the in- and outgoing traffic
+      using two graphs and provides additional info like total amount of
+      transfered data and min/max network usage.
+    '';
+    homepage = "http://www.roland-riegel.de/nload/index.html";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.devhell ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/nntp-proxy/default.nix b/nixpkgs/pkgs/applications/networking/nntp-proxy/default.nix
new file mode 100644
index 000000000000..3986f2b67cb2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/nntp-proxy/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, libconfig, pkgconfig, libevent, openssl }:
+
+stdenv.mkDerivation {
+  pname = "nntp-proxy";
+  version = "2014-01-06";
+
+  src = fetchFromGitHub {
+    owner = "nieluj";
+    repo = "nntp-proxy";
+    rev = "0358e7ad6c4676f90ac5074320b16e1461b0011a";
+    sha256 = "0jwxh71am83fbnq9mn06jl06rq8qybm506js79xmmc3xbk5pqvy4";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libconfig libevent openssl ];
+
+  installFlags = [ "INSTALL_DIR=$(out)/bin/" ];
+
+  prePatch = ''
+    mkdir -p $out/bin
+    substituteInPlace Makefile \
+      --replace /usr/bin/install $(type -P install) \
+      --replace gcc cc
+  '';
+
+  meta = {
+    description = "Simple NNTP proxy with SSL support";
+    homepage = "https://github.com/nieluj/nntp-proxy";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [ stdenv.lib.maintainers.fadenb ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/nym/default.nix b/nixpkgs/pkgs/applications/networking/nym/default.nix
new file mode 100644
index 000000000000..4dfe1dc54929
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/nym/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, pkgconfig
+, openssl
+, libredirect
+, writeText
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "nym";
+  version = "0.7.0";
+
+  src = fetchFromGitHub {
+    owner = "nymtech";
+    repo = "nym";
+    rev = "v${version}";
+    sha256 = "05bxrpqwwf9spydac0q8sly65q8f1nk13i5fy3p5adr1phzxdnr8";
+  };
+
+  cargoSha256 = "0mh8cwia86bm68b0wcrmnsq1af5cp6kj1j81nwxb03awnqpxc34n";
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ openssl ];
+
+  checkType = "debug";
+
+  /*
+  Nym's test presence::converting_mixnode_presence_into_topology_mixnode::it_returns_resolved_ip_on_resolvable_hostname tries to resolve nymtech.net.
+  Since there is no external DNS resolution available in the build sandbox, we point cargo and its children (that's what we remove the 'unsetenv' call for) to a hosts file in which we statically resolve nymtech.net.
+  */
+  preCheck = ''
+    export LD_PRELOAD=${libredirect.overrideAttrs (drv: {
+      postPatch = "sed -i -e /unsetenv/d libredirect.c";
+    })}/lib/libredirect.so
+    export NIX_REDIRECTS=/etc/hosts=${writeText "nym_resolve_test_hosts" "127.0.0.1 nymtech.net"}
+  '';
+
+  postCheck = "unset NIX_REDIRECTS LD_PRELOAD";
+
+
+  passthru.updateScript = ./update.sh;
+
+  meta = with lib; {
+    description = "A mixnet providing IP-level privacy";
+    longDescription = ''
+      Nym routes IP packets through other participating nodes to hide their source and destination.
+      In contrast with Tor, it prevents timing attacks at the cost of latency.
+    '';
+    homepage = "https://nymtech.net";
+    license = licenses.asl20;
+    maintainers = [ maintainers.ehmry ];
+    platforms = with platforms; intersectLists (linux ++ darwin) (concatLists [ x86 x86_64 aarch64 arm ]);
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/nym/update.sh b/nixpkgs/pkgs/applications/networking/nym/update.sh
new file mode 100755
index 000000000000..0c65521c7f80
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/nym/update.sh
@@ -0,0 +1,37 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl jq nix-prefetch
+
+# adapted from rust-analyzer
+
+set -euo pipefail
+cd "$(dirname "$0")"
+nixpkgs=../../../..
+
+owner=$(sed -nE 's/.*\bowner = "(.*)".*/\1/p' ./default.nix)
+repo=$(sed -nE 's/.*\brepo = "(.*)".*/\1/p' ./default.nix)
+rev=$(
+    curl -s "https://api.github.com/repos/$owner/$repo/releases" |
+    jq 'map(select(.prerelease | not)) | .[0].tag_name' --raw-output
+)
+version=${rev:1}
+old_version=$(sed -nE 's/.*\bversion = "(.*)".*/\1/p' ./default.nix)
+if grep -q 'cargoSha256 = ""' ./default.nix; then
+    old_version='broken'
+fi
+if [[ "$version" == "$old_version" ]]; then
+    echo "Up to date: $version"
+    exit
+fi
+echo "$old_version -> $version"
+
+sha256=$(nix-prefetch -f "$nixpkgs" nym.src --rev "$rev")
+# Clear cargoSha256 to avoid inconsistency.
+sed -e "s/version = \".*\"/version = \"$version\"/" \
+    -e "s/sha256 = \".*\"/sha256 = \"$sha256\"/" \
+    -e "s/cargoSha256 = \".*\"/cargoSha256 = \"\"/" \
+    --in-place ./default.nix
+
+echo "Prebuilding for cargoSha256"
+cargo_sha256=$(nix-prefetch "{ sha256 }: (import $nixpkgs {}).nym.cargoDeps.overrideAttrs (_: { outputHash = sha256; })")
+sed "s/cargoSha256 = \".*\"/cargoSha256 = \"$cargo_sha256\"/" \
+    --in-place ./default.nix
diff --git a/nixpkgs/pkgs/applications/networking/offrss/default.nix b/nixpkgs/pkgs/applications/networking/offrss/default.nix
new file mode 100644
index 000000000000..679e966373b6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/offrss/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, curl, libmrss, podofo, libiconv }:
+
+stdenv.mkDerivation {
+  name = "offrss-1.3";
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp offrss $out/bin
+  '';
+
+  buildInputs = [ curl libmrss ]
+    ++ stdenv.lib.optional (stdenv.hostPlatform == stdenv.buildPlatform) podofo
+    ++ stdenv.lib.optional (!stdenv.isLinux) libiconv;
+
+  configurePhase = ''
+    substituteInPlace Makefile \
+      --replace '$(CC) $(CFLAGS) $(LDFLAGS)' '$(CXX) $(CFLAGS) $(LDFLAGS)'
+  '' + stdenv.lib.optionalString (!stdenv.isLinux) ''
+    sed 's/#EXTRA/EXTRA/' -i Makefile
+  '' + stdenv.lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
+    sed 's/^PDF/#PDF/' -i Makefile
+  '';
+
+  src = fetchurl {
+    url = "http://vicerveza.homeunix.net/~viric/soft/offrss/offrss-1.3.tar.gz";
+    sha256 = "1akw1x84jj2m9z60cvlvmz21qwlaywmw18pl7lgp3bj5nw6250p6";
+  };
+
+  meta = {
+    homepage = "http://vicerveza.homeunix.net/~viric/cgi-bin/offrss";
+    description = "Offline RSS/Atom reader";
+    license="AGPLv3+";
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/omping/default.nix b/nixpkgs/pkgs/applications/networking/omping/default.nix
new file mode 100644
index 000000000000..dc52d767438b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/omping/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, fetchpatch }:
+
+stdenv.mkDerivation rec {
+  pname = "omping";
+  version = "0.0.5";
+
+  src = fetchFromGitHub {
+    owner  = "troglobit";
+    repo   = "omping";
+    rev    = version;
+    sha256 = "1f0vsbnhxp7bbgdnfqshryx3nhz2sqdnxdj068s0nmzsh53ckbf7";
+  };
+
+  patches = [
+    # This can go in 0.0.6+
+    (fetchpatch {
+      url    = "https://github.com/troglobit/omping/commit/08a31ec1a6eb4e8f88c301ef679c3b6f9893f333.patch";
+      sha256 = "1xafyvd46bq53w2zvjw8bdw7vjqbrcrr21cyh6d0zfcn4gif1k0f";
+      name   = "fix_manpage_install.patch";
+    })
+  ];
+
+  makeFlags = [
+    "PREFIX=${placeholder "out"}"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Open Multicast Ping (omping) is a tool for testing IPv4/IPv6 multicast connectivity on a LAN.";
+    license = licenses.mit;
+    platforms = platforms.unix;
+    inherit (src.meta) homepage;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/onionshare/default.nix b/nixpkgs/pkgs/applications/networking/onionshare/default.nix
new file mode 100644
index 000000000000..77d08692f625
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/onionshare/default.nix
@@ -0,0 +1,113 @@
+{
+  lib,
+  buildPythonApplication,
+  stdenv,
+  substituteAll,
+  fetchFromGitHub,
+  isPy3k,
+  flask,
+  flask-httpauth,
+  stem,
+  pyqt5,
+  pycrypto,
+  pysocks,
+  pytest,
+  qt5,
+  requests,
+  tor,
+  obfs4,
+}:
+
+let
+  version = "2.2";
+  src = fetchFromGitHub {
+    owner = "micahflee";
+    repo = "onionshare";
+    rev = "v${version}";
+    sha256 = "0m8ygxcyp3nfzzhxs2dfnpqwh1vx0aws44lszpnnczz4fks3a5j4";
+  };
+  meta = with lib; {
+    description = "Securely and anonymously send and receive files";
+    longDescription = ''
+    OnionShare is an open source tool for securely and anonymously sending
+    and receiving files using Tor onion services. It works by starting a web
+    server directly on your computer and making it accessible as an
+    unguessable Tor web address that others can load in Tor Browser to
+    download files from you, or upload files to you. It doesn't require
+    setting up a separate server, using a third party file-sharing service,
+    or even logging into an account.
+
+    Unlike services like email, Google Drive, DropBox, WeTransfer, or nearly
+    any other way people typically send files to each other, when you use
+    OnionShare you don't give any companies access to the files that you're
+    sharing. So long as you share the unguessable web address in a secure way
+    (like pasting it in an encrypted messaging app), no one but you and the
+    person you're sharing with can access the files.
+    '';
+
+    homepage = "https://onionshare.org/";
+
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ lourkeur ];
+  };
+
+  common = buildPythonApplication {
+    pname = "onionshare-common";
+    inherit version meta src;
+
+    disable = !isPy3k;
+    propagatedBuildInputs = [
+      flask
+      flask-httpauth
+      stem
+      pyqt5
+      pycrypto
+      pysocks
+      requests
+    ];
+    buildInputs = [
+      tor
+      obfs4
+    ];
+
+    patches = [
+      (substituteAll {
+        src = ./fix-paths.patch;
+        inherit tor obfs4;
+        inherit (tor) geoip;
+      })
+    ];
+    postPatch = "substituteInPlace onionshare/common.py --subst-var-by common $out";
+
+    doCheck = false;
+  };
+in
+{
+  onionshare = stdenv.mkDerivation {
+    pname = "onionshare";
+    inherit version meta;
+
+    dontUnpack = true;
+
+    inherit common;
+    installPhase = ''
+      mkdir -p $out/bin
+      cp $common/bin/onionshare -t $out/bin
+    '';
+  };
+  onionshare-gui = stdenv.mkDerivation {
+    pname = "onionshare-gui";
+    inherit version meta;
+
+    nativeBuildInputs = [ qt5.wrapQtAppsHook ];
+
+    dontUnpack = true;
+
+    inherit common;
+    installPhase = ''
+      mkdir -p $out/bin
+      cp $common/bin/onionshare-gui -t $out/bin
+      wrapQtApp $out/bin/onionshare-gui
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/onionshare/fix-paths.patch b/nixpkgs/pkgs/applications/networking/onionshare/fix-paths.patch
new file mode 100644
index 000000000000..ddd0c75334bb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/onionshare/fix-paths.patch
@@ -0,0 +1,134 @@
+diff --git a/onionshare/common.py b/onionshare/common.py
+index 3373462..7fd245b 100644
+--- a/onionshare/common.py
++++ b/onionshare/common.py
+@@ -87,66 +87,16 @@ class Common(object):
+                 ),
+                 "share",
+             )
+-            if not os.path.exists(prefix):
+-                # While running tests during stdeb bdist_deb, look 3 directories up for the share folder
+-                prefix = os.path.join(
+-                    os.path.dirname(
+-                        os.path.dirname(os.path.dirname(os.path.dirname(prefix)))
+-                    ),
+-                    "share",
+-                )
+-
+-        elif self.platform == "BSD" or self.platform == "Linux":
+-            # Assume OnionShare is installed systemwide in Linux, since we're not running in dev mode
+-            prefix = os.path.join(sys.prefix, "share/onionshare")
+-
+-        elif getattr(sys, "frozen", False):
+-            # Check if app is "frozen"
+-            # https://pythonhosted.org/PyInstaller/#run-time-information
+-            if self.platform == "Darwin":
+-                prefix = os.path.join(sys._MEIPASS, "share")
+-            elif self.platform == "Windows":
+-                prefix = os.path.join(os.path.dirname(sys.executable), "share")
++        else:
++            prefix = "@common@/share/onionshare"
+
+         return os.path.join(prefix, filename)
+
+     def get_tor_paths(self):
+-        if self.platform == "Linux":
+-            tor_path = "/usr/bin/tor"
+-            tor_geo_ip_file_path = "/usr/share/tor/geoip"
+-            tor_geo_ipv6_file_path = "/usr/share/tor/geoip6"
+-            obfs4proxy_file_path = "/usr/bin/obfs4proxy"
+-        elif self.platform == "Windows":
+-            base_path = os.path.join(
+-                os.path.dirname(os.path.dirname(self.get_resource_path(""))), "tor"
+-            )
+-            tor_path = os.path.join(os.path.join(base_path, "Tor"), "tor.exe")
+-            obfs4proxy_file_path = os.path.join(
+-                os.path.join(base_path, "Tor"), "obfs4proxy.exe"
+-            )
+-            tor_geo_ip_file_path = os.path.join(
+-                os.path.join(os.path.join(base_path, "Data"), "Tor"), "geoip"
+-            )
+-            tor_geo_ipv6_file_path = os.path.join(
+-                os.path.join(os.path.join(base_path, "Data"), "Tor"), "geoip6"
+-            )
+-        elif self.platform == "Darwin":
+-            base_path = os.path.dirname(
+-                os.path.dirname(os.path.dirname(self.get_resource_path("")))
+-            )
+-            tor_path = os.path.join(base_path, "Resources", "Tor", "tor")
+-            tor_geo_ip_file_path = os.path.join(base_path, "Resources", "Tor", "geoip")
+-            tor_geo_ipv6_file_path = os.path.join(
+-                base_path, "Resources", "Tor", "geoip6"
+-            )
+-            obfs4proxy_file_path = os.path.join(
+-                base_path, "Resources", "Tor", "obfs4proxy"
+-            )
+-        elif self.platform == "BSD":
+-            tor_path = "/usr/local/bin/tor"
+-            tor_geo_ip_file_path = "/usr/local/share/tor/geoip"
+-            tor_geo_ipv6_file_path = "/usr/local/share/tor/geoip6"
+-            obfs4proxy_file_path = "/usr/local/bin/obfs4proxy"
++        tor_path = "@tor@/bin/tor"
++        tor_geo_ip_file_path = "@geoip@/share/tor/geoip"
++        tor_geo_ipv6_file_path = "@geoip@/share/tor/geoip6"
++        obfs4proxy_file_path = "@obfs4@/bin/obfs4proxy"
+
+         return (
+             tor_path,
+diff --git a/setup.py b/setup.py
+index 9af72fc..53ca47b 100644
+--- a/setup.py
++++ b/setup.py
+@@ -70,41 +70,41 @@ classifiers = [
+ ]
+ data_files = [
+     (
+-        os.path.join(sys.prefix, "share/applications"),
++        "share/applications",
+         ["install/org.onionshare.OnionShare.desktop"],
+     ),
+     (
+-        os.path.join(sys.prefix, "share/icons/hicolor/scalable/apps"),
++        "share/icons/hicolor/scalable/apps",
+         ["install/org.onionshare.OnionShare.svg"],
+     ),
+     (
+-        os.path.join(sys.prefix, "share/metainfo"),
++        "share/metainfo",
+         ["install/org.onionshare.OnionShare.appdata.xml"],
+     ),
+-    (os.path.join(sys.prefix, "share/onionshare"), file_list("share")),
+-    (os.path.join(sys.prefix, "share/onionshare/images"), file_list("share/images")),
+-    (os.path.join(sys.prefix, "share/onionshare/locale"), file_list("share/locale")),
++    ( "share/onionshare", file_list("share")),
++    ( "share/onionshare/images", file_list("share/images")),
++    ( "share/onionshare/locale", file_list("share/locale")),
+     (
+-        os.path.join(sys.prefix, "share/onionshare/templates"),
++        "share/onionshare/templates",
+         file_list("share/templates"),
+     ),
+     (
+-        os.path.join(sys.prefix, "share/onionshare/static/css"),
++        "share/onionshare/static/css",
+         file_list("share/static/css"),
+     ),
+     (
+-        os.path.join(sys.prefix, "share/onionshare/static/img"),
++        "share/onionshare/static/img",
+         file_list("share/static/img"),
+     ),
+     (
+-        os.path.join(sys.prefix, "share/onionshare/static/js"),
++        "share/onionshare/static/js",
+         file_list("share/static/js"),
+     ),
+ ]
+ if not platform.system().endswith("BSD") and platform.system() != "DragonFly":
+     data_files.append(
+         (
+-            "/usr/share/nautilus-python/extensions/",
++            "share/nautilus-python/extensions/",
+             ["install/scripts/onionshare-nautilus.py"],
+         )
+     )
diff --git a/nixpkgs/pkgs/applications/networking/openbazaar/client.nix b/nixpkgs/pkgs/applications/networking/openbazaar/client.nix
new file mode 100644
index 000000000000..8ee265743de5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/openbazaar/client.nix
@@ -0,0 +1,57 @@
+{ stdenv
+, fetchurl
+, gcc-unwrapped
+, dpkg
+, bash
+, nodePackages
+, makeWrapper
+, electron_6
+}:
+
+stdenv.mkDerivation rec {
+  pname = "openbazaar-client";
+  version = "2.4.5";
+
+  src = fetchurl {
+    url = "https://github.com/OpenBazaar/openbazaar-desktop/releases/download/v${version}/openbazaar2client_${version}_amd64.deb";
+    sha256 = "0kahqqchalbyzy51gkxzmw91qignh8sprg57nbj1vmgm84w1z6kw";
+  };
+
+  dontBuild = true;
+  dontConfigure = true;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  unpackPhase = ''
+    ${dpkg}/bin/dpkg-deb -x $src .
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin $out/share/{${pname},applications,pixmaps}
+
+    cp -a usr/lib/openbazaar2client/{locales,resources} $out/share/${pname}
+    cp -a usr/share/applications/openbazaar2client.desktop $out/share/applications/${pname}.desktop
+    cp -a usr/share/pixmaps/openbazaar2client.png $out/share/pixmaps/${pname}.png
+
+    substituteInPlace $out/share/applications/${pname}.desktop \
+      --replace 'openbazaar2client' 'openbazaar-client'
+
+    runHook postInstall
+  '';
+
+  postFixup = ''
+    makeWrapper ${electron_6}/bin/electron $out/bin/${pname} \
+      --add-flags $out/share/${pname}/resources/app \
+      --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ gcc-unwrapped.lib ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Decentralized Peer to Peer Marketplace for Bitcoin - client";
+    homepage = "https://www.openbazaar.org/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ prusnak ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/openbazaar/default.nix b/nixpkgs/pkgs/applications/networking/openbazaar/default.nix
new file mode 100644
index 000000000000..aa341b292245
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/openbazaar/default.nix
@@ -0,0 +1,48 @@
+{ stdenv
+, fetchurl
+}:
+
+stdenv.mkDerivation rec {
+  pname = "openbazaar";
+  version = "0.14.3";
+
+  suffix = {
+    i686-linux    = "linux-386";
+    x86_64-darwin = "darwin-10.6-amd64";
+    x86_64-linux  = "linux-amd64";
+  }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
+
+  src = fetchurl {
+    url = "https://github.com/OpenBazaar/openbazaar-go/releases/download/v${version}/${pname}-go-${suffix}";
+    sha256 = {
+      i686-linux    = "098dgxpz9m4rfswc9yg77s3bvaifd4453s20n8kmh55g5ipgs2x1";
+      x86_64-darwin = "0q989m4zj7x9d6vimmpfkla78hmx2zr7bxm9yg61ir00w60l14jx";
+      x86_64-linux  = "093rwn4nfirknbxz58n16v0l0apj2h0yr63f64fqysmy78883al2";
+    }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
+  };
+
+  dontUnpack = true;
+  dontConfigure = true;
+  dontBuild = true;
+  dontStrip = true;
+  dontPatchELF = true;
+  preferLocalBuild = true;
+
+  installPhase = ''
+    install -D $src $out/bin/openbazaard
+  '';
+
+  postFixup = stdenv.lib.optionalString (!stdenv.isDarwin) ''
+    patchelf \
+      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      $out/bin/openbazaard
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Decentralized Peer to Peer Marketplace for Bitcoin - daemon";
+    homepage = "https://www.openbazaar.org/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ prusnak ];
+    platforms = [ "i686-linux" "x86_64-darwin" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ostinato/default.nix b/nixpkgs/pkgs/applications/networking/ostinato/default.nix
new file mode 100644
index 000000000000..aa9d94ad5b6e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ostinato/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, fetchFromGitHub, fetchurl, qmake4Hook, makeDesktopItem
+, qt4, protobuf, libpcap, wireshark, gzip, diffutils, gawk
+}:
+
+stdenv.mkDerivation rec {
+  pname = "ostinato";
+  version = "0.9";
+
+  src = fetchFromGitHub  {
+    owner  = "pstavirs";
+    repo   = "ostinato";
+    rev    = "v${version}";
+    sha256 = "109gxj6djdsk7rp1nxpx39kfi75xfl9p9qgffh1cpcdpbsbvq5bx";
+  };
+
+  ostinatoIcon = fetchurl {
+    url = "https://ostinato.org/images/site-logo.png";
+    sha256 = "f5c067823f2934e4d358d76f65a343efd69ad783a7aeabd7ab4ce3cd03490d70";
+  };
+
+  buildInputs = [ qt4 protobuf libpcap ];
+
+  nativeBuildInputs = [ qmake4Hook ];
+
+  patches = [ ./drone_ini.patch ];
+
+  desktopItem = makeDesktopItem {
+    type          = "application";
+    name          = "ostinato";
+    desktopName   = "Ostinato";
+    genericName   = "Packet/Traffic Generator and Analyzer";
+    comment       = "Network packet and traffic generator and analyzer with a friendly GUI";
+    categories    = "Network";
+    terminal      = "false";
+    startupNotify = "true";
+    exec          = "$out/bin/ostinato";
+    icon          =  ostinatoIcon;
+    extraEntries  = ''
+      GenericName[it]=Generatore ed Analizzatore di pacchetti di rete
+      Comment[it]=Generatore ed Analizzatore di pacchetti di rete con interfaccia amichevole
+    '';
+  };
+
+  postInstall = ''
+    mkdir -p $out/share/applications
+    ln -s ${desktopItem}/share/applications/* $out/share/applications/
+
+    cat > $out/bin/ostinato.ini <<EOF
+    WiresharkPath=${wireshark}/bin/wireshark
+    TsharkPath=${wireshark}/bin/tshark
+    GzipPath=${gzip}/bin/gzip
+    DiffPath=${diffutils}/bin/diff
+    AwkPath=${gawk}/bin/awk
+    EOF
+  '';
+
+  # `cd common; qmake ostproto.pro; make pdmlreader.o`:
+  # pdmlprotocol.h:23:25: fatal error: protocol.pb.h: No such file or directory
+  enableParallelBuilding = false;
+
+  meta = with stdenv.lib; {
+    description = "A packet traffic generator and analyzer";
+    homepage    = "https://ostinato.org";
+    license     = licenses.gpl3;
+    maintainers = with maintainers; [ rick68 ];
+    platforms   = with platforms; linux ++ darwin ++ cygwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ostinato/drone_ini.patch b/nixpkgs/pkgs/applications/networking/ostinato/drone_ini.patch
new file mode 100644
index 000000000000..5818f4e94c30
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ostinato/drone_ini.patch
@@ -0,0 +1,14 @@
+diff -Nru ostinato-414d89860de0987843295d149bcabeac7c6fd9e5/server/drone_main.cpp ostinato-414d89860de0987843295d149bcabeac7c6fd9e5.new/server/drone_main.cpp
+--- ostinato-414d89860de0987843295d149bcabeac7c6fd9e5/server/drone_main.cpp	2015-12-24 16:46:35.000000000 +0800
++++ ostinato-414d89860de0987843295d149bcabeac7c6fd9e5.new/server/drone_main.cpp	2015-12-30 20:59:04.319199699 +0800
+@@ -62,8 +62,8 @@
+     /* (Portable Mode) If we have a .ini file in the same directory as the 
+        executable, we use that instead of the platform specific location
+        and format for the settings */
+-    QString portableIni = QCoreApplication::applicationDirPath() 
+-            + "/drone.ini";
++    QString portableIni = argc > 2 ? argv[2] :
++            QCoreApplication::applicationDirPath() + "/drone.ini";
+     if (QFile::exists(portableIni))
+         appSettings = new QSettings(portableIni, QSettings::IniFormat);
+     else
diff --git a/nixpkgs/pkgs/applications/networking/owamp/default.nix b/nixpkgs/pkgs/applications/networking/owamp/default.nix
new file mode 100644
index 000000000000..3608ef982a9b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/owamp/default.nix
@@ -0,0 +1,28 @@
+{stdenv, fetchFromGitHub
+, autoconf, automake, mandoc }:
+
+stdenv.mkDerivation rec {
+  pname = "owamp";
+  version = "3.5.6";
+  buildInputs = [ autoconf automake mandoc ];
+  src = fetchFromGitHub {
+    owner = "perfsonar";
+    repo = "owamp";
+    rev = version;
+    sha256="019rcshmrqk8pfp510j5jvazdcnz0igfkwv44mfxb5wirzj9p6s7";
+    fetchSubmodules = true;
+  };
+
+  preConfigure = ''
+    I2util/bootstrap.sh
+    ./bootstrap
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://software.internet2.edu/owamp/";
+    description = ''A tool for performing one-way active measurements'';
+    platforms = platforms.linux;
+    maintainers = [maintainers.teto];
+    license = licenses.asl20;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/owncloud-client/default.nix b/nixpkgs/pkgs/applications/networking/owncloud-client/default.nix
new file mode 100644
index 000000000000..3fc9fedc4138
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/owncloud-client/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, mkDerivation, cmake, pkgconfig, qtbase, qtkeychain, sqlite }:
+
+mkDerivation rec {
+  pname = "owncloud-client";
+  version = "2.5.4.11654";
+
+  src = fetchurl {
+    url = "https://download.owncloud.com/desktop/stable/owncloudclient-${version}.tar.xz";
+    sha256 = "0gsnry0786crbnpgg3f1vcqw6mwbz6svhm6mw3767qi4lb33jm31";
+  };
+
+  nativeBuildInputs = [ pkgconfig cmake ];
+  buildInputs = [ qtbase qtkeychain sqlite ];
+
+  cmakeFlags = [
+    "-UCMAKE_INSTALL_LIBDIR"
+    "-DNO_SHIBBOLETH=1"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Synchronise your ownCloud with your computer using this desktop client";
+    homepage = "https://owncloud.org";
+    maintainers = [ maintainers.qknight ];
+    platforms = platforms.unix;
+    license = licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/deluge/1/default.nix b/nixpkgs/pkgs/applications/networking/p2p/deluge/1/default.nix
new file mode 100644
index 000000000000..cafba65c788b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/deluge/1/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, fetchpatch, intltool, libtorrentRasterbar, pythonPackages }:
+
+pythonPackages.buildPythonPackage rec {
+  pname = "deluge";
+  version = "1.3.15";
+
+  src = fetchurl {
+    url = "http://download.deluge-torrent.org/source/${pname}-${version}.tar.bz2";
+    sha256 = "1467b9hmgw59gf398mhbf40ggaka948yz3afh6022v753c9j7y6w";
+  };
+
+  patches = [
+    # Fix preferences when built against libtorrent >=0.16
+    (fetchpatch {
+      url = "https://git.deluge-torrent.org/deluge/patch/?id=38d7b7cdfde3c50d6263602ffb03af92fcbfa52e";
+      sha256 = "0la3i0lkj6yv4725h4kbd07mhfwcb34w7prjl9gxg12q7px6c31d";
+    })
+  ];
+
+  propagatedBuildInputs = with pythonPackages; [
+    pyGtkGlade twisted Mako chardet pyxdg pyopenssl service-identity
+    libtorrentRasterbar.dev libtorrentRasterbar.python setuptools
+  ];
+
+  nativeBuildInputs = [ intltool ];
+
+  postInstall = ''
+     mkdir -p $out/share/applications
+     cp -R deluge/data/pixmaps $out/share/
+     cp -R deluge/data/icons $out/share/
+     cp deluge/data/share/applications/deluge.desktop $out/share/applications
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://deluge-torrent.org";
+    description = "Torrent client";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ domenkozar ebzzry ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/deluge/2/default.nix b/nixpkgs/pkgs/applications/networking/p2p/deluge/2/default.nix
new file mode 100644
index 000000000000..2e9f08ce98a8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/deluge/2/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchurl, intltool, libtorrentRasterbar, pythonPackages
+, gtk3, glib, gobject-introspection, librsvg, wrapGAppsHook }:
+
+pythonPackages.buildPythonPackage rec {
+  pname = "deluge";
+  version = "2.0.3";
+
+  src = fetchurl {
+    url = "http://download.deluge-torrent.org/source/2.0/${pname}-${version}.tar.xz";
+    sha256 = "14d8kn2pvr1qv8mwqrxmj85jycr73vwfqz12hzag0ararbkfhyky";
+  };
+
+  propagatedBuildInputs = with pythonPackages; [
+    twisted Mako chardet pyxdg pyopenssl service-identity
+    libtorrentRasterbar.dev libtorrentRasterbar.python setuptools
+    setproctitle pillow rencode six zope_interface
+    dbus-python pygobject3 pycairo
+    gtk3 gobject-introspection librsvg
+  ];
+
+  nativeBuildInputs = [ intltool wrapGAppsHook glib ];
+
+  checkInputs = with pythonPackages; [
+    pytest /* pytest-twisted */ pytestcov mock
+    mccabe pylint
+  ];
+
+  doCheck = false; # until pytest-twisted is packaged
+
+  postInstall = ''
+     mkdir -p $out/share/applications
+     cp -R deluge/ui/data/pixmaps $out/share/
+     cp -R deluge/ui/data/icons $out/share/
+     cp deluge/ui/data/share/applications/deluge.desktop $out/share/applications
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://deluge-torrent.org";
+    description = "Torrent client";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ domenkozar ebzzry ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/eiskaltdcpp/default.nix b/nixpkgs/pkgs/applications/networking/p2p/eiskaltdcpp/default.nix
new file mode 100644
index 000000000000..9355bfa5b8d9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/eiskaltdcpp/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, qt4, boost, bzip2, libX11
+, fetchpatch, libiconv, pcre-cpp, libidn, lua5, miniupnpc, aspell, gettext }:
+
+stdenv.mkDerivation rec {
+  pname = "eiskaltdcpp";
+  version = "2.2.10";
+
+  src = fetchFromGitHub {
+    owner = "eiskaltdcpp";
+    repo = "eiskaltdcpp";
+    rev = "v${version}";
+    sha256 = "1mqz0g69njmlghcra3izarjxbxi1jrhiwn4ww94b8jv8xb9cv682";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [ qt4 boost bzip2 libX11 pcre-cpp libidn lua5 miniupnpc aspell gettext ]
+    ++ stdenv.lib.optional stdenv.isDarwin libiconv;
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/eiskaltdcpp/eiskaltdcpp/commit/3b7b56bd7060b426b1f1bfded392ae6853644e2e.patch";
+      sha256 = "1rqjdsvirn3ks9w9qn893fb73mz84xm04wl13fvsvj8p42i5cjas";
+    })
+    (fetchpatch {
+      url = "https://github.com/eiskaltdcpp/eiskaltdcpp/commit/bb9eb364a943fe2a67b3ea52ec6a3f9e911f07dc.patch";
+      sha256 = "1hjhf9a9j4z8v24g5qh5mcg3n0540lbn85y7kvxsh3khc5v3cywx";
+    })
+    (fetchpatch {
+      url = "https://github.com/eiskaltdcpp/eiskaltdcpp/commit/ef4426f1f9a8255e335b0862234e6cc28befef5e.patch";
+      sha256 = "13j018c499n4b5as2n39ws64yj0cf4fskxbqab309vmnjkirxv6x";
+    })
+    (fetchpatch {
+      url = "https://github.com/eiskaltdcpp/eiskaltdcpp/commit/a9c136c8707280d0eeb66be6b289d9718287c55c.patch";
+      sha256 = "0w8v4mbrzk7pmzc475ff96mzzwlh8a0p62kk7p829m5yqdwj4sc9";
+    })
+    (fetchpatch {
+      url = "https://github.com/eiskaltdcpp/eiskaltdcpp/commit/3b9c502ff5c98856d4f8fdb7ed3c6ef34448bfb7.patch";
+      sha256 = "0fjwaq0wd9a164k5ysdjy89hx0ixnxc6q7cvyn1ba28snm0pgxb8";
+    })
+  ];
+
+  cmakeFlags = [
+    "-DUSE_ASPELL=ON"
+    "-DUSE_QT_QML=ON"
+    "-DFREE_SPACE_BAR_C=ON"
+    "-DUSE_MINIUPNP=ON"
+    "-DLOCAL_MINIUPNP=ON"
+    "-DDBUS_NOTIFY=ON"
+    "-DUSE_JS=ON"
+    "-DPERL_REGEX=ON"
+    "-DUSE_CLI_XMLRPC=ON"
+    "-DWITH_SOUNDS=ON"
+    "-DLUA_SCRIPT=ON"
+    "-DWITH_LUASCRIPTS=ON"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "A cross-platform program that uses the Direct Connect and ADC protocols";
+    homepage = "https://github.com/eiskaltdcpp/eiskaltdcpp";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/freenet/default.nix b/nixpkgs/pkgs/applications/networking/p2p/freenet/default.nix
new file mode 100644
index 000000000000..017f059ff6c3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/freenet/default.nix
@@ -0,0 +1,80 @@
+{ stdenv, fetchurl, fetchFromGitHub, ant, jdk, bash, coreutils, substituteAll }:
+
+let
+  freenet_ext = fetchurl {
+    url = "https://downloads.freenetproject.org/latest/freenet-ext.jar";
+    sha256 = "17ypljdvazgx2z6hhswny1lxfrknysz3x6igx8vl3xgdpvbb7wij";
+  };
+
+  bcprov_version = "jdk15on-154";
+  bcprov = fetchurl {
+    url = "https://www.bouncycastle.org/download/bcprov-ext-${bcprov_version}.jar";
+    sha256 = "0abmhg2h44g8c5p7skzqwfxj8xwcjh9vs84mc0hr78k1am0633jk";
+  };
+  seednodes = fetchurl {
+    url = "https://downloads.freenetproject.org/alpha/opennet/seednodes.fref";
+    sha256 = "08awwr8n80b4cdzzb3y8hf2fzkr1f2ly4nlq779d6pvi5jymqdvv";
+  };
+  version = "build01475";
+
+  freenet-jars = stdenv.mkDerivation {
+    pname = "freenet-jars";
+    inherit version;
+
+    src = fetchFromGitHub {
+      owner = "freenet";
+      repo = "fred";
+      rev = version;
+      sha256 = "0k02fna9x219j7dhginbnf27i36bibb0rmm4qdwr5xm28hy1nd08";
+    };
+
+    patchPhase = ''
+      cp ${freenet_ext} lib/freenet/freenet-ext.jar
+      cp ${bcprov} lib/bcprov-${bcprov_version}.jar
+
+      sed '/antcall.*-ext/d' -i build.xml
+      sed 's/@unknown@/${version}/g' -i build-clean.xml
+    '';
+
+    buildInputs = [ ant jdk ];
+
+    buildPhase = "ant package-only";
+
+    installPhase = ''
+      mkdir -p $out/share/freenet
+      cp lib/bcprov-${bcprov_version}.jar $out/share/freenet
+      cp lib/freenet/freenet-ext.jar $out/share/freenet
+      cp dist/freenet.jar $out/share/freenet
+    '';
+  };
+
+in stdenv.mkDerivation {
+  name = "freenet-${version}";
+  inherit version;
+
+  src = substituteAll {
+    src = ./freenetWrapper;
+    inherit bash coreutils seednodes bcprov_version;
+    freenet = freenet-jars;
+    jre = jdk.jre;
+  };
+
+  jars = freenet-jars;
+
+  phases = [ "installPhase" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp $src $out/bin/freenet
+    chmod +x $out/bin/freenet
+    ln -s ${freenet-jars}/share $out/share
+  '';
+
+  meta = {
+    description = "Decentralised and censorship-resistant network";
+    homepage = "https://freenetproject.org/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [ stdenv.lib.maintainers.doublec ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/freenet/freenetWrapper b/nixpkgs/pkgs/applications/networking/p2p/freenet/freenetWrapper
new file mode 100755
index 000000000000..f3106265801f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/freenet/freenetWrapper
@@ -0,0 +1,18 @@
+#! @bash@/bin/bash
+
+PATH=@coreutils@/bin:$PATH
+
+export FREENET_HOME="$HOME/.local/share/freenet"
+if [ -n "$XDG_DATA_HOME" ]
+  then export FREENET_HOME="$XDG_DATA_HOME/freenet"
+fi
+
+if [ ! -d $FREENET_HOME ]; then
+  mkdir -p $FREENET_HOME
+fi
+
+cp -u @seednodes@ $FREENET_HOME/seednodes.fref
+chmod u+rw $FREENET_HOME/seednodes.fref
+
+cd $FREENET_HOME
+@jre@/bin/java -cp @freenet@/share/freenet/bcprov-@bcprov_version@.jar:@freenet@/share/freenet/freenet-ext.jar:@freenet@/share/freenet/freenet.jar -Xmx1024M freenet.node.NodeStarter
diff --git a/nixpkgs/pkgs/applications/networking/p2p/frostwire/default.nix b/nixpkgs/pkgs/applications/networking/p2p/frostwire/default.nix
new file mode 100644
index 000000000000..65e2165f64ee
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/frostwire/default.nix
@@ -0,0 +1,94 @@
+{ stdenv, fetchFromGitHub, gradle, perl, jre, makeWrapper, makeDesktopItem, mplayer }:
+
+let
+  version = "6.6.7-build-529";
+  name = "frostwire-desktop-${version}";
+
+  src = fetchFromGitHub {
+    owner = "frostwire";
+    repo = "frostwire";
+    rev = name;
+    sha256 = "03wdj2kr8akzx8m1scvg98132zbaxh81qjdsxn2645b3gahjwz0m";
+  };
+
+  desktopItem = makeDesktopItem {
+    name = "frostwire";
+    desktopName = "FrostWire";
+    genericName = "P2P Bittorrent client";
+    exec = "frostwire";
+    icon = "frostwire";
+    comment = "Search and explore all kinds of files on the Bittorrent network";
+    categories = "Network;FileTransfer;P2P;";
+  };
+
+  # fake build to pre-download deps into fixed-output derivation
+  deps = stdenv.mkDerivation {
+    name = "${name}-deps";
+    inherit src;
+    buildInputs = [ gradle perl ];
+    buildPhase = ''
+      export GRADLE_USER_HOME=$(mktemp -d)
+      ( cd desktop
+        gradle --no-daemon build
+      )
+    '';
+    # perl code mavenizes pathes (com.squareup.okio/okio/1.13.0/a9283170b7305c8d92d25aff02a6ab7e45d06cbe/okio-1.13.0.jar -> com/squareup/okio/okio/1.13.0/okio-1.13.0.jar)
+    installPhase = ''
+      find $GRADLE_USER_HOME -type f -regex '.*\.\(jar\|pom\)' \
+        | perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \
+        | sh
+    '';
+    outputHashAlgo = "sha256";
+    outputHashMode = "recursive";
+    outputHash = "11zd98g0d0fdgls4lsskkagwfxyh26spfd6c6g9cahl89czvlg3c";
+  };
+
+in stdenv.mkDerivation {
+  inherit name src;
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ gradle ];
+
+  buildPhase = ''
+    export GRADLE_USER_HOME=$(mktemp -d)
+    ( cd desktop
+
+      # disable auto-update (anyway it won't update frostwire installed in nix store)
+      substituteInPlace src/com/frostwire/gui/updates/UpdateManager.java \
+        --replace 'um.checkForUpdates' '// um.checkForUpdates'
+
+      # fix path to mplayer
+      substituteInPlace src/com/frostwire/gui/player/MediaPlayerLinux.java \
+        --replace /usr/bin/mplayer ${mplayer}/bin/mplayer
+
+      substituteInPlace build.gradle \
+        --replace 'mavenCentral()' 'mavenLocal(); maven { url uri("${deps}") }'
+      gradle --offline --no-daemon build
+    )
+  '';
+
+  installPhase = ''
+    mkdir -p $out/lib $out/share/java
+
+    cp desktop/build/libs/frostwire.jar $out/share/java/frostwire.jar
+
+    cp ${ { x86_64-darwin = "desktop/lib/native/*.dylib";
+            x86_64-linux  = "desktop/lib/native/lib{jlibtorrent,SystemUtilities}.so";
+            i686-linux    = "desktop/lib/native/lib{jlibtorrent,SystemUtilities}X86.so";
+          }.${stdenv.hostPlatform.system} or (throw "unsupported system ${stdenv.hostPlatform.system}")
+        } $out/lib
+
+    cp -dpR ${desktopItem}/share $out
+
+    makeWrapper ${jre}/bin/java $out/bin/frostwire \
+      --add-flags "-Djava.library.path=$out/lib -jar $out/share/java/frostwire.jar"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.frostwire.com/";
+    description = "BitTorrent Client and Cloud File Downloader";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ gavin ];
+    platforms = [ "x86_64-darwin" "x86_64-linux" "i686-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/frostwire/frostwire-bin.nix b/nixpkgs/pkgs/applications/networking/p2p/frostwire/frostwire-bin.nix
new file mode 100644
index 000000000000..39ab0ee0efa9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/frostwire/frostwire-bin.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, jre, makeWrapper }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  version = "6.8.4";
+  pname = "frostwire";
+
+  src = fetchurl {
+    url = "https://dl.frostwire.com/frostwire/${version}/frostwire-${version}.amd64.tar.gz";
+    sha256 = "1qs0r5621ihb9sj4sqpmxj9smwf8a8k3n1qx2i0sz65qhjfc90zz";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/share/java
+    mv $(ls */*.jar) $out/share/java
+
+    makeWrapper $out/share/java/frostwire $out/bin/frostwire \
+      --prefix PATH : ${jre}/bin/
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.frostwire.com/";
+    description = "BitTorrent Client and Cloud File Downloader";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ gavin ];
+    platforms = [ "x86_64-linux"];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/gnunet/default.nix b/nixpkgs/pkgs/applications/networking/p2p/gnunet/default.nix
new file mode 100644
index 000000000000..5abee0108ec3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/gnunet/default.nix
@@ -0,0 +1,72 @@
+{ stdenv, fetchurl, adns, curl, gettext, gmp, gnutls, libextractor
+, libgcrypt, libgnurl, libidn, libmicrohttpd, libtool, libunistring
+, makeWrapper, ncurses, pkgconfig, libxml2, sqlite, zlib
+, libpulseaudio, libopus, libogg, jansson }:
+
+stdenv.mkDerivation rec {
+  pname = "gnunet";
+  version = "0.12.1";
+
+  src = fetchurl {
+    url = "mirror://gnu/gnunet/${pname}-${version}.tar.gz";
+    sha256 = "0zhz3dd4mr6k7wlcxw2xclq8p8l4ia5nlg78dylyz6lbz96h2lsm";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ pkgconfig libtool makeWrapper ];
+  buildInputs = [
+    adns curl gmp gnutls libextractor libgcrypt libgnurl libidn
+    libmicrohttpd libunistring libxml2 ncurses gettext
+    sqlite zlib libpulseaudio libopus libogg jansson
+  ];
+
+  preConfigure = ''
+    # Brute force: since nix-worker chroots don't provide
+    # /etc/{resolv.conf,hosts}, replace all references to `localhost'
+    # by their IPv4 equivalent.
+    find . \( -name \*.c -or -name \*.conf \) | \
+      xargs sed -ie 's|\<localhost\>|127.0.0.1|g'
+
+    # Make sure the tests don't rely on `/tmp', for the sake of chroot
+    # builds.
+    find . \( -iname \*test\*.c -or -name \*.conf \) | \
+      xargs sed -ie "s|/tmp|$TMPDIR|g"
+
+    sed -ie 's|@LDFLAGS@|@LDFLAGS@ $(Z_LIBS)|g' \
+      src/regex/Makefile.in \
+      src/fs/Makefile.in
+  '';
+
+  # unfortunately, there's still a few failures with impure tests
+  doCheck = false;
+  checkPhase = ''
+    export GNUNET_PREFIX="$out"
+    export PATH="$out/bin:$PATH"
+    make -k check
+  '';
+
+  meta = with stdenv.lib; {
+    description = "GNU's decentralized anonymous and censorship-resistant P2P framework";
+
+    longDescription = ''
+      GNUnet is a framework for secure peer-to-peer networking that
+      does not use any centralized or otherwise trusted services.  A
+      first service implemented on top of the networking layer
+      allows anonymous censorship-resistant file-sharing.  Anonymity
+      is provided by making messages originating from a peer
+      indistinguishable from messages that the peer is routing.  All
+      peers act as routers and use link-encrypted connections with
+      stable bandwidth utilization to communicate with each other.
+      GNUnet uses a simple, excess-based economic model to allocate
+      resources.  Peers in GNUnet monitor each others behavior with
+      respect to resource usage; peers that contribute to the
+      network are rewarded with better service.
+    '';
+
+    homepage = "https://gnunet.org/";
+    license = licenses.agpl3Plus;
+    maintainers = with maintainers; [ vrthra ];
+    platforms = platforms.gnu ++ platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/gnunet/git.nix b/nixpkgs/pkgs/applications/networking/p2p/gnunet/git.nix
new file mode 100644
index 000000000000..b3d455599bf0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/gnunet/git.nix
@@ -0,0 +1,92 @@
+{ stdenv, fetchgit, libextractor, libmicrohttpd, libgcrypt
+, zlib, gmp, curl, libtool, adns, sqlite, pkgconfig
+, libxml2, ncurses, gettext, libunistring, libidn
+, makeWrapper, autoconf, automake, texinfo, which
+, withVerbose ? false }:
+
+let
+  rev = 	"ce2864cfaa27e55096b480bf35db5f8cee2a5e7e";
+in
+stdenv.mkDerivation {
+  name = "gnunet-git-${rev}";
+
+  src = fetchgit {
+    url =  "https://gnunet.org/git/gnunet.git";
+    inherit rev;
+    sha256 = "0gbw920m9v4b3425c0d1h7drgl2m1fni1bwjn4fwqnyz7kdqzsgl";
+  };
+
+  buildInputs = [
+    libextractor libmicrohttpd libgcrypt gmp curl libtool
+    zlib adns sqlite libxml2 ncurses libidn
+    pkgconfig gettext libunistring makeWrapper
+    autoconf automake texinfo which
+  ];
+
+  configureFlags = stdenv.lib.optional withVerbose "--enable-logging=verbose ";
+
+  preConfigure = ''
+    # Brute force: since nix-worker chroots don't provide
+    # /etc/{resolv.conf,hosts}, replace all references to `localhost'
+    # by their IPv4 equivalent.
+    for i in $(find . \( -name \*.c -or -name \*.conf \) \
+                    -exec grep -l '\<localhost\>' {} \;)
+    do
+      echo "$i: substituting \`127.0.0.1' to \`localhost'..."
+      sed -i "$i" -e's/\<localhost\>/127.0.0.1/g'
+    done
+
+    # Make sure the tests don't rely on `/tmp', for the sake of chroot
+    # builds.
+    for i in $(find . \( -iname \*test\*.c -or -name \*.conf \) \
+                    -exec grep -l /tmp {} \;)
+    do
+      echo "$i: replacing references to \`/tmp' by \`$TMPDIR'..."
+      substituteInPlace "$i" --replace "/tmp" "$TMPDIR"
+    done
+
+    # Ensure NSS installation works fine
+    configureFlags="$configureFlags --with-nssdir=$out/lib"
+
+    sh contrib/pogen.sh
+    sh bootstrap
+  '';
+
+  doCheck = false;
+
+  /* FIXME: Tests must be run this way, but there are still a couple of
+     failures.
+
+  postInstall =
+    '' export GNUNET_PREFIX="$out"
+       export PATH="$out/bin:$PATH"
+       make -k check
+    '';
+  */
+
+  meta = with stdenv.lib; {
+    description = "GNUnet, GNU's decentralized anonymous and censorship-resistant P2P framework";
+
+    longDescription = ''
+      GNUnet is a framework for secure peer-to-peer networking that
+      does not use any centralized or otherwise trusted services.  A
+      first service implemented on top of the networking layer
+      allows anonymous censorship-resistant file-sharing.  Anonymity
+      is provided by making messages originating from a peer
+      indistinguishable from messages that the peer is routing.  All
+      peers act as routers and use link-encrypted connections with
+      stable bandwidth utilization to communicate with each other.
+      GNUnet uses a simple, excess-based economic model to allocate
+      resources.  Peers in GNUnet monitor each others behavior with
+      respect to resource usage; peers that contribute to the
+      network are rewarded with better service.
+    '';
+
+    homepage = "https://gnunet.org/";
+
+    license = licenses.agpl3Plus;
+
+    maintainers = with stdenv.lib.maintainers; [ ];
+    platforms = platforms.gnu ++ platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/ktorrent/default.nix b/nixpkgs/pkgs/applications/networking/p2p/ktorrent/default.nix
new file mode 100644
index 000000000000..19be24bd1b18
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/ktorrent/default.nix
@@ -0,0 +1,34 @@
+{ mkDerivation, lib, fetchurl, fetchpatch, cmake
+, extra-cmake-modules, qtbase, qtscript
+, karchive, kcrash, kdnssd, ki18n, kio, knotifications, knotifyconfig
+, kdoctools, kross, kcmutils, kwindowsystem
+, libktorrent, taglib, libgcrypt, kplotting
+}:
+
+mkDerivation rec {
+  pname = "ktorrent";
+  version = "${libktorrent.mainVersion}";
+
+  src = fetchurl {
+    url    = "mirror://kde/stable/ktorrent/${libktorrent.mainVersion}/${pname}-${version}.tar.xz";
+    sha256 = "0kwd0npxfg4mdh7f3xadd2zjlqalpb1jxk61505qpcgcssijf534";
+  };
+
+  nativeBuildInputs = [ cmake kdoctools extra-cmake-modules ];
+
+  buildInputs = [
+    qtbase qtscript
+    karchive kcrash kdnssd ki18n kio knotifications knotifyconfig kross kcmutils kwindowsystem
+    libktorrent taglib libgcrypt kplotting
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "KDE integrated BtTorrent client";
+    homepage    = "https://www.kde.org/applications/internet/ktorrent/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ eelco ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/magnetico/default.nix b/nixpkgs/pkgs/applications/networking/p2p/magnetico/default.nix
new file mode 100644
index 000000000000..1dcf42b7ece1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/magnetico/default.nix
@@ -0,0 +1,33 @@
+{ lib, fetchFromGitHub, buildGoModule, go-bindata }:
+
+buildGoModule rec {
+  pname = "magnetico";
+  version = "0.11.0";
+
+  src = fetchFromGitHub {
+    owner  = "boramalper";
+    repo   = "magnetico";
+    rev    = "v${version}";
+    sha256 = "1622xcl5v67lrnkjwbg7g5b5ikrawx7p91jxbj3ixc1za2f3a3fn";
+  };
+
+  vendorSha256 = "0g4m0jnpy0q64xnflphyc0lmhni0q9448h7grbbr7f1s9lpqsjml";
+
+  nativeBuildInputs = [ go-bindata ];
+  buildPhase = ''
+    make magneticow magneticod
+  '';
+
+  doCheck = true;
+  checkPhase = ''
+    make test
+  '';
+
+  meta = with lib; {
+    description  = "Autonomous (self-hosted) BitTorrent DHT search engine suite.";
+    homepage     = "https://github.com/boramalper/magnetico";
+    license      = licenses.agpl3;
+    badPlatforms = platforms.darwin;
+    maintainers  = with maintainers; [ rnhmjoj ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/p2p/mldonkey/default.nix b/nixpkgs/pkgs/applications/networking/p2p/mldonkey/default.nix
new file mode 100644
index 000000000000..786ba434b928
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/mldonkey/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, ocamlPackages, zlib, bzip2, ncurses, file, gd, libpng, libjpeg }:
+
+stdenv.mkDerivation ({
+  name = "mldonkey-3.1.6";
+
+  src = fetchurl {
+    url = "https://github.com/ygrek/mldonkey/releases/download/release-3-1-6/mldonkey-3.1.6.tar.bz2";
+    sha256 = "0g84islkj72ymp0zzppcj9n4r21h0vlghnq87hv2wg580mybadhv";
+  };
+
+  preConfigure = stdenv.lib.optionalString (ocamlPackages.camlp4 != null) ''
+    substituteInPlace Makefile --replace '+camlp4' \
+      '${ocamlPackages.camlp4}/lib/ocaml/${ocamlPackages.ocaml.version}/site-lib/camlp4'
+  '';
+
+  buildInputs = [ zlib ncurses bzip2 file gd libpng libjpeg ] ++
+  (with ocamlPackages; [ ocaml camlp4 ]);
+  configureFlags = [ "--disable-gui" ];
+
+  meta = {
+    description = "Client for many p2p networks, with multiple frontends";
+    homepage = "http://mldonkey.sourceforge.net/";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.unix;
+  };
+} // (if !ocamlPackages.ocaml.nativeCompilers then
+{
+  # Byte code compilation (the ocaml opt compiler is not supported in some platforms)
+  buildPhase = "make mlnet.byte";
+  installPhase = ''
+    mkdir -p $out/bin
+    cp mlnet.byte $out/bin/mlnet
+  '';
+
+  # ocaml bytecode selfcontained binaries loose the bytecode if stripped
+  dontStrip = true;
+} else {}))
diff --git a/nixpkgs/pkgs/applications/networking/p2p/ncdc/default.nix b/nixpkgs/pkgs/applications/networking/p2p/ncdc/default.nix
new file mode 100644
index 000000000000..c956f26b1165
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/ncdc/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, ncurses, zlib, bzip2, sqlite, pkgconfig, glib, gnutls }:
+
+stdenv.mkDerivation rec {
+  pname = "ncdc";
+  version = "1.22.1";
+
+  src = fetchurl {
+    url = "https://dev.yorhel.nl/download/ncdc-${version}.tar.gz";
+    sha256 = "1bdgqd07f026qk6vpbxqsin536znd33931m3b4z44prlm9wd6pyi";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ ncurses zlib bzip2 sqlite glib gnutls ];
+
+  meta = with stdenv.lib; {
+    description = "Modern and lightweight direct connect client with a friendly ncurses interface";
+    homepage = "https://dev.yorhel.nl/ncdc";
+    license = licenses.mit;
+    platforms = platforms.linux; # arbitrary
+    maintainers = with maintainers; [ ehmry ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/opentracker/default.nix b/nixpkgs/pkgs/applications/networking/p2p/opentracker/default.nix
new file mode 100644
index 000000000000..ed44ff24fecf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/opentracker/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchgit, libowfat, zlib }:
+
+stdenv.mkDerivation {
+  name = "opentracker-2018-05-26";
+
+  src = fetchgit {
+    url = "https://erdgeist.org/gitweb/opentracker";
+    rev = "6411f1567f64248b0d145493c2e61004d2822623";
+    sha256 = "110nfb6n4clykwdzpk54iccsfjawq0krjfqhg114i1z0ri5dyl8j";
+  };
+
+  buildInputs = [ libowfat zlib ];
+
+  installPhase = ''
+    runHook preInstall
+    install -D opentracker $out/bin/opentracker
+    install -D opentracker.conf.sample $out/share/doc/opentracker.conf.sample
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://erdgeist.org/arts/software/opentracker/";
+    license = licenses.beerware;
+    platforms = platforms.linux;
+    description = "Bittorrent tracker project which aims for minimal resource usage and is intended to run at your wlan router.";
+    maintainers = with maintainers; [ makefu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/qbittorrent/default.nix b/nixpkgs/pkgs/applications/networking/p2p/qbittorrent/default.nix
new file mode 100644
index 000000000000..964752f3b85d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/qbittorrent/default.nix
@@ -0,0 +1,47 @@
+{ mkDerivation, lib, fetchFromGitHub, pkgconfig
+, boost, libtorrentRasterbar, qtbase, qttools, qtsvg
+, debugSupport ? false # Debugging
+, guiSupport ? true, dbus ? null # GUI (disable to run headless)
+, webuiSupport ? true # WebUI
+}:
+
+assert guiSupport -> (dbus != null);
+with lib;
+
+mkDerivation rec {
+  pname = "qbittorrent";
+  version = "4.2.5";
+
+  src = fetchFromGitHub {
+    owner = "qbittorrent";
+    repo = "qbittorrent";
+    rev = "release-${version}";
+    sha256 = "1n613ylg6i9gisgk0dbr2kpfasyizrkdjff1r8smd4vri2qrdksn";
+  };
+
+  # NOTE: 2018-05-31: CMake is working but it is not officially supported
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ boost libtorrentRasterbar qtbase qttools qtsvg ]
+    ++ optional guiSupport dbus; # D(esktop)-Bus depends on GUI support
+
+  # Otherwise qm_gen.pri assumes lrelease-qt5, which does not exist.
+  QMAKE_LRELEASE = "lrelease";
+
+  configureFlags = [
+    "--with-boost-libdir=${boost.out}/lib"
+    "--with-boost=${boost.dev}" ]
+    ++ optionals (!guiSupport) [ "--disable-gui" "--enable-systemd" ] # Also place qbittorrent-nox systemd service files
+    ++ optional (!webuiSupport) "--disable-webui"
+    ++ optional debugSupport "--enable-debug";
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Featureful free software BitTorrent client";
+    homepage    = "https://www.qbittorrent.org/";
+    license     = licenses.gpl2;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ Anton-Latukha ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/retroshare/default.nix b/nixpkgs/pkgs/applications/networking/p2p/retroshare/default.nix
new file mode 100644
index 000000000000..a6a0ab272873
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/retroshare/default.nix
@@ -0,0 +1,59 @@
+{ stdenv, fetchFromGitHub, libupnp, gpgme, gnome3, glib, libssh, pkgconfig, protobuf, bzip2
+, libXScrnSaver, speex, curl, libxml2, libxslt, sqlcipher, libmicrohttpd, opencv, qmake, ffmpeg_3
+, qtmultimedia, qtx11extras, qttools }:
+
+stdenv.mkDerivation rec {
+  pname = "retroshare";
+  version = "0.6.2";
+
+  src = fetchFromGitHub {
+    owner = "RetroShare";
+    repo = "RetroShare";
+    rev = "v${version}";
+    sha256 = "0hly2x87wdvqzzwf3wjzi7092bj8fk4xs6302rkm8gp9bkkmiiw8";
+  };
+
+  # NIX_CFLAGS_COMPILE = [ "-I${glib.dev}/include/glib-2.0" "-I${glib.dev}/lib/glib-2.0/include" "-I${libxml2.dev}/include/libxml2" "-I${sqlcipher}/include/sqlcipher" ];
+
+  patchPhase = ''
+    # Fix build error
+    sed -i 's/UpnpString_get_String(es_event->PublisherUrl)/es_event->PublisherUrl/' \
+      libretroshare/src/upnp/UPnPBase.cpp
+  '';
+
+  nativeBuildInputs = [ pkgconfig qmake ];
+  buildInputs = [
+    speex libupnp gpgme gnome3.libgnome-keyring glib libssh qtmultimedia qtx11extras qttools
+    protobuf bzip2 libXScrnSaver curl libxml2 libxslt sqlcipher libmicrohttpd opencv ffmpeg_3
+  ];
+
+  preConfigure = ''
+    qmakeFlags="$qmakeFlags DESTDIR=$out"
+  '';
+
+  # gui/settings/PluginsPage.h:25:28: fatal error: ui_PluginsPage.h: No such file or directory
+  enableParallelBuilding = false;
+
+  postInstall = ''
+    mkdir -p $out/bin
+    mv $out/RetroShare06-nogui $out/bin/RetroShare-nogui
+    mv $out/RetroShare06 $out/bin/Retroshare
+    ln -s $out/bin/RetroShare-nogui $out/bin/retroshare-nogui
+
+    # plugins
+    mkdir -p $out/share/retroshare
+    mv $out/lib* $out/share/retroshare
+
+    # BT DHT bootstrap
+    cp libbitdht/src/bitdht/bdboot.txt $out/share/retroshare
+  '';
+
+  meta = with stdenv.lib; {
+    description = "";
+    homepage = "http://retroshare.sourceforge.net/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.domenkozar ];
+    broken = true; # broken by libupnp: 1.6.21 -> 1.8.3 (#41684)
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/soulseekqt/default.nix b/nixpkgs/pkgs/applications/networking/p2p/soulseekqt/default.nix
new file mode 100644
index 000000000000..2a8a06227133
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/soulseekqt/default.nix
@@ -0,0 +1,59 @@
+{ stdenv, lib, fetchzip, mkDerivation
+, appimageTools
+, autoPatchelfHook
+, desktop-file-utils
+, imagemagick
+, qtmultimedia
+}:
+
+mkDerivation rec {
+  pname = "soulseekqt";
+  version = "2018-1-30";
+  name="${pname}-${version}";
+
+  src = fetchzip {
+      url = "https://www.slsknet.org/SoulseekQt/Linux/SoulseekQt-${version}-64bit-appimage.tgz";
+      sha256 = "16ncnvv8h33f161mgy7qc0wjvvqahsbwvby65qhgfh9pbbgb4xgg";
+  };
+
+  appextracted = appimageTools.extractType2 {
+    inherit name;
+    src="${src}/SoulseekQt-2018-1-30-64bit.AppImage";
+  };
+
+  dontBuild = true;
+  dontConfigure = true;
+  
+  nativeBuildInputs = [ imagemagick autoPatchelfHook desktop-file-utils ];
+  buildInputs = [ qtmultimedia stdenv.cc.cc ];
+
+  installPhase = ''
+      # directory in /nix/store so readonly
+      cd $appextracted
+
+      binary="$(readlink AppRun)"
+      install -Dm755 $binary -t $out/bin
+
+      # fixup and install desktop file
+      desktop-file-install --dir $out/share/applications \
+        --set-key Exec --set-value $binary \
+        --set-key Comment --set-value "${meta.description}" \
+        --set-key Categories --set-value Network default.desktop
+      mv $out/share/applications/default.desktop $out/share/applications/SoulseekQt.desktop
+
+      #TODO: write generic code to read icon path from $binary.desktop
+      icon="$(readlink .DirIcon)"
+      for size in 16 32 48 64 72 96 128 192 256 512 1024; do
+        mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
+        convert -resize "$size"x"$size" $icon $out/share/icons/hicolor/"$size"x"$size"/apps/$icon
+      done
+    '';
+
+  meta = with lib; {
+    description = "Official Qt SoulSeek client";
+    homepage = "https://www.slsknet.org";
+    license = licenses.unfree;
+    maintainers = [ maintainers.genesis ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/stig/default.nix b/nixpkgs/pkgs/applications/networking/p2p/stig/default.nix
new file mode 100644
index 000000000000..98fd41e8bcd1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/stig/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, fetchFromGitHub
+, python3Packages
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "stig";
+  # This project has a different concept for pre release / alpha,
+  # Read the project's README for details: https://github.com/rndusr/stig#stig
+  version = "0.11.0a";
+
+  src = fetchFromGitHub {
+    owner = "rndusr";
+    repo = "stig";
+    rev = "v${version}";
+    sha256 = "192v8f80jfly12bqzsslpxlvm72kdqm3jl40x1az5czpg4ab3lb7";
+  };
+
+  # urwidtrees 1.0.3 is requested by the developer because 1.0.2 (which is packaged
+  # in nixpkgs) is not uploaded to pypi and 1.0.1 has a problematic `setup.py`.
+  # As long as we don't have any problems installing it, no special features / specific bugs
+  # were fixed in 1.0.3 that aren't available in 1.0.2 are used by stig.
+  # See https://github.com/rndusr/stig/issues/120
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "urwidtrees>=1.0.3dev0" "urwidtrees"
+  '';
+
+  propagatedBuildInputs = with python3Packages; [
+    urwid
+    urwidtrees
+    aiohttp
+    async-timeout
+    pyxdg
+    blinker
+    natsort
+    setproctitle
+  ];
+
+  checkInputs = with python3Packages; [
+    asynctest
+    pytestCheckHook
+  ];
+
+  dontUseSetuptoolsCheck = true;
+
+  preCheck = ''
+    export LC_ALL=C
+  '';
+
+  pytestFlagsArray = [
+    "tests"
+    # test_string__month_day_hour_minute_second fails on darwin
+    "--deselect=tests/client_test/ttypes_test.py::TestTimestamp::test_string__month_day_hour_minute_second"
+    # TestScrollBarWithScrollable.test_wrapping_bug fails
+    "--deselect=tests/tui_test/scroll_test.py::TestScrollBarWithScrollable::test_wrapping_bug"
+  ];
+
+  meta = with lib; {
+    description = "TUI and CLI for the BitTorrent client Transmission";
+    homepage = "https://github.com/rndusr/stig";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ doronbehar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/synapse-bt/default.nix b/nixpkgs/pkgs/applications/networking/p2p/synapse-bt/default.nix
new file mode 100644
index 000000000000..80d907894401
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/synapse-bt/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, rustPlatform, pkgconfig, openssl, CoreServices, Security }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "synapse-bt";
+  version = "1.0";
+
+  src = fetchFromGitHub {
+    owner = "Luminarys";
+    repo = "synapse";
+    rev = version;
+    sha256 = "01npv3zwia5d534zdwisd9xfng507adv4qkljf8z0zm0khqqn71a";
+  };
+
+  cargoSha256 = "0lhhdzq4sadnp2pnbq309d1mb7ggbf24k5ivlchrjhllbim1wmdz";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ openssl ]
+    ++ stdenv.lib.optionals stdenv.isDarwin [ CoreServices Security ];
+
+  cargoBuildFlags = [ "--all" ];
+
+  meta = with stdenv.lib; {
+    description = "Flexible and fast BitTorrent daemon";
+    homepage = "https://synapse-bt.org/";
+    license = licenses.isc;
+    maintainers = with maintainers; [ dywedir ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/tixati/default.nix b/nixpkgs/pkgs/applications/networking/p2p/tixati/default.nix
new file mode 100644
index 000000000000..2e14bd0eb0f2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/tixati/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, glib, zlib, dbus, dbus-glib, gtk2, gdk-pixbuf, cairo, pango }:
+
+stdenv.mkDerivation rec {
+  pname = "tixati";
+  version = "2.73";
+
+  src = fetchurl {
+    url = "https://download2.tixati.com/download/tixati-${version}-1.x86_64.manualinstall.tar.gz";
+    sha256 = "1ncrfc4wgf02la2h3zpdcz07b980n9232lg5f62q7ab79fjrcrfr";
+  };
+
+  installPhase = ''
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+             --set-rpath ${stdenv.lib.makeLibraryPath [ glib zlib dbus dbus-glib gtk2 gdk-pixbuf cairo pango ]} \
+             tixati
+    install -D tixati         $out/bin/tixati
+    install -D tixati.desktop $out/share/applications/tixati.desktop
+    install -D tixati.png     $out/share/icons/tixati.png
+  '';
+
+  dontStrip = true;
+
+  meta = with stdenv.lib; {
+    description = "Torrent client";
+    homepage = "http://www.tixati.com";
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ volth ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/torrential/default.nix b/nixpkgs/pkgs/applications/networking/p2p/torrential/default.nix
new file mode 100644
index 000000000000..e432818bec75
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/torrential/default.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, pkgconfig
+, vala_0_40
+, pantheon
+, curl
+, glib
+, gtk3
+, libb64
+, libevent
+, libgee
+, libnatpmp
+, libunity
+, miniupnpc
+, openssl
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "torrential";
+  version = "1.1.0";
+
+  src = fetchFromGitHub {
+    owner = "davidmhewitt";
+    repo = "torrential";
+    rev = version;
+    fetchSubmodules = true;
+    sha256 = "17aby0c17ybyzyzyc1cg1j6q1a186801fy84avlaxahqp7vdammx";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    vala_0_40 # https://github.com/davidmhewitt/torrential/issues/135
+    pkgconfig
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    curl
+    glib
+    gtk3
+    libb64
+    libevent
+    libgee
+    libnatpmp
+    libunity
+    miniupnpc
+    openssl
+    pantheon.granite
+  ];
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Download torrents in style with this speedy, minimalist torrent client for elementary OS";
+    homepage = "https://github.com/davidmhewitt/torrential";
+    maintainers = with maintainers; [ xiorcale ] ++ pantheon.maintainers;
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/transgui/default.nix b/nixpkgs/pkgs/applications/networking/p2p/transgui/default.nix
new file mode 100644
index 000000000000..dbe3bb50e6d0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/transgui/default.nix
@@ -0,0 +1,76 @@
+{ stdenv, fetchFromGitHub, pkgconfig, makeDesktopItem, unzip, fpc, lazarus,
+libX11, glib, gtk2, gdk-pixbuf, pango, atk, cairo, openssl }:
+
+stdenv.mkDerivation rec {
+  pname = "transgui";
+  version = "5.18.0";
+
+  src = fetchFromGitHub {
+    owner = "transmission-remote-gui";
+    repo = "transgui";
+    rev = "v${version}";
+    sha256 = "1dyx778756zhvz5sxgdvy49p2c0x44w4nmcfd90wqrmgfknncnf5";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    unzip fpc lazarus stdenv.cc
+    libX11 glib gtk2 gdk-pixbuf pango atk cairo openssl
+  ];
+
+  NIX_LDFLAGS = "
+    -L${stdenv.cc.cc.lib}/lib
+    -lX11 -lglib-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0
+    -lgdk_pixbuf-2.0 -lpango-1.0 -latk-1.0 -lcairo -lc -lcrypto
+  ";
+
+  prePatch = ''
+    substituteInPlace restranslator.pas --replace /usr/ $out/
+  '';
+
+  preBuild = ''
+    lazbuild -B transgui.lpr --lazarusdir=${lazarus}/share/lazarus
+  '';
+
+  makeFlags = [
+    "FPC=fpc"
+    "PP=fpc"
+    "INSTALL_PREFIX=$(out)"
+  ];
+
+  LCL_PLATFORM = "gtk2";
+
+  desktopItem = makeDesktopItem rec {
+    name = "transgui";
+    exec = name + " %U";
+    icon = name;
+    type = "Application";
+    comment = meta.description;
+    desktopName = "Transmission Remote GUI";
+    genericName = "BitTorrent Client";
+    categories = stdenv.lib.concatStringsSep ";" [
+      "Application" "Network" "FileTransfer" "P2P" "GTK"
+    ];
+    startupNotify = "true";
+    mimeType = stdenv.lib.concatStringsSep ";" [
+      "application/x-bittorrent" "x-scheme-handler/magnet"
+    ];
+  };
+
+  postInstall = ''
+    mkdir -p "$out/share/applications"
+    cp $desktopItem/share/applications/* $out/share/applications
+    mkdir -p "$out/share/icons/hicolor/48x48/apps"
+    cp transgui.png "$out/share/icons/hicolor/48x48/apps"
+    mkdir -p "$out/share/transgui"
+    cp -r "./lang" "$out/share/transgui"
+  '';
+
+  meta = {
+    description = "A cross platform front-end for the Transmission Bit-Torrent client";
+    homepage = "https://sourceforge.net/p/transgui";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = with stdenv.lib.maintainers; [ ramkromberg ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/transmission-remote-cli/default.nix b/nixpkgs/pkgs/applications/networking/p2p/transmission-remote-cli/default.nix
new file mode 100644
index 000000000000..7c6e35752a01
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/transmission-remote-cli/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, pythonPackages }:
+
+stdenv.mkDerivation rec {
+  pname = "transmission-remote-cli";
+  version = "1.7.1";
+
+  src = fetchurl {
+    url = "https://github.com/fagga/transmission-remote-cli/archive/v${version}.tar.gz";
+    sha256 = "1y0hkpcjf6jw9xig8yf484hbhy63nip0pkchx401yxj81m25l4z9";
+  };
+
+  buildInputs = with pythonPackages; [ python wrapPython ];
+
+  installPhase = ''
+    install -D transmission-remote-cli $out/bin/transmission-remote-cli
+    install -D transmission-remote-cli.1 $out/share/man/man1/transmission-remote-cli.1
+    wrapPythonPrograms
+  '';
+
+  meta = {
+    description = "Curses interface for the Transmission BitTorrent daemon";
+    homepage = "https://github.com/fagga/transmission-remote-cli";
+    license = stdenv.lib.licenses.gpl3Plus;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/transmission-remote-gtk/default.nix b/nixpkgs/pkgs/applications/networking/p2p/transmission-remote-gtk/default.nix
new file mode 100644
index 000000000000..8e74b82b69d3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/transmission-remote-gtk/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, autoconf, automake, libtool, wrapGAppsHook, fetchFromGitHub, pkgconfig
+, intltool, gtk3, json-glib, curl, glib, autoconf-archive, appstream-glib, fetchpatch }:
+
+
+stdenv.mkDerivation rec {
+  pname = "transmission-remote-gtk";
+  version = "1.4.1";
+
+  src = fetchFromGitHub {
+    owner = "transmission-remote-gtk";
+    repo = "transmission-remote-gtk";
+    rev = version;
+    sha256 = "1pipc1f94jdppv597mqmcj2kw2rdvaqcbl512v7z8vir76p1a7gk";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/transmission-remote-gtk/transmission-remote-gtk/commit/0f5cc8a9942e220ea0f7d0b17db4a78d094e3b65.patch";
+      sha256 = "195rsjpbc0gzmr9bycvq4mra7abp3hd9by3a5vvcmxsh5ipikycf";
+    })
+  ];
+
+  preConfigure = "./autogen.sh";
+
+  nativeBuildInputs= [
+    autoconf automake libtool wrapGAppsHook
+    pkgconfig intltool autoconf-archive
+    appstream-glib
+  ];
+
+  buildInputs = [ gtk3 json-glib curl glib ];
+
+  doCheck = false; # fails with style validation error
+
+  meta = with stdenv.lib; {
+    description = "GTK remote control for the Transmission BitTorrent client";
+    homepage = "https://github.com/ajf8/transmission-remote-gtk";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.ehmry ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/transmission/default.nix b/nixpkgs/pkgs/applications/networking/p2p/transmission/default.nix
new file mode 100644
index 000000000000..d59cdff34fd9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/transmission/default.nix
@@ -0,0 +1,97 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkgconfig
+, openssl
+, curl
+, libevent
+, inotify-tools
+, systemd
+, zlib
+, pcre
+  # Build options
+, enableGTK3 ? false
+, gnome3
+, xorg
+, wrapGAppsHook
+, enableQt ? false
+, qt5
+, enableSystemd ? stdenv.isLinux
+, enableDaemon ? true
+, enableCli ? true
+}:
+
+let
+  version = "3.00";
+
+in stdenv.mkDerivation {
+  pname = "transmission";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "transmission";
+    repo = "transmission";
+    rev = version;
+    sha256 = "0ccg0km54f700x9p0jsnncnwvfnxfnxf7kcm7pcx1cj0vw78924z";
+    fetchSubmodules = true;
+  };
+
+  cmakeFlags =
+    let
+      mkFlag = opt: if opt then "ON" else "OFF";
+    in
+    [
+      "-DENABLE_MAC=OFF" # requires xcodebuild
+      "-DENABLE_GTK=${mkFlag enableGTK3}"
+      "-DENABLE_QT=${mkFlag enableQt}"
+      "-DENABLE_DAEMON=${mkFlag enableDaemon}"
+      "-DENABLE_CLI=${mkFlag enableCli}"
+    ];
+
+  nativeBuildInputs = [
+    pkgconfig
+    cmake
+  ]
+  ++ lib.optionals enableGTK3 [ wrapGAppsHook ]
+  ++ lib.optionals enableQt [ qt5.wrapQtAppsHook ]
+  ;
+
+  buildInputs = [
+    openssl
+    curl
+    libevent
+    zlib
+    pcre
+  ]
+  ++ lib.optionals enableQt [ qt5.qttools qt5.qtbase ]
+  ++ lib.optionals enableGTK3 [ gnome3.gtk xorg.libpthreadstubs ]
+  ++ lib.optionals enableSystemd [ systemd ]
+  ++ lib.optionals stdenv.isLinux [ inotify-tools ]
+  ;
+
+  NIX_LDFLAGS = lib.optionalString stdenv.isDarwin "-framework CoreFoundation";
+
+  # Reduce the risk of collisions
+  postInstall = "rm -r $out/share/doc";
+
+  meta = {
+    description = "A fast, easy and free BitTorrent client";
+    longDescription = ''
+      Transmission is a BitTorrent client which features a simple interface
+      on top of a cross-platform back-end.
+      Feature spotlight:
+        * Uses fewer resources than other clients
+        * Native Mac, GTK and Qt GUI clients
+        * Daemon ideal for servers, embedded systems, and headless use
+        * All these can be remote controlled by Web and Terminal clients
+        * Bluetack (PeerGuardian) blocklists with automatic updates
+        * Full encryption, DHT, and PEX support
+    '';
+    homepage = "http://www.transmissionbt.com/";
+    license = lib.licenses.gpl2; # parts are under MIT
+    maintainers = with lib.maintainers; [ astsmtl vcunat wizeman ];
+    platforms = lib.platforms.unix;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/tribler/default.nix b/nixpkgs/pkgs/applications/networking/p2p/tribler/default.nix
new file mode 100644
index 000000000000..ed1129b238ac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/tribler/default.nix
@@ -0,0 +1,88 @@
+{ stdenv, fetchurl, pkgs, python3Packages, makeWrapper
+, enablePlayer ? true, vlc ? null, qt5, lib }:
+
+stdenv.mkDerivation rec {
+  pname = "tribler";
+  version = "7.4.4";
+
+  src = fetchurl {
+    url = "https://github.com/Tribler/tribler/releases/download/v${version}/Tribler-v${version}.tar.xz";
+    sha256 = "0hxiyf1k07ngym2p8r1b5mcx1y2crkyz43gi9sgvsvsyijyaff3p";
+  };
+
+  nativeBuildInputs = [
+    python3Packages.wrapPython
+    makeWrapper
+  ];
+
+  buildInputs = [
+    python3Packages.python
+  ];
+
+  pythonPath = [
+    python3Packages.libtorrentRasterbar
+    python3Packages.twisted
+    python3Packages.netifaces
+    python3Packages.pycrypto
+    python3Packages.pyasn1
+    python3Packages.requests
+    python3Packages.m2crypto
+    python3Packages.pyqt5
+    python3Packages.chardet
+    python3Packages.cherrypy
+    python3Packages.cryptography
+    python3Packages.libnacl
+    python3Packages.configobj
+    python3Packages.decorator
+    python3Packages.feedparser
+    python3Packages.service-identity
+    python3Packages.psutil
+    python3Packages.pillow
+    python3Packages.networkx
+    python3Packages.pony
+    python3Packages.lz4
+    python3Packages.pyqtgraph
+
+    # there is a BTC feature, but it requires some unclear version of
+    # bitcoinlib, so this doesn't work right now.
+    # python3Packages.bitcoinlib
+  ];
+
+  postPatch = ''
+    ${stdenv.lib.optionalString enablePlayer ''
+      substituteInPlace "./TriblerGUI/vlc.py" --replace "ctypes.CDLL(p)" "ctypes.CDLL('${vlc}/lib/libvlc.so')"
+      substituteInPlace "./TriblerGUI/widgets/videoplayerpage.py" --replace "if vlc and vlc.plugin_path" "if vlc"
+      substituteInPlace "./TriblerGUI/widgets/videoplayerpage.py" --replace "os.environ['VLC_PLUGIN_PATH'] = vlc.plugin_path" "os.environ['VLC_PLUGIN_PATH'] = '${vlc}/lib/vlc/plugins'"
+    ''}
+  '';
+
+  installPhase = ''
+    mkdir -pv $out
+    # Nasty hack; call wrapPythonPrograms to set program_PYTHONPATH.
+    wrapPythonPrograms
+    cp -prvd ./* $out/
+    makeWrapper ${python3Packages.python}/bin/python $out/bin/tribler \
+        --set QT_QPA_PLATFORM_PLUGIN_PATH ${qt5.qtbase.bin}/lib/qt-*/plugins/platforms \
+        --set _TRIBLERPATH $out \
+        --set PYTHONPATH $out:$program_PYTHONPATH \
+        --set NO_AT_BRIDGE 1 \
+        --run 'cd $_TRIBLERPATH' \
+        --add-flags "-O $out/run_tribler.py" \
+        ${stdenv.lib.optionalString enablePlayer ''
+          --prefix LD_LIBRARY_PATH : ${vlc}/lib
+        ''}
+
+    mkdir -p $out/share/applications $out/share/icons $out/share/man/man1
+    cp $out/Tribler/Main/Build/Ubuntu/tribler.desktop $out/share/applications/tribler.desktop
+    cp $out/Tribler/Main/Build/Ubuntu/tribler_big.xpm $out/share/icons/tribler.xpm
+    cp $out/Tribler/Main/Build/Ubuntu/tribler.1 $out/share/man/man1/tribler.1
+  '';
+
+  meta = with stdenv.lib; {
+    maintainers = with maintainers; [ xvapx ];
+    homepage = "https://www.tribler.org/";
+    description = "A completely decentralised P2P filesharing client based on the Bittorrent protocol";
+    license = licenses.lgpl21;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/twister/default.nix b/nixpkgs/pkgs/applications/networking/p2p/twister/default.nix
new file mode 100644
index 000000000000..03cb381f5eb4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/twister/default.nix
@@ -0,0 +1,67 @@
+{ stdenv, fetchFromGitHub, fetchpatch, autoconf, automake, libtool, pkgconfig, python2
+, boost, db, openssl, geoip, libiconv, miniupnpc
+, srcOnly, fetchgit
+}:
+
+let
+  twisterHTML = srcOnly {
+    name = "twister-html";
+    src = fetchgit {
+      url = "git://github.com/miguelfreitas/twister-html.git";
+      rev = "01e7f7ca9b7e42ed90f91bc42da2c909ca5c0b9b";
+      sha256 = "0scjbin6s1kmi0bqq0dx0qyjw4n5xgmj567n0156i39f9h0dabqy";
+    };
+  };
+
+  boostPython = boost.override { enablePython = true; };
+
+in stdenv.mkDerivation rec {
+  pname = "twister";
+  version = "2019-08-19";
+
+  src = fetchFromGitHub {
+    owner = "miguelfreitas";
+    repo = "twister-core";
+    rev = "31faf3f63e461ea0a9b23081567a4a552cf06873";
+    sha256 = "0xh1lgnl9nd86jr0mp7m8bkd7r5j4d6chd0y73h2xv4aq5sld0sp";
+  };
+
+  configureFlags = [
+    "--with-libgeoip"
+    "--with-libiconv"
+    "--disable-deprecated-functions"
+    "--enable-tests"
+    "--enable-python-binding"
+    "--with-boost-libdir=${boostPython.out}/lib"
+  ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    autoconf automake libtool python2
+    boostPython db openssl geoip miniupnpc libiconv
+  ];
+
+  postPatch = ''
+    sed -i -e '/-htmldir/s|(default: [^)]*)|(default: ${twisterHTML})|' \
+      src/init.cpp
+    sed -i -e '/GetDataDir.*html/s|path *= *[^;]*|path = "${twisterHTML}"|' \
+      src/util.cpp
+  '';
+
+  preConfigure = ''
+    sh autotool.sh
+  '';
+
+  installPhase = ''
+    install -vD twisterd "$out/bin/twisterd"
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    homepage = "http://www.twister.net.co/";
+    description = "Peer-to-peer microblogging";
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/vuze/default.nix b/nixpkgs/pkgs/applications/networking/p2p/vuze/default.nix
new file mode 100644
index 000000000000..be2421ef4d26
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/vuze/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchsvn, jdk, jre, ant, swt, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "vuze";
+  version = "5750";
+
+  src = fetchsvn {
+    url = "http://svn.vuze.com/public/client/tags/RELEASE_${version}";
+    sha256 = "07w6ipyiy8hi88d6yxbbf3vkv26mj7dcz9yr8141hb2ig03v0h0p";
+  };
+
+  buildInputs = [ makeWrapper jdk ant ];
+
+  buildPhase = "ant";
+
+  installPhase = ''
+    install -D dist/Vuze_0000-00.jar $out/share/java/Vuze_${version}-00.jar
+    makeWrapper ${jre}/bin/java $out/bin/vuze \
+      --add-flags "-Xmx256m -Djava.library.path=${swt}/lib -cp $out/share/java/Vuze_${version}-00.jar:${swt}/jars/swt.jar org.gudy.azureus2.ui.swt.Main"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Torrent client";
+    homepage = "http://www.vuze.com";
+    license = licenses.unfree;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ volth ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/zeronet/default.nix b/nixpkgs/pkgs/applications/networking/p2p/zeronet/default.nix
new file mode 100644
index 000000000000..ce5a99b1e5fc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/zeronet/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "zeronet";
+  version = "0.7.1";
+  format = "other";
+
+  src = fetchFromGitHub {
+    owner = "HelloZeroNet";
+    repo = "ZeroNet";
+    rev = "v${version}";
+    sha256 = "04prgicm0yjh2klcxdgwx1mvlsxxi2bdkzfcvysvixbgq20wjvdk";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    gevent msgpack base58 merkletools rsa pysocks pyasn1 websocket_client
+    gevent-websocket rencode bitcoinlib maxminddb pyopenssl
+  ];
+
+  buildPhase = ''
+    ${python3Packages.python.interpreter} -O -m compileall .
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share
+    cp -r plugins src tools *.py $out/share/
+  '';
+
+  postFixup = ''
+    makeWrapper "$out/share/zeronet.py" "$out/bin/zeronet" \
+      --set PYTHONPATH "$PYTHONPATH" \
+      --set PATH ${python3Packages.python}/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Decentralized websites using Bitcoin crypto and BitTorrent network";
+    homepage = "https://zeronet.io/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ fgaz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ping/default.nix b/nixpkgs/pkgs/applications/networking/ping/default.nix
new file mode 100644
index 000000000000..ed63a72f2109
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ping/default.nix
@@ -0,0 +1,67 @@
+{ stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, vala
+, pkgconfig
+, pantheon
+, python3
+, glib
+, gtk3
+, gtksourceview
+, json-glib
+, libsoup
+, libgee
+, wrapGAppsHook
+, vala_0_40
+}:
+
+stdenv.mkDerivation rec {
+  pname = "ping";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "jeremyvaartjes";
+    repo = "ping";
+    rev = version;
+    sha256 = "1h9cdy2jxa2ffykjg89j21hazls32z9yyv3g0x07x3vizzl5xcij";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    vala_0_40
+    pkgconfig
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    gtksourceview
+    json-glib
+    libgee
+    libsoup
+    pantheon.granite
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "A helpful tool that lets you debug what part of your API is causing you issues";
+    homepage = "https://github.com/jeremyvaartjes/ping";
+    maintainers = with maintainers; [ xiorcale ] ++ pantheon.maintainers;
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/pjsip/default.nix b/nixpkgs/pkgs/applications/networking/pjsip/default.nix
new file mode 100644
index 000000000000..7319dd4a44fa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/pjsip/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchFromGitHub, openssl, libsamplerate, alsaLib, AppKit }:
+
+stdenv.mkDerivation rec {
+  pname = "pjsip";
+  version = "2.10";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = "pjproject";
+    rev = version;
+    sha256 = "1aklicpgwc88578k03i5d5cm5h8mfm7hmx8vfprchbmaa2p8f4z0";
+  };
+
+  patches = [
+    ./fix-aarch64.patch
+  ];
+
+  buildInputs = [ openssl libsamplerate ]
+    ++ stdenv.lib.optional stdenv.isLinux alsaLib
+    ++ stdenv.lib.optional stdenv.isDarwin AppKit;
+
+  preConfigure = ''
+    export LD=$CC
+  '' # Fixed on master, remove with 2.11
+     + stdenv.lib.optionalString stdenv.isDarwin ''
+    NIX_CFLAGS_COMPILE+=" -framework Security"
+  '';
+
+  postInstall = ''
+    mkdir -p $out/bin
+    cp pjsip-apps/bin/pjsua-* $out/bin/pjsua
+    mkdir -p $out/share/${pname}-${version}/samples
+    cp pjsip-apps/bin/samples/*/* $out/share/${pname}-${version}/samples
+  '';
+
+  # We need the libgcc_s.so.1 loadable (for pthread_cancel to work)
+  dontPatchELF = true;
+
+  meta = with stdenv.lib; {
+    description = "A multimedia communication library written in C, implementing standard based protocols such as SIP, SDP, RTP, STUN, TURN, and ICE";
+    homepage = "https://pjsip.org/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ olynch ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/pjsip/fix-aarch64.patch b/nixpkgs/pkgs/applications/networking/pjsip/fix-aarch64.patch
new file mode 100644
index 000000000000..f4aabf7a9bb4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/pjsip/fix-aarch64.patch
@@ -0,0 +1,13 @@
+--- a/aconfigure
++++ b/aconfigure
+@@ -8945,6 +8945,10 @@
+                                  ac_webrtc_instset=neon
+                                  ac_webrtc_cflags="-DWEBRTC_ARCH_ARMV7 -mfloat-abi=hard -mfpu=neon"
+                                  ;;
++                             arm64*|aarch64*)
++                                 ac_webrtc_instset=neon
++                                 ac_webrtc_cflags="-DWEBRTC_ARCH_ARM64"
++                                 ;;
+                              *)
+                                  ac_webrtc_instset=sse2
+                                  ;;
diff --git a/nixpkgs/pkgs/applications/networking/protocol/default.nix b/nixpkgs/pkgs/applications/networking/protocol/default.nix
new file mode 100644
index 000000000000..31b1bd6086ad
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/protocol/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonApplication, fetchFromGitHub }:
+
+buildPythonApplication {
+  pname = "protocol-unstable";
+  version = "2019-03-28";
+
+  src = fetchFromGitHub {
+    owner = "luismartingarcia";
+    repo = "protocol";
+    rev = "4e8326ea6c2d288be5464c3a7d9398df468c0ada";
+    sha256 = "13l10jhf4vghanmhh3pn91b2jdciispxy0qadz4n08blp85qn9cm";
+  };
+
+  meta = with stdenv.lib; {
+    description = "An ASCII Header Generator for Network Protocols";
+    homepage = "https://github.com/luismartingarcia/protocol";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ teto ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/protonmail-bridge/default.nix b/nixpkgs/pkgs/applications/networking/protonmail-bridge/default.nix
new file mode 100644
index 000000000000..7acf821dfcf4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/protonmail-bridge/default.nix
@@ -0,0 +1,73 @@
+{ stdenv, fetchurl, lib, qtbase, qtmultimedia, qtsvg, qtdeclarative, qttools, qtgraphicaleffects, qtquickcontrols2, full
+, libsecret, libGL, libpulseaudio, glib, wrapQtAppsHook, mkDerivation }:
+
+let
+  version = "1.2.3-1";
+
+  description = ''
+    An application that runs on your computer in the background and seamlessly encrypts
+    and decrypts your mail as it enters and leaves your computer.
+
+    To work, gnome-keyring service must be enabled.
+  '';
+in mkDerivation {
+  pname = "protonmail-bridge";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://protonmail.com/download/protonmail-bridge_${version}_amd64.deb";
+    sha256 = "032ggk9fvd19fbsqkzwzwh0hpyg8gpkrin71di7zsx6ias5innw1";
+  };
+
+  sourceRoot = ".";
+
+  unpackCmd = ''
+    ar p "$src" data.tar.xz | tar xJ
+  '';
+
+  installPhase = ''
+    mkdir -p $out/{bin,lib,share}
+
+    cp -r usr/lib/protonmail/bridge/protonmail-bridge $out/lib
+    cp -r usr/share $out
+
+    ln -s $out/lib/protonmail-bridge $out/bin/protonmail-bridge
+  '';
+
+  postFixup = let
+    rpath = lib.makeLibraryPath [
+      stdenv.cc.cc.lib
+      qtbase
+      qtquickcontrols2
+      qtgraphicaleffects
+      qtmultimedia
+      qtsvg
+      qtdeclarative
+      qttools
+      libGL
+      libsecret
+      libpulseaudio
+      glib
+    ];
+  in ''
+    patchelf \
+      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${rpath}" \
+      $out/lib/protonmail-bridge
+
+    substituteInPlace $out/share/applications/ProtonMail_Bridge.desktop \
+      --replace "/usr/" "$out/" \
+      --replace "Exec=protonmail-bridge" "Exec=$out/bin/protonmail-bridge"
+  '';
+
+  buildInputs = [ qtbase qtquickcontrols2 qtmultimedia qtgraphicaleffects qtdeclarative ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.protonmail.com/bridge";
+    license = licenses.mit;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ lightdiscord ];
+
+    inherit description;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/protonvpn-cli-ng/default.nix b/nixpkgs/pkgs/applications/networking/protonvpn-cli-ng/default.nix
new file mode 100644
index 000000000000..e62bc21ab5b8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/protonvpn-cli-ng/default.nix
@@ -0,0 +1,35 @@
+{ lib, fetchFromGitHub, python3Packages, openvpn, dialog, iptables }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "protonvpn-cli-ng";
+  version = "2.2.2";
+
+  src = fetchFromGitHub {
+    owner = "protonvpn";
+    repo = "${pname}";
+    rev = "v${version}";
+    sha256 = "0ixjb02kj4z79whm1izd8mrn2h0rp9cmw4im1qvp93rahqxdd4n8";
+  };
+
+  propagatedBuildInputs = (with python3Packages; [
+      requests
+      docopt
+      setuptools
+      pythondialog
+    ]) ++ [
+      dialog
+      openvpn
+      iptables
+    ];
+
+  # No tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Linux command-line client for ProtonVPN";
+    homepage = "https://github.com/protonvpn/protonvpn-cli-ng";
+    maintainers = with maintainers; [ jtcoolen jefflabonte ];
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/protonvpn-cli/default.nix b/nixpkgs/pkgs/applications/networking/protonvpn-cli/default.nix
new file mode 100644
index 000000000000..c48f6c820269
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/protonvpn-cli/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, lib, fetchFromGitHub, makeWrapper, coreutils
+, openvpn, python, dialog, wget, update-resolv-conf }:
+
+let
+  expectedUpdateResolvPath = "/etc/openvpn/update-resolv-conf";
+  actualUpdateResolvePath = "${update-resolv-conf}/libexec/openvpn/update-resolv-conf";
+
+in stdenv.mkDerivation rec {
+  name = "protonvpn-cli";
+  version = "1.1.2";
+
+  src = fetchFromGitHub {
+    owner = "ProtonVPN";
+    repo = "protonvpn-cli";
+    rev = "v${version}";
+    sha256 = "0xvflr8zf267n3dv63nkk4wjxhbckw56sqmyca3krf410vrd7zlv";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    substituteInPlace protonvpn-cli.sh \
+      --replace ${expectedUpdateResolvPath} ${actualUpdateResolvePath} \
+      --replace \$UID 0 \
+      --replace /etc/resolv.conf /dev/null \
+      --replace \
+        "  echo \"Connecting...\"" \
+        "  sed -ri 's@${expectedUpdateResolvPath}@${actualUpdateResolvePath}@g' \"\$openvpn_config\"; echo \"Connecting...\""
+    cp protonvpn-cli.sh "$out/bin/protonvpn-cli"
+    wrapProgram $out/bin/protonvpn-cli \
+      --prefix PATH : ${lib.makeBinPath [ coreutils openvpn python dialog wget update-resolv-conf ]}
+    ln -s "$out/bin/protonvpn-cli" "$out/bin/pvpn"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "ProtonVPN Command-Line Tool";
+    homepage = "https://github.com/ProtonVPN/protonvpn-cli";
+    maintainers = with maintainers; [ caugner ];
+    license = licenses.mit;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ps2client/default.nix b/nixpkgs/pkgs/applications/networking/ps2client/default.nix
new file mode 100644
index 000000000000..02b14b72c18b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ps2client/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation {
+  version = "unstable-2018-10-18";
+  pname = "ps2client";
+
+  src = fetchFromGitHub {
+    owner = "ps2dev";
+    repo  = "ps2client";
+    rev = "92fcaf18aabf74daaed40bd50d428cce326a87c0";
+    sha256 = "1rlmns44pxm6dkh6d3cz9sw8v7pvi53r7r5r3kgwdzkhixjj0cdg";
+  };
+
+  patchPhase = ''
+   sed -i -e "s|-I/usr/include||g" -e "s|-I/usr/local/include||g" Makefile
+  '';
+  
+  installPhase = ''
+    make PREFIX=$out install
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Desktop clients to interact with ps2link and ps2netfs";
+    homepage = "https://github.com/ps2dev/ps2client";
+    license = licenses.bsd3;
+    maintainers = [ maintainers.genesis ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/pyload/beautifulsoup.nix b/nixpkgs/pkgs/applications/networking/pyload/beautifulsoup.nix
new file mode 100644
index 000000000000..8eb0c2298fd3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/pyload/beautifulsoup.nix
@@ -0,0 +1,20 @@
+{ pythonPackages, isPy3k, pkgs }:
+
+pythonPackages.buildPythonPackage {
+  name = "beautifulsoup-3.2.1";
+  disabled = isPy3k;
+
+  src = pkgs.fetchurl {
+    url = "http://www.crummy.com/software/BeautifulSoup/download/3.x/BeautifulSoup-3.2.1.tar.gz";
+    sha256 = "1nshbcpdn0jpcj51x0spzjp519pkmqz0n0748j7dgpz70zlqbfpm";
+  };
+
+  # error: invalid command 'test'
+  doCheck = false;
+
+  meta = {
+    homepage = "http://www.crummy.com/software/BeautifulSoup/";
+    license = "bsd";
+    description = "Undemanding HTML/XML parser";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/pyload/default.nix b/nixpkgs/pkgs/applications/networking/pyload/default.nix
new file mode 100644
index 000000000000..f173e56abb34
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/pyload/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchFromGitHub, fetchpatch, pythonPackages, gocr, unrar, rhino, spidermonkey }:
+
+let
+  beautifulsoup = pythonPackages.callPackage ./beautifulsoup.nix {
+    inherit pythonPackages;
+  };
+
+in pythonPackages.buildPythonApplication rec {
+  version = "0.4.9-next";
+  name = "pyLoad-" + version;
+
+  src = fetchFromGitHub {
+    owner = "pyload";
+    repo = "pyload";
+    rev = "721ea9f089217b9cb0f2799c051116421faac081";
+    sha256 = "1ad4r9slx1wgvd2fs4plfbpzi4i2l2bk0lybzsb2ncgh59m87h54";
+  };
+
+  patches =
+    let
+      # gets merged in next release version of pyload
+      configParserPatch = fetchpatch {
+        url = "https://patch-diff.githubusercontent.com/raw/pyload/pyload/pull/2625.diff";
+        sha256 = "1bisgx78kcr5c0x0i3h0ch5mykns5wx5wx7gvjj0pc71lfzlxzb9";
+      };
+      setupPyPatch = fetchpatch {
+        url = "https://patch-diff.githubusercontent.com/raw/pyload/pyload/pull/2638.diff";
+        sha256 = "006g4qbl582262ariflbyfrszcx8ck2ac1cpry1f82f76p4cgf6z";
+      };
+    in [ configParserPatch setupPyPatch ];
+
+  buildInputs = [
+    unrar rhino spidermonkey gocr pythonPackages.paver
+  ];
+
+  propagatedBuildInputs = with pythonPackages; [
+    pycurl jinja2 beaker thrift simplejson pycrypto feedparser tkinter
+    beautifulsoup send2trash
+  ];
+
+  #remove this once the PR patches above are merged. Needed because githubs diff endpoint
+  #does not support diff -N
+  prePatch = ''
+    touch module/config/__init__.py
+  '';
+
+  preBuild = ''
+    ${pythonPackages.paver}/bin/paver generate_setup
+  '';
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Free and open source downloader for 1-click-hosting sites";
+    homepage = "https://github.com/pyload/pyload";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.mahe ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/anydesk/default.nix b/nixpkgs/pkgs/applications/networking/remote/anydesk/default.nix
new file mode 100644
index 000000000000..9425f260e4f0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/anydesk/default.nix
@@ -0,0 +1,89 @@
+{ stdenv, fetchurl, makeWrapper, makeDesktopItem
+, atk, cairo, gdk-pixbuf, glib, gnome2, gtk2, libGLU, libGL, pango, xorg
+, lsb-release, freetype, fontconfig, polkit, polkit_gnome
+, pulseaudio }:
+
+let
+  sha256 = {
+    x86_64-linux = "1vpfyffg1g7f1m4mxmqghswihml9rm1cipm7krmr5wvxdmcphxnk";
+    i386-linux   = "0vjxbg5hwkqkh600rr75xviwy848r1xw9mxwf6bb6l8b0isvlsgg";
+  }.${stdenv.hostPlatform.system} or (throw "system ${stdenv.hostPlatform.system} not supported");
+
+  arch = {
+    x86_64-linux = "amd64";
+    i386-linux   = "i386";
+  }.${stdenv.hostPlatform.system} or (throw "system ${stdenv.hostPlatform.system} not supported");
+
+  description = "Desktop sharing application, providing remote support and online meetings";
+
+  desktopItem = makeDesktopItem {
+    name = "AnyDesk";
+    exec = "@out@/bin/anydesk";
+    icon = "anydesk";
+    desktopName = "AnyDesk";
+    genericName = description;
+    categories = "Application;Network;";
+    startupNotify = "false";
+  };
+
+in stdenv.mkDerivation rec {
+  pname = "anydesk";
+  version = "5.5.6";
+
+  src = fetchurl {
+    urls = [
+      "https://download.anydesk.com/linux/${pname}-${version}-${arch}.tar.gz"
+      "https://download.anydesk.com/linux/generic-linux/${pname}-${version}-${arch}.tar.gz"
+    ];
+    inherit sha256;
+  };
+
+  buildInputs = [
+    atk cairo gdk-pixbuf glib gtk2 stdenv.cc.cc pango
+    gnome2.gtkglext libGLU libGL freetype fontconfig
+    polkit polkit_gnome pulseaudio
+  ] ++ (with xorg; [
+    libxcb libxkbfile libX11 libXdamage libXext libXfixes libXi libXmu
+    libXrandr libXtst libXt libICE libSM libXrender
+  ]);
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin $out/share/{applications,doc/anydesk,icons/hicolor}
+    install -m755 anydesk $out/bin/anydesk
+    cp copyright README $out/share/doc/anydesk
+    cp -r icons/hicolor/* $out/share/icons/hicolor/
+    cp ${desktopItem}/share/applications/*.desktop $out/share/applications
+
+    runHook postInstall
+  '';
+
+  postFixup = ''
+    patchelf \
+      --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+      --set-rpath "${stdenv.lib.makeLibraryPath buildInputs}" \
+      $out/bin/anydesk
+
+    # pangox is not actually necessary (it was only added as a part of gtkglext)
+    patchelf \
+      --remove-needed libpangox-1.0.so.0 \
+      $out/bin/anydesk
+
+    wrapProgram $out/bin/anydesk \
+      --prefix PATH : ${stdenv.lib.makeBinPath [ lsb-release ]}
+
+    substituteInPlace $out/share/applications/*.desktop \
+      --subst-var out
+  '';
+
+  meta = with stdenv.lib; {
+    inherit description;
+    homepage = "https://www.anydesk.com";
+    license = licenses.unfree;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ shyim ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/default.nix b/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/default.nix
new file mode 100644
index 000000000000..a62b1bf5ee15
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/default.nix
@@ -0,0 +1,253 @@
+{ stdenv
+, lib
+, fetchurl
+, requireFile
+, makeWrapper
+, libredirect
+, busybox
+, file
+, makeDesktopItem
+, tzdata
+, cacert
+, dconf
+, glib
+, gtk2
+, atk
+, gdk-pixbuf
+, cairo
+, pango
+, gnome3
+, xorg
+, libpng12
+, freetype
+, fontconfig
+, gtk_engines
+, alsaLib
+, zlib
+, version ? "20.04.0"
+}:
+
+let
+  versionInfo = let
+    supportedVersions = {
+      "19.6.0" = {
+        major     = "19";
+        minor     = "6";
+        patch     = "0";
+        x64hash   = "0szqlfmigzgf0309i6ikxkizxaf4ri7qmhys75m0zi3bpwx6hzhs";
+        x86hash   = "16v3kgavrh62z6vxcbw6mn7h0bfishpl7m92k7g1p2882r1f8vaf";
+        x64suffix = "60";
+        x86suffix = "60";
+        homepage  = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-latest.html";
+      };
+
+      "19.8.0" = {
+        major     = "19";
+        minor     = "8";
+        patch     = "0";
+        x64hash   = "0f8djw8lp5wihb23y09yac1mh09w1qp422h72r6zfx9k1lqfsdbw";
+        x86hash   = "0afcqirb4q349r3izy88vqkszg6y2wg14iwypk6nrmvwgvcl6jdn";
+        x64suffix = "20";
+        x86suffix = "20";
+        homepage  = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-1908.html";
+      };
+
+      "19.10.0" = {
+        major     = "19";
+        minor     = "10";
+        patch     = "0";
+        x64hash   = "1l4q4pmfiw9gmml6j5b3hls2101xf5m8p6855nhfhvqlisrj9h14";
+        x86hash   = "000zjik8wf8b6fadnsai0p77b4n2l95544zx503iyrb9pv53bj3y";
+        x64suffix = "15";
+        x86suffix = "15";
+        homepage  = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-1910.html";
+      };
+
+      "19.12.0" = {
+        major     = "19";
+        minor     = "12";
+        patch     = "0";
+        x64hash   = "1si5mkxbgb8m99bkvgc3l80idjfdp0kby6pv47s07nn43dbr1j7a";
+        x86hash   = "07rfp90ksnvr8zv7ix7f0z6a59n48s7bd4kqbzilfwxgs4ddqmcy";
+        x64suffix = "19";
+        x86suffix = "19";
+        homepage  = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-1912.html";
+      };
+
+      "20.04.0" = {
+        major     = "20";
+        minor     = "04";
+        patch     = "0";
+        x64hash   = "E923592216F9541173846F932784E6C062CB09C9E8858219C7489607BF82A0FB";
+        x86hash   = "A2E2E1882723DA6796E68916B3BB2B44DD575A83DEB03CA90A262F6C81B1A53F";
+        x64suffix = "21";
+        x86suffix = "21";
+        homepage  = "https://www.citrix.com/downloads/workspace-app/linux/workspace-app-for-linux-latest.html";
+      };
+    };
+
+    # Copied this file largely from the citrix-receiver package
+    # Leaving this here even though there are no deprecations yet
+    # for ease of future maintenance.
+    #
+    # The lifespans of Citrix products can be found here:
+    # https://www.citrix.com/support/product-lifecycle/milestones/receiver.html
+    deprecatedVersions = let
+      versions = [ "19.3.0" ];
+    in
+      lib.listToAttrs
+        (lib.forEach versions
+          (v: lib.nameValuePair v (throw "Unsupported citrix_workspace version: ${v}")));
+  in
+    deprecatedVersions // supportedVersions;
+
+  citrixWorkspaceForVersion = { major, minor, patch, x64hash, x86hash, x64suffix, x86suffix, homepage }:
+    stdenv.mkDerivation rec {
+      pname = "citrix-workspace";
+      version  = "${major}.${minor}.${patch}";
+      inherit homepage;
+
+      prefixWithBitness = if stdenv.is64bit then "linuxx64" else "linuxx86";
+
+      preferLocalBuild = true;
+
+      src = requireFile rec {
+        name    = if stdenv.is64bit then "${prefixWithBitness}-${version}.${x64suffix}.tar.gz" else "${prefixWithBitness}-${version}.${x86suffix}.tar.gz";
+        sha256  = if stdenv.is64bit then x64hash else x86hash;
+        message = ''
+          In order to use Citrix Workspace, you need to comply with the Citrix EULA and download
+          the ${if stdenv.is64bit then "64-bit" else "32-bit"} binaries, .tar.gz from:
+
+          ${homepage}
+
+          (if you do not find version ${version} there, try at
+          https://www.citrix.com/downloads/workspace-app/
+
+          Once you have downloaded the file, please use the following command and re-run the
+          installation:
+
+          nix-prefetch-url file://\$PWD/${name}
+        '';
+      };
+
+      dontBuild = true;
+
+      sourceRoot = ".";
+
+      buildInputs = [
+        makeWrapper
+        busybox
+        file
+        gtk2
+        gdk-pixbuf
+      ];
+
+      libPath = stdenv.lib.makeLibraryPath [
+        glib
+        gtk2
+        atk
+        gdk-pixbuf
+        cairo
+        pango
+        dconf
+        xorg.libX11
+        xorg.libXext
+        xorg.libXrender
+        xorg.libXinerama
+        xorg.libXfixes
+        libpng12
+        zlib
+        gtk_engines
+        freetype
+        fontconfig
+        alsaLib
+        stdenv.cc.cc # Fixes: Can not load [..]/opt/citrix-icaclient/lib/ctxh264_fb.so:(null)
+      ];
+
+      desktopItem = makeDesktopItem {
+        name        = "wfica";
+        desktopName = "Citrix Workspace";
+        genericName = "Citrix Workspace";
+        exec        = "wfica";
+        icon        = "wfica";
+        comment     = "Connect to remote Citrix server";
+        categories  = "GTK;GNOME;X-GNOME-NetworkSettings;Network;";
+        mimeType    = "application/x-ica";
+      };
+
+      installPhase = ''
+        runHook preInstall
+
+        export ICAInstDir="$out/opt/citrix-icaclient"
+
+        sed -i \
+          -e 's,^main_install_menu$,install_ICA_client,g' \
+          -e 's,^integrate_ICA_client(),alias integrate_ICA_client=true\nintegrate_ICA_client_old(),g' \
+          -e 's,^ANSWER=""$,ANSWER="$INSTALLER_YES",' \
+          -e 's,/bin/true,true,g' \
+          ./${prefixWithBitness}/hinst
+
+        # Run the installer...
+        bash ./${prefixWithBitness}/hinst CDROM "`pwd`"
+
+        echo "Deleting broken links..."
+        for link in `find $ICAInstDir -type l `
+        do
+          [ -f "$link" ] || rm -v "$link"
+        done
+
+        echo "Expanding certificates..."
+        # As explained in https://wiki.archlinux.org/index.php/Citrix#Security_Certificates
+        pushd "$ICAInstDir/keystore/cacerts"
+        awk 'BEGIN {c=0;} /BEGIN CERT/{c++} { print > "cert." c ".pem"}' < ${cacert}/etc/ssl/certs/ca-bundle.crt
+        popd
+
+        echo "Patching executables..."
+        find $ICAInstDir -type f -exec file {} \; |
+          grep 'ELF.*executable' |
+          cut -f 1 -d : |
+          grep -vi '\(.dll\|.so\)$' | # added as a workaround to https://github.com/NixOS/nixpkgs/issues/41729
+          while read f
+          do
+            echo "Patching ELF intrepreter and rpath for $f"
+            chmod u+w "$f"
+            patchelf \
+              --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+              --set-rpath "$ICAInstDir:$libPath" "$f"
+          done
+
+        echo "Wrapping wfica..."
+        mkdir "$out/bin"
+
+        makeWrapper "$ICAInstDir/wfica" "$out/bin/wfica" \
+          --add-flags "-icaroot $ICAInstDir" \
+          --set ICAROOT "$ICAInstDir" \
+          --set GTK_PATH "${gtk2.out}/lib/gtk-2.0:${gnome3.gnome-themes-extra}/lib/gtk-2.0" \
+          --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+          --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
+          --set LD_LIBRARY_PATH "$libPath" \
+          --set NIX_REDIRECTS "/usr/share/zoneinfo=${tzdata}/share/zoneinfo:/etc/zoneinfo=${tzdata}/share/zoneinfo:/etc/timezone=$ICAInstDir/timezone"
+
+        echo "We arbitrarily set the timezone to UTC. No known consequences at this point."
+        echo UTC > "$ICAInstDir/timezone"
+
+        echo "Installing desktop item..."
+        mkdir -p $out/share/applications
+        cp ${desktopItem}/share/applications/* $out/share/applications
+
+        # We introduce a dependency on the source file so that it need not be redownloaded everytime
+        echo $src >> "$out/share/workspace_dependencies.pin"
+
+        runHook postInstall
+      '';
+
+      meta = with stdenv.lib; {
+        license     = stdenv.lib.licenses.unfree;
+        inherit homepage;
+        description = "Citrix Workspace";
+        platforms   = platforms.linux;
+        maintainers = with maintainers; [ ma27 ];
+      };
+    };
+
+in citrixWorkspaceForVersion (lib.getAttr version versionInfo)
diff --git a/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/wrapper.nix b/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/wrapper.nix
new file mode 100644
index 000000000000..ea475ae6dbc9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/wrapper.nix
@@ -0,0 +1,19 @@
+{ citrix_workspace, extraCerts ? [], symlinkJoin }:
+
+let
+
+  mkCertCopy = certPath:
+    "cp ${certPath} $out/opt/citrix-icaclient/keystore/cacerts/";
+
+in
+
+if builtins.length extraCerts == 0 then citrix_workspace else symlinkJoin {
+  name = "citrix-with-extra-certs-${citrix_workspace.version}";
+  paths = [ citrix_workspace ];
+
+  postBuild = ''
+    ${builtins.concatStringsSep "\n" (map mkCertCopy extraCerts)}
+
+    sed -i -E "s,-icaroot (.+citrix-icaclient),-icaroot $out/opt/citrix-icaclient," $out/bin/wfica
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/freerdp/default.nix b/nixpkgs/pkgs/applications/networking/remote/freerdp/default.nix
new file mode 100644
index 000000000000..414e9d1b9085
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/freerdp/default.nix
@@ -0,0 +1,109 @@
+{ stdenv, lib, fetchFromGitHub, cmake, pkgconfig, alsaLib, ffmpeg_3, glib, openssl
+, pcre, zlib, libX11, libXcursor, libXdamage, libXext, libXi, libXinerama
+, libXrandr, libXrender, libXv, libXtst, libxkbcommon, libxkbfile, wayland
+, gstreamer, gst-plugins-base, gst-plugins-good, libunwind, orc, libxslt
+, libusb1, libpulseaudio ? null, cups ? null, pcsclite ? null, systemd ? null
+, buildServer ? true, nocaps ? false }:
+
+let
+  cmFlag = flag: if flag then "ON" else "OFF";
+  disabledTests = [
+    # this one is probably due to our sandbox
+    {
+      dir = "libfreerdp/crypto/test";
+      file = "Test_x509_cert_info.c";
+    }
+  ];
+
+in stdenv.mkDerivation rec {
+  pname = "freerdp";
+  version = "2.1.1";
+
+  src = fetchFromGitHub {
+    owner = "FreeRDP";
+    repo = "FreeRDP";
+    rev = version;
+    sha256 = "1avfsx837rjfk50qv3xjccx2309phn04rq6imadqvqpfnyx4ma66";
+  };
+
+  postPatch = ''
+    export HOME=$TMP
+
+    # failing test(s)
+    ${lib.concatMapStringsSep "\n" (e: ''
+      substituteInPlace ${e.dir}/CMakeLists.txt \
+        --replace ${e.file} ""
+      rm ${e.dir}/${e.file}
+    '') disabledTests}
+
+    substituteInPlace "libfreerdp/freerdp.pc.in" \
+      --replace "Requires:" "Requires: @WINPR_PKG_CONFIG_FILENAME@"
+  '' + lib.optionalString (pcsclite != null) ''
+    substituteInPlace "winpr/libwinpr/smartcard/smartcard_pcsc.c" \
+      --replace "libpcsclite.so" "${lib.getLib pcsclite}/lib/libpcsclite.so"
+  '' + lib.optionalString nocaps ''
+    substituteInPlace "libfreerdp/locale/keyboard_xkbfile.c" \
+      --replace "RDP_SCANCODE_CAPSLOCK" "RDP_SCANCODE_LCONTROL"
+  '';
+
+  buildInputs = with lib;
+    [
+      alsaLib
+      cups
+      ffmpeg_3
+      glib
+      gst-plugins-base
+      gst-plugins-good
+      gstreamer
+      libX11
+      libXcursor
+      libXdamage
+      libXext
+      libXi
+      libXinerama
+      libXrandr
+      libXrender
+      libXtst
+      libXv
+      libpulseaudio
+      libunwind
+      libusb1
+      libxkbcommon
+      libxkbfile
+      libxslt
+      openssl
+      orc
+      pcre
+      pcsclite
+      wayland
+      zlib
+    ] ++ optional stdenv.isLinux systemd;
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  doCheck = true;
+
+  cmakeFlags = [ "-DCMAKE_INSTALL_LIBDIR=lib" ]
+    ++ lib.mapAttrsToList (k: v: "-D${k}=${if v then "ON" else "OFF"}") {
+      BUILD_TESTING = doCheck;
+      WITH_CUNIT = doCheck;
+      WITH_CUPS = (cups != null);
+      WITH_OSS = false;
+      WITH_PCSC = (pcsclite != null);
+      WITH_PULSE = (libpulseaudio != null);
+      WITH_SERVER = buildServer;
+      WITH_SSE2 = stdenv.isx86_64;
+    };
+
+  meta = with lib; {
+    description = "A Remote Desktop Protocol Client";
+    longDescription = ''
+      FreeRDP is a client-side implementation of the Remote Desktop Protocol (RDP)
+      following the Microsoft Open Specifications.
+    '';
+    homepage = "https://www.freerdp.com/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ peterhoeg lheckemann ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/putty/default.nix b/nixpkgs/pkgs/applications/networking/remote/putty/default.nix
new file mode 100644
index 000000000000..804a40a614c5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/putty/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, lib, fetchurl, autoconf, automake, pkgconfig, libtool
+, gtk2, halibut, ncurses, perl, darwin
+}:
+
+stdenv.mkDerivation rec {
+  version = "0.73";
+  pname = "putty";
+
+  src = fetchurl {
+    urls = [
+      "https://the.earth.li/~sgtatham/putty/${version}/${pname}-${version}.tar.gz"
+      "ftp://ftp.wayne.edu/putty/putty-website-mirror/${version}/${pname}-${version}.tar.gz"
+    ];
+    sha256 = "076z34jpik2dmlwxicvf1djjgnahcqv12rjhmb9yq6ml7x0bbc1x";
+  };
+
+  # glib-2.62 deprecations
+  NIX_CFLAGS_COMPILE = "-DGLIB_DISABLE_DEPRECATION_WARNINGS";
+
+  preConfigure = lib.optionalString stdenv.hostPlatform.isUnix ''
+    perl mkfiles.pl
+    ( cd doc ; make );
+    ./mkauto.sh
+    cd unix
+  '' + lib.optionalString stdenv.hostPlatform.isWindows ''
+    cd windows
+  '';
+
+  TOOLPATH = stdenv.cc.targetPrefix;
+  makefile = if stdenv.hostPlatform.isWindows then "Makefile.mgw" else null;
+
+  installPhase = if stdenv.hostPlatform.isWindows then ''
+    for exe in *.exe; do
+       install -D $exe $out/bin/$exe
+    done
+  '' else null;
+
+  nativeBuildInputs = [ autoconf automake halibut libtool perl pkgconfig ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isUnix [
+    gtk2 ncurses
+  ] ++ lib.optional stdenv.isDarwin darwin.apple_sdk.libs.utmp;
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "A Free Telnet/SSH Client";
+    longDescription = ''
+      PuTTY is a free implementation of Telnet and SSH for Windows and Unix
+      platforms, along with an xterm terminal emulator.
+      It is written and maintained primarily by Simon Tatham.
+    '';
+    homepage = "https://www.chiark.greenend.org.uk/~sgtatham/putty/";
+    license = licenses.mit;
+    platforms = platforms.unix ++ platforms.windows;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/rdesktop/default.nix b/nixpkgs/pkgs/applications/networking/remote/rdesktop/default.nix
new file mode 100644
index 000000000000..4c67105dafc2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/rdesktop/default.nix
@@ -0,0 +1,32 @@
+{stdenv, fetchFromGitHub, openssl, libX11, krb5, libXcursor, libtasn1, nettle, gnutls, pkgconfig, autoreconfHook
+, enableCredssp ? (!stdenv.isDarwin)
+} :
+
+stdenv.mkDerivation (rec {
+  pname = "rdesktop";
+  version = "1.9.0";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1s6k1jwd28y38ymk3lfv76ch4arpfwrbdhpkbnwwy3fc4617gb78";
+  };
+
+  nativeBuildInputs = [pkgconfig autoreconfHook];
+  buildInputs = [openssl libX11 libXcursor libtasn1 nettle gnutls]
+    ++ stdenv.lib.optional enableCredssp krb5;
+
+  configureFlags = [
+    "--with-ipv6"
+    "--with-openssl=${openssl.dev}"
+    "--disable-smartcard"
+  ] ++ stdenv.lib.optional (!enableCredssp) "--disable-credssp";
+
+  meta = {
+    description = "Open source client for Windows Terminal Services";
+    homepage = "http://www.rdesktop.org/";
+    platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
+    license = stdenv.lib.licenses.gpl2;
+  };
+})
diff --git a/nixpkgs/pkgs/applications/networking/remote/remmina/default.nix b/nixpkgs/pkgs/applications/networking/remote/remmina/default.nix
new file mode 100644
index 000000000000..ee9ea6679273
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/remmina/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchFromGitLab, cmake, ninja, pkgconfig, wrapGAppsHook
+, glib, gtk3, gettext, libxkbfile, libX11
+, freerdp, libssh, libgcrypt, gnutls
+, pcre, libdbusmenu-gtk3, libappindicator-gtk3
+, libvncserver, libpthreadstubs, libXdmcp, libxkbcommon
+, libsecret, libsoup, spice-protocol, spice-gtk, epoxy, at-spi2-core
+, openssl, gsettings-desktop-schemas, json-glib, libsodium, webkitgtk, harfbuzz
+# The themes here are soft dependencies; only icons are missing without them.
+, gnome3
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "remmina";
+  version = "1.4.4";
+
+  src = fetchFromGitLab {
+    owner  = "Remmina";
+    repo   = "Remmina";
+    rev    = "v${version}";
+    sha256 = "0kc0akr5xvbq2bx3wsgf0hd8x5hjgshwrrzhwixp0584ydax89gv";
+  };
+
+  nativeBuildInputs = [ cmake ninja pkgconfig wrapGAppsHook ];
+  buildInputs = [
+    gsettings-desktop-schemas
+    glib gtk3 gettext libxkbfile libX11
+    freerdp libssh libgcrypt gnutls
+    pcre libdbusmenu-gtk3 libappindicator-gtk3
+    libvncserver libpthreadstubs libXdmcp libxkbcommon
+    libsecret libsoup spice-protocol spice-gtk epoxy at-spi2-core
+    openssl gnome3.adwaita-icon-theme json-glib libsodium webkitgtk
+    harfbuzz
+  ];
+
+  cmakeFlags = [
+    "-DWITH_VTE=OFF"
+    "-DWITH_TELEPATHY=OFF"
+    "-DWITH_AVAHI=OFF"
+    "-DFREERDP_LIBRARY=${freerdp}/lib/libfreerdp2.so"
+    "-DFREERDP_CLIENT_LIBRARY=${freerdp}/lib/libfreerdp-client2.so"
+    "-DFREERDP_WINPR_LIBRARY=${freerdp}/lib/libwinpr2.so"
+    "-DWINPR_INCLUDE_DIR=${freerdp}/include/winpr2"
+  ];
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      --prefix LD_LIBRARY_PATH : "${libX11.out}/lib"
+    )
+  '';
+
+  meta = {
+    license = licenses.gpl2;
+    homepage = "https://gitlab.com/Remmina/Remmina";
+    description = "Remote desktop client written in GTK";
+    maintainers = with maintainers; [ melsigl ryantm ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/teamviewer/default.nix b/nixpkgs/pkgs/applications/networking/remote/teamviewer/default.nix
new file mode 100644
index 000000000000..dbb9d465cc7f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/teamviewer/default.nix
@@ -0,0 +1,66 @@
+{ mkDerivation, lib, fetchurl, autoPatchelfHook, makeWrapper, xdg_utils, dbus
+, qtbase, qtwebkit, qtx11extras, qtquickcontrols, glibc
+, libXrandr, libX11, libXext, libXdamage, libXtst, libSM, libXfixes
+, wrapQtAppsHook
+}:
+
+mkDerivation rec {
+  pname = "teamviewer";
+  version = "15.2.2756";
+
+  src = fetchurl {
+    url = "https://dl.tvcdn.de/download/linux/version_15x/teamviewer_${version}_amd64.deb";
+    sha256 = "1g6a7yadvc6gc660m62yibj2hrj7bwy26z5ww0gk6rwqlz048i97";
+  };
+
+  unpackPhase = ''
+    ar x $src
+    tar xf data.tar.*
+  '';
+
+  nativeBuildInputs = [ autoPatchelfHook makeWrapper wrapQtAppsHook ];
+  buildInputs = [ dbus qtbase qtwebkit qtx11extras libX11 ];
+  propagatedBuildInputs = [ qtquickcontrols ];
+
+  installPhase = ''
+    mkdir -p $out/share/teamviewer $out/bin $out/share/applications
+    cp -a opt/teamviewer/* $out/share/teamviewer
+    rm -R \
+      $out/share/teamviewer/logfiles \
+      $out/share/teamviewer/config \
+      $out/share/teamviewer/tv_bin/xdg-utils \
+      $out/share/teamviewer/tv_bin/script/{teamviewer_setup,teamviewerd.sysv,teamviewerd.service,teamviewerd.*.conf,libdepend,tv-delayed-start.sh}
+
+    ln -s $out/share/teamviewer/tv_bin/script/teamviewer $out/bin
+    ln -s $out/share/teamviewer/tv_bin/teamviewerd $out/bin
+    ln -s $out/share/teamviewer/tv_bin/desktop/com.teamviewer.*.desktop $out/share/applications
+    ln -s /var/lib/teamviewer $out/share/teamviewer/config
+    ln -s /var/log/teamviewer $out/share/teamviewer/logfiles
+    ln -s ${xdg_utils}/bin $out/share/teamviewer/tv_bin/xdg-utils
+
+    sed -i "s,/opt/teamviewer,$out/share/teamviewer,g" $out/share/teamviewer/tv_bin/desktop/com.teamviewer.*.desktop
+
+    substituteInPlace $out/share/teamviewer/tv_bin/script/tvw_aux \
+      --replace '/lib64/ld-linux-x86-64.so.2' '${glibc.out}/lib/ld-linux-x86-64.so.2'
+    substituteInPlace $out/share/teamviewer/tv_bin/script/tvw_config \
+      --replace '/var/run/' '/run/'
+
+    wrapProgram $out/share/teamviewer/tv_bin/script/teamviewer --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libXrandr libX11 ]}"
+    wrapProgram $out/share/teamviewer/tv_bin/teamviewerd --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libXrandr libX11 ]}"
+    wrapProgram $out/share/teamviewer/tv_bin/TeamViewer --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libXrandr libX11 ]}"
+    wrapProgram $out/share/teamviewer/tv_bin/TeamViewer_Desktop --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [libXrandr libX11 libXext libXdamage libXtst libSM libXfixes ]}"
+
+    wrapQtApp $out/bin/teamviewer
+  '';
+
+  dontStrip = true;
+  preferLocalBuild = true;
+
+  meta = with lib; {
+    homepage = "http://www.teamviewer.com";
+    license = licenses.unfree;
+    description = "Desktop sharing application, providing remote support and online meetings";
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ jagajaga dasuxullebt ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/waypipe/default.nix b/nixpkgs/pkgs/applications/networking/remote/waypipe/default.nix
new file mode 100644
index 000000000000..c72c7c6da8ab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/waypipe/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchFromGitLab
+, meson, ninja, pkgconfig, scdoc
+, wayland, wayland-protocols, openssh
+, mesa, lz4, zstd, ffmpeg, libva
+}:
+
+stdenv.mkDerivation rec {
+  pname = "waypipe-unstable";
+  version = "0.6.1";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.freedesktop.org";
+    owner = "mstoeckl";
+    repo = "waypipe";
+    rev = "v${version}";
+    sha256 = "13kp5snkksli0sj5ldkgybcs1s865f0qdak2w8796xvy8dg9jda8";
+  };
+
+  postPatch = ''
+    substituteInPlace src/waypipe.c \
+      --replace "/usr/bin/ssh" "${openssh}/bin/ssh"
+  '';
+
+  nativeBuildInputs = [ meson ninja pkgconfig scdoc ];
+
+  buildInputs = [
+    wayland wayland-protocols
+    # Optional dependencies:
+    mesa lz4 zstd ffmpeg libva
+  ];
+
+  enableParallelBuilding = true;
+
+  mesonFlags = [ "-Dwerror=false" ]; # TODO: Report warnings upstream
+
+  meta = with stdenv.lib; {
+    description = "A network proxy for Wayland clients (applications)";
+    longDescription = ''
+      waypipe is a proxy for Wayland clients. It forwards Wayland messages and
+      serializes changes to shared memory buffers over a single socket. This
+      makes application forwarding similar to ssh -X feasible.
+    '';
+    homepage = "https://mstoeckl.com/notes/gsoc/blog.html";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/wayvnc/add-missing-librt.patch b/nixpkgs/pkgs/applications/networking/remote/wayvnc/add-missing-librt.patch
new file mode 100644
index 000000000000..e2d617bcc7ca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/wayvnc/add-missing-librt.patch
@@ -0,0 +1,20 @@
+diff --git a/meson.build b/meson.build
+index cc6fa03..7c2b280 100644
+--- a/meson.build
++++ b/meson.build
+@@ -24,6 +24,7 @@ add_project_arguments(c_args, language: 'c')
+ cc = meson.get_compiler('c')
+ 
+ libm = cc.find_library('m', required: false)
++librt = cc.find_library('rt', required: false)
+ 
+ pixman = dependency('pixman-1')
+ libuv = dependency('libuv')
+@@ -65,6 +66,7 @@ sources = [
+ 
+ dependencies = [
+ 	libm,
++	librt,
+ 	pixman,
+ 	libuv,
+ 	egl,
diff --git a/nixpkgs/pkgs/applications/networking/remote/wayvnc/default.nix b/nixpkgs/pkgs/applications/networking/remote/wayvnc/default.nix
new file mode 100644
index 000000000000..4ca6ae952580
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/wayvnc/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, meson, pkg-config, ninja
+, pixman, libuv, libGL, libxkbcommon, wayland, neatvnc, libdrm, libX11
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wayvnc";
+  version = "0.1.2";
+
+  src = fetchFromGitHub {
+    owner = "any1";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0aa12fkbwhzs0g2pqw1b27l33nn5dpbcvsf1z8h88kwsf9xdvb2r";
+  };
+
+  patches = [ ./add-missing-librt.patch ];
+
+  postPatch = ''
+    substituteInPlace meson.build \
+      --replace "version: '0.1.0'" "version: '${version}'"
+  '';
+
+  nativeBuildInputs = [ meson pkg-config ninja ];
+  buildInputs = [ pixman libuv libGL libxkbcommon wayland neatvnc libdrm libX11 ];
+
+  meta = with stdenv.lib; {
+    description = "A VNC server for wlroots based Wayland compositors";
+    longDescription = ''
+      This is a VNC server for wlroots based Wayland compositors. It attaches
+      to a running Wayland session, creates virtual input devices and exposes a
+      single display via the RFB protocol. The Wayland session may be a
+      headless one, so it is also possible to run wayvnc without a physical
+      display attached.
+    '';
+    inherit (src.meta) homepage;
+    changelog = "https://github.com/any1/wayvnc/releases/tag/v${version}";
+    license = licenses.isc;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/x2goclient/default.nix b/nixpkgs/pkgs/applications/networking/remote/x2goclient/default.nix
new file mode 100644
index 000000000000..047458067357
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/x2goclient/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchgit, cups, libssh, libXpm, nx-libs, openldap, openssh
+, mkDerivation, qtbase, qtsvg, qtx11extras, qttools, phonon, pkgconfig }:
+
+mkDerivation {
+  pname = "x2goclient";
+  version = "unstable-2019-07-24";
+
+  src = fetchgit {
+   url = "git://code.x2go.org/x2goclient.git";
+   rev = "704c4ab92d20070dd160824c9b66a6d1c56dcc49";
+   sha256 = "1pndp3lfzwifyxqq0gps3p1bwakw06clbk6n8viv020l4bsfmq5f";
+  };
+
+  buildInputs = [ cups libssh libXpm nx-libs openldap openssh
+                  qtbase qtsvg qtx11extras qttools phonon pkgconfig ];
+
+  postPatch = ''
+     substituteInPlace Makefile \
+       --replace "SHELL=/bin/bash" "SHELL=$SHELL" \
+       --replace "lrelease-qt4" "${qttools.dev}/bin/lrelease" \
+       --replace "qmake-qt4" "${qtbase.dev}/bin/qmake" \
+       --replace "-o root -g root" ""
+  '';
+
+  makeFlags = [ "PREFIX=$(out)" "ETCDIR=$(out)/etc" "build_client" "build_man" ];
+
+  enableParallelBuilding = true;
+
+  installTargets = [ "install_client" "install_man" ];
+
+  qtWrapperArgs = [ ''--suffix PATH : ${nx-libs}/bin:${openssh}/libexec'' ];
+
+  meta = with stdenv.lib; {
+    description = "Graphical NoMachine NX3 remote desktop client";
+    homepage = "http://x2go.org/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/x2goserver/default.nix b/nixpkgs/pkgs/applications/networking/remote/x2goserver/default.nix
new file mode 100644
index 000000000000..f69d2326217d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/x2goserver/default.nix
@@ -0,0 +1,93 @@
+{ stdenv, lib, fetchurl, perlPackages, makeWrapper, perl, which, nx-libs
+, utillinux, coreutils, glibc, gawk, gnused, gnugrep, findutils, xorg
+, nettools, iproute, bc, procps, psmisc, lsof, pwgen, openssh, sshfs, bash
+}:
+
+let
+  pname = "x2goserver";
+  version = "4.1.0.3";
+
+  src = fetchurl {
+    url = "http://code.x2go.org/releases/source/x2goserver/${pname}-${version}.tar.gz";
+    sha256 = "1l6wd708kbipib4ldprfiihqmj4895nifg0bkws4x97majislxk7";
+  };
+
+  x2go-perl = perlPackages.buildPerlPackage rec {
+    pname = "X2Go";
+    inherit version src;
+    makeFlags = [ "-f" "Makefile.perl" ];
+    patchPhase = ''
+      substituteInPlace X2Go/Config.pm --replace '/etc/x2go' '/var/lib/x2go/conf'
+      substituteInPlace X2Go/Server/DB.pm \
+        --replace '$x2go_lib_path/libx2go-server-db-sqlite3-wrapper' \
+                  '/run/wrappers/bin/x2gosqliteWrapper'
+      substituteInPlace X2Go/Server/DB/SQLite3.pm --replace "user='x2gouser'" "user='x2go'"
+    '';
+  };
+
+  perlEnv = perl.withPackages (p: with p; [
+    x2go-perl DBI DBDSQLite FileBaseDir TryTiny CaptureTiny ConfigSimple Switch
+  ]);
+
+  binaryDeps = [
+    perlEnv which nx-libs utillinux coreutils glibc.bin gawk gnused gnugrep
+    findutils nettools iproute bc procps psmisc lsof pwgen openssh sshfs
+    xorg.xauth xorg.xinit xorg.xrandr xorg.xmodmap xorg.xwininfo xorg.fontutil
+    xorg.xkbcomp xorg.setxkbmap
+  ];
+in
+stdenv.mkDerivation rec {
+  inherit pname version src;
+
+  buildInputs = [ perlEnv bash ];
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  prePatch = ''
+    patchShebangs .
+    sed -i '/Makefile.PL\|Makefile.perl/d' Makefile
+    for i in */Makefile; do
+      substituteInPlace "$i" --replace "-o root -g root " ""
+    done
+    substituteInPlace libx2go-server-db-perl/Makefile --replace "chmod 2755" "chmod 755"
+    for i in x2goserver/sbin/x2godbadmin x2goserver/bin/x2go*
+    do
+      substituteInPlace $i --replace '/etc/x2go' '/var/lib/x2go/conf'
+    done
+    substituteInPlace x2goserver/sbin/x2gocleansessions \
+      --replace '/var/run/x2goserver.pid' '/var/run/x2go/x2goserver.pid'
+    substituteInPlace x2goserver/sbin/x2godbadmin --replace 'user="x2gouser"' 'user="x2go"'
+    substituteInPlace x2goserver-xsession/etc/Xsession \
+      --replace "SSH_AGENT /bin/bash -c" "SSH_AGENT ${bash}/bin/bash -c" \
+      --replace "[ -f /etc/redhat-release ]" "[ -d /etc/nix ] || [ -f /etc/redhat-release ]"
+  '';
+
+  makeFlags = [ "PREFIX=/" "NXLIBDIR=${nx-libs}/lib/nx" ];
+
+  installFlags = [ "DESTDIR=$(out)" ];
+
+  postInstall = ''
+    mv $out/etc/x2go/x2goserver.conf{,.example}
+    mv $out/etc/x2go/x2goagent.options{,.example}
+    ln -sf ${nx-libs}/bin/nxagent $out/bin/x2goagent
+    for i in $out/sbin/x2go* $(find $out/bin -type f) \
+      $(ls $out/lib/x2go/x2go* | grep -v x2gocheckport)
+    do
+      wrapProgram $i --prefix PATH : ${lib.makeBinPath binaryDeps}:$out
+    done
+    # We're patching @INC of the setgid wrapper, because we can't mix
+    # the perl wrapper (for PERL5LIB) with security.wrappers (for setgid)
+    sed -ie "s,.\+bin/perl,#!${perl}/bin/perl -I ${perlEnv}/lib/perl5/site_perl," \
+      $out/lib/x2go/libx2go-server-db-sqlite3-wrapper.pl
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Remote desktop application, server component";
+    homepage = "http://x2go.org/";
+    platforms = stdenv.lib.platforms.linux;
+    license = licenses.gpl2;
+    maintainers = [ maintainers.averelld ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/xrdp/default.nix b/nixpkgs/pkgs/applications/networking/remote/xrdp/default.nix
new file mode 100644
index 000000000000..9941951225ca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/xrdp/default.nix
@@ -0,0 +1,105 @@
+{ stdenv, fetchFromGitHub, pkgconfig, which, perl, autoconf, automake, libtool, openssl, systemd, pam, fuse, libjpeg, libopus, nasm, xorg }:
+
+let
+  xorgxrdp = stdenv.mkDerivation rec {
+    pname = "xorgxrdp";
+    version = "0.2.9";
+
+    src = fetchFromGitHub {
+      owner = "neutrinolabs";
+      repo = "xorgxrdp";
+      rev = "v${version}";
+      sha256 = "1bhp5x47hajhinvglmc4vxxnpjvfjm6369njb3ghqfr7c5xypvzr";
+    };
+
+    nativeBuildInputs = [ pkgconfig autoconf automake which libtool nasm ];
+
+    buildInputs = [ xorg.xorgserver ];
+
+    postPatch = ''
+      # patch from Debian, allows to run xrdp daemon under unprivileged user
+      substituteInPlace module/rdpClientCon.c \
+        --replace 'g_sck_listen(dev->listen_sck);' 'g_sck_listen(dev->listen_sck); g_chmod_hex(dev->uds_data, 0x0660);'
+
+      substituteInPlace configure.ac \
+        --replace 'moduledir=`pkg-config xorg-server --variable=moduledir`' "moduledir=$out/lib/xorg/modules" \
+        --replace 'sysconfdir="/etc"' "sysconfdir=$out/etc"
+    '';
+
+    preConfigure = "./bootstrap";
+
+    configureFlags = [ "XRDP_CFLAGS=-I${xrdp.src}/common"  ];
+
+    enableParallelBuilding = true;
+  };
+
+  xrdp = stdenv.mkDerivation rec {
+    version = "0.9.9";
+    pname = "xrdp";
+
+    src = fetchFromGitHub {
+      owner = "volth";
+      repo = "xrdp";
+      rev = "refs/tags/runtime-cfg-path-${version}";  # Fixes https://github.com/neutrinolabs/xrdp/issues/609; not a patch on top of the official repo because "xorgxrdp.configureFlags" above includes "xrdp.src" which must be patched already
+      fetchSubmodules = true;
+      sha256 = "0ynj6pml4f38y8571ryhifza57wfqg4frdrjcwzw3fmryiznfm1z";
+    };
+
+    nativeBuildInputs = [ pkgconfig autoconf automake which libtool nasm ];
+
+    buildInputs = [ openssl systemd pam fuse libjpeg libopus xorg.libX11 xorg.libXfixes xorg.libXrandr ];
+
+    postPatch = ''
+      substituteInPlace sesman/xauth.c --replace "xauth -q" "${xorg.xauth}/bin/xauth -q"
+    '';
+
+    preConfigure = ''
+      (cd librfxcodec && ./bootstrap && ./configure --prefix=$out --enable-static --disable-shared)
+      ./bootstrap
+    '';
+    dontDisableStatic = true;
+    configureFlags = [ "--with-systemdsystemunitdir=/var/empty" "--enable-ipv6" "--enable-jpeg" "--enable-fuse" "--enable-rfxcodec" "--enable-opus" ];
+
+    installFlags = [ "DESTDIR=$(out)" "prefix=" ];
+
+    postInstall = ''
+      # remove generated keys (as non-determenistic) and upstart script
+      rm $out/etc/xrdp/{rsakeys.ini,key.pem,cert.pem,xrdp.sh}
+
+      cp $src/keygen/openssl.conf $out/share/xrdp/openssl.conf
+
+      substituteInPlace $out/etc/xrdp/sesman.ini --replace /etc/xrdp/pulse $out/etc/xrdp/pulse
+
+      # remove all session types except Xorg (they are not supported by this setup)
+      ${perl}/bin/perl -i -ne 'print unless /\[(X11rdp|Xvnc|console|vnc-any|sesman-any|rdp-any|neutrinordp-any)\]/ .. /^$/' $out/etc/xrdp/xrdp.ini
+
+      # remove all session types and then add Xorg
+      ${perl}/bin/perl -i -ne 'print unless /\[(X11rdp|Xvnc|Xorg)\]/ .. /^$/' $out/etc/xrdp/sesman.ini
+
+      cat >> $out/etc/xrdp/sesman.ini <<EOF
+
+      [Xorg]
+      param=${xorg.xorgserver}/bin/Xorg
+      param=-modulepath
+      param=${xorgxrdp}/lib/xorg/modules,${xorg.xorgserver}/lib/xorg/modules
+      param=-config
+      param=${xorgxrdp}/etc/X11/xrdp/xorg.conf
+      param=-noreset
+      param=-nolisten
+      param=tcp
+      param=-logfile
+      param=.xorgxrdp.%s.log
+      EOF
+    '';
+
+    enableParallelBuilding = true;
+
+    meta = with stdenv.lib; {
+      description = "An open source RDP server";
+      homepage = "https://github.com/neutrinolabs/xrdp";
+      license = licenses.asl20;
+      maintainers = [ maintainers.volth ];
+      platforms = platforms.linux;
+    };
+  };
+in xrdp
diff --git a/nixpkgs/pkgs/applications/networking/resilio-sync/default.nix b/nixpkgs/pkgs/applications/networking/resilio-sync/default.nix
new file mode 100644
index 000000000000..9b06676b0179
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/resilio-sync/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, ... }:
+
+let
+  arch = {
+    x86_64-linux = "x64";
+    i686-linux = "i386";
+  }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
+  libPath = stdenv.lib.makeLibraryPath [ stdenv.cc.libc ];
+
+in stdenv.mkDerivation rec {
+  pname = "resilio-sync";
+  version = "2.7.0";
+
+  src = fetchurl {
+    url = "https://download-cdn.resilio.com/${version}/linux-${arch}/resilio-sync_${arch}.tar.gz";
+    sha256 = {
+      x86_64-linux = "17vw4kyggmi8phm91jx1skkd7vrdhbahibv6d6zm14q87r01a56f";
+      i686-linux   = "0yvy3lif2g4jchcp5q1r5b8ndj8009pcq5js7r0kl20bmmcmzklg";
+    }.${stdenv.hostPlatform.system};
+  };
+
+  dontStrip = true; # Don't strip, otherwise patching the rpaths breaks
+  sourceRoot = ".";
+
+  installPhase = ''
+    install -D rslsync "$out/bin/rslsync"
+    patchelf \
+      --interpreter "$(< $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath ${libPath} "$out/bin/rslsync"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Automatically sync files via secure, distributed technology";
+    homepage    = "https://www.resilio.com/";
+    license     = licenses.unfreeRedistributable;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ domenkozar thoughtpolice cwoac ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/scaleft/default.nix b/nixpkgs/pkgs/applications/networking/scaleft/default.nix
new file mode 100644
index 000000000000..991780bd8206
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/scaleft/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, rpmextract, patchelf, bash }:
+
+stdenv.mkDerivation rec {
+  pname = "scaleft";
+  version = "1.41.0";
+
+  src =
+    fetchurl {
+      url = "http://pkg.scaleft.com/rpm/scaleft-client-tools-${version}-1.x86_64.rpm";
+      sha256 = "a9a2f60cc85167a1098f44b35efd755b8155f0b88da8572e96ace767e7933c4d";
+    };
+
+  nativeBuildInputs = [ patchelf rpmextract ];
+
+  libPath =
+    stdenv.lib.makeLibraryPath
+       [ stdenv.cc stdenv.cc.cc.lib ];
+
+  buildCommand = ''
+    mkdir -p $out/bin/
+    cd $out
+    rpmextract $src
+    patchelf \
+      --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+      usr/bin/sft
+    patchelf \
+      --set-rpath ${libPath} \
+      usr/bin/sft
+    ln -s $out/usr/bin/sft $out/bin/sft
+    chmod +x $out/bin/sft
+    patchShebangs $out
+  '';
+
+  meta = with stdenv.lib; {
+    description = "ScaleFT provides Zero Trust software which you can use to secure your internal servers and services";
+    homepage = "https://www.scaleft.com";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ jloyet ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/seafile-client/default.nix b/nixpkgs/pkgs/applications/networking/seafile-client/default.nix
new file mode 100644
index 000000000000..0893ee21a558
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/seafile-client/default.nix
@@ -0,0 +1,34 @@
+{ mkDerivation, lib, fetchFromGitHub, pkgconfig, cmake, qtbase, qttools
+, seafile-shared, ccnet, jansson, libsearpc
+, withShibboleth ? true, qtwebengine }:
+
+mkDerivation rec {
+  pname = "seafile-client";
+  version = "7.0.7";
+
+  src = fetchFromGitHub {
+    owner = "haiwen";
+    repo = "seafile-client";
+    rev = "v${version}";
+    sha256 = "0szdyprljyckmbrw5sypizs22j96q84ak6nyidyr2j6gf4grh9mg";
+  };
+
+  nativeBuildInputs = [ pkgconfig cmake ];
+  buildInputs = [ qtbase qttools seafile-shared jansson libsearpc ]
+    ++ lib.optional withShibboleth qtwebengine;
+
+  cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" ]
+    ++ lib.optional withShibboleth "-DBUILD_SHIBBOLETH_SUPPORT=ON";
+
+  qtWrapperArgs = [
+    "--suffix PATH : ${lib.makeBinPath [ ccnet seafile-shared ]}"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/haiwen/seafile-client";
+    description = "Desktop client for Seafile, the Next-generation Open Source Cloud Storage";
+    license = licenses.asl20;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sieve-connect/default.nix b/nixpkgs/pkgs/applications/networking/sieve-connect/default.nix
new file mode 100644
index 000000000000..c81cc78a9b55
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sieve-connect/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchFromGitHub, makeWrapper, perlPackages }:
+
+stdenv.mkDerivation rec {
+  pname = "sieve-connect";
+  version = "0.90";
+
+  src = fetchFromGitHub {
+    owner = "philpennock";
+    repo = "sieve-connect";
+    rev = "v${version}";
+    sha256 = "1ghvfa5ifa68b6imh85bkmy00r93c5f9hs6d039axb73gmma580p";
+  };
+
+  buildInputs = [ perlPackages.perl ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  preBuild = ''
+    # Fixes failing build when not building in git repo
+    mkdir .git
+    touch .git/HEAD
+    echo "${version}" > versionfile
+    echo "$(date +%Y-%m-%d)" > datefile
+  '';
+
+  buildFlags = [ "PERL5LIB=${perlPackages.makePerlPath [ perlPackages.FileSlurp ]}" "bin" "man" ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/man/man1
+    install -m 755 sieve-connect $out/bin
+    gzip -c sieve-connect.1 > $out/share/man/man1/sieve-connect.1.gz
+
+    wrapProgram $out/bin/sieve-connect \
+      --prefix PERL5LIB : "${with perlPackages; makePerlPath [
+        AuthenSASL Socket6 IOSocketInet6 IOSocketSSL NetSSLeay NetDNS
+        TermReadKey TermReadLineGnu ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A client for the MANAGESIEVE Protocol";
+    longDescription = ''
+      This is sieve-connect. A client for the ManageSieve protocol,
+      as specifed in RFC 5804. Historically, this was MANAGESIEVE as
+      implemented by timsieved in Cyrus IMAP.
+    '';
+    homepage = "https://github.com/philpennock/sieve-connect";
+    license = licenses.bsd3;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ das_j ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/siproxd/cheaders.patch b/nixpkgs/pkgs/applications/networking/siproxd/cheaders.patch
new file mode 100644
index 000000000000..69a3e3287371
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/siproxd/cheaders.patch
@@ -0,0 +1,14 @@
+diff --git a/src/dejitter.c b/src/dejitter.c
+index 1904ab3..cb3624d 100644
+--- a/src/dejitter.c
++++ b/src/dejitter.c
+@@ -22,6 +22,8 @@
+
+ #include <errno.h>
+
++#include <string.h>
++#include <sys/time.h>
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
diff --git a/nixpkgs/pkgs/applications/networking/siproxd/default.nix b/nixpkgs/pkgs/applications/networking/siproxd/default.nix
new file mode 100644
index 000000000000..e664ee20c237
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/siproxd/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, libosip }:
+
+stdenv.mkDerivation rec {
+  name = "siproxd-0.8.2";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/siproxd/${name}.tar.gz";
+    sha256 = "1l6cyxxhra825jiiw9npa7jrbfgbyfpk4966cqkrw66cn28y8v2j";
+  };
+
+  patches = [ ./cheaders.patch ];
+
+  buildInputs = [ libosip ];
+
+  meta = {
+    homepage = "http://siproxd.sourceforge.net/";
+    description = "A masquerading SIP Proxy Server";
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.platforms; linux;
+    license = stdenv.lib.licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sniffers/etherape/default.nix b/nixpkgs/pkgs/applications/networking/sniffers/etherape/default.nix
new file mode 100644
index 000000000000..4cc4487c90ad
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sniffers/etherape/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pkgconfig, libtool, gtk3, libpcap, goocanvas2,
+popt, itstool, libxml2 }:
+
+stdenv.mkDerivation rec {
+  name = "etherape-0.9.19";
+  src = fetchurl {
+    url = "mirror://sourceforge/etherape/${name}.tar.gz";
+    sha256 = "0w63vg2q6if3wvy2md66in8b6cdw9q40hny5xy6yrxky58l4kmg7";
+  };
+
+  nativeBuildInputs = [ itstool pkgconfig (stdenv.lib.getBin libxml2) ];
+  buildInputs = [
+    libtool gtk3 libpcap goocanvas2 popt
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://etherape.sourceforge.net/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = with platforms; linux;
+    maintainers = with maintainers; [ symphorien ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sniffers/ettercap/default.nix b/nixpkgs/pkgs/applications/networking/sniffers/ettercap/default.nix
new file mode 100644
index 000000000000..4af8e526cd2c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sniffers/ettercap/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchFromGitHub, cmake, libpcap, libnet, zlib, curl, pcre
+, openssl, ncurses, glib, gtk3, atk, pango, flex, bison, geoip, harfbuzz
+, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "ettercap";
+  version = "0.8.3";
+
+  src = fetchFromGitHub {
+    owner = "Ettercap";
+    repo = "ettercap";
+    rev = "v${version}";
+    sha256 = "0m40bmbrv9a8qlg54z3b5f8r541gl9vah5hm0bbqcgyyljpg39bz";
+  };
+
+  strictDeps = true;
+  nativeBuildInputs = [ cmake flex bison pkgconfig ];
+  buildInputs = [
+    libpcap libnet zlib curl pcre openssl ncurses
+    glib gtk3 atk pango geoip harfbuzz
+  ];
+
+  preConfigure = ''
+    substituteInPlace CMakeLists.txt --replace /etc \$\{INSTALL_PREFIX\}/etc \
+                                     --replace /usr \$\{INSTALL_PREFIX\}
+  '';
+
+  cmakeFlags = [
+    "-DBUNDLED_LIBS=Off"
+    "-DGTK3_GLIBCONFIG_INCLUDE_DIR=${glib.out}/lib/glib-2.0/include"
+  ];
+
+  # TODO: Remove after the next release (0.8.4 should work without this):
+  NIX_CFLAGS_COMPILE = [ "-I${harfbuzz.dev}/include/harfbuzz" ];
+
+  meta = with stdenv.lib; {
+    description = "Comprehensive suite for man in the middle attacks";
+    longDescription = ''
+      Ettercap is a comprehensive suite for man in the middle attacks. It
+      features sniffing of live connections, content filtering on the fly and
+      many other interesting tricks. It supports active and passive dissection
+      of many protocols and includes many features for network and host
+      analysis.
+    '';
+    homepage = "https://www.ettercap-project.org/";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ pSub ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sniffers/kismet/default.nix b/nixpkgs/pkgs/applications/networking/sniffers/kismet/default.nix
new file mode 100644
index 000000000000..93ccf254a3a4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sniffers/kismet/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchurl, pkgconfig, libpcap, pcre, libnl, zlib, libmicrohttpd
+, sqlite, protobuf, protobufc, libusb1, libcap, binutils, elfutils
+, withNetworkManager ? false, glib, networkmanager
+, withPython ? false, python3
+, withSensors ? false, lm_sensors}:
+
+# couldn't get python modules to build correctly,
+# waiting for some other volunteer to fix it
+assert !withPython;
+
+stdenv.mkDerivation rec {
+  pname = "kismet";
+  version = "2020-04-R2";
+
+  src = fetchurl {
+    url = "https://www.kismetwireless.net/code/${pname}-${version}.tar.xz";
+    sha256 = "0hxmaln0y6bk9m1rshr4swmg0sqy3ic693vfk8haj7f5gnph96cm";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [
+    libpcap pcre libmicrohttpd libnl zlib sqlite protobuf protobufc
+    libusb1 libcap binutils elfutils
+  ] ++ stdenv.lib.optionals withNetworkManager [ networkmanager glib ]
+    ++ stdenv.lib.optional withSensors lm_sensors
+    ++ stdenv.lib.optional withPython (python3.withPackages(ps: [ ps.setuptools ps.protobuf
+                                                                  ps.numpy ps.pyserial ]));
+
+  configureFlags = []
+    ++ stdenv.lib.optional (!withNetworkManager) "--disable-libnm"
+    ++ stdenv.lib.optional (!withPython) "--disable-python-tools"
+    ++ stdenv.lib.optional (!withSensors) "--disable-lmsensors";
+
+  postConfigure = ''
+    sed -e 's/-o $(INSTUSR)//' \
+        -e 's/-g $(INSTGRP)//' \
+        -e 's/-g $(MANGRP)//' \
+        -e 's/-g $(SUIDGROUP)//' \
+        -i Makefile
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Wireless network sniffer";
+    homepage = "https://www.kismetwireless.net/";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sniffers/sngrep/default.nix b/nixpkgs/pkgs/applications/networking/sniffers/sngrep/default.nix
new file mode 100644
index 000000000000..b48edd69837a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sniffers/sngrep/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, autoconf, automake, fetchFromGitHub, libpcap, ncurses, openssl, pcre }:
+
+stdenv.mkDerivation rec {
+  pname = "sngrep";
+  version = "1.4.7";
+
+  src = fetchFromGitHub {
+    owner = "irontec";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1dx5l48m4634y0zi6wjky412g80lfxqq1nphv7pi1kwvm1k5m5ri";
+  };
+
+  buildInputs = [
+    libpcap ncurses pcre openssl ncurses
+  ];
+
+  nativeBuildInputs = [
+    autoconf automake
+  ];
+
+  configureFlags = [
+    "--with-pcre"
+    "--enable-unicode"
+    "--enable-ipv6"
+    "--enable-eep"
+  ];
+
+  preConfigure = "./bootstrap.sh";
+
+  meta = with stdenv.lib; {
+    description = "A tool for displaying SIP calls message flows from terminal";
+    homepage = "https://github.com/irontec/sngrep";
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ jorise ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sniffers/whsniff/default.nix b/nixpkgs/pkgs/applications/networking/sniffers/whsniff/default.nix
new file mode 100644
index 000000000000..d2e5803d58a1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sniffers/whsniff/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, libusb1 }:
+
+stdenv.mkDerivation rec {
+  pname = "whsniff";
+  version = "1.3";
+
+  src = fetchFromGitHub {
+    owner = "homewsn";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "000l5vk9c0332m35lndk8892ivdr445lgg25hmq1lajn24cash5w";
+  };
+
+  buildInputs = [ libusb1 ];
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/homewsn/whsniff";
+    description = "Packet sniffer for 802.15.4 wireless networks";
+    maintainers = with maintainers; [ snicket2100 ];
+    platforms = platforms.linux;
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sniffers/wireshark/default.nix b/nixpkgs/pkgs/applications/networking/sniffers/wireshark/default.nix
new file mode 100644
index 000000000000..d025222b0100
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sniffers/wireshark/default.nix
@@ -0,0 +1,122 @@
+{ stdenv, fetchurl, pkgconfig, pcre, perl, flex, bison, gettext, libpcap, libnl, c-ares
+, gnutls, libgcrypt, libgpgerror, geoip, openssl, lua5, python3, libcap, glib
+, libssh, nghttp2, zlib, cmake, fetchpatch, makeWrapper
+, withQt ? true, qt5 ? null
+, ApplicationServices, SystemConfiguration, gmp
+}:
+
+assert withQt  -> qt5  != null;
+
+with stdenv.lib;
+
+let
+  version = "3.2.4";
+  variant = if withQt then "qt" else "cli";
+  pcap = libpcap.override { withBluez = stdenv.isLinux; };
+
+in stdenv.mkDerivation {
+  pname = "wireshark-${variant}";
+  inherit version;
+  outputs = [ "out" "dev" ];
+
+  src = fetchurl {
+    url = "https://www.wireshark.org/download/src/all-versions/wireshark-${version}.tar.xz";
+    sha256 = "1amqgn94g6h6cfnsccm2zb4c73pfv1qmzi1i6h1hnbcyhhg4czfi";
+  };
+
+  cmakeFlags = [
+    "-DBUILD_wireshark=${if withQt then "ON" else "OFF"}"
+    "-DENABLE_APPLICATION_BUNDLE=${if withQt && stdenv.isDarwin then "ON" else "OFF"}"
+    # Fix `extcap` and `plugins` paths. See https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=16444
+    "-DCMAKE_INSTALL_LIBDIR=lib"
+  ];
+
+  # Avoid referencing -dev paths because of debug assertions.
+  NIX_CFLAGS_COMPILE = [ "-DQT_NO_DEBUG" ];
+
+  nativeBuildInputs = [
+    bison cmake flex pkgconfig
+  ] ++ optional withQt qt5.wrapQtAppsHook;
+
+  buildInputs = [
+    gettext pcre perl pcap lua5 libssh nghttp2 openssl libgcrypt
+    libgpgerror gnutls geoip c-ares python3 glib zlib makeWrapper
+  ] ++ optionals withQt  (with qt5; [ qtbase qtmultimedia qtsvg qttools ])
+    ++ optionals stdenv.isLinux  [ libcap libnl ]
+    ++ optionals stdenv.isDarwin [ SystemConfiguration ApplicationServices gmp ]
+    ++ optionals (withQt && stdenv.isDarwin) (with qt5; [ qtmacextras ]);
+
+  patches = [ ./wireshark-lookup-dumpcap-in-path.patch ]
+    # https://code.wireshark.org/review/#/c/23728/
+    ++ stdenv.lib.optional stdenv.hostPlatform.isMusl (fetchpatch {
+      name = "fix-timeout.patch";
+      url = "https://code.wireshark.org/review/gitweb?p=wireshark.git;a=commitdiff_plain;h=8b5b843fcbc3e03e0fc45f3caf8cf5fc477e8613;hp=94af9724d140fd132896b650d10c4d060788e4f0";
+      sha256 = "1g2dm7lwsnanwp68b9xr9swspx7hfj4v3z44sz3yrfmynygk8zlv";
+    });
+
+  postPatch = ''
+    sed -i -e '1i cmake_policy(SET CMP0025 NEW)' CMakeLists.txt
+  '';
+
+  preBuild = ''
+    export LD_LIBRARY_PATH="$PWD/run"
+  '';
+
+  postInstall = ''
+    # to remove "cycle detected in the references"
+    mkdir -p $dev/lib/wireshark
+    mv $out/lib/wireshark/cmake $dev/lib/wireshark
+  '' + (if stdenv.isDarwin && withQt then ''
+    mkdir -p $out/Applications
+    mv $out/bin/Wireshark.app $out/Applications/Wireshark.app
+
+    for f in $(find $out/Applications/Wireshark.app/Contents/PlugIns -name "*.so"); do
+        for dylib in $(otool -L $f | awk '/^\t*lib/ {print $1}'); do
+            install_name_tool -change "$dylib" "$out/lib/$dylib" "$f"
+        done
+    done
+
+    wrapQtApp $out/Applications/Wireshark.app/Contents/MacOS/Wireshark
+  '' else optionalString withQt ''
+    install -Dm644 -t $out/share/applications ../wireshark.desktop
+
+    substituteInPlace $out/share/applications/*.desktop \
+        --replace "Exec=wireshark" "Exec=$out/bin/wireshark"
+
+    install -Dm644 ../image/wsicon.svg $out/share/icons/wireshark.svg
+    mkdir $dev/include/{epan/{wmem,ftypes,dfilter},wsutil,wiretap} -pv
+
+    cp config.h $dev/include/
+    cp ../ws_*.h $dev/include
+    cp ../epan/*.h $dev/include/epan/
+    cp ../epan/wmem/*.h $dev/include/epan/wmem/
+    cp ../epan/ftypes/*.h $dev/include/epan/ftypes/
+    cp ../epan/dfilter/*.h $dev/include/epan/dfilter/
+    cp ../wsutil/*.h $dev/include/wsutil/
+    cp ../wiretap/*.h $dev/include/wiretap
+  '');
+
+  enableParallelBuilding = true;
+
+  dontFixCmake = true;
+
+  shellHook = ''
+    # to be able to run the resulting binary
+    export WIRESHARK_RUN_FROM_BUILD_DIRECTORY=1
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.wireshark.org/";
+    description = "Powerful network protocol analyzer";
+    license = licenses.gpl2;
+
+    longDescription = ''
+      Wireshark (formerly known as "Ethereal") is a powerful network
+      protocol analyzer developed by an international team of networking
+      experts. It runs on UNIX, macOS and Windows.
+    '';
+
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = with maintainers; [ bjornfor fpletz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sniffers/wireshark/wireshark-lookup-dumpcap-in-path.patch b/nixpkgs/pkgs/applications/networking/sniffers/wireshark/wireshark-lookup-dumpcap-in-path.patch
new file mode 100644
index 000000000000..549da5436e60
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sniffers/wireshark/wireshark-lookup-dumpcap-in-path.patch
@@ -0,0 +1,63 @@
+From 5bef9deeff8a2e4401de0f45c9701cd6f98f29d8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= <bjorn.forsman@gmail.com>
+Date: Thu, 26 Nov 2015 21:03:35 +0100
+Subject: [PATCH] Lookup dumpcap in PATH
+
+NixOS patch: Look for dumpcap in PATH first, because there may be a
+dumpcap wrapper that we want to use instead of the default
+non-setuid dumpcap binary.
+
+Also change execv() to execvp() because we've set argv[0] to "dumpcap"
+and have to enable PATH lookup. Wireshark is not a setuid program, so
+looking in PATH is not a security issue.
+
+Signed-off-by: Franz Pletz <fpletz@fnordicwalking.de>
+---
+ capchild/capture_sync.c | 17 ++++++++++++++---
+ 1 file changed, 14 insertions(+), 3 deletions(-)
+
+diff --git a/capchild/capture_sync.c b/capchild/capture_sync.c
+index 970688e..49914d5 100644
+--- a/capchild/capture_sync.c
++++ b/capchild/capture_sync.c
+@@ -332,7 +332,18 @@ init_pipe_args(int *argc) {
+ #ifdef _WIN32
+     exename = g_strdup_printf("%s\\dumpcap.exe", progfile_dir);
+ #else
+-    exename = g_strdup_printf("%s/dumpcap", progfile_dir);
++    /*
++     * NixOS patch: Look for dumpcap in PATH first, because there may be a
++     * dumpcap wrapper that we want to use instead of the default
++     * non-setuid dumpcap binary.
++     */
++    if (system("command -v dumpcap >/dev/null") == 0) {
++        /* Found working dumpcap */
++        exename = g_strdup_printf("dumpcap");
++    } else {
++        /* take Wireshark's absolute program path and replace "Wireshark" with "dumpcap" */
++        exename = g_strdup_printf("%s/dumpcap", progfile_dir);
++    }
+ #endif
+ 
+     /* Make that the first argument in the argument list (argv[0]). */
+@@ -729,7 +740,7 @@ sync_pipe_start(capture_options *capture_opts, capture_session *cap_session, voi
+          */
+         dup2(sync_pipe[PIPE_WRITE], 2);
+         ws_close(sync_pipe[PIPE_READ]);
+-        execv(argv[0], argv);
++        execvp(argv[0], argv);
+         g_snprintf(errmsg, sizeof errmsg, "Couldn't run %s in child process: %s",
+                    argv[0], g_strerror(errno));
+         sync_pipe_errmsg_to_parent(2, errmsg, "");
+@@ -997,7 +1008,7 @@ sync_pipe_open_command(char** argv, int *data_read_fd,
+         dup2(sync_pipe[PIPE_WRITE], 2);
+         ws_close(sync_pipe[PIPE_READ]);
+         ws_close(sync_pipe[PIPE_WRITE]);
+-        execv(argv[0], argv);
++        execvp(argv[0], argv);
+         g_snprintf(errmsg, sizeof errmsg, "Couldn't run %s in child process: %s",
+                    argv[0], g_strerror(errno));
+         sync_pipe_errmsg_to_parent(2, errmsg, "");
+-- 
+2.6.3
+
diff --git a/nixpkgs/pkgs/applications/networking/sniproxy/default.nix b/nixpkgs/pkgs/applications/networking/sniproxy/default.nix
new file mode 100644
index 000000000000..301802d322bd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sniproxy/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, gettext, libev, pcre, pkgconfig, udns }:
+
+stdenv.mkDerivation rec {
+  pname = "sniproxy";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "dlundquist";
+    repo = "sniproxy";
+    rev = version;
+    sha256 = "0isgl2lyq8vz5kkxpgyh1sgjlb6sqqybakr64w2mfh29k5ls8xzm";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ gettext libev pcre udns ];
+
+  meta = with stdenv.lib; {
+    inherit (src.meta) homepage;
+    description = "Transparent TLS and HTTP layer 4 proxy with SNI support";
+    license = licenses.bsd2;
+    maintainers = [ maintainers.womfoo ];
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/soapui/default.nix b/nixpkgs/pkgs/applications/networking/soapui/default.nix
new file mode 100644
index 000000000000..32a6423243e6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/soapui/default.nix
@@ -0,0 +1,51 @@
+{ fetchurl, stdenv, writeText, jdk, maven, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "soapui";
+  version = "5.5.0";
+
+  src = fetchurl {
+    url = "https://s3.amazonaws.com/downloads.eviware/soapuios/${version}/SoapUI-${version}-linux-bin.tar.gz";
+    sha256 = "0v1wiy61jgvlxjk8qdvcnyn1gh2ysxf266zln7r4wpzwd5gc3dpw";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ jdk maven ];
+
+  installPhase = ''
+    mkdir -p $out/share/java
+    cp -R bin lib $out/share/java
+
+    makeWrapper $out/share/java/bin/soapui.sh $out/bin/soapui --set SOAPUI_HOME $out/share/java
+  '';
+
+  patches = [
+    (writeText "soapui-${version}.patch" ''
+      --- a/bin/soapui.sh
+      +++ b/bin/soapui.sh
+      @@ -34,7 +34,7 @@ SOAPUI_CLASSPATH=$SOAPUI_HOME/bin/soapui-${version}.jar:$SOAPUI_HOME/lib/*
+       export SOAPUI_CLASSPATH
+
+       JAVA_OPTS="-Xms128m -Xmx1024m -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -Dsoapui.properties=soapui.properties -Dsoapui.home=$SOAPUI_HOME/bin -splash:SoapUI-Spashscreen.png"
+      -JFXRTPATH=`java -cp $SOAPUI_CLASSPATH com.eviware.soapui.tools.JfxrtLocator`
+      +JFXRTPATH=`${jdk}/bin/java -cp $SOAPUI_CLASSPATH com.eviware.soapui.tools.JfxrtLocator`
+       SOAPUI_CLASSPATH=$JFXRTPATH:$SOAPUI_CLASSPATH
+
+       if $darwin
+      @@ -69,4 +69,4 @@ echo = SOAPUI_HOME = $SOAPUI_HOME
+       echo =
+       echo ================================
+
+      -java $JAVA_OPTS -cp $SOAPUI_CLASSPATH com.eviware.soapui.SoapUI "$@"
+      +${jdk}/bin/java $JAVA_OPTS -cp $SOAPUI_CLASSPATH com.eviware.soapui.SoapUI "$@"
+    '')
+  ];
+
+  meta = with stdenv.lib; {
+    description = "The Most Advanced REST & SOAP Testing Tool in the World";
+    homepage = "https://www.soapui.org/";
+    license = "SoapUI End User License Agreement";
+    maintainers = with maintainers; [ gerschtli ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/soulseek/nicotine-plus/default.nix b/nixpkgs/pkgs/applications/networking/soulseek/nicotine-plus/default.nix
new file mode 100644
index 000000000000..d673917af316
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/soulseek/nicotine-plus/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitHub, python27Packages, geoip }:
+
+with stdenv.lib;
+
+python27Packages.buildPythonApplication {
+  pname = "nicotine-plus";
+  version = "1.4.1";
+
+  src = fetchFromGitHub {
+    owner = "Nicotine-Plus";
+    repo = "nicotine-plus";
+    rev = "4e057d64184885c63488d4213ade3233bd33e67b";
+    sha256 = "11j2qm67sszfqq730czsr2zmpgkghsb50556ax1vlpm7rw3gm33c";
+  };
+
+  propagatedBuildInputs = with python27Packages; [
+    pygtk
+    miniupnpc
+    mutagen
+    notify
+    (GeoIP.override { inherit geoip; })
+  ];
+
+  # Insert real docs directory.
+  # os.getcwd() is not needed
+  postPatch = ''
+    substituteInPlace ./pynicotine/gtkgui/frame.py \
+      --replace "paths.append(os.getcwd())" "paths.append('"$out"/doc')"
+  '';
+
+  postFixup = ''
+    mkdir -p $out/doc/
+    mv ./doc/NicotinePlusGuide $out/doc/
+    mv $out/bin/nicotine $out/bin/nicotine-plus
+  '';
+
+  meta = {
+    description = "A graphical client for the SoulSeek peer-to-peer system";
+    homepage = "https://www.nicotine-plus.org";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ klntsky ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/spideroak/default.nix b/nixpkgs/pkgs/applications/networking/spideroak/default.nix
new file mode 100644
index 000000000000..90d8ea553318
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/spideroak/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchurl, makeWrapper, patchelf
+, fontconfig, freetype, glib, libICE, libSM
+, libX11, libXext, libXrender, zlib
+}:
+
+let
+  sha256 = "6d6ca2b383bcc81af1217c696eb77864a2b6db7428f4b5bde5b5913ce705eec5";
+
+  ldpath = stdenv.lib.makeLibraryPath [
+    fontconfig freetype glib libICE libSM
+    libX11 libXext libXrender zlib
+  ];
+
+  version = "7.5.0";
+
+in stdenv.mkDerivation {
+  pname = "spideroak";
+  inherit version;
+
+  src = fetchurl {
+    name = "SpiderOakONE-${version}-slack_tar_x64.tgz";
+    url = "https://spideroak.com/release/spideroak/slack_tar_x64";
+    inherit sha256;
+  };
+
+  sourceRoot = ".";
+
+  unpackCmd = "tar -xzf $curSrc";
+
+  installPhase = ''
+    mkdir "$out"
+    cp -r "./"* "$out"
+    mkdir "$out/bin"
+    rm "$out/usr/bin/SpiderOakONE"
+    rmdir $out/usr/bin || true
+    mv $out/usr/share $out/
+
+    rm -f $out/opt/SpiderOakONE/lib/libz*
+
+    patchelf --set-interpreter ${stdenv.glibc.out}/lib/ld-linux-x86-64.so.2 \
+      "$out/opt/SpiderOakONE/lib/SpiderOakONE"
+
+    RPATH=$out/opt/SpiderOakONE/lib:${ldpath}
+    makeWrapper $out/opt/SpiderOakONE/lib/SpiderOakONE $out/bin/spideroak --set LD_LIBRARY_PATH $RPATH \
+      --set QT_PLUGIN_PATH $out/opt/SpiderOakONE/lib/plugins/ \
+      --set SpiderOak_EXEC_SCRIPT $out/bin/spideroak
+
+    sed -i 's/^Exec=.*/Exec=spideroak/' $out/share/applications/SpiderOakONE.desktop
+  '';
+
+  nativeBuildInputs = [ patchelf makeWrapper ];
+
+  meta = {
+    homepage = "https://spideroak.com";
+    description = "Secure online backup and sychronization";
+    license = stdenv.lib.licenses.unfree;
+    maintainers = with stdenv.lib.maintainers; [ amorsillo ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ssb-patchwork/default.nix b/nixpkgs/pkgs/applications/networking/ssb-patchwork/default.nix
new file mode 100644
index 000000000000..db33e7e6bb21
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ssb-patchwork/default.nix
@@ -0,0 +1,53 @@
+{ appimageTools, symlinkJoin, lib, fetchurl, makeDesktopItem }:
+
+let
+  pname = "ssb-patchwork";
+  version = "3.17.7";
+  name = "Patchwork-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/ssbc/patchwork/releases/download/v${version}/${name}.AppImage";
+    sha256 = "1xj2aqy7daf4r3ypch6hkvk1s0jnx70qwh0p63c7rzm16vh8kb2f";
+  };
+
+  binary = appimageTools.wrapType2 {
+    name = pname;
+    inherit src;
+  };
+  # we only use this to extract the icon
+  appimage-contents = appimageTools.extractType2 {
+    inherit name src;
+  };
+
+  desktopItem = makeDesktopItem {
+    name = "ssb-patchwork";
+    exec = "${binary}/bin/ssb-patchwork";
+    icon = "ssb-patchwork.png";
+    comment = "Client for the decentralized social network Secure Scuttlebutt";
+    desktopName = "Patchwork";
+    genericName = "Patchwork";
+    categories = "Network;";
+  };
+
+in
+  symlinkJoin {
+    inherit name;
+    paths = [ binary ];
+
+    postBuild = ''
+      mkdir -p $out/share/pixmaps/ $out/share/applications
+      cp ${appimage-contents}/ssb-patchwork.png $out/share/pixmaps
+      cp ${desktopItem}/share/applications/* $out/share/applications/
+    '';
+
+  meta = with lib; {
+    description = "A decentralized messaging and sharing app built on top of Secure Scuttlebutt (SSB)";
+    longDescription = ''
+      sea-slang for gossip - a scuttlebutt is basically a watercooler on a ship.
+    '';
+    homepage = "https://www.scuttlebutt.nz/";
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ asymmetric ninjatrappeur thedavidmeister ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/station/default.nix b/nixpkgs/pkgs/applications/networking/station/default.nix
new file mode 100644
index 000000000000..b0e53a054d28
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/station/default.nix
@@ -0,0 +1,42 @@
+{ appimageTools, fetchurl, gsettings-desktop-schemas, gtk3, lib }:
+
+let
+  pname = "station";
+  version = "1.52.2";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/getstation/desktop-app-releases/releases/download/${version}/Station-${version}-x86_64.AppImage";
+    sha256 = "0lhiwvnf94is9klvzrqv2wri53gj8nms9lg2678bs4y58pvjxwid";
+  };
+
+  appimageContents = appimageTools.extractType2 {
+    inherit name src;
+  };
+in appimageTools.wrapType2 rec {
+  inherit name src;
+
+  profile = ''
+    export LC_ALL=C.UTF-8
+    export XDG_DATA_DIRS=${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS
+  '';
+
+  multiPkgs = null;
+  extraPkgs = appimageTools.defaultFhsEnvArgs.multiPkgs;
+  extraInstallCommands = ''
+    mv $out/bin/{${name},${pname}}
+    install -m 444 -D ${appimageContents}/browserx.desktop $out/share/applications/browserx.desktop
+    install -m 444 -D ${appimageContents}/usr/share/icons/hicolor/512x512/apps/browserx.png \
+      $out/share/icons/hicolor/512x512/apps/browserx.png
+    substituteInPlace $out/share/applications/browserx.desktop \
+      --replace 'Exec=AppRun' 'Exec=${pname}'
+  '';
+
+  meta = with lib; {
+    description = "A single place for all of your web applications";
+    homepage = "https://getstation.com";
+    license = licenses.mit;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ lattfein ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/super-productivity/default.nix b/nixpkgs/pkgs/applications/networking/super-productivity/default.nix
new file mode 100644
index 000000000000..7a70375e42c9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/super-productivity/default.nix
@@ -0,0 +1,106 @@
+{ stdenv, fetchurl, dpkg, makeWrapper
+, alsaLib, atk, cairo, cups, curl, dbus, expat, fontconfig, freetype, glib
+, gnome2, gtk3, gdk-pixbuf, libnotify, libxcb, nspr, nss, pango
+, systemd, xorg, xprintidle-ng }:
+
+let
+
+  version = "1.10.45";
+
+  rpath = stdenv.lib.makeLibraryPath [
+    alsaLib
+    atk
+    cairo
+    cups
+    curl
+    dbus
+    expat
+    fontconfig
+    freetype
+    glib
+    gnome2.GConf
+    gdk-pixbuf
+    gtk3
+    pango
+    libnotify
+    libxcb
+    nspr
+    nss
+    stdenv.cc.cc
+    systemd
+
+    xorg.libxkbfile
+    xorg.libX11
+    xorg.libXcomposite
+    xorg.libXcursor
+    xorg.libXdamage
+    xorg.libXext
+    xorg.libXfixes
+    xorg.libXi
+    xorg.libXrandr
+    xorg.libXrender
+    xorg.libXtst
+    xorg.libXScrnSaver
+  ] + ":${stdenv.cc.cc.lib}/lib64";
+
+  src =
+    if stdenv.hostPlatform.system == "x86_64-linux" then
+      fetchurl {
+        url = "https://github.com/johannesjo/super-productivity/releases/download/v${version}/superProductivity_${version}_amd64.deb";
+        sha256 = "0jfi0lfijnhij9jvkhxgyvq8m1jzaym8n1c7707fv3hjh1h0vxn1";
+      }
+    else
+      throw "super-productivity is not supported on ${stdenv.hostPlatform.system}";
+
+in stdenv.mkDerivation {
+  pname = "super-productivity";
+  inherit version;
+
+  inherit src;
+
+  buildInputs = [
+    dpkg
+    gtk3  # needed for GSETTINGS_SCHEMAS_PATH
+  ];
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  unpackPhase = "dpkg -x $src .";
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out
+
+    cp -R usr/share $out/share
+    cp -R opt $out/libexec
+
+    # Otherwise it looks "suspicious"
+    chmod -R g-w $out
+
+    # set linker and rpath
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$out/libexec/superProductivity/superproductivity"
+    patchelf --set-rpath ${rpath}:$out/libexec/superProductivity "$out/libexec/superProductivity/superproductivity"
+
+    # wrapper for xdg_data_dirs and xprintidle path
+    makeWrapper $out/libexec/superProductivity/superproductivity $out/bin/superproductivity \
+      --prefix XDG_DATA_DIRS : $GSETTINGS_SCHEMAS_PATH \
+      --prefix PATH : "${xprintidle-ng}/bin"
+
+    # Fix the desktop link
+    substituteInPlace $out/share/applications/superproductivity.desktop \
+      --replace /opt/superProductivity/ $out/bin/
+
+    runHook postInstall
+  '';
+
+  dontStrip = true;
+
+  meta = with stdenv.lib; {
+    description = "To Do List / Time Tracker with Jira Integration.";
+    homepage = "https://super-productivity.com";
+    license = licenses.mit;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ offline ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/acd_cli/default.nix b/nixpkgs/pkgs/applications/networking/sync/acd_cli/default.nix
new file mode 100644
index 000000000000..c95647c78405
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/acd_cli/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub, buildPythonApplication, fuse
+, appdirs, colorama, dateutil, requests, requests_toolbelt
+, fusepy, sqlalchemy }:
+
+buildPythonApplication rec {
+  pname = "acd_cli";
+  version = "0.3.2";
+
+  doCheck = false;
+
+  src = fetchFromGitHub {
+    owner = "yadayada";
+    repo = pname;
+    rev = version;
+    sha256 = "0a0fr632l24a3jmgla3b1vcm50ayfa9hdbp677ch1chwj5dq4zfp";
+  };
+
+  propagatedBuildInputs = [ appdirs colorama dateutil fusepy requests
+                            requests_toolbelt sqlalchemy ];
+
+  makeWrapperArgs = [ "--prefix LIBFUSE_PATH : ${fuse}/lib/libfuse.so" ];
+
+  postFixup = ''
+    function lnOverBin() {
+      rm -f $out/bin/{$2,.$2-wrapped}
+      ln -s $out/bin/$1 $out/bin/$2
+    }
+    lnOverBin acd_cli.py acd-cli
+    lnOverBin acd_cli.py acd_cli
+    lnOverBin acd_cli.py acdcli
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A command line interface and FUSE filesystem for Amazon Cloud Drive";
+    homepage = "https://github.com/yadayada/acd_cli";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ edwtjo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/backintime/common.nix b/nixpkgs/pkgs/applications/networking/sync/backintime/common.nix
new file mode 100644
index 000000000000..6244cd661d0a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/backintime/common.nix
@@ -0,0 +1,46 @@
+{stdenv, fetchFromGitHub, makeWrapper, gettext, python3Packages, rsync, cron, openssh, sshfs-fuse, encfs }:
+
+let
+  inherit (python3Packages) python dbus-python keyring;
+in stdenv.mkDerivation rec {
+  version = "1.1.24";
+
+  pname = "backintime-common";
+
+  src = fetchFromGitHub {
+    owner = "bit-team";
+    repo = "backintime";
+    rev = "v${version}";
+    sha256 = "0g6gabnr60ns8854hijdddbanks7319q4n3fj5l6rc4xsq0qck18";
+  };
+
+  buildInputs = [ makeWrapper gettext python dbus-python keyring openssh cron rsync sshfs-fuse encfs ];
+
+  installFlags = [ "DEST=$(out)" ];
+
+  preConfigure = "cd common";
+
+  dontAddPrefix = true;
+
+  preFixup =
+    ''
+    substituteInPlace "$out/bin/backintime" \
+      --replace "=\"/usr/share" "=\"$prefix/share"
+    wrapProgram "$out/bin/backintime" \
+      --prefix PYTHONPATH : "$PYTHONPATH" \
+      --prefix PATH : "$prefix/bin:$PATH"
+    '';
+
+  meta = {
+    homepage = "https://github.com/bit-team/backintime";
+    description = "Simple backup tool for Linux";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ ];
+    platforms = stdenv.lib.platforms.all;
+    longDescription = ''
+      Back In Time is a simple backup tool (on top of rsync) for Linux
+      inspired from “flyback project” and “TimeVault”. The backup is
+      done by taking snapshots of a specified set of directories.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/backintime/qt4.nix b/nixpkgs/pkgs/applications/networking/sync/backintime/qt4.nix
new file mode 100644
index 000000000000..b72ddc8bae63
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/backintime/qt4.nix
@@ -0,0 +1,28 @@
+{stdenv, makeWrapper, gettext, backintime-common, python3, python3Packages }:
+
+stdenv.mkDerivation {
+  inherit (backintime-common) version src installFlags;
+
+  pname = "backintime-qt4";
+
+  buildInputs = [ makeWrapper gettext python3 python3Packages.pyqt4 backintime-common python3 ];
+
+  preConfigure = "cd qt4";
+  configureFlags = [  ];
+
+  dontAddPrefix = true;
+
+  preFixup =
+      ''
+      substituteInPlace "$out/bin/backintime-qt4" \
+        --replace "=\"/usr/share" "=\"$prefix/share"
+
+      wrapProgram "$out/bin/backintime-qt4" \
+        --prefix PYTHONPATH : "${backintime-common}/share/backintime/common:$PYTHONPATH" \
+        --prefix PATH : "${backintime-common}/bin:$PATH"
+    '';
+
+  meta = with stdenv.lib; {
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/casync/default.nix b/nixpkgs/pkgs/applications/networking/sync/casync/default.nix
new file mode 100644
index 000000000000..461de492ae2d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/casync/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchFromGitHub
+, meson, ninja, pkgconfig, python3, sphinx
+, acl, curl, fuse, libselinux, udev, xz, zstd
+, fuseSupport ? true
+, selinuxSupport ? true
+, udevSupport ? true
+, glibcLocales, rsync
+}:
+
+stdenv.mkDerivation {
+  pname = "casync";
+  version = "2-219-ga8f6c84";
+
+  src = fetchFromGitHub {
+    owner  = "systemd";
+    repo   = "casync";
+    rev    = "a8f6c841ccfe59ca8c68aad64df170b64042dce8";
+    sha256 = "1i3c9wmpabpmx2wfbcyabmwfa66vz92iq5dlbm89v5mvgavz7bws";
+  };
+
+  buildInputs = [ acl curl xz zstd ]
+                ++ stdenv.lib.optionals (fuseSupport) [ fuse ]
+                ++ stdenv.lib.optionals (selinuxSupport) [ libselinux ]
+                ++ stdenv.lib.optionals (udevSupport) [ udev ];
+  nativeBuildInputs = [ meson ninja pkgconfig python3 sphinx ];
+  checkInputs = [ glibcLocales rsync ];
+
+  postPatch = ''
+    for f in test/test-*.sh.in; do
+      patchShebangs $f
+    done
+    patchShebangs test/http-server.py
+  '';
+
+  PKG_CONFIG_UDEV_UDEVDIR = "lib/udev";
+  mesonFlags = stdenv.lib.optionals (!fuseSupport) [ "-Dfuse=false" ]
+               ++ stdenv.lib.optionals (!udevSupport) [ "-Dudev=false" ]
+               ++ stdenv.lib.optionals (!selinuxSupport) [ "-Dselinux=false" ];
+
+  doCheck = true;
+  preCheck = ''
+    export LC_ALL="en_US.utf-8"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Content-Addressable Data Synchronizer";
+    homepage    = "https://github.com/systemd/casync";
+    license     = licenses.lgpl21;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ flokli ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/desync/default.nix b/nixpkgs/pkgs/applications/networking/sync/desync/default.nix
new file mode 100644
index 000000000000..9831ab34b2eb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/desync/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "desync";
+  version = "0.4.0";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/folbricht/desync";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "folbricht";
+    repo = "desync";
+    sha256 = "17qh0g1paa7212j761q9z246k10a3xrwd8fgiizw3lr9adn50kdk";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    description = "Content-addressed binary distribution system";
+    longDescription = "An alternate implementation of the casync protocol and storage mechanism with a focus on production-readiness";
+    homepage = "https://github.com/folbricht/desync";
+    license = licenses.bsd3;
+    platforms = platforms.unix; # *may* work on Windows, but varies between releases.
+    maintainers = [ maintainers.chaduffy ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/desync/deps.nix b/nixpkgs/pkgs/applications/networking/sync/desync/deps.nix
new file mode 100644
index 000000000000..7f5f3251d162
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/desync/deps.nix
@@ -0,0 +1,312 @@
+[
+
+  {
+    goPackagePath = "github.com/datadog/zstd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/datadog/zstd";
+      rev = "v1.3.4";
+      sha256 = "06wphl43ji23c0cmmm6fd3wszbwq36mdp1jarak2a6hmxl6yf0b8";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev = "v1.1.1";
+      sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/dchest/siphash";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dchest/siphash";
+      rev = "v1.2.0";
+      sha256 = "01qhv9zd9l6p7pwf1fj022mp9s5496rk4lnm3yvpjsiwp6k4af8c";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/fatih/color";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fatih/color";
+      rev = "v1.7.0";
+      sha256 = "0v8msvg38r8d1iiq2i5r4xyfx0invhc941kjrsg5gzwvagv55inv";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/folbricht/tempfile";
+    fetch = {
+      type = "git";
+      url = "https://github.com/folbricht/tempfile";
+      rev = "v0.0.1";
+      sha256 = "0vz08qvbniqxc24vhmcbq5ncnz97ncp4jbxgcf0hziazxfp114z3";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/go-ini/ini";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-ini/ini";
+      rev = "v1.38.2";
+      sha256 = "0xbnw1nd22q6k863n5gs0nxld15w0p8qxbhfky85akcb5rk1vwi9";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/gopherjs/gopherjs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gopherjs/gopherjs";
+      rev = "0210a2f0f73c";
+      sha256 = "1n80xjfc1dkxs8h8mkpw83n89wi5n7hzc3rxhwjs76rkxpq3rc9j";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/hanwen/go-fuse";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hanwen/go-fuse";
+      rev = "1d35017e9701";
+      sha256 = "11rggvkd6lc5lcpsfvc9iip4z9cingzpkpshaskv2cirbxdynyi8";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/inconshreveable/mousetrap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/inconshreveable/mousetrap";
+      rev = "v1.0.0";
+      sha256 = "1mn0kg48xkd74brf48qf5hzp0bc6g8cf5a77w895rl3qnlpfw152";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/jtolds/gls";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jtolds/gls";
+      rev = "v4.2.1";
+      sha256 = "1vm37pvn0k4r6d3m620swwgama63laz8hhj3pyisdhxwam4m2g1h";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/kr/fs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/fs";
+      rev = "v0.1.0";
+      sha256 = "11zg176x9hr9q7fsk95r6q0wf214gg4czy02slax4x56n79g6a7q";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/mattn/go-colorable";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-colorable";
+      rev = "v0.0.9";
+      sha256 = "1nwjmsppsjicr7anq8na6md7b1z84l9ppnlr045hhxjvbkqwalvx";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/mattn/go-isatty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-isatty";
+      rev = "v0.0.4";
+      sha256 = "0zs92j2cqaw9j8qx1sdxpv3ap0rgbs0vrvi72m40mg8aa36gd39w";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/mattn/go-runewidth";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-runewidth";
+      rev = "v0.0.3";
+      sha256 = "0lc39b6xrxv7h3v3y1kgz49cgi5qxwlygs715aam6ba35m48yi7g";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/minio/minio-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/minio/minio-go";
+      rev = "v6.0.6";
+      sha256 = "0bgivqw1n1189lksp85djw1rqcan2axyh4jv9q54iclrjkpbab37";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/mitchellh/go-homedir";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-homedir";
+      rev = "v1.0.0";
+      sha256 = "0f0z0aa4wivk4z1y503dmnw0k0g0g403dly8i4q263gfshs82sbq";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev = "v0.8.0";
+      sha256 = "001i6n71ghp2l6kdl3qq1v2vmghcz3kicv9a5wgcihrzigm75pp5";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/pkg/sftp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/sftp";
+      rev = "v1.8.2";
+      sha256 = "040flbir6sv213xzs75vkd5fd7bmm3fqxfcnsx8fr77zkn52hm4m";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/pmezard/go-difflib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pmezard/go-difflib";
+      rev = "v1.0.0";
+      sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/smartystreets/assertions";
+    fetch = {
+      type = "git";
+      url = "https://github.com/smartystreets/assertions";
+      rev = "7c9eb446e3cf";
+      sha256 = "1dix6qgaj6kw38hicy3zs3lvacl1kn0n267b3xw0vvdkqf1v0395";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/smartystreets/goconvey";
+    fetch = {
+      type = "git";
+      url = "https://github.com/smartystreets/goconvey";
+      rev = "ef6db91d284a";
+      sha256 = "16znlpsms8z2qc3airawyhzvrzcp70p9bx375i19bg489hgchxb7";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/spf13/cobra";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cobra";
+      rev = "v0.0.3";
+      sha256 = "1q1nsx05svyv9fv3fy6xv6gs9ffimkyzsfm49flvl3wnvf1ncrkd";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev = "v1.0.2";
+      sha256 = "005598piihl3l83a71ahj10cpq9pbhjck4xishx1b4dzc02r9xr2";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev = "v1.2.2";
+      sha256 = "0dlszlshlxbmmfxj5hlwgv3r22x0y1af45gn1vd198nvvs3pnvfs";
+    };
+  }
+
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "0709b304e793";
+      sha256 = "0i05s09y5pavmfh71fgih7syxg58x7a4krgd8am6d3mnahnmab5c";
+    };
+  }
+
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "161cd47e91fd";
+      sha256 = "0254ld010iijygbzykib2vags1dc0wlmcmhgh4jl8iny159lhbcv";
+    };
+  }
+
+  {
+    goPackagePath = "golang.org/x/sync";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sync";
+      rev = "1d60e4601c6f";
+      sha256 = "046jlanz2lkxq1r57x9bl6s4cvfqaic6p2xybsj8mq1120jv4rs6";
+    };
+  }
+
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "49385e6e1522";
+      sha256 = "0spbldahns09fdxkxflb1x24f8k2awdlnr6k5i7ci4fqd19r1dv4";
+    };
+  }
+
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "v0.3.0";
+      sha256 = "0r6x6zjzhr8ksqlpiwm5gdd7s209kwk5p4lw54xjvz10cs3qlq19";
+    };
+  }
+
+  {
+    goPackagePath = "gopkg.in/cheggaaa/pb.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/cheggaaa/pb.v1";
+      rev = "v1.0.25";
+      sha256 = "0vxqiw6f3xyv0zy3g4lksf8za0z8i0hvfpw92hqimsy84f79j3dp";
+    };
+  }
+
+  {
+    goPackagePath = "gopkg.in/ini.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/ini.v1";
+      rev = "v1.38.2";
+      sha256 = "0xbnw1nd22q6k863n5gs0nxld15w0p8qxbhfky85akcb5rk1vwi9";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/sync/lsyncd/default.nix b/nixpkgs/pkgs/applications/networking/sync/lsyncd/default.nix
new file mode 100644
index 000000000000..9573e1717de9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/lsyncd/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, fetchpatch, cmake, lua, pkgconfig, rsync,
+  asciidoc, libxml2, docbook_xml_dtd_45, docbook_xsl, libxslt }:
+
+stdenv.mkDerivation rec {
+  pname = "lsyncd";
+  version = "2.2.3";
+
+  src = fetchFromGitHub {
+    owner = "axkibe";
+    repo = "lsyncd";
+    rev = "release-${version}";
+    sha256 = "1hbsih5hfq9lhgnxm0wb5mrj6xmlk2l0i9a79wzd5f6cnjil9l3x";
+  };
+
+  patches = [
+    (fetchpatch {
+      sha256 = "0b0h2qxh73l502p7phf6qgl8576nf6fvqqp2x5wy3nz7sc9qb1z8";
+      name = "fix-non-versioned-lua-not-search-in-cmake.patch";
+      url = "https://github.com/axkibe/lsyncd/pull/500/commits/0af99d8d5ba35118e8799684a2d4a8ea4b0c6957.patch";
+    })
+  ];
+
+  postPatch = ''
+    substituteInPlace default-rsync.lua \
+      --replace "/usr/bin/rsync" "${rsync}/bin/rsync"
+  '';
+
+  dontUseCmakeBuildDir = true;
+
+  buildInputs = [
+    rsync
+    cmake lua pkgconfig
+    asciidoc libxml2 docbook_xml_dtd_45 docbook_xsl libxslt
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/axkibe/lsyncd";
+    description = "A utility that synchronizes local directories with remote targets";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ bobvanderlinden ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/onedrive/default.nix b/nixpkgs/pkgs/applications/networking/sync/onedrive/default.nix
new file mode 100644
index 000000000000..be255a6c1465
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/onedrive/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, lib, fetchFromGitHub, autoreconfHook, ldc, installShellFiles, pkgconfig
+, curl, sqlite, libnotify
+, withSystemd ? stdenv.isLinux, systemd ? null }:
+
+stdenv.mkDerivation rec {
+  pname = "onedrive";
+  version = "2.4.2";
+
+  src = fetchFromGitHub {
+    owner = "abraunegg";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "10s33p1xzq9c5n1bxv9n7n31afxgx9i6c17w0xgxdrma75micm3a";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ldc installShellFiles pkgconfig ];
+
+  buildInputs = [
+    curl sqlite libnotify
+  ] ++ lib.optional withSystemd systemd;
+
+  configureFlags = [
+    "--enable-notifications"
+  ] ++ lib.optionals withSystemd [
+    "--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
+    "--with-systemduserunitdir=${placeholder "out"}/lib/systemd/user"
+  ];
+
+  # we could also pass --enable-completions to configure but we would then have to
+  # figure out the paths manually and pass those along.
+  postInstall = ''
+    installShellCompletion --bash --name ${pname}  contrib/completions/complete.bash
+    installShellCompletion --zsh  --name _${pname} contrib/completions/complete.zsh
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A complete tool to interact with OneDrive on Linux";
+    homepage = "https://github.com/abraunegg/onedrive";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ srgom ianmjones ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/rclone/browser.nix b/nixpkgs/pkgs/applications/networking/sync/rclone/browser.nix
new file mode 100644
index 000000000000..fb2020f0d3a2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/rclone/browser.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, cmake, wrapQtAppsHook, qtbase }:
+
+stdenv.mkDerivation rec {
+  pname = "rclone-browser";
+  version = "1.8.0";
+
+  src = fetchFromGitHub {
+    owner = "kapitainsky";
+    repo = "RcloneBrowser";
+    rev = version;
+    sha256 = "14ckkdypkfyiqpnz0y2b73wh1py554iyc3gnymj4smy0kg70ai33";
+  };
+
+  nativeBuildInputs = [ cmake wrapQtAppsHook ];
+
+  buildInputs = [ qtbase ];
+
+  meta = with stdenv.lib; {
+    inherit (src.meta) homepage;
+    description = "Graphical Frontend to Rclone written in Qt";
+    license = licenses.unlicense;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/rclone/default.nix b/nixpkgs/pkgs/applications/networking/sync/rclone/default.nix
new file mode 100644
index 000000000000..b2ad47e9b4be
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/rclone/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, buildPackages, installShellFiles }:
+
+buildGoPackage rec {
+  pname = "rclone";
+  version = "1.52.1";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1v91c3wydpixi0p0afclp4baxchigy3czlm1mq9hn6cw973z6spf";
+  };
+
+  goPackagePath = "github.com/rclone/rclone";
+
+  subPackages = [ "." ];
+
+  outputs = [ "out" "man" ];
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  postInstall =
+    let
+      rcloneBin =
+        if stdenv.buildPlatform == stdenv.hostPlatform
+        then "$out"
+        else stdenv.lib.getBin buildPackages.rclone;
+    in
+      ''
+        installManPage $src/rclone.1
+        for shell in bash zsh fish; do
+          ${rcloneBin}/bin/rclone genautocomplete $shell rclone.$shell
+          installShellCompletion rclone.$shell
+        done
+      '';
+
+  meta = with stdenv.lib; {
+    description = "Command line program to sync files and directories to and from major cloud storage";
+    homepage = "https://rclone.org";
+    license = licenses.mit;
+    maintainers = with maintainers; [ danielfullmer ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/rsync/base.nix b/nixpkgs/pkgs/applications/networking/sync/rsync/base.nix
new file mode 100644
index 000000000000..a0522dfe8202
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/rsync/base.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl }:
+
+rec {
+  version = "3.1.3";
+  src = fetchurl {
+    # signed with key 0048 C8B0 26D4 C96F 0E58  9C2F 6C85 9FB1 4B96 A8C5
+    url = "mirror://samba/rsync/src/rsync-${version}.tar.gz";
+    sha256 = "1h0011dj6jgqpgribir4anljjv7bbrdcs8g91pbsmzf5zr75bk2m";
+  };
+  upstreamPatchTarball = fetchurl {
+    # signed with key 0048 C8B0 26D4 C96F 0E58  9C2F 6C85 9FB1 4B96 A8C5
+    url = "mirror://samba/rsync/rsync-patches-${version}.tar.gz";
+    sha256 = "167vk463bb3xl9c4gsbxms111dk1ip7pq8y361xc0xfa427q9hhd";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Fast incremental file transfer utility";
+    homepage = "https://rsync.samba.org/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/rsync/default.nix b/nixpkgs/pkgs/applications/networking/sync/rsync/default.nix
new file mode 100644
index 000000000000..4045c1f0fc51
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/rsync/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, perl, libiconv, zlib, popt
+, enableACLs ? !(stdenv.isDarwin || stdenv.isSunOS || stdenv.isFreeBSD), acl ? null
+, enableCopyDevicesPatch ? false
+}:
+
+assert enableACLs -> acl != null;
+
+let
+  base = import ./base.nix { inherit stdenv fetchurl; };
+in
+stdenv.mkDerivation rec {
+  name = "rsync-${base.version}";
+
+  mainSrc = base.src;
+
+  patchesSrc = base.upstreamPatchTarball;
+
+  srcs = [mainSrc] ++ stdenv.lib.optional enableCopyDevicesPatch patchesSrc;
+  patches = stdenv.lib.optional enableCopyDevicesPatch "./patches/copy-devices.diff";
+
+  buildInputs = [libiconv zlib popt] ++ stdenv.lib.optional enableACLs acl;
+  nativeBuildInputs = [perl];
+
+  configureFlags = ["--with-nobody-group=nogroup"];
+
+  meta = base.meta // {
+    description = "A fast incremental file transfer utility";
+    maintainers = with stdenv.lib.maintainers; [ peti ehmry kampfschlaefer ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/rsync/rrsync.nix b/nixpkgs/pkgs/applications/networking/sync/rsync/rrsync.nix
new file mode 100644
index 000000000000..19be478b0f1e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/rsync/rrsync.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, perl, rsync }:
+
+let
+  base = import ./base.nix { inherit stdenv fetchurl; };
+in
+stdenv.mkDerivation {
+  name = "rrsync-${base.version}";
+
+  src = base.src;
+
+  buildInputs = [ rsync perl ];
+
+  # Skip configure and build phases.
+  # We just want something from the support directory
+  dontConfigure = true;
+  dontBuild = true;
+
+  postPatch = ''
+    substituteInPlace support/rrsync --replace /usr/bin/rsync ${rsync}/bin/rsync
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp support/rrsync $out/bin
+    chmod a+x $out/bin/rrsync
+  '';
+
+  meta = base.meta // {
+    description = "A helper to run rsync-only environments from ssh-logins";
+    maintainers = [ stdenv.lib.maintainers.kampfschlaefer ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/unison/4.08-compatibility.patch b/nixpkgs/pkgs/applications/networking/sync/unison/4.08-compatibility.patch
new file mode 100644
index 000000000000..a6921b516f07
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/unison/4.08-compatibility.patch
@@ -0,0 +1,52 @@
+From 29fa058c3127f3b47c347dcaa4a94f4c0e888308 Mon Sep 17 00:00:00 2001
+From: Jaap Boender <jaapb@kerguelen.org>
+Date: Thu, 21 Mar 2019 12:26:51 +0000
+Subject: [PATCH] Compatibility with OCaml 4.08
+
+---
+ src/files.ml                 | 2 +-
+ src/recon.ml                 | 4 ++--
+ src/system/system_generic.ml | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/files.ml b/src/files.ml
+index ba42ad57..5babf21e 100644
+--- a/src/files.ml
++++ b/src/files.ml
+@@ -722,7 +722,7 @@ let get_files_in_directory dir =
+   with End_of_file ->
+     dirh.System.closedir ()
+   end;
+-  Sort.list (<) !files
++  List.sort String.compare !files
+ 
+ let ls dir pattern =
+   Util.convertUnixErrorsToTransient
+diff --git a/src/recon.ml b/src/recon.ml
+index 5ed358d7..0df2cfe4 100644
+--- a/src/recon.ml
++++ b/src/recon.ml
+@@ -651,8 +651,8 @@ let rec reconcile
+ 
+ (* Sorts the paths so that they will be displayed in order                   *)
+ let sortPaths pathUpdatesList =
+-  Sort.list
+-    (fun (p1, _) (p2, _) -> Path.compare p1 p2 <= 0)
++  List.sort
++    Path.compare
+     pathUpdatesList
+ 
+ let rec enterPath p1 p2 t =
+diff --git a/src/system/system_generic.ml b/src/system/system_generic.ml
+index ed8e18f3..0e28a781 100755
+--- a/src/system/system_generic.ml
++++ b/src/system/system_generic.ml
+@@ -47,7 +47,7 @@ let open_out_gen = open_out_gen
+ let chmod = Unix.chmod
+ let chown = Unix.chown
+ let utimes = Unix.utimes
+-let link = Unix.link
++let link s d = Unix.link s d
+ let openfile = Unix.openfile
+ let opendir f =
+   let h = Unix.opendir f in
diff --git a/nixpkgs/pkgs/applications/networking/sync/unison/default.nix b/nixpkgs/pkgs/applications/networking/sync/unison/default.nix
new file mode 100644
index 000000000000..7b7318544c56
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/unison/default.nix
@@ -0,0 +1,55 @@
+{stdenv, fetchFromGitHub, ocamlPackages, fontschumachermisc, xset, makeWrapper, ncurses, gnugrep
+, enableX11 ? true}:
+
+let inherit (ocamlPackages) ocaml lablgtk; in
+
+stdenv.mkDerivation (rec {
+
+  pname = "unison";
+  version = "2.51.2";
+  src = fetchFromGitHub {
+    owner = "bcpierce00";
+    repo = "unison";
+    rev = "v${version}";
+    sha256 = "1bykiyc0dc5pkw8x370qkg2kygq9pq7yqzsgczd3y13b6ivm4sdq";
+  };
+
+  buildInputs = [ ocaml makeWrapper ncurses ];
+
+  preBuild = (if enableX11 then ''
+    sed -i "s|\(OCAMLOPT=.*\)$|\1 -I $(echo "${lablgtk}"/lib/ocaml/*/site-lib/lablgtk2)|" src/Makefile.OCaml
+  '' else "") + ''
+  echo -e '\ninstall:\n\tcp $(FSMONITOR)$(EXEC_EXT) $(INSTALLDIR)' >> src/fsmonitor/linux/Makefile
+  '';
+
+  makeFlags = [
+    "INSTALLDIR=$(out)/bin/"
+    "UISTYLE=${if enableX11 then "gtk2" else "text"}"
+  ] ++ stdenv.lib.optional (!ocaml.nativeCompilers) "NATIVE=false";
+
+  patches = [
+    # NOTE: Only needed until Unison 2.51.3 is released!
+    ./4.08-compatibility.patch
+    ./lablgtk.patch
+  ];
+
+  preInstall = "mkdir -p $out/bin";
+
+  postInstall = if enableX11 then ''
+    for i in $(cd $out/bin && ls); do
+      wrapProgram $out/bin/$i \
+        --run "[ -n \"\$DISPLAY\" ] && (${xset}/bin/xset q | ${gnugrep}/bin/grep -q \"${fontschumachermisc}\" || ${xset}/bin/xset +fp \"${fontschumachermisc}/lib/X11/fonts/misc\")"
+    done
+  '' else "";
+
+  dontStrip = !ocaml.nativeCompilers;
+
+  meta = {
+    homepage = "https://www.cis.upenn.edu/~bcpierce/unison/";
+    description = "Bidirectional file synchronizer";
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.platforms; unix;
+  };
+
+})
diff --git a/nixpkgs/pkgs/applications/networking/sync/unison/lablgtk.patch b/nixpkgs/pkgs/applications/networking/sync/unison/lablgtk.patch
new file mode 100644
index 000000000000..20c1db1b1166
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/unison/lablgtk.patch
@@ -0,0 +1,31 @@
+From 2e7ea9481c6c3ff2ec513c39f73cfe15c0763c06 Mon Sep 17 00:00:00 2001
+From: daviddavid <geiger.david68210@gmail.com>
+Date: Mon, 26 Feb 2018 13:36:36 +0100
+Subject: [PATCH] Fix for lablgtk >= 2.18.6
+
+---
+ src/uigtk2.ml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/uigtk2.ml b/src/uigtk2.ml
+index 2ba6d79..04c4da4 100644
+--- a/src/uigtk2.ml
++++ b/src/uigtk2.ml
+@@ -89,12 +89,12 @@ let fontItalic = lazy (Pango.Font.from_string "italic")
+ (* This does not work with the current version of Lablgtk, due to a bug
+ let icon =
+   GdkPixbuf.from_data ~width:48 ~height:48 ~has_alpha:true
+-    (Gpointer.region_of_string Pixmaps.icon_data)
++    (Gpointer.region_of_bytes Pixmaps.icon_data)
+ *)
+ let icon =
+   let p = GdkPixbuf.create ~width:48 ~height:48 ~has_alpha:true () in
+   Gpointer.blit
+-    (Gpointer.region_of_string Pixmaps.icon_data) (GdkPixbuf.get_pixels p);
++    (Gpointer.region_of_bytes Pixmaps.icon_data) (GdkPixbuf.get_pixels p);
+   p
+ 
+ let leftPtrWatch =
+-- 
+2.25.1
+
diff --git a/nixpkgs/pkgs/applications/networking/syncplay/default.nix b/nixpkgs/pkgs/applications/networking/syncplay/default.nix
new file mode 100644
index 000000000000..0613a5c5bcd9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/syncplay/default.nix
@@ -0,0 +1,32 @@
+{ lib, fetchFromGitHub, buildPythonApplication, pyside2, shiboken2, twisted, certifi, qt5 }:
+
+buildPythonApplication rec {
+  pname = "syncplay";
+  version = "1.6.4a";
+
+  format = "other";
+
+  src = fetchFromGitHub {
+    owner = "Syncplay";
+    repo = "syncplay";
+    rev = "v${version}";
+    sha256 = "0zz4a3vzfg808z1qkqz31z4818wzpfa2lika7wl0jgpmw4zi85ix";
+  };
+
+  propagatedBuildInputs = [ pyside2 shiboken2 twisted certifi ] ++ twisted.extras.tls;
+  nativeBuildInputs = [ qt5.wrapQtAppsHook ];
+
+  makeFlags = [ "DESTDIR=" "PREFIX=$(out)" ];
+
+  postFixup = ''
+    wrapQtApp $out/bin/syncplay
+  '';
+
+  meta = with lib; {
+    homepage = "https://syncplay.pl/";
+    description = "Free software that synchronises media players";
+    license = licenses.asl20;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ enzime ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/syncthing-gtk/default.nix b/nixpkgs/pkgs/applications/networking/syncthing-gtk/default.nix
new file mode 100644
index 000000000000..cf1e053dd53c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/syncthing-gtk/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, fetchFromGitHub, fetchpatch, libnotify, librsvg, killall
+, gtk3, libappindicator-gtk3, substituteAll, syncthing, wrapGAppsHook
+, gnome3, buildPythonApplication, dateutil, pyinotify, pygobject3
+, bcrypt, gobject-introspection, gsettings-desktop-schemas
+, pango, gdk-pixbuf, atk }:
+
+buildPythonApplication rec {
+  version = "0.9.4.4";
+  pname = "syncthing-gtk";
+
+  src = fetchFromGitHub {
+    owner = "syncthing";
+    repo = "syncthing-gtk";
+    rev = "v${version}";
+    sha256 = "0nc0wd7qvyri7841c3dd9in5d7367hys0isyw8znv5fj4c0a6v1f";
+  };
+
+  nativeBuildInputs = [
+    wrapGAppsHook
+    # For setup hook populating GI_TYPELIB_PATH
+    gobject-introspection
+    pango gdk-pixbuf atk libnotify
+  ];
+
+  buildInputs = [
+    gtk3 librsvg libappindicator-gtk3
+    libnotify gnome3.adwaita-icon-theme
+    # Schemas with proxy configuration
+    gsettings-desktop-schemas
+  ];
+
+  propagatedBuildInputs = [
+    dateutil pyinotify pygobject3 bcrypt
+  ];
+
+  patches = [
+    (substituteAll {
+      src = ./paths.patch;
+      killall = "${killall}/bin/killall";
+      syncthing = "${syncthing}/bin/syncthing";
+    })
+  ];
+
+  # repo doesn't have any tests
+  doCheck = false;
+
+  setupPyBuildFlags = [ "build_py" "--nofinddaemon" "--nostdownloader" ];
+
+  postPatch = ''
+    substituteInPlace setup.py --replace "version = get_version()" "version = '${version}'"
+    substituteInPlace scripts/syncthing-gtk --replace "/usr/share" "$out/share"
+    substituteInPlace syncthing_gtk/app.py --replace "/usr/share" "$out/share"
+    substituteInPlace syncthing_gtk/uisettingsdialog.py --replace "/usr/share" "$out/share"
+    substituteInPlace syncthing_gtk/wizard.py --replace "/usr/share" "$out/share"
+    substituteInPlace syncthing-gtk.desktop --replace "/usr/bin/syncthing-gtk" "$out/bin/syncthing-gtk"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "GTK3 & python based GUI for Syncthing";
+    homepage = "https://github.com/syncthing/syncthing-gtk";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ ];
+    platforms = syncthing.meta.platforms;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/syncthing-gtk/paths.patch b/nixpkgs/pkgs/applications/networking/syncthing-gtk/paths.patch
new file mode 100644
index 000000000000..0ba5a4f2db84
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/syncthing-gtk/paths.patch
@@ -0,0 +1,22 @@
+--- a/syncthing_gtk/configuration.py
++++ b/syncthing_gtk/configuration.py
+@@ -30,7 +30,7 @@
+ 		"autokill_daemon"			: (int, 2),	# 0 - never kill, 1 - always kill, 2 - ask
+ 		"daemon_priority"			: (int, 0), # uses nice values
+ 		"max_cpus"					: (int, 0), # 0 for all cpus
+-		"syncthing_binary"			: (str, "/usr/bin/syncthing"),
++		"syncthing_binary"			: (str, "@syncthing@"),
+ 		"syncthing_arguments"		: (str, ""),
+ 		"minimize_on_start"			: (bool, False),
+ 		"folder_as_path"			: (bool, True),
+--- a/syncthing_gtk/tools.py
++++ b/syncthing_gtk/tools.py
+@@ -303,7 +303,7 @@
+ 			return False
+ 		# signal 0 doesn't kill anything, but killall exits with 1 if
+ 		# named process is not found
+-		p = Popen(["killall", "-u", os.environ["USER"], "-q", "-s", "0", "syncthing"])
++		p = Popen(["@killall@", "-u", os.environ["USER"], "-q", "-s", "0", "syncthing"])
+ 		p.communicate()
+ 		return p.returncode == 0
+ 	else:
diff --git a/nixpkgs/pkgs/applications/networking/syncthing/add-stcli-target.patch b/nixpkgs/pkgs/applications/networking/syncthing/add-stcli-target.patch
new file mode 100644
index 000000000000..07b5e334b2c9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/syncthing/add-stcli-target.patch
@@ -0,0 +1,17 @@
+diff --git a/build.go b/build.go
+index c8a5c1cf..d75a8491 100644
+--- a/build.go
++++ b/build.go
+@@ -202,6 +202,12 @@ var targets = map[string]target{
+ 			{src: "AUTHORS", dst: "deb/usr/share/doc/syncthing-relaypoolsrv/AUTHORS.txt", perm: 0644},
+ 		},
+ 	},
++	"stcli": {
++		name:        "stcli",
++		description: "Syncthing CLI",
++		buildPkgs:   []string{"github.com/syncthing/syncthing/cmd/stcli"},
++		binaryName:  "stcli",
++	},
+ }
+ 
+ // These are repos we need to clone to run "go generate"
diff --git a/nixpkgs/pkgs/applications/networking/syncthing/default.nix b/nixpkgs/pkgs/applications/networking/syncthing/default.nix
new file mode 100644
index 000000000000..9d5ce848e333
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/syncthing/default.nix
@@ -0,0 +1,106 @@
+{ buildGoModule, stdenv, lib, procps, fetchFromGitHub, nixosTests }:
+
+let
+  common = { stname, target, postInstall ? "" }:
+    buildGoModule rec {
+      version = "1.6.1";
+      name = "${stname}-${version}";
+
+      src = fetchFromGitHub {
+        owner  = "syncthing";
+        repo   = "syncthing";
+        rev    = "v${version}";
+        sha256 = "1lhbx1mh2hdjjwks3s17i8y9vbl3fnapc1czaf42pp7nf8245q3j";
+      };
+
+      vendorSha256 = "12g63a6jsshzqjgww792xmvybhfbkjx5aza4xnyljjsp453iky7k";
+
+      patches = [
+        ./add-stcli-target.patch
+      ];
+      BUILD_USER="nix";
+      BUILD_HOST="nix";
+
+      buildPhase = ''
+        runHook preBuild
+        go run build.go -no-upgrade -version v${version} build ${target}
+        runHook postBuild
+      '';
+
+      installPhase = ''
+        runHook preInstall
+        install -Dm755 ${target} $out/bin/${target}
+        runHook postInstall
+      '';
+
+      inherit postInstall;
+
+      passthru.tests = with nixosTests; {
+        init = syncthing-init;
+        relay = syncthing-relay;
+      };
+
+      meta = with lib; {
+        homepage = "https://www.syncthing.net/";
+        description = "Open Source Continuous File Synchronization";
+        license = licenses.mpl20;
+        maintainers = with maintainers; [ pshendry joko peterhoeg andrew-d ];
+        platforms = platforms.unix;
+      };
+    };
+
+in {
+  syncthing = common {
+    stname = "syncthing";
+    target = "syncthing";
+
+    postInstall = ''
+      # This installs man pages in the correct directory according to the suffix
+      # on the filename
+      for mf in man/*.[1-9]; do
+        mantype="$(echo "$mf" | awk -F"." '{print $NF}')"
+        mandir="$out/share/man/man$mantype"
+        install -Dm644 "$mf" "$mandir/$(basename "$mf")"
+      done
+
+    '' + lib.optionalString (stdenv.isLinux) ''
+      mkdir -p $out/lib/systemd/{system,user}
+
+      substitute etc/linux-systemd/system/syncthing-resume.service \
+                 $out/lib/systemd/system/syncthing-resume.service \
+                 --replace /usr/bin/pkill ${procps}/bin/pkill
+
+      substitute etc/linux-systemd/system/syncthing@.service \
+                 $out/lib/systemd/system/syncthing@.service \
+                 --replace /usr/bin/syncthing $out/bin/syncthing
+
+      substitute etc/linux-systemd/user/syncthing.service \
+                 $out/lib/systemd/user/syncthing.service \
+                 --replace /usr/bin/syncthing $out/bin/syncthing
+    '';
+  };
+
+  syncthing-cli = common {
+    stname = "syncthing-cli";
+
+    target = "stcli";
+  };
+
+  syncthing-discovery = common {
+    stname = "syncthing-discovery";
+    target = "stdiscosrv";
+  };
+
+  syncthing-relay = common {
+    stname = "syncthing-relay";
+    target = "strelaysrv";
+
+    postInstall = lib.optionalString (stdenv.isLinux) ''
+      mkdir -p $out/lib/systemd/system
+
+      substitute cmd/strelaysrv/etc/linux-systemd/strelaysrv.service \
+                 $out/lib/systemd/system/strelaysrv.service \
+                 --replace /usr/bin/strelaysrv $out/bin/strelaysrv
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/tcpkali/default.nix b/nixpkgs/pkgs/applications/networking/tcpkali/default.nix
new file mode 100644
index 000000000000..a71425422383
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/tcpkali/default.nix
@@ -0,0 +1,23 @@
+{stdenv, autoreconfHook, fetchFromGitHub, bison}:
+
+let version = "1.1.1"; in
+
+stdenv.mkDerivation rec {
+  pname = "tcpkali";
+  inherit version;
+  src = fetchFromGitHub {
+    owner = "machinezone";
+    repo = "tcpkali";
+    rev = "v${version}";
+    sha256 = "09ky3cccaphcqc6nhfs00pps99lasmzc2pf5vk0gi8hlqbbhilxf";
+  };
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ bison];
+  meta = {
+    description = "High performance TCP and WebSocket load generator and sink";
+    license = stdenv.lib.licenses.bsd2;
+    inherit (src.meta) homepage;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = with stdenv.lib.maintainers; [ ethercrow ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/termius/default.nix b/nixpkgs/pkgs/applications/networking/termius/default.nix
new file mode 100644
index 000000000000..a890aefe8cd6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/termius/default.nix
@@ -0,0 +1,68 @@
+{ atomEnv
+, autoPatchelfHook
+, dpkg
+, fetchurl
+, makeDesktopItem
+, makeWrapper
+, stdenv
+, udev
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "termius";
+  version = "5.10.1";
+
+  src = fetchurl {
+    url = "https://deb.termius.com/pool/main/t/termius-app/termius-app_${version}_amd64.deb";
+    sha256 = "04zh0zzyp906lf6mz3xzxybn2a55rv3vvrj0m12gnrb8kjb3pk5s";
+  };
+
+  desktopItem = makeDesktopItem {
+    categories = "Network;";
+    comment = "The SSH client that works on Desktop and Mobile";
+    desktopName = "Termius";
+    exec = "termius-app";
+    genericName = "Cross-platform SSH client";
+    icon = "termius-app";
+    name = "termius-app";
+  };
+
+  dontBuild = true;
+  dontConfigure = true;
+  dontPatchELF = true;
+  dontWrapGApps = true;
+
+  nativeBuildInputs = [ autoPatchelfHook dpkg makeWrapper wrapGAppsHook ];
+
+  buildInputs = atomEnv.packages;
+
+  unpackPhase = "dpkg-deb -x $src .";
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    cp -R "opt" "$out"
+    cp -R "usr/share" "$out/share"
+    chmod -R g-w "$out"
+
+    # Desktop file
+    mkdir -p "$out/share/applications"
+    cp "${desktopItem}/share/applications/"* "$out/share/applications"
+  '';
+
+  runtimeDependencies = [ udev.lib ];
+
+  postFixup = ''
+    makeWrapper $out/opt/Termius/termius-app $out/bin/termius-app \
+      "''${gappsWrapperArgs[@]}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A cross-platform SSH client with cloud data sync and more";
+    homepage = "https://termius.com/";
+    downloadPage = "https://termius.com/linux/";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ filalex77 ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/testssl/default.nix b/nixpkgs/pkgs/applications/networking/testssl/default.nix
new file mode 100644
index 000000000000..197756d8ace4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/testssl/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchFromGitHub, makeWrapper, lib
+, dnsutils, coreutils, openssl, nettools, utillinux, procps }:
+
+stdenv.mkDerivation rec {
+  pname = "testssl.sh";
+  version = "3.0.2";
+
+  src = fetchFromGitHub {
+    owner = "drwetter";
+    repo = pname;
+    rev = version;
+    sha256 = "0vfpj3g3il3imbydx3j8gx1pgzrxi0czcl9jmi749vnkf5mkmh8w";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [
+    coreutils # for pwd and printf
+    dnsutils  # for dig
+    nettools  # for hostname
+    openssl   # for openssl
+    procps    # for ps
+    utillinux # for hexdump
+  ];
+
+  postPatch = ''
+    substituteInPlace testssl.sh                                               \
+      --replace /bin/pwd                    pwd                                \
+      --replace TESTSSL_INSTALL_DIR:-\"\"   TESTSSL_INSTALL_DIR:-\"$out\"      \
+      --replace PROG_NAME=\"\$\(basename\ \"\$0\"\)\" PROG_NAME=\"testssl.sh\"
+  '';
+
+  installPhase = ''
+    install -D testssl.sh $out/bin/testssl.sh
+    cp -r etc $out
+
+    wrapProgram $out/bin/testssl.sh --prefix PATH ':' ${lib.makeBinPath buildInputs}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "CLI tool to check a server's TLS/SSL capabilities";
+    longDescription = ''
+      CLI tool which checks a server's service on any port for the support of
+      TLS/SSL ciphers, protocols as well as recent cryptographic flaws and more.
+    '';
+    homepage = "https://testssl.sh/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ etu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/trebleshot/default.nix b/nixpkgs/pkgs/applications/networking/trebleshot/default.nix
new file mode 100644
index 000000000000..56ebe1873ae6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/trebleshot/default.nix
@@ -0,0 +1,29 @@
+{ mkDerivation, lib, fetchFromGitHub
+, cmake, qtbase, kdnssd
+}:
+
+mkDerivation rec {
+  pname = "trebleshot";
+  version = "0.1.0-alpha2-15-ga7ac23c";
+  # name="${pname}-${version}";
+
+  src = fetchFromGitHub {
+    owner = "genonbeta";
+    repo = "TrebleShot-Desktop";
+    rev = "${version}";
+    sha256 = "1k8wagw6arsi1lqkhn1nl6j11mb122vi1qs0q2np6nznwfy7pn1k";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ qtbase kdnssd ];
+
+  meta = with lib; {
+    description = "Android file transferring tool for desktop";
+    homepage = "https://github.com/genonbeta/TrebleShot-Desktop";
+    license = licenses.gpl2;
+
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ woffs ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/tsung/default.nix b/nixpkgs/pkgs/applications/networking/tsung/default.nix
new file mode 100644
index 000000000000..6f5a3f3ec16f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/tsung/default.nix
@@ -0,0 +1,50 @@
+{ fetchurl, stdenv, lib, makeWrapper,
+  erlang,
+  python2, python2Packages,
+  perlPackages,
+  gnuplot }:
+
+stdenv.mkDerivation rec {
+  pname = "tsung";
+  version = "1.7.0";
+  src = fetchurl {
+    url = "http://tsung.erlang-projects.org/dist/tsung-${version}.tar.gz";
+    sha256 = "6394445860ef34faedf8c46da95a3cb206bc17301145bc920151107ffa2ce52a";
+  };
+
+  buildInputs = [ makeWrapper ];
+  propagatedBuildInputs = [
+    erlang
+    gnuplot
+    perlPackages.perl
+    perlPackages.TemplateToolkit
+    python2
+    python2Packages.matplotlib
+  ];
+
+
+  postFixup = ''
+    # Make tsung_stats.pl accessible
+    # Leaving .pl at the end since all of tsung documentation is refering to it
+    # as tsung_stats.pl
+    ln -s $out/lib/tsung/bin/tsung_stats.pl $out/bin/tsung_stats.pl
+
+    # Add Template Toolkit and gnuplot to tsung_stats.pl
+    wrapProgram $out/bin/tsung_stats.pl \
+        --prefix PATH : ${lib.makeBinPath [ gnuplot ]} \
+        --set PERL5LIB "${perlPackages.makePerlPath [ perlPackages.TemplateToolkit ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://tsung.erlang-projects.org/";
+    description = "A high-performance benchmark framework for various protocols including HTTP, XMPP, LDAP, etc.";
+    longDescription = ''
+      Tsung is a distributed load testing tool. It is protocol-independent and
+      can currently be used to stress HTTP, WebDAV, SOAP, PostgreSQL, MySQL,
+      AMQP, MQTT, LDAP and Jabber/XMPP servers.
+    '';
+    license = licenses.gpl2;
+    maintainers = [ maintainers.uskudnik ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/umurmur/default.nix b/nixpkgs/pkgs/applications/networking/umurmur/default.nix
new file mode 100644
index 000000000000..d16c1bb944a2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/umurmur/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, openssl, protobufc, libconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "umurmur";
+  version = "0.2.17";
+
+  src = fetchFromGitHub {
+    owner = "umurmur";
+    repo = "umurmur";
+    rev = version;
+    sha256 = "074px4ygmv4ydy2pqwxwnz17f0hfswqkz5kc9qfz0iby3h5i3fyl";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ openssl protobufc libconfig ];
+
+  configureFlags = [
+    "--with-ssl=openssl"
+    "--enable-shmapi"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Minimalistic Murmur (Mumble server)";
+    license = licenses.bsd3;
+    homepage = "https://github.com/umurmur/umurmur";
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/vnstat/default.nix b/nixpkgs/pkgs/applications/networking/vnstat/default.nix
new file mode 100644
index 000000000000..cd0f65d4d454
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/vnstat/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, pkgconfig, gd, ncurses, sqlite, check }:
+
+stdenv.mkDerivation rec {
+  pname = "vnstat";
+  version = "2.6";
+
+  src = fetchurl {
+    sha256 = "1xvzkxkq1sq33r2s4f1967f4gnca4xw411sbapdkx541f856w9w9";
+    url = "https://humdi.net/${pname}/${pname}-${version}.tar.gz";
+  };
+
+  postPatch = ''
+    substituteInPlace src/cfg.c --replace /usr/local $out
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gd ncurses sqlite ];
+
+  checkInputs = [ check ];
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    description = "Console-based network statistics utility for Linux";
+    longDescription = ''
+      vnStat is a console-based network traffic monitor for Linux and BSD that
+      keeps a log of network traffic for the selected interface(s). It uses the
+      network interface statistics provided by the kernel as information source.
+      This means that vnStat won't actually be sniffing any traffic and also
+      ensures light use of system resources.
+    '';
+    homepage = "https://humdi.net/vnstat/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/wayback_machine_downloader/Gemfile b/nixpkgs/pkgs/applications/networking/wayback_machine_downloader/Gemfile
new file mode 100644
index 000000000000..e519efbf5701
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/wayback_machine_downloader/Gemfile
@@ -0,0 +1,5 @@
+# frozen_string_literal: true
+
+source 'https://rubygems.org' do
+  gem 'wayback_machine_downloader'
+end
diff --git a/nixpkgs/pkgs/applications/networking/wayback_machine_downloader/Gemfile.lock b/nixpkgs/pkgs/applications/networking/wayback_machine_downloader/Gemfile.lock
new file mode 100644
index 000000000000..4534beb20c39
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/wayback_machine_downloader/Gemfile.lock
@@ -0,0 +1,13 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    wayback_machine_downloader (2.2.1)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  wayback_machine_downloader!
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/applications/networking/wayback_machine_downloader/default.nix b/nixpkgs/pkgs/applications/networking/wayback_machine_downloader/default.nix
new file mode 100644
index 000000000000..49471ebf7e39
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/wayback_machine_downloader/default.nix
@@ -0,0 +1,16 @@
+{ lib, bundlerApp, bundlerUpdateScript }:
+bundlerApp {
+  pname = "wayback_machine_downloader";
+  exes = [ "wayback_machine_downloader" ];
+  gemdir = ./.;
+
+  passthru.updateScript = bundlerUpdateScript "wayback_machine_downloader";
+
+  meta = with lib; {
+    description = "Download websites from the Internet Archive Wayback Machine";
+    homepage = "https://github.com/hartator/wayback-machine-downloader";
+    license = licenses.mit;
+    maintainers = [ maintainers.manveru ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/wayback_machine_downloader/gemset.nix b/nixpkgs/pkgs/applications/networking/wayback_machine_downloader/gemset.nix
new file mode 100644
index 000000000000..615570f1f09f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/wayback_machine_downloader/gemset.nix
@@ -0,0 +1,12 @@
+{
+  wayback_machine_downloader = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2";
+      type = "gem";
+    };
+    version = "2.2.1";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/weather/meteo/default.nix b/nixpkgs/pkgs/applications/networking/weather/meteo/default.nix
new file mode 100644
index 000000000000..9887e34d7354
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/weather/meteo/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchFromGitLab, vala, python3, pkgconfig, meson, ninja, gtk3
+, json-glib, libsoup, webkitgtk, geocode-glib
+, libappindicator, desktop-file-utils, appstream, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "meteo";
+  version = "0.9.8";
+
+  src = fetchFromGitLab {
+    owner = "bitseater";
+    repo = pname;
+    rev = version;
+    sha256 = "1ll5fja0dqxcr6hrh2dk4hgw9gf8ms9bcp1ifznd21byxzyhdlr0";
+  };
+
+  nativeBuildInputs = [
+    appstream
+    desktop-file-utils
+    meson
+    ninja
+    pkgconfig
+    python3
+    vala
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    geocode-glib
+    gtk3
+    json-glib
+    libappindicator
+    libsoup
+    webkitgtk
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Know the forecast of the next hours & days";
+    homepage = "https://gitlab.com/bitseater/meteo";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ worldofpeace ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/websocketd/default.nix b/nixpkgs/pkgs/applications/networking/websocketd/default.nix
new file mode 100644
index 000000000000..17f42b5ece4f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/websocketd/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "websocketd";
+  version = "0.3.1";
+
+  src = fetchFromGitHub {
+    owner = "joewalnes";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1qc4yi4kwy7bfi3fb17w58ff0i95yi6m4syldh8j79930syr5y8q";
+  };
+
+  vendorSha256 = "05k31z4h3b327mh940zh52im4xfk7kf5phb8b7xp4l9bgckhz4lb";
+
+  meta = with lib; {
+    description = "Turn any program that uses STDIN/STDOUT into a WebSocket server";
+    homepage = "http://websocketd.com/";
+    maintainers = [ maintainers.bjornfor ];
+    license = licenses.bsd2;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/znc/default.nix b/nixpkgs/pkgs/applications/networking/znc/default.nix
new file mode 100644
index 000000000000..fae03846b68e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/znc/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchurl, openssl, pkgconfig
+, withPerl ? false, perl
+, withPython ? false, python3
+, withTcl ? false, tcl
+, withCyrus ? true, cyrus_sasl
+, withUnicode ? true, icu
+, withZlib ? true, zlib
+, withIPv6 ? true
+, withDebug ? false
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "znc";
+  version = "1.8.0";
+
+  src = fetchurl {
+    url = "https://znc.in/releases/archive/${pname}-${version}.tar.gz";
+    sha256 = "0m5xf60r40pgbg9lyk56dafxj2hj149pn2wf8vzsp8xgq4kv5zcl";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ openssl ]
+    ++ optional withPerl perl
+    ++ optional withPython python3
+    ++ optional withTcl tcl
+    ++ optional withCyrus cyrus_sasl
+    ++ optional withUnicode icu
+    ++ optional withZlib zlib;
+
+  configureFlags = [
+    (stdenv.lib.enableFeature withPerl "perl")
+    (stdenv.lib.enableFeature withPython "python")
+    (stdenv.lib.enableFeature withTcl "tcl")
+    (stdenv.lib.withFeatureAs withTcl "tcl" "${tcl}/lib")
+    (stdenv.lib.enableFeature withCyrus "cyrus")
+  ] ++ optional (!withIPv6) [ "--disable-ipv6" ]
+    ++ optional withDebug [ "--enable-debug" ];
+
+  meta = with stdenv.lib; {
+    description = "Advanced IRC bouncer";
+    homepage = "https://wiki.znc.in/ZNC";
+    maintainers = with maintainers; [ schneefux lnl7 ];
+    license = licenses.asl20;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/znc/modules.nix b/nixpkgs/pkgs/applications/networking/znc/modules.nix
new file mode 100644
index 000000000000..3fd447b8b096
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/znc/modules.nix
@@ -0,0 +1,198 @@
+{ stdenv, fetchFromGitHub, znc }:
+
+let
+  zncDerivation = a@{
+    name, src, module_name,
+    buildPhase ? "${znc}/bin/znc-buildmod ${module_name}.cpp",
+    installPhase ? "install -D ${module_name}.so $out/lib/znc/${module_name}.so", ...
+  } : stdenv.mkDerivation (a // {
+    inherit buildPhase;
+    inherit installPhase;
+
+    buildInputs = znc.buildInputs;
+
+    meta = a.meta // { platforms = stdenv.lib.platforms.unix; };
+    passthru.module_name = module_name;
+  });
+
+in {
+
+  backlog = zncDerivation rec {
+    name = "znc-backlog-${version}";
+    version = "git-2017-06-13";
+    module_name = "backlog";
+
+    src = fetchFromGitHub {
+      owner = "FruitieX";
+      repo = "znc-backlog";
+      rev = "42e8f439808882d2dae60f2a161eabead14e4b0d";
+      sha256 = "1k7ifpqqzzf2j7w795q4mx1nvmics2higzjqr3mid3lp43sqg5s6";
+    };
+
+    meta = with stdenv.lib; {
+      description = "Request backlog for IRC channels.";
+      homepage = "https://github.com/fruitiex/znc-backlog/";
+      license = licenses.asl20;
+      maintainers = with maintainers; [ infinisil ];
+    };
+  };
+
+  clientbuffer = zncDerivation rec {
+    name = "znc-clientbuffer-${version}";
+    version = "git-2015-08-27";
+    module_name = "clientbuffer";
+
+    src = fetchFromGitHub {
+      owner = "jpnurmi";
+      repo = "znc-clientbuffer";
+      rev = "fe0f368e1fcab2b89d5c94209822d9b616cea840";
+      sha256 = "1s8bqqlwy9kmcpmavil558rd2b0wigjlzp2lpqpcqrd1cg25g4a7";
+    };
+
+    meta = with stdenv.lib; {
+      description = "ZNC module for client specific buffers";
+      homepage = "https://github.com/jpnurmi/znc-clientbuffer";
+      license = licenses.asl20;
+      maintainers = with maintainers; [ hrdinka ];
+    };
+  };
+
+  clientaway = zncDerivation rec {
+    name = "znc-clientaway-${version}";
+    version = "git-2017-04-28";
+    module_name = "clientaway";
+
+    src = fetchFromGitHub {
+      owner = "kylef";
+      repo = "znc-contrib";
+      rev = "f6724a4a3b16b050088adde0cbeed74f189e5044";
+      sha256 = "0ikd3dzjjlr0gs0ikqfk50msm6mij99ln2rjzqavh58iwzr7n5r8";
+    };
+
+    meta = with stdenv.lib; {
+      description = "ZNC clientaway module";
+      homepage = "https://github.com/kylef/znc-contrib";
+      license = licenses.gpl2;
+      maintainers = with maintainers; [ kiwi ];
+    };
+  };
+
+  fish = zncDerivation rec {
+    name = "znc-fish-${version}";
+    version = "git-2017-06-26";
+    module_name = "fish";
+
+    src = fetchFromGitHub {
+      # this fork works with ZNC 1.7
+      owner = "oilslump";
+      repo = "znc-fish";
+      rev = "7d91467dbb195f7b591567911210523c6087662e";
+      sha256 = "1ky5xg17k5f393whrv5iv8zsmdvdyk2f7z5qdsmxcwy3pdxy6vsm";
+    };
+
+    meta = {
+      description = "ZNC FiSH module";
+      homepage = "https://github.com/dctrwatson/znc-fish";
+      maintainers = [ stdenv.lib.maintainers.offline ];
+    };
+  };
+
+  ignore = zncDerivation rec {
+    name = "znc-ignore-${version}";
+    version = "git-2017-04-28";
+    module_name = "ignore";
+
+    src = fetchFromGitHub {
+      owner = "kylef";
+      repo = "znc-contrib";
+      rev = "f6724a4a3b16b050088adde0cbeed74f189e5044";
+      sha256 = "0ikd3dzjjlr0gs0ikqfk50msm6mij99ln2rjzqavh58iwzr7n5r8";
+    };
+
+    meta = with stdenv.lib; {
+      description = "ZNC ignore module";
+      homepage = "https://github.com/kylef/znc-contrib";
+      license = licenses.gpl2;
+      maintainers = with maintainers; [ kiwi ];
+    };
+  };
+
+  palaver = zncDerivation rec {
+    name = "znc-palaver-${version}";
+    version = "2018-09-18";
+    module_name = "palaver";
+
+    src = fetchFromGitHub {
+      owner = "cocodelabs";
+      repo = "znc-palaver";
+      rev = "c70e8112686f917d39197d582db36c3ea37a4cb6";
+      sha256 = "1gjr8yqgpkpcc18rf0zfgil3rcd1ihqk0q9f8rwbfvs5381h3c58";
+    };
+
+    meta = with stdenv.lib; {
+      description = "Palaver ZNC module";
+      homepage = "https://github.com/cocodelabs/znc-palaver";
+      license = licenses.mit;
+      maintainers = with maintainers; [ kiwi ];
+    };
+  };
+
+  playback = zncDerivation rec {
+    name = "znc-playback-${version}";
+    version = "git-2015-08-04";
+    module_name = "playback";
+
+    src = fetchFromGitHub {
+      owner = "jpnurmi";
+      repo = "znc-playback";
+      rev = "8691abf75becc1f3d7b5bb5ad68dad17cd21863b";
+      sha256 = "0mgfajljy035051b2sx70i8xrb51zw9q2z64kf85zw1lynihzyh4";
+    };
+
+    meta = with stdenv.lib; {
+      description = "An advanced playback module for ZNC";
+      homepage = "https://github.com/jpnurmi/znc-playback";
+      license = licenses.asl20;
+      maintainers = with maintainers; [ hrdinka ];
+    };
+  };
+
+  privmsg = zncDerivation rec {
+    name = "znc-privmsg-${version}";
+    version = "git-2015-02-22";
+    module_name = "privmsg";
+
+    src = fetchFromGitHub {
+      owner = "kylef";
+      repo = "znc-contrib";
+      rev = "9f1f98db56cbbea96d83e6628f657e0d62cd9517";
+      sha256 = "0n82z87gdxxragcaixjc80z8bw4bmfwbk0jrf9zs8kk42phlkkc2";
+    };
+
+    meta = {
+      description = "ZNC privmsg module";
+      homepage = "https://github.com/kylef/znc-contrib";
+    };
+  };
+
+  push = zncDerivation rec {
+    name = "znc-push-${version}";
+    version = "git-2016-10-12";
+    module_name = "push";
+
+    src = fetchFromGitHub {
+      owner = "jreese";
+      repo = "znc-push";
+      rev = "cf08b9e0f483f03c28d72dd78df932cbef141f10";
+      sha256 = "0xpwjw8csyrg736g1jc1n8d6804x6kbdkrvldzhk9ldj4iwqz7ay";
+    };
+
+    meta = {
+      description = "Push notification service module for ZNC";
+      homepage = "https://github.com/jreese/znc-push";
+      license = stdenv.lib.licenses.mit;
+      maintainers = with stdenv.lib.maintainers; [ offline schneefux ];
+    };
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/office/abiword/default.nix b/nixpkgs/pkgs/applications/office/abiword/default.nix
new file mode 100644
index 000000000000..4aa3f936b539
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/abiword/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, pkgconfig, gtk3, fribidi
+, libpng, popt, libgsf, enchant, wv, librsvg, bzip2, libjpeg, perl
+, boost, libxslt, goffice, wrapGAppsHook, gnome3
+}:
+
+stdenv.mkDerivation rec {
+  pname = "abiword";
+  version = "3.0.4";
+
+  src = fetchurl {
+    url = "https://www.abisource.com/downloads/abiword/${version}/source/${pname}-${version}.tar.gz";
+    sha256 = "1mx5l716n0z5788i19qmad30cck4v9ggr071cafw2nrf375rcc79";
+  };
+
+  enableParallelBuilding = true;
+
+  patches = [
+    # Switch to using enchant2; note by the next update enchant2 should be
+    # default and this patch can be removed.
+    # https://github.com/NixOS/nixpkgs/issues/38506
+    (fetchurl {
+      url = "https://git.archlinux.org/svntogit/packages.git/plain/trunk/enchant-2.1.patch?h=packages/abiword";
+      sha256 = "444dc2aadea3c80310a509b690097541573f6d2652c573d04da66a0f385fcfb2";
+    })
+  ];
+
+  postPatch = ''
+    substituteInPlace configure --replace 'enchant >=' 'enchant-2 >='
+  '';
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+
+  buildInputs = [
+    gtk3 librsvg bzip2 fribidi libpng popt
+    libgsf enchant wv libjpeg perl boost libxslt goffice gnome3.adwaita-icon-theme
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Word processing program, similar to Microsoft Word";
+    homepage = "https://www.abisource.com/";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ pSub ylwghst sna ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/aesop/default.nix b/nixpkgs/pkgs/applications/office/aesop/default.nix
new file mode 100644
index 000000000000..4f8c115600af
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/aesop/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, vala, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, python3, gtk3
+, desktop-file-utils, json-glib, libsoup, libgee, poppler, wrapGAppsHook, fetchpatch }:
+
+stdenv.mkDerivation rec {
+  pname = "aesop";
+  version = "1.2.5";
+
+  src = fetchFromGitHub {
+    owner = "lainsce";
+    repo = pname;
+    rev = version;
+    sha256 = "1zxyyxl959rqhyz871dyyccqga2ydybkfcpyjq4vmvdn2g9mvmb0";
+  };
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    meson
+    ninja
+    pkgconfig
+    python3
+    vala
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    pantheon.elementary-icon-theme
+    libgee
+    pantheon.granite
+    gtk3
+    json-glib
+    libsoup
+    poppler
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "The simplest PDF viewer around";
+    homepage = "https://github.com/lainsce/aesop";
+    license = licenses.gpl2Plus;
+    maintainers = pantheon.maintainers;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/agenda/default.nix b/nixpkgs/pkgs/applications/office/agenda/default.nix
new file mode 100644
index 000000000000..f7028ad67659
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/agenda/default.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, fetchFromGitHub
+, pantheon
+, meson
+, ninja
+, python3
+, pkg-config
+, vala
+, gettext
+, glib
+, gtk3
+, libgee
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "agenda";
+  version = "1.1.0";
+
+  src = fetchFromGitHub {
+    owner = "dahenson";
+    repo = pname;
+    rev = version;
+    sha256 = "0yfapapsanqacaa83iagar88i335yy2jvay8y6z7gkri7avbs4am";
+  };
+
+  nativeBuildInputs = [
+    gettext
+    glib # for glib-compile-schemas
+    meson
+    ninja
+    pkg-config
+    python3
+    vala
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    libgee
+    pantheon.granite
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  doCheck = true;
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "A simple, fast, no-nonsense to-do (task) list designed for elementary OS";
+    homepage = "https://github.com/dahenson/agenda";
+    maintainers = with maintainers; [ xiorcale ] ++ pantheon.maintainers;
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/office/antiword/10_fix_buffer_overflow_wordole_c_CVE-2014-8123.patch b/nixpkgs/pkgs/applications/office/antiword/10_fix_buffer_overflow_wordole_c_CVE-2014-8123.patch
new file mode 100644
index 000000000000..ebf2f0900d98
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/antiword/10_fix_buffer_overflow_wordole_c_CVE-2014-8123.patch
@@ -0,0 +1,18 @@
+Description: Add check for buffer overflow with malformed input files
+Author: <eriks@debian.org>
+Bug-Debian: http://bugs.debian.org/407015
+Last-Update: 2009-06-03
+
+--- antiword-0.37~/wordole.c	2005-08-26 21:49:57.000000000 +0200
++++ antiword-0.37/wordole.c	2009-06-03 22:31:15.948014682 +0200
+@@ -259,6 +259,10 @@
+ 		}
+ 		tNameSize = (size_t)usGetWord(0x40, aucBytes);
+ 		tNameSize = (tNameSize + 1) / 2;
++		if ( tNameSize > sizeof(atPPSlist[iIndex].szName)) {
++			werr(0, "Name Size of PPS %d is too large", iIndex);
++			tNameSize = sizeof(atPPSlist[iIndex].szName);
++		}
+ 		vName2String(atPPSlist[iIndex].szName, aucBytes, tNameSize);
+ 		atPPSlist[iIndex].ucType = ucGetByte(0x42, aucBytes);
+ 		if (atPPSlist[iIndex].ucType == 5) {
diff --git a/nixpkgs/pkgs/applications/office/antiword/default.nix b/nixpkgs/pkgs/applications/office/antiword/default.nix
new file mode 100644
index 000000000000..c8cb294b0dc0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/antiword/default.nix
@@ -0,0 +1,31 @@
+{ fetchurl, stdenv }:
+
+let
+  name = "antiword-0.37";
+in
+stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchurl {
+    url = "http://www.winfield.demon.nl/linux/${name}.tar.gz";
+    sha256 = "1b7mi1l20jhj09kyh0bq14qzz8vdhhyf35gzwsq43mn6rc7h0b4f";
+  };
+
+  prePatch = ''
+    sed -i -e "s|/usr/local/bin|$out/bin|g" -e "s|/usr/share|$out/share|g" Makefile antiword.h
+    substituteInPlace Makefile --replace "gcc" "cc"
+  '';
+
+  patches = [ ./10_fix_buffer_overflow_wordole_c_CVE-2014-8123.patch ];
+
+  installTargets = [ "global_install" ];
+
+  meta = {
+    homepage = "http://www.winfield.demon.nl/";
+    description = "Convert MS Word documents to plain text or PostScript";
+    license = stdenv.lib.licenses.gpl2;
+
+    maintainers = [ stdenv.lib.maintainers.peti ];
+    platforms = with stdenv.lib.platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/atlassian-cli/default.nix b/nixpkgs/pkgs/applications/office/atlassian-cli/default.nix
new file mode 100644
index 000000000000..22eee857b208
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/atlassian-cli/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchzip, jre }:
+
+stdenv.mkDerivation rec {
+  pname = "atlassian-cli";
+  version = "9.2.0";
+  
+  src = fetchzip {
+    url  = "https://bobswift.atlassian.net/wiki/download/attachments/16285777/${pname}-${version}-distribution.zip";
+    sha256  = "0rdnbx3zfz3lpgka7bb8jzapkr81l2yvgsbmn8hrhva5k61xwx3d";
+    extraPostFetch = "chmod go-w $out";
+  };
+  
+  tools = [
+    "agile"
+    "bamboo"
+    "bitbucket"
+    "confluence"
+    "csv"
+    "hipchat"
+    "jira"
+    "servicedesk"
+    "structure"
+    "tempo"
+    "trello"
+    "upm"
+  ];
+  
+  installPhase = ''
+    mkdir -p $out/{bin,share/doc/atlassian-cli}
+    cp -r lib $out/share/java
+    cp -r README.txt license $out/share/doc/atlassian-cli
+    for tool in $tools
+    do
+      substitute ${./wrapper.sh} $out/bin/$tool \
+        --subst-var out \
+        --subst-var-by jre ${jre} \
+        --subst-var-by tool $tool
+      chmod +x $out/bin/$tool
+    done
+  '';
+  
+  meta = with stdenv.lib; {
+    description = "An integrated family of CLI’s for various Atlassian applications";
+    homepage = "https://bobswift.atlassian.net/wiki/spaces/ACLI/overview";
+    license = licenses.unfreeRedistributable;
+    maintainers = with maintainers; [ twey ];
+    inherit (jre.meta) platforms;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/atlassian-cli/wrapper.sh b/nixpkgs/pkgs/applications/office/atlassian-cli/wrapper.sh
new file mode 100755
index 000000000000..80b60dbc468c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/atlassian-cli/wrapper.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+tool=@tool@
+user=ATLASSIAN_${tool^^}_USER
+host=ATLASSIAN_${tool^^}_HOST
+pass=ATLASSIAN_${tool^^}_PASS
+
+[ -f ~/.atlassian-cli ] && source ~/.atlassian-cli
+if [ x = ${!user-x} ] || [ x = ${!host-x} ] || [ x = ${!pass-x} ]
+then
+    >&2 echo please define $user, $host, and $pass in '~/.atlassian-cli'
+    exit 1
+fi
+
+@jre@/bin/java \
+    -jar @out@/share/java/@tool@-cli-* \
+    --server "${!host}" \
+    --user "${!user}" \
+    --password "${!pass}" \
+    "$@"
diff --git a/nixpkgs/pkgs/applications/office/autokey/default.nix b/nixpkgs/pkgs/applications/office/autokey/default.nix
new file mode 100644
index 000000000000..441a9a98e972
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/autokey/default.nix
@@ -0,0 +1,38 @@
+{ lib, python3Packages, fetchFromGitHub, wrapGAppsHook, gobject-introspection
+, gtksourceview3, libappindicator-gtk3, libnotify }:
+
+python3Packages.buildPythonApplication rec {
+  name = "autokey-${version}";
+  version = "0.94.1";
+
+  src = fetchFromGitHub {
+    owner = "autokey";
+    repo = "autokey";
+    rev = "v${version}";
+    sha256 = "1syxyciyxzs0khbfs9wjgj03q967p948kipw27j1031q0b5z3jxr";
+  };
+
+  # Arch requires a similar work around—see
+  # https://aur.archlinux.org/packages/autokey-py3/?comments=all
+  patches = [ ./remove-requires-dbus-python.patch ];
+
+  # Tests appear to be broken with import errors within the project structure
+  doCheck = false;
+
+  # Note: no dependencies included for Qt GUI because Qt ui is poorly
+  # maintained—see https://github.com/autokey/autokey/issues/51
+
+  buildInputs = [ wrapGAppsHook gobject-introspection gtksourceview3
+    libappindicator-gtk3 libnotify ];
+
+  propagatedBuildInputs = with python3Packages; [
+    dbus-python pyinotify xlib pygobject3 ];
+
+  meta = {
+    homepage = "https://github.com/autokey/autokey";
+    description = "Desktop automation utility for Linux and X11";
+    license = with lib.licenses; [ gpl3 ];
+    maintainers = with lib.maintainers; [ pneumaticat ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/autokey/remove-requires-dbus-python.patch b/nixpkgs/pkgs/applications/office/autokey/remove-requires-dbus-python.patch
new file mode 100644
index 000000000000..73372e435291
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/autokey/remove-requires-dbus-python.patch
@@ -0,0 +1,11 @@
+--- a/setup.py
++++ b/setup.py
+@@ -71,7 +71,7 @@
+         'console_scripts': ['autokey-gtk=autokey.gtkui.__main__:main']
+     },
+     scripts=['autokey-qt', 'autokey-run', 'autokey-shell'],
+-    install_requires=['dbus-python', 'pyinotify', 'python3-xlib'],
++    install_requires=['pyinotify', 'python-xlib'],
+     classifiers=[
+         'Development Status :: 4 - Beta',
+         'Intended Audience :: Developers',
diff --git a/nixpkgs/pkgs/applications/office/beancount/bean-add.nix b/nixpkgs/pkgs/applications/office/beancount/bean-add.nix
new file mode 100644
index 000000000000..916d13e7a83a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/beancount/bean-add.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, python3Packages }:
+
+stdenv.mkDerivation {
+  name = "bean-add-2018-01-08";
+
+  src = fetchFromGitHub {
+    owner = "simon-v";
+    repo = "bean-add";
+    rev = "660c657f295b019d8dbc26375924eb17bf654341";
+    sha256 = "0vzff2hdng8ybwd5frflhxpak0yqg0985p1dy7vpvhr8kbqqzwdz";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ python ];
+
+  installPhase = ''
+    mkdir -p $out/bin/
+    cp bean-add $out/bin/bean-add
+    chmod +x $out/bin/bean-add
+  '';
+
+  meta = {
+    homepage = "https://github.com/simon-v/bean-add/";
+    description = "beancount transaction entry assistant";
+
+    # The (only) source file states:
+    #   License: "Do what you feel is right, but don't be a jerk" public license.
+
+    maintainers = with stdenv.lib.maintainers; [ matthiasbeyer ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/office/bookworm/default.nix b/nixpkgs/pkgs/applications/office/bookworm/default.nix
new file mode 100644
index 000000000000..90b6c2fefc53
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/bookworm/default.nix
@@ -0,0 +1,70 @@
+{ stdenv, fetchFromGitHub, pantheon, vala, python3, python2, pkgconfig, libxml2, meson, ninja, gtk3, gnome3, glib, webkitgtk, libgee
+, gobject-introspection, sqlite, poppler, poppler_utils, html2text, curl, gnugrep, coreutils, bash, unzip, unar, wrapGAppsHook
+, appstream, desktop-file-utils }:
+
+stdenv.mkDerivation rec {
+  pname = "bookworm";
+  version = "1.1.2";
+
+  src = fetchFromGitHub {
+    owner = "babluboy";
+    repo = pname;
+    rev = version;
+    sha256 = "0w0rlyahpgx0l6inkbj106agbnr2czil0vdcy1zzv70apnjz488j";
+  };
+
+  nativeBuildInputs = [
+    bash
+    gobject-introspection
+    libxml2
+    meson
+    ninja
+    pkgconfig
+    python3
+    vala
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    pantheon.elementary-icon-theme
+    pantheon.granite
+    glib
+    libgee
+    gtk3
+    html2text
+    poppler
+    python2
+    sqlite
+    webkitgtk
+    appstream
+    desktop-file-utils
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  # These programs are expected in PATH from the source code and scripts
+  preFixup = ''
+    gappsWrapperArgs+=(
+      --prefix PATH : "${stdenv.lib.makeBinPath [ unzip unar poppler_utils html2text coreutils curl gnugrep ]}"
+      --prefix PATH : $out/bin
+    )
+  '';
+
+  postFixup = ''
+    patchShebangs $out/share/bookworm/scripts/mobi_lib/*.py
+    patchShebangs $out/share/bookworm/scripts/tasks/*.sh
+  '';
+
+   meta = with stdenv.lib; {
+     description = "A simple, focused eBook reader";
+     longDescription = ''
+       Read the books you love without having to worry about different format complexities like epub, pdf, mobi, cbr, etc.
+     '';
+     homepage = "https://babluboy.github.io/bookworm/";
+     license = licenses.gpl3Plus;
+     platforms = platforms.linux;
+   };
+ }
diff --git a/nixpkgs/pkgs/applications/office/calligra/default.nix b/nixpkgs/pkgs/applications/office/calligra/default.nix
new file mode 100644
index 000000000000..6915be9b6d64
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/calligra/default.nix
@@ -0,0 +1,70 @@
+{
+  mkDerivation, lib, fetchurl, extra-cmake-modules, kdoctools, makeWrapper,
+  boost, qtwebkit, qtx11extras, shared-mime-info,
+  breeze-icons, kactivities, karchive, kcodecs, kcompletion, kconfig, kconfigwidgets,
+  kcoreaddons, kdbusaddons, kdiagram, kguiaddons, khtml, ki18n,
+  kiconthemes, kitemviews, kjobwidgets, kcmutils, kdelibs4support, kio, kross,
+  knotifications, knotifyconfig, kparts, ktextwidgets, kwallet, kwidgetsaddons,
+  kwindowsystem, kxmlgui, sonnet, threadweaver,
+  kcontacts, akonadi, akonadi-calendar, akonadi-contacts,
+  eigen, git, gsl, ilmbase, kproperty, kreport, lcms2, marble, libgit2, libodfgen,
+  librevenge, libvisio, libwpd, libwpg, libwps, okular, openexr, openjpeg, phonon,
+  poppler, pstoedit, qca-qt5, vc
+# TODO: package Spnav, m2mml LibEtonyek, Libqgit2
+}:
+
+mkDerivation rec {
+  pname = "calligra";
+  version = "3.1.0";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/${pname}/${version}/${pname}-${version}.tar.xz";
+    sha256 = "0w782k0hprpb6viixnqz34sp0z5csv3prdby46z22qqkcipcs638";
+  };
+
+  patches = [ ./qt5_11.patch ];
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ extra-cmake-modules kdoctools makeWrapper ];
+
+  buildInputs = [
+    boost qtwebkit qtx11extras shared-mime-info
+    kactivities karchive kcodecs kcompletion kconfig kconfigwidgets kcoreaddons
+    kdbusaddons kdiagram kguiaddons khtml ki18n kiconthemes kitemviews
+    kjobwidgets kcmutils kdelibs4support kio kross knotifications knotifyconfig kparts
+    ktextwidgets kwallet kwidgetsaddons kwindowsystem kxmlgui sonnet threadweaver
+    kcontacts akonadi akonadi-calendar akonadi-contacts
+    eigen git gsl ilmbase kproperty kreport lcms2 marble libgit2 libodfgen librevenge
+    libvisio libwpd libwpg libwps okular openexr openjpeg phonon poppler qca-qt5 vc
+  ];
+
+  propagatedUserEnvPkgs = [ kproperty ];
+
+  NIX_CFLAGS_COMPILE = "-I${ilmbase.dev}/include/OpenEXR";
+
+  postInstall = ''
+    for i in $out/bin/*; do
+      wrapProgram $i \
+        --prefix PATH ':' "${pstoedit.out}/bin" \
+        --prefix XDG_DATA_DIRS ':' "${breeze-icons}/share"
+    done
+  '';
+
+  meta = with lib; {
+    description = "A suite of productivity applications";
+    longDescription = ''
+      Calligra Suite is a set of applications written to help
+      you to accomplish your work. Calligra includes efficient
+      and capable office components: Words for text processing,
+      Sheets for computations, Plan for planning, and Karbon for
+      vector graphics.
+    '';
+    homepage = "https://www.calligra.org/";
+    maintainers = with maintainers; [ phreedom ebzzry zraexy ];
+    platforms = platforms.linux;
+    license = with licenses; [ gpl2 lgpl2 ];
+    hydraPlatforms = [];
+    broken = true; # fails to start, kde home not found
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/calligra/qt5_11.patch b/nixpkgs/pkgs/applications/office/calligra/qt5_11.patch
new file mode 100644
index 000000000000..66ff8c6eedcd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/calligra/qt5_11.patch
@@ -0,0 +1,98 @@
+diff --git a/libs/widgets/KoCsvImportDialog.cpp b/libs/widgets/KoCsvImportDialog.cpp
+index 0ffdcf6..cdca006 100644
+--- a/libs/widgets/KoCsvImportDialog.cpp
++++ b/libs/widgets/KoCsvImportDialog.cpp
+@@ -21,6 +21,7 @@
+ #include "KoCsvImportDialog.h"
+ 
+ // Qt
++#include <QButtonGroup>
+ #include <QTextCodec>
+ #include <QTextStream>
+ 
+diff --git a/libs/widgets/KoPageLayoutWidget.cpp b/libs/widgets/KoPageLayoutWidget.cpp
+index f91555c..a3816f9 100644
+--- a/libs/widgets/KoPageLayoutWidget.cpp
++++ b/libs/widgets/KoPageLayoutWidget.cpp
+@@ -23,6 +23,8 @@
+ 
+ #include <KoUnit.h>
+ 
++#include <QButtonGroup>
++
+ class Q_DECL_HIDDEN KoPageLayoutWidget::Private
+ {
+ public:
+diff --git a/plugins/chartshape/dialogs/TableEditorDialog.cpp b/plugins/chartshape/dialogs/TableEditorDialog.cpp
+index c0d5136..d2a772e 100644
+--- a/plugins/chartshape/dialogs/TableEditorDialog.cpp
++++ b/plugins/chartshape/dialogs/TableEditorDialog.cpp
+@@ -24,6 +24,7 @@
+ 
+ // Qt
+ #include <QAbstractItemModel>
++#include <QAction>
+ 
+ // Calligra
+ #include <KoIcon.h>
+diff --git a/plugins/formulashape/FormulaToolWidget.cpp b/plugins/formulashape/FormulaToolWidget.cpp
+index ed10919..8f52177 100644
+--- a/plugins/formulashape/FormulaToolWidget.cpp
++++ b/plugins/formulashape/FormulaToolWidget.cpp
+@@ -30,6 +30,7 @@
+ #include <QWidgetAction>
+ #include <QTableWidget>
+ #include <QAction>
++#include <QHeaderView>
+ #include <QMenu>
+ 
+ FormulaToolWidget::FormulaToolWidget( KoFormulaTool* tool, QWidget* parent )
+diff --git a/sheets/dialogs/LayoutDialog.cpp b/sheets/dialogs/LayoutDialog.cpp
+index a0a9832..7d7db53 100644
+--- a/sheets/dialogs/LayoutDialog.cpp
++++ b/sheets/dialogs/LayoutDialog.cpp
+@@ -36,6 +36,7 @@
+ #include <math.h>
+ 
+ #include <QIntValidator>
++#include <QButtonGroup>
+ #include <QCheckBox>
+ #include <QFrame>
+ #include <QLabel>
+diff --git a/words/part/dialogs/KWAnchoringProperties.cpp b/words/part/dialogs/KWAnchoringProperties.cpp
+index d64208c..bfddb3a 100644
+--- a/words/part/dialogs/KWAnchoringProperties.cpp
++++ b/words/part/dialogs/KWAnchoringProperties.cpp
+@@ -35,6 +35,7 @@
+ 
+ #include <kundo2command.h>
+ 
++#include <QButtonGroup>
+ #include <QComboBox>
+ 
+ const int KWAnchoringProperties::vertRels[4][20] = {
+diff --git a/words/part/dialogs/KWRunAroundProperties.cpp b/words/part/dialogs/KWRunAroundProperties.cpp
+index e38599a..7e8b2d5 100644
+--- a/words/part/dialogs/KWRunAroundProperties.cpp
++++ b/words/part/dialogs/KWRunAroundProperties.cpp
+@@ -28,6 +28,8 @@
+ 
+ #include <kundo2command.h>
+ 
++#include <QButtonGroup>
++
+ KWRunAroundProperties::KWRunAroundProperties(FrameConfigSharedState *state)
+         : m_state(state)
+ {
+diff --git a/stage/part/KPrPresentationTool.cpp b/stage/part/KPrPresentationTool.cpp
+index ae743da..3007f91 100644
+--- a/stage/part/KPrPresentationTool.cpp
++++ b/stage/part/KPrPresentationTool.cpp
+@@ -32,6 +32,7 @@
+ #include <QDesktopServices>
+ #include <QUrl>
+ #include <QDBusConnection>
++#include <QFrame>
+ 
+ #include <KoShape.h>
+ #include <KoShapeManager.h>
diff --git a/nixpkgs/pkgs/applications/office/cb2bib/default.nix b/nixpkgs/pkgs/applications/office/cb2bib/default.nix
new file mode 100644
index 000000000000..f5b8b437249f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/cb2bib/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, qmake, qtbase, qtwebkit, qtx11extras, lzo, libX11 }:
+
+stdenv.mkDerivation rec {
+  pname = "cb2bib";
+  version = "2.0.0";
+  src = fetchurl {
+    url = "https://www.molspaces.com/dl/progs/${pname}-${version}.tar.gz";
+    sha256 = "0gv7cnxi84lr6d5y71pd67h0ilmf5c88j1jxgyn9dvj19smrv99h";
+  };
+  buildInputs = [ qtbase qtwebkit qtx11extras lzo libX11 ];
+  nativeBuildInputs = [ qmake ];
+
+  configurePhase = ''
+    runHook preConfigure
+    ./configure --prefix $out --qmakepath $QMAKE
+    runHook postConfigure
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Rapidly extract unformatted, or unstandardized bibliographic references from email alerts, journal Web pages and PDF files";
+    homepage = "http://www.molspaces.com/d_cb2bib-overview.php";
+    maintainers = with maintainers; [ edwtjo ];
+    license = licenses.gpl3;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/office/csv2odf/default.nix b/nixpkgs/pkgs/applications/office/csv2odf/default.nix
new file mode 100644
index 000000000000..7bab06ed4ab9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/csv2odf/default.nix
@@ -0,0 +1,28 @@
+{ lib, python3, fetchurl }:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "csv2odf";
+  version = "2.09";
+  src = fetchurl {
+    url = "mirror://sourceforge/project/${pname}/${pname}-${version}/${pname}-${version}.tar.gz";
+    sha256 = "09l0yfay89grjdzap2h11f0hcyn49np5zizg2yyp2aqgjs8ki57p";
+  };
+
+  meta = with lib; {
+    homepage = "https://sourceforge.net/p/csv2odf/wiki/Main_Page/";
+    description = "Convert csv files to OpenDocument Format";
+    longDescription = ''
+      csv2odf is a command line tool that can convert a comma separated value
+      (csv) file to an odf, ods, html, xlsx, or docx document that can be viewed in
+      LibreOffice and other office productivity programs. csv2odf is useful for
+      creating reports from databases and other data sources that produce csv files.
+      csv2odf can be combined with cron and shell scripts to automatically generate
+      business reports.
+      
+      The output format (fonts, number formatting, etc.) is controlled by a
+      template file that you can design in your office application of choice.
+    '';
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ leenaars ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/docear/default.nix b/nixpkgs/pkgs/applications/office/docear/default.nix
new file mode 100644
index 000000000000..fb9578c909df
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/docear/default.nix
@@ -0,0 +1,44 @@
+{stdenv, fetchurl, runtimeShell, makeWrapper
+, oraclejre
+, antialiasFont ? true
+}:
+
+stdenv.mkDerivation {
+  pname = "docear";
+  version = "1.2";
+
+  src = fetchurl {
+    url = "http://docear.org/downloads/docear_linux.tar.gz";
+    sha256 = "1g5n7r2x4gas6dl2fbyh7v9yxdcb6bzml8n3ldmpzv1rncgjcdp4";
+  };
+
+  buildInputs = [ oraclejre makeWrapper ];
+
+  buildPhase = "";
+  installPhase = ''
+    mkdir -p $out/bin
+    mkdir -p $out/share
+    cp -R * $out/share
+    chmod 0755 $out/share/ -R
+
+    # The wrapper ensures oraclejre is used
+    makeWrapper ${runtimeShell} $out/bin/docear \
+      --set _JAVA_OPTIONS "${stdenv.lib.optionalString antialiasFont ''-Dswing.aatext=TRUE -Dawt.useSystemAAFontSettings=on''}" \
+      --set JAVA_HOME ${oraclejre.home} \
+      --add-flags "$out/share/docear.sh"
+
+    chmod 0755 $out/bin/docear
+    '';
+
+  meta = with stdenv.lib; {
+    description = "A unique solution to academic literature management";
+    homepage = "http://www.docear.org/";
+    # Licenses at: http://www.docear.org/software/download/
+    license = with licenses; [
+      gpl2 # for the main software and some dependencies
+      bsd3 # for one of its dependencies
+    ];
+    maintainers = with maintainers; [ unode ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/elementary-planner/default.nix b/nixpkgs/pkgs/applications/office/elementary-planner/default.nix
new file mode 100644
index 000000000000..28a470162cef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/elementary-planner/default.nix
@@ -0,0 +1,76 @@
+{ stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkgconfig
+, desktop-file-utils
+, python3
+, vala
+, wrapGAppsHook
+, evolution-data-server
+, libical
+, libgee
+, json-glib
+, glib
+, sqlite
+, libsoup
+, gtk3
+, pantheon /* granite, icons, maintainers */
+, webkitgtk
+}:
+
+stdenv.mkDerivation rec {
+  pname = "elementary-planner";
+  version = "2.3.5";
+
+  src = fetchFromGitHub {
+    owner = "alainm23";
+    repo = "planner";
+    rev = version;
+    sha256 = "15d51sqb3k59jjishsw1fq5ib50jmhlk194y3nga329damfv8bmy";
+  };
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    meson
+    ninja
+    pkgconfig
+    python3
+    vala
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    evolution-data-server
+    glib
+    gtk3
+    json-glib
+    libgee
+    libical
+    libsoup
+    pantheon.elementary-icon-theme
+    pantheon.granite
+    sqlite
+    webkitgtk
+  ];
+
+  postPatch = ''
+    chmod +x build-aux/meson/post_install.py
+    patchShebangs build-aux/meson/post_install.py
+  '';
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      # the theme is hardcoded
+      --prefix XDG_DATA_DIRS : "${pantheon.elementary-gtk-theme}/share"
+    )
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Task manager with Todoist support designed for GNU/Linux 🚀️";
+    homepage = "https://planner-todo.web.app";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ dtzWill ] ++ pantheon.maintainers;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/office/envelope/default.nix b/nixpkgs/pkgs/applications/office/envelope/default.nix
new file mode 100644
index 000000000000..2a2f55a27a40
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/envelope/default.nix
@@ -0,0 +1,80 @@
+{ stdenv
+, fetchFromGitHub
+, fetchpatch
+, meson
+, ninja
+, pkgconfig
+, pantheon
+, python3
+, vala
+, appstream-glib
+, desktop-file-utils
+, gettext
+, glib
+, gtk3
+, libgee
+, sqlite
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "envelope";
+  version = "0.0.4";
+
+  src = fetchFromGitHub {
+    owner = "cjfloss";
+    repo = pname;
+    rev = version;
+    sha256 = "111lq1gijcm7qwpac09q11ymwiw2x3m12a28ki52f28fb1amvffc";
+  };
+
+  nativeBuildInputs = [
+    appstream-glib
+    desktop-file-utils
+    gettext
+    meson
+    ninja
+    vala
+    pkgconfig
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    libgee
+    pantheon.granite
+    sqlite
+  ];
+
+  doCheck = true;
+
+  patches = [
+    # Fix AppData Validation.
+    # https://github.com/cjfloss/envelope/pull/59
+    (fetchpatch {
+      url = "https://github.com/cjfloss/envelope/commit/b6a28eced89b8f944479fcc695aebfb9aae0c691.patch";
+      sha256 = "11znc8z52kl893n3gmmdpnp3y4vpzmb263m5gp0qxbl3xykq2wzr";
+    })
+  ];
+
+  postPatch = ''
+    chmod +x data/post_install.py
+    patchShebangs data/post_install.py
+  '';
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Personal finance manager for elementary OS";
+    homepage = "https://github.com/cjfloss/envelope";
+    maintainers = with maintainers; [ xiorcale ] ++ pantheon.maintainers;
+    platforms = platforms.linux;
+    license = licenses.gpl3Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/fava/default.nix b/nixpkgs/pkgs/applications/office/fava/default.nix
new file mode 100644
index 000000000000..8e1bb0d76d92
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/fava/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, python3, beancount }:
+
+let
+  inherit (python3.pkgs) buildPythonApplication fetchPypi;
+in
+buildPythonApplication rec {
+  pname = "fava";
+  version = "1.14";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "181ypq2p7aaq2b76s55hxxbm1hykzf45mjjgm500h4dsaa167dqy";
+  };
+
+  checkInputs = [ python3.pkgs.pytest ];
+  propagatedBuildInputs = with python3.pkgs;
+    [ 
+      Babel
+      cheroot
+      flaskbabel
+      flask
+      jinja2
+      beancount
+      click
+      markdown2
+      ply
+      simplejson
+      werkzeug
+      jaraco_functools
+    ];
+
+  # CLI test expects fava on $PATH.  Not sure why static_url fails.
+  checkPhase = ''
+    py.test tests -k 'not cli and not static_url'
+  '';
+
+  meta = {
+    homepage = "https://beancount.github.io/fava";
+    description = "Web interface for beancount";
+    license = stdenv.lib.licenses.mit;
+    maintainers = with stdenv.lib.maintainers; [ matthiasbeyer ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/flexibee/default.nix b/nixpkgs/pkgs/applications/office/flexibee/default.nix
new file mode 100644
index 000000000000..c215b9ef637d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/flexibee/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, makeWrapper, jre }:
+
+let
+  version = "2019.3.1.3";
+  majorVersion = builtins.substring 0 6 version;
+in
+
+stdenv.mkDerivation rec {
+  pname = "flexibee";
+  inherit version;
+
+  src = fetchurl {
+    url = "http://download.flexibee.eu/download/${majorVersion}/${version}/${pname}-${version}.tar.gz";
+    sha256 = "0jfj0vmrwa05ga4rhqn0sapad06mq0pampmkr75vail2289zkga2";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  prePatch = ''
+    substituteInPlace usr/sbin/flexibee-server \
+      --replace "/usr/share/flexibee" $out \
+      --replace "/var/run" "/run"
+  '';
+
+
+  installPhase = ''
+    runHook preInstall
+    cp -R usr/share/flexibee/ $out/
+    install -Dm755 usr/bin/flexibee $out/bin/flexibee
+    install -Dm755 usr/sbin/flexibee-server $out/bin/flexibee-server
+    wrapProgram $out/bin/flexibee --set JAVA_HOME "${jre}"
+    wrapProgram $out/bin/flexibee-server --set JAVA_HOME "${jre}"
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Client for an accouting economic system";
+    homepage = "https://www.flexibee.eu/";
+    license = licenses.unfree;
+    maintainers = [ maintainers.mmahut ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/gnucash/cmake_check_symbol_exists.patch b/nixpkgs/pkgs/applications/office/gnucash/cmake_check_symbol_exists.patch
new file mode 100644
index 000000000000..5e0ae68e17c6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/gnucash/cmake_check_symbol_exists.patch
@@ -0,0 +1,12 @@
+Index: gnucash-3.6/gnucash/register/register-gnome/CMakeLists.txt
+===================================================================
+--- gnucash-3.6.orig/gnucash/register/register-gnome/CMakeLists.txt
++++ gnucash-3.6/gnucash/register/register-gnome/CMakeLists.txt
+@@ -1,6 +1,7 @@
+ add_subdirectory(test)
+ 
+ #GTK before 3.14 didn't have GDK_MODIFIER_INTENT_DEFAULT_MOD_MASK
++include(CheckSymbolExists)
+ check_symbol_exists(GDK_MODIFIER_INTENT_DEFAULT_MOD_MASK gdk/gdktypes.h have_mod_mask)
+ if (NOT have_mod_mask)
+ if (MAC_INTEGRATION)
diff --git a/nixpkgs/pkgs/applications/office/gnucash/default.nix b/nixpkgs/pkgs/applications/office/gnucash/default.nix
new file mode 100644
index 000000000000..641d400886f9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/gnucash/default.nix
@@ -0,0 +1,110 @@
+{ fetchurl, stdenv, pkgconfig, makeWrapper, cmake, gtest
+, boost, icu, libxml2, libxslt, gettext, swig, isocodes, gtk3, glibcLocales
+, webkitgtk, dconf, hicolor-icon-theme, libofx, aqbanking, gwenhywfar, libdbi
+, libdbiDrivers, guile, perl, perlPackages
+}:
+
+let
+
+  # Enable gnc-fq-* to run in command line.
+  perlWrapper = stdenv.mkDerivation {
+    name = perl.name + "-wrapper-for-gnucash";
+    nativeBuildInputs = [ makeWrapper ];
+    buildInputs = [ perl ] ++ (with perlPackages; [ FinanceQuote DateManip ]);
+    phases = [ "installPhase" ];
+    installPhase = ''
+      mkdir -p $out/bin
+      for script in ${perl}/bin/*; do
+        makeWrapper $script $out''${script#${perl}} \
+          --prefix "PERL5LIB" ":" "$PERL5LIB"
+      done
+    '';
+  };
+
+in
+
+stdenv.mkDerivation rec {
+  pname = "gnucash";
+  version = "3.10";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/gnucash/${pname}-${version}.tar.bz2";
+    sha256 = "05kgg7mhizndwn7icnarqk3c19xrzfawf90y9nb3jdm6fv1741xn";
+  };
+
+  nativeBuildInputs = [ pkgconfig makeWrapper cmake gtest ];
+
+  buildInputs = [
+    boost icu libxml2 libxslt gettext swig isocodes gtk3 glibcLocales
+    webkitgtk dconf libofx aqbanking gwenhywfar libdbi
+    libdbiDrivers guile
+    perlWrapper perl
+  ] ++ (with perlPackages; [ FinanceQuote DateManip ]);
+
+  propagatedUserEnvPkgs = [ dconf ];
+
+  # glib-2.62 deprecations
+  NIX_CFLAGS_COMPILE = "-DGLIB_DISABLE_DEPRECATION_WARNINGS";
+
+  patches = [ ./cmake_check_symbol_exists.patch ];
+
+  postPatch = ''
+    patchShebangs .
+  '';
+
+  makeFlags = [ "GUILE_AUTO_COMPILE=0" ];
+
+  postInstall = ''
+    # Auto-updaters don't make sense in Nix.
+    rm $out/bin/gnc-fq-update
+
+    # Unnecessary in the release build.
+    rm $out/bin/gnucash-valgrind
+
+    wrapProgram "$out/bin/gnucash" \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:$out/share/gsettings-schemas/${pname}-${version}" \
+      --prefix XDG_DATA_DIRS : "${hicolor-icon-theme}/share" \
+      --prefix PERL5LIB ":" "$PERL5LIB" \
+      --set GNC_DBD_DIR ${libdbiDrivers}/lib/dbd \
+      --prefix GIO_EXTRA_MODULES : "${stdenv.lib.getLib dconf}/lib/gio/modules"
+  '';
+
+  # TODO: The following tests FAILED:
+  #   70 - test-load-c (Failed)
+  #   71 - test-modsysver (Failed)
+  #   72 - test-incompatdep (Failed)
+  #   73 - test-agedver (Failed)
+  #   77 - test-gnc-module-swigged-c (Failed)
+  #   78 - test-gnc-module-load-deps (Failed)
+  #   80 - test-gnc-module-scm-module (Failed)
+  #   81 - test-gnc-module-scm-multi (Failed)
+  preCheck = ''
+    export LD_LIBRARY_PATH=$PWD/lib:$PWD/lib/gnucash:$PWD/lib/gnucash/test''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH
+    export NIX_CFLAGS_LINK="-lgtest -lgtest_main"
+  '';
+  doCheck = false;
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Personal and small-business financial-accounting application";
+
+    longDescription = ''
+      GnuCash is personal and small-business financial-accounting software,
+      freely licensed under the GNU GPL and available for GNU/Linux, BSD,
+      Solaris, macOS and Microsoft Windows.
+
+      Designed to be easy to use, yet powerful and flexible, GnuCash allows
+      you to track bank accounts, stocks, income and expenses.  As quick and
+      intuitive to use as a checkbook register, it is based on professional
+      accounting principles to ensure balanced books and accurate reports.
+    '';
+
+    license = stdenv.lib.licenses.gpl2Plus;
+
+    homepage = "http://www.gnucash.org/";
+
+    maintainers = [ stdenv.lib.maintainers.peti stdenv.lib.maintainers.domenkozar ];
+    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/gnumeric/default.nix b/nixpkgs/pkgs/applications/office/gnumeric/default.nix
new file mode 100644
index 000000000000..40351ba64a18
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/gnumeric/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, pkgconfig, intltool, perlPackages
+, goffice, gnome3, wrapGAppsHook, gtk3, bison, python3Packages
+, itstool
+}:
+
+let
+  inherit (python3Packages) python pygobject3;
+in stdenv.mkDerivation rec {
+  pname = "gnumeric";
+  version = "1.12.47";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1khrf72kiq50y8b5prbj2207k9shn36h2b2i588cc4wa28s9y5a0";
+  };
+
+  configureFlags = [ "--disable-component" ];
+
+  nativeBuildInputs = [ pkgconfig intltool bison itstool wrapGAppsHook ];
+
+  # ToDo: optional libgda, introspection?
+  buildInputs = [
+    goffice gtk3 gnome3.adwaita-icon-theme
+    python pygobject3
+  ] ++ (with perlPackages; [ perl XMLParser ]);
+
+  enableParallelBuilding = true;
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "The GNOME Office Spreadsheet";
+    license = stdenv.lib.licenses.gpl2Plus;
+    homepage = "http://projects.gnome.org/gnumeric/";
+    platforms = platforms.unix;
+    maintainers = [ maintainers.vcunat ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/grisbi/default.nix b/nixpkgs/pkgs/applications/office/grisbi/default.nix
new file mode 100644
index 000000000000..d4f08b141a6e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/grisbi/default.nix
@@ -0,0 +1,47 @@
+{ fetchurl
+, stdenv
+, gtk
+, pkgconfig
+, libgsf
+, libofx
+, intltool
+, wrapGAppsHook
+, libsoup
+, gnome3
+}:
+
+stdenv.mkDerivation rec {
+  pname = "grisbi";
+  version = "1.2.2";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/grisbi/${pname}-${version}.tar.bz2";
+    sha256 = "1piiyyxjsjbw9gcqydvknzxmmfgh8kdqal12ywrxyxih2afwnvbw";
+  };
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+  buildInputs = [
+    gtk
+    libgsf
+    libofx
+    intltool
+    libsoup
+    gnome3.adwaita-icon-theme
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A personnal accounting application.";
+    longDescription = ''
+      Grisbi is an application written by French developers, so it perfectly
+      respects French accounting rules. Grisbi can manage multiple accounts,
+      currencies and users. It manages third party, expenditure and receipt
+      categories, budgetary lines, financial years, budget estimates, bankcard
+      management and other information that make Grisbi adapted for
+      associations.
+    '';
+    homepage = "https://grisbi.org";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ layus ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/homebank/default.nix b/nixpkgs/pkgs/applications/office/homebank/default.nix
new file mode 100644
index 000000000000..1f60d7df9277
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/homebank/default.nix
@@ -0,0 +1,22 @@
+{ fetchurl, stdenv, gtk, pkgconfig, libofx, intltool, wrapGAppsHook
+, libsoup, gnome3 }:
+
+stdenv.mkDerivation rec {
+  name = "homebank-5.4.2";
+  src = fetchurl {
+    url = "http://homebank.free.fr/public/${name}.tar.gz";
+    sha256 = "0bkjvd819kw9cwmr3macggbg8yil3yc8v2za8pjrl6g746s89kn6";
+  };
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+  buildInputs = [ gtk libofx intltool libsoup
+    gnome3.adwaita-icon-theme ];
+
+  meta = with stdenv.lib; {
+    description = "Free, easy, personal accounting for everyone";
+    homepage = "http://homebank.free.fr/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ pSub ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/ib/controller/default.nix b/nixpkgs/pkgs/applications/office/ib/controller/default.nix
new file mode 100644
index 000000000000..7be7e4467b52
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/ib/controller/default.nix
@@ -0,0 +1,162 @@
+{ stdenv, fetchurl, unzip, jdk, ib-tws, xpra }:
+
+stdenv.mkDerivation rec {
+  version = "2.14.0";
+  pname = "ib-controller";
+
+  src = fetchurl {
+    url = "https://github.com/ib-controller/ib-controller/archive/${version}.tar.gz";
+    sha256 = "17a8bcgg9z3b4y38k035hm2lgvhmf8srlz59c7n2q3fdw2i95i68";
+  };
+
+  phases = [ "unpackPhase" "installPhase" ];
+
+  buildInputs = [ unzip jdk ib-tws ];
+
+  installPhase = ''
+    mkdir -p $out $out/bin $out/etc/ib/controller $out/share/IBController
+    cp resources/*.jar $out/share/IBController/.
+    cp resources/*.ini $out/etc/ib/controller/.
+    classpath=""
+    for jar in ${ib-tws}/share/IBJts/*.jar; do
+      classpath="$classpath:$jar"
+    done
+    for jar in $out/share/IBController/*.jar; do
+      classpath="$classpath:$jar"
+    done
+    # strings to use below; separated to avoid nix specific substitutions
+    javaOptions={JAVA_OPTIONS:--Xmx1024M}
+    ibProfileDir={IB_PROFILE_DIR:-~/IB/}
+    cat<<EOF > $out/bin/ib-tws-c
+    #!$SHELL
+    if [[ \$1 == /* ]] || [[ \$1 == ./* ]]; then
+      IB_USER_PROFILE=\`realpath \$1\`
+      IB_USER_PROFILE_TITLE=\`basename \$1\`
+    else
+      if [[ x\$1 != "x" ]] && [[ \$1 != -* ]]; then
+        IB_USER_PROFILE=\`realpath \$$ibProfileDir\$1\`
+        IB_USER_PROFILE_TITLE=\$1
+      else
+        echo "ERROR: \"\$1\" is not a valid name of a profile."
+        exit 1
+      fi
+    fi
+    shift
+    if [ ! -e \$IB_USER_PROFILE ]; then mkdir -p \$IB_USER_PROFILE; fi
+    if [ ! -d \$IB_USER_PROFILE ]; then echo "ERROR: \$IB_USER_PROFILE must be a directory!" && echo 1; fi
+    if [ ! -e \$IB_USER_PROFILE/jts.ini ]; then cp ${ib-tws}/etc/ib/tws/jts.ini \$IB_USER_PROFILE/. && chmod +w \$IB_USER_PROFILE/jts.ini; fi
+    if [ ! -e \$IB_USER_PROFILE/IBController.ini ]; then cp $out/etc/ib/controller/IBController.ini \$IB_USER_PROFILE/. && chmod +w \$IB_USER_PROFILE/IBController.ini; fi
+    if [[ \$1 == "-q" ]]; then
+      if [ -f \$IB_USER_PROFILE/xpra/run ]; then
+        ${xpra}/bin/xpra stop \`cat \$IB_USER_PROFILE/xpra/run\` --socket-dir=\$IB_USER_PROFILE/xpra/ &> /dev/null
+      fi
+      exit 0
+    fi
+    if [[ \$1 == "-d" ]] && [ ! -f \$IB_USER_PROFILE/xpra/run ]; then
+      ( sleep infinity ) &
+      WAIT_DUMMY_PID=\$!
+      ( trap "" INT;
+        DISPLAYNUM=100
+        while [ -f /tmp/.X\$DISPLAYNUM-lock ]; do DISPLAYNUM=\$((\$DISPLAYNUM + 1)); done
+        mkdir -p \$IB_USER_PROFILE/xpra
+        cd \$IB_USER_PROFILE
+        nohup ${xpra}/bin/xpra start :\$DISPLAYNUM \
+          --socket-dir=\$IB_USER_PROFILE/xpra/ \
+          --start-child="echo -n :\$DISPLAYNUM > \$IB_USER_PROFILE/xpra/run \
+                         && kill \$WAIT_DUMMY_PID &> /dev/null \
+                         && ${jdk}/bin/java -cp $classpath \$$javaOptions ibcontroller.IBController \$IB_USER_PROFILE/IBController.ini" \
+          --exit-with-children \
+          --no-pulseaudio \
+          --no-mdns \
+          --no-notification \
+          --no-daemon \
+          &> \$IB_USER_PROFILE/xpra/server.log
+        rm -f \$IB_USER_PROFILE/xpra/run
+        rm -f /tmp/.X\$DISPLAYNUM-lock
+      ) &
+      wait \$WAIT_DUMMY_PID
+      exit 0
+    fi
+    if [ -f \$IB_USER_PROFILE/xpra/run ]; then
+      ${xpra}/bin/xpra attach \`cat \$IB_USER_PROFILE/xpra/run\` --socket-dir=\$IB_USER_PROFILE/xpra/ \
+      --windows \
+      --no-speaker \
+      --no-microphone \
+      --no-tray \
+      --title="\$IB_USER_PROFILE_TITLE: @title@" \
+      &> \$IB_USER_PROFILE/xpra/client.log
+    fi
+    EOF
+    chmod u+x $out/bin/ib-tws-c
+    cat<<EOF > $out/bin/ib-gw-c
+    #!$SHELL
+    if [[ \$1 == /* ]] || [[ \$1 == ./* ]]; then
+      IB_USER_PROFILE=\`realpath \$1\`
+      IB_USER_PROFILE_TITLE=\`basename \$1\`
+    else
+      if [[ x\$1 != "x" ]] && [[ \$1 != -* ]]; then
+        IB_USER_PROFILE=\`realpath \$$ibProfileDir\$1\`
+        IB_USER_PROFILE_TITLE=\$1
+      else
+        echo "ERROR: \"\$1\" is not a valid name of a profile."
+        exit 1
+      fi
+    fi
+    shift
+    if [ ! -e \$IB_USER_PROFILE ]; then mkdir -p \$IB_USER_PROFILE; fi
+    if [ ! -d \$IB_USER_PROFILE ]; then echo "ERROR: \$IB_USER_PROFILE must be a directory!" && echo 1; fi
+    if [ ! -e \$IB_USER_PROFILE/jts.ini ]; then cp ${ib-tws}/etc/ib/tws/jts.ini \$IB_USER_PROFILE/. && chmod +w \$IB_USER_PROFILE/jts.ini; fi
+    if [ ! -e \$IB_USER_PROFILE/IBController.ini ]; then cp $out/etc/ib/controller/IBController.ini \$IB_USER_PROFILE/. && chmod +w \$IB_USER_PROFILE/IBController.ini; fi
+    if [[ \$1 == "-q" ]]; then
+      if [ -f \$IB_USER_PROFILE/xpra/run ]; then
+        ${xpra}/bin/xpra stop \`cat \$IB_USER_PROFILE/xpra/run\` --socket-dir=\$IB_USER_PROFILE/xpra/ &> /dev/null
+      fi
+      exit 0
+    fi
+    if [[ \$1 == "-d" ]] && [ ! -f \$IB_USER_PROFILE/xpra/run ]; then
+      ( sleep infinity ) &
+      WAIT_DUMMY_PID=\$!
+      ( trap "" INT;
+        DISPLAYNUM=100
+        while [ -f /tmp/.X\$DISPLAYNUM-lock ]; do DISPLAYNUM=\$((\$DISPLAYNUM + 1)); done
+        mkdir -p \$IB_USER_PROFILE/xpra
+        cd \$IB_USER_PROFILE
+        nohup ${xpra}/bin/xpra start :\$DISPLAYNUM \
+          --socket-dir=\$IB_USER_PROFILE/xpra/ \
+          --start-child="echo -n :\$DISPLAYNUM > \$IB_USER_PROFILE/xpra/run \
+                         && kill \$WAIT_DUMMY_PID &> /dev/null \
+                         && ${jdk}/bin/java -cp $classpath \$$javaOptions ibcontroller.IBGatewayController \$IB_USER_PROFILE/IBController.ini" \
+          --exit-with-children \
+          --no-pulseaudio \
+          --no-mdns \
+          --no-notification \
+          --no-daemon \
+          &> \$IB_USER_PROFILE/xpra/server.log
+        rm -f \$IB_USER_PROFILE/xpra/run
+        rm -f /tmp/.X\$DISPLAYNUM-lock
+      ) &
+      wait \$WAIT_DUMMY_PID
+      exit 0
+    fi
+    if [ -f \$IB_USER_PROFILE/xpra/run ]; then
+      ${xpra}/bin/xpra attach \`cat \$IB_USER_PROFILE/xpra/run\` --socket-dir=\$IB_USER_PROFILE/xpra/ \
+      --windows \
+      --no-speaker \
+      --no-microphone \
+      --no-tray \
+      --title="\$IB_USER_PROFILE_TITLE: @title@" \
+      &> \$IB_USER_PROFILE/xpra/client.log
+    fi
+    EOF
+    chmod u+x $out/bin/ib-gw-c
+    '';
+
+
+  meta = with stdenv.lib; {
+    description = "Automation Controller for the Trader Work Station of Interactive Brokers";
+    homepage = "https://github.com/ib-controller/ib-controller";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.tstrobel ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/ib/tws/default.nix b/nixpkgs/pkgs/applications/office/ib/tws/default.nix
new file mode 100644
index 000000000000..b8b31bed7c5e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/ib/tws/default.nix
@@ -0,0 +1,96 @@
+{ stdenv, requireFile, jdk }:
+
+stdenv.mkDerivation rec {
+  version = "9542";
+  pname = "ib-tws";
+
+  src = requireFile rec {
+    name = "ibtws_${version}.jar";
+    message = ''
+      This nix expression requires that ${name} is already part of the store.
+      Download the TWS from
+      https://download2.interactivebrokers.com/download/unixmacosx_latest.jar,
+      rename the file to ${name}, and add it to the nix store with
+      "nix-prefetch-url file://\$PWD/${name}".
+    '';
+    sha256 = "1a2jiwwnr5g3xfba1a89c257bdbnq4zglri8hz021vk7f6s4rlrf";
+  };
+
+  phases = [ "unpackPhase" "buildPhase" "installPhase" ];
+
+  buildInputs = [ jdk ];
+
+  buildPhase = ''
+    jar -xf IBJts/jts.jar
+    cp trader/common/images/ibapp_icon.gif ibtws_icon.gif
+    '';
+
+  unpackPhase = ''
+    jar xf ${src}
+    '';
+
+  installPhase = ''
+    mkdir -p $out $out/bin $out/etc/ib/tws $out/share/IBJts $out/share/icons
+    cp IBJts/*.jar $out/share/IBJts/.
+    cp IBJts/*.ini $out/etc/ib/tws/.
+    cp ibtws_icon.gif $out/share/icons/.
+    classpath=""
+    for jar in $out/share/IBJts/*.jar; do
+      classpath="$classpath:$jar"
+    done
+    # strings to use below; separated to avoid nix specific substitutions
+    javaOptions={JAVA_OPTIONS:-'-Xmx1024M -Dawt.useSystemAAFontSettings=lcd -Dsun.java2d.xrender=True -Dsun.java2d.opengl=False'}
+    # OTHER JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java
+    ibProfileDir={IB_PROFILE_DIR:-~/IB/}
+    cat<<EOF > $out/bin/ib-tws
+    #!$SHELL
+    if [[ \$1 == /* ]] || [[ \$1 == ./* ]]; then
+      IB_USER_PROFILE=\`realpath \$1\`
+      IB_USER_PROFILE_TITLE=\`basename \$1\`
+    else
+      if [[ x\$1 != "x" ]] && [[ \$1 != -* ]]; then
+        IB_USER_PROFILE=\`realpath \$$ibProfileDir\$1\`
+        IB_USER_PROFILE_TITLE=\$1
+      else
+        echo "ERROR: \"\$1\" is not a valid name of a profile."
+        exit 1
+      fi
+    fi
+    shift
+    if [ ! -e \$IB_USER_PROFILE ]; then mkdir -p \$IB_USER_PROFILE; fi
+    if [ ! -d \$IB_USER_PROFILE ]; then echo "ERROR: \$IB_USER_PROFILE must be a directory!" && echo 1; fi
+    if [ ! -e \$IB_USER_PROFILE/jts.ini ]; then cp $out/etc/ib/tws/jts.ini \$IB_USER_PROFILE/. && chmod +w \$IB_USER_PROFILE/jts.ini; fi
+    ${jdk}/bin/java -cp $classpath \$$javaOptions jclient.LoginFrame \$IB_USER_PROFILE
+    EOF
+    chmod u+x $out/bin/ib-tws
+    cat<<EOF > $out/bin/ib-gw
+    #!$SHELL
+    if [[ \$1 == /* ]] || [[ \$1 == ./* ]]; then
+      IB_USER_PROFILE=\`realpath \$1\`
+      IB_USER_PROFILE_TITLE=\`basename \$1\`
+    else
+      if [[ x\$1 != "x" ]] && [[ \$1 != -* ]]; then
+        IB_USER_PROFILE=\`realpath \$$ibProfileDir\$1\`
+        IB_USER_PROFILE_TITLE=\$1
+      else
+        echo "ERROR: \"\$1\" is not a valid name of a profile."
+        exit 1
+      fi
+    fi
+    shift
+    if [ ! -e \$IB_USER_PROFILE ]; then mkdir -p \$IB_USER_PROFILE; fi
+    if [ ! -d \$IB_USER_PROFILE ]; then echo "ERROR: \$IB_USER_PROFILE must be a directory!" && echo 1; fi
+    if [ ! -e \$IB_USER_PROFILE/jts.ini ]; then cp $out/etc/ib/tws/jts.ini \$IB_USER_PROFILE/. && chmod +w \$IB_USER_PROFILE/jts.ini; fi
+    ${jdk}/bin/java -cp $classpath -Dsun.java2d.noddraw=true \$$javaOptions ibgateway.GWClient \$IB_USER_PROFILE
+    EOF
+    chmod u+x $out/bin/ib-gw
+    '';
+
+  meta = with stdenv.lib; {
+    description = "Trader Work Station of Interactive Brokers";
+    homepage = "https://www.interactivebrokers.com";
+    license = licenses.unfree;
+    maintainers = [ maintainers.tstrobel ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/impressive/default.nix b/nixpkgs/pkgs/applications/office/impressive/default.nix
new file mode 100644
index 000000000000..ed8cc1dd50a7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/impressive/default.nix
@@ -0,0 +1,69 @@
+{ fetchurl, stdenv, python2, makeWrapper, lib
+, SDL, ghostscript, pdftk, dejavu_fonts }:
+
+let
+  version = "0.12.1";
+  pythonEnv = python2.withPackages (ps: with ps; [pyopengl pygame pillow]);
+in stdenv.mkDerivation {
+    # This project was formerly known as KeyJNote.
+    # See http://keyj.emphy.de/apple-lawsuit/ for details.
+
+    pname = "impressive";
+    inherit version;
+
+    src = fetchurl {
+      url = "mirror://sourceforge/impressive/Impressive-${version}.tar.gz";
+      sha256 = "1r7ihv41awnlnlry1kymb8fka053wdhzibfwcarn78rr3vs338vl";
+    };
+
+    buildInputs = [ makeWrapper pythonEnv ];
+
+    configurePhase = ''
+      # Let's fail at build time if the library we're substituting in doesn't
+      # exist/isn't marked as executable
+      test -x ${SDL}/lib/libSDL.so
+      sed -i "impressive.py" \
+          -e '/^__website__/a SDL_LIBRARY = "${SDL}/lib/libSDL.so"' \
+          -e 's/sdl = CDLL.*/sdl = CDLL(SDL_LIBRARY)/' \
+          -e 's^FontPath =.*/usr/.*$^FontPath = ["${dejavu_fonts}/share/fonts", ""]^'
+    '';
+
+    installPhase = ''
+      mkdir -p "$out/bin" "$out/share/doc/impressive" "$out/share/man/man1"
+      mv impressive.py "$out/bin/impressive"
+      mv impressive.1 "$out/share/man/man1"
+      mv changelog.txt impressive.html license.txt "$out/share/doc/impressive"
+
+      wrapProgram "$out/bin/impressive" \
+         --prefix PATH ":" "${ghostscript}/bin:${pdftk}/bin"
+    '';
+
+    meta = {
+      description = "Impressive, an effect-rich presentation tool for PDFs";
+
+      longDescription = ''
+        Impressive is a program that displays presentation slides.
+        But unlike OpenOffice.org Impress or other similar
+        applications, it does so with style.  Smooth alpha-blended
+        slide transitions are provided for the sake of eye candy, but
+        in addition to this, Impressive offers some unique tools that
+        are really useful for presentations.  Read below if you want
+        to know more about these features.
+
+        Creating presentations for Impressive is very simple: You just
+        need to export a PDF file from your presentation software.
+        This means that you can create slides in the application of
+        your choice and use Impressive for displaying them.  If your
+        application does not support PDF output, you can alternatively
+        use a set of pre-rendered image files – or you use Impressive
+        to make a slideshow with your favorite photos.
+      '';
+
+      homepage = "http://impressive.sourceforge.net/";
+
+      license = stdenv.lib.licenses.gpl2;
+
+      maintainers = with lib.maintainers; [ lheckemann ];
+      platforms = stdenv.lib.platforms.mesaPlatforms;
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/office/jabref/default.nix b/nixpkgs/pkgs/applications/office/jabref/default.nix
new file mode 100644
index 000000000000..01ba190cf31f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/jabref/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, makeWrapper, makeDesktopItem, jdk, jre, wrapGAppsHook, gtk3, gsettings-desktop-schemas }:
+
+stdenv.mkDerivation rec {
+  version = "3.8.1";
+  pname = "jabref";
+
+  src = fetchurl {
+    url = "https://github.com/JabRef/jabref/releases/download/v${version}/JabRef-${version}.jar";
+    sha256 = "11asfym74zdq46i217z5n6vc79gylcx8xn7nvwacfqmym0bz79cg";
+  };
+
+  desktopItem = makeDesktopItem {
+    comment =  meta.description;
+    name = "jabref";
+    desktopName = "JabRef";
+    genericName = "Bibliography manager";
+    categories = "Application;Office;";
+    icon = "jabref";
+    exec = "jabref";
+  };
+
+  buildInputs = [ makeWrapper jdk wrapGAppsHook gtk3 gsettings-desktop-schemas ];
+
+  dontUnpack = true;
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/java $out/share/icons
+
+    cp -r ${desktopItem}/share/applications $out/share/
+
+    jar xf $src images/icons/JabRef-icon-mac.svg
+    cp images/icons/JabRef-icon-mac.svg $out/share/icons/jabref.svg
+
+    ln -s $src $out/share/java/jabref-${version}.jar
+    makeWrapper ${jre}/bin/java $out/bin/jabref \
+      --add-flags "-jar $out/share/java/jabref-${version}.jar"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Open source bibliography reference manager";
+    homepage = "https://www.jabref.org";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.gebner ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/jameica/default.nix b/nixpkgs/pkgs/applications/office/jameica/default.nix
new file mode 100644
index 000000000000..6dc124c6a200
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/jameica/default.nix
@@ -0,0 +1,75 @@
+{ stdenv, fetchFromGitHub, makeDesktopItem, makeWrapper, ant, jdk, jre, gtk2, glib, xorg, Cocoa }:
+
+let
+  _version = "2.8.6";
+  _build = "455";
+  version = "${_version}-${_build}";
+  name = "jameica-${version}";
+
+  swtSystem = if stdenv.hostPlatform.system == "i686-linux" then "linux"
+  else if stdenv.hostPlatform.system == "x86_64-linux" then "linux64"
+  else if stdenv.hostPlatform.system == "x86_64-darwin" then "macos64"
+  else throw "Unsupported system: ${stdenv.hostPlatform.system}";
+
+  desktopItem = makeDesktopItem {
+    name = "jameica";
+    exec = "jameica";
+    comment = "Free Runtime Environment for Java Applications.";
+    desktopName = "Jameica";
+    genericName = "Jameica";
+    categories = "Office;";
+  };
+in
+stdenv.mkDerivation rec {
+  inherit name version;
+
+  nativeBuildInputs = [ ant jdk makeWrapper ];
+  buildInputs = stdenv.lib.optionals stdenv.isLinux [ gtk2 glib xorg.libXtst ]
+                ++ stdenv.lib.optional stdenv.isDarwin Cocoa;
+
+  src = fetchFromGitHub {
+    owner = "willuhn";
+    repo = "jameica";
+    rev = "V_${builtins.replaceStrings ["."] ["_"] _version}_BUILD_${_build}";
+    sha256 = "1pndklxsvixy6zyblqr62ki3pqaq8lfrzgasrvhclqxxh76gjlss";
+  };
+
+  # there is also a build.gradle, but it only seems to be used to vendor 3rd party libraries
+  # and is not able to build the application itself
+  buildPhase = ''
+    (cd build; ant -Dsystem.version=${version} init compile jar)
+  '';
+
+  installPhase = ''
+    mkdir -p $out/libexec $out/lib $out/bin $out/share/{applications,${name},java}/
+
+    # copy libraries except SWT
+    cp $(find lib -type f -iname '*.jar' | grep -ve 'swt/.*/swt.jar') $out/share/${name}/
+    # copy platform-specific SWT
+    cp lib/swt/${swtSystem}/swt.jar $out/share/${name}/
+
+    install -Dm644 releases/${_version}-*/jameica/jameica.jar $out/share/java/
+    install -Dm644 plugin.xml $out/share/java/
+    install -Dm644 build/jameica-icon.png $out/share/pixmaps/jameica.png
+    cp ${desktopItem}/share/applications/* $out/share/applications/
+
+    makeWrapper ${jre}/bin/java $out/bin/jameica \
+      --add-flags "-cp $out/share/java/jameica.jar:$out/share/${name}/* ${
+        stdenv.lib.optionalString stdenv.isDarwin ''-Xdock:name="Jameica" -XstartOnFirstThread''
+      } de.willuhn.jameica.Main" \
+      --prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath buildInputs} \
+      --run "cd $out/share/java/"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.willuhn.de/products/jameica/";
+    description = "Free Runtime Environment for Java Applications";
+    longDescription = ''
+      Runtime Environment for plugins like Hibiscus (HBCI Online Banking),
+      SynTAX (accounting) and JVerein (club management).
+    '';
+    license = licenses.gpl2Plus;
+    platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
+    maintainers = with maintainers; [ flokli ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/keepnote/default.nix b/nixpkgs/pkgs/applications/office/keepnote/default.nix
new file mode 100644
index 000000000000..cf1b5125adf9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/keepnote/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, python2Packages }:
+
+python2Packages.buildPythonApplication {
+  name = "keepnote-0.7.8";
+  namePrefix = "";
+
+  src = fetchurl {
+    url = "http://keepnote.org/download/keepnote-0.7.8.tar.gz";
+    sha256 = "0nhkkv1n0lqf3zn17pxg5cgryv1wwlj4hfmhixwd76rcy8gs45dh";
+  };
+
+  propagatedBuildInputs = with python2Packages; [ pyGtkGlade ];
+
+  # Testing fails.
+  doCheck = false;
+
+  meta = {
+    description = "Note taking application";
+    homepage = "http://keepnote.org";
+    license = stdenv.lib.licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/kexi/default.nix b/nixpkgs/pkgs/applications/office/kexi/default.nix
new file mode 100644
index 000000000000..4900dafb08e5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/kexi/default.nix
@@ -0,0 +1,57 @@
+{
+  mkDerivation, lib, fetchurl, fetchpatch, extra-cmake-modules, kdoctools,
+  boost, qttools, qtwebkit,
+  breeze-icons, karchive, kcodecs, kcompletion, kconfig, kconfigwidgets, kcoreaddons,
+  kcrash, kguiaddons, ki18n, kiconthemes, kitemviews, kio, ktexteditor, ktextwidgets,
+  kwidgetsaddons, kxmlgui,
+  kdb, kproperty, kreport, lcms2, libmysqlclient, marble, postgresql
+}:
+
+mkDerivation rec {
+  pname = "kexi";
+  version = "3.2.0";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/${pname}/src/${pname}-${version}.tar.xz";
+    sha256 = "1zy1q7q9rfdaws3rwf3my22ywkn6g747s3ixfcg9r80mm2g3z0bs";
+  };
+
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+
+  buildInputs = [
+    boost qttools qtwebkit
+    breeze-icons karchive kcodecs kcompletion kconfig kconfigwidgets kcoreaddons
+    kcrash kguiaddons ki18n kiconthemes kitemviews kio ktexteditor ktextwidgets
+    kwidgetsaddons kxmlgui
+    kdb kproperty kreport lcms2 libmysqlclient marble postgresql
+  ];
+
+  propagatedUserEnvPkgs = [ kproperty ];
+
+  patches = [
+    # Changes in Qt 5.13 mean that QDate isn't exported from certain places,
+    # which the build was relying on. This patch explicitly imports QDate where
+    # needed.
+    # Should be unnecessary with kexi >= 3.3
+    (fetchpatch {
+      url = "https://cgit.kde.org/kexi.git/patch/src/plugins/forms/widgets/kexidbdatepicker.cpp?id=511d99b7745a6ce87a208bdbf69e631f1f136d53";
+      sha256 = "0m5cwq2v46gb1b12p7acck6dadvn7sw4xf8lkqikj9hvzq3r1dnj";
+    })
+  ];
+
+  meta = with lib; {
+    description = "A open source visual database applications creator, a long-awaited competitor for programs like MS Access or Filemaker";
+    longDescription = ''
+      Kexi is a visual database applications creator.
+      It can be used for creating database schemas,
+      inserting data, performing queries, and processing data.
+      Forms can be created to provide a custom interface to your data.
+      All database objects - tables, queries and forms - are stored in the database,
+      making it easy to share data and design.
+    '';
+    homepage = "http://kexi-project.org/";
+    maintainers = with maintainers; [ zraexy ];
+    platforms = platforms.linux;
+    license = with licenses; [ gpl2 lgpl2 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/khronos/default.nix b/nixpkgs/pkgs/applications/office/khronos/default.nix
new file mode 100644
index 000000000000..1962528f6b68
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/khronos/default.nix
@@ -0,0 +1,64 @@
+{ stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, vala
+, pkg-config
+, desktop-file-utils
+, pantheon
+, python3
+, glib
+, gtk3
+, json-glib
+, libgee
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "khronos";
+  version = "1.0.8";
+
+  src = fetchFromGitHub {
+    owner = "lainsce";
+    repo = pname;
+    rev = version;
+    sha256 = "0d5ma1d86lh2apagwrwk0d1v1cm3fifjivhf530nlznb67vi1x80";
+  };
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    meson
+    ninja
+    vala
+    pkg-config
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    json-glib
+    libgee
+    pantheon.granite
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Track each task's time in a simple inobtrusive way";
+    homepage = "https://github.com/lainsce/khronos";
+    maintainers = with maintainers; [ xiorcale ] ++ pantheon.maintainers;
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/kmymoney/default.nix b/nixpkgs/pkgs/applications/office/kmymoney/default.nix
new file mode 100644
index 000000000000..e15615f78a34
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/kmymoney/default.nix
@@ -0,0 +1,73 @@
+{ stdenv, lib, fetchurl, doxygen, extra-cmake-modules, graphviz, kdoctools
+, wrapQtAppsHook
+
+, akonadi, alkimia, aqbanking, gmp, gwenhywfar, kactivities, karchive
+, kcmutils, kcontacts, kdewebkit, kdiagram, kholidays, kidentitymanagement
+, kitemmodels, libical, libofx, qgpgme
+
+, sqlcipher
+
+# Needed for running tests:
+, qtbase, xvfb_run
+
+, python2, python3Packages
+}:
+
+stdenv.mkDerivation rec {
+  pname = "kmymoney";
+  version = "5.1.0";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/kmymoney/${version}/src/${pname}-${version}.tar.xz";
+    sha256 = "0l8kywq77yaf1bqgdqswrai9ws6a2l11drg0wgyi7f8js7qnif9d";
+  };
+
+  # Hidden dependency that wasn't included in CMakeLists.txt:
+  NIX_CFLAGS_COMPILE = "-I${kitemmodels.dev}/include/KF5";
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [
+    doxygen extra-cmake-modules graphviz kdoctools python2
+    python3Packages.wrapPython wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    akonadi alkimia aqbanking gmp gwenhywfar kactivities karchive kcmutils
+    kcontacts kdewebkit kdiagram kholidays kidentitymanagement kitemmodels
+    libical libofx qgpgme
+    sqlcipher
+
+    # Put it into buildInputs so that CMake can find it, even though we patch
+    # it into the interface later.
+    python3Packages.weboob
+  ];
+
+  weboobPythonPath = [ python3Packages.weboob ];
+
+  postInstall = ''
+    buildPythonPath "$weboobPythonPath"
+    patchPythonScript "$out/share/kmymoney/weboob/kmymoneyweboob.py"
+
+    # Within the embedded Python interpreter, sys.argv is unavailable, so let's
+    # assign it to a dummy value so that the assignment of sys.argv[0] injected
+    # by patchPythonScript doesn't fail:
+    sed -i -e '1i import sys; sys.argv = [""]' \
+      "$out/share/kmymoney/weboob/kmymoneyweboob.py"
+  '';
+
+  doInstallCheck = stdenv.hostPlatform == stdenv.buildPlatform;
+  installCheckInputs = [ xvfb_run ];
+  installCheckPhase =
+    lib.optionalString doInstallCheck ''
+      xvfb-run -s '-screen 0 1024x768x24' make test \
+        ARGS="-E '(reports-chart-test)'" # Test fails, so exclude it for now.
+    '';
+
+  meta = {
+    description = "Personal finance manager for KDE";
+    homepage = "https://kmymoney.org/";
+    platforms = lib.platforms.linux;
+    license = lib.licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/ktimetracker/default.nix b/nixpkgs/pkgs/applications/office/ktimetracker/default.nix
new file mode 100644
index 000000000000..8a40a3f4f69d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/ktimetracker/default.nix
@@ -0,0 +1,32 @@
+{ mkDerivation, lib, fetchurl, cmake, pkgconfig, extra-cmake-modules,
+kconfig, kconfigwidgets, kdbusaddons, kdoctools, ki18n, kidletime,
+kjobwidgets, kio, knotifications, kwindowsystem, kxmlgui, ktextwidgets,
+kcalendarcore
+}:
+
+mkDerivation rec {
+  pname = "ktimetracker";
+  version = "5.0.1";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/${pname}/${version}/src/${pname}-${version}.tar.xz";
+    sha256 = "0jp63fby052rapjjaz413b1wjz4qsgpxh82y2d75jzimch0n5s02";
+  };
+
+  nativeBuildInputs = [
+    cmake pkgconfig extra-cmake-modules
+  ];
+
+  buildInputs = [
+		kconfig kconfigwidgets kdbusaddons kdoctools ki18n kidletime kjobwidgets
+kio knotifications kwindowsystem kxmlgui ktextwidgets
+    kcalendarcore
+  ];
+
+  meta = with lib; {
+    description = "Todo management and time tracking application";
+    license = licenses.gpl2;
+    homepage = "https://userbase.kde.org/KTimeTracker";
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/ledger-autosync/default.nix b/nixpkgs/pkgs/applications/office/ledger-autosync/default.nix
new file mode 100644
index 000000000000..3a0f362dcf72
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/ledger-autosync/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, python3Packages, fetchFromGitHub, ledger, hledger, useLedger ? true, useHledger ? true }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "ledger-autosync";
+  version = "1.0.2";
+
+# no tests included in PyPI tarball
+  src = fetchFromGitHub {
+    owner = "egh";
+    repo = "ledger-autosync";
+    rev = "v${version}";
+    sha256 = "0sh32jcf8iznnbg1kqlrswbzfmn4h3gkw32q20xwxzz4935pz1qk";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    asn1crypto
+    beautifulsoup4
+    cffi
+    cryptography
+    entrypoints
+    fuzzywuzzy
+    idna
+    jeepney
+    keyring
+    lxml
+    mock
+    nose
+    ofxclient
+    ofxhome
+    ofxparse
+    pbr
+    pycparser
+    secretstorage
+    six
+  ] ++ stdenv.lib.optional useLedger ledger
+    ++ stdenv.lib.optional useHledger hledger;
+
+  # Checks require ledger as a python package,
+  # ledger does not support python3 while ledger-autosync requires it.
+  checkInputs = with python3Packages; [ ledger hledger nose mock ];
+  checkPhase = ''
+    nosetests -a generic -a ledger -a hledger
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/egh/ledger-autosync";
+    description = "OFX/CSV autosync for ledger and hledger";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ eamsden ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/ledger-web/Gemfile b/nixpkgs/pkgs/applications/office/ledger-web/Gemfile
new file mode 100644
index 000000000000..77e8024da3a3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/ledger-web/Gemfile
@@ -0,0 +1,3 @@
+source 'https://rubygems.org'
+
+gem 'ledger_web'
diff --git a/nixpkgs/pkgs/applications/office/ledger-web/Gemfile.lock b/nixpkgs/pkgs/applications/office/ledger-web/Gemfile.lock
new file mode 100644
index 000000000000..b12a8600ed20
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/ledger-web/Gemfile.lock
@@ -0,0 +1,61 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    backports (3.14.0)
+    database_cleaner (1.7.0)
+    diff-lcs (1.3)
+    directory_watcher (1.5.1)
+    ledger_web (1.5.2)
+      database_cleaner
+      directory_watcher (~> 1.5.1)
+      pg
+      rack (>= 1.3.6)
+      rspec
+      sequel
+      sinatra
+      sinatra-contrib
+      sinatra-session
+    multi_json (1.13.1)
+    mustermann (1.0.3)
+    pg (1.1.4)
+    rack (2.0.7)
+    rack-protection (2.0.5)
+      rack
+    rspec (3.8.0)
+      rspec-core (~> 3.8.0)
+      rspec-expectations (~> 3.8.0)
+      rspec-mocks (~> 3.8.0)
+    rspec-core (3.8.0)
+      rspec-support (~> 3.8.0)
+    rspec-expectations (3.8.3)
+      diff-lcs (>= 1.2.0, < 2.0)
+      rspec-support (~> 3.8.0)
+    rspec-mocks (3.8.0)
+      diff-lcs (>= 1.2.0, < 2.0)
+      rspec-support (~> 3.8.0)
+    rspec-support (3.8.0)
+    sequel (5.19.0)
+    sinatra (2.0.5)
+      mustermann (~> 1.0)
+      rack (~> 2.0)
+      rack-protection (= 2.0.5)
+      tilt (~> 2.0)
+    sinatra-contrib (2.0.5)
+      backports (>= 2.8.2)
+      multi_json
+      mustermann (~> 1.0)
+      rack-protection (= 2.0.5)
+      sinatra (= 2.0.5)
+      tilt (>= 1.3, < 3)
+    sinatra-session (1.0.0)
+      sinatra (>= 1.0)
+    tilt (2.0.9)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  ledger_web
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/applications/office/ledger-web/default.nix b/nixpkgs/pkgs/applications/office/ledger-web/default.nix
new file mode 100644
index 000000000000..ce8b401cb6b9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/ledger-web/default.nix
@@ -0,0 +1,23 @@
+{ lib, bundlerApp, bundlerUpdateScript
+, withPostgresql ? true, postgresql
+, withSqlite ? false, sqlite
+}:
+
+bundlerApp {
+  pname = "ledger_web";
+  gemdir = ./.;
+  exes = [ "ledger_web" ];
+
+  buildInputs =    lib.optional withPostgresql postgresql
+                ++ lib.optional withSqlite sqlite;
+
+  passthru.updateScript = bundlerUpdateScript "ledger-web";
+
+  meta = with lib; {
+    description = "A web frontend to the Ledger CLI tool";
+    homepage = "https://github.com/peterkeen/ledger-web";
+    license = licenses.mit;
+    maintainers = with maintainers; [ peterhoeg manveru nicknovitski ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/ledger-web/gemset.nix b/nixpkgs/pkgs/applications/office/ledger-web/gemset.nix
new file mode 100644
index 000000000000..71a959c0a86a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/ledger-web/gemset.nix
@@ -0,0 +1,211 @@
+{
+  backports = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17j5pf0b69bkn043wi4xd530ky53jbbnljr4bsjzlm4k8bzlknfn";
+      type = "gem";
+    };
+    version = "3.14.0";
+  };
+  database_cleaner = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05i0nf2aj70m61y3fspypdkc6d1qgibf5kav05a71b5gjz0k7y5x";
+      type = "gem";
+    };
+    version = "1.7.0";
+  };
+  diff-lcs = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
+      type = "gem";
+    };
+    version = "1.3";
+  };
+  directory_watcher = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fwc2shba7vks262ind74y3g76qp7znjq5q8b2dvza0yidgywhcq";
+      type = "gem";
+    };
+    version = "1.5.1";
+  };
+  ledger_web = {
+    dependencies = ["database_cleaner" "directory_watcher" "pg" "rack" "rspec" "sequel" "sinatra" "sinatra-contrib" "sinatra-session"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0i4vagaiyayymlr41rsy4lg2cl1r011ib0ql9dgjadfy6imb4kqh";
+      type = "gem";
+    };
+    version = "1.5.2";
+  };
+  multi_json = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv";
+      type = "gem";
+    };
+    version = "1.13.1";
+  };
+  mustermann = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1";
+      type = "gem";
+    };
+    version = "1.0.3";
+  };
+  pg = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fmnyxcyrvgdbgq7m09whgn9i8rwfybk0w8aii1nc4g5kqw0k2jy";
+      type = "gem";
+    };
+    version = "1.1.4";
+  };
+  rack = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0z90vflxbgjy2n84r7mbyax3i2vyvvrxxrf86ljzn5rw65jgnn2i";
+      type = "gem";
+    };
+    version = "2.0.7";
+  };
+  rack-protection = {
+    dependencies = ["rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15167q25rmxipqwi6hjqj3i1byi9iwl3xq9b7mdar7qiz39pmjsk";
+      type = "gem";
+    };
+    version = "2.0.5";
+  };
+  rspec = {
+    dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3";
+      type = "gem";
+    };
+    version = "3.8.0";
+  };
+  rspec-core = {
+    dependencies = ["rspec-support"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p";
+      type = "gem";
+    };
+    version = "3.8.0";
+  };
+  rspec-expectations = {
+    dependencies = ["diff-lcs" "rspec-support"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1c4gs5ybf7km0qshdm92p38zvg32n1j2kr5fgs2icacz7xf2y6fy";
+      type = "gem";
+    };
+    version = "3.8.3";
+  };
+  rspec-mocks = {
+    dependencies = ["diff-lcs" "rspec-support"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp";
+      type = "gem";
+    };
+    version = "3.8.0";
+  };
+  rspec-support = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609";
+      type = "gem";
+    };
+    version = "3.8.0";
+  };
+  sequel = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lwkc9kf4jn1x1ph4mgy4saiw2dirq6fhnkpyd0zq8rj1d0nay9a";
+      type = "gem";
+    };
+    version = "5.19.0";
+  };
+  sinatra = {
+    dependencies = ["mustermann" "rack" "rack-protection" "tilt"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1gasgn5f15myv08k10i16p326pchxjsy37pgqfw0xm66kcc5d7ry";
+      type = "gem";
+    };
+    version = "2.0.5";
+  };
+  sinatra-contrib = {
+    dependencies = ["backports" "multi_json" "mustermann" "rack-protection" "sinatra" "tilt"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "093blvpfy5n7s8knaav9a4pm4j7kck9zidwz942qqd4g99fnk443";
+      type = "gem";
+    };
+    version = "2.0.5";
+  };
+  sinatra-session = {
+    dependencies = ["sinatra"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "183xl8i4d2hc03afd1i52gwn2xi3vzrv02g22llhfy5wkmm44gmq";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  tilt = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ca4k0clwf0rkvy7726x4nxpjxkpv67w043i39saxgldxd97zmwz";
+      type = "gem";
+    };
+    version = "2.0.9";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/office/ledger/default.nix b/nixpkgs/pkgs/applications/office/ledger/default.nix
new file mode 100644
index 000000000000..6ac092f27e2b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/ledger/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchFromGitHub, cmake, boost, gmp, mpfr, libedit, python
+, texinfo, gnused, usePython ? true }:
+
+stdenv.mkDerivation rec {
+  pname = "ledger";
+  version = "3.1.3";
+
+  src = fetchFromGitHub {
+    owner  = "ledger";
+    repo   = "ledger";
+    rev    = "v${version}";
+    sha256 = "0bfnrqrd6wqgsngfpqi30xh6yy86pwl25iwzrqy44q31r0zl4mm3";
+  };
+
+  buildInputs = [
+    (boost.override { enablePython = usePython; })
+    gmp mpfr libedit python texinfo gnused
+  ];
+
+  nativeBuildInputs = [ cmake ];
+
+  enableParallelBuilding = true;
+
+  cmakeFlags = [
+    "-DCMAKE_INSTALL_LIBDIR=lib"
+    "-DBUILD_DOCS:BOOL=ON"
+    (stdenv.lib.optionalString usePython "-DUSE_PYTHON=true")
+   ];
+
+  postBuild = ''
+    make doc
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://ledger-cli.org/";
+    description = "A double-entry accounting system with a command-line reporting interface";
+    license = licenses.bsd3;
+
+    longDescription = ''
+      Ledger is a powerful, double-entry accounting system that is accessed
+      from the UNIX command-line. This may put off some users, as there is
+      no flashy UI, but for those who want unparalleled reporting access to
+      their data, there really is no alternative.
+    '';
+
+    platforms = platforms.all;
+    maintainers = with maintainers; [ jwiegley ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/libreoffice/README.md b/nixpkgs/pkgs/applications/office/libreoffice/README.md
new file mode 100644
index 000000000000..a084572d2177
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/libreoffice/README.md
@@ -0,0 +1,9 @@
+LibreOffice
+===========
+
+To generate `src-$VARIANT/download.nix`, i.e. list of additional sources that
+the libreoffice build process needs to download:
+
+    nix-shell gen-shell.nix --argstr variant VARIANT --run generate
+
+Where VARIANT is either `still` or `fresh`.
diff --git a/nixpkgs/pkgs/applications/office/libreoffice/default.nix b/nixpkgs/pkgs/applications/office/libreoffice/default.nix
new file mode 100644
index 000000000000..66e12b221734
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/libreoffice/default.nix
@@ -0,0 +1,422 @@
+{ stdenv, fetchurl, fetchpatch, lib, pam, python3, libxslt, perl, ArchiveZip, gettext
+, IOCompress, zlib, libjpeg, expat, freetype, libwpd
+, libxml2, db, curl, fontconfig, libsndfile, neon
+, bison, flex, zip, unzip, gtk3, libmspack, getopt, file, cairo, which
+, icu, boost, jdk, ant, cups, xorg, libcmis, fontforge
+, openssl, gperf, cppunit, poppler, utillinux
+, librsvg, libGLU, libGL, bsh, CoinMP, libwps, libabw, libmysqlclient
+, autoconf, automake, openldap, bash, hunspell, librdf_redland, nss, nspr
+, libwpg, dbus-glib, clucene_core, libcdr, lcms, vigra
+, unixODBC, mdds, sane-backends, mythes, libexttextcat, libvisio
+, fontsConf, pkgconfig, bluez5, libtool, carlito
+, libatomic_ops, graphite2, harfbuzz, libodfgen, libzmf
+, librevenge, libe-book, libmwaw, glm, glew, gst_all_1
+, gdb, commonsLogging, librdf_rasqal, wrapGAppsHook
+, gnome3, glib, ncurses, epoxy, gpgme
+, langs ? [ "ca" "cs" "de" "en-GB" "en-US" "eo" "es" "fr" "hu" "it" "ja" "nl" "pl" "pt" "pt-BR" "ru" "sl" "zh-CN" ]
+, withHelp ? true
+, kdeIntegration ? false, mkDerivation ? null, qtbase ? null, qtx11extras ? null
+, ki18n ? null, kconfig ? null, kcoreaddons ? null, kio ? null, kwindowsystem ? null
+, variant ? "fresh"
+} @ args:
+
+assert builtins.elem variant [ "fresh" "still" ];
+
+let
+  importVariant = f: import (./. + "/src-${variant}/${f}");
+
+  primary-src = importVariant "primary.nix" { inherit fetchurl; };
+
+  inherit (primary-src) major minor subdir version;
+
+  langsSpaces = lib.concatStringsSep " " langs;
+
+  mkDrv = if kdeIntegration then mkDerivation else stdenv.mkDerivation;
+
+  srcs = {
+    third_party =
+      map (x : ((fetchurl {inherit (x) url sha256 name;}) // {inherit (x) md5name md5;}))
+      (importVariant "download.nix" ++ [
+        (rec {
+          name = "unowinreg.dll";
+          url = "https://dev-www.libreoffice.org/extern/${md5name}";
+          sha256 = "1infwvv1p6i21scywrldsxs22f62x85mns4iq8h6vr6vlx3fdzga";
+          md5 = "185d60944ea767075d27247c3162b3bc";
+          md5name = "${md5}-${name}";
+        })
+      ]);
+
+    translations = primary-src.translations;
+    help = primary-src.help;
+  };
+in (mkDrv rec {
+  pname = "libreoffice";
+  inherit version;
+
+  inherit (primary-src) src;
+
+  outputs = [ "out" "dev" ];
+
+  # For some reason librdf_redland sometimes refers to rasqal.h instead
+  # of rasqal/rasqal.h
+  NIX_CFLAGS_COMPILE = [
+    "-I${librdf_rasqal}/include/rasqal"
+  ] ++ lib.optional stdenv.isx86_64 "-mno-fma";
+
+  patches = [
+    ./xdg-open-brief.patch
+    (fetchpatch {
+      url = "https://git.pld-linux.org/gitweb.cgi?p=packages/libreoffice.git;a=blob_plain;f=poppler-0.86.patch;h=76b8356d5f22ef537a83b0f9b0debab591f152fe;hb=a2737a61353e305a9ee69640fb20d4582c218008";
+      name = "poppler-0.86.patch";
+      sha256 = "0q6k4l8imgp8ailcv0qx5l83afyw44hah24fi7gjrm9xgv5sbb8j";
+    })
+  ];
+
+  tarballPath = "external/tarballs";
+
+  postUnpack = ''
+    mkdir -v $sourceRoot/${tarballPath}
+  '' + (lib.flip lib.concatMapStrings srcs.third_party (f: ''
+      ln -sfv ${f} $sourceRoot/${tarballPath}/${f.md5name}
+      ln -sfv ${f} $sourceRoot/${tarballPath}/${f.name}
+    ''))
+  + ''
+    ln -sv ${srcs.help} $sourceRoot/${tarballPath}/${srcs.help.name}
+    ln -svf ${srcs.translations} $sourceRoot/${tarballPath}/${srcs.translations.name}
+    tar -xf ${srcs.help}
+    tar -xf ${srcs.translations}
+  '';
+
+  ### QT/KDE
+  #
+  # We have to resort to the ugly patching of configure.ac as it assumes that
+  # the first directory that contains headers and libraries during the check
+  # contains all the relevant headers/libs which doesn't work with both as they
+  # are in multiple directories due to each having their own derivation.
+  postPatch = let
+    inc = e: path:
+      "${lib.getDev e}/include/KF5/${path}";
+    libs = list:
+      lib.concatMapStringsSep " " (e: "-L${lib.getLib e}/lib") list;
+  in ''
+    substituteInPlace shell/source/unix/exec/shellexec.cxx \
+      --replace /usr/bin/xdg-open ${if kdeIntegration then "kde-open5" else "xdg-open"}
+
+    # configure checks for header 'gpgme++/gpgmepp_version.h',
+    # and if it is found (no matter where) uses a hardcoded path
+    # in what presumably is an effort to make it possible to write
+    # '#include <context.h>' instead of '#include <gpgmepp/context.h>'.
+    #
+    # Fix this path to point to where the headers can actually be found instead.
+    substituteInPlace configure.ac --replace \
+      'GPGMEPP_CFLAGS=-I/usr/include/gpgme++' \
+      'GPGMEPP_CFLAGS=-I${gpgme.dev}/include/gpgme++'
+  '' + lib.optionalString kdeIntegration ''
+      substituteInPlace configure.ac \
+        --replace '$QT5INC'             ${qtbase.dev}/include \
+        --replace '$QT5LIB'             ${qtbase.out}/lib \
+        --replace '-I$qt5_incdir '      '-I${qtx11extras.dev}/include '\
+        --replace '-L$qt5_libdir '      '${libs [ qtbase qtx11extras ]} ' \
+        --replace '$KF5INC'             ${kcoreaddons.dev}/include \
+        --replace '$KF5LIB'             ${kcoreaddons.out}/lib \
+        --replace '$kf5_incdir/KCore'   ${inc kcoreaddons "KCore"} \
+        --replace '$kf5_incdir/KI18n'   ${inc ki18n "KI18n"} \
+        --replace '$kf5_incdir/KConfig' ${inc kconfig "KConfig"} \
+        --replace '$kf5_incdir/KWindow' ${inc kwindowsystem "KWindow"} \
+        --replace '$kf5_incdir/KIO'     ${inc kio "KIO"} \
+        --replace '-L$kf5_libdir '      '${libs [ kconfig kcoreaddons ki18n kio kwindowsystem ]} '
+  '';
+
+  dontUseCmakeConfigure = true;
+  dontUseCmakeBuildDir = true;
+
+  preConfigure = ''
+    configureFlagsArray=(
+      "--with-parallelism=$NIX_BUILD_CORES"
+      "--with-lang=${langsSpaces}"
+    );
+
+    chmod a+x ./bin/unpack-sources
+    patchShebangs .
+
+    # This is required as some cppunittests require fontconfig configured
+    cp "${fontsConf}" fonts.conf
+    sed -e '/include/i<include>${carlito}/etc/fonts/conf.d</include>' -i fonts.conf
+    export FONTCONFIG_FILE="$PWD/fonts.conf"
+
+    NOCONFIGURE=1 ./autogen.sh
+  '';
+
+  postConfigure =
+    # fetch_Download_item tries to interpret the name as a variable name, let it do so...
+    ''
+      sed -e '1ilibreoffice-translations-${version}.tar.xz=libreoffice-translations-${version}.tar.xz' -i Makefile
+      sed -e '1ilibreoffice-help-${version}.tar.xz=libreoffice-help-${version}.tar.xz' -i Makefile
+    ''
+    # Test fixups
+    # May need to be revisited/pruned, left alone for now.
+    + ''
+      # unit test sd_tiledrendering seems to be fragile
+      # https://nabble.documentfoundation.org/libreoffice-5-0-failure-in-CUT-libreofficekit-tiledrendering-td4150319.html
+      echo > ./sd/CppunitTest_sd_tiledrendering.mk
+      sed -e /CppunitTest_sd_tiledrendering/d -i sd/Module_sd.mk
+      # Pivot chart tests. Fragile.
+      sed -e '/CPPUNIT_TEST(testRoundtrip)/d' -i chart2/qa/extras/PivotChartTest.cxx
+      sed -e '/CPPUNIT_TEST(testPivotTableMedianODS)/d' -i sc/qa/unit/pivottable_filters_test.cxx
+      # one more fragile test?
+      sed -e '/CPPUNIT_TEST(testTdf96536);/d' -i sw/qa/extras/uiwriter/uiwriter.cxx
+      # this I actually hate, this should be a data consistency test!
+      sed -e '/CPPUNIT_TEST(testTdf115013);/d' -i sw/qa/extras/uiwriter/uiwriter.cxx
+      # rendering-dependent test
+      sed -e '/CPPUNIT_ASSERT_EQUAL(11148L, pOleObj->GetLogicRect().getWidth());/d ' -i sc/qa/unit/subsequent_filters-test.cxx
+      # tilde expansion in path processing checks the existence of $HOME
+      sed -e 's@OString sSysPath("~/tmp");@& return ; @' -i sal/qa/osl/file/osl_File.cxx
+      # fails on systems using ZFS, see https://github.com/NixOS/nixpkgs/issues/19071
+      sed -e '/CPPUNIT_TEST(getSystemPathFromFileURL_005);/d' -i './sal/qa/osl/file/osl_File.cxx'
+      # rendering-dependent: on my computer the test table actually doesn't fit…
+      # interesting fact: test disabled on macOS by upstream
+      sed -re '/DECLARE_WW8EXPORT_TEST[(]testTableKeep, "tdf91083.odt"[)]/,+5d' -i ./sw/qa/extras/ww8export/ww8export.cxx
+      # Segfault on DB access — maybe temporarily acceptable for a new version of Fresh?
+      sed -e 's/CppunitTest_dbaccess_empty_stdlib_save//' -i ./dbaccess/Module_dbaccess.mk
+      # one more fragile test?
+      sed -e '/CPPUNIT_TEST(testTdf77014);/d' -i sw/qa/extras/uiwriter/uiwriter.cxx
+      # rendering-dependent tests
+      sed -e '/CPPUNIT_TEST(testCustomColumnWidthExportXLSX)/d' -i sc/qa/unit/subsequent_export-test.cxx
+      sed -e '/CPPUNIT_TEST(testColumnWidthExportFromODStoXLSX)/d' -i sc/qa/unit/subsequent_export-test.cxx
+      sed -e '/CPPUNIT_TEST(testChartImportXLS)/d' -i sc/qa/unit/subsequent_filters-test.cxx
+      sed -e '/CPPUNIT_TEST(testLegacyCellAnchoredRotatedShape)/d' -i sc/qa/unit/filters-test.cxx
+      sed -zre 's/DesktopLOKTest::testGetFontSubset[^{]*[{]/& return; /' -i desktop/qa/desktop_lib/test_desktop_lib.cxx
+      sed -z -r -e 's/DECLARE_OOXMLEXPORT_TEST[(]testFlipAndRotateCustomShape,[^)]*[)].[{]/& return;/' -i sw/qa/extras/ooxmlexport/ooxmlexport7.cxx
+      sed -z -r -e 's/DECLARE_OOXMLEXPORT_TEST[(]tdf105490_negativeMargins,[^)]*[)].[{]/& return;/' -i sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
+      sed -z -r -e 's/DECLARE_OOXMLIMPORT_TEST[(]testTdf112443,[^)]*[)].[{]/& return;/' -i sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+      sed -z -r -e 's/DECLARE_RTFIMPORT_TEST[(]testTdf108947,[^)]*[)].[{]/& return;/' -i sw/qa/extras/rtfimport/rtfimport.cxx
+      # not sure about this fragile test
+      sed -z -r -e 's/DECLARE_OOXMLEXPORT_TEST[(]testTDF87348,[^)]*[)].[{]/& return;/' -i sw/qa/extras/ooxmlexport/ooxmlexport7.cxx
+      # bunch of new Fresh failures. Sigh.
+      sed -e '/CPPUNIT_TEST(testDocumentLayout);/d' -i './sd/qa/unit/import-tests.cxx'
+      sed -e '/CPPUNIT_TEST(testErrorBarDataRangeODS);/d' -i './chart2/qa/extras/chart2export.cxx'
+      sed -e '/CPPUNIT_TEST(testLabelStringODS);/d' -i './chart2/qa/extras/chart2export.cxx'
+      sed -e '/CPPUNIT_TEST(testAxisNumberFormatODS);/d' -i './chart2/qa/extras/chart2export.cxx'
+      sed -e '/CPPUNIT_TEST(testBackgroundImage);/d' -i './sd/qa/unit/export-tests.cxx'
+      sed -e '/CPPUNIT_TEST(testFdo84043);/d' -i './sd/qa/unit/export-tests.cxx'
+      sed -e '/CPPUNIT_TEST(testTdf97630);/d' -i './sd/qa/unit/export-tests.cxx'
+      sed -e '/CPPUNIT_TEST(testTdf80020);/d' -i './sd/qa/unit/export-tests.cxx'
+      sed -e '/CPPUNIT_TEST(testTdf62176);/d' -i './sd/qa/unit/export-tests.cxx'
+      sed -e '/CPPUNIT_TEST(testTransparentBackground);/d' -i './sd/qa/unit/export-tests.cxx'
+      sed -e '/CPPUNIT_TEST(testEmbeddedPdf);/d' -i './sd/qa/unit/export-tests.cxx'
+      sed -e '/CPPUNIT_TEST(testEmbeddedText);/d' -i './sd/qa/unit/export-tests.cxx'
+      sed -e '/CPPUNIT_TEST(testTdf98477);/d' -i './sd/qa/unit/export-tests.cxx'
+      sed -e '/CPPUNIT_TEST(testAuthorField);/d' -i './sd/qa/unit/export-tests-ooxml2.cxx'
+      sed -e '/CPPUNIT_TEST(testTdf50499);/d' -i './sd/qa/unit/export-tests.cxx'
+      sed -e '/CPPUNIT_TEST(testTdf100926);/d' -i './sd/qa/unit/export-tests.cxx'
+      sed -e '/CPPUNIT_TEST(testPageWithTransparentBackground);/d' -i './sd/qa/unit/export-tests.cxx'
+      sed -e '/CPPUNIT_TEST(testTextRotation);/d' -i './sd/qa/unit/export-tests.cxx'
+      sed -e '/CPPUNIT_TEST(testTdf113818);/d' -i './sd/qa/unit/export-tests.cxx'
+      sed -e '/CPPUNIT_TEST(testTdf119629);/d' -i './sd/qa/unit/export-tests.cxx'
+      sed -e '/CPPUNIT_TEST(testTdf113822);/d' -i './sd/qa/unit/export-tests.cxx'
+      sed -e '/CPPUNIT_TEST(test);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testConditionalFormatExportODS);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testProtectionKeyODS_UTF16LErtlSHA1);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testProtectionKeyODS_UTF8SHA1);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testProtectionKeyODS_UTF8SHA256ODF12);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testProtectionKeyODS_UTF8SHA256W3C);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testProtectionKeyODS_XL_SHA1);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testColorScaleExportODS);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testDataBarExportODS);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testNamedRangeBugfdo62729);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testRichTextExportODS);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testFormulaRefSheetNameODS);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testCellValuesExportODS);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testCellNoteExportODS);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testFormatExportODS);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testEmbeddedChartODS);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testCellAnchoredGroupXLS);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testCeilingFloorODS);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testRelativePathsODS);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testSheetProtectionODS);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testSwappedOutImageExport);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testLinkedGraphicRT);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testImageWithSpecialID);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testAbsNamedRangeHTML);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testMoveCellAnchoredShapesODS);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testRefStringUnspecified);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testHeaderImageODS);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testTdf88657ODS);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testExponentWithoutSignFormatXLSX);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testHiddenRepeatedRowsODS);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testHyperlinkTargetFrameODS);/d' -i './sc/qa/unit/subsequent_export-test.cxx'
+      sed -e '/CPPUNIT_TEST(testTdf105739);/d' -i './sd/qa/unit/export-tests-ooxml2.cxx'
+      sed -e '/CPPUNIT_TEST(testPageBitmapWithTransparency);/d' -i './sd/qa/unit/export-tests-ooxml2.cxx'
+      sed -e '/CPPUNIT_TEST(testTdf115005);/d' -i './sd/qa/unit/export-tests-ooxml2.cxx'
+      sed -e '/CPPUNIT_TEST(testTdf115005_FallBack_Images_On);/d' -i './sd/qa/unit/export-tests-ooxml2.cxx'
+      sed -e '/CPPUNIT_TEST(testTdf115005_FallBack_Images_Off);/d' -i './sd/qa/unit/export-tests-ooxml2.cxx'
+      sed -e '/CPPUNIT_TEST(testTdf44774);/d' -i './sd/qa/unit/misc-tests.cxx'
+      sed -e '/CPPUNIT_TEST(testTdf38225);/d' -i './sd/qa/unit/misc-tests.cxx'
+      sed -e '/CPPUNIT_TEST(testAuthorField);/d' -i './sd/qa/unit/export-tests-ooxml2.cxx'
+      sed -e '/CPPUNIT_TEST(testAuthorField);/d' -i './sd/qa/unit/export-tests.cxx'
+      sed -e '/CPPUNIT_TEST(testFdo85554);/d' -i './sw/qa/extras/uiwriter/uiwriter.cxx'
+      sed -e '/CPPUNIT_TEST(testEmbeddedDataSource);/d' -i './sw/qa/extras/uiwriter/uiwriter.cxx'
+      sed -e '/CPPUNIT_TEST(testTdf96479);/d' -i './sw/qa/extras/uiwriter/uiwriter.cxx'
+      sed -e '/CPPUNIT_TEST(testInconsistentBookmark);/d' -i './sw/qa/extras/uiwriter/uiwriter.cxx'
+      sed -e "s/DECLARE_SW_ROUNDTRIP_TEST(\([_a-zA-Z0-9.]\+\)[, ].*, *\([_a-zA-Z0-9.]\+\))/class \\1: public \\2 { public: void verify() override; }; void \\1::verify() /" -i "sw/qa/extras/ooxmlexport/ooxmlexport9.cxx"
+      sed -e "s/DECLARE_SW_ROUNDTRIP_TEST(\([_a-zA-Z0-9.]\+\)[, ].*, *\([_a-zA-Z0-9.]\+\))/class \\1: public \\2 { public: void verify() override; }; void \\1::verify() /" -i "sw/qa/extras/ooxmlexport/ooxmlencryption.cxx"
+      sed -e "s/DECLARE_SW_ROUNDTRIP_TEST(\([_a-zA-Z0-9.]\+\)[, ].*, *\([_a-zA-Z0-9.]\+\))/class \\1: public \\2 { public: void verify() override; }; void \\1::verify() /" -i "sw/qa/extras/odfexport/odfexport.cxx"
+      sed -e "s/DECLARE_SW_ROUNDTRIP_TEST(\([_a-zA-Z0-9.]\+\)[, ].*, *\([_a-zA-Z0-9.]\+\))/class \\1: public \\2 { public: void verify() override; }; void \\1::verify() /" -i "sw/qa/extras/unowriter/unowriter.cxx"
+    ''
+    # This to avoid using /lib:/usr/lib at linking
+    + ''
+    sed -i '/gb_LinkTarget_LDFLAGS/{ n; /rpath-link/d;}' solenv/gbuild/platform/unxgcc.mk
+
+    find -name "*.cmd" -exec sed -i s,/lib:/usr/lib,, {} \;
+    '';
+
+  makeFlags = [ "SHELL=${bash}/bin/bash" ];
+
+  enableParallelBuilding = true;
+
+  buildPhase = ''
+    make build-nocheck
+  '';
+
+  doCheck = true;
+
+  # It installs only things to $out/lib/libreoffice
+  postInstall = ''
+    mkdir -p $out/bin $out/share/desktop
+
+    mkdir -p "$out/share/gsettings-schemas/collected-for-libreoffice/glib-2.0/schemas/"
+
+    for a in sbase scalc sdraw smath swriter simpress soffice unopkg; do
+      ln -s $out/lib/libreoffice/program/$a $out/bin/$a
+    done
+
+    ln -s $out/bin/soffice $out/bin/libreoffice
+    ln -s $out/lib/libreoffice/share/xdg $out/share/applications
+
+    for f in $out/share/applications/*.desktop; do
+      substituteInPlace "$f" \
+        --replace "Exec=libreofficedev${major}.${minor}" "Exec=libreoffice" \
+        --replace "Exec=libreoffice${major}.${minor}"    "Exec=libreoffice"
+    done
+
+    cp -r sysui/desktop/icons  "$out/share"
+    sed -re 's@Icon=libreoffice(dev)?[0-9.]*-?@Icon=@' -i "$out/share/applications/"*.desktop
+
+    qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH")
+
+    mkdir -p $dev
+    cp -r include $dev
+  '';
+
+  configureFlags = [
+    (if withHelp then "" else "--without-help")
+    "--with-boost=${boost.dev}"
+    "--with-boost-libdir=${boost.out}/lib"
+    "--with-beanshell-jar=${bsh}"
+    "--with-vendor=NixOS"
+    "--with-commons-logging-jar=${commonsLogging}/share/java/commons-logging-1.2.jar"
+    "--disable-report-builder"
+    "--disable-online-update"
+    "--enable-python=system"
+    "--enable-dbus"
+    "--enable-release-build"
+    "--enable-epm"
+    "--with-jdk-home=${jdk.home}"
+    "--with-ant-home=${ant}/lib/ant"
+    "--with-system-cairo"
+    "--with-system-libs"
+    "--with-system-headers"
+    "--with-system-openssl"
+    "--with-system-libabw"
+    "--with-system-libcmis"
+    "--with-system-libwps"
+    "--with-system-openldap"
+    "--with-system-coinmp"
+
+    # Without these, configure does not finish
+    "--without-junit"
+
+    # Schema files for validation are not included in the source tarball
+    "--without-export-validation"
+
+    "--disable-libnumbertext" # system-libnumbertext"
+
+    # We do tarball prefetching ourselves
+    "--disable-fetch-external"
+    "--enable-build-opensymbol"
+
+    # I imagine this helps. Copied from go-oo.
+    # Modified on every upgrade, though
+    "--disable-odk"
+    "--disable-postgresql-sdbc"
+    "--disable-firebird-sdbc"
+    "--without-fonts"
+    "--without-myspell-dicts"
+    "--without-doxygen"
+
+    # TODO: package these as system libraries
+    "--with-system-beanshell"
+    "--without-system-hsqldb"
+    "--without-system-altlinuxhyph"
+    "--without-system-lpsolve"
+    "--without-system-libetonyek"
+    "--without-system-libfreehand"
+    "--without-system-liblangtag"
+    "--without-system-libmspub"
+    "--without-system-libpagemaker"
+    "--without-system-libstaroffice"
+    "--without-system-libepubgen"
+    "--without-system-libqxp"
+    "--without-system-mdds" # we have mdds but our version is too new
+    # https://github.com/NixOS/nixpkgs/commit/5c5362427a3fa9aefccfca9e531492a8735d4e6f
+    "--without-system-orcus"
+    "--without-system-qrcodegen"
+    "--without-system-xmlsec"
+  ] ++ lib.optionals kdeIntegration [
+    "--enable-kf5"
+    "--enable-qt5"
+    "--enable-gtk3-kde5"
+  ] ++ lib.optional (lib.versionOlder version "6.4") "--disable-gtk"; # disables GTK2, GTK3 is still there
+
+  checkPhase = ''
+    make unitcheck
+    make slowcheck
+  '';
+
+  nativeBuildInputs = [
+    gdb fontforge autoconf automake bison pkgconfig libtool
+  ] ++ lib.optional (!kdeIntegration) wrapGAppsHook;
+
+  buildInputs = with xorg;
+    [ ant ArchiveZip boost cairo clucene_core
+      IOCompress cppunit cups curl db dbus-glib expat file flex fontconfig
+      freetype getopt gperf gtk3
+      hunspell icu jdk lcms libcdr libexttextcat unixODBC libjpeg
+      libmspack librdf_redland librsvg libsndfile libvisio libwpd libwpg libX11
+      libXaw libXext libXi libXinerama libxml2 libxslt libXtst
+      libXdmcp libpthreadstubs libGLU libGL mythes
+      glib libmysqlclient
+      neon nspr nss openldap openssl pam perl pkgconfig poppler
+      python3 sane-backends unzip vigra which zip zlib
+      mdds bluez5 libcmis libwps libabw libzmf
+      libxshmfence libatomic_ops graphite2 harfbuzz gpgme utillinux
+      librevenge libe-book libmwaw glm glew ncurses epoxy
+      libodfgen CoinMP librdf_rasqal gnome3.adwaita-icon-theme gettext
+    ]
+    ++ (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-good ])
+    ++ lib.optional kdeIntegration [ qtbase qtx11extras kcoreaddons kio ];
+
+  passthru = {
+    inherit srcs jdk;
+  };
+
+  requiredSystemFeatures = [ "big-parallel" ];
+
+  meta = with lib; {
+    description = "Comprehensive, professional-quality productivity suite, a variant of openoffice.org";
+    homepage = "https://libreoffice.org/";
+    license = licenses.lgpl3;
+    maintainers = with maintainers; [ raskin ];
+    platforms = platforms.linux;
+  };
+}).overrideAttrs ((importVariant "override.nix") (args // { inherit kdeIntegration; }))
diff --git a/nixpkgs/pkgs/applications/office/libreoffice/download-list-builder.sh b/nixpkgs/pkgs/applications/office/libreoffice/download-list-builder.sh
new file mode 100644
index 000000000000..c054e2c72cbe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/libreoffice/download-list-builder.sh
@@ -0,0 +1,3 @@
+source $stdenv/setup
+
+tar --extract --file=$src libreoffice-$version/download.lst -O > $out
diff --git a/nixpkgs/pkgs/applications/office/libreoffice/gen-shell.nix b/nixpkgs/pkgs/applications/office/libreoffice/gen-shell.nix
new file mode 100644
index 000000000000..7429bb0cb382
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/libreoffice/gen-shell.nix
@@ -0,0 +1,29 @@
+{ pkgs ? (import <nixpkgs> {}), variant }:
+
+with pkgs;
+
+let
+
+  primary-src = callPackage (./. + "/src-${variant}/primary.nix") {};
+
+in
+
+stdenv.mkDerivation {
+  name = "generate-libreoffice-srcs-shell";
+
+  buildCommand = "exit 1";
+
+  downloadList = stdenv.mkDerivation {
+    name = "libreoffice-${primary-src.version}-download-list";
+    inherit (primary-src) src version;
+    builder = ./download-list-builder.sh;
+  };
+
+  buildInputs = [ python3 ];
+
+  shellHook = ''
+    function generate {
+      python3 generate-libreoffice-srcs.py ${variant} > src-${variant}/download.nix
+    }
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/office/libreoffice/generate-libreoffice-srcs.py b/nixpkgs/pkgs/applications/office/libreoffice/generate-libreoffice-srcs.py
new file mode 100755
index 000000000000..636f36cb383b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/libreoffice/generate-libreoffice-srcs.py
@@ -0,0 +1,328 @@
+#!/usr/bin/env python3
+
+"""
+Converts the LibreOffice `download.lst` file into a Nix expression.
+
+Requires an environment variable named `downloadList` identifying the path
+of the input file, and writes the result to stdout.
+
+todo - Ideally we would move as much as possible into derivation dependencies.
+"""
+import collections, itertools, json, re, subprocess, sys, os
+
+def main():
+
+    packages = list(get_packages())
+
+    for x in packages:
+        print(x, file=sys.stderr)
+
+    print('[')
+
+    for x in packages:
+
+        md5 = x['md5']
+        upstream_sha256 = x['sha256']
+        if upstream_sha256:
+            hash = upstream_sha256
+            hashtype = 'sha256'
+        else:
+            hash = md5
+            hashtype = 'md5'
+        tarball = x['tarball']
+
+        url = construct_url(x)
+        print('url: {}'.format(url), file=sys.stderr)
+
+        path = download(url, tarball, hash, hashtype)
+        print('path: {}'.format(path), file=sys.stderr)
+
+        sha256 = get_sha256(path)
+        print('sha256: {}'.format(sha256), file=sys.stderr)
+
+        print('  {')
+        print('    name = "{}";'.format(tarball))
+        print('    url = "{}";'.format(url))
+        print('    sha256 = "{}";'.format(sha256))
+        print('    md5 = "{}";'.format(md5))
+        print('    md5name = "{}-{}";'.format(md5 or upstream_sha256,tarball))
+        print('  }')
+
+    print(']')
+
+
+def construct_url(x):
+    if x['brief']:
+        return 'http://dev-www.libreoffice.org/src/{}{}'.format(
+            x.get('subdir', ''), x['tarball'])
+    else:
+        return 'http://dev-www.libreoffice.org/src/{}{}-{}'.format(
+            x.get('subdir', ''), x['md5'], x['tarball'])
+
+
+def download(url, name, hash, hashtype):
+    cmd = ['nix-prefetch-url', url, hash, '--print-path',
+           '--type', hashtype, '--name', name]
+    proc = subprocess.run(cmd, stdout=subprocess.PIPE, check=True,
+                          universal_newlines=True)
+    return proc.stdout.split('\n')[1].strip()
+
+
+def get_sha256(path):
+    cmd = ['sha256sum', path]
+    proc = subprocess.run(cmd, stdout=subprocess.PIPE, check=True,
+                          universal_newlines=True)
+    return proc.stdout.split(' ')[0].strip()
+
+
+def get_packages():
+    """
+    All of the package data: What's parsed from download.lst,
+    plus our additions.
+    """
+    return apply_additions(get_packages_from_download_list(),
+                           get_additions())
+
+
+def get_additions():
+    """
+    A mapping from package name (the all-caps identifiers used in
+    `download.lst`) to a dict of additional attributes to set on the package.
+    """
+    with open('./libreoffice-srcs-additions.json') as f:
+        return json.load(f)
+
+
+def apply_additions(xs, additions):
+    for x in xs:
+        yield dict_merge([x,
+                          additions.get(x['name'], {})])
+
+
+def get_packages_from_download_list():
+    """
+    The result of parsing `download.lst`: A list of dicts containing keys
+    'name', 'tarball', 'md5', 'brief'.
+    """
+
+    def lines():
+        for x in sub_symbols(parse_lines(get_lines())):
+
+            interpretation = interpret(x)
+
+            if interpretation == 'unrecognized':
+                print_skipped_line(x)
+            else:
+                yield dict_merge([x,
+                                  interpretation])
+
+    def cluster(xs):
+        """
+        Groups lines according to their order within the file, to support
+        packages that are listed in `download.lst` more than once.
+        """
+        keys = ['tarball', 'md5', 'sha256', 'brief']
+        a = {k: [x for x in xs if k in x['attrs']] for k in keys}
+        return zip(*[a[k] for k in keys])
+
+    def packages():
+        for (name, group) in groupby(lines(), lambda x: x['name']):
+            for xs in cluster(group):
+                yield {'name': name,
+                       'attrs': dict_merge(x['attrs'] for x in xs),
+                       'index': min(x['index'] for x in xs)}
+
+    for x in sorted(packages(), key=lambda x: x['index']):
+        yield dict_merge([{'name': x['name']},
+                          x['attrs']])
+
+
+def dict_merge(xs):
+    """
+    >>> dict_merge([{1: 2}, {3: 4}, {3: 5}])
+    {1: 2, 3: 4}
+    """
+    return dict(collections.ChainMap(*xs))
+
+
+def groupby(xs, f):
+    """
+    >>> groupby([1, 2, 3, 4], lambda x: x % 2)
+    [(0, [2, 4]), (1, [1, 3])]
+    """
+    for (k, iter) in itertools.groupby(sorted(xs, key=f), f):
+        group = list(iter)
+        yield (f(group[0]), group)
+
+
+def get_lines():
+
+    download_list = os.getenv('downloadList')
+
+    with open(download_list) as f:
+        return f.read().splitlines()
+
+
+def print_skipped_line(x):
+
+    print('Skipped line {}: {}'.format(x['index'],
+                                       x['original']),
+          file=sys.stderr)
+
+
+def parse_lines(lines):
+    """
+    Input: List of strings (the lines from `download.lst`
+    Output: Iterator of dicts with keys 'key', 'value', and 'index'
+    """
+    for (index, line) in enumerate(lines):
+
+        x = { 'index': index, 'original': line }
+
+        result = parse_line(line)
+
+        if result == 'nothing':
+            pass
+        elif result == 'unrecognized':
+            print_skipped_line(x)
+        else:
+            yield dict_merge([x,
+                             result])
+
+
+def parse_line(line):
+    """
+    Input: A string
+    Output: One of 1. A dict with keys 'key', 'value'
+                   2. 'nothing' (if the line contains no information)
+                   2. 'unrecognized' (if parsing failed)
+    """
+
+    if re.match('\s*(#.*)?$', line):
+        return 'nothing'
+
+    match = re.match('\s*export\s+([^:\s]+)\s*:=\s*(.*)$', line)
+
+    if match:
+        return {
+            'key': match.group(1),
+            'value': match.group(2).strip()
+        }
+    else:
+        return 'unrecognized'
+
+
+def sub_symbols(xs):
+    """
+    Do substitution of variables across all lines.
+
+    >>> sub_symbols([{'key': 'a', 'value': 'x'},
+    ...              {'key': 'c': 'value': '$(a)yz'}])
+    [{'key': 'a', 'value': 'x'}, {'key': 'c': 'value': 'xyz'}]
+    """
+
+    xs = list(xs)
+
+    symbols = {x['key']: x for x in xs}
+
+    def get_value(k):
+        x = symbols.get(k)
+        return x['value'] if x is not None else ''
+
+    for x in xs:
+        yield dict_merge([{'value': sub_str(x['value'], get_value)},
+                          x])
+
+
+def sub_str(string, func):
+    """
+    Do substitution of variables in a single line.
+
+    >>> sub_str("x = $(x)", lambda k: {'x': 'a'}[k])
+    "x = a"
+    """
+
+    def func2(m):
+        x = m.group(1)
+        result = func(x)
+        return result if result is not None else x
+
+    return re.sub(r'\$\(([^\$\(\)]+)\)', func2, string)
+
+
+def interpret(x):
+    """
+    Input: Dict with keys 'key' and 'value'
+    Output: One of 1. Dict with keys 'name' and 'attrs'
+                   2. 'unrecognized' (if interpretation failed)
+    """
+    for f in [interpret_md5, interpret_sha256, interpret_tarball_with_md5, interpret_tarball, interpret_jar]:
+        result = f(x)
+        if result is not None:
+            return result
+
+    return 'unrecognized'
+
+
+def interpret_md5(x):
+    """
+    >>> interpret_md5("ODFGEN_MD5SUM", "32572ea48d9021bbd6fa317ddb697abc")
+    {'name': 'ODFGEN', 'attrs': {'md5': '32572ea48d9021bbd6fa317ddb697abc'}}
+    """
+
+    match = re.match('^(.*)_MD5SUM$', x['key'])
+
+    if match:
+        return {'name': match.group(1),
+                'attrs': {'md5': x['value'], 'sha256': ''}}
+
+def interpret_sha256(x):
+    match = re.match('^(.*)_SHA256SUM$', x['key'])
+
+    if match:
+        return {'name': match.group(1),
+                'attrs': {'sha256': x['value'], 'md5': ''}}
+
+def interpret_tarball(x):
+    """
+    >>> interpret_tarball("FREEHAND_TARBALL", "libfreehand-0.1.1.tar.bz2")
+    {'name': 'FREEHAND',
+     'attrs': {'tarball': 'libfreehand-0.1.1.tar.bz2', 'brief': True}}
+    """
+
+    match = re.match('^(.*)_TARBALL$', x['key'])
+
+    if match:
+        return {'name': match.group(1),
+                'attrs': {'tarball': x['value'], 'brief': True}}
+
+def interpret_jar(x):
+    match = re.match('^(.*)_JAR$', x['key'])
+
+    if match:
+        return {'name': match.group(1),
+                'attrs': {'tarball': x['value'], 'brief': True}}
+
+
+def interpret_tarball_with_md5(x):
+    """
+    >>> interpret_tarball_with_md5("CLUCENE_TARBALL",\
+        "48d647fbd8ef8889e5a7f422c1bfda94-clucene-core-2.3.3.4.tar.gz")
+    {'name': 'CLUCENE',
+     'attrs': {'tarball': 'clucene-core-2.3.3.4.tar.gz',
+               'md5': '48d647fbd8ef8889e5a7f422c1bfda94', 'brief': False}}
+    """
+
+    match = {'key': re.match('^(.*)_(TARBALL|JAR)$', x['key']),
+             'value': re.match('(?P<md5>[0-9a-fA-F]{32})-(?P<tarball>.+)$',
+                               x['value'])}
+
+    if match['key'] and match['value']:
+        return {'name': match['key'].group(1),
+                'attrs': {'tarball': match['value'].group('tarball'),
+                          'md5': match['value'].group('md5'),
+                          'sha256': '',
+                          'brief': False}}
+
+
+main()
diff --git a/nixpkgs/pkgs/applications/office/libreoffice/libreoffice-srcs-additions.json b/nixpkgs/pkgs/applications/office/libreoffice/libreoffice-srcs-additions.json
new file mode 100644
index 000000000000..5b4363189f7f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/libreoffice/libreoffice-srcs-additions.json
@@ -0,0 +1,5 @@
+{
+  "LIBGLTF": {"subdir": "libgltf/"},
+  "ODFVALIDATOR": {"subdir": "../extern/"},
+  "OFFICEOTRON": {"subdir": "../extern/"}
+}
diff --git a/nixpkgs/pkgs/applications/office/libreoffice/src-fresh/download.nix b/nixpkgs/pkgs/applications/office/libreoffice/src-fresh/download.nix
new file mode 100644
index 000000000000..f4b14870eb79
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/libreoffice/src-fresh/download.nix
@@ -0,0 +1,870 @@
+[
+  {
+    name = "libabw-0.1.3.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libabw-0.1.3.tar.xz";
+    sha256 = "e763a9dc21c3d2667402d66e202e3f8ef4db51b34b79ef41f56cacb86dcd6eed";
+    md5 = "";
+    md5name = "e763a9dc21c3d2667402d66e202e3f8ef4db51b34b79ef41f56cacb86dcd6eed-libabw-0.1.3.tar.xz";
+  }
+  {
+    name = "commons-logging-1.2-src.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/commons-logging-1.2-src.tar.gz";
+    sha256 = "49665da5a60d033e6dff40fe0a7f9173e886ae859ce6096c1afe34c48b677c81";
+    md5 = "";
+    md5name = "49665da5a60d033e6dff40fe0a7f9173e886ae859ce6096c1afe34c48b677c81-commons-logging-1.2-src.tar.gz";
+  }
+  {
+    name = "apr-1.5.2.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/apr-1.5.2.tar.gz";
+    sha256 = "1af06e1720a58851d90694a984af18355b65bb0d047be03ec7d659c746d6dbdb";
+    md5 = "";
+    md5name = "1af06e1720a58851d90694a984af18355b65bb0d047be03ec7d659c746d6dbdb-apr-1.5.2.tar.gz";
+  }
+  {
+    name = "apr-util-1.5.4.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/apr-util-1.5.4.tar.gz";
+    sha256 = "976a12a59bc286d634a21d7be0841cc74289ea9077aa1af46be19d1a6e844c19";
+    md5 = "";
+    md5name = "976a12a59bc286d634a21d7be0841cc74289ea9077aa1af46be19d1a6e844c19-apr-util-1.5.4.tar.gz";
+  }
+  {
+    name = "boost_1_69_0.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/boost_1_69_0.tar.bz2";
+    sha256 = "8f32d4617390d1c2d16f26a27ab60d97807b35440d45891fa340fc2648b04406";
+    md5 = "";
+    md5name = "8f32d4617390d1c2d16f26a27ab60d97807b35440d45891fa340fc2648b04406-boost_1_69_0.tar.bz2";
+  }
+  {
+    name = "breakpad.zip";
+    url = "http://dev-www.libreoffice.org/src/breakpad.zip";
+    sha256 = "7060149be16a8789b0ccf596bdeaf63115f03f520acb508f72a14686fb311cb9";
+    md5 = "";
+    md5name = "7060149be16a8789b0ccf596bdeaf63115f03f520acb508f72a14686fb311cb9-breakpad.zip";
+  }
+  {
+    name = "bsh-2.0b6-src.zip";
+    url = "http://dev-www.libreoffice.org/src/beeca87be45ec87d241ddd0e1bad80c1-bsh-2.0b6-src.zip";
+    sha256 = "9e93c73e23aff644b17dfff656444474c14150e7f3b38b19635e622235e01c96";
+    md5 = "beeca87be45ec87d241ddd0e1bad80c1";
+    md5name = "beeca87be45ec87d241ddd0e1bad80c1-bsh-2.0b6-src.zip";
+  }
+  {
+    name = "bzip2-1.0.6.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/00b516f4704d4a7cb50a1d97e6e8e15b-bzip2-1.0.6.tar.gz";
+    sha256 = "a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd";
+    md5 = "00b516f4704d4a7cb50a1d97e6e8e15b";
+    md5name = "00b516f4704d4a7cb50a1d97e6e8e15b-bzip2-1.0.6.tar.gz";
+  }
+  {
+    name = "cairo-1.16.0.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/cairo-1.16.0.tar.xz";
+    sha256 = "5e7b29b3f113ef870d1e3ecf8adf21f923396401604bda16d44be45e66052331";
+    md5 = "";
+    md5name = "5e7b29b3f113ef870d1e3ecf8adf21f923396401604bda16d44be45e66052331-cairo-1.16.0.tar.xz";
+  }
+  {
+    name = "libcdr-0.1.5.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libcdr-0.1.5.tar.xz";
+    sha256 = "6ace5c499a8be34ad871e825442ce388614ae2d8675c4381756a7319429e3a48";
+    md5 = "";
+    md5name = "6ace5c499a8be34ad871e825442ce388614ae2d8675c4381756a7319429e3a48-libcdr-0.1.5.tar.xz";
+  }
+  {
+    name = "clucene-core-2.3.3.4.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/48d647fbd8ef8889e5a7f422c1bfda94-clucene-core-2.3.3.4.tar.gz";
+    sha256 = "ddfdc433dd8ad31b5c5819cc4404a8d2127472a3b720d3e744e8c51d79732eab";
+    md5 = "48d647fbd8ef8889e5a7f422c1bfda94";
+    md5name = "48d647fbd8ef8889e5a7f422c1bfda94-clucene-core-2.3.3.4.tar.gz";
+  }
+  {
+    name = "libcmis-0.5.2.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libcmis-0.5.2.tar.xz";
+    sha256 = "d7b18d9602190e10d437f8a964a32e983afd57e2db316a07d87477a79f5000a2";
+    md5 = "";
+    md5name = "d7b18d9602190e10d437f8a964a32e983afd57e2db316a07d87477a79f5000a2-libcmis-0.5.2.tar.xz";
+  }
+  {
+    name = "CoinMP-1.7.6.tgz";
+    url = "http://dev-www.libreoffice.org/src/CoinMP-1.7.6.tgz";
+    sha256 = "86c798780b9e1f5921fe4efe651a93cb420623b45aa1fdff57af8c37f116113f";
+    md5 = "";
+    md5name = "86c798780b9e1f5921fe4efe651a93cb420623b45aa1fdff57af8c37f116113f-CoinMP-1.7.6.tgz";
+  }
+  {
+    name = "cppunit-1.14.0.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/cppunit-1.14.0.tar.gz";
+    sha256 = "3d569869d27b48860210c758c4f313082103a5e58219a7669b52bfd29d674780";
+    md5 = "";
+    md5name = "3d569869d27b48860210c758c4f313082103a5e58219a7669b52bfd29d674780-cppunit-1.14.0.tar.gz";
+  }
+  {
+    name = "converttexttonumber-1-5-0.oxt";
+    url = "http://dev-www.libreoffice.org/src/1f467e5bb703f12cbbb09d5cf67ecf4a-converttexttonumber-1-5-0.oxt";
+    sha256 = "71b238efd2734be9800af07566daea8d6685aeed28db5eb5fa0e6453f4d85de3";
+    md5 = "1f467e5bb703f12cbbb09d5cf67ecf4a";
+    md5name = "1f467e5bb703f12cbbb09d5cf67ecf4a-converttexttonumber-1-5-0.oxt";
+  }
+  {
+    name = "curl-7.65.0.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/curl-7.65.0.tar.xz";
+    sha256 = "7766d263929404f693905b5e5222aa0f2bdf8c66ab4b8758f0c0820a42b966cd";
+    md5 = "";
+    md5name = "7766d263929404f693905b5e5222aa0f2bdf8c66ab4b8758f0c0820a42b966cd-curl-7.65.0.tar.xz";
+  }
+  {
+    name = "libe-book-0.1.3.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libe-book-0.1.3.tar.xz";
+    sha256 = "7e8d8ff34f27831aca3bc6f9cc532c2f90d2057c778963b884ff3d1e34dfe1f9";
+    md5 = "";
+    md5name = "7e8d8ff34f27831aca3bc6f9cc532c2f90d2057c778963b884ff3d1e34dfe1f9-libe-book-0.1.3.tar.xz";
+  }
+  {
+    name = "libepoxy-1.5.3.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libepoxy-1.5.3.tar.xz";
+    sha256 = "002958c5528321edd53440235d3c44e71b5b1e09b9177e8daf677450b6c4433d";
+    md5 = "";
+    md5name = "002958c5528321edd53440235d3c44e71b5b1e09b9177e8daf677450b6c4433d-libepoxy-1.5.3.tar.xz";
+  }
+  {
+    name = "epm-3.7.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/3ade8cfe7e59ca8e65052644fed9fca4-epm-3.7.tar.gz";
+    sha256 = "b3fc4c5445de6c9a801504a3ea3efb2d4ea9d5a622c9427e716736e7713ddb91";
+    md5 = "3ade8cfe7e59ca8e65052644fed9fca4";
+    md5name = "3ade8cfe7e59ca8e65052644fed9fca4-epm-3.7.tar.gz";
+  }
+  {
+    name = "libepubgen-0.1.1.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libepubgen-0.1.1.tar.xz";
+    sha256 = "03e084b994cbeffc8c3dd13303b2cb805f44d8f2c3b79f7690d7e3fc7f6215ad";
+    md5 = "";
+    md5name = "03e084b994cbeffc8c3dd13303b2cb805f44d8f2c3b79f7690d7e3fc7f6215ad-libepubgen-0.1.1.tar.xz";
+  }
+  {
+    name = "libetonyek-0.1.9.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libetonyek-0.1.9.tar.xz";
+    sha256 = "e61677e8799ce6e55b25afc11aa5339113f6a49cff031f336e32fa58635b1a4a";
+    md5 = "";
+    md5name = "e61677e8799ce6e55b25afc11aa5339113f6a49cff031f336e32fa58635b1a4a-libetonyek-0.1.9.tar.xz";
+  }
+  {
+    name = "expat-2.2.8.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/expat-2.2.8.tar.bz2";
+    sha256 = "9a130948b05a82da34e4171d5f5ae5d321d9630277af02c8fa51e431f6475102";
+    md5 = "";
+    md5name = "9a130948b05a82da34e4171d5f5ae5d321d9630277af02c8fa51e431f6475102-expat-2.2.8.tar.bz2";
+  }
+  {
+    name = "Firebird-3.0.0.32483-0.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/Firebird-3.0.0.32483-0.tar.bz2";
+    sha256 = "6994be3555e23226630c587444be19d309b25b0fcf1f87df3b4e3f88943e5860";
+    md5 = "";
+    md5name = "6994be3555e23226630c587444be19d309b25b0fcf1f87df3b4e3f88943e5860-Firebird-3.0.0.32483-0.tar.bz2";
+  }
+  {
+    name = "fontconfig-2.12.6.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/fontconfig-2.12.6.tar.bz2";
+    sha256 = "cf0c30807d08f6a28ab46c61b8dbd55c97d2f292cf88f3a07d3384687f31f017";
+    md5 = "";
+    md5name = "cf0c30807d08f6a28ab46c61b8dbd55c97d2f292cf88f3a07d3384687f31f017-fontconfig-2.12.6.tar.bz2";
+  }
+  {
+    name = "crosextrafonts-20130214.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/368f114c078f94214a308a74c7e991bc-crosextrafonts-20130214.tar.gz";
+    sha256 = "c48d1c2fd613c9c06c959c34da7b8388059e2408d2bb19845dc3ed35f76e4d09";
+    md5 = "368f114c078f94214a308a74c7e991bc";
+    md5name = "368f114c078f94214a308a74c7e991bc-crosextrafonts-20130214.tar.gz";
+  }
+  {
+    name = "crosextrafonts-carlito-20130920.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/c74b7223abe75949b4af367942d96c7a-crosextrafonts-carlito-20130920.tar.gz";
+    sha256 = "4bd12b6cbc321c1cf16da76e2c585c925ce956a08067ae6f6c64eff6ccfdaf5a";
+    md5 = "c74b7223abe75949b4af367942d96c7a";
+    md5name = "c74b7223abe75949b4af367942d96c7a-crosextrafonts-carlito-20130920.tar.gz";
+  }
+  {
+    name = "dejavu-fonts-ttf-2.37.zip";
+    url = "http://dev-www.libreoffice.org/src/33e1e61fab06a547851ed308b4ffef42-dejavu-fonts-ttf-2.37.zip";
+    sha256 = "7576310b219e04159d35ff61dd4a4ec4cdba4f35c00e002a136f00e96a908b0a";
+    md5 = "33e1e61fab06a547851ed308b4ffef42";
+    md5name = "33e1e61fab06a547851ed308b4ffef42-dejavu-fonts-ttf-2.37.zip";
+  }
+  {
+    name = "GentiumBasic_1102.zip";
+    url = "http://dev-www.libreoffice.org/src/1725634df4bb3dcb1b2c91a6175f8789-GentiumBasic_1102.zip";
+    sha256 = "2f1a2c5491d7305dffd3520c6375d2f3e14931ee35c6d8ae1e8f098bf1a7b3cc";
+    md5 = "1725634df4bb3dcb1b2c91a6175f8789";
+    md5name = "1725634df4bb3dcb1b2c91a6175f8789-GentiumBasic_1102.zip";
+  }
+  {
+    name = "liberation-narrow-fonts-ttf-1.07.6.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/liberation-narrow-fonts-ttf-1.07.6.tar.gz";
+    sha256 = "8879d89b5ff7b506c9fc28efc31a5c0b954bbe9333e66e5283d27d20a8519ea3";
+    md5 = "";
+    md5name = "8879d89b5ff7b506c9fc28efc31a5c0b954bbe9333e66e5283d27d20a8519ea3-liberation-narrow-fonts-ttf-1.07.6.tar.gz";
+  }
+  {
+    name = "liberation-fonts-ttf-2.00.4.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/liberation-fonts-ttf-2.00.4.tar.gz";
+    sha256 = "c40e95fc5e0ecb73d4be565ae2afc1114e2bc7dc5253e00ee92d8fd6cc4adf45";
+    md5 = "";
+    md5name = "c40e95fc5e0ecb73d4be565ae2afc1114e2bc7dc5253e00ee92d8fd6cc4adf45-liberation-fonts-ttf-2.00.4.tar.gz";
+  }
+  {
+    name = "LinLibertineG-20120116.zip";
+    url = "http://dev-www.libreoffice.org/src/e7a384790b13c29113e22e596ade9687-LinLibertineG-20120116.zip";
+    sha256 = "54adcb2bc8cac0927a647fbd9362f45eff48130ce6e2379dc3867643019e08c5";
+    md5 = "e7a384790b13c29113e22e596ade9687";
+    md5name = "e7a384790b13c29113e22e596ade9687-LinLibertineG-20120116.zip";
+  }
+  {
+    name = "source-code-pro-2.030R-ro-1.050R-it.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/907d6e99f241876695c19ff3db0b8923-source-code-pro-2.030R-ro-1.050R-it.tar.gz";
+    sha256 = "09466dce87653333f189acd8358c60c6736dcd95f042dee0b644bdcf65b6ae2f";
+    md5 = "907d6e99f241876695c19ff3db0b8923";
+    md5name = "907d6e99f241876695c19ff3db0b8923-source-code-pro-2.030R-ro-1.050R-it.tar.gz";
+  }
+  {
+    name = "source-sans-pro-2.010R-ro-1.065R-it.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/edc4d741888bc0d38e32dbaa17149596-source-sans-pro-2.010R-ro-1.065R-it.tar.gz";
+    sha256 = "e7bc9a1fec787a529e49f5a26b93dcdcf41506449dfc70f92cdef6d17eb6fb61";
+    md5 = "edc4d741888bc0d38e32dbaa17149596";
+    md5name = "edc4d741888bc0d38e32dbaa17149596-source-sans-pro-2.010R-ro-1.065R-it.tar.gz";
+  }
+  {
+    name = "source-serif-pro-3.000R.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/source-serif-pro-3.000R.tar.gz";
+    sha256 = "826a2b784d5cdb4c2bbc7830eb62871528360a61a52689c102a101623f1928e3";
+    md5 = "";
+    md5name = "826a2b784d5cdb4c2bbc7830eb62871528360a61a52689c102a101623f1928e3-source-serif-pro-3.000R.tar.gz";
+  }
+  {
+    name = "EmojiOneColor-SVGinOT-1.3.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/EmojiOneColor-SVGinOT-1.3.tar.gz";
+    sha256 = "d1a08f7c10589f22740231017694af0a7a270760c8dec33d8d1c038e2be0a0c7";
+    md5 = "";
+    md5name = "d1a08f7c10589f22740231017694af0a7a270760c8dec33d8d1c038e2be0a0c7-EmojiOneColor-SVGinOT-1.3.tar.gz";
+  }
+  {
+    name = "noto-fonts-20171024.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/noto-fonts-20171024.tar.gz";
+    sha256 = "29acc15a4c4d6b51201ba5d60f303dfbc2e5acbfdb70413c9ae1ed34fa259994";
+    md5 = "";
+    md5name = "29acc15a4c4d6b51201ba5d60f303dfbc2e5acbfdb70413c9ae1ed34fa259994-noto-fonts-20171024.tar.gz";
+  }
+  {
+    name = "culmus-0.131.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/culmus-0.131.tar.gz";
+    sha256 = "dcf112cfcccb76328dcfc095f4d7c7f4d2f7e48d0eed5e78b100d1d77ce2ed1b";
+    md5 = "";
+    md5name = "dcf112cfcccb76328dcfc095f4d7c7f4d2f7e48d0eed5e78b100d1d77ce2ed1b-culmus-0.131.tar.gz";
+  }
+  {
+    name = "libre-hebrew-1.0.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/libre-hebrew-1.0.tar.gz";
+    sha256 = "f596257c1db706ce35795b18d7f66a4db99d427725f20e9384914b534142579a";
+    md5 = "";
+    md5name = "f596257c1db706ce35795b18d7f66a4db99d427725f20e9384914b534142579a-libre-hebrew-1.0.tar.gz";
+  }
+  {
+    name = "alef-1.001.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/alef-1.001.tar.gz";
+    sha256 = "b98b67602a2c8880a1770f0b9e37c190f29a7e2ade5616784f0b89fbdb75bf52";
+    md5 = "";
+    md5name = "b98b67602a2c8880a1770f0b9e37c190f29a7e2ade5616784f0b89fbdb75bf52-alef-1.001.tar.gz";
+  }
+  {
+    name = "Amiri-0.111.zip";
+    url = "http://dev-www.libreoffice.org/src/Amiri-0.111.zip";
+    sha256 = "1fbfccced6348b5db2c1c21d5b319cd488e14d055702fa817a0f6cb83d882166";
+    md5 = "";
+    md5name = "1fbfccced6348b5db2c1c21d5b319cd488e14d055702fa817a0f6cb83d882166-Amiri-0.111.zip";
+  }
+  {
+    name = "ttf-kacst_2.01+mry.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/ttf-kacst_2.01+mry.tar.gz";
+    sha256 = "dca00f5e655f2f217a766faa73a81f542c5c204aa3a47017c3c2be0b31d00a56";
+    md5 = "";
+    md5name = "dca00f5e655f2f217a766faa73a81f542c5c204aa3a47017c3c2be0b31d00a56-ttf-kacst_2.01+mry.tar.gz";
+  }
+  {
+    name = "ReemKufi-0.7.zip";
+    url = "http://dev-www.libreoffice.org/src/ReemKufi-0.7.zip";
+    sha256 = "f60c6508d209ce4236d2d7324256c2ffddd480be7e3d6023770b93dc391a605f";
+    md5 = "";
+    md5name = "f60c6508d209ce4236d2d7324256c2ffddd480be7e3d6023770b93dc391a605f-ReemKufi-0.7.zip";
+  }
+  {
+    name = "Scheherazade-2.100.zip";
+    url = "http://dev-www.libreoffice.org/src/Scheherazade-2.100.zip";
+    sha256 = "251c8817ceb87d9b661ce1d5b49e732a0116add10abc046be4b8ba5196e149b5";
+    md5 = "";
+    md5name = "251c8817ceb87d9b661ce1d5b49e732a0116add10abc046be4b8ba5196e149b5-Scheherazade-2.100.zip";
+  }
+  {
+    name = "libfreehand-0.1.2.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libfreehand-0.1.2.tar.xz";
+    sha256 = "0e422d1564a6dbf22a9af598535425271e583514c0f7ba7d9091676420de34ac";
+    md5 = "";
+    md5name = "0e422d1564a6dbf22a9af598535425271e583514c0f7ba7d9091676420de34ac-libfreehand-0.1.2.tar.xz";
+  }
+  {
+    name = "freetype-2.9.1.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/freetype-2.9.1.tar.bz2";
+    sha256 = "db8d87ea720ea9d5edc5388fc7a0497bb11ba9fe972245e0f7f4c7e8b1e1e84d";
+    md5 = "";
+    md5name = "db8d87ea720ea9d5edc5388fc7a0497bb11ba9fe972245e0f7f4c7e8b1e1e84d-freetype-2.9.1.tar.bz2";
+  }
+  {
+    name = "glm-0.9.4.6-libreoffice.zip";
+    url = "http://dev-www.libreoffice.org/src/bae83fa5dc7f081768daace6e199adc3-glm-0.9.4.6-libreoffice.zip";
+    sha256 = "d0312c360efe04dd048b3311fe375ff36f1993b4c2e3cb58c81062990532904a";
+    md5 = "bae83fa5dc7f081768daace6e199adc3";
+    md5name = "bae83fa5dc7f081768daace6e199adc3-glm-0.9.4.6-libreoffice.zip";
+  }
+  {
+    name = "gpgme-1.9.0.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/gpgme-1.9.0.tar.bz2";
+    sha256 = "1b29fedb8bfad775e70eafac5b0590621683b2d9869db994568e6401f4034ceb";
+    md5 = "";
+    md5name = "1b29fedb8bfad775e70eafac5b0590621683b2d9869db994568e6401f4034ceb-gpgme-1.9.0.tar.bz2";
+  }
+  {
+    name = "graphite2-minimal-1.3.13.tgz";
+    url = "http://dev-www.libreoffice.org/src/graphite2-minimal-1.3.13.tgz";
+    sha256 = "d47d387161db7f7ebade1920aa7cbdc797e79772597d8b55e80b58d1071bcc36";
+    md5 = "";
+    md5name = "d47d387161db7f7ebade1920aa7cbdc797e79772597d8b55e80b58d1071bcc36-graphite2-minimal-1.3.13.tgz";
+  }
+  {
+    name = "harfbuzz-2.6.0.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/harfbuzz-2.6.0.tar.xz";
+    sha256 = "9cf7d117548265f95ca884e2f4c9fafaf4e17d45a67b11107147b79eed76c966";
+    md5 = "";
+    md5name = "9cf7d117548265f95ca884e2f4c9fafaf4e17d45a67b11107147b79eed76c966-harfbuzz-2.6.0.tar.xz";
+  }
+  {
+    name = "hsqldb_1_8_0.zip";
+    url = "http://dev-www.libreoffice.org/src/17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip";
+    sha256 = "d30b13f4ba2e3b6a2d4f020c0dee0a9fb9fc6fbcc2d561f36b78da4bf3802370";
+    md5 = "17410483b5b5f267aa18b7e00b65e6e0";
+    md5name = "17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip";
+  }
+  {
+    name = "hunspell-1.7.0.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/hunspell-1.7.0.tar.gz";
+    sha256 = "57be4e03ae9dd62c3471f667a0d81a14513e314d4d92081292b90435944ff951";
+    md5 = "";
+    md5name = "57be4e03ae9dd62c3471f667a0d81a14513e314d4d92081292b90435944ff951-hunspell-1.7.0.tar.gz";
+  }
+  {
+    name = "hyphen-2.8.8.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/5ade6ae2a99bc1e9e57031ca88d36dad-hyphen-2.8.8.tar.gz";
+    sha256 = "304636d4eccd81a14b6914d07b84c79ebb815288c76fe027b9ebff6ff24d5705";
+    md5 = "5ade6ae2a99bc1e9e57031ca88d36dad";
+    md5name = "5ade6ae2a99bc1e9e57031ca88d36dad-hyphen-2.8.8.tar.gz";
+  }
+  {
+    name = "icu4c-65_1-src.tgz";
+    url = "http://dev-www.libreoffice.org/src/icu4c-65_1-src.tgz";
+    sha256 = "53e37466b3d6d6d01ead029e3567d873a43a5d1c668ed2278e253b683136d948";
+    md5 = "";
+    md5name = "53e37466b3d6d6d01ead029e3567d873a43a5d1c668ed2278e253b683136d948-icu4c-65_1-src.tgz";
+  }
+  {
+    name = "icu4c-65_1-data.zip";
+    url = "http://dev-www.libreoffice.org/src/icu4c-65_1-data.zip";
+    sha256 = "06359a7c4ad125ba11d3ac30617cd4b932f1214f611db96573032726574896b6";
+    md5 = "";
+    md5name = "06359a7c4ad125ba11d3ac30617cd4b932f1214f611db96573032726574896b6-icu4c-65_1-data.zip";
+  }
+  {
+    name = "flow-engine-0.9.4.zip";
+    url = "http://dev-www.libreoffice.org/src/ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip";
+    sha256 = "233f66e8d25c5dd971716d4200203a612a407649686ef3b52075d04b4c9df0dd";
+    md5 = "ba2930200c9f019c2d93a8c88c651a0f";
+    md5name = "ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip";
+  }
+  {
+    name = "flute-1.1.6.zip";
+    url = "http://dev-www.libreoffice.org/src/d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip";
+    sha256 = "1b5b24f7bc543c0362b667692f78db8bab4ed6dafc6172f104d0bd3757d8a133";
+    md5 = "d8bd5eed178db6e2b18eeed243f85aa8";
+    md5name = "d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip";
+  }
+  {
+    name = "libbase-1.1.6.zip";
+    url = "http://dev-www.libreoffice.org/src/eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip";
+    sha256 = "75c80359c9ce343c20aab8a36a45cb3b9ee7c61cf92c13ae45399d854423a9ba";
+    md5 = "eeb2c7ddf0d302fba4bfc6e97eac9624";
+    md5name = "eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip";
+  }
+  {
+    name = "libfonts-1.1.6.zip";
+    url = "http://dev-www.libreoffice.org/src/3bdf40c0d199af31923e900d082ca2dd-libfonts-1.1.6.zip";
+    sha256 = "e0531091787c0f16c83965fdcbc49162c059d7f0c64669e7f119699321549743";
+    md5 = "3bdf40c0d199af31923e900d082ca2dd";
+    md5name = "3bdf40c0d199af31923e900d082ca2dd-libfonts-1.1.6.zip";
+  }
+  {
+    name = "libformula-1.1.7.zip";
+    url = "http://dev-www.libreoffice.org/src/3404ab6b1792ae5f16bbd603bd1e1d03-libformula-1.1.7.zip";
+    sha256 = "5826d1551bf599b85742545f6e01a0079b93c1b2c8434bf409eddb3a29e4726b";
+    md5 = "3404ab6b1792ae5f16bbd603bd1e1d03";
+    md5name = "3404ab6b1792ae5f16bbd603bd1e1d03-libformula-1.1.7.zip";
+  }
+  {
+    name = "liblayout-0.2.10.zip";
+    url = "http://dev-www.libreoffice.org/src/db60e4fde8dd6d6807523deb71ee34dc-liblayout-0.2.10.zip";
+    sha256 = "e1fb87f3f7b980d33414473279615c4644027e013012d156efa538bc2b031772";
+    md5 = "db60e4fde8dd6d6807523deb71ee34dc";
+    md5name = "db60e4fde8dd6d6807523deb71ee34dc-liblayout-0.2.10.zip";
+  }
+  {
+    name = "libloader-1.1.6.zip";
+    url = "http://dev-www.libreoffice.org/src/97b2d4dba862397f446b217e2b623e71-libloader-1.1.6.zip";
+    sha256 = "3d853b19b1d94a6efa69e7af90f7f2b09ecf302913bee3da796c15ecfebcfac8";
+    md5 = "97b2d4dba862397f446b217e2b623e71";
+    md5name = "97b2d4dba862397f446b217e2b623e71-libloader-1.1.6.zip";
+  }
+  {
+    name = "librepository-1.1.6.zip";
+    url = "http://dev-www.libreoffice.org/src/8ce2fcd72becf06c41f7201d15373ed9-librepository-1.1.6.zip";
+    sha256 = "abe2c57ac12ba45d83563b02e240fa95d973376de2f720aab8fe11f2e621c095";
+    md5 = "8ce2fcd72becf06c41f7201d15373ed9";
+    md5name = "8ce2fcd72becf06c41f7201d15373ed9-librepository-1.1.6.zip";
+  }
+  {
+    name = "libserializer-1.1.6.zip";
+    url = "http://dev-www.libreoffice.org/src/f94d9870737518e3b597f9265f4e9803-libserializer-1.1.6.zip";
+    sha256 = "05640a1f6805b2b2d7e2cb9c50db9a5cb084e3c52ab1a71ce015239b4a1d4343";
+    md5 = "f94d9870737518e3b597f9265f4e9803";
+    md5name = "f94d9870737518e3b597f9265f4e9803-libserializer-1.1.6.zip";
+  }
+  {
+    name = "libxml-1.1.7.zip";
+    url = "http://dev-www.libreoffice.org/src/ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip";
+    sha256 = "7d2797fe9f79a77009721e3f14fa4a1dec17a6d706bdc93f85f1f01d124fab66";
+    md5 = "ace6ab49184e329db254e454a010f56d";
+    md5name = "ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip";
+  }
+  {
+    name = "sacjava-1.3.zip";
+    url = "http://dev-www.libreoffice.org/src/39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip";
+    sha256 = "085f2112c51fa8c1783fac12fbd452650596415121348393bb51f0f7e85a9045";
+    md5 = "39bb3fcea1514f1369fcfc87542390fd";
+    md5name = "39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip";
+  }
+  {
+    name = "libjpeg-turbo-1.5.3.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/libjpeg-turbo-1.5.3.tar.gz";
+    sha256 = "b24890e2bb46e12e72a79f7e965f409f4e16466d00e1dd15d93d73ee6b592523";
+    md5 = "";
+    md5name = "b24890e2bb46e12e72a79f7e965f409f4e16466d00e1dd15d93d73ee6b592523-libjpeg-turbo-1.5.3.tar.gz";
+  }
+  {
+    name = "language-subtag-registry-2019-09-16.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/language-subtag-registry-2019-09-16.tar.bz2";
+    sha256 = "07b66bc0f2786fde55f6bbcbcb4a455a846eb8e2351c8ce3d0a219a73693736a";
+    md5 = "";
+    md5name = "07b66bc0f2786fde55f6bbcbcb4a455a846eb8e2351c8ce3d0a219a73693736a-language-subtag-registry-2019-09-16.tar.bz2";
+  }
+  {
+    name = "JLanguageTool-1.7.0.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/b63e6340a02ff1cacfeadb2c42286161-JLanguageTool-1.7.0.tar.bz2";
+    sha256 = "48c87e41636783bba438b65fd895821e369ed139e1465fac654323ad93c5a82d";
+    md5 = "b63e6340a02ff1cacfeadb2c42286161";
+    md5name = "b63e6340a02ff1cacfeadb2c42286161-JLanguageTool-1.7.0.tar.bz2";
+  }
+  {
+    name = "lcms2-2.9.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/lcms2-2.9.tar.gz";
+    sha256 = "48c6fdf98396fa245ed86e622028caf49b96fa22f3e5734f853f806fbc8e7d20";
+    md5 = "";
+    md5name = "48c6fdf98396fa245ed86e622028caf49b96fa22f3e5734f853f806fbc8e7d20-lcms2-2.9.tar.gz";
+  }
+  {
+    name = "libassuan-2.5.1.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/libassuan-2.5.1.tar.bz2";
+    sha256 = "47f96c37b4f2aac289f0bc1bacfa8bd8b4b209a488d3d15e2229cb6cc9b26449";
+    md5 = "";
+    md5name = "47f96c37b4f2aac289f0bc1bacfa8bd8b4b209a488d3d15e2229cb6cc9b26449-libassuan-2.5.1.tar.bz2";
+  }
+  {
+    name = "libatomic_ops-7.6.8.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/libatomic_ops-7.6.8.tar.gz";
+    sha256 = "1d6a279edf81767e74d2ad2c9fce09459bc65f12c6525a40b0cb3e53c089f665";
+    md5 = "";
+    md5name = "1d6a279edf81767e74d2ad2c9fce09459bc65f12c6525a40b0cb3e53c089f665-libatomic_ops-7.6.8.tar.gz";
+  }
+  {
+    name = "libeot-0.01.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/libeot-0.01.tar.bz2";
+    sha256 = "cf5091fa8e7dcdbe667335eb90a2cfdd0a3fe8f8c7c8d1ece44d9d055736a06a";
+    md5 = "";
+    md5name = "cf5091fa8e7dcdbe667335eb90a2cfdd0a3fe8f8c7c8d1ece44d9d055736a06a-libeot-0.01.tar.bz2";
+  }
+  {
+    name = "libexttextcat-3.4.5.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libexttextcat-3.4.5.tar.xz";
+    sha256 = "13fdbc9d4c489a4d0519e51933a1aa21fe3fb9eb7da191b87f7a63e82797dac8";
+    md5 = "";
+    md5name = "13fdbc9d4c489a4d0519e51933a1aa21fe3fb9eb7da191b87f7a63e82797dac8-libexttextcat-3.4.5.tar.xz";
+  }
+  {
+    name = "libffi-3.3.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/libffi-3.3.tar.gz";
+    sha256 = "72fba7922703ddfa7a028d513ac15a85c8d54c8d67f55fa5a4802885dc652056";
+    md5 = "";
+    md5name = "72fba7922703ddfa7a028d513ac15a85c8d54c8d67f55fa5a4802885dc652056-libffi-3.3.tar.gz";
+  }
+  {
+    name = "libgpg-error-1.27.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/libgpg-error-1.27.tar.bz2";
+    sha256 = "4f93aac6fecb7da2b92871bb9ee33032be6a87b174f54abf8ddf0911a22d29d2";
+    md5 = "";
+    md5name = "4f93aac6fecb7da2b92871bb9ee33032be6a87b174f54abf8ddf0911a22d29d2-libgpg-error-1.27.tar.bz2";
+  }
+  {
+    name = "liblangtag-0.6.2.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/liblangtag-0.6.2.tar.bz2";
+    sha256 = "d6242790324f1432fb0a6fae71b6851f520b2c5a87675497cf8ea14c2924d52e";
+    md5 = "";
+    md5name = "d6242790324f1432fb0a6fae71b6851f520b2c5a87675497cf8ea14c2924d52e-liblangtag-0.6.2.tar.bz2";
+  }
+  {
+    name = "libnumbertext-1.0.5.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libnumbertext-1.0.5.tar.xz";
+    sha256 = "e1c9086b4cecb6b25f180316f30740dfabe6a4dbaf70dddc34276fc839e4f4f7";
+    md5 = "";
+    md5name = "e1c9086b4cecb6b25f180316f30740dfabe6a4dbaf70dddc34276fc839e4f4f7-libnumbertext-1.0.5.tar.xz";
+  }
+  {
+    name = "ltm-1.0.zip";
+    url = "http://dev-www.libreoffice.org/src/ltm-1.0.zip";
+    sha256 = "083daa92d8ee6f4af96a6143b12d7fc8fe1a547e14f862304f7281f8f7347483";
+    md5 = "";
+    md5name = "083daa92d8ee6f4af96a6143b12d7fc8fe1a547e14f862304f7281f8f7347483-ltm-1.0.zip";
+  }
+  {
+    name = "xmlsec1-1.2.28.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/xmlsec1-1.2.28.tar.gz";
+    sha256 = "13eec4811ea30e3f0e16a734d1dbf7f9d246a71d540b48d143a07b489f6222d4";
+    md5 = "";
+    md5name = "13eec4811ea30e3f0e16a734d1dbf7f9d246a71d540b48d143a07b489f6222d4-xmlsec1-1.2.28.tar.gz";
+  }
+  {
+    name = "libxml2-2.9.10.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/libxml2-2.9.10.tar.gz";
+    sha256 = "aafee193ffb8fe0c82d4afef6ef91972cbaf5feea100edc2f262750611b4be1f";
+    md5 = "";
+    md5name = "aafee193ffb8fe0c82d4afef6ef91972cbaf5feea100edc2f262750611b4be1f-libxml2-2.9.10.tar.gz";
+  }
+  {
+    name = "libxslt-1.1.34.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/libxslt-1.1.34.tar.gz";
+    sha256 = "98b1bd46d6792925ad2dfe9a87452ea2adebf69dcb9919ffd55bf926a7f93f7f";
+    md5 = "";
+    md5name = "98b1bd46d6792925ad2dfe9a87452ea2adebf69dcb9919ffd55bf926a7f93f7f-libxslt-1.1.34.tar.gz";
+  }
+  {
+    name = "lp_solve_5.5.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/26b3e95ddf3d9c077c480ea45874b3b8-lp_solve_5.5.tar.gz";
+    sha256 = "171816288f14215c69e730f7a4f1c325739873e21f946ff83884b350574e6695";
+    md5 = "26b3e95ddf3d9c077c480ea45874b3b8";
+    md5name = "26b3e95ddf3d9c077c480ea45874b3b8-lp_solve_5.5.tar.gz";
+  }
+  {
+    name = "lxml-4.1.1.tgz";
+    url = "http://dev-www.libreoffice.org/src/lxml-4.1.1.tgz";
+    sha256 = "940caef1ec7c78e0c34b0f6b94fe42d0f2022915ffc78643d28538a5cfd0f40e";
+    md5 = "";
+    md5name = "940caef1ec7c78e0c34b0f6b94fe42d0f2022915ffc78643d28538a5cfd0f40e-lxml-4.1.1.tgz";
+  }
+  {
+    name = "mariadb_client-2.0.0-src.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/a233181e03d3c307668b4c722d881661-mariadb_client-2.0.0-src.tar.gz";
+    sha256 = "fd2f751dea049c1907735eb236aeace1d811d6a8218118b00bbaa9b84dc5cd60";
+    md5 = "a233181e03d3c307668b4c722d881661";
+    md5name = "a233181e03d3c307668b4c722d881661-mariadb_client-2.0.0-src.tar.gz";
+  }
+  {
+    name = "mdds-1.5.0.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/mdds-1.5.0.tar.bz2";
+    sha256 = "144d6debd7be32726f332eac14ef9f17e2d3cf89cb3250eb31a7127e0789680d";
+    md5 = "";
+    md5name = "144d6debd7be32726f332eac14ef9f17e2d3cf89cb3250eb31a7127e0789680d-mdds-1.5.0.tar.bz2";
+  }
+  {
+    name = "mDNSResponder-878.200.35.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/mDNSResponder-878.200.35.tar.gz";
+    sha256 = "e777b4d7dbf5eb1552cb80090ad1ede319067ab6e45e3990d68aabf6e8b3f5a0";
+    md5 = "";
+    md5name = "e777b4d7dbf5eb1552cb80090ad1ede319067ab6e45e3990d68aabf6e8b3f5a0-mDNSResponder-878.200.35.tar.gz";
+  }
+  {
+    name = "libmspub-0.1.4.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libmspub-0.1.4.tar.xz";
+    sha256 = "ef36c1a1aabb2ba3b0bedaaafe717bf4480be2ba8de6f3894be5fd3702b013ba";
+    md5 = "";
+    md5name = "ef36c1a1aabb2ba3b0bedaaafe717bf4480be2ba8de6f3894be5fd3702b013ba-libmspub-0.1.4.tar.xz";
+  }
+  {
+    name = "libmwaw-0.3.15.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libmwaw-0.3.15.tar.xz";
+    sha256 = "0440bb09f05e3419423d8dfa36ee847056ebfd837f9cbc091fdb5b057daab0b1";
+    md5 = "";
+    md5name = "0440bb09f05e3419423d8dfa36ee847056ebfd837f9cbc091fdb5b057daab0b1-libmwaw-0.3.15.tar.xz";
+  }
+  {
+    name = "mythes-1.2.4.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/a8c2c5b8f09e7ede322d5c602ff6a4b6-mythes-1.2.4.tar.gz";
+    sha256 = "1e81f395d8c851c3e4e75b568e20fa2fa549354e75ab397f9de4b0e0790a305f";
+    md5 = "a8c2c5b8f09e7ede322d5c602ff6a4b6";
+    md5name = "a8c2c5b8f09e7ede322d5c602ff6a4b6-mythes-1.2.4.tar.gz";
+  }
+  {
+    name = "neon-0.30.2.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/neon-0.30.2.tar.gz";
+    sha256 = "db0bd8cdec329b48f53a6f00199c92d5ba40b0f015b153718d1b15d3d967fbca";
+    md5 = "";
+    md5name = "db0bd8cdec329b48f53a6f00199c92d5ba40b0f015b153718d1b15d3d967fbca-neon-0.30.2.tar.gz";
+  }
+  {
+    name = "nss-3.47.1-with-nspr-4.23.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/nss-3.47.1-with-nspr-4.23.tar.gz";
+    sha256 = "07d4276168f59bb3038c7826dabb5fbfbab8336ddf65e4e6e43bce89ada78c64";
+    md5 = "";
+    md5name = "07d4276168f59bb3038c7826dabb5fbfbab8336ddf65e4e6e43bce89ada78c64-nss-3.47.1-with-nspr-4.23.tar.gz";
+  }
+  {
+    name = "libodfgen-0.1.6.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/libodfgen-0.1.6.tar.bz2";
+    sha256 = "2c7b21892f84a4c67546f84611eccdad6259875c971e98ddb027da66ea0ac9c2";
+    md5 = "";
+    md5name = "2c7b21892f84a4c67546f84611eccdad6259875c971e98ddb027da66ea0ac9c2-libodfgen-0.1.6.tar.bz2";
+  }
+  {
+    name = "odfvalidator-1.2.0-incubating-SNAPSHOT-jar-with-dependencies-971c54fd38a968f5860014b44301872706f9e540.jar";
+    url = "http://dev-www.libreoffice.org/src/../extern/odfvalidator-1.2.0-incubating-SNAPSHOT-jar-with-dependencies-971c54fd38a968f5860014b44301872706f9e540.jar";
+    sha256 = "984f2a479df79e27e7b01a5815ac53ae64e07746b882262d8a64566494515504";
+    md5 = "";
+    md5name = "984f2a479df79e27e7b01a5815ac53ae64e07746b882262d8a64566494515504-odfvalidator-1.2.0-incubating-SNAPSHOT-jar-with-dependencies-971c54fd38a968f5860014b44301872706f9e540.jar";
+  }
+  {
+    name = "officeotron-0.7.4-master.jar";
+    url = "http://dev-www.libreoffice.org/src/../extern/8249374c274932a21846fa7629c2aa9b-officeotron-0.7.4-master.jar";
+    sha256 = "f2443f27561af52324eee03a1892d9f569adc8db9e7bca55614898bc2a13a770";
+    md5 = "8249374c274932a21846fa7629c2aa9b";
+    md5name = "8249374c274932a21846fa7629c2aa9b-officeotron-0.7.4-master.jar";
+  }
+  {
+    name = "openldap-2.4.45.tgz";
+    url = "http://dev-www.libreoffice.org/src/openldap-2.4.45.tgz";
+    sha256 = "cdd6cffdebcd95161a73305ec13fc7a78e9707b46ca9f84fb897cd5626df3824";
+    md5 = "";
+    md5name = "cdd6cffdebcd95161a73305ec13fc7a78e9707b46ca9f84fb897cd5626df3824-openldap-2.4.45.tgz";
+  }
+  {
+    name = "openssl-1.0.2t.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/openssl-1.0.2t.tar.gz";
+    sha256 = "14cb464efe7ac6b54799b34456bd69558a749a4931ecfd9cf9f71d7881cac7bc";
+    md5 = "";
+    md5name = "14cb464efe7ac6b54799b34456bd69558a749a4931ecfd9cf9f71d7881cac7bc-openssl-1.0.2t.tar.gz";
+  }
+  {
+    name = "liborcus-0.15.3.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/liborcus-0.15.3.tar.gz";
+    sha256 = "0dd26f3f2e611c51df9ee02d6dbf08887989eaa417b73f6877cd0d94df795fc2";
+    md5 = "";
+    md5name = "0dd26f3f2e611c51df9ee02d6dbf08887989eaa417b73f6877cd0d94df795fc2-liborcus-0.15.3.tar.gz";
+  }
+  {
+    name = "owncloud-android-library-0.9.4-no-binary-deps.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/owncloud-android-library-0.9.4-no-binary-deps.tar.gz";
+    sha256 = "b18b3e3ef7fae6a79b62f2bb43cc47a5346b6330f6a383dc4be34439aca5e9fb";
+    md5 = "";
+    md5name = "b18b3e3ef7fae6a79b62f2bb43cc47a5346b6330f6a383dc4be34439aca5e9fb-owncloud-android-library-0.9.4-no-binary-deps.tar.gz";
+  }
+  {
+    name = "libpagemaker-0.0.4.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libpagemaker-0.0.4.tar.xz";
+    sha256 = "66adacd705a7d19895e08eac46d1e851332adf2e736c566bef1164e7a442519d";
+    md5 = "";
+    md5name = "66adacd705a7d19895e08eac46d1e851332adf2e736c566bef1164e7a442519d-libpagemaker-0.0.4.tar.xz";
+  }
+  {
+    name = "pdfium-3963.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/pdfium-3963.tar.bz2";
+    sha256 = "80d4d6bd8faec226936fcde5521c6e92c0c645126ac3ae72dd2c160ca1749895";
+    md5 = "";
+    md5name = "80d4d6bd8faec226936fcde5521c6e92c0c645126ac3ae72dd2c160ca1749895-pdfium-3963.tar.bz2";
+  }
+  {
+    name = "pixman-0.34.0.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/e80ebae4da01e77f68744319f01d52a3-pixman-0.34.0.tar.gz";
+    sha256 = "21b6b249b51c6800dc9553b65106e1e37d0e25df942c90531d4c3997aa20a88e";
+    md5 = "e80ebae4da01e77f68744319f01d52a3";
+    md5name = "e80ebae4da01e77f68744319f01d52a3-pixman-0.34.0.tar.gz";
+  }
+  {
+    name = "libpng-1.6.37.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libpng-1.6.37.tar.xz";
+    sha256 = "505e70834d35383537b6491e7ae8641f1a4bed1876dbfe361201fc80868d88ca";
+    md5 = "";
+    md5name = "505e70834d35383537b6491e7ae8641f1a4bed1876dbfe361201fc80868d88ca-libpng-1.6.37.tar.xz";
+  }
+  {
+    name = "poppler-0.82.0.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/poppler-0.82.0.tar.xz";
+    sha256 = "234f8e573ea57fb6a008e7c1e56bfae1af5d1adf0e65f47555e1ae103874e4df";
+    md5 = "";
+    md5name = "234f8e573ea57fb6a008e7c1e56bfae1af5d1adf0e65f47555e1ae103874e4df-poppler-0.82.0.tar.xz";
+  }
+  {
+    name = "postgresql-9.2.24.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/postgresql-9.2.24.tar.bz2";
+    sha256 = "a754c02f7051c2f21e52f8669a421b50485afcde9a581674d6106326b189d126";
+    md5 = "";
+    md5name = "a754c02f7051c2f21e52f8669a421b50485afcde9a581674d6106326b189d126-postgresql-9.2.24.tar.bz2";
+  }
+  {
+    name = "Python-3.7.7.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/Python-3.7.7.tar.xz";
+    sha256 = "06a0a9f1bf0d8cd1e4121194d666c4e28ddae4dd54346de6c343206599f02136";
+    md5 = "";
+    md5name = "06a0a9f1bf0d8cd1e4121194d666c4e28ddae4dd54346de6c343206599f02136-Python-3.7.7.tar.xz";
+  }
+  {
+    name = "QR-Code-generator-1.4.0.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/QR-Code-generator-1.4.0.tar.gz";
+    sha256 = "fcdf9fd69fde07ae4dca2351d84271a9de8093002f733b77c70f52f1630f6e4a";
+    md5 = "";
+    md5name = "fcdf9fd69fde07ae4dca2351d84271a9de8093002f733b77c70f52f1630f6e4a-QR-Code-generator-1.4.0.tar.gz";
+  }
+  {
+    name = "libqxp-0.0.2.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libqxp-0.0.2.tar.xz";
+    sha256 = "e137b6b110120a52c98edd02ebdc4095ee08d0d5295a94316a981750095a945c";
+    md5 = "";
+    md5name = "e137b6b110120a52c98edd02ebdc4095ee08d0d5295a94316a981750095a945c-libqxp-0.0.2.tar.xz";
+  }
+  {
+    name = "raptor2-2.0.15.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/a39f6c07ddb20d7dd2ff1f95fa21e2cd-raptor2-2.0.15.tar.gz";
+    sha256 = "ada7f0ba54787b33485d090d3d2680533520cd4426d2f7fb4782dd4a6a1480ed";
+    md5 = "a39f6c07ddb20d7dd2ff1f95fa21e2cd";
+    md5name = "a39f6c07ddb20d7dd2ff1f95fa21e2cd-raptor2-2.0.15.tar.gz";
+  }
+  {
+    name = "rasqal-0.9.33.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/1f5def51ca0026cd192958ef07228b52-rasqal-0.9.33.tar.gz";
+    sha256 = "6924c9ac6570bd241a9669f83b467c728a322470bf34f4b2da4f69492ccfd97c";
+    md5 = "1f5def51ca0026cd192958ef07228b52";
+    md5name = "1f5def51ca0026cd192958ef07228b52-rasqal-0.9.33.tar.gz";
+  }
+  {
+    name = "redland-1.0.17.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/e5be03eda13ef68aabab6e42aa67715e-redland-1.0.17.tar.gz";
+    sha256 = "de1847f7b59021c16bdc72abb4d8e2d9187cd6124d69156f3326dd34ee043681";
+    md5 = "e5be03eda13ef68aabab6e42aa67715e";
+    md5name = "e5be03eda13ef68aabab6e42aa67715e-redland-1.0.17.tar.gz";
+  }
+  {
+    name = "librevenge-0.0.4.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/librevenge-0.0.4.tar.bz2";
+    sha256 = "c51601cd08320b75702812c64aae0653409164da7825fd0f451ac2c5dbe77cbf";
+    md5 = "";
+    md5name = "c51601cd08320b75702812c64aae0653409164da7825fd0f451ac2c5dbe77cbf-librevenge-0.0.4.tar.bz2";
+  }
+  {
+    name = "rhino1_5R5.zip";
+    url = "http://dev-www.libreoffice.org/src/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip";
+    sha256 = "1fb458d6aab06932693cc8a9b6e4e70944ee1ff052fa63606e3131df34e21753";
+    md5 = "798b2ffdc8bcfe7bca2cf92b62caf685";
+    md5name = "798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip";
+  }
+  {
+    name = "serf-1.2.1.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/serf-1.2.1.tar.bz2";
+    sha256 = "6988d394b62c3494635b6f0760bc3079f9a0cd380baf0f6b075af1eb9fa5e700";
+    md5 = "";
+    md5name = "6988d394b62c3494635b6f0760bc3079f9a0cd380baf0f6b075af1eb9fa5e700-serf-1.2.1.tar.bz2";
+  }
+  {
+    name = "libstaroffice-0.0.6.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libstaroffice-0.0.6.tar.xz";
+    sha256 = "6b00e1ed8194e6072be4441025d1b888e39365727ed5b23e0e8c92c4009d1ec4";
+    md5 = "";
+    md5name = "6b00e1ed8194e6072be4441025d1b888e39365727ed5b23e0e8c92c4009d1ec4-libstaroffice-0.0.6.tar.xz";
+  }
+  {
+    name = "swingExSrc.zip";
+    url = "http://dev-www.libreoffice.org/src/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip";
+    sha256 = "64585ac36a81291a58269ec5347e7e3e2e8596dbacb9221015c208191333c6e1";
+    md5 = "35c94d2df8893241173de1d16b6034c0";
+    md5name = "35c94d2df8893241173de1d16b6034c0-swingExSrc.zip";
+  }
+  {
+    name = "twaindsm_2.4.1.orig.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/twaindsm_2.4.1.orig.tar.gz";
+    sha256 = "82c818be771f242388457aa8c807e4b52aa84dc22b21c6c56184a6b4cbb085e6";
+    md5 = "";
+    md5name = "82c818be771f242388457aa8c807e4b52aa84dc22b21c6c56184a6b4cbb085e6-twaindsm_2.4.1.orig.tar.gz";
+  }
+  {
+    name = "ucpp-1.3.2.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/0168229624cfac409e766913506961a8-ucpp-1.3.2.tar.gz";
+    sha256 = "983941d31ee8d366085cadf28db75eb1f5cb03ba1e5853b98f12f7f51c63b776";
+    md5 = "0168229624cfac409e766913506961a8";
+    md5name = "0168229624cfac409e766913506961a8-ucpp-1.3.2.tar.gz";
+  }
+  {
+    name = "libvisio-0.1.7.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libvisio-0.1.7.tar.xz";
+    sha256 = "8faf8df870cb27b09a787a1959d6c646faa44d0d8ab151883df408b7166bea4c";
+    md5 = "";
+    md5name = "8faf8df870cb27b09a787a1959d6c646faa44d0d8ab151883df408b7166bea4c-libvisio-0.1.7.tar.xz";
+  }
+  {
+    name = "libwpd-0.10.3.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libwpd-0.10.3.tar.xz";
+    sha256 = "2465b0b662fdc5d4e3bebcdc9a79027713fb629ca2bff04a3c9251fdec42dd09";
+    md5 = "";
+    md5name = "2465b0b662fdc5d4e3bebcdc9a79027713fb629ca2bff04a3c9251fdec42dd09-libwpd-0.10.3.tar.xz";
+  }
+  {
+    name = "libwpg-0.3.3.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libwpg-0.3.3.tar.xz";
+    sha256 = "99b3f7f8832385748582ab8130fbb9e5607bd5179bebf9751ac1d51a53099d1c";
+    md5 = "";
+    md5name = "99b3f7f8832385748582ab8130fbb9e5607bd5179bebf9751ac1d51a53099d1c-libwpg-0.3.3.tar.xz";
+  }
+  {
+    name = "libwps-0.4.10.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libwps-0.4.10.tar.xz";
+    sha256 = "1421e034286a9f96d3168a1c54ea570ee7aa008ca07b89de005ad5ce49fb29ca";
+    md5 = "";
+    md5name = "1421e034286a9f96d3168a1c54ea570ee7aa008ca07b89de005ad5ce49fb29ca-libwps-0.4.10.tar.xz";
+  }
+  {
+    name = "xsltml_2.1.2.zip";
+    url = "http://dev-www.libreoffice.org/src/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip";
+    sha256 = "75823776fb51a9c526af904f1503a7afaaab900fba83eda64f8a41073724c870";
+    md5 = "a7983f859eafb2677d7ff386a023bc40";
+    md5name = "a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip";
+  }
+  {
+    name = "zlib-1.2.11.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/zlib-1.2.11.tar.xz";
+    sha256 = "4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066";
+    md5 = "";
+    md5name = "4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066-zlib-1.2.11.tar.xz";
+  }
+  {
+    name = "libzmf-0.0.2.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libzmf-0.0.2.tar.xz";
+    sha256 = "27051a30cb057fdb5d5de65a1f165c7153dc76e27fe62251cbb86639eb2caf22";
+    md5 = "";
+    md5name = "27051a30cb057fdb5d5de65a1f165c7153dc76e27fe62251cbb86639eb2caf22-libzmf-0.0.2.tar.xz";
+  }
+]
diff --git a/nixpkgs/pkgs/applications/office/libreoffice/src-fresh/override.nix b/nixpkgs/pkgs/applications/office/libreoffice/src-fresh/override.nix
new file mode 100644
index 000000000000..60e08735d2e6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/libreoffice/src-fresh/override.nix
@@ -0,0 +1,10 @@
+{ stdenv, kdeIntegration, ... }:
+attrs:
+{
+  postConfigure = attrs.postConfigure + ''
+    sed -e '/CPPUNIT_TEST(Import_Export_Import);/d' -i './sw/qa/inc/swmodeltestbase.hxx'
+  '';
+  configureFlags = attrs.configureFlags ++ [
+    (stdenv.lib.enableFeature kdeIntegration "kf5")
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/office/libreoffice/src-fresh/primary.nix b/nixpkgs/pkgs/applications/office/libreoffice/src-fresh/primary.nix
new file mode 100644
index 000000000000..5b62b0df9544
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/libreoffice/src-fresh/primary.nix
@@ -0,0 +1,36 @@
+{ fetchurl }:
+
+rec {
+  fetchSrc = {name, sha256}: fetchurl {
+    url = "https://download.documentfoundation.org/libreoffice/src/${subdir}/libreoffice-${name}-${version}.tar.xz";
+    inherit sha256;
+  };
+
+  major = "6";
+  minor = "4";
+  patch = "3";
+  tweak = "2";
+
+  subdir = "${major}.${minor}.${patch}";
+
+  version = "${subdir}${if tweak == "" then "" else "."}${tweak}";
+
+  src = fetchurl {
+    url = "https://download.documentfoundation.org/libreoffice/src/${subdir}/libreoffice-${version}.tar.xz";
+    sha256 = "1cmbrhha7mlflnlbpla8fix07cxcgkdb7krnrgs1bylf31y5855w";
+  };
+
+  # FIXME rename
+  translations = fetchSrc {
+    name = "translations";
+    sha256 = "06z9hz4m3kdcljjc6y5s18001axjibj9xiyakdndkl9pmnnhn9h3";
+  };
+
+  # the "dictionaries" archive is not used for LO build because we already build hunspellDicts packages from
+  # it and LibreOffice can use these by pointing DICPATH environment variable at the hunspell directory
+
+  help = fetchSrc {
+    name = "help";
+    sha256 = "0mpgrwg8z1q38j03l6m1sdpcplyjd5nz1nqaa13vfkryj2lflw45";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/libreoffice/src-still/download.nix b/nixpkgs/pkgs/applications/office/libreoffice/src-still/download.nix
new file mode 100644
index 000000000000..78482326be23
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/libreoffice/src-still/download.nix
@@ -0,0 +1,856 @@
+[
+  {
+    name = "libabw-0.1.3.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libabw-0.1.3.tar.xz";
+    sha256 = "e763a9dc21c3d2667402d66e202e3f8ef4db51b34b79ef41f56cacb86dcd6eed";
+    md5 = "";
+    md5name = "e763a9dc21c3d2667402d66e202e3f8ef4db51b34b79ef41f56cacb86dcd6eed-libabw-0.1.3.tar.xz";
+  }
+  {
+    name = "commons-logging-1.2-src.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/commons-logging-1.2-src.tar.gz";
+    sha256 = "49665da5a60d033e6dff40fe0a7f9173e886ae859ce6096c1afe34c48b677c81";
+    md5 = "";
+    md5name = "49665da5a60d033e6dff40fe0a7f9173e886ae859ce6096c1afe34c48b677c81-commons-logging-1.2-src.tar.gz";
+  }
+  {
+    name = "apr-1.5.2.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/apr-1.5.2.tar.gz";
+    sha256 = "1af06e1720a58851d90694a984af18355b65bb0d047be03ec7d659c746d6dbdb";
+    md5 = "";
+    md5name = "1af06e1720a58851d90694a984af18355b65bb0d047be03ec7d659c746d6dbdb-apr-1.5.2.tar.gz";
+  }
+  {
+    name = "apr-util-1.5.4.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/apr-util-1.5.4.tar.gz";
+    sha256 = "976a12a59bc286d634a21d7be0841cc74289ea9077aa1af46be19d1a6e844c19";
+    md5 = "";
+    md5name = "976a12a59bc286d634a21d7be0841cc74289ea9077aa1af46be19d1a6e844c19-apr-util-1.5.4.tar.gz";
+  }
+  {
+    name = "boost_1_69_0.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/boost_1_69_0.tar.bz2";
+    sha256 = "8f32d4617390d1c2d16f26a27ab60d97807b35440d45891fa340fc2648b04406";
+    md5 = "";
+    md5name = "8f32d4617390d1c2d16f26a27ab60d97807b35440d45891fa340fc2648b04406-boost_1_69_0.tar.bz2";
+  }
+  {
+    name = "breakpad.zip";
+    url = "http://dev-www.libreoffice.org/src/breakpad.zip";
+    sha256 = "7060149be16a8789b0ccf596bdeaf63115f03f520acb508f72a14686fb311cb9";
+    md5 = "";
+    md5name = "7060149be16a8789b0ccf596bdeaf63115f03f520acb508f72a14686fb311cb9-breakpad.zip";
+  }
+  {
+    name = "bsh-2.0b6-src.zip";
+    url = "http://dev-www.libreoffice.org/src/beeca87be45ec87d241ddd0e1bad80c1-bsh-2.0b6-src.zip";
+    sha256 = "9e93c73e23aff644b17dfff656444474c14150e7f3b38b19635e622235e01c96";
+    md5 = "beeca87be45ec87d241ddd0e1bad80c1";
+    md5name = "beeca87be45ec87d241ddd0e1bad80c1-bsh-2.0b6-src.zip";
+  }
+  {
+    name = "bzip2-1.0.6.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/00b516f4704d4a7cb50a1d97e6e8e15b-bzip2-1.0.6.tar.gz";
+    sha256 = "a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd";
+    md5 = "00b516f4704d4a7cb50a1d97e6e8e15b";
+    md5name = "00b516f4704d4a7cb50a1d97e6e8e15b-bzip2-1.0.6.tar.gz";
+  }
+  {
+    name = "cairo-1.16.0.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/cairo-1.16.0.tar.xz";
+    sha256 = "5e7b29b3f113ef870d1e3ecf8adf21f923396401604bda16d44be45e66052331";
+    md5 = "";
+    md5name = "5e7b29b3f113ef870d1e3ecf8adf21f923396401604bda16d44be45e66052331-cairo-1.16.0.tar.xz";
+  }
+  {
+    name = "libcdr-0.1.5.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libcdr-0.1.5.tar.xz";
+    sha256 = "6ace5c499a8be34ad871e825442ce388614ae2d8675c4381756a7319429e3a48";
+    md5 = "";
+    md5name = "6ace5c499a8be34ad871e825442ce388614ae2d8675c4381756a7319429e3a48-libcdr-0.1.5.tar.xz";
+  }
+  {
+    name = "clucene-core-2.3.3.4.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/48d647fbd8ef8889e5a7f422c1bfda94-clucene-core-2.3.3.4.tar.gz";
+    sha256 = "ddfdc433dd8ad31b5c5819cc4404a8d2127472a3b720d3e744e8c51d79732eab";
+    md5 = "48d647fbd8ef8889e5a7f422c1bfda94";
+    md5name = "48d647fbd8ef8889e5a7f422c1bfda94-clucene-core-2.3.3.4.tar.gz";
+  }
+  {
+    name = "libcmis-0.5.2.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libcmis-0.5.2.tar.xz";
+    sha256 = "d7b18d9602190e10d437f8a964a32e983afd57e2db316a07d87477a79f5000a2";
+    md5 = "";
+    md5name = "d7b18d9602190e10d437f8a964a32e983afd57e2db316a07d87477a79f5000a2-libcmis-0.5.2.tar.xz";
+  }
+  {
+    name = "CoinMP-1.7.6.tgz";
+    url = "http://dev-www.libreoffice.org/src/CoinMP-1.7.6.tgz";
+    sha256 = "86c798780b9e1f5921fe4efe651a93cb420623b45aa1fdff57af8c37f116113f";
+    md5 = "";
+    md5name = "86c798780b9e1f5921fe4efe651a93cb420623b45aa1fdff57af8c37f116113f-CoinMP-1.7.6.tgz";
+  }
+  {
+    name = "cppunit-1.14.0.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/cppunit-1.14.0.tar.gz";
+    sha256 = "3d569869d27b48860210c758c4f313082103a5e58219a7669b52bfd29d674780";
+    md5 = "";
+    md5name = "3d569869d27b48860210c758c4f313082103a5e58219a7669b52bfd29d674780-cppunit-1.14.0.tar.gz";
+  }
+  {
+    name = "converttexttonumber-1-5-0.oxt";
+    url = "http://dev-www.libreoffice.org/src/1f467e5bb703f12cbbb09d5cf67ecf4a-converttexttonumber-1-5-0.oxt";
+    sha256 = "71b238efd2734be9800af07566daea8d6685aeed28db5eb5fa0e6453f4d85de3";
+    md5 = "1f467e5bb703f12cbbb09d5cf67ecf4a";
+    md5name = "1f467e5bb703f12cbbb09d5cf67ecf4a-converttexttonumber-1-5-0.oxt";
+  }
+  {
+    name = "curl-7.65.0.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/curl-7.65.0.tar.xz";
+    sha256 = "7766d263929404f693905b5e5222aa0f2bdf8c66ab4b8758f0c0820a42b966cd";
+    md5 = "";
+    md5name = "7766d263929404f693905b5e5222aa0f2bdf8c66ab4b8758f0c0820a42b966cd-curl-7.65.0.tar.xz";
+  }
+  {
+    name = "libe-book-0.1.3.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libe-book-0.1.3.tar.xz";
+    sha256 = "7e8d8ff34f27831aca3bc6f9cc532c2f90d2057c778963b884ff3d1e34dfe1f9";
+    md5 = "";
+    md5name = "7e8d8ff34f27831aca3bc6f9cc532c2f90d2057c778963b884ff3d1e34dfe1f9-libe-book-0.1.3.tar.xz";
+  }
+  {
+    name = "libepoxy-1.5.3.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libepoxy-1.5.3.tar.xz";
+    sha256 = "002958c5528321edd53440235d3c44e71b5b1e09b9177e8daf677450b6c4433d";
+    md5 = "";
+    md5name = "002958c5528321edd53440235d3c44e71b5b1e09b9177e8daf677450b6c4433d-libepoxy-1.5.3.tar.xz";
+  }
+  {
+    name = "epm-3.7.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/3ade8cfe7e59ca8e65052644fed9fca4-epm-3.7.tar.gz";
+    sha256 = "b3fc4c5445de6c9a801504a3ea3efb2d4ea9d5a622c9427e716736e7713ddb91";
+    md5 = "3ade8cfe7e59ca8e65052644fed9fca4";
+    md5name = "3ade8cfe7e59ca8e65052644fed9fca4-epm-3.7.tar.gz";
+  }
+  {
+    name = "libepubgen-0.1.1.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libepubgen-0.1.1.tar.xz";
+    sha256 = "03e084b994cbeffc8c3dd13303b2cb805f44d8f2c3b79f7690d7e3fc7f6215ad";
+    md5 = "";
+    md5name = "03e084b994cbeffc8c3dd13303b2cb805f44d8f2c3b79f7690d7e3fc7f6215ad-libepubgen-0.1.1.tar.xz";
+  }
+  {
+    name = "libetonyek-0.1.9.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libetonyek-0.1.9.tar.xz";
+    sha256 = "e61677e8799ce6e55b25afc11aa5339113f6a49cff031f336e32fa58635b1a4a";
+    md5 = "";
+    md5name = "e61677e8799ce6e55b25afc11aa5339113f6a49cff031f336e32fa58635b1a4a-libetonyek-0.1.9.tar.xz";
+  }
+  {
+    name = "expat-2.2.8.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/expat-2.2.8.tar.bz2";
+    sha256 = "9a130948b05a82da34e4171d5f5ae5d321d9630277af02c8fa51e431f6475102";
+    md5 = "";
+    md5name = "9a130948b05a82da34e4171d5f5ae5d321d9630277af02c8fa51e431f6475102-expat-2.2.8.tar.bz2";
+  }
+  {
+    name = "Firebird-3.0.0.32483-0.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/Firebird-3.0.0.32483-0.tar.bz2";
+    sha256 = "6994be3555e23226630c587444be19d309b25b0fcf1f87df3b4e3f88943e5860";
+    md5 = "";
+    md5name = "6994be3555e23226630c587444be19d309b25b0fcf1f87df3b4e3f88943e5860-Firebird-3.0.0.32483-0.tar.bz2";
+  }
+  {
+    name = "fontconfig-2.12.6.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/fontconfig-2.12.6.tar.bz2";
+    sha256 = "cf0c30807d08f6a28ab46c61b8dbd55c97d2f292cf88f3a07d3384687f31f017";
+    md5 = "";
+    md5name = "cf0c30807d08f6a28ab46c61b8dbd55c97d2f292cf88f3a07d3384687f31f017-fontconfig-2.12.6.tar.bz2";
+  }
+  {
+    name = "crosextrafonts-20130214.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/368f114c078f94214a308a74c7e991bc-crosextrafonts-20130214.tar.gz";
+    sha256 = "c48d1c2fd613c9c06c959c34da7b8388059e2408d2bb19845dc3ed35f76e4d09";
+    md5 = "368f114c078f94214a308a74c7e991bc";
+    md5name = "368f114c078f94214a308a74c7e991bc-crosextrafonts-20130214.tar.gz";
+  }
+  {
+    name = "crosextrafonts-carlito-20130920.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/c74b7223abe75949b4af367942d96c7a-crosextrafonts-carlito-20130920.tar.gz";
+    sha256 = "4bd12b6cbc321c1cf16da76e2c585c925ce956a08067ae6f6c64eff6ccfdaf5a";
+    md5 = "c74b7223abe75949b4af367942d96c7a";
+    md5name = "c74b7223abe75949b4af367942d96c7a-crosextrafonts-carlito-20130920.tar.gz";
+  }
+  {
+    name = "dejavu-fonts-ttf-2.37.zip";
+    url = "http://dev-www.libreoffice.org/src/33e1e61fab06a547851ed308b4ffef42-dejavu-fonts-ttf-2.37.zip";
+    sha256 = "7576310b219e04159d35ff61dd4a4ec4cdba4f35c00e002a136f00e96a908b0a";
+    md5 = "33e1e61fab06a547851ed308b4ffef42";
+    md5name = "33e1e61fab06a547851ed308b4ffef42-dejavu-fonts-ttf-2.37.zip";
+  }
+  {
+    name = "GentiumBasic_1102.zip";
+    url = "http://dev-www.libreoffice.org/src/1725634df4bb3dcb1b2c91a6175f8789-GentiumBasic_1102.zip";
+    sha256 = "2f1a2c5491d7305dffd3520c6375d2f3e14931ee35c6d8ae1e8f098bf1a7b3cc";
+    md5 = "1725634df4bb3dcb1b2c91a6175f8789";
+    md5name = "1725634df4bb3dcb1b2c91a6175f8789-GentiumBasic_1102.zip";
+  }
+  {
+    name = "liberation-narrow-fonts-ttf-1.07.6.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/liberation-narrow-fonts-ttf-1.07.6.tar.gz";
+    sha256 = "8879d89b5ff7b506c9fc28efc31a5c0b954bbe9333e66e5283d27d20a8519ea3";
+    md5 = "";
+    md5name = "8879d89b5ff7b506c9fc28efc31a5c0b954bbe9333e66e5283d27d20a8519ea3-liberation-narrow-fonts-ttf-1.07.6.tar.gz";
+  }
+  {
+    name = "liberation-fonts-ttf-2.00.4.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/liberation-fonts-ttf-2.00.4.tar.gz";
+    sha256 = "c40e95fc5e0ecb73d4be565ae2afc1114e2bc7dc5253e00ee92d8fd6cc4adf45";
+    md5 = "";
+    md5name = "c40e95fc5e0ecb73d4be565ae2afc1114e2bc7dc5253e00ee92d8fd6cc4adf45-liberation-fonts-ttf-2.00.4.tar.gz";
+  }
+  {
+    name = "LinLibertineG-20120116.zip";
+    url = "http://dev-www.libreoffice.org/src/e7a384790b13c29113e22e596ade9687-LinLibertineG-20120116.zip";
+    sha256 = "54adcb2bc8cac0927a647fbd9362f45eff48130ce6e2379dc3867643019e08c5";
+    md5 = "e7a384790b13c29113e22e596ade9687";
+    md5name = "e7a384790b13c29113e22e596ade9687-LinLibertineG-20120116.zip";
+  }
+  {
+    name = "source-code-pro-2.030R-ro-1.050R-it.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/907d6e99f241876695c19ff3db0b8923-source-code-pro-2.030R-ro-1.050R-it.tar.gz";
+    sha256 = "09466dce87653333f189acd8358c60c6736dcd95f042dee0b644bdcf65b6ae2f";
+    md5 = "907d6e99f241876695c19ff3db0b8923";
+    md5name = "907d6e99f241876695c19ff3db0b8923-source-code-pro-2.030R-ro-1.050R-it.tar.gz";
+  }
+  {
+    name = "source-sans-pro-2.010R-ro-1.065R-it.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/edc4d741888bc0d38e32dbaa17149596-source-sans-pro-2.010R-ro-1.065R-it.tar.gz";
+    sha256 = "e7bc9a1fec787a529e49f5a26b93dcdcf41506449dfc70f92cdef6d17eb6fb61";
+    md5 = "edc4d741888bc0d38e32dbaa17149596";
+    md5name = "edc4d741888bc0d38e32dbaa17149596-source-sans-pro-2.010R-ro-1.065R-it.tar.gz";
+  }
+  {
+    name = "source-serif-pro-3.000R.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/source-serif-pro-3.000R.tar.gz";
+    sha256 = "826a2b784d5cdb4c2bbc7830eb62871528360a61a52689c102a101623f1928e3";
+    md5 = "";
+    md5name = "826a2b784d5cdb4c2bbc7830eb62871528360a61a52689c102a101623f1928e3-source-serif-pro-3.000R.tar.gz";
+  }
+  {
+    name = "EmojiOneColor-SVGinOT-1.3.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/EmojiOneColor-SVGinOT-1.3.tar.gz";
+    sha256 = "d1a08f7c10589f22740231017694af0a7a270760c8dec33d8d1c038e2be0a0c7";
+    md5 = "";
+    md5name = "d1a08f7c10589f22740231017694af0a7a270760c8dec33d8d1c038e2be0a0c7-EmojiOneColor-SVGinOT-1.3.tar.gz";
+  }
+  {
+    name = "noto-fonts-20171024.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/noto-fonts-20171024.tar.gz";
+    sha256 = "29acc15a4c4d6b51201ba5d60f303dfbc2e5acbfdb70413c9ae1ed34fa259994";
+    md5 = "";
+    md5name = "29acc15a4c4d6b51201ba5d60f303dfbc2e5acbfdb70413c9ae1ed34fa259994-noto-fonts-20171024.tar.gz";
+  }
+  {
+    name = "culmus-0.131.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/culmus-0.131.tar.gz";
+    sha256 = "dcf112cfcccb76328dcfc095f4d7c7f4d2f7e48d0eed5e78b100d1d77ce2ed1b";
+    md5 = "";
+    md5name = "dcf112cfcccb76328dcfc095f4d7c7f4d2f7e48d0eed5e78b100d1d77ce2ed1b-culmus-0.131.tar.gz";
+  }
+  {
+    name = "libre-hebrew-1.0.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/libre-hebrew-1.0.tar.gz";
+    sha256 = "f596257c1db706ce35795b18d7f66a4db99d427725f20e9384914b534142579a";
+    md5 = "";
+    md5name = "f596257c1db706ce35795b18d7f66a4db99d427725f20e9384914b534142579a-libre-hebrew-1.0.tar.gz";
+  }
+  {
+    name = "alef-1.001.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/alef-1.001.tar.gz";
+    sha256 = "b98b67602a2c8880a1770f0b9e37c190f29a7e2ade5616784f0b89fbdb75bf52";
+    md5 = "";
+    md5name = "b98b67602a2c8880a1770f0b9e37c190f29a7e2ade5616784f0b89fbdb75bf52-alef-1.001.tar.gz";
+  }
+  {
+    name = "Amiri-0.111.zip";
+    url = "http://dev-www.libreoffice.org/src/Amiri-0.111.zip";
+    sha256 = "1fbfccced6348b5db2c1c21d5b319cd488e14d055702fa817a0f6cb83d882166";
+    md5 = "";
+    md5name = "1fbfccced6348b5db2c1c21d5b319cd488e14d055702fa817a0f6cb83d882166-Amiri-0.111.zip";
+  }
+  {
+    name = "ttf-kacst_2.01+mry.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/ttf-kacst_2.01+mry.tar.gz";
+    sha256 = "dca00f5e655f2f217a766faa73a81f542c5c204aa3a47017c3c2be0b31d00a56";
+    md5 = "";
+    md5name = "dca00f5e655f2f217a766faa73a81f542c5c204aa3a47017c3c2be0b31d00a56-ttf-kacst_2.01+mry.tar.gz";
+  }
+  {
+    name = "ReemKufi-0.7.zip";
+    url = "http://dev-www.libreoffice.org/src/ReemKufi-0.7.zip";
+    sha256 = "f60c6508d209ce4236d2d7324256c2ffddd480be7e3d6023770b93dc391a605f";
+    md5 = "";
+    md5name = "f60c6508d209ce4236d2d7324256c2ffddd480be7e3d6023770b93dc391a605f-ReemKufi-0.7.zip";
+  }
+  {
+    name = "Scheherazade-2.100.zip";
+    url = "http://dev-www.libreoffice.org/src/Scheherazade-2.100.zip";
+    sha256 = "251c8817ceb87d9b661ce1d5b49e732a0116add10abc046be4b8ba5196e149b5";
+    md5 = "";
+    md5name = "251c8817ceb87d9b661ce1d5b49e732a0116add10abc046be4b8ba5196e149b5-Scheherazade-2.100.zip";
+  }
+  {
+    name = "libfreehand-0.1.2.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libfreehand-0.1.2.tar.xz";
+    sha256 = "0e422d1564a6dbf22a9af598535425271e583514c0f7ba7d9091676420de34ac";
+    md5 = "";
+    md5name = "0e422d1564a6dbf22a9af598535425271e583514c0f7ba7d9091676420de34ac-libfreehand-0.1.2.tar.xz";
+  }
+  {
+    name = "freetype-2.9.1.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/freetype-2.9.1.tar.bz2";
+    sha256 = "db8d87ea720ea9d5edc5388fc7a0497bb11ba9fe972245e0f7f4c7e8b1e1e84d";
+    md5 = "";
+    md5name = "db8d87ea720ea9d5edc5388fc7a0497bb11ba9fe972245e0f7f4c7e8b1e1e84d-freetype-2.9.1.tar.bz2";
+  }
+  {
+    name = "glm-0.9.4.6-libreoffice.zip";
+    url = "http://dev-www.libreoffice.org/src/bae83fa5dc7f081768daace6e199adc3-glm-0.9.4.6-libreoffice.zip";
+    sha256 = "d0312c360efe04dd048b3311fe375ff36f1993b4c2e3cb58c81062990532904a";
+    md5 = "bae83fa5dc7f081768daace6e199adc3";
+    md5name = "bae83fa5dc7f081768daace6e199adc3-glm-0.9.4.6-libreoffice.zip";
+  }
+  {
+    name = "gpgme-1.9.0.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/gpgme-1.9.0.tar.bz2";
+    sha256 = "1b29fedb8bfad775e70eafac5b0590621683b2d9869db994568e6401f4034ceb";
+    md5 = "";
+    md5name = "1b29fedb8bfad775e70eafac5b0590621683b2d9869db994568e6401f4034ceb-gpgme-1.9.0.tar.bz2";
+  }
+  {
+    name = "graphite2-minimal-1.3.13.tgz";
+    url = "http://dev-www.libreoffice.org/src/graphite2-minimal-1.3.13.tgz";
+    sha256 = "d47d387161db7f7ebade1920aa7cbdc797e79772597d8b55e80b58d1071bcc36";
+    md5 = "";
+    md5name = "d47d387161db7f7ebade1920aa7cbdc797e79772597d8b55e80b58d1071bcc36-graphite2-minimal-1.3.13.tgz";
+  }
+  {
+    name = "harfbuzz-2.3.1.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/harfbuzz-2.3.1.tar.bz2";
+    sha256 = "f205699d5b91374008d6f8e36c59e419ae2d9a7bb8c5d9f34041b9a5abcae468";
+    md5 = "";
+    md5name = "f205699d5b91374008d6f8e36c59e419ae2d9a7bb8c5d9f34041b9a5abcae468-harfbuzz-2.3.1.tar.bz2";
+  }
+  {
+    name = "hsqldb_1_8_0.zip";
+    url = "http://dev-www.libreoffice.org/src/17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip";
+    sha256 = "d30b13f4ba2e3b6a2d4f020c0dee0a9fb9fc6fbcc2d561f36b78da4bf3802370";
+    md5 = "17410483b5b5f267aa18b7e00b65e6e0";
+    md5name = "17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip";
+  }
+  {
+    name = "hunspell-1.7.0.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/hunspell-1.7.0.tar.gz";
+    sha256 = "57be4e03ae9dd62c3471f667a0d81a14513e314d4d92081292b90435944ff951";
+    md5 = "";
+    md5name = "57be4e03ae9dd62c3471f667a0d81a14513e314d4d92081292b90435944ff951-hunspell-1.7.0.tar.gz";
+  }
+  {
+    name = "hyphen-2.8.8.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/5ade6ae2a99bc1e9e57031ca88d36dad-hyphen-2.8.8.tar.gz";
+    sha256 = "304636d4eccd81a14b6914d07b84c79ebb815288c76fe027b9ebff6ff24d5705";
+    md5 = "5ade6ae2a99bc1e9e57031ca88d36dad";
+    md5name = "5ade6ae2a99bc1e9e57031ca88d36dad-hyphen-2.8.8.tar.gz";
+  }
+  {
+    name = "icu4c-63_1-src.tgz";
+    url = "http://dev-www.libreoffice.org/src/icu4c-63_1-src.tgz";
+    sha256 = "05c490b69454fce5860b7e8e2821231674af0a11d7ef2febea9a32512998cb9d";
+    md5 = "";
+    md5name = "05c490b69454fce5860b7e8e2821231674af0a11d7ef2febea9a32512998cb9d-icu4c-63_1-src.tgz";
+  }
+  {
+    name = "icu4c-63_1-data.zip";
+    url = "http://dev-www.libreoffice.org/src/icu4c-63_1-data.zip";
+    sha256 = "9bef2bf28ec4fdc86a3bd88d7ac4d509fef6dfbe9c6798299e55b9d4343e960c";
+    md5 = "";
+    md5name = "9bef2bf28ec4fdc86a3bd88d7ac4d509fef6dfbe9c6798299e55b9d4343e960c-icu4c-63_1-data.zip";
+  }
+  {
+    name = "flow-engine-0.9.4.zip";
+    url = "http://dev-www.libreoffice.org/src/ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip";
+    sha256 = "233f66e8d25c5dd971716d4200203a612a407649686ef3b52075d04b4c9df0dd";
+    md5 = "ba2930200c9f019c2d93a8c88c651a0f";
+    md5name = "ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip";
+  }
+  {
+    name = "flute-1.1.6.zip";
+    url = "http://dev-www.libreoffice.org/src/d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip";
+    sha256 = "1b5b24f7bc543c0362b667692f78db8bab4ed6dafc6172f104d0bd3757d8a133";
+    md5 = "d8bd5eed178db6e2b18eeed243f85aa8";
+    md5name = "d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip";
+  }
+  {
+    name = "libbase-1.1.6.zip";
+    url = "http://dev-www.libreoffice.org/src/eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip";
+    sha256 = "75c80359c9ce343c20aab8a36a45cb3b9ee7c61cf92c13ae45399d854423a9ba";
+    md5 = "eeb2c7ddf0d302fba4bfc6e97eac9624";
+    md5name = "eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip";
+  }
+  {
+    name = "libfonts-1.1.6.zip";
+    url = "http://dev-www.libreoffice.org/src/3bdf40c0d199af31923e900d082ca2dd-libfonts-1.1.6.zip";
+    sha256 = "e0531091787c0f16c83965fdcbc49162c059d7f0c64669e7f119699321549743";
+    md5 = "3bdf40c0d199af31923e900d082ca2dd";
+    md5name = "3bdf40c0d199af31923e900d082ca2dd-libfonts-1.1.6.zip";
+  }
+  {
+    name = "libformula-1.1.7.zip";
+    url = "http://dev-www.libreoffice.org/src/3404ab6b1792ae5f16bbd603bd1e1d03-libformula-1.1.7.zip";
+    sha256 = "5826d1551bf599b85742545f6e01a0079b93c1b2c8434bf409eddb3a29e4726b";
+    md5 = "3404ab6b1792ae5f16bbd603bd1e1d03";
+    md5name = "3404ab6b1792ae5f16bbd603bd1e1d03-libformula-1.1.7.zip";
+  }
+  {
+    name = "liblayout-0.2.10.zip";
+    url = "http://dev-www.libreoffice.org/src/db60e4fde8dd6d6807523deb71ee34dc-liblayout-0.2.10.zip";
+    sha256 = "e1fb87f3f7b980d33414473279615c4644027e013012d156efa538bc2b031772";
+    md5 = "db60e4fde8dd6d6807523deb71ee34dc";
+    md5name = "db60e4fde8dd6d6807523deb71ee34dc-liblayout-0.2.10.zip";
+  }
+  {
+    name = "libloader-1.1.6.zip";
+    url = "http://dev-www.libreoffice.org/src/97b2d4dba862397f446b217e2b623e71-libloader-1.1.6.zip";
+    sha256 = "3d853b19b1d94a6efa69e7af90f7f2b09ecf302913bee3da796c15ecfebcfac8";
+    md5 = "97b2d4dba862397f446b217e2b623e71";
+    md5name = "97b2d4dba862397f446b217e2b623e71-libloader-1.1.6.zip";
+  }
+  {
+    name = "librepository-1.1.6.zip";
+    url = "http://dev-www.libreoffice.org/src/8ce2fcd72becf06c41f7201d15373ed9-librepository-1.1.6.zip";
+    sha256 = "abe2c57ac12ba45d83563b02e240fa95d973376de2f720aab8fe11f2e621c095";
+    md5 = "8ce2fcd72becf06c41f7201d15373ed9";
+    md5name = "8ce2fcd72becf06c41f7201d15373ed9-librepository-1.1.6.zip";
+  }
+  {
+    name = "libserializer-1.1.6.zip";
+    url = "http://dev-www.libreoffice.org/src/f94d9870737518e3b597f9265f4e9803-libserializer-1.1.6.zip";
+    sha256 = "05640a1f6805b2b2d7e2cb9c50db9a5cb084e3c52ab1a71ce015239b4a1d4343";
+    md5 = "f94d9870737518e3b597f9265f4e9803";
+    md5name = "f94d9870737518e3b597f9265f4e9803-libserializer-1.1.6.zip";
+  }
+  {
+    name = "libxml-1.1.7.zip";
+    url = "http://dev-www.libreoffice.org/src/ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip";
+    sha256 = "7d2797fe9f79a77009721e3f14fa4a1dec17a6d706bdc93f85f1f01d124fab66";
+    md5 = "ace6ab49184e329db254e454a010f56d";
+    md5name = "ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip";
+  }
+  {
+    name = "sacjava-1.3.zip";
+    url = "http://dev-www.libreoffice.org/src/39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip";
+    sha256 = "085f2112c51fa8c1783fac12fbd452650596415121348393bb51f0f7e85a9045";
+    md5 = "39bb3fcea1514f1369fcfc87542390fd";
+    md5name = "39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip";
+  }
+  {
+    name = "libjpeg-turbo-1.5.3.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/libjpeg-turbo-1.5.3.tar.gz";
+    sha256 = "b24890e2bb46e12e72a79f7e965f409f4e16466d00e1dd15d93d73ee6b592523";
+    md5 = "";
+    md5name = "b24890e2bb46e12e72a79f7e965f409f4e16466d00e1dd15d93d73ee6b592523-libjpeg-turbo-1.5.3.tar.gz";
+  }
+  {
+    name = "language-subtag-registry-2019-09-16.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/language-subtag-registry-2019-09-16.tar.bz2";
+    sha256 = "07b66bc0f2786fde55f6bbcbcb4a455a846eb8e2351c8ce3d0a219a73693736a";
+    md5 = "";
+    md5name = "07b66bc0f2786fde55f6bbcbcb4a455a846eb8e2351c8ce3d0a219a73693736a-language-subtag-registry-2019-09-16.tar.bz2";
+  }
+  {
+    name = "JLanguageTool-1.7.0.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/b63e6340a02ff1cacfeadb2c42286161-JLanguageTool-1.7.0.tar.bz2";
+    sha256 = "48c87e41636783bba438b65fd895821e369ed139e1465fac654323ad93c5a82d";
+    md5 = "b63e6340a02ff1cacfeadb2c42286161";
+    md5name = "b63e6340a02ff1cacfeadb2c42286161-JLanguageTool-1.7.0.tar.bz2";
+  }
+  {
+    name = "lcms2-2.9.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/lcms2-2.9.tar.gz";
+    sha256 = "48c6fdf98396fa245ed86e622028caf49b96fa22f3e5734f853f806fbc8e7d20";
+    md5 = "";
+    md5name = "48c6fdf98396fa245ed86e622028caf49b96fa22f3e5734f853f806fbc8e7d20-lcms2-2.9.tar.gz";
+  }
+  {
+    name = "libassuan-2.5.1.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/libassuan-2.5.1.tar.bz2";
+    sha256 = "47f96c37b4f2aac289f0bc1bacfa8bd8b4b209a488d3d15e2229cb6cc9b26449";
+    md5 = "";
+    md5name = "47f96c37b4f2aac289f0bc1bacfa8bd8b4b209a488d3d15e2229cb6cc9b26449-libassuan-2.5.1.tar.bz2";
+  }
+  {
+    name = "libatomic_ops-7.6.8.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/libatomic_ops-7.6.8.tar.gz";
+    sha256 = "1d6a279edf81767e74d2ad2c9fce09459bc65f12c6525a40b0cb3e53c089f665";
+    md5 = "";
+    md5name = "1d6a279edf81767e74d2ad2c9fce09459bc65f12c6525a40b0cb3e53c089f665-libatomic_ops-7.6.8.tar.gz";
+  }
+  {
+    name = "libeot-0.01.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/libeot-0.01.tar.bz2";
+    sha256 = "cf5091fa8e7dcdbe667335eb90a2cfdd0a3fe8f8c7c8d1ece44d9d055736a06a";
+    md5 = "";
+    md5name = "cf5091fa8e7dcdbe667335eb90a2cfdd0a3fe8f8c7c8d1ece44d9d055736a06a-libeot-0.01.tar.bz2";
+  }
+  {
+    name = "libexttextcat-3.4.5.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libexttextcat-3.4.5.tar.xz";
+    sha256 = "13fdbc9d4c489a4d0519e51933a1aa21fe3fb9eb7da191b87f7a63e82797dac8";
+    md5 = "";
+    md5name = "13fdbc9d4c489a4d0519e51933a1aa21fe3fb9eb7da191b87f7a63e82797dac8-libexttextcat-3.4.5.tar.xz";
+  }
+  {
+    name = "libgpg-error-1.27.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/libgpg-error-1.27.tar.bz2";
+    sha256 = "4f93aac6fecb7da2b92871bb9ee33032be6a87b174f54abf8ddf0911a22d29d2";
+    md5 = "";
+    md5name = "4f93aac6fecb7da2b92871bb9ee33032be6a87b174f54abf8ddf0911a22d29d2-libgpg-error-1.27.tar.bz2";
+  }
+  {
+    name = "liblangtag-0.6.2.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/liblangtag-0.6.2.tar.bz2";
+    sha256 = "d6242790324f1432fb0a6fae71b6851f520b2c5a87675497cf8ea14c2924d52e";
+    md5 = "";
+    md5name = "d6242790324f1432fb0a6fae71b6851f520b2c5a87675497cf8ea14c2924d52e-liblangtag-0.6.2.tar.bz2";
+  }
+  {
+    name = "libnumbertext-1.0.5.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libnumbertext-1.0.5.tar.xz";
+    sha256 = "e1c9086b4cecb6b25f180316f30740dfabe6a4dbaf70dddc34276fc839e4f4f7";
+    md5 = "";
+    md5name = "e1c9086b4cecb6b25f180316f30740dfabe6a4dbaf70dddc34276fc839e4f4f7-libnumbertext-1.0.5.tar.xz";
+  }
+  {
+    name = "ltm-1.0.zip";
+    url = "http://dev-www.libreoffice.org/src/ltm-1.0.zip";
+    sha256 = "083daa92d8ee6f4af96a6143b12d7fc8fe1a547e14f862304f7281f8f7347483";
+    md5 = "";
+    md5name = "083daa92d8ee6f4af96a6143b12d7fc8fe1a547e14f862304f7281f8f7347483-ltm-1.0.zip";
+  }
+  {
+    name = "xmlsec1-1.2.28.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/xmlsec1-1.2.28.tar.gz";
+    sha256 = "13eec4811ea30e3f0e16a734d1dbf7f9d246a71d540b48d143a07b489f6222d4";
+    md5 = "";
+    md5name = "13eec4811ea30e3f0e16a734d1dbf7f9d246a71d540b48d143a07b489f6222d4-xmlsec1-1.2.28.tar.gz";
+  }
+  {
+    name = "libxml2-2.9.10.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/libxml2-2.9.10.tar.gz";
+    sha256 = "aafee193ffb8fe0c82d4afef6ef91972cbaf5feea100edc2f262750611b4be1f";
+    md5 = "";
+    md5name = "aafee193ffb8fe0c82d4afef6ef91972cbaf5feea100edc2f262750611b4be1f-libxml2-2.9.10.tar.gz";
+  }
+  {
+    name = "libxslt-1.1.34.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/libxslt-1.1.34.tar.gz";
+    sha256 = "98b1bd46d6792925ad2dfe9a87452ea2adebf69dcb9919ffd55bf926a7f93f7f";
+    md5 = "";
+    md5name = "98b1bd46d6792925ad2dfe9a87452ea2adebf69dcb9919ffd55bf926a7f93f7f-libxslt-1.1.34.tar.gz";
+  }
+  {
+    name = "lp_solve_5.5.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/26b3e95ddf3d9c077c480ea45874b3b8-lp_solve_5.5.tar.gz";
+    sha256 = "171816288f14215c69e730f7a4f1c325739873e21f946ff83884b350574e6695";
+    md5 = "26b3e95ddf3d9c077c480ea45874b3b8";
+    md5name = "26b3e95ddf3d9c077c480ea45874b3b8-lp_solve_5.5.tar.gz";
+  }
+  {
+    name = "lxml-4.1.1.tgz";
+    url = "http://dev-www.libreoffice.org/src/lxml-4.1.1.tgz";
+    sha256 = "940caef1ec7c78e0c34b0f6b94fe42d0f2022915ffc78643d28538a5cfd0f40e";
+    md5 = "";
+    md5name = "940caef1ec7c78e0c34b0f6b94fe42d0f2022915ffc78643d28538a5cfd0f40e-lxml-4.1.1.tgz";
+  }
+  {
+    name = "mariadb_client-2.0.0-src.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/a233181e03d3c307668b4c722d881661-mariadb_client-2.0.0-src.tar.gz";
+    sha256 = "fd2f751dea049c1907735eb236aeace1d811d6a8218118b00bbaa9b84dc5cd60";
+    md5 = "a233181e03d3c307668b4c722d881661";
+    md5name = "a233181e03d3c307668b4c722d881661-mariadb_client-2.0.0-src.tar.gz";
+  }
+  {
+    name = "mdds-1.4.3.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/mdds-1.4.3.tar.bz2";
+    sha256 = "25ce3d5af9f6609e1de05bb22b2316e57b74a72a5b686fbb2da199da72349c81";
+    md5 = "";
+    md5name = "25ce3d5af9f6609e1de05bb22b2316e57b74a72a5b686fbb2da199da72349c81-mdds-1.4.3.tar.bz2";
+  }
+  {
+    name = "mDNSResponder-878.200.35.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/mDNSResponder-878.200.35.tar.gz";
+    sha256 = "e777b4d7dbf5eb1552cb80090ad1ede319067ab6e45e3990d68aabf6e8b3f5a0";
+    md5 = "";
+    md5name = "e777b4d7dbf5eb1552cb80090ad1ede319067ab6e45e3990d68aabf6e8b3f5a0-mDNSResponder-878.200.35.tar.gz";
+  }
+  {
+    name = "libmspub-0.1.4.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libmspub-0.1.4.tar.xz";
+    sha256 = "ef36c1a1aabb2ba3b0bedaaafe717bf4480be2ba8de6f3894be5fd3702b013ba";
+    md5 = "";
+    md5name = "ef36c1a1aabb2ba3b0bedaaafe717bf4480be2ba8de6f3894be5fd3702b013ba-libmspub-0.1.4.tar.xz";
+  }
+  {
+    name = "libmwaw-0.3.15.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libmwaw-0.3.15.tar.xz";
+    sha256 = "0440bb09f05e3419423d8dfa36ee847056ebfd837f9cbc091fdb5b057daab0b1";
+    md5 = "";
+    md5name = "0440bb09f05e3419423d8dfa36ee847056ebfd837f9cbc091fdb5b057daab0b1-libmwaw-0.3.15.tar.xz";
+  }
+  {
+    name = "mythes-1.2.4.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/a8c2c5b8f09e7ede322d5c602ff6a4b6-mythes-1.2.4.tar.gz";
+    sha256 = "1e81f395d8c851c3e4e75b568e20fa2fa549354e75ab397f9de4b0e0790a305f";
+    md5 = "a8c2c5b8f09e7ede322d5c602ff6a4b6";
+    md5name = "a8c2c5b8f09e7ede322d5c602ff6a4b6-mythes-1.2.4.tar.gz";
+  }
+  {
+    name = "neon-0.30.2.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/neon-0.30.2.tar.gz";
+    sha256 = "db0bd8cdec329b48f53a6f00199c92d5ba40b0f015b153718d1b15d3d967fbca";
+    md5 = "";
+    md5name = "db0bd8cdec329b48f53a6f00199c92d5ba40b0f015b153718d1b15d3d967fbca-neon-0.30.2.tar.gz";
+  }
+  {
+    name = "nss-3.47.1-with-nspr-4.23.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/nss-3.47.1-with-nspr-4.23.tar.gz";
+    sha256 = "07d4276168f59bb3038c7826dabb5fbfbab8336ddf65e4e6e43bce89ada78c64";
+    md5 = "";
+    md5name = "07d4276168f59bb3038c7826dabb5fbfbab8336ddf65e4e6e43bce89ada78c64-nss-3.47.1-with-nspr-4.23.tar.gz";
+  }
+  {
+    name = "libodfgen-0.1.6.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/libodfgen-0.1.6.tar.bz2";
+    sha256 = "2c7b21892f84a4c67546f84611eccdad6259875c971e98ddb027da66ea0ac9c2";
+    md5 = "";
+    md5name = "2c7b21892f84a4c67546f84611eccdad6259875c971e98ddb027da66ea0ac9c2-libodfgen-0.1.6.tar.bz2";
+  }
+  {
+    name = "odfvalidator-1.2.0-incubating-SNAPSHOT-jar-with-dependencies-971c54fd38a968f5860014b44301872706f9e540.jar";
+    url = "http://dev-www.libreoffice.org/src/../extern/odfvalidator-1.2.0-incubating-SNAPSHOT-jar-with-dependencies-971c54fd38a968f5860014b44301872706f9e540.jar";
+    sha256 = "984f2a479df79e27e7b01a5815ac53ae64e07746b882262d8a64566494515504";
+    md5 = "";
+    md5name = "984f2a479df79e27e7b01a5815ac53ae64e07746b882262d8a64566494515504-odfvalidator-1.2.0-incubating-SNAPSHOT-jar-with-dependencies-971c54fd38a968f5860014b44301872706f9e540.jar";
+  }
+  {
+    name = "officeotron-0.7.4-master.jar";
+    url = "http://dev-www.libreoffice.org/src/../extern/8249374c274932a21846fa7629c2aa9b-officeotron-0.7.4-master.jar";
+    sha256 = "f2443f27561af52324eee03a1892d9f569adc8db9e7bca55614898bc2a13a770";
+    md5 = "8249374c274932a21846fa7629c2aa9b";
+    md5name = "8249374c274932a21846fa7629c2aa9b-officeotron-0.7.4-master.jar";
+  }
+  {
+    name = "openldap-2.4.45.tgz";
+    url = "http://dev-www.libreoffice.org/src/openldap-2.4.45.tgz";
+    sha256 = "cdd6cffdebcd95161a73305ec13fc7a78e9707b46ca9f84fb897cd5626df3824";
+    md5 = "";
+    md5name = "cdd6cffdebcd95161a73305ec13fc7a78e9707b46ca9f84fb897cd5626df3824-openldap-2.4.45.tgz";
+  }
+  {
+    name = "openssl-1.0.2t.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/openssl-1.0.2t.tar.gz";
+    sha256 = "14cb464efe7ac6b54799b34456bd69558a749a4931ecfd9cf9f71d7881cac7bc";
+    md5 = "";
+    md5name = "14cb464efe7ac6b54799b34456bd69558a749a4931ecfd9cf9f71d7881cac7bc-openssl-1.0.2t.tar.gz";
+  }
+  {
+    name = "liborcus-0.14.1.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/liborcus-0.14.1.tar.gz";
+    sha256 = "3f48cfbc21ad74787218284939c04d42cb836c73bc393f27f538b668e4d78a5f";
+    md5 = "";
+    md5name = "3f48cfbc21ad74787218284939c04d42cb836c73bc393f27f538b668e4d78a5f-liborcus-0.14.1.tar.gz";
+  }
+  {
+    name = "owncloud-android-library-0.9.4-no-binary-deps.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/owncloud-android-library-0.9.4-no-binary-deps.tar.gz";
+    sha256 = "b18b3e3ef7fae6a79b62f2bb43cc47a5346b6330f6a383dc4be34439aca5e9fb";
+    md5 = "";
+    md5name = "b18b3e3ef7fae6a79b62f2bb43cc47a5346b6330f6a383dc4be34439aca5e9fb-owncloud-android-library-0.9.4-no-binary-deps.tar.gz";
+  }
+  {
+    name = "libpagemaker-0.0.4.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libpagemaker-0.0.4.tar.xz";
+    sha256 = "66adacd705a7d19895e08eac46d1e851332adf2e736c566bef1164e7a442519d";
+    md5 = "";
+    md5name = "66adacd705a7d19895e08eac46d1e851332adf2e736c566bef1164e7a442519d-libpagemaker-0.0.4.tar.xz";
+  }
+  {
+    name = "pdfium-3794.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/pdfium-3794.tar.bz2";
+    sha256 = "e3faddcf741336c64ca2e6f72b23e9e60979969b2cf67c878c9a5bc38328cfc4";
+    md5 = "";
+    md5name = "e3faddcf741336c64ca2e6f72b23e9e60979969b2cf67c878c9a5bc38328cfc4-pdfium-3794.tar.bz2";
+  }
+  {
+    name = "pixman-0.34.0.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/e80ebae4da01e77f68744319f01d52a3-pixman-0.34.0.tar.gz";
+    sha256 = "21b6b249b51c6800dc9553b65106e1e37d0e25df942c90531d4c3997aa20a88e";
+    md5 = "e80ebae4da01e77f68744319f01d52a3";
+    md5name = "e80ebae4da01e77f68744319f01d52a3-pixman-0.34.0.tar.gz";
+  }
+  {
+    name = "libpng-1.6.37.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libpng-1.6.37.tar.xz";
+    sha256 = "505e70834d35383537b6491e7ae8641f1a4bed1876dbfe361201fc80868d88ca";
+    md5 = "";
+    md5name = "505e70834d35383537b6491e7ae8641f1a4bed1876dbfe361201fc80868d88ca-libpng-1.6.37.tar.xz";
+  }
+  {
+    name = "poppler-0.82.0.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/poppler-0.82.0.tar.xz";
+    sha256 = "234f8e573ea57fb6a008e7c1e56bfae1af5d1adf0e65f47555e1ae103874e4df";
+    md5 = "";
+    md5name = "234f8e573ea57fb6a008e7c1e56bfae1af5d1adf0e65f47555e1ae103874e4df-poppler-0.82.0.tar.xz";
+  }
+  {
+    name = "postgresql-9.2.24.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/postgresql-9.2.24.tar.bz2";
+    sha256 = "a754c02f7051c2f21e52f8669a421b50485afcde9a581674d6106326b189d126";
+    md5 = "";
+    md5name = "a754c02f7051c2f21e52f8669a421b50485afcde9a581674d6106326b189d126-postgresql-9.2.24.tar.bz2";
+  }
+  {
+    name = "Python-3.5.9.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/Python-3.5.9.tar.xz";
+    sha256 = "c24a37c63a67f53bdd09c5f287b5cff8e8b98f857bf348c577d454d3f74db049";
+    md5 = "";
+    md5name = "c24a37c63a67f53bdd09c5f287b5cff8e8b98f857bf348c577d454d3f74db049-Python-3.5.9.tar.xz";
+  }
+  {
+    name = "libqxp-0.0.2.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libqxp-0.0.2.tar.xz";
+    sha256 = "e137b6b110120a52c98edd02ebdc4095ee08d0d5295a94316a981750095a945c";
+    md5 = "";
+    md5name = "e137b6b110120a52c98edd02ebdc4095ee08d0d5295a94316a981750095a945c-libqxp-0.0.2.tar.xz";
+  }
+  {
+    name = "raptor2-2.0.15.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/a39f6c07ddb20d7dd2ff1f95fa21e2cd-raptor2-2.0.15.tar.gz";
+    sha256 = "ada7f0ba54787b33485d090d3d2680533520cd4426d2f7fb4782dd4a6a1480ed";
+    md5 = "a39f6c07ddb20d7dd2ff1f95fa21e2cd";
+    md5name = "a39f6c07ddb20d7dd2ff1f95fa21e2cd-raptor2-2.0.15.tar.gz";
+  }
+  {
+    name = "rasqal-0.9.33.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/1f5def51ca0026cd192958ef07228b52-rasqal-0.9.33.tar.gz";
+    sha256 = "6924c9ac6570bd241a9669f83b467c728a322470bf34f4b2da4f69492ccfd97c";
+    md5 = "1f5def51ca0026cd192958ef07228b52";
+    md5name = "1f5def51ca0026cd192958ef07228b52-rasqal-0.9.33.tar.gz";
+  }
+  {
+    name = "redland-1.0.17.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/e5be03eda13ef68aabab6e42aa67715e-redland-1.0.17.tar.gz";
+    sha256 = "de1847f7b59021c16bdc72abb4d8e2d9187cd6124d69156f3326dd34ee043681";
+    md5 = "e5be03eda13ef68aabab6e42aa67715e";
+    md5name = "e5be03eda13ef68aabab6e42aa67715e-redland-1.0.17.tar.gz";
+  }
+  {
+    name = "librevenge-0.0.4.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/librevenge-0.0.4.tar.bz2";
+    sha256 = "c51601cd08320b75702812c64aae0653409164da7825fd0f451ac2c5dbe77cbf";
+    md5 = "";
+    md5name = "c51601cd08320b75702812c64aae0653409164da7825fd0f451ac2c5dbe77cbf-librevenge-0.0.4.tar.bz2";
+  }
+  {
+    name = "rhino1_5R5.zip";
+    url = "http://dev-www.libreoffice.org/src/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip";
+    sha256 = "1fb458d6aab06932693cc8a9b6e4e70944ee1ff052fa63606e3131df34e21753";
+    md5 = "798b2ffdc8bcfe7bca2cf92b62caf685";
+    md5name = "798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip";
+  }
+  {
+    name = "serf-1.2.1.tar.bz2";
+    url = "http://dev-www.libreoffice.org/src/serf-1.2.1.tar.bz2";
+    sha256 = "6988d394b62c3494635b6f0760bc3079f9a0cd380baf0f6b075af1eb9fa5e700";
+    md5 = "";
+    md5name = "6988d394b62c3494635b6f0760bc3079f9a0cd380baf0f6b075af1eb9fa5e700-serf-1.2.1.tar.bz2";
+  }
+  {
+    name = "libstaroffice-0.0.6.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libstaroffice-0.0.6.tar.xz";
+    sha256 = "6b00e1ed8194e6072be4441025d1b888e39365727ed5b23e0e8c92c4009d1ec4";
+    md5 = "";
+    md5name = "6b00e1ed8194e6072be4441025d1b888e39365727ed5b23e0e8c92c4009d1ec4-libstaroffice-0.0.6.tar.xz";
+  }
+  {
+    name = "swingExSrc.zip";
+    url = "http://dev-www.libreoffice.org/src/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip";
+    sha256 = "64585ac36a81291a58269ec5347e7e3e2e8596dbacb9221015c208191333c6e1";
+    md5 = "35c94d2df8893241173de1d16b6034c0";
+    md5name = "35c94d2df8893241173de1d16b6034c0-swingExSrc.zip";
+  }
+  {
+    name = "twaindsm_2.4.1.orig.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/twaindsm_2.4.1.orig.tar.gz";
+    sha256 = "82c818be771f242388457aa8c807e4b52aa84dc22b21c6c56184a6b4cbb085e6";
+    md5 = "";
+    md5name = "82c818be771f242388457aa8c807e4b52aa84dc22b21c6c56184a6b4cbb085e6-twaindsm_2.4.1.orig.tar.gz";
+  }
+  {
+    name = "ucpp-1.3.2.tar.gz";
+    url = "http://dev-www.libreoffice.org/src/0168229624cfac409e766913506961a8-ucpp-1.3.2.tar.gz";
+    sha256 = "983941d31ee8d366085cadf28db75eb1f5cb03ba1e5853b98f12f7f51c63b776";
+    md5 = "0168229624cfac409e766913506961a8";
+    md5name = "0168229624cfac409e766913506961a8-ucpp-1.3.2.tar.gz";
+  }
+  {
+    name = "libvisio-0.1.7.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libvisio-0.1.7.tar.xz";
+    sha256 = "8faf8df870cb27b09a787a1959d6c646faa44d0d8ab151883df408b7166bea4c";
+    md5 = "";
+    md5name = "8faf8df870cb27b09a787a1959d6c646faa44d0d8ab151883df408b7166bea4c-libvisio-0.1.7.tar.xz";
+  }
+  {
+    name = "libwpd-0.10.3.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libwpd-0.10.3.tar.xz";
+    sha256 = "2465b0b662fdc5d4e3bebcdc9a79027713fb629ca2bff04a3c9251fdec42dd09";
+    md5 = "";
+    md5name = "2465b0b662fdc5d4e3bebcdc9a79027713fb629ca2bff04a3c9251fdec42dd09-libwpd-0.10.3.tar.xz";
+  }
+  {
+    name = "libwpg-0.3.3.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libwpg-0.3.3.tar.xz";
+    sha256 = "99b3f7f8832385748582ab8130fbb9e5607bd5179bebf9751ac1d51a53099d1c";
+    md5 = "";
+    md5name = "99b3f7f8832385748582ab8130fbb9e5607bd5179bebf9751ac1d51a53099d1c-libwpg-0.3.3.tar.xz";
+  }
+  {
+    name = "libwps-0.4.10.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libwps-0.4.10.tar.xz";
+    sha256 = "1421e034286a9f96d3168a1c54ea570ee7aa008ca07b89de005ad5ce49fb29ca";
+    md5 = "";
+    md5name = "1421e034286a9f96d3168a1c54ea570ee7aa008ca07b89de005ad5ce49fb29ca-libwps-0.4.10.tar.xz";
+  }
+  {
+    name = "xsltml_2.1.2.zip";
+    url = "http://dev-www.libreoffice.org/src/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip";
+    sha256 = "75823776fb51a9c526af904f1503a7afaaab900fba83eda64f8a41073724c870";
+    md5 = "a7983f859eafb2677d7ff386a023bc40";
+    md5name = "a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip";
+  }
+  {
+    name = "zlib-1.2.11.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/zlib-1.2.11.tar.xz";
+    sha256 = "4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066";
+    md5 = "";
+    md5name = "4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066-zlib-1.2.11.tar.xz";
+  }
+  {
+    name = "libzmf-0.0.2.tar.xz";
+    url = "http://dev-www.libreoffice.org/src/libzmf-0.0.2.tar.xz";
+    sha256 = "27051a30cb057fdb5d5de65a1f165c7153dc76e27fe62251cbb86639eb2caf22";
+    md5 = "";
+    md5name = "27051a30cb057fdb5d5de65a1f165c7153dc76e27fe62251cbb86639eb2caf22-libzmf-0.0.2.tar.xz";
+  }
+]
diff --git a/nixpkgs/pkgs/applications/office/libreoffice/src-still/override.nix b/nixpkgs/pkgs/applications/office/libreoffice/src-still/override.nix
new file mode 100644
index 000000000000..c0880aa3ecb1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/libreoffice/src-still/override.nix
@@ -0,0 +1,12 @@
+{ stdenv, kdeIntegration, ... }:
+attrs:
+{
+  postConfigure = attrs.postConfigure + ''
+    sed -e '/CPPUNIT_TEST(Import_Export_Import);/d' -i './sw/qa/extras/inc/swmodeltestbase.hxx'
+  '';
+  configureFlags = stdenv.lib.remove "--without-system-qrcodegen"
+  (attrs.configureFlags ++ [
+    (stdenv.lib.enableFeature kdeIntegration "kde5")
+  ]);
+  meta = attrs.meta // { description = "Comprehensive, professional-quality productivity suite (Still/Stable release)"; };
+}
diff --git a/nixpkgs/pkgs/applications/office/libreoffice/src-still/primary.nix b/nixpkgs/pkgs/applications/office/libreoffice/src-still/primary.nix
new file mode 100644
index 000000000000..36deae53670a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/libreoffice/src-still/primary.nix
@@ -0,0 +1,36 @@
+{ fetchurl }:
+
+rec {
+  fetchSrc = {name, sha256}: fetchurl {
+    url = "https://download.documentfoundation.org/libreoffice/src/${subdir}/libreoffice-${name}-${version}.tar.xz";
+    inherit sha256;
+  };
+
+  major = "6";
+  minor = "3";
+  patch = "5";
+  tweak = "2";
+
+  subdir = "${major}.${minor}.${patch}";
+
+  version = "${subdir}${if tweak == "" then "" else "."}${tweak}";
+
+  src = fetchurl {
+    url = "https://download.documentfoundation.org/libreoffice/src/${subdir}/libreoffice-${version}.tar.xz";
+    sha256 = "0jnayv1i0iq1gpf3q3z9nfq6jid77d0c76675lkqb3gi07f63nzz";
+  };
+
+  # FIXME rename
+  translations = fetchSrc {
+    name = "translations";
+    sha256 = "01g09bbn1ixrsfj4l0x6x8p06dz9hnlrhnr3f3xb42drmi9ipvjv";
+  };
+
+  # the "dictionaries" archive is not used for LO build because we already build hunspellDicts packages from
+  # it and LibreOffice can use these by pointing DICPATH environment variable at the hunspell directory
+
+  help = fetchSrc {
+    name = "help";
+    sha256 = "1p38wlclv6cbjpkkq7n2mjpxy84pxi4vxc9s5kjp4dm63zzxafd6";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/libreoffice/wrapper.nix b/nixpkgs/pkgs/applications/office/libreoffice/wrapper.nix
new file mode 100644
index 000000000000..08b01a4a051b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/libreoffice/wrapper.nix
@@ -0,0 +1,19 @@
+{ libreoffice, runCommand, dbus, bash }:
+let
+  jdk = libreoffice.jdk;
+in
+(runCommand libreoffice.name {
+  inherit dbus libreoffice jdk bash;
+} ''
+  mkdir -p "$out/bin"
+  ln -s "${libreoffice}/share" "$out/share"
+  substituteAll "${./wrapper.sh}" "$out/bin/soffice"
+  chmod a+x "$out/bin/soffice"
+
+  for i in $(ls "${libreoffice}/bin/"); do
+    test "$i" = "soffice" || ln -s soffice "$out/bin/$(basename "$i")"
+  done
+'') // {
+  inherit libreoffice dbus;
+  meta = libreoffice.meta;
+}
diff --git a/nixpkgs/pkgs/applications/office/libreoffice/wrapper.sh b/nixpkgs/pkgs/applications/office/libreoffice/wrapper.sh
new file mode 100644
index 000000000000..806dd0806ad5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/libreoffice/wrapper.sh
@@ -0,0 +1,31 @@
+#!@bash@/bin/bash
+export JAVA_HOME="${JAVA_HOME:-@jdk@}"
+#export SAL_USE_VCLPLUGIN="${SAL_USE_VCLPLUGIN:-gen}"
+
+if uname | grep Linux > /dev/null && 
+       ! ( test -n "$DBUS_SESSION_BUS_ADDRESS" ); then
+    dbus_tmp_dir="/run/user/$(id -u)/libreoffice-dbus"
+    if ! test -d "$dbus_tmp_dir" && test -d "/run"; then
+            mkdir -p "$dbus_tmp_dir"
+    fi
+    if ! test -d "$dbus_tmp_dir"; then
+            dbus_tmp_dir="/tmp/libreoffice-$(id -u)/libreoffice-dbus"
+            mkdir -p "$dbus_tmp_dir"
+    fi
+    dbus_socket_dir="$(mktemp -d -p "$dbus_tmp_dir")"
+    "@dbus@"/bin/dbus-daemon --nopidfile --nofork --config-file "@dbus@"/share/dbus-1/session.conf --address "unix:path=$dbus_socket_dir/session"  &> /dev/null &
+    export DBUS_SESSION_BUS_ADDRESS="unix:path=$dbus_socket_dir/session"
+fi
+
+for PROFILE in $NIX_PROFILES; do
+    HDIR="$PROFILE/share/hunspell"
+    if [ -d "$HDIR" ]; then
+        export DICPATH=$DICPATH''${DICPATH:+:}$HDIR
+    fi
+done
+
+"@libreoffice@/bin/$(basename "$0")" "$@"
+code="$?"
+
+test -n "$dbus_socket_dir" && rm -rf "$dbus_socket_dir"
+exit "$code"
diff --git a/nixpkgs/pkgs/applications/office/libreoffice/xdg-open-brief.patch b/nixpkgs/pkgs/applications/office/libreoffice/xdg-open-brief.patch
new file mode 100644
index 000000000000..0a2f02e71fed
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/libreoffice/xdg-open-brief.patch
@@ -0,0 +1,13 @@
+diff --git a/shell/source/unix/misc/senddoc.sh b/shell/source/unix/misc/senddoc.sh
+index 4519e01f26e2..8985711a2c01 100755
+--- a/shell/source/unix/misc/senddoc.sh
++++ b/shell/source/unix/misc/senddoc.sh
+@@ -393,6 +393,8 @@ case `basename "$MAILER" | sed 's/-.*$//'` in
+             MAILER=/usr/bin/kde-open
+         elif [ -x /usr/bin/xdg-open ] ; then
+             MAILER=/usr/bin/xdg-open
++        elif type -p xdg-open >/dev/null 2>&1 ; then
++            MAILER="$(type -p xdg-open)"
+         else
+             echo "Unsupported mail client: `basename $MAILER | sed 's/-.*^//'`"
+             exit 2
diff --git a/nixpkgs/pkgs/applications/office/marp/default.nix b/nixpkgs/pkgs/applications/office/marp/default.nix
new file mode 100644
index 000000000000..5b05a9f164b7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/marp/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, atomEnv, libXScrnSaver, gtk2 }:
+
+stdenv.mkDerivation rec {
+  pname = "marp";
+  version = "0.0.14";
+
+  src = fetchurl {
+    url = "https://github.com/yhatt/marp/releases/download/v${version}/${version}-Marp-linux-x64.tar.gz";
+    sha256 = "0nklzxwdx5llzfwz1hl2jpp2kwz78w4y63h5l00fh6fv6zisw6j4";
+  };
+
+  unpackPhase = ''
+    mkdir {locales,resources}
+    tar --delay-directory-restore -xf $src
+    chmod u+x {locales,resources}
+  '';
+
+  installPhase = ''
+    mkdir -p $out/lib/marp $out/bin
+    cp -r ./* $out/lib/marp
+    ln -s $out/lib/marp/Marp $out/bin
+  '';
+
+  postFixup = ''
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${atomEnv.libPath}:${stdenv.lib.makeLibraryPath [ libXScrnSaver gtk2 ]}:$out/lib/marp" \
+      $out/bin/Marp
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Markdown presentation writer, powered by Electron";
+    homepage = "https://yhatt.github.io/marp/";
+    license = licenses.mit;
+    maintainers = [ maintainers.puffnfresh ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/mendeley/default.nix b/nixpkgs/pkgs/applications/office/mendeley/default.nix
new file mode 100644
index 000000000000..192585bd4b5e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/mendeley/default.nix
@@ -0,0 +1,147 @@
+{ fetchurl, stdenv, mkDerivation, dpkg, which
+, makeWrapper
+, alsaLib
+, desktop-file-utils
+, dbus
+, libcap
+, fontconfig
+, freetype
+, gcc
+, gconf
+, glib
+, icu
+, libxml2
+, libxslt
+, orc
+, nss
+, nspr
+, qtbase
+, qtsvg
+, qtdeclarative
+, qtwebchannel
+, qtquickcontrols
+, qtwebkit
+, qtwebengine
+, sqlite
+, xorg
+, zlib
+# The provided wrapper does this, but since we don't use it
+# we emulate the behavior.  The downside is that this
+# will leave entries on your system after uninstalling mendeley.
+# (they can be removed by running '$out/bin/install-mendeley-link-handler.sh -u')
+, autorunLinkHandler ? true
+# Update script
+, writeScript
+, runtimeShell
+}:
+
+let
+  arch32 = "i686-linux";
+
+  arch = if stdenv.hostPlatform.system == arch32
+    then "i386"
+    else "amd64";
+
+  shortVersion = "1.19.5-stable";
+
+  version = "${shortVersion}_${arch}";
+
+  url = "http://desktop-download.mendeley.com/download/apt/pool/main/m/mendeleydesktop/mendeleydesktop_${version}.deb";
+  sha256 = if stdenv.hostPlatform.system == arch32
+    then "01x83a44qlxi937b128y8y0px0q4w37g72z652lc42kv50dhyy3f"
+    else "1cagqq0xziznaj97z30bqfhrwjv3a4h83ckhwigq35nhk1ggq1ry";
+
+  deps = [
+    qtbase
+    qtsvg
+    qtdeclarative
+    qtwebchannel
+    qtquickcontrols
+    qtwebkit
+    qtwebengine
+    alsaLib
+    dbus
+    freetype
+    fontconfig
+    gcc.cc
+    gconf
+    glib
+    icu
+    libcap
+    libxml2
+    libxslt
+    nspr
+    nss
+    orc
+    sqlite
+    xorg.libX11
+    xorg.xcbutilkeysyms
+    xorg.libxcb
+    xorg.libXcomposite
+    xorg.libXext
+    xorg.libXrender
+    xorg.libXi
+    xorg.libXcursor
+    xorg.libXtst
+    xorg.libXrandr
+    xorg.xcbutilimage
+    zlib
+  ];
+
+in
+
+mkDerivation {
+  pname = "mendeley";
+  inherit version;
+
+  src = fetchurl {
+    url = url;
+    sha256 = sha256;
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ dpkg which ] ++ deps;
+
+  propagatedUserEnvPkgs = [ gconf ];
+
+  dontUnpack = true;
+
+  dontWrapQtApps = true;
+
+  installPhase = ''
+    dpkg-deb -x $src $out
+    mv $out/opt/mendeleydesktop/{bin,lib,share} $out
+
+    interpreter=$(patchelf --print-interpreter $(readlink -f $(which patchelf)))
+    patchelf --set-interpreter $interpreter \
+             --set-rpath ${stdenv.lib.makeLibraryPath deps}:$out/lib \
+             $out/bin/mendeleydesktop
+
+    wrapQtApp $out/bin/mendeleydesktop \
+      --add-flags "--unix-distro-build" \
+      ${stdenv.lib.optionalString autorunLinkHandler # ignore errors installing the link handler
+      ''--run "$out/bin/install-mendeley-link-handler.sh $out/bin/mendeleydesktop ||:"''}
+
+    # Remove bundled qt bits
+    rm -rf $out/lib/qt
+    rm $out/bin/qt* $out/bin/Qt*
+
+    # Patch up link handler script
+    wrapProgram $out/bin/install-mendeley-link-handler.sh \
+      --prefix PATH ':' ${stdenv.lib.makeBinPath [ which gconf desktop-file-utils ] }
+  '';
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  updateScript = import ./update.nix { inherit writeScript runtimeShell; };
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.mendeley.com";
+    description = "A reference manager and academic social network";
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" "i686-linux" ];
+    maintainers  = with maintainers; [ dtzWill ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/office/mendeley/update.nix b/nixpkgs/pkgs/applications/office/mendeley/update.nix
new file mode 100644
index 000000000000..56becea9959a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/mendeley/update.nix
@@ -0,0 +1,61 @@
+{ writeScript, runtimeShell }:
+
+writeScript "update-mendeley" ''
+  #!${runtimeShell}
+  function follow() {
+    local URL=$1
+    while true; do
+      NEWURL=$(curl -m20 -sI "$URL" -o /dev/null -w '%{redirect_url}')
+      [ -z "$NEWURL" ] && break
+      [[ $NEWURL = $URL ]] && (echo "redirect loop?!"; exit 1)
+      echo "Following $URL -> $NEWURL ..." >&2
+      URL=$NEWURL
+    done
+
+    echo $URL
+  }
+
+  amd64URL=$(follow https://www.mendeley.com/repositories/ubuntu/stable/amd64/mendeleydesktop-latest)
+  amd64V=$(basename $amd64URL|grep -m1 -o "[0-9]\+\.[0-9]\+\(\.[0-9]\+\)\?")
+  i386URL=$(follow https://www.mendeley.com/repositories/ubuntu/stable/i386/mendeleydesktop-latest)
+  i386V=$(basename $i386URL|grep -m1 -o "[0-9]\+\.[0-9]\+\(\.[0-9]\+\)\?")
+
+  echo "amd64 version: $amd64V"
+  echo "i386 version:  $i386V"
+  if [[ $amd64V != $i386V ]]; then
+    echo "Versions not the same!"
+    exit 1
+  fi
+
+  if grep -q -F "$amd64V" ${./default.nix}; then
+    echo "No new version yet, nothing to do."
+    echo "Have a nice day!"
+    exit 0
+  fi
+
+  amd64OldHash=$(nix-instantiate --eval --strict -A "mendeley.src.drvAttrs.outputHash" --argstr system "x86_64-linux"| tr -d '"')
+  i386OldHash=$(nix-instantiate --eval --strict -A "mendeley.src.drvAttrs.outputHash" --argstr system "i686-linux"| tr -d '"')
+
+  echo "Prefetching amd64..."
+  amd64NewHash=$(nix-prefetch-url $amd64URL)
+  echo "Prefetching i386..."
+  i386NewHash=$(nix-prefetch-url $i386URL)
+
+  # Don't actually update, just report that an update is available
+  cat <<EOF
+
+
+  Time to update to $amd64V !
+
+  32bit (i386):
+    Old: $i386OldHash
+    New: $i386NewHash
+  64bit (amd64):
+    Old: $amd64OldHash
+    New: $amd64NewHash
+
+  Exiting so this information is seen...
+  (no update is actually performed here)
+  EOF
+  exit 1
+''
diff --git a/nixpkgs/pkgs/applications/office/minetime/default.nix b/nixpkgs/pkgs/applications/office/minetime/default.nix
new file mode 100644
index 000000000000..8f90973e5f8e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/minetime/default.nix
@@ -0,0 +1,50 @@
+{ appimageTools, fetchurl, lib, runCommandNoCC, stdenv, gsettings-desktop-schemas, gtk3, zlib }:
+
+let
+  name = "${pname}-${version}";
+  pname = "minetime";
+  version = "1.7.3";
+  appimage = fetchurl {
+    url = "https://github.com/marcoancona/MineTime/releases/download/v${version}/${name}.AppImage";
+    sha256 = "0zz6p3mwxg9gm1sqzs582pq2nkb10lv0c3r542b9llqyzk9qv5aa";
+  };
+  extracted = appimageTools.extractType2 {
+    inherit name;
+    src = appimage;
+  };
+  patched = runCommandNoCC "minetime-patchelf" {} ''
+    cp -av ${extracted} $out
+
+    x=$out/resources/app.asar.unpacked/services/scheduling/dist/MinetimeSchedulingService
+    chmod +w $x
+
+    patchelf \
+      --set-interpreter ${stdenv.cc.bintools.dynamicLinker} \
+      --replace-needed libz.so.1 ${zlib}/lib/libz.so.1 \
+      $x
+  '';
+in
+appimageTools.wrapAppImage rec {
+  inherit name;
+  src = patched;
+
+  profile = ''
+    export LC_ALL=C.UTF-8
+    export XDG_DATA_DIRS=${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS
+  '';
+
+  multiPkgs = null; # no 32bit needed
+  extraPkgs = ps:
+    appimageTools.defaultFhsEnvArgs.multiPkgs ps
+    ++ (with ps; [ at-spi2-core at-spi2-atk libsecret libnotify ]);
+  extraInstallCommands = "mv $out/bin/{${name},${pname}}";
+
+  meta = with lib; {
+    description = "Modern, intuitive and smart calendar application";
+    homepage = "https://minetime.ai";
+    license = licenses.unfree;
+    # Should be cross-platform, but for now we just grab the appimage
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/mmex/default.nix b/nixpkgs/pkgs/applications/office/mmex/default.nix
new file mode 100644
index 000000000000..6d430a286bd3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/mmex/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchgit, sqlite, wxGTK30, gettext, wrapGAppsHook }:
+
+
+let
+  version = "1.3.3";
+in
+  stdenv.mkDerivation {
+    pname = "money-manager-ex";
+    inherit version;
+
+    src = fetchgit {
+      url = "https://github.com/moneymanagerex/moneymanagerex.git";
+      rev = "refs/tags/v${version}";
+      sha256 = "0r4n93z3scv0i0zqflsxwv7j4yl8jy3gr0m4l30y1q8qv0zj9n74";
+    };
+
+    nativeBuildInputs = [
+      wrapGAppsHook
+    ];
+
+    buildInputs = [
+      gettext
+      sqlite
+      wxGTK30
+      wxGTK30.gtk
+    ];
+
+    meta = {
+      description = "Easy-to-use personal finance software";
+      homepage = "https://www.moneymanagerex.org/";
+      license = stdenv.lib.licenses.gpl2Plus;
+      maintainers = with stdenv.lib.maintainers; [viric];
+      platforms = with stdenv.lib.platforms; linux;
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/office/moneyplex/default.nix b/nixpkgs/pkgs/applications/office/moneyplex/default.nix
new file mode 100644
index 000000000000..85d9715bf396
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/moneyplex/default.nix
@@ -0,0 +1,122 @@
+{ stdenv, fetchurl, patchelf, coreutils, pcsclite
+, zlib, glib, gdk-pixbuf, gtk2, cairo, pango, libX11, atk, openssl
+, runtimeShell }:
+
+let
+  libPath = stdenv.lib.makeLibraryPath [
+    stdenv.cc.cc zlib glib gdk-pixbuf gtk2 cairo pango libX11 atk openssl
+  ];
+
+  src_i686 = {
+    url = "http://www.matrica.com/download/distribution/moneyplex_16_install32_22424.tar.gz";
+    sha256 = "0yfpc6s85r08g796dycl378kagkma865vp7j72npia3hjc4vwamr";
+  };
+
+  src_x86_64 = {
+    url = "http://www.matrica.com/download/distribution/moneyplex_16_install64_22424.tar.gz";
+    sha256 = "03vxbg1yp8qyvcn6bw2a5s134nxzq9cn0vqbmlld7hh4knbsfqzw";
+  };
+in
+
+stdenv.mkDerivation {
+  pname = "moneyplex";
+  version = "16.0.22424";
+
+  src = fetchurl (if stdenv.hostPlatform.system == "i686-linux" then src_i686
+                  else if stdenv.hostPlatform.system == "x86_64-linux" then src_x86_64
+                  else throw "moneyplex requires i686-linux or x86_64-linux");
+
+
+  phases = [ "unpackPhase" "installPhase" "postInstall" ];
+
+  buildInputs = [ ];
+
+  installPhase =
+  ''
+    mkdir -p "$out/opt/moneyplex"
+    cp -r . $out/opt/moneyplex
+
+    mkdir "$out/bin"
+
+    cat > $out/bin/moneyplex <<EOF
+    #!${runtimeShell}
+
+    if [ -z "\$XDG_DATA_HOME" ]; then
+        MDIR=\$HOME/.local/share/moneyplex
+    else
+        MDIR=\$XDG_DATA_HOME/moneyplex
+    fi
+
+    if [ ! -d "\$MDIR" ]; then
+        ${coreutils}/bin/mkdir -p \$MDIR
+        ${coreutils}/bin/cp -r $out/opt/moneyplex/* \$MDIR
+        ${coreutils}/bin/chmod 0644 \$MDIR/*
+        ${coreutils}/bin/chmod 0755 \$MDIR/system
+        ${coreutils}/bin/chmod 0644 \$MDIR/system/*
+        ${coreutils}/bin/chmod 0755 \$MDIR/reports
+        ${coreutils}/bin/chmod 0644 \$MDIR/reports/*
+        ${coreutils}/bin/chmod 0755 \$MDIR/moneyplex
+        ${coreutils}/bin/chmod 0755 \$MDIR/prestart
+        ${coreutils}/bin/chmod 0755 \$MDIR/mpxalarm
+    fi
+
+    if [ ! -d "\$MDIR/pcsc" ]; then
+        ${coreutils}/bin/mkdir -p \$MDIR/pcsc
+    fi
+    if [ ! -e "\$MDIR/pcsc/libpcsclite.so.1" ] || [ ! \`${coreutils}/bin/readlink -f "\$MDIR/pcsc/libpcsclite.so.1"\` -ef "${stdenv.lib.getLib pcsclite}/lib/libpcsclite.so.1" ]; then
+        ${coreutils}/bin/ln -sf "${stdenv.lib.getLib pcsclite}/lib/libpcsclite.so.1" "\$MDIR/pcsc/libpcsclite.so.1"
+    fi
+
+
+    if [ -e "\$MDIR/rup/rupremote.lst" ]; then
+      for i in \`${coreutils}/bin/cat "\$MDIR/rup/rupremote.lst"\`; do
+        ${coreutils}/bin/mv "\$MDIR/rup/"\`${coreutils}/bin/basename \$i\` "\$MDIR/\$i"
+      done
+      rm -r "\$MDIR/rup/rupremote.lst"
+    fi
+
+    if [ ! -e "\$MDIR/moneyplex.patched" ] || [ "\$MDIR/moneyplex" -nt "\$MDIR/moneyplex.patched" ]; then
+        ${coreutils}/bin/cp "\$MDIR/moneyplex" "\$MDIR/moneyplex.patched"
+        ${coreutils}/bin/chmod 0755 "\$MDIR/moneyplex.patched"
+    fi
+    if [ ! \`${patchelf}/bin/patchelf --print-interpreter \$MDIR/moneyplex.patched\` = $(cat $NIX_CC/nix-support/dynamic-linker) ] ||
+       [ ! \`${patchelf}/bin/patchelf --print-rpath \$MDIR/moneyplex.patched\` = "${libPath}" ]; then
+        ${patchelf}/bin/patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) --set-rpath "${libPath}" "\$MDIR/moneyplex.patched"
+    fi
+
+    exec \$MDIR/moneyplex.patched
+    EOF
+
+    chmod +x $out/bin/moneyplex
+    '';
+
+  postInstall = ''
+    mkdir -p $out/share/icons
+    cp -r $out/opt/moneyplex/system/mpx256.png $out/share/icons/moneyplex.png
+
+    mkdir -p $out/share/applications
+    cat > $out/share/applications/moneyplex.desktop <<EOF
+    [Desktop Entry]
+    Type=Application
+    Encoding=UTF-8
+    Name=Moneyplex
+    GenericName=Moneyplex online banking software
+    Comment=Online banking software
+    Icon=$out/share/icons/moneyplex.png
+    Exec=$out/bin/moneyplex
+    Terminal=false
+    Categories=Application;
+    StartupNotify=true
+    EOF
+    '';
+
+
+  meta = with stdenv.lib; {
+    description = "Moneyplex online banking software";
+    maintainers = with maintainers; [ tstrobel ];
+    platforms = platforms.linux;
+    license = licenses.unfree;
+    downloadPage = "http://matrica.de/download/download.html";
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/office/mytetra/default.nix b/nixpkgs/pkgs/applications/office/mytetra/default.nix
new file mode 100644
index 000000000000..45d9e29ebe9a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/mytetra/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, mkDerivation, fetchurl, qmake, qtsvg, makeWrapper, xdg_utils }:
+
+let
+  version = "1.44.55";
+in mkDerivation {
+  pname = "mytetra";
+  inherit version;
+  src = fetchurl {
+    url = "https://github.com/xintrea/mytetra_dev/archive/v.${version}.tar.gz";
+    sha256 = "13lmfvschm1xwr0ys2ykhs0bb83m2f39rk1jdd7zf8yxlqki4i6l";
+  };
+
+  nativeBuildInputs = [ qmake makeWrapper ];
+  buildInputs = [ qtsvg ];
+
+  hardeningDisable = [ "format" ];
+
+  preBuild = ''
+    substituteInPlace app/app.pro \
+      --replace /usr/local/bin $out/bin \
+      --replace /usr/share $out/share
+
+    substituteInPlace app/src/views/mainWindow/MainWindow.cpp \
+      --replace ":/resource/pic/logo.svg" "$out/share/icons/hicolor/48x48/apps/mytetra.png"
+  '';
+
+  postFixup = ''
+    wrapProgram $out/bin/mytetra \
+      --prefix PATH : ${xdg_utils}/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Smart manager for information collecting";
+    homepage = "https://webhamster.ru/site/page/index/articles/projectcode/138";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.gnidorah ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/notes-up/default.nix b/nixpkgs/pkgs/applications/office/notes-up/default.nix
new file mode 100644
index 000000000000..055b3a41d091
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/notes-up/default.nix
@@ -0,0 +1,68 @@
+{ stdenv
+, fetchFromGitHub
+, pantheon
+, pkgconfig
+, vala_0_46
+, cmake
+, ninja
+, gtk3
+, gtksourceview3
+, webkitgtk
+, gtkspell3
+, glib
+, libgee
+, sqlite
+, discount
+, wrapGAppsHook
+, withPantheon ? false }:
+
+stdenv.mkDerivation rec {
+  pname = "notes-up";
+  version = "2.0.2";
+
+  src = fetchFromGitHub {
+    owner = "Philip-Scott";
+    repo = "Notes-up";
+    rev = version;
+    sha256 = "0bklgp8qrrj9y5m77xqbpy1ld2d9ya3rlxklgzx3alffq5312i4s";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    ninja
+    # fails with newer vala: https://github.com/Philip-Scott/Notes-up/issues/349
+    vala_0_46
+    pkgconfig
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    discount
+    glib
+    gtk3
+    gtksourceview3
+    gtkspell3
+    libgee
+    pantheon.granite
+    sqlite
+    webkitgtk
+  ];
+
+  # Whether to build with contractor support (Pantheon specific)
+  cmakeFlags = stdenv.lib.optional (!withPantheon) "-Dnoele=yes";
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Markdown notes editor and manager designed for elementary OS"
+    + stdenv.lib.optionalString withPantheon " - built with Contractor support";
+    homepage = "https://github.com/Philip-Scott/Notes-up";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ davidak worldofpeace ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/osmo/default.nix b/nixpkgs/pkgs/applications/office/osmo/default.nix
new file mode 100644
index 000000000000..c3a7a5da4550
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/osmo/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, gtk3, libxml2, gettext, libical, libnotify
+, libarchive, gspell, webkitgtk, libgringotts, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "osmo";
+  version = "0.4.2";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/osmo-pim/${pname}-${version}.tar.gz";
+    sha256 = "1gjd4w9jckfpqr9n0bw0w25h3qhfyzw1xvilh3hqdadfinwyal2v";
+  };
+
+  nativeBuildInputs = [ pkgconfig gettext wrapGAppsHook ];
+  buildInputs = [ gtk3 libxml2 libical libnotify libarchive
+    gspell webkitgtk libgringotts ];
+
+  meta = with stdenv.lib; {
+    description = "A handy personal organizer";
+    homepage = "http://clayo.org/osmo/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ pSub ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/paperless/default.nix b/nixpkgs/pkgs/applications/office/paperless/default.nix
new file mode 100644
index 000000000000..c549b107c541
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/paperless/default.nix
@@ -0,0 +1,174 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, makeWrapper
+, callPackage
+
+, python3
+, imagemagick7
+, ghostscript
+, optipng
+, tesseract
+, unpaper
+}:
+
+## Usage
+
+# ${paperless}/bin/paperless wraps manage.py
+
+# ${paperless}/share/paperless/setup-env.sh can be sourced from a
+# shell script to setup a Paperless environment
+
+# paperless.withConfig is a convenience function to setup a
+# configured Paperless instance. (See ./withConfig.nix)
+
+# For WSGI with gunicorn, use a shell script like this:
+# let
+#   pythonEnv = paperless.python.withPackages (ps: paperless.runtimePackages ++ [ ps.gunicorn ]);
+# in
+#   writers.writeBash "run-gunicorn" ''
+#     source ${paperless}/share/paperless/setup-env.sh
+#     PYTHONPATH=$paperlessSrc ${pythonEnv}/bin/gunicorn paperless.wsgi
+#   ''
+
+let
+  paperless = stdenv.mkDerivation rec {
+    pname = "paperless";
+    version = "2.7.0";
+
+    src = fetchFromGitHub {
+      owner = "the-paperless-project";
+      repo = "paperless";
+      rev = version;
+      sha256 = "0pkmyky1crjnsg7r0gfk0fadisfsgzlsq6afpz16wx4hp6yvkkf7";
+    };
+
+    nativeBuildInputs = [ makeWrapper ];
+
+    doCheck = true;
+    dontInstall = true;
+
+    pythonEnv      = python.withPackages (_: runtimePackages);
+    pythonCheckEnv = python.withPackages (_: (runtimePackages ++ checkPackages));
+
+    unpackPhase = ''
+      srcDir=$out/share/paperless
+      mkdir -p $srcDir
+      cp -r --no-preserve=mode $src/src/* $src/LICENSE $srcDir
+    '';
+
+    postPatch = ''
+      # django-cors-headers 3.x requires a scheme for allowed hosts
+      substituteInPlace $out/share/paperless/paperless/settings.py \
+        --replace "localhost:8080" "http://localhost:8080"
+    '';
+
+    buildPhase = let
+      # Paperless has explicit runtime checks that expect these binaries to be in PATH
+      extraBin = lib.makeBinPath [ imagemagick7 ghostscript optipng tesseract unpaper ];
+    in ''
+      ${python.interpreter} -m compileall $srcDir
+
+      makeWrapper $pythonEnv/bin/python $out/bin/paperless \
+        --set PATH ${extraBin} --add-flags $out/share/paperless/manage.py
+
+      # A shell snippet that can be sourced to setup a paperless env
+      cat > $out/share/paperless/setup-env.sh <<EOF
+      export PATH="$pythonEnv/bin:${extraBin}''${PATH:+:}$PATH"
+      export paperlessSrc=$out/share/paperless
+      EOF
+    '';
+
+    checkPhase = ''
+      source $out/share/paperless/setup-env.sh
+      tmpDir=$(realpath testsTmp)
+      mkdir $tmpDir
+      export HOME=$tmpDir
+      export PAPERLESS_MEDIADIR=$tmpDir
+      cd $paperlessSrc
+      # Prevent tests from writing to the derivation output
+      chmod -R -w $out
+      # Disable cache to silence a pytest warning ("could not create cache")
+      $pythonCheckEnv/bin/pytest -p no:cacheprovider
+    '';
+
+    passthru = {
+      withConfig = callPackage ./withConfig.nix {};
+      inherit python runtimePackages checkPackages tesseract;
+    };
+
+    meta = with lib; {
+      description = "Scan, index, and archive all of your paper documents";
+      homepage = "https://github.com/the-paperless-project/paperless";
+      license = licenses.gpl3;
+      maintainers = [ maintainers.earvstedt ];
+    };
+  };
+
+  python = python3.override {
+    packageOverrides = self: super: {
+      # Paperless only supports Django 2.0
+      django = django_2_0 super;
+      pyocr = pyocrWithUserTesseract super;
+      # These are pre-release versions, hence they are private to this pkg
+      django-filter = self.callPackage ./python-modules/django-filter.nix {};
+      django-crispy-forms = self.callPackage ./python-modules/django-crispy-forms.nix {};
+    };
+  };
+
+  django_2_0 = pyPkgs: pyPkgs.django_2_2.overrideDerivation (_: rec {
+    pname = "Django";
+    version = "2.0.12";
+    name = "${pname}-${version}";
+    src = pyPkgs.fetchPypi {
+      inherit pname version;
+      sha256 = "15s8z54k0gf9brnz06521bikm60ddw5pn6v3nbvnl47j1jjsvwz2";
+    };
+  });
+
+  runtimePackages = with python.pkgs; [
+    dateparser
+    dateutil
+    django
+    django-cors-headers
+    django-crispy-forms
+    django-filter
+    django_extensions
+    djangoql
+    djangorestframework
+    factory_boy
+    filemagic
+    fuzzywuzzy
+    langdetect
+    pdftotext
+    pillow
+    psycopg2
+    pyocr
+    python-dotenv
+    python-gnupg
+    pytz
+    termcolor
+  ] ++ (lib.optional stdenv.isLinux inotify-simple);
+
+  checkPackages = with python.pkgs; [
+    pytest
+    pytest-django
+    pytest-env
+    pytest_xdist
+  ];
+
+  pyocrWithUserTesseract = pyPkgs:
+    let
+      pyocr = pyPkgs.pyocr.override { inherit tesseract; };
+    in
+      if pyocr.outPath == pyPkgs.pyocr.outPath then
+        pyocr
+      else
+        # The user has provided a custom tesseract derivation that might be
+        # missing some languages that are required for PyOCR's tests. Disable them to
+        # avoid build errors.
+        pyocr.overridePythonAttrs (attrs: {
+          doCheck = false;
+        });
+in
+  paperless
diff --git a/nixpkgs/pkgs/applications/office/paperless/python-modules/django-crispy-forms.nix b/nixpkgs/pkgs/applications/office/paperless/python-modules/django-crispy-forms.nix
new file mode 100644
index 000000000000..c470a56b8a11
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/paperless/python-modules/django-crispy-forms.nix
@@ -0,0 +1,36 @@
+{ lib, buildPythonPackage, fetchFromGitHub
+, pytest_4, pytest-django, django }:
+
+buildPythonPackage {
+  pname = "django-crispy-forms";
+  version = "2019.04.21";
+
+  src = fetchFromGitHub {
+    owner = "django-crispy-forms";
+    repo = "django-crispy-forms";
+    rev = "e25a5326697e5b545689b3a914e516404a6911bb";
+    sha256 = "12zqa76q6i7j47aqvhilivpbdplgp9zw2q8zfcjzlgclrqafaj39";
+  };
+
+  # For reasons unknown, the source dir must contain a dash
+  # for the tests to run successfully
+  postUnpack = ''
+    mv $sourceRoot source-
+    export sourceRoot=source-
+  '';
+
+  checkInputs = [ pytest_4 pytest-django django ];
+
+  checkPhase = ''
+    PYTHONPATH="$(pwd):$PYTHONPATH" \
+    DJANGO_SETTINGS_MODULE=crispy_forms.tests.test_settings \
+      pytest crispy_forms/tests
+  '';
+
+  meta = with lib; {
+    description = "The best way to have DRY Django forms";
+    homepage = "https://github.com/maraujop/django-crispy-forms";
+    license = licenses.mit;
+    maintainers = with maintainers; [ earvstedt ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/paperless/python-modules/django-filter.nix b/nixpkgs/pkgs/applications/office/paperless/python-modules/django-filter.nix
new file mode 100644
index 000000000000..d7f20bd9d37d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/paperless/python-modules/django-filter.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, python, pythonOlder, fetchFromGitHub
+, django, django-crispy-forms, djangorestframework, mock, pytz }:
+
+buildPythonPackage rec {
+  pname = "django-filter";
+  version = "2.1.0-pre";
+  disabled = pythonOlder "3.4";
+
+  src = fetchFromGitHub {
+    owner = "carltongibson";
+    repo = pname;
+    rev = "24adad8c48bc9e7c7539b6510ffde4ce4effdc29";
+    sha256 = "0hv4w95jnlzp9vdximl6bb27fyi75001jhvsbs0ikkd8amq8iaj7";
+  };
+
+  checkInputs = [ django django-crispy-forms djangorestframework mock pytz ];
+
+  checkPhase = "${python.interpreter} runtests.py";
+
+  meta = with lib; {
+    description = "A reusable Django application for allowing users to filter querysets dynamically.";
+    homepage = "https://github.com/carltongibson/django-filter";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ earvstedt ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/paperless/withConfig.nix b/nixpkgs/pkgs/applications/office/paperless/withConfig.nix
new file mode 100644
index 000000000000..652d1478c0ca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/paperless/withConfig.nix
@@ -0,0 +1,68 @@
+{ paperless, lib, writers }:
+
+## Usage
+#
+# nix-build --out-link ./paperless -E '
+# (import <nixpkgs> {}).paperless.withConfig {
+#   dataDir = /tmp/paperless-data;
+#   config = {
+#     PAPERLESS_DISABLE_LOGIN = "true";
+#   };
+# }'
+#
+# Setup DB
+# ./paperless migrate
+#
+# Consume documents in ${dataDir}/consume
+# ./paperless document_consumer --oneshot
+#
+# Start web interface
+# ./paperless runserver --noreload localhost:8000
+
+{ config ? {}, dataDir ? null, ocrLanguages ? null
+, paperlessPkg ? paperless, extraCmds ? "" }:
+with lib;
+let
+  paperless = if ocrLanguages == null then
+    paperlessPkg
+  else
+    (paperlessPkg.override {
+      tesseract = paperlessPkg.tesseract.override {
+        enableLanguages = ocrLanguages;
+      };
+    }).overrideDerivation (_: {
+      # `ocrLanguages` might be missing some languages required by the tests.
+      doCheck = false;
+    });
+
+  envVars = (optionalAttrs (dataDir != null) {
+    PAPERLESS_CONSUMPTION_DIR = "${dataDir}/consume";
+    PAPERLESS_MEDIADIR = "${dataDir}/media";
+    PAPERLESS_STATICDIR = "${dataDir}/static";
+    PAPERLESS_DBDIR = dataDir;
+  }) // config;
+
+  envVarDefs = mapAttrsToList (n: v: ''export ${n}="${toString v}"'') envVars;
+  setupEnvVars = builtins.concatStringsSep "\n" envVarDefs;
+
+  setupEnv = ''
+    source ${paperless}/share/paperless/setup-env.sh
+    ${setupEnvVars}
+    ${optionalString (dataDir != null) ''
+      mkdir -p "$PAPERLESS_CONSUMPTION_DIR" \
+               "$PAPERLESS_MEDIADIR" \
+               "$PAPERLESS_STATICDIR" \
+               "$PAPERLESS_DBDIR"
+    ''}
+  '';
+
+  runPaperless = writers.writeBash "paperless" ''
+    set -e
+    ${setupEnv}
+    ${extraCmds}
+    exec python $paperlessSrc/manage.py "$@"
+  '';
+in
+  runPaperless // {
+    inherit paperless setupEnv;
+  }
diff --git a/nixpkgs/pkgs/applications/office/paperwork/backend.nix b/nixpkgs/pkgs/applications/office/paperwork/backend.nix
new file mode 100644
index 000000000000..af0d4c430590
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/paperwork/backend.nix
@@ -0,0 +1,48 @@
+{ buildPythonPackage, lib, fetchFromGitLab
+
+, isPy3k, isPyPy
+
+, pyenchant, simplebayes, pillow, pycountry, whoosh, termcolor
+, python-Levenshtein, pygobject3, pyocr, natsort, libinsane
+, distro
+
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "paperwork-backend";
+  version = "1.3.1";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    repo = "paperwork";
+    group = "World";
+    owner = "OpenPaperwork";
+    rev = version;
+    sha256 = "1219yz8z4r1yn6miq8zc2z1m1lnhf3dmkhwfw23n05bg842nvg65";
+  };
+
+  sourceRoot = "source/paperwork-backend";
+
+  # Python 2.x is not supported.
+  disabled = !isPy3k && !isPyPy;
+
+  patchPhase = ''
+    echo 'version = "${version}"' > paperwork_backend/_version.py
+  '';
+
+  preCheck = "\"$out/bin/paperwork-shell\" chkdeps paperwork_backend";
+
+  propagatedBuildInputs = [
+    pyenchant simplebayes pillow pycountry whoosh termcolor
+    python-Levenshtein libinsane pygobject3 pyocr natsort
+    pkgs.poppler_gi pkgs.gtk3 distro
+  ];
+
+  meta = {
+    description = "Backend part of Paperwork (Python API, no UI)";
+    homepage = "https://openpaper.work/";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ aszlig symphorien ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/paperwork/default.nix b/nixpkgs/pkgs/applications/office/paperwork/default.nix
new file mode 100644
index 000000000000..102c3cd2564c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/paperwork/default.nix
@@ -0,0 +1,102 @@
+{ lib
+, python3Packages
+, gtk3
+, cairo
+, aspellDicts
+, buildEnv
+, gnome3
+, librsvg
+, xvfb_run
+, dbus
+, libnotify
+, wrapGAppsHook
+}:
+
+python3Packages.buildPythonApplication rec {
+  inherit (python3Packages.paperwork-backend) version src;
+  pname = "paperwork";
+
+  sourceRoot = "source/paperwork-gtk";
+
+  # Patch out a few paths that assume that we're using the FHS:
+  postPatch = ''
+    themeDir="$(echo "${gnome3.adwaita-icon-theme}/share/icons/"*)"
+    sed -i -e "s,/usr/share/icons/gnome,$themeDir," src/paperwork/deps.py
+
+    sed -i -e 's,sys\.prefix,"",g' \
+      src/paperwork/frontend/aboutdialog/__init__.py \
+      src/paperwork/frontend/mainwindow/__init__.py \
+      setup.py
+
+    sed -i -e '/^UI_FILES_DIRS = \[/,/^\]$/ {
+      c UI_FILES_DIRS = ["'"$out/share/paperwork"'"]
+    }' src/paperwork/frontend/util/__init__.py
+
+    sed -i -e '/^LOCALE_PATHS = \[/,/^\]$/ {
+      c LOCALE_PATHS = ["'"$out/share"'"]
+    }' src/paperwork/paperwork.py
+
+    sed -i -e 's/"icon"/"icon-name"/g' \
+      src/paperwork/frontend/mainwindow/mainwindow.glade
+
+    sed -i -e 's/"logo"/"logo-icon-name"/g' \
+      src/paperwork/frontend/aboutdialog/aboutdialog.glade
+
+    cat - ../AUTHORS.py > src/paperwork/_version.py <<EOF
+    # -*- coding: utf-8 -*-
+    version = "${version}"
+    authors_code=""
+    EOF
+  '';
+
+  ASPELL_CONF = "dict-dir ${buildEnv {
+    name = "aspell-all-dicts";
+    paths = lib.collect lib.isDerivation aspellDicts;
+  }}/lib/aspell";
+
+  postInstall = ''
+    # paperwork-shell needs to be re-wrapped with access to paperwork
+    cp ${python3Packages.paperwork-backend}/bin/.paperwork-shell-wrapped $out/bin/paperwork-shell
+    # install desktop files and icons
+    XDG_DATA_HOME=$out/share $out/bin/paperwork-shell install
+  '';
+
+  checkInputs = [ xvfb_run dbus.daemon ] ++ (with python3Packages; [ paperwork-backend ]);
+
+  nativeBuildInputs = [
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gnome3.adwaita-icon-theme
+    libnotify
+    librsvg
+  ];
+
+  # A few parts of chkdeps need to have a display and a dbus session, so we not
+  # only need to run a virtual X server + dbus but also have a large enough
+  # resolution, because the Cairo test tries to draw a 200x200 window.
+  preCheck = ''
+    xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
+      --config-file=${dbus.daemon}/share/dbus-1/session.conf \
+      paperwork-shell chkdeps paperwork
+  '';
+
+  propagatedBuildInputs = with python3Packages; [
+    paperwork-backend
+    pypillowfight
+    gtk3
+    cairo
+    pyxdg
+    dateutil
+    setuptools
+  ];
+
+  meta = {
+    description = "A personal document manager for scanned documents";
+    homepage = "https://openpaper.work/";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ aszlig symphorien ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/pinpoint/default.nix b/nixpkgs/pkgs/applications/office/pinpoint/default.nix
new file mode 100644
index 000000000000..ce175d8517f5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/pinpoint/default.nix
@@ -0,0 +1,22 @@
+{ fetchurl, stdenv, pkgconfig, autoconf, automake, clutter, clutter-gst
+, gdk-pixbuf, cairo, clutter-gtk }:
+
+stdenv.mkDerivation rec {
+  pname = "pinpoint";
+  version = "0.1.8";
+  src = fetchurl {
+    url = "http://ftp.gnome.org/pub/GNOME/sources/pinpoint/0.1/${pname}-${version}.tar.xz";
+    sha256 = "1jp8chr9vjlpb5lybwp5cg6g90ak5jdzz9baiqkbg0anlg8ps82s";
+  };
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ autoconf automake clutter clutter-gst gdk-pixbuf
+                  cairo clutter-gtk ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://wiki.gnome.org/action/show/Apps/Pinpoint";
+    description = "A tool for making hackers do excellent presentations";
+    license = licenses.lgpl21;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ pSub ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/planner/default.nix b/nixpkgs/pkgs/applications/office/planner/default.nix
new file mode 100644
index 000000000000..f33946d6b5a2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/planner/default.nix
@@ -0,0 +1,79 @@
+{ stdenv
+, fetchFromGitLab
+, pkgconfig
+, intltool
+, automake111x
+, autoconf
+, libtool
+, gnome2
+, libxslt
+, python2
+}:
+
+let version = "unstable-2019-02-13";
+
+in stdenv.mkDerivation {
+  pname = "planner";
+  inherit version;
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "GNOME";
+    repo = "planner";
+    rev = "76d31defae4979aa51dd37e8888f61e9a6a51367";
+    sha256 = "0lbch4drg6005216hgcys93rq92p7zd20968x0gk254kckd9ag5w";
+  };
+
+  nativeBuildInputs = with gnome2; [
+    pkgconfig
+    intltool
+    automake111x
+    autoconf
+    libtool
+    gnome-common
+    gtk-doc
+    scrollkeeper
+  ];
+
+  buildInputs = with gnome2; [
+    GConf
+    gtk
+    libgnomecanvas
+    libgnomeui
+    libglade
+    libxslt
+    python2.pkgs.pygtk
+  ];
+
+  # glib-2.62 deprecations
+  NIX_CFLAGS_COMPILE = "-DGLIB_DISABLE_DEPRECATION_WARNINGS";
+
+  preConfigure = ''./autogen.sh'';
+  configureFlags = [
+    "--enable-python"
+    "--enable-python-plugin"
+    ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://wiki.gnome.org/Apps/Planner";
+    description = "Project management application for GNOME";
+    longDescription = ''
+      Planner is the GNOME project management tool.
+      Its goal is to be an easy-to-use no-nonsense cross-platform
+      project management application.
+
+      Planner is a GTK application written in C and licensed under the
+      GPLv2 or any later version. It can store its data in either xml
+      files or in a postgresql database. Projects can also be printed
+      to PDF or exported to HTML for easy viewing from any web browser.
+
+      Planner was originally created by Richard Hult and Mikael Hallendal
+      at Imendio.
+    '';
+    license = licenses.gpl2Plus;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ rasendubi amiloradovsky ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/portfolio/default.nix b/nixpkgs/pkgs/applications/office/portfolio/default.nix
new file mode 100644
index 000000000000..53f3b8a3150a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/portfolio/default.nix
@@ -0,0 +1,67 @@
+{ stdenv
+, autoPatchelfHook
+, fetchurl
+, glibc
+, gcc-unwrapped
+, gtk3
+, jre
+, libsecret
+, makeDesktopItem
+, webkitgtk
+, wrapGAppsHook
+}:
+let
+  desktopItem = makeDesktopItem {
+    name = "Portfolio";
+    exec = "portfolio";
+    icon = "portfolio";
+    comment = "Calculate Investment Portfolio Performance";
+    desktopName = "Portfolio Performance";
+    categories = "Office;";
+  };
+
+  runtimeLibs = stdenv.lib.makeLibraryPath [ gtk3 webkitgtk ];
+in
+stdenv.mkDerivation rec {
+  pname = "PortfolioPerformance";
+  version = "0.46.3";
+
+  src = fetchurl {
+    url = "https://github.com/buchen/portfolio/releases/download/${version}/PortfolioPerformance-${version}-linux.gtk.x86_64.tar.gz";
+    sha256 = "0263v0ymqmf7kcwys4smwx1p1gh8d20dh10canjfqgl4c5lfx966";
+  };
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glibc
+    gcc-unwrapped
+    libsecret
+  ];
+
+  installPhase = ''
+    mkdir -p $out/portfolio
+    cp -av ./* $out/portfolio
+
+    makeWrapper $out/portfolio/PortfolioPerformance $out/bin/portfolio \
+      --prefix LD_LIBRARY_PATH : "${runtimeLibs}" \
+      --prefix PATH : ${jre}/bin
+
+    # Create desktop item
+    mkdir -p $out/share/applications
+    cp ${desktopItem}/share/applications/* $out/share/applications
+    mkdir -p $out/share/pixmaps
+    ln -s $out/portfolio/icon.xpm $out/share/pixmaps/portfolio.xpm
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A simple tool to calculate the overall performance of an investment portfolio.";
+    homepage = "https://www.portfolio-performance.info/";
+    license = licenses.epl10;
+    maintainers = with maintainers; [ elohmeier ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/pympress/default.nix b/nixpkgs/pkgs/applications/office/pympress/default.nix
new file mode 100644
index 000000000000..b4307eb286e5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/pympress/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, python3Packages
+, wrapGAppsHook
+, xvfb_run
+, gtk3
+, gobject-introspection
+, libcanberra-gtk3
+, dbus
+, poppler_gi
+, python3
+ }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "pympress";
+  version = "1.5.1";
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "173d9scf2z29qg279jf33zcl7sgc3wp662fgpm943bn9667q18wf";
+  };
+
+  nativeBuildInputs = [
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    gobject-introspection
+    libcanberra-gtk3
+    poppler_gi
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
+    pycairo
+    pygobject3
+    python-vlc
+    watchdog
+  ];
+
+  doCheck = false; # there are no tests
+
+  meta = with lib; {
+    description = "Simple yet powerful PDF reader designed for dual-screen presentations";
+    license = licenses.gpl2Plus;
+    homepage = "https://cimbali.github.io/pympress/";
+    maintainers = [ maintainers.tbenst ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/qnotero/default.nix b/nixpkgs/pkgs/applications/office/qnotero/default.nix
new file mode 100644
index 000000000000..7821b041064a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/qnotero/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, python3Packages, wrapQtAppsHook }:
+
+python3Packages.buildPythonPackage rec {
+  pname = "qnotero";
+
+  version = "2.1.1";
+
+  src = fetchFromGitHub {
+    owner = "ealbiter";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "16ckcjxa3dgmz1y8gd57q2h84akra3j4bgl4fwv4m05bam3ml1xs";
+  };
+
+  propagatedBuildInputs = [ python3Packages.pyqt5 wrapQtAppsHook ];
+
+  patchPhase = ''
+      substituteInPlace ./setup.py \
+        --replace "/usr/share" "usr/share"
+
+      substituteInPlace ./libqnotero/_themes/light.py \
+         --replace "/usr/share" "$out/usr/share"
+  '';
+
+  preFixup = ''
+    wrapQtApp "$out"/bin/qnotero
+  '';
+
+  meta = {
+    description = "Quick access to Zotero references";
+    homepage = "http://www.cogsci.nl/software/qnotero";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.nico202 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/qownnotes/default.nix b/nixpkgs/pkgs/applications/office/qownnotes/default.nix
new file mode 100644
index 000000000000..99b021429a65
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/qownnotes/default.nix
@@ -0,0 +1,27 @@
+{  mkDerivation, lib, fetchurl, qmake, qttools, qtbase, qtsvg, qtdeclarative, qtxmlpatterns, qtwayland, qtwebsockets, stdenv /* for isLinux */ }:
+
+mkDerivation rec {
+  pname = "qownnotes";
+  version = "20.2.5";
+
+  src = fetchurl {
+    url = "https://download.tuxfamily.org/${pname}/src/${pname}-${version}.tar.xz";
+    # Can grab official version like so:
+    # $ curl https://download.tuxfamily.org/qownnotes/src/qownnotes-20.2.5.tar.xz.sha256
+    sha256 = "c26d2a86a521cd243ec0a4788e7627e91cb5877dace73d93dd7d35dd02e9e4c5";
+  };
+
+  nativeBuildInputs = [ qmake qttools ];
+  buildInputs = [
+    qtbase qtsvg qtdeclarative qtxmlpatterns qtwebsockets
+  ] ++ lib.optional stdenv.isLinux qtwayland;
+
+  meta = with lib; {
+    description = "Plain-text file notepad and todo-list manager with markdown support and ownCloud / Nextcloud integration";
+
+    homepage = "https://www.qownnotes.org/";
+    platforms = platforms.all;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/scribus/default.nix b/nixpkgs/pkgs/applications/office/scribus/default.nix
new file mode 100644
index 000000000000..779a5cb0fea3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/scribus/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl, pkgconfig, freetype, lcms, libtiff, libxml2
+, libart_lgpl, qt4, python2, cups, fontconfig, libjpeg
+, zlib, libpng, xorg, cairo, podofo, hunspell, boost, cmake, imagemagick, ghostscript }:
+
+let
+  icon = fetchurl {
+    url = "https://gist.githubusercontent.com/ejpcmac/a74b762026c9bc4000be624c3d085517/raw/18edc497c5cb6fdeef1c8aede37a0ee68413f9d3/scribus-icon-centered.svg";
+    sha256 = "0hq3i7c2l50445an9glhhg47kj26y16svfajc6naqn307ph9vzc3";
+  };
+
+  pythonEnv = python2.withPackages(ps: [ps.tkinter ps.pillow]);
+in stdenv.mkDerivation rec {
+  pname = "scribus";
+  version = "1.4.8";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${pname}/${pname}/${pname}-${version}.tar.xz";
+    sha256 = "0bq433myw6h1siqlsakxv6ghb002rp3mfz5k12bg68s0k6skn992";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ pkgconfig cmake ];
+  buildInputs = with xorg;
+    [ freetype lcms libtiff libxml2 libart_lgpl qt4
+      pythonEnv cups fontconfig
+      libjpeg zlib libpng podofo hunspell cairo
+      boost # for internal 2geom library
+      libXaw libXext libX11 libXtst libXi libXinerama
+      libpthreadstubs libXau libXdmcp
+      imagemagick # To build the icon
+    ];
+
+  postPatch = ''
+    substituteInPlace scribus/util_ghostscript.cpp \
+      --replace 'QString gsName("gs");' \
+                'QString gsName("${ghostscript}/bin/gs");'
+  '';
+
+  postInstall = ''
+    for i in 16 24 48 64 96 128 256 512; do
+      mkdir -p $out/share/icons/hicolor/''${i}x''${i}/apps
+      convert -background none -resize ''${i}x''${i} ${icon} $out/share/icons/hicolor/''${i}x''${i}/apps/scribus.png
+    done
+  '';
+
+  meta = {
+    maintainers = [ stdenv.lib.maintainers.marcweber ];
+    platforms = stdenv.lib.platforms.linux;
+    description = "Desktop Publishing (DTP) and Layout program for Linux";
+    homepage = "https://www.scribus.net";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/scribus/unstable.nix b/nixpkgs/pkgs/applications/office/scribus/unstable.nix
new file mode 100644
index 000000000000..ff69329140bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/scribus/unstable.nix
@@ -0,0 +1,128 @@
+{ boost
+, cairo
+, cmake
+, cups
+, fetchpatch
+, fetchurl
+, fontconfig
+, freetype
+, harfbuzzFull
+, hunspell
+, lcms2
+, libjpeg
+, libtiff
+, libxml2
+, mkDerivation
+, pixman
+, pkgconfig
+, podofo
+, poppler
+, poppler_data
+, python2
+, qtbase
+, qtimageformats
+, qttools
+, stdenv
+}:
+
+let
+  pythonEnv = python2.withPackages (
+    ps: [
+      ps.pillow
+      ps.tkinter
+    ]
+  );
+in
+mkDerivation rec {
+  pname = "scribus";
+
+  version = "1.5.5";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${pname}/${pname}-devel/${pname}-${version}.tar.xz";
+    sha256 = "0w9zzsiaq3f7vpxybk01c9z2b4qqg67mzpyfb2gjchz8dhdb423r";
+  };
+
+  patches = [
+    # Poppler patches from
+    # https://github.com/scribusproject/scribus/commits/master/scribus/plugins/import/pdf
+
+    # fix build with Poppler 0.82
+    (fetchpatch {
+      url = "https://github.com/scribusproject/scribus/commit/6db15ec1af791377b28981601f8c296006de3c6f.patch";
+      sha256 = "1y6g3avmsmiyaj8xry1syaz8sfznsavh6l2rp13pj2bwsxfcf939";
+    })
+    # fix build with Poppler 0.83
+    (fetchpatch {
+      url = "https://github.com/scribusproject/scribus/commit/b51c2bab4d57d685f96d427d6816bdd4ecfb4674.patch";
+      sha256 = "031yy9ylzksczfnpcc4glfccz025sn47zg6fqqzjnqqrc16bgdlx";
+    })
+    # fix build with Poppler 0.84
+    # TODO: Remove patches with scribus version > 1.5.5 as it should be fixed upstream in next version
+    (fetchpatch {
+      url = "https://github.com/scribusproject/scribus/commit/3742559924136c2471ab15081c5b600dd5feaeb0.patch";
+      sha256 = "1d72h7jbajy9w83bnxmhn1ca947hpfxnfbmq30g5ljlj824c7y9y";
+    })
+    # Formating changes needed for the Poppler 0.86 patch to apply
+    (fetchpatch {
+      url = "https://github.com/scribusproject/scribus/commit/58613b5ce44335f202a55ab15ed303d97fe274cb.patch";
+      sha256 = "16n3wch2mkabgkb06iywggdkckr4idrw4in56k5jh2jqjl0ra2db";
+    })
+    (fetchpatch {
+      url = "https://github.com/scribusproject/scribus/commit/24aba508aac3f672f5f8cd629744a3b71e58ec37.patch";
+      sha256 = "0g6l3qc75wiykh59059ajraxjczh11wkm68942d0skl144i893rr";
+      includes = [ "scribus/plugins/import/pdf/*" ];
+    })
+    # fix build with Poppler 0.86
+    (fetchpatch {
+      url = "https://github.com/scribusproject/scribus/commit/67f8771aaff2f55d61b8246f420e762f4b526944.patch";
+      sha256 = "1lszpzlpgdhm79nywvqji25aklfhzb2qfsfiyld7yv51h82zwp77";
+    })
+  ];
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [
+    cmake
+    pkgconfig
+  ];
+
+  buildInputs = [
+    boost
+    cairo
+    cups
+    fontconfig
+    freetype
+    harfbuzzFull
+    hunspell
+    lcms2
+    libjpeg
+    libtiff
+    libxml2
+    pixman
+    podofo
+    poppler
+    poppler_data
+    pythonEnv
+    qtbase
+    qtimageformats
+    qttools
+  ];
+
+  meta = with stdenv.lib; {
+    maintainers = with maintainers; [
+      erictapen
+      kiwi
+    ];
+    platforms = platforms.linux;
+    description = "Desktop Publishing (DTP) and Layout program for Linux";
+    homepage = "https://www.scribus.net";
+    # There are a lot of licenses... https://github.com/scribusproject/scribus/blob/20508d69ca4fc7030477db8dee79fd1e012b52d2/COPYING#L15-L19
+    license = with licenses; [
+      bsd3
+      gpl2
+      mit
+      publicDomain
+    ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/skanlite/default.nix b/nixpkgs/pkgs/applications/office/skanlite/default.nix
new file mode 100644
index 000000000000..3c97c145c74b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/skanlite/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, mkDerivation, fetchurl, cmake, extra-cmake-modules, qtbase,
+  kcoreaddons, kdoctools, ki18n, kio, kxmlgui, ktextwidgets,
+  libksane
+}:
+
+let
+  minorVersion = "2.0";
+in mkDerivation rec {
+  name = "skanlite-2.0.1";
+
+  src = fetchurl {
+    url    = "mirror://kde/stable/skanlite/${minorVersion}/${name}.tar.xz";
+    sha256 = "0dh2v8029gkhcf3pndcxz1zk2jgpihgd30lmplgirilxdq9l2i9v";
+  };
+
+  nativeBuildInputs = [ cmake kdoctools extra-cmake-modules ];
+
+  buildInputs = [
+    qtbase
+    kcoreaddons kdoctools ki18n kio kxmlgui ktextwidgets
+    libksane
+  ];
+
+  meta = with stdenv.lib; {
+    description = "KDE simple image scanning application";
+    homepage    = "http://www.kde.org/applications/graphics/skanlite/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ pshendry ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/skrooge/default.nix b/nixpkgs/pkgs/applications/office/skrooge/default.nix
new file mode 100644
index 000000000000..66d028144ff2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/skrooge/default.nix
@@ -0,0 +1,41 @@
+{ mkDerivation, lib, fetchpatch, fetchurl,
+  cmake, extra-cmake-modules, qtwebengine, qtscript, grantlee,
+  kxmlgui, kwallet, kparts, kdoctools, kjobwidgets, kdesignerplugin,
+  kiconthemes, knewstuff, sqlcipher, qca-qt5, kactivities, karchive,
+  kguiaddons, knotifyconfig, krunner, kwindowsystem, libofx, shared-mime-info
+}:
+
+mkDerivation rec {
+  pname = "skrooge";
+  version = "2.22.1";
+
+  src = fetchurl {
+    url = "http://download.kde.org/stable/skrooge/${pname}-${version}.tar.xz";
+    sha256 = "194vwnc2fi7cgdhasxpr1gxjqqsiqadhadvv43d0lxaxys6f360h";
+  };
+
+  nativeBuildInputs = [
+    cmake extra-cmake-modules kdoctools shared-mime-info
+  ];
+
+  buildInputs = [
+    qtwebengine qtscript grantlee kxmlgui kwallet kparts
+    kjobwidgets kdesignerplugin kiconthemes knewstuff sqlcipher qca-qt5
+    kactivities karchive kguiaddons knotifyconfig krunner kwindowsystem libofx
+  ];
+
+  # SKG_DESIGNER must be used to generate the needed library for QtDesigner.
+  # This is needed ONLY for developers. So NOT NEEDED for end user.
+  # Source: https://forum.kde.org/viewtopic.php?f=210&t=143375#p393675
+  cmakeFlags = [
+    "-DSKG_DESIGNER=OFF"
+    "-DSKG_WEBENGINE=ON"
+  ];
+
+  meta = with lib; {
+    description = "A personal finances manager, powered by KDE";
+    license = with licenses; [ gpl3 ];
+    maintainers = with maintainers; [ joko ];
+    homepage = "https://skrooge.org/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/softmaker/desktop_items.nix b/nixpkgs/pkgs/applications/office/softmaker/desktop_items.nix
new file mode 100644
index 000000000000..614c6574faa2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/softmaker/desktop_items.nix
@@ -0,0 +1,42 @@
+{ makeDesktopItem, pname, suiteName }:
+
+{
+  planmaker = makeDesktopItem {
+    name = "${pname}-planmaker";
+    desktopName = "${suiteName} PlanMaker";
+    icon = "${pname}-pml";
+    categories = "Office;";
+    exec = "${pname}-planmaker %F";
+    mimeType = "application/x-pmd;application/x-pmdx;application/x-pmv;application/excel;application/x-excel;application/x-ms-excel;application/x-msexcel;application/x-sylk;application/x-xls;application/xls;application/vnd.ms-excel;application/vnd.stardivision.calc;application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;application/vnd.openxmlformats-officedocument.spreadsheetml.template;application/vnd.ms-excel.sheet.macroenabled.12;application/vnd.ms-excel.template.macroEnabled.12;application/x-dif;text/spreadsheet;text/csv;application/x-prn;application/vnd.ms-excel.sheet.binary.macroenabled.12;";
+    extraEntries = ''
+      TryExec=${pname}-planmaker
+      StartupWMClass=pm
+    '';
+  };
+
+  presentations = makeDesktopItem {
+    name = "${pname}-presentations";
+    desktopName = "${suiteName} Presentations";
+    icon = "${pname}-prl";
+    categories = "Office;";
+    exec = "${pname}-presentations %F";
+    mimeType = "application/x-prdx;application/x-prvx;application/x-prsx;application/x-prd;application/x-prv;application/x-prs;application/ppt;application/mspowerpoint;application/vnd.ms-powerpoint;application/vnd.openxmlformats-officedocument.presentationml.presentation;application/vnd.ms-powerpoint.presentation.macroenabled.12;application/vnd.openxmlformats-officedocument.presentationml.template;application/vnd.ms-powerpoint.template.macroEnabled.12;application/vnd.ms-powerpoint.slideshow.macroenabled.12;application/vnd.openxmlformats-officedocument.presentationml.slideshow;";
+    extraEntries = ''
+      TryExec=${pname}-presentations
+      StartupWMClass=pr
+    '';
+  };
+
+  textmaker = makeDesktopItem {
+    name = "${pname}-textmaker";
+    desktopName = "${suiteName} TextMaker";
+    icon = "${pname}-tml";
+    categories = "Office;";
+    exec = "${pname}-textmaker %F";
+    mimeType = "application/x-tmdx;application/x-tmvx;application/x-tmd;application/x-tmv;application/msword;application/vnd.ms-word;application/x-doc;text/rtf;application/rtf;application/vnd.oasis.opendocument.text;application/vnd.oasis.opendocument.text-template;application/vnd.stardivision.writer;application/vnd.sun.xml.writer;application/vnd.sun.xml.writer.template;application/vnd.openxmlformats-officedocument.wordprocessingml.document;application/vnd.ms-word.document.macroenabled.12;application/vnd.openxmlformats-officedocument.wordprocessingml.template;application/vnd.ms-word.template.macroenabled.12;application/x-pocket-word;application/x-dbf;application/msword-template;";
+    extraEntries = ''
+      TryExec=${pname}-textmaker
+      StartupWMClass=tm
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/softmaker/freeoffice.nix b/nixpkgs/pkgs/applications/office/softmaker/freeoffice.nix
new file mode 100644
index 000000000000..d9f901ff4635
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/softmaker/freeoffice.nix
@@ -0,0 +1,15 @@
+{ callPackage, fetchurl, ... } @ args:
+
+callPackage ./generic.nix (args // rec {
+  pname = "freeoffice";
+  version = "976";
+  edition = "2018";
+  suiteName = "FreeOffice";
+
+  src = fetchurl {
+    url = "https://www.softmaker.net/down/softmaker-freeoffice-${version}-amd64.tgz";
+    sha256 = "13yh4lyqakbdqf4r8vw8imy5gwpfva697iqfd85qmp3wimqvzskl";
+  };
+
+  archive = "freeoffice${edition}.tar.lzma";
+})
diff --git a/nixpkgs/pkgs/applications/office/softmaker/generic.nix b/nixpkgs/pkgs/applications/office/softmaker/generic.nix
new file mode 100644
index 000000000000..82ac2b58f68a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/softmaker/generic.nix
@@ -0,0 +1,121 @@
+{ stdenv, fetchurl, autoPatchelfHook, makeDesktopItem, makeWrapper
+
+  # Dynamic Libraries
+, curl, libGL, libX11, libXext, libXmu, libXrandr, libXrender
+
+  # For fixing up execution of /bin/ls, which is necessary for
+  # product unlocking.
+, coreutils, libredirect
+
+, pname, version, edition, suiteName, src, archive
+
+, ...
+}:
+
+let
+  desktopItems = import ./desktop_items.nix {
+    inherit makeDesktopItem pname suiteName;
+  };
+  shortEdition = builtins.substring 2 2 edition;
+in stdenv.mkDerivation rec {
+  inherit pname version edition shortEdition src;
+  nativeBuildInputs = [
+    autoPatchelfHook
+    makeWrapper
+  ];
+
+  buildInputs = [
+    curl
+    libGL
+    libX11
+    libXext
+    libXmu
+    libXrandr
+    libXrender
+    stdenv.cc.cc.lib
+  ];
+
+  dontBuild = true;
+  dontConfigure = true;
+
+  unpackPhase = ''
+    runHook preUnpack
+
+    mkdir installer
+    tar -C installer -xf ${src}
+    mkdir ${pname}
+    tar -C ${pname} -xf installer/${archive}
+
+    runHook postUnpack
+  '';
+
+  installPhase = let
+    # SoftMaker/FreeOffice collects some system information upon
+    # unlocking the product. But in doing so, it attempts to execute
+    # /bin/ls. If the execve syscall fails, the whole unlock
+    # procedure fails. This works around that by rewriting /bin/ls
+    # to the proper path.
+    #
+    # SoftMaker Office restarts itself upon some operations, such
+    # changing the theme and unlocking. Unfortunately, we do not
+    # have control over its environment then and it will fail
+    # with an error.
+    lsIntercept = ''
+      --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
+      --set NIX_REDIRECTS "/bin/ls=${coreutils}/bin/ls"
+    '';
+  in ''
+    runHook preInstall
+
+    mkdir -p $out/share
+    cp -r ${pname} $out/share/${pname}${edition}
+
+    # Wrap rather than symlinking, so that the programs can determine
+    # their resource path.
+    mkdir -p $out/bin
+    makeWrapper $out/share/${pname}${edition}/planmaker $out/bin/${pname}-planmaker \
+      ${lsIntercept}
+    makeWrapper $out/share/${pname}${edition}/presentations $out/bin/${pname}-presentations \
+      ${lsIntercept}
+    makeWrapper $out/share/${pname}${edition}/textmaker $out/bin/${pname}-textmaker \
+      ${lsIntercept}
+
+    for size in 16 32 48 64 96 128 256 512 1024; do
+      mkdir -p $out/share/icons/hicolor/''${size}x''${size}/apps
+
+      for app in pml prl tml; do
+        ln -s $out/share/${pname}${edition}/icons/''${app}_''${size}.png \
+          $out/share/icons/hicolor/''${size}x''${size}/apps/${pname}-''${app}.png
+      done
+
+      mkdir -p $out/share/icons/hicolor/''${size}x''${size}/mimetypes
+
+      for mimetype in pmd prd tmd; do
+        ln -s $out/share/${pname}${edition}/icons/''${mimetype}_''${size}.png \
+          $out/share/icons/hicolor/''${size}x''${size}/mimetypes/application-x-''${mimetype}.png
+      done
+    done
+
+    # freeoffice 973 misses the 96x96 application icons, giving broken symbolic links
+    # remove broken symbolic links
+    find $out -xtype l -ls -exec rm {} \;
+
+    # Add desktop items
+    ${desktopItems.planmaker.buildCommand}
+    ${desktopItems.presentations.buildCommand}
+    ${desktopItems.textmaker.buildCommand}
+
+    # Add mime types
+    install -D -t $out/share/mime/packages ${pname}/mime/softmaker-*office*${shortEdition}.xml
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An office suite with a word processor, spreadsheet and presentation program";
+    homepage = "https://www.softmaker.com/";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ danieldk ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/softmaker/softmaker_office.nix b/nixpkgs/pkgs/applications/office/softmaker/softmaker_office.nix
new file mode 100644
index 000000000000..b04ef89769c6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/softmaker/softmaker_office.nix
@@ -0,0 +1,15 @@
+{ callPackage, fetchurl, ... } @ args:
+
+callPackage ./generic.nix (args // rec {
+  pname = "softmaker-office";
+  version = "1014";
+  edition = "2021";
+  suiteName = "SoftMaker Office";
+
+  src = fetchurl {
+    url = "https://www.softmaker.net/down/softmaker-office-${edition}-${version}-amd64.tgz";
+    sha256 = "0wqaxng6s7lxwz6v2j6y1m5h4g4v63m0lscj7l2fpx5ksjlamp55";
+  };
+
+  archive = "office${edition}.tar.lzma";
+})
diff --git a/nixpkgs/pkgs/applications/office/spice-up/default.nix b/nixpkgs/pkgs/applications/office/spice-up/default.nix
new file mode 100644
index 000000000000..fed00000af3a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/spice-up/default.nix
@@ -0,0 +1,77 @@
+{ stdenv
+, fetchFromGitHub
+, fetchpatch
+, cmake
+, gdk-pixbuf
+, gtk3
+, vala
+, gettext
+, ninja
+, pantheon
+, pkgconfig
+, json-glib
+, libgudev
+, libevdev
+, libgee
+, libsoup
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "spice-up";
+  version = "1.8.2";
+
+  src = fetchFromGitHub {
+    owner = "Philip-Scott";
+    repo = "Spice-up";
+    rev = version;
+    sha256 = "1pix911l4ddn50026a5sbpqfzba6fmw40m1yzbknmkgd2ny28f0m";
+  };
+
+  USER = "pbuilder";
+
+  nativeBuildInputs = [
+    cmake
+    gettext
+    ninja
+    pkgconfig
+    vala
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    pantheon.elementary-icon-theme
+    pantheon.granite
+    gdk-pixbuf
+    gtk3
+    json-glib
+    libevdev
+    libgee
+    libgudev
+    libsoup
+  ];
+
+  patches = [
+    # Fix build with Vala 0.46
+    # https://github.com/Philip-Scott/Spice-up/pull/288
+    (fetchpatch {
+      url = "https://patch-diff.githubusercontent.com/raw/Philip-Scott/Spice-up/pull/288.patch";
+      sha256 = "0kyfd8v2sk4cvcq1j8ysp64snfjhnpr3iz7l04lx7if7h372xj39";
+    })
+  ];
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Create simple and beautiful presentations";
+    homepage = "https://github.com/Philip-Scott/Spice-up";
+    maintainers = with maintainers; [ samdroid-apps xiorcale ] ++ pantheon.maintainers;
+    platforms = platforms.linux;
+    # The COPYING file has GPLv3; some files have GPLv2+ and some have GPLv3+
+    license = licenses.gpl3Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/tagainijisho/default.nix b/nixpkgs/pkgs/applications/office/tagainijisho/default.nix
new file mode 100644
index 000000000000..d826b9f54f6a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/tagainijisho/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, qt4, cmake, sqlite }:
+
+stdenv.mkDerivation {
+  name = "tagainijisho-1.0.3";
+  src = fetchurl {
+    url = "https://github.com/Gnurou/tagainijisho/releases/download/1.0.3/tagainijisho-1.0.3.tar.gz";
+    sha256 = "0kmg1940yiqfm4vpifyj680283ids4nsij9s750nrshwxiwwbqvg";
+  };
+
+  buildInputs = [ qt4 cmake sqlite ];
+
+  meta = with stdenv.lib; {
+    description = "A free, open-source Japanese dictionary and kanji lookup tool";
+    homepage = "https://www.tagaini.net/";
+    license = with licenses; [
+      /* program */ gpl3Plus
+      /* data */ cc-by-sa-30
+    ];
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ vbgl ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/timetable/default.nix b/nixpkgs/pkgs/applications/office/timetable/default.nix
new file mode 100644
index 000000000000..1f1d44e74948
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/timetable/default.nix
@@ -0,0 +1,62 @@
+{ stdenv
+, fetchFromGitHub
+, glib
+, gtk3
+, vala
+, json-glib
+, libgee
+, meson
+, ninja
+, pkgconfig
+, pantheon
+, python3
+, wrapGAppsHook
+}:
+
+
+stdenv.mkDerivation rec {
+  pname = "timetable";
+  version = "1.1.0";
+
+  src = fetchFromGitHub {
+    owner = "lainsce";
+    repo = pname;
+    rev = version;
+    sha256 = "12c8kdrbz6x2mlrvr0nq9y5khj0qiiwlxf7aqc2z3dnrawjgy1rb";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkgconfig
+    vala
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    json-glib
+    libgee
+    pantheon.granite
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Plot out your own timetable for the week and organize it";
+    homepage = "https://github.com/lainsce/timetable";
+    maintainers = [ maintainers.xiorcale ] ++ pantheon.maintainers;
+    license = licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/timetrap/Gemfile b/nixpkgs/pkgs/applications/office/timetrap/Gemfile
new file mode 100644
index 000000000000..3ce845d11c10
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/timetrap/Gemfile
@@ -0,0 +1,2 @@
+source 'https://rubygems.org'
+gem 'timetrap'
diff --git a/nixpkgs/pkgs/applications/office/timetrap/Gemfile.lock b/nixpkgs/pkgs/applications/office/timetrap/Gemfile.lock
new file mode 100644
index 000000000000..30e48b7febbe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/timetrap/Gemfile.lock
@@ -0,0 +1,19 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    chronic (0.10.2)
+    sequel (5.30.0)
+    sqlite3 (1.4.2)
+    timetrap (1.15.2)
+      chronic (~> 0.10.2)
+      sequel (~> 5.30.0)
+      sqlite3 (~> 1.4.2)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  timetrap
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/applications/office/timetrap/default.nix b/nixpkgs/pkgs/applications/office/timetrap/default.nix
new file mode 100644
index 000000000000..579c9e115be8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/timetrap/default.nix
@@ -0,0 +1,17 @@
+{ lib, bundlerApp, bundlerUpdateScript }:
+
+bundlerApp {
+  pname = "timetrap";
+  gemdir = ./.;
+  exes = [ "t" "timetrap" ];
+
+  passthru.updateScript = bundlerUpdateScript "timetrap";
+
+  meta = with lib; {
+    description = "A simple command line time tracker written in ruby";
+    homepage    = "https://github.com/samg/timetrap";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ jerith666 manveru nicknovitski ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/timetrap/gemset.nix b/nixpkgs/pkgs/applications/office/timetrap/gemset.nix
new file mode 100644
index 000000000000..65ab4ade9e0a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/timetrap/gemset.nix
@@ -0,0 +1,43 @@
+{
+  chronic = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hrdkn4g8x7dlzxwb1rfgr8kw3bp4ywg5l4y4i9c2g5cwv62yvvn";
+      type = "gem";
+    };
+    version = "0.10.2";
+  };
+  sequel = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0gqqnqrfayhwhkp0vy3frv68sgc7klyd6mfisx1j3djjvlyc7hmr";
+      type = "gem";
+    };
+    version = "5.30.0";
+  };
+  sqlite3 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lja01cp9xd5m6vmx99zwn4r7s97r1w5cb76gqd8xhbm1wxyzf78";
+      type = "gem";
+    };
+    version = "1.4.2";
+  };
+  timetrap = {
+    dependencies = ["chronic" "sequel" "sqlite3"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pfg5c3kmh1jfaaszw253bi93ixa6cznqmsafrcpccrdg9r8j2k8";
+      type = "gem";
+    };
+    version = "1.15.2";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/office/todo.txt-cli/default.nix b/nixpkgs/pkgs/applications/office/todo.txt-cli/default.nix
new file mode 100644
index 000000000000..d711440fc340
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/todo.txt-cli/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl }:
+let
+  version = "2.11.0";
+in stdenv.mkDerivation {
+  pname = "todo.txt-cli";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://github.com/ginatrapani/todo.txt-cli/releases/download/v${version}/todo.txt_cli-${version}.tar.gz";
+    sha256 = "0majx8lcvhh8ji54qi0sxr833wchdss95fjc92byd8g3lfz27rsz";
+  };
+
+  installPhase = ''
+    install -vd $out/bin
+    install -vm 755 todo.sh $out/bin
+    install -vd $out/etc/bash_completion.d
+    install -vm 644 todo_completion $out/etc/bash_completion.d/todo
+    install -vd $out/etc/todo
+    install -vm 644 todo.cfg $out/etc/todo/config
+  '';
+
+  meta = {
+    description = "Simple plaintext todo list manager";
+    homepage = "http://todotxt.com";
+    license = stdenv.lib.licenses.gpl3;
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/todoman/default.nix b/nixpkgs/pkgs/applications/office/todoman/default.nix
new file mode 100644
index 000000000000..e18a11a7448b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/todoman/default.nix
@@ -0,0 +1,64 @@
+{ stdenv, python3, glibcLocales, installShellFiles, jq }:
+
+let
+  inherit (python3.pkgs) buildPythonApplication fetchPypi;
+in
+buildPythonApplication rec {
+  pname = "todoman";
+  version = "3.7.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "16brw2zhm5vamffin6qjb0lxjlj3ba40vaficl851nw2xh2mrdhy";
+  };
+
+    LOCALE_ARCHIVE = stdenv.lib.optionalString stdenv.isLinux
+      "${glibcLocales}/lib/locale/locale-archive";
+    LANG = "en_US.UTF-8";
+    LC_TYPE = "en_US.UTF-8";
+
+  nativeBuildInputs = [ installShellFiles ];
+  buildInputs = [ glibcLocales ];
+  propagatedBuildInputs = with python3.pkgs;
+    [ atomicwrites click click-log click-repl configobj humanize icalendar parsedatetime
+      python-dateutil pyxdg tabulate urwid ];
+
+  checkInputs = with python3.pkgs;
+    [ flake8 flake8-import-order freezegun hypothesis pytest pytestrunner pytestcov ];
+
+  makeWrapperArgs = [ "--set LOCALE_ARCHIVE ${glibcLocales}/lib/locale/locale-archive"
+                      "--set CHARSET en_us.UTF-8" ];
+
+  postInstall = ''
+    installShellCompletion --bash contrib/completion/bash/_todo
+    substituteInPlace contrib/completion/zsh/_todo --replace "jq " "${jq}/bin/jq "
+    installShellCompletion --zsh contrib/completion/zsh/_todo
+  '';
+
+  preCheck = ''
+    # Remove one failing test that only checks whether the command line works
+    rm tests/test_main.py
+    rm tests/test_cli.py
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/pimutils/todoman";
+    description = "Standards-based task manager based on iCalendar";
+    longDescription = ''
+      Todoman is a simple, standards-based, cli todo (aka: task) manager. Todos
+      are stored into icalendar files, which means you can sync them via CalDAV
+      using, for example, vdirsyncer.
+
+      Todos are read from individual ics files from the configured directory.
+      This matches the vdir specification.  There’s support for the most common TODO
+      features for now (summary, description, location, due date and priority) for
+      now.  Runs on any Unix-like OS. It’s been tested on GNU/Linux, BSD and macOS.
+      Unsupported fields may not be shown but are never deleted or altered.
+
+      Todoman is part of the pimutils project
+    '';
+    license = licenses.isc;
+    maintainers = with maintainers; [ leenaars ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/treesheets/default.nix b/nixpkgs/pkgs/applications/office/treesheets/default.nix
new file mode 100644
index 000000000000..d316d4287072
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/treesheets/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchFromGitHub, wxGTK, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "treesheets";
+  version = "1.0.1";
+
+  src = fetchFromGitHub {
+    owner  = "aardappel";
+    repo   = "treesheets";
+    rev    = "v${version}";
+    sha256 = "0krsj7i5yr76imf83krz2lmlmpbsvpwqg2d4r0jwxiydjfyj4qr4";
+  };
+
+  buildInputs = [ wxGTK makeWrapper ];
+
+  preConfigure = "cd src";
+
+  postInstall = ''
+    mkdir "$out/share" -p
+    cp -av ../TS "$out/share/libexec"
+
+    mkdir "$out/bin" -p
+    makeWrapper "$out/share/libexec/treesheets" "$out/bin/treesheets"
+
+    mkdir "$out/share/doc" -p
+
+    for f in readme.html docs examples
+    do
+      mv -v "$out/share/libexec/$f" "$out/share/doc"
+      ln -sv "$out/share/doc/$f" "$out/share/libexec/$f"
+    done
+
+    mkdir "$out/share/applications" -p
+    mv -v "$out/share/libexec/treesheets.desktop" "$out/share/applications"
+    substituteInPlace "$out/share/applications/treesheets.desktop" \
+      --replace "Icon=images/treesheets.svg" "Icon=$out/share/libexec/images/treesheets.svg"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Free Form Data Organizer";
+
+    longDescription = ''
+      The ultimate replacement for spreadsheets, mind mappers, outliners,
+      PIMs, text editors and small databases.
+
+      Suitable for any kind of data organization, such as Todo lists,
+      calendars, project management, brainstorming, organizing ideas,
+      planning, requirements gathering, presentation of information, etc.
+    '';
+
+    homepage    = "http://strlen.com/treesheets/";
+    maintainers = with maintainers; [ obadz avery ];
+    platforms   = platforms.linux;
+    license     = licenses.zlib;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/trilium/0001-Use-console-logger-instead-of-rolling-files.patch b/nixpkgs/pkgs/applications/office/trilium/0001-Use-console-logger-instead-of-rolling-files.patch
new file mode 100644
index 000000000000..1a4350ca71a1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/trilium/0001-Use-console-logger-instead-of-rolling-files.patch
@@ -0,0 +1,69 @@
+From 5be803a1171855f976a5b607970fa3949db72181 Mon Sep 17 00:00:00 2001
+From: Christian Kampka <christian@kampka.net>
+Date: Mon, 9 Dec 2019 19:40:27 +0100
+Subject: [PATCH] Use console logger instead of rolling files
+
+---
+ src/services/log.js | 26 +++-----------------------
+ 1 file changed, 3 insertions(+), 23 deletions(-)
+
+diff --git a/src/services/log.js b/src/services/log.js
+index 1514c209..456c3749 100644
+--- a/src/services/log.js
++++ b/src/services/log.js
+@@ -1,35 +1,15 @@
+ "use strict";
+ 
+-const fs = require('fs');
+-const dataDir = require('./data_dir');
+-
+-if (!fs.existsSync(dataDir.LOG_DIR)) {
+-    fs.mkdirSync(dataDir.LOG_DIR, 0o700);
+-}
+-
+-const logger = require('simple-node-logger').createRollingFileLogger({
+-    errorEventName: 'error',
+-    logDirectory: dataDir.LOG_DIR,
+-    fileNamePattern: 'trilium-<DATE>.log',
+-    dateFormat:'YYYY-MM-DD'
+-});
+-
+ function info(message) {
+     // info messages are logged asynchronously
+     setTimeout(() => {
+         console.log(message);
+-
+-        logger.info(message);
+     }, 0);
+ }
+ 
+ function error(message) {
+     message = "ERROR: " + message;
+ 
+-    // we're using .info() instead of .error() because simple-node-logger emits weird error for showError()
+-    // errors are logged synchronously to make sure it doesn't get lost in case of crash
+-    logger.info(message);
+-
+     console.trace(message);
+ }
+ 
+@@ -45,12 +25,12 @@ function request(req) {
+     if (req.url.includes(".js.map") || req.url.includes(".css.map")) {
+         return;
+     }
+-
+-    logger.info(req.method + " " + req.url);
++    if(process.env.DEBUG)
++        console.log(req.method + " " + req.url);
+ }
+ 
+ module.exports = {
+     info,
+     error,
+     request
+-};
+\ No newline at end of file
++};
+-- 
+2.23.0
+
diff --git a/nixpkgs/pkgs/applications/office/trilium/default.nix b/nixpkgs/pkgs/applications/office/trilium/default.nix
new file mode 100644
index 000000000000..17af0b0591b9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/trilium/default.nix
@@ -0,0 +1,119 @@
+{ stdenv, nixosTests, fetchurl, autoPatchelfHook, atomEnv, makeWrapper, makeDesktopItem, gtk3, wrapGAppsHook, zlib, libxkbfile }:
+
+let
+  description = "Trilium Notes is a hierarchical note taking application with focus on building large personal knowledge bases.";
+  desktopItem = makeDesktopItem {
+    name = "Trilium";
+    exec = "trilium";
+    icon = "trilium";
+    comment = description;
+    desktopName = "Trilium Notes";
+    categories = "Office";
+  };
+
+  meta = with stdenv.lib; {
+    inherit description;
+    homepage = "https://github.com/zadam/trilium";
+    license = licenses.agpl3;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ emmanuelrosa dtzWill kampka ];
+  };
+
+  version = "0.42.2";
+
+  desktopSource = {
+    url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-linux-x64-${version}.tar.xz";
+    sha256 = "14vb5a2kad1h8kd1vipgaxpv6rch2fl6j0s2ja0y16xypga82wrx";
+  };
+
+  serverSource = {
+    url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-linux-x64-server-${version}.tar.xz";
+    sha256 = "16dz2i4g0vgwz4fi69lmg261aqb8hs6ipfy004wv73vg46wf1pnv";
+  };
+
+in {
+  
+  trilium-desktop = stdenv.mkDerivation rec {
+    pname = "trilium-desktop";
+    inherit version;
+    inherit meta;
+
+    src = fetchurl desktopSource;
+  
+    # Fetch from source repo, no longer included in release.
+    # (they did special-case icon.png but we want the scalable svg)
+    # Use the version here to ensure we get any changes.
+    trilium_svg = fetchurl {
+      url = "https://raw.githubusercontent.com/zadam/trilium/v${version}/images/trilium.svg";
+      sha256 = "1rgj7pza20yndfp8n12k93jyprym02hqah36fkk2b3if3kcmwnfg";
+    };
+  
+  
+    nativeBuildInputs = [
+      autoPatchelfHook
+      makeWrapper
+      wrapGAppsHook
+    ];
+  
+    buildInputs = atomEnv.packages ++ [ gtk3 ];
+  
+    installPhase = ''
+      mkdir -p $out/bin
+      mkdir -p $out/share/trilium
+      mkdir -p $out/share/{applications,icons/hicolor/scalable/apps}
+  
+      cp -r ./* $out/share/trilium
+      ln -s $out/share/trilium/trilium $out/bin/trilium
+  
+      ln -s ${trilium_svg} $out/share/icons/hicolor/scalable/apps/trilium.svg
+      cp ${desktopItem}/share/applications/* $out/share/applications
+    '';
+  
+    # LD_LIBRARY_PATH "shouldn't" be needed, remove when possible :)
+    preFixup = ''
+      gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : ${atomEnv.libPath})
+    '';
+  
+    dontStrip = true;
+  };
+
+
+  trilium-server = stdenv.mkDerivation rec {
+    pname = "trilium-server";
+    inherit version;
+    inherit meta;
+
+    src = fetchurl serverSource;
+
+    nativeBuildInputs = [
+      autoPatchelfHook
+    ];
+
+    buildInputs = [
+      stdenv.cc.cc.lib
+      zlib
+      libxkbfile
+    ];
+
+    patches = [ ./0001-Use-console-logger-instead-of-rolling-files.patch ] ;
+    installPhase = ''
+      mkdir -p $out/bin
+      mkdir -p $out/share/trilium-server
+
+      cp -r ./* $out/share/trilium-server
+    '';
+
+    postFixup = ''
+      cat > $out/bin/trilium-server <<EOF
+      #!${stdenv.cc.shell}
+      cd $out/share/trilium-server
+      exec ./node/bin/node src/www
+      EOF
+      chmod a+x $out/bin/trilium-server
+    '';
+
+    passthru.tests = {
+      trilium-server = nixosTests.trilium-server;
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/tryton/default.nix b/nixpkgs/pkgs/applications/office/tryton/default.nix
new file mode 100644
index 000000000000..d0c5eb4e7b2e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/tryton/default.nix
@@ -0,0 +1,77 @@
+{ stdenv
+, python3Packages
+, pkgconfig
+, librsvg
+, gobject-introspection
+, atk
+, gtk3
+, gtkspell3
+, gnome3
+, glib
+, goocanvas2
+, gdk-pixbuf
+, pango
+, fontconfig
+, freetype
+, wrapGAppsHook
+}:
+
+with stdenv.lib;
+
+python3Packages.buildPythonApplication rec {
+  pname = "tryton";
+  version = "5.4.2";
+
+  disabled = !python3Packages.isPy3k;
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "1rca19krvmycdhmi1vb4ixwq0cagmrkhbqry4f19b725nlp8cv0q";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    gobject-introspection
+    wrapGAppsHook
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
+    dateutil
+    pygobject3
+    goocalendar
+    pycairo
+  ];
+
+  buildInputs = [
+    atk
+    gdk-pixbuf
+    glib
+    gnome3.adwaita-icon-theme
+    goocanvas2
+    fontconfig
+    freetype
+    gtk3
+    gtkspell3
+    librsvg
+    pango
+  ];
+
+  strictDeps = false;
+
+  doCheck = false;
+
+  meta = {
+    description = "The client of the Tryton application platform";
+    longDescription = ''
+      The client for Tryton, a three-tier high-level general purpose
+      application platform under the license GPL-3 written in Python and using
+      PostgreSQL as database engine.
+
+      It is the core base of a complete business solution providing
+      modularity, scalability and security.
+    '';
+    homepage = "http://www.tryton.org/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ johbo udono ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/trytond/default.nix b/nixpkgs/pkgs/applications/office/trytond/default.nix
new file mode 100644
index 000000000000..c45562a0c8dd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/trytond/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, python2Packages
+, withPostgresql ? true }:
+
+with stdenv.lib;
+
+python2Packages.buildPythonApplication rec {
+  pname = "trytond";
+  version = "4.8.4";
+  src = python2Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "1935045b1b4674de602b4279a9cfd0a14431624a28ccb490234cffecb81fbca7";
+  };
+
+  # Tells the tests which database to use
+  DB_NAME = ":memory:";
+
+  buildInputs = with python2Packages; [
+    mock
+  ];
+  propagatedBuildInputs = with python2Packages; ([
+    dateutil
+    lxml
+    polib
+    python-sql
+    relatorio
+    werkzeug
+    wrapt
+    ipaddress
+
+    # extra dependencies
+    bcrypt
+    pydot
+    python-Levenshtein
+    simplejson
+    cdecimal
+    html2text
+  ] ++ stdenv.lib.optional withPostgresql psycopg2);
+  meta = {
+    description = "The server of the Tryton application platform";
+    longDescription = ''
+      The server for Tryton, a three-tier high-level general purpose
+      application platform under the license GPL-3 written in Python and using
+      PostgreSQL as database engine.
+
+      It is the core base of a complete business solution providing
+      modularity, scalability and security.
+    '';
+    homepage = "http://www.tryton.org/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ udono johbo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/tudu/default.nix b/nixpkgs/pkgs/applications/office/tudu/default.nix
new file mode 100644
index 000000000000..6094e02c5c1b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/tudu/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "tudu";
+  version = "0.10.4";
+
+  src = fetchurl {
+    url = "https://code.meskio.net/tudu/${pname}-${version}.tar.gz";
+    sha256 = "14srqn968ii3sr4v6xc5zzs50dmm9am22lrm57j7n0rhjclwbssy";
+  };
+
+  buildInputs = [ ncurses ];
+
+  preConfigure = stdenv.lib.optionalString stdenv.cc.isClang ''
+    substituteInPlace configure \
+      --replace 'echo "main()' 'echo "int main()'
+  '';
+
+  meta = with stdenv.lib; {
+    description = "ncurses-based hierarchical todo list manager with vim-like keybindings";
+    homepage = "https://code.meskio.net/tudu/";
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/tusk/default.nix b/nixpkgs/pkgs/applications/office/tusk/default.nix
new file mode 100644
index 000000000000..d54f27f9bbf3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/tusk/default.nix
@@ -0,0 +1,54 @@
+{ appimageTools, fetchurl, lib, gsettings-desktop-schemas, gtk3
+, makeDesktopItem
+}:
+
+let
+  pname = "tusk";
+  version = "0.23.0";
+
+  icon = fetchurl {
+    url = "https://raw.githubusercontent.com/klaussinani/tusk/v${version}/static/Icon.png";
+    sha256 = "1jqclyrjgg6hir45spg75plfmd8k9nrsrzw3plbcg43s5m1qzihb";
+  };
+
+  desktopItem = makeDesktopItem {
+    name = pname;
+    exec = pname;
+    icon = icon;
+    desktopName = pname;
+    genericName = "Evernote desktop app";
+    categories = "Application";
+  };
+
+in appimageTools.wrapType2 rec {
+  name = "${pname}-v${version}";
+  src = fetchurl {
+    url = "https://github.com/klaussinani/tusk/releases/download/v${version}/${pname}-${version}-x86_64.AppImage";
+    sha256 = "02q7wsnhlyq8z74avflrm7805ny8fzlmsmz4bmafp4b4pghjh5ky";
+  };
+
+
+  profile = ''
+    export LC_ALL=C.UTF-8
+    export XDG_DATA_DIRS=${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS
+  '';
+
+  multiPkgs = null; # no 32bit needed
+  extraPkgs = appimageTools.defaultFhsEnvArgs.multiPkgs;
+  extraInstallCommands = ''
+    mv $out/bin/{${name},${pname}}
+    mkdir "$out/share"
+    ln -s "${desktopItem}/share/applications" "$out/share/"
+  '';
+
+  meta = with lib; {
+    description = "Refined Evernote desktop app";
+    longDescription = ''
+      Tusk is an unofficial, featureful, open source, community-driven, free Evernote app used by people in more than 140 countries. Tusk is indicated by Evernote as an alternative client for Linux environments trusted by the open source community.
+    '';
+    homepage = "https://klaussinani.github.io/tusk/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ tbenst ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/vnote/default.nix b/nixpkgs/pkgs/applications/office/vnote/default.nix
new file mode 100644
index 000000000000..80b6ef6243ca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/vnote/default.nix
@@ -0,0 +1,27 @@
+{ lib, mkDerivation, fetchFromGitHub, qmake, qtbase, qtwebengine }:
+
+let
+  description = "A note-taking application that knows programmers and Markdown better";
+in mkDerivation rec {
+  version = "2.8.2";
+  pname = "vnote";
+
+  src = fetchFromGitHub {
+    owner = "tamlok";
+    repo = "vnote";
+    fetchSubmodules = true;
+    rev = "v${version}";
+    sha256 = "18qffq5c2plr5rjb5lafhdz1v5kbbb2wiyacgdhh3xni3khni52l";
+  };
+
+  nativeBuildInputs = [ qmake ];
+  buildInputs = [ qtbase qtwebengine ];
+
+  meta = with lib; {
+    inherit description;
+    homepage = "https://tamlok.github.io/vnote";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.kuznero ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/watson/default.nix b/nixpkgs/pkgs/applications/office/watson/default.nix
new file mode 100644
index 000000000000..5d4b915edfb5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/watson/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitHub, pythonPackages, fetchpatch, installShellFiles }:
+
+with pythonPackages;
+
+buildPythonApplication rec {
+  pname = "watson";
+  version = "1.9.0";
+
+  src = fetchFromGitHub {
+    owner = "TailorDev";
+    repo = "Watson";
+    rev = version;
+    sha256 = "0f0ldwadjf0xncx3m4w4wwqddd4wjwcsrbhby8vgsnqsn48dnfcx";
+  };
+
+  patches = [
+    # https://github.com/TailorDev/Watson/pull/380
+    # The nixpkgs' arrow version is too new / not supported by Watson's latest release.
+    (fetchpatch {
+      url = "https://github.com/TailorDev/Watson/commit/69b9ad25551525d52060f7fb2eef3653e872a455.patch";
+      sha256 = "0zrswgr0y219f92zi41m7cymfaspkhmlada4v9ijnsjjdb4bn2c9";
+    })
+  ];
+
+  checkPhase = ''
+    pytest -vs tests
+  '';
+
+  postInstall = ''
+    installShellCompletion --bash --name watson watson.completion
+    installShellCompletion --zsh --name _watson watson.zsh-completion
+  '';
+
+  checkInputs = [ py pytest pytest-datafiles pytest-mock pytestrunner ];
+  propagatedBuildInputs = [ arrow click click-didyoumean requests ];
+  nativeBuildInputs = [ installShellFiles ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://tailordev.github.io/Watson/";
+    description = "A wonderful CLI to track your time!";
+    license = licenses.mit;
+    maintainers = with maintainers; [ mguentner nathyong ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/wordgrinder/default.nix b/nixpkgs/pkgs/applications/office/wordgrinder/default.nix
new file mode 100644
index 000000000000..c2ccbabe2f16
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/wordgrinder/default.nix
@@ -0,0 +1,59 @@
+{ stdenv, fetchFromGitHub, pkgconfig, makeWrapper
+, lua52Packages, libXft, ncurses, ninja, readline, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "wordgrinder";
+  version = "0.7.2";
+
+  src = fetchFromGitHub {
+    repo = "wordgrinder";
+    owner = "davidgiven";
+    rev = version;
+    sha256 = "08lnq5wmspfqdjmqm15gizcq0xr7mg4h62qhvwj63v0sd6ks1cal";
+  };
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "LUA_INCLUDE=${lua52Packages.lua}/include"
+    "LUA_LIB=${lua52Packages.lua}/lib/liblua.so"
+  ];
+
+  preBuild = stdenv.lib.optionalString stdenv.isLinux ''
+    makeFlagsArray+=('XFT_PACKAGE=--cflags={} --libs={-lX11 -lXft}')
+  '';
+
+  dontUseNinjaBuild = true;
+  dontUseNinjaInstall = true;
+
+  nativeBuildInputs = [
+    pkgconfig
+    makeWrapper
+    ninja
+  ];
+
+  buildInputs = [
+    libXft
+    lua52Packages.lua
+    ncurses
+    readline
+    zlib
+  ];
+
+  # To be able to find <Xft.h>
+  NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isLinux "-I${libXft.dev}/include/X11";
+
+  # Binaries look for LuaFileSystem library (lfs.so) at runtime
+  postInstall = ''
+    wrapProgram $out/bin/wordgrinder --set LUA_CPATH "${lua52Packages.luafilesystem}/lib/lua/5.2/lfs.so";
+  '' + stdenv.lib.optionalString stdenv.isLinux ''
+    wrapProgram $out/bin/xwordgrinder --set LUA_CPATH "${lua52Packages.luafilesystem}/lib/lua/5.2/lfs.so";
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Text-based word processor";
+    homepage = "https://cowlark.com/wordgrinder";
+    license = licenses.mit;
+    maintainers = with maintainers; [ matthiasbeyer ];
+    platforms = with stdenv.lib.platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/wpsoffice/default.nix b/nixpkgs/pkgs/applications/office/wpsoffice/default.nix
new file mode 100644
index 000000000000..1d32e6ff027b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/wpsoffice/default.nix
@@ -0,0 +1,173 @@
+{ stdenv
+, mkDerivation
+, fetchurl
+, autoPatchelfHook
+, dpkg
+, wrapGAppsHook
+, wrapQtAppsHook
+, alsaLib
+, atk
+, bzip2
+, cairo
+, cups
+, dbus
+, expat
+, ffmpeg_3
+, fontconfig
+, freetype
+, gdk-pixbuf
+, glib
+, gperftools
+, gtk2-x11
+, libpng12
+, libtool
+, libuuid
+, libxml2
+, lzma
+, nspr
+, nss
+, openssl
+, pango
+, qt4
+, qtbase
+, sqlite
+, unixODBC
+, xorg
+, zlib
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wpsoffice";
+  version = "11.1.0.9505";
+
+  src = fetchurl {
+    url = "http://wdl1.pcfg.cache.wpscdn.com/wpsdl/wpsoffice/download/linux/9505/wps-office_11.1.0.9505.XA_amd64.deb";
+    sha256 = "1bvaxwd3npw3kswk7k1p6mcbfg37x0ym4sp6xis6ykz870qivqk5";
+  };
+  unpackCmd = "dpkg -x $src .";
+  sourceRoot = ".";
+
+  postUnpack = stdenv.lib.optionalString (version == "11.1.0.9505") ''
+    # distribution is missing libjsapiservice.so, so we should not let
+    # autoPatchelfHook fail on the following dead libraries
+    rm opt/kingsoft/wps-office/office6/{libjsetapi.so,libjswppapi.so,libjswpsapi.so}
+  '';
+
+  nativeBuildInputs = [ autoPatchelfHook dpkg wrapGAppsHook wrapQtAppsHook ];
+
+  meta = {
+    description = "Office program originally named Kingsoft Office";
+    homepage = "http://wps-community.org/";
+    platforms = [ "x86_64-linux" ];
+    hydraPlatforms = [];
+    license = stdenv.lib.licenses.unfreeRedistributable;
+    maintainers = [ stdenv.lib.maintainers.mlatus ];
+  };
+
+  buildInputs = with xorg; [
+    alsaLib
+    atk
+    bzip2
+    cairo
+    dbus.lib
+    expat
+    ffmpeg_3
+    fontconfig
+    freetype
+    gdk-pixbuf
+    glib
+    gperftools
+    gtk2-x11
+    libICE
+    libSM
+    libX11
+    libX11
+    libXScrnSaver
+    libXcomposite
+    libXcursor
+    libXdamage
+    libXext
+    libXfixes
+    libXi
+    libXrandr
+    libXrender
+    libXtst
+    libpng12
+    libtool
+    libuuid
+    libxcb
+    libxml2
+    lzma
+    nspr
+    nss
+    openssl
+    pango
+    qt4
+    qtbase
+    sqlite
+    unixODBC
+    zlib
+  ];
+
+  dontPatchELF = true;
+
+  # wpsoffice uses `/build` in its own build system making nix things there
+  # references to nix own build directory
+  noAuditTmpdir = true;
+
+  unvendoredLibraries = [
+    # Have to use parts of the vendored qt4
+    #"Qt"
+    "SDL2"
+    "bz2"
+    "avcodec"
+    "avdevice"
+    "avformat"
+    "avutil"
+    "swresample"
+    "swscale"
+    "jpeg"
+    "png"
+    # File saving breaks unless we are using vendored llvmPackages_8.libcxx
+    #"c++"
+    "ssl" "crypto"
+    "nspr"
+    "nss"
+    "odbc"
+    "tcmalloc" # gperftools
+  ];
+
+  installPhase = ''
+    prefix=$out/opt/kingsoft/wps-office
+    mkdir -p $out
+    cp -r opt $out
+    cp -r usr/* $out
+    for lib in $unvendoredLibraries; do
+      rm -v "$prefix/office6/lib$lib"*.so{,.*}
+    done
+    for i in wps wpp et wpspdf; do
+      substituteInPlace $out/bin/$i \
+        --replace /opt/kingsoft/wps-office $prefix
+    done
+    for i in $out/share/applications/*;do
+      substituteInPlace $i \
+        --replace /usr/bin $out/bin
+    done
+  '';
+
+  runtimeLibPath = stdenv.lib.makeLibraryPath [
+    cups.lib
+  ];
+
+  dontWrapQtApps = true;
+  dontWrapGApps = true;
+  postFixup = ''
+    for f in "$out"/bin/*; do
+      echo "Wrapping $f"
+      wrapProgram "$f" \
+        "''${gappsWrapperArgs[@]}" \
+        "''${qtWrapperArgs[@]}" \
+        --suffix LD_LIBRARY_PATH : "$runtimeLibPath"
+    done
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/office/zanshin/default.nix b/nixpkgs/pkgs/applications/office/zanshin/default.nix
new file mode 100644
index 000000000000..18e762974964
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/zanshin/default.nix
@@ -0,0 +1,36 @@
+{
+  mkDerivation, lib,
+  fetchurl,
+  extra-cmake-modules,
+  qtbase, boost,
+  akonadi-calendar, akonadi-notes, akonadi-search, kidentitymanagement, kontactinterface, kldap,
+  krunner, kwallet, kcalendarcore
+}:
+
+mkDerivation rec {
+  pname = "zanshin";
+  version = "0.5.71";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/${pname}/${pname}-${version}.tar.xz";
+    sha256 = "0b316ddcd46sawva84x5d8nsp19v66gbm83djrra7fv3k8nkv4xh";
+  };
+
+  nativeBuildInputs = [
+    extra-cmake-modules
+  ];
+
+  buildInputs = [
+    qtbase boost
+    akonadi-calendar akonadi-notes akonadi-search kidentitymanagement kontactinterface kldap
+    krunner kwallet kcalendarcore
+  ];
+
+  meta = with lib; {
+    description = "A powerful yet simple application to manage your day to day actions, getting your mind like water";
+    homepage = "https://zanshin.kde.org/";
+    maintainers = with maintainers; [ zraexy ];
+    platforms = platforms.linux;
+    license = licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/zim/default.nix b/nixpkgs/pkgs/applications/office/zim/default.nix
new file mode 100644
index 000000000000..ba6351da1ddd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/zim/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, python3Packages, gtk3, gobject-introspection, wrapGAppsHook, gnome3 }:
+
+#
+# TODO: Declare configuration options for the following optional dependencies:
+#  -  File stores: hg, git, bzr
+#  -  Included plugins depenencies: dot, ditaa, dia, any other?
+#  -  pyxdg: Need to make it work first (see setupPyInstallFlags).
+#
+
+python3Packages.buildPythonApplication rec {
+  name = "zim-${version}";
+  version = "0.72.1";
+
+  src = fetchurl {
+    url = "https://zim-wiki.org/downloads/${name}.tar.gz";
+    sha256 = "0a9h97rmp7if74p3i028cllzf9p9468psbqwcvm9009ga253dr1l";
+  };
+
+  buildInputs = [ gtk3 gobject-introspection wrapGAppsHook gnome3.adwaita-icon-theme ];
+  propagatedBuildInputs = with python3Packages; [ pyxdg pygobject3 ];
+
+
+  preFixup = ''
+    export makeWrapperArgs="--prefix XDG_DATA_DIRS : $out/share --argv0 $out/bin/.zim-wrapped"
+  '';
+
+  # RuntimeError: could not create GtkClipboard object
+  doCheck = false;
+
+  checkPhase = ''
+    python test.py
+  '';
+
+
+  meta = with stdenv.lib; {
+    description = "A desktop wiki";
+    homepage = "http://zim-wiki.org";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ pSub ];
+    broken = stdenv.isDarwin; # https://github.com/NixOS/nixpkgs/pull/52658#issuecomment-449565790
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/zotero/default.nix b/nixpkgs/pkgs/applications/office/zotero/default.nix
new file mode 100644
index 000000000000..bd4e5a6b9f7d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/zotero/default.nix
@@ -0,0 +1,140 @@
+{ stdenv, fetchurl, wrapGAppsHook, makeDesktopItem
+, atk
+, cairo
+, curl
+, cups
+, dbus-glib
+, dbus
+, dconf
+, fontconfig
+, freetype
+, gdk-pixbuf
+, glib
+, glibc
+, gtk3
+, libX11
+, libXScrnSaver
+, libxcb
+, libXcomposite
+, libXcursor
+, libXdamage
+, libXext
+, libXfixes
+, libXi
+, libXinerama
+, libXrender
+, libXt
+, libnotify
+, gnome3
+, libGLU, libGL
+, nspr
+, nss
+, pango
+, gsettings-desktop-schemas
+}:
+
+stdenv.mkDerivation rec {
+  pname = "zotero";
+  version = "5.0.87";
+
+  src = fetchurl {
+    url = "https://download.zotero.org/client/release/${version}/Zotero-${version}_linux-x86_64.tar.bz2";
+    sha256 = "01kq3w4il64gqz6s1vbv3iyzayv6rnx9igxk55awixi9g3qs21f1";
+  };
+
+  nativeBuildInputs = [ wrapGAppsHook ];
+  buildInputs= [ gsettings-desktop-schemas glib gtk3 gnome3.adwaita-icon-theme dconf ];
+
+  dontConfigure = true;
+  dontBuild = true;
+  dontStrip = true;
+  dontPatchELF = true;
+
+  libPath = stdenv.lib.makeLibraryPath
+    [ stdenv.cc.cc
+      atk
+      cairo
+      curl
+      cups
+      dbus-glib
+      dbus
+      fontconfig
+      freetype
+      gdk-pixbuf
+      glib
+      glibc
+      gtk3
+      libX11
+      libXScrnSaver
+      libXcomposite
+      libXcursor
+      libxcb
+      libXdamage
+      libXext
+      libXfixes
+      libXi
+      libXinerama
+      libXrender
+      libXt
+      libnotify
+      libGLU libGL
+      nspr
+      nss
+      pango
+    ] + ":" + stdenv.lib.makeSearchPathOutput "lib" "lib64" [
+      stdenv.cc.cc
+    ];
+
+  patchPhase = ''
+    sed -i '/pref("app.update.enabled", true);/c\pref("app.update.enabled", false);' defaults/preferences/prefs.js
+  '';
+
+  desktopItem = makeDesktopItem {
+    name = "zotero-${version}";
+    exec = "zotero -url %U";
+    icon = "zotero";
+    type = "Application";
+    comment = meta.description;
+    desktopName = "Zotero";
+    genericName = "Reference Management";
+    categories = "Office;Database;";
+    startupNotify = "true";
+    mimeType = "text/plain";
+  };
+
+  installPhase =
+  ''
+     mkdir -p "$prefix/usr/lib/zotero-bin-${version}"
+     cp -r * "$prefix/usr/lib/zotero-bin-${version}"
+     mkdir -p "$out/bin"
+     ln -s "$prefix/usr/lib/zotero-bin-${version}/zotero" "$out/bin/"
+
+     # install desktop file and icons.
+     mkdir -p $out/share/applications
+     cp ${desktopItem}/share/applications/* $out/share/applications/
+     for size in 16 32 48 256; do
+       install -Dm444 chrome/icons/default/default$size.png \
+         $out/share/icons/hicolor/''${size}x''${size}/apps/zotero.png
+     done
+
+     for executable in \
+       zotero-bin plugin-container \
+       updater minidump-analyzer
+     do
+       if [ -e "$out/usr/lib/zotero-bin-${version}/$executable" ]; then
+         patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+           "$out/usr/lib/zotero-bin-${version}/$executable"
+       fi
+     done
+     find . -executable -type f -exec \
+       patchelf --set-rpath "$libPath" \
+         "$out/usr/lib/zotero-bin-${version}/{}" \;
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.zotero.org";
+    description = "Collect, organize, cite, and share your research sources";
+    license = licenses.agpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/office/zotero/zotero.sh b/nixpkgs/pkgs/applications/office/zotero/zotero.sh
new file mode 100644
index 000000000000..8941097fc422
--- /dev/null
+++ b/nixpkgs/pkgs/applications/office/zotero/zotero.sh
@@ -0,0 +1,3 @@
+#!@bash@/bin/bash
+
+exec "@firefox@/bin/firefox" -app "@out@/libexec/zotero/application.ini" "${@}"
diff --git a/nixpkgs/pkgs/applications/qubes/qubes-core-vchan-xen/default.nix b/nixpkgs/pkgs/applications/qubes/qubes-core-vchan-xen/default.nix
new file mode 100644
index 000000000000..ecb9403be36e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/qubes/qubes-core-vchan-xen/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, xen_4_10 }:
+
+stdenv.mkDerivation rec {
+  pname = "qubes-core-vchan-xen";
+  version = "4.1.2";
+
+  src = fetchFromGitHub {
+    owner = "QubesOS";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1wj4vv8nkzzig52r2nzkd4jy0cwznfkyddx379hfsdl4pzsp55mj";
+  };
+
+  buildInputs = [ xen_4_10 ];
+  buildPhase = ''
+    make all PREFIX=/
+  '';
+  installPhase = ''
+    make install DESTDIR=$out PREFIX=/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Libraries required for the higher-level Qubes daemons and tools";
+    homepage = "https://qubes-os.org";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers."0x4A6F" ];
+    platforms = platforms.linux;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/radio/airspy/default.nix b/nixpkgs/pkgs/applications/radio/airspy/default.nix
new file mode 100644
index 000000000000..67a59b68cd5b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/airspy/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, lib, fetchFromGitHub
+, cmake , pkgconfig, libusb1
+}:
+
+stdenv.mkDerivation rec {
+  pname = "airspy";
+  version = "1.0.9";
+
+  src = fetchFromGitHub {
+    owner = "airspy";
+    repo = "airspyone_host";
+    rev = "v${version}";
+    sha256 = "04kx2p461sqd4q354n1a99zcabg9h29dwcnyhakykq8bpg3mgf1x";
+  };
+
+  postPatch = ''
+    substituteInPlace airspy-tools/CMakeLists.txt --replace "/etc/udev/rules.d" "$out/etc/udev/rules.d"
+  '';
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [ libusb1 ];
+
+  cmakeFlags =
+    lib.optionals stdenv.isLinux [ "-DINSTALL_UDEV_RULES=ON" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/airspy/airspyone_host";
+    description = "Host tools and driver library for the AirSpy SDR";
+    license = licenses.bsd3;
+    platforms = with platforms; linux ++ darwin;
+    maintainers = with maintainers; [ markuskowa ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/aldo/default.nix b/nixpkgs/pkgs/applications/radio/aldo/default.nix
new file mode 100644
index 000000000000..df52531a518d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/aldo/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, libao }:
+
+stdenv.mkDerivation rec {
+  pname = "aldo";
+  version = "0.7.7";
+
+  src = fetchurl {
+    url = "mirror://savannah/${pname}/${pname}-${version}.tar.bz2";
+    sha256 = "14lzgldqzbbzydsy1cai3wln3hpyj1yhj8ji3wygyzr616fq9f7i";
+  };
+
+  buildInputs = [ libao ];
+
+  meta = with stdenv.lib; {
+    description = "Morse code training program";
+    homepage = "http://aldo.nongnu.org/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ etu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/chirp/default.nix b/nixpkgs/pkgs/applications/radio/chirp/default.nix
new file mode 100644
index 000000000000..377619f5088c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/chirp/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, fetchurl
+, python2
+}:
+python2.pkgs.buildPythonApplication rec {
+  pname = "chirp-daily";
+  version = "20200430";
+
+  src = fetchurl {
+    url = "https://trac.chirp.danplanet.com/chirp_daily/daily-${version}/${pname}-${version}.tar.gz";
+    sha256 = "060fzplgmpfrk6wkfaasx7phpfk90mmylk6drbwzk4f9r1655vda";
+  };
+
+  propagatedBuildInputs = with python2.pkgs; [
+    pygtk pyserial libxml2 future
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A free, open-source tool for programming your amateur radio";
+    homepage = "https://chirp.danplanet.com/";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/cubicsdr/default.nix b/nixpkgs/pkgs/applications/radio/cubicsdr/default.nix
new file mode 100644
index 000000000000..c85299606c03
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/cubicsdr/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, cmake, fftw, hamlib, libpulseaudio, libGL, libX11, liquid-dsp,
+  pkgconfig, soapysdr-with-plugins, wxGTK31-gtk3, enableDigitalLab ? false }:
+
+stdenv.mkDerivation rec {
+  pname = "cubicsdr";
+  version = "0.2.5";
+
+  src = fetchFromGitHub {
+    owner = "cjcliffe";
+    repo = "CubicSDR";
+    rev = version;
+    sha256 = "1ihbn18bzdcdvwpa4hnb55ns38bj4b8xy53hkmra809f9qpbcjhn";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [ fftw hamlib libpulseaudio libGL libX11 liquid-dsp soapysdr-with-plugins wxGTK31-gtk3 ];
+
+  cmakeFlags = [ "-DUSE_HAMLIB=ON" ]
+    ++ stdenv.lib.optional enableDigitalLab "-DENABLE_DIGITAL_LAB=ON";
+
+  meta = with stdenv.lib; {
+    homepage = "https://cubicsdr.com";
+    description = "Software Defined Radio application";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ lasandell ];
+    platforms = platforms.linux;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/radio/dablin/default.nix b/nixpkgs/pkgs/applications/radio/dablin/default.nix
new file mode 100644
index 000000000000..287649ddbe1e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/dablin/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig
+, mpg123, SDL2, gnome3, faad2, pcre
+} :
+
+stdenv.mkDerivation rec {
+  pname = "dablin";
+  version = "1.13.0";
+
+  src = fetchFromGitHub {
+    owner = "Opendigitalradio";
+    repo = "dablin";
+    rev = version;
+    sha256 = "0143jnhwwh4din6mlrkbm8m2wm8vnrlk0yk9r5qcvj70r2314bgq";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [ faad2 mpg123 SDL2 gnome3.gtkmm pcre ];
+
+  meta = with stdenv.lib; {
+    description = "Play DAB/DAB+ from ETI-NI aligned stream";
+    homepage = "https://github.com/Opendigitalradio/dablin";
+    license = with licenses; [ gpl3 lgpl21 ];
+    platforms = platforms.linux;
+    maintainers = [ maintainers.markuskowa ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/radio/dabtools/default.nix b/nixpkgs/pkgs/applications/radio/dabtools/default.nix
new file mode 100644
index 000000000000..401e207ba4f6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/dabtools/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig
+, libusb1, rtl-sdr, fftw
+} :
+
+stdenv.mkDerivation {
+  pname = "dabtools";
+  version = "20180405";
+
+  src = fetchFromGitHub {
+    owner = "Opendigitalradio";
+    repo = "dabtools";
+    rev = "8b0b2258b02020d314efd4d0d33a56c8097de0d1";
+    sha256 = "18nkdybgg2w6zh56g6xwmg49sifalvraz4rynw8w5d8cqi3dm9sm";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [ rtl-sdr fftw libusb1 ];
+
+  meta = with stdenv.lib; {
+    description = "Commandline tools for DAB and DAB+ digital radio broadcasts";
+    homepage = "https://github.com/Opendigitalradio/dabtools";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.markuskowa ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/radio/dmrconfig/default.nix b/nixpkgs/pkgs/applications/radio/dmrconfig/default.nix
new file mode 100644
index 000000000000..47b72669f8fd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/dmrconfig/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchFromGitHub
+, libusb1, systemd }:
+
+stdenv.mkDerivation rec {
+  pname = "dmrconfig";
+  version = "1.1";
+
+  src = fetchFromGitHub {
+    owner = "sergev";
+    repo = "dmrconfig";
+    rev = version;
+    sha256 = "1qwix75z749628w583fwp7m7kxbj0k3g159sxb7vgqxbadqqz1ab";
+  };
+
+  buildInputs = [
+    libusb1 systemd
+  ];
+
+  preConfigure = ''
+    substituteInPlace Makefile \
+      --replace /usr/local/bin/dmrconfig $out/bin/dmrconfig
+  '';
+
+  makeFlags = [ "VERSION=${version}" "GITCOUNT=0" ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/lib/udev/rules.d
+    make install
+    install 99-dmr.rules $out/lib/udev/rules.d/99-dmr.rules
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Configuration utility for DMR radios";
+    longDescription = ''
+      DMRconfig is a utility for programming digital radios via USB programming cable.
+    '';
+    homepage = "https://github.com/sergev/dmrconfig";
+    license = licenses.asl20;
+    maintainers = [ maintainers.etu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/dump1090/default.nix b/nixpkgs/pkgs/applications/radio/dump1090/default.nix
new file mode 100644
index 000000000000..11c5c46ae681
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/dump1090/default.nix
@@ -0,0 +1,43 @@
+{ stdenv
+, fetchFromGitHub
+, pkgconfig
+, libbladeRF
+, libusb1
+, ncurses
+, rtl-sdr
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dump1090";
+  version = "3.8.1";
+
+  src = fetchFromGitHub {
+    owner = "flightaware";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0xg8rzrxqklx1m9ncxsd96dlkbjcsxfi2mrb859v50f07xysdyd8";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [
+    libbladeRF
+    libusb1
+    ncurses
+    rtl-sdr
+  ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share
+    cp -v dump1090 view1090 $out/bin
+    cp -vr public_html $out/share/dump1090
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A simple Mode S decoder for RTLSDR devices";
+    homepage = "https://github.com/flightaware/dump1090";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ earldouglas ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/ebook2cw/configfile.patch b/nixpkgs/pkgs/applications/radio/ebook2cw/configfile.patch
new file mode 100644
index 000000000000..c7aafe5227a5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/ebook2cw/configfile.patch
@@ -0,0 +1,11 @@
+--- a/ebook2cw.c	2017-11-08 19:52:58.298131348 -0700
++++ b/ebook2cw.c	2017-11-08 19:53:02.588231067 -0700
+@@ -136,7 +136,7 @@
+ 	char isomap[256][4]; 		/* by these strings */
+ 	char utf8map[256][8];
+ 
+-	char configfile[1025];
++	char configfile[2048];
+ 
+ 	char id3_author[80],
+ 		id3_title[80],
diff --git a/nixpkgs/pkgs/applications/radio/ebook2cw/default.nix b/nixpkgs/pkgs/applications/radio/ebook2cw/default.nix
new file mode 100644
index 000000000000..d273594f4c90
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/ebook2cw/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchsvn, lame, libvorbis }:
+
+stdenv.mkDerivation rec {
+  pname = "ebook2cw";
+  version = "0.8.2";
+
+  src = fetchsvn {
+    url = "svn://svn.fkurz.net/ebook2cw/tags/${pname}-${version}";
+    sha256 = "1mvp3nz3k76v757792n9b7fcm5jm3jcwarl1k7cila9fi0c2rsiw";
+  };
+
+  buildInputs = [ lame libvorbis ];
+
+  patches = [ ./configfile.patch ];
+
+  makeFlags = [ "DESTDIR=$(out)" ];
+
+  meta = with stdenv.lib; {
+    description = "Convert ebooks to Morse MP3s/OGGs";
+    homepage = "http://fkurz.net/ham/ebook2cw.html";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ earldouglas ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/fldigi/default.nix b/nixpkgs/pkgs/applications/radio/fldigi/default.nix
new file mode 100644
index 000000000000..b4815803ccde
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/fldigi/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, hamlib, fltk14, libjpeg, libpng, portaudio, libsndfile,
+  libsamplerate, libpulseaudio, libXinerama, gettext, pkgconfig, alsaLib }:
+
+stdenv.mkDerivation rec {
+  version = "4.1.13";
+  pname = "fldigi";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
+    sha256 = "0mlq4z5k3h466plij8hg9xn5xbjxk557g4pw13cplpf32fhng224";
+  };
+
+  buildInputs = [ libXinerama gettext hamlib fltk14 libjpeg libpng portaudio
+                  libsndfile libsamplerate libpulseaudio pkgconfig alsaLib ];
+
+  meta = {
+    description = "Digital modem program";
+    homepage = "https://sourceforge.net/projects/fldigi/";
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = with stdenv.lib.maintainers; [ relrod ftrvxmtrx ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/fllog/default.nix b/nixpkgs/pkgs/applications/radio/fllog/default.nix
new file mode 100644
index 000000000000..649caae09021
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/fllog/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, fetchurl
+, fltk13
+, libjpeg
+, pkgconfig
+}:
+
+stdenv.mkDerivation rec {
+  version = "1.2.6";
+  pname = "fllog";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/fldigi/${pname}-${version}.tar.gz";
+    sha256 = "18nwqbbg5khpkwlr7dn41g6zf7ms2wzxykd42fwdsj4m4z0ysyyg";
+  };
+
+  buildInputs = [
+    fltk13
+    libjpeg
+  ];
+
+  nativeBuildInputs = [
+    pkgconfig
+  ];
+
+  meta = {
+    description = "Digital modem log program";
+    homepage = "https://sourceforge.net/projects/fldigi/";
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = with stdenv.lib.maintainers; [ dysinger ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/flmsg/default.nix b/nixpkgs/pkgs/applications/radio/flmsg/default.nix
new file mode 100644
index 000000000000..e437dffa4856
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/flmsg/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, fetchurl
+, fltk13
+, libjpeg
+, pkgconfig
+}:
+
+stdenv.mkDerivation rec {
+  version = "4.0.14";
+  pname = "flmsg";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/fldigi/${pname}-${version}.tar.gz";
+    sha256 = "0s1prawkpvr7xr7h8w7r0ly90ya3n8h6qsii0x6laqrkgjn9w9iy";
+  };
+
+  buildInputs = [
+    fltk13
+    libjpeg
+  ];
+
+  nativeBuildInputs = [
+    pkgconfig
+  ];
+
+  meta = {
+    description = "Digital modem message program";
+    homepage = "https://sourceforge.net/projects/fldigi/";
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = with stdenv.lib.maintainers; [ dysinger ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/flrig/default.nix b/nixpkgs/pkgs/applications/radio/flrig/default.nix
new file mode 100644
index 000000000000..968b2fd0df9b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/flrig/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, fetchurl
+, fltk13
+, libjpeg
+, pkgconfig
+}:
+
+stdenv.mkDerivation rec {
+  version = "1.3.50";
+  pname = "flrig";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/fldigi/${pname}-${version}.tar.gz";
+    sha256 = "0fzrknzzi8kmzmrcfpc8rxr7v4a4ny6z6z5q5qwh95sp2kn2qzp9";
+  };
+
+  buildInputs = [
+    fltk13
+    libjpeg
+  ];
+
+  nativeBuildInputs = [
+    pkgconfig
+  ];
+
+  meta = {
+    description = "Digital modem rig control program";
+    homepage = "https://sourceforge.net/projects/fldigi/";
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = with stdenv.lib.maintainers; [ dysinger ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/flwrap/default.nix b/nixpkgs/pkgs/applications/radio/flwrap/default.nix
new file mode 100644
index 000000000000..889c212de4e9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/flwrap/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, fetchurl
+, fltk13
+, libjpeg
+, pkgconfig
+}:
+
+stdenv.mkDerivation rec {
+  version = "1.3.5";
+  pname = "flwrap";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/fldigi/${pname}-${version}.tar.gz";
+    sha256 = "0qqivqkkravcg7j45740xfky2q3k7czqpkj6y364qff424q2pppg";
+  };
+
+  buildInputs = [
+    fltk13
+    libjpeg
+  ];
+
+  nativeBuildInputs = [
+    pkgconfig
+  ];
+
+  meta = {
+    description = "Digital modem file transfer program";
+    homepage = "https://sourceforge.net/projects/fldigi/";
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = with stdenv.lib.maintainers; [ dysinger ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/gnss-sdr/default.nix b/nixpkgs/pkgs/applications/radio/gnss-sdr/default.nix
new file mode 100644
index 000000000000..4e423094e90e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/gnss-sdr/default.nix
@@ -0,0 +1,80 @@
+{ stdenv, fetchFromGitHub
+, armadillo
+, boost
+, cmake
+, glog
+, gmock
+, openssl
+, gflags
+, gnuradio
+, orc
+, pkgconfig
+, pythonPackages
+, uhd
+, log4cpp
+, blas, lapack
+, matio
+, pugixml
+, protobuf
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnss-sdr";
+  version = "0.0.12";
+
+  src = fetchFromGitHub {
+    owner = "gnss-sdr";
+    repo = "gnss-sdr";
+    rev = "v${version}";
+    sha256 = "0i9cz85jc2m758pzy3bq4dk4vj9wv7k2z118lasb09xldx01dwsq";
+  };
+
+  buildInputs = [
+    armadillo
+    boost.dev
+    cmake
+    glog
+    gmock
+    openssl.dev
+    gflags
+    gnuradio
+    orc
+    pkgconfig
+    pythonPackages.Mako
+
+    # UHD support is optional, but gnuradio is built with it, so there's
+    # nothing to be gained by leaving it out.
+    uhd
+    log4cpp
+    blas lapack
+    matio
+    pugixml
+    protobuf
+  ];
+
+  enableParallelBuilding = true;
+
+  cmakeFlags = [
+    "-DGFlags_ROOT_DIR=${gflags}/lib"
+    "-DGLOG_INCLUDE_DIR=${glog}/include"
+    "-DENABLE_UNIT_TESTING=OFF"
+
+    # gnss-sdr doesn't truly depend on BLAS or LAPACK, as long as
+    # armadillo is built using both, so skip checking for them.
+    "-DBLAS=YES"
+    "-DLAPACK=YES"
+    "-DBLAS_LIBRARIES=-lblas"
+    "-DLAPACK_LIBRARIES=-llapack"
+
+    # Similarly, it doesn't actually use gfortran despite checking for
+    # its presence.
+    "-DGFORTRAN=YES"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "An open source Global Navigation Satellite Systems software-defined receiver";
+    homepage = "https://gnss-sdr.org/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/gnuradio/ais.nix b/nixpkgs/pkgs/applications/radio/gnuradio/ais.nix
new file mode 100644
index 000000000000..30c2638a72f8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/gnuradio/ais.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, boost, gnuradio
+, makeWrapper, cppunit, gr-osmosdr
+, pythonSupport ? true, python, swig
+}:
+
+assert pythonSupport -> python != null && swig != null;
+
+stdenv.mkDerivation {
+  pname = "gr-ais";
+  version = "2015-12-20";
+
+  src = fetchFromGitHub {
+    owner = "bistromath";
+    repo = "gr-ais";
+    # Upstream PR: https://github.com/bistromath/gr-ais/commit/8502d0252a2a1a9b8d1a71795eaeb5d820684054
+    rev = "8502d0252a2a1a9b8d1a71795eaeb5d820684054";
+    sha256 = "1b9j0kc74cw12a7jv4lii77dgzqzg2s8ndzp4xmisxksgva1qfvh";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    cmake boost gnuradio makeWrapper cppunit gr-osmosdr
+  ] ++ stdenv.lib.optionals pythonSupport [ python swig ];
+
+  postInstall = ''
+    for prog in "$out"/bin/*; do
+        wrapProgram "$prog" --set PYTHONPATH $PYTHONPATH:$(toPythonPath "$out")
+    done
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Gnuradio block for ais";
+    homepage = "https://github.com/bistromath/gr-ais";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = with maintainers; [ mog ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/gnuradio/default.nix b/nixpkgs/pkgs/applications/radio/gnuradio/default.nix
new file mode 100644
index 000000000000..dec968cd32d7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/gnuradio/default.nix
@@ -0,0 +1,165 @@
+{ stdenv
+, fetchFromGitHub
+, makeWrapper
+, writeText
+# Dependencies documented @ https://gnuradio.org/doc/doxygen/build_guide.html
+# => core dependencies
+, cmake
+, pkgconfig
+, git
+, boost
+, cppunit
+, fftw
+# => python wrappers
+# May be able to upgrade to swig3
+, python
+, swig2
+, numpy
+, scipy
+, matplotlib
+# => grc - the gnu radio companion
+, Mako
+, cheetah
+, pygtk # Note: GR is migrating to Mako. Cheetah should be removed for GR3.8
+# => gr-wavelet: collection of wavelet blocks
+, gsl
+# => gr-qtgui: the Qt-based GUI
+, qt4
+, qwt
+, pyqt4
+# => gr-wxgui: the Wx-based GUI
+, wxPython
+, lxml
+# => gr-audio: audio subsystems (system/OS dependent)
+, alsaLib   # linux   'audio-alsa'
+, CoreAudio # darwin  'audio-osx'
+# => uhd: the Ettus USRP Hardware Driver Interface
+, uhd
+# => gr-video-sdl: PAL and NTSC display
+, SDL
+# Other
+, libusb1
+, orc
+, pyopengl
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnuradio";
+  version = "3.7.14.0";
+
+  src = fetchFromGitHub {
+    owner = "gnuradio";
+    repo = "gnuradio";
+    rev = "v${version}";
+    sha256 = "1nh4f9dmygprlbqybd3j1byg9fsr6065n140mvc4b0v8qqygmhrc";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkgconfig
+    git
+    makeWrapper
+    cppunit
+    orc
+  ];
+
+  buildInputs = [
+    boost
+    fftw
+    python
+    swig2
+    lxml
+    qt4
+    qwt
+    SDL
+    libusb1
+    uhd
+    gsl
+  ] ++ stdenv.lib.optionals stdenv.isLinux  [ alsaLib   ]
+    ++ stdenv.lib.optionals stdenv.isDarwin [ CoreAudio ];
+
+  propagatedBuildInputs = [
+    Mako
+    cheetah
+    numpy
+    scipy
+    matplotlib
+    pyqt4
+    pygtk
+    wxPython
+    pyopengl
+  ];
+
+  NIX_LDFLAGS = "-lpthread";
+
+  enableParallelBuilding = true;
+
+  postPatch = ''
+    substituteInPlace \
+        gr-fec/include/gnuradio/fec/polar_decoder_common.h \
+        --replace BOOST_CONSTEXPR_OR_CONST const
+  '';
+
+  # Enables composition with nix-shell
+  grcSetupHook = writeText "grcSetupHook.sh" ''
+    addGRCBlocksPath() {
+      addToSearchPath GRC_BLOCKS_PATH $1/share/gnuradio/grc/blocks
+    }
+    addEnvHooks "$targetOffset" addGRCBlocksPath
+  '';
+
+  setupHook = [ grcSetupHook ];
+
+  # patch wxgui and pygtk check due to python importerror in a headless environment
+  # wxgtk gui will be removed in GR3.8
+  # c++11 hack may not be necessary anymore
+  preConfigure = ''
+    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -Wno-unused-variable ${stdenv.lib.optionalString (!stdenv.isDarwin) "-std=c++11"}"
+    sed -i 's/.*wx\.version.*/set(WX_FOUND TRUE)/g' gr-wxgui/CMakeLists.txt
+    sed -i 's/.*pygtk_version.*/set(PYGTK_FOUND TRUE)/g' grc/CMakeLists.txt
+    find . -name "CMakeLists.txt" -exec sed -i '1iadd_compile_options($<$<COMPILE_LANGUAGE:CXX>:-std=c++11>)' "{}" ";"
+  '';
+
+  # Framework path needed for qwt6_qt4 but not qwt5
+  cmakeFlags =
+    stdenv.lib.optionals stdenv.isDarwin [ "-DCMAKE_FRAMEWORK_PATH=${qwt}/lib" ];
+
+  # - Ensure we get an interactive backend for matplotlib. If not the gr_plot_*
+  #   programs will not display anything. Yes, $MATPLOTLIBRC must point to the
+  #   *dirname* where matplotlibrc is located, not the file itself.
+  # - GNU Radio core is C++ but the user interface (GUI and API) is Python, so
+  #   we must wrap the stuff in bin/.
+  # Notes:
+  # - May want to use makeWrapper instead of wrapProgram
+  # - may want to change interpreter path on Python examples instead of wrapping
+  # - see https://github.com/NixOS/nixpkgs/issues/22688 regarding use of --prefix / python.withPackages
+  # - see https://github.com/NixOS/nixpkgs/issues/24693 regarding use of DYLD_FRAMEWORK_PATH on Darwin
+  postInstall = ''
+    printf "backend : Qt4Agg\n" > "$out/share/gnuradio/matplotlibrc"
+
+    for file in $(find $out/bin $out/share/gnuradio/examples -type f -executable); do
+        wrapProgram "$file" \
+            --prefix PYTHONPATH : $PYTHONPATH:$(toPythonPath "$out") \
+            --set MATPLOTLIBRC "$out/share/gnuradio" \
+            ${stdenv.lib.optionalString stdenv.isDarwin "--set DYLD_FRAMEWORK_PATH /System/Library/Frameworks"}
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Software Defined Radio (SDR) software";
+    longDescription = ''
+      GNU Radio is a free & open-source software development toolkit that
+      provides signal processing blocks to implement software radios. It can be
+      used with readily-available low-cost external RF hardware to create
+      software-defined radios, or without hardware in a simulation-like
+      environment. It is widely used in hobbyist, academic and commercial
+      environments to support both wireless communications research and
+      real-world radio systems.
+    '';
+    homepage = "https://www.gnuradio.org";
+    license = licenses.gpl3;
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = with maintainers; [ bjornfor fpletz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/gnuradio/gsm.nix b/nixpkgs/pkgs/applications/radio/gnuradio/gsm.nix
new file mode 100644
index 000000000000..e0b8d7dd44f7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/gnuradio/gsm.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, boost, gnuradio
+, makeWrapper, cppunit, libosmocore, gr-osmosdr
+, pythonSupport ? true, python, swig
+}:
+
+assert pythonSupport -> python != null && swig != null;
+
+stdenv.mkDerivation {
+  pname = "gr-gsm";
+  version = "2016-08-25";
+
+  src = fetchFromGitHub {
+    owner = "ptrkrysik";
+    repo = "gr-gsm";
+    rev = "3ca05e6914ef29eb536da5dbec323701fbc2050d";
+    sha256 = "13nnq927kpf91iqccr8db9ripy5czjl5jiyivizn6bia0bam2pvx";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    cmake boost gnuradio makeWrapper cppunit libosmocore gr-osmosdr
+  ] ++ stdenv.lib.optionals pythonSupport [ python swig ];
+
+  postInstall = ''
+    for prog in "$out"/bin/*; do
+        wrapProgram "$prog" --set PYTHONPATH $PYTHONPATH:${gr-osmosdr}/lib/${python.libPrefix}/site-packages:$(toPythonPath "$out")
+    done
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Gnuradio block for gsm";
+    homepage = "https://github.com/ptrkrysik/gr-gsm";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ mog ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/gnuradio/limesdr.nix b/nixpkgs/pkgs/applications/radio/gnuradio/limesdr.nix
new file mode 100644
index 000000000000..490caaaa7bea
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/gnuradio/limesdr.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, boost, gnuradio
+, pythonSupport ? true, python, swig, limesuite
+} :
+
+assert pythonSupport -> python != null && swig != null;
+
+let
+  version = "2.0.0";
+
+in stdenv.mkDerivation {
+  pname = "gr-limesdr";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "myriadrf";
+    repo = "gr-limesdr";
+    rev = "v${version}";
+    sha256 = "0ldqvfwl0gil89l9s31fjf9d7ki0dk572i8vna336igfaz348ypq";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkgconfig
+  ] ++ stdenv.lib.optionals pythonSupport [ swig ];
+
+  buildInputs = [
+    boost gnuradio limesuite
+  ] ++ stdenv.lib.optionals pythonSupport [ python ];
+
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Gnuradio source and sink blocks for LimeSDR";
+    homepage = "https://wiki.myriadrf.org/Gr-limesdr_Plugin_for_GNURadio";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.markuskowa ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/gnuradio/nacl.nix b/nixpkgs/pkgs/applications/radio/gnuradio/nacl.nix
new file mode 100644
index 000000000000..e3d851e2e14a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/gnuradio/nacl.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, boost, gnuradio, uhd
+, makeWrapper, libsodium, cppunit
+, pythonSupport ? true, python, swig
+}:
+
+assert pythonSupport -> python != null && swig != null;
+
+stdenv.mkDerivation {
+  pname = "gr-nacl";
+  version = "2017-04-10";
+
+  src = fetchFromGitHub {
+    owner = "stwunsch";
+    repo = "gr-nacl";
+    rev = "15276bb0fcabf5fe4de4e58df3d579b5be0e9765";
+    sha256 = "018np0qlk61l7mlv3xxx5cj1rax8f1vqrsrch3higsl25yydbv7v";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    cmake boost gnuradio uhd makeWrapper libsodium cppunit
+  ] ++ stdenv.lib.optionals pythonSupport [ python swig ];
+
+  postInstall = ''
+    for prog in "$out"/bin/*; do
+        wrapProgram "$prog" --set PYTHONPATH $PYTHONPATH:$(toPythonPath "$out")
+    done
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Gnuradio block for encryption";
+    homepage = "https://github.com/stwunsch/gr-nacl";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = with maintainers; [ mog ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/gnuradio/osmosdr.nix b/nixpkgs/pkgs/applications/radio/gnuradio/osmosdr.nix
new file mode 100644
index 000000000000..ad54fc8d7c4f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/gnuradio/osmosdr.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchgit, cmake, pkgconfig, makeWrapper
+, boost
+, pythonSupport ? true, python, swig
+, airspy
+, gnuradio
+, hackrf
+, libbladeRF
+, rtl-sdr
+, soapysdr-with-plugins
+, uhd
+}:
+
+assert pythonSupport -> python != null && swig != null;
+
+stdenv.mkDerivation rec {
+  pname = "gr-osmosdr";
+  version = "0.1.5";
+
+  src = fetchgit {
+    url = "git://git.osmocom.org/gr-osmosdr";
+    rev = "v${version}";
+    sha256 = "0bf9bnc1c3c4yqqqgmg3nhygj6rcfmyk6pybi27f7461d2cw1drv";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    cmake makeWrapper boost
+    airspy gnuradio hackrf libbladeRF rtl-sdr uhd
+  ] ++ stdenv.lib.optionals stdenv.isLinux [ soapysdr-with-plugins ]
+    ++ stdenv.lib.optionals pythonSupport [ python swig ];
+
+  postInstall = ''
+    for prog in "$out"/bin/*; do
+        wrapProgram "$prog" --set PYTHONPATH $PYTHONPATH:$(toPythonPath "$out")
+    done
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Gnuradio block for OsmoSDR and rtl-sdr";
+    homepage = "https://sdr.osmocom.org/trac/wiki/GrOsmoSDR";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = with maintainers; [ bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/gnuradio/rds.nix b/nixpkgs/pkgs/applications/radio/gnuradio/rds.nix
new file mode 100644
index 000000000000..1f8ed211ef29
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/gnuradio/rds.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, boost, gnuradio
+, makeWrapper, pythonSupport ? true, python, swig
+}:
+
+assert pythonSupport -> python != null && swig != null;
+
+stdenv.mkDerivation rec {
+  pname = "gr-rds";
+  version = "1.1.0";
+
+  src = fetchFromGitHub {
+    owner = "bastibl";
+    repo = "gr-rds";
+    rev = "v${version}";
+    sha256 = "0jkzchvw0ivcxsjhi1h0mf7k13araxf5m4wi5v9xdgqxvipjzqfy";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    cmake boost gnuradio makeWrapper
+  ] ++ stdenv.lib.optionals pythonSupport [ python swig ];
+
+  postInstall = ''
+    for prog in "$out"/bin/*; do
+        wrapProgram "$prog" --set PYTHONPATH $PYTHONPATH:$(toPythonPath "$out")
+    done
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Gnuradio block for radio data system";
+    homepage = "https://github.com/bastibl/gr-rds";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = with maintainers; [ mog ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/gnuradio/wrapper.nix b/nixpkgs/pkgs/applications/radio/gnuradio/wrapper.nix
new file mode 100644
index 000000000000..ffed3da03187
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/gnuradio/wrapper.nix
@@ -0,0 +1,24 @@
+{ stdenv, gnuradio, makeWrapper, python, extraPackages ? [] }:
+
+with { inherit (stdenv.lib) appendToName makeSearchPath; };
+
+stdenv.mkDerivation {
+  name = (appendToName "with-packages" gnuradio).name;
+  buildInputs = [ makeWrapper python ];
+
+  buildCommand = ''
+    mkdir -p $out/bin
+    ln -s "${gnuradio}"/bin/* $out/bin/
+
+    for file in $(find -L $out/bin -type f); do
+        if test -x "$(readlink -f "$file")"; then
+            wrapProgram "$file" \
+                --prefix PYTHONPATH : ${stdenv.lib.concatStringsSep ":"
+                                         (map (path: "$(toPythonPath ${path})") extraPackages)} \
+                --prefix GRC_BLOCKS_PATH : ${makeSearchPath "share/gnuradio/grc/blocks" extraPackages}
+        fi
+    done
+  '';
+
+  inherit (gnuradio) meta;
+}
diff --git a/nixpkgs/pkgs/applications/radio/gqrx/default.nix b/nixpkgs/pkgs/applications/radio/gqrx/default.nix
new file mode 100644
index 000000000000..33b858799e2a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/gqrx/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchFromGitHub, cmake, qtbase, qtsvg, gnuradio, boost, gr-osmosdr
+, mkDerivation
+# drivers (optional):
+, rtl-sdr, hackrf
+, pulseaudioSupport ? true, libpulseaudio
+}:
+
+assert pulseaudioSupport -> libpulseaudio != null;
+
+mkDerivation rec {
+  pname = "gqrx";
+  version = "2.12.1";
+
+  src = fetchFromGitHub {
+    owner = "csete";
+    repo = "gqrx";
+    rev = "v${version}";
+    sha256 = "00alf3q6y313xpx6p7v43vqsphd2x4am4q362lw21bcy9wc4jidw";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [
+    qtbase qtsvg gnuradio boost gr-osmosdr rtl-sdr hackrf
+  ] ++ stdenv.lib.optionals pulseaudioSupport [ libpulseaudio ];
+
+  enableParallelBuilding = true;
+
+  postInstall = ''
+    install -vD $src/gqrx.desktop -t "$out/share/applications/"
+    install -vD $src/resources/icons/gqrx.svg -t "$out/share/icons/"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Software defined radio (SDR) receiver";
+    longDescription = ''
+      Gqrx is a software defined radio receiver powered by GNU Radio and the Qt
+      GUI toolkit. It can process I/Q data from many types of input devices,
+      including Funcube Dongle Pro/Pro+, rtl-sdr, HackRF, and Universal
+      Software Radio Peripheral (USRP) devices.
+    '';
+    homepage = "https://gqrx.dk/";
+    # Some of the code comes from the Cutesdr project, with a BSD license, but
+    # it's currently unknown which version of the BSD license that is.
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;  # should work on Darwin / macOS too
+    maintainers = with maintainers; [ bjornfor fpletz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/hackrf/default.nix b/nixpkgs/pkgs/applications/radio/hackrf/default.nix
new file mode 100644
index 000000000000..dfd7fabcc6e0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/hackrf/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, libusb1, fftwSinglePrec }:
+
+stdenv.mkDerivation rec {
+  pname = "hackrf";
+  version = "2018.01.1";
+
+  src = fetchFromGitHub {
+    owner = "mossmann";
+    repo = "hackrf";
+    rev = "v${version}";
+    sha256 = "0idh983xh6gndk9kdgx5nzz76x3mxb42b02c5xvdqahadsfx3b9w";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkgconfig
+  ];
+
+  buildInputs = [
+    libusb1
+    fftwSinglePrec
+  ];
+
+  cmakeFlags = [ "-DUDEV_RULES_GROUP=plugdev" "-DUDEV_RULES_PATH=lib/udev/rules.d" ];
+
+  preConfigure = ''
+    cd host
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An open source SDR platform";
+    homepage = "http://greatscottgadgets.com/hackrf/";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ sjmackenzie ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/inspectrum/default.nix b/nixpkgs/pkgs/applications/radio/inspectrum/default.nix
new file mode 100644
index 000000000000..a205cec714d8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/inspectrum/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, pkgconfig
+, cmake
+, boost
+, fftwFloat
+, gnuradio
+, liquid-dsp
+, qtbase
+}:
+
+mkDerivation {
+  pname = "inspectrum";
+  version = "unstable-2017-05-31";
+
+  src = fetchFromGitHub {
+    owner = "miek";
+    repo = "inspectrum";
+    rev = "a89d1337efb31673ccb6a6681bb89c21894c76f7";
+    sha256 = "1fvnr8gca25i6s9mg9b2hyqs0zzr4jicw13mimc9dhrgxklrr1yv";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [
+    fftwFloat
+    boost
+    gnuradio
+    liquid-dsp
+    qtbase
+  ];
+
+  meta = with lib; {
+    description = "Tool for analysing captured signals from sdr receivers";
+    homepage = "https://github.com/miek/inspectrum";
+    maintainers = with maintainers; [ mog ];
+    platforms = platforms.linux;
+    license = licenses.gpl3Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/kalibrate-hackrf/default.nix b/nixpkgs/pkgs/applications/radio/kalibrate-hackrf/default.nix
new file mode 100644
index 000000000000..273d2d8c8e37
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/kalibrate-hackrf/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, fftw, hackrf, libusb1 }:
+
+stdenv.mkDerivation {
+  name = "kalibrate-hackrf-unstable-20160827";
+
+  # There are no tags/releases, so use the latest commit from git master.
+  # Currently, the latest commit is from 2016-07-03.
+  src = fetchFromGitHub {
+    owner = "scateu";
+    repo = "kalibrate-hackrf";
+    rev = "2492c20822ca6a49dce97967caf394b1d4b2c43e";
+    sha256 = "1jvn1qx7csgycxpx1k804sm9gk5a0c65z9gh8ybp9awq3pziv0nx";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+
+  buildInputs = [ fftw hackrf libusb1 ];
+
+  postInstall = ''
+    mv $out/bin/kal $out/bin/kal-hackrf
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Calculate local oscillator frequency offset in hackrf devices";
+    longDescription = ''
+      Kalibrate, or kal, can scan for GSM base stations in a given frequency
+      band and can use those GSM base stations to calculate the local
+      oscillator frequency offset.
+
+      This package is for hackrf devices.
+    '';
+    homepage = "https://github.com/scateu/kalibrate-hackrf";
+    license = licenses.bsd2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.mog ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/kalibrate-rtl/default.nix b/nixpkgs/pkgs/applications/radio/kalibrate-rtl/default.nix
new file mode 100644
index 000000000000..38913e827d09
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/kalibrate-rtl/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchgit, autoreconfHook, pkgconfig, fftw, rtl-sdr, libusb1 }:
+
+stdenv.mkDerivation {
+  name = "kalibrate-rtl-20131214";
+
+  # There are no tags/releases, so use the latest commit from git master.
+  # Currently, the latest commit is from 2013-12-14.
+  src = fetchgit {
+    url = "https://github.com/steve-m/kalibrate-rtl.git";
+    rev = "aae11c8a8dc79692a94ccfee39ba01e8c8c05d38";
+    sha256 = "1spbfflkqnw9s8317ppsf7b1nnkicqsmaqsnz1zf8i49ix70i6kn";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ fftw rtl-sdr libusb1 ];
+
+  meta = with stdenv.lib; {
+    description = "Calculate local oscillator frequency offset in RTL-SDR devices";
+    longDescription = ''
+      Kalibrate, or kal, can scan for GSM base stations in a given frequency
+      band and can use those GSM base stations to calculate the local
+      oscillator frequency offset.
+
+      This package is for RTL-SDR devices.
+    '';
+    homepage = "https://github.com/steve-m/kalibrate-rtl";
+    license = licenses.bsd2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/limesuite/default.nix b/nixpkgs/pkgs/applications/radio/limesuite/default.nix
new file mode 100644
index 000000000000..7cadceab5611
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/limesuite/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchFromGitHub, cmake
+, sqlite, wxGTK30-gtk3, libusb1, soapysdr
+, mesa_glu, libX11, gnuplot, fltk
+} :
+
+stdenv.mkDerivation rec {
+  pname = "limesuite";
+  version = "20.01.0";
+
+  src = fetchFromGitHub {
+    owner = "myriadrf";
+    repo = "LimeSuite";
+    rev = "v${version}";
+    sha256 = "01z4idcby2lm34bbnpbp400ski7p61jjiir6sy6dalnvsl52m7vx";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  cmakeFlags = [
+    "-DOpenGL_GL_PREFERENCE=GLVND"
+  ];
+
+  buildInputs = [
+    libusb1
+    sqlite
+    wxGTK30-gtk3
+    fltk
+    gnuplot
+    libusb1
+    soapysdr
+    mesa_glu
+    libX11
+  ];
+
+  postInstall = ''
+    install -Dm444 -t $out/lib/udev/rules.d ../udev-rules/64-limesuite.rules
+    install -Dm444 -t $out/share/limesuite bin/Release/lms7suite_mcu/*
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Driver and GUI for LMS7002M-based SDR platforms";
+    homepage = "https://github.com/myriadrf/LimeSuite";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ markuskowa ];
+    platforms = platforms.linux;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/radio/minimodem/default.nix b/nixpkgs/pkgs/applications/radio/minimodem/default.nix
new file mode 100644
index 000000000000..e94561e46dc8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/minimodem/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, pkgconfig, autoconf, automake, libtool
+, fftw, fftwSinglePrec, alsaLib, libsndfile, libpulseaudio
+}:
+
+stdenv.mkDerivation rec {
+  version = "0.24-1";
+  pname = "minimodem";
+
+  src = fetchFromGitHub {
+    owner = "kamalmostafa";
+    repo = "minimodem";
+    rev = "${pname}-${version}";
+    sha256 = "1b5xy36fjcp7vkp115dpx4mlmqg2fc7xvxdy648fb8im953bw7ql";
+  };
+
+  nativeBuildInputs = [ pkgconfig autoconf automake libtool ];
+  buildInputs = [ fftw fftwSinglePrec alsaLib libsndfile libpulseaudio ];
+
+  preConfigure = ''
+    aclocal \
+    && autoheader \
+    && automake --gnu --add-missing \
+    && autoconf
+  '';
+
+  meta = {
+    description = "General-purpose software audio FSK modem";
+    longDescription = ''
+    Minimodem is a command-line program which decodes (or generates) audio
+    modem tones at any specified baud rate, using various framing protocols. It
+    acts a general-purpose software FSK modem, and includes support for various
+    standard FSK protocols such as Bell103, Bell202, RTTY, NOAA SAME, and
+    Caller-ID.
+    '';
+    homepage = "http://www.whence.com/minimodem/";
+    license = stdenv.lib.licenses.gpl3Plus;
+    platforms = with stdenv.lib.platforms; linux;
+    maintainers = with stdenv.lib.maintainers; [ relrod ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/radio/multimon-ng/default.nix b/nixpkgs/pkgs/applications/radio/multimon-ng/default.nix
new file mode 100644
index 000000000000..e275db4ad919
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/multimon-ng/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, qt4, qmake4Hook, libpulseaudio }:
+let
+  version = "1.1.8";
+in
+stdenv.mkDerivation {
+  pname = "multimon-ng";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "EliasOenal";
+    repo = "multimon-ng";
+    rev = version;
+    sha256 = "1973xfyvzl1viz19zr83cgqlx5laxbjrca35rqabn6dlb6xb5xk8";
+  };
+
+  buildInputs = [ qt4 libpulseaudio ];
+
+  nativeBuildInputs = [ qmake4Hook ];
+
+  qmakeFlags = [ "multimon-ng.pro" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp multimon-ng $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Multimon is a digital baseband audio protocol decoder";
+    longDescription = ''
+      multimon-ng a fork of multimon, a digital baseband audio
+      protocol decoder for common signaling modes in commercial and
+      amateur radio data services. It decodes the following digital
+      transmission modes:
+
+      POCSAG512 POCSAG1200 POCSAG2400 EAS UFSK1200 CLIPFSK AFSK1200
+      AFSK2400 AFSK2400_2 AFSK2400_3 HAPN4800 FSK9600 DTMF ZVEI1 ZVEI2
+      ZVEI3 DZVEI PZVEI EEA EIA CCIR MORSE CW
+    '';
+    homepage = "https://github.com/EliasOenal/multimon-ng";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/pyradio/default.nix b/nixpkgs/pkgs/applications/radio/pyradio/default.nix
new file mode 100644
index 000000000000..f23359688c6c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/pyradio/default.nix
@@ -0,0 +1,24 @@
+{ lib, python3Packages, fetchFromGitHub }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "pyradio";
+  version = "0.8.7.2";
+
+  src = fetchFromGitHub {
+    owner = "coderholic";
+    repo = pname;
+    rev = version;
+    sha256 = "0h2sxaqpmc1d1kpvpbcs9wymgzhx25x0x9p7dbyfw9r90i6123q1";
+  };
+
+  checkPhase = ''
+    $out/bin/pyradio --help
+  '';
+
+  meta = with lib; {
+    homepage = "http://www.coderholic.com/pyradio/";
+    description = "Curses based internet radio player";
+    license = licenses.mit;
+    maintainers = with maintainers; [ contrun ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/qradiolink/default.nix b/nixpkgs/pkgs/applications/radio/qradiolink/default.nix
new file mode 100644
index 000000000000..4c792811dc59
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/qradiolink/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchFromGitHub, alsaLib, boost
+, qt4, libpulseaudio, codec2, libconfig
+, gnuradio, gr-osmosdr, gsm
+, libopus, libjpeg, protobuf, qwt, speex
+} :
+
+let
+  version = "0.5.0";
+
+in stdenv.mkDerivation {
+  pname = "qradiolink";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "kantooon";
+    repo = "qradiolink";
+    rev = version;
+    sha256 = "0xhg5zhjznmls5m3rhpk1qx0dipxmca12s85w15d0i7qwva2f1gi";
+  };
+
+  preBuild = ''
+    cd ext
+    protoc --cpp_out=. Mumble.proto
+    protoc --cpp_out=. QRadioLink.proto
+    cd ..
+    qmake
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp qradiolink $out/bin
+  '';
+
+  buildInputs = [
+    qt4
+    alsaLib
+    boost
+    libpulseaudio
+    codec2
+    libconfig
+    gsm
+    gnuradio
+    gr-osmosdr
+    libopus
+    libjpeg
+    protobuf
+    speex
+    qwt
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "SDR transceiver application for analog and digital modes";
+    homepage = "http://qradiolink.org/";
+    license = licenses.agpl3;
+    maintainers = [ maintainers.markuskowa ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/qsstv/default.nix b/nixpkgs/pkgs/applications/radio/qsstv/default.nix
new file mode 100644
index 000000000000..d5d12a714031
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/qsstv/default.nix
@@ -0,0 +1,36 @@
+{ mkDerivation, stdenv, fetchurl, qtbase, qmake, openjpeg, pkgconfig, fftw,
+  libpulseaudio, alsaLib, hamlib, libv4l, fftwFloat }:
+
+mkDerivation rec {
+  version = "9.4.4";
+  pname = "qsstv";
+
+  src = fetchurl {
+    url = "http://users.telenet.be/on4qz/qsstv/downloads/qsstv_${version}.tar.gz";
+    sha256 = "0f9hx6sy418cb23fadll298pqbc5l2lxsdivi4vgqbkvx7sw58zi";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [
+    qmake
+    pkgconfig
+  ];
+
+  buildInputs = [ qtbase openjpeg fftw libpulseaudio alsaLib hamlib libv4l
+                  fftwFloat ];
+
+  postInstall = ''
+    # Install desktop icon
+    install -D qsstv/icons/qsstv.png $out/share/pixmaps/qsstv.png
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Qt-based slow-scan TV and fax";
+    homepage = "http://users.telenet.be/on4qz/";
+    platforms = platforms.linux;
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = with stdenv.lib.maintainers; [ hax404 ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/radio/rtl-ais/default.nix b/nixpkgs/pkgs/applications/radio/rtl-ais/default.nix
new file mode 100644
index 000000000000..f806f07d597d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/rtl-ais/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub, pkgconfig, libusb1, rtl-sdr }:
+
+stdenv.mkDerivation {
+  name = "rtl-ais";
+  version = "0.8.1";
+  buildInputs = [ pkgconfig rtl-sdr libusb1 ];
+
+  src = fetchFromGitHub {
+    owner = "dgiardini";
+    repo = "rtl-ais";
+    rev = "0e85f4e5f9ce7378834c3129bc894580efc24291";
+    sha256 = "0wm4zai1vs89mf0zgz52q5w5rj8f3i3v6zg42hfb7aqabi25r3jf";
+  };
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    description = "A simple AIS tuner and generic dual-frequency FM demodulator";
+    homepage = "https://github.com/dgiardini/rtl-ais";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ mgdm ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/rtl-sdr/default.nix b/nixpkgs/pkgs/applications/radio/rtl-sdr/default.nix
new file mode 100644
index 000000000000..8fb5154ff788
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/rtl-sdr/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchgit, cmake, pkgconfig, libusb1 }:
+
+stdenv.mkDerivation rec {
+  pname = "rtl-sdr";
+  version = "0.6.0";
+
+  src = fetchgit {
+    url = "git://git.osmocom.org/rtl-sdr.git";
+    rev = "refs/tags/${version}";
+    sha256 = "0lmvsnb4xw4hmz6zs0z5ilsah5hjz29g1s0050n59fllskqr3b8k";
+  };
+
+  nativeBuildInputs = [ pkgconfig cmake ];
+  buildInputs = [ libusb1 ];
+
+  # TODO: get these fixes upstream:
+  # * Building with -DINSTALL_UDEV_RULES=ON tries to install udev rules to
+  #   /etc/udev/rules.d/, and there is no option to install elsewhere. So install
+  #   rules manually.
+  # * Propagate libusb-1.0 dependency in pkg-config file.
+  postInstall = stdenv.lib.optionalString stdenv.isLinux ''
+    mkdir -p "$out/etc/udev/rules.d/"
+    cp ../rtl-sdr.rules "$out/etc/udev/rules.d/99-rtl-sdr.rules"
+
+    pcfile="$out"/lib/pkgconfig/librtlsdr.pc
+    grep -q "Requires:" "$pcfile" && { echo "Upstream has added 'Requires:' in $(basename "$pcfile"); update nix expression."; exit 1; }
+    echo "Requires: libusb-1.0" >> "$pcfile"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Turns your Realtek RTL2832 based DVB dongle into a SDR receiver";
+    homepage = "http://sdr.osmocom.org/trac/wiki/rtl-sdr";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/rtl_433/default.nix b/nixpkgs/pkgs/applications/radio/rtl_433/default.nix
new file mode 100644
index 000000000000..78d0f8befc98
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/rtl_433/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig
+, libusb1, rtl-sdr, soapysdr-with-plugins
+}:
+
+stdenv.mkDerivation {
+
+  version = "20.02";
+  pname = "rtl_433";
+
+  src = fetchFromGitHub {
+    owner = "merbanan";
+    repo = "rtl_433";
+    rev = "20.02";
+    sha256 = "11991xky9gawkragdyg27qsf7kw5bhlg7ygvf3fn7ng00x4xbh1z";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+
+  buildInputs = [ libusb1 rtl-sdr soapysdr-with-plugins ];
+
+  meta = with stdenv.lib; {
+    description = "Decode traffic from devices that broadcast on 433.9 MHz";
+    homepage = "https://github.com/merbanan/rtl_433";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ earldouglas ];
+    platforms = platforms.all;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/radio/sdrangel/default.nix b/nixpkgs/pkgs/applications/radio/sdrangel/default.nix
new file mode 100644
index 000000000000..6d0a19334dec
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/sdrangel/default.nix
@@ -0,0 +1,76 @@
+{
+airspy,
+boost,
+cm256cc,
+cmake,
+codec2,
+fetchFromGitHub,
+fftwFloat,
+glew,
+hackrf,
+lib,
+libav,
+libiio,
+libopus,
+libpulseaudio,
+libusb-compat-0_1,
+limesuite,
+mkDerivation,
+ocl-icd,
+opencv3,
+pkgconfig,
+qtbase,
+qtmultimedia,
+qtwebsockets,
+rtl-sdr,
+serialdv
+}:
+
+let
+
+  codec2' = codec2.overrideAttrs (old: {
+    src = fetchFromGitHub {
+      owner = "drowe67";
+      repo = "codec2";
+      rev = "567346818c0d4d697773cf66d925fdb031e15668";
+      sha256 = "0ngqlh2cw5grx2lg7xj8baz6p55gfhq4caggxkb4pxlg817pwbpa";
+    };
+  });
+
+in mkDerivation rec {
+  pname = "sdrangel";
+  version = "4.11.12";
+
+  src = fetchFromGitHub {
+    owner = "f4exb";
+    repo = "sdrangel";
+    rev = "v${version}";
+    sha256 = "0zbx0gklylk8npb3wnnmqpam0pdxl40f20i3wzwwh4gqrppxywzx";
+    fetchSubmodules = false;
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [
+    glew opencv3 libusb-compat-0_1 boost libopus limesuite libav libiio libpulseaudio
+    qtbase qtwebsockets qtmultimedia rtl-sdr airspy hackrf
+    fftwFloat codec2' cm256cc serialdv
+  ];
+  cmakeFlags = [
+    "-DLIBSERIALDV_INCLUDE_DIR:PATH=${serialdv}/include/serialdv"
+    "-DLIMESUITE_INCLUDE_DIR:PATH=${limesuite}/include"
+    "-DLIMESUITE_LIBRARY:FILEPATH=${limesuite}/lib/libLimeSuite.so"
+  ];
+
+  LD_LIBRARY_PATH = "${ocl-icd}/lib";
+
+  meta = with lib; {
+    description = "Software defined radio (SDR) software";
+    longDescription = ''
+        SDRangel is an Open Source Qt5 / OpenGL 3.0+ SDR and signal analyzer frontend to various hardware.
+    '';
+    homepage = "https://github.com/f4exb/sdrangel";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ alkeryn ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/soapyairspy/default.nix b/nixpkgs/pkgs/applications/radio/soapyairspy/default.nix
new file mode 100644
index 000000000000..4a69e52741e7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/soapyairspy/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, cmake
+, airspy, soapysdr
+} :
+
+let
+  version = "0.1.2";
+
+in stdenv.mkDerivation {
+  pname = "soapyairspy";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "pothosware";
+    repo = "SoapyAirspy";
+    rev = "soapy-airspy-${version}";
+    sha256 = "061r77vs6ywxbxfif12y6v5xkz6gcvbz9k060q12vmdh6sisdwk2";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ airspy soapysdr ];
+
+  cmakeFlags = [ "-DSoapySDR_DIR=${soapysdr}/share/cmake/SoapySDR/" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/pothosware/SoapyAirspy";
+    description = "SoapySDR plugin for Airspy devices";
+    license = licenses.mit;
+    maintainers = with maintainers; [ markuskowa ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/soapybladerf/default.nix b/nixpkgs/pkgs/applications/radio/soapybladerf/default.nix
new file mode 100644
index 000000000000..7e2e17a84558
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/soapybladerf/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig
+, libbladeRF, soapysdr
+} :
+
+let
+  version = "0.4.1";
+
+in stdenv.mkDerivation {
+  pname = "soapybladerf";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "pothosware";
+    repo = "SoapyBladeRF";
+    rev = "soapy-bladerf-${version}";
+    sha256 = "02wh09850vinqg248fw4lxmx7y857cqmnnb8jm9zhyrsggal0hki";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [ libbladeRF soapysdr ];
+
+  cmakeFlags = [ "-DSoapySDR_DIR=${soapysdr}/share/cmake/SoapySDR/" ];
+
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/pothosware/SoapyBladeRF";
+    description = "SoapySDR plugin for BladeRF devices";
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ markuskowa ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/soapyhackrf/default.nix b/nixpkgs/pkgs/applications/radio/soapyhackrf/default.nix
new file mode 100644
index 000000000000..e472b1cc3ae9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/soapyhackrf/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig
+, hackrf, soapysdr
+} :
+
+let
+  version = "0.3.3";
+
+in stdenv.mkDerivation {
+  pname = "soapyhackrf";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "pothosware";
+    repo = "SoapyHackRF";
+    rev = "soapy-hackrf-${version}";
+    sha256 = "1awn89z462500gb3fjb7x61b1znkjri9n1d39bqfip1qk4s11pxc";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [ hackrf soapysdr ];
+
+  cmakeFlags = [ "-DSoapySDR_DIR=${soapysdr}/share/cmake/SoapySDR/" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/pothosware/SoapyHackRF";
+    description = "SoapySDR plugin for HackRF devices";
+    license = licenses.mit;
+    maintainers = with maintainers; [ markuskowa ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/soapyremote/default.nix b/nixpkgs/pkgs/applications/radio/soapyremote/default.nix
new file mode 100644
index 000000000000..ed94693db41f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/soapyremote/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, cmake, soapysdr, avahi }:
+
+let
+  version = "0.5.1";
+
+in stdenv.mkDerivation {
+  pname = "soapyremote";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "pothosware";
+    repo = "SoapyRemote";
+    rev = "soapy-remote-${version}";
+    sha256 = "1qlpjg8mh564q26mni8g6bb8w9nj7hgcq86278fszxpwpnk3jsvk";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ soapysdr avahi ];
+
+  cmakeFlags = [ "-DSoapySDR_DIR=${soapysdr}/share/cmake/SoapySDR/" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/pothosware/SoapyRemote";
+    description = "SoapySDR plugin for remote access to SDRs";
+    license = licenses.boost;
+    maintainers = with maintainers; [ markuskowa ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/soapyrtlsdr/default.nix b/nixpkgs/pkgs/applications/radio/soapyrtlsdr/default.nix
new file mode 100644
index 000000000000..8f342190ba7e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/soapyrtlsdr/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig
+, rtl-sdr, soapysdr
+} :
+
+let
+  version = "0.3.0";
+
+in stdenv.mkDerivation {
+  pname = "soapyrtlsdr";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "pothosware";
+    repo = "SoapyRTLSDR";
+    rev = "soapy-rtlsdr-${version}";
+    sha256 = "15j0s7apbg9cjr6rcbr058kl0r3szwzf00ixcbykxb77fh7c6r9w";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [ rtl-sdr soapysdr ];
+
+  cmakeFlags = [ "-DSoapySDR_DIR=${soapysdr}/share/cmake/SoapySDR/" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/pothosware/SoapyRTLSDR";
+    description = "SoapySDR plugin for RTL-SDR devices";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ragge ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/soapysdr/default.nix b/nixpkgs/pkgs/applications/radio/soapysdr/default.nix
new file mode 100644
index 000000000000..676f7d3c839e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/soapysdr/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, lib, lndir, makeWrapper
+, fetchFromGitHub, cmake
+, libusb-compat-0_1, pkgconfig
+, usePython ? false
+, python, ncurses, swig2
+, extraPackages ? []
+} :
+
+let
+
+  version = "0.7.2";
+  modulesVersion = with lib; versions.major version + "." + versions.minor version;
+  modulesPath = "lib/SoapySDR/modules" + modulesVersion;
+  extraPackagesSearchPath = lib.makeSearchPath modulesPath extraPackages;
+
+in stdenv.mkDerivation {
+  pname = "soapysdr";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "pothosware";
+    repo = "SoapySDR";
+    rev = "soapy-sdr-${version}";
+    sha256 = "102wnpjxrwba20pzdh1vvx0yg1h8vqd8z914idxflg9p14r6v5am";
+  };
+
+  nativeBuildInputs = [ cmake makeWrapper pkgconfig ];
+  buildInputs = [ libusb-compat-0_1 ncurses ]
+    ++ lib.optionals usePython [ python swig2 ];
+
+  propagatedBuildInputs = lib.optional usePython python.pkgs.numpy;
+
+  cmakeFlags = [
+    "-DCMAKE_BUILD_TYPE=Release"
+  ] ++ lib.optional usePython "-DUSE_PYTHON_CONFIG=ON";
+
+  postFixup = lib.optionalString (lib.length extraPackages != 0) ''
+    # Join all plugins via symlinking
+    for i in ${toString extraPackages}; do
+      ${lndir}/bin/lndir -silent $i $out
+    done
+    # Needed for at least the remote plugin server
+    for file in $out/bin/*; do
+        wrapProgram "$file" --prefix SOAPY_SDR_PLUGIN_PATH : ${extraPackagesSearchPath}
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/pothosware/SoapySDR";
+    description = "Vendor and platform neutral SDR support library";
+    license = licenses.boost;
+    maintainers = with maintainers; [ markuskowa ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/soapyuhd/default.nix b/nixpkgs/pkgs/applications/radio/soapyuhd/default.nix
new file mode 100644
index 000000000000..a169116c29a1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/soapyuhd/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig
+, uhd, boost, soapysdr
+} :
+
+let
+  version = "0.3.6";
+
+in stdenv.mkDerivation {
+  pname = "soapyuhd";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "pothosware";
+    repo = "SoapyUHD";
+    rev = "soapy-uhd-${version}";
+    sha256 = "11kp5iv21k8lqwjjydzqmcxdgpm6yicw6d3jhzvcvwcavd41crs7";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [ uhd boost soapysdr ];
+
+  cmakeFlags = [ "-DSoapySDR_DIR=${soapysdr}/share/cmake/SoapySDR/" ];
+
+  postPatch = ''
+    sed -i "s:DESTINATION .*uhd/modules:DESTINATION $out/lib/uhd/modules:" CMakeLists.txt
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/pothosware/SoapyAirspy";
+    description = "SoapySDR plugin for UHD devices";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ markuskowa ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/svxlink/default.nix b/nixpkgs/pkgs/applications/radio/svxlink/default.nix
new file mode 100644
index 000000000000..e06fcb5d3e67
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/svxlink/default.nix
@@ -0,0 +1,71 @@
+{ stdenv, cmake, pkgconfig, fetchFromGitHub, makeDesktopItem, alsaLib, speex
+, libopus, curl, gsm, libgcrypt, libsigcxx, popt, qtbase, qttools
+, wrapQtAppsHook, rtl-sdr, tcl, doxygen, groff }:
+
+let
+  desktopItem = makeDesktopItem rec {
+    name = "Qtel";
+    exec = "qtel";
+    icon = "qtel";
+    desktopName = name;
+    genericName = "EchoLink Client";
+    categories = "HamRadio;Qt;Network;";
+  };
+
+in stdenv.mkDerivation rec {
+  pname = "svxlink";
+  version = "19.09.1";
+
+  src = fetchFromGitHub {
+    owner = "sm0svx";
+    repo = pname;
+    rev = version;
+    sha256 = "0xmbac821w9kl7imlz0mra19mlhi0rlpbyyay26w1y7h98j4g4yp";
+  };
+
+  cmakeFlags = [
+    "-DDO_INSTALL_CHOWN=NO"
+    "-DRTLSDR_LIBRARIES=${rtl-sdr}/lib/librtlsdr.so"
+    "-DRTLSDR_INCLUDE_DIRS=${rtl-sdr}/include"
+    "../src"
+  ];
+  enableParallelBuilding = true;
+  dontWrapQtApps = true;
+
+  nativeBuildInputs = [ cmake pkgconfig doxygen groff wrapQtAppsHook ];
+
+  buildInputs = [
+    alsaLib
+    curl
+    gsm
+    libgcrypt
+    libsigcxx
+    libopus
+    popt
+    qtbase
+    qttools
+    rtl-sdr
+    speex
+    tcl
+  ];
+
+  postInstall = ''
+    rm -f $out/share/applications/*
+    cp -v ${desktopItem}/share/applications/* $out/share/applications
+    mv $out/share/icons/link.xpm $out/share/icons/qtel.xpm
+
+    wrapQtApp $out/bin/qtel
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Advanced repeater controller and EchoLink software";
+    longDescription = ''
+      Advanced repeater controller and EchoLink software for Linux including a
+      GUI, Qtel - The Qt EchoLink client
+    '';
+    homepage = "http://www.svxlink.org/";
+    license = with licenses; [ gpl2 ];
+    maintainers = with maintainers; [ zaninime ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/tlf/default.nix b/nixpkgs/pkgs/applications/radio/tlf/default.nix
new file mode 100644
index 000000000000..fd9ab82b321c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/tlf/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, autoconf, automake, pkgconfig, glib
+, perl, ncurses5, hamlib, xmlrpc_c }:
+
+stdenv.mkDerivation rec {
+  pname = "tlf";
+  version = "1.4.1";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "${pname}-${version}";
+    sha256 = "1xpgs4k27pjd9mianfknknp6mf34365bcp96wrv5xh4dhph573rj";
+  };
+
+  nativeBuildInputs = [ autoreconfHook autoconf automake pkgconfig perl ];
+  buildInputs = [ glib ncurses5 hamlib xmlrpc_c ];
+
+  configureFlags = [ "--enable-hamlib" "--enable-fldigi-xmlrpc" ];
+
+  postInstall = ''
+    mkdir -p $out/lib
+    ln -s ${ncurses5.out}/lib/libtinfo.so.5 $out/lib/libtinfo.so.5
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Advanced ham radio logging and contest program";
+    longDescription = ''
+      TLF is a curses based console mode general logging and contest program for
+      amateur radio.
+
+      It supports the CQWW, the WPX, the ARRL-DX, the ARRL-FD, the PACC and the
+      EU SPRINT shortwave contests (single operator) as well as a LOT MORE basic
+      contests, general QSO and DXpedition mode.
+    '';
+    homepage = "https://tlf.github.io/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ etu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/tqsl/default.nix b/nixpkgs/pkgs/applications/radio/tqsl/default.nix
new file mode 100644
index 000000000000..fd5f5505a672
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/tqsl/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, makeWrapper, cmake, expat, openssl, zlib, db, curl, wxGTK }:
+
+stdenv.mkDerivation rec {
+  pname = "tqsl";
+  version = "2.5.1";
+
+  src = fetchurl {
+    url = "https://www.arrl.org/files/file/LoTW%20Instructions/${pname}-${version}.tar.gz";
+    sha256 = "00v4n8pvi5qi2psjnrw611w5gg5bdlaxbsny535fsci3smyygpc0";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [
+    cmake
+    expat
+    openssl
+    zlib
+    db
+    curl
+    wxGTK
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Software for using the ARRL Logbook of the World";
+    homepage = "https://www.arrl.org/tqsl-download";
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.dpflug ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/uhd/default.nix b/nixpkgs/pkgs/applications/radio/uhd/default.nix
new file mode 100644
index 000000000000..e7ddb5787fac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/uhd/default.nix
@@ -0,0 +1,160 @@
+{ stdenv
+, fetchurl
+, fetchFromGitHub
+, cmake
+, pkgconfig
+# See https://files.ettus.com/manual_archive/v3.15.0.0/html/page_build_guide.html for dependencies explanations
+, boost
+, enableLibuhd_C_api ? true
+# requires numpy
+, enableLibuhd_Python_api ? false
+, python3 ? null
+, enableExamples ? false
+, enableUtils ? false
+, enableLiberio ? false
+, liberio ? null
+, libusb1 ? null
+, enableDpdk ? false
+, dpdk ? null
+# Devices
+, enableOctoClock ? true
+, enableMpmd ? true
+, enableB100 ? true
+, enableB200 ? true
+, enableUsrp1 ? true
+, enableUsrp2 ? true
+, enableX300 ? true
+, enableN230 ? true
+, enableN300 ? true
+, enableN320 ? true
+, enableE300 ? true
+, enableE320 ? true
+}:
+
+let
+  onOffBool = b: if b then "ON" else "OFF";
+  inherit (stdenv.lib) optionals;
+in
+
+stdenv.mkDerivation rec {
+  pname = "uhd";
+  # UHD seems to use three different version number styles: x.y.z, xxx_yyy_zzz
+  # and xxx.yyy.zzz. Hrmpf... style keeps changing
+  version = "3.15.0.0";
+
+  src = fetchFromGitHub {
+    owner = "EttusResearch";
+    repo = "uhd";
+    rev = "v${version}";
+    sha256 = "0jknln88a69fh244670nb7qrflbyv0vvdxfddb5g8ncpb6hcg8qf";
+  };
+  # Firmware images are downloaded (pre-built) from the respective release on Github
+  uhdImagesSrc = fetchurl {
+    url = "https://github.com/EttusResearch/uhd/releases/download/v${version}/uhd-images_${version}.tar.xz";
+    sha256 = "1fir1a13ac07mqhm4sr34cixiqj2difxq0870qv1wr7a7cbfw6vp";
+  };
+
+  enableParallelBuilding = true;
+
+  cmakeFlags = [
+    "-DENABLE_LIBUHD=ON"
+    "-DENABLE_USB=ON"
+    "-DENABLE_TESTS=ON" # This installs tests as well so we delete them via postPhases
+    "-DENABLE_EXAMPLES=${onOffBool enableExamples}"
+    "-DENABLE_UTILS=${onOffBool enableUtils}"
+    "-DENABLE_LIBUHD_C_API=${onOffBool enableLibuhd_C_api}"
+    "-DENABLE_LIBUHD_PYTHON_API=${onOffBool enableLibuhd_Python_api}"
+    "-DENABLE_LIBERIO=${onOffBool enableLiberio}"
+    "-DENABLE_DPDK=${onOffBool enableDpdk}"
+    # Devices
+    "-DENABLE_OCTOCLOCK=${onOffBool enableOctoClock}"
+    "-DENABLE_MPMD=${onOffBool enableMpmd}"
+    "-DENABLE_B100=${onOffBool enableB100}"
+    "-DENABLE_B200=${onOffBool enableB200}"
+    "-DENABLE_USRP1=${onOffBool enableUsrp1}"
+    "-DENABLE_USRP2=${onOffBool enableUsrp2}"
+    "-DENABLE_X300=${onOffBool enableX300}"
+    "-DENABLE_N230=${onOffBool enableN230}"
+    "-DENABLE_N300=${onOffBool enableN300}"
+    "-DENABLE_N320=${onOffBool enableN320}"
+    "-DENABLE_E300=${onOffBool enableE300}"
+    "-DENABLE_E320=${onOffBool enableE320}"
+  ]
+    # TODO: Check if this still needed
+    # ABI differences GCC 7.1
+    # /nix/store/wd6r25miqbk9ia53pp669gn4wrg9n9cj-gcc-7.3.0/include/c++/7.3.0/bits/vector.tcc:394:7: note: parameter passing for argument of type 'std::vector<uhd::range_t>::iterator {aka __gnu_cxx::__normal_iterator<uhd::range_t*, std::vector<uhd::range_t> >}' changed in GCC 7.1
+    ++ [ (stdenv.lib.optionalString stdenv.isAarch32 "-DCMAKE_CXX_FLAGS=-Wno-psabi") ]
+  ;
+
+  # Python + Mako are always required for the build itself but not necessary for runtime.
+  pythonEnv = python3.withPackages (ps: with ps; [ Mako ]
+    ++ optionals (enableLibuhd_Python_api) [ numpy setuptools ]
+    ++ optionals (enableUtils) [ requests six ]
+  );
+
+  nativeBuildInputs = [
+    cmake
+    pkgconfig
+  ]
+    # If both enableLibuhd_Python_api and enableUtils are off, we don't need
+    # pythonEnv in buildInputs as it's a 'build' dependency and not a runtime
+    # dependency
+    ++ optionals (!enableLibuhd_Python_api && !enableUtils) [ pythonEnv ]
+  ;
+  buildInputs = [
+    boost
+    libusb1
+  ]
+    # However, if enableLibuhd_Python_api *or* enableUtils is on, we need
+    # pythonEnv for runtime as well. The utilities' runtime dependencies are
+    # handled at the environment
+    ++ optionals (enableLibuhd_Python_api || enableUtils) [ pythonEnv ]
+    ++ optionals (enableLiberio) [ liberio ]
+    ++ optionals (enableDpdk) [ dpdk ]
+  ;
+
+  doCheck = true;
+
+  # Build only the host software
+  preConfigure = "cd host";
+  # TODO: Check if this still needed, perhaps relevant:
+  # https://files.ettus.com/manual_archive/v3.15.0.0/html/page_build_guide.html#build_instructions_unix_arm
+  patches = if stdenv.isAarch32 then ./neon.patch else null;
+
+  postPhases = [ "installFirmware" "removeInstalledTests" ]
+    ++ optionals (enableUtils) [ "moveUdevRules" ]
+  ;
+
+  # UHD expects images in `$CMAKE_INSTALL_PREFIX/share/uhd/images`
+  installFirmware = ''
+    mkdir -p "$out/share/uhd/images"
+    tar --strip-components=1 -xvf "${uhdImagesSrc}" -C "$out/share/uhd/images"
+  '';
+
+  # -DENABLE_TESTS=ON installs the tests, we don't need them in the output
+  removeInstalledTests = ''
+    rm -r $out/lib/uhd/tests
+  '';
+
+  # Moves the udev rules to the standard location, needed only if utils are
+  # enabled
+  moveUdevRules = ''
+    mkdir -p $out/lib/udev/rules.d
+    mv $out/lib/uhd/utils/uhd-usrp.rules $out/lib/udev/rules.d/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "USRP Hardware Driver (for Software Defined Radio)";
+    longDescription = ''
+      The USRP Hardware Driver (UHD) software is the hardware driver for all
+      USRP (Universal Software Radio Peripheral) devices.
+
+      USRP devices are designed and sold by Ettus Research, LLC and its parent
+      company, National Instruments.
+    '';
+    homepage = "https://uhd.ettus.com/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = with maintainers; [ bjornfor fpletz tomberek ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/uhd/neon.patch b/nixpkgs/pkgs/applications/radio/uhd/neon.patch
new file mode 100644
index 000000000000..18ec59c1d64b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/uhd/neon.patch
@@ -0,0 +1,19 @@
+Description: When building for armhf, enable NEON
+ NEON is part of the armhf baseline, so this will always be enabled on
+ armhf.
+Author: Paul Tagliamonte <paultag@debian.org>
+Bug-Debian: https://bugs.debian.org/873608
+Origin: vendor
+Last-Update: 2017-08-29
+
+--- uhd-3.10.2.0.orig/host/lib/convert/CMakeLists.txt
++++ uhd-3.10.2.0/host/lib/convert/CMakeLists.txt
+@@ -67,6 +67,8 @@ IF(HAVE_ARM_NEON_H AND (${CMAKE_SIZEOF_V
+         ${CMAKE_CURRENT_SOURCE_DIR}/convert_with_neon.cpp
+         ${CMAKE_CURRENT_SOURCE_DIR}/convert_neon.S
+     )
++
++    SET ( CMAKE_CXX_FLAGS "-mfpu=neon" )
+ ENDIF()
+ 
+ ########################################################################
diff --git a/nixpkgs/pkgs/applications/radio/unixcw/default.nix b/nixpkgs/pkgs/applications/radio/unixcw/default.nix
new file mode 100644
index 000000000000..fe31fd133e79
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/unixcw/default.nix
@@ -0,0 +1,37 @@
+{stdenv, fetchurl, libpulseaudio, alsaLib , pkgconfig, qt5}:
+stdenv.mkDerivation rec {
+  pname = "unixcw";
+  version = "3.5.1";
+  src = fetchurl {
+    url = "mirror://sourceforge/unixcw/unixcw_${version}.orig.tar.gz";
+    sha256 ="5f3aacd8a26e16e6eff437c7ae1e9b389956fb137eeb3de24670ce05de479e7a";
+  };
+  patches = [
+    ./remove-use-of-dlopen.patch
+  ];
+  buildInputs = [libpulseaudio alsaLib pkgconfig qt5.qtbase];
+  CFLAGS   ="-lasound -lpulse-simple";
+
+  meta = with stdenv.lib; {
+    description = "sound characters as Morse code on the soundcard or console speaker";
+    longDescription = ''
+       unixcw is a project providing libcw library and a set of programs
+       using the library: cw, cwgen, cwcp and xcwcp.
+       The programs are intended for people who want to learn receiving
+       and sending Morse code.
+       unixcw is developed and tested primarily on GNU/Linux system.
+
+       cw  reads  characters  from  an input file, or from standard input,
+       and sounds each valid character as Morse code on either the system sound card,
+       or the system console speaker.
+       After it sounds a  character, cw  echoes it to standard output.
+       The input stream can contain embedded command strings.
+       These change the parameters used when sounding the Morse code.
+       cw reports any errors in  embedded  commands
+     '';
+    homepage = "http://unixcw.sourceforge.net";
+    maintainers = [ maintainers.mafo ];
+    license = licenses.gpl2;
+    platforms=platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/unixcw/remove-use-of-dlopen.patch b/nixpkgs/pkgs/applications/radio/unixcw/remove-use-of-dlopen.patch
new file mode 100644
index 000000000000..0475c008ba22
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/unixcw/remove-use-of-dlopen.patch
@@ -0,0 +1,677 @@
+From e4b91b5a7943a3b54f555ff2e0029b83bd96b131 Mon Sep 17 00:00:00 2001
+From: MarcFontaine <MarcFontaine@users.noreply.github.com>
+Date: Sat, 9 Jun 2018 11:02:11 +0200
+Subject: [PATCH] remove use of dlopen
+
+---
+ src/libcw/libcw_alsa.c | 215 ++++++++++---------------------------------------
+ src/libcw/libcw_pa.c   | 118 ++++-----------------------
+ 2 files changed, 56 insertions(+), 277 deletions(-)
+
+diff --git a/src/libcw/libcw_alsa.c b/src/libcw/libcw_alsa.c
+index a669c6e..17c306d 100644
+--- a/src/libcw/libcw_alsa.c
++++ b/src/libcw/libcw_alsa.c
+@@ -35,7 +35,6 @@
+ 
+ 
+ 
+-#include <dlfcn.h> /* dlopen() and related symbols */
+ #include <alsa/asoundlib.h>
+ 
+ 
+@@ -65,7 +64,6 @@ static const snd_pcm_format_t CW_ALSA_SAMPLE_FORMAT = SND_PCM_FORMAT_S16; /* "Si
+ 
+ 
+ static int  cw_alsa_set_hw_params_internal(cw_gen_t *gen, snd_pcm_hw_params_t *params);
+-static int  cw_alsa_dlsym_internal(void *handle);
+ static int  cw_alsa_write_internal(cw_gen_t *gen);
+ static int  cw_alsa_debug_evaluate_write_internal(cw_gen_t *gen, int rv);
+ static int  cw_alsa_open_device_internal(cw_gen_t *gen);
+@@ -80,56 +78,6 @@ static int  cw_alsa_print_params_internal(snd_pcm_hw_params_t *hw_params);
+ 
+ 
+ 
+-static struct {
+-	void *handle;
+-
+-	int (* snd_pcm_open)(snd_pcm_t **pcm, const char *name, snd_pcm_stream_t stream, int mode);
+-	int (* snd_pcm_close)(snd_pcm_t *pcm);
+-	int (* snd_pcm_prepare)(snd_pcm_t *pcm);
+-	int (* snd_pcm_drop)(snd_pcm_t *pcm);
+-	snd_pcm_sframes_t (* snd_pcm_writei)(snd_pcm_t *pcm, const void *buffer, snd_pcm_uframes_t size);
+-
+-	const char *(* snd_strerror)(int errnum);
+-
+-	int (* snd_pcm_hw_params_malloc)(snd_pcm_hw_params_t **ptr);
+-	int (* snd_pcm_hw_params_any)(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
+-	int (* snd_pcm_hw_params_set_format)(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_format_t val);
+-	int (* snd_pcm_hw_params_set_rate_near)(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
+-	int (* snd_pcm_hw_params_set_access)(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_access_t _access);
+-	int (* snd_pcm_hw_params_set_channels)(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val);
+-	int (* snd_pcm_hw_params)(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
+-	int (* snd_pcm_hw_params_get_periods)(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
+-	int (* snd_pcm_hw_params_get_period_size)(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *frames, int *dir);
+-	int (* snd_pcm_hw_params_get_period_size_min)(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *frames, int *dir);
+-	int (* snd_pcm_hw_params_get_buffer_size)(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
+-} cw_alsa = {
+-	.handle = NULL,
+-
+-	.snd_pcm_open = NULL,
+-	.snd_pcm_close = NULL,
+-	.snd_pcm_prepare = NULL,
+-	.snd_pcm_drop = NULL,
+-	.snd_pcm_writei = NULL,
+-
+-	.snd_strerror = NULL,
+-
+-	.snd_pcm_hw_params_malloc = NULL,
+-	.snd_pcm_hw_params_any = NULL,
+-	.snd_pcm_hw_params_set_format = NULL,
+-	.snd_pcm_hw_params_set_rate_near = NULL,
+-	.snd_pcm_hw_params_set_access = NULL,
+-	.snd_pcm_hw_params_set_channels = NULL,
+-	.snd_pcm_hw_params = NULL,
+-	.snd_pcm_hw_params_get_periods = NULL,
+-	.snd_pcm_hw_params_get_period_size = NULL,
+-	.snd_pcm_hw_params_get_period_size_min = NULL,
+-	.snd_pcm_hw_params_get_buffer_size = NULL
+-};
+-
+-
+-
+-
+-
+ 
+ /**
+    \brief Check if it is possible to open ALSA output
+@@ -144,34 +92,19 @@ static struct {
+ */
+ bool cw_is_alsa_possible(const char *device)
+ {
+-	const char *library_name = "libasound.so.2";
+-	if (!cw_dlopen_internal(library_name, &(cw_alsa.handle))) {
+-		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-			      "cw_alsa: can't access ALSA library \"%s\"", library_name);
+-		return false;
+-	}
+-
+-	int rv = cw_alsa_dlsym_internal(cw_alsa.handle);
+-	if (rv < 0) {
+-		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-			      "cw_alsa: failed to resolve ALSA symbol #%d, can't correctly load ALSA library", rv);
+-		dlclose(cw_alsa.handle);
+-		return false;
+-	}
+-
+-	const char *dev = device ? device : CW_DEFAULT_ALSA_DEVICE;
++        int rv;
++        const char *dev = device ? device : CW_DEFAULT_ALSA_DEVICE;
+ 	snd_pcm_t *alsa_handle;
+-	rv = cw_alsa.snd_pcm_open(&alsa_handle,
++	rv = snd_pcm_open(&alsa_handle,
+ 				  dev,                     /* name */
+ 				  SND_PCM_STREAM_PLAYBACK, /* stream (playback/capture) */
+ 				  0);                      /* mode, 0 | SND_PCM_NONBLOCK | SND_PCM_ASYNC */
+ 	if (rv < 0) {
+ 		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+ 			      "cw_alsa: can't open ALSA device \"%s\"", dev);
+-		dlclose(cw_alsa.handle);
+ 		return false;
+ 	} else {
+-		cw_alsa.snd_pcm_close(alsa_handle);
++		snd_pcm_close(alsa_handle);
+ 		return true;
+ 	}
+ }
+@@ -204,7 +137,7 @@ int cw_alsa_write_internal(cw_gen_t *gen)
+ 	/* Send audio buffer to ALSA.
+ 	   Size of correct and current data in the buffer is the same as
+ 	   ALSA's period, so there should be no underruns */
+-	int rv = cw_alsa.snd_pcm_writei(gen->alsa_data.handle, gen->buffer, gen->buffer_n_samples);
++	int rv = snd_pcm_writei(gen->alsa_data.handle, gen->buffer, gen->buffer_n_samples);
+ 	cw_alsa_debug_evaluate_write_internal(gen, rv);
+ 	/*
+ 	cw_debug_msg ((&cw_debug_object_dev), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_INFO,
+@@ -231,7 +164,7 @@ int cw_alsa_write_internal(cw_gen_t *gen)
+ */
+ int cw_alsa_open_device_internal(cw_gen_t *gen)
+ {
+-	int rv = cw_alsa.snd_pcm_open(&gen->alsa_data.handle,
++	int rv = snd_pcm_open(&gen->alsa_data.handle,
+ 				      gen->audio_device,       /* name */
+ 				      SND_PCM_STREAM_PLAYBACK, /* stream (playback/capture) */
+ 				      0);                      /* mode, 0 | SND_PCM_NONBLOCK | SND_PCM_ASYNC */
+@@ -251,7 +184,7 @@ int cw_alsa_open_device_internal(cw_gen_t *gen)
+ 	/* TODO: move this to cw_alsa_set_hw_params_internal(),
+ 	   deallocate hw_params */
+ 	snd_pcm_hw_params_t *hw_params = NULL;
+-	rv = cw_alsa.snd_pcm_hw_params_malloc(&hw_params);
++	rv = snd_pcm_hw_params_malloc(&hw_params);
+ 	if (rv < 0) {
+ 		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+ 			      "cw_alsa: can't allocate memory for ALSA hw params");
+@@ -265,7 +198,7 @@ int cw_alsa_open_device_internal(cw_gen_t *gen)
+ 		return CW_FAILURE;
+ 	}
+ 
+-	rv = cw_alsa.snd_pcm_prepare(gen->alsa_data.handle);
++	rv = snd_pcm_prepare(gen->alsa_data.handle);
+ 	if (rv < 0) {
+ 		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+ 			      "cw_alsa: can't prepare ALSA handler");
+@@ -275,7 +208,7 @@ int cw_alsa_open_device_internal(cw_gen_t *gen)
+ 	/* Get size for data buffer */
+ 	snd_pcm_uframes_t frames; /* period size in frames */
+ 	int dir = 1;
+-	rv = cw_alsa.snd_pcm_hw_params_get_period_size_min(hw_params, &frames, &dir);
++	rv = snd_pcm_hw_params_get_period_size_min(hw_params, &frames, &dir);
+ 	cw_debug_msg ((&cw_debug_object_dev), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_INFO,
+ 		      "cw_alsa: rv = %d, ALSA buffer size would be %u frames", rv, (unsigned int) frames);
+ 
+@@ -305,14 +238,11 @@ int cw_alsa_open_device_internal(cw_gen_t *gen)
+ void cw_alsa_close_device_internal(cw_gen_t *gen)
+ {
+ 	/* "Stop a PCM dropping pending frames. " */
+-	cw_alsa.snd_pcm_drop(gen->alsa_data.handle);
+-	cw_alsa.snd_pcm_close(gen->alsa_data.handle);
++	snd_pcm_drop(gen->alsa_data.handle);
++	snd_pcm_close(gen->alsa_data.handle);
+ 
+ 	gen->audio_device_is_open = false;
+ 
+-	if (cw_alsa.handle) {
+-		dlclose(cw_alsa.handle);
+-	}
+ 
+ #if CW_DEV_RAW_SINK
+ 	if (gen->dev_raw_sink != -1) {
+@@ -332,11 +262,11 @@ int cw_alsa_debug_evaluate_write_internal(cw_gen_t *gen, int rv)
+ 	if (rv == -EPIPE) {
+ 		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_WARNING,
+ 			      "cw_alsa: underrun");
+-		cw_alsa.snd_pcm_prepare(gen->alsa_data.handle);
++		snd_pcm_prepare(gen->alsa_data.handle);
+ 	} else if (rv < 0) {
+ 		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_WARNING,
+-			      "cw_alsa: writei: %s", cw_alsa.snd_strerror(rv));
+-		cw_alsa.snd_pcm_prepare(gen->alsa_data.handle);
++			      "cw_alsa: writei: %s", snd_strerror(rv));
++		snd_pcm_prepare(gen->alsa_data.handle);
+ 	} else if (rv != gen->buffer_n_samples) {
+ 		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_WARNING,
+ 			      "cw_alsa: short write, %d != %d", rv, gen->buffer_n_samples);
+@@ -363,19 +293,19 @@ int cw_alsa_debug_evaluate_write_internal(cw_gen_t *gen, int rv)
+ int cw_alsa_set_hw_params_internal(cw_gen_t *gen, snd_pcm_hw_params_t *hw_params)
+ {
+ 	/* Get current hw configuration. */
+-	int rv = cw_alsa.snd_pcm_hw_params_any(gen->alsa_data.handle, hw_params);
++	int rv = snd_pcm_hw_params_any(gen->alsa_data.handle, hw_params);
+ 	if (rv < 0) {
+ 		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-			      "cw_alsa: get current hw params: %s", cw_alsa.snd_strerror(rv));
++			      "cw_alsa: get current hw params: %s", snd_strerror(rv));
+ 		return CW_FAILURE;
+ 	}
+ 
+ 
+ 	/* Set the sample format */
+-	rv = cw_alsa.snd_pcm_hw_params_set_format(gen->alsa_data.handle, hw_params, CW_ALSA_SAMPLE_FORMAT);
++	rv = snd_pcm_hw_params_set_format(gen->alsa_data.handle, hw_params, CW_ALSA_SAMPLE_FORMAT);
+ 	if (rv < 0) {
+ 		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-			      "cw_alsa: can't set sample format: %s", cw_alsa.snd_strerror(rv));
++			      "cw_alsa: can't set sample format: %s", snd_strerror(rv));
+ 		return CW_FAILURE;
+ 	}
+ 
+@@ -387,7 +317,7 @@ int cw_alsa_set_hw_params_internal(cw_gen_t *gen, snd_pcm_hw_params_t *hw_params
+ 	bool success = false;
+ 	for (int i = 0; cw_supported_sample_rates[i]; i++) {
+ 		rate = cw_supported_sample_rates[i];
+-		int rv = cw_alsa.snd_pcm_hw_params_set_rate_near(gen->alsa_data.handle, hw_params, &rate, &dir);
++		int rv = snd_pcm_hw_params_set_rate_near(gen->alsa_data.handle, hw_params, &rate, &dir);
+ 		if (!rv) {
+ 			if (rate != cw_supported_sample_rates[i]) {
+ 				cw_debug_msg ((&cw_debug_object_dev), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_WARNING, "cw_alsa: imprecise sample rate:");
+@@ -402,7 +332,7 @@ int cw_alsa_set_hw_params_internal(cw_gen_t *gen, snd_pcm_hw_params_t *hw_params
+ 
+ 	if (!success) {
+ 		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-			      "cw_alsa: can't get sample rate: %s", cw_alsa.snd_strerror(rv));
++			      "cw_alsa: can't get sample rate: %s", snd_strerror(rv));
+ 		return CW_FAILURE;
+         } else {
+ 		cw_debug_msg ((&cw_debug_object_dev), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_INFO,
+@@ -410,18 +340,18 @@ int cw_alsa_set_hw_params_internal(cw_gen_t *gen, snd_pcm_hw_params_t *hw_params
+ 	}
+ 
+ 	/* Set PCM access type */
+-	rv = cw_alsa.snd_pcm_hw_params_set_access(gen->alsa_data.handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED);
++	rv = snd_pcm_hw_params_set_access(gen->alsa_data.handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED);
+ 	if (rv < 0) {
+ 		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-			      "cw_alsa: can't set access type: %s", cw_alsa.snd_strerror(rv));
++			      "cw_alsa: can't set access type: %s", snd_strerror(rv));
+ 		return CW_FAILURE;
+ 	}
+ 
+ 	/* Set number of channels */
+-	rv = cw_alsa.snd_pcm_hw_params_set_channels(gen->alsa_data.handle, hw_params, CW_AUDIO_CHANNELS);
++	rv = snd_pcm_hw_params_set_channels(gen->alsa_data.handle, hw_params, CW_AUDIO_CHANNELS);
+ 	if (rv < 0) {
+ 		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-			      "cw_alsa: can't set number of channels: %s", cw_alsa.snd_strerror(rv));
++			      "cw_alsa: can't set number of channels: %s", snd_strerror(rv));
+ 		return CW_FAILURE;
+ 	}
+ 
+@@ -496,7 +426,7 @@ int cw_alsa_set_hw_params_internal(cw_gen_t *gen, snd_pcm_hw_params_t *hw_params
+ 		snd_pcm_uframes_t accepted = 0; /* buffer size in frames  */
+ 		dir = 0;
+ 		for (snd_pcm_uframes_t val = 0; val < 10000; val++) {
+-			rv = cw_alsa.snd_pcm_hw_params_test_buffer_size(gen->alsa_data.handle, hw_params, val);
++			rv = snd_pcm_hw_params_test_buffer_size(gen->alsa_data.handle, hw_params, val);
+ 			if (rv == 0) {
+ 				cw_debug_msg ((&cw_debug_object_dev), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_INFO,
+ 					      "cw_alsa: accepted buffer size: %u", (unsigned int) accepted);
+@@ -507,10 +437,10 @@ int cw_alsa_set_hw_params_internal(cw_gen_t *gen, snd_pcm_hw_params_t *hw_params
+ 		}
+ 
+ 		if (accepted > 0) {
+-			rv = cw_alsa.snd_pcm_hw_params_set_buffer_size(gen->alsa_data.handle, hw_params, accepted);
++			rv = snd_pcm_hw_params_set_buffer_size(gen->alsa_data.handle, hw_params, accepted);
+ 			if (rv < 0) {
+ 				cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-					      "cw_alsa: can't set accepted buffer size %u: %s", (unsigned int) accepted, cw_alsa.snd_strerror(rv));
++					      "cw_alsa: can't set accepted buffer size %u: %s", (unsigned int) accepted, snd_strerror(rv));
+ 			}
+ 		} else {
+ 			cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+@@ -526,7 +456,7 @@ int cw_alsa_set_hw_params_internal(cw_gen_t *gen, snd_pcm_hw_params_t *hw_params
+ 		/* this limit should be enough, "accepted" on my machine is 8 */
+ 		const unsigned int n_periods_max = 30;
+ 		for (unsigned int val = 1; val < n_periods_max; val++) {
+-			rv = cw_alsa.snd_pcm_hw_params_test_periods(gen->alsa_data.handle, hw_params, val, dir);
++			rv = snd_pcm_hw_params_test_periods(gen->alsa_data.handle, hw_params, val, dir);
+ 			if (rv == 0) {
+ 				accepted = val;
+ 				cw_debug_msg ((&cw_debug_object_dev), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_INFO,
+@@ -534,10 +464,10 @@ int cw_alsa_set_hw_params_internal(cw_gen_t *gen, snd_pcm_hw_params_t *hw_params
+ 			}
+ 		}
+ 		if (accepted > 0) {
+-			rv = cw_alsa.snd_pcm_hw_params_set_periods(gen->alsa_data.handle, hw_params, accepted, dir);
++			rv = snd_pcm_hw_params_set_periods(gen->alsa_data.handle, hw_params, accepted, dir);
+ 			if (rv < 0) {
+ 				cw_debug_msg ((&cw_debug_object_dev), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-					      "cw_alsa: can't set accepted number of periods %d: %s", accepted, cw_alsa.snd_strerror(rv));
++					      "cw_alsa: can't set accepted number of periods %d: %s", accepted, snd_strerror(rv));
+ 			}
+ 		} else {
+ 			cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+@@ -549,7 +479,7 @@ int cw_alsa_set_hw_params_internal(cw_gen_t *gen, snd_pcm_hw_params_t *hw_params
+ 		/* Test period size */
+ 		dir = 0;
+ 		for (snd_pcm_uframes_t val = 0; val < 100000; val++) {
+-			rv = cw_alsa.snd_pcm_hw_params_test_period_size(gen->alsa_data.handle, hw_params, val, dir);
++			rv = snd_pcm_hw_params_test_period_size(gen->alsa_data.handle, hw_params, val, dir);
+ 			if (rv == 0) {
+ 				cw_debug_msg ((&cw_debug_object_dev), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_INFO,
+ 					      "cw_alsa: accepted period size: %lu", val);
+@@ -562,7 +492,7 @@ int cw_alsa_set_hw_params_internal(cw_gen_t *gen, snd_pcm_hw_params_t *hw_params
+ 		/* Test buffer time */
+ 		dir = 0;
+ 		for (unsigned int val = 0; val < 100000; val++) {
+-			rv = cw_alsa.snd_pcm_hw_params_test_buffer_time(gen->alsa_data.handle, hw_params, val, dir);
++			rv = snd_pcm_hw_params_test_buffer_time(gen->alsa_data.handle, hw_params, val, dir);
+ 			if (rv == 0) {
+ 				cw_debug_msg ((&cw_debug_object_dev), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_INFO,
+ 					      "cw_alsa: accepted buffer time: %d", val);
+@@ -573,10 +503,10 @@ int cw_alsa_set_hw_params_internal(cw_gen_t *gen, snd_pcm_hw_params_t *hw_params
+ #endif /* #if CW_ALSA_HW_BUFFER_CONFIG */
+ 
+ 	/* Save hw parameters to device */
+-	rv = cw_alsa.snd_pcm_hw_params(gen->alsa_data.handle, hw_params);
++	rv = snd_pcm_hw_params(gen->alsa_data.handle, hw_params);
+ 	if (rv < 0) {
+ 		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-			      "cw_alsa: can't save hw parameters: %s", cw_alsa.snd_strerror(rv));
++			      "cw_alsa: can't save hw parameters: %s", snd_strerror(rv));
+ 		return CW_FAILURE;
+ 	} else {
+ 		return CW_SUCCESS;
+@@ -600,30 +530,30 @@ int cw_alsa_print_params_internal(snd_pcm_hw_params_t *hw_params)
+ 	unsigned int val = 0;
+ 	int dir = 0;
+ 
+-	int rv = cw_alsa.snd_pcm_hw_params_get_periods(hw_params, &val, &dir);
++	int rv = snd_pcm_hw_params_get_periods(hw_params, &val, &dir);
+ 	if (rv < 0) {
+ 		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-			      "cw_alsa: can't get 'periods': %s", cw_alsa.snd_strerror(rv));
++			      "cw_alsa: can't get 'periods': %s", snd_strerror(rv));
+ 	} else {
+ 		cw_debug_msg ((&cw_debug_object_dev), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_INFO,
+ 			      "cw_alsa: 'periods' = %u", val);
+ 	}
+ 
+ 	snd_pcm_uframes_t period_size = 0;
+-	rv = cw_alsa.snd_pcm_hw_params_get_period_size(hw_params, &period_size, &dir);
++	rv = snd_pcm_hw_params_get_period_size(hw_params, &period_size, &dir);
+ 	if (rv < 0) {
+ 		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-			      "cw_alsa: can't get 'period size': %s", cw_alsa.snd_strerror(rv));
++			      "cw_alsa: can't get 'period size': %s", snd_strerror(rv));
+ 	} else {
+ 		cw_debug_msg ((&cw_debug_object_dev), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_INFO,
+ 			      "cw_alsa: 'period size' = %u", (unsigned int) period_size);
+ 	}
+ 
+ 	snd_pcm_uframes_t buffer_size;
+-	rv = cw_alsa.snd_pcm_hw_params_get_buffer_size(hw_params, &buffer_size);
++	rv = snd_pcm_hw_params_get_buffer_size(hw_params, &buffer_size);
+ 	if (rv < 0) {
+ 		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-			      "cw_alsa: can't get buffer size: %s", cw_alsa.snd_strerror(rv));
++			      "cw_alsa: can't get buffer size: %s", snd_strerror(rv));
+ 	} else {
+ 		cw_debug_msg ((&cw_debug_object_dev), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_INFO,
+ 			      "cw_alsa: 'buffer size' = %u", (unsigned int) buffer_size);
+@@ -642,70 +572,9 @@ int cw_alsa_print_params_internal(snd_pcm_hw_params_t *hw_params)
+ 
+ 
+ 
+-/**
+-   \brief Resolve/get symbols from ALSA library
+-
+-   Function resolves/gets addresses of few ALSA functions used by
+-   libcw and stores them in cw_alsa global variable.
+-
+-   On failure the function returns negative value, different for every
+-   symbol that the funciton failed to resolve. Function stops and returns
+-   on first failure.
+-
+-   \param handle - handle to open ALSA library
+-
+-   \return 0 on success
+-   \return negative value on failure
+-*/
+-static int cw_alsa_dlsym_internal(void *handle)
+-{
+-	*(void **) &(cw_alsa.snd_pcm_open)    = dlsym(handle, "snd_pcm_open");
+-	if (!cw_alsa.snd_pcm_open)    return -1;
+-	*(void **) &(cw_alsa.snd_pcm_close)   = dlsym(handle, "snd_pcm_close");
+-	if (!cw_alsa.snd_pcm_close)   return -2;
+-	*(void **) &(cw_alsa.snd_pcm_prepare) = dlsym(handle, "snd_pcm_prepare");
+-	if (!cw_alsa.snd_pcm_prepare) return -3;
+-	*(void **) &(cw_alsa.snd_pcm_drop)    = dlsym(handle, "snd_pcm_drop");
+-	if (!cw_alsa.snd_pcm_drop)    return -4;
+-	*(void **) &(cw_alsa.snd_pcm_writei)  = dlsym(handle, "snd_pcm_writei");
+-	if (!cw_alsa.snd_pcm_writei)  return -5;
+-
+-	*(void **) &(cw_alsa.snd_strerror) = dlsym(handle, "snd_strerror");
+-	if (!cw_alsa.snd_strerror) return -10;
+-
+-	*(void **) &(cw_alsa.snd_pcm_hw_params_malloc)               = dlsym(handle, "snd_pcm_hw_params_malloc");
+-	if (!cw_alsa.snd_pcm_hw_params_malloc)              return -20;
+-	*(void **) &(cw_alsa.snd_pcm_hw_params_any)                  = dlsym(handle, "snd_pcm_hw_params_any");
+-	if (!cw_alsa.snd_pcm_hw_params_any)                 return -21;
+-	*(void **) &(cw_alsa.snd_pcm_hw_params_set_format)           = dlsym(handle, "snd_pcm_hw_params_set_format");
+-	if (!cw_alsa.snd_pcm_hw_params_set_format)          return -22;
+-	*(void **) &(cw_alsa.snd_pcm_hw_params_set_rate_near)        = dlsym(handle, "snd_pcm_hw_params_set_rate_near");
+-	if (!cw_alsa.snd_pcm_hw_params_set_rate_near)       return -23;
+-	*(void **) &(cw_alsa.snd_pcm_hw_params_set_access)           = dlsym(handle, "snd_pcm_hw_params_set_access");
+-	if (!cw_alsa.snd_pcm_hw_params_set_access)          return -24;
+-	*(void **) &(cw_alsa.snd_pcm_hw_params_set_channels)         = dlsym(handle, "snd_pcm_hw_params_set_channels");
+-	if (!cw_alsa.snd_pcm_hw_params_set_channels)        return -25;
+-	*(void **) &(cw_alsa.snd_pcm_hw_params)                      = dlsym(handle, "snd_pcm_hw_params");
+-	if (!cw_alsa.snd_pcm_hw_params)                     return -26;
+-	*(void **) &(cw_alsa.snd_pcm_hw_params_get_periods)          = dlsym(handle, "snd_pcm_hw_params_get_periods");
+-	if (!cw_alsa.snd_pcm_hw_params_get_periods)         return -27;
+-	*(void **) &(cw_alsa.snd_pcm_hw_params_get_period_size)      = dlsym(handle, "snd_pcm_hw_params_get_period_size");
+-	if (!cw_alsa.snd_pcm_hw_params_get_period_size)     return -28;
+-	*(void **) &(cw_alsa.snd_pcm_hw_params_get_period_size_min)  = dlsym(handle, "snd_pcm_hw_params_get_period_size_min");
+-	if (!cw_alsa.snd_pcm_hw_params_get_period_size_min) return -29;
+-	*(void **) &(cw_alsa.snd_pcm_hw_params_get_buffer_size)      = dlsym(handle, "snd_pcm_hw_params_get_buffer_size");
+-	if (!cw_alsa.snd_pcm_hw_params_get_buffer_size)     return -30;
+-
+-	return 0;
+-}
+-
+-
+-
+-
+-
+ void cw_alsa_drop(cw_gen_t *gen)
+ {
+-	cw_alsa.snd_pcm_drop(gen->alsa_data.handle);
++	snd_pcm_drop(gen->alsa_data.handle);
+ 
+ 	return;
+ }
+@@ -721,7 +590,7 @@ void cw_alsa_drop(cw_gen_t *gen)
+ 
+ 
+ #include <stdbool.h>
+-#include "libcw_alsa.h"
++#include "libh"
+ 
+ 
+ 
+diff --git a/src/libcw/libcw_pa.c b/src/libcw/libcw_pa.c
+index 8269e9d..e190200 100644
+--- a/src/libcw/libcw_pa.c
++++ b/src/libcw/libcw_pa.c
+@@ -39,7 +39,6 @@
+ #include <unistd.h>
+ #include <stdlib.h>
+ #include <stdbool.h>
+-#include <dlfcn.h> /* dlopen() and related symbols */
+ #include <string.h>
+ #include <assert.h>
+ #include <sys/types.h>
+@@ -63,39 +62,12 @@ extern cw_debug_t cw_debug_object_dev;
+ 
+ 
+ static pa_simple *cw_pa_simple_new_internal(pa_sample_spec *ss, pa_buffer_attr *ba, const char *device, const char *stream_name, int *error);
+-static int        cw_pa_dlsym_internal(void *handle);
+ static int        cw_pa_open_device_internal(cw_gen_t *gen);
+ static void       cw_pa_close_device_internal(cw_gen_t *gen);
+ static int        cw_pa_write_internal(cw_gen_t *gen);
+ 
+ 
+ 
+-static struct {
+-	void *handle;
+-
+-	pa_simple *(* pa_simple_new)(const char *server, const char *name, pa_stream_direction_t dir, const char *dev, const char *stream_name, const pa_sample_spec *ss, const pa_channel_map *map, const pa_buffer_attr *attr, int *error);
+-	void       (* pa_simple_free)(pa_simple *s);
+-	int        (* pa_simple_write)(pa_simple *s, const void *data, size_t bytes, int *error);
+-	pa_usec_t  (* pa_simple_get_latency)(pa_simple *s, int *error);
+-	int        (* pa_simple_drain)(pa_simple *s, int *error);
+-
+-	size_t     (* pa_usec_to_bytes)(pa_usec_t t, const pa_sample_spec *spec);
+-	char      *(* pa_strerror)(int error);
+-} cw_pa = {
+-	.handle = NULL,
+-
+-	.pa_simple_new = NULL,
+-	.pa_simple_free = NULL,
+-	.pa_simple_write = NULL,
+-	.pa_simple_get_latency = NULL,
+-	.pa_simple_drain = NULL,
+-
+-	.pa_usec_to_bytes = NULL,
+-	.pa_strerror = NULL
+-};
+-
+-
+-
+ 
+ static const pa_sample_format_t CW_PA_SAMPLE_FORMAT = PA_SAMPLE_S16LE; /* Signed 16 bit, Little Endian */
+ static const int CW_PA_BUFFER_N_SAMPLES = 1024;
+@@ -117,21 +89,6 @@ static const int CW_PA_BUFFER_N_SAMPLES = 1024;
+ */
+ bool cw_is_pa_possible(const char *device)
+ {
+-	const char *library_name = "libpulse-simple.so";
+-	if (!cw_dlopen_internal(library_name, &(cw_pa.handle))) {
+-		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-			      "libcw_pa: can't access PulseAudio library \"%s\"", library_name);
+-		return false;
+-	}
+-
+-	int rv = cw_pa_dlsym_internal(cw_pa.handle);
+-	if (rv < 0) {
+-		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-			      "libcw_pa: failed to resolve PulseAudio symbol #%d, can't correctly load PulseAudio library", rv);
+-		dlclose(cw_pa.handle);
+-		return false;
+-	}
+-
+ 	const char *dev = (char *) NULL;
+ 	if (device && strcmp(device, CW_DEFAULT_PA_DEVICE)) {
+ 		dev = device;
+@@ -145,13 +102,10 @@ bool cw_is_pa_possible(const char *device)
+ 
+ 	if (!s) {
+ 		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-			      "libcw_pa: can't connect to PulseAudio server: %s", cw_pa.pa_strerror(error));
+-		if (cw_pa.handle) {
+-			dlclose(cw_pa.handle);
+-		}
++			      "libcw_pa: can't connect to PulseAudio server: %s", pa_strerror(error));
+ 		return false;
+ 	} else {
+-		cw_pa.pa_simple_free(s);
++		pa_simple_free(s);
+ 		s = NULL;
+ 		return true;
+ 	}
+@@ -186,10 +140,10 @@ int cw_pa_write_internal(cw_gen_t *gen)
+ 
+ 	int error = 0;
+ 	size_t n_bytes = sizeof (gen->buffer[0]) * gen->buffer_n_samples;
+-	int rv = cw_pa.pa_simple_write(gen->pa_data.s, gen->buffer, n_bytes, &error);
++	int rv = pa_simple_write(gen->pa_data.s, gen->buffer, n_bytes, &error);
+ 	if (rv < 0) {
+ 		cw_debug_msg ((&cw_debug_object), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-			      "libcw_pa: pa_simple_write() failed: %s", cw_pa.pa_strerror(error));
++			      "libcw_pa: pa_simple_write() failed: %s", pa_strerror(error));
+ 	} else {
+ 		//cw_debug_msg ((&cw_debug_object_dev), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_INFO, "libcw_pa: written %d samples with PulseAudio", gen->buffer_n_samples);
+ 	}
+@@ -237,13 +191,13 @@ pa_simple *cw_pa_simple_new_internal(pa_sample_spec *ss, pa_buffer_attr *ba, con
+ 	}
+ 
+ 	// http://www.mail-archive.com/pulseaudio-tickets@mail.0pointer.de/msg03295.html
+-	ba->tlength = cw_pa.pa_usec_to_bytes(50*1000, ss);
+-	ba->minreq = cw_pa.pa_usec_to_bytes(0, ss);
+-	ba->maxlength = cw_pa.pa_usec_to_bytes(50*1000, ss);
++	ba->tlength = pa_usec_to_bytes(50*1000, ss);
++	ba->minreq = pa_usec_to_bytes(0, ss);
++	ba->maxlength = pa_usec_to_bytes(50*1000, ss);
+ 	/* ba->prebuf = ; */ /* ? */
+ 	/* ba->fragsize = sizeof(uint32_t) -1; */ /* not relevant to playback */
+ 
+-	pa_simple *s = cw_pa.pa_simple_new(NULL,                  /* server name (NULL for default) */
++	pa_simple *s = pa_simple_new(NULL,                  /* server name (NULL for default) */
+ 					   "libcw",               /* descriptive name of client (application name etc.) */
+ 					   PA_STREAM_PLAYBACK,    /* stream direction */
+ 					   dev,                   /* device/sink name (NULL for default) */
+@@ -258,47 +212,6 @@ pa_simple *cw_pa_simple_new_internal(pa_sample_spec *ss, pa_buffer_attr *ba, con
+ 
+ 
+ 
+-
+-
+-/**
+-   \brief Resolve/get symbols from PulseAudio library
+-
+-   Function resolves/gets addresses of few PulseAudio functions used by
+-   libcw and stores them in cw_pa global variable.
+-
+-   On failure the function returns negative value, different for every
+-   symbol that the funciton failed to resolve. Function stops and returns
+-   on first failure.
+-
+-   \param handle - handle to open PulseAudio library
+-
+-   \return 0 on success
+-   \return negative value on failure
+-*/
+-int cw_pa_dlsym_internal(void *handle)
+-{
+-	*(void **) &(cw_pa.pa_simple_new)         = dlsym(handle, "pa_simple_new");
+-	if (!cw_pa.pa_simple_new)         return -1;
+-	*(void **) &(cw_pa.pa_simple_free)        = dlsym(handle, "pa_simple_free");
+-	if (!cw_pa.pa_simple_free)        return -2;
+-	*(void **) &(cw_pa.pa_simple_write)       = dlsym(handle, "pa_simple_write");
+-	if (!cw_pa.pa_simple_write)       return -3;
+-	*(void **) &(cw_pa.pa_strerror)           = dlsym(handle, "pa_strerror");
+-	if (!cw_pa.pa_strerror)           return -4;
+-	*(void **) &(cw_pa.pa_simple_get_latency) = dlsym(handle, "pa_simple_get_latency");
+-	if (!cw_pa.pa_simple_get_latency) return -5;
+-	*(void **) &(cw_pa.pa_simple_drain)       = dlsym(handle, "pa_simple_drain");
+-	if (!cw_pa.pa_simple_drain)       return -6;
+-	*(void **) &(cw_pa.pa_usec_to_bytes)      = dlsym(handle, "pa_usec_to_bytes");
+-	if (!cw_pa.pa_usec_to_bytes)       return -7;
+-
+-	return 0;
+-}
+-
+-
+-
+-
+-
+ /**
+    \brief Open PulseAudio output, associate it with given generator
+ 
+@@ -325,16 +238,16 @@ int cw_pa_open_device_internal(cw_gen_t *gen)
+ 
+  	if (!gen->pa_data.s) {
+ 		cw_debug_msg ((&cw_debug_object_dev), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-			      "libcw_pa: can't connect to PulseAudio server: %s", cw_pa.pa_strerror(error));
++			      "libcw_pa: can't connect to PulseAudio server: %s", pa_strerror(error));
+ 		return false;
+ 	}
+ 
+ 	gen->buffer_n_samples = CW_PA_BUFFER_N_SAMPLES;
+ 	gen->sample_rate = gen->pa_data.ss.rate;
+ 
+-	if ((gen->pa_data.latency_usecs = cw_pa.pa_simple_get_latency(gen->pa_data.s, &error)) == (pa_usec_t) -1) {
++	if ((gen->pa_data.latency_usecs = pa_simple_get_latency(gen->pa_data.s, &error)) == (pa_usec_t) -1) {
+ 		cw_debug_msg ((&cw_debug_object_dev), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-			      "libcw_pa: pa_simple_get_latency() failed: %s", cw_pa.pa_strerror(error));
++			      "libcw_pa: pa_simple_get_latency() failed: %s", pa_strerror(error));
+ 	}
+ 
+ #if CW_DEV_RAW_SINK
+@@ -357,20 +270,17 @@ void cw_pa_close_device_internal(cw_gen_t *gen)
+ 	if (gen->pa_data.s) {
+ 		/* Make sure that every single sample was played */
+ 		int error;
+-		if (cw_pa.pa_simple_drain(gen->pa_data.s, &error) < 0) {
++		if (pa_simple_drain(gen->pa_data.s, &error) < 0) {
+ 			cw_debug_msg ((&cw_debug_object_dev), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_ERROR,
+-				      "libcw_pa: pa_simple_drain() failed: %s", cw_pa.pa_strerror(error));
++				      "libcw_pa: pa_simple_drain() failed: %s", pa_strerror(error));
+ 		}
+-		cw_pa.pa_simple_free(gen->pa_data.s);
++		pa_simple_free(gen->pa_data.s);
+ 		gen->pa_data.s = NULL;
+ 	} else {
+ 		cw_debug_msg ((&cw_debug_object_dev), CW_DEBUG_SOUND_SYSTEM, CW_DEBUG_WARNING,
+ 			      "libcw_pa: called the function for NULL PA sink");
+ 	}
+ 
+-	if (cw_pa.handle) {
+-		dlclose(cw_pa.handle);
+-	}
+ 
+ #if CW_DEV_RAW_SINK
+ 	if (gen->dev_raw_sink != -1) {
+-- 
+2.16.2
+
diff --git a/nixpkgs/pkgs/applications/radio/urh/default.nix b/nixpkgs/pkgs/applications/radio/urh/default.nix
new file mode 100644
index 000000000000..730b679ba61e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/urh/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, lib, fetchFromGitHub, python3Packages
+, hackrf, rtl-sdr, airspy, limesuite, libiio
+, qt5
+, USRPSupport ? false, uhd }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "urh";
+  version = "2.8.8";
+
+  src = fetchFromGitHub {
+    owner = "jopohl";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0knymy85n9kxj364jpxjc4v9c238b00nl40rafi1ripkqx36bsfv";
+  };
+
+  nativeBuildInputs = [ qt5.wrapQtAppsHook ];
+  buildInputs = [ hackrf rtl-sdr airspy limesuite libiio ]
+    ++ lib.optional USRPSupport uhd;
+
+  propagatedBuildInputs = with python3Packages; [
+    pyqt5 numpy psutil cython pyzmq pyaudio setuptools
+  ];
+
+  postFixup = ''
+    wrapQtApp $out/bin/urh
+  '';
+
+  doCheck = false;
+
+  meta = with lib; {
+    homepage = "https://github.com/jopohl/urh";
+    description = "Universal Radio Hacker: investigate wireless protocols like a boss";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ fpletz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/welle-io/default.nix b/nixpkgs/pkgs/applications/radio/welle-io/default.nix
new file mode 100644
index 000000000000..ce4c872821ec
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/welle-io/default.nix
@@ -0,0 +1,51 @@
+{ mkDerivation, lib, fetchFromGitHub, cmake, pkgconfig
+, qtbase, qtcharts, qtmultimedia, qtquickcontrols, qtquickcontrols2, qtgraphicaleffects
+, faad2, rtl-sdr, soapysdr-with-plugins, libusb-compat-0_1, fftwSinglePrec, lame, mpg123 }:
+let
+
+  version = "2.1";
+
+in mkDerivation {
+
+  pname = "welle-io";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "AlbrechtL";
+    repo = "welle.io";
+    rev = "v${version}";
+    sha256 = "1j63gdbd66d6rfjsxwdm2agrcww1rs4438kg7313h6zixpcc1icj";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [
+    faad2
+    fftwSinglePrec
+    lame
+    libusb-compat-0_1
+    mpg123
+    qtbase
+    qtcharts
+    qtmultimedia
+    qtquickcontrols
+    qtquickcontrols2
+    qtgraphicaleffects
+    rtl-sdr
+    soapysdr-with-plugins
+  ];
+
+  cmakeFlags = [
+    "-DRTLSDR=true" "-DSOAPYSDR=true"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "A DAB/DAB+ Software Radio";
+    homepage = "https://www.welle.io/";
+    maintainers = with maintainers; [ ck3d markuskowa ];
+    license = licenses.gpl2;
+    platforms = with platforms; [ "x86_64-linux" "i686-linux" ] ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/wsjtx/default.nix b/nixpkgs/pkgs/applications/radio/wsjtx/default.nix
new file mode 100644
index 000000000000..8e135dee5681
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/wsjtx/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchurl, asciidoc, asciidoctor, autoconf, automake, cmake,
+  docbook_xsl, fftw, fftwFloat, gfortran, libtool, libusb1, qtbase,
+  qtmultimedia, qtserialport, qttools, texinfo, wrapQtAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "wsjtx";
+  version = "2.1.2";
+
+  # This is a "superbuild" tarball containing both wsjtx and a hamlib fork
+  src = fetchurl {
+    url = "http://physics.princeton.edu/pulsar/k1jt/wsjtx-${version}.tgz";
+    sha256 = "0aj3wg5xjjqwjvw6lra171ag5wq86w0hf1ra4k8mnaf0mc1qgbyl";
+  };
+
+  # Hamlib builds with autotools, wsjtx builds with cmake
+  # Omitting pkgconfig because it causes issues locating the built hamlib
+  nativeBuildInputs = [
+    asciidoc asciidoctor autoconf automake cmake docbook_xsl gfortran libtool
+    qttools texinfo wrapQtAppsHook
+  ];
+  buildInputs = [ fftw fftwFloat libusb1 qtbase qtmultimedia qtserialport ];
+
+  # Remove Git dependency from superbuild since sources are included
+  patches = [ ./super.patch ];
+
+  # Superbuild has its own patch step after it extracts the inner archives
+  postPatch = "cp ${./wsjtx.patch} wsjtx.patch";
+
+  meta = with stdenv.lib; {
+    description = "Weak-signal digital communication modes for amateur radio";
+    longDescription = ''
+      WSJT-X implements communication protocols or "modes" called FT4, FT8, JT4,
+      JT9, JT65, QRA64, ISCAT, MSK144, and WSPR, as well as one called Echo for
+      detecting and measuring your own radio signals reflected from the Moon.
+      These modes were all designed for making reliable, confirmed ham radio
+      contacts under extreme weak-signal conditions.
+    '';
+    homepage = "https://physics.princeton.edu/pulsar/k1jt/wsjtx.html";
+    # Older licenses are for the statically-linked hamlib
+    license = with licenses; [ gpl3Plus gpl2Plus lgpl21Plus ];
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ lasandell ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/radio/wsjtx/super.patch b/nixpkgs/pkgs/applications/radio/wsjtx/super.patch
new file mode 100644
index 000000000000..d903171ffc5a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/wsjtx/super.patch
@@ -0,0 +1,12 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 3bf97a4..2c9dce5 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -23,7 +23,6 @@ source tarball." )
+ #
+ # Find_library (USB_LIBRARY NAMES libusb.a usb)
+ Find_program (PATCH_EXECUTABLE patch REQUIRED)
+-Find_package (Git REQUIRED)
+ 
+ #
+ # extra C flags to minimize hamlib excutable sizes
diff --git a/nixpkgs/pkgs/applications/radio/wsjtx/wsjtx.patch b/nixpkgs/pkgs/applications/radio/wsjtx/wsjtx.patch
new file mode 100644
index 000000000000..fd7c40fdc13d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/wsjtx/wsjtx.patch
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 3e7e816b..e7dbb14a 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -885,6 +885,6 @@
+ #
+ 
+ # Widgets finds its own dependencies.
+-find_package (Qt5 COMPONENTS Widgets Multimedia PrintSupport Sql LinguistTools REQUIRED)
++find_package (Qt5 COMPONENTS Widgets Multimedia PrintSupport Sql LinguistTools SerialPort REQUIRED)
+ 
+ if (WIN32)
+   add_definitions (-DQT_NEEDS_QTMAIN)
diff --git a/nixpkgs/pkgs/applications/radio/xlog/default.nix b/nixpkgs/pkgs/applications/radio/xlog/default.nix
new file mode 100644
index 000000000000..e92c216466fc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/radio/xlog/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, glib, gtk2, pkgconfig, hamlib }:
+stdenv.mkDerivation rec {
+  pname = "xlog";
+  version = "2.0.19";
+
+  src = fetchurl {
+    url = "https://download.savannah.gnu.org/releases/xlog/${pname}-${version}.tar.gz";
+    sha256 = "0y38gkcm4mgv6wn31pjq6d5bm22m63rpwa55qjmrlywrmw76rppy";
+  };
+
+  # glib-2.62 deprecations
+  NIX_CFLAGS_COMPILE = "-DGLIB_DISABLE_DEPRECATION_WARNINGS";
+
+  buildInputs = [ glib pkgconfig gtk2 hamlib ];
+
+  meta = with stdenv.lib; {
+    description = "An amateur radio logging program";
+    longDescription =
+      '' Xlog is an amateur radio logging program.
+         It supports cabrillo, ADIF, trlog (format also used by tlf),
+         and EDI (ARRL VHF/UHF contest format) and can import twlog, editest and OH1AA logbook files.
+         Xlog is able to do DXCC lookups and will display country information, CQ and ITU zone,
+         location in latitude and longitude and distance and heading in kilometers or miles,
+         both for short and long path.
+      '';
+    homepage = "https://www.nongnu.org/xlog";
+    maintainers = [ maintainers.mafo ];
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/astronomy/astrolabe-generator/default.nix b/nixpkgs/pkgs/applications/science/astronomy/astrolabe-generator/default.nix
new file mode 100644
index 000000000000..cb3f3131ea14
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/astronomy/astrolabe-generator/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, jre, makeWrapper, unzip }:
+
+stdenv.mkDerivation rec {
+  pname = "astrolabe-generator";
+  version = "3.3";
+
+  src = fetchurl {
+    url = "https://github.com/wymarc/astrolabe-generator/releases/download/v${version}/AstrolabeGenerator-${version}.zip";
+    sha256 = "141gfmrqa1mf2qas87qig4phym9fg9gbrcfl2idzd5gi91824dn9";
+  };
+
+  buildInputs = [ jre ];
+  nativeBuildInputs = [ makeWrapper unzip ];
+  sourceRoot = ".";
+
+  installPhase = ''
+    mkdir -p $out/{bin,share/java}
+    cp AstrolabeGenerator-${version}.jar $out/share/java
+
+    makeWrapper ${jre}/bin/java $out/bin/AstrolabeGenerator \
+      --add-flags "-jar $out/share/java/AstrolabeGenerator-${version}.jar"
+  '';
+
+  meta = with stdenv.lib;{
+    homepage = "https://www.astrolabeproject.com";
+    description = "A Java-based tool for generating EPS files for constructing astrolabes and related tools";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.genesis ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/astronomy/celestia/default.nix b/nixpkgs/pkgs/applications/science/astronomy/celestia/default.nix
new file mode 100644
index 000000000000..340641917e4f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/astronomy/celestia/default.nix
@@ -0,0 +1,75 @@
+{ stdenv, fetchurl, freeglut, gtk2, gtkglext, libjpeg_turbo, libtheora, libXmu
+, lua, libGLU, libGL, pkgconfig, perl, autoreconfHook
+}:
+
+let
+  name = "celestia-1.6.1";
+
+  gcc46Patch = fetchurl {
+    url = "https://projects.archlinux.org/svntogit/packages.git/plain/trunk/celestia-1.6.1-gcc46.patch?h=packages/celestia";
+    sha256 = "0my7dpyh5wpz5df7bjhwb4db3ci2rn8ib1nkjv15fbp1g76bxfaz";
+    name = "celestia-1.6.1-gcc46.patch";
+  };
+
+  libpng15Patch = fetchurl {
+    url = "https://projects.archlinux.org/svntogit/packages.git/plain/trunk/celestia-1.6.1-libpng15.patch?h=packages/celestia";
+    sha256 = "1jrmbwmvs9b6k2b2g4104q22v4vqi0wfpz6hmfhniaq34626jcms";
+    name = "celestia-1.6.1-libpng15.patch";
+  };
+
+  libpng16Patch = fetchurl {
+    url = "https://projects.archlinux.org/svntogit/packages.git/plain/trunk/celestia-1.6.1-libpng16.patch?h=packages/celestia";
+    sha256 = "1q85prw4ci6d50lri8w1jm19pghxw96qizf5dl4g0j86rlhlkc8f";
+    name = "celestia-1.6.1-libpng16.patch";
+  };
+
+  linkingPatch = fetchurl {
+    url = "https://projects.archlinux.org/svntogit/packages.git/plain/trunk/celestia-1.6.1-linking.patch?h=packages/celestia";
+    sha256 = "1m8xyq26nm352828bp12c3b8f6m9bys9fwfxbfzqppllk7il2f24";
+    name = "celestia-1.6.1-linking.patch";
+  };
+
+  gcc47Patch = fetchurl {
+    url = "https://projects.archlinux.org/svntogit/packages.git/plain/trunk/gcc-4.7-fixes.diff?h=packages/celestia";
+    sha256 = "1na26c7pv9qfv8a981m1zvglhv05r3h8513xqjra91qhhzx8wr8n";
+    name = "gcc-4.7-fixes.diff";
+  };
+in
+stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchurl {
+    url = "mirror://sourceforge/celestia/${name}.tar.gz";
+    sha256 = "1i1lvhbgllsh2z8i6jj4mvrjak4a7r69psvk7syw03s4p7670mfk";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ freeglut gtk2 gtkglext libjpeg_turbo libtheora libXmu libGLU libGL lua
+    perl autoreconfHook ];
+
+  patchPhase = ''
+    patch -Np0 -i "${gcc46Patch}"
+    patch -Np0 -i "${libpng15Patch}"
+    patch -Np2 -i "${libpng16Patch}"
+    patch -Np1 -i "${linkingPatch}"
+    patch -Np1 -i "${gcc47Patch}"
+  '';
+
+  configureFlags = [
+    "--with-gtk"
+    "--with-lua=${lua}"
+  ];
+
+  installPhase = ''make MKDIR_P="mkdir -p" install'';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Free space simulation";
+    homepage = "https://celestia.space/";
+    license = stdenv.lib.licenses.gpl2;
+
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.peti ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/astronomy/gildas/aarch64.patch b/nixpkgs/pkgs/applications/science/astronomy/gildas/aarch64.patch
new file mode 100644
index 000000000000..40696a03dec7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/astronomy/gildas/aarch64.patch
@@ -0,0 +1,12 @@
+diff -ruN gildas-src-jul18a/admin/define-system.sh gildas-src-jul18a.aarch64/admin/define-system.sh
+--- gildas-src-jul18a/admin/define-system.sh	2018-06-12 15:22:32.000000000 +0200
++++ gildas-src-jul18a.aarch64/admin/define-system.sh	2018-07-21 13:05:52.000000000 +0200
+@@ -174,7 +174,7 @@
+     DEFAULT_CONFIG=          # Default config is empty
+     case `uname` in
+         Linux)
+-            if [ `uname -m | grep -c "x86_64"` -ne 0 ]; then
++            if [ `uname -m | grep -c "64"` -ne 0 ]; then
+         	GAG_MACHINE=x86_64
+             else
+         	GAG_MACHINE=pc
diff --git a/nixpkgs/pkgs/applications/science/astronomy/gildas/clang.patch b/nixpkgs/pkgs/applications/science/astronomy/gildas/clang.patch
new file mode 100644
index 000000000000..4d6654a99aee
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/astronomy/gildas/clang.patch
@@ -0,0 +1,22 @@
+diff -ruN gildas-src-jun18a/admin/define-system.sh gildas-src-jun18a.clang/admin/define-system.sh
+--- gildas-src-jun18a/admin/define-system.sh	2018-03-12 11:07:57.000000000 +0100
++++ gildas-src-jun18a.clang/admin/define-system.sh	2018-06-12 14:56:14.000000000 +0200
+@@ -218,13 +218,13 @@
+         	else
+         	    GAG_MACHINE=pc
+         	fi
+-                if which gcc > /dev/null 2>&1; then
+-                    DEFAULT_CCOMPILER=gcc
++                if which clang > /dev/null 2>&1; then
++                    DEFAULT_CCOMPILER=clang
+                 fi
+-                if which g++ > /dev/null 2>&1; then
+-                    DEFAULT_CXXCOMPILER=g++
+-                elif which clang++ > /dev/null 2>&1; then
++                if which clang++ > /dev/null 2>&1; then
+                     DEFAULT_CXXCOMPILER=clang++
++                elif which g++ > /dev/null 2>&1; then
++                    DEFAULT_CXXCOMPILER=g++
+                 fi
+         	if which ifort > /dev/null 2>&1; then
+         	    DEFAULT_FCOMPILER=ifort
diff --git a/nixpkgs/pkgs/applications/science/astronomy/gildas/default.nix b/nixpkgs/pkgs/applications/science/astronomy/gildas/default.nix
new file mode 100644
index 000000000000..38d8e23a811b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/astronomy/gildas/default.nix
@@ -0,0 +1,70 @@
+{ stdenv, fetchurl, gtk2-x11 , pkgconfig , python3 , gfortran , lesstif
+, cfitsio , getopt , perl , groff , which, darwin, ncurses
+}:
+
+let
+  python3Env = python3.withPackages(ps: with ps; [ numpy ]);
+in
+
+stdenv.mkDerivation rec {
+  srcVersion = "feb20a";
+  version = "20200201_a";
+  pname = "gildas";
+
+  src = fetchurl {
+    # For each new release, the upstream developers of Gildas move the
+    # source code of the previous release to a different directory
+    urls = [ "http://www.iram.fr/~gildas/dist/gildas-src-${srcVersion}.tar.xz"
+      "http://www.iram.fr/~gildas/dist/archive/gildas/gildas-src-${srcVersion}.tar.xz" ];
+    sha256 = "05f34kpi3pfgf4dsyka7mkcln26yzb2mixnnc306krq0isjm7m26";
+  };
+
+  nativeBuildInputs = [ pkgconfig groff perl getopt gfortran which ];
+
+  buildInputs = [ gtk2-x11 lesstif cfitsio python3Env ncurses ]
+    ++ stdenv.lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ CoreFoundation ]);
+
+  patches = [ ./wrapper.patch ./clang.patch ./aarch64.patch ];
+
+  NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.cc.isClang "-Wno-unused-command-line-argument";
+
+  NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isDarwin (with darwin.apple_sdk.frameworks; "-F${CoreFoundation}/Library/Frameworks");
+
+  configurePhase=''
+    substituteInPlace admin/wrapper.sh --replace '%%OUT%%' $out
+    substituteInPlace admin/wrapper.sh --replace '%%PYTHONHOME%%' ${python3Env}
+    substituteInPlace utilities/main/gag-makedepend.pl --replace '/usr/bin/perl' ${perl}/bin/perl
+    source admin/gildas-env.sh -c gfortran -o openmp
+    echo "gag_doc:        $out/share/doc/" >> kernel/etc/gag.dico.lcl
+  '';
+
+  postInstall=''
+    mkdir -p $out/bin
+    cp -a ../gildas-exe-${srcVersion}/* $out
+    mv $out/$GAG_EXEC_SYSTEM $out/libexec
+    cp admin/wrapper.sh $out/bin/gildas-wrapper.sh
+    chmod 755 $out/bin/gildas-wrapper.sh
+    for i in $out/libexec/bin/* ; do
+      ln -s $out/bin/gildas-wrapper.sh $out/bin/$(basename "$i")
+    done
+  '';
+
+  meta = {
+    description = "Radioastronomy data analysis software";
+    longDescription = ''
+      GILDAS is a collection of state-of-the-art software
+      oriented toward (sub-)millimeter radioastronomical
+      applications (either single-dish or interferometer).
+      It is daily used to reduce all data acquired with the
+      IRAM 30M telescope and Plateau de Bure Interferometer
+      PDBI (except VLBI observations). GILDAS is easily
+      extensible. GILDAS is written in Fortran-90, with a
+      few parts in C/C++ (mainly keyboard interaction,
+      plotting, widgets).'';
+    homepage = "http://www.iram.fr/IRAMFR/GILDAS/gildas.html";
+    license = stdenv.lib.licenses.free;
+    maintainers = [ stdenv.lib.maintainers.bzizou stdenv.lib.maintainers.smaret ];
+    platforms = stdenv.lib.platforms.all;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/science/astronomy/gildas/wrapper.patch b/nixpkgs/pkgs/applications/science/astronomy/gildas/wrapper.patch
new file mode 100644
index 000000000000..2e470a1e9cdc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/astronomy/gildas/wrapper.patch
@@ -0,0 +1,19 @@
+diff --new-file -r -u gildas-src-feb17d.orig/admin/wrapper.sh gildas-src-feb17d/admin/wrapper.sh
+--- gildas-src-feb17d.orig/admin/wrapper.sh	1970-01-01 01:00:00.000000000 +0100
++++ gildas-src-feb17d/admin/wrapper.sh	2017-05-18 21:00:01.660778782 +0200
+@@ -0,0 +1,15 @@
++#!/bin/sh -e
++
++export GAG_ROOT_DIR="%%OUT%%"
++export GAG_PATH="${GAG_ROOT_DIR}/etc"
++export GAG_EXEC_SYSTEM="libexec"
++export PYTHONHOME="%%PYTHONHOME%%"
++if [ -z "\$PYTHONPATH" ]; then
++  PYTHONPATH="${GAG_ROOT_DIR}/${GAG_EXEC_SYSTEM}/python"
++else
++  PYTHONPATH="${GAG_ROOT_DIR}/${GAG_EXEC_SYSTEM}/python:${PYTHONPATH}"
++fi
++export PYTHONPATH
++export LD_LIBRARY_PATH=${GAG_ROOT_DIR}/${GAG_EXEC_SYSTEM}/lib/
++me=`basename $0`
++exec ${GAG_ROOT_DIR}/${GAG_EXEC_SYSTEM}/bin/${me} ${*}
diff --git a/nixpkgs/pkgs/applications/science/astronomy/gpredict/default.nix b/nixpkgs/pkgs/applications/science/astronomy/gpredict/default.nix
new file mode 100644
index 000000000000..1ae80c0b0aa6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/astronomy/gpredict/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, pkgconfig, intltool
+, gtk3, glib, curl, goocanvas2, gpsd
+, hamlib, wrapGAppsHook
+}:
+
+let
+  version = "2.2.1";
+in stdenv.mkDerivation {
+  pname = "gpredict";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://github.com/csete/gpredict/releases/download/v${version}/gpredict-${version}.tar.bz2";
+    sha256 = "0hwf97kng1zy8rxyglw04x89p0bg07zq30hgghm20yxiw2xc8ng7";
+  };
+
+  nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ];
+  buildInputs = [ curl glib gtk3 goocanvas2 gpsd hamlib ];
+
+  meta = with stdenv.lib; {
+    description = "Real time satellite tracking and orbit prediction";
+    longDescription = ''
+      Gpredict is a real time satellite tracking and orbit prediction program
+      written using the GTK widgets. Gpredict is targetted mainly towards ham radio
+      operators but others interested in satellite tracking may find it useful as
+      well. Gpredict uses the SGP4/SDP4 algorithms, which are compatible with the
+      NORAD Keplerian elements.
+    '';
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    homepage = "http://gpredict.oz9aec.net/";
+    maintainers = [ maintainers.markuskowa maintainers.cmcdragonkai ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/astronomy/gravit/default.nix b/nixpkgs/pkgs/applications/science/astronomy/gravit/default.nix
new file mode 100644
index 000000000000..0a98563ed0e5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/astronomy/gravit/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, SDL, SDL_ttf, SDL_image, libSM, libICE, libGLU, libGL, libpng, lua5, autoconf, automake }:
+
+stdenv.mkDerivation rec {
+  name = "gravit-0.5.1";
+
+  src = fetchurl {
+    url = "https://gravit.slowchop.com/media/downloads/${name}.tgz";
+    sha256 = "14vf7zj2bgrl96wsl3f1knsggc8h9624354ajzd72l46y09x5ky7";
+  };
+
+  buildInputs = [ libGLU libGL SDL SDL_ttf SDL_image lua5 libpng libSM libICE ];
+
+  nativeBuildInputs = [ autoconf automake ];
+
+  preConfigure = ''
+    ./autogen.sh
+
+    # Build fails on Linux with windres.
+    export ac_cv_prog_WINDRES=
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    homepage = "https://gravit.slowchop.com";
+    description = "Beautiful OpenGL-based gravity simulator";
+    license = stdenv.lib.licenses.gpl2;
+
+    longDescription = ''
+      Gravit is a gravity simulator which runs under Linux, Windows and
+      macOS. It uses Newtonian physics using the Barnes-Hut N-body
+      algorithm. Although the main goal of Gravit is to be as accurate
+      as possible, it also creates beautiful looking gravity patterns.
+      It records the history of each particle so it can animate and
+      display a path of its travels. At any stage you can rotate your
+      view in 3D and zoom in and out.
+    '';
+
+    platforms = stdenv.lib.platforms.mesaPlatforms;
+    hydraPlatforms = stdenv.lib.platforms.linux; # darwin times out
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/astronomy/kstars/default.nix b/nixpkgs/pkgs/applications/science/astronomy/kstars/default.nix
new file mode 100644
index 000000000000..0b53e3e85ac3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/astronomy/kstars/default.nix
@@ -0,0 +1,48 @@
+{
+  mkDerivation, lib, fetchgit,
+  extra-cmake-modules,
+
+  kconfig, kdoctools, kguiaddons, ki18n, kinit, kiconthemes, kio,
+  knewstuff, kplotting, kwidgetsaddons, kxmlgui,
+
+  qtx11extras, qtwebsockets,
+
+  eigen, zlib,
+
+  cfitsio, indilib, xplanet
+}:
+
+mkDerivation {
+  name = "kstars";
+  
+  src = fetchgit {
+    url = "https://anongit.kde.org/kstars.git";
+    rev = "7acc527939280edd22823371dc4e22494c6c626a";
+    sha256 = "1n1lgi7p3dj893fdnzjbnrha40p4apl0dy8zppcabxwrb1khb84v";
+  };
+  
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kconfig kdoctools kguiaddons ki18n kinit kiconthemes kio
+    knewstuff kplotting kwidgetsaddons kxmlgui
+
+    qtx11extras qtwebsockets
+
+    eigen zlib
+
+    cfitsio indilib xplanet
+  ];
+
+  meta = with lib; {
+    description = "Virtual planetarium astronomy software";
+    homepage = "https://kde.org/applications/education/org.kde.kstars";
+    longDescription = ''
+      It provides an accurate graphical simulation of the night sky, from any location on Earth, at any date and time.
+      The display includes up to 100 million stars, 13.000 deep-sky objects, all 8 planets, the Sun and Moon, and thousands of comets, asteroids, supernovae, and satellites.
+      For students and teachers, it supports adjustable simulation speeds in order to view phenomena that happen over long timescales, the KStars Astrocalculator to predict conjunctions, and many common astronomical calculations.
+    '';
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ timput ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/astronomy/openspace/assets.patch b/nixpkgs/pkgs/applications/science/astronomy/openspace/assets.patch
new file mode 100644
index 000000000000..38c17ad4593a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/astronomy/openspace/assets.patch
@@ -0,0 +1,100 @@
+diff --git a/data/assets/scene/solarsystem/planets/jupiter/jup310.asset b/data/assets/scene/solarsystem/planets/jupiter/jup310.asset
+index c15f6d9..1f8ddaf 100755
+--- a/data/assets/scene/solarsystem/planets/jupiter/jup310.asset
++++ b/data/assets/scene/solarsystem/planets/jupiter/jup310.asset
+@@ -1,8 +1,8 @@
+-local Kernels = asset.syncedResource({
+-    Name = "Jupiter Spice Kernels (jup310)",
+-    Type = "TorrentSynchronization",
+-    Identifier = "jup310",
+-    Magnet = "magnet:?xt=urn:btih:E8B7D7E136DE1C6249158B254BFC8B9ECE2A0539&dn=jup310.bsp&tr=udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.publicbt.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.ccc.de%3a80%2fannounce"
+-})
++-- local Kernels = asset.syncedResource({
++--     Name = "Jupiter Spice Kernels (jup310)",
++--     Type = "TorrentSynchronization",
++--     Identifier = "jup310",
++--     Magnet = "magnet:?xt=urn:btih:E8B7D7E136DE1C6249158B254BFC8B9ECE2A0539&dn=jup310.bsp&tr=udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.publicbt.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.ccc.de%3a80%2fannounce"
++-- })
+ 
+-asset.export("Kernels", Kernels .. '/jup310.bsp')
++-- asset.export("Kernels", Kernels .. '/jup310.bsp')
+diff --git a/data/assets/scene/solarsystem/planets/mars/mar097.asset b/data/assets/scene/solarsystem/planets/mars/mar097.asset
+index e77d67d..8d738a6 100755
+--- a/data/assets/scene/solarsystem/planets/mars/mar097.asset
++++ b/data/assets/scene/solarsystem/planets/mars/mar097.asset
+@@ -1,8 +1,8 @@
+-local Kernels = asset.syncedResource({
+-    Name = "Mars Spice Kernels",
+-    Type = "TorrentSynchronization",
+-    Identifier = "mat097",
+-    Magnet = "magnet:?xt=urn:btih:308F326B9AF864294D73042FBBED33B17291E27E&dn=mar097.bsp&tr=udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.publicbt.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.ccc.de%3a80%2fannounce"
+-})
++-- local Kernels = asset.syncedResource({
++--     Name = "Mars Spice Kernels",
++--     Type = "TorrentSynchronization",
++--     Identifier = "mat097",
++--     Magnet = "magnet:?xt=urn:btih:308F326B9AF864294D73042FBBED33B17291E27E&dn=mar097.bsp&tr=udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.publicbt.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.ccc.de%3a80%2fannounce"
++-- })
+ 
+-asset.export("Kernels", Kernels .. '/mar097.bsp')
++-- asset.export("Kernels", Kernels .. '/mar097.bsp')
+diff --git a/data/assets/scene/solarsystem/planets/neptune/nep081.asset b/data/assets/scene/solarsystem/planets/neptune/nep081.asset
+index e9c49ce..cfb5fac 100755
+--- a/data/assets/scene/solarsystem/planets/neptune/nep081.asset
++++ b/data/assets/scene/solarsystem/planets/neptune/nep081.asset
+@@ -1,8 +1,8 @@
+-local Kernels = asset.syncedResource({
+-    Name = "Neptune Spice Kernels (nep081)",
+-    Type = "TorrentSynchronization",
+-    Identifier = "nep081",
+-    Magnet = "magnet:?xt=urn:btih:A6079CF8D4BF3B6BB38F4F9F633CB7724FF91693&dn=nep081.bsp&tr=udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.publicbt.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.ccc.de%3a80%2fannounce"
+-})
++-- local Kernels = asset.syncedResource({
++--     Name = "Neptune Spice Kernels (nep081)",
++--     Type = "TorrentSynchronization",
++--     Identifier = "nep081",
++--     Magnet = "magnet:?xt=urn:btih:A6079CF8D4BF3B6BB38F4F9F633CB7724FF91693&dn=nep081.bsp&tr=udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.publicbt.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.ccc.de%3a80%2fannounce"
++-- })
+ 
+-asset.export("Kernels", Kernels .. '/nep081.bsp')
++-- asset.export("Kernels", Kernels .. '/nep081.bsp')
+diff --git a/data/assets/scene/solarsystem/planets/saturn/sat375.asset b/data/assets/scene/solarsystem/planets/saturn/sat375.asset
+index a55f2ed..f904b3c 100755
+--- a/data/assets/scene/solarsystem/planets/saturn/sat375.asset
++++ b/data/assets/scene/solarsystem/planets/saturn/sat375.asset
+@@ -1,8 +1,8 @@
+-local Kernels = asset.syncedResource({
+-    Name = "Saturn Spice Kernels (sat375)",
+-    Type = "TorrentSynchronization",
+-    Identifier = "sat375",
+-    Magnet = "magnet:?xt=urn:btih:79083d2069df389e65d7688bb326c7aaf1953845&dn=sat375.bsp"
+-})
++-- local Kernels = asset.syncedResource({
++--     Name = "Saturn Spice Kernels (sat375)",
++--     Type = "TorrentSynchronization",
++--     Identifier = "sat375",
++--     Magnet = "magnet:?xt=urn:btih:79083d2069df389e65d7688bb326c7aaf1953845&dn=sat375.bsp"
++-- })
+ 
+-asset.export("Kernels", Kernels .. '/sat375.bsp')
++-- asset.export("Kernels", Kernels .. '/sat375.bsp')
+diff --git a/data/assets/scene/solarsystem/planets/uranus/ura111.asset b/data/assets/scene/solarsystem/planets/uranus/ura111.asset
+index 665d059..8f95f34 100755
+--- a/data/assets/scene/solarsystem/planets/uranus/ura111.asset
++++ b/data/assets/scene/solarsystem/planets/uranus/ura111.asset
+@@ -1,8 +1,8 @@
+-local Kernels = asset.syncedResource({
+-    Name = "Uranus Spice Kernels (ura111)",
+-    Type = "TorrentSynchronization",
+-    Identifier = "ura111",
+-    Magnet = "magnet:?xt=urn:btih:26C4903D1A12AE439480F31B45BAEB5781D2B305&dn=ura111.bsp&tr=udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.publicbt.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.ccc.de%3a80%2fannounce"
+-})
++-- local Kernels = asset.syncedResource({
++--     Name = "Uranus Spice Kernels (ura111)",
++--     Type = "TorrentSynchronization",
++--     Identifier = "ura111",
++--     Magnet = "magnet:?xt=urn:btih:26C4903D1A12AE439480F31B45BAEB5781D2B305&dn=ura111.bsp&tr=udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.publicbt.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.ccc.de%3a80%2fannounce"
++-- })
+ 
+-asset.export("Kernels", Kernels .. '/ura111.bsp')
++-- asset.export("Kernels", Kernels .. '/ura111.bsp')
diff --git a/nixpkgs/pkgs/applications/science/astronomy/openspace/config.patch b/nixpkgs/pkgs/applications/science/astronomy/openspace/config.patch
new file mode 100644
index 000000000000..826edea09071
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/astronomy/openspace/config.patch
@@ -0,0 +1,49 @@
+diff --git a/openspace.cfg b/openspace.cfg
+index c86830b..e7f89d9 100755
+--- a/openspace.cfg
++++ b/openspace.cfg
+@@ -2,18 +2,21 @@
+ -- require('scripts/configuration_helper.lua')
+ -- which defines helper functions useful to customize the configuration
+ 
++userdir = os.getenv("HOME") .. "/.openspace/"
++os.execute("mkdir -p " .. userdir)
++
+ return {
+     -- Determines which SGCT configuration file is loaded, that is, if there rendering
+     -- occurs in a single window, a fisheye projection, or a dome cluster system
+ 
+     -- A regular 1280x720 window
+-    SGCTConfig = sgct.config.single{},
++    -- SGCTConfig = sgct.config.single{},
+ 
+     -- A regular 1920x1080 window
+     -- SGCTConfig = sgct.config.single{1920, 1080},
+     
+     -- A windowed 1920x1080 fullscreen
+-    -- SGCTConfig = sgct.config.single{1920, 1080, border=false, windowPos={0,0}, shared=true, name="WV_OBS_SPOUT1"},
++    SGCTConfig = sgct.config.single{1920, 1080, border=false, windowPos={0,0}, shared=true, name="WV_OBS_SPOUT1"},
+ 
+     -- A 1k fisheye rendering
+     -- SGCTConfig = sgct.config.fisheye{1024, 1024},
+@@ -53,15 +56,15 @@ return {
+         TASKS = "${DATA}/tasks",
+         WEB = "${DATA}/web",
+ 
+-        CACHE = "${BASE}/cache",
++        CACHE  = userdir .. "cache",
+         CONFIG = "${BASE}/config",
+-        DOCUMENTATION = "${BASE}/documentation",
+-        LOGS = "${BASE}/logs",
++        DOCUMENTATION = userdir .. "documentation",
++        LOGS    = userdir .. "logs",
+         MODULES = "${BASE}/modules",
+         SCRIPTS = "${BASE}/scripts",
+         SHADERS = "${BASE}/shaders",
+-        SYNC = "${BASE}/sync",
+-        TESTDIR = "${BASE}/tests"
++        SYNC    = userdir .. "sync",
++        TESTDIR = userdir .. "tests"
+     },
+     Fonts = {
+         Mono = "${FONTS}/Bitstream-Vera-Sans-Mono/VeraMono.ttf",
diff --git a/nixpkgs/pkgs/applications/science/astronomy/openspace/constexpr.patch b/nixpkgs/pkgs/applications/science/astronomy/openspace/constexpr.patch
new file mode 100644
index 000000000000..d9fc91d7c277
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/astronomy/openspace/constexpr.patch
@@ -0,0 +1,91 @@
+diff --git a/include/openspace/util/distanceconversion.h b/include/openspace/util/distanceconversion.h
+index 80a3a96..7059752 100755
+--- a/include/openspace/util/distanceconversion.h
++++ b/include/openspace/util/distanceconversion.h
+@@ -159,24 +159,34 @@ constexpr const char* nameForDistanceUnit(DistanceUnit unit, bool pluralForm = f
+ }
+ 
+ constexpr DistanceUnit distanceUnitFromString(const char* unitName) {
++    int result = -1;
++  
+     int i = 0;
+     for (const char* val : DistanceUnitNamesSingular) {
+         if (ghoul::equal(unitName, val)) {
+-            return static_cast<DistanceUnit>(i);
++            result = i;
++            break;
+         }
+         ++i;
+     }
+ 
+-    i = 0;
+-    for (const char* val : DistanceUnitNamesPlural) {
+-        if (ghoul::equal(unitName, val)) {
+-            return static_cast<DistanceUnit>(i);
++    if (result == -1) {
++        i = 0;
++        for (const char* val : DistanceUnitNamesPlural) {
++            if (ghoul::equal(unitName, val)) {
++                result = i;
++                break;
++            }
++            ++i;
+         }
+-        ++i;
+     }
+ 
+-    ghoul_assert(false, "Unit name is not a valid name");
+-    throw ghoul::MissingCaseException();
++    if (result != -1)
++        return static_cast<DistanceUnit>(result);
++    else {
++        ghoul_assert(false, "Unit name is not a valid name");
++        throw ghoul::MissingCaseException();
++    }
+ }
+ 
+ 
+diff --git a/include/openspace/util/timeconversion.h b/include/openspace/util/timeconversion.h
+index a36c92a..699bca9 100755
+--- a/include/openspace/util/timeconversion.h
++++ b/include/openspace/util/timeconversion.h
+@@ -142,23 +142,32 @@ constexpr const char* nameForTimeUnit(TimeUnit unit, bool pluralForm = false) {
+ }
+ 
+ constexpr TimeUnit timeUnitFromString(const char* unitName) {
++    int result = -1;
++    
+     int i = 0;
+     for (const char* val : TimeUnitNamesSingular) {
+         if (ghoul::equal(unitName, val)) {
+-            return static_cast<TimeUnit>(i);
++            result = i;
++            break;
+         }
+         ++i;
+     }
+ 
+-    i = 0;
+-    for (const char* val : TimeUnitNamesPlural) {
+-        if (ghoul::equal(unitName, val)) {
+-            return static_cast<TimeUnit>(i);
++    if (result == -1) {
++        i = 0;
++        for (const char* val : TimeUnitNamesPlural) {
++            if (ghoul::equal(unitName, val)) {
++                result = i;
++                break;
++            }
++            ++i;
+         }
+-        ++i;
+     }
+ 
+-    throw ghoul::MissingCaseException();
++    if (result != -1)
++        return static_cast<TimeUnit>(result);
++    else
++        throw ghoul::MissingCaseException();
+ }
+ 
+ std::pair<double, std::string> simplifyTime(double seconds,
diff --git a/nixpkgs/pkgs/applications/science/astronomy/openspace/default.nix b/nixpkgs/pkgs/applications/science/astronomy/openspace/default.nix
new file mode 100644
index 000000000000..566fd61f1a7b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/astronomy/openspace/default.nix
@@ -0,0 +1,90 @@
+{ stdenv, fetchFromGitHub, fetchurl, makeWrapper, cmake
+, curl, boost, gdal, glew, soil
+, libX11, libXi, libXxf86vm, libXcursor, libXrandr, libXinerama }:
+
+stdenv.mkDerivation rec {
+  version = "0.11.1";
+  pname = "openspace";
+
+  src = fetchFromGitHub {
+    owner  = "OpenSpace";
+    repo   = "OpenSpace";
+    rev    = "a65eea61a1b8807ce3d69e9925e75f8e3dfb085d";
+    sha256 = "0msqixf30r0d41xmfmzkdfw6w9jkx2ph5clq8xiwrg1jc3z9q7nv";
+    fetchSubmodules = true;
+  };
+
+  buildInputs = [
+    makeWrapper cmake
+    curl boost gdal glew soil
+    libX11 libXi libXxf86vm libXcursor libXrandr libXinerama
+  ];
+
+  glmPlatformH = fetchurl {
+    url    = "https://raw.githubusercontent.com/g-truc/glm/dd48b56e44d699a022c69155c8672caacafd9e8a/glm/simd/platform.h";
+    sha256 = "0y91hlbgn5va7ijg5mz823gqkq9hqxl00lwmdwnf8q2g086rplzw";
+  };
+
+  # See <https://github.com/g-truc/glm/issues/726>
+  prePatch = ''
+    cp ${glmPlatformH} ext/sgct/include/glm/simd/platform.h
+    cp ${glmPlatformH} ext/ghoul/ext/glm/glm/simd/platform.h
+  '';
+
+  patches = [
+    # See <https://github.com/opensgct/sgct/issues/13>
+    ./vrpn.patch
+
+    ./constexpr.patch
+    ./config.patch
+
+    # WARNING: This patch disables some slow torrents in a very dirty way.
+    ./assets.patch
+  ];
+
+  bundle = "$out/usr/share/openspace";
+
+  preConfigure = ''
+    cmakeFlagsArray=(
+      $cmakeFlagsArray
+      "-DCMAKE_BUILD_TYPE="
+      "-DCMAKE_INSTALL_PREFIX=${bundle}"
+    )
+  '';
+
+  preInstall = ''
+    mkdir -p $out/bin
+    mkdir -p ${bundle}
+  '';
+
+  postInstall = ''
+    cp ext/spice/libSpice.so       ${bundle}/lib
+    cp ext/ghoul/ext/lua/libLua.so ${bundle}/lib
+  '';
+
+  postFixup = ''
+    for bin in ${bundle}/bin/*
+    do
+      rpath=$(patchelf --print-rpath $bin)
+      patchelf --set-rpath $rpath:${bundle}/lib $bin
+
+      name=$(basename $bin)
+      makeWrapper $bin $out/bin/$name --run "cd ${bundle}"
+    done
+  '';
+
+  meta = {
+    description     = "Open-source astrovisualization project";
+    longDescription = ''
+      OpenSpace is open source interactive data visualization software
+      designed to visualize the entire known universe and portray our
+      ongoing efforts to investigate the cosmos.
+
+      WARNING: This build is not very usable for now.
+    '';
+    homepage  = "https://www.openspaceproject.com/";
+    license   = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.linux;
+    broken = true; # fails to build
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/astronomy/openspace/vrpn.patch b/nixpkgs/pkgs/applications/science/astronomy/openspace/vrpn.patch
new file mode 100644
index 000000000000..9386d0257b7f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/astronomy/openspace/vrpn.patch
@@ -0,0 +1,13 @@
+diff --git a/ext/sgct/src/deps/vrpn/vrpn_Connection.C b/ext/sgct/src/deps/vrpn/vrpn_Connection.C
+index d6ffdc5..f90a2b2 100755
+--- a/ext/sgct/src/deps/vrpn/vrpn_Connection.C
++++ b/ext/sgct/src/deps/vrpn/vrpn_Connection.C
+@@ -2489,7 +2489,7 @@ static int vrpn_start_server(const char *machine, char *server_name, char *args,
+ #if defined(sparc) || defined(FreeBSD) || defined(_AIX) || defined(__ANDROID__)
+             int status; // doesn't exist on sparc_solaris or FreeBSD
+ #else
+-            union wait status;
++            int status;
+ #endif
+ 
+             /* Check to see if they called back yet. */
diff --git a/nixpkgs/pkgs/applications/science/astronomy/stellarium/default.nix b/nixpkgs/pkgs/applications/science/astronomy/stellarium/default.nix
new file mode 100644
index 000000000000..7ef7776c0fe8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/astronomy/stellarium/default.nix
@@ -0,0 +1,33 @@
+{ mkDerivation, lib, fetchFromGitHub
+, cmake, freetype, libpng, libGLU, libGL, openssl, perl, libiconv
+, qtscript, qtserialport, qttools
+, qtmultimedia, qtlocation, qtbase, wrapQtAppsHook
+}:
+
+mkDerivation rec {
+  pname = "stellarium";
+  version = "0.20.1";
+
+  src = fetchFromGitHub {
+    owner = "Stellarium";
+    repo = "stellarium";
+    rev = "v${version}";
+    sha256 = "1x8svan03k1x9jwqflimbpj7jpg6mjrbz26bg1sbhsqdlc8rbhky";
+  };
+
+  nativeBuildInputs = [ cmake perl wrapQtAppsHook ];
+
+  buildInputs = [
+    freetype libpng libGLU libGL openssl libiconv qtscript qtserialport qttools
+    qtmultimedia qtlocation qtbase
+  ];
+
+  meta = with lib; {
+    description = "Free open-source planetarium";
+    homepage = "http://stellarium.org/";
+    license = licenses.gpl2;
+
+    platforms = platforms.linux; # should be mesaPlatforms, but we don't have qt on darwin
+    maintainers = with maintainers; [ peti ma27 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/astronomy/xearth/default.nix b/nixpkgs/pkgs/applications/science/astronomy/xearth/default.nix
new file mode 100644
index 000000000000..752e25b4d8d3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/astronomy/xearth/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, imake, gccmakedep, libXt, libXext }:
+
+stdenv.mkDerivation rec {
+  pname = "xearth";
+  version = "1.1";
+
+  src = fetchurl {
+    url = "http://xearth.org/${pname}-${version}.tar.gz";
+    sha256 = "bcb1407cc35b3f6dd3606b2c6072273b6a912cbd9ed1ae22fb2d26694541309c";
+  };
+
+  nativeBuildInputs = [ imake gccmakedep ];
+  buildInputs = [ libXt libXext ];
+
+  installFlags = [ "DESTDIR=$(out)/" "BINDIR=bin" "MANDIR=man/man1"];
+  installTargets = [ "install" "install.man" ];
+
+  meta = with stdenv.lib; {
+    description = "sets the X root window to an image of the Earth";
+    homepage = "http://xplanet.org";
+    longDescription =
+      '' Xearth  sets  the X root window to an image of the Earth, as seen from your favorite vantage point in space,
+         correctly shaded for the current position of the Sun.
+	 By default, xearth updates the displayed image every  five  minutes.
+      '';
+    maintainers = [ maintainers.mafo ];
+    license = "xearth";
+    platforms=platforms.unix;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/science/astronomy/xplanet/default.nix b/nixpkgs/pkgs/applications/science/astronomy/xplanet/default.nix
new file mode 100644
index 000000000000..a314678b6ea3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/astronomy/xplanet/default.nix
@@ -0,0 +1,38 @@
+{stdenv, fetchurl, fetchpatch, pkgconfig, freetype, pango, libpng, libtiff
+, giflib, libjpeg, netpbm}:
+
+stdenv.mkDerivation rec {
+  pname = "xplanet";
+  version = "1.3.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/xplanet/${pname}-${version}.tar.gz";
+    sha256 = "1rzc1alph03j67lrr66499zl0wqndiipmj99nqgvh9xzm1qdb023";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ freetype pango libpng libtiff giflib libjpeg netpbm ];
+
+  patches = [
+    (fetchpatch {
+      name = "giflib6.patch";
+      url = "https://git.archlinux.org/svntogit/community.git/plain/trunk/giflib6.patch?h=packages/xplanet&id=ce6f25eb369dc011161613894f01fd0a6ae85a09";
+      sha256 = "173l0xkqq0v2bpaff7hhwc7y2aw5cclqw8988k1nalhyfbrjb8bl";
+    })
+    (fetchpatch {
+      name = "xplanet-c++11.patch";
+      url = "https://git.archlinux.org/svntogit/community.git/plain/trunk/xplanet-c++11.patch?h=packages/xplanet&id=ce6f25eb369dc011161613894f01fd0a6ae85a09";
+      sha256 = "0vldai78ixw49bxch774pps6pq4sp0p33qvkvxywcz7p8kzpg8q2";
+    })
+  ];
+
+  NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.cc.isClang "-Wno-error=c++11-narrowing";
+
+  meta = with stdenv.lib; {
+    description = "Renders an image of the earth or other planets into the X root window";
+    homepage = "http://xplanet.sourceforge.net";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ lassulus sander ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/EZminc/default.nix b/nixpkgs/pkgs/applications/science/biology/EZminc/default.nix
new file mode 100644
index 000000000000..7502a4ffd2ab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/EZminc/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, libminc, bicpl, itk4, fftwFloat, gsl }:
+
+stdenv.mkDerivation rec {
+  pname = "EZminc";
+  name  = "${pname}-unstable-2019-03-12";
+
+  src = fetchFromGitHub {
+    owner  = "BIC-MNI";
+    repo   = pname;
+    rev    = "5e3333ee356f914d34d66d33ea8df809c7f7fa51";
+    sha256 = "0wy8cppf5xpgfqvgb3mqs1cjh81n6qzkk6zxv29wvng8nar9wsy4";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [ itk4 libminc bicpl fftwFloat gsl ];
+
+  cmakeFlags = [ "-DLIBMINC_DIR=${libminc}/lib/"
+                 "-DEZMINC_BUILD_TOOLS=TRUE"
+                 "-DEZMINC_BUILD_MRFSEG=TRUE"
+                 "-DEZMINC_BUILD_DD=TRUE" ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/BIC-MNI/${pname}";
+    description = "Collection of Perl and shell scripts for processing MINC files";
+    maintainers = with maintainers; [ bcdarwin ];
+    platforms = platforms.unix;
+    license = licenses.free;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/N3/default.nix b/nixpkgs/pkgs/applications/science/biology/N3/default.nix
new file mode 100644
index 000000000000..d2dbcf185330
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/N3/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, cmake, makeWrapper,
+  perlPackages,
+  libminc, EBTKS }:
+
+stdenv.mkDerivation rec {
+  pname = "N3";
+  name  = "${pname}-2017-09-18";
+
+  src = fetchFromGitHub {
+    owner  = "BIC-MNI";
+    repo   = pname;
+    rev    = "2fdd939f0f2b24a4039bc6a8ade4a190a1d8e75d";
+    sha256 = "13z21c4r09hna3q1csvcn4i7ws5ixbdaja6ch421xv6nydjh2w5g";
+  };
+
+  nativeBuildInputs = [ cmake makeWrapper ];
+  buildInputs = [ libminc EBTKS ];
+  propagatedBuildInputs = with perlPackages; [ perl MNI-Perllib GetoptTabular ];
+
+  cmakeFlags = [ "-DLIBMINC_DIR=${libminc}/lib/" "-DEBTKS_DIR=${EBTKS}/lib/" ];
+
+  postFixup = ''
+    for p in $out/bin/*; do
+      wrapProgram $p --prefix PERL5LIB : $PERL5LIB
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/BIC-MNI/${pname}";
+    description = "MRI non-uniformity correction for MINC files";
+    maintainers = with maintainers; [ bcdarwin ];
+    platforms = platforms.unix;
+    license   = licenses.free;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/ants/default.nix b/nixpkgs/pkgs/applications/science/biology/ants/default.nix
new file mode 100644
index 000000000000..cb88e92fe1cb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/ants/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchFromGitHub, fetchpatch, cmake, makeWrapper, itk4, vtk_7 }:
+
+stdenv.mkDerivation rec {
+  pname    = "ANTs";
+  version = "2.2.0";
+
+  src = fetchFromGitHub {
+    owner  = "ANTsX";
+    repo   = "ANTs";
+    rev    = "37ad4e20be3a5ecd26c2e4e41b49e778a0246c3d";
+    sha256 = "1hrdwv3m9xh3yf7l0rm2ggxc2xzckfb8srs88g485ibfszx7i03q";
+  };
+
+  patches = [
+    # Fix build with gcc8
+    (fetchpatch {
+      url = "https://github.com/ANTsX/ANTs/commit/89af9b2694715bf8204993e032fa132f80cf37bd.patch";
+      sha256 = "1glkrwa1jmxxbmzihycxr576azjqby31jwpj165qc54c91pn0ams";
+    })
+  ];
+
+  nativeBuildInputs = [ cmake makeWrapper ];
+  buildInputs = [ itk4 vtk_7 ];
+
+  cmakeFlags = [ "-DANTS_SUPERBUILD=FALSE" "-DUSE_VTK=TRUE" ];
+
+  enableParallelBuilding = true;
+
+  postInstall = ''
+    for file in $out/bin/*; do
+      wrapProgram $file --set ANTSPATH "$out/bin"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/ANTsX/ANTs";
+    description = "Advanced normalization toolkit for medical image registration and other processing";
+    maintainers = with maintainers; [ bcdarwin ];
+    platforms = platforms.unix;
+    license = licenses.bsd3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/aragorn/default.nix b/nixpkgs/pkgs/applications/science/biology/aragorn/default.nix
new file mode 100644
index 000000000000..956e4d884531
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/aragorn/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  version = "1.2.38";
+  pname = "aragorn";
+
+  src = fetchurl {
+    url = "http://mbio-serv2.mbioekol.lu.se/ARAGORN/Downloads/${pname}${version}.tgz";
+    sha256 = "09i1rg716smlbnixfm7q1ml2mfpaa2fpn3hwjg625ysmfwwy712b";
+  };
+
+  buildPhase = ''
+    gcc -O3 -ffast-math -finline-functions -o aragorn aragorn${version}.c
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin && cp aragorn $out/bin
+    mkdir -p $out/man/1 && cp aragorn.1 $out/man/1
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Detects tRNA, mtRNA, and tmRNA genes in nucleotide sequences";
+    homepage = "http://mbio-serv2.mbioekol.lu.se/ARAGORN/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.bzizou ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/bayescan/default.nix b/nixpkgs/pkgs/applications/science/biology/bayescan/default.nix
new file mode 100644
index 000000000000..4e216fbdbe63
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/bayescan/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, unzip, llvmPackages }:
+
+stdenv.mkDerivation rec {
+  pname = "bayescan";
+  version = "2.1";
+
+  src = fetchurl {
+    url = "http://cmpg.unibe.ch/software/BayeScan/files/BayeScan${version}.zip";
+    sha256 = "0ismima8j8z0zj9yc267rpf7z90w57b2pbqzjnayhc3ab8mcbfy6";
+  };
+
+  nativeBuildInputs = [ unzip ];
+  buildInputs = stdenv.lib.optional stdenv.cc.isClang llvmPackages.openmp;
+
+  # Disable FORTIFY_SOURCE or the binary fails with "buffer overflow"
+  hardeningDisable = [ "fortify" ];
+
+  sourceRoot = "BayeScan${version}/source";
+
+  postPatch = ''
+    substituteInPlace Makefile --replace "-static" "" \
+                               --replace "g++" "c++"
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mkdir -p $out/share/doc/bayescan
+    cp bayescan_${version} $out/bin
+    cp -r ../*pdf ../input_examples ../"R functions" $out/share/doc/bayescan
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Detecting natural selection from population-based genetic data";
+    homepage = "http://cmpg.unibe.ch/software/BayeScan";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.bzizou ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/bcftools/default.nix b/nixpkgs/pkgs/applications/science/biology/bcftools/default.nix
new file mode 100644
index 000000000000..b847fd8b5fe4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/bcftools/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, htslib, zlib, bzip2, lzma, curl, perl, python, bash }:
+
+stdenv.mkDerivation rec {
+  pname = "bcftools";
+  version = "1.10.2";
+
+  src = fetchurl {
+    url = "https://github.com/samtools/bcftools/releases/download/${version}/${pname}-${version}.tar.bz2";
+    sha256 = "0b2f6lqhxdlrvfjqxv7a4nzqj68c1j4avn16iqxwwm80kn302wzm";
+  };
+
+  buildInputs = [ htslib zlib bzip2 lzma curl perl python ];
+
+  makeFlags = [
+    "HSTDIR=${htslib}"
+    "prefix=$(out)"
+    "CC=cc"
+  ];
+
+  preCheck = ''
+    patchShebangs misc/
+    patchShebangs test/
+    sed -ie 's|/bin/bash|${bash}/bin/bash|' test/test.pl
+  '';
+
+  enableParallelBuilding = true;
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    description = "Tools for manipulating BCF2/VCF/gVCF format, SNP and short indel sequence variants";
+    license = licenses.mit;
+    homepage = "http://www.htslib.org/";
+    platforms = platforms.unix;
+    maintainers = [ maintainers.mimame ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/bedtools/default.nix b/nixpkgs/pkgs/applications/science/biology/bedtools/default.nix
new file mode 100644
index 000000000000..332e06ea0cf5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/bedtools/default.nix
@@ -0,0 +1,27 @@
+{stdenv, fetchFromGitHub, zlib, python, bzip2, lzma}:
+
+stdenv.mkDerivation rec {
+  pname = "bedtools";
+  version = "2.29.2";
+
+  src = fetchFromGitHub {
+    owner = "arq5x";
+    repo = "bedtools2";
+    rev = "v${version}";
+    sha256 = "015qq3pwrwgnyxyi959niijjlswl231b3wxlsm3l8msv6fdhmkz8";
+  };
+
+  buildInputs = [ zlib python bzip2 lzma ];
+  cxx = if stdenv.cc.isClang then "clang++" else "g++";
+  cc = if stdenv.cc.isClang then "clang" else "gcc";
+  buildPhase = "make prefix=$out SHELL=${stdenv.shell} CXX=${cxx} CC=${cc} -j $NIX_BUILD_CORES";
+  installPhase = "make prefix=$out SHELL=${stdenv.shell} CXX=${cxx} CC=${cc} install";
+
+  meta = with stdenv.lib; {
+    description = "A powerful toolset for genome arithmetic.";
+    license = licenses.gpl2;
+    homepage = "https://bedtools.readthedocs.io/en/latest/";
+    maintainers = with maintainers; [ jbedo ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/bftools/default.nix b/nixpkgs/pkgs/applications/science/biology/bftools/default.nix
new file mode 100644
index 000000000000..2ecefee340fd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/bftools/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, lib, makeWrapper, fetchzip, jre }:
+
+stdenv.mkDerivation rec {
+  pname = "bftools";
+  version = "6.3.0";
+
+  src = fetchzip {
+    url = "http://downloads.openmicroscopy.org/bio-formats/${version}/artifacts/bftools.zip";
+    sha256 = "02nvvmpfglpah1ihd08aw65g1794w588c988cdar1hfl4s80qwhb";
+  };
+
+  installPhase = ''
+    find . -maxdepth 1 -perm -111 -type f -not -name "*.sh" \
+      -exec install -vD {} "$out"/bin/{} \;
+
+    mkdir $out/libexec
+    mkdir -p $out/share/java
+
+    cp ./*.sh $out/libexec
+    cp ./*.jar $out/share/java
+
+    for file in $out/bin/*; do
+      substituteInPlace $file --replace "\$BF_DIR" $out/libexec
+    done
+    substituteInPlace $out/libexec/bf.sh --replace "\$BF_JAR_DIR" $out/share/java
+  '';
+
+  postFixup = ''
+    wrapProgram $out/libexec/bf.sh --prefix PATH : "${lib.makeBinPath [ jre ]}"
+  '';
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  meta = with stdenv.lib; {
+    description = "A bundle of scripts for using Bio-Formats on the command line with bioformats_package.jar already included";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    homepage = "https://www.openmicroscopy.org/bio-formats/";
+    maintainers = [ maintainers.tbenst ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/blast/default.nix b/nixpkgs/pkgs/applications/science/biology/blast/default.nix
new file mode 100644
index 000000000000..95a1b905e9e2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/blast/default.nix
@@ -0,0 +1,108 @@
+{ lib, stdenv, fetchurl, zlib, bzip2, perl, cpio, gawk, coreutils, ApplicationServices }:
+
+stdenv.mkDerivation rec {
+  pname = "blast";
+  version = "2.10.0";
+
+  src = fetchurl {
+    url = "ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/${version}/ncbi-blast-${version}+-src.tar.gz";
+    sha256 = "09nry5knj5hhxpn0a5ww1gb1704grd4r1y7adbjl6kqwq37dkk9s";
+  };
+
+  sourceRoot = "ncbi-blast-${version}+-src/c++";
+  
+  configureFlags = [ 
+    # With flat Makefile we can use all_projects in order not to build extra.
+    # These extra cause clang to hang on Darwin.
+    "--with-flat-makefile"
+    "--without-makefile-auto-update" 
+    "--with-dll"  # build dynamic libraries (static are default)
+    ];
+  
+  makeFlags = [ "all_projects=app/" ];
+
+  preConfigure = ''
+    export NCBICXX_RECONF_POLICY=warn
+    export PWD=$(pwd)
+    export HOME=$PWD
+
+    # The configure scripts wants to set AR="ar cr" unless it is already set in
+    # the environment. Because stdenv sets AR="ar", the result is a bad call to
+    # the assembler later in the process. Thus, we need to unset AR
+    unset AR
+
+    for awks in scripts/common/impl/is_log_interesting.awk \
+        scripts/common/impl/report_duplicates.awk; do
+
+        substituteInPlace $awks \
+              --replace /usr/bin/awk ${gawk}/bin/awk
+    done
+
+    for mk in src/build-system/Makefile.meta.in \
+        src/build-system/helpers/run_with_lock.c ; do
+
+        substituteInPlace $mk \
+        --replace /bin/rm ${coreutils}/bin/rm
+    done
+
+    for mk in src/build-system/Makefile.meta.gmake=no \
+        src/build-system/Makefile.meta_l \
+        src/build-system/Makefile.meta_r \
+        src/build-system/Makefile.requirements \
+        src/build-system/Makefile.rules_with_autodep.in; do
+
+        substituteInPlace $mk \
+            --replace /bin/echo ${coreutils}/bin/echo
+    done
+    for mk in src/build-system/Makefile.meta_p \
+        src/build-system/Makefile.rules_with_autodep.in \
+        src/build-system/Makefile.protobuf.in ; do
+
+        substituteInPlace $mk \
+            --replace /bin/mv ${coreutils}/bin/mv
+    done
+
+
+    substituteInPlace src/build-system/configure \
+        --replace /bin/pwd ${coreutils}/bin/pwd \
+        --replace /bin/ln ${coreutils}/bin/ln
+
+    substituteInPlace src/build-system/configure.ac \
+        --replace /bin/pwd ${coreutils}/bin/pwd \
+        --replace /bin/ln ${coreutils}/bin/ln
+
+    substituteInPlace src/build-system/Makefile.meta_l \
+        --replace /bin/date ${coreutils}/bin/date
+  '';
+
+  nativeBuildInputs = [ perl ];
+
+  # perl is necessary in buildInputs so that installed perl scripts get patched
+  # correctly
+  buildInputs = [ coreutils perl gawk zlib bzip2 cpio ]
+    ++ lib.optionals stdenv.isDarwin [ ApplicationServices ];
+  hardeningDisable = [ "format" ];
+
+  postInstall = ''
+    substituteInPlace $out/bin/get_species_taxids.sh \
+        --replace /bin/rm ${coreutils}/bin/rm
+  '';
+  patches = [ ./no_slash_bin.patch ];
+
+  enableParallelBuilding = true;
+
+  # Many tests require either network access or locally available databases
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = ''Basic Local Alignment Search Tool (BLAST) finds regions of
+    similarity between biological sequences'';
+    homepage = "https://blast.ncbi.nlm.nih.gov/Blast.cgi";
+    license = licenses.publicDomain;
+
+    # Version 2.10.0 fails on Darwin
+    # See https://github.com/NixOS/nixpkgs/pull/61430
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ luispedro ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/blast/no_slash_bin.patch b/nixpkgs/pkgs/applications/science/biology/blast/no_slash_bin.patch
new file mode 100644
index 000000000000..9b78ac579264
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/blast/no_slash_bin.patch
@@ -0,0 +1,184 @@
+diff -u --recursive ncbi-blast-2.9.0+-src/scripts/common/impl/collect_outside_libs.sh ncbi-blast-2.9.0+-src.patched/scripts/common/impl/collect_outside_libs.sh
+--- ncbi-blast-2.9.0+-src/scripts/common/impl/collect_outside_libs.sh	2014-08-01 22:01:17.000000000 +0800
++++ ncbi-blast-2.9.0+-src.patched/scripts/common/impl/collect_outside_libs.sh	2019-05-15 12:40:44.145239480 +0800
+@@ -1,8 +1,5 @@
+ #!/bin/sh
+ set -e
+-PATH=/bin:/usr/bin
+-export PATH
+-unset CDPATH
+ 
+ base=$1
+ search=`echo ${2-$LD_LIBRARY_PATH} | tr : ' '`
+diff -u --recursive ncbi-blast-2.9.0+-src/scripts/common/impl/create_flat_tuneups.sh ncbi-blast-2.9.0+-src.patched/scripts/common/impl/create_flat_tuneups.sh
+--- ncbi-blast-2.9.0+-src/scripts/common/impl/create_flat_tuneups.sh	2011-08-17 02:55:10.000000000 +0800
++++ ncbi-blast-2.9.0+-src.patched/scripts/common/impl/create_flat_tuneups.sh	2019-05-15 12:40:48.449276574 +0800
+@@ -1,9 +1,6 @@
+ #!/bin/sh
+ id='$Id: create_flat_tuneups.sh 331412 2011-08-16 18:55:10Z ucko $'
+ 
+-PATH=/bin:/usr/bin
+-export PATH
+-
+ exec > auto_flat_tuneups.mk
+ 
+ cat <<EOF
+diff -u --recursive ncbi-blast-2.9.0+-src/scripts/common/impl/get_lock.sh ncbi-blast-2.9.0+-src.patched/scripts/common/impl/get_lock.sh
+--- ncbi-blast-2.9.0+-src/scripts/common/impl/get_lock.sh	2011-08-20 04:12:28.000000000 +0800
++++ ncbi-blast-2.9.0+-src.patched/scripts/common/impl/get_lock.sh	2019-05-15 12:40:52.901315000 +0800
+@@ -1,7 +1,5 @@
+ #!/bin/sh
+ 
+-PATH=/bin:/usr/bin
+-export PATH
+ 
+ dir=$1.lock
+ 
+diff -u --recursive ncbi-blast-2.9.0+-src/scripts/common/impl/if_diff.sh ncbi-blast-2.9.0+-src.patched/scripts/common/impl/if_diff.sh
+--- ncbi-blast-2.9.0+-src/scripts/common/impl/if_diff.sh	2014-07-30 22:06:45.000000000 +0800
++++ ncbi-blast-2.9.0+-src.patched/scripts/common/impl/if_diff.sh	2019-05-15 12:42:57.298410841 +0800
+@@ -4,9 +4,6 @@
+ # Author:  Denis Vakatov (vakatov@ncbi.nlm.nih.gov)
+ #################################
+ 
+-orig_PATH=$PATH
+-PATH=/bin:/usr/bin
+-
+ script_name=`basename $0`
+ script_args="$*"
+ 
+@@ -16,7 +13,7 @@
+ base_action=`basename "$action"`
+ case "$base_action" in
+   cp | cp\ * | ln | ln\ * )
+-      action=/bin/$base_action
++      action=$base_action
+       rm="rm -f"
+       ;;
+   * )
+@@ -58,10 +55,8 @@
+   shift
+   cmd="$* $dest_file"
+   test "$quiet" = yes || echo "$cmd"
+-  PATH=$orig_PATH
+   "$@" "$dest"
+   status=$?
+-  PATH=/bin:/usr/bin
+   return $status
+ }
+ 
+@@ -74,7 +69,7 @@
+   case "$base_action" in
+     ln | ln\ -f )
+       test "$quiet" = yes || echo "failed; trying \"cp -p ...\" instead"
+-      cmd="/bin/cp -p $src_file $dest_file"
++      cmd="cp -p $src_file $dest_file"
+       ExecHelper "$dest_file" /bin/cp -p "$src_file"  ||
+       Usage "\"$cmd\" failed"
+       ;;
+diff -u --recursive ncbi-blast-2.9.0+-src/scripts/common/impl/make_lock_map.sh ncbi-blast-2.9.0+-src.patched/scripts/common/impl/make_lock_map.sh
+--- ncbi-blast-2.9.0+-src/scripts/common/impl/make_lock_map.sh	2011-11-17 04:43:52.000000000 +0800
++++ ncbi-blast-2.9.0+-src.patched/scripts/common/impl/make_lock_map.sh	2019-05-15 12:40:56.769348434 +0800
+@@ -1,8 +1,6 @@
+ #!/bin/sh
+ # $Id: make_lock_map.sh 344587 2011-11-16 20:43:52Z ucko $
+ 
+-PATH=/bin:/usr/bin
+-export PATH
+ 
+ act=false
+ cache_dir='.#SRC-cache'
+diff -u --recursive ncbi-blast-2.9.0+-src/scripts/common/impl/run_with_lock.sh ncbi-blast-2.9.0+-src.patched/scripts/common/impl/run_with_lock.sh
+--- ncbi-blast-2.9.0+-src/scripts/common/impl/run_with_lock.sh	2015-10-29 22:36:05.000000000 +0800
++++ ncbi-blast-2.9.0+-src.patched/scripts/common/impl/run_with_lock.sh	2019-05-15 12:41:53.401842849 +0800
+@@ -1,10 +1,6 @@
+ #!/bin/sh
+ # $Id: run_with_lock.sh 483249 2015-10-29 14:36:05Z ucko $
+ 
+-orig_PATH=$PATH
+-PATH=/bin:/usr/bin
+-export PATH
+-
+ base=
+ logfile=
+ map=
+@@ -23,7 +19,7 @@
+ : ${base:=`basename "$1"`}
+ 
+ clean_up () {
+-    /bin/rm -rf "$base.lock"
++    rm -rf "$base.lock"
+ }
+ 
+ case $0 in
+@@ -45,7 +41,7 @@
+     trap "clean_up; exit $error_status" 1 2 15
+     if [ -n "$logfile" ]; then
+         status_file=$base.lock/status
+-        (PATH=$orig_PATH; export PATH; "$@"; echo $? > "$status_file") 2>&1 \
++        ("$@"; echo $? > "$status_file") 2>&1 \
+             | tee "$logfile.new"
+         # Emulate egrep -q to avoid having to move from under scripts.
+         if [ ! -f "$logfile" ]  \
+@@ -58,8 +54,6 @@
+             status=1
+         fi
+     else
+-        PATH=$orig_PATH
+-        export PATH
+         "$@"
+         status=$?
+     fi
+diff -u --recursive ncbi-blast-2.9.0+-src/scripts/common/impl/strip_for_install.sh ncbi-blast-2.9.0+-src.patched/scripts/common/impl/strip_for_install.sh
+--- ncbi-blast-2.9.0+-src/scripts/common/impl/strip_for_install.sh	2013-09-24 03:06:51.000000000 +0800
++++ ncbi-blast-2.9.0+-src.patched/scripts/common/impl/strip_for_install.sh	2019-05-15 12:40:13.272975092 +0800
+@@ -1,8 +1,5 @@
+ #!/bin/sh
+ 
+-PATH=/bin:/usr/bin:/usr/ccs/bin
+-export PATH
+-
+ case "$1" in
+     --dirs )
+         shift
+--- ncbi-blast-2.9.0+-src/scripts/common/impl/update_configurable.sh	2017-07-13 22:53:24.000000000 +0800
++++ ncbi-blast-2.9.0+-src.patched/scripts/common/impl/update_configurable.sh	2019-05-15 15:03:35.861276083 +0800
+@@ -1,6 +1,4 @@
+ #!/bin/sh
+-PATH=/bin:/usr/bin
+-export PATH
+ 
+ script_name=`basename $0`
+ script_dir=`dirname $0`
+--- ncbi-blast-2.9.0+-src/src/build-system/Makefile.mk.in	2019-01-04 01:38:37.000000000 +0800
++++ ncbi-blast-2.9.0+-src.patched/src/build-system/Makefile.mk.in	2019-05-15 15:14:41.749416495 +0800
+@@ -50,12 +50,12 @@
+ 
+ ### Auxiliary commands, filters
+ 
+-RM       = /bin/rm -f
+-RMDIR    = /bin/rm -rf
+-COPY     = /bin/cp -p
++RM       = rm -f
++RMDIR    = rm -rf
++COPY     = cp -p
+ BINCOPY  = @BINCOPY@
+ TOUCH    = @TOUCH@
+-MKDIR    = /bin/mkdir
++MKDIR    = mkdir
+ BINTOUCH = $(TOUCH)
+ LN_S     = @LN_S@
+ GREP     = @GREP@
+--- ncbi-blast-2.9.0+-src/src/build-system/configure	2019-03-05 00:49:08.000000000 +0800
++++ ncbi-blast-2.9.0+-src.patched/src/build-system/configure	2019-05-15 16:55:40.711795042 +0800
+@@ -10417,10 +10417,6 @@
+ echo "${ECHO_T}no, using $LN_S" >&6; }
+ fi
+ 
+-case "$LN_S" in
+-    /*) ;;
+-    * ) LN_S=/bin/$LN_S ;;
+-esac
+ 
+ if test -n "$ac_tool_prefix"; then
+   # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
diff --git a/nixpkgs/pkgs/applications/science/biology/bowtie2/default.nix b/nixpkgs/pkgs/applications/science/biology/bowtie2/default.nix
new file mode 100644
index 000000000000..dc818e2fb868
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/bowtie2/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, zlib, tbb, python, perl }:
+
+stdenv.mkDerivation rec {
+  pname = "bowtie2";
+  version = "2.3.5.1";
+
+  src = fetchFromGitHub {
+    owner = "BenLangmead";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1l1f0yhjqqvy4lpxfml1xwv7ayimwbpzazvp0281gb4jb5f5mr1a";
+  };
+
+  buildInputs = [ zlib tbb python perl ];
+
+  installFlags = [ "prefix=$(out)" ];
+
+  meta = with stdenv.lib; {
+    description = "An ultrafast and memory-efficient tool for aligning sequencing reads to long reference sequences";
+    license = licenses.gpl3;
+    homepage = "http://bowtie-bio.sf.net/bowtie2";
+    maintainers = with maintainers; [ rybern ];
+    platforms = platforms.all;
+    broken = stdenv.isAarch64;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/bppsuite/default.nix b/nixpkgs/pkgs/applications/science/biology/bppsuite/default.nix
new file mode 100644
index 000000000000..564a38708bcd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/bppsuite/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchFromGitHub, cmake, bpp-core, bpp-seq, bpp-phyl, bpp-popgen }:
+
+stdenv.mkDerivation rec {
+  pname = "bppsuite";
+
+  inherit (bpp-core) version;
+
+  src = fetchFromGitHub {
+    owner = "BioPP";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1wdwcgczqbc3m116vakvi0129wm3acln3cfc7ivqnalwvi6lrpds";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ bpp-core bpp-seq bpp-phyl bpp-popgen ];
+
+  meta = bpp-core.meta // {
+    changelog = "https://github.com/BioPP/bppsuite/blob/master/ChangeLog";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/bwa/default.nix b/nixpkgs/pkgs/applications/science/biology/bwa/default.nix
new file mode 100644
index 000000000000..e478c104edef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/bwa/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "bwa";
+  version = "0.7.17";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/bio-bwa/${pname}-${version}.tar.bz2";
+    sha256 = "1zfhv2zg9v1icdlq4p9ssc8k01mca5d1bd87w71py2swfi74s6yy";
+  };
+
+  buildInputs = [ zlib ];
+
+  installPhase = ''
+    install -vD bwa $out/bin/bwa
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A software package for mapping low-divergent sequences against a large reference genome, such as the human genome";
+    license     = licenses.gpl3;
+    homepage    = "http://bio-bwa.sourceforge.net/";
+    maintainers = with maintainers; [ luispedro ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/cd-hit/default.nix b/nixpkgs/pkgs/applications/science/biology/cd-hit/default.nix
new file mode 100644
index 000000000000..0db788b0f743
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/cd-hit/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, makeWrapper, zlib, perl, perlPackages }:
+
+stdenv.mkDerivation rec {
+  version = "4.8.1";
+  pname = "cd-hit";
+
+  src = fetchFromGitHub {
+    owner = "weizhongli";
+    repo = "cdhit";
+    rev = "V${version}";
+    sha256 = "032nva6iiwmw59gjipm1mv0xlcckhxsf45mc2qbnv19lbis0q22i";
+  };
+
+  propagatedBuildInputs = [ perl perlPackages.TextNSP perlPackages.PerlMagick perlPackages.Storable ];
+
+  nativeBuildInputs = [ zlib makeWrapper ];
+
+  makeFlags = [ "PREFIX=$(out)/bin" ];
+
+  preInstall = "mkdir -p $out/bin";
+
+  postFixup = ''
+    wrapProgram $out/bin/FET.pl --prefix PERL5LIB : $PERL5LIB
+    wrapProgram $out/bin/plot_2d.pl --prefix PERL5LIB : $PERL5LIB
+    wrapProgram $out/bin/clstr_list_sort.pl --prefix PERL5LIB : $PERL5LIB
+  '';
+  meta = with stdenv.lib; {
+    description = "Clustering and comparing protein or nucleotide sequences";
+    homepage = "http://weizhongli-lab.org/cd-hit/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.bzizou ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/clustal-omega/default.nix b/nixpkgs/pkgs/applications/science/biology/clustal-omega/default.nix
new file mode 100644
index 000000000000..71cf87985376
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/clustal-omega/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, argtable }:
+
+stdenv.mkDerivation rec {
+  version = "1.2.4";
+  pname = "clustal-omega";
+
+  src = fetchurl {
+    url = "http://www.clustal.org/omega/${pname}-${version}.tar.gz";
+    sha256 = "1vm30mzncwdv881vrcwg11vzvrsmwy4wg80j5i0lcfk6dlld50w6";
+  };
+
+  buildInputs = [ argtable ];
+
+  preConfigure = ''
+    for f in configure \
+             src/clustal-omega-config.h \
+             src/clustal-omega-config.h \
+             src/config.h.in \
+             src/mymain.c
+    do
+      sed -i -re 's/argtable2/argtable3/g' $f
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "General purpose multiple sequence alignment program for protein and DNA/RNA";
+    homepage = "http://www.clustal.org/omega/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.bzizou ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/cmtk/default.nix b/nixpkgs/pkgs/applications/science/biology/cmtk/default.nix
new file mode 100644
index 000000000000..41805c15aed5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/cmtk/default.nix
@@ -0,0 +1,26 @@
+{stdenv, fetchurl, cmake}:
+
+stdenv.mkDerivation {
+  name = "cmtk-3.3.1";
+
+  src = fetchurl {
+    name = "cmtk-source.tar.gz";
+    url = "https://www.nitrc.org/frs/download.php/8198/CMTK-3.3.1-Source.tar.gz//?i_agree=1&download_now=1";
+    sha256 = "1nmsga9m7vcc4y4a6zl53ra3mwlgjwdgsq1j291awkn7zr1az6qs";
+  };
+
+  buildInputs = [cmake];
+
+  NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.cc.isClang "-Wno-error=c++11-narrowing";
+
+  meta = with stdenv.lib; {
+    description     = "Computational Morphometry Toolkit ";
+    longDescription = ''A software toolkit for computational morphometry of
+      biomedical images, CMTK comprises a set of command line tools and a
+      back-end general-purpose library for processing and I/O'';
+    maintainers = with maintainers; [ tbenst ];
+    platforms = platforms.all;
+    license     = licenses.gpl3;
+    homepage    = "https://www.nitrc.org/projects/cmtk/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/conglomerate/default.nix b/nixpkgs/pkgs/applications/science/biology/conglomerate/default.nix
new file mode 100644
index 000000000000..971e2f23055b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/conglomerate/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, cmake, coreutils, perlPackages, bicpl, libminc, zlib, minc_tools,
+  makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "conglomerate";
+  name  = "${pname}-2017-09-10";
+
+  src = fetchFromGitHub {
+    owner  = "BIC-MNI";
+    repo   = pname;
+    rev    = "7343238bc6215942c7ecc885a224f24433a291b0";
+    sha256 = "1mlqgmy3jc13bv7d01rjwldxq0p4ayqic85xcl222hhifi3w2prr";
+  };
+
+  nativeBuildInputs = [ cmake makeWrapper ];
+  buildInputs = [ libminc zlib bicpl ];
+  propagatedBuildInputs = [ coreutils minc_tools ] ++ (with perlPackages; [ perl GetoptTabular MNI-Perllib ]);
+
+  cmakeFlags = [ "-DLIBMINC_DIR=${libminc}/lib/" "-DBICPL_DIR=${bicpl}/lib/" ];
+
+  postFixup = ''
+    for p in $out/bin/*; do
+      wrapProgram $p --prefix PERL5LIB : $PERL5LIB --set PATH "${stdenv.lib.makeBinPath [ coreutils minc_tools ]}";
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/BIC-MNI/conglomerate";
+    description = "More command-line utilities for working with MINC files";
+    maintainers = with maintainers; [ bcdarwin ];
+    platforms = platforms.unix;
+    license   = licenses.free;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/dcm2niix/default.nix b/nixpkgs/pkgs/applications/science/biology/dcm2niix/default.nix
new file mode 100644
index 000000000000..59b173ac98cd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/dcm2niix/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, libyamlcpp
+, git
+}:
+
+stdenv.mkDerivation rec {
+  version = "1.0.20200331";
+  pname = "dcm2niix";
+
+  src = fetchFromGitHub {
+    owner = "rordenlab";
+    repo = "dcm2niix";
+    rev = "v${version}";
+    sha256 = "1cncfwhyhmg18n970lkn6yvp0i74ajznsl8dqz00asqfzmg681n1";
+  };
+
+  enableParallelBuilding = true;
+  nativeBuildInputs = [ cmake git ];
+  buildInputs = [ libyamlcpp ];
+
+  meta = with stdenv.lib; {
+    description = "dcm2niix DICOM to NIfTI converter";
+    longDescription = ''
+      dcm2niix is a designed to convert neuroimaging data from the
+      DICOM format to the NIfTI format.
+    '';
+    homepage = "https://www.nitrc.org/projects/dcm2nii";
+    license = licenses.bsd3;
+    maintainers = [ maintainers.ashgillman ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/deeptools/default.nix b/nixpkgs/pkgs/applications/science/biology/deeptools/default.nix
new file mode 100644
index 000000000000..8787c96e5b03
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/deeptools/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, python
+}:
+with python.pkgs;
+buildPythonApplication rec {
+  pname = "deepTools";
+  version = "3.4.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "05zw9gk17hz08hns5lnhn7l13idg9jdz4gdba6m6gbr84yz149gs";
+  };
+
+  propagatedBuildInputs = [
+    numpy
+    numpydoc
+    scipy
+    py2bit
+    pybigwig
+    pysam
+    matplotlib
+    plotly
+    deeptoolsintervals
+  ];
+
+  checkInputs = [ pytest ];
+
+  meta = with lib; {
+    homepage = "https://deeptools.readthedocs.io/en/develop";
+    description = "Tools for exploring deep DNA sequencing data";
+    longDescription = ''
+      deepTools contains useful modules to process the mapped reads data for multiple
+      quality checks, creating normalized coverage files in standard bedGraph and bigWig
+      file formats, that allow comparison between different files (for example, treatment and control).
+      Finally, using such normalized and standardized files, deepTools can create many
+      publication-ready visualizations to identify enrichments and for functional
+      annotations of the genome.
+    '';
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ scalavision ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/delly/default.nix b/nixpkgs/pkgs/applications/science/biology/delly/default.nix
new file mode 100644
index 000000000000..a6c45f8aa44e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/delly/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchpatch, fetchFromGitHub, htslib, zlib, bzip2, lzma, ncurses, boost }:
+
+let
+  htslibPatch = fetchpatch {
+    url = "https://github.com/dellytools/delly/commit/0e5c710b0c5ea790bb39699d4cbd49cf4fb86f14.diff";
+    sha256 = "09bz1qqvzhdzm99hf9zgrv80kq9jlr1m2mdvx96p2hk5lpnbdl7y";
+    excludes = [ "src/htslib" ];
+  };
+
+in stdenv.mkDerivation rec {
+  pname = "delly";
+  version = "0.8.2";
+
+  src = fetchFromGitHub {
+      owner = "dellytools";
+      repo = pname;
+      rev = "v${version}";
+      sha256 = "14bkmixz7737xj192ww96s3a20zc7xs7r04db8avw3ggi3i1s1cs";
+  };
+
+  patches = [ htslibPatch ];
+
+  buildInputs = [ zlib htslib bzip2 lzma ncurses boost ];
+
+  EBROOTHTSLIB = htslib;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm555 src/delly $out/bin/delly
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Structural variant caller for mapped DNA sequenced data";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ scalavision ];
+    platforms = platforms.linux;
+    longDescription = ''
+      Delly is an integrated structural variant (SV) prediction method
+      that can discover, genotype and visualize deletions, tandem duplications,
+      inversions and translocations at single-nucleotide resolution in
+      short-read massively parallel sequencing data. It uses paired-ends,
+      split-reads and read-depth to sensitively and accurately delineate
+      genomic rearrangements throughout the genome.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/diamond/default.nix b/nixpkgs/pkgs/applications/science/biology/diamond/default.nix
new file mode 100644
index 000000000000..dd1e13ec7162
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/diamond/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, cmake, zlib }:
+
+stdenv.mkDerivation {
+  name = "diamond-0.8.36";
+
+  src = fetchurl {
+    url = "https://github.com/bbuchfink/diamond/archive/v0.8.36.tar.gz";
+    sha256 = "092smzzjcg51n3x4h84k52ijpz9m40ri838j9k2i463ribc3c8rh";
+  };
+
+  patches = [
+    ./diamond-0.8.36-no-warning.patch
+  ];
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ zlib ];
+
+  meta = with stdenv.lib; {
+    description = "Accelerated BLAST compatible local sequence aligner";
+    longDescription = ''
+      A sequence aligner for protein and translated DNA
+      searches and functions as a drop-in replacement for the NCBI BLAST
+      software tools. It is suitable for protein-protein search as well as
+      DNA-protein search on short reads and longer sequences including contigs
+      and assemblies, providing a speedup of BLAST ranging up to x20,000.
+
+      DIAMOND is developed by Benjamin Buchfink. Feel free to contact him for support (Email Twitter).
+
+      If you use DIAMOND in published research, please cite
+      B. Buchfink, Xie C., D. Huson,
+      "Fast and sensitive protein alignment using DIAMOND",
+      Nature Methods 12, 59-60 (2015).
+        '';
+    homepage = "https://github.com/bbuchfink/diamond";
+    license = {
+      fullName = "University of Tuebingen, Benjamin Buchfink";
+      url = "https://raw.githubusercontent.com/bbuchfink/diamond/master/src/COPYING";
+    };
+    maintainers = [ maintainers.metabar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/diamond/diamond-0.8.36-no-warning.patch b/nixpkgs/pkgs/applications/science/biology/diamond/diamond-0.8.36-no-warning.patch
new file mode 100644
index 000000000000..a16d475c5564
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/diamond/diamond-0.8.36-no-warning.patch
@@ -0,0 +1,20 @@
+diff -u -r diamond-0.8.36/src/dp/scalar_traceback.h diamond-0.8.36-patched/src/dp/scalar_traceback.h
+--- diamond-0.8.36/src/dp/scalar_traceback.h	2017-02-06 16:32:05.000000000 +0100
++++ diamond-0.8.36-patched/src/dp/scalar_traceback.h	2017-02-23 15:13:24.000000000 +0100
+@@ -19,6 +19,7 @@
+ #ifndef SCALAR_TRACEBACK_H_
+ #define SCALAR_TRACEBACK_H_
+ 
++#include <cmath>
+ #include <exception>
+ #include "../basic/score_matrix.h"
+ 
+@@ -31,7 +32,7 @@
+ template<>
+ inline bool almost_equal<float>(float x, float y)
+ {
+-	return abs(x - y) < 0.001f;
++	return std::abs(x - y) < 0.001f;
+ }
+ 
+ template<typename _score>
diff --git a/nixpkgs/pkgs/applications/science/biology/ecopcr/default.nix b/nixpkgs/pkgs/applications/science/biology/ecopcr/default.nix
new file mode 100644
index 000000000000..2e744c7b2b9e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/ecopcr/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, gcc, zlib, python27 }:
+
+stdenv.mkDerivation rec {
+  name = "ecopcr-0.8.0";
+
+  src = fetchurl {
+    url = "https://git.metabarcoding.org/obitools/ecopcr/uploads/6f37991b325c8c171df7e79e6ae8d080/${name}.tar.gz";
+    sha256 = "10c58hj25z78jh0g3zcbx4890yd2qrvaaanyx8mn9p49mmyf5pk6";
+  };
+
+  sourceRoot = "ecoPCR/src";
+
+  buildInputs = [ gcc python27 zlib ];
+
+  installPhase = ''
+	mkdir -p $out/bin
+	cp -v ecoPCR $out/bin
+	cp -v ecogrep $out/bin
+	cp -v ecofind $out/bin
+	cp -v ../tools/ecoPCRFormat.py $out/bin/ecoPCRFormat
+	chmod a+x $out/bin/ecoPCRFormat
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Electronic PCR software tool";
+    longDescription = ''
+      ecoPCR is an electronic PCR software developed by the LECA. It
+      helps you estimate Barcode primers quality. In conjunction with
+      OBITools, you can postprocess ecoPCR output to compute barcode
+      coverage and barcode specificity. New barcode primers can be
+      developed using the ecoPrimers software.
+    '';
+    homepage = "https://git.metabarcoding.org/obitools/ecopcr/wikis/home";
+    license = licenses.cecill20;
+    maintainers = [ maintainers.metabar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/eggnog-mapper/default.nix b/nixpkgs/pkgs/applications/science/biology/eggnog-mapper/default.nix
new file mode 100644
index 000000000000..3ef52e543933
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/eggnog-mapper/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub, fetchpatch, makeWrapper, python27Packages, wget, diamond, hmmer }:
+
+python27Packages.buildPythonApplication rec {
+  pname = "eggnog-mapper";
+  version = "1.0.3";
+
+  src = fetchFromGitHub {
+    owner = "eggnogdb";
+    repo = "eggnog-mapper";
+    rev = version;
+    sha256 = "1aaaflppy84bhkh2hb5gnzm4xgrz0rz0cgfpadr9w8cva8p0sqdv";
+  };
+
+  patches = (fetchpatch {
+    url = "https://github.com/eggnogdb/eggnog-mapper/commit/6972f601ade85b65090efca747d2302acb58507f.patch";
+    sha256 = "0abnmn0bh11jihf5d3cggiild1ykawzv5f5fhb4cyyi8fvy4hcxf";
+  });
+
+  buildInputs = [ makeWrapper ];
+  propagatedBuildInputs = [ python27Packages.biopython wget diamond hmmer ];
+
+  # make emapper find diamond & hmmer
+  makeWrapperArgs = [
+    ''--prefix PATH ':' "${diamond}/bin"''
+    ''--prefix PATH ':' "${hmmer}/bin"''
+    ];
+
+  # Tests rely on some of the databases being available, which is not bundled
+  # with this package as (1) in total, they represent >100GB of data, and (2)
+  # the user can download only those that interest them.
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Fast genome-wide functional annotation through orthology assignment";
+    license = licenses.gpl2;
+    homepage = "https://github.com/eggnogdb/eggnog-mapper/wiki";
+    maintainers = with maintainers; [ luispedro ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/emboss/default.nix b/nixpkgs/pkgs/applications/science/biology/emboss/default.nix
new file mode 100644
index 000000000000..e2374bcd1e2f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/emboss/default.nix
@@ -0,0 +1,28 @@
+{stdenv, fetchurl, readline, perl, libharu, libX11, libpng, libXt, zlib}:
+
+stdenv.mkDerivation {
+  name = "emboss-6.6.0";
+  src = fetchurl {
+    url = "ftp://emboss.open-bio.org/pub/EMBOSS/EMBOSS-6.6.0.tar.gz";
+    sha256 = "7184a763d39ad96bb598bfd531628a34aa53e474db9e7cac4416c2a40ab10c6e";
+  };
+
+  buildInputs = [ readline perl libharu libpng libX11 libXt zlib ];
+
+  configureFlags = [ "--with-hpdf=${libharu}" "--with-pngdriver=${zlib}" ];
+
+  postConfigure = ''
+    sed -i 's@$(bindir)/embossupdate@true@' Makefile
+  '';
+
+  meta = {
+    description     = "The European Molecular Biology Open Software Suite";
+    longDescription = ''EMBOSS is a free Open Source software analysis package
+    specially developed for the needs of the molecular biology (e.g. EMBnet)
+    user community, including libraries. The software automatically copes with
+    data in a variety of formats and even allows transparent retrieval of
+    sequence data from the web.''; 
+    license     = "GPL2";
+    homepage    = "http://emboss.sourceforge.net/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/est-sfs/default.nix b/nixpkgs/pkgs/applications/science/biology/est-sfs/default.nix
new file mode 100644
index 000000000000..1b15c06c670a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/est-sfs/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, gsl }:
+
+stdenv.mkDerivation rec {
+  pname = "est-sfs";
+  version = "2.03";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/est-usfs/${pname}-release-${version}.tar.gz";
+    sha256 = "1hvamrgagz0xi89w8qafyd9mjrdpyika8zm22drddnjkp4sdj65n";
+  };
+
+  buildInputs = [ gsl ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mkdir -p $out/share/doc/${pname}
+    cp est-sfs $out/bin
+    cp est-sfs-documentation.pdf $out/share/doc/${pname}
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://sourceforge.net/projects/est-usfs";
+    description = "Estimate the unfolded site frequency spectrum and ancestral states";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.bzizou ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/exonerate/default.nix b/nixpkgs/pkgs/applications/science/biology/exonerate/default.nix
new file mode 100644
index 000000000000..b2c49ab00767
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/exonerate/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, glib, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  version = "2.4.0";
+  pname = "exonerate";
+
+  src = fetchurl {
+    url = "http://ftp.ebi.ac.uk/pub/software/vertebrategenomics/exonerate/${pname}-${version}.tar.gz";
+    sha256 = "0hj0m9xygiqsdxvbg79wq579kbrx1mdrabi2bzqz2zn9qwfjcjgq";
+  };
+
+  doCheck = true;
+
+  buildInputs = [ glib ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = with stdenv.lib; {
+    description = "Generic tool for sequence alignment";
+    homepage = "https://www.ebi.ac.uk/about/vertebrate-genomics/software/exonerate";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.bzizou ];
+    platforms = platforms.unix ;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/freebayes/default.nix b/nixpkgs/pkgs/applications/science/biology/freebayes/default.nix
new file mode 100644
index 000000000000..bd80df56cb90
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/freebayes/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, zlib, bzip2, lzma }:
+
+stdenv.mkDerivation rec {
+  pname = "freebayes";
+  version = "1.3.1";
+
+  src = fetchFromGitHub {
+    name = "freebayes-${version}-src";
+    owner  = "ekg";
+    repo   = "freebayes";
+    rev    = "v${version}";
+    sha256 = "035nriknjqq8gvil81vvsmvqwi35v80q8h1cw24vd1gdyn1x7bys";
+    fetchSubmodules = true;
+  };
+
+  buildInputs = [ zlib bzip2 lzma ];
+
+  installPhase = ''
+    install -vD bin/freebayes bin/bamleftalign scripts/* -t $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Bayesian haplotype-based polymorphism discovery and genotyping";
+    license     = licenses.mit;
+    homepage    = "https://github.com/ekg/freebayes";
+    maintainers = with maintainers; [ jdagilliland ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/hisat2/default.nix b/nixpkgs/pkgs/applications/science/biology/hisat2/default.nix
new file mode 100644
index 000000000000..fb7f2cba3de3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/hisat2/default.nix
@@ -0,0 +1,50 @@
+{stdenv, fetchurl, unzip, which, python, perl}:
+
+stdenv.mkDerivation rec {
+  pname = "hisat2";
+  version = "2.1.0";
+
+  src = fetchurl {
+    url = "ftp://ftp.ccb.jhu.edu/pub/infphilo/hisat2/downloads/hisat2-${version}-source.zip";
+    sha256 = "10g73sdf6vqqfhhd92hliw7bbpkb8v4pp5012r5l21zws7p7d8l9";
+  };
+
+  nativeBuildInputs = [ unzip which ];
+  buildInputs = [ python perl ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp hisat2 \
+       hisat2-inspect-l \
+       hisat2-build-s \
+       hisat2-align-l \
+       hisat2-inspect \
+       hisat2-align-s \
+       hisat2-inspect-s \
+       hisat2-build-l \
+       hisat2-build \
+       extract_exons.py \
+       extract_splice_sites.py \
+       hisat2_extract_exons.py \
+       hisat2_extract_snps_haplotypes_UCSC.py \
+       hisat2_extract_snps_haplotypes_VCF.py \
+       hisat2_extract_splice_sites.py \
+       hisat2_simulate_reads.py \
+       hisatgenotype_build_genome.py \
+       hisatgenotype_extract_reads.py \
+       hisatgenotype_extract_vars.py \
+       hisatgenotype_hla_cyp.py \
+       hisatgenotype_locus.py \
+       hisatgenotype.py \
+       $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Graph based aligner";
+    license = licenses.gpl3;
+    homepage = "https://ccb.jhu.edu/software/hisat2/index.shtml";
+    maintainers = with maintainers; [ jbedo ];
+    platforms = [ "x86_64-linux" "i686-linux" ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/hmmer/default.nix b/nixpkgs/pkgs/applications/science/biology/hmmer/default.nix
new file mode 100644
index 000000000000..3786b62f7477
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/hmmer/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  version = "3.3";
+  pname = "hmmer";
+
+  src = fetchurl {
+    url = "http://eddylab.org/software/hmmer/${pname}-${version}.tar.gz";
+    sha256 = "0v3kcgkr6jihq0xmpgn2xd5q7wiwvj6yswa905k2c0v7mx0bz1h1";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Biosequence analysis using profile hidden Markov models";
+    longDescription = ''
+      HMMER is used for searching sequence databases for sequence homologs, and for making sequence alignments. It implements methods using probabilistic models called profile hidden Markov models (profile HMMs).
+      HMMER is often used together with a profile database, such as Pfam or many of the databases that participate in Interpro. But HMMER can also work with query sequences, not just profiles, just like BLAST. For example, you can search a protein query sequence against a database with phmmer, or do an iterative search with jackhmmer.
+      HMMER is designed to detect remote homologs as sensitively as possible, relying on the strength of its underlying probability models. In the past, this strength came at significant computational expense, but as of the new HMMER3 project, HMMER is now essentially as fast as BLAST.
+      HMMER can be downloaded and installed as a command line tool on your own hardware, and now it is also more widely accessible to the scientific community via new search servers at the European Bioinformatics Institute.
+    '';
+    homepage = "http://hmmer.org/";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.iimog ];
+    platforms = [ "x86_64-linux" "i686-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/igv/default.nix b/nixpkgs/pkgs/applications/science/biology/igv/default.nix
new file mode 100644
index 000000000000..aa6c95071b7b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/igv/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, unzip, jre }:
+
+stdenv.mkDerivation rec {
+  pname = "igv";
+  version = "2.4.19";
+
+  src = fetchurl {
+    url = "https://data.broadinstitute.org/igv/projects/downloads/2.4/IGV_${version}.zip";
+    sha256 = "048dgrhxcb854d24kyjkqz12bw04bsv49i5jawb75yzkswwfkb0z";
+  };
+
+  buildInputs = [ unzip jre ];
+
+  installPhase = ''
+    mkdir -pv $out/{share,bin}
+    cp -Rv * $out/share/
+
+    sed -i "s#prefix=.*#prefix=$out/share#g" $out/share/igv.sh
+    sed -i 's#java#${jre}/bin/java#g' $out/share/igv.sh
+
+    ln -s $out/share/igv.sh $out/bin/igv
+
+    chmod +x $out/bin/igv
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.broadinstitute.org/igv/";
+    description = "A visualization tool for interactive exploration of genomic datasets";
+    license = licenses.lgpl21;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.mimame ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/inormalize/default.nix b/nixpkgs/pkgs/applications/science/biology/inormalize/default.nix
new file mode 100644
index 000000000000..9e63b92b24ed
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/inormalize/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, cmake, makeWrapper,
+  perlPackages,
+  libminc, EBTKS }:
+
+stdenv.mkDerivation rec {
+  pname = "inormalize";
+  name  = "${pname}-2014-10-21";
+
+  src = fetchFromGitHub {
+    owner  = "BIC-MNI";
+    repo   = pname;
+    rev    = "79cea9cdfe7b99abfd40afda89ab2253b596ad2f";
+    sha256 = "1ahqv5q0ljvji99a5q8azjkdf6bgp6nr8lwivkqwqs3jm0k5clq7";
+  };
+
+  patches = [ ./lgmask-interp.patch ./nu_correct_norm-interp.patch ];
+
+  nativeBuildInputs = [ cmake makeWrapper ];
+  buildInputs = [ libminc EBTKS ];
+  propagatedBuildInputs = with perlPackages; [ perl GetoptTabular MNI-Perllib ];
+
+  cmakeFlags = [ "-DLIBMINC_DIR=${libminc}/lib/" "-DEBTKS_DIR=${EBTKS}/lib/" ];
+
+  postFixup = ''
+    for p in $out/bin/*; do
+      wrapProgram $p --prefix PERL5LIB : $PERL5LIB
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/BIC-MNI/${pname}";
+    description = "Program to normalize intensity of MINC files";
+    maintainers = with maintainers; [ bcdarwin ];
+    platforms = platforms.unix;
+    license   = licenses.free;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/inormalize/lgmask-interp.patch b/nixpkgs/pkgs/applications/science/biology/inormalize/lgmask-interp.patch
new file mode 100644
index 000000000000..953bce9a1848
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/inormalize/lgmask-interp.patch
@@ -0,0 +1,10 @@
+diff --git a/lgmask.in b/lgmask.in
+index 17dbe4d..2195d91 100644
+--- a/lgmask.in
++++ b/lgmask.in
+@@ -1,4 +1,4 @@
+-#! @PERL@
++#! /usr/bin/env perl
+ 
+ #---------------------------------------------------------------------------
+ #@COPYRIGHT :
diff --git a/nixpkgs/pkgs/applications/science/biology/inormalize/nu_correct_norm-interp.patch b/nixpkgs/pkgs/applications/science/biology/inormalize/nu_correct_norm-interp.patch
new file mode 100644
index 000000000000..75dc46a799ce
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/inormalize/nu_correct_norm-interp.patch
@@ -0,0 +1,10 @@
+diff --git a/nu_correct_norm.in b/nu_correct_norm.in
+index 1dc84ac..1bc6235 100644
+--- a/nu_correct_norm.in
++++ b/nu_correct_norm.in
+@@ -1,4 +1,4 @@
+-#! @PERL@
++#! /usr/bin/perl
+  
+ #---------------------------------------------------------------------------
+ #@COPYRIGHT :
diff --git a/nixpkgs/pkgs/applications/science/biology/itsx/default.nix b/nixpkgs/pkgs/applications/science/biology/itsx/default.nix
new file mode 100644
index 000000000000..ac534a4ec3cd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/itsx/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, hmmer, perl }:
+
+stdenv.mkDerivation rec {
+  version = "1.1.1";
+  pname = "itsx";
+
+  src = fetchurl {
+    url = "http://microbiology.se/sw/ITSx_${version}.tar.gz";
+    sha256 = "0lrmy2n3ax7f208k0k8l3yz0j5cpz05hv4hx1nnxzn0c51z1pc31";
+  };
+
+  buildInputs = [ hmmer perl ];
+
+  buildPhase = ''
+    sed -e "s,profileDB = .*,profileDB = \"$out/share/ITSx_db/HMMs\";," -i ITSx
+    sed "3 a \$ENV{\'PATH\'}='${hmmer}/bin:'.\"\$ENV{\'PATH\'}\";" -i ITSx
+    mkdir bin
+    mv ITSx bin
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/doc && cp -a bin $out/
+    cp *pdf $out/share/doc
+    cp -r ITSx_db $out/share
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Improved software detection and extraction of ITS1 and ITS2 from ribosomal ITS sequences of fungi and other eukaryotes for use in environmental sequencing";
+    homepage = "https://microbiology.se/software/itsx/";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.bzizou ];
+    platforms = [ "x86_64-linux" "i686-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/iv/default.nix b/nixpkgs/pkgs/applications/science/biology/iv/default.nix
new file mode 100644
index 000000000000..82fe36940081
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/iv/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, neuron-version
+, libX11, libXext, patchelf
+}:
+
+stdenv.mkDerivation rec
+  { name = "iv-19";
+    src = fetchurl
+      { url = "https://www.neuron.yale.edu/ftp/neuron/versions/v${neuron-version}/${name}.tar.gz";
+        sha256 = "07a3g8zzay4h0bls7fh89dd0phn7s34c2g15pij6dsnwpmjg06yx";
+      };
+    nativeBuildInputs = [ patchelf ];
+    buildInputs = [ libXext ];
+    propagatedBuildInputs = [ libX11 ];
+    hardeningDisable = [ "format" ];
+    postInstall = ''
+      for dir in $out/*; do # */
+        if [ -d $dir/lib ]; then
+	  mv $dir/* $out # */
+          rmdir $dir
+          break
+        fi
+      done
+    '' + stdenv.lib.optionalString stdenv.isLinux ''
+      patchelf --add-needed ${libX11}/lib/libX11.so $out/lib/libIVhines.so
+    '';
+    meta = with stdenv.lib;
+      { description = "InterViews graphical library for Neuron";
+        license     = licenses.bsd3;
+        homepage    = "http://www.neuron.yale.edu/neuron";
+        platforms   = platforms.all;
+      };
+  }
diff --git a/nixpkgs/pkgs/applications/science/biology/kallisto/default.nix b/nixpkgs/pkgs/applications/science/biology/kallisto/default.nix
new file mode 100644
index 000000000000..5a1bb187886b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/kallisto/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, autoconf, cmake, hdf5, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "kallisto";
+  version = "0.46.2";
+
+  src = fetchFromGitHub {
+    repo = "kallisto";
+    owner = "pachterlab";
+    rev = "v${version}";
+    sha256 = "0m0r2820ca3rch99md1zzbgkilmlfkhdkpys2lfnb87qxmf1jnmb";
+  };
+
+  nativeBuildInputs = [ autoconf cmake ];
+
+  buildInputs = [ hdf5 zlib ];
+
+  cmakeFlags = [ "-DUSE_HDF5=ON" ];
+
+  # Parallel build fails in some cases: https://github.com/pachterlab/kallisto/issues/160
+  enableParallelBuilding = false;
+
+  meta = with stdenv.lib; {
+    description = "Kallisto is a program for quantifying abundances of transcripts from RNA-Seq data";
+    homepage = "https://pachterlab.github.io/kallisto";
+    license = licenses.bsd2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ arcadio ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/kssd/default.nix b/nixpkgs/pkgs/applications/science/biology/kssd/default.nix
new file mode 100644
index 000000000000..ef8a0ce136f8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/kssd/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, zlib, automake, autoconf, libtool }:
+
+stdenv.mkDerivation rec {
+  pname = "kssd";
+  version = "1.0";
+
+  src = fetchurl {
+    url = "https://github.com/yhg926/public_${pname}/archive/v${version}.tar.gz";
+    sha256 = "a5dcaf520049a962bef625cb59a567ea2b4252d4dc9be28dd06123d340e03919";
+  };
+
+  buildInputs = [ zlib automake autoconf libtool ];
+
+  installPhase = ''
+      install -vD kssd $out/bin/kssd
+  '';
+
+  meta = with stdenv.lib; {
+    description = "K-mer substring space decomposition";
+    license     = licenses.asl20;
+    homepage    = "https://github.com/yhg926/public_kssd";
+    maintainers = with maintainers; [ unode ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/last/default.nix b/nixpkgs/pkgs/applications/science/biology/last/default.nix
new file mode 100644
index 000000000000..fc302522215f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/last/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, unzip, zlib, python3, parallel }:
+
+stdenv.mkDerivation rec {
+  pname = "last";
+  version = "1061";
+
+  src = fetchurl {
+    url = "http://last.cbrc.jp/last-${version}.zip";
+    sha256 = "1jbvcxfy5xrf90qbhif0bd6aywm9rjqrm0sx24yr312f7r7c1dnx";
+  };
+
+  nativeBuildInputs = [ unzip ];
+  buildInputs = [ zlib python3 ];
+
+  makeFlags = [ "prefix=${placeholder "out"}" ];
+
+  postFixup = ''
+    for f in $out/bin/parallel-* ; do
+      sed -i 's|parallel |${parallel}/bin/parallel |' $f
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Genomic sequence aligner";
+    homepage = "http://last.cbrc.jp/";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ jbedo ];
+    platforms = platforms.x86_64;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/macse/default.nix b/nixpkgs/pkgs/applications/science/biology/macse/default.nix
new file mode 100644
index 000000000000..59938addbe82
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/macse/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, jre, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "macse";
+  version = "2.03";
+
+  src = fetchurl {
+    url = "https://bioweb.supagro.inra.fr/${pname}/releases/${pname}_v${version}.jar";
+    sha256 = "0jnjyz4f255glg37rawzdv4m6nfs7wfwc5dny7afvx4dz2sv4ssh";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  dontBuild = true;
+  unpackPhase = ":";
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/java
+    cp -s $src $out/share/java/macse.jar
+    makeWrapper ${jre}/bin/java $out/bin/macse --add-flags "-jar $out/share/java/macse.jar"
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Multiple alignment of coding sequences";
+    homepage = "https://bioweb.supagro.inra.fr/macse/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.bzizou ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/manta/default.nix b/nixpkgs/pkgs/applications/science/biology/manta/default.nix
new file mode 100644
index 000000000000..f0f0575e055a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/manta/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, cmake, zlib, python2 }:
+
+stdenv.mkDerivation rec {
+  pname = "manta";
+  version = "1.6.0";
+
+  src = fetchFromGitHub {
+    owner = "Illumina";
+    repo = "manta";
+    rev = "v${version}";
+    sha256 = "1711xkcw8rpw9xv3bbm7v1aryjz4r341rkq5255192dg38sgq7w2";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ zlib python2 ];
+  postFixup = ''
+    sed -i 's|/usr/bin/env python2|${python2.interpreter}|' $out/lib/python/makeRunScript.py
+    sed -i 's|/usr/bin/env python|${python2.interpreter}|' $out/lib/python/pyflow/pyflow.py
+    sed -i 's|/bin/bash|${stdenv.shell}|' $out/lib/python/pyflow/pyflowTaskWrapper.py
+  '';
+  doInstallCheck = true;
+  installCheckPhase = ''
+    rm $out/lib/python/**/*.pyc
+    PYTHONPATH=$out/lib/python:$PYTHONPATH python -c 'import makeRunScript'
+    PYTHONPATH=$out/lib/python/pyflow:$PYTHONPATH python -c 'import pyflowTaskWrapper; import pyflow'
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Structural variant caller";
+    license = licenses.gpl3;
+    homepage = "https://github.com/Illumina/manta";
+    maintainers = with maintainers; [ jbedo ];
+    platforms =  platforms.x86_64;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/megahit/default.nix b/nixpkgs/pkgs/applications/science/biology/megahit/default.nix
new file mode 100644
index 000000000000..35ef280ed676
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/megahit/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, cmake, zlib }:
+
+stdenv.mkDerivation rec {
+  pname    = "megahit";
+  version = "1.2.9";
+
+  src = fetchFromGitHub {
+    owner = "voutcn";
+    repo = "megahit";
+    rev = "v${version}";
+    sha256 = "1r5d9nkdmgjsbrpj43q9hy3s8jwsabaz3ji561v18hy47v58923c";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ zlib ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "An ultra-fast single-node solution for large and complex metagenomics assembly via succinct de Bruijn graph";
+    license     = licenses.gpl3;
+    homepage    = "https://github.com/voutcn/megahit";
+    maintainers = with maintainers; [ luispedro ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/messer-slim/default.nix b/nixpkgs/pkgs/applications/science/biology/messer-slim/default.nix
new file mode 100644
index 000000000000..201e38cfc538
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/messer-slim/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, cmake, gcc, gcc-unwrapped }:
+
+stdenv.mkDerivation rec {
+  version = "3.2.1"; 
+  pname = "messer-slim";
+
+  src = fetchurl {
+    url = "https://github.com/MesserLab/SLiM/archive/v${version}.tar.gz";
+    sha256 = "1j3ssjvxpsc21mmzj59kwimglz8pdazi5w6wplmx11x744k77wa1";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ cmake gcc gcc-unwrapped ];
+
+  cmakeFlags = [ "-DCMAKE_AR=${gcc-unwrapped}/bin/gcc-ar" 
+                 "-DCMAKE_RANLIB=${gcc-unwrapped}/bin/gcc-ranlib" ];
+
+  meta = {
+     description = "An evolutionary simulation framework";
+     homepage = "https://messerlab.org/slim/";
+     license = with stdenv.lib.licenses; [ gpl3 ];
+     maintainers = with stdenv.lib.maintainers; [ bzizou ];
+     platforms = stdenv.lib.platforms.all;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/science/biology/migrate/default.nix b/nixpkgs/pkgs/applications/science/biology/migrate/default.nix
new file mode 100644
index 000000000000..0e2aa1c1a791
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/migrate/default.nix
@@ -0,0 +1,24 @@
+{ gccStdenv, fetchurl, zlib, openmpi }:
+
+gccStdenv.mkDerivation rec {
+  version = "3.7.2";
+  pname = "migrate";
+
+  src = fetchurl {
+    url = "https://peterbeerli.com/migrate-html5/download_version3/${pname}-${version}.src.tar.gz";
+    sha256 = "1p2364ffjc56i82snzvjpy6pkf6wvqwvlvlqxliscx2c303fxs8v";
+  };
+
+  buildInputs = [ zlib openmpi ];
+  setSourceRoot = ''sourceRoot=$(echo */src)'';
+  buildFlags = [ "thread" "mpis" ];
+  preInstall = "mkdir -p $out/man/man1";
+
+  meta = with gccStdenv.lib; {
+    description = "Estimates population size, migration, population splitting parameters using genetic/genomic data";
+    homepage = "https://peterbeerli.com/migrate-html5/index.html";
+    license = licenses.mit;
+    maintainers = [ maintainers.bzizou ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/minc-tools/default.nix b/nixpkgs/pkgs/applications/science/biology/minc-tools/default.nix
new file mode 100644
index 000000000000..db803ea4922f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/minc-tools/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchFromGitHub, cmake, makeWrapper, flex, bison, perl, TextFormat,
+  libminc, libjpeg, nifticlib, zlib }:
+
+stdenv.mkDerivation rec {
+  pname   = "minc-tools";
+  version = "unstable-2019-12-04";
+
+  src = fetchFromGitHub {
+    owner  = "BIC-MNI";
+    repo   = pname;
+    rev    = "d4dddfdb4e4fa0cea389b8fdce51cfc076565d94";
+    sha256 = "1wwdss59qq4hz1jp35qylfswzzv0d37if23al0srnxkkgc5f8zng";
+  };
+
+  patches = [ ./fix-netcdf-header.patch ];
+
+  nativeBuildInputs = [ cmake flex bison makeWrapper ];
+  buildInputs = [ libminc libjpeg zlib ];
+  propagatedBuildInputs = [ perl TextFormat ];
+
+  cmakeFlags = [ "-DLIBMINC_DIR=${libminc}/lib/"
+                 "-DZNZ_INCLUDE_DIR=${nifticlib}/include/"
+                 "-DZNZ_LIBRARY=${nifticlib}/lib/libznz.a"
+                 "-DNIFTI_INCLUDE_DIR=${nifticlib}/include/nifti/"
+                 "-DNIFTI_LIBRARY=${nifticlib}/lib/libniftiio.a" ];
+
+  postFixup = ''
+    for prog in minccomplete minchistory mincpik; do
+      wrapProgram $out/bin/$prog --prefix PERL5LIB : $PERL5LIB
+    done
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/BIC-MNI/minc-tools";
+    description = "Command-line utilities for working with MINC files";
+    maintainers = with maintainers; [ bcdarwin ];
+    platforms = platforms.unix;
+    license   = licenses.free;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/minc-tools/fix-netcdf-header.patch b/nixpkgs/pkgs/applications/science/biology/minc-tools/fix-netcdf-header.patch
new file mode 100644
index 000000000000..89c7564f8b62
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/minc-tools/fix-netcdf-header.patch
@@ -0,0 +1,12 @@
+diff --git a/progs/mincdump/mincdump.h b/progs/mincdump/mincdump.h
+index 14c95cd..117ab26 100644
+--- a/progs/mincdump/mincdump.h
++++ b/progs/mincdump/mincdump.h
+@@ -3,6 +3,7 @@
+  *   See netcdf/COPYRIGHT file for copying and redistribution conditions.
+  *   $Header: /private-cvsroot/minc/progs/mincdump/mincdump.h,v 1.1 2004-04-27 15:35:15 bert Exp $
+  *********************************************************************/
++#include <netcdf_meta.h>
+ 
+ 
+ /* error checking macro */
diff --git a/nixpkgs/pkgs/applications/science/biology/minc-widgets/default.nix b/nixpkgs/pkgs/applications/science/biology/minc-widgets/default.nix
new file mode 100644
index 000000000000..497c39a52a4c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/minc-widgets/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, cmake, makeWrapper,
+  perlPackages,
+  libminc, octave, coreutils, minc_tools }:
+
+stdenv.mkDerivation rec {
+  pname = "minc-widgets";
+  name  = "${pname}-2016-04-20";
+
+
+  src = fetchFromGitHub {
+    owner  = "BIC-MNI";
+    repo   = pname;
+    rev    = "f08b643894c81a1a2e0fbfe595a17a42ba8906db";
+    sha256 = "1b9g6lf37wpp211ikaji4rf74rl9xcmrlyqcw1zq3z12ji9y33bm";
+  };
+
+  nativeBuildInputs = [ cmake makeWrapper ];
+  buildInputs = [ libminc ];
+  propagatedBuildInputs = (with perlPackages; [ perl GetoptTabular MNI-Perllib ]) ++ [ octave coreutils minc_tools ];
+
+  postFixup = ''
+    for p in $out/bin/*; do
+      wrapProgram $p --prefix PERL5LIB : $PERL5LIB --set PATH "${stdenv.lib.makeBinPath [ coreutils minc_tools ]}";
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/BIC-MNI/${pname}";
+    description = "Collection of Perl and shell scripts for processing MINC files";
+    maintainers = with maintainers; [ bcdarwin ];
+    platforms = platforms.unix;
+    license = licenses.free;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/minia/default.nix b/nixpkgs/pkgs/applications/science/biology/minia/default.nix
new file mode 100644
index 000000000000..2a80de733b08
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/minia/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, cmake, hdf5, boost }:
+
+stdenv.mkDerivation rec {
+  pname = "minia";
+  version = "3.2.1";
+
+  src = fetchFromGitHub {
+    owner = "GATB";
+    repo = "minia";
+    rev = "v${version}";
+    sha256 = "0bmfrywixaaql898l0ixsfkhxjf2hb08ssnqzlzacfizxdp46siq";
+    fetchSubmodules = true;
+  };
+
+  patches = [ ./no-bundle.patch ];
+
+  NIX_CFLAGS_COMPILE = [ "-Wformat" ];
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ hdf5 boost ];
+
+  prePatch = ''
+    rm -rf thirdparty/gatb-core/gatb-core/thirdparty/{hdf5,boost}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Short read genome assembler";
+    homepage = "https://github.com/GATB/minia";
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ jbedo ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/minia/no-bundle.patch b/nixpkgs/pkgs/applications/science/biology/minia/no-bundle.patch
new file mode 100644
index 000000000000..21d12c7f6f2d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/minia/no-bundle.patch
@@ -0,0 +1,222 @@
+diff --git a/thirdparty/gatb-core/gatb-core/CMakeLists.txt b/thirdparty/gatb-core/gatb-core/CMakeLists.txt
+index f48a70b..0e11ece 100644
+--- a/thirdparty/gatb-core/gatb-core/CMakeLists.txt
++++ b/thirdparty/gatb-core/gatb-core/CMakeLists.txt
+@@ -257,7 +257,6 @@ ADD_SUBDIRECTORY(thirdparty)
+ #  DEPENDENCIES 
+ ################################################################################
+ # we must be sure that hdf5 is built and installed before building gatb-core
+-ADD_DEPENDENCIES (gatbcore-static hdf5 hdf5_postbuild)
+ 
+ ################################################################################
+ #  DOCUMENTATION GENERATION 
+@@ -288,7 +287,6 @@ IF (NOT DEFINED GATB_CORE_INSTALL_EXCLUDE)
+     INSTALL (FILES ${PROJECT_SOURCE_DIR}/doc/misc/README.txt  DESTINATION . OPTIONAL)
+     INSTALL (FILES ${PROJECT_SOURCE_DIR}/LICENCE              DESTINATION . OPTIONAL)
+     INSTALL (FILES ${PROJECT_SOURCE_DIR}/THIRDPARTIES.md      DESTINATION . OPTIONAL)
+-    INSTALL (DIRECTORY ${PROJECT_SOURCE_DIR}/thirdparty/boost DESTINATION ./include)
+ ENDIF()
+ 
+ ################################################################################
+diff --git a/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/LargeInt.hpp b/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/LargeInt.hpp
+index dfeee1c..d5553a2 100644
+--- a/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/LargeInt.hpp
++++ b/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/LargeInt.hpp
+@@ -35,7 +35,7 @@
+ #include <stdint.h>
+ #include <algorithm>
+ #include <iostream>
+-#include <hdf5/hdf5.h>
++#include <hdf5.h>
+ 
+ #include <gatb/system/api/Exception.hpp>
+ #include <gatb/system/api/config.hpp>
+diff --git a/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt128.hpp b/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt128.hpp
+index 60be5d5..25ae75e 100644
+--- a/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt128.hpp
++++ b/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt128.hpp
+@@ -33,7 +33,7 @@
+ /********************************************************************************/
+ 
+ #include <iostream>
+-#include <hdf5/hdf5.h>
++#include <hdf5.h>
+ 
+ #include <gatb/system/api/types.hpp>
+ #include <gatb/tools/misc/api/Abundance.hpp>
+diff --git a/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt16.hpp b/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt16.hpp
+index 6a71bb0..b9205df 100644
+--- a/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt16.hpp
++++ b/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt16.hpp
+@@ -31,7 +31,7 @@
+ #include <iostream>
+ #include <gatb/system/api/types.hpp>
+ #include <gatb/tools/misc/api/Abundance.hpp>
+-#include <hdf5/hdf5.h>
++#include <hdf5.h>
+ 
+ /********************************************************************************/
+ namespace gatb  {
+diff --git a/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt32.hpp b/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt32.hpp
+index c22b892..62e6586 100644
+--- a/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt32.hpp
++++ b/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt32.hpp
+@@ -31,7 +31,7 @@
+ #include <iostream>
+ #include <gatb/system/api/types.hpp>
+ #include <gatb/tools/misc/api/Abundance.hpp>
+-#include <hdf5/hdf5.h>
++#include <hdf5.h>
+ 
+ /********************************************************************************/
+ namespace gatb  {
+diff --git a/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt64.hpp b/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt64.hpp
+index c06aaab..e0befba 100644
+--- a/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt64.hpp
++++ b/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt64.hpp
+@@ -31,7 +31,7 @@
+ #include <iostream>
+ #include <gatb/system/api/types.hpp>
+ #include <gatb/tools/misc/api/Abundance.hpp>
+-#include <hdf5/hdf5.h>
++#include <hdf5.h>
+ 
+ extern const unsigned char revcomp_4NT[];
+ extern const unsigned char comp_NT    [];
+diff --git a/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt8.hpp b/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt8.hpp
+index 9659874..0c79ff6 100644
+--- a/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt8.hpp
++++ b/thirdparty/gatb-core/gatb-core/src/gatb/tools/math/NativeInt8.hpp
+@@ -31,7 +31,7 @@
+ #include <iostream>
+ #include <gatb/system/api/types.hpp>
+ #include <gatb/tools/misc/api/Abundance.hpp>
+-#include <hdf5/hdf5.h>
++#include <hdf5.h>
+ 
+ /********************************************************************************/
+ namespace gatb  {
+diff --git a/thirdparty/gatb-core/gatb-core/src/gatb/tools/misc/api/Abundance.hpp b/thirdparty/gatb-core/gatb-core/src/gatb/tools/misc/api/Abundance.hpp
+index 3cb84f8..cd5d382 100644
+--- a/thirdparty/gatb-core/gatb-core/src/gatb/tools/misc/api/Abundance.hpp
++++ b/thirdparty/gatb-core/gatb-core/src/gatb/tools/misc/api/Abundance.hpp
+@@ -31,7 +31,7 @@
+ /********************************************************************************/
+ 
+ #include <sys/types.h>
+-#include <hdf5/hdf5.h>
++#include <hdf5.h>
+ 
+ /********************************************************************************/
+ namespace gatb      {
+diff --git a/thirdparty/gatb-core/gatb-core/src/gatb/tools/misc/api/IHistogram.hpp b/thirdparty/gatb-core/gatb-core/src/gatb/tools/misc/api/IHistogram.hpp
+index b8f6c79..a040832 100644
+--- a/thirdparty/gatb-core/gatb-core/src/gatb/tools/misc/api/IHistogram.hpp
++++ b/thirdparty/gatb-core/gatb-core/src/gatb/tools/misc/api/IHistogram.hpp
+@@ -28,7 +28,7 @@
+ 
+ #include <gatb/system/api/ISmartPointer.hpp>
+ #include <gatb/tools/storage/impl/Storage.hpp>
+-#include <hdf5/hdf5.h>
++#include <hdf5.h>
+ 
+ /********************************************************************************/
+ namespace gatb      {
+diff --git a/thirdparty/gatb-core/gatb-core/src/gatb/tools/storage/impl/CollectionHDF5.hpp b/thirdparty/gatb-core/gatb-core/src/gatb/tools/storage/impl/CollectionHDF5.hpp
+index 2645abd..fad48c0 100644
+--- a/thirdparty/gatb-core/gatb-core/src/gatb/tools/storage/impl/CollectionHDF5.hpp
++++ b/thirdparty/gatb-core/gatb-core/src/gatb/tools/storage/impl/CollectionHDF5.hpp
+@@ -40,7 +40,7 @@
+ #include <string>
+ #include <vector>
+ #include <stdarg.h>
+-#include <hdf5/hdf5.h>
++#include <hdf5.h>
+ 
+ /********************************************************************************/
+ namespace gatb      {
+diff --git a/thirdparty/gatb-core/gatb-core/src/gatb/tools/storage/impl/CollectionHDF5Patch.hpp b/thirdparty/gatb-core/gatb-core/src/gatb/tools/storage/impl/CollectionHDF5Patch.hpp
+index a92b729..66d552f 100644
+--- a/thirdparty/gatb-core/gatb-core/src/gatb/tools/storage/impl/CollectionHDF5Patch.hpp
++++ b/thirdparty/gatb-core/gatb-core/src/gatb/tools/storage/impl/CollectionHDF5Patch.hpp
+@@ -40,7 +40,7 @@
+ #include <string>
+ #include <vector>
+ #include <stdarg.h>
+-#include <hdf5/hdf5.h>
++#include <hdf5.h>
+ 
+ /********************************************************************************/
+ namespace gatb      {
+diff --git a/thirdparty/gatb-core/gatb-core/src/gatb/tools/storage/impl/StorageHDF5.hpp b/thirdparty/gatb-core/gatb-core/src/gatb/tools/storage/impl/StorageHDF5.hpp
+index 29e0949..0565cc4 100644
+--- a/thirdparty/gatb-core/gatb-core/src/gatb/tools/storage/impl/StorageHDF5.hpp
++++ b/thirdparty/gatb-core/gatb-core/src/gatb/tools/storage/impl/StorageHDF5.hpp
+@@ -33,7 +33,7 @@
+ #include <gatb/tools/storage/impl/CollectionHDF5.hpp>
+ #include <gatb/tools/storage/impl/CollectionHDF5Patch.hpp>
+ #include <gatb/system/impl/System.hpp>
+-#include <hdf5/hdf5.h>
++#include <hdf5.h>
+ #include <sstream>
+ 
+ /********************************************************************************/
+diff --git a/thirdparty/gatb-core/gatb-core/thirdparty/CMakeLists.txt b/thirdparty/gatb-core/gatb-core/thirdparty/CMakeLists.txt
+index 6e0b5c4..34aef28 100644
+--- a/thirdparty/gatb-core/gatb-core/thirdparty/CMakeLists.txt
++++ b/thirdparty/gatb-core/gatb-core/thirdparty/CMakeLists.txt
+@@ -1,54 +1,3 @@
+-################################################################################
+-#  HDF5 GENERATION 
+-################################################################################
+-
+-#SET (HDF5_ENABLE_THREADSAFE       ON)
+-#SET (H5_HAVE_THREADSAFE 1)
+-
+-##########  MOMENTARY DEACTIVATED => CRASH ON MACOS TO BE INVESTIGATED  ##########
+-SET (HDF5_BUILD_TOOLS             ON CACHE BOOL "Build HDF5 Tools")
+-#SET (CMAKE_EXE_LINKER_FLAGS       "-lpthread -lz")
+-
+-SET (HDF5_EXTERNALLY_CONFIGURED     ON)
+-
+-#SET (HDF5_INSTALL_BIN_DIR           ${PROJECT_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE})
+-#SET (HDF5_INSTALL_LIB_DIR           ${PROJECT_BINARY_DIR}/lib/${CMAKE_BUILD_TYPE})
+-SET (HDF5_INSTALL_BIN_DIR           bin)
+-SET (HDF5_INSTALL_LIB_DIR           lib)
+-
+-SET (HDF5_INSTALL_INCLUDE_DIR       ${PROJECT_BINARY_DIR}/include/${CMAKE_BUILD_TYPE}/hdf5)
+-SET (HDF5_INSTALL_DATA_DIR          ${PROJECT_BINARY_DIR}/share/${CMAKE_BUILD_TYPE})
+-SET (HDF5_INSTALL_CMAKE_DIR         ${PROJECT_BINARY_DIR}/share/${CMAKE_BUILD_TYPE})
+-
+-IF (NOT DEFINED GATB_CORE_INSTALL_EXCLUDE)
+-    SET (HDF5_EXPORTED_TARGETS          "gatb-hdf5")
+-ENDIF()
+-
+-IF (NOT DEFINED GATB_CORE_EXCLUDE_HDF5_ZLIB)
+-	OPTION (HDF5_ENABLE_Z_LIB_SUPPORT "Enable Zlib Filters" ON)
+-ENDIF()
+-
+-# We don't want warnings from HDF5 compilation
+-set (COMPILE_DEFINITIONS  "${COMPILE_DEFINITIONS}  -w")
+-add_definitions (${COMPILE_DEFINITIONS})
+-
+-# add HDF5 generation
+-ADD_SUBDIRECTORY (hdf5)
+-
+-# We add a custom target for copying header files.
+-add_custom_target (hdf5_postbuild ALL)
+-
+-# We build the output directory
+-add_custom_command (TARGET hdf5_postbuild POST_BUILD  COMMAND ${CMAKE_COMMAND} -E make_directory ${HDF5_INSTALL_INCLUDE_DIR})
+-
+-# We define all the header files to be copied
+-file (GLOB headerfiles ${PROJECT_SOURCE_DIR}/thirdparty/hdf5/src/*.h ${PROJECT_BINARY_DIR}/thirdparty/hdf5/H5pubconf.h)
+-
+-# We copy each header file
+-foreach (header ${headerfiles})
+-  add_custom_command (TARGET hdf5_postbuild POST_BUILD  COMMAND ${CMAKE_COMMAND} -E copy_if_different ${header} ${HDF5_INSTALL_INCLUDE_DIR}  )
+-endforeach()
+-
+ # include other smaller libraries (json, Boophf)
+ 
+ add_custom_target (thirdparty_copy ALL)
diff --git a/nixpkgs/pkgs/applications/science/biology/minimap2/default.nix b/nixpkgs/pkgs/applications/science/biology/minimap2/default.nix
new file mode 100644
index 000000000000..e33a17537910
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/minimap2/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "minimap2";
+  version = "2.17";
+
+  src = fetchFromGitHub {
+    repo = pname;
+    owner = "lh3";
+    rev = "v${version}";
+    sha256 = "0qdwlkib3aa6112372hdgvnvk86hsjjkhjar0p53pq4ajrr2cdlb";
+  };
+
+  buildInputs = [ zlib ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp minimap2 $out/bin
+    mkdir -p $out/share/man/man1
+    cp minimap2.1 $out/share/man/man1
+  '';
+  
+  meta = with stdenv.lib; {
+    description = "A versatile pairwise aligner for genomic and spliced nucleotide sequences";
+    homepage = "https://lh3.github.io/minimap2";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = [ maintainers.arcadio ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/mni_autoreg/default.nix b/nixpkgs/pkgs/applications/science/biology/mni_autoreg/default.nix
new file mode 100644
index 000000000000..254d874f9d91
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/mni_autoreg/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, cmake, makeWrapper, perlPackages, libminc }:
+
+stdenv.mkDerivation rec {
+  pname = "mni_autoreg";
+  name  = "${pname}-2017-09-22";
+
+  src = fetchFromGitHub {
+    owner = "BIC-MNI";
+    repo = pname;
+    rev = "ab99e29987dc029737785baebf24896ec37a2d76";
+    sha256 = "0axl069nv57vmb2wvqq7s9v3bfxwspzmk37bxm4973ai1irgppjq";
+  };
+
+  nativeBuildInputs = [ cmake makeWrapper ];
+  buildInputs = [ libminc ];
+  propagatedBuildInputs = with perlPackages; [ perl GetoptTabular MNI-Perllib ];
+
+  cmakeFlags = [ "-DLIBMINC_DIR=${libminc}/lib/" ];
+  # testing broken: './minc_wrapper: Permission denied' from Testing/ellipse0.mnc
+
+  postFixup = ''
+    for prog in autocrop mritoself mritotal xfmtool; do
+      echo $out/bin/$prog
+      wrapProgram $out/bin/$prog --prefix PERL5LIB : $PERL5LIB;
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/BIC-MNI/mni_autoreg";
+    description = "Tools for automated registration using the MINC image format";
+    maintainers = with maintainers; [ bcdarwin ];
+    platforms = platforms.unix;
+    license = licenses.free;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/mosdepth/default.nix b/nixpkgs/pkgs/applications/science/biology/mosdepth/default.nix
new file mode 100644
index 000000000000..21af5b82207b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/mosdepth/default.nix
@@ -0,0 +1,45 @@
+{stdenv, fetchFromGitHub, nim, htslib, pcre}:
+
+let
+  hts-nim = fetchFromGitHub {
+    owner = "brentp";
+    repo = "hts-nim";
+    rev = "v0.3.4";
+    sha256 = "0670phk1bq3l9j2zaa8i5wcpc5dyfrc0l2a6c21g0l2mmdczffa7";
+  };
+
+  docopt = fetchFromGitHub {
+    owner = "docopt";
+    repo = "docopt.nim";
+    rev = "v0.6.7";
+    sha256 = "1ga7ckg21fzwwvh26jp2phn2h3pvkn8g8sm13dxif33rp471bv37";
+  };
+
+in stdenv.mkDerivation rec {
+  pname = "mosdepth";
+  version = "0.2.9";
+
+  src = fetchFromGitHub {
+    owner = "brentp";
+    repo = "mosdepth";
+    rev = "v${version}";
+    sha256 = "01gm9gj2x2zs4yx6wk761fi1papi7qr3gp4ln1kkn8n2f9y9h849";
+  };
+
+  buildInputs = [ nim ];
+
+  buildPhase = ''
+    HOME=$TMPDIR
+    nim -p:${hts-nim}/src -p:${docopt}/src c --nilseqs:on -d:release mosdepth.nim
+  '';
+  installPhase = "install -Dt $out/bin mosdepth";
+  fixupPhase = "patchelf --set-rpath ${stdenv.lib.makeLibraryPath [ stdenv.cc.cc htslib pcre ]} $out/bin/mosdepth";
+
+  meta = with stdenv.lib; {
+    description = "fast BAM/CRAM depth calculation for WGS, exome, or targeted sequencing.";
+    license = licenses.mit;
+    homepage = "https://github.com/brentp/mosdepth";
+    maintainers = with maintainers; [ jbedo ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/mrbayes/builder.sh b/nixpkgs/pkgs/applications/science/biology/mrbayes/builder.sh
new file mode 100644
index 000000000000..5b3a54946fc9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/mrbayes/builder.sh
@@ -0,0 +1,9 @@
+# builder for mrbayes - note: only builds on Unix
+
+source $stdenv/setup
+
+tar xvfz $src
+cd mrbayes-*
+make
+mkdir -p $out/bin
+cp -v mb $out/bin
diff --git a/nixpkgs/pkgs/applications/science/biology/mrbayes/default.nix b/nixpkgs/pkgs/applications/science/biology/mrbayes/default.nix
new file mode 100644
index 000000000000..8ee7bccf075f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/mrbayes/default.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchurl, readline}:
+
+stdenv.mkDerivation rec {
+  # FIXME: replace Makefile so we can build MPI & MAC support
+
+  name = "mrbayes-3.1.2";
+  src = fetchurl {
+    url = "mirror://sourceforge/mrbayes/${name}.tar.gz";
+    sha256 = "1x7j8ca5wjrqrxmcpvd375ydm3s2pbkzykv8xfhg1jc037g560n6";
+  };
+  builder = ./builder.sh;
+  buildInputs = [readline];
+
+  meta = {
+    description     = "Bayesian Inference of Phylogeny";
+    longDescription = ''
+      Bayesian inference of phylogeny is based upon a
+      quantity called the posterior probability distribution of trees, which is
+      the probability of a tree conditioned on the observations. The conditioning
+      is accomplished using Bayes's theorem. The posterior probability
+      distribution of trees is impossible to calculate analytically; instead,
+      MrBayes uses a simulation technique called Markov chain Monte Carlo (or
+      MCMC) to approximate the posterior probabilities of trees.
+    '';
+    license     = "GPL2";
+    homepage    = "http://mrbayes.csit.fsu.edu/";
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/mrtrix/default.nix b/nixpkgs/pkgs/applications/science/biology/mrtrix/default.nix
new file mode 100644
index 000000000000..528277e05e38
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/mrtrix/default.nix
@@ -0,0 +1,92 @@
+{ stdenv, lib, fetchFromGitHub, python, makeWrapper
+, eigen, fftw, libtiff, libpng, zlib, ants, bc
+, qt5, libGL, libGLU, libX11, libXext
+, withGui ? true }:
+
+stdenv.mkDerivation rec {
+  pname = "mrtrix";
+  version = "3.0.0";
+
+  src = fetchFromGitHub {
+    owner  = "MRtrix3";
+    repo   = "mrtrix3";
+    rev    = version;
+    sha256 = "1vvmmbw3m0bdfwp4szr62ygzsvkj0ss91cx5zlkspsr1rff05f9b";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ eigen makeWrapper ] ++ lib.optional withGui qt5.wrapQtAppsHook;
+
+  buildInputs = [
+    ants
+    python
+    fftw
+    libtiff
+    libpng
+    zlib
+  ] ++ lib.optionals withGui [
+    libGL
+    libGLU
+    libX11
+    libXext
+    qt5.qtbase
+    qt5.qtsvg
+  ];
+
+  installCheckInputs = [ bc ];
+
+  postPatch = ''
+    patchShebangs ./build ./configure ./run_tests ./bin/*
+
+    # patching interpreters before fixup is needed for tests:
+    patchShebangs ./bin/*
+    patchShebangs testing/binaries/data/vectorstats/*py
+
+    substituteInPlace ./run_tests  \
+      --replace 'git submodule update --init $datadir >> $LOGFILE 2>&1' ""
+  '';
+
+  configurePhase = ''
+    export EIGEN_CFLAGS="-isystem ${eigen}/include/eigen3"
+    unset LD  # similar to https://github.com/MRtrix3/mrtrix3/issues/1519
+    ./configure ${lib.optionalString (!withGui) "-nogui"};
+  '';
+
+  buildPhase = ''
+    ./build
+    (cd testing && ../build)
+  '';
+
+  installCheckPhase = ''
+    ./run_tests units
+    ./run_tests binaries
+
+    # can also `./run_tests scripts`, but this fails due to lack of FSL package
+    # (and there's no convenient way to disable individual tests)
+  '';
+  doInstallCheck = true;
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out
+    cp -ar lib $out/lib
+    cp -ar bin $out/bin
+    runHook postInstall
+  '';
+
+  postInstall = ''
+    for prog in $out/bin/*; do
+      if [[ -x "$prog" ]]; then
+        wrapProgram $prog --prefix PATH : ${lib.makeBinPath [ ants ]}
+      fi
+    done
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/MRtrix3/mrtrix3";
+    description = "Suite of tools for diffusion imaging";
+    maintainers = with maintainers; [ bcdarwin ];
+    platforms = platforms.linux;
+    license   = licenses.mpl20;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/muscle/default.nix b/nixpkgs/pkgs/applications/science/biology/muscle/default.nix
new file mode 100644
index 000000000000..7ed18349259e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/muscle/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  _name   = "muscle";
+  name    = "${_name}-${version}";
+  version = "3.8.31";
+
+  src = fetchurl {
+    url = "https://www.drive5.com/muscle/downloads${version}/${_name}${version}_src.tar.gz";
+    sha256 = "1b89z0x7h098g99g00nqadgjnb2r5wpi9s11b7ddffqkh9m9dia3";
+  };
+
+  patches = [
+    ./muscle-3.8.31-no-static.patch
+  ];
+
+  preBuild = ''
+    cd ./src/
+    patchShebangs mk
+  '';
+
+  installPhase = ''
+    install -vD muscle $out/bin/muscle
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A multiple sequence alignment method with reduced time and space complexity";
+    license     = licenses.publicDomain;
+    homepage    = "https://www.drive5.com/muscle/";
+    maintainers = [ maintainers.unode ];
+    # NOTE: Supposed to be compatible with darwin/intel & PPC but currently fails.
+    # Anyone with access to these platforms is welcome to give it a try
+    platforms   = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/muscle/muscle-3.8.31-no-static.patch b/nixpkgs/pkgs/applications/science/biology/muscle/muscle-3.8.31-no-static.patch
new file mode 100644
index 000000000000..7f4b2129518d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/muscle/muscle-3.8.31-no-static.patch
@@ -0,0 +1,21 @@
+--- a/src/mk	2010-05-02 01:15:42.000000000 +0200
++++ b/src/mk	2018-01-27 17:07:23.539092748 +0100
+@@ -5,14 +5,14 @@
+ rm -f *.o muscle.make.stdout.txt muscle.make.stderr.txt
+ for CPPName in $CPPNames
+ do
+-  echo $CPPName >> /dev/tty
++  echo $CPPName
+   g++ $ENV_GCC_OPTS -c -O3 -msse2 -mfpmath=sse -D_FILE_OFFSET_BITS=64 -DNDEBUG=1 $CPPName.cpp -o $CPPName.o  >> muscle.make.stdout.txt 2>> muscle.make.stderr.txt
+ done
+ 
+ LINK_OPTS=
+-if [ `uname -s` == Linux ] ; then
+-    LINK_OPTS=-static
+-fi
++#if [ `uname -s` == Linux ] ; then
++#    LINK_OPTS=-static
++#fi
+ g++ $LINK_OPTS $ENV_LINK_OPTS -g -o muscle $ObjNames  >> muscle.make.stdout.txt 2>> muscle.make.stderr.txt
+ tail muscle.make.stderr.txt
+ 
diff --git a/nixpkgs/pkgs/applications/science/biology/ncbi-tools/default.nix b/nixpkgs/pkgs/applications/science/biology/ncbi-tools/default.nix
new file mode 100644
index 000000000000..cc8ebf7f37d9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/ncbi-tools/default.nix
@@ -0,0 +1,34 @@
+{stdenv, fetchurl, cpio}:
+
+# The NCBI package only builds on 32bits - on 64bits it breaks because
+# of position dependent code. Debian packagers have written replacement
+# make files(!). Either we use these, or negotiate a version which can
+# be pushed upstream to NCBI.
+#
+# Another note: you may want the older and deprecated C-libs at ftp://ftp.ncbi.nih.gov/toolbox/ncbi_tools++/2008/Mar_17_2008/NCBI_C_Toolkit/ncbi_c--Mar_17_2008.tar.gz
+
+stdenv.mkDerivation rec {
+  name = "ncbi_tools";
+  ncbi_version = "Dec_31_2008";
+  src = fetchurl {
+    url = "ftp://ftp.ncbi.nih.gov/toolbox/ncbi_tools++/2008/${ncbi_version}/ncbi_cxx--${ncbi_version}.tar.gz";
+    sha256 = "1b2v0dcdqn3bysgdkj57sxmd6s0hc9wpnxssviz399g6plhxggbr";
+  };
+
+  configureFlags = [ 
+    "--without-debug"
+    "--with-bin-release"
+    "--with-dll"
+    "--without-static"
+  ];
+  buildInputs = [ cpio ];
+
+  meta = {
+    description = ''NCBI Bioinformatics toolbox (incl. BLAST)'';
+    longDescription = ''The NCBI Bioinformatics toolsbox, including command-line utilties, libraries and include files. No X11 support'';
+    homepage = "http://www.ncbi.nlm.nih.gov/IEB/ToolBox/"; 
+    license = "GPL";
+    priority = 5;   # zlib.so gives a conflict with zlib
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/neuron/default.nix b/nixpkgs/pkgs/applications/science/biology/neuron/default.nix
new file mode 100644
index 000000000000..8cad5f466c5f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/neuron/default.nix
@@ -0,0 +1,87 @@
+{ stdenv
+, fetchurl
+, pkgconfig
+, automake
+, autoconf
+, libtool
+, ncurses
+, readline
+, which
+, python ? null
+, mpi ? null
+, iv
+}:
+
+stdenv.mkDerivation rec {
+  pname = "neuron";
+  version = "7.5";
+
+  nativeBuildInputs = [ which pkgconfig automake autoconf libtool ];
+  buildInputs = [ ncurses readline python mpi iv ];
+
+  src = fetchurl {
+    url = "https://www.neuron.yale.edu/ftp/neuron/versions/v${version}/nrn-${version}.tar.gz";
+    sha256 = "0f26v3qvzblcdjg7isq0m9j2q8q7x3vhmkfllv8lsr3gyj44lljf";
+  };
+
+  patches = (stdenv.lib.optional (stdenv.isDarwin) [ ./neuron-carbon-disable.patch ]);
+
+  # With LLVM 3.8 and above, clang (really libc++) gets upset if you attempt to redefine these...
+  postPatch = stdenv.lib.optionalString stdenv.cc.isClang ''
+    substituteInPlace src/gnu/neuron_gnu_builtin.h \
+      --replace 'double abs(double arg);' "" \
+      --replace 'float abs(float arg);' "" \
+      --replace 'short abs(short arg);' "" \
+      --replace 'long abs(long arg);' ""
+  '' + stdenv.lib.optionalString stdenv.isDarwin ''
+    # we are darwin, but we don't have all the quirks the source wants to compensate for
+    substituteInPlace src/nrnpython/setup.py.in --replace 'readline="edit"' 'readline="readline"'
+    for f in src/nrnpython/*.[ch] ; do
+      substituteInPlace $f --replace "<Python/Python.h>" "<Python.h>"
+    done
+  '';
+
+  enableParallelBuilding = true;
+
+  ## neuron install by default everything under prefix/${host_arch}/*
+  ## override this to support nix standard file hierarchy
+  ## without issues: install everything under prefix/
+  preConfigure = ''
+    ./build.sh
+    export prefix="''${prefix} --exec-prefix=''${out}"
+  '';
+
+  configureFlags = with stdenv.lib;
+                    [ "--with-readline=${readline}" "--with-iv=${iv}" ]
+                    ++  optionals (python != null)  [ "--with-nrnpython=${python.interpreter}" ]
+                    ++ (if mpi != null then ["--with-mpi" "--with-paranrn"]
+                        else ["--without-mpi"]);
+
+
+  postInstall = stdenv.lib.optionals (python != null) [ ''
+    ## standardise python neuron install dir if any
+    if [[ -d $out/lib/python ]]; then
+        mkdir -p ''${out}/${python.sitePackages}
+        mv ''${out}/lib/python/*  ''${out}/${python.sitePackages}/
+    fi
+  ''];
+
+  propagatedBuildInputs = [ readline ncurses which libtool ];
+
+  meta = with stdenv.lib; {
+    description = "Simulation environment for empirically-based simulations of neurons and networks of neurons";
+
+    longDescription = "NEURON is a simulation environment for developing and exercising models of
+                neurons and networks of neurons. It is particularly well-suited to problems where
+                cable properties of cells play an important role, possibly including extracellular
+                potential close to the membrane), and where cell membrane properties are complex,
+                involving many ion-specific channels, ion accumulation, and second messengers";
+
+    license     = licenses.bsd3;
+    homepage    = "http://www.neuron.yale.edu/neuron";
+    maintainers = [ maintainers.adev ];
+    # source claims it's only tested for x86 and powerpc
+    platforms   = platforms.x86_64 ++ platforms.i686;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/science/biology/neuron/neuron-carbon-disable.patch b/nixpkgs/pkgs/applications/science/biology/neuron/neuron-carbon-disable.patch
new file mode 100644
index 000000000000..923bffb1c338
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/neuron/neuron-carbon-disable.patch
@@ -0,0 +1,21 @@
+--- nrn-7.4/src/mac/Makefile.am	2015-11-12 21:42:45.000000000 +0100
++++ nrn-7.4.new/src/mac/Makefile.am	2016-08-24 17:43:39.000000000 +0200
+@@ -15,18 +15,8 @@
+ host_cpu = @host_cpu@
+ 
+ if MAC_DARWIN
+-carbon = @enable_carbon@
+ bin_SCRIPTS = $(launch_scripts)
+ install: install-am
+-if UniversalMacBinary
+-	$(CC) -arch ppc -o aoutppc -Dcpu="\"$(host_cpu)\"" -I. $(srcdir)/launch.c $(srcdir)/mac2uxarg.c -framework Carbon
+-	$(CC) -arch i386 -o aouti386 -Dcpu="\"$(host_cpu)\"" -I. $(srcdir)/launch.c $(srcdir)/mac2uxarg.c -framework Carbon
+-	lipo aouti386 aoutppc -create -output a.out
+-else
+-	gcc -g -arch i386 -Dncpu="\"$(host_cpu)\"" -I. $(srcdir)/launch.c $(srcdir)/mac2uxarg.c -framework Carbon
+-
+-endif
+-	carbon=$(carbon) sh $(srcdir)/launch_inst.sh "$(host_cpu)" "$(DESTDIR)$(prefix)" "$(srcdir)"
+ 	for i in $(S) ; do \
+ 		sed "s/^CPU.*/CPU=\"$(host_cpu)\"/" < $(DESTDIR)$(bindir)/$$i > temp; \
+ 		mv temp $(DESTDIR)$(bindir)/$$i; \
diff --git a/nixpkgs/pkgs/applications/science/biology/niftyreg/default.nix b/nixpkgs/pkgs/applications/science/biology/niftyreg/default.nix
new file mode 100644
index 000000000000..fd7dc4f1fbb4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/niftyreg/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, cmake, zlib }:
+
+stdenv.mkDerivation rec {
+  pname   = "niftyreg";
+  version = "1.3.9";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${pname}/nifty_reg-${version}/nifty_reg-${version}.tar.gz";
+    sha256 = "07v9v9s41lvw72wpb1jgh2nzanyc994779bd35p76vg8mzifmprl";
+  };
+
+  NIX_CFLAGS_COMPILE = [ "-Wno-error=narrowing" ];
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ zlib ];
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "http://cmictig.cs.ucl.ac.uk/wiki/index.php/NiftyReg";
+    description = "Medical image registration software";
+    maintainers = with maintainers; [ bcdarwin ];
+    platforms = [ "x86_64-linux" ];
+    license   = licenses.bsd3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/niftyseg/default.nix b/nixpkgs/pkgs/applications/science/biology/niftyseg/default.nix
new file mode 100644
index 000000000000..38194697223d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/niftyseg/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, cmake, eigen, zlib }:
+
+stdenv.mkDerivation rec {
+  pname   = "niftyseg";
+  version = "1.0";
+  src = fetchurl {
+    url    = "https://github.com/KCL-BMEIS/NiftySeg/archive/v${version}.tar.gz";
+    sha256 = "11q6yldsxp3k6gfp94c0xhcan2y3finzv8lzizmrc79yps3wjkn0";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ eigen zlib ];
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "http://cmictig.cs.ucl.ac.uk/research/software/software-nifty/niftyseg";
+    description = "Software for medical image segmentation, bias field correction, and cortical thickness calculation";
+    maintainers = with maintainers; [ bcdarwin ];
+    platforms = platforms.unix;
+    license   = licenses.bsd3;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/octopus/default.nix b/nixpkgs/pkgs/applications/science/biology/octopus/default.nix
new file mode 100644
index 000000000000..9d81e08d7293
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/octopus/default.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchFromGitHub, cmake, boost, gmp, htslib, zlib, lzma, pkg-config}:
+
+stdenv.mkDerivation rec {
+  pname = "octopus";
+  version = "0.6.3-beta";
+
+  src = fetchFromGitHub {
+    owner = "luntergroup";
+    repo = "octopus";
+    rev = "v${version}";
+    sha256 = "042fycg8ppld7iajpzq2d8h8wr0nw43zbl57y125sfihryvr373n";
+  };
+
+  nativeBuildInputs = [ cmake pkg-config ];
+  buildInputs = [ boost gmp htslib zlib lzma ];
+
+  postInstall = ''
+    mkdir $out/bin
+    mv $out/octopus $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Bayesian haplotype-based mutation calling";
+    license = licenses.mit;
+    homepage = "https://github.com/luntergroup/octopus";
+    maintainers = with maintainers; [ jbedo ];
+    platforms = platforms.x86_64;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/paml/default.nix b/nixpkgs/pkgs/applications/science/biology/paml/default.nix
new file mode 100644
index 000000000000..7a2dc2782ab0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/paml/default.nix
@@ -0,0 +1,33 @@
+{stdenv, fetchurl}:
+
+stdenv.mkDerivation rec {
+  version = "4.9j";
+  pname = "paml";
+  src = fetchurl {
+    url = "http://abacus.gene.ucl.ac.uk/software/paml${version}.tgz";
+    sha256 = "0qflf3i27x6jwks3c6q560m1q8r043ja96syah145113iz5wdalp";
+  };
+
+  preBuild = ''
+    cd ./src/
+  '';
+  installPhase = ''
+    mkdir -pv $out/bin
+    cp -v codeml $out/bin
+    cp -v baseml $out/bin
+    cp -v basemlg $out/bin
+    cp -v chi2 $out/bin
+    cp -v codeml $out/bin
+    cp -v evolver $out/bin
+    cp -v mcmctree $out/bin
+    cp -v pamp $out/bin
+    cp -v yn00 $out/bin
+  '';
+
+  meta = {
+    description     = "Phylogenetic Analysis by Maximum Likelihood (PAML)";
+    longDescription = ''PAML is a package of programs for phylogenetic analyses of DNA or protein sequences using maximum likelihood. It is maintained and distributed for academic use free of charge by Ziheng Yang. ANSI C source codes are distributed for UNIX/Linux/Mac OSX, and executables are provided for MS Windows. PAML is not good for tree making. It may be used to estimate parameters and test hypotheses to study the evolutionary process, when you have reconstructed trees using other programs such as PAUP*, PHYLIP, MOLPHY, PhyML, RaxML, etc.'';
+    license     = "non-commercial";
+    homepage    = "http://abacus.gene.ucl.ac.uk/software/paml.html";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/picard-tools/default.nix b/nixpkgs/pkgs/applications/science/biology/picard-tools/default.nix
new file mode 100644
index 000000000000..85d92d3af843
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/picard-tools/default.nix
@@ -0,0 +1,31 @@
+{stdenv, fetchurl, jre, makeWrapper}:
+
+stdenv.mkDerivation rec {
+  pname = "picard-tools";
+  version = "2.23.0";
+
+  src = fetchurl {
+    url = "https://github.com/broadinstitute/picard/releases/download/${version}/picard.jar";
+    sha256 = "0yhgfz5jjw55ipgdb32wjdcb01xx2g9ikgvwinnfwswx50iscf5a";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ jre ];
+
+  phases = [ "installPhase" ];
+
+  installPhase = ''
+    mkdir -p $out/libexec/picard
+    cp $src $out/libexec/picard/picard.jar
+    mkdir -p $out/bin
+    makeWrapper ${jre}/bin/java $out/bin/picard --add-flags "-jar $out/libexec/picard/picard.jar"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Tools for high-throughput sequencing (HTS) data and formats such as SAM/BAM/CRAM and VCF";
+    license = licenses.mit;
+    homepage = "https://broadinstitute.github.io/picard/";
+    maintainers = with maintainers; [ jbedo ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/platypus/default.nix b/nixpkgs/pkgs/applications/science/biology/platypus/default.nix
new file mode 100644
index 000000000000..30e45d5af0ec
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/platypus/default.nix
@@ -0,0 +1,38 @@
+{stdenv, fetchFromGitHub, python27, htslib, zlib, makeWrapper}:
+
+let python = python27.withPackages (ps: with ps; [ cython ]);
+
+in stdenv.mkDerivation {
+  pname = "platypus-unstable";
+  version = "2018-07-22";
+
+  src = fetchFromGitHub {
+    owner = "andyrimmer";
+    repo = "Platypus";
+    rev = "3e72641c69800da0cd4906b090298e654d316ee1";
+    sha256 = "0nah6r54b8xm778gqyb8b7rsd76z8ji4g73sm6rvpw5s96iib1vw";
+  };
+
+  buildInputs = [ htslib python zlib makeWrapper ];
+
+  buildPhase = ''
+    patchShebangs .
+    make
+  '';
+
+  installPhase = ''
+    mkdir -p $out/libexec/platypus
+    cp -r ./* $out/libexec/platypus
+
+    mkdir -p $out/bin
+    makeWrapper ${python}/bin/python $out/bin/platypus --add-flags "$out/libexec/platypus/bin/Platypus.py"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "The Platypus variant caller";
+    license = licenses.gpl3;
+    homepage = "https://github.com/andyrimmer/Platypus";
+    maintainers = with maintainers; [ jbedo ];
+    platforms = platforms.x86_64;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/plink-ng/default.nix b/nixpkgs/pkgs/applications/science/biology/plink-ng/default.nix
new file mode 100644
index 000000000000..0a31ff6ba4fd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/plink-ng/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, zlib, blas, lapack, darwin}:
+
+stdenv.mkDerivation rec {
+  pname = "plink-ng";
+  version = "1.90b3";
+
+  src = fetchFromGitHub {
+    owner = "chrchang";
+    repo = "plink-ng";
+    rev = "v${version}";
+    sha256 = "1zhffjbwpd50dxywccbnv1rxy9njwz73l4awc5j7i28rgj3davcq";
+  };
+
+  buildInputs = [ zlib ] ++ (if stdenv.isDarwin then [ darwin.apple_sdk.frameworks.Accelerate ] else [ blas lapack ]) ;
+
+  preBuild = ''
+    sed -i 's|zlib-1.2.8/zlib.h|zlib.h|g' *.c *.h
+    ${if stdenv.cc.isClang then "sed -i 's|g++|clang++|g' Makefile.std" else ""}
+
+    makeFlagsArray+=(
+      ZLIB=-lz
+      BLASFLAGS="-lblas -lcblas -llapack"
+    );
+  '';
+
+  makefile = "Makefile.std";
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp plink $out/bin
+  '';
+
+  meta = {
+    description = "A comprehensive update to the PLINK association analysis toolset";
+    homepage = "https://www.cog-genomics.org/plink2";
+    license = stdenv.lib.licenses.gpl3;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/plink/default.nix b/nixpkgs/pkgs/applications/science/biology/plink/default.nix
new file mode 100644
index 000000000000..009e12aa02f0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/plink/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, zlib, unzip }:
+
+stdenv.mkDerivation {
+  name = "plink-1.07";
+
+  src = fetchurl {
+    url = "http://pngu.mgh.harvard.edu/~purcell/plink/dist/plink-1.07-src.zip";
+    sha256 = "4af56348443d0c6a1db64950a071b1fcb49cc74154875a7b43cccb4b6a7f482b";
+  };
+
+  buildInputs = [ zlib unzip ] ;
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp plink $out/bin
+  '';
+  
+  meta = {
+    description = "Whole genome association toolkit";
+    homepage = "http://pngu.mgh.harvard.edu/~purcell/plink/";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.all;
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/poretools/default.nix b/nixpkgs/pkgs/applications/science/biology/poretools/default.nix
new file mode 100755
index 000000000000..a9f3fdb24672
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/poretools/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, pythonPackages, fetchFromGitHub }:
+
+pythonPackages.buildPythonPackage rec {
+  pname = "poretools";
+  version = "unstable-2016-07-10";
+
+  src = fetchFromGitHub {
+    repo = pname;
+    owner = "arq5x";
+    rev = "e426b1f09e86ac259a00c261c79df91510777407";
+    sha256 = "0bglj833wxpp3cq430p1d3xp085ls221js2y90w7ir2x5ay8l7am";
+  };
+
+  propagatedBuildInputs = [pythonPackages.h5py pythonPackages.matplotlib pythonPackages.seaborn pythonPackages.pandas];
+
+  meta = {
+    description = "a toolkit for working with nanopore sequencing data from Oxford Nanopore";
+    license = stdenv.lib.licenses.mit;
+    homepage = "https://poretools.readthedocs.io/en/latest/";
+    maintainers = [stdenv.lib.maintainers.rybern];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/prodigal/default.nix b/nixpkgs/pkgs/applications/science/biology/prodigal/default.nix
new file mode 100644
index 000000000000..ba51c93c38c2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/prodigal/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "prodigal";
+  version = "2.6.3";
+
+  src = fetchFromGitHub {
+    repo = "Prodigal";
+    owner = "hyattpd";
+    rev = "v${version}";
+    sha256 = "1fs1hqk83qjbjhrvhw6ni75zakx5ki1ayy3v6wwkn3xvahc9hi5s";
+  };
+
+  makeFlags = [
+    "CC=cc"
+    "INSTALLDIR=$(out)/bin"
+  ];
+  
+  meta = with stdenv.lib; {
+    description = "Fast, reliable protein-coding gene prediction for prokaryotic genomes";
+    homepage = "https://github.com/hyattpd/Prodigal";
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ luispedro ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/quast/default.nix b/nixpkgs/pkgs/applications/science/biology/quast/default.nix
new file mode 100644
index 000000000000..e3c3ea23c2c0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/quast/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, fetchurl, python3Packages, zlib, bash, coreutils }:
+
+let
+  pythonPackages = python3Packages;
+  inherit (pythonPackages) python;
+in
+
+pythonPackages.buildPythonApplication rec {
+  pname = "quast";
+  version = "5.0.2";
+
+  src = fetchurl {
+    url = "https://github.com/ablab/quast/releases/download/${pname}_${version}/${pname}-${version}.tar.gz";
+    sha256 = "13ml8qywbb4cc7wf2x7z5mz1rjqg51ab8wkizwcg4f6c40zgif6d";
+  };
+
+  pythonPath = with pythonPackages; [ simplejson joblib setuptools matplotlib ];
+
+  nativeBuildInputs = [ coreutils ];
+
+  buildInputs = [ zlib ] ++ pythonPath;
+
+  dontConfigure = true;
+
+  dontBuild = true;
+
+  installPhase = ''
+    substituteInPlace quast_libs/bedtools/Makefile \
+      --replace "/bin/bash" "${bash}/bin/bash"
+    mkdir -p "$out/${python.sitePackages}"
+    export PYTHONPATH="$out/${python.sitePackages}:$PYTHONPATH"
+    ${python.interpreter} setup.py install \
+      --install-lib=$out/${python.sitePackages} \
+      --prefix="$out"
+  '';
+
+   postFixup = ''
+   for file in $(find $out -type f -type f -perm /0111); do
+       old_rpath=$(patchelf --print-rpath $file) && \
+       patchelf --set-rpath $old_rpath:${stdenv.cc.cc.lib}/lib $file || true
+   done
+   # Link to the master program
+   ln -s $out/bin/quast.py $out/bin/quast
+  '';
+
+  dontPatchELF = true;
+
+  # Tests need to download data files, so manual run after packaging is needed
+  doCheck = false;
+
+  meta = with stdenv.lib ; {
+    description = "Evaluates genome assemblies by computing various metrics";
+    homepage = "https://github.com/ablab/quast";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.bzizou ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/raxml/default.nix b/nixpkgs/pkgs/applications/science/biology/raxml/default.nix
new file mode 100644
index 000000000000..5c7353af9315
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/raxml/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, fetchFromGitHub
+, pkgs
+, mpi ? false
+}:
+
+stdenv.mkDerivation rec {
+  pname = "RAxML";
+  version = "8.2.12";
+
+  src = fetchFromGitHub {
+    owner = "stamatak";
+    repo = "standard-${pname}";
+    rev = "v${version}";
+    sha256 = "1jqjzhch0rips0vp04prvb8vmc20c5pdmsqn8knadcf91yy859fh";
+  };
+
+  buildInputs = if mpi then [ pkgs.openmpi ] else [];
+
+  # TODO darwin, AVX and AVX2 makefile targets
+  buildPhase = if mpi then ''
+      make -f Makefile.MPI.gcc
+    '' else ''
+      make -f Makefile.SSE3.PTHREADS.gcc
+    '';
+
+  installPhase = if mpi then ''
+    mkdir -p $out/bin && cp raxmlHPC-MPI $out/bin
+  '' else ''
+    mkdir -p $out/bin && cp raxmlHPC-PTHREADS-SSE3 $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A tool for Phylogenetic Analysis and Post-Analysis of Large Phylogenies";
+    license = licenses.gpl3;
+    homepage = "https://sco.h-its.org/exelixis/web/software/raxml/";
+    maintainers = [ maintainers.unode ];
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/samtools/default.nix b/nixpkgs/pkgs/applications/science/biology/samtools/default.nix
new file mode 100644
index 000000000000..e750eea89ac9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/samtools/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, zlib, htslib, perl, ncurses ? null }:
+
+stdenv.mkDerivation rec {
+  pname = "samtools";
+  version = "1.10";
+
+  src = fetchurl {
+    url = "https://github.com/samtools/samtools/releases/download/${version}/${pname}-${version}.tar.bz2";
+    sha256 = "119ms0dpydw8dkh3zc4yyw9zhdzgv12px4l2kayigv31bpqcb7kv";
+  };
+
+  nativeBuildInputs = [ perl ];
+
+  buildInputs = [ zlib ncurses htslib ];
+
+  configureFlags = [ "--with-htslib=${htslib}" ]
+    ++ stdenv.lib.optional (ncurses == null) "--without-curses";
+
+  preCheck = ''
+    patchShebangs test/
+  '';
+
+  enableParallelBuilding = true;
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    description = "Tools for manipulating SAM/BAM/CRAM format";
+    license = licenses.mit;
+    homepage = "http://www.htslib.org/";
+    platforms = platforms.unix;
+    maintainers = [ maintainers.mimame ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/samtools/samtools-0.1.19-no-curses.patch b/nixpkgs/pkgs/applications/science/biology/samtools/samtools-0.1.19-no-curses.patch
new file mode 100644
index 000000000000..a7782a1a0264
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/samtools/samtools-0.1.19-no-curses.patch
@@ -0,0 +1,22 @@
+diff --git a/Makefile b/Makefile
+index 2f51bfc..395d6f1 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,7 +1,7 @@
+ CC=			gcc
+ CFLAGS=		-g -Wall -O2
+ #LDFLAGS=		-Wl,-rpath,\$$ORIGIN/../lib
+-DFLAGS=		-D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_USE_KNETFILE -D_CURSES_LIB=1
++DFLAGS=		-D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_USE_KNETFILE # -D_CURSES_LIB=1
+ KNETFILE_O=	knetfile.o
+ LOBJS=		bgzf.o kstring.o bam_aux.o bam.o bam_import.o sam.o bam_index.o	\
+ 			bam_pileup.o bam_lpileup.o bam_md.o razf.o faidx.o bedidx.o \
+@@ -15,7 +15,7 @@ PROG=		samtools
+ INCLUDES=	-I.
+ SUBDIRS=	. bcftools misc
+ LIBPATH=
+-LIBCURSES=	-lcurses # -lXCurses
++LIBCURSES=	# -lcurses # -lXCurses
+ 
+ .SUFFIXES:.c .o
+ .PHONY: all lib
diff --git a/nixpkgs/pkgs/applications/science/biology/samtools/samtools_0_1_19.nix b/nixpkgs/pkgs/applications/science/biology/samtools/samtools_0_1_19.nix
new file mode 100644
index 000000000000..d62c2a1fe7b1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/samtools/samtools_0_1_19.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "samtools";
+  version = "0.1.19";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/samtools/${pname}-${version}.tar.bz2";
+    sha256 = "d080c9d356e5f0ad334007e4461cbcee3c4ca97b8a7a5a48c44883cf9dee63d4";
+  };
+
+  patches = [
+    ./samtools-0.1.19-no-curses.patch
+  ];
+
+  buildInputs = [ zlib ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mkdir -p $out/share/man
+
+    cp samtools $out/bin
+    cp samtools.1 $out/share/man
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Tools for manipulating SAM/BAM/CRAM format";
+    license = licenses.mit;
+    homepage = "http://samtools.sourceforge.net/";
+    platforms = platforms.unix;
+    maintainers = [ maintainers.unode ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/seaview/default.nix b/nixpkgs/pkgs/applications/science/biology/seaview/default.nix
new file mode 100644
index 000000000000..4192de714d0b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/seaview/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, coreutils, fltk, libjpeg }:
+
+stdenv.mkDerivation rec {
+  version = "5.0.2";
+  pname = "seaview";
+
+  src = fetchurl {
+    url = "ftp://pbil.univ-lyon1.fr/pub/mol_phylogeny/seaview/archive/seaview_${version}.tar.gz";
+    sha256 = "0bad0nd18a36g6ysx28j68rbnwqn33ra8inx2lv2igqqcs6i5kif";
+  };
+
+  buildInputs = [ fltk libjpeg ];
+
+  patchPhase = "sed -i 's#PATH=/bin:/usr/bin rm#'${coreutils}/bin/rm'#' seaview.cxx";
+  installPhase = "mkdir -p $out/bin; cp seaview $out/bin";
+
+  meta = with stdenv.lib; {
+    description = "GUI for molecular phylogeny";
+    longDescription = ''
+      SeaView is a multiplatform, graphical user interface for multiple sequence alignment and molecular phylogeny.
+        - SeaView reads and writes various file formats (NEXUS, MSF, CLUSTAL, FASTA, PHYLIP, MASE, Newick) of DNA and protein sequences and of phylogenetic trees.
+        - SeaView drives programs muscle or Clustal Omega for multiple sequence alignment, and also allows to use any external alignment algorithm able to read and write FASTA-formatted files.
+        - Seaview drives the Gblocks program to select blocks of evolutionarily conserved sites.
+        - SeaView computes phylogenetic trees by
+          + parsimony, using PHYLIP's dnapars/protpars algorithm,
+          + distance, with NJ or BioNJ algorithms on a variety of evolutionary distances,
+          + maximum likelihood, driving program PhyML 3.1.
+        - Seaview can use the Transfer Bootstrap Expectation method to compute the bootstrap support of PhyML and distance trees.
+        - SeaView prints and draws phylogenetic trees on screen, SVG, PDF or PostScript files.
+        - SeaView allows to download sequences from EMBL/GenBank/UniProt using the Internet.
+
+      Seaview is published in:
+
+          Gouy M., Guindon S. & Gascuel O. (2010) SeaView version 4 : a multiplatform graphical user interface for sequence alignment and phylogenetic tree building. Molecular Biology and Evolution 27(2):221-224.
+    '';
+    homepage = "http://doua.prabi.fr/software/seaview";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.iimog ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/snpeff/default.nix b/nixpkgs/pkgs/applications/science/biology/snpeff/default.nix
new file mode 100644
index 000000000000..c68fcfada332
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/snpeff/default.nix
@@ -0,0 +1,33 @@
+{stdenv, fetchurl, jre, unzip, makeWrapper}:
+
+stdenv.mkDerivation rec {
+  pname = "snpeff";
+  version = "4.3t";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/snpeff/snpEff_v${builtins.replaceStrings [ "." ] [ "_" ] version}_core.zip";
+    sha256 = "0i12mv93bfv8xjwc3rs2x73d6hkvi7kgbbbx3ry984l3ly4p6nnm";
+  };
+
+  buildInputs = [ unzip jre makeWrapper ];
+
+  sourceRoot = "snpEff";
+
+  installPhase = ''
+    mkdir -p $out/libexec/snpeff
+    cp *.jar *.config $out/libexec/snpeff
+
+    mkdir -p $out/bin
+    makeWrapper ${jre}/bin/java $out/bin/snpeff --add-flags "-jar $out/libexec/snpeff/snpEff.jar"
+    makeWrapper ${jre}/bin/java $out/bin/snpsift --add-flags "-jar $out/libexec/snpeff/SnpSift.jar"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Genetic variant annotation and effect prediction toolbox.";
+    license = licenses.lgpl3;
+    homepage = "http://snpeff.sourceforge.net/";
+    maintainers = with maintainers; [ jbedo ];
+    platforms = platforms.all;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/somatic-sniper/default.nix b/nixpkgs/pkgs/applications/science/biology/somatic-sniper/default.nix
new file mode 100644
index 000000000000..17d9c3dbb55c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/somatic-sniper/default.nix
@@ -0,0 +1,28 @@
+{stdenv, fetchFromGitHub, cmake, zlib, ncurses}:
+
+stdenv.mkDerivation rec {
+  pname = "somatic-sniper";
+  version = "1.0.5.0";
+
+  src = fetchFromGitHub {
+    owner = "genome";
+    repo = "somatic-sniper";
+    rev = "v${version}";
+    sha256 = "0lk7p9sp6mp50f6w1nppqhr40fcwy1asw06ivw8w8jvvnwaqf987";
+  };
+
+  patches = [ ./somatic-sniper.patch ];
+
+  buildInputs = [ cmake zlib ncurses ];
+
+  enableParallelBuilding = false;
+
+  meta = with stdenv.lib; {
+    description = "Identify single nucleotide positions that are different between tumor and normal";
+    license = licenses.mit;
+    homepage = "https://github.com/genome/somatic-sniper";
+    maintainers = with maintainers; [ jbedo ];
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/somatic-sniper/somatic-sniper.patch b/nixpkgs/pkgs/applications/science/biology/somatic-sniper/somatic-sniper.patch
new file mode 100644
index 000000000000..9af04c0a0696
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/somatic-sniper/somatic-sniper.patch
@@ -0,0 +1,26 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 6d5a180..7254292 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -11,7 +11,7 @@ set(CMAKE_MODULE_PATH
+     )
+ 
+ include(TestHelper)
+-include(VersionHelper)
++#include(VersionHelper)
+ include(ProjectHelper)
+ 
+ # NOTE: for sniper we want the exe suffix to be like 0.7.4, not just 0.7
+diff --git a/vendor/samtools.patch b/vendor/samtools.patch
+index f173017..654f878 100644
+--- a/vendor/samtools.patch
++++ b/vendor/samtools.patch
+@@ -6,7 +6,7 @@ diff -Nuar a/Makefile b/Makefile
+  
+  samtools:lib $(AOBJS)
+ -		$(CC) $(CFLAGS) -o $@ $(AOBJS) -lm $(LIBPATH) $(LIBCURSES) -lz -L. -lbam
+-+		$(CC) $(CFLAGS) -o $@ $(AOBJS) -lm $(LIBPATH) $(LIBCURSES) -L. -lbam -lz
+++		$(CC) $(CFLAGS) -o $@ $(AOBJS) -lm $(LIBPATH) -lncurses -L. -lbam -lz
+  
+  razip:razip.o razf.o
+  		$(CC) $(CFLAGS) -o $@ razf.o razip.o -lz
diff --git a/nixpkgs/pkgs/applications/science/biology/sortmerna/default.nix b/nixpkgs/pkgs/applications/science/biology/sortmerna/default.nix
new file mode 100644
index 000000000000..1f291d1a7008
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/sortmerna/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, cmake, rocksdb, rapidjson, pkgconfig, fetchFromGitHub, fetchpatch, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "sortmerna";
+  version = "3.0.3";
+
+  src = fetchFromGitHub {
+    repo = pname;
+    owner = "biocore";
+    rev = "v${version}";
+    sha256 = "0zx5fbzyr8wdr0zwphp8hhcn1xz43s5lg2ag4py5sv0pv5l1jh76";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "CMakeInstallPrefix.patch";
+      url = "https://github.com/biocore/sortmerna/commit/4d36d620a3207e26cf3f588d4ec39889ea21eb79.patch";
+      sha256 = "0hc3jwdr6ylbyigg52q8islqc0mb1k8rrjadvjfqaxnili099apd";
+    })
+  ];
+
+  nativeBuildInputs = [ cmake rapidjson pkgconfig ];
+  buildInputs = [ zlib rocksdb rapidjson ];
+
+  cmakeFlags = [
+    "-DCMAKE_BUILD_TYPE=Release"
+    "-DROCKSDB_HOME=${rocksdb}"
+    "-DRAPIDJSON_HOME=${rapidjson}"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Tools for filtering, mapping, and OTU-picking from shotgun genomics data";
+    license = licenses.lgpl3;
+    platforms = platforms.x86_64;
+    homepage = "https://bioinfo.lifl.fr/RNA/sortmerna/";
+    maintainers = with maintainers; [ luispedro ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/spades/default.nix b/nixpkgs/pkgs/applications/science/biology/spades/default.nix
new file mode 100644
index 000000000000..d555f2873a67
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/spades/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, zlib, bzip2, cmake }:
+
+stdenv.mkDerivation rec {
+  pname = "SPAdes";
+  version = "3.14.1";
+
+  src = fetchurl {
+    url = "http://cab.spbu.ru/files/release${version}/${pname}-${version}.tar.gz";
+    sha256 = "1ji3afn6yvx7ysg7p9j0d1g28zrnxg1b7x90mhs2bj3lgs7vfafn";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ zlib bzip2 ];
+
+  doCheck = true;
+
+  sourceRoot = "${pname}-${version}/src";
+
+  meta = with stdenv.lib; {
+    description = "St. Petersburg genome assembler: assembly toolkit containing various assembly pipelines";
+    license = licenses.gpl2;
+    homepage = "http://cab.spbu.ru/software/spades/";
+    platforms = platforms.unix;
+    maintainers = [ maintainers.bzizou ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/stacks/default.nix b/nixpkgs/pkgs/applications/science/biology/stacks/default.nix
new file mode 100644
index 000000000000..12c865162425
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/stacks/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, zlib }:
+    
+stdenv.mkDerivation rec {
+  pname = "stacks";
+  version = "2.53";
+  src = fetchurl {
+    url = "http://catchenlab.life.illinois.edu/stacks/source/${pname}-${version}.tar.gz";
+    sha256 = "1zchds205nwdqch1246953dr8c0019yas178qbq3jypbxvmgq7pf";
+  };
+
+  buildInputs = [ zlib ];
+
+  meta = {
+    description = "Software pipeline for building loci from short-read sequences";
+    homepage = "http://catchenlab.life.illinois.edu/stacks/";
+    maintainers = [ stdenv.lib.maintainers.bzizou ];
+    license = stdenv.lib.licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/star/default.nix b/nixpkgs/pkgs/applications/science/biology/star/default.nix
new file mode 100644
index 000000000000..6f4211d0c0d9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/star/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "star";
+  version = "2.7.3a";
+
+  src = fetchFromGitHub {
+    repo = "STAR";
+    owner = "alexdobin";
+    rev = version;
+    sha256 = "1hgiqw5qhs0pc1xazzihcfd92na02xyq2kb469z04y1v51kpvvjq";
+  };
+
+  sourceRoot = "source/source";
+
+  postPatch = ''
+    substituteInPlace Makefile --replace "/bin/rm" "rm"
+  '';
+
+  buildInputs = [ zlib ];
+
+  buildFlags = [ "STAR" "STARlong" ];
+
+  enableParallelBuilding = true;
+
+  installPhase = ''
+    runHook preInstall
+    install -D STAR STARlong -t $out/bin
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Spliced Transcripts Alignment to a Reference";
+    homepage = "https://github.com/alexdobin/STAR";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.arcadio ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/strelka/default.nix b/nixpkgs/pkgs/applications/science/biology/strelka/default.nix
new file mode 100644
index 000000000000..a32eddcb1cd9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/strelka/default.nix
@@ -0,0 +1,43 @@
+{stdenv, fetchFromGitHub, cmake, zlib, python2}:
+
+stdenv.mkDerivation rec {
+  pname = "strelka";
+  version = "2.9.10";
+
+  src = fetchFromGitHub {
+    owner = "Illumina";
+    repo = "strelka";
+    rev = "v${version}";
+    sha256 = "1nykbmim1124xh22nrhrsn8xgjb3s2y7akrdapn9sl1gdych4ppf";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ zlib python2 ];
+
+  NIX_CFLAGS_COMPILE = [
+    "-Wno-error=maybe-uninitialized"
+    "-Wno-error=pessimizing-move"
+  ];
+
+  preConfigure = ''
+    sed -i 's|/usr/bin/env python|${python2}/bin/python|' src/python/lib/makeRunScript.py
+    patchShebangs .
+  '';
+
+  postFixup = ''
+    pushd $out/lib/python/pyflow
+    sed -i 's|/bin/bash|${stdenv.shell}|' pyflowTaskWrapper.py
+    rm pyflowTaskWrapper.pyc
+    echo "import pyflowTaskWrapper" | python2
+    popd
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Germline and small variant caller";
+    license = licenses.gpl3;
+    homepage = "https://github.com/Illumina/strelka";
+    maintainers = with maintainers; [ jbedo ];
+    platforms = [ "x86_64-linux" ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/sumatools/default.nix b/nixpkgs/pkgs/applications/science/biology/sumatools/default.nix
new file mode 100644
index 000000000000..1e3b479d54fc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/sumatools/default.nix
@@ -0,0 +1,68 @@
+{ gccStdenv, fetchFromGitLab, zlib }:
+
+let
+  stdenv = gccStdenv;
+  meta = with stdenv.lib; {
+    description = "Fast and exact comparison and clustering of sequences";
+    homepage = "https://metabarcoding.org/sumatra";
+    maintainers = [ maintainers.bzizou ];
+    platforms = platforms.unix;
+  };
+
+in rec {
+
+  # Suma library
+  sumalibs = stdenv.mkDerivation rec {
+    version = "1.0.34";
+    pname = "sumalibs";
+    src = fetchFromGitLab {
+      domain = "git.metabarcoding.org";
+      owner = "obitools";
+      repo = pname;
+      rev = "sumalib_v${version}";
+      sha256 = "0hwkrxzfz7m5wdjvmrhkjg8kis378iaqr5n4nhdhkwwhn8x1jn5a";
+    };
+    makeFlags = [ "PREFIX=$(out)" ];
+    inherit meta;
+  };
+
+  # Sumatra
+  sumatra = stdenv.mkDerivation rec {
+    version = "1.0.34";
+    pname = "sumatra";
+    src = fetchFromGitLab {
+      domain = "git.metabarcoding.org";
+      owner = "obitools";
+      repo = pname;
+      rev = "${pname}_v${version}";
+      sha256 = "1bbpbdkshdc3xffqnr1qfy8qk64ldsmdc3s8mrcrlx132rgbi5f6";
+    };
+    buildInputs = [ sumalibs zlib ];
+    makeFlags = [
+      "LIBSUMA=${sumalibs}/lib/libsuma.a"
+      "LIBSUMAPATH=-L${sumalibs}"
+      "PREFIX=$(out)"
+    ];
+    inherit meta;
+  };
+
+  # Sumaclust
+  sumaclust = stdenv.mkDerivation rec {
+    version = "1.0.34";
+    pname = "sumaclust";
+    src = fetchFromGitLab {
+      domain = "git.metabarcoding.org";
+      owner = "obitools";
+      repo = pname;
+      rev = "${pname}_v${version}";
+      sha256 = "0x8yi3k3jxhmv2krp4rcjlj2f9zg0qrk7gx4kpclf9c3yxgsgrds";
+    };
+    buildInputs = [ sumalibs ];
+    makeFlags = [
+      "LIBSUMA=${sumalibs}/lib/libsuma.a"
+      "LIBSUMAPATH=-L${sumalibs}"
+      "PREFIX=$(out)"
+    ];
+    inherit meta;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/svaba/default.nix b/nixpkgs/pkgs/applications/science/biology/svaba/default.nix
new file mode 100644
index 000000000000..ae8dc95d6fea
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/svaba/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, zlib, bzip2, lzma, fetchFromGitHub } :
+
+stdenv.mkDerivation rec {
+  version = "1.1.0";
+  pname = "svaba";
+
+  src = fetchFromGitHub {
+    owner = "walaj";
+    repo = pname;
+    rev = version;
+    sha256 = "1vv5mc9z5d22kgdy7mm27ya5aahnqgkcrskdr2405058ikk9g8kp";
+    fetchSubmodules = true;
+  };
+
+  buildInputs = [ zlib bzip2 lzma ];
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm555 src/svaba/svaba $out/bin/svaba
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Structural variant and INDEL caller for DNA sequencing data, using genome-wide local assembly";
+    license = licenses.gpl3;
+    homepage = "https://github.com/walaj/svaba";
+    maintainers = with maintainers; [ scalavision ];
+    platforms = platforms.linux;
+    longDescription = ''
+      SvABA is a method for detecting structural variants in sequencing data
+      using genome-wide local assembly. Under the hood, SvABA uses a custom
+      implementation of SGA (String Graph Assembler) by Jared Simpson,
+      and BWA-MEM by Heng Li. Contigs are assembled for every 25kb window
+      (with some small overlap) for every region in the genome.
+      The default is to use only clipped, discordant, unmapped and indel reads,
+      although this can be customized to any set of reads at the command line using VariantBam rules.
+      These contigs are then immediately aligned to the reference with BWA-MEM and parsed to identify variants.
+      Sequencing reads are then realigned to the contigs with BWA-MEM, and variants are scored by their read support.
+    '';
+
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/tebreak/default.nix b/nixpkgs/pkgs/applications/science/biology/tebreak/default.nix
new file mode 100644
index 000000000000..9ff81944f6a7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/tebreak/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchFromGitHub, last, exonerate, minia, python3Packages, bwa
+, samtools, findutils }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "tebreak";
+  version = "1.0";
+
+  src = fetchFromGitHub {
+    owner = "adamewing";
+    repo = "tebreak";
+    rev = version;
+    sha256 = "194av17wz66n4zxyi56mbkik31j2wmkly5i9qmxgaxymhavzi3kq";
+  };
+
+  nativeBuildInputs = [ findutils python3Packages.cython ];
+  propagatedBuildInputs = with python3Packages; [
+    pysam
+    scipy
+    bx-python
+    scikit-bio
+  ];
+
+  preConfigure = ''
+    # patch the paths to all required software
+    for f in $(find . -type f) ; do
+      sed -i "s|'bwa'|'${bwa}/bin/bwa'|" $f
+      sed -i "s|'minia'|'${minia}/bin/minia'|" $f
+      sed -i "s|'exonerate'|'${exonerate}/bin/exonerate'|" $f
+      sed -i "s|'samtools'|'${samtools}/bin/samtools'|" $f
+      sed -i "s|'lastal'|'${last}/bin/lastal'|" $f
+      sed -i "s|'lastdb'|'${last}/bin/lastdb'|" $f
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Find and characterise transposable element insertions";
+    homepage = "https://github.com/adamewing/tebreak";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jbedo ];
+    platforms = platforms.x86_64;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/trimal/default.nix b/nixpkgs/pkgs/applications/science/biology/trimal/default.nix
new file mode 100755
index 000000000000..8d7e62b61431
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/trimal/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "trimal";
+  version = "1.4.1";
+
+  src = fetchFromGitHub {
+    repo = pname;
+    owner = "scapella";
+    rev = "v${version}";
+    sha256 = "0isc7s3514di4z953xq53ncjkbi650sh4q9yyw5aag1n9hqnh7k0";
+  };
+
+  postUnpack = ''
+    sourceRoot=''${sourceRoot}/source
+    echo Source root reset to ''${sourceRoot}
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -a trimal readal statal $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A tool for the automated removal of spurious sequences or poorly aligned regions from a multiple sequence alignment";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    homepage = "http://trimal.cgenomics.org";
+    maintainers = [ maintainers.bzizou ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/truvari/default.nix b/nixpkgs/pkgs/applications/science/biology/truvari/default.nix
new file mode 100644
index 000000000000..e64c9d3493e9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/truvari/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, fetchFromGitHub
+, python3Packages
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "truvari";
+  version = "1.3.4";
+
+  src = fetchFromGitHub {
+    owner = "spiralgenetics";
+    repo = "truvari";
+    rev = "v${version}";
+    sha256 = "1bph7v48s7pyfagz8a2fzl5fycjliqzn5lcbv3m2bp2ih1f1gd1v";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    pyvcf
+    python-Levenshtein
+    progressbar2
+    pysam
+    pyfaidx
+    intervaltree
+  ];
+
+  prePatch = ''
+    substituteInPlace ./setup.py \
+      --replace '"progressbar2==3.41.0",' '"progressbar2==3.47.0",' \
+      --replace '"pysam==0.15.2",' '"pysam==0.15.4",' \
+      --replace '"pyfaidx==0.5.5.2",' '"pyfaidx==0.5.8",'
+  '';
+
+  meta = with lib; {
+    description = "Structural variant comparison tool for VCFs";
+    license = licenses.mit;
+    maintainers = with maintainers; [ scalavision ];
+    longDescription = ''
+      Truvari is a benchmarking tool for comparison sets of SVs.
+      It can calculate the recall, precision, and f-measure of a
+      vcf from a given structural variant caller. The tool
+      is created by Spiral Genetics.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/varscan/default.nix b/nixpkgs/pkgs/applications/science/biology/varscan/default.nix
new file mode 100644
index 000000000000..e97c8f14451f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/varscan/default.nix
@@ -0,0 +1,36 @@
+{stdenv, fetchurl, jre, makeWrapper}:
+
+stdenv.mkDerivation rec {
+  pname = "varscan";
+  version = "2.4.2";
+
+  src = fetchurl {
+    url = "https://github.com/dkoboldt/varscan/releases/download/${version}/VarScan.v${version}.jar";
+    sha256 = "0cfhshinyqgwc6i7zf8lhbfybyly2x5anrz824zyvdhzz5i69zrl";
+  };
+
+  buildInputs = [ jre makeWrapper ];
+
+  phases = [ "installPhase" ];
+
+  installPhase = ''
+    mkdir -p $out/libexec/varscan
+    cp $src $out/libexec/varscan/varscan.jar
+    mkdir -p $out/bin
+    makeWrapper ${jre}/bin/java $out/bin/varscan --add-flags "-jar $out/libexec/varscan/varscan.jar"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Variant calling and somatic mutation/CNV detection for next-generation sequencing data";
+    # VarScan 2 is free for non-commercial use by academic,
+    # government, and non-profit/not-for-profit institutions. A
+    # commercial version of the software is available, and licensed
+    # through the Office of Technology Management at Washington
+    # University School of Medicine.
+    license = licenses.unfree;
+    homepage = "https://github.com/dkoboldt/varscan";
+    maintainers = with maintainers; [ jbedo ];
+    platforms = platforms.all;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/vcftools/default.nix b/nixpkgs/pkgs/applications/science/biology/vcftools/default.nix
new file mode 100755
index 000000000000..52957b58bc92
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/vcftools/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, zlib, autoreconfHook, pkgconfig, perl }:
+
+stdenv.mkDerivation rec {
+  pname = "vcftools";
+  version = "0.1.16";
+
+  src = fetchFromGitHub {
+    repo = pname;
+    owner = "vcftools";
+    rev = "v${version}";
+    sha256 = "0msb09d2cnm8rlpg8bsc1lhjddvp3kf3i9dsj1qs4qgsdlzhxkyx";
+  };
+
+  buildInputs = [ autoreconfHook pkgconfig zlib perl ];
+
+  meta = with stdenv.lib; {
+    description = "A set of tools written in Perl and C++ for working with VCF files, such as those generated by the 1000 Genomes Project";
+    license = licenses.lgpl3;
+    platforms = platforms.linux;
+    homepage = "https://vcftools.github.io/index.html";
+    maintainers = [ maintainers.rybern ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/biology/xenomapper/default.nix b/nixpkgs/pkgs/applications/science/biology/xenomapper/default.nix
new file mode 100644
index 000000000000..f5e538c70961
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/biology/xenomapper/default.nix
@@ -0,0 +1,23 @@
+{buildPythonPackage, lib, fetchFromGitHub, statistics}:
+
+buildPythonPackage rec {
+  pname = "xenomapper";
+  version = "1.0.2";
+
+  src = fetchFromGitHub {
+    owner = "genomematt";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0mnmfzlq5mhih6z8dq5bkx95vb8whjycz9mdlqwbmlqjb3gb3zhr";
+  };
+
+  propagatedBuildInputs = [ statistics ];
+
+  meta = with lib; {
+    homepage = "https://github.com/genomematt/xenomapper";
+    description = "A utility for post processing mapped reads that have been aligned to a primary genome and a secondary genome and binning reads into species specific, multimapping in each species, unmapped and unassigned bins";
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = [ maintainers.jbedo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/chemistry/avogadro/default.nix b/nixpkgs/pkgs/applications/science/chemistry/avogadro/default.nix
new file mode 100644
index 000000000000..96dea10333b3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/chemistry/avogadro/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, cmake, qt4, zlib, eigen, openbabel, pkgconfig, libGLU, libGL, libX11, doxygen }:
+
+stdenv.mkDerivation rec {
+  name = "avogadro-1.1.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/avogadro/${name}.tar.bz2";
+    sha256 = "050ag9p4vg7jg8hj1wqfv7lsm6ar2isxjw2vw85s49vsl7g7nvzy";
+  };
+
+  buildInputs = [ qt4 eigen zlib openbabel libGL libGLU libX11 ];
+
+  nativeBuildInputs = [ cmake pkgconfig doxygen ];
+
+  NIX_CFLAGS_COMPILE = "-include ${libGLU.dev}/include/GL/glu.h";
+
+  patches = [
+    (fetchurl {
+      url = "https://data.gpo.zugaina.org/fusion809/sci-chemistry/avogadro/files/avogadro-1.1.0-xlibs.patch";
+      sha256 = "1p113v19z3zwr9gxj2k599f8p97a8rwm93pa4amqvd0snn31mw0k";
+    })
+  ];
+
+  meta = {
+    description = "Molecule editor and visualizer";
+    maintainers = [ ];
+    platforms = stdenv.lib.platforms.mesaPlatforms;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/chemistry/gwyddion/codegen.patch b/nixpkgs/pkgs/applications/science/chemistry/gwyddion/codegen.patch
new file mode 100644
index 000000000000..eb306d99f8a3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/chemistry/gwyddion/codegen.patch
@@ -0,0 +1,22 @@
+--- gwyddion-2.55.orig/configure	2019-11-04 01:25:31.000000000 -0800
++++ gwyddion-2.55/configure	2020-03-20 18:49:43.860452655 -0700
+@@ -18560,7 +18560,7 @@
+ fi
+   if test "x$embed_pygtk" = xno; then
+     if test "x$PYGTK_CODEGENDIR" = 'x'; then
+-      PYGTK_CODEGENDIR=`$PKG_CONFIG --variable=codegendir pygtk-2.0`
++      PYGTK_CODEGENDIR=`$PKG_CONFIG --variable=codegendir pygobject-2.0`
+     fi
+   else
+     # Some silly OSes want to remove pygtk2.  We can build pygwy without
+--- gwyddion-2.55.orig/configure.ac	2019-11-04 01:25:16.000000000 -0800
++++ gwyddion-2.55/configure.ac	2020-03-20 18:52:55.042724547 -0700
+@@ -270,7 +270,7 @@
+                     [embed_pygtk=yes; pygwy_warn=" (embedded pygtk2)"])
+   if test "x$embed_pygtk" = xno; then
+     if test "x$PYGTK_CODEGENDIR" = 'x'; then
+-      PYGTK_CODEGENDIR=`$PKG_CONFIG --variable=codegendir pygtk-2.0`
++      PYGTK_CODEGENDIR=`$PKG_CONFIG --variable=codegendir pygobject-2.0`
+     fi
+   else
+     # Some silly OSes want to remove pygtk2.  We can build pygwy without
diff --git a/nixpkgs/pkgs/applications/science/chemistry/gwyddion/default.nix b/nixpkgs/pkgs/applications/science/chemistry/gwyddion/default.nix
new file mode 100644
index 000000000000..dec63910f709
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/chemistry/gwyddion/default.nix
@@ -0,0 +1,86 @@
+{ stdenv, fetchurl, gtk2, pkg-config, fftw, file,
+  pythonSupport ? false, pythonPackages ? null,
+  gnome2 ? null,
+  openexrSupport ? true, openexr ? null,
+  libzipSupport ? true, libzip ? null,
+  libxml2Support ? true, libxml2 ? null,
+  libwebpSupport ? true, libwebp ? null,
+  # libXmu is not used if libunique is.
+  libXmuSupport ? false, xorg ? null,
+  libxsltSupport ? true, libxslt ? null,
+  fitsSupport ? true, cfitsio ? null,
+  zlibSupport ? true, zlib ? null,
+  libuniqueSupport ? true, libunique ? null,
+  libpngSupport ? true, libpng ? null,
+  openglSupport ? !stdenv.isDarwin
+}:
+
+assert openexrSupport -> openexr != null;
+assert libzipSupport -> libzip != null;
+assert libxml2Support -> libxml2 != null;
+assert libwebpSupport -> libwebp != null;
+assert libXmuSupport -> xorg != null;
+assert libxsltSupport -> libxslt != null;
+assert fitsSupport -> cfitsio != null;
+assert zlibSupport -> zlib != null;
+assert libuniqueSupport -> libunique != null;
+assert libpngSupport -> libpng != null;
+assert openglSupport -> gnome2 != null;
+assert pythonSupport -> (pythonPackages != null && gnome2 != null);
+
+let
+    inherit (pythonPackages) pygtk pygobject2 python;
+
+in
+
+stdenv.mkDerivation rec {
+  pname = "gwyddion";
+   version = "2.55";
+  src = fetchurl {
+    url = "mirror://sourceforge/gwyddion/gwyddion-${version}.tar.xz";
+    sha256 = "0l00zszvginpriv12idc0y1x28qmicdmrwkqa007srkxvrdgxwdi";
+  };
+  
+  nativeBuildInputs = [ pkg-config file ];
+  
+  buildInputs = with stdenv.lib;
+    [ gtk2 fftw ] ++
+    optional openglSupport gnome2.gtkglext ++
+    optional openexrSupport openexr ++
+    optional libXmuSupport xorg.libXmu ++
+    optional fitsSupport cfitsio ++
+    optional libpngSupport libpng ++
+    optional libxsltSupport libxslt ++
+    optional libxml2Support libxml2 ++
+    optional libwebpSupport libwebp ++
+    optional zlibSupport zlib ++
+    optional libuniqueSupport libunique ++
+    optional libzipSupport libzip;
+
+  propagatedBuildInputs = with stdenv.lib;
+    optionals pythonSupport [ pygtk pygobject2 python gnome2.gtksourceview ];
+
+  # This patch corrects problems with python support, but should apply cleanly
+  # regardless of whether python support is enabled, and have no effects if
+  # it is disabled.
+  patches = [ ./codegen.patch ];
+  meta = {
+    homepage = "http://gwyddion.net/";
+
+    description = "Scanning probe microscopy data visualization and analysis";
+
+    longDescription = ''
+      A modular program for SPM (scanning probe microscopy) data
+      visualization and analysis. Primarily it is intended for the
+      analysis of height fields obtained by scanning probe microscopy
+      techniques (AFM, MFM, STM, SNOM/NSOM) and it supports a lot of
+      SPM data formats. However, it can be used for general height
+      field and (greyscale) image processing, for instance for the
+      analysis of profilometry data or thickness maps from imaging
+      spectrophotometry.
+    '';
+    license = stdenv.lib.licenses.gpl2;
+    platforms = with stdenv.lib.platforms; linux ++ darwin;
+    maintainers = [ stdenv.lib.maintainers.cge ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/chemistry/jmol/default.nix b/nixpkgs/pkgs/applications/science/chemistry/jmol/default.nix
new file mode 100644
index 000000000000..45f28c93b380
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/chemistry/jmol/default.nix
@@ -0,0 +1,53 @@
+{ stdenv
+, lib
+, fetchurl
+, unzip
+, makeDesktopItem
+, jre
+}:
+
+let
+  desktopItem = makeDesktopItem {
+    name = "jmol";
+    exec = "jmol";
+    desktopName = "JMol";
+    genericName = "Molecular Modeler";
+    mimeType = "chemical/x-pdb;chemical/x-mdl-molfile;chemical/x-mol2;chemical/seq-aa-fasta;chemical/seq-na-fasta;chemical/x-xyz;chemical/x-mdl-sdf;";
+    categories = "Graphics;Education;Science;Chemistry;";
+  };
+in
+stdenv.mkDerivation rec {
+  version = "14.31.0";
+  pname = "jmol";
+
+  src = let
+    baseVersion = "${lib.versions.major version}.${lib.versions.minor version}";
+  in fetchurl {
+    url = "mirror://sourceforge/jmol/Jmol/Version%20${baseVersion}/Jmol%20${version}/Jmol-${version}-binary.tar.gz";
+    sha256 = "14p823vxb8sfis1dgq8i9kj0rqf3cb8d0l8pspb8nz30fcvp1q7f";
+  };
+
+  patchPhase = ''
+    sed -i -e "4s:.*:command=${jre}/bin/java:" -e "10s:.*:jarpath=$out/share/jmol/Jmol.jar:" -e "11,21d" jmol
+  '';
+
+  installPhase = ''
+    mkdir -p "$out/share/jmol" "$out/bin"
+
+    ${unzip}/bin/unzip jsmol.zip -d "$out/share/"
+
+    cp *.jar jmol.sh "$out/share/jmol"
+    cp -r ${desktopItem}/share/applications $out/share
+    cp jmol $out/bin
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+     description = "A Java 3D viewer for chemical structures";
+     homepage = "https://sourceforge.net/projects/jmol";
+     license = licenses.lgpl2;
+     platforms = platforms.all;
+     maintainers = with maintainers; [ timokau mounium ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/chemistry/marvin/LicenseManager.desktop b/nixpkgs/pkgs/applications/science/chemistry/marvin/LicenseManager.desktop
new file mode 100755
index 000000000000..90b8ed7d20a5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/chemistry/marvin/LicenseManager.desktop
@@ -0,0 +1,9 @@
+#!/usr/bin/env xdg-open
+[Desktop Entry]
+Type=Application
+Name=ChemAxon License Manager
+Exec=@out@/bin/LicenseManager
+Icon=LicenseManager
+Categories=Education;Science;Chemistry;
+StartupWMClass=com-install4j-runtime-launcher-UnixLauncher
+Comment=License manager for ChemAxon software like MarvinSketch
diff --git a/nixpkgs/pkgs/applications/science/chemistry/marvin/MarvinSketch.desktop b/nixpkgs/pkgs/applications/science/chemistry/marvin/MarvinSketch.desktop
new file mode 100755
index 000000000000..d6e0343a78c3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/chemistry/marvin/MarvinSketch.desktop
@@ -0,0 +1,10 @@
+#!/usr/bin/env xdg-open
+[Desktop Entry]
+Type=Application
+Name=MarvinSketch
+Exec=@out@/bin/msketch %f
+Icon=MarvinSketch
+MimeType=text/xml;text/plain;chemical/x-cml;chemical/x-mdl-molfile;chemical/x-mdl-sdfile;chemical/x-mol2;chemical/x-pdb;chemical/x-xyz;chemical/x-mdl-rdfile;chemical/x-mdl-rxnfile;chemical/x-inchi;
+Categories=Education;Science;Chemistry;
+StartupWMClass=com-install4j-runtime-launcher-UnixLauncher
+Comment=Molecular modelling, analysis and structure drawing program
diff --git a/nixpkgs/pkgs/applications/science/chemistry/marvin/MarvinView.desktop b/nixpkgs/pkgs/applications/science/chemistry/marvin/MarvinView.desktop
new file mode 100755
index 000000000000..07a3c3c7cf33
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/chemistry/marvin/MarvinView.desktop
@@ -0,0 +1,10 @@
+#!/usr/bin/env xdg-open
+[Desktop Entry]
+Type=Application
+Name=MarvinView
+Exec=@out@/bin/mview %f
+Icon=MarvinView
+Comment=Molecule viewing program
+MimeType=text/xml;text/plain;chemical/x-cml;chemical/x-mdl-molfile;chemical/x-mdl-sdfile;chemical/x-mol2;chemical/x-pdb;chemical/x-xyz;chemical/x-mdl-rdfile;chemical/x-mdl-rxnfile;chemical/x-inchi;
+Categories=Education;Science;Chemistry;
+StartupWMClass=com-install4j-runtime-launcher-UnixLauncher
diff --git a/nixpkgs/pkgs/applications/science/chemistry/marvin/default.nix b/nixpkgs/pkgs/applications/science/chemistry/marvin/default.nix
new file mode 100644
index 000000000000..c090fbee377b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/chemistry/marvin/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchurl, dpkg, makeWrapper, coreutils, gawk, gnugrep, gnused, jre }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "marvin";
+  version = "20.13.0";
+
+  src = fetchurl {
+    name = "marvin-${version}.deb";
+    url = "http://dl.chemaxon.com/marvin/${version}/marvin_linux_${versions.majorMinor version}.deb";
+    sha256 = "1mbbl7z215l6z4acwdrmqnvlvc2hv4znz4dmng9iw7rrqns3jjlv";
+  };
+
+  nativeBuildInputs = [ dpkg makeWrapper ];
+
+  unpackPhase = ''
+    dpkg-deb -x $src opt
+  '';
+
+  installPhase = ''
+    wrapBin() {
+      makeWrapper $1 $out/bin/$(basename $1) \
+        --set INSTALL4J_JAVA_HOME "${jre}" \
+        --prefix PATH : ${makeBinPath [ coreutils gawk gnugrep gnused ]}
+    }
+    cp -r opt $out
+    mkdir -p $out/bin $out/share/pixmaps $out/share/applications
+    for name in LicenseManager MarvinSketch MarvinView; do
+      wrapBin $out/opt/chemaxon/marvinsuite/$name
+      ln -s {$out/opt/chemaxon/marvinsuite/.install4j,$out/share/pixmaps}/$name.png
+    done
+    for name in cxcalc cxtrain evaluate molconvert mview msketch; do
+      wrapBin $out/opt/chemaxon/marvinsuite/bin/$name
+    done
+    ${concatStrings (map (name: ''
+      substitute ${./. + "/${name}.desktop"} $out/share/applications/${name}.desktop --subst-var out
+    '') [ "LicenseManager" "MarvinSketch" "MarvinView" ])}
+  '';
+
+  meta = {
+    description = "A chemical modelling, analysis and structure drawing program";
+    homepage = "https://chemaxon.com/products/marvin";
+    maintainers = with maintainers; [ fusion809 ];
+    license = licenses.unfree;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/chemistry/molden/default.nix b/nixpkgs/pkgs/applications/science/chemistry/molden/default.nix
new file mode 100644
index 000000000000..0d7e81cd9dab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/chemistry/molden/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchurl, which, gfortran, libGLU, xorg } :
+
+stdenv.mkDerivation rec {
+  version = "6.3";
+  pname = "molden";
+
+  src = fetchurl {
+    url = "ftp://ftp.cmbi.ru.nl/pub/molgraph/molden/molden${version}.tar.gz";
+    sha256 = "02qi16pz2wffn3cc47dpjqhfafzwfmb79waw4nnhfyir8a4h3cq1";
+  };
+
+  nativeBuildInputs = [ which ];
+  buildInputs = [ gfortran libGLU xorg.libX11 xorg.libXmu ];
+
+  patches = [ ./dont_register_file_types.patch ];
+
+  postPatch = ''
+     substituteInPlace ./makefile --replace '-L/usr/X11R6/lib'  "" \
+                                  --replace '-I/usr/X11R6/include' "" \
+                                  --replace '/usr/local/' $out/ \
+                                  --replace 'sudo' "" \
+				                          --replace '-C surf depend' '-C surf'
+     sed -in '/^# DO NOT DELETE THIS LINE/q;' surf/Makefile
+  '';
+
+  preInstall = ''
+     mkdir -p $out/bin
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+     description = "Display and manipulate molecular structures";
+     homepage = "http://www.cmbi.ru.nl/molden/";
+     license = {
+       fullName = "Free for academic/non-profit use";
+       url = "http://www.cmbi.ru.nl/molden/CopyRight.html";
+       free = false;
+     };
+     platforms = platforms.linux;
+     maintainers = with maintainers; [ markuskowa ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/science/chemistry/molden/dont_register_file_types.patch b/nixpkgs/pkgs/applications/science/chemistry/molden/dont_register_file_types.patch
new file mode 100644
index 000000000000..75ce593ed29a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/chemistry/molden/dont_register_file_types.patch
@@ -0,0 +1,29 @@
+diff --git a/makefile b/makefile
+index 58a9e74..64615b6 100644
+--- a/makefile
++++ b/makefile
+@@ -32,8 +32,6 @@ os :=
+ ifeq ($(uname), Linux)
+  os := $(shell head -n 1 /etc/issue | cut -d" " -f1)
+  ifeq ($(os), Ubuntu)
+-    EXTEN = exten
+-    EXTENZ = exten2
+     LIBSG = -L/usr/X11R6/lib -lGLU -lGL -lX11 -lm
+  endif
+  ifeq ($(os), Debian)
+@@ -278,7 +276,7 @@ LIBSOGL = -lglut -lGLU -lGL -lXmu -lX11 -lm
+ #
+ #LIBSG = -L/usr/X11R6/lib -Wl,-framework -Wl,GLUT -Wl,-framework -Wl,OpenGL -Wl,-framework -Wl,Cocoa -lGLU -lGL -lXmu -lX11 -lm
+ 
+-all:	molden gmolden ambfor/ambfor ambfor/ambmd surf/surf $(EXTEN)
++all:	molden gmolden ambfor/ambfor ambfor/ambmd surf/surf
+ xwin.o:	xwin.c rots.h
+ xwingl.o:	xwin.c rots.h
+ 
+@@ -344,5 +342,5 @@ exten:
+ exten2:
+ 	./register_extension.sh /usr/local/bin
+ 
+-install:	$(EXTENZ)
++install:
+ 	sudo install -t /usr/local/bin -m 755 molden gmolden ambfor/ambfor ambfor/ambmd surf/surf
diff --git a/nixpkgs/pkgs/applications/science/chemistry/octopus/default.nix b/nixpkgs/pkgs/applications/science/chemistry/octopus/default.nix
new file mode 100644
index 000000000000..adb31d326509
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/chemistry/octopus/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchFromGitLab, symlinkJoin, gfortran, perl, procps
+, libyaml, libxc, fftw, blas, lapack, gsl, netcdf, arpack, autoreconfHook
+}:
+
+assert (!blas.isILP64) && (!lapack.isILP64);
+
+stdenv.mkDerivation rec {
+  pname = "octopus";
+  version = "9.2";
+
+  src = fetchFromGitLab {
+    owner = "octopus-code";
+    repo = "octopus";
+    rev = version;
+    sha256 = "083z51sjv70asr04rv53wb9gf4396nblq1zl22qw7jdr28hji4is";
+  };
+
+  nativeBuildInputs = [ perl procps autoreconfHook ];
+  buildInputs = [ libyaml gfortran libxc blas lapack gsl fftw netcdf arpack ];
+
+  configureFlags = [
+    "--with-yaml-prefix=${libyaml}"
+    "--with-blas=-lblas"
+    "--with-lapack=-llapack"
+    "--with-fftw-prefix=${fftw.dev}"
+    "--with-gsl-prefix=${gsl}"
+    "--with-libxc-prefix=${libxc}"
+  ];
+
+  doCheck = false;
+  checkTarget = "check-short";
+
+  postPatch = ''
+    patchShebangs ./
+  '';
+
+  postConfigure = ''
+    patchShebangs testsuite/oct-run_testsuite.sh
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Real-space time dependent density-functional theory code";
+    homepage = "https://octopus-code.org";
+    maintainers = with maintainers; [ markuskowa ];
+    license = licenses.gpl2;
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/chemistry/openmolcas/default.nix b/nixpkgs/pkgs/applications/science/chemistry/openmolcas/default.nix
new file mode 100644
index 000000000000..0d74e784d772
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/chemistry/openmolcas/default.nix
@@ -0,0 +1,85 @@
+{ stdenv, fetchFromGitLab, cmake, gfortran, perl
+, openblas, blas, lapack, hdf5-cpp, python3, texlive
+, armadillo, openmpi, globalarrays, openssh
+, makeWrapper, fetchpatch
+} :
+
+assert blas.implementation == "openblas" && lapack.implementation == "openblas";
+
+let
+  version = "19.11";
+  gitLabRev = "v${version}";
+
+  python = python3.withPackages (ps : with ps; [ six pyparsing ]);
+
+in stdenv.mkDerivation {
+  pname = "openmolcas";
+  inherit version;
+
+  src = fetchFromGitLab {
+    owner = "Molcas";
+    repo = "OpenMolcas";
+    rev = gitLabRev;
+    sha256 = "1wwqhkyyi7pw5x1ghnp83ir17zl5jsj7phhqxapybyi3bmg0i00q";
+  };
+
+  patches = [ (fetchpatch {
+    name = "Fix-MPI-INT-size"; # upstream patch, fixes a Fortran compiler error
+    url = "https://gitlab.com/Molcas/OpenMolcas/commit/860e3350523f05ab18e49a428febac8a4297b6e4.patch";
+    sha256 = "0h96h5ikbi5l6ky41nkxmxfhjiykkiifq7vc2s3fdy1r1siv09sb";
+  }) (fetchpatch {
+    name = "fix-cisandbox"; # upstream patch, fixes a Fortran compiler error
+    url = "https://gitlab.com/Molcas/OpenMolcas/commit/d871590c8ce4689cd94cdbbc618954c65589393d.patch";
+    sha256 = "0dgz1w2rkglnis76spai3m51qa72j4bz6ppnk5zmzrr6ql7gwpgg";
+  })];
+
+  nativeBuildInputs = [ perl cmake texlive.combined.scheme-minimal makeWrapper ];
+  buildInputs = [
+    gfortran
+    openblas
+    hdf5-cpp
+    python
+    armadillo
+    openmpi
+    globalarrays
+    openssh
+  ];
+
+  enableParallelBuilding = true;
+
+  cmakeFlags = [
+    "-DOPENMP=ON"
+    "-DGA=ON"
+    "-DMPI=ON"
+    "-DLINALG=OpenBLAS"
+    "-DTOOLS=ON"
+    "-DHDF5=ON"
+    "-DFDE=ON"
+    "-DOPENBLASROOT=${openblas}"
+  ];
+
+  GAROOT=globalarrays;
+
+  postConfigure = ''
+    # The Makefile will install pymolcas during the build grrr.
+    mkdir -p $out/bin
+    export PATH=$PATH:$out/bin
+  '';
+
+  postFixup = ''
+    # Wrong store path in shebang (no Python pkgs), force re-patching
+    sed -i "1s:/.*:/usr/bin/env python:" $out/bin/pymolcas
+    patchShebangs $out/bin
+
+    wrapProgram $out/bin/pymolcas --set MOLCAS $out
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Advanced quantum chemistry software package";
+    homepage = "https://gitlab.com/Molcas/OpenMolcas";
+    maintainers = [ maintainers.markuskowa ];
+    license = licenses.lgpl21;
+    platforms = platforms.linux;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/science/chemistry/pymol/default.nix b/nixpkgs/pkgs/applications/science/chemistry/pymol/default.nix
new file mode 100644
index 000000000000..474986901225
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/chemistry/pymol/default.nix
@@ -0,0 +1,57 @@
+{ lib, stdenv, fetchurl, fetchFromGitHub, makeDesktopItem
+, python3, python3Packages
+, glew, glm, freeglut, libpng, libxml2, tk, freetype, msgpack }:
+
+
+let
+  pname = "pymol";
+  description = "A Python-enhanced molecular graphics tool";
+
+  desktopItem = makeDesktopItem {
+    name = pname;
+    exec = pname;
+    desktopName = "PyMol Molecular Graphics System";
+    genericName = "Molecular Modeler";
+    comment = description;
+    icon = pname;
+    mimeType = "chemical/x-pdb;chemical/x-mdl-molfile;chemical/x-mol2;chemical/seq-aa-fasta;chemical/seq-na-fasta;chemical/x-xyz;chemical/x-mdl-sdf;";
+    categories = "Graphics;Education;Science;Chemistry;";
+  };
+in
+python3Packages.buildPythonApplication rec {
+  inherit pname;
+  version = "2.3.0";
+  src = fetchFromGitHub {
+    owner = "schrodinger";
+    repo = "pymol-open-source";
+    rev = "v${version}";
+    sha256 = "175cqi6gfmvv49i3ws19254m7ljs53fy6y82fm1ywshq2h2c93jh";
+  };
+
+  buildInputs = [ python3Packages.numpy glew glm freeglut libpng libxml2 tk freetype msgpack ];
+  NIX_CFLAGS_COMPILE = "-I ${libxml2.dev}/include/libxml2";
+  hardeningDisable = [ "format" ];
+
+  setupPyBuildFlags = [ "--glut" ];
+
+  installPhase = ''
+    python setup.py install --home="$out"
+    runHook postInstall
+  '';
+
+  postInstall = with python3Packages; ''
+    wrapProgram $out/bin/pymol \
+      --prefix PYTHONPATH : ${lib.makeSearchPathOutput "lib" python3.sitePackages [ Pmw tkinter ]}
+
+    mkdir -p "$out/share/icons/"
+    ln -s ../../lib/python/pymol/pymol_path/data/pymol/icons/icon2.svg "$out/share/icons/pymol.svg"
+    cp -r "${desktopItem}/share/applications/" "$out/share/"
+  '';
+
+  meta = with lib; {
+    description = description;
+    homepage = "https://www.pymol.org/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ samlich ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/chemistry/quantum-espresso/default.nix b/nixpkgs/pkgs/applications/science/chemistry/quantum-espresso/default.nix
new file mode 100644
index 000000000000..2443e6b23aba
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/chemistry/quantum-espresso/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl
+, gfortran, fftw, blas, lapack
+, mpi ? null
+}:
+
+stdenv.mkDerivation rec {
+  version = "6.5";
+  pname = "quantum-espresso";
+
+  src = fetchurl {
+    url = "https://gitlab.com/QEF/q-e/-/archive/qe-${version}/q-e-qe-${version}.tar.gz";
+    sha256 = "00nnsq1vq579xsmkvwrgs6bdqdcbdlsmcp4yfynnvs40ca52m2r5";
+  };
+
+  passthru = {
+    inherit mpi;
+  };
+
+  preConfigure = ''
+    patchShebangs configure
+  '';
+
+  buildInputs = [ fftw blas lapack gfortran ]
+    ++ (stdenv.lib.optionals (mpi != null) [ mpi ]);
+
+configureFlags = if (mpi != null) then [ "LD=${mpi}/bin/mpif90" ] else [ "LD=${gfortran}/bin/gfortran" ];
+
+  makeFlags = [ "all" ];
+
+  meta = with stdenv.lib; {
+    description = "Electronic-structure calculations and materials modeling at the nanoscale";
+    longDescription = ''
+        Quantum ESPRESSO is an integrated suite of Open-Source computer codes for
+        electronic-structure calculations and materials modeling at the
+        nanoscale. It is based on density-functional theory, plane waves, and
+        pseudopotentials.
+      '';
+    homepage = "https://www.quantum-espresso.org/";
+    license = licenses.gpl2;
+    platforms = [ "x86_64-linux" ];
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/chemistry/siesta/default.nix b/nixpkgs/pkgs/applications/science/chemistry/siesta/default.nix
new file mode 100644
index 000000000000..c053c0a09cdf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/chemistry/siesta/default.nix
@@ -0,0 +1,69 @@
+{ stdenv, fetchurl
+, gfortran, blas, lapack
+, mpi ? null, scalapack
+}:
+
+stdenv.mkDerivation {
+  version = "4.1-b3";
+  pname = "siesta";
+
+  src = fetchurl {
+    url = "https://launchpad.net/siesta/4.1/4.1-b3/+download/siesta-4.1-b3.tar.gz";
+    sha256 = "1450jsxj5aifa0b5fcg7mxxq242fvqnp4zxpgzgbkdp99vrp06gm";
+  };
+
+  passthru = {
+    inherit mpi;
+  };
+
+  buildInputs = [ blas lapack gfortran ]
+    ++ (stdenv.lib.optionals (mpi != null) [ mpi scalapack ]);
+
+  enableParallelBuilding = true;
+
+  # Must do manualy becuase siesta does not do the regular
+  # ./configure; make; make install
+  configurePhase = ''
+    cd Obj
+    sh ../Src/obj_setup.sh
+    cp gfortran.make arch.make
+  '';
+
+  preBuild = if (mpi != null) then ''
+    makeFlagsArray=(
+        CC="mpicc" FC="mpifort"
+        FPPFLAGS="-DMPI" MPI_INTERFACE="libmpi_f90.a" MPI_INCLUDE="."
+        COMP_LIBS="" LIBS="-lblas -llapack -lscalapack"
+    );
+  '' else ''
+    makeFlagsArray=(
+      COMP_LIBS="" LIBS="-lblas -llapack"
+    );
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -a siesta $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A first-principles materials simulation code using DFT";
+    longDescription = ''
+         SIESTA is both a method and its computer program
+         implementation, to perform efficient electronic structure
+         calculations and ab initio molecular dynamics simulations of
+         molecules and solids. SIESTA's efficiency stems from the use
+         of strictly localized basis sets and from the implementation
+         of linear-scaling algorithms which can be applied to suitable
+         systems. A very important feature of the code is that its
+         accuracy and cost can be tuned in a wide range, from quick
+         exploratory calculations to highly accurate simulations
+         matching the quality of other approaches, such as plane-wave
+         and all-electron methods.
+      '';
+    homepage = "https://www.quantum-espresso.org/";
+    license = licenses.gpl2;
+    platforms = [ "x86_64-linux" ];
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/adms/default.nix b/nixpkgs/pkgs/applications/science/electronics/adms/default.nix
new file mode 100644
index 000000000000..f55dd2f0528e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/adms/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, flex, bison, gperf,
+  libxml2, perl, perlPackages, gd }:
+
+stdenv.mkDerivation rec {
+  version = "2.3.6";
+  pname = "adms";
+
+  src = fetchFromGitHub {
+    owner = "Qucs";
+    repo = "adms";
+    rev = "release-${version}";
+    sha256 = "1pcwq5khzdq4x33lid9hq967gv78dr5i4f2sk8m8rwkfqb9vdzrg";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ flex bison gperf libxml2 perl gd perlPackages.XMLLibXML ];
+  configureFlags = [ "--enable-maintainer-mode" ];
+
+  meta = {
+    description = "automatic device model synthesizer";
+    homepage = "https://github.com/Qucs/adms";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = with stdenv.lib.maintainers; [disassembler];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/alliance/default.nix b/nixpkgs/pkgs/applications/science/electronics/alliance/default.nix
new file mode 100644
index 000000000000..861f6cea0b4b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/alliance/default.nix
@@ -0,0 +1,74 @@
+{ stdenv, fetchurl
+, xorgproto, motif, libX11, libXt, libXpm, bison
+, flex, automake, autoconf, libtool, runtimeShell
+}:
+
+stdenv.mkDerivation rec {
+  pname = "alliance";
+  version = "5.1.1";
+
+  src = fetchurl {
+    url = "http://www-asim.lip6.fr/pub/alliance/distribution/5.0/${pname}-${version}.tar.bz2";
+    sha256 = "046c9qwl1vbww0ljm4xyxf5jpz9nq62b2q0wdz9xjimgh4c207w1";
+  };
+
+
+  nativeBuildInputs = [ libtool automake autoconf flex ];
+  buildInputs = [ xorgproto motif libX11 libXt libXpm bison ];
+
+  sourceRoot = "alliance/src/";
+
+  configureFlags = [
+    "--prefix=$(out)"
+  ];
+
+  preConfigure = ''
+    mkdir -p $out/etc
+
+    #texlive for docs seems extreme
+    mkdir -p $out/share/alliance
+    mv ./documentation $out/share/alliance
+    substituteInPlace autostuff \
+      --replace "$newdirs documentation" "$newdirs" \
+      --replace documentation Solaris
+
+    substituteInPlace sea/src/DEF_grammar_lex.l \
+      --replace "ifndef FLEX_BETA" "if (YY_FLEX_MAJOR_VERSION <= 2) && (YY_FLEX_MINOR_VERSION < 6)"
+    ./autostuff
+  '';
+
+  allianceInstaller = ''
+    #!${runtimeShell}
+    cp -v -r -n --no-preserve=mode  $out/etc/* /etc/ > /etc/alliance-install.log
+  '';
+
+  allianceUnInstaller = ''
+    #!${runtimeShell}
+    awk '{print \$3}' /etc/alliance-install.log | xargs rm
+    awk '{print \$3}' /etc/alliance-install.log | xargs rmdir
+    rm /etc/alliance-install.log
+  '';
+
+  postInstall = ''
+    sed -i "s|ALLIANCE_TOP|$out|" distrib/*.desktop
+    mkdir -p $out/share/applications
+    cp -p distrib/*.desktop $out/share/applications/
+    mkdir -p $out/icons/hicolor/48x48/apps/
+    cp -p distrib/*.png $out/icons/hicolor/48x48/apps/
+
+    echo "${allianceInstaller}" > $out/bin/alliance-install
+    chmod +x $out/bin/alliance-install
+
+    echo "${allianceUnInstaller}" > $out/bin/alliance-uninstall
+    chmod +x $out/bin/alliance-uninstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Complete set of free CAD tools and portable libraries for VLSI design";
+    homepage = "http://www-asim.lip6.fr/recherche/alliance/";
+    license = with licenses; gpl2Plus;
+    maintainers = with maintainers; [ ];
+    platforms = with platforms; linux;
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/archimedes/default.nix b/nixpkgs/pkgs/applications/science/electronics/archimedes/default.nix
new file mode 100644
index 000000000000..1377231c152b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/archimedes/default.nix
@@ -0,0 +1,17 @@
+{stdenv, fetchurl}:
+
+stdenv.mkDerivation rec {
+  name = "archimedes-2.0.1";
+
+  src = fetchurl {
+    url = "mirror://gnu/archimedes/${name}.tar.gz";
+    sha256 = "0jfpnd3pns5wxcxbiw49v5sgpmm5b4v8s4q1a5292hxxk2hzmb3z";
+  };
+
+  meta = {
+    description = "GNU package for semiconductor device simulations";
+    homepage = "https://www.gnu.org/software/archimedes";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/bitscope/common.nix b/nixpkgs/pkgs/applications/science/electronics/bitscope/common.nix
new file mode 100644
index 000000000000..acbdeb8cfaa2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/bitscope/common.nix
@@ -0,0 +1,64 @@
+{ atk
+, buildFHSUserEnv
+, cairo
+, dpkg
+, gdk-pixbuf
+, glib
+, gtk2-x11
+, makeWrapper
+, pango
+, stdenv
+, xorg
+}:
+
+{ src, toolName, version, ... } @ attrs:
+let
+  wrapBinary = libPaths: binaryName: ''
+    wrapProgram "$out/bin/${binaryName}" \
+      --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath libPaths}"
+  '';
+  pkg = stdenv.mkDerivation (rec {
+    inherit (attrs) version src;
+
+    name = "${toolName}-${version}";
+
+    meta = with stdenv.lib; {
+      homepage = "http://bitscope.com/software/";
+      license = licenses.unfree;
+      platforms = [ "x86_64-linux" ];
+      maintainers = with maintainers; [
+        vidbina
+      ];
+    } // (attrs.meta or {});
+
+    buildInputs = [
+      dpkg
+      makeWrapper
+    ];
+
+    libs = attrs.libs or [
+      atk
+      cairo
+      gdk-pixbuf
+      glib
+      gtk2-x11
+      pango
+      xorg.libX11
+    ];
+
+    dontBuild = true;
+
+    unpackPhase = attrs.unpackPhase or ''
+      dpkg-deb -x ${attrs.src} ./
+    '';
+
+    installPhase = attrs.installPhase or ''
+      mkdir -p "$out/bin"
+      cp -a usr/* "$out/"
+      ${(wrapBinary libs) attrs.toolName}
+    '';
+  });
+in buildFHSUserEnv {
+  name = "${attrs.toolName}-${attrs.version}";
+  runScript = "${pkg.outPath}/bin/${attrs.toolName}";
+} // { inherit (pkg) meta name; }
diff --git a/nixpkgs/pkgs/applications/science/electronics/bitscope/packages.nix b/nixpkgs/pkgs/applications/science/electronics/bitscope/packages.nix
new file mode 100644
index 000000000000..11e1ed524ed2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/bitscope/packages.nix
@@ -0,0 +1,146 @@
+{ callPackage
+, fetchurl
+}:
+
+let
+  mkBitscope = callPackage (import ./common.nix) { };
+in {
+  chart = let
+    toolName = "bitscope-chart";
+    version = "2.0.FK22M";
+  in mkBitscope {
+    inherit toolName version;
+
+    meta = {
+      description = "Multi-channel waveform data acquisition and chart recording application";
+      homepage = "http://bitscope.com/software/chart/";
+    };
+
+    src = fetchurl {
+      url = "http://bitscope.com/download/files/${toolName}_${version}_amd64.deb";
+      sha256 = "08mc82pjamyyyhh15sagsv0sc7yx5v5n54bg60fpj7v41wdwrzxw";
+    };
+  };
+
+  console = let
+    toolName = "bitscope-console";
+    version = "1.0.FK29A";
+  in mkBitscope {
+    # NOTE: this is meant as a demo by BitScope
+    inherit toolName version;
+
+    meta = {
+      description = "Demonstrative communications program designed to make it easy to talk to any model BitScope";
+    };
+
+    src = fetchurl {
+      url = "http://bitscope.com/download/files/${toolName}_${version}_amd64.deb";
+      sha256 = "00b4gxwz7w6pmfrcz14326b24kl44hp0gzzqcqxwi5vws3f0y49d";
+    };
+  };
+
+  display = let
+    toolName = "bitscope-display";
+    version = "1.0.EC17A";
+  in mkBitscope {
+    inherit toolName version;
+
+    meta = {
+      description = "Display diagnostic application for BitScope";
+      homepage = "http://bitscope.com/software/display/";
+    };
+
+    src = fetchurl {
+      url = "http://bitscope.com/download/files/${toolName}_${version}_amd64.deb";
+      sha256 = "05xr5mnka1v3ibcasg74kmj6nlv1nmn3lca1wv77whkq85cmz0s1";
+    };
+  };
+
+  dso = let
+    toolName = "bitscope-dso";
+    version = "2.8.FE22H";
+  in mkBitscope {
+    inherit toolName version;
+
+    meta = {
+      description = "Test and measurement software for BitScope";
+      homepage = "http://bitscope.com/software/dso/";
+    };
+
+    src = fetchurl {
+      url = "http://bitscope.com/download/files/${toolName}_${version}_amd64.deb";
+      sha256 = "0fc6crfkprj78dxxhvhbn1dx1db5chm0cpwlqpqv8sz6whp12mcj";
+    };
+  };
+
+  logic = let
+    toolName = "bitscope-logic";
+    version = "1.2.FC20C";
+  in mkBitscope {
+    inherit toolName version;
+
+    meta = {
+      description = "Mixed signal logic timing and serial protocol analysis software for BitScope";
+      homepage = "http://bitscope.com/software/logic/";
+    };
+
+    src = fetchurl {
+      url = "http://bitscope.com/download/files/${toolName}_${version}_amd64.deb";
+      sha256 = "0lkb7z9gfkiyxdwh4dq1zxfls8gzdw0na1vrrbgnxfg3klv4xns3";
+    };
+  };
+
+  meter = let
+    toolName = "bitscope-meter";
+    version = "2.0.FK22G";
+  in mkBitscope {
+    inherit toolName version;
+
+    meta = {
+      description = "Automated oscilloscope, voltmeter and frequency meter for BitScope";
+      homepage = "http://bitscope.com/software/logic/";
+    };
+
+    src = fetchurl {
+      url = "http://bitscope.com/download/files/${toolName}_${version}_amd64.deb";
+      sha256 = "0nirbci6ymhk4h4bck2s4wbsl5r9yndk2jvvv72zwkg21248mnbp";
+    };
+  };
+
+  proto = let
+    toolName = "bitscope-proto";
+    version = "0.9.FG13B";
+  in mkBitscope {
+    inherit toolName version;
+    # NOTE: this is meant as a demo by BitScope
+    # NOTE: clicking on logo produces error
+    # TApplication.HandleException Executable not found: "http://bitscope.com/blog/DK/?p=DK15A"
+
+    meta = {
+      description = "Demonstrative prototype oscilloscope built using the BitScope Library";
+      homepage = "http://bitscope.com/blog/DK/?p=DK15A";
+    };
+
+    src = fetchurl {
+      url = "http://bitscope.com/download/files/${toolName}_${version}_amd64.deb";
+      sha256 = "1ybjfbh3narn29ll4nci4b7rnxy0hj3wdfm4v8c6pjr8pfvv9spy";
+    };
+  };
+
+  server = let
+    toolName = "bitscope-server";
+    version = "1.0.FK26A";
+  in mkBitscope {
+    inherit toolName version;
+
+    meta = {
+      description = "Remote access server solution for any BitScope";
+      homepage = "http://bitscope.com/software/server/";
+    };
+
+    src = fetchurl {
+      url = "http://bitscope.com/download/files/${toolName}_${version}_amd64.deb";
+      sha256 = "1079n7msq6ks0n4aasx40rd4q99w8j9hcsaci71nd2im2jvjpw9a";
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/caneda/default.nix b/nixpkgs/pkgs/applications/science/electronics/caneda/default.nix
new file mode 100644
index 000000000000..c90ceac6788f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/caneda/default.nix
@@ -0,0 +1,26 @@
+{ mkDerivation, stdenv, fetchFromGitHub, cmake, qtbase, qttools, qtsvg, qwt }:
+
+mkDerivation rec {
+  pname = "caneda";
+  version = "0.3.1";
+
+  src = fetchFromGitHub {
+    owner = "Caneda";
+    repo = "Caneda";
+    rev = version;
+    sha256 = "0hx8qid50j9xvg2kpbpqmbdyakgyjn6m373m1cvhp70v2gp1v8l2";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ qtbase qttools qtsvg qwt ];
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Open source EDA software focused on easy of use and portability";
+    homepage = "http://caneda.org";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/caneda/gcc6.patch b/nixpkgs/pkgs/applications/science/electronics/caneda/gcc6.patch
new file mode 100644
index 000000000000..04c8f4502b2d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/caneda/gcc6.patch
@@ -0,0 +1,13 @@
+diff --git c/src/cgraphicsscene.cpp i/src/cgraphicsscene.cpp
+index ac2929a..c399706 100644
+--- c/src/cgraphicsscene.cpp
++++ i/src/cgraphicsscene.cpp
+@@ -1436,7 +1436,7 @@ namespace Caneda
+             QPointF newPos = m_currentWiringWire->mapFromScene(pos);
+             QPointF refPos = m_currentWiringWire->port1()->pos();
+ 
+-            if( abs(refPos.x()-newPos.x()) > abs(refPos.y()-newPos.y()) ) {
++            if( (refPos.x()-newPos.x()) > (refPos.y()-newPos.y()) ) {
+                 m_currentWiringWire->movePort2(QPointF(newPos.x(), refPos.y()));
+             }
+             else {
diff --git a/nixpkgs/pkgs/applications/science/electronics/dsview/default.nix b/nixpkgs/pkgs/applications/science/electronics/dsview/default.nix
new file mode 100644
index 000000000000..4d3acb331d5d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/dsview/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchFromGitHub, pkgconfig, cmake,
+libzip, boost, fftw, qtbase,
+libusb1, wrapQtAppsHook, libsigrok4dsl, libsigrokdecode4dsl
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dsview";
+
+  version = "0.99";
+
+  src = fetchFromGitHub {
+      owner = "DreamSourceLab";
+      repo = "DSView";
+      rev = version;
+      sha256 = "189i3baqgn8k3aypalayss0g489xi0an9hmvyggvxmgg1cvcwka2";
+  };
+
+  postUnpack = ''
+    export sourceRoot=$sourceRoot/DSView
+  '';
+
+  patches = [
+    # Fix absolute install paths
+    ./install.patch
+  ];
+
+  nativeBuildInputs = [ cmake pkgconfig wrapQtAppsHook ];
+
+  buildInputs = [
+   boost fftw qtbase libusb1 libzip libsigrokdecode4dsl libsigrok4dsl
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "A GUI program for supporting various instruments from DreamSourceLab, including logic analyzer, oscilloscope, etc";
+    homepage = "https://www.dreamsourcelab.com/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bachp ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/dsview/install.patch b/nixpkgs/pkgs/applications/science/electronics/dsview/install.patch
new file mode 100644
index 000000000000..e30a28d80fa3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/dsview/install.patch
@@ -0,0 +1,15 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c1c33e1..208a184 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -403,8 +403,8 @@ install(DIRECTORY res DESTINATION share/${PROJECT_NAME})
+ install(FILES icons/logo.png DESTINATION share/${PROJECT_NAME} RENAME logo.png)
+ install(FILES ../NEWS DESTINATION share/${PROJECT_NAME} RENAME NEWS)
+ install(FILES ../ug.pdf DESTINATION share/${PROJECT_NAME} RENAME ug.pdf)
+-install(FILES DreamSourceLab.rules DESTINATION /etc/udev/rules.d/)
+-install(FILES DSView.desktop DESTINATION /usr/share/applications/)
++install(FILES DreamSourceLab.rules DESTINATION etc/udev/rules.d/)
++install(FILES DSView.desktop DESTINATION share/applications/)
+ 
+ #===============================================================================
+ #= Packaging (handled by CPack)
diff --git a/nixpkgs/pkgs/applications/science/electronics/dsview/libsigrok4dsl.nix b/nixpkgs/pkgs/applications/science/electronics/dsview/libsigrok4dsl.nix
new file mode 100644
index 000000000000..7915cb0ba4ae
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/dsview/libsigrok4dsl.nix
@@ -0,0 +1,28 @@
+{ stdenv, pkgconfig, autoreconfHook,
+glib, libzip, libserialport, check, libusb1, libftdi,
+systemd, alsaLib, dsview
+}:
+
+stdenv.mkDerivation {
+  inherit (dsview) version src;
+
+  pname = "libsigrok4dsl";
+
+  postUnpack = ''
+    export sourceRoot=$sourceRoot/libsigrok4DSL
+  '';
+
+  nativeBuildInputs = [ pkgconfig autoreconfHook ];
+
+  buildInputs = [
+    glib libzip libserialport libusb1 libftdi systemd check alsaLib
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A fork of the sigrok library for usage with DSView";
+    homepage = "https://www.dreamsourcelab.com/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bachp ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/dsview/libsigrokdecode4dsl.nix b/nixpkgs/pkgs/applications/science/electronics/dsview/libsigrokdecode4dsl.nix
new file mode 100644
index 000000000000..72b2fa1b6854
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/dsview/libsigrokdecode4dsl.nix
@@ -0,0 +1,27 @@
+{ stdenv, pkgconfig, autoreconfHook,
+glib, check, python3, dsview
+}:
+
+stdenv.mkDerivation {
+  inherit (dsview) version src;
+
+  pname = "libsigrokdecode4dsl";
+
+  postUnpack = ''
+    export sourceRoot=$sourceRoot/libsigrokdecode4DSL
+  '';
+
+  nativeBuildInputs = [ pkgconfig autoreconfHook ];
+
+  buildInputs = [
+    python3 glib check
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A fork of the sigrokdecode library for usage with DSView";
+    homepage = "https://www.dreamsourcelab.com/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bachp ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/eagle/eagle.nix b/nixpkgs/pkgs/applications/science/electronics/eagle/eagle.nix
new file mode 100644
index 000000000000..4cfad20e695f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/eagle/eagle.nix
@@ -0,0 +1,80 @@
+{ stdenv, mkDerivation, fetchurl, makeDesktopItem
+, libXrender, libXrandr, libXcursor, libX11, libXext, libXi, libxcb
+ , libGL, glib, nss, nspr, expat, alsaLib
+, qtbase, qtdeclarative, qtsvg, qtlocation, qtwebchannel, qtwebengine
+}:
+
+let
+  libPath = stdenv.lib.makeLibraryPath
+    [ libXrender libXrandr libXcursor libX11 libXext libXi libxcb
+      libGL glib nss nspr expat alsaLib
+      qtbase qtdeclarative qtsvg qtlocation qtwebchannel qtwebengine
+    ];
+  in
+  mkDerivation rec {
+    pname = "eagle";
+    version = "9.6.2";
+
+    src = fetchurl {
+      url = "https://eagle-updates.circuits.io/downloads/${builtins.replaceStrings ["."] ["_"] version}/Autodesk_EAGLE_${version}_English_Linux_64bit.tar.gz";
+      sha256 = "18syygnskl286kn8aqfzzdsyzq59d2w19y1h1ynyxsnrvkyv71h0";
+    };
+
+    desktopItem = makeDesktopItem {
+      name = "eagle";
+      exec = "eagle";
+      icon = "eagle";
+      comment = "Schematic capture and PCB layout";
+      desktopName = "Eagle";
+      genericName = "Schematic editor";
+      categories = "Application;Development;";
+    };
+
+    buildInputs =
+      [ libXrender libXrandr libXcursor libX11 libXext libXi libxcb
+        libGL glib nss nspr expat alsaLib
+        qtbase qtdeclarative qtsvg qtlocation qtwebchannel qtwebengine
+      ];
+
+    installPhase = ''
+      # Extract eagle tarball
+      mkdir "$out"
+      tar -xzf "$src" -C "$out"
+
+      # Install manpage
+      mkdir -p "$out"/share/man/man1
+      ln -s "$out"/eagle-${version}/doc/eagle.1 "$out"/share/man/man1/eagle.1
+
+      patchelf \
+        --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        --set-rpath "${libPath}:$out/eagle-${version}/lib:${stdenv.cc.cc.lib}/lib" \
+        "$out"/eagle-${version}/eagle
+
+      mkdir -p "$out"/bin
+      ln -s "$out"/eagle-${version}/eagle "$out"/bin/eagle
+
+      # Remove bundled libraries that are available in nixpkgs
+      # TODO: There still may be unused bundled libraries
+      rm "$out"/eagle-${version}/lib/libQt5*.so.5
+      rm "$out"/eagle-${version}/lib/{libxcb-*.so.*,libX*.so.*,libxshmfence.so.1}
+      rm "$out"/eagle-${version}/lib/{libEGL.so.1,libglapi.so.0,libgbm.so.1}
+
+      # No longer needed (we don't use the bundled Qt libraries)
+      rm -r "$out"/eagle-${version}/libexec
+      rm -r "$out"/eagle-${version}/plugins
+
+      # Make desktop item
+      mkdir -p "$out"/share/applications
+      cp "$desktopItem"/share/applications/* "$out"/share/applications/
+      mkdir -p "$out"/share/icons
+      ln -s "$out/eagle-${version}/bin/eagle-logo.png" "$out"/share/icons/eagle.png
+    '';
+
+    meta = with stdenv.lib; {
+      description = "Schematic editor and PCB layout tool from Autodesk (formerly CadSoft)";
+      homepage = "https://www.autodesk.com/products/eagle/overview";
+      license = licenses.unfree;
+      platforms = [ "x86_64-linux" ];
+      maintainers = [ maintainers.rittelle ];
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/science/electronics/eagle/eagle7.nix b/nixpkgs/pkgs/applications/science/electronics/eagle/eagle7.nix
new file mode 100644
index 000000000000..af0fb675880e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/eagle/eagle7.nix
@@ -0,0 +1,97 @@
+{ stdenv, fetchurl, makeDesktopItem, patchelf, zlib, freetype, fontconfig
+, openssl, libXrender, libXrandr, libXcursor, libX11, libXext, libXi
+, libxcb, cups, xkeyboardconfig, runtimeShell
+}:
+
+let
+
+  libPath = stdenv.lib.makeLibraryPath
+    [ zlib freetype fontconfig openssl libXrender libXrandr libXcursor libX11
+      libXext libXi libxcb cups
+    ];
+
+in
+
+stdenv.mkDerivation rec {
+  pname = "eagle";
+  version = "7.7.0";
+
+  src =
+    if stdenv.hostPlatform.system == "i686-linux" then
+      fetchurl {
+        url = "ftp://ftp.cadsoft.de/eagle/program/7.7/eagle-lin32-${version}.run";
+        sha256 = "16fa66p77xigc7zvzfm7737mllrcs6nrgk2p7wvkjw3p9lvbz7z1";
+      }
+    else if stdenv.hostPlatform.system == "x86_64-linux" then
+      fetchurl {
+        url = "ftp://ftp.cadsoft.de/eagle/program/7.7/eagle-lin64-${version}.run";
+        sha256 = "18dcn6wqph1sqh0ah98qzfi05wip8a8ifbkaq79iskbrsi8iqnrg";
+      }
+    else
+      throw "Unsupported system: ${stdenv.hostPlatform.system}";
+
+  desktopItem = makeDesktopItem {
+    name = "eagle";
+    exec = "eagle";
+    icon = "eagle";
+    comment = "Schematic capture and PCB layout";
+    desktopName = "Eagle";
+    genericName = "Schematic editor";
+    categories = "Application;Development;";
+  };
+
+  buildInputs =
+    [ patchelf zlib freetype fontconfig openssl libXrender libXrandr libXcursor
+      libX11 libXext libXi
+    ];
+
+  phases = [ "installPhase" ];
+
+  # NOTES:
+  # Eagle for Linux comes as a self-extracting shell script with embedded
+  # tarball. The tarball data (.tar.bz2) starts after a __DATA__ marker.
+  #
+  # Eagle apparently doesn't like binary patching. This is what happens:
+  #   $ ./result/eagle-6.4.0/bin/eagle
+  #   argv[0] (/home/bfo/nixpkgs/result/eagle-6.4.0/bin/eagle) is not the currently executed program version!
+  installPhase = ''
+    # Extract eagle tarball
+    mkdir "$out"
+    sed '1,/^__DATA__$/d' "$src" | tar -xjf - -C "$out"
+
+    # Install manpage
+    mkdir -p "$out"/share/man/man1
+    ln -s "$out"/eagle-${version}/doc/eagle.1 "$out"/share/man/man1/eagle.1
+
+    # Build LD_PRELOAD library that redirects license file access to the home
+    # directory of the user
+    mkdir -p "$out"/lib
+    gcc -shared -fPIC -DEAGLE_PATH=\"$out/eagle-${version}\" ${./eagle7_fixer.c} -o "$out"/lib/eagle_fixer.so -ldl
+
+    # Make wrapper script
+    dynlinker="$(cat $NIX_CC/nix-support/dynamic-linker)"
+    mkdir -p "$out"/bin
+    cat > "$out"/bin/eagle << EOF
+    #!${runtimeShell}
+    export LD_LIBRARY_PATH="${stdenv.cc.cc.lib}/lib:${libPath}"
+    export LD_PRELOAD="$out/lib/eagle_fixer.so"
+    export QT_XKB_CONFIG_ROOT="${xkeyboardconfig}/share/X11/xkb"
+    exec "$dynlinker" "$out/eagle-${version}/bin/eagle" "\$@"
+    EOF
+    chmod a+x "$out"/bin/eagle
+
+    # Make desktop item
+    mkdir -p "$out"/share/applications
+    cp "$desktopItem"/share/applications/* "$out"/share/applications/
+    mkdir -p "$out"/share/icons
+    ln -s "$out/eagle-${version}/bin/eagleicon50.png" "$out"/share/icons/eagle.png
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Schematic editor and PCB layout tool from CadSoft";
+    homepage = "http://www.cadsoftusa.com/";
+    license = licenses.unfree;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/eagle/eagle7_fixer.c b/nixpkgs/pkgs/applications/science/electronics/eagle/eagle7_fixer.c
new file mode 100644
index 000000000000..da9da4dcbd3a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/eagle/eagle7_fixer.c
@@ -0,0 +1,134 @@
+/*
+ * LD_PRELOAD trick to make Eagle (schematic editor and PCB layout tool from
+ * CadSoft) work from a read-only installation directory.
+ *
+ * When Eagle starts, it looks for the license file in <eagle>/bin/eagle.key
+ * (where <eagle> is the install path). If eagle.key is not found, Eagle checks
+ * for write access to <eagle>/bin/, shows a license dialog to the user and
+ * then attempts to write a license file to <eagle>/bin/.
+ *
+ * This will of course fail when Eagle is installed in the read-only Nix store.
+ * Hence this library that redirects accesses to the those paths in the
+ * following way:
+ *
+ *   <eagle>/bin              => $HOME
+ *   <eagle>/bin/eagle.key    => $HOME/.eagle.key
+ *
+ * Also, if copying an example project to ~/eagle/ (in the Eagle GUI), Eagle
+ * chmod's the destination with read-only permission bits (presumably because
+ * the source is read-only) and fails to complete the copy operation.
+ * Therefore, the mode argument in calls to chmod() is OR'ed with the S_IWUSR
+ * bit (write by owner).
+ *
+ * Usage:
+ *   gcc -shared -fPIC -DEAGLE_PATH="$out/eagle-${version}" eagle_fixer.c -o eagle_fixer.so -ldl
+ *   LD_PRELOAD=$PWD/eagle_fixer.so ./result/bin/eagle
+ *
+ * To see the paths that are modified at runtime, set the environment variable
+ * EAGLE_FIXER_DEBUG to 1.
+ */
+
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <dlfcn.h>
+#include <limits.h>
+#include <sys/stat.h>
+
+#ifndef EAGLE_PATH
+#error Missing EAGLE_PATH, path to the eagle-${version} installation directory.
+#endif
+
+typedef FILE *(*fopen_func_t)(const char *path, const char *mode);
+typedef int (*access_func_t)(const char *pathname, int mode);
+typedef int (*chmod_func_t)(const char *path, mode_t mode);
+
+/*
+ * Map <eagle>/bin to $HOME and <eagle>/bin/eagle.key to $HOME/.eagle.key
+ *
+ * Path is truncated if bigger than PATH_MAX. It's not threadsafe, but that's
+ * OK.
+ */
+static const char *redirect(const char *pathname)
+{
+	static char buffer[PATH_MAX];
+	const char *homepath;
+	const char *new_path;
+	static int have_warned;
+
+	homepath = getenv("HOME");
+	if (!homepath) {
+		homepath = "/";
+		if (!have_warned && getenv("EAGLE_FIXER_DEBUG")) {
+			fprintf(stderr, "eagle_fixer: HOME is unset, using \"/\" (root) instead.\n");
+			have_warned = 1;
+		}
+	}
+
+	new_path = pathname;
+	if (strcmp(EAGLE_PATH "/bin", pathname) == 0) {
+		/* redirect to $HOME */
+		new_path = homepath;
+	} else if (strcmp(EAGLE_PATH "/bin/eagle.key", pathname) == 0) {
+		/* redirect to $HOME/.eagle.key */
+		snprintf(buffer, PATH_MAX, "%s/.eagle.key", homepath);
+		buffer[PATH_MAX-1] = '\0';
+		new_path = buffer;
+	}
+
+	return new_path;
+}
+
+FILE *fopen(const char *pathname, const char *mode)
+{
+	FILE *fp;
+	const char *path;
+	fopen_func_t orig_fopen;
+
+	orig_fopen = (fopen_func_t)dlsym(RTLD_NEXT, "fopen");
+	path = redirect(pathname);
+	fp = orig_fopen(path, mode);
+
+	if (path != pathname && getenv("EAGLE_FIXER_DEBUG")) {
+		fprintf(stderr, "eagle_fixer: fopen(\"%s\", \"%s\") => \"%s\": fp=%p\n", pathname, mode, path, fp);
+	}
+
+	return fp;
+}
+
+int access(const char *pathname, int mode)
+{
+	int ret;
+	const char *path;
+	access_func_t orig_access;
+
+	orig_access = (access_func_t)dlsym(RTLD_NEXT, "access");
+	path = redirect(pathname);
+	ret = orig_access(path, mode);
+
+	if (path != pathname && getenv("EAGLE_FIXER_DEBUG")) {
+		fprintf(stderr, "eagle_fixer: access(\"%s\", %d) => \"%s\": ret=%d\n", pathname, mode, path, ret);
+	}
+
+	return ret;
+}
+
+int chmod(const char *pathname, mode_t mode)
+{
+	int ret;
+	mode_t new_mode;
+	chmod_func_t orig_chmod;
+
+	orig_chmod = (chmod_func_t)dlsym(RTLD_NEXT, "chmod");
+	new_mode = mode | S_IWUSR;
+	ret = orig_chmod(pathname, new_mode);
+
+	if (getenv("EAGLE_FIXER_DEBUG")) {
+		fprintf(stderr, "eagle_fixer: chmod(\"%s\", %o) => %o: ret=%d\n", pathname, mode, new_mode, ret);
+	}
+
+	return ret;
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/fparser/default.nix b/nixpkgs/pkgs/applications/science/electronics/fparser/default.nix
new file mode 100644
index 000000000000..55e40ca2b00b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/fparser/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+}:
+
+stdenv.mkDerivation rec {
+  pname = "fparser";
+  version = "unstable-2015-09-25";
+
+  src = fetchFromGitHub {
+    owner = "thliebig";
+    repo = "fparser";
+    rev = "a59e1f51e32096bfe2a0a2640d5dffc7ae6ba37b";
+    sha256 = "0wayml1mlyi922gp6am3fsidhzsilziksdn5kbnpcln01h8555ad";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  meta = with stdenv.lib; {
+    description = "C++ Library for Evaluating Mathematical Functions";
+    homepage = "https://github.com/thliebig/fparser";
+    license = licenses.lgpl3;
+    maintainers = with maintainers; [ matthuszagh ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/fped/default.nix b/nixpkgs/pkgs/applications/science/electronics/fped/default.nix
new file mode 100644
index 000000000000..9ef47ae26346
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/fped/default.nix
@@ -0,0 +1,44 @@
+{ lib, stdenv, fetchgit
+, flex, bison, fig2dev, imagemagick, netpbm, gtk2
+, pkgconfig
+}:
+
+with lib;
+stdenv.mkDerivation {
+  pname = "fped";
+  version = "unstable-2017-05-11";
+
+  src = fetchgit {
+    url = "git://projects.qi-hardware.com/fped.git";
+    rev = "fa98e58157b6f68396d302c32421e882ac87f45b";
+    sha256 = "0xv364a00zwxhd9kg1z9sch5y0cxnrhk546asspyb9bh58sdzfy7";
+  };
+
+  # This uses '/bin/bash', '/usr/local' and 'lex' by default
+  makeFlags = [
+    "PREFIX=${placeholder "out"}"
+    "LEX=flex"
+    "RGBDEF=${netpbm.out}/share/netpbm/misc/rgb.txt"
+  ];
+
+  nativeBuildInputs = [
+    flex
+    bison
+    pkgconfig
+    imagemagick
+    fig2dev
+    netpbm
+  ];
+
+  buildInputs = [
+    gtk2
+  ];
+
+  meta = {
+    description = "An editor that allows the interactive creation of footprints electronic components";
+    homepage = "http://projects.qi-hardware.com/index.php/p/fped/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ expipiplus1 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/fritzing/default.nix b/nixpkgs/pkgs/applications/science/electronics/fritzing/default.nix
new file mode 100644
index 000000000000..a0442db7fed2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/fritzing/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchpatch, fetchFromGitHub, qmake, pkgconfig
+, qtbase, qtsvg, qtserialport, boost, libgit2
+}:
+
+stdenv.mkDerivation rec {
+  pname = "fritzing";
+  version = "0.9.3b";
+
+  src = fetchFromGitHub {
+    owner = "fritzing";
+    repo = "fritzing-app";
+    rev = version;
+    sha256 = "0hpyc550xfhr6gmnc85nq60w00rm0ljm0y744dp0z88ikl04f4s3";
+  };
+
+  parts = fetchFromGitHub {
+    owner = "fritzing";
+    repo = "fritzing-parts";
+    rev = version;
+    sha256 = "1d2v8k7p176j0lczx4vx9n9gbg3vw09n2c4b6w0wj5wqmifywhc1";
+  };
+
+  patches = [(fetchpatch {
+    name = "0001-Squashed-commit-of-the-following.patch";
+    url = "https://aur.archlinux.org/cgit/aur.git/plain/0001-Squashed-commit-of-the-following.patch?h=fritzing";
+    sha256 = "1cv6myidxhy28i8m8v13ghzkvx5978p9dcd8v7885y0l1h3108mf";
+  })];
+
+  buildInputs = [ qtbase qtsvg qtserialport boost libgit2 ];
+
+  nativeBuildInputs = [ qmake pkgconfig ];
+
+  qmakeFlags = [ "phoenix.pro" ];
+
+  preConfigure = ''
+    ln -s "$parts" parts
+  '';
+
+  meta = {
+    description = "An open source prototyping tool for Arduino-based projects";
+    homepage = "http://fritzing.org/";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.robberer ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/geda/default.nix b/nixpkgs/pkgs/applications/science/electronics/geda/default.nix
new file mode 100644
index 000000000000..54ab7ec57e27
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/geda/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, pkgconfig, guile, gtk2, flex, gawk, perl }:
+
+stdenv.mkDerivation {
+  pname = "geda";
+  version = "1.8.2-20130925";
+
+  src = fetchurl {
+    url = "http://ftp.geda-project.org/geda-gaf/stable/v1.8/1.8.2/geda-gaf-1.8.2.tar.gz";
+    sha256 = "08dpa506xk4gjbbi8vnxcb640wq4ihlgmhzlssl52nhvxwx7gx5v";
+  };
+
+  configureFlags = [
+    "--disable-update-xdg-database" 
+  ];
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ guile gtk2 flex gawk perl ];
+
+  meta = with stdenv.lib; {
+    description = "Full GPL'd suite of Electronic Design Automation tools";
+    homepage = "http://www.geda-project.org/";
+    maintainers = with maintainers; [ pjones ];
+    platforms = platforms.linux;
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/gerbv/default.nix b/nixpkgs/pkgs/applications/science/electronics/gerbv/default.nix
new file mode 100644
index 000000000000..b0317551df8d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/gerbv/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchgit, pkgconfig, gettext, libtool, automake, autoconf, cairo, gtk2, autoreconfHook }:
+
+stdenv.mkDerivation {
+  pname = "gerbv";
+  version = "2015-10-08";
+
+  src = fetchgit {
+    url = "git://git.geda-project.org/gerbv.git";
+    rev = "76b8b67bfa10823ce98f1c4c3b49a2afcadf7659";
+    sha256 = "00jn1xhf6kblxc5gac1wvk8zm12fy6sk81nj3jwdag0z6wk3z446";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ gettext libtool automake autoconf cairo gtk2 ];
+
+  configureFlags = ["--disable-update-desktop-database"];
+
+  meta = with stdenv.lib; {
+    description = "A Gerber (RS-274X) viewer";
+    homepage = "http://gerbv.geda-project.org/";
+    maintainers = with maintainers; [ mog ];
+    platforms = platforms.linux;
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/gtkwave/default.nix b/nixpkgs/pkgs/applications/science/electronics/gtkwave/default.nix
new file mode 100644
index 000000000000..3d75780936e1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/gtkwave/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, glib, gtk3, gperf, pkgconfig, bzip2, tcl, tk, wrapGAppsHook, judy, xz }:
+
+stdenv.mkDerivation rec {
+  pname = "gtkwave";
+  version = "3.3.104";
+
+  src = fetchurl {
+    url    = "mirror://sourceforge/gtkwave/${pname}-gtk3-${version}.tar.gz";
+    sha256 = "1qvldbnlp3wkqr5ff93f6pdvv9yzij7lxfhpqlizakz08l1xb391";
+  };
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+  buildInputs = [ glib gtk3 gperf bzip2 tcl tk judy xz ];
+
+  configureFlags = [
+    "--with-tcl=${tcl}/lib"
+    "--with-tk=${tk}/lib"
+    "--enable-judy"
+    "--enable-gtk3"
+  ];
+
+  meta = {
+    description = "VCD/Waveform viewer for Unix and Win32";
+    homepage    = "http://gtkwave.sourceforge.net";
+    license     = stdenv.lib.licenses.gpl2Plus;
+    maintainers = with stdenv.lib.maintainers; [ thoughtpolice ];
+    platforms   = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/kicad/base.nix b/nixpkgs/pkgs/applications/science/electronics/kicad/base.nix
new file mode 100644
index 000000000000..b7ab5fa70d99
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/kicad/base.nix
@@ -0,0 +1,130 @@
+{ lib, stdenv, fetchFromGitLab, cmake, libGLU, libGL, zlib, wxGTK
+, libX11, gettext, glew, glm, cairo, curl, openssl, boost, pkgconfig
+, doxygen, pcre, libpthreadstubs, libXdmcp, fetchpatch, lndir, callPackages
+
+, stable ? true
+, baseName ? "kicad"
+, versions ? { }
+, oceSupport ? false, opencascade
+, withOCCT ? true, opencascade-occt
+, ngspiceSupport ? true, libngspice
+, scriptingSupport ? true, swig, python, wxPython
+, debug ? false, valgrind
+, withI18n ? true
+}:
+
+assert ngspiceSupport -> libngspice != null;
+
+with lib;
+let
+
+  versionConfig = versions.${baseName};
+
+  # oce on aarch64 fails a test
+  withOCE = oceSupport && !stdenv.isAarch64;
+  withOCC = (withOCCT && !withOCE) || (oceSupport && stdenv.isAarch64);
+
+  libraries = callPackages ./libraries.nix versionConfig.libVersion;
+
+in
+stdenv.mkDerivation rec {
+
+  i18n = libraries.i18n;
+
+  pname = "kicad-base";
+  version = "${versions.${baseName}.kicadVersion.version}";
+
+  src = fetchFromGitLab (
+    {
+      group = "kicad";
+      owner = "code";
+      repo = "kicad";
+    } // versionConfig.kicadVersion.src
+  );
+
+  # quick fix for #72248
+  # should be removed if a a more permanent fix is published
+  patches = [
+    (
+      fetchpatch {
+        url = "https://github.com/johnbeard/kicad/commit/dfb1318a3989e3d6f9f2ac33c924ca5030ea273b.patch";
+        sha256 = "00ifd3fas8lid8svzh1w67xc8kyx89qidp7gm633r014j3kjkgcd";
+      }
+    )
+  ];
+
+  # tagged releases don't have "unknown"
+  # kicad nightlies use git describe --dirty
+  # nix removes .git, so its approximated here
+  # "-1" appended to indicate we're adding a patch
+  postPatch = ''
+    substituteInPlace CMakeModules/KiCadVersion.cmake \
+      --replace "unknown" "${builtins.substring 0 10 src.rev}-1" \
+      --replace "${version}" "${version}-1"
+  '';
+
+  makeFlags = optional (debug) [ "CFLAGS+=-Og" "CFLAGS+=-ggdb" ];
+
+  cmakeFlags =
+    optionals (scriptingSupport) [
+      "-DKICAD_SCRIPTING=ON"
+      "-DKICAD_SCRIPTING_MODULES=ON"
+      "-DKICAD_SCRIPTING_PYTHON3=ON"
+      "-DKICAD_SCRIPTING_WXPYTHON_PHOENIX=ON"
+    ]
+    ++ optional (!scriptingSupport)
+      "-DKICAD_SCRIPTING=OFF"
+    ++ optional (ngspiceSupport) "-DKICAD_SPICE=ON"
+    ++ optional (!withOCE) "-DKICAD_USE_OCE=OFF"
+    ++ optional (!withOCC) "-DKICAD_USE_OCC=OFF"
+    ++ optionals (withOCE) [
+      "-DKICAD_USE_OCE=ON"
+      "-DOCE_DIR=${opencascade}"
+    ]
+    ++ optionals (withOCC) [
+      "-DKICAD_USE_OCC=ON"
+      "-DOCC_INCLUDE_DIR=${opencascade-occt}/include/opencascade"
+    ]
+    ++ optionals (debug) [
+      "-DCMAKE_BUILD_TYPE=Debug"
+      "-DKICAD_STDLIB_DEBUG=ON"
+      "-DKICAD_USE_VALGRIND=ON"
+    ]
+  ;
+
+  nativeBuildInputs = [ cmake doxygen pkgconfig lndir ];
+
+  buildInputs = [
+    libGLU libGL zlib libX11 wxGTK pcre libXdmcp gettext
+    glew glm libpthreadstubs cairo curl openssl boost
+  ]
+  ++ optionals (scriptingSupport) [ swig python wxPython ]
+  ++ optional (ngspiceSupport) libngspice
+  ++ optional (withOCE) opencascade
+  ++ optional (withOCC) opencascade-occt
+  ++ optional (debug) valgrind
+  ;
+
+  # debug builds fail all but the python test
+  # 5.1.x fails the eeschema test
+  doInstallCheck = !debug && !stable;
+  installCheckTarget = "test";
+
+  dontStrip = debug;
+
+  postInstall = optional (withI18n) ''
+    mkdir -p $out/share
+    lndir ${i18n}/share $out/share
+  '';
+
+  meta = {
+    description = "Just the built source without the libraries";
+    longDescription = ''
+      Just the build products, optionally with the i18n linked in
+      the libraries are passed via an env var in the wrapper, default.nix
+    '';
+    homepage = "https://www.kicad-pcb.org/";
+    license = licenses.agpl3;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/kicad/default.nix b/nixpkgs/pkgs/applications/science/electronics/kicad/default.nix
new file mode 100644
index 000000000000..a99f1b2d8d7a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/kicad/default.nix
@@ -0,0 +1,146 @@
+{ lib, stdenv, gnome3, pkgs, wxGTK30, wxGTK31
+, gsettings-desktop-schemas, hicolor-icon-theme
+, callPackage, callPackages
+, librsvg, cups
+
+, pname ? "kicad"
+, stable ? true
+, oceSupport ? false, opencascade
+, withOCCT ? true, opencascade-occt
+, ngspiceSupport ? true, libngspice
+, scriptingSupport ? true, swig, python3
+, debug ? false, valgrind
+, with3d ? true
+, withI18n ? true
+}:
+
+assert ngspiceSupport -> libngspice != null;
+
+with lib;
+let
+
+  baseName = if (stable) then "kicad" else "kicad-unstable";
+
+  versions =  import ./versions.nix;
+  versionConfig = versions.${baseName};
+
+  wxGTK = if (stable)
+    # wxGTK3x may default to withGtk2 = false, see #73145
+    then wxGTK30.override { withGtk2 = false; }
+    # wxGTK31 currently introduces an issue with opening the python interpreter in pcbnew
+    # but brings high DPI support?
+    else wxGTK31.override { withGtk2 = false; };
+
+  pythonPackages = python.pkgs;
+  python = python3;
+  wxPython = pythonPackages.wxPython_4_0;
+
+in
+stdenv.mkDerivation rec {
+
+  passthru.libraries = callPackages ./libraries.nix versionConfig.libVersion;
+  base = callPackage ./base.nix {
+    inherit versions stable baseName;
+    inherit wxGTK python wxPython;
+    inherit debug withI18n withOCCT oceSupport ngspiceSupport scriptingSupport;
+  };
+
+  inherit pname;
+  version = versions.${baseName}.kicadVersion.version;
+
+  src = base;
+  dontUnpack = true;
+  dontConfigure = true;
+  dontBuild = true;
+  dontFixup = true;
+
+  pythonPath = optionals (scriptingSupport)
+    [ wxPython pythonPackages.six ];
+
+  nativeBuildInputs = optionals (scriptingSupport)
+    [ pythonPackages.wrapPython ];
+
+  # wrapGAppsHook added the equivalent to ${base}/share
+  # though i noticed no difference without it
+  makeWrapperArgs = with passthru.libraries; [
+    "--prefix XDG_DATA_DIRS : ${base}/share"
+    "--prefix XDG_DATA_DIRS : ${hicolor-icon-theme}/share"
+    "--prefix XDG_DATA_DIRS : ${gnome3.defaultIconTheme}/share"
+    "--prefix XDG_DATA_DIRS : ${wxGTK.gtk}/share/gsettings-schemas/${wxGTK.gtk.name}"
+    "--prefix XDG_DATA_DIRS : ${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}"
+    # wrapGAppsHook did these two as well, no idea if it matters...
+    "--prefix XDG_DATA_DIRS : ${cups}/share"
+    "--prefix GIO_EXTRA_MODULES : ${gnome3.dconf}/lib/gio/modules"
+
+    "--set KISYSMOD ${footprints}/share/kicad/modules"
+    "--set KICAD_SYMBOL_DIR ${symbols}/share/kicad/library"
+    "--set KICAD_TEMPLATE_DIR ${templates}/share/kicad/template"
+    "--prefix KICAD_TEMPLATE_DIR : ${symbols}/share/kicad/template"
+    "--prefix KICAD_TEMPLATE_DIR : ${footprints}/share/kicad/template"
+  ]
+  ++ optionals (with3d) [ "--set KISYS3DMOD ${packages3d}/share/kicad/modules/packages3d" ]
+  ++ optionals (ngspiceSupport) [ "--prefix LD_LIBRARY_PATH : ${libngspice}/lib" ]
+
+  # infinisil's workaround for #39493
+  ++ [ "--set GDK_PIXBUF_MODULE_FILE ${librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache" ]
+  ;
+
+  # why does $makeWrapperArgs have to be added explicitly?
+  # $out and $program_PYTHONPATH don't exist when makeWrapperArgs gets set?
+  # kicad-ogltest's source seems to indicate that crashing is expected behaviour...
+  installPhase = with lib;
+    let
+      tools = [ "kicad" "pcbnew" "eeschema" "gerbview" "pcb_calculator" "pl_editor" "bitmap2component" ];
+      utils = [ "dxf2idf" "idf2vrml" "idfcyl" "idfrect" "kicad2step" "kicad-ogltest" ];
+    in
+    ( concatStringsSep "\n"
+      ( flatten [
+        ( optionalString (scriptingSupport) "buildPythonPath \"${base} $pythonPath\" \n" )
+
+        # wrap each of the directly usable tools
+        ( map ( tool: "makeWrapper ${base}/bin/${tool} $out/bin/${tool} $makeWrapperArgs"
+          + optionalString (scriptingSupport) " --set PYTHONPATH \"$program_PYTHONPATH\""
+            ) tools )
+
+        # link in the CLI utils
+        ( map ( util: "ln -s ${base}/bin/${util} $out/bin/${util}" ) utils )
+      ])
+    )
+  ;
+
+  # can't run this for each pname
+  # stable and unstable are in the same versions.nix
+  # and kicad-small reuses stable
+  # with "all" it updates both, run it manually if you don't want that
+  # and can't git commit if this could be running in parallel with other scripts
+  passthru.updateScript = [ ./update.sh "all" ];
+
+  meta = rec {
+    description = (if (stable)
+      then "Open Source Electronics Design Automation suite"
+      else "Open Source EDA suite, development build")
+      + (if (!with3d) then ", without 3D models" else "");
+    homepage = "https://www.kicad-pcb.org/";
+    longDescription = ''
+      KiCad is an open source software suite for Electronic Design Automation.
+      The Programs handle Schematic Capture, and PCB Layout with Gerber output.
+    '';
+    license = licenses.agpl3;
+    # berce seems inactive...
+    maintainers = with stdenv.lib.maintainers; [ evils kiwi berce ];
+    # kicad is cross platform
+    platforms = stdenv.lib.platforms.all;
+    # despite that, nipkgs' wxGTK for darwin is "wxmac"
+    # and wxPython_4_0 does not account for this
+    # adjusting this package to downgrade to python2Packages.wxPython (wxPython 3),
+    # seems like more trouble than fixing wxPython_4_0 would be
+    # additionally, libngspice is marked as linux only, though it should support darwin
+
+    hydraPlatforms = if (with3d) then [ ] else platforms;
+    # We can't download the 3d models on Hydra,
+    # they are a ~1 GiB download and they occupy ~5 GiB in store.
+    # as long as the base and libraries (minus 3d) are build,
+    # this wrapper does not need to get built
+    # the kicad-*small "packages" cause this to happen
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/kicad/libraries.nix b/nixpkgs/pkgs/applications/science/electronics/kicad/libraries.nix
new file mode 100644
index 000000000000..4dde2a0a1226
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/kicad/libraries.nix
@@ -0,0 +1,70 @@
+{ lib, stdenv, cmake, gettext
+, fetchFromGitHub, fetchFromGitLab
+, version, libSources
+}:
+
+# callPackage libraries {
+#   version = "unstable";
+#   libs.symbols = {
+#     rev = "09f9..";
+#     sha256 = "...";
+#   };
+# };
+with lib;
+let
+  mkLib = name:
+    stdenv.mkDerivation {
+      pname = "kicad-${name}";
+      version = "${version}";
+      src = fetchFromGitHub (
+        {
+          owner = "KiCad";
+          repo = "kicad-${name}";
+          rev = version;
+          inherit name;
+        } // (libSources.${name} or { })
+      );
+      nativeBuildInputs = [ cmake ];
+
+      meta = rec {
+        license = licenses.cc-by-sa-40;
+        platforms = stdenv.lib.platforms.all;
+        # the 3d models are a ~1 GiB download and occupy ~5 GiB in store.
+        # this would exceed the hydra output limit
+        hydraPlatforms = if (name == "packages3d" ) then [ ] else platforms;
+      };
+    };
+in
+{
+  symbols = mkLib "symbols";
+  templates = mkLib "templates";
+  footprints = mkLib "footprints";
+  packages3d = mkLib "packages3d";
+
+  # i18n is a special case, not actually a library
+  # more a part of kicad proper, but also optional and separate
+  # since their move to gitlab they're keeping it in a separate path
+  # kicad has no way to find i18n except through a path relative to its install path
+  # therefore this is being linked into ${kicad-base}/share/
+  # and defined here to make use of the rev & sha256's brought here for the libs
+  i18n = let name = "i18n"; in
+    stdenv.mkDerivation {
+      pname = "kicad-${name}";
+      version = "${version}";
+      src = fetchFromGitLab (
+        {
+          group = "kicad";
+          owner = "code";
+          repo = "kicad-${name}";
+          rev = version;
+          inherit name;
+        } // (libSources.${name} or { })
+      );
+      buildInputs = [ gettext ];
+      nativeBuildInputs = [ cmake ];
+      meta = {
+        license = licenses.gpl2; # https://github.com/KiCad/kicad-i18n/issues/3
+        platforms = stdenv.lib.platforms.all;
+      };
+    };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/kicad/update.sh b/nixpkgs/pkgs/applications/science/electronics/kicad/update.sh
new file mode 100755
index 000000000000..f048ccde4ec8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/kicad/update.sh
@@ -0,0 +1,197 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p coreutils git nix curl
+
+set -e
+
+# this script will generate versions.nix in the right location
+# this should contain the versions' revs and hashes
+# the stable revs are stored only for ease of skipping
+
+# by default nix-prefetch-url uses XDG_RUNTIME_DIR as tmp
+# which is /run/user/1000, which defaults to 10% of your RAM
+# unless you have over 64GB of ram that'll be insufficient
+# resulting in "tar: no space left on device" for packages3d
+# hence:
+export TMPDIR=/tmp
+
+# if something goes unrepairably wrong, run 'update.sh all clean'
+
+# TODO
+# support parallel instances for each pname
+#   currently risks reusing old data
+# no getting around manually checking if the build product works...
+# if there is, default to commiting?
+#   won't work when running in parallel?
+# remove items left in /nix/store?
+
+# get the latest tag that isn't an RC or *.99
+latest_tag="$(git ls-remote --tags --sort -version:refname \
+  https://gitlab.com/kicad/code/kicad.git \
+  | grep -o 'refs/tags/[0-9]*\.[0-9]*\.[0-9]*$' \
+  | grep -v ".99" | head -n 1 | cut -d '/' -f 3)"
+
+all_versions=( "${latest_tag}" master )
+
+prefetch="nix-prefetch-url --unpack --quiet"
+
+clean=""
+check_stable=""
+check_unstable=1
+commit=""
+
+for arg in "$@"; do
+  case "${arg}" in
+    help|-h|--help) echo "Read me!" >&2; exit 1; ;;
+    kicad|release|tag|stable|*small|5*|6*) check_stable=1; check_unstable="" ;;
+    all|both|full) check_stable=1; check_unstable=1 ;;
+    commit) commit=1 ;;
+    clean|fix|*fuck) check_stable=1; check_unstable=1; clean=1 ;;
+    master|*unstable|latest|now|today) check_unstable=1 ;;
+    *) ;;
+  esac
+done
+
+here="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
+now=$(date --iso-8601 --utc)
+
+file="${here}/versions.nix"
+# just in case this runs in parallel
+tmp="${here}/,versions.nix.${RANDOM}"
+
+# libraries currently on github, move to $gitlab/libraries planned
+libs=( symbols templates footprints packages3d )
+
+get_rev="git ls-remote --heads --tags"
+
+gitlab="https://gitlab.com/kicad"
+# append commit hash or tag
+gitlab_pre="https://gitlab.com/api/v4/projects/kicad%2Fcode%2Fkicad/repository/archive.tar.gz?sha="
+
+# append "-$lib/archive/[hash or tag].tar.gz
+github="https://github.com/kicad/kicad"
+
+# not a lib, but separate and already moved to gitlab
+i18n="${gitlab}/code/kicad-i18n.git"
+i18n_pre="https://gitlab.com/api/v4/projects/kicad%2Fcode%2Fkicad-i18n/repository/archive.tar.gz?sha="
+
+count=0
+
+printf "Latest tag is\t%s\n" "${latest_tag}" >&2
+
+if [[ ! -f ${file} ]]; then
+  echo "No existing file, generating from scratch" >&2
+  check_stable=1; check_unstable=1; clean=1
+fi
+
+printf "Writing %s\n" "${tmp}" >&2
+
+# not a dangling brace, grouping the output to redirect to file
+{
+
+printf "# This file was generated by update.sh\n\n"
+printf "{\n"
+
+for version in "${all_versions[@]}"; do
+
+  if [[ ${version} == "master" ]]; then
+    pname="kicad-unstable"
+    today="${now}"
+  else
+    pname="kicad"
+    today="${version}"
+  fi
+  # skip a version if we don't want to check it
+  if [[ (${version} != "master" && -n ${check_stable}) \
+     || (${version} == "master" && -n ${check_unstable}) ]]; then
+
+    printf "\nChecking %s\n" "${pname}" >&2
+
+    printf "%2s\"%s\" = {\n" "" "${pname}"
+      printf "%4skicadVersion = {\n" ""
+        printf "%6sversion =\t\t\t\"%s\";\n" "" "${today}"
+        printf "%6ssrc = {\n" ""
+
+    echo "Checking src" >&2
+    src_rev="$(${get_rev} "${gitlab}"/code/kicad.git "${version}" | cut -f1)"
+    has_rev="$(grep -sm 1 "\"${pname}\"" -A 4 "${file}" | grep -sm 1 "${src_rev}" || true)"
+    has_hash="$(grep -sm 1 "\"${pname}\"" -A 5 "${file}" | grep -sm 1 "sha256")"
+    if [[ -n ${has_rev} && -n ${has_hash} && -z ${clean} ]]; then
+      echo "Reusing old ${pname}.src.sha256, already latest .rev" >&2
+      grep -sm 1 "\"${pname}\"" -A 5 "${file}" | grep -sm 1 "rev" -A 1
+    else
+          printf "%8srev =\t\t\t\"%s\";\n" "" "${src_rev}"
+          printf "%8ssha256 =\t\t\"%s\";\n" \
+            "" "$(${prefetch} "${gitlab_pre}${src_rev}")"
+          count=$((count+1))
+    fi
+        printf "%6s};\n" ""
+      printf "%4s};\n" ""
+
+      printf "%4slibVersion = {\n" ""
+        printf "%6sversion =\t\t\t\"%s\";\n" "" "${today}"
+        printf "%6slibSources = {\n" ""
+
+        echo "Checking i18n" >&2
+        i18n_rev="$(${get_rev} "${i18n}" "${version}" | cut -f1)"
+        has_rev="$(grep -sm 1 "\"${pname}\"" -A 11 "${file}" | grep -sm 1 "${i18n_rev}" || true)"
+        has_hash="$(grep -sm 1 "\"${pname}\"" -A 12 "${file}" | grep -sm 1 "i18n.sha256")"
+        if [[ -n ${has_rev} && -n ${has_hash} && -z ${clean} ]]; then
+          echo "Reusing old kicad-i18n-${today}.src.sha256, already latest .rev" >&2
+          grep -sm 1 "\"${pname}\"" -A 12 "${file}" | grep -sm 1 "i18n" -A 1
+        else
+          printf "%8si18n.rev =\t\t\"%s\";\n" "" "${i18n_rev}"
+          printf "%8si18n.sha256 =\t\t\"%s\";\n" "" \
+            "$(${prefetch} "${i18n_pre}${i18n_rev}")"
+          count=$((count+1))
+        fi
+
+          for lib in "${libs[@]}"; do
+            echo "Checking ${lib}" >&2
+            url="${github}-${lib}.git"
+            lib_rev="$(${get_rev} "${url}" "${version}" | cut -f1)"
+            has_rev="$(grep -sm 1 "\"${pname}\"" -A 19 "${file}" | grep -sm 1 "${lib_rev}" || true)"
+            has_hash="$(grep -sm 1 "\"${pname}\"" -A 20 "${file}" | grep -sm 1 "${lib}.sha256")"
+            if [[ -n ${has_rev} && -n ${has_hash} && -z ${clean} ]]; then
+              echo "Reusing old kicad-${lib}-${today}.src.sha256, already latest .rev" >&2
+              grep -sm 1 "\"${pname}\"" -A 20 "${file}" | grep -sm 1 "${lib}" -A 1
+            else
+              printf "%8s%s.rev =\t" "" "${lib}"
+              case "${lib}" in
+                symbols|templates) printf "\t" ;; *) ;;
+              esac
+              printf "\"%s\";\n" "${lib_rev}"
+              printf "%8s%s.sha256 =\t\"%s\";\n" "" \
+              "${lib}" "$(${prefetch} "${github}-${lib}/archive/${lib_rev}.tar.gz")"
+              count=$((count+1))
+            fi
+          done
+        printf "%6s};\n" ""
+      printf "%4s};\n" ""
+    printf "%2s};\n" ""
+  else
+    printf "\nReusing old %s\n" "${pname}" >&2
+    grep -sm 1 "\"${pname}\"" -A 23 "${file}"
+  fi
+done 
+printf "}\n"
+} > "${tmp}"
+
+if grep '""' "${tmp}"; then
+	echo "empty value detected, out of space?" >&2
+	exit "1"
+fi
+
+mv "${tmp}" "${file}"
+
+printf "\nFinished\nMoved output to %s\n\n" "${file}" >&2
+
+if [[ ${count} -gt 0 ]]; then
+  if [[ ${count} -gt 1 ]]; then s="s"; else s=""; fi
+  echo "${count} revision${s} changed" >&2
+  if [[ -n ${commit} ]]; then
+    git commit -am "$(printf "kicad: automatic update of %s item%s\n" "${count}" "${s}")"
+  fi
+  echo "Please confirm the new versions.nix works before making a PR." >&2
+else
+  echo "No changes, those checked are up to date" >&2
+fi
diff --git a/nixpkgs/pkgs/applications/science/electronics/kicad/versions.nix b/nixpkgs/pkgs/applications/science/electronics/kicad/versions.nix
new file mode 100644
index 000000000000..4a9ed0cb86dc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/kicad/versions.nix
@@ -0,0 +1,52 @@
+# This file was generated by update.sh
+
+{
+  "kicad" = {
+    kicadVersion = {
+      version =			"5.1.6";
+      src = {
+        rev =			"c6e7f7de7df655fd59b57823499efc443009de6b";
+        sha256 =		"1pa3z0h0679jmgxlzc833h6q85b5paxdp69kf2h93vkaryj58622";
+      };
+    };
+    libVersion = {
+      version =			"5.1.6";
+      libSources = {
+        i18n.rev =		"5ad171ce5c8d90f4740517c2adecb310d8be51bd";
+        i18n.sha256 =		"0qryi8xjm23ka363zfl7bbga0v5c31fr3d4nyxp3m168vkv9zhha";
+        symbols.rev =		"5150eaa2a7d15cfc6bb1459c527c4ebaa66d7708";
+        symbols.sha256 =	"12w3rdy085drlikkpb27n9ni7cyg9l0pqy7hnr86cxjcw3l5wcx6";
+        templates.rev =		"9213d439f757e6049b7e54f3ea08272a0d0f44a9";
+        templates.sha256 =	"1hppcsrkn4dk6ggby6ckh0q65qxkywrbyxa4lwpaf7pxjyv498xg";
+        footprints.rev =	"a61b4e49762fb355f654e65a1c7db1aaf7bb2332";
+        footprints.sha256 =	"1kmf91a5mmvj9izrv40mkaw1w36yjgn8daczd9rq2wlmd0rdp1zx";
+        packages3d.rev =	"150ff1caf0b01dc04c84f4f966f4f88fedfa8f8c";
+        packages3d.sha256 =	"0b9jglf77fy0n0r8xs4yqkv6zvipyfvp0z5dnqlzp32csy5aqpi1";
+      };
+    };
+  };
+  "kicad-unstable" = {
+    kicadVersion = {
+      version =			"2020-05-14";
+      src = {
+        rev =			"3b8465359135e9f6dea4b0a5fcb62377753fe890";
+        sha256 =		"18xsg2s0pxx176rnblygq1f8xpmryw59lcjzm897gifz0sj0nhvx";
+      };
+    };
+    libVersion = {
+      version =			"2020-05-14";
+      libSources = {
+        i18n.rev =		"c4460d0d8e1075691d43dc928ffc332fa1282592";
+        i18n.sha256 =		"1gkrbfyfzsr5q7sahhlyhgfpfwm6b83lzf0q1v854gwxdfabvi0y";
+        symbols.rev =		"614b5f6256fbae82c2bba399086506bbe435bd94";
+        symbols.sha256 =	"10ix3wdcl832r4ha5q8phpx8j97gzngb41nczdli1qkhjmiw9y8r";
+        templates.rev =		"7db8d4d0ea0711f1961d117853547fb3edbc3857";
+        templates.sha256 =	"1hppcsrkn4dk6ggby6ckh0q65qxkywrbyxa4lwpaf7pxjyv498xg";
+        footprints.rev =	"240804c6c89b66af808379e1fc94ea6011433cbe";
+        footprints.sha256 =	"1jh71004lrn7bl384zfmbqqdbs28gjb6diwn6hyb587jpivdnl3g";
+        packages3d.rev =	"9b560cf94a35b692ca516d37bdaf392ce10e549d";
+        packages3d.sha256 =	"0b9jglf77fy0n0r8xs4yqkv6zvipyfvp0z5dnqlzp32csy5aqpi1";
+      };
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/librepcb/default.nix b/nixpkgs/pkgs/applications/science/electronics/librepcb/default.nix
new file mode 100644
index 000000000000..de01b095e381
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/librepcb/default.nix
@@ -0,0 +1,39 @@
+{ lib, mkDerivation, fetchFromGitHub, qtbase, qttools, qmake, wrapQtAppsHook }:
+
+mkDerivation {
+  pname = "librepcb";
+  version = "0.1.4";
+
+  src = fetchFromGitHub {
+    owner = "LibrePCB";
+    repo = "LibrePCB";
+    fetchSubmodules = true;
+    rev = "ae04eef5a71b5ba66ae2cee6b631c1c933ace535";
+    sha256 = "0wk5qny1jb6n4mwyyrs7syir3hmwxlwazcd80bpxharmsj7p0rzc";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ qmake qttools wrapQtAppsHook ];
+
+  buildInputs = [ qtbase ];
+
+  qmakeFlags = ["-r"];
+
+  postInstall = ''
+      mkdir -p $out/share/librepcb/fontobene
+      cp share/librepcb/fontobene/newstroke.bene $out/share/librepcb/fontobene/
+    '';
+
+  preFixup = ''
+    wrapQtApp $out/bin/librepcb
+  '';
+
+  meta = with lib; {
+    description = "A free EDA software to develop printed circuit boards";
+    homepage = "https://librepcb.org/";
+    maintainers = with maintainers; [ luz ];
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/magic-vlsi/0001-strip-bin-prefix.patch b/nixpkgs/pkgs/applications/science/electronics/magic-vlsi/0001-strip-bin-prefix.patch
new file mode 100644
index 000000000000..1cef96ea1408
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/magic-vlsi/0001-strip-bin-prefix.patch
@@ -0,0 +1,10 @@
+diff --git a/scripts/makedbh b/scripts/makedbh
+index 01e4fa5..d6299c6 100755
+--- a/scripts/makedbh
++++ b/scripts/makedbh
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # makes the "database.h" (1st argument, $1) file from "database.h.in"
+ # (2nd argument, $2), setting various mask operation definitions
diff --git a/nixpkgs/pkgs/applications/science/electronics/magic-vlsi/0002-fix-format-security.patch b/nixpkgs/pkgs/applications/science/electronics/magic-vlsi/0002-fix-format-security.patch
new file mode 100644
index 000000000000..37ae35195503
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/magic-vlsi/0002-fix-format-security.patch
@@ -0,0 +1,19 @@
+diff --git a/database/DBio.c b/database/DBio.c
+index 93c4b0b..292ea5f 100644
+--- a/database/DBio.c
++++ b/database/DBio.c
+@@ -2378,12 +2378,12 @@ DBCellWriteFile(cellDef, f)
+ 
+ #define FPRINTF(f,s)\
+ {\
+-     if (fprintf(f,s) == EOF) goto ioerror;\
++     if (fprintf(f,"%s",s) == EOF) goto ioerror;\
+      DBFileOffset += strlen(s);\
+ }
+ #define FPRINTR(f,s)\
+ {\
+-     if (fprintf(f,s) == EOF) return 1;\
++     if (fprintf(f,"%s",s) == EOF) return 1;\
+      DBFileOffset += strlen(s);\
+ }
+ 
diff --git a/nixpkgs/pkgs/applications/science/electronics/magic-vlsi/default.nix b/nixpkgs/pkgs/applications/science/electronics/magic-vlsi/default.nix
new file mode 100644
index 000000000000..62b830547e53
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/magic-vlsi/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, m4, tcsh, libX11, tcl, tk, cairo, ncurses, mesa_glu, python3 }:
+
+stdenv.mkDerivation {
+  pname = "magic-vlsi";
+  version = "8.3.5";
+
+  src = fetchurl {
+    url = "http://opencircuitdesign.com/magic/archive/magic-8.3.5.tgz";
+    sha256 = "0wv4zmxlqjfaakgp802icn0cd9f8ylkz2sppix83axq8p5cg90yq";
+  };
+
+  buildInputs = [ m4 tcsh libX11 tcl tk cairo ncurses mesa_glu ];
+  nativeBuildInputs = [ python3 ];
+
+  configureFlags = [
+    "--with-tcl=${tcl}"
+    "--with-tk=${tk}"
+    "--disable-werror"
+  ];
+
+  postPatch = ''
+    patchShebangs scripts/*
+  '';
+
+  patches = [
+    ./0001-strip-bin-prefix.patch
+    ./0002-fix-format-security.patch
+  ];
+
+  meta = with stdenv.lib; {
+    description = "VLSI layout tool written in Tcl";
+    homepage = "http://opencircuitdesign.com/magic/";
+    license = licenses.mit;
+    maintainers = [ maintainers.dkudriavtsev ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/ngspice/default.nix b/nixpkgs/pkgs/applications/science/electronics/ngspice/default.nix
new file mode 100644
index 000000000000..951e5f66f6ee
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/ngspice/default.nix
@@ -0,0 +1,25 @@
+{stdenv, fetchurl, bison, flex
+, readline, libX11, libICE, libXaw, libXmu, libXext, libXt, fftw }:
+
+stdenv.mkDerivation rec {
+  pname = "ngspice";
+  version = "31";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/ngspice/ngspice-${version}.tar.gz";
+    sha256 = "10n2lnfrpsv4vyrirkphr4jwjjhy7i617g6za78dwirfjq63npw4";
+  };
+
+  nativeBuildInputs = [ flex bison ];
+  buildInputs = [ readline libX11 libICE libXaw libXmu libXext libXt fftw ];
+
+  configureFlags = [ "--enable-x" "--with-x" "--with-readline" "--enable-xspice" "--enable-cider" ];
+
+  meta = with stdenv.lib; {
+    description = "The Next Generation Spice (Electronic Circuit Simulator)";
+    homepage = "http://ngspice.sourceforge.net";
+    license = with licenses; [ "BSD" gpl2 ];
+    maintainers = with maintainers; [ bgamari rongcuid ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/pcb/default.nix b/nixpkgs/pkgs/applications/science/electronics/pcb/default.nix
new file mode 100644
index 000000000000..4309f52e8b15
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/pcb/default.nix
@@ -0,0 +1,65 @@
+{ stdenv
+, fetchurl
+, pkgconfig
+, gtk2
+, bison
+, intltool
+, flex
+, netpbm
+, imagemagick
+, dbus
+, xlibsWrapper
+, libGLU
+, libGL
+, shared-mime-info
+, tcl
+, tk
+, gnome2
+, gd
+, xorg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "pcb";
+  version = "4.2.2";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/pcb/${pname}-${version}.tar.gz";
+    sha256 = "0pbfyfadbia1jf9ywkf02j8mfdh8c3mj390c2jdqnl70vcdszvhw";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    bison
+    intltool
+    flex
+    netpbm
+    imagemagick
+  ];
+
+  buildInputs = [
+    gtk2
+    dbus
+    xlibsWrapper
+    libGLU
+    libGL
+    tcl
+    shared-mime-info
+    tk
+    gnome2.gtkglext
+    gd
+    xorg.libXmu
+  ];
+
+  configureFlags = [
+    "--disable-update-desktop-database"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Printed Circuit Board editor";
+    homepage = "http://pcb.geda-project.org/";
+    maintainers = with maintainers; [ mog ];
+    platforms = platforms.linux;
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/pulseview/default.nix b/nixpkgs/pkgs/applications/science/electronics/pulseview/default.nix
new file mode 100644
index 000000000000..f43717389b53
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/pulseview/default.nix
@@ -0,0 +1,30 @@
+{ mkDerivation, lib, fetchurl, pkgconfig, cmake, glib, boost, libsigrok
+, libsigrokdecode, libserialport, libzip, udev, libusb1, libftdi1, glibmm
+, pcre, librevisa, python3, qtbase, qtsvg
+}:
+
+mkDerivation rec {
+  pname = "pulseview";
+  version = "0.4.1";
+
+  src = fetchurl {
+    url = "https://sigrok.org/download/source/pulseview/${pname}-${version}.tar.gz";
+    sha256 = "0bvgmkgz37n2bi9niskpl05hf7rsj1lj972fbrgnlz25s4ywxrwy";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [
+    glib boost libsigrok libsigrokdecode libserialport libzip udev libusb1 libftdi1 glibmm
+    pcre librevisa python3
+    qtbase qtsvg
+  ];
+
+  meta = with lib; {
+    description = "Qt-based LA/scope/MSO GUI for sigrok (a signal analysis software suite)";
+    homepage = "https://sigrok.org/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ bjornfor ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/qfsm/default.nix b/nixpkgs/pkgs/applications/science/electronics/qfsm/default.nix
new file mode 100644
index 000000000000..9b6e75c77ba8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/qfsm/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, qt4, cmake, graphviz, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  name = "qfsm-0.54.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/qfsm/${name}-Source.tar.bz2";
+    sha256 = "0rl7bc5cr29ng67yij4akciyid9z7npal812ys4c3m229vjvflrb";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ qt4 cmake graphviz ];
+
+  patches = [
+    ./drop-hardcoded-prefix.patch
+    ./gcc6-fixes.patch
+  ];
+
+  hardeningDisable = [ "format" ];
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Graphical editor for finite state machines";
+    homepage = "http://qfsm.sourceforge.net/";
+    license = stdenv.lib.licenses.gpl3Plus;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/qfsm/drop-hardcoded-prefix.patch b/nixpkgs/pkgs/applications/science/electronics/qfsm/drop-hardcoded-prefix.patch
new file mode 100644
index 000000000000..965d67ac5526
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/qfsm/drop-hardcoded-prefix.patch
@@ -0,0 +1,20 @@
+diff -ubrw qfsm-0.53.0-Source-orig/CMakeLists.txt qfsm-0.53.0-Source-new/CMakeLists.txt
+--- qfsm-0.53.0-Source-orig/CMakeLists.txt	2012-11-11 20:13:01.935856229 +0100
++++ qfsm-0.53.0-Source-new/CMakeLists.txt	2012-11-11 20:13:24.962930007 +0100
+@@ -406,10 +406,6 @@
+ 
+ 
+ IF(UNIX AND NOT WIN32)
+-  SET(CMAKE_INSTALL_PREFIX "/usr")
+-ENDIF(UNIX AND NOT WIN32)
+-
+-IF(UNIX AND NOT WIN32)
+   ADD_DEFINITIONS(-DQFSM_LANGUAGE_DIR="${CMAKE_INSTALL_PREFIX}/share/qfsm/")
+   ADD_DEFINITIONS(-DQFSM_HELP_DIR="${CMAKE_INSTALL_PREFIX}/share/doc/qfsm/")
+ ELSE(UNIX AND NOT WIN32)
+@@ -472,5 +468,3 @@
+     )
+ 
+ ENDIF(UNIX AND NOT WIN32)
+-
+-
diff --git a/nixpkgs/pkgs/applications/science/electronics/qfsm/gcc6-fixes.patch b/nixpkgs/pkgs/applications/science/electronics/qfsm/gcc6-fixes.patch
new file mode 100644
index 000000000000..5cedc6476397
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/qfsm/gcc6-fixes.patch
@@ -0,0 +1,20 @@
+--- qfsm-0.54.0-Source-orig/src/FileIO.cpp	2015-01-02 19:01:46.000000000 +0100
++++ qfsm-0.54.0-Source/src/FileIO.cpp	2017-09-11 19:53:30.579488402 +0200
+@@ -1617,7 +1617,7 @@
+   QString ext;
+ 
+   if (!imp)
+-    return FALSE;
++    return NULL;
+ 
+   Project* p=NULL;
+   importdlg->setAcceptMode(QFileDialog::AcceptOpen);
+@@ -1641,7 +1641,7 @@
+   ifstream fin(act_importfile);
+ 
+   if (!fin)
+-    return FALSE;
++    return NULL;
+ 
+   emit setWaitCursor();
+ 
diff --git a/nixpkgs/pkgs/applications/science/electronics/qucs/cmakelists.patch b/nixpkgs/pkgs/applications/science/electronics/qucs/cmakelists.patch
new file mode 100644
index 000000000000..27066f09c84e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/qucs/cmakelists.patch
@@ -0,0 +1,34 @@
+diff --git i/qucs-core/CMakeLists.txt w/qucs-core/CMakeLists.txt
+index 2dbbd41..d174b50 100644
+--- i/qucs-core/CMakeLists.txt
++++ w/qucs-core/CMakeLists.txt
+@@ -158,26 +158,9 @@ ENDIF()
+ 
+ #
+ # Need Bison
+-#
+-# This is a HACK to get arround a PATH issue with Qt Creator on OSX.
+-# It seams impossible to pass a custom PATH to Qt Creator on OSX, ie, cannot prepend `/usr/local/bin/` for intance.
+-# The FIND_PACKAGE fails. For now we provide a fallback with a custom FIND_PROGRAM. The variable BISON_DIR is also available.
+-IF(WIN32)
+-  FIND_PACKAGE(BISON 2.4 REQUIRED)
+-  IF(BISON_FOUND)
+-    #MESSAGE(STATUS "Found bison: ${BISON_EXECUTABLE} / Version: ${BISON_VERSION}" )
+-  ENDIF()
+-ELSE()  # Linux, OSX
+-  # use -DBISON_DIR=/path/ to provide the path to bison
+-  FIND_PROGRAM( BISON_EXECUTABLE bison
+-    PATHS /usr/local/bin/ /opt/local/bin/ /usr/bin ${BISON_DIR}
+-    DOC "bison path"
+-    NO_DEFAULT_PATH )
+-  IF(BISON_EXECUTABLE )
+-    MESSAGE(STATUS "Found bison: " ${BISON_EXECUTABLE})
+-  ELSE()
+-	  MESSAGE(FATAL_ERROR "Unable to find bison. Try to provide -DBISON_DIR=[path]")
+-  ENDIF()
++FIND_PACKAGE(BISON 2.4 REQUIRED)
++IF(BISON_FOUND)
++  #MESSAGE(STATUS "Found bison: ${BISON_EXECUTABLE} / Version: ${BISON_VERSION}" )
+ ENDIF()
+ 
+ #
diff --git a/nixpkgs/pkgs/applications/science/electronics/qucs/default.nix b/nixpkgs/pkgs/applications/science/electronics/qucs/default.nix
new file mode 100644
index 000000000000..62a9ae8b73be
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/qucs/default.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchFromGitHub, flex, bison, qt4, libX11, cmake, gperf, adms }:
+
+stdenv.mkDerivation rec {
+  version = "0.0.19";
+  pname = "qucs";
+
+  src = fetchFromGitHub {
+    owner = "Qucs";
+    repo = "qucs";
+    rev = "qucs-${version}";
+    sha256 = "106h3kjyg7c0hkmzkin7h8fcl32n60835121b2qqih8ixi6r5id6";
+  };
+
+  QTDIR=qt4;
+
+  patches = [
+    ./cmakelists.patch
+  ];
+
+  buildInputs = [ flex bison qt4 libX11 cmake gperf adms ];
+
+  meta = {
+    description = "Integrated circuit simulator";
+    homepage = "http://qucs.sourceforge.net";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/tkgate/1.x.nix b/nixpkgs/pkgs/applications/science/electronics/tkgate/1.x.nix
new file mode 100644
index 000000000000..e6f912616034
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/tkgate/1.x.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, tcl, tk, libX11, glibc, which, yacc, flex, imake, xorgproto, gccmakedep }:
+
+let
+  libiconvInc = stdenv.lib.optionalString stdenv.isLinux "${glibc.dev}/include";
+  libiconvLib = stdenv.lib.optionalString stdenv.isLinux "${glibc.out}/lib";
+in
+stdenv.mkDerivation rec {
+  name = "tkgate-1.8.7";
+
+  src = fetchurl {
+    url = "http://www.tkgate.org/downloads/${name}.tgz";
+    sha256 = "1pqywkidfpdbj18i03h97f4cimld4fb3mqfy8jjsxs12kihm18fs";
+  };
+
+  nativeBuildInputs = [ which yacc flex imake gccmakedep ];
+  buildInputs = [ tcl tk libX11 xorgproto ];
+  dontUseImakeConfigure = true;
+
+  patchPhase = ''
+    sed -i config.h \
+      -e 's|.*#define.*TKGATE_TCLTK_VERSIONS.*|#define TKGATE_TCLTK_VERSIONS "${tcl.release}"|' \
+      -e 's|.*#define.*TKGATE_INCDIRS.*|#define TKGATE_INCDIRS "${tcl}/include ${tk}/include ${libiconvInc} ${libX11.dev}/include"|' \
+      -e 's|.*#define.*TKGATE_LIBDIRS.*|#define TKGATE_LIBDIRS "${tcl}/lib ${tk}/lib ${libiconvLib} ${libX11.out}/lib"|' \
+      \
+      -e '20 i #define TCL_LIBRARY "${tcl}/lib"' \
+      -e '20 i #define TK_LIBRARY "${tk}/lib/${tk.libPrefix}"' \
+      -e '20 i #define USE_ICONV 1' \
+      \
+      -e "s|.*#define.*TKGATE_HOMEDIRBASE.*|#define TKGATE_HOMEDIRBASE \\\"$out/lib\\\"|" \
+      -e "s|.*#define.*TKGATE_BINDIR.*|#define TKGATE_BINDIR \\\"$out/bin\\\"|" \
+      -e "s|.*#define.*TKGATE_MANDIR.*|#define TKGATE_MANDIR \\\"$out/share/man/man1\\\"|" \
+      -e "s|file:/usr/X11R6/lib/tkgate-|file://$out/lib/tkgate-|"
+  '';
+
+  meta = {
+    description = "Event driven digital circuit simulator with a TCL/TK-based graphical editor";
+    homepage = "http://www.tkgate.org/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [ stdenv.lib.maintainers.peti ];
+    hydraPlatforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/verilator/default.nix b/nixpkgs/pkgs/applications/science/electronics/verilator/default.nix
new file mode 100644
index 000000000000..0613e22bbda0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/verilator/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, perl, flex, bison }:
+
+stdenv.mkDerivation rec {
+  pname = "verilator";
+  version = "4.036";
+
+  src = fetchurl {
+    url    = "https://www.veripool.org/ftp/${pname}-${version}.tgz";
+    sha256 = "1sy02pgq3kvk8548l57hsh08vfbqdg8dghj8mwlybdi8fdjz4z1h";
+  };
+
+  enableParallelBuilding = true;
+  buildInputs = [ perl flex bison ];
+
+  meta = {
+    description = "Fast and robust (System)Verilog simulator/compiler";
+    homepage    = "https://www.veripool.org/wiki/verilator";
+    license     = stdenv.lib.licenses.lgpl3;
+    platforms   = stdenv.lib.platforms.unix;
+    maintainers = with stdenv.lib.maintainers; [ thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/verilog/default.nix b/nixpkgs/pkgs/applications/science/electronics/verilog/default.nix
new file mode 100644
index 000000000000..fa1efe299829
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/verilog/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub, autoconf, gperf, flex, bison, readline, ncurses
+, bzip2, zlib
+}:
+
+stdenv.mkDerivation rec {
+  pname = "iverilog";
+  version = "unstable-2019-08-01";
+
+  src = fetchFromGitHub {
+    owner  = "steveicarus";
+    repo = pname;
+    rev    = "c383d2048c0bd15f5db083f14736400546fb6215";
+    sha256 = "1zs0gyhws0qa315magz3w5m45v97knczdgbf2zn4d7bdb7cv417c";
+  };
+
+  enableParallelBuilding = true;
+
+  prePatch = ''
+    substituteInPlace configure.in \
+      --replace "AC_CHECK_LIB(termcap, tputs)" "AC_CHECK_LIB(termcap, tputs)"
+  '';
+
+  preConfigure = ''
+    chmod +x $PWD/autoconf.sh
+    $PWD/autoconf.sh
+  '';
+
+  nativeBuildInputs = [ autoconf gperf flex bison ];
+
+  buildInputs = [ readline ncurses bzip2 zlib ];
+
+  meta = with stdenv.lib; {
+    description = "Icarus Verilog compiler";
+    repositories.git = "https://github.com/steveicarus/iverilog.git";
+    homepage = "http://iverilog.icarus.com/";
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ winden ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/xcircuit/default.nix b/nixpkgs/pkgs/applications/science/electronics/xcircuit/default.nix
new file mode 100644
index 000000000000..52fe9b037414
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/xcircuit/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, autoreconfHook, automake, pkgconfig
+, cairo, ghostscript, ngspice, tcl, tk, xorg, zlib }:
+
+let
+  version = "3.10.12";
+  name = "xcircuit-${version}";
+  inherit (stdenv.lib) getBin;
+
+in stdenv.mkDerivation {
+  inherit name version;
+
+  src = fetchurl {
+    url = "http://opencircuitdesign.com/xcircuit/archive/${name}.tgz";
+    sha256 = "1h1ywc3mr7plvwnhdii2zgnnv5ih2nhyl4qbdjpi83dq0aq1s2mn";
+  };
+
+  nativeBuildInputs = [ autoreconfHook automake pkgconfig ];
+  hardeningDisable = [ "format" ];
+
+  configureFlags = [
+    "--with-tcl=${tcl}/lib"
+    "--with-tk=${tk}/lib"
+    "--with-ngspice=${getBin ngspice}/bin/ngspice"
+  ];
+
+  buildInputs = with xorg; [ cairo ghostscript libSM libXt libICE libX11 libXpm tcl tk zlib ];
+
+  meta = with stdenv.lib; {
+    description = "Generic drawing program tailored to circuit diagrams";
+    homepage = "http://opencircuitdesign.com/xcircuit";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ spacefrogg thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/xoscope/default.nix b/nixpkgs/pkgs/applications/science/electronics/xoscope/default.nix
new file mode 100644
index 000000000000..f8a68f31f464
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/xoscope/default.nix
@@ -0,0 +1,24 @@
+{stdenv, fetchurl, gtk2, pkgconfig}:
+
+stdenv.mkDerivation rec {
+  name = "xoscope-2.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/xoscope/${name}.tgz";
+    sha256 = "00xlvvqyw6l1ljbsx1vgx2v1jfh0xacz1a0yhq1dj6yxf5wh58x8";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gtk2 ];
+
+  # from: https://aur.archlinux.org/packages.php?ID=12140&detail=1
+  patches = [ ./gtkdepre.diff ];
+
+  meta = {
+    description = "Oscilloscope through the sound card";
+    homepage = "http://xoscope.sourceforge.net";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/electronics/xoscope/gtkdepre.diff b/nixpkgs/pkgs/applications/science/electronics/xoscope/gtkdepre.diff
new file mode 100644
index 000000000000..993df9cb5503
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/xoscope/gtkdepre.diff
@@ -0,0 +1,58 @@
+diff -ru xoscope-2.0-old//gtkdatabox-0.6.0.0/gtk/gtkdatabox.c xoscope-2.0/gtkdatabox-0.6.0.0/gtk/gtkdatabox.c
+--- xoscope-2.0-old//gtkdatabox-0.6.0.0/gtk/gtkdatabox.c	2010-06-07 10:42:24.000000000 +0200
++++ xoscope-2.0/gtkdatabox-0.6.0.0/gtk/gtkdatabox.c	2010-06-07 10:45:40.000000000 +0200
+@@ -661,7 +661,7 @@
+ static void
+ gtk_databox_calculate_hcanvas (GtkDatabox *box)
+ {
+-   if (!GTK_WIDGET_VISIBLE (box))
++   if (!gtk_widget_get_visible (box))
+       return;
+    
+    if (box->priv->adjX->page_size == 1.0)
+@@ -698,7 +698,7 @@
+ static void
+ gtk_databox_calculate_vcanvas (GtkDatabox *box)
+ {
+-   if (!GTK_WIDGET_VISIBLE (box))
++   if (!gtk_widget_get_visible (box))
+       return;
+    
+    if (box->priv->adjY->page_size == 1.0)
+@@ -780,7 +780,7 @@
+    gtk_databox_draw (box, event);
+ 
+    gdk_draw_drawable (widget->window,
+-                      widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
++                      widget->style->fg_gc[gtk_widget_get_state (widget)],
+                       box->priv->canvas.pixmap, event->area.x, event->area.y,
+                       event->area.x, event->area.y, event->area.width,
+                       event->area.height);
+@@ -940,7 +940,7 @@
+    GtkWidget *widget = GTK_WIDGET (box);
+ 
+    g_return_if_fail (GTK_IS_DATABOX (box));
+-   g_return_if_fail (GTK_WIDGET_VISIBLE (widget));
++   g_return_if_fail (gtk_widget_get_visible (widget));
+ 
+    gdk_draw_rectangle (box->priv->canvas.pixmap, widget->style->bg_gc[0], 
+                        TRUE, 0, 0,
+@@ -1150,7 +1150,7 @@
+    /* Copy a part of the pixmap to the screen */
+    if (pixmapCopyRect)
+       gdk_draw_drawable (widget->window,
+-                         widget->style->fg_gc[GTK_WIDGET_STATE (box)],
++                         widget->style->fg_gc[gtk_widget_get_state (box)],
+                          box->priv->canvas.pixmap,
+                          pixmapCopyRect->x,
+                          pixmapCopyRect->y,
+--- xoscope-2.0-old//gtkdatabox-0.6.0.0/gtk/Makefile.in	2011-09-02 16:43:43.000000000 +0200
++++ xoscope-2.0/gtkdatabox-0.6.0.0/gtk/Makefile.in	2011-09-02 16:43:57.000000000 +0200
+@@ -196,7 +196,6 @@
+ 			-DG_DISABLE_DEPRECATED\
+ 			-DGDK_DISABLE_DEPRECATED\
+ 			-DGDK_PIXBUF_DISABLE_DEPRECATED\
+-			-DGTK_DISABLE_DEPRECATED\
+ 			`pkg-config gtk+-2.0 --cflags`
+ 
+ all: all-am
diff --git a/nixpkgs/pkgs/applications/science/geometry/drgeo/default.nix b/nixpkgs/pkgs/applications/science/geometry/drgeo/default.nix
new file mode 100644
index 000000000000..7bae3d414cbf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/geometry/drgeo/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, libglade, gtk2, guile, libxml2, perl
+, intltool, libtool, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "drgeo";
+  version = "1.1.0";
+
+  hardeningDisable = [ "format" ];
+
+  src = fetchurl {
+    url = "mirror://sourceforge/ofset/${pname}-${version}.tar.gz";
+    sha256 = "05i2czgzhpzi80xxghinvkyqx4ym0gm9f38fz53idjhigiivp4wc";
+  };
+  patches = [ ./struct.patch ];
+
+  buildInputs = [libglade gtk2 guile libxml2
+    perl intltool libtool pkgconfig];
+
+  prebuild = ''
+    cp drgeo.desktop.in drgeo.desktop
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Interactive geometry program";
+    homepage = "https://sourceforge.net/projects/ofset";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/geometry/drgeo/struct.patch b/nixpkgs/pkgs/applications/science/geometry/drgeo/struct.patch
new file mode 100644
index 000000000000..7364cae5f58d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/geometry/drgeo/struct.patch
@@ -0,0 +1,68 @@
+-- drgeo-1.1.0/debian/patches/00list
+++ drgeo-1.1.0/debian/patches/00list
+@ -7 +7 @@
+
+07-fix_ftbfs-gcc-4.5.dpatch
+nly in patch2:
+nchanged:
+-- drgeo-1.1.0.orig/debian/patches/07-fix_ftbfs-gcc-4.5.dpatch
+++ drgeo-1.1.0/debian/patches/07-fix_ftbfs-gcc-4.5.dpatch
+@ -0,0 +1,58 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 07-fix_ftbfs-gcc-4.5.dpatch by Fabrice Coutadeur <fabric...@ubuntu.com>
+##
+## Description: fix FTBFS with gcc 4.5 with undefined reference to
+## `drgeoDialogData'
+## Author: Petr Gajdos <pgaj...@suse.cz>
+## Origin: https://build.opensuse.org/package/files?package=drgeo&project=openSUSE%3A11.3%3AContrib
+
+...@dpatch@
+diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' drgeo-1.1.0~/geo/drgeo_dialog.cc drgeo-1.1.0/geo/drgeo_dialog.cc
+--- drgeo-1.1.0~/geo/drgeo_dialog.cc	2003-10-27 10:17:25.000000000 +0000
++++ drgeo-1.1.0/geo/drgeo_dialog.cc	2010-11-13 07:26:03.258908003 +0000
+@@ -38,12 +38,7 @@
+ // Used in the style dialod callback, I know it's ugly, but so easy
+ static drgeoFigure *selected_figure;
+ 
+-struct
+-{
+-  drgeoPoint mouse;
+-  drgeoFigure *figure;
+-}
+-drgeoDialogData;
++DialogData drgeoDialogData;
+ 
+ 
+ static void drgeo_edit_dialog_cb (GtkWidget * dialog,
+diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' drgeo-1.1.0~/geo/drgeo_dialog.h drgeo-1.1.0/geo/drgeo_dialog.h
+--- drgeo-1.1.0~/geo/drgeo_dialog.h	2003-06-12 22:30:23.000000000 +0000
++++ drgeo-1.1.0/geo/drgeo_dialog.h	2010-11-13 07:26:03.258908003 +0000
+@@ -34,4 +34,11 @@
+ }
+ 
+ #endif				/* __cplusplus */
++
++typedef struct
++{
++  drgeoPoint mouse;
++  drgeoFigure *figure;
++} DialogData;
++
+ #endif
+diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' drgeo-1.1.0~/geo/drgeo_figure.cc drgeo-1.1.0/geo/drgeo_figure.cc
+--- drgeo-1.1.0~/geo/drgeo_figure.cc	2005-07-14 07:30:01.000000000 +0000
++++ drgeo-1.1.0/geo/drgeo_figure.cc	2010-11-13 07:26:03.258908003 +0000
+@@ -48,12 +48,7 @@
+ #include "drgeo_dialog.h"
+ #include "traite.h"
+ 
+-extern struct
+-{
+-  drgeoPoint mouse;
+-  drgeoFigure *figure;
+-}
+-drgeoDialogData;
++extern DialogData drgeoDialogData;
+ 
+ typedef struct drgeoSearchValue
+ {
diff --git a/nixpkgs/pkgs/applications/science/geometry/tetgen/1.4.nix b/nixpkgs/pkgs/applications/science/geometry/tetgen/1.4.nix
new file mode 100644
index 000000000000..9dd254736834
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/geometry/tetgen/1.4.nix
@@ -0,0 +1,22 @@
+{stdenv, fetchurl}:
+
+stdenv.mkDerivation rec {
+  name = "tetgen-1.4.3";
+
+  src = fetchurl {
+    url = "${meta.homepage}/files/tetgen1.4.3.tar.gz";
+    sha256 = "0d70vjqdapmy1ghlsxjlvl5z9yp310zw697bapc4zxmp0sxi29wm";
+  };
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp tetgen $out/bin
+  '';
+
+  meta = {
+    description = "Quality Tetrahedral Mesh Generator and 3D Delaunay Triangulator";
+    homepage = "http://tetgen.org/";
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/geometry/tetgen/default.nix b/nixpkgs/pkgs/applications/science/geometry/tetgen/default.nix
new file mode 100644
index 000000000000..d12e8e35844f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/geometry/tetgen/default.nix
@@ -0,0 +1,25 @@
+{stdenv, fetchurl}: 
+
+let version = "1.5.1"; in
+stdenv.mkDerivation {
+  pname = "tetgen";
+  inherit version;
+
+  src = fetchurl {
+    url = "http://wias-berlin.de/software/tetgen/1.5/src/tetgen${version}.tar.gz";
+    sha256 = "0l5q066crs4cjj7qr0r2gnz8ajkgighngwglr1201h77lcs48sp4";
+  };
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp tetgen $out/bin
+  '';
+
+  meta = {
+    inherit version;
+    description = "Quality Tetrahedral Mesh Generator and 3D Delaunay Triangulator";
+    homepage = "http://tetgen.org/";
+    license = stdenv.lib.licenses.agpl3Plus;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/abc/default.nix b/nixpkgs/pkgs/applications/science/logic/abc/default.nix
new file mode 100644
index 000000000000..0bad0046e939
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/abc/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub
+, readline, cmake
+}:
+
+stdenv.mkDerivation rec {
+  pname   = "abc-verifier";
+  version = "2020.04.30";
+
+  src = fetchFromGitHub {
+    owner  = "berkeley-abc";
+    repo   = "abc";
+    rev    = "fd2c9b1c19216f6b756f88b18f5ca67b759ca128";
+    sha256 = "1d18pkpsx0nlzl3a6lyfdnpk4kixjmgswy6cp5fbrkpp4rf1gahi";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ readline ];
+
+  enableParallelBuilding = true;
+  installPhase = "mkdir -p $out/bin && mv abc $out/bin";
+
+  # needed by yosys
+  passthru.rev = src.rev;
+
+  meta = with stdenv.lib; {
+    description = "A tool for squential logic synthesis and formal verification";
+    homepage    = "https://people.eecs.berkeley.edu/~alanmi/abc";
+    license     = licenses.mit;
+    platforms   = platforms.unix;
+    maintainers = with maintainers; [ thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/abella/default.nix b/nixpkgs/pkgs/applications/science/logic/abella/default.nix
new file mode 100644
index 000000000000..3d9a2e9bd67b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/abella/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, rsync, ocamlPackages }:
+
+stdenv.mkDerivation rec {
+  pname = "abella";
+  version = "2.0.6";
+
+  src = fetchurl {
+    url = "http://abella-prover.org/distributions/${pname}-${version}.tar.gz";
+    sha256 = "164q9gngckg6q69k13lwx2pq3cnc9ckw1qi8dnpxqfjgwfqr7xyi";
+  };
+
+  buildInputs = [ rsync ] ++ (with ocamlPackages; [ ocaml ocamlbuild findlib ]);
+
+  installPhase = ''
+    mkdir -p $out/bin
+    rsync -av abella    $out/bin/
+
+    mkdir -p $out/share/emacs/site-lisp/abella/
+    rsync -av emacs/    $out/share/emacs/site-lisp/abella/
+
+    mkdir -p $out/share/abella/examples
+    rsync -av examples/ $out/share/abella/examples/
+  '';
+
+  meta = {
+    description = "Interactive theorem prover";
+    longDescription = ''
+      Abella is an interactive theorem prover based on lambda-tree syntax.
+      This means that Abella is well-suited for reasoning about the meta-theory
+      of programming languages and other logical systems which manipulate
+      objects with binding.
+    '';
+    homepage = "http://abella-prover.org/";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = with stdenv.lib.maintainers; [ bcdarwin ciil ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/acgtk/default.nix b/nixpkgs/pkgs/applications/science/logic/acgtk/default.nix
new file mode 100644
index 000000000000..ccd080005076
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/acgtk/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, dune, ocamlPackages }:
+
+stdenv.mkDerivation {
+
+  pname = "acgtk";
+  version = "1.5.1";
+
+  src = fetchurl {
+    url = "https://acg.loria.fr/software/acg-1.5.1-20191113.tar.gz";
+    sha256 = "17595qfwhzz5q091ak6i6bg5wlppbn8zfn58x3hmmmjvx2yfajn1";
+  };
+
+  buildInputs = [ dune ] ++ (with ocamlPackages; [
+    ocaml findlib ansiterminal cairo2 cmdliner fmt logs menhir mtime yojson
+  ]);
+
+  buildPhase = "dune build";
+
+  inherit (dune) installPhase;
+
+  meta = with stdenv.lib; {
+    homepage = "https://acg.loria.fr/";
+    description = "A toolkit for developing ACG signatures and lexicon";
+    license = licenses.cecill20;
+    inherit (ocamlPackages.ocaml.meta) platforms;
+    maintainers = [ maintainers.jirkamarsik ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/aiger/default.nix b/nixpkgs/pkgs/applications/science/logic/aiger/default.nix
new file mode 100644
index 000000000000..aa5a59ed298a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/aiger/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchurl, picosat }:
+
+stdenv.mkDerivation rec {
+  pname = "aiger";
+  version = "1.9.9";
+
+  src = fetchurl {
+    url    = "http://fmv.jku.at/aiger/${pname}-${version}.tar.gz";
+    sha256 = "1ish0dw0nf9gyghxsdhpy1jjiy5wp54c993swp85xp7m6vdx6l0y";
+  };
+
+  enableParallelBuilding = true;
+
+  configurePhase = ''
+    # Set up picosat, so we can build 'aigbmc'
+    mkdir ../picosat
+    ln -s ${picosat}/include/picosat/picosat.h ../picosat/picosat.h
+    ln -s ${picosat}/lib/picosat.o             ../picosat/picosat.o
+    ln -s ${picosat}/share/picosat.version     ../picosat/VERSION
+    ./configure.sh
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin $dev/include $lib/lib
+
+    # Do the installation manually, as the Makefile has odd
+    # cyrillic characters, and this is easier than adding
+    # a whole .patch file.
+    BINS=( \
+      aigand aigdd aigflip aigfuzz aiginfo aigjoin   \
+      aigmiter aigmove aignm aigor aigreset aigsim   \
+      aigsplit aigstrip aigtoaig aigtoblif aigtocnf  \
+      aigtodot aigtosmv aigunconstraint aigunroll    \
+      andtoaig bliftoaig smvtoaig soltostim wrapstim \
+      aigbmc aigdep
+    )
+
+    for x in ''${BINS[*]}; do
+      install -m 755 -s $x $out/bin/$x
+    done
+
+    cp -v aiger.o $lib/lib
+    cp -v aiger.h $dev/include
+  '';
+
+  outputs = [ "out" "dev" "lib" ];
+
+  meta = {
+    description = "And-Inverter Graph (AIG) utilities";
+    homepage    = "http://fmv.jku.at/aiger/";
+    license     = stdenv.lib.licenses.mit;
+    maintainers = with stdenv.lib.maintainers; [ thoughtpolice ];
+    platforms   = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/alt-ergo/default.nix b/nixpkgs/pkgs/applications/science/logic/alt-ergo/default.nix
new file mode 100644
index 000000000000..e396f1c4a91a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/alt-ergo/default.nix
@@ -0,0 +1,47 @@
+{ fetchurl, lib, which, ocamlPackages }:
+
+let
+  pname = "alt-ergo";
+  version = "2.3.2";
+
+  src = fetchurl {
+    url = "https://alt-ergo.ocamlpro.com/http/alt-ergo-${version}/alt-ergo-${version}.tar.gz";
+    sha256 = "130hisjzkaslygipdaaqib92spzx9rapsd45dbh5ssczjn5qnhb9";
+  };
+
+  preConfigure = "patchShebangs ./configure";
+
+  nativeBuildInputs = [ which ];
+
+in
+
+let alt-ergo-lib = ocamlPackages.buildDunePackage rec {
+  pname = "alt-ergo-lib";
+  inherit version src preConfigure nativeBuildInputs;
+  configureFlags = pname;
+  propagatedBuildInputs = with ocamlPackages; [ num ocplib-simplex stdlib-shims zarith ];
+}; in
+
+let alt-ergo-parsers = ocamlPackages.buildDunePackage rec {
+  pname = "alt-ergo-parsers";
+  inherit version src preConfigure nativeBuildInputs;
+  configureFlags = pname;
+  buildInputs = with ocamlPackages; [ menhir ];
+  propagatedBuildInputs = [ alt-ergo-lib ] ++ (with ocamlPackages; [ camlzip psmt2-frontend ]);
+}; in
+
+ocamlPackages.buildDunePackage {
+
+  inherit pname version src preConfigure nativeBuildInputs;
+
+  configureFlags = pname;
+
+  buildInputs = [ alt-ergo-parsers ocamlPackages.menhir ];
+
+  meta = {
+    description = "High-performance theorem prover and SMT solver";
+    homepage    = "https://alt-ergo.ocamlpro.com/";
+    license     = lib.licenses.ocamlpro_nc;
+    maintainers = [ lib.maintainers.thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/aspino/default.nix b/nixpkgs/pkgs/applications/science/logic/aspino/default.nix
new file mode 100644
index 000000000000..c1cf9034c02a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/aspino/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchurl, fetchFromGitHub, zlib, boost }:
+
+let
+  glucose' = fetchurl {
+    url = "http://www.labri.fr/perso/lsimon/downloads/softwares/glucose-syrup.tgz";
+    sha256 = "0bq5l2jabhdfhng002qfk0mcj4pfi1v5853x3c7igwfrgx0jmfld";
+  };
+in
+
+stdenv.mkDerivation {
+  name = "aspino-unstable-2017-03-09";
+
+  src = fetchFromGitHub {
+    owner = "alviano";
+    repo = "aspino";
+    rev = "e31c3b4e5791a454e6602439cb26bd98d23c4e78";
+    sha256 = "0annsjs2prqmv1lbs0lxr7yclfzh47xg9zyiq6mdxcc02rxsi14f";
+  };
+
+  buildInputs = [ zlib boost ];
+
+  postPatch = ''
+    substituteInPlace Makefile \
+      --replace "GCC = g++" "GCC = c++"
+
+    patchShebangs .
+  '';
+
+  preBuild = ''
+    cp ${glucose'} patches/glucose-syrup.tgz
+    ./bootstrap.sh
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/bin
+    install -m0755 build/release/{aspino,fairino-{bs,ls,ps},maxino-2015-{k16,kdyn}} $out/bin
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "SAT/PseudoBoolean/MaxSat/ASP solver using glucose";
+    maintainers = with maintainers; [ gebner ];
+    platforms = platforms.unix;
+    license = licenses.asl20;
+    homepage = "https://alviano.net/software/maxino/";
+    # See pkgs/applications/science/logic/glucose/default.nix
+    badPlatforms = [ "aarch64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/avy/0001-no-static-boost-libs.patch b/nixpkgs/pkgs/applications/science/logic/avy/0001-no-static-boost-libs.patch
new file mode 100644
index 000000000000..a53142faba66
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/avy/0001-no-static-boost-libs.patch
@@ -0,0 +1,12 @@
+diff --git a/avy/CMakeLists.txt b/avy/CMakeLists.txt
+index 5913076..b0453b5 100644
+--- a/avy/CMakeLists.txt
++++ b/avy/CMakeLists.txt
+@@ -23,7 +23,6 @@ if (CUSTOM_BOOST_ROOT)
+   set (Boost_NO_SYSTEM_PATHS "ON")
+ endif()
+ 
+-set (Boost_USE_STATIC_LIBS ON)
+ find_package (Boost 1.46.1 REQUIRED program_options)
+ IF (Boost_FOUND)
+   include_directories (${Boost_INCLUDE_DIRS})
diff --git a/nixpkgs/pkgs/applications/science/logic/avy/default.nix b/nixpkgs/pkgs/applications/science/logic/avy/default.nix
new file mode 100644
index 000000000000..78ed641a809a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/avy/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchgit, cmake, zlib, boost }:
+
+stdenv.mkDerivation {
+  pname = "avy";
+  version = "2017.10.16";
+
+  src = fetchgit {
+    url    = "https://bitbucket.org/arieg/extavy";
+    rev    = "c75c83379c38d6ea1046d0caee95aef77283ffe3";
+    sha256 = "0zcycnypg4q5g710bnkjpycaawmibc092vmyhgfbixkgq9fb5lfh";
+    fetchSubmodules = true;
+  };
+
+  buildInputs = [ cmake zlib boost.out boost.dev ];
+  NIX_CFLAGS_COMPILE = toString ([ "-Wno-narrowing" ]
+    # Squelch endless stream of warnings on same few things
+    ++ stdenv.lib.optionals stdenv.cc.isClang [
+      "-Wno-empty-body"
+      "-Wno-tautological-compare"
+      "-Wc++11-compat-deprecated-writable-strings"
+      "-Wno-deprecated"
+    ]);
+
+  prePatch = ''
+    sed -i -e '1i#include <stdint.h>' abc/src/bdd/dsd/dsd.h
+    substituteInPlace abc/src/bdd/dsd/dsd.h --replace \
+               '((Child = Dsd_NodeReadDec(Node,Index))>=0);' \
+               '((intptr_t)(Child = Dsd_NodeReadDec(Node,Index))>=0);'
+
+    patch -p1 -d minisat -i ${./minisat-fenv.patch}
+    patch -p1 -d glucose -i ${./glucose-fenv.patch}
+  '';
+
+  patches =
+    [ ./0001-no-static-boost-libs.patch
+    ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp avy/src/{avy,avybmc} $out/bin/
+  '';
+
+  meta = {
+    description = "AIGER model checking for Property Directed Reachability";
+    homepage    = "https://arieg.bitbucket.io/avy/";
+    license     = stdenv.lib.licenses.mit;
+    maintainers = with stdenv.lib.maintainers; [ thoughtpolice ];
+    platforms   = stdenv.lib.platforms.linux;
+    # See pkgs/applications/science/logic/glucose/default.nix
+    # (The error is different due to glucose-fenv.patch, but the same)
+    badPlatforms = [ "aarch64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/avy/glucose-fenv.patch b/nixpkgs/pkgs/applications/science/logic/avy/glucose-fenv.patch
new file mode 100644
index 000000000000..dd19f7ec80e7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/avy/glucose-fenv.patch
@@ -0,0 +1,65 @@
+From d6e0cb60270e8653bda3f339e3a07ce2cd2d6eb0 Mon Sep 17 00:00:00 2001
+From: Will Dietz <w@wdtz.org>
+Date: Tue, 17 Oct 2017 23:01:36 -0500
+Subject: [PATCH] glucose: use fenv to set double precision
+
+---
+ core/Main.cc   | 8 ++++++--
+ simp/Main.cc   | 8 ++++++--
+ utils/System.h | 2 +-
+ 3 files changed, 13 insertions(+), 5 deletions(-)
+
+diff --git a/core/Main.cc b/core/Main.cc
+index c96aadd..994132b 100644
+--- a/core/Main.cc
++++ b/core/Main.cc
+@@ -96,8 +96,12 @@ int main(int argc, char** argv)
+         // printf("This is MiniSat 2.0 beta\n");
+         
+ #if defined(__linux__)
+-        fpu_control_t oldcw, newcw;
+-        _FPU_GETCW(oldcw); newcw = (oldcw & ~_FPU_EXTENDED) | _FPU_DOUBLE; _FPU_SETCW(newcw);
++        fenv_t fenv;
++
++        fegetenv(&fenv);
++        fenv.__control_word &= ~0x300; /* _FPU_EXTENDED */
++        fenv.__control_word |= 0x200; /* _FPU_DOUBLE */
++        fesetenv(&fenv);
+         printf("c WARNING: for repeatability, setting FPU to use double precision\n");
+ #endif
+         // Extra options:
+diff --git a/simp/Main.cc b/simp/Main.cc
+index 4f4772d..70c2e4b 100644
+--- a/simp/Main.cc
++++ b/simp/Main.cc
+@@ -97,8 +97,12 @@ int main(int argc, char** argv)
+         
+         
+ #if defined(__linux__)
+-        fpu_control_t oldcw, newcw;
+-        _FPU_GETCW(oldcw); newcw = (oldcw & ~_FPU_EXTENDED) | _FPU_DOUBLE; _FPU_SETCW(newcw);
++        fenv_t fenv;
++
++        fegetenv(&fenv);
++        fenv.__control_word &= ~0x300; /* _FPU_EXTENDED */
++        fenv.__control_word |= 0x200; /* _FPU_DOUBLE */
++        fesetenv(&fenv);
+         printf("WARNING: for repeatability, setting FPU to use double precision\n");
+ #endif
+         // Extra options:
+diff --git a/utils/System.h b/utils/System.h
+index 004d498..a768e99 100644
+--- a/utils/System.h
++++ b/utils/System.h
+@@ -22,7 +22,7 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWA
+ #define Glucose_System_h
+ 
+ #if defined(__linux__)
+-#include <fpu_control.h>
++#include <fenv.h>
+ #endif
+ 
+ #include "glucose/mtl/IntTypes.h"
+-- 
+2.14.2
+
diff --git a/nixpkgs/pkgs/applications/science/logic/avy/minisat-fenv.patch b/nixpkgs/pkgs/applications/science/logic/avy/minisat-fenv.patch
new file mode 100644
index 000000000000..686d5a1c5b49
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/avy/minisat-fenv.patch
@@ -0,0 +1,65 @@
+From 7f1016ceab9b0f57a935bd51ca6df3d18439b472 Mon Sep 17 00:00:00 2001
+From: Will Dietz <w@wdtz.org>
+Date: Tue, 17 Oct 2017 22:57:02 -0500
+Subject: [PATCH] use fenv instead of non-standard fpu_control
+
+---
+ core/Main.cc   | 8 ++++++--
+ simp/Main.cc   | 8 ++++++--
+ utils/System.h | 2 +-
+ 3 files changed, 13 insertions(+), 5 deletions(-)
+
+diff --git a/core/Main.cc b/core/Main.cc
+index 2b0d97b..8ad95fb 100644
+--- a/core/Main.cc
++++ b/core/Main.cc
+@@ -78,8 +78,12 @@ int main(int argc, char** argv)
+         // printf("This is MiniSat 2.0 beta\n");
+         
+ #if defined(__linux__)
+-        fpu_control_t oldcw, newcw;
+-        _FPU_GETCW(oldcw); newcw = (oldcw & ~_FPU_EXTENDED) | _FPU_DOUBLE; _FPU_SETCW(newcw);
++        fenv_t fenv;
++
++        fegetenv(&fenv);
++        fenv.__control_word &= ~0x300; /* _FPU_EXTENDED */
++        fenv.__control_word |= 0x200; /* _FPU_DOUBLE */
++        fesetenv(&fenv);
+         printf("WARNING: for repeatability, setting FPU to use double precision\n");
+ #endif
+         // Extra options:
+diff --git a/simp/Main.cc b/simp/Main.cc
+index 2804d7f..39bfb71 100644
+--- a/simp/Main.cc
++++ b/simp/Main.cc
+@@ -79,8 +79,12 @@ int main(int argc, char** argv)
+         // printf("This is MiniSat 2.0 beta\n");
+         
+ #if defined(__linux__)
+-        fpu_control_t oldcw, newcw;
+-        _FPU_GETCW(oldcw); newcw = (oldcw & ~_FPU_EXTENDED) | _FPU_DOUBLE; _FPU_SETCW(newcw);
++        fenv_t fenv;
++
++        fegetenv(&fenv);
++        fenv.__control_word &= ~0x300; /* _FPU_EXTENDED */
++        fenv.__control_word |= 0x200; /* _FPU_DOUBLE */
++        fesetenv(&fenv);
+         printf("WARNING: for repeatability, setting FPU to use double precision\n");
+ #endif
+         // Extra options:
+diff --git a/utils/System.h b/utils/System.h
+index 1758192..c0ad13a 100644
+--- a/utils/System.h
++++ b/utils/System.h
+@@ -22,7 +22,7 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWA
+ #define Minisat_System_h
+ 
+ #if defined(__linux__)
+-#include <fpu_control.h>
++#include <fenv.h>
+ #endif
+ 
+ #include "mtl/IntTypes.h"
+-- 
+2.14.2
+
diff --git a/nixpkgs/pkgs/applications/science/logic/beluga/default.nix b/nixpkgs/pkgs/applications/science/logic/beluga/default.nix
new file mode 100644
index 000000000000..44478a032b38
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/beluga/default.nix
@@ -0,0 +1,40 @@
+{ lib, fetchFromGitHub, ocamlPackages, rsync }:
+
+ocamlPackages.buildDunePackage {
+  pname = "beluga";
+  version = "unstable-2020-03-11";
+
+  src = fetchFromGitHub {
+    owner  = "Beluga-lang";
+    repo   = "Beluga";
+    rev    = "6133b2f572219333f304bb4f77c177592324c55b";
+    sha256 = "0sy6mi50z3mvs5z7dx38piydapk89all81rh038x3559b5fsk68q";
+  };
+
+  useDune2 = true;
+
+  buildInputs = with ocamlPackages; [
+    gen sedlex_2 ocaml_extlib dune-build-info linenoise
+  ];
+
+  postPatch = ''
+    patchShebangs ./TEST ./run_harpoon_test.sh
+  '';
+
+  checkPhase = "./TEST";
+  checkInputs = [ rsync ];
+  doCheck = true;
+
+  postInstall = ''
+    mkdir -p $out/share/emacs/site-lisp/beluga/
+    cp -r tools/beluga-mode.el $out/share/emacs/site-lisp/beluga
+  '';
+
+  meta = with lib; {
+    description = "A functional language for reasoning about formal systems";
+    homepage    = "http://complogic.cs.mcgill.ca/beluga/";
+    license     = licenses.gpl3Plus;
+    maintainers = [ maintainers.bcdarwin ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/boolector/cmake-gtest.patch b/nixpkgs/pkgs/applications/science/logic/boolector/cmake-gtest.patch
new file mode 100644
index 000000000000..61a64d3abbbf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/boolector/cmake-gtest.patch
@@ -0,0 +1,16 @@
+diff --git a/cmake/googletest-download.cmake b/cmake/googletest-download.cmake
+index 0ec4d558..d0910313 100644
+--- a/cmake/googletest-download.cmake
++++ b/cmake/googletest-download.cmake
+@@ -9,10 +9,7 @@ ExternalProject_Add(
+   googletest
+   SOURCE_DIR "@GOOGLETEST_DOWNLOAD_ROOT@/googletest-src"
+   BINARY_DIR "@GOOGLETEST_DOWNLOAD_ROOT@/googletest-build"
+-  GIT_REPOSITORY
+-    https://github.com/google/googletest.git
+-  GIT_TAG
+-    release-1.10.0
++  URL REPLACEME
+   CONFIGURE_COMMAND ""
+   BUILD_COMMAND ""
+   INSTALL_COMMAND ""
diff --git a/nixpkgs/pkgs/applications/science/logic/boolector/default.nix b/nixpkgs/pkgs/applications/science/logic/boolector/default.nix
new file mode 100644
index 000000000000..aedc8e3484a9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/boolector/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, fetchFromGitHub, lib, python3
+, cmake, lingeling, btor2tools, gtest, gmp
+}:
+
+stdenv.mkDerivation rec {
+  pname = "boolector";
+  version = "3.2.1";
+
+  src = fetchFromGitHub {
+    owner  = "boolector";
+    repo   = "boolector";
+    rev    = "refs/tags/${version}";
+    sha256 = "0jkmaw678njqgkflzj9g374yk1mci8yqvsxkrqzlifn6bwhwb7ci";
+  };
+
+  postPatch = ''
+    sed s@REPLACEME@file://${gtest.src}@ ${./cmake-gtest.patch} | patch -p1
+  '';
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ lingeling btor2tools gmp ];
+
+  cmakeFlags =
+    [ "-DBUILD_SHARED_LIBS=ON"
+      "-DUSE_LINGELING=YES"
+      "-DBtor2Tools_INCLUDE_DIR=${btor2tools.dev}/include"
+      "-DBtor2Tools_LIBRARIES=${btor2tools.lib}/lib/libbtor2parser.so"
+    ] ++ (lib.optional (gmp != null) "-DUSE_GMP=YES");
+
+  installPhase = ''
+    mkdir -p $out/bin $lib/lib $dev/include
+
+    cp -vr bin/* $out/bin
+    cp -vr lib/* $lib/lib
+
+    rm -rf $out/bin/{examples,tests}
+    # we don't care about gtest related libs
+    rm -rf $lib/lib/libg*
+
+    cd ../src
+    find . -iname '*.h' -exec cp --parents '{}' $dev/include \;
+    rm -rf $dev/include/tests
+  '';
+
+  checkInputs = [ python3 ];
+  doCheck = true;
+  preCheck = ''
+    export LD_LIBRARY_PATH=$(readlink -f lib)
+    patchShebangs ..
+  '';
+
+  outputs = [ "out" "dev" "lib" ];
+
+  meta = with stdenv.lib; {
+    description = "An extremely fast SMT solver for bit-vectors and arrays";
+    homepage    = "https://boolector.github.io";
+    license     = licenses.mit;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/btor2tools/default.nix b/nixpkgs/pkgs/applications/science/logic/btor2tools/default.nix
new file mode 100644
index 000000000000..714ab49524b0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/btor2tools/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, cmake, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "btor2tools";
+  version = "1.0.0-pre_${src.rev}";
+
+  src = fetchFromGitHub {
+    owner  = "boolector";
+    repo   = "btor2tools";
+    rev    = "9831f9909fb283752a3d6d60d43613173bd8af42";
+    sha256 = "0mfqmkgvyw8fa2c09kww107dmk180ch1hp98r5kv41vnc04iqb0s";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  installPhase = ''
+    mkdir -p $out $dev/include/btor2parser/ $lib/lib
+
+    cp -vr bin $out
+    cp -v  ../src/btor2parser/btor2parser.h $dev/include/btor2parser
+    cp -v  lib/libbtor2parser.* $lib/lib
+  '';
+
+  outputs = [ "out" "dev" "lib" ];
+
+  meta = with stdenv.lib; {
+    description = "A generic parser and tool package for the BTOR2 format";
+    homepage    = "https://github.com/Boolector/btor2tools";
+    license     = licenses.mit;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/cadical/default.nix b/nixpkgs/pkgs/applications/science/logic/cadical/default.nix
new file mode 100644
index 000000000000..6a90f50b5aa3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/cadical/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "cadical";
+  version = "1.2.1";
+
+  src = fetchFromGitHub {
+    owner = "arminbiere";
+    repo = "cadical";
+    rev = "rel-${version}";
+    sha256 = "1a66xkw42ad330fvw8i0sawrmg913m8wrq5c85lw5qandkwvxdi6";
+  };
+
+  dontAddPrefix = true;
+  installPhase = ''
+    install -Dm0755 build/cadical "$out/bin/cadical"
+    install -Dm0755 build/mobical "$out/bin/mobical"
+    mkdir -p "$out/share/doc/${pname}-${version}/"
+    install -Dm0755 {LICEN?E,README*,VERSION} "$out/share/doc/${pname}-${version}/"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simplified Satisfiability Solver";
+    maintainers = with maintainers; [ shnarazk ];
+    platforms = platforms.unix;
+    license = licenses.mit;
+    homepage = "http://fmv.jku.at/cadical";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/cedille/default.nix b/nixpkgs/pkgs/applications/science/logic/cedille/default.nix
new file mode 100644
index 000000000000..2ac96df66a68
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/cedille/default.nix
@@ -0,0 +1,52 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, alex
+, happy
+, Agda
+, buildPlatform
+, buildPackages
+, ghcWithPackages
+}:
+
+stdenv.mkDerivation rec {
+  version = "1.1.1";
+  pname = "cedille";
+
+  src = fetchFromGitHub {
+    owner = "cedille";
+    repo = "cedille";
+    rev = "v${version}";
+    sha256 = "16pc72wz6kclq9yv2r8hx85mkp0s125h12snrhcjxkbl41xx2ynb";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ alex happy ];
+  buildInputs = [ Agda (ghcWithPackages (ps: [ps.ieee])) ];
+
+  LANG = "en_US.UTF-8";
+  LOCALE_ARCHIVE =
+    lib.optionalString (buildPlatform.libc == "glibc")
+      "${buildPackages.glibcLocales}/lib/locale/locale-archive";
+
+  postPatch = ''
+    patchShebangs create-libraries.sh
+  '';
+
+  installPhase = ''
+    install -Dm755 -t $out/bin/ cedille
+    install -Dm755 -t $out/bin/ core/cedille-core
+    install -Dm644 -t $out/share/info docs/info/cedille-info-main.info
+
+    mkdir -p $out/lib/
+    cp -r lib/ $out/lib/cedille/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An interactive theorem-prover and dependently typed programming language, based on extrinsic (aka Curry-style) type theory";
+    homepage = "https://cedille.github.io/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ marsam mpickering ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/celf/default.nix b/nixpkgs/pkgs/applications/science/logic/celf/default.nix
new file mode 100644
index 000000000000..9dc20a61a4d2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/celf/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, smlnj }:
+
+stdenv.mkDerivation rec {
+  pname = "celf";
+  pversion = "2013-07-25";
+  name = "${pname}-${pversion}";
+
+  src = fetchFromGitHub {
+    owner  = "clf";
+    repo   = pname;
+    rev    = "d61d95900ab316468ae850fa34a2fe9488bc5b59";
+    sha256 = "0slrwcxglp0sdbp6wr65cdkl5wcap2i0fqxbwqfi1q3cpb6ph6hq";
+  };
+
+  buildInputs = [ smlnj ];
+
+  # (can also build with MLton)
+  buildPhase = ''
+    export SMLNJ_HOME=${smlnj}
+    sml < main-export.sml
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp .heap* $out/bin/
+    ./.mkexec ${smlnj}/bin/sml $out/bin celf
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Linear logic programming system";
+    homepage = "https://github.com/clf/celf";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ bcdarwin ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/clprover/clprover.nix b/nixpkgs/pkgs/applications/science/logic/clprover/clprover.nix
new file mode 100644
index 000000000000..e53bbe688371
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/clprover/clprover.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchzip }:
+
+stdenv.mkDerivation {
+  pname = "clprover";
+  version = "1.0.3";
+
+  src = fetchzip {
+    url = "http://cgi.csc.liv.ac.uk/~ullrich/CLProver++/CLProver++-v1.0.3-18-04-2015.zip";
+    sha256 = "10kmlg4m572qwfzi6hkyb0ypb643xw8sfb55xx7866lyh37w1q3s";
+    stripRoot = false;
+  };
+
+  installPhase = ''
+    mkdir $out
+    cp -r bin $out/bin
+    mkdir -p $out/share/clprover
+    cp -r examples $out/share/clprover/examples
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Resolution-based theorem prover for Coalition Logic implemented in C++";
+    homepage = "http://cgi.csc.liv.ac.uk/~ullrich/CLProver++/";
+    license = licenses.gpl3; # Note that while the website states that it is GPLv2 but the file in the zip as well as the comments in the source state it is GPLv3
+    maintainers = with maintainers; [ mgttlinger ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/coq/default.nix b/nixpkgs/pkgs/applications/science/logic/coq/default.nix
new file mode 100644
index 000000000000..39e7cbe7f3cc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/coq/default.nix
@@ -0,0 +1,171 @@
+# - coqide compilation can be disabled by setting buildIde to false
+# - The csdp program used for the Micromega tactic is statically referenced.
+#   However, coq can build without csdp by setting it to null.
+#   In this case some Micromega tactics will search the user's path for the csdp program and will fail if it is not found.
+# - The exact version can be specified through the `version` argument to
+#   the derivation; it defaults to the latest stable version.
+
+{ stdenv, fetchFromGitHub, writeText, pkgconfig
+, ocamlPackages, ncurses
+, buildIde ? !(stdenv.isDarwin && stdenv.lib.versionAtLeast version "8.10")
+, glib, gnome3, wrapGAppsHook
+, darwin
+, csdp ? null
+, version
+}:
+
+let
+  sha256 = {
+   "8.5pl1"    = "1976ki5xjg2r907xj9p7gs0kpdinywbwcqlgxqw75dgp0hkgi00n";
+   "8.5pl2"    = "109rrcrx7mz0fj7725kjjghfg5ydwb24hjsa5hspa27b4caah7rh";
+   "8.5pl3"    = "15c3rdk59nifzihsp97z4vjxis5xmsnrvpb86qiazj143z2fmdgw";
+   "8.6"       = "148mb48zpdax56c0blfi7v67lx014lnmrvxxasi28hsibyz2lvg4";
+   "8.6.1"     = "0llrxcxwy5j87vbbjnisw42rfw1n1pm5602ssx64xaxx3k176g6l";
+   "8.7.0"     = "1h18b7xpnx3ix9vsi5fx4zdcbxy7bhra7gd5c5yzxmk53cgf1p9m";
+   "8.7.1"     = "0gjn59jkbxwrihk8fx9d823wjyjh5m9gvj9l31nv6z6bcqhgdqi8";
+   "8.7.2"     = "0a0657xby8wdq4aqb2xsxp3n7pmc2w4yxjmrb2l4kccs1aqvaj4w";
+   "8.8.0" = "13a4fka22hdxsjk11mgjb9ffzplfxyxp1sg5v1c8nk1grxlscgw8";
+   "8.8.1" = "1hlf58gwazywbmfa48219amid38vqdl94yz21i11b4map6jfwhbk";
+   "8.8.2" = "1lip3xja924dm6qblisk1bk0x8ai24s5xxqxphbdxj6djglj68fd";
+   "8.9.0" = "1dkgdjc4n1m15m1p724hhi5cyxpqbjw6rxc5na6fl3v4qjjfnizh";
+   "8.9.1" = "1xrq6mkhpq994bncmnijf8jwmwn961kkpl4mwwlv7j3dgnysrcv2";
+   "8.10.0" = "138jw94wp4mg5dgjc2asn8ng09ayz1mxdznq342n0m469j803gzg";
+   "8.10.1" = "072v2zkjzf7gj48137wpr3c9j0hg9pdhlr5l8jrgrwynld8fp7i4";
+   "8.10.2" = "0znxmpy71bfw0p6x47i82jf5k7v41zbz9bdpn901ysn3ir8l3wrz";
+   "8.11.0" = "1rfdic6mp7acx2zfwz7ziqk12g95bl9nyj68z4n20a5bcjv2pxpn";
+   "8.11.1" = "0qriy9dy36dajsv5qmli8gd6v55mah02ya334nw49ky19v7518m0";
+   "8.11.2" = "0f77ccyxdgbf1nrj5fa8qvrk1cyfy06fv8gj9kzfvlcgn0cf48sa";
+  }.${version};
+  coq-version = stdenv.lib.versions.majorMinor version;
+  versionAtLeast = stdenv.lib.versionAtLeast coq-version;
+  ideFlags = stdenv.lib.optionalString (buildIde && !versionAtLeast "8.10")
+    "-lablgtkdir ${ocamlPackages.lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt";
+  csdpPatch = if csdp != null then ''
+    substituteInPlace plugins/micromega/sos.ml --replace "; csdp" "; ${csdp}/bin/csdp"
+    substituteInPlace plugins/micromega/coq_micromega.ml --replace "System.is_in_system_path \"csdp\"" "true"
+  '' else "";
+self = stdenv.mkDerivation {
+  pname = "coq";
+  inherit version;
+
+  passthru = {
+    inherit coq-version;
+    inherit ocamlPackages;
+    # For compatibility
+    inherit (ocamlPackages) ocaml camlp5 findlib num;
+    emacsBufferSetup = pkgs: ''
+      ; Propagate coq paths to children
+      (inherit-local-permanent coq-prog-name "${self}/bin/coqtop")
+      (inherit-local-permanent coq-dependency-analyzer "${self}/bin/coqdep")
+      (inherit-local-permanent coq-compiler "${self}/bin/coqc")
+      ; If the coq-library path was already set, re-set it based on our current coq
+      (when (fboundp 'get-coq-library-directory)
+        (inherit-local-permanent coq-library-directory (get-coq-library-directory))
+        (coq-prog-args))
+      (mapc (lambda (arg)
+        (when (file-directory-p (concat arg "/lib/coq/${coq-version}/user-contrib"))
+          (setenv "COQPATH" (concat (getenv "COQPATH") ":" arg "/lib/coq/${coq-version}/user-contrib")))) '(${stdenv.lib.concatStringsSep " " (map (pkg: "\"${pkg}\"") pkgs)}))
+      ; TODO Abstract this pattern from here and nixBufferBuilders.withPackages!
+      (defvar nixpkgs--coq-buffer-count 0)
+      (when (eq nixpkgs--coq-buffer-count 0)
+        (make-variable-buffer-local 'nixpkgs--is-nixpkgs-coq-buffer)
+        (defun nixpkgs--coq-inherit (buf)
+          (inherit-local-inherit-child buf)
+          (with-current-buffer buf
+            (setq nixpkgs--coq-buffer-count (1+ nixpkgs--coq-buffer-count))
+            (add-hook 'kill-buffer-hook 'nixpkgs--decrement-coq-buffer-count nil t))
+          buf)
+        ; When generating a scomint buffer, do inherit-local inheritance and make it a nixpkgs-coq buffer
+        (defun nixpkgs--around-scomint-make (orig &rest r)
+          (if nixpkgs--is-nixpkgs-coq-buffer
+              (progn
+                (advice-add 'get-buffer-create :filter-return #'nixpkgs--coq-inherit)
+                (apply orig r)
+                (advice-remove 'get-buffer-create #'nixpkgs--coq-inherit))
+            (apply orig r)))
+        (advice-add 'scomint-make :around #'nixpkgs--around-scomint-make)
+        ; When we have no more coq buffers, tear down the buffer handling
+        (defun nixpkgs--decrement-coq-buffer-count ()
+          (setq nixpkgs--coq-buffer-count (1- nixpkgs--coq-buffer-count))
+          (when (eq nixpkgs--coq-buffer-count 0)
+            (advice-remove 'scomint-make #'nixpkgs--around-scomint-make)
+            (fmakunbound 'nixpkgs--around-scomint-make)
+            (fmakunbound 'nixpkgs--coq-inherit)
+            (fmakunbound 'nixpkgs--decrement-coq-buffer-count))))
+      (setq nixpkgs--coq-buffer-count (1+ nixpkgs--coq-buffer-count))
+      (add-hook 'kill-buffer-hook 'nixpkgs--decrement-coq-buffer-count nil t)
+      (setq nixpkgs--is-nixpkgs-coq-buffer t)
+      (inherit-local 'nixpkgs--is-nixpkgs-coq-buffer)
+    '';
+  };
+
+  src = fetchFromGitHub {
+    owner = "coq";
+    repo = "coq";
+    rev = "V${version}";
+    inherit sha256;
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ ncurses ocamlPackages.ocaml ocamlPackages.findlib ]
+  ++ stdenv.lib.optional (!versionAtLeast "8.10") ocamlPackages.camlp5
+  ++ [ ocamlPackages.num ]
+  ++ stdenv.lib.optionals buildIde
+    (if versionAtLeast "8.10"
+     then [ ocamlPackages.lablgtk3-sourceview3 glib gnome3.defaultIconTheme wrapGAppsHook ]
+     ++ stdenv.lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Cocoa
+     else [ ocamlPackages.lablgtk ]);
+
+  postPatch = ''
+    UNAME=$(type -tp uname)
+    RM=$(type -tp rm)
+    substituteInPlace configure --replace "/bin/uname" "$UNAME"
+    substituteInPlace tools/beautify-archive --replace "/bin/rm" "$RM"
+    substituteInPlace configure.ml --replace '"md5 -q"' '"md5sum"'
+    ${csdpPatch}
+  '';
+
+  setupHook = writeText "setupHook.sh" ''
+    addCoqPath () {
+      if test -d "''$1/lib/coq/${coq-version}/user-contrib"; then
+        export COQPATH="''${COQPATH-}''${COQPATH:+:}''$1/lib/coq/${coq-version}/user-contrib/"
+      fi
+    }
+
+    addEnvHooks "$targetOffset" addCoqPath
+  '';
+
+  preConfigure = if versionAtLeast "8.10" then ''
+    patchShebangs dev/tools/
+  '' else ''
+    configureFlagsArray=(
+      ${ideFlags}
+    )
+  '';
+
+  prefixKey = "-prefix ";
+
+  buildFlags = [ "revision" "coq" "coqide" "bin/votour" ];
+
+  createFindlibDestdir = true;
+
+  postInstall = ''
+    cp bin/votour $out/bin/
+    ln -s $out/lib/coq $OCAMLFIND_DESTDIR/coq
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Coq proof assistant";
+    longDescription = ''
+      Coq is a formal proof management system.  It provides a formal language
+      to write mathematical definitions, executable algorithms and theorems
+      together with an environment for semi-interactive development of
+      machine-checked proofs.
+    '';
+    homepage = "http://coq.inria.fr";
+    license = licenses.lgpl21;
+    branch = coq-version;
+    maintainers = with maintainers; [ roconnor thoughtpolice vbgl Zimmi48 ];
+    platforms = platforms.unix;
+  };
+}; in self
diff --git a/nixpkgs/pkgs/applications/science/logic/coq2html/default.nix b/nixpkgs/pkgs/applications/science/logic/coq2html/default.nix
new file mode 100644
index 000000000000..2e56eda893e9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/coq2html/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchgit, ocaml }:
+
+let 
+  version = "20170720";
+in
+
+stdenv.mkDerivation {
+  pname = "coq2html";
+  inherit version;
+
+  src = fetchgit {
+    url = "https://github.com/xavierleroy/coq2html";
+    rev = "e2b94093c6b9a877717f181765e30577de22439e";
+    sha256 = "1x466j0pyjggyz0870pdllv9f5vpnfrgkd0w7ajvm9rkwyp3f610";
+  };
+
+  buildInputs = [ ocaml ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp coq2html $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "coq2html is an HTML documentation generator for Coq source files";
+    longDescription = ''
+      coq2html is an HTML documentation generator for Coq source files. It is
+      an alternative to the standard coqdoc documentation generator
+      distributed along with Coq. The major feature of coq2html is its ability
+      to fold proof scripts: in the generated HTML, proof scripts are
+      initially hidden, but can be revealed one by one by clicking on the
+      "Proof" keyword.
+    '';
+    homepage = "https://github.com/xavierleroy/coq2html";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ jwiegley ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/cryptominisat/default.nix b/nixpkgs/pkgs/applications/science/logic/cryptominisat/default.nix
new file mode 100644
index 000000000000..591b04ab062b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/cryptominisat/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub, cmake, python3, xxd, boost }:
+
+stdenv.mkDerivation rec {
+  pname = "cryptominisat";
+  version = "5.7.1";
+
+  src = fetchFromGitHub {
+    owner  = "msoos";
+    repo   = "cryptominisat";
+    rev    = version;
+    sha256 = "16lydnbd4rxfyabvvw7l4hbbby3yprcqqzrydd3n8rjbxibi4xyf";
+  };
+
+  buildInputs = [ python3 boost ];
+  nativeBuildInputs = [ cmake xxd ];
+
+  meta = with stdenv.lib; {
+    description = "An advanced SAT Solver";
+    homepage    = "https://github.com/msoos/cryptominisat";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ mic92 ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/cryptoverif/default.nix b/nixpkgs/pkgs/applications/science/logic/cryptoverif/default.nix
new file mode 100644
index 000000000000..6877060d36d6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/cryptoverif/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, ocaml }:
+
+stdenv.mkDerivation rec {
+  pname = "cryptoverif";
+  version = "2.01pl1";
+
+  src = fetchurl {
+    url    = "http://prosecco.gforge.inria.fr/personal/bblanche/cryptoverif/cryptoverif${version}.tar.gz";
+    sha256 = "1bkmrv3wsy8mwhrxd3z3br9zgv37c2w6443rm4s9jl0aphcgnbiw";
+  };
+
+  buildInputs = [ ocaml ];
+
+  /* Fix up the frontend to load the 'default' cryptoverif library
+  ** from under $out/libexec. By default, it expects to find the files
+  ** in $CWD which doesn't work. */
+  patchPhase = ''
+    substituteInPlace ./src/settings.ml \
+      --replace \"default\" \"$out/libexec/default\"
+  '';
+
+  buildPhase = "./build";
+  installPhase = ''
+    mkdir -p $out/bin $out/libexec
+    cp ./cryptoverif   $out/bin
+    cp ./default.cvl   $out/libexec
+    cp ./default.ocvl  $out/libexec
+  '';
+
+  meta = {
+    description = "Cryptographic protocol verifier in the computational model";
+    homepage    = "https://prosecco.gforge.inria.fr/personal/bblanche/cryptoverif/";
+    license     = stdenv.lib.licenses.cecill-b;
+    platforms   = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/cubicle/default.nix b/nixpkgs/pkgs/applications/science/logic/cubicle/default.nix
new file mode 100644
index 000000000000..bfb6a57fb33a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/cubicle/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, ocamlPackages }:
+
+stdenv.mkDerivation rec {
+  pname = "cubicle";
+  version = "1.1.2";
+  src = fetchurl {
+    url = "http://cubicle.lri.fr/cubicle-${version}.tar.gz";
+    sha256 = "10kk80jdmpdvql88sdjsh7vqzlpaphd8vip2lp47aarxjkwjlz1q";
+  };
+
+  postPatch = ''
+    substituteInPlace Makefile.in --replace "\\n" ""
+  '';
+
+  buildInputs = with ocamlPackages; [ ocaml findlib functory ];
+
+  meta = with stdenv.lib; {
+    description = "An open source model checker for verifying safety properties of array-based systems";
+    homepage = "http://cubicle.lri.fr/";
+    license = licenses.asl20;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ dwarfmaster ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/cvc3/cvc3-2.4.1-gccv6-fix.patch b/nixpkgs/pkgs/applications/science/logic/cvc3/cvc3-2.4.1-gccv6-fix.patch
new file mode 100644
index 000000000000..1fb3516b8c27
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/cvc3/cvc3-2.4.1-gccv6-fix.patch
@@ -0,0 +1,76 @@
+commit 4eb28b907e89be05d92eb704115f821b9b848e60
+Author: Matthew Dawson <matthew@mjdsystems.ca>
+Date:   Sun Oct 16 22:06:03 2016 -0400
+
+    Fix gcc v6 compile failures.
+    
+     * Use std::hash<const char*> over std::hash<char *>, as throwing away the const is not allowed.
+     * Use Hash::hash by default in CDMap over std::hash, to get Hash::hash<CVC3::expr>
+
+diff --git a/src/expr/expr_value.cpp b/src/expr/expr_value.cpp
+index 0c85ff6..e4dd251 100644
+--- a/src/expr/expr_value.cpp
++++ b/src/expr/expr_value.cpp
+@@ -29,7 +29,7 @@ namespace CVC3 {
+ // Class ExprValue static members
+ ////////////////////////////////////////////////////////////////////////
+ 
+-std::hash<char*> ExprValue::s_charHash;
++std::hash<const char*> ExprValue::s_charHash;
+ std::hash<long int> ExprValue::s_intHash;
+ 
+ ////////////////////////////////////////////////////////////////////////
+diff --git a/src/include/cdmap.h b/src/include/cdmap.h
+index faf682a..c3b094c 100644
+--- a/src/include/cdmap.h
++++ b/src/include/cdmap.h
+@@ -43,9 +43,9 @@ namespace CVC3 {
+ // Auxiliary class: almost the same as CDO (see cdo.h), but on
+ // setNull() call it erases itself from the map.
+ 
+-template <class Key, class Data, class HashFcn = std::hash<Key> > class CDMap;
++template <class Key, class Data, class HashFcn = Hash::hash<Key> > class CDMap;
+ 
+-template <class Key, class Data, class HashFcn = std::hash<Key> >
++template <class Key, class Data, class HashFcn = Hash::hash<Key> >
+ class CDOmap :public ContextObj {
+   Key d_key;
+   Data d_data;
+diff --git a/src/include/expr_hash.h b/src/include/expr_hash.h
+index b2107d7..baa2eab 100644
+--- a/src/include/expr_hash.h
++++ b/src/include/expr_hash.h
+@@ -20,7 +20,6 @@
+  * hash_set over Expr class.
+  */
+ /*****************************************************************************/
+-
+ #ifndef _cvc3__expr_h_
+ #include "expr.h"
+ #endif
+diff --git a/src/include/expr_value.h b/src/include/expr_value.h
+index 95102b2..f53aa4d 100644
+--- a/src/include/expr_value.h
++++ b/src/include/expr_value.h
+@@ -179,7 +179,7 @@ protected:
+   // Static hash functions.  They don't depend on the context
+   // (ExprManager and such), so it is still thread-safe to have them
+   // static.
+-  static std::hash<char*> s_charHash;
++  static std::hash<const char*> s_charHash;
+   static std::hash<long int> s_intHash;
+ 
+   static size_t pointerHash(void* p) { return s_intHash((long int)p); }
+diff --git a/src/theory_core/theory_core.cpp b/src/theory_core/theory_core.cpp
+index df5289f..37ccab9 100644
+--- a/src/theory_core/theory_core.cpp
++++ b/src/theory_core/theory_core.cpp
+@@ -710,7 +710,7 @@ TheoryCore::TheoryCore(ContextManager* cm,
+     //    d_termTheorems(cm->getCurrentContext()),
+     d_predicates(cm->getCurrentContext()),
+     d_solver(NULL),
+-    d_simplifyInPlace(false),
++    d_simplifyInPlace(NULL),
+     d_currentRecursiveSimplifier(NULL),
+     d_resourceLimit(0),
+     d_timeBase(0),
diff --git a/nixpkgs/pkgs/applications/science/logic/cvc3/default.nix b/nixpkgs/pkgs/applications/science/logic/cvc3/default.nix
new file mode 100644
index 000000000000..ff481fd7ab46
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/cvc3/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, flex, bison, gmp, perl }:
+
+stdenv.mkDerivation rec {
+    pname = "cvc3";
+    version = "2.4.1";
+
+    src = fetchurl {
+      url = "http://www.cs.nyu.edu/acsys/cvc3/releases/${version}/${pname}-${version}.tar.gz";
+      sha256 = "1xxcwhz3y6djrycw8sm6xz83wb4hb12rd1n0skvc7fng0rh1snym";
+    };
+
+  buildInputs = [ gmp flex bison perl ];
+
+  patches = [ ./cvc3-2.4.1-gccv6-fix.patch ];
+
+  preConfigure = ''
+    sed -e "s@ /bin/bash@bash@g" -i Makefile.std
+    find . -exec sed -e "s@/usr/bin/perl@${perl}/bin/perl@g" -i '{}' ';'
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A prover for satisfiability modulo theory (SMT)";
+    maintainers = with maintainers;
+      [ raskin ];
+    platforms = platforms.linux;
+    license = licenses.free;
+    homepage = "http://www.cs.nyu.edu/acsys/cvc3/index.html";
+  };
+  passthru = {
+    updateInfo = {
+      downloadPage = "http://www.cs.nyu.edu/acsys/cvc3/download.html";
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/cvc4/default.nix b/nixpkgs/pkgs/applications/science/logic/cvc4/default.nix
new file mode 100644
index 000000000000..a6e9bc69a12c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/cvc4/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, cln, gmp, swig, pkgconfig
+, readline, libantlr3c, boost, jdk, autoreconfHook
+, python3, antlr3_4
+}:
+
+stdenv.mkDerivation rec {
+  pname = "cvc4";
+  version = "1.6";
+
+  src = fetchurl {
+    url = "https://cvc4.cs.stanford.edu/downloads/builds/src/cvc4-${version}.tar.gz";
+    sha256 = "1iw793zsi48q91lxpf8xl8lnvv0jsj4whdad79rakywkm1gbs62w";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ gmp cln readline swig libantlr3c antlr3_4 boost jdk python3 ];
+  configureFlags = [
+    "--enable-language-bindings=c,c++,java"
+    "--enable-gpl"
+    "--with-cln"
+    "--with-readline"
+    "--with-boost=${boost.dev}"
+  ];
+
+  prePatch = ''
+    patch -p1 -i ${./minisat-fenv.patch} -d src/prop/minisat
+    patch -p1 -i ${./minisat-fenv.patch} -d src/prop/bvminisat
+  '';
+
+  preConfigure = ''
+    patchShebangs ./src/
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "A high-performance theorem prover and SMT solver";
+    homepage    = "http://cvc4.cs.stanford.edu/web/";
+    license     = licenses.gpl3;
+    platforms   = platforms.unix;
+    maintainers = with maintainers; [ vbgl thoughtpolice gebner ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/cvc4/minisat-fenv.patch b/nixpkgs/pkgs/applications/science/logic/cvc4/minisat-fenv.patch
new file mode 100644
index 000000000000..686d5a1c5b49
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/cvc4/minisat-fenv.patch
@@ -0,0 +1,65 @@
+From 7f1016ceab9b0f57a935bd51ca6df3d18439b472 Mon Sep 17 00:00:00 2001
+From: Will Dietz <w@wdtz.org>
+Date: Tue, 17 Oct 2017 22:57:02 -0500
+Subject: [PATCH] use fenv instead of non-standard fpu_control
+
+---
+ core/Main.cc   | 8 ++++++--
+ simp/Main.cc   | 8 ++++++--
+ utils/System.h | 2 +-
+ 3 files changed, 13 insertions(+), 5 deletions(-)
+
+diff --git a/core/Main.cc b/core/Main.cc
+index 2b0d97b..8ad95fb 100644
+--- a/core/Main.cc
++++ b/core/Main.cc
+@@ -78,8 +78,12 @@ int main(int argc, char** argv)
+         // printf("This is MiniSat 2.0 beta\n");
+         
+ #if defined(__linux__)
+-        fpu_control_t oldcw, newcw;
+-        _FPU_GETCW(oldcw); newcw = (oldcw & ~_FPU_EXTENDED) | _FPU_DOUBLE; _FPU_SETCW(newcw);
++        fenv_t fenv;
++
++        fegetenv(&fenv);
++        fenv.__control_word &= ~0x300; /* _FPU_EXTENDED */
++        fenv.__control_word |= 0x200; /* _FPU_DOUBLE */
++        fesetenv(&fenv);
+         printf("WARNING: for repeatability, setting FPU to use double precision\n");
+ #endif
+         // Extra options:
+diff --git a/simp/Main.cc b/simp/Main.cc
+index 2804d7f..39bfb71 100644
+--- a/simp/Main.cc
++++ b/simp/Main.cc
+@@ -79,8 +79,12 @@ int main(int argc, char** argv)
+         // printf("This is MiniSat 2.0 beta\n");
+         
+ #if defined(__linux__)
+-        fpu_control_t oldcw, newcw;
+-        _FPU_GETCW(oldcw); newcw = (oldcw & ~_FPU_EXTENDED) | _FPU_DOUBLE; _FPU_SETCW(newcw);
++        fenv_t fenv;
++
++        fegetenv(&fenv);
++        fenv.__control_word &= ~0x300; /* _FPU_EXTENDED */
++        fenv.__control_word |= 0x200; /* _FPU_DOUBLE */
++        fesetenv(&fenv);
+         printf("WARNING: for repeatability, setting FPU to use double precision\n");
+ #endif
+         // Extra options:
+diff --git a/utils/System.h b/utils/System.h
+index 1758192..c0ad13a 100644
+--- a/utils/System.h
++++ b/utils/System.h
+@@ -22,7 +22,7 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWA
+ #define Minisat_System_h
+ 
+ #if defined(__linux__)
+-#include <fpu_control.h>
++#include <fenv.h>
+ #endif
+ 
+ #include "mtl/IntTypes.h"
+-- 
+2.14.2
+
diff --git a/nixpkgs/pkgs/applications/science/logic/drat-trim/default.nix b/nixpkgs/pkgs/applications/science/logic/drat-trim/default.nix
new file mode 100644
index 000000000000..4099236e6280
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/drat-trim/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation {
+  name = "drat-trim-2017-08-31";
+
+  src = fetchFromGitHub {
+    owner = "marijnheule";
+    repo = "drat-trim";
+    rev = "37ac8f874826ffa3500a00698910e137498defac";
+    sha256 = "1m9q47dfnvdli1z3kb1jvvbm0dgaw725k1aw6h9w00bggqb91bqh";
+  };
+
+  postPatch = ''
+    substituteInPlace Makefile --replace gcc cc
+  '';
+
+  installPhase = ''
+    install -Dt $out/bin drat-trim
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A proof checker for unSAT proofs";
+    longDescription = ''
+      DRAT-trim is a satisfiability proof checking and trimming
+      utility designed to validate proofs for all known satisfiability
+      solving and preprocessing techniques.  DRAT-trim can also emit
+      trimmed formulas, optimized proofs, and TraceCheck+ dependency
+      graphs.
+
+      DRAT-trim has been used as part of the judging process in the
+      annual SAT Competition in recent years, in order to check
+      competing SAT solvers' work when they claim that a SAT instance
+      is unsatisfiable.
+    '';
+    homepage = "https://www.cs.utexas.edu/~marijn/drat-trim/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ kini ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/ekrhyper/default.nix b/nixpkgs/pkgs/applications/science/logic/ekrhyper/default.nix
new file mode 100644
index 000000000000..e1eb9a2dcc3b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/ekrhyper/default.nix
@@ -0,0 +1,32 @@
+{stdenv, fetchurl, ocaml, perl}:
+let
+  s = # Generated upstream information
+  rec {
+    baseName="ekrhyper";
+    version="1_4_21022014";
+    name="${baseName}-${version}";
+    hash="14xaaxyvfli1nd4vd9fp4j1s8k76z2bhazxzzc7br3q6hc6b8ivw";
+    url="http://userpages.uni-koblenz.de/~bpelzer/ekrhyper/ekrh_1_4_21022014.tar.gz";
+    sha256="14xaaxyvfli1nd4vd9fp4j1s8k76z2bhazxzzc7br3q6hc6b8ivw";
+  };
+  buildInputs = [
+    ocaml perl
+  ];
+in
+stdenv.mkDerivation {
+  inherit (s) name version;
+  inherit buildInputs;
+  src = fetchurl {
+    inherit (s) url sha256;
+  };
+  setSourceRoot = "export sourceRoot=$(echo */ekrh/src/)";
+  preInstall = "export INSTALLDIR=$out";
+  postInstall = ''for i in "$out/casc"/*; do ln -s "$i" "$out/bin/ekrh-casc-$(basename $i)"; done '';
+  meta = {
+    inherit (s) version;
+    description = "Automated first-order theorem prover";
+    license = stdenv.lib.licenses.gpl2 ;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/ekrhyper/default.upstream b/nixpkgs/pkgs/applications/science/logic/ekrhyper/default.upstream
new file mode 100644
index 000000000000..310e93ea53fd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/ekrhyper/default.upstream
@@ -0,0 +1,3 @@
+url http://userpages.uni-koblenz.de/~bpelzer/ekrhyper/
+ensure_choice
+version '.*[^0-9]_([-0-9_]+)[.].*' '\1'
diff --git a/nixpkgs/pkgs/applications/science/logic/elan/default.nix b/nixpkgs/pkgs/applications/science/logic/elan/default.nix
new file mode 100644
index 000000000000..7a7da2c5f5d2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/elan/default.nix
@@ -0,0 +1,44 @@
+{ lib, pkgconfig, curl, openssl, zlib, fetchFromGitHub, rustPlatform }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "elan";
+  version = "0.10.2";
+
+  src = fetchFromGitHub {
+    owner = "kha";
+    repo = "elan";
+    rev = "v${version}";
+    sha256 = "0ycw1r364g5gwh8796dpv1israpg7zqwx8mcvnacv2lqj5iijmby";
+  };
+
+  cargoSha256 = "0hcaiy046d2gnkp6sfpnkkprb3nd94i9q8dgqxxpwrc1j157x6z9";
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ curl zlib openssl ];
+
+  cargoBuildFlags = [ "--features no-self-update" ];
+
+  postInstall = ''
+    pushd $out/bin
+    mv elan-init elan
+    for link in lean leanpkg leanchecker leanc leanmake; do
+      ln -s elan $link
+    done
+    popd
+
+    # tries to create .elan
+    export HOME=$(mktemp -d)
+    mkdir -p "$out/share/"{bash-completion/completions,fish/vendor_completions.d,zsh/site-functions}
+    $out/bin/elan completions bash > "$out/share/bash-completion/completions/elan"
+    $out/bin/elan completions fish > "$out/share/fish/vendor_completions.d/elan.fish"
+    $out/bin/elan completions zsh >  "$out/share/zsh/site-functions/_elan"
+  '';
+
+  meta = with lib; {
+    description = "Small tool to manage your installations of the Lean theorem prover";
+    homepage = "https://github.com/Kha/elan";
+    license = with licenses; [ asl20 /* or */ mit ];
+    maintainers = with maintainers; [ gebner ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/eprover/default.nix b/nixpkgs/pkgs/applications/science/logic/eprover/default.nix
new file mode 100644
index 000000000000..f19d7e35c3e3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/eprover/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, which }:
+
+stdenv.mkDerivation rec {
+  pname = "eprover";
+  version = "2.4";
+
+  src = fetchurl {
+    url = "https://wwwlehre.dhbw-stuttgart.de/~sschulz/WORK/E_DOWNLOAD/V_${version}/E.tgz";
+    sha256 = "1xn5yypy6w36amsb3kvj1srlbv6v5dl51k64cd264asz2n469dxw";
+  };
+
+  buildInputs = [ which ];
+
+  preConfigure = ''
+    sed -e 's/ *CC *= *gcc$//' -i Makefile.vars
+  '';
+  configureFlags = [
+    "--exec-prefix=$(out)"
+    "--man-prefix=$(out)/share/man"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Automated theorem prover for full first-order logic with equality";
+    homepage = "http://www.eprover.org/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ raskin gebner ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/fast-downward/default.nix b/nixpkgs/pkgs/applications/science/logic/fast-downward/default.nix
new file mode 100644
index 000000000000..ed757e444b7c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/fast-downward/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, lib, fetchhg, cmake, which, python3, osi, cplex }:
+
+stdenv.mkDerivation {
+  name = "fast-downward-2019-05-13";
+
+  src = fetchhg {
+    url = "http://hg.fast-downward.org/";
+    rev = "090f5df5d84a";
+    sha256 = "14pcjz0jfzx5269axg66iq8js7lm2w3cnqrrhhwmz833prjp945g";
+  };
+
+  nativeBuildInputs = [ cmake which ];
+  buildInputs = [ python3 python3.pkgs.wrapPython osi ];
+
+  cmakeFlags =
+    lib.optional osi.withCplex [ "-DDOWNWARD_CPLEX_ROOT=${cplex}/cplex" ];
+
+  enableParallelBuilding = true;
+
+  postPatch = ''
+    cd src
+    # Needed because the package tries to be too smart.
+    export CC="$(which $CC)"
+    export CXX="$(which $CXX)"
+  '';
+
+  installPhase = ''
+    install -Dm755 bin/downward $out/libexec/fast-downward/downward
+    cp -r ../translate $out/libexec/fast-downward/
+    install -Dm755 ../../fast-downward.py $out/bin/fast-downward
+    mkdir -p $out/${python3.sitePackages}
+    cp -r ../../driver $out/${python3.sitePackages}
+
+    wrapPythonProgramsIn $out/bin "$out $pythonPath"
+    wrapPythonProgramsIn $out/libexec/fast-downward/translate "$out $pythonPath"
+    # Because fast-downward calls `python translate.py` we need to return wrapped scripts back.
+    for i in $out/libexec/fast-downward/translate/.*-wrapped; do
+      name="$(basename "$i")"
+      name1="''${name#.}"
+      name2="''${name1%-wrapped}"
+      dir="$(dirname "$i")"
+      dest="$dir/$name2"
+      echo "Moving $i to $dest"
+      mv "$i" "$dest"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A domain-independent planning system";
+    homepage = "http://www.fast-downward.org/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/gappa/default.nix b/nixpkgs/pkgs/applications/science/logic/gappa/default.nix
new file mode 100644
index 000000000000..2ca1bcd30981
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/gappa/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, gmp, mpfr, boost }:
+
+stdenv.mkDerivation {
+  name = "gappa-1.3.5";
+
+  src = fetchurl {
+    url = "https://gforge.inria.fr/frs/download.php/file/38044/gappa-1.3.5.tar.gz";
+    sha256 = "0q1wdiwqj6fsbifaayb1zkp20bz8a1my81sqjsail577jmzwi07w";
+  };
+
+  buildInputs = [ gmp mpfr boost.dev ];
+
+  buildPhase = "./remake";
+  installPhase = "./remake install";
+
+  meta = {
+    homepage = "http://gappa.gforge.inria.fr/";
+    description = "Verifying and formally proving properties on numerical programs dealing with floating-point or fixed-point arithmetic";
+    license = with stdenv.lib.licenses; [ cecill20 gpl2 ];
+    maintainers = with stdenv.lib.maintainers; [ vbgl ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/glucose/default.nix b/nixpkgs/pkgs/applications/science/logic/glucose/default.nix
new file mode 100644
index 000000000000..0a8fad484da7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/glucose/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, zlib }:
+stdenv.mkDerivation rec {
+  pname = "glucose";
+  version = "4.1";
+
+  src = fetchurl {
+    url = "http://www.labri.fr/perso/lsimon/downloads/softwares/glucose-syrup-${version}.tgz";
+    sha256 = "0aahrkaq7n0z986fpqz66yz946nxardfi6dh8calzcfjpvqiraji";
+  };
+
+  buildInputs = [ zlib ];
+
+  sourceRoot = "glucose-syrup-${version}/simp";
+  makeFlags = [ "r" ];
+  installPhase = ''
+    install -Dm0755 glucose_release $out/bin/glucose
+    mkdir -p "$out/share/doc/${pname}-${version}/"
+    install -Dm0755 ../{LICEN?E,README*,Changelog*} "$out/share/doc/${pname}-${version}/"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Modern, parallel SAT solver (sequential version)";
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ gebner ];
+    # Build uses _FPU_EXTENDED macro
+    badPlatforms = [ "aarch64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/glucose/syrup.nix b/nixpkgs/pkgs/applications/science/logic/glucose/syrup.nix
new file mode 100644
index 000000000000..816f8504a52e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/glucose/syrup.nix
@@ -0,0 +1,24 @@
+{ stdenv, zlib, glucose }:
+stdenv.mkDerivation rec {
+  pname = "glucose-syrup";
+  version = glucose.version;
+
+  src = glucose.src;
+
+  buildInputs = [ zlib ];
+
+  sourceRoot = "glucose-syrup-${version}/parallel";
+  makeFlags = [ "r" ];
+  installPhase = ''
+    install -Dm0755 glucose-syrup_release $out/bin/glucose-syrup
+    mkdir -p "$out/share/doc/${pname}-${version}/"
+    install -Dm0755 ../{LICEN?E,README*,Changelog*} "$out/share/doc/${pname}-${version}/"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Modern, parallel SAT solver (parallel version)";
+    license = licenses.unfreeRedistributable;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ gebner ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/hol/default.nix b/nixpkgs/pkgs/applications/science/logic/hol/default.nix
new file mode 100644
index 000000000000..dbafee7d6000
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/hol/default.nix
@@ -0,0 +1,88 @@
+{stdenv, pkgs, fetchurl, graphviz, fontconfig, liberation_ttf,
+ experimentalKernel ? true}:
+
+let
+  pname = "hol4";
+  vnum = "10";
+in
+
+let
+  version = "k.${vnum}";
+  longVersion = "kananaskis-${vnum}";
+  holsubdir = "hol-${longVersion}";
+  kernelFlag = if experimentalKernel then "-expk" else "-stdknl";
+in
+
+let
+  polymlEnableShared = with pkgs; lib.overrideDerivation polyml (attrs: {
+    configureFlags = [ "--enable-shared" ];
+  });
+in
+
+stdenv.mkDerivation {
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/hol/hol/${longVersion}/${holsubdir}.tar.gz";
+    sha256 = "0x2wxksr305h1lrbklf6p42lp09rbhb4rsh74g0l70sgapyiac9b";
+  };
+
+  buildInputs = [polymlEnableShared graphviz fontconfig liberation_ttf];
+
+  buildCommand = ''
+
+    mkdir chroot-fontconfig
+    cat ${fontconfig.out}/etc/fonts/fonts.conf > chroot-fontconfig/fonts.conf
+    sed -e 's@</fontconfig>@@' -i chroot-fontconfig/fonts.conf
+    echo "<dir>${liberation_ttf}</dir>" >> chroot-fontconfig/fonts.conf
+    echo "</fontconfig>" >> chroot-fontconfig/fonts.conf
+
+    export FONTCONFIG_FILE=$(pwd)/chroot-fontconfig/fonts.conf
+
+    mkdir -p "$out/src"
+    cd  "$out/src"
+
+    tar -xzf "$src"
+    cd ${holsubdir}
+
+    substituteInPlace tools/Holmake/Holmake_types.sml \
+      --replace "\"/bin/mv\"" "\"mv\"" \
+      --replace "\"/bin/cp\"" "\"cp\""
+
+    for f in tools/buildutils.sml help/src-sml/DOT;
+    do
+      substituteInPlace $f --replace "\"/usr/bin/dot\"" "\"${graphviz}/bin/dot\""
+    done
+
+    #sed -ie "/compute/,999 d" tools/build-sequence # for testing
+
+    poly < tools/smart-configure.sml
+
+    bin/build ${kernelFlag} -symlink
+
+    mkdir -p "$out/bin"
+    ln -st $out/bin  $out/src/${holsubdir}/bin/*
+    # ln -s $out/src/hol4.${version}/bin $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Interactive theorem prover based on Higher-Order Logic";
+    longDescription = ''
+      HOL4 is the latest version of the HOL interactive proof
+      assistant for higher order logic: a programming environment in
+      which theorems can be proved and proof tools
+      implemented. Built-in decision procedures and theorem provers
+      can automatically establish many simple theorems (users may have
+      to prove the hard theorems themselves!) An oracle mechanism
+      gives access to external programs such as SMT and BDD
+      engines. HOL4 is particularly suitable as a platform for
+      implementing combinations of deduction, execution and property
+      checking.
+    '';
+    homepage = "http://hol.sourceforge.net/";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ mudri ];
+    platforms = with platforms; linux;
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/hol_light/default.nix b/nixpkgs/pkgs/applications/science/logic/hol_light/default.nix
new file mode 100644
index 000000000000..9c3030517e32
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/hol_light/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, runtimeShell, fetchFromGitHub, fetchpatch, ocaml, num, camlp5 }:
+
+let
+  load_num =
+    if num == null then "" else
+      ''
+        -I ${num}/lib/ocaml/${ocaml.version}/site-lib/num \
+        -I ${num}/lib/ocaml/${ocaml.version}/site-lib/top-num \
+        -I ${num}/lib/ocaml/${ocaml.version}/site-lib/stublibs \
+      '';
+
+  start_script =
+    ''
+      #!${runtimeShell}
+      cd $out/lib/hol_light
+      exec ${ocaml}/bin/ocaml \
+        -I \`${camlp5}/bin/camlp5 -where\` \
+        ${load_num} \
+        -init make.ml
+    '';
+in
+
+stdenv.mkDerivation {
+  name     = "hol_light-2019-10-06";
+
+  src = fetchFromGitHub {
+    owner  = "jrh13";
+    repo   = "hol-light";
+    rev    = "5c91b2ded8a66db571824ecfc18b4536c103b23e";
+    sha256 = "0sxsk8z08ba0q5aixdyczcx5l29lb51ba4ip3d2fry7y604kjsx6";
+  };
+
+  patches = [(fetchpatch {
+    url = "https://salsa.debian.org/ocaml-team/hol-light/-/raw/master/debian/patches/0004-Fix-compilation-with-camlp5-7.11.patch";
+    sha256 = "180qmxbrk3vb1ix7j77hcs8vsar91rs11s5mm8ir5352rz7ylicr";
+  })];
+
+  buildInputs = [ ocaml camlp5 ];
+  propagatedBuildInputs = [ num ];
+
+  installPhase = ''
+    mkdir -p "$out/lib/hol_light" "$out/bin"
+    cp -a  . $out/lib/hol_light
+    echo "${start_script}" > "$out/bin/hol_light"
+    chmod a+x "$out/bin/hol_light"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Interactive theorem prover based on Higher-Order Logic";
+    homepage    = "http://www.cl.cam.ac.uk/~jrh13/hol-light/";
+    license     = licenses.bsd2;
+    platforms   = platforms.unix;
+    maintainers = with maintainers; [ thoughtpolice maggesi vbgl ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/iprover/default.nix b/nixpkgs/pkgs/applications/science/logic/iprover/default.nix
new file mode 100644
index 000000000000..310a95d7e7a6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/iprover/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, ocaml, eprover, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "iprover";
+  version = "3.1";
+
+  src = fetchurl {
+    url = "http://www.cs.man.ac.uk/~korovink/iprover/iprover-v${version}.tar.gz";
+    sha256 = "0lik8p7ayhjwpkln1iwf0ri84ramhch74j5nj6z7ph6wfi92pgg8";
+  };
+
+  buildInputs = [ ocaml eprover zlib ];
+
+  preConfigure = ''patchShebangs .'';
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    cp iproveropt "$out/bin"
+
+    mkdir -p "$out/share/${pname}-${version}"
+    cp *.p "$out/share/${pname}-${version}"
+    echo -e "#! ${stdenv.shell}\\n$out/bin/iproveropt --clausifier \"${eprover}/bin/eprover\" --clausifier_options \" --tstp-format --silent --cnf \" \"\$@\"" > "$out"/bin/iprover
+    chmod a+x  "$out"/bin/iprover
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An automated first-order logic theorem prover";
+    homepage = "http://www.cs.man.ac.uk/~korovink/iprover/";
+    maintainers = with maintainers; [ raskin gebner ];
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/isabelle/default.nix b/nixpkgs/pkgs/applications/science/logic/isabelle/default.nix
new file mode 100644
index 000000000000..d2e49d817837
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/isabelle/default.nix
@@ -0,0 +1,82 @@
+{ stdenv, fetchurl, perl, nettools, java, polyml, z3, rlwrap }:
+# nettools needed for hostname
+
+stdenv.mkDerivation rec {
+  pname = "isabelle";
+  version = "2018";
+
+  dirname = "Isabelle${version}";
+
+  src = if stdenv.isDarwin
+    then fetchurl {
+      url = "http://isabelle.in.tum.de/website-${dirname}/dist/${dirname}.dmg";
+      sha256 = "0jwnvsf5whklq14ihaxs7b9nbic94mm56nvxljrdbvl6y628j9r5";
+    }
+    else fetchurl {
+      url = "https://isabelle.in.tum.de/website-${dirname}/dist/${dirname}_linux.tar.gz";
+      sha256 = "1928lwrw1v1p9s23kix30ncpqm8djmrnjixj82f3ni2a8sc3hrsp";
+    };
+
+  buildInputs = [ perl polyml z3 ]
+             ++ stdenv.lib.optionals (!stdenv.isDarwin) [ nettools java ];
+
+  sourceRoot = dirname;
+
+  postPatch = ''
+    patchShebangs .
+
+    cat >contrib/z3*/etc/settings <<EOF
+      Z3_HOME=${z3}
+      Z3_VERSION=${z3.version}
+      Z3_SOLVER=${z3}/bin/z3
+      Z3_INSTALLED=yes
+    EOF
+
+    cat >contrib/polyml-*/etc/settings <<EOF
+      ML_SYSTEM_64=true
+      ML_SYSTEM=${polyml.name}
+      ML_PLATFORM=${stdenv.system}
+      ML_HOME=${polyml}/bin
+      ML_OPTIONS="--minheap 1000"
+      POLYML_HOME="\$COMPONENT"
+      ML_SOURCES="\$POLYML_HOME/src"
+    EOF
+
+    cat >contrib/jdk/etc/settings <<EOF
+      ISABELLE_JAVA_PLATFORM=${stdenv.system}
+      ISABELLE_JDK_HOME=${java}
+    EOF
+
+    echo ISABELLE_LINE_EDITOR=${rlwrap}/bin/rlwrap >>etc/settings
+
+    for comp in contrib/jdk contrib/polyml-* contrib/z3-*; do
+      rm -rf $comp/x86*
+    done
+    '' + (if ! stdenv.isLinux then "" else ''
+    arch=${if stdenv.hostPlatform.system == "x86_64-linux" then "x86_64-linux" else "x86-linux"}
+    for f in contrib/*/$arch/{bash_process,epclextract,eprover,nunchaku,SPASS}; do
+      patchelf --set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) "$f"
+    done
+    '');
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mv $TMP/$dirname $out
+    cd $out/$dirname
+    bin/isabelle install $out/bin
+  '';
+
+  meta = {
+    description = "A generic proof assistant";
+
+    longDescription = ''
+      Isabelle is a generic proof assistant.  It allows mathematical formulas
+      to be expressed in a formal language and provides tools for proving those
+      formulas in a logical calculus.
+    '';
+    homepage = "http://isabelle.in.tum.de/";
+    license = "LGPL";
+    maintainers = [ stdenv.lib.maintainers.jwiegley ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/jonprl/default.nix b/nixpkgs/pkgs/applications/science/logic/jonprl/default.nix
new file mode 100644
index 000000000000..3ee05a478bc2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/jonprl/default.nix
@@ -0,0 +1,35 @@
+{ fetchgit, stdenv, smlnj, which }:
+
+stdenv.mkDerivation rec {
+  pname = "jonprl";
+  version = "0.1.0";
+
+  src = fetchgit {
+    url = "https://github.com/jonsterling/JonPRL.git";
+    deepClone = true;
+    rev = "refs/tags/v${version}";
+    sha256 = "0czs13syvnw8fz24d075n4pmsyfs8rs8c7ksmvd7cgb3h55fvp4p";
+  };
+
+  buildInputs = [ smlnj which ];
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    cp bin/.heapimg.* "$out/bin/"
+    build/mkexec.sh "${smlnj}/bin/sml" "$out" jonprl
+  '';
+
+  meta = {
+    description = "Proof Refinement Logic - Computational Type Theory";
+    longDescription = ''
+      An proof refinement logic for computational type theory
+      based on Brouwer-realizability & meaning explanations.
+      Inspired by Nuprl
+    '';
+    homepage = "https://github.com/jonsterling/JonPRL";
+    license = stdenv.lib.licenses.mit;
+    maintainers = with stdenv.lib.maintainers; [ puffnfresh ];
+    platforms = stdenv.lib.platforms.linux;
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/lci/default.nix b/nixpkgs/pkgs/applications/science/logic/lci/default.nix
new file mode 100644
index 000000000000..4775384a3ddc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/lci/default.nix
@@ -0,0 +1,16 @@
+{stdenv, fetchurl, readline}: 
+stdenv.mkDerivation rec {
+  version = "0.6";
+  pname = "lci";
+  src = fetchurl {
+    url = "mirror://sourceforge/lci/${pname}-${version}.tar.gz";
+    sha256="204f1ca5e2f56247d71ab320246811c220ed511bf08c9cb7f305cf180a93948e";
+  };
+  buildInputs = [readline];
+  meta = {
+    description = ''Lambda calculus interpreter'';
+    maintainers = with stdenv.lib.maintainers; [raskin];
+    platforms = with stdenv.lib.platforms; linux;
+    license = stdenv.lib.licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/lean/default.nix b/nixpkgs/pkgs/applications/science/logic/lean/default.nix
new file mode 100644
index 000000000000..7fcc4cdd062e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/lean/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, cmake, gmp, coreutils }:
+
+stdenv.mkDerivation rec {
+  pname = "lean";
+  version = "3.16.2";
+
+  src = fetchFromGitHub {
+    owner  = "leanprover-community";
+    repo   = "lean";
+    rev    = "v${version}";
+    sha256 = "0fvm7gvbr5kn258sqpnxa7dvzz84iv1dx1n066vih5gz80plz4lh";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ gmp ];
+  enableParallelBuilding = true;
+
+  preConfigure = ''
+    cd src
+  '';
+
+  postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+    substituteInPlace $out/bin/leanpkg \
+      --replace "greadlink" "${coreutils}/bin/readlink"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Automatic and interactive theorem prover";
+    homepage    = "https://leanprover.github.io/";
+    changelog   = "https://github.com/leanprover-community/lean/blob/v${version}/doc/changes.md";
+    license     = licenses.asl20;
+    platforms   = platforms.unix;
+    maintainers = with maintainers; [ thoughtpolice gebner ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/science/logic/lean2/default.nix b/nixpkgs/pkgs/applications/science/logic/lean2/default.nix
new file mode 100644
index 000000000000..612c9d6f92a2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/lean2/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, cmake, gmp, mpfr, python
+, gperftools, ninja, makeWrapper }:
+
+stdenv.mkDerivation {
+  pname = "lean2";
+  version = "2017-07-22";
+
+  src = fetchFromGitHub {
+    owner  = "leanprover";
+    repo   = "lean2";
+    rev    = "34dbd6c3ae612186b8f0f80d12fbf5ae7a059ec9";
+    sha256 = "1xv3j487zhh1zf2b4v19xzw63s2sgjhg8d62a0kxxyknfmdf3khl";
+  };
+
+  buildInputs = [ gmp mpfr cmake python gperftools ninja makeWrapper ];
+  enableParallelBuilding = true;
+
+  preConfigure = ''
+    patchShebangs bin/leantags
+    cd src
+  '';
+
+  cmakeFlags = [ "-GNinja" ];
+
+  postInstall = ''
+    wrapProgram $out/bin/linja --prefix PATH : $out/bin:${ninja}/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Automatic and interactive theorem prover (version with HoTT support)";
+    homepage    = "http://leanprover.github.io";
+    license     = licenses.asl20;
+    platforms   = platforms.unix;
+    maintainers = with maintainers; [ thoughtpolice gebner ];
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/leo2/default.nix b/nixpkgs/pkgs/applications/science/logic/leo2/default.nix
new file mode 100644
index 000000000000..b43bfb801358
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/leo2/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, makeWrapper, eprover, ocaml, perl, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "leo2";
+  version = "1.6.2";
+
+  src = fetchurl {
+    url = "https://page.mi.fu-berlin.de/cbenzmueller/leo/leo2_v${version}.tgz";
+    sha256 = "1wjpmizb181iygnd18lx7p77fwaci2clgzs5ix5j51cc8f3pazmv";
+  };
+
+  buildInputs = [ makeWrapper eprover ocaml perl zlib ];
+
+  sourceRoot = "leo2/src";
+
+  preConfigure = "patchShebangs configure";
+
+  buildFlags = [ "opt" ];
+
+  preInstall = "mkdir -p $out/bin";
+
+  postInstall = ''
+    mkdir -p "$out/etc"
+    echo -e "e = ${eprover}/bin/eprover\\nepclextract = ${eprover}/bin/epclextract" > "$out/etc/leoatprc"
+
+    wrapProgram $out/bin/leo \
+      --add-flags "--atprc $out/etc/leoatprc"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A high-performance typed higher order prover";
+    maintainers = [ maintainers.raskin ];
+    platforms = platforms.linux;
+    license = licenses.bsd3;
+    homepage = "http://www.leoprover.org/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/leo2/default.upstream b/nixpkgs/pkgs/applications/science/logic/leo2/default.upstream
new file mode 100644
index 000000000000..52b8ed1cdaa2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/leo2/default.upstream
@@ -0,0 +1,6 @@
+url http://page.mi.fu-berlin.de/cbenzmueller/leo/download.html
+version_link '[.]tgz'
+version '.*_v([0-9.]+)[.][a-z0-9]+$' '\1'
+do_overwrite () {
+  do_overwrite_just_version
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/leo3/binary.nix b/nixpkgs/pkgs/applications/science/logic/leo3/binary.nix
new file mode 100644
index 000000000000..dcea9c27acb4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/leo3/binary.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchurl, openjdk, runtimeShell}:
+stdenv.mkDerivation rec {
+  pname = "leo3";
+  version = "1.2";
+
+  jar = fetchurl {
+    url = "https://github.com/leoprover/Leo-III/releases/download/v${version}/leo3.jar";
+    sha256 = "1lgwxbr1rnk72rnvc8raq5i1q71ckhn998pwd9xk6zf27wlzijk7";
+  };
+
+  phases=["installPhase" "fixupPhase"];
+
+  installPhase = ''
+    mkdir -p "$out"/{bin,lib/java/leo3}
+    cp "${jar}" "$out/lib/java/leo3/leo3.jar"
+    echo "#!${runtimeShell}" > "$out/bin/leo3"
+    echo "'${openjdk}/bin/java' -jar '$out/lib/java/leo3/leo3.jar' \"\$@\""  > "$out/bin/leo3"
+    chmod a+x "$out/bin/leo3"
+  '';
+
+  meta = {
+    inherit version;
+    description = "An automated theorem prover for classical higher-order logic with choice";
+    license = stdenv.lib.licenses.bsd3;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    homepage = "https://page.mi.fu-berlin.de/lex/leo3/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/lingeling/default.nix b/nixpkgs/pkgs/applications/science/logic/lingeling/default.nix
new file mode 100644
index 000000000000..1805f6cdcc89
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/lingeling/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchFromGitHub
+, aiger
+}:
+
+stdenv.mkDerivation {
+  pname = "lingeling";
+  # This is the version used in satcomp2018, which was
+  # relicensed, and also known as version 'bcj'
+  version = "pre1_03b4860d";
+
+  src = fetchFromGitHub {
+    owner  = "arminbiere";
+    repo   = "lingeling";
+    rev    = "03b4860d14016f42213ea271014f2f13d181f504";
+    sha256 = "1lw1yfy219p7rrk88sbq4zl24b70040zapbjdrpv5a6i0jsblksx";
+  };
+
+  configurePhase = ''
+    ./configure.sh
+
+    # Rather than patch ./configure, just sneak in use of aiger here, since it
+    # doesn't handle real build products very well (it works on a build-time
+    # dir, not installed copy)... This is so we can build 'blimc'
+    substituteInPlace ./makefile \
+      --replace 'targets: liblgl.a' 'targets: liblgl.a blimc'      \
+      --replace '$(AIGER)/aiger.o'  '${aiger.lib}/lib/aiger.o'     \
+      --replace '$(AIGER)/aiger.h'  '${aiger.dev}/include/aiger.h' \
+      --replace '-I$(AIGER)'        '-I${aiger.dev}/include'
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin $lib/lib $dev/include
+
+    cp lglib.h  $dev/include
+    cp liblgl.a $lib/lib
+
+    cp lingeling plingeling treengeling ilingeling blimc $out/bin
+  '';
+
+  outputs = [ "out" "dev" "lib" ];
+
+  meta = with stdenv.lib; {
+    description = "Fast SAT solver";
+    homepage    = "http://fmv.jku.at/lingeling/";
+    license     = licenses.mit;
+    platforms   = platforms.unix;
+    maintainers = with maintainers; [ thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/logisim/default.nix b/nixpkgs/pkgs/applications/science/logic/logisim/default.nix
new file mode 100644
index 000000000000..ce86b2523116
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/logisim/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, jre, makeWrapper }:
+
+let version = "2.7.1"; in
+
+stdenv.mkDerivation {
+  pname = "logisim";
+  inherit version;
+  
+  src = fetchurl {
+    url = "mirror://sourceforge/project/circuit/2.7.x/${version}/logisim-generic-${version}.jar";
+    sha256 = "1hkvc9zc7qmvjbl9579p84hw3n8wl3275246xlzj136i5b0phain";
+  };
+  
+  phases = [ "installPhase" ];
+
+  nativeBuildInputs = [makeWrapper];
+
+  installPhase = ''
+    mkdir -pv $out/bin
+    makeWrapper ${jre}/bin/java $out/bin/logisim --add-flags "-jar $src"
+  '';
+  
+  meta = {
+    homepage = "http://ozark.hendrix.edu/~burch/logisim";
+    description = "Educational tool for designing and simulating digital logic circuits";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/ltl2ba/default.nix b/nixpkgs/pkgs/applications/science/logic/ltl2ba/default.nix
new file mode 100644
index 000000000000..02e9844115ef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/ltl2ba/default.nix
@@ -0,0 +1,31 @@
+{ fetchurl, stdenv }:
+
+stdenv.mkDerivation rec {
+  pname = "ltl2ba";
+  version = "1.2";
+
+  src = fetchurl {
+    url    = "http://www.lsv.ens-cachan.fr/~gastin/ltl2ba/${pname}-${version}.tar.gz";
+    sha256 = "0vzv5g7v87r41cvdafxi6yqnk7glzxrzgavy8213k59f6v11dzlx";
+  };
+
+  hardeningDisable = [ "format" ];
+
+  preConfigure = ''
+    substituteInPlace Makefile \
+    --replace "CC=gcc" ""
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mv ltl2ba $out/bin
+  '';
+
+  meta = {
+    description = "Fast translation from LTL formulae to Buchi automata";
+    homepage    = "http://www.lsv.ens-cachan.fr/~gastin/ltl2ba";
+    license     = stdenv.lib.licenses.gpl2Plus;
+    platforms   = stdenv.lib.platforms.darwin ++ stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/mcrl2/default.nix b/nixpkgs/pkgs/applications/science/logic/mcrl2/default.nix
new file mode 100644
index 000000000000..eb83eaf79c55
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/mcrl2/default.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchurl, cmake, libGLU, libGL, qt5, boost}:
+
+stdenv.mkDerivation rec {
+  version = "201707";
+  build_nr = "1";
+  pname = "mcrl2";
+
+  src = fetchurl {
+    url = "https://www.mcrl2.org/download/release/mcrl2-${version}.${build_nr}.tar.gz";
+    sha256 = "1c8h94ja7271ph61zrcgnjgblxppld6v22f7f900prjgzbcfy14m";
+  };
+
+  buildInputs = [ cmake libGLU libGL qt5.qtbase boost ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "A toolset for model-checking concurrent systems and protocols";
+    longDescription = ''
+      A formal specification language with an associated toolset,
+      that can be used for modelling, validation and verification of
+      concurrent systems and protocols
+    '';
+    homepage = "https://www.mcrl2.org/";
+    license = licenses.boost;
+    maintainers = with maintainers; [ moretea ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/mcy/default.nix b/nixpkgs/pkgs/applications/science/logic/mcy/default.nix
new file mode 100644
index 000000000000..a9366d560583
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/mcy/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitHub
+, yosys, symbiyosys, python3
+}:
+
+let
+  python = python3.withPackages (p: with p; [ flask ]);
+in
+stdenv.mkDerivation {
+  pname = "mcy";
+  version = "2020.03.21";
+
+  src = fetchFromGitHub {
+    owner  = "YosysHQ";
+    repo   = "mcy";
+    rev    = "bac92b8aad9bf24714fda70d3750bb50d6d96177";
+    sha256 = "0mmg6zd5cbn8g0am9c3naamg0lq67yyy117fzn2ydigcyia7vmnp";
+  };
+
+  buildInputs = [ python ];
+  patchPhase = ''
+    substituteInPlace mcy.py \
+      --replace yosys '${yosys}/bin/yosys' \
+      --replace 'os.execvp("mcy-dash"' "os.execvp(\"$out/bin/mcy-dash\""
+    substituteInPlace mcy-dash.py \
+      --replace 'app.run(debug=True)' 'app.run(host="0.0.0.0",debug=True)'
+  '';
+
+  # the build needs a bit of work...
+  buildPhase = "true";
+  installPhase = ''
+    mkdir -p $out/bin $out/share/mcy/dash
+    install mcy.py      $out/bin/mcy      && chmod +x $out/bin/mcy
+    install mcy-dash.py $out/bin/mcy-dash && chmod +x $out/bin/mcy-dash
+    cp -r dash/. $out/share/mcy/dash/.
+  '';
+
+  meta = {
+    description = "Mutation-based coverage testing for hardware designs, with Yosys";
+    homepage    = "https://github.com/YosysHQ/mcy";
+    license     = stdenv.lib.licenses.isc;
+    maintainers = with stdenv.lib.maintainers; [ thoughtpolice ];
+    platforms   = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/metis-prover/default.nix b/nixpkgs/pkgs/applications/science/logic/metis-prover/default.nix
new file mode 100644
index 000000000000..5755abfd9078
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/metis-prover/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, perl, mlton }:
+
+stdenv.mkDerivation {
+  pname = "metis-prover";
+  version = "2.3.20160713";
+
+  src = fetchFromGitHub {
+    owner = "gilith";
+    repo = "metis";
+    rev = "f0b1a17cd57eb098077e963ab092477aee9fb340";
+    sha256 = "1i7paax7b4byk8110f5zk4071mh5603r82bq7hbprqzljvsiipk7";
+  };
+
+  nativeBuildInputs = [ perl ];
+  buildInputs = [ mlton ];
+
+  patchPhase = "patchShebangs .";
+
+  buildPhase = "make mlton";
+
+  installPhase = ''
+    install -Dm0755 bin/mlton/metis $out/bin/metis
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Automatic theorem prover for first-order logic with equality";
+    homepage = "http://www.gilith.com/research/metis/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ gebner ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/minisat/default.nix b/nixpkgs/pkgs/applications/science/logic/minisat/default.nix
new file mode 100644
index 000000000000..df1800e6c31b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/minisat/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub, cmake, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "minisat";
+  version = "2.2.1";
+
+  src = fetchFromGitHub {
+    owner = "stp";
+    repo = pname;
+    rev = "releases/${version}";
+    sha256 = "14vcbjnlia00lpyv2fhbmw3wbc9bk9h7bln9zpyc3nwiz5cbjz4a";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ zlib ];
+
+  meta = with stdenv.lib; {
+    description = "Compact and readable SAT solver";
+    maintainers = with maintainers; [ gebner raskin ];
+    platforms = platforms.unix;
+    license = licenses.mit;
+    homepage = "http://minisat.se/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/monosat/default.nix b/nixpkgs/pkgs/applications/science/logic/monosat/default.nix
new file mode 100644
index 000000000000..63440213920c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/monosat/default.nix
@@ -0,0 +1,79 @@
+{ stdenv, fetchpatch, fetchFromGitHub, cmake, zlib, gmp, jdk8,
+  # The JDK we use on Darwin currenly makes extensive use of rpaths which are
+  # annoying and break the python library, so let's not bother for now
+  includeJava ? !stdenv.hostPlatform.isDarwin, includeGplCode ? true }:
+
+with stdenv.lib;
+
+let
+  boolToCmake = x: if x then "ON" else "OFF";
+
+  rev    = "1.8.0";
+  sha256 = "0q3a8x3iih25xkp2bm842sm2hxlb8hxlls4qmvj7vzwrh4lvsl7b";
+
+  pname   = "monosat";
+  version = rev;
+
+  src = fetchFromGitHub {
+    owner = "sambayless";
+    repo  = pname;
+    inherit rev sha256;
+  };
+
+  patches = [
+    # Python 3.8 compatibility
+    (fetchpatch {
+      url = "https://github.com/sambayless/monosat/commit/a5079711d0df0451f9840f3a41248e56dbb03967.patch";
+      sha256 = "1p2y0jw8hb9c90nbffhn86k1dxd6f6hk5v70dfmpzka3y6g1ksal";
+    })
+  ];
+
+  core = stdenv.mkDerivation {
+    name = "${pname}-${version}";
+    inherit src patches;
+    buildInputs = [ cmake zlib gmp jdk8 ];
+
+    cmakeFlags = [
+      "-DBUILD_STATIC=OFF"
+      "-DJAVA=${boolToCmake includeJava}"
+      "-DGPL=${boolToCmake includeGplCode}"
+    ];
+
+    postInstall = optionalString includeJava ''
+      mkdir -p $out/share/java
+      cp monosat.jar $out/share/java
+    '';
+
+    passthru = { inherit python; };
+
+    meta = {
+      description = "SMT solver for Monotonic Theories";
+      platforms   = platforms.unix;
+      license     = if includeGplCode then licenses.gpl2 else licenses.mit;
+      homepage    = "https://github.com/sambayless/monosat";
+      maintainers = [ maintainers.acairncross ];
+    };
+  };
+
+  python = { buildPythonPackage, cython }: buildPythonPackage {
+    inherit pname version src patches;
+
+    propagatedBuildInputs = [ core cython ];
+
+    # This tells setup.py to use cython, which should produce faster bindings
+    MONOSAT_CYTHON = true;
+
+    # After patching src, move to where the actually relevant source is. This could just be made
+    # the sourceRoot if it weren't for the patch.
+    postPatch = ''
+      cd src/monosat/api/python
+    '' +
+    # The relative paths here don't make sense for our Nix build
+    # TODO: do we want to just reference the core monosat library rather than copying the
+    # shared lib? The current setup.py copies the .dylib/.so...
+    ''
+      substituteInPlace setup.py \
+        --replace 'library_dir = "../../../../"' 'library_dir = "${core}/lib/"'
+    '';
+  };
+in core
diff --git a/nixpkgs/pkgs/applications/science/logic/open-wbo/default.nix b/nixpkgs/pkgs/applications/science/logic/open-wbo/default.nix
new file mode 100644
index 000000000000..c314127e74bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/open-wbo/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, zlib, gmp }:
+
+stdenv.mkDerivation {
+  name = "open-wbo-2.0";
+
+  src = fetchFromGitHub {
+    owner = "sat-group";
+    repo = "open-wbo";
+    rev = "f193a3bd802551b13d6424bc1baba6ad35ec6ba6";
+    sha256 = "1742i15qfsbf49c4r837wz35c1p7yafvz7ar6vmgcj6cmfwr8jb4";
+  };
+
+  buildInputs = [ zlib gmp ];
+
+  makeFlags = [ "r" ];
+  installPhase = ''
+    install -Dm0755 open-wbo_release $out/bin/open-wbo
+  '';
+
+  meta = with stdenv.lib; {
+    description = "State-of-the-art MaxSAT and Pseudo-Boolean solver";
+    maintainers = with maintainers; [ gebner ];
+    platforms = platforms.unix;
+    license = licenses.mit;
+    homepage = "http://sat.inesc-id.pt/open-wbo/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/opensmt/default.nix b/nixpkgs/pkgs/applications/science/logic/opensmt/default.nix
new file mode 100644
index 000000000000..03b3ce4ff0b7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/opensmt/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, automake, libtool, autoconf, intltool, perl
+, gmpxx, flex, bison
+}:
+
+stdenv.mkDerivation rec {
+  pname = "opensmt";
+  version = "20101017";
+
+  src = fetchurl {
+    url = "http://opensmt.googlecode.com/files/opensmt_src_${version}.tgz";
+    sha256 = "0xrky7ixjaby5x026v7hn72xh7d401w9jhccxjn0khhn1x87p2w1";
+  };
+
+  buildInputs = [ automake libtool autoconf intltool perl gmpxx flex bison ];
+
+  meta = with stdenv.lib; {
+    description = "A satisfiability modulo theory (SMT) solver";
+    maintainers = [ maintainers.raskin ];
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+    homepage = "http://code.google.com/p/opensmt/";
+    broken = true;
+    downloadPage = "http://code.google.com/p/opensmt/downloads/list";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/ott/default.nix b/nixpkgs/pkgs/applications/science/logic/ott/default.nix
new file mode 100644
index 000000000000..fa2ad9c4abc4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/ott/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitHub, pkgconfig, ocaml }:
+
+stdenv.mkDerivation rec {
+  pname = "ott";
+  version = "0.30";
+
+  src = fetchFromGitHub {
+    owner = "ott-lang";
+    repo = "ott";
+    rev = version;
+    sha256 = "16bxfnm30z94x36vr8vs6zd6fj55vnb7aypjl6hf7clk42040brc";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ ocaml ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp src/ott.opt $out/bin
+    ln -s $out/bin/ott.opt $out/bin/ott
+
+    mkdir -p $out/share/emacs/site-lisp
+    cp emacs/ott-mode.el $out/share/emacs/site-lisp
+    '';
+
+  meta = {
+    description = "Ott: tool for the working semanticist";
+    longDescription = ''
+      Ott is a tool for writing definitions of programming languages and
+      calculi. It takes as input a definition of a language syntax and
+      semantics, in a concise and readable ASCII notation that is close to
+      what one would write in informal mathematics. It generates LaTeX to
+      build a typeset version of the definition, and Coq, HOL, and Isabelle
+      versions of the definition. Additionally, it can be run as a filter,
+      taking a LaTeX/Coq/Isabelle/HOL source file with embedded (symbolic)
+      terms of the defined language, parsing them and replacing them by
+      target-system terms.
+    '';
+    homepage = "http://www.cl.cam.ac.uk/~pes20/ott";
+    license = stdenv.lib.licenses.bsd3;
+    maintainers = with stdenv.lib.maintainers; [ jwiegley ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/otter/default.nix b/nixpkgs/pkgs/applications/science/logic/otter/default.nix
new file mode 100644
index 000000000000..a7eec20548c9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/otter/default.nix
@@ -0,0 +1,53 @@
+{stdenv, fetchurl, tcsh, libXaw, libXt, libX11}:
+let
+  s = # Generated upstream information
+  rec {
+    version = "3.3f";
+    name = "otter";
+    url = "https://www.cs.unm.edu/~mccune/otter/otter-${version}.tar.gz";
+    sha256 = "16mc1npl7sk9cmqhrf3ghfmvx29inijw76f1b1lsykllaxjqqb1r";
+  };
+  buildInputs = [
+    tcsh libXaw libXt libX11
+  ];
+in
+stdenv.mkDerivation {
+  name = "${s.name}-${s.version}";
+  inherit buildInputs;
+  src = fetchurl {
+    inherit (s) url sha256;
+  };
+
+  hardeningDisable = [ "format" ];
+
+  buildPhase = ''
+    find . -name Makefile | xargs sed -i -e "s@/bin/rm@$(type -P rm)@g"
+    find . -name Makefile | xargs sed -i -e "s@/bin/mv@$(type -P mv)@g"
+    find . -perm -0100 -type f | xargs sed -i -e "s@/bin/csh@$(type -P csh)@g"
+    find . -perm -0100 -type f | xargs sed -i -e "s@/bin/rm@$(type -P rm)@g"
+    find . -perm -0100 -type f | xargs sed -i -e "s@/bin/mv@$(type -P mv)@g"
+
+    sed -i -e "s/^XLIBS *=.*/XLIBS=-lXaw -lXt -lX11/" source/formed/Makefile 
+
+    make all
+    make -C examples all
+    make -C examples-mace2 all
+    make -C source/formed realclean
+    make -C source/formed formed
+  '';
+
+  installPhase = ''
+    mkdir -p "$out"/{bin,share/otter}
+    cp bin/* source/formed/formed "$out/bin/"
+    cp -r examples examples-mace2 documents README* Legal Changelog Contents index.html "$out/share/otter/"
+  '';
+
+  meta = {
+    inherit (s) version;
+    description = "A reliable first-order theorem prover";
+    license = stdenv.lib.licenses.publicDomain ;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/petrinizer/default.nix b/nixpkgs/pkgs/applications/science/logic/petrinizer/default.nix
new file mode 100644
index 000000000000..d277e0e1521a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/petrinizer/default.nix
@@ -0,0 +1,31 @@
+{ mkDerivation, callPackage, buildPackages
+, async, base, bytestring, containers, fetchFromGitLab, mtl
+, parallel-io, parsec, stdenv, stm, transformers
+}:
+let
+  z3 = callPackage ./z3.nix { gomp = null; z3 = buildPackages.z3; };
+in let
+  sbv = callPackage ./sbv-7.13.nix { inherit z3; };
+in
+mkDerivation rec {
+  pname = "petrinizer";
+  version = "0.9.1.1";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.lrz.de";
+    owner = "i7";
+    repo = pname;
+    rev = version;
+    sha256 = "1n7fzm96gq5rxm2f8w8sr1yzm1zcxpf0b473c6xnhsgqsis5j4xw";
+  };
+
+  isLibrary = false;
+  isExecutable = true;
+  executableHaskellDepends = [
+    async base bytestring containers mtl parallel-io parsec sbv stm
+    transformers
+  ];
+  description = "Safety and Liveness Analysis of Petri Nets with SMT solvers";
+  license = stdenv.lib.licenses.gpl3;
+  maintainers = with stdenv.lib.maintainers; [ raskin ];
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/petrinizer/sbv-7.13.nix b/nixpkgs/pkgs/applications/science/logic/petrinizer/sbv-7.13.nix
new file mode 100644
index 000000000000..ed10e9f3db19
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/petrinizer/sbv-7.13.nix
@@ -0,0 +1,26 @@
+{ mkDerivation, array, async, base, bytestring, containers
+, crackNum, deepseq, directory, doctest, filepath, generic-deriving
+, ghc, Glob, hlint, mtl, pretty, process, QuickCheck, random
+, stdenv, syb, tasty, tasty-golden, tasty-hunit, tasty-quickcheck
+, template-haskell, time, z3
+}:
+mkDerivation {
+  pname = "sbv";
+  version = "7.13";
+  sha256 = "0bk400swnb4s98c5p71ml1px6jndaiqhf5dj7zmnliyplqcgpfik";
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [
+    array async base containers crackNum deepseq directory filepath
+    generic-deriving ghc mtl pretty process QuickCheck random syb
+    template-haskell time
+  ];
+  testHaskellDepends = [
+    base bytestring containers crackNum directory doctest filepath Glob
+    hlint mtl QuickCheck random syb tasty tasty-golden tasty-hunit
+    tasty-quickcheck template-haskell
+  ];
+  testSystemDepends = [ z3 ];
+  homepage = "http://leventerkok.github.com/sbv/";
+  description = "SMT Based Verification: Symbolic Haskell theorem prover using SMT solving";
+  license = stdenv.lib.licenses.bsd3;
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/petrinizer/z3.nix b/nixpkgs/pkgs/applications/science/logic/petrinizer/z3.nix
new file mode 100644
index 000000000000..4d868054c09b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/petrinizer/z3.nix
@@ -0,0 +1,24 @@
+{ mkDerivation, fetchpatch
+, base, containers, gomp, hspec, QuickCheck, stdenv
+, transformers, z3
+}:
+mkDerivation {
+  pname = "z3";
+  version = "408.0";
+  sha256 = "13qkzy9wc17rm60i24fa9sx15ywbxq4a80g33w20887gvqyc0q53";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [ base containers transformers ];
+  librarySystemDepends = [ gomp z3 ];
+  testHaskellDepends = [ base hspec QuickCheck ];
+  homepage = "https://github.com/IagoAbal/haskell-z3";
+  description = "Bindings for the Z3 Theorem Prover";
+  license = stdenv.lib.licenses.bsd3;
+  doCheck = false;
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/IagoAbal/haskell-z3/commit/b10e09b8a809fb5bbbb1ef86aeb62109ece99cae.patch";
+      sha256 = "13fnrs27mg3985r3lwks8fxfxr5inrayy2cyx2867d92pnl3yry4";
+    })
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/picosat/default.nix b/nixpkgs/pkgs/applications/science/logic/picosat/default.nix
new file mode 100644
index 000000000000..b13d871580c5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/picosat/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "picosat";
+  version = "965";
+
+  src = fetchurl {
+    url = "http://fmv.jku.at/picosat/${pname}-${version}.tar.gz";
+    sha256 = "0m578rpa5rdn08d10kr4lbsdwp4402hpavrz6n7n53xs517rn5hm";
+  };
+
+  prePatch = ''
+    substituteInPlace picosat.c --replace "sys/unistd.h" "unistd.h"
+
+    substituteInPlace makefile.in \
+      --replace 'ar rc' '$(AR) rc' \
+      --replace 'ranlib' '$(RANLIB)'
+  '';
+
+  configurePhase = "./configure.sh --shared --trace";
+
+  makeFlags = stdenv.lib.optional stdenv.isDarwin
+    "SONAME=-Wl,-install_name,$(out)/lib/libpicosat.so";
+
+  installPhase = ''
+   mkdir -p $out/bin $out/lib $out/share $out/include/picosat
+   cp picomus picomcs picosat picogcnf "$out"/bin
+
+   cp VERSION      "$out"/share/picosat.version
+   cp picosat.o    "$out"/lib
+   cp libpicosat.a "$out"/lib
+   cp libpicosat.so "$out"/lib
+
+   cp picosat.h "$out"/include/picosat
+  '';
+
+  meta = {
+    description = "SAT solver with proof and core support";
+    homepage    = "http://fmv.jku.at/picosat/";
+    license     = stdenv.lib.licenses.mit;
+    platforms   = stdenv.lib.platforms.unix;
+    maintainers = with stdenv.lib.maintainers; [ roconnor thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/poly/default.nix b/nixpkgs/pkgs/applications/science/logic/poly/default.nix
new file mode 100644
index 000000000000..ee50a2d85040
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/poly/default.nix
@@ -0,0 +1,25 @@
+{stdenv, fetchFromGitHub, gmp, cmake, python}:
+
+stdenv.mkDerivation rec {
+  pname = "libpoly";
+  version = "0.1.8";
+
+  src = fetchFromGitHub {
+    owner = "SRI-CSL";
+    repo = "libpoly";
+    # they've pushed to the release branch, use explicit tag
+    rev = "refs/tags/v${version}";
+    sha256 = "1n3gijksnl2ybznq4lkwm2428f82423sxq18gnb2g1kiwqlzdaa3";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ gmp python ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/SRI-CSL/libpoly";
+    description = "C library for manipulating polynomials";
+    license = licenses.lgpl3;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/potassco/clingcon.nix b/nixpkgs/pkgs/applications/science/logic/potassco/clingcon.nix
new file mode 100644
index 000000000000..1203822d86e9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/potassco/clingcon.nix
@@ -0,0 +1,43 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, bison
+, re2c
+}:
+
+stdenv.mkDerivation rec {
+  pname = "clingcon";
+  version = "3.3.0";
+
+  src = fetchFromGitHub {
+    owner = "potassco";
+    repo = "${pname}";
+    rev = "v${version}";
+    fetchSubmodules = true;
+    sha256 = "1q7517h10jfvjdk2czq8d6y57r8kr1j1jj2k2ip2qxkpyfigk4rs";
+   };
+
+  # deal with clingcon through git submodules recursively importing
+  # an outdated version of libpotassco which uses deprecated <xlocale.h> header in .cpp files
+  postPatch = ''
+    find ./ -type f -exec sed -i 's/<xlocale.h>/<locale.h>/g' {} \;
+  '';
+
+  nativeBuildInputs = [ cmake bison re2c ];
+
+  cmakeFlags = [
+    "-DCLINGCON_MANAGE_RPATH=ON"
+    "-DCLINGO_BUILD_WITH_PYTHON=OFF"
+    "-DCLINGO_BUILD_WITH_LUA=OFF"
+  ];
+
+  meta = {
+    inherit version;
+    description = "Extension of clingo to handle constraints over integers";
+    license = stdenv.lib.licenses.gpl3; # for now GPL3, next version MIT!
+    platforms = stdenv.lib.platforms.unix;
+    homepage = "https://potassco.org/";
+    downloadPage = "https://github.com/potassco/clingcon/releases/";
+    changelog = "https://github.com/potassco/clingcon/releases/tag/v${version}";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/potassco/clingo.nix b/nixpkgs/pkgs/applications/science/logic/potassco/clingo.nix
new file mode 100644
index 000000000000..7c1ee8099e2c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/potassco/clingo.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchzip, cmake }:
+
+stdenv.mkDerivation rec {
+  pname = "clingo";
+  version = "5.4.0";
+
+  src = fetchzip {
+    url = "https://github.com/potassco/clingo/archive/v${version}.tar.gz";
+    sha256 = "0gfqlgwg3qx042w6hdc9qpmr50n4vci3p0ddk28f3kqacf6q9q7m";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  cmakeFlags = [ "-DCLINGO_BUILD_WITH_PYTHON=OFF" ];
+
+  meta = {
+    inherit version;
+    description = "ASP system to ground and solve logic programs";
+    license = stdenv.lib.licenses.mit;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.unix;
+    homepage = "https://potassco.org/";
+    downloadPage = "https://github.com/potassco/clingo/releases/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/potassco/clingo.upstream b/nixpkgs/pkgs/applications/science/logic/potassco/clingo.upstream
new file mode 100644
index 000000000000..062577d1451b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/potassco/clingo.upstream
@@ -0,0 +1,6 @@
+target clingo.nix
+attribute_name clingo
+url https://github.com/potassco/clingo/releases/
+ensure_choice
+version '.*/v([0-9.]+)[.]tar[.].*' '\1'
+minimize_overwrite
diff --git a/nixpkgs/pkgs/applications/science/logic/prooftree/default.nix b/nixpkgs/pkgs/applications/science/logic/prooftree/default.nix
new file mode 100644
index 000000000000..98313e48cb27
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/prooftree/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, pkgconfig, ncurses, ocamlPackages }:
+
+stdenv.mkDerivation rec {
+  pname = "prooftree";
+  version = "0.13";
+
+  src = fetchurl {
+    url = "https://askra.de/software/prooftree/releases/prooftree-${version}.tar.gz";
+    sha256 = "0z1z4wqbqwgppkh2bm89fgy07a0y2m6g4lvcyzs09sm1ysklk2dh";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ ncurses ] ++ (with ocamlPackages; [
+    ocaml findlib camlp5 lablgtk ]);
+
+  dontAddPrefix = true;
+  configureFlags = [ "--prefix" "$(out)" ];
+
+  meta = with stdenv.lib; {
+    description = "A program for proof-tree visualization";
+    longDescription = ''
+      Prooftree is a program for proof-tree visualization during interactive
+      proof development in a theorem prover. It is currently being developed
+      for Coq and Proof General. Prooftree helps against getting lost between
+      different subgoals in interactive proof development. It clearly shows
+      where the current subgoal comes from and thus helps in developing the
+      right plan for solving it.
+
+      Prooftree uses different colors for the already proven subgoals, the
+      current branch in the proof and the still open subgoals. Sequent texts
+      are not displayed in the proof tree itself, but they are shown as a
+      tool-tip when the mouse rests over a sequent symbol. Long proof commands
+      are abbreviated in the tree display, but show up in full length as
+      tool-tip. Both, sequents and proof commands, can be shown in the display
+      below the tree (on single click) or in a separate window (on double or
+      shift-click).
+    '';
+    homepage = "http://askra.de/software/prooftree";
+    platforms = platforms.unix;
+    maintainers = [ maintainers.jwiegley ];
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/prover9/default.nix b/nixpkgs/pkgs/applications/science/logic/prover9/default.nix
new file mode 100644
index 000000000000..fcdff8558483
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/prover9/default.nix
@@ -0,0 +1,45 @@
+{stdenv, fetchurl}:
+
+stdenv.mkDerivation {
+  name = "prover9-2009-11a";
+
+  src = fetchurl {
+    url = "https://www.cs.unm.edu/~mccune/mace4/download/LADR-2009-11A.tar.gz";
+    sha256 = "1l2i3d3h5z7nnbzilb6z92r0rbx0kh6yaxn2c5qhn3000xcfsay3";
+  };
+
+  hardeningDisable = [ "format" ];
+
+  patchPhase = ''
+    RM=$(type -tp rm)
+    MV=$(type -tp mv)
+    CP=$(type -tp cp)
+    for f in Makefile */Makefile; do
+      substituteInPlace $f --replace "/bin/rm" "$RM" \
+        --replace "/bin/mv" "$MV" \
+        --replace "/bin/cp" "$CP";
+    done
+  '';
+
+  buildFlags = [ "all" ];
+
+  checkPhase = "make test1";
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp bin/* $out/bin
+  '';
+
+  meta = {
+    homepage = "https://www.cs.unm.edu/~mccune/mace4/";
+    license = "GPL";
+    description = "Automated theorem prover for first-order and equational logic";
+    longDescription = ''
+      Prover9 is a resolution/paramodulation automated theorem prover
+      for first-order and equational logic. Prover9 is a successor of
+      the Otter Prover. This is the LADR command-line version.
+    '';
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/proverif/default.nix b/nixpkgs/pkgs/applications/science/logic/proverif/default.nix
new file mode 100644
index 000000000000..6a9367b30aa0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/proverif/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, ocamlPackages }:
+
+stdenv.mkDerivation rec {
+  pname = "proverif";
+  version = "2.01";
+
+  src = fetchurl {
+    url    = "http://prosecco.gforge.inria.fr/personal/bblanche/proverif/proverif${version}.tar.gz";
+    sha256 = "01wp5431c77z0aaa99h8bnm5yhr6jslpqc8iyg0a7gxfqnb19gxi";
+  };
+
+  buildInputs = with ocamlPackages; [ ocaml findlib lablgtk ];
+
+  buildPhase = "./build";
+  installPhase = ''
+    mkdir -p $out/bin
+    cp ./proverif      $out/bin
+    cp ./proveriftotex $out/bin
+  '';
+
+  meta = {
+    description = "Cryptographic protocol verifier in the Dolev-Yao model";
+    homepage    = "https://prosecco.gforge.inria.fr/personal/bblanche/proverif/";
+    license     = stdenv.lib.licenses.gpl2;
+    platforms   = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/redprl/default.nix b/nixpkgs/pkgs/applications/science/logic/redprl/default.nix
new file mode 100644
index 000000000000..49245c73f2c4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/redprl/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchgit, mlton }:
+stdenv.mkDerivation {
+  name = "redprl-2017-03-28";
+  src = fetchgit {
+    url = "https://github.com/RedPRL/sml-redprl.git";
+    rev = "bdf027de732e4a8d10f9f954389dfff0c822f18b";
+    sha256 = "0cihwnd78d3ksxp6mppifm7xpi3fsii5mixvicajy87ggw8z305c";
+    fetchSubmodules = true;
+  };
+  buildInputs = [ mlton ];
+  patchPhase = ''
+    patchShebangs ./script/
+  '';
+  buildPhase = ''
+    ./script/mlton.sh
+  '';
+  installPhase = ''
+    mkdir -p $out/bin
+    mv ./bin/redprl $out/bin
+  '';
+  meta = {
+    description = "A proof assistant for Nominal Computational Type Theory";
+    homepage = "http://www.redprl.org/";
+    license = stdenv.lib.licenses.mit;
+    maintainers = [ stdenv.lib.maintainers.acowley ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/sad/default.nix b/nixpkgs/pkgs/applications/science/logic/sad/default.nix
new file mode 100644
index 000000000000..f1066abf6931
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/sad/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, haskell, spass }:
+
+stdenv.mkDerivation {
+  name = "system-for-automated-deduction-2.3.25";
+  src = fetchurl {
+    url = "http://nevidal.org/download/sad-2.3-25.tar.gz";
+    sha256 = "10jd93xgarik7xwys5lq7fx4vqp7c0yg1gfin9cqfch1k1v8ap4b";
+  };
+  buildInputs = [ haskell.compiler.ghc844 spass ];
+  patches = [
+    ./patch.patch
+    # Since the LTS 12.0 update, <> is an operator in Prelude, colliding with
+    # the <> operator with a different meaning defined by this package
+    ./monoid.patch
+  ];
+  postPatch = ''
+    substituteInPlace Alice/Main.hs --replace init.opt $out/init.opt
+    '';
+  installPhase = ''
+    mkdir -p $out/{bin,provers}
+    install alice $out/bin
+    install provers/moses $out/provers
+    substituteAll provers/provers.dat $out/provers/provers.dat
+    substituteAll init.opt $out/init.opt
+    cp -r examples $out
+    '';
+  inherit spass;
+  meta = {
+    description = "A program for automated proving of mathematical texts";
+    longDescription = ''
+      The system for automated deduction is intended for automated processing of formal mathematical texts
+      written in a special language called ForTheL (FORmal THEory Language) or in a traditional first-order language
+      '';
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = [ stdenv.lib.maintainers.schmitthenner ];
+    homepage = "http://nevidal.org/sad.en.html";
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/sad/monoid.patch b/nixpkgs/pkgs/applications/science/logic/sad/monoid.patch
new file mode 100644
index 000000000000..da9c21bcae91
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/sad/monoid.patch
@@ -0,0 +1,51 @@
+diff --git a/Alice/Core/Check.hs b/Alice/Core/Check.hs
+index 0700fa0388f..69815864710 100644
+--- a/Alice/Core/Check.hs
++++ b/Alice/Core/Check.hs
+@@ -18,8 +18,12 @@
+  -  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -}
+ 
++{-# LANGUAGE NoImplicitPrelude #-}
++
+ module Alice.Core.Check (fillDef) where
+ 
++import Prelude hiding ((<>))
++
+ import Control.Monad
+ import Data.Maybe
+ 
+diff --git a/Alice/Core/Reason.hs b/Alice/Core/Reason.hs
+index c361bcf220d..4e493d8c91b 100644
+--- a/Alice/Core/Reason.hs
++++ b/Alice/Core/Reason.hs
+@@ -17,9 +17,12 @@
+  -  You should have received a copy of the GNU General Public License
+  -  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -}
++{-# LANGUAGE NoImplicitPrelude #-}
+ 
+ module Alice.Core.Reason where
+ 
++import Prelude hiding ((<>))
++
+ import Control.Monad
+ 
+ import Alice.Core.Base
+diff --git a/Alice/Core/Verify.hs b/Alice/Core/Verify.hs
+index 4f8550bdf11..0f59d135b16 100644
+--- a/Alice/Core/Verify.hs
++++ b/Alice/Core/Verify.hs
+@@ -18,8 +18,12 @@
+  -  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -}
+ 
++{-# LANGUAGE NoImplicitPrelude #-}
++
+ module Alice.Core.Verify (verify) where
+ 
++import Prelude hiding ((<>))
++
+ import Control.Monad
+ import Data.IORef
+ import Data.Maybe
diff --git a/nixpkgs/pkgs/applications/science/logic/sad/patch.patch b/nixpkgs/pkgs/applications/science/logic/sad/patch.patch
new file mode 100644
index 000000000000..a5b1d6177083
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/sad/patch.patch
@@ -0,0 +1,200 @@
+diff -aur serious/sad-2.3-25/Alice/Core/Base.hs sad-2.3-25/Alice/Core/Base.hs
+--- serious/sad-2.3-25/Alice/Core/Base.hs	2008-03-29 18:24:12.000000000 +0000
++++ sad-2.3-25/Alice/Core/Base.hs	2015-11-27 06:38:28.740840823 +0000
+@@ -21,6 +21,7 @@
+ module Alice.Core.Base where
+ 
+ import Control.Monad
++import Control.Applicative
+ import Data.IORef
+ import Data.List
+ import Data.Time
+@@ -61,10 +62,21 @@
+ type CRMC a b = IORef RState -> IO a -> (b -> IO a) -> IO a
+ newtype CRM b = CRM { runCRM :: forall a . CRMC a b }
+ 
++instance Functor CRM where
++  fmap = liftM
++  
++instance Applicative CRM where
++  pure = return
++  (<*>) = ap
++
+ instance Monad CRM where
+   return r  = CRM $ \ _ _ k -> k r
+   m >>= n   = CRM $ \ s z k -> runCRM m s z (\ r -> runCRM (n r) s z k)
+ 
++instance Alternative CRM where
++  (<|>) = mplus
++  empty = mzero
++  
+ instance MonadPlus CRM where
+   mzero     = CRM $ \ _ z _ -> z
+   mplus m n = CRM $ \ s z k -> runCRM m s (runCRM n s z k) k
+diff -aur serious/sad-2.3-25/Alice/Core/Thesis.hs sad-2.3-25/Alice/Core/Thesis.hs
+--- serious/sad-2.3-25/Alice/Core/Thesis.hs	2008-03-05 13:10:50.000000000 +0000
++++ sad-2.3-25/Alice/Core/Thesis.hs	2015-11-27 06:35:08.311015166 +0000
+@@ -21,6 +21,7 @@
+ module Alice.Core.Thesis (thesis) where
+ 
+ import Control.Monad
++import Control.Applicative
+ import Data.List
+ import Data.Maybe
+ 
+@@ -126,11 +127,22 @@
+ 
+ newtype TM res = TM { runTM :: [String] -> [([String], res)] }
+ 
++instance Functor TM where
++  fmap = liftM
++
++instance Applicative TM where
++  pure = return
++  (<*>) = ap
++
+ instance Monad TM where
+   return r  = TM $ \ s -> [(s, r)]
+   m >>= k   = TM $ \ s -> concatMap apply (runTM m s)
+     where apply (s, r) = runTM (k r) s
+ 
++instance Alternative TM where
++  (<|>) = mplus
++  empty = mzero
++    
+ instance MonadPlus TM where
+   mzero     = TM $ \ _ -> []
+   mplus m k = TM $ \ s -> runTM m s ++ runTM k s
+diff -aur serious/sad-2.3-25/Alice/Export/Base.hs sad-2.3-25/Alice/Export/Base.hs
+--- serious/sad-2.3-25/Alice/Export/Base.hs	2008-03-09 09:36:39.000000000 +0000
++++ sad-2.3-25/Alice/Export/Base.hs	2015-11-27 06:32:47.782738005 +0000
+@@ -39,7 +39,7 @@
+ -- Database reader
+ 
+ readPrDB :: String -> IO [Prover]
+-readPrDB file = do  inp <- catch (readFile file) $ die . ioeGetErrorString
++readPrDB file = do  inp <- catchIOError (readFile file) $ die . ioeGetErrorString
+ 
+                     let dws = dropWhile isSpace
+                         cln = reverse . dws . reverse . dws
+diff -aur serious/sad-2.3-25/Alice/Export/Prover.hs sad-2.3-25/Alice/Export/Prover.hs
+--- serious/sad-2.3-25/Alice/Export/Prover.hs	2008-03-09 09:36:39.000000000 +0000
++++ sad-2.3-25/Alice/Export/Prover.hs	2015-11-27 06:36:47.632919161 +0000
+@@ -60,7 +60,7 @@
+       when (askIB IBPdmp False ins) $ putStrLn tsk
+ 
+       seq (length tsk) $ return $
+-        do  (wh,rh,eh,ph) <- catch run
++        do  (wh,rh,eh,ph) <- catchIOError run
+                 $ \ e -> die $ "run error: " ++ ioeGetErrorString e
+ 
+             hPutStrLn wh tsk ; hClose wh
+diff -aur serious/sad-2.3-25/Alice/ForTheL/Base.hs sad-2.3-25/Alice/ForTheL/Base.hs
+--- serious/sad-2.3-25/Alice/ForTheL/Base.hs	2008-03-09 09:36:39.000000000 +0000
++++ sad-2.3-25/Alice/ForTheL/Base.hs	2015-11-27 06:31:51.921230428 +0000
+@@ -226,7 +226,7 @@
+ varlist = do  vs <- chainEx (char ',') var
+               nodups vs ; return vs
+ 
+-nodups vs = unless (null $ dups vs) $
++nodups vs = unless ((null :: [a] -> Bool) $ dups vs) $
+               fail $ "duplicate names: " ++ show vs
+ 
+ hidden  = askPS psOffs >>= \ n -> return ('h':show n)
+diff -aur serious/sad-2.3-25/Alice/Import/Reader.hs sad-2.3-25/Alice/Import/Reader.hs
+--- serious/sad-2.3-25/Alice/Import/Reader.hs	2008-03-09 09:36:39.000000000 +0000
++++ sad-2.3-25/Alice/Import/Reader.hs	2015-11-27 06:36:41.818866167 +0000
+@@ -24,7 +24,7 @@
+ import Control.Monad
+ import System.IO
+ import System.IO.Error
+-import System.Exit
++import System.Exit hiding (die)
+ 
+ import Alice.Data.Text
+ import Alice.Data.Instr
+@@ -44,7 +44,7 @@
+ readInit ""   = return []
+ 
+ readInit file =
+-  do  input <- catch (readFile file) $ die file . ioeGetErrorString
++  do  input <- catchIOError (readFile file) $ die file . ioeGetErrorString
+       let tkn = tokenize input ; ips = initPS ()
+           inp = ips { psRest = tkn, psFile = file, psLang = "Init" }
+       liftM fst $ fireLPM instf inp
+@@ -74,7 +74,7 @@
+ reader lb fs (ps:ss) [TI (InStr ISfile file)] =
+   do  let gfl = if null file  then hGetContents stdin
+                               else readFile file
+-      input <- catch gfl $ die file . ioeGetErrorString
++      input <- catchIOError gfl $ die file . ioeGetErrorString
+       let tkn = tokenize input
+           ips = initPS $ (psProp ps) { tvr_expr = [] }
+           sps = ips { psRest = tkn, psFile = file, psOffs = psOffs ps }
+diff -aur serious/sad-2.3-25/Alice/Parser/Base.hs sad-2.3-25/Alice/Parser/Base.hs
+--- serious/sad-2.3-25/Alice/Parser/Base.hs	2008-03-09 09:36:40.000000000 +0000
++++ sad-2.3-25/Alice/Parser/Base.hs	2015-11-27 06:14:28.616734527 +0000
+@@ -20,6 +20,7 @@
+ 
+ module Alice.Parser.Base where
+ 
++import Control.Applicative
+ import Control.Monad
+ import Data.List
+ 
+@@ -45,11 +46,22 @@
+ type CPMC a b c = (c -> CPMS a b) -> (String -> CPMS a b) -> CPMS a b
+ newtype CPM a c = CPM { runCPM :: forall b . CPMC a b c }
+ 
++instance Functor (CPM a) where
++  fmap = liftM
++
++instance Applicative (CPM a) where
++  pure = return
++  (<*>) = ap
++
+ instance Monad (CPM a) where
+   return r  = CPM $ \ k _ -> k r
+   m >>= n   = CPM $ \ k l -> runCPM m (\ b -> runCPM (n b) k l) l
+   fail e    = CPM $ \ _ l -> l e
+ 
++instance Alternative (CPM a) where
++    (<|>) = mplus
++    empty = mzero
++  
+ instance MonadPlus (CPM a) where
+   mzero     = CPM $ \ _ _ _ z -> z
+   mplus m n = CPM $ \ k l s -> runCPM m k l s . runCPM n k l s
+diff -aur serious/sad-2.3-25/init.opt sad-2.3-25/init.opt
+--- serious/sad-2.3-25/init.opt	2007-10-11 15:25:45.000000000 +0000
++++ sad-2.3-25/init.opt	2015-11-27 07:23:41.372816854 +0000
+@@ -1,6 +1,6 @@
+ # Alice init options
+-[library examples]
+-[provers provers/provers.dat]
++[library @out@/examples]
++[provers @out@/provers/provers.dat]
+ [prover spass]
+ [timelimit 3]
+ [depthlimit 7]
+diff -aur serious/sad-2.3-25/provers/provers.dat sad-2.3-25/provers/provers.dat
+--- serious/sad-2.3-25/provers/provers.dat	2008-08-26 21:20:25.000000000 +0000
++++ sad-2.3-25/provers/provers.dat	2015-11-27 07:24:18.878169702 +0000
+@@ -3,7 +3,7 @@
+ Pmoses
+ LMoses
+ Fmoses
+-Cprovers/moses
++C@out@/provers/moses
+ Yproved in
+ Nfound unprovable in
+ Utimeout in
+@@ -12,7 +12,7 @@
+ Pspass
+ LSPASS
+ Fdfg
+-Cprovers/SPASS -CNFOptSkolem=0 -PProblem=0 -PGiven=0 -Stdin -TimeLimit=%d
++C@spass@/bin/SPASS -CNFOptSkolem=0 -PProblem=0 -PGiven=0 -Stdin -TimeLimit=%d
+ YSPASS beiseite: Proof found.
+ NSPASS beiseite: Completion found.
+ USPASS beiseite: Ran out of time.
diff --git a/nixpkgs/pkgs/applications/science/logic/satallax/default.nix b/nixpkgs/pkgs/applications/science/logic/satallax/default.nix
new file mode 100644
index 000000000000..6c2b03b5b37d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/satallax/default.nix
@@ -0,0 +1,71 @@
+{stdenv, fetchurl, ocaml, zlib, which, eprover, makeWrapper, coq}:
+stdenv.mkDerivation rec {
+  pname = "satallax";
+  version = "2.7";
+
+  buildInputs = [ocaml zlib which eprover makeWrapper coq];
+  src = fetchurl {
+    url = "https://www.ps.uni-saarland.de/~cebrown/satallax/downloads/${pname}-${version}.tar.gz";
+    sha256 = "1kvxn8mc35igk4vigi5cp7w3wpxk2z3bgwllfm4n3h2jfs0vkpib";
+  };
+
+  patches = [
+    # GCC9 doesn't allow default value in friend declaration.
+    ./fix-declaration-gcc9.patch
+  ];
+
+  preConfigure = ''
+    mkdir fake-tools
+    echo "echo 'Nix-build-host.localdomain'" > fake-tools/hostname
+    chmod a+x fake-tools/hostname
+    export PATH="$PATH:$PWD/fake-tools"
+
+    (
+      cd picosat-*
+      ./configure
+      make
+    )
+    export PATH="$PATH:$PWD/libexec/satallax"
+
+    mkdir -p "$out/libexec/satallax"
+    cp picosat-*/picosat picosat-*/picomus "$out/libexec/satallax"
+
+    ( 
+      cd minisat
+      export MROOT=$PWD
+      cd core
+      make
+      cd ../simp
+      make
+    )
+  '';
+
+  postBuild = "echo testing; ! (bash ./test | grep ERROR)";
+
+  installPhase = ''
+    mkdir -p "$out/share/doc/satallax" "$out/bin" "$out/lib" "$out/lib/satallax"
+    cp bin/satallax.opt "$out/bin/satallax"
+    wrapProgram "$out/bin/satallax" \
+      --suffix PATH : "${stdenv.lib.makeBinPath [ coq eprover ]}:$out/libexec/satallax" \
+      --add-flags "-M" --add-flags "$out/lib/satallax/modes"
+
+    cp LICENSE README "$out/share/doc/satallax"
+
+    cp bin/*.so "$out/lib"
+
+    cp -r modes "$out/lib/satallax/"
+    cp -r problems "$out/lib/satallax/"
+    cp -r coq* "$out/lib/satallax/"
+  '';
+
+  meta = {
+    inherit version;
+    description = ''Automated theorem prover for higher-order logic'';
+    license = stdenv.lib.licenses.mit ;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    downloadPage = "http://www.ps.uni-saarland.de/~cebrown/satallax/downloads.php";
+    homepage = "http://www.ps.uni-saarland.de/~cebrown/satallax/index.php";
+    updateWalker = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/satallax/fix-declaration-gcc9.patch b/nixpkgs/pkgs/applications/science/logic/satallax/fix-declaration-gcc9.patch
new file mode 100644
index 000000000000..1933fc25c4da
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/satallax/fix-declaration-gcc9.patch
@@ -0,0 +1,21 @@
+diff --git i/minisat/core/SolverTypes.h w/minisat/core/SolverTypes.h
+--- i/minisat/core/SolverTypes.h
++++ w/minisat/core/SolverTypes.h
+@@ -47,7 +47,7 @@ struct Lit {
+     int     x;
+ 
+     // Use this as a constructor:
+-    friend Lit mkLit(Var var, bool sign = false);
++    friend Lit mkLit(Var var, bool sign);
+ 
+     bool operator == (Lit p) const { return x == p.x; }
+     bool operator != (Lit p) const { return x != p.x; }
+@@ -55,7 +55,7 @@ struct Lit {
+ };
+ 
+ 
+-inline  Lit  mkLit     (Var var, bool sign) { Lit p; p.x = var + var + (int)sign; return p; }
++inline  Lit  mkLit     (Var var, bool sign = false) { Lit p; p.x = var + var + (int)sign; return p; }
+ inline  Lit  operator ~(Lit p)              { Lit q; q.x = p.x ^ 1; return q; }
+ inline  Lit  operator ^(Lit p, bool b)      { Lit q; q.x = p.x ^ (unsigned int)b; return q; }
+ inline  bool sign      (Lit p)              { return p.x & 1; }
diff --git a/nixpkgs/pkgs/applications/science/logic/saw-tools/default.nix b/nixpkgs/pkgs/applications/science/logic/saw-tools/default.nix
new file mode 100644
index 000000000000..71b26f8023a2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/saw-tools/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchurl, gmp4, ncurses, zlib, clang }:
+
+let
+  libPath = stdenv.lib.makeLibraryPath
+    [ stdenv.cc.libc
+      stdenv.cc.cc
+      gmp4
+      ncurses
+      zlib
+    ] + ":${stdenv.cc.cc.lib}/lib64";
+
+  url = "https://github.com/GaloisInc/saw-script/releases/download";
+
+  saw-bin =
+    if stdenv.hostPlatform.system == "i686-linux"
+    then fetchurl {
+      url    = url + "/v0.1.1-dev/saw-0.1.1-dev-2015-07-31-CentOS6-32.tar.gz";
+      sha256 = "126iag5nnvndi78c921z7vjrjfwcspn1hlxwwhzmqm4rvbhhr9v9";
+    }
+    else fetchurl {
+      url    = url + "/v0.1.1-dev/saw-0.1.1-dev-2015-07-31-CentOS6-64.tar.gz";
+      sha256 = "07gyf319v6ama6n1aj96403as04bixi8mbisfy7f7va689zklflr";
+    };
+in
+stdenv.mkDerivation {
+  pname = "saw-tools";
+  version = "0.1.1-20150731";
+
+  src = saw-bin;
+
+  installPhase = ''
+    mkdir -p $out/lib $out/share
+
+    mv bin $out/bin
+    mv doc $out/share
+
+    ln -s ${ncurses.out}/lib/libtinfo.so.5       $out/lib/libtinfo.so.5
+    ln -s ${stdenv.cc.libc}/lib/libpthread.so.0 $out/lib/libpthread.so.0
+
+    # Add a clang symlink for easy building with a suitable compiler.
+    ln -s ${clang}/bin/clang $out/bin/saw-clang
+  '';
+
+  fixupPhase = ''
+    for x in bin/bcdump bin/extcore-info bin/jss bin/llvm-disasm bin/lss bin/saw; do
+      patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        --set-rpath "$out/lib:${libPath}" $out/$x;
+    done
+  '';
+
+  phases = "unpackPhase installPhase fixupPhase";
+
+  meta = {
+    description = "Tools for software verification and analysis";
+    homepage    = "https://saw.galois.com";
+    license     = stdenv.lib.licenses.unfreeRedistributable;
+    platforms   = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/spass/default.nix b/nixpkgs/pkgs/applications/science/logic/spass/default.nix
new file mode 100644
index 000000000000..ece6f0b9f6a8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/spass/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, bison, flex }:
+
+let
+  baseVersion="3";
+  minorVersion="9";
+
+  extraTools = "FLOTTER prolog2dfg dfg2otter dfg2dimacs dfg2tptp"
+    + " dfg2ascii dfg2dfg tptp2dfg dimacs2dfg pgen rescmp";
+in
+
+stdenv.mkDerivation {
+  pname = "spass";
+  version = "${baseVersion}.${minorVersion}";
+
+  src = fetchurl {
+    url = "http://www.spass-prover.org/download/sources/spass${baseVersion}${minorVersion}.tgz";
+    sha256 = "11cyn3kcff4r79rsw2s0xm6rdb8bi0kpkazv2b48jhcms7xw75qp";
+  };
+
+  sourceRoot = ".";
+
+  nativeBuildInputs = [ bison flex ];
+
+  buildPhase = ''
+    make RM="rm -f" proparser.c ${extraTools} opt
+  '';
+  installPhase = ''
+    mkdir -p $out/bin
+    install -m0755 SPASS ${extraTools} $out/bin/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Automated theorem prover for first-order logic";
+    maintainers = with maintainers;
+    [
+      raskin
+    ];
+    platforms = platforms.unix;
+    license = licenses.bsd2;
+    downloadPage = "http://www.spass-prover.org/download/index.html";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/statverif/default.nix b/nixpkgs/pkgs/applications/science/logic/statverif/default.nix
new file mode 100644
index 000000000000..e0efb28819d2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/statverif/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, ocaml }:
+
+stdenv.mkDerivation rec {
+  pname = "statverif";
+  version = "1.86pl4";
+
+  src = fetchurl {
+    url    = "http://prosecco.gforge.inria.fr/personal/bblanche/proverif/proverif${version}.tar.gz";
+    sha256 = "163vdcixs764jj8xa08w80qm4kcijf7xj911yp8jvz6pi1q5g13i";
+  };
+
+  pf-patch = fetchurl {
+    url    = "http://markryan.eu/research/statverif/files/proverif-${version}-statverif-2657ab4.patch";
+    sha256 = "113jjhi1qkcggbsmbw8fa9ln8vs7vy2r288szks7rn0jjn0wxmbw";
+  };
+
+  buildInputs = [ ocaml ];
+
+  patchPhase = "patch -p1 < ${pf-patch}";
+  buildPhase = "./build";
+  installPhase = ''
+    mkdir -p $out/bin
+    cp ./proverif      $out/bin/statverif
+    cp ./proveriftotex $out/bin/statveriftotex
+  '';
+
+  meta = {
+    description = "Verification of stateful processes (via Proverif)";
+    homepage    = "https://markryan.eu/research/statverif/";
+    license     = stdenv.lib.licenses.gpl2;
+    platforms   = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/stp/default.nix b/nixpkgs/pkgs/applications/science/logic/stp/default.nix
new file mode 100644
index 000000000000..dd00eda1b571
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/stp/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, cmake, boost, bison, flex, fetchFromGitHub, perl
+, python3, python3Packages, zlib, minisat, cryptominisat }:
+
+stdenv.mkDerivation rec {
+  pname = "stp";
+  version = "2.3.3";
+
+  src = fetchFromGitHub {
+    owner = "stp";
+    repo = "stp";
+    rev    = version;
+    sha256 = "1yg2v4wmswh1sigk47drwsxyayr472mf4i47lqmlcgn9hhbx1q87";
+  };
+
+  buildInputs = [ boost zlib minisat cryptominisat python3 ];
+  nativeBuildInputs = [ cmake bison flex perl ];
+  preConfigure = ''
+    python_install_dir=$out/${python3Packages.python.sitePackages}
+    mkdir -p $python_install_dir
+    cmakeFlagsArray=(
+      $cmakeFlagsArray
+      "-DBUILD_SHARED_LIBS=ON"
+      "-DPYTHON_LIB_INSTALL_DIR=$python_install_dir"
+    )
+  '';
+
+  # seems to build fine now, may revert if concurrency does become an issue
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Simple Theorem Prover";
+    maintainers = with maintainers; [ ];
+    platforms = platforms.linux;
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/symbiyosys/default.nix b/nixpkgs/pkgs/applications/science/logic/symbiyosys/default.nix
new file mode 100644
index 000000000000..debdc56f0353
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/symbiyosys/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchFromGitHub
+, bash, python3, yosys
+, yices, boolector, aiger
+}:
+
+stdenv.mkDerivation {
+  pname = "symbiyosys";
+  version = "2020.05.18";
+
+  src = fetchFromGitHub {
+    owner  = "YosysHQ";
+    repo   = "SymbiYosys";
+    rev    = "13fef4a710d0e2cf0f109ca75a94fb7253ba6838";
+    sha256 = "152nyxddiqbxvbd06cmwavvgi931v6i35zj9sh3z04m737grvb3d";
+  };
+
+  buildInputs = [ python3 ];
+  patchPhase = ''
+    patchShebangs .
+
+    # Fix up Yosys imports
+    substituteInPlace sbysrc/sby.py \
+      --replace "##yosys-sys-path##" \
+                "sys.path += [p + \"/share/yosys/python3/\" for p in [\"$out\", \"${yosys}\"]]"
+
+    # Fix various executable references
+    substituteInPlace sbysrc/sby_core.py \
+      --replace '"/usr/bin/env", "bash"' '"${bash}/bin/bash"' \
+      --replace ': "btormc"'       ': "${boolector}/bin/btormc"' \
+      --replace ': "yosys"'        ': "${yosys}/bin/yosys"' \
+      --replace ': "yosys-smtbmc"' ': "${yosys}/bin/yosys-smtbmc"' \
+      --replace ': "yosys-abc"'    ': "${yosys}/bin/yosys-abc"' \
+      --replace ': "aigbmc"'       ': "${aiger}/bin/aigbmc"' \
+  '';
+
+  buildPhase = "true";
+  installPhase = ''
+    mkdir -p $out/bin $out/share/yosys/python3
+
+    cp sbysrc/sby_*.py $out/share/yosys/python3/
+    cp sbysrc/sby.py $out/bin/sby
+
+    chmod +x $out/bin/sby
+  '';
+
+  meta = {
+    description = "Tooling for Yosys-based verification flows";
+    homepage    = "https://symbiyosys.readthedocs.io/";
+    license     = stdenv.lib.licenses.isc;
+    maintainers = with stdenv.lib.maintainers; [ thoughtpolice emily ];
+    platforms   = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/tamarin-prover/default.nix b/nixpkgs/pkgs/applications/science/logic/tamarin-prover/default.nix
new file mode 100644
index 000000000000..857aba5a2607
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/tamarin-prover/default.nix
@@ -0,0 +1,109 @@
+{ haskellPackages, mkDerivation, fetchFromGitHub, lib
+# the following are non-haskell dependencies
+, makeWrapper, which, maude, graphviz, ocaml
+}:
+
+let
+  version = "1.4.1";
+  src = fetchFromGitHub {
+    owner  = "tamarin-prover";
+    repo   = "tamarin-prover";
+    rev    = "d2e1c57311ce4ed0ef46d0372c4995b8fdc25323";
+    sha256 = "1bf2qvb646jg3qxd6jgp9ja3wlr888wchxi9mfr3kg7hfn63vxbq";
+  };
+
+  # tamarin has its own dependencies, but they're kept inside the repo,
+  # no submodules. this factors out the common metadata among all derivations
+  common = pname: src: {
+    inherit pname version src;
+
+    license     = lib.licenses.gpl3;
+    homepage    = "https://tamarin-prover.github.io";
+    description = "Security protocol verification in the symbolic model";
+    maintainers = [ lib.maintainers.thoughtpolice ];
+  };
+
+  # tamarin use symlinks to the LICENSE and Setup.hs files, so for these sublibraries
+  # we set the patchPhase to fix that. otherwise, cabal cries a lot.
+  replaceSymlinks = ''
+    cp --remove-destination ${src}/LICENSE .;
+    cp --remove-destination ${src}/Setup.hs .;
+  '';
+
+  tamarin-prover-utils = mkDerivation (common "tamarin-prover-utils" (src + "/lib/utils") // {
+    postPatch = replaceSymlinks;
+    libraryHaskellDepends = with haskellPackages; [
+      base base64-bytestring binary blaze-builder bytestring containers
+      deepseq dlist fclabels mtl pretty safe SHA syb time transformers
+    ];
+  });
+
+  tamarin-prover-term = mkDerivation (common "tamarin-prover-term" (src + "/lib/term") // {
+    postPatch = replaceSymlinks;
+    libraryHaskellDepends = (with haskellPackages; [
+      attoparsec base binary bytestring containers deepseq dlist HUnit
+      mtl process safe
+    ]) ++ [ tamarin-prover-utils ];
+  });
+
+  tamarin-prover-theory = mkDerivation (common "tamarin-prover-theory" (src + "/lib/theory") // {
+    postPatch = replaceSymlinks;
+    doHaddock = false; # broken
+    libraryHaskellDepends = (with haskellPackages; [
+      aeson aeson-pretty base binary bytestring containers deepseq dlist
+      fclabels mtl parallel parsec process safe text transformers uniplate
+    ]) ++ [ tamarin-prover-utils tamarin-prover-term ];
+  });
+
+in
+mkDerivation (common "tamarin-prover" src // {
+  isLibrary = false;
+  isExecutable = true;
+
+  # strip out unneeded deps manually
+  doHaddock = false;
+  enableSharedExecutables = false;
+  postFixup = "rm -rf $out/lib $out/nix-support $out/share/doc";
+
+  # Fix problem with MonadBaseControl not being found
+  patchPhase = ''
+    sed -ie 's,\(import *\)Control\.Monad$,&\
+    \1Control.Monad.Trans.Control,' src/Web/Handler.hs
+
+    sed -ie 's~\( *, \)mtl~&\
+    \1monad-control~' tamarin-prover.cabal
+
+    patch -p1 < ${./sapic-native.patch}
+  '';
+
+  postBuild = ''
+    cd plugins/sapic && make sapic && cd ../..
+  '';
+
+  # wrap the prover to be sure it can find maude, sapic, etc
+  executableToolDepends = [ makeWrapper which maude graphviz ];
+  postInstall = ''
+    wrapProgram $out/bin/tamarin-prover \
+      --prefix PATH : ${lib.makeBinPath [ which maude graphviz ]}
+    # so that the package can be used as a vim plugin to install syntax coloration
+    install -Dt $out/share/vim-plugins/tamarin-prover/syntax/ etc/{spthy,sapic}.vim
+    install etc/filetype.vim -D $out/share/vim-plugins/tamarin-prover/ftdetect/tamarin.vim
+    install -m0755 ./plugins/sapic/sapic $out/bin/sapic
+  '';
+
+  checkPhase = "./dist/build/tamarin-prover/tamarin-prover test";
+
+  executableSystemDepends = [ ocaml ];
+  executableHaskellDepends = (with haskellPackages; [
+    base binary binary-orphans blaze-builder blaze-html bytestring
+    cmdargs conduit containers monad-control deepseq directory fclabels file-embed
+    filepath gitrev http-types HUnit lifted-base mtl monad-unlift parsec process
+    resourcet safe shakespeare tamarin-prover-term
+    template-haskell text threads time wai warp yesod-core yesod-static
+  ]) ++ [ tamarin-prover-utils
+          tamarin-prover-term
+          tamarin-prover-theory
+        ];
+
+  broken = true;
+})
diff --git a/nixpkgs/pkgs/applications/science/logic/tamarin-prover/sapic-native.patch b/nixpkgs/pkgs/applications/science/logic/tamarin-prover/sapic-native.patch
new file mode 100644
index 000000000000..6ab7e4e7594f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/tamarin-prover/sapic-native.patch
@@ -0,0 +1,77 @@
+diff --git a/plugins/sapic/Makefile b/plugins/sapic/Makefile
+index 8f1b1866..678accbe 100644
+--- a/plugins/sapic/Makefile
++++ b/plugins/sapic/Makefile
+@@ -1,18 +1,18 @@
+ TARGET = sapic
+-OBJS= color.cmo exceptions.cmo btree.cmo position.cmo positionplusinit.cmo var.cmo term.cmo fact.cmo atomformulaaction.cmo action.cmo atom.cmo formula.cmo tamarin.cmo sapicterm.cmo sapicvar.cmo sapicaction.cmo lexer.cmo  sapic.cmo annotatedsapicaction.cmo annotatedsapictree.cmo progressfunction.cmo restrictions.cmo annotatedrule.cmo translationhelper.cmo basetranslation.cmo firsttranslation.cmo main.cmo 
++OBJS= color.cmx exceptions.cmx btree.cmx position.cmx positionplusinit.cmx var.cmx term.cmx fact.cmx atomformulaaction.cmx action.cmx atom.cmx formula.cmx tamarin.cmx sapicterm.cmx sapicvar.cmx sapicaction.cmx lexer.cmx  sapic.cmx annotatedsapicaction.cmx annotatedsapictree.cmx progressfunction.cmx restrictions.cmx annotatedrule.cmx translationhelper.cmx basetranslation.cmx firsttranslation.cmx main.cmx
+ FLAGS=-g
+ 
+-OCAMLC    := $(shell command -v ocamlc    2> /dev/null)
++OCAMLOPT  := $(shell command -v ocamlopt  2> /dev/null)
+ OCAMLLEX  := $(shell command -v ocamllex  2> /dev/null)
+ OCAMLYACC := $(shell command -v ocamlyacc 2> /dev/null)
+ OCAMLDEP  := $(shell command -v ocamldep  2> /dev/null)
+-OCAMLC_GTEQ_402 := $(shell expr `ocamlc -version | sed -e 's/\.\([0-9][0-9]\)/\1/g' -e 's/\.\([0-9]\)/0\1/g' -e 's/^[0-9]\{3,4\}$$/&00/'` \>= 40200)
++OCAMLC_GTEQ_402 := $(shell expr `ocamlopt -version | sed -e 's/\.\([0-9][0-9]\)/\1/g' -e 's/\.\([0-9]\)/0\1/g' -e 's/^[0-9]\{3,4\}$$/&00/'` \>= 40200)
+ 
+ default: sapic
+ 
+ sapic:
+-ifdef OCAMLC
+-	@echo "Found ocamlc."
++ifdef OCAMLOPT
++	@echo "Found ocamlopt."
+ ifdef OCAMLLEX
+ 	@echo "Found ocamllex."
+ ifdef OCAMLYACC
+@@ -22,9 +22,9 @@ ifdef OCAMLDEP
+ ifeq "$(OCAMLC_GTEQ_402)" "1"
+ 	@echo "Building SAPIC."
+ 	$(MAKE) $(OBJS)
+-	ocamlc $(FLAGS) -o $@ str.cma $(OBJS)
+-	@echo "Installing SAPIC into ~/.local/bin/"
+-	cp sapic ~/.local/bin
++	ocamlopt $(FLAGS) -o $@ str.cmxa $(OBJS)
++#	@echo "Installing SAPIC into ~/.local/bin/"
++#	cp sapic ~/.local/bin
+ else
+ 	@echo "Found OCAML version < 4.02. SAPIC will not be installed."
+ endif
+@@ -38,7 +38,7 @@ else
+ 	@echo "ocamllex not found. SAPIC will not be installed."
+ endif
+ else
+-	@echo "ocamlc not found. SAPIC will not be installed."
++	@echo "ocamlopt not found. SAPIC will not be installed."
+ endif
+ 
+ depend:
+@@ -48,20 +48,20 @@ lexer.ml: sapic.cmi
+ 
+ .PHONY: clean
+ clean:
+-	rm -rf *.cmi *.cmo $(TARGET)
++	rm -rf *.cmi **.cmx $(TARGET)
+ 	rm -rf sapic.ml sapic.mli lexer.ml lexer.mli
+ 
+-.SUFFIXES: .ml .mli .mll .mly .cmo .cmi
++.SUFFIXES: .ml .mli .mll .mly .cmx .cmi
+ 
+-.ml.cmo:
+-	ocamlc $(FLAGS) -c $<
++.ml.cmx:
++	ocamlopt $(FLAGS) -c $<
+ .mli.cmi:
+-	ocamlc $(FLAGS) -c $<
++	ocamlopt $(FLAGS) -c $<
+ .mll.ml:
+ 	ocamllex $<
+ .mly.ml:
+ 	ocamlyacc $<
+ .ml.mli:
+-	ocamlc -i $< > $@
++	ocamlopt -i $< > $@
+ 
+ -include .depend
diff --git a/nixpkgs/pkgs/applications/science/logic/tlaplus/default.nix b/nixpkgs/pkgs/applications/science/logic/tlaplus/default.nix
new file mode 100644
index 000000000000..14944f5e19b0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/tlaplus/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub, makeWrapper
+, adoptopenjdk-bin, jre, ant
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tlaplus";
+  version = "1.7.0";
+
+  src = fetchFromGitHub {
+    owner  = "tlaplus";
+    repo   = "tlaplus";
+    rev    = "refs/tags/v${version}";
+    sha256 = "1mm6r9bq79zks50yk0agcpdkw9yy994m38ibmgpb3bi3wkpq9891";
+  };
+
+  buildInputs = [ makeWrapper adoptopenjdk-bin ant ];
+
+  buildPhase = "ant -f tlatools/org.lamport.tlatools/customBuild.xml compile dist";
+  installPhase = ''
+    mkdir -p $out/share/java $out/bin
+    cp tlatools/org.lamport.tlatools/dist/*.jar $out/share/java
+
+    makeWrapper ${jre}/bin/java $out/bin/tlc2 \
+      --add-flags "-cp $out/share/java/tla2tools.jar tlc2.TLC"
+    makeWrapper ${jre}/bin/java $out/bin/tla2sany \
+      --add-flags "-cp $out/share/java/tla2tools.jar tla2sany.SANY"
+    makeWrapper ${jre}/bin/java $out/bin/pcal \
+      --add-flags "-cp $out/share/java/tla2tools.jar pcal.trans"
+    makeWrapper ${jre}/bin/java $out/bin/tla2tex \
+      --add-flags "-cp $out/share/java/tla2tools.jar tla2tex.TLA"
+  '';
+
+  meta = {
+    description = "An algorithm specification language with model checking tools";
+    homepage    = "http://lamport.azurewebsites.net/tla/tla.html";
+    license     = stdenv.lib.licenses.mit;
+    platforms   = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/tlaplus/tlaps.nix b/nixpkgs/pkgs/applications/science/logic/tlaplus/tlaps.nix
new file mode 100644
index 000000000000..cbca37ea53d1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/tlaplus/tlaps.nix
@@ -0,0 +1,54 @@
+{ fetchurl
+, stdenv
+, ocaml, isabelle, cvc3, perl, wget, which
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tlaps";
+  version = "1.4.3";
+  src = fetchurl {
+    url = "https://tla.msr-inria.inria.fr/tlaps/dist/current/tlaps-${version}.tar.gz";
+    sha256 = "1w5z3ns5xxmhmp8r4x2kjmy3clqam935gmvx82imyxrr1bamx6gf";
+  };
+
+  buildInputs = [ ocaml isabelle cvc3 perl wget which ];
+
+  phases = [ "unpackPhase" "installPhase" ];
+
+  installPhase = ''
+    mkdir -pv "$out"
+    export HOME="$out"
+    export PATH=$out/bin:$PATH
+
+    pushd zenon
+    ./configure --prefix $out
+    make
+    make install
+    popd
+
+    pushd isabelle
+    isabelle build -b Pure
+    popd
+
+    pushd tlapm
+    ./configure --prefix $out
+    make all
+    make install
+  '';
+
+  meta = {
+    description = "Mechanically check TLA+ proofs";
+    longDescription = ''
+      TLA+ is a general-purpose formal specification language that is
+      particularly useful for describing concurrent and distributed
+      systems. The TLA+ proof language is declarative, hierarchical,
+      and scalable to large system specifications. It provides a
+      consistent abstraction over the various “backend” verifiers.
+    '';
+    homepage    = "https://tla.msr-inria.inria.fr/tlaps/content/Home.html";
+    license     = stdenv.lib.licenses.bsd2;
+    platforms   = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.badi ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/tlaplus/toolbox.nix b/nixpkgs/pkgs/applications/science/logic/tlaplus/toolbox.nix
new file mode 100644
index 000000000000..f326d62f8f0b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/tlaplus/toolbox.nix
@@ -0,0 +1,81 @@
+{ lib, fetchzip, makeWrapper, makeDesktopItem, stdenv
+, gtk, libXtst, glib, zlib
+}:
+
+let
+  version = "1.6.0";
+  arch = "x86_64";
+
+  desktopItem = makeDesktopItem rec {
+    name = "TLA+Toolbox";
+    exec = "tla-toolbox";
+    icon = "tla-toolbox";
+    comment = "IDE for TLA+";
+    desktopName = name;
+    genericName = comment;
+    categories = "Application;Development";
+    extraEntries = ''
+      StartupWMClass=TLA+ Toolbox
+    '';
+  };
+
+
+in stdenv.mkDerivation {
+  pname = "tla-toolbox";
+  inherit version;
+  src = fetchzip {
+    url = "https://tla.msr-inria.inria.fr/tlatoolbox/products/TLAToolbox-${version}-linux.gtk.${arch}.zip";
+    sha256 = "1mgx4p5qykf9q0p4cp6kcpc7fx8g5f2w1g40kdgas24hqwrgs3cm";
+  };
+
+  buildInputs = [ makeWrapper  ];
+
+  phases = [ "installPhase" ];
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    cp -r "$src" "$out/toolbox"
+    chmod -R +w "$out/toolbox"
+
+    patchelf \
+      --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+      "$out/toolbox/toolbox"
+
+    patchelf \
+      --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+      "$(find "$out/toolbox" -name java)"
+
+    makeWrapper $out/toolbox/toolbox $out/bin/tla-toolbox \
+      --run "set -x; cd $out/toolbox" \
+      --add-flags "-data ~/.tla-toolbox" \
+      --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ gtk libXtst glib zlib ]}"
+
+    echo -e "\nCreating TLA Toolbox icons..."
+    pushd "$src"
+    for icon_in in $(find . -path "./plugins/*/icons/full/etool16/tla_launch_check_wiz_*.png")
+    do
+      icon_size=$(echo $icon_in | grep -Po "wiz_\K[0-9]+")
+      icon_out="$out/share/icons/hicolor/$icon_size""x$icon_size/apps/tla-toolbox.png"
+      mkdir -p "$(dirname $icon_out)"
+      cp "$icon_in" "$icon_out"
+    done
+    popd
+
+    echo -e "\nCreating TLA Toolbox desktop entry..."
+    cp -r "${desktopItem}/share/applications"* "$out/share/applications"
+  '';
+
+  meta = {
+    homepage = "http://research.microsoft.com/en-us/um/people/lamport/tla/toolbox.html";
+    description = "IDE for the TLA+ tools";
+    longDescription = ''
+      Integrated development environment for the TLA+ tools, based on Eclipse. You can use it
+      to create and edit your specs, run the PlusCal translator, view the pretty-printed
+      versions of your modules, run the TLC model checker, and run TLAPS, the TLA+ proof system.
+    '';
+    # http://lamport.azurewebsites.net/tla/license.html
+    license = with lib.licenses; [ mit ];
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.badi ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/tptp/default.nix b/nixpkgs/pkgs/applications/science/logic/tptp/default.nix
new file mode 100644
index 000000000000..4c63f8e72a36
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/tptp/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchurl, yap, tcsh, perl, patchelf }:
+
+stdenv.mkDerivation rec {
+  pname = "TPTP";
+  version = "7.2.0";
+
+  src = fetchurl {
+    urls = [
+      "http://tptp.cs.miami.edu/TPTP/Distribution/TPTP-v${version}.tgz"
+      "http://tptp.cs.miami.edu/TPTP/Archive/TPTP-v${version}.tgz"
+    ];
+    sha256 = "0yq8452b6mym4yscy46pshg0z2my8xi74b5bp2qlxd5bjwcrg6rl";
+  };
+
+  nativeBuildInputs = [ patchelf ];
+  buildInputs = [ tcsh yap perl ];
+
+  installPhase = ''
+    sharedir=$out/share/tptp
+
+    mkdir -p $sharedir
+    cp -r ./ $sharedir
+
+    export TPTP=$sharedir
+
+    tcsh $sharedir/Scripts/tptp2T_install -default
+
+    substituteInPlace $sharedir/TPTP2X/tptp2X_install --replace /bin/mv mv
+    tcsh $sharedir/TPTP2X/tptp2X_install -default
+
+    patchelf --interpreter $(cat $NIX_CC/nix-support/dynamic-linker) $sharedir/Scripts/tptp4X
+
+    mkdir -p $out/bin
+    ln -s $sharedir/TPTP2X/tptp2X $out/bin
+    ln -s $sharedir/Scripts/tptp2T $out/bin
+    ln -s $sharedir/Scripts/tptp4X $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Thousands of problems for theorem provers and tools";
+    maintainers = with maintainers; [ raskin gebner ];
+    # 6.3 GiB of data. Installation is unpacking and editing a few files.
+    # No sense in letting Hydra build it.
+    # Also, it is unclear what is covered by "verbatim" - we will edit configs
+    hydraPlatforms = [];
+    platforms = platforms.all;
+    license = licenses.unfreeRedistributable;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/twelf/default.nix b/nixpkgs/pkgs/applications/science/logic/twelf/default.nix
new file mode 100644
index 000000000000..975b989bd94c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/twelf/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchurl, pkgconfig, smlnj, rsync }:
+
+stdenv.mkDerivation rec {
+  pname = "twelf";
+  version = "1.7.1";
+
+  src = fetchurl {
+    url = "http://twelf.plparty.org/releases/twelf-src-${version}.tar.gz";
+    sha256 = "0fi1kbs9hrdrm1x4k13angpjasxlyd1gc3ys8ah54i75qbcd9c4i";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ smlnj rsync ];
+
+  buildPhase = ''
+    export SMLNJ_HOME=${smlnj}
+    make smlnj
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    rsync -av bin/{*,.heap} $out/bin/
+    bin/.mkexec ${smlnj}/bin/sml $out/ twelf-server twelf-server
+
+    substituteInPlace emacs/twelf-init.el \
+      --replace '(concat twelf-root "emacs")' '(concat twelf-root "share/emacs/site-lisp/twelf")'
+
+    mkdir -p $out/share/emacs/site-lisp/twelf/
+    rsync -av emacs/ $out/share/emacs/site-lisp/twelf/
+
+    mkdir -p $out/share/twelf/examples
+    rsync -av examples/ $out/share/twelf/examples/
+    mkdir -p $out/share/twelf/vim
+    rsync -av vim/ $out/share/twelf/vim/
+  '';
+
+  meta = {
+    description = "Logic proof assistant";
+    longDescription = ''
+      Twelf is a language used to specify, implement, and prove properties of
+      deductive systems such as programming languages and logics. Large
+      research projects using Twelf include the TALT typed assembly language,
+      a foundational proof-carrying-code system, and a type safety proof for
+      Standard ML.
+    '';
+    homepage = "http://twelf.org/wiki/Main_Page";
+    license = stdenv.lib.licenses.mit;
+    maintainers = with stdenv.lib.maintainers; [ jwiegley ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/vampire/default.nix b/nixpkgs/pkgs/applications/science/logic/vampire/default.nix
new file mode 100644
index 000000000000..e5941a35fd59
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/vampire/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchFromGitHub, fetchpatch, z3, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "vampire";
+  version = "4.4";
+
+  src = fetchFromGitHub {
+    owner = "vprover";
+    repo = "vampire";
+    rev = version;
+    sha256 = "0v2fdfnk7l5xr5c4y54r25g1nbp4vi85zv29nbklh3r7aws3w9q1";
+  };
+
+  buildInputs = [ z3 zlib ];
+
+  makeFlags = [ "vampire_z3_rel" "CC:=$(CC)" "CXX:=$(CXX)" ];
+
+  patches = [
+    # https://github.com/vprover/vampire/pull/54
+    (fetchpatch {
+      name = "fix-apple-cygwin-defines.patch";
+      url = "https://github.com/vprover/vampire/pull/54.patch";
+      sha256 = "0i6nrc50wlg1dqxq38lkpx4rmfb3lf7s8f95l4jkvqp0nxa20cza";
+    })
+    # https://github.com/vprover/vampire/pull/55
+    (fetchpatch {
+      name = "fix-wait-any.patch";
+      url = "https://github.com/vprover/vampire/pull/55.patch";
+      sha256 = "1pwfpwpl23bqsgkmmvw6bnniyvp5j9v8l3z9s9pllfabnfcrcz9l";
+    })
+    # https://github.com/vprover/vampire/pull/56
+    (fetchpatch {
+      name = "fenv.patch";
+      url = "https://github.com/vprover/vampire/pull/56.patch";
+      sha256 = "0xl3jcyqmk146mg3qj5hdd0pbja6wbq3250zmfhbxqrjh40mm40g";
+    })
+  ];
+
+  enableParallelBuilding = true;
+
+  fixupPhase = ''
+    rm -rf z3
+  '';
+
+  installPhase = ''
+    install -m0755 -D vampire_z3_rel* $out/bin/vampire
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://vprover.github.io/";
+    description = "The Vampire Theorem Prover";
+    platforms = platforms.unix;
+    license = licenses.unfree;
+    maintainers = with maintainers; [ gebner ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/verifast/default.nix b/nixpkgs/pkgs/applications/science/logic/verifast/default.nix
new file mode 100644
index 000000000000..49618d2586b1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/verifast/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchurl, gtk2, gdk-pixbuf, atk, pango, glib, cairo, freetype
+, fontconfig, libxml2, gnome2 }:
+
+let
+
+  libPath = stdenv.lib.makeLibraryPath
+    [ stdenv.cc.libc stdenv.cc.cc gtk2 gdk-pixbuf atk pango glib cairo
+      freetype fontconfig libxml2 gnome2.gtksourceview
+    ] + ":${stdenv.cc.cc.lib}/lib64:$out/libexec";
+
+  patchExe = x: ''
+    patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath ${libPath} ${x}
+  '';
+
+  patchLib = x: ''
+    patchelf --set-rpath ${libPath} ${x}
+  '';
+
+in
+stdenv.mkDerivation rec {
+  pname = "verifast";
+  version = "19.12";
+
+  src = fetchurl {
+    url    = "https://github.com/verifast/verifast/releases/download/${version}/${pname}-${version}-linux.tar.gz";
+    sha256 = "169kshjq4cf4i9v92azv0xaflrnik5686w7fwcgdhd6qkbzflzl6";
+  };
+
+  dontStrip = true;
+  phases = "unpackPhase installPhase";
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -R bin $out/libexec
+
+    ${patchExe "$out/libexec/verifast"}
+    ${patchExe "$out/libexec/vfide"}
+    ${patchLib "$out/libexec/libz3.so"}
+    ln -s $out/libexec/verifast $out/bin/verifast
+    ln -s $out/libexec/vfide    $out/bin/vfide
+  '';
+
+  meta = {
+    description = "Verification for C and Java programs via separation logic";
+    homepage    = "http://people.cs.kuleuven.be/~bart.jacobs/verifast/";
+    license     = stdenv.lib.licenses.mit;
+    platforms   = [ "x86_64-linux" ];
+    maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/verit/default.nix b/nixpkgs/pkgs/applications/science/logic/verit/default.nix
new file mode 100644
index 000000000000..f20a83241571
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/verit/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, autoreconfHook, gmp, flex, bison }:
+
+stdenv.mkDerivation {
+  pname = "veriT";
+  version = "2016";
+
+  src = fetchurl {
+    url = "http://www.verit-solver.org/distrib/veriT-stable2016.tar.gz";
+    sha256 = "0gvp4diz0qjg0y5ry0p1z7dkdkxw8l7jb8cdhvcnhl06jx977v4b";
+  };
+
+  nativeBuildInputs = [ autoreconfHook flex bison ];
+  buildInputs = [ gmp ];
+
+  # --disable-static actually enables static linking here...
+  dontDisableStatic = true;
+
+  makeFlags = [ "LEX=${flex}/bin/flex" ];
+
+  preInstall = ''
+    mkdir -p $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An open, trustable and efficient SMT-solver";
+    homepage = "http://www.verit-solver.org/";
+    license = licenses.bsd3;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.gebner ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/why3/configure.patch b/nixpkgs/pkgs/applications/science/logic/why3/configure.patch
new file mode 100644
index 000000000000..3eebf3cf165d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/why3/configure.patch
@@ -0,0 +1,11 @@
+diff --git a/configure b/configure
+--- a/configure
++++ b/configure
+@@ -4029,7 +4029,6 @@ fi
+ 
+ if test "$USEOCAMLFIND" = yes; then
+    OCAMLFINDLIB=$(ocamlfind printconf stdlib)
+-   OCAMLFIND=$(which ocamlfind)
+    if test "$OCAMLFINDLIB" != "$OCAMLLIB"; then
+    USEOCAMLFIND=no;
+    echo "but your ocamlfind is not compatible with your ocamlc:"
diff --git a/nixpkgs/pkgs/applications/science/logic/why3/default.nix b/nixpkgs/pkgs/applications/science/logic/why3/default.nix
new file mode 100644
index 000000000000..51cb2a456c19
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/why3/default.nix
@@ -0,0 +1,54 @@
+{ callPackage, fetchurl, fetchpatch, stdenv
+, ocamlPackages, coqPackages, rubber, hevea, emacs }:
+
+stdenv.mkDerivation {
+  pname = "why3";
+  version = "1.2.1";
+
+  src = fetchurl {
+    url = "https://gforge.inria.fr/frs/download.php/file/38185/why3-1.2.1.tar.gz";
+    sha256 = "014gkwisjp05x3342zxkryb729p02ngx1hcjjsrplpa53jzgz647";
+  };
+
+  buildInputs = with ocamlPackages; [
+    ocaml findlib ocamlgraph zarith menhir
+    # Compressed Sessions
+    # Emacs compilation of why3.el
+    emacs
+    # Documentation
+    rubber hevea
+    # GUI
+    lablgtk
+    # WebIDE
+    js_of_ocaml js_of_ocaml-ppx
+    # Coq Support
+    coqPackages.coq coqPackages.flocq ocamlPackages.camlp5
+  ];
+
+  propagatedBuildInputs = with ocamlPackages; [ camlzip num ];
+
+  enableParallelBuilding = true;
+
+  # Remove unnecessary call to which
+  patches = [ ./configure.patch
+    # Compatibility with js_of_ocaml 3.5
+    (fetchpatch {
+      url = "https://gitlab.inria.fr/why3/why3/commit/269ab313382fe3e64ef224813937314748bf7cf0.diff";
+      sha256 = "0i92wdnbh8pihvl93ac0ma1m5g95jgqqqj4kw6qqvbbjjqdgvzwa";
+    })
+  ];
+
+  configureFlags = [ "--enable-verbose-make" ];
+
+  installTargets = [ "install" "install-lib" ];
+
+  passthru.withProvers = callPackage ./with-provers.nix {};
+
+  meta = with stdenv.lib; {
+    description = "A platform for deductive program verification";
+    homepage    = "http://why3.lri.fr/";
+    license     = licenses.lgpl21;
+    platforms   = platforms.unix;
+    maintainers = with maintainers; [ thoughtpolice vbgl ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/why3/with-provers.nix b/nixpkgs/pkgs/applications/science/logic/why3/with-provers.nix
new file mode 100644
index 000000000000..3528dbd3a647
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/why3/with-provers.nix
@@ -0,0 +1,30 @@
+{ stdenv, makeWrapper, runCommand, symlinkJoin, why3 }:
+provers:
+let configAwkScript = runCommand "why3-conf.awk" { inherit provers; }
+    ''
+      for p in $provers; do
+        for b in $p/bin/*; do
+          BASENAME=$(basename $b)
+          echo "/^command =/{ gsub(\"$BASENAME\", \"$b\") }" >> $out
+        done
+      done
+      echo '{ print }' >> $out
+    '';
+in stdenv.mkDerivation {
+  name = "${why3.name}-with-provers";
+
+  phases = [ "buildPhase" "installPhase" ];
+
+  buildInputs = [ why3 makeWrapper ] ++ provers;
+
+  buildPhase = ''
+      mkdir -p $out/share/why3/
+      why3 config --detect-provers -C $out/share/why3/why3.conf
+      awk -i inplace -f ${configAwkScript} $out/share/why3/why3.conf
+  '';
+
+  installPhase = ''
+      mkdir -p $out/bin
+      makeWrapper ${why3}/bin/why3 $out/bin/why3 --add-flags "--extra-config $out/share/why3/why3.conf"
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/workcraft/default.nix b/nixpkgs/pkgs/applications/science/logic/workcraft/default.nix
new file mode 100644
index 000000000000..685d6ee48619
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/workcraft/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, jre, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "workcraft";
+  version = "3.2.6";
+
+  src = fetchurl {
+    url = "https://github.com/workcraft/workcraft/releases/download/v${version}/workcraft-v${version}-linux.tar.gz";
+    sha256 = "1sfbxmk71gp7paw4l5azqr0lsgsyp4308gx2jz8w4k3nasfshz25";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
+
+  installPhase = ''
+  mkdir -p $out/share
+  cp -r * $out/share
+  mkdir $out/bin
+  makeWrapper $out/share/workcraft $out/bin/workcraft \
+    --set JAVA_HOME "${jre}" \
+    --set _JAVA_OPTIONS '-Dawt.useSystemAAFontSettings=gasp';
+  '';
+
+  meta = {
+    homepage = "https://workcraft.org/";
+    description = "Framework for interpreted graph modeling, verification and synthesis";
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.mit;
+    maintainers = with stdenv.lib.maintainers; [ timor ];
+    inherit version;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/yices/default.nix b/nixpkgs/pkgs/applications/science/logic/yices/default.nix
new file mode 100644
index 000000000000..b8dd528a11c1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/yices/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitHub, gmp-static, gperf, autoreconfHook, libpoly }:
+
+stdenv.mkDerivation rec {
+  pname = "yices";
+  version = "2.6.1";
+
+  src = fetchFromGitHub {
+    owner  = "SRI-CSL";
+    repo   = "yices2";
+    rev    = "Yices-${version}";
+    sha256 = "04vf468spsh00jh7gj94cjnq8kjyfwy9l6r4z7l2pm0zgwkqgyhm";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs       = [ gmp-static gperf libpoly ];
+  configureFlags =
+    [ "--with-static-gmp=${gmp-static.out}/lib/libgmp.a"
+      "--with-static-gmp-include-dir=${gmp-static.dev}/include"
+      "--enable-mcsat"
+    ];
+
+  enableParallelBuilding = true;
+  doCheck = true;
+
+  # Usual shenanigans
+  patchPhase = ''patchShebangs tests/regress/check.sh'';
+
+  # Includes a fix for the embedded soname being libyices.so.2.5, but
+  # only installing the libyices.so.2.5.x file.
+  installPhase = let
+    ver_XdotY = stdenv.lib.versions.majorMinor version;
+  in ''
+      make install LDCONFIG=true
+      ln -sfr $out/lib/libyices.so.{${version},${ver_XdotY}}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A high-performance theorem prover and SMT solver";
+    homepage    = "http://yices.csl.sri.com";
+    license     = licenses.gpl3;
+    platforms   = with platforms; linux ++ darwin;
+    maintainers = with maintainers; [ thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/z3/default.nix b/nixpkgs/pkgs/applications/science/logic/z3/default.nix
new file mode 100644
index 000000000000..170a56b95b91
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/z3/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchFromGitHub, python, fixDarwinDylibNames }:
+
+stdenv.mkDerivation rec {
+  pname = "z3";
+  version = "4.8.7";
+
+  src = fetchFromGitHub {
+    owner  = "Z3Prover";
+    repo   = pname;
+    rev    = "z3-${version}";
+    sha256 = "0hprcdwhhyjigmhhk6514m71bnmvqci9r8gglrqilgx424r6ff7q";
+  };
+
+  buildInputs = [ python fixDarwinDylibNames ];
+  propagatedBuildInputs = [ python.pkgs.setuptools ];
+  enableParallelBuilding = true;
+
+  configurePhase = ''
+    ${python.interpreter} scripts/mk_make.py --prefix=$out --python --pypkgdir=$out/${python.sitePackages}
+    cd build
+  '';
+
+  postInstall = ''
+    mkdir -p $dev $lib $python/lib
+
+    mv $out/lib/python*  $python/lib/
+    mv $out/lib          $lib/lib
+    mv $out/include      $dev/include
+
+    ln -sf $lib/lib/libz3${stdenv.hostPlatform.extensions.sharedLibrary} $python/${python.sitePackages}/z3/lib/libz3${stdenv.hostPlatform.extensions.sharedLibrary}
+  '';
+
+  outputs = [ "out" "lib" "dev" "python" ];
+
+  meta = {
+    description = "A high-performance theorem prover and SMT solver";
+    homepage    = "https://github.com/Z3Prover/z3";
+    license     = stdenv.lib.licenses.mit;
+    platforms   = stdenv.lib.platforms.x86_64;
+    maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/logic/z3/tptp.nix b/nixpkgs/pkgs/applications/science/logic/z3/tptp.nix
new file mode 100644
index 000000000000..34449542abb2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/logic/z3/tptp.nix
@@ -0,0 +1,31 @@
+{stdenv, z3, cmake}:
+stdenv.mkDerivation rec {
+  pname = "z3-tptp";
+  version = z3.version;
+
+  src = z3.src;
+
+  sourceRoot = "source/examples/tptp";
+
+  nativeBuildInputs = [cmake];
+  buildInputs = [z3];
+
+  preConfigure = ''
+    echo 'set(Z3_LIBRARIES "-lz3")' >> CMakeLists.new
+    cat CMakeLists.txt | grep -E 'add_executable|project|link_libraries' >> CMakeLists.new
+    mv CMakeLists.new CMakeLists.txt
+  '';
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    cp "z3_tptp5" "$out/bin/"
+    ln -s "z3_tptp5" "$out/bin/z3-tptp"
+  '';
+
+  meta = {
+    inherit version;
+    inherit (z3.meta) license homepage platforms;
+    description = ''TPTP wrapper for Z3 prover'';
+    maintainers = [stdenv.lib.maintainers.raskin];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/machine-learning/fasttext/default.nix b/nixpkgs/pkgs/applications/science/machine-learning/fasttext/default.nix
new file mode 100644
index 000000000000..64124594e1e2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/machine-learning/fasttext/default.nix
@@ -0,0 +1,23 @@
+{stdenv, fetchFromGitHub, cmake}:
+
+stdenv.mkDerivation rec {
+  pname = "fasttext";
+  version = "0.9.2";
+
+  src = fetchFromGitHub {
+    owner = "facebookresearch";
+    repo = "fastText";
+    rev = "v${version}";
+    sha256 = "07cz2ghfq6amcljaxpdr5chbd64ph513y8zqmibfx2xwfp74xkhn";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  meta = with stdenv.lib; {
+    description = "Library for text classification and representation learning";
+    homepage = "https://fasttext.cc/";
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.danieldk ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/machine-learning/labelimg/default.nix b/nixpkgs/pkgs/applications/science/machine-learning/labelimg/default.nix
new file mode 100644
index 000000000000..a952fb559ce6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/machine-learning/labelimg/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, python2Packages, fetchurl }:
+  python2Packages.buildPythonApplication rec {
+    pname = "labelImg";
+    version = "1.8.1";
+    src = fetchurl {
+      url = "https://github.com/tzutalin/labelImg/archive/v${version}.tar.gz";
+      sha256 = "1banpkpbrny1jx3zsgs544xai62z5yvislbq782a5r47gv2f2k4a";
+    };
+    nativeBuildInputs = with python2Packages; [
+      pyqt4
+    ];
+    propagatedBuildInputs = with python2Packages; [
+      pyqt4
+      lxml
+    ];
+    preBuild = ''
+      make qt4py2
+    '';
+    meta = with stdenv.lib; {
+      description = "LabelImg is a graphical image annotation tool and label object bounding boxes in images";
+      homepage = "https://github.com/tzutalin/labelImg";
+      license = licenses.mit;
+      platforms = platforms.linux;
+      maintainers = [ maintainers.cmcdragonkai ];
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/science/machine-learning/sc2-headless/default.nix b/nixpkgs/pkgs/applications/science/machine-learning/sc2-headless/default.nix
new file mode 100644
index 000000000000..7bcc915daec9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/machine-learning/sc2-headless/default.nix
@@ -0,0 +1,61 @@
+{ config, stdenv
+, callPackage
+, lib
+, fetchurl
+, unzip
+, licenseAccepted ? config.sc2-headless.accept_license or false
+}:
+
+if !licenseAccepted then throw ''
+    You must accept the Blizzard® Starcraft® II AI and Machine Learning License at
+    https://blzdistsc2-a.akamaihd.net/AI_AND_MACHINE_LEARNING_LICENSE.html
+    by setting nixpkgs config option 'sc2-headless.accept_license = true;'
+  ''
+else assert licenseAccepted;
+let maps = callPackage ./maps.nix {};
+in stdenv.mkDerivation rec {
+  version = "4.7.1";
+  pname = "sc2-headless";
+
+  src = fetchurl {
+    url = "https://blzdistsc2-a.akamaihd.net/Linux/SC2.${version}.zip";
+    sha256 = "0q1ry9bd3dm8y4hvh57yfq7s05hl2k2sxi2wsl6h0r3w690v1kdd";
+  };
+
+  unpackCmd = ''
+    unzip -P 'iagreetotheeula' $curSrc
+  '';
+
+  nativeBuildInputs = [ unzip ];
+
+  installPhase = ''
+    mkdir -p $out
+    cp -r . "$out"
+    rm -r $out/Libs
+
+    cp -ur "${maps.minigames}"/* "${maps.melee}"/* "${maps.ladder2017season1}"/* "${maps.ladder2017season2}"/* "${maps.ladder2017season3}"/* \
+      "${maps.ladder2017season4}"/* "${maps.ladder2018season1}"/* "${maps.ladder2018season2}"/* \
+      "${maps.ladder2018season3}"/*  "${maps.ladder2018season4}"/* "${maps.ladder2019season1}"/* "$out"/Maps/
+  '';
+
+  preFixup = ''
+    find $out -type f -print0 | while IFS=''' read -d ''' -r file; do
+      isELF "$file" || continue
+      patchelf \
+        --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        --set-rpath ${lib.makeLibraryPath [stdenv.cc.cc stdenv.cc.libc]} \
+        "$file"
+    done
+  '';
+
+  meta = {
+    platforms = stdenv.lib.platforms.linux;
+    description = "Starcraft II headless linux client for machine learning research";
+    license = {
+      fullName = "BLIZZARD® STARCRAFT® II AI AND MACHINE LEARNING LICENSE";
+      url = "https://blzdistsc2-a.akamaihd.net/AI_AND_MACHINE_LEARNING_LICENSE.html";
+      free = false;
+    };
+    maintainers = with lib.maintainers; [ danharaj ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/machine-learning/sc2-headless/maps.nix b/nixpkgs/pkgs/applications/science/machine-learning/sc2-headless/maps.nix
new file mode 100644
index 000000000000..6eec10e958c2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/machine-learning/sc2-headless/maps.nix
@@ -0,0 +1,63 @@
+{ fetchzip
+}:
+let
+  fetchzip' = args: (fetchzip args).overrideAttrs (old: { UNZIP = "-j -P iagreetotheeula"; });
+in
+{
+  minigames = fetchzip {
+    url = "https://github.com/deepmind/pysc2/releases/download/v1.2/mini_games.zip";
+    sha256 = "19f873ilcdsf50g2v0s2zzmxil1bqncsk8nq99bzy87h0i7khkla";
+    stripRoot = false;
+  };
+  
+  melee = fetchzip' {
+    url = "http://blzdistsc2-a.akamaihd.net/MapPacks/Melee.zip";
+    sha256 = "0z44pgy10jklsvgpr0kcn4c2mz3hw7nlcmvsy6a6lzpi3dvzf33i";
+    stripRoot = false;
+  };
+  ladder2017season1 = fetchzip' {
+    url = "http://blzdistsc2-a.akamaihd.net/MapPacks/Ladder2017Season1.zip";
+    sha256 = "0ngg4g74s2ryhylny93fm8yq9rlrhphwnjg2s6f3qr85a2b3zdpd";
+    stripRoot = false;
+  };
+  ladder2017season2 = fetchzip' {
+    url = "http://blzdistsc2-a.akamaihd.net/MapPacks/Ladder2017Season2.zip";
+    sha256 = "01kycnvqagql9pkjkcgngfcnry2pc4kcygdkk511m0qr34909za5";
+    stripRoot = false;
+  };
+  ladder2017season3 = fetchzip' {
+    url = "http://blzdistsc2-a.akamaihd.net/MapPacks/Ladder2017Season3_Updated.zip";
+    sha256 = "0wix3lwmbyxfgh8ldg0n66i21p0dbavk2dxjngz79rx708m8qvld";
+    stripRoot = false;
+  };
+  ladder2017season4 = fetchzip' {
+    url = "http://blzdistsc2-a.akamaihd.net/MapPacks/Ladder2017Season4.zip";
+    sha256 = "1sidnmk2rc9j5fd3a4623pvaika1mm1rwhznb2qklsqsq1x2qckp";
+    stripRoot = false;
+  };
+  ladder2018season1 = fetchzip' {
+    url = "http://blzdistsc2-a.akamaihd.net/MapPacks/Ladder2018Season1.zip";
+    sha256 = "0mp0ilcq0gmd7ahahc5i8c7bdr3ivk6skx0b2cgb1z89l5d76irq";
+    stripRoot = false;
+  };
+  ladder2018season2 = fetchzip' {
+    url = "http://blzdistsc2-a.akamaihd.net/MapPacks/Ladder2018Season2_Updated.zip";
+    sha256 = "176rs848cx5src7qbr6dnn81bv1i86i381fidk3v81q9bxlmc2rv";
+    stripRoot = false;
+  };
+  ladder2018season3 = fetchzip' {
+    url = "http://blzdistsc2-a.akamaihd.net/MapPacks/Ladder2018Season3.zip";
+    sha256 = "1r3wv4w53g9zq6073ajgv74prbdsd1x3zfpyhv1kpxbffyr0x0zp";
+    stripRoot = false;
+  };
+  ladder2018season4 = fetchzip' {
+    url = "http://blzdistsc2-a.akamaihd.net/MapPacks/Ladder2018Season4.zip";
+    sha256 = "0k47rr6pzxbanlqnhliwywkvf0w04c8hxmbanksbz6aj5wpkcn1s";
+    stripRoot = false;
+  };
+  ladder2019season1 = fetchzip' {
+    url = "http://blzdistsc2-a.akamaihd.net/MapPacks/Ladder2019Season1.zip";
+    sha256 = "1dlk9zza8h70lbjvg2ykc5wr9vsvvdk02szwrkgdw26mkssl2rg9";
+    stripRoot = false;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/machine-learning/shogun/default.nix b/nixpkgs/pkgs/applications/science/machine-learning/shogun/default.nix
new file mode 100644
index 000000000000..a2c26de7a2dc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/machine-learning/shogun/default.nix
@@ -0,0 +1,98 @@
+{ stdenv, lib, fetchFromGitHub, fetchpatch, fetchurl, cmake, ctags, swig
+# data, compression
+, bzip2, curl, hdf5, json_c, lzma, lzo, protobuf, snappy
+# maths
+, blas, lapack, eigen, nlopt, lp_solve, colpack, glpk
+# libraries
+, libarchive, libxml2
+# extra support
+, pythonSupport ? true, pythonPackages ? null
+, opencvSupport ? false, opencv ? null
+}:
+
+assert pythonSupport -> pythonPackages != null;
+assert opencvSupport -> opencv != null;
+
+assert (!blas.isILP64) && (!lapack.isILP64);
+
+let
+  pname = "shogun";
+  version = "6.1.4";
+  rxcppVersion = "4.0.0";
+  gtestVersion = "1.8.0";
+  srcs = {
+    toolbox = fetchFromGitHub {
+      owner = pname + "-toolbox";
+      repo = pname;
+      rev = pname + "_" + version;
+      sha256 = "05s9dclmk7x5d7wnnj4qr6r6c827m72a44gizcv09lxr28pr9inz";
+      fetchSubmodules = true;
+    };
+    # we need the packed archive
+    rxcpp = fetchurl {
+      url = "https://github.com/Reactive-Extensions/RxCpp/archive/v${rxcppVersion}.tar.gz";
+      sha256 = "0y2isr8dy2n1yjr9c5570kpc9lvdlch6jv0jvw000amwn5d3krsh";
+    };
+    gtest = fetchurl {
+      url = "https://github.com/google/googletest/archive/release-${gtestVersion}.tar.gz";
+      sha256 = "1n5p1m2m3fjrjdj752lf92f9wq3pl5cbsfrb49jqbg52ghkz99jq";
+    };
+  };
+in
+
+stdenv.mkDerivation rec {
+
+  inherit pname version;
+
+  src = srcs.toolbox;
+
+  postUnpack = ''
+    mkdir -p $sourceRoot/third_party/{rxcpp,gtest}
+    ln -s ${srcs.rxcpp} $sourceRoot/third_party/rxcpp/v${rxcppVersion}.tar.gz
+    ln -s ${srcs.gtest} $sourceRoot/third_party/gtest/release-${gtestVersion}.tar.gz
+  '';
+
+  # broken
+  doCheck = false;
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/awild82/shogun/commit/365ce4c4c700736d2eec8ba6c975327a5ac2cd9b.patch";
+      sha256 = "158hqv4xzw648pmjbwrhxjp7qcppqa7kvriif87gn3zdn711c49s";
+    })
+  ];
+
+  CCACHE_DISABLE="1";
+  CCACHE_DIR=".ccache";
+
+  buildInputs = with lib; [
+      blas lapack bzip2 cmake colpack curl ctags eigen hdf5 json_c lp_solve lzma lzo
+      protobuf nlopt snappy swig (libarchive.dev) libxml2 lapack glpk
+    ]
+    ++ optionals (pythonSupport) (with pythonPackages; [ python ply numpy ])
+    ++ optional  (opencvSupport) opencv;
+
+  NIX_CFLAGS_COMPILE="-faligned-new";
+
+  cmakeFlags =
+  let
+      onOff = b: if b then "ON" else "OFF";
+      flag = n: b: "-D"+n+"="+onOff b;
+  in
+  with lib; [
+    (flag "ENABLE_TESTING" doCheck)
+    (flag "BUILD_META_EXAMPLES" doCheck)
+    (flag "CMAKE_VERBOSE_MAKEFILE:BOOL" doCheck)
+    (flag "PythonModular" pythonSupport)
+    (flag "OpenCV" opencvSupport)
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "A toolbox which offers a wide range of efficient and unified machine learning methods";
+    homepage = "http://shogun-toolbox.org/";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ edwtjo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/machine-learning/streamlit/default.nix b/nixpkgs/pkgs/applications/science/machine-learning/streamlit/default.nix
new file mode 100644
index 000000000000..3856b8ec841a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/machine-learning/streamlit/default.nix
@@ -0,0 +1,34 @@
+{   lib, buildPythonApplication, fetchPypi
+  , altair, astor, base58, blinker, boto3, botocore, click, enum-compat
+  , future, pillow, protobuf, requests, toml, tornado, tzlocal, validators, watchdog
+  , jinja2, setuptools
+}:
+
+buildPythonApplication rec {
+  pname = "streamlit";
+  version = "0.50.2";
+  format = "wheel"; # the only distribution available
+
+  src = fetchPypi {
+    inherit pname version format;
+    sha256 = "1wymv7qckafs0p2jdjlxjaf1xrhm3iyd185jkldanbb0na5n3ndz";
+  };
+
+  propagatedBuildInputs = [
+    altair astor base58 blinker boto3 botocore click enum-compat
+    future pillow protobuf requests toml tornado tzlocal validators watchdog
+    jinja2 setuptools
+  ];
+
+  postInstall = ''
+      rm $out/bin/streamlit.cmd # remove windows helper
+  '';
+
+  meta = with lib; {
+    homepage = "https://streamlit.io/";
+    description = "The fastest way to build custom ML tools";
+    maintainers = with maintainers; [ yrashk ];
+    license = licenses.asl20;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/science/math/LiE/default.nix b/nixpkgs/pkgs/applications/science/math/LiE/default.nix
new file mode 100644
index 000000000000..f5f3bb0a42b1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/LiE/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchurl
+, bison, readline }:
+
+stdenv.mkDerivation {
+  version = "2.2.2";
+     # The current version of LiE is 2.2.2, which is more or less unchanged
+     # since about the year 2000. Minor bugfixes do get applied now and then.
+  pname = "lie";
+
+  meta = {
+    description = "A Computer algebra package for Lie group computations";
+    homepage = "http://wwwmathlabo.univ-poitiers.fr/~maavl/LiE/";
+    license = stdenv.lib.licenses.lgpl3; # see the website
+
+    longDescription = ''
+      LiE is a computer algebra system that is specialised in computations
+      involving (reductive) Lie groups and their representations. It is
+      publically available for free in source code. For a description of its
+      characteristics, we refer to the following sources of information.
+    ''; # take from the website
+
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ ]; # this package is probably not going to change anyway
+  };
+
+  src = fetchurl {
+    url = "http://wwwmathlabo.univ-poitiers.fr/~maavl/LiE/conLiE.tar.gz";
+    sha256 = "07lbj75qqr4pq1j1qz8fyfnmrz1gnk92lnsshxycfavxl5zzdmn4";
+  };
+
+  buildInputs = [ bison readline ];
+
+  patchPhase = ''
+    substituteInPlace make_lie \
+      --replace \`/bin/pwd\` $out
+  '';
+
+  installPhase = ''
+    mkdir -vp $out/bin
+
+    cp -v Lie.exe $out
+    cp -v lie $out/bin
+
+    cp -v LEARN* $out
+    cp -v INFO* $out
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/science/math/R/default.nix b/nixpkgs/pkgs/applications/science/math/R/default.nix
new file mode 100644
index 000000000000..52da3b4a1ac9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/R/default.nix
@@ -0,0 +1,118 @@
+{ stdenv, fetchurl, bzip2, gfortran, libX11, libXmu, libXt, libjpeg, libpng
+, libtiff, ncurses, pango, pcre2, perl, readline, tcl, texLive, tk, xz, zlib
+, less, texinfo, graphviz, icu, pkgconfig, bison, imake, which, jdk, blas, lapack
+, curl, Cocoa, Foundation, libobjc, libcxx, tzdata, fetchpatch
+, withRecommendedPackages ? true
+, enableStrictBarrier ? false
+# R as of writing does not support outputting both .so and .a files; it outputs:
+#     --enable-R-static-lib conflicts with --enable-R-shlib and will be ignored
+, static ? false
+}:
+
+assert (!blas.isILP64) && (!lapack.isILP64);
+
+stdenv.mkDerivation rec {
+  name = "R-4.0.0";
+
+  src = fetchurl {
+    url = "https://cran.r-project.org/src/base/R-4/${name}.tar.gz";
+    sha256 = "0h1995smlyiyhx7gpg9paxsfqrcn6g9bbp5h9r47i6an3clv1gh6";
+  };
+
+  dontUseImakeConfigure = true;
+
+  buildInputs = [
+    bzip2 gfortran libX11 libXmu libXt libXt libjpeg libpng libtiff ncurses
+    pango pcre2 perl readline texLive xz zlib less texinfo graphviz icu
+    pkgconfig bison imake which blas lapack curl tcl tk jdk
+  ] ++ stdenv.lib.optionals stdenv.isDarwin [ Cocoa Foundation libobjc libcxx ];
+
+  patches = [
+    ./no-usr-local-search-paths.patch
+    ./fix-failing-test.patch
+  ];
+
+  prePatch = stdenv.lib.optionalString stdenv.isDarwin ''
+    substituteInPlace configure --replace "-install_name libR.dylib" "-install_name $out/lib/R/lib/libR.dylib"
+  '';
+
+  dontDisableStatic = static;
+
+  preConfigure = ''
+    configureFlagsArray=(
+      --disable-lto
+      --with${stdenv.lib.optionalString (!withRecommendedPackages) "out"}-recommended-packages
+      --with-blas="-L${blas}/lib -lblas"
+      --with-lapack="-L${lapack}/lib -llapack"
+      --with-readline
+      --with-tcltk --with-tcl-config="${tcl}/lib/tclConfig.sh" --with-tk-config="${tk}/lib/tkConfig.sh"
+      --with-cairo
+      --with-libpng
+      --with-jpeglib
+      --with-libtiff
+      --with-ICU
+      ${stdenv.lib.optionalString enableStrictBarrier "--enable-strict-barrier"}
+      ${if static then "--enable-R-static-lib" else "--enable-R-shlib"}
+      AR=$(type -p ar)
+      AWK=$(type -p gawk)
+      CC=$(type -p cc)
+      CXX=$(type -p c++)
+      FC="${gfortran}/bin/gfortran" F77="${gfortran}/bin/gfortran"
+      JAVA_HOME="${jdk}"
+      RANLIB=$(type -p ranlib)
+      R_SHELL="${stdenv.shell}"
+  '' + stdenv.lib.optionalString stdenv.isDarwin ''
+      --disable-R-framework
+      OBJC="clang"
+      CPPFLAGS="-isystem ${libcxx}/include/c++/v1"
+      LDFLAGS="-L${libcxx}/lib"
+  '' + ''
+    )
+    echo >>etc/Renviron.in "TCLLIBPATH=${tk}/lib"
+    echo >>etc/Renviron.in "TZDIR=${tzdata}/share/zoneinfo"
+  '';
+
+  installTargets = [ "install" "install-info" "install-pdf" ];
+
+  # The store path to "which" is baked into src/library/base/R/unix/system.unix.R,
+  # but Nix cannot detect it as a run-time dependency because the installed file
+  # is compiled and compressed, which hides the store path.
+  postFixup = "echo ${which} > $out/nix-support/undetected-runtime-dependencies";
+
+  doCheck = true;
+  preCheck = "export TZ=CET; bin/Rscript -e 'sessionInfo()'";
+
+  enableParallelBuilding = true;
+
+  setupHook = ./setup-hook.sh;
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.r-project.org/";
+    description = "Free software environment for statistical computing and graphics";
+    license = licenses.gpl2Plus;
+
+    longDescription = ''
+      GNU R is a language and environment for statistical computing and
+      graphics that provides a wide variety of statistical (linear and
+      nonlinear modelling, classical statistical tests, time-series
+      analysis, classification, clustering, ...) and graphical
+      techniques, and is highly extensible. One of R's strengths is the
+      ease with which well-designed publication-quality plots can be
+      produced, including mathematical symbols and formulae where
+      needed. R is an integrated suite of software facilities for data
+      manipulation, calculation and graphical display. It includes an
+      effective data handling and storage facility, a suite of operators
+      for calculations on arrays, in particular matrices, a large,
+      coherent, integrated collection of intermediate tools for data
+      analysis, graphical facilities for data analysis and display
+      either on-screen or on hardcopy, and a well-developed, simple and
+      effective programming language which includes conditionals, loops,
+      user-defined recursive functions and input and output facilities.
+    '';
+
+    platforms = platforms.all;
+    hydraPlatforms = platforms.linux;
+
+    maintainers = with maintainers; [ peti timokau ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/R/fix-failing-test.patch b/nixpkgs/pkgs/applications/science/math/R/fix-failing-test.patch
new file mode 100644
index 000000000000..5fb3b3b9c317
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/R/fix-failing-test.patch
@@ -0,0 +1,25 @@
+From e8f54bc562eb301d204b5f880614be58a2b39a2b Mon Sep 17 00:00:00 2001
+From: maechler <maechler@00db46b3-68df-0310-9c12-caf00c1e9a41>
+Date: Mon, 30 Mar 2020 19:15:59 +0000
+Subject: [PATCH] no longer fail in norm() check for broken OpenBLAS Lapack
+ 3.9.0
+
+git-svn-id: https://svn.r-project.org/R/trunk@78112 00db46b3-68df-0310-9c12-caf00c1e9a41
+---
+ tests/reg-tests-1d.R | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/tests/reg-tests-1d.R b/tests/reg-tests-1d.R
+index 6b7de765a95..fafd6911e7a 100644
+--- a/tests/reg-tests-1d.R
++++ b/tests/reg-tests-1d.R
+@@ -3836,7 +3836,8 @@ stopifnot(is.na( norm(diag(c(1, NA)), "2") ))
+ ## norm(<matrix-w-NA>, "F")
+ (m <- cbind(0, c(NA, 0), 0:-1))
+ nTypes <- eval(formals(base::norm)$type) # "O" "I" "F" "M" "2"
+-stopifnot(is.na( print(vapply(nTypes, norm, 0., x = m)) )) # print(): show NA *or* NaN
++print( # stopifnot( -- for now, as Lapack is still broken in some OpenBLAS -- FIXME
++    is.na( print(vapply(nTypes, norm, 0., x = m)) )) # print(): show NA *or* NaN
+ ## "F" gave non-NA with LAPACK 3.9.0, before our patch in R-devel and R-patched
+ 
+ 
diff --git a/nixpkgs/pkgs/applications/science/math/R/no-usr-local-search-paths.patch b/nixpkgs/pkgs/applications/science/math/R/no-usr-local-search-paths.patch
new file mode 100644
index 000000000000..6c7f6d4ee02a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/R/no-usr-local-search-paths.patch
@@ -0,0 +1,24 @@
+diff -ubr R-3.0.1-orig/configure R-3.0.1/configure
+--- R-3.0.1-orig/configure	2013-07-04 10:46:42.336133947 +0200
++++ R-3.0.1/configure	2013-07-04 10:46:17.181919960 +0200
+@@ -3800,13 +3800,13 @@
+ : ${LIBnn=$libnn}
+ ## We provide these defaults so that headers and libraries in
+ ## '/usr/local' are found (by the native tools, mostly).
+-if test -f "/sw/etc/fink.conf"; then
+-  : ${CPPFLAGS="-I/sw/include -I/usr/local/include"}
+-  : ${LDFLAGS="-L/sw/lib -L/usr/local/lib"}
+-else
+-  : ${CPPFLAGS="-I/usr/local/include"}
+-  : ${LDFLAGS="-L/usr/local/${LIBnn}"}
+-fi
++# if test -f "/sw/etc/fink.conf"; then
++#   : ${CPPFLAGS="-I/sw/include -I/usr/local/include"}
++#   : ${LDFLAGS="-L/sw/lib -L/usr/local/lib"}
++# else
++#   : ${CPPFLAGS="-I/usr/local/include"}
++#   : ${LDFLAGS="-L/usr/local/${LIBnn}"}
++# fi
+ 
+ ## take care not to  override the command-line setting
+ if test "${libdir}" = '${exec_prefix}/lib'; then
diff --git a/nixpkgs/pkgs/applications/science/math/R/setup-hook.sh b/nixpkgs/pkgs/applications/science/math/R/setup-hook.sh
new file mode 100644
index 000000000000..6951e2a4b61b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/R/setup-hook.sh
@@ -0,0 +1,7 @@
+addRLibPath () {
+    if [[ -d "$1/library" ]]; then
+        addToSearchPath R_LIBS_SITE "$1/library"
+    fi
+}
+
+addEnvHooks "$targetOffset" addRLibPath
diff --git a/nixpkgs/pkgs/applications/science/math/almonds/default.nix b/nixpkgs/pkgs/applications/science/math/almonds/default.nix
new file mode 100644
index 000000000000..9edb0747b31e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/almonds/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, python3, fetchFromGitHub, ncurses }:
+
+with python3.pkgs; buildPythonApplication rec {
+  pname = "almonds";
+  version = "1.25b";
+
+  src = fetchFromGitHub {
+    owner = "Tenchi2xh";
+    repo = "Almonds";
+    rev = version;
+    sha256 = "0j8d8jizivnfx8lpc4w6sbqj5hq35nfz0vdg7ld80sc5cs7jr3ws";
+  };
+
+  nativeBuildInputs = [ pytest ];
+  buildInputs = [ ncurses ];
+  propagatedBuildInputs = [ pillow ];
+
+  checkPhase = "py.test";
+
+  meta = with stdenv.lib; {
+    description = "Terminal Mandelbrot fractal viewer";
+    homepage = "https://github.com/Tenchi2xh/Almonds";
+    license = licenses.mit;
+    maintainers = with maintainers; [ infinisil ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/bcal/default.nix b/nixpkgs/pkgs/applications/science/math/bcal/default.nix
new file mode 100644
index 000000000000..18b6e051b3f2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/bcal/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, python3Packages, readline }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "bcal";
+  version = "1.9";
+
+  src = fetchFromGitHub {
+    owner = "jarun";
+    repo = "bcal";
+    rev = "v${version}";
+    sha256 = "0h6qi5rvzl6c6fsfdpdb3l4jcgip03l18i0b1x08z1y89i56y8mm";
+  };
+
+  nativeBuildInputs = [ python3Packages.pytest ];
+
+  buildInputs = [ readline ];
+
+  doCheck = true;
+  checkPhase = ''
+    python3 -m pytest test.py
+  '';
+
+  installFlags = [ "DESTDIR=$(out)" "PREFIX=" ];
+
+  meta = {
+    description = "Storage conversion and expression calculator";
+    homepage = "https://github.com/jarun/bcal";
+    license = licenses.gpl3;
+    platforms = [ "aarch64-linux" "x86_64-darwin" "x86_64-linux" ];
+    maintainers = with maintainers; [ jfrankenau ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/bliss/default.nix b/nixpkgs/pkgs/applications/science/math/bliss/default.nix
new file mode 100644
index 000000000000..361b08846626
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/bliss/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, unzip, doxygen }:
+
+stdenv.mkDerivation rec {
+  pname = "bliss";
+  version = "0.73";
+
+  src = fetchurl {
+    url = "http://www.tcs.hut.fi/Software/bliss/${pname}-${version}.zip";
+    sha256 = "f57bf32804140cad58b1240b804e0dbd68f7e6bf67eba8e0c0fa3a62fd7f0f84";
+  };
+
+  patches = fetchurl {
+    url = "http://scip.zib.de/download/bugfixes/scip-5.0.1/bliss-0.73.patch";
+    sha256 = "815868d6586bcd49ff3c28e14ccb536d38b2661151088fe08187c13909c5dab0";
+  };
+
+  nativeBuildInputs = [ unzip doxygen ];
+
+  preBuild = ''
+    doxygen Doxyfile
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/doc/bliss $out/lib $out/include/bliss
+    mv bliss $out/bin 
+    mv html/* COPYING* $out/share/doc/bliss
+    mv *.a $out/lib
+    mv *.h *.hh $out/include/bliss
+  '';
+
+  meta = with stdenv.lib; {
+    description = "bliss is an open source tool for computing automorphism groups and canonical forms of graphs. It has both a command line user interface as well as C++ and C programming language APIs.";
+    homepage = "http://www.tcs.hut.fi/Software/bliss/";
+    license = licenses.lgpl3;
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/caffe/darwin.patch b/nixpkgs/pkgs/applications/science/math/caffe/darwin.patch
new file mode 100644
index 000000000000..e8fa6a683f73
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/caffe/darwin.patch
@@ -0,0 +1,47 @@
+diff --git a/Makefile b/Makefile
+index c823f66e..65b90c5e 100644
+--- a/Makefile
++++ b/Makefile
+@@ -32,9 +32,9 @@ SRC_DIRS := $(shell find * -type d -exec bash -c "find {} -maxdepth 1 \
+ LIBRARY_NAME := $(PROJECT)
+ LIB_BUILD_DIR := $(BUILD_DIR)/lib
+ STATIC_NAME := $(LIB_BUILD_DIR)/lib$(LIBRARY_NAME).a
+-DYNAMIC_VERSION_MAJOR 		:= 1
+-DYNAMIC_VERSION_MINOR 		:= 0
+-DYNAMIC_VERSION_REVISION 	:= 0
++DYNAMIC_VERSION_MAJOR		:= 1
++DYNAMIC_VERSION_MINOR		:= 0
++DYNAMIC_VERSION_REVISION	:= 0
+ DYNAMIC_NAME_SHORT := lib$(LIBRARY_NAME).so
+ #DYNAMIC_SONAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR)
+ DYNAMIC_VERSIONED_NAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR).$(DYNAMIC_VERSION_MINOR).$(DYNAMIC_VERSION_REVISION)
+diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
+index c48255c8..cf4c580e 100644
+--- a/cmake/Dependencies.cmake
++++ b/cmake/Dependencies.cmake
+@@ -105,7 +105,6 @@ if(USE_OPENCV)
+ endif()
+ 
+ # ---[ BLAS
+-if(NOT APPLE)
+   set(BLAS "Atlas" CACHE STRING "Selected BLAS library")
+   set_property(CACHE BLAS PROPERTY STRINGS "Atlas;Open;MKL")
+ 
+@@ -123,17 +122,6 @@ if(NOT APPLE)
+     list(APPEND Caffe_LINKER_LIBS PUBLIC ${MKL_LIBRARIES})
+     list(APPEND Caffe_DEFINITIONS PUBLIC -DUSE_MKL)
+   endif()
+-elseif(APPLE)
+-  find_package(vecLib REQUIRED)
+-  list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${vecLib_INCLUDE_DIR})
+-  list(APPEND Caffe_LINKER_LIBS PUBLIC ${vecLib_LINKER_LIBS})
+-
+-  if(VECLIB_FOUND)
+-    if(NOT vecLib_INCLUDE_DIR MATCHES "^/System/Library/Frameworks/vecLib.framework.*")
+-      list(APPEND Caffe_DEFINITIONS PUBLIC -DUSE_ACCELERATE)
+-    endif()
+-  endif()
+-endif()
+ 
+ # ---[ Python
+ if(BUILD_python)
diff --git a/nixpkgs/pkgs/applications/science/math/caffe/default.nix b/nixpkgs/pkgs/applications/science/math/caffe/default.nix
new file mode 100644
index 000000000000..4a6a2dc6c7e0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/caffe/default.nix
@@ -0,0 +1,142 @@
+{ config, stdenv, lib
+, fetchFromGitHub
+, fetchurl
+, cmake
+, boost
+, gflags
+, glog
+, hdf5-cpp
+, opencv3
+, protobuf
+, doxygen
+, blas
+, Accelerate, CoreGraphics, CoreVideo
+, lmdbSupport ? true, lmdb
+, leveldbSupport ? true, leveldb, snappy
+, cudaSupport ? config.cudaSupport or false, cudatoolkit
+, cudnnSupport ? cudaSupport, cudnn ? null
+, ncclSupport ? false, nccl ? null
+, pythonSupport ? false, python ? null, numpy ? null
+, substituteAll
+}:
+
+assert leveldbSupport -> (leveldb != null && snappy != null);
+assert cudnnSupport -> cudaSupport;
+assert ncclSupport -> cudaSupport;
+assert pythonSupport -> (python != null && numpy != null);
+
+let
+  toggle = bool: if bool then "ON" else "OFF";
+
+  test_model_weights = fetchurl {
+    url = "http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel";
+    sha256 = "472d4a06035497b180636d8a82667129960371375bd10fcb6df5c6c7631f25e0";
+  };
+
+in
+
+stdenv.mkDerivation rec {
+  pname = "caffe";
+  version = "1.0";
+
+  src = fetchFromGitHub {
+    owner = "BVLC";
+    repo = "caffe";
+    rev = version;
+    sha256 = "104jp3cm823i3cdph7hgsnj6l77ygbwsy35mdmzhmsi4jxprd9j3";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ cmake doxygen ];
+
+  cmakeFlags =
+    # It's important that caffe is passed the major and minor version only because that's what
+    # boost_python expects
+    [ (if pythonSupport then "-Dpython_version=${python.pythonVersion}" else "-DBUILD_python=OFF")
+      "-DBLAS=open"
+    ] ++ (if cudaSupport then [
+           "-DCUDA_ARCH_NAME=All"
+           "-DCUDA_HOST_COMPILER=${cudatoolkit.cc}/bin/cc"
+         ] else [ "-DCPU_ONLY=ON" ])
+      ++ ["-DUSE_NCCL=${toggle ncclSupport}"]
+      ++ ["-DUSE_LEVELDB=${toggle leveldbSupport}"]
+      ++ ["-DUSE_LMDB=${toggle lmdbSupport}"];
+
+  buildInputs = [ boost gflags glog protobuf hdf5-cpp opencv3 blas ]
+                ++ lib.optional cudaSupport cudatoolkit
+                ++ lib.optional cudnnSupport cudnn
+                ++ lib.optional lmdbSupport lmdb
+                ++ lib.optional ncclSupport nccl
+                ++ lib.optionals leveldbSupport [ leveldb snappy ]
+                ++ lib.optionals pythonSupport [ python numpy ]
+                ++ lib.optionals stdenv.isDarwin [ Accelerate CoreGraphics CoreVideo ]
+                ;
+
+  propagatedBuildInputs = lib.optionals pythonSupport (
+    # requirements.txt
+    let pp = python.pkgs; in ([
+      pp.numpy pp.scipy pp.scikitimage pp.h5py
+      pp.matplotlib pp.ipython pp.networkx pp.nose
+      pp.pandas pp.dateutil pp.protobuf pp.gflags
+      pp.pyyaml pp.pillow pp.six
+    ] ++ lib.optional leveldbSupport pp.leveldb)
+  );
+
+  outputs = [ "bin" "out" ];
+  propagatedBuildOutputs = []; # otherwise propagates out -> bin cycle
+
+  patches = [
+    ./darwin.patch
+  ] ++ lib.optional pythonSupport (substituteAll {
+    src = ./python.patch;
+    inherit (python.sourceVersion) major minor;  # Should be changed in case of PyPy
+  });
+
+  postPatch = lib.optionalString (cudaSupport && lib.versionAtLeast cudatoolkit.version "9.0") ''
+    # CUDA 9.0 doesn't support sm_20
+    sed -i 's,20 21(20) ,,' cmake/Cuda.cmake
+  '';
+
+  preConfigure = lib.optionalString pythonSupport ''
+    # We need this when building with Python bindings
+    export BOOST_LIBRARYDIR="${boost.out}/lib";
+  '';
+
+  postInstall = ''
+    # Internal static library.
+    rm $out/lib/libproto.a
+
+    # Install models
+    cp -a ../models $out/share/Caffe/models
+
+    moveToOutput "bin" "$bin"
+  '' + lib.optionalString pythonSupport ''
+    mkdir -p $out/${python.sitePackages}
+    mv $out/python/caffe $out/${python.sitePackages}
+    rm -rf $out/python
+  '';
+
+  doInstallCheck = false; # build takes more than 30 min otherwise
+  installCheckPhase = ''
+    model=bvlc_reference_caffenet
+    m_path="$out/share/Caffe/models/$model"
+    $bin/bin/caffe test \
+      -model "$m_path/deploy.prototxt" \
+      -solver "$m_path/solver.prototxt" \
+      -weights "${test_model_weights}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Deep learning framework";
+    longDescription = ''
+      Caffe is a deep learning framework made with expression, speed, and
+      modularity in mind. It is developed by the Berkeley Vision and Learning
+      Center (BVLC) and by community contributors.
+    '';
+    homepage = "http://caffe.berkeleyvision.org/";
+    maintainers = with maintainers; [ jb55 ];
+    license = licenses.bsd2;
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/caffe/python.patch b/nixpkgs/pkgs/applications/science/math/caffe/python.patch
new file mode 100644
index 000000000000..dac5071aa08c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/caffe/python.patch
@@ -0,0 +1,70 @@
+commit b14ca23651d390fcae4a929dedc7c33a83453a66
+Author: Frederik Rietdijk <fridh@fridh.nl>
+Date:   Sun Feb 17 08:41:27 2019 +0100
+
+    Find boost_pythonXX
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 08f56a33..0a04592a 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -99,10 +99,10 @@ add_subdirectory(docs)
+ add_custom_target(lint COMMAND ${CMAKE_COMMAND} -P ${PROJECT_SOURCE_DIR}/cmake/lint.cmake)
+ 
+ # ---[ pytest target
+-if(BUILD_python)
+-  add_custom_target(pytest COMMAND python${python_version} -m unittest discover -s caffe/test WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/python )
+-  add_dependencies(pytest pycaffe)
+-endif()
++# if(BUILD_python)
++#   add_custom_target(pytest COMMAND python${python_version} -m unittest discover -s caffe/test WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/python )
++#   add_dependencies(pytest pycaffe)
++# endif()
+ 
+ # ---[ uninstall target
+ configure_file(
+diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
+index 4a5bac47..be026d43 100644
+--- a/cmake/Dependencies.cmake
++++ b/cmake/Dependencies.cmake
+@@ -141,37 +141,14 @@ if(BUILD_python)
+     # use python3
+     find_package(PythonInterp 3.0)
+     find_package(PythonLibs 3.0)
+-    find_package(NumPy 1.7.1)
+-    # Find the matching boost python implementation
+-    set(version ${PYTHONLIBS_VERSION_STRING})
+-
+-    STRING( REGEX REPLACE "[^0-9]" "" boost_py_version ${version} )
+-    find_package(Boost 1.46 COMPONENTS "python-py${boost_py_version}")
+-    set(Boost_PYTHON_FOUND ${Boost_PYTHON-PY${boost_py_version}_FOUND})
+-
+-    while(NOT "${version}" STREQUAL "" AND NOT Boost_PYTHON_FOUND)
+-      STRING( REGEX REPLACE "([0-9.]+).[0-9]+" "\\1" version ${version} )
+-
+-      STRING( REGEX REPLACE "[^0-9]" "" boost_py_version ${version} )
+-      find_package(Boost 1.46 COMPONENTS "python-py${boost_py_version}")
+-      set(Boost_PYTHON_FOUND ${Boost_PYTHON-PY${boost_py_version}_FOUND})
+-
+-      STRING( REGEX MATCHALL "([0-9.]+).[0-9]+" has_more_version ${version} )
+-      if("${has_more_version}" STREQUAL "")
+-        break()
+-      endif()
+-    endwhile()
+-    if(NOT Boost_PYTHON_FOUND)
+-      find_package(Boost 1.46 COMPONENTS python)
+-    endif()
+   else()
+     # disable Python 3 search
+     find_package(PythonInterp 2.7)
+     find_package(PythonLibs 2.7)
+-    find_package(NumPy 1.7.1)
+-    find_package(Boost 1.46 COMPONENTS python)
+   endif()
+-  if(PYTHONLIBS_FOUND AND NUMPY_FOUND AND Boost_PYTHON_FOUND)
++  find_package(NumPy 1.7.1)
++  find_package(Boost 1.46 REQUIRED COMPONENTS python@major@@minor@)
++  if(PYTHONLIBS_FOUND AND NUMPY_FOUND AND Boost_PYTHON@major@@minor@_FOUND)
+     set(HAVE_PYTHON TRUE)
+     if(BUILD_python_layer)
+       list(APPEND Caffe_DEFINITIONS PRIVATE -DWITH_PYTHON_LAYER)
diff --git a/nixpkgs/pkgs/applications/science/math/calc/default.nix b/nixpkgs/pkgs/applications/science/math/calc/default.nix
new file mode 100644
index 000000000000..8e50f48b286b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/calc/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, lib, fetchurl, utillinux, makeWrapper
+, enableReadline ? true, readline, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "calc";
+  version = "2.12.7.2";
+
+  src = fetchurl {
+    urls = [
+      "https://github.com/lcn2/calc/releases/download/${version}/${pname}-${version}.tar.bz2"
+      "http://www.isthe.com/chongo/src/calc/${pname}-${version}.tar.bz2"
+    ];
+    sha256 = "147wmbajcxv6wp92j6pizq4plrr1sb7jirifr1477bx33hc49bsp";
+  };
+
+  patchPhase = ''
+    substituteInPlace Makefile \
+      --replace '-install_name ''${LIBDIR}/libcalc''${LIB_EXT_VERSION}' '-install_name ''${T}''${LIBDIR}/libcalc''${LIB_EXT_VERSION}' \
+      --replace '-install_name ''${LIBDIR}/libcustcalc''${LIB_EXT_VERSION}' '-install_name ''${T}''${LIBDIR}/libcustcalc''${LIB_EXT_VERSION}'
+  '';
+
+  buildInputs = [ utillinux makeWrapper ]
+             ++ lib.optionals enableReadline [ readline ncurses ];
+
+  makeFlags = [
+    "T=$(out)"
+    "INCDIR="
+    "BINDIR=/bin"
+    "LIBDIR=/lib"
+    "CALC_SHAREDIR=/share/calc"
+    "CALC_INCDIR=/include"
+    "MANDIR=/share/man/man1"
+
+    # Handle LDFLAGS defaults in calc
+    "DEFAULT_LIB_INSTALL_PATH=$(out)/lib"
+  ] ++ lib.optionals enableReadline [
+    "READLINE_LIB=-lreadline"
+    "USE_READLINE=-DUSE_READLINE"
+  ];
+
+  meta = with lib; {
+    description = "C-style arbitrary precision calculator";
+    homepage = "http://www.isthe.com/chongo/tech/comp/calc/";
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ matthewbauer ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/calculix/calculix.patch b/nixpkgs/pkgs/applications/science/math/calculix/calculix.patch
new file mode 100644
index 000000000000..5b8f492a8e7c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/calculix/calculix.patch
@@ -0,0 +1,31 @@
+diff --git a/ccx_2.15/src/Makefile b/ccx_2.15/src/Makefile
+index 9cab2fc..6e977b8 100755
+--- a/ccx_2.15/src/Makefile
++++ b/ccx_2.15/src/Makefile
+@@ -1,6 +1,6 @@
+ 
+ CFLAGS = -Wall -O3  -I ../../../SPOOLES.2.2 -DARCH="Linux" -DSPOOLES -DARPACK -DMATRIXSTORAGE -DNETWORKOUT
+-FFLAGS = -Wall -O3 
++FFLAGS = -Wall -O3
+ 
+ CC=cc
+ FC=gfortran
+@@ -18,15 +18,10 @@ OCCXF = $(SCCXF:.f=.o)
+ OCCXC = $(SCCXC:.c=.o)
+ OCCXMAIN = $(SCCXMAIN:.c=.o)
+ 
+-DIR=../../../SPOOLES.2.2
++LIBS = -lpthread -lm -lc -lspooles -larpack -lblas -llapack
+ 
+-LIBS = \
+-       $(DIR)/spooles.a \
+-	../../../ARPACK/libarpack_INTEL.a \
+-       -lpthread -lm -lc
+-
+-ccx_2.15: $(OCCXMAIN) ccx_2.15.a  $(LIBS)
+-	./date.pl; $(CC) $(CFLAGS) -c ccx_2.15.c; $(FC)  -Wall -O3 -o $@ $(OCCXMAIN) ccx_2.15.a $(LIBS)
++ccx_2.15: $(OCCXMAIN) ccx_2.15.a
++	$(CC) $(CFLAGS) -c ccx_2.15.c; $(FC)  -Wall -O3 -o $@ $(OCCXMAIN) ccx_2.15.a $(LIBS)
+ 
+ ccx_2.15.a: $(OCCXF) $(OCCXC)
+ 	ar vr $@ $?
diff --git a/nixpkgs/pkgs/applications/science/math/calculix/default.nix b/nixpkgs/pkgs/applications/science/math/calculix/default.nix
new file mode 100644
index 000000000000..44882594550b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/calculix/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, gfortran, arpack, spooles, blas, lapack }:
+
+stdenv.mkDerivation rec {
+  pname = "calculix";
+  version = "2.15";
+
+  src = fetchurl {
+    url = "http://www.dhondt.de/ccx_${version}.src.tar.bz2";
+    sha256 = "0d4axfxgm3ag4p2vx9rjcky7c122k99a2nhv1jv53brm35rblzdw";
+  };
+
+  nativeBuildInputs = [ gfortran ];
+
+  buildInputs = [ arpack spooles blas lapack ];
+
+  NIX_CFLAGS_COMPILE = "-I${spooles}/include/spooles";
+
+  patches = [
+    ./calculix.patch
+  ];
+
+  postPatch = ''
+    cd ccx*/src
+  '';
+
+  installPhase = ''
+    install -Dm0755 ccx_${version} $out/bin/ccx
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.calculix.de/";
+    description = "Three-dimensional structural finite element program";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ gebner ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/cbc/default.nix b/nixpkgs/pkgs/applications/science/math/cbc/default.nix
new file mode 100644
index 000000000000..b75f3d3f7868
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/cbc/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenv, fetchurl, zlib, bzip2 }:
+
+stdenv.mkDerivation rec {
+  pname = "cbc";
+  version = "2.10.3";
+
+  src = fetchurl {
+    url = "https://www.coin-or.org/download/source/Cbc/Cbc-${version}.tgz";
+    sha256 = "1zzcg40ky5v96s7br2hqlkqdspwrn43kf3757g6c35wl29bq6f5d";
+  };
+
+  configureFlags = [ "-C" ];
+
+  enableParallelBuilding = true;
+
+  hardeningDisable = [ "format" ];
+
+  buildInputs = [ zlib bzip2 ];
+
+  # FIXME: move share/coin/Data to a separate output?
+
+  meta = {
+    homepage = "https://projects.coin-or.org/Cbc";
+    license = lib.licenses.epl10;
+    maintainers = [ lib.maintainers.eelco ];
+    platforms = lib.platforms.linux ++ lib.platforms.darwin;
+    broken = stdenv.isAarch64; # Missing <immintrin.h> after 2.10.0
+    description = "A mixed integer programming solver";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/cemu/default.nix b/nixpkgs/pkgs/applications/science/math/cemu/default.nix
new file mode 100644
index 000000000000..b41135229dd7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/cemu/default.nix
@@ -0,0 +1,53 @@
+{ fetchFromGitHub
+, stdenv
+, mkDerivation
+, SDL2
+, libGL
+, libarchive
+, libusb-compat-0_1
+, qtbase
+, qmake
+, git
+, libpng_apng
+, pkgconfig
+}:
+
+mkDerivation rec {
+  pname = "CEmu";
+  version = "1.3";
+  src = fetchFromGitHub {
+    owner = "CE-Programming";
+    repo = "CEmu";
+    rev = "v${version}";
+    sha256 = "1wcdnzcqscawj6jfdj5wwmw9g9vsd6a1rx0rrramakxzf8b7g47r";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    qmake
+    git
+    pkgconfig
+  ];
+
+  buildInputs = [
+    SDL2
+    libGL
+    libarchive
+    libusb-compat-0_1
+    qtbase
+    libpng_apng
+  ];
+
+  qmakeFlags = [
+    "gui/qt"
+  ];
+
+  meta = with stdenv.lib; {
+    changelog = "https://github.com/CE-Programming/CEmu/releases/tag/v${version}";
+    description = "Third-party TI-84 Plus CE / TI-83 Premium CE emulator, focused on developer features";
+    homepage = "https://ce-programming.github.io/CEmu";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ luc65r ];
+    platforms = [ "x86_64-linux" "x86_64-darwin" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/clp/default.nix b/nixpkgs/pkgs/applications/science/math/clp/default.nix
new file mode 100644
index 000000000000..97ef3dd7543f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/clp/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, zlib }:
+
+stdenv.mkDerivation rec {
+  version = "1.17.6";
+  pname = "clp";
+  src = fetchurl {
+    url = "https://www.coin-or.org/download/source/Clp/Clp-${version}.tgz";
+    sha256 = "0ap1f0lxppa6pnbc4bg7ih7a96avwaki482nig8w5fr3vg9wvkzr";
+  };
+
+  propagatedBuildInputs = [ zlib ];
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    license = licenses.epl10;
+    homepage = "https://github.com/coin-or/Clp";
+    description = "An open-source linear programming solver written in C++";
+    platforms = platforms.darwin ++ [ "x86_64-linux" ];
+    maintainers = [ maintainers.vbgl ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/cntk/default.nix b/nixpkgs/pkgs/applications/science/math/cntk/default.nix
new file mode 100644
index 000000000000..401454a6b69b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/cntk/default.nix
@@ -0,0 +1,105 @@
+{ lib, stdenv, fetchgit, fetchFromGitHub, cmake
+, openblas, blas, lapack, opencv3, libzip, boost, protobuf, openmpi
+, onebitSGDSupport ? false
+, cudaSupport ? false, addOpenGLRunpath, cudatoolkit, nvidia_x11
+, cudnnSupport ? cudaSupport, cudnn
+}:
+
+assert cudnnSupport -> cudaSupport;
+assert blas.implementation == "openblas" && lapack.implementation == "openblas";
+
+let
+  # Old specific version required for CNTK.
+  cub = fetchFromGitHub {
+    owner = "NVlabs";
+    repo = "cub";
+    rev = "1.7.4";
+    sha256 = "0ksd5n1lxqhm5l5cd2lps4cszhjkf6gmzahaycs7nxb06qci8c66";
+  };
+
+in stdenv.mkDerivation rec {
+  pname = "CNTK";
+  version = "2.7";
+
+  # Submodules
+  src = fetchgit {
+    url = "https://github.com/Microsoft/CNTK";
+    rev = "v${version}";
+    sha256 = "18l9k7s966a26ywcf7flqyhm61788pcb9fj3wk61jrmgkhy2pcns";
+  };
+
+  nativeBuildInputs = [ cmake ] ++ lib.optional cudaSupport addOpenGLRunpath;
+
+  # Force OpenMPI to use g++ in PATH.
+  OMPI_CXX = "g++";
+
+  buildInputs = [ openblas opencv3 libzip boost protobuf openmpi ]
+             ++ lib.optional cudaSupport cudatoolkit
+             ++ lib.optional cudnnSupport cudnn;
+
+  configureFlags = [
+    "--with-opencv=${opencv3}"
+    "--with-libzip=${libzip.dev}"
+    "--with-openblas=${openblas}"
+    "--with-boost=${boost.dev}"
+    "--with-protobuf=${protobuf}"
+    "--with-mpi=${openmpi}"
+    "--cuda=${if cudaSupport then "yes" else "no"}"
+    # FIXME
+    "--asgd=no"
+  ] ++ lib.optionals cudaSupport [
+    "--with-cuda=${cudatoolkit}"
+    "--with-gdk-include=${cudatoolkit}/include"
+    "--with-gdk-nvml-lib=${nvidia_x11}/lib"
+    "--with-cub=${cub}"
+  ] ++ lib.optional onebitSGDSupport "--1bitsgd=yes";
+
+  configurePhase = ''
+    sed -i \
+      -e 's,^GIT_STATUS=.*,GIT_STATUS=,' \
+      -e 's,^GIT_COMMIT=.*,GIT_COMMIT=v${version},' \
+      -e 's,^GIT_BRANCH=.*,GIT_BRANCH=v${version},' \
+      -e 's,^BUILDER=.*,BUILDER=nixbld,' \
+      -e 's,^BUILDMACHINE=.*,BUILDMACHINE=machine,' \
+      -e 's,^BUILDPATH=.*,BUILDPATH=/homeless-shelter,' \
+      -e '/git does not exist/d' \
+      Tools/generate_build_info
+
+    patchShebangs .
+    mkdir build
+    cd build
+    ${lib.optionalString cudnnSupport ''
+      mkdir cuda
+      ln -s ${cudnn}/include cuda
+      export configureFlags="$configureFlags --with-cudnn=$PWD"
+    ''}
+
+    ../configure $configureFlags
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    # Moving to make patchelf remove references later.
+    mv lib $out
+    cp bin/cntk $out/bin
+  '';
+
+  postFixup = lib.optionalString cudaSupport ''
+    for lib in $out/lib/*; do
+      addOpenGLRunpath "$lib"
+    done
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    # Newer cub is included with cudatoolkit now and it breaks the build.
+    # https://github.com/Microsoft/CNTK/issues/3191
+    broken = cudaSupport;
+    homepage = "https://github.com/Microsoft/CNTK";
+    description = "An open source deep-learning toolkit";
+    license = if onebitSGDSupport then licenses.unfreeRedistributable else licenses.mit;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/colpack/default.nix b/nixpkgs/pkgs/applications/science/math/colpack/default.nix
new file mode 100644
index 000000000000..13a75ce4db2d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/colpack/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, autoconf, automake, libtool, gettext }:
+
+stdenv.mkDerivation rec {
+
+  pname = "ColPack";
+  version = "1.0.10";
+
+  src = fetchFromGitHub {
+    owner = "CSCsw";
+    repo = pname;
+    rev = "v" + version;
+    sha256 = "1p05vry940mrjp6236c0z83yizmw9pk6ly2lb7d8rpb7j9h03glr";
+  };
+
+  buildInputs = [ autoconf automake gettext libtool ];
+
+  configurePhase = ''
+    autoreconf -vif
+    ./configure --prefix=$out --enable-openmp
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A package comprising of implementations of algorithms for
+    vertex coloring and derivative computation";
+    homepage = "http://cscapes.cs.purdue.edu/coloringpage/software.htm#functionalities";
+    license = licenses.lgpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ edwtjo ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/science/math/cplex/default.nix b/nixpkgs/pkgs/applications/science/math/cplex/default.nix
new file mode 100644
index 000000000000..ec13f5252f13
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/cplex/default.nix
@@ -0,0 +1,87 @@
+{ stdenv, makeWrapper, openjdk, gtk2, xorg, glibcLocales, releasePath ? null }:
+
+# To use this package, you need to download your own cplex installer from IBM
+# and override the releasePath attribute to point to the location of the file.  
+#
+# Note: cplex creates an individual build for each license which screws
+# somewhat with the use of functions like requireFile as the hash will be
+# different for every user.
+
+stdenv.mkDerivation rec {
+  pname = "cplex";
+  version = "128";
+  
+  src =
+    if releasePath == null then
+      throw ''
+        This nix expression requires that the cplex installer is already
+        downloaded to your machine. Get it from IBM: 
+        https://developer.ibm.com/docloud/blog/2017/12/20/cplex-optimization-studio-12-8-now-available/ 
+
+        Set `cplex.releasePath = /path/to/download;` in your
+        ~/.config/nixpkgs/config.nix for `nix-*` commands, or
+        `config.cplex.releasePath = /path/to/download;` in your
+        `configuration.nix` for NixOS.
+      ''
+    else
+      releasePath;
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ openjdk gtk2 xorg.libXtst glibcLocales ];
+
+  unpackPhase = "cp $src $name";
+
+  patchPhase = ''
+    sed -i -e 's|/usr/bin/tr"|tr"         |' $name
+  '';
+
+  buildPhase = ''
+    sh $name -i silent -DLICENSE_ACCEPTED=TRUE -DUSER_INSTALL_DIR=$out
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    ln -s $out/opl/bin/x86-64_linux/oplrun\
+      $out/opl/bin/x86-64_linux/oplrunjava\
+      $out/opl/oplide/oplide\
+      $out/cplex/bin/x86-64_linux/cplex\
+      $out/cpoptimizer/bin/x86-64_linux/cpoptimizer\
+      $out/bin
+  '';
+
+  fixupPhase = 
+  let 
+    libraryPath = stdenv.lib.makeLibraryPath [ stdenv.cc.cc gtk2 xorg.libXtst ];
+  in ''
+    interpreter=${stdenv.glibc}/lib/ld-linux-x86-64.so.2
+
+    for pgm in $out/opl/bin/x86-64_linux/oplrun $out/opl/bin/x86-64_linux/oplrunjava $out/opl/oplide/oplide;
+    do
+      patchelf --set-interpreter "$interpreter" $pgm;
+      wrapProgram $pgm \
+        --prefix LD_LIBRARY_PATH : $out/opl/bin/x86-64_linux:${libraryPath} \
+        --set LOCALE_ARCHIVE ${glibcLocales}/lib/locale/locale-archive;
+    done
+
+    for pgm in $out/cplex/bin/x86-64_linux/cplex $out/cpoptimizer/bin/x86-64_linux/cpoptimizer $out/opl/oplide/jre/bin/*; 
+    do
+      if grep ELF $pgm > /dev/null;
+      then
+        patchelf --set-interpreter "$interpreter" $pgm;
+      fi
+    done
+  '';
+
+  passthru = {
+    libArch = "x86-64_linux";
+    libSuffix = "${version}0";
+  };
+  
+  meta = with stdenv.lib; {
+    description = "Optimization solver for mathematical programming";
+    homepage = "https://www.ibm.com/be-en/marketplace/ibm-ilog-cplex";
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ bfortz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/csdp/default.nix b/nixpkgs/pkgs/applications/science/math/csdp/default.nix
new file mode 100644
index 000000000000..ef9d5e733ca7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/csdp/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenv, fetchurl, blas, gfortran, lapack }:
+
+stdenv.mkDerivation {
+  name = "csdp-6.1.1";
+
+  src = fetchurl {
+    url = "https://www.coin-or.org/download/source/Csdp/Csdp-6.1.1.tgz";
+    sha256 = "1f9ql6cjy2gwiyc51ylfan24v1ca9sjajxkbhszlds1lqmma8n05";
+  };
+
+  buildInputs = [ blas gfortran.cc.lib lapack ];
+
+  postPatch = ''
+    substituteInPlace Makefile --replace /usr/local/bin $out/bin
+  '';
+
+  preInstall = ''
+    rm -f INSTALL
+    mkdir -p $out/bin
+  '';
+
+  meta = {
+    homepage = "https://projects.coin-or.org/Csdp";
+    license = lib.licenses.cpl10;
+    maintainers = [ lib.maintainers.roconnor ];
+    description = "A C Library for Semidefinite Programming";
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/ecm/default.nix b/nixpkgs/pkgs/applications/science/math/ecm/default.nix
new file mode 100644
index 000000000000..3e8e5879950b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/ecm/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, gmp, m4 }:
+
+let
+  pname = "ecm";
+  version = "7.0.4";
+  name = "${pname}-${version}";
+in
+
+stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchurl {
+    url = "http://gforge.inria.fr/frs/download.php/file/36224/ecm-${version}.tar.gz";
+    sha256 = "0hxs24c2m3mh0nq1zz63z3sb7dhy1rilg2s1igwwcb26x3pb7xqc";
+  };
+
+  # See https://trac.sagemath.org/ticket/19233
+  configureFlags = stdenv.lib.optional stdenv.isDarwin "--disable-asm-redc";
+
+  buildInputs = [ m4 gmp ];
+
+  doCheck = true;
+
+  meta = {
+    description = "Elliptic Curve Method for Integer Factorization";
+    license = stdenv.lib.licenses.gpl2Plus;
+    homepage = "http://ecm.gforge.inria.fr/";
+    maintainers = [ stdenv.lib.maintainers.roconnor ];
+    platforms = with stdenv.lib.platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/eukleides/default.nix b/nixpkgs/pkgs/applications/science/math/eukleides/default.nix
new file mode 100644
index 000000000000..879ad96a9367
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/eukleides/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, bison, flex, texinfo, readline, texLive }:
+
+let
+  name    = "eukleides";
+  version = "1.5.4";
+in
+stdenv.mkDerivation {
+  name = "${name}-${version}";
+
+  src = fetchurl {
+    url = "http://www.eukleides.org/files/${name}-${version}.tar.bz2";
+    sha256 = "0s8cyh75hdj89v6kpm3z24i48yzpkr8qf0cwxbs9ijxj1i38ki0q";
+  };
+
+  buildInputs = [bison flex texinfo readline texLive];
+
+  preConfigure = "sed -i 's/ginstall-info/install-info/g' doc/Makefile";
+  installPhase = "mkdir -p $out/bin ; make PREFIX=$out install";
+
+  meta = {
+    description = "Geometry Drawing Language";
+    homepage = "http://www.eukleides.org/";
+    license = stdenv.lib.licenses.gpl2;
+
+    longDescription = ''
+      Eukleides is a computer language devoted to elementary plane
+      geometry. It aims to be a fairly comprehensive system to create
+      geometric figures, either static or dynamic. Eukleides allows to
+      handle basic types of data: numbers and strings, as well as
+      geometric types of data: points, vectors, sets (of points), lines,
+      circles and conics.
+    '';
+
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.peti ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/form/default.nix b/nixpkgs/pkgs/applications/science/math/form/default.nix
new file mode 100644
index 000000000000..091372792901
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/form/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, gmp, zlib }:
+
+stdenv.mkDerivation {
+  version = "4.2.1";
+  pname = "form";
+
+  # This tarball is released by author, it is not downloaded from tag, so can't use fetchFromGitHub
+  src = fetchurl {
+    url = "https://github.com/vermaseren/form/releases/download/v4.2.1/form-4.2.1.tar.gz";
+    sha256 = "0a0smc10gm85vxd85942n5azy88w5qs5avbqrw0lw0yb9injswpj";
+  };
+
+  buildInputs = [ gmp zlib ];
+
+  meta = with stdenv.lib; {
+    description = "The FORM project for symbolic manipulation of very big expressions";
+    homepage = "https://www.nikhef.nl/~form/";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.veprbl ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/fricas/default.nix b/nixpkgs/pkgs/applications/science/math/fricas/default.nix
new file mode 100644
index 000000000000..39ca53c47e6e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/fricas/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, sbcl, libX11, libXpm, libICE, libSM, libXt, libXau, libXdmcp }:
+
+let
+  version = "1.3.4";
+  name = "fricas-" + version;
+in
+stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchurl {
+    url    = "mirror://sourceforge/fricas/files/fricas/${version}/${name}-full.tar.bz2";
+    sha256 = "156k9az1623y5808j845c56z2nvvdrm48dzg1v0ivpplyl7vp57x";
+  };
+
+  buildInputs = [ sbcl libX11 libXpm libICE libSM libXt libXau libXdmcp ];
+
+  dontStrip = true;
+
+  meta = {
+    homepage = "http://fricas.sourceforge.net/";
+    description = "An advanced computer algebra system";
+    license = stdenv.lib.licenses.bsd3;
+
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.sprock ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/gap/default.nix b/nixpkgs/pkgs/applications/science/math/gap/default.nix
new file mode 100644
index 000000000000..04a49becc973
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/gap/default.nix
@@ -0,0 +1,185 @@
+{ stdenv
+, lib
+, fetchurl
+, fetchpatch
+, makeWrapper
+, readline
+, gmp
+# one of
+# - "minimal" (~400M):
+#     Install the bare minimum of packages required by gap to start.
+#     This is likely to break a lot of stuff. Do not expect upstream support with
+#     this configuration.
+# - "standard" (~700M):
+#     Install the "standard packages" which gap autoloads by default. These
+#     packages are effectively considered a part of gap.
+# - "full" (~1.7G):
+#     Install all available packages. This takes a lot of space.
+, packageSet ? "standard"
+# Kept for backwards compatibility. Overrides packageSet to "full".
+, keepAllPackages ? false
+}:
+let
+  # packages absolutely required for gap to start
+  # `*` represents the version where applicable
+  requiredPackages = [
+    "GAPDoc-*"
+    "primgrp-*"
+    "SmallGrp-*"
+    "transgrp"
+  ];
+  # packages autoloaded by default if available
+  autoloadedPackages = [
+    "atlasrep"
+    "autpgrp-*"
+    "alnuth-*"
+    "crisp-*"
+    "ctbllib"
+    "FactInt-*"
+    "fga"
+    "irredsol-*"
+    "laguna-*"
+    "polenta-*"
+    "polycyclic-*"
+    "resclasses-*"
+    "sophus-*"
+    "tomlib-*"
+  ];
+  keepAll = keepAllPackages || (packageSet == "full");
+  packagesToKeep = requiredPackages ++ lib.optionals (packageSet == "standard") autoloadedPackages;
+
+  # Generate bash script that removes all packages from the `pkg` subdirectory
+  # that are not on the whitelist. The whitelist consists of strings expected by
+  # `find`'s `-name`.
+  removeNonWhitelistedPkgs = whitelist: ''
+    find pkg -type d -maxdepth 1 -mindepth 1 \
+  '' + (lib.concatStringsSep "\n" (map (str: "-not -name '${str}' \\") whitelist)) + ''
+    -exec echo "Removing package {}" \; \
+    -exec rm -r '{}' \;
+  '';
+in
+stdenv.mkDerivation rec {
+  pname = "gap";
+  # https://www.gap-system.org/Releases/
+  version = "4.10.2";
+
+  src = fetchurl {
+    url = "https://files.gap-system.org/gap-${lib.versions.major version}.${lib.versions.minor version}/tar.bz2/gap-${version}.tar.bz2";
+    sha256 = "0cp6ddk0469zzv1m1vair6gm27ic6c5m77ri8rn0znq3gaps6x94";
+  };
+
+  # remove all non-essential packages (which take up a lot of space)
+  preConfigure = lib.optionalString (!keepAll) (removeNonWhitelistedPkgs packagesToKeep) + ''
+    patchShebangs .
+  '';
+
+  buildInputs = [
+    readline
+    gmp
+  ];
+
+  nativeBuildInputs = [
+    makeWrapper
+  ];
+
+  patches = [
+    # https://github.com/gap-system/gap/pull/3294
+    (fetchpatch {
+      name = "add-make-install-targets.patch";
+      url = "https://github.com/gap-system/gap/commit/3361c172e6c5ff3bb3f01ba9d6f1dd4ad42cea80.patch";
+      sha256 = "1kwp9qnfvmlbpf1c3rs6j5m2jz22rj7a4hb5x1gj9vkpiyn5pdyj";
+    })
+
+    # Fix for locale specific tests causing issues. Already upstream.
+    # Backport of https://github.com/gap-system/gap/pull/4022
+    # WHEN REMOVING: also remove the`rm tst/testinstall/strings.tst` line in
+    # `postPatch` below. That line is necessary since the patch is not intended
+    # for gap 4.10.
+    (fetchpatch {
+      name = "remove-locale-specific-tests.patch";
+      url = "https://github.com/gap-system/gap/commit/c18b0c4215b5212a2cc4f305e2d5b94ba716bee8.patch";
+      excludes = ["tst/testinstall/stringobj.tst"];
+      sha256 = "1mz5b4mbw2jdd1ypp5s0dy6pp0jsvwsxr2dm4kbkls20r1r192sc";
+    })
+  ];
+
+  postPatch = ''
+    # File not covered by the remove-locale-specific-tests.patch patch above.
+    rm tst/testinstall/strings.tst
+  '';
+
+  # "teststandard" is a superset of testinstall. It takes ~1h instead of ~1min.
+  # tests are run twice, once with all packages loaded and once without
+  # checkTarget = "teststandard";
+
+  doInstallCheck = true;
+  installCheckTarget = "check";
+
+  preInstallCheck = ''
+    # gap tests check that the home directory exists
+    export HOME="$TMP/gap-home"
+    mkdir -p "$HOME"
+
+    # make sure gap is in PATH
+    export PATH="$out/bin:$PATH"
+
+    # make sure we don't accidentally use the wrong gap binary
+    rm -r bin
+
+    # like the defaults the Makefile, but use gap from PATH instead of the
+    # one from builddir
+    installCheckFlagsArray+=(
+      "TESTGAP=gap --quitonbreak -b -m 100m -o 1g -q -x 80 -r -A"
+      "TESTGAPauto=gap --quitonbreak -b -m 100m -o 1g -q -x 80 -r"
+    )
+  '';
+
+  postBuild = ''
+    pushd pkg
+    bash ../bin/BuildPackages.sh
+    popd
+  '';
+
+  installTargets = [
+    "install-libgap"
+    "install-headers"
+  ];
+
+  # full `make install` is not yet implemented, just for libgap and headers
+  postInstall = ''
+    # Install config.h, which is not currently handled by `make install-headers`
+    cp gen/config.h "$out/include/gap"
+
+    mkdir -p "$out/bin" "$out/share/gap/"
+
+    mkdir -p "$out/share/gap"
+    echo "Copying files to target directory"
+    cp -ar . "$out/share/gap/build-dir"
+
+    makeWrapper "$out/share/gap/build-dir/bin/gap.sh" "$out/bin/gap" \
+      --set GAP_DIR $out/share/gap/build-dir
+  '';
+
+  preFixup = ''
+    # patchelf won't strip references to the build dir if it still exists
+    rm -rf pkg
+  '';
+
+  meta = with lib; {
+    description = "Computational discrete algebra system";
+    maintainers = with maintainers;
+    [
+      raskin
+      chrisjefferson
+      timokau
+    ];
+    platforms = platforms.all;
+    broken = stdenv.isDarwin;
+    # keeping all packages increases the package size considerably, which is
+    # why a local build is preferable in that situation. The timeframe is
+    # reasonable and that way the binary cache doesn't get overloaded.
+    hydraPlatforms = lib.optionals (!keepAllPackages) meta.platforms;
+    license = licenses.gpl2;
+    homepage = "https://www.gap-system.org";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/geogebra/default.nix b/nixpkgs/pkgs/applications/science/math/geogebra/default.nix
new file mode 100644
index 000000000000..1dd92267a837
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/geogebra/default.nix
@@ -0,0 +1,63 @@
+{ stdenv, fetchurl, jre, makeDesktopItem, makeWrapper, language ? "en_US" }:
+
+stdenv.mkDerivation rec {
+  pname = "geogebra";
+  version = "5-0-574-0";
+
+  preferLocalBuild = true;
+
+  src = fetchurl {
+    urls = [
+      "https://download.geogebra.org/installers/5.0/GeoGebra-Linux-Portable-${version}.tar.bz2"
+      "http://web.archive.org/https://download.geogebra.org/installers/5.0/GeoGebra-Linux-Portable-${version}.tar.bz2"
+    ];
+    sha256 = "0jbci4spqkf33yb079lsnsc684y4mdf1p8lm9r0037av8jlsrgrc";
+  };
+
+  srcIcon = fetchurl {
+    url = "http://static.geogebra.org/images/geogebra-logo.svg";
+    sha256 = "01sy7ggfvck350hwv0cla9ynrvghvssqm3c59x4q5lwsxjsxdpjm";
+  };
+
+  desktopItem = makeDesktopItem {
+    name = "geogebra";
+    exec = "geogebra";
+    icon = "geogebra";
+    desktopName = "Geogebra";
+    genericName = "Geogebra";
+    comment = meta.description;
+    categories = "Education;Science;Math;";
+    mimeType = "application/vnd.geogebra.file;application/vnd.geogebra.tool;";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    install -D geogebra/* -t "$out/libexec/geogebra/"
+
+    makeWrapper "$out/libexec/geogebra/geogebra" "$out/bin/geogebra" \
+      --set JAVACMD "${jre}/bin/java" \
+      --set GG_PATH "$out/libexec/geogebra" \
+      --add-flags "--language=${language}"
+
+    install -Dm644 "${desktopItem}/share/applications/"* \
+      -t $out/share/applications/
+
+    install -Dm644 "${srcIcon}" \
+      "$out/share/icons/hicolor/scalable/apps/geogebra.svg"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Dynamic mathematics software with graphics, algebra and spreadsheets";
+    longDescription = ''
+      Dynamic mathematics software for all levels of education that brings
+      together geometry, algebra, spreadsheets, graphing, statistics and
+      calculus in one easy-to-use package.
+    '';
+    homepage = "https://www.geogebra.org/";
+    maintainers = with maintainers; [ ma27 ];
+    license = with licenses; [ gpl3 cc-by-nc-sa-30 geogebra ];
+    platforms = platforms.all;
+    hydraPlatforms = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/getdp/default.nix b/nixpkgs/pkgs/applications/science/math/getdp/default.nix
new file mode 100644
index 000000000000..ae93e89f1416
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/getdp/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, cmake, gfortran, blas, lapack, openmpi, petsc, python3 }:
+
+stdenv.mkDerivation rec {
+  name = "getdp-${version}";
+  version = "3.3.0";
+  src = fetchurl {
+    url = "http://getdp.info/src/getdp-${version}-source.tgz";
+    sha256 = "1pfviy2bw8z5y6c15czvlvyjjg9pvpgrj9fr54xfi2gmvs7zkgpf";
+  };
+
+  nativeBuildInputs = [ cmake gfortran ];
+  buildInputs = [ blas lapack openmpi petsc python3 ];
+
+  meta = with stdenv.lib; {
+    description = "A General Environment for the Treatment of Discrete Problems";
+    longDescription = ''
+      GetDP is a free finite element solver using mixed elements to discretize
+      de Rham-type complexes in one, two and three dimensions.  The main
+      feature of GetDP is the closeness between the input data defining
+      discrete problems (written by the user in ASCII data files) and the
+      symbolic mathematical expressions of these problems.
+    '';
+    homepage = "http://getdp.info/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ wucke13 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/gfan/default.nix b/nixpkgs/pkgs/applications/science/math/gfan/default.nix
new file mode 100644
index 000000000000..72d1a548c530
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/gfan/default.nix
@@ -0,0 +1,27 @@
+{stdenv, fetchurl, gmp, mpir, cddlib}:
+stdenv.mkDerivation rec {
+  pname = "gfan";
+  version = "0.6.2";
+
+  src = fetchurl {
+    url = "http://home.math.au.dk/jensen/software/gfan/gfan${version}.tar.gz";
+    sha256 = "02pihqb1lb76a0xbfwjzs1cd6ay3ldfxsm8dvsbl6qs3vkjxax56";
+  };
+
+  patchPhase = stdenv.lib.optionalString stdenv.isDarwin ''
+    substituteInPlace Makefile --replace "-fno-guess-branch-probability" ""
+  '';
+
+  buildFlags = [ "CC=cc" "CXX=c++" "cddnoprefix=1" ];
+  installFlags = [ ''PREFIX=$(out)'' ];
+  buildInputs = [ gmp mpir cddlib ];
+
+  meta = {
+    inherit version;
+    description = ''A software package for computing Gröbner fans and tropical varieties'';
+    license = stdenv.lib.licenses.gpl2 ;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.unix;
+    homepage = "http://home.math.au.dk/jensen/software/gfan/gfan.html";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/giac/default.nix b/nixpkgs/pkgs/applications/science/math/giac/default.nix
new file mode 100644
index 000000000000..ea9c921f19e1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/giac/default.nix
@@ -0,0 +1,110 @@
+{ stdenv, lib, fetchurl, fetchpatch, texlive, bison, flex, lapack, blas
+, gmp, mpfr, pari, ntl, gsl, mpfi, ecm, glpk, nauty
+, readline, gettext, libpng, libao, gfortran, perl
+, enableGUI ? false, libGL ? null, libGLU ? null, xorg ? null, fltk ? null
+}:
+
+assert enableGUI -> libGLU != null && libGL != null && xorg != null && fltk != null;
+assert (!blas.isILP64) && (!lapack.isILP64);
+
+stdenv.mkDerivation rec {
+  pname = "giac${lib.optionalString enableGUI "-with-xcas"}";
+  version = "1.5.0-21"; # TODO try to remove preCheck phase on upgrade
+
+  src = fetchurl {
+    url = "https://www-fourier.ujf-grenoble.fr/~parisse/debian/dists/stable/main/source/giac_${version}.tar.gz";
+    sha256 = "1b9khiv0mk2xzw1rblm2jy6qsf8y6f9k7qy15sxpb21d72hzzbl2";
+  };
+
+  patches = stdenv.lib.optionals (!enableGUI) [
+    # when enableGui is false, giac is compiled without fltk. That means some
+    # outputs differ in the make check. Patch around this:
+    (fetchpatch {
+      url    = "https://git.sagemath.org/sage.git/plain/build/pkgs/giac/patches/nofltk-check.patch?id=7553a3c8dfa7bcec07241a07e6a4e7dcf5bb4f26";
+      sha256 = "0xkmfc028vg5w6va04gp2x2iv31n8v4shd6vbyvk4blzgfmpj2cw";
+    })
+  ];
+
+  postPatch = ''
+    for i in doc/*/Makefile*; do
+      substituteInPlace "$i" --replace "/bin/cp" "cp";
+    done;
+  '';
+
+  nativeBuildInputs = [
+    texlive.combined.scheme-small bison flex
+  ];
+
+  # perl is only needed for patchShebangs fixup.
+  buildInputs = [
+    gmp mpfr pari ntl gsl blas mpfi glpk nauty
+    readline gettext libpng libao perl ecm
+    # gfortran.cc default output contains static libraries compiled without -fPIC
+    # we want libgfortran.so.3 instead
+    (stdenv.lib.getLib gfortran.cc)
+    lapack blas
+  ] ++ stdenv.lib.optionals enableGUI [
+    libGL libGLU fltk xorg.libX11
+  ];
+
+  /* fixes:
+  configure:16211: checking for main in -lntl
+  configure:16230: g++ -o conftest -g -O2   conftest.cpp -lntl  -llapack -lblas -lgfortran -ldl -lpng16 -lm -lmpfi -lmpfr -lgmp  >&5
+  /nix/store/y9c1v4x7y39j2rfbg17agjwqdzxpsn18-ntl-11.3.2/lib/libntl.so: undefined reference to `pthread_key_create'
+  */
+  NIX_CFLAGS_LINK="-lpthread";
+
+  # xcas Phys and Turtle menus are broken with split outputs
+  # and interactive use is likely to need docs
+  outputs = [ "out" ] ++ stdenv.lib.optional (!enableGUI) "doc";
+
+  doCheck = true;
+  preCheck = ''
+    # One test in this file fails. That test just tests a part of the pari
+    # interface that isn't actually used in giac. Of course it would be better
+    # to only remove that one test, but that would require a patch.
+    # Removing the whole test set should be good enough for now.
+    # Upstream report: https://xcas.univ-grenoble-alpes.fr/forum/viewtopic.php?f=4&t=2102#p10326
+    echo > check/chk_fhan11
+  '';
+
+  enableParallelBuilding = true;
+
+  configureFlags = [
+    "--enable-gc" "--enable-png" "--enable-gsl" "--enable-lapack"
+    "--enable-pari" "--enable-ntl" "--enable-gmpxx" # "--enable-cocoa"
+    "--enable-ao" "--enable-ecm" "--enable-glpk"
+  ] ++ stdenv.lib.optionals enableGUI [
+    "--enable-gui" "--with-x"
+  ];
+
+  postInstall = ''
+    # example Makefiles contain the full path to some commands
+    # notably texlive, and we don't want texlive to become a runtime
+    # dependency
+    for file in $(find $out -name Makefile) ; do
+      sed -i "s@/nix/store/[^/]*/bin/@@" "$file" ;
+    done;
+
+    # reference cycle
+    rm "$out/share/giac/doc/el/"{casinter,tutoriel}/Makefile
+
+    if [ -n "$doc" ]; then
+      mkdir -p "$doc/share/giac"
+      mv "$out/share/giac/doc" "$doc/share/giac"
+      mv "$out/share/giac/examples" "$doc/share/giac"
+    fi
+  '' + stdenv.lib.optionalString (!enableGUI) ''
+    for i in pixmaps application-registry applications icons; do
+      rm -r "$out/share/$i";
+    done;
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A free computer algebra system (CAS)";
+    homepage = "https://www-fourier.ujf-grenoble.fr/~parisse/giac.html";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux ++ (optionals (!enableGUI) platforms.darwin);
+    maintainers = [ maintainers.symphorien ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/ginac/default.nix b/nixpkgs/pkgs/applications/science/math/ginac/default.nix
new file mode 100644
index 000000000000..701445f90100
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/ginac/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, cln, pkgconfig, readline, gmp, python }:
+
+stdenv.mkDerivation rec {
+  name = "ginac-1.7.9";
+
+  src = fetchurl {
+    url    = "${meta.homepage}/${name}.tar.bz2";
+    sha256 = "08cqc87qq4w6z3l053x5gfqsa4zkgkicq8skxsbsj39nli1zzkb7";
+  };
+
+  propagatedBuildInputs = [ cln ];
+
+  buildInputs = [ readline ] ++ stdenv.lib.optional stdenv.isDarwin gmp;
+
+  nativeBuildInputs = [ pkgconfig python ];
+
+  preConfigure = "patchShebangs ginsh";
+
+  configureFlags = [ "--disable-rpath" ];
+
+  meta = with stdenv.lib; {
+    description = "GiNaC is Not a CAS";
+    homepage    = "http://www.ginac.de/";
+    maintainers = with maintainers; [ lovek323 ];
+    license = licenses.gpl2;
+    platforms   = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/glsurf/default.nix b/nixpkgs/pkgs/applications/science/math/glsurf/default.nix
new file mode 100644
index 000000000000..09d0d5241687
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/glsurf/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, ocamlPackages, libGLU, libGL, freeglut
+, libmysqlclient, mpfr, gmp, libtiff, libjpeg, libpng, giflib
+}:
+
+stdenv.mkDerivation {
+  name = "glsurf-3.3.1";
+
+  src = fetchurl {
+    url = "https://raffalli.eu/~christophe/glsurf/glsurf-3.3.1.tar.gz";
+    sha256 = "0w8xxfnw2snflz8wdr2ca9f5g91w5vbyp1hwlx1v7vg83d4bwqs7";
+  };
+
+  buildInputs = [ freeglut libGLU libGL libmysqlclient mpfr gmp
+    libtiff libjpeg libpng giflib ]
+  ++ (with ocamlPackages; [
+    ocaml findlib ocaml_mysql lablgl camlimages_4_0 mlgmpidl
+  ]);
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/doc/glsurf
+    cp ./src/glsurf.opt $out/bin/glsurf
+    cp ./doc/doc.pdf $out/share/doc/glsurf
+    cp -r ./examples $out/share/doc/glsurf
+  '';
+
+  meta = {
+    homepage = "https://raffalli.eu/~christophe/glsurf/";
+    description = "A program to draw implicit surfaces and curves";
+    license = stdenv.lib.licenses.lgpl21;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/gmsh/default.nix b/nixpkgs/pkgs/applications/science/math/gmsh/default.nix
new file mode 100644
index 000000000000..946beff8003f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/gmsh/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, cmake, blas, lapack, gfortran, gmm, fltk, libjpeg
+, zlib, libGL, libGLU, xorg, opencascade-occt }:
+
+assert (!blas.isILP64) && (!lapack.isILP64);
+
+stdenv.mkDerivation rec {
+  pname = "gmsh";
+  version = "4.5.6";
+
+  src = fetchurl {
+    url = "http://gmsh.info/src/gmsh-${version}-source.tgz";
+    sha256 = "0gs65bgr1ph5lz7r6manqj8cra30s7c94pxilkd2z0p5vq6fpsj6";
+  };
+
+  buildInputs = [ blas lapack gmm fltk libjpeg zlib libGLU libGL
+    libGLU xorg.libXrender xorg.libXcursor xorg.libXfixes xorg.libXext
+    xorg.libXft xorg.libXinerama xorg.libX11 xorg.libSM xorg.libICE
+    opencascade-occt
+  ];
+
+  nativeBuildInputs = [ cmake gfortran ];
+
+  meta = {
+    description = "A three-dimensional finite element mesh generator";
+    homepage = "http://gmsh.info/";
+    platforms = [ "x86_64-linux" ];
+    license = stdenv.lib.licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/gurobi/default.nix b/nixpkgs/pkgs/applications/science/math/gurobi/default.nix
new file mode 100644
index 000000000000..1aa7bce07c5d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/gurobi/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, lib, fetchurl, autoPatchelfHook, python }:
+
+let
+  majorVersion = "8.1";
+in stdenv.mkDerivation rec {
+  pname = "gurobi";
+  version = "${majorVersion}.0";
+
+  src = with stdenv.lib; fetchurl {
+    url = "http://packages.gurobi.com/${versions.majorMinor version}/gurobi${version}_linux64.tar.gz";
+    sha256 = "1yjqbzqnq4jjkjm616d36bgd3rmqr0a1ii17n0prpdjzmdlq63dz";
+  };
+
+  sourceRoot = "gurobi${builtins.replaceStrings ["."] [""] version}/linux64";
+
+  nativeBuildInputs = [ autoPatchelfHook ];
+  buildInputs = [ (python.withPackages (ps: [ ps.gurobipy ])) ];
+
+  buildPhase = ''
+    cd src/build
+    make
+    cd ../..
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp bin/* $out/bin/
+    rm $out/bin/gurobi.env
+    rm $out/bin/gurobi.sh
+    rm $out/bin/python2.7
+
+    cp lib/gurobi.py $out/bin/gurobi.sh
+
+    mkdir -p $out/include
+    cp include/gurobi*.h $out/include/
+
+    mkdir -p $out/lib
+    cp lib/*.jar $out/lib/
+    cp lib/libGurobiJni*.so $out/lib/
+    cp lib/libgurobi*.so* $out/lib/
+    cp lib/libgurobi*.a $out/lib/
+    cp src/build/*.a $out/lib/
+
+    mkdir -p $out/share/java
+    ln -s $out/lib/gurobi.jar $out/share/java/
+    ln -s $out/lib/gurobi-javadoc.jar $out/share/java/
+  '';
+
+  passthru.libSuffix = lib.replaceStrings ["."] [""] majorVersion;
+
+  meta = with stdenv.lib; {
+    description = "Optimization solver for mathematical programming";
+    homepage = "https://www.gurobi.com";
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ jfrankenau ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/hmetis/default.nix b/nixpkgs/pkgs/applications/science/math/hmetis/default.nix
new file mode 100644
index 000000000000..b5e99a8dd75b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/hmetis/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, ghostscript }:
+
+stdenv.mkDerivation rec {
+  pname = "hmetis";
+  version = "1.5";
+
+  src = fetchurl {
+    url = "http://glaros.dtc.umn.edu/gkhome/fetch/sw/hmetis/hmetis-${version}-linux.tar.gz";
+    sha256 = "e835a098c046e9c26cecb8addfea4d18ff25214e49585ffd87038e72819be7e1";
+  };
+
+  nativeBuildInputs = [ ghostscript ];
+
+  binaryFiles = "hmetis khmetis shmetis";
+
+  patchPhase = ''
+    for binaryfile in $binaryFiles; do
+      patchelf \
+        --set-interpreter ${stdenv.glibc}/lib/ld-linux.so.2 \
+        --set-rpath ${stdenv.glibc}/lib \
+        $binaryfile
+    done
+  '';
+
+  buildPhase = ''
+    gs -sOutputFile=manual.pdf -sDEVICE=pdfwrite -SNOPAUSE -dBATCH manual.ps
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/doc/hmetis $out/lib
+    mv $binaryFiles $out/bin
+    mv manual.pdf $out/share/doc/hmetis
+    mv libhmetis.a $out/lib
+  '';
+
+  meta = with stdenv.lib; {
+    description = "hMETIS is a set of programs for partitioning hypergraphs";
+    homepage = "http://glaros.dtc.umn.edu/gkhome/metis/hmetis/overview";
+    license = licenses.unfree;
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/jags/default.nix b/nixpkgs/pkgs/applications/science/math/jags/default.nix
new file mode 100644
index 000000000000..122c62888476
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/jags/default.nix
@@ -0,0 +1,19 @@
+{stdenv, fetchurl, gfortran, blas, lapack}:
+
+stdenv.mkDerivation rec {
+  name = "JAGS-4.3.0";
+  src = fetchurl {
+    url = "mirror://sourceforge/mcmc-jags/${name}.tar.gz";
+    sha256 = "1z3icccg2ic56vmhyrpinlsvpq7kcaflk1731rgpvz9bk1bxvica";
+  };
+  buildInputs = [gfortran blas lapack];
+  configureFlags = [ "--with-blas=-lblas" "--with-lapack=-llapack" ];
+
+  meta = with stdenv.lib; {
+    description = "Just Another Gibbs Sampler";
+    license     = licenses.gpl2;
+    homepage    = "http://mcmc-jags.sourceforge.net";
+    maintainers = [ maintainers.andres ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/lp_solve/default.nix b/nixpkgs/pkgs/applications/science/math/lp_solve/default.nix
new file mode 100644
index 000000000000..f39c6a04d190
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/lp_solve/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+
+  pname = "lp_solve";
+  version = "5.5.2.5";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/lpsolve/lpsolve/${version}/lp_solve_${version}_source.tar.gz";
+    sha256 = "12pj1idjz31r7c2mb5w03vy1cmvycvbkx9z29s40qdmkp1i7q6i0";
+  };
+
+  patches = [ ./isnan.patch ];
+
+  buildCommand = ''
+    . $stdenv/setup
+    tar xvfz $src
+    (
+    cd lp_solve*
+    eval patchPhase
+    )
+    (
+    cd lp_solve*/lpsolve55
+    bash ccc
+    mkdir -pv $out/lib
+    cp -v bin/*/* $out/lib
+    )
+    (
+    cd lp_solve*/lp_solve
+    bash ccc
+    mkdir -pv $out/bin
+    cp -v bin/*/* $out/bin
+    )
+    (
+    mkdir -pv $out/include
+    cp -v lp_solve*/*.h $out/include
+    )
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A Mixed Integer Linear Programming (MILP) solver";
+    homepage    = "http://lpsolve.sourceforge.net";
+    license     = licenses.gpl2Plus;
+    maintainers = with maintainers; [ smironov ];
+    platforms   = platforms.unix;
+  };
+
+}
+
diff --git a/nixpkgs/pkgs/applications/science/math/lp_solve/isnan.patch b/nixpkgs/pkgs/applications/science/math/lp_solve/isnan.patch
new file mode 100644
index 000000000000..bc1983d4423d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/lp_solve/isnan.patch
@@ -0,0 +1,13 @@
+diff -u a/lp_lib.h b/lp_lib.h
+--- a/lp_lib.h	2016-05-04 19:45:15.753143720 +0900
++++ b/lp_lib.h	2016-05-04 19:53:59.536920722 +0900
+@@ -59,9 +59,6 @@
+ # if defined _WIN32 && !defined __GNUC__
+ #  define isnan _isnan
+ # endif
+-#if defined NOISNAN
+-# define isnan(x) FALSE
+-#endif
+ 
+ #define SETMASK(variable, mask)     variable |= mask
+ #define CLEARMASK(variable, mask)   variable &= ~(mask)
diff --git a/nixpkgs/pkgs/applications/science/math/lrcalc/default.nix b/nixpkgs/pkgs/applications/science/math/lrcalc/default.nix
new file mode 100644
index 000000000000..438a84c0e0be
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/lrcalc/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, fetchFromBitbucket
+, fetchpatch
+, autoreconfHook
+}:
+
+stdenv.mkDerivation rec {
+  version = "1.2";
+  pname = "lrcalc";
+
+  src = fetchFromBitbucket {
+    owner = "asbuch";
+    repo = "lrcalc";
+    rev = "lrcalc-${version}";
+    sha256 = "1c12d04jdyxkkav4ak8d1aqrv594gzihwhpxvc6p9js0ry1fahss";
+  };
+
+  doCheck = true;
+
+  nativeBuildInputs = [
+    autoreconfHook
+  ];
+
+  patches = [
+    # Fix include syntax:
+    # For private includes, use `#include "..."` instead of `#include <...>`
+    (fetchpatch {
+      url = "https://bitbucket.org/asbuch/lrcalc/commits/226981a0/raw/";
+      sha256 = "02kaqx5s3l642rhh28kn2wg9wr098vzpknxyl4pv627lqa3lv9vm";
+    })
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Littlewood-Richardson calculator";
+    homepage = "http://math.rutgers.edu/~asbuch/lrcalc/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ timokau ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/mathematica/10.nix b/nixpkgs/pkgs/applications/science/math/mathematica/10.nix
new file mode 100644
index 000000000000..277fb1984c44
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/mathematica/10.nix
@@ -0,0 +1,136 @@
+{ stdenv
+, coreutils
+, patchelf
+, requireFile
+, alsaLib
+, fontconfig
+, freetype
+, gcc
+, glib
+, ncurses
+, opencv2
+, openssl
+, unixODBC
+, xorg
+, libxml2
+, libuuid
+}:
+
+let
+  platform =
+    if stdenv.hostPlatform.system == "i686-linux" || stdenv.hostPlatform.system == "x86_64-linux" then
+      "Linux"
+    else
+      throw "Mathematica requires i686-linux or x86_64 linux";
+in
+stdenv.mkDerivation rec {
+  version = "10.0.2";
+
+  pname = "mathematica";
+
+  src = requireFile rec {
+    name = "Mathematica_${version}_LINUX.sh";
+    message = '' 
+      This nix expression requires that ${name} is
+      already part of the store. Find the file on your Mathematica CD
+      and add it to the nix store with nix-store --add-fixed sha256 <FILE>.
+    '';
+    sha256 = "1d2yaiaikzcacjamlw64g3xkk81m3pb4vz4an12cv8nb7kb20x9l";
+  };
+
+  buildInputs = [
+    coreutils
+    patchelf
+    alsaLib
+    coreutils
+    fontconfig
+    freetype
+    gcc.cc
+    gcc.libc
+    glib
+    ncurses
+    opencv2
+    openssl
+    unixODBC
+    libxml2
+    libuuid
+  ] ++ (with xorg; [
+    libX11
+    libXext
+    libXtst
+    libXi
+    libXmu
+    libXrender
+    libxcb
+    libXcursor
+    libXfixes
+    libXrandr
+    libICE
+    libSM
+  ]);
+
+  ldpath = stdenv.lib.makeLibraryPath buildInputs
+    + stdenv.lib.optionalString (stdenv.hostPlatform.system == "x86_64-linux")
+      (":" + stdenv.lib.makeSearchPathOutput "lib" "lib64" buildInputs);
+
+  phases = "unpackPhase installPhase fixupPhase";
+
+  unpackPhase = ''
+    echo "=== Extracting makeself archive ==="
+    # find offset from file
+    offset=$(${stdenv.shell} -c "$(grep -axm1 -e 'offset=.*' $src); echo \$offset" $src)
+    dd if="$src" ibs=$offset skip=1 | tar -xf -
+    cd Unix
+  '';
+
+  installPhase = ''
+    cd Installer
+    # don't restrict PATH, that has already been done
+    sed -i -e 's/^PATH=/# PATH=/' MathInstaller
+
+    echo "=== Running MathInstaller ==="
+    ./MathInstaller -auto -createdir=y -execdir=$out/bin -targetdir=$out/libexec/Mathematica -platforms=${platform} -silent
+  '';
+
+  preFixup = ''
+    echo "=== PatchElfing away ==="
+    # This code should be a bit forgiving of errors, unfortunately
+    set +e
+    find $out/libexec/Mathematica/SystemFiles -type f -perm -0100 | while read f; do
+      type=$(readelf -h "$f" 2>/dev/null | grep 'Type:' | sed -e 's/ *Type: *\([A-Z]*\) (.*/\1/')
+      if [ -z "$type" ]; then
+        :
+      elif [ "$type" == "EXEC" ]; then
+        echo "patching $f executable <<"
+        patchelf --shrink-rpath "$f"
+        patchelf \
+	  --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath "$(patchelf --print-rpath "$f"):${ldpath}" \
+          "$f" \
+          && patchelf --shrink-rpath "$f" \
+          || echo unable to patch ... ignoring 1>&2
+      elif [ "$type" == "DYN" ]; then
+        echo "patching $f library <<"
+        patchelf \
+          --set-rpath "$(patchelf --print-rpath "$f"):${ldpath}" \
+          "$f" \
+          && patchelf --shrink-rpath "$f" \
+          || echo unable to patch ... ignoring 1>&2
+      else
+        echo "not patching $f <<: unknown elf type"
+      fi
+    done
+  '';
+
+  # all binaries are already stripped
+  dontStrip = true;
+
+  # we did this in prefixup already
+  dontPatchELF = true;
+
+  meta = {
+    description = "Wolfram Mathematica computational software system";
+    homepage = "http://www.wolfram.com/mathematica/";
+    license = stdenv.lib.licenses.unfree;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/mathematica/11.nix b/nixpkgs/pkgs/applications/science/math/mathematica/11.nix
new file mode 100644
index 000000000000..1c698a5e5428
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/mathematica/11.nix
@@ -0,0 +1,150 @@
+{ stdenv
+, coreutils
+, patchelf
+, requireFile
+, callPackage
+, alsaLib
+, dbus
+, fontconfig
+, freetype
+, gcc
+, glib
+, ncurses
+, opencv2
+, openssl
+, unixODBC
+, xkeyboard_config
+, xorg
+, zlib
+, libxml2
+, libuuid
+, lang ? "en"
+, libGL
+, libGLU
+}:
+
+let
+  l10n =
+    import ./l10ns.nix {
+      lib = stdenv.lib;
+      inherit requireFile lang;
+      majorVersion = "11";
+    };
+in
+stdenv.mkDerivation rec {
+  inherit (l10n) version name src;
+
+  buildInputs = [
+    coreutils
+    patchelf
+    alsaLib
+    coreutils
+    dbus
+    fontconfig
+    freetype
+    gcc.cc
+    gcc.libc
+    glib
+    ncurses
+    opencv2
+    openssl
+    unixODBC
+    xkeyboard_config
+    libxml2
+    libuuid
+    zlib
+    libGL
+    libGLU
+  ] ++ (with xorg; [
+    libX11
+    libXext
+    libXtst
+    libXi
+    libXmu
+    libXrender
+    libxcb
+    libXcursor
+    libXfixes
+    libXrandr
+    libICE
+    libSM
+  ]);
+
+  ldpath = stdenv.lib.makeLibraryPath buildInputs
+    + stdenv.lib.optionalString (stdenv.hostPlatform.system == "x86_64-linux")
+      (":" + stdenv.lib.makeSearchPathOutput "lib" "lib64" buildInputs);
+
+  phases = "unpackPhase installPhase fixupPhase";
+
+  unpackPhase = ''
+    echo "=== Extracting makeself archive ==="
+    # find offset from file
+    offset=$(${stdenv.shell} -c "$(grep -axm1 -e 'offset=.*' $src); echo \$offset" $src)
+    dd if="$src" ibs=$offset skip=1 | tar -xf -
+    cd Unix
+  '';
+
+  installPhase = ''
+    cd Installer
+    # don't restrict PATH, that has already been done
+    sed -i -e 's/^PATH=/# PATH=/' MathInstaller
+    sed -i -e 's/\/bin\/bash/\/bin\/sh/' MathInstaller
+
+    echo "=== Running MathInstaller ==="
+    ./MathInstaller -auto -createdir=y -execdir=$out/bin -targetdir=$out/libexec/Mathematica -silent
+
+    # Fix library paths
+    cd $out/libexec/Mathematica/Executables
+    for path in mathematica MathKernel Mathematica WolframKernel wolfram math; do
+      sed -i -e 's#export LD_LIBRARY_PATH$#export LD_LIBRARY_PATH=${zlib}/lib:\''${LD_LIBRARY_PATH}#' $path
+    done
+
+    # Fix xkeyboard config path for Qt
+    for path in mathematica Mathematica; do
+      line=$(grep -n QT_PLUGIN_PATH $path | sed 's/:.*//')
+      sed -i -e "$line iexport QT_XKB_CONFIG_ROOT=\"${xkeyboard_config}/share/X11/xkb\"" $path
+    done
+  '';
+
+  preFixup = ''
+    echo "=== PatchElfing away ==="
+    # This code should be a bit forgiving of errors, unfortunately
+    set +e
+    find $out/libexec/Mathematica/SystemFiles -type f -perm -0100 | while read f; do
+      type=$(readelf -h "$f" 2>/dev/null | grep 'Type:' | sed -e 's/ *Type: *\([A-Z]*\) (.*/\1/')
+      if [ -z "$type" ]; then
+        :
+      elif [ "$type" == "EXEC" ]; then
+        echo "patching $f executable <<"
+        patchelf --shrink-rpath "$f"
+        patchelf \
+	  --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath "$(patchelf --print-rpath "$f"):${ldpath}" \
+          "$f" \
+          && patchelf --shrink-rpath "$f" \
+          || echo unable to patch ... ignoring 1>&2
+      elif [ "$type" == "DYN" ]; then
+        echo "patching $f library <<"
+        patchelf \
+          --set-rpath "$(patchelf --print-rpath "$f"):${ldpath}" \
+          "$f" \
+          && patchelf --shrink-rpath "$f" \
+          || echo unable to patch ... ignoring 1>&2
+      else
+        echo "not patching $f <<: unknown elf type"
+      fi
+    done
+  '';
+
+  # all binaries are already stripped
+  dontStrip = true;
+
+  # we did this in prefixup already
+  dontPatchELF = true;
+
+  meta = {
+    description = "Wolfram Mathematica computational software system";
+    homepage = "http://www.wolfram.com/mathematica/";
+    license = stdenv.lib.licenses.unfree;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/mathematica/9.nix b/nixpkgs/pkgs/applications/science/math/mathematica/9.nix
new file mode 100644
index 000000000000..d0967485c01f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/mathematica/9.nix
@@ -0,0 +1,122 @@
+{ stdenv
+, coreutils
+, patchelf
+, requireFile
+, alsaLib
+, fontconfig
+, freetype
+, gcc
+, glib
+, ncurses
+, opencv2
+, openssl
+, unixODBC
+, xorg
+}:
+
+let
+  platform =
+    if stdenv.hostPlatform.system == "i686-linux" || stdenv.hostPlatform.system == "x86_64-linux" then
+      "Linux"
+    else
+      throw "Mathematica requires i686-linux or x86_64 linux";
+in
+stdenv.mkDerivation rec {
+
+  name = "mathematica-9.0.0";
+
+  src = requireFile {
+    name = "Mathematica_9.0.0_LINUX.sh";
+    message = '' 
+      This nix expression requires that Mathematica_9.0.0_LINUX.sh is
+      already part of the store. Find the file on your Mathematica CD
+      and add it to the nix store with nix-store --add-fixed sha256 <FILE>.
+    '';
+    sha256 = "106zfaplhwcfdl9rdgs25x83xra9zcny94gb22wncbfxvrsk3a4q";
+  };
+
+  buildInputs = [
+    coreutils
+    patchelf
+    alsaLib
+    coreutils
+    fontconfig
+    freetype
+    gcc.cc
+    gcc.libc
+    glib
+    ncurses
+    opencv2
+    openssl
+    unixODBC
+  ] ++ (with xorg; [
+    libX11
+    libXext
+    libXtst
+    libXi
+    libXmu
+    libXrender
+    libxcb
+  ]);
+
+  ldpath = stdenv.lib.makeLibraryPath buildInputs
+    + stdenv.lib.optionalString (stdenv.hostPlatform.system == "x86_64-linux")
+      (":" + stdenv.lib.makeSearchPathOutput "lib" "lib64" buildInputs);
+
+  phases = "unpackPhase installPhase fixupPhase";
+
+  unpackPhase = ''
+    echo "=== Extracting makeself archive ==="
+    # find offset from file
+    offset=$(${stdenv.shell} -c "$(grep -axm1 -e 'offset=.*' $src); echo \$offset" $src)
+    dd if="$src" ibs=$offset skip=1 | tar -xf -
+    cd Unix
+  '';
+
+  installPhase = ''
+    cd Installer
+    # don't restrict PATH, that has already been done
+    sed -i -e 's/^PATH=/# PATH=/' MathInstaller
+
+    echo "=== Running MathInstaller ==="
+    ./MathInstaller -auto -createdir=y -execdir=$out/bin -targetdir=$out/libexec/Mathematica -platforms=${platform} -silent
+  '';
+
+  preFixup = ''
+    echo "=== PatchElfing away ==="
+    find $out/libexec/Mathematica/SystemFiles -type f -perm -0100 | while read f; do
+      type=$(readelf -h "$f" 2>/dev/null | grep 'Type:' | sed -e 's/ *Type: *\([A-Z]*\) (.*/\1/')
+      if [ -z "$type" ]; then
+        :
+      elif [ "$type" == "EXEC" ]; then
+        echo "patching $f executable <<"
+        patchelf \
+            --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+            --set-rpath "${ldpath}" \
+            "$f"
+        patchelf --shrink-rpath "$f"
+      elif [ "$type" == "DYN" ]; then
+        echo "patching $f library <<"
+        patchelf \
+          --set-rpath "$(patchelf --print-rpath "$f"):${ldpath}" \
+          "$f" \
+          && patchelf --shrink-rpath "$f" \
+          || echo unable to patch ... ignoring 1>&2
+      else
+        echo "not patching $f <<: unknown elf type"
+      fi
+    done
+  '';
+
+  # all binaries are already stripped
+  dontStrip = true;
+
+  # we did this in prefixup already
+  dontPatchELF = true;
+
+  meta = {
+    description = "Wolfram Mathematica computational software system";
+    homepage = "http://www.wolfram.com/mathematica/";
+    license = stdenv.lib.licenses.unfree;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/mathematica/default.nix b/nixpkgs/pkgs/applications/science/math/mathematica/default.nix
new file mode 100644
index 000000000000..94d72eec6ae4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/mathematica/default.nix
@@ -0,0 +1,156 @@
+{ stdenv
+, coreutils
+, patchelf
+, requireFile
+, callPackage
+, alsaLib
+, dbus
+, fontconfig
+, freetype
+, gcc
+, glib
+, libssh2
+, ncurses
+, opencv2
+, openssl
+, unixODBC
+, xkeyboard_config
+, xorg
+, zlib
+, libxml2
+, libuuid
+, lang ? "en"
+, libGL
+, libGLU
+}:
+
+let
+  l10n =
+    import ./l10ns.nix {
+      lib = stdenv.lib;
+      inherit requireFile lang;
+    };
+in
+stdenv.mkDerivation rec {
+  inherit (l10n) version name src;
+
+  buildInputs = [
+    coreutils
+    patchelf
+    alsaLib
+    coreutils
+    dbus
+    fontconfig
+    freetype
+    gcc.cc
+    gcc.libc
+    glib
+    libssh2
+    ncurses
+    opencv2
+    openssl
+    stdenv.cc.cc.lib
+    unixODBC
+    xkeyboard_config
+    libxml2
+    libuuid
+    zlib
+    libGL
+    libGLU
+  ] ++ (with xorg; [
+    libX11
+    libXext
+    libXtst
+    libXi
+    libXmu
+    libXrender
+    libxcb
+    libXcursor
+    libXfixes
+    libXrandr
+    libICE
+    libSM
+  ]);
+
+  ldpath = stdenv.lib.makeLibraryPath buildInputs
+    + stdenv.lib.optionalString (stdenv.hostPlatform.system == "x86_64-linux")
+      (":" + stdenv.lib.makeSearchPathOutput "lib" "lib64" buildInputs);
+
+  unpackPhase = ''
+    echo "=== Extracting makeself archive ==="
+    # find offset from file
+    offset=$(${stdenv.shell} -c "$(grep -axm1 -e 'offset=.*' $src); echo \$offset" $src)
+    dd if="$src" ibs=$offset skip=1 | tar -xf -
+    cd Unix
+  '';
+
+  installPhase = ''
+    cd Installer
+    # don't restrict PATH, that has already been done
+    sed -i -e 's/^PATH=/# PATH=/' MathInstaller
+    sed -i -e 's/\/bin\/bash/\/bin\/sh/' MathInstaller
+
+    echo "=== Running MathInstaller ==="
+    ./MathInstaller -auto -createdir=y -execdir=$out/bin -targetdir=$out/libexec/Mathematica -silent
+
+    # Fix library paths
+    cd $out/libexec/Mathematica/Executables
+    for path in mathematica MathKernel Mathematica WolframKernel wolfram math; do
+      sed -i -e "2iexport LD_LIBRARY_PATH=${zlib}/lib:${stdenv.cc.cc.lib}/lib:${libssh2}/lib:\''${LD_LIBRARY_PATH}\n" $path
+    done
+
+    # Fix xkeyboard config path for Qt
+    for path in mathematica Mathematica; do
+      sed -i -e "2iexport QT_XKB_CONFIG_ROOT=\"${xkeyboard_config}/share/X11/xkb\"\n" $path
+    done
+
+    # Remove some broken libraries
+    rm -f $out/libexec/Mathematica/SystemFiles/Libraries/Linux-x86-64/libz.so*
+  '';
+
+  preFixup = ''
+    echo "=== PatchElfing away ==="
+    # This code should be a bit forgiving of errors, unfortunately
+    set +e
+    find $out/libexec/Mathematica/SystemFiles -type f -perm -0100 | while read f; do
+      type=$(readelf -h "$f" 2>/dev/null | grep 'Type:' | sed -e 's/ *Type: *\([A-Z]*\) (.*/\1/')
+      if [ -z "$type" ]; then
+        :
+      elif [ "$type" == "EXEC" ]; then
+        echo "patching $f executable <<"
+        patchelf --shrink-rpath "$f"
+        patchelf \
+	  --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath "$(patchelf --print-rpath "$f"):${ldpath}" \
+          "$f" \
+          && patchelf --shrink-rpath "$f" \
+          || echo unable to patch ... ignoring 1>&2
+      elif [ "$type" == "DYN" ]; then
+        echo "patching $f library <<"
+        patchelf \
+          --set-rpath "$(patchelf --print-rpath "$f"):${ldpath}" \
+          "$f" \
+          && patchelf --shrink-rpath "$f" \
+          || echo unable to patch ... ignoring 1>&2
+      else
+        echo "not patching $f <<: unknown elf type"
+      fi
+    done
+  '';
+
+  dontBuild = true;
+
+  # all binaries are already stripped
+  dontStrip = true;
+
+  # we did this in prefixup already
+  dontPatchELF = true;
+
+  meta = with stdenv.lib; {
+    description = "Wolfram Mathematica computational software system";
+    homepage = "http://www.wolfram.com/mathematica/";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ herberteuler ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/mathematica/l10ns.nix b/nixpkgs/pkgs/applications/science/math/mathematica/l10ns.nix
new file mode 100644
index 000000000000..c75c91be059c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/mathematica/l10ns.nix
@@ -0,0 +1,60 @@
+{ lib
+, requireFile
+, lang
+, majorVersion ? null
+}:
+
+let allVersions = with lib; flip map
+  # N.B. Versions in this list should be ordered from newest to oldest.
+  [
+    {
+      version = "12.1.0";
+      lang = "en";
+      language = "English";
+      sha256 = "15m9l20jvkxh5w6mbp81ys7mx2lx5j8acw5gz0il89lklclgb8z7";
+    }
+    {
+      version = "12.0.0";
+      lang = "en";
+      language = "English";
+      sha256 = "b9fb71e1afcc1d72c200196ffa434512d208fa2920e207878433f504e58ae9d7";
+    }
+    {
+      version = "11.3.0";
+      lang = "en";
+      language = "English";
+      sha256 = "0fcfe208c1eac8448e7be3af0bdb84370b17bd9c5d066c013928c8ee95aed10e";
+    }
+    {
+      version = "11.2.0";
+      lang = "ja";
+      language = "Japanese";
+      sha256 = "916392edd32bed8622238df435dd8e86426bb043038a3336f30df10d819b49b1";
+    }
+  ]
+  ({ version, lang, language, sha256 }: {
+    inherit version lang;
+    name = "mathematica-${version}" + optionalString (lang != "en") "-${lang}";
+    src = requireFile rec {
+      name = "Mathematica_${version}" + optionalString (lang != "en") "_${language}" + "_LINUX.sh";
+      message = ''
+        This nix expression requires that ${name} is
+        already part of the store. Find the file on your Mathematica CD
+        and add it to the nix store with nix-store --add-fixed sha256 <FILE>.
+      '';
+      inherit sha256;
+    };
+  });
+minVersion =
+  with lib;
+  if majorVersion == null
+  then elemAt (builtins.splitVersion (elemAt allVersions 0).version) 0
+  else majorVersion;
+maxVersion = toString (1 + builtins.fromJSON minVersion);
+in
+with lib;
+findFirst (l: (l.lang == lang
+               && l.version >= minVersion
+               && l.version < maxVersion))
+          (throw "Version ${minVersion} in language ${lang} not supported")
+          allVersions
diff --git a/nixpkgs/pkgs/applications/science/math/maxima/5.41.nix b/nixpkgs/pkgs/applications/science/math/maxima/5.41.nix
new file mode 100644
index 000000000000..829dffc6116e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/maxima/5.41.nix
@@ -0,0 +1,102 @@
+{ stdenv, fetchurl, fetchpatch, sbcl, texinfo, perl, python, makeWrapper, rlwrap ? null
+, tk ? null, gnuplot ? null, ecl ? null, ecl-fasl ? false
+}:
+
+let
+  name    = "maxima";
+  # old version temporarily kept for sage, see discussion at
+  # https://github.com/NixOS/nixpkgs/commit/82254747af35f3e0e0d6f78023ded3a81e25331b
+  version = "5.41.0";
+
+  searchPath =
+    stdenv.lib.makeBinPath
+      (stdenv.lib.filter (x: x != null) [ sbcl ecl rlwrap tk gnuplot ]);
+in
+stdenv.mkDerivation ({
+  inherit version;
+  name = "${name}-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${name}/${name}-${version}.tar.gz";
+    sha256 = "0x0n81z0s4pl8nwpf7ivlsbvsdphm9w42250g7qdkizl0132by6s";
+  };
+
+  buildInputs = stdenv.lib.filter (x: x != null) [
+    sbcl ecl texinfo perl python makeWrapper
+  ];
+
+  postInstall = ''
+    # Make sure that maxima can find its runtime dependencies.
+    for prog in "$out/bin/"*; do
+      wrapProgram "$prog" --prefix PATH ":" "$out/bin:${searchPath}"
+    done
+    # Move emacs modules and documentation into the right place.
+    mkdir -p $out/share/emacs $out/share/doc
+    ln -s ../maxima/${version}/emacs $out/share/emacs/site-lisp
+    ln -s ../maxima/${version}/doc $out/share/doc/maxima
+  ''
+   + (stdenv.lib.optionalString ecl-fasl ''
+     cp src/binary-ecl/maxima.fas* "$out/lib/maxima/${version}/binary-ecl/"
+   '')
+  ;
+
+  patches = [
+    # fix path to info dir (see https://trac.sagemath.org/ticket/11348)
+    (fetchpatch {
+      url = "https://git.sagemath.org/sage.git/plain/build/pkgs/maxima/patches/infodir.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
+      sha256 = "09v64n60f7i6frzryrj0zd056lvdpms3ajky4f9p6kankhbiv21x";
+    })
+
+    # fix https://sourceforge.net/p/maxima/bugs/2596/
+    (fetchpatch {
+      url = "https://git.sagemath.org/sage.git/plain/build/pkgs/maxima/patches/matrixexp.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
+      sha256 = "06961hn66rhjijfvyym21h39wk98sfxhp051da6gz0n9byhwc6zg";
+    })
+
+    # undo https://sourceforge.net/p/maxima/code/ci/f5e9b0f7eb122c4e48ea9df144dd57221e5ea0ca, see see https://trac.sagemath.org/ticket/13364#comment:93
+    (fetchpatch {
+      url = "https://git.sagemath.org/sage.git/plain/build/pkgs/maxima/patches/undoing_true_false_printing_patch.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
+      sha256 = "0fvi3rcjv6743sqsbgdzazy9jb6r1p1yq63zyj9fx42wd1hgf7yx";
+    })
+
+    # upstream bug https://sourceforge.net/p/maxima/bugs/2520/ (not fixed)
+    # introduced in https://trac.sagemath.org/ticket/13364
+    (fetchpatch {
+      url = "https://git.sagemath.org/sage.git/plain/build/pkgs/maxima/patches/0001-taylor2-Avoid-blowing-the-stack-when-diff-expand-isn.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
+      sha256 = "0xa0b6cr458zp7lc7qi0flv5ar0r3ivsqhjl0c3clv86di2y522d";
+    })
+  ] ++ stdenv.lib.optionals ecl-fasl [
+    # build fasl, needed for ECL support
+    (fetchpatch {
+      url = "https://git.sagemath.org/sage.git/plain/build/pkgs/maxima/patches/maxima.system.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
+      sha256 = "18zafig8vflhkr80jq2ivk46k92dkszqlyq8cfmj0b2vcfjwwbar";
+    })
+    # There are some transient test failures. I hope this disables all those tests.
+    # If those test failures ever happen in the non-ecl version, that should be
+    # reportetd upstream.
+    ./known-ecl-failures.patch
+  ];
+
+  # Failures in the regression test suite won't abort the build process. We run
+  # the suite only so that potential errors show up in the build log. See also:
+  # https://sourceforge.net/tracker/?func=detail&aid=3365831&group_id=4933&atid=104933.
+  doCheck = true;
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Computer algebra system";
+    homepage = "http://maxima.sourceforge.net";
+    license = stdenv.lib.licenses.gpl2;
+
+    longDescription = ''
+      Maxima is a fairly complete computer algebra system written in
+      lisp with an emphasis on symbolic computation. It is based on
+      DOE-MACSYMA and licensed under the GPL. Its abilities include
+      symbolic integration, 3D plotting, and an ODE solver.
+    '';
+
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.peti ];
+  };
+})
diff --git a/nixpkgs/pkgs/applications/science/math/maxima/default.nix b/nixpkgs/pkgs/applications/science/math/maxima/default.nix
new file mode 100644
index 000000000000..49ff0d5d5a05
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/maxima/default.nix
@@ -0,0 +1,104 @@
+{ stdenv, fetchurl, fetchpatch, sbcl, texinfo, perl, python, makeWrapper, rlwrap ? null
+, tk ? null, gnuplot ? null, ecl ? null, ecl-fasl ? false
+}:
+
+let
+  name    = "maxima";
+  version = "5.42.2";
+
+  searchPath =
+    stdenv.lib.makeBinPath
+      (stdenv.lib.filter (x: x != null) [ sbcl ecl rlwrap tk gnuplot ]);
+in
+stdenv.mkDerivation ({
+  inherit version;
+  name = "${name}-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${name}/${name}-${version}.tar.gz";
+    sha256 = "0kdncy6137sg3rradirxzj10mkcvafxd892zlclwhr9sa7b12zhn";
+  };
+
+  buildInputs = stdenv.lib.filter (x: x != null) [
+    sbcl ecl texinfo perl python makeWrapper
+    gnuplot   # required in the test suite
+  ];
+
+  postInstall = ''
+    # Make sure that maxima can find its runtime dependencies.
+    for prog in "$out/bin/"*; do
+      wrapProgram "$prog" --prefix PATH ":" "$out/bin:${searchPath}"
+    done
+    # Move emacs modules and documentation into the right place.
+    mkdir -p $out/share/emacs $out/share/doc
+    ln -s ../maxima/${version}/emacs $out/share/emacs/site-lisp
+    ln -s ../maxima/${version}/doc $out/share/doc/maxima
+  ''
+   + (stdenv.lib.optionalString ecl-fasl ''
+     cp src/binary-ecl/maxima.fas* "$out/lib/maxima/${version}/binary-ecl/"
+   '')
+  ;
+
+  patches = [
+    # fix path to info dir (see https://trac.sagemath.org/ticket/11348)
+    (fetchpatch {
+      url = "https://git.sagemath.org/sage.git/plain/build/pkgs/maxima/patches/infodir.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
+      sha256 = "09v64n60f7i6frzryrj0zd056lvdpms3ajky4f9p6kankhbiv21x";
+    })
+
+    # fix https://sourceforge.net/p/maxima/bugs/2596/
+    (fetchpatch {
+      url = "https://git.sagemath.org/sage.git/plain/build/pkgs/maxima/patches/matrixexp.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
+      sha256 = "06961hn66rhjijfvyym21h39wk98sfxhp051da6gz0n9byhwc6zg";
+    })
+
+    # undo https://sourceforge.net/p/maxima/code/ci/f5e9b0f7eb122c4e48ea9df144dd57221e5ea0ca, see see https://trac.sagemath.org/ticket/13364#comment:93
+    (fetchpatch {
+      url = "https://git.sagemath.org/sage.git/plain/build/pkgs/maxima/patches/undoing_true_false_printing_patch.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
+      sha256 = "0fvi3rcjv6743sqsbgdzazy9jb6r1p1yq63zyj9fx42wd1hgf7yx";
+    })
+
+    # upstream bug https://sourceforge.net/p/maxima/bugs/2520/ (not fixed)
+    # introduced in https://trac.sagemath.org/ticket/13364
+    (fetchpatch {
+      url = "https://git.sagemath.org/sage.git/plain/build/pkgs/maxima/patches/0001-taylor2-Avoid-blowing-the-stack-when-diff-expand-isn.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
+      sha256 = "0xa0b6cr458zp7lc7qi0flv5ar0r3ivsqhjl0c3clv86di2y522d";
+    })
+  ] ++ stdenv.lib.optionals ecl-fasl [
+    # build fasl, needed for ECL support
+    (fetchpatch {
+      url = "https://git.sagemath.org/sage.git/plain/build/pkgs/maxima/patches/maxima.system.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
+      sha256 = "18zafig8vflhkr80jq2ivk46k92dkszqlyq8cfmj0b2vcfjwwbar";
+    })
+  ];
+
+  # The test suite is disabled since 5.42.2 because of the following issues:
+  #
+  #   Errors found in /build/maxima-5.42.2/share/linearalgebra/rtest_matrixexp.mac, problems:
+  #   (20 21 22)
+  #   Error found in rtest_arag, problem:
+  #   (error break)
+  #   3 tests failed out of 3,881 total tests.
+  #
+  # These failures don't look serious. It would be nice to fix them, but I
+  # don't know how and probably won't have the time to find out.
+  doCheck = false;    # try to re-enable after next version update
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Computer algebra system";
+    homepage = "http://maxima.sourceforge.net";
+    license = stdenv.lib.licenses.gpl2;
+
+    longDescription = ''
+      Maxima is a fairly complete computer algebra system written in
+      lisp with an emphasis on symbolic computation. It is based on
+      DOE-MACSYMA and licensed under the GPL. Its abilities include
+      symbolic integration, 3D plotting, and an ODE solver.
+    '';
+
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.peti ];
+  };
+})
diff --git a/nixpkgs/pkgs/applications/science/math/maxima/known-ecl-failures.patch b/nixpkgs/pkgs/applications/science/math/maxima/known-ecl-failures.patch
new file mode 100644
index 000000000000..f1d612d993e6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/maxima/known-ecl-failures.patch
@@ -0,0 +1,21 @@
+diff --git a/tests/testsuite.lisp b/tests/testsuite.lisp
+index 45a81f4..36c35b8 100644
+--- a/tests/testsuite.lisp
++++ b/tests/testsuite.lisp
+@@ -25,13 +25,14 @@
+         ((mlist simp) "rtest10" 24 25)
+         ((mlist) "rtest11" #+(or gcl cmucl ccl64) 158 #+(or gcl cmucl ccl64) 174 #+gcl 175)
+         "rtest13" "rtest13s"
+-        "rtest14"
++        ;; "rtest14" ;; some tests sometimes fail with ecl, hard to reproduce. Observed failing: 250, 267, 297, 307, 310, 312, 315, 319
+         "rtest15"
+ 	;; ccl versions 1.11 and earlier fail test 50.  Mark it as a
+ 	;; known failure.  Presumably 1.12 will have this fixed.
+         ((mlist simp) "rtest16" #+ccl 50)
+         "rtestode" "rtestode_zp"
+-        "rtest3" "rtest8"
++        "rtest3"
++        ((mlist simp) "rtest8" 104) ;; fails with ecl
+         ((mlist simp) "rtest12" 76 78)
+         "rexamples"
+         ((mlist simp) "rtesthyp" 105 112 113 123 124 128)
diff --git a/nixpkgs/pkgs/applications/science/math/msieve/default.nix b/nixpkgs/pkgs/applications/science/math/msieve/default.nix
new file mode 100644
index 000000000000..db7a1c149068
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/msieve/default.nix
@@ -0,0 +1,30 @@
+{stdenv, fetchurl, zlib, gmp, ecm }:
+
+stdenv.mkDerivation {
+  name = "msieve-1.53";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/msieve/msieve/Msieve%20v1.53/msieve153_src.tar.gz";
+    sha256 = "1d1vv7j4rh3nnxsmvafi73qy7lw7n3akjlm5pjl3m936yapvmz65";
+  };
+
+  buildInputs = [ zlib gmp ecm ];
+
+  ECM = if ecm == null then "0" else "1";
+
+  # Doesn't hurt Linux but lets clang-based platforms like Darwin work fine too
+  makeFlags = [ "CC=cc" "all" ];
+
+  installPhase = ''
+    mkdir -p $out/bin/
+    cp msieve $out/bin/
+  '';
+
+  meta = {
+    description = "A C library implementing a suite of algorithms to factor large integers";
+    license = stdenv.lib.licenses.publicDomain;
+    homepage = "http://msieve.sourceforge.net/";
+    maintainers = [ stdenv.lib.maintainers.roconnor ];
+    platforms = [ "x86_64-linux" ] ++ stdenv.lib.platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/mxnet/default.nix b/nixpkgs/pkgs/applications/science/math/mxnet/default.nix
new file mode 100644
index 000000000000..3d74421669ea
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/mxnet/default.nix
@@ -0,0 +1,55 @@
+{ config, stdenv, lib, fetchurl, bash, cmake
+, opencv3, gtest, blas, perl
+, cudaSupport ? config.cudaSupport or false, cudatoolkit, nvidia_x11
+, cudnnSupport ? cudaSupport, cudnn
+}:
+
+assert cudnnSupport -> cudaSupport;
+
+stdenv.mkDerivation rec {
+  pname = "mxnet";
+  version = "1.6.0";
+
+  src = fetchurl {
+    url = "https://github.com/apache/incubator-mxnet/releases/download/${version}/apache-mxnet-src-${version}-incubating.tar.gz";
+    sha256 = "1vvdb7pfh63kb9fzs6gqp95q550a3ck4cj9mqxlk9wwhkh30dsq1";
+  };
+
+  nativeBuildInputs = [ cmake perl ];
+
+  buildInputs = [ opencv3 gtest blas.provider ]
+              ++ lib.optionals cudaSupport [ cudatoolkit nvidia_x11 ]
+              ++ lib.optional cudnnSupport cudnn;
+
+  cmakeFlags =
+    [ "-DUSE_MKL_IF_AVAILABLE=OFF" ]
+    ++ (if cudaSupport then [
+      "-DUSE_OLDCMAKECUDA=ON"  # see https://github.com/apache/incubator-mxnet/issues/10743
+      "-DCUDA_ARCH_NAME=All"
+      "-DCUDA_HOST_COMPILER=${cudatoolkit.cc}/bin/cc"
+    ] else [ "-DUSE_CUDA=OFF" ])
+    ++ lib.optional (!cudnnSupport) "-DUSE_CUDNN=OFF";
+
+  postPatch = ''
+    substituteInPlace 3rdparty/mkldnn/tests/CMakeLists.txt \
+      --replace "/bin/bash" "${bash}/bin/bash"
+
+    # Build against the system version of OpenMP.
+    # https://github.com/apache/incubator-mxnet/pull/12160
+    rm -rf 3rdparty/openmp
+  '';
+
+  postInstall = ''
+    rm "$out"/lib/*.a
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler";
+    homepage = "https://mxnet.incubator.apache.org/";
+    maintainers = with maintainers; [ abbradar ];
+    license = licenses.asl20;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/nasc/default.nix b/nixpkgs/pkgs/applications/science/math/nasc/default.nix
new file mode 100644
index 000000000000..002acbf3875f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/nasc/default.nix
@@ -0,0 +1,70 @@
+{ stdenv
+, fetchFromGitHub
+, fetchpatch
+, pkgconfig
+, vala
+, gtk3
+, glib
+, pantheon
+, libsoup
+, gtksourceview
+, libgee
+, cmake
+, libqalculate
+, cln
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "nasc";
+  version = "0.5.4";
+
+  src = fetchFromGitHub {
+    owner = "parnold-x";
+    repo = pname;
+    rev = version;
+    sha256 = "036v3dx8yasp19j88lflibqnpfi5d0nk7qkcnr80zn1lvawf4wgn";
+  };
+
+  patches = [
+    # fix build with gcc9
+    (fetchpatch {
+      url = "https://github.com/parnold-x/nasc/commit/46b9b80e228b6b86001bded45d85e073a9411549.patch";
+      sha256 = "1sm2aw0xhw2chk036r231nmp2f2ypxcmzggwljkn7wfzgg3h1mx3";
+    })
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    vala
+    pkgconfig
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    cln
+    libsoup
+    gtk3
+    glib
+    gtksourceview
+    libgee
+    libqalculate
+    pantheon.elementary-icon-theme
+    pantheon.granite
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Do maths like a normal person";
+    longDescription = ''
+      It’s an app where you do maths like a normal person. It lets you
+      type whatever you want and smartly figures out what is math and
+      spits out an answer on the right pane. Then you can plug those
+      answers in to future equations and if that answer changes, so does
+      the equations it’s used in.
+    '';
+    homepage = "https://github.com/parnold-x/nasc";
+    maintainers = with maintainers; [ samdroid-apps ];
+    platforms = platforms.linux;
+    license = licenses.gpl3Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/nauty/default.nix b/nixpkgs/pkgs/applications/science/math/nauty/default.nix
new file mode 100644
index 000000000000..c1d408213b98
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/nauty/default.nix
@@ -0,0 +1,46 @@
+{ stdenv
+, lib
+, fetchurl
+}:
+stdenv.mkDerivation rec {
+  pname = "nauty";
+  version = "27r1";
+  src = fetchurl {
+    url = "http://pallini.di.uniroma1.it/nauty${version}.tar.gz";
+    sha256 = "1nym0p2djws8ylkpr0kgpxfa6fxdlh46cmvz0gn5vd02jzgs0aww";
+  };
+  outputs = [ "out" "dev" ];
+  configureFlags = {
+    # Prevent nauty from sniffing some cpu features. While those are very
+    # widely available, it can lead to nasty bugs when they are not available:
+    # https://groups.google.com/forum/#!topic/sage-packaging/Pe4SRDNYlhA
+    default        = [ "--disable-clz" "--disable-popcnt" ];
+    westmere       = [ "--disable-clz" ];
+    sandybridge    = [ "--disable-clz" ];
+    ivybridge      = [ "--disable-clz" ];
+  }.${stdenv.hostPlatform.platform.gcc.arch or "default"} or [];
+  installPhase = ''
+    mkdir -p "$out"/{bin,share/doc/nauty} "$dev"/{lib,include/nauty}
+
+    find . -type f -perm -111 \! -name '*.*' \! -name configure -exec cp '{}' "$out/bin" \;
+    cp [Rr][Ee][Aa][Dd]* COPYRIGHT This* [Cc]hange* "$out/share/doc/nauty"
+
+    cp *.h "$dev/include/nauty"
+    for i in *.a; do
+      cp "$i" "$dev/lib/lib$i";
+    done
+  '';
+  checkTarget = "checks";
+  meta = with lib; {
+    inherit version;
+    description = ''Programs for computing automorphism groups of graphs and digraphs'';
+    license = licenses.asl20;
+    maintainers = with maintainers; [ raskin timokau ];
+    platforms = platforms.unix;
+    # I'm not sure if the filename will remain the same for future changelog or
+    # if it will track changes to minor releases. Lets see. Better than nothing
+    # in any case.
+    changelog = "http://pallini.di.uniroma1.it/changes24-27.txt";
+    homepage = "http://pallini.di.uniroma1.it/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/nota/default.nix b/nixpkgs/pkgs/applications/science/math/nota/default.nix
new file mode 100644
index 000000000000..897785ef6e8b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/nota/default.nix
@@ -0,0 +1,40 @@
+{ mkDerivation, haskellPackages, fetchurl, lib }:
+
+mkDerivation rec {
+  pname = "nota";
+  version = "1.0";
+
+  # Can't use fetchFromGitLab since codes.kary.us doesn't support https
+  src = fetchurl {
+    url = "http://codes.kary.us/nota/nota/-/archive/V${version}/nota-V${version}.tar.bz2";
+    sha256 = "0bbs6bm9p852hvqadmqs428ir7m65h2prwyma238iirv42pk04v8";
+  };
+
+  postUnpack = ''
+    export sourceRoot=$sourceRoot/source
+  '';
+
+  isLibrary = false;
+  isExecutable = true;
+
+  libraryHaskellDepends = with haskellPackages; [
+    base
+    bytestring
+    array
+    split
+    scientific
+    parsec
+    ansi-terminal
+    regex-compat
+    containers
+    terminal-size
+    numbers
+    text
+    time
+  ];
+
+  description = "The most beautiful command line calculator";
+  homepage = "https://kary.us/nota";
+  license = lib.licenses.mpl20;
+  maintainers = with lib.maintainers; [ dtzWill ];
+}
diff --git a/nixpkgs/pkgs/applications/science/math/palp/default.nix b/nixpkgs/pkgs/applications/science/math/palp/default.nix
new file mode 100644
index 000000000000..c383438002f4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/palp/default.nix
@@ -0,0 +1,90 @@
+{ stdenv
+, fetchurl
+, dimensions ? 6 # works for <= dimensions dimensions, but is only optimized for that exact value
+, doSymlink ? true # symlink the executables to the default location (without dimension postfix)
+}:
+
+let
+  dim = toString dimensions;
+in
+stdenv.mkDerivation rec {
+  pname = "palp";
+  version = "2.11";
+
+  src = fetchurl {
+    url = "http://hep.itp.tuwien.ac.at/~kreuzer/CY/palp/palp-${version}.tar.gz";
+    sha256 = "00jpm73fw9jjq58z6rysr1mwv489j6rpfqqlhm9ab0dln4kyhh05";
+  };
+
+  hardeningDisable = [
+    "format"
+  ];
+
+  patchPhase = stdenv.lib.optionalString stdenv.isDarwin ''
+    substituteInPlace GNUmakefile --replace gcc cc
+  '';
+
+  preBuild = ''
+      echo Building PALP optimized for ${dim} dimensions
+      sed -i "s/^#define[^a-zA-Z]*POLY_Dmax.*/#define POLY_Dmax ${dim}/" Global.h
+  '';
+
+  # palp has no tests of its own. This test is an adapted sage test that failed
+  # when #28029 was merged.
+  doCheck = true;
+  checkPhase = ''
+    ./nef.x -f -N << EOF | grep -q 'np='
+      3 6
+      1  0  0 -1  0  0
+      0  1  0  0 -1  0
+      0  0  1  0  0 -1
+    EOF
+  '';
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    for file in poly class cws nef mori; do
+        cp -p $file.x "$out/bin/$file-${dim}d.x"
+    done
+  '' + stdenv.lib.optionalString doSymlink ''
+    cd "$out/bin"
+    for file in poly class cws nef mori; do
+        ln -sf $file-6d.x $file.x
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A Package for Analyzing Lattice Polytopes";
+    longDescription = ''
+      A Package for Analyzing Lattice Polytopes (PALP) is a set of C
+      programs for calculations with lattice polytopes and applications to
+      toric geometry.
+
+      It contains routines for vertex and facet enumeration, computation of
+      incidences and symmetries, as well as completion of the set of lattice
+      points in the convex hull of a given set of points. In addition, there
+      are procedures specialised to reflexive polytopes such as the
+      enumeration of reflexive subpolytopes, and applications to toric
+      geometry and string theory, like the computation of Hodge data and
+      fibration structures for toric Calabi-Yau varieties.  The package is
+      well tested and optimised in speed as it was used for time consuming
+      tasks such as the classification of reflexive polyhedra in 4
+      dimensions and the creation and manipulation of very large lists of
+      5-dimensional polyhedra.
+
+      While originally intended for low-dimensional applications, the
+      algorithms work in any dimension and our key routine for vertex and
+      facet enumeration compares well with existing packages.
+    '';
+    homepage = "http://hep.itp.tuwien.ac.at/~kreuzer/CY/CYpalp.html";
+    # Not really a changelog, but a one-line summary of each update that should
+    # be reviewed on update.
+    changelog = "http://hep.itp.tuwien.ac.at/~kreuzer/CY/CYpalp.html";
+    # Just a link on the website pointing to gpl -- now gplv3. When the last
+    # version was released that pointed to gplv2 however, so thats probably
+    # the right license.
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ timokau ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/pari/default.nix b/nixpkgs/pkgs/applications/science/math/pari/default.nix
new file mode 100644
index 000000000000..8b5176c94f69
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/pari/default.nix
@@ -0,0 +1,91 @@
+{ stdenv
+, fetchurl
+, fetchpatch
+, gmp
+, readline
+, libX11
+, tex
+, perl
+, withThread ? true, libpthreadstubs
+}:
+
+assert withThread -> libpthreadstubs != null;
+
+stdenv.mkDerivation rec {
+  pname = "pari";
+  version = "2.11.3";
+
+  src = fetchurl {
+    url = "https://pari.math.u-bordeaux.fr/pub/pari/unix/${pname}-${version}.tar.gz";
+    sha256 = "1jd65h2psrmba2dx7rkf5qidf9ka0cwbsg20pd18k45ggr30l467";
+  };
+
+  patches = [
+    # https://trac.sagemath.org/ticket/29313#comment:1
+    (fetchpatch {
+      name = "backport-bug-fix.patch";
+      url = "https://git.archlinux.org/svntogit/community.git/plain/repos/community-x86_64/c7a1d35f.patch?h=packages/pari&id=27893d227290dc3821d68aa25877d9765c204dad";
+      sha256 = "0vm0fwyzj66cr32imip6srksd47s2s2sjl1rb26ph8gpfi3nalii";
+    })
+  ];
+
+  buildInputs = [
+    gmp
+    readline
+    libX11
+    tex
+    perl
+  ] ++ stdenv.lib.optionals withThread [
+    libpthreadstubs
+  ];
+
+  configureScript = "./Configure";
+  configureFlags = [
+    "--with-gmp=${gmp.dev}"
+    "--with-readline=${readline.dev}"
+  ] ++ stdenv.lib.optional stdenv.isDarwin "--host=x86_64-darwin"
+  ++ stdenv.lib.optional withThread "--mt=pthread";
+
+  preConfigure = ''
+    export LD=$CC
+  '';
+
+  postConfigure = stdenv.lib.optionalString stdenv.isDarwin ''
+    echo 'echo x86_64-darwin' > config/arch-osname
+  '';
+
+  makeFlags = [ "all" ];
+
+  meta = with stdenv.lib; {
+    description = "Computer algebra system for high-performance number theory computations";
+    longDescription = ''
+       PARI/GP is a widely used computer algebra system designed for fast
+       computations in number theory (factorizations, algebraic number theory,
+       elliptic curves...), but also contains a large number of other useful
+       functions to compute with mathematical entities such as matrices,
+       polynomials, power series, algebraic numbers etc., and a lot of
+       transcendental functions. PARI is also available as a C library to allow
+       for faster computations.
+
+       Originally developed by Henri Cohen and his co-workers (Université
+       Bordeaux I, France), PARI is now under the GPL and maintained by Karim
+       Belabas with the help of many volunteer contributors.
+
+       - PARI is a C library, allowing fast computations.
+       - gp is an easy-to-use interactive shell giving access to the
+          PARI functions.
+       - GP is the name of gp's scripting language.
+       - gp2c, the GP-to-C compiler, combines the best of both worlds
+          by compiling GP scripts to the C language and transparently loading
+          the resulting functions into gp. (gp2c-compiled scripts will typically
+          run 3 or 4 times faster.) gp2c currently only understands a subset
+           of the GP language.
+    '';
+    homepage    = "http://pari.math.u-bordeaux.fr";
+    downloadPage = "http://pari.math.u-bordeaux.fr/download.html";
+    license     = licenses.gpl2Plus;
+    maintainers = with maintainers; [ ertes raskin AndersonTorres timokau ];
+    platforms   = platforms.linux ++ platforms.darwin;
+    updateWalker = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/pari/gp2c.nix b/nixpkgs/pkgs/applications/science/math/pari/gp2c.nix
new file mode 100644
index 000000000000..4fa63e8edabd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/pari/gp2c.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl
+, pari, perl }:
+
+stdenv.mkDerivation rec {
+
+  pname = "gp2c";
+  version = "0.0.11pl3";
+
+  src = fetchurl {
+    url = "https://pari.math.u-bordeaux.fr/pub/pari/GP2C/${pname}-${version}.tar.gz";
+    sha256 = "0yymbrgyjw500hqgmkj5m4nmscd7c9rs9w2c96lxgrcyab8krhrm";
+  };
+
+  buildInputs = [ pari perl ];
+
+  configureFlags = [
+    "--with-paricfg=${pari}/lib/pari/pari.cfg"
+    "--with-perl=${perl}/bin/perl" ];
+
+  meta = with stdenv.lib; {
+    description =  "A compiler to translate GP scripts to PARI programs";
+    homepage    = "http://pari.math.u-bordeaux.fr/";
+    downloadPage = "http://pari.math.u-bordeaux.fr/download.html";
+    license     = licenses.gpl2Plus;
+    maintainers = with maintainers; [ AndersonTorres ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/pcalc/default.nix b/nixpkgs/pkgs/applications/science/math/pcalc/default.nix
new file mode 100644
index 000000000000..f372357fe7d8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/pcalc/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchgit, bison, flex }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "pcalc";
+  version = "20141224";
+
+  src = fetchgit {
+    url = "git://git.code.sf.net/p/pcalc/code";
+    rev = "181d60d3c880da4344fef7138065943eb3b9255f";
+    sha256 = "1hd5bh20j5xzvv6qa0fmzmv0h8sf38r7zgi7y0b6nk17pjq33v90";
+  };
+
+  makeFlags = [ "DESTDIR= BINDIR=$(out)/bin" ];
+  buildInputs = [ bison flex ];
+
+  meta = {
+    homepage = "http://pcalc.sourceforge.net/";
+    description = "Programmer's calculator";
+    license = licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [ ftrvxmtrx ];
+    platforms = stdenv.lib.platforms.linux;
+    inherit version;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/perseus/default.nix b/nixpkgs/pkgs/applications/science/math/perseus/default.nix
new file mode 100644
index 000000000000..55293e6c8a79
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/perseus/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, unzip }:
+
+stdenv.mkDerivation {
+  name = "perseus-4-beta";
+  version = "4-beta";
+  buildInputs = [ unzip ];
+
+  hardeningDisable = [ "stackprotector" ];
+
+  src = fetchurl {
+    url = "http://www.sas.upenn.edu/~vnanda/source/perseus_4_beta.zip";
+    sha256 = "09brijnqabhgfjlj5wny0bqm5dwqcfkp1x5wif6yzdmqh080jybj";
+  };
+
+  sourceRoot = ".";
+
+  buildPhase = ''
+    g++ Pers.cpp -O3 -fpermissive -o perseus
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp perseus $out/bin
+  '';
+
+  meta = {
+    description = "The Persistent Homology Software";
+    longDescription = ''
+      Persistent homology - or simply, persistence - is an algebraic
+      topological invariant of a filtered cell complex. Perseus
+      computes this invariant for a wide class of filtrations built
+      around datasets arising from point samples, images, distance
+      matrices and so forth.
+    '';
+    homepage = "http://www.sas.upenn.edu/~vnanda/perseus/index.html";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = with stdenv.lib.maintainers; [erikryb];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/polymake/default.nix b/nixpkgs/pkgs/applications/science/math/polymake/default.nix
new file mode 100644
index 000000000000..d4f13f84f81c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/polymake/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchurl
+, ninja, libxml2, libxslt, readline, perl, gmp, mpfr, boost
+, bliss, ppl, singular, cddlib, lrs, nauty
+, ant, openjdk
+, perlPackages
+, makeWrapper
+}:
+
+stdenv.mkDerivation rec {
+  pname = "polymake";
+  version = "3.2.rc4";
+
+  src = fetchurl {
+    url = "https://polymake.org/lib/exe/fetch.php/download/polymake-3.2r4.tar.bz2";
+    sha256 = "02jpkvy1cc6kc23vkn7nkndzr40fq1gkb3v257bwyi1h5d37fyqy";
+  };
+
+  buildInputs = [
+    libxml2 libxslt readline perl gmp mpfr boost
+    bliss ppl singular cddlib lrs nauty
+    openjdk
+  ] ++
+  (with perlPackages; [
+    XMLLibXML XMLLibXSLT XMLWriter TermReadLineGnu TermReadKey
+  ]);
+
+  nativeBuildInputs = [
+    makeWrapper ninja ant perl
+  ];
+
+  ninjaFlags = [ "-C" "build/Opt" ];
+
+  postInstall = ''
+    for i in "$out"/bin/*; do
+      wrapProgram "$i" --prefix PERL5LIB : "$PERL5LIB"
+    done
+  '';
+
+  meta = {
+    inherit version;
+    description = "Software for research in polyhedral geometry";
+    license = stdenv.lib.licenses.gpl2 ;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    homepage = "https://www.polymake.org/doku.php";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/pspp/default.nix b/nixpkgs/pkgs/applications/science/math/pspp/default.nix
new file mode 100644
index 000000000000..95c2c3931b3c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/pspp/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchurl, libxml2, readline, zlib, perl, cairo, gtk3, gsl
+, pkgconfig, gtksourceview, pango, gettext, dconf
+, makeWrapper, gsettings-desktop-schemas, hicolor-icon-theme
+, texinfo, ssw
+}:
+
+stdenv.mkDerivation rec {
+  pname = "pspp";
+  version = "1.2.0";
+
+  src = fetchurl {
+    url = "mirror://gnu/pspp/${pname}-${version}.tar.gz";
+    sha256 = "07pp27zycrb5x927jwaj9r3q7hy915jh51xs85zxby6gfiwl63m5";
+  };
+
+  nativeBuildInputs = [ pkgconfig texinfo ];
+  buildInputs = [ libxml2 readline zlib perl cairo gtk3 gsl
+    gtksourceview pango gettext
+    makeWrapper gsettings-desktop-schemas hicolor-icon-theme ssw
+  ];
+
+  doCheck = false;
+
+  enableParallelBuilding = true;
+
+  preFixup = ''
+    wrapProgram "$out/bin/psppire" \
+     --prefix XDG_DATA_DIRS : "$out/share" \
+     --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS" \
+     --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \
+     --prefix GIO_EXTRA_MODULES : "${stdenv.lib.getLib dconf}/lib/gio/modules"
+  '';
+
+  meta = {
+    homepage = "https://www.gnu.org/software/pspp/";
+    description = "A free replacement for SPSS, a program for statistical analysis of sampled data";
+    license = stdenv.lib.licenses.gpl3Plus;
+
+    longDescription = ''
+      PSPP is a program for statistical analysis of sampled data. It is
+      a Free replacement for the proprietary program SPSS.
+
+      PSPP can perform descriptive statistics, T-tests, anova, linear
+      and logistic regression, cluster analysis, factor analysis,
+      non-parametric tests and more. Its backend is designed to perform
+      its analyses as fast as possible, regardless of the size of the
+      input data. You can use PSPP with its graphical interface or the
+      more traditional syntax commands.
+    '';
+
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/pynac/default.nix b/nixpkgs/pkgs/applications/science/math/pynac/default.nix
new file mode 100644
index 000000000000..82e331216712
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/pynac/default.nix
@@ -0,0 +1,48 @@
+{ stdenv
+, fetchFromGitHub
+, autoreconfHook
+, pkgconfig
+, flint
+, gmp
+, python2
+, singular
+}:
+
+stdenv.mkDerivation rec {
+  version = "0.7.26";
+  pname = "pynac";
+
+  src = fetchFromGitHub {
+    owner = "pynac";
+    repo = "pynac";
+    rev = "pynac-${version}";
+    sha256 = "09d2p74x1arkydlxy6pw4p4byi7r8q7f29w373h4d8a215kadc6d";
+  };
+
+  buildInputs = [
+    flint
+    gmp
+    singular
+    singular
+    python2
+  ];
+
+  nativeBuildInputs = [
+    autoreconfHook
+    pkgconfig
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Python is Not a CAS -- modified version of Ginac";
+    longDescription = ''
+      Pynac -- "Python is Not a CAS" is a modified version of Ginac that
+      replaces the depency of GiNaC on CLN by a dependency instead of Python.
+      It is a lite version of GiNaC as well, not implementing all the features
+      of the full GiNaC, and it is *only* meant to be used as a Python library.
+    '';
+    homepage    = "http://pynac.org";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ timokau ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/qalculate-gtk/default.nix b/nixpkgs/pkgs/applications/science/math/qalculate-gtk/default.nix
new file mode 100644
index 000000000000..e393111590a8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/qalculate-gtk/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, intltool, autoreconfHook, pkgconfig, libqalculate, gtk3, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "qalculate-gtk";
+  version = "3.8.0a";
+
+  src = fetchFromGitHub {
+    owner = "qalculate";
+    repo = "qalculate-gtk";
+    rev = "v${version}";
+    sha256 = "0bjd61bbc5b2i09kz3ss01c0xmxrhmiv5wpbhhplkp3yhw2qrf3m";
+  };
+
+  patchPhase = ''
+    substituteInPlace src/main.cc --replace 'getPackageDataDir().c_str()' \"$out/share\"
+  '';
+
+  hardeningDisable = [ "format" ];
+
+  nativeBuildInputs = [ intltool pkgconfig autoreconfHook wrapGAppsHook ];
+  buildInputs = [ libqalculate gtk3 ];
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "The ultimate desktop calculator";
+    homepage = "http://qalculate.github.io";
+    maintainers = with maintainers; [ gebner ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/ratpoints/default.nix b/nixpkgs/pkgs/applications/science/math/ratpoints/default.nix
new file mode 100644
index 000000000000..fb205a69f038
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/ratpoints/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, fetchpatch, gmp }:
+stdenv.mkDerivation rec {
+  pname = "ratpoints";
+  version = "2.1.3.p4";
+
+  src = fetchurl {
+    url = "http://www.mathe2.uni-bayreuth.de/stoll/programs/ratpoints-${version}.tar.gz";
+    sha256 = "0zhad84sfds7izyksbqjmwpfw4rvyqk63yzdjd3ysd32zss5bgf4";
+  };
+
+  enableParallelBuilding = true;
+
+  patches = [
+    (fetchpatch {
+      url = "https://git.sagemath.org/sage.git/plain/build/pkgs/ratpoints/patches/sturm_and_rp_private.patch?id=1615f58890e8f9881c4228c78a6b39b9aab1303a";
+      sha256 = "0q3wajncyfr3gahd8gwk9x7g56zw54lpywrl63lqk7drkf60mrcl";
+    })
+  ];
+
+  buildInputs = [ gmp ];
+
+  makeFlags = [ "CC=cc" ];
+  buildFlags = stdenv.lib.optional stdenv.isDarwin ["CCFLAGS2=-lgmp -lc -lm" "CCFLAGS=-UUSE_SSE"];
+  installFlags = [ "INSTALL_DIR=$(out)" ];
+
+  preInstall = ''mkdir -p "$out"/{bin,share,lib,include}'';
+
+  meta = {
+    inherit version;
+    description = ''A program to find rational points on hyperelliptic curves'';
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.unix;
+    homepage = "http://www.mathe2.uni-bayreuth.de/stoll/programs/";
+    updateWalker = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/ries/default.nix b/nixpkgs/pkgs/applications/science/math/ries/default.nix
new file mode 100644
index 000000000000..4adf3ef2096e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/ries/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchzip }:
+stdenv.mkDerivation {
+  name = "ries-2018-04-11";
+
+  # upstream does not provide a stable link
+  src = fetchzip {
+    url = "https://salsa.debian.org/debian/ries/-/archive/debian/2018.04.11-1/ries-debian-2018.04.11-1.zip";
+    sha256 = "1h2wvd4k7f0l0i1vm9niz453xdbcs3nxccmri50qyrzzzc1b0842";
+  };
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://mrob.com/pub/ries/";
+    description = "Tool to produce a list of equations that approximately solve to a given number";
+    platforms = platforms.all;
+    maintainers = with maintainers; [ symphorien ];
+    license = licenses.gpl3Plus;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/science/math/ripser/default.nix b/nixpkgs/pkgs/applications/science/math/ripser/default.nix
new file mode 100644
index 000000000000..1c8ced5ed222
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/ripser/default.nix
@@ -0,0 +1,67 @@
+{ stdenv, fetchurl, fetchFromGitHub
+, assembleReductionMatrix ? false
+, useCoefficients ? false
+, indicateProgress ? false
+, useGoogleHashmap ? false, sparsehash ? null
+, fileFormat ? "lowerTriangularCsv"
+}:
+
+with stdenv.lib;
+
+assert assertOneOf "fileFormat" fileFormat
+  ["lowerTriangularCsv" "upperTriangularCsv" "dipha"];
+assert useGoogleHashmap -> sparsehash != null;
+
+let
+  inherit (stdenv.lib) optional;
+  version = "1.0";
+in
+stdenv.mkDerivation {
+  pname = "ripser";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "Ripser";
+    repo = "ripser";
+    rev = "f69c6af6ca6883dd518c48faf41cf8901c379598";
+    sha256 = "1mw2898s7l29hgajsaf75bs9bjn2sn4g2mvmh41a602jpwp9r0rz";
+  };
+
+  #Patch from dev branch to make compilation work.
+  #Will be removed when it gets merged into master.
+  patches = [(fetchurl {
+    url = "https://github.com/Ripser/ripser/commit/dc78d8ce73ee35f3828f0aad67a4e53620277ebf.patch";
+    sha256 = "1y93aqpqz8fm1cxxrf90dhh67im3ndkr8dnxgbw5y96296n4r924";
+  })];
+
+  buildInputs = optional useGoogleHashmap sparsehash;
+
+  buildFlags = [
+    "-std=c++11"
+    "-Ofast"
+    "-D NDEBUG"
+  ]
+  ++ optional assembleReductionMatrix "-D ASSEMBLE_REDUCTION_MATRIX"
+  ++ optional useCoefficients "-D USE_COEFFICIENTS"
+  ++ optional indicateProgress "-D INDICATE_PROGRESS"
+  ++ optional useGoogleHashmap "-D USE_GOOGLE_HASHMAP"
+  ++ optional (fileFormat == "lowerTriangularCsv") "-D FILE_FORMAT_LOWER_TRIANGULAR_CSV"
+  ++ optional (fileFormat == "upperTriangularCsv") "-D FILE_FORMAT_UPPER_TRIANGULAR_CSV"
+  ++ optional (fileFormat == "dipha") "-D FILE_FORMAT_DIPHA"
+  ;
+
+  buildPhase = "c++ ripser.cpp -o ripser $buildFlags";
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp ripser $out/bin
+  '';
+
+  meta = {
+    description = "A lean C++ code for the computation of Vietoris–Rips persistence barcodes";
+    homepage = "https://github.com/Ripser/ripser";
+    license = stdenv.lib.licenses.lgpl3;
+    maintainers = with stdenv.lib.maintainers; [erikryb];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/rofi-calc/0001-Patch-plugindir-to-output.patch b/nixpkgs/pkgs/applications/science/math/rofi-calc/0001-Patch-plugindir-to-output.patch
new file mode 100644
index 000000000000..197d1347d535
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/rofi-calc/0001-Patch-plugindir-to-output.patch
@@ -0,0 +1,25 @@
+From 0eaef67b683683fb423fcb2d5096b3cdf9a4a9cd Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Maciej=20Kr=C3=BCger?= <mkg20001@gmail.com>
+Date: Sun, 22 Mar 2020 12:26:10 +0100
+Subject: [PATCH] Patch plugindir to output
+
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 50edb74..639ee86 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -50,7 +50,7 @@ PKG_CHECK_MODULES([glib],     [glib-2.0 >= 2.40 gio-unix-2.0 gmodule-2.0 ])
+ PKG_CHECK_MODULES([cairo],    [cairo])
+ PKG_CHECK_MODULES([rofi],     [rofi >= 1.5.4])
+ 
+-[rofi_PLUGIN_INSTALL_DIR]="`$PKG_CONFIG --variable=pluginsdir rofi`"
++[rofi_PLUGIN_INSTALL_DIR]="`echo $out/lib/rofi`"
+ AC_SUBST([rofi_PLUGIN_INSTALL_DIR])
+ 
+ LT_INIT([disable-static])
+-- 
+2.25.1
+
diff --git a/nixpkgs/pkgs/applications/science/math/rofi-calc/default.nix b/nixpkgs/pkgs/applications/science/math/rofi-calc/default.nix
new file mode 100644
index 000000000000..84adb2358d24
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/rofi-calc/default.nix
@@ -0,0 +1,54 @@
+{ stdenv
+, fetchFromGitHub
+, autoreconfHook
+, pkgconfig
+, rofi-unwrapped
+, libqalculate
+, glib
+, cairo
+, gobject-introspection
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "rofi-calc";
+  version = "1.7";
+
+  src = fetchFromGitHub {
+    owner = "svenstaro";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "046x2zpvza7n0m81s75qkvmnpkvsvvyqqqjxcqzj7by0llpqs7wa";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    pkgconfig
+    gobject-introspection
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    rofi-unwrapped
+    libqalculate
+    glib
+    cairo
+  ];
+
+  patches = [
+    ./0001-Patch-plugindir-to-output.patch
+  ];
+
+  postPatch = ''
+    sed "s|qalc_binary = \"qalc\"|qalc_binary = \"${libqalculate}/bin/qalc\"|" -i src/calc.c
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Do live calculations in rofi!";
+    homepage = "https://github.com/svenstaro/rofi-calc";
+    license = licenses.mit;
+    maintainers = with maintainers; [ luc65r albakham ];
+    platforms = [ "x86_64-linux" "x86_64-darwin" ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/science/math/sage/README.md b/nixpkgs/pkgs/applications/science/math/sage/README.md
new file mode 100644
index 000000000000..26e91fc63133
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/README.md
@@ -0,0 +1,78 @@
+# Sage on nixos
+
+Sage is a pretty complex package that depends on many other complex packages and patches some of those. As a result, the sage nix package is also quite complex.
+
+Don't feel discouraged to fix, simplify or improve things though. The individual files have comments explaining their purpose. The most importent ones are `default.nix` linking everything together, `sage-src.nix` adding patches and `sagelib.nix` building the actual sage package.
+
+## The sage build is broken
+
+First you should find out which change to nixpkgs is at fault (if you don't already know). You can use `git-bisect` for that (see the manpage).
+
+If the build broke as a result of a package update, try those solutions in order:
+
+- search the [sage trac](https://trac.sagemath.org/) for keywords like "Upgrade <package>". Maybe somebody has already proposed a patch that fixes the issue. You can then add a `fetchpatch` to `sage-src.nix`.
+
+- check if [gentoo](https://github.com/cschwan/sage-on-gentoo/tree/master/sci-mathematics/sage), [debian](https://salsa.debian.org/science-team/sagemath/tree/master/debian) or [arch linux](https://git.archlinux.org/svntogit/community.git/tree/trunk?h=packages/sagemath) already solved the problem. You can then again add a `fetchpatch` to `sage-src.nix`. If applicable you should also [propose the patch upstream](#proposing-a-sage-patch).
+
+- fix the problem yourself. First clone the sagemath source and then check out the sage version you want to patch:
+
+```
+[user@localhost ~]$ git clone git://github.com/sagemath/sage.git
+[user@localhost ~]$ cd sage
+[user@localhost sage]$ git checkout 8.2 # substitute the relevant version here
+```
+
+Then make the needed changes and generate a patch with `git diff`:
+
+```
+[user@localhost ~]$ <make changes>
+[user@localhost ~]$ git diff -u > /path/to/nixpkgs/pkgs/applications/science/math/sage/patches/name-of-patch.patch
+```
+
+Now just add the patch to `sage-src.nix` and test your changes. If they fix the problem, [propose them upstream](#proposing-a-sage-patch) and add a link to the trac ticket.
+
+- pin the package version in `default.nix` and add a note that explains why that is necessary.
+
+
+## Proposing a sage patch
+
+You can [login the sage trac using GitHub](https://trac.sagemath.org/login). Your username will then be `gh-<your-github-name>`. The only other way is to request a trac account via email. After that refer to [git the hard way](http://doc.sagemath.org/html/en/developer/manual_git.html#chapter-manual-git) in the sage documentation. The "easy way" requires a non-GitHub account (requested via email) and a special tool. The "hard way" is really not all that hard if you're a bit familiar with git.
+
+Here's the gist, assuming you want to use ssh key authentication. First, [add your public ssh key](https://trac.sagemath.org/prefs/sshkeys). Then:
+
+```
+[user@localhost ~]$ git clone git://github.com/sagemath/sage.git
+[user@localhost ~]$ cd sage
+[user@localhost sage]$ git remote add trac git@trac.sagemath.org:sage.git -t master
+[user@localhost sage]$ git checkout -b u/gh-<your-github-username>/<your-branch-name> develop
+[user@localhost sage]$ <make changes>
+[user@localhost sage]$ git add .
+[user@localhost sage]$ git commit
+[user@localhost sage]$ git show # review your changes
+[user@localhost sage]$ git push --set-upstream trac u/gh-<your-github-username>/<your-branch-name>
+```
+
+You now created a branch on the trac server (you *must* follow the naming scheme as you only have push access to branches with the `u/gh-<your-github-username>/` prefix).
+Now you can [create a new trac ticket](https://trac.sagemath.org/newticket).
+- Write a description of the change
+- set the type and component as appropriate
+- write your real name in the "Authors" field
+- write `u/gh-<your-github-username>/<your-branch-name>` in the "Branch" field
+- click "Create ticket"
+- click "Modify" on the top right of your ticket (for some reason you can only change the ticket status after you have created it)
+- set the ticket status from `new` to `needs_review`
+- click "Save changes"
+
+Refer to sages [Developer's Guide](http://doc.sagemath.org/html/en/developer/index.html) for further details.
+
+## I want to update sage
+
+You'll need to change the `version` field in `sage-src.nix`. Afterwards just try to build and let nix tell you which patches no longer apply (hopefully because they were adopted upstream). Remove those.
+
+Hopefully the build will succeed now. If it doesn't and the problem is obvious, fix it as described in [The sage build is broken](#the-sage-build-is-broken).
+If the problem is not obvious, you can try to first update sage to an intermediate version (remember that you can also set the `version` field to any git revision of sage) and locate the sage commit that introduced the issue. You can even use `git-bisect` for that (it will only be a bit tricky to keep track of which patches to apply). Hopefully after that the issue will be obvious.
+
+## Well, that didn't help!
+
+If you couldn't fix the problem, create a GitHub issue on the nixpkgs repo and ping @timokau (or whoever is listed in the `maintainers` list of the sage package).
+Describe what you did and why it didn't work. Afterwards it would be great if you help the next guy out and improve this documentation!
diff --git a/nixpkgs/pkgs/applications/science/math/sage/default.nix b/nixpkgs/pkgs/applications/science/math/sage/default.nix
new file mode 100644
index 000000000000..caf51c3da251
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/default.nix
@@ -0,0 +1,172 @@
+{ pkgs
+, withDoc ? false
+}:
+
+# Here sage and its dependencies are put together. Some dependencies may be pinned
+# as a last resort. Patching sage for compatibility with newer dependency versions
+# is always preferred, see `sage-src.nix` for that.
+
+let
+  inherit (pkgs) symlinkJoin callPackage nodePackages;
+
+  # https://trac.sagemath.org/ticket/15980 for tracking of python3 support
+  python = pkgs.python2.override {
+    packageOverrides = self: super: {
+      # python packages that appear unmaintained and were not accepted into the nixpkgs
+      # tree because of that. These packages are only dependencies of the more-or-less
+      # deprecated sagenb. However sagenb is still a default dependency and the doctests
+      # depend on it.
+      # See https://github.com/NixOS/nixpkgs/pull/38787 for a discussion.
+      # The dependency on the sage notebook (and therefore these packages) will be
+      # removed in the future:
+      # https://trac.sagemath.org/ticket/25837
+      flask-oldsessions = self.callPackage ./flask-oldsessions.nix {};
+      flask-openid = self.callPackage ./flask-openid.nix {};
+      python-openid = self.callPackage ./python-openid.nix {};
+      sagenb = self.callPackage ./sagenb.nix {
+        mathjax = nodePackages.mathjax;
+      };
+
+      # Package with a cyclic dependency with sage
+      pybrial = self.callPackage ./pybrial.nix {};
+
+      # `sagelib`, i.e. all of sage except some wrappers and runtime dependencies
+      sagelib = self.callPackage ./sagelib.nix {
+        inherit flint ecl arb;
+        inherit sage-src env-locations pynac singular;
+        linbox = pkgs.linbox.override { withSage = true; };
+        pkg-config = pkgs.pkgconfig; # not to confuse with pythonPackages.pkgconfig
+      };
+    };
+  };
+
+  jupyter-kernel-definition = {
+    displayName = "SageMath ${sage-src.version}";
+    argv = [
+      "${sage-with-env}/bin/sage" # FIXME which sage
+      "--python"
+      "-m"
+      "sage.repl.ipython_kernel"
+      "-f"
+      "{connection_file}"
+    ];
+    language = "sagemath";
+    # just one 16x16 logo is available
+    logo32 = "${sage-src}/doc/common/themes/sage/static/sageicon.png";
+    logo64 = "${sage-src}/doc/common/themes/sage/static/sageicon.png";
+  };
+
+  # A bash script setting various environment variables to tell sage where
+  # the files its looking fore are located. Also see `sage-env`.
+  env-locations = callPackage ./env-locations.nix {
+    inherit pari_data ecl;
+    inherit singular maxima-ecl;
+    cysignals = python.pkgs.cysignals;
+    three = nodePackages.three;
+    mathjax = nodePackages.mathjax;
+  };
+
+  # The shell file that gets sourced on every sage start. Will also source
+  # the env-locations file.
+  sage-env = callPackage ./sage-env.nix {
+    sagelib = python.pkgs.sagelib;
+    inherit env-locations;
+    inherit python ecl singular palp flint pynac pythonEnv maxima-ecl;
+    pkg-config = pkgs.pkgconfig; # not to confuse with pythonPackages.pkgconfig
+  };
+
+  # The documentation for sage, building it takes a lot of ram.
+  sagedoc = callPackage ./sagedoc.nix {
+    inherit sage-with-env;
+    inherit python maxima-ecl;
+  };
+
+  # sagelib with added wrappers and a dependency on sage-tests to make sure thet tests were run.
+  sage-with-env = callPackage ./sage-with-env.nix {
+    inherit pythonEnv;
+    inherit sage-env;
+    inherit pynac singular maxima-ecl;
+    pkg-config = pkgs.pkgconfig; # not to confuse with pythonPackages.pkgconfig
+    three = nodePackages.three;
+  };
+
+  # Doesn't actually build anything, just runs sages testsuite. This is a
+  # separate derivation to make it possible to re-run the tests without
+  # rebuilding sagelib (which takes ~30 minutes).
+  # Running the tests should take something in the order of 1h.
+  sage-tests = callPackage ./sage-tests.nix {
+    inherit sage-with-env;
+  };
+
+  sage-src = callPackage ./sage-src.nix {};
+
+  pythonRuntimeDeps = with python.pkgs; [
+    sagelib
+    pybrial
+    sagenb
+    cvxopt
+    networkx
+    service-identity
+    psutil
+    sympy
+    fpylll
+    matplotlib
+    tkinter # optional, as a matplotlib backend (use with `%matplotlib tk`)
+    scipy
+    ipywidgets
+    rpy2
+    sphinx
+    typing
+    pillow
+  ];
+
+  pythonEnv = python.buildEnv.override {
+    extraLibs = pythonRuntimeDeps;
+    ignoreCollisions = true;
+  } // { extraLibs = pythonRuntimeDeps; }; # make the libs accessible
+
+  arb = pkgs.arb.override { inherit flint; };
+
+  singular = pkgs.singular.override { inherit flint; };
+
+  # https://trac.sagemath.org/ticket/26625
+  maxima-ecl = pkgs.maxima-ecl;
+
+  # *not* to confuse with the python package "pynac"
+  pynac = pkgs.pynac.override { inherit singular flint; };
+
+  # With openblas (64 bit), the tests fail the same way as when sage is build with
+  # openblas instead of openblasCompat. Apparently other packages somehow use flints
+  # blas when it is available. Alternative would be to override flint to use
+  # openblasCompat.
+  flint = pkgs.flint.override { withBlas = false; };
+
+  # Multiple palp dimensions need to be available and sage expects them all to be
+  # in the same folder.
+  palp = symlinkJoin {
+    name = "palp-${pkgs.palp.version}";
+    paths = [
+      (pkgs.palp.override { dimensions = 4; doSymlink = false; })
+      (pkgs.palp.override { dimensions = 5; doSymlink = false; })
+      (pkgs.palp.override { dimensions = 6; doSymlink = true; })
+      (pkgs.palp.override { dimensions = 11; doSymlink = false; })
+    ];
+  };
+
+  # Sage expects those in the same directory.
+  pari_data = symlinkJoin {
+    name = "pari_data";
+    paths = with pkgs; [
+      pari-galdata
+      pari-seadata-small
+    ];
+  };
+
+  # https://trac.sagemath.org/ticket/22191
+  ecl = pkgs.ecl_16_1_2;
+in
+# A wrapper around sage that makes sure sage finds its docs (if they were build).
+callPackage ./sage.nix {
+  inherit sage-tests sage-with-env sagedoc jupyter-kernel-definition;
+  inherit withDoc;
+}
diff --git a/nixpkgs/pkgs/applications/science/math/sage/dist-tests.nix b/nixpkgs/pkgs/applications/science/math/sage/dist-tests.nix
new file mode 100644
index 000000000000..24a86a8f37a4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/dist-tests.nix
@@ -0,0 +1,17 @@
+# Lists past failures and files associated with it. The intention is to build
+# up a subset of a testsuite that catches 95% of failures that are relevant for
+# distributions while only taking ~5m to run. This in turn makes it more
+# reasonable to re-test sage on dependency changes and makes it easier for
+# users to override the sage derivation.
+# This is an experiment for now. If it turns out that there really is a small
+# subset of files responsible for the vast majority of packaging tests, we can
+# think about moving this upstream.
+[
+	"src/sage/env.py" # [1]
+	"src/sage/misc/persist.pyx" # [1]
+	"src/sage/misc/inline_fortran.py" # [1]
+	"src/sage/repl/ipython_extension.py" # [1]
+]
+
+# Numbered list of past failures to annotate files with
+# [1] PYTHONPATH related issue https://github.com/NixOS/nixpkgs/commit/ec7f569211091282410050e89e68832d4fe60528
diff --git a/nixpkgs/pkgs/applications/science/math/sage/env-locations.nix b/nixpkgs/pkgs/applications/science/math/sage/env-locations.nix
new file mode 100644
index 000000000000..bda2d23b9e52
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/env-locations.nix
@@ -0,0 +1,49 @@
+{ writeTextFile
+, pari_data
+, pari
+, singular
+, maxima-ecl
+, conway_polynomials
+, graphs
+, elliptic_curves
+, polytopes_db
+, gap
+, ecl
+, combinatorial_designs
+, jmol
+, mathjax
+, three
+, cysignals
+}:
+
+# A bash script setting various environment variables to tell sage where
+# the files its looking fore are located. Also see `sage-env`.
+writeTextFile rec {
+  name = "sage-env-locations";
+  destination = "/${name}";
+  text = ''
+    export GP_DATA_DIR="${pari_data}/share/pari"
+    export PARI_DATA_DIR="${pari_data}"
+    export GPHELP="${pari}/bin/gphelp"
+    export GPDOCDIR="${pari}/share/pari/doc"
+    export SINGULARPATH='${singular}/share/singular'
+    export SINGULAR_SO='${singular}/lib/libSingular.so'
+    export GAP_SO='${gap}/lib/libgap.so'
+    export SINGULAR_EXECUTABLE='${singular}/bin/Singular'
+    export MAXIMA_FAS='${maxima-ecl}/lib/maxima/${maxima-ecl.version}/binary-ecl/maxima.fas'
+    export MAXIMA_PREFIX="${maxima-ecl}"
+    export CONWAY_POLYNOMIALS_DATA_DIR='${conway_polynomials}/share/conway_polynomials'
+    export GRAPHS_DATA_DIR='${graphs}/share/graphs'
+    export ELLCURVE_DATA_DIR='${elliptic_curves}/share/ellcurves'
+    export POLYTOPE_DATA_DIR='${polytopes_db}/share/reflexive_polytopes'
+    export GAP_ROOT_DIR='${gap}/share/gap/build-dir'
+    export ECLDIR='${ecl}/lib/ecl-${ecl.version}/'
+    export COMBINATORIAL_DESIGN_DATA_DIR="${combinatorial_designs}/share/combinatorial_designs"
+    export CREMONA_MINI_DATA_DIR="${elliptic_curves}/share/cremona"
+    export JMOL_DIR="${jmol}/share/jmol" # point to the directory that contains JmolData.jar
+    export JSMOL_DIR="${jmol}/share/jsmol"
+    export MATHJAX_DIR="${mathjax}/lib/node_modules/mathjax"
+    export THREEJS_DIR="${three}/lib/node_modules/three"
+    export SAGE_INCLUDE_DIRECTORIES="${cysignals}/lib/python2.7/site-packages"
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/science/math/sage/flask-oldsessions.nix b/nixpkgs/pkgs/applications/science/math/sage/flask-oldsessions.nix
new file mode 100644
index 000000000000..403dc8708fab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/flask-oldsessions.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, python
+, flask
+}:
+
+buildPythonPackage rec {
+  pname = "Flask-OldSessions";
+  version = "0.10";
+
+  # no artifact on pypi: https://github.com/mitsuhiko/flask-oldsessions/issues/1
+  src = fetchFromGitHub {
+    owner = "mitsuhiko";
+    repo = "flask-oldsessions";
+    rev = version;
+    sha256 = "04b5m8njjiwld9a0zw55iqwvyjgwcpdbhz1cic8nyhgcmypbicqn";
+  };
+
+  propagatedBuildInputs = [
+    flask
+  ];
+
+  # missing module flask.testsuite, probably assumes an old version of flask
+  doCheck = false;
+  checkPhase = ''
+    ${python.interpreter} run-tests.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Provides a session class that works like the one in Flask before 0.10.";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ timokau ];
+    homepage = "https://github.com/mitsuhiko/flask-oldsessions";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/sage/flask-openid.nix b/nixpkgs/pkgs/applications/science/math/sage/flask-openid.nix
new file mode 100644
index 000000000000..527173dec80a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/flask-openid.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, flask
+, python-openid
+}:
+
+buildPythonPackage rec {
+  pname = "Flask-OpenID";
+  version = "1.2.5";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1aycwmwi7ilcaa5ab8hm0bp6323zl8z25q9ha0gwrl8aihfgx3ss";
+  };
+
+  propagatedBuildInputs = [
+    flask
+    python-openid
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Adds openid support to flask applications";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ timokau ];
+    homepage = "https://pythonhosted.org/Flask-OpenID/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/sage/patches/Only-test-py2-py3-optional-tests-when-all-of-sage-is.patch b/nixpkgs/pkgs/applications/science/math/sage/patches/Only-test-py2-py3-optional-tests-when-all-of-sage-is.patch
new file mode 100644
index 000000000000..8cd80281d0e4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/patches/Only-test-py2-py3-optional-tests-when-all-of-sage-is.patch
@@ -0,0 +1,35 @@
+From 8218bd4fdeb4c92de8af0d3aabec55980fc4fb3d Mon Sep 17 00:00:00 2001
+From: Timo Kaufmann <timokau@zoho.com>
+Date: Sun, 21 Oct 2018 17:52:40 +0200
+Subject: [PATCH] Only test py2/py3 optional tests when all of sage is tested
+
+---
+ src/sage/doctest/control.py | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/sage/doctest/control.py b/src/sage/doctest/control.py
+index bf18df8b2b..935c67abf7 100644
+--- a/src/sage/doctest/control.py
++++ b/src/sage/doctest/control.py
+@@ -362,7 +362,8 @@ class DocTestController(SageObject):
+                     if not optionaltag_regex.search(o):
+                         raise ValueError('invalid optional tag {!r}'.format(o))
+ 
+-                options.optional |= auto_optional_tags
++                if "sage" in options.optional:
++                    options.optional |= auto_optional_tags
+ 
+         self.options = options
+ 
+@@ -765,7 +766,7 @@ class DocTestController(SageObject):
+             sage: DC = DocTestController(DD, [dirname])
+             sage: DC.expand_files_into_sources()
+             sage: sorted(DC.sources[0].options.optional)  # abs tol 1
+-            ['guava', 'magma', 'py2']
++            ['guava', 'magma']
+ 
+         We check that files are skipped appropriately::
+ 
+-- 
+2.18.1
+
diff --git a/nixpkgs/pkgs/applications/science/math/sage/patches/configurationpy-error-verbose.patch b/nixpkgs/pkgs/applications/science/math/sage/patches/configurationpy-error-verbose.patch
new file mode 100644
index 000000000000..e687281ad1a7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/patches/configurationpy-error-verbose.patch
@@ -0,0 +1,19 @@
+diff --git a/src/sage/repl/configuration.py b/src/sage/repl/configuration.py
+index 67d7d2accf..18279581e2 100644
+--- a/src/sage/repl/configuration.py
++++ b/src/sage/repl/configuration.py
+@@ -9,10 +9,11 @@ the IPython simple prompt is being used::
+     sage: cmd = 'print([sys.stdin.isatty(), sys.stdout.isatty()])'
+     sage: import pexpect
+     sage: output = pexpect.run(
+-    ....:     'bash -c \'echo "{0}" | sage\''.format(cmd),
++    ....:     'bash -c \'export SAGE_BANNER=no; echo "{0}" | sage\''.format(cmd),
+     ....: ).decode('utf-8', 'surrogateescape')
+-    sage: 'sage: [False, True]' in output
+-    True
++    sage: print(output)
++    sage...[False, True]
++    sage...Exiting Sage ...
+ """
+ 
+ #*****************************************************************************
diff --git a/nixpkgs/pkgs/applications/science/math/sage/patches/do-not-test-find-library.patch b/nixpkgs/pkgs/applications/science/math/sage/patches/do-not-test-find-library.patch
new file mode 100644
index 000000000000..3f844e1b1ef5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/patches/do-not-test-find-library.patch
@@ -0,0 +1,95 @@
+diff --git a/src/sage/env.py b/src/sage/env.py
+index 061b94f3f1..67cd091540 100644
+--- a/src/sage/env.py
++++ b/src/sage/env.py
+@@ -189,88 +189,13 @@ var('MAXIMA_FAS')
+ var('SAGE_BANNER', '')
+ var('SAGE_IMPORTALL', 'yes')
+ 
+-
+-def _get_shared_lib_filename(libname, *additional_libnames):
+-    """
+-    Return the full path to a shared library file installed in the standard
+-    location for the system within the ``LIBDIR`` prefix (or
+-    ``$SAGE_LOCAL/lib`` in the case of manual build of Sage).
+-
+-    This can also be passed more than one library name (e.g. for cases where
+-    some library may have multiple names depending on the platform) in which
+-    case the first one found is returned.
+-
+-    This supports most *NIX variants (in which ``lib<libname>.so`` is found
+-    under ``$SAGE_LOCAL/lib``), macOS (same, but with the ``.dylib``
+-    extension), and Cygwin (under ``$SAGE_LOCAL/bin/cyg<libname>.dll``,
+-    or ``$SAGE_LOCAL/bin/cyg<libname>-*.dll`` for versioned DLLs).
+-
+-    For distributions like Debian that use a multiarch layout, we also try the
+-    multiarch lib paths (i.e. ``/usr/lib/<arch>/``).
+-
+-    Returns ``None`` if the file does not exist.
+-
+-    EXAMPLES::
+-
+-        sage: import sys
+-        sage: from fnmatch import fnmatch
+-        sage: from sage.env import _get_shared_lib_filename
+-        sage: lib_filename = _get_shared_lib_filename("Singular",
+-        ....:                                         "singular-Singular")
+-        sage: if sys.platform == 'cygwin':
+-        ....:     pattern = "*/cygSingular-*.dll"
+-        ....: elif sys.platform == 'darwin':
+-        ....:     pattern = "*/libSingular.dylib"
+-        ....: else:
+-        ....:     pattern = "*/lib*Singular.so"
+-        sage: fnmatch(lib_filename, pattern)
+-        True
+-        sage: _get_shared_lib_filename("an_absurd_lib") is None
+-        True
+-    """
+-
+-    for libname in (libname,) + additional_libnames:
+-        if sys.platform == 'cygwin':
+-            bindir = sysconfig.get_config_var('BINDIR')
+-            pats = ['cyg{}.dll'.format(libname), 'cyg{}-*.dll'.format(libname)]
+-            filenames = []
+-            for pat in pats:
+-                filenames += glob.glob(os.path.join(bindir, pat))
+-
+-            # Note: This is not very robust, since if there are multi DLL
+-            # versions for the same library this just selects one more or less
+-            # at arbitrary.  However, practically speaking, on Cygwin, there
+-            # will only ever be one version
+-            if filenames:
+-                return filenames[-1]
+-        else:
+-            if sys.platform == 'darwin':
+-                ext = 'dylib'
+-            else:
+-                ext = 'so'
+-
+-            libdirs = [sysconfig.get_config_var('LIBDIR')]
+-            multilib = sysconfig.get_config_var('MULTILIB')
+-            if multilib:
+-                libdirs.insert(0, os.path.join(libdirs[0], multilib))
+-
+-            for libdir in libdirs:
+-                basename = 'lib{}.{}'.format(libname, ext)
+-                filename = os.path.join(libdir, basename)
+-                if os.path.exists(filename):
+-                    return filename
+-
+-    # Just return None if no files were found
+-    return None
+-
+-
+ # locate singular shared object
+ # On Debian it's libsingular-Singular so try that as well
+-SINGULAR_SO = _get_shared_lib_filename('Singular', 'singular-Singular')
++SINGULAR_SO = '/default'
+ var('SINGULAR_SO', SINGULAR_SO)
+ 
+ # locate libgap shared object
+-GAP_SO= _get_shared_lib_filename('gap','')
++GAP_SO= '/default'
+ var('GAP_SO', GAP_SO)
+ 
+ # post process
diff --git a/nixpkgs/pkgs/applications/science/math/sage/patches/docutils-0.15.patch b/nixpkgs/pkgs/applications/science/math/sage/patches/docutils-0.15.patch
new file mode 100644
index 000000000000..63f5d2e146dd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/patches/docutils-0.15.patch
@@ -0,0 +1,24 @@
+diff --git a/src/sage/misc/sphinxify.py b/src/sage/misc/sphinxify.py
+index 4849c2bffa..76b7bc8602 100644
+--- a/src/sage/misc/sphinxify.py
++++ b/src/sage/misc/sphinxify.py
+@@ -25,6 +25,7 @@ from __future__ import absolute_import, print_function
+ import os
+ import re
+ import shutil
++import warnings
+ from tempfile import mkdtemp
+ from sphinx.application import Sphinx
+ 
+@@ -120,7 +121,10 @@ smart_quotes = no""")
+     # buildername, confoverrides, status, warning, freshenv).
+     sphinx_app = Sphinx(srcdir, confdir, outdir, doctreedir, format,
+                         confoverrides, None, None, True)
+-    sphinx_app.build(None, [rst_name])
++    with warnings.catch_warnings():
++        # Quick and dirty workaround for https://trac.sagemath.org/ticket/28856#comment:19
++        warnings.simplefilter("ignore")
++        sphinx_app.build(None, [rst_name])
+     sys.path = old_sys_path
+ 
+     # We need to remove "_" from __builtin__ that the gettext module installs
diff --git a/nixpkgs/pkgs/applications/science/math/sage/patches/fix-ecl-race.patch b/nixpkgs/pkgs/applications/science/math/sage/patches/fix-ecl-race.patch
new file mode 100644
index 000000000000..6056416c3a28
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/patches/fix-ecl-race.patch
@@ -0,0 +1,19 @@
+diff --git a/src/sage/doctest/forker.py b/src/sage/doctest/forker.py
+index 02e18e67e7..2ebf6eb35f 100644
+--- a/src/sage/doctest/forker.py
++++ b/src/sage/doctest/forker.py
+@@ -1075,6 +1075,14 @@ class SageDocTestRunner(doctest.DocTestRunner, object):
+             sage: set(ex2.predecessors) == set([ex0,ex1])
+             True
+         """
++
++        # Fix ECL dir race conditions by using a separate dir for each process
++        # (https://trac.sagemath.org/ticket/26968)
++        os.environ['MAXIMA_USERDIR'] = "{}/sage-maxima-{}".format(
++            tempfile.gettempdir(),
++            os.getpid()
++        )
++
+         if isinstance(globs, RecordingDict):
+             globs.start()
+         example.sequence_number = len(self.history)
diff --git a/nixpkgs/pkgs/applications/science/math/sage/patches/ignore-cmp-deprecation.patch b/nixpkgs/pkgs/applications/science/math/sage/patches/ignore-cmp-deprecation.patch
new file mode 100644
index 000000000000..11ca74819615
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/patches/ignore-cmp-deprecation.patch
@@ -0,0 +1,24 @@
+diff --git a/src/sage/tests/cmdline.py b/src/sage/tests/cmdline.py
+index bd6b76ab82..ccf1203dec 100644
+--- a/src/sage/tests/cmdline.py
++++ b/src/sage/tests/cmdline.py
+@@ -837,8 +837,6 @@ def test_executable(args, input="", timeout=100.0, **kwds):
+         ///
+         4
+         }}}
+-        sage: err # py2
+-        ''
+         sage: ret
+         0
+ 
+@@ -871,8 +869,8 @@ def test_executable(args, input="", timeout=100.0, **kwds):
+         sage: output = tmp_filename(ext='.sws')
+         sage: with open(input, 'w') as F:
+         ....:     _ = F.write(s)
+-        sage: test_executable(["sage", "--rst2sws", input, output]) # py2
+-        ('', '', 0)
++        sage: test_executable(["sage", "--rst2sws", input, output])[2] # py2
++        0
+         sage: import tarfile # py2
+         sage: f = tarfile.open(output, 'r') # py2
+         sage: print(f.extractfile('sage_worksheet/worksheet.html').read()) # py2
diff --git a/nixpkgs/pkgs/applications/science/math/sage/patches/ignore-werkzeug-immutable-dict-deprecation.patch b/nixpkgs/pkgs/applications/science/math/sage/patches/ignore-werkzeug-immutable-dict-deprecation.patch
new file mode 100644
index 000000000000..c5f95b498d53
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/patches/ignore-werkzeug-immutable-dict-deprecation.patch
@@ -0,0 +1,12 @@
+diff --git a/src/sage/all.py b/src/sage/all.py
+index c87c9372e9..862fca4fcc 100644
+--- a/src/sage/all.py
++++ b/src/sage/all.py
+@@ -306,6 +306,7 @@ warnings.filters.remove(('ignore', None, DeprecationWarning, None, 0))
+ # Ignore all deprecations from IPython etc.
+ warnings.filterwarnings('ignore', category=DeprecationWarning,
+     module='.*(IPython|ipykernel|jupyter_client|jupyter_core|nbformat|notebook|ipywidgets|storemagic)')
++warnings.filterwarnings('ignore', category=DeprecationWarning, message=r".*The import 'werkzeug.ImmutableDict' is deprecated")
+ # Ignore collections.abc warnings, there are a lot of them but they are
+ # harmless.
+ warnings.filterwarnings('ignore', category=DeprecationWarning,
diff --git a/nixpkgs/pkgs/applications/science/math/sage/patches/pari-stackwarn.patch b/nixpkgs/pkgs/applications/science/math/sage/patches/pari-stackwarn.patch
new file mode 100644
index 000000000000..49cdfd189b92
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/patches/pari-stackwarn.patch
@@ -0,0 +1,20 @@
+diff --git a/src/sage/doctest/parsing.py b/src/sage/doctest/parsing.py
+index 6bdc9a0..31fc780 100644
+--- a/src/sage/doctest/parsing.py
++++ b/src/sage/doctest/parsing.py
+@@ -40,6 +40,7 @@ from .external import available_software
+ 
+ float_regex = re.compile('\s*([+-]?\s*((\d*\.?\d+)|(\d+\.?))([eE][+-]?\d+)?)')
+ optional_regex = re.compile(r'(py2|py3|long time|not implemented|not tested|known bug)|([^ a-z]\s*optional\s*[:-]*((\s|\w)*))')
++pari_stack_warning_regex = re.compile(r'\s*\*\*\*.*(Warning: increasing stack size to )\d+\.')
+ find_sage_prompt = re.compile(r"^(\s*)sage: ", re.M)
+ find_sage_continuation = re.compile(r"^(\s*)\.\.\.\.:", re.M)
+ random_marker = re.compile('.*random', re.I)
+@@ -935,6 +936,7 @@ class SageOutputChecker(doctest.OutputChecker):
+             <type 'float'>
+         """
+         got = self.human_readable_escape_sequences(got)
++        got = pari_stack_warning_regex.sub('', got)
+         if isinstance(want, MarkedOutput):
+             if want.random:
+                 return True
diff --git a/nixpkgs/pkgs/applications/science/math/sage/patches/python-5755-hotpatch.patch b/nixpkgs/pkgs/applications/science/math/sage/patches/python-5755-hotpatch.patch
new file mode 100644
index 000000000000..1b64f39fe60f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/patches/python-5755-hotpatch.patch
@@ -0,0 +1,28 @@
+diff --git a/src/sage/all.py b/src/sage/all.py
+index ca309ef..be3186b 100644
+--- a/src/sage/all.py
++++ b/src/sage/all.py
+@@ -298,6 +298,23 @@ warnings.filterwarnings('ignore', module='matplotlib[.]font_manager')
+ warnings.filterwarnings('default',
+     '[\s\S]*See http://trac.sagemath.org/[0-9]* for details.')
+ 
++# Hotpatch around https://bugs.python.org/issue5755 which won't be fixed for
++# python 2.7. Idea by https://stackoverflow.com/a/36293331.
++from distutils.command.build_ext import build_ext
++from distutils.sysconfig import customize_compiler
++
++_build_extensions = build_ext.build_extensions
++
++def build_extensions_patched(self):
++    customize_compiler(self.compiler)
++    try:
++        self.compiler.compiler_so.remove("-Wstrict-prototypes")
++    except (AttributeError, ValueError):
++        pass
++    _build_extensions(self)
++
++build_ext.build_extensions = build_extensions_patched
++
+ 
+ # Set a new random number seed as the very last thing
+ # (so that printing initial_seed() and using that seed
diff --git a/nixpkgs/pkgs/applications/science/math/sage/patches/sagenb-cmp-deprecation.patch b/nixpkgs/pkgs/applications/science/math/sage/patches/sagenb-cmp-deprecation.patch
new file mode 100644
index 000000000000..9f502a669517
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/patches/sagenb-cmp-deprecation.patch
@@ -0,0 +1,13 @@
+diff --git a/sagenb/__init__.py b/sagenb/__init__.py
+index 4db0d2cb..2fc5f01e 100644
+--- a/sagenb/__init__.py
++++ b/sagenb/__init__.py
+@@ -1,3 +1,8 @@
+ # -*- coding: utf-8 -*
+   # init
++import warnings
+ from . import storage
++
++# deprecation in attrs, needs to be fixed in twisted
++warnings.filterwarnings('ignore', category=DeprecationWarning,
++    message=r'The usage of `cmp` is deprecated and will be removed.*')
diff --git a/nixpkgs/pkgs/applications/science/math/sage/patches/sphinx-docbuild-subprocesses.patch b/nixpkgs/pkgs/applications/science/math/sage/patches/sphinx-docbuild-subprocesses.patch
new file mode 100644
index 000000000000..56f092796229
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/patches/sphinx-docbuild-subprocesses.patch
@@ -0,0 +1,58 @@
+diff --git a/src/sage_setup/docbuild/__init__.py b/src/sage_setup/docbuild/__init__.py
+index 73a078e619..059125c59f 100644
+--- a/src/sage_setup/docbuild/__init__.py
++++ b/src/sage_setup/docbuild/__init__.py
+@@ -86,27 +86,6 @@ def builder_helper(type):
+     """
+     Returns a function which builds the documentation for
+     output type ``type``.
+-
+-    TESTS:
+-
+-    Check that :trac:`25161` has been resolved::
+-
+-        sage: from sage_setup.docbuild import DocBuilder, setup_parser
+-        sage: DocBuilder._options = setup_parser().parse_args([])[0] # builder_helper needs _options to be set
+-
+-        sage: import sage_setup.docbuild.sphinxbuild
+-        sage: def raiseBaseException():
+-        ....:     raise BaseException("abort pool operation")
+-        sage: original_runsphinx, sage_setup.docbuild.sphinxbuild.runsphinx = sage_setup.docbuild.sphinxbuild.runsphinx, raiseBaseException
+-
+-        sage: from sage_setup.docbuild import builder_helper, build_ref_doc
+-        sage: from sage_setup.docbuild import _build_many as build_many
+-        sage: helper = builder_helper("html")
+-        sage: try:
+-        ....:     build_many(build_ref_doc, [("docname", "en", "html", {})])
+-        ....: except Exception as E:
+-        ....:     "Non-exception during docbuild: abort pool operation" in str(E)
+-        True
+     """
+     def f(self, *args, **kwds):
+         output_dir = self._output_dir(type)
+@@ -128,10 +107,9 @@ def builder_helper(type):
+         logger.debug(build_command)
+ 
+         # Run Sphinx with Sage's special logger
+-        sys.argv = ["sphinx-build"] + build_command.split()
+-        from .sphinxbuild import runsphinx
++        args = "python -um sage_setup.docbuild.sphinxbuild -N".split() + build_command.split()
+         try:
+-            runsphinx()
++            subprocess.check_call(args)
+         except Exception:
+             if ABORT_ON_ERROR:
+                 raise
+diff --git a/src/sage_setup/docbuild/sphinxbuild.py b/src/sage_setup/docbuild/sphinxbuild.py
+index fe7eba43b2..463790965c 100644
+--- a/src/sage_setup/docbuild/sphinxbuild.py
++++ b/src/sage_setup/docbuild/sphinxbuild.py
+@@ -321,3 +321,8 @@ def runsphinx():
+         sys.stderr = saved_stderr
+         sys.stdout.flush()
+         sys.stderr.flush()
++
++if __name__ == '__main__':
++    import sys
++    sys.argv[0] = "sphinx-build"
++    runsphinx()
diff --git a/nixpkgs/pkgs/applications/science/math/sage/patches/sympow-cache.patch b/nixpkgs/pkgs/applications/science/math/sage/patches/sympow-cache.patch
new file mode 100644
index 000000000000..20020d610f80
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/patches/sympow-cache.patch
@@ -0,0 +1,21 @@
+diff --git a/src/sage/lfunctions/sympow.py b/src/sage/lfunctions/sympow.py
+index 1640ac4f6a..03578be7b8 100644
+--- a/src/sage/lfunctions/sympow.py
++++ b/src/sage/lfunctions/sympow.py
+@@ -50,6 +50,7 @@ from __future__ import print_function, absolute_import
+ 
+ import os
+ 
++from sage.env import DOT_SAGE
+ from sage.structure.sage_object import SageObject
+ from sage.misc.all import pager, verbose
+ import sage.rings.all
+@@ -76,7 +77,7 @@ class Sympow(SageObject):
+         """
+         Used to call sympow with given args
+         """
+-        cmd = 'sympow %s'%args
++        cmd = 'env SYMPOW_CACHEDIR="%s/sympow///" sympow %s' % (DOT_SAGE, args)
+         v = os.popen(cmd).read().strip()
+         verbose(v, level=2)
+         return v
diff --git a/nixpkgs/pkgs/applications/science/math/sage/pybrial.nix b/nixpkgs/pkgs/applications/science/math/sage/pybrial.nix
new file mode 100644
index 000000000000..718414126ae8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/pybrial.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, fetchFromGitHub
+, buildPythonPackage
+, brial
+}:
+# This has a cyclic dependency with sage. I don't include sage in the
+# buildInputs and let python figure it out at runtime. Because of this,
+# I don't include the package in the main nipxkgs tree. It wouldn't be useful
+# outside of sage anyways (as you could just directly depend on sage and use
+# it).
+buildPythonPackage rec {
+    pname = "pyBRiAl";
+    version = brial.version;
+
+    # included with BRiAl source
+    src = brial.src;
+
+    sourceRoot = "source/sage-brial";
+
+    meta = with stdenv.lib; {
+      description = "python implementation of BRiAl";
+      license = licenses.gpl2;
+      maintainers = with maintainers; [ timokau ];
+    };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/sage/python-openid.nix b/nixpkgs/pkgs/applications/science/math/sage/python-openid.nix
new file mode 100644
index 000000000000..4c7fdadadaf0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/python-openid.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, django
+, nose
+, twill
+, pycrypto
+}:
+
+buildPythonPackage rec {
+  pname = "python-openid";
+  version = "2.2.5";
+
+  disabled = isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1vvhxlghjan01snfdc4k7ykd80vkyjgizwgg9bncnin8rqz1ricj";
+  };
+
+  propagatedBuildInputs = [
+    pycrypto
+  ];
+
+  # Cannot access the djopenid example module.
+  # I don't know how to fix that (adding the examples dir to PYTHONPATH doesn't work)
+  doCheck = false;
+  checkInputs = [ nose django twill ];
+  checkPhase = ''
+    nosetests
+  '';
+
+  meta = with stdenv.lib; {
+    description = "OpenID library for Python";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ timokau ];
+    homepage = "https://github.com/openid/python-openid/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/sage/sage-env.nix b/nixpkgs/pkgs/applications/science/math/sage/sage-env.nix
new file mode 100644
index 000000000000..626e1bf1ea92
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/sage-env.nix
@@ -0,0 +1,187 @@
+{ stdenv
+, lib
+, writeTextFile
+, python
+, sagelib
+, env-locations
+, gfortran
+, bash
+, coreutils
+, gnused
+, gnugrep
+, binutils
+, pythonEnv
+, python3
+, pkg-config
+, pari
+, gap
+, ecl
+, maxima-ecl
+, singular
+, fflas-ffpack
+, givaro
+, gd
+, libpng
+, linbox
+, m4ri
+, giac
+, palp
+, rWrapper
+, gfan
+, cddlib
+, jmol
+, tachyon
+, glpk
+, eclib
+, sympow
+, nauty
+, sqlite
+, ppl
+, ecm
+, lcalc
+, rubiks
+, flintqs
+, blas
+, lapack
+, flint
+, gmp
+, mpfr
+, pynac
+, zlib
+, gsl
+, ntl
+, jdk
+, less
+}:
+
+assert (!blas.isILP64) && (!lapack.isILP64);
+
+# This generates a `sage-env` shell file that will be sourced by sage on startup.
+# It sets up various environment variables, telling sage where to find its
+# dependencies.
+
+let
+  runtimepath = (lib.makeBinPath ([
+    "@sage-local@"
+    "@sage-local@/build"
+    pythonEnv
+    # empty python env to add python wrapper that clears PYTHONHOME (see
+    # wrapper.nix). This is necessary because sage will call the python3 binary
+    # (from python2 code). The python2 PYTHONHOME (again set in wrapper.nix)
+    # will then confuse python3, if it is not overwritten.
+    python3.buildEnv
+    gfortran # for inline fortran
+    stdenv.cc # for cython
+    bash
+    coreutils
+    gnused
+    gnugrep
+    binutils.bintools
+    pkg-config
+    pari
+    gap
+    ecl
+    maxima-ecl
+    singular
+    giac
+    palp
+    # needs to be rWrapper since the default `R` doesn't include R's default libraries
+    rWrapper
+    gfan
+    cddlib
+    jmol
+    tachyon
+    glpk
+    eclib
+    sympow
+    nauty
+    sqlite
+    ppl
+    ecm
+    lcalc
+    rubiks
+    flintqs
+    jdk # only needed for `jmol` which may be replaced in the future
+    less # needed to prevent transient test errors until https://github.com/ipython/ipython/pull/11864 is resolved
+  ]
+  ));
+in
+writeTextFile rec {
+  name = "sage-env";
+  destination = "/${name}";
+  text = ''
+    export PKG_CONFIG_PATH='${lib.makeSearchPathOutput "dev" "lib/pkgconfig" [
+        # This should only be needed during build. However, since the  doctests
+        # also test the cython build (for example in src/sage/misc/cython.py),
+        # it is also needed for the testsuite to pass. We could fix the
+        # testsuite instead, but since all the packages are also runtime
+        # dependencies it doesn't really hurt to include them here.
+        singular
+        blas lapack
+        fflas-ffpack givaro
+        gd
+        libpng zlib
+        gsl
+        linbox
+        m4ri
+      ]
+    }'
+    export SAGE_ROOT='${sagelib.src}'
+    export SAGE_LOCAL='@sage-local@'
+    export SAGE_SHARE='${sagelib}/share'
+    orig_path="$PATH"
+    export PATH='${runtimepath}'
+
+    # set dependent vars, like JUPYTER_CONFIG_DIR
+    source "${sagelib.src}/src/bin/sage-env"
+    export PATH="$RUNTIMEPATH_PREFIX:${runtimepath}:$orig_path" # sage-env messes with PATH
+
+    export SAGE_LOGS="$TMPDIR/sage-logs"
+    export SAGE_DOC="''${SAGE_DOC_OVERRIDE:-doc-placeholder}"
+    export SAGE_DOC_SRC="''${SAGE_DOC_SRC_OVERRIDE:-${sagelib.src}/src/doc}"
+
+    # set locations of dependencies
+    . ${env-locations}/sage-env-locations
+
+    # needed for cython
+    export CC='${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc'
+    # cython needs to find these libraries, otherwise will fail with `ld: cannot find -lflint` or similar
+    export LDFLAGS='${
+      lib.concatStringsSep " " (map (pkg: "-L${pkg}/lib") [
+        flint
+        gap
+        glpk
+        gmp
+        mpfr
+        pari
+        pynac
+        zlib
+        eclib
+        gsl
+        ntl
+        jmol
+        sympow
+      ])
+    }'
+    export CFLAGS='${
+      lib.concatStringsSep " " (map (pkg: "-isystem ${pkg}/include") [
+        singular
+        gmp.dev
+        glpk
+        flint
+        gap
+        pynac
+        mpfr.dev
+      ])
+    }'
+
+    export SAGE_LIB='${sagelib}/${python.sitePackages}'
+
+    export SAGE_EXTCODE='${sagelib.src}/src/ext'
+
+  # for find_library
+    export DYLD_LIBRARY_PATH="${lib.makeLibraryPath [stdenv.cc.libc singular]}''${DYLD_LIBRARY_PATH:+:}$DYLD_LIBRARY_PATH"
+  '';
+} // {
+  lib = sagelib; # equivalent of `passthru`, which `writeTextFile` doesn't support
+}
diff --git a/nixpkgs/pkgs/applications/science/math/sage/sage-src.nix b/nixpkgs/pkgs/applications/science/math/sage/sage-src.nix
new file mode 100644
index 000000000000..4791d12450a9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/sage-src.nix
@@ -0,0 +1,179 @@
+{ stdenv
+, fetchFromGitHub
+, fetchpatch
+, runtimeShell
+}:
+
+# This file is responsible for fetching the sage source and adding necessary patches.
+# It does not actually build anything, it just copies the patched sources to $out.
+# This is done because multiple derivations rely on these sources and they should
+# all get the same sources with the same patches applied.
+
+stdenv.mkDerivation rec {
+  version = "8.9";
+  pname = "sage-src";
+
+  src = fetchFromGitHub {
+    owner = "sagemath";
+    repo = "sage";
+    rev = version;
+    sha256 = "1bwga58x3s8z42w5h51c232f91ndsc1861dlb1glhax3pn0rhn3a";
+  };
+
+  # Patches needed because of particularities of nix or the way this is packaged.
+  # The goal is to upstream all of them and get rid of this list.
+  nixPatches = [
+    # https://trac.sagemath.org/ticket/25358
+    (fetchpatch {
+      name = "safe-directory-test-without-patch.patch";
+      url = "https://git.sagemath.org/sage.git/patch?id2=8bdc326ba57d1bb9664f63cf165a9e9920cc1afc&id=dc673c17555efca611f68398d5013b66e9825463";
+      sha256 = "1hhannz7xzprijakn2w2d0rhd5zv2zikik9p51i87bas3nc658f7";
+    })
+    
+    # `is_unitary` test in `matrix_double_dense.pyx` fails with some BLAS implementations
+    # https://trac.sagemath.org/ticket/29297 should be included in 9.1
+    (fetchpatch {
+      name = "is_unitary-special-case.patch";
+      url = "https://git.sagemath.org/sage.git/patch?id=cc3eb9ffa991e328b09028d32aab7e7cc2ddbb6a";
+      sha256 = "0jq4w8hnp5c9q99011ldr4n3knvm1rx2g85z0hidv3i9x868p0ay";
+    })
+
+    # Unfortunately inclusion in upstream sage was rejected. Instead the bug was
+    # fixed in python, but of course not backported to 2.7. So we'll probably
+    # have to keep this around until 2.7 is deprecated.
+    # https://trac.sagemath.org/ticket/25316
+    # https://github.com/python/cpython/pull/7476
+    ./patches/python-5755-hotpatch.patch
+
+    # Make sure py2/py3 tests are only run when their expected context (all "sage"
+    # tests) are also run. That is necessary to test dochtml individually. See
+    # https://trac.sagemath.org/ticket/26110 for an upstream discussion.
+    ./patches/Only-test-py2-py3-optional-tests-when-all-of-sage-is.patch
+
+    # Fixes a potential race condition which can lead to transient doctest failures.
+    ./patches/fix-ecl-race.patch
+
+    # Not necessary since library location is set explicitly
+    # https://trac.sagemath.org/ticket/27660#ticket
+    ./patches/do-not-test-find-library.patch
+
+    # Parallelize docubuild using subprocesses, fixing an isolation issue. See
+    # https://groups.google.com/forum/#!topic/sage-packaging/YGOm8tkADrE
+    ./patches/sphinx-docbuild-subprocesses.patch
+
+    # Fix doctest failures with docutils 0.15:
+    # https://nix-cache.s3.amazonaws.com/log/dzmzrb2zvardsmpy7idg7djkizmkzdhs-sage-tests-8.9.drv
+    # https://trac.sagemath.org/ticket/28856#comment:19
+    ./patches/docutils-0.15.patch
+  ];
+
+  # Since sage unfortunately does not release bugfix releases, packagers must
+  # fix those bugs themselves. This is for critical bugfixes, where "critical"
+  # == "causes (transient) doctest failures / somebody complained".
+  bugfixPatches = [
+    # To help debug the transient error in
+    # https://trac.sagemath.org/ticket/23087 when it next occurs.
+    ./patches/configurationpy-error-verbose.patch
+  ];
+
+  # Patches needed because of package updates. We could just pin the versions of
+  # dependencies, but that would lead to rebuilds, confusion and the burdons of
+  # maintaining multiple versions of dependencies. Instead we try to make sage
+  # compatible with never dependency versions when possible. All these changes
+  # should come from or be proposed to upstream. This list will probably never
+  # be empty since dependencies update all the time.
+  packageUpgradePatches = let
+    # Fetch a diff between `base` and `rev` on sage's git server.
+    # Used to fetch trac tickets by setting the `base` to the last release and the
+    # `rev` to the last commit of the ticket.
+    fetchSageDiff = { base, rev, name ? "sage-diff-${base}-${rev}.patch", ...}@args: (
+      fetchpatch ({
+        inherit name;
+        url = "https://git.sagemath.org/sage.git/patch?id2=${base}&id=${rev}";
+        # We don't care about sage's own build system (which builds all its dependencies).
+        # Exclude build system changes to avoid conflicts.
+        excludes = [ "build/*" ];
+      } // builtins.removeAttrs args [ "rev" "base" ])
+    );
+  in [
+    # New glpk version has new warnings, filter those out until upstream sage has found a solution
+    # Should be fixed with glpk > 4.65.
+    # https://trac.sagemath.org/ticket/24824
+    ./patches/pari-stackwarn.patch # not actually necessary since the pari upgrade, but necessary for the glpk patch to apply
+    (fetchpatch {
+      url = "https://salsa.debian.org/science-team/sagemath/raw/58bbba93a807ca2933ca317501d093a1bb4b84db/debian/patches/dt-version-glpk-4.65-ignore-warnings.patch";
+      sha256 = "0b9293v73wb4x13wv5zwyjgclc01zn16msccfzzi6znswklgvddp";
+      stripLen = 1;
+    })
+
+    # After updating smypow to (https://trac.sagemath.org/ticket/3360) we can
+    # now set the cache dir to be withing the .sage directory. This is not
+    # strictly necessary, but keeps us from littering in the user's HOME.
+    ./patches/sympow-cache.patch
+
+    # https://trac.sagemath.org/ticket/28472
+    (fetchpatch {
+      name = "eclib-20190909.patch";
+      url = "https://git.sagemath.org/sage.git/patch?id=d27dc479a5772d59e4bc85d805b6ffd595284f1d";
+      sha256 = "1nf1s9y7n30lhlbdnam7sghgaq9nasmv96415gl5jlcf7a3hlxk3";
+    })
+
+    # ignore a deprecation warning for usage of `cmp` in the attrs library in the doctests
+    ./patches/ignore-cmp-deprecation.patch
+
+    # Werkzeug has deprecated ImmutableDict, but it is still used in legacy
+    # sagenb. That's no big issue since sagenb will be removed soon anyways.
+    ./patches/ignore-werkzeug-immutable-dict-deprecation.patch
+
+    # threejs r109 (#28560)
+    (fetchpatch {
+      name = "threejs-r109.patch";
+      url = "https://git.sagemath.org/sage.git/patch?id=fcc11d6effa39f375bc5f4ea5831fb7a2f2767da";
+      sha256 = "0hnmc8ld3bblks0hcjvjjaydkgwdr1cs3dbl2ys4gfq964pjgqwc";
+    })
+
+    # https://trac.sagemath.org/ticket/28911
+    (fetchpatch {
+      name = "sympy-1.5.patch";
+      url = "https://git.sagemath.org/sage.git/patch/?h=c6d0308db15efd611211d26cfcbefbd180fc0831";
+      sha256 = "0nwai2jr22h49km4hx3kwafs3mzsc5kwsv7mqwjf6ibwfx2bbgyq";
+    })
+
+    # https://trac.sagemath.org/ticket/29313 (patch from ArchLinux)
+    (fetchpatch {
+      name = "pari-2.11.3.patch";
+      url = "https://aur.archlinux.org/cgit/aur.git/plain/sagemath-pari-2.11.3.patch?h=sagemath-git&id=02e1d58bd1cd70935d69a4990469d18be6bd2c43";
+      sha256 = "0z07444zvijyw96d11q7j81pvg7ysd6ycf1bbbjr6za9y74hv7d2";
+    })
+  ];
+
+  patches = nixPatches ++ bugfixPatches ++ packageUpgradePatches;
+
+  postPatch = ''
+    # make sure shebangs etc are fixed, but sage-python23 still works
+    find . -type f -exec sed \
+      -e 's/sage-python23/python/g' \
+      -i {} \;
+
+    echo '#!${runtimeShell}
+    python "$@"' > build/bin/sage-python23
+
+    # Make sure sage can at least be imported without setting any environment
+    # variables. It won't be close to feature complete though.
+    sed -i \
+      "s|var('SAGE_LOCAL',.*|var('SAGE_LOCAL', '$out/src')|" \
+      src/sage/env.py
+
+    # Do not use sage-env-config (generated by ./configure).
+    # Instead variables are set manually.
+    echo '# do nothing' >  src/bin/sage-env-config
+  '';
+
+  configurePhase = "# do nothing";
+
+  buildPhase = "# do nothing";
+
+  installPhase = ''
+    cp -r . "$out"
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/science/math/sage/sage-tests.nix b/nixpkgs/pkgs/applications/science/math/sage/sage-tests.nix
new file mode 100644
index 000000000000..451edb8f085e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/sage-tests.nix
@@ -0,0 +1,61 @@
+{ stdenv
+, lib
+, sage-with-env
+, makeWrapper
+, files ? null # "null" means run all tests
+, longTests ? true # run tests marked as "long time" (roughly doubles runtime)
+# Run as many tests as possible in approximately n seconds. This will give each
+# file to test a "time budget" and stop tests if it is exceeded. 300 is the
+# upstream default value.
+# https://trac.sagemath.org/ticket/25270 for details.
+, timeLimit ? null
+}:
+
+# for a quick test of some source files:
+# nix-build -E 'with (import ./. {}); sage.tests.override { files = [ "src/sage/misc/cython.py" ];}'
+
+let
+  src = sage-with-env.env.lib.src;
+  runAllTests = files == null;
+  testArgs = if runAllTests then "--all" else testFileList;
+  patienceSpecifier = if longTests then "--long" else "";
+  timeSpecifier = if timeLimit == null then "" else "--short ${toString timeLimit}";
+  relpathToArg = relpath: lib.escapeShellArg "${src}/${relpath}"; # paths need to be absolute
+  testFileList = lib.concatStringsSep " " (map relpathToArg files);
+in
+stdenv.mkDerivation {
+  version = src.version;
+  pname = "sage-tests";
+  inherit src;
+
+  buildInputs = [
+    makeWrapper
+    sage-with-env
+  ];
+
+  dontUnpack = true;
+  configurePhase = "#do nothing";
+  buildPhase = "#do nothing";
+
+  installPhase = ''
+    # This output is not actually needed for anything, the package just
+    # exists to decouple the sage build from its t ests.
+
+    mkdir -p "$out/bin"
+    # Like a symlink, but make sure that $0 points to the original.
+    makeWrapper "${sage-with-env}/bin/sage" "$out/bin/sage"
+  '';
+
+  doInstallCheck = true;
+  installCheckPhase = ''
+    export HOME="$TMPDIR/sage-home"
+    mkdir -p "$HOME"
+
+    # avoid running out of memory with many threads in subprocesses, see
+    # https://github.com/NixOS/nixpkgs/pull/65802
+    export GLIBC_TUNABLES=glibc.malloc.arena_max=4
+
+    echo "Running sage tests with arguments ${timeSpecifier} ${patienceSpecifier} ${testArgs}"
+    "sage" -t --timeout=0 --nthreads "$NIX_BUILD_CORES" --optional=sage ${timeSpecifier} ${patienceSpecifier} ${testArgs}
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/science/math/sage/sage-with-env.nix b/nixpkgs/pkgs/applications/science/math/sage/sage-with-env.nix
new file mode 100644
index 000000000000..87c1e07f5307
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/sage-with-env.nix
@@ -0,0 +1,137 @@
+{ stdenv
+, lib
+, makeWrapper
+, sage-env
+, blas
+, lapack
+, pkg-config
+, three
+, singular
+, gap
+, giac
+, maxima-ecl
+, pari
+, gmp
+, gfan
+, python2
+, flintqs
+, eclib
+, ntl
+, ecm
+, pynac
+, pythonEnv
+}:
+
+# lots of segfaults with (64 bit) blas
+assert (!blas.isILP64) && (!lapack.isILP64);
+
+# Wrapper that combined `sagelib` with `sage-env` to produce an actually
+# executable sage. No tests are run yet and no documentation is built.
+
+let
+  buildInputs = [
+    pythonEnv # for patchShebangs
+    makeWrapper
+    pkg-config
+    blas lapack
+    singular
+    three
+    pynac
+    giac
+    gap
+    pari
+    gmp
+    gfan
+    maxima-ecl
+    eclib
+    flintqs
+    ntl
+    ecm
+  ];
+
+  # remove python prefix, replace "-" in the name by "_", apply patch_names
+  # python2.7-some-pkg-1.0 -> some_pkg-1.0
+  pkg_to_spkg_name = pkg: patch_names: let
+    parts = lib.splitString "-" pkg.name;
+    # remove python2.7-
+    stripped_parts = if (builtins.head parts) == python2.libPrefix then builtins.tail parts else parts;
+    version = lib.last stripped_parts;
+    orig_pkgname = lib.init stripped_parts;
+    pkgname = patch_names (lib.concatStringsSep "_" orig_pkgname);
+  in pkgname + "-" + version;
+
+
+  # return the names of all dependencies in the transitive closure
+  transitiveClosure = dep:
+  if dep == null then
+    # propagatedBuildInputs might contain null
+    # (although that might be considered a programming error in the derivation)
+    []
+  else
+    [ dep ] ++ (
+      if builtins.hasAttr "propagatedBuildInputs" dep then
+        lib.unique (builtins.concatLists (map transitiveClosure dep.propagatedBuildInputs))
+      else
+      []
+    );
+
+  allInputs = lib.remove null (buildInputs ++ pythonEnv.extraLibs);
+  transitiveDeps = lib.unique (builtins.concatLists (map transitiveClosure allInputs ));
+  # fix differences between spkg and sage names
+  # (could patch sage instead, but this is more lightweight and also works for packages depending on sage)
+  patch_names = builtins.replaceStrings [
+    "zope.interface"
+    "node_three"
+  ] [
+    "zope_interface"
+    "threejs"
+  ];
+  # spkg names (this_is_a_package-version) of all transitive deps
+  input_names = map (dep: pkg_to_spkg_name dep patch_names) transitiveDeps;
+in
+stdenv.mkDerivation rec {
+  version = src.version;
+  pname = "sage-with-env";
+  src = sage-env.lib.src;
+
+  inherit buildInputs;
+
+  configurePhase = "#do nothing";
+
+  buildPhase = ''
+    mkdir installed
+    for pkg in ${lib.concatStringsSep " " input_names}; do
+      touch "installed/$pkg"
+    done
+
+    # threejs version is in format 0.<version>.minor, but sage currently still
+    # relies on installed_packages for the online version of threejs to work
+    # and expects the format r<version>. This is a hotfix for now.
+    # upstream: https://trac.sagemath.org/ticket/26434
+    rm "installed/threejs"*
+    touch "installed/threejs-r${lib.versions.minor three.version}"
+  '';
+
+  installPhase = ''
+    mkdir -p "$out/var/lib/sage"
+    cp -r installed "$out/var/lib/sage"
+
+    mkdir -p "$out/etc"
+    # sage tests will try to create this file if it doesn't exist
+    touch "$out/etc/sage-started.txt"
+
+    mkdir -p "$out/build"
+
+    # the scripts in src/bin will find the actual sage source files using environment variables set in `sage-env`
+    cp -r src/bin "$out/bin"
+    cp -r build/bin "$out/build/bin"
+
+    cp -f '${sage-env}/sage-env' "$out/bin/sage-env"
+    substituteInPlace "$out/bin/sage-env" \
+      --subst-var-by sage-local "$out"
+  '';
+
+  passthru = {
+    env = sage-env;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/sage/sage.nix b/nixpkgs/pkgs/applications/science/math/sage/sage.nix
new file mode 100644
index 000000000000..4fa8ae6270ba
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/sage.nix
@@ -0,0 +1,68 @@
+{ stdenv
+, makeWrapper
+, sage-tests
+, sage-with-env
+, jupyter-kernel-definition
+, jupyter-kernel
+, sagedoc
+, withDoc
+}:
+
+# A wrapper that makes sure sage finds its docs (if they were build) and the
+# jupyter kernel spec.
+
+let
+  # generate kernel spec + default kernels
+  kernel-specs = jupyter-kernel.create {
+    definitions = jupyter-kernel.default // {
+      sagemath = jupyter-kernel-definition;
+    };
+  };
+in
+stdenv.mkDerivation rec {
+  version = src.version;
+  pname = "sage";
+  src = sage-with-env.env.lib.src;
+
+  buildInputs = [
+    makeWrapper
+
+    # This is a hack to make sure sage-tests is evaluated. It doesn't acutally
+    # produce anything of value, it just decouples the tests from the build.
+    sage-tests
+  ];
+
+  dontUnpack = true;
+  configurePhase = "#do nothing";
+  buildPhase = "#do nothing";
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    makeWrapper "${sage-with-env}/bin/sage" "$out/bin/sage" \
+      --set SAGE_DOC_SRC_OVERRIDE "${src}/src/doc" ${
+        stdenv.lib.optionalString withDoc "--set SAGE_DOC_OVERRIDE ${sagedoc}/share/doc/sage"
+      } \
+      --prefix JUPYTER_PATH : "${kernel-specs}"
+  '';
+
+  doInstallCheck = withDoc;
+  installCheckPhase = ''
+    export HOME="$TMPDIR/sage-home"
+    mkdir -p "$HOME"
+    "$out/bin/sage" -c 'browse_sage_doc._open("reference", testing=True)'
+  '';
+
+  passthru = {
+    tests = sage-tests;
+    quicktest = sage-tests.override { longTests = false; timeLimit = 600; }; # as many tests as possible in ~10m
+    doc = sagedoc;
+    lib = sage-with-env.env.lib;
+    kernelspec = jupyter-kernel-definition;
+  };
+
+  meta = with stdenv.lib; {
+    description = "Open Source Mathematics Software, free alternative to Magma, Maple, Mathematica, and Matlab";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ timokau ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/sage/sagedoc.nix b/nixpkgs/pkgs/applications/science/math/sage/sagedoc.nix
new file mode 100644
index 000000000000..bf618fe64f45
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/sagedoc.nix
@@ -0,0 +1,84 @@
+{ stdenv
+, sage-with-env
+, python
+, maxima-ecl
+, tachyon
+, jmol
+, cddlib
+}:
+
+stdenv.mkDerivation rec {
+  version = src.version;
+  pname = "sagedoc";
+  src = sage-with-env.env.lib.src;
+
+
+  # Building the documentation has many dependencies, because all documented
+  # modules are imported and because matplotlib is used to produce plots.
+  buildInputs = [
+    sage-with-env.env.lib
+    python
+    maxima-ecl
+    tachyon
+    jmol
+    cddlib
+  ] ++ (with python.pkgs; [
+    psutil
+    future
+    sphinx
+    sagenb
+    scipy
+    sympy
+    matplotlib
+    pillow
+    networkx
+    ipykernel
+    ipywidgets
+    jupyter_client
+    typing
+    pybrial
+  ]);
+
+  unpackPhase = ''
+    export SAGE_DOC_OVERRIDE="$PWD/share/doc/sage"
+    export SAGE_DOC_SRC_OVERRIDE="$PWD/docsrc"
+
+    cp -r "${src}/src/doc" "$SAGE_DOC_SRC_OVERRIDE"
+    chmod -R 755 "$SAGE_DOC_SRC_OVERRIDE"
+  '';
+
+  buildPhase = ''
+    export SAGE_NUM_THREADS="$NIX_BUILD_CORES"
+    export HOME="$TMPDIR/sage_home"
+    mkdir -p "$HOME"
+
+    # needed to link them in the sage docs using intersphinx
+    export PPLPY_DOCS=${python.pkgs.pplpy.doc}/share/doc/pplpy
+
+    ${sage-with-env}/bin/sage -python -m sage_setup.docbuild \
+      --mathjax \
+      --no-pdf-links \
+      all html
+  '';
+
+  installPhase = ''
+    cd "$SAGE_DOC_OVERRIDE"
+
+    mkdir -p "$out/share/doc/sage"
+    cp -r html "$out"/share/doc/sage
+
+    # Replace duplicated files by symlinks (Gentoo)
+    cd "$out"/share/doc/sage
+    mv html/en/_static{,.tmp}
+    for _dir in `find -name _static` ; do
+          rm -r $_dir
+          ln -s /share/doc/sage/html/en/_static $_dir
+    done
+    mv html/en/_static{.tmp,}
+  '';
+
+  doCheck = true;
+  checkPhase = ''
+    ${sage-with-env}/bin/sage -t --optional=dochtml --all
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/science/math/sage/sagelib.nix b/nixpkgs/pkgs/applications/science/math/sage/sagelib.nix
new file mode 100644
index 000000000000..830d806a8bcd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/sagelib.nix
@@ -0,0 +1,156 @@
+{ sage-src
+, env-locations
+, perl
+, buildPythonPackage
+, arb
+, blas
+, lapack
+, brial
+, cliquer
+, cypari2
+, cysignals
+, cython
+, ecl
+, eclib
+, ecm
+, flint
+, gd
+, givaro
+, glpk
+, gsl
+, iml
+, jinja2
+, lcalc
+, lrcalc
+, gap
+, linbox
+, m4ri
+, m4rie
+, libmpc
+, mpfi
+, ntl
+, numpy
+, pari
+, pkgconfig
+, pkg-config
+, planarity
+, ppl
+, pynac
+, python
+, ratpoints
+, readline
+, rankwidth
+, symmetrica
+, zn_poly
+, fflas-ffpack
+, boost
+, singular
+, pip
+, jupyter_core
+, libhomfly
+, libbraiding
+, gmpy2
+, pplpy
+}:
+
+assert (!blas.isILP64) && (!lapack.isILP64);
+
+# This is the core sage python package. Everything else is just wrappers gluing
+# stuff together. It is not very useful on its own though, since it will not
+# find many of its dependencies without `sage-env`, will not be tested without
+# `sage-tests` and will not have html docs without `sagedoc`.
+
+buildPythonPackage rec {
+  format = "other";
+  version = src.version;
+  pname = "sagelib";
+  src = sage-src;
+
+  nativeBuildInputs = [
+    iml
+    perl
+    jupyter_core
+    pkg-config
+    pip # needed to query installed packages
+  ];
+
+  buildInputs = [
+    gd
+    readline
+    iml
+  ];
+
+  propagatedBuildInputs = [
+    cypari2
+    jinja2
+    numpy
+    pkgconfig
+    boost
+    arb
+    brial
+    cliquer
+    ecl
+    eclib
+    ecm
+    fflas-ffpack
+    flint
+    givaro
+    glpk
+    gsl
+    lcalc
+    gap
+    libmpc
+    linbox
+    lrcalc
+    m4ri
+    m4rie
+    mpfi
+    ntl
+    blas
+    lapack
+    pari
+    planarity
+    ppl
+    pynac
+    rankwidth
+    ratpoints
+    singular
+    symmetrica
+    zn_poly
+    pip
+    cython
+    cysignals
+    libhomfly
+    libbraiding
+    gmpy2
+    pplpy
+  ];
+
+  buildPhase = ''
+    export SAGE_ROOT="$PWD"
+    export SAGE_LOCAL="$SAGE_ROOT"
+    export SAGE_SHARE="$SAGE_LOCAL/share"
+
+    # set locations of dependencies (needed for nbextensions like threejs)
+    . ${env-locations}/sage-env-locations
+
+    export JUPYTER_PATH="$SAGE_LOCAL/jupyter"
+    export PATH="$SAGE_ROOT/build/bin:$SAGE_ROOT/src/bin:$PATH"
+
+    export SAGE_NUM_THREADS="$NIX_BUILD_CORES"
+
+    mkdir -p "$SAGE_SHARE/sage/ext/notebook-ipython"
+    mkdir -p "var/lib/sage/installed"
+
+    source build/bin/sage-dist-helpers
+    cd src
+
+    ${python.interpreter} -u setup.py --no-user-cfg build
+  '';
+
+  installPhase = ''
+    ${python.interpreter} -u setup.py --no-user-cfg install --prefix=$out
+
+    rm -r "$out/${python.sitePackages}/sage/cython_debug"
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/science/math/sage/sagenb.nix b/nixpkgs/pkgs/applications/science/math/sage/sagenb.nix
new file mode 100644
index 000000000000..77b2168ad974
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/sage/sagenb.nix
@@ -0,0 +1,57 @@
+{ stdenv
+, python
+, buildPythonPackage
+, fetchFromGitHub
+, mathjax
+, twisted
+, flask
+, flask-oldsessions
+, flask-openid
+, flask-autoindex
+, flask-babel
+}:
+
+# Has a cyclic dependency with sage (not expressed here) and is not useful outside of sage.
+# Deprecated, hopefully soon to be removed. See
+# https://trac.sagemath.org/ticket/25837
+
+buildPythonPackage rec {
+  pname = "sagenb";
+  version = "1.1.2";
+
+  src = fetchFromGitHub {
+    owner = "sagemath";
+    repo = "sagenb";
+    rev = version;
+    sha256 = "0bxvhr03qh2nsjdfc4pyfiqrn9jhp3vf7irsc9gqx0185jlblbxs";
+  };
+
+  patches = [
+    # cmp deprecation in attrs needs to be handled in twisted
+    ./patches/sagenb-cmp-deprecation.patch
+  ];
+
+  propagatedBuildInputs = [
+    twisted
+    flask
+    flask-oldsessions
+    flask-openid
+    flask-autoindex
+    flask-babel
+  ];
+
+  # tests depend on sage
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Sage Notebook";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ timokau ];
+  };
+
+  # let sagenb use mathjax
+  postInstall = ''
+    mkdir -p "$out/${python.sitePackages}/sagenb/data"
+    ln -s ${mathjax}/lib/node_modules/mathjax "$out/${python.sitePackages}/sagenb/data/mathjax"
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/science/math/scilab-bin/default.nix b/nixpkgs/pkgs/applications/science/math/scilab-bin/default.nix
new file mode 100644
index 000000000000..f9abdee2d148
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/scilab-bin/default.nix
@@ -0,0 +1,104 @@
+{ stdenv, fetchurl, lib, xorg }:
+
+let
+  name = "scilab-bin-${ver}";
+
+  ver = "6.0.2";
+
+  badArch = throw "${name} requires i686-linux or x86_64-linux";
+
+  architecture =
+    if stdenv.hostPlatform.system == "i686-linux" then
+      "i686"
+    else if stdenv.hostPlatform.system == "x86_64-linux" then
+      "x86_64"
+    else
+      badArch;
+in
+stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchurl {
+    url = "https://www.scilab.org/download/${ver}/scilab-${ver}.bin.linux-${architecture}.tar.gz";
+    sha256 =
+      if stdenv.hostPlatform.system == "i686-linux" then
+        "0fgjc2ak3b2qi6yin3fy50qwk2bcj0zbz1h4lyyic9n1n1qcliib"
+      else if stdenv.hostPlatform.system == "x86_64-linux" then
+        "05clcdgry90drirl3swbxn5q36fmgknnhs6h5pr7mmrzfr6r818w"
+      else
+        badArch;
+  };
+
+  libPath = lib.makeLibraryPath [
+    stdenv.cc.cc
+    xorg.libX11
+    xorg.libXext
+    xorg.libXi
+    xorg.libXrender
+    xorg.libXtst
+    xorg.libXxf86vm
+  ];
+
+  phases = [ "unpackPhase" "fixupPhase" "installPhase" ];
+
+  fixupPhase = ''
+    sed -i 's|\$(/bin/|$(|g' bin/scilab
+    sed -i 's|/usr/bin/||g' bin/scilab
+
+    sci="$out/opt/scilab-${ver}"
+    fullLibPath="$sci/lib/scilab:$sci/lib/thirdparty:$libPath"
+    fullLibPath="$fullLibPath:$sci/lib/thirdparty/redist"
+
+    patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+             --set-rpath "$fullLibPath" bin/scilab-bin
+    find . -name '*.so' -type f | while read file; do
+      patchelf --set-rpath "$fullLibPath" "$file" 2>/dev/null
+    done
+  '';
+
+  installPhase = ''
+    mkdir -p "$out/opt/scilab-${ver}"
+    cp -r . "$out/opt/scilab-${ver}/"
+
+    # Create bin/ dir
+    mkdir "$out/bin"
+
+    # Creating executable symlinks
+    ln -s "$out/opt/scilab-${ver}/bin/scilab" "$out/bin/scilab"
+    ln -s "$out/opt/scilab-${ver}/bin/scilab-cli" "$out/bin/scilab-cli"
+    ln -s "$out/opt/scilab-${ver}/bin/scilab-adv-cli" "$out/bin/scilab-adv-cli"
+
+    # Creating desktop config dir
+    mkdir -p "$out/share/applications"
+
+    # Moving desktop config files
+    mv $out/opt/scilab-${ver}/share/applications/*.desktop $out/share/applications
+
+    # Fixing Exec paths and launching each app with a terminal
+    sed -i -e "s|Exec=|Exec=$out/opt/scilab-${ver}/bin/|g" \
+           -e "s|Terminal=.*$|Terminal=true|g" $out/share/applications/*.desktop
+
+    # Moving icons to the appropriate locations
+    for path in $out/opt/scilab-${ver}/share/icons/hicolor/*/*/*
+    do
+      newpath=$(echo $path | sed 's|/opt/scilab-${ver}||g')
+      filename=$(echo $path | sed 's|.*/||g')
+      dir=$(echo $newpath | sed "s|$filename||g")
+      mkdir -p $dir
+      mv $path $newpath
+    done
+
+    # Removing emptied folders
+    rm -rf $out/opt/scilab-${ver}/share/{applications,icons}
+
+    # Moving other share/ folders
+    mv $out/opt/scilab-${ver}/share/{appdata,locale,mime} $out/share
+  '';
+
+  meta = {
+    homepage = "http://www.scilab.org/";
+    description = "Scientific software package for numerical computations (Matlab lookalike)";
+    # see http://www.scilab.org/legal_notice
+    license = "Scilab";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/scilab/default.nix b/nixpkgs/pkgs/applications/science/math/scilab/default.nix
new file mode 100644
index 000000000000..24b3feef51e1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/scilab/default.nix
@@ -0,0 +1,66 @@
+{stdenv, fetchurl, lib, gfortran
+, ncurses
+, withXaw3d ? false
+#, withPVMlib ? false
+, tcl, tk, withTk ? true
+, gtk2, withGtk ? false # working ?
+#, withF2c ? false
+, ocaml, withOCaml ? true
+#, withJava ? false
+#, atlasMath, withAtlas ? false
+, xlibsWrapper, withX ? true
+}:
+
+stdenv.mkDerivation rec {
+  version = "4.1.2";
+  pname = "scilab";
+  src = fetchurl {
+    url = "https://www.scilab.org/download/${version}/${pname}-${version}-src.tar.gz";
+    sha256 = "1adk6jqlj7i3gjklvlf1j3il1nb22axnp4rvwl314an62siih0sc";
+  };
+
+  buildInputs = [gfortran ncurses]
+  ++ lib.optionals withGtk [gtk2]
+  ++ lib.optionals withOCaml [ocaml]
+  ++ lib.optional withX xlibsWrapper
+  ;
+
+
+/*
+  --with-atlas-library=DIR  Atlas library files are in DIR and we use Atlas
+*/
+  configureFlags = [
+    # use gcc C compiler and gnu Fortran compiler (g77 or gfortran)
+    "--with-gcc" "--with-g77"
+    # do not compile with PVM library
+    "--without-pvm"
+    # compile with GTK
+    (stdenv.lib.enableFeature withGtk "gtk")
+    (stdenv.lib.enableFeature withGtk "gtk2")
+    # compile with ocaml
+    (stdenv.lib.withFeature withOCaml "ocaml")
+    # do not compile Java interface
+    "--without-java"
+    # use the X Window System
+    (stdenv.lib.withFeature withX "x")
+    # compile with TCL/TK
+  ] ++ lib.optionals withTk [
+    "--with-tk"
+    "--with-tcl-library=${tcl}/lib"
+    "--with-tcl-include=${tcl}/include"
+    "--with-tk-library=${tk}/lib"
+    "--with-tk-include=${tk}/include"
+  ]    # use Xaw3d widgets given with Scilab
+    ++ lib.optional (!withXaw3d) "--with-local-xaw"
+  ;
+
+  makeFlags = [ "all" ];
+
+  meta = {
+    homepage = "http://www.scilab.org/";
+    description = "Scientific software package for numerical computations (Matlab lookalike)";
+    # see http://www.scilab.org/legal
+    license = "SciLab";
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/scotch/default.nix b/nixpkgs/pkgs/applications/science/math/scotch/default.nix
new file mode 100644
index 000000000000..75a6b2dba68c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/scotch/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, bison, openmpi, flex, zlib}:
+
+stdenv.mkDerivation rec {
+  version = "6.0.4";
+  pname = "scotch";
+  src_name = "scotch_${version}";
+
+  buildInputs = [ bison openmpi flex zlib ];
+
+  src = fetchurl {
+    url = "https://gforge.inria.fr/frs/download.php/file/34618/${src_name}.tar.gz";
+    sha256 = "f53f4d71a8345ba15e2dd4e102a35fd83915abf50ea73e1bf6efe1bc2b4220c7";
+  };
+
+  sourceRoot = "${src_name}/src";
+
+  preConfigure = ''
+    ln -s Make.inc/Makefile.inc.x86-64_pc_linux2 Makefile.inc
+  '';
+
+  buildFlags = [ "scotch ptscotch" ];
+  installFlags = [ "prefix=\${out}" ];
+
+  meta = {
+    description = "Graph and mesh/hypergraph partitioning, graph clustering, and sparse matrix ordering";
+    longDescription = ''
+      Scotch is a software package for graph and mesh/hypergraph partitioning, graph clustering, 
+      and sparse matrix ordering.
+    '';
+    homepage = "http://www.labri.fr/perso/pelegrin/scotch";
+    license = stdenv.lib.licenses.cecill-c;
+    maintainers = [ stdenv.lib.maintainers.bzizou ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/science/math/singular/default.nix b/nixpkgs/pkgs/applications/science/math/singular/default.nix
new file mode 100644
index 000000000000..a8c4f6bb9a09
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/singular/default.nix
@@ -0,0 +1,118 @@
+{ stdenv, fetchurl, gmp, bison, perl, ncurses, readline, coreutils, pkgconfig
+, lib
+, fetchpatch
+, autoreconfHook
+, file
+, flint
+, ntl
+, cddlib
+, enableFactory ? true
+, enableGfanlib ? true
+}:
+
+stdenv.mkDerivation rec {
+  pname = "singular";
+  version = "4.1.1p2";
+
+  src = let
+    # singular sorts its tarballs in directories by base release (without patch version)
+    # for example 4.1.1p1 will be in the directory 4-1-1
+    baseVersion = builtins.head (lib.splitString "p" version);
+    urlVersion = builtins.replaceStrings [ "." ] [ "-" ] baseVersion;
+  in
+  fetchurl {
+    url = "http://www.mathematik.uni-kl.de/ftp/pub/Math/Singular/SOURCES/${urlVersion}/singular-${version}.tar.gz";
+    sha256 = "07x9kri8vl4galik7lr6pscq3c51n8570pyw64i7gbj0m706f7wf";
+  };
+
+  configureFlags = [
+    "--with-ntl=${ntl}"
+  ] ++ lib.optionals enableFactory [
+    "--enable-factory"
+  ] ++ lib.optionals enableGfanlib [
+    "--enable-gfanlib"
+  ];
+
+  postUnpack = ''
+    patchShebangs .
+  '';
+
+  patches = [
+    # NTL error handler was introduced in the library part, preventing users of
+    # the library from implementing their own error handling
+    # https://www.singular.uni-kl.de/forum/viewtopic.php?t=2769
+    (fetchpatch {
+      name = "move_error_handler_out_of_libsingular.patch";
+      # rebased version of https://github.com/Singular/Sources/commit/502cf86d0bb2a96715be6764774b64a69c1ca34c.patch
+      url = "https://git.sagemath.org/sage.git/plain/build/pkgs/singular/patches/singular-ntl-error-handler.patch?h=50b9ae2fd233c30860e1cbb3e63a26f2cc10560a";
+      sha256 = "0vgh4m9zn1kjl0br68n04j4nmn5i1igfn28cph0chnwf7dvr9194";
+    })
+  ];
+
+  # For reference (last checked on commit 75f460d):
+  # https://github.com/Singular/Sources/blob/spielwiese/doc/Building-Singular-from-source.md
+  # https://github.com/Singular/Sources/blob/spielwiese/doc/external-packages-dynamic-modules.md
+  buildInputs = [
+    # necessary
+    gmp
+    # by upstream recommended but optional
+    ncurses
+    readline
+    ntl
+    flint
+  ] ++ lib.optionals enableGfanlib [
+    cddlib
+  ];
+  nativeBuildInputs = [
+    bison
+    perl
+    pkgconfig
+    autoreconfHook
+  ];
+
+  preAutoreconf = ''
+    find . -type f -readable -writable -exec sed \
+      -e 's@/bin/rm@${coreutils}&@g' \
+      -e 's@/bin/uname@${coreutils}&@g' \
+      -e 's@/usr/bin/file@${file}/bin/file@g' \
+      -i '{}' ';'
+  '';
+
+  hardeningDisable = lib.optional stdenv.isi686 "stackprotector";
+
+  # The Makefile actually defaults to `make install` anyway
+  buildPhase = ''
+    # do nothing
+  '';
+
+  installPhase = ''
+    mkdir -p "$out"
+    cp -r Singular/LIB "$out/lib"
+    make install
+
+    # Make sure patchelf picks up the right libraries
+    rm -rf libpolys factory resources omalloc Singular
+  '';
+
+  # simple test to make sure singular starts and finds its libraries
+  doInstallCheck = true;
+  installCheckPhase = ''
+    "$out/bin/Singular" -c 'LIB "freegb.lib"; exit;'
+    if [ $? -ne 0 ]; then
+        echo >&2 "Error loading the freegb library in Singular."
+        exit 1
+    fi
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "A CAS for polynomial computations";
+    maintainers = with maintainers; [ raskin timokau ];
+    # 32 bit x86 fails with some link error: `undefined reference to `__divmoddi4@GCC_7.0.0'`
+    platforms = subtractLists platforms.i686 platforms.unix;
+    license = licenses.gpl3; # Or GPLv2 at your option - but not GPLv4
+    homepage = "http://www.singular.uni-kl.de";
+    downloadPage = "http://www.mathematik.uni-kl.de/ftp/pub/Math/Singular/SOURCES/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/speedcrunch/default.nix b/nixpkgs/pkgs/applications/science/math/speedcrunch/default.nix
new file mode 100644
index 000000000000..4bb39ab73f5f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/speedcrunch/default.nix
@@ -0,0 +1,37 @@
+{ mkDerivation, lib, fetchgit, cmake, qtbase, qttools }:
+
+mkDerivation rec {
+  pname = "speedcrunch";
+  version = "0.12.0";
+
+  src = fetchgit {
+    # the tagging is not standard, so you probably need to check this when updating
+    rev = "refs/tags/release-${version}";
+    url = "https://bitbucket.org/heldercorreia/speedcrunch";
+    sha256 = "0vh7cd1915bjqzkdp3sk25ngy8cq624mkh8c53c5bnzk357kb0fk";
+  };
+
+  buildInputs = [ qtbase qttools ];
+
+  nativeBuildInputs = [ cmake ];
+
+  preConfigure = ''
+    cd src
+  '';
+
+  meta = with lib; {
+    homepage    = "http://speedcrunch.org";
+    license     = licenses.gpl2Plus;
+    description = "A fast power user calculator";
+    longDescription = ''
+      SpeedCrunch is a fast, high precision and powerful desktop calculator.
+      Among its distinctive features are a scrollable display, up to 50 decimal
+      precisions, unlimited variable storage, intelligent automatic completion
+      full keyboard-friendly and more than 15 built-in math function.
+    '';
+    maintainers = with maintainers; [ gebner ];
+    inherit (qtbase.meta) platforms;
+    # works with qt 5.6 and qt 5.8
+    broken = builtins.compareVersions qtbase.version "5.7.0" == 0;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/symmetrica/default.nix b/nixpkgs/pkgs/applications/science/math/symmetrica/default.nix
new file mode 100644
index 000000000000..b363137fb99c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/symmetrica/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, lib
+, fetchFromGitLab
+, fetchpatch
+, autoreconfHook
+}:
+stdenv.mkDerivation rec {
+  pname = "symmetrica";
+  version = "3.0.1";
+
+  # Fork of the original symmetrica, which can be found here
+  # http://www.algorithm.uni-bayreuth.de/en/research/SYMMETRICA/index.html
+  # "This fork was created to modernize the codebase, and to resume making
+  # releases with the fixes that have accrued over the years."
+  # Also see https://trac.sagemath.org/ticket/29061#comment:3.
+  src = fetchFromGitLab {
+    owner = "sagemath";
+    repo = "symmetrica";
+    rev = version;
+    sha256 = "0wfmrzw82f5i91d7rf24mcdqcj2fmgrgy02pw4pliz7ncwaq14w3";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = ''A collection of routines for representation theory and combinatorics'';
+    license = licenses.isc;
+    maintainers = with maintainers; [raskin timokau];
+    platforms = platforms.unix;
+    homepage = "https://gitlab.com/sagemath/symmetrica";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/weka/default.nix b/nixpkgs/pkgs/applications/science/math/weka/default.nix
new file mode 100644
index 000000000000..c4fc19d6c6b7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/weka/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, jre, unzip, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "weka";
+  version = "3.9.2";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/weka/${stdenv.lib.replaceChars ["."]["-"] "${pname}-${version}"}.zip";
+    sha256 = "0zwmhspmqb0a7cm6k6i0s6q3w19ws1g9dx3cp2v3g3vsif6cdh31";
+  };
+
+  buildInputs = [ unzip makeWrapper ];
+
+  # The -Xmx1000M comes suggested from their download page:
+  # http://www.cs.waikato.ac.nz/ml/weka/downloading.html
+  installPhase = ''
+    mkdir -pv $out/share/weka
+    cp -Rv * $out/share/weka
+
+    makeWrapper ${jre}/bin/java $out/bin/weka \
+      --add-flags "-Xmx1000M -jar $out/share/weka/weka.jar"
+  '';
+
+  meta = {
+    homepage = "http://www.cs.waikato.ac.nz/ml/weka/";
+    description = "Collection of machine learning algorithms for data mining tasks";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [ stdenv.lib.maintainers.mimame ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/wxmaxima/default.nix b/nixpkgs/pkgs/applications/science/math/wxmaxima/default.nix
new file mode 100644
index 000000000000..a6afc95ac093
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/wxmaxima/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub
+, wrapGAppsHook, cmake, gettext
+, maxima, wxGTK, gnome3 }:
+
+stdenv.mkDerivation rec {
+  pname = "wxmaxima";
+  version = "20.04.0";
+
+  src = fetchFromGitHub {
+    owner = "wxMaxima-developers";
+    repo = "wxmaxima";
+    rev = "Version-${version}";
+    sha256 = "0vrjxzfgmjdzm1rgl0crz4b4badl14jwh032y3xkcdvjl5j67lp3";
+  };
+
+  buildInputs = [ wxGTK maxima gnome3.adwaita-icon-theme ];
+
+  nativeBuildInputs = [ wrapGAppsHook cmake gettext ];
+
+  preConfigure = ''
+    gappsWrapperArgs+=(--prefix PATH ":" ${maxima}/bin)
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Cross platform GUI for the computer algebra system Maxima";
+    license = licenses.gpl2;
+    homepage = "https://wxmaxima-developers.github.io/wxmaxima/";
+    platforms = platforms.linux;
+    maintainers = [ maintainers.peti ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/math/yacas/default.nix b/nixpkgs/pkgs/applications/science/math/yacas/default.nix
new file mode 100644
index 000000000000..c19d8f0fbc17
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/math/yacas/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, cmake, perl
+, enableGui ? false, qt5
+, enableJupyter ? false, boost, jsoncpp, openssl, zmqpp
+}:
+
+stdenv.mkDerivation rec {
+  pname = "yacas";
+  version = "1.8.0";
+
+  src = fetchFromGitHub {
+    owner = "grzegorzmazur";
+    repo = "yacas";
+    rev = "v${version}";
+    sha256 = "0fwd98dwq6g0md3yhgyl30i377593b8rw6gsvffzvs11g3aqf1ga";
+  };
+
+  hardeningDisable = [ "format" ];
+
+  cmakeFlags = [
+    "-DENABLE_CYACAS_GUI=${if enableGui then "ON" else "OFF"}"
+    "-DENABLE_CYACAS_KERNEL=${if enableJupyter then "ON" else "OFF"}"
+  ];
+
+  # Perl is only for the documentation
+  nativeBuildInputs = [ cmake perl ];
+  buildInputs = [
+  ] ++ stdenv.lib.optionals enableGui (with qt5; [ qtbase qtwebkit ])
+    ++ stdenv.lib.optionals enableJupyter [ boost jsoncpp openssl zmqpp ]
+    ;
+
+  meta = {
+    description = "Easy to use, general purpose Computer Algebra System";
+    homepage = "http://www.yacas.org/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.platforms; linux;
+    broken = enableGui || enableJupyter;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/medicine/aliza/default.nix b/nixpkgs/pkgs/applications/science/medicine/aliza/default.nix
new file mode 100644
index 000000000000..279f602e3fd5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/medicine/aliza/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl, rpmextract, makeWrapper, patchelf, qt4, zlib, libX11, libXt, libSM, libICE, libXext, libGLU, libGL }:
+
+with stdenv.lib;
+stdenv.mkDerivation {
+  pname = "aliza";
+  version = "1.48.10";
+  src = fetchurl {
+    # See https://www.aliza-dicom-viewer.com/download
+    url = "https://drive.google.com/uc?export=download&id=16WEScARaSrzJpJkyGuOUxDF95eUwGyET";
+    sha256 = "1ls16cwd0fmb5axxmy9lgf8cqrf7g7swm26f0gr2vqp4z9bw6qn3";
+    name = "aliza.rpm";
+  };
+
+  buildInputs = [ rpmextract makeWrapper ];
+
+  unpackCmd = "rpmextract $curSrc";
+
+  patchPhase = ''
+    sed -i 's/^Exec.*$/Exec=aliza %F/' share/applications/aliza.desktop
+  '';
+
+  installPhase = ''
+    mkdir -p $out
+    cp -r bin share $out
+
+    runHook postInstall
+  '';
+
+  postInstall = let
+    libs = stdenv.lib.makeLibraryPath [ qt4 zlib stdenv.cc.cc libSM libICE libX11 libXext libXt libGLU libGL ];
+  in ''
+    ${patchelf}/bin/patchelf \
+      --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      $out/bin/aliza
+
+    ${patchelf}/bin/patchelf \
+      --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      $out/bin/aliza-vtkvol
+
+    wrapProgram $out/bin/aliza \
+      --prefix LD_LIBRARY_PATH : ${libs}
+
+    wrapProgram $out/bin/aliza-vtkvol \
+      --prefix LD_LIBRARY_PATH : ${libs}
+  '';
+
+  meta = {
+    description = "Medical imaging software with 2D, 3D and 4D capabilities";
+    homepage = "https://www.aliza-dicom-viewer.com";
+    license = licenses.unfreeRedistributable;
+    maintainers = with maintainers; [ mounium ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/medicine/dcmtk/default.nix b/nixpkgs/pkgs/applications/science/medicine/dcmtk/default.nix
new file mode 100644
index 000000000000..817ab578a82d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/medicine/dcmtk/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, zlib, libtiff, libxml2, openssl, libiconv, libpng, cmake }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  pname = "dcmtk";
+  version = "3.6.5";
+  src = fetchFromGitHub {
+    owner = "DCMTK";
+    repo = pname;
+    rev = "DCMTK-${version}";
+    sha256 = "0i38k1s0wdpbxxpiwsx490mszhxi45wp0z67iksvh60wfkaw54na";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ libpng zlib libtiff libxml2 openssl libiconv ];
+
+  meta = {
+    description = "Collection of libraries and applications implementing large parts of the DICOM standard";
+    longDescription = ''
+      DCMTK is a collection of libraries and applications implementing large parts of the DICOM standard.
+      It includes software for examining, constructing and converting DICOM image files, handling offline media,
+      sending and receiving images over a network connection, as well as demonstrative image storage and worklist servers.
+      DCMTK is is written in a mixture of ANSI C and C++.
+      It comes in complete source code and is made available as "open source" software.
+    '';
+    homepage = "https://dicom.offis.de/dcmtk";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ iimog ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/boinc/default.nix b/nixpkgs/pkgs/applications/science/misc/boinc/default.nix
new file mode 100644
index 000000000000..802abae80e1d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/boinc/default.nix
@@ -0,0 +1,46 @@
+{ fetchFromGitHub, stdenv, autoconf, automake, pkgconfig, m4, curl,
+libGLU, libGL, libXmu, libXi, freeglut, libjpeg, libtool, wxGTK30, xcbutil,
+sqlite, gtk2, patchelf, libXScrnSaver, libnotify, libX11, libxcb }:
+
+let
+  majorVersion = "7.14";
+  minorVersion = "2";
+in
+
+stdenv.mkDerivation rec {
+  version = "${majorVersion}.${minorVersion}";
+  pname = "boinc";
+
+  src = fetchFromGitHub {
+    name = "${pname}-${version}-src";
+    owner = "BOINC";
+    repo = "boinc";
+    rev = "client_release/${majorVersion}/${version}";
+    sha256 = "0nicpkag18xq0libfqqvs0im22mijpsxzfk272iwdd9l0lmgfvyd";
+  };
+
+  nativeBuildInputs = [ libtool automake autoconf m4 pkgconfig ];
+
+  buildInputs = [
+    curl libGLU libGL libXmu libXi freeglut libjpeg wxGTK30 sqlite gtk2 libXScrnSaver
+    libnotify patchelf libX11 libxcb xcbutil
+  ];
+
+  NIX_LDFLAGS = "-lX11";
+
+  preConfigure = ''
+    ./_autosetup
+    configureFlags="$configureFlags --sysconfdir=$out/etc"
+  '';
+
+  enableParallelBuilding = true;
+
+  configureFlags = [ "--disable-server" ];
+
+  meta = {
+    description = "Free software for distributed and grid computing";
+    homepage = "https://boinc.berkeley.edu/";
+    license = stdenv.lib.licenses.lgpl2Plus;
+    platforms = stdenv.lib.platforms.linux;  # arbitrary choice
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/colmap/default.nix b/nixpkgs/pkgs/applications/science/misc/colmap/default.nix
new file mode 100644
index 000000000000..83dff3e08f15
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/colmap/default.nix
@@ -0,0 +1,44 @@
+{ mkDerivation, lib, fetchpatch, fetchFromGitHub, cmake, boost17x, ceres-solver, eigen,
+  freeimage, glog, libGLU, glew, qtbase,
+  cudaSupport ? false, cudatoolkit ? null }:
+
+assert !cudaSupport || cudatoolkit != null;
+
+let boost_static = boost17x.override { enableStatic = true; };
+in
+mkDerivation rec {
+  version = "3.5";
+  pname = "colmap";
+  src = fetchFromGitHub {
+     owner = "colmap";
+     repo = "colmap";
+     rev = version;
+     sha256 = "1vnb62p0y2bnga173wmjs0lnyqdjikv0fkcxjzxm8187khk2lly8";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/colmap/colmap/commit/6af3d8b0048cecc3b9fc6f4e78c3214dd038180b.patch";
+      sha256 = "1zv5girmv4hv78w1xn131v8njwhpbyylc1m15731lnhrs8bri0jq";
+    })
+  ];
+
+  buildInputs = [
+    boost_static ceres-solver eigen
+    freeimage glog libGLU glew qtbase
+  ] ++ lib.optional cudaSupport cudatoolkit;
+
+  nativeBuildInputs = [ cmake ];
+
+  meta = with lib; {
+    description = "COLMAP - Structure-From-Motion and Multi-View Stereo pipeline";
+    longDescription = ''
+       COLMAP is a general-purpose Structure-from-Motion (SfM) and Multi-View Stereo (MVS) pipeline
+       with a graphical and command-line interface.
+    '';
+    homepage = "https://colmap.github.io/index.html";
+    license = licenses.bsd2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ lebastr ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/cytoscape/default.nix b/nixpkgs/pkgs/applications/science/misc/cytoscape/default.nix
new file mode 100644
index 000000000000..0db007f543f3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/cytoscape/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, jre, makeWrapper, substituteAll, coreutils }:
+
+stdenv.mkDerivation rec {
+  pname = "cytoscape";
+  version = "3.8.0";
+
+  src = fetchurl {
+    url = "https://github.com/cytoscape/cytoscape/releases/download/${version}/${pname}-unix-${version}.tar.gz";
+    sha256 = "0kksx12m83cjprdygmcc286990byf25yqfx5s7c07cizc21aavyg";
+  };
+
+  patches = [
+    # By default, gen_vmoptions.sh tries to store custom options in $out/share
+    # at run time. This patch makes sure $HOME is used instead.
+    (substituteAll {
+      src = ./gen_vmoptions_to_homedir.patch;
+      inherit coreutils;
+    })
+  ];
+
+  buildInputs = [jre makeWrapper];
+
+  installPhase = ''
+    mkdir -pv $out/{share,bin}
+    cp -Rv * $out/share/
+
+    ln -s $out/share/cytoscape.sh $out/bin/cytoscape
+
+    wrapProgram $out/share/cytoscape.sh \
+      --set JAVA_HOME "${jre}" \
+      --set JAVA  "${jre}/bin/java"
+
+    chmod +x $out/bin/cytoscape
+  '';
+
+  meta = {
+    homepage = "http://www.cytoscape.org";
+    description = "A general platform for complex network analysis and visualization";
+    license = stdenv.lib.licenses.lgpl21;
+    maintainers = [stdenv.lib.maintainers.mimame];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/cytoscape/gen_vmoptions_to_homedir.patch b/nixpkgs/pkgs/applications/science/misc/cytoscape/gen_vmoptions_to_homedir.patch
new file mode 100644
index 000000000000..e31681e8541f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/cytoscape/gen_vmoptions_to_homedir.patch
@@ -0,0 +1,19 @@
+diff -Nur a/gen_vmoptions.sh b/gen_vmoptions.sh
+--- a/gen_vmoptions.sh	2020-03-30 21:57:47.000000000 +0100
++++ b/gen_vmoptions.sh	2020-05-05 09:49:57.974989824 +0100
+@@ -1,13 +1,10 @@
+ #!/bin/sh
+ # Generates the Cytoscape.vmoptions file
+ 
+-script_path="$(dirname -- $0)"
+-
+-#vm_options_path="$HOME/.cytoscape"
+-vm_options_path=$script_path
++vm_options_path="$HOME/.cytoscape"
+ 
+ if [ ! -e $vm_options_path ]; then
+-    /bin/mkdir $vm_options_path
++    @coreutils@/bin/mkdir $vm_options_path
+ fi
+ 
+ # Determine amount of physical memory present:
diff --git a/nixpkgs/pkgs/applications/science/misc/fityk/default.nix b/nixpkgs/pkgs/applications/science/misc/fityk/default.nix
new file mode 100644
index 000000000000..18def1d24e2f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/fityk/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, wxGTK30, boost, lua, zlib, bzip2
+, xylib, readline, gnuplot, swig3 }:
+
+let
+  name    = "fityk";
+  version = "1.3.1";
+in
+stdenv.mkDerivation {
+  name = "${name}-${version}";
+
+  src = fetchFromGitHub {
+    owner = "wojdyr";
+    repo = "fityk";
+    rev = "v${version}";
+    sha256 = "0kmrjjjwrh6xgw590awcd52b86kksmv6rfgih75zvpiavr1ygwsi";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ wxGTK30 boost lua zlib bzip2 xylib readline
+    gnuplot swig3 ];
+
+  meta = {
+    description = "Curve fitting and peak fitting software";
+    license = stdenv.lib.licenses.gpl2;
+    homepage = "http://fityk.nieto.pl/";
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/foldingathome/client.nix b/nixpkgs/pkgs/applications/science/misc/foldingathome/client.nix
new file mode 100644
index 000000000000..74a53902ee09
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/foldingathome/client.nix
@@ -0,0 +1,59 @@
+{ stdenv
+, autoPatchelfHook
+, buildFHSUserEnv
+, dpkg
+, fetchurl
+, gcc-unwrapped
+, ocl-icd
+, zlib
+, extraPkgs ? []
+}:
+let
+  majMin = stdenv.lib.versions.majorMinor version;
+  version = "7.6.9";
+
+  fahclient = stdenv.mkDerivation rec {
+    inherit version;
+    pname = "fahclient";
+
+    src = fetchurl {
+      url = "https://download.foldingathome.org/releases/public/release/fahclient/debian-stable-64bit/v${majMin}/fahclient_${version}_amd64.deb";
+      sha256 = "1v4yijjjdq9qx1fp60flp9ya6ywl9qdsgkzwmzjzp8sd5gfvhyr6";
+    };
+
+    nativeBuildInputs = [
+      autoPatchelfHook
+      dpkg
+    ];
+
+    buildInputs = [
+      gcc-unwrapped.lib
+      zlib
+    ];
+
+    unpackPhase = "dpkg-deb -x ${src} ./";
+    installPhase = "cp -ar usr $out";
+  };
+in
+buildFHSUserEnv {
+  name = fahclient.name;
+
+  targetPkgs = pkgs': [
+    fahclient
+    ocl-icd
+  ] ++ extraPkgs;
+
+  runScript = "/bin/FAHClient";
+
+  extraInstallCommands = ''
+    mv $out/bin/$name $out/bin/FAHClient
+  '';
+
+  meta = {
+    description = "Folding@home client";
+    homepage = "https://foldingathome.org/";
+    license = stdenv.lib.licenses.unfree;
+    maintainers = [ stdenv.lib.maintainers.zimbatm ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/foldingathome/control.nix b/nixpkgs/pkgs/applications/science/misc/foldingathome/control.nix
new file mode 100644
index 000000000000..91c3b8c779cd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/foldingathome/control.nix
@@ -0,0 +1,60 @@
+{ stdenv
+, autoPatchelfHook
+, dpkg
+, fahviewer
+, fetchurl
+, makeWrapper
+, python2
+}:
+let
+  majMin = stdenv.lib.versions.majorMinor version;
+  version = "7.6.13";
+
+  python = python2.withPackages
+    (
+      ps: [
+        ps.pycairo
+        ps.pygobject2
+        ps.pygtk
+      ]
+    );
+in
+stdenv.mkDerivation rec {
+  inherit version;
+  pname = "fahcontrol";
+
+  src = fetchurl {
+    url = "https://download.foldingathome.org/releases/public/release/fahcontrol/debian-stable-64bit/v${majMin}/fahcontrol_${version}-1_all.deb";
+    sha256 = "0qfvhwc29cgqkwf2bkhq4gr2d1c4jgccfs58916ss03n4rwz9gng";
+  };
+
+  nativeBuildInputs = [
+    dpkg
+    makeWrapper
+  ];
+
+  buildInputs = [ fahviewer python ];
+
+  doBuild = false;
+
+  unpackPhase = ''
+    dpkg-deb -x ${src} ./
+  '';
+
+  installPhase = "cp -ar usr $out";
+
+  postFixup = ''
+    sed -e 's|/usr/bin|$out/bin|g' -i $out/share/applications/FAHControl.desktop
+    wrapProgram "$out/bin/FAHControl" \
+      --suffix PATH : "${fahviewer.outPath}/bin" \
+      --set PYTHONPATH "$out/lib/python2.7/dist-packages"
+  '';
+
+  meta = {
+    description = "Folding@home control";
+    homepage = "https://foldingathome.org/";
+    license = stdenv.lib.licenses.unfree;
+    maintainers = [ stdenv.lib.maintainers.zimbatm ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/foldingathome/viewer.nix b/nixpkgs/pkgs/applications/science/misc/foldingathome/viewer.nix
new file mode 100644
index 000000000000..cdeed6536efa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/foldingathome/viewer.nix
@@ -0,0 +1,55 @@
+{ stdenv
+, autoPatchelfHook
+, dpkg
+, fetchurl
+, freeglut
+, gcc-unwrapped
+, libGL
+, libGLU
+, makeWrapper
+, zlib
+}:
+let
+  majMin = stdenv.lib.versions.majorMinor version;
+  version = "7.6.13";
+in
+stdenv.mkDerivation rec {
+  inherit version;
+  pname = "fahviewer";
+
+  src = fetchurl {
+    url = "https://download.foldingathome.org/releases/public/release/fahviewer/debian-stable-64bit/v${majMin}/fahviewer_${version}_amd64.deb";
+    sha256 = "09yfvk16j1iwx8h1xg678ks3bc8760gfdn7n32j8r893kd32cwyk";
+  };
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+    dpkg
+    makeWrapper
+  ];
+
+  buildInputs = [
+    freeglut
+    gcc-unwrapped.lib
+    libGL
+    libGLU
+    zlib
+  ];
+
+  unpackPhase = ''
+    dpkg-deb -x ${src} ./
+    sed -e 's|/usr/bin|$out/bin|g' -i usr/share/applications/FAHViewer.desktop
+  '';
+
+  installPhase = ''
+    cp -ar usr $out
+  '';
+
+  meta = {
+    description = "Folding@home viewer";
+    homepage = "https://foldingathome.org/";
+    license = stdenv.lib.licenses.unfree;
+    maintainers = [ stdenv.lib.maintainers.zimbatm ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/gephi/default.nix b/nixpkgs/pkgs/applications/science/misc/gephi/default.nix
new file mode 100644
index 000000000000..b6b53013cb4b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/gephi/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, fetchFromGitHub, jdk, maven, javaPackages }:
+
+let
+  version = "0.9.2";
+
+  src = fetchFromGitHub {
+    owner = "gephi";
+    repo = "gephi";
+    rev = "v${version}";
+    sha256 = "0kqp2nvnsb55j1axb6hk0mlw5alyaiyb70z0mdybhpqqxyw2da2r";
+  };
+
+  # perform fake build to make a fixed-output derivation out of the files downloaded from maven central (120MB)
+  deps = stdenv.mkDerivation {
+    name = "gephi-${version}-deps";
+    inherit src;
+    buildInputs = [ jdk maven ];
+    buildPhase = ''
+      while mvn package -Dmaven.repo.local=$out/.m2 -Dmaven.wagon.rto=5000; [ $? = 1 ]; do
+        echo "timeout, restart maven to continue downloading"
+      done
+    '';
+    # keep only *.{pom,jar,sha1,nbm} and delete all ephemeral files with lastModified timestamps inside
+    installPhase = ''find $out/.m2 -type f -regex '.+\(\.lastUpdated\|resolver-status\.properties\|_remote\.repositories\)' -delete'';
+    outputHashAlgo = "sha256";
+    outputHashMode = "recursive";
+    outputHash = "1p7yf97dn0nvr005cbs6vdk3i341s8fya4kfccj8qqad2qgxflif";
+  };
+in
+stdenv.mkDerivation {
+  pname = "gephi";
+  inherit version;
+
+  inherit src;
+
+  buildInputs = [ jdk maven ];
+
+  buildPhase = ''
+    # 'maven.repo.local' must be writable so copy it out of nix store
+    mvn package --offline -Dmaven.repo.local=$(cp -dpR ${deps}/.m2 ./ && chmod +w -R .m2 && pwd)/.m2
+  '';
+
+  installPhase = ''
+    cp -r modules/application/target/gephi $out
+
+    # remove garbage
+    find $out -type f -name  .lastModified -delete
+    find $out -type f -regex '.+\.exe'     -delete
+
+    # use self-compiled JOGL to avoid patchelf'ing .so inside jars
+    rm $out/gephi/modules/ext/org.gephi.visualization/org-jogamp-{jogl,gluegen}/*.jar
+    cp ${javaPackages.jogl_2_3_2}/share/java/jogl*.jar $out/gephi/modules/ext/org.gephi.visualization/org-jogamp-jogl/
+    cp ${javaPackages.jogl_2_3_2}/share/java/glue*.jar $out/gephi/modules/ext/org.gephi.visualization/org-jogamp-gluegen/
+
+    echo "jdkhome=${jdk}" >> $out/etc/gephi.conf
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A platform for visualizing and manipulating large graphs";
+    homepage = "https://gephi.org";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.taeer ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/golly/beta.nix b/nixpkgs/pkgs/applications/science/misc/golly/beta.nix
new file mode 100644
index 000000000000..36de6a1d4c50
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/golly/beta.nix
@@ -0,0 +1,51 @@
+{stdenv, fetchgit
+, wxGTK, perl, python2, zlib, libGLU, libGL, libX11
+, automake, autoconf
+}:
+
+stdenv.mkDerivation rec {
+  pname = "golly";
+  version = "2.8.99.2.20161122";
+  #src = fetchurl {
+  #  url="mirror://sourceforge/project/golly/golly/golly-2.8/golly-2.8-src.tar.gz";
+  #  sha256="0a4vn2hm7h4b47v2iwip1z3n9y8isf79v08aipl2iqms2m3p5204";
+  #};
+  src = fetchgit {
+    url = "git://git.code.sf.net/p/golly/code";
+    rev = "93495edf3c9639332c6eb43ca7149c69629ee5d8";
+    sha256 = "1j308s9zlqkr3wnl1l32s5zk7r3g4ijwawkkysl8j5ik9sibi2gk";
+  };
+
+  setSourceRoot = ''
+    export sourceRoot="$(echo */gui-wx/configure)"
+  '';
+
+  nativeBuildInputs = [autoconf automake];
+
+  buildInputs = [
+    wxGTK perl python2 zlib libGLU libGL libX11
+  ];
+
+  # Link against Python explicitly as it is needed for scripts
+  makeFlags=[
+    "AM_LDFLAGS="
+  ];
+  NIX_LDFLAGS="-l${python2.libPrefix} -lperl -ldl -lGL";
+  preConfigure=''
+    export NIX_LDFLAGS="$NIX_LDFLAGS -L$(dirname "$(find ${perl} -name libperl.so)")"
+    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE
+      -DPYTHON_SHLIB=$(basename "$(
+        readlink -f ${python2}/lib/libpython*.so)")"
+
+    sh autogen.sh
+  '';
+
+  meta = {
+    inherit version;
+    description = "Cellular automata simulation program";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    downloadPage = "https://sourceforge.net/projects/golly/files/golly";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/golly/default.nix b/nixpkgs/pkgs/applications/science/misc/golly/default.nix
new file mode 100644
index 000000000000..1478bb643181
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/golly/default.nix
@@ -0,0 +1,39 @@
+{stdenv, fetchurl, wxGTK, perl, python2, zlib, libGLU, libGL, libX11}:
+stdenv.mkDerivation rec {
+  pname = "golly";
+  version = "3.3";
+
+  src = fetchurl {
+    sha256 = "1j3ksnar4rdam4xiyspgyrs1pifbvxfxkrn65brkwxpx39mpgzc8";
+    url="mirror://sourceforge/project/golly/golly/golly-${version}/golly-${version}-src.tar.gz";
+  };
+
+  buildInputs = [
+    wxGTK perl python2 zlib libGLU libGL libX11
+  ];
+
+  setSourceRoot = ''
+    sourceRoot=$(echo */gui-wx/configure)
+  '';
+
+  # Link against Python explicitly as it is needed for scripts
+  makeFlags=[
+    "AM_LDFLAGS="
+  ];
+  NIX_LDFLAGS="-l${python2.libPrefix} -lperl";
+  preConfigure=''
+    export NIX_LDFLAGS="$NIX_LDFLAGS -L$(dirname "$(find ${perl} -name libperl.so)")"
+    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE
+      -DPYTHON_SHLIB=$(basename "$(
+        readlink -f ${python2}/lib/libpython*.so)")"
+  '';
+
+  meta = {
+    inherit version;
+    description = "Cellular automata simulation program";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    downloadPage = "https://sourceforge.net/projects/golly/files/golly";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/golly/default.upstream b/nixpkgs/pkgs/applications/science/misc/golly/default.upstream
new file mode 100644
index 000000000000..e8ce81586a8d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/golly/default.upstream
@@ -0,0 +1,5 @@
+url https://sourceforge.net/projects/golly/files/golly/
+version_link '[-][0-9.]+/$'
+SF_version_tarball 'src'
+SF_redirect
+minimize_overwrite
diff --git a/nixpkgs/pkgs/applications/science/misc/gplates/boostfix.patch b/nixpkgs/pkgs/applications/science/misc/gplates/boostfix.patch
new file mode 100644
index 000000000000..e429600b7095
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/gplates/boostfix.patch
@@ -0,0 +1,612 @@
+--- a/src/app-logic/ApplicationState.h
++++ b/src/app-logic/ApplicationState.h
+@@ -33,6 +33,7 @@
+ #include <boost/shared_ptr.hpp>

+ #include <QObject>

+ 

++#ifndef Q_MOC_RUN

+ #include "FeatureCollectionFileState.h"

+ #include "Layer.h"

+ #include "LayerTaskRegistry.h"

+@@ -48,6 +49,7 @@
+ #include "model/ModelInterface.h"

+ #include "model/types.h"

+ #include "model/WeakReferenceCallback.h"

++#endif

+ 

+ ////////////////////////////////////////////////////////////////////////////////////////////////

+ // NOTE: Please use forward declarations (and boost::scoped_ptr) instead of including headers

+--- a/src/app-logic/CoRegistrationLayerTask.h
++++ b/src/app-logic/CoRegistrationLayerTask.h
+@@ -32,11 +32,13 @@
+ #include <QObject>

+ #include <QString>

+ 

++#ifndef Q_MOC_RUN

+ #include "CoRegistrationLayerParams.h"

+ #include "CoRegistrationLayerProxy.h"

+ #include "LayerTask.h"

+ 

+ #include "model/FeatureCollectionHandle.h"

++#endif

+ 

+ namespace GPlatesAppLogic

+ {

+--- a/src/app-logic/RasterLayerTask.h
++++ b/src/app-logic/RasterLayerTask.h
+@@ -32,11 +32,13 @@
+ #include <QObject>

+ #include <QString>

+ 

++#ifndef Q_MOC_RUN

+ #include "LayerTask.h"

+ #include "RasterLayerParams.h"

+ #include "RasterLayerProxy.h"

+ 

+ #include "model/FeatureCollectionHandle.h"

++#endif

+ 

+ 

+ namespace GPlatesAppLogic

+--- a/src/app-logic/ReconstructGraph.h
++++ b/src/app-logic/ReconstructGraph.h
+@@ -46,6 +46,7 @@
+ #include <boost/lambda/construct.hpp>

+ #include <QObject>

+ 

++#ifndef Q_MOC_RUN

+ #include "FeatureCollectionFileState.h"

+ #include "Layer.h"

+ #include "Reconstruction.h"

+@@ -53,6 +54,7 @@
+ 

+ #include "model/FeatureCollectionHandle.h"

+ #include "model/WeakReferenceCallback.h"

++#endif

+ 

+ 

+ namespace GPlatesAppLogic

+--- a/src/app-logic/ReconstructLayerTask.h
++++ b/src/app-logic/ReconstructLayerTask.h
+@@ -33,6 +33,7 @@
+ #include <QObject>

+ #include <QString>

+ 

++#ifndef Q_MOC_RUN

+ #include "LayerTask.h"

+ #include "ReconstructLayerProxy.h"

+ #include "ReconstructLayerParams.h"

+@@ -42,6 +43,7 @@
+ #include "maths/types.h"

+ 

+ #include "model/FeatureCollectionHandle.h"

++#endif

+ 

+ 

+ namespace GPlatesAppLogic

+--- a/src/app-logic/ReconstructScalarCoverageLayerParams.h
++++ b/src/app-logic/ReconstructScalarCoverageLayerParams.h
+@@ -30,6 +30,7 @@
+ #include <boost/optional.hpp>

+ #include <QObject>

+ 

++#ifndef Q_MOC_RUN

+ #include "LayerParams.h"

+ #include "ReconstructScalarCoverageLayerProxy.h"

+ #include "ReconstructScalarCoverageParams.h"

+@@ -38,6 +39,7 @@
+ #include "property-values/ValueObjectType.h"

+ 

+ #include "utils/SubjectObserverToken.h"

++#endif

+ 

+ 

+ namespace GPlatesAppLogic

+--- a/src/app-logic/ReconstructScalarCoverageLayerTask.h
++++ b/src/app-logic/ReconstructScalarCoverageLayerTask.h
+@@ -30,12 +30,14 @@
+ #include <boost/shared_ptr.hpp>

+ #include <QObject>

+ 

++#ifndef Q_MOC_RUN

+ #include "LayerTask.h"

+ #include "ReconstructScalarCoverageLayerParams.h"

+ #include "ReconstructScalarCoverageLayerProxy.h"

+ #include "ScalarCoverageFeatureProperties.h"

+ 

+ #include "model/FeatureCollectionHandle.h"

++#endif

+ 

+ 

+ namespace GPlatesAppLogic

+--- a/src/app-logic/TopologyNetworkResolverLayerTask.h
++++ b/src/app-logic/TopologyNetworkResolverLayerTask.h
+@@ -33,6 +33,7 @@
+ #include <QObject>

+ #include <QString>

+ 

++#ifndef Q_MOC_RUN

+ #include "LayerParams.h"

+ #include "LayerTask.h"

+ #include "ReconstructLayerProxy.h"

+@@ -41,6 +42,7 @@
+ #include "TopologyNetworkResolverLayerProxy.h"

+ 

+ #include "model/FeatureCollectionHandle.h"

++#endif

+ 

+ 

+ namespace GPlatesAppLogic

+--- a/src/app-logic/VelocityFieldCalculatorLayerTask.h
++++ b/src/app-logic/VelocityFieldCalculatorLayerTask.h
+@@ -32,9 +32,11 @@
+ #include <QObject>

+ #include <QString>

+ 

++#ifndef Q_MOC_RUN

+ #include "LayerTask.h"

+ #include "VelocityFieldCalculatorLayerParams.h"

+ #include "VelocityFieldCalculatorLayerProxy.h"

++#endif

+ 

+ #include "model/FeatureCollectionHandle.h"

+ 

+--- a/src/data-mining/CoRegConfigurationTable.h
++++ b/src/data-mining/CoRegConfigurationTable.h
+@@ -28,6 +28,7 @@
+ 

+ #include <vector>

+ #include <map>

++#ifndef Q_MOC_RUN

+ #include <boost/operators.hpp>

+ 

+ #include "CoRegFilter.h"

+@@ -44,6 +45,7 @@
+ #include "scribe/Transcribe.h"

+ #include "scribe/TranscribeContext.h"

+ 

++#endif

+ 

+ namespace GPlatesDataMining

+ {

+--- a/src/gui/CommandServer.h
++++ b/src/gui/CommandServer.h
+@@ -38,9 +38,11 @@
+ #include <QRegExp>

+ #include <QtXml/QXmlStreamReader>

+ 

++#ifndef Q_MOC_RUN

+ #include "app-logic/ApplicationState.h"

+ 

+ #include "presentation/ViewState.h"

++#endif

+ 

+ namespace GPlatesGui

+ {

+--- a/src/gui/FeatureTableModel.h
++++ b/src/gui/FeatureTableModel.h
+@@ -32,8 +32,10 @@
+ #include <QItemSelection>

+ #include <QHeaderView>

+ 

++#ifndef Q_MOC_RUN

+ #include "app-logic/Layer.h"

+ #include "app-logic/ReconstructionGeometry.h"

++#endif

+ 

+ 

+ namespace GPlatesAppLogic

+--- a/src/gui/TopologyTools.h
++++ b/src/gui/TopologyTools.h
+@@ -35,6 +35,7 @@
+ #include <QDebug>

+ #include <QObject>

+ 

++#ifndef Q_MOC_RUN

+ #include "TopologySectionsContainer.h"

+ 

+ #include "app-logic/Layer.h"

+@@ -64,6 +65,7 @@
+ #include "utils/UnicodeStringUtils.h"

+ 

+ #include "view-operations/RenderedGeometryCollection.h"

++#endif

+ 

+ 

+ namespace GPlatesAppLogic

+--- a/src/opengl/GLVisualLayers.h
++++ b/src/opengl/GLVisualLayers.h
+@@ -35,6 +35,7 @@
+ #include <boost/shared_ptr.hpp>

+ #include <QObject>

+ 

++#ifndef Q_MOC_RUN

+ #include "GLAgeGridMaskSource.h"

+ #include "GLContext.h"

+ #include "GLLight.h"

+@@ -79,6 +80,7 @@
+ 

+ #include "view-operations/RenderedGeometry.h"

+ #include "view-operations/ScalarField3DRenderParameters.h"

++#endif

+ 

+ 

+ namespace GPlatesAppLogic

+--- a/src/presentation/VisualLayer.h
++++ b/src/presentation/VisualLayer.h
+@@ -32,6 +32,7 @@
+ #include <QString>

+ #include <QObject>

+ 

++#ifndef Q_MOC_RUN

+ #include "VisualLayerParams.h"

+ #include "VisualLayerType.h"

+ 

+@@ -42,6 +43,7 @@
+ #include "model/FeatureCollectionHandle.h"

+ 

+ #include "view-operations/RenderedGeometryCollection.h"

++#endif

+ 

+ 

+ namespace GPlatesAppLogic

+--- a/src/presentation/VisualLayers.h
++++ b/src/presentation/VisualLayers.h
+@@ -34,6 +34,7 @@
+ #include <boost/weak_ptr.hpp>

+ #include <QObject>

+ 

++#ifndef Q_MOC_RUN

+ #include "VisualLayer.h"

+ 

+ #include "app-logic/FeatureCollectionFileState.h"

+@@ -42,6 +43,7 @@
+ #include "gui/Symbol.h"

+ 

+ #include "view-operations/RenderedGeometryCollection.h"

++#endif

+ 

+ 

+ namespace GPlatesAppLogic

+--- a/src/qt-widgets/AssignReconstructionPlateIdsDialog.h
++++ b/src/qt-widgets/AssignReconstructionPlateIdsDialog.h
+@@ -39,6 +39,7 @@
+ #include "GPlatesDialog.h"

+ #include "InformationDialog.h"

+ 

++#ifndef Q_MOC_RUN

+ #include "app-logic/AssignPlateIds.h"

+ 

+ #include "file-io/File.h"

+@@ -47,6 +48,7 @@
+ #include "model/ModelInterface.h"

+ 

+ #include "presentation/VisualLayer.h"

++#endif

+ 

+ 

+ namespace GPlatesAppLogic

+--- a/src/qt-widgets/CoRegistrationLayerConfigurationDialog.h
++++ b/src/qt-widgets/CoRegistrationLayerConfigurationDialog.h
+@@ -38,6 +38,7 @@
+ 

+ #include "OpenDirectoryDialog.h"

+ 

++#ifndef Q_MOC_RUN

+ #include "app-logic/ApplicationState.h"

+ #include "app-logic/Layer.h"

+ #include "app-logic/LayerInputChannelName.h"

+@@ -45,6 +46,7 @@
+ 

+ #include "data-mining/CheckAttrTypeVisitor.h"

+ #include "data-mining/CoRegConfigurationTable.h"

++#endif

+ 

+ #include "global/PointerTraits.h"

+ 

+--- a/src/qt-widgets/CoRegistrationOptionsWidget.h
++++ b/src/qt-widgets/CoRegistrationOptionsWidget.h
+@@ -31,6 +31,7 @@
+ #include "CoRegistrationLayerConfigurationDialog.h"

+ #include "CoRegistrationOptionsWidgetUi.h"

+ #include "LayerOptionsWidget.h"

++#ifndef Q_MOC_RUN

+ #include "CoRegistrationResultTableDialog.h"

+ 

+ #include "app-logic/CoRegistrationLayerTask.h"

+@@ -41,7 +42,7 @@
+ #include "file-io/File.h"

+ 

+ #include "presentation/VisualLayer.h"

+-

++#endif

+ 

+ namespace GPlatesAppLogic

+ {

+--- a/src/qt-widgets/CoRegistrationResultTableDialog.h
++++ b/src/qt-widgets/CoRegistrationResultTableDialog.h
+@@ -36,6 +36,7 @@
+ #include <QEvent>

+ #include <qevent.h>

+ 

++#ifndef Q_MOC_RUN

+ #include "CoRegistrationResultTableDialogUi.h"

+ #include "SaveFileDialog.h"

+ 

+@@ -43,6 +44,7 @@
+ #include "data-mining/OpaqueDataToQString.h"

+ 

+ #include "presentation/VisualLayer.h"

++#endif

+ 

+ namespace GPlatesPresentation

+ {

+--- a/src/qt-widgets/DrawStyleDialog.h
++++ b/src/qt-widgets/DrawStyleDialog.h
+@@ -33,6 +33,7 @@
+ #include <QMutex>

+ #include <QMutexLocker>

+ 

++#ifndef Q_MOC_RUN

+ #include "DrawStyleDialogUi.h"

+ #include "GPlatesDialog.h"

+ #include "PythonArgumentWidget.h"

+@@ -41,6 +42,7 @@
+ #include "gui/PythonConfiguration.h"

+ 

+ #include "presentation/Application.h"

++#endif

+ 

+ namespace GPlatesAppLogic

+ {

+--- a/src/qt-widgets/EditTableActionWidget.h
++++ b/src/qt-widgets/EditTableActionWidget.h
+@@ -27,8 +27,11 @@
+ #define GPLATES_QTWIDGETS_EDITTABLEACTIONWIDGET_H

+ 

+ #include <QWidget>

++

++#ifndef Q_MOC_RUN

+ #include "app-logic/ApplicationState.h"

+ #include "EditTableActionWidgetUi.h"

++#endif

+ 

+ namespace GPlatesQtWidgets

+ {

+--- a/src/qt-widgets/GlobeCanvas.h
++++ b/src/qt-widgets/GlobeCanvas.h
+@@ -41,6 +41,7 @@
+ #include <QPainter>

+ #include <QtOpenGL/qgl.h>

+ 

++#ifndef Q_MOC_RUN

+ #include "gui/ColourScheme.h"

+ #include "gui/Globe.h"

+ #include "gui/ViewportZoom.h"

+@@ -58,6 +59,7 @@
+ #include "qt-widgets/SceneView.h"

+ 

+ #include "view-operations/RenderedGeometryFactory.h"

++#endif

+ 

+ 

+ namespace GPlatesGui

+--- a/src/qt-widgets/LogDialog.h
++++ b/src/qt-widgets/LogDialog.h
+@@ -34,7 +34,9 @@
+ #include "GPlatesDialog.h"

+ #include "LogDialogUi.h"

+ 

++#ifndef Q_MOC_RUN

+ #include "app-logic/ApplicationState.h"

++#endif

+ 

+ 

+ namespace GPlatesGui

+--- a/src/qt-widgets/MapCanvas.h
++++ b/src/qt-widgets/MapCanvas.h
+@@ -39,6 +39,7 @@
+ #include <QSize>

+ #include <QTransform>

+ 

++#ifndef Q_MOC_RUN

+ #include "gui/ColourScheme.h"

+ #include "gui/Map.h"

+ #include "gui/TextOverlay.h"

+@@ -47,6 +48,7 @@
+ #include "opengl/GLMatrix.h"

+ #include "opengl/GLOffScreenContext.h"

+ #include "opengl/GLVisualLayers.h"

++#endif

+ 

+ 

+ namespace GPlatesGui

+--- a/src/qt-widgets/MapView.h
++++ b/src/qt-widgets/MapView.h
+@@ -36,6 +36,7 @@
+ #include <QGLWidget>

+ #include <QMouseEvent>

+ 

++#ifndef Q_MOC_RUN

+ #include "gui/ColourScheme.h"

+ 

+ #include "maths/LatLonPoint.h"

+@@ -44,6 +45,7 @@
+ #include "opengl/GLVisualLayers.h"

+ 

+ #include "qt-widgets/SceneView.h"

++#endif

+ 

+ 

+ namespace GPlatesGui

+--- a/src/qt-widgets/MergeReconstructionLayersDialog.h
++++ b/src/qt-widgets/MergeReconstructionLayersDialog.h
+@@ -33,7 +33,9 @@
+ 

+ #include "MergeReconstructionLayersDialogUi.h"

+ 

++#ifndef Q_MOC_RUN

+ #include "app-logic/Layer.h"

++#endif

+ 

+ 

+ namespace GPlatesAppLogic

+--- a/src/qt-widgets/RasterLayerOptionsWidget.h
++++ b/src/qt-widgets/RasterLayerOptionsWidget.h
+@@ -31,6 +31,7 @@
+ #include <QString>

+ #include <QToolButton>

+ 

++#ifndef Q_MOC_RUN

+ #include "RasterLayerOptionsWidgetUi.h"

+ 

+ #include "LayerOptionsWidget.h"

+@@ -40,6 +41,7 @@
+ 

+ #include "gui/BuiltinColourPaletteType.h"

+ #include "gui/RasterColourPalette.h"

++#endif

+ 

+ 

+ namespace GPlatesAppLogic

+--- a/src/qt-widgets/ReconstructScalarCoverageLayerOptionsWidget.h
++++ b/src/qt-widgets/ReconstructScalarCoverageLayerOptionsWidget.h
+@@ -28,6 +28,7 @@
+ 

+ #include <utility>

+ 

++#ifndef Q_MOC_RUN

+ #include "ReconstructScalarCoverageLayerOptionsWidgetUi.h"

+ 

+ #include "LayerOptionsWidget.h"

+@@ -37,6 +38,7 @@
+ 

+ #include "gui/BuiltinColourPaletteType.h"

+ #include "gui/RasterColourPalette.h"

++#endif

+ 

+ 

+ namespace GPlatesAppLogic

+--- a/src/qt-widgets/ScalarField3DLayerOptionsWidget.h
++++ b/src/qt-widgets/ScalarField3DLayerOptionsWidget.h
+@@ -30,6 +30,7 @@
+ #include <vector>

+ #include <QSlider>

+ 

++#ifndef Q_MOC_RUN

+ #include "ScalarField3DLayerOptionsWidgetUi.h"

+ 

+ #include "LayerOptionsWidget.h"

+@@ -41,6 +42,7 @@
+ #include "gui/RasterColourPalette.h"

+ 

+ #include "view-operations/ScalarField3DRenderParameters.h"

++#endif

+ 

+ 

+ namespace GPlatesAppLogic

+--- a/src/qt-widgets/TotalReconstructionPolesDialog.h
++++ b/src/qt-widgets/TotalReconstructionPolesDialog.h
+@@ -32,12 +32,14 @@
+ #include <boost/weak_ptr.hpp>

+ #include <QDialog>

+ 

++#ifndef Q_MOC_RUN

+ #include "TotalReconstructionPolesDialogUi.h"

+ 

+ #include "GPlatesDialog.h"

+ #include "SaveFileDialog.h"

+ 

+ #include "presentation/VisualLayer.h"

++#endif

+ 

+ 

+ namespace GPlatesAppLogic

+--- a/src/qt-widgets/VisualLayersComboBox.h
++++ b/src/qt-widgets/VisualLayersComboBox.h
+@@ -32,8 +32,10 @@
+ #include <QComboBox>

+ #include <QObject>

+ 

++#ifndef Q_MOC_RUN

+ #include "presentation/VisualLayer.h"

+ #include "presentation/VisualLayerType.h"

++#endif

+ 

+ 

+ namespace GPlatesPresentation

+--- a/src/qt-widgets/VisualLayerWidget.h
++++ b/src/qt-widgets/VisualLayerWidget.h
+@@ -36,11 +36,13 @@
+ #include <QMenu>

+ #include <QStackedWidget>

+ 

++#ifndef Q_MOC_RUN

+ #include "VisualLayerWidgetUi.h"

+ 

+ #include "app-logic/Layer.h"

+ 

+ #include "gui/Colour.h"

++#endif

+ 

+ 

+ namespace GPlatesAppLogic

+--- a/src/view-operations/InternalGeometryBuilder.h
++++ b/src/view-operations/InternalGeometryBuilder.h
+@@ -30,9 +30,11 @@
+ #include <vector>

+ #include <boost/optional.hpp>

+ 

++#ifndef Q_MOC_RUN

+ #include "maths/GeometryOnSphere.h"

+ #include "maths/GeometryType.h"

+ #include "maths/PointOnSphere.h"

++#endif

+ 

+ namespace GPlatesViewOperations

+ {

+--- a/src/view-operations/RenderedGeometryCollection.h
++++ b/src/view-operations/RenderedGeometryCollection.h
+@@ -39,7 +39,9 @@
+ #include <boost/foreach.hpp>

+ #include <QObject>

+ 

++#ifndef Q_MOC_RUN

+ #include "RenderedGeometryLayer.h"

++#endif

+ 

+ namespace GPlatesViewOperations

+ {

+--- a/src/view-operations/RenderedGeometryFactory.h
++++ b/src/view-operations/RenderedGeometryFactory.h
+@@ -33,6 +33,7 @@
+ #include <QString>

+ #include <QFont>

+ 

++#ifndef Q_MOC_RUN

+ #include "RenderedGeometry.h"

+ #include "RenderedColouredEdgeSurfaceMesh.h"

+ #include "RenderedColouredTriangleSurfaceMesh.h"

+@@ -62,6 +63,7 @@
+ #include "property-values/TextContent.h"

+ 

+ #include "view-operations/ScalarField3DRenderParameters.h"

++#endif

+ 

+ 

+ namespace GPlatesAppLogic

+--- a/src/view-operations/RenderedGeometryLayer.h
++++ b/src/view-operations/RenderedGeometryLayer.h
+@@ -35,10 +35,12 @@
+ #include <boost/optional.hpp>

+ #include <QObject>

+ 

++#ifndef Q_MOC_RUN

+ #include "RenderedGeometry.h"

+ 

+ #include "maths/CubeQuadTreeLocation.h"

+ 

++#endif

+ 

+ namespace GPlatesMaths

+ {

diff --git a/nixpkgs/pkgs/applications/science/misc/gplates/default.nix b/nixpkgs/pkgs/applications/science/misc/gplates/default.nix
new file mode 100644
index 000000000000..592e36370e0f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/gplates/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, qt4, qwt6_qt4, libGLU, libGL, glew, gdal_1_11, cgal
+, proj, boost, cmake, python2, doxygen, graphviz, gmp }:
+
+stdenv.mkDerivation rec {
+  pname = "gplates";
+  version = "2.0.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/gplates/${pname}-${version}-unixsrc.tar.bz2";
+    sha256 = "02scnjj5nlc2d2c8lbx0xvj8gg1bgkjliv3wxsx564c55a9x69qw";
+  };
+
+  patches = [
+    ./boostfix.patch
+  ];
+
+  buildInputs = [
+    qt4 qwt6_qt4 libGLU libGL glew gdal_1_11 cgal proj boost cmake python2
+    doxygen graphviz gmp
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Desktop software for the interactive visualisation of plate-tectonics";
+    homepage = "https://www.gplates.org";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/megam/default.nix b/nixpkgs/pkgs/applications/science/misc/megam/default.nix
new file mode 100644
index 000000000000..8bb64932f20e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/megam/default.nix
@@ -0,0 +1,47 @@
+{ fetchurl, stdenv, ocaml, makeWrapper, ncurses }:
+
+let version = "0.92"; in
+stdenv.mkDerivation {
+  pname = "megam";
+  inherit version;
+
+  src = fetchurl {
+    url = "http://hal3.name/megam/megam_src.tgz";
+    sha256 = "dc0e9f59ff8513449fe3bd40b260141f89c88a4edf6ddc8b8a394c758e49724e";
+  };
+
+  patches = [ ./ocaml-includes.patch ./ocaml-3.12.patch ];
+  
+  buildInputs = [ ocaml ncurses ];
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  makeFlags = [ "CAML_INCLUDES=${ocaml}/lib/ocaml/caml" ];
+
+  # see https://bugzilla.redhat.com/show_bug.cgi?id=435559
+  dontStrip = true;
+
+  installPhase = ''
+    mkdir -pv $out/bin
+    cp -Rv megam $out/bin
+  '';
+
+
+  meta = {
+    description = "MEGA Model Optimization Package";
+
+    longDescription =
+      ''  The software here is an implementation of maximum likelihood
+          and maximum a posterior optimization of the parameters of
+          these models.  The algorithms used are much more efficient
+          than the iterative scaling techniques used in almost every
+          other maxent package out there.  '';
+
+    homepage = "http://www.umiacs.umd.edu/~hal/megam";
+
+    license = "non-commercial";
+
+    maintainers = [ ];
+    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux;  # arbitrary choice
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/megam/ocaml-3.12.patch b/nixpkgs/pkgs/applications/science/misc/megam/ocaml-3.12.patch
new file mode 100644
index 000000000000..8265acf6e4a7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/megam/ocaml-3.12.patch
@@ -0,0 +1,12 @@
+diff -ru megam_0.92/Makefile megam_0.92-b/Makefile
+--- megam_0.92/Makefile	2007-10-08 18:06:04.000000000 +0100
++++ megam_0.92-b/Makefile	2013-11-25 10:14:20.000000000 +0000
+@@ -59,7 +59,7 @@
+ 
+ WITHUNIX =unix.cma -cclib -lunix
+ 
+-WITHSTR =str.cma -cclib -lstr
++WITHSTR =str.cma -cclib -lcamlstr
+ 
+ WITHBIGARRAY =bigarray.cma -cclib -lbigarray
+ 
diff --git a/nixpkgs/pkgs/applications/science/misc/megam/ocaml-includes.patch b/nixpkgs/pkgs/applications/science/misc/megam/ocaml-includes.patch
new file mode 100644
index 000000000000..b3a56643448c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/megam/ocaml-includes.patch
@@ -0,0 +1,21 @@
+diff -ru megam_0.92/Makefile megam_0.92-b/Makefile
+--- megam_0.92/Makefile	2007-10-08 18:06:04.000000000 +0100
++++ megam_0.92-b/Makefile	2013-11-25 10:14:20.000000000 +0000
+@@ -41,7 +41,7 @@
+ #
+ # The Caml compilers. #
+ # You may fix here the path to access the Caml compiler on your machine
+-CAMLC = ocamlc -g
++CAMLC = ocamlc -g $(WITHCLIBS)
+ CAMLOPT = ocamlopt -unsafe -ccopt -O4 -ccopt -ffast-math -inline 99999 
+ CAMLDEP = ocamldep
+ CAMLLEX = ocamllex
+@@ -70,7 +70,7 @@
+ WITHDBM =dbm.cma -cclib -lmldbm -cclib -lndbm
+ 
+ #WITHCLIBS =-I /usr/lib/ocaml/3.09.2/caml
+-WITHCLIBS =-I /usr/lib/ocaml/caml
++WITHCLIBS =-I $(CAML_INCLUDES) 
+ 
+ ################ End of user's variables #####################
+ 
diff --git a/nixpkgs/pkgs/applications/science/misc/netlogo/default.nix b/nixpkgs/pkgs/applications/science/misc/netlogo/default.nix
new file mode 100644
index 000000000000..af892441a472
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/netlogo/default.nix
@@ -0,0 +1,58 @@
+{ jre, stdenv, fetchurl, makeWrapper, makeDesktopItem }:
+
+let
+
+  desktopItem = makeDesktopItem rec {
+    name = "netlogo";
+    exec = name;
+    icon = name;
+    comment = "A multi-agent programmable modeling environment";
+    desktopName = "NetLogo";
+    categories = "Science;";
+  };
+
+in
+
+stdenv.mkDerivation rec {
+  pname = "netlogo";
+  version = "6.1.1";
+
+  src = fetchurl {
+    url = "https://ccl.northwestern.edu/netlogo/${version}/NetLogo-${version}-64.tgz";
+    sha256 = "1j08df68pgggxqkmpzd369w4h97q0pivmmljdb48hjghx7hacblp";
+  };
+
+  src1 = fetchurl {
+    name = "netlogo.png";
+    url = "https://netlogoweb.org/assets/images/desktopicon.png";
+    sha256 = "1i43lhr31lzva8d2r0dxpcgr58x496gb5vmb0h2da137ayvifar8";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -pv $out/share/netlogo $out/share/icons/hicolor/256x256/apps $out/share/applications $out/share/doc
+    cp -rv app $out/share/netlogo
+    cp -v readme.md $out/share/doc/
+
+    # launcher with `cd` is required b/c otherwise the model library isn't usable
+    makeWrapper "${jre}/bin/java" "$out/bin/netlogo" \
+      --run "cd $out/share/netlogo/app" \
+      --add-flags "-jar netlogo-${version}.jar"
+
+    cp $src1 $out/share/icons/hicolor/256x256/apps/netlogo.png
+    cp ${desktopItem}/share/applications/* $out/share/applications
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A multi-agent programmable modeling environment";
+    longDescription = ''
+      NetLogo is a multi-agent programmable modeling environment. It is used by
+      many tens of thousands of students, teachers and researchers worldwide.
+    '';
+    homepage = "https://ccl.northwestern.edu/netlogo/index.shtml";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.dpaetzel ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/openmodelica/default.nix b/nixpkgs/pkgs/applications/science/misc/openmodelica/default.nix
new file mode 100644
index 000000000000..50d4dcc1a9ff
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/openmodelica/default.nix
@@ -0,0 +1,55 @@
+{stdenv, fetchgit, fetchsvn, autoconf, automake, libtool, gfortran, clang, cmake, gnumake,
+hwloc, jre, lapack, blas, hdf5, expat, ncurses, readline, qt4, webkitgtk, which,
+lp_solve, omniorb, sqlite, libatomic_ops, pkgconfig, file, gettext, flex, bison,
+doxygen, boost, openscenegraph, gnome2, xorg, git, bash, gtk2, makeWrapper }:
+
+let
+
+  fakegit = import ./fakegit.nix {inherit stdenv fetchgit fetchsvn bash;} ;
+
+in
+
+stdenv.mkDerivation {
+  name = "openmodelica";
+
+  src = fetchgit (import ./src-main.nix);
+
+  buildInputs = [autoconf cmake automake libtool gfortran clang gnumake
+    hwloc jre lapack blas hdf5 expat ncurses readline qt4 webkitgtk which
+    lp_solve omniorb sqlite libatomic_ops pkgconfig file gettext flex bison
+    doxygen boost openscenegraph gnome2.gtkglext xorg.libXmu
+    git gtk2 makeWrapper];
+
+  hardeningDisable = [ "format" ];
+
+  enableParallelBuilding = true;
+
+  patchPhase = ''
+    cp -fv ${fakegit}/bin/checkout-git.sh libraries/checkout-git.sh
+    cp -fv ${fakegit}/bin/checkout-svn.sh libraries/checkout-svn.sh
+  '';
+
+  configurePhase = ''
+    export NIX_LDFLAGS="$NIX_LDFLAGS -L${gfortran.cc.lib}/lib"
+
+    autoconf
+    ./configure CC=${clang}/bin/clang CXX=${clang}/bin/clang++ --prefix=$out
+  '';
+
+  postFixup = ''
+    for e in $(cd $out/bin && ls); do
+      wrapProgram $out/bin/$e \
+        --prefix PATH : "${gnumake}/bin" \
+        --prefix LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ lapack blas ]}"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "OpenModelica is an open-source Modelica-based modeling and simulation environment";
+    homepage    = "https://openmodelica.org";
+    license     = licenses.gpl3;
+    maintainers = with maintainers; [ smironov ];
+    platforms   = platforms.linux;
+    broken      = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/openmodelica/fakegit.nix b/nixpkgs/pkgs/applications/science/misc/openmodelica/fakegit.nix
new file mode 100644
index 000000000000..de69626cd3ee
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/openmodelica/fakegit.nix
@@ -0,0 +1,81 @@
+{stdenv, fetchgit, fetchsvn, bash } :
+
+let
+  mkscript = path : text : ''
+    mkdir -pv `dirname ${path}`
+    cat > ${path} <<"EOF"
+    #!${bash}/bin/bash
+    ME=`basename ${path}`
+    ${text}
+    EOF
+    sed -i "s@%out@$out@g" ${path}
+    chmod +x ${path}
+  '';
+  
+  hashname = r: let
+    rpl = stdenv.lib.replaceChars [":" "/"] ["_" "_"];
+  in
+    (rpl r.url) + "-" + (rpl r.rev);
+
+in
+
+stdenv.mkDerivation {
+  name = "fakegit";
+
+  buildCommand = ''
+    mkdir -pv $out/repos
+    ${stdenv.lib.concatMapStrings
+       (r : ''
+        cp -r ${fetchgit r} $out/repos/${hashname r}
+       ''
+       ) (import ./src-libs-git.nix)
+    }
+
+    ${mkscript "$out/bin/checkout-git.sh" ''
+      if test "$#" -ne 4; then
+        echo "Usage: $0 DESTINATION URL GITBRANCH HASH"
+        exit 1
+      fi
+      DEST=$1
+      URL=`echo $2 | tr :/ __`
+      GITBRANCH=$3
+      REVISION=$4
+
+      L=`echo $REVISION | wc -c`
+      if expr $L '<' 10 >/dev/null; then
+        REVISION=refs/tags/$REVISION
+      fi
+
+      REVISION=`echo $REVISION | tr :/ __`
+
+      rm -rf $DEST
+      mkdir -pv $DEST
+      echo "FAKEGIT cp -r %out/repos/$URL-$REVISION $DEST" >&2
+      cp -r %out/repos/$URL-$REVISION/* $DEST
+      chmod u+w -R $DEST
+    ''}
+
+    ${stdenv.lib.concatMapStrings
+       (r : ''
+        cp -r ${fetchsvn r} $out/repos/${hashname r}
+       ''
+       ) (import ./src-libs-svn.nix)
+    }
+
+    ${mkscript "$out/bin/checkout-svn.sh" ''
+      if test "$#" -ne 3; then
+        echo "Usage: $0 DESTINATION URL REVISION"
+        exit 1
+      fi
+      DEST=$1
+      URL=`echo $2 | tr :/ __`
+      REVISION=`echo $4 | tr :/ __`
+
+      rm -rf $DEST
+      mkdir -pv $DEST
+      echo "FAKE COPY %out/repos/$URL-$REVISION $DEST"
+      cp -r %out/repos/$URL-$REVISION/* $DEST
+      chmod u+w -R $DEST
+    ''}
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/openmodelica/src-libs-git.nix b/nixpkgs/pkgs/applications/science/misc/openmodelica/src-libs-git.nix
new file mode 100644
index 000000000000..aae5ab321fbe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/openmodelica/src-libs-git.nix
@@ -0,0 +1,71 @@
+[
+{ url = "https://github.com/modelica-3rdparty/ADGenKinetics.git"; rev = "42428db6e84bcde28543a3bba9bccee581309bb1"; sha256="14l005jwj1wz35gq8xlbzfz0bpsx99rs4q3dxkfh76yhnv1jh9h3"; }
+{ url = "https://github.com/modelica-3rdparty/ADMSL.git"; rev = "ed0305603f86b46d9af03e7d37dcb8b6704915b4"; sha256="15b0nqxyh8444az56ydjn594jikdl1ina5wamabk3nzm1yx218cl"; }
+{ url = "https://github.com/iea-annex60/modelica-annex60.git"; rev = "8015a01591bb24d219f57e7b69cdfcde66e39b47"; sha256="05k4pa007a6p628fq1xac0cfv8g8dnpy2bgy8h99rqpmlaa072z7"; }
+{ url = "https://github.com/OpenModelica/BioChem.git"; rev = "b5f3cb999f3cfad2bbb6fb429b496f61ecf2f628"; sha256="1l52dg888vwx4668spn59hqvfkpl9g06g8n2cdxiap7lvsyh6w9x"; }
+{ url = "https://github.com/modelica-3rdparty/BondGraph.git"; rev = "20c23e60d12989bd4668ccac47659d82d39d29cc"; sha256="1i9cmiy1ya04h2ld0gy0x2gvdrfksl66fmcrgdm1vpsnbb6pviv9"; }
+{ url = "https://github.com/modelica-3rdparty/BondLib.git"; rev = "df7a40fe612617da22e27d39edfa4b27d65f23d0"; sha256="005djwxd568zyk3ndss9hv165dci9x0dgjmcdjhnqmsap3w83hlz"; }
+{ url = "https://github.com/modelica-3rdparty/BrineProp.git"; rev = "fed013cdeec0fb9552964376b575a8e3635539ab"; sha256="020hm2q65d5iv3h8b3lhgl6j930vi2pbh4lvxv3b3k7i9z02q43a"; }
+{ url = "https://github.com/lbl-srg/modelica-buildings.git"; rev = "ef89361cc8673b077b9221efbf78aa63b4d7babd"; sha256="04gclknhl2f5z7w9fsbhwawisd0ibmvwpplx0siqwzvjx7nsmdg4"; }
+{ url = "https://github.com/lbl-srg/modelica-buildings.git"; rev = "444aa231f423b8d04225bf8672e3212d089fbfe4"; sha256="0q754mlkwqj0jcqsmxksvcz4ak2i86f9s41fhffh5jvra27cvq01"; }
+{ url = "https://github.com/modelica-3rdparty/Chemical.git"; rev = "aa2642608e587ddb6897e8c3ffabb3aa099510bd"; sha256="0y46spcb6rw0jpj4v20nlw8xlvi5kypij46f1msvwgr7dfgy4gl4"; }
+{ url = "https://github.com/modelica-3rdparty/ComplexLib.git"; rev = "0b78942ee4fa95ae71347a0d552dd869fdf4c708"; sha256="18llf5ccrq3b0f4cjznfycskwf78pik8370xv45w9gb51gamszrn"; }
+{ url = "https://github.com/lochel/ConPNlib.git"; rev = "bbf6e9711665d55e5a8cf2f7235fa013c2315104"; sha256="0g3ll44sn2ff14qxwdyakw9h5b8b7vzabxp8cb8km16wcdqzgcxx"; }
+{ url = "https://github.com/modelica-3rdparty/DESLib.git"; rev = "7a473d8d16b118c3ea05761c6f43b17fd9838e4e"; sha256="19f2121n8rdc9svcjk8irivsd9wqcb9ai9jx72s2r85fkbvm8jc3"; }
+{ url = "https://github.com/modelica-3rdparty/ExtendedPetriNets.git"; rev = "2f4eac0651c1ab0ed56b75ec61424e0ef15181d3"; sha256="0wwj756pg33qwb90ycbfkrk5xsiwsbrqvq3i16i4pisi21vl6jk9"; }
+{ url = "https://github.com/modelica-3rdparty/ExternData.git"; rev = "396164fa708cc7c7e64da55ac0b3cba23939f790"; sha256="09052qmv91a9wawsl93b5b3q47awrxhnsbb9mrv39kpnwygfh7dq"; }
+{ url = "https://github.com/modelica/ExternalMedia.git"; rev = "1b77869b31dc3509defeccb1236db4b05d2f6f5b"; sha256="05sszn4bn8r78syydyjq8csn9xv4az56mm9lrarqykqdh78pvlqp"; }
+{ url = "https://github.com/kdavies4/FCSys.git"; rev = "cb4b17f34313b9d8f2d4223d5365684b4dc1ab65"; sha256="114p7ja6b3fwlkvkkjhbx78fxc7v4af2sbs783hkdga86m1v4ib6"; }
+{ url = "https://github.com/modelica-3rdparty/FastBuildings.git"; rev = "1f5cfebc2f42c13e272bff639ffa3449d5740bf7"; sha256="0sry1n2pliddz0pjv8dp899fx98f16n1arc8zvq36k5grvi52fby"; }
+{ url = "https://github.com/modelica-3rdparty/FaultTriggering.git"; rev = "10c226b7e5b2af901b356ac437c90d6616a6e9a4"; sha256="0a9j18qjwigq11nghl97syxa9bscs1aj6vwpkldh50csnj5h6g2s"; }
+{ url = "https://github.com/modelica-3rdparty/FuzzyControl.git"; rev = "19ff67ff129a440482cc85f216f287b05ea6ec0d"; sha256="0ijcqns7pijsavijn4wlrdsz64k5ks626sly7r28wvrk9af2m2cx"; }
+{ url = "https://github.com/modelica-3rdparty/HelmholtzMedia.git"; rev = "e54fcd0e436d65c85de6c6b935983e363cdc9f6c"; sha256="05afh0379fx4mjjn7jb8j5p4am6qi62hjxvasb38b6fcp9rnysn4"; }
+{ url = "https://github.com/modelica-3rdparty/IdealizedContact.git"; rev = "8ebac550d913f6d2b3af4d1aea5044e72c7eb6b0"; sha256="03gh2a7hf44clshwkiyz786w847hmyr3bicdqd9969fbirgcqn6m"; }
+{ url = "https://github.com/modelica-3rdparty/IndustrialControlSystems.git"; rev = "6a2414307d5998c6d081efe803c2b575a532b3ba"; sha256="09la9h07x8bkh7zhrwykgj1467qdryjvxhvnnm8qvsim0dl9inc4"; }
+{ url = "https://github.com/modelica-3rdparty/LinearMPC.git"; rev = "1e91a5dcaa662cd30c5b09a9d0267289703f933b"; sha256="12094fqmwi65h0mc65b96krbj6b8dgn6jiww3fnv6khglb21kwvd"; }
+{ url = "https://github.com/modelica/Modelica.git"; rev = "refs/tags/v1.6"; sha256="106w83ylgbxf63wr7p9z5q8vqz2qcsaw0zwaad7d3saq6rdbj30c"; }
+{ url = "https://github.com/modelica/Modelica.git"; rev = "d442bcd461b8db9873e33b6141bdbd37bcff9de8"; sha256="1icnd0fxix5khnsvdhy7kmzn6lnqkggbvfrbln98a2h5zqd6s32w"; }
+{ url = "https://github.com/modelica/Modelica.git"; rev = "af2a3e1597d648d6826665c89cf9eaf5c2a632bc"; sha256="0ryk0iwakdazhsjqvan41w6f9bvgl329zkqchcdg6nkidiigziwh"; }
+{ url = "https://github.com/modelica/Modelica.git"; rev = "48943d87db45a6c312b5a5789d384acde44a934b"; sha256="1hi2vkpmx734baa9m1lqzallcykhh3snd68r387gndiv96f6zx3n"; }
+{ url = "https://github.com/modelica/Modelica.git"; rev = "164af873cc5955c50f9592a7d2f3c155f703849c"; sha256="071svqwd72sy85sngbg5r22ab693c0gw2xx29gk1sqrk2nchmvia"; }
+{ url = "https://github.com/OpenModelica/modelica3d.git"; rev = "daf5669b03ad33fc6999671d1c0e7521134a282b"; sha256="1scs6v2cp2r4jz4diszwbqf9kvzf49pid50dmpsz0gfhx06j9y2v"; }
+{ url = "https://github.com/modelica-deprecated/ModelicaAdditions.git"; rev = "568db43766186826b880f9d4bfafeff25cc2c4ab"; sha256="1py5i3afxdvz1dmxxwb2mqj8kyzdhg4jnnqwl8h50akizg4i49pl"; }
+{ url = "https://github.com/xogeny/ModelicaBook.git"; rev = "0e670cfae4db653bd34ea777d6b56423e9be2c9f"; sha256="0lxh08w6nii4p5yk7c0xmfi5y4xkjkzz4hirr3kqdhdfybcwq824"; }
+{ url = "https://github.com/modelica-compliance/compliance.git"; rev = "ca5092c14bb7af4507a10700ee49181a3a3ee199"; sha256="12ja6dhwlbq412kxjdviypgchipxpsg8l0sf6r17g6lbsi19i2b6"; }
+{ url = "https://github.com/modelica-3rdparty/ModelicaDEVS.git"; rev = "a987aa9552fbbe71b2ee2e8c28958f9d213087ae"; sha256="0qcw7vw28xadim0h8kr2km09d8vdj05ibdpzcnpny9n43pm9s5hx"; }
+{ url = "https://github.com/modelica/Modelica_DeviceDrivers.git"; rev = "db912ba7e1317b8f6a776ccf9a19f69c77a9c477"; sha256="052h2lr7xgfag5fks19wbldqmb985kxlc5fzysl7c9w3fnijp0ml"; }
+{ url = "https://github.com/modelica/Modelica_EnergyStorages.git"; rev = "9f057365232364e31a31a8e525f96284b98c7de3"; sha256="195m5b3z8qgg9kih9zsdx1h8zgrm37q63890r59akka05a97j48h"; }
+{ url = "https://github.com/modelica/Modelica_LinearSystems2.git"; rev = "18916fdc485285baab12481701b53d4eb606a3f1"; sha256="0fhvdwcgk8q3z1a98l2bxv8a6dysrs4ll6xfyzpni7yq8gp4mg4q"; }
+{ url = "https://github.com/modelica/Modelica_Synchronous.git"; rev = "d0f5ee57bc7b639738e88026674a87343b33dbe1"; sha256="0l75v4d0fgf07ify0h3skh4y9pfw9gxh9hbj1lbsdgglmzlrcvbg"; }
+{ url = "https://github.com/modelica-3rdparty/MotorcycleDynamics.git"; rev = "2be2667f9936d88ffb9b8a8246c5af9ccb0b307f"; sha256="0jazwmpqpyhhgs9qdn9drmplgp2yjs0ky7wll5x9929dkgy80m6x"; }
+{ url = "https://github.com/modelica-3rdparty/NCLib.git"; rev = "ed3d72f176ac6b7031ce73be9d80101141e74a69"; sha256="1pbpv8w1lsa9vdwp7qbih8iim91ms22b01wz376b548d0x2r95la"; }
+{ url = "https://github.com/modelica-3rdparty/NeuralNetwork.git"; rev = "c44e4d1fe97fd4f86dafcd05ad3713692e3f1806"; sha256="0s1v8k71zq1s9gjlvi3zr23nwfknp4x17cxm64a0y3vsi3kahj2s"; }
+{ url = "https://github.com/DLR-SR/Noise.git"; rev = "9b57476845539e56769cf76ea0fe7bf3c7eb5d11"; sha256="0icrb63f6dm4gww2nyby9i7s7qxvhvialp36xzcgmi7nlq7crjr2"; }
+{ url = "https://github.com/modelica-3rdparty/ObjectStab.git"; rev = "2a723e0b223af50f4ffdd62f8ac901e0f87b9323"; sha256="1b6zi27slzzfbkmbcqxygsn5i5w0zkq0hfrfb72vf7mbgz07j19j"; }
+{ url = "https://github.com/cparedis/OpenHydraulics.git"; rev = "d3173d1f06f7d14c9d7c41769f143617ff03a3ad"; sha256="1hn5rcnmzcbiaqdnxfn02wddmrpj9bcdi9p680f31hbh3vb0i3r6"; }
+{ url = "https://github.com/lochel/PNlib.git"; rev = "44c7d277980b7a88b449b72edec0a56416b40fa9"; sha256="026wdhbxnzarmj8gw0as70vj8f1gwc51z38hjqpswxkl0xd6mfvp"; }
+{ url = "https://github.com/MarekMatejak/Physiolibrary.git"; rev = "49d59060f6e5b4cb68560c6d7467e84ea4318056"; sha256="0klqs2axjm3s780sq4plq4wmbf9mszz2jmq9fprgxy9pw7iszbhc"; }
+{ url = "https://github.com/dzimmer/PlanarMechanics.git"; rev = "d998a1b27355e83d2ff4849d71281a919a3234aa"; sha256="0vyq6mninn38wy2d60rk753xbkfqim2y6y31py7kq2mm170jfqf4"; }
+{ url = "https://github.com/modelica/PowerSystems.git"; rev = "7b551888089277a0dd979db636d47aba0279e8f0"; sha256="0y13f1nllc7riksnly25wmmp6mc30c1b48dbq2lr1nag6yg3blwm"; }
+{ url = "https://github.com/modelica/PowerSystems.git"; rev = "3abd48aa53bbcd3f3e2ddfa2371680febf8baf48"; sha256="1nr2nbpaxywk8cpwnk9rr2zr87mm2gb9b4plqipjdlrrkjlk9fka"; }
+{ url = "https://github.com/modelica-3rdparty/PraxisSimulationstechnik.git"; rev = "f7db177786f84033f3a50b7474988b190a1dfb46"; sha256="08bdm7k7w35kg9gkrvcn382zkwf5h3iwkkx60d5fj64j5d5klray"; }
+{ url = "https://github.com/modelica-3rdparty/QCalc.git"; rev = "af6c34dda691a9bdf7ca1de10650974b2d5cecf5"; sha256="0p0zhl27cnr492byrzib0dyn7zp5yb7wcr0spv10ngm6j90cij6y"; }
+{ url = "https://github.com/modelica-3rdparty/QSSFluidFlow.git"; rev = "d84a2c107132f2cd47ea3c3751238d69e4b1f64b"; sha256="02cdvv33pi0qlmg8n401s4cxf59l9b4ff4ixf7gwn4w4n1y9bw0g"; }
+{ url = "https://github.com/modelica-3rdparty/RealTimeCoordinationLibrary.git"; rev = "655ac1a22aa6deb04ea8e3869dd0aa9fb9540754"; sha256="19crf8pl9vpqq3pq1rhcbl49kkmnm4jrzpwrpqp8qc6dj8096za4"; }
+{ url = "https://github.com/modelica-3rdparty/ScalableTestSuite.git"; rev = "c6319908d45ac97ffb10e96cd42654bce36ffb97"; sha256="1g79d88bfmzcqvaghyyj86ajs38v0qnmjxbj8d53yp6nmgnaasx5"; }
+{ url = "https://github.com/modelica-3rdparty/Servomechanisms.git"; rev = "22e1874ef9ad46156617817c67a4fb1238621bf5"; sha256="0nwb7apayk7ba9iv27yv67wi4b934dy57kkvn0acxy393jhd8jqd"; }
+{ url = "https://openmodelica.org/git/SiemensPower.git"; rev = "73a3bfc6d2ddd72165bb0f3e7e9df48b643a5ed0"; sha256="0mvrkpkmr0bx2cvsb23syg7cs8k6a15vjf4n1hivdcigq4x8g2nc"; }
+{ url = "https://openmodelica.org/git/SiemensPower.git"; rev = "5ef2e38b64ff481801c0db19d52f0bef21f85f77"; sha256="1llnpl2x1g28gari1rk34hdnnwf7a4fwwxlf7i18d8bl1vsrfaja"; }
+{ url = "https://openmodelica.org/git/SiemensPower.git"; rev = "2bd9e367baaa8d44946897c3c3a32a4050ad2a2a"; sha256="1shm9blpn9m87ci6wwkinpmihr1fik9j0a0pj2nxy0cjrr2jzbn4"; }
+{ url = "https://github.com/modelica-3rdparty/Spot.git"; rev = "2f74417f1681570900a1ed373dcbe4b42634ec7b"; sha256="0k5h2k6x98zvvsafpw7y16xs9d6lxz0csa0mlm4wwggaywadn255"; }
+{ url = "https://github.com/modelica-3rdparty/SystemDynamics.git"; rev = "c58a26dc3e62a50e64fd336dc4aa499b2d5ad314"; sha256="0ra3a2vgqmry92kmm060gfa41mrpkgbs4swzl78ih3icawfzjz8q"; }
+{ url = "https://github.com/modelica-3rdparty/ThermoPower.git"; rev = "e012268625dd1645fe5570cf31d64129d83a8192"; sha256="1rlkli48kc9hnkplgb0bjkb6ajn7agiw4yh9l5sfvlv7k7k2gc8l"; }
+{ url = "https://openmodelica.org/git/ThermoSysPro.git"; rev = "d4f9c3ed35f7520f82439eb6e9f4057ae0f82b73"; sha256="0hxbn26g479qkr6rrglx9ljdxnpzd5ll1sf2v08skghrdjjb8jcx"; }
+{ url = "https://openmodelica.org/git/ThermoSysPro.git"; rev = "51e7ea2d2e121ee640e7897335c294923f8eaeb0"; sha256="0l11mzjkaxndsqrnnr0z7qvk08svv229119qkm81yb53ich9wnyw"; }
+{ url = "https://github.com/modelica/VehicleInterfaces.git"; rev = "ad956a35643d53e207ee126d67ea1f3f38337a39"; sha256="0g90cqwjpi06gn7vca5kqnz56im76s2hrdqjhsj2bl43rza8mhr0"; }
+{ url = "https://github.com/modelica-3rdparty/WasteWater.git"; rev = "90ff44ac791ba5ed98444c8597efbd2a2af01cad"; sha256="1icrn0y389rhxmf6i0mnsfgw9v9j5innpkz3q069rfm2ji268b12"; }
+{ url = "https://github.com/xogeny/XogenyTest.git"; rev = "9b98981e8ff0f440dd319d1a806e1fd2f0ab3436"; sha256="18glaxrlxfml26w7ljlf0yj3ah1fnhpbg01py28nplsgnrfwfwqj"; }
+{ url = "https://github.com/modelica-3rdparty/msgpack-modelica.git"; rev = "6ce2ca600c4902038c0f20b43ed442f1ee204310"; sha256="01x5a9y11yf62sc0j2y49yxwm24imj2lfl3z5mwvi9038gwn0lkx"; }
+{ url = "https://github.com/modelica-3rdparty/netCDF-DataReader.git"; rev = "3d2cc8272abfbc4b667d8868f851bf3e11c6f00e"; sha256="194810a4rn0flxgirrlnxsbxarnm97309dkp1w7nva9zv1q3wj7h"; }
+{ url = "https://github.com/joewa/open-bldc-modelica.git"; rev = "7817cd703b88fc1f433269d32c31e75eb50a21c6"; sha256="1plkxkx51f9yi99ysarmx2ymldizvyr0m66k996y5lj5h81jv8a8"; }
+]
diff --git a/nixpkgs/pkgs/applications/science/misc/openmodelica/src-libs-svn.nix b/nixpkgs/pkgs/applications/science/misc/openmodelica/src-libs-svn.nix
new file mode 100644
index 000000000000..244da64fb4e6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/openmodelica/src-libs-svn.nix
@@ -0,0 +1,5 @@
+[
+{ url = "https://svn.modelica.org/projects/Modelica_ElectricalSystems/InstantaneousSymmetricalComponents"; rev = "7978"; sha256="0f100c7bz4ai3ryhpkbbszw8z6mykvg40p03ic92n2qq58wjk37z"; }
+{ url = "https://svn.modelica.org/projects/Modelica_EmbeddedSystems/trunk/Modelica_StateGraph2"; rev = "8121"; sha256="1cys57nc1yzkr5admc139qs5pa48rj3g69pb3j3s9xcmpd483hzp"; }
+{ url = "https://svn.modelica.org/projects/Modelica_ElectricalSystems/Modelica_PowerFlow/trunk"; rev = "3174"; sha256="0yviw1b8psn8vfyl4q1naylak3lcqi2q1bqplqg3gg9iw4aiymxl"; }
+]
diff --git a/nixpkgs/pkgs/applications/science/misc/openmodelica/src-main.nix b/nixpkgs/pkgs/applications/science/misc/openmodelica/src-main.nix
new file mode 100644
index 000000000000..99e82259bfe6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/openmodelica/src-main.nix
@@ -0,0 +1,6 @@
+{
+  url = "https://openmodelica.org/git-readonly/OpenModelica.git";
+  fetchSubmodules = true;
+  rev = "8c5d48eb31a638d5220621b20377bfe6f9e9535e";
+  sha256 = "0i5cznkh4wwayjqms14f3phizqm493nrr1yjgs9747nfw7vnwsff";
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/openmodelica/update-src-libs-git.sh b/nixpkgs/pkgs/applications/science/misc/openmodelica/update-src-libs-git.sh
new file mode 100755
index 000000000000..481a89796415
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/openmodelica/update-src-libs-git.sh
@@ -0,0 +1,64 @@
+#!/bin/sh
+
+CWD=`pwd`
+
+chko() { (
+T=`mktemp -d`
+trap "rm -rf $T" EXIT INT PIPE
+cd $T
+cat >check.nix <<EOF
+with import <nixpkgs> {};
+fetchgit `cat $CWD/src-main.nix`
+EOF
+nix-build check.nix
+cat result/libraries/Makefile.libs
+) }
+
+getsha256() { (
+T=`mktemp -d`
+trap "rm -rf $T" EXIT INT PIPE
+cd $T
+
+L=`echo $2 | wc -c`
+if expr $L '<' 10 >/dev/null; then
+T=`echo $2 | sed 's@"\(.*\)"@"refs/tags/\1"@'`
+cat >check.nix <<EOF
+with import <nixpkgs> {};
+fetchgit {
+  url = $1;
+  rev = $T;
+  sha256 = "0000000000000000000000000000000000000000000000000000";
+}
+EOF
+SHA=`nix-build check.nix 2>&1 | sed -n 's/.*instead has ‘\(.*\)’.*/\1/g p'`
+echo "{ url = $1; rev = $T; sha256=\"$SHA\"; }"
+else
+cat >check.nix <<EOF
+with import <nixpkgs> {};
+fetchgit {
+  url = $1;
+  rev = $2;
+  sha256 = "0000000000000000000000000000000000000000000000000000";
+}
+EOF
+SHA=`nix-build check.nix 2>&1 | sed -n 's/.*instead has ‘\(.*\)’.*/\1/g p'`
+echo "{ url = $1; rev = $2; sha256=\"$SHA\"; }"
+fi
+
+# nix-build check.nix
+) }
+
+OUT=src-libs-git.nix
+
+echo '[' > $OUT
+
+chko |
+grep checkout-git.sh |
+tr \' \" |
+while read NM TGT URL BR REV ; do
+  echo Trying $TGT $URL $REV >&2
+  getsha256 $URL $REV >> $OUT || exit 1
+done
+
+echo ']' >> $OUT
+
diff --git a/nixpkgs/pkgs/applications/science/misc/openmodelica/update-src-libs-svn.sh b/nixpkgs/pkgs/applications/science/misc/openmodelica/update-src-libs-svn.sh
new file mode 100755
index 000000000000..972bc7d61f13
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/openmodelica/update-src-libs-svn.sh
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+CWD=`pwd`
+
+chko() { (
+T=`mktemp -d`
+trap "rm -rf $T" EXIT INT PIPE
+cd $T
+cat >check.nix <<EOF
+with import <nixpkgs> {};
+fetchgit `cat $CWD/src-main.nix`
+EOF
+nix-build check.nix
+cat result/libraries/Makefile.libs
+) }
+
+getsha256() { (
+T=`mktemp -d`
+trap "rm -rf $T" EXIT INT PIPE
+cd $T
+
+L=`echo $2 | wc -c`
+cat >check.nix <<EOF
+with import <nixpkgs> {};
+fetchsvn {
+  url = $1;
+  rev = $2;
+  sha256 = "0000000000000000000000000000000000000000000000000000";
+}
+EOF
+SHA=`nix-build check.nix 2>&1 | sed -n 's/.*instead has ‘\(.*\)’.*/\1/g p'`
+echo "{ url = $1; rev = $2; sha256=\"$SHA\"; }"
+
+# nix-build check.nix
+) }
+
+OUT=src-libs-svn.nix
+
+echo '[' > $OUT
+
+chko |
+grep checkout-svn.sh |
+tr \' \" |
+while read NM TGT URL REV ; do
+  echo Trying $TGT $URL $REV >&2
+  getsha256 $URL $REV >> $OUT || exit 1
+done
+
+echo ']' >> $OUT
+
diff --git a/nixpkgs/pkgs/applications/science/misc/openmvg/default.nix b/nixpkgs/pkgs/applications/science/misc/openmvg/default.nix
new file mode 100644
index 000000000000..aea376301abd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/openmvg/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchgit, pkgconfig, cmake
+, libjpeg ? null
+, zlib ? null
+, libpng ? null
+, eigen ? null
+, libtiff ? null
+, enableExamples ? false
+, enableDocs ? false }:
+
+stdenv.mkDerivation rec {
+  version = "1.3";
+  pname = "openmvg";
+
+  src = fetchgit {
+    url = "https://www.github.com/openmvg/openmvg.git";
+
+    # Tag v1.1
+    rev = "refs/tags/v${version}";
+    sha256 = "1cf1gbcl8zvxp4rr6f6vaxwcg0yzc4xban2b5p9zy1m4k1f81zyb";
+    fetchSubmodules = true;
+  };
+
+  buildInputs = [ libjpeg zlib libpng eigen libtiff ];
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  cmakeFlags = [
+    "-DCMAKE_CXX_FLAGS=-std=c++11"
+    "-DOpenMVG_BUILD_EXAMPLES=${if enableExamples then "ON" else "OFF"}"
+    "-DOpenMVG_BUILD_DOC=${if enableDocs then "ON" else "OFF"}"
+  ];
+
+  cmakeDir = "./src";
+
+  dontUseCmakeBuildDir = true;
+
+  # This can be enabled, but it will exhause virtual memory on most machines.
+  enableParallelBuilding = false;
+
+  # Without hardeningDisable, certain flags are passed to the compile that break the build (primarily string format errors)
+  hardeningDisable = [ "all" ];
+
+  meta = {
+    description = "A library for computer-vision scientists and targeted for the Multiple View Geometry community";
+    homepage = "https://openmvg.readthedocs.io/en/latest/";
+    license = stdenv.lib.licenses.mpl20;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = with stdenv.lib.maintainers; [ mdaiter ];
+    broken = true; # 2018-04-11
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/openmvs/default.nix b/nixpkgs/pkgs/applications/science/misc/openmvs/default.nix
new file mode 100644
index 000000000000..efdd86f0ab2d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/openmvs/default.nix
@@ -0,0 +1,64 @@
+{ stdenv, fetchFromGitHub, pkgconfig, cmake
+, eigen, opencv, ceres-solver, cgal, boost, vcg
+, gmp, mpfr, glog, gflags, libjpeg_turbo }:
+
+stdenv.mkDerivation {
+  name = "openmvs-unstable-2018-05-26";
+
+  src = fetchFromGitHub {
+    owner = "cdcseacave";
+    repo = "openmvs";
+    rev = "939033c55b50478339084431aac2c2318041afad";
+    sha256 = "12dgkwwfdp24581y3i41gsd1k9hq0aw917q0ja5s0if4qbmc8pni";
+  };
+
+  buildInputs = [ eigen opencv ceres-solver cgal boost vcg gmp mpfr glog gflags libjpeg_turbo ];
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  preConfigure = ''
+    cmakeFlagsArray=(
+      $cmakeFlagsArray
+      "-DCMAKE_CXX_FLAGS=-std=c++11"
+      "-DBUILD_SHARED_LIBS=ON"
+      "-DBUILD_STATIC_RUNTIME=ON"
+      "-DINSTALL_BIN_DIR=$out/bin"
+      "-DVCG_DIR=${vcg}"
+      "-DCGAL_ROOT=${cgal}/lib/cmake/CGAL"
+      "-DCERES_DIR=${ceres-solver}/lib/cmake/Ceres/"
+    )
+  '';
+
+  postFixup = ''
+    rp=$(patchelf --print-rpath $out/bin/DensifyPointCloud)
+    patchelf --set-rpath $rp:$out/lib/OpenMVS $out/bin/DensifyPointCloud
+
+    rp=$(patchelf --print-rpath $out/bin/InterfaceVisualSFM)
+    patchelf --set-rpath $rp:$out/lib/OpenMVS $out/bin/InterfaceVisualSFM
+
+    rp=$(patchelf --print-rpath $out/bin/ReconstructMesh)
+    patchelf --set-rpath $rp:$out/lib/OpenMVS $out/bin/ReconstructMesh
+
+    rp=$(patchelf --print-rpath $out/bin/RefineMesh)
+    patchelf --set-rpath $rp:$out/lib/OpenMVS $out/bin/RefineMesh
+
+    rp=$(patchelf --print-rpath $out/bin/TextureMesh)
+    patchelf --set-rpath $rp:$out/lib/OpenMVS $out/bin/TextureMesh
+  '';
+
+  cmakeDir = "./";
+
+  dontUseCmakeBuildDir = true;
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "A library for computer-vision scientists and especially targeted to the Multi-View Stereo reconstruction community";
+    homepage = "http://cdcseacave.github.io/openMVS/";
+    license = licenses.agpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ mdaiter ];
+    # 20190414-174115: CMake cannot find CGAL which is passed as build input
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/rink/cargo-lock.patch b/nixpkgs/pkgs/applications/science/misc/rink/cargo-lock.patch
new file mode 100644
index 000000000000..1fb3c2f4b568
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/rink/cargo-lock.patch
@@ -0,0 +1,2631 @@
+diff --git a/Cargo.lock b/Cargo.lock
+new file mode 100644
+index 0000000..17d0ae9
+--- /dev/null
++++ b/Cargo.lock
+@@ -0,0 +1,2625 @@
++# This file is automatically @generated by Cargo.
++# It is not intended for manual editing.
++[[package]]
++name = "adler32"
++version = "1.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "aho-corasick"
++version = "0.6.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "autocfg"
++version = "0.1.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "backtrace"
++version = "0.3.40"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "backtrace-sys"
++version = "0.1.32"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cc 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "base64"
++version = "0.9.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "base64"
++version = "0.10.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "bincode"
++version = "0.6.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "bitflags"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "bitflags"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "bitflags"
++version = "1.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "bodyparser"
++version = "0.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "iron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "persistent 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "plugin 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "buf_redux"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "byteorder"
++version = "1.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "bytes"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "bytes"
++version = "0.4.12"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "c2-chacha"
++version = "0.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "cc"
++version = "1.0.48"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "cfg-if"
++version = "0.1.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "chrono"
++version = "0.2.25"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "chrono"
++version = "0.4.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "chrono-humanize"
++version = "0.0.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "chrono 0.2.25 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "chrono-tz"
++version = "0.2.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "chrono 0.2.25 (registry+https://github.com/rust-lang/crates.io-index)",
++ "parse-zoneinfo 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "cloudabi"
++version = "0.0.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "conduit-mime-types"
++version = "0.7.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "cookie"
++version = "0.12.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "cookie_store"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "publicsuffix 1.5.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "core-foundation"
++version = "0.6.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "core-foundation-sys"
++version = "0.6.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "crc32fast"
++version = "1.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "crossbeam-deque"
++version = "0.7.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "crossbeam-epoch 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "crossbeam-epoch"
++version = "0.8.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "crossbeam-queue"
++version = "0.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "crossbeam-utils"
++version = "0.6.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "crossbeam-utils"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "dtoa"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "dtoa"
++version = "0.4.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "either"
++version = "1.5.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "encoding"
++version = "0.2.33"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "encoding-index-japanese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "encoding-index-korean 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "encoding-index-simpchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "encoding-index-singlebyte 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "encoding-index-tradchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "encoding-index-japanese"
++version = "1.20141219.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "encoding-index-korean"
++version = "1.20141219.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "encoding-index-simpchinese"
++version = "1.20141219.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "encoding-index-singlebyte"
++version = "1.20141219.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "encoding-index-tradchinese"
++version = "1.20141219.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "encoding_index_tests"
++version = "0.1.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "encoding_rs"
++version = "0.8.22"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "error"
++version = "0.1.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "error-chain"
++version = "0.12.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "failure"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)",
++ "failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "failure_derive"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "filetime"
++version = "0.1.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "flate2"
++version = "1.0.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "miniz_oxide 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "fnv"
++version = "1.0.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "foreign-types"
++version = "0.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "foreign-types-shared"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "fsevent"
++version = "0.2.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "fsevent-sys"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "fuchsia-cprng"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "fuchsia-zircon"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "fuchsia-zircon-sys"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "futures"
++version = "0.1.29"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "futures-cpupool"
++version = "0.1.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "getrandom"
++version = "0.1.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "glob"
++version = "0.2.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "h2"
++version = "0.1.26"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
++ "indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "handlebars"
++version = "0.25.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "pest 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "handlebars-iron"
++version = "0.23.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "handlebars 0.25.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "iron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "notify 3.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "plugin 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "walkdir 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "hermit-abi"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "http"
++version = "0.1.21"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "http-body"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "httparse"
++version = "1.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "hyper"
++version = "0.10.16"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "hyper"
++version = "0.12.35"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)",
++ "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
++ "http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-executor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-reactor 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-threadpool 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-timer 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "hyper-tls"
++version = "0.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)",
++ "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "idna"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-normalization 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "idna"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-normalization 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "indexmap"
++version = "1.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "inotify"
++version = "0.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "iovec"
++version = "0.1.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "ipc-channel"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bincode 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)",
++ "uuid 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "irc"
++version = "0.11.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "iron"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "conduit-mime-types 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "error 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "hyper 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "modifier 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "plugin 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "typemap 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "itoa"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "itoa"
++version = "0.4.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "json"
++version = "0.10.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "kernel32-sys"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "language-tags"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "lazy_static"
++version = "0.2.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "lazy_static"
++version = "1.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "libc"
++version = "0.2.66"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "limiter"
++version = "0.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "iron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "linefeed"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "nix 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "ole32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-normalization 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "lock_api"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "log"
++version = "0.3.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "log"
++version = "0.4.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "logger"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "iron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "matches"
++version = "0.1.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "maybe-uninit"
++version = "2.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "memchr"
++version = "0.1.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "memchr"
++version = "2.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "memoffset"
++version = "0.5.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "mime"
++version = "0.2.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "mime"
++version = "0.3.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "mime_guess"
++version = "1.8.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "mime_guess"
++version = "2.0.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "miniz_oxide"
++version = "0.3.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "mio"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bytes 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "miow 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
++ "nix 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "slab 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "mio"
++version = "0.6.21"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
++ "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "miow"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "miow"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "modifier"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "mount"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "iron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "sequence_trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "multipart"
++version = "0.8.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "buf_redux 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mime_guess 1.8.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "native-tls"
++version = "0.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "openssl 0.10.26 (registry+https://github.com/rust-lang/crates.io-index)",
++ "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "openssl-sys 0.9.53 (registry+https://github.com/rust-lang/crates.io-index)",
++ "schannel 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
++ "security-framework 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "security-framework-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "net2"
++version = "0.2.33"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "nix"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "nix"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "semver 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)",
++ "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "notify"
++version = "3.0.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "filetime 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fsevent 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "inotify 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "walkdir 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "num"
++version = "0.1.42"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "num-bigint 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-complex 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-rational 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "num-bigint"
++version = "0.1.44"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "num-complex"
++version = "0.1.43"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "num-integer"
++version = "0.1.41"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "num-iter"
++version = "0.1.39"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "num-rational"
++version = "0.1.42"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "num-bigint 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "num-traits"
++version = "0.1.43"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "num-traits"
++version = "0.2.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "num_cpus"
++version = "1.11.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "hermit-abi 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "ole32-sys"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "openssl"
++version = "0.10.26"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "openssl-sys 0.9.53 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "openssl-probe"
++version = "0.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "openssl-sys"
++version = "0.9.53"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cc 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)",
++ "vcpkg 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "params"
++version = "0.6.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bodyparser 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "iron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "multipart 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "plugin 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "urlencoded 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "parking_lot"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "parking_lot_core"
++version = "0.6.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "parse-zoneinfo"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "percent-encoding"
++version = "1.0.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "percent-encoding"
++version = "2.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "persistent"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "iron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "plugin 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "pest"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "phf"
++version = "0.7.24"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "phf_codegen"
++version = "0.7.24"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "phf_generator"
++version = "0.7.24"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "phf_shared"
++version = "0.7.24"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "pkg-config"
++version = "0.3.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "plugin"
++version = "0.2.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "typemap 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "ppv-lite86"
++version = "0.2.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "proc-macro2"
++version = "1.0.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "publicsuffix"
++version = "1.5.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "quick-error"
++version = "1.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "quote"
++version = "0.3.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "quote"
++version = "1.0.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand"
++version = "0.3.23"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand"
++version = "0.4.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand"
++version = "0.6.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand"
++version = "0.7.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "getrandom 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_chacha"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_chacha"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_core"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_core"
++version = "0.4.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "rand_core"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "getrandom 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_hc"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_hc"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_isaac"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_jitter"
++version = "0.1.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_os"
++version = "0.1.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_pcg"
++version = "0.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_xorshift"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rdrand"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "redox_syscall"
++version = "0.1.56"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "regex"
++version = "0.2.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "utf8-ranges 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "regex"
++version = "1.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "regex-syntax"
++version = "0.5.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "ucd-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "regex-syntax"
++version = "0.6.12"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "remove_dir_all"
++version = "0.5.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "reqwest"
++version = "0.9.24"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "encoding_rs 0.8.22 (registry+https://github.com/rust-lang/crates.io-index)",
++ "flate2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
++ "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)",
++ "hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-executor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-threadpool 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-timer 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rink"
++version = "0.4.4"
++dependencies = [
++ "chrono 0.2.25 (registry+https://github.com/rust-lang/crates.io-index)",
++ "chrono-humanize 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "chrono-tz 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "ipc-channel 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "json 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "linefeed 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "reqwest 0.9.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rust-gmp 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_derive 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)",
++ "strsim 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "xml-rs 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rink-irc"
++version = "0.4.0"
++dependencies = [
++ "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "irc 0.11.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rink 0.4.4",
++]
++
++[[package]]
++name = "rink-web"
++version = "0.4.0"
++dependencies = [
++ "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "handlebars 0.25.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "handlebars-iron 0.23.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "ipc-channel 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "iron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "limiter 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "logger 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mount 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "params 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rink 0.4.4",
++ "router 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_derive 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "staticfile 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "toml 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "route-recognizer"
++version = "0.1.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "router"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "iron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "route-recognizer 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rust-gmp"
++version = "0.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rustc-demangle"
++version = "0.1.16"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "rustc-serialize"
++version = "0.3.24"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "rustc_version"
++version = "0.1.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "semver 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rustc_version"
++version = "0.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "ryu"
++version = "1.0.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "safemem"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "same-file"
++version = "0.1.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "schannel"
++version = "0.1.16"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "scopeguard"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "security-framework"
++version = "0.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "security-framework-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "security-framework-sys"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "semver"
++version = "0.1.20"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "semver"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "semver-parser"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "sequence_trie"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "serde"
++version = "0.8.23"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "serde"
++version = "1.0.104"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "serde_codegen"
++version = "0.8.23"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_codegen_internals 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "serde_codegen_internals"
++version = "0.11.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "syn 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "serde_derive"
++version = "0.8.23"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "serde_codegen 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "serde_derive"
++version = "1.0.104"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "serde_json"
++version = "0.8.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "dtoa 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "itoa 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "serde_json"
++version = "1.0.44"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "serde_urlencoded"
++version = "0.5.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "shell32-sys"
++version = "0.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "siphasher"
++version = "0.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "slab"
++version = "0.1.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "slab"
++version = "0.4.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "smallvec"
++version = "0.6.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "smallvec"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "staticfile"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "iron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mount 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "string"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "strsim"
++version = "0.5.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "syn"
++version = "0.10.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "syn"
++version = "1.0.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "synstructure"
++version = "0.12.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tempdir"
++version = "0.3.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tempfile"
++version = "3.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
++ "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "thread_local"
++version = "0.3.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "time"
++version = "0.1.42"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio"
++version = "0.1.22"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-executor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-reactor 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-threadpool 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-timer 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio-buf"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio-current-thread"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-executor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio-executor"
++version = "0.1.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio-io"
++version = "0.1.12"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio-reactor"
++version = "0.1.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-executor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-sync 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio-sync"
++version = "0.1.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio-tcp"
++version = "0.1.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-reactor 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio-threadpool"
++version = "0.1.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-executor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio-timer"
++version = "0.2.12"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-executor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "toml"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "traitobject"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "try-lock"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "try_from"
++version = "0.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "typeable"
++version = "0.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "typemap"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "unsafe-any 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "ucd-util"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "unicase"
++version = "1.4.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "unicase"
++version = "2.6.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "unicode-bidi"
++version = "0.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "unicode-normalization"
++version = "0.1.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "unicode-width"
++version = "0.1.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "unicode-xid"
++version = "0.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "unicode-xid"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "unsafe-any"
++version = "0.4.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "url"
++version = "1.7.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "url"
++version = "2.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "urlencoded"
++version = "0.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bodyparser 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "iron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "plugin 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "utf8-ranges"
++version = "1.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "uuid"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "uuid"
++version = "0.7.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "vcpkg"
++version = "0.2.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "version_check"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "version_check"
++version = "0.9.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "void"
++version = "1.0.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "walkdir"
++version = "0.1.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "walkdir"
++version = "1.0.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "same-file 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "want"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "wasi"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "winapi"
++version = "0.2.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "winapi"
++version = "0.3.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "winapi-build"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "winapi-i686-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "winapi-x86_64-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "winreg"
++version = "0.6.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "ws2_32-sys"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "xml-rs"
++version = "0.3.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[metadata]
++"checksum adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2"
++"checksum aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "81ce3d38065e618af2d7b77e10c5ad9a069859b4be3c2250f674af3840d9c8a5"
++"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2"
++"checksum backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)" = "924c76597f0d9ca25d762c25a4d369d51267536465dc5064bdf0eb073ed477ea"
++"checksum backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6575f128516de27e3ce99689419835fce9643a9b215a14d2b5b685be018491"
++"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e"
++"checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643"
++"checksum bincode 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "55eb0b7fd108527b0c77860f75eca70214e11a8b4c6ef05148c54c05a25d48ad"
++"checksum bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dead7461c1127cf637931a1e50934eb6eee8bff2f74433ac7909e9afcee04a3"
++"checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d"
++"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
++"checksum bodyparser 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6928e817538b74a73d1dd6e9a942a2a35c632a597b6bb14fd009480f859a6bf5"
++"checksum buf_redux 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "861b9d19b9f5cb40647242d10d0cb0a13de0a96d5ff8c8a01ea324fa3956eb7d"
++"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
++"checksum bytes 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c129aff112dcc562970abb69e2508b40850dd24c274761bb50fb8a0067ba6c27"
++"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c"
++"checksum c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb"
++"checksum cc 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)" = "f52a465a666ca3d838ebbf08b241383421412fe7ebb463527bba275526d89f76"
++"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
++"checksum chrono 0.2.25 (registry+https://github.com/rust-lang/crates.io-index)" = "9213f7cd7c27e95c2b57c49f0e69b1ea65b27138da84a170133fd21b07659c00"
++"checksum chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "31850b4a4d6bae316f7a09e691c944c28299298837edc0a03f755618c23cbc01"
++"checksum chrono-humanize 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92afb1436280b0e4ed573c747ad30a1469cd945c201265b4d01e72cfa598da4f"
++"checksum chrono-tz 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "45438695f3f154032951a341ecca7ed200714bea615096885c9e86ca9fa3d66b"
++"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
++"checksum conduit-mime-types 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "95ca30253581af809925ef68c2641cc140d6183f43e12e0af4992d53768bd7b8"
++"checksum cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5"
++"checksum cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46750b3f362965f197996c4448e4a0935e791bf7d6631bfce9ee0af3d24c919c"
++"checksum core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d"
++"checksum core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b"
++"checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1"
++"checksum crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c3aa945d63861bfe624b55d153a39684da1e8c0bc8fba932f7ee3a3c16cea3ca"
++"checksum crossbeam-epoch 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5064ebdbf05ce3cb95e45c8b086f72263f4166b29b97f6baff7ef7fe047b55ac"
++"checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b"
++"checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6"
++"checksum crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce446db02cdc3165b94ae73111e570793400d0794e46125cc4056c81cbb039f4"
++"checksum dtoa 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0dd841b58510c9618291ffa448da2e4e0f699d984d436122372f446dae62263d"
++"checksum dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e"
++"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3"
++"checksum encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec"
++"checksum encoding-index-japanese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91"
++"checksum encoding-index-korean 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81"
++"checksum encoding-index-simpchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7"
++"checksum encoding-index-singlebyte 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a"
++"checksum encoding-index-tradchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18"
++"checksum encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569"
++"checksum encoding_rs 0.8.22 (registry+https://github.com/rust-lang/crates.io-index)" = "cd8d03faa7fe0c1431609dfad7bbe827af30f82e1e2ae6f7ee4fca6bd764bc28"
++"checksum error 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "a6e606f14042bb87cc02ef6a14db6c90ab92ed6f62d87e69377bc759fd7987cc"
++"checksum error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3ab49e9dcb602294bc42f9a7dfc9bc6e936fca4418ea300dbfb84fe16de0b7d9"
++"checksum failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f8273f13c977665c5db7eb2b99ae520952fe5ac831ae4cd09d80c4c7042b5ed9"
++"checksum failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08"
++"checksum filetime 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "714653f3e34871534de23771ac7b26e999651a0a228f47beb324dfdf1dd4b10f"
++"checksum flate2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6bd6d6f4752952feb71363cffc9ebac9411b75b87c6ab6058c40c8900cf43c0f"
++"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3"
++"checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
++"checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
++"checksum fsevent 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)" = "c4bbbf71584aeed076100b5665ac14e3d85eeb31fdbb45fbd41ef9a682b5ec05"
++"checksum fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "1a772d36c338d07a032d5375a36f15f9a7043bf0cb8ce7cee658e037c6032874"
++"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
++"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
++"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
++"checksum futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)" = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef"
++"checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4"
++"checksum getrandom 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "e7db7ca94ed4cd01190ceee0d8a8052f08a247aa1b469a7f68c6a3b71afcf407"
++"checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb"
++"checksum h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462"
++"checksum handlebars 0.25.3 (registry+https://github.com/rust-lang/crates.io-index)" = "15bdf598fc3c2de40c6b340213028301c0d225eea55a2294e6cc148074e557a1"
++"checksum handlebars-iron 0.23.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1f86cf6ff931aa78e61415ad40c48a9af101b9a888eeed6ecf4f48dc52e80b76"
++"checksum hermit-abi 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "eff2656d88f158ce120947499e971d743c05dbcbed62e5bd2f38f1698bbc3772"
++"checksum http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)" = "d6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0"
++"checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d"
++"checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9"
++"checksum hyper 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)" = "0a0652d9a2609a968c14be1a9ea00bf4b1d64e2e1f53a1b51b6fff3a6e829273"
++"checksum hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)" = "9dbe6ed1438e1f8ad955a4701e9a944938e9519f6888d12d8558b645e247d5f6"
++"checksum hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f"
++"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e"
++"checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9"
++"checksum indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712d7b3ea5827fcb9d4fda14bf4da5f136f0db2ae9c8f4bd4e2d1c6fde4e6db2"
++"checksum inotify 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8458c07bdbdaf309c80e2c3304d14c3db64e7465d4f07cf589ccb83fd0ff31a"
++"checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e"
++"checksum ipc-channel 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "675587430ede6756dd03fdfdf9888f22f83855fd131c8451d842a710b059e571"
++"checksum irc 0.11.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6a45f7136bbfeec4377afc6363b38440ce153d8a61777d56da0c6b1176cf135a"
++"checksum iron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2440ae846e7a8c7f9b401db8f6e31b4ea5e7d3688b91761337da7e054520c75b"
++"checksum itoa 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ae3088ea4baeceb0284ee9eea42f591226e6beaecf65373e41b38d95a1b8e7a1"
++"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f"
++"checksum json 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f3fb4510c0dbc38f7f43bdbe8b53defae0cd338b81ef416462a0ef69d600165c"
++"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
++"checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a"
++"checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73"
++"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
++"checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558"
++"checksum limiter 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "cbc5d8bf63416df5331084dd9883b9598582f0d7ad5e42d53e55b05366931676"
++"checksum linefeed 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1301a570e4e7d2d0f324b7a3fa73eac85b05c81b656a0983b16ebc8c504e53b6"
++"checksum lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "79b2de95ecb4691949fea4716ca53cdbcfccb2c612e19644a8bad05edcf9f47b"
++"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b"
++"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
++"checksum logger 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "92ff59f9a797ff30f711fe6b8489ad424953cee17c206de77d3c5957a9182ba7"
++"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
++"checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
++"checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"
++"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e"
++"checksum memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9"
++"checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0"
++"checksum mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "dd1d63acd1b78403cc0c325605908475dd9b9a3acbf65ed8bcab97e27014afcf"
++"checksum mime_guess 1.8.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0d977de9ee851a0b16e932979515c0f3da82403183879811bc97d50bd9cc50f7"
++"checksum mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1a0ed03949aef72dbdf3116a383d7b38b4768e6f960528cd6a6044aa9ed68599"
++"checksum miniz_oxide 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6f3f74f726ae935c3f514300cc6773a0c9492abc5e972d42ba0c0ebb88757625"
++"checksum mio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a637d1ca14eacae06296a008fa7ad955347e34efcb5891cfd8ba05491a37907e"
++"checksum mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)" = "302dec22bcf6bae6dfb69c647187f4b4d0fb6f535521f7bc022430ce8e12008f"
++"checksum miow 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3e690c5df6b2f60acd45d56378981e827ff8295562fc8d34f573deb267a59cd1"
++"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
++"checksum modifier 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "41f5c9112cb662acd3b204077e0de5bc66305fa8df65c8019d5adb10e9ab6e58"
++"checksum mount 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "32245731923cd096899502fc4c4317cfd09f121e80e73f7f576cf3777a824256"
++"checksum multipart 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b16d6498fe5b0c2f6d973fd9753da099948834f96584d628e44a75f0d2955b03"
++"checksum native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b2df1a4c22fd44a62147fd8f13dd0f95c9d8ca7b2610299b2a2f9cf8964274e"
++"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88"
++"checksum nix 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bfb3ddedaa14746434a02041940495bf11325c22f6d36125d3bdd56090d50a79"
++"checksum nix 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a0d95c5fa8b641c10ad0b8887454ebaafa3c92b5cd5350f8fc693adafd178e7b"
++"checksum notify 3.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "13fdd4a6894329b193f38f03a88823ce721275fdfdb29820c44a30515033524e"
++"checksum num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e"
++"checksum num-bigint 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)" = "e63899ad0da84ce718c14936262a41cee2c79c981fc0a0e7c7beb47d5a07e8c1"
++"checksum num-complex 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "b288631d7878aaf59442cffd36910ea604ecd7745c36054328595114001c9656"
++"checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09"
++"checksum num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "76bd5272412d173d6bf9afdf98db8612bbabc9a7a830b7bfc9c188911716132e"
++"checksum num-rational 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "ee314c74bd753fc86b4780aa9475da469155f3848473a261d2d18e35245a784e"
++"checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31"
++"checksum num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d4c81ffc11c212fa327657cb19dd85eb7419e163b5b076bede2bdb5c974c07e4"
++"checksum num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "76dac5ed2a876980778b8b85f75a71b6cbf0db0b1232ee12f826bccb00d09d72"
++"checksum ole32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2c49021782e5233cd243168edfa8037574afed4eba4bbaf538b3d8d1789d8c"
++"checksum openssl 0.10.26 (registry+https://github.com/rust-lang/crates.io-index)" = "3a3cc5799d98e1088141b8e01ff760112bbd9f19d850c124500566ca6901a585"
++"checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de"
++"checksum openssl-sys 0.9.53 (registry+https://github.com/rust-lang/crates.io-index)" = "465d16ae7fc0e313318f7de5cecf57b2fbe7511fd213978b457e1c96ff46736f"
++"checksum params 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "421e9f2c30e80365c9672709be664bfc84f73b088720d1cc1f4e99675814bb37"
++"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252"
++"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b"
++"checksum parse-zoneinfo 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f4ee19a3656dadae35a33467f9714f1228dd34766dbe49e10e656b5296867aea"
++"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831"
++"checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
++"checksum persistent 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4c9c94f2ef72dc272c6bcc8157ccf2bc7da14f4c58c69059ac2fc48492d6916"
++"checksum pest 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0a6dda33d67c26f0aac90d324ab2eb7239c819fc7b2552fe9faa4fe88441edc8"
++"checksum phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b3da44b85f8e8dfaec21adae67f95d93244b2ecf6ad2a692320598dcc8e6dd18"
++"checksum phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b03e85129e324ad4166b06b2c7491ae27fe3ec353af72e72cd1654c7225d517e"
++"checksum phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662"
++"checksum phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0"
++"checksum pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)" = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677"
++"checksum plugin 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "1a6a0dc3910bc8db877ffed8e457763b317cf880df4ae19109b9f77d277cf6e0"
++"checksum ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b"
++"checksum proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0319972dcae462681daf4da1adeeaa066e3ebd29c69be96c6abb1259d2ee2bcc"
++"checksum publicsuffix 1.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3bbaa49075179162b49acac1c6aa45fb4dafb5f13cf6794276d77bc7fd95757b"
++"checksum quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
++"checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"
++"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe"
++"checksum rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c"
++"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293"
++"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
++"checksum rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3ae1b169243eaf61759b8475a998f0a385e42042370f3a7dbaf35246eacc8412"
++"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
++"checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853"
++"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
++"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
++"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
++"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"
++"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
++"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"
++"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b"
++"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"
++"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
++"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c"
++"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
++"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84"
++"checksum regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9329abc99e39129fcceabd24cf5d85b4671ef7c29c50e972bc5afe32438ec384"
++"checksum regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd"
++"checksum regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7d707a4fa2637f2dca2ef9fd02225ec7661fe01a53623c1e6515b6916511f7a7"
++"checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716"
++"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e"
++"checksum reqwest 0.9.24 (registry+https://github.com/rust-lang/crates.io-index)" = "f88643aea3c1343c804950d7bf983bd2067f5ab59db6d613a08e05572f2714ab"
++"checksum route-recognizer 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "ea509065eb0b3c446acdd0102f0d46567dc30902dc0be91d6552035d92b0f4f8"
++"checksum router 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b9b1797ff166029cb632237bb5542696e54961b4cf75a324c6f05c9cf0584e4e"
++"checksum rust-gmp 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c3ddf28998d5730b96a9fe188557953de503d77ff403ae175ad1417921e5d906"
++"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783"
++"checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda"
++"checksum rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "c5f5376ea5e30ce23c03eb77cbe4962b988deead10910c372b226388b594c084"
++"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
++"checksum ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8"
++"checksum safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
++"checksum same-file 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d931a44fdaa43b8637009e7632a02adc4f2b2e0733c08caa4cf00e8da4a117a7"
++"checksum schannel 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "87f550b06b6cba9c8b8be3ee73f391990116bf527450d2556e9b9ce263b9a021"
++"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d"
++"checksum security-framework 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8ef2429d7cefe5fd28bd1d2ed41c944547d4ff84776f5935b456da44593a16df"
++"checksum security-framework-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e31493fc37615debb8c5090a7aeb4a9730bc61e77ab10b9af59f1a202284f895"
++"checksum semver 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)" = "d4f410fedcf71af0345d7607d246e7ad15faaadd49d240ee3b24e5dc21a820ac"
++"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
++"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
++"checksum sequence_trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c915714ca833b1d4d6b8f6a9d72a3ff632fe45b40a8d184ef79c81bec6327eed"
++"checksum serde 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)" = "9dad3f759919b92c3068c696c15c3d17238234498bbdcc80f2c469606f948ac8"
++"checksum serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449"
++"checksum serde_codegen 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)" = "a4c5d8a33087d8984f9535daa62a6498a08f6476050b00ab9339dd847e4c25cc"
++"checksum serde_codegen_internals 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "afad7924a009f859f380e4a2e3a509a845c2ac66435fcead74a4d983b21ae806"
++"checksum serde_derive 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)" = "ce44e5f4264b39e9d29c875357b7cc3ebdfb967bb9e22bfb5e44ffa400af5306"
++"checksum serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64"
++"checksum serde_json 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)" = "67f7d2e9edc3523a9c8ec8cd6ec481b3a27810aafee3e625d311febd3e656b4c"
++"checksum serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)" = "48c575e0cc52bdd09b47f330f646cf59afc586e9c4e3ccd6fc1f625b8ea1dad7"
++"checksum serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a"
++"checksum shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9ee04b46101f57121c9da2b151988283b6beb79b34f5bb29a58ee48cb695122c"
++"checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac"
++"checksum slab 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d807fd58c4181bbabed77cb3b891ba9748241a552bcc5be698faaebefc54f46e"
++"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
++"checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6"
++"checksum smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44e59e0c9fa00817912ae6e4e6e3c4fe04455e75699d06eedc7d85917ed8e8f4"
++"checksum staticfile 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "31493480e073d52522a94cdf56269dd8eb05f99549effd1826b0271690608878"
++"checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d"
++"checksum strsim 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "67f84c44fbb2f91db7fef94554e6b2ac05909c9c0b0bc23bb98d3a1aebfe7f7c"
++"checksum syn 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)" = "58fd09df59565db3399efbba34ba8a2fec1307511ebd245d0061ff9d42691673"
++"checksum syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1e4ff033220a41d1a57d8125eab57bf5263783dfdcc18688b1dacc6ce9651ef8"
++"checksum synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545"
++"checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8"
++"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
++"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b"
++"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f"
++"checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6"
++"checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46"
++"checksum tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443"
++"checksum tokio-executor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "ca6df436c42b0c3330a82d855d2ef017cd793090ad550a6bc2184f4b933532ab"
++"checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926"
++"checksum tokio-reactor 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "6732fe6b53c8d11178dcb77ac6d9682af27fc6d4cb87789449152e5377377146"
++"checksum tokio-sync 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "d06554cce1ae4a50f42fba8023918afa931413aded705b560e29600ccf7c6d76"
++"checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119"
++"checksum tokio-threadpool 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "f0c32ffea4827978e9aa392d2f743d973c1dfa3730a2ed3f22ce1e6984da848c"
++"checksum tokio-timer 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" = "1739638e364e558128461fc1ad84d997702c8e31c2e6b18fb99842268199e827"
++"checksum toml 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "736b60249cb25337bc196faa43ee12c705e426f3d55c214d73a4e7be06f92cb4"
++"checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079"
++"checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382"
++"checksum try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "283d3b89e1368717881a9d51dad843cc435380d8109c9e47d38780a324698d8b"
++"checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887"
++"checksum typemap 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "653be63c80a3296da5551e1bfd2cca35227e13cdd08c6668903ae2f4f77aa1f6"
++"checksum ucd-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa9b3b49edd3468c0e6565d85783f51af95212b6fa3986a5500954f00b460874"
++"checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33"
++"checksum unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
++"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
++"checksum unicode-normalization 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b561e267b2326bb4cebfc0ef9e68355c7abe6c6f522aeac2f5bf95d56c59bdcf"
++"checksum unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479"
++"checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc"
++"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
++"checksum unsafe-any 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f30360d7979f5e9c6e6cea48af192ea8fab4afb3cf72597154b8f08935bc9c7f"
++"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a"
++"checksum url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "75b414f6c464c879d7f9babf951f23bc3743fb7313c081b2e6ca719067ea9d61"
++"checksum urlencoded 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8c28708636d6f7298a53b1cdb6af40f1ab523209a7cb83cf4d41b3ebc671d319"
++"checksum utf8-ranges 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b4ae116fef2b7fea257ed6440d3cfcff7f190865f170cdad00bb6465bf18ecba"
++"checksum uuid 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1a9ff57156caf7e22f37baf3c9d8f6ce8194842c23419dafcb0716024514d162"
++"checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a"
++"checksum vcpkg 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3fc439f2794e98976c88a2a2dafce96b930fe8010b0a256b3c2199a773933168"
++"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd"
++"checksum version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce"
++"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
++"checksum walkdir 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c66c0b9792f0a765345452775f3adbd28dde9d33f30d13e5dcc5ae17cf6f3780"
++"checksum walkdir 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "bb08f9e670fab86099470b97cd2b252d6527f0b3cc1401acdb595ffc9dd288ff"
++"checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230"
++"checksum wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d"
++"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
++"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6"
++"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
++"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
++"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
++"checksum winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9"
++"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
++"checksum xml-rs 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7ec6c39eaa68382c8e31e35239402c0a9489d4141a8ceb0c716099a0b515b562"
diff --git a/nixpkgs/pkgs/applications/science/misc/rink/default.nix b/nixpkgs/pkgs/applications/science/misc/rink/default.nix
new file mode 100644
index 000000000000..5d592c233b62
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/rink/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, rustPlatform, openssl, pkgconfig, gmp, ncurses }:
+
+rustPlatform.buildRustPackage rec {
+  version = "0.4.5";
+  pname = "rink";
+
+  src = fetchFromGitHub {
+    owner = "tiffany352";
+    repo = "rink-rs";
+    rev = "v${version}";
+    sha256 = "0vl996y58a9b62d8sqrpfn2h8qkya7qbg5zqsmy7nxhph1vhbspj";
+  };
+
+  # Upstreamed in https://github.com/tiffany352/rink-rs/pull/53
+  cargoPatches = [ ./cargo-lock.patch ];
+
+  cargoSha256 = "0shlh0m9k0iqxpv9zmiw7a6v197swrvpz9x6qzhximzkdwni9gz9";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ openssl gmp ncurses ];
+
+  # Some tests fail and/or attempt to use internet servers.
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Unit-aware calculator";
+    homepage = "https://rink.tiffnix.com";
+    license = with licenses; [ mpl20 gpl3 ];
+    maintainers = with maintainers; [ sb0 filalex77 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/root/5.nix b/nixpkgs/pkgs/applications/science/misc/root/5.nix
new file mode 100644
index 000000000000..fd06d721ebd1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/root/5.nix
@@ -0,0 +1,96 @@
+{ stdenv, fetchurl, fetchpatch, cmake, pcre, pkgconfig, python2
+, libX11, libXpm, libXft, libXext, libGLU, libGL, zlib, libxml2, lzma, gsl_1
+, Cocoa, OpenGL, noSplash ? false }:
+
+stdenv.mkDerivation rec {
+  pname = "root";
+  version = "5.34.36";
+
+  src = fetchurl {
+    url = "https://root.cern.ch/download/root_v${version}.source.tar.gz";
+    sha256 = "1kbx1jxc0i5xfghpybk8927a0wamxyayij9c74zlqm0595gqx1pw";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ cmake pcre python2 zlib libxml2 lzma gsl_1 ]
+    ++ stdenv.lib.optionals (!stdenv.isDarwin) [ libX11 libXpm libXft libXext libGLU libGL ]
+    ++ stdenv.lib.optionals (stdenv.isDarwin) [ Cocoa OpenGL ]
+    ;
+
+  patches = [
+    ./sw_vers_root5.patch
+
+    (fetchpatch {
+      name = "enable_new_gcc.patch";
+      url = "https://aur.archlinux.org/cgit/aur.git/plain/enable_new_gcc.patch?h=root5&id=91c50876081a0af36f84ec4f0f9dba869107fa4f";
+      sha256 = "1rnp0xlw0yqi7mjs4w145njd79i8kkir1qik7zwicdik9axf8ygm";
+    })
+
+    # prevents rootcint from looking in /usr/includes and such
+    ./purify_include_paths_root5.patch
+
+    # disable dictionary generation for stuff that includes libc headers
+    # our glibc requires a modern compiler
+    ./disable_libc_dicts_root5.patch
+  ];
+
+  preConfigure = ''
+    patchShebangs build/unix/
+    ln -s ${stdenv.lib.getDev stdenv.cc.libc}/include/AvailabilityMacros.h cint/cint/include/
+  ''
+  # Fix CINTSYSDIR for "build" version of rootcint
+  # This is probably a bug that breaks out-of-source builds
+  + ''
+    substituteInPlace cint/cint/src/loadfile.cxx\
+      --replace 'env = "cint";' 'env = "'`pwd`'/cint";'
+  '' + stdenv.lib.optionalString noSplash ''
+    substituteInPlace rootx/src/rootx.cxx --replace "gNoLogo = false" "gNoLogo = true"
+  '';
+
+  cmakeFlags = [
+    "-Drpath=ON"
+    "-DCMAKE_INSTALL_LIBDIR=lib"
+    "-DCMAKE_INSTALL_INCLUDEDIR=include"
+    "-Dalien=OFF"
+    "-Dbonjour=OFF"
+    "-Dcastor=OFF"
+    "-Dchirp=OFF"
+    "-Ddavix=OFF"
+    "-Ddcache=OFF"
+    "-Dfftw3=OFF"
+    "-Dfitsio=OFF"
+    "-Dfortran=OFF"
+    "-Dgfal=OFF"
+    "-Dgsl_shared=ON"
+    "-Dgviz=OFF"
+    "-Dhdfs=OFF"
+    "-Dkrb5=OFF"
+    "-Dldap=OFF"
+    "-Dmathmore=ON"
+    "-Dmonalisa=OFF"
+    "-Dmysql=OFF"
+    "-Dodbc=OFF"
+    "-Dopengl=ON"
+    "-Doracle=OFF"
+    "-Dpgsql=OFF"
+    "-Dpythia6=OFF"
+    "-Dpythia8=OFF"
+    "-Drfio=OFF"
+    "-Dsqlite=OFF"
+    "-Dssl=OFF"
+    "-Dxml=ON"
+    "-Dxrootd=OFF"
+  ]
+  ++ stdenv.lib.optional stdenv.isDarwin "-DOPENGL_INCLUDE_DIR=${OpenGL}/Library/Frameworks";
+
+  enableParallelBuilding = true;
+
+  setupHook = ./setup-hook.sh;
+
+  meta = with stdenv.lib; {
+    homepage = "https://root.cern.ch/";
+    description = "A data analysis framework";
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ veprbl ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/root/default.nix b/nixpkgs/pkgs/applications/science/misc/root/default.nix
new file mode 100644
index 000000000000..990952e21aca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/root/default.nix
@@ -0,0 +1,93 @@
+{ stdenv, fetchurl, makeWrapper, cmake, gl2ps, gsl, libX11, libXpm, libXft
+, libXext, libGLU, libGL, libxml2, lz4, lzma, pcre, pkgconfig, python, xxHash
+, zlib
+, Cocoa, OpenGL, noSplash ? false }:
+
+stdenv.mkDerivation rec {
+  pname = "root";
+  version = "6.18.04";
+
+  src = fetchurl {
+    url = "https://root.cern.ch/download/root_v${version}.source.tar.gz";
+    sha256 = "196ghma6g5a7sqz52wyjkgvmh4hj4vqwppm0zwdypy33hgy8anii";
+  };
+
+  nativeBuildInputs = [ makeWrapper cmake pkgconfig ];
+  buildInputs = [ gl2ps pcre python zlib libxml2 lz4 lzma gsl xxHash ]
+    ++ stdenv.lib.optionals (!stdenv.isDarwin) [ libX11 libXpm libXft libXext libGLU libGL ]
+    ++ stdenv.lib.optionals (stdenv.isDarwin) [ Cocoa OpenGL ]
+    ;
+  propagatedBuildInputs = [ python.pkgs.numpy ];
+
+  patches = [
+    ./sw_vers.patch
+  ];
+
+  preConfigure = ''
+    rm -rf builtins/*
+    substituteInPlace cmake/modules/SearchInstalledSoftware.cmake \
+      --replace 'set(lcgpackages ' '#set(lcgpackages '
+
+    patchShebangs build/unix/
+  '' + stdenv.lib.optionalString noSplash ''
+    substituteInPlace rootx/src/rootx.cxx --replace "gNoLogo = false" "gNoLogo = true"
+  '';
+
+  cmakeFlags = [
+    "-Drpath=ON"
+    "-DCMAKE_INSTALL_LIBDIR=lib"
+    "-DCMAKE_INSTALL_INCLUDEDIR=include"
+    "-Dalien=OFF"
+    "-Dbonjour=OFF"
+    "-Dcastor=OFF"
+    "-Dchirp=OFF"
+    "-Dclad=OFF"
+    "-Ddavix=OFF"
+    "-Ddcache=OFF"
+    "-Dfail-on-missing=ON"
+    "-Dfftw3=OFF"
+    "-Dfitsio=OFF"
+    "-Dfortran=OFF"
+    "-Dimt=OFF"
+    "-Dgfal=OFF"
+    "-Dgviz=OFF"
+    "-Dhdfs=OFF"
+    "-Dkrb5=OFF"
+    "-Dldap=OFF"
+    "-Dmonalisa=OFF"
+    "-Dmysql=OFF"
+    "-Dodbc=OFF"
+    "-Dopengl=ON"
+    "-Doracle=OFF"
+    "-Dpgsql=OFF"
+    "-Dpythia6=OFF"
+    "-Dpythia8=OFF"
+    "-Drfio=OFF"
+    "-Dsqlite=OFF"
+    "-Dssl=OFF"
+    "-Dvdt=OFF"
+    "-Dxml=ON"
+    "-Dxrootd=OFF"
+  ]
+  ++ stdenv.lib.optional (stdenv.cc.libc != null) "-DC_INCLUDE_DIRS=${stdenv.lib.getDev stdenv.cc.libc}/include"
+  ++ stdenv.lib.optional stdenv.isDarwin "-DOPENGL_INCLUDE_DIR=${OpenGL}/Library/Frameworks";
+
+  enableParallelBuilding = true;
+
+  postInstall = ''
+    for prog in rootbrowse rootcp rooteventselector rootls rootmkdir rootmv rootprint rootrm rootslimtree; do
+      wrapProgram "$out/bin/$prog" \
+        --prefix PYTHONPATH : "$out/lib"
+    done
+  '';
+
+  setupHook = ./setup-hook.sh;
+
+  meta = with stdenv.lib; {
+    homepage = "https://root.cern.ch/";
+    description = "A data analysis framework";
+    platforms = platforms.unix;
+    maintainers = [ maintainers.veprbl ];
+    license = licenses.lgpl21;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/root/disable_libc_dicts_root5.patch b/nixpkgs/pkgs/applications/science/misc/root/disable_libc_dicts_root5.patch
new file mode 100644
index 000000000000..abd6222847ef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/root/disable_libc_dicts_root5.patch
@@ -0,0 +1,27 @@
+diff --git a/cint/ROOT/CMakeLists.txt b/cint/ROOT/CMakeLists.txt
+--- a/cint/ROOT/CMakeLists.txt
++++ b/cint/ROOT/CMakeLists.txt
+@@ -47,21 +47,13 @@ set(CINTSTLDLLHEADERS
+     ${CMAKE_SOURCE_DIR}/cint/cint/lib/stdstrct/stdcxxfunc.h
+   )
+ set(CINTINCDLLNAMES 
+-    stdfunc 
++#    stdfunc 
+ #    stdcxxfunc
+    )
+ set(CINTINCDLLHEADERS
+-    ${CMAKE_SOURCE_DIR}/cint/cint/lib/stdstrct/stdfunc.h 
++#    ${CMAKE_SOURCE_DIR}/cint/cint/lib/stdstrct/stdfunc.h 
+ #    ${CMAKE_SOURCE_DIR}/cint/cint/lib/stdstrct/stdcxxfunc.h
+    )
+-if(NOT WIN32)
+-  set(CINTSTLDLLNAMES ${CINTSTLDLLNAMES}  valarray)
+-  set(CINTSTLDLLHEADERS ${CINTSTLDLLHEADERS} ${CINTDLLDIR}/vary.h)
+-  set(CINTINCDLLNAMES ${CINTINCDLLNAMES} posix ipc)
+-  set(CINTINCDLLHEADERS ${CINTINCDLLHEADERS} 
+-    ${CMAKE_SOURCE_DIR}/cint/cint/lib/posix/exten.h 
+-    ${CMAKE_SOURCE_DIR}/cint/cint/lib/ipc/ipcif.h)
+-endif()
+ 
+ set(CINTBUILDLOADER
+     vector 
diff --git a/nixpkgs/pkgs/applications/science/misc/root/purify_include_paths_root5.patch b/nixpkgs/pkgs/applications/science/misc/root/purify_include_paths_root5.patch
new file mode 100644
index 000000000000..6773603b8ad3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/root/purify_include_paths_root5.patch
@@ -0,0 +1,204 @@
+diff --git a/cint/cint/src/loadfile.cxx b/cint/cint/src/loadfile.cxx
+--- a/cint/cint/src/loadfile.cxx
++++ b/cint/cint/src/loadfile.cxx
+@@ -1365,92 +1365,6 @@ int G__statfilename(const char *filenamein, struct stat *statBuf,
+          }
+       }         
+ #endif /* G__EDU_VERSION */
+-      
+-#ifdef G__VISUAL
+-      /**********************************************
+-       * try /msdev/include
+-       **********************************************/
+-      if('\0'!=G__cintsysdir[0]) {
+-         workname.Format("/msdev/include/%s%s",filename(),addpost[i2]);
+-         res = stat( workname, statBuf );         
+-         if (res==0) {
+-            if (fullPath) fullPath->Swap(workname);
+-            return res;
+-         }
+-      }
+-#endif /* G__VISUAL */
+-         
+-#ifdef G__SYMANTEC
+-      /**********************************************
+-       * try /sc/include
+-       **********************************************/
+-      if('\0'!=G__cintsysdir[0]) {
+-         workname.Format("/sc/include/%s%s",filename(),addpost[i2]);
+-         res = stat( workname, statBuf );         
+-         if (res==0) {
+-            if (fullPath) fullPath->Swap(workname);
+-            return res;
+-         }
+-      }
+-#endif // G__SYMANTEC
+-         
+-#ifndef G__WIN32
+-      /**********************************************
+-       * try /usr/include/filename
+-       **********************************************/
+-      if('\0'!=G__cintsysdir[0]) {
+-         workname.Format("/usr/include/%s%s",filename(),addpost[i2]);
+-         res = stat( workname, statBuf );         
+-         if (res==0) {
+-            if (fullPath) fullPath->Swap(workname);
+-            return res;
+-         }
+-      }
+-#endif
+-      
+-#ifdef __GNUC__
+-      /**********************************************
+-       * try /usr/include/g++/filename
+-       **********************************************/
+-      if('\0'!=G__cintsysdir[0]) {
+-         workname.Format("/usr/include/g++/%s%s",filename(),addpost[i2]);
+-         res = stat( workname, statBuf );         
+-         if (res==0) {
+-            if (fullPath) fullPath->Swap(workname);
+-            return res;
+-         }
+-      }
+-#endif /* __GNUC__ */
+-      
+-#ifndef G__WIN32
+-      /* #ifdef __hpux */
+-      /**********************************************
+-       * try /usr/include/CC/filename
+-       **********************************************/
+-      if('\0'!=G__cintsysdir[0]) {
+-         workname.Format("/usr/include/CC/%s%s",filename(),addpost[i2]);
+-         res = stat( workname, statBuf );         
+-         if (res==0) {
+-            if (fullPath) fullPath->Swap(workname);
+-            return res;
+-         }
+-      }         
+-#endif
+-         
+-#ifndef G__WIN32
+-      /**********************************************
+-       * try /usr/include/codelibs/filename
+-       **********************************************/
+-      if('\0'!=G__cintsysdir[0]) {
+-         workname.Format("/usr/include/codelibs/%s%s"
+-                         ,filename(),addpost[i2]);
+-         res = stat( workname, statBuf );         
+-         if (res==0) {
+-            if (fullPath) fullPath->Swap(workname);
+-            return res;
+-         }
+-      }
+-#endif
+    }
+    return -1;
+ }
+@@ -1960,107 +1874,6 @@ int G__loadfile(const char *filenamein)
+       }
+       if(G__ifile.fp) break;
+ #endif /* G__EDU_VERSION */
+-
+-#ifdef G__VISUAL
+-      /**********************************************
+-       * try /msdev/include
+-       **********************************************/
+-      if('\0'!=G__cintsysdir[0]) {
+-         G__snprintf(G__ifile.name,G__MAXFILENAME,"/msdev/include/%s%s",filename(),addpost[i2]);
+-#ifndef G__WIN32
+-        G__ifile.fp = fopen(G__ifile.name,"r");
+-#else
+-        G__ifile.fp = fopen(G__ifile.name,"rb");
+-#endif
+-        G__globalcomp=G__store_globalcomp;
+-      }
+-      if(G__ifile.fp) break;
+-#endif /* G__VISUAL */
+-
+-#ifdef G__SYMANTEC
+-      /**********************************************
+-       * try /sc/include
+-       **********************************************/
+-      if('\0'!=G__cintsysdir[0]) {
+-         G__snprintf(G__ifile.name,G__MAXFILENAME,"/sc/include/%s%s",filename(),addpost[i2]);
+-#ifndef G__WIN32
+-        G__ifile.fp = fopen(G__ifile.name,"r");
+-#else
+-        G__ifile.fp = fopen(G__ifile.name,"rb");
+-#endif
+-        G__globalcomp=G__store_globalcomp;
+-      }
+-      if(G__ifile.fp) break;
+-#endif /* G__SYMANTEC */
+-
+-#ifndef G__WIN32
+-      /**********************************************
+-       * try /usr/include/filename
+-       **********************************************/
+-      if('\0'!=G__cintsysdir[0]) {
+-         G__snprintf(G__ifile.name,G__MAXFILENAME,"/usr/include/%s%s",filename(),addpost[i2]);
+-#ifndef G__WIN32
+-        G__ifile.fp = fopen(G__ifile.name,"r");
+-#else
+-        G__ifile.fp = fopen(G__ifile.name,"rb");
+-#endif
+-        G__globalcomp=G__store_globalcomp;
+-      }
+-      if(G__ifile.fp) break;
+-#endif
+-
+-#ifdef __GNUC__
+-      /**********************************************
+-       * try /usr/include/g++/filename
+-       **********************************************/
+-      if('\0'!=G__cintsysdir[0]) {
+-         G__snprintf(G__ifile.name,G__MAXFILENAME,"/usr/include/g++/%s%s",filename(),addpost[i2]);
+-#ifndef G__WIN32
+-        G__ifile.fp = fopen(G__ifile.name,"r");
+-#else
+-        G__ifile.fp = fopen(G__ifile.name,"rb");
+-#endif
+-        G__globalcomp=G__store_globalcomp;
+-      }
+-      if(G__ifile.fp) break;
+-#endif /* __GNUC__ */
+-
+-#ifndef G__WIN32
+-/* #ifdef __hpux */
+-      /**********************************************
+-       * try /usr/include/CC/filename
+-       **********************************************/
+-      if('\0'!=G__cintsysdir[0]) {
+-         G__snprintf(G__ifile.name,G__MAXFILENAME,"/usr/include/CC/%s%s",filename(),addpost[i2]);
+-#ifndef G__WIN32
+-        G__ifile.fp = fopen(G__ifile.name,"r");
+-#else
+-        G__ifile.fp = fopen(G__ifile.name,"rb");
+-#endif
+-        G__globalcomp=G__store_globalcomp;
+-      }
+-      if(G__ifile.fp) break;
+-/* #endif __hpux */
+-#endif
+-
+-#ifndef G__WIN32
+-/* #ifdef __hpux */
+-      /**********************************************
+-       * try /usr/include/codelibs/filename
+-       **********************************************/
+-      if('\0'!=G__cintsysdir[0]) {
+-        G__snprintf(G__ifile.name,G__MAXFILENAME,"/usr/include/codelibs/%s%s"
+-                    ,filename(),addpost[i2]);
+-#ifndef G__WIN32
+-        G__ifile.fp = fopen(G__ifile.name,"r");
+-#else
+-        G__ifile.fp = fopen(G__ifile.name,"rb");
+-#endif
+-        G__globalcomp=G__store_globalcomp;
+-      }
+-      if(G__ifile.fp) break;
+-/* #endif __hpux */
+-#endif
+     }
+   }
+ 
diff --git a/nixpkgs/pkgs/applications/science/misc/root/setup-hook.sh b/nixpkgs/pkgs/applications/science/misc/root/setup-hook.sh
new file mode 100644
index 000000000000..b26cf9b779f8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/root/setup-hook.sh
@@ -0,0 +1,13 @@
+thisroot () {
+    # Workaround thisroot.sh dependency on man
+    if [ -z "${MANPATH-}" ]; then
+        MANPATH=:
+    fi
+    local oldOpts="-u"
+    shopt -qo nounset || oldOpts="+u"
+    set +u
+    source @out@/bin/thisroot.sh
+    set "$oldOpts"
+}
+
+postHooks+=(thisroot)
diff --git a/nixpkgs/pkgs/applications/science/misc/root/sw_vers.patch b/nixpkgs/pkgs/applications/science/misc/root/sw_vers.patch
new file mode 100644
index 000000000000..34af132c11f8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/root/sw_vers.patch
@@ -0,0 +1,101 @@
+diff a/build/unix/compiledata.sh b/build/unix/compiledata.sh
+--- a/build/unix/compiledata.sh
++++ b/build/unix/compiledata.sh
+@@ -47,7 +47,7 @@ fi
+ 
+ if [ "$ARCH" = "macosx" ] || [ "$ARCH" = "macosx64" ] || \
+    [ "$ARCH" = "macosxicc" ]; then
+-   macosx_minor=`sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2`
++   macosx_minor=12
+    SOEXT="so"
+    if [ $macosx_minor -ge 5 ]; then
+       if [ "x`echo $SOFLAGS | grep -- '-install_name'`" != "x" ]; then
+diff a/cmake/modules/SetUpMacOS.cmake b/cmake/modules/SetUpMacOS.cmake
+--- a/cmake/modules/SetUpMacOS.cmake
++++ b/cmake/modules/SetUpMacOS.cmake
+@@ -2,17 +2,8 @@ set(ROOT_ARCHITECTURE macosx)
+ set(ROOT_PLATFORM macosx)
+ 
+ if (CMAKE_SYSTEM_NAME MATCHES Darwin)
+-  EXECUTE_PROCESS(COMMAND sw_vers "-productVersion"
+-                  COMMAND cut -d . -f 1-2
+-                  OUTPUT_VARIABLE MACOSX_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
+-
+-  MESSAGE(STATUS "Found a Mac OS X System ${MACOSX_VERSION}")
+-
+-  if(MACOSX_VERSION VERSION_GREATER 10.7 AND ${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
+     set(libcxx ON CACHE BOOL "Build using libc++" FORCE)
+-  endif()
+ 
+-  if(MACOSX_VERSION VERSION_GREATER 10.4)
+     #TODO: check haveconfig and rpath -> set rpath true
+     #TODO: check Thread, define link command
+     #TODO: more stuff check configure script
+@@ -25,23 +16,7 @@ if (CMAKE_SYSTEM_NAME MATCHES Darwin)
+        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64")
+        SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64")
+        SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -m64")
+-    else()
+-       MESSAGE(STATUS "Found a 32bit system")
+-       SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
+-       SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
+-       SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -m32")
+-    endif()
+-  endif()
+-
+-  if(MACOSX_VERSION VERSION_GREATER 10.6)
+-    set(MACOSX_SSL_DEPRECATED ON)
+-  endif()
+-  if(MACOSX_VERSION VERSION_GREATER 10.7)
+-    set(MACOSX_ODBC_DEPRECATED ON)
+-  endif()
+-  if(MACOSX_VERSION VERSION_GREATER 10.8)
+-    set(MACOSX_GLU_DEPRECATED ON)
+-  endif()
++     endif()
+ 
+   if (CMAKE_COMPILER_IS_GNUCXX)
+      message(STATUS "Found GNU compiler collection")
+@@ -104,7 +79,6 @@ if (CMAKE_SYSTEM_NAME MATCHES Darwin)
+   endif()
+ 
+   #---Set Linker flags----------------------------------------------------------------------
+-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -mmacosx-version-min=${MACOSX_VERSION}")
+ else (CMAKE_SYSTEM_NAME MATCHES Darwin)
+   MESSAGE(FATAL_ERROR "There is no setup for this this Apple system up to now. Don't know waht to do. Stop cmake at this point.")
+ endif (CMAKE_SYSTEM_NAME MATCHES Darwin)
+diff a/config/root-config.in b/config/root-config.in
+--- a/config/root-config.in
++++ b/config/root-config.in
+@@ -306,12 +306,6 @@ macosxicc)
+    auxlibs="-lm -ldl"
+    ;;
+ macosx64)
+-   # MacOS X with gcc (GNU cc v4.x) in 64 bit mode
+-   macosx_minor=`sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2`
+-   # cannot find the one linked to libGraf if relocated after built
+-   if [ $macosx_minor -le 4 ]; then
+-      rootlibs="$rootlibs -lfreetype"
+-   fi
+    auxcflags="${cxxversionflag} -m64"
+    auxldflags="-m64"
+    auxlibs="-lm -ldl"
+@@ -375,18 +369,11 @@ freebsd* | openbsd* | linux*)
+ macosx*)
+    for f in $features ; do
+       if test "x$f" = "xthread" ; then
+-         if [ $macosx_minor -ge 5 ]; then
+             auxcflags="-pthread $auxcflags"
+             auxlibs="-lpthread $auxlibs"
+-         else
+-            auxcflags="-D_REENTRANT $auxcflags"
+-            auxlibs="-lpthread $auxlibs"
+-         fi
+       fi
+       if test "x$f" = "xrpath" ; then
+-         if [ $macosx_minor -ge 5 ]; then
+             auxlibs="-Wl,-rpath,$libdir $auxlibs"
+-         fi
+       fi
+       if test "x$f" = "xlibcxx" ; then
+          auxcflags="-stdlib=libc++ $auxcflags"
diff --git a/nixpkgs/pkgs/applications/science/misc/root/sw_vers_root5.patch b/nixpkgs/pkgs/applications/science/misc/root/sw_vers_root5.patch
new file mode 100644
index 000000000000..f044bed91f3d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/root/sw_vers_root5.patch
@@ -0,0 +1,104 @@
+diff --git a/build/unix/compiledata.sh b/build/unix/compiledata.sh
+--- a/build/unix/compiledata.sh
++++ b/build/unix/compiledata.sh
+@@ -49,7 +49,7 @@ fi
+ 
+ if [ "$ARCH" = "macosx" ] || [ "$ARCH" = "macosx64" ] || \
+    [ "$ARCH" = "macosxicc" ]; then
+-   macosx_minor=`sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2`
++   macosx_minor=7
+    SOEXT="so"
+    if [ $macosx_minor -ge 5 ]; then
+       if [ "x`echo $SOFLAGS | grep -- '-install_name'`" != "x" ]; then
+diff --git a/cmake/modules/SetUpMacOS.cmake b/cmake/modules/SetUpMacOS.cmake
+--- a/cmake/modules/SetUpMacOS.cmake
++++ b/cmake/modules/SetUpMacOS.cmake
+@@ -12,25 +12,11 @@ set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} /usr/X11R6)
+ #---------------------------------------------------------------------------------------------------------
+ 
+ if (CMAKE_SYSTEM_NAME MATCHES Darwin)
+-  EXECUTE_PROCESS(COMMAND sw_vers "-productVersion"
+-                  COMMAND cut -d . -f 1-2
+-                  OUTPUT_VARIABLE MACOSX_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
+-  MESSAGE(STATUS "Found a Mac OS X System ${MACOSX_VERSION}")
+-  EXECUTE_PROCESS(COMMAND sw_vers "-productVersion"
+-                  COMMAND cut -d . -f 2
+-                  OUTPUT_VARIABLE MACOSX_MINOR OUTPUT_STRIP_TRAILING_WHITESPACE)
+-
+-  if(MACOSX_VERSION VERSION_GREATER 10.7 AND ${CMAKE_CXX_COMPILER_ID} STREQUAL Clang)
+     set(libcxx ON CACHE BOOL "Build using libc++" FORCE)
+-  endif()
+ 
+-  if(${MACOSX_MINOR} GREATER 4)
+     #TODO: check haveconfig and rpath -> set rpath true
+     #TODO: check Thread, define link command
+     #TODO: more stuff check configure script
+-    execute_process(COMMAND /usr/sbin/sysctl machdep.cpu.extfeatures OUTPUT_VARIABLE SYSCTL_OUTPUT)
+-    if(${SYSCTL_OUTPUT} MATCHES 64)
+-       MESSAGE(STATUS "Found a 64bit system")
+        set(ROOT_ARCHITECTURE macosx64)
+        SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
+        SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS} -m64")
+@@ -38,28 +24,6 @@ if (CMAKE_SYSTEM_NAME MATCHES Darwin)
+        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64")
+        SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64")
+        SET(CMAKE_FORTRAN_FLAGS "${CMAKE_FORTRAN_FLAGS} -m64")
+-    else(${SYSCTL_OUTPUT} MATCHES 64)
+-       MESSAGE(STATUS "Found a 32bit system")
+-       SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
+-       SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
+-       SET(CMAKE_FORTRAN_FLAGS "${CMAKE_FORTRAN_FLAGS} -m32")
+-    endif(${SYSCTL_OUTPUT} MATCHES 64)
+-  endif()
+-
+-  if(MACOSX_VERSION VERSION_GREATER 10.6)
+-    set(MACOSX_SSL_DEPRECATED ON)
+-  endif()
+-  if(MACOSX_VERSION VERSION_GREATER 10.7)
+-    set(MACOSX_ODBC_DEPRECATED ON)
+-  endif()
+-  if(MACOSX_VERSION VERSION_GREATER 10.8)
+-    set(MACOSX_GLU_DEPRECATED ON)
+-    set(MACOSX_KRB5_DEPRECATED ON)
+-    set(MACOSX_TMPNAM_DEPRECATED ON)
+-  endif()
+-  if(MACOSX_VERSION VERSION_GREATER 10.9)
+-    set(MACOSX_LDAP_DEPRECATED ON)
+-  endif()
+ 
+   if (CMAKE_COMPILER_IS_GNUCXX)
+      message(STATUS "Found GNU compiler collection")
+@@ -132,7 +96,7 @@ if (CMAKE_SYSTEM_NAME MATCHES Darwin)
+   endif()
+ 
+   #---Set Linker flags----------------------------------------------------------------------
+-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}  -mmacosx-version-min=${MACOSX_VERSION} -Wl,-rpath,@loader_path/../lib")
++  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath,@loader_path/../lib")
+ 
+ 
+ else (CMAKE_SYSTEM_NAME MATCHES Darwin)
+diff --git a/config/root-config.in b/config/root-config.in
+--- a/config/root-config.in
++++ b/config/root-config.in
+@@ -391,7 +391,7 @@ macosxicc)
+    ;;
+ macosx64)
+    # MacOS X with gcc (GNU cc v4.x) in 64 bit mode
+-   macosx_minor=`sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2`
++   macosx_minor=7
+    # cannot find the one linked to libGraf if relocated after built
+    if [ $macosx_minor -le 4 ]; then
+       rootlibs="$rootlibs -lfreetype"
+diff --git a/cint/ROOT/CMakeLists.txt b/cint/ROOT/CMakeLists.txt
+--- a/cint/ROOT/CMakeLists.txt
++++ b/cint/ROOT/CMakeLists.txt
+@@ -232,9 +232,7 @@ foreach(_name ${CINTINCDLLNAMES})
+                        DEPENDS ${HEADER_OUTPUT_PATH}/systypes.h
+                       )
+
+-    if(MACOSX_MINOR GREATER 4)
+       set(_ExtraFlag "-D__DARWIN_UNIX03")
+-    endif()
+
+     add_custom_command(OUTPUT ${OutFileName}
+                        COMMAND cint_tmp -K -w1 -z${_name} -n${OutFileName} -D__MAKECINT__ -DG__MAKECINT ${_ExtraFlag} -c-2 -Z0 ${InFileName} ${AdditionalHeaderFiles} ${CMAKE_BINARY_DIR}/cint/cint/include/sys/types.h ${CMAKE_SOURCE_DIR}/cint/cint/lib/posix/posix.h
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/science/misc/sasview/default.nix b/nixpkgs/pkgs/applications/science/misc/sasview/default.nix
new file mode 100644
index 000000000000..bbbe80eb6568
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/sasview/default.nix
@@ -0,0 +1,75 @@
+{ lib, fetchFromGitHub, gcc, python }:
+
+let
+  xhtml2pdf = import ./xhtml2pdf.nix {
+    inherit lib;
+    fetchPypi = python.pkgs.fetchPypi;
+    buildPythonPackage = python.pkgs.buildPythonPackage;
+    html5lib = python.pkgs.html5lib;
+    httplib2 = python.pkgs.httplib2;
+    nose = python.pkgs.nose;
+    pillow = python.pkgs.pillow;
+    pypdf2 = python.pkgs.pypdf2;
+    reportlab = python.pkgs.reportlab;
+  };
+
+in
+
+python.pkgs.buildPythonApplication rec {
+  pname = "sasview";
+  version = "4.2.0";
+
+  checkInputs = with python.pkgs; [
+    pytest
+    unittest-xml-reporting
+  ];
+
+  checkPhase = ''
+    # fix the following error:
+    # imported module 'sas.sascalc.data_util.uncertainty' has this __file__ attribute:
+    #   /build/source/build/lib.linux-x86_64-2.7/sas/sascalc/data_util/uncertainty.py
+    # which is not the same as the test file we want to collect:
+    #   /build/source/dist/tmpbuild/sasview/sas/sascalc/data_util/uncertainty.py
+    rm -r dist/tmpbuild
+
+    HOME=$(mktemp -d) py.test
+  '';
+
+  propagatedBuildInputs = with python.pkgs; [
+    bumps
+    gcc
+    h5py
+    libxslt
+    lxml
+    matplotlib
+    numpy
+    pyparsing
+    periodictable
+    pillow
+    pylint
+    pyopencl
+    reportlab
+    sasmodels
+    scipy
+    six
+    sphinx
+    wxPython
+    xhtml2pdf
+  ];
+
+  src = fetchFromGitHub {
+    owner = "SasView";
+    repo = "sasview";
+    rev = "v${version}";
+    sha256 = "0k3486h46k6406h0vla8h68fd78wh3dcaq5w6f12jh6g4cjxv9qa";
+  };
+
+  patches = [ ./pyparsing-fix.patch ./local_config.patch ];
+
+  meta = with lib; {
+    homepage = "https://www.sasview.org";
+    description = "Fitting and data analysis for small angle scattering data";
+    maintainers = with maintainers; [ rprospero ];
+    license = licenses.bsd3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/sasview/local_config.patch b/nixpkgs/pkgs/applications/science/misc/sasview/local_config.patch
new file mode 100644
index 000000000000..5b6c3436494a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/sasview/local_config.patch
@@ -0,0 +1,22 @@
+diff --git a/src/sas/_config.py b/src/sas/_config.py
+index ece08fd4c..926768593 100644
+--- a/src/sas/_config.py
++++ b/src/sas/_config.py
+@@ -67,8 +67,8 @@ def load_local_config(app_dir):
+         logger.info("GuiManager loaded %s", path)
+         return module
+     except Exception as exc:
+-        logger.critical("Error loading %s: %s", path, exc)
+-        sys.exit()
++        import sas.sasview.local_config
++        return sas.sasview.local_config
+ 
+ def make_custom_config_path(user_dir):
+     """
+@@ -116,4 +116,4 @@ def load_custom_config(path):
+ 
+     from sas.sasview import custom_config
+     logger.info("GuiManager custom_config defaults to sas.sasview.custom_config")
+-    return custom_config
+\ No newline at end of file
++    return custom_config
diff --git a/nixpkgs/pkgs/applications/science/misc/sasview/pyparsing-fix.patch b/nixpkgs/pkgs/applications/science/misc/sasview/pyparsing-fix.patch
new file mode 100644
index 000000000000..c3cd164a899a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/sasview/pyparsing-fix.patch
@@ -0,0 +1,13 @@
+diff --git a/setup.py b/setup.py
+index 866ab7e36..78727b276 100755
+--- a/setup.py
++++ b/setup.py
+@@ -401,7 +401,7 @@ package_data['sas.sasview'] = ['images/*',
+ packages.append("sas.sasview")
+ 
+ required = [
+-    'bumps>=0.7.5.9', 'periodictable>=1.5.0', 'pyparsing>=2.0.0',
++    'bumps>=0.7.5.9', 'periodictable>=1.5.0',
+ 
+     # 'lxml>=2.2.2',
+     'lxml', 'h5py',
diff --git a/nixpkgs/pkgs/applications/science/misc/sasview/xhtml2pdf.nix b/nixpkgs/pkgs/applications/science/misc/sasview/xhtml2pdf.nix
new file mode 100644
index 000000000000..41d15e2f1bab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/sasview/xhtml2pdf.nix
@@ -0,0 +1,33 @@
+{lib, fetchPypi, buildPythonPackage, html5lib, httplib2, nose, pillow, pypdf2, reportlab}:
+
+let
+  #xhtml2pdf specifically requires version "1.0b10" of html5lib
+  html5 = html5lib.overrideAttrs( oldAttrs: rec {
+    name = "${oldAttrs.pname}-${version}";
+    version = "1.0b10";
+    src = oldAttrs.src.override {
+      inherit version;
+      sha256 = "1yd068a5c00wd0ajq0hqimv7fd82lhrw0w3s01vbhy9bbd6xapqd";
+    };
+  });
+in
+
+buildPythonPackage rec {
+  pname = "xhtml2pdf";
+  version = "0.2.1";
+
+  buildInputs = [html5];
+  propagatedBuildInputs = [httplib2 nose pillow pypdf2 reportlab html5];
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1n9r8zdk9gc2x539fq60bhszmd421ipj8g78zmsn3njvma1az9k1";
+  };
+
+  meta = {
+    description = "A pdf converter for the ReportLab Toolkit";
+    homepage = "https://github.com/xhtml2pdf/xhtml2pdf";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ rprospero ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/simgrid/default.nix b/nixpkgs/pkgs/applications/science/misc/simgrid/default.nix
new file mode 100644
index 000000000000..0ba1cd0d2faf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/simgrid/default.nix
@@ -0,0 +1,112 @@
+{ stdenv, fetchFromGitLab, cmake, perl, python3, boost, valgrind
+# Optional requirements
+# Lua 5.3 needed and not available now
+#, luaSupport ? false, lua5
+, fortranSupport ? false, gfortran
+, buildDocumentation ? false, transfig, ghostscript, doxygen
+, buildJavaBindings ? false, openjdk
+, modelCheckingSupport ? false, libunwind, libevent, elfutils # Inside elfutils: libelf and libdw
+, debug ? false
+, moreTests ? false
+}:
+
+with stdenv.lib;
+
+let
+  optionOnOff = option: if option then "on" else "off";
+in
+
+stdenv.mkDerivation rec {
+  pname = "simgrid";
+  version = "3.25";
+
+  src = fetchFromGitLab {
+    domain = "framagit.org";
+    owner = pname;
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "019fgryfwpcrkv1f3271v7qxk0mfw2w990vgnk1cqhmr9i1f17gs";
+  };
+
+  nativeBuildInputs = [ cmake perl python3 boost valgrind ]
+      ++ optionals fortranSupport [ gfortran ]
+      ++ optionals buildJavaBindings [ openjdk ]
+      ++ optionals buildDocumentation [ transfig ghostscript doxygen ]
+      ++ optionals modelCheckingSupport [ libunwind libevent elfutils ];
+
+  #buildInputs = optional luaSupport lua5;
+
+  # Make it so that libsimgrid.so will be found when running programs from
+  # the build dir.
+  preConfigure = ''
+    export LD_LIBRARY_PATH="$PWD/build/lib"
+  '';
+
+  # Release mode is not supported in SimGrid
+  cmakeBuildType = "Debug";
+
+  # Disable/Enable functionality
+  # Note: those packages are not packaged in Nixpkgs yet so some options
+  # are disabled:
+  # - papi:   for enable_smpi_papi
+  # - ns3:    for enable_ns3
+  # - lua53:  for enable_lua
+  #
+  # For more information see:
+  # https://simgrid.org/doc/3.22/Installing_SimGrid.html#simgrid-compilation-options)
+  cmakeFlags = [
+    "-Denable_documentation=${optionOnOff buildDocumentation}"
+    "-Denable_java=${optionOnOff buildJavaBindings}"
+    "-Denable_fortran=${optionOnOff fortranSupport}"
+    "-Denable_model-checking=${optionOnOff modelCheckingSupport}"
+    "-Denable_ns3=off"
+    "-Denable_lua=off"
+    "-Denable_lib_in_jar=off"
+    "-Denable_maintainer_mode=off"
+    "-Denable_mallocators=on"
+    "-Denable_debug=on"
+    "-Denable_smpi=on"
+    "-Denable_smpi_ISP_testsuite=${optionOnOff moreTests}"
+    "-Denable_smpi_MPICH3_testsuite=${optionOnOff moreTests}"
+    "-Denable_compile_warnings=${optionOnOff debug}"
+    "-Denable_compile_optimizations=${optionOnOff (!debug)}"
+    "-Denable_lto=${optionOnOff (!debug)}"
+    # "-Denable_lua=${optionOnOff luaSupport}"
+    # "-Denable_smpi_papi=${optionOnOff moreTests}"
+  ];
+
+  makeFlags = optional debug "VERBOSE=1";
+
+  # Some Perl scripts are called to generate test during build which
+  # is before the fixupPhase, so do this manualy here:
+  preBuild = ''
+    patchShebangs ..
+  '';
+
+  doCheck = true;
+
+  # Prevent the execution of tests known to fail.
+  preCheck = ''
+    cat <<EOW >CTestCustom.cmake
+    SET(CTEST_CUSTOM_TESTS_IGNORE smpi-replay-multiple)
+    EOW
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Framework for the simulation of distributed applications";
+    longDescription = ''
+      SimGrid is a toolkit that provides core functionalities for the
+      simulation of distributed applications in heterogeneous distributed
+      environments.  The specific goal of the project is to facilitate
+      research in the area of distributed and parallel application
+      scheduling on distributed computing platforms ranging from simple
+      network of workstations to Computational Grids.
+    '';
+    homepage = "https://simgrid.org/";
+    license = licenses.lgpl2Plus;
+    maintainers = with maintainers; [ mickours mpoquet ];
+    platforms = ["x86_64-linux"];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/snakemake/default.nix b/nixpkgs/pkgs/applications/science/misc/snakemake/default.nix
new file mode 100644
index 000000000000..63a727f9c88a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/snakemake/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "snakemake";
+  version = "5.17.0";
+
+  propagatedBuildInputs = with python3Packages; [
+    appdirs
+    ConfigArgParse
+    datrie
+    docutils
+    GitPython
+    jsonschema
+    nbformat
+    psutil
+    pyyaml
+    ratelimiter
+    requests
+    toposort
+    wrapt
+  ];
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "0y652i3saqq2z61yvk0i6q3lnq2xfrygcxms5gygspj71q2n4f7k";
+  };
+
+  doCheck = false; # Tests depend on Google Cloud credentials at ${HOME}/gcloud-service-key.json
+
+  meta = with stdenv.lib; {
+    homepage = "https://snakemake.readthedocs.io";
+    license = licenses.mit;
+    description = "Python-based execution environment for make-like workflows";
+    longDescription = ''
+      Snakemake is a workflow management system that aims to reduce the complexity of
+      creating workflows by providing a fast and comfortable execution environment,
+      together with a clean and readable specification language in Python style. Snakemake
+      workflows are essentially Python scripts extended by declarative code to define
+      rules. Rules describe how to create output files from input files.
+    '';
+    maintainers = with maintainers; [ helkafen renatoGarcia veprbl ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/tulip/default.nix b/nixpkgs/pkgs/applications/science/misc/tulip/default.nix
new file mode 100644
index 000000000000..f29cd41169d4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/tulip/default.nix
@@ -0,0 +1,39 @@
+{ fetchurl, stdenv, libxml2, freetype, libGLU, libGL, glew, qt4
+, cmake, makeWrapper, libjpeg, python }:
+
+let version = "5.2.1"; in
+stdenv.mkDerivation rec {
+  pname = "tulip";
+  inherit version;
+
+  src = fetchurl {
+    url = "mirror://sourceforge/auber/${pname}-${version}_src.tar.gz";
+    sha256 = "0bqmqy6sri87a8xv5xf7ffaq5zin4hiaa13g0l64b84i7yckfwky";
+  };
+
+  buildInputs = [ libxml2 freetype glew libGLU libGL qt4 libjpeg python ];
+
+  nativeBuildInputs = [ cmake makeWrapper ];
+
+  # FIXME: "make check" needs Docbook's DTD 4.4, among other things.
+  doCheck = false;
+
+  meta = {
+    description = "A visualization framework for the analysis and visualization of relational data";
+
+    longDescription =
+      '' Tulip is an information visualization framework dedicated to the
+         analysis and visualization of relational data.  Tulip aims to
+         provide the developer with a complete library, supporting the design
+         of interactive information visualization applications for relational
+         data that can be tailored to the problems he or she is addressing.
+      '';
+
+    homepage = "http://tulip.labri.fr/";
+
+    license = stdenv.lib.licenses.gpl3Plus;
+
+    maintainers = [ ];
+    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux;  # arbitrary choice
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/misc/vite/default.nix b/nixpkgs/pkgs/applications/science/misc/vite/default.nix
new file mode 100644
index 000000000000..0d749bb9be4f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/vite/default.nix
@@ -0,0 +1,44 @@
+{ fetchsvn, stdenv, cmake, qt4, libGLU, libGL }:
+
+# ViTE 1.1 has several bugs, so use the SVN version.
+let
+  rev = "1543";
+  externals = fetchsvn {
+    url = "svn://scm.gforge.inria.fr/svn/vite/externals";
+    sha256 = "1a422n3dp72v4visq5b1i21cf8sj12903sgg5v2hah3sgk02dnyz";
+    inherit rev;
+  };
+in
+stdenv.mkDerivation {
+  name = "vite-1.2pre${rev}";
+
+  src = fetchsvn {
+    url = "svn://scm.gforge.inria.fr/svn/vite/trunk";
+    sha256 = "02479dv96h29d0w0svp42mjjrxhmv8lkkqp30w7mlx5gr2g0v7lf";
+    inherit rev;
+  };
+
+  preConfigure = ''
+    rm -rv externals
+    ln -sv "${externals}" externals
+  '';
+
+  buildInputs = [ cmake qt4 libGLU libGL ];
+
+  NIX_LDFLAGS = "-lGLU";
+
+  meta = {
+    description = "Visual Trace Explorer (ViTE), a tool to visualize execution traces";
+
+    longDescription = ''
+      ViTE is a trace explorer. It is a tool to visualize execution
+      traces in Pajé or OTF format for debugging and profiling
+      parallel or distributed applications.
+    '';
+
+    homepage = "http://vite.gforge.inria.fr/";
+    license = stdenv.lib.licenses.cecill20;
+    maintainers = with stdenv.lib.maintainers; [ ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/molecular-dynamics/dl-poly-classic/default.nix b/nixpkgs/pkgs/applications/science/molecular-dynamics/dl-poly-classic/default.nix
new file mode 100644
index 000000000000..51978e95766d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/molecular-dynamics/dl-poly-classic/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl
+, gfortran, mpi
+}:
+
+stdenv.mkDerivation {
+  version = "1.10";
+  pname = "DL_POLY_Classic";
+
+  src = fetchurl {
+    url = "https://ccpforge.cse.rl.ac.uk/gf/download/frsrelease/574/8924/dl_class_1.10.tar.gz";
+    sha256 = "1r76zvln3bwycxlmqday0sqzv5j260y7mdh66as2aqny6jzd5ld7";
+  };
+
+  buildInputs = [ mpi gfortran ];
+
+  configurePhase = ''
+    cd source
+    cp -v ../build/MakePAR Makefile
+  '';
+
+  buildPhase = ''
+    make dlpoly
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -v ../execute/DLPOLY.X $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.ccp5.ac.uk/DL_POLY_C";
+    description = "DL_POLY Classic is a general purpose molecular dynamics simulation package";
+    license = licenses.bsdOriginal;
+    platforms = [ "x86_64-linux" ];
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/molecular-dynamics/gromacs/default.nix b/nixpkgs/pkgs/applications/science/molecular-dynamics/gromacs/default.nix
new file mode 100644
index 000000000000..d345827ed4eb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/molecular-dynamics/gromacs/default.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, fetchurl
+, cmake
+, singlePrec ? true
+, mpiEnabled ? false
+, fftw
+, openmpi
+, perl
+}:
+
+stdenv.mkDerivation {
+  name = "gromacs-2020.2";
+
+  src = fetchurl {
+    url = "ftp://ftp.gromacs.org/pub/gromacs/gromacs-2020.2.tar.gz";
+    sha256 = "1wyjgcdl30wy4hy6jvi9lkq53bqs9fgfq6fri52dhnb3c76y8rbl";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ fftw perl ]
+  ++ (stdenv.lib.optionals mpiEnabled [ openmpi ]);
+
+  cmakeFlags = (
+    if singlePrec then [
+      "-DGMX_DOUBLE=OFF"
+    ] else [
+      "-DGMX_DOUBLE=ON"
+      "-DGMX_DEFAULT_SUFFIX=OFF"
+    ]
+  ) ++ (
+    if mpiEnabled then [
+      "-DGMX_MPI:BOOL=TRUE"
+      "-DGMX_CPU_ACCELERATION:STRING=SSE4.1"
+      "-DGMX_OPENMP:BOOL=TRUE"
+      "-DGMX_THREAD_MPI:BOOL=FALSE"
+    ] else [
+      "-DGMX_MPI:BOOL=FALSE"
+    ]
+  );
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.gromacs.org";
+    license = licenses.gpl2;
+    description = "Molecular dynamics software package";
+    longDescription = ''
+      GROMACS is a versatile package to perform molecular dynamics,
+      i.e. simulate the Newtonian equations of motion for systems
+      with hundreds to millions of particles.
+
+      It is primarily designed for biochemical molecules like
+      proteins, lipids and nucleic acids that have a lot of
+      complicated bonded interactions, but since GROMACS is
+      extremely fast at calculating the nonbonded interactions (that
+      usually dominate simulations) many groups are also using it
+      for research on non-biological systems, e.g. polymers.
+
+      GROMACS supports all the usual algorithms you expect from a
+      modern molecular dynamics implementation, (check the online
+      reference or manual for details), but there are also quite a
+      few features that make it stand out from the competition.
+
+      See: http://www.gromacs.org/About_Gromacs for details.
+    '';
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/molecular-dynamics/lammps/default.nix b/nixpkgs/pkgs/applications/science/molecular-dynamics/lammps/default.nix
new file mode 100644
index 000000000000..5dc31695c60d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/molecular-dynamics/lammps/default.nix
@@ -0,0 +1,67 @@
+{ stdenv, fetchFromGitHub
+, libpng, gzip, fftw, blas, lapack
+, mpi ? null
+}:
+let packages = [
+     "asphere" "body" "class2" "colloid" "compress" "coreshell"
+     "dipole" "granular" "kspace" "manybody" "mc" "misc" "molecule"
+     "opt" "peri" "qeq" "replica" "rigid" "shock" "snap" "srd" "user-reaxc"
+    ];
+    lammps_includes = "-DLAMMPS_EXCEPTIONS -DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64";
+    withMPI = (mpi != null);
+in
+stdenv.mkDerivation rec {
+  # LAMMPS has weird versioning converted to ISO 8601 format
+  version = "stable_22Aug2018";
+  pname = "lammps";
+
+  src = fetchFromGitHub {
+    owner = "lammps";
+    repo = "lammps";
+    rev = version;
+    sha256 = "1dlifm9wm1jcw2zwal3fnzzl41ng08c7v48w6hx2mz84zljg1nsj";
+  };
+
+  passthru = {
+    inherit mpi;
+    inherit packages;
+  };
+
+  buildInputs = [ fftw libpng blas lapack gzip ]
+    ++ (stdenv.lib.optionals withMPI [ mpi ]);
+
+  configurePhase = ''
+    cd src
+    for pack in ${stdenv.lib.concatStringsSep " " packages}; do make "yes-$pack" SHELL=$SHELL; done
+  '';
+
+  # Must do manual build due to LAMMPS requiring a seperate build for
+  # the libraries and executable. Also non-typical make script
+  buildPhase = ''
+    make mode=exe ${if withMPI then "mpi" else "serial"} SHELL=$SHELL LMP_INC="${lammps_includes}" FFT_PATH=-DFFT_FFTW3 FFT_LIB=-lfftw3 JPG_LIB=-lpng
+    make mode=shlib ${if withMPI then "mpi" else "serial"} SHELL=$SHELL LMP_INC="${lammps_includes}" FFT_PATH=-DFFT_FFTW3 FFT_LIB=-lfftw3 JPG_LIB=-lpng
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin $out/include $out/lib
+
+    cp -v lmp_* $out/bin/
+    cp -v *.h $out/include/
+    cp -v liblammps* $out/lib/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Classical Molecular Dynamics simulation code";
+    longDescription = ''
+      LAMMPS is a classical molecular dynamics simulation code designed to
+      run efficiently on parallel computers. It was developed at Sandia
+      National Laboratories, a US Department of Energy facility, with
+      funding from the DOE. It is an open-source code, distributed freely
+      under the terms of the GNU Public License (GPL).
+      '';
+    homepage = "http://lammps.sandia.gov";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/physics/elmerfem/default.nix b/nixpkgs/pkgs/applications/science/physics/elmerfem/default.nix
new file mode 100644
index 000000000000..46cc32fa168e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/physics/elmerfem/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchFromGitHub, cmake, git, gfortran, openmpi, blas, liblapack, qt4, qwt6_qt4, pkg-config }:
+
+stdenv.mkDerivation rec {
+  pname = "elmerfem";
+  version = "8.4";
+
+  src = fetchFromGitHub {
+    owner = "elmercsc";
+    repo = "elmerfem";
+    rev = "release-${version}";
+    sha256 = "0vk31lplxlng173q8jjcpbyj1gaf98jvkqjvi9077d1nslya7vpm";
+  };
+
+  hardeningDisable = [ "format" ];
+
+  nativeBuildInputs = [ cmake pkg-config git ];
+  buildInputs = [ gfortran openmpi blas liblapack qt4 qwt6_qt4 ];
+
+  preConfigure = ''
+    patchShebangs ./
+  '';
+
+  storepath = placeholder "out";
+
+  cmakeFlags = [
+  "-DELMER_INSTALL_LIB_DIR=${storepath}/lib"
+  "-DWITH_OpenMP:BOOLEAN=TRUE"
+  "-DWITH_MPI:BOOLEAN=TRUE"
+  "-DWITH_ELMERGUI:BOOLEAN=TRUE"
+  "-DCMAKE_INSTALL_LIBDIR=lib"
+  "-DCMAKE_INSTALL_INCLUDEDIR=include"
+  "-DCMAKE_OpenGL_GL_PREFERENCE=GLVND"
+  ];
+
+  patches = [
+    ./fix-cmake.patch
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://elmerfem.org/";
+    description = "A finite element software for multiphysical problems.";
+    platforms = platforms.unix;
+    maintainers = [ maintainers.wulfsta ];
+    license = licenses.lgpl21;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/science/physics/elmerfem/fix-cmake.patch b/nixpkgs/pkgs/applications/science/physics/elmerfem/fix-cmake.patch
new file mode 100644
index 000000000000..098f65207330
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/physics/elmerfem/fix-cmake.patch
@@ -0,0 +1,13 @@
+diff --exclude '*~' -ruN A/torch/CMakeLists.txt B/torch/CMakeLists.txt
+--- A/fem/tests/CMakeLists.txt	2020-04-23 02:35:03.243388917 -0400
++++ B/fem/tests/CMakeLists.txt	2018-12-19 20:18:40.671857320 -0400
+@@ -14,7 +14,7 @@ 
+ SET(MESH2D_BIN "${CMAKE_BINARY_DIR}/meshgen2d/src/Mesh2D")
+
+ MACRO(SUBDIRLIST result curdir depth)
+   set(glob_pattern "*")
+-  FOREACH(D RANGE 1 depth)
++  FOREACH(D RANGE 1 ${depth})
+     FILE(GLOB children RELATIVE ${curdir} ${glob_pattern}) 
+     FOREACH(child ${children})
+       IF(IS_DIRECTORY ${curdir}/${child})
diff --git a/nixpkgs/pkgs/applications/science/physics/quantomatic/default.nix b/nixpkgs/pkgs/applications/science/physics/quantomatic/default.nix
new file mode 100644
index 000000000000..a9c83310b2ff
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/physics/quantomatic/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, jre, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "quantomatic";
+  version = "0.7";
+
+  src = fetchurl {
+    url = "https://github.com/Quantomatic/quantomatic/releases/download/v${version}/Quantomatic-v${version}.jar";
+    sha256 = "04dd5p73a7plb4l4x2balam8j7mxs8df06rjkalxycrr1id52q4r";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ jre ];
+
+  phases = [ "installPhase" ];
+
+  installPhase = ''
+    mkdir -p $out/libexec/quantomatic
+    cp $src $out/libexec/quantomatic/quantomatic.jar
+    mkdir -p $out/bin
+    makeWrapper ${jre}/bin/java $out/bin/quantomatic --add-flags "-jar $out/libexec/quantomatic/quantomatic.jar"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A piece of software for reasoning about monoidal theories; in particular, quantum information processing";
+    license = licenses.gpl3;
+    homepage = "https://quantomatic.github.io/";
+    maintainers = with maintainers; [ nickhu ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/physics/sacrifice/compat.patch b/nixpkgs/pkgs/applications/science/physics/sacrifice/compat.patch
new file mode 100644
index 000000000000..c66b91b76280
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/physics/sacrifice/compat.patch
@@ -0,0 +1,12 @@
+diff --git a/src/PythiaMain.cxx b/src/PythiaMain.cxx
+index 0e5ddd2..2b626ab 100644
+--- a/src/PythiaMain.cxx
++++ b/src/PythiaMain.cxx
+@@ -96,7 +96,6 @@ int main(int argc, char **argv){
+   HepMCConverter pythiaToHepMC;
+ 
+   pythiaToHepMC.set_store_pdf(true);
+-  pythiaToHepMC.set_crash_on_problem(true);
+   
+   if(photosHandler.isEnabled()){
+     photosHandler.initialise();
diff --git a/nixpkgs/pkgs/applications/science/physics/sacrifice/default.nix b/nixpkgs/pkgs/applications/science/physics/sacrifice/default.nix
new file mode 100644
index 000000000000..609fea9f7dca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/physics/sacrifice/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchurl, boost, hepmc2, lhapdf, pythia, makeWrapper }:
+
+stdenv.mkDerivation {
+  pname = "sacrifice";
+  version = "1.0.0";
+
+  src = fetchurl {
+    url = "https://www.hepforge.org/archive/agile/Sacrifice-1.0.0.tar.gz";
+    sha256 = "10bvpq63kmszy1habydwncm0j1dgvam0fkrmvkgbkvf804dcjp6g";
+  };
+
+  buildInputs = [ boost hepmc2 lhapdf pythia ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  patches = [
+    ./compat.patch
+  ];
+
+  preConfigure = ''
+    substituteInPlace configure --replace HAVE_LCG=yes HAVE_LCG=no
+  ''
+  + stdenv.lib.optionalString stdenv.isDarwin ''
+    substituteInPlace configure --replace LIB_SUFFIX=\"so\" LIB_SUFFIX=\"dylib\"
+  '';
+
+  configureFlags = [
+    "--with-HepMC=${hepmc2}"
+    "--with-pythia=${pythia}"
+  ];
+
+  postInstall = if stdenv.isDarwin then ''
+    install_name_tool -add_rpath ${pythia}/lib "$out"/bin/run-pythia
+  '' else ''
+    wrapProgram $out/bin/run-pythia \
+      --prefix LD_LIBRARY_PATH : "${pythia}/lib"
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "A standalone contribution to AGILe for steering Pythia 8";
+    license     = stdenv.lib.licenses.gpl2;
+    homepage    = "https://agile.hepforge.org/trac/wiki/Sacrifice";
+    platforms   = stdenv.lib.platforms.unix;
+    maintainers = with stdenv.lib.maintainers; [ veprbl ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/physics/sherpa/default.nix b/nixpkgs/pkgs/applications/science/physics/sherpa/default.nix
new file mode 100644
index 000000000000..a672272e9e62
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/physics/sherpa/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, gfortran, hepmc2, fastjet, lhapdf, rivet, sqlite }:
+
+stdenv.mkDerivation rec {
+  pname = "sherpa";
+  version = "2.2.10";
+
+  src = fetchurl {
+    url = "https://www.hepforge.org/archive/sherpa/SHERPA-MC-${version}.tar.gz";
+    sha256 = "1iwa17s8ipj6a2b8zss5csb1k5y9s5js38syvq932rxcinbyjsl4";
+  };
+
+  buildInputs = [ gfortran sqlite lhapdf rivet ];
+
+  enableParallelBuilding = true;
+
+  configureFlags = [
+    "--with-sqlite3=${sqlite.dev}"
+    "--enable-hepmc2=${hepmc2}"
+    "--enable-fastjet=${fastjet}"
+    "--enable-lhapdf=${lhapdf}"
+    "--enable-rivet=${rivet}"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Simulation of High-Energy Reactions of PArticles in lepton-lepton, lepton-photon, photon-photon, lepton-hadron and hadron-hadron collisions";
+    license = licenses.gpl2;
+    homepage = "https://gitlab.com/sherpa-team/sherpa";
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ veprbl ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/physics/xfitter/default.nix b/nixpkgs/pkgs/applications/science/physics/xfitter/default.nix
new file mode 100644
index 000000000000..b992851e40a8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/physics/xfitter/default.nix
@@ -0,0 +1,57 @@
+{ stdenv, fetchurl, apfel, apfelgrid, applgrid, blas, gfortran, lhapdf, lapack, libyaml, lynx, mela, root5, qcdnum, which }:
+
+stdenv.mkDerivation rec {
+  pname = "xfitter";
+  version = "2.0.1";
+
+  src = fetchurl {
+    name = "${pname}-${version}.tgz";
+    url = "https://www.xfitter.org/xFitter/xFitter/DownloadPage?action=AttachFile&do=get&target=${pname}-${version}.tgz";
+    sha256 = "0kmgc67nw5flp92yw5x6l2vsnhwsfi5z2a20404anisdgdjs8zc6";
+  };
+
+  patches = [
+    ./undefined_behavior.patch
+  ];
+
+  # patch needs to updated due to version bump
+  #CXXFLAGS = "-Werror=return-type";
+
+  preConfigure =
+  # Fix F77LD to workaround for a following build error:
+  #
+  #   gfortran: error: unrecognized command line option '-stdlib=libc++'
+  #
+    stdenv.lib.optionalString stdenv.isDarwin ''
+      substituteInPlace src/Makefile.in \
+        --replace "F77LD = \$(F77)" "F77LD = \$(CXXLD)" \
+    '';
+
+  configureFlags = [
+    "--enable-apfel"
+    "--enable-apfelgrid"
+    "--enable-applgrid"
+    "--enable-mela"
+    "--enable-lhapdf"
+  ];
+
+  nativeBuildInputs = [ gfortran which ];
+  buildInputs =
+    [ apfel apfelgrid applgrid blas lhapdf lapack mela root5 qcdnum ]
+    # pdf2yaml requires fmemopen and open_memstream which are not readily available on Darwin
+    ++ stdenv.lib.optional (!stdenv.isDarwin) libyaml
+    ;
+  propagatedBuildInputs = [ lynx ];
+
+  enableParallelBuilding = true;
+
+  hardeningDisable = [ "format" ];
+
+  meta = with stdenv.lib; {
+    description = "The xFitter project is an open source QCD fit framework ready to extract PDFs and assess the impact of new data";
+    license     = licenses.gpl3;
+    homepage    = "https://www.xfitter.org/xFitter";
+    platforms   = platforms.unix;
+    maintainers = with maintainers; [ veprbl ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/physics/xfitter/undefined_behavior.patch b/nixpkgs/pkgs/applications/science/physics/xfitter/undefined_behavior.patch
new file mode 100644
index 000000000000..53278527a807
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/physics/xfitter/undefined_behavior.patch
@@ -0,0 +1,454 @@
+diff --git a/DY/src/finterface.cc b/DY/src/finterface.cc
+--- a/DY/src/finterface.cc
++++ b/DY/src/finterface.cc
+@@ -14,17 +14,17 @@
+ using namespace std;
+ 
+ extern "C" {
+-  int dy_create_calc_(const int *ds_id, const int *chg_prod, 
++  void dy_create_calc_(const int *ds_id, const int *chg_prod, 
+       const double *beam_en, const char *boz,
+       const double *ranges, const char *var_name, 
+       const int *n_bins, const double *bin_edges);
+ 
+-  int dy_do_calc_();
++  void dy_do_calc_();
+ 
+-  int dy_get_res_(const int *ds_id, double *calc_res);
++  void dy_get_res_(const int *ds_id, double *calc_res);
+ 
+-  int dy_release_();
+-  int dy_set_ewpars_();
++  void dy_release_();
++  void dy_set_ewpars_();
+ }
+ 
+ typedef map <int, DYcalc* > DCmap;
+@@ -34,7 +34,7 @@ vector<BinMatrix*> gBinMatrices;
+ 
+ // initializes Drell-Yan LO calculations with info on
+ // beam, process, kinematic cuts, and bins.
+-int dy_create_calc_(const int *ds_id, const int *chg_prod, 
++void dy_create_calc_(const int *ds_id, const int *chg_prod, 
+     const double *beam_en, const char *boz,
+     const double *ranges, const char *var_name, 
+     const int *n_bins, const double *bin_edges)
+@@ -99,13 +99,11 @@ int dy_create_calc_(const int *ds_id, const int *chg_prod,
+   // create calculator and put to map
+   DYcalc * dc = new DYcalc(bm, pc, int_steps);
+   gCalcs.insert( pair<int,DYcalc*>( *ds_id,dc ) );
+-
+-  return 1;
+ }
+ 
+ 
+ // calculate Drell-Yan LO cross sections for all data sets
+-int dy_do_calc_()
++void dy_do_calc_()
+ {
+   // evolve convolutions
+   vector<PDFconv*>::iterator ipc = gPDFconvs.begin();
+@@ -118,28 +116,24 @@ int dy_do_calc_()
+     if ( true != idc->second->Integrate() ) {
+       cout << "Something is wrong with DY integration for " 
+            << idc->first << " data set." << endl;
+-      return 0;
++      return;
+     }
+   }
+-
+-  return 1;
+ }
+ 
+ 
+ // return DY calculations for data set ds_name
+-int dy_get_res_(const int *ds_id, double *calc_res)
++void dy_get_res_(const int *ds_id, double *calc_res)
+ {
+   DYcalc * dc = gCalcs.find(*ds_id)->second;
+   dc->getCalcRes(calc_res);
+-
+-  return 1;
+ }
+ 
+-int dy_set_ewpars_(){
++void dy_set_ewpars_(){
+   PhysPar::setPhysPar();
+ }
+ 
+-int dy_release_()
++void dy_release_()
+ {
+   vector<PDFconv*>::iterator ipc = gPDFconvs.begin();
+   for (; ipc!=gPDFconvs.end(); ipc++){
+@@ -155,6 +149,4 @@ int dy_release_()
+   for (; idc != gCalcs.end() ; idc++){
+     delete (idc->second);
+   }
+-
+-  return 1;
+ }
+diff --git a/DiffDIS/include/DataTable.h b/DiffDIS/include/DataTable.h
+--- a/DiffDIS/include/DataTable.h
++++ b/DiffDIS/include/DataTable.h
+@@ -307,6 +307,7 @@ class DataTable_t {
+       for(ic=0; ic < GetNcols(); ic++) {
+         for(ir=0; ir < npt; ir++) Data[ic][ir] = A.Data[ic][ir];
+       }
++      return *this;
+     }
+     
+     //@}
+diff --git a/FastNLO/src/FastNLOInterface.cc b/FastNLO/src/FastNLOInterface.cc
+--- a/FastNLO/src/FastNLOInterface.cc
++++ b/FastNLO/src/FastNLOInterface.cc
+@@ -39,14 +39,14 @@ void gauleg(double x1,double x2,double *x,double *w, int n);
+ 
+ 
+ extern "C" {
+-  int fastnloinit_(const char *s, const int *idataset, const char *thfile, int *I_FIT_ORDER, bool *PublicationUnits , double* murdef, double* murscale, double *mufdef, double* mufscale);
+-  int fastnlocalc_(const int *idataset, double *xsec);
+-  int fastnlocalctop_(const int *idataset, double *xsec, double *thbin, double *tot, int *Npt);
+-  int fastnlopointskip_(const int *idataset, int *point, int *npoints);
+-  int hf_errlog_(const int* ID, const char* TEXT, long length);
+-  int hf_stop_();
++  void fastnloinit_(const char *s, const int *idataset, const char *thfile, int *I_FIT_ORDER, bool *PublicationUnits , double* murdef, double* murscale, double *mufdef, double* mufscale);
++  void fastnlocalc_(const int *idataset, double *xsec);
++  void fastnlocalctop_(const int *idataset, double *xsec, double *thbin, double *tot, int *Npt);
++  void fastnlopointskip_(const int *idataset, int *point, int *npoints);
++  void hf_errlog_(const int* ID, const char* TEXT, long length);
++  void hf_stop_();
+   double interp_(double *A, double *xx1, double *x, int *NGrid1, double *res);
+-  int setfastnlotoppar_(const int *idataset);
++  void setfastnlotoppar_(const int *idataset);
+ }
+ 
+ 
+@@ -58,7 +58,7 @@ map<int, FastNLOxFitter*> gFastNLO_array;
+ map<int, BoolArray*>     gUsedPoints_array;
+ int CreateUsedPointsArray(int idataset, int npoints);
+ 
+-int fastnloinit_(const char *s, const int *idataset, const char *thfile, int *I_FIT_ORDER, bool *PublicationUnits , double* murdef, double* murscale, double *mufdef, double* mufscale) {
++void fastnloinit_(const char *s, const int *idataset, const char *thfile, int *I_FIT_ORDER, bool *PublicationUnits , double* murdef, double* murscale, double *mufdef, double* mufscale) {
+ 
+   
+    map<int, FastNLOxFitter*>::const_iterator FastNLOIterator = gFastNLO_array.find(*idataset);
+@@ -67,7 +67,7 @@ int fastnloinit_(const char *s, const int *idataset, const char *thfile, int *I_
+      const char* text = "I: Double initialization of the same fastnlo data set!";
+      hf_errlog_(&id, text, (long)strlen(text));
+      //hf_stop_();
+-     return 1;
++     return;
+    }
+    
+    FastNLOxFitter* fnloreader = new FastNLOxFitter( thfile );  
+@@ -112,10 +112,9 @@ int fastnloinit_(const char *s, const int *idataset, const char *thfile, int *I_
+    }
+    
+    gFastNLO_array.insert(pair<int, FastNLOxFitter*>(*idataset, fnloreader) );
+-   return 0;
+ }
+ 
+-int setfastnlotoppar_(const int *idataset) {
++void setfastnlotoppar_(const int *idataset) {
+    //!< Dedicated settings for difftop
+    map<int, FastNLOxFitter*>::const_iterator FastNLOIterator = gFastNLO_array.find(*idataset);
+    map<int, BoolArray*>::const_iterator UsedPointsIterator = gUsedPoints_array.find(*idataset);
+@@ -130,11 +129,9 @@ int setfastnlotoppar_(const int *idataset) {
+    fnloreader->SetExternalFuncForMuF( &Function_Mu );
+    fnloreader->SetExternalFuncForMuR( &Function_Mu);
+    //fnloreader->SetScaleFactorsMuRMuF(1.0,1.0); //Be reminded that muR and muF scales are hard coded (that's not true!)
+-
+-   return 0;
+ }
+ 
+-int fastnlocalc_(const int *idataset, double *xsec) {
++void fastnlocalc_(const int *idataset, double *xsec) {
+   
+    map<int, FastNLOxFitter*>::const_iterator FastNLOIterator = gFastNLO_array.find(*idataset);
+    map<int, BoolArray*>::const_iterator UsedPointsIterator = gUsedPoints_array.find(*idataset);
+@@ -176,13 +173,10 @@ int fastnlocalc_(const int *idataset, double *xsec) {
+        outputidx++;
+      }
+    }
+- 
+-
+-   return 0;
+ }
+ 
+ //MK14 New function for Difftop calculation: it is called in trunk/src/difftop_fastnlo.f
+-int fastnlocalctop_(const int *idataset, double *xsec, double *thbin, double *tot, int *Npt){
++void fastnlocalctop_(const int *idataset, double *xsec, double *thbin, double *tot, int *Npt){
+   
+    map<int, FastNLOxFitter*>::const_iterator FastNLOIterator = gFastNLO_array.find(*idataset);
+    map<int, BoolArray*>::const_iterator UsedPointsIterator = gUsedPoints_array.find(*idataset);
+@@ -262,10 +256,6 @@ int fastnlocalctop_(const int *idataset, double *xsec, double *thbin, double *to
+      Total += interpC(xsec,xg[k],thbin,Nthpoints)*wg[k];
+ 
+    *tot = Total;
+-
+-
+-
+-   return 0;
+ }
+ 
+ 
+@@ -277,7 +267,7 @@ int fastnlocalctop_(const int *idataset, double *xsec, double *thbin, double *to
+ 
+ 
+ 
+-int fastnlopointskip_(const int *idataset, int *point, int *npoints) {
++void fastnlopointskip_(const int *idataset, int *point, int *npoints) {
+   map<int, BoolArray*>::const_iterator UsedPointsIterator = gUsedPoints_array.find(*idataset);
+   if(UsedPointsIterator == gUsedPoints_array.end( )) 
+     CreateUsedPointsArray(*idataset, *npoints);
+@@ -292,8 +282,6 @@ int fastnlopointskip_(const int *idataset, int *point, int *npoints) {
+   
+   BoolArray*     usedpoints = UsedPointsIterator->second;
+   usedpoints->at(*point-1) = false;
+-
+-  return 0;
+ }
+ 
+ int CreateUsedPointsArray(int idataset, int npoints) {
+diff --git a/Hathor/src/HathorInterface.cc b/Hathor/src/HathorInterface.cc
+--- a/Hathor/src/HathorInterface.cc
++++ b/Hathor/src/HathorInterface.cc
+@@ -6,9 +6,9 @@
+ #include "../interface/xFitterPdf.h"
+ 
+ extern "C" {
+-  int hathorinit_(const int* idataset, const double& sqrtS, const bool& ppbar, const double& mt,
++  void hathorinit_(const int* idataset, const double& sqrtS, const bool& ppbar, const double& mt,
+ 		  const unsigned int& pertubOrder, const unsigned int& precisionLevel);
+-  int hathorcalc_(const int *idataset, double *xsec);
++  void hathorcalc_(const int *idataset, double *xsec);
+ }
+ 
+ extern "C" {
+@@ -19,7 +19,7 @@ extern "C" {
+ }
+ 
+ extern "C" {
+-  int hf_errlog_(const int* ID, const char* TEXT, long length);
++  void hf_errlog_(const int* ID, const char* TEXT, long length);
+ }
+ 
+ // FIXME: delete pointers at the end! (in some hathordestroy_ or so)
+@@ -28,7 +28,7 @@ xFitterPdf* pdf;
+ int* rndStore;
+ double mtop;
+ 
+-int hathorinit_(const int* idataset, const double& sqrtS, const bool& ppbar, const double& mt,
++void hathorinit_(const int* idataset, const double& sqrtS, const bool& ppbar, const double& mt,
+ 		const unsigned int& pertubOrder, const unsigned int& precisionLevel) {
+ 
+   if(hathor_array.size()==0) {
+@@ -69,7 +69,7 @@ int hathorinit_(const int* idataset, const double& sqrtS, const bool& ppbar, con
+   return 0;
+ }
+ 
+-int hathorcalc_(const int *idataset, double *xsec) {
++void hathorcalc_(const int *idataset, double *xsec) {
+   rlxd_reset(rndStore);
+ 
+   std::map<int, Hathor*>::const_iterator hathorIter = hathor_array.find(*idataset);
+diff --git a/src/TheorEval.cc b/src/TheorEval.cc
+--- a/src/TheorEval.cc
++++ b/src/TheorEval.cc
+@@ -62,6 +62,7 @@ TheorEval::initTheory()
+   list<tToken> sl;
+   this->assignTokens(sl);
+   this->convertToRPN(sl);
++  return 0;
+ }
+ 
+ int 
+@@ -167,6 +168,7 @@ TheorEval::assignTokens(list<tToken> &sl)
+       sl.push_back(t);
+     }
+   }
++  return 0;
+ }
+ 
+ int
+@@ -217,6 +219,7 @@ TheorEval::convertToRPN(list<tToken> &sl)
+   cout << endl;
+   */
+   
++  return 0;
+ }
+ 
+ int
+@@ -236,6 +239,7 @@ TheorEval::initTerm(int iterm, valarray<double> *val)
+     hf_errlog_(id, text, textlen);
+     return -1;
+   }
++  return 0;
+ }
+ 
+ int
+@@ -348,6 +352,7 @@ TheorEval::initGridTerm(int iterm, valarray<double> *val)
+ 
+   // associate grid and valarray pointers in token
+   _mapGridToken[g] = val;
++  return 0;
+ }
+ 
+ int
+@@ -430,6 +435,7 @@ TheorEval::initKfTerm(int iterm, valarray<double> *val)
+ 
+   // write k-factor array to the token valarray
+   *val = valarray<double>(vkf.data(), vkf.size());
++  return 0;
+ }  
+ 
+ int
+@@ -465,6 +471,7 @@ TheorEval::setCKM(const vector<double> &v_ckm)
+    int textlen = strlen(text);
+    hf_errlog_(id, text, textlen);
+ #endif
++   return 0;
+ }
+ 
+ int
+@@ -531,6 +538,7 @@ TheorEval::Evaluate(valarray<double> &vte )
+       }
+     //vte /= _units;
+   }
++  return 0;
+ }
+ 
+ int
+@@ -555,6 +563,7 @@ TheorEval::getGridValues()
+     
+     
+   }
++  return 0;
+ }
+ 
+ int
+diff --git a/src/ftheor_eval.cc b/src/ftheor_eval.cc
+--- a/src/ftheor_eval.cc
++++ b/src/ftheor_eval.cc
+@@ -19,15 +19,15 @@
+ using namespace std;
+ 
+ extern "C" {
+-  int set_theor_eval_(int *dsId);//, int *nTerms, char **TermName, char **TermType, 
++  void set_theor_eval_(int *dsId);//, int *nTerms, char **TermName, char **TermType, 
+ //    char **TermSource, char *TermExpr);
+-  int set_theor_bins_(int *dsId, int *nBinDimension, int *nPoints, int *binFlags, 
++  void set_theor_bins_(int *dsId, int *nBinDimension, int *nPoints, int *binFlags, 
+     double *allBins);
+ //  int set_theor_units_(int *dsId, double *units);
+-  int init_theor_eval_(int *dsId);
+-  int update_theor_ckm_();
+-  int get_theor_eval_(int *dsId, int* np, int* idx);
+-  int close_theor_eval_();
++  void init_theor_eval_(int *dsId);
++  void update_theor_ckm_();
++  void get_theor_eval_(int *dsId, int* np, int* idx);
++  void close_theor_eval_();
+ }
+ 
+ /// global dataset to theory evaluation pointer map
+@@ -59,7 +59,7 @@ extern struct ord_scales {
+  dataset ID.
+  write details on argumets
+  */
+-int set_theor_eval_(int *dsId)//, int *nTerms, char **TermName, char **TermType, 
++void set_theor_eval_(int *dsId)//, int *nTerms, char **TermName, char **TermType, 
+ //  char **TermSource, char *TermExpr)
+ {
+   // convert fortran strings to c++
+@@ -90,15 +90,13 @@ int set_theor_eval_(int *dsId)//, int *nTerms, char **TermName, char **TermType,
+     << " already exists." << endl;
+     exit(1); // make proper exit later
+   }
+-
+-  return 1;
+ }
+ 
+ /*!
+  Sets datasets bins in theory evaluations.
+  write details on argumets
+  */
+-int set_theor_bins_(int *dsId, int *nBinDimension, int *nPoints, int *binFlags, 
++void set_theor_bins_(int *dsId, int *nBinDimension, int *nPoints, int *binFlags, 
+   double *allBins)
+ {
+   tTEmap::iterator it = gTEmap.find(*dsId);
+@@ -110,7 +108,6 @@ int set_theor_bins_(int *dsId, int *nBinDimension, int *nPoints, int *binFlags,
+   
+   TheorEval *te = gTEmap.at(*dsId);
+   te->setBins(*nBinDimension, *nPoints, binFlags, allBins);
+-  return 1;
+ }
+ 
+ /*
+@@ -132,7 +129,7 @@ int set_theor_units_(int *dsId, double *units)
+ /*!
+  Initializes theory for requested dataset.
+  */
+-int init_theor_eval_(int *dsId)
++void init_theor_eval_(int *dsId)
+ {
+   tTEmap::iterator it = gTEmap.find(*dsId);
+   if (it == gTEmap.end() ) { 
+@@ -148,7 +145,7 @@ int init_theor_eval_(int *dsId)
+ /*!
+  Updates the CKM matrix to all the initialized appl grids
+  */
+-int update_theor_ckm_()
++void update_theor_ckm_()
+ {
+   double a_ckm[] = { ckm_matrix_.Vud, ckm_matrix_.Vus, ckm_matrix_.Vub,
+                                   ckm_matrix_.Vcd, ckm_matrix_.Vcs, ckm_matrix_.Vcb,
+@@ -164,7 +161,7 @@ int update_theor_ckm_()
+ /*!
+  Evaluates theory for requested dataset and writes it to the global THEO array.
+  */
+-int get_theor_eval_(int *dsId, int *np, int*idx)
++void get_theor_eval_(int *dsId, int *np, int*idx)
+ {
+ 
+   tTEmap::iterator it = gTEmap.find(*dsId);
+@@ -194,11 +191,11 @@ int get_theor_eval_(int *dsId, int *np, int*idx)
+   // write the predictions to THEO array
+   if( ip != *np ){
+     cout << "ERROR in get_theor_eval_: number of points mismatch" << endl;
+-    return -1;
++    return;
+   }
+ }
+ 
+-int close_theor_eval_()
++void close_theor_eval_()
+ {
+   tTEmap::iterator it = gTEmap.begin();
+   for (; it!= gTEmap.end(); it++){
+diff --git a/src/lhapdf6_output.c b/src/lhapdf6_output.c
+--- a/src/lhapdf6_output.c
++++ b/src/lhapdf6_output.c
+@@ -64,7 +64,7 @@ extern double bvalij_(int *,int *,int *,int *,int *);
+ extern double bvalxq_(int *,int *,double *,double *,int *);

+ extern double hf_get_alphas_(double *);

+ extern int getord_(int *);

+-extern int grpars_(int *, double *, double *, int *, double *, double *, int *);

++extern void grpars_(int *, double *, double *, int *, double *, double *, int *);

+ extern int getcbt_(int *, double *, double *, double *);

+ extern void getpdfunctype_heraf_(int *mc, int *asymh, int *symh, char *name, size_t size);

+ extern void hf_errlog_(int *, char *, size_t);

+diff --git a/tools/draw/include/FileOpener.h b/tools/draw/include/FileOpener.h
+--- a/tools/draw/include/FileOpener.h
++++ b/tools/draw/include/FileOpener.h
+@@ -61,7 +61,7 @@ class InFileOpener_t {
+   string GetPath() const {return ind < 0 ? "" : Flist[ind];}
+   
+   // ==================================
+-  int Add(const string& fname) {
++  void Add(const string& fname) {
+     Flist.push_back(fname);
+   }
+ 
diff --git a/nixpkgs/pkgs/applications/science/physics/xflr5/default.nix b/nixpkgs/pkgs/applications/science/physics/xflr5/default.nix
new file mode 100644
index 000000000000..85838b04cbf1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/physics/xflr5/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, lib, fetchurl, wrapQtAppsHook, qmake }:
+
+stdenv.mkDerivation rec {
+  pname = "xflr5";
+  version = "6.47";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/xflr5/${pname}_v${version}_src.tar.gz";
+    sha256 = "02x3r9iv3ndwxa65mxn9m5dlhcrnjiq7cffi6rmb456gs3v3dnav";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ qmake wrapQtAppsHook ];
+
+  meta = with stdenv.lib; {
+    description = "An analysis tool for airfoils, wings and planes";
+    homepage = https://sourceforge.net/projects/xflr5/;
+    license = licenses.gpl3;
+    maintainers = [ maintainers.esclear ];
+    platforms = platforms.linux;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/science/programming/fdr/default.nix b/nixpkgs/pkgs/applications/science/programming/fdr/default.nix
new file mode 100644
index 000000000000..4eeca5c1759b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/programming/fdr/default.nix
@@ -0,0 +1,68 @@
+{stdenv, fetchurl, qtbase, qtx11extras, ncurses5, xorg, zlib, python27Packages}:
+stdenv.mkDerivation {
+  name = "fdr-4.2.3";
+  src = fetchurl {
+    url = "https://www.cs.ox.ac.uk/projects/fdr/downloads/fdr-3789-linux-x86_64.tar.gz";
+    sha256 = "0n2yqichym5xdawlgk3r7yha88k7ycnx6585jfrcm7043sls1i88";
+  };
+
+  libPath = stdenv.lib.makeLibraryPath [
+    stdenv.cc.cc
+    python27Packages.python
+    qtbase
+    qtx11extras
+    ncurses5
+    xorg.libX11
+    xorg.libXft
+    zlib
+  ];
+
+  phases = [ "unpackPhase" "installPhase" ];
+  installPhase = ''
+    mkdir -p "$out"
+
+    # shipped Qt is buggy
+    rm lib/libQt*
+    rm -r lib/qt_plugins
+
+    cp -r * "$out"
+    ln -s ${ncurses5.out}/lib/libtinfo.so.5 $out/lib/libtinfo.so.5
+    ln -s ${qtbase.bin}/${qtbase.qtPluginPrefix} $out/lib/qt_plugins
+    ln -s ${zlib.out}/lib/libz.so.1 $out/lib/libz.so.1
+
+    for b in fdr4 _fdr4 refines _refines cspmprofiler cspmexplorerprof
+    do
+      patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+        --set-rpath "$libPath:$out/lib" \
+        "$out/bin/$b"
+    done
+
+    for l in corei7/librefines.so \
+      libcspm_process_compiler.so \
+      libcsp_operators.so \
+      _fdr.so \
+      libfdr.so \
+      libfdr_java.so \
+      libprocess_compiler.so \
+      librefines_gui.so \
+      librefines_licensing.so  \
+      libboost_date_time.so.1.60.0 \
+      libboost_filesystem.so.1.60.0 \
+      libboost_iostreams.so.1.60.0 \
+      libboost_program_options.so.1.60.0 \
+      libboost_serialization.so.1.60.0 \
+      libboost_system.so.1.60.0
+    do
+      patchelf --set-rpath "$libPath:$out/lib" \
+        "$out/lib/$l"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.cs.ox.ac.uk/projects/fdr/";
+    description = "The CSP refinement checker";
+    license = licenses.unfreeRedistributable;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ nickhu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/programming/groove/default.nix b/nixpkgs/pkgs/applications/science/programming/groove/default.nix
new file mode 100644
index 000000000000..87b7b02317a2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/programming/groove/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl, unzip, makeWrapper, makeDesktopItem, icoutils, jre }:
+
+let
+  desktopItem = makeDesktopItem {
+    name = "groove-simulator";
+    exec = "groove-simulator";
+    icon = "groove";
+    desktopName = "GROOVE Simulator";
+    comment = "GRaphs for Object-Oriented VErification";
+    categories = "Science;ComputerScience;";
+  };
+
+in stdenv.mkDerivation rec {
+  pname = "groove";
+  version = "5.7.4";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/groove/groove/${version}/${pname}-${builtins.replaceStrings ["."] ["_"] version}-bin.zip";
+    sha256 = "1cl3xzl3n8b9a7h5pvnv31bab9j9zaw07ppk8whk8h865dcq1d10";
+  };
+
+  nativeBuildInputs = [ unzip makeWrapper icoutils ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/share/groove
+    cp -r bin lib $out/share/groove/
+
+    mkdir -p $out/share/doc/groove
+    cp CHANGES README *.pdf $out/share/doc/groove/
+
+    mkdir -p $out/bin
+    for bin in Generator Imager ModelChecker PrologChecker Simulator Viewer; do
+      makeWrapper ${jre}/bin/java $out/bin/groove-''${bin,,} \
+        --add-flags "-jar $out/share/groove/bin/$bin.jar"
+    done
+
+    mkdir -p $out/share/applications
+    ln -s ${desktopItem}/share/applications/* $out/share/applications/
+
+    mkdir -p $out/share/icons/hicolor/{16x16,32x32}/apps
+    icotool -x -i 1 -o $out/share/icons/hicolor/32x32/apps/groove.png groove-green-g.ico
+    icotool -x -i 2 -o $out/share/icons/hicolor/16x16/apps/groove.png groove-green-g.ico
+  '';
+
+  meta = with stdenv.lib; {
+    description = "GRaphs for Object-Oriented VErification";
+    homepage = "http://groove.cs.utwente.nl/";
+    license = licenses.asl20;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ jfrankenau ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/programming/plm/default.nix b/nixpkgs/pkgs/applications/science/programming/plm/default.nix
new file mode 100644
index 000000000000..ebfb6471c632
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/programming/plm/default.nix
@@ -0,0 +1,36 @@
+{stdenv, fetchurl, makeWrapper, jre, gcc, valgrind}:
+# gcc and valgrind are not strict dependencies, they could be made
+# optional. They are here because plm can only help you learn C if you
+# have them installed.
+stdenv.mkDerivation rec {
+  major = "2";
+  minor = "5";
+  version = "${major}-${minor}";
+  pname = "plm";
+
+  src = fetchurl {
+    url = "http://webloria.loria.fr/~quinson/Teaching/PLM/plm-${major}_${minor}.jar";
+    sha256 = "0m17cxa3nxi2cbswqvlfzp0mlfi3wrkw8ry2xhkxy6aqzm2mlgcc";
+    name = "${pname}-${version}.jar";
+  };
+
+  buildInputs = [ makeWrapper jre gcc valgrind ];
+
+  phases = [ "installPhase" ];
+
+  installPhase = ''
+    mkdir -p "$prefix/bin"
+
+    makeWrapper ${jre}/bin/java $out/bin/plm \
+      --add-flags "-jar $src" \
+      --prefix PATH : "$PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Free cross-platform programming exerciser";
+    license = licenses.gpl3;
+    maintainers = [ ];
+    platforms = stdenv.lib.platforms.all;
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/programming/scyther/cli.nix b/nixpkgs/pkgs/applications/science/programming/scyther/cli.nix
new file mode 100644
index 000000000000..6623f5def4cb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/programming/scyther/cli.nix
@@ -0,0 +1,33 @@
+{ stdenv, glibc, flex, bison, cmake
+, version, src, meta }:
+stdenv.mkDerivation {
+  pname = "scyther-cli";
+  inherit version;
+
+  inherit src meta;
+
+  buildInputs = [
+    cmake
+    glibc.static
+    flex
+    bison
+  ];
+
+  patchPhase = ''
+    # Since we're not in a git dir, the normal command this project uses to create this file wouldn't work
+    printf "%s\n" "#define TAGVERSION \"${version}\"" > src/version.h
+  '';
+
+  configurePhase = ''
+    (cd src && cmakeConfigurePhase)
+  '';
+
+  dontUseCmakeBuildDir = true;
+  cmakeFlags = [ "-DCMAKE_C_FLAGS=-std=gnu89" ];
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    mv src/scyther-linux "$out/bin/scyther-cli"
+    ln -s "$out/bin/scyther-cli" "$out/bin/scyther-linux"
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/science/programming/scyther/default.nix b/nixpkgs/pkgs/applications/science/programming/scyther/default.nix
new file mode 100644
index 000000000000..5cfe081072a4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/programming/scyther/default.nix
@@ -0,0 +1,80 @@
+{ stdenv, lib, buildEnv, pkgsi686Linux, fetchFromGitHub, python27Packages, graphviz
+, includeGUI ? true
+, includeProtocols ? true
+}:
+let
+  version = "1.1.3";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    sha256 = "0rb4ha5bnjxnwj4f3hciq7kyj96fhw14hqbwl5kr9cdw8q62mx0h";
+    owner = "cascremers";
+    repo = "scyther";
+  };
+
+  meta = with lib; {
+    description = "Scyther is a tool for the automatic verification of security protocols.";
+    homepage = "https://www.cs.ox.ac.uk/people/cas.cremers/scyther/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ infinisil ];
+    platforms = platforms.linux;
+  };
+
+  cli = pkgsi686Linux.callPackage ./cli.nix {
+    inherit version src meta;
+  };
+
+  gui = stdenv.mkDerivation {
+    pname = "scyther-gui";
+    inherit version;
+    inherit src meta;
+    buildInputs = [
+      python27Packages.wrapPython
+    ];
+
+    patchPhase = ''
+      file=gui/Scyther/Scyther.py
+
+      # By default the scyther binary is looked for in the directory of the python script ($out/gui), but we want to have it look where our cli package is
+      substituteInPlace $file --replace "return getMyDir()" "return \"${cli}/bin\""
+
+      # Removes the Shebang from the file, as this would be wrapped wrongly
+      sed -i -e "1d" $file
+    '';
+
+    dontBuild = true;
+
+    propagatedBuildInputs = [
+      python27Packages.wxPython
+      graphviz
+    ];
+
+    installPhase = ''
+      mkdir -p "$out"/gui "$out"/bin
+      cp -r gui/* "$out"/gui
+      ln -s "$out"/gui/scyther-gui.py "$out/bin/scyther-gui"
+    '';
+
+    postFixup = ''
+      wrapPythonProgramsIn "$out/gui" "$out $pythonPath"
+    '';
+
+    doInstallCheck = true;
+    installCheckPhase = ''
+      "$out/gui/scyther.py" "$src/gui/Protocols/Demo/ns3.spdl"
+    '';
+  };
+in
+  buildEnv {
+    name = "scyther-${version}";
+    inherit meta;
+    paths = [ cli ] ++ lib.optional includeGUI gui;
+    pathsToLink = [ "/bin" ];
+
+    postBuild = ''
+      rm "$out/bin/scyther-linux"
+    '' + lib.optionalString includeProtocols ''
+      mkdir -p "$out/protocols"
+      cp -rv ${src}/protocols/* "$out/protocols"
+    '';
+  }
diff --git a/nixpkgs/pkgs/applications/science/robotics/apmplanner2/default.nix b/nixpkgs/pkgs/applications/science/robotics/apmplanner2/default.nix
new file mode 100644
index 000000000000..ede698e2b0b4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/robotics/apmplanner2/default.nix
@@ -0,0 +1,53 @@
+{ lib, mkDerivation, fetchFromGitHub, fetchpatch, qmake
+, qtbase, qtscript, qtwebkit, qtserialport, qtsvg, qtdeclarative, qtquickcontrols2
+, alsaLib, libsndfile, flite, openssl, udev, SDL2
+}:
+
+mkDerivation rec {
+  pname = "apmplanner2";
+  version = "2.0.27-rc1";
+
+  src = fetchFromGitHub {
+    owner = "ArduPilot";
+    repo = "apm_planner";
+    rev = version;
+    sha256 = "1k0786mjzi49nb6yw4chh9l4dmkf9gybpxg9zqkr5yg019nyzcvd";
+  };
+
+  patches = [
+    # can be dropped after 2.0.27-rc1
+    (fetchpatch {
+      url = "https://github.com/ArduPilot/apm_planner/commit/299ff23b5e9910de04edfc06b6893bb06b47a57b.patch";
+      sha256 = "16rc81iwqp2i46g6bm9lbvcjfsk83999r9h8w1pz0mys7rsilvqy";
+    })
+  ];
+
+  buildInputs = [
+    alsaLib libsndfile flite openssl udev SDL2
+    qtbase qtscript qtwebkit qtserialport qtsvg qtdeclarative qtquickcontrols2
+  ];
+
+  nativeBuildInputs = [ qmake ];
+
+  qmakeFlags = [ "apm_planner.pro" ];
+
+  # this ugly hack is necessary, as `bin/apmplanner2` needs the contents of `share/APMPlanner2` inside of `bin/`
+  preFixup = ''
+    ln --relative --symbolic $out/share/APMPlanner2/* $out/bin/
+    substituteInPlace $out/share/applications/apmplanner2.desktop \
+                      --replace /usr $out
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Ground station software for autonomous vehicles";
+    longDescription = ''
+      A GUI ground control station for autonomous vehicles using the MAVLink protocol.
+      Includes support for the APM and PX4 based controllers.
+    '';
+    homepage = "https://ardupilot.org/planner2/";
+    license = lib.licenses.gpl3;
+    maintainers = with lib.maintainers; [ wucke13 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/robotics/betaflight-configurator/default.nix b/nixpkgs/pkgs/applications/science/robotics/betaflight-configurator/default.nix
new file mode 100644
index 000000000000..4684ba8c1937
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/robotics/betaflight-configurator/default.nix
@@ -0,0 +1,49 @@
+{stdenv, fetchurl, unzip, makeDesktopItem, nwjs, wrapGAppsHook, gsettings-desktop-schemas, gtk3 }:
+
+let
+  pname = "betaflight-configurator";
+  desktopItem = makeDesktopItem {
+    name = pname;
+    exec = pname;
+    icon = pname;
+    comment = "Betaflight configuration tool";
+    desktopName = "Betaflight Configurator";
+    genericName = "Flight controller configuration tool";
+  };
+in
+stdenv.mkDerivation rec {
+  inherit pname;
+  version = "10.6.0";
+  src = fetchurl {
+    url = "https://github.com/betaflight/${pname}/releases/download/${version}/${pname}_${version}_linux64.zip";
+    sha256 = "09hayzhwangh8b81r038p320vbg0xxlyzrdp9pcmfyxp6s00xslw";
+  };
+
+  nativeBuildInputs = [ wrapGAppsHook ];
+  
+  buildInputs = [ unzip gsettings-desktop-schemas gtk3 ];
+  
+  installPhase = ''
+    mkdir -p $out/bin \
+             $out/opt/${pname}
+
+    cp -r . $out/opt/${pname}/
+    install -m 444 -D icon/bf_icon_128.png $out/share/icons/hicolor/128x128/apps/${pname}.png
+    cp -r ${desktopItem}/share/applications $out/share/
+
+    makeWrapper ${nwjs}/bin/nw $out/bin/${pname} --add-flags $out/opt/${pname}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "The Betaflight flight control system configuration tool";
+    longDescription = ''
+      A crossplatform configuration tool for the Betaflight flight control system.
+      Various types of aircraft are supported by the tool and by Betaflight, e.g. 
+      quadcopters, hexacopters, octocopters and fixed-wing aircraft.
+    '';
+    homepage    = "https://github.com/betaflight/betaflight/wiki";
+    license     = licenses.gpl3;
+    maintainers = with maintainers; [ wucke13 ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/robotics/mavproxy/default.nix b/nixpkgs/pkgs/applications/science/robotics/mavproxy/default.nix
new file mode 100644
index 000000000000..c354dad80428
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/robotics/mavproxy/default.nix
@@ -0,0 +1,31 @@
+{ lib, buildPythonApplication, fetchPypi, matplotlib, numpy, pymavlink, pyserial
+, setuptools, wxPython_4_0 }:
+
+buildPythonApplication rec {
+  pname = "MAVProxy";
+  version = "1.8.19";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1rbq2nm01212rp5xbl8p8kjl2mpgfppkwjsq3lnfw1v6g0m4359h";
+  };
+
+  propagatedBuildInputs = [
+    matplotlib
+    numpy
+    pymavlink
+    pyserial
+    setuptools
+    wxPython_4_0
+  ];
+
+  # No tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "MAVLink proxy and command line ground station";
+    homepage = "https://github.com/ArduPilot/MAVProxy";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ lopsided98 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/robotics/qgroundcontrol/default.nix b/nixpkgs/pkgs/applications/science/robotics/qgroundcontrol/default.nix
new file mode 100644
index 000000000000..63247bcff728
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/robotics/qgroundcontrol/default.nix
@@ -0,0 +1,75 @@
+{ lib, mkDerivation, fetchgit, SDL2
+, qtbase, qtcharts, qtlocation, qtserialport, qtsvg, qtquickcontrols2
+, qtgraphicaleffects, qtspeech, qtx11extras, qmake, qttools
+, gst_all_1, wayland, pkgconfig
+}:
+
+mkDerivation rec {
+  pname = "qgroundcontrol";
+  version = "4.0.8";
+
+  qtInputs = [
+    qtbase qtcharts qtlocation qtserialport qtsvg qtquickcontrols2
+    qtgraphicaleffects qtspeech qtx11extras
+  ];
+
+  gstInputs = with gst_all_1; [
+    gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad wayland
+  ];
+
+  enableParallelBuilding = true;
+  buildInputs = [ SDL2 ] ++ gstInputs ++ qtInputs;
+  nativeBuildInputs = [ pkgconfig qmake qttools ];
+
+  preConfigure = ''
+    mkdir build
+    cd build
+  '';
+
+  qmakeFlags = [
+    # Default install tries to copy Qt files into package
+    "CONFIG+=QGC_DISABLE_BUILD_SETUP"
+    "../qgroundcontrol.pro"
+  ];
+
+  installPhase = ''
+    runHook preInstall
+
+    cd ..
+
+    mkdir -p $out/share/applications
+    sed 's/Exec=.*$/Exec=QGroundControl/g' --in-place deploy/qgroundcontrol.desktop
+    cp -v deploy/qgroundcontrol.desktop $out/share/applications
+
+    mkdir -p $out/bin
+    cp -v build/release/QGroundControl "$out/bin/"
+
+    mkdir -p $out/share/qgroundcontrol
+    cp -rv resources/ $out/share/qgroundcontrol
+
+    mkdir -p $out/share/pixmaps
+    cp -v resources/icons/qgroundcontrol.png $out/share/pixmaps
+
+    runHook postInstall
+  '';
+
+  postInstall = ''
+    qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
+  '';
+
+  # TODO: package mavlink so we can build from a normal source tarball
+  src = fetchgit {
+    url = "https://github.com/mavlink/qgroundcontrol.git";
+    rev = "v${version}";
+    sha256 = "0jr9jpjqdwizsvh9zm0fdp8k2r4536m40dxrn30fbr3ba8vnzkgq";
+    fetchSubmodules = true;
+  };
+
+  meta = with lib; {
+    description = "Provides full ground station support and configuration for the PX4 and APM Flight Stacks";
+    homepage = "http://qgroundcontrol.org/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ lopsided98 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/robotics/sumorobot-manager/default.nix b/nixpkgs/pkgs/applications/science/robotics/sumorobot-manager/default.nix
new file mode 100644
index 000000000000..68b91dafb736
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/robotics/sumorobot-manager/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, python3, qt5, fetchFromGitHub, wrapPython, pyqt5, pyserial }:
+ 
+stdenv.mkDerivation rec {
+  pname = "sumorobot-manager";
+  version = "0.9.0";
+
+  src = fetchFromGitHub {
+    owner = "robokoding";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "03zhb54c259a66hsahmv2ajbzwcjnfjj050wbjhw51zqzxinlgqr";
+  };
+
+  buildInputs = [ python3 ];
+  pythonPath = [
+    pyqt5 pyserial
+  ];
+
+  nativeBuildInputs = [ wrapPython qt5.wrapQtAppsHook ];
+
+  buildPhase = "true";
+
+  installPhase = ''
+    mkdir -p $out/opt/sumorobot-manager
+    cp -r main.py lib res $out/opt/sumorobot-manager
+    chmod -R 644 $out/opt/sumorobot-manager/lib/*
+    mkdir $out/bin
+    makeQtWrapper $out/opt/sumorobot-manager/main.py $out/bin/sumorobot-manager \
+      --run "cd $out/opt/sumorobot-manager"
+  '';
+
+  preFixup = ''
+    patchShebangs $out/opt/sumorobot-manager/main.py
+    wrapPythonProgramsIn "$out/opt" "$pythonPath"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Desktop App for managing SumoRobots";
+    homepage = "https://www.robokoding.com/kits/sumorobot/sumomanager/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/science/robotics/yarp/default.nix b/nixpkgs/pkgs/applications/science/robotics/yarp/default.nix
new file mode 100644
index 000000000000..df2c569a31c7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/robotics/yarp/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, cmake, ace
+}:
+
+stdenv.mkDerivation rec {
+  pname = "yarp";
+  version = "2.3.70.2";
+  src = fetchFromGitHub {
+    owner = "robotology";
+    repo = "yarp";
+    rev = "v${version}";
+    sha256 = "0mphh899niy30xbjjwi9xpsliq8mladfldbbbjfngdrqfhiray1a";
+  };
+
+  buildInputs = [ cmake ace ];
+
+  enableParallelBuilding = true;
+
+  cmakeFlags = [
+    "-DYARP_COMPILE_UNMAINTAINED:BOOL=ON"
+    "-DCREATE_YARPC:BOOL=ON"
+    "-DCREATE_YARPCXX:BOOL=ON"
+  ];
+
+  # since we cant expand $out in cmakeFlags
+  preConfigure = ''cmakeFlags="$cmakeFlags -DCMAKE_INSTALL_LIBDIR=$out/lib"'';
+
+  postInstall = "mv ./$out/lib/*.so $out/lib/";
+
+  meta = {
+    description = "Yet Another Robot Platform";
+    homepage = "http://yarp.it";
+    license = stdenv.lib.licenses.lgpl21;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.nico202 ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/search/doodle/default.nix b/nixpkgs/pkgs/applications/search/doodle/default.nix
new file mode 100644
index 000000000000..9bf00801600f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/search/doodle/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, libextractor, gettext }:
+
+stdenv.mkDerivation rec {
+  name = "doodle-0.7.1";
+
+  buildInputs = [ libextractor gettext ];
+
+  src = fetchurl {
+    url = "https://grothoff.org/christian/doodle/download/${name}.tar.gz";
+    sha256 = "086va4q8swiablv5x72yikrdh5swhy7kzmg5wlszi5a7vjya29xw";
+  };
+
+  meta = {
+    homepage = "https://grothoff.org/christian/doodle/";
+    description = "Tool to quickly index and search documents on a computer";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/search/grepcidr/default.nix b/nixpkgs/pkgs/applications/search/grepcidr/default.nix
new file mode 100644
index 000000000000..125e67938ecd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/search/grepcidr/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "grepcidr";
+  version = "2.0";
+
+  src = fetchurl {
+    url = "http://www.pc-tools.net/files/unix/${pname}-${version}.tar.gz";
+    sha256 = "1yzpa1nigmmp4hir6377hrkpp0z6jnxgccaw2jbqgydbglvnm231";
+  };
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    description = "Filter IPv4 and IPv6 addresses matching CIDR patterns";
+    homepage = "http://www.pc-tools.net/unix/grepcidr/";
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.fadenb ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/search/grepm/default.nix b/nixpkgs/pkgs/applications/search/grepm/default.nix
new file mode 100644
index 000000000000..d03d26d00004
--- /dev/null
+++ b/nixpkgs/pkgs/applications/search/grepm/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, perlPackages, mutt }:
+
+stdenv.mkDerivation {
+  pname = "grepm";
+  version = "0.6";
+
+  src = fetchurl {
+    url = "http://www.barsnick.net/sw/grepm";
+    sha256 = "0ppprhfw06779hz1b10qvq62gsw73shccsav982dyi6xmqb6jqji";
+  };
+
+  phases = [ "installPhase" ];
+
+  buildInputs = [ perlPackages.grepmail mutt ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -a $src $out/bin/grepm
+    chmod +x $out/bin/grepm
+    sed -i \
+      -e "s:^grepmail:${perlPackages.grepmail}/bin/grepmail:" \
+      -e "s:^\( *\)mutt:\1${mutt}/bin/mutt:" \
+      $out/bin/grepm
+  '';
+  
+  meta = with stdenv.lib; {
+    description = "Wrapper for grepmail utilizing mutt";
+    homepage = "http://www.barsnick.net/sw/grepm.html";
+    license = licenses.free;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/search/recoll/default.nix b/nixpkgs/pkgs/applications/search/recoll/default.nix
new file mode 100644
index 000000000000..425e82000b79
--- /dev/null
+++ b/nixpkgs/pkgs/applications/search/recoll/default.nix
@@ -0,0 +1,77 @@
+{ stdenv, fetchurl, lib, bison
+, qt4, xapian, file, python, perl
+, djvulibre, groff, libxslt, unzip, poppler_utils, antiword, catdoc, lyx
+, libwpd, unrtf, untex
+, ghostscript, gawk, gnugrep, gnused, gnutar, gzip, libiconv, zlib
+, withGui ? true }:
+
+assert stdenv.hostPlatform.system != "powerpc-linux";
+
+stdenv.mkDerivation rec {
+  ver = "1.24.5";
+  name = "recoll-${ver}";
+
+  src = fetchurl {
+    url = "https://www.lesbonscomptes.com/recoll/${name}.tar.gz";
+    sha256 = "10m3a0ghnyipjcxapszlr8adyy2yaaxx4vgrkxrfmz13814z89cv";
+  };
+
+  configureFlags = [ "--enable-recollq" ]
+    ++ lib.optionals (!withGui) [ "--disable-qtgui" "--disable-x11mon" ]
+    ++ (if stdenv.isLinux then [ "--with-inotify" ] else [ "--without-inotify" ]);
+
+  buildInputs = [ xapian file python bison zlib ]
+    ++ lib.optional withGui qt4
+    ++ lib.optional stdenv.isDarwin libiconv;
+
+  patchPhase = stdenv.lib.optionalString stdenv.isDarwin ''
+    sed -i 's/-Wl,--no-undefined -Wl,--warn-unresolved-symbols//' Makefile.am
+    sed -i 's/-Wl,--no-undefined -Wl,--warn-unresolved-symbols//' Makefile.in
+  '';
+
+  # the filters search through ${PATH} using a sh proc 'checkcmds' for the
+  # filtering utils. Short circuit this by replacing the filtering command with
+  # the absolute path to the filtering command. 
+  postInstall = ''
+    for f in $out/share/recoll/filters/* ; do
+      if [[ ! "$f" =~ \.zip$ ]]; then
+        substituteInPlace  $f --replace '"antiword"'      '"${lib.getBin antiword}/bin/antiword"'
+        substituteInPlace  $f --replace '"awk"'           '"${lib.getBin gawk}/bin/awk"'
+        substituteInPlace  $f --replace '"catppt"'        '"${lib.getBin catdoc}/bin/catppt"'
+        substituteInPlace  $f --replace '"djvused"'       '"${lib.getBin djvulibre}/bin/djvused"'
+        substituteInPlace  $f --replace '"djvutxt"'       '"${lib.getBin djvulibre}/bin/djvutxt"'
+        substituteInPlace  $f --replace '"egrep"'         '"${lib.getBin gnugrep}/bin/egrep"'
+        substituteInPlace  $f --replace '"groff"'         '"${lib.getBin groff}/bin/groff"'
+        substituteInPlace  $f --replace '"gunzip"'        '"${lib.getBin gzip}/bin/gunzip"'
+        substituteInPlace  $f --replace '"iconv"'         '"${lib.getBin libiconv}/bin/iconv"'
+        substituteInPlace  $f --replace '"pdftotext"'     '"${lib.getBin poppler_utils}/bin/pdftotext"'
+        substituteInPlace  $f --replace '"pstotext"'      '"${lib.getBin ghostscript}/bin/ps2ascii"'
+        substituteInPlace  $f --replace '"sed"'           '"${lib.getBin gnused}/bin/sed"'
+        substituteInPlace  $f --replace '"tar"'           '"${lib.getBin gnutar}/bin/tar"'
+        substituteInPlace  $f --replace '"unzip"'         '"${lib.getBin unzip}/bin/unzip"'
+        substituteInPlace  $f --replace '"xls2csv"'       '"${lib.getBin catdoc}/bin/xls2csv"'
+        substituteInPlace  $f --replace '"xsltproc"'      '"${lib.getBin libxslt}/bin/xsltproc"'
+        substituteInPlace  $f --replace '"unrtf"'         '"${lib.getBin unrtf}/bin/unrtf"'
+        substituteInPlace  $f --replace '"untex"'         '"${lib.getBin untex}/bin/untex"'
+        substituteInPlace  $f --replace '"wpd2html"'      '"${lib.getBin libwpd}/bin/wpd2html"'
+        substituteInPlace  $f --replace /usr/bin/perl ${lib.getBin perl}/bin/perl
+      fi
+    done
+  '' + stdenv.lib.optionalString stdenv.isLinux ''
+    substituteInPlace  $f --replace '"lyx"' '"${lib.getBin lyx}/bin/lyx"'
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "A full-text search tool";
+    longDescription = ''
+      Recoll is an Xapian frontend that can search through files, archive
+      members, email attachments. 
+    '';
+    homepage = "https://www.lesbonscomptes.com/recoll/";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.jcumming ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/system/glances/default.nix b/nixpkgs/pkgs/applications/system/glances/default.nix
new file mode 100644
index 000000000000..3dfec185b572
--- /dev/null
+++ b/nixpkgs/pkgs/applications/system/glances/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, buildPythonApplication, fetchFromGitHub, fetchpatch, isPyPy, lib
+, future, psutil, setuptools
+# Optional dependencies:
+, bottle, batinfo, pysnmp
+, hddtemp
+, netifaces # IP module
+}:
+
+buildPythonApplication rec {
+  pname = "glances";
+  version = "3.1.4.1";
+  disabled = isPyPy;
+
+  src = fetchFromGitHub {
+    owner = "nicolargo";
+    repo = "glances";
+    rev = "v${version}";
+    sha256 = "04dc3pwj9qbbhxpihf13ckdgwz0qc771c7v7awni4vyzk3a9cdfb";
+  };
+
+  # Some tests fail in the sandbox (they e.g. require access to /sys/class/power_supply):
+  patches = lib.optional (doCheck && stdenv.isLinux) ./skip-failing-tests.patch;
+
+  # On Darwin this package segfaults due to mismatch of pure and impure
+  # CoreFoundation. This issues was solved for binaries but for interpreted
+  # scripts a workaround below is still required.
+  # Relevant: https://github.com/NixOS/nixpkgs/issues/24693
+  makeWrapperArgs = lib.optionals stdenv.isDarwin [
+    "--set" "DYLD_FRAMEWORK_PATH" "/System/Library/Frameworks"
+  ];
+
+  doCheck = true;
+  preCheck = lib.optional stdenv.isDarwin ''
+    export DYLD_FRAMEWORK_PATH=/System/Library/Frameworks
+  '';
+
+  propagatedBuildInputs = [
+    batinfo
+    bottle
+    future
+    netifaces
+    psutil
+    pysnmp
+    setuptools
+  ] ++ lib.optional stdenv.isLinux hddtemp;
+
+  preConfigure = ''
+    sed -i 's/data_files\.append((conf_path/data_files.append(("etc\/glances"/' setup.py;
+  '';
+
+  meta = with lib; {
+    homepage = "https://nicolargo.github.io/glances/";
+    description = "Cross-platform curses-based monitoring tool";
+    changelog = "https://github.com/nicolargo/glances/releases/tag/v${version}";
+    license = licenses.lgpl3;
+    maintainers = with maintainers; [ jonringer primeos koral ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/system/glances/skip-failing-tests.patch b/nixpkgs/pkgs/applications/system/glances/skip-failing-tests.patch
new file mode 100644
index 000000000000..f47f1218aea5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/system/glances/skip-failing-tests.patch
@@ -0,0 +1,52 @@
+diff --git a/unitest.py b/unitest.py
+--- a/unitest.py
++++ b/unitest.py
+@@ -59,6 +59,7 @@ class TestGlances(unittest.TestCase):
+         """The function is called *every time* before test_*."""
+         print('\n' + '=' * 78)
+ 
++    @unittest.skip("Requires access to /etc/mtab")
+     def test_000_update(self):
+         """Update stats (mandatory step for all the stats).
+ 
+@@ -87,6 +88,7 @@ class TestGlances(unittest.TestCase):
+         for plugin in plugins_to_check:
+             self.assertTrue(plugin in plugins_list)
+ 
++    @unittest.skip("Fails on NixOS")
+     def test_002_system(self):
+         """Check SYSTEM plugin."""
+         stats_to_check = ['hostname', 'os_name']
+@@ -97,6 +99,7 @@ class TestGlances(unittest.TestCase):
+             self.assertTrue(stat in stats_grab, msg='Cannot find key: %s' % stat)
+         print('INFO: SYSTEM stats: %s' % stats_grab)
+ 
++    @unittest.skip("Fails on NixOS")
+     def test_003_cpu(self):
+         """Check CPU plugin."""
+         stats_to_check = ['system', 'user', 'idle']
+@@ -110,7 +113,7 @@ class TestGlances(unittest.TestCase):
+             self.assertLessEqual(stats_grab[stat], 100)
+         print('INFO: CPU stats: %s' % stats_grab)
+ 
+-    @unittest.skipIf(WINDOWS, "Load average not available on Windows")
++    @unittest.skip("Fails on NixOS")
+     def test_004_load(self):
+         """Check LOAD plugin."""
+         stats_to_check = ['cpucore', 'min1', 'min5', 'min15']
+@@ -123,6 +126,7 @@ class TestGlances(unittest.TestCase):
+             self.assertGreaterEqual(stats_grab[stat], 0)
+         print('INFO: LOAD stats: %s' % stats_grab)
+ 
++    @unittest.skip("Fails on NixOS")
+     def test_005_mem(self):
+         """Check MEM plugin."""
+         stats_to_check = ['available', 'used', 'free', 'total']
+@@ -135,6 +139,7 @@ class TestGlances(unittest.TestCase):
+             self.assertGreaterEqual(stats_grab[stat], 0)
+         print('INFO: MEM stats: %s' % stats_grab)
+ 
++    @unittest.skip("Fails on NixOS")
+     def test_006_swap(self):
+         """Check MEMSWAP plugin."""
+         stats_to_check = ['used', 'free', 'total']
diff --git a/nixpkgs/pkgs/applications/system/monitor/default.nix b/nixpkgs/pkgs/applications/system/monitor/default.nix
new file mode 100644
index 000000000000..ee1198c176f6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/system/monitor/default.nix
@@ -0,0 +1,75 @@
+{ stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, vala
+, pkg-config
+, pantheon
+, python3
+, gettext
+, glib
+, gtk3
+, bamf
+, libwnck3
+, libgee
+, libgtop
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "monitor";
+  version = "0.7.2";
+
+  src = fetchFromGitHub {
+    owner = "stsdc";
+    repo = "monitor";
+    rev = version;
+    sha256 ="1gd2i7gja4k9j4xac8jnls3v41d6qqhmqradz2jbsxwm2sk3cgcf";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    gettext
+    meson
+    ninja
+    vala
+    pkg-config
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    bamf
+    glib
+    gtk3
+    pantheon.granite
+    pantheon.wingpanel
+    libgee
+    libgtop
+    libwnck3
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Manage processes and monitor system resources";
+    longDescription = ''
+      Manage processes and monitor system resources.
+      To use the wingpanel indicator in this application, see the Pantheon
+      section in the NixOS manual.
+    '';
+    homepage = "https://github.com/stsdc/monitor";
+    maintainers = with maintainers; [ xiorcale ] ++ pantheon.maintainers;
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/arch/configure-tmpdir.patch b/nixpkgs/pkgs/applications/version-management/arch/configure-tmpdir.patch
new file mode 100644
index 000000000000..2b39322ca22f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/arch/configure-tmpdir.patch
@@ -0,0 +1,11 @@
+--- tla-1.3.5/src/build-tools/auto-conf-lib/gnu-patch-test	2006-07-20 08:34:28.000000000 +0200
++++ tla-1.3.5/src/build-tools/auto-conf-lib/gnu-patch-test	2008-02-17 13:00:07.000000000 +0100
+@@ -27,7 +27,7 @@ else
+ fi
+ 
+ CMP='cmp'    # we require a working 'cmp' utility
+-TMPDIR="/tmp/,patch-test.$$"
++TMPDIR="${TMPDIR:-/tmp}/,patch-test.$$"
+ 
+ ORIG_A="$TMPDIR/to-patch_a"
+ ORIG_PRISTINE_A="$TMPDIR/to-patch_a.the-original"
diff --git a/nixpkgs/pkgs/applications/version-management/arch/default.nix b/nixpkgs/pkgs/applications/version-management/arch/default.nix
new file mode 100644
index 000000000000..c161d8446acf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/arch/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, which, diffutils, gnupatch, gnutar }:
+
+stdenv.mkDerivation rec {
+  pname = "tla";
+  version = "1.3.5";
+
+  src = fetchurl {
+    url = "https://ftp.gnu.org/old-gnu/gnu-arch/tla-${version}.tar.gz";
+    sha256 = "01mfzj1i6p4s8191cgd5850hds1zls88hkf9rb6qx1vqjv585aj0";
+  };
+
+  patches = [ ./configure-tmpdir.patch ];
+
+  buildInputs = [ which ];
+
+  propagatedBuildInputs = [ diffutils gnupatch gnutar ];
+
+  # Instead of GNU Autoconf, tla uses Tom Lord's now
+  # defunct `package-framework'.
+  buildPhase = ''
+    mkdir +build && cd +build &&		\
+    ../src/configure --prefix="$out" &&		\
+    make install
+  '';
+
+  meta = {
+    description = "GNU Arch (aka. `tla'), a distributed revision control system";
+    homepage = "https://www.gnu.org/software/gnu-arch/";
+    license = "GPL";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/bcompare/default.nix b/nixpkgs/pkgs/applications/version-management/bcompare/default.nix
new file mode 100644
index 000000000000..d9a98ecce285
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/bcompare/default.nix
@@ -0,0 +1,65 @@
+{ autoPatchelfHook, bzip2, cairo, coreutils, fetchurl, gdk-pixbuf, pango, gtk2, kcoreaddons, ki18n, kio, kservice, lib, qt4, qtbase, stdenv, runtimeShell }:
+
+stdenv.mkDerivation rec {
+  pname = "bcompare";
+  version = "4.3.4.24657";
+
+  src = fetchurl {
+    url = "https://www.scootersoftware.com/${pname}-${version}_amd64.deb";
+    sha256 = "031ivmpy0mk43skb30r7p5zwf0m90pmsqhaq5kc08gzy6g4s0wd0";
+  };
+
+  unpackPhase = ''
+    ar x $src
+    tar xfz data.tar.gz
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin $out/lib $out/share
+    cp -R usr/share $out/
+    cp -R usr/lib $out/
+    cp -R usr/bin $out/
+
+    # Remove library that refuses to be autoPatchelf'ed
+    rm $out/lib/beyondcompare/ext/bcompare_ext_kde.amd64.so
+
+    substituteInPlace $out/bin/bcompare \
+      --replace "/usr/lib/beyondcompare" "$out/lib/beyondcompare" \
+      --replace "/bin/bash" "${runtimeShell}"
+
+    # Create symlink bzip2 library
+    ln -s ${bzip2.out}/lib/libbz2.so.1 $out/lib/beyondcompare/libbz2.so.1.0
+  '';
+
+  nativeBuildInputs = [ autoPatchelfHook ];
+
+  buildInputs = [
+    stdenv.cc.cc.lib
+    gtk2
+    pango
+    cairo
+    kio
+    kservice
+    ki18n
+    kcoreaddons
+    gdk-pixbuf
+    bzip2
+  ];
+
+  dontBuild = true;
+  dontConfigure = true;
+
+  meta = with stdenv.lib; {
+    description = "GUI application that allows to quickly and easily compare files and folders";
+    longDescription = ''
+      Beyond Compare is focused. Beyond Compare allows you to quickly and easily compare your files and folders.
+      By using simple, powerful commands you can focus on the differences you're interested in and ignore those you're not.
+      You can then merge the changes, synchronize your files, and generate reports for your records.
+    '';
+    homepage = "https://www.scootersoftware.com";
+    license = licenses.unfree;
+    maintainers = [ maintainers.ktor ];
+    platforms = [ "x86_64-linux" ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/version-management/bitkeeper/default.nix b/nixpkgs/pkgs/applications/version-management/bitkeeper/default.nix
new file mode 100644
index 000000000000..78f62ebcf25c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/bitkeeper/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchurl, perl, gperf, bison, groff
+, pkgconfig, libXft, pcre
+, libtomcrypt, libtommath, lz4 }:
+
+stdenv.mkDerivation rec {
+  pname = "bitkeeper";
+  version = "7.3.1ce";
+
+  src = fetchurl {
+    url = "https://www.bitkeeper.org/downloads/${version}/bk-${version}.src.tar.gz";
+    sha256 = "0l6jwvcg4s1q00vb01hdv58jgv03l8x5mhjl73cwgfiff80zx147";
+  };
+
+  hardeningDisable = [ "fortify" ];
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    perl gperf bison groff libXft
+    pcre libtomcrypt libtommath lz4
+  ];
+
+  postPatch = ''
+        substituteInPlace port/unix_platform.sh \
+                --replace /bin/rm rm
+        substituteInPlace ./undo.c \
+                --replace /bin/cat cat
+  '';
+
+  sourceRoot = "bk-${version}/src";
+  buildPhase = ''
+    make -j6 V=1 p
+    make image
+  '';
+
+  installPhase = ''
+    ./utils/bk-* $out/bitkeeper
+    mkdir -p $out/bin
+    $out/bitkeeper/bk links $out/bin
+    chmod g-w $out
+  '';
+
+  meta = {
+    description     = "A distributed version control system";
+    longDescription = ''
+      BitKeeper is a fast, enterprise-ready, distributed SCM that
+      scales up to very large projects and down to tiny ones.
+    '';
+    homepage    = "https://www.bitkeeper.org/";
+    license     = stdenv.lib.licenses.asl20;
+    platforms   = stdenv.lib.platforms.linux;
+    maintainers = with stdenv.lib.maintainers; [ wscott thoughtpolice ];
+    broken      = true; # seems to fail on recent glibc versions
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/blackbox/default.nix b/nixpkgs/pkgs/applications/version-management/blackbox/default.nix
new file mode 100644
index 000000000000..8c28a6789624
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/blackbox/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  version = "1.20181219";
+  pname   = "blackbox";
+
+  src = fetchFromGitHub {
+    owner  = "stackexchange";
+    repo   = pname;
+    rev    = "v${version}";
+    sha256 = "1lpwwwc3rf992vdf3iy1ds07n1xkmad065im2bqzc6kdsbkn7rjx";
+  };
+
+  installPhase = ''
+    mkdir -p $out/bin && cp -r bin/* $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Safely store secrets in a VCS repo";
+    maintainers = with maintainers; [ ericsagnes ];
+    license     = licenses.mit;
+    platforms   = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/cvs-fast-export/default.nix b/nixpkgs/pkgs/applications/version-management/cvs-fast-export/default.nix
new file mode 100644
index 000000000000..0592f6e545d8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/cvs-fast-export/default.nix
@@ -0,0 +1,50 @@
+{stdenv, fetchurl, makeWrapper, flex, bison,
+ asciidoc, docbook_xml_dtd_45, docbook_xsl,
+ libxml2, libxslt,
+ python27, rcs, cvs, git,
+ coreutils, rsync}:
+with stdenv; with lib;
+mkDerivation rec {
+  name = "cvs-fast-export-${meta.version}";
+  meta = {
+    version = "1.55";
+    description = "Export an RCS or CVS history as a fast-import stream";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ dfoxfranke ];
+    homepage = "http://www.catb.org/esr/cvs-fast-export/";
+    platforms = platforms.all;
+  };
+
+  src = fetchurl {
+    url = "http://www.catb.org/~esr/cvs-fast-export/cvs-fast-export-1.55.tar.gz";
+    sha256 = "06y2myhhv2ap08bq7d7shq0b7lq6wgznwrpz6622xq66cxkf2n5g";
+  };
+
+  buildInputs = [
+    flex bison asciidoc docbook_xml_dtd_45 docbook_xsl libxml2 libxslt
+    python27 rcs cvs git makeWrapper
+  ];
+
+  postPatch = "patchShebangs .";
+
+  preBuild = ''
+    makeFlagsArray=(
+      XML_CATALOG_FILES="${docbook_xml_dtd_45}/xml/dtd/docbook/catalog.xml ${docbook_xsl}/xml/xsl/docbook/catalog.xml"
+      LIBS=""
+      prefix="$out"
+    )
+  '';
+
+  doCheck = true;
+
+  postInstall =
+    let
+      binpath = makeBinPath [ out rcs cvs git coreutils rsync ];
+    in ''
+      for prog in cvs-fast-export cvsconvert cvssync; do
+        wrapProgram $out/bin/$prog \
+          --prefix PATH : ${binpath}
+      done
+    ''
+  ;
+}
diff --git a/nixpkgs/pkgs/applications/version-management/cvs/CVE-2012-0804.patch b/nixpkgs/pkgs/applications/version-management/cvs/CVE-2012-0804.patch
new file mode 100644
index 000000000000..cd2b324729fb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/cvs/CVE-2012-0804.patch
@@ -0,0 +1,16 @@
+diff --git a/src/client.c b/src/client.c
+index 751406b..b45d89c 100644
+--- a/src/client.c
++++ b/src/client.c
+@@ -3558,9 +3558,9 @@ connect_to_pserver (cvsroot_t *root, struct buffer **to_server_p,
+          * code.
+          */
+ 	read_line_via (from_server, to_server, &read_buf);
+-	sscanf (read_buf, "%s %d", write_buf, &codenum);
++	count = sscanf (read_buf, "%*s %d", &codenum);
+
+-	if ((codenum / 100) != 2)
++	if (count != 1 || (codenum / 100) != 2)
+ 	    error (1, 0, "proxy server %s:%d does not support http tunnelling",
+ 		   root->proxy_hostname, proxy_port_number);
+ 	free (read_buf);
diff --git a/nixpkgs/pkgs/applications/version-management/cvs/CVE-2017-12836.patch b/nixpkgs/pkgs/applications/version-management/cvs/CVE-2017-12836.patch
new file mode 100644
index 000000000000..950079423685
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/cvs/CVE-2017-12836.patch
@@ -0,0 +1,29 @@
+--- a/src/rsh-client.c.orig	2005-10-02 17:17:21.000000000 +0200
++++ b/src/rsh-client.c	2017-11-07 16:56:06.957370469 +0100
+@@ -53,7 +53,7 @@
+     char *cvs_server = (root->cvs_server != NULL
+ 			? root->cvs_server : getenv ("CVS_SERVER"));
+     int i = 0;
+-    /* This needs to fit "rsh", "-b", "-l", "USER", "host",
++    /* This needs to fit "rsh", "-b", "-l", "USER", "--", "host",
+        "cmd (w/ args)", and NULL.  We leave some room to grow. */
+     char *rsh_argv[10];
+ 
+@@ -97,6 +97,9 @@
+ 	rsh_argv[i++] = root->username;
+     }
+ 
++    /* Only non-option arguments from here. (CVE-2017-12836) */
++    rsh_argv[i++] = "--";
++
+     rsh_argv[i++] = root->hostname;
+     rsh_argv[i++] = cvs_server;
+     rsh_argv[i++] = "server";
+@@ -171,6 +174,7 @@
+ 	    *p++ = root->username;
+ 	}
+ 
++	*p++ = "--";
+ 	*p++ = root->hostname;
+ 	*p++ = command;
+ 	*p++ = NULL;
diff --git a/nixpkgs/pkgs/applications/version-management/cvs/default.nix b/nixpkgs/pkgs/applications/version-management/cvs/default.nix
new file mode 100644
index 000000000000..07a6b7c993c8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/cvs/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, fetchpatch, nano }:
+
+stdenv.mkDerivation {
+  name = "cvs-1.12.13";
+
+  src = fetchurl {
+    url = "mirror://savannah/cvs/source/feature/1.12.13/cvs-1.12.13.tar.bz2";
+    sha256 = "0pjir8cwn0087mxszzbsi1gyfc6373vif96cw4q3m1x6p49kd1bq";
+  };
+
+  patches = [
+    ./getcwd-chroot.patch
+    ./CVE-2012-0804.patch
+    ./CVE-2017-12836.patch
+    (fetchpatch {
+      url = "https://raw.githubusercontent.com/Homebrew/formula-patches/24118ec737c7/cvs/vasnprintf-high-sierra-fix.diff";
+      sha256 = "1ql6aaia7xkfq3vqhlw5bd2z2ywka82zk01njs1b2szn699liymg";
+    })
+  ];
+
+  hardeningDisable = [ "fortify" "format" ];
+
+  preConfigure = ''
+    # Apply the Debian patches.
+    for p in "debian/patches/"*; do
+      echo "applying \`$p' ..."
+      patch --verbose -p1 < "$p"
+    done
+  '';
+
+  buildInputs = [ nano ];
+
+  doCheck = false; # fails 1 of 1 tests
+
+  meta = with stdenv.lib; {
+    homepage = "http://cvs.nongnu.org";
+    description = "Concurrent Versions System - a source control system";
+    license = licenses.gpl2; # library is GPLv2, main is GPLv1
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/cvs/getcwd-chroot.patch b/nixpkgs/pkgs/applications/version-management/cvs/getcwd-chroot.patch
new file mode 100644
index 000000000000..3f827a1e6981
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/cvs/getcwd-chroot.patch
@@ -0,0 +1,302 @@
+Fix Gnulib's getcwd in chroots.
+From Debian bug #456164, http://bugs.debian.org/456164 .
+
+--- cvs-1.12.13.orig/debian/patches/20_readdir_errno
++++ cvs-1.12.13/debian/patches/20_readdir_errno
+@@ -0,0 +1,121 @@
++# From Gnulib:
++#   http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=0b78641d85af3b72e3b9d94cb7b94e45f3c08ee5
++# We don't need this directly, but it's required so that 21_getcwd_chroot
++# applies cleanly.
++#
++# 2005-10-29  Paul Eggert  <eggert@cs.ucla.edu>
++#
++# 	* getcwd.c (__getcwd): Don't assume that system calls after readdir
++# 	leave errno alone.  Problem reported by Dmitry V. Levin.
++
++--- cvs-1.12.13-old/lib/getcwd.c
+++++ cvs-1.12.13/lib/getcwd.c
++@@ -201,6 +201,8 @@ __getcwd (char *buf, size_t size)
++       ino_t dotino;
++       bool mount_point;
++       int parent_status;
+++      size_t dirroom;
+++      size_t namlen;
++ 
++       /* Look at the parent directory.  */
++ #ifdef AT_FDCWD
++@@ -241,11 +243,20 @@ __getcwd (char *buf, size_t size)
++ 	goto lose;
++       dotlist[dotlen++] = '/';
++ #endif
++-      /* Clear errno to distinguish EOF from error if readdir returns
++-	 NULL.  */
++-      __set_errno (0);
++-      while ((d = __readdir (dirstream)) != NULL)
+++      for (;;)
++ 	{
+++	  /* Clear errno to distinguish EOF from error if readdir returns
+++	     NULL.  */
+++	  __set_errno (0);
+++	  d = __readdir (dirstream);
+++	  if (d == NULL)
+++	    {
+++	      if (errno == 0)
+++		/* EOF on dirstream, which means that the current directory
+++		   has been removed.  */
+++		__set_errno (ENOENT);
+++	      goto lose;
+++	    }
++ 	  if (d->d_name[0] == '.' &&
++ 	      (d->d_name[1] == '\0' ||
++ 	       (d->d_name[1] == '.' && d->d_name[2] == '\0')))
++@@ -303,48 +314,38 @@ __getcwd (char *buf, size_t size)
++ 		break;
++ 	    }
++ 	}
++-      if (d == NULL)
++-	{
++-	  if (errno == 0)
++-	    /* EOF on dirstream, which means that the current directory
++-	       has been removed.  */
++-	    __set_errno (ENOENT);
++-	  goto lose;
++-	}
++-      else
++-	{
++-	  size_t dirroom = dirp - dir;
++-	  size_t namlen = _D_EXACT_NAMLEN (d);
++ 
++-	  if (dirroom <= namlen)
+++      dirroom = dirp - dir;
+++      namlen = _D_EXACT_NAMLEN (d);
+++
+++      if (dirroom <= namlen)
+++	{
+++	  if (size != 0)
++ 	    {
++-	      if (size != 0)
++-		{
++-		  __set_errno (ERANGE);
++-		  goto lose;
++-		}
++-	      else
++-		{
++-		  char *tmp;
++-		  size_t oldsize = allocated;
+++	      __set_errno (ERANGE);
+++	      goto lose;
+++	    }
+++	  else
+++	    {
+++	      char *tmp;
+++	      size_t oldsize = allocated;
++ 
++-		  allocated += MAX (allocated, namlen);
++-		  if (allocated < oldsize
++-		      || ! (tmp = realloc (dir, allocated)))
++-		    goto memory_exhausted;
+++	      allocated += MAX (allocated, namlen);
+++	      if (allocated < oldsize
+++		  || ! (tmp = realloc (dir, allocated)))
+++		goto memory_exhausted;
++ 
++-		  /* Move current contents up to the end of the buffer.
++-		     This is guaranteed to be non-overlapping.  */
++-		  dirp = memcpy (tmp + allocated - (oldsize - dirroom),
++-				 tmp + dirroom,
++-				 oldsize - dirroom);
++-		  dir = tmp;
++-		}
+++	      /* Move current contents up to the end of the buffer.
+++		 This is guaranteed to be non-overlapping.  */
+++	      dirp = memcpy (tmp + allocated - (oldsize - dirroom),
+++			     tmp + dirroom,
+++			     oldsize - dirroom);
+++	      dir = tmp;
++ 	    }
++-	  dirp -= namlen;
++-	  memcpy (dirp, d->d_name, namlen);
++-	  *--dirp = '/';
++ 	}
+++      dirp -= namlen;
+++      memcpy (dirp, d->d_name, namlen);
+++      *--dirp = '/';
++ 
++       thisdev = dotdev;
++       thisino = dotino;
+--- cvs-1.12.13.orig/debian/patches/21_getcwd_chroot
++++ cvs-1.12.13/debian/patches/21_getcwd_chroot
+@@ -0,0 +1,172 @@
++# From Gnulib:
++#  http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=79c0a43808d9ca85acd04600149fc1a9b75bd1b9
++#
++# 2006-07-03  Paul Eggert  <eggert@cs.ucla.edu>
++#
++# 	Merge from coreutils.
++#
++# 	2006-03-19  Jim Meyering  <jim@meyering.net>
++#
++# 	Work even in a chroot where d_ino values for entries in "/"
++# 	don't match the stat.st_ino values for the same names.
++# 	* getcwd.c (__getcwd): When no d_ino value matches the target inode
++# 	number, iterate through all entries again, using lstat instead.
++# 	Reported by Kenshi Muto in http://bugs.debian.org/355810, and by
++# 	Zouhir Hafidi in https://bugzilla.redhat.com/bugzilla/190656.
++#
++# 	* getcwd.c (__getcwd): Clarify a comment.
++# 	Use memcpy in place of a call to strcpy.
++
++--- cvs-1.12.13-old/lib/getcwd.c
+++++ cvs-1.12.13/lib/getcwd.c
++@@ -211,6 +211,7 @@ __getcwd (char *buf, size_t size)
++       int parent_status;
++       size_t dirroom;
++       size_t namlen;
+++      bool use_d_ino = true;
++ 
++       /* Look at the parent directory.  */
++ #ifdef AT_FDCWD
++@@ -257,11 +258,26 @@ __getcwd (char *buf, size_t size)
++ 	     NULL.  */
++ 	  __set_errno (0);
++ 	  d = __readdir (dirstream);
+++
+++	  /* When we've iterated through all directory entries without finding
+++	     one with a matching d_ino, rewind the stream and consider each
+++	     name again, but this time, using lstat.  This is necessary in a
+++	     chroot on at least one system (glibc-2.3.6 + linux 2.6.12), where
+++	     .., ../.., ../../.., etc. all had the same device number, yet the
+++	     d_ino values for entries in / did not match those obtained
+++	     via lstat.  */
+++	  if (d == NULL && errno == 0 && use_d_ino)
+++	    {
+++	      use_d_ino = false;
+++	      rewinddir (dirstream);
+++	      d = __readdir (dirstream);
+++	    }
+++
++ 	  if (d == NULL)
++ 	    {
++ 	      if (errno == 0)
++-		/* EOF on dirstream, which means that the current directory
++-		   has been removed.  */
+++		/* EOF on dirstream, which can mean e.g., that the current
+++		   directory has been removed.  */
++ 		__set_errno (ENOENT);
++ 	      goto lose;
++ 	    }
++@@ -269,58 +285,65 @@ __getcwd (char *buf, size_t size)
++ 	      (d->d_name[1] == '\0' ||
++ 	       (d->d_name[1] == '.' && d->d_name[2] == '\0')))
++ 	    continue;
++-	  if (MATCHING_INO (d, thisino) || mount_point)
+++
+++	  if (use_d_ino)
++ 	    {
++-	      int entry_status;
+++	      bool match = (MATCHING_INO (d, thisino) || mount_point);
+++	      if (! match)
+++		continue;
+++	    }
+++
+++	  {
+++	    int entry_status;
++ #ifdef AT_FDCWD
++-	      entry_status = fstatat (fd, d->d_name, &st, AT_SYMLINK_NOFOLLOW);
+++	    entry_status = fstatat (fd, d->d_name, &st, AT_SYMLINK_NOFOLLOW);
++ #else
++-	      /* Compute size needed for this file name, or for the file
++-		 name ".." in the same directory, whichever is larger.
++-	         Room for ".." might be needed the next time through
++-		 the outer loop.  */
++-	      size_t name_alloc = _D_ALLOC_NAMLEN (d);
++-	      size_t filesize = dotlen + MAX (sizeof "..", name_alloc);
++-
++-	      if (filesize < dotlen)
++-		goto memory_exhausted;
++-
++-	      if (dotsize < filesize)
++-		{
++-		  /* My, what a deep directory tree you have, Grandma.  */
++-		  size_t newsize = MAX (filesize, dotsize * 2);
++-		  size_t i;
++-		  if (newsize < dotsize)
++-		    goto memory_exhausted;
++-		  if (dotlist != dots)
++-		    free (dotlist);
++-		  dotlist = malloc (newsize);
++-		  if (dotlist == NULL)
++-		    goto lose;
++-		  dotsize = newsize;
++-
++-		  i = 0;
++-		  do
++-		    {
++-		      dotlist[i++] = '.';
++-		      dotlist[i++] = '.';
++-		      dotlist[i++] = '/';
++-		    }
++-		  while (i < dotlen);
++-		}
++-
++-	      strcpy (dotlist + dotlen, d->d_name);
++-	      entry_status = __lstat (dotlist, &st);
+++	    /* Compute size needed for this file name, or for the file
+++	       name ".." in the same directory, whichever is larger.
+++	       Room for ".." might be needed the next time through
+++	       the outer loop.  */
+++	    size_t name_alloc = _D_ALLOC_NAMLEN (d);
+++	    size_t filesize = dotlen + MAX (sizeof "..", name_alloc);
+++
+++	    if (filesize < dotlen)
+++	      goto memory_exhausted;
+++
+++	    if (dotsize < filesize)
+++	      {
+++		/* My, what a deep directory tree you have, Grandma.  */
+++		size_t newsize = MAX (filesize, dotsize * 2);
+++		size_t i;
+++		if (newsize < dotsize)
+++		  goto memory_exhausted;
+++		if (dotlist != dots)
+++		  free (dotlist);
+++		dotlist = malloc (newsize);
+++		if (dotlist == NULL)
+++		  goto lose;
+++		dotsize = newsize;
+++
+++		i = 0;
+++		do
+++		  {
+++		    dotlist[i++] = '.';
+++		    dotlist[i++] = '.';
+++		    dotlist[i++] = '/';
+++		  }
+++		while (i < dotlen);
+++	      }
+++
+++	    memcpy (dotlist + dotlen, d->d_name, _D_ALLOC_NAMLEN (d));
+++	    entry_status = __lstat (dotlist, &st);
++ #endif
++-	      /* We don't fail here if we cannot stat() a directory entry.
++-		 This can happen when (network) file systems fail.  If this
++-		 entry is in fact the one we are looking for we will find
++-		 out soon as we reach the end of the directory without
++-		 having found anything.  */
++-	      if (entry_status == 0 && S_ISDIR (st.st_mode)
++-		  && st.st_dev == thisdev && st.st_ino == thisino)
++-		break;
++-	    }
+++	    /* We don't fail here if we cannot stat() a directory entry.
+++	       This can happen when (network) file systems fail.  If this
+++	       entry is in fact the one we are looking for we will find
+++	       out soon as we reach the end of the directory without
+++	       having found anything.  */
+++	    if (entry_status == 0 && S_ISDIR (st.st_mode)
+++		&& st.st_dev == thisdev && st.st_ino == thisino)
+++	      break;
+++	  }
++ 	}
++ 
++       dirroom = dirp - dir;
diff --git a/nixpkgs/pkgs/applications/version-management/cvs2svn/default.nix b/nixpkgs/pkgs/applications/version-management/cvs2svn/default.nix
new file mode 100644
index 000000000000..ae1929565b6e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/cvs2svn/default.nix
@@ -0,0 +1,37 @@
+{ lib, fetchurl, makeWrapper
+, python2Packages
+, cvs, subversion, git, breezy
+}:
+
+python2Packages.buildPythonApplication  rec {
+  pname = "cvs2svn";
+  version = "2.5.0";
+
+  src = fetchurl {
+    url = "http://cvs2svn.tigris.org/files/documents/1462/49543/${pname}-${version}.tar.gz";
+    sha256 = "1ska0z15sjhyfi860rjazz9ya1gxbf5c0h8dfqwz88h7fccd22b4";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  checkInputs = [ subversion git breezy ];
+
+  checkPhase = "python run-tests.py";
+
+  doCheck = false; # Couldn't find node 'transaction...' in expected output tree
+
+  postInstall = ''
+    for i in bzr svn git; do
+      wrapProgram $out/bin/cvs2$i \
+          --prefix PATH : "${lib.makeBinPath [ cvs ]}"
+    done
+  '';
+
+  meta = with lib; {
+    description = "A tool to convert CVS repositories to Subversion repositories";
+    homepage = "http://cvs2svn.tigris.org/";
+    maintainers = [ maintainers.makefu ];
+    platforms = platforms.unix;
+    license = licenses.asl20;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/cvsps/default.nix b/nixpkgs/pkgs/applications/version-management/cvsps/default.nix
new file mode 100644
index 000000000000..133d8d7cbb4e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/cvsps/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, fetchurl, fetchpatch, cvs, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "cvsps";
+  version = "2.1";
+
+  src = fetchurl {
+    url = "mirror://debian/pool/main/c/cvsps/cvsps_${version}.orig.tar.gz";
+    sha256 = "0nh7q7zcmagx0i63h6fqqkkq9i55k77myvb8h6jn2f266f5iklwi";
+  };
+
+  # Patches from https://sources.debian.net/src/cvsps/2.1-7/debian/patches
+  patches =
+    [ (fetchpatch {
+        url = "https://sources.debian.net/data/main/c/cvsps/2.1-7/debian/patches/01_ignoretrunk.patch";
+        sha256 = "1gzb97dw2a6bm0bmim7p7wvsn0r82y3a8n22ln6rbbkkd8vlnzcb";
+      })
+
+      (fetchpatch {
+        url = "https://sources.debian.net/data/main/c/cvsps/2.1-7/debian/patches/02_dynamicbufferalloc.patch";
+        sha256 = "0dm7azxnw0g9pdqkb3y4y2h047zgrclbh40av6c868wfp2j6l9sc";
+      })
+
+      (fetchpatch {
+        url = "https://sources.debian.net/data/main/c/cvsps/2.1-7/debian/patches/03_diffoptstypo.patch";
+        sha256 = "06n8652g7inpv8cgqir7ijq00qw1fr0v44m2pbmgx7ilmna2vrcw";
+      })
+
+      (fetchpatch {
+        url = "https://sources.debian.net/data/main/c/cvsps/2.1-7/debian/patches/05-inet_addr_fix.patch";
+        sha256 = "10w6px96dz8bb69asjzshvp787ccazmqnjsggqc4gwdal95q3cn7";
+      })
+
+      (fetchpatch {
+        url = "https://sources.debian.net/data/main/c/cvsps/2.1-7/debian/patches/fix-makefile";
+        sha256 = "0m92b55hgldwg6lwdaybbj0n3lw1b3wj2xkk1cz1ywq073bpf3jm";
+      })
+
+      (fetchpatch {
+        url = "https://sources.debian.net/data/main/c/cvsps/2.1-7/debian/patches/fix-manpage";
+        sha256 = "0gky14rhx82wv0gj8bkc74ki5xilhv5i3k1jc7khklr4lb6mmhpx";
+      })
+    ];
+
+  buildInputs = [ cvs zlib ];
+
+  installFlags = [ "prefix=$(out)" ];
+
+  meta = {
+    description = ''A tool to generate CVS patch set information'';
+    longDescription = ''
+      CVSps is a program for generating `patchset' information from a
+      CVS repository.  A patchset in this case is defined as a set of
+      changes made to a collection of files, and all committed at the
+      same time (using a single "cvs commit" command).
+    '';
+    homepage = "http://www.cobite.com/cvsps/";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/cvsq/default.nix b/nixpkgs/pkgs/applications/version-management/cvsq/default.nix
new file mode 100644
index 000000000000..a39c9ede5243
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/cvsq/default.nix
@@ -0,0 +1,67 @@
+{ stdenv
+, fetchurl
+, makeWrapper
+, cvs
+, perl
+, nettools
+, findutils
+, rsync
+, coreutils
+, diffutils
+} :
+
+stdenv.mkDerivation rec {
+  pname = "cvsq";
+  version = "1.11";
+
+  src = fetchurl {
+    url = "http://www.linta.de/~aehlig/cvsq/cvsq-${version}.tgz";
+    sha256 = "0491k4skk3jyyd6plp2kcihmxxav9rsch7vd1yi697m2fqckp5ws";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ cvs perl nettools findutils rsync coreutils diffutils ];
+
+
+  makeFlags = [ "prefix=$(out)" ];
+
+  postInstall = ''
+    substituteInPlace $out/bin/cvsq --replace "/bin/sh" "${stdenv.shell}"
+    substituteInPlace $out/bin/lcvs --replace "/bin/sh" "${stdenv.shell}"
+    wrapProgram $out/bin/cvsq --prefix PATH : ${stdenv.lib.makeBinPath
+      [ cvs nettools findutils rsync coreutils diffutils ]}
+    wrapProgram $out/bin/cvsq-branch --prefix PATH : ${stdenv.lib.makeBinPath
+      [ cvs nettools findutils rsync coreutils diffutils ]}
+    wrapProgram $out/bin/cvsq-merge --prefix PATH : ${stdenv.lib.makeBinPath
+      [ cvs nettools findutils rsync coreutils diffutils ]}
+    wrapProgram $out/bin/cvsq-switch --prefix PATH : ${stdenv.lib.makeBinPath
+      [ cvs nettools findutils rsync coreutils diffutils ]}
+    wrapProgram $out/bin/lcvs --prefix PATH : ${stdenv.lib.makeBinPath
+      [ cvs nettools findutils rsync coreutils diffutils ]}
+  '';
+
+  meta = {
+    description = ''A collection of tools to work locally with CVS'';
+    longDescription = ''
+      cvsq is a collection of tools to work locally with CVS.
+
+      cvsq queues commits and other cvs commands in a queue to be executed later,
+      when the machine is online again. In case of a commit (the default action)
+      an actual copy of the working directory is made, so that you can continue
+      editing without affecting the scheduled commit. You can even schedule
+      several successive commits to the same file and they will be correctly
+      committed as successive commits at the time of upload. This is different
+      from an earlier script also named cvsq that you might have seen elsewhere.
+
+      lcvs uses rsync to maintain a local copy of a cvs repository. It also
+      gives a convenient interface to call cvs in such a way that it believes the
+      current working directory refers to the local copy rather than to the actual
+      repository. This is useful for commands like log, diff, etc; however it cannot
+      be used for commits (that's what cvsq is for).
+    '';
+    homepage = "https://www.linta.de/~aehlig/cvsq/";
+    license = stdenv.lib.licenses.bsd3;
+    maintainers = with stdenv.lib.maintainers; [ clkamp ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/dvc/default.nix b/nixpkgs/pkgs/applications/version-management/dvc/default.nix
new file mode 100644
index 000000000000..b9ac8b139cbb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/dvc/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, python3Packages
+, fetchFromGitHub
+, enableGoogle ? false
+, enableAWS ? false
+, enableAzure ? false
+, enableSSH ? false
+}:
+
+with python3Packages;
+buildPythonApplication rec {
+  pname = "dvc";
+  version = "0.24.3";
+
+  # PyPi only has wheel
+  src = fetchFromGitHub {
+    owner = "iterative";
+    repo = "dvc";
+    rev = version;
+    sha256 = "1wqq4i23hppilp20fx5a5nj93xwf3wwwr2f8aasvn6jkv2l22vpl";
+  };
+
+  propagatedBuildInputs = [
+    ply
+    configparser
+    zc_lockfile
+    future
+    colorama
+    configobj
+    networkx
+    pyyaml
+    GitPython
+    setuptools
+    nanotime
+    pyasn1
+    schema
+    jsonpath_rw
+    requests
+    grandalf
+    asciimatics
+    distro
+    appdirs
+  ]
+  ++ lib.optional enableGoogle google_cloud_storage
+  ++ lib.optional enableAWS boto3
+  ++ lib.optional enableAzure azure-storage-blob
+  ++ lib.optional enableSSH paramiko;
+
+  # tests require access to real cloud services
+  # nix build tests have to be isolated and run locally
+  doCheck = false;
+
+  patches = [ ./dvc-daemon.patch ];
+
+  postPatch = ''
+    substituteInPlace dvc/daemon.py --subst-var-by dvc "$out/bin/dcv"
+  '';
+
+  meta = with lib; {
+    description = "Version Control System for Machine Learning Projects";
+    license = licenses.asl20;
+    homepage = "https://dvc.org";
+    maintainers = with maintainers; [ cmcdragonkai ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/dvc/dvc-daemon.patch b/nixpkgs/pkgs/applications/version-management/dvc/dvc-daemon.patch
new file mode 100644
index 000000000000..5c2d363b17f1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/dvc/dvc-daemon.patch
@@ -0,0 +1,21 @@
+diff --git a/dvc/daemon.py b/dvc/daemon.py
+index 1d67a37..7ce6fde 100644
+--- a/dvc/daemon.py
++++ b/dvc/daemon.py
+@@ -67,14 +67,8 @@ def daemon(args):
+     Args:
+         args (list): list of arguments to append to `dvc daemon` command.
+     """
+-    cmd = [sys.executable]
+-    if not is_binary():
+-        cmd += ['-m', 'dvc']
+-    cmd += ['daemon', '-q'] + args
+-
+-    env = fix_env()
+-    file_path = os.path.abspath(inspect.stack()[0][1])
+-    env['PYTHONPATH'] = os.path.dirname(os.path.dirname(file_path))
++    cmd = [ "@dvc@" , "daemon", "-q"] + args
++    env = None
+ 
+     logger.debug("Trying to spawn '{}' with env '{}'".format(cmd, env))
+ 
diff --git a/nixpkgs/pkgs/applications/version-management/fossil/default.nix b/nixpkgs/pkgs/applications/version-management/fossil/default.nix
new file mode 100644
index 000000000000..d23728a060f9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/fossil/default.nix
@@ -0,0 +1,55 @@
+{ stdenv
+, libiconv, fetchurl, zlib, openssl, tcl, readline, sqlite, ed, which
+, tcllib, withJson ? true
+}:
+
+stdenv.mkDerivation rec {
+  pname = "fossil";
+  version = "2.11.1";
+
+  src = fetchurl {
+    urls =
+      [
+        "https://www.fossil-scm.org/index.html/uv/fossil-src-${version}.tar.gz"
+      ];
+    name = "${pname}-${version}.tar.gz";
+    sha256 = "1sxq1hn87fdikhbg9y3v4sjy4gxaifnx4dig8nx6xwd5mm7z74dk";
+  };
+
+  buildInputs = [ zlib openssl readline sqlite which ed ]
+             ++ stdenv.lib.optional stdenv.isDarwin libiconv;
+  nativeBuildInputs = [ tcl ];
+
+  doCheck = stdenv.hostPlatform == stdenv.buildPlatform;
+  preCheck = ''
+    export TCLLIBPATH="${tcllib}/lib/tcllib${tcllib.version}"
+  '';
+  configureFlags = stdenv.lib.optional withJson "--json";
+
+  preBuild=''
+    export USER=nonexistent-but-specified-user
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    INSTALLDIR=$out/bin make install
+  '';
+
+  meta = {
+    description = "Simple, high-reliability, distributed software configuration management";
+    longDescription = ''
+      Fossil is a software configuration management system.  Fossil is
+      software that is designed to control and track the development of a
+      software project and to record the history of the project. There are
+      many such systems in use today. Fossil strives to distinguish itself
+      from the others by being extremely simple to setup and operate.
+    '';
+    homepage = "http://www.fossil-scm.org/";
+    license = stdenv.lib.licenses.bsd2;
+    platforms = with stdenv.lib.platforms; all;
+    maintainers = [ #Add your name here!
+      stdenv.lib.maintainers.maggesi
+      stdenv.lib.maintainers.viric
+    ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/gerrit/default.nix b/nixpkgs/pkgs/applications/version-management/gerrit/default.nix
new file mode 100644
index 000000000000..fc69ea7f65f6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gerrit/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "gerrit";
+  version = "3.1.5";
+
+  src = fetchurl {
+    url = "https://gerrit-releases.storage.googleapis.com/gerrit-${version}.war";
+    sha256 = "0gyh6a0p8gcrfnkm0sdjvzg6is9iirxjyffgza6k4v9rz6pjx8i8";
+  };
+
+  buildCommand = ''
+    mkdir -p "$out"/webapps/
+    ln -s ${src} "$out"/webapps/gerrit-${version}.war
+  '';
+
+  passthru = {
+    # A list of plugins that are part of the gerrit.war file.
+    # Use `java -jar gerrit.war ls | grep plugins/` to generate that list.
+    plugins = [
+      "codemirror-editor"
+      "commit-message-length-validator"
+      "delete-project"
+      "download-commands"
+      "gitiles"
+      "hooks"
+      "plugin-manager"
+      "replication"
+      "reviewnotes"
+      "singleusergroup"
+      "webhooks"
+    ];
+  };
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.gerritcodereview.com/index.md";
+    license = licenses.asl20;
+    description = "A web based code review and repository management for the git version control system";
+    maintainers = with maintainers; [ jammerful zimbatm ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/bfg-repo-cleaner/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/bfg-repo-cleaner/default.nix
new file mode 100644
index 000000000000..99c6323217ab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/bfg-repo-cleaner/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchurl, jre, makeWrapper }:
+
+let
+  version = "1.13.0";
+  jarName = "bfg-${version}.jar";
+  mavenUrl = "mirror://maven/com/madgag/bfg/${version}/${jarName}";
+in
+  stdenv.mkDerivation {
+    inherit version jarName;
+
+    name = "bfg-repo-cleaner-${version}";
+
+    src = fetchurl {
+      url = mavenUrl;
+      sha256 = "1kn84rsvms1v5l1j2xgrk7dc7mnsmxkc6sqd94mnim22vnwvl8mz";
+    };
+
+    buildInputs = [ jre makeWrapper ];
+
+    phases = "installPhase";
+
+    installPhase = ''
+      mkdir -p $out/share/java
+      mkdir -p $out/bin
+      cp $src $out/share/java/$jarName
+      makeWrapper "${jre}/bin/java" $out/bin/bfg --add-flags "-cp $out/share/java/$jarName com.madgag.git.bfg.cli.Main"
+    '';
+
+    meta = with stdenv.lib; {
+      homepage = "https://rtyley.github.io/bfg-repo-cleaner/";
+      # Descriptions taken with minor modification from the homepage of bfg-repo-cleaner
+      description = "Removes large or troublesome blobs in a git repository like git-filter-branch does, but faster";
+      longDescription = ''
+        The BFG is a simpler, faster alternative to git-filter-branch for
+        cleansing bad data out of your Git repository history, in particular removing
+        crazy big files and removing passwords, credentials, and other private data.
+
+        The git-filter-branch command is enormously powerful and can do things
+        that the BFG can't - but the BFG is much better for the tasks above, because
+        it's faster (10-720x), simpler (dedicated to just removing things), and
+        beautiful (can use Scala instead of bash to script customizations).
+      '';
+      license = licenses.gpl3;
+      maintainers = [ maintainers.changlinli ];
+      platforms = platforms.unix;
+      downloadPage = "https://mvnrepository.com/artifact/com.madgag/bfg/${version}";
+    };
+
+  }
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/Gemfile b/nixpkgs/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/Gemfile
new file mode 100644
index 000000000000..8ed325154711
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/Gemfile
@@ -0,0 +1,2 @@
+source 'https://rubygems.org'
+gem 'atlassian-stash'
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/Gemfile.lock b/nixpkgs/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/Gemfile.lock
new file mode 100644
index 000000000000..27a6e2c8dd03
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/Gemfile.lock
@@ -0,0 +1,27 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    addressable (2.5.0)
+      public_suffix (~> 2.0, >= 2.0.2)
+    atlassian-stash (0.7.0)
+      commander (~> 4.1.2)
+      git (>= 1.2.5)
+      json (>= 1.7.5)
+      launchy (~> 2.4.2)
+    commander (4.1.6)
+      highline (~> 1.6.11)
+    git (1.3.0)
+    highline (1.6.21)
+    json (2.0.2)
+    launchy (2.4.3)
+      addressable (~> 2.3)
+    public_suffix (2.0.5)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  atlassian-stash
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/default.nix
new file mode 100644
index 000000000000..68edb8503bfc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/default.nix
@@ -0,0 +1,21 @@
+{ lib, bundlerEnv, ruby, bundlerUpdateScript }:
+
+bundlerEnv rec {
+  name = "bitbucket-server-cli-${version}";
+
+  version = (import ./gemset.nix).atlassian-stash.version;
+  inherit ruby;
+  gemdir = ./.;
+
+  pname = "atlassian-stash";
+
+  passthru.updateScript = bundlerUpdateScript "gitAndTools.bitbucket-server-cli";
+
+  meta = with lib; {
+    description = "A command line interface to interact with BitBucket Server (formerly Atlassian Stash)";
+    homepage    = "https://bitbucket.org/atlassian/bitbucket-server-cli";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ jgertm nicknovitski ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/gemset.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/gemset.nix
new file mode 100644
index 000000000000..a7c1406665e7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/gemset.nix
@@ -0,0 +1,66 @@
+{
+  addressable = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1j5r0anj8m4qlf2psnldip4b8ha2bsscv11lpdgnfh4nnchzjnxw";
+      type = "gem";
+    };
+    version = "2.5.0";
+  };
+  atlassian-stash = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1rsf9h5w5wiglwv0fqwp45fq06fxbg68cqkc3bpqvps1i1qm0p6i";
+      type = "gem";
+    };
+    version = "0.7.0";
+  };
+  commander = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0x9i8hf083wjlgj09nl1p9j8sr5g7amq0fdmxjqs4cxdbg3wpmsb";
+      type = "gem";
+    };
+    version = "4.1.6";
+  };
+  git = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3";
+      type = "gem";
+    };
+    version = "1.3.0";
+  };
+  highline = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06bml1fjsnrhd956wqq5k3w8cyd09rv1vixdpa3zzkl6xs72jdn1";
+      type = "gem";
+    };
+    version = "1.6.21";
+  };
+  json = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lhinj9vj7mw59jqid0bjn2hlfcnq02bnvsx9iv81nl2han603s0";
+      type = "gem";
+    };
+    version = "2.0.2";
+  };
+  launchy = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "190lfbiy1vwxhbgn4nl4dcbzxvm049jwc158r2x7kq3g5khjrxa2";
+      type = "gem";
+    };
+    version = "2.4.3";
+  };
+  public_suffix = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "040jf98jpp6w140ghkhw2hvc1qx41zvywx5gj7r2ylr1148qnj7q";
+      type = "gem";
+    };
+    version = "2.0.5";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/bump2version/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/bump2version/default.nix
new file mode 100644
index 000000000000..69b44625f95a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/bump2version/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonApplication, fetchFromGitHub, isPy27, pytest, testfixtures, lib }:
+
+buildPythonApplication rec {
+  pname = "bump2version";
+  version = "1.0.0";
+  disabled = isPy27;
+
+  src = fetchFromGitHub {
+    owner = "c4urself";
+    repo = "${pname}";
+    rev = "refs/tags/v${version}";
+    sha256 = "10p7rg569rk3qvzs5kjj17894bqlsg3ihhbln6ciwwfhkfq1kpja";
+  };
+
+  checkInputs = [ pytest testfixtures ];
+  # X's in pytest are git tests which won't run in sandbox
+  checkPhase = ''
+    pytest tests/ -k 'not usage_string_fork'
+  ''; 
+
+  meta = with stdenv.lib; {
+    description = "Version-bump your software with a single command";
+    longDescription = ''
+      A small command line tool to simplify releasing software by updating 
+      all version strings in your source code by the correct increment.
+    '';
+    homepage = "https://github.com/c4urself/bump2version";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jefflabonte ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/cgit/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/cgit/default.nix
new file mode 100644
index 000000000000..8debc642b457
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/cgit/default.nix
@@ -0,0 +1,80 @@
+{ stdenv, fetchurl, openssl, zlib, asciidoc, libxml2, libxslt
+, docbook_xsl, pkgconfig, luajit
+, coreutils, gnused, groff, docutils
+, gzip, bzip2, lzip, xz, zstd
+, python, wrapPython, pygments, markdown
+}:
+
+stdenv.mkDerivation rec {
+  pname = "cgit";
+  version = "1.2.3";
+
+  src = fetchurl {
+    url = "https://git.zx2c4.com/cgit/snapshot/${pname}-${version}.tar.xz";
+    sha256 = "193d990ym10qlslk0p8mjwp2j6rhqa7fq0y1iff65lvbyv914pss";
+  };
+
+  # cgit is tightly coupled with git and needs a git source tree to build.
+  # IMPORTANT: Remember to check which git version cgit needs on every version
+  # bump (look for "GIT_VER" in the top-level Makefile).
+  gitSrc = fetchurl {
+    url    = "mirror://kernel/software/scm/git/git-2.25.1.tar.xz";
+    sha256 = "09lzwa183nblr6l8ib35g2xrjf9wm9yhk3szfvyzkwivdv69c9r2";
+  };
+
+  nativeBuildInputs = [ pkgconfig ] ++ [ python wrapPython ];
+  buildInputs = [
+    openssl zlib asciidoc libxml2 libxslt docbook_xsl luajit
+  ];
+  pythonPath = [ pygments markdown ];
+
+  postPatch = ''
+    sed -e 's|"gzip"|"${gzip}/bin/gzip"|' \
+        -e 's|"bzip2"|"${bzip2.bin}/bin/bzip2"|' \
+        -e 's|"lzip"|"${lzip}/bin/lzip"|' \
+        -e 's|"xz"|"${xz.bin}/bin/xz"|' \
+        -e 's|"zstd"|"${zstd}/bin/zstd"|' \
+        -i ui-snapshot.c
+
+    substituteInPlace filters/html-converters/man2html \
+      --replace 'groff' '${groff}/bin/groff'
+
+    substituteInPlace filters/html-converters/rst2html \
+      --replace 'rst2html.py' '${docutils}/bin/rst2html.py'
+  '';
+
+  # Give cgit a git source tree and pass configuration parameters (as make
+  # variables).
+  preBuild = ''
+    mkdir -p git
+    tar --strip-components=1 -xf "$gitSrc" -C git
+
+    makeFlagsArray+=(prefix="$out" CGIT_SCRIPT_PATH="$out/cgit/")
+  '';
+
+  # Install manpage.
+  postInstall = ''
+    # xmllint fails:
+    #make install-man
+
+    # bypassing xmllint works:
+    a2x --no-xmllint -f manpage cgitrc.5.txt
+    mkdir -p "$out/share/man/man5"
+    cp cgitrc.5 "$out/share/man/man5"
+
+    wrapPythonProgramsIn "$out/lib/cgit/filters" "$out $pythonPath"
+
+    for script in $out/lib/cgit/filters/*.sh $out/lib/cgit/filters/html-converters/txt2html; do
+      wrapProgram $script --prefix PATH : '${stdenv.lib.makeBinPath [ coreutils gnused ]}'
+    done
+  '';
+
+  meta = {
+    homepage = "https://git.zx2c4.com/cgit/about/";
+    repositories.git = "git://git.zx2c4.com/cgit";
+    description = "Web frontend for git repositories";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = with stdenv.lib.maintainers; [ bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/darcs-to-git/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/darcs-to-git/default.nix
new file mode 100644
index 000000000000..22d289d549af
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/darcs-to-git/default.nix
@@ -0,0 +1,80 @@
+{ stdenv, fetchgit, ruby, gnugrep, diffutils, git, darcs }:
+
+stdenv.mkDerivation {
+  pname = "darcs-to-git";
+  version = "2015-06-04";
+
+  src = fetchgit {
+    url = "git://github.com/purcell/darcs-to-git.git";
+    rev = "e5fee32495908fe0f7d700644c7b37347b7a0a5b";
+    sha256 = "0lxcx0x0m1cv2j4x9ykpjf6r2zg6lh5rya016x93vkmlzxm3f0ji";
+  };
+
+  patchPhase = let
+    matchExecution = ''(\<(output_of|system|run)\([^"%]*("|%w\()|^[^"`]*`)'';
+  in ''
+    sed -r -i \
+      -e '1s|^#!.*|#!${ruby}/bin/ruby|' \
+      -e 's!${matchExecution}git\>!\1${git}/bin/git!' \
+      -e 's!${matchExecution}darcs\>!\1${darcs}/bin/darcs!' \
+      -e 's!${matchExecution}diff\>!\1${diffutils}/bin/diff!' \
+      -e 's!\<egrep\>!${gnugrep}/bin/egrep!g' \
+      -e 's!%w\(darcs init\)!%w(${darcs}/bin/darcs init)!' \
+      darcs-to-git
+  '';
+
+  installPhase = ''
+    install -vD darcs-to-git "$out/bin/darcs-to-git"
+  '';
+
+  doCheck = true;
+
+  checkPhase = ''
+    orig_dir="$(pwd)"
+    darcs_repos="$(pwd)/darcs_test_repos"
+    git_repos="$(pwd)/git_test_repos"
+    test_home="$(pwd)/test_home"
+    mkdir "$darcs_repos" "$git_repos" "$test_home"
+    cd "$darcs_repos"
+    ${darcs}/bin/darcs init
+    echo "this is a test file" > new_file1
+    ${darcs}/bin/darcs add new_file1
+    HOME="$test_home" ${darcs}/bin/darcs record -a -m c1 -A none
+    echo "testfile1" > new_file1
+    echo "testfile2" > new_file2
+    ${darcs}/bin/darcs add new_file2
+    HOME="$test_home" ${darcs}/bin/darcs record -a -m c2 -A none
+    ${darcs}/bin/darcs mv new_file2 only_one_file
+    rm -f new_file1
+    HOME="$test_home" ${darcs}/bin/darcs record -a -m c3 -A none
+    cd "$git_repos"
+    HOME="$test_home" PATH= "$orig_dir/darcs-to-git" "$darcs_repos"
+    assertFileContents() {
+      echo -n "File $1 contains '$2'..." >&2
+      if [ "x$(cat "$1")" = "x$2" ]; then
+        echo " passed." >&2
+        return 0
+      else
+        echo " failed: '$(cat "$1")' != '$2'" >&2
+        return 1
+      fi
+    }
+    echo "Checking if converted repository matches original repository:" >&2
+    assertFileContents only_one_file testfile2
+    ${git}/bin/git reset --hard HEAD^
+    assertFileContents new_file1 testfile1
+    assertFileContents new_file2 testfile2
+    ${git}/bin/git reset --hard HEAD^
+    assertFileContents new_file1 "this is a test file"
+    echo "All checks passed." >&2
+    cd "$orig_dir"
+    rm -rf "$darcs_repos" "$git_repos" "$test_home"
+  '';
+
+  meta = {
+    description = "Converts a Darcs repository into a Git repository";
+    homepage = "http://www.sanityinc.com/articles/converting-darcs-repositories-to-git";
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/default.nix
new file mode 100644
index 000000000000..f9ebbabd11b2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/default.nix
@@ -0,0 +1,242 @@
+/* All git-relates tools live here, in a separate attribute set so that users
+ * can get a fast overview over what's available.
+ */
+args @ {config, lib, pkgs}: with args; with pkgs;
+let
+  gitBase = callPackage ./git {
+    svnSupport = false;         # for git-svn support
+    guiSupport = false;         # requires tcl/tk
+    sendEmailSupport = false;   # requires plenty of perl libraries
+    perlLibs = [perlPackages.LWP perlPackages.URI perlPackages.TermReadKey];
+    smtpPerlLibs = [
+      perlPackages.libnet perlPackages.NetSMTPSSL
+      perlPackages.IOSocketSSL perlPackages.NetSSLeay
+      perlPackages.AuthenSASL perlPackages.DigestHMAC
+    ];
+  };
+
+  self = rec {
+  # Try to keep this generally alphabetized
+
+  bfg-repo-cleaner = callPackage ./bfg-repo-cleaner { };
+
+  bitbucket-server-cli = callPackage ./bitbucket-server-cli { };
+
+  bump2version = pkgs.python37Packages.callPackage ./bump2version { };
+
+  darcs-to-git = callPackage ./darcs-to-git { };
+
+  delta = callPackage ./delta { };
+
+  diff-so-fancy = callPackage ./diff-so-fancy { };
+
+  gh = callPackage ./gh { };
+
+  ghq = callPackage ./ghq { };
+
+  git = appendToName "minimal" gitBase;
+
+  git-absorb = callPackage ./git-absorb {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  git-annex = pkgs.haskellPackages.git-annex;
+
+  git-annex-metadata-gui = libsForQt5.callPackage ./git-annex-metadata-gui {
+    inherit (python3Packages) buildPythonApplication pyqt5 git-annex-adapter;
+  };
+
+  git-annex-remote-b2 = callPackage ./git-annex-remote-b2 { };
+
+  git-annex-remote-dbx = callPackage ./git-annex-remote-dbx {
+    inherit (python3Packages)
+    buildPythonApplication
+    fetchPypi
+    dropbox
+    annexremote
+    humanfriendly;
+  };
+
+  git-annex-remote-rclone = callPackage ./git-annex-remote-rclone { };
+
+  git-annex-utils = callPackage ./git-annex-utils { };
+
+  git-appraise = callPackage ./git-appraise {};
+
+  git-bug = callPackage ./git-bug { };
+
+  # support for bugzilla
+  git-bz = callPackage ./git-bz { };
+
+  git-cinnabar = callPackage ./git-cinnabar { };
+
+  git-codeowners = callPackage ./git-codeowners { };
+
+  git-codereview = callPackage ./git-codereview { };
+
+  git-cola = callPackage ./git-cola { };
+
+  git-crypt = callPackage ./git-crypt { };
+
+  git-dit = callPackage ./git-dit {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
+  };
+
+  git-doc = lib.addMetaAttrs {
+    description = "Additional documentation for Git";
+    longDescription = ''
+      This package contains additional documentation (HTML and text files) that
+      is referenced in the man pages of Git.
+    '';
+  } gitFull.doc;
+
+  git-extras = callPackage ./git-extras { };
+
+  git-fame = callPackage ./git-fame {};
+
+  git-fast-export = callPackage ./fast-export { };
+
+  git-filter-repo = callPackage ./git-filter-repo {
+    pythonPackages = python3Packages;
+  };
+
+  git-gone = callPackage ./git-gone {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  git-hub = callPackage ./git-hub { };
+
+  git-ignore = callPackage ./git-ignore { };
+
+  git-imerge = callPackage ./git-imerge { };
+
+  git-interactive-rebase-tool = callPackage ./git-interactive-rebase-tool {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  git-machete = python3Packages.callPackage ./git-machete { };
+
+  git-my = callPackage ./git-my { };
+
+  git-octopus = callPackage ./git-octopus { };
+
+  git-open = callPackage ./git-open { };
+
+  git-radar = callPackage ./git-radar { };
+
+  git-recent = callPackage ./git-recent {
+    utillinux = if stdenv.isLinux then utillinuxMinimal else utillinux;
+  };
+
+  git-remote-gcrypt = callPackage ./git-remote-gcrypt { };
+
+  git-remote-hg = callPackage ./git-remote-hg { };
+
+  git-reparent = callPackage ./git-reparent { };
+
+  git-secret = callPackage ./git-secret { };
+
+  git-secrets = callPackage ./git-secrets { };
+
+  git-standup = callPackage ./git-standup { };
+
+  git-stree = callPackage ./git-stree { };
+
+  git-subrepo = callPackage ./git-subrepo { };
+
+  git-subset = callPackage ./git-subset {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  git-subtrac = callPackage ./git-subtrac { };
+
+  git-sync = callPackage ./git-sync { };
+
+  git-test = callPackage ./git-test { };
+
+  git-trim = callPackage ./git-trim {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  git-workspace = callPackage ./git-workspace {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  git2cl = callPackage ./git2cl { };
+
+  # The full-featured Git.
+  gitFull = gitBase.override {
+    svnSupport = true;
+    guiSupport = true;
+    sendEmailSupport = true;
+    withLibsecret = !stdenv.isDarwin;
+  };
+
+  # Git with SVN support, but without GUI.
+  gitSVN = lowPrio (appendToName "with-svn" (gitBase.override {
+    svnSupport = true;
+  }));
+
+  gita = python3Packages.callPackage ./gita {};
+
+  gitbatch = callPackage ./gitbatch { };
+
+  gitflow = callPackage ./gitflow { };
+
+  gitin = callPackage ./gitin { };
+
+  gitstatus = callPackage ./gitstatus { };
+
+  gitui = callPackage ./gitui {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  grv = callPackage ./grv { };
+
+  hub = callPackage ./hub { };
+
+  lab = callPackage ./lab { };
+
+  lefthook = callPackage ./lefthook { };
+
+  legit = callPackage ./legit { };
+
+  pass-git-helper = python3Packages.callPackage ./pass-git-helper { };
+
+  pre-commit = pkgs.python3Packages.toPythonApplication pkgs.python3Packages.pre-commit;
+
+  qgit = qt5.callPackage ./qgit { };
+
+  scmpuff = callPackage ./scmpuff { };
+
+  stgit = callPackage ./stgit { };
+
+  subgit = callPackage ./subgit { };
+
+  svn-all-fast-export = libsForQt5.callPackage ./svn-all-fast-export { };
+
+  svn2git = callPackage ./svn2git {
+    git = gitSVN;
+  };
+
+  thicket = callPackage ./thicket { };
+
+  tig = callPackage ./tig { };
+
+  top-git = callPackage ./topgit { };
+
+  transcrypt = callPackage ./transcrypt { };
+
+  ydiff = pkgs.python3.pkgs.toPythonApplication pkgs.python3.pkgs.ydiff;
+
+} // lib.optionalAttrs (config.allowAliases or true) (with self; {
+  # aliases
+  darcsToGit = darcs-to-git;
+  gitAnnex = git-annex;
+  gitFastExport = git-fast-export;
+  gitRemoteGcrypt = git-remote-gcrypt;
+  svn_all_fast_export = svn-all-fast-export;
+  topGit = top-git;
+});
+in
+  self
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/delta/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/delta/default.nix
new file mode 100644
index 000000000000..60950dc0465c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/delta/default.nix
@@ -0,0 +1,32 @@
+{ lib, fetchFromGitHub, rustPlatform, llvmPackages, installShellFiles }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "delta";
+  version = "0.1.1";
+
+  src = fetchFromGitHub {
+    owner = "dandavison";
+    repo = pname;
+    rev = version;
+    sha256 = "1b5ap468d0gvgwkx6wqxvayzda2xw95lymd0kl38nq1fc0ica6hk";
+  };
+
+  LLVM_CONFIG_PATH = "${llvmPackages.llvm}/bin/llvm-config";
+  LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
+
+  cargoSha256 = "07mjl751r9d88fnmnan0ip0m3vxqf51vq2y7k3g3yywcgasj9jgr";
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  postInstall = ''
+    installShellCompletion --bash --name delta.bash completion/bash/completion.sh
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/dandavison/delta";
+    description = "A syntax-highlighting pager for git";
+    changelog = "https://github.com/dandavison/delta/releases/tag/${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ marsam ma27 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/diff-so-fancy/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/diff-so-fancy/default.nix
new file mode 100644
index 000000000000..c073edaee7d8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/diff-so-fancy/default.nix
@@ -0,0 +1,48 @@
+{stdenv, git, perl, ncurses, coreutils, fetchFromGitHub, makeWrapper, ...}:
+
+stdenv.mkDerivation rec {
+  pname = "diff-so-fancy";
+  version = "1.3.0";
+
+  src = fetchFromGitHub {
+    owner = "so-fancy";
+    repo = "diff-so-fancy";
+    rev = "v${version}";
+    sha256 = "0aavxahzha2mms4vdwysk79pa6wzswpfwgsq2hwaxnaf66maahfl";
+  };
+
+  # Perl is needed here for patchShebangs
+  nativeBuildInputs = [ perl makeWrapper ];
+
+  buildPhase = null;
+
+  installPhase = ''
+    mkdir -p $out/bin $out/lib/diff-so-fancy
+
+    # diff-so-fancy executable searches for it's library relative to
+    # itself, so we are copying executable to lib, and only symlink it
+    # from bin/
+    cp diff-so-fancy $out/lib/diff-so-fancy
+    cp -r lib $out/lib/diff-so-fancy
+    ln -s $out/lib/diff-so-fancy/diff-so-fancy $out/bin
+
+    # ncurses is needed for `tput`
+    wrapProgram $out/lib/diff-so-fancy/diff-so-fancy \
+      --prefix PATH : "${git}/share/git/contrib/diff-highlight" \
+      --prefix PATH : "${git}/bin" \
+      --prefix PATH : "${coreutils}/bin" \
+      --prefix PATH : "${ncurses.out}/bin"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/so-fancy/diff-so-fancy";
+    description = "Good-looking diffs filter for git";
+    license = licenses.mit;
+    platforms = platforms.all;
+    longDescription = ''
+      diff-so-fancy builds on the good-lookin' output of git contrib's
+      diff-highlight to upgrade your diffs' appearances.
+    '';
+    maintainers = with maintainers; [ fpletz globin ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/fast-export/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/fast-export/default.nix
new file mode 100644
index 000000000000..22009f10d44f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/fast-export/default.nix
@@ -0,0 +1,42 @@
+{stdenv, fetchgit, mercurial, makeWrapper}:
+
+stdenv.mkDerivation rec {
+  pname = "fast-export";
+  version = "190107";
+
+  src = fetchgit {
+    url = "git://repo.or.cz/fast-export.git";
+    rev = "v${version}";
+    sha256 = "14azfps9jd5anivcvfwflgsvqdyy6gm9jy284kzx2ng9f7871d14";
+  };
+
+  buildInputs = [mercurial.python mercurial makeWrapper];
+
+  installPhase = ''
+    binPath=$out/bin
+    libexecPath=$out/libexec/${pname}
+    sitepackagesPath=$out/${mercurial.python.sitePackages}
+    mkdir -p $binPath $libexecPath $sitepackagesPath
+
+    # Patch shell scripts so they can execute the Python scripts
+    sed -i "s|ROOT=.*|ROOT=$libexecPath|" *.sh
+
+    mv hg-fast-export.sh hg-reset.sh $binPath
+    mv hg-fast-export.py hg-reset.py $libexecPath
+    mv hg2git.py pluginloader plugins $sitepackagesPath
+
+    for script in $out/bin/*.sh; do
+      wrapProgram $script \
+        --prefix PATH : "${mercurial.python}/bin":$libexec \
+        --prefix PYTHONPATH : "${mercurial}/${mercurial.python.sitePackages}":$sitepackagesPath
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Import mercurial into git";
+    homepage = "https://repo.or.cz/w/fast-export.git";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.koral ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/gh/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/gh/default.nix
new file mode 100644
index 000000000000..36df07de465d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/gh/default.nix
@@ -0,0 +1,38 @@
+{ lib, fetchFromGitHub, buildGoModule, installShellFiles }:
+
+buildGoModule rec {
+  pname = "gh";
+  version = "0.10.0";
+
+  src = fetchFromGitHub {
+    owner = "cli";
+    repo = "cli";
+    rev = "v${version}";
+    sha256 = "0m4qgvhd4fzl83acfbpwff0sqshyfhqiy5q4i7ly8h6rdsjysdck";
+  };
+
+  vendorSha256 = "0zkgdb69zm662p50sk1663lcbkw0vp8ip9blqfp6539mp9b87dn7";
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  buildPhase = ''
+    make GH_VERSION=${version} bin/gh manpages
+  '';
+
+  installPhase = ''
+    install -Dm755 bin/gh -t $out/bin
+    installManPage share/man/*/*.[1-9]
+
+    for shell in bash fish zsh; do
+      $out/bin/gh completion -s $shell > gh.$shell
+      installShellCompletion gh.$shell
+    done
+  '';
+
+  meta = with lib; {
+    description = "GitHub CLI tool";
+    homepage = "https://cli.github.com/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ zowoq ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/ghq/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/ghq/default.nix
new file mode 100644
index 000000000000..330f81078ea4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/ghq/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "ghq";
+  version = "1.1.1";
+
+  src = fetchFromGitHub {
+    owner = "x-motemen";
+    repo = "ghq";
+    rev = "v${version}";
+    sha256 = "1gfpvaf10kqgxx1clzsn38n9r4p171zf0z1pf0dybihh6g6hgylj";
+  };
+
+  vendorSha256 = "0k2hhx3l3cj3lv2y4w8286sbl7d11cssb99jy7hzskbxbhmalvcj";
+
+  buildFlagsArray = ''
+    -ldflags=
+      -X=main.Version=${version}
+  '';
+
+  postInstall = ''
+    install -m 444 -D ${src}/misc/zsh/_ghq $out/share/zsh/site-functions/_ghq
+    install -m 444 -D ${src}/misc/bash/_ghq $out/share/bash-completion/completions/_ghq
+  '';
+
+  meta = {
+    description = "Remote repository management made easy";
+    homepage = "https://github.com/x-motemen/ghq";
+    maintainers = with stdenv.lib.maintainers; [ sigma ];
+    license = stdenv.lib.licenses.mit;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-absorb/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-absorb/default.nix
new file mode 100644
index 000000000000..00f279942d9d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-absorb/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, rustPlatform, installShellFiles, libiconv, Security }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "git-absorb";
+  version = "0.6.3";
+
+  src = fetchFromGitHub {
+    owner  = "tummychow";
+    repo   = pname;
+    rev    = "refs/tags/${version}";
+    sha256 = "0kvb9nzjlxhnrd2ir3zjd99v7zcq4bch1i9nqsn3505j5m0wv0hh";
+  };
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  buildInputs = stdenv.lib.optionals stdenv.isDarwin [ libiconv Security ];
+
+  cargoSha256 = "0bppb1ng77ynhlxnhgz9qx4x5j0lyzcxw3zshfpgjc03fxcwl6cz";
+
+  postInstall = ''
+    installManPage Documentation/git-absorb.1
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/tummychow/git-absorb";
+    description = "git commit --fixup, but automatic";
+    license = [ licenses.bsd3 ];
+    maintainers = [ maintainers.marsam ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-metadata-gui/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-metadata-gui/default.nix
new file mode 100644
index 000000000000..ad07a3dba3c8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-metadata-gui/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonApplication, fetchFromGitHub, pyqt5, git-annex-adapter }:
+
+buildPythonApplication rec {
+  pname = "git-annex-metadata-gui";
+  version = "0.2.0";
+
+  src = fetchFromGitHub {
+    owner = "alpernebbi";
+    repo = "git-annex-metadata-gui";
+    rev = "v${version}";
+    sha256 = "03kch67k0q9lcs817906g864wwabkn208aiqvbiyqp1qbg99skam";
+  };
+
+  prePatch = ''
+    substituteInPlace setup.py --replace "'PyQt5', " ""
+  '';
+
+  propagatedBuildInputs = [ pyqt5 git-annex-adapter ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/alpernebbi/git-annex-metadata-gui";
+    description = "Graphical interface for git-annex metadata commands";
+    maintainers = with maintainers; [ dotlambda ];
+    license = licenses.gpl3Plus;
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-remote-b2/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-remote-b2/default.nix
new file mode 100644
index 000000000000..55a9dd18f720
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-remote-b2/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, buildGoPackage, fetchgit }:
+
+buildGoPackage rec {
+  pname = "git-annex-remote-b2";
+  version = "20151212-${stdenv.lib.strings.substring 0 7 rev}";
+  rev = "4db46b9fc9ef7b3f4851c2a6b061cb8f90f553ba";
+
+  goPackagePath = "github.com/encryptio/git-annex-remote-b2";
+
+  src = fetchgit {
+    inherit rev;
+    url = "https://github.com/encryptio/git-annex-remote-b2";
+    sha256 = "1139rzdvlj3hanqsccfinprvrzf4qjc5n4f0r21jp9j24yhjs6j2";
+  };
+
+  goDeps = ./deps.nix;
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-remote-b2/deps.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-remote-b2/deps.nix
new file mode 100644
index 000000000000..479b3e7d6372
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-remote-b2/deps.nix
@@ -0,0 +1,20 @@
+[
+  {
+    goPackagePath = "github.com/pquerna/ffjson";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pquerna/ffjson";
+      rev = "674bc015b5b3f50f9bb2561179778586b9af68c5";
+      sha256 = "0l53q7b1g25hfjm1iyynfs413rpav4c51yvdr244ivw1x3hksa7a";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/kothar/go-backblaze.v0";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/kothar/go-backblaze.v0";
+      rev = "373819725fc560fa962c6cd883b533d2ebec4844";
+      sha256 = "1kmlwfnnfd4h46bb9pz2gw1hxqm1pzkwvidfmnc0zkrilaywk6fx";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-remote-dbx/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-remote-dbx/default.nix
new file mode 100644
index 000000000000..addfd1f5041b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-remote-dbx/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildPythonApplication
+, fetchPypi
+, dropbox
+, annexremote
+, humanfriendly
+}:
+
+buildPythonApplication rec {
+  pname = "git-annex-remote-dbx";
+  version = "1.0.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "5b6f8025ed1e9877f06882ddbd81f701a8e094647ab97595e2afc09016835a7c";
+  };
+
+  propagatedBuildInputs = [ dropbox annexremote humanfriendly ];
+
+  meta = with lib; {
+    description = "A git-annex special remote for Dropbox";
+    homepage = "https://pypi.org/project/git-annex-remote-dbx/";
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-remote-rclone/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-remote-rclone/default.nix
new file mode 100644
index 000000000000..260e8024a8cc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-remote-rclone/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, rclone, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "git-annex-remote-rclone";
+  version = "0.6";
+  rev = "v${version}";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "DanielDent";
+    repo = "git-annex-remote-rclone";
+    sha256 = "0j0hlxji8d974fq7zd4xc02n0jpi31ylhxc7z4zp8iiwad5mkpxp";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp git-annex-remote-rclone $out/bin
+    wrapProgram "$out/bin/git-annex-remote-rclone" \
+      --prefix PATH ":" "${stdenv.lib.makeBinPath [ rclone ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/DanielDent/git-annex-remote-rclone";
+    description = "Use rclone supported cloud storage providers with git-annex";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.montag451 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-utils/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-utils/default.nix
new file mode 100644
index 000000000000..bcfc33e55e4c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-annex-utils/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchgit, autoconf, automake, libtool, gmp }:
+
+stdenv.mkDerivation rec {
+  pname = "git-annex-utils";
+  version = "0.04-3-g531bb33";
+  src = fetchgit {
+    url = "http://git.mysteryvortex.com/repositories/git-annex-utils.git";
+    rev = "531bb33";
+    sha256 = "1sv7s2ykc840cjwbfn7ayy743643x9i1lvk4cd55w9l052xvzj65";
+  };
+  buildInputs = [ autoconf automake libtool gmp ];
+  preConfigure = "./autogen.sh";
+
+  meta = {
+    description = "gadu, a du like utility for annexed files";
+    longDescription = ''
+      This is a set of utilities that are handy to use with git-annex repositories.
+      Currently there is only one utility gadu, a du like utility for annexed files.
+    '';
+    homepage = "http://git-annex.mysteryvortex.com/git-annex-utils.html";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = with stdenv.lib.maintainers; [ woffs ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-appraise/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-appraise/default.nix
new file mode 100644
index 000000000000..7796f08c8a46
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-appraise/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "git-appraise-unstable";
+  version = "2018-02-26";
+  rev = "2414523905939525559e4b2498c5597f86193b61";
+
+  goPackagePath = "github.com/google/git-appraise";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "google";
+    repo = "git-appraise";
+    sha256 = "04xkp1jpas1dfms6i9j09bgkydih0q10nhwn75w9ds8hi2qaa3sa";
+  };
+
+  meta = {
+    description = "Distributed code review system for Git repos";
+    homepage = "https://github.com/google/git-appraise";
+    license = stdenv.lib.licenses.asl20;
+    platforms = stdenv.lib.platforms.all;
+    maintainers = [ stdenv.lib.maintainers.vdemeester ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-big-picture/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-big-picture/default.nix
new file mode 100644
index 000000000000..cd35c98a9696
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-big-picture/default.nix
@@ -0,0 +1,30 @@
+{ fetchFromGitHub, python2Packages, stdenv, git, graphviz }:
+
+python2Packages.buildPythonApplication rec {
+  pname = "git-big-picture";
+  version = "0.10.1";
+
+  src = fetchFromGitHub {
+    owner = "esc";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0b0zdq7d7k7f6p3wwc799347fraphbr20rxd1ysnc4xi1cj4wpmi";
+  };
+
+  buildInputs = [ git graphviz ];
+
+  checkInputs = [ git ];
+
+  postFixup = ''
+    wrapProgram $out/bin/git-big-picture \
+      --prefix PATH ":" ${ stdenv.lib.makeBinPath buildInputs  }
+    '';
+
+  meta = {
+    description = "Tool for visualization of Git repositories";
+    homepage = "https://github.com/esc/git-big-picture";
+    license = stdenv.lib.licenses.gpl3;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.nthorne ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-bug/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-bug/default.nix
new file mode 100644
index 000000000000..0903af7499a7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-bug/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "git-bug";
+  version = "0.7.1"; # the `rev` below pins the version of the source to get
+  rev = "2d64b85db71a17ff3277bbbf7ac9d8e81f8e416c";
+  goPackagePath = "github.com/MichaelMure/git-bug";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "MichaelMure";
+    repo = "git-bug";
+    sha256 = "01ab3mlwh5g1vr3x85fppflg18gb8ip9mjfsp2b5rfigd9lxyyns";
+  };
+
+  vendorSha256 = "0c8b47lj4wl3s21lm0vx4z7hznylm8c4fb8b8gxm278kn3zys607";
+
+  buildFlagsArray = ''
+    -ldflags=
+      -X ${goPackagePath}/commands.GitCommit=${rev}
+      -X ${goPackagePath}/commands.GitLastTag=${version}
+      -X ${goPackagePath}/commands.GitExactTag=${version}
+  '';
+
+  postInstall = ''
+    install -D -m 0644 misc/bash_completion/git-bug "$out/etc/bash_completion.d/git-bug"
+    install -D -m 0644 misc/zsh_completion/git-bug "$out/share/zsh/site-functions/git-bug"
+    install -D -m 0644 -t "$out/share/man/man1" doc/man/*
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Distributed bug tracker embedded in Git";
+    homepage = "https://github.com/MichaelMure/git-bug";
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ royneary ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-bz/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-bz/default.nix
new file mode 100644
index 000000000000..7f199894924e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-bz/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchgit
+, asciidoc, docbook_xml_dtd_45, docbook_xsl, libxslt, makeWrapper, xmlto
+, pythonPackages }:
+
+stdenv.mkDerivation {
+  pname = "git-bz";
+  version = "3.2015-09-08";
+
+  src = fetchgit {
+    sha256 = "146z57m8nblgsxm4z6qnsvcy81p11d0w88v93ybacc6w21plh8hc";
+    rev = "e17bbae7a2ce454d9f69c32fc40066995d44913d";
+    url = "git://git.fishsoup.net/git-bz";
+  };
+
+  nativeBuildInputs = [
+    asciidoc docbook_xml_dtd_45 docbook_xsl libxslt makeWrapper xmlto
+  ];
+  buildInputs = []
+    ++ (with pythonPackages; [ python pysqlite ]);
+
+  postPatch = ''
+    patchShebangs configure
+
+    # Don't create a .html copy of the man page that isn't installed anyway:
+    substituteInPlace Makefile --replace "git-bz.html" ""
+  '';
+
+  postInstall = ''
+    wrapProgram $out/bin/git-bz \
+      --prefix PYTHONPATH : "$(toPythonPath "${pythonPackages.pycrypto}")" \
+      --prefix PYTHONPATH : "$(toPythonPath "${pythonPackages.pysqlite}")"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Bugzilla integration for git";
+    longDescription = ''
+      git-bz is a tool for integrating the Git command line with the
+      Bugzilla bug-tracking system. Operations such as attaching patches to
+      bugs, applying patches in bugs to your current tree, and closing bugs
+      once you've pushed the fixes publicly can be done completely from
+      the command line without having to go to your web browser.
+
+      Authentication for git-bz is done by reading the cookies for the
+      Bugzilla host from your web browser. In order to do this, git-bz needs
+      to know how to access the cookies for your web browser; git-bz
+      currently is able to do this for Firefox, Epiphany, Galeon and
+      Chromium on Linux.
+    '';
+    license = licenses.gpl2Plus;
+    homepage = "http://git.fishsoup.net/cgit/git-bz/";
+
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-cinnabar/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-cinnabar/default.nix
new file mode 100644
index 000000000000..679e8dbdf507
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-cinnabar/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, lib, fetchFromGitHub, autoconf, makeWrapper
+, curl, libiconv, mercurial, zlib
+}:
+
+let
+  python3 = mercurial.python;
+in
+
+stdenv.mkDerivation rec {
+  pname = "git-cinnabar";
+  version = "0.5.4";
+
+  src = fetchFromGitHub {
+    owner = "glandium";
+    repo = "git-cinnabar";
+    rev = version;
+    sha256 = "1cjn2cc6mj4m736wxab9s6qx83p5n5ha8cr3x84s9ra6rxs8d7pi";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ autoconf makeWrapper ];
+  buildInputs = [ curl zlib ] ++ lib.optional stdenv.isDarwin libiconv;
+
+  # Ignore submodule status failing due to no git in environment.
+  makeFlags = [ "SUBMODULE_STATUS=yes" ];
+
+  enableParallelBuilding = true;
+
+  installPhase = ''
+    mkdir -p $out/bin $out/libexec
+    install git-cinnabar-helper $out/bin
+    install git-cinnabar git-remote-hg $out/libexec
+    cp -r cinnabar mercurial $out/libexec
+
+    for pythonBin in git-cinnabar git-remote-hg; do
+        makeWrapper $out/libexec/$pythonBin $out/bin/$pythonBin \
+            --prefix PATH : ${lib.getBin python3}/bin \
+            --prefix GIT_CINNABAR_EXPERIMENTS , python3 \
+            --set PYTHONPATH ${mercurial}/${python3.sitePackages}
+    done
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/glandium/git-cinnabar";
+    description = "git remote helper to interact with mercurial repositories";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ qyliss ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-codeowners/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-codeowners/default.nix
new file mode 100644
index 000000000000..2517e20ce9d7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-codeowners/default.nix
@@ -0,0 +1,21 @@
+{ lib, rustPlatform, fetchFromGitHub }:
+rustPlatform.buildRustPackage rec {
+  pname = "git-codeowners";
+  version = "0.1.2";
+
+  src = fetchFromGitHub {
+    owner = "softprops";
+    repo = "git-codeowners";
+    rev = "v${version}";
+    sha256 = "0bzq4ridzb4l1zqrj1r0vlzkjpgfaqwky5jf49cwjhz4ybwrfpkq";
+  };
+
+  cargoSha256 = "0r0hyp15knbbs4l9rcn395pzrx2vbibmwvs4pmga363irmi8mcy5";
+
+  meta = with lib; {
+    homepage = "https://github.com/softprops/git-codeowners";
+    description = "a git extension to work with CODEOWNERS files";
+    license = licenses.mit;
+    maintainers = with maintainers; [ zimbatm ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-codereview/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-codereview/default.nix
new file mode 100644
index 000000000000..902814078485
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-codereview/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage {
+  pname = "git-codereview";
+  version = "2020-01-15";
+  goPackagePath = "golang.org/x/review";
+
+  src = fetchFromGitHub {
+    owner = "golang";
+    repo = "review";
+    rev = "f51a73253c4da005cfdf18a036e11185c04c8ce3";
+    sha256 = "0c4vsyy5zp7pngqn4q87xipndghxyw2x57dkv1kxnrffckx1s3pc";
+  };
+
+  meta = with lib; {
+    description = "Manage the code review process for Git changes using a Gerrit server";
+    homepage = "https://golang.org/x/review/git-codereview";
+    license = licenses.bsd3;
+    maintainers = [ maintainers.edef ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-cola/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-cola/default.nix
new file mode 100644
index 000000000000..858383f96641
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-cola/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, python3Packages, gettext, git, qt5 }:
+
+let
+  inherit (python3Packages) buildPythonApplication pyqt5 sip pyinotify;
+
+in buildPythonApplication rec {
+  pname = "git-cola";
+  version = "3.5";
+
+  src = fetchFromGitHub {
+    owner = "git-cola";
+    repo = "git-cola";
+    rev = "v${version}";
+    sha256 = "09b60jbpdr4czx7h4vqahqmmi7m9vn77jlkpjfhys7crrdnxjp9i";
+  };
+
+  buildInputs = [ git gettext ];
+  propagatedBuildInputs = [ pyqt5 sip pyinotify ];
+  nativeBuildInputs = [ qt5.wrapQtAppsHook ];
+
+  doCheck = false;
+
+  postFixup = ''
+    wrapQtApp $out/bin/git-cola
+    wrapQtApp $out/bin/git-dag
+
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/git-cola/git-cola";
+    description = "A sleek and powerful Git GUI";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bobvanderlinden ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-crypt/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-crypt/default.nix
new file mode 100644
index 000000000000..487f9b9625f4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-crypt/default.nix
@@ -0,0 +1,55 @@
+{ fetchFromGitHub, git, gnupg, makeWrapper, openssl, stdenv
+, libxslt, docbook_xsl
+}:
+
+stdenv.mkDerivation rec {
+  pname = "git-crypt";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "AGWA";
+    repo = pname;
+    rev = version;
+    sha256 = "13m9y0m6gc3mlw3pqv9x4i0him2ycbysizigdvdanhh514kga602";
+  };
+
+  nativeBuildInputs = [ libxslt ];
+
+  buildInputs = [ openssl makeWrapper ];
+
+  patchPhase = ''
+    substituteInPlace commands.cpp \
+      --replace '(escape_shell_arg(our_exe_path()))' '= "git-crypt"'
+  '';
+
+  makeFlags = [
+    "PREFIX=${placeholder "out"}"
+    "ENABLE_MAN=yes"
+    "DOCBOOK_XSL=${docbook_xsl}/share/xml/docbook-xsl-nons/manpages/docbook.xsl"
+  ];
+
+  postFixup = ''
+    wrapProgram $out/bin/git-crypt --prefix PATH : $out/bin:${git}/bin:${gnupg}/bin
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.agwa.name/projects/git-crypt";
+    description = "Transparent file encryption in git";
+    longDescription = ''
+      git-crypt enables transparent encryption and decryption of files in a git
+      repository. Files which you choose to protect are encrypted when
+      committed, and decrypted when checked out. git-crypt lets you freely
+      share a repository containing a mix of public and private
+      content. git-crypt gracefully degrades, so developers without the secret
+      key can still clone and commit to a repository with encrypted files. This
+      lets you store your secret material (such as keys or passwords) in the
+      same repository as your code, without requiring you to lock down your
+      entire repository.
+    '';
+    downloadPage = "https://github.com/AGWA/git-crypt/releases";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.dochang ];
+    platforms = platforms.unix;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-dit/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-dit/default.nix
new file mode 100644
index 000000000000..9ec4e2530424
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-dit/default.nix
@@ -0,0 +1,58 @@
+{ stdenv
+, fetchFromGitHub
+, openssl_1_0_2
+, zlib
+, libssh
+, cmake
+, perl
+, pkgconfig
+, rustPlatform
+, curl
+, libiconv
+, CoreFoundation
+, Security
+}:
+
+with rustPlatform;
+
+buildRustPackage rec {
+  pname = "git-dit";
+  version = "0.4.0";
+
+  src = fetchFromGitHub {
+    owner = "neithernut";
+    repo = "git-dit";
+    rev = "v${version}";
+    sha256 = "1sx6sc2dj3l61gbiqz8vfyhw5w4xjdyfzn1ixz0y8ipm579yc7a2";
+  };
+
+  cargoSha256 = "1wjbwd3scx71l2fpxgvgwaw05lkpw13rm6d2i1x5crhs7py96ky6";
+
+  nativeBuildInputs = [
+    cmake
+    pkgconfig
+    perl
+  ];
+
+  buildInputs = [
+    openssl_1_0_2
+    libssh
+    zlib
+  ] ++ stdenv.lib.optionals (stdenv.isDarwin) [
+    curl
+    libiconv
+    CoreFoundation
+    Security
+  ];
+
+  meta = with stdenv.lib; {
+    inherit (src.meta) homepage;
+    description = "Decentralized Issue Tracking for git";
+    # This has not had a release in years and its cargo vendored dependencies
+    # fail to compile. It also depends on an unsupported openssl:
+    # https://github.com/NixOS/nixpkgs/issues/77503
+    broken = true;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ Profpatsch matthiasbeyer ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-extras/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-extras/default.nix
new file mode 100644
index 000000000000..f2afdd941fe4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-extras/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchzip, unixtools, which }:
+
+stdenv.mkDerivation rec {
+  pname = "git-extras";
+  version = "5.1.0";
+
+  src = fetchzip {
+    url = "https://github.com/tj/git-extras/archive/${version}.tar.gz";
+    sha256 = "0ja8ds9gpibrnwcf8n6cpbggwkbks0ik3z9vfx5h1yf3ln1nycky";
+  };
+
+  nativeBuildInputs = [ unixtools.column which ];
+
+  dontBuild = true;
+
+  preInstall = ''
+    patchShebangs .
+  '';
+
+  installFlags = [ "PREFIX=${placeholder "out"}" ];
+
+  postInstall = ''
+    # bash completion is already handled by make install
+    install -D etc/git-extras-completion.zsh $out/share/zsh/site-functions/_git_extras
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/tj/git-extras";
+    description = "GIT utilities -- repo summary, repl, changelog population, author commit percentages and more";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = [ maintainers.spwhitt maintainers.cko ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-fame/Gemfile b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-fame/Gemfile
new file mode 100644
index 000000000000..17373f02b44d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-fame/Gemfile
@@ -0,0 +1,4 @@
+source 'https://rubygems.org'
+
+# Specify your gem's dependencies in git_fame.gemspec
+gem "git_fame"
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-fame/Gemfile.lock b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-fame/Gemfile.lock
new file mode 100644
index 000000000000..12c58d72103a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-fame/Gemfile.lock
@@ -0,0 +1,26 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    git_fame (2.5.2)
+      hirb (~> 0.7.3)
+      memoist (~> 0.14.0)
+      method_profiler (~> 2.0.1)
+      progressbar (~> 0.21.0)
+      scrub_rb (~> 1.0.1)
+      trollop (~> 2.1.2)
+    hirb (0.7.3)
+    memoist (0.14.0)
+    method_profiler (2.0.1)
+      hirb (>= 0.6.0)
+    progressbar (0.21.0)
+    scrub_rb (1.0.1)
+    trollop (2.1.2)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  git_fame
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-fame/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-fame/default.nix
new file mode 100644
index 000000000000..782579c70446
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-fame/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, bundlerEnv, ruby, bundlerUpdateScript }:
+
+bundlerEnv {
+  inherit ruby;
+
+  pname = "git_fame";
+
+  gemdir = ./.;
+
+  passthru.updateScript = bundlerUpdateScript "gitAndTools.git-fame";
+
+  meta = with stdenv.lib; {
+    description = ''
+      A command-line tool that helps you summarize and pretty-print collaborators based on contributions
+      '';
+    homepage    = "http://oleander.io/git-fame-rb";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ expipiplus1 nicknovitski ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-fame/gemset.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-fame/gemset.nix
new file mode 100644
index 000000000000..49b4af4ef6d3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-fame/gemset.nix
@@ -0,0 +1,60 @@
+{
+  git_fame = {
+    dependencies = ["hirb" "memoist" "method_profiler" "progressbar" "scrub_rb" "trollop"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "02k5ls5zyif8skdbnym6zw9y76whlnksw2m94jsh2n1ygk98izdd";
+      type = "gem";
+    };
+    version = "2.5.2";
+  };
+  hirb = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mzch3c2lvmf8gskgzlx6j53d10j42ir6ik2dkrl27sblhy76cji";
+      type = "gem";
+    };
+    version = "0.7.3";
+  };
+  memoist = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03d3h6kp16bf0crqg1cxdgp1d2iyzn53d3phbmjh4pjybqls0gcm";
+      type = "gem";
+    };
+    version = "0.14.0";
+  };
+  method_profiler = {
+    dependencies = ["hirb"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ax04qrrv7fqp5ayxaxhn72660pybdkpkvmgiwbg7bs7x5ijjzd8";
+      type = "gem";
+    };
+    version = "2.0.1";
+  };
+  progressbar = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17haw9c6c9q6imsn83pii32jnihpg76jgd09x7y4hjqq45n3qcdh";
+      type = "gem";
+    };
+    version = "0.21.0";
+  };
+  scrub_rb = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0dwg33w83w17aiij9kcbi7irj7lh045nh9prjgkzjya3f1j60d3x";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  trollop = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0415y63df86sqj43c0l82and65ia5h64if7n0znkbrmi6y0jwhl8";
+      type = "gem";
+    };
+    version = "2.1.2";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-filter-repo/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-filter-repo/default.nix
new file mode 100644
index 000000000000..e4c57be2357c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-filter-repo/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pythonPackages }:
+
+stdenv.mkDerivation rec {
+  pname = "git-filter-repo";
+  version = "2.27.1";
+
+  src = fetchurl {
+    url = "https://github.com/newren/git-filter-repo/releases/download/v${version}/${pname}-${version}.tar.xz";
+    sha256 = "07r32n31ryflgz1ds3dz5s3ixv7li3scxwavy9mzbzdhq6bbzl28";
+  };
+
+  buildInputs = [ pythonPackages.python ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    install -Dm755 -t $out/bin git-filter-repo
+    install -Dm644 -t $out/share/man/man1 Documentation/man1/git-filter-repo.1
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/newren/git-filter-repo";
+    description = "Quickly rewrite git repository history (filter-branch replacement)";
+    license = licenses.mit;
+    inherit (pythonPackages.python.meta) platforms;
+    maintainers = [ maintainers.marsam ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-gone/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-gone/default.nix
new file mode 100644
index 000000000000..46decaf3cc12
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-gone/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, rustPlatform, pkgconfig, makeWrapper, openssl, git, libiconv, Security, installShellFiles }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "git-gone";
+  version = "0.3.6";
+
+  src = fetchFromGitHub {
+    owner = "lunaryorn";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0wpmabd5lshsga3dhv1hix7i99f1f82rpl6kjmpi315whg11kki3";
+  };
+
+  cargoSha256 = "0ayqsrhy6hpi20gfryhnwl2c1na4nnmzxkp7him104cc07vsdllq";
+
+  nativeBuildInputs = [ pkgconfig makeWrapper installShellFiles ];
+
+  buildInputs = [ openssl ]
+    ++ stdenv.lib.optionals stdenv.isDarwin [ libiconv Security ];
+
+  postInstall = ''
+    installManPage git-gone.1
+  '';
+
+  postFixup = ''
+    wrapProgram $out/bin/git-gone --prefix PATH : "${stdenv.lib.makeBinPath [ git ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Cleanup stale Git branches of pull requests";
+    homepage = "https://github.com/lunaryorn/git-gone";
+    license = licenses.asl20;
+    maintainers = [ maintainers.marsam ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-hub/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-hub/default.nix
new file mode 100644
index 000000000000..33b3d0bc167c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-hub/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitHub, gitMinimal, python2Packages }:
+
+stdenv.mkDerivation rec {
+  pname = "git-hub";
+  version = "1.1.0";
+
+  src = fetchFromGitHub {
+    owner = "sociomantic-tsunami";
+    repo = "git-hub";
+    rev = "v${version}";
+    sha256 = "0jkzg7vjvgb952qncndhki7n70714w61flbzf4mdcjc286lqjvwb";
+  };
+
+  buildInputs = [ python2Packages.python ];
+  nativeBuildInputs = [
+    gitMinimal        # Used during build to generate Bash completion.
+    python2Packages.docutils
+  ];
+
+  postPatch = ''
+    patchShebangs .
+  '';
+
+  enableParallelBuilding = true;
+
+  installFlags = [ "prefix=$(out)" "sysconfdir=$(out)/etc" ];
+
+  postInstall = ''
+    # Remove inert ftdetect vim plugin and a README that's a man page subset:
+    rm -r $out/share/{doc,vim}
+  '';
+
+  meta = with stdenv.lib; {
+    inherit (src.meta) homepage;
+    description = "Git command line interface to GitHub";
+    longDescription = ''
+      A simple command line interface to GitHub, enabling most useful GitHub
+      tasks (like creating and listing pull request or issues) to be accessed
+      directly through the Git command line.
+    '';
+    license = licenses.gpl3Plus;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-ignore/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-ignore/default.nix
new file mode 100644
index 000000000000..93d152baa003
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-ignore/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, installShellFiles, rustPlatform, pkgconfig, openssl, darwin }:
+
+with rustPlatform;
+
+buildRustPackage rec {
+  pname = "git-ignore";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "sondr3";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0krz50pw9bkyzl78bvppk6skbpjp8ga7bd34jya4ha1xfmd8p89c";
+  };
+
+  cargoSha256 = "0vcg2pl0s329fr8p23pwdx2jy7qahbr7n337ib61f69aaxi1xmq0";
+
+  nativeBuildInputs = [ pkgconfig installShellFiles ];
+  buildInputs = [ openssl ]
+  ++ stdenv.lib.optionals stdenv.isDarwin [
+    darwin.apple_sdk.frameworks.Security
+  ];
+
+  outputs = [ "out" "man" ];
+  preFixup = ''
+    installManPage $releaseDir/build/git-ignore-*/out/git-ignore.1
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Quickly and easily fetch .gitignore templates from gitignore.io";
+    homepage = "https://github.com/sondr3/git-ignore";
+    license = licenses.gpl3Plus;
+    platforms = platforms.all;
+    maintainers = [ maintainers.sondr3 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-imerge/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-imerge/default.nix
new file mode 100644
index 000000000000..721a7784e9ca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-imerge/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, pythonPackages }:
+
+stdenv.mkDerivation rec {
+  pname = "git-imerge";
+  version = "1.1.0";
+
+  src = fetchFromGitHub {
+    owner = "mhagger";
+    repo = "git-imerge";
+    rev = "v${version}";
+    sha256 = "0vi1w3f0yk4gqhxj2hzqafqq28rihyhyfnp8x7xzib96j2si14a4";
+  };
+
+  buildInputs = [ pythonPackages.python pythonPackages.wrapPython ];
+
+  makeFlags = [ "PREFIX=" "DESTDIR=$(out)" ] ; 
+ 
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/mhagger/git-imerge";
+    description = "Perform a merge between two branches incrementally";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = [ maintainers.spwhitt ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-interactive-rebase-tool/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-interactive-rebase-tool/default.nix
new file mode 100644
index 000000000000..6d548f040541
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-interactive-rebase-tool/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, ncurses5, fetchFromGitHub, rustPlatform, libiconv, Security }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "git-interactive-rebase-tool";
+  version = "1.2.1";
+
+  src = fetchFromGitHub {
+    owner = "MitMaro";
+    repo = pname;
+    rev = version;
+    sha256 = "10z3di2qypgsmg2z7xfs9nlrf9vng5i7l8dvqadv1l4lb9zz7i8q";
+  };
+
+  cargoSha256 = "0jc6mhszxmwsdjk73wkfi0jjp9vkzzl9kk0dbnry6w7dyr5if8cc";
+
+  buildInputs = [ ncurses5 ] ++ stdenv.lib.optionals stdenv.isDarwin [ libiconv Security ];
+
+  checkFlagsArray = [ "--test-threads=1" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/MitMaro/git-interactive-rebase-tool";
+    description = "Native cross platform full feature terminal based sequence editor for git interactive rebase";
+    changelog = "https://github.com/MitMaro/git-interactive-rebase-tool/releases/tag/${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ masaeedu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-machete/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-machete/default.nix
new file mode 100644
index 000000000000..1ca0ad27de71
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-machete/default.nix
@@ -0,0 +1,33 @@
+{ lib, buildPythonApplication, fetchPypi
+, installShellFiles, pbr
+, flake8, mock, pycodestyle, pylint, tox }:
+
+buildPythonApplication rec {
+  pname = "git-machete";
+  version = "2.14.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "01ch4d0r3bi9nl5nknp3dyizc2rl9w46gm1ydnvqbrzhgw65lpp0";
+  };
+
+  nativeBuildInputs = [ installShellFiles pbr ];
+
+  # TODO: Add missing check inputs (2019-11-22):
+  # - stestr
+  doCheck = false;
+  checkInputs = [ flake8 mock pycodestyle pylint tox ];
+
+  postInstall = ''
+      installShellCompletion --bash --name git-machete completion/git-machete.completion.bash
+      installShellCompletion --zsh --name _git-machete completion/git-machete.completion.zsh
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/VirtusLab/git-machete";
+    description = "Git repository organizer and rebase/merge workflow automation tool";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = [ maintainers.blitz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-my/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-my/default.nix
new file mode 100644
index 000000000000..2a8a262bf304
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-my/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "git-my";
+  version = "1.1.2";
+
+  src = fetchFromGitHub {
+    owner = "davidosomething";
+    repo = "git-my";
+    rev = version;
+    sha256 = "0jji5zw25jygj7g4f6f3k0p0s9g37r8iad8pa0s67cxbq2v4sc0v";
+  };
+
+  dontBuild = true;
+
+  installPhase = ''
+    install -Dm755 -t "$out"/bin ./git-my
+  '';
+
+  meta = with stdenv.lib; {
+    description =
+      "List remote branches if they're merged and/or available locally";
+    homepage = "https://github.com/davidosomething/git-my";
+    license = licenses.free;
+    maintainers = with maintainers; [ bb010g ];
+    platforms = platforms.all;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-octopus/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-octopus/default.nix
new file mode 100644
index 000000000000..d5278d9d2417
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-octopus/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, git, perl, makeWrapper }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "git-octopus";
+  version = "1.4";
+
+  installFlags = [ "prefix=$(out)" ];
+
+  buildInputs = [ makeWrapper ];
+
+  # perl provides shasum
+  postInstall = ''
+    for f in $out/bin/*; do
+      wrapProgram $f --prefix PATH : ${makeBinPath [ git perl ]}
+    done
+  '';
+
+  src = fetchFromGitHub {
+    owner = "lesfurets";
+    repo = "git-octopus";
+    rev = "v${version}";
+    sha256 = "14p61xk7jankp6gc26xciag9fnvm7r9vcbhclcy23f4ghf4q4sj1";
+  };
+
+  meta = {
+    homepage = "https://github.com/lesfurets/git-octopus";
+    description = "The continuous merge workflow";
+    license = licenses.lgpl3;
+    platforms = platforms.unix;
+    maintainers = [maintainers.mic92];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-open/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-open/default.nix
new file mode 100644
index 000000000000..f7b2120cca02
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-open/default.nix
@@ -0,0 +1,32 @@
+{stdenv, git, xdg_utils, gnugrep, fetchFromGitHub, makeWrapper}:
+
+stdenv.mkDerivation rec {
+  pname = "git-open";
+  version = "2.1.0";
+
+  src = fetchFromGitHub {
+    owner = "paulirish";
+    repo = "git-open";
+    rev = "v${version}";
+    sha256 = "11n46bngvca5wbdbfcxzjhjbfdbad7sgf7h9gf956cb1q8swsdm0";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  buildPhase = null;
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp git-open $out/bin
+    wrapProgram $out/bin/git-open \
+      --prefix PATH : "${stdenv.lib.makeBinPath [ git xdg_utils gnugrep ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/paulirish/git-open";
+    description = "Open the GitHub page or website for a repository in your browser";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = [ maintainers.jlesquembre ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-radar/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-radar/default.nix
new file mode 100644
index 000000000000..fc4b5850f5c7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-radar/default.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchFromGitHub}:
+
+stdenv.mkDerivation rec {
+  pname = "git-radar";
+  version = "0.6";
+
+  src = fetchFromGitHub {
+    owner = "michaeldfallen";
+    repo = "git-radar";
+    rev = "v${version}";
+    sha256 = "0c3zp8s4w7m4s71qgwk1jyfc8yzw34f2hi43x1w437ypgabwg81j";
+  };
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp git-radar fetch.sh prompt.bash prompt.zsh radar-base.sh $out
+    ln -s $out/git-radar $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/michaeldfallen/git-radar";
+    license = licenses.mit;
+    description = "A tool you can add to your prompt to provide at-a-glance information on your git repo";
+    platforms = with platforms; linux ++ darwin;
+    maintainers = with maintainers; [ kamilchm ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-recent/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-recent/default.nix
new file mode 100644
index 000000000000..99b64e012eae
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-recent/default.nix
@@ -0,0 +1,35 @@
+{stdenv, git, less, fetchFromGitHub, makeWrapper
+# utillinuxMinimal is included because we need the column command
+, utillinux
+}:
+
+stdenv.mkDerivation rec {
+  pname = "git-recent";
+  version = "1.1.1";
+
+  src = fetchFromGitHub {
+    owner = "paulirish";
+    repo = "git-recent";
+    rev = "v${version}";
+    sha256 = "1g8i6vpjnnfh7vc1269c91bap267w4bxdqqwnzb8x18vqgn2fx8i";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  buildPhase = null;
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp git-recent $out/bin
+    wrapProgram $out/bin/git-recent \
+      --prefix PATH : "${stdenv.lib.makeBinPath [ git less utillinux ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/paulirish/git-recent";
+    description = "See your latest local git branches, formatted real fancy";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = [ maintainers.jlesquembre ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-remote-gcrypt/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-remote-gcrypt/default.nix
new file mode 100644
index 000000000000..04787b0ce25b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-remote-gcrypt/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, docutils, makeWrapper
+, gnupg, curl, rsync, coreutils
+, gawk, gnused, gnugrep
+}:
+
+stdenv.mkDerivation rec {
+  pname = "git-remote-gcrypt";
+  version = "1.3";
+  rev = version;
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "spwhitton";
+    repo = "git-remote-gcrypt";
+    sha256 = "0n8fzvr6y0pxrbvkywlky2bd8jvi0ayp4n9hwi84l1ldmv4a40dh";
+  };
+
+  outputs = [ "out" "man" ];
+
+  nativeBuildInputs = [ docutils makeWrapper ];
+
+  installPhase = ''
+    prefix="$out" ./install.sh
+    wrapProgram "$out/bin/git-remote-gcrypt" \
+      --prefix PATH ":" "${stdenv.lib.makeBinPath [ gnupg curl rsync coreutils
+                                                    gawk gnused gnugrep ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://spwhitton.name/tech/code/git-remote-gcrypt";
+    description = "A git remote helper for GPG-encrypted remotes";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ ellis montag451 ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-remote-hg/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-remote-hg/default.nix
new file mode 100644
index 000000000000..37c06d3a85e2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-remote-hg/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, lib, fetchFromGitHub, mercurial, makeWrapper
+, asciidoc, xmlto, docbook_xsl, docbook_xml_dtd_45, libxslt, libxml2
+}:
+
+stdenv.mkDerivation rec {
+  pname = "git-remote-hg";
+  version = "1.0.1";
+
+  src = fetchFromGitHub {
+    owner = "mnauw";
+    repo = "git-remote-hg";
+    rev = "v${version}";
+    sha256 = "1by5ygqvq9ww990kdrjndaqsssyf2jc4n380f9pfh2avsr7871wc";
+  };
+
+  buildInputs = [ mercurial.python mercurial makeWrapper
+    asciidoc xmlto docbook_xsl docbook_xml_dtd_45 libxslt libxml2
+  ];
+
+  doCheck = false;
+
+  installFlags = [ "HOME=\${out}" "install-doc" ];
+
+  postInstall = ''
+    wrapProgram $out/bin/git-remote-hg \
+      --prefix PYTHONPATH : "$(echo ${mercurial}/lib/python*/site-packages):$(echo ${mercurial.python}/lib/python*/site-packages)${stdenv.lib.concatMapStrings (x: ":$(echo ${x}/lib/python*/site-packages)") mercurial.pythonPackages or []}"
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/mnauw/git-remote-hg";
+    description = "Semi-official Mercurial bridge from Git project";
+    license = licenses.gpl2;
+    maintainers = [ ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-reparent/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-reparent/default.nix
new file mode 100644
index 000000000000..c0de46264d05
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-reparent/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, makeWrapper, git, gnused }:
+
+stdenv.mkDerivation rec {
+  pname = "git-reparent";
+  version = "unstable-2017-09-03";
+
+  src = fetchFromGitHub {
+    owner  = "MarkLodato";
+    repo   = "git-reparent";
+    rev    = "a99554a32524a86421659d0f61af2a6c784b7715";
+    sha256 = "0v0yxydpw6r4awy0hb7sbnh520zsk86ibzh1xjf3983yhsvkfk5v";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    install -m755 -Dt $out/bin git-reparent
+  '';
+
+  postFixup = ''
+    wrapProgram $out/bin/git-reparent --prefix PATH : "${stdenv.lib.makeBinPath [ git gnused ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    inherit (src.meta) homepage;
+    description = "Git command to recommit HEAD with a new set of parents";
+    maintainers = [ maintainers.marsam ];
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-secret/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-secret/default.nix
new file mode 100644
index 000000000000..140c2647be22
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-secret/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, lib, fetchFromGitHub, makeWrapper, git, gnupg, gawk }:
+
+let
+  version = "0.3.2";
+  repo = "git-secret";
+
+in stdenv.mkDerivation {
+  name = "${repo}-${version}";
+
+  src = fetchFromGitHub {
+    inherit repo;
+    owner = "sobolevn";
+    rev = "v${version}";
+    sha256 = "0n268xlsd9p5f083sqwzpvsqg99fdk876mf8gihkydakrismc45b";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    install -D git-secret $out/bin/git-secret
+
+    wrapProgram $out/bin/git-secret \
+      --prefix PATH : "${lib.makeBinPath [ git gnupg gawk ]}"
+
+    mkdir $out/share
+    cp -r man $out/share
+  '';
+
+  meta = {
+    description = "A bash-tool to store your private data inside a git repository";
+    homepage = "https://git-secret.io";
+    license = stdenv.lib.licenses.mit;
+    maintainers = [ stdenv.lib.maintainers.lo1tuma ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-secrets/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-secrets/default.nix
new file mode 100644
index 000000000000..1beff2a118df
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-secrets/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, makeWrapper, git, coreutils }:
+
+stdenv.mkDerivation rec {
+  pname = "git-secrets";
+  version = "1.3.0";
+
+  src = fetchFromGitHub {
+    owner = "awslabs";
+    repo = "git-secrets";
+    rev = version;
+    sha256 = "10lnxg0q855zi3d6804ivlrn6dc817kilzdh05mmz8a0ccvm2qc7";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    install -m755 -Dt $out/bin git-secrets
+    install -m444 -Dt $out/share/man/man1 git-secrets.1
+
+    wrapProgram $out/bin/git-secrets \
+      --prefix PATH : "${stdenv.lib.makeBinPath [ git coreutils ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Prevents you from committing secrets and credentials into git repositories";
+    homepage = "https://github.com/awslabs/git-secrets";
+    license = licenses.asl20;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-standup/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-standup/default.nix
new file mode 100644
index 000000000000..ceb734f0f67f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-standup/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, makeWrapper, git }:
+
+stdenv.mkDerivation rec {
+  pname = "git-standup";
+  version = "2.3.2";
+
+  src = fetchFromGitHub {
+    owner = "kamranahmedse";
+    repo = pname;
+    rev = version;
+    sha256 = "1xnn0jjha56v7l2vj45zzxncl6m5x2hq6nkffgc1bcikhp1pidn7";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    install -Dm755 -t $out/bin git-standup
+
+    wrapProgram $out/bin/git-standup \
+      --prefix PATH : "${stdenv.lib.makeBinPath [ git ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Recall what you did on the last working day";
+    homepage = "https://github.com/kamranahmedse/git-standup";
+    license = licenses.mit;
+    maintainers = [ maintainers.marsam ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-stree/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-stree/default.nix
new file mode 100644
index 000000000000..dc636571acc0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-stree/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, lib, fetchFromGitHub, ... }:
+
+stdenv.mkDerivation {
+  pname = "git-stree";
+  version = "0.4.5";
+
+  src = fetchFromGitHub {
+    owner = "tdd";
+    repo = "git-stree";
+    rev = "0.4.5";
+    sha256 = "0y5h44n38w6rhy9m591dvibxpfggj3q950ll7y4h49bhpks4m0l9";
+  };
+
+  installPhase = ''
+    mkdir -p $out/bin $out/etc/bash_completion.d
+    install -m 0755 git-stree $out/bin/
+    install -m 0644 git-stree-completion.bash $out/etc/bash_completion.d/
+  '';
+
+  meta = with lib; {
+    description = "A better Git subtree helper command";
+    homepage = "http://deliciousinsights.github.io/git-stree";
+    license = licenses.mit;
+    maintainers = [ maintainers.benley ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-subrepo/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-subrepo/default.nix
new file mode 100644
index 000000000000..708014e4af8d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-subrepo/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, fetchFromGitHub, git, makeWrapper, which }:
+
+stdenv.mkDerivation rec {
+  pname = "git-subrepo";
+  version = "0.4.1";
+
+  src = fetchFromGitHub {
+    owner = "ingydotnet";
+    repo = "git-subrepo";
+    rev = version;
+    sha256 = "0n10qnc8kyms6cv65k1n5xa9nnwpwbjn9h2cq47llxplawzqgrvp";
+  };
+
+  nativeBuildInputs = [
+    makeWrapper
+    which
+  ];
+
+  buildInputs = [
+    git
+  ];
+
+  makeFlags = [
+    "PREFIX=${placeholder "out"}"
+    "INSTALL_LIB=${placeholder "out"}/bin"
+    "INSTALL_MAN=${placeholder "out"}/share/man/man1"
+  ];
+
+  patches = [
+    # Allow zsh completion to work even though we aren't installing from a git
+    # clone.  Also submitted upstream as
+    # https://github.com/ingydotnet/git-subrepo/pull/420
+    ./zsh-completion.patch
+  ];
+
+  postInstall = ''
+    ZSH_COMP_DIR="$out/share/zsh/vendor-completions"
+    mkdir -p "$ZSH_COMP_DIR"
+    cp share/zsh-completion/_git-subrepo "$ZSH_COMP_DIR/"
+
+    BASH_COMP_DIR="$out/share/bash-completion/completions"
+    mkdir -p "$BASH_COMP_DIR"
+    cp share/completion.bash "$BASH_COMP_DIR/git-subrepo"
+  '';
+
+  postFixup = ''
+    wrapProgram $out/bin/git-subrepo \
+      --prefix PATH : "${git}/bin"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/ingydotnet/git-subrepo";
+    description = "Git submodule alternative";
+    license = licenses.mit;
+    platforms = platforms.unix ++ platforms.darwin;
+    maintainers = [ maintainers.ryantrinkle ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-subrepo/zsh-completion.patch b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-subrepo/zsh-completion.patch
new file mode 100644
index 000000000000..dcba5ba6eea1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-subrepo/zsh-completion.patch
@@ -0,0 +1,32 @@
+diff --git a/pkg/bin/generate-completion.pl b/pkg/bin/generate-completion.pl
+index 85ae3b8..d3e423c 100644
+--- a/pkg/bin/generate-completion.pl
++++ b/pkg/bin/generate-completion.pl
+@@ -82,11 +82,6 @@ sub generate_zsh {
+ 
+ # DO NOT EDIT. This file generated by pkg/bin/generate-completion.pl.
+ 
+-if [[ -z $GIT_SUBREPO_ROOT ]]; then
+-	echo 'GIT_SUBREPO_ROOT is null; has `/path/to/git-subrepo/.rc` been sourced?'
+-	return 3
+-fi
+-
+ _git-subrepo() {
+     typeset -A opt_args
+     local curcontext="$curcontext" state line context
+diff --git a/share/zsh-completion/_git-subrepo b/share/zsh-completion/_git-subrepo
+index fc82be2..a8069d9 100644
+--- a/share/zsh-completion/_git-subrepo
++++ b/share/zsh-completion/_git-subrepo
+@@ -3,11 +3,6 @@
+ 
+ # DO NOT EDIT. This file generated by pkg/bin/generate-completion.pl.
+ 
+-if [[ -z $GIT_SUBREPO_ROOT ]]; then
+-	echo 'GIT_SUBREPO_ROOT is null; has `/path/to/git-subrepo/.rc` been sourced?'
+-	return 3
+-fi
+-
+ _git-subrepo() {
+     typeset -A opt_args
+     local curcontext="$curcontext" state line context
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-subset/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-subset/default.nix
new file mode 100644
index 000000000000..9893e6dd7844
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-subset/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, rustPlatform, fetchFromGitHub, pkg-config, openssl, curl, libiconv, Security }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "git-subset";
+  version = "0.1.1";
+
+  src = fetchFromGitHub {
+    owner = "jasonwhite";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "02z2r0kcd0nnn1zjslp6xxam5ddbhrmzn67qzxhlamsw0p9vvkbb";
+  };
+
+  cargoSha256 = "1ydrrq35h1h5s59mx8kwwf3bp7lsmla3jl53ccdlsq29x0rj2jhs";
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ openssl ] ++ stdenv.lib.optionals stdenv.isDarwin [ curl libiconv Security ];
+
+  meta = with stdenv.lib; {
+    description = "Super fast Git tree filtering";
+    homepage = "https://github.com/jasonwhite/git-subset";
+    license = licenses.mit;
+    maintainers = [ maintainers.marsam ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-subtrac/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-subtrac/default.nix
new file mode 100644
index 000000000000..be67beef299f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-subtrac/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "git-subtrac";
+  version = "0.03";
+
+  src = fetchFromGitHub {
+    owner = "apenwarr";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1ky04h18vg1yl9lykbhkmf25qslg0z2qzziy8c7afmvzvvvhm2v5";
+  };
+
+  vendorSha256 = "1ccwbhzwys8sl3m2rs2lp70snzsi2a0ahnnq8kn15rrlvsv5qahf";
+
+  meta = with lib; {
+    description = "Keep the content for your git submodules all in one place: the parent repo";
+    homepage = "https://github.com/apenwarr/git-subtrac";
+    license = licenses.asl20;
+    maintainers = [ maintainers.marsam ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-sync/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-sync/default.nix
new file mode 100644
index 000000000000..bba355095558
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-sync/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchFromGitHub, coreutils, gnugrep, gnused, makeWrapper, git
+}:
+
+stdenv.mkDerivation rec {
+  pname = "git-sync";
+  version = "20151024";
+
+  src = fetchFromGitHub {
+    owner = "simonthum";
+    repo = "git-sync";
+    rev = "eb9adaf2b5fd65aac1e83d6544b9076aae6af5b7";
+    sha256 = "01if8y93wa0mwbkzkzx2v1vqh47zlz4k1dysl6yh5rmppd1psknz";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -a git-sync $out/bin/git-sync
+  '';
+
+  wrapperPath = with stdenv.lib; makeBinPath [
+    coreutils
+    git
+    gnugrep
+    gnused
+  ];
+
+  fixupPhase = ''
+    patchShebangs $out/bin
+
+    wrapProgram $out/bin/git-sync \
+      --prefix PATH : "${wrapperPath}"
+  '';
+
+  meta = {
+    description = "A script to automatically synchronize a git repository";
+    homepage = "https://github.com/simonthum/git-sync";
+    maintainers = with stdenv.lib.maintainers; [ imalison ];
+    license = stdenv.lib.licenses.cc0;
+    platforms = with stdenv.lib.platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-test/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-test/default.nix
new file mode 100644
index 000000000000..27f9bcffa34e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-test/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, makeWrapper, git }:
+
+stdenv.mkDerivation rec {
+  pname = "git-test";
+  version = "1.0.4";
+
+  src = fetchFromGitHub {
+    owner = "spotify";
+    repo = "git-test";
+    rev = "v${version}";
+    sha256 = "01h3f0andv1p7pwir3k6n01v92hgr5zbjadfwl144yjw9x37fm2f";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    install -m755 -Dt $out/bin git-test
+    install -m444 -Dt $out/share/man/man1 git-test.1
+
+    wrapProgram $out/bin/git-test \
+      --prefix PATH : "${stdenv.lib.makeBinPath [ git ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Test your commits";
+    homepage = "https://github.com/spotify/git-test";
+    license = licenses.asl20;
+    maintainers = [ maintainers.marsam ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-trim/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-trim/default.nix
new file mode 100644
index 000000000000..d843cdc307c0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-trim/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, rustPlatform, fetchFromGitHub, pkg-config, openssl, libiconv, Security }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "git-trim";
+  version = "0.3.2";
+
+  src = fetchFromGitHub {
+    owner = "foriequal0";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "079kavm3n776wvmy25jq1g4qdvmhh3d3x1vdpb1f6pw5rkky8lyw";
+  };
+
+  cargoSha256 = "1ii5l7z9avg0gzlaav2gnfbr8wkbp008i5rz6k6bs2sfqnpnn5k6";
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ openssl ] ++ stdenv.lib.optionals stdenv.isDarwin [ libiconv Security ];
+
+  postInstall = ''
+    install -Dm644 -t $out/share/man/man1/ docs/git-trim.1
+  '';
+
+  # fails with sandbox
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Automatically trims your branches whose tracking remote refs are merged or gone";
+    homepage = "https://github.com/foriequal0/git-trim";
+    license = licenses.mit;
+    maintainers = [ maintainers.marsam ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git-workspace/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-workspace/default.nix
new file mode 100644
index 000000000000..8894c4f0f7ad
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git-workspace/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, fetchFromGitHub
+, rustPlatform
+, Security
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "git-workspace";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "orf";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0n025bnisg724d9pjcindxagj1ry63sxr0pplpkh2f2qffzm78pi";
+  };
+
+  cargoSha256 = "0ikyp6pdlw2c1gr1n1snjbdmblm0fs5swx5awy36jskii99q6kr1";
+
+  buildInputs = with stdenv; lib.optional isDarwin Security;
+
+  meta = with stdenv.lib; {
+    description = "Sync personal and work git repositories from multiple providers";
+    homepage = "https://github.com/orf/git-workspace";
+    license = with licenses; [ mit ];
+    platforms = platforms.all;
+    maintainers = with maintainers; [ misuzu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git/default.nix
new file mode 100644
index 000000000000..5686b1c6f3f5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git/default.nix
@@ -0,0 +1,349 @@
+{ fetchurl, stdenv, buildPackages
+, curl, openssl, zlib, expat, perlPackages, python3, gettext, cpio
+, gnugrep, gnused, gawk, coreutils # needed at runtime by git-filter-branch etc
+, openssh, pcre2
+, asciidoc, texinfo, xmlto, docbook2x, docbook_xsl, docbook_xml_dtd_45
+, libxslt, tcl, tk, makeWrapper, libiconv
+, svnSupport, subversionClient, perlLibs, smtpPerlLibs
+, perlSupport ? true
+, guiSupport
+, withManual ? true
+, pythonSupport ? true
+, withpcre2 ? true
+, sendEmailSupport
+, darwin
+, withLibsecret ? false
+, pkgconfig, glib, libsecret
+, gzip # needed at runtime by gitweb.cgi
+}:
+
+assert sendEmailSupport -> perlSupport;
+assert svnSupport -> perlSupport;
+
+let
+  version = "2.27.0";
+  svn = subversionClient.override { perlBindings = perlSupport; };
+
+  gitwebPerlLibs = with perlPackages; [ CGI HTMLParser CGIFast FCGI FCGIProcManager HTMLTagCloud ];
+in
+
+stdenv.mkDerivation {
+  pname = "git";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://www.kernel.org/pub/software/scm/git/git-${version}.tar.xz";
+    sha256 = "1ybk39ylvs32lywq7ra4l2kdr5izc80r9461hwfnw8pssxs9gjkk";
+  };
+
+  outputs = [ "out" ] ++ stdenv.lib.optional withManual "doc";
+
+  hardeningDisable = [ "format" ];
+
+  enableParallelBuilding = true;
+
+  ## Patch
+
+  patches = [
+    ./docbook2texi.patch
+    ./git-sh-i18n.patch
+    ./ssh-path.patch
+    ./git-send-email-honor-PATH.patch
+    ./installCheck-path.patch
+  ];
+
+  postPatch = ''
+    for x in connect.c git-gui/lib/remote_add.tcl ; do
+      substituteInPlace "$x" \
+        --subst-var-by ssh "${openssh}/bin/ssh"
+    done
+
+    # Fix references to gettext introduced by ./git-sh-i18n.patch
+    substituteInPlace git-sh-i18n.sh \
+        --subst-var-by gettext ${gettext}
+  '';
+
+  nativeBuildInputs = [ gettext perlPackages.perl ]
+    ++ stdenv.lib.optionals withManual [ asciidoc texinfo xmlto docbook2x
+         docbook_xsl docbook_xml_dtd_45 libxslt ];
+  buildInputs = [curl openssl zlib expat cpio makeWrapper libiconv]
+    ++ stdenv.lib.optionals perlSupport [ perlPackages.perl ]
+    ++ stdenv.lib.optionals guiSupport [tcl tk]
+    ++ stdenv.lib.optionals withpcre2 [ pcre2 ]
+    ++ stdenv.lib.optionals stdenv.isDarwin [ darwin.Security ]
+    ++ stdenv.lib.optionals withLibsecret [ pkgconfig glib libsecret ];
+
+  # required to support pthread_cancel()
+  NIX_LDFLAGS = stdenv.lib.optionalString (!stdenv.cc.isClang) "-lgcc_s"
+              + stdenv.lib.optionalString (stdenv.isFreeBSD) "-lthr";
+
+  configureFlags = stdenv.lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
+    "ac_cv_fread_reads_directories=yes"
+    "ac_cv_snprintf_returns_bogus=no"
+    "ac_cv_iconv_omits_bom=no"
+    "ac_cv_prog_CURL_CONFIG=${curl.dev}/bin/curl-config"
+  ];
+
+  preBuild = ''
+    makeFlagsArray+=( perllibdir=$out/$(perl -MConfig -wle 'print substr $Config{installsitelib}, 1 + length $Config{siteprefixexp}') )
+  '';
+
+  makeFlags = [
+    "prefix=\${out}"
+    "SHELL_PATH=${stdenv.shell}"
+  ]
+  ++ (if perlSupport then ["PERL_PATH=${perlPackages.perl}/bin/perl"] else ["NO_PERL=1"])
+  ++ (if pythonSupport then ["PYTHON_PATH=${python3}/bin/python"] else ["NO_PYTHON=1"])
+  ++ stdenv.lib.optionals stdenv.isSunOS ["INSTALL=install" "NO_INET_NTOP=" "NO_INET_PTON="]
+  ++ (if stdenv.isDarwin then ["NO_APPLE_COMMON_CRYPTO=1"] else ["sysconfdir=/etc"])
+  ++ stdenv.lib.optionals stdenv.hostPlatform.isMusl ["NO_SYS_POLL_H=1" "NO_GETTEXT=YesPlease"]
+  ++ stdenv.lib.optional withpcre2 "USE_LIBPCRE2=1"
+  # git-gui refuses to start with the version of tk distributed with
+  # macOS Catalina. We can prevent git from building the .app bundle
+  # by specifying an invalid tk framework. The postInstall step will
+  # then ensure that git-gui uses tcl/tk from nixpkgs, which is an
+  # acceptable version.
+  #
+  # See https://github.com/Homebrew/homebrew-core/commit/dfa3ccf1e7d3901e371b5140b935839ba9d8b706
+  ++ stdenv.lib.optional stdenv.isDarwin "TKFRAMEWORK=/nonexistent";
+
+
+  postBuild = ''
+    make -C contrib/subtree
+  '' + (stdenv.lib.optionalString perlSupport ''
+    make -C contrib/diff-highlight
+  '') + (stdenv.lib.optionalString stdenv.isDarwin ''
+    make -C contrib/credential/osxkeychain
+  '') + (stdenv.lib.optionalString withLibsecret ''
+    make -C contrib/credential/libsecret
+  '');
+
+
+  ## Install
+
+  # WARNING: Do not `rm` or `mv` files from the source tree; use `cp` instead.
+  #          We need many of these files during the installCheckPhase.
+
+  installFlags = [ "NO_INSTALL_HARDLINKS=1" ];
+
+  preInstall = (stdenv.lib.optionalString stdenv.isDarwin ''
+    mkdir -p $out/bin
+    ln -s $out/share/git/contrib/credential/osxkeychain/git-credential-osxkeychain $out/bin/
+    rm -f $PWD/contrib/credential/osxkeychain/git-credential-osxkeychain.o
+  '') + (stdenv.lib.optionalString withLibsecret ''
+    mkdir -p $out/bin
+    ln -s $out/share/git/contrib/credential/libsecret/git-credential-libsecret $out/bin/
+    rm -f $PWD/contrib/credential/libsecret/git-credential-libsecret.o
+  '');
+
+  postInstall =
+    ''
+      notSupported() {
+        unlink $1 || true
+      }
+
+      # Install git-subtree.
+      make -C contrib/subtree install ${stdenv.lib.optionalString withManual "install-doc"}
+      rm -rf contrib/subtree
+
+      # Install contrib stuff.
+      mkdir -p $out/share/git
+      cp -a contrib $out/share/git/
+      mkdir -p $out/share/bash-completion/completions
+      ln -s $out/share/git/contrib/completion/git-completion.bash $out/share/bash-completion/completions/git
+      mkdir -p $out/etc/bash_completion.d
+      ln -s $out/share/git/contrib/completion/git-prompt.sh $out/etc/bash_completion.d/
+      mkdir -p $out/share/zsh/site-functions
+      ln -s $out/share/git/contrib/completion/git-completion.zsh $out/share/zsh/site-functions/_git
+
+      # Patch the zsh completion script so it can find the Bash completion script.
+      sed -i -e "/locations=(/a \${"\t\t"}'$out/share/git/contrib/completion/git-completion.bash'" \
+        $out/share/git/contrib/completion/git-completion.zsh
+
+      # grep is a runtime dependency, need to patch so that it's found
+      substituteInPlace $out/libexec/git-core/git-sh-setup \
+          --replace ' grep' ' ${gnugrep}/bin/grep' \
+          --replace ' egrep' ' ${gnugrep}/bin/egrep'
+
+      # Fix references to the perl, sed, awk and various coreutil binaries used by
+      # shell scripts that git calls (e.g. filter-branch)
+      SCRIPT="$(cat <<'EOS'
+        BEGIN{
+          @a=(
+            '${gnugrep}/bin/grep', '${gnused}/bin/sed', '${gawk}/bin/awk',
+            '${coreutils}/bin/cut', '${coreutils}/bin/basename', '${coreutils}/bin/dirname',
+            '${coreutils}/bin/wc', '${coreutils}/bin/tr'
+            ${stdenv.lib.optionalString perlSupport ", '${perlPackages.perl}/bin/perl'"}
+          );
+        }
+        foreach $c (@a) {
+          $n=(split("/", $c))[-1];
+          s|(?<=[^#][^/.-])\b''${n}(?=\s)|''${c}|g
+        }
+      EOS
+      )"
+      perl -0777 -i -pe "$SCRIPT" \
+        $out/libexec/git-core/git-{sh-setup,filter-branch,merge-octopus,mergetool,quiltimport,request-pull,submodule,subtree,web--browse}
+
+
+      # Also put git-http-backend into $PATH, so that we can use smart
+      # HTTP(s) transports for pushing
+      ln -s $out/libexec/git-core/git-http-backend $out/bin/git-http-backend
+    '' + stdenv.lib.optionalString perlSupport ''
+      # wrap perl commands
+      makeWrapper "$out/share/git/contrib/credential/netrc/git-credential-netrc.perl" $out/bin/git-credential-netrc \
+                  --set PERL5LIB   "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}"
+      wrapProgram $out/libexec/git-core/git-cvsimport \
+                  --set GITPERLLIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}"
+      wrapProgram $out/libexec/git-core/git-add--interactive \
+                  --set GITPERLLIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}"
+      wrapProgram $out/libexec/git-core/git-archimport \
+                  --set GITPERLLIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}"
+      wrapProgram $out/libexec/git-core/git-instaweb \
+                  --set GITPERLLIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}"
+      wrapProgram $out/libexec/git-core/git-cvsexportcommit \
+                  --set GITPERLLIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}"
+
+      # gzip (and optionally bzip2, xz, zip) are runtime dependencies for
+      # gitweb.cgi, need to patch so that it's found
+      sed -i -e "s|'compressor' => \['gzip'|'compressor' => ['${gzip}/bin/gzip'|" \
+          $out/share/gitweb/gitweb.cgi
+      # Give access to CGI.pm and friends (was removed from perl core in 5.22)
+      for p in ${stdenv.lib.concatStringsSep " " gitwebPerlLibs}; do
+          sed -i -e "/use CGI /i use lib \"$p/${perlPackages.perl.libPrefix}\";" \
+              "$out/share/gitweb/gitweb.cgi"
+      done
+    ''
+
+   + (if svnSupport then ''
+        # wrap git-svn
+        wrapProgram $out/libexec/git-core/git-svn                                                                                \
+                     --set GITPERLLIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath (perlLibs ++ [svn.out])}" \
+                     --prefix PATH : "${svn.out}/bin" ''
+       else '' # replace git-svn by notification script
+        notSupported $out/libexec/git-core/git-svn
+     '')
+
+   + (if sendEmailSupport then ''
+        # wrap git-send-email
+        wrapProgram $out/libexec/git-core/git-send-email \
+                     --set GITPERLLIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath smtpPerlLibs}"
+      '' else ''
+        # replace git-send-email by notification script
+        notSupported $out/libexec/git-core/git-send-email
+      '')
+
+   + stdenv.lib.optionalString withManual ''# Install man pages and Info manual
+       make -j $NIX_BUILD_CORES -l $NIX_BUILD_CORES PERL_PATH="${buildPackages.perl}/bin/perl" cmd-list.made install install-html install-info \
+         -C Documentation ''
+
+   + (if guiSupport then ''
+       # Wrap Tcl/Tk programs
+       for prog in bin/gitk libexec/git-core/{git-gui,git-citool,git-gui--askpass}; do
+         sed -i -e "s|exec 'wish'|exec '${tk}/bin/wish'|g" \
+                -e "s|exec wish|exec '${tk}/bin/wish'|g" \
+                "$out/$prog"
+       done
+       ln -s $out/share/git/contrib/completion/git-completion.bash $out/share/bash-completion/completions/gitk
+     '' else ''
+       # Don't wrap Tcl/Tk, replace them by notification scripts
+       for prog in bin/gitk libexec/git-core/git-gui; do
+         notSupported "$out/$prog"
+       done
+     '')
+   + stdenv.lib.optionalString stdenv.isDarwin ''
+    # enable git-credential-osxkeychain by default if darwin
+    cat > $out/etc/gitconfig << EOF
+    [credential]
+      helper = osxkeychain
+    EOF
+  '';
+
+
+  ## InstallCheck
+
+  doCheck = false;
+  doInstallCheck = true;
+
+  installCheckTarget = "test";
+
+  # see also installCheckFlagsArray
+  installCheckFlags = [
+    "DEFAULT_TEST_TARGET=prove"
+    "PERL_PATH=${buildPackages.perl}/bin/perl"
+  ];
+
+  preInstallCheck = ''
+    installCheckFlagsArray+=(
+      GIT_PROVE_OPTS="--jobs $NIX_BUILD_CORES --failures --state=failed,save"
+      GIT_TEST_INSTALLED=$out/bin
+      ${stdenv.lib.optionalString (!svnSupport) "NO_SVN_TESTS=y"}
+    )
+
+    function disable_test {
+      local test=$1 pattern=$2
+      if [ $# -eq 1 ]; then
+        mv t/{,skip-}$test.sh || true
+      else
+        sed -i t/$test.sh \
+          -e "/^\s*test_expect_.*$pattern/,/^\s*' *\$/{s/^/: #/}"
+      fi
+    }
+
+    # Shared permissions are forbidden in sandbox builds.
+    disable_test t0001-init shared
+    disable_test t1301-shared-repo
+    disable_test t5324-split-commit-graph 'split commit-graph respects core.sharedrepository'
+
+    # Our patched gettext never fallbacks
+    disable_test t0201-gettext-fallbacks
+
+    ${stdenv.lib.optionalString (!sendEmailSupport) ''
+      # Disable sendmail tests
+      disable_test t9001-send-email
+    ''}
+
+    # XXX: I failed to understand why this one fails.
+    # Could someone try to re-enable it on the next release ?
+    # Tested to fail: 2.18.0 and 2.19.0
+    disable_test t1700-split-index "null sha1"
+
+    # Tested to fail: 2.18.0
+    disable_test t9902-completion "sourcing the completion script clears cached --options"
+
+    ${stdenv.lib.optionalString (!perlSupport) ''
+      # request-pull is a Bash script that invokes Perl, so it is not available
+      # when NO_PERL=1, and the test should be skipped, but the test suite does
+      # not check for the Perl prerequisite.
+      disable_test t5150-request-pull
+    ''}
+  '' + stdenv.lib.optionalString stdenv.isDarwin ''
+    # XXX: Some tests added in 2.24.0 fail.
+    # Please try to re-enable on the next release.
+    disable_test t7816-grep-binary-pattern
+  '' + stdenv.lib.optionalString stdenv.hostPlatform.isMusl ''
+    # Test fails (as of 2.17.0, musl 1.1.19)
+    disable_test t3900-i18n-commit
+    # Fails largely due to assumptions about BOM
+    # Tested to fail: 2.18.0
+    disable_test t0028-working-tree-encoding
+  '';
+
+  stripDebugList = [ "lib" "libexec" "bin" "share/git/contrib/credential/libsecret" ];
+
+
+  meta = {
+    homepage = "https://git-scm.com/";
+    description = "Distributed version control system";
+    license = stdenv.lib.licenses.gpl2;
+    changelog = "https://raw.githubusercontent.com/git/git/${version}/Documentation/RelNotes/${version}.txt";
+
+    longDescription = ''
+      Git, a popular distributed version control system designed to
+      handle very large projects with speed and efficiency.
+    '';
+
+    platforms = stdenv.lib.platforms.all;
+    maintainers = with stdenv.lib.maintainers; [ primeos peti wmertens globin ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git/docbook2texi.patch b/nixpkgs/pkgs/applications/version-management/git-and-tools/git/docbook2texi.patch
new file mode 100644
index 000000000000..f8f8ab86a9ce
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git/docbook2texi.patch
@@ -0,0 +1,38 @@
+This patch does two things: (1) use the right name for `docbook2texi',
+and (2) make sure `gitman.info' isn't produced since it's broken (duplicate
+node names).
+
+diff --git a/Documentation/Makefile b/Documentation/Makefile
+index 26a2342bea..ceccd67ebb 100644
+--- a/Documentation/Makefile
++++ b/Documentation/Makefile
+@@ -132,7 +132,7 @@ HTML_REPO = ../../git-htmldocs
+ 
+ MAKEINFO = makeinfo
+ INSTALL_INFO = install-info
+-DOCBOOK2X_TEXI = docbook2x-texi
++DOCBOOK2X_TEXI = docbook2texi
+ DBLATEX = dblatex
+ ASCIIDOC_DBLATEX_DIR = /etc/asciidoc/dblatex
+ DBLATEX_COMMON = -p $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.xsl -s $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.sty
+@@ -250,7 +250,7 @@ man1: $(DOC_MAN1)
+ man5: $(DOC_MAN5)
+ man7: $(DOC_MAN7)
+ 
+-info: git.info gitman.info
++info: git.info
+ 
+ pdf: user-manual.pdf
+ 
+@@ -266,10 +266,9 @@ install-man: man
+ 
+ install-info: info
+ 	$(INSTALL) -d -m 755 $(DESTDIR)$(infodir)
+-	$(INSTALL) -m 644 git.info gitman.info $(DESTDIR)$(infodir)
++	$(INSTALL) -m 644 git.info $(DESTDIR)$(infodir)
+ 	if test -r $(DESTDIR)$(infodir)/dir; then \
+ 	  $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) git.info ;\
+-	  $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) gitman.info ;\
+ 	else \
+ 	  echo "No directory found in $(DESTDIR)$(infodir)" >&2 ; \
+ 	fi
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git/git-send-email-honor-PATH.patch b/nixpkgs/pkgs/applications/version-management/git-and-tools/git/git-send-email-honor-PATH.patch
new file mode 100644
index 000000000000..9603d8e27c5c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git/git-send-email-honor-PATH.patch
@@ -0,0 +1,28 @@
+diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
+index 1afe9fc858..05dd7c3a90 100644
+--- a/Documentation/git-send-email.txt
++++ b/Documentation/git-send-email.txt
+@@ -215,8 +215,7 @@ a password is obtained using 'git-credential'.
+ 	specify a full pathname of a sendmail-like program instead;
+ 	the program must support the `-i` option.  Default value can
+ 	be specified by the `sendemail.smtpServer` configuration
+-	option; the built-in default is to search for `sendmail` in
+-	`/usr/sbin`, `/usr/lib` and $PATH if such program is
++	option; the built-in default is to search in $PATH if such program is
+ 	available, falling back to `localhost` otherwise.
+ 
+ --smtp-server-port=<port>::
+diff --git a/git-send-email.perl b/git-send-email.perl
+index 8eb63b5a2f..74a61d8213 100755
+--- a/git-send-email.perl
++++ b/git-send-email.perl
+@@ -956,8 +956,7 @@ sub expand_one_alias {
+ }
+ 
+ if (!defined $smtp_server) {
+-	my @sendmail_paths = qw( /usr/sbin/sendmail /usr/lib/sendmail );
+-	push @sendmail_paths, map {"$_/sendmail"} split /:/, $ENV{PATH};
++	my @sendmail_paths = map {"$_/sendmail"} split /:/, $ENV{PATH};
+ 	foreach (@sendmail_paths) {
+ 		if (-x $_) {
+ 			$smtp_server = $_;
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git/git-sh-i18n.patch b/nixpkgs/pkgs/applications/version-management/git-and-tools/git/git-sh-i18n.patch
new file mode 100644
index 000000000000..721f2aa099c4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git/git-sh-i18n.patch
@@ -0,0 +1,23 @@
+diff --git a/git-sh-i18n.sh b/git-sh-i18n.sh
+index e1d917fd27..e90f8e1414 100644
+--- a/git-sh-i18n.sh
++++ b/git-sh-i18n.sh
+@@ -26,7 +26,7 @@ then
+ elif test -n "$GIT_INTERNAL_GETTEXT_TEST_FALLBACKS"
+ then
+ 	: no probing necessary
+-elif type gettext.sh >/dev/null 2>&1
++elif type @gettext@/bin/gettext.sh >/dev/null 2>&1
+ then
+ 	# GNU libintl's gettext.sh
+ 	GIT_INTERNAL_GETTEXT_SH_SCHEME=gnu
+@@ -43,7 +43,8 @@ export GIT_INTERNAL_GETTEXT_SH_SCHEME
+ case "$GIT_INTERNAL_GETTEXT_SH_SCHEME" in
+ gnu)
+ 	# Use libintl's gettext.sh, or fall back to English if we can't.
+-	. gettext.sh
++	. @gettext@/bin/gettext.sh
++	export PATH=@gettext@/bin:$PATH
+ 	;;
+ gettext_without_eval_gettext)
+ 	# Solaris has a gettext(1) but no eval_gettext(1)
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git/installCheck-path.patch b/nixpkgs/pkgs/applications/version-management/git-and-tools/git/installCheck-path.patch
new file mode 100644
index 000000000000..4b73d11744ba
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git/installCheck-path.patch
@@ -0,0 +1,13 @@
+diff --git a/t/test-lib.sh b/t/test-lib.sh
+index 8665b0a9b6..8bb892b1af 100644
+--- a/t/test-lib.sh
++++ b/t/test-lib.sh
+@@ -1227,7 +1227,7 @@ elif test -n "$GIT_TEST_INSTALLED"
+ then
+ 	GIT_EXEC_PATH=$($GIT_TEST_INSTALLED/git --exec-path)  ||
+ 	error "Cannot run git from $GIT_TEST_INSTALLED."
+-	PATH=$GIT_TEST_INSTALLED:$GIT_BUILD_DIR/t/helper:$PATH
++	PATH=$GIT_TEST_INSTALLED:$GIT_BUILD_DIR/t/helper:$GIT_BUILD_DIR:$PATH
+ 	GIT_EXEC_PATH=${GIT_TEST_EXEC_PATH:-$GIT_EXEC_PATH}
+ else # normal case, use ../bin-wrappers only unless $with_dashes:
+ 	if test -n "$no_bin_wrappers"
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git/ssh-path.patch b/nixpkgs/pkgs/applications/version-management/git-and-tools/git/ssh-path.patch
new file mode 100644
index 000000000000..71cdc694ac31
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git/ssh-path.patch
@@ -0,0 +1,26 @@
+diff --git a/connect.c b/connect.c
+index 4813f005ab..b3f12f3268 100644
+--- a/connect.c
++++ b/connect.c
+@@ -1183,7 +1183,7 @@ static void fill_ssh_args(struct child_process *conn, const char *ssh_host,
+ 
+ 		ssh = getenv("GIT_SSH");
+ 		if (!ssh)
+-			ssh = "ssh";
++			ssh = "@ssh@";
+ 		variant = determine_ssh_variant(ssh, 0);
+ 	}
+ 
+diff --git a/git-gui/lib/remote_add.tcl b/git-gui/lib/remote_add.tcl
+index 480a6b30d0..7817204241 100644
+--- a/git-gui/lib/remote_add.tcl
++++ b/git-gui/lib/remote_add.tcl
+@@ -139,7 +139,7 @@ method _add {} {
+ 		# Parse the location
+ 		if { [regexp {(?:git\+)?ssh://([^/]+)(/.+)} $location xx host path]
+ 		     || [regexp {([^:][^:]+):(.+)} $location xx host path]} {
+-			set ssh ssh
++			set ssh @ssh@
+ 			if {[info exists env(GIT_SSH)]} {
+ 				set ssh $env(GIT_SSH)
+ 			}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git/update.sh b/nixpkgs/pkgs/applications/version-management/git-and-tools/git/update.sh
new file mode 100755
index 000000000000..54574722b02b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git/update.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl common-updater-scripts jq git
+
+set -eu -o pipefail
+
+oldVersion="$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion git" | tr -d '"')"
+latestTag="$(git ls-remote --tags --sort="v:refname" https://github.com/git/git.git | grep -v '\{\}' | grep -v '\-rc' | tail -1 | sed 's|^.*/v\(.*\)|\1|')"
+targetVersion="${1:-$latestTag}"
+
+if [ ! "${oldVersion}" = "${targetVersion}" ]; then
+  update-source-version git "${targetVersion}"
+  nixpkgs="$(git rev-parse --show-toplevel)"
+  default_nix="$nixpkgs/pkgs/applications/version-management/git-and-tools/git/default.nix"
+  nix-build -A git
+  git add "${default_nix}"
+  git commit -m "git: ${oldVersion} -> ${targetVersion}"
+else
+  echo "git is already up-to-date"
+fi
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git2cl/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git2cl/default.nix
new file mode 100644
index 000000000000..34417cfaa8c8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git2cl/default.nix
@@ -0,0 +1,23 @@
+{ fetchgit, stdenv, perl }:
+
+stdenv.mkDerivation {
+  name = "git2cl-20080827";
+
+  src = fetchgit {
+    url = "git://repo.or.cz/git2cl.git";
+    rev = "8373c9f74993e218a08819cbcdbab3f3564bbeba";
+    sha256 = "b0d39379640c8a12821442431e2121f7908ce1cc88ec8ec6bede218ea8c21f2f";
+  };
+
+  buildInputs = [ perl ];
+  installPhase = ''
+    install -D -m755 git2cl $out/bin/git2cl
+    install -D -m644 README $out/share/doc/git2cl/README
+  '';
+
+  meta = {
+    homepage = "https://savannah.nongnu.org/projects/git2cl";
+    description = "Convert git logs to GNU style ChangeLog files";
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/gita/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/gita/default.nix
new file mode 100644
index 000000000000..c9d188e10e5a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/gita/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonApplication
+, fetchPypi
+, pyyaml
+, setuptools
+}:
+
+buildPythonApplication rec {
+  version = "0.10.5";
+  pname = "gita";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1xggslmrrfszpl190klkc97fnl88gml1bnkmkzp6aimdch66g4jg";
+  };
+
+  propagatedBuildInputs = [
+    pyyaml
+    setuptools
+  ];
+
+  meta = with lib; {
+    description = "A command-line tool to manage multiple git repos";
+    homepage = "https://github.com/nosarthur/gita";
+    license = licenses.mit;
+    maintainers = with maintainers; [ seqizz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/gitbatch/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/gitbatch/default.nix
new file mode 100644
index 000000000000..99a127f3d8f8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/gitbatch/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "gitbatch-unstable";
+  version = "2019-12-19";
+
+  goPackagePath = "github.com/isacikgoz/gitbatch";
+
+  goDeps = ./deps.nix;
+
+  src = fetchFromGitHub {
+    owner = "isacikgoz";
+    repo = "gitbatch";
+    rev = "381b0df7f86056c625c0d4d2d979733c1ee5def7";
+    sha256 = "0613vfqdn3k0w7fm25rqnqdr67w9vii3i56dfslqcn1vqjfrff3q";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Running git UI commands";
+    homepage = "https://github.com/isacikgoz/gitbatch";
+    license = licenses.mit;
+    maintainers = with maintainers; [ teto ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/gitbatch/deps.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/gitbatch/deps.nix
new file mode 100644
index 000000000000..53784b4eacf0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/gitbatch/deps.nix
@@ -0,0 +1,543 @@
+# file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix)
+[
+  {
+    goPackagePath = "github.com/alcortesm/tgz";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alcortesm/tgz";
+      rev = "9c5fe88206d7";
+      sha256 = "04dcwnz2c2i4wbq2vx3g2wrdgqpncr2r1h6p1k08rdwk4bq1h8c5";
+    };
+  }
+  {
+    goPackagePath = "github.com/alecthomas/template";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/template";
+      rev = "a0175ee3bccc";
+      sha256 = "0qjgvvh26vk1cyfq9fadyhfgdj36f1iapbmr5xp6zqipldz8ffxj";
+    };
+  }
+  {
+    goPackagePath = "github.com/alecthomas/units";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/units";
+      rev = "2efee857e7cf";
+      sha256 = "1j65b91qb9sbrml9cpabfrcf07wmgzzghrl7809hjjhrmbzri5bl";
+    };
+  }
+  {
+    goPackagePath = "github.com/anmitsu/go-shlex";
+    fetch = {
+      type = "git";
+      url = "https://github.com/anmitsu/go-shlex";
+      rev = "648efa622239";
+      sha256 = "10rgdp5d106iisgz25ic8k6f44s9adh4sjh6fyxq9ccm21gw49b7";
+    };
+  }
+  {
+    goPackagePath = "github.com/armon/consul-api";
+    fetch = {
+      type = "git";
+      url = "https://github.com/armon/consul-api";
+      rev = "eb2c6b5be1b6";
+      sha256 = "1j6fdr1sg36qy4n4xjl7brq739fpm5npq98cmvklzjc9qrx98nk9";
+    };
+  }
+  {
+    goPackagePath = "github.com/coreos/etcd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/coreos/etcd";
+      rev = "v3.3.10";
+      sha256 = "1x2ii1hj8jraba8rbxz6dmc03y3sjxdnzipdvg6fywnlq1f3l3wl";
+    };
+  }
+  {
+    goPackagePath = "github.com/coreos/go-etcd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/coreos/go-etcd";
+      rev = "v2.0.0";
+      sha256 = "1xb34hzaa1lkbq5vkzy9vcz6gqwj7hp6cdbvyack2bf28dwn33jj";
+    };
+  }
+  {
+    goPackagePath = "github.com/coreos/go-semver";
+    fetch = {
+      type = "git";
+      url = "https://github.com/coreos/go-semver";
+      rev = "v0.2.0";
+      sha256 = "1gghi5bnqj50hfxhqc1cxmynqmh2yk9ii7ab9gsm75y5cp94ymk0";
+    };
+  }
+  {
+    goPackagePath = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev = "v1.1.1";
+      sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y";
+    };
+  }
+  {
+    goPackagePath = "github.com/emirpasic/gods";
+    fetch = {
+      type = "git";
+      url = "https://github.com/emirpasic/gods";
+      rev = "v1.9.0";
+      sha256 = "1zhkppqzy149fp561pif8d5d92jd9chl3l9z4yi5f8n60ibdmmjf";
+    };
+  }
+  {
+    goPackagePath = "github.com/fatih/color";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fatih/color";
+      rev = "v1.7.0";
+      sha256 = "0v8msvg38r8d1iiq2i5r4xyfx0invhc941kjrsg5gzwvagv55inv";
+    };
+  }
+  {
+    goPackagePath = "github.com/flynn/go-shlex";
+    fetch = {
+      type = "git";
+      url = "https://github.com/flynn/go-shlex";
+      rev = "3f9db97f8568";
+      sha256 = "1j743lysygkpa2s2gii2xr32j7bxgc15zv4113b0q9jhn676ysia";
+    };
+  }
+  {
+    goPackagePath = "github.com/fsnotify/fsnotify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev = "v1.4.7";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath = "github.com/gliderlabs/ssh";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gliderlabs/ssh";
+      rev = "v0.1.1";
+      sha256 = "0bylkc7yg8bxxffhchikcnzwli5n95cfmbji6v2a4mn1h5n36mdm";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/go-cmp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/go-cmp";
+      rev = "v0.2.0";
+      sha256 = "1fbv0x27k9sn8svafc0hjwsnckk864lv4yi7bvzrxvmd3d5hskds";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/hcl";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/hcl";
+      rev = "v1.0.0";
+      sha256 = "0q6ml0qqs0yil76mpn4mdx4lp94id8vbv575qm60jzl1ijcl5i66";
+    };
+  }
+  {
+    goPackagePath = "github.com/jbenet/go-context";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jbenet/go-context";
+      rev = "d14ea06fba99";
+      sha256 = "0q91f5549n81w3z5927n4a1mdh220bdmgl42zi3h992dcc4ls0sl";
+    };
+  }
+  {
+    goPackagePath = "github.com/jessevdk/go-flags";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jessevdk/go-flags";
+      rev = "v1.4.0";
+      sha256 = "0algnnigph27spgn655zm4723yfjxjjvlf4k14z9drj3682df25a";
+    };
+  }
+  {
+    goPackagePath = "github.com/jroimartin/gocui";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jroimartin/gocui";
+      rev = "v0.4.0";
+      sha256 = "1b1cbjg925l1c5v3ls8amni9716190yzf847cqs9wjnj82z8qa47";
+    };
+  }
+  {
+    goPackagePath = "github.com/kevinburke/ssh_config";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kevinburke/ssh_config";
+      rev = "81db2a75821e";
+      sha256 = "0hwmv2h83aa7r6l7yqwsxdyldnlhb4gbbkc3ww9nys7impjcjnsp";
+    };
+  }
+  {
+    goPackagePath = "github.com/konsorten/go-windows-terminal-sequences";
+    fetch = {
+      type = "git";
+      url = "https://github.com/konsorten/go-windows-terminal-sequences";
+      rev = "v1.0.1";
+      sha256 = "1lchgf27n276vma6iyxa0v1xds68n2g8lih5lavqnx5x6q5pw2ip";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/pretty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/pretty";
+      rev = "v0.1.0";
+      sha256 = "18m4pwg2abd0j9cn5v3k2ksk9ig4vlwxmlw9rrglanziv9l967qp";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/pty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/pty";
+      rev = "v1.1.1";
+      sha256 = "0383f0mb9kqjvncqrfpidsf8y6ns5zlrc91c6a74xpyxjwvzl2y6";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/text";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/text";
+      rev = "v0.1.0";
+      sha256 = "1gm5bsl01apvc84bw06hasawyqm4q84vx1pm32wr9jnd7a8vjgj1";
+    };
+  }
+  {
+    goPackagePath = "github.com/magiconair/properties";
+    fetch = {
+      type = "git";
+      url = "https://github.com/magiconair/properties";
+      rev = "v1.8.0";
+      sha256 = "1a10362wv8a8qwb818wygn2z48lgzch940hvpv81hv8gc747ajxn";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-colorable";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-colorable";
+      rev = "v0.1.1";
+      sha256 = "0l640974j804c1yyjfgyxqlsivz0yrzmbql4mhcw2azryigkp08p";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-isatty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-isatty";
+      rev = "v0.0.7";
+      sha256 = "1i77aq4gf9as03m8fpfh8fq49n4z9j7548blrcsidm1xhslzk5xd";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-runewidth";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-runewidth";
+      rev = "v0.0.4";
+      sha256 = "00b3ssm7wiqln3k54z2wcnxr3k3c7m1ybyhb9h8ixzbzspld0qzs";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/go-homedir";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-homedir";
+      rev = "v1.0.0";
+      sha256 = "0f0z0aa4wivk4z1y503dmnw0k0g0g403dly8i4q263gfshs82sbq";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/mapstructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/mapstructure";
+      rev = "v1.1.2";
+      sha256 = "03bpv28jz9zhn4947saqwi328ydj7f6g6pf1m2d4m5zdh5jlfkrr";
+    };
+  }
+  {
+    goPackagePath = "github.com/nsf/termbox-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/nsf/termbox-go";
+      rev = "288510b9734e";
+      sha256 = "0hdyisfaf8yb55h3p03p4sbq19546mp9fy28f2kn659mycmhxqk4";
+    };
+  }
+  {
+    goPackagePath = "github.com/pelletier/go-buffruneio";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pelletier/go-buffruneio";
+      rev = "v0.2.0";
+      sha256 = "0l83p1gg6g5mmhmxjisrhfimhbm71lwn1r2w7d6siwwqm9q08sd2";
+    };
+  }
+  {
+    goPackagePath = "github.com/pelletier/go-toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pelletier/go-toml";
+      rev = "v1.2.0";
+      sha256 = "1fjzpcjng60mc3a4b2ql5a00d5gah84wj740dabv9kq67mpg8fxy";
+    };
+  }
+  {
+    goPackagePath = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev = "v0.8.0";
+      sha256 = "001i6n71ghp2l6kdl3qq1v2vmghcz3kicv9a5wgcihrzigm75pp5";
+    };
+  }
+  {
+    goPackagePath = "github.com/pmezard/go-difflib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pmezard/go-difflib";
+      rev = "v1.0.0";
+      sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
+    };
+  }
+  {
+    goPackagePath = "github.com/sergi/go-diff";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sergi/go-diff";
+      rev = "v1.0.0";
+      sha256 = "0swiazj8wphs2zmk1qgq75xza6m19snif94h2m6fi8dqkwqdl7c7";
+    };
+  }
+  {
+    goPackagePath = "github.com/sirupsen/logrus";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sirupsen/logrus";
+      rev = "v1.4.0";
+      sha256 = "1y1qjcg19z7q9sy32rhc148kdql2aw7xkcm9d6r1blrl0mdgpx0w";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/afero";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/afero";
+      rev = "v1.1.2";
+      sha256 = "0miv4faf5ihjfifb1zv6aia6f6ik7h1s4954kcb8n6ixzhx9ck6k";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/cast";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cast";
+      rev = "v1.3.0";
+      sha256 = "0xq1ffqj8y8h7dcnm0m9lfrh0ga7pssnn2c1dnr09chqbpn4bdc5";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/jwalterweatherman";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/jwalterweatherman";
+      rev = "v1.0.0";
+      sha256 = "093fmmvavv84pv4q84hav7ph3fmrq87bvspjj899q0qsx37yvdr8";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev = "v1.0.3";
+      sha256 = "1cj3cjm7d3zk0mf1xdybh0jywkbbw7a6yr3y22x9sis31scprswd";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/viper";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/viper";
+      rev = "v1.3.2";
+      sha256 = "1829hvf805kda65l59r17wvid7y0vr390s23zfhf4w7vdb4wp3zh";
+    };
+  }
+  {
+    goPackagePath = "github.com/src-d/gcfg";
+    fetch = {
+      type = "git";
+      url = "https://github.com/src-d/gcfg";
+      rev = "v1.4.0";
+      sha256 = "044j95skmyrwjw5fwjk6ka32rjgsg0ar0mfp9np19sh1acwv4x4r";
+    };
+  }
+  {
+    goPackagePath = "github.com/stretchr/objx";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/objx";
+      rev = "v0.1.1";
+      sha256 = "0iph0qmpyqg4kwv8jsx6a56a7hhqq8swrazv40ycxk9rzr0s8yls";
+    };
+  }
+  {
+    goPackagePath = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev = "v1.2.2";
+      sha256 = "0dlszlshlxbmmfxj5hlwgv3r22x0y1af45gn1vd198nvvs3pnvfs";
+    };
+  }
+  {
+    goPackagePath = "github.com/ugorji/go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ugorji/go";
+      rev = "d75b2dcb6bc8";
+      sha256 = "0di1k35gpq9bp958ywranpbskx2vdwlb38s22vl9rybm3wa5g3ps";
+    };
+  }
+  {
+    goPackagePath = "github.com/xanzy/ssh-agent";
+    fetch = {
+      type = "git";
+      url = "https://github.com/xanzy/ssh-agent";
+      rev = "v0.2.0";
+      sha256 = "069nlriymqswg52ggiwi60qhwrin9nzhd2g65a7h59z2qbcvk2hy";
+    };
+  }
+  {
+    goPackagePath = "github.com/xordataexchange/crypt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/xordataexchange/crypt";
+      rev = "b2862e3d0a77";
+      sha256 = "04q3856anpzl4gdfgmg7pbp9cx231nkz3ymq2xp27rnmmwhfxr8y";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "505ab145d0a9";
+      sha256 = "1vbsvcvmjz6c00p5vf8ls533p52fx2y3gy6v4k5qrdlzl4wf0i5s";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "161cd47e91fd";
+      sha256 = "0254ld010iijygbzykib2vags1dc0wlmcmhgh4jl8iny159lhbcv";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sync";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sync";
+      rev = "e225da77a7e6";
+      sha256 = "0bh3583smcfw6jw3w6lp0za93rz7hpxfdz8vhxng75b7a6vdlw4p";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "a9d3bda3a223";
+      sha256 = "1w45zc13xrjzl19s1sx74r5mg3lf2z2nm13wygcdq5r5pyjlhdz9";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "v0.3.0";
+      sha256 = "0r6x6zjzhr8ksqlpiwm5gdd7s209kwk5p4lw54xjvz10cs3qlq19";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/alecthomas/kingpin.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/alecthomas/kingpin.v2";
+      rev = "v2.2.6";
+      sha256 = "0mndnv3hdngr3bxp7yxfd47cas4prv98sqw534mx7vp38gd88n5r";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/check.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/check.v1";
+      rev = "788fd7840127";
+      sha256 = "0v3bim0j375z81zrpr5qv42knqs0y2qv2vkjiqi5axvb78slki1a";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/src-d/go-billy.v4";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/src-d/go-billy.v4";
+      rev = "v4.2.1";
+      sha256 = "1n8nc0m2hidbrlcl643cd0bdm07pjr0qji47gbfpfj99791sv1d1";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/src-d/go-git-fixtures.v3";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/src-d/go-git-fixtures.v3";
+      rev = "v3.1.1";
+      sha256 = "1fq3j5chck6883jbn33gwm6dxdgzsphjq97psyn81hz9bc1ili8p";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/src-d/go-git.v4";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/src-d/go-git.v4";
+      rev = "v4.10.0";
+      sha256 = "18bx3m5ddvb20figd8pc3lgf9hn85pifc6xy72bb83lv2nxii2rx";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/warnings.v0";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/warnings.v0";
+      rev = "v0.1.2";
+      sha256 = "1kzj50jn708cingn7a13c2wdlzs6qv89dr2h4zj8d09647vlnd81";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "v2.2.2";
+      sha256 = "01wj12jzsdqlnidpyjssmj0r4yavlqy7dwrg7adqd8dicjc4ncsa";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/gitflow/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/gitflow/default.nix
new file mode 100644
index 000000000000..1307573990a9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/gitflow/default.nix
@@ -0,0 +1,41 @@
+{ pkgs, stdenv, fetchFromGitHub }:
+
+with pkgs.lib;
+
+stdenv.mkDerivation rec {
+  pname = "gitflow";
+  version = "1.12.2";
+
+  src = fetchFromGitHub {
+    owner = "petervanderdoes";
+    repo = pname;
+    rev = version;
+    sha256 = "0smwlc1wa4ndvspc9x6f4jwnzr58achysrhhip402j98d7di8hw5";
+  };
+
+  buildInputs = [ pkgs.makeWrapper ];
+
+  preBuild = ''
+    makeFlagsArray+=(prefix="$out")
+  '';
+
+  postInstall = ''
+    wrapProgram $out/bin/git-flow \
+      --set FLAGS_GETOPT_CMD ${pkgs.getopt}/bin/getopt \
+      --suffix PATH : ${pkgs.git}/bin
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/petervanderdoes/gitflow";
+    description = "Extend git with the Gitflow branching model";
+    longDescription = ''
+      A set of scripts that provide high-level repository operations
+      for managing feature/release/hotfix branches in a Git repository,
+      particularly suited to be utilised to follow Vincent Driessen's
+      branching model.
+    '';
+    license = licenses.bsd2;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ offline ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/gitin/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/gitin/default.nix
new file mode 100644
index 000000000000..5964af6c0f0c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/gitin/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildGoPackage
+, fetchFromGitHub
+, pkgconfig
+, libgit2_0_27
+}:
+
+buildGoPackage rec {
+  version = "0.2.3";
+  pname = "gitin";
+
+  goPackagePath = "github.com/isacikgoz/gitin";
+
+  src = fetchFromGitHub {
+    owner = "isacikgoz";
+    repo = "gitin";
+    rev = "v${version}";
+    sha256 = "00z6i0bjk3hdxbc0cy12ss75b41yvzyl5pm6rdrvsjhzavry2fa3";
+  };
+
+  goDeps = ./deps.nix;
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libgit2_0_27 ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/isacikgoz/gitin";
+    description = "Text-based user interface for git";
+    platforms = platforms.all;
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ kimat ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/gitin/deps.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/gitin/deps.nix
new file mode 100644
index 000000000000..908665693b81
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/gitin/deps.nix
@@ -0,0 +1,121 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.3.0
+[
+  {
+    goPackagePath = "github.com/alecthomas/template";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/template";
+      rev = "fb15b899a75114aa79cc930e33c46b577cc664b1";
+      sha256 = "1vlasv4dgycydh5wx6jdcvz40zdv90zz1h7836z7lhsi2ymvii26";
+    };
+  }
+  {
+    goPackagePath = "github.com/alecthomas/units";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/units";
+      rev = "f65c72e2690dc4b403c8bd637baf4611cd4c069b";
+      sha256 = "04jyqm7m3m01ppfy1f9xk4qvrwvs78q9zml6llyf2b3v5k6b2bbc";
+    };
+  }
+  {
+    goPackagePath = "github.com/fatih/color";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fatih/color";
+      rev = "daf2830f2741ebb735b21709a520c5f37d642d85";
+      sha256 = "086z8ssmr1fn9ba4mqnw7pnccfpys6l5yfhvycv1gdrsk7n27mvs";
+    };
+  }
+  {
+    goPackagePath = "github.com/isacikgoz/gia";
+    fetch = {
+      type = "git";
+      url = "https://github.com/isacikgoz/gia";
+      rev = "00556493579ec25f4e199b85ee1e2a73c98d15bb";
+      sha256 = "16nqi4z1pgybcw05wbp3qnbbq407smcr56hq7npnhkirngc5j822";
+    };
+  }
+  {
+    goPackagePath = "github.com/jroimartin/gocui";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jroimartin/gocui";
+      rev = "c055c87ae801372cd74a0839b972db4f7697ae5f";
+      sha256 = "1b1cbjg925l1c5v3ls8amni9716190yzf847cqs9wjnj82z8qa47";
+    };
+  }
+  {
+    goPackagePath = "github.com/justincampbell/timeago";
+    fetch = {
+      type = "git";
+      url = "https://github.com/justincampbell/timeago";
+      rev = "027f40306f1dbe89d24087611680ef95543bf876";
+      sha256 = "1p3va1cn9x5pyvq7k64mnvbxp5zy7h9z49syjyglixgg6avdbp1v";
+    };
+  }
+  {
+    goPackagePath = "github.com/kelseyhightower/envconfig";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kelseyhightower/envconfig";
+      rev = "0b417c4ec4a8a82eecc22a1459a504aa55163d61";
+      sha256 = "1a7b35njpqz94gbd7wvsl3wjzpd5y1fj1lrg2sdh00yq0nax1qj9";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-runewidth";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-runewidth";
+      rev = "14e809f6d78fcf9f48ff9b70981472b64c05f754";
+      sha256 = "1mvlxcdwr0vwp8b2wqs6y7hk72y28sqh03dz5x0xkg48d4y9cplj";
+    };
+  }
+  {
+    goPackagePath = "github.com/nsf/termbox-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/nsf/termbox-go";
+      rev = "38ba6e5628f1d70bac606cfd210b9ad1a16c3027";
+      sha256 = "03xx5vbnavklsk6wykcc7qhmhvn2074sx0ql06b51vqsxwsa6zw2";
+    };
+  }
+  {
+    goPackagePath = "github.com/sahilm/fuzzy";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sahilm/fuzzy";
+      rev = "d88f8cb825ddd46a2ce86b60382e11645220ee33";
+      sha256 = "0nl4l02s3961p11aj1vgajfy28rqlya2z6af2xjncra59gfhqvlq";
+    };
+  }
+  {
+    goPackagePath = "github.com/waigani/diffparser";
+    fetch = {
+      type = "git";
+      url = "https://github.com/waigani/diffparser";
+      rev = "7391f219313d9175703f67561b222fd2a81bca30";
+      sha256 = "0h3y3ivlghdvkyqsh5lcidqdajhc9g7m1xqm73j9a0ayby0sx1ql";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/alecthomas/kingpin.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/alecthomas/kingpin.v2";
+      rev = "947dcec5ba9c011838740e680966fd7087a71d0d";
+      sha256 = "0mndnv3hdngr3bxp7yxfd47cas4prv98sqw534mx7vp38gd88n5r";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/libgit2/git2go.v27";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/libgit2/git2go.v27";
+      rev = "6cc7d3dc6aec2781fe0239315da215f49c76e2f8";
+      sha256 = "0b2m4rjadngyd675bi1k21pyi9r91dsxngzd4mikacpd7yshgvaq";
+    };
+  }
+]
+
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/gitstatus/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/gitstatus/default.nix
new file mode 100644
index 000000000000..33048c95b670
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/gitstatus/default.nix
@@ -0,0 +1,29 @@
+{ callPackage, stdenv, fetchFromGitHub, ...}:
+
+stdenv.mkDerivation rec {
+  pname = "gitstatus";
+  version = "1.1.3";
+
+  src = fetchFromGitHub {
+    owner = "romkatv";
+    repo = "gitstatus";
+    rev = "v${version}";
+    sha256 = "16s09d2kpw0v0kyr2ada99qmsi0pqnsiis22mzq69hay0hdg8p1n";
+  };
+
+  buildInputs = [ (callPackage ./romkatv_libgit2.nix {}) ];
+  patchPhase = ''
+    sed -i "1i GITSTATUS_DAEMON=$out/bin/gitstatusd" gitstatus.plugin.zsh
+  '';
+  installPhase = ''
+    install -Dm755 usrbin/gitstatusd $out/bin/gitstatusd
+    install -Dm444 gitstatus.plugin.zsh $out
+  '';
+
+  meta = with stdenv.lib; {
+    description = "10x faster implementation of `git status` command";
+    homepage = "https://github.com/romkatv/gitstatus";
+    license = [ licenses.gpl3 ];
+    maintainers = with maintainers; [ mmlb hexa ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/gitstatus/romkatv_libgit2.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/gitstatus/romkatv_libgit2.nix
new file mode 100644
index 000000000000..2f99c88a37bc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/gitstatus/romkatv_libgit2.nix
@@ -0,0 +1,22 @@
+{ fetchFromGitHub, libgit2, ...}:
+
+libgit2.overrideAttrs (oldAttrs: {
+  cmakeFlags = oldAttrs.cmakeFlags ++ [
+    "-DBUILD_CLAR=OFF"
+    "-DBUILD_SHARED_LIBS=OFF"
+    "-DREGEX_BACKEND=builtin"
+    "-DUSE_BUNDLED_ZLIB=ON"
+    "-DUSE_GSSAPI=OFF"
+    "-DUSE_HTTPS=OFF"
+    "-DUSE_HTTP_PARSER=builtin"  # overwritten from libgit2
+    "-DUSE_NTLMCLIENT=OFF"
+    "-DUSE_SSH=OFF"
+    "-DZERO_NSEC=ON"
+  ];
+  src = fetchFromGitHub {
+    owner = "romkatv";
+    repo = "libgit2";
+    rev = "tag-005f77dca6dbe8788e55139fa1199fc94cc04f9a";
+    sha256 = "1h5bnisk4ljdpfzlv8g41m8js9841xyjhfywc5cn8pmyv58c50il";
+  };
+})
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/gitui/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/gitui/default.nix
new file mode 100644
index 000000000000..d3581eef5596
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/gitui/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, rustPlatform, fetchFromGitHub, libiconv, Security }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "gitui";
+  version = "0.5.0";
+
+  src = fetchFromGitHub {
+    owner = "extrawurst";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0z3k83nfnl765ably4naybjf614qfizzpqb40ppwljijj9nqlng1";
+  };
+
+  cargoSha256 = "11y4q56vl5dp2vdc7dc5q44l2m0mn590hfg6i134m11r8988am6y";
+
+  buildInputs = stdenv.lib.optionals stdenv.isDarwin [ libiconv Security ];
+
+  meta = with stdenv.lib; {
+    description = "Blazing fast terminal-ui for git written in rust";
+    homepage = "https://github.com/extrawurst/gitui";
+    license = licenses.mit;
+    maintainers = with maintainers; [ filalex77 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/gitweb/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/gitweb/default.nix
new file mode 100644
index 000000000000..b6659b5f539f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/gitweb/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildEnv, git, fetchFromGitHub
+, gitwebTheme ? false }:
+
+let
+  gitwebThemeSrc = fetchFromGitHub {
+    owner = "kogakure";
+    repo = "gitweb-theme";
+    rev = "049b88e664a359f8ec25dc6f531b7e2aa60dd1a2";
+    extraPostFetch = ''
+      mkdir -p "$TMPDIR/gitwebTheme"
+      mv "$out"/* "$TMPDIR/gitwebTheme/"
+      mkdir "$out/static"
+      mv "$TMPDIR/gitwebTheme"/* "$out/static/"
+    '';
+    sha256 = "17hypq6jvhy6zhh26lp3nyi52npfd5wy5752k6sq0shk4na2acqi";
+  };
+in buildEnv {
+  name = "gitweb-${stdenv.lib.getVersion git}";
+
+  ignoreCollisions = true;
+  paths = stdenv.lib.optional gitwebTheme gitwebThemeSrc
+       ++ [ "${git}/share/gitweb" ];
+
+  meta = git.meta // {
+    maintainers = with stdenv.lib.maintainers; [ gnidorah ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/grv/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/grv/default.nix
new file mode 100644
index 000000000000..64a4f8a823ce
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/grv/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, curl, ncurses, pkgconfig, readline
+, cmake }:
+let
+  version = "0.3.2";
+in
+buildGoPackage {
+  pname = "grv";
+  inherit version;
+
+  buildInputs = [ ncurses readline curl ];
+  nativeBuildInputs = [ pkgconfig cmake ];
+
+  goPackagePath = "github.com/rgburke/grv";
+
+  src = fetchFromGitHub {
+    owner = "rgburke";
+    repo = "grv";
+    rev = "v${version}";
+    sha256 = "0bpjsk35rlp56z8149z890adnhmxyh743vsls3q86j4682b83kyf";
+    fetchSubmodules = true;
+  };
+
+  postPatch = ''
+    rm util/update_latest_release.go
+  '';
+
+  postConfigure = ''
+    cd $NIX_BUILD_TOP/go/src/$goPackagePath
+  '';
+
+  buildPhase = ''
+    runHook preBuild
+    make build-only
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    install -D grv $out/bin/grv
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "GRV is a terminal interface for viewing Git repositories";
+    homepage = "https://github.com/rgburke/grv";
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ andir ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/hub/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/hub/default.nix
new file mode 100644
index 000000000000..22ffd442fdc9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/hub/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, groff, installShellFiles, utillinux }:
+
+buildGoPackage rec {
+  pname = "hub";
+  version = "2.14.2";
+
+  goPackagePath = "github.com/github/hub";
+
+  # Only needed to build the man-pages
+  excludedPackages = [ "github.com/github/hub/md2roff-bin" ];
+
+  src = fetchFromGitHub {
+    owner = "github";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1qjab3dpia1jdlszz3xxix76lqrm4zbmqzd9ymld7h06awzsg2vh";
+  };
+
+  nativeBuildInputs = [ groff installShellFiles utillinux ];
+
+  postPatch = ''
+    patchShebangs .
+  '';
+
+  postInstall = ''
+    cd go/src/${goPackagePath}
+    installShellCompletion --zsh --name _hub etc/hub.zsh_completion
+    installShellCompletion --bash --name hub etc/hub.bash_completion.sh
+    installShellCompletion --fish --name hub.fish etc/hub.fish_completion
+
+    LC_ALL=C.UTF8 \
+    make man-pages
+    installManPage share/man/man[1-9]/*.[1-9]
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Command-line wrapper for git that makes you better at GitHub";
+    license = licenses.mit;
+    homepage = "https://hub.github.com/";
+    maintainers = with maintainers; [ globin ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/lab/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/lab/default.nix
new file mode 100644
index 000000000000..eaab2e6c5054
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/lab/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "lab";
+  version = "0.17.2";
+
+  src = fetchFromGitHub {
+    owner = "zaquestion";
+    repo = "lab";
+    rev = "v${version}";
+    sha256 = "0zkwvmzgj7h8lc8jkg2a81392b28c8hkwqzj6dds6q4asbmymx5c";
+  };
+
+  subPackages = [ "." ];
+
+  vendorSha256 = "1lrmafvv5zfn9kc0p8g5vdz351n1zbaqwhwk861fxys0rdpqskyc";
+
+  buildFlagsArray = [ "-ldflags=-s -w -X main.version=${version}" ];
+
+  postInstall = ''
+    mkdir -p "$out/share/bash-completion/completions" "$out/share/zsh/site-functions"
+    export LAB_CORE_HOST=a LAB_CORE_USER=b LAB_CORE_TOKEN=c
+    $out/bin/lab completion bash > $out/share/bash-completion/completions/lab
+    $out/bin/lab completion zsh > $out/share/zsh/site-functions/_lab
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Lab wraps Git or Hub, making it simple to clone, fork, and interact with repositories on GitLab";
+    homepage = "https://zaquestion.github.io/lab";
+    license = licenses.cc0;
+    maintainers = with maintainers; [ marsam dtzWill ];
+    platforms = platforms.all;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/lefthook/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/lefthook/default.nix
new file mode 100644
index 000000000000..d86fca1a6d46
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/lefthook/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "lefthook";
+  version = "0.7.2";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "Arkweid";
+    repo = "lefthook";
+    sha256 = "1ciyxjx3r3dcl8xas49kqsjshs1bv4pafmfmhdfyfdvlaj374hgj";
+  };
+
+  vendorSha256 = "1pdrw4vwbj9cka2pjbjvxviigfvnrf8sgws27ixwwiblbkj4isc8";
+
+  meta = with stdenv.lib; {
+    description = "Fast and powerful Git hooks manager for any type of projects";
+    homepage = "https://github.com/Arkweid/lefthook";
+    license = licenses.mit;
+    maintainers = with maintainers; [ rencire ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/legit/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/legit/default.nix
new file mode 100644
index 000000000000..7dbdd6071a57
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/legit/default.nix
@@ -0,0 +1,30 @@
+{ lib, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "legit";
+  version = "1.2.0";
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "0ngh3ar6v15516f52j21k6qz7hykmxfjadhb2rakvl27b5xvjy1c";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    click
+    clint
+    crayons
+    GitPython
+    six
+  ];
+
+  # Prevent tests from trying to create configuration in /homeless-shelter.
+  preCheck = ''
+    export HOME=$PWD/test-home
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/frostming/legit";
+    description = "Git for Humans, Inspired by GitHub for Mac";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ ryneeverett ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/pass-git-helper/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/pass-git-helper/default.nix
new file mode 100644
index 000000000000..5c4ece7c9e51
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/pass-git-helper/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonApplication, fetchFromGitHub, pyxdg }:
+
+buildPythonApplication rec {
+  pname   = "pass-git-helper";
+  version = "0.4";
+
+  src = fetchFromGitHub {
+    owner  = "languitar";
+    repo   = "pass-git-helper";
+    rev    = version;
+    sha256 = "1zccbmq5l6asl9qm1f90vg9467y3spmv3ayrw07qizrj43yfd9ap";
+  };
+
+  propagatedBuildInputs = [ pyxdg ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/languitar/pass-git-helper";
+    description = "A git credential helper interfacing with pass, the standard unix password manager";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ vanzef ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/qgit/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/qgit/default.nix
new file mode 100644
index 000000000000..24743b21a4dd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/qgit/default.nix
@@ -0,0 +1,25 @@
+{ mkDerivation, lib, fetchFromGitHub, cmake, qtbase }:
+
+mkDerivation rec {
+  pname = "qgit";
+  version = "2.9";
+
+  src = fetchFromGitHub {
+    owner = "tibirna";
+    repo = "qgit";
+    rev = "${pname}-${version}";
+    sha256 = "0n4dq9gffm9yd7n5p5qcdfgrmg2kwnfd51hfx10adgj9ibxlnc3z";
+  };
+
+  buildInputs = [ qtbase ];
+
+  nativeBuildInputs = [ cmake ];
+
+  meta = with lib; {
+    license = licenses.gpl2;
+    homepage = "https://github.com/tibirna/qgit";
+    description = "Graphical front-end to Git";
+    maintainers = with maintainers; [ peterhoeg markuskowa ];
+    inherit (qtbase.meta) platforms;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/scmpuff/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/scmpuff/default.nix
new file mode 100644
index 000000000000..de8cb396b7fc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/scmpuff/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "scmpuff";
+  version = "0.3.0";
+  goPackagePath = "github.com/mroth/scmpuff";
+
+  goDeps = ./deps.nix;
+
+  src = fetchFromGitHub {
+    owner = "mroth";
+    repo = pname;
+    rev = "56dc2041f2c45ab15d41e63058c1c44fff905e81";
+    sha256 = "0zrzzcs0i13pfwcqh8qb0sji54vh37rdr7qasg57y56cqpx16vl3";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Add numbered shortcuts to common git commands";
+    homepage = "https://github.com/mroth/scmpuff";
+    license = licenses.mit;
+    maintainers = with maintainers; [ cpcloud ];
+    platforms = concatLists (with platforms; [ linux darwin windows ]);
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/scmpuff/deps.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/scmpuff/deps.nix
new file mode 100644
index 000000000000..da9052f9bb7b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/scmpuff/deps.nix
@@ -0,0 +1,273 @@
+# file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix)
+[
+  {
+    goPackagePath = "github.com/BurntSushi/toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/BurntSushi/toml";
+      rev = "v0.3.1";
+      sha256 = "1fjdwwfzyzllgiwydknf1pwjvy49qxfsczqx5gz3y0izs7as99j6";
+    };
+  }
+  {
+    goPackagePath = "github.com/armon/consul-api";
+    fetch = {
+      type = "git";
+      url = "https://github.com/armon/consul-api";
+      rev = "eb2c6b5be1b6";
+      sha256 = "1j6fdr1sg36qy4n4xjl7brq739fpm5npq98cmvklzjc9qrx98nk9";
+    };
+  }
+  {
+    goPackagePath = "github.com/coreos/etcd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/coreos/etcd";
+      rev = "v3.3.10";
+      sha256 = "1x2ii1hj8jraba8rbxz6dmc03y3sjxdnzipdvg6fywnlq1f3l3wl";
+    };
+  }
+  {
+    goPackagePath = "github.com/coreos/go-etcd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/coreos/go-etcd";
+      rev = "v2.0.0";
+      sha256 = "1xb34hzaa1lkbq5vkzy9vcz6gqwj7hp6cdbvyack2bf28dwn33jj";
+    };
+  }
+  {
+    goPackagePath = "github.com/coreos/go-semver";
+    fetch = {
+      type = "git";
+      url = "https://github.com/coreos/go-semver";
+      rev = "v0.2.0";
+      sha256 = "1gghi5bnqj50hfxhqc1cxmynqmh2yk9ii7ab9gsm75y5cp94ymk0";
+    };
+  }
+  {
+    goPackagePath = "github.com/cpuguy83/go-md2man";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cpuguy83/go-md2man";
+      rev = "v1.0.10";
+      sha256 = "1bqkf2bvy1dns9zd24k81mh2p1zxsx2nhq5cj8dz2vgkv1xkh60i";
+    };
+  }
+  {
+    goPackagePath = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev = "v1.1.1";
+      sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y";
+    };
+  }
+  {
+    goPackagePath = "github.com/fsnotify/fsnotify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev = "v1.4.7";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/hcl";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/hcl";
+      rev = "v1.0.0";
+      sha256 = "0q6ml0qqs0yil76mpn4mdx4lp94id8vbv575qm60jzl1ijcl5i66";
+    };
+  }
+  {
+    goPackagePath = "github.com/inconshreveable/mousetrap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/inconshreveable/mousetrap";
+      rev = "v1.0.0";
+      sha256 = "1mn0kg48xkd74brf48qf5hzp0bc6g8cf5a77w895rl3qnlpfw152";
+    };
+  }
+  {
+    goPackagePath = "github.com/magiconair/properties";
+    fetch = {
+      type = "git";
+      url = "https://github.com/magiconair/properties";
+      rev = "v1.8.0";
+      sha256 = "1a10362wv8a8qwb818wygn2z48lgzch940hvpv81hv8gc747ajxn";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/go-homedir";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-homedir";
+      rev = "v1.1.0";
+      sha256 = "0ydzkipf28hwj2bfxqmwlww47khyk6d152xax4bnyh60f4lq3nx1";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/mapstructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/mapstructure";
+      rev = "v1.1.2";
+      sha256 = "03bpv28jz9zhn4947saqwi328ydj7f6g6pf1m2d4m5zdh5jlfkrr";
+    };
+  }
+  {
+    goPackagePath = "github.com/pelletier/go-toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pelletier/go-toml";
+      rev = "v1.2.0";
+      sha256 = "1fjzpcjng60mc3a4b2ql5a00d5gah84wj740dabv9kq67mpg8fxy";
+    };
+  }
+  {
+    goPackagePath = "github.com/pmezard/go-difflib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pmezard/go-difflib";
+      rev = "v1.0.0";
+      sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
+    };
+  }
+  {
+    goPackagePath = "github.com/russross/blackfriday";
+    fetch = {
+      type = "git";
+      url = "https://github.com/russross/blackfriday";
+      rev = "v1.5.2";
+      sha256 = "0jzbfzcywqcrnym4gxlz6nphmm1grg6wsl4f0r9x384rn83wkj7c";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/afero";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/afero";
+      rev = "v1.1.2";
+      sha256 = "0miv4faf5ihjfifb1zv6aia6f6ik7h1s4954kcb8n6ixzhx9ck6k";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/cast";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cast";
+      rev = "v1.3.0";
+      sha256 = "0xq1ffqj8y8h7dcnm0m9lfrh0ga7pssnn2c1dnr09chqbpn4bdc5";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/cobra";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cobra";
+      rev = "v0.0.4";
+      sha256 = "1k7dq78fjz94lzifsprkmiv93swwzwcbg1vd64v20wvnga8v254b";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/jwalterweatherman";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/jwalterweatherman";
+      rev = "v1.0.0";
+      sha256 = "093fmmvavv84pv4q84hav7ph3fmrq87bvspjj899q0qsx37yvdr8";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev = "v1.0.3";
+      sha256 = "1cj3cjm7d3zk0mf1xdybh0jywkbbw7a6yr3y22x9sis31scprswd";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/viper";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/viper";
+      rev = "v1.3.2";
+      sha256 = "1829hvf805kda65l59r17wvid7y0vr390s23zfhf4w7vdb4wp3zh";
+    };
+  }
+  {
+    goPackagePath = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev = "v1.2.2";
+      sha256 = "0dlszlshlxbmmfxj5hlwgv3r22x0y1af45gn1vd198nvvs3pnvfs";
+    };
+  }
+  {
+    goPackagePath = "github.com/ugorji/go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ugorji/go";
+      rev = "d75b2dcb6bc8";
+      sha256 = "0di1k35gpq9bp958ywranpbskx2vdwlb38s22vl9rybm3wa5g3ps";
+    };
+  }
+  {
+    goPackagePath = "github.com/xordataexchange/crypt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/xordataexchange/crypt";
+      rev = "b2862e3d0a77";
+      sha256 = "04q3856anpzl4gdfgmg7pbp9cx231nkz3ymq2xp27rnmmwhfxr8y";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "505ab145d0a9";
+      sha256 = "1vbsvcvmjz6c00p5vf8ls533p52fx2y3gy6v4k5qrdlzl4wf0i5s";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "a5c9d58dba9a";
+      sha256 = "02qv5i7yps35p7fa81345qz7k8i73gkigj69anwmpw9rhpmzayf9";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "v0.3.0";
+      sha256 = "0r6x6zjzhr8ksqlpiwm5gdd7s209kwk5p4lw54xjvz10cs3qlq19";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/check.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/check.v1";
+      rev = "20d25e280405";
+      sha256 = "0k1m83ji9l1a7ng8a7v40psbymxasmssbrrhpdv2wl4rhs0nc3np";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "v2.2.2";
+      sha256 = "01wj12jzsdqlnidpyjssmj0r4yavlqy7dwrg7adqd8dicjc4ncsa";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/stgit/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/stgit/default.nix
new file mode 100644
index 000000000000..2cd4adce9397
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/stgit/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, python2, git }:
+
+let
+  name = "stgit-${version}";
+  version = "0.22";
+in
+stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchFromGitHub {
+    owner = "ctmarinas";
+    repo = "stgit";
+    rev = "v${version}";
+    sha256 = "0xpvs5fa50rrvl2c8naha1nblk5ip2mgg63a9srqqxfx6z8qmrfz";
+  };
+
+  buildInputs = [ python2 git ];
+
+  makeFlags = [ "prefix=$$out" ];
+
+  postInstall = ''
+    mkdir -p "$out/etc/bash_completion.d/"
+    ln -s ../../share/stgit/completion/stgit-completion.bash "$out/etc/bash_completion.d/"
+  '';
+
+  doCheck = false;
+  checkTarget = "test";
+
+  meta = with stdenv.lib; {
+    description = "A patch manager implemented on top of Git";
+    homepage = "http://procode.org/stgit/";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/subgit/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/subgit/default.nix
new file mode 100644
index 000000000000..1fd70aab4611
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/subgit/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, unzip, makeWrapper, jre }:
+
+stdenv.mkDerivation rec {
+  name = "subgit-3.3.9";
+
+  meta = {
+    description = "A tool for a smooth, stress-free SVN to Git migration";
+    longDescription = "Create writable Git mirror of a local or remote Subversion repository and use both Subversion and Git as long as you like. You may also do a fast one-time import from Subversion to Git.";
+    homepage = "http://subgit.com";
+    license = stdenv.lib.licenses.unfree;
+    platforms = stdenv.lib.platforms.all;
+  };
+
+  nativeBuildInputs = [ unzip makeWrapper ];
+
+  installPhase = ''
+    mkdir $out;
+    cp -r bin lib $out;
+    wrapProgram $out/bin/subgit --set JAVA_HOME ${jre};
+  '';
+
+  src = fetchurl {
+    url = "https://subgit.com/download/${name}.zip";
+    sha256 = "0dwd2kymmprci3b61ayr6axzlkc8zgbc40jqxvvyzschfxw9y0v5";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/svn-all-fast-export/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/svn-all-fast-export/default.nix
new file mode 100644
index 000000000000..75f6a9608412
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/svn-all-fast-export/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, qmake, qtbase, qttools, subversion, apr }:
+
+let
+  version = "1.0.18";
+in
+stdenv.mkDerivation {
+  pname = "svn-all-fast-export";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "svn-all-fast-export";
+    repo = "svn2git";
+    rev = version;
+    sha256 = "1b5yx2316hbyvw3v30vn1ljma9yd21nd59wis1gi34g92lgvqcd6";
+  };
+
+  nativeBuildInputs = [ qmake qttools ];
+  buildInputs = [ apr.dev subversion.dev qtbase ];
+
+  qmakeFlags = [
+    "VERSION=${version}"
+    "APR_INCLUDE=${apr.dev}/include/apr-1"
+    "SVN_INCLUDE=${subversion.dev}/include/subversion-1"
+  ];
+
+  NIX_LDFLAGS = "-lsvn_fs-1";
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/svn-all-fast-export/svn2git";
+    description = "A fast-import based converter for an svn repo to git repos";
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = [ maintainers.flokli ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/svn2git/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/svn2git/default.nix
new file mode 100644
index 000000000000..b61ae80bbee1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/svn2git/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, ruby, makeWrapper, git }:
+
+let
+  version = "2.4.0";
+in
+stdenv.mkDerivation {
+  pname = "svn2git";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://github.com/nirvdrum/svn2git/archive/v${version}.tar.gz";
+    sha256 = "0ly2vrv6q31n0xhciwb7a1ilr5c6ndyi3bg81yfp4axiypps7l41";
+  };
+
+  buildInputs = [ ruby makeWrapper ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out
+    cp -r lib $out/
+
+    mkdir -p $out/bin
+    substituteInPlace bin/svn2git --replace '/usr/bin/env ruby' ${ruby}/bin/ruby
+    cp bin/svn2git $out/bin/
+    chmod +x $out/bin/svn2git
+
+    wrapProgram $out/bin/svn2git \
+      --set RUBYLIB $out/lib \
+      --prefix PATH : ${git}/bin
+  '';
+
+  meta = {
+    homepage = "https://github.com/nirvdrum/svn2git";
+    description = "Tool for importing Subversion repositories into git";
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/thicket/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/thicket/default.nix
new file mode 100644
index 000000000000..4a02baa465c6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/thicket/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, fetchFromGitHub
+, crystal_0_33
+}:
+
+let
+  crystal = crystal_0_33;
+
+in crystal.buildCrystalPackage rec {
+  pname = "thicket";
+  version = "0.1.3";
+
+  src = fetchFromGitHub {
+    owner = "taylorthurlow";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0hkmmssiwipx373d0zw9a2yn72gqzqzcvwkqbs522m5adz6qmkzw";
+  };
+
+  format = "shards";
+
+  shardsFile = ./shards.nix;
+  crystalBinaries.thicket.src = "src/thicket.cr";
+
+  # there is one test that tries to clone a repo
+  doCheck = false;
+
+  meta = with lib; {
+    description = "A better one-line git log";
+    homepage = "https://github.com/taylorthurlow/thicket";
+    license = licenses.mit;
+    maintainers = with maintainers; [ filalex77 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/thicket/shards.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/thicket/shards.nix
new file mode 100644
index 000000000000..c8839651a26d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/thicket/shards.nix
@@ -0,0 +1,8 @@
+{
+  ameba = {
+    owner = "veelenga";
+    repo = "ameba";
+    rev = "v0.10.0";
+    sha256 = "1yjxzwdhigsyjn0qp362jkj85qvg4dsyzal00pgr1srnh2xry912";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/tig/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/tig/default.nix
new file mode 100644
index 000000000000..cb03a9b42a25
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/tig/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchFromGitHub, ncurses, asciidoc, xmlto, docbook_xsl, docbook_xml_dtd_45
+, readline, makeWrapper, git, libiconv, autoreconfHook, findXMLCatalogs, pkgconfig
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tig";
+  version = "2.5.1";
+
+  src = fetchFromGitHub {
+    owner = "jonas";
+    repo = pname;
+    rev = "${pname}-${version}";
+    sha256 = "0wxcbfqsk8p84zizy6lf3gp5j122wrf8c7xlipki6nhcfhksn33b";
+  };
+
+  nativeBuildInputs = [ makeWrapper autoreconfHook asciidoc xmlto docbook_xsl docbook_xml_dtd_45 findXMLCatalogs pkgconfig ];
+
+  autoreconfFlags = "-I tools -v";
+
+  buildInputs = [ ncurses readline git ]
+    ++ stdenv.lib.optionals stdenv.isDarwin [ libiconv ];
+
+  # those files are inherently impure, we'll handle the corresponding dependencies.
+  postPatch = ''
+      rm -f contrib/config.make-*
+  '';
+
+  enableParallelBuilding = true;
+
+  installPhase = ''
+    make install
+    make install-doc
+
+    # fixes tig-completion __git-complete dependency
+    sed -i '1s;^;source ${git}/share/bash-completion/completions/git\n;' contrib/tig-completion.bash
+
+    substituteInPlace contrib/tig-completion.zsh \
+      --replace 'e=$(dirname ''${funcsourcetrace[1]%:*})/tig-completion.bash' "e=$out/share/bash-completion/completions/tig"
+
+    install -D contrib/tig-completion.bash $out/share/bash-completion/completions/tig
+    install -D contrib/tig-completion.zsh $out/share/zsh/site-functions/_tig
+    cp contrib/vim.tigrc $out/etc/
+
+    wrapProgram $out/bin/tig \
+      --prefix PATH ':' "${git}/bin"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://jonas.github.io/tig/";
+    description = "Text-mode interface for git";
+    maintainers = with maintainers; [ bjornfor domenkozar qknight globin ];
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/topgit/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/topgit/default.nix
new file mode 100644
index 000000000000..0da0cfa02b63
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/topgit/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, git, perl }:
+
+stdenv.mkDerivation rec {
+  pname = "topgit";
+  version = "0.19.12";
+
+  src = fetchFromGitHub {
+    owner = "mackyle";
+    repo = "topgit";
+    rev = "${pname}-${version}";
+    sha256 = "1wvf8hmwwl7a2fr17cfs3pbxjccdsjw9ngzivxlgja0gvfz4hjd5";
+  };
+
+  makeFlags = [ "prefix=${placeholder "out"}" ];
+
+  nativeBuildInputs = [ perl git ];
+
+  postInstall = ''
+    install -Dm644 README -t"$out/share/doc/${pname}-${version}/"
+    install -Dm755 contrib/tg-completion.bash -t "$out/etc/bash_completion.d/"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "TopGit manages large amount of interdependent topic branches";
+    homepage = "https://github.com/mackyle/topgit";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ marcweber ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/transcrypt/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/transcrypt/default.nix
new file mode 100644
index 000000000000..589d53b3cfaa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/transcrypt/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchFromGitHub, git, makeWrapper, openssl, coreutils, utillinux, gnugrep, gnused, gawk }:
+
+stdenv.mkDerivation rec {
+  pname = "transcrypt";
+  version = "1.1.0";
+
+  src = fetchFromGitHub {
+    owner = "elasticdog";
+    repo = "transcrypt";
+    rev = "v${version}";
+    sha256 = "1dkr69plk16wllk5bzlkchrzw63pk239dgbjhrb3mb61i065jdam";
+  };
+
+  buildInputs = [ makeWrapper git openssl coreutils utillinux gnugrep gnused gawk ];
+
+  patches = [ ./helper-scripts_depspathprefix.patch ];
+
+  installPhase = ''
+    install -m 755 -D transcrypt $out/bin/transcrypt
+    install -m 644 -D man/transcrypt.1 $out/share/man/man1/transcrypt.1
+    install -m 644 -D contrib/bash/transcrypt $out/share/bash-completion/completions/transcrypt
+    install -m 644 -D contrib/zsh/_transcrypt $out/share/zsh/site-functions/_transcrypt
+
+    wrapProgram $out/bin/transcrypt \
+      --prefix PATH : "${stdenv.lib.makeBinPath [ git openssl coreutils utillinux gnugrep gnused gawk ]}"
+
+    cat > $out/bin/transcrypt-depspathprefix << EOF
+    #!${stdenv.shell}
+    echo "${stdenv.lib.makeBinPath [ git openssl coreutils gawk ]}:"
+    EOF
+    chmod +x $out/bin/transcrypt-depspathprefix
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Transparently encrypt files within a Git repository";
+    longDescription = ''
+      A script to configure transparent encryption of sensitive files stored in
+      a Git repository. Files that you choose will be automatically encrypted
+      when you commit them, and automatically decrypted when you check them
+      out. The process will degrade gracefully, so even people without your
+      encryption password can safely commit changes to the repository's
+      non-encrypted files.
+    '';
+    homepage = "https://github.com/elasticdog/transcrypt";
+    license = licenses.mit;
+    maintainers = [ maintainers.elasticdog ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/transcrypt/helper-scripts_depspathprefix.patch b/nixpkgs/pkgs/applications/version-management/git-and-tools/transcrypt/helper-scripts_depspathprefix.patch
new file mode 100644
index 000000000000..925aadab3dd5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/transcrypt/helper-scripts_depspathprefix.patch
@@ -0,0 +1,37 @@
+diff --git a/transcrypt b/transcrypt
+index a0b562d..7888f5d 100755
+--- a/transcrypt
++++ b/transcrypt
+@@ -278,6 +278,7 @@ save_helper_scripts() {
+ 
+ 	cat <<-'EOF' > "${GIT_DIR}/crypt/clean"
+ 		#!/usr/bin/env bash
++		PATH="$(transcrypt-depspathprefix 2>/dev/null)$PATH"
+ 		filename=$1
+ 		# ignore empty files
+ 		if [[ -s $filename ]]; then
+@@ -300,6 +301,7 @@ save_helper_scripts() {
+ 
+ 	cat <<-'EOF' > "${GIT_DIR}/crypt/smudge"
+ 		#!/usr/bin/env bash
++		PATH="$(transcrypt-depspathprefix 2>/dev/null)$PATH"
+ 		tempfile=$(mktemp 2> /dev/null || mktemp -t tmp)
+ 		trap 'rm -f "$tempfile"' EXIT
+ 		cipher=$(git config --get --local transcrypt.cipher)
+@@ -309,6 +311,7 @@ save_helper_scripts() {
+ 
+ 	cat <<-'EOF' > "${GIT_DIR}/crypt/textconv"
+ 		#!/usr/bin/env bash
++		PATH="$(transcrypt-depspathprefix 2>/dev/null)$PATH"
+ 		filename=$1
+ 		# ignore empty files
+ 		if [[ -s $filename ]]; then
+@@ -351,7 +354,7 @@ save_configuration() {
+ 	git config merge.renormalize 'true'
+ 
+ 	# add a git alias for listing encrypted files
+-	git config alias.ls-crypt "!git ls-files | git check-attr --stdin filter | awk 'BEGIN { FS = \":\" }; /crypt$/{ print \$1 }'"
++	git config alias.ls-crypt "!PATH=\"\$(transcrypt-depspathprefix 2>/dev/null)\$PATH\"; git ls-files | git check-attr --stdin filter | awk 'BEGIN { FS = \":\" }; /crypt$/{ print \$1 }'"
+ }
+ 
+ # display the current configuration settings
diff --git a/nixpkgs/pkgs/applications/version-management/git-backup/default.nix b/nixpkgs/pkgs/applications/version-management/git-backup/default.nix
new file mode 100644
index 000000000000..d65e2cf6ebff
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-backup/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, rustPlatform, pkg-config, openssl, Security }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "git-backup";
+  version = "0.2.0";
+
+  src = fetchFromGitHub {
+    owner = "jsdw";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0h31j8clvk4gkw4mgva9p0ypf26zhf7f0y564fdmzyw6rsz9wzcj";
+  };
+
+  cargoSha256 = "09nfvzvgpdl5glzjays4lm50iwvjzbz364y6agya1a94qqwkaj7f";
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ openssl ] ++ stdenv.lib.optionals stdenv.isDarwin [ Security ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/jsdw/git-backup";
+    description = "A tool to help you backup your git repositories from services like GitHub";
+    license = licenses.mit;
+    maintainers = [ maintainers.marsam ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-crecord/default.nix b/nixpkgs/pkgs/applications/version-management/git-crecord/default.nix
new file mode 100644
index 000000000000..9481f3ebd928
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-crecord/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchFromGitHub, pythonPackages }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "git-crecord";
+  version = "20161216.0";
+
+  src = fetchFromGitHub {
+    owner = "andrewshadura";
+    repo = "git-crecord";
+    rev = version;
+    sha256 = "0v3y90zi43myyi4k7q3892dcrbyi9dn2q6xgk12nw9db9zil269i";
+  };
+
+  propagatedBuildInputs = with pythonPackages; [ docutils ];
+
+  meta = {
+    homepage = "https://github.com/andrewshadura/git-crecord";
+    description = "Git subcommand to interactively select changes to commit or stage";
+    license = stdenv.lib.licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-lfs/1.nix b/nixpkgs/pkgs/applications/version-management/git-lfs/1.nix
new file mode 100644
index 000000000000..5b2a9906a4f8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-lfs/1.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "git-lfs";
+  version = "1.5.6";
+  rev = "0d02fb7d9a1c599bbf8c55e146e2845a908e04e0";
+
+  goPackagePath = "github.com/git-lfs/git-lfs";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "git-lfs";
+    repo = "git-lfs";
+    sha256 = "0wddry1lqjccf4522fvhx6grx8h57xsz17lkaf5aybnrgw677w3d";
+  };
+
+  subPackages = [ "." ];
+
+  preBuild = ''
+    pushd go/src/github.com/git-lfs/git-lfs
+      go generate ./commands
+    popd
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Git extension for versioning large files";
+    homepage    = "https://git-lfs.github.com/";
+    license     = [ licenses.mit ];
+    maintainers = [ maintainers.twey ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-lfs/default.nix b/nixpkgs/pkgs/applications/version-management/git-lfs/default.nix
new file mode 100644
index 000000000000..80f236559f9e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-lfs/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, ronn, installShellFiles }:
+
+buildGoPackage rec {
+  pname = "git-lfs";
+  version = "2.11.0";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "git-lfs";
+    repo = "git-lfs";
+    sha256 = "05qd96bn2cl7gn5qarbcv6scdpj28qiwdfzalamqk5jjiidpmng5";
+  };
+
+  goPackagePath = "github.com/git-lfs/git-lfs";
+
+  nativeBuildInputs = [ ronn installShellFiles ];
+
+  buildFlagsArray = [ "-ldflags=-s -w -X ${goPackagePath}/config.Vendor=${version} -X ${goPackagePath}/config.GitCommit=${src.rev}" ];
+
+  subPackages = [ "." ];
+
+  postBuild = ''
+    make -C go/src/${goPackagePath} man
+  '';
+
+  postInstall = ''
+    installManPage go/src/${goPackagePath}/man/*.{1,5}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Git extension for versioning large files";
+    homepage    = "https://git-lfs.github.com/";
+    license     = [ licenses.mit ];
+    maintainers = [ maintainers.twey maintainers.marsam ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-repo/default.nix b/nixpkgs/pkgs/applications/version-management/git-repo/default.nix
new file mode 100644
index 000000000000..eb3f95a354f4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-repo/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchFromGitHub, makeWrapper
+, python3, git, gnupg, less
+}:
+
+stdenv.mkDerivation rec {
+  pname = "git-repo";
+  version = "2.8";
+
+  src = fetchFromGitHub {
+    owner = "android";
+    repo = "tools_repo";
+    rev = "v${version}";
+    sha256 = "00sahddplisg55zpjz4v4sc7zqbh3apx36xv77g55nabwz7han8d";
+  };
+
+  patches = [ ./import-ssl-module.patch ];
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ python3 ];
+
+  postPatch = ''
+    substituteInPlace repo --replace \
+      'urllib.request.urlopen(url)' \
+      'urllib.request.urlopen(url, context=ssl.create_default_context())'
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp repo $out/bin/repo
+  '';
+
+  # Important runtime dependencies
+  postFixup = ''
+    wrapProgram $out/bin/repo --prefix PATH ":" \
+      "${stdenv.lib.makeBinPath [ git gnupg less ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Android's repo management tool";
+    longDescription = ''
+      Repo is a Python script based on Git that helps manage many Git
+      repositories, does the uploads to revision control systems, and automates
+      parts of the development workflow. Repo is not meant to replace Git, only
+      to make it easier to work with Git.
+    '';
+    homepage = "https://android.googlesource.com/tools/repo";
+    license = licenses.asl20;
+    maintainers = [ maintainers.primeos ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-repo/import-ssl-module.patch b/nixpkgs/pkgs/applications/version-management/git-repo/import-ssl-module.patch
new file mode 100644
index 000000000000..f1ec4e3a7ddb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-repo/import-ssl-module.patch
@@ -0,0 +1,12 @@
+diff --git a/repo b/repo
+index 8b05def..f394b3e 100755
+--- a/repo
++++ b/repo
+@@ -236,6 +236,7 @@ import optparse
+ import re
+ import shutil
+ import stat
++import ssl
+ 
+ if sys.version_info[0] == 3:
+   import urllib.request
diff --git a/nixpkgs/pkgs/applications/version-management/git-review/default.nix b/nixpkgs/pkgs/applications/version-management/git-review/default.nix
new file mode 100644
index 000000000000..c7702cfa1951
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-review/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, pythonPackages} :
+
+pythonPackages.buildPythonApplication rec {
+  pname = "git-review";
+  version = "1.28.0";
+
+  # Manually set version because prb wants to get it from the git
+  # upstream repository (and we are installing from tarball instead)
+  PBR_VERSION = version;
+
+  src = fetchFromGitHub {
+    owner = "openstack-infra";
+    repo = pname;
+    rev = version;
+    sha256 = "1hgw1dkl94m3idv4izc7wf2j7al2c7nnsqywy7g53nzkv9pfv47s";
+  };
+
+  propagatedBuildInputs = with pythonPackages; [ pbr requests setuptools ];
+
+  # Don't do tests because they require gerrit which is not packaged
+  doCheck = false;
+
+  meta = {
+    homepage = "https://github.com/openstack-infra/git-review";
+    description = "Tool to submit code to Gerrit";
+    license = stdenv.lib.licenses.asl20;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-sizer/default.nix b/nixpkgs/pkgs/applications/version-management/git-sizer/default.nix
new file mode 100644
index 000000000000..6d41098ee1aa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-sizer/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "git-sizer";
+  version = "1.3.0";
+
+  goPackagePath = "github.com/github/git-sizer";
+
+  src = fetchFromGitHub {
+    owner = "github";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0kmyvai5xfalm56ywa6mhdvvjnacdzwcyz28bw0pz9a4gyf1mgvh";
+  };
+
+  meta = with lib; {
+    description = "Compute various size metrics for a Git repository";
+    license = licenses.mit;
+    maintainers = with maintainers; [ matthewbauer ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/git-up/default.nix b/nixpkgs/pkgs/applications/version-management/git-up/default.nix
new file mode 100644
index 000000000000..faed3d25a8ad
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/git-up/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, pythonPackages, git }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "git-up";
+  version = "1.6.1";
+
+  src = pythonPackages.fetchPypi {
+    inherit pname version;
+    sha256 = "0gs791yb0cndg9879vayvcj329jwhzpk6wrf9ri12l5hg8g490za";
+  };
+
+  # git should be on path for tool to work correctly
+  propagatedBuildInputs = [ git ] ++ (with pythonPackages; [ click colorama docopt GitPython six termcolor ]);
+
+  checkInputs = [ git pythonPackages.nose ]; # git needs to be on path
+  # 1. git fails to run as it cannot detect the email address, so we set it
+  # 2. $HOME is by default not a valid dir, so we have to set that too
+  # https://github.com/NixOS/nixpkgs/issues/12591
+  preCheck = ''
+      export HOME=$TMPDIR
+      git config --global user.email "nobody@example.com"
+      git config --global user.name "Nobody"
+    '';
+
+  postInstall = ''
+    rm -r $out/${pythonPackages.python.sitePackages}/PyGitUp/tests
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/msiemens/PyGitUp";
+    description = "A git pull replacement that rebases all local branches when pulling.";
+    license = licenses.mit;
+    maintainers = with maintainers; [ peterhoeg ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/gitea/default.nix b/nixpkgs/pkgs/applications/version-management/gitea/default.nix
new file mode 100644
index 000000000000..21ff7c5f8f9d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitea/default.nix
@@ -0,0 +1,74 @@
+{ stdenv, buildGoPackage, fetchurl, makeWrapper
+, git, bash, gzip, openssh, pam
+, fetchpatch
+, sqliteSupport ? true
+, pamSupport ? true
+}:
+
+with stdenv.lib;
+
+buildGoPackage rec {
+  pname = "gitea";
+  version = "1.11.6";
+
+  src = fetchurl {
+    url = "https://github.com/go-gitea/gitea/releases/download/v${version}/gitea-src-${version}.tar.gz";
+    sha256 = "11nyq5faq0hy1pi3yhmc6y8is7jyiyfrb162fq9l33pkyw6qihqs";
+  };
+
+  unpackPhase = ''
+    mkdir source/
+    tar xvf $src -C source/
+  '';
+
+  sourceRoot = "source";
+
+  patches = [
+    ./static-root-path.patch
+    (fetchpatch {
+      url = "https://github.com/go-gitea/gitea/commit/1830d0ed5f4a67e3360ecbb55933b5540b6affce.patch";
+      sha256 = "163531pcki28qfs56l64vv4xxaavxgksf038da1sn21j5l2jm81i";
+    })
+  ];
+
+  postPatch = ''
+    patchShebangs .
+    substituteInPlace modules/setting/setting.go --subst-var data
+  '';
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildInputs = optional pamSupport pam;
+
+  preBuild = let
+    tags = optional pamSupport "pam"
+        ++ optional sqliteSupport "sqlite";
+    tagsString = concatStringsSep " " tags;
+  in ''
+    export buildFlagsArray=(
+      -tags="${tagsString}"
+      -ldflags='-X "main.Version=${version}" -X "main.Tags=${tagsString}"'
+    )
+  '';
+
+  outputs = [ "out" "data" ];
+
+  postInstall = ''
+    mkdir $data
+    cp -R ./go/src/${goPackagePath}/{public,templates,options} $data
+    mkdir -p $out
+    cp -R ./go/src/${goPackagePath}/options/locale $out/locale
+
+    wrapProgram $out/bin/gitea \
+      --prefix PATH : ${makeBinPath [ bash git gzip openssh ]}
+  '';
+
+  goPackagePath = "code.gitea.io/gitea";
+
+  meta = {
+    description = "Git with a cup of tea";
+    homepage = "https://gitea.io";
+    license = licenses.mit;
+    maintainers = with maintainers; [ disassembler kolaente ma27 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/gitea/static-root-path.patch b/nixpkgs/pkgs/applications/version-management/gitea/static-root-path.patch
new file mode 100644
index 000000000000..985dbe04082c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitea/static-root-path.patch
@@ -0,0 +1,13 @@
+diff --git a/modules/setting/setting.go b/modules/setting/setting.go
+index 714015c47..a2f85337e 100644
+--- a/modules/setting/setting.go
++++ b/modules/setting/setting.go
+@@ -641,7 +641,7 @@ func NewContext() {
+ 	PortToRedirect = sec.Key("PORT_TO_REDIRECT").MustString("80")
+ 	OfflineMode = sec.Key("OFFLINE_MODE").MustBool()
+ 	DisableRouterLog = sec.Key("DISABLE_ROUTER_LOG").MustBool()
+-	StaticRootPath = sec.Key("STATIC_ROOT_PATH").MustString(AppWorkPath)
++	StaticRootPath = sec.Key("STATIC_ROOT_PATH").MustString("@data@")
+ 	StaticCacheTime = sec.Key("STATIC_CACHE_TIME").MustDuration(6 * time.Hour)
+ 	AppDataPath = sec.Key("APP_DATA_PATH").MustString(path.Join(AppWorkPath, "data"))
+ 	EnableGzip = sec.Key("ENABLE_GZIP").MustBool()
diff --git a/nixpkgs/pkgs/applications/version-management/gitinspector/default.nix b/nixpkgs/pkgs/applications/version-management/gitinspector/default.nix
new file mode 100644
index 000000000000..ac9670601553
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitinspector/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchzip, python2Packages}:
+
+python2Packages.buildPythonApplication rec {
+  pname = "gitinspector";
+  version = "0.4.4";
+  namePrefix = "";
+
+  src = fetchzip {
+    url = "https://github.com/ejwa/gitinspector/archive/v${version}.tar.gz";
+    sha256 = "1pfsw6xldm6jigs3nhysvqaxk8a0zf8zczgfkrp920as9sya3c7m";
+    name = "${pname}-${version}" + "-src";
+  };
+
+  checkInputs = with python2Packages; [
+    unittest2
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/ejwa/gitinspector";
+    description = "Statistical analysis tool for git repositories";
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/gitkraken/default.nix b/nixpkgs/pkgs/applications/version-management/gitkraken/default.nix
new file mode 100644
index 000000000000..2afed8c099c8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitkraken/default.nix
@@ -0,0 +1,117 @@
+{ stdenv, libXcomposite, libgnome-keyring, makeWrapper, udev, curl, alsaLib
+, libXfixes, atk, gtk3, libXrender, pango, gnome3, cairo, freetype, fontconfig
+, libX11, libXi, libxcb, libXext, libXcursor, glib, libXScrnSaver, libxkbfile, libXtst
+, nss, nspr, cups, fetchzip, expat, gdk-pixbuf, libXdamage, libXrandr, dbus
+, makeDesktopItem, openssl, wrapGAppsHook, at-spi2-atk, at-spi2-core, libuuid
+, e2fsprogs, krb5
+}:
+
+with stdenv.lib;
+
+let
+  curlWithGnuTls = curl.override { gnutlsSupport = true; sslSupport = false; };
+in
+stdenv.mkDerivation rec {
+  pname = "gitkraken";
+  version = "7.0.1";
+
+  src = fetchzip {
+    url = "https://release.axocdn.com/linux/GitKraken-v${version}.tar.gz";
+    sha256 = "0vj2ggbm617fypl69ksbrbl048xp4v6wc46y4sp7hrk6lg0gw1b0";
+  };
+
+  dontBuild = true;
+  dontConfigure = true;
+
+  libPath = makeLibraryPath [
+    stdenv.cc.cc.lib
+    curlWithGnuTls
+    udev
+    libX11
+    libXext
+    libXcursor
+    libXi
+    libxcb
+    glib
+    libXScrnSaver
+    libxkbfile
+    libXtst
+    nss
+    nspr
+    cups
+    alsaLib
+    expat
+    gdk-pixbuf
+    dbus
+    libXdamage
+    libXrandr
+    atk
+    pango
+    cairo
+    freetype
+    fontconfig
+    libXcomposite
+    libXfixes
+    libXrender
+    gtk3
+    libgnome-keyring
+    openssl
+    at-spi2-atk
+    at-spi2-core
+    libuuid
+    e2fsprogs
+    krb5
+  ];
+
+  desktopItem = makeDesktopItem {
+    name = "gitkraken";
+    exec = "gitkraken";
+    icon = "gitkraken";
+    desktopName = "GitKraken";
+    genericName = "Git Client";
+    categories = "Application;Development;";
+    comment = "Graphical Git client from Axosoft";
+  };
+
+  nativeBuildInputs = [ makeWrapper wrapGAppsHook ];
+  buildInputs = [ gtk3 gnome3.adwaita-icon-theme ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/gitkraken/
+    cp -R $src/* $out/share/gitkraken/
+
+    mkdir -p $out/bin
+    ln -s $out/share/gitkraken/gitkraken $out/bin/gitkraken
+
+    mkdir -p $out/share/applications
+    cp ${desktopItem}/share/applications/* $out/share/applications/
+
+    substituteInPlace $out/share/applications/gitkraken.desktop \
+      --replace $out/usr/share/gitkraken $out/bin
+
+    mkdir -p $out/share/pixmaps
+    cp gitkraken.png $out/share/pixmaps/gitkraken.png
+
+    runHook postInstall
+  '';
+
+  postFixup = ''
+    pushd $out/share/gitkraken
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" gitkraken
+
+    for file in $(find . -type f \( -name \*.node -o -name gitkraken -o -name \*.so\* \) ); do
+      patchelf --set-rpath ${libPath}:$out/share/gitkraken $file || true
+    done
+    popd
+  '';
+
+  meta = {
+    homepage = "https://www.gitkraken.com/";
+    description = "The downright luxurious and most popular Git client for Windows, Mac & Linux";
+    license = licenses.unfree;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ xnwdd evanjs ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/data.json b/nixpkgs/pkgs/applications/version-management/gitlab/data.json
new file mode 100644
index 000000000000..bc342ff2b5ef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/data.json
@@ -0,0 +1,13 @@
+{
+  "version": "13.0.6",
+  "repo_hash": "0iyzx5lnkwp6m8q5p60gzsjmpf6qflvzl0vzfw37hymnxwq646zy",
+  "owner": "gitlab-org",
+  "repo": "gitlab",
+  "rev": "v13.0.6-ee",
+  "passthru": {
+    "GITALY_SERVER_VERSION": "13.0.6",
+    "GITLAB_PAGES_VERSION": "1.18.0",
+    "GITLAB_SHELL_VERSION": "13.2.0",
+    "GITLAB_WORKHORSE_VERSION": "8.31.2"
+  }
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/default.nix b/nixpkgs/pkgs/applications/version-management/gitlab/default.nix
new file mode 100644
index 000000000000..76127681bbd9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/default.nix
@@ -0,0 +1,191 @@
+{ stdenv, lib, fetchurl, fetchFromGitLab, bundlerEnv
+, ruby, tzdata, git, nettools, nixosTests, nodejs
+, gitlabEnterprise ? false, callPackage, yarn
+, fixup_yarn_lock, replace
+}:
+
+let
+  data = (builtins.fromJSON (builtins.readFile ./data.json));
+
+  version = data.version;
+  src = fetchFromGitLab {
+    owner = data.owner;
+    repo = data.repo;
+    rev = data.rev;
+    sha256 = data.repo_hash;
+  };
+
+  rubyEnv = bundlerEnv rec {
+    name = "gitlab-env-${version}";
+    inherit ruby;
+    gemdir = ./rubyEnv;
+    gemset =
+      let x = import (gemdir + "/gemset.nix");
+      in x // {
+        # grpc expects the AR environment variable to contain `ar rpc`. See the
+        # discussion in nixpkgs #63056.
+        grpc = x.grpc // {
+          patches = [ ./fix-grpc-ar.patch ];
+          dontBuild = false;
+        };
+      };
+    groups = [
+      "default" "unicorn" "ed25519" "metrics" "development" "puma" "test" "kerberos"
+    ];
+    # N.B. omniauth_oauth2_generic and apollo_upload_server both provide a
+    # `console` executable.
+    ignoreCollisions = true;
+  };
+
+  yarnOfflineCache = (callPackage ./yarnPkgs.nix {}).offline_cache;
+
+  assets = stdenv.mkDerivation {
+    pname = "gitlab-assets";
+    inherit version src;
+
+    nativeBuildInputs = [ rubyEnv.wrappedRuby rubyEnv.bundler nodejs yarn git ];
+
+    # Since version 12.6.0, the rake tasks need the location of git,
+    # so we have to apply the location patches here too.
+    patches = [ ./remove-hardcoded-locations.patch ];
+    # One of the patches uses this variable - if it's unset, execution
+    # of rake tasks fails.
+    GITLAB_LOG_PATH = "log";
+    FOSS_ONLY = !gitlabEnterprise;
+
+    configurePhase = ''
+      runHook preConfigure
+
+      # Some rake tasks try to run yarn automatically, which won't work
+      rm lib/tasks/yarn.rake
+
+      # The rake tasks won't run without a basic configuration in place
+      mv config/database.yml.env config/database.yml
+      mv config/gitlab.yml.example config/gitlab.yml
+
+      # Yarn and bundler wants a real home directory to write cache, config, etc to
+      export HOME=$NIX_BUILD_TOP/fake_home
+
+      # Make yarn install packages from our offline cache, not the registry
+      yarn config --offline set yarn-offline-mirror ${yarnOfflineCache}
+
+      # Fixup "resolved"-entries in yarn.lock to match our offline cache
+      ${fixup_yarn_lock}/bin/fixup_yarn_lock yarn.lock
+
+      # fixup_yarn_lock currently doesn't correctly fix the dagre-d3
+      # url, so we have to do it manually
+      ${replace}/bin/replace-literal -f -e '"https://codeload.github.com/dagrejs/dagre-d3/tar.gz/e1a00e5cb518f5d2304a35647e024f31d178e55b"' \
+                                           '"https___codeload.github.com_dagrejs_dagre_d3_tar.gz_e1a00e5cb518f5d2304a35647e024f31d178e55b"' yarn.lock
+
+      yarn install --offline --frozen-lockfile --ignore-scripts --no-progress --non-interactive
+
+      patchShebangs node_modules/
+
+      runHook postConfigure
+    '';
+
+    buildPhase = ''
+      runHook preBuild
+
+      bundle exec rake gettext:po_to_json RAILS_ENV=production NODE_ENV=production
+      bundle exec rake rake:assets:precompile RAILS_ENV=production NODE_ENV=production
+      bundle exec rake webpack:compile RAILS_ENV=production NODE_ENV=production NODE_OPTIONS="--max_old_space_size=3072"
+      bundle exec rake gitlab:assets:fix_urls RAILS_ENV=production NODE_ENV=production
+
+      runHook postBuild
+    '';
+
+    installPhase = ''
+      runHook preInstall
+
+      mv public/assets $out
+
+      runHook postInstall
+    '';
+  };
+in
+stdenv.mkDerivation {
+  name = "gitlab${lib.optionalString gitlabEnterprise "-ee"}-${version}";
+
+  inherit src;
+
+  buildInputs = [
+    rubyEnv rubyEnv.wrappedRuby rubyEnv.bundler tzdata git nettools
+  ];
+
+  patches = [ ./remove-hardcoded-locations.patch ];
+
+  postPatch = ''
+    ${lib.optionalString (!gitlabEnterprise) ''
+      # Remove all proprietary components
+      rm -rf ee
+    ''}
+
+    # For reasons I don't understand "bundle exec" ignores the
+    # RAILS_ENV causing tests to be executed that fail because we're
+    # not installing development and test gems above. Deleting the
+    # tests works though.
+    rm lib/tasks/test.rake
+
+    rm config/initializers/gitlab_shell_secret_token.rb
+
+    sed -i '/ask_to_continue/d' lib/tasks/gitlab/two_factor.rake
+    sed -ri -e '/log_level/a config.logger = Logger.new(STDERR)' config/environments/production.rb
+
+    # Always require lib-files and application.rb through their store
+    # path, not their relative state directory path. This gets rid of
+    # warnings and means we don't have to link back to lib from the
+    # state directory.
+    ${replace}/bin/replace-literal -f -r -e '../lib' "$out/share/gitlab/lib" config
+    ${replace}/bin/replace-literal -f -r -e "require_relative 'application'" "require_relative '$out/share/gitlab/config/application'" config
+  '';
+
+  buildPhase = ''
+    rm -f config/secrets.yml
+    mv config config.dist
+    rm -r tmp
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share
+    cp -r . $out/share/gitlab
+    ln -sf ${assets} $out/share/gitlab/public/assets
+    rm -rf $out/share/gitlab/log
+    ln -sf /run/gitlab/log $out/share/gitlab/log
+    ln -sf /run/gitlab/uploads $out/share/gitlab/public/uploads
+    ln -sf /run/gitlab/config $out/share/gitlab/config
+    ln -sf /run/gitlab/tmp $out/share/gitlab/tmp
+
+    # rake tasks to mitigate CVE-2017-0882
+    # see https://about.gitlab.com/2017/03/20/gitlab-8-dot-17-dot-4-security-release/
+    cp ${./reset_token.rake} $out/share/gitlab/lib/tasks/reset_token.rake
+  '';
+
+  passthru = {
+    inherit rubyEnv assets;
+    ruby = rubyEnv.wrappedRuby;
+    GITALY_SERVER_VERSION = data.passthru.GITALY_SERVER_VERSION;
+    GITLAB_PAGES_VERSION = data.passthru.GITLAB_PAGES_VERSION;
+    GITLAB_SHELL_VERSION = data.passthru.GITLAB_SHELL_VERSION;
+    GITLAB_WORKHORSE_VERSION = data.passthru.GITLAB_WORKHORSE_VERSION;
+    tests = {
+      nixos-test-passes = nixosTests.gitlab;
+    };
+  };
+
+  meta = with lib; {
+    homepage = "http://www.gitlab.com/";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ fpletz globin krav talyz ];
+  } // (if gitlabEnterprise then
+    {
+      license = licenses.unfreeRedistributable; # https://gitlab.com/gitlab-org/gitlab-ee/raw/master/LICENSE
+      description = "GitLab Enterprise Edition";
+    }
+  else
+    {
+      license = licenses.mit;
+      description = "GitLab Community Edition";
+      longDescription = "GitLab Community Edition (CE) is an open source end-to-end software development platform with built-in version control, issue tracking, code review, CI/CD, and more. Self-host GitLab CE on your own servers, in a container, or on a cloud provider.";
+    });
+}
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/fix-grpc-ar.patch b/nixpkgs/pkgs/applications/version-management/gitlab/fix-grpc-ar.patch
new file mode 100644
index 000000000000..9b95e668e045
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/fix-grpc-ar.patch
@@ -0,0 +1,10 @@
+--- a/src/ruby/ext/grpc/extconf.rb
++++ b/src/ruby/ext/grpc/extconf.rb
+@@ -27,6 +27,7 @@ ENV['MACOSX_DEPLOYMENT_TARGET'] = '10.7'
+ if ENV['AR'].nil? || ENV['AR'].size == 0
+     ENV['AR'] = RbConfig::CONFIG['AR'] + ' rcs'
+ end
++ENV['AR'] = ENV['AR'] + ' rcs'
+ if ENV['CC'].nil? || ENV['CC'].size == 0
+     ENV['CC'] = RbConfig::CONFIG['CC']
+ end
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/gitaly/Gemfile b/nixpkgs/pkgs/applications/version-management/gitlab/gitaly/Gemfile
new file mode 100644
index 000000000000..8a35c8c3b475
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/gitaly/Gemfile
@@ -0,0 +1,42 @@
+source 'https://rubygems.org'
+
+# Require bundler >= 1.16.5 to avoid this bug: https://github.com/bundler/bundler/issues/6537
+gem 'bundler', '>= 1.17.3'
+
+gem 'rugged', '~> 0.28'
+gem 'github-linguist', '~> 7.9', require: 'linguist'
+gem 'gitlab-markup', '~> 1.7.1'
+gem 'activesupport', '~> 6.0.3.1'
+gem 'rdoc', '~> 6.0'
+gem 'gitlab-gollum-lib', '~> 4.2.7.9', require: false
+gem 'gitlab-gollum-rugged_adapter', '~> 0.4.4.2', require: false
+gem 'grpc', '~> 1.24.0'
+gem 'sentry-raven', '~> 2.9.0', require: false
+gem 'faraday', '~> 0.12'
+gem 'rbtrace', require: false
+
+# Labkit provides observability functionality
+gem 'gitlab-labkit', '~> 0.12.0'
+
+# Detects the open source license the repository includes
+# This version needs to be in sync with GitLab CE/EE
+gem 'licensee', '~> 8.9.0'
+
+gem 'google-protobuf', '~> 3.8.0'
+
+group :development, :test do
+  gem 'rubocop', '~> 0.69', require: false
+  gem 'rspec', require: false
+  gem 'rspec-parameterized', require: false
+  gem 'timecop', require: false
+  gem 'factory_bot', require: false
+  gem 'pry', '~> 0.12.2', require: false
+
+  gem 'grpc-tools', '= 1.0.1'
+
+  # gitlab-shell spec gems
+  gem 'listen', '~> 0.5.0'
+  gem 'simplecov', '~> 0.17.1', require: false
+  gem 'vcr', '~> 4.0.0'
+  gem 'webmock', '~> 3.4.0'
+end
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/gitaly/Gemfile.lock b/nixpkgs/pkgs/applications/version-management/gitlab/gitaly/Gemfile.lock
new file mode 100644
index 000000000000..f409ebb9b414
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/gitaly/Gemfile.lock
@@ -0,0 +1,239 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    abstract_type (0.0.7)
+    actionpack (6.0.3.1)
+      actionview (= 6.0.3.1)
+      activesupport (= 6.0.3.1)
+      rack (~> 2.0, >= 2.0.8)
+      rack-test (>= 0.6.3)
+      rails-dom-testing (~> 2.0)
+      rails-html-sanitizer (~> 1.0, >= 1.2.0)
+    actionview (6.0.3.1)
+      activesupport (= 6.0.3.1)
+      builder (~> 3.1)
+      erubi (~> 1.4)
+      rails-dom-testing (~> 2.0)
+      rails-html-sanitizer (~> 1.1, >= 1.2.0)
+    activesupport (6.0.3.1)
+      concurrent-ruby (~> 1.0, >= 1.0.2)
+      i18n (>= 0.7, < 2)
+      minitest (~> 5.1)
+      tzinfo (~> 1.1)
+      zeitwerk (~> 2.2, >= 2.2.2)
+    adamantium (0.2.0)
+      ice_nine (~> 0.11.0)
+      memoizable (~> 0.4.0)
+    addressable (2.6.0)
+      public_suffix (>= 2.0.2, < 4.0)
+    ast (2.4.0)
+    binding_ninja (0.2.3)
+    builder (3.2.4)
+    charlock_holmes (0.7.6)
+    coderay (1.1.2)
+    concord (0.1.5)
+      adamantium (~> 0.2.0)
+      equalizer (~> 0.0.9)
+    concurrent-ruby (1.1.6)
+    crack (0.4.3)
+      safe_yaml (~> 1.0.0)
+    crass (1.0.6)
+    diff-lcs (1.3)
+    docile (1.3.2)
+    equalizer (0.0.11)
+    erubi (1.9.0)
+    escape_utils (1.2.1)
+    factory_bot (5.0.2)
+      activesupport (>= 4.2.0)
+    faraday (0.15.4)
+      multipart-post (>= 1.2, < 3)
+    ffi (1.12.2)
+    gemojione (3.3.0)
+      json
+    github-linguist (7.9.0)
+      charlock_holmes (~> 0.7.6)
+      escape_utils (~> 1.2.0)
+      mini_mime (~> 1.0)
+      rugged (>= 0.25.1)
+    github-markup (1.7.0)
+    gitlab-gollum-lib (4.2.7.9)
+      gemojione (~> 3.2)
+      github-markup (~> 1.6)
+      gitlab-gollum-rugged_adapter (~> 0.4.4.2)
+      nokogiri (>= 1.6.1, < 2.0)
+      rouge (~> 3.1)
+      sanitize (~> 4.6.4)
+      stringex (~> 2.6)
+    gitlab-gollum-rugged_adapter (0.4.4.2)
+      mime-types (>= 1.15)
+      rugged (~> 0.25)
+    gitlab-labkit (0.12.0)
+      actionpack (>= 5.0.0, < 6.1.0)
+      activesupport (>= 5.0.0, < 6.1.0)
+      grpc (~> 1.19)
+      jaeger-client (~> 0.10)
+      opentracing (~> 0.4)
+      redis (> 3.0.0, < 5.0.0)
+    gitlab-markup (1.7.1)
+    google-protobuf (3.8.0)
+    googleapis-common-protos-types (1.0.4)
+      google-protobuf (~> 3.0)
+    grpc (1.24.0)
+      google-protobuf (~> 3.8)
+      googleapis-common-protos-types (~> 1.0)
+    grpc-tools (1.0.1)
+    hashdiff (0.3.9)
+    i18n (1.8.2)
+      concurrent-ruby (~> 1.0)
+    ice_nine (0.11.2)
+    jaeger-client (0.10.0)
+      opentracing (~> 0.3)
+      thrift
+    jaro_winkler (1.5.2)
+    json (2.2.0)
+    licensee (8.9.2)
+      rugged (~> 0.24)
+    listen (0.5.3)
+    loofah (2.5.0)
+      crass (~> 1.0.2)
+      nokogiri (>= 1.5.9)
+    memoizable (0.4.2)
+      thread_safe (~> 0.3, >= 0.3.1)
+    method_source (0.9.2)
+    mime-types (3.2.2)
+      mime-types-data (~> 3.2015)
+    mime-types-data (3.2019.0331)
+    mini_mime (1.0.2)
+    mini_portile2 (2.4.0)
+    minitest (5.14.0)
+    msgpack (1.3.1)
+    multipart-post (2.0.0)
+    nokogiri (1.10.9)
+      mini_portile2 (~> 2.4.0)
+    nokogumbo (1.5.0)
+      nokogiri
+    opentracing (0.5.0)
+    optimist (3.0.0)
+    parallel (1.17.0)
+    parser (2.7.0.5)
+      ast (~> 2.4.0)
+    proc_to_ast (0.1.0)
+      coderay
+      parser
+      unparser
+    procto (0.0.3)
+    pry (0.12.2)
+      coderay (~> 1.1.0)
+      method_source (~> 0.9.0)
+    public_suffix (3.0.3)
+    rack (2.1.2)
+    rack-test (1.1.0)
+      rack (>= 1.0, < 3)
+    rails-dom-testing (2.0.3)
+      activesupport (>= 4.2.0)
+      nokogiri (>= 1.6)
+    rails-html-sanitizer (1.3.0)
+      loofah (~> 2.3)
+    rainbow (3.0.0)
+    rbtrace (0.4.11)
+      ffi (>= 1.0.6)
+      msgpack (>= 0.4.3)
+      optimist (>= 3.0.0)
+    rdoc (6.2.0)
+    redis (4.1.3)
+    rouge (3.19.0)
+    rspec (3.8.0)
+      rspec-core (~> 3.8.0)
+      rspec-expectations (~> 3.8.0)
+      rspec-mocks (~> 3.8.0)
+    rspec-core (3.8.0)
+      rspec-support (~> 3.8.0)
+    rspec-expectations (3.8.3)
+      diff-lcs (>= 1.2.0, < 2.0)
+      rspec-support (~> 3.8.0)
+    rspec-mocks (3.8.0)
+      diff-lcs (>= 1.2.0, < 2.0)
+      rspec-support (~> 3.8.0)
+    rspec-parameterized (0.4.2)
+      binding_ninja (>= 0.2.3)
+      parser
+      proc_to_ast
+      rspec (>= 2.13, < 4)
+      unparser
+    rspec-support (3.8.0)
+    rubocop (0.69.0)
+      jaro_winkler (~> 1.5.1)
+      parallel (~> 1.10)
+      parser (>= 2.6)
+      rainbow (>= 2.2.2, < 4.0)
+      ruby-progressbar (~> 1.7)
+      unicode-display_width (>= 1.4.0, < 1.7)
+    ruby-progressbar (1.10.0)
+    rugged (0.28.4.1)
+    safe_yaml (1.0.5)
+    sanitize (4.6.6)
+      crass (~> 1.0.2)
+      nokogiri (>= 1.4.4)
+      nokogumbo (~> 1.4)
+    sentry-raven (2.9.0)
+      faraday (>= 0.7.6, < 1.0)
+    simplecov (0.17.1)
+      docile (~> 1.1)
+      json (>= 1.8, < 3)
+      simplecov-html (~> 0.10.0)
+    simplecov-html (0.10.2)
+    stringex (2.8.5)
+    thread_safe (0.3.6)
+    thrift (0.11.0.0)
+    timecop (0.9.1)
+    tzinfo (1.2.7)
+      thread_safe (~> 0.1)
+    unicode-display_width (1.6.0)
+    unparser (0.4.7)
+      abstract_type (~> 0.0.7)
+      adamantium (~> 0.2.0)
+      concord (~> 0.1.5)
+      diff-lcs (~> 1.3)
+      equalizer (~> 0.0.9)
+      parser (>= 2.6.5)
+      procto (~> 0.0.2)
+    vcr (4.0.0)
+    webmock (3.4.2)
+      addressable (>= 2.3.6)
+      crack (>= 0.3.2)
+      hashdiff
+    zeitwerk (2.3.0)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  activesupport (~> 6.0.3.1)
+  bundler (>= 1.17.3)
+  factory_bot
+  faraday (~> 0.12)
+  github-linguist (~> 7.9)
+  gitlab-gollum-lib (~> 4.2.7.9)
+  gitlab-gollum-rugged_adapter (~> 0.4.4.2)
+  gitlab-labkit (~> 0.12.0)
+  gitlab-markup (~> 1.7.1)
+  google-protobuf (~> 3.8.0)
+  grpc (~> 1.24.0)
+  grpc-tools (= 1.0.1)
+  licensee (~> 8.9.0)
+  listen (~> 0.5.0)
+  pry (~> 0.12.2)
+  rbtrace
+  rdoc (~> 6.0)
+  rspec
+  rspec-parameterized
+  rubocop (~> 0.69)
+  rugged (~> 0.28)
+  sentry-raven (~> 2.9.0)
+  simplecov (~> 0.17.1)
+  timecop
+  vcr (~> 4.0.0)
+  webmock (~> 3.4.0)
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/gitaly/default.nix b/nixpkgs/pkgs/applications/version-management/gitlab/gitaly/default.nix
new file mode 100644
index 000000000000..8f51b33fbd4f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/gitaly/default.nix
@@ -0,0 +1,63 @@
+{ stdenv, fetchFromGitLab, fetchFromGitHub, buildGoPackage, ruby,
+  bundlerEnv, pkgconfig, libgit2_0_27 }:
+
+let
+  rubyEnv = bundlerEnv rec {
+    name = "gitaly-env";
+    inherit ruby;
+    copyGemFiles = true;
+    gemdir = ./.;
+    gemset =
+      let x = import (gemdir + "/gemset.nix");
+      in x // {
+        # grpc expects the AR environment variable to contain `ar rpc`. See the
+        # discussion in nixpkgs #63056.
+        grpc = x.grpc // {
+          patches = [ ../fix-grpc-ar.patch ];
+          dontBuild = false;
+        };
+      };
+  };
+in buildGoPackage rec {
+  version = "13.0.6";
+  pname = "gitaly";
+
+  src = fetchFromGitLab {
+    owner = "gitlab-org";
+    repo = "gitaly";
+    rev = "v${version}";
+    sha256 = "14vp73z9f0p3m1bjykkfzrmw9miyjxiqm79rns477xbm2dbmwa4s";
+  };
+
+  # Fix a check which assumes that hook files are writeable by their
+  # owner.
+  patches = [
+    ./fix-executable-check.patch
+  ];
+
+  goPackagePath = "gitlab.com/gitlab-org/gitaly";
+
+  passthru = {
+    inherit rubyEnv;
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ rubyEnv.wrappedRuby libgit2_0_27 ];
+  goDeps = ./deps.nix;
+  preBuild = "rm -r go/src/gitlab.com/gitlab-org/labkit/vendor";
+
+  postInstall = ''
+    mkdir -p $ruby
+    cp -rv $src/ruby/{bin,lib,proto,git-hooks,gitlab-shell} $ruby
+  '';
+
+  outputs = [ "out" "ruby" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://gitlab.com/gitlab-org/gitaly";
+    description = "A Git RPC service for handling all the git calls made by GitLab";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ roblabla globin fpletz talyz ];
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/gitaly/deps.nix b/nixpkgs/pkgs/applications/version-management/gitlab/gitaly/deps.nix
new file mode 100644
index 000000000000..221ce16163d8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/gitaly/deps.nix
@@ -0,0 +1,2100 @@
+# file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix)
+[
+  {
+    goPackagePath = "bou.ke/monkey";
+    fetch = {
+      type = "git";
+      url = "https://github.com/bouk/monkey";
+      rev = "v1.0.1";
+      sha256 = "050y07pwx5zk7fchp0lhf35w417sml7lxkkzly8f932fy25rydz5";
+    };
+  }
+  {
+    goPackagePath = "cloud.google.com/go";
+    fetch = {
+      type = "git";
+      url = "https://code.googlesource.com/gocloud";
+      rev = "v0.50.0";
+      sha256 = "0pbz5migljd5whxh6z1w79cwx93n85mcs3x1bckl27yzaa4lvqsl";
+    };
+  }
+  {
+    goPackagePath = "dmitri.shuralyov.com/gpu/mtl";
+    fetch = {
+      type = "git";
+      url = "https://dmitri.shuralyov.com/gpu/mtl";
+      rev = "666a987793e9";
+      sha256 = "1isd03hgiwcf2ld1rlp0plrnfz7r4i7c5q4kb6hkcd22axnmrv0z";
+    };
+  }
+  {
+    goPackagePath = "github.com/AndreasBriese/bbloom";
+    fetch = {
+      type = "git";
+      url = "https://github.com/AndreasBriese/bbloom";
+      rev = "e2d15f34fcf9";
+      sha256 = "05kkrsmpragy69bj6s80pxlm3pbwxrkkx7wgk0xigs6y2n6ylpds";
+    };
+  }
+  {
+    goPackagePath = "github.com/BurntSushi/toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/BurntSushi/toml";
+      rev = "v0.3.1";
+      sha256 = "1fjdwwfzyzllgiwydknf1pwjvy49qxfsczqx5gz3y0izs7as99j6";
+    };
+  }
+  {
+    goPackagePath = "github.com/BurntSushi/xgb";
+    fetch = {
+      type = "git";
+      url = "https://github.com/BurntSushi/xgb";
+      rev = "27f122750802";
+      sha256 = "18lp2x8f5bljvlz0r7xn744f0c9rywjsb9ifiszqqdcpwhsa0kvj";
+    };
+  }
+  {
+    goPackagePath = "github.com/CloudyKit/fastprinter";
+    fetch = {
+      type = "git";
+      url = "https://github.com/CloudyKit/fastprinter";
+      rev = "74b38d55f37a";
+      sha256 = "07wkq3503j7sd5knsgp3lwzfdwm6sj7a3l6i71i52yb3fd8md235";
+    };
+  }
+  {
+    goPackagePath = "github.com/Joker/hpp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Joker/hpp";
+      rev = "v1.0.0";
+      sha256 = "1xnqkjkmqdj48w80qa74rwcmgar8dcilpkcrcn1f53djk45k1gq2";
+    };
+  }
+  {
+    goPackagePath = "github.com/Joker/jade";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Joker/jade";
+      rev = "d475f43051e7";
+      sha256 = "0yigzvxp5qd05pai0yimzkpl2m23358a2fqqs585psrdmwsic2pn";
+    };
+  }
+  {
+    goPackagePath = "github.com/Shopify/goreferrer";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Shopify/goreferrer";
+      rev = "ec9c9a553398";
+      sha256 = "0d740psj8czks1hl0nr6nlrwfbwq3nc51jj2p91d1wyhhmgn6jmn";
+    };
+  }
+  {
+    goPackagePath = "github.com/ajg/form";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ajg/form";
+      rev = "v1.5.1";
+      sha256 = "1d6sxzzf9yycdf8jm5877y0khmhkmhxfw3sc4xpdcsrdlc7gqh5a";
+    };
+  }
+  {
+    goPackagePath = "github.com/alecthomas/template";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/template";
+      rev = "a0175ee3bccc";
+      sha256 = "0qjgvvh26vk1cyfq9fadyhfgdj36f1iapbmr5xp6zqipldz8ffxj";
+    };
+  }
+  {
+    goPackagePath = "github.com/alecthomas/units";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/units";
+      rev = "2efee857e7cf";
+      sha256 = "1j65b91qb9sbrml9cpabfrcf07wmgzzghrl7809hjjhrmbzri5bl";
+    };
+  }
+  {
+    goPackagePath = "github.com/armon/consul-api";
+    fetch = {
+      type = "git";
+      url = "https://github.com/armon/consul-api";
+      rev = "eb2c6b5be1b6";
+      sha256 = "1j6fdr1sg36qy4n4xjl7brq739fpm5npq98cmvklzjc9qrx98nk9";
+    };
+  }
+  {
+    goPackagePath = "github.com/armon/go-radix";
+    fetch = {
+      type = "git";
+      url = "https://github.com/armon/go-radix";
+      rev = "7fddfc383310";
+      sha256 = "0y8chspn14n9xpsfb9gxnnf819rfpriaz64v81p7873a42kkhxb4";
+    };
+  }
+  {
+    goPackagePath = "github.com/beorn7/perks";
+    fetch = {
+      type = "git";
+      url = "https://github.com/beorn7/perks";
+      rev = "v1.0.1";
+      sha256 = "17n4yygjxa6p499dj3yaqzfww2g7528165cl13haj97hlx94dgl7";
+    };
+  }
+  {
+    goPackagePath = "github.com/bgentry/speakeasy";
+    fetch = {
+      type = "git";
+      url = "https://github.com/bgentry/speakeasy";
+      rev = "v0.1.0";
+      sha256 = "02dfrj0wyphd3db9zn2mixqxwiz1ivnyc5xc7gkz58l5l27nzp8s";
+    };
+  }
+  {
+    goPackagePath = "github.com/certifi/gocertifi";
+    fetch = {
+      type = "git";
+      url = "https://github.com/certifi/gocertifi";
+      rev = "ee1a9a0726d2";
+      sha256 = "08l6lqaw83pva6fa0aafmhmy1mhb145av21772zfh3ij809a37i4";
+    };
+  }
+  {
+    goPackagePath = "github.com/chzyer/logex";
+    fetch = {
+      type = "git";
+      url = "https://github.com/chzyer/logex";
+      rev = "v1.1.10";
+      sha256 = "08pbjj3wx9acavlwyr055isa8a5hnmllgdv5k6ra60l5y1brmlq4";
+    };
+  }
+  {
+    goPackagePath = "github.com/chzyer/readline";
+    fetch = {
+      type = "git";
+      url = "https://github.com/chzyer/readline";
+      rev = "2972be24d48e";
+      sha256 = "104q8dazj8yf6b089jjr82fy9h1g80zyyzvp3g8b44a7d8ngjj6r";
+    };
+  }
+  {
+    goPackagePath = "github.com/chzyer/test";
+    fetch = {
+      type = "git";
+      url = "https://github.com/chzyer/test";
+      rev = "a1ea475d72b1";
+      sha256 = "0rns2aqk22i9xsgyap0pq8wi4cfaxsri4d9q6xxhhyma8jjsnj2k";
+    };
+  }
+  {
+    goPackagePath = "github.com/client9/misspell";
+    fetch = {
+      type = "git";
+      url = "https://github.com/client9/misspell";
+      rev = "v0.3.4";
+      sha256 = "1vwf33wsc4la25zk9nylpbp9px3svlmldkm0bha4hp56jws4q9cs";
+    };
+  }
+  {
+    goPackagePath = "github.com/client9/reopen";
+    fetch = {
+      type = "git";
+      url = "https://github.com/client9/reopen";
+      rev = "v1.0.0";
+      sha256 = "0f0dpdbmvk7w518c6zjhlmp65y55vvx47x4lq9pgzvcbsvjsf18s";
+    };
+  }
+  {
+    goPackagePath = "github.com/cloudflare/tableflip";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cloudflare/tableflip";
+      rev = "4baec9811f2b";
+      sha256 = "095xb5gfz7dglljp91nh68dnscddvlf7q5ivvz972fq86r3ypq6q";
+    };
+  }
+  {
+    goPackagePath = "github.com/codahale/hdrhistogram";
+    fetch = {
+      type = "git";
+      url = "https://github.com/codahale/hdrhistogram";
+      rev = "3a0bb77429bd";
+      sha256 = "1zampgfjbxy192cbwdi7g86l1idxaam96d834wncnpfdwgh5kl57";
+    };
+  }
+  {
+    goPackagePath = "github.com/codegangsta/inject";
+    fetch = {
+      type = "git";
+      url = "https://github.com/codegangsta/inject";
+      rev = "33e0aa1cb7c0";
+      sha256 = "1jqakr3z9l60qhcgrdzsb6rlk8ikcamisw0g2ndmrf27s0ibfcaj";
+    };
+  }
+  {
+    goPackagePath = "github.com/coreos/etcd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/coreos/etcd";
+      rev = "v3.3.10";
+      sha256 = "1x2ii1hj8jraba8rbxz6dmc03y3sjxdnzipdvg6fywnlq1f3l3wl";
+    };
+  }
+  {
+    goPackagePath = "github.com/coreos/go-etcd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/coreos/go-etcd";
+      rev = "v2.0.0";
+      sha256 = "1xb34hzaa1lkbq5vkzy9vcz6gqwj7hp6cdbvyack2bf28dwn33jj";
+    };
+  }
+  {
+    goPackagePath = "github.com/coreos/go-semver";
+    fetch = {
+      type = "git";
+      url = "https://github.com/coreos/go-semver";
+      rev = "v0.2.0";
+      sha256 = "1gghi5bnqj50hfxhqc1cxmynqmh2yk9ii7ab9gsm75y5cp94ymk0";
+    };
+  }
+  {
+    goPackagePath = "github.com/cpuguy83/go-md2man";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cpuguy83/go-md2man";
+      rev = "v1.0.10";
+      sha256 = "1bqkf2bvy1dns9zd24k81mh2p1zxsx2nhq5cj8dz2vgkv1xkh60i";
+    };
+  }
+  {
+    goPackagePath = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev = "v1.1.1";
+      sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y";
+    };
+  }
+  {
+    goPackagePath = "github.com/denisenkom/go-mssqldb";
+    fetch = {
+      type = "git";
+      url = "https://github.com/denisenkom/go-mssqldb";
+      rev = "cfbb681360f0";
+      sha256 = "0mr4y9vppiyl7mvad74k3zk4sc1jdkmc0lcd6lhm70iziw2xpncs";
+    };
+  }
+  {
+    goPackagePath = "github.com/dgraph-io/badger";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dgraph-io/badger";
+      rev = "v1.6.0";
+      sha256 = "1vzibjqhb10q6s2chbzlwndij2d9ybjnq7h28hx4akr119avd0d5";
+    };
+  }
+  {
+    goPackagePath = "github.com/dgrijalva/jwt-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dgrijalva/jwt-go";
+      rev = "v3.2.0";
+      sha256 = "08m27vlms74pfy5z79w67f9lk9zkx6a9jd68k3c4msxy75ry36mp";
+    };
+  }
+  {
+    goPackagePath = "github.com/dgryski/go-farm";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dgryski/go-farm";
+      rev = "6a90982ecee2";
+      sha256 = "1x3l4jgps0v1bjvd446kj4dp0ckswjckxgrng9afm275ixnf83ix";
+    };
+  }
+  {
+    goPackagePath = "github.com/dustin/go-humanize";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dustin/go-humanize";
+      rev = "v1.0.0";
+      sha256 = "1kqf1kavdyvjk7f8kx62pnm7fbypn9z1vbf8v2qdh3y7z7a0cbl3";
+    };
+  }
+  {
+    goPackagePath = "github.com/eknkc/amber";
+    fetch = {
+      type = "git";
+      url = "https://github.com/eknkc/amber";
+      rev = "cdade1c07385";
+      sha256 = "152w97yckwncgw7lwjvgd8d00wy6y0nxzlvx72kl7nqqxs9vhxd9";
+    };
+  }
+  {
+    goPackagePath = "github.com/etcd-io/bbolt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/etcd-io/bbolt";
+      rev = "v1.3.3";
+      sha256 = "0dn0zngks9xiz0rrrb3911f73ghl64z84jsmzai2yfmzqr7cdkqc";
+    };
+  }
+  {
+    goPackagePath = "github.com/fasthttp-contrib/websocket";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fasthttp-contrib/websocket";
+      rev = "1f3b11f56072";
+      sha256 = "1yacmwmil625p0pzj800h9dnmiab6bjwfmi48p9fcrvy2yyv9b97";
+    };
+  }
+  {
+    goPackagePath = "github.com/fatih/color";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fatih/color";
+      rev = "v1.7.0";
+      sha256 = "0v8msvg38r8d1iiq2i5r4xyfx0invhc941kjrsg5gzwvagv55inv";
+    };
+  }
+  {
+    goPackagePath = "github.com/fatih/structs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fatih/structs";
+      rev = "v1.1.0";
+      sha256 = "1wrhb8wp8zpzggl61lapb627lw8yv281abvr6vqakmf569nswa9q";
+    };
+  }
+  {
+    goPackagePath = "github.com/flosch/pongo2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/flosch/pongo2";
+      rev = "bbf5a6c351f4";
+      sha256 = "0yqh58phznnxakm64w82gawrpndb0r85vsd1s7h244qqrq7w4avq";
+    };
+  }
+  {
+    goPackagePath = "github.com/fsnotify/fsnotify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev = "v1.4.7";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath = "github.com/gavv/httpexpect";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gavv/httpexpect";
+      rev = "v2.0.0";
+      sha256 = "0dqb7lsinciz594q6jg59hrvk4g4awbs2ybsr580j22j2xag53vs";
+    };
+  }
+  {
+    goPackagePath = "github.com/getsentry/raven-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/getsentry/raven-go";
+      rev = "v0.1.2";
+      sha256 = "1dl80kar4lzdcfl3w6jssi1ld6bv0rmx6sp6bz6rzysfr9ilm02z";
+    };
+  }
+  {
+    goPackagePath = "github.com/getsentry/sentry-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/getsentry/sentry-go";
+      rev = "v0.5.1";
+      sha256 = "1kfn0gcb4c6amhagv04ydpl6p9cqw7f0lxas688a0rf89iwdzz89";
+    };
+  }
+  {
+    goPackagePath = "github.com/gin-contrib/sse";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gin-contrib/sse";
+      rev = "5545eab6dad3";
+      sha256 = "0jhcvi66rn7c1wg3rf7q7sylrvlk7c40yk79c5lypnz1dpsdcrb5";
+    };
+  }
+  {
+    goPackagePath = "github.com/gin-gonic/gin";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gin-gonic/gin";
+      rev = "v1.4.0";
+      sha256 = "19nxip48p2s8l7p1p7wpd5li2fcngi4c58rgcg71izdmsmj2iw1d";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-check/check";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-check/check";
+      rev = "788fd7840127";
+      sha256 = "0v3bim0j375z81zrpr5qv42knqs0y2qv2vkjiqi5axvb78slki1a";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-errors/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-errors/errors";
+      rev = "v1.0.1";
+      sha256 = "0rznpknk19rxkr7li6dqs52c26pjazp69lh493l4ny4sxn5922lp";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-gl/glfw";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-gl/glfw";
+      rev = "12ad95a8df72";
+      sha256 = "0ahw4a1lk7wqn6m0sjngsv2zc08kxxj259ai6g4kf11lmidszm9s";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-kit/kit";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-kit/kit";
+      rev = "v0.8.0";
+      sha256 = "1rcywbc2pvab06qyf8pc2rdfjv7r6kxdv2v4wnpqnjhz225wqvc0";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-logfmt/logfmt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-logfmt/logfmt";
+      rev = "v0.3.0";
+      sha256 = "1gkgh3k5w1xwb2qbjq52p6azq3h1c1rr6pfwjlwj1zrijpzn2xb9";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-martini/martini";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-martini/martini";
+      rev = "22fa46961aab";
+      sha256 = "01ip3mwbnm5isq120ww73yrvbcn6n5944prhhbyf2ggyf6g46ylh";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-sql-driver/mysql";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-sql-driver/mysql";
+      rev = "v1.4.1";
+      sha256 = "1fvsvwc1v2i0gqn01mynvi1shp5xm0xaym6xng09fcbqb56lbjx1";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-stack/stack";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-stack/stack";
+      rev = "v1.8.0";
+      sha256 = "0wk25751ryyvxclyp8jdk5c3ar0cmfr8lrjb66qbg4808x66b96v";
+    };
+  }
+  {
+    goPackagePath = "github.com/gobuffalo/envy";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gobuffalo/envy";
+      rev = "v1.7.1";
+      sha256 = "1s1f05cgpkhgcs2qfh04ixxm1ggk8ms3fpwsxhb0mx7nfrcm106d";
+    };
+  }
+  {
+    goPackagePath = "github.com/gobuffalo/logger";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gobuffalo/logger";
+      rev = "v1.0.1";
+      sha256 = "1w6rkz0xwq3xj3giwzjkfnai69a0cgg09zx01z7s8r5z450cish3";
+    };
+  }
+  {
+    goPackagePath = "github.com/gobuffalo/packd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gobuffalo/packd";
+      rev = "v0.3.0";
+      sha256 = "02sg33jkp219g0z3yf2fn9xm2zds1qxzdznx5mh8vffh4njjg1x8";
+    };
+  }
+  {
+    goPackagePath = "github.com/gobuffalo/packr";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gobuffalo/packr";
+      rev = "v2.7.1";
+      sha256 = "0m5kl2fq8gf1v4vllgag2xl8fd382sdgqrcdb8f5alsnrdn08kb9";
+    };
+  }
+  {
+    goPackagePath = "github.com/gobwas/httphead";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gobwas/httphead";
+      rev = "2c6c146eadee";
+      sha256 = "0j7nlrf79cafl8ap69ri2c7v3psr2y133cr2wn735z7yn3dz3kss";
+    };
+  }
+  {
+    goPackagePath = "github.com/gobwas/pool";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gobwas/pool";
+      rev = "v0.2.0";
+      sha256 = "1avpa8c75j1y4hs7awazrjjy7w0pjfw80l424ddn5zyizvh7s67i";
+    };
+  }
+  {
+    goPackagePath = "github.com/gobwas/ws";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gobwas/ws";
+      rev = "v1.0.2";
+      sha256 = "070mfcjbfb40bglc9aw9zjvd4jb1hp3l1s12ww6mjlwbjcg0mm9s";
+    };
+  }
+  {
+    goPackagePath = "github.com/gogo/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gogo/protobuf";
+      rev = "v1.1.1";
+      sha256 = "1525pq7r6h3s8dncvq8gxi893p2nq8dxpzvq0nfl5b4p6mq0v1c2";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang-sql/civil";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang-sql/civil";
+      rev = "cb61b32ac6fe";
+      sha256 = "0yadfbvi0w06lg3sxw0daji02jxd3vv2in26yfmwpl4vd4vm9zay";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/glog";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/glog";
+      rev = "23def4e6c14b";
+      sha256 = "0jb2834rw5sykfr937fxi8hxi2zy80sj2bdn9b3jb4b26ksqng30";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/groupcache";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/groupcache";
+      rev = "215e87163ea7";
+      sha256 = "07555csk49ara636bhl2vbzziayls3qks8964z0q29g065zliy9j";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/lint";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/lint";
+      rev = "06c8688daad7";
+      sha256 = "0xi94dwvz50a66bq1hp9fyqkym5mcpdxdb1hrfvicldgjf37lc47";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/mock";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/mock";
+      rev = "v1.3.1";
+      sha256 = "1wnfa8njxdym1qb664dmfnkpm4pmqy22hqjlqpwaaiqhglb5g9d1";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/protobuf";
+      rev = "v1.3.2";
+      sha256 = "1k1wb4zr0qbwgpvz9q5ws9zhlal8hq7dmq62pwxxriksayl6hzym";
+    };
+  }
+  {
+    goPackagePath = "github.com/gomodule/redigo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gomodule/redigo";
+      rev = "574c33c3df38";
+      sha256 = "1qpw8mq9xqj1hmpag1av941swkx39qikahsajyhn34rc2q54f4z6";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/btree";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/btree";
+      rev = "v1.0.0";
+      sha256 = "0ba430m9fbnagacp57krgidsyrgp3ycw5r7dj71brgp5r52g82p6";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/go-cmp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/go-cmp";
+      rev = "v0.4.0";
+      sha256 = "1x5pvl3fb5sbyng7i34431xycnhmx8xx94gq2n19g6p0vz68z2v2";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/go-querystring";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/go-querystring";
+      rev = "v1.0.0";
+      sha256 = "0xl12bqyvmn4xcnf8p9ksj9rmnr7s40pvppsdmy8n9bzw1db0iwz";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/martian";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/martian";
+      rev = "v2.1.0";
+      sha256 = "197hil6vrjk50b9wvwyzf61csid83whsjj6ik8mc9r2lryxlyyrp";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/pprof";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/pprof";
+      rev = "d4f498aebedc";
+      sha256 = "1r4pn70yy5vfl38jx9v8224n7jkhcm5wg28vv48izgznlgv7h024";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/renameio";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/renameio";
+      rev = "v0.1.0";
+      sha256 = "1ki2x5a9nrj17sn092d6n4zr29lfg5ydv4xz5cp58z6cw8ip43jx";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/uuid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/uuid";
+      rev = "v1.1.1";
+      sha256 = "0hfxcf9frkb57k6q0rdkrmnfs78ms21r1qfk9fhlqga2yh5xg8zb";
+    };
+  }
+  {
+    goPackagePath = "github.com/googleapis/gax-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/googleapis/gax-go";
+      rev = "v2.0.5";
+      sha256 = "1lxawwngv6miaqd25s3ba0didfzylbwisd2nz7r4gmbmin6jsjrx";
+    };
+  }
+  {
+    goPackagePath = "github.com/gopherjs/gopherjs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gopherjs/gopherjs";
+      rev = "0766667cb4d1";
+      sha256 = "13pfc9sxiwjky2lm1xb3i3lcisn8p6mgjk2d927l7r92ysph8dmw";
+    };
+  }
+  {
+    goPackagePath = "github.com/gorilla/websocket";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gorilla/websocket";
+      rev = "v1.4.0";
+      sha256 = "00i4vb31nsfkzzk7swvx3i75r2d960js3dri1875vypk3v2s0pzk";
+    };
+  }
+  {
+    goPackagePath = "github.com/grpc-ecosystem/go-grpc-middleware";
+    fetch = {
+      type = "git";
+      url = "https://github.com/grpc-ecosystem/go-grpc-middleware";
+      rev = "v1.0.0";
+      sha256 = "0lwgxih021xfhfb1xb9la5f98bpgpaiz63sbllx77qwwl2rmhrsp";
+    };
+  }
+  {
+    goPackagePath = "github.com/grpc-ecosystem/go-grpc-prometheus";
+    fetch = {
+      type = "git";
+      url = "https://github.com/grpc-ecosystem/go-grpc-prometheus";
+      rev = "v1.2.0";
+      sha256 = "1lzk54h7np32b3acidg1ggbn8ppbnns0m71gcg9d1qkkdh8zrijl";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/errwrap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/errwrap";
+      rev = "v1.0.0";
+      sha256 = "0slfb6w3b61xz04r32bi0a1bygc82rjzhqkxj2si2074wynqnr1c";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/go-multierror";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/go-multierror";
+      rev = "v1.0.0";
+      sha256 = "00nyn8llqzbfm8aflr9kwsvpzi4kv8v45c141v88xskxp5xf6z49";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/go-version";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/go-version";
+      rev = "v1.2.0";
+      sha256 = "1bwi6y6111xq8ww8kjq0w1cmz15l1h9hb2id6596l8l0ag1vjj1z";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/golang-lru";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/golang-lru";
+      rev = "v0.5.1";
+      sha256 = "13f870cvk161bzjj6x41l45r5x9i1z9r2ymwmvm7768kg08zznpy";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/hcl";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/hcl";
+      rev = "v1.0.0";
+      sha256 = "0q6ml0qqs0yil76mpn4mdx4lp94id8vbv575qm60jzl1ijcl5i66";
+    };
+  }
+  {
+    goPackagePath = "github.com/hpcloud/tail";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hpcloud/tail";
+      rev = "v1.0.0";
+      sha256 = "1njpzc0pi1acg5zx9y6vj9xi6ksbsc5d387rd6904hy6rh2m6kn0";
+    };
+  }
+  {
+    goPackagePath = "github.com/ianlancetaylor/demangle";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ianlancetaylor/demangle";
+      rev = "5e5cf60278f6";
+      sha256 = "1fhjk11cip9c3jyj1byz9z77n6n2rlxmyz0xjx1zpn1da3cvri75";
+    };
+  }
+  {
+    goPackagePath = "github.com/imkira/go-interpol";
+    fetch = {
+      type = "git";
+      url = "https://github.com/imkira/go-interpol";
+      rev = "v1.1.0";
+      sha256 = "180h3pf2p0pch6hmqf45wk7wd87md83d3p122f8ll43x5nja5mph";
+    };
+  }
+  {
+    goPackagePath = "github.com/inconshreveable/mousetrap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/inconshreveable/mousetrap";
+      rev = "v1.0.0";
+      sha256 = "1mn0kg48xkd74brf48qf5hzp0bc6g8cf5a77w895rl3qnlpfw152";
+    };
+  }
+  {
+    goPackagePath = "github.com/iris-contrib/blackfriday";
+    fetch = {
+      type = "git";
+      url = "https://github.com/iris-contrib/blackfriday";
+      rev = "v2.0.0";
+      sha256 = "1gkizavajqmxm79il8r6cbi0g9ls3vwdh9wr0zy89vc9sq17p3im";
+    };
+  }
+  {
+    goPackagePath = "github.com/iris-contrib/go.uuid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/iris-contrib/go.uuid";
+      rev = "v2.0.0";
+      sha256 = "0nc0ggn0a6bcwdrwinnx3z6889x65c20a2dwja0n8can3xblxs35";
+    };
+  }
+  {
+    goPackagePath = "github.com/iris-contrib/i18n";
+    fetch = {
+      type = "git";
+      url = "https://github.com/iris-contrib/i18n";
+      rev = "987a633949d0";
+      sha256 = "0yslm7hmacc57v970jbys4x5c5yxgcjgff982ngivg9v1a16kifq";
+    };
+  }
+  {
+    goPackagePath = "github.com/iris-contrib/schema";
+    fetch = {
+      type = "git";
+      url = "https://github.com/iris-contrib/schema";
+      rev = "v0.0.1";
+      sha256 = "1a1lk2ll2xv3ljffmfw4q8mqqw727pj8dzs6c8g2hh0b0b050g79";
+    };
+  }
+  {
+    goPackagePath = "github.com/joho/godotenv";
+    fetch = {
+      type = "git";
+      url = "https://github.com/joho/godotenv";
+      rev = "v1.3.0";
+      sha256 = "0ri8if0pc3x6jg4c3i8wr58xyfpxkwmcjk3rp8gb398a1aa3gpjm";
+    };
+  }
+  {
+    goPackagePath = "github.com/json-iterator/go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/json-iterator/go";
+      rev = "v1.1.6";
+      sha256 = "08caswxvdn7nvaqyj5kyny6ghpygandlbw9vxdj7l5vkp7q0s43r";
+    };
+  }
+  {
+    goPackagePath = "github.com/jstemmer/go-junit-report";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jstemmer/go-junit-report";
+      rev = "v0.9.1";
+      sha256 = "1knip80yir1cdsjlb3rzy0a4w3kl4ljpiciaz6hjzwqlfhnv7bkw";
+    };
+  }
+  {
+    goPackagePath = "github.com/jtolds/gls";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jtolds/gls";
+      rev = "v4.20.0";
+      sha256 = "1k7xd2q2ysv2xsh373qs801v6f359240kx0vrl0ydh7731lngvk6";
+    };
+  }
+  {
+    goPackagePath = "github.com/juju/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/juju/errors";
+      rev = "089d3ea4e4d5";
+      sha256 = "056za75j1zgksky7pbf0pkjqz5ha15g3wj3p4ma10m9sywdyq79r";
+    };
+  }
+  {
+    goPackagePath = "github.com/juju/loggo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/juju/loggo";
+      rev = "584905176618";
+      sha256 = "0hzi0652y74jf62wwyi9gf8bzrs7ynvhjfqc8rwr4l799d7i5gd4";
+    };
+  }
+  {
+    goPackagePath = "github.com/juju/testing";
+    fetch = {
+      type = "git";
+      url = "https://github.com/juju/testing";
+      rev = "472a3e8b2073";
+      sha256 = "05wjc2k0kwbam7anaxwnj30pl03dcdbrsz32icd70zl70ipsqsw4";
+    };
+  }
+  {
+    goPackagePath = "github.com/julienschmidt/httprouter";
+    fetch = {
+      type = "git";
+      url = "https://github.com/julienschmidt/httprouter";
+      rev = "v1.2.0";
+      sha256 = "1k8bylc9s4vpvf5xhqh9h246dl1snxrzzz0614zz88cdh8yzs666";
+    };
+  }
+  {
+    goPackagePath = "github.com/k0kubun/colorstring";
+    fetch = {
+      type = "git";
+      url = "https://github.com/k0kubun/colorstring";
+      rev = "9440f1994b88";
+      sha256 = "0isskya7ky4k9znrh85crfc2pxwyfz2s8j1a5cbjb8b8zf2v0qbj";
+    };
+  }
+  {
+    goPackagePath = "github.com/kataras/golog";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kataras/golog";
+      rev = "v0.0.9";
+      sha256 = "160hd3z93c9i33q9g1bhfdxmsqg1lanncnrqcsr2444dy5j6ly3i";
+    };
+  }
+  {
+    goPackagePath = "github.com/kataras/iris";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kataras/iris";
+      rev = "v12.0.1";
+      sha256 = "0k1jhamvf0byx6d317gzg6r2jls7bajhhf2spvdinarl2cjnakm5";
+    };
+  }
+  {
+    goPackagePath = "github.com/kataras/neffos";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kataras/neffos";
+      rev = "v0.0.10";
+      sha256 = "0mkqrxff28rcc71nw5qqsywn0fm2jz7magwp9hhvh1s01lgghjdp";
+    };
+  }
+  {
+    goPackagePath = "github.com/kataras/pio";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kataras/pio";
+      rev = "ea782b38602d";
+      sha256 = "0ca29wmkpx19qwnvi4fja3avkxkzz14x9wyzmg1l9074bxbj8cgj";
+    };
+  }
+  {
+    goPackagePath = "github.com/kelseyhightower/envconfig";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kelseyhightower/envconfig";
+      rev = "v1.3.0";
+      sha256 = "1zcq480ig7wbg4378qcfxznp2gzqmk7x6rbxizflvg9v2f376vrw";
+    };
+  }
+  {
+    goPackagePath = "github.com/kisielk/gotool";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kisielk/gotool";
+      rev = "v1.0.0";
+      sha256 = "14af2pa0ssyp8bp2mvdw184s5wcysk6akil3wzxmr05wwy951iwn";
+    };
+  }
+  {
+    goPackagePath = "github.com/klauspost/compress";
+    fetch = {
+      type = "git";
+      url = "https://github.com/klauspost/compress";
+      rev = "v1.9.0";
+      sha256 = "07vndz6mdaliwagj2xq0y5c5w2zld14p9i5y7r0bkhb7klfyamfk";
+    };
+  }
+  {
+    goPackagePath = "github.com/klauspost/cpuid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/klauspost/cpuid";
+      rev = "v1.2.1";
+      sha256 = "1071wchrs37bvpb99fwf19fjrpz0yaqipi2y2hjvim419flvd49x";
+    };
+  }
+  {
+    goPackagePath = "github.com/konsorten/go-windows-terminal-sequences";
+    fetch = {
+      type = "git";
+      url = "https://github.com/konsorten/go-windows-terminal-sequences";
+      rev = "v1.0.2";
+      sha256 = "09mn209ika7ciy87xf2x31dq5fnqw39jidgaljvmqxwk7ff1hnx7";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/logfmt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/logfmt";
+      rev = "b84e30acd515";
+      sha256 = "02ldzxgznrfdzvghfraslhgp19la1fczcbzh7wm2zdc6lmpd1qq9";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/pretty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/pretty";
+      rev = "v0.1.0";
+      sha256 = "18m4pwg2abd0j9cn5v3k2ksk9ig4vlwxmlw9rrglanziv9l967qp";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/pty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/pty";
+      rev = "v1.1.1";
+      sha256 = "0383f0mb9kqjvncqrfpidsf8y6ns5zlrc91c6a74xpyxjwvzl2y6";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/text";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/text";
+      rev = "v0.1.0";
+      sha256 = "1gm5bsl01apvc84bw06hasawyqm4q84vx1pm32wr9jnd7a8vjgj1";
+    };
+  }
+  {
+    goPackagePath = "github.com/labstack/echo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/labstack/echo";
+      rev = "v4.1.11";
+      sha256 = "0b14vgwzznn7wzyjb98xdmq4wjg16l3y62njiwfz4qsm4pwzk405";
+    };
+  }
+  {
+    goPackagePath = "github.com/labstack/gommon";
+    fetch = {
+      type = "git";
+      url = "https://github.com/labstack/gommon";
+      rev = "v0.3.0";
+      sha256 = "18z7akyzm75p6anm4b8qkqgm4iivx50z07hi5wf50w1pbsvbcdi0";
+    };
+  }
+  {
+    goPackagePath = "github.com/lib/pq";
+    fetch = {
+      type = "git";
+      url = "https://github.com/lib/pq";
+      rev = "v1.2.0";
+      sha256 = "08j1smm6rassdssdks4yh9aspa1dv1g5nvwimmknspvhx8a7waqz";
+    };
+  }
+  {
+    goPackagePath = "github.com/libgit2/git2go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/libgit2/git2go";
+      rev = "ecaeb7a21d47";
+      sha256 = "14r7ryff93r49g94f6kg66xc0y6rwb31lj22s3qmzmlgywk0pgvr";
+    };
+  }
+  {
+    goPackagePath = "github.com/lightstep/lightstep-tracer-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/lightstep/lightstep-tracer-go";
+      rev = "v0.15.6";
+      sha256 = "10n5r66g44s6rnz5kf86s4a3p1g55kc1kxqhnk7bx7mlayndgpmb";
+    };
+  }
+  {
+    goPackagePath = "github.com/magiconair/properties";
+    fetch = {
+      type = "git";
+      url = "https://github.com/magiconair/properties";
+      rev = "v1.8.0";
+      sha256 = "1a10362wv8a8qwb818wygn2z48lgzch940hvpv81hv8gc747ajxn";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-colorable";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-colorable";
+      rev = "v0.1.2";
+      sha256 = "0512jm3wmzkkn7d99x9wflyqf48n5ri3npy1fqkq6l6adc5mni3n";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-isatty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-isatty";
+      rev = "v0.0.9";
+      sha256 = "0i3km37lajahh1y2392g4hpgvq05arcgiiv93yhzxxyv0fpqj72m";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-runewidth";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-runewidth";
+      rev = "v0.0.4";
+      sha256 = "00b3ssm7wiqln3k54z2wcnxr3k3c7m1ybyhb9h8ixzbzspld0qzs";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-shellwords";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-shellwords";
+      rev = "2444a32a19f4";
+      sha256 = "08zcgr1az1n8zaxzwdd205j86hczgyc52nxfnw5avpw7rrkf7v0d";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-sqlite3";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-sqlite3";
+      rev = "v1.12.0";
+      sha256 = "0di8zy6202sbs0p9kx8lpii77ir5jwjhg6z0796y3nfvw87wk9iv";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/goveralls";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/goveralls";
+      rev = "v0.0.2";
+      sha256 = "13ffdikvc594g1mryhi94m87skr7irwkjnpxp8ad2kprn6syfslp";
+    };
+  }
+  {
+    goPackagePath = "github.com/matttproud/golang_protobuf_extensions";
+    fetch = {
+      type = "git";
+      url = "https://github.com/matttproud/golang_protobuf_extensions";
+      rev = "v1.0.1";
+      sha256 = "1d0c1isd2lk9pnfq2nk0aih356j30k3h1gi2w0ixsivi5csl7jya";
+    };
+  }
+  {
+    goPackagePath = "github.com/mediocregopher/mediocre-go-lib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mediocregopher/mediocre-go-lib";
+      rev = "cb65787f37ed";
+      sha256 = "0lg6q76fxjhxv05m80k4l6nrkj9qwzafs2mb2gbvhznxh8m0cv9j";
+    };
+  }
+  {
+    goPackagePath = "github.com/mediocregopher/radix";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mediocregopher/radix";
+      rev = "v3.3.0";
+      sha256 = "0pchn5z2g4wnf87350war5fr9pqpdksia1ffvw7cphg4q9blggfx";
+    };
+  }
+  {
+    goPackagePath = "github.com/microcosm-cc/bluemonday";
+    fetch = {
+      type = "git";
+      url = "https://github.com/microcosm-cc/bluemonday";
+      rev = "v1.0.2";
+      sha256 = "0j0aylsxqjcj49w7ph8cmpaqjlpvg7mb5mrcrd9bg71dlb9z9ir2";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/cli";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/cli";
+      rev = "v1.0.0";
+      sha256 = "1i9kmr7rcf10d2hji8h4247hmc0nbairv7a0q51393aw2h1bnwg2";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/go-homedir";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-homedir";
+      rev = "v1.1.0";
+      sha256 = "0ydzkipf28hwj2bfxqmwlww47khyk6d152xax4bnyh60f4lq3nx1";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/mapstructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/mapstructure";
+      rev = "v1.1.2";
+      sha256 = "03bpv28jz9zhn4947saqwi328ydj7f6g6pf1m2d4m5zdh5jlfkrr";
+    };
+  }
+  {
+    goPackagePath = "github.com/modern-go/concurrent";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/concurrent";
+      rev = "bacd9c7ef1dd";
+      sha256 = "0s0fxccsyb8icjmiym5k7prcqx36hvgdwl588y0491gi18k5i4zs";
+    };
+  }
+  {
+    goPackagePath = "github.com/modern-go/reflect2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/reflect2";
+      rev = "v1.0.1";
+      sha256 = "06a3sablw53n1dqqbr2f53jyksbxdmmk8axaas4yvnhyfi55k4lf";
+    };
+  }
+  {
+    goPackagePath = "github.com/moul/http2curl";
+    fetch = {
+      type = "git";
+      url = "https://github.com/moul/http2curl";
+      rev = "v1.0.0";
+      sha256 = "15bpx33d3ygya8dg8hbsn24h7acpajl27006pj8lw1c0bfvbnrl0";
+    };
+  }
+  {
+    goPackagePath = "github.com/mwitkow/go-conntrack";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mwitkow/go-conntrack";
+      rev = "cc309e4a2223";
+      sha256 = "0nbrnpk7bkmqg9mzwsxlm0y8m7s9qd9phr1q30qlx2qmdmz7c1mf";
+    };
+  }
+  {
+    goPackagePath = "github.com/nats-io/nats.go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/nats-io/nats.go";
+      rev = "v1.8.1";
+      sha256 = "0h9zzpjl6ac227bhf0i4ram9a5jlibq53pawv0zzxdirxrnp1vkj";
+    };
+  }
+  {
+    goPackagePath = "github.com/nats-io/nkeys";
+    fetch = {
+      type = "git";
+      url = "https://github.com/nats-io/nkeys";
+      rev = "v0.0.2";
+      sha256 = "0kibc1g60w031rssk3vs74gfick3jdl3igckn1v4k8b5grawcks1";
+    };
+  }
+  {
+    goPackagePath = "github.com/nats-io/nuid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/nats-io/nuid";
+      rev = "v1.0.1";
+      sha256 = "11zbhg4kds5idsya04bwz4plj0mmiigypzppzih731ppbk2ms1zg";
+    };
+  }
+  {
+    goPackagePath = "github.com/olekukonko/tablewriter";
+    fetch = {
+      type = "git";
+      url = "https://github.com/olekukonko/tablewriter";
+      rev = "v0.0.2";
+      sha256 = "1f4mwdh501p8105nfxayprlj5ld14fwzyyy2wbc04xk3wrm1wzlf";
+    };
+  }
+  {
+    goPackagePath = "github.com/onsi/ginkgo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/onsi/ginkgo";
+      rev = "v1.10.3";
+      sha256 = "00a40by9f5ylycnar8h3p9b4z5rcsvfvg4j3v5s5mchdqrqjv1pc";
+    };
+  }
+  {
+    goPackagePath = "github.com/onsi/gomega";
+    fetch = {
+      type = "git";
+      url = "https://github.com/onsi/gomega";
+      rev = "v1.7.1";
+      sha256 = "06p3x0910cdaa64l7d44s728d4j3yhps315dlcvrbjzhljjj7mam";
+    };
+  }
+  {
+    goPackagePath = "github.com/opentracing/opentracing-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/opentracing/opentracing-go";
+      rev = "v1.0.2";
+      sha256 = "0i0ghg94dg8lk05mw5n23983wq04yjvkjmdkc9z5y1f3508938h9";
+    };
+  }
+  {
+    goPackagePath = "github.com/otiai10/copy";
+    fetch = {
+      type = "git";
+      url = "https://github.com/otiai10/copy";
+      rev = "v1.0.1";
+      sha256 = "0xmy0kfcx48q10s040579pcjswfaxlwhv7a2z07z9r92fdrgw03k";
+    };
+  }
+  {
+    goPackagePath = "github.com/otiai10/curr";
+    fetch = {
+      type = "git";
+      url = "https://github.com/otiai10/curr";
+      rev = "v1.0.0";
+      sha256 = "0fpw20adq2wff7l4c87zaavj9jra4d64a8bbjixiiv3bbarim987";
+    };
+  }
+  {
+    goPackagePath = "github.com/otiai10/mint";
+    fetch = {
+      type = "git";
+      url = "https://github.com/otiai10/mint";
+      rev = "v1.3.0";
+      sha256 = "0kfc95jc2hfgwzcpdfa5hrxgj7s6rzx5jc0n1sn863bsngx2q1ca";
+    };
+  }
+  {
+    goPackagePath = "github.com/pelletier/go-toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pelletier/go-toml";
+      rev = "v1.2.0";
+      sha256 = "1fjzpcjng60mc3a4b2ql5a00d5gah84wj740dabv9kq67mpg8fxy";
+    };
+  }
+  {
+    goPackagePath = "github.com/philhofer/fwd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/philhofer/fwd";
+      rev = "v1.0.0";
+      sha256 = "1pg84khadh79v42y8sjsdgfb54vw2kzv7hpapxkifgj0yvcp30g2";
+    };
+  }
+  {
+    goPackagePath = "github.com/pingcap/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pingcap/errors";
+      rev = "v0.11.4";
+      sha256 = "02k6b30m42aya763fnwx3paq4r8h28yav4i2kv2z4r28r70xxcgn";
+    };
+  }
+  {
+    goPackagePath = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev = "v0.8.1";
+      sha256 = "0g5qcb4d4fd96midz0zdk8b9kz8xkzwfa8kr1cliqbg8sxsy5vd1";
+    };
+  }
+  {
+    goPackagePath = "github.com/pmezard/go-difflib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pmezard/go-difflib";
+      rev = "v1.0.0";
+      sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
+    };
+  }
+  {
+    goPackagePath = "github.com/posener/complete";
+    fetch = {
+      type = "git";
+      url = "https://github.com/posener/complete";
+      rev = "v1.1.1";
+      sha256 = "1nbdiybjizbaxbf5q0xwbq0cjqw4bl6jggvsjzrpif0w86fcjda2";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/client_golang";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_golang";
+      rev = "v1.0.0";
+      sha256 = "1f03ndyi3jq7zdxinnvzimz3s4z2374r6dikkc8i42xzb6d1bli6";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/client_model";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_model";
+      rev = "14fe0d1b01d4";
+      sha256 = "0zdmk6rbbx39cvfz0r59v2jg5sg9yd02b4pds5n5llgvivi99550";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/common";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/common";
+      rev = "v0.4.1";
+      sha256 = "0sf4sjdckblz1hqdfvripk3zyp8xq89w7q75kbsyg4c078af896s";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/procfs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/procfs";
+      rev = "v0.0.3";
+      sha256 = "18c4m795fwng8f8qa395f3crvamlbk5y5afk8b5rzyisnmjq774y";
+    };
+  }
+  {
+    goPackagePath = "github.com/rogpeppe/go-internal";
+    fetch = {
+      type = "git";
+      url = "https://github.com/rogpeppe/go-internal";
+      rev = "v1.4.0";
+      sha256 = "17wisy8bapx5ki0gpissm8dvv7x0lmdnrl1fka75g05kpbyv6g2n";
+    };
+  }
+  {
+    goPackagePath = "github.com/rubenv/sql-migrate";
+    fetch = {
+      type = "git";
+      url = "https://github.com/rubenv/sql-migrate";
+      rev = "06338513c237";
+      sha256 = "0z7y7vsnzjswx51g9hlawnzmwnb8c7rks6ljzf6m1xbimhi4n3kz";
+    };
+  }
+  {
+    goPackagePath = "github.com/russross/blackfriday";
+    fetch = {
+      type = "git";
+      url = "https://github.com/russross/blackfriday";
+      rev = "v1.5.2";
+      sha256 = "0jzbfzcywqcrnym4gxlz6nphmm1grg6wsl4f0r9x384rn83wkj7c";
+    };
+  }
+  {
+    goPackagePath = "github.com/ryanuber/columnize";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ryanuber/columnize";
+      rev = "v2.1.0";
+      sha256 = "0m9jhagb1k44zfcdai76xdf9vpi3bqdl7p078ffyibmz0z9jfap6";
+    };
+  }
+  {
+    goPackagePath = "github.com/sebest/xff";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sebest/xff";
+      rev = "6c115e0ffa35";
+      sha256 = "0l11d8mc870vxzgi74cc9dqr7kgxjmbfkfi53gc30rsyx877jx4h";
+    };
+  }
+  {
+    goPackagePath = "github.com/sergi/go-diff";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sergi/go-diff";
+      rev = "v1.0.0";
+      sha256 = "0swiazj8wphs2zmk1qgq75xza6m19snif94h2m6fi8dqkwqdl7c7";
+    };
+  }
+  {
+    goPackagePath = "github.com/shurcooL/sanitized_anchor_name";
+    fetch = {
+      type = "git";
+      url = "https://github.com/shurcooL/sanitized_anchor_name";
+      rev = "v1.0.0";
+      sha256 = "1gv9p2nr46z80dnfjsklc6zxbgk96349sdsxjz05f3z6wb6m5l8f";
+    };
+  }
+  {
+    goPackagePath = "github.com/sirupsen/logrus";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sirupsen/logrus";
+      rev = "v1.4.2";
+      sha256 = "087k2lxrr9p9dh68yw71d05h5g9p5v26zbwd6j7lghinjfaw334x";
+    };
+  }
+  {
+    goPackagePath = "github.com/smartystreets/assertions";
+    fetch = {
+      type = "git";
+      url = "https://github.com/smartystreets/assertions";
+      rev = "b2de0cb4f26d";
+      sha256 = "1i7ldgavgl35c7gk25p7bvdr282ckng090zr4ch9mk1705akx09y";
+    };
+  }
+  {
+    goPackagePath = "github.com/smartystreets/goconvey";
+    fetch = {
+      type = "git";
+      url = "https://github.com/smartystreets/goconvey";
+      rev = "v1.6.4";
+      sha256 = "07zjxwszayal88z1j2bwnqrsa32vg8l4nivks5yfr9j8xfsw7n6m";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/afero";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/afero";
+      rev = "v1.1.2";
+      sha256 = "0miv4faf5ihjfifb1zv6aia6f6ik7h1s4954kcb8n6ixzhx9ck6k";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/cast";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cast";
+      rev = "v1.3.0";
+      sha256 = "0xq1ffqj8y8h7dcnm0m9lfrh0ga7pssnn2c1dnr09chqbpn4bdc5";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/cobra";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cobra";
+      rev = "v0.0.5";
+      sha256 = "0z4x8js65mhwg1gf6sa865pdxfgn45c3av9xlcc1l3xjvcnx32v2";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/jwalterweatherman";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/jwalterweatherman";
+      rev = "v1.0.0";
+      sha256 = "093fmmvavv84pv4q84hav7ph3fmrq87bvspjj899q0qsx37yvdr8";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev = "v1.0.3";
+      sha256 = "1cj3cjm7d3zk0mf1xdybh0jywkbbw7a6yr3y22x9sis31scprswd";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/viper";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/viper";
+      rev = "v1.3.2";
+      sha256 = "1829hvf805kda65l59r17wvid7y0vr390s23zfhf4w7vdb4wp3zh";
+    };
+  }
+  {
+    goPackagePath = "github.com/stretchr/objx";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/objx";
+      rev = "v0.1.1";
+      sha256 = "0iph0qmpyqg4kwv8jsx6a56a7hhqq8swrazv40ycxk9rzr0s8yls";
+    };
+  }
+  {
+    goPackagePath = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev = "v1.4.0";
+      sha256 = "187i5g88sxfy4vxpm7dw1gwv29pa2qaq475lxrdh5livh69wqfjb";
+    };
+  }
+  {
+    goPackagePath = "github.com/tinylib/msgp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/tinylib/msgp";
+      rev = "v1.1.0";
+      sha256 = "08ha23sn14071ywrgxlyj7r523vzdwx1i83dcp1mqa830glgqaff";
+    };
+  }
+  {
+    goPackagePath = "github.com/uber-go/atomic";
+    fetch = {
+      type = "git";
+      url = "https://github.com/uber-go/atomic";
+      rev = "v1.3.2";
+      sha256 = "11pzvjys5ddjjgrv94pgk9pnip9yyb54z7idf33zk7p7xylpnsv6";
+    };
+  }
+  {
+    goPackagePath = "github.com/uber/jaeger-client-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/uber/jaeger-client-go";
+      rev = "v2.15.0";
+      sha256 = "0ki23m9zrf3vxp839fnp9ckr4m28y6mpad8g5s5lr5k8jkl0sfwj";
+    };
+  }
+  {
+    goPackagePath = "github.com/uber/jaeger-lib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/uber/jaeger-lib";
+      rev = "v1.5.0";
+      sha256 = "113fwpn80ylx970w8h7nfqnhh18dpx1jadbk7rbr8k68q4di4y0q";
+    };
+  }
+  {
+    goPackagePath = "github.com/ugorji/go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ugorji/go";
+      rev = "v1.1.7";
+      sha256 = "068gja55kbh2iivp03x4n9dcml0rxv0k64ivkmq06si2ar1835rm";
+    };
+  }
+  {
+    goPackagePath = "github.com/urfave/negroni";
+    fetch = {
+      type = "git";
+      url = "https://github.com/urfave/negroni";
+      rev = "v1.0.0";
+      sha256 = "1gp6j74adi1cn8fq5v3wzlzhwl4zg43n2746m4fzdcdimihk3ccp";
+    };
+  }
+  {
+    goPackagePath = "github.com/valyala/bytebufferpool";
+    fetch = {
+      type = "git";
+      url = "https://github.com/valyala/bytebufferpool";
+      rev = "v1.0.0";
+      sha256 = "01lqzjddq6kz9v41nkky7wbgk7f1cw036sa7ldz10d82g5klzl93";
+    };
+  }
+  {
+    goPackagePath = "github.com/valyala/fasthttp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/valyala/fasthttp";
+      rev = "v1.6.0";
+      sha256 = "1r1hm4rv9w6x829jjg75y8xd523b76parsyyvjwyz8k2l6bm4h0b";
+    };
+  }
+  {
+    goPackagePath = "github.com/valyala/fasttemplate";
+    fetch = {
+      type = "git";
+      url = "https://github.com/valyala/fasttemplate";
+      rev = "v1.0.1";
+      sha256 = "0l131znbv8v67y20s4q361mwiww2c33zdc68mwvxchzk1gpy5ywq";
+    };
+  }
+  {
+    goPackagePath = "github.com/valyala/tcplisten";
+    fetch = {
+      type = "git";
+      url = "https://github.com/valyala/tcplisten";
+      rev = "ceec8f93295a";
+      sha256 = "0ksbj1gsdqanbnhly5w1wcc107bib4w0zpnyl00prr89zch3imnf";
+    };
+  }
+  {
+    goPackagePath = "github.com/xeipuuv/gojsonpointer";
+    fetch = {
+      type = "git";
+      url = "https://github.com/xeipuuv/gojsonpointer";
+      rev = "4e3ac2762d5f";
+      sha256 = "13y6iq2nzf9z4ls66bfgnnamj2m3438absmbpqry64bpwjfbsi9q";
+    };
+  }
+  {
+    goPackagePath = "github.com/xeipuuv/gojsonreference";
+    fetch = {
+      type = "git";
+      url = "https://github.com/xeipuuv/gojsonreference";
+      rev = "bd5ef7bd5415";
+      sha256 = "1xby79padc7bmyb8rfbad8wfnfdzpnh51b1n8c0kibch0kwc1db5";
+    };
+  }
+  {
+    goPackagePath = "github.com/xeipuuv/gojsonschema";
+    fetch = {
+      type = "git";
+      url = "https://github.com/xeipuuv/gojsonschema";
+      rev = "v1.2.0";
+      sha256 = "1mqiq0r8qw4qlfp3ls8073r6514rmzwrmdn4j33rppk3zh942i6l";
+    };
+  }
+  {
+    goPackagePath = "github.com/xordataexchange/crypt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/xordataexchange/crypt";
+      rev = "b2862e3d0a77";
+      sha256 = "04q3856anpzl4gdfgmg7pbp9cx231nkz3ymq2xp27rnmmwhfxr8y";
+    };
+  }
+  {
+    goPackagePath = "github.com/yalp/jsonpath";
+    fetch = {
+      type = "git";
+      url = "https://github.com/yalp/jsonpath";
+      rev = "5cc68e5049a0";
+      sha256 = "0kkyxp1cg3kfxy5hhwzxg132jin4xb492z5jpqq94ix15v6rdf4b";
+    };
+  }
+  {
+    goPackagePath = "github.com/yudai/gojsondiff";
+    fetch = {
+      type = "git";
+      url = "https://github.com/yudai/gojsondiff";
+      rev = "v1.0.0";
+      sha256 = "0qnymi0027mb8kxm24mmd22bvjrdkc56c7f4q3lbdf93x1vxbbc2";
+    };
+  }
+  {
+    goPackagePath = "github.com/yudai/golcs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/yudai/golcs";
+      rev = "ecda9a501e82";
+      sha256 = "0mx6wc5fz05yhvg03vvps93bc5mw4vnng98fhmixd47385qb29pq";
+    };
+  }
+  {
+    goPackagePath = "github.com/yudai/pp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/yudai/pp";
+      rev = "v2.0.1";
+      sha256 = "18vbc7jagnjw1wpvhqjffl0np7bzzqdd9jpdcisvj5h85lbyn5gk";
+    };
+  }
+  {
+    goPackagePath = "github.com/ziutek/mymysql";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ziutek/mymysql";
+      rev = "v1.5.4";
+      sha256 = "172s7sv5bgc40x81k18hypf9c4n8hn9v5w5zwyr4mi5prbavqcci";
+    };
+  }
+  {
+    goPackagePath = "gitlab.com/gitlab-org/gitlab-shell";
+    fetch = {
+      type = "git";
+      url = "https://gitlab.com/gitlab-org/gitlab-shell.git";
+      rev = "716e30c55e89";
+      sha256 = "0g2bgwm5rf93xfd40j3d2a5js1a212r2l2qdbds3gp7h0v73npjw";
+    };
+  }
+  {
+    goPackagePath = "gitlab.com/gitlab-org/labkit";
+    fetch = {
+      type = "git";
+      url = "https://gitlab.com/gitlab-org/labkit.git";
+      rev = "0149780c759d";
+      sha256 = "1krp5jkwpckpdznbl9xp4yvq6cii750r24agcni3snbbs8hd8gb1";
+    };
+  }
+  {
+    goPackagePath = "go.opencensus.io";
+    fetch = {
+      type = "git";
+      url = "https://github.com/census-instrumentation/opencensus-go";
+      rev = "v0.22.2";
+      sha256 = "0lz7fid63pdrcvyzk5kn7vlcva102h61igmw7pz824wvj9k3hy4q";
+    };
+  }
+  {
+    goPackagePath = "go.uber.org/atomic";
+    fetch = {
+      type = "git";
+      url = "https://github.com/uber-go/atomic";
+      rev = "v1.3.2";
+      sha256 = "11pzvjys5ddjjgrv94pgk9pnip9yyb54z7idf33zk7p7xylpnsv6";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "87dc89f01550";
+      sha256 = "0z4i1m2yn3f31ci7wvcm2rxkx2yiv7a78mfzklncmsz2k97rlh2g";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/exp";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/exp";
+      rev = "da58074b4299";
+      sha256 = "1pgvdbjm3n47505diw3mm2hisp9b9q2lyvgl9m6xh2wx83b0cj48";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/image";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/image";
+      rev = "cff245a6509b";
+      sha256 = "0hiznlkiaay30acwvvyq8g6bm32r7bc6gv47pygrcxqpapasbz84";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/lint";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/lint";
+      rev = "fdd1cda4f05f";
+      sha256 = "0a23pc90fqar8sm1b480sls15ss20rqk13yrf63b6rnyd2c6z0x2";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/mobile";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/mobile";
+      rev = "d2bd2a29d028";
+      sha256 = "1nv6vvhnjr01nx9y06q46ww87dppdwpbqrlsfg1xf2587wxl8xiv";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/mod";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/mod";
+      rev = "c90efee705ee";
+      sha256 = "0i5md645rmcy5z5ij9ng428k9rz4g3k1kjy3blsq1264rn426gdf";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "6afb5195e5aa";
+      sha256 = "1aiz41q2yxgg3dxfkn33ff54vhaxbiwcps9j3ia1xx4cqxim38zw";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/oauth2";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/oauth2";
+      rev = "bf48bf16ab8d";
+      sha256 = "1sirdib60zwmh93kf9qrx51r8544k1p9rs5mk0797wibz3m4mrdg";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sync";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sync";
+      rev = "cd5d95a43a6e";
+      sha256 = "1nqkyz2y1qvqcma52ijh02s8aiqmkfb95j08f6zcjhbga3ds6hds";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "86b910548bc1";
+      sha256 = "1z8l2wp27q0bd4nc46j31lc7cr6kiw52zi6ix3i121pd3rcyrw44";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "v0.3.2";
+      sha256 = "0flv9idw0jm5nm8lx25xqanbkqgfiym6619w575p7nrdh0riqwqh";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/time";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/time";
+      rev = "9d24e82272b4";
+      sha256 = "1f5nkr4vys2vbd8wrwyiq2f5wcaahhpxmia85d1gshcbqjqf8dkb";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "43d50277825c";
+      sha256 = "1168q4da36wq9w2591iqzsfy5ymwfi2g46bv5dnyyspg155ld19k";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/xerrors";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/xerrors";
+      rev = "9bdfabe68543";
+      sha256 = "1yjfi1bk9xb81lqn85nnm13zz725wazvrx3b50hx19qmwg7a4b0c";
+    };
+  }
+  {
+    goPackagePath = "google.golang.org/api";
+    fetch = {
+      type = "git";
+      url = "https://code.googlesource.com/google-api-go-client";
+      rev = "v0.15.0";
+      sha256 = "1ljhwv5xsgsbqia70f35q19vwrsm47sh08ljbwdyfa867ff17qdh";
+    };
+  }
+  {
+    goPackagePath = "google.golang.org/appengine";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/appengine";
+      rev = "v1.6.5";
+      sha256 = "05hbq4cs7bqw0zl17bx8rzdkszid3nyl92100scg3jjrg70dhm7w";
+    };
+  }
+  {
+    goPackagePath = "google.golang.org/genproto";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/go-genproto";
+      rev = "ca5a22157cba";
+      sha256 = "0ldkh6f0g0wzfkp09ib15a62bmcbpsxj93saikqmc86242bcxij0";
+    };
+  }
+  {
+    goPackagePath = "google.golang.org/grpc";
+    fetch = {
+      type = "git";
+      url = "https://github.com/grpc/grpc-go";
+      rev = "v1.24.0";
+      sha256 = "0h8mwv74vzcfb7p4ai247x094skxca71vjp4wpj2wzmri0x9p4v6";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/DataDog/dd-trace-go.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/DataDog/dd-trace-go.v1";
+      rev = "v1.7.0";
+      sha256 = "0j45skiiayfsaw8id4g20k51zfr0raj47a03q2icka5xrh3qj6yq";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/alecthomas/kingpin.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/alecthomas/kingpin.v2";
+      rev = "v2.2.6";
+      sha256 = "0mndnv3hdngr3bxp7yxfd47cas4prv98sqw534mx7vp38gd88n5r";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/check.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/check.v1";
+      rev = "788fd7840127";
+      sha256 = "0v3bim0j375z81zrpr5qv42knqs0y2qv2vkjiqi5axvb78slki1a";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/errgo.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/errgo.v2";
+      rev = "v2.1.0";
+      sha256 = "065mbihiy7q67wnql0bzl9y1kkvck5ivra68254zbih52jxwrgr2";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/fsnotify.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/fsnotify.v1";
+      rev = "v1.4.7";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/go-playground/assert.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/go-playground/assert.v1";
+      rev = "v1.2.1";
+      sha256 = "1h4amgykpa0djwi619llr3g55p75ia0mi184h9s5zdl8l4rhn9pm";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/go-playground/validator.v8";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/go-playground/validator.v8";
+      rev = "v8.18.2";
+      sha256 = "1m2i48ph5a3kw9nlw2srx8i04v7chicds2hlzlrfm15045crga55";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/gorp.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/gorp.v1";
+      rev = "v1.7.2";
+      sha256 = "0zwkq4cv71vp7cmpfcs54908g1amr0cdxv1b8h1icf64jjawb1lb";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/mgo.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/mgo.v2";
+      rev = "9856a29383ce";
+      sha256 = "1gfbcmvpwwf1lydxj3g42wv2g9w3pf0y02igqk4f4f21h02sazkw";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/tomb.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/tomb.v1";
+      rev = "dd632973f1e7";
+      sha256 = "1lqmq1ag7s4b3gc3ddvr792c5xb5k6sfn0cchr3i2s7f1c231zjv";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "v2.2.8";
+      sha256 = "1inf7svydzscwv9fcjd2rm61a4xjk6jkswknybmns2n58shimapw";
+    };
+  }
+  {
+    goPackagePath = "honnef.co/go/tools";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dominikh/go-tools";
+      rev = "v0.0.1-2019.2.3";
+      sha256 = "1rwwahmbs4dwxncwjj56likir1kps9937vm2id3rygxzzla40zal";
+    };
+  }
+  {
+    goPackagePath = "rsc.io/binaryregexp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/rsc/binaryregexp";
+      rev = "v0.2.0";
+      sha256 = "1kar0myy85waw418zslviwx8846zj0m9cmqkxjx0fvgjdi70nc4b";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/gitaly/fix-executable-check.patch b/nixpkgs/pkgs/applications/version-management/gitlab/gitaly/fix-executable-check.patch
new file mode 100644
index 000000000000..65e130078b7f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/gitaly/fix-executable-check.patch
@@ -0,0 +1,13 @@
+diff --git a/internal/config/config.go b/internal/config/config.go
+index 037c9602..3d5409dc 100644
+--- a/internal/config/config.go
++++ b/internal/config/config.go
+@@ -185,7 +185,7 @@ func checkExecutable(path string) error {
+ 		return err
+ 	}
+ 
+-	if fi.Mode()&0755 < 0755 {
++	if fi.Mode()&0555 < 0555 {
+ 		return fmt.Errorf("not executable: %v", path)
+ 	}
+ 
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/gitaly/gemset.nix b/nixpkgs/pkgs/applications/version-management/gitlab/gitaly/gemset.nix
new file mode 100644
index 000000000000..f693d5b4c7ba
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/gitaly/gemset.nix
@@ -0,0 +1,927 @@
+{
+  abstract_type = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09330cmhrc2wmfhdj9zzg82sv6cdhm3qgdkva5ni5xfjril2pf14";
+      type = "gem";
+    };
+    version = "0.0.7";
+  };
+  actionpack = {
+    dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1665r4ffqdpykxwpgdnaq7xsaz1nfswc5wjs2qr0npx8bq7g49kh";
+      type = "gem";
+    };
+    version = "6.0.3.1";
+  };
+  actionview = {
+    dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1n21pswh3k7m33vzhxyrbi5lj64b1138yqv34jjhkhlq3474b4rh";
+      type = "gem";
+    };
+    version = "6.0.3.1";
+  };
+  activesupport = {
+    dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo" "zeitwerk"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1l29n9n38c9lpy5smh26r7fy7jp2bpjqlzhxgsr79cv7xpwlrbhs";
+      type = "gem";
+    };
+    version = "6.0.3.1";
+  };
+  adamantium = {
+    dependencies = ["ice_nine" "memoizable"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0165r2ikgfwv2rm8dzyijkp74fvg0ni72hpdx8ay2v7cj08dqyak";
+      type = "gem";
+    };
+    version = "0.2.0";
+  };
+  addressable = {
+    dependencies = ["public_suffix"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bcm2hchn897xjhqj9zzsxf3n9xhddymj4lsclz508f4vw3av46l";
+      type = "gem";
+    };
+    version = "2.6.0";
+  };
+  ast = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7";
+      type = "gem";
+    };
+    version = "2.4.0";
+  };
+  binding_ninja = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17fa3sv6p2fw9g8fxpwx1kjhhs28aw41akkba0hlgvk60055b1aa";
+      type = "gem";
+    };
+    version = "0.2.3";
+  };
+  builder = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr";
+      type = "gem";
+    };
+    version = "3.2.4";
+  };
+  charlock_holmes = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nf1l31n10yaark2rrg5qzyzcx9w80681449s3j09qmnipsl8rl5";
+      type = "gem";
+    };
+    version = "0.7.6";
+  };
+  coderay = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
+      type = "gem";
+    };
+    version = "1.1.2";
+  };
+  concord = {
+    dependencies = ["adamantium" "equalizer"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1b6cdn0fg4n9gzbdr7zyf4jq40y6h0c0g9cra7wk9hhmsylk91bg";
+      type = "gem";
+    };
+    version = "0.1.5";
+  };
+  concurrent-ruby = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "094387x4yasb797mv07cs3g6f08y56virc2rjcpb1k79rzaj3nhl";
+      type = "gem";
+    };
+    version = "1.1.6";
+  };
+  crack = {
+    dependencies = ["safe_yaml"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k";
+      type = "gem";
+    };
+    version = "0.4.3";
+  };
+  crass = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pfl5c0pyqaparxaqxi6s4gfl21bdldwiawrc0aknyvflli60lfw";
+      type = "gem";
+    };
+    version = "1.0.6";
+  };
+  diff-lcs = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
+      type = "gem";
+    };
+    version = "1.3";
+  };
+  docile = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qrwiyagxzl8zlx3dafb0ay8l14ib7imb2rsmx70i5cp420v8gif";
+      type = "gem";
+    };
+    version = "1.3.2";
+  };
+  equalizer = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1kjmx3fygx8njxfrwcmn7clfhjhb6bvv3scy2lyyi0wqyi3brra4";
+      type = "gem";
+    };
+    version = "0.0.11";
+  };
+  erubi = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nwzxnqhr31fn7nbqmffcysvxjdfl3bhxi0bld5qqhcnfc1xd13x";
+      type = "gem";
+    };
+    version = "1.9.0";
+  };
+  escape_utils = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qminivnyzwmqjhrh3b92halwbk0zcl9xn828p5rnap1szl2yag5";
+      type = "gem";
+    };
+    version = "1.2.1";
+  };
+  factory_bot = {
+    dependencies = ["activesupport"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "02ijqa3g6lb8l8mvi40z1zgh9bb3gr08p2r2ym159ghhfbcrmbwk";
+      type = "gem";
+    };
+    version = "5.0.2";
+  };
+  faraday = {
+    dependencies = ["multipart-post"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0s72m05jvzc1pd6cw1i289chas399q0a14xrwg4rvkdwy7bgzrh0";
+      type = "gem";
+    };
+    version = "0.15.4";
+  };
+  ffi = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10lfhahnnc91v63xpvk65apn61pib086zha3z5sp1xk9acfx12h4";
+      type = "gem";
+    };
+    version = "1.12.2";
+  };
+  gemojione = {
+    dependencies = ["json"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ayk8r147k1s38nj18pwk76npx1p7jhi86silk800nj913pjvrhj";
+      type = "gem";
+    };
+    version = "3.3.0";
+  };
+  github-linguist = {
+    dependencies = ["charlock_holmes" "escape_utils" "mini_mime" "rugged"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rhw05d88l928g6y2bngvmr66565b2z822hyynmb13b7khf07y1a";
+      type = "gem";
+    };
+    version = "7.9.0";
+  };
+  github-markup = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17g6g18gdjg63k75sfwiskjzl9i0hfcnrkcpb4fwrnb20v3jgswp";
+      type = "gem";
+    };
+    version = "1.7.0";
+  };
+  gitlab-gollum-lib = {
+    dependencies = ["gemojione" "github-markup" "gitlab-gollum-rugged_adapter" "nokogiri" "rouge" "sanitize" "stringex"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0y21k8bix3h2qdys2kz2z831cclmx3zc15x67cp8s945dkmh39sj";
+      type = "gem";
+    };
+    version = "4.2.7.9";
+  };
+  gitlab-gollum-rugged_adapter = {
+    dependencies = ["mime-types" "rugged"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1d32d3yfadzwrarv0biwbfbkz2bqcc0dc3q0imnk962jaay19gc4";
+      type = "gem";
+    };
+    version = "0.4.4.2";
+  };
+  gitlab-labkit = {
+    dependencies = ["actionpack" "activesupport" "grpc" "jaeger-client" "opentracing" "redis"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0a63zgjll83b25hiq8m4sk75jci2rj8z46lss0j3bc6zi3pxnzax";
+      type = "gem";
+    };
+    version = "0.12.0";
+  };
+  gitlab-markup = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xnlra517pfj3hx07kasbqlcw51ix4xajr6bsd3mwg8bc92dlwy7";
+      type = "gem";
+    };
+    version = "1.7.1";
+  };
+  google-protobuf = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0by3289irdklb9gjqw41fq6mg6yja3iyzh99dj8p8z9l4brllqn4";
+      type = "gem";
+    };
+    version = "3.8.0";
+  };
+  googleapis-common-protos-types = {
+    dependencies = ["google-protobuf"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hyr94cafiqj0k8q19hnl658pmbz2b404akikzfv4hdb1j1bwsg1";
+      type = "gem";
+    };
+    version = "1.0.4";
+  };
+  grpc = {
+    dependencies = ["google-protobuf" "googleapis-common-protos-types"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18wikj9qd4jb4lks55cs2cf3q7fifnanm9z9ywnxhpj57vbnilpf";
+      type = "gem";
+    };
+    version = "1.24.0";
+  };
+  grpc-tools = {
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pjs2sm43mai2fy0jsbxl8rs9bych8f5j8hv630fjwh0323cmcc9";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  hashdiff = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qji49afni3c90zws617x514xi7ik70g2iwngj9skq68mjcq6y4x";
+      type = "gem";
+    };
+    version = "0.3.9";
+  };
+  i18n = {
+    dependencies = ["concurrent-ruby"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jwrd1l4mxz06iyx6053lr6hz2zy7ah2k3ranfzisvych5q19kwm";
+      type = "gem";
+    };
+    version = "1.8.2";
+  };
+  ice_nine = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nv35qg1rps9fsis28hz2cq2fx1i96795f91q4nmkm934xynll2x";
+      type = "gem";
+    };
+    version = "0.11.2";
+  };
+  jaeger-client = {
+    dependencies = ["opentracing" "thrift"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "198m72c9w3wfwr1mq22dcjjm7d4jd0bci4lrq6zq2zvlzhi04n8l";
+      type = "gem";
+    };
+    version = "0.10.0";
+  };
+  jaro_winkler = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zz27z88qznix4r65gd9h56gl177snlfpgv10b0s69vi8qpl909l";
+      type = "gem";
+    };
+    version = "1.5.2";
+  };
+  json = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0sx97bm9by389rbzv8r1f43h06xcz8vwi3h5jv074gvparql7lcx";
+      type = "gem";
+    };
+    version = "2.2.0";
+  };
+  licensee = {
+    dependencies = ["rugged"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0w6d2smhg3kzcx4m2ii06akakypwhiglansk51bpx290hhc8h3pc";
+      type = "gem";
+    };
+    version = "8.9.2";
+  };
+  listen = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0inlw7vix61170vjr87h9izhjm5dbby8rbfrf1iryiv7b3kyvkxl";
+      type = "gem";
+    };
+    version = "0.5.3";
+  };
+  loofah = {
+    dependencies = ["crass" "nokogiri"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jk9fgn5ayzbqvzqm11gbkqvas77zdbpkvynlylyiwynclgrn040";
+      type = "gem";
+    };
+    version = "2.5.0";
+  };
+  memoizable = {
+    dependencies = ["thread_safe"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0v42bvghsvfpzybfazl14qhkrjvx0xlmxz0wwqc960ga1wld5x5c";
+      type = "gem";
+    };
+    version = "0.4.2";
+  };
+  method_source = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq";
+      type = "gem";
+    };
+    version = "0.9.2";
+  };
+  mime-types = {
+    dependencies = ["mime-types-data"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fjxy1jm52ixpnv3vg9ld9pr9f35gy0jp66i1njhqjvmnvq0iwwk";
+      type = "gem";
+    };
+    version = "3.2.2";
+  };
+  mime-types-data = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1m00pg19cm47n1qlcxgl91ajh2yq0fszvn1vy8fy0s1jkrp9fw4a";
+      type = "gem";
+    };
+    version = "3.2019.0331";
+  };
+  mini_mime = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1axm0rxyx3ss93wbmfkm78a6x03l8y4qy60rhkkiq0aza0vwq3ha";
+      type = "gem";
+    };
+    version = "1.0.2";
+  };
+  mini_portile2 = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy";
+      type = "gem";
+    };
+    version = "2.4.0";
+  };
+  minitest = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0g73x65hmjph8dg1h3rkzfg7ys3ffxm35hj35grw75fixmq53qyz";
+      type = "gem";
+    };
+    version = "5.14.0";
+  };
+  msgpack = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qr2mkm2i3m76zarvy7qgjl9596hmvjrg7x6w42vx8cfsbf5p0y1";
+      type = "gem";
+    };
+    version = "1.3.1";
+  };
+  multipart-post = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x";
+      type = "gem";
+    };
+    version = "2.0.0";
+  };
+  nokogiri = {
+    dependencies = ["mini_portile2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12j76d0bp608932xkzmfi638c7aqah57l437q8494znzbj610qnm";
+      type = "gem";
+    };
+    version = "1.10.9";
+  };
+  nokogumbo = {
+    dependencies = ["nokogiri"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09qc1c7acv9qm48vk2kzvnrq4ij8jrql1cv33nmv2nwmlggy0jyj";
+      type = "gem";
+    };
+    version = "1.5.0";
+  };
+  opentracing = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11lj1d8vq0hkb5hjz8q4lm82cddrggpbb33dhqfn7rxhwsmxgdfy";
+      type = "gem";
+    };
+    version = "0.5.0";
+  };
+  optimist = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05jxrp3nbn5iilc1k7ir90mfnwc5abc9h78s5rpm3qafwqxvcj4j";
+      type = "gem";
+    };
+    version = "3.0.0";
+  };
+  parallel = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1x1gzgjrdlkm1aw0hfpyphsxcx90qgs3y4gmp9km3dvf4hc4qm8r";
+      type = "gem";
+    };
+    version = "1.17.0";
+  };
+  parser = {
+    dependencies = ["ast"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0iirjc36irgwpfb58jdf9gli382cj893y9caqhxas8anpzzlikgc";
+      type = "gem";
+    };
+    version = "2.7.0.5";
+  };
+  proc_to_ast = {
+    dependencies = ["coderay" "parser" "unparser"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14c65w48bbzp5lh1cngqd1y25kqvfnq1iy49hlzshl12dsk3z9wj";
+      type = "gem";
+    };
+    version = "0.1.0";
+  };
+  procto = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "13imvg1x50rz3r0yyfbhxwv72lbf7q28qx9l9nfbb91h2n9ch58c";
+      type = "gem";
+    };
+    version = "0.0.3";
+  };
+  pry = {
+    dependencies = ["coderay" "method_source"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00rm71x0r1jdycwbs83lf9l6p494m99asakbvqxh8rz7zwnlzg69";
+      type = "gem";
+    };
+    version = "0.12.2";
+  };
+  public_suffix = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l";
+      type = "gem";
+    };
+    version = "3.0.3";
+  };
+  rack = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04qa0ry26hxfwkmvhi0fjlvbm8irzg66ahnpx2pp3bl6qbdc0i8w";
+      type = "gem";
+    };
+    version = "2.1.2";
+  };
+  rack-test = {
+    dependencies = ["rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  rails-dom-testing = {
+    dependencies = ["activesupport" "nokogiri"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i";
+      type = "gem";
+    };
+    version = "2.0.3";
+  };
+  rails-html-sanitizer = {
+    dependencies = ["loofah"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1icpqmxbppl4ynzmn6dx7wdil5hhq6fz707m9ya6d86c7ys8sd4f";
+      type = "gem";
+    };
+    version = "1.3.0";
+  };
+  rainbow = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk";
+      type = "gem";
+    };
+    version = "3.0.0";
+  };
+  rbtrace = {
+    dependencies = ["ffi" "msgpack" "optimist"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lwsq08i0aj8na5q5ba3gg02sx3wl58fi6m52svl5p7cy56ycdwi";
+      type = "gem";
+    };
+    version = "0.4.11";
+  };
+  rdoc = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1gh7sc3xd4rgl9z90181cq580r1xqn063mmv51wdrhhsrkkw2bi9";
+      type = "gem";
+    };
+    version = "6.2.0";
+  };
+  redis = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08v2y91q1pmv12g9zsvwj66w3s8j9d82yrmxgyv4y4gz380j3wyh";
+      type = "gem";
+    };
+    version = "4.1.3";
+  };
+  rouge = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "102rc07d78k5bkl0s9nd1gw6wz0w0zcvg4g5sl7z9xxi4r793c35";
+      type = "gem";
+    };
+    version = "3.19.0";
+  };
+  rspec = {
+    dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3";
+      type = "gem";
+    };
+    version = "3.8.0";
+  };
+  rspec-core = {
+    dependencies = ["rspec-support"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p";
+      type = "gem";
+    };
+    version = "3.8.0";
+  };
+  rspec-expectations = {
+    dependencies = ["diff-lcs" "rspec-support"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1c4gs5ybf7km0qshdm92p38zvg32n1j2kr5fgs2icacz7xf2y6fy";
+      type = "gem";
+    };
+    version = "3.8.3";
+  };
+  rspec-mocks = {
+    dependencies = ["diff-lcs" "rspec-support"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp";
+      type = "gem";
+    };
+    version = "3.8.0";
+  };
+  rspec-parameterized = {
+    dependencies = ["binding_ninja" "parser" "proc_to_ast" "rspec" "unparser"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1c0892jbaznnldk1wi24qxm70g4zhw2idqx516rhgdzgd7yh5j31";
+      type = "gem";
+    };
+    version = "0.4.2";
+  };
+  rspec-support = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609";
+      type = "gem";
+    };
+    version = "3.8.0";
+  };
+  rubocop = {
+    dependencies = ["jaro_winkler" "parallel" "parser" "rainbow" "ruby-progressbar" "unicode-display_width"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1cmw8ajaiidvrzjcsljh47f4l3lmcazqrzljgalj3szkr8ibkk5i";
+      type = "gem";
+    };
+    version = "0.69.0";
+  };
+  ruby-progressbar = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1cv2ym3rl09svw8940ny67bav7b2db4ms39i4raaqzkf59jmhglk";
+      type = "gem";
+    };
+    version = "1.10.0";
+  };
+  rugged = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rdidxgpk1b6y1jq9v77lcx5khq0s9q0s253lr8x57d3hk43iskx";
+      type = "gem";
+    };
+    version = "0.28.4.1";
+  };
+  safe_yaml = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0j7qv63p0vqcd838i2iy2f76c3dgwzkiz1d1xkg7n0pbnxj2vb56";
+      type = "gem";
+    };
+    version = "1.0.5";
+  };
+  sanitize = {
+    dependencies = ["crass" "nokogiri" "nokogumbo"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0j4j2a2mkk1a70vbx959pvx0gvr1zb9snjwvsppwj28bp0p0b2bv";
+      type = "gem";
+    };
+    version = "4.6.6";
+  };
+  sentry-raven = {
+    dependencies = ["faraday"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1j9rwbig24ry0smgvmkzdjrzyszniaswipinvflzxzzaz52v7483";
+      type = "gem";
+    };
+    version = "2.9.0";
+  };
+  simplecov = {
+    dependencies = ["docile" "json" "simplecov-html"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1135k46nik05sdab30yxb8264lqiz01c8v000g16cl9pjc4mxrdw";
+      type = "gem";
+    };
+    version = "0.17.1";
+  };
+  simplecov-html = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn";
+      type = "gem";
+    };
+    version = "0.10.2";
+  };
+  stringex = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15ns7j5smw04w6w7bqd5mm2qcl7w9lhwykyb974i4isgg9yc23ys";
+      type = "gem";
+    };
+    version = "2.8.5";
+  };
+  thread_safe = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
+      type = "gem";
+    };
+    version = "0.3.6";
+  };
+  thrift = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "02p107kwx7jnkh6fpdgvaji0xdg6xkaarngkqjml6s4zny4m8slv";
+      type = "gem";
+    };
+    version = "0.11.0.0";
+  };
+  timecop = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp";
+      type = "gem";
+    };
+    version = "0.9.1";
+  };
+  tzinfo = {
+    dependencies = ["thread_safe"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1i3jh086w1kbdj3k5l60lc3nwbanmzdf8yjj3mlrx9b2gjjxhi9r";
+      type = "gem";
+    };
+    version = "1.2.7";
+  };
+  unicode-display_width = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08kfiniak1pvg3gn5k6snpigzvhvhyg7slmm0s2qx5zkj62c1z2w";
+      type = "gem";
+    };
+    version = "1.6.0";
+  };
+  unparser = {
+    dependencies = ["abstract_type" "adamantium" "concord" "diff-lcs" "equalizer" "parser" "procto"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qg1apxlnf4kxfj9jpm6hhv73jsncbs4zpsgyan32p5r331q1gmx";
+      type = "gem";
+    };
+    version = "0.4.7";
+  };
+  vcr = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qh7lkj9b0shph84dw1wsrlaprl0jn1i4339fpsfy99402290zrr";
+      type = "gem";
+    };
+    version = "4.0.0";
+  };
+  webmock = {
+    dependencies = ["addressable" "crack" "hashdiff"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03994dxs4xayvkxqp01dd1ivhg4xxx7z35f7cxw7y2mwj3xn24ib";
+      type = "gem";
+    };
+    version = "3.4.2";
+  };
+  zeitwerk = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1akpm3pwvyiack2zk6giv9yn3cqb8pw6g40p4394pdc3xmy3s4k0";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/gitlab-shell/default.nix b/nixpkgs/pkgs/applications/version-management/gitlab/gitlab-shell/default.nix
new file mode 100644
index 000000000000..3e32e90a6d2a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/gitlab-shell/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitLab, buildGoPackage, ruby }:
+
+buildGoPackage rec {
+  pname = "gitlab-shell";
+  version = "13.2.0";
+  src = fetchFromGitLab {
+    owner = "gitlab-org";
+    repo = "gitlab-shell";
+    rev = "v${version}";
+    sha256 = "0drdpg4nmhzrmy8sl1f3hcd1278bpapgf0wmhi94xlyayh47j53a";
+  };
+
+  buildInputs = [ ruby ];
+
+  patches = [ ./remove-hardcoded-locations.patch ];
+
+  goPackagePath = "gitlab.com/gitlab-org/gitlab-shell";
+  goDeps = ./deps.nix;
+
+  postInstall = ''
+    cp -r "$NIX_BUILD_TOP/go/src/$goPackagePath"/bin/* $out/bin
+    cp -r "$NIX_BUILD_TOP/go/src/$goPackagePath"/{support,VERSION} $out/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "SSH access and repository management app for GitLab";
+    homepage = "http://www.gitlab.com/";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ fpletz globin talyz ];
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/gitlab-shell/deps.nix b/nixpkgs/pkgs/applications/version-management/gitlab/gitlab-shell/deps.nix
new file mode 100644
index 000000000000..b4105f18c102
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/gitlab-shell/deps.nix
@@ -0,0 +1,714 @@
+# file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix)
+[
+  {
+    goPackagePath = "bou.ke/monkey";
+    fetch = {
+      type = "git";
+      url = "https://github.com/bouk/monkey";
+      rev = "v1.0.1";
+      sha256 = "050y07pwx5zk7fchp0lhf35w417sml7lxkkzly8f932fy25rydz5";
+    };
+  }
+  {
+    goPackagePath = "cloud.google.com/go";
+    fetch = {
+      type = "git";
+      url = "https://code.googlesource.com/gocloud";
+      rev = "v0.26.0";
+      sha256 = "149v3ci17g6wd2pm18mzcncq5qpl9hwdjnz3rlbn5rfidyn46la1";
+    };
+  }
+  {
+    goPackagePath = "github.com/BurntSushi/toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/BurntSushi/toml";
+      rev = "v0.3.1";
+      sha256 = "1fjdwwfzyzllgiwydknf1pwjvy49qxfsczqx5gz3y0izs7as99j6";
+    };
+  }
+  {
+    goPackagePath = "github.com/alecthomas/template";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/template";
+      rev = "a0175ee3bccc";
+      sha256 = "0qjgvvh26vk1cyfq9fadyhfgdj36f1iapbmr5xp6zqipldz8ffxj";
+    };
+  }
+  {
+    goPackagePath = "github.com/alecthomas/units";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/units";
+      rev = "2efee857e7cf";
+      sha256 = "1j65b91qb9sbrml9cpabfrcf07wmgzzghrl7809hjjhrmbzri5bl";
+    };
+  }
+  {
+    goPackagePath = "github.com/beorn7/perks";
+    fetch = {
+      type = "git";
+      url = "https://github.com/beorn7/perks";
+      rev = "v1.0.0";
+      sha256 = "1i1nz1f6g55xi2y3aiaz5kqfgvknarbfl4f0sx4nyyb4s7xb1z9x";
+    };
+  }
+  {
+    goPackagePath = "github.com/certifi/gocertifi";
+    fetch = {
+      type = "git";
+      url = "https://github.com/certifi/gocertifi";
+      rev = "ee1a9a0726d2";
+      sha256 = "08l6lqaw83pva6fa0aafmhmy1mhb145av21772zfh3ij809a37i4";
+    };
+  }
+  {
+    goPackagePath = "github.com/client9/misspell";
+    fetch = {
+      type = "git";
+      url = "https://github.com/client9/misspell";
+      rev = "v0.3.4";
+      sha256 = "1vwf33wsc4la25zk9nylpbp9px3svlmldkm0bha4hp56jws4q9cs";
+    };
+  }
+  {
+    goPackagePath = "github.com/cloudflare/tableflip";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cloudflare/tableflip";
+      rev = "8392f1641731";
+      sha256 = "0by5hk8s0bhhl3kiw658p5g53zvc61k4q2wxnh1w64p5ghd1rfn8";
+    };
+  }
+  {
+    goPackagePath = "github.com/codahale/hdrhistogram";
+    fetch = {
+      type = "git";
+      url = "https://github.com/codahale/hdrhistogram";
+      rev = "3a0bb77429bd";
+      sha256 = "1zampgfjbxy192cbwdi7g86l1idxaam96d834wncnpfdwgh5kl57";
+    };
+  }
+  {
+    goPackagePath = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev = "v1.1.1";
+      sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y";
+    };
+  }
+  {
+    goPackagePath = "github.com/fsnotify/fsnotify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev = "v1.4.7";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath = "github.com/getsentry/raven-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/getsentry/raven-go";
+      rev = "v0.1.2";
+      sha256 = "1dl80kar4lzdcfl3w6jssi1ld6bv0rmx6sp6bz6rzysfr9ilm02z";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-kit/kit";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-kit/kit";
+      rev = "v0.8.0";
+      sha256 = "1rcywbc2pvab06qyf8pc2rdfjv7r6kxdv2v4wnpqnjhz225wqvc0";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-logfmt/logfmt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-logfmt/logfmt";
+      rev = "v0.3.0";
+      sha256 = "1gkgh3k5w1xwb2qbjq52p6azq3h1c1rr6pfwjlwj1zrijpzn2xb9";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-stack/stack";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-stack/stack";
+      rev = "v1.8.0";
+      sha256 = "0wk25751ryyvxclyp8jdk5c3ar0cmfr8lrjb66qbg4808x66b96v";
+    };
+  }
+  {
+    goPackagePath = "github.com/gogo/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gogo/protobuf";
+      rev = "v1.1.1";
+      sha256 = "1525pq7r6h3s8dncvq8gxi893p2nq8dxpzvq0nfl5b4p6mq0v1c2";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/glog";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/glog";
+      rev = "23def4e6c14b";
+      sha256 = "0jb2834rw5sykfr937fxi8hxi2zy80sj2bdn9b3jb4b26ksqng30";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/lint";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/lint";
+      rev = "06c8688daad7";
+      sha256 = "0xi94dwvz50a66bq1hp9fyqkym5mcpdxdb1hrfvicldgjf37lc47";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/mock";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/mock";
+      rev = "v1.1.1";
+      sha256 = "0ap8wb6pdl6ccmdb43advjll2ly4sz26wsc3axw0hbrjrybybzgy";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/protobuf";
+      rev = "v1.3.2";
+      sha256 = "1k1wb4zr0qbwgpvz9q5ws9zhlal8hq7dmq62pwxxriksayl6hzym";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/go-cmp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/go-cmp";
+      rev = "v0.2.0";
+      sha256 = "1fbv0x27k9sn8svafc0hjwsnckk864lv4yi7bvzrxvmd3d5hskds";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/uuid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/uuid";
+      rev = "v1.1.1";
+      sha256 = "0hfxcf9frkb57k6q0rdkrmnfs78ms21r1qfk9fhlqga2yh5xg8zb";
+    };
+  }
+  {
+    goPackagePath = "github.com/grpc-ecosystem/go-grpc-middleware";
+    fetch = {
+      type = "git";
+      url = "https://github.com/grpc-ecosystem/go-grpc-middleware";
+      rev = "v1.0.0";
+      sha256 = "0lwgxih021xfhfb1xb9la5f98bpgpaiz63sbllx77qwwl2rmhrsp";
+    };
+  }
+  {
+    goPackagePath = "github.com/grpc-ecosystem/go-grpc-prometheus";
+    fetch = {
+      type = "git";
+      url = "https://github.com/grpc-ecosystem/go-grpc-prometheus";
+      rev = "v1.2.0";
+      sha256 = "1lzk54h7np32b3acidg1ggbn8ppbnns0m71gcg9d1qkkdh8zrijl";
+    };
+  }
+  {
+    goPackagePath = "github.com/hpcloud/tail";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hpcloud/tail";
+      rev = "v1.0.0";
+      sha256 = "1njpzc0pi1acg5zx9y6vj9xi6ksbsc5d387rd6904hy6rh2m6kn0";
+    };
+  }
+  {
+    goPackagePath = "github.com/json-iterator/go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/json-iterator/go";
+      rev = "v1.1.6";
+      sha256 = "08caswxvdn7nvaqyj5kyny6ghpygandlbw9vxdj7l5vkp7q0s43r";
+    };
+  }
+  {
+    goPackagePath = "github.com/julienschmidt/httprouter";
+    fetch = {
+      type = "git";
+      url = "https://github.com/julienschmidt/httprouter";
+      rev = "v1.2.0";
+      sha256 = "1k8bylc9s4vpvf5xhqh9h246dl1snxrzzz0614zz88cdh8yzs666";
+    };
+  }
+  {
+    goPackagePath = "github.com/kelseyhightower/envconfig";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kelseyhightower/envconfig";
+      rev = "v1.3.0";
+      sha256 = "1zcq480ig7wbg4378qcfxznp2gzqmk7x6rbxizflvg9v2f376vrw";
+    };
+  }
+  {
+    goPackagePath = "github.com/kisielk/gotool";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kisielk/gotool";
+      rev = "v1.0.0";
+      sha256 = "14af2pa0ssyp8bp2mvdw184s5wcysk6akil3wzxmr05wwy951iwn";
+    };
+  }
+  {
+    goPackagePath = "github.com/konsorten/go-windows-terminal-sequences";
+    fetch = {
+      type = "git";
+      url = "https://github.com/konsorten/go-windows-terminal-sequences";
+      rev = "v1.0.1";
+      sha256 = "1lchgf27n276vma6iyxa0v1xds68n2g8lih5lavqnx5x6q5pw2ip";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/logfmt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/logfmt";
+      rev = "b84e30acd515";
+      sha256 = "02ldzxgznrfdzvghfraslhgp19la1fczcbzh7wm2zdc6lmpd1qq9";
+    };
+  }
+  {
+    goPackagePath = "github.com/libgit2/git2go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/libgit2/git2go";
+      rev = "ecaeb7a21d47";
+      sha256 = "14r7ryff93r49g94f6kg66xc0y6rwb31lj22s3qmzmlgywk0pgvr";
+    };
+  }
+  {
+    goPackagePath = "github.com/lightstep/lightstep-tracer-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/lightstep/lightstep-tracer-go";
+      rev = "v0.15.6";
+      sha256 = "10n5r66g44s6rnz5kf86s4a3p1g55kc1kxqhnk7bx7mlayndgpmb";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-shellwords";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-shellwords";
+      rev = "2444a32a19f4";
+      sha256 = "08zcgr1az1n8zaxzwdd205j86hczgyc52nxfnw5avpw7rrkf7v0d";
+    };
+  }
+  {
+    goPackagePath = "github.com/matttproud/golang_protobuf_extensions";
+    fetch = {
+      type = "git";
+      url = "https://github.com/matttproud/golang_protobuf_extensions";
+      rev = "v1.0.1";
+      sha256 = "1d0c1isd2lk9pnfq2nk0aih356j30k3h1gi2w0ixsivi5csl7jya";
+    };
+  }
+  {
+    goPackagePath = "github.com/modern-go/concurrent";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/concurrent";
+      rev = "bacd9c7ef1dd";
+      sha256 = "0s0fxccsyb8icjmiym5k7prcqx36hvgdwl588y0491gi18k5i4zs";
+    };
+  }
+  {
+    goPackagePath = "github.com/modern-go/reflect2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/reflect2";
+      rev = "v1.0.1";
+      sha256 = "06a3sablw53n1dqqbr2f53jyksbxdmmk8axaas4yvnhyfi55k4lf";
+    };
+  }
+  {
+    goPackagePath = "github.com/mwitkow/go-conntrack";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mwitkow/go-conntrack";
+      rev = "cc309e4a2223";
+      sha256 = "0nbrnpk7bkmqg9mzwsxlm0y8m7s9qd9phr1q30qlx2qmdmz7c1mf";
+    };
+  }
+  {
+    goPackagePath = "github.com/onsi/ginkgo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/onsi/ginkgo";
+      rev = "v1.7.0";
+      sha256 = "14wgpdrvpc35rdz3859bz53sc1g4vpr1fysy15wy3ff9gmqs14yg";
+    };
+  }
+  {
+    goPackagePath = "github.com/onsi/gomega";
+    fetch = {
+      type = "git";
+      url = "https://github.com/onsi/gomega";
+      rev = "v1.4.3";
+      sha256 = "1c8rqg5i2hz3snmq7s41yar1zjnzilb0fyiyhkg83v97afcfx79v";
+    };
+  }
+  {
+    goPackagePath = "github.com/opentracing/opentracing-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/opentracing/opentracing-go";
+      rev = "v1.0.2";
+      sha256 = "0i0ghg94dg8lk05mw5n23983wq04yjvkjmdkc9z5y1f3508938h9";
+    };
+  }
+  {
+    goPackagePath = "github.com/otiai10/copy";
+    fetch = {
+      type = "git";
+      url = "https://github.com/otiai10/copy";
+      rev = "v1.0.1";
+      sha256 = "0xmy0kfcx48q10s040579pcjswfaxlwhv7a2z07z9r92fdrgw03k";
+    };
+  }
+  {
+    goPackagePath = "github.com/otiai10/mint";
+    fetch = {
+      type = "git";
+      url = "https://github.com/otiai10/mint";
+      rev = "v1.2.3";
+      sha256 = "00slgv9mw2m22ix5prz2a98ji6kpzr0ap6bqs568rfdmk6hm5f0k";
+    };
+  }
+  {
+    goPackagePath = "github.com/philhofer/fwd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/philhofer/fwd";
+      rev = "v1.0.0";
+      sha256 = "1pg84khadh79v42y8sjsdgfb54vw2kzv7hpapxkifgj0yvcp30g2";
+    };
+  }
+  {
+    goPackagePath = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev = "v0.8.0";
+      sha256 = "001i6n71ghp2l6kdl3qq1v2vmghcz3kicv9a5wgcihrzigm75pp5";
+    };
+  }
+  {
+    goPackagePath = "github.com/pmezard/go-difflib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pmezard/go-difflib";
+      rev = "v1.0.0";
+      sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/client_golang";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_golang";
+      rev = "v1.0.0";
+      sha256 = "1f03ndyi3jq7zdxinnvzimz3s4z2374r6dikkc8i42xzb6d1bli6";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/client_model";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_model";
+      rev = "fd36f4220a90";
+      sha256 = "1bs5d72k361llflgl94c22n0w53j30rsfh84smgk8mbjbcmjsaa5";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/common";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/common";
+      rev = "v0.4.1";
+      sha256 = "0sf4sjdckblz1hqdfvripk3zyp8xq89w7q75kbsyg4c078af896s";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/procfs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/procfs";
+      rev = "v0.0.2";
+      sha256 = "0s7pvs7fgnfpmym3cd0k219av321h9sf3yvdlnn3qy0ps280lg7k";
+    };
+  }
+  {
+    goPackagePath = "github.com/sirupsen/logrus";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sirupsen/logrus";
+      rev = "v1.2.0";
+      sha256 = "0r6334x2bls8ddznvzaldx4g88msjjns4mlks95rqrrg7h0ijigg";
+    };
+  }
+  {
+    goPackagePath = "github.com/stretchr/objx";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/objx";
+      rev = "v0.1.1";
+      sha256 = "0iph0qmpyqg4kwv8jsx6a56a7hhqq8swrazv40ycxk9rzr0s8yls";
+    };
+  }
+  {
+    goPackagePath = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev = "v1.3.0";
+      sha256 = "0wjchp2c8xbgcbbq32w3kvblk6q6yn533g78nxl6iskq6y95lxsy";
+    };
+  }
+  {
+    goPackagePath = "github.com/tinylib/msgp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/tinylib/msgp";
+      rev = "v1.1.0";
+      sha256 = "08ha23sn14071ywrgxlyj7r523vzdwx1i83dcp1mqa830glgqaff";
+    };
+  }
+  {
+    goPackagePath = "github.com/uber-go/atomic";
+    fetch = {
+      type = "git";
+      url = "https://github.com/uber-go/atomic";
+      rev = "v1.3.2";
+      sha256 = "11pzvjys5ddjjgrv94pgk9pnip9yyb54z7idf33zk7p7xylpnsv6";
+    };
+  }
+  {
+    goPackagePath = "github.com/uber/jaeger-client-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/uber/jaeger-client-go";
+      rev = "v2.15.0";
+      sha256 = "0ki23m9zrf3vxp839fnp9ckr4m28y6mpad8g5s5lr5k8jkl0sfwj";
+    };
+  }
+  {
+    goPackagePath = "github.com/uber/jaeger-lib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/uber/jaeger-lib";
+      rev = "v1.5.0";
+      sha256 = "113fwpn80ylx970w8h7nfqnhh18dpx1jadbk7rbr8k68q4di4y0q";
+    };
+  }
+  {
+    goPackagePath = "gitlab.com/gitlab-org/gitaly";
+    fetch = {
+      type = "git";
+      url = "https://gitlab.com/gitlab-org/gitaly.git";
+      rev = "v1.68.0";
+      sha256 = "06w2qx9r7wxhpk6a3icqa0l6hr7x2j2k11kni1ksdx1m1100myjb";
+    };
+  }
+  {
+    goPackagePath = "gitlab.com/gitlab-org/labkit";
+    fetch = {
+      type = "git";
+      url = "https://gitlab.com/gitlab-org/labkit.git";
+      rev = "0c3fc7cdd57c";
+      sha256 = "0fpn37v7dhhdgd63v4mq9cna9wdzrsfams13qmjmps3xpdw2wr9i";
+    };
+  }
+  {
+    goPackagePath = "go.uber.org/atomic";
+    fetch = {
+      type = "git";
+      url = "https://github.com/uber-go/atomic";
+      rev = "v1.3.2";
+      sha256 = "11pzvjys5ddjjgrv94pgk9pnip9yyb54z7idf33zk7p7xylpnsv6";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "20be4c3c3ed5";
+      sha256 = "1ph7y8v30hc95h1dwr7vrhg1nzs47a261qin6zg8mhf12g5k2lxb";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/lint";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/lint";
+      rev = "d0100b6bd8b3";
+      sha256 = "0b0amr9x4ji66iv9ayfx7zrfx52k1m5g66qfcxkgj80qrb1y2yn7";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "d28f0bde5980";
+      sha256 = "18xj31h70m7xxb7gc86n9i21w6d7djbjz67zfaljm4jqskz6hxkf";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/oauth2";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/oauth2";
+      rev = "d2e6202438be";
+      sha256 = "0wbn75fd10485nb93bm4kqldqifdim5xqy4v7r5sdvimvf3fyhn7";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sync";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sync";
+      rev = "112230192c58";
+      sha256 = "05i2k43j2d0llq768hg5pf3hb2yhfzp9la1w5wp0rsnnzblr0lfn";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "953cdadca894";
+      sha256 = "0gkha4whk8xkcv3isigbs250akag99isxnd3v9xmy0kl3g88hxy1";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "v0.3.0";
+      sha256 = "0r6x6zjzhr8ksqlpiwm5gdd7s209kwk5p4lw54xjvz10cs3qlq19";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "2c0ae7006135";
+      sha256 = "1lsi2ssxajclj3bciz2a41v1vjv768ja3v6wnbyhxy8xphwkp4fk";
+    };
+  }
+  {
+    goPackagePath = "google.golang.org/appengine";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/appengine";
+      rev = "v1.1.0";
+      sha256 = "1pz202zszg8f35dk5pfhwgcdi3r6dx1l4yk6x6ly7nb4j45zi96x";
+    };
+  }
+  {
+    goPackagePath = "google.golang.org/genproto";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/go-genproto";
+      rev = "bd91e49a0898";
+      sha256 = "1f5q04h03q6fksbfkhz13ai5849rkkb8xrmmi7cxs4lzsi6ixkg8";
+    };
+  }
+  {
+    goPackagePath = "google.golang.org/grpc";
+    fetch = {
+      type = "git";
+      url = "https://github.com/grpc/grpc-go";
+      rev = "v1.24.0";
+      sha256 = "0h8mwv74vzcfb7p4ai247x094skxca71vjp4wpj2wzmri0x9p4v6";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/DataDog/dd-trace-go.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/DataDog/dd-trace-go.v1";
+      rev = "v1.7.0";
+      sha256 = "0j45skiiayfsaw8id4g20k51zfr0raj47a03q2icka5xrh3qj6yq";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/alecthomas/kingpin.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/alecthomas/kingpin.v2";
+      rev = "v2.2.6";
+      sha256 = "0mndnv3hdngr3bxp7yxfd47cas4prv98sqw534mx7vp38gd88n5r";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/check.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/check.v1";
+      rev = "20d25e280405";
+      sha256 = "0k1m83ji9l1a7ng8a7v40psbymxasmssbrrhpdv2wl4rhs0nc3np";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/fsnotify.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/fsnotify.v1";
+      rev = "v1.4.7";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/tomb.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/tomb.v1";
+      rev = "dd632973f1e7";
+      sha256 = "1lqmq1ag7s4b3gc3ddvr792c5xb5k6sfn0cchr3i2s7f1c231zjv";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "v2.2.2";
+      sha256 = "01wj12jzsdqlnidpyjssmj0r4yavlqy7dwrg7adqd8dicjc4ncsa";
+    };
+  }
+  {
+    goPackagePath = "honnef.co/go/tools";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dominikh/go-tools";
+      rev = "ea95bdfd59fc";
+      sha256 = "1763nw7pwpzkvzfnm63dgzcgbq9hwmq5l1nffchnhh77vgkaq4ic";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/gitlab-shell/remove-hardcoded-locations.patch b/nixpkgs/pkgs/applications/version-management/gitlab/gitlab-shell/remove-hardcoded-locations.patch
new file mode 100644
index 000000000000..ee00070df2d7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/gitlab-shell/remove-hardcoded-locations.patch
@@ -0,0 +1,57 @@
+diff --git a/internal/config/config.go b/internal/config/config.go
+index 2231851..c869930 100644
+--- a/internal/config/config.go
++++ b/internal/config/config.go
+@@ -3,7 +3,6 @@ package config
+ import (
+ 	"io/ioutil"
+ 	"net/url"
+-	"os"
+ 	"path"
+ 	"path/filepath"
+ 
+@@ -38,16 +37,13 @@ type Config struct {
+ }
+ 
+ func New() (*Config, error) {
+-	dir, err := os.Getwd()
+-	if err != nil {
+-		return nil, err
+-	}
++	dir := "/run/gitlab"
+ 
+ 	return NewFromDir(dir)
+ }
+ 
+ func NewFromDir(dir string) (*Config, error) {
+-	return newFromFile(path.Join(dir, configFile))
++	return newFromFile("/run/gitlab/shell-config.yml")
+ }
+ 
+ func newFromFile(filename string) (*Config, error) {
+diff --git a/internal/keyline/key_line.go b/internal/keyline/key_line.go
+index c29a320..c44b701 100644
+--- a/internal/keyline/key_line.go
++++ b/internal/keyline/key_line.go
+@@ -36,7 +36,7 @@ func NewPrincipalKeyLine(keyId string, principal string, rootDir string) (*KeyLi
+ }
+ 
+ func (k *KeyLine) ToString() string {
+-	command := fmt.Sprintf("%s %s-%s", path.Join(k.RootDir, executable.BinDir, executable.GitlabShell), k.Prefix, k.Id)
++	command := fmt.Sprintf("%s %s-%s", path.Join("/run/current-system/sw/bin", executable.GitlabShell), k.Prefix, k.Id)
+ 
+ 	return fmt.Sprintf(`command="%s",%s %s`, command, SshOptions, k.Value)
+ }
+diff --git a/support/gitlab_config.rb b/support/gitlab_config.rb
+index 52ac5ee..d96baa3 100644
+--- a/support/gitlab_config.rb
++++ b/support/gitlab_config.rb
+@@ -7,7 +7,7 @@ class GitlabConfig
+   attr_reader :config
+ 
+   def initialize
+-    @config = YAML.load_file(File.join(ROOT_PATH, 'config.yml'))
++    @config = YAML.load_file('/run/gitlab/shell-config.yml')
+   end
+ 
+   def auth_file
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/gitlab-workhorse/default.nix b/nixpkgs/pkgs/applications/version-management/gitlab/gitlab-workhorse/default.nix
new file mode 100644
index 000000000000..6386a9cc5aa7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/gitlab-workhorse/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitLab, git, buildGoPackage }:
+
+buildGoPackage rec {
+  pname = "gitlab-workhorse";
+
+  version = "8.31.2";
+
+  src = fetchFromGitLab {
+    owner = "gitlab-org";
+    repo = "gitlab-workhorse";
+    rev = "v${version}";
+    sha256 = "0wvhhjfb490mjdrmc9xwr3qfh3941xn3b02c757ghrvzwv329wvg";
+  };
+
+  goPackagePath = "gitlab.com/gitlab-org/gitlab-workhorse";
+  goDeps = ./deps.nix;
+  buildInputs = [ git ];
+  buildFlagsArray = "-ldflags=-X main.Version=${version}";
+
+  # gitlab-workhorse depends on an older version of labkit which
+  # contains old, vendored versions of some packages; gitlab-workhorse
+  # also explicitly depends on newer versions of these libraries,
+  # but buildGoPackage exposes the vendored versions instead,
+  # leading to compilation errors. Since the vendored libraries
+  # aren't used here anyway, we'll just remove them.
+  postConfigure = ''
+    rm -r "$NIX_BUILD_TOP/go/src/gitlab.com/gitlab-org/labkit/vendor"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.gitlab.com/";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ fpletz globin talyz ];
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/gitlab-workhorse/deps.nix b/nixpkgs/pkgs/applications/version-management/gitlab/gitlab-workhorse/deps.nix
new file mode 100644
index 000000000000..530eb073c7b5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/gitlab-workhorse/deps.nix
@@ -0,0 +1,1614 @@
+# file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix)
+[
+  {
+    goPackagePath = "cloud.google.com/go";
+    fetch = {
+      type = "git";
+      url = "https://code.googlesource.com/gocloud";
+      rev = "v0.50.0";
+      sha256 = "0pbz5migljd5whxh6z1w79cwx93n85mcs3x1bckl27yzaa4lvqsl";
+    };
+  }
+  {
+    goPackagePath = "dmitri.shuralyov.com/gpu/mtl";
+    fetch = {
+      type = "git";
+      url = "https://dmitri.shuralyov.com/gpu/mtl";
+      rev = "666a987793e9";
+      sha256 = "1isd03hgiwcf2ld1rlp0plrnfz7r4i7c5q4kb6hkcd22axnmrv0z";
+    };
+  }
+  {
+    goPackagePath = "github.com/BurntSushi/toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/BurntSushi/toml";
+      rev = "v0.3.1";
+      sha256 = "1fjdwwfzyzllgiwydknf1pwjvy49qxfsczqx5gz3y0izs7as99j6";
+    };
+  }
+  {
+    goPackagePath = "github.com/BurntSushi/xgb";
+    fetch = {
+      type = "git";
+      url = "https://github.com/BurntSushi/xgb";
+      rev = "27f122750802";
+      sha256 = "18lp2x8f5bljvlz0r7xn744f0c9rywjsb9ifiszqqdcpwhsa0kvj";
+    };
+  }
+  {
+    goPackagePath = "github.com/FZambia/sentinel";
+    fetch = {
+      type = "git";
+      url = "https://github.com/FZambia/sentinel";
+      rev = "v1.0.0";
+      sha256 = "14cfngdy0n5rg7nrvxg1ydcjd18v0s8h33jx9wkln5ms0d59kfly";
+    };
+  }
+  {
+    goPackagePath = "github.com/Joker/hpp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Joker/hpp";
+      rev = "6893e659854a";
+      sha256 = "0lsx63c28rzqigv3lwzznqacpk7nr0dn6ig37v023x8lzc728ix5";
+    };
+  }
+  {
+    goPackagePath = "github.com/Joker/jade";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Joker/jade";
+      rev = "v1.0.0";
+      sha256 = "0k9b8dcwwhajw6rzjmakqwmhw9z192pzzdhppcvam6dy63yl4zjf";
+    };
+  }
+  {
+    goPackagePath = "github.com/Shopify/goreferrer";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Shopify/goreferrer";
+      rev = "ec9c9a553398";
+      sha256 = "0d740psj8czks1hl0nr6nlrwfbwq3nc51jj2p91d1wyhhmgn6jmn";
+    };
+  }
+  {
+    goPackagePath = "github.com/ajg/form";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ajg/form";
+      rev = "v1.5.1";
+      sha256 = "1d6sxzzf9yycdf8jm5877y0khmhkmhxfw3sc4xpdcsrdlc7gqh5a";
+    };
+  }
+  {
+    goPackagePath = "github.com/alecthomas/template";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/template";
+      rev = "a0175ee3bccc";
+      sha256 = "0qjgvvh26vk1cyfq9fadyhfgdj36f1iapbmr5xp6zqipldz8ffxj";
+    };
+  }
+  {
+    goPackagePath = "github.com/alecthomas/units";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/units";
+      rev = "2efee857e7cf";
+      sha256 = "1j65b91qb9sbrml9cpabfrcf07wmgzzghrl7809hjjhrmbzri5bl";
+    };
+  }
+  {
+    goPackagePath = "github.com/aymerick/raymond";
+    fetch = {
+      type = "git";
+      url = "https://github.com/aymerick/raymond";
+      rev = "v2.0.2";
+      sha256 = "1w6am4142k8lyjnwwcgx94c2d8zviflzi0a9c81gn2j0gyx475i3";
+    };
+  }
+  {
+    goPackagePath = "github.com/beorn7/perks";
+    fetch = {
+      type = "git";
+      url = "https://github.com/beorn7/perks";
+      rev = "v1.0.0";
+      sha256 = "1i1nz1f6g55xi2y3aiaz5kqfgvknarbfl4f0sx4nyyb4s7xb1z9x";
+    };
+  }
+  {
+    goPackagePath = "github.com/certifi/gocertifi";
+    fetch = {
+      type = "git";
+      url = "https://github.com/certifi/gocertifi";
+      rev = "ee1a9a0726d2";
+      sha256 = "08l6lqaw83pva6fa0aafmhmy1mhb145av21772zfh3ij809a37i4";
+    };
+  }
+  {
+    goPackagePath = "github.com/chzyer/logex";
+    fetch = {
+      type = "git";
+      url = "https://github.com/chzyer/logex";
+      rev = "v1.1.10";
+      sha256 = "08pbjj3wx9acavlwyr055isa8a5hnmllgdv5k6ra60l5y1brmlq4";
+    };
+  }
+  {
+    goPackagePath = "github.com/chzyer/readline";
+    fetch = {
+      type = "git";
+      url = "https://github.com/chzyer/readline";
+      rev = "2972be24d48e";
+      sha256 = "104q8dazj8yf6b089jjr82fy9h1g80zyyzvp3g8b44a7d8ngjj6r";
+    };
+  }
+  {
+    goPackagePath = "github.com/chzyer/test";
+    fetch = {
+      type = "git";
+      url = "https://github.com/chzyer/test";
+      rev = "a1ea475d72b1";
+      sha256 = "0rns2aqk22i9xsgyap0pq8wi4cfaxsri4d9q6xxhhyma8jjsnj2k";
+    };
+  }
+  {
+    goPackagePath = "github.com/client9/misspell";
+    fetch = {
+      type = "git";
+      url = "https://github.com/client9/misspell";
+      rev = "v0.3.4";
+      sha256 = "1vwf33wsc4la25zk9nylpbp9px3svlmldkm0bha4hp56jws4q9cs";
+    };
+  }
+  {
+    goPackagePath = "github.com/client9/reopen";
+    fetch = {
+      type = "git";
+      url = "https://github.com/client9/reopen";
+      rev = "v1.0.0";
+      sha256 = "0f0dpdbmvk7w518c6zjhlmp65y55vvx47x4lq9pgzvcbsvjsf18s";
+    };
+  }
+  {
+    goPackagePath = "github.com/cloudflare/tableflip";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cloudflare/tableflip";
+      rev = "8392f1641731";
+      sha256 = "0by5hk8s0bhhl3kiw658p5g53zvc61k4q2wxnh1w64p5ghd1rfn8";
+    };
+  }
+  {
+    goPackagePath = "github.com/codahale/hdrhistogram";
+    fetch = {
+      type = "git";
+      url = "https://github.com/codahale/hdrhistogram";
+      rev = "3a0bb77429bd";
+      sha256 = "1zampgfjbxy192cbwdi7g86l1idxaam96d834wncnpfdwgh5kl57";
+    };
+  }
+  {
+    goPackagePath = "github.com/codegangsta/inject";
+    fetch = {
+      type = "git";
+      url = "https://github.com/codegangsta/inject";
+      rev = "33e0aa1cb7c0";
+      sha256 = "1jqakr3z9l60qhcgrdzsb6rlk8ikcamisw0g2ndmrf27s0ibfcaj";
+    };
+  }
+  {
+    goPackagePath = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev = "v1.1.1";
+      sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y";
+    };
+  }
+  {
+    goPackagePath = "github.com/dgrijalva/jwt-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dgrijalva/jwt-go";
+      rev = "v3.2.0";
+      sha256 = "08m27vlms74pfy5z79w67f9lk9zkx6a9jd68k3c4msxy75ry36mp";
+    };
+  }
+  {
+    goPackagePath = "github.com/eknkc/amber";
+    fetch = {
+      type = "git";
+      url = "https://github.com/eknkc/amber";
+      rev = "cdade1c07385";
+      sha256 = "152w97yckwncgw7lwjvgd8d00wy6y0nxzlvx72kl7nqqxs9vhxd9";
+    };
+  }
+  {
+    goPackagePath = "github.com/fatih/structs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fatih/structs";
+      rev = "v1.1.0";
+      sha256 = "1wrhb8wp8zpzggl61lapb627lw8yv281abvr6vqakmf569nswa9q";
+    };
+  }
+  {
+    goPackagePath = "github.com/flosch/pongo2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/flosch/pongo2";
+      rev = "bbf5a6c351f4";
+      sha256 = "0yqh58phznnxakm64w82gawrpndb0r85vsd1s7h244qqrq7w4avq";
+    };
+  }
+  {
+    goPackagePath = "github.com/fsnotify/fsnotify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev = "v1.4.7";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath = "github.com/gavv/monotime";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gavv/monotime";
+      rev = "30dba4353424";
+      sha256 = "0w67yyc9y11dp7lp4b712dkcgbiln1qmgfx1nbbrw3mfkzr61d7g";
+    };
+  }
+  {
+    goPackagePath = "github.com/getsentry/raven-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/getsentry/raven-go";
+      rev = "v0.1.2";
+      sha256 = "1dl80kar4lzdcfl3w6jssi1ld6bv0rmx6sp6bz6rzysfr9ilm02z";
+    };
+  }
+  {
+    goPackagePath = "github.com/getsentry/sentry-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/getsentry/sentry-go";
+      rev = "v0.3.0";
+      sha256 = "1919lhvg1swcqyfa6mck6nz53c7n4df21jsz46f7x4wncb6f5il1";
+    };
+  }
+  {
+    goPackagePath = "github.com/gin-contrib/sse";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gin-contrib/sse";
+      rev = "5545eab6dad3";
+      sha256 = "0jhcvi66rn7c1wg3rf7q7sylrvlk7c40yk79c5lypnz1dpsdcrb5";
+    };
+  }
+  {
+    goPackagePath = "github.com/gin-gonic/gin";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gin-gonic/gin";
+      rev = "v1.4.0";
+      sha256 = "19nxip48p2s8l7p1p7wpd5li2fcngi4c58rgcg71izdmsmj2iw1d";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-check/check";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-check/check";
+      rev = "788fd7840127";
+      sha256 = "0v3bim0j375z81zrpr5qv42knqs0y2qv2vkjiqi5axvb78slki1a";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-errors/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-errors/errors";
+      rev = "v1.0.1";
+      sha256 = "0rznpknk19rxkr7li6dqs52c26pjazp69lh493l4ny4sxn5922lp";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-gl/glfw";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-gl/glfw";
+      rev = "12ad95a8df72";
+      sha256 = "0ahw4a1lk7wqn6m0sjngsv2zc08kxxj259ai6g4kf11lmidszm9s";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-kit/kit";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-kit/kit";
+      rev = "v0.8.0";
+      sha256 = "1rcywbc2pvab06qyf8pc2rdfjv7r6kxdv2v4wnpqnjhz225wqvc0";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-logfmt/logfmt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-logfmt/logfmt";
+      rev = "v0.3.0";
+      sha256 = "1gkgh3k5w1xwb2qbjq52p6azq3h1c1rr6pfwjlwj1zrijpzn2xb9";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-martini/martini";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-martini/martini";
+      rev = "22fa46961aab";
+      sha256 = "01ip3mwbnm5isq120ww73yrvbcn6n5944prhhbyf2ggyf6g46ylh";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-stack/stack";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-stack/stack";
+      rev = "v1.8.0";
+      sha256 = "0wk25751ryyvxclyp8jdk5c3ar0cmfr8lrjb66qbg4808x66b96v";
+    };
+  }
+  {
+    goPackagePath = "github.com/gogo/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gogo/protobuf";
+      rev = "v1.1.1";
+      sha256 = "1525pq7r6h3s8dncvq8gxi893p2nq8dxpzvq0nfl5b4p6mq0v1c2";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/gddo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/gddo";
+      rev = "af0f2af80721";
+      sha256 = "0ja0xwgg31i2fyqn0b9sf1rjsqkw34kwrr0k0iczzn19mhhc3m7j";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/glog";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/glog";
+      rev = "23def4e6c14b";
+      sha256 = "0jb2834rw5sykfr937fxi8hxi2zy80sj2bdn9b3jb4b26ksqng30";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/groupcache";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/groupcache";
+      rev = "215e87163ea7";
+      sha256 = "07555csk49ara636bhl2vbzziayls3qks8964z0q29g065zliy9j";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/lint";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/lint";
+      rev = "06c8688daad7";
+      sha256 = "0xi94dwvz50a66bq1hp9fyqkym5mcpdxdb1hrfvicldgjf37lc47";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/mock";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/mock";
+      rev = "v1.3.1";
+      sha256 = "1wnfa8njxdym1qb664dmfnkpm4pmqy22hqjlqpwaaiqhglb5g9d1";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/protobuf";
+      rev = "v1.3.2";
+      sha256 = "1k1wb4zr0qbwgpvz9q5ws9zhlal8hq7dmq62pwxxriksayl6hzym";
+    };
+  }
+  {
+    goPackagePath = "github.com/gomodule/redigo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gomodule/redigo";
+      rev = "v2.0.0";
+      sha256 = "1kg7s8027b4g1sfw0v3nh30c15j407kv684s53gg281r807dnfpk";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/btree";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/btree";
+      rev = "v1.0.0";
+      sha256 = "0ba430m9fbnagacp57krgidsyrgp3ycw5r7dj71brgp5r52g82p6";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/go-cmp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/go-cmp";
+      rev = "v0.4.0";
+      sha256 = "1x5pvl3fb5sbyng7i34431xycnhmx8xx94gq2n19g6p0vz68z2v2";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/go-querystring";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/go-querystring";
+      rev = "v1.0.0";
+      sha256 = "0xl12bqyvmn4xcnf8p9ksj9rmnr7s40pvppsdmy8n9bzw1db0iwz";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/martian";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/martian";
+      rev = "v2.1.0";
+      sha256 = "197hil6vrjk50b9wvwyzf61csid83whsjj6ik8mc9r2lryxlyyrp";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/pprof";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/pprof";
+      rev = "d4f498aebedc";
+      sha256 = "1r4pn70yy5vfl38jx9v8224n7jkhcm5wg28vv48izgznlgv7h024";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/renameio";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/renameio";
+      rev = "v0.1.0";
+      sha256 = "1ki2x5a9nrj17sn092d6n4zr29lfg5ydv4xz5cp58z6cw8ip43jx";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/uuid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/uuid";
+      rev = "v1.1.1";
+      sha256 = "0hfxcf9frkb57k6q0rdkrmnfs78ms21r1qfk9fhlqga2yh5xg8zb";
+    };
+  }
+  {
+    goPackagePath = "github.com/googleapis/gax-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/googleapis/gax-go";
+      rev = "v2.0.5";
+      sha256 = "1lxawwngv6miaqd25s3ba0didfzylbwisd2nz7r4gmbmin6jsjrx";
+    };
+  }
+  {
+    goPackagePath = "github.com/gopherjs/gopherjs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gopherjs/gopherjs";
+      rev = "0766667cb4d1";
+      sha256 = "13pfc9sxiwjky2lm1xb3i3lcisn8p6mgjk2d927l7r92ysph8dmw";
+    };
+  }
+  {
+    goPackagePath = "github.com/gorilla/schema";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gorilla/schema";
+      rev = "v1.1.0";
+      sha256 = "14d31i3h6bg83r7ncmwm2pirab66z9hza38in18l89pbazxyh2n9";
+    };
+  }
+  {
+    goPackagePath = "github.com/gorilla/websocket";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gorilla/websocket";
+      rev = "v1.4.0";
+      sha256 = "00i4vb31nsfkzzk7swvx3i75r2d960js3dri1875vypk3v2s0pzk";
+    };
+  }
+  {
+    goPackagePath = "github.com/grpc-ecosystem/go-grpc-middleware";
+    fetch = {
+      type = "git";
+      url = "https://github.com/grpc-ecosystem/go-grpc-middleware";
+      rev = "v1.0.0";
+      sha256 = "0lwgxih021xfhfb1xb9la5f98bpgpaiz63sbllx77qwwl2rmhrsp";
+    };
+  }
+  {
+    goPackagePath = "github.com/grpc-ecosystem/go-grpc-prometheus";
+    fetch = {
+      type = "git";
+      url = "https://github.com/grpc-ecosystem/go-grpc-prometheus";
+      rev = "v1.2.0";
+      sha256 = "1lzk54h7np32b3acidg1ggbn8ppbnns0m71gcg9d1qkkdh8zrijl";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/golang-lru";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/golang-lru";
+      rev = "v0.5.1";
+      sha256 = "13f870cvk161bzjj6x41l45r5x9i1z9r2ymwmvm7768kg08zznpy";
+    };
+  }
+  {
+    goPackagePath = "github.com/hpcloud/tail";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hpcloud/tail";
+      rev = "v1.0.0";
+      sha256 = "1njpzc0pi1acg5zx9y6vj9xi6ksbsc5d387rd6904hy6rh2m6kn0";
+    };
+  }
+  {
+    goPackagePath = "github.com/ianlancetaylor/demangle";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ianlancetaylor/demangle";
+      rev = "5e5cf60278f6";
+      sha256 = "1fhjk11cip9c3jyj1byz9z77n6n2rlxmyz0xjx1zpn1da3cvri75";
+    };
+  }
+  {
+    goPackagePath = "github.com/imkira/go-interpol";
+    fetch = {
+      type = "git";
+      url = "https://github.com/imkira/go-interpol";
+      rev = "v1.1.0";
+      sha256 = "180h3pf2p0pch6hmqf45wk7wd87md83d3p122f8ll43x5nja5mph";
+    };
+  }
+  {
+    goPackagePath = "github.com/iris-contrib/blackfriday";
+    fetch = {
+      type = "git";
+      url = "https://github.com/iris-contrib/blackfriday";
+      rev = "v2.0.0";
+      sha256 = "1gkizavajqmxm79il8r6cbi0g9ls3vwdh9wr0zy89vc9sq17p3im";
+    };
+  }
+  {
+    goPackagePath = "github.com/iris-contrib/formBinder";
+    fetch = {
+      type = "git";
+      url = "https://github.com/iris-contrib/formBinder";
+      rev = "v5.0.0";
+      sha256 = "0mqk6j7a9d3y28ad4ylqc7z5w4hmn1ws5wwnyll918xn1wkzr5rg";
+    };
+  }
+  {
+    goPackagePath = "github.com/iris-contrib/go.uuid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/iris-contrib/go.uuid";
+      rev = "v2.0.0";
+      sha256 = "0nc0ggn0a6bcwdrwinnx3z6889x65c20a2dwja0n8can3xblxs35";
+    };
+  }
+  {
+    goPackagePath = "github.com/iris-contrib/httpexpect";
+    fetch = {
+      type = "git";
+      url = "https://github.com/iris-contrib/httpexpect";
+      rev = "ebe99fcebbce";
+      sha256 = "126c50c6r5l2gdn60jirpb54pqwswxag3wgrv6wcn998h9w9gv8c";
+    };
+  }
+  {
+    goPackagePath = "github.com/jfbus/httprs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jfbus/httprs";
+      rev = "b0af8319bb15";
+      sha256 = "05cg9a27i9g92n3bivqrrqznccl5lfadlk97sp9izmd368dl5qvc";
+    };
+  }
+  {
+    goPackagePath = "github.com/jpillora/backoff";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jpillora/backoff";
+      rev = "8eab2debe79d";
+      sha256 = "1m5z0703094vhbbmp6s7n6kk7ci5s1pfjq466mz14zp8d1w0yn3x";
+    };
+  }
+  {
+    goPackagePath = "github.com/json-iterator/go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/json-iterator/go";
+      rev = "v1.1.6";
+      sha256 = "08caswxvdn7nvaqyj5kyny6ghpygandlbw9vxdj7l5vkp7q0s43r";
+    };
+  }
+  {
+    goPackagePath = "github.com/jstemmer/go-junit-report";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jstemmer/go-junit-report";
+      rev = "v0.9.1";
+      sha256 = "1knip80yir1cdsjlb3rzy0a4w3kl4ljpiciaz6hjzwqlfhnv7bkw";
+    };
+  }
+  {
+    goPackagePath = "github.com/jtolds/gls";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jtolds/gls";
+      rev = "v4.20.0";
+      sha256 = "1k7xd2q2ysv2xsh373qs801v6f359240kx0vrl0ydh7731lngvk6";
+    };
+  }
+  {
+    goPackagePath = "github.com/juju/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/juju/errors";
+      rev = "089d3ea4e4d5";
+      sha256 = "056za75j1zgksky7pbf0pkjqz5ha15g3wj3p4ma10m9sywdyq79r";
+    };
+  }
+  {
+    goPackagePath = "github.com/juju/loggo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/juju/loggo";
+      rev = "584905176618";
+      sha256 = "0hzi0652y74jf62wwyi9gf8bzrs7ynvhjfqc8rwr4l799d7i5gd4";
+    };
+  }
+  {
+    goPackagePath = "github.com/juju/testing";
+    fetch = {
+      type = "git";
+      url = "https://github.com/juju/testing";
+      rev = "472a3e8b2073";
+      sha256 = "05wjc2k0kwbam7anaxwnj30pl03dcdbrsz32icd70zl70ipsqsw4";
+    };
+  }
+  {
+    goPackagePath = "github.com/julienschmidt/httprouter";
+    fetch = {
+      type = "git";
+      url = "https://github.com/julienschmidt/httprouter";
+      rev = "v1.2.0";
+      sha256 = "1k8bylc9s4vpvf5xhqh9h246dl1snxrzzz0614zz88cdh8yzs666";
+    };
+  }
+  {
+    goPackagePath = "github.com/k0kubun/colorstring";
+    fetch = {
+      type = "git";
+      url = "https://github.com/k0kubun/colorstring";
+      rev = "9440f1994b88";
+      sha256 = "0isskya7ky4k9znrh85crfc2pxwyfz2s8j1a5cbjb8b8zf2v0qbj";
+    };
+  }
+  {
+    goPackagePath = "github.com/kataras/golog";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kataras/golog";
+      rev = "99c81de45f40";
+      sha256 = "1dgrsvhzymgj7da54ldv8plkxk3n8zh3kc995qxl6mrpz65j801p";
+    };
+  }
+  {
+    goPackagePath = "github.com/kataras/iris";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kataras/iris";
+      rev = "v11.1.1";
+      sha256 = "1rxpr5hdj9mji26mlfp4zic0pc6nh93akzccw24a5kynj07g68wg";
+    };
+  }
+  {
+    goPackagePath = "github.com/kataras/pio";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kataras/pio";
+      rev = "ea782b38602d";
+      sha256 = "0ca29wmkpx19qwnvi4fja3avkxkzz14x9wyzmg1l9074bxbj8cgj";
+    };
+  }
+  {
+    goPackagePath = "github.com/kelseyhightower/envconfig";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kelseyhightower/envconfig";
+      rev = "v1.3.0";
+      sha256 = "1zcq480ig7wbg4378qcfxznp2gzqmk7x6rbxizflvg9v2f376vrw";
+    };
+  }
+  {
+    goPackagePath = "github.com/kisielk/gotool";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kisielk/gotool";
+      rev = "v1.0.0";
+      sha256 = "14af2pa0ssyp8bp2mvdw184s5wcysk6akil3wzxmr05wwy951iwn";
+    };
+  }
+  {
+    goPackagePath = "github.com/klauspost/compress";
+    fetch = {
+      type = "git";
+      url = "https://github.com/klauspost/compress";
+      rev = "v1.4.0";
+      sha256 = "1y7951q0ji894d111lqqbacq64cxyi2dxsni5sqi9488zsasgw8s";
+    };
+  }
+  {
+    goPackagePath = "github.com/klauspost/cpuid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/klauspost/cpuid";
+      rev = "e7e905edc00e";
+      sha256 = "0cmyv3rwv5r5iqvvfhbiwp3jsfa40c6xfm42nxbngd5lygjcwwgf";
+    };
+  }
+  {
+    goPackagePath = "github.com/konsorten/go-windows-terminal-sequences";
+    fetch = {
+      type = "git";
+      url = "https://github.com/konsorten/go-windows-terminal-sequences";
+      rev = "v1.0.2";
+      sha256 = "09mn209ika7ciy87xf2x31dq5fnqw39jidgaljvmqxwk7ff1hnx7";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/logfmt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/logfmt";
+      rev = "b84e30acd515";
+      sha256 = "02ldzxgznrfdzvghfraslhgp19la1fczcbzh7wm2zdc6lmpd1qq9";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/pretty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/pretty";
+      rev = "v0.1.0";
+      sha256 = "18m4pwg2abd0j9cn5v3k2ksk9ig4vlwxmlw9rrglanziv9l967qp";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/pty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/pty";
+      rev = "v1.1.1";
+      sha256 = "0383f0mb9kqjvncqrfpidsf8y6ns5zlrc91c6a74xpyxjwvzl2y6";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/text";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/text";
+      rev = "v0.1.0";
+      sha256 = "1gm5bsl01apvc84bw06hasawyqm4q84vx1pm32wr9jnd7a8vjgj1";
+    };
+  }
+  {
+    goPackagePath = "github.com/labstack/echo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/labstack/echo";
+      rev = "v4.1.10";
+      sha256 = "0qg9ykmhgldiv2v1w8sz8x0j0bgqf11ghzrim59fb6pxz8qgg25h";
+    };
+  }
+  {
+    goPackagePath = "github.com/labstack/gommon";
+    fetch = {
+      type = "git";
+      url = "https://github.com/labstack/gommon";
+      rev = "v0.3.0";
+      sha256 = "18z7akyzm75p6anm4b8qkqgm4iivx50z07hi5wf50w1pbsvbcdi0";
+    };
+  }
+  {
+    goPackagePath = "github.com/libgit2/git2go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/libgit2/git2go";
+      rev = "ecaeb7a21d47";
+      sha256 = "14r7ryff93r49g94f6kg66xc0y6rwb31lj22s3qmzmlgywk0pgvr";
+    };
+  }
+  {
+    goPackagePath = "github.com/lightstep/lightstep-tracer-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/lightstep/lightstep-tracer-go";
+      rev = "v0.15.6";
+      sha256 = "10n5r66g44s6rnz5kf86s4a3p1g55kc1kxqhnk7bx7mlayndgpmb";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-colorable";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-colorable";
+      rev = "v0.1.2";
+      sha256 = "0512jm3wmzkkn7d99x9wflyqf48n5ri3npy1fqkq6l6adc5mni3n";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-isatty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-isatty";
+      rev = "v0.0.9";
+      sha256 = "0i3km37lajahh1y2392g4hpgvq05arcgiiv93yhzxxyv0fpqj72m";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/goveralls";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/goveralls";
+      rev = "v0.0.2";
+      sha256 = "13ffdikvc594g1mryhi94m87skr7irwkjnpxp8ad2kprn6syfslp";
+    };
+  }
+  {
+    goPackagePath = "github.com/matttproud/golang_protobuf_extensions";
+    fetch = {
+      type = "git";
+      url = "https://github.com/matttproud/golang_protobuf_extensions";
+      rev = "v1.0.1";
+      sha256 = "1d0c1isd2lk9pnfq2nk0aih356j30k3h1gi2w0ixsivi5csl7jya";
+    };
+  }
+  {
+    goPackagePath = "github.com/microcosm-cc/bluemonday";
+    fetch = {
+      type = "git";
+      url = "https://github.com/microcosm-cc/bluemonday";
+      rev = "v1.0.2";
+      sha256 = "0j0aylsxqjcj49w7ph8cmpaqjlpvg7mb5mrcrd9bg71dlb9z9ir2";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/copystructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/copystructure";
+      rev = "v1.0.0";
+      sha256 = "05njg92w1088v4yl0js0zdrpfq6k37i9j14mxkr3p90p5yd9rrrr";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/reflectwalk";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/reflectwalk";
+      rev = "v1.0.0";
+      sha256 = "0wzkp0fdx22n8f7y9y37dgmnlrlfsv9zjdb48cbx7rsqsbnny7l0";
+    };
+  }
+  {
+    goPackagePath = "github.com/modern-go/concurrent";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/concurrent";
+      rev = "bacd9c7ef1dd";
+      sha256 = "0s0fxccsyb8icjmiym5k7prcqx36hvgdwl588y0491gi18k5i4zs";
+    };
+  }
+  {
+    goPackagePath = "github.com/modern-go/reflect2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/reflect2";
+      rev = "v1.0.1";
+      sha256 = "06a3sablw53n1dqqbr2f53jyksbxdmmk8axaas4yvnhyfi55k4lf";
+    };
+  }
+  {
+    goPackagePath = "github.com/moul/http2curl";
+    fetch = {
+      type = "git";
+      url = "https://github.com/moul/http2curl";
+      rev = "v1.0.0";
+      sha256 = "15bpx33d3ygya8dg8hbsn24h7acpajl27006pj8lw1c0bfvbnrl0";
+    };
+  }
+  {
+    goPackagePath = "github.com/mwitkow/go-conntrack";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mwitkow/go-conntrack";
+      rev = "cc309e4a2223";
+      sha256 = "0nbrnpk7bkmqg9mzwsxlm0y8m7s9qd9phr1q30qlx2qmdmz7c1mf";
+    };
+  }
+  {
+    goPackagePath = "github.com/onsi/ginkgo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/onsi/ginkgo";
+      rev = "v1.10.1";
+      sha256 = "033a42h1wzmji57p86igg9whvsbp6nvfdsypskw738ys903n3z4d";
+    };
+  }
+  {
+    goPackagePath = "github.com/onsi/gomega";
+    fetch = {
+      type = "git";
+      url = "https://github.com/onsi/gomega";
+      rev = "v1.7.0";
+      sha256 = "09j6wq425wgzzsbwm9ckhfgl2capv3yyqbrf45qyrjwkzm49i02y";
+    };
+  }
+  {
+    goPackagePath = "github.com/opentracing/opentracing-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/opentracing/opentracing-go";
+      rev = "v1.0.2";
+      sha256 = "0i0ghg94dg8lk05mw5n23983wq04yjvkjmdkc9z5y1f3508938h9";
+    };
+  }
+  {
+    goPackagePath = "github.com/philhofer/fwd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/philhofer/fwd";
+      rev = "v1.0.0";
+      sha256 = "1pg84khadh79v42y8sjsdgfb54vw2kzv7hpapxkifgj0yvcp30g2";
+    };
+  }
+  {
+    goPackagePath = "github.com/pingcap/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pingcap/errors";
+      rev = "v0.11.1";
+      sha256 = "00wr0l4cwq0qx8jw51j0n7pbh9l7hdq2874x9rf1mz5svz1wbmcp";
+    };
+  }
+  {
+    goPackagePath = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev = "v0.8.1";
+      sha256 = "0g5qcb4d4fd96midz0zdk8b9kz8xkzwfa8kr1cliqbg8sxsy5vd1";
+    };
+  }
+  {
+    goPackagePath = "github.com/pmezard/go-difflib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pmezard/go-difflib";
+      rev = "v1.0.0";
+      sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/client_golang";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_golang";
+      rev = "v1.0.0";
+      sha256 = "1f03ndyi3jq7zdxinnvzimz3s4z2374r6dikkc8i42xzb6d1bli6";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/client_model";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_model";
+      rev = "14fe0d1b01d4";
+      sha256 = "0zdmk6rbbx39cvfz0r59v2jg5sg9yd02b4pds5n5llgvivi99550";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/common";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/common";
+      rev = "v0.4.1";
+      sha256 = "0sf4sjdckblz1hqdfvripk3zyp8xq89w7q75kbsyg4c078af896s";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/procfs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/procfs";
+      rev = "v0.0.2";
+      sha256 = "0s7pvs7fgnfpmym3cd0k219av321h9sf3yvdlnn3qy0ps280lg7k";
+    };
+  }
+  {
+    goPackagePath = "github.com/rafaeljusto/redigomock";
+    fetch = {
+      type = "git";
+      url = "https://github.com/rafaeljusto/redigomock";
+      rev = "257e089e14a1";
+      sha256 = "1k572vsda7q5l42s1kn5bjkfb30jshsbc96dz4cnghg43qylyd6h";
+    };
+  }
+  {
+    goPackagePath = "github.com/rogpeppe/go-internal";
+    fetch = {
+      type = "git";
+      url = "https://github.com/rogpeppe/go-internal";
+      rev = "v1.3.0";
+      sha256 = "0mcdh1licgnnahwml9y2iq6xy5x9xmjw5frcnds2s3wpjyqrl216";
+    };
+  }
+  {
+    goPackagePath = "github.com/ryanuber/columnize";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ryanuber/columnize";
+      rev = "v2.1.0";
+      sha256 = "0m9jhagb1k44zfcdai76xdf9vpi3bqdl7p078ffyibmz0z9jfap6";
+    };
+  }
+  {
+    goPackagePath = "github.com/sebest/xff";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sebest/xff";
+      rev = "6c115e0ffa35";
+      sha256 = "0l11d8mc870vxzgi74cc9dqr7kgxjmbfkfi53gc30rsyx877jx4h";
+    };
+  }
+  {
+    goPackagePath = "github.com/sergi/go-diff";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sergi/go-diff";
+      rev = "v1.0.0";
+      sha256 = "0swiazj8wphs2zmk1qgq75xza6m19snif94h2m6fi8dqkwqdl7c7";
+    };
+  }
+  {
+    goPackagePath = "github.com/shurcooL/sanitized_anchor_name";
+    fetch = {
+      type = "git";
+      url = "https://github.com/shurcooL/sanitized_anchor_name";
+      rev = "v1.0.0";
+      sha256 = "1gv9p2nr46z80dnfjsklc6zxbgk96349sdsxjz05f3z6wb6m5l8f";
+    };
+  }
+  {
+    goPackagePath = "github.com/sirupsen/logrus";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sirupsen/logrus";
+      rev = "v1.3.0";
+      sha256 = "0ib7k8cwxn53dyxd3af1g81z018n77n6q64pm4miznirf7c2c9gk";
+    };
+  }
+  {
+    goPackagePath = "github.com/smartystreets/assertions";
+    fetch = {
+      type = "git";
+      url = "https://github.com/smartystreets/assertions";
+      rev = "b2de0cb4f26d";
+      sha256 = "1i7ldgavgl35c7gk25p7bvdr282ckng090zr4ch9mk1705akx09y";
+    };
+  }
+  {
+    goPackagePath = "github.com/smartystreets/goconvey";
+    fetch = {
+      type = "git";
+      url = "https://github.com/smartystreets/goconvey";
+      rev = "505e41936337";
+      sha256 = "07zjxwszayal88z1j2bwnqrsa32vg8l4nivks5yfr9j8xfsw7n6m";
+    };
+  }
+  {
+    goPackagePath = "github.com/stretchr/objx";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/objx";
+      rev = "v0.1.1";
+      sha256 = "0iph0qmpyqg4kwv8jsx6a56a7hhqq8swrazv40ycxk9rzr0s8yls";
+    };
+  }
+  {
+    goPackagePath = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev = "v1.4.0";
+      sha256 = "187i5g88sxfy4vxpm7dw1gwv29pa2qaq475lxrdh5livh69wqfjb";
+    };
+  }
+  {
+    goPackagePath = "github.com/tinylib/msgp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/tinylib/msgp";
+      rev = "v1.1.0";
+      sha256 = "08ha23sn14071ywrgxlyj7r523vzdwx1i83dcp1mqa830glgqaff";
+    };
+  }
+  {
+    goPackagePath = "github.com/uber-go/atomic";
+    fetch = {
+      type = "git";
+      url = "https://github.com/uber-go/atomic";
+      rev = "v1.3.2";
+      sha256 = "11pzvjys5ddjjgrv94pgk9pnip9yyb54z7idf33zk7p7xylpnsv6";
+    };
+  }
+  {
+    goPackagePath = "github.com/uber/jaeger-client-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/uber/jaeger-client-go";
+      rev = "v2.15.0";
+      sha256 = "0ki23m9zrf3vxp839fnp9ckr4m28y6mpad8g5s5lr5k8jkl0sfwj";
+    };
+  }
+  {
+    goPackagePath = "github.com/uber/jaeger-lib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/uber/jaeger-lib";
+      rev = "v1.5.0";
+      sha256 = "113fwpn80ylx970w8h7nfqnhh18dpx1jadbk7rbr8k68q4di4y0q";
+    };
+  }
+  {
+    goPackagePath = "github.com/ugorji/go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ugorji/go";
+      rev = "v1.1.4";
+      sha256 = "0ma2qvn5wqvjidpdz74x832a813qnr1cxbx6n6n125ak9b3wbn5w";
+    };
+  }
+  {
+    goPackagePath = "github.com/urfave/negroni";
+    fetch = {
+      type = "git";
+      url = "https://github.com/urfave/negroni";
+      rev = "v1.0.0";
+      sha256 = "1gp6j74adi1cn8fq5v3wzlzhwl4zg43n2746m4fzdcdimihk3ccp";
+    };
+  }
+  {
+    goPackagePath = "github.com/valyala/bytebufferpool";
+    fetch = {
+      type = "git";
+      url = "https://github.com/valyala/bytebufferpool";
+      rev = "v1.0.0";
+      sha256 = "01lqzjddq6kz9v41nkky7wbgk7f1cw036sa7ldz10d82g5klzl93";
+    };
+  }
+  {
+    goPackagePath = "github.com/valyala/fasthttp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/valyala/fasthttp";
+      rev = "v1.4.0";
+      sha256 = "0kypc7r91n61fm6qsadza1aiy9n6byghvcxzvx7agi6yzrllk956";
+    };
+  }
+  {
+    goPackagePath = "github.com/valyala/fasttemplate";
+    fetch = {
+      type = "git";
+      url = "https://github.com/valyala/fasttemplate";
+      rev = "v1.0.1";
+      sha256 = "0l131znbv8v67y20s4q361mwiww2c33zdc68mwvxchzk1gpy5ywq";
+    };
+  }
+  {
+    goPackagePath = "github.com/valyala/tcplisten";
+    fetch = {
+      type = "git";
+      url = "https://github.com/valyala/tcplisten";
+      rev = "ceec8f93295a";
+      sha256 = "0ksbj1gsdqanbnhly5w1wcc107bib4w0zpnyl00prr89zch3imnf";
+    };
+  }
+  {
+    goPackagePath = "github.com/xeipuuv/gojsonpointer";
+    fetch = {
+      type = "git";
+      url = "https://github.com/xeipuuv/gojsonpointer";
+      rev = "df4f5c81cb3b";
+      sha256 = "0dfwc66z5gq75m3z7va80c10c22ijiq99bahq86l26ki71g286xn";
+    };
+  }
+  {
+    goPackagePath = "github.com/xeipuuv/gojsonreference";
+    fetch = {
+      type = "git";
+      url = "https://github.com/xeipuuv/gojsonreference";
+      rev = "bd5ef7bd5415";
+      sha256 = "1xby79padc7bmyb8rfbad8wfnfdzpnh51b1n8c0kibch0kwc1db5";
+    };
+  }
+  {
+    goPackagePath = "github.com/xeipuuv/gojsonschema";
+    fetch = {
+      type = "git";
+      url = "https://github.com/xeipuuv/gojsonschema";
+      rev = "v1.1.0";
+      sha256 = "10gn5y4l72zknj21mff29d9vnk4pz7jnw39xnlsb373lsiih91xg";
+    };
+  }
+  {
+    goPackagePath = "github.com/yalp/jsonpath";
+    fetch = {
+      type = "git";
+      url = "https://github.com/yalp/jsonpath";
+      rev = "5cc68e5049a0";
+      sha256 = "0kkyxp1cg3kfxy5hhwzxg132jin4xb492z5jpqq94ix15v6rdf4b";
+    };
+  }
+  {
+    goPackagePath = "github.com/yudai/gojsondiff";
+    fetch = {
+      type = "git";
+      url = "https://github.com/yudai/gojsondiff";
+      rev = "v1.0.0";
+      sha256 = "0qnymi0027mb8kxm24mmd22bvjrdkc56c7f4q3lbdf93x1vxbbc2";
+    };
+  }
+  {
+    goPackagePath = "github.com/yudai/golcs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/yudai/golcs";
+      rev = "ecda9a501e82";
+      sha256 = "0mx6wc5fz05yhvg03vvps93bc5mw4vnng98fhmixd47385qb29pq";
+    };
+  }
+  {
+    goPackagePath = "github.com/yudai/pp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/yudai/pp";
+      rev = "v2.0.1";
+      sha256 = "18vbc7jagnjw1wpvhqjffl0np7bzzqdd9jpdcisvj5h85lbyn5gk";
+    };
+  }
+  {
+    goPackagePath = "gitlab.com/gitlab-org/gitaly";
+    fetch = {
+      type = "git";
+      url = "https://gitlab.com/gitlab-org/gitaly.git";
+      rev = "v1.74.0";
+      sha256 = "1gmrpzm4ijw8g1xj8b3vmvg4cmis7shvwxp5vl2r47a8mh2ql5pd";
+    };
+  }
+  {
+    goPackagePath = "gitlab.com/gitlab-org/labkit";
+    fetch = {
+      type = "git";
+      url = "https://gitlab.com/gitlab-org/labkit.git";
+      rev = "fac94cb428e6";
+      sha256 = "19wvfjij6zm88fxbx0cngr6ny4yh3fw469d6vlv741b37s07w3j0";
+    };
+  }
+  {
+    goPackagePath = "go.opencensus.io";
+    fetch = {
+      type = "git";
+      url = "https://github.com/census-instrumentation/opencensus-go";
+      rev = "v0.22.2";
+      sha256 = "0lz7fid63pdrcvyzk5kn7vlcva102h61igmw7pz824wvj9k3hy4q";
+    };
+  }
+  {
+    goPackagePath = "go.uber.org/atomic";
+    fetch = {
+      type = "git";
+      url = "https://github.com/uber-go/atomic";
+      rev = "v1.3.2";
+      sha256 = "11pzvjys5ddjjgrv94pgk9pnip9yyb54z7idf33zk7p7xylpnsv6";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "87dc89f01550";
+      sha256 = "0z4i1m2yn3f31ci7wvcm2rxkx2yiv7a78mfzklncmsz2k97rlh2g";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/exp";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/exp";
+      rev = "da58074b4299";
+      sha256 = "1pgvdbjm3n47505diw3mm2hisp9b9q2lyvgl9m6xh2wx83b0cj48";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/image";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/image";
+      rev = "cff245a6509b";
+      sha256 = "0hiznlkiaay30acwvvyq8g6bm32r7bc6gv47pygrcxqpapasbz84";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/lint";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/lint";
+      rev = "fdd1cda4f05f";
+      sha256 = "0a23pc90fqar8sm1b480sls15ss20rqk13yrf63b6rnyd2c6z0x2";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/mobile";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/mobile";
+      rev = "d2bd2a29d028";
+      sha256 = "1nv6vvhnjr01nx9y06q46ww87dppdwpbqrlsfg1xf2587wxl8xiv";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/mod";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/mod";
+      rev = "c90efee705ee";
+      sha256 = "0i5md645rmcy5z5ij9ng428k9rz4g3k1kjy3blsq1264rn426gdf";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "6afb5195e5aa";
+      sha256 = "1aiz41q2yxgg3dxfkn33ff54vhaxbiwcps9j3ia1xx4cqxim38zw";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/oauth2";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/oauth2";
+      rev = "bf48bf16ab8d";
+      sha256 = "1sirdib60zwmh93kf9qrx51r8544k1p9rs5mk0797wibz3m4mrdg";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sync";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sync";
+      rev = "cd5d95a43a6e";
+      sha256 = "1nqkyz2y1qvqcma52ijh02s8aiqmkfb95j08f6zcjhbga3ds6hds";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "d101bd2416d5";
+      sha256 = "1ksxf37b0ym21n8j29m3wgbaiw1kcjw3hgf88kipc1ry2j13l98p";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "v0.3.2";
+      sha256 = "0flv9idw0jm5nm8lx25xqanbkqgfiym6619w575p7nrdh0riqwqh";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/time";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/time";
+      rev = "9d24e82272b4";
+      sha256 = "1f5nkr4vys2vbd8wrwyiq2f5wcaahhpxmia85d1gshcbqjqf8dkb";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "43d50277825c";
+      sha256 = "1168q4da36wq9w2591iqzsfy5ymwfi2g46bv5dnyyspg155ld19k";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/xerrors";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/xerrors";
+      rev = "9bdfabe68543";
+      sha256 = "1yjfi1bk9xb81lqn85nnm13zz725wazvrx3b50hx19qmwg7a4b0c";
+    };
+  }
+  {
+    goPackagePath = "google.golang.org/api";
+    fetch = {
+      type = "git";
+      url = "https://code.googlesource.com/google-api-go-client";
+      rev = "v0.15.0";
+      sha256 = "1ljhwv5xsgsbqia70f35q19vwrsm47sh08ljbwdyfa867ff17qdh";
+    };
+  }
+  {
+    goPackagePath = "google.golang.org/appengine";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/appengine";
+      rev = "v1.6.5";
+      sha256 = "05hbq4cs7bqw0zl17bx8rzdkszid3nyl92100scg3jjrg70dhm7w";
+    };
+  }
+  {
+    goPackagePath = "google.golang.org/genproto";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/go-genproto";
+      rev = "ca5a22157cba";
+      sha256 = "0ldkh6f0g0wzfkp09ib15a62bmcbpsxj93saikqmc86242bcxij0";
+    };
+  }
+  {
+    goPackagePath = "google.golang.org/grpc";
+    fetch = {
+      type = "git";
+      url = "https://github.com/grpc/grpc-go";
+      rev = "v1.24.0";
+      sha256 = "0h8mwv74vzcfb7p4ai247x094skxca71vjp4wpj2wzmri0x9p4v6";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/DataDog/dd-trace-go.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/DataDog/dd-trace-go.v1";
+      rev = "v1.7.0";
+      sha256 = "0j45skiiayfsaw8id4g20k51zfr0raj47a03q2icka5xrh3qj6yq";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/alecthomas/kingpin.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/alecthomas/kingpin.v2";
+      rev = "v2.2.6";
+      sha256 = "0mndnv3hdngr3bxp7yxfd47cas4prv98sqw534mx7vp38gd88n5r";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/check.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/check.v1";
+      rev = "788fd7840127";
+      sha256 = "0v3bim0j375z81zrpr5qv42knqs0y2qv2vkjiqi5axvb78slki1a";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/errgo.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/errgo.v2";
+      rev = "v2.1.0";
+      sha256 = "065mbihiy7q67wnql0bzl9y1kkvck5ivra68254zbih52jxwrgr2";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/fsnotify.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/fsnotify.v1";
+      rev = "v1.4.7";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/go-playground/assert.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/go-playground/assert.v1";
+      rev = "v1.2.1";
+      sha256 = "1h4amgykpa0djwi619llr3g55p75ia0mi184h9s5zdl8l4rhn9pm";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/go-playground/validator.v8";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/go-playground/validator.v8";
+      rev = "v8.18.2";
+      sha256 = "1m2i48ph5a3kw9nlw2srx8i04v7chicds2hlzlrfm15045crga55";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/mgo.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/mgo.v2";
+      rev = "9856a29383ce";
+      sha256 = "1gfbcmvpwwf1lydxj3g42wv2g9w3pf0y02igqk4f4f21h02sazkw";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/tomb.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/tomb.v1";
+      rev = "dd632973f1e7";
+      sha256 = "1lqmq1ag7s4b3gc3ddvr792c5xb5k6sfn0cchr3i2s7f1c231zjv";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "v2.2.2";
+      sha256 = "01wj12jzsdqlnidpyjssmj0r4yavlqy7dwrg7adqd8dicjc4ncsa";
+    };
+  }
+  {
+    goPackagePath = "honnef.co/go/tools";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dominikh/go-tools";
+      rev = "v0.0.1-2019.2.3";
+      sha256 = "1rwwahmbs4dwxncwjj56likir1kps9937vm2id3rygxzzla40zal";
+    };
+  }
+  {
+    goPackagePath = "rsc.io/binaryregexp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/rsc/binaryregexp";
+      rev = "v0.2.0";
+      sha256 = "1kar0myy85waw418zslviwx8846zj0m9cmqkxjx0fvgjdi70nc4b";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch b/nixpkgs/pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch
new file mode 100644
index 000000000000..846bdeff48d3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch
@@ -0,0 +1,163 @@
+diff --git a/config/environments/production.rb b/config/environments/production.rb
+index c5cbfcf64c..4d01f6fab8 100644
+--- a/config/environments/production.rb
++++ b/config/environments/production.rb
+@@ -70,10 +70,10 @@ Rails.application.configure do
+ 
+   config.action_mailer.delivery_method = :sendmail
+   # Defaults to:
+-  # # config.action_mailer.sendmail_settings = {
+-  # #   location: '/usr/sbin/sendmail',
+-  # #   arguments: '-i -t'
+-  # # }
++  config.action_mailer.sendmail_settings = {
++    location: '/usr/sbin/sendmail',
++    arguments: '-i -t'
++  }
+   config.action_mailer.perform_deliveries = true
+   config.action_mailer.raise_delivery_errors = true
+ 
+diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example
+index bd696a7f2c..44e3863736 100644
+--- a/config/gitlab.yml.example
++++ b/config/gitlab.yml.example
+@@ -590,7 +590,7 @@ production: &base
+   # CAUTION!
+   # Use the default values unless you really know what you are doing
+   git:
+-    bin_path: /usr/bin/git
++    bin_path: git
+ 
+   ## Webpack settings
+   # If enabled, this will tell rails to serve frontend assets from the webpack-dev-server running
+diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb
+index 0bea8a4f4b..290248547b 100644
+--- a/config/initializers/1_settings.rb
++++ b/config/initializers/1_settings.rb
+@@ -255,7 +255,7 @@ Settings.gitlab['user']       ||= 'git'
+ Settings.gitlab['user_home']  ||= begin
+   Etc.getpwnam(Settings.gitlab['user']).dir
+ rescue ArgumentError # no user configured
+-  '/home/' + Settings.gitlab['user']
++  '/homeless-shelter'
+ end
+ Settings.gitlab['time_zone'] ||= nil
+ Settings.gitlab['signup_enabled'] ||= true if Settings.gitlab['signup_enabled'].nil?
+@@ -507,7 +507,7 @@ Settings.backup['upload']['storage_class'] ||= nil
+ # Git
+ #
+ Settings['git'] ||= Settingslogic.new({})
+-Settings.git['bin_path'] ||= '/usr/bin/git'
++Settings.git['bin_path'] ||= 'git'
+ 
+ # Important: keep the satellites.path setting until GitLab 9.0 at
+ # least. This setting is fed to 'rm -rf' in
+diff --git a/lib/api/api.rb b/lib/api/api.rb
+index e953f3d2ec..3a8d9f076b 100644
+--- a/lib/api/api.rb
++++ b/lib/api/api.rb
+@@ -2,7 +2,7 @@ module API
+   class API < Grape::API
+     include APIGuard
+ 
+-    LOG_FILENAME = Rails.root.join("log", "api_json.log")
++    LOG_FILENAME = File.join(ENV["GITLAB_LOG_PATH"], "api_json.log")
+ 
+     NO_SLASH_URL_PART_REGEX = %r{[^/]+}
+     PROJECT_ENDPOINT_REQUIREMENTS = { id: NO_SLASH_URL_PART_REGEX }.freeze
+diff --git a/lib/gitlab/logger.rb b/lib/gitlab/logger.rb
+index a42e312b5d..ccaab9229e 100644
+--- a/lib/gitlab/logger.rb
++++ b/lib/gitlab/logger.rb
+@@ -26,7 +26,7 @@ module Gitlab
+     end
+ 
+     def self.full_log_path
+-      Rails.root.join("log", file_name)
++        File.join(ENV["GITLAB_LOG_PATH"], file_name)
+     end
+ 
+     def self.cache_key
+diff --git a/lib/gitlab/uploads_transfer.rb b/lib/gitlab/uploads_transfer.rb
+index 7d7400bdab..cb25211d44 100644
+--- a/lib/gitlab/uploads_transfer.rb
++++ b/lib/gitlab/uploads_transfer.rb
+@@ -1,7 +1,7 @@
+ module Gitlab
+   class UploadsTransfer < ProjectTransfer
+     def root_dir
+-      FileUploader.root
++      ENV['GITLAB_UPLOADS_PATH'] || FileUploader.root
+     end
+   end
+ end
+diff --git a/lib/system_check/app/log_writable_check.rb b/lib/system_check/app/log_writable_check.rb
+index 3e0c436d6e..28cefc5514 100644
+--- a/lib/system_check/app/log_writable_check.rb
++++ b/lib/system_check/app/log_writable_check.rb
+@@ -21,7 +21,7 @@ module SystemCheck
+       private
+ 
+       def log_path
+-        Rails.root.join('log')
++        ENV["GITLAB_LOG_PATH"]
+       end
+     end
+   end
+diff --git a/lib/system_check/app/uploads_directory_exists_check.rb b/lib/system_check/app/uploads_directory_exists_check.rb
+index 7026d0ba07..c56e1f7ed9 100644
+--- a/lib/system_check/app/uploads_directory_exists_check.rb
++++ b/lib/system_check/app/uploads_directory_exists_check.rb
+@@ -4,12 +4,13 @@ module SystemCheck
+       set_name 'Uploads directory exists?'
+ 
+       def check?
+-        File.directory?(Rails.root.join('public/uploads'))
++        File.directory?(ENV['GITLAB_UPLOADS_PATH'] || Rails.root.join('public/uploads'))
+       end
+ 
+       def show_error
++        uploads_dir = ENV['GITLAB_UPLOADS_PATH'] || Rails.root.join('public/uploads')
+         try_fixing_it(
+-          "sudo -u #{gitlab_user} mkdir #{Rails.root}/public/uploads"
++            "sudo -u #{gitlab_user} mkdir #{uploads_dir}"
+         )
+         for_more_information(
+           see_installation_guide_section 'GitLab'
+diff --git a/lib/system_check/app/uploads_path_permission_check.rb b/lib/system_check/app/uploads_path_permission_check.rb
+index 7df6c06025..bb447c16b2 100644
+--- a/lib/system_check/app/uploads_path_permission_check.rb
++++ b/lib/system_check/app/uploads_path_permission_check.rb
+@@ -25,7 +25,7 @@ module SystemCheck
+       private
+ 
+       def rails_uploads_path
+-        Rails.root.join('public/uploads')
++        ENV['GITLAB_UPLOADS_PATH'] || Rails.root.join('public/uploads')
+       end
+ 
+       def uploads_fullpath
+diff --git a/lib/system_check/app/uploads_path_tmp_permission_check.rb b/lib/system_check/app/uploads_path_tmp_permission_check.rb
+index b276a81eac..070e3ebd81 100644
+--- a/lib/system_check/app/uploads_path_tmp_permission_check.rb
++++ b/lib/system_check/app/uploads_path_tmp_permission_check.rb
+@@ -33,7 +33,7 @@ module SystemCheck
+       end
+ 
+       def uploads_fullpath
+-        File.realpath(Rails.root.join('public/uploads'))
++        File.realpath(ENV['GITLAB_UPLOADS_PATH'] || Rails.root.join('public/uploads'))
+       end
+     end
+   end
+--- a/lib/gitlab/authorized_keys.rb
++++ b/lib/gitlab/authorized_keys.rb
+@@ -157,7 +157,7 @@
+         raise KeyError, "Invalid ID: #{id.inspect}"
+       end
+ 
+-      "#{File.join(Gitlab.config.gitlab_shell.path, 'bin', 'gitlab-shell')} #{id}"
++      "#{File.join('/run/current-system/sw/bin', 'gitlab-shell')} #{id}"
+     end
+ 
+     def strip(key)
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/reset_token.rake b/nixpkgs/pkgs/applications/version-management/gitlab/reset_token.rake
new file mode 100644
index 000000000000..705b5830edfc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/reset_token.rake
@@ -0,0 +1,43 @@
+# Taken from:
+# https://about.gitlab.com/2017/03/20/gitlab-8-dot-17-dot-4-security-release/
+
+# lib/tasks/reset_token.rake
+require_relative '../../app/models/concerns/token_authenticatable.rb'
+
+STDOUT.sync = true
+
+namespace :tokens do
+  desc "Reset all GitLab user auth tokens"
+  task reset_all: :environment do
+    reset_all_users_token(:reset_authentication_token!)
+  end
+
+  desc "Reset all GitLab email tokens"
+  task reset_all_email: :environment do
+    reset_all_users_token(:reset_incoming_email_token!)
+  end
+
+  def reset_all_users_token(token)
+    TmpUser.find_in_batches do |batch|
+      puts "Processing batch starting with user ID: #{batch.first.id}"
+
+      batch.each(&token)
+    end
+  end
+end
+
+class TmpUser < ActiveRecord::Base
+  include TokenAuthenticatable
+
+  self.table_name = 'users'
+
+  def reset_authentication_token!
+    write_new_token(:authentication_token)
+    save!(validate: false)
+  end
+
+  def reset_incoming_email_token!
+    write_new_token(:incoming_email_token)
+    save!(validate: false)
+  end
+end
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/rubyEnv/Gemfile b/nixpkgs/pkgs/applications/version-management/gitlab/rubyEnv/Gemfile
new file mode 100644
index 000000000000..9c8c5e8b30d7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/rubyEnv/Gemfile
@@ -0,0 +1,500 @@
+source 'https://rubygems.org'
+
+gem 'rails', '~> 6.0.3'
+
+gem 'bootsnap', '~> 1.4.6'
+
+# Improves copy-on-write performance for MRI
+gem 'nakayoshi_fork', '~> 0.0.4'
+
+# Responders respond_to and respond_with
+gem 'responders', '~> 3.0'
+
+gem 'sprockets', '~> 3.7.0'
+
+# Default values for AR models
+gem 'default_value_for', '~> 3.3.0'
+
+# Supported DBs
+gem 'pg', '~> 1.1'
+
+gem 'rugged', '~> 0.28'
+gem 'grape-path-helpers', '~> 1.2'
+
+gem 'faraday', '~> 0.12'
+gem 'marginalia', '~> 1.8.0'
+
+# Authentication libraries
+gem 'devise', '~> 4.6'
+gem 'doorkeeper', '~> 5.0.3'
+gem 'doorkeeper-openid_connect', '~> 1.6.3'
+gem 'omniauth', '~> 1.8'
+gem 'omniauth-auth0', '~> 2.0.0'
+gem 'omniauth-azure-oauth2', '~> 0.0.9'
+gem 'omniauth-cas3', '~> 1.1.4'
+gem 'omniauth-facebook', '~> 4.0.0'
+gem 'omniauth-github', '~> 1.4'
+gem 'omniauth-gitlab', '~> 1.0.2'
+gem 'omniauth-google-oauth2', '~> 0.6.0'
+gem 'omniauth-kerberos', '~> 0.3.0', group: :kerberos
+gem 'omniauth-oauth2-generic', '~> 0.2.2'
+gem 'omniauth-saml', '~> 1.10'
+gem 'omniauth-shibboleth', '~> 1.3.0'
+gem 'omniauth-twitter', '~> 1.4'
+gem 'omniauth_crowd', '~> 2.2.0'
+gem 'omniauth-authentiq', '~> 0.3.3'
+gem 'omniauth_openid_connect', '~> 0.3.3'
+gem "omniauth-ultraauth", '~> 0.0.2'
+gem 'omniauth-salesforce', '~> 1.0.5'
+gem 'rack-oauth2', '~> 1.9.3'
+gem 'jwt', '~> 2.1.0'
+
+# Kerberos authentication. EE-only
+gem 'gssapi', group: :kerberos
+
+# Spam and anti-bot protection
+gem 'recaptcha', '~> 4.11', require: 'recaptcha/rails'
+gem 'akismet', '~> 3.0'
+gem 'invisible_captcha', '~> 0.12.1'
+
+# Two-factor authentication
+gem 'devise-two-factor', '~> 3.1.0'
+gem 'rqrcode-rails3', '~> 0.1.7'
+gem 'attr_encrypted', '~> 3.1.0'
+gem 'u2f', '~> 0.2.1'
+
+# GitLab Pages
+gem 'validates_hostname', '~> 1.0.6'
+gem 'rubyzip', '~> 2.0.0', require: 'zip'
+# GitLab Pages letsencrypt support
+gem 'acme-client', '~> 2.0.5'
+
+# Browser detection
+gem 'browser', '~> 2.5'
+
+# GPG
+gem 'gpgme', '~> 2.0.19'
+
+# LDAP Auth
+# GitLab fork with several improvements to original library. For full list of changes
+# see https://github.com/intridea/omniauth-ldap/compare/master...gitlabhq:master
+gem 'gitlab_omniauth-ldap', '~> 2.1.1', require: 'omniauth-ldap'
+gem 'net-ldap'
+
+# API
+gem 'grape', '~> 1.1.0'
+gem 'grape-entity', '~> 0.7.1'
+gem 'rack-cors', '~> 1.0.6', require: 'rack/cors'
+
+# GraphQL API
+gem 'graphql', '~> 1.10.5'
+# NOTE: graphiql-rails v1.5+ doesn't work: https://gitlab.com/gitlab-org/gitlab/issues/31771
+# TODO: remove app/views/graphiql/rails/editors/show.html.erb when https://github.com/rmosolgo/graphiql-rails/pull/71 is released:
+# https://gitlab.com/gitlab-org/gitlab/issues/31747
+gem 'graphiql-rails', '~> 1.4.10'
+gem 'apollo_upload_server', '~> 2.0.0.beta3'
+gem 'graphql-docs', '~> 1.6.0', group: [:development, :test]
+
+# Disable strong_params so that Mash does not respond to :permitted?
+gem 'hashie-forbidden_attributes'
+
+# Pagination
+gem 'kaminari', '~> 1.0'
+
+# HAML
+gem 'hamlit', '~> 2.11.0'
+
+# Files attachments
+gem 'carrierwave', '~> 1.3'
+gem 'mini_magick'
+
+# for backups
+gem 'fog-aws', '~> 3.5'
+# Locked until fog-google resolves https://github.com/fog/fog-google/issues/421.
+# Also see config/initializers/fog_core_patch.rb.
+gem 'fog-core', '= 2.1.0'
+gem 'fog-google', '~> 1.9'
+gem 'fog-local', '~> 0.6'
+gem 'fog-openstack', '~> 1.0'
+gem 'fog-rackspace', '~> 0.1.1'
+gem 'fog-aliyun', '~> 0.3'
+
+# for Google storage
+gem 'google-api-client', '~> 0.23'
+
+# for aws storage
+gem 'unf', '~> 0.1.4'
+
+# Seed data
+gem 'seed-fu', '~> 2.3.7'
+
+# Search
+gem 'elasticsearch-model', '~> 6.1'
+gem 'elasticsearch-rails', '~> 6.1', require: 'elasticsearch/rails/instrumentation'
+gem 'elasticsearch-api',   '~> 6.8'
+gem 'aws-sdk'
+gem 'faraday_middleware-aws-signers-v4'
+
+# Markdown and HTML processing
+gem 'html-pipeline', '~> 2.12'
+gem 'deckar01-task_list', '2.3.1'
+gem 'gitlab-markup', '~> 1.7.1'
+gem 'github-markup', '~> 1.7.0', require: 'github/markup'
+gem 'commonmarker', '~> 0.20'
+gem 'RedCloth', '~> 4.3.2'
+gem 'rdoc', '~> 6.1.2'
+gem 'org-ruby', '~> 0.9.12'
+gem 'creole', '~> 0.5.0'
+gem 'wikicloth', '0.8.1'
+gem 'asciidoctor', '~> 2.0.10'
+gem 'asciidoctor-include-ext', '~> 0.3.1', require: false
+gem 'asciidoctor-plantuml', '~> 0.0.12'
+gem 'rouge', '~> 3.19.0'
+gem 'truncato', '~> 0.7.11'
+gem 'bootstrap_form', '~> 4.2.0'
+gem 'nokogiri', '~> 1.10.9'
+gem 'escape_utils', '~> 1.1'
+
+# Calendar rendering
+gem 'icalendar'
+
+# Diffs
+gem 'diffy', '~> 3.3'
+gem 'diff_match_patch', '~> 0.1.0'
+
+# Application server
+gem 'rack', '~> 2.0.9'
+
+group :unicorn do
+  gem 'unicorn', '~> 5.5'
+  gem 'unicorn-worker-killer', '~> 0.4.4'
+end
+
+group :puma do
+  gem 'gitlab-puma', '~> 4.3.3.gitlab.2', require: false
+  gem 'gitlab-puma_worker_killer', '~> 0.1.1.gitlab.1', require: false
+  gem 'rack-timeout', require: false
+end
+
+# State machine
+gem 'state_machines-activerecord', '~> 0.6.0'
+
+# Issue tags
+gem 'acts-as-taggable-on', '~> 6.0'
+
+# Background jobs
+gem 'sidekiq', '~> 5.2.7'
+gem 'sidekiq-cron', '~> 1.0'
+gem 'redis-namespace', '~> 1.6.0'
+gem 'gitlab-sidekiq-fetcher', '0.5.2', require: 'sidekiq-reliable-fetch'
+
+# Cron Parser
+gem 'fugit', '~> 1.2.1'
+
+# HTTP requests
+gem 'httparty', '~> 0.16.4'
+
+# Colored output to console
+gem 'rainbow', '~> 3.0'
+
+# Progress bar
+gem 'ruby-progressbar'
+
+# GitLab settings
+gem 'settingslogic', '~> 2.0.9'
+
+# Linear-time regex library for untrusted regular expressions
+gem 're2', '~> 1.2.0'
+
+# Misc
+
+gem 'version_sorter', '~> 2.2.4'
+
+# Export Ruby Regex to Javascript
+gem 'js_regex', '~> 3.1'
+
+# User agent parsing
+gem 'device_detector'
+
+# Redis
+gem 'redis', '~> 4.0'
+gem 'connection_pool', '~> 2.0'
+
+# Redis session store
+gem 'redis-rails', '~> 5.0.2'
+
+# Discord integration
+gem 'discordrb-webhooks-blackst0ne', '~> 3.3', require: false
+
+# HipChat integration
+gem 'hipchat', '~> 1.5.0'
+
+# Jira integration
+gem 'jira-ruby', '~> 2.0.0'
+gem 'atlassian-jwt', '~> 0.2.0'
+
+# Flowdock integration
+gem 'flowdock', '~> 0.7'
+
+# Slack integration
+gem 'slack-messenger', '~> 2.3.3'
+
+# Hangouts Chat integration
+gem 'hangouts-chat', '~> 0.0.5'
+
+# Asana integration
+gem 'asana', '~> 0.9'
+
+# FogBugz integration
+gem 'ruby-fogbugz', '~> 0.2.1'
+
+# Kubernetes integration
+gem 'kubeclient', '~> 4.6.0'
+
+# Sanitize user input
+gem 'sanitize', '~> 4.6'
+gem 'babosa', '~> 1.0.2'
+
+# Sanitizes SVG input
+gem 'loofah', '~> 2.2'
+
+# Working with license
+gem 'licensee', '~> 8.9'
+
+# Ace editor
+gem 'ace-rails-ap', '~> 4.1.0'
+
+# Detect and convert string character encoding
+gem 'charlock_holmes', '~> 0.7.5'
+
+# Detect mime content type from content
+gem 'mimemagic', '~> 0.3.2'
+
+# Faster blank
+gem 'fast_blank'
+
+# Parse time & duration
+gem 'gitlab-chronic', '~> 0.10.5'
+gem 'gitlab_chronic_duration', '~> 0.10.6.2'
+
+gem 'webpack-rails', '~> 0.9.10'
+gem 'rack-proxy', '~> 0.6.0'
+
+gem 'sassc-rails', '~> 2.1.0'
+gem 'uglifier', '~> 2.7.2'
+
+gem 'addressable', '~> 2.7'
+gem 'font-awesome-rails', '~> 4.7'
+gem 'gemojione', '~> 3.3'
+gem 'gon', '~> 6.2'
+gem 'request_store', '~> 1.5'
+gem 'base32', '~> 0.3.0'
+
+gem "gitlab-license", "~> 1.0"
+
+# Protect against bruteforcing
+gem 'rack-attack', '~> 6.3.0'
+
+# Sentry integration
+gem 'sentry-raven', '~> 2.9'
+
+gem 'premailer-rails', '~> 1.10.3'
+
+# LabKit: Tracing and Correlation
+gem 'gitlab-labkit', '0.12.0'
+
+# I18n
+gem 'ruby_parser', '~> 3.8', require: false
+gem 'rails-i18n', '~> 6.0'
+gem 'gettext_i18n_rails', '~> 1.8.0'
+gem 'gettext_i18n_rails_js', '~> 1.3'
+gem 'gettext', '~> 3.2.2', require: false, group: :development
+
+gem 'batch-loader', '~> 1.4.0'
+
+# Perf bar
+gem 'peek', '~> 1.1'
+
+# Snowplow events tracking
+gem 'snowplow-tracker', '~> 0.6.1'
+
+# Metrics
+group :metrics do
+  gem 'method_source', '~> 0.8', require: false
+
+  # Prometheus
+  gem 'prometheus-client-mmap', '~> 0.10.0'
+  gem 'raindrops', '~> 0.18'
+end
+
+group :development do
+  gem 'brakeman', '~> 4.2', require: false
+  gem 'danger', '~> 6.0', require: false
+
+  gem 'letter_opener_web', '~> 1.3.4'
+  gem 'rblineprof', '~> 0.3.6', platform: :mri, require: false
+
+  # Better errors handler
+  gem 'better_errors', '~> 2.5.0'
+  gem 'binding_of_caller', '~> 0.8.0'
+
+  # thin instead webrick
+  gem 'thin', '~> 1.7.0'
+end
+
+group :development, :test do
+  gem 'bullet', '~> 6.0.2', require: !!ENV['ENABLE_BULLET']
+  gem 'pry-byebug', '~> 3.5.1', platform: :mri
+  gem 'pry-rails', '~> 0.3.9'
+
+  gem 'awesome_print', require: false
+
+  gem 'database_cleaner', '~> 1.7.0'
+  gem 'factory_bot_rails', '~> 5.1.0'
+  gem 'rspec-rails', '~> 4.0.0'
+
+  # Prevent occasions where minitest is not bundled in packaged versions of ruby (see #3826)
+  gem 'minitest', '~> 5.11.0'
+
+  # Generate Fake data
+  gem 'ffaker', '~> 2.10'
+
+  gem 'spring', '~> 2.0.0'
+  gem 'spring-commands-rspec', '~> 1.0.4'
+
+  gem 'gitlab-styles', '~> 3.2.0', require: false
+  # Pin these dependencies, otherwise a new rule could break the CI pipelines
+  gem 'rubocop', '~> 0.74.0'
+  gem 'rubocop-performance', '~> 1.4.1'
+  gem 'rubocop-rspec', '~> 1.37.0'
+
+  gem 'scss_lint', '~> 0.56.0', require: false
+  gem 'haml_lint', '~> 0.34.0', require: false
+  gem 'simplecov', '~> 0.18.5', require: false
+  gem 'bundler-audit', '~> 0.6.1', require: false
+
+  gem 'benchmark-ips', '~> 2.3.0', require: false
+
+  gem 'knapsack', '~> 1.17'
+
+  gem 'simple_po_parser', '~> 1.1.2', require: false
+
+  gem 'timecop', '~> 0.9.1'
+
+  gem 'png_quantizator', '~> 0.2.1', require: false
+
+  gem 'parallel', '~> 1.19', require: false
+end
+
+# Gems required in omnibus-gitlab pipeline
+group :development, :test, :omnibus do
+  gem 'license_finder', '~> 5.4', require: false
+end
+
+group :test do
+  gem 'fuubar', '~> 2.2.0'
+  gem 'rspec-retry', '~> 0.6.1'
+  gem 'rspec_profiling', '~> 0.0.5'
+  gem 'rspec-parameterized', require: false
+
+  gem 'capybara', '~> 3.22.0'
+  gem 'capybara-screenshot', '~> 1.0.22'
+  gem 'selenium-webdriver', '~> 3.142'
+
+  gem 'shoulda-matchers', '~> 4.0.1', require: false
+  gem 'email_spec', '~> 2.2.0'
+  gem 'json-schema', '~> 2.8.0'
+  gem 'webmock', '~> 3.5.1'
+  gem 'rails-controller-testing'
+  gem 'concurrent-ruby', '~> 1.1'
+  gem 'test-prof', '~> 0.10.0'
+  gem 'rspec_junit_formatter'
+  gem 'guard-rspec'
+
+  # Moved in `test` because https://gitlab.com/gitlab-org/gitlab/-/issues/217527
+  gem 'derailed_benchmarks', require: false
+end
+
+gem 'octokit', '~> 4.15'
+
+# https://gitlab.com/gitlab-org/gitlab/issues/207207
+gem 'gitlab-mail_room', '~> 0.0.4', require: 'mail_room'
+
+gem 'email_reply_trimmer', '~> 0.1'
+gem 'html2text'
+
+gem 'ruby-prof', '~> 1.3.0'
+gem 'stackprof', '~> 0.2.15', require: false
+gem 'rbtrace', '~> 0.4', require: false
+gem 'memory_profiler', '~> 0.9', require: false
+gem 'benchmark-memory', '~> 0.1', require: false
+gem 'activerecord-explain-analyze', '~> 0.1', require: false
+
+# OAuth
+gem 'oauth2', '~> 1.4'
+
+# Health check
+gem 'health_check', '~> 2.6.0'
+
+# System information
+gem 'vmstat', '~> 2.3.0'
+gem 'sys-filesystem', '~> 1.1.6'
+
+# NTP client
+gem 'net-ntp'
+
+# SSH host key support
+gem 'net-ssh', '~> 6.0'
+gem 'sshkey', '~> 2.0'
+
+# Required for ED25519 SSH host key support
+group :ed25519 do
+  gem 'ed25519', '~> 1.2'
+  gem 'bcrypt_pbkdf', '~> 1.0'
+end
+
+# Gitaly GRPC protocol definitions
+gem 'gitaly', '~> 13.0.0.pre.rc1'
+
+gem 'grpc', '~> 1.24.0'
+
+gem 'google-protobuf', '~> 3.8.0'
+
+gem 'toml-rb', '~> 1.0.0'
+
+# Feature toggles
+gem 'flipper', '~> 0.17.1'
+gem 'flipper-active_record', '~> 0.17.1'
+gem 'flipper-active_support_cache_store', '~> 0.17.1'
+gem 'unleash', '~> 0.1.5'
+
+# Structured logging
+gem 'lograge', '~> 0.5'
+gem 'grape_logging', '~> 1.7'
+
+# DNS Lookup
+gem 'gitlab-net-dns', '~> 0.9.1'
+
+# Countries list
+gem 'countries', '~> 3.0'
+
+gem 'retriable', '~> 3.1.2'
+
+# LRU cache
+gem 'lru_redux'
+
+gem 'erubi', '~> 1.9.0'
+
+# Locked as long as quoted-printable encoding issues are not resolved
+# Monkey-patched in `config/initializers/mail_encoding_patch.rb`
+# See https://gitlab.com/gitlab-org/gitlab/issues/197386
+gem 'mail', '= 2.7.1'
+
+# File encryption
+gem 'lockbox', '~> 0.3.3'
+
+# Email validation
+gem 'valid_email', '~> 0.1'
+
+# JSON
+gem 'json', '~> 2.3.0'
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/rubyEnv/Gemfile.lock b/nixpkgs/pkgs/applications/version-management/gitlab/rubyEnv/Gemfile.lock
new file mode 100644
index 000000000000..723863edfd93
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/rubyEnv/Gemfile.lock
@@ -0,0 +1,1411 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    RedCloth (4.3.2)
+    abstract_type (0.0.7)
+    ace-rails-ap (4.1.2)
+    acme-client (2.0.5)
+      faraday (~> 0.9, >= 0.9.1)
+    actioncable (6.0.3)
+      actionpack (= 6.0.3)
+      nio4r (~> 2.0)
+      websocket-driver (>= 0.6.1)
+    actionmailbox (6.0.3)
+      actionpack (= 6.0.3)
+      activejob (= 6.0.3)
+      activerecord (= 6.0.3)
+      activestorage (= 6.0.3)
+      activesupport (= 6.0.3)
+      mail (>= 2.7.1)
+    actionmailer (6.0.3)
+      actionpack (= 6.0.3)
+      actionview (= 6.0.3)
+      activejob (= 6.0.3)
+      mail (~> 2.5, >= 2.5.4)
+      rails-dom-testing (~> 2.0)
+    actionpack (6.0.3)
+      actionview (= 6.0.3)
+      activesupport (= 6.0.3)
+      rack (~> 2.0, >= 2.0.8)
+      rack-test (>= 0.6.3)
+      rails-dom-testing (~> 2.0)
+      rails-html-sanitizer (~> 1.0, >= 1.2.0)
+    actiontext (6.0.3)
+      actionpack (= 6.0.3)
+      activerecord (= 6.0.3)
+      activestorage (= 6.0.3)
+      activesupport (= 6.0.3)
+      nokogiri (>= 1.8.5)
+    actionview (6.0.3)
+      activesupport (= 6.0.3)
+      builder (~> 3.1)
+      erubi (~> 1.4)
+      rails-dom-testing (~> 2.0)
+      rails-html-sanitizer (~> 1.1, >= 1.2.0)
+    activejob (6.0.3)
+      activesupport (= 6.0.3)
+      globalid (>= 0.3.6)
+    activemodel (6.0.3)
+      activesupport (= 6.0.3)
+    activerecord (6.0.3)
+      activemodel (= 6.0.3)
+      activesupport (= 6.0.3)
+    activerecord-explain-analyze (0.1.0)
+      activerecord (>= 4)
+      pg
+    activestorage (6.0.3)
+      actionpack (= 6.0.3)
+      activejob (= 6.0.3)
+      activerecord (= 6.0.3)
+      marcel (~> 0.3.1)
+    activesupport (6.0.3)
+      concurrent-ruby (~> 1.0, >= 1.0.2)
+      i18n (>= 0.7, < 2)
+      minitest (~> 5.1)
+      tzinfo (~> 1.1)
+      zeitwerk (~> 2.2, >= 2.2.2)
+    acts-as-taggable-on (6.5.0)
+      activerecord (>= 5.0, < 6.1)
+    adamantium (0.2.0)
+      ice_nine (~> 0.11.0)
+      memoizable (~> 0.4.0)
+    addressable (2.7.0)
+      public_suffix (>= 2.0.2, < 5.0)
+    aes_key_wrap (1.0.1)
+    akismet (3.0.0)
+    apollo_upload_server (2.0.0.beta.3)
+      graphql (>= 1.8)
+      rails (>= 4.2)
+    asana (0.9.3)
+      faraday (~> 0.9)
+      faraday_middleware (~> 0.9)
+      faraday_middleware-multi_json (~> 0.0)
+      oauth2 (~> 1.4)
+    asciidoctor (2.0.10)
+    asciidoctor-include-ext (0.3.1)
+      asciidoctor (>= 1.5.6, < 3.0.0)
+    asciidoctor-plantuml (0.0.12)
+      asciidoctor (>= 1.5.6, < 3.0.0)
+    ast (2.4.0)
+    atlassian-jwt (0.2.0)
+      jwt (~> 2.1.0)
+    attr_encrypted (3.1.0)
+      encryptor (~> 3.0.0)
+    attr_required (1.0.1)
+    awesome_print (1.8.0)
+    aws-eventstream (1.0.3)
+    aws-sdk (2.11.374)
+      aws-sdk-resources (= 2.11.374)
+    aws-sdk-core (2.11.374)
+      aws-sigv4 (~> 1.0)
+      jmespath (~> 1.0)
+    aws-sdk-resources (2.11.374)
+      aws-sdk-core (= 2.11.374)
+    aws-sigv4 (1.1.0)
+      aws-eventstream (~> 1.0, >= 1.0.2)
+    axiom-types (0.1.1)
+      descendants_tracker (~> 0.0.4)
+      ice_nine (~> 0.11.0)
+      thread_safe (~> 0.3, >= 0.3.1)
+    babosa (1.0.2)
+    base32 (0.3.2)
+    batch-loader (1.4.0)
+    bcrypt (3.1.12)
+    bcrypt_pbkdf (1.0.0)
+    benchmark-ips (2.3.0)
+    benchmark-memory (0.1.2)
+      memory_profiler (~> 0.9)
+    better_errors (2.5.0)
+      coderay (>= 1.0.0)
+      erubi (>= 1.0.0)
+      rack (>= 0.9.0)
+    bindata (2.4.3)
+    binding_ninja (0.2.3)
+    binding_of_caller (0.8.0)
+      debug_inspector (>= 0.0.1)
+    bootsnap (1.4.6)
+      msgpack (~> 1.0)
+    bootstrap_form (4.2.0)
+      actionpack (>= 5.0)
+      activemodel (>= 5.0)
+    brakeman (4.2.1)
+    browser (2.5.3)
+    builder (3.2.4)
+    bullet (6.0.2)
+      activesupport (>= 3.0.0)
+      uniform_notifier (~> 1.11)
+    bundler-audit (0.6.1)
+      bundler (>= 1.2.0, < 3)
+      thor (~> 0.18)
+    byebug (9.1.0)
+    capybara (3.22.0)
+      addressable
+      mini_mime (>= 0.1.3)
+      nokogiri (~> 1.8)
+      rack (>= 1.6.0)
+      rack-test (>= 0.6.3)
+      regexp_parser (~> 1.5)
+      xpath (~> 3.2)
+    capybara-screenshot (1.0.22)
+      capybara (>= 1.0, < 4)
+      launchy
+    carrierwave (1.3.1)
+      activemodel (>= 4.0.0)
+      activesupport (>= 4.0.0)
+      mime-types (>= 1.16)
+    character_set (1.1.2)
+    charlock_holmes (0.7.6)
+    childprocess (3.0.0)
+    chunky_png (1.3.5)
+    citrus (3.0.2)
+    claide (1.0.3)
+    claide-plugins (0.9.2)
+      cork
+      nap
+      open4 (~> 1.3)
+    coderay (1.1.2)
+    coercible (1.0.0)
+      descendants_tracker (~> 0.0.1)
+    colored2 (3.1.2)
+    commonmarker (0.20.1)
+      ruby-enum (~> 0.5)
+    concord (0.1.5)
+      adamantium (~> 0.2.0)
+      equalizer (~> 0.0.9)
+    concurrent-ruby (1.1.6)
+    connection_pool (2.2.2)
+    contracts (0.11.0)
+    cork (0.3.0)
+      colored2 (~> 3.1)
+    countries (3.0.0)
+      i18n_data (~> 0.8.0)
+      sixarm_ruby_unaccent (~> 1.1)
+      unicode_utils (~> 1.4)
+    crack (0.4.3)
+      safe_yaml (~> 1.0.0)
+    crass (1.0.6)
+    creole (0.5.0)
+    css_parser (1.7.0)
+      addressable
+    daemons (1.2.6)
+    danger (6.0.9)
+      claide (~> 1.0)
+      claide-plugins (>= 0.9.2)
+      colored2 (~> 3.1)
+      cork (~> 0.1)
+      faraday (~> 0.9)
+      faraday-http-cache (~> 2.0)
+      git (~> 1.5)
+      kramdown (~> 2.0)
+      kramdown-parser-gfm (~> 1.0)
+      no_proxy_fix
+      octokit (~> 4.7)
+      terminal-table (~> 1)
+    database_cleaner (1.7.0)
+    debug_inspector (0.0.3)
+    debugger-ruby_core_source (1.3.8)
+    deckar01-task_list (2.3.1)
+      html-pipeline
+    declarative (0.0.10)
+    declarative-option (0.1.0)
+    default_value_for (3.3.0)
+      activerecord (>= 3.2.0, < 6.1)
+    derailed_benchmarks (1.7.0)
+      benchmark-ips (~> 2)
+      get_process_mem (~> 0)
+      heapy (~> 0)
+      memory_profiler (~> 0)
+      mini_histogram (~> 0)
+      rack (>= 1)
+      rake (> 10, < 14)
+      ruby-statistics (>= 2.1)
+      thor (>= 0.19, < 2)
+      unicode_plot (>= 0.0.4, < 1.0.0)
+    descendants_tracker (0.0.4)
+      thread_safe (~> 0.3, >= 0.3.1)
+    device_detector (1.0.0)
+    devise (4.7.1)
+      bcrypt (~> 3.0)
+      orm_adapter (~> 0.1)
+      railties (>= 4.1.0)
+      responders
+      warden (~> 1.2.3)
+    devise-two-factor (3.1.0)
+      activesupport (< 6.1)
+      attr_encrypted (>= 1.3, < 4, != 2)
+      devise (~> 4.0)
+      railties (< 6.1)
+      rotp (~> 2.0)
+    diff-lcs (1.3)
+    diff_match_patch (0.1.0)
+    diffy (3.3.0)
+    discordrb-webhooks-blackst0ne (3.3.0)
+      rest-client (~> 2.0)
+    docile (1.3.2)
+    domain_name (0.5.20180417)
+      unf (>= 0.0.5, < 1.0.0)
+    doorkeeper (5.0.3)
+      railties (>= 4.2)
+    doorkeeper-openid_connect (1.6.3)
+      doorkeeper (>= 5.0, < 5.2)
+      json-jwt (~> 1.6)
+    ed25519 (1.2.4)
+    elasticsearch (6.8.0)
+      elasticsearch-api (= 6.8.0)
+      elasticsearch-transport (= 6.8.0)
+    elasticsearch-api (6.8.0)
+      multi_json
+    elasticsearch-model (6.1.0)
+      activesupport (> 3)
+      elasticsearch (> 1)
+      hashie
+    elasticsearch-rails (6.1.0)
+    elasticsearch-transport (6.8.0)
+      faraday
+      multi_json
+    email_reply_trimmer (0.1.6)
+    email_spec (2.2.0)
+      htmlentities (~> 4.3.3)
+      launchy (~> 2.1)
+      mail (~> 2.7)
+    encryptor (3.0.0)
+    enumerable-statistics (2.0.1)
+    equalizer (0.0.11)
+    erubi (1.9.0)
+    escape_utils (1.2.1)
+    et-orbi (1.2.1)
+      tzinfo
+    eventmachine (1.2.7)
+    excon (0.71.1)
+    execjs (2.6.0)
+    expression_parser (0.9.0)
+    extended-markdown-filter (0.6.0)
+      html-pipeline (~> 2.0)
+    factory_bot (5.1.0)
+      activesupport (>= 4.2.0)
+    factory_bot_rails (5.1.0)
+      factory_bot (~> 5.1.0)
+      railties (>= 4.2.0)
+    faraday (0.15.4)
+      multipart-post (>= 1.2, < 3)
+    faraday-http-cache (2.0.0)
+      faraday (~> 0.8)
+    faraday_middleware (0.12.2)
+      faraday (>= 0.7.4, < 1.0)
+    faraday_middleware-aws-signers-v4 (0.1.7)
+      aws-sdk-resources (~> 2)
+      faraday (~> 0.9)
+    faraday_middleware-multi_json (0.0.6)
+      faraday_middleware
+      multi_json
+    fast_blank (1.0.0)
+    fast_gettext (1.6.0)
+    ffaker (2.10.0)
+    ffi (1.12.2)
+    ffi-compiler (1.0.1)
+      ffi (>= 1.0.0)
+      rake
+    flipper (0.17.1)
+    flipper-active_record (0.17.1)
+      activerecord (>= 4.2, < 7)
+      flipper (~> 0.17.1)
+    flipper-active_support_cache_store (0.17.1)
+      activesupport (>= 4.2, < 7)
+      flipper (~> 0.17.1)
+    flowdock (0.7.1)
+      httparty (~> 0.7)
+      multi_json
+    fog-aliyun (0.3.3)
+      fog-core
+      fog-json
+      ipaddress (~> 0.8)
+      xml-simple (~> 1.1)
+    fog-aws (3.5.2)
+      fog-core (~> 2.1)
+      fog-json (~> 1.1)
+      fog-xml (~> 0.1)
+      ipaddress (~> 0.8)
+    fog-core (2.1.0)
+      builder
+      excon (~> 0.58)
+      formatador (~> 0.2)
+      mime-types
+    fog-google (1.9.1)
+      fog-core (<= 2.1.0)
+      fog-json (~> 1.2)
+      fog-xml (~> 0.1.0)
+      google-api-client (~> 0.23.0)
+    fog-json (1.2.0)
+      fog-core
+      multi_json (~> 1.10)
+    fog-local (0.6.0)
+      fog-core (>= 1.27, < 3.0)
+    fog-openstack (1.0.8)
+      fog-core (~> 2.1)
+      fog-json (>= 1.0)
+      ipaddress (>= 0.8)
+    fog-rackspace (0.1.1)
+      fog-core (>= 1.35)
+      fog-json (>= 1.0)
+      fog-xml (>= 0.1)
+      ipaddress (>= 0.8)
+    fog-xml (0.1.3)
+      fog-core
+      nokogiri (>= 1.5.11, < 2.0.0)
+    font-awesome-rails (4.7.0.5)
+      railties (>= 3.2, < 6.1)
+    formatador (0.2.5)
+    fugit (1.2.1)
+      et-orbi (~> 1.1, >= 1.1.8)
+      raabro (~> 1.1)
+    fuubar (2.2.0)
+      rspec-core (~> 3.0)
+      ruby-progressbar (~> 1.4)
+    gemoji (3.0.1)
+    gemojione (3.3.0)
+      json
+    get_process_mem (0.2.5)
+      ffi (~> 1.0)
+    gettext (3.2.9)
+      locale (>= 2.0.5)
+      text (>= 1.3.0)
+    gettext_i18n_rails (1.8.0)
+      fast_gettext (>= 0.9.0)
+    gettext_i18n_rails_js (1.3.0)
+      gettext (>= 3.0.2)
+      gettext_i18n_rails (>= 0.7.1)
+      po_to_json (>= 1.0.0)
+      rails (>= 3.2.0)
+    git (1.5.0)
+    gitaly (13.0.0.pre.rc1)
+      grpc (~> 1.0)
+    github-markup (1.7.0)
+    gitlab-chronic (0.10.5)
+      numerizer (~> 0.2)
+    gitlab-labkit (0.12.0)
+      actionpack (>= 5.0.0, < 6.1.0)
+      activesupport (>= 5.0.0, < 6.1.0)
+      grpc (~> 1.19)
+      jaeger-client (~> 0.10)
+      opentracing (~> 0.4)
+      redis (> 3.0.0, < 5.0.0)
+    gitlab-license (1.0.0)
+    gitlab-mail_room (0.0.4)
+    gitlab-markup (1.7.1)
+    gitlab-net-dns (0.9.1)
+    gitlab-puma (4.3.3.gitlab.2)
+      nio4r (~> 2.0)
+    gitlab-puma_worker_killer (0.1.1.gitlab.1)
+      get_process_mem (~> 0.2)
+      gitlab-puma (>= 2.7, < 5)
+    gitlab-sidekiq-fetcher (0.5.2)
+      sidekiq (~> 5)
+    gitlab-styles (3.2.0)
+      rubocop (~> 0.74.0)
+      rubocop-gitlab-security (~> 0.1.0)
+      rubocop-performance (~> 1.4.1)
+      rubocop-rails (~> 2.0)
+      rubocop-rspec (~> 1.36)
+    gitlab_chronic_duration (0.10.6.2)
+      numerizer (~> 0.2)
+    gitlab_omniauth-ldap (2.1.1)
+      net-ldap (~> 0.16)
+      omniauth (~> 1.3)
+      pyu-ruby-sasl (>= 0.0.3.3, < 0.1)
+      rubyntlm (~> 0.5)
+    globalid (0.4.2)
+      activesupport (>= 4.2.0)
+    gon (6.2.0)
+      actionpack (>= 3.0)
+      multi_json
+      request_store (>= 1.0)
+    google-api-client (0.23.4)
+      addressable (~> 2.5, >= 2.5.1)
+      googleauth (>= 0.5, < 0.7.0)
+      httpclient (>= 2.8.1, < 3.0)
+      mime-types (~> 3.0)
+      representable (~> 3.0)
+      retriable (>= 2.0, < 4.0)
+    google-protobuf (3.8.0)
+    googleapis-common-protos-types (1.0.4)
+      google-protobuf (~> 3.0)
+    googleauth (0.6.6)
+      faraday (~> 0.12)
+      jwt (>= 1.4, < 3.0)
+      memoist (~> 0.12)
+      multi_json (~> 1.11)
+      os (>= 0.9, < 2.0)
+      signet (~> 0.7)
+    gpgme (2.0.20)
+      mini_portile2 (~> 2.3)
+    grape (1.1.0)
+      activesupport
+      builder
+      mustermann-grape (~> 1.0.0)
+      rack (>= 1.3.0)
+      rack-accept
+      virtus (>= 1.0.0)
+    grape-entity (0.7.1)
+      activesupport (>= 4.0)
+      multi_json (>= 1.3.2)
+    grape-path-helpers (1.2.0)
+      activesupport
+      grape (~> 1.0)
+      rake (~> 12)
+    grape_logging (1.8.3)
+      grape
+      rack
+    graphiql-rails (1.4.10)
+      railties
+      sprockets-rails
+    graphql (1.10.5)
+    graphql-docs (1.6.0)
+      commonmarker (~> 0.16)
+      escape_utils (~> 1.2)
+      extended-markdown-filter (~> 0.4)
+      gemoji (~> 3.0)
+      graphql (~> 1.6)
+      html-pipeline (~> 2.8)
+      sass (~> 3.4)
+    grpc (1.24.0)
+      google-protobuf (~> 3.8)
+      googleapis-common-protos-types (~> 1.0)
+    gssapi (1.2.0)
+      ffi (>= 1.0.1)
+    guard (2.15.1)
+      formatador (>= 0.2.4)
+      listen (>= 2.7, < 4.0)
+      lumberjack (>= 1.0.12, < 2.0)
+      nenv (~> 0.1)
+      notiffany (~> 0.0)
+      pry (>= 0.9.12)
+      shellany (~> 0.0)
+      thor (>= 0.18.1)
+    guard-compat (1.2.1)
+    guard-rspec (4.7.3)
+      guard (~> 2.1)
+      guard-compat (~> 1.1)
+      rspec (>= 2.99.0, < 4.0)
+    haml (5.1.2)
+      temple (>= 0.8.0)
+      tilt
+    haml_lint (0.34.0)
+      haml (>= 4.0, < 5.2)
+      rainbow
+      rubocop (>= 0.50.0)
+      sysexits (~> 1.1)
+    hamlit (2.11.0)
+      temple (>= 0.8.2)
+      thor
+      tilt
+    hangouts-chat (0.0.5)
+    hashdiff (0.3.8)
+    hashie (3.6.0)
+    hashie-forbidden_attributes (0.1.1)
+      hashie (>= 3.0)
+    health_check (2.6.0)
+      rails (>= 4.0)
+    heapy (0.1.4)
+    hipchat (1.5.2)
+      httparty
+      mimemagic
+    html-pipeline (2.12.2)
+      activesupport (>= 2)
+      nokogiri (>= 1.4)
+    html2text (0.2.0)
+      nokogiri (~> 1.6)
+    htmlentities (4.3.4)
+    http (4.2.0)
+      addressable (~> 2.3)
+      http-cookie (~> 1.0)
+      http-form_data (~> 2.0)
+      http-parser (~> 1.2.0)
+    http-cookie (1.0.3)
+      domain_name (~> 0.5)
+    http-form_data (2.1.1)
+    http-parser (1.2.1)
+      ffi-compiler (>= 1.0, < 2.0)
+    httparty (0.16.4)
+      mime-types (~> 3.0)
+      multi_xml (>= 0.5.2)
+    httpclient (2.8.3)
+    i18n (1.8.2)
+      concurrent-ruby (~> 1.0)
+    i18n_data (0.8.0)
+    icalendar (2.4.1)
+    ice_nine (0.11.2)
+    invisible_captcha (0.12.1)
+      rails (>= 3.2.0)
+    ipaddress (0.8.3)
+    jaeger-client (0.10.0)
+      opentracing (~> 0.3)
+      thrift
+    jaro_winkler (1.5.4)
+    jira-ruby (2.0.0)
+      activesupport
+      atlassian-jwt
+      multipart-post
+      oauth (~> 0.5, >= 0.5.0)
+    jmespath (1.4.0)
+    js_regex (3.1.1)
+      character_set (~> 1.1)
+      regexp_parser (~> 1.1)
+      regexp_property_values (~> 0.3)
+    json (2.3.0)
+    json-jwt (1.11.0)
+      activesupport (>= 4.2)
+      aes_key_wrap
+      bindata
+    json-schema (2.8.0)
+      addressable (>= 2.4)
+    jwt (2.1.0)
+    kaminari (1.0.1)
+      activesupport (>= 4.1.0)
+      kaminari-actionview (= 1.0.1)
+      kaminari-activerecord (= 1.0.1)
+      kaminari-core (= 1.0.1)
+    kaminari-actionview (1.0.1)
+      actionview
+      kaminari-core (= 1.0.1)
+    kaminari-activerecord (1.0.1)
+      activerecord
+      kaminari-core (= 1.0.1)
+    kaminari-core (1.0.1)
+    kgio (2.11.3)
+    knapsack (1.17.0)
+      rake
+    kramdown (2.1.0)
+    kramdown-parser-gfm (1.1.0)
+      kramdown (~> 2.0)
+    kubeclient (4.6.0)
+      http (>= 3.0, < 5.0)
+      recursive-open-struct (~> 1.0, >= 1.0.4)
+      rest-client (~> 2.0)
+    launchy (2.4.3)
+      addressable (~> 2.3)
+    letter_opener (1.7.0)
+      launchy (~> 2.2)
+    letter_opener_web (1.3.4)
+      actionmailer (>= 3.2)
+      letter_opener (~> 1.0)
+      railties (>= 3.2)
+    license_finder (5.4.0)
+      bundler
+      rubyzip
+      thor
+      toml (= 0.2.0)
+      with_env (= 1.1.0)
+      xml-simple
+    licensee (8.9.2)
+      rugged (~> 0.24)
+    listen (3.1.5)
+      rb-fsevent (~> 0.9, >= 0.9.4)
+      rb-inotify (~> 0.9, >= 0.9.7)
+      ruby_dep (~> 1.2)
+    locale (2.1.2)
+    lockbox (0.3.3)
+    lograge (0.10.0)
+      actionpack (>= 4)
+      activesupport (>= 4)
+      railties (>= 4)
+      request_store (~> 1.0)
+    loofah (2.5.0)
+      crass (~> 1.0.2)
+      nokogiri (>= 1.5.9)
+    lru_redux (1.1.0)
+    lumberjack (1.0.13)
+    mail (2.7.1)
+      mini_mime (>= 0.1.1)
+    marcel (0.3.3)
+      mimemagic (~> 0.3.2)
+    marginalia (1.8.0)
+      actionpack (>= 2.3)
+      activerecord (>= 2.3)
+    memoist (0.16.0)
+    memoizable (0.4.2)
+      thread_safe (~> 0.3, >= 0.3.1)
+    memory_profiler (0.9.14)
+    method_source (0.9.2)
+    mime-types (3.2.2)
+      mime-types-data (~> 3.2015)
+    mime-types-data (3.2019.0331)
+    mimemagic (0.3.5)
+    mini_histogram (0.1.3)
+    mini_magick (4.9.5)
+    mini_mime (1.0.2)
+    mini_portile2 (2.4.0)
+    minitest (5.11.3)
+    msgpack (1.3.1)
+    multi_json (1.14.1)
+    multi_xml (0.6.0)
+    multipart-post (2.1.1)
+    murmurhash3 (0.1.6)
+    mustermann (1.0.3)
+    mustermann-grape (1.0.0)
+      mustermann (~> 1.0.0)
+    nakayoshi_fork (0.0.4)
+    nap (1.1.0)
+    nenv (0.3.0)
+    net-ldap (0.16.2)
+    net-ntp (2.1.3)
+    net-ssh (6.0.0)
+    netrc (0.11.0)
+    nio4r (2.5.2)
+    no_proxy_fix (0.1.2)
+    nokogiri (1.10.9)
+      mini_portile2 (~> 2.4.0)
+    nokogumbo (1.5.0)
+      nokogiri
+    notiffany (0.1.3)
+      nenv (~> 0.1)
+      shellany (~> 0.0)
+    numerizer (0.2.0)
+    oauth (0.5.4)
+    oauth2 (1.4.1)
+      faraday (>= 0.8, < 0.16.0)
+      jwt (>= 1.0, < 3.0)
+      multi_json (~> 1.3)
+      multi_xml (~> 0.5)
+      rack (>= 1.2, < 3)
+    octokit (4.15.0)
+      faraday (>= 0.9)
+      sawyer (~> 0.8.0, >= 0.5.3)
+    omniauth (1.9.0)
+      hashie (>= 3.4.6, < 3.7.0)
+      rack (>= 1.6.2, < 3)
+    omniauth-auth0 (2.0.0)
+      omniauth-oauth2 (~> 1.4)
+    omniauth-authentiq (0.3.3)
+      jwt (>= 1.5)
+      omniauth-oauth2 (>= 1.5)
+    omniauth-azure-oauth2 (0.0.10)
+      jwt (>= 1.0, < 3.0)
+      omniauth (~> 1.0)
+      omniauth-oauth2 (~> 1.4)
+    omniauth-cas3 (1.1.4)
+      addressable (~> 2.3)
+      nokogiri (~> 1.7, >= 1.7.1)
+      omniauth (~> 1.2)
+    omniauth-facebook (4.0.0)
+      omniauth-oauth2 (~> 1.2)
+    omniauth-github (1.4.0)
+      omniauth (~> 1.5)
+      omniauth-oauth2 (>= 1.4.0, < 2.0)
+    omniauth-gitlab (1.0.3)
+      omniauth (~> 1.0)
+      omniauth-oauth2 (~> 1.0)
+    omniauth-google-oauth2 (0.6.0)
+      jwt (>= 2.0)
+      omniauth (>= 1.1.1)
+      omniauth-oauth2 (>= 1.5)
+    omniauth-kerberos (0.3.0)
+      omniauth-multipassword
+      timfel-krb5-auth (~> 0.8)
+    omniauth-multipassword (0.4.2)
+      omniauth (~> 1.0)
+    omniauth-oauth (1.1.0)
+      oauth
+      omniauth (~> 1.0)
+    omniauth-oauth2 (1.6.0)
+      oauth2 (~> 1.1)
+      omniauth (~> 1.9)
+    omniauth-oauth2-generic (0.2.2)
+      omniauth-oauth2 (~> 1.0)
+    omniauth-salesforce (1.0.5)
+      omniauth (~> 1.0)
+      omniauth-oauth2 (~> 1.0)
+    omniauth-saml (1.10.0)
+      omniauth (~> 1.3, >= 1.3.2)
+      ruby-saml (~> 1.7)
+    omniauth-shibboleth (1.3.0)
+      omniauth (>= 1.0.0)
+    omniauth-twitter (1.4.0)
+      omniauth-oauth (~> 1.1)
+      rack
+    omniauth-ultraauth (0.0.2)
+      omniauth_openid_connect (~> 0.3.0)
+    omniauth_crowd (2.2.3)
+      activesupport
+      nokogiri (>= 1.4.4)
+      omniauth (~> 1.0)
+    omniauth_openid_connect (0.3.3)
+      addressable (~> 2.5)
+      omniauth (~> 1.9)
+      openid_connect (~> 1.1)
+    open4 (1.3.4)
+    openid_connect (1.1.8)
+      activemodel
+      attr_required (>= 1.0.0)
+      json-jwt (>= 1.5.0)
+      rack-oauth2 (>= 1.6.1)
+      swd (>= 1.0.0)
+      tzinfo
+      validate_email
+      validate_url
+      webfinger (>= 1.0.1)
+    opentracing (0.5.0)
+    optimist (3.0.0)
+    org-ruby (0.9.12)
+      rubypants (~> 0.2)
+    orm_adapter (0.5.0)
+    os (1.0.0)
+    parallel (1.19.1)
+    parser (2.7.0.4)
+      ast (~> 2.4.0)
+    parslet (1.8.2)
+    peek (1.1.0)
+      railties (>= 4.0.0)
+    pg (1.2.2)
+    png_quantizator (0.2.1)
+    po_to_json (1.0.1)
+      json (>= 1.6.0)
+    premailer (1.11.1)
+      addressable
+      css_parser (>= 1.6.0)
+      htmlentities (>= 4.0.0)
+    premailer-rails (1.10.3)
+      actionmailer (>= 3)
+      premailer (~> 1.7, >= 1.7.9)
+    proc_to_ast (0.1.0)
+      coderay
+      parser
+      unparser
+    procto (0.0.3)
+    prometheus-client-mmap (0.10.0)
+    pry (0.11.3)
+      coderay (~> 1.1.0)
+      method_source (~> 0.9.0)
+    pry-byebug (3.5.1)
+      byebug (~> 9.1)
+      pry (~> 0.10)
+    pry-rails (0.3.9)
+      pry (>= 0.10.4)
+    public_suffix (4.0.3)
+    pyu-ruby-sasl (0.0.3.3)
+    raabro (1.1.6)
+    rack (2.0.9)
+    rack-accept (0.4.5)
+      rack (>= 0.4)
+    rack-attack (6.3.0)
+      rack (>= 1.0, < 3)
+    rack-cors (1.0.6)
+      rack (>= 1.6.0)
+    rack-oauth2 (1.9.3)
+      activesupport
+      attr_required
+      httpclient
+      json-jwt (>= 1.9.0)
+      rack
+    rack-protection (2.0.5)
+      rack
+    rack-proxy (0.6.0)
+      rack
+    rack-test (1.1.0)
+      rack (>= 1.0, < 3)
+    rack-timeout (0.5.1)
+    rails (6.0.3)
+      actioncable (= 6.0.3)
+      actionmailbox (= 6.0.3)
+      actionmailer (= 6.0.3)
+      actionpack (= 6.0.3)
+      actiontext (= 6.0.3)
+      actionview (= 6.0.3)
+      activejob (= 6.0.3)
+      activemodel (= 6.0.3)
+      activerecord (= 6.0.3)
+      activestorage (= 6.0.3)
+      activesupport (= 6.0.3)
+      bundler (>= 1.3.0)
+      railties (= 6.0.3)
+      sprockets-rails (>= 2.0.0)
+    rails-controller-testing (1.0.4)
+      actionpack (>= 5.0.1.x)
+      actionview (>= 5.0.1.x)
+      activesupport (>= 5.0.1.x)
+    rails-dom-testing (2.0.3)
+      activesupport (>= 4.2.0)
+      nokogiri (>= 1.6)
+    rails-html-sanitizer (1.3.0)
+      loofah (~> 2.3)
+    rails-i18n (6.0.0)
+      i18n (>= 0.7, < 2)
+      railties (>= 6.0.0, < 7)
+    railties (6.0.3)
+      actionpack (= 6.0.3)
+      activesupport (= 6.0.3)
+      method_source
+      rake (>= 0.8.7)
+      thor (>= 0.20.3, < 2.0)
+    rainbow (3.0.0)
+    raindrops (0.19.1)
+    rake (12.3.3)
+    rb-fsevent (0.10.2)
+    rb-inotify (0.9.10)
+      ffi (>= 0.5.0, < 2)
+    rblineprof (0.3.6)
+      debugger-ruby_core_source (~> 1.3)
+    rbtrace (0.4.11)
+      ffi (>= 1.0.6)
+      msgpack (>= 0.4.3)
+      optimist (>= 3.0.0)
+    rdoc (6.1.2)
+    re2 (1.2.0)
+    recaptcha (4.13.1)
+      json
+    recursive-open-struct (1.1.1)
+    redis (4.1.3)
+    redis-actionpack (5.2.0)
+      actionpack (>= 5, < 7)
+      redis-rack (>= 2.1.0, < 3)
+      redis-store (>= 1.1.0, < 2)
+    redis-activesupport (5.2.0)
+      activesupport (>= 3, < 7)
+      redis-store (>= 1.3, < 2)
+    redis-namespace (1.6.0)
+      redis (>= 3.0.4)
+    redis-rack (2.1.2)
+      rack (>= 2.0.8, < 3)
+      redis-store (>= 1.2, < 2)
+    redis-rails (5.0.2)
+      redis-actionpack (>= 5.0, < 6)
+      redis-activesupport (>= 5.0, < 6)
+      redis-store (>= 1.2, < 2)
+    redis-store (1.8.1)
+      redis (>= 4, < 5)
+    regexp_parser (1.5.1)
+    regexp_property_values (0.3.4)
+    representable (3.0.4)
+      declarative (< 0.1.0)
+      declarative-option (< 0.2.0)
+      uber (< 0.2.0)
+    request_store (1.5.0)
+      rack (>= 1.4)
+    responders (3.0.0)
+      actionpack (>= 5.0)
+      railties (>= 5.0)
+    rest-client (2.0.2)
+      http-cookie (>= 1.0.2, < 2.0)
+      mime-types (>= 1.16, < 4.0)
+      netrc (~> 0.8)
+    retriable (3.1.2)
+    rinku (2.0.0)
+    rotp (2.1.2)
+    rouge (3.19.0)
+    rqrcode (0.7.0)
+      chunky_png
+    rqrcode-rails3 (0.1.7)
+      rqrcode (>= 0.4.2)
+    rspec (3.9.0)
+      rspec-core (~> 3.9.0)
+      rspec-expectations (~> 3.9.0)
+      rspec-mocks (~> 3.9.0)
+    rspec-core (3.9.1)
+      rspec-support (~> 3.9.1)
+    rspec-expectations (3.9.1)
+      diff-lcs (>= 1.2.0, < 2.0)
+      rspec-support (~> 3.9.0)
+    rspec-mocks (3.9.1)
+      diff-lcs (>= 1.2.0, < 2.0)
+      rspec-support (~> 3.9.0)
+    rspec-parameterized (0.4.2)
+      binding_ninja (>= 0.2.3)
+      parser
+      proc_to_ast
+      rspec (>= 2.13, < 4)
+      unparser
+    rspec-rails (4.0.0)
+      actionpack (>= 4.2)
+      activesupport (>= 4.2)
+      railties (>= 4.2)
+      rspec-core (~> 3.9)
+      rspec-expectations (~> 3.9)
+      rspec-mocks (~> 3.9)
+      rspec-support (~> 3.9)
+    rspec-retry (0.6.1)
+      rspec-core (> 3.3)
+    rspec-support (3.9.2)
+    rspec_junit_formatter (0.4.1)
+      rspec-core (>= 2, < 4, != 2.12.0)
+    rspec_profiling (0.0.5)
+      activerecord
+      pg
+      rails
+      sqlite3
+    rubocop (0.74.0)
+      jaro_winkler (~> 1.5.1)
+      parallel (~> 1.10)
+      parser (>= 2.6)
+      rainbow (>= 2.2.2, < 4.0)
+      ruby-progressbar (~> 1.7)
+      unicode-display_width (>= 1.4.0, < 1.7)
+    rubocop-gitlab-security (0.1.1)
+      rubocop (>= 0.51)
+    rubocop-performance (1.4.1)
+      rubocop (>= 0.71.0)
+    rubocop-rails (2.4.0)
+      rack (>= 1.1)
+      rubocop (>= 0.72.0)
+    rubocop-rspec (1.37.0)
+      rubocop (>= 0.68.1)
+    ruby-enum (0.7.2)
+      i18n
+    ruby-fogbugz (0.2.1)
+      crack (~> 0.4)
+    ruby-prof (1.3.1)
+    ruby-progressbar (1.10.1)
+    ruby-saml (1.7.2)
+      nokogiri (>= 1.5.10)
+    ruby-statistics (2.1.2)
+    ruby_dep (1.5.0)
+    ruby_parser (3.13.1)
+      sexp_processor (~> 4.9)
+    rubyntlm (0.6.2)
+    rubypants (0.2.0)
+    rubyzip (2.0.0)
+    rugged (0.28.4.1)
+    safe_yaml (1.0.4)
+    sanitize (4.6.6)
+      crass (~> 1.0.2)
+      nokogiri (>= 1.4.4)
+      nokogumbo (~> 1.4)
+    sass (3.5.5)
+      sass-listen (~> 4.0.0)
+    sass-listen (4.0.0)
+      rb-fsevent (~> 0.9, >= 0.9.4)
+      rb-inotify (~> 0.9, >= 0.9.7)
+    sassc (2.0.1)
+      ffi (~> 1.9)
+      rake
+    sassc-rails (2.1.0)
+      railties (>= 4.0.0)
+      sassc (>= 2.0)
+      sprockets (> 3.0)
+      sprockets-rails
+      tilt
+    sawyer (0.8.2)
+      addressable (>= 2.3.5)
+      faraday (> 0.8, < 2.0)
+    scss_lint (0.56.0)
+      rake (>= 0.9, < 13)
+      sass (~> 3.5.3)
+    seed-fu (2.3.7)
+      activerecord (>= 3.1)
+      activesupport (>= 3.1)
+    selenium-webdriver (3.142.6)
+      childprocess (>= 0.5, < 4.0)
+      rubyzip (>= 1.2.2)
+    sentry-raven (2.9.0)
+      faraday (>= 0.7.6, < 1.0)
+    settingslogic (2.0.9)
+    sexp_processor (4.12.0)
+    shellany (0.0.1)
+    shoulda-matchers (4.0.1)
+      activesupport (>= 4.2.0)
+    sidekiq (5.2.7)
+      connection_pool (~> 2.2, >= 2.2.2)
+      rack (>= 1.5.0)
+      rack-protection (>= 1.5.0)
+      redis (>= 3.3.5, < 5)
+    sidekiq-cron (1.0.4)
+      fugit (~> 1.1)
+      sidekiq (>= 4.2.1)
+    signet (0.11.0)
+      addressable (~> 2.3)
+      faraday (~> 0.9)
+      jwt (>= 1.5, < 3.0)
+      multi_json (~> 1.10)
+    simple_po_parser (1.1.2)
+    simplecov (0.18.5)
+      docile (~> 1.1)
+      simplecov-html (~> 0.11)
+    simplecov-html (0.12.2)
+    sixarm_ruby_unaccent (1.2.0)
+    slack-messenger (2.3.3)
+    snowplow-tracker (0.6.1)
+      contracts (~> 0.7, <= 0.11)
+    spring (2.0.2)
+      activesupport (>= 4.2)
+    spring-commands-rspec (1.0.4)
+      spring (>= 0.9.1)
+    sprockets (3.7.2)
+      concurrent-ruby (~> 1.0)
+      rack (> 1, < 3)
+    sprockets-rails (3.2.1)
+      actionpack (>= 4.0)
+      activesupport (>= 4.0)
+      sprockets (>= 3.0.0)
+    sqlite3 (1.3.13)
+    sshkey (2.0.0)
+    stackprof (0.2.15)
+    state_machines (0.5.0)
+    state_machines-activemodel (0.7.1)
+      activemodel (>= 4.1)
+      state_machines (>= 0.5.0)
+    state_machines-activerecord (0.6.0)
+      activerecord (>= 4.1)
+      state_machines-activemodel (>= 0.5.0)
+    swd (1.1.2)
+      activesupport (>= 3)
+      attr_required (>= 0.0.5)
+      httpclient (>= 2.4)
+    sys-filesystem (1.1.6)
+      ffi
+    sysexits (1.2.0)
+    temple (0.8.2)
+    terminal-table (1.8.0)
+      unicode-display_width (~> 1.1, >= 1.1.1)
+    test-prof (0.10.0)
+    text (1.3.1)
+    thin (1.7.2)
+      daemons (~> 1.0, >= 1.0.9)
+      eventmachine (~> 1.0, >= 1.0.4)
+      rack (>= 1, < 3)
+    thor (0.20.3)
+    thread_safe (0.3.6)
+    thrift (0.11.0.0)
+    tilt (2.0.10)
+    timecop (0.9.1)
+    timfel-krb5-auth (0.8.3)
+    toml (0.2.0)
+      parslet (~> 1.8.0)
+    toml-rb (1.0.0)
+      citrus (~> 3.0, > 3.0)
+    truncato (0.7.11)
+      htmlentities (~> 4.3.1)
+      nokogiri (>= 1.7.0, <= 2.0)
+    tzinfo (1.2.7)
+      thread_safe (~> 0.1)
+    u2f (0.2.1)
+    uber (0.1.0)
+    uglifier (2.7.2)
+      execjs (>= 0.3.0)
+      json (>= 1.8.0)
+    unf (0.1.4)
+      unf_ext
+    unf_ext (0.0.7.5)
+    unicode-display_width (1.6.0)
+    unicode_plot (0.0.4)
+      enumerable-statistics (>= 2.0.1)
+    unicode_utils (1.4.0)
+    unicorn (5.5.5)
+      kgio (~> 2.6)
+      raindrops (~> 0.7)
+    unicorn-worker-killer (0.4.4)
+      get_process_mem (~> 0)
+      unicorn (>= 4, < 6)
+    uniform_notifier (1.13.0)
+    unleash (0.1.5)
+      murmurhash3 (~> 0.1.6)
+    unparser (0.4.7)
+      abstract_type (~> 0.0.7)
+      adamantium (~> 0.2.0)
+      concord (~> 0.1.5)
+      diff-lcs (~> 1.3)
+      equalizer (~> 0.0.9)
+      parser (>= 2.6.5)
+      procto (~> 0.0.2)
+    valid_email (0.1.3)
+      activemodel
+      mail (>= 2.6.1)
+    validate_email (0.1.6)
+      activemodel (>= 3.0)
+      mail (>= 2.2.5)
+    validate_url (1.0.8)
+      activemodel (>= 3.0.0)
+      public_suffix
+    validates_hostname (1.0.6)
+      activerecord (>= 3.0)
+      activesupport (>= 3.0)
+    version_sorter (2.2.4)
+    virtus (1.0.5)
+      axiom-types (~> 0.1)
+      coercible (~> 1.0)
+      descendants_tracker (~> 0.0, >= 0.0.3)
+      equalizer (~> 0.0, >= 0.0.9)
+    vmstat (2.3.0)
+    warden (1.2.8)
+      rack (>= 2.0.6)
+    webfinger (1.1.0)
+      activesupport
+      httpclient (>= 2.4)
+    webmock (3.5.1)
+      addressable (>= 2.3.6)
+      crack (>= 0.3.2)
+      hashdiff
+    webpack-rails (0.9.11)
+      railties (>= 3.2.0)
+    websocket-driver (0.7.1)
+      websocket-extensions (>= 0.1.0)
+    websocket-extensions (0.1.4)
+    wikicloth (0.8.1)
+      builder
+      expression_parser
+      rinku
+    with_env (1.1.0)
+    xml-simple (1.1.5)
+    xpath (3.2.0)
+      nokogiri (~> 1.8)
+    zeitwerk (2.3.0)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  RedCloth (~> 4.3.2)
+  ace-rails-ap (~> 4.1.0)
+  acme-client (~> 2.0.5)
+  activerecord-explain-analyze (~> 0.1)
+  acts-as-taggable-on (~> 6.0)
+  addressable (~> 2.7)
+  akismet (~> 3.0)
+  apollo_upload_server (~> 2.0.0.beta3)
+  asana (~> 0.9)
+  asciidoctor (~> 2.0.10)
+  asciidoctor-include-ext (~> 0.3.1)
+  asciidoctor-plantuml (~> 0.0.12)
+  atlassian-jwt (~> 0.2.0)
+  attr_encrypted (~> 3.1.0)
+  awesome_print
+  aws-sdk
+  babosa (~> 1.0.2)
+  base32 (~> 0.3.0)
+  batch-loader (~> 1.4.0)
+  bcrypt_pbkdf (~> 1.0)
+  benchmark-ips (~> 2.3.0)
+  benchmark-memory (~> 0.1)
+  better_errors (~> 2.5.0)
+  binding_of_caller (~> 0.8.0)
+  bootsnap (~> 1.4.6)
+  bootstrap_form (~> 4.2.0)
+  brakeman (~> 4.2)
+  browser (~> 2.5)
+  bullet (~> 6.0.2)
+  bundler-audit (~> 0.6.1)
+  capybara (~> 3.22.0)
+  capybara-screenshot (~> 1.0.22)
+  carrierwave (~> 1.3)
+  charlock_holmes (~> 0.7.5)
+  commonmarker (~> 0.20)
+  concurrent-ruby (~> 1.1)
+  connection_pool (~> 2.0)
+  countries (~> 3.0)
+  creole (~> 0.5.0)
+  danger (~> 6.0)
+  database_cleaner (~> 1.7.0)
+  deckar01-task_list (= 2.3.1)
+  default_value_for (~> 3.3.0)
+  derailed_benchmarks
+  device_detector
+  devise (~> 4.6)
+  devise-two-factor (~> 3.1.0)
+  diff_match_patch (~> 0.1.0)
+  diffy (~> 3.3)
+  discordrb-webhooks-blackst0ne (~> 3.3)
+  doorkeeper (~> 5.0.3)
+  doorkeeper-openid_connect (~> 1.6.3)
+  ed25519 (~> 1.2)
+  elasticsearch-api (~> 6.8)
+  elasticsearch-model (~> 6.1)
+  elasticsearch-rails (~> 6.1)
+  email_reply_trimmer (~> 0.1)
+  email_spec (~> 2.2.0)
+  erubi (~> 1.9.0)
+  escape_utils (~> 1.1)
+  factory_bot_rails (~> 5.1.0)
+  faraday (~> 0.12)
+  faraday_middleware-aws-signers-v4
+  fast_blank
+  ffaker (~> 2.10)
+  flipper (~> 0.17.1)
+  flipper-active_record (~> 0.17.1)
+  flipper-active_support_cache_store (~> 0.17.1)
+  flowdock (~> 0.7)
+  fog-aliyun (~> 0.3)
+  fog-aws (~> 3.5)
+  fog-core (= 2.1.0)
+  fog-google (~> 1.9)
+  fog-local (~> 0.6)
+  fog-openstack (~> 1.0)
+  fog-rackspace (~> 0.1.1)
+  font-awesome-rails (~> 4.7)
+  fugit (~> 1.2.1)
+  fuubar (~> 2.2.0)
+  gemojione (~> 3.3)
+  gettext (~> 3.2.2)
+  gettext_i18n_rails (~> 1.8.0)
+  gettext_i18n_rails_js (~> 1.3)
+  gitaly (~> 13.0.0.pre.rc1)
+  github-markup (~> 1.7.0)
+  gitlab-chronic (~> 0.10.5)
+  gitlab-labkit (= 0.12.0)
+  gitlab-license (~> 1.0)
+  gitlab-mail_room (~> 0.0.4)
+  gitlab-markup (~> 1.7.1)
+  gitlab-net-dns (~> 0.9.1)
+  gitlab-puma (~> 4.3.3.gitlab.2)
+  gitlab-puma_worker_killer (~> 0.1.1.gitlab.1)
+  gitlab-sidekiq-fetcher (= 0.5.2)
+  gitlab-styles (~> 3.2.0)
+  gitlab_chronic_duration (~> 0.10.6.2)
+  gitlab_omniauth-ldap (~> 2.1.1)
+  gon (~> 6.2)
+  google-api-client (~> 0.23)
+  google-protobuf (~> 3.8.0)
+  gpgme (~> 2.0.19)
+  grape (~> 1.1.0)
+  grape-entity (~> 0.7.1)
+  grape-path-helpers (~> 1.2)
+  grape_logging (~> 1.7)
+  graphiql-rails (~> 1.4.10)
+  graphql (~> 1.10.5)
+  graphql-docs (~> 1.6.0)
+  grpc (~> 1.24.0)
+  gssapi
+  guard-rspec
+  haml_lint (~> 0.34.0)
+  hamlit (~> 2.11.0)
+  hangouts-chat (~> 0.0.5)
+  hashie-forbidden_attributes
+  health_check (~> 2.6.0)
+  hipchat (~> 1.5.0)
+  html-pipeline (~> 2.12)
+  html2text
+  httparty (~> 0.16.4)
+  icalendar
+  invisible_captcha (~> 0.12.1)
+  jira-ruby (~> 2.0.0)
+  js_regex (~> 3.1)
+  json (~> 2.3.0)
+  json-schema (~> 2.8.0)
+  jwt (~> 2.1.0)
+  kaminari (~> 1.0)
+  knapsack (~> 1.17)
+  kubeclient (~> 4.6.0)
+  letter_opener_web (~> 1.3.4)
+  license_finder (~> 5.4)
+  licensee (~> 8.9)
+  lockbox (~> 0.3.3)
+  lograge (~> 0.5)
+  loofah (~> 2.2)
+  lru_redux
+  mail (= 2.7.1)
+  marginalia (~> 1.8.0)
+  memory_profiler (~> 0.9)
+  method_source (~> 0.8)
+  mimemagic (~> 0.3.2)
+  mini_magick
+  minitest (~> 5.11.0)
+  nakayoshi_fork (~> 0.0.4)
+  net-ldap
+  net-ntp
+  net-ssh (~> 6.0)
+  nokogiri (~> 1.10.9)
+  oauth2 (~> 1.4)
+  octokit (~> 4.15)
+  omniauth (~> 1.8)
+  omniauth-auth0 (~> 2.0.0)
+  omniauth-authentiq (~> 0.3.3)
+  omniauth-azure-oauth2 (~> 0.0.9)
+  omniauth-cas3 (~> 1.1.4)
+  omniauth-facebook (~> 4.0.0)
+  omniauth-github (~> 1.4)
+  omniauth-gitlab (~> 1.0.2)
+  omniauth-google-oauth2 (~> 0.6.0)
+  omniauth-kerberos (~> 0.3.0)
+  omniauth-oauth2-generic (~> 0.2.2)
+  omniauth-salesforce (~> 1.0.5)
+  omniauth-saml (~> 1.10)
+  omniauth-shibboleth (~> 1.3.0)
+  omniauth-twitter (~> 1.4)
+  omniauth-ultraauth (~> 0.0.2)
+  omniauth_crowd (~> 2.2.0)
+  omniauth_openid_connect (~> 0.3.3)
+  org-ruby (~> 0.9.12)
+  parallel (~> 1.19)
+  peek (~> 1.1)
+  pg (~> 1.1)
+  png_quantizator (~> 0.2.1)
+  premailer-rails (~> 1.10.3)
+  prometheus-client-mmap (~> 0.10.0)
+  pry-byebug (~> 3.5.1)
+  pry-rails (~> 0.3.9)
+  rack (~> 2.0.9)
+  rack-attack (~> 6.3.0)
+  rack-cors (~> 1.0.6)
+  rack-oauth2 (~> 1.9.3)
+  rack-proxy (~> 0.6.0)
+  rack-timeout
+  rails (~> 6.0.3)
+  rails-controller-testing
+  rails-i18n (~> 6.0)
+  rainbow (~> 3.0)
+  raindrops (~> 0.18)
+  rblineprof (~> 0.3.6)
+  rbtrace (~> 0.4)
+  rdoc (~> 6.1.2)
+  re2 (~> 1.2.0)
+  recaptcha (~> 4.11)
+  redis (~> 4.0)
+  redis-namespace (~> 1.6.0)
+  redis-rails (~> 5.0.2)
+  request_store (~> 1.5)
+  responders (~> 3.0)
+  retriable (~> 3.1.2)
+  rouge (~> 3.19.0)
+  rqrcode-rails3 (~> 0.1.7)
+  rspec-parameterized
+  rspec-rails (~> 4.0.0)
+  rspec-retry (~> 0.6.1)
+  rspec_junit_formatter
+  rspec_profiling (~> 0.0.5)
+  rubocop (~> 0.74.0)
+  rubocop-performance (~> 1.4.1)
+  rubocop-rspec (~> 1.37.0)
+  ruby-fogbugz (~> 0.2.1)
+  ruby-prof (~> 1.3.0)
+  ruby-progressbar
+  ruby_parser (~> 3.8)
+  rubyzip (~> 2.0.0)
+  rugged (~> 0.28)
+  sanitize (~> 4.6)
+  sassc-rails (~> 2.1.0)
+  scss_lint (~> 0.56.0)
+  seed-fu (~> 2.3.7)
+  selenium-webdriver (~> 3.142)
+  sentry-raven (~> 2.9)
+  settingslogic (~> 2.0.9)
+  shoulda-matchers (~> 4.0.1)
+  sidekiq (~> 5.2.7)
+  sidekiq-cron (~> 1.0)
+  simple_po_parser (~> 1.1.2)
+  simplecov (~> 0.18.5)
+  slack-messenger (~> 2.3.3)
+  snowplow-tracker (~> 0.6.1)
+  spring (~> 2.0.0)
+  spring-commands-rspec (~> 1.0.4)
+  sprockets (~> 3.7.0)
+  sshkey (~> 2.0)
+  stackprof (~> 0.2.15)
+  state_machines-activerecord (~> 0.6.0)
+  sys-filesystem (~> 1.1.6)
+  test-prof (~> 0.10.0)
+  thin (~> 1.7.0)
+  timecop (~> 0.9.1)
+  toml-rb (~> 1.0.0)
+  truncato (~> 0.7.11)
+  u2f (~> 0.2.1)
+  uglifier (~> 2.7.2)
+  unf (~> 0.1.4)
+  unicorn (~> 5.5)
+  unicorn-worker-killer (~> 0.4.4)
+  unleash (~> 0.1.5)
+  valid_email (~> 0.1)
+  validates_hostname (~> 1.0.6)
+  version_sorter (~> 2.2.4)
+  vmstat (~> 2.3.0)
+  webmock (~> 3.5.1)
+  webpack-rails (~> 0.9.10)
+  wikicloth (= 0.8.1)
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/rubyEnv/gemset.nix b/nixpkgs/pkgs/applications/version-management/gitlab/rubyEnv/gemset.nix
new file mode 100644
index 000000000000..041f19226f46
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/rubyEnv/gemset.nix
@@ -0,0 +1,5158 @@
+{
+  abstract_type = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09330cmhrc2wmfhdj9zzg82sv6cdhm3qgdkva5ni5xfjril2pf14";
+      type = "gem";
+    };
+    version = "0.0.7";
+  };
+  ace-rails-ap = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14wj9gsiy7rm0lvs27ffsrh92wndjksj6rlfj3n7jhv1v77w9v2h";
+      type = "gem";
+    };
+    version = "4.1.2";
+  };
+  acme-client = {
+    dependencies = ["faraday"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1k9pddds2kfw0br2c153csly4248w9rppkvslx46gncadp9gdb4n";
+      type = "gem";
+    };
+    version = "2.0.5";
+  };
+  actioncable = {
+    dependencies = ["actionpack" "nio4r" "websocket-driver"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lvbyv15j3g3xhywr8jdgv5rjn26mz7430886njjfrd12x812szy";
+      type = "gem";
+    };
+    version = "6.0.3";
+  };
+  actionmailbox = {
+    dependencies = ["actionpack" "activejob" "activerecord" "activestorage" "activesupport" "mail"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nwvx83lha87052jywaiqq284nabp3h5lfq7vrb01myh6cr3ggaq";
+      type = "gem";
+    };
+    version = "6.0.3";
+  };
+  actionmailer = {
+    dependencies = ["actionpack" "actionview" "activejob" "mail" "rails-dom-testing"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "16d40j1hcak5p9185dbb015difw12m5f3wjfbh4mw9w8agqsc8mr";
+      type = "gem";
+    };
+    version = "6.0.3";
+  };
+  actionpack = {
+    dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1v885hs35r8217py08z5k1wvgfzfml64g9wf5v3djgh8mhlf5nfn";
+      type = "gem";
+    };
+    version = "6.0.3";
+  };
+  actiontext = {
+    dependencies = ["actionpack" "activerecord" "activestorage" "activesupport" "nokogiri"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00w8a5vxs1rlbn0innhrwhjjavmgx0scnkz8h7k83df9l1s7f70j";
+      type = "gem";
+    };
+    version = "6.0.3";
+  };
+  actionview = {
+    dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0s6fr50l714rvzr9vavg1ckgx5xjj5zz7dca42xxjp4jkr7jva7q";
+      type = "gem";
+    };
+    version = "6.0.3";
+  };
+  activejob = {
+    dependencies = ["activesupport" "globalid"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qr5p1sijan8k2m39w602s1mn3bwwsl7jm14drsgdhvdx5ilwg7b";
+      type = "gem";
+    };
+    version = "6.0.3";
+  };
+  activemodel = {
+    dependencies = ["activesupport"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pi9waxcvb8gxwp4i4wmxszyqhr28gn9jzbq1ivy84g1q658lmqz";
+      type = "gem";
+    };
+    version = "6.0.3";
+  };
+  activerecord = {
+    dependencies = ["activemodel" "activesupport"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1wkm8741i00l5cq88wl9nr131wh955x4cjg2q2d60m3qhpqbxirv";
+      type = "gem";
+    };
+    version = "6.0.3";
+  };
+  activerecord-explain-analyze = {
+    dependencies = ["activerecord" "pg"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yvz452ww0vn3n6197gx6zklwa591gc7f1m8accvjd9zw8gv3ssx";
+      type = "gem";
+    };
+    version = "0.1.0";
+  };
+  activestorage = {
+    dependencies = ["actionpack" "activejob" "activerecord" "marcel"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yy832p0q7gxp1vbncb677y35y112d2f6mvf131n0m2w35ig9m4f";
+      type = "gem";
+    };
+    version = "6.0.3";
+  };
+  activesupport = {
+    dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo" "zeitwerk"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0shh34xx9ygxb57s8mag8l22klvjfnk1c4jbjvchk16r6z0ps326";
+      type = "gem";
+    };
+    version = "6.0.3";
+  };
+  acts-as-taggable-on = {
+    dependencies = ["activerecord"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nvhd986xa6llyjnhikq4h1nrcf5b9r9s11if25qsj8358inrpga";
+      type = "gem";
+    };
+    version = "6.5.0";
+  };
+  adamantium = {
+    dependencies = ["ice_nine" "memoizable"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0165r2ikgfwv2rm8dzyijkp74fvg0ni72hpdx8ay2v7cj08dqyak";
+      type = "gem";
+    };
+    version = "0.2.0";
+  };
+  addressable = {
+    dependencies = ["public_suffix"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy";
+      type = "gem";
+    };
+    version = "2.7.0";
+  };
+  aes_key_wrap = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0li86k0g812jkzrppb2fvqngvzp09nygywjpn81nx90s01wxqw07";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  akismet = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0c5jhqfgvpz84d8jai51hin018ldpfd0civbk7mfwmrj7n71p6bl";
+      type = "gem";
+    };
+    version = "3.0.0";
+  };
+  apollo_upload_server = {
+    dependencies = ["graphql" "rails"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0riijpyicbkqsr46w4mfhh3pq2yrmakkz8mmgbrfjhzbyzac25na";
+      type = "gem";
+    };
+    version = "2.0.0.beta.3";
+  };
+  asana = {
+    dependencies = ["faraday" "faraday_middleware" "faraday_middleware-multi_json" "oauth2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19yr6ibz481jizvx0cjfvql142v8izi474c4vmwy9qzksyq2xhdj";
+      type = "gem";
+    };
+    version = "0.9.3";
+  };
+  asciidoctor = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1b2ajs3sabl0s27r7lhwkacw0yn0zfk4jpmidg9l8lzp2qlgjgbz";
+      type = "gem";
+    };
+    version = "2.0.10";
+  };
+  asciidoctor-include-ext = {
+    dependencies = ["asciidoctor"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1alaqfh31hd98yhqq8fsc50zzqw04p3d83pc35gdx3x9p3j1ds7d";
+      type = "gem";
+    };
+    version = "0.3.1";
+  };
+  asciidoctor-plantuml = {
+    dependencies = ["asciidoctor"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "02knhmyd3h1yryn66xjfciz7jjsq676kl7ama0r0cf92vyyvm12x";
+      type = "gem";
+    };
+    version = "0.0.12";
+  };
+  ast = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7";
+      type = "gem";
+    };
+    version = "2.4.0";
+  };
+  atlassian-jwt = {
+    dependencies = ["jwt"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ckfiiwv7dnifra7zhbggj96g0x0kzkv0x9n1is7lb86svlm7rjj";
+      type = "gem";
+    };
+    version = "0.2.0";
+  };
+  attr_encrypted = {
+    dependencies = ["encryptor"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ncv2az1zlj33bsllr6q1qdvbw42gv91lxq0ryclbv8l8xh841jg";
+      type = "gem";
+    };
+    version = "3.1.0";
+  };
+  attr_required = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1g22axmi2rhhy7w8c3x6gppsawxqavbrnxpnmphh22fk7cwi0kh2";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  awesome_print = {
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14arh1ixfsd6j5md0agyzvksm5svfkvchb90fp32nn7y3avcmc2h";
+      type = "gem";
+    };
+    version = "1.8.0";
+  };
+  aws-eventstream = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "100g77a5ixg4p5zwq77f28n2pdkk0y481f7v83qrlmnj22318qq6";
+      type = "gem";
+    };
+    version = "1.0.3";
+  };
+  aws-sdk = {
+    dependencies = ["aws-sdk-resources"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yvl9bxzaxgcyzix2yw46cgll9nl0xfg5qx1j6y3xc1i78rk7vy0";
+      type = "gem";
+    };
+    version = "2.11.374";
+  };
+  aws-sdk-core = {
+    dependencies = ["aws-sigv4" "jmespath"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1d7nw1jihv7rglcmkd3hhidjflbzq5ik63n43q27pmx8ki108rd9";
+      type = "gem";
+    };
+    version = "2.11.374";
+  };
+  aws-sdk-resources = {
+    dependencies = ["aws-sdk-core"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qx2a67vsw8rz1y0m04f97p1q4zx7miy06a5ck78hm77nvsigjj4";
+      type = "gem";
+    };
+    version = "2.11.374";
+  };
+  aws-sigv4 = {
+    dependencies = ["aws-eventstream"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1dfc8i5cxjwlvi4b665lbpbwvks8a6wfy3vfmwr3pjdmxwdmc2cs";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  axiom-types = {
+    dependencies = ["descendants_tracker" "ice_nine" "thread_safe"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10q3k04pll041mkgy0m5fn2b1lazm6ly1drdbcczl5p57lzi3zy1";
+      type = "gem";
+    };
+    version = "0.1.1";
+  };
+  babosa = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05rgxg4pz4bc4xk34w5grv0yp1j94wf571w84lf3xgqcbs42ip2f";
+      type = "gem";
+    };
+    version = "1.0.2";
+  };
+  base32 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0b7y8sy6j9v1lvfzd4va88k5vg9yh0xcjzzn3llcw7yxqlcrnbjk";
+      type = "gem";
+    };
+    version = "0.3.2";
+  };
+  batch-loader = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09jaxxddqpgq8ynwd2gpjq5rkhw00zdjnqisk9qbpjgxzk6f8gwi";
+      type = "gem";
+    };
+    version = "1.4.0";
+  };
+  bcrypt = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ysblqxkclmnhrd0kmb5mr8p38mbar633gdsb14b7dhkhgawgzfy";
+      type = "gem";
+    };
+    version = "3.1.12";
+  };
+  bcrypt_pbkdf = {
+    groups = ["ed25519"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0cj4k13c7qvvck7y25i3xarvyqq8d27vl61jddifkc7llnnap1hv";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  benchmark-ips = {
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bh681m54qdsdyvpvflj1wpnj3ybspbpjkr4cnlrl4nk4yikli0j";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+  benchmark-memory = {
+    dependencies = ["memory_profiler"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11qw8k6rl79ri00njrf1x9v6vzwgv12rkcvgzvg0sk8pfrkzwyxa";
+      type = "gem";
+    };
+    version = "0.1.2";
+  };
+  better_errors = {
+    dependencies = ["coderay" "erubi" "rack"];
+    groups = ["development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1pqnxxsqqs7vnqvamk5bzs84dv584g9s0qaf2vqb1v2aj5dabcg7";
+      type = "gem";
+    };
+    version = "2.5.0";
+  };
+  bindata = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0kxy917xyxckifmnawff65j7g6yb3wh2s45npjq9lqjbi1p86lsr";
+      type = "gem";
+    };
+    version = "2.4.3";
+  };
+  binding_ninja = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17fa3sv6p2fw9g8fxpwx1kjhhs28aw41akkba0hlgvk60055b1aa";
+      type = "gem";
+    };
+    version = "0.2.3";
+  };
+  binding_of_caller = {
+    dependencies = ["debug_inspector"];
+    groups = ["development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g";
+      type = "gem";
+    };
+    version = "0.8.0";
+  };
+  bootsnap = {
+    dependencies = ["msgpack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bz62p9vc7lcrmzhiz4pf7myww086mq287cw3jjj7fyc7jhmamw0";
+      type = "gem";
+    };
+    version = "1.4.6";
+  };
+  bootstrap_form = {
+    dependencies = ["actionpack" "activemodel"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "044pi097jwh3z68g1zfmbcl9xchqfcsls1j1nvx1bkyj034v6y7m";
+      type = "gem";
+    };
+    version = "4.2.0";
+  };
+  brakeman = {
+    groups = ["development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "161l4ln7x1vnqrcvbvglznf46f0lvq305vq211xaxp4fv4wwv89v";
+      type = "gem";
+    };
+    version = "4.2.1";
+  };
+  browser = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0sdx0ny34i6vqxdsc7sy9g0nafdbrw8kvvb5xh9m18x1bzpqk92f";
+      type = "gem";
+    };
+    version = "2.5.3";
+  };
+  builder = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr";
+      type = "gem";
+    };
+    version = "3.2.4";
+  };
+  bullet = {
+    dependencies = ["activesupport" "uniform_notifier"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1h16vrqblcdlizgbidk7bgmhcfb96a9y5jw117my5yhs07yp0i3s";
+      type = "gem";
+    };
+    version = "6.0.2";
+  };
+  bundler-audit = {
+    dependencies = ["thor"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pm22xpn3xyymsainixnrk8v3l3xi9bzwkjkspx00cfzp84xvxbq";
+      type = "gem";
+    };
+    version = "0.6.1";
+  };
+  byebug = {
+    groups = ["default" "development" "test"];
+    platforms = [{
+      engine = "maglev";
+    } {
+      engine = "ruby";
+    }];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vv7s88w8jb1qg4qz3jrs3x3y5d9jfyyl7wfiz78b5x95ydvx41q";
+      type = "gem";
+    };
+    version = "9.1.0";
+  };
+  capybara = {
+    dependencies = ["addressable" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1y7ncfji4s3h3wdr2hwsrd32k0va92a6lyx2x8w6a3vkbc94kpch";
+      type = "gem";
+    };
+    version = "3.22.0";
+  };
+  capybara-screenshot = {
+    dependencies = ["capybara" "launchy"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1x90lh7nf3zi54arjf430s9xdxr3c12xjq1l28izgxqdk8s40q7q";
+      type = "gem";
+    };
+    version = "1.0.22";
+  };
+  carrierwave = {
+    dependencies = ["activemodel" "activesupport" "mime-types"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10rz94kajilffp83sb767lr62b5f8l4jzqq80cr92wqxdgbszdks";
+      type = "gem";
+    };
+    version = "1.3.1";
+  };
+  character_set = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "114npdbw1ivyx4vnid8ncnjw4wnjcipf2lvihlg3ibbh7an0m9s9";
+      type = "gem";
+    };
+    version = "1.1.2";
+  };
+  charlock_holmes = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nf1l31n10yaark2rrg5qzyzcx9w80681449s3j09qmnipsl8rl5";
+      type = "gem";
+    };
+    version = "0.7.6";
+  };
+  childprocess = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ic028k8xgm2dds9mqnvwwx3ibaz32j8455zxr9f4bcnviyahya5";
+      type = "gem";
+    };
+    version = "3.0.0";
+  };
+  chunky_png = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vf0axgrm95bs3y0x5gdb76xawfh210yxplj7jbwr6z7n88i1axn";
+      type = "gem";
+    };
+    version = "1.3.5";
+  };
+  citrus = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0l7nhk3gkm1hdchkzzhg2f70m47pc0afxfpl6mkiibc9qcpl3hjf";
+      type = "gem";
+    };
+    version = "3.0.2";
+  };
+  claide = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0kasxsms24fgcdsq680nz99d5lazl9rmz1qkil2y5gbbssx89g0z";
+      type = "gem";
+    };
+    version = "1.0.3";
+  };
+  claide-plugins = {
+    dependencies = ["cork" "nap" "open4"];
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bhw5j985qs48v217gnzva31rw5qvkf7qj8mhp73pcks0sy7isn7";
+      type = "gem";
+    };
+    version = "0.9.2";
+  };
+  coderay = {
+    groups = ["default" "development" "test"];
+    platforms = [{
+      engine = "maglev";
+    } {
+      engine = "ruby";
+    }];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
+      type = "gem";
+    };
+    version = "1.1.2";
+  };
+  coercible = {
+    dependencies = ["descendants_tracker"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p5azydlsz0nkxmcq0i1gzmcfq02lgxc4as7wmf47j1c6ljav0ah";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  colored2 = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jlbqa9q4mvrm73aw9mxh23ygzbjiqwisl32d8szfb5fxvbjng5i";
+      type = "gem";
+    };
+    version = "3.1.2";
+  };
+  commonmarker = {
+    dependencies = ["ruby-enum"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19zd9na1g2d0zzbqhmfj8rjfzcxj34vja3i52gvv859i8fifa461";
+      type = "gem";
+    };
+    version = "0.20.1";
+  };
+  concord = {
+    dependencies = ["adamantium" "equalizer"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1b6cdn0fg4n9gzbdr7zyf4jq40y6h0c0g9cra7wk9hhmsylk91bg";
+      type = "gem";
+    };
+    version = "0.1.5";
+  };
+  concurrent-ruby = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "094387x4yasb797mv07cs3g6f08y56virc2rjcpb1k79rzaj3nhl";
+      type = "gem";
+    };
+    version = "1.1.6";
+  };
+  connection_pool = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68";
+      type = "gem";
+    };
+    version = "2.2.2";
+  };
+  contracts = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11kj7hdr94hxgxad9wazncvaxzaxlbvw6laq179ivhw9za746vnz";
+      type = "gem";
+    };
+    version = "0.11.0";
+  };
+  cork = {
+    dependencies = ["colored2"];
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1g6l780z1nj4s3jr11ipwcj8pjbibvli82my396m3y32w98ar850";
+      type = "gem";
+    };
+    version = "0.3.0";
+  };
+  countries = {
+    dependencies = ["i18n_data" "sixarm_ruby_unaccent" "unicode_utils"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0w278pjhwkbin7jpr7m47wac7gj5n4l2him9k2q4ngzq6rs2id7c";
+      type = "gem";
+    };
+    version = "3.0.0";
+  };
+  crack = {
+    dependencies = ["safe_yaml"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k";
+      type = "gem";
+    };
+    version = "0.4.3";
+  };
+  crass = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pfl5c0pyqaparxaqxi6s4gfl21bdldwiawrc0aknyvflli60lfw";
+      type = "gem";
+    };
+    version = "1.0.6";
+  };
+  creole = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm";
+      type = "gem";
+    };
+    version = "0.5.0";
+  };
+  css_parser = {
+    dependencies = ["addressable"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1y4vc018b5mzp7winw4pbb22jk0dpxp22pzzxq7w0rgvfxzi89pd";
+      type = "gem";
+    };
+    version = "1.7.0";
+  };
+  daemons = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lxqq6dgb8xhliywar2lvkwqy2ssraf9dk4b501pb4ixc2mvxbp2";
+      type = "gem";
+    };
+    version = "1.2.6";
+  };
+  danger = {
+    dependencies = ["claide" "claide-plugins" "colored2" "cork" "faraday" "faraday-http-cache" "git" "kramdown" "kramdown-parser-gfm" "no_proxy_fix" "octokit" "terminal-table"];
+    groups = ["development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0gyxfs7pkcg90llhpl2nwfqqcqi0qngqhk8gpyrffj6m0lm1m6wl";
+      type = "gem";
+    };
+    version = "6.0.9";
+  };
+  database_cleaner = {
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05i0nf2aj70m61y3fspypdkc6d1qgibf5kav05a71b5gjz0k7y5x";
+      type = "gem";
+    };
+    version = "1.7.0";
+  };
+  debug_inspector = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vxr0xa1mfbkfcrn71n7c4f2dj7la5hvphn904vh20j3x4j5lrx0";
+      type = "gem";
+    };
+    version = "0.0.3";
+  };
+  debugger-ruby_core_source = {
+    groups = ["default" "development"];
+    platforms = [{
+      engine = "maglev";
+    } {
+      engine = "ruby";
+    }];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lp5dmm8a8dpwymv6r1y6yr24wxsj0gvgb2b8i7qq9rcv414snwd";
+      type = "gem";
+    };
+    version = "1.3.8";
+  };
+  deckar01-task_list = {
+    dependencies = ["html-pipeline"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18bwkvxjr7khxj95xrg1vj7va522vbm2li9wsiiw01cg5b10hni0";
+      type = "gem";
+    };
+    version = "2.3.1";
+  };
+  declarative = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0642xvwzzbgi3kp1bg467wma4g3xqrrn0sk369hjam7w579gnv5j";
+      type = "gem";
+    };
+    version = "0.0.10";
+  };
+  declarative-option = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1g4ibxq566f1frnhdymzi9hxxcm4g2gw4n21mpjk2mhwym4q6l0p";
+      type = "gem";
+    };
+    version = "0.1.0";
+  };
+  default_value_for = {
+    dependencies = ["activerecord"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08hwnnqm3bxd4n627isliq79zysdlmfkf813403v0b4mkhika5my";
+      type = "gem";
+    };
+    version = "3.3.0";
+  };
+  derailed_benchmarks = {
+    dependencies = ["benchmark-ips" "get_process_mem" "heapy" "memory_profiler" "mini_histogram" "rack" "rake" "ruby-statistics" "thor" "unicode_plot"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03lrvzvdjy6wyrnb3nw7nqn9jbhn6lncach58pj6m4l76b2n6jpr";
+      type = "gem";
+    };
+    version = "1.7.0";
+  };
+  descendants_tracker = {
+    dependencies = ["thread_safe"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15q8g3fcqyb41qixn6cky0k3p86291y7xsh1jfd851dvrza1vi79";
+      type = "gem";
+    };
+    version = "0.0.4";
+  };
+  device_detector = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0zbsjj1bgwmsiqiw6x5fzbzp25xc10c02s37ggl2635ha0qzn05q";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  devise = {
+    dependencies = ["bcrypt" "orm_adapter" "railties" "responders" "warden"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0a64xq0dj6p0firpg4mrrfmlakpv17hky5yfrjhchs2sybmymr9i";
+      type = "gem";
+    };
+    version = "4.7.1";
+  };
+  devise-two-factor = {
+    dependencies = ["activesupport" "attr_encrypted" "devise" "railties" "rotp"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0gzk7phrryxlq4k3jrcxm8faifmbqrbfxq7jx089ncsixwd69bn4";
+      type = "gem";
+    };
+    version = "3.1.0";
+  };
+  diff-lcs = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
+      type = "gem";
+    };
+    version = "1.3";
+  };
+  diff_match_patch = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03n4g4w2pwiygmqq5lfhqrpbs9g6kv0jhb3vrffz3vgaryzmfq5k";
+      type = "gem";
+    };
+    version = "0.1.0";
+  };
+  diffy = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qhx743lcx61r2d3925jk61c6r8clfjmpf5g93cdy5sq00ig76lh";
+      type = "gem";
+    };
+    version = "3.3.0";
+  };
+  discordrb-webhooks-blackst0ne = {
+    dependencies = ["rest-client"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1f0dw6ci5cbrxrvvqw2kqabpzyjisd4hflbi370rpb4cakkzgw39";
+      type = "gem";
+    };
+    version = "3.3.0";
+  };
+  docile = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qrwiyagxzl8zlx3dafb0ay8l14ib7imb2rsmx70i5cp420v8gif";
+      type = "gem";
+    };
+    version = "1.3.2";
+  };
+  domain_name = {
+    dependencies = ["unf"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v";
+      type = "gem";
+    };
+    version = "0.5.20180417";
+  };
+  doorkeeper = {
+    dependencies = ["railties"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0w554smil33j64h50w29xavgg4k7172r0c2rrygfbp5p4ap9py9c";
+      type = "gem";
+    };
+    version = "5.0.3";
+  };
+  doorkeeper-openid_connect = {
+    dependencies = ["doorkeeper" "json-jwt"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qcl11dw9b0si45id7sqwv19g8am4i221sqkigimnvhc1cci2yfw";
+      type = "gem";
+    };
+    version = "1.6.3";
+  };
+  ed25519 = {
+    groups = ["ed25519"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1f5kr8za7hvla38fc0n9jiv55iq62k5bzclsa5kdb14l3r4w6qnw";
+      type = "gem";
+    };
+    version = "1.2.4";
+  };
+  elasticsearch = {
+    dependencies = ["elasticsearch-api" "elasticsearch-transport"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jp7amblk18dag3w0yrzdzkhkbfap2d6xpbyv9314parxw98mgq0";
+      type = "gem";
+    };
+    version = "6.8.0";
+  };
+  elasticsearch-api = {
+    dependencies = ["multi_json"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0kq6ljssd5nd2fjaznbnyf4bhkk5q17ava5rq3bjfvjh1wyzagca";
+      type = "gem";
+    };
+    version = "6.8.0";
+  };
+  elasticsearch-model = {
+    dependencies = ["activesupport" "elasticsearch" "hashie"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ifm8vh8nr9r1wnpnfa6kjm7v54jwsgvpg060r08haydqcv5lbsy";
+      type = "gem";
+    };
+    version = "6.1.0";
+  };
+  elasticsearch-rails = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0zxqj7pgb0b32qda84jlg6kay4b9qbpjlfk2b0m23hxnkbbmf1bd";
+      type = "gem";
+    };
+    version = "6.1.0";
+  };
+  elasticsearch-transport = {
+    dependencies = ["faraday" "multi_json"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0c1scz8l4z84x7g3iwf9kmvrpgjjq0gaxaswviiy9zg3csn720mc";
+      type = "gem";
+    };
+    version = "6.8.0";
+  };
+  email_reply_trimmer = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vijywhy1acsq4187ss6w8a7ksswaf1d5np3wbj962b6rqif5vcz";
+      type = "gem";
+    };
+    version = "0.1.6";
+  };
+  email_spec = {
+    dependencies = ["htmlentities" "launchy" "mail"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yadaif80cf2ry0nvhir1s70xmm22xzncq6vfvvffdd8h02ridv0";
+      type = "gem";
+    };
+    version = "2.2.0";
+  };
+  encryptor = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0s8rvfl0vn8w7k1sgkc234060jh468s3zd45xa64p1jdmfa3zwmb";
+      type = "gem";
+    };
+    version = "3.0.0";
+  };
+  enumerable-statistics = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ac2f5g4m58l6bmap1ak6vgqykz2hy9n3c8r6dmlr2xjybdryc1f";
+      type = "gem";
+    };
+    version = "2.0.1";
+  };
+  equalizer = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1kjmx3fygx8njxfrwcmn7clfhjhb6bvv3scy2lyyi0wqyi3brra4";
+      type = "gem";
+    };
+    version = "0.0.11";
+  };
+  erubi = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nwzxnqhr31fn7nbqmffcysvxjdfl3bhxi0bld5qqhcnfc1xd13x";
+      type = "gem";
+    };
+    version = "1.9.0";
+  };
+  escape_utils = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qminivnyzwmqjhrh3b92halwbk0zcl9xn828p5rnap1szl2yag5";
+      type = "gem";
+    };
+    version = "1.2.1";
+  };
+  et-orbi = {
+    dependencies = ["tzinfo"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1swgjb3h2hs5xflb68837l0vd32masbz9c66b1963mxlnnxf5gsg";
+      type = "gem";
+    };
+    version = "1.2.1";
+  };
+  eventmachine = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r";
+      type = "gem";
+    };
+    version = "1.2.7";
+  };
+  excon = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nn8wk7j22ly4lzdp5pnm7qsrjxbgspiyxkw70g1qf9bn6pslmxr";
+      type = "gem";
+    };
+    version = "0.71.1";
+  };
+  execjs = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0grlxwiccbnflxs30r3h7g23xnps5knav1jyqkk3anvm8363ifjw";
+      type = "gem";
+    };
+    version = "2.6.0";
+  };
+  expression_parser = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1938z3wmmdabqxlh5d5c56xfg1jc6z15p7zjyhvk7364zwydnmib";
+      type = "gem";
+    };
+    version = "0.9.0";
+  };
+  extended-markdown-filter = {
+    dependencies = ["html-pipeline"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17mi5qayplfaa6p3mfwa36il84ixr0bimqvl0q73lw5i81blp126";
+      type = "gem";
+    };
+    version = "0.6.0";
+  };
+  factory_bot = {
+    dependencies = ["activesupport"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04mvwcdh1056r79vq969vlncrcy53fkhw0iixpqvp8gnx5ajbsv6";
+      type = "gem";
+    };
+    version = "5.1.0";
+  };
+  factory_bot_rails = {
+    dependencies = ["factory_bot" "railties"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "02q7lwfdilwahza2jz0p0kc2rragv617q9r2yy72syv6lfy923sx";
+      type = "gem";
+    };
+    version = "5.1.0";
+  };
+  faraday = {
+    dependencies = ["multipart-post"];
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0s72m05jvzc1pd6cw1i289chas399q0a14xrwg4rvkdwy7bgzrh0";
+      type = "gem";
+    };
+    version = "0.15.4";
+  };
+  faraday-http-cache = {
+    dependencies = ["faraday"];
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08j86fgcwl7z792qyijdsq680arzpfiydqd24ja405z2rbm7r2i0";
+      type = "gem";
+    };
+    version = "2.0.0";
+  };
+  faraday_middleware = {
+    dependencies = ["faraday"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p7icfl28nvl8qqdsngryz1snqic9l8x6bk0dxd7ygn230y0k41d";
+      type = "gem";
+    };
+    version = "0.12.2";
+  };
+  faraday_middleware-aws-signers-v4 = {
+    dependencies = ["aws-sdk-resources" "faraday"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0y88xcbq8k2ijhsqdava5493p26k49agvnzca6vkl3qwfv3ambhp";
+      type = "gem";
+    };
+    version = "0.1.7";
+  };
+  faraday_middleware-multi_json = {
+    dependencies = ["faraday_middleware" "multi_json"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0651sxhzbq9xfq3hbpmrp0nbybxnm9ja3m97k386m4bqgamlvz1q";
+      type = "gem";
+    };
+    version = "0.0.6";
+  };
+  fast_blank = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "16s1ilyvwzmkcgmklbrn0c2pch5n02vf921njx0bld4crgdr6z56";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  fast_gettext = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1s42dsy3rh9h37d16pwhswf2q9cx25v5fn3q881b5iz6fvdjixv3";
+      type = "gem";
+    };
+    version = "1.6.0";
+  };
+  ffaker = {
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01z5lpssjc0n8lm4xrlja0hh8lv4ngzbybjvd4rdkc5x9ddvh8s3";
+      type = "gem";
+    };
+    version = "2.10.0";
+  };
+  ffi = {
+    groups = ["default" "development" "kerberos" "puma" "test" "unicorn"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10lfhahnnc91v63xpvk65apn61pib086zha3z5sp1xk9acfx12h4";
+      type = "gem";
+    };
+    version = "1.12.2";
+  };
+  ffi-compiler = {
+    dependencies = ["ffi" "rake"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0c2caqm9wqnbidcb8dj4wd3s902z15qmgxplwyfyqbwa0ydki7q1";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  flipper = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01gbn1qmcvn49gjcbvd5fga57qc8l3915kb04ikkffvb6n09q7f7";
+      type = "gem";
+    };
+    version = "0.17.1";
+  };
+  flipper-active_record = {
+    dependencies = ["activerecord" "flipper"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "154q9xajqs64gxa9fv4hwpad44x3rmwgpldrb941i8wi37dpzskg";
+      type = "gem";
+    };
+    version = "0.17.1";
+  };
+  flipper-active_support_cache_store = {
+    dependencies = ["activesupport" "flipper"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mkbyn3mx3f411x4z1l1djc9vix3wrfzd5rhrmxb83iqp60r42hg";
+      type = "gem";
+    };
+    version = "0.17.1";
+  };
+  flowdock = {
+    dependencies = ["httparty" "multi_json"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04nrvg4gzgabf5mnnhccl8bwrkvn3y4pm7a1dqzqhpvfr4m5pafg";
+      type = "gem";
+    };
+    version = "0.7.1";
+  };
+  fog-aliyun = {
+    dependencies = ["fog-core" "fog-json" "ipaddress" "xml-simple"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vl5zf9wr6qwm1awxscyifvrrfqnyacidxgzhkba2wqlgizk3anh";
+      type = "gem";
+    };
+    version = "0.3.3";
+  };
+  fog-aws = {
+    dependencies = ["fog-core" "fog-json" "fog-xml" "ipaddress"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "086kyvdhf1k8nk7f4gmybjc3k0m88f9pw99frddcy1w96pj5kyg4";
+      type = "gem";
+    };
+    version = "3.5.2";
+  };
+  fog-core = {
+    dependencies = ["builder" "excon" "formatador" "mime-types"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1agd6xgzk0rxrsjdpn94v4hy89s0nm2cs4zg2p880w2dan9xgrak";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+  fog-google = {
+    dependencies = ["fog-core" "fog-json" "fog-xml" "google-api-client"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1784xynmgvj1x9phy42nbd3fcgj040zps6wn7msi6vnj1sg4wpfy";
+      type = "gem";
+    };
+    version = "1.9.1";
+  };
+  fog-json = {
+    dependencies = ["fog-core" "multi_json"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx";
+      type = "gem";
+    };
+    version = "1.2.0";
+  };
+  fog-local = {
+    dependencies = ["fog-core"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ba4lln35nryi6dcbz68vxg9ml6v8cc8s8c82f7syfd84bz76x21";
+      type = "gem";
+    };
+    version = "0.6.0";
+  };
+  fog-openstack = {
+    dependencies = ["fog-core" "fog-json" "ipaddress"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "171xnsl6w0j7yi6sp26dcqahx4r4gb2cf359gmy11g5iwnsll5wg";
+      type = "gem";
+    };
+    version = "1.0.8";
+  };
+  fog-rackspace = {
+    dependencies = ["fog-core" "fog-json" "fog-xml" "ipaddress"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0y2bli061g37l9p4w0ljqbmg830rp2qz6sf8b0ck4cnx68j7m32a";
+      type = "gem";
+    };
+    version = "0.1.1";
+  };
+  fog-xml = {
+    dependencies = ["fog-core" "nokogiri"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "043lwdw2wsi6d55ifk0w3izi5l1d1h0alwyr3fixic7b94kc812n";
+      type = "gem";
+    };
+    version = "0.1.3";
+  };
+  font-awesome-rails = {
+    dependencies = ["railties"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0a32q69rdsdw9zhmf2cflvvnikg20amidhn40sv2afw2qk91fcrz";
+      type = "gem";
+    };
+    version = "4.7.0.5";
+  };
+  formatador = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
+      type = "gem";
+    };
+    version = "0.2.5";
+  };
+  fugit = {
+    dependencies = ["et-orbi" "raabro"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1x5h31hl75x0p5s36hinywg18ijlxjhnlb5p02aqcjjkx777rcav";
+      type = "gem";
+    };
+    version = "1.2.1";
+  };
+  fuubar = {
+    dependencies = ["rspec-core" "ruby-progressbar"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jlv2wisgnim29h47shvqhipbz1wgndfdr7i6y5wcfag0z2660lv";
+      type = "gem";
+    };
+    version = "2.2.0";
+  };
+  gemoji = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vgklpmhdz98xayln5hhqv4ffdyrglzwdixkn5gsk9rj94pkymc0";
+      type = "gem";
+    };
+    version = "3.0.1";
+  };
+  gemojione = {
+    dependencies = ["json"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ayk8r147k1s38nj18pwk76npx1p7jhi86silk800nj913pjvrhj";
+      type = "gem";
+    };
+    version = "3.3.0";
+  };
+  get_process_mem = {
+    dependencies = ["ffi"];
+    groups = ["default" "puma" "unicorn"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1q7pivp9z9pdxc2ha32q7x9zgqy8m9jf87g6n5mvi5l6knxya8sh";
+      type = "gem";
+    };
+    version = "0.2.5";
+  };
+  gettext = {
+    dependencies = ["locale" "text"];
+    groups = ["development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0764vj7gacn0aypm2bf6m46dzjzwzrjlmbyx6qwwwzbmi94r40wr";
+      type = "gem";
+    };
+    version = "3.2.9";
+  };
+  gettext_i18n_rails = {
+    dependencies = ["fast_gettext"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vs918a03mqvx9aczaqdg9d2q9s3c6swqavzn82qgq5i822czrcm";
+      type = "gem";
+    };
+    version = "1.8.0";
+  };
+  gettext_i18n_rails_js = {
+    dependencies = ["gettext" "gettext_i18n_rails" "po_to_json" "rails"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11yn5cf92wsmlj5c1065mg6swf8gq9l6g9ahikvvyf9npvjay42x";
+      type = "gem";
+    };
+    version = "1.3.0";
+  };
+  git = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bf83icwypi3p3pd97vlqbnp3hvf31ncd440m9kh9y7x6yk74wyh";
+      type = "gem";
+    };
+    version = "1.5.0";
+  };
+  gitaly = {
+    dependencies = ["grpc"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01ki2isvqyhfw503z3ahksbfb0s0m3psi4din9azdpgcqyv1pxlh";
+      type = "gem";
+    };
+    version = "13.0.0.pre.rc1";
+  };
+  github-markup = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17g6g18gdjg63k75sfwiskjzl9i0hfcnrkcpb4fwrnb20v3jgswp";
+      type = "gem";
+    };
+    version = "1.7.0";
+  };
+  gitlab-chronic = {
+    dependencies = ["numerizer"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xf857vj55r1jafbkdpdzq6c22r964rj9186m1q8hw4vd7f1h3zq";
+      type = "gem";
+    };
+    version = "0.10.5";
+  };
+  gitlab-labkit = {
+    dependencies = ["actionpack" "activesupport" "grpc" "jaeger-client" "opentracing" "redis"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0a63zgjll83b25hiq8m4sk75jci2rj8z46lss0j3bc6zi3pxnzax";
+      type = "gem";
+    };
+    version = "0.12.0";
+  };
+  gitlab-license = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1q26cgp3ln3b36n3sc69r6hxafkxjwdr3m0d7jlch5j7vyib9bih";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  gitlab-mail_room = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10ajr3l8vasy4zkc0p481m806g7k7idnw7mi6rlkmx4gkgb0z46j";
+      type = "gem";
+    };
+    version = "0.0.4";
+  };
+  gitlab-markup = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xnlra517pfj3hx07kasbqlcw51ix4xajr6bsd3mwg8bc92dlwy7";
+      type = "gem";
+    };
+    version = "1.7.1";
+  };
+  gitlab-net-dns = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jylfc47477imjmzc4jq7zsxklhrws6q4bb0zzl33drirf6s1ldw";
+      type = "gem";
+    };
+    version = "0.9.1";
+  };
+  gitlab-puma = {
+    dependencies = ["nio4r"];
+    groups = ["puma"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0i1gv7mgjpa46v6jr97rjk0zv3jny3gc3q3bq8wd6rv59lv5s4wi";
+      type = "gem";
+    };
+    version = "4.3.3.gitlab.2";
+  };
+  gitlab-puma_worker_killer = {
+    dependencies = ["get_process_mem" "gitlab-puma"];
+    groups = ["puma"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0iagbqh4djbxfd18srvfg9qcxn845ibs3kf0q1sd57k27lxj0har";
+      type = "gem";
+    };
+    version = "0.1.1.gitlab.1";
+  };
+  gitlab-sidekiq-fetcher = {
+    dependencies = ["sidekiq"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0dvx2klf1a1xyf15q34fn59291v6jwx3z315rxb2dmkvcr9873m1";
+      type = "gem";
+    };
+    version = "0.5.2";
+  };
+  gitlab-styles = {
+    dependencies = ["rubocop" "rubocop-gitlab-security" "rubocop-performance" "rubocop-rails" "rubocop-rspec"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1il4jqvz7b2l6pcxw6pfjvljpngn92mghfm47g0mfickih1i2r55";
+      type = "gem";
+    };
+    version = "3.2.0";
+  };
+  gitlab_chronic_duration = {
+    dependencies = ["numerizer"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yq5a4vs96xz5yxqkfwcvzw0riww7mf87j1s2s7rb6yagpz4rnkd";
+      type = "gem";
+    };
+    version = "0.10.6.2";
+  };
+  gitlab_omniauth-ldap = {
+    dependencies = ["net-ldap" "omniauth" "pyu-ruby-sasl" "rubyntlm"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1f8cjbzlhckarmm59l380jjy33a3hlljg69b3zkh8rhy1xd3xr90";
+      type = "gem";
+    };
+    version = "2.1.1";
+  };
+  globalid = {
+    dependencies = ["activesupport"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1";
+      type = "gem";
+    };
+    version = "0.4.2";
+  };
+  gon = {
+    dependencies = ["actionpack" "multi_json" "request_store"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0q9nvnw98mbb40h7mlzn1zk40r2l29yybhinmiqhrq8a6adsv806";
+      type = "gem";
+    };
+    version = "6.2.0";
+  };
+  google-api-client = {
+    dependencies = ["addressable" "googleauth" "httpclient" "mime-types" "representable" "retriable"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05h2lca9b334ayabgs3h0mzc2wg3csvkqv1lv3iirpgf90ypbk1k";
+      type = "gem";
+    };
+    version = "0.23.4";
+  };
+  google-protobuf = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0by3289irdklb9gjqw41fq6mg6yja3iyzh99dj8p8z9l4brllqn4";
+      type = "gem";
+    };
+    version = "3.8.0";
+  };
+  googleapis-common-protos-types = {
+    dependencies = ["google-protobuf"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hyr94cafiqj0k8q19hnl658pmbz2b404akikzfv4hdb1j1bwsg1";
+      type = "gem";
+    };
+    version = "1.0.4";
+  };
+  googleauth = {
+    dependencies = ["faraday" "jwt" "memoist" "multi_json" "os" "signet"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1747p1dhpvz76i98xnjrvaj785y1232svm0nc8g9by6pz835gp2l";
+      type = "gem";
+    };
+    version = "0.6.6";
+  };
+  gpgme = {
+    dependencies = ["mini_portile2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xbgh9d8nbvsvyzqnd0mzhz0nr9hx4qn025kmz6d837lry4lc6gw";
+      type = "gem";
+    };
+    version = "2.0.20";
+  };
+  grape = {
+    dependencies = ["activesupport" "builder" "mustermann-grape" "rack" "rack-accept" "virtus"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04bam0iq9sad1df361317zz4knwci905yig502khl8gm1lp1168c";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  grape-entity = {
+    dependencies = ["activesupport" "multi_json"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1w78wylkhdkc0s6n6d20hggbb3pl3ladzzd5lx6ack2iswybx7b9";
+      type = "gem";
+    };
+    version = "0.7.1";
+  };
+  grape-path-helpers = {
+    dependencies = ["activesupport" "grape" "rake"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "170aw6yvr8l5srlfjz1yqpxr7klr8jypr4i0gj41gn6v4iamyl79";
+      type = "gem";
+    };
+    version = "1.2.0";
+  };
+  grape_logging = {
+    dependencies = ["grape" "rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0x6cmmj0wi1m689r8d4yhyhpl8dwj5skn8b29igm4xvw3swkg94x";
+      type = "gem";
+    };
+    version = "1.8.3";
+  };
+  graphiql-rails = {
+    dependencies = ["railties" "sprockets-rails"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10q5zipwgjgaan9lfqakdkm5ry8afgkq79bkimgksn6jyyvpz6w8";
+      type = "gem";
+    };
+    version = "1.4.10";
+  };
+  graphql = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0zj729kxig2klhm4naqsgrfi4xgba4vh2pazvvi7iaikaa3vfh48";
+      type = "gem";
+    };
+    version = "1.10.5";
+  };
+  graphql-docs = {
+    dependencies = ["commonmarker" "escape_utils" "extended-markdown-filter" "gemoji" "graphql" "html-pipeline" "sass"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12wzsikbn54b2hcv100hz7isq5gdjm5w5b8xya64ra5sw6sabq8d";
+      type = "gem";
+    };
+    version = "1.6.0";
+  };
+  grpc = {
+    dependencies = ["google-protobuf" "googleapis-common-protos-types"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18wikj9qd4jb4lks55cs2cf3q7fifnanm9z9ywnxhpj57vbnilpf";
+      type = "gem";
+    };
+    version = "1.24.0";
+  };
+  gssapi = {
+    dependencies = ["ffi"];
+    groups = ["kerberos"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0j93nsf9j57p7x4aafalvjg8hia2mmqv3aky7fmw2ck5yci343ix";
+      type = "gem";
+    };
+    version = "1.2.0";
+  };
+  guard = {
+    dependencies = ["formatador" "listen" "lumberjack" "nenv" "notiffany" "pry" "shellany" "thor"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "000hn5cdqz3wl99b245q958c5byi2dlsqi814q5gmyljv7i47zwf";
+      type = "gem";
+    };
+    version = "2.15.1";
+  };
+  guard-compat = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zj6sr1k8w59mmi27rsii0v8xyy2rnsi09nqvwpgj1q10yq1mlis";
+      type = "gem";
+    };
+    version = "1.2.1";
+  };
+  guard-rspec = {
+    dependencies = ["guard" "guard-compat" "rspec"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jkm5xp90gm4c5s51pmf92i9hc10gslwwic6mvk72g0yplya0yx4";
+      type = "gem";
+    };
+    version = "4.7.3";
+  };
+  haml = {
+    dependencies = ["temple" "tilt"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0dwarfbc04bblljs4xg9fy57b5y8xrck6slhssa6bd7x58bh222c";
+      type = "gem";
+    };
+    version = "5.1.2";
+  };
+  haml_lint = {
+    dependencies = ["haml" "rainbow" "rubocop" "sysexits"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1iaaa5as4nlblnbvy6pxj8z9k3jqspbh4f43il519f28lgi0llsn";
+      type = "gem";
+    };
+    version = "0.34.0";
+  };
+  hamlit = {
+    dependencies = ["temple" "thor" "tilt"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "13wkrvyldk21xlc9illam495fpgf7w7bksaj8y6n00y036wmbg60";
+      type = "gem";
+    };
+    version = "2.11.0";
+  };
+  hangouts-chat = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1dmnv3723c22683bzys8walkl6wi74xzawxjbhwqzjdbwk3bdgmx";
+      type = "gem";
+    };
+    version = "0.0.5";
+  };
+  hashdiff = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19ykg5pax8798nh1yv71adkx0zzs7gn2rxjj86v7nsw0jba5lask";
+      type = "gem";
+    };
+    version = "0.3.8";
+  };
+  hashie = {
+    groups = ["default" "kerberos"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh";
+      type = "gem";
+    };
+    version = "3.6.0";
+  };
+  hashie-forbidden_attributes = {
+    dependencies = ["hashie"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1chgg5d2iddja6ww02x34g8avg11fzmzcb8yvnqlykii79zx6vis";
+      type = "gem";
+    };
+    version = "0.1.1";
+  };
+  health_check = {
+    dependencies = ["rails"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1mfa180nyzz1j0abfihm5nm3lmzq99362ibcphky6rh5vwhckvm8";
+      type = "gem";
+    };
+    version = "2.6.0";
+  };
+  heapy = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1r9f38fpgjgaxskkwvsliijj6vfmgsff9pnranvvvzkdl67hk1hw";
+      type = "gem";
+    };
+    version = "0.1.4";
+  };
+  hipchat = {
+    dependencies = ["httparty" "mimemagic"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hgy5jav479vbzzk53lazhpjj094dcsqw6w1d6zjn52p72bwq60k";
+      type = "gem";
+    };
+    version = "1.5.2";
+  };
+  html-pipeline = {
+    dependencies = ["activesupport" "nokogiri"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19hc7njr029pzqljpfhzhdi0p2rgn8ihn3bdnai2apy6nj1g1sg2";
+      type = "gem";
+    };
+    version = "2.12.2";
+  };
+  html2text = {
+    dependencies = ["nokogiri"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0kxdj8pf9pss9xgs8aac0alj5g1fi225yzdhh33lzampkazg1hii";
+      type = "gem";
+    };
+    version = "0.2.0";
+  };
+  htmlentities = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj";
+      type = "gem";
+    };
+    version = "4.3.4";
+  };
+  http = {
+    dependencies = ["addressable" "http-cookie" "http-form_data" "http-parser"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1gsn0jmri7cavw1pv3pbynq6nldsff0r5dr6pa0mxz0rkpjsgjwl";
+      type = "gem";
+    };
+    version = "4.2.0";
+  };
+  http-cookie = {
+    dependencies = ["domain_name"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g";
+      type = "gem";
+    };
+    version = "1.0.3";
+  };
+  http-form_data = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15lpn604byf7cyxnw949xz4rvpcknqp7a48q73nm630gqxsa76f3";
+      type = "gem";
+    };
+    version = "2.1.1";
+  };
+  http-parser = {
+    dependencies = ["ffi-compiler"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10wz818i7dq5zkcll0yf7pbjz1zqvs7mgh3xg3x6www2f2ccwxqj";
+      type = "gem";
+    };
+    version = "1.2.1";
+  };
+  httparty = {
+    dependencies = ["mime-types" "multi_xml"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "109xvhl35dsk9zp65n5pdkhiijhqxdyvajbs74nkp4z8yl09vj32";
+      type = "gem";
+    };
+    version = "0.16.4";
+  };
+  httpclient = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99";
+      type = "gem";
+    };
+    version = "2.8.3";
+  };
+  i18n = {
+    dependencies = ["concurrent-ruby"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jwrd1l4mxz06iyx6053lr6hz2zy7ah2k3ranfzisvych5q19kwm";
+      type = "gem";
+    };
+    version = "1.8.2";
+  };
+  i18n_data = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0v0cdwxiaqdwhaljd7z0fbx29q3r5kjl93xnjm5abi1x37645ncj";
+      type = "gem";
+    };
+    version = "0.8.0";
+  };
+  icalendar = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xsydpp2xph00awi25axv2mwjd5p2rlgd4qb3kh05lvq795kirxd";
+      type = "gem";
+    };
+    version = "2.4.1";
+  };
+  ice_nine = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nv35qg1rps9fsis28hz2cq2fx1i96795f91q4nmkm934xynll2x";
+      type = "gem";
+    };
+    version = "0.11.2";
+  };
+  invisible_captcha = {
+    dependencies = ["rails"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15510dh1vh7l2xs2a4956nhxpnf10168r62i497nmcbyqpp1df88";
+      type = "gem";
+    };
+    version = "0.12.1";
+  };
+  ipaddress = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1x86s0s11w202j6ka40jbmywkrx8fhq8xiy8mwvnkhllj57hqr45";
+      type = "gem";
+    };
+    version = "0.8.3";
+  };
+  jaeger-client = {
+    dependencies = ["opentracing" "thrift"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "198m72c9w3wfwr1mq22dcjjm7d4jd0bci4lrq6zq2zvlzhi04n8l";
+      type = "gem";
+    };
+    version = "0.10.0";
+  };
+  jaro_winkler = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh";
+      type = "gem";
+    };
+    version = "1.5.4";
+  };
+  jira-ruby = {
+    dependencies = ["activesupport" "atlassian-jwt" "multipart-post" "oauth"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bfqb5qkgbcjrspspa2lha2is0anjnby20x9gp7bfjr5j5j9my32";
+      type = "gem";
+    };
+    version = "2.0.0";
+  };
+  jmespath = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1d4wac0dcd1jf6kc57891glih9w57552zgqswgy74d1xhgnk0ngf";
+      type = "gem";
+    };
+    version = "1.4.0";
+  };
+  js_regex = {
+    dependencies = ["character_set" "regexp_parser" "regexp_property_values"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wi4h4f3knb0yp4zq2spks3dpmdzz9wa54d6xk88md0h4v2x33cq";
+      type = "gem";
+    };
+    version = "3.1.1";
+  };
+  json = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nrmw2r4nfxlfgprfgki3hjifgrcrs3l5zvm3ca3gb4743yr25mn";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+  json-jwt = {
+    dependencies = ["activesupport" "aes_key_wrap" "bindata"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18rf9v20i0dk5dblr7m22di959xpch2h7gsx0cl585cryr7apwp3";
+      type = "gem";
+    };
+    version = "1.11.0";
+  };
+  json-schema = {
+    dependencies = ["addressable"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11di8qyam6bmqn0fvvvf3crgaqy4sil0d406ymx0jacn3ff98ymz";
+      type = "gem";
+    };
+    version = "2.8.0";
+  };
+  jwt = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+  kaminari = {
+    dependencies = ["activesupport" "kaminari-actionview" "kaminari-activerecord" "kaminari-core"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0invfvfb252ihsdr65rylkvd1x2wy004jval52v3i8ybb0jhc5hi";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  kaminari-actionview = {
+    dependencies = ["actionview" "kaminari-core"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mhhsm6xhmwqc7hfw7xnk1kdbfg468bqs5awcqm5j6j8b9zyjvdi";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  kaminari-activerecord = {
+    dependencies = ["activerecord" "kaminari-core"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1kb5aj6iy1cwcq5548jd3w1ipxicnzmnx2ay1s4hvad2gvrd4g93";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  kaminari-core = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0r2n293ad1xr9wgn8cr53nfzwls4w3p1xi4kjfjgl1z0yf05mpwr";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  kgio = {
+    groups = ["default" "unicorn"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ai6bzlvxbzpdl466p1qi4dlhx8ri2wcrp6x1l19y3yfs3a29rng";
+      type = "gem";
+    };
+    version = "2.11.3";
+  };
+  knapsack = {
+    dependencies = ["rake"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1c69rcwfrdrnx8ddl6k1qxhw9f2dj5x5bbddz435isl2hfr5zh92";
+      type = "gem";
+    };
+    version = "1.17.0";
+  };
+  kramdown = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1dl840bvx8d9nq6lg3mxqyvbiqnr6lk3jfsm6r8zhz7p5srmd688";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+  kramdown-parser-gfm = {
+    dependencies = ["kramdown"];
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  kubeclient = {
+    dependencies = ["http" "recursive-open-struct" "rest-client"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1djf4zll2alrwv7wg4wk9v504wbri717wqaq773i1azg7cbisbw6";
+      type = "gem";
+    };
+    version = "4.6.0";
+  };
+  launchy = {
+    dependencies = ["addressable"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "190lfbiy1vwxhbgn4nl4dcbzxvm049jwc158r2x7kq3g5khjrxa2";
+      type = "gem";
+    };
+    version = "2.4.3";
+  };
+  letter_opener = {
+    dependencies = ["launchy"];
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09a7kgsmr10a0hrc9bwxglgqvppjxij9w8bxx91mnvh0ivaw0nq9";
+      type = "gem";
+    };
+    version = "1.7.0";
+  };
+  letter_opener_web = {
+    dependencies = ["actionmailer" "letter_opener" "railties"];
+    groups = ["development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17qhwrkncrrp1bi2f7fbkm5lpnkdsiwy8jcvgr2wa97ck8y4x2bb";
+      type = "gem";
+    };
+    version = "1.3.4";
+  };
+  license_finder = {
+    dependencies = ["rubyzip" "thor" "toml" "with_env" "xml-simple"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01rhqm5m3m22gq6q9f1x9fh3x3wrf9khnnsycblj0xg5frdjv77v";
+      type = "gem";
+    };
+    version = "5.4.0";
+  };
+  licensee = {
+    dependencies = ["rugged"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0w6d2smhg3kzcx4m2ii06akakypwhiglansk51bpx290hhc8h3pc";
+      type = "gem";
+    };
+    version = "8.9.2";
+  };
+  listen = {
+    dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx";
+      type = "gem";
+    };
+    version = "3.1.5";
+  };
+  locale = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x";
+      type = "gem";
+    };
+    version = "2.1.2";
+  };
+  lockbox = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0sgbs0frk601yc7bb33pz5z9cyadvj077vwy9k5zapsbn2rxf5aj";
+      type = "gem";
+    };
+    version = "0.3.3";
+  };
+  lograge = {
+    dependencies = ["actionpack" "activesupport" "railties" "request_store"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00lcn7s3slfn32di4qwlx2yj5f9r2pcnd0naxrvqqwypcg1z2sdd";
+      type = "gem";
+    };
+    version = "0.10.0";
+  };
+  loofah = {
+    dependencies = ["crass" "nokogiri"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jk9fgn5ayzbqvzqm11gbkqvas77zdbpkvynlylyiwynclgrn040";
+      type = "gem";
+    };
+    version = "2.5.0";
+  };
+  lru_redux = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yxghzg7476sivz8yyr9nkak2dlbls0b89vc2kg52k0nmg6d0wgf";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  lumberjack = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n";
+      type = "gem";
+    };
+    version = "1.0.13";
+  };
+  mail = {
+    dependencies = ["mini_mime"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc";
+      type = "gem";
+    };
+    version = "2.7.1";
+  };
+  marcel = {
+    dependencies = ["mimemagic"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx";
+      type = "gem";
+    };
+    version = "0.3.3";
+  };
+  marginalia = {
+    dependencies = ["actionpack" "activerecord"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1akbiibmg64liw8ya6xzf9lavh2n2707hxsnf9sfslsk36iwx0yn";
+      type = "gem";
+    };
+    version = "1.8.0";
+  };
+  memoist = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pq8fhqh8w25qcw9v3vzfb0i6jp0k3949ahxc3wrwz2791dpbgbh";
+      type = "gem";
+    };
+    version = "0.16.0";
+  };
+  memoizable = {
+    dependencies = ["thread_safe"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0v42bvghsvfpzybfazl14qhkrjvx0xlmxz0wwqc960ga1wld5x5c";
+      type = "gem";
+    };
+    version = "0.4.2";
+  };
+  memory_profiler = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04ivhv1bilwqm33jv28gar2vwzsichb5nipaq395d3axabv8qmfy";
+      type = "gem";
+    };
+    version = "0.9.14";
+  };
+  method_source = {
+    groups = ["default" "development" "metrics" "test"];
+    platforms = [{
+      engine = "maglev";
+    } {
+      engine = "ruby";
+    }];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq";
+      type = "gem";
+    };
+    version = "0.9.2";
+  };
+  mime-types = {
+    dependencies = ["mime-types-data"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fjxy1jm52ixpnv3vg9ld9pr9f35gy0jp66i1njhqjvmnvq0iwwk";
+      type = "gem";
+    };
+    version = "3.2.2";
+  };
+  mime-types-data = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1m00pg19cm47n1qlcxgl91ajh2yq0fszvn1vy8fy0s1jkrp9fw4a";
+      type = "gem";
+    };
+    version = "3.2019.0331";
+  };
+  mimemagic = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qfqb9w76kmpb48frbzbyvjc0dfxh5qiw1kxdbv2y2kp6fxpa1kf";
+      type = "gem";
+    };
+    version = "0.3.5";
+  };
+  mini_histogram = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "127vmd85kwi85qjbb1431bi4j5gdy0pp6wrq1f88ja1pf3mlb50y";
+      type = "gem";
+    };
+    version = "0.1.3";
+  };
+  mini_magick = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qy09qrd5bwh8mkbj514n5vcw9ni73218h9s3zmvbpmdwrnzi8j4";
+      type = "gem";
+    };
+    version = "4.9.5";
+  };
+  mini_mime = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1axm0rxyx3ss93wbmfkm78a6x03l8y4qy60rhkkiq0aza0vwq3ha";
+      type = "gem";
+    };
+    version = "1.0.2";
+  };
+  mini_portile2 = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy";
+      type = "gem";
+    };
+    version = "2.4.0";
+  };
+  minitest = {
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq";
+      type = "gem";
+    };
+    version = "5.11.3";
+  };
+  msgpack = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qr2mkm2i3m76zarvy7qgjl9596hmvjrg7x6w42vx8cfsbf5p0y1";
+      type = "gem";
+    };
+    version = "1.3.1";
+  };
+  multi_json = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xy54mjf7xg41l8qrg1bqri75agdqmxap9z466fjismc1rn2jwfr";
+      type = "gem";
+    };
+    version = "1.14.1";
+  };
+  multi_xml = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj";
+      type = "gem";
+    };
+    version = "0.6.0";
+  };
+  multipart-post = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zgw9zlwh2a6i1yvhhc4a84ry1hv824d6g2iw2chs3k5aylpmpfj";
+      type = "gem";
+    };
+    version = "2.1.1";
+  };
+  murmurhash3 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1szwcm44z5jg1l4dq73zyjw4rjin23ihkhrw5cpcjrb6cg8hd3y7";
+      type = "gem";
+    };
+    version = "0.1.6";
+  };
+  mustermann = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1";
+      type = "gem";
+    };
+    version = "1.0.3";
+  };
+  mustermann-grape = {
+    dependencies = ["mustermann"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10xdggddjl8nraq7pbli31lwgrzxzz8gp558i811lsv71fqbmhzr";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  nakayoshi_fork = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1mj5czi7rxxmfq4v9qjz74lcqypvnjxhxqfs71zhb2rsfa97a6jg";
+      type = "gem";
+    };
+    version = "0.0.4";
+  };
+  nap = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xm5xssxk5s03wjarpipfm39qmgxsalb46v1prsis14x1xk935ll";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  nenv = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr";
+      type = "gem";
+    };
+    version = "0.3.0";
+  };
+  net-ldap = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vzfhivjfr9q65hkln7xig3qcba6fw9y4kb4384fpm7d7ww0b7xg";
+      type = "gem";
+    };
+    version = "0.16.2";
+  };
+  net-ntp = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0z96m7nnb9f634cz4i6p0x89z7g9i9h97cnk5f3x3q5x090kzisv";
+      type = "gem";
+    };
+    version = "2.1.3";
+  };
+  net-ssh = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1l0kgd7w08fx2522aw8grlfzwmrgw4jgjakpkgkwm0134g5xv432";
+      type = "gem";
+    };
+    version = "6.0.0";
+  };
+  netrc = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y";
+      type = "gem";
+    };
+    version = "0.11.0";
+  };
+  nio4r = {
+    groups = ["default" "puma" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c";
+      type = "gem";
+    };
+    version = "2.5.2";
+  };
+  no_proxy_fix = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "006dmdb640v1kq0sll3dnlwj1b0kpf3i1p27ygyffv8lpcqlr6sf";
+      type = "gem";
+    };
+    version = "0.1.2";
+  };
+  nokogiri = {
+    dependencies = ["mini_portile2"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12j76d0bp608932xkzmfi638c7aqah57l437q8494znzbj610qnm";
+      type = "gem";
+    };
+    version = "1.10.9";
+  };
+  nokogumbo = {
+    dependencies = ["nokogiri"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09qc1c7acv9qm48vk2kzvnrq4ij8jrql1cv33nmv2nwmlggy0jyj";
+      type = "gem";
+    };
+    version = "1.5.0";
+  };
+  notiffany = {
+    dependencies = ["nenv" "shellany"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0f47h3bmg1apr4x51szqfv3rh2vq58z3grh4w02cp3bzbdh6jxnk";
+      type = "gem";
+    };
+    version = "0.1.3";
+  };
+  numerizer = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ysxf30qcybh131r98frp38sqqkdhcjwpnajgrxl2w2kxvapd075";
+      type = "gem";
+    };
+    version = "0.2.0";
+  };
+  oauth = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zszdg8q1b135z7l7crjj234k4j0m347hywp5kj6zsq7q78pw09y";
+      type = "gem";
+    };
+    version = "0.5.4";
+  };
+  oauth2 = {
+    dependencies = ["faraday" "jwt" "multi_json" "multi_xml" "rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0av6nlb5y2sm6m8fx669ywrqa9858yqaqfqzny75nqp3anag89qh";
+      type = "gem";
+    };
+    version = "1.4.1";
+  };
+  octokit = {
+    dependencies = ["faraday" "sawyer"];
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yg6dhd028j74sm8hpw9w7bwfwlkml9wiis7nq20ivfsbcz4g8ac";
+      type = "gem";
+    };
+    version = "4.15.0";
+  };
+  omniauth = {
+    dependencies = ["hashie" "rack"];
+    groups = ["default" "kerberos"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p16h1rp8by05k8gfw17xjhgwp60dk8qmj1xalv1n23kmxfsxb1x";
+      type = "gem";
+    };
+    version = "1.9.0";
+  };
+  omniauth-auth0 = {
+    dependencies = ["omniauth-oauth2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0id5gn14av81kh41cq4q6c9knyvzl7vc4rs3m4pmpd43g2z6jdw2";
+      type = "gem";
+    };
+    version = "2.0.0";
+  };
+  omniauth-authentiq = {
+    dependencies = ["jwt" "omniauth-oauth2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0k7vajxwplsp188xfj4mi9iqbc7f7djqh02by4mphc51hl87kcqi";
+      type = "gem";
+    };
+    version = "0.3.3";
+  };
+  omniauth-azure-oauth2 = {
+    dependencies = ["jwt" "omniauth" "omniauth-oauth2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1a3iqy63l1jd6na4y0bj4a8mlp7gcn3a0awnz9g79fa8n4v2g8n4";
+      type = "gem";
+    };
+    version = "0.0.10";
+  };
+  omniauth-cas3 = {
+    dependencies = ["addressable" "nokogiri" "omniauth"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "191b4jm4djmmy54yxfxj3c889r2wn3g6sfsdj6l1rjy0kw1m2qgx";
+      type = "gem";
+    };
+    version = "1.1.4";
+  };
+  omniauth-facebook = {
+    dependencies = ["omniauth-oauth2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03zjla9i446fk1jkw7arh67c39jfhp5bhkmhvbw8vczxr1jkbbh5";
+      type = "gem";
+    };
+    version = "4.0.0";
+  };
+  omniauth-github = {
+    dependencies = ["omniauth" "omniauth-oauth2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xbk0dbxqfpyfb33ghz6vrlz3m6442rp18ryf13gwzlnifcawhlb";
+      type = "gem";
+    };
+    version = "1.4.0";
+  };
+  omniauth-gitlab = {
+    dependencies = ["omniauth" "omniauth-oauth2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19ydk2zd2mz8zi80z3l03pajpm9357sg3lrankrcb3pirkkdb9fp";
+      type = "gem";
+    };
+    version = "1.0.3";
+  };
+  omniauth-google-oauth2 = {
+    dependencies = ["jwt" "omniauth" "omniauth-oauth2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03v2gqpsbdhkqaxhvzr83za885awm6pgskv3mkyfvang7mr321df";
+      type = "gem";
+    };
+    version = "0.6.0";
+  };
+  omniauth-kerberos = {
+    dependencies = ["omniauth-multipassword" "timfel-krb5-auth"];
+    groups = ["kerberos"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05xsv76qjxcxzrvabaar2bchv7435y8l2j0wk4zgchh3yv85kiq7";
+      type = "gem";
+    };
+    version = "0.3.0";
+  };
+  omniauth-multipassword = {
+    dependencies = ["omniauth"];
+    groups = ["default" "kerberos"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qykp76hw80lkgb39hyzrv68hkbivc8cv0vbvrnycjh9fwfp1lv8";
+      type = "gem";
+    };
+    version = "0.4.2";
+  };
+  omniauth-oauth = {
+    dependencies = ["oauth" "omniauth"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1n5vk4by7hkyc09d9blrw2argry5awpw4gbw1l4n2s9b3j4qz037";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  omniauth-oauth2 = {
+    dependencies = ["oauth2" "omniauth"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11mi36l9d97r77q99jnafdc1yaa0a9wahhpp7dj7ank8q52g7g79";
+      type = "gem";
+    };
+    version = "1.6.0";
+  };
+  omniauth-oauth2-generic = {
+    dependencies = ["omniauth-oauth2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1m6vpip3rm1spx1x9y1kjczzailsph1xqgaakqylzq3jqkv18273";
+      type = "gem";
+    };
+    version = "0.2.2";
+  };
+  omniauth-salesforce = {
+    dependencies = ["omniauth" "omniauth-oauth2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0sr7xmffx6dbsrvnh6spka5ljyzf69iac754xw5r1736py41qhpj";
+      type = "gem";
+    };
+    version = "1.0.5";
+  };
+  omniauth-saml = {
+    dependencies = ["omniauth" "ruby-saml"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17lji8i4q9k3yi8lmjwlw8rfpp2sc74jv8d6flgq85lg5brfqq1p";
+      type = "gem";
+    };
+    version = "1.10.0";
+  };
+  omniauth-shibboleth = {
+    dependencies = ["omniauth"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04yin7j8xpr8llvank3ivzahqkc6ss5bppc7q6znzdswxmf75fxh";
+      type = "gem";
+    };
+    version = "1.3.0";
+  };
+  omniauth-twitter = {
+    dependencies = ["omniauth-oauth" "rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0r5j65hkpgzhvvbs90id3nfsjgsad6ymzggbm7zlaxvnrmvnrk65";
+      type = "gem";
+    };
+    version = "1.4.0";
+  };
+  omniauth-ultraauth = {
+    dependencies = ["omniauth_openid_connect"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1z8gz8ql4vb8y5n4lr67afnjmp23bpqi18dmda5psigvd2jddyn8";
+      type = "gem";
+    };
+    version = "0.0.2";
+  };
+  omniauth_crowd = {
+    dependencies = ["activesupport" "nokogiri" "omniauth"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12g5ck05h6kr9mnp870x8pkxsadg81ca70hg8n3k8xx007lfw2q7";
+      type = "gem";
+    };
+    version = "2.2.3";
+  };
+  omniauth_openid_connect = {
+    dependencies = ["addressable" "omniauth" "openid_connect"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0awybp2jnai0w2qfgqnr3f478g3nbg5r0vcm6pa5g8k5f4rs19qr";
+      type = "gem";
+    };
+    version = "0.3.3";
+  };
+  open4 = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1";
+      type = "gem";
+    };
+    version = "1.3.4";
+  };
+  openid_connect = {
+    dependencies = ["activemodel" "attr_required" "json-jwt" "rack-oauth2" "swd" "tzinfo" "validate_email" "validate_url" "webfinger"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0r50vwf9hsf6r8gx5mwqs3w3w92l864ikiz9d0fcibqsr1489pbg";
+      type = "gem";
+    };
+    version = "1.1.8";
+  };
+  opentracing = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11lj1d8vq0hkb5hjz8q4lm82cddrggpbb33dhqfn7rxhwsmxgdfy";
+      type = "gem";
+    };
+    version = "0.5.0";
+  };
+  optimist = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05jxrp3nbn5iilc1k7ir90mfnwc5abc9h78s5rpm3qafwqxvcj4j";
+      type = "gem";
+    };
+    version = "3.0.0";
+  };
+  org-ruby = {
+    dependencies = ["rubypants"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk";
+      type = "gem";
+    };
+    version = "0.9.12";
+  };
+  orm_adapter = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fg9jpjlzf5y49qs9mlpdrgs5rpcyihq1s4k79nv9js0spjhnpda";
+      type = "gem";
+    };
+    version = "0.5.0";
+  };
+  os = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1s401gvhqgs2r8hh43ia205mxsy1wc0ib4k76wzkdpspfcnfr1rk";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  parallel = {
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12jijkap4akzdv11lm08dglsc8jmc87xcgq6947i1s3qb69f4zn2";
+      type = "gem";
+    };
+    version = "1.19.1";
+  };
+  parser = {
+    dependencies = ["ast"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19nxgcl6fbnr6da958hyvnycv441ryp2dw4ccmldah5bm8885z39";
+      type = "gem";
+    };
+    version = "2.7.0.4";
+  };
+  parslet = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12nrzfwjphjlakb9pmpj70hgjwgzvnr8i1zfzddifgyd44vspl88";
+      type = "gem";
+    };
+    version = "1.8.2";
+  };
+  peek = {
+    dependencies = ["railties"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1k1yggixrcj72jlc98hi3jjd04x71dpynn8dxpcdhinyijniwl6n";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  pg = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1r01bqqhnk272dsyhg3cqx6j0aiwbcdnrwp7vxzc969mb5dgnnrl";
+      type = "gem";
+    };
+    version = "1.2.2";
+  };
+  png_quantizator = {
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0sqhydp5g9ly1kgfiya1fc6srmhf6avrb74j09z3lp0jck8d88v0";
+      type = "gem";
+    };
+    version = "0.2.1";
+  };
+  po_to_json = {
+    dependencies = ["json"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xvanl437305mry1gd57yvcg7xrfhri91czr32bjr8j2djm8hwba";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  premailer = {
+    dependencies = ["addressable" "css_parser" "htmlentities"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xrhmialxn5vlp1nmf40a4db9gji4h2wbzd7f43sz64z8lvrjj6h";
+      type = "gem";
+    };
+    version = "1.11.1";
+  };
+  premailer-rails = {
+    dependencies = ["actionmailer" "premailer"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bqi7d4f15vy3f1g0xb3bxmncfbzv9dd3ilhqj0plvw64xqbkp3w";
+      type = "gem";
+    };
+    version = "1.10.3";
+  };
+  proc_to_ast = {
+    dependencies = ["coderay" "parser" "unparser"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14c65w48bbzp5lh1cngqd1y25kqvfnq1iy49hlzshl12dsk3z9wj";
+      type = "gem";
+    };
+    version = "0.1.0";
+  };
+  procto = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "13imvg1x50rz3r0yyfbhxwv72lbf7q28qx9l9nfbb91h2n9ch58c";
+      type = "gem";
+    };
+    version = "0.0.3";
+  };
+  prometheus-client-mmap = {
+    groups = ["metrics"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00d2c79xhz5k3fcclarjr1ffxbrvc6236f4rrvriad9kwqr7c1mp";
+      type = "gem";
+    };
+    version = "0.10.0";
+  };
+  pry = {
+    dependencies = ["coderay" "method_source"];
+    groups = ["default" "development" "test"];
+    platforms = [{
+      engine = "maglev";
+    } {
+      engine = "ruby";
+    }];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1mh312k3y94sj0pi160wpia0ps8f4kmzvm505i6bvwynfdh7v30g";
+      type = "gem";
+    };
+    version = "0.11.3";
+  };
+  pry-byebug = {
+    dependencies = ["byebug" "pry"];
+    groups = ["development" "test"];
+    platforms = [{
+      engine = "maglev";
+    } {
+      engine = "ruby";
+    }];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1f9kj1qp14qb8crg2rdzf22pr6ngxvy4n6ipymla8q1yjr842625";
+      type = "gem";
+    };
+    version = "3.5.1";
+  };
+  pry-rails = {
+    dependencies = ["pry"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1cf4ii53w2hdh7fn8vhqpzkymmchjbwij4l3m7s6fsxvb9bn51j6";
+      type = "gem";
+    };
+    version = "0.3.9";
+  };
+  public_suffix = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1c6kq6s13idl2036b5lch8r7390f8w82cal8hcp4ml76fm2vdac7";
+      type = "gem";
+    };
+    version = "4.0.3";
+  };
+  pyu-ruby-sasl = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1rcpjiz9lrvyb3rd8k8qni0v4ps08psympffyldmmnrqayyad0sn";
+      type = "gem";
+    };
+    version = "0.0.3.3";
+  };
+  raabro = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xzdmbn48753f6k0ckirp8ja5p0xn1a92wbwxfyggyhj0hza9ylq";
+      type = "gem";
+    };
+    version = "1.1.6";
+  };
+  rack = {
+    groups = ["default" "development" "kerberos" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1mxzk12xylrz6d4n9jj5jasfscbf1pbk4idrb0nlf327lx9rwfkk";
+      type = "gem";
+    };
+    version = "2.0.9";
+  };
+  rack-accept = {
+    dependencies = ["rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18jdipx17b4ki33cfqvliapd31sbfvs4mv727awynr6v95a7n936";
+      type = "gem";
+    };
+    version = "0.4.5";
+  };
+  rack-attack = {
+    dependencies = ["rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15b8lk54j2abqhpn588b1wvbzwmxwa7iql6241kxpjc0gyb51p0z";
+      type = "gem";
+    };
+    version = "6.3.0";
+  };
+  rack-cors = {
+    dependencies = ["rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "07dppmm1ah1gs31sb5byrkkady9vqzwjmpd92c8425nc6yzwknik";
+      type = "gem";
+    };
+    version = "1.0.6";
+  };
+  rack-oauth2 = {
+    dependencies = ["activesupport" "attr_required" "httpclient" "json-jwt" "rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0kmxj9hbjhhcs3yyb433s82hkpmzb536m0mwfadjiaisganx1cii";
+      type = "gem";
+    };
+    version = "1.9.3";
+  };
+  rack-protection = {
+    dependencies = ["rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15167q25rmxipqwi6hjqj3i1byi9iwl3xq9b7mdar7qiz39pmjsk";
+      type = "gem";
+    };
+    version = "2.0.5";
+  };
+  rack-proxy = {
+    dependencies = ["rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bpbcb9ch94ha2q7gdri88ry7ch0z6ian289kah9ayxyqg19j6f4";
+      type = "gem";
+    };
+    version = "0.6.0";
+  };
+  rack-test = {
+    dependencies = ["rack"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  rack-timeout = {
+    groups = ["puma"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15xph8h6v0lvq9pxm3bc9i9pnk2k68rgdr1mp0dw4l7v1xvhs78a";
+      type = "gem";
+    };
+    version = "0.5.1";
+  };
+  rails = {
+    dependencies = ["actioncable" "actionmailbox" "actionmailer" "actionpack" "actiontext" "actionview" "activejob" "activemodel" "activerecord" "activestorage" "activesupport" "railties" "sprockets-rails"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1rvkzj2hn1rlxc0ndn742mgbdpq0l38i6pjhhwgpaq519jpkk41r";
+      type = "gem";
+    };
+    version = "6.0.3";
+  };
+  rails-controller-testing = {
+    dependencies = ["actionpack" "actionview" "activesupport"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1m1rklj6pvzi4fydxcmcv4q0xd7913hhhw1hw530nfz1wkl7vjlf";
+      type = "gem";
+    };
+    version = "1.0.4";
+  };
+  rails-dom-testing = {
+    dependencies = ["activesupport" "nokogiri"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i";
+      type = "gem";
+    };
+    version = "2.0.3";
+  };
+  rails-html-sanitizer = {
+    dependencies = ["loofah"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1icpqmxbppl4ynzmn6dx7wdil5hhq6fz707m9ya6d86c7ys8sd4f";
+      type = "gem";
+    };
+    version = "1.3.0";
+  };
+  rails-i18n = {
+    dependencies = ["i18n" "railties"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05mcgv748vppnm3fnml37wjy3dw61wj8vfw14ldaj1yx1bmkhb07";
+      type = "gem";
+    };
+    version = "6.0.0";
+  };
+  railties = {
+    dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01h2ifvvmlzmq8dmpqkhrrmj704v79r1vkcrnvmrqhf4a9bbyqsi";
+      type = "gem";
+    };
+    version = "6.0.3";
+  };
+  rainbow = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk";
+      type = "gem";
+    };
+    version = "3.0.0";
+  };
+  raindrops = {
+    groups = ["metrics" "unicorn"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0zjja00mzgx2lddb7qrn14k7qrnwhf4bpmnlqj78m1pfxh7svync";
+      type = "gem";
+    };
+    version = "0.19.1";
+  };
+  rake = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1cvaqarr1m84mhc006g3l1vw7sa5qpkcw0138lsxlf769zdllsgp";
+      type = "gem";
+    };
+    version = "12.3.3";
+  };
+  rb-fsevent = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fbpmjypwxkb8r7y1kmhmyp6gawa4byw0yb3jc3dn9ly4ld9lizf";
+      type = "gem";
+    };
+    version = "0.10.2";
+  };
+  rb-inotify = {
+    dependencies = ["ffi"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71";
+      type = "gem";
+    };
+    version = "0.9.10";
+  };
+  rblineprof = {
+    dependencies = ["debugger-ruby_core_source"];
+    groups = ["development"];
+    platforms = [{
+      engine = "maglev";
+    } {
+      engine = "ruby";
+    }];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0m58kdjgncwf0h1qry3qk5h4bg8sj0idykqqijqcrr09mxfd9yc6";
+      type = "gem";
+    };
+    version = "0.3.6";
+  };
+  rbtrace = {
+    dependencies = ["ffi" "msgpack" "optimist"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lwsq08i0aj8na5q5ba3gg02sx3wl58fi6m52svl5p7cy56ycdwi";
+      type = "gem";
+    };
+    version = "0.4.11";
+  };
+  rdoc = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0zh39dpsqlhhi4aba1sbrk504d88p38djk8cansjq0fwndq7w4zb";
+      type = "gem";
+    };
+    version = "6.1.2";
+  };
+  re2 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "16q71cc9wx342c697q18pkz19ym4ncjd97hcw4v6f1mgflkdv400";
+      type = "gem";
+    };
+    version = "1.2.0";
+  };
+  recaptcha = {
+    dependencies = ["json"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "121pkq8kwqjh4l751xzx15bjp5vmf5pirfmpb11h71zsiavjqv6w";
+      type = "gem";
+    };
+    version = "4.13.1";
+  };
+  recursive-open-struct = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0acrxff186sn6sxdfiy7nacjgwak5cqd7jha9v3kshpf3sfr7qd1";
+      type = "gem";
+    };
+    version = "1.1.1";
+  };
+  RedCloth = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy";
+      type = "gem";
+    };
+    version = "4.3.2";
+  };
+  redis = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08v2y91q1pmv12g9zsvwj66w3s8j9d82yrmxgyv4y4gz380j3wyh";
+      type = "gem";
+    };
+    version = "4.1.3";
+  };
+  redis-actionpack = {
+    dependencies = ["actionpack" "redis-rack" "redis-store"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0c2276zzc0044zh37a8frx1v7hnra7z7k126154ps7njbqngfdv3";
+      type = "gem";
+    };
+    version = "5.2.0";
+  };
+  redis-activesupport = {
+    dependencies = ["activesupport" "redis-store"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14a3z8810j02ysvg53f3mvcfb4rw34m91yfd19zy9y5lb3yv2g59";
+      type = "gem";
+    };
+    version = "5.2.0";
+  };
+  redis-namespace = {
+    dependencies = ["redis"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0r7daagrjjribn098dxwbv9zivrbq2rsffbkj2ccxyn9lmjjbgah";
+      type = "gem";
+    };
+    version = "1.6.0";
+  };
+  redis-rack = {
+    dependencies = ["rack" "redis-store"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ldw5sxyd80pv0gr89kvn6ziszlbs8lv1a573fkm6d0f11fps413";
+      type = "gem";
+    };
+    version = "2.1.2";
+  };
+  redis-rails = {
+    dependencies = ["redis-actionpack" "redis-activesupport" "redis-store"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hjvkyaw5hgz7v6fgwdk8pb966z44h1gv8jarmb0gwhkqmjnsh40";
+      type = "gem";
+    };
+    version = "5.0.2";
+  };
+  redis-store = {
+    dependencies = ["redis"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1isqzzds9kszc2nn8jiy8ikry01qspn7637ba9z2k6sk7vky46d9";
+      type = "gem";
+    };
+    version = "1.8.1";
+  };
+  regexp_parser = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0dsgjb3kszk6a82s6gl0h6a8vncjrxmcbk0r4mcxcdcad2b7vb2d";
+      type = "gem";
+    };
+    version = "1.5.1";
+  };
+  regexp_property_values = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05ka0bkhghs9b9pv6q443k8y1c5xalmm0vylj9zd450ksncxj1yr";
+      type = "gem";
+    };
+    version = "0.3.4";
+  };
+  representable = {
+    dependencies = ["declarative" "declarative-option" "uber"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qm9rgi1j5a6nv726ka4mmixivlxfsg91h8rpp72wwd4vqbkkm07";
+      type = "gem";
+    };
+    version = "3.0.4";
+  };
+  request_store = {
+    dependencies = ["rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0cx74kispmnw3ljwb239j65a2j14n8jlsygy372hrsa8mxc71hxi";
+      type = "gem";
+    };
+    version = "1.5.0";
+  };
+  responders = {
+    dependencies = ["actionpack" "railties"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p7pqcfq33q1z4xlp4qm94w4h3fzc1yvr3cny16d00i8b20v4rx2";
+      type = "gem";
+    };
+    version = "3.0.0";
+  };
+  rest-client = {
+    dependencies = ["http-cookie" "mime-types" "netrc"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j";
+      type = "gem";
+    };
+    version = "2.0.2";
+  };
+  retriable = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1q48hqws2dy1vws9schc0kmina40gy7sn5qsndpsfqdslh65snha";
+      type = "gem";
+    };
+    version = "3.1.2";
+  };
+  rinku = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11cakxzp7qi04d41hbqkh92n52mm4z2ba8sqyhxbmfi4kypmls9y";
+      type = "gem";
+    };
+    version = "2.0.0";
+  };
+  rotp = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1w8d6svhq3y9y952r8cqirxvdx12zlkb7zxjb44bcbidb2sisy4d";
+      type = "gem";
+    };
+    version = "2.1.2";
+  };
+  rouge = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "102rc07d78k5bkl0s9nd1gw6wz0w0zcvg4g5sl7z9xxi4r793c35";
+      type = "gem";
+    };
+    version = "3.19.0";
+  };
+  rqrcode = {
+    dependencies = ["chunky_png"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "188n1mvc7klrlw30bai16sdg4yannmy7cz0sg0nvm6f1kjx5qflb";
+      type = "gem";
+    };
+    version = "0.7.0";
+  };
+  rqrcode-rails3 = {
+    dependencies = ["rqrcode"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1i28rwmj24ssk91chn0g7qsnvn003y3s5a7jsrg3w4l5ckr841bg";
+      type = "gem";
+    };
+    version = "0.1.7";
+  };
+  rspec = {
+    dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hzsig4pi9ybr0xl5540m1swiyxa74c8h09225y5sdh2rjkkg84h";
+      type = "gem";
+    };
+    version = "3.9.0";
+  };
+  rspec-core = {
+    dependencies = ["rspec-support"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qzc1wdjb1qnbimjl8i1q1r1z5hdv2lmcw7ysz7jawj4d1cvpqvd";
+      type = "gem";
+    };
+    version = "3.9.1";
+  };
+  rspec-expectations = {
+    dependencies = ["diff-lcs" "rspec-support"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fjbwvq7qaz6h3sh1bs9q2qiy4zwcrc8f7xwv82dx2bc09dmqzhd";
+      type = "gem";
+    };
+    version = "3.9.1";
+  };
+  rspec-mocks = {
+    dependencies = ["diff-lcs" "rspec-support"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19vmdqym1v2g1zbdnq37zwmyj87y9yc9ijwc8js55igvbb9hx0mr";
+      type = "gem";
+    };
+    version = "3.9.1";
+  };
+  rspec-parameterized = {
+    dependencies = ["binding_ninja" "parser" "proc_to_ast" "rspec" "unparser"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1c0892jbaznnldk1wi24qxm70g4zhw2idqx516rhgdzgd7yh5j31";
+      type = "gem";
+    };
+    version = "0.4.2";
+  };
+  rspec-rails = {
+    dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01cyd449g4lsgrlck7nn3ynn8c8vwfhjb913y05wil56y77wsfkl";
+      type = "gem";
+    };
+    version = "4.0.0";
+  };
+  rspec-retry = {
+    dependencies = ["rspec-core"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nnqcg2yd3nn187zbvh4cgx8xsvdk56lz1985qy7232v7i8yidw6";
+      type = "gem";
+    };
+    version = "0.6.1";
+  };
+  rspec-support = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zwpyq1na23pvgacpxs2v9nwfbjbw6x3arca5j3l1xagigqmzhc3";
+      type = "gem";
+    };
+    version = "3.9.2";
+  };
+  rspec_junit_formatter = {
+    dependencies = ["rspec-core"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1aynmrgnv26pkprrajvp7advb8nbh0x4pkwk6jwq8qmwzarzk21p";
+      type = "gem";
+    };
+    version = "0.4.1";
+  };
+  rspec_profiling = {
+    dependencies = ["activerecord" "pg" "rails" "sqlite3"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1g7q7gav26bpiprx4dhlvdh4zdrhwiky9jbmsp14gyfiabqdz4sz";
+      type = "gem";
+    };
+    version = "0.0.5";
+  };
+  rubocop = {
+    dependencies = ["jaro_winkler" "parallel" "parser" "rainbow" "ruby-progressbar" "unicode-display_width"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wpyass9qb2wvq8zsc7wdzix5xy2ldiv66wnx8mwwprz2dcvzayk";
+      type = "gem";
+    };
+    version = "0.74.0";
+  };
+  rubocop-gitlab-security = {
+    dependencies = ["rubocop"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0v0040kpx46fxz3p7dsdjgvsx89qjhwy17n8vxnqg9a7g1rfvxln";
+      type = "gem";
+    };
+    version = "0.1.1";
+  };
+  rubocop-performance = {
+    dependencies = ["rubocop"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ssizdnyai2hxdp6nd4b9hqyrc4gwhjlznhrdliz8wj4p8cvas44";
+      type = "gem";
+    };
+    version = "1.4.1";
+  };
+  rubocop-rails = {
+    dependencies = ["rack" "rubocop"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vvrwcxzbqiqdjxakxmjg4c3dcrlpb00i1d3i0s1gdk0ch79byag";
+      type = "gem";
+    };
+    version = "2.4.0";
+  };
+  rubocop-rspec = {
+    dependencies = ["rubocop"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1dypzxzrm8lh1gip9pn93p1nwamzkqsljy6mcv2ngw9zqsial233";
+      type = "gem";
+    };
+    version = "1.37.0";
+  };
+  ruby-enum = {
+    dependencies = ["i18n"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0h62avini866kxpjzqxlqnajma3yvj0y25l6hn9h2mv5pp6fcrhx";
+      type = "gem";
+    };
+    version = "0.7.2";
+  };
+  ruby-fogbugz = {
+    dependencies = ["crack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jj0gpkycbrivkh2q3429vj6mbgx6axxisg69slj3c4mgvzfgchm";
+      type = "gem";
+    };
+    version = "0.2.1";
+  };
+  ruby-prof = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0g1j37fy53ly6351asfcnik033gwkp4kjma7lji1yklmj86d4dg7";
+      type = "gem";
+    };
+    version = "1.3.1";
+  };
+  ruby-progressbar = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf";
+      type = "gem";
+    };
+    version = "1.10.1";
+  };
+  ruby-saml = {
+    dependencies = ["nokogiri"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0k9d88fa8bp5szivbwq0qi960y3r2kp6jhnkmsp3n2rvwpn936i3";
+      type = "gem";
+    };
+    version = "1.7.2";
+  };
+  ruby-statistics = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xmd9dk1fcmii38apwn3py00qfqxd5yzylafm49n24plzwv913nh";
+      type = "gem";
+    };
+    version = "2.1.2";
+  };
+  ruby_dep = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5";
+      type = "gem";
+    };
+    version = "1.5.0";
+  };
+  ruby_parser = {
+    dependencies = ["sexp_processor"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0s3hsccsmrirc2hy3r51kl8g9cfmcn7jxaa0asadg1kn78h1sgr7";
+      type = "gem";
+    };
+    version = "3.13.1";
+  };
+  rubyntlm = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p6bxsklkbcqni4bcq6jajc2n57g0w5rzn4r49c3lb04wz5xg0dy";
+      type = "gem";
+    };
+    version = "0.6.2";
+  };
+  rubypants = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vpdkrc4c8qhrxph41wqwswl28q5h5h994gy4c1mlrckqzm3hzph";
+      type = "gem";
+    };
+    version = "0.2.0";
+  };
+  rubyzip = {
+    groups = ["default" "development" "omnibus" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1gz0ri0pa2xr7b6bf66yjc2wfvk51f4gi6yk7bklwl1nr65zc4gz";
+      type = "gem";
+    };
+    version = "2.0.0";
+  };
+  rugged = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rdidxgpk1b6y1jq9v77lcx5khq0s9q0s253lr8x57d3hk43iskx";
+      type = "gem";
+    };
+    version = "0.28.4.1";
+  };
+  safe_yaml = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094";
+      type = "gem";
+    };
+    version = "1.0.4";
+  };
+  sanitize = {
+    dependencies = ["crass" "nokogiri" "nokogumbo"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0j4j2a2mkk1a70vbx959pvx0gvr1zb9snjwvsppwj28bp0p0b2bv";
+      type = "gem";
+    };
+    version = "4.6.6";
+  };
+  sass = {
+    dependencies = ["sass-listen"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10401m2xlv6vaxfwzy4xxmk51ddcnkvwi918cw3jkki0qqdl7d8v";
+      type = "gem";
+    };
+    version = "3.5.5";
+  };
+  sass-listen = {
+    dependencies = ["rb-fsevent" "rb-inotify"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df";
+      type = "gem";
+    };
+    version = "4.0.0";
+  };
+  sassc = {
+    dependencies = ["ffi" "rake"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1sr4825rlwsrl7xrsm0sgalcpf5zgp4i56dbi3qxfa9lhs8r6zh4";
+      type = "gem";
+    };
+    version = "2.0.1";
+  };
+  sassc-rails = {
+    dependencies = ["railties" "sassc" "sprockets" "sprockets-rails" "tilt"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18mgdjxdzpbw92zrllynxw7jn7yihi85j3dg7i4f6c39w1scqkbn";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+  sawyer = {
+    dependencies = ["addressable" "faraday"];
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yrdchs3psh583rjapkv33mljdivggqn99wkydkjdckcjn43j3cz";
+      type = "gem";
+    };
+    version = "0.8.2";
+  };
+  scss_lint = {
+    dependencies = ["rake" "sass"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01bfkrjn1i0hfg1ifwn1rs7vqwdbdw158krwr5fm6iasd9zgl10g";
+      type = "gem";
+    };
+    version = "0.56.0";
+  };
+  seed-fu = {
+    dependencies = ["activerecord" "activesupport"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0x6gclryl0hds3zms095d2iyafcvm2kfrm7362vrkxws7r2775pi";
+      type = "gem";
+    };
+    version = "2.3.7";
+  };
+  selenium-webdriver = {
+    dependencies = ["childprocess" "rubyzip"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11abil34dr8p1kw7hlaqd6kr430v4srmhzf72zzqvhcimlfvm4yb";
+      type = "gem";
+    };
+    version = "3.142.6";
+  };
+  sentry-raven = {
+    dependencies = ["faraday"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1j9rwbig24ry0smgvmkzdjrzyszniaswipinvflzxzzaz52v7483";
+      type = "gem";
+    };
+    version = "2.9.0";
+  };
+  settingslogic = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ria5zcrk1nf0b9yia15mdpzw0dqr6wjpbj8dsdbbps81lfsj9ar";
+      type = "gem";
+    };
+    version = "2.0.9";
+  };
+  sexp_processor = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0w24rgmyjf7yz0xr2qhbr8z48h4m6gvbggr8nc1pldwn9rbi04b7";
+      type = "gem";
+    };
+    version = "4.12.0";
+  };
+  shellany = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf";
+      type = "gem";
+    };
+    version = "0.0.1";
+  };
+  shoulda-matchers = {
+    dependencies = ["activesupport"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1s6a2i39lsqq8rrkk2pddqcb10bsihxy3v5gpnc2gk8xakj1brdq";
+      type = "gem";
+    };
+    version = "4.0.1";
+  };
+  sidekiq = {
+    dependencies = ["connection_pool" "rack" "rack-protection" "redis"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "131zv8i341bkacxx7n1id2cmblkbs379farnibqg8c7bycd1iajq";
+      type = "gem";
+    };
+    version = "5.2.7";
+  };
+  sidekiq-cron = {
+    dependencies = ["fugit" "sidekiq"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1aliswahmpxn1ib2brn4126gk97ac3zdnwr71mn8vzbr3vdd7fl0";
+      type = "gem";
+    };
+    version = "1.0.4";
+  };
+  signet = {
+    dependencies = ["addressable" "faraday" "jwt" "multi_json"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1f5d3bz5bjc4b0r2jmqd15qf07lgsqkgd25f0h46jihrf9l5fsi4";
+      type = "gem";
+    };
+    version = "0.11.0";
+  };
+  simple_po_parser = {
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08wkp4gcrd89k5yari9j94if9ffkj3rka4llcwrhdgsi3l15p5f3";
+      type = "gem";
+    };
+    version = "1.1.2";
+  };
+  simplecov = {
+    dependencies = ["docile" "simplecov-html"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ycx5q699ycbjhp28sjbkrd62vwxlrb7fh4v2m7sjsp2qhi6cf6r";
+      type = "gem";
+    };
+    version = "0.18.5";
+  };
+  simplecov-html = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1v7b4mf7njw8kv4ghl4q7mwz3q0flbld7v8blp4m4m3n3aq11bn9";
+      type = "gem";
+    };
+    version = "0.12.2";
+  };
+  sixarm_ruby_unaccent = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11237b8r8p7fc0cpn04v9wa7ggzq0xm6flh10h1lnb6zgc3schq0";
+      type = "gem";
+    };
+    version = "1.2.0";
+  };
+  slack-messenger = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1s2bff13nd21r28528vfb2ly5718r812izww2g0vxksjq7xgr2c7";
+      type = "gem";
+    };
+    version = "2.3.3";
+  };
+  snowplow-tracker = {
+    dependencies = ["contracts"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05136477ifa567aym9k8nqqmwv3plbczgh9x9fbz86860vym5v4w";
+      type = "gem";
+    };
+    version = "0.6.1";
+  };
+  spring = {
+    dependencies = ["activesupport"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "168yz9c1fv21wc5i8q7n43b9nk33ivg3ws1fn6x0afgryz3ssx75";
+      type = "gem";
+    };
+    version = "2.0.2";
+  };
+  spring-commands-rspec = {
+    dependencies = ["spring"];
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0b0svpq3md1pjz5drpa5pxwg8nk48wrshq8lckim4x3nli7ya0k2";
+      type = "gem";
+    };
+    version = "1.0.4";
+  };
+  sprockets = {
+    dependencies = ["concurrent-ruby" "rack"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
+      type = "gem";
+    };
+    version = "3.7.2";
+  };
+  sprockets-rails = {
+    dependencies = ["actionpack" "activesupport" "sprockets"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ab42pm8p5zxpv3sfraq45b9lj39cz9mrpdirm30vywzrwwkm5p1";
+      type = "gem";
+    };
+    version = "3.2.1";
+  };
+  sqlite3 = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01ifzp8nwzqppda419c9wcvr8n82ysmisrs0hph9pdmv1lpa4f5i";
+      type = "gem";
+    };
+    version = "1.3.13";
+  };
+  sshkey = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03bkn55qsng484iqwz2lmm6rkimj01vsvhwk661s3lnmpkl65lbp";
+      type = "gem";
+    };
+    version = "2.0.0";
+  };
+  stackprof = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1g2zzasjdr1qnwmpmn28ddv2z9jsnv4w5raiz26y9h1jh03sagqd";
+      type = "gem";
+    };
+    version = "0.2.15";
+  };
+  state_machines = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00mi16hg3rhkxz4y58s173cbnjlba41y9bfcim90p4ja6yfj9ri3";
+      type = "gem";
+    };
+    version = "0.5.0";
+  };
+  state_machines-activemodel = {
+    dependencies = ["activemodel" "state_machines"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05c2dw3115zj3pmyyqh2iypc7afj8ibhrghisg0d61z7gzmir1rd";
+      type = "gem";
+    };
+    version = "0.7.1";
+  };
+  state_machines-activerecord = {
+    dependencies = ["activerecord" "state_machines-activemodel"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12g7yqy11fpfiprzc86pwa9jjky1h3haxj37kg47467fgg43p511";
+      type = "gem";
+    };
+    version = "0.6.0";
+  };
+  swd = {
+    dependencies = ["activesupport" "attr_required" "httpclient"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1s2vjb6f13za7p1iycl2p73d3p202xa6xny9fjrp8ynwsqix7lyd";
+      type = "gem";
+    };
+    version = "1.1.2";
+  };
+  sys-filesystem = {
+    dependencies = ["ffi"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "092wj7936i5inzafi09wqh5c8dbak588q21k652dsrdjf5qi10zq";
+      type = "gem";
+    };
+    version = "1.1.6";
+  };
+  sysexits = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qjng6pllznmprzx8vb0zg0c86hdrkyjs615q41s9fjpmv2430jr";
+      type = "gem";
+    };
+    version = "1.2.0";
+  };
+  temple = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "060zzj7c2kicdfk6cpnn40n9yjnhfrr13d0rsbdhdij68chp2861";
+      type = "gem";
+    };
+    version = "0.8.2";
+  };
+  terminal-table = {
+    dependencies = ["unicode-display_width"];
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1512cngw35hsmhvw4c05rscihc59mnj09m249sm9p3pik831ydqk";
+      type = "gem";
+    };
+    version = "1.8.0";
+  };
+  test-prof = {
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ag33hv8ky8nxpsra9jkam9npi1jjwb7f7zmvi2najci5mdr10nr";
+      type = "gem";
+    };
+    version = "0.10.0";
+  };
+  text = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg";
+      type = "gem";
+    };
+    version = "1.3.1";
+  };
+  thin = {
+    dependencies = ["daemons" "eventmachine" "rack"];
+    groups = ["development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f";
+      type = "gem";
+    };
+    version = "1.7.2";
+  };
+  thor = {
+    groups = ["default" "development" "omnibus" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yhrnp9x8qcy5vc7g438amd5j9sw83ih7c30dr6g6slgw9zj3g29";
+      type = "gem";
+    };
+    version = "0.20.3";
+  };
+  thread_safe = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
+      type = "gem";
+    };
+    version = "0.3.6";
+  };
+  thrift = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "02p107kwx7jnkh6fpdgvaji0xdg6xkaarngkqjml6s4zny4m8slv";
+      type = "gem";
+    };
+    version = "0.11.0.0";
+  };
+  tilt = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rn8z8hda4h41a64l0zhkiwz2vxw9b1nb70gl37h1dg2k874yrlv";
+      type = "gem";
+    };
+    version = "2.0.10";
+  };
+  timecop = {
+    groups = ["development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp";
+      type = "gem";
+    };
+    version = "0.9.1";
+  };
+  timfel-krb5-auth = {
+    groups = ["default" "kerberos"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "105vajc0jkqgcx1wbp0ad262sdry4l1irk7jpaawv8vzfjfqqf5b";
+      type = "gem";
+    };
+    version = "0.8.3";
+  };
+  toml = {
+    dependencies = ["parslet"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xj460rkyqvg74xc8kivmbvgc46c6mm7r8mbjs5m2gq8khf8sbki";
+      type = "gem";
+    };
+    version = "0.2.0";
+  };
+  toml-rb = {
+    dependencies = ["citrus"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pz6z1mc7rnv4chkbx3mdn4q1lpp0j596dq57kbq39jv0wn0wi4d";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  truncato = {
+    dependencies = ["htmlentities" "nokogiri"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0z36dprfj9l4jwgwb2wv4v3cilm53v7i1ywfmm5f1dl352id3ak4";
+      type = "gem";
+    };
+    version = "0.7.11";
+  };
+  tzinfo = {
+    dependencies = ["thread_safe"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1i3jh086w1kbdj3k5l60lc3nwbanmzdf8yjj3mlrx9b2gjjxhi9r";
+      type = "gem";
+    };
+    version = "1.2.7";
+  };
+  u2f = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lsm1hvwcaa9sq13ab1l1zjk0fgcy951ay11v2acx0h6q1iv21vr";
+      type = "gem";
+    };
+    version = "0.2.1";
+  };
+  uber = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p1mm7mngg40x05z52md3mbamkng0zpajbzqjjwmsyw0zw3v9vjv";
+      type = "gem";
+    };
+    version = "0.1.0";
+  };
+  uglifier = {
+    dependencies = ["execjs" "json"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mzs64z3m1b98rh6ssxpqfz9sc87f6ml6906b0m57vydzfgrh1cz";
+      type = "gem";
+    };
+    version = "2.7.2";
+  };
+  unf = {
+    dependencies = ["unf_ext"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
+      type = "gem";
+    };
+    version = "0.1.4";
+  };
+  unf_ext = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06p1i6qhy34bpb8q8ms88y6f2kz86azwm098yvcc0nyqk9y729j1";
+      type = "gem";
+    };
+    version = "0.0.7.5";
+  };
+  unicode-display_width = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08kfiniak1pvg3gn5k6snpigzvhvhyg7slmm0s2qx5zkj62c1z2w";
+      type = "gem";
+    };
+    version = "1.6.0";
+  };
+  unicode_plot = {
+    dependencies = ["enumerable-statistics"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09cv90pi414ns1knbi0zjbn59071qjgym974jpsgj7yjh70dpj0g";
+      type = "gem";
+    };
+    version = "0.0.4";
+  };
+  unicode_utils = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0h1a5yvrxzlf0lxxa1ya31jcizslf774arnsd89vgdhk4g7x08mr";
+      type = "gem";
+    };
+    version = "1.4.0";
+  };
+  unicorn = {
+    dependencies = ["kgio" "raindrops"];
+    groups = ["unicorn"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1cznkq0agsm7s66nbqbalmq5nlc5cdpd2h88r8jdzsc7wsi5a098";
+      type = "gem";
+    };
+    version = "5.5.5";
+  };
+  unicorn-worker-killer = {
+    dependencies = ["get_process_mem" "unicorn"];
+    groups = ["unicorn"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rrdxpwdsapx47axjin8ymxb4f685qlpx8a26bql4ay1559c3gva";
+      type = "gem";
+    };
+    version = "0.4.4";
+  };
+  uniform_notifier = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vm4aix8jmv42s1x58m3lj3xwkbxyn9qn6lzhhig0d1j8fv6j30c";
+      type = "gem";
+    };
+    version = "1.13.0";
+  };
+  unleash = {
+    dependencies = ["murmurhash3"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xs2ml9cwskddsxick3a9wnasy7q6wmc0dbydfcaspfl2cjmp1rk";
+      type = "gem";
+    };
+    version = "0.1.5";
+  };
+  unparser = {
+    dependencies = ["abstract_type" "adamantium" "concord" "diff-lcs" "equalizer" "parser" "procto"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qg1apxlnf4kxfj9jpm6hhv73jsncbs4zpsgyan32p5r331q1gmx";
+      type = "gem";
+    };
+    version = "0.4.7";
+  };
+  valid_email = {
+    dependencies = ["activemodel" "mail"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0w3587sa7d1a51djyla57pbv9v105jsqvxhkg6vbxi343fsm455q";
+      type = "gem";
+    };
+    version = "0.1.3";
+  };
+  validate_email = {
+    dependencies = ["activemodel" "mail"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1r1fz29l699arka177c9xw7409d1a3ff95bf7a6pmc97slb91zlx";
+      type = "gem";
+    };
+    version = "0.1.6";
+  };
+  validate_url = {
+    dependencies = ["activemodel" "public_suffix"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1k0bfxzvdcf1nrqhvnyhijc4mwab9wn4qvqb0ynq6p8dj0f866zi";
+      type = "gem";
+    };
+    version = "1.0.8";
+  };
+  validates_hostname = {
+    dependencies = ["activerecord" "activesupport"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04p1l0v98j4ffvaks1ig9mygx5grpbpdgz7haq3mygva9iy8ykja";
+      type = "gem";
+    };
+    version = "1.0.6";
+  };
+  version_sorter = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hbdw3vh856f5yg5mbj4498l6vh90cd3pn22ikr3ranzkrh73l3s";
+      type = "gem";
+    };
+    version = "2.2.4";
+  };
+  virtus = {
+    dependencies = ["axiom-types" "coercible" "descendants_tracker" "equalizer"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06iphwi3c4f7y9i2rvhvaizfswqbaflilziz4dxqngrdysgkn1fk";
+      type = "gem";
+    };
+    version = "1.0.5";
+  };
+  vmstat = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vb5mwc71p8rlm30hnll3lb4z70ipl5rmilskpdrq2mxwfilcm5b";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+  warden = {
+    dependencies = ["rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454";
+      type = "gem";
+    };
+    version = "1.2.8";
+  };
+  webfinger = {
+    dependencies = ["activesupport" "httpclient"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0m0jh8k7c0ifh2jhbn7ihqrmn5fi754wflva97zgy70hpdvxyjar";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  webmock = {
+    dependencies = ["addressable" "crack" "hashdiff"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0gg0c2sxq7rni0b93w47h7p7cn590xdhf5va7ska48inpipwlgxp";
+      type = "gem";
+    };
+    version = "3.5.1";
+  };
+  webpack-rails = {
+    dependencies = ["railties"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fsjxw730bh4k1dfnbjm645fgjyqrh830l1z7brqbsm6306ig1rr";
+      type = "gem";
+    };
+    version = "0.9.11";
+  };
+  websocket-driver = {
+    dependencies = ["websocket-extensions"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2";
+      type = "gem";
+    };
+    version = "0.7.1";
+  };
+  websocket-extensions = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00i624ng1nvkz1yckj3f8yxxp6hi7xaqf40qh9q3hj2n1l9i8g6m";
+      type = "gem";
+    };
+    version = "0.1.4";
+  };
+  wikicloth = {
+    dependencies = ["builder" "expression_parser" "rinku"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jp6c2yzyqbap8jdiw8yz6l08sradky1llhyhmrg934l1b5akj3s";
+      type = "gem";
+    };
+    version = "0.8.1";
+  };
+  with_env = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1r5ns064mbb99hf1dyxsk9183hznc5i7mn3bi86zka6dlvqf9csh";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  xml-simple = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8";
+      type = "gem";
+    };
+    version = "1.1.5";
+  };
+  xpath = {
+    dependencies = ["nokogiri"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd";
+      type = "gem";
+    };
+    version = "3.2.0";
+  };
+  zeitwerk = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1akpm3pwvyiack2zk6giv9yn3cqb8pw6g40p4394pdc3xmy3s4k0";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/update.py b/nixpkgs/pkgs/applications/version-management/gitlab/update.py
new file mode 100755
index 000000000000..3db5099598a7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/update.py
@@ -0,0 +1,243 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i python3 -p bundix bundler common-updater-scripts nix nix-prefetch-git python3 python3Packages.requests python3Packages.click python3Packages.click-log vgo2nix yarn2nix
+
+import click
+import click_log
+import os
+import re
+import logging
+import subprocess
+import json
+import pathlib
+from distutils.version import LooseVersion
+from typing import Iterable
+
+import requests
+
+logger = logging.getLogger(__name__)
+
+
+class GitLabRepo:
+    version_regex = re.compile(r"^v\d+\.\d+\.\d+(\-rc\d+)?(\-ee)?")
+    def __init__(self, owner: str = 'gitlab-org', repo: str = 'gitlab'):
+        self.owner = owner
+        self.repo = repo
+
+    @property
+    def url(self):
+        return f"https://gitlab.com/{self.owner}/{self.repo}"
+
+    @property
+    def tags(self) -> Iterable[str]:
+        r = requests.get(self.url + "/refs?sort=updated_desc&ref=master").json()
+        tags = r.get("Tags", [])
+
+        # filter out versions not matching version_regex
+        versions = list(filter(self.version_regex.match, tags))
+
+        # sort, but ignore v and -ee for sorting comparisons
+        versions.sort(key=lambda x: LooseVersion(x.replace("v", "").replace("-ee", "")), reverse=True)
+        return versions
+
+    def get_git_hash(self, rev: str):
+        out = subprocess.check_output(['nix-prefetch-git', self.url, rev])
+        j = json.loads(out)
+        return j['sha256']
+
+    @staticmethod
+    def rev2version(tag: str) -> str:
+        """
+        normalize a tag to a version number.
+        This obviously isn't very smart if we don't pass something that looks like a tag
+        :param tag: the tag to normalize
+        :return: a normalized version number
+        """
+        # strip v prefix
+        version = re.sub(r"^v", '', tag)
+        # strip -ee suffix
+        return re.sub(r"-ee$", '', version)
+
+    def get_file(self, filepath, rev):
+        """
+        returns file contents at a given rev
+        :param filepath: the path to the file, relative to the repo root
+        :param rev: the rev to fetch at
+        :return:
+        """
+        return requests.get(self.url + f"/raw/{rev}/{filepath}").text
+
+    def get_data(self, rev):
+        version = self.rev2version(rev)
+
+        passthru = {v: self.get_file(v, rev).strip() for v in ['GITALY_SERVER_VERSION', 'GITLAB_PAGES_VERSION',
+                                                               'GITLAB_SHELL_VERSION', 'GITLAB_WORKHORSE_VERSION']}
+        return dict(version=self.rev2version(rev),
+                    repo_hash=self.get_git_hash(rev),
+                    owner=self.owner,
+                    repo=self.repo,
+                    rev=rev,
+                    passthru=passthru)
+
+
+def _get_data_json():
+    data_file_path = pathlib.Path(__file__).parent / 'data.json'
+    with open(data_file_path, 'r') as f:
+        return json.load(f)
+
+
+def _call_update_source_version(pkg, version):
+    """calls update-source-version from nixpkgs root dir"""
+    nixpkgs_path = pathlib.Path(__file__).parent / '../../../../'
+    return subprocess.check_output(['update-source-version', pkg, version], cwd=nixpkgs_path)
+
+
+@click_log.simple_verbosity_option(logger)
+@click.group()
+def cli():
+    pass
+
+
+@cli.command('update-data')
+@click.option('--rev', default='latest', help='The rev to use (vX.Y.Z-ee), or \'latest\'')
+def update_data(rev: str):
+    """Update data.nix"""
+    repo = GitLabRepo()
+
+    if rev == 'latest':
+        # filter out pre and re releases
+        rev = next(filter(lambda x: not ('rc' in x or x.endswith('pre')), repo.tags))
+    logger.debug(f"Using rev {rev}")
+
+    version = repo.rev2version(rev)
+    logger.debug(f"Using version {version}")
+
+    data_file_path = pathlib.Path(__file__).parent / 'data.json'
+
+    data = repo.get_data(rev)
+
+    with open(data_file_path.as_posix(), 'w') as f:
+        json.dump(data, f, indent=2)
+
+
+@cli.command('update-rubyenv')
+def update_rubyenv():
+    """Update rubyEnv"""
+    repo = GitLabRepo()
+    rubyenv_dir = pathlib.Path(__file__).parent / f"rubyEnv"
+
+    # load rev from data.json
+    data = _get_data_json()
+    rev = data['rev']
+
+    for fn in ['Gemfile.lock', 'Gemfile']:
+        with open(rubyenv_dir / fn, 'w') as f:
+            f.write(repo.get_file(fn, rev))
+
+    subprocess.check_output(['bundle', 'lock'], cwd=rubyenv_dir)
+    subprocess.check_output(['bundix'], cwd=rubyenv_dir)
+
+
+@cli.command('update-yarnpkgs')
+def update_yarnpkgs():
+    """Update yarnPkgs"""
+
+    repo = GitLabRepo()
+    yarnpkgs_dir = pathlib.Path(__file__).parent
+
+    # load rev from data.json
+    data = _get_data_json()
+    rev = data['rev']
+
+    with open(yarnpkgs_dir / 'yarn.lock', 'w') as f:
+        f.write(repo.get_file('yarn.lock', rev))
+
+    with open(yarnpkgs_dir / 'yarnPkgs.nix', 'w') as f:
+        subprocess.run(['yarn2nix'], cwd=yarnpkgs_dir, check=True, stdout=f)
+
+    os.unlink(yarnpkgs_dir / 'yarn.lock')
+
+
+@cli.command('update-gitaly')
+def update_gitaly():
+    """Update gitaly"""
+    data = _get_data_json()
+    gitaly_server_version = data['passthru']['GITALY_SERVER_VERSION']
+    repo = GitLabRepo(repo='gitaly')
+    gitaly_dir = pathlib.Path(__file__).parent / 'gitaly'
+
+    for fn in ['Gemfile.lock', 'Gemfile']:
+        with open(gitaly_dir / fn, 'w') as f:
+            f.write(repo.get_file(f"ruby/{fn}", f"v{gitaly_server_version}"))
+
+    for fn in ['go.mod', 'go.sum']:
+        with open(gitaly_dir / fn, 'w') as f:
+            f.write(repo.get_file(fn, f"v{gitaly_server_version}"))
+
+    subprocess.check_output(['bundle', 'lock'], cwd=gitaly_dir)
+    subprocess.check_output(['bundix'], cwd=gitaly_dir)
+
+    os.environ['GOROOT'] = ""
+    subprocess.check_output(['vgo2nix', '--keep-going'], cwd=gitaly_dir)
+
+    for fn in ['go.mod', 'go.sum']:
+        os.unlink(gitaly_dir / fn)
+
+    _call_update_source_version('gitaly', gitaly_server_version)
+
+
+@cli.command('update-gitlab-shell')
+def update_gitlab_shell():
+    """Update gitlab-shell"""
+    data = _get_data_json()
+    gitlab_shell_version = data['passthru']['GITLAB_SHELL_VERSION']
+    _call_update_source_version('gitlab-shell', gitlab_shell_version)
+
+    repo = GitLabRepo(repo='gitlab-shell')
+    gitlab_shell_dir = pathlib.Path(__file__).parent / 'gitlab-shell'
+
+    for fn in ['go.mod', 'go.sum']:
+        with open(gitlab_shell_dir / fn, 'w') as f:
+            f.write(repo.get_file(fn, f"v{gitlab_shell_version}"))
+
+    os.environ['GOROOT'] = ""
+    subprocess.check_output(['vgo2nix', '--keep-going'], cwd=gitlab_shell_dir)
+
+    for fn in ['go.mod', 'go.sum']:
+        os.unlink(gitlab_shell_dir / fn)
+
+
+@cli.command('update-gitlab-workhorse')
+def update_gitlab_workhorse():
+    """Update gitlab-workhorse"""
+    data = _get_data_json()
+    gitlab_workhorse_version = data['passthru']['GITLAB_WORKHORSE_VERSION']
+    _call_update_source_version('gitlab-workhorse', gitlab_workhorse_version)
+
+    repo = GitLabRepo('gitlab-org', 'gitlab-workhorse')
+    gitlab_workhorse_dir = pathlib.Path(__file__).parent / 'gitlab-workhorse'
+
+    for fn in ['go.mod', 'go.sum']:
+        with open(gitlab_workhorse_dir / fn, 'w') as f:
+            f.write(repo.get_file(fn, f"v{gitlab_workhorse_version}"))
+
+    os.environ['GOROOT'] = ""
+    subprocess.check_output(['vgo2nix', '--keep-going'], cwd=gitlab_workhorse_dir)
+
+    for fn in ['go.mod', 'go.sum']:
+        os.unlink(gitlab_workhorse_dir / fn)
+
+@cli.command('update-all')
+@click.option('--rev', default='latest', help='The rev to use (vX.Y.Z-ee), or \'latest\'')
+@click.pass_context
+def update_all(ctx, rev: str):
+    """Update all gitlab components to the latest stable release"""
+    ctx.invoke(update_data, rev=rev)
+    ctx.invoke(update_rubyenv)
+    ctx.invoke(update_yarnpkgs)
+    ctx.invoke(update_gitaly)
+    ctx.invoke(update_gitlab_shell)
+    ctx.invoke(update_gitlab_workhorse)
+
+
+if __name__ == '__main__':
+    cli()
diff --git a/nixpkgs/pkgs/applications/version-management/gitlab/yarnPkgs.nix b/nixpkgs/pkgs/applications/version-management/gitlab/yarnPkgs.nix
new file mode 100644
index 000000000000..f7851c6adcb4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitlab/yarnPkgs.nix
@@ -0,0 +1,13381 @@
+{ fetchurl, fetchgit, linkFarm, runCommandNoCC, gnutar }: rec {
+  offline_cache = linkFarm "offline" packages;
+  packages = [
+    {
+      name = "_babel_code_frame___code_frame_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_code_frame___code_frame_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz";
+        sha1 = "33e25903d7481181534e12ec0a25f16b6fcf419e";
+      };
+    }
+    {
+      name = "_babel_compat_data___compat_data_7.8.5.tgz";
+      path = fetchurl {
+        name = "_babel_compat_data___compat_data_7.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.5.tgz";
+        sha1 = "d28ce872778c23551cbb9432fc68d28495b613b9";
+      };
+    }
+    {
+      name = "_babel_core___core_7.8.4.tgz";
+      path = fetchurl {
+        name = "_babel_core___core_7.8.4.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/core/-/core-7.8.4.tgz";
+        sha1 = "d496799e5c12195b3602d0fddd77294e3e38e80e";
+      };
+    }
+    {
+      name = "_babel_generator___generator_7.8.4.tgz";
+      path = fetchurl {
+        name = "_babel_generator___generator_7.8.4.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.4.tgz";
+        sha1 = "35bbc74486956fe4251829f9f6c48330e8d0985e";
+      };
+    }
+    {
+      name = "_babel_helper_annotate_as_pure___helper_annotate_as_pure_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_annotate_as_pure___helper_annotate_as_pure_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz";
+        sha1 = "60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee";
+      };
+    }
+    {
+      name = "_babel_helper_builder_binary_assignment_operator_visitor___helper_builder_binary_assignment_operator_visitor_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_builder_binary_assignment_operator_visitor___helper_builder_binary_assignment_operator_visitor_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz";
+        sha1 = "c84097a427a061ac56a1c30ebf54b7b22d241503";
+      };
+    }
+    {
+      name = "_babel_helper_call_delegate___helper_call_delegate_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_call_delegate___helper_call_delegate_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz";
+        sha1 = "de82619898aa605d409c42be6ffb8d7204579692";
+      };
+    }
+    {
+      name = "_babel_helper_compilation_targets___helper_compilation_targets_7.8.4.tgz";
+      path = fetchurl {
+        name = "_babel_helper_compilation_targets___helper_compilation_targets_7.8.4.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.4.tgz";
+        sha1 = "03d7ecd454b7ebe19a254f76617e61770aed2c88";
+      };
+    }
+    {
+      name = "_babel_helper_create_class_features_plugin___helper_create_class_features_plugin_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_create_class_features_plugin___helper_create_class_features_plugin_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.3.tgz";
+        sha1 = "5b94be88c255f140fd2c10dd151e7f98f4bff397";
+      };
+    }
+    {
+      name = "_babel_helper_create_regexp_features_plugin___helper_create_regexp_features_plugin_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_create_regexp_features_plugin___helper_create_regexp_features_plugin_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz";
+        sha1 = "c774268c95ec07ee92476a3862b75cc2839beb79";
+      };
+    }
+    {
+      name = "_babel_helper_define_map___helper_define_map_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_define_map___helper_define_map_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz";
+        sha1 = "a0655cad5451c3760b726eba875f1cd8faa02c15";
+      };
+    }
+    {
+      name = "_babel_helper_explode_assignable_expression___helper_explode_assignable_expression_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_explode_assignable_expression___helper_explode_assignable_expression_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz";
+        sha1 = "a728dc5b4e89e30fc2dfc7d04fa28a930653f982";
+      };
+    }
+    {
+      name = "_babel_helper_function_name___helper_function_name_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_function_name___helper_function_name_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz";
+        sha1 = "eeeb665a01b1f11068e9fb86ad56a1cb1a824cca";
+      };
+    }
+    {
+      name = "_babel_helper_get_function_arity___helper_get_function_arity_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_get_function_arity___helper_get_function_arity_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz";
+        sha1 = "b894b947bd004381ce63ea1db9f08547e920abd5";
+      };
+    }
+    {
+      name = "_babel_helper_hoist_variables___helper_hoist_variables_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_hoist_variables___helper_hoist_variables_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz";
+        sha1 = "1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134";
+      };
+    }
+    {
+      name = "_babel_helper_member_expression_to_functions___helper_member_expression_to_functions_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_member_expression_to_functions___helper_member_expression_to_functions_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz";
+        sha1 = "659b710498ea6c1d9907e0c73f206eee7dadc24c";
+      };
+    }
+    {
+      name = "_babel_helper_module_imports___helper_module_imports_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_module_imports___helper_module_imports_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz";
+        sha1 = "7fe39589b39c016331b6b8c3f441e8f0b1419498";
+      };
+    }
+    {
+      name = "_babel_helper_module_transforms___helper_module_transforms_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_module_transforms___helper_module_transforms_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz";
+        sha1 = "d305e35d02bee720fbc2c3c3623aa0c316c01590";
+      };
+    }
+    {
+      name = "_babel_helper_optimise_call_expression___helper_optimise_call_expression_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_optimise_call_expression___helper_optimise_call_expression_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz";
+        sha1 = "7ed071813d09c75298ef4f208956006b6111ecb9";
+      };
+    }
+    {
+      name = "_babel_helper_plugin_utils___helper_plugin_utils_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_plugin_utils___helper_plugin_utils_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz";
+        sha1 = "9ea293be19babc0f52ff8ca88b34c3611b208670";
+      };
+    }
+    {
+      name = "_babel_helper_regex___helper_regex_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_regex___helper_regex_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz";
+        sha1 = "139772607d51b93f23effe72105b319d2a4c6965";
+      };
+    }
+    {
+      name = "_babel_helper_remap_async_to_generator___helper_remap_async_to_generator_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_remap_async_to_generator___helper_remap_async_to_generator_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz";
+        sha1 = "273c600d8b9bf5006142c1e35887d555c12edd86";
+      };
+    }
+    {
+      name = "_babel_helper_replace_supers___helper_replace_supers_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_replace_supers___helper_replace_supers_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz";
+        sha1 = "91192d25f6abbcd41da8a989d4492574fb1530bc";
+      };
+    }
+    {
+      name = "_babel_helper_simple_access___helper_simple_access_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_simple_access___helper_simple_access_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz";
+        sha1 = "7f8109928b4dab4654076986af575231deb639ae";
+      };
+    }
+    {
+      name = "_babel_helper_split_export_declaration___helper_split_export_declaration_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_split_export_declaration___helper_split_export_declaration_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz";
+        sha1 = "31a9f30070f91368a7182cf05f831781065fc7a9";
+      };
+    }
+    {
+      name = "_babel_helper_wrap_function___helper_wrap_function_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_helper_wrap_function___helper_wrap_function_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz";
+        sha1 = "9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610";
+      };
+    }
+    {
+      name = "_babel_helpers___helpers_7.8.4.tgz";
+      path = fetchurl {
+        name = "_babel_helpers___helpers_7.8.4.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.4.tgz";
+        sha1 = "754eb3ee727c165e0a240d6c207de7c455f36f73";
+      };
+    }
+    {
+      name = "_babel_highlight___highlight_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_highlight___highlight_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz";
+        sha1 = "28f173d04223eaaa59bc1d439a3836e6d1265797";
+      };
+    }
+    {
+      name = "_babel_parser___parser_7.8.4.tgz";
+      path = fetchurl {
+        name = "_babel_parser___parser_7.8.4.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.4.tgz";
+        sha1 = "d1dbe64691d60358a974295fa53da074dd2ce8e8";
+      };
+    }
+    {
+      name = "_babel_plugin_proposal_async_generator_functions___plugin_proposal_async_generator_functions_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_proposal_async_generator_functions___plugin_proposal_async_generator_functions_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz";
+        sha1 = "bad329c670b382589721b27540c7d288601c6e6f";
+      };
+    }
+    {
+      name = "_babel_plugin_proposal_class_properties___plugin_proposal_class_properties_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_proposal_class_properties___plugin_proposal_class_properties_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz";
+        sha1 = "5e06654af5cd04b608915aada9b2a6788004464e";
+      };
+    }
+    {
+      name = "_babel_plugin_proposal_dynamic_import___plugin_proposal_dynamic_import_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_proposal_dynamic_import___plugin_proposal_dynamic_import_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz";
+        sha1 = "38c4fe555744826e97e2ae930b0fb4cc07e66054";
+      };
+    }
+    {
+      name = "_babel_plugin_proposal_json_strings___plugin_proposal_json_strings_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_proposal_json_strings___plugin_proposal_json_strings_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz";
+        sha1 = "da5216b238a98b58a1e05d6852104b10f9a70d6b";
+      };
+    }
+    {
+      name = "_babel_plugin_proposal_nullish_coalescing_operator___plugin_proposal_nullish_coalescing_operator_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_proposal_nullish_coalescing_operator___plugin_proposal_nullish_coalescing_operator_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz";
+        sha1 = "e4572253fdeed65cddeecfdab3f928afeb2fd5d2";
+      };
+    }
+    {
+      name = "_babel_plugin_proposal_object_rest_spread___plugin_proposal_object_rest_spread_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_proposal_object_rest_spread___plugin_proposal_object_rest_spread_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz";
+        sha1 = "eb5ae366118ddca67bed583b53d7554cad9951bb";
+      };
+    }
+    {
+      name = "_babel_plugin_proposal_optional_catch_binding___plugin_proposal_optional_catch_binding_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_proposal_optional_catch_binding___plugin_proposal_optional_catch_binding_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz";
+        sha1 = "9dee96ab1650eed88646ae9734ca167ac4a9c5c9";
+      };
+    }
+    {
+      name = "_babel_plugin_proposal_optional_chaining___plugin_proposal_optional_chaining_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_proposal_optional_chaining___plugin_proposal_optional_chaining_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz";
+        sha1 = "ae10b3214cb25f7adb1f3bc87ba42ca10b7e2543";
+      };
+    }
+    {
+      name = "_babel_plugin_proposal_private_methods___plugin_proposal_private_methods_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_proposal_private_methods___plugin_proposal_private_methods_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.8.3.tgz";
+        sha1 = "01248c6c8dc292116b3b4ebd746150f4f0728bab";
+      };
+    }
+    {
+      name = "_babel_plugin_proposal_unicode_property_regex___plugin_proposal_unicode_property_regex_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_proposal_unicode_property_regex___plugin_proposal_unicode_property_regex_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz";
+        sha1 = "b646c3adea5f98800c9ab45105ac34d06cd4a47f";
+      };
+    }
+    {
+      name = "_babel_plugin_syntax_async_generators___plugin_syntax_async_generators_7.8.4.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_syntax_async_generators___plugin_syntax_async_generators_7.8.4.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz";
+        sha1 = "a983fb1aeb2ec3f6ed042a210f640e90e786fe0d";
+      };
+    }
+    {
+      name = "_babel_plugin_syntax_dynamic_import___plugin_syntax_dynamic_import_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_syntax_dynamic_import___plugin_syntax_dynamic_import_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz";
+        sha1 = "62bf98b2da3cd21d626154fc96ee5b3cb68eacb3";
+      };
+    }
+    {
+      name = "_babel_plugin_syntax_import_meta___plugin_syntax_import_meta_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_syntax_import_meta___plugin_syntax_import_meta_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.8.3.tgz";
+        sha1 = "230afff79d3ccc215b5944b438e4e266daf3d84d";
+      };
+    }
+    {
+      name = "_babel_plugin_syntax_json_strings___plugin_syntax_json_strings_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_syntax_json_strings___plugin_syntax_json_strings_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz";
+        sha1 = "01ca21b668cd8218c9e640cb6dd88c5412b2c96a";
+      };
+    }
+    {
+      name = "_babel_plugin_syntax_nullish_coalescing_operator___plugin_syntax_nullish_coalescing_operator_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_syntax_nullish_coalescing_operator___plugin_syntax_nullish_coalescing_operator_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz";
+        sha1 = "167ed70368886081f74b5c36c65a88c03b66d1a9";
+      };
+    }
+    {
+      name = "_babel_plugin_syntax_object_rest_spread___plugin_syntax_object_rest_spread_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_syntax_object_rest_spread___plugin_syntax_object_rest_spread_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz";
+        sha1 = "60e225edcbd98a640332a2e72dd3e66f1af55871";
+      };
+    }
+    {
+      name = "_babel_plugin_syntax_optional_catch_binding___plugin_syntax_optional_catch_binding_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_syntax_optional_catch_binding___plugin_syntax_optional_catch_binding_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz";
+        sha1 = "6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1";
+      };
+    }
+    {
+      name = "_babel_plugin_syntax_optional_chaining___plugin_syntax_optional_chaining_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_syntax_optional_chaining___plugin_syntax_optional_chaining_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz";
+        sha1 = "4f69c2ab95167e0180cd5336613f8c5788f7d48a";
+      };
+    }
+    {
+      name = "_babel_plugin_syntax_top_level_await___plugin_syntax_top_level_await_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_syntax_top_level_await___plugin_syntax_top_level_await_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz";
+        sha1 = "3acdece695e6b13aaf57fc291d1a800950c71391";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_arrow_functions___plugin_transform_arrow_functions_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_arrow_functions___plugin_transform_arrow_functions_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz";
+        sha1 = "82776c2ed0cd9e1a49956daeb896024c9473b8b6";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_async_to_generator___plugin_transform_async_to_generator_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_async_to_generator___plugin_transform_async_to_generator_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz";
+        sha1 = "4308fad0d9409d71eafb9b1a6ee35f9d64b64086";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_block_scoped_functions___plugin_transform_block_scoped_functions_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_block_scoped_functions___plugin_transform_block_scoped_functions_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz";
+        sha1 = "437eec5b799b5852072084b3ae5ef66e8349e8a3";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_block_scoping___plugin_transform_block_scoping_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_block_scoping___plugin_transform_block_scoping_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz";
+        sha1 = "97d35dab66857a437c166358b91d09050c868f3a";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_classes___plugin_transform_classes_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_classes___plugin_transform_classes_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz";
+        sha1 = "46fd7a9d2bb9ea89ce88720477979fe0d71b21b8";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_computed_properties___plugin_transform_computed_properties_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_computed_properties___plugin_transform_computed_properties_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz";
+        sha1 = "96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_destructuring___plugin_transform_destructuring_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_destructuring___plugin_transform_destructuring_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz";
+        sha1 = "20ddfbd9e4676906b1056ee60af88590cc7aaa0b";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_dotall_regex___plugin_transform_dotall_regex_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_dotall_regex___plugin_transform_dotall_regex_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz";
+        sha1 = "c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_duplicate_keys___plugin_transform_duplicate_keys_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_duplicate_keys___plugin_transform_duplicate_keys_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz";
+        sha1 = "8d12df309aa537f272899c565ea1768e286e21f1";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_exponentiation_operator___plugin_transform_exponentiation_operator_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_exponentiation_operator___plugin_transform_exponentiation_operator_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz";
+        sha1 = "581a6d7f56970e06bf51560cd64f5e947b70d7b7";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_for_of___plugin_transform_for_of_7.8.4.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_for_of___plugin_transform_for_of_7.8.4.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.4.tgz";
+        sha1 = "6fe8eae5d6875086ee185dd0b098a8513783b47d";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_function_name___plugin_transform_function_name_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_function_name___plugin_transform_function_name_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz";
+        sha1 = "279373cb27322aaad67c2683e776dfc47196ed8b";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_literals___plugin_transform_literals_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_literals___plugin_transform_literals_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz";
+        sha1 = "aef239823d91994ec7b68e55193525d76dbd5dc1";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_member_expression_literals___plugin_transform_member_expression_literals_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_member_expression_literals___plugin_transform_member_expression_literals_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz";
+        sha1 = "963fed4b620ac7cbf6029c755424029fa3a40410";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_modules_amd___plugin_transform_modules_amd_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_modules_amd___plugin_transform_modules_amd_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz";
+        sha1 = "65606d44616b50225e76f5578f33c568a0b876a5";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_modules_commonjs___plugin_transform_modules_commonjs_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_modules_commonjs___plugin_transform_modules_commonjs_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz";
+        sha1 = "df251706ec331bd058a34bdd72613915f82928a5";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_modules_systemjs___plugin_transform_modules_systemjs_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_modules_systemjs___plugin_transform_modules_systemjs_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz";
+        sha1 = "d8bbf222c1dbe3661f440f2f00c16e9bb7d0d420";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_modules_umd___plugin_transform_modules_umd_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_modules_umd___plugin_transform_modules_umd_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz";
+        sha1 = "592d578ce06c52f5b98b02f913d653ffe972661a";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_named_capturing_groups_regex___plugin_transform_named_capturing_groups_regex_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_named_capturing_groups_regex___plugin_transform_named_capturing_groups_regex_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz";
+        sha1 = "a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_new_target___plugin_transform_new_target_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_new_target___plugin_transform_new_target_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz";
+        sha1 = "60cc2ae66d85c95ab540eb34babb6434d4c70c43";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_object_super___plugin_transform_object_super_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_object_super___plugin_transform_object_super_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz";
+        sha1 = "ebb6a1e7a86ffa96858bd6ac0102d65944261725";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_parameters___plugin_transform_parameters_7.8.4.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_parameters___plugin_transform_parameters_7.8.4.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz";
+        sha1 = "1d5155de0b65db0ccf9971165745d3bb990d77d3";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_property_literals___plugin_transform_property_literals_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_property_literals___plugin_transform_property_literals_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz";
+        sha1 = "33194300d8539c1ed28c62ad5087ba3807b98263";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_regenerator___plugin_transform_regenerator_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_regenerator___plugin_transform_regenerator_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz";
+        sha1 = "b31031e8059c07495bf23614c97f3d9698bc6ec8";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_reserved_words___plugin_transform_reserved_words_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_reserved_words___plugin_transform_reserved_words_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz";
+        sha1 = "9a0635ac4e665d29b162837dd3cc50745dfdf1f5";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_shorthand_properties___plugin_transform_shorthand_properties_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_shorthand_properties___plugin_transform_shorthand_properties_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz";
+        sha1 = "28545216e023a832d4d3a1185ed492bcfeac08c8";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_spread___plugin_transform_spread_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_spread___plugin_transform_spread_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz";
+        sha1 = "9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_sticky_regex___plugin_transform_sticky_regex_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_sticky_regex___plugin_transform_sticky_regex_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz";
+        sha1 = "be7a1290f81dae767475452199e1f76d6175b100";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_template_literals___plugin_transform_template_literals_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_template_literals___plugin_transform_template_literals_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz";
+        sha1 = "7bfa4732b455ea6a43130adc0ba767ec0e402a80";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_typeof_symbol___plugin_transform_typeof_symbol_7.8.4.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_typeof_symbol___plugin_transform_typeof_symbol_7.8.4.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz";
+        sha1 = "ede4062315ce0aaf8a657a920858f1a2f35fc412";
+      };
+    }
+    {
+      name = "_babel_plugin_transform_unicode_regex___plugin_transform_unicode_regex_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_plugin_transform_unicode_regex___plugin_transform_unicode_regex_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz";
+        sha1 = "0cef36e3ba73e5c57273effb182f46b91a1ecaad";
+      };
+    }
+    {
+      name = "_babel_preset_env___preset_env_7.8.4.tgz";
+      path = fetchurl {
+        name = "_babel_preset_env___preset_env_7.8.4.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.4.tgz";
+        sha1 = "9dac6df5f423015d3d49b6e9e5fa3413e4a72c4e";
+      };
+    }
+    {
+      name = "_babel_standalone___standalone_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_standalone___standalone_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.8.3.tgz";
+        sha1 = "0674730a8c5fbb9352de5342bf0c0c040d658380";
+      };
+    }
+    {
+      name = "_babel_template___template_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_template___template_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz";
+        sha1 = "e02ad04fe262a657809327f578056ca15fd4d1b8";
+      };
+    }
+    {
+      name = "_babel_traverse___traverse_7.8.4.tgz";
+      path = fetchurl {
+        name = "_babel_traverse___traverse_7.8.4.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.4.tgz";
+        sha1 = "f0845822365f9d5b0e312ed3959d3f827f869e3c";
+      };
+    }
+    {
+      name = "_babel_types___types_7.8.3.tgz";
+      path = fetchurl {
+        name = "_babel_types___types_7.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz";
+        sha1 = "5a383dffa5416db1b73dedffd311ffd0788fb31c";
+      };
+    }
+    {
+      name = "_braintree_sanitize_url___sanitize_url_3.1.0.tgz";
+      path = fetchurl {
+        name = "_braintree_sanitize_url___sanitize_url_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-3.1.0.tgz";
+        sha1 = "8ff71d51053cd5ee4981e5a501d80a536244f7fd";
+      };
+    }
+    {
+      name = "_cnakazawa_watch___watch_1.0.3.tgz";
+      path = fetchurl {
+        name = "_cnakazawa_watch___watch_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz";
+        sha1 = "099139eaec7ebf07a27c1786a3ff64f39464d2ef";
+      };
+    }
+    {
+      name = "_gitlab_at.js___at.js_1.5.5.tgz";
+      path = fetchurl {
+        name = "_gitlab_at.js___at.js_1.5.5.tgz";
+        url  = "https://registry.yarnpkg.com/@gitlab/at.js/-/at.js-1.5.5.tgz";
+        sha1 = "5f6bfe6baaef360daa9b038fa78798d7a6a916b4";
+      };
+    }
+    {
+      name = "_gitlab_eslint_plugin___eslint_plugin_3.1.0.tgz";
+      path = fetchurl {
+        name = "_gitlab_eslint_plugin___eslint_plugin_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/@gitlab/eslint-plugin/-/eslint-plugin-3.1.0.tgz";
+        sha1 = "18e03630d10788defbb4c2d746620aec09517295";
+      };
+    }
+    {
+      name = "_gitlab_svgs___svgs_1.127.0.tgz";
+      path = fetchurl {
+        name = "_gitlab_svgs___svgs_1.127.0.tgz";
+        url  = "https://registry.yarnpkg.com/@gitlab/svgs/-/svgs-1.127.0.tgz";
+        sha1 = "1f7ffdffe44d6a82b372535f93d78f3a895d1960";
+      };
+    }
+    {
+      name = "_gitlab_ui___ui_14.10.0.tgz";
+      path = fetchurl {
+        name = "_gitlab_ui___ui_14.10.0.tgz";
+        url  = "https://registry.yarnpkg.com/@gitlab/ui/-/ui-14.10.0.tgz";
+        sha1 = "39c04d62c914fcefe96c7ec32fdf31b1f98f1119";
+      };
+    }
+    {
+      name = "_gitlab_visual_review_tools___visual_review_tools_1.6.1.tgz";
+      path = fetchurl {
+        name = "_gitlab_visual_review_tools___visual_review_tools_1.6.1.tgz";
+        url  = "https://registry.yarnpkg.com/@gitlab/visual-review-tools/-/visual-review-tools-1.6.1.tgz";
+        sha1 = "0d8f3ff9f51b05f7c80b9a107727703d48997e4e";
+      };
+    }
+    {
+      name = "_gitlab_vue_toasted___vue_toasted_1.3.0.tgz";
+      path = fetchurl {
+        name = "_gitlab_vue_toasted___vue_toasted_1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/@gitlab/vue-toasted/-/vue-toasted-1.3.0.tgz";
+        sha1 = "f21550d4ce406ee5f99447a02abf36250ecc922d";
+      };
+    }
+    {
+      name = "_jest_console___console_24.7.1.tgz";
+      path = fetchurl {
+        name = "_jest_console___console_24.7.1.tgz";
+        url  = "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz";
+        sha1 = "32a9e42535a97aedfe037e725bd67e954b459545";
+      };
+    }
+    {
+      name = "_jest_core___core_24.8.0.tgz";
+      path = fetchurl {
+        name = "_jest_core___core_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/@jest/core/-/core-24.8.0.tgz";
+        sha1 = "fbbdcd42a41d0d39cddbc9f520c8bab0c33eed5b";
+      };
+    }
+    {
+      name = "_jest_environment___environment_24.8.0.tgz";
+      path = fetchurl {
+        name = "_jest_environment___environment_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/@jest/environment/-/environment-24.8.0.tgz";
+        sha1 = "0342261383c776bdd652168f68065ef144af0eac";
+      };
+    }
+    {
+      name = "_jest_fake_timers___fake_timers_24.8.0.tgz";
+      path = fetchurl {
+        name = "_jest_fake_timers___fake_timers_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.8.0.tgz";
+        sha1 = "2e5b80a4f78f284bcb4bd5714b8e10dd36a8d3d1";
+      };
+    }
+    {
+      name = "_jest_reporters___reporters_24.8.0.tgz";
+      path = fetchurl {
+        name = "_jest_reporters___reporters_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.8.0.tgz";
+        sha1 = "075169cd029bddec54b8f2c0fc489fd0b9e05729";
+      };
+    }
+    {
+      name = "_jest_source_map___source_map_24.3.0.tgz";
+      path = fetchurl {
+        name = "_jest_source_map___source_map_24.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.3.0.tgz";
+        sha1 = "563be3aa4d224caf65ff77edc95cd1ca4da67f28";
+      };
+    }
+    {
+      name = "_jest_test_result___test_result_24.8.0.tgz";
+      path = fetchurl {
+        name = "_jest_test_result___test_result_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.8.0.tgz";
+        sha1 = "7675d0aaf9d2484caa65e048d9b467d160f8e9d3";
+      };
+    }
+    {
+      name = "_jest_test_sequencer___test_sequencer_24.8.0.tgz";
+      path = fetchurl {
+        name = "_jest_test_sequencer___test_sequencer_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz";
+        sha1 = "2f993bcf6ef5eb4e65e8233a95a3320248cf994b";
+      };
+    }
+    {
+      name = "_jest_transform___transform_24.8.0.tgz";
+      path = fetchurl {
+        name = "_jest_transform___transform_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/@jest/transform/-/transform-24.8.0.tgz";
+        sha1 = "628fb99dce4f9d254c6fd9341e3eea262e06fef5";
+      };
+    }
+    {
+      name = "_jest_types___types_24.8.0.tgz";
+      path = fetchurl {
+        name = "_jest_types___types_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/@jest/types/-/types-24.8.0.tgz";
+        sha1 = "f31e25948c58f0abd8c845ae26fcea1491dea7ad";
+      };
+    }
+    {
+      name = "_mrmlnc_readdir_enhanced___readdir_enhanced_2.2.1.tgz";
+      path = fetchurl {
+        name = "_mrmlnc_readdir_enhanced___readdir_enhanced_2.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz";
+        sha1 = "524af240d1a360527b730475ecfa1344aa540dde";
+      };
+    }
+    {
+      name = "_nodelib_fs.stat___fs.stat_1.1.3.tgz";
+      path = fetchurl {
+        name = "_nodelib_fs.stat___fs.stat_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz";
+        sha1 = "2b5a3ab3f918cca48a8c754c08168e3f03eba61b";
+      };
+    }
+    {
+      name = "_nuxt_opencollective___opencollective_0.3.0.tgz";
+      path = fetchurl {
+        name = "_nuxt_opencollective___opencollective_0.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/@nuxt/opencollective/-/opencollective-0.3.0.tgz";
+        sha1 = "11d8944dcf2d526e31660bb69570be03f8fb72b7";
+      };
+    }
+    {
+      name = "_rails_actioncable___actioncable_6.0.3.tgz";
+      path = fetchurl {
+        name = "_rails_actioncable___actioncable_6.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/@rails/actioncable/-/actioncable-6.0.3.tgz";
+        sha1 = "722b4b639936129307ddbab3a390f6bcacf3e7bc";
+      };
+    }
+    {
+      name = "_sentry_browser___browser_5.10.2.tgz";
+      path = fetchurl {
+        name = "_sentry_browser___browser_5.10.2.tgz";
+        url  = "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.10.2.tgz";
+        sha1 = "0bbb05505c58ea998c833cffec3f922fe4b4fa58";
+      };
+    }
+    {
+      name = "_sentry_core___core_5.10.2.tgz";
+      path = fetchurl {
+        name = "_sentry_core___core_5.10.2.tgz";
+        url  = "https://registry.yarnpkg.com/@sentry/core/-/core-5.10.2.tgz";
+        sha1 = "1cb64489e6f8363c3249415b49d3f1289814825f";
+      };
+    }
+    {
+      name = "_sentry_hub___hub_5.10.2.tgz";
+      path = fetchurl {
+        name = "_sentry_hub___hub_5.10.2.tgz";
+        url  = "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.10.2.tgz";
+        sha1 = "25d9f36b8f7c5cb65cf486737fa61dc9bf69b7e3";
+      };
+    }
+    {
+      name = "_sentry_minimal___minimal_5.10.2.tgz";
+      path = fetchurl {
+        name = "_sentry_minimal___minimal_5.10.2.tgz";
+        url  = "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.10.2.tgz";
+        sha1 = "267c2f3aa6877a0fe7a86971942e83f3ee616580";
+      };
+    }
+    {
+      name = "_sentry_types___types_5.10.0.tgz";
+      path = fetchurl {
+        name = "_sentry_types___types_5.10.0.tgz";
+        url  = "https://registry.yarnpkg.com/@sentry/types/-/types-5.10.0.tgz";
+        sha1 = "4f0ba31b6e4d5371112c38279f11f66c73b43746";
+      };
+    }
+    {
+      name = "_sentry_utils___utils_5.10.2.tgz";
+      path = fetchurl {
+        name = "_sentry_utils___utils_5.10.2.tgz";
+        url  = "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.10.2.tgz";
+        sha1 = "261f575079d30aaf604e59f5f4de0aa21db22252";
+      };
+    }
+    {
+      name = "_sourcegraph_code_host_integration___code_host_integration_0.0.46.tgz";
+      path = fetchurl {
+        name = "_sourcegraph_code_host_integration___code_host_integration_0.0.46.tgz";
+        url  = "https://registry.yarnpkg.com/@sourcegraph/code-host-integration/-/code-host-integration-0.0.46.tgz";
+        sha1 = "05e4cda671ed00450be12461e6a3caff473675aa";
+      };
+    }
+    {
+      name = "_toast_ui_editor___editor_2.0.1.tgz";
+      path = fetchurl {
+        name = "_toast_ui_editor___editor_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/@toast-ui/editor/-/editor-2.0.1.tgz";
+        sha1 = "749e5be1f02f42ded51488d1575ab1c19ca59952";
+      };
+    }
+    {
+      name = "_toast_ui_vue_editor___vue_editor_2.0.1.tgz";
+      path = fetchurl {
+        name = "_toast_ui_vue_editor___vue_editor_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/@toast-ui/vue-editor/-/vue-editor-2.0.1.tgz";
+        sha1 = "c9c8c8da4c0a67b9fbc4240464388c67d72a0c22";
+      };
+    }
+    {
+      name = "_types_anymatch___anymatch_1.3.0.tgz";
+      path = fetchurl {
+        name = "_types_anymatch___anymatch_1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.0.tgz";
+        sha1 = "d1d55958d1fccc5527d4aba29fc9c4b942f563ff";
+      };
+    }
+    {
+      name = "_types_babel__core___babel__core_7.1.2.tgz";
+      path = fetchurl {
+        name = "_types_babel__core___babel__core_7.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.2.tgz";
+        sha1 = "608c74f55928033fce18b99b213c16be4b3d114f";
+      };
+    }
+    {
+      name = "_types_babel__generator___babel__generator_7.0.2.tgz";
+      path = fetchurl {
+        name = "_types_babel__generator___babel__generator_7.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.0.2.tgz";
+        sha1 = "d2112a6b21fad600d7674274293c85dce0cb47fc";
+      };
+    }
+    {
+      name = "_types_babel__template___babel__template_7.0.2.tgz";
+      path = fetchurl {
+        name = "_types_babel__template___babel__template_7.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz";
+        sha1 = "4ff63d6b52eddac1de7b975a5223ed32ecea9307";
+      };
+    }
+    {
+      name = "_types_babel__traverse___babel__traverse_7.0.6.tgz";
+      path = fetchurl {
+        name = "_types_babel__traverse___babel__traverse_7.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.6.tgz";
+        sha1 = "328dd1a8fc4cfe3c8458be9477b219ea158fd7b2";
+      };
+    }
+    {
+      name = "_types_codemirror___codemirror_0.0.71.tgz";
+      path = fetchurl {
+        name = "_types_codemirror___codemirror_0.0.71.tgz";
+        url  = "https://registry.yarnpkg.com/@types/codemirror/-/codemirror-0.0.71.tgz";
+        sha1 = "861f1bcb3100c0a064567c5400f2981cf4ae8ca7";
+      };
+    }
+    {
+      name = "_types_estree___estree_0.0.44.tgz";
+      path = fetchurl {
+        name = "_types_estree___estree_0.0.44.tgz";
+        url  = "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.44.tgz";
+        sha1 = "980cc5a29a3ef3bea6ff1f7d021047d7ea575e21";
+      };
+    }
+    {
+      name = "_types_events___events_1.2.0.tgz";
+      path = fetchurl {
+        name = "_types_events___events_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/@types/events/-/events-1.2.0.tgz";
+        sha1 = "81a6731ce4df43619e5c8c945383b3e62a89ea86";
+      };
+    }
+    {
+      name = "_types_glob___glob_7.1.1.tgz";
+      path = fetchurl {
+        name = "_types_glob___glob_7.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz";
+        sha1 = "aa59a1c6e3fbc421e07ccd31a944c30eba521575";
+      };
+    }
+    {
+      name = "_types_istanbul_lib_coverage___istanbul_lib_coverage_2.0.1.tgz";
+      path = fetchurl {
+        name = "_types_istanbul_lib_coverage___istanbul_lib_coverage_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz";
+        sha1 = "42995b446db9a48a11a07ec083499a860e9138ff";
+      };
+    }
+    {
+      name = "_types_istanbul_lib_report___istanbul_lib_report_1.1.1.tgz";
+      path = fetchurl {
+        name = "_types_istanbul_lib_report___istanbul_lib_report_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz";
+        sha1 = "e5471e7fa33c61358dd38426189c037a58433b8c";
+      };
+    }
+    {
+      name = "_types_istanbul_reports___istanbul_reports_1.1.1.tgz";
+      path = fetchurl {
+        name = "_types_istanbul_reports___istanbul_reports_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz";
+        sha1 = "7a8cbf6a406f36c8add871625b278eaf0b0d255a";
+      };
+    }
+    {
+      name = "_types_json_schema___json_schema_7.0.4.tgz";
+      path = fetchurl {
+        name = "_types_json_schema___json_schema_7.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz";
+        sha1 = "38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339";
+      };
+    }
+    {
+      name = "_types_minimatch___minimatch_3.0.3.tgz";
+      path = fetchurl {
+        name = "_types_minimatch___minimatch_3.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz";
+        sha1 = "3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d";
+      };
+    }
+    {
+      name = "_types_node___node_10.12.9.tgz";
+      path = fetchurl {
+        name = "_types_node___node_10.12.9.tgz";
+        url  = "https://registry.yarnpkg.com/@types/node/-/node-10.12.9.tgz";
+        sha1 = "a07bfa74331471e1dc22a47eb72026843f7b95c8";
+      };
+    }
+    {
+      name = "_types_parse5___parse5_5.0.0.tgz";
+      path = fetchurl {
+        name = "_types_parse5___parse5_5.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.0.tgz";
+        sha1 = "9ae2106efc443d7c1e26570aa8247828c9c80f11";
+      };
+    }
+    {
+      name = "_types_stack_utils___stack_utils_1.0.1.tgz";
+      path = fetchurl {
+        name = "_types_stack_utils___stack_utils_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz";
+        sha1 = "0a851d3bd96498fa25c33ab7278ed3bd65f06c3e";
+      };
+    }
+    {
+      name = "_types_tapable___tapable_1.0.4.tgz";
+      path = fetchurl {
+        name = "_types_tapable___tapable_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.4.tgz";
+        sha1 = "b4ffc7dc97b498c969b360a41eee247f82616370";
+      };
+    }
+    {
+      name = "_types_tern___tern_0.23.3.tgz";
+      path = fetchurl {
+        name = "_types_tern___tern_0.23.3.tgz";
+        url  = "https://registry.yarnpkg.com/@types/tern/-/tern-0.23.3.tgz";
+        sha1 = "4b54538f04a88c9ff79de1f6f94f575a7f339460";
+      };
+    }
+    {
+      name = "_types_uglify_js___uglify_js_3.0.4.tgz";
+      path = fetchurl {
+        name = "_types_uglify_js___uglify_js_3.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.0.4.tgz";
+        sha1 = "96beae23df6f561862a830b4288a49e86baac082";
+      };
+    }
+    {
+      name = "_types_unist___unist_2.0.3.tgz";
+      path = fetchurl {
+        name = "_types_unist___unist_2.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz";
+        sha1 = "9c088679876f374eb5983f150d4787aa6fb32d7e";
+      };
+    }
+    {
+      name = "_types_vfile_message___vfile_message_1.0.1.tgz";
+      path = fetchurl {
+        name = "_types_vfile_message___vfile_message_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/@types/vfile-message/-/vfile-message-1.0.1.tgz";
+        sha1 = "e1e9895cc6b36c462d4244e64e6d0b6eaf65355a";
+      };
+    }
+    {
+      name = "_types_vfile___vfile_3.0.2.tgz";
+      path = fetchurl {
+        name = "_types_vfile___vfile_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/@types/vfile/-/vfile-3.0.2.tgz";
+        sha1 = "19c18cd232df11ce6fa6ad80259bc86c366b09b9";
+      };
+    }
+    {
+      name = "_types_webpack___webpack_4.4.23.tgz";
+      path = fetchurl {
+        name = "_types_webpack___webpack_4.4.23.tgz";
+        url  = "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.4.23.tgz";
+        sha1 = "059d6f4598cfd65ddee0e2db38317ef989696712";
+      };
+    }
+    {
+      name = "_types_yargs___yargs_12.0.12.tgz";
+      path = fetchurl {
+        name = "_types_yargs___yargs_12.0.12.tgz";
+        url  = "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz";
+        sha1 = "45dd1d0638e8c8f153e87d296907659296873916";
+      };
+    }
+    {
+      name = "_types_zen_observable___zen_observable_0.8.0.tgz";
+      path = fetchurl {
+        name = "_types_zen_observable___zen_observable_0.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.0.tgz";
+        sha1 = "8b63ab7f1aa5321248aad5ac890a485656dcea4d";
+      };
+    }
+    {
+      name = "_typescript_eslint_experimental_utils___experimental_utils_2.30.0.tgz";
+      path = fetchurl {
+        name = "_typescript_eslint_experimental_utils___experimental_utils_2.30.0.tgz";
+        url  = "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.30.0.tgz";
+        sha1 = "9845e868c01f3aed66472c561d4b6bac44809dd0";
+      };
+    }
+    {
+      name = "_typescript_eslint_typescript_estree___typescript_estree_2.30.0.tgz";
+      path = fetchurl {
+        name = "_typescript_eslint_typescript_estree___typescript_estree_2.30.0.tgz";
+        url  = "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.30.0.tgz";
+        sha1 = "1b8e848b55144270255ffbfe4c63291f8f766615";
+      };
+    }
+    {
+      name = "_vue_component_compiler_utils___component_compiler_utils_2.6.0.tgz";
+      path = fetchurl {
+        name = "_vue_component_compiler_utils___component_compiler_utils_2.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-2.6.0.tgz";
+        sha1 = "aa46d2a6f7647440b0b8932434d22f12371e543b";
+      };
+    }
+    {
+      name = "_vue_component_compiler_utils___component_compiler_utils_3.1.1.tgz";
+      path = fetchurl {
+        name = "_vue_component_compiler_utils___component_compiler_utils_3.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.1.1.tgz";
+        sha1 = "d4ef8f80292674044ad6211e336a302e4d2a6575";
+      };
+    }
+    {
+      name = "_vue_test_utils___test_utils_1.0.0_beta.30.tgz";
+      path = fetchurl {
+        name = "_vue_test_utils___test_utils_1.0.0_beta.30.tgz";
+        url  = "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.0.0-beta.30.tgz";
+        sha1 = "d5f26d1e2411fdb7fa7fdedb61b4b4ea4194c49d";
+      };
+    }
+    {
+      name = "_webassemblyjs_ast___ast_1.8.5.tgz";
+      path = fetchurl {
+        name = "_webassemblyjs_ast___ast_1.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz";
+        sha1 = "51b1c5fe6576a34953bf4b253df9f0d490d9e359";
+      };
+    }
+    {
+      name = "_webassemblyjs_floating_point_hex_parser___floating_point_hex_parser_1.8.5.tgz";
+      path = fetchurl {
+        name = "_webassemblyjs_floating_point_hex_parser___floating_point_hex_parser_1.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz";
+        sha1 = "1ba926a2923613edce496fd5b02e8ce8a5f49721";
+      };
+    }
+    {
+      name = "_webassemblyjs_helper_api_error___helper_api_error_1.8.5.tgz";
+      path = fetchurl {
+        name = "_webassemblyjs_helper_api_error___helper_api_error_1.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz";
+        sha1 = "c49dad22f645227c5edb610bdb9697f1aab721f7";
+      };
+    }
+    {
+      name = "_webassemblyjs_helper_buffer___helper_buffer_1.8.5.tgz";
+      path = fetchurl {
+        name = "_webassemblyjs_helper_buffer___helper_buffer_1.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz";
+        sha1 = "fea93e429863dd5e4338555f42292385a653f204";
+      };
+    }
+    {
+      name = "_webassemblyjs_helper_code_frame___helper_code_frame_1.8.5.tgz";
+      path = fetchurl {
+        name = "_webassemblyjs_helper_code_frame___helper_code_frame_1.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz";
+        sha1 = "9a740ff48e3faa3022b1dff54423df9aa293c25e";
+      };
+    }
+    {
+      name = "_webassemblyjs_helper_fsm___helper_fsm_1.8.5.tgz";
+      path = fetchurl {
+        name = "_webassemblyjs_helper_fsm___helper_fsm_1.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz";
+        sha1 = "ba0b7d3b3f7e4733da6059c9332275d860702452";
+      };
+    }
+    {
+      name = "_webassemblyjs_helper_module_context___helper_module_context_1.8.5.tgz";
+      path = fetchurl {
+        name = "_webassemblyjs_helper_module_context___helper_module_context_1.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz";
+        sha1 = "def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245";
+      };
+    }
+    {
+      name = "_webassemblyjs_helper_wasm_bytecode___helper_wasm_bytecode_1.8.5.tgz";
+      path = fetchurl {
+        name = "_webassemblyjs_helper_wasm_bytecode___helper_wasm_bytecode_1.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz";
+        sha1 = "537a750eddf5c1e932f3744206551c91c1b93e61";
+      };
+    }
+    {
+      name = "_webassemblyjs_helper_wasm_section___helper_wasm_section_1.8.5.tgz";
+      path = fetchurl {
+        name = "_webassemblyjs_helper_wasm_section___helper_wasm_section_1.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz";
+        sha1 = "74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf";
+      };
+    }
+    {
+      name = "_webassemblyjs_ieee754___ieee754_1.8.5.tgz";
+      path = fetchurl {
+        name = "_webassemblyjs_ieee754___ieee754_1.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz";
+        sha1 = "712329dbef240f36bf57bd2f7b8fb9bf4154421e";
+      };
+    }
+    {
+      name = "_webassemblyjs_leb128___leb128_1.8.5.tgz";
+      path = fetchurl {
+        name = "_webassemblyjs_leb128___leb128_1.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz";
+        sha1 = "044edeb34ea679f3e04cd4fd9824d5e35767ae10";
+      };
+    }
+    {
+      name = "_webassemblyjs_utf8___utf8_1.8.5.tgz";
+      path = fetchurl {
+        name = "_webassemblyjs_utf8___utf8_1.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz";
+        sha1 = "a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc";
+      };
+    }
+    {
+      name = "_webassemblyjs_wasm_edit___wasm_edit_1.8.5.tgz";
+      path = fetchurl {
+        name = "_webassemblyjs_wasm_edit___wasm_edit_1.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz";
+        sha1 = "962da12aa5acc1c131c81c4232991c82ce56e01a";
+      };
+    }
+    {
+      name = "_webassemblyjs_wasm_gen___wasm_gen_1.8.5.tgz";
+      path = fetchurl {
+        name = "_webassemblyjs_wasm_gen___wasm_gen_1.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz";
+        sha1 = "54840766c2c1002eb64ed1abe720aded714f98bc";
+      };
+    }
+    {
+      name = "_webassemblyjs_wasm_opt___wasm_opt_1.8.5.tgz";
+      path = fetchurl {
+        name = "_webassemblyjs_wasm_opt___wasm_opt_1.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz";
+        sha1 = "b24d9f6ba50394af1349f510afa8ffcb8a63d264";
+      };
+    }
+    {
+      name = "_webassemblyjs_wasm_parser___wasm_parser_1.8.5.tgz";
+      path = fetchurl {
+        name = "_webassemblyjs_wasm_parser___wasm_parser_1.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz";
+        sha1 = "21576f0ec88b91427357b8536383668ef7c66b8d";
+      };
+    }
+    {
+      name = "_webassemblyjs_wast_parser___wast_parser_1.8.5.tgz";
+      path = fetchurl {
+        name = "_webassemblyjs_wast_parser___wast_parser_1.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz";
+        sha1 = "e10eecd542d0e7bd394f6827c49f3df6d4eefb8c";
+      };
+    }
+    {
+      name = "_webassemblyjs_wast_printer___wast_printer_1.8.5.tgz";
+      path = fetchurl {
+        name = "_webassemblyjs_wast_printer___wast_printer_1.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz";
+        sha1 = "114bbc481fd10ca0e23b3560fa812748b0bae5bc";
+      };
+    }
+    {
+      name = "_wry_context___context_0.4.4.tgz";
+      path = fetchurl {
+        name = "_wry_context___context_0.4.4.tgz";
+        url  = "https://registry.yarnpkg.com/@wry/context/-/context-0.4.4.tgz";
+        sha1 = "e50f5fa1d6cfaabf2977d1fda5ae91717f8815f8";
+      };
+    }
+    {
+      name = "_wry_equality___equality_0.1.9.tgz";
+      path = fetchurl {
+        name = "_wry_equality___equality_0.1.9.tgz";
+        url  = "https://registry.yarnpkg.com/@wry/equality/-/equality-0.1.9.tgz";
+        sha1 = "b13e18b7a8053c6858aa6c85b54911fb31e3a909";
+      };
+    }
+    {
+      name = "_xtuc_ieee754___ieee754_1.2.0.tgz";
+      path = fetchurl {
+        name = "_xtuc_ieee754___ieee754_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz";
+        sha1 = "eef014a3145ae477a1cbc00cd1e552336dceb790";
+      };
+    }
+    {
+      name = "_xtuc_long___long_4.2.2.tgz";
+      path = fetchurl {
+        name = "_xtuc_long___long_4.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz";
+        sha1 = "d291c6a4e97989b5c61d9acf396ae4fe133a718d";
+      };
+    }
+    {
+      name = "_yarnpkg_lockfile___lockfile_1.1.0.tgz";
+      path = fetchurl {
+        name = "_yarnpkg_lockfile___lockfile_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz";
+        sha1 = "e77a97fbd345b76d83245edcd17d393b1b41fb31";
+      };
+    }
+    {
+      name = "abab___abab_2.0.0.tgz";
+      path = fetchurl {
+        name = "abab___abab_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz";
+        sha1 = "aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f";
+      };
+    }
+    {
+      name = "abbrev___abbrev_1.0.9.tgz";
+      path = fetchurl {
+        name = "abbrev___abbrev_1.0.9.tgz";
+        url  = "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz";
+        sha1 = "91b4792588a7738c25f35dd6f63752a2f8776135";
+      };
+    }
+    {
+      name = "accepts___accepts_1.3.7.tgz";
+      path = fetchurl {
+        name = "accepts___accepts_1.3.7.tgz";
+        url  = "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz";
+        sha1 = "531bc726517a3b2b41f850021c6cc15eaab507cd";
+      };
+    }
+    {
+      name = "acorn_globals___acorn_globals_4.3.0.tgz";
+      path = fetchurl {
+        name = "acorn_globals___acorn_globals_4.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz";
+        sha1 = "e3b6f8da3c1552a95ae627571f7dd6923bb54103";
+      };
+    }
+    {
+      name = "acorn_jsx___acorn_jsx_5.1.0.tgz";
+      path = fetchurl {
+        name = "acorn_jsx___acorn_jsx_5.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz";
+        sha1 = "294adb71b57398b0680015f0a38c563ee1db5384";
+      };
+    }
+    {
+      name = "acorn_walk___acorn_walk_6.2.0.tgz";
+      path = fetchurl {
+        name = "acorn_walk___acorn_walk_6.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz";
+        sha1 = "123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c";
+      };
+    }
+    {
+      name = "acorn___acorn_5.7.3.tgz";
+      path = fetchurl {
+        name = "acorn___acorn_5.7.3.tgz";
+        url  = "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz";
+        sha1 = "67aa231bf8812974b85235a96771eb6bd07ea279";
+      };
+    }
+    {
+      name = "acorn___acorn_6.3.0.tgz";
+      path = fetchurl {
+        name = "acorn___acorn_6.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz";
+        sha1 = "0087509119ffa4fc0a0041d1e93a417e68cb856e";
+      };
+    }
+    {
+      name = "acorn___acorn_7.1.0.tgz";
+      path = fetchurl {
+        name = "acorn___acorn_7.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz";
+        sha1 = "949d36f2c292535da602283586c2477c57eb2d6c";
+      };
+    }
+    {
+      name = "after___after_0.8.2.tgz";
+      path = fetchurl {
+        name = "after___after_0.8.2.tgz";
+        url  = "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz";
+        sha1 = "fedb394f9f0e02aa9768e702bda23b505fae7e1f";
+      };
+    }
+    {
+      name = "aggregate_error___aggregate_error_3.0.1.tgz";
+      path = fetchurl {
+        name = "aggregate_error___aggregate_error_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz";
+        sha1 = "db2fe7246e536f40d9b5442a39e117d7dd6a24e0";
+      };
+    }
+    {
+      name = "ajv_errors___ajv_errors_1.0.0.tgz";
+      path = fetchurl {
+        name = "ajv_errors___ajv_errors_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz";
+        sha1 = "ecf021fa108fd17dfb5e6b383f2dd233e31ffc59";
+      };
+    }
+    {
+      name = "ajv_keywords___ajv_keywords_3.4.1.tgz";
+      path = fetchurl {
+        name = "ajv_keywords___ajv_keywords_3.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz";
+        sha1 = "ef916e271c64ac12171fd8384eaae6b2345854da";
+      };
+    }
+    {
+      name = "ajv___ajv_6.11.0.tgz";
+      path = fetchurl {
+        name = "ajv___ajv_6.11.0.tgz";
+        url  = "https://registry.yarnpkg.com/ajv/-/ajv-6.11.0.tgz";
+        sha1 = "c3607cbc8ae392d8a5a536f25b21f8e5f3f87fe9";
+      };
+    }
+    {
+      name = "amdefine___amdefine_1.0.1.tgz";
+      path = fetchurl {
+        name = "amdefine___amdefine_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz";
+        sha1 = "4a5282ac164729e93619bcfd3ad151f817ce91f5";
+      };
+    }
+    {
+      name = "ansi_align___ansi_align_2.0.0.tgz";
+      path = fetchurl {
+        name = "ansi_align___ansi_align_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz";
+        sha1 = "c36aeccba563b89ceb556f3690f0b1d9e3547f7f";
+      };
+    }
+    {
+      name = "ansi_colors___ansi_colors_3.2.4.tgz";
+      path = fetchurl {
+        name = "ansi_colors___ansi_colors_3.2.4.tgz";
+        url  = "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz";
+        sha1 = "e3a3da4bfbae6c86a9c285625de124a234026fbf";
+      };
+    }
+    {
+      name = "ansi_escapes___ansi_escapes_3.2.0.tgz";
+      path = fetchurl {
+        name = "ansi_escapes___ansi_escapes_3.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz";
+        sha1 = "8780b98ff9dbf5638152d1f1fe5c1d7b4442976b";
+      };
+    }
+    {
+      name = "ansi_escapes___ansi_escapes_4.3.0.tgz";
+      path = fetchurl {
+        name = "ansi_escapes___ansi_escapes_4.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz";
+        sha1 = "a4ce2b33d6b214b7950d8595c212f12ac9cc569d";
+      };
+    }
+    {
+      name = "ansi_html___ansi_html_0.0.7.tgz";
+      path = fetchurl {
+        name = "ansi_html___ansi_html_0.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz";
+        sha1 = "813584021962a9e9e6fd039f940d12f56ca7859e";
+      };
+    }
+    {
+      name = "ansi_regex___ansi_regex_2.1.1.tgz";
+      path = fetchurl {
+        name = "ansi_regex___ansi_regex_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz";
+        sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
+      };
+    }
+    {
+      name = "ansi_regex___ansi_regex_3.0.0.tgz";
+      path = fetchurl {
+        name = "ansi_regex___ansi_regex_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz";
+        sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
+      };
+    }
+    {
+      name = "ansi_regex___ansi_regex_4.1.0.tgz";
+      path = fetchurl {
+        name = "ansi_regex___ansi_regex_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz";
+        sha1 = "8b9f8f08cf1acb843756a839ca8c7e3168c51997";
+      };
+    }
+    {
+      name = "ansi_styles___ansi_styles_2.2.1.tgz";
+      path = fetchurl {
+        name = "ansi_styles___ansi_styles_2.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz";
+        sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
+      };
+    }
+    {
+      name = "ansi_styles___ansi_styles_3.2.1.tgz";
+      path = fetchurl {
+        name = "ansi_styles___ansi_styles_3.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz";
+        sha1 = "41fbb20243e50b12be0f04b8dedbf07520ce841d";
+      };
+    }
+    {
+      name = "anymatch___anymatch_2.0.0.tgz";
+      path = fetchurl {
+        name = "anymatch___anymatch_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz";
+        sha1 = "bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb";
+      };
+    }
+    {
+      name = "anymatch___anymatch_3.0.3.tgz";
+      path = fetchurl {
+        name = "anymatch___anymatch_3.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/anymatch/-/anymatch-3.0.3.tgz";
+        sha1 = "2fb624fe0e84bccab00afee3d0006ed310f22f09";
+      };
+    }
+    {
+      name = "apollo_cache_inmemory___apollo_cache_inmemory_1.6.3.tgz";
+      path = fetchurl {
+        name = "apollo_cache_inmemory___apollo_cache_inmemory_1.6.3.tgz";
+        url  = "https://registry.yarnpkg.com/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.3.tgz";
+        sha1 = "826861d20baca4abc45f7ca7a874105905b8525d";
+      };
+    }
+    {
+      name = "apollo_cache___apollo_cache_1.3.2.tgz";
+      path = fetchurl {
+        name = "apollo_cache___apollo_cache_1.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/apollo-cache/-/apollo-cache-1.3.2.tgz";
+        sha1 = "df4dce56240d6c95c613510d7e409f7214e6d26a";
+      };
+    }
+    {
+      name = "apollo_client___apollo_client_2.6.4.tgz";
+      path = fetchurl {
+        name = "apollo_client___apollo_client_2.6.4.tgz";
+        url  = "https://registry.yarnpkg.com/apollo-client/-/apollo-client-2.6.4.tgz";
+        sha1 = "872c32927263a0d34655c5ef8a8949fbb20b6140";
+      };
+    }
+    {
+      name = "apollo_link_batch_http___apollo_link_batch_http_1.2.11.tgz";
+      path = fetchurl {
+        name = "apollo_link_batch_http___apollo_link_batch_http_1.2.11.tgz";
+        url  = "https://registry.yarnpkg.com/apollo-link-batch-http/-/apollo-link-batch-http-1.2.11.tgz";
+        sha1 = "ae42dbcc02820658e1e267d05bf2aae7ac208088";
+      };
+    }
+    {
+      name = "apollo_link_batch___apollo_link_batch_1.1.12.tgz";
+      path = fetchurl {
+        name = "apollo_link_batch___apollo_link_batch_1.1.12.tgz";
+        url  = "https://registry.yarnpkg.com/apollo-link-batch/-/apollo-link-batch-1.1.12.tgz";
+        sha1 = "64eb231082f182b0395ef7ab903600627f6c7fe8";
+      };
+    }
+    {
+      name = "apollo_link_http_common___apollo_link_http_common_0.2.13.tgz";
+      path = fetchurl {
+        name = "apollo_link_http_common___apollo_link_http_common_0.2.13.tgz";
+        url  = "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.13.tgz";
+        sha1 = "c688f6baaffdc7b269b2db7ae89dae7c58b5b350";
+      };
+    }
+    {
+      name = "apollo_link___apollo_link_1.2.11.tgz";
+      path = fetchurl {
+        name = "apollo_link___apollo_link_1.2.11.tgz";
+        url  = "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.11.tgz";
+        sha1 = "493293b747ad3237114ccd22e9f559e5e24a194d";
+      };
+    }
+    {
+      name = "apollo_upload_client___apollo_upload_client_10.0.0.tgz";
+      path = fetchurl {
+        name = "apollo_upload_client___apollo_upload_client_10.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/apollo-upload-client/-/apollo-upload-client-10.0.0.tgz";
+        sha1 = "6cc3d0ea2aef40bc237b655f5042809cacee1859";
+      };
+    }
+    {
+      name = "apollo_utilities___apollo_utilities_1.3.2.tgz";
+      path = fetchurl {
+        name = "apollo_utilities___apollo_utilities_1.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.3.2.tgz";
+        sha1 = "8cbdcf8b012f664cd6cb5767f6130f5aed9115c9";
+      };
+    }
+    {
+      name = "append_transform___append_transform_1.0.0.tgz";
+      path = fetchurl {
+        name = "append_transform___append_transform_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz";
+        sha1 = "046a52ae582a228bd72f58acfbe2967c678759ab";
+      };
+    }
+    {
+      name = "aproba___aproba_1.2.0.tgz";
+      path = fetchurl {
+        name = "aproba___aproba_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz";
+        sha1 = "6802e6264efd18c790a1b0d517f0f2627bf2c94a";
+      };
+    }
+    {
+      name = "are_we_there_yet___are_we_there_yet_1.1.5.tgz";
+      path = fetchurl {
+        name = "are_we_there_yet___are_we_there_yet_1.1.5.tgz";
+        url  = "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz";
+        sha1 = "4b35c2944f062a8bfcda66410760350fe9ddfc21";
+      };
+    }
+    {
+      name = "argparse___argparse_1.0.10.tgz";
+      path = fetchurl {
+        name = "argparse___argparse_1.0.10.tgz";
+        url  = "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz";
+        sha1 = "bcd6791ea5ae09725e17e5ad988134cd40b3d911";
+      };
+    }
+    {
+      name = "arr_diff___arr_diff_4.0.0.tgz";
+      path = fetchurl {
+        name = "arr_diff___arr_diff_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz";
+        sha1 = "d6461074febfec71e7e15235761a329a5dc7c520";
+      };
+    }
+    {
+      name = "arr_flatten___arr_flatten_1.1.0.tgz";
+      path = fetchurl {
+        name = "arr_flatten___arr_flatten_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz";
+        sha1 = "36048bbff4e7b47e136644316c99669ea5ae91f1";
+      };
+    }
+    {
+      name = "arr_union___arr_union_3.1.0.tgz";
+      path = fetchurl {
+        name = "arr_union___arr_union_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz";
+        sha1 = "e39b09aea9def866a8f206e288af63919bae39c4";
+      };
+    }
+    {
+      name = "array_equal___array_equal_1.0.0.tgz";
+      path = fetchurl {
+        name = "array_equal___array_equal_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz";
+        sha1 = "8c2a5ef2472fd9ea742b04c77a75093ba2757c93";
+      };
+    }
+    {
+      name = "array_find_index___array_find_index_1.0.2.tgz";
+      path = fetchurl {
+        name = "array_find_index___array_find_index_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz";
+        sha1 = "df010aa1287e164bbda6f9723b0a96a1ec4187a1";
+      };
+    }
+    {
+      name = "array_find___array_find_1.0.0.tgz";
+      path = fetchurl {
+        name = "array_find___array_find_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/array-find/-/array-find-1.0.0.tgz";
+        sha1 = "6c8e286d11ed768327f8e62ecee87353ca3e78b8";
+      };
+    }
+    {
+      name = "array_flatten___array_flatten_1.1.1.tgz";
+      path = fetchurl {
+        name = "array_flatten___array_flatten_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz";
+        sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2";
+      };
+    }
+    {
+      name = "array_flatten___array_flatten_2.1.1.tgz";
+      path = fetchurl {
+        name = "array_flatten___array_flatten_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz";
+        sha1 = "426bb9da84090c1838d812c8150af20a8331e296";
+      };
+    }
+    {
+      name = "array_includes___array_includes_3.0.3.tgz";
+      path = fetchurl {
+        name = "array_includes___array_includes_3.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz";
+        sha1 = "184b48f62d92d7452bb31b323165c7f8bd02266d";
+      };
+    }
+    {
+      name = "array_union___array_union_1.0.2.tgz";
+      path = fetchurl {
+        name = "array_union___array_union_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz";
+        sha1 = "9a34410e4f4e3da23dea375be5be70f24778ec39";
+      };
+    }
+    {
+      name = "array_uniq___array_uniq_1.0.3.tgz";
+      path = fetchurl {
+        name = "array_uniq___array_uniq_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz";
+        sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6";
+      };
+    }
+    {
+      name = "array_unique___array_unique_0.3.2.tgz";
+      path = fetchurl {
+        name = "array_unique___array_unique_0.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz";
+        sha1 = "a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428";
+      };
+    }
+    {
+      name = "array.prototype.flat___array.prototype.flat_1.2.3.tgz";
+      path = fetchurl {
+        name = "array.prototype.flat___array.prototype.flat_1.2.3.tgz";
+        url  = "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz";
+        sha1 = "0de82b426b0318dbfdb940089e38b043d37f6c7b";
+      };
+    }
+    {
+      name = "arraybuffer.slice___arraybuffer.slice_0.0.7.tgz";
+      path = fetchurl {
+        name = "arraybuffer.slice___arraybuffer.slice_0.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz";
+        sha1 = "3bbc4275dd584cc1b10809b89d4e8b63a69e7675";
+      };
+    }
+    {
+      name = "arrify___arrify_1.0.1.tgz";
+      path = fetchurl {
+        name = "arrify___arrify_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz";
+        sha1 = "898508da2226f380df904728456849c1501a4b0d";
+      };
+    }
+    {
+      name = "asn1.js___asn1.js_4.10.1.tgz";
+      path = fetchurl {
+        name = "asn1.js___asn1.js_4.10.1.tgz";
+        url  = "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz";
+        sha1 = "b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0";
+      };
+    }
+    {
+      name = "asn1___asn1_0.2.4.tgz";
+      path = fetchurl {
+        name = "asn1___asn1_0.2.4.tgz";
+        url  = "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz";
+        sha1 = "8d2475dfab553bb33e77b54e59e880bb8ce23136";
+      };
+    }
+    {
+      name = "assert_plus___assert_plus_1.0.0.tgz";
+      path = fetchurl {
+        name = "assert_plus___assert_plus_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz";
+        sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
+      };
+    }
+    {
+      name = "assert___assert_1.4.1.tgz";
+      path = fetchurl {
+        name = "assert___assert_1.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz";
+        sha1 = "99912d591836b5a6f5b345c0f07eefc08fc65d91";
+      };
+    }
+    {
+      name = "assign_symbols___assign_symbols_1.0.0.tgz";
+      path = fetchurl {
+        name = "assign_symbols___assign_symbols_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz";
+        sha1 = "59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367";
+      };
+    }
+    {
+      name = "astral_regex___astral_regex_1.0.0.tgz";
+      path = fetchurl {
+        name = "astral_regex___astral_regex_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz";
+        sha1 = "6c8c3fb827dd43ee3918f27b82782ab7658a6fd9";
+      };
+    }
+    {
+      name = "async_each___async_each_1.0.3.tgz";
+      path = fetchurl {
+        name = "async_each___async_each_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz";
+        sha1 = "b727dbf87d7651602f06f4d4ac387f47d91b0cbf";
+      };
+    }
+    {
+      name = "async_foreach___async_foreach_0.1.3.tgz";
+      path = fetchurl {
+        name = "async_foreach___async_foreach_0.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz";
+        sha1 = "36121f845c0578172de419a97dbeb1d16ec34542";
+      };
+    }
+    {
+      name = "async_limiter___async_limiter_1.0.0.tgz";
+      path = fetchurl {
+        name = "async_limiter___async_limiter_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz";
+        sha1 = "78faed8c3d074ab81f22b4e985d79e8738f720f8";
+      };
+    }
+    {
+      name = "async___async_2.6.3.tgz";
+      path = fetchurl {
+        name = "async___async_2.6.3.tgz";
+        url  = "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz";
+        sha1 = "d72625e2344a3656e3a3ad4fa749fa83299d82ff";
+      };
+    }
+    {
+      name = "asynckit___asynckit_0.4.0.tgz";
+      path = fetchurl {
+        name = "asynckit___asynckit_0.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz";
+        sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
+      };
+    }
+    {
+      name = "atob___atob_2.1.2.tgz";
+      path = fetchurl {
+        name = "atob___atob_2.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz";
+        sha1 = "6d9517eb9e030d2436666651e86bd9f6f13533c9";
+      };
+    }
+    {
+      name = "autoprefixer___autoprefixer_9.6.1.tgz";
+      path = fetchurl {
+        name = "autoprefixer___autoprefixer_9.6.1.tgz";
+        url  = "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.6.1.tgz";
+        sha1 = "51967a02d2d2300bb01866c1611ec8348d355a47";
+      };
+    }
+    {
+      name = "autosize___autosize_4.0.2.tgz";
+      path = fetchurl {
+        name = "autosize___autosize_4.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/autosize/-/autosize-4.0.2.tgz";
+        sha1 = "073cfd07c8bf45da4b9fd153437f5bafbba1e4c9";
+      };
+    }
+    {
+      name = "aws_sdk___aws_sdk_2.637.0.tgz";
+      path = fetchurl {
+        name = "aws_sdk___aws_sdk_2.637.0.tgz";
+        url  = "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.637.0.tgz";
+        sha1 = "810e25e53acf2250d35fc74498f9d4492e154217";
+      };
+    }
+    {
+      name = "aws_sign2___aws_sign2_0.7.0.tgz";
+      path = fetchurl {
+        name = "aws_sign2___aws_sign2_0.7.0.tgz";
+        url  = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz";
+        sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
+      };
+    }
+    {
+      name = "aws4___aws4_1.8.0.tgz";
+      path = fetchurl {
+        name = "aws4___aws4_1.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz";
+        sha1 = "f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f";
+      };
+    }
+    {
+      name = "axios_mock_adapter___axios_mock_adapter_1.15.0.tgz";
+      path = fetchurl {
+        name = "axios_mock_adapter___axios_mock_adapter_1.15.0.tgz";
+        url  = "https://registry.yarnpkg.com/axios-mock-adapter/-/axios-mock-adapter-1.15.0.tgz";
+        sha1 = "fbc06825d8302c95c3334d21023bba996255d45d";
+      };
+    }
+    {
+      name = "axios___axios_0.19.0.tgz";
+      path = fetchurl {
+        name = "axios___axios_0.19.0.tgz";
+        url  = "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz";
+        sha1 = "8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8";
+      };
+    }
+    {
+      name = "babel_eslint___babel_eslint_10.0.3.tgz";
+      path = fetchurl {
+        name = "babel_eslint___babel_eslint_10.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.3.tgz";
+        sha1 = "81a2c669be0f205e19462fed2482d33e4687a88a";
+      };
+    }
+    {
+      name = "babel_jest___babel_jest_24.8.0.tgz";
+      path = fetchurl {
+        name = "babel_jest___babel_jest_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.8.0.tgz";
+        sha1 = "5c15ff2b28e20b0f45df43fe6b7f2aae93dba589";
+      };
+    }
+    {
+      name = "babel_loader___babel_loader_8.0.6.tgz";
+      path = fetchurl {
+        name = "babel_loader___babel_loader_8.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz";
+        sha1 = "e33bdb6f362b03f4bb141a0c21ab87c501b70dfb";
+      };
+    }
+    {
+      name = "babel_plugin_dynamic_import_node___babel_plugin_dynamic_import_node_2.3.0.tgz";
+      path = fetchurl {
+        name = "babel_plugin_dynamic_import_node___babel_plugin_dynamic_import_node_2.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz";
+        sha1 = "f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f";
+      };
+    }
+    {
+      name = "babel_plugin_istanbul___babel_plugin_istanbul_5.1.0.tgz";
+      path = fetchurl {
+        name = "babel_plugin_istanbul___babel_plugin_istanbul_5.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.0.tgz";
+        sha1 = "6892f529eff65a3e2d33d87dc5888ffa2ecd4a30";
+      };
+    }
+    {
+      name = "babel_plugin_jest_hoist___babel_plugin_jest_hoist_24.6.0.tgz";
+      path = fetchurl {
+        name = "babel_plugin_jest_hoist___babel_plugin_jest_hoist_24.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz";
+        sha1 = "f7f7f7ad150ee96d7a5e8e2c5da8319579e78019";
+      };
+    }
+    {
+      name = "babel_plugin_lodash___babel_plugin_lodash_3.3.4.tgz";
+      path = fetchurl {
+        name = "babel_plugin_lodash___babel_plugin_lodash_3.3.4.tgz";
+        url  = "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz";
+        sha1 = "4f6844358a1340baed182adbeffa8df9967bc196";
+      };
+    }
+    {
+      name = "babel_plugin_rewire___babel_plugin_rewire_1.2.0.tgz";
+      path = fetchurl {
+        name = "babel_plugin_rewire___babel_plugin_rewire_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/babel-plugin-rewire/-/babel-plugin-rewire-1.2.0.tgz";
+        sha1 = "822562d72ed2c84e47c0f95ee232c920853e9d89";
+      };
+    }
+    {
+      name = "babel_preset_jest___babel_preset_jest_24.6.0.tgz";
+      path = fetchurl {
+        name = "babel_preset_jest___babel_preset_jest_24.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz";
+        sha1 = "66f06136eefce87797539c0d63f1769cc3915984";
+      };
+    }
+    {
+      name = "babylon___babylon_7.0.0_beta.19.tgz";
+      path = fetchurl {
+        name = "babylon___babylon_7.0.0_beta.19.tgz";
+        url  = "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.19.tgz";
+        sha1 = "e928c7e807e970e0536b078ab3e0c48f9e052503";
+      };
+    }
+    {
+      name = "backo2___backo2_1.0.2.tgz";
+      path = fetchurl {
+        name = "backo2___backo2_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz";
+        sha1 = "31ab1ac8b129363463e35b3ebb69f4dfcfba7947";
+      };
+    }
+    {
+      name = "bail___bail_1.0.3.tgz";
+      path = fetchurl {
+        name = "bail___bail_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/bail/-/bail-1.0.3.tgz";
+        sha1 = "63cfb9ddbac829b02a3128cd53224be78e6c21a3";
+      };
+    }
+    {
+      name = "balanced_match___balanced_match_1.0.0.tgz";
+      path = fetchurl {
+        name = "balanced_match___balanced_match_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz";
+        sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
+      };
+    }
+    {
+      name = "base64_arraybuffer___base64_arraybuffer_0.1.5.tgz";
+      path = fetchurl {
+        name = "base64_arraybuffer___base64_arraybuffer_0.1.5.tgz";
+        url  = "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz";
+        sha1 = "73926771923b5a19747ad666aa5cd4bf9c6e9ce8";
+      };
+    }
+    {
+      name = "base64_js___base64_js_1.2.3.tgz";
+      path = fetchurl {
+        name = "base64_js___base64_js_1.2.3.tgz";
+        url  = "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.3.tgz";
+        sha1 = "fb13668233d9614cf5fb4bce95a9ba4096cdf801";
+      };
+    }
+    {
+      name = "base64id___base64id_1.0.0.tgz";
+      path = fetchurl {
+        name = "base64id___base64id_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz";
+        sha1 = "47688cb99bb6804f0e06d3e763b1c32e57d8e6b6";
+      };
+    }
+    {
+      name = "base___base_0.11.2.tgz";
+      path = fetchurl {
+        name = "base___base_0.11.2.tgz";
+        url  = "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz";
+        sha1 = "7bde5ced145b6d551a90db87f83c558b4eb48a8f";
+      };
+    }
+    {
+      name = "batch___batch_0.6.1.tgz";
+      path = fetchurl {
+        name = "batch___batch_0.6.1.tgz";
+        url  = "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz";
+        sha1 = "dc34314f4e679318093fc760272525f94bf25c16";
+      };
+    }
+    {
+      name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
+      path = fetchurl {
+        name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
+        sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
+      };
+    }
+    {
+      name = "better_assert___better_assert_1.0.2.tgz";
+      path = fetchurl {
+        name = "better_assert___better_assert_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz";
+        sha1 = "40866b9e1b9e0b55b481894311e68faffaebc522";
+      };
+    }
+    {
+      name = "bfj___bfj_6.1.1.tgz";
+      path = fetchurl {
+        name = "bfj___bfj_6.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/bfj/-/bfj-6.1.1.tgz";
+        sha1 = "05a3b7784fbd72cfa3c22e56002ef99336516c48";
+      };
+    }
+    {
+      name = "big.js___big.js_5.2.2.tgz";
+      path = fetchurl {
+        name = "big.js___big.js_5.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz";
+        sha1 = "65f0af382f578bcdc742bd9c281e9cb2d7768328";
+      };
+    }
+    {
+      name = "binary_extensions___binary_extensions_1.11.0.tgz";
+      path = fetchurl {
+        name = "binary_extensions___binary_extensions_1.11.0.tgz";
+        url  = "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz";
+        sha1 = "46aa1751fb6a2f93ee5e689bb1087d4b14c6c205";
+      };
+    }
+    {
+      name = "binary_extensions___binary_extensions_2.0.0.tgz";
+      path = fetchurl {
+        name = "binary_extensions___binary_extensions_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz";
+        sha1 = "23c0df14f6a88077f5f986c0d167ec03c3d5537c";
+      };
+    }
+    {
+      name = "binaryextensions___binaryextensions_2.1.1.tgz";
+      path = fetchurl {
+        name = "binaryextensions___binaryextensions_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.1.1.tgz";
+        sha1 = "3209a51ca4a4ad541a3b8d3d6a6d5b83a2485935";
+      };
+    }
+    {
+      name = "blob___blob_0.0.4.tgz";
+      path = fetchurl {
+        name = "blob___blob_0.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz";
+        sha1 = "bcf13052ca54463f30f9fc7e95b9a47630a94921";
+      };
+    }
+    {
+      name = "block_stream___block_stream_0.0.9.tgz";
+      path = fetchurl {
+        name = "block_stream___block_stream_0.0.9.tgz";
+        url  = "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz";
+        sha1 = "13ebfe778a03205cfe03751481ebb4b3300c126a";
+      };
+    }
+    {
+      name = "bluebird___bluebird_3.5.5.tgz";
+      path = fetchurl {
+        name = "bluebird___bluebird_3.5.5.tgz";
+        url  = "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz";
+        sha1 = "a8d0afd73251effbbd5fe384a77d73003c17a71f";
+      };
+    }
+    {
+      name = "bn.js___bn.js_4.11.8.tgz";
+      path = fetchurl {
+        name = "bn.js___bn.js_4.11.8.tgz";
+        url  = "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz";
+        sha1 = "2cde09eb5ee341f484746bb0309b3253b1b1442f";
+      };
+    }
+    {
+      name = "body_parser___body_parser_1.19.0.tgz";
+      path = fetchurl {
+        name = "body_parser___body_parser_1.19.0.tgz";
+        url  = "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz";
+        sha1 = "96b2709e57c9c4e09a6fd66a8fd979844f69f08a";
+      };
+    }
+    {
+      name = "bonjour___bonjour_3.5.0.tgz";
+      path = fetchurl {
+        name = "bonjour___bonjour_3.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz";
+        sha1 = "8e890a183d8ee9a2393b3844c691a42bcf7bc9f5";
+      };
+    }
+    {
+      name = "bootstrap_vue___bootstrap_vue_2.1.0.tgz";
+      path = fetchurl {
+        name = "bootstrap_vue___bootstrap_vue_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/bootstrap-vue/-/bootstrap-vue-2.1.0.tgz";
+        sha1 = "41c0cd265a6cea14ffe29eeea71543ec396d1789";
+      };
+    }
+    {
+      name = "bootstrap___bootstrap_4.3.1.tgz";
+      path = fetchurl {
+        name = "bootstrap___bootstrap_4.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.3.1.tgz";
+        sha1 = "280ca8f610504d99d7b6b4bfc4b68cec601704ac";
+      };
+    }
+    {
+      name = "boxen___boxen_1.3.0.tgz";
+      path = fetchurl {
+        name = "boxen___boxen_1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz";
+        sha1 = "55c6c39a8ba58d9c61ad22cd877532deb665a20b";
+      };
+    }
+    {
+      name = "brace_expansion___brace_expansion_1.1.11.tgz";
+      path = fetchurl {
+        name = "brace_expansion___brace_expansion_1.1.11.tgz";
+        url  = "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz";
+        sha1 = "3c7fcbf529d87226f3d2f52b966ff5271eb441dd";
+      };
+    }
+    {
+      name = "braces___braces_2.3.2.tgz";
+      path = fetchurl {
+        name = "braces___braces_2.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz";
+        sha1 = "5979fd3f14cd531565e5fa2df1abfff1dfaee729";
+      };
+    }
+    {
+      name = "braces___braces_3.0.2.tgz";
+      path = fetchurl {
+        name = "braces___braces_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz";
+        sha1 = "3454e1a462ee8d599e236df336cd9ea4f8afe107";
+      };
+    }
+    {
+      name = "brorand___brorand_1.1.0.tgz";
+      path = fetchurl {
+        name = "brorand___brorand_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz";
+        sha1 = "12c25efe40a45e3c323eb8675a0a0ce57b22371f";
+      };
+    }
+    {
+      name = "browser_process_hrtime___browser_process_hrtime_0.1.3.tgz";
+      path = fetchurl {
+        name = "browser_process_hrtime___browser_process_hrtime_0.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz";
+        sha1 = "616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4";
+      };
+    }
+    {
+      name = "browser_resolve___browser_resolve_1.11.3.tgz";
+      path = fetchurl {
+        name = "browser_resolve___browser_resolve_1.11.3.tgz";
+        url  = "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz";
+        sha1 = "9b7cbb3d0f510e4cb86bdbd796124d28b5890af6";
+      };
+    }
+    {
+      name = "browserify_aes___browserify_aes_1.1.1.tgz";
+      path = fetchurl {
+        name = "browserify_aes___browserify_aes_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz";
+        sha1 = "38b7ab55edb806ff2dcda1a7f1620773a477c49f";
+      };
+    }
+    {
+      name = "browserify_cipher___browserify_cipher_1.0.0.tgz";
+      path = fetchurl {
+        name = "browserify_cipher___browserify_cipher_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz";
+        sha1 = "9988244874bf5ed4e28da95666dcd66ac8fc363a";
+      };
+    }
+    {
+      name = "browserify_des___browserify_des_1.0.0.tgz";
+      path = fetchurl {
+        name = "browserify_des___browserify_des_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz";
+        sha1 = "daa277717470922ed2fe18594118a175439721dd";
+      };
+    }
+    {
+      name = "browserify_rsa___browserify_rsa_4.0.1.tgz";
+      path = fetchurl {
+        name = "browserify_rsa___browserify_rsa_4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz";
+        sha1 = "21e0abfaf6f2029cf2fafb133567a701d4135524";
+      };
+    }
+    {
+      name = "browserify_sign___browserify_sign_4.0.4.tgz";
+      path = fetchurl {
+        name = "browserify_sign___browserify_sign_4.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz";
+        sha1 = "aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298";
+      };
+    }
+    {
+      name = "browserify_zlib___browserify_zlib_0.2.0.tgz";
+      path = fetchurl {
+        name = "browserify_zlib___browserify_zlib_0.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz";
+        sha1 = "2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f";
+      };
+    }
+    {
+      name = "browserslist___browserslist_4.8.7.tgz";
+      path = fetchurl {
+        name = "browserslist___browserslist_4.8.7.tgz";
+        url  = "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.7.tgz";
+        sha1 = "ec8301ff415e6a42c949d0e66b405eb539c532d0";
+      };
+    }
+    {
+      name = "bs_logger___bs_logger_0.2.6.tgz";
+      path = fetchurl {
+        name = "bs_logger___bs_logger_0.2.6.tgz";
+        url  = "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz";
+        sha1 = "eb7d365307a72cf974cc6cda76b68354ad336bd8";
+      };
+    }
+    {
+      name = "bser___bser_2.0.0.tgz";
+      path = fetchurl {
+        name = "bser___bser_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz";
+        sha1 = "9ac78d3ed5d915804fd87acb158bc797147a1719";
+      };
+    }
+    {
+      name = "buffer_from___buffer_from_1.1.1.tgz";
+      path = fetchurl {
+        name = "buffer_from___buffer_from_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz";
+        sha1 = "32713bc028f75c02fdb710d7c7bcec1f2c6070ef";
+      };
+    }
+    {
+      name = "buffer_indexof___buffer_indexof_1.1.0.tgz";
+      path = fetchurl {
+        name = "buffer_indexof___buffer_indexof_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.0.tgz";
+        sha1 = "f54f647c4f4e25228baa656a2e57e43d5f270982";
+      };
+    }
+    {
+      name = "buffer_json___buffer_json_2.0.0.tgz";
+      path = fetchurl {
+        name = "buffer_json___buffer_json_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/buffer-json/-/buffer-json-2.0.0.tgz";
+        sha1 = "f73e13b1e42f196fe2fd67d001c7d7107edd7c23";
+      };
+    }
+    {
+      name = "buffer_xor___buffer_xor_1.0.3.tgz";
+      path = fetchurl {
+        name = "buffer_xor___buffer_xor_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz";
+        sha1 = "26e61ed1422fb70dd42e6e36729ed51d855fe8d9";
+      };
+    }
+    {
+      name = "buffer___buffer_4.9.1.tgz";
+      path = fetchurl {
+        name = "buffer___buffer_4.9.1.tgz";
+        url  = "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz";
+        sha1 = "6d1bb601b07a4efced97094132093027c95bc298";
+      };
+    }
+    {
+      name = "builtin_status_codes___builtin_status_codes_3.0.0.tgz";
+      path = fetchurl {
+        name = "builtin_status_codes___builtin_status_codes_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz";
+        sha1 = "85982878e21b98e1c66425e03d0174788f569ee8";
+      };
+    }
+    {
+      name = "bytes___bytes_3.0.0.tgz";
+      path = fetchurl {
+        name = "bytes___bytes_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz";
+        sha1 = "d32815404d689699f85a4ea4fa8755dd13a96048";
+      };
+    }
+    {
+      name = "bytes___bytes_3.1.0.tgz";
+      path = fetchurl {
+        name = "bytes___bytes_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz";
+        sha1 = "f6cf7933a360e0588fa9fde85651cdc7f805d1f6";
+      };
+    }
+    {
+      name = "cacache___cacache_12.0.3.tgz";
+      path = fetchurl {
+        name = "cacache___cacache_12.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz";
+        sha1 = "be99abba4e1bf5df461cd5a2c1071fc432573390";
+      };
+    }
+    {
+      name = "cacache___cacache_13.0.1.tgz";
+      path = fetchurl {
+        name = "cacache___cacache_13.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz";
+        sha1 = "a8000c21697089082f85287a1aec6e382024a71c";
+      };
+    }
+    {
+      name = "cache_base___cache_base_1.0.1.tgz";
+      path = fetchurl {
+        name = "cache_base___cache_base_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz";
+        sha1 = "0a7f46416831c8b662ee36fe4e7c59d76f666ab2";
+      };
+    }
+    {
+      name = "cache_loader___cache_loader_4.1.0.tgz";
+      path = fetchurl {
+        name = "cache_loader___cache_loader_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/cache-loader/-/cache-loader-4.1.0.tgz";
+        sha1 = "9948cae353aec0a1fcb1eafda2300816ec85387e";
+      };
+    }
+    {
+      name = "call_me_maybe___call_me_maybe_1.0.1.tgz";
+      path = fetchurl {
+        name = "call_me_maybe___call_me_maybe_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz";
+        sha1 = "26d208ea89e37b5cbde60250a15f031c16a4d66b";
+      };
+    }
+    {
+      name = "caller_callsite___caller_callsite_2.0.0.tgz";
+      path = fetchurl {
+        name = "caller_callsite___caller_callsite_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz";
+        sha1 = "847e0fce0a223750a9a027c54b33731ad3154134";
+      };
+    }
+    {
+      name = "caller_path___caller_path_2.0.0.tgz";
+      path = fetchurl {
+        name = "caller_path___caller_path_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz";
+        sha1 = "468f83044e369ab2010fac5f06ceee15bb2cb1f4";
+      };
+    }
+    {
+      name = "callsite___callsite_1.0.0.tgz";
+      path = fetchurl {
+        name = "callsite___callsite_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz";
+        sha1 = "280398e5d664bd74038b6f0905153e6e8af1bc20";
+      };
+    }
+    {
+      name = "callsites___callsites_2.0.0.tgz";
+      path = fetchurl {
+        name = "callsites___callsites_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz";
+        sha1 = "06eb84f00eea413da86affefacbffb36093b3c50";
+      };
+    }
+    {
+      name = "callsites___callsites_3.0.0.tgz";
+      path = fetchurl {
+        name = "callsites___callsites_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz";
+        sha1 = "fb7eb569b72ad7a45812f93fd9430a3e410b3dd3";
+      };
+    }
+    {
+      name = "camel_case___camel_case_3.0.0.tgz";
+      path = fetchurl {
+        name = "camel_case___camel_case_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz";
+        sha1 = "ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73";
+      };
+    }
+    {
+      name = "camelcase_keys___camelcase_keys_2.1.0.tgz";
+      path = fetchurl {
+        name = "camelcase_keys___camelcase_keys_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz";
+        sha1 = "308beeaffdf28119051efa1d932213c91b8f92e7";
+      };
+    }
+    {
+      name = "camelcase_keys___camelcase_keys_4.2.0.tgz";
+      path = fetchurl {
+        name = "camelcase_keys___camelcase_keys_4.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz";
+        sha1 = "a2aa5fb1af688758259c32c141426d78923b9b77";
+      };
+    }
+    {
+      name = "camelcase___camelcase_2.1.1.tgz";
+      path = fetchurl {
+        name = "camelcase___camelcase_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz";
+        sha1 = "7c1d16d679a1bbe59ca02cacecfb011e201f5a1f";
+      };
+    }
+    {
+      name = "camelcase___camelcase_3.0.0.tgz";
+      path = fetchurl {
+        name = "camelcase___camelcase_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz";
+        sha1 = "32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a";
+      };
+    }
+    {
+      name = "camelcase___camelcase_4.1.0.tgz";
+      path = fetchurl {
+        name = "camelcase___camelcase_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz";
+        sha1 = "d545635be1e33c542649c69173e5de6acfae34dd";
+      };
+    }
+    {
+      name = "camelcase___camelcase_5.3.1.tgz";
+      path = fetchurl {
+        name = "camelcase___camelcase_5.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz";
+        sha1 = "e3c9b31569e106811df242f715725a1f4c494320";
+      };
+    }
+    {
+      name = "caniuse_lite___caniuse_lite_1.0.30001030.tgz";
+      path = fetchurl {
+        name = "caniuse_lite___caniuse_lite_1.0.30001030.tgz";
+        url  = "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz";
+        sha1 = "78076c4c6d67d3e41d6eb9399853fb27fe6e44ee";
+      };
+    }
+    {
+      name = "capture_exit___capture_exit_2.0.0.tgz";
+      path = fetchurl {
+        name = "capture_exit___capture_exit_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz";
+        sha1 = "fb953bfaebeb781f62898239dabb426d08a509a4";
+      };
+    }
+    {
+      name = "capture_stack_trace___capture_stack_trace_1.0.0.tgz";
+      path = fetchurl {
+        name = "capture_stack_trace___capture_stack_trace_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz";
+        sha1 = "4a6fa07399c26bba47f0b2496b4d0fb408c5550d";
+      };
+    }
+    {
+      name = "caseless___caseless_0.12.0.tgz";
+      path = fetchurl {
+        name = "caseless___caseless_0.12.0.tgz";
+        url  = "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz";
+        sha1 = "1b681c21ff84033c826543090689420d187151dc";
+      };
+    }
+    {
+      name = "catharsis___catharsis_0.8.9.tgz";
+      path = fetchurl {
+        name = "catharsis___catharsis_0.8.9.tgz";
+        url  = "https://registry.yarnpkg.com/catharsis/-/catharsis-0.8.9.tgz";
+        sha1 = "98cc890ca652dd2ef0e70b37925310ff9e90fc8b";
+      };
+    }
+    {
+      name = "ccount___ccount_1.0.3.tgz";
+      path = fetchurl {
+        name = "ccount___ccount_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/ccount/-/ccount-1.0.3.tgz";
+        sha1 = "f1cec43f332e2ea5a569fd46f9f5bde4e6102aff";
+      };
+    }
+    {
+      name = "chalk___chalk_2.4.2.tgz";
+      path = fetchurl {
+        name = "chalk___chalk_2.4.2.tgz";
+        url  = "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz";
+        sha1 = "cd42541677a54333cf541a49108c1432b44c9424";
+      };
+    }
+    {
+      name = "chalk___chalk_1.1.3.tgz";
+      path = fetchurl {
+        name = "chalk___chalk_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz";
+        sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
+      };
+    }
+    {
+      name = "character_entities_html4___character_entities_html4_1.1.2.tgz";
+      path = fetchurl {
+        name = "character_entities_html4___character_entities_html4_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.2.tgz";
+        sha1 = "c44fdde3ce66b52e8d321d6c1bf46101f0150610";
+      };
+    }
+    {
+      name = "character_entities_legacy___character_entities_legacy_1.1.2.tgz";
+      path = fetchurl {
+        name = "character_entities_legacy___character_entities_legacy_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz";
+        sha1 = "7c6defb81648498222c9855309953d05f4d63a9c";
+      };
+    }
+    {
+      name = "character_entities___character_entities_1.2.2.tgz";
+      path = fetchurl {
+        name = "character_entities___character_entities_1.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.2.tgz";
+        sha1 = "58c8f371c0774ef0ba9b2aca5f00d8f100e6e363";
+      };
+    }
+    {
+      name = "character_reference_invalid___character_reference_invalid_1.1.2.tgz";
+      path = fetchurl {
+        name = "character_reference_invalid___character_reference_invalid_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz";
+        sha1 = "21e421ad3d84055952dab4a43a04e73cd425d3ed";
+      };
+    }
+    {
+      name = "chardet___chardet_0.7.0.tgz";
+      path = fetchurl {
+        name = "chardet___chardet_0.7.0.tgz";
+        url  = "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz";
+        sha1 = "90094849f0937f2eedc2425d0d28a9e5f0cbad9e";
+      };
+    }
+    {
+      name = "charenc___charenc_0.0.2.tgz";
+      path = fetchurl {
+        name = "charenc___charenc_0.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz";
+        sha1 = "c0a1d2f3a7092e03774bfa83f14c0fc5790a8667";
+      };
+    }
+    {
+      name = "chart.js___chart.js_2.7.2.tgz";
+      path = fetchurl {
+        name = "chart.js___chart.js_2.7.2.tgz";
+        url  = "https://registry.yarnpkg.com/chart.js/-/chart.js-2.7.2.tgz";
+        sha1 = "3c9fde4dc5b95608211bdefeda7e5d33dffa5714";
+      };
+    }
+    {
+      name = "chartjs_color_string___chartjs_color_string_0.5.0.tgz";
+      path = fetchurl {
+        name = "chartjs_color_string___chartjs_color_string_0.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/chartjs-color-string/-/chartjs-color-string-0.5.0.tgz";
+        sha1 = "8d3752d8581d86687c35bfe2cb80ac5213ceb8c1";
+      };
+    }
+    {
+      name = "chartjs_color___chartjs_color_2.2.0.tgz";
+      path = fetchurl {
+        name = "chartjs_color___chartjs_color_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/chartjs-color/-/chartjs-color-2.2.0.tgz";
+        sha1 = "84a2fb755787ed85c39dd6dd8c7b1d88429baeae";
+      };
+    }
+    {
+      name = "check_types___check_types_7.3.0.tgz";
+      path = fetchurl {
+        name = "check_types___check_types_7.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/check-types/-/check-types-7.3.0.tgz";
+        sha1 = "468f571a4435c24248f5fd0cb0e8d87c3c341e7d";
+      };
+    }
+    {
+      name = "chokidar___chokidar_2.1.8.tgz";
+      path = fetchurl {
+        name = "chokidar___chokidar_2.1.8.tgz";
+        url  = "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz";
+        sha1 = "804b3a7b6a99358c3c5c61e71d8728f041cff917";
+      };
+    }
+    {
+      name = "chokidar___chokidar_3.0.2.tgz";
+      path = fetchurl {
+        name = "chokidar___chokidar_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/chokidar/-/chokidar-3.0.2.tgz";
+        sha1 = "0d1cd6d04eb2df0327446188cd13736a3367d681";
+      };
+    }
+    {
+      name = "chownr___chownr_1.1.3.tgz";
+      path = fetchurl {
+        name = "chownr___chownr_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz";
+        sha1 = "42d837d5239688d55f303003a508230fa6727142";
+      };
+    }
+    {
+      name = "chrome_trace_event___chrome_trace_event_1.0.2.tgz";
+      path = fetchurl {
+        name = "chrome_trace_event___chrome_trace_event_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz";
+        sha1 = "234090ee97c7d4ad1a2c4beae27505deffc608a4";
+      };
+    }
+    {
+      name = "ci_info___ci_info_1.6.0.tgz";
+      path = fetchurl {
+        name = "ci_info___ci_info_1.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz";
+        sha1 = "2ca20dbb9ceb32d4524a683303313f0304b1e497";
+      };
+    }
+    {
+      name = "ci_info___ci_info_2.0.0.tgz";
+      path = fetchurl {
+        name = "ci_info___ci_info_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz";
+        sha1 = "67a9e964be31a51e15e5010d58e6f12834002f46";
+      };
+    }
+    {
+      name = "cipher_base___cipher_base_1.0.4.tgz";
+      path = fetchurl {
+        name = "cipher_base___cipher_base_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz";
+        sha1 = "8760e4ecc272f4c363532f926d874aae2c1397de";
+      };
+    }
+    {
+      name = "class_utils___class_utils_0.3.6.tgz";
+      path = fetchurl {
+        name = "class_utils___class_utils_0.3.6.tgz";
+        url  = "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz";
+        sha1 = "f93369ae8b9a7ce02fd41faad0ca83033190c463";
+      };
+    }
+    {
+      name = "classlist_polyfill___classlist_polyfill_1.2.0.tgz";
+      path = fetchurl {
+        name = "classlist_polyfill___classlist_polyfill_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/classlist-polyfill/-/classlist-polyfill-1.2.0.tgz";
+        sha1 = "935bc2dfd9458a876b279617514638bcaa964a2e";
+      };
+    }
+    {
+      name = "clean_css___clean_css_4.2.1.tgz";
+      path = fetchurl {
+        name = "clean_css___clean_css_4.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz";
+        sha1 = "2d411ef76b8569b6d0c84068dabe85b0aa5e5c17";
+      };
+    }
+    {
+      name = "clean_stack___clean_stack_2.2.0.tgz";
+      path = fetchurl {
+        name = "clean_stack___clean_stack_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz";
+        sha1 = "ee8472dbb129e727b31e8a10a427dee9dfe4008b";
+      };
+    }
+    {
+      name = "cli_boxes___cli_boxes_1.0.0.tgz";
+      path = fetchurl {
+        name = "cli_boxes___cli_boxes_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz";
+        sha1 = "4fa917c3e59c94a004cd61f8ee509da651687143";
+      };
+    }
+    {
+      name = "cli_cursor___cli_cursor_3.1.0.tgz";
+      path = fetchurl {
+        name = "cli_cursor___cli_cursor_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz";
+        sha1 = "264305a7ae490d1d03bf0c9ba7c925d1753af307";
+      };
+    }
+    {
+      name = "cli_width___cli_width_2.2.0.tgz";
+      path = fetchurl {
+        name = "cli_width___cli_width_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz";
+        sha1 = "ff19ede8a9a5e579324147b0c11f0fbcbabed639";
+      };
+    }
+    {
+      name = "clipboard___clipboard_1.7.1.tgz";
+      path = fetchurl {
+        name = "clipboard___clipboard_1.7.1.tgz";
+        url  = "https://registry.yarnpkg.com/clipboard/-/clipboard-1.7.1.tgz";
+        sha1 = "360d6d6946e99a7a1fef395e42ba92b5e9b5a16b";
+      };
+    }
+    {
+      name = "cliui___cliui_3.2.0.tgz";
+      path = fetchurl {
+        name = "cliui___cliui_3.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz";
+        sha1 = "120601537a916d29940f934da3b48d585a39213d";
+      };
+    }
+    {
+      name = "cliui___cliui_4.1.0.tgz";
+      path = fetchurl {
+        name = "cliui___cliui_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz";
+        sha1 = "348422dbe82d800b3022eef4f6ac10bf2e4d1b49";
+      };
+    }
+    {
+      name = "cliui___cliui_5.0.0.tgz";
+      path = fetchurl {
+        name = "cliui___cliui_5.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz";
+        sha1 = "deefcfdb2e800784aa34f46fa08e06851c7bbbc5";
+      };
+    }
+    {
+      name = "clone_deep___clone_deep_4.0.1.tgz";
+      path = fetchurl {
+        name = "clone_deep___clone_deep_4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz";
+        sha1 = "c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387";
+      };
+    }
+    {
+      name = "clone_regexp___clone_regexp_2.2.0.tgz";
+      path = fetchurl {
+        name = "clone_regexp___clone_regexp_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-2.2.0.tgz";
+        sha1 = "7d65e00885cd8796405c35a737e7a86b7429e36f";
+      };
+    }
+    {
+      name = "co___co_4.6.0.tgz";
+      path = fetchurl {
+        name = "co___co_4.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz";
+        sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184";
+      };
+    }
+    {
+      name = "code_point_at___code_point_at_1.1.0.tgz";
+      path = fetchurl {
+        name = "code_point_at___code_point_at_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz";
+        sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
+      };
+    }
+    {
+      name = "codemirror___codemirror_5.53.2.tgz";
+      path = fetchurl {
+        name = "codemirror___codemirror_5.53.2.tgz";
+        url  = "https://registry.yarnpkg.com/codemirror/-/codemirror-5.53.2.tgz";
+        sha1 = "9799121cf8c50809cca487304e9de3a74d33f428";
+      };
+    }
+    {
+      name = "codesandbox_api___codesandbox_api_0.0.23.tgz";
+      path = fetchurl {
+        name = "codesandbox_api___codesandbox_api_0.0.23.tgz";
+        url  = "https://registry.yarnpkg.com/codesandbox-api/-/codesandbox-api-0.0.23.tgz";
+        sha1 = "bf650a21b5f3c2369e03f0c19d10b4e2ba255b4f";
+      };
+    }
+    {
+      name = "codesandbox_import_util_types___codesandbox_import_util_types_1.2.11.tgz";
+      path = fetchurl {
+        name = "codesandbox_import_util_types___codesandbox_import_util_types_1.2.11.tgz";
+        url  = "https://registry.yarnpkg.com/codesandbox-import-util-types/-/codesandbox-import-util-types-1.2.11.tgz";
+        sha1 = "68e812f21d6b309e9a52eec5cf027c3e63b4c703";
+      };
+    }
+    {
+      name = "codesandbox_import_utils___codesandbox_import_utils_1.2.11.tgz";
+      path = fetchurl {
+        name = "codesandbox_import_utils___codesandbox_import_utils_1.2.11.tgz";
+        url  = "https://registry.yarnpkg.com/codesandbox-import-utils/-/codesandbox-import-utils-1.2.11.tgz";
+        sha1 = "b88423a4a7c785175c784c84e87f5950820280e1";
+      };
+    }
+    {
+      name = "collapse_white_space___collapse_white_space_1.0.5.tgz";
+      path = fetchurl {
+        name = "collapse_white_space___collapse_white_space_1.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.5.tgz";
+        sha1 = "c2495b699ab1ed380d29a1091e01063e75dbbe3a";
+      };
+    }
+    {
+      name = "collection_visit___collection_visit_1.0.0.tgz";
+      path = fetchurl {
+        name = "collection_visit___collection_visit_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz";
+        sha1 = "4bc0373c164bc3291b4d368c829cf1a80a59dca0";
+      };
+    }
+    {
+      name = "color_convert___color_convert_0.5.3.tgz";
+      path = fetchurl {
+        name = "color_convert___color_convert_0.5.3.tgz";
+        url  = "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz";
+        sha1 = "bdb6c69ce660fadffe0b0007cc447e1b9f7282bd";
+      };
+    }
+    {
+      name = "color_convert___color_convert_1.9.3.tgz";
+      path = fetchurl {
+        name = "color_convert___color_convert_1.9.3.tgz";
+        url  = "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz";
+        sha1 = "bb71850690e1f136567de629d2d5471deda4c1e8";
+      };
+    }
+    {
+      name = "color_name___color_name_1.1.3.tgz";
+      path = fetchurl {
+        name = "color_name___color_name_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz";
+        sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
+      };
+    }
+    {
+      name = "colors___colors_1.3.3.tgz";
+      path = fetchurl {
+        name = "colors___colors_1.3.3.tgz";
+        url  = "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz";
+        sha1 = "39e005d546afe01e01f9c4ca8fa50f686a01205d";
+      };
+    }
+    {
+      name = "combined_stream___combined_stream_1.0.7.tgz";
+      path = fetchurl {
+        name = "combined_stream___combined_stream_1.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz";
+        sha1 = "2d1d24317afb8abe95d6d2c0b07b57813539d828";
+      };
+    }
+    {
+      name = "commander___commander_2.20.0.tgz";
+      path = fetchurl {
+        name = "commander___commander_2.20.0.tgz";
+        url  = "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz";
+        sha1 = "d58bb2b5c1ee8f87b0d340027e9e94e222c5a422";
+      };
+    }
+    {
+      name = "commander___commander_2.9.0.tgz";
+      path = fetchurl {
+        name = "commander___commander_2.9.0.tgz";
+        url  = "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz";
+        sha1 = "9c99094176e12240cb22d6c5146098400fe0f7d4";
+      };
+    }
+    {
+      name = "commondir___commondir_1.0.1.tgz";
+      path = fetchurl {
+        name = "commondir___commondir_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz";
+        sha1 = "ddd800da0c66127393cca5950ea968a3aaf1253b";
+      };
+    }
+    {
+      name = "compare_versions___compare_versions_3.5.1.tgz";
+      path = fetchurl {
+        name = "compare_versions___compare_versions_3.5.1.tgz";
+        url  = "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.5.1.tgz";
+        sha1 = "26e1f5cf0d48a77eced5046b9f67b6b61075a393";
+      };
+    }
+    {
+      name = "component_bind___component_bind_1.0.0.tgz";
+      path = fetchurl {
+        name = "component_bind___component_bind_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz";
+        sha1 = "00c608ab7dcd93897c0009651b1d3a8e1e73bbd1";
+      };
+    }
+    {
+      name = "component_emitter___component_emitter_1.2.1.tgz";
+      path = fetchurl {
+        name = "component_emitter___component_emitter_1.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz";
+        sha1 = "137918d6d78283f7df7a6b7c5a63e140e69425e6";
+      };
+    }
+    {
+      name = "component_inherit___component_inherit_0.0.3.tgz";
+      path = fetchurl {
+        name = "component_inherit___component_inherit_0.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz";
+        sha1 = "645fc4adf58b72b649d5cae65135619db26ff143";
+      };
+    }
+    {
+      name = "compressible___compressible_2.0.17.tgz";
+      path = fetchurl {
+        name = "compressible___compressible_2.0.17.tgz";
+        url  = "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz";
+        sha1 = "6e8c108a16ad58384a977f3a482ca20bff2f38c1";
+      };
+    }
+    {
+      name = "compression_webpack_plugin___compression_webpack_plugin_3.0.1.tgz";
+      path = fetchurl {
+        name = "compression_webpack_plugin___compression_webpack_plugin_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-3.0.1.tgz";
+        sha1 = "be7a343e6dfbccbd64a77c5fbe29627d140fc321";
+      };
+    }
+    {
+      name = "compression___compression_1.7.4.tgz";
+      path = fetchurl {
+        name = "compression___compression_1.7.4.tgz";
+        url  = "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz";
+        sha1 = "95523eff170ca57c29a0ca41e6fe131f41e5bb8f";
+      };
+    }
+    {
+      name = "concat_map___concat_map_0.0.1.tgz";
+      path = fetchurl {
+        name = "concat_map___concat_map_0.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz";
+        sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
+      };
+    }
+    {
+      name = "concat_stream___concat_stream_1.6.2.tgz";
+      path = fetchurl {
+        name = "concat_stream___concat_stream_1.6.2.tgz";
+        url  = "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz";
+        sha1 = "904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34";
+      };
+    }
+    {
+      name = "condense_newlines___condense_newlines_0.2.1.tgz";
+      path = fetchurl {
+        name = "condense_newlines___condense_newlines_0.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/condense-newlines/-/condense-newlines-0.2.1.tgz";
+        sha1 = "3de985553139475d32502c83b02f60684d24c55f";
+      };
+    }
+    {
+      name = "config_chain___config_chain_1.1.12.tgz";
+      path = fetchurl {
+        name = "config_chain___config_chain_1.1.12.tgz";
+        url  = "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz";
+        sha1 = "0fde8d091200eb5e808caf25fe618c02f48e4efa";
+      };
+    }
+    {
+      name = "configstore___configstore_3.1.1.tgz";
+      path = fetchurl {
+        name = "configstore___configstore_3.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz";
+        sha1 = "094ee662ab83fad9917678de114faaea8fcdca90";
+      };
+    }
+    {
+      name = "confusing_browser_globals___confusing_browser_globals_1.0.9.tgz";
+      path = fetchurl {
+        name = "confusing_browser_globals___confusing_browser_globals_1.0.9.tgz";
+        url  = "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz";
+        sha1 = "72bc13b483c0276801681871d4898516f8f54fdd";
+      };
+    }
+    {
+      name = "connect_history_api_fallback___connect_history_api_fallback_1.6.0.tgz";
+      path = fetchurl {
+        name = "connect_history_api_fallback___connect_history_api_fallback_1.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz";
+        sha1 = "8b32089359308d111115d81cad3fceab888f97bc";
+      };
+    }
+    {
+      name = "connect___connect_3.6.6.tgz";
+      path = fetchurl {
+        name = "connect___connect_3.6.6.tgz";
+        url  = "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz";
+        sha1 = "09eff6c55af7236e137135a72574858b6786f524";
+      };
+    }
+    {
+      name = "consola___consola_2.10.1.tgz";
+      path = fetchurl {
+        name = "consola___consola_2.10.1.tgz";
+        url  = "https://registry.yarnpkg.com/consola/-/consola-2.10.1.tgz";
+        sha1 = "4693edba714677c878d520e4c7e4f69306b4b927";
+      };
+    }
+    {
+      name = "console_browserify___console_browserify_1.1.0.tgz";
+      path = fetchurl {
+        name = "console_browserify___console_browserify_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz";
+        sha1 = "f0241c45730a9fc6323b206dbf38edc741d0bb10";
+      };
+    }
+    {
+      name = "console_control_strings___console_control_strings_1.1.0.tgz";
+      path = fetchurl {
+        name = "console_control_strings___console_control_strings_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz";
+        sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
+      };
+    }
+    {
+      name = "consolidate___consolidate_0.15.1.tgz";
+      path = fetchurl {
+        name = "consolidate___consolidate_0.15.1.tgz";
+        url  = "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz";
+        sha1 = "21ab043235c71a07d45d9aad98593b0dba56bab7";
+      };
+    }
+    {
+      name = "constants_browserify___constants_browserify_1.0.0.tgz";
+      path = fetchurl {
+        name = "constants_browserify___constants_browserify_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz";
+        sha1 = "c20b96d8c617748aaf1c16021760cd27fcb8cb75";
+      };
+    }
+    {
+      name = "contains_path___contains_path_0.1.0.tgz";
+      path = fetchurl {
+        name = "contains_path___contains_path_0.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz";
+        sha1 = "fe8cf184ff6670b6baef01a9d4861a5cbec4120a";
+      };
+    }
+    {
+      name = "content_disposition___content_disposition_0.5.3.tgz";
+      path = fetchurl {
+        name = "content_disposition___content_disposition_0.5.3.tgz";
+        url  = "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz";
+        sha1 = "e130caf7e7279087c5616c2007d0485698984fbd";
+      };
+    }
+    {
+      name = "content_type___content_type_1.0.4.tgz";
+      path = fetchurl {
+        name = "content_type___content_type_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz";
+        sha1 = "e138cc75e040c727b1966fe5e5f8c9aee256fe3b";
+      };
+    }
+    {
+      name = "convert_source_map___convert_source_map_1.7.0.tgz";
+      path = fetchurl {
+        name = "convert_source_map___convert_source_map_1.7.0.tgz";
+        url  = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz";
+        sha1 = "17a2cb882d7f77d3490585e2ce6c524424a3a442";
+      };
+    }
+    {
+      name = "cookie_signature___cookie_signature_1.0.6.tgz";
+      path = fetchurl {
+        name = "cookie_signature___cookie_signature_1.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz";
+        sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
+      };
+    }
+    {
+      name = "cookie___cookie_0.3.1.tgz";
+      path = fetchurl {
+        name = "cookie___cookie_0.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz";
+        sha1 = "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb";
+      };
+    }
+    {
+      name = "cookie___cookie_0.4.0.tgz";
+      path = fetchurl {
+        name = "cookie___cookie_0.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz";
+        sha1 = "beb437e7022b3b6d49019d088665303ebe9c14ba";
+      };
+    }
+    {
+      name = "copy_concurrently___copy_concurrently_1.0.5.tgz";
+      path = fetchurl {
+        name = "copy_concurrently___copy_concurrently_1.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz";
+        sha1 = "92297398cae34937fcafd6ec8139c18051f0b5e0";
+      };
+    }
+    {
+      name = "copy_descriptor___copy_descriptor_0.1.1.tgz";
+      path = fetchurl {
+        name = "copy_descriptor___copy_descriptor_0.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz";
+        sha1 = "676f6eb3c39997c2ee1ac3a924fd6124748f578d";
+      };
+    }
+    {
+      name = "copy_to_clipboard___copy_to_clipboard_3.2.0.tgz";
+      path = fetchurl {
+        name = "copy_to_clipboard___copy_to_clipboard_3.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.2.0.tgz";
+        sha1 = "d2724a3ccbfed89706fac8a894872c979ac74467";
+      };
+    }
+    {
+      name = "copy_webpack_plugin___copy_webpack_plugin_5.1.1.tgz";
+      path = fetchurl {
+        name = "copy_webpack_plugin___copy_webpack_plugin_5.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz";
+        sha1 = "5481a03dea1123d88a988c6ff8b78247214f0b88";
+      };
+    }
+    {
+      name = "core_js_compat___core_js_compat_3.6.4.tgz";
+      path = fetchurl {
+        name = "core_js_compat___core_js_compat_3.6.4.tgz";
+        url  = "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz";
+        sha1 = "938476569ebb6cda80d339bcf199fae4f16fff17";
+      };
+    }
+    {
+      name = "core_js___core_js_3.6.4.tgz";
+      path = fetchurl {
+        name = "core_js___core_js_3.6.4.tgz";
+        url  = "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz";
+        sha1 = "440a83536b458114b9cb2ac1580ba377dc470647";
+      };
+    }
+    {
+      name = "core_js___core_js_2.3.0.tgz";
+      path = fetchurl {
+        name = "core_js___core_js_2.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz";
+        sha1 = "fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65";
+      };
+    }
+    {
+      name = "core_util_is___core_util_is_1.0.2.tgz";
+      path = fetchurl {
+        name = "core_util_is___core_util_is_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz";
+        sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
+      };
+    }
+    {
+      name = "cosmiconfig___cosmiconfig_5.2.1.tgz";
+      path = fetchurl {
+        name = "cosmiconfig___cosmiconfig_5.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz";
+        sha1 = "040f726809c591e77a17c0a3626ca45b4f168b1a";
+      };
+    }
+    {
+      name = "create_ecdh___create_ecdh_4.0.0.tgz";
+      path = fetchurl {
+        name = "create_ecdh___create_ecdh_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz";
+        sha1 = "888c723596cdf7612f6498233eebd7a35301737d";
+      };
+    }
+    {
+      name = "create_error_class___create_error_class_3.0.2.tgz";
+      path = fetchurl {
+        name = "create_error_class___create_error_class_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz";
+        sha1 = "06be7abef947a3f14a30fd610671d401bca8b7b6";
+      };
+    }
+    {
+      name = "create_hash___create_hash_1.1.3.tgz";
+      path = fetchurl {
+        name = "create_hash___create_hash_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz";
+        sha1 = "606042ac8b9262750f483caddab0f5819172d8fd";
+      };
+    }
+    {
+      name = "create_hmac___create_hmac_1.1.6.tgz";
+      path = fetchurl {
+        name = "create_hmac___create_hmac_1.1.6.tgz";
+        url  = "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz";
+        sha1 = "acb9e221a4e17bdb076e90657c42b93e3726cf06";
+      };
+    }
+    {
+      name = "cropper___cropper_2.3.0.tgz";
+      path = fetchurl {
+        name = "cropper___cropper_2.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/cropper/-/cropper-2.3.0.tgz";
+        sha1 = "607461d4e7aa7a7fe15a26834b14b7f0c2801562";
+      };
+    }
+    {
+      name = "cross_spawn___cross_spawn_6.0.5.tgz";
+      path = fetchurl {
+        name = "cross_spawn___cross_spawn_6.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz";
+        sha1 = "4a5ec7c64dfae22c3a14124dbacdee846d80cbc4";
+      };
+    }
+    {
+      name = "cross_spawn___cross_spawn_3.0.1.tgz";
+      path = fetchurl {
+        name = "cross_spawn___cross_spawn_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz";
+        sha1 = "1256037ecb9f0c5f79e3d6ef135e30770184b982";
+      };
+    }
+    {
+      name = "cross_spawn___cross_spawn_5.1.0.tgz";
+      path = fetchurl {
+        name = "cross_spawn___cross_spawn_5.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz";
+        sha1 = "e8bd0efee58fcff6f8f94510a0a554bbfa235449";
+      };
+    }
+    {
+      name = "crypt___crypt_0.0.2.tgz";
+      path = fetchurl {
+        name = "crypt___crypt_0.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz";
+        sha1 = "88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b";
+      };
+    }
+    {
+      name = "crypto_browserify___crypto_browserify_3.12.0.tgz";
+      path = fetchurl {
+        name = "crypto_browserify___crypto_browserify_3.12.0.tgz";
+        url  = "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz";
+        sha1 = "396cf9f3137f03e4b8e532c58f698254e00f80ec";
+      };
+    }
+    {
+      name = "crypto_random_string___crypto_random_string_1.0.0.tgz";
+      path = fetchurl {
+        name = "crypto_random_string___crypto_random_string_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz";
+        sha1 = "a230f64f568310e1498009940790ec99545bca7e";
+      };
+    }
+    {
+      name = "crypto_random_string___crypto_random_string_3.0.1.tgz";
+      path = fetchurl {
+        name = "crypto_random_string___crypto_random_string_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-3.0.1.tgz";
+        sha1 = "29d7dc759d577a768afb3b7b2765dd9bd7ffe36a";
+      };
+    }
+    {
+      name = "css_b64_images___css_b64_images_0.2.5.tgz";
+      path = fetchurl {
+        name = "css_b64_images___css_b64_images_0.2.5.tgz";
+        url  = "https://registry.yarnpkg.com/css-b64-images/-/css-b64-images-0.2.5.tgz";
+        sha1 = "42005d83204b2b4a5d93b6b1a5644133b5927a02";
+      };
+    }
+    {
+      name = "css_loader___css_loader_2.1.1.tgz";
+      path = fetchurl {
+        name = "css_loader___css_loader_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz";
+        sha1 = "d8254f72e412bb2238bb44dd674ffbef497333ea";
+      };
+    }
+    {
+      name = "css_selector_parser___css_selector_parser_1.3.0.tgz";
+      path = fetchurl {
+        name = "css_selector_parser___css_selector_parser_1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/css-selector-parser/-/css-selector-parser-1.3.0.tgz";
+        sha1 = "5f1ad43e2d8eefbfdc304fcd39a521664943e3eb";
+      };
+    }
+    {
+      name = "css___css_2.2.4.tgz";
+      path = fetchurl {
+        name = "css___css_2.2.4.tgz";
+        url  = "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz";
+        sha1 = "c646755c73971f2bba6a601e2cf2fd71b1298929";
+      };
+    }
+    {
+      name = "cssesc___cssesc_2.0.0.tgz";
+      path = fetchurl {
+        name = "cssesc___cssesc_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz";
+        sha1 = "3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703";
+      };
+    }
+    {
+      name = "cssesc___cssesc_3.0.0.tgz";
+      path = fetchurl {
+        name = "cssesc___cssesc_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz";
+        sha1 = "37741919903b868565e1c09ea747445cd18983ee";
+      };
+    }
+    {
+      name = "cssfontparser___cssfontparser_1.2.1.tgz";
+      path = fetchurl {
+        name = "cssfontparser___cssfontparser_1.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/cssfontparser/-/cssfontparser-1.2.1.tgz";
+        sha1 = "f4022fc8f9700c68029d542084afbaf425a3f3e3";
+      };
+    }
+    {
+      name = "cssom___cssom_0.3.4.tgz";
+      path = fetchurl {
+        name = "cssom___cssom_0.3.4.tgz";
+        url  = "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz";
+        sha1 = "8cd52e8a3acfd68d3aed38ee0a640177d2f9d797";
+      };
+    }
+    {
+      name = "cssstyle___cssstyle_1.1.1.tgz";
+      path = fetchurl {
+        name = "cssstyle___cssstyle_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz";
+        sha1 = "18b038a9c44d65f7a8e428a653b9f6fe42faf5fb";
+      };
+    }
+    {
+      name = "currently_unhandled___currently_unhandled_0.4.1.tgz";
+      path = fetchurl {
+        name = "currently_unhandled___currently_unhandled_0.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz";
+        sha1 = "988df33feab191ef799a61369dd76c17adf957ea";
+      };
+    }
+    {
+      name = "custom_event___custom_event_1.0.1.tgz";
+      path = fetchurl {
+        name = "custom_event___custom_event_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz";
+        sha1 = "5d02a46850adf1b4a317946a3928fccb5bfd0425";
+      };
+    }
+    {
+      name = "custom_jquery_matchers___custom_jquery_matchers_2.1.0.tgz";
+      path = fetchurl {
+        name = "custom_jquery_matchers___custom_jquery_matchers_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/custom-jquery-matchers/-/custom-jquery-matchers-2.1.0.tgz";
+        sha1 = "e5988fa9715c416b0986b372563f872d9e91e024";
+      };
+    }
+    {
+      name = "cyclist___cyclist_0.2.2.tgz";
+      path = fetchurl {
+        name = "cyclist___cyclist_0.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz";
+        sha1 = "1b33792e11e914a2fd6d6ed6447464444e5fa640";
+      };
+    }
+    {
+      name = "d3_array___d3_array_1.2.1.tgz";
+      path = fetchurl {
+        name = "d3_array___d3_array_1.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.1.tgz";
+        sha1 = "d1ca33de2f6ac31efadb8e050a021d7e2396d5dc";
+      };
+    }
+    {
+      name = "d3_axis___d3_axis_1.0.8.tgz";
+      path = fetchurl {
+        name = "d3_axis___d3_axis_1.0.8.tgz";
+        url  = "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.8.tgz";
+        sha1 = "31a705a0b535e65759de14173a31933137f18efa";
+      };
+    }
+    {
+      name = "d3_brush___d3_brush_1.0.4.tgz";
+      path = fetchurl {
+        name = "d3_brush___d3_brush_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.0.4.tgz";
+        sha1 = "00c2f238019f24f6c0a194a26d41a1530ffe7bc4";
+      };
+    }
+    {
+      name = "d3_chord___d3_chord_1.0.4.tgz";
+      path = fetchurl {
+        name = "d3_chord___d3_chord_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/d3-chord/-/d3-chord-1.0.4.tgz";
+        sha1 = "7dec4f0ba886f713fe111c45f763414f6f74ca2c";
+      };
+    }
+    {
+      name = "d3_collection___d3_collection_1.0.4.tgz";
+      path = fetchurl {
+        name = "d3_collection___d3_collection_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.4.tgz";
+        sha1 = "342dfd12837c90974f33f1cc0a785aea570dcdc2";
+      };
+    }
+    {
+      name = "d3_color___d3_color_1.0.3.tgz";
+      path = fetchurl {
+        name = "d3_color___d3_color_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/d3-color/-/d3-color-1.0.3.tgz";
+        sha1 = "bc7643fca8e53a8347e2fbdaffa236796b58509b";
+      };
+    }
+    {
+      name = "d3_contour___d3_contour_1.3.2.tgz";
+      path = fetchurl {
+        name = "d3_contour___d3_contour_1.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/d3-contour/-/d3-contour-1.3.2.tgz";
+        sha1 = "652aacd500d2264cb3423cee10db69f6f59bead3";
+      };
+    }
+    {
+      name = "d3_dispatch___d3_dispatch_1.0.3.tgz";
+      path = fetchurl {
+        name = "d3_dispatch___d3_dispatch_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.3.tgz";
+        sha1 = "46e1491eaa9b58c358fce5be4e8bed626e7871f8";
+      };
+    }
+    {
+      name = "d3_drag___d3_drag_1.2.1.tgz";
+      path = fetchurl {
+        name = "d3_drag___d3_drag_1.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.1.tgz";
+        sha1 = "df8dd4c502fb490fc7462046a8ad98a5c479282d";
+      };
+    }
+    {
+      name = "d3_dsv___d3_dsv_1.0.8.tgz";
+      path = fetchurl {
+        name = "d3_dsv___d3_dsv_1.0.8.tgz";
+        url  = "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.0.8.tgz";
+        sha1 = "907e240d57b386618dc56468bacfe76bf19764ae";
+      };
+    }
+    {
+      name = "d3_ease___d3_ease_1.0.3.tgz";
+      path = fetchurl {
+        name = "d3_ease___d3_ease_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.3.tgz";
+        sha1 = "68bfbc349338a380c44d8acc4fbc3304aa2d8c0e";
+      };
+    }
+    {
+      name = "d3_fetch___d3_fetch_1.1.2.tgz";
+      path = fetchurl {
+        name = "d3_fetch___d3_fetch_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-1.1.2.tgz";
+        sha1 = "957c8fbc6d4480599ba191b1b2518bf86b3e1be2";
+      };
+    }
+    {
+      name = "d3_force___d3_force_1.1.0.tgz";
+      path = fetchurl {
+        name = "d3_force___d3_force_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/d3-force/-/d3-force-1.1.0.tgz";
+        sha1 = "cebf3c694f1078fcc3d4daf8e567b2fbd70d4ea3";
+      };
+    }
+    {
+      name = "d3_format___d3_format_1.2.2.tgz";
+      path = fetchurl {
+        name = "d3_format___d3_format_1.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/d3-format/-/d3-format-1.2.2.tgz";
+        sha1 = "1a39c479c8a57fe5051b2e67a3bee27061a74e7a";
+      };
+    }
+    {
+      name = "d3_geo___d3_geo_1.9.1.tgz";
+      path = fetchurl {
+        name = "d3_geo___d3_geo_1.9.1.tgz";
+        url  = "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.9.1.tgz";
+        sha1 = "157e3b0f917379d0f73bebfff3be537f49fa7356";
+      };
+    }
+    {
+      name = "d3_hierarchy___d3_hierarchy_1.1.5.tgz";
+      path = fetchurl {
+        name = "d3_hierarchy___d3_hierarchy_1.1.5.tgz";
+        url  = "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.5.tgz";
+        sha1 = "a1c845c42f84a206bcf1c01c01098ea4ddaa7a26";
+      };
+    }
+    {
+      name = "d3_interpolate___d3_interpolate_1.1.6.tgz";
+      path = fetchurl {
+        name = "d3_interpolate___d3_interpolate_1.1.6.tgz";
+        url  = "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.1.6.tgz";
+        sha1 = "2cf395ae2381804df08aa1bf766b7f97b5f68fb6";
+      };
+    }
+    {
+      name = "d3_path___d3_path_1.0.5.tgz";
+      path = fetchurl {
+        name = "d3_path___d3_path_1.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.5.tgz";
+        sha1 = "241eb1849bd9e9e8021c0d0a799f8a0e8e441764";
+      };
+    }
+    {
+      name = "d3_polygon___d3_polygon_1.0.3.tgz";
+      path = fetchurl {
+        name = "d3_polygon___d3_polygon_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-1.0.3.tgz";
+        sha1 = "16888e9026460933f2b179652ad378224d382c62";
+      };
+    }
+    {
+      name = "d3_quadtree___d3_quadtree_1.0.3.tgz";
+      path = fetchurl {
+        name = "d3_quadtree___d3_quadtree_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.3.tgz";
+        sha1 = "ac7987e3e23fe805a990f28e1b50d38fcb822438";
+      };
+    }
+    {
+      name = "d3_random___d3_random_1.1.0.tgz";
+      path = fetchurl {
+        name = "d3_random___d3_random_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/d3-random/-/d3-random-1.1.0.tgz";
+        sha1 = "6642e506c6fa3a648595d2b2469788a8d12529d3";
+      };
+    }
+    {
+      name = "d3_scale_chromatic___d3_scale_chromatic_1.3.3.tgz";
+      path = fetchurl {
+        name = "d3_scale_chromatic___d3_scale_chromatic_1.3.3.tgz";
+        url  = "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-1.3.3.tgz";
+        sha1 = "dad4366f0edcb288f490128979c3c793583ed3c0";
+      };
+    }
+    {
+      name = "d3_scale___d3_scale_2.2.2.tgz";
+      path = fetchurl {
+        name = "d3_scale___d3_scale_2.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/d3-scale/-/d3-scale-2.2.2.tgz";
+        sha1 = "4e880e0b2745acaaddd3ede26a9e908a9e17b81f";
+      };
+    }
+    {
+      name = "d3_selection___d3_selection_1.3.0.tgz";
+      path = fetchurl {
+        name = "d3_selection___d3_selection_1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.3.0.tgz";
+        sha1 = "d53772382d3dc4f7507bfb28bcd2d6aed2a0ad6d";
+      };
+    }
+    {
+      name = "d3_shape___d3_shape_1.2.0.tgz";
+      path = fetchurl {
+        name = "d3_shape___d3_shape_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.2.0.tgz";
+        sha1 = "45d01538f064bafd05ea3d6d2cb748fd8c41f777";
+      };
+    }
+    {
+      name = "d3_time_format___d3_time_format_2.1.1.tgz";
+      path = fetchurl {
+        name = "d3_time_format___d3_time_format_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.1.1.tgz";
+        sha1 = "85b7cdfbc9ffca187f14d3c456ffda268081bb31";
+      };
+    }
+    {
+      name = "d3_time___d3_time_1.0.8.tgz";
+      path = fetchurl {
+        name = "d3_time___d3_time_1.0.8.tgz";
+        url  = "https://registry.yarnpkg.com/d3-time/-/d3-time-1.0.8.tgz";
+        sha1 = "dbd2d6007bf416fe67a76d17947b784bffea1e84";
+      };
+    }
+    {
+      name = "d3_timer___d3_timer_1.0.7.tgz";
+      path = fetchurl {
+        name = "d3_timer___d3_timer_1.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.7.tgz";
+        sha1 = "df9650ca587f6c96607ff4e60cc38229e8dd8531";
+      };
+    }
+    {
+      name = "d3_transition___d3_transition_1.1.1.tgz";
+      path = fetchurl {
+        name = "d3_transition___d3_transition_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.1.1.tgz";
+        sha1 = "d8ef89c3b848735b060e54a39b32aaebaa421039";
+      };
+    }
+    {
+      name = "d3_voronoi___d3_voronoi_1.1.2.tgz";
+      path = fetchurl {
+        name = "d3_voronoi___d3_voronoi_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/d3-voronoi/-/d3-voronoi-1.1.2.tgz";
+        sha1 = "1687667e8f13a2d158c80c1480c5a29cb0d8973c";
+      };
+    }
+    {
+      name = "d3_zoom___d3_zoom_1.7.1.tgz";
+      path = fetchurl {
+        name = "d3_zoom___d3_zoom_1.7.1.tgz";
+        url  = "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-1.7.1.tgz";
+        sha1 = "02f43b3c3e2db54f364582d7e4a236ccc5506b63";
+      };
+    }
+    {
+      name = "d3___d3_5.15.0.tgz";
+      path = fetchurl {
+        name = "d3___d3_5.15.0.tgz";
+        url  = "https://registry.yarnpkg.com/d3/-/d3-5.15.0.tgz";
+        sha1 = "ffd44958e6a3cb8a59a84429c45429b8bca5677a";
+      };
+    }
+    {
+      name = "dagre_d3___dagre_d3_0.6.4.tgz";
+      path = fetchurl {
+        name = "dagre_d3___dagre_d3_0.6.4.tgz";
+        url  = "https://registry.yarnpkg.com/dagre-d3/-/dagre-d3-0.6.4.tgz";
+        sha1 = "0728d5ce7f177ca2337df141ceb60fbe6eeb7b29";
+      };
+    }
+    {
+      name = "dagre___dagre_0.8.5.tgz";
+      path = fetchurl {
+        name = "dagre___dagre_0.8.5.tgz";
+        url  = "https://registry.yarnpkg.com/dagre/-/dagre-0.8.5.tgz";
+        sha1 = "ba30b0055dac12b6c1fcc247817442777d06afee";
+      };
+    }
+    {
+      name = "dashdash___dashdash_1.14.1.tgz";
+      path = fetchurl {
+        name = "dashdash___dashdash_1.14.1.tgz";
+        url  = "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz";
+        sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
+      };
+    }
+    {
+      name = "data_urls___data_urls_1.1.0.tgz";
+      path = fetchurl {
+        name = "data_urls___data_urls_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz";
+        sha1 = "15ee0582baa5e22bb59c77140da8f9c76963bbfe";
+      };
+    }
+    {
+      name = "date_format___date_format_2.1.0.tgz";
+      path = fetchurl {
+        name = "date_format___date_format_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/date-format/-/date-format-2.1.0.tgz";
+        sha1 = "31d5b5ea211cf5fd764cd38baf9d033df7e125cf";
+      };
+    }
+    {
+      name = "date_now___date_now_0.1.4.tgz";
+      path = fetchurl {
+        name = "date_now___date_now_0.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz";
+        sha1 = "eaf439fd4d4848ad74e5cc7dbef200672b9e345b";
+      };
+    }
+    {
+      name = "dateformat___dateformat_3.0.3.tgz";
+      path = fetchurl {
+        name = "dateformat___dateformat_3.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz";
+        sha1 = "a6e37499a4d9a9cf85ef5872044d62901c9889ae";
+      };
+    }
+    {
+      name = "de_indent___de_indent_1.0.2.tgz";
+      path = fetchurl {
+        name = "de_indent___de_indent_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz";
+        sha1 = "b2038e846dc33baa5796128d0804b455b8c1e21d";
+      };
+    }
+    {
+      name = "debug___debug_2.6.9.tgz";
+      path = fetchurl {
+        name = "debug___debug_2.6.9.tgz";
+        url  = "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz";
+        sha1 = "5d128515df134ff327e90a4c93f4e077a536341f";
+      };
+    }
+    {
+      name = "debug___debug_3.1.0.tgz";
+      path = fetchurl {
+        name = "debug___debug_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz";
+        sha1 = "5bb5a0672628b64149566ba16819e61518c67261";
+      };
+    }
+    {
+      name = "debug___debug_3.2.6.tgz";
+      path = fetchurl {
+        name = "debug___debug_3.2.6.tgz";
+        url  = "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz";
+        sha1 = "e83d17de16d8a7efb7717edbe5fb10135eee629b";
+      };
+    }
+    {
+      name = "debug___debug_4.1.1.tgz";
+      path = fetchurl {
+        name = "debug___debug_4.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz";
+        sha1 = "3b72260255109c6b589cee050f1d516139664791";
+      };
+    }
+    {
+      name = "decamelize_keys___decamelize_keys_1.1.0.tgz";
+      path = fetchurl {
+        name = "decamelize_keys___decamelize_keys_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz";
+        sha1 = "d171a87933252807eb3cb61dc1c1445d078df2d9";
+      };
+    }
+    {
+      name = "decamelize___decamelize_1.2.0.tgz";
+      path = fetchurl {
+        name = "decamelize___decamelize_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz";
+        sha1 = "f6534d15148269b20352e7bee26f501f9a191290";
+      };
+    }
+    {
+      name = "deckar01_task_list___deckar01_task_list_2.3.1.tgz";
+      path = fetchurl {
+        name = "deckar01_task_list___deckar01_task_list_2.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/deckar01-task_list/-/deckar01-task_list-2.3.1.tgz";
+        sha1 = "f3ffd5319d7b9e27c596dc8d823b13f617ed7db7";
+      };
+    }
+    {
+      name = "decode_uri_component___decode_uri_component_0.2.0.tgz";
+      path = fetchurl {
+        name = "decode_uri_component___decode_uri_component_0.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz";
+        sha1 = "eb3913333458775cb84cd1a1fae062106bb87545";
+      };
+    }
+    {
+      name = "deep_equal___deep_equal_1.0.1.tgz";
+      path = fetchurl {
+        name = "deep_equal___deep_equal_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz";
+        sha1 = "f5d260292b660e084eff4cdbc9f08ad3247448b5";
+      };
+    }
+    {
+      name = "deep_extend___deep_extend_0.6.0.tgz";
+      path = fetchurl {
+        name = "deep_extend___deep_extend_0.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz";
+        sha1 = "c4fa7c95404a17a9c3e8ca7e1537312b736330ac";
+      };
+    }
+    {
+      name = "deep_extend___deep_extend_0.5.1.tgz";
+      path = fetchurl {
+        name = "deep_extend___deep_extend_0.5.1.tgz";
+        url  = "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz";
+        sha1 = "b894a9dd90d3023fbf1c55a394fb858eb2066f1f";
+      };
+    }
+    {
+      name = "deep_is___deep_is_0.1.3.tgz";
+      path = fetchurl {
+        name = "deep_is___deep_is_0.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz";
+        sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
+      };
+    }
+    {
+      name = "default_gateway___default_gateway_4.2.0.tgz";
+      path = fetchurl {
+        name = "default_gateway___default_gateway_4.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz";
+        sha1 = "167104c7500c2115f6dd69b0a536bb8ed720552b";
+      };
+    }
+    {
+      name = "default_require_extensions___default_require_extensions_2.0.0.tgz";
+      path = fetchurl {
+        name = "default_require_extensions___default_require_extensions_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz";
+        sha1 = "f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7";
+      };
+    }
+    {
+      name = "define_properties___define_properties_1.1.3.tgz";
+      path = fetchurl {
+        name = "define_properties___define_properties_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz";
+        sha1 = "cf88da6cbee26fe6db7094f61d870cbd84cee9f1";
+      };
+    }
+    {
+      name = "define_property___define_property_0.2.5.tgz";
+      path = fetchurl {
+        name = "define_property___define_property_0.2.5.tgz";
+        url  = "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz";
+        sha1 = "c35b1ef918ec3c990f9a5bc57be04aacec5c8116";
+      };
+    }
+    {
+      name = "define_property___define_property_1.0.0.tgz";
+      path = fetchurl {
+        name = "define_property___define_property_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz";
+        sha1 = "769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6";
+      };
+    }
+    {
+      name = "define_property___define_property_2.0.2.tgz";
+      path = fetchurl {
+        name = "define_property___define_property_2.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz";
+        sha1 = "d459689e8d654ba77e02a817f8710d702cb16e9d";
+      };
+    }
+    {
+      name = "del___del_4.1.1.tgz";
+      path = fetchurl {
+        name = "del___del_4.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz";
+        sha1 = "9e8f117222ea44a31ff3a156c049b99052a9f0b4";
+      };
+    }
+    {
+      name = "delayed_stream___delayed_stream_1.0.0.tgz";
+      path = fetchurl {
+        name = "delayed_stream___delayed_stream_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz";
+        sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
+      };
+    }
+    {
+      name = "delegate___delegate_3.1.2.tgz";
+      path = fetchurl {
+        name = "delegate___delegate_3.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/delegate/-/delegate-3.1.2.tgz";
+        sha1 = "1e1bc6f5cadda6cb6cbf7e6d05d0bcdd5712aebe";
+      };
+    }
+    {
+      name = "delegates___delegates_1.0.0.tgz";
+      path = fetchurl {
+        name = "delegates___delegates_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz";
+        sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
+      };
+    }
+    {
+      name = "depd___depd_1.1.1.tgz";
+      path = fetchurl {
+        name = "depd___depd_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz";
+        sha1 = "5783b4e1c459f06fa5ca27f991f3d06e7a310359";
+      };
+    }
+    {
+      name = "depd___depd_1.1.2.tgz";
+      path = fetchurl {
+        name = "depd___depd_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz";
+        sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
+      };
+    }
+    {
+      name = "des.js___des.js_1.0.0.tgz";
+      path = fetchurl {
+        name = "des.js___des.js_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz";
+        sha1 = "c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc";
+      };
+    }
+    {
+      name = "destroy___destroy_1.0.4.tgz";
+      path = fetchurl {
+        name = "destroy___destroy_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz";
+        sha1 = "978857442c44749e4206613e37946205826abd80";
+      };
+    }
+    {
+      name = "detect_file___detect_file_1.0.0.tgz";
+      path = fetchurl {
+        name = "detect_file___detect_file_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz";
+        sha1 = "f0d66d03672a825cb1b73bdb3fe62310c8e552b7";
+      };
+    }
+    {
+      name = "detect_libc___detect_libc_1.0.3.tgz";
+      path = fetchurl {
+        name = "detect_libc___detect_libc_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz";
+        sha1 = "fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b";
+      };
+    }
+    {
+      name = "detect_newline___detect_newline_2.1.0.tgz";
+      path = fetchurl {
+        name = "detect_newline___detect_newline_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz";
+        sha1 = "f41f1c10be4b00e87b5f13da680759f2c5bfd3e2";
+      };
+    }
+    {
+      name = "detect_node___detect_node_2.0.4.tgz";
+      path = fetchurl {
+        name = "detect_node___detect_node_2.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz";
+        sha1 = "014ee8f8f669c5c58023da64b8179c083a28c46c";
+      };
+    }
+    {
+      name = "di___di_0.0.1.tgz";
+      path = fetchurl {
+        name = "di___di_0.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz";
+        sha1 = "806649326ceaa7caa3306d75d985ea2748ba913c";
+      };
+    }
+    {
+      name = "diff_sequences___diff_sequences_24.3.0.tgz";
+      path = fetchurl {
+        name = "diff_sequences___diff_sequences_24.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz";
+        sha1 = "0f20e8a1df1abddaf4d9c226680952e64118b975";
+      };
+    }
+    {
+      name = "diff___diff_3.5.0.tgz";
+      path = fetchurl {
+        name = "diff___diff_3.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz";
+        sha1 = "800c0dd1e0a8bfbc95835c202ad220fe317e5a12";
+      };
+    }
+    {
+      name = "diffie_hellman___diffie_hellman_5.0.2.tgz";
+      path = fetchurl {
+        name = "diffie_hellman___diffie_hellman_5.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz";
+        sha1 = "b5835739270cfe26acf632099fded2a07f209e5e";
+      };
+    }
+    {
+      name = "dir_glob___dir_glob_2.2.2.tgz";
+      path = fetchurl {
+        name = "dir_glob___dir_glob_2.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz";
+        sha1 = "fa09f0694153c8918b18ba0deafae94769fc50c4";
+      };
+    }
+    {
+      name = "dns_equal___dns_equal_1.0.0.tgz";
+      path = fetchurl {
+        name = "dns_equal___dns_equal_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz";
+        sha1 = "b39e7f1da6eb0a75ba9c17324b34753c47e0654d";
+      };
+    }
+    {
+      name = "dns_packet___dns_packet_1.2.2.tgz";
+      path = fetchurl {
+        name = "dns_packet___dns_packet_1.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.2.2.tgz";
+        sha1 = "a8a26bec7646438963fc86e06f8f8b16d6c8bf7a";
+      };
+    }
+    {
+      name = "dns_txt___dns_txt_2.0.2.tgz";
+      path = fetchurl {
+        name = "dns_txt___dns_txt_2.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz";
+        sha1 = "b91d806f5d27188e4ab3e7d107d881a1cc4642b6";
+      };
+    }
+    {
+      name = "docdash___docdash_1.0.2.tgz";
+      path = fetchurl {
+        name = "docdash___docdash_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/docdash/-/docdash-1.0.2.tgz";
+        sha1 = "0449a8f6bb247f563020b78a5485dea95ae2e094";
+      };
+    }
+    {
+      name = "doctrine___doctrine_1.5.0.tgz";
+      path = fetchurl {
+        name = "doctrine___doctrine_1.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz";
+        sha1 = "379dce730f6166f76cefa4e6707a159b02c5a6fa";
+      };
+    }
+    {
+      name = "doctrine___doctrine_3.0.0.tgz";
+      path = fetchurl {
+        name = "doctrine___doctrine_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz";
+        sha1 = "addebead72a6574db783639dc87a121773973961";
+      };
+    }
+    {
+      name = "document_register_element___document_register_element_1.14.3.tgz";
+      path = fetchurl {
+        name = "document_register_element___document_register_element_1.14.3.tgz";
+        url  = "https://registry.yarnpkg.com/document-register-element/-/document-register-element-1.14.3.tgz";
+        sha1 = "3335d4578df6a1536a34595b91cca36dd5db61d7";
+      };
+    }
+    {
+      name = "dom_event_types___dom_event_types_1.0.0.tgz";
+      path = fetchurl {
+        name = "dom_event_types___dom_event_types_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/dom-event-types/-/dom-event-types-1.0.0.tgz";
+        sha1 = "5830a0a29e1bf837fe50a70cd80a597232813cae";
+      };
+    }
+    {
+      name = "dom_serialize___dom_serialize_2.2.1.tgz";
+      path = fetchurl {
+        name = "dom_serialize___dom_serialize_2.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz";
+        sha1 = "562ae8999f44be5ea3076f5419dcd59eb43ac95b";
+      };
+    }
+    {
+      name = "dom_serializer___dom_serializer_0.2.2.tgz";
+      path = fetchurl {
+        name = "dom_serializer___dom_serializer_0.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz";
+        sha1 = "1afb81f533717175d478655debc5e332d9f9bb51";
+      };
+    }
+    {
+      name = "domain_browser___domain_browser_1.1.7.tgz";
+      path = fetchurl {
+        name = "domain_browser___domain_browser_1.1.7.tgz";
+        url  = "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz";
+        sha1 = "867aa4b093faa05f1de08c06f4d7b21fdf8698bc";
+      };
+    }
+    {
+      name = "domelementtype___domelementtype_1.3.0.tgz";
+      path = fetchurl {
+        name = "domelementtype___domelementtype_1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz";
+        sha1 = "b17aed82e8ab59e52dd9c19b1756e0fc187204c2";
+      };
+    }
+    {
+      name = "domelementtype___domelementtype_2.0.1.tgz";
+      path = fetchurl {
+        name = "domelementtype___domelementtype_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz";
+        sha1 = "1f8bdfe91f5a78063274e803b4bdcedf6e94f94d";
+      };
+    }
+    {
+      name = "domexception___domexception_1.0.1.tgz";
+      path = fetchurl {
+        name = "domexception___domexception_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz";
+        sha1 = "937442644ca6a31261ef36e3ec677fe805582c90";
+      };
+    }
+    {
+      name = "domhandler___domhandler_2.4.1.tgz";
+      path = fetchurl {
+        name = "domhandler___domhandler_2.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz";
+        sha1 = "892e47000a99be55bbf3774ffea0561d8879c259";
+      };
+    }
+    {
+      name = "domhandler___domhandler_3.0.0.tgz";
+      path = fetchurl {
+        name = "domhandler___domhandler_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/domhandler/-/domhandler-3.0.0.tgz";
+        sha1 = "51cd13efca31da95bbb0c5bee3a48300e333b3e9";
+      };
+    }
+    {
+      name = "domutils___domutils_1.6.2.tgz";
+      path = fetchurl {
+        name = "domutils___domutils_1.6.2.tgz";
+        url  = "https://registry.yarnpkg.com/domutils/-/domutils-1.6.2.tgz";
+        sha1 = "1958cc0b4c9426e9ed367fb1c8e854891b0fa3ff";
+      };
+    }
+    {
+      name = "domutils___domutils_2.0.0.tgz";
+      path = fetchurl {
+        name = "domutils___domutils_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/domutils/-/domutils-2.0.0.tgz";
+        sha1 = "15b8278e37bfa8468d157478c58c367718133c08";
+      };
+    }
+    {
+      name = "dot_prop___dot_prop_4.2.0.tgz";
+      path = fetchurl {
+        name = "dot_prop___dot_prop_4.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz";
+        sha1 = "1f19e0c2e1aa0e32797c49799f2837ac6af69c57";
+      };
+    }
+    {
+      name = "dropzone___dropzone_4.2.0.tgz";
+      path = fetchurl {
+        name = "dropzone___dropzone_4.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/dropzone/-/dropzone-4.2.0.tgz";
+        sha1 = "fbe7acbb9918e0706489072ef663effeef8a79f3";
+      };
+    }
+    {
+      name = "duplexer3___duplexer3_0.1.4.tgz";
+      path = fetchurl {
+        name = "duplexer3___duplexer3_0.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz";
+        sha1 = "ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2";
+      };
+    }
+    {
+      name = "duplexer___duplexer_0.1.1.tgz";
+      path = fetchurl {
+        name = "duplexer___duplexer_0.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz";
+        sha1 = "ace6ff808c1ce66b57d1ebf97977acb02334cfc1";
+      };
+    }
+    {
+      name = "duplexify___duplexify_3.7.1.tgz";
+      path = fetchurl {
+        name = "duplexify___duplexify_3.7.1.tgz";
+        url  = "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz";
+        sha1 = "2a4df5317f6ccfd91f86d6fd25d8d8a103b88309";
+      };
+    }
+    {
+      name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
+      path = fetchurl {
+        name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
+        sha1 = "3a83a904e54353287874c564b7549386849a98c9";
+      };
+    }
+    {
+      name = "echarts___echarts_4.6.0.tgz";
+      path = fetchurl {
+        name = "echarts___echarts_4.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/echarts/-/echarts-4.6.0.tgz";
+        sha1 = "b5a47a1046cec93ceeef954f9ee54751340558ec";
+      };
+    }
+    {
+      name = "editions___editions_1.3.4.tgz";
+      path = fetchurl {
+        name = "editions___editions_1.3.4.tgz";
+        url  = "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz";
+        sha1 = "3662cb592347c3168eb8e498a0ff73271d67f50b";
+      };
+    }
+    {
+      name = "editorconfig___editorconfig_0.15.3.tgz";
+      path = fetchurl {
+        name = "editorconfig___editorconfig_0.15.3.tgz";
+        url  = "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz";
+        sha1 = "bef84c4e75fb8dcb0ce5cee8efd51c15999befc5";
+      };
+    }
+    {
+      name = "ee_first___ee_first_1.1.1.tgz";
+      path = fetchurl {
+        name = "ee_first___ee_first_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz";
+        sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
+      };
+    }
+    {
+      name = "ejs___ejs_2.6.1.tgz";
+      path = fetchurl {
+        name = "ejs___ejs_2.6.1.tgz";
+        url  = "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz";
+        sha1 = "498ec0d495655abc6f23cd61868d926464071aa0";
+      };
+    }
+    {
+      name = "electron_to_chromium___electron_to_chromium_1.3.360.tgz";
+      path = fetchurl {
+        name = "electron_to_chromium___electron_to_chromium_1.3.360.tgz";
+        url  = "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.360.tgz";
+        sha1 = "1db9cb8d43f4c772546d94ea9be8b677a8ecb483";
+      };
+    }
+    {
+      name = "elliptic___elliptic_6.4.0.tgz";
+      path = fetchurl {
+        name = "elliptic___elliptic_6.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz";
+        sha1 = "cac9af8762c85836187003c8dfe193e5e2eae5df";
+      };
+    }
+    {
+      name = "emoji_regex___emoji_regex_7.0.3.tgz";
+      path = fetchurl {
+        name = "emoji_regex___emoji_regex_7.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz";
+        sha1 = "933a04052860c85e83c122479c4748a8e4c72156";
+      };
+    }
+    {
+      name = "emoji_regex___emoji_regex_8.0.0.tgz";
+      path = fetchurl {
+        name = "emoji_regex___emoji_regex_8.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz";
+        sha1 = "e818fd69ce5ccfcb404594f842963bf53164cc37";
+      };
+    }
+    {
+      name = "emoji_unicode_version___emoji_unicode_version_0.2.1.tgz";
+      path = fetchurl {
+        name = "emoji_unicode_version___emoji_unicode_version_0.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/emoji-unicode-version/-/emoji-unicode-version-0.2.1.tgz";
+        sha1 = "0ebf3666b5414097971d34994e299fce75cdbafc";
+      };
+    }
+    {
+      name = "emojis_list___emojis_list_2.1.0.tgz";
+      path = fetchurl {
+        name = "emojis_list___emojis_list_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz";
+        sha1 = "4daa4d9db00f9819880c79fa457ae5b09a1fd389";
+      };
+    }
+    {
+      name = "emojis_list___emojis_list_3.0.0.tgz";
+      path = fetchurl {
+        name = "emojis_list___emojis_list_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz";
+        sha1 = "5570662046ad29e2e916e71aae260abdff4f6a78";
+      };
+    }
+    {
+      name = "encodeurl___encodeurl_1.0.2.tgz";
+      path = fetchurl {
+        name = "encodeurl___encodeurl_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz";
+        sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
+      };
+    }
+    {
+      name = "end_of_stream___end_of_stream_1.4.1.tgz";
+      path = fetchurl {
+        name = "end_of_stream___end_of_stream_1.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz";
+        sha1 = "ed29634d19baba463b6ce6b80a37213eab71ec43";
+      };
+    }
+    {
+      name = "engine.io_client___engine.io_client_3.2.1.tgz";
+      path = fetchurl {
+        name = "engine.io_client___engine.io_client_3.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz";
+        sha1 = "6f54c0475de487158a1a7c77d10178708b6add36";
+      };
+    }
+    {
+      name = "engine.io_parser___engine.io_parser_2.1.2.tgz";
+      path = fetchurl {
+        name = "engine.io_parser___engine.io_parser_2.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz";
+        sha1 = "4c0f4cff79aaeecbbdcfdea66a823c6085409196";
+      };
+    }
+    {
+      name = "engine.io___engine.io_3.2.0.tgz";
+      path = fetchurl {
+        name = "engine.io___engine.io_3.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.0.tgz";
+        sha1 = "54332506f42f2edc71690d2f2a42349359f3bf7d";
+      };
+    }
+    {
+      name = "enhanced_resolve___enhanced_resolve_4.1.0.tgz";
+      path = fetchurl {
+        name = "enhanced_resolve___enhanced_resolve_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz";
+        sha1 = "41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f";
+      };
+    }
+    {
+      name = "enhanced_resolve___enhanced_resolve_0.9.1.tgz";
+      path = fetchurl {
+        name = "enhanced_resolve___enhanced_resolve_0.9.1.tgz";
+        url  = "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz";
+        sha1 = "4d6e689b3725f86090927ccc86cd9f1635b89e2e";
+      };
+    }
+    {
+      name = "ent___ent_2.2.0.tgz";
+      path = fetchurl {
+        name = "ent___ent_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz";
+        sha1 = "e964219325a21d05f44466a2f686ed6ce5f5dd1d";
+      };
+    }
+    {
+      name = "entities___entities_1.1.1.tgz";
+      path = fetchurl {
+        name = "entities___entities_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz";
+        sha1 = "6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0";
+      };
+    }
+    {
+      name = "entities___entities_2.0.0.tgz";
+      path = fetchurl {
+        name = "entities___entities_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz";
+        sha1 = "68d6084cab1b079767540d80e56a39b423e4abf4";
+      };
+    }
+    {
+      name = "errno___errno_0.1.7.tgz";
+      path = fetchurl {
+        name = "errno___errno_0.1.7.tgz";
+        url  = "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz";
+        sha1 = "4684d71779ad39af177e3f007996f7c67c852618";
+      };
+    }
+    {
+      name = "error_ex___error_ex_1.3.2.tgz";
+      path = fetchurl {
+        name = "error_ex___error_ex_1.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz";
+        sha1 = "b4ac40648107fdcdcfae242f428bea8a14d4f1bf";
+      };
+    }
+    {
+      name = "es_abstract___es_abstract_1.17.4.tgz";
+      path = fetchurl {
+        name = "es_abstract___es_abstract_1.17.4.tgz";
+        url  = "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz";
+        sha1 = "e3aedf19706b20e7c2594c35fc0d57605a79e184";
+      };
+    }
+    {
+      name = "es_to_primitive___es_to_primitive_1.2.1.tgz";
+      path = fetchurl {
+        name = "es_to_primitive___es_to_primitive_1.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz";
+        sha1 = "e55cd4c9cdc188bcefb03b366c736323fc5c898a";
+      };
+    }
+    {
+      name = "es6_promise___es6_promise_3.0.2.tgz";
+      path = fetchurl {
+        name = "es6_promise___es6_promise_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz";
+        sha1 = "010d5858423a5f118979665f46486a95c6ee2bb6";
+      };
+    }
+    {
+      name = "escape_html___escape_html_1.0.3.tgz";
+      path = fetchurl {
+        name = "escape_html___escape_html_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz";
+        sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
+      };
+    }
+    {
+      name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz";
+      path = fetchurl {
+        name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
+        sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
+      };
+    }
+    {
+      name = "escaper___escaper_2.5.3.tgz";
+      path = fetchurl {
+        name = "escaper___escaper_2.5.3.tgz";
+        url  = "https://registry.yarnpkg.com/escaper/-/escaper-2.5.3.tgz";
+        sha1 = "8b8fe90ba364054151ab7eff18b4ce43b1e13ab5";
+      };
+    }
+    {
+      name = "escodegen___escodegen_1.11.0.tgz";
+      path = fetchurl {
+        name = "escodegen___escodegen_1.11.0.tgz";
+        url  = "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz";
+        sha1 = "b27a9389481d5bfd5bec76f7bb1eb3f8f4556589";
+      };
+    }
+    {
+      name = "eslint_config_airbnb_base___eslint_config_airbnb_base_14.0.0.tgz";
+      path = fetchurl {
+        name = "eslint_config_airbnb_base___eslint_config_airbnb_base_14.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.0.0.tgz";
+        sha1 = "8a7bcb9643d13c55df4dd7444f138bf4efa61e17";
+      };
+    }
+    {
+      name = "eslint_config_prettier___eslint_config_prettier_6.10.0.tgz";
+      path = fetchurl {
+        name = "eslint_config_prettier___eslint_config_prettier_6.10.0.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz";
+        sha1 = "7b15e303bf9c956875c948f6b21500e48ded6a7f";
+      };
+    }
+    {
+      name = "eslint_import_resolver_jest___eslint_import_resolver_jest_2.1.2.tgz";
+      path = fetchurl {
+        name = "eslint_import_resolver_jest___eslint_import_resolver_jest_2.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-import-resolver-jest/-/eslint-import-resolver-jest-2.1.2.tgz";
+        sha1 = "8720fbe8b8498e95cb2bc6ef52b46b713aedaa59";
+      };
+    }
+    {
+      name = "eslint_import_resolver_node___eslint_import_resolver_node_0.3.2.tgz";
+      path = fetchurl {
+        name = "eslint_import_resolver_node___eslint_import_resolver_node_0.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz";
+        sha1 = "58f15fb839b8d0576ca980413476aab2472db66a";
+      };
+    }
+    {
+      name = "eslint_import_resolver_webpack___eslint_import_resolver_webpack_0.12.1.tgz";
+      path = fetchurl {
+        name = "eslint_import_resolver_webpack___eslint_import_resolver_webpack_0.12.1.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.12.1.tgz";
+        sha1 = "771ae561e887ca4e53ee87605fbb36c5e290b0f5";
+      };
+    }
+    {
+      name = "eslint_module_utils___eslint_module_utils_2.5.2.tgz";
+      path = fetchurl {
+        name = "eslint_module_utils___eslint_module_utils_2.5.2.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz";
+        sha1 = "7878f7504824e1b857dd2505b59a8e5eda26a708";
+      };
+    }
+    {
+      name = "eslint_plugin_babel___eslint_plugin_babel_5.3.0.tgz";
+      path = fetchurl {
+        name = "eslint_plugin_babel___eslint_plugin_babel_5.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-5.3.0.tgz";
+        sha1 = "2e7f251ccc249326da760c1a4c948a91c32d0023";
+      };
+    }
+    {
+      name = "eslint_plugin_filenames___eslint_plugin_filenames_1.3.2.tgz";
+      path = fetchurl {
+        name = "eslint_plugin_filenames___eslint_plugin_filenames_1.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-plugin-filenames/-/eslint-plugin-filenames-1.3.2.tgz";
+        sha1 = "7094f00d7aefdd6999e3ac19f72cea058e590cf7";
+      };
+    }
+    {
+      name = "eslint_plugin_import___eslint_plugin_import_2.20.1.tgz";
+      path = fetchurl {
+        name = "eslint_plugin_import___eslint_plugin_import_2.20.1.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz";
+        sha1 = "802423196dcb11d9ce8435a5fc02a6d3b46939b3";
+      };
+    }
+    {
+      name = "eslint_plugin_jasmine___eslint_plugin_jasmine_4.1.0.tgz";
+      path = fetchurl {
+        name = "eslint_plugin_jasmine___eslint_plugin_jasmine_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-plugin-jasmine/-/eslint-plugin-jasmine-4.1.0.tgz";
+        sha1 = "4f6d41b1a8622348c97559cbcd29badffa74dbfa";
+      };
+    }
+    {
+      name = "eslint_plugin_jest___eslint_plugin_jest_23.8.2.tgz";
+      path = fetchurl {
+        name = "eslint_plugin_jest___eslint_plugin_jest_23.8.2.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.8.2.tgz";
+        sha1 = "6f28b41c67ef635f803ebd9e168f6b73858eb8d4";
+      };
+    }
+    {
+      name = "eslint_plugin_no_jquery___eslint_plugin_no_jquery_2.3.1.tgz";
+      path = fetchurl {
+        name = "eslint_plugin_no_jquery___eslint_plugin_no_jquery_2.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-2.3.1.tgz";
+        sha1 = "1c364cb863a38cc1570c8020155b6004cca62178";
+      };
+    }
+    {
+      name = "eslint_plugin_promise___eslint_plugin_promise_4.2.1.tgz";
+      path = fetchurl {
+        name = "eslint_plugin_promise___eslint_plugin_promise_4.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz";
+        sha1 = "845fd8b2260ad8f82564c1222fce44ad71d9418a";
+      };
+    }
+    {
+      name = "eslint_plugin_vue___eslint_plugin_vue_6.2.2.tgz";
+      path = fetchurl {
+        name = "eslint_plugin_vue___eslint_plugin_vue_6.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz";
+        sha1 = "27fecd9a3a24789b0f111ecdd540a9e56198e0fe";
+      };
+    }
+    {
+      name = "eslint_rule_composer___eslint_rule_composer_0.3.0.tgz";
+      path = fetchurl {
+        name = "eslint_rule_composer___eslint_rule_composer_0.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz";
+        sha1 = "79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9";
+      };
+    }
+    {
+      name = "eslint_scope___eslint_scope_4.0.3.tgz";
+      path = fetchurl {
+        name = "eslint_scope___eslint_scope_4.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz";
+        sha1 = "ca03833310f6889a3264781aa82e63eb9cfe7848";
+      };
+    }
+    {
+      name = "eslint_scope___eslint_scope_5.0.0.tgz";
+      path = fetchurl {
+        name = "eslint_scope___eslint_scope_5.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz";
+        sha1 = "e87c8887c73e8d1ec84f1ca591645c358bfc8fb9";
+      };
+    }
+    {
+      name = "eslint_utils___eslint_utils_1.4.3.tgz";
+      path = fetchurl {
+        name = "eslint_utils___eslint_utils_1.4.3.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz";
+        sha1 = "74fec7c54d0776b6f67e0251040b5806564e981f";
+      };
+    }
+    {
+      name = "eslint_utils___eslint_utils_2.0.0.tgz";
+      path = fetchurl {
+        name = "eslint_utils___eslint_utils_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.0.0.tgz";
+        sha1 = "7be1cc70f27a72a76cd14aa698bcabed6890e1cd";
+      };
+    }
+    {
+      name = "eslint_visitor_keys___eslint_visitor_keys_1.1.0.tgz";
+      path = fetchurl {
+        name = "eslint_visitor_keys___eslint_visitor_keys_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz";
+        sha1 = "e2a82cea84ff246ad6fb57f9bde5b46621459ec2";
+      };
+    }
+    {
+      name = "eslint___eslint_6.8.0.tgz";
+      path = fetchurl {
+        name = "eslint___eslint_6.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz";
+        sha1 = "62262d6729739f9275723824302fb227c8c93ffb";
+      };
+    }
+    {
+      name = "espree___espree_6.1.2.tgz";
+      path = fetchurl {
+        name = "espree___espree_6.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz";
+        sha1 = "6c272650932b4f91c3714e5e7b5f5e2ecf47262d";
+      };
+    }
+    {
+      name = "esprima___esprima_3.1.3.tgz";
+      path = fetchurl {
+        name = "esprima___esprima_3.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz";
+        sha1 = "fdca51cee6133895e3c88d535ce49dbff62a4633";
+      };
+    }
+    {
+      name = "esprima___esprima_4.0.1.tgz";
+      path = fetchurl {
+        name = "esprima___esprima_4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz";
+        sha1 = "13b04cdb3e6c5d19df91ab6987a8695619b0aa71";
+      };
+    }
+    {
+      name = "esquery___esquery_1.0.1.tgz";
+      path = fetchurl {
+        name = "esquery___esquery_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz";
+        sha1 = "406c51658b1f5991a5f9b62b1dc25b00e3e5c708";
+      };
+    }
+    {
+      name = "esrecurse___esrecurse_4.2.1.tgz";
+      path = fetchurl {
+        name = "esrecurse___esrecurse_4.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz";
+        sha1 = "007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf";
+      };
+    }
+    {
+      name = "estraverse___estraverse_4.2.0.tgz";
+      path = fetchurl {
+        name = "estraverse___estraverse_4.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz";
+        sha1 = "0dee3fed31fcd469618ce7342099fc1afa0bdb13";
+      };
+    }
+    {
+      name = "esutils___esutils_2.0.3.tgz";
+      path = fetchurl {
+        name = "esutils___esutils_2.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz";
+        sha1 = "74d2eb4de0b8da1293711910d50775b9b710ef64";
+      };
+    }
+    {
+      name = "etag___etag_1.8.1.tgz";
+      path = fetchurl {
+        name = "etag___etag_1.8.1.tgz";
+        url  = "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz";
+        sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
+      };
+    }
+    {
+      name = "eve_raphael___eve_raphael_0.5.0.tgz";
+      path = fetchurl {
+        name = "eve_raphael___eve_raphael_0.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/eve-raphael/-/eve-raphael-0.5.0.tgz";
+        sha1 = "17c754b792beef3fa6684d79cf5a47c63c4cda30";
+      };
+    }
+    {
+      name = "eventemitter3___eventemitter3_4.0.0.tgz";
+      path = fetchurl {
+        name = "eventemitter3___eventemitter3_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz";
+        sha1 = "d65176163887ee59f386d64c82610b696a4a74eb";
+      };
+    }
+    {
+      name = "events___events_1.1.1.tgz";
+      path = fetchurl {
+        name = "events___events_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz";
+        sha1 = "9ebdb7635ad099c70dcc4c2a1f5004288e8bd924";
+      };
+    }
+    {
+      name = "events___events_3.0.0.tgz";
+      path = fetchurl {
+        name = "events___events_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz";
+        sha1 = "9a0a0dfaf62893d92b875b8f2698ca4114973e88";
+      };
+    }
+    {
+      name = "eventsource___eventsource_1.0.7.tgz";
+      path = fetchurl {
+        name = "eventsource___eventsource_1.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz";
+        sha1 = "8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0";
+      };
+    }
+    {
+      name = "evp_bytestokey___evp_bytestokey_1.0.3.tgz";
+      path = fetchurl {
+        name = "evp_bytestokey___evp_bytestokey_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz";
+        sha1 = "7fcbdb198dc71959432efe13842684e0525acb02";
+      };
+    }
+    {
+      name = "exec_sh___exec_sh_0.3.2.tgz";
+      path = fetchurl {
+        name = "exec_sh___exec_sh_0.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz";
+        sha1 = "6738de2eb7c8e671d0366aea0b0db8c6f7d7391b";
+      };
+    }
+    {
+      name = "execa___execa_0.7.0.tgz";
+      path = fetchurl {
+        name = "execa___execa_0.7.0.tgz";
+        url  = "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz";
+        sha1 = "944becd34cc41ee32a63a9faf27ad5a65fc59777";
+      };
+    }
+    {
+      name = "execa___execa_1.0.0.tgz";
+      path = fetchurl {
+        name = "execa___execa_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz";
+        sha1 = "c6236a5bb4df6d6f15e88e7f017798216749ddd8";
+      };
+    }
+    {
+      name = "execall___execall_2.0.0.tgz";
+      path = fetchurl {
+        name = "execall___execall_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/execall/-/execall-2.0.0.tgz";
+        sha1 = "16a06b5fe5099df7d00be5d9c06eecded1663b45";
+      };
+    }
+    {
+      name = "exit___exit_0.1.2.tgz";
+      path = fetchurl {
+        name = "exit___exit_0.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz";
+        sha1 = "0632638f8d877cc82107d30a0fff1a17cba1cd0c";
+      };
+    }
+    {
+      name = "expand_brackets___expand_brackets_2.1.4.tgz";
+      path = fetchurl {
+        name = "expand_brackets___expand_brackets_2.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz";
+        sha1 = "b77735e315ce30f6b6eff0f83b04151a22449622";
+      };
+    }
+    {
+      name = "expand_tilde___expand_tilde_2.0.2.tgz";
+      path = fetchurl {
+        name = "expand_tilde___expand_tilde_2.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz";
+        sha1 = "97e801aa052df02454de46b02bf621642cdc8502";
+      };
+    }
+    {
+      name = "expect___expect_24.8.0.tgz";
+      path = fetchurl {
+        name = "expect___expect_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/expect/-/expect-24.8.0.tgz";
+        sha1 = "471f8ec256b7b6129ca2524b2a62f030df38718d";
+      };
+    }
+    {
+      name = "exports_loader___exports_loader_0.7.0.tgz";
+      path = fetchurl {
+        name = "exports_loader___exports_loader_0.7.0.tgz";
+        url  = "https://registry.yarnpkg.com/exports-loader/-/exports-loader-0.7.0.tgz";
+        sha1 = "84881c784dea6036b8e1cd1dac3da9b6409e21a5";
+      };
+    }
+    {
+      name = "express___express_4.17.1.tgz";
+      path = fetchurl {
+        name = "express___express_4.17.1.tgz";
+        url  = "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz";
+        sha1 = "4491fc38605cf51f8629d39c2b5d026f98a4c134";
+      };
+    }
+    {
+      name = "extend_shallow___extend_shallow_2.0.1.tgz";
+      path = fetchurl {
+        name = "extend_shallow___extend_shallow_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz";
+        sha1 = "51af7d614ad9a9f610ea1bafbb989d6b1c56890f";
+      };
+    }
+    {
+      name = "extend_shallow___extend_shallow_3.0.2.tgz";
+      path = fetchurl {
+        name = "extend_shallow___extend_shallow_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz";
+        sha1 = "26a71aaf073b39fb2127172746131c2704028db8";
+      };
+    }
+    {
+      name = "extend___extend_3.0.2.tgz";
+      path = fetchurl {
+        name = "extend___extend_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz";
+        sha1 = "f8b1136b4071fbd8eb140aff858b1019ec2915fa";
+      };
+    }
+    {
+      name = "external_editor___external_editor_3.1.0.tgz";
+      path = fetchurl {
+        name = "external_editor___external_editor_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz";
+        sha1 = "cb03f740befae03ea4d283caed2741a83f335495";
+      };
+    }
+    {
+      name = "extglob___extglob_2.0.4.tgz";
+      path = fetchurl {
+        name = "extglob___extglob_2.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz";
+        sha1 = "ad00fe4dc612a9232e8718711dc5cb5ab0285543";
+      };
+    }
+    {
+      name = "extract_files___extract_files_5.0.1.tgz";
+      path = fetchurl {
+        name = "extract_files___extract_files_5.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/extract-files/-/extract-files-5.0.1.tgz";
+        sha1 = "c9492a8410be643e260a376f0151361993d5f659";
+      };
+    }
+    {
+      name = "extract_from_css___extract_from_css_0.4.4.tgz";
+      path = fetchurl {
+        name = "extract_from_css___extract_from_css_0.4.4.tgz";
+        url  = "https://registry.yarnpkg.com/extract-from-css/-/extract-from-css-0.4.4.tgz";
+        sha1 = "1ea7df2e7c7c6eb9922fa08e8adaea486f6f8f92";
+      };
+    }
+    {
+      name = "extsprintf___extsprintf_1.3.0.tgz";
+      path = fetchurl {
+        name = "extsprintf___extsprintf_1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz";
+        sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
+      };
+    }
+    {
+      name = "fast_deep_equal___fast_deep_equal_3.1.1.tgz";
+      path = fetchurl {
+        name = "fast_deep_equal___fast_deep_equal_3.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz";
+        sha1 = "545145077c501491e33b15ec408c294376e94ae4";
+      };
+    }
+    {
+      name = "fast_glob___fast_glob_2.2.6.tgz";
+      path = fetchurl {
+        name = "fast_glob___fast_glob_2.2.6.tgz";
+        url  = "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.6.tgz";
+        sha1 = "a5d5b697ec8deda468d85a74035290a025a95295";
+      };
+    }
+    {
+      name = "fast_json_stable_stringify___fast_json_stable_stringify_2.0.0.tgz";
+      path = fetchurl {
+        name = "fast_json_stable_stringify___fast_json_stable_stringify_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz";
+        sha1 = "d5142c0caee6b1189f87d3a76111064f86c8bbf2";
+      };
+    }
+    {
+      name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz";
+      path = fetchurl {
+        name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
+        sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
+      };
+    }
+    {
+      name = "fault___fault_1.0.2.tgz";
+      path = fetchurl {
+        name = "fault___fault_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/fault/-/fault-1.0.2.tgz";
+        sha1 = "c3d0fec202f172a3a4d414042ad2bb5e2a3ffbaa";
+      };
+    }
+    {
+      name = "faye_websocket___faye_websocket_0.10.0.tgz";
+      path = fetchurl {
+        name = "faye_websocket___faye_websocket_0.10.0.tgz";
+        url  = "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz";
+        sha1 = "4e492f8d04dfb6f89003507f6edbf2d501e7c6f4";
+      };
+    }
+    {
+      name = "faye_websocket___faye_websocket_0.11.1.tgz";
+      path = fetchurl {
+        name = "faye_websocket___faye_websocket_0.11.1.tgz";
+        url  = "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz";
+        sha1 = "f0efe18c4f56e4f40afc7e06c719fd5ee6188f38";
+      };
+    }
+    {
+      name = "fb_watchman___fb_watchman_2.0.0.tgz";
+      path = fetchurl {
+        name = "fb_watchman___fb_watchman_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz";
+        sha1 = "54e9abf7dfa2f26cd9b1636c588c1afc05de5d58";
+      };
+    }
+    {
+      name = "figgy_pudding___figgy_pudding_3.5.1.tgz";
+      path = fetchurl {
+        name = "figgy_pudding___figgy_pudding_3.5.1.tgz";
+        url  = "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz";
+        sha1 = "862470112901c727a0e495a80744bd5baa1d6790";
+      };
+    }
+    {
+      name = "figures___figures_3.2.0.tgz";
+      path = fetchurl {
+        name = "figures___figures_3.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz";
+        sha1 = "625c18bd293c604dc4a8ddb2febf0c88341746af";
+      };
+    }
+    {
+      name = "file_entry_cache___file_entry_cache_5.0.1.tgz";
+      path = fetchurl {
+        name = "file_entry_cache___file_entry_cache_5.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz";
+        sha1 = "ca0f6efa6dd3d561333fb14515065c2fafdf439c";
+      };
+    }
+    {
+      name = "file_loader___file_loader_5.1.0.tgz";
+      path = fetchurl {
+        name = "file_loader___file_loader_5.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/file-loader/-/file-loader-5.1.0.tgz";
+        sha1 = "cb56c070efc0e40666424309bd0d9e45ac6f2bb8";
+      };
+    }
+    {
+      name = "fileset___fileset_2.0.3.tgz";
+      path = fetchurl {
+        name = "fileset___fileset_2.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz";
+        sha1 = "8e7548a96d3cc2327ee5e674168723a333bba2a0";
+      };
+    }
+    {
+      name = "filesize___filesize_3.6.1.tgz";
+      path = fetchurl {
+        name = "filesize___filesize_3.6.1.tgz";
+        url  = "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz";
+        sha1 = "090bb3ee01b6f801a8a8be99d31710b3422bb317";
+      };
+    }
+    {
+      name = "fill_range___fill_range_4.0.0.tgz";
+      path = fetchurl {
+        name = "fill_range___fill_range_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz";
+        sha1 = "d544811d428f98eb06a63dc402d2403c328c38f7";
+      };
+    }
+    {
+      name = "fill_range___fill_range_7.0.1.tgz";
+      path = fetchurl {
+        name = "fill_range___fill_range_7.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz";
+        sha1 = "1919a6a7c75fe38b2c7c77e5198535da9acdda40";
+      };
+    }
+    {
+      name = "finalhandler___finalhandler_1.1.0.tgz";
+      path = fetchurl {
+        name = "finalhandler___finalhandler_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz";
+        sha1 = "ce0b6855b45853e791b2fcc680046d88253dd7f5";
+      };
+    }
+    {
+      name = "finalhandler___finalhandler_1.1.2.tgz";
+      path = fetchurl {
+        name = "finalhandler___finalhandler_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz";
+        sha1 = "b7e7d000ffd11938d0fdb053506f6ebabe9f587d";
+      };
+    }
+    {
+      name = "find_cache_dir___find_cache_dir_2.1.0.tgz";
+      path = fetchurl {
+        name = "find_cache_dir___find_cache_dir_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz";
+        sha1 = "8d0f94cd13fe43c6c7c261a0d86115ca918c05f7";
+      };
+    }
+    {
+      name = "find_cache_dir___find_cache_dir_3.0.0.tgz";
+      path = fetchurl {
+        name = "find_cache_dir___find_cache_dir_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.0.0.tgz";
+        sha1 = "cd4b7dd97b7185b7e17dbfe2d6e4115ee3eeb8fc";
+      };
+    }
+    {
+      name = "find_root___find_root_1.1.0.tgz";
+      path = fetchurl {
+        name = "find_root___find_root_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz";
+        sha1 = "abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4";
+      };
+    }
+    {
+      name = "find_up___find_up_1.1.2.tgz";
+      path = fetchurl {
+        name = "find_up___find_up_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz";
+        sha1 = "6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f";
+      };
+    }
+    {
+      name = "find_up___find_up_2.1.0.tgz";
+      path = fetchurl {
+        name = "find_up___find_up_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz";
+        sha1 = "45d1b7e506c717ddd482775a2b77920a3c0c57a7";
+      };
+    }
+    {
+      name = "find_up___find_up_3.0.0.tgz";
+      path = fetchurl {
+        name = "find_up___find_up_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz";
+        sha1 = "49169f1d7993430646da61ecc5ae355c21c97b73";
+      };
+    }
+    {
+      name = "find_up___find_up_4.1.0.tgz";
+      path = fetchurl {
+        name = "find_up___find_up_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz";
+        sha1 = "97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19";
+      };
+    }
+    {
+      name = "findup_sync___findup_sync_3.0.0.tgz";
+      path = fetchurl {
+        name = "findup_sync___findup_sync_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz";
+        sha1 = "17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1";
+      };
+    }
+    {
+      name = "flat_cache___flat_cache_2.0.1.tgz";
+      path = fetchurl {
+        name = "flat_cache___flat_cache_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz";
+        sha1 = "5d296d6f04bda44a4630a301413bdbc2ec085ec0";
+      };
+    }
+    {
+      name = "flatted___flatted_2.0.0.tgz";
+      path = fetchurl {
+        name = "flatted___flatted_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz";
+        sha1 = "55122b6536ea496b4b44893ee2608141d10d9916";
+      };
+    }
+    {
+      name = "flush_write_stream___flush_write_stream_1.1.1.tgz";
+      path = fetchurl {
+        name = "flush_write_stream___flush_write_stream_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz";
+        sha1 = "8dd7d873a1babc207d94ead0c2e0e44276ebf2e8";
+      };
+    }
+    {
+      name = "follow_redirects___follow_redirects_1.5.10.tgz";
+      path = fetchurl {
+        name = "follow_redirects___follow_redirects_1.5.10.tgz";
+        url  = "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz";
+        sha1 = "7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a";
+      };
+    }
+    {
+      name = "for_in___for_in_1.0.2.tgz";
+      path = fetchurl {
+        name = "for_in___for_in_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz";
+        sha1 = "81068d295a8142ec0ac726c6e2200c30fb6d5e80";
+      };
+    }
+    {
+      name = "forever_agent___forever_agent_0.6.1.tgz";
+      path = fetchurl {
+        name = "forever_agent___forever_agent_0.6.1.tgz";
+        url  = "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz";
+        sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
+      };
+    }
+    {
+      name = "form_data___form_data_2.3.3.tgz";
+      path = fetchurl {
+        name = "form_data___form_data_2.3.3.tgz";
+        url  = "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz";
+        sha1 = "dcce52c05f644f298c6a7ab936bd724ceffbf3a6";
+      };
+    }
+    {
+      name = "format___format_0.2.2.tgz";
+      path = fetchurl {
+        name = "format___format_0.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz";
+        sha1 = "d6170107e9efdc4ed30c9dc39016df942b5cb58b";
+      };
+    }
+    {
+      name = "formdata_polyfill___formdata_polyfill_3.0.19.tgz";
+      path = fetchurl {
+        name = "formdata_polyfill___formdata_polyfill_3.0.19.tgz";
+        url  = "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-3.0.19.tgz";
+        sha1 = "72f517db3a646a5dd8c31af0edf111fd8f1e4cee";
+      };
+    }
+    {
+      name = "forwarded___forwarded_0.1.2.tgz";
+      path = fetchurl {
+        name = "forwarded___forwarded_0.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz";
+        sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84";
+      };
+    }
+    {
+      name = "fragment_cache___fragment_cache_0.2.1.tgz";
+      path = fetchurl {
+        name = "fragment_cache___fragment_cache_0.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz";
+        sha1 = "4290fad27f13e89be7f33799c6bc5a0abfff0d19";
+      };
+    }
+    {
+      name = "fresh___fresh_0.5.2.tgz";
+      path = fetchurl {
+        name = "fresh___fresh_0.5.2.tgz";
+        url  = "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz";
+        sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
+      };
+    }
+    {
+      name = "from2___from2_2.3.0.tgz";
+      path = fetchurl {
+        name = "from2___from2_2.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz";
+        sha1 = "8bfb5502bde4a4d36cfdeea007fcca21d7e382af";
+      };
+    }
+    {
+      name = "fs_extra___fs_extra_7.0.1.tgz";
+      path = fetchurl {
+        name = "fs_extra___fs_extra_7.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz";
+        sha1 = "4f189c44aa123b895f722804f55ea23eadc348e9";
+      };
+    }
+    {
+      name = "fs_minipass___fs_minipass_1.2.6.tgz";
+      path = fetchurl {
+        name = "fs_minipass___fs_minipass_1.2.6.tgz";
+        url  = "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz";
+        sha1 = "2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07";
+      };
+    }
+    {
+      name = "fs_minipass___fs_minipass_2.0.0.tgz";
+      path = fetchurl {
+        name = "fs_minipass___fs_minipass_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.0.0.tgz";
+        sha1 = "a6415edab02fae4b9e9230bc87ee2e4472003cd1";
+      };
+    }
+    {
+      name = "fs_write_stream_atomic___fs_write_stream_atomic_1.0.10.tgz";
+      path = fetchurl {
+        name = "fs_write_stream_atomic___fs_write_stream_atomic_1.0.10.tgz";
+        url  = "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz";
+        sha1 = "b47df53493ef911df75731e70a9ded0189db40c9";
+      };
+    }
+    {
+      name = "fs.realpath___fs.realpath_1.0.0.tgz";
+      path = fetchurl {
+        name = "fs.realpath___fs.realpath_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz";
+        sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
+      };
+    }
+    {
+      name = "fsevents___fsevents_1.2.9.tgz";
+      path = fetchurl {
+        name = "fsevents___fsevents_1.2.9.tgz";
+        url  = "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz";
+        sha1 = "3f5ed66583ccd6f400b5a00db6f7e861363e388f";
+      };
+    }
+    {
+      name = "fsevents___fsevents_2.0.7.tgz";
+      path = fetchurl {
+        name = "fsevents___fsevents_2.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.7.tgz";
+        sha1 = "382c9b443c6cbac4c57187cdda23aa3bf1ccfc2a";
+      };
+    }
+    {
+      name = "fstream___fstream_1.0.12.tgz";
+      path = fetchurl {
+        name = "fstream___fstream_1.0.12.tgz";
+        url  = "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz";
+        sha1 = "4e8ba8ee2d48be4f7d0de505455548eae5932045";
+      };
+    }
+    {
+      name = "function_bind___function_bind_1.1.1.tgz";
+      path = fetchurl {
+        name = "function_bind___function_bind_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz";
+        sha1 = "a56899d3ea3c9bab874bb9773b7c5ede92f4895d";
+      };
+    }
+    {
+      name = "functional_red_black_tree___functional_red_black_tree_1.0.1.tgz";
+      path = fetchurl {
+        name = "functional_red_black_tree___functional_red_black_tree_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz";
+        sha1 = "1b0ab3bd553b2a0d6399d29c0e3ea0b252078327";
+      };
+    }
+    {
+      name = "fuzzaldrin_plus___fuzzaldrin_plus_0.6.0.tgz";
+      path = fetchurl {
+        name = "fuzzaldrin_plus___fuzzaldrin_plus_0.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/fuzzaldrin-plus/-/fuzzaldrin-plus-0.6.0.tgz";
+        sha1 = "832f6489fbe876769459599c914a670ec22947ee";
+      };
+    }
+    {
+      name = "gauge___gauge_2.7.4.tgz";
+      path = fetchurl {
+        name = "gauge___gauge_2.7.4.tgz";
+        url  = "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz";
+        sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
+      };
+    }
+    {
+      name = "gaze___gaze_1.1.3.tgz";
+      path = fetchurl {
+        name = "gaze___gaze_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz";
+        sha1 = "c441733e13b927ac8c0ff0b4c3b033f28812924a";
+      };
+    }
+    {
+      name = "gensync___gensync_1.0.0_beta.1.tgz";
+      path = fetchurl {
+        name = "gensync___gensync_1.0.0_beta.1.tgz";
+        url  = "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz";
+        sha1 = "58f4361ff987e5ff6e1e7a210827aa371eaac269";
+      };
+    }
+    {
+      name = "get_caller_file___get_caller_file_1.0.3.tgz";
+      path = fetchurl {
+        name = "get_caller_file___get_caller_file_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz";
+        sha1 = "f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a";
+      };
+    }
+    {
+      name = "get_caller_file___get_caller_file_2.0.5.tgz";
+      path = fetchurl {
+        name = "get_caller_file___get_caller_file_2.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz";
+        sha1 = "4f94412a82db32f36e3b0b9741f8a97feb031f7e";
+      };
+    }
+    {
+      name = "get_stdin___get_stdin_4.0.1.tgz";
+      path = fetchurl {
+        name = "get_stdin___get_stdin_4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz";
+        sha1 = "b968c6b0a04384324902e8bf1a5df32579a450fe";
+      };
+    }
+    {
+      name = "get_stdin___get_stdin_6.0.0.tgz";
+      path = fetchurl {
+        name = "get_stdin___get_stdin_6.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz";
+        sha1 = "9e09bf712b360ab9225e812048f71fde9c89657b";
+      };
+    }
+    {
+      name = "get_stdin___get_stdin_7.0.0.tgz";
+      path = fetchurl {
+        name = "get_stdin___get_stdin_7.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz";
+        sha1 = "8d5de98f15171a125c5e516643c7a6d0ea8a96f6";
+      };
+    }
+    {
+      name = "get_stdin___get_stdin_5.0.1.tgz";
+      path = fetchurl {
+        name = "get_stdin___get_stdin_5.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz";
+        sha1 = "122e161591e21ff4c52530305693f20e6393a398";
+      };
+    }
+    {
+      name = "get_stream___get_stream_3.0.0.tgz";
+      path = fetchurl {
+        name = "get_stream___get_stream_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz";
+        sha1 = "8e943d1358dc37555054ecbe2edb05aa174ede14";
+      };
+    }
+    {
+      name = "get_stream___get_stream_4.1.0.tgz";
+      path = fetchurl {
+        name = "get_stream___get_stream_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz";
+        sha1 = "c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5";
+      };
+    }
+    {
+      name = "get_value___get_value_2.0.6.tgz";
+      path = fetchurl {
+        name = "get_value___get_value_2.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz";
+        sha1 = "dc15ca1c672387ca76bd37ac0a395ba2042a2c28";
+      };
+    }
+    {
+      name = "getpass___getpass_0.1.7.tgz";
+      path = fetchurl {
+        name = "getpass___getpass_0.1.7.tgz";
+        url  = "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz";
+        sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
+      };
+    }
+    {
+      name = "gettext_extractor_vue___gettext_extractor_vue_4.0.2.tgz";
+      path = fetchurl {
+        name = "gettext_extractor_vue___gettext_extractor_vue_4.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/gettext-extractor-vue/-/gettext-extractor-vue-4.0.2.tgz";
+        sha1 = "16e1cdbdaf37e5bdf3cb0aff63685bdc5e74e906";
+      };
+    }
+    {
+      name = "gettext_extractor___gettext_extractor_3.4.3.tgz";
+      path = fetchurl {
+        name = "gettext_extractor___gettext_extractor_3.4.3.tgz";
+        url  = "https://registry.yarnpkg.com/gettext-extractor/-/gettext-extractor-3.4.3.tgz";
+        sha1 = "882679cefc71888eb6e69297e6b2dc14c0384fef";
+      };
+    }
+    {
+      name = "glob_parent___glob_parent_3.1.0.tgz";
+      path = fetchurl {
+        name = "glob_parent___glob_parent_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz";
+        sha1 = "9e6af6299d8d3bd2bd40430832bd113df906c5ae";
+      };
+    }
+    {
+      name = "glob_parent___glob_parent_5.0.0.tgz";
+      path = fetchurl {
+        name = "glob_parent___glob_parent_5.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz";
+        sha1 = "1dc99f0f39b006d3e92c2c284068382f0c20e954";
+      };
+    }
+    {
+      name = "glob_to_regexp___glob_to_regexp_0.3.0.tgz";
+      path = fetchurl {
+        name = "glob_to_regexp___glob_to_regexp_0.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz";
+        sha1 = "8c5a1494d2066c570cc3bfe4496175acc4d502ab";
+      };
+    }
+    {
+      name = "glob_to_regexp___glob_to_regexp_0.4.1.tgz";
+      path = fetchurl {
+        name = "glob_to_regexp___glob_to_regexp_0.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz";
+        sha1 = "c75297087c851b9a578bd217dd59a92f59fe546e";
+      };
+    }
+    {
+      name = "glob___glob_7.1.6.tgz";
+      path = fetchurl {
+        name = "glob___glob_7.1.6.tgz";
+        url  = "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz";
+        sha1 = "141f33b81a7c2492e125594307480c46679278a6";
+      };
+    }
+    {
+      name = "global_dirs___global_dirs_0.1.1.tgz";
+      path = fetchurl {
+        name = "global_dirs___global_dirs_0.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz";
+        sha1 = "b319c0dd4607f353f3be9cca4c72fc148c49f445";
+      };
+    }
+    {
+      name = "global_modules___global_modules_2.0.0.tgz";
+      path = fetchurl {
+        name = "global_modules___global_modules_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz";
+        sha1 = "997605ad2345f27f51539bea26574421215c7780";
+      };
+    }
+    {
+      name = "global_modules___global_modules_1.0.0.tgz";
+      path = fetchurl {
+        name = "global_modules___global_modules_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz";
+        sha1 = "6d770f0eb523ac78164d72b5e71a8877265cc3ea";
+      };
+    }
+    {
+      name = "global_prefix___global_prefix_1.0.2.tgz";
+      path = fetchurl {
+        name = "global_prefix___global_prefix_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz";
+        sha1 = "dbf743c6c14992593c655568cb66ed32c0122ebe";
+      };
+    }
+    {
+      name = "global_prefix___global_prefix_3.0.0.tgz";
+      path = fetchurl {
+        name = "global_prefix___global_prefix_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz";
+        sha1 = "fc85f73064df69f50421f47f883fe5b913ba9b97";
+      };
+    }
+    {
+      name = "globals___globals_11.12.0.tgz";
+      path = fetchurl {
+        name = "globals___globals_11.12.0.tgz";
+        url  = "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz";
+        sha1 = "ab8795338868a0babd8525758018c2a7eb95c42e";
+      };
+    }
+    {
+      name = "globals___globals_12.3.0.tgz";
+      path = fetchurl {
+        name = "globals___globals_12.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz";
+        sha1 = "1e564ee5c4dded2ab098b0f88f24702a3c56be13";
+      };
+    }
+    {
+      name = "globby___globby_6.1.0.tgz";
+      path = fetchurl {
+        name = "globby___globby_6.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz";
+        sha1 = "f5a6d70e8395e21c858fb0489d64df02424d506c";
+      };
+    }
+    {
+      name = "globby___globby_7.1.1.tgz";
+      path = fetchurl {
+        name = "globby___globby_7.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz";
+        sha1 = "fb2ccff9401f8600945dfada97440cca972b8680";
+      };
+    }
+    {
+      name = "globby___globby_9.2.0.tgz";
+      path = fetchurl {
+        name = "globby___globby_9.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz";
+        sha1 = "fd029a706c703d29bdd170f4b6db3a3f7a7cb63d";
+      };
+    }
+    {
+      name = "globjoin___globjoin_0.1.4.tgz";
+      path = fetchurl {
+        name = "globjoin___globjoin_0.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz";
+        sha1 = "2f4494ac8919e3767c5cbb691e9f463324285d43";
+      };
+    }
+    {
+      name = "globule___globule_1.2.1.tgz";
+      path = fetchurl {
+        name = "globule___globule_1.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz";
+        sha1 = "5dffb1b191f22d20797a9369b49eab4e9839696d";
+      };
+    }
+    {
+      name = "gonzales_pe___gonzales_pe_4.2.3.tgz";
+      path = fetchurl {
+        name = "gonzales_pe___gonzales_pe_4.2.3.tgz";
+        url  = "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.2.3.tgz";
+        sha1 = "41091703625433285e0aee3aa47829fc1fbeb6f2";
+      };
+    }
+    {
+      name = "good_listener___good_listener_1.2.2.tgz";
+      path = fetchurl {
+        name = "good_listener___good_listener_1.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz";
+        sha1 = "d53b30cdf9313dffb7dc9a0d477096aa6d145c50";
+      };
+    }
+    {
+      name = "got___got_6.7.1.tgz";
+      path = fetchurl {
+        name = "got___got_6.7.1.tgz";
+        url  = "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz";
+        sha1 = "240cd05785a9a18e561dc1b44b41c763ef1e8db0";
+      };
+    }
+    {
+      name = "graceful_fs___graceful_fs_4.2.3.tgz";
+      path = fetchurl {
+        name = "graceful_fs___graceful_fs_4.2.3.tgz";
+        url  = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz";
+        sha1 = "4a12ff1b60376ef09862c2093edd908328be8423";
+      };
+    }
+    {
+      name = "graceful_readlink___graceful_readlink_1.0.1.tgz";
+      path = fetchurl {
+        name = "graceful_readlink___graceful_readlink_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz";
+        sha1 = "4cafad76bc62f02fa039b2f94e9a3dd3a391a725";
+      };
+    }
+    {
+      name = "graphlib___graphlib_2.1.8.tgz";
+      path = fetchurl {
+        name = "graphlib___graphlib_2.1.8.tgz";
+        url  = "https://registry.yarnpkg.com/graphlib/-/graphlib-2.1.8.tgz";
+        sha1 = "5761d414737870084c92ec7b5dbcb0592c9d35da";
+      };
+    }
+    {
+      name = "graphql_tag___graphql_tag_2.10.3.tgz";
+      path = fetchurl {
+        name = "graphql_tag___graphql_tag_2.10.3.tgz";
+        url  = "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.3.tgz";
+        sha1 = "ea1baba5eb8fc6339e4c4cf049dabe522b0edf03";
+      };
+    }
+    {
+      name = "graphql___graphql_14.0.2.tgz";
+      path = fetchurl {
+        name = "graphql___graphql_14.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/graphql/-/graphql-14.0.2.tgz";
+        sha1 = "7dded337a4c3fd2d075692323384034b357f5650";
+      };
+    }
+    {
+      name = "growly___growly_1.3.0.tgz";
+      path = fetchurl {
+        name = "growly___growly_1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz";
+        sha1 = "f10748cbe76af964b7c96c93c6bcc28af120c081";
+      };
+    }
+    {
+      name = "gzip_size___gzip_size_5.0.0.tgz";
+      path = fetchurl {
+        name = "gzip_size___gzip_size_5.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz";
+        sha1 = "a55ecd99222f4c48fd8c01c625ce3b349d0a0e80";
+      };
+    }
+    {
+      name = "handle_thing___handle_thing_2.0.0.tgz";
+      path = fetchurl {
+        name = "handle_thing___handle_thing_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz";
+        sha1 = "0e039695ff50c93fc288557d696f3c1dc6776754";
+      };
+    }
+    {
+      name = "handlebars___handlebars_4.7.2.tgz";
+      path = fetchurl {
+        name = "handlebars___handlebars_4.7.2.tgz";
+        url  = "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.2.tgz";
+        sha1 = "01127b3840156a0927058779482031afe0e730d7";
+      };
+    }
+    {
+      name = "har_schema___har_schema_2.0.0.tgz";
+      path = fetchurl {
+        name = "har_schema___har_schema_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz";
+        sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
+      };
+    }
+    {
+      name = "har_validator___har_validator_5.1.3.tgz";
+      path = fetchurl {
+        name = "har_validator___har_validator_5.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz";
+        sha1 = "1ef89ebd3e4996557675eed9893110dc350fa080";
+      };
+    }
+    {
+      name = "has_ansi___has_ansi_2.0.0.tgz";
+      path = fetchurl {
+        name = "has_ansi___has_ansi_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz";
+        sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
+      };
+    }
+    {
+      name = "has_binary2___has_binary2_1.0.2.tgz";
+      path = fetchurl {
+        name = "has_binary2___has_binary2_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.2.tgz";
+        sha1 = "e83dba49f0b9be4d026d27365350d9f03f54be98";
+      };
+    }
+    {
+      name = "has_cors___has_cors_1.1.0.tgz";
+      path = fetchurl {
+        name = "has_cors___has_cors_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz";
+        sha1 = "5e474793f7ea9843d1bb99c23eef49ff126fff39";
+      };
+    }
+    {
+      name = "has_flag___has_flag_3.0.0.tgz";
+      path = fetchurl {
+        name = "has_flag___has_flag_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz";
+        sha1 = "b5d454dc2199ae225699f3467e5a07f3b955bafd";
+      };
+    }
+    {
+      name = "has_flag___has_flag_4.0.0.tgz";
+      path = fetchurl {
+        name = "has_flag___has_flag_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz";
+        sha1 = "944771fd9c81c81265c4d6941860da06bb59479b";
+      };
+    }
+    {
+      name = "has_symbols___has_symbols_1.0.1.tgz";
+      path = fetchurl {
+        name = "has_symbols___has_symbols_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz";
+        sha1 = "9f5214758a44196c406d9bd76cebf81ec2dd31e8";
+      };
+    }
+    {
+      name = "has_unicode___has_unicode_2.0.1.tgz";
+      path = fetchurl {
+        name = "has_unicode___has_unicode_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz";
+        sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
+      };
+    }
+    {
+      name = "has_value___has_value_0.3.1.tgz";
+      path = fetchurl {
+        name = "has_value___has_value_0.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz";
+        sha1 = "7b1f58bada62ca827ec0a2078025654845995e1f";
+      };
+    }
+    {
+      name = "has_value___has_value_1.0.0.tgz";
+      path = fetchurl {
+        name = "has_value___has_value_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz";
+        sha1 = "18b281da585b1c5c51def24c930ed29a0be6b177";
+      };
+    }
+    {
+      name = "has_values___has_values_0.1.4.tgz";
+      path = fetchurl {
+        name = "has_values___has_values_0.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz";
+        sha1 = "6d61de95d91dfca9b9a02089ad384bff8f62b771";
+      };
+    }
+    {
+      name = "has_values___has_values_1.0.0.tgz";
+      path = fetchurl {
+        name = "has_values___has_values_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz";
+        sha1 = "95b0b63fec2146619a6fe57fe75628d5a39efe4f";
+      };
+    }
+    {
+      name = "has___has_1.0.3.tgz";
+      path = fetchurl {
+        name = "has___has_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz";
+        sha1 = "722d7cbfc1f6aa8241f16dd814e011e1f41e8796";
+      };
+    }
+    {
+      name = "hash_base___hash_base_2.0.2.tgz";
+      path = fetchurl {
+        name = "hash_base___hash_base_2.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz";
+        sha1 = "66ea1d856db4e8a5470cadf6fce23ae5244ef2e1";
+      };
+    }
+    {
+      name = "hash_base___hash_base_3.0.4.tgz";
+      path = fetchurl {
+        name = "hash_base___hash_base_3.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz";
+        sha1 = "5fc8686847ecd73499403319a6b0a3f3f6ae4918";
+      };
+    }
+    {
+      name = "hash_sum___hash_sum_1.0.2.tgz";
+      path = fetchurl {
+        name = "hash_sum___hash_sum_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz";
+        sha1 = "33b40777754c6432573c120cc3808bbd10d47f04";
+      };
+    }
+    {
+      name = "hash.js___hash.js_1.1.3.tgz";
+      path = fetchurl {
+        name = "hash.js___hash.js_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz";
+        sha1 = "340dedbe6290187151c1ea1d777a3448935df846";
+      };
+    }
+    {
+      name = "he___he_1.2.0.tgz";
+      path = fetchurl {
+        name = "he___he_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz";
+        sha1 = "84ae65fa7eafb165fddb61566ae14baf05664f0f";
+      };
+    }
+    {
+      name = "highlight.js___highlight.js_9.13.1.tgz";
+      path = fetchurl {
+        name = "highlight.js___highlight.js_9.13.1.tgz";
+        url  = "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.13.1.tgz";
+        sha1 = "054586d53a6863311168488a0f58d6c505ce641e";
+      };
+    }
+    {
+      name = "hmac_drbg___hmac_drbg_1.0.1.tgz";
+      path = fetchurl {
+        name = "hmac_drbg___hmac_drbg_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz";
+        sha1 = "d2745701025a6c775a6c545793ed502fc0c649a1";
+      };
+    }
+    {
+      name = "homedir_polyfill___homedir_polyfill_1.0.1.tgz";
+      path = fetchurl {
+        name = "homedir_polyfill___homedir_polyfill_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz";
+        sha1 = "4c2bbc8a758998feebf5ed68580f76d46768b4bc";
+      };
+    }
+    {
+      name = "hoopy___hoopy_0.1.4.tgz";
+      path = fetchurl {
+        name = "hoopy___hoopy_0.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz";
+        sha1 = "609207d661100033a9a9402ad3dea677381c1b1d";
+      };
+    }
+    {
+      name = "hosted_git_info___hosted_git_info_2.2.0.tgz";
+      path = fetchurl {
+        name = "hosted_git_info___hosted_git_info_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.2.0.tgz";
+        sha1 = "7a0d097863d886c0fabbdcd37bf1758d8becf8a5";
+      };
+    }
+    {
+      name = "hpack.js___hpack.js_2.1.6.tgz";
+      path = fetchurl {
+        name = "hpack.js___hpack.js_2.1.6.tgz";
+        url  = "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz";
+        sha1 = "87774c0949e513f42e84575b3c45681fade2a0b2";
+      };
+    }
+    {
+      name = "html_encoding_sniffer___html_encoding_sniffer_1.0.2.tgz";
+      path = fetchurl {
+        name = "html_encoding_sniffer___html_encoding_sniffer_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz";
+        sha1 = "e70d84b94da53aa375e11fe3a351be6642ca46f8";
+      };
+    }
+    {
+      name = "html_entities___html_entities_1.2.1.tgz";
+      path = fetchurl {
+        name = "html_entities___html_entities_1.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz";
+        sha1 = "0df29351f0721163515dfb9e5543e5f6eed5162f";
+      };
+    }
+    {
+      name = "html_escaper___html_escaper_2.0.0.tgz";
+      path = fetchurl {
+        name = "html_escaper___html_escaper_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.0.tgz";
+        sha1 = "71e87f931de3fe09e56661ab9a29aadec707b491";
+      };
+    }
+    {
+      name = "html_minifier___html_minifier_4.0.0.tgz";
+      path = fetchurl {
+        name = "html_minifier___html_minifier_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/html-minifier/-/html-minifier-4.0.0.tgz";
+        sha1 = "cca9aad8bce1175e02e17a8c33e46d8988889f56";
+      };
+    }
+    {
+      name = "html_tags___html_tags_3.0.0.tgz";
+      path = fetchurl {
+        name = "html_tags___html_tags_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/html-tags/-/html-tags-3.0.0.tgz";
+        sha1 = "41f57708c9e6b7b46a00a22317d614c4a2bab166";
+      };
+    }
+    {
+      name = "htmlparser2___htmlparser2_3.10.0.tgz";
+      path = fetchurl {
+        name = "htmlparser2___htmlparser2_3.10.0.tgz";
+        url  = "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.0.tgz";
+        sha1 = "5f5e422dcf6119c0d983ed36260ce9ded0bee464";
+      };
+    }
+    {
+      name = "htmlparser2___htmlparser2_4.1.0.tgz";
+      path = fetchurl {
+        name = "htmlparser2___htmlparser2_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz";
+        sha1 = "9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78";
+      };
+    }
+    {
+      name = "http_deceiver___http_deceiver_1.2.7.tgz";
+      path = fetchurl {
+        name = "http_deceiver___http_deceiver_1.2.7.tgz";
+        url  = "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz";
+        sha1 = "fa7168944ab9a519d337cb0bec7284dc3e723d87";
+      };
+    }
+    {
+      name = "http_errors___http_errors_1.7.2.tgz";
+      path = fetchurl {
+        name = "http_errors___http_errors_1.7.2.tgz";
+        url  = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz";
+        sha1 = "4f5029cf13239f31036e5b2e55292bcfbcc85c8f";
+      };
+    }
+    {
+      name = "http_errors___http_errors_1.6.2.tgz";
+      path = fetchurl {
+        name = "http_errors___http_errors_1.6.2.tgz";
+        url  = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz";
+        sha1 = "0a002cc85707192a7e7946ceedc11155f60ec736";
+      };
+    }
+    {
+      name = "http_proxy_middleware___http_proxy_middleware_0.19.1.tgz";
+      path = fetchurl {
+        name = "http_proxy_middleware___http_proxy_middleware_0.19.1.tgz";
+        url  = "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz";
+        sha1 = "183c7dc4aa1479150306498c210cdaf96080a43a";
+      };
+    }
+    {
+      name = "http_proxy___http_proxy_1.18.0.tgz";
+      path = fetchurl {
+        name = "http_proxy___http_proxy_1.18.0.tgz";
+        url  = "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz";
+        sha1 = "dbe55f63e75a347db7f3d99974f2692a314a6a3a";
+      };
+    }
+    {
+      name = "http_signature___http_signature_1.2.0.tgz";
+      path = fetchurl {
+        name = "http_signature___http_signature_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz";
+        sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
+      };
+    }
+    {
+      name = "https_browserify___https_browserify_1.0.0.tgz";
+      path = fetchurl {
+        name = "https_browserify___https_browserify_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz";
+        sha1 = "ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73";
+      };
+    }
+    {
+      name = "iconv_lite___iconv_lite_0.4.24.tgz";
+      path = fetchurl {
+        name = "iconv_lite___iconv_lite_0.4.24.tgz";
+        url  = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz";
+        sha1 = "2022b4b25fbddc21d2f524974a474aafe733908b";
+      };
+    }
+    {
+      name = "icss_replace_symbols___icss_replace_symbols_1.1.0.tgz";
+      path = fetchurl {
+        name = "icss_replace_symbols___icss_replace_symbols_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz";
+        sha1 = "06ea6f83679a7749e386cfe1fe812ae5db223ded";
+      };
+    }
+    {
+      name = "icss_utils___icss_utils_4.1.1.tgz";
+      path = fetchurl {
+        name = "icss_utils___icss_utils_4.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz";
+        sha1 = "21170b53789ee27447c2f47dd683081403f9a467";
+      };
+    }
+    {
+      name = "ieee754___ieee754_1.1.13.tgz";
+      path = fetchurl {
+        name = "ieee754___ieee754_1.1.13.tgz";
+        url  = "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz";
+        sha1 = "ec168558e95aa181fd87d37f55c32bbcb6708b84";
+      };
+    }
+    {
+      name = "iferr___iferr_0.1.5.tgz";
+      path = fetchurl {
+        name = "iferr___iferr_0.1.5.tgz";
+        url  = "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz";
+        sha1 = "c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501";
+      };
+    }
+    {
+      name = "ignore_by_default___ignore_by_default_1.0.1.tgz";
+      path = fetchurl {
+        name = "ignore_by_default___ignore_by_default_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz";
+        sha1 = "48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09";
+      };
+    }
+    {
+      name = "ignore_walk___ignore_walk_3.0.1.tgz";
+      path = fetchurl {
+        name = "ignore_walk___ignore_walk_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz";
+        sha1 = "a83e62e7d272ac0e3b551aaa82831a19b69f82f8";
+      };
+    }
+    {
+      name = "ignore___ignore_3.3.10.tgz";
+      path = fetchurl {
+        name = "ignore___ignore_3.3.10.tgz";
+        url  = "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz";
+        sha1 = "0a97fb876986e8081c631160f8f9f389157f0043";
+      };
+    }
+    {
+      name = "ignore___ignore_4.0.6.tgz";
+      path = fetchurl {
+        name = "ignore___ignore_4.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz";
+        sha1 = "750e3db5862087b4737ebac8207ffd1ef27b25fc";
+      };
+    }
+    {
+      name = "ignore___ignore_5.1.2.tgz";
+      path = fetchurl {
+        name = "ignore___ignore_5.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/ignore/-/ignore-5.1.2.tgz";
+        sha1 = "e28e584d43ad7e92f96995019cc43b9e1ac49558";
+      };
+    }
+    {
+      name = "immediate___immediate_3.0.6.tgz";
+      path = fetchurl {
+        name = "immediate___immediate_3.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz";
+        sha1 = "9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b";
+      };
+    }
+    {
+      name = "immer___immer_5.2.1.tgz";
+      path = fetchurl {
+        name = "immer___immer_5.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/immer/-/immer-5.2.1.tgz";
+        sha1 = "7d4f74c242178e87151d595f48db1b5c51580485";
+      };
+    }
+    {
+      name = "import_fresh___import_fresh_2.0.0.tgz";
+      path = fetchurl {
+        name = "import_fresh___import_fresh_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz";
+        sha1 = "d81355c15612d386c61f9ddd3922d4304822a546";
+      };
+    }
+    {
+      name = "import_fresh___import_fresh_3.2.1.tgz";
+      path = fetchurl {
+        name = "import_fresh___import_fresh_3.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz";
+        sha1 = "633ff618506e793af5ac91bf48b72677e15cbe66";
+      };
+    }
+    {
+      name = "import_lazy___import_lazy_2.1.0.tgz";
+      path = fetchurl {
+        name = "import_lazy___import_lazy_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz";
+        sha1 = "05698e3d45c88e8d7e9d92cb0584e77f096f3e43";
+      };
+    }
+    {
+      name = "import_lazy___import_lazy_4.0.0.tgz";
+      path = fetchurl {
+        name = "import_lazy___import_lazy_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz";
+        sha1 = "e8eb627483a0a43da3c03f3e35548be5cb0cc153";
+      };
+    }
+    {
+      name = "import_local___import_local_2.0.0.tgz";
+      path = fetchurl {
+        name = "import_local___import_local_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz";
+        sha1 = "55070be38a5993cf18ef6db7e961f5bee5c5a09d";
+      };
+    }
+    {
+      name = "imports_loader___imports_loader_0.8.0.tgz";
+      path = fetchurl {
+        name = "imports_loader___imports_loader_0.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/imports-loader/-/imports-loader-0.8.0.tgz";
+        sha1 = "030ea51b8ca05977c40a3abfd9b4088fe0be9a69";
+      };
+    }
+    {
+      name = "imurmurhash___imurmurhash_0.1.4.tgz";
+      path = fetchurl {
+        name = "imurmurhash___imurmurhash_0.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz";
+        sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea";
+      };
+    }
+    {
+      name = "in_publish___in_publish_2.0.0.tgz";
+      path = fetchurl {
+        name = "in_publish___in_publish_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz";
+        sha1 = "e20ff5e3a2afc2690320b6dc552682a9c7fadf51";
+      };
+    }
+    {
+      name = "indent_string___indent_string_2.1.0.tgz";
+      path = fetchurl {
+        name = "indent_string___indent_string_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz";
+        sha1 = "8e2d48348742121b4a8218b7a137e9a52049dc80";
+      };
+    }
+    {
+      name = "indent_string___indent_string_3.2.0.tgz";
+      path = fetchurl {
+        name = "indent_string___indent_string_3.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz";
+        sha1 = "4a5fd6d27cc332f37e5419a504dbb837105c9289";
+      };
+    }
+    {
+      name = "indent_string___indent_string_4.0.0.tgz";
+      path = fetchurl {
+        name = "indent_string___indent_string_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz";
+        sha1 = "624f8f4497d619b2d9768531d58f4122854d7251";
+      };
+    }
+    {
+      name = "indexes_of___indexes_of_1.0.1.tgz";
+      path = fetchurl {
+        name = "indexes_of___indexes_of_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz";
+        sha1 = "f30f716c8e2bd346c7b67d3df3915566a7c05607";
+      };
+    }
+    {
+      name = "indexof___indexof_0.0.1.tgz";
+      path = fetchurl {
+        name = "indexof___indexof_0.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz";
+        sha1 = "82dc336d232b9062179d05ab3293a66059fd435d";
+      };
+    }
+    {
+      name = "infer_owner___infer_owner_1.0.4.tgz";
+      path = fetchurl {
+        name = "infer_owner___infer_owner_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz";
+        sha1 = "c4cefcaa8e51051c2a40ba2ce8a3d27295af9467";
+      };
+    }
+    {
+      name = "inflight___inflight_1.0.6.tgz";
+      path = fetchurl {
+        name = "inflight___inflight_1.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz";
+        sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
+      };
+    }
+    {
+      name = "inherits___inherits_2.0.3.tgz";
+      path = fetchurl {
+        name = "inherits___inherits_2.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz";
+        sha1 = "633c2c83e3da42a502f52466022480f4208261de";
+      };
+    }
+    {
+      name = "inherits___inherits_2.0.1.tgz";
+      path = fetchurl {
+        name = "inherits___inherits_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz";
+        sha1 = "b17d08d326b4423e568eff719f91b0b1cbdf69f1";
+      };
+    }
+    {
+      name = "ini___ini_1.3.5.tgz";
+      path = fetchurl {
+        name = "ini___ini_1.3.5.tgz";
+        url  = "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz";
+        sha1 = "eee25f56db1c9ec6085e0c22778083f596abf927";
+      };
+    }
+    {
+      name = "inquirer___inquirer_7.0.4.tgz";
+      path = fetchurl {
+        name = "inquirer___inquirer_7.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz";
+        sha1 = "99af5bde47153abca23f5c7fc30db247f39da703";
+      };
+    }
+    {
+      name = "internal_ip___internal_ip_4.3.0.tgz";
+      path = fetchurl {
+        name = "internal_ip___internal_ip_4.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz";
+        sha1 = "845452baad9d2ca3b69c635a137acb9a0dad0907";
+      };
+    }
+    {
+      name = "interpret___interpret_1.2.0.tgz";
+      path = fetchurl {
+        name = "interpret___interpret_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz";
+        sha1 = "d5061a6224be58e8083985f5014d844359576296";
+      };
+    }
+    {
+      name = "invariant___invariant_2.2.4.tgz";
+      path = fetchurl {
+        name = "invariant___invariant_2.2.4.tgz";
+        url  = "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz";
+        sha1 = "610f3c92c9359ce1db616e538008d23ff35158e6";
+      };
+    }
+    {
+      name = "invert_kv___invert_kv_1.0.0.tgz";
+      path = fetchurl {
+        name = "invert_kv___invert_kv_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz";
+        sha1 = "104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6";
+      };
+    }
+    {
+      name = "invert_kv___invert_kv_2.0.0.tgz";
+      path = fetchurl {
+        name = "invert_kv___invert_kv_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz";
+        sha1 = "7393f5afa59ec9ff5f67a27620d11c226e3eec02";
+      };
+    }
+    {
+      name = "ip_regex___ip_regex_2.1.0.tgz";
+      path = fetchurl {
+        name = "ip_regex___ip_regex_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz";
+        sha1 = "fa78bf5d2e6913c911ce9f819ee5146bb6d844e9";
+      };
+    }
+    {
+      name = "ip___ip_1.1.5.tgz";
+      path = fetchurl {
+        name = "ip___ip_1.1.5.tgz";
+        url  = "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz";
+        sha1 = "bdded70114290828c0a039e72ef25f5aaec4354a";
+      };
+    }
+    {
+      name = "ipaddr.js___ipaddr.js_1.9.0.tgz";
+      path = fetchurl {
+        name = "ipaddr.js___ipaddr.js_1.9.0.tgz";
+        url  = "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz";
+        sha1 = "37df74e430a0e47550fe54a2defe30d8acd95f65";
+      };
+    }
+    {
+      name = "is_absolute_url___is_absolute_url_3.0.3.tgz";
+      path = fetchurl {
+        name = "is_absolute_url___is_absolute_url_3.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz";
+        sha1 = "96c6a22b6a23929b11ea0afb1836c36ad4a5d698";
+      };
+    }
+    {
+      name = "is_accessor_descriptor___is_accessor_descriptor_0.1.6.tgz";
+      path = fetchurl {
+        name = "is_accessor_descriptor___is_accessor_descriptor_0.1.6.tgz";
+        url  = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz";
+        sha1 = "a9e12cb3ae8d876727eeef3843f8a0897b5c98d6";
+      };
+    }
+    {
+      name = "is_accessor_descriptor___is_accessor_descriptor_1.0.0.tgz";
+      path = fetchurl {
+        name = "is_accessor_descriptor___is_accessor_descriptor_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz";
+        sha1 = "169c2f6d3df1f992618072365c9b0ea1f6878656";
+      };
+    }
+    {
+      name = "is_alphabetical___is_alphabetical_1.0.2.tgz";
+      path = fetchurl {
+        name = "is_alphabetical___is_alphabetical_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.2.tgz";
+        sha1 = "1fa6e49213cb7885b75d15862fb3f3d96c884f41";
+      };
+    }
+    {
+      name = "is_alphanumeric___is_alphanumeric_1.0.0.tgz";
+      path = fetchurl {
+        name = "is_alphanumeric___is_alphanumeric_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz";
+        sha1 = "4a9cef71daf4c001c1d81d63d140cf53fd6889f4";
+      };
+    }
+    {
+      name = "is_alphanumerical___is_alphanumerical_1.0.2.tgz";
+      path = fetchurl {
+        name = "is_alphanumerical___is_alphanumerical_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz";
+        sha1 = "1138e9ae5040158dc6ff76b820acd6b7a181fd40";
+      };
+    }
+    {
+      name = "is_arrayish___is_arrayish_0.2.1.tgz";
+      path = fetchurl {
+        name = "is_arrayish___is_arrayish_0.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz";
+        sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d";
+      };
+    }
+    {
+      name = "is_binary_path___is_binary_path_1.0.1.tgz";
+      path = fetchurl {
+        name = "is_binary_path___is_binary_path_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz";
+        sha1 = "75f16642b480f187a711c814161fd3a4a7655898";
+      };
+    }
+    {
+      name = "is_binary_path___is_binary_path_2.1.0.tgz";
+      path = fetchurl {
+        name = "is_binary_path___is_binary_path_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz";
+        sha1 = "ea1f7f3b80f064236e83470f86c09c254fb45b09";
+      };
+    }
+    {
+      name = "is_buffer___is_buffer_1.1.6.tgz";
+      path = fetchurl {
+        name = "is_buffer___is_buffer_1.1.6.tgz";
+        url  = "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz";
+        sha1 = "efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be";
+      };
+    }
+    {
+      name = "is_buffer___is_buffer_2.0.3.tgz";
+      path = fetchurl {
+        name = "is_buffer___is_buffer_2.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz";
+        sha1 = "4ecf3fcf749cbd1e472689e109ac66261a25e725";
+      };
+    }
+    {
+      name = "is_callable___is_callable_1.1.5.tgz";
+      path = fetchurl {
+        name = "is_callable___is_callable_1.1.5.tgz";
+        url  = "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz";
+        sha1 = "f7e46b596890456db74e7f6e976cb3273d06faab";
+      };
+    }
+    {
+      name = "is_ci___is_ci_1.2.1.tgz";
+      path = fetchurl {
+        name = "is_ci___is_ci_1.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz";
+        sha1 = "e3779c8ee17fccf428488f6e281187f2e632841c";
+      };
+    }
+    {
+      name = "is_ci___is_ci_2.0.0.tgz";
+      path = fetchurl {
+        name = "is_ci___is_ci_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz";
+        sha1 = "6bc6334181810e04b5c22b3d589fdca55026404c";
+      };
+    }
+    {
+      name = "is_data_descriptor___is_data_descriptor_0.1.4.tgz";
+      path = fetchurl {
+        name = "is_data_descriptor___is_data_descriptor_0.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz";
+        sha1 = "0b5ee648388e2c860282e793f1856fec3f301b56";
+      };
+    }
+    {
+      name = "is_data_descriptor___is_data_descriptor_1.0.0.tgz";
+      path = fetchurl {
+        name = "is_data_descriptor___is_data_descriptor_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz";
+        sha1 = "d84876321d0e7add03990406abbbbd36ba9268c7";
+      };
+    }
+    {
+      name = "is_date_object___is_date_object_1.0.1.tgz";
+      path = fetchurl {
+        name = "is_date_object___is_date_object_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz";
+        sha1 = "9aa20eb6aeebbff77fbd33e74ca01b33581d3a16";
+      };
+    }
+    {
+      name = "is_decimal___is_decimal_1.0.2.tgz";
+      path = fetchurl {
+        name = "is_decimal___is_decimal_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.2.tgz";
+        sha1 = "894662d6a8709d307f3a276ca4339c8fa5dff0ff";
+      };
+    }
+    {
+      name = "is_descriptor___is_descriptor_0.1.6.tgz";
+      path = fetchurl {
+        name = "is_descriptor___is_descriptor_0.1.6.tgz";
+        url  = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz";
+        sha1 = "366d8240dde487ca51823b1ab9f07a10a78251ca";
+      };
+    }
+    {
+      name = "is_descriptor___is_descriptor_1.0.2.tgz";
+      path = fetchurl {
+        name = "is_descriptor___is_descriptor_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz";
+        sha1 = "3b159746a66604b04f8c81524ba365c5f14d86ec";
+      };
+    }
+    {
+      name = "is_directory___is_directory_0.3.1.tgz";
+      path = fetchurl {
+        name = "is_directory___is_directory_0.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz";
+        sha1 = "61339b6f2475fc772fd9c9d83f5c8575dc154ae1";
+      };
+    }
+    {
+      name = "is_extendable___is_extendable_0.1.1.tgz";
+      path = fetchurl {
+        name = "is_extendable___is_extendable_0.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz";
+        sha1 = "62b110e289a471418e3ec36a617d472e301dfc89";
+      };
+    }
+    {
+      name = "is_extendable___is_extendable_1.0.1.tgz";
+      path = fetchurl {
+        name = "is_extendable___is_extendable_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz";
+        sha1 = "a7470f9e426733d81bd81e1155264e3a3507cab4";
+      };
+    }
+    {
+      name = "is_extglob___is_extglob_2.1.1.tgz";
+      path = fetchurl {
+        name = "is_extglob___is_extglob_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz";
+        sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2";
+      };
+    }
+    {
+      name = "is_finite___is_finite_1.0.2.tgz";
+      path = fetchurl {
+        name = "is_finite___is_finite_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz";
+        sha1 = "cc6677695602be550ef11e8b4aa6305342b6d0aa";
+      };
+    }
+    {
+      name = "is_fullwidth_code_point___is_fullwidth_code_point_1.0.0.tgz";
+      path = fetchurl {
+        name = "is_fullwidth_code_point___is_fullwidth_code_point_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
+        sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
+      };
+    }
+    {
+      name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz";
+      path = fetchurl {
+        name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
+        sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
+      };
+    }
+    {
+      name = "is_fullwidth_code_point___is_fullwidth_code_point_3.0.0.tgz";
+      path = fetchurl {
+        name = "is_fullwidth_code_point___is_fullwidth_code_point_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz";
+        sha1 = "f116f8064fe90b3f7844a38997c0b75051269f1d";
+      };
+    }
+    {
+      name = "is_generator_fn___is_generator_fn_2.1.0.tgz";
+      path = fetchurl {
+        name = "is_generator_fn___is_generator_fn_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz";
+        sha1 = "7d140adc389aaf3011a8f2a2a4cfa6faadffb118";
+      };
+    }
+    {
+      name = "is_glob___is_glob_3.1.0.tgz";
+      path = fetchurl {
+        name = "is_glob___is_glob_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz";
+        sha1 = "7ba5ae24217804ac70707b96922567486cc3e84a";
+      };
+    }
+    {
+      name = "is_glob___is_glob_4.0.1.tgz";
+      path = fetchurl {
+        name = "is_glob___is_glob_4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz";
+        sha1 = "7567dbe9f2f5e2467bc77ab83c4a29482407a5dc";
+      };
+    }
+    {
+      name = "is_hexadecimal___is_hexadecimal_1.0.2.tgz";
+      path = fetchurl {
+        name = "is_hexadecimal___is_hexadecimal_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz";
+        sha1 = "b6e710d7d07bb66b98cb8cece5c9b4921deeb835";
+      };
+    }
+    {
+      name = "is_installed_globally___is_installed_globally_0.1.0.tgz";
+      path = fetchurl {
+        name = "is_installed_globally___is_installed_globally_0.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz";
+        sha1 = "0dfd98f5a9111716dd535dda6492f67bf3d25a80";
+      };
+    }
+    {
+      name = "is_npm___is_npm_1.0.0.tgz";
+      path = fetchurl {
+        name = "is_npm___is_npm_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz";
+        sha1 = "f2fb63a65e4905b406c86072765a1a4dc793b9f4";
+      };
+    }
+    {
+      name = "is_number___is_number_3.0.0.tgz";
+      path = fetchurl {
+        name = "is_number___is_number_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz";
+        sha1 = "24fd6201a4782cf50561c810276afc7d12d71195";
+      };
+    }
+    {
+      name = "is_number___is_number_7.0.0.tgz";
+      path = fetchurl {
+        name = "is_number___is_number_7.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz";
+        sha1 = "7535345b896734d5f80c4d06c50955527a14f12b";
+      };
+    }
+    {
+      name = "is_obj___is_obj_1.0.1.tgz";
+      path = fetchurl {
+        name = "is_obj___is_obj_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz";
+        sha1 = "3e4729ac1f5fde025cd7d83a896dab9f4f67db0f";
+      };
+    }
+    {
+      name = "is_path_cwd___is_path_cwd_2.2.0.tgz";
+      path = fetchurl {
+        name = "is_path_cwd___is_path_cwd_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz";
+        sha1 = "67d43b82664a7b5191fd9119127eb300048a9fdb";
+      };
+    }
+    {
+      name = "is_path_in_cwd___is_path_in_cwd_2.1.0.tgz";
+      path = fetchurl {
+        name = "is_path_in_cwd___is_path_in_cwd_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz";
+        sha1 = "bfe2dca26c69f397265a4009963602935a053acb";
+      };
+    }
+    {
+      name = "is_path_inside___is_path_inside_1.0.0.tgz";
+      path = fetchurl {
+        name = "is_path_inside___is_path_inside_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz";
+        sha1 = "fc06e5a1683fbda13de667aff717bbc10a48f37f";
+      };
+    }
+    {
+      name = "is_path_inside___is_path_inside_2.1.0.tgz";
+      path = fetchurl {
+        name = "is_path_inside___is_path_inside_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz";
+        sha1 = "7c9810587d659a40d27bcdb4d5616eab059494b2";
+      };
+    }
+    {
+      name = "is_plain_obj___is_plain_obj_1.1.0.tgz";
+      path = fetchurl {
+        name = "is_plain_obj___is_plain_obj_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz";
+        sha1 = "71a50c8429dfca773c92a390a4a03b39fcd51d3e";
+      };
+    }
+    {
+      name = "is_plain_object___is_plain_object_2.0.4.tgz";
+      path = fetchurl {
+        name = "is_plain_object___is_plain_object_2.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz";
+        sha1 = "2c163b3fafb1b606d9d17928f05c2a1c38e07677";
+      };
+    }
+    {
+      name = "is_promise___is_promise_2.1.0.tgz";
+      path = fetchurl {
+        name = "is_promise___is_promise_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz";
+        sha1 = "79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa";
+      };
+    }
+    {
+      name = "is_redirect___is_redirect_1.0.0.tgz";
+      path = fetchurl {
+        name = "is_redirect___is_redirect_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz";
+        sha1 = "1d03dded53bd8db0f30c26e4f95d36fc7c87dc24";
+      };
+    }
+    {
+      name = "is_regex___is_regex_1.0.5.tgz";
+      path = fetchurl {
+        name = "is_regex___is_regex_1.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz";
+        sha1 = "39d589a358bf18967f726967120b8fc1aed74eae";
+      };
+    }
+    {
+      name = "is_regexp___is_regexp_1.0.0.tgz";
+      path = fetchurl {
+        name = "is_regexp___is_regexp_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz";
+        sha1 = "fd2d883545c46bac5a633e7b9a09e87fa2cb5069";
+      };
+    }
+    {
+      name = "is_regexp___is_regexp_2.1.0.tgz";
+      path = fetchurl {
+        name = "is_regexp___is_regexp_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz";
+        sha1 = "cd734a56864e23b956bf4e7c66c396a4c0b22c2d";
+      };
+    }
+    {
+      name = "is_retry_allowed___is_retry_allowed_1.1.0.tgz";
+      path = fetchurl {
+        name = "is_retry_allowed___is_retry_allowed_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz";
+        sha1 = "11a060568b67339444033d0125a61a20d564fb34";
+      };
+    }
+    {
+      name = "is_stream___is_stream_1.1.0.tgz";
+      path = fetchurl {
+        name = "is_stream___is_stream_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz";
+        sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
+      };
+    }
+    {
+      name = "is_symbol___is_symbol_1.0.2.tgz";
+      path = fetchurl {
+        name = "is_symbol___is_symbol_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz";
+        sha1 = "a055f6ae57192caee329e7a860118b497a950f38";
+      };
+    }
+    {
+      name = "is_typedarray___is_typedarray_1.0.0.tgz";
+      path = fetchurl {
+        name = "is_typedarray___is_typedarray_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz";
+        sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
+      };
+    }
+    {
+      name = "is_utf8___is_utf8_0.2.1.tgz";
+      path = fetchurl {
+        name = "is_utf8___is_utf8_0.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz";
+        sha1 = "4b0da1442104d1b336340e80797e865cf39f7d72";
+      };
+    }
+    {
+      name = "is_whitespace_character___is_whitespace_character_1.0.2.tgz";
+      path = fetchurl {
+        name = "is_whitespace_character___is_whitespace_character_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz";
+        sha1 = "ede53b4c6f6fb3874533751ec9280d01928d03ed";
+      };
+    }
+    {
+      name = "is_whitespace___is_whitespace_0.3.0.tgz";
+      path = fetchurl {
+        name = "is_whitespace___is_whitespace_0.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz";
+        sha1 = "1639ecb1be036aec69a54cbb401cfbed7114ab7f";
+      };
+    }
+    {
+      name = "is_windows___is_windows_1.0.2.tgz";
+      path = fetchurl {
+        name = "is_windows___is_windows_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz";
+        sha1 = "d1850eb9791ecd18e6182ce12a30f396634bb19d";
+      };
+    }
+    {
+      name = "is_word_character___is_word_character_1.0.2.tgz";
+      path = fetchurl {
+        name = "is_word_character___is_word_character_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.2.tgz";
+        sha1 = "46a5dac3f2a1840898b91e576cd40d493f3ae553";
+      };
+    }
+    {
+      name = "is_wsl___is_wsl_1.1.0.tgz";
+      path = fetchurl {
+        name = "is_wsl___is_wsl_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz";
+        sha1 = "1f16e4aa22b04d1336b66188a66af3c600c3a66d";
+      };
+    }
+    {
+      name = "isarray___isarray_1.0.0.tgz";
+      path = fetchurl {
+        name = "isarray___isarray_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz";
+        sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
+      };
+    }
+    {
+      name = "isarray___isarray_2.0.1.tgz";
+      path = fetchurl {
+        name = "isarray___isarray_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz";
+        sha1 = "a37d94ed9cda2d59865c9f76fe596ee1f338741e";
+      };
+    }
+    {
+      name = "isbinaryfile___isbinaryfile_3.0.2.tgz";
+      path = fetchurl {
+        name = "isbinaryfile___isbinaryfile_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz";
+        sha1 = "4a3e974ec0cba9004d3fc6cde7209ea69368a621";
+      };
+    }
+    {
+      name = "isexe___isexe_2.0.0.tgz";
+      path = fetchurl {
+        name = "isexe___isexe_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz";
+        sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
+      };
+    }
+    {
+      name = "isobject___isobject_2.1.0.tgz";
+      path = fetchurl {
+        name = "isobject___isobject_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz";
+        sha1 = "f065561096a3f1da2ef46272f815c840d87e0c89";
+      };
+    }
+    {
+      name = "isobject___isobject_3.0.1.tgz";
+      path = fetchurl {
+        name = "isobject___isobject_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz";
+        sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df";
+      };
+    }
+    {
+      name = "isstream___isstream_0.1.2.tgz";
+      path = fetchurl {
+        name = "isstream___isstream_0.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz";
+        sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
+      };
+    }
+    {
+      name = "istanbul_api___istanbul_api_2.1.6.tgz";
+      path = fetchurl {
+        name = "istanbul_api___istanbul_api_2.1.6.tgz";
+        url  = "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-2.1.6.tgz";
+        sha1 = "d61702a9d1c66ad89d92e66d401e16b0bda4a35f";
+      };
+    }
+    {
+      name = "istanbul_lib_coverage___istanbul_lib_coverage_2.0.5.tgz";
+      path = fetchurl {
+        name = "istanbul_lib_coverage___istanbul_lib_coverage_2.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz";
+        sha1 = "675f0ab69503fad4b1d849f736baaca803344f49";
+      };
+    }
+    {
+      name = "istanbul_lib_coverage___istanbul_lib_coverage_3.0.0.tgz";
+      path = fetchurl {
+        name = "istanbul_lib_coverage___istanbul_lib_coverage_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz";
+        sha1 = "f5944a37c70b550b02a78a5c3b2055b280cec8ec";
+      };
+    }
+    {
+      name = "istanbul_lib_hook___istanbul_lib_hook_2.0.7.tgz";
+      path = fetchurl {
+        name = "istanbul_lib_hook___istanbul_lib_hook_2.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz";
+        sha1 = "c95695f383d4f8f60df1f04252a9550e15b5b133";
+      };
+    }
+    {
+      name = "istanbul_lib_instrument___istanbul_lib_instrument_3.3.0.tgz";
+      path = fetchurl {
+        name = "istanbul_lib_instrument___istanbul_lib_instrument_3.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz";
+        sha1 = "a5f63d91f0bbc0c3e479ef4c5de027335ec6d630";
+      };
+    }
+    {
+      name = "istanbul_lib_report___istanbul_lib_report_2.0.8.tgz";
+      path = fetchurl {
+        name = "istanbul_lib_report___istanbul_lib_report_2.0.8.tgz";
+        url  = "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz";
+        sha1 = "5a8113cd746d43c4889eba36ab10e7d50c9b4f33";
+      };
+    }
+    {
+      name = "istanbul_lib_report___istanbul_lib_report_3.0.0.tgz";
+      path = fetchurl {
+        name = "istanbul_lib_report___istanbul_lib_report_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz";
+        sha1 = "7518fe52ea44de372f460a76b5ecda9ffb73d8a6";
+      };
+    }
+    {
+      name = "istanbul_lib_source_maps___istanbul_lib_source_maps_3.0.6.tgz";
+      path = fetchurl {
+        name = "istanbul_lib_source_maps___istanbul_lib_source_maps_3.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz";
+        sha1 = "284997c48211752ec486253da97e3879defba8c8";
+      };
+    }
+    {
+      name = "istanbul_reports___istanbul_reports_2.2.6.tgz";
+      path = fetchurl {
+        name = "istanbul_reports___istanbul_reports_2.2.6.tgz";
+        url  = "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz";
+        sha1 = "7b4f2660d82b29303a8fe6091f8ca4bf058da1af";
+      };
+    }
+    {
+      name = "istanbul_reports___istanbul_reports_3.0.0.tgz";
+      path = fetchurl {
+        name = "istanbul_reports___istanbul_reports_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.0.tgz";
+        sha1 = "d4d16d035db99581b6194e119bbf36c963c5eb70";
+      };
+    }
+    {
+      name = "istextorbinary___istextorbinary_2.2.1.tgz";
+      path = fetchurl {
+        name = "istextorbinary___istextorbinary_2.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.2.1.tgz";
+        sha1 = "a5231a08ef6dd22b268d0895084cf8d58b5bec53";
+      };
+    }
+    {
+      name = "iterall___iterall_1.2.2.tgz";
+      path = fetchurl {
+        name = "iterall___iterall_1.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/iterall/-/iterall-1.2.2.tgz";
+        sha1 = "92d70deb8028e0c39ff3164fdbf4d8b088130cd7";
+      };
+    }
+    {
+      name = "jasmine_core___jasmine_core_2.9.0.tgz";
+      path = fetchurl {
+        name = "jasmine_core___jasmine_core_2.9.0.tgz";
+        url  = "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.9.0.tgz";
+        sha1 = "bfbb56defcd30789adec5a3fbba8504233289c72";
+      };
+    }
+    {
+      name = "jasmine_diff___jasmine_diff_0.1.3.tgz";
+      path = fetchurl {
+        name = "jasmine_diff___jasmine_diff_0.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/jasmine-diff/-/jasmine-diff-0.1.3.tgz";
+        sha1 = "93ccc2dcc41028c5ddd4606558074839f2deeaa8";
+      };
+    }
+    {
+      name = "jasmine_jquery___jasmine_jquery_2.1.1.tgz";
+      path = fetchurl {
+        name = "jasmine_jquery___jasmine_jquery_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/jasmine-jquery/-/jasmine-jquery-2.1.1.tgz";
+        sha1 = "d4095e646944a26763235769ab018d9f30f0d47b";
+      };
+    }
+    {
+      name = "jed___jed_1.1.1.tgz";
+      path = fetchurl {
+        name = "jed___jed_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/jed/-/jed-1.1.1.tgz";
+        sha1 = "7a549bbd9ffe1585b0cd0a191e203055bee574b4";
+      };
+    }
+    {
+      name = "jest_canvas_mock___jest_canvas_mock_2.1.2.tgz";
+      path = fetchurl {
+        name = "jest_canvas_mock___jest_canvas_mock_2.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/jest-canvas-mock/-/jest-canvas-mock-2.1.2.tgz";
+        sha1 = "0d16c9f91534f773fd132fc289f2e6b6db8faa28";
+      };
+    }
+    {
+      name = "jest_changed_files___jest_changed_files_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_changed_files___jest_changed_files_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.8.0.tgz";
+        sha1 = "7e7eb21cf687587a85e50f3d249d1327e15b157b";
+      };
+    }
+    {
+      name = "jest_cli___jest_cli_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_cli___jest_cli_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.8.0.tgz";
+        sha1 = "b075ac914492ed114fa338ade7362a301693e989";
+      };
+    }
+    {
+      name = "jest_config___jest_config_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_config___jest_config_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-config/-/jest-config-24.8.0.tgz";
+        sha1 = "77db3d265a6f726294687cbbccc36f8a76ee0f4f";
+      };
+    }
+    {
+      name = "jest_diff___jest_diff_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_diff___jest_diff_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.8.0.tgz";
+        sha1 = "146435e7d1e3ffdf293d53ff97e193f1d1546172";
+      };
+    }
+    {
+      name = "jest_docblock___jest_docblock_24.3.0.tgz";
+      path = fetchurl {
+        name = "jest_docblock___jest_docblock_24.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.3.0.tgz";
+        sha1 = "b9c32dac70f72e4464520d2ba4aec02ab14db5dd";
+      };
+    }
+    {
+      name = "jest_each___jest_each_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_each___jest_each_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-each/-/jest-each-24.8.0.tgz";
+        sha1 = "a05fd2bf94ddc0b1da66c6d13ec2457f35e52775";
+      };
+    }
+    {
+      name = "jest_environment_jsdom___jest_environment_jsdom_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_environment_jsdom___jest_environment_jsdom_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz";
+        sha1 = "300f6949a146cabe1c9357ad9e9ecf9f43f38857";
+      };
+    }
+    {
+      name = "jest_environment_node___jest_environment_node_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_environment_node___jest_environment_node_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.8.0.tgz";
+        sha1 = "d3f726ba8bc53087a60e7a84ca08883a4c892231";
+      };
+    }
+    {
+      name = "jest_get_type___jest_get_type_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_get_type___jest_get_type_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.8.0.tgz";
+        sha1 = "a7440de30b651f5a70ea3ed7ff073a32dfe646fc";
+      };
+    }
+    {
+      name = "jest_haste_map___jest_haste_map_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_haste_map___jest_haste_map_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.8.0.tgz";
+        sha1 = "51794182d877b3ddfd6e6d23920e3fe72f305800";
+      };
+    }
+    {
+      name = "jest_jasmine2___jest_jasmine2_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_jasmine2___jest_jasmine2_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz";
+        sha1 = "a9c7e14c83dd77d8b15e820549ce8987cc8cd898";
+      };
+    }
+    {
+      name = "jest_junit___jest_junit_6.3.0.tgz";
+      path = fetchurl {
+        name = "jest_junit___jest_junit_6.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-junit/-/jest-junit-6.3.0.tgz";
+        sha1 = "99e64ebc54eddcb21238f0cc49f5820c89a8c785";
+      };
+    }
+    {
+      name = "jest_leak_detector___jest_leak_detector_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_leak_detector___jest_leak_detector_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz";
+        sha1 = "c0086384e1f650c2d8348095df769f29b48e6980";
+      };
+    }
+    {
+      name = "jest_matcher_utils___jest_matcher_utils_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_matcher_utils___jest_matcher_utils_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz";
+        sha1 = "2bce42204c9af12bde46f83dc839efe8be832495";
+      };
+    }
+    {
+      name = "jest_message_util___jest_message_util_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_message_util___jest_message_util_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.8.0.tgz";
+        sha1 = "0d6891e72a4beacc0292b638685df42e28d6218b";
+      };
+    }
+    {
+      name = "jest_mock___jest_mock_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_mock___jest_mock_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.8.0.tgz";
+        sha1 = "2f9d14d37699e863f1febf4e4d5a33b7fdbbde56";
+      };
+    }
+    {
+      name = "jest_pnp_resolver___jest_pnp_resolver_1.2.1.tgz";
+      path = fetchurl {
+        name = "jest_pnp_resolver___jest_pnp_resolver_1.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz";
+        sha1 = "ecdae604c077a7fbc70defb6d517c3c1c898923a";
+      };
+    }
+    {
+      name = "jest_regex_util___jest_regex_util_24.3.0.tgz";
+      path = fetchurl {
+        name = "jest_regex_util___jest_regex_util_24.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz";
+        sha1 = "d5a65f60be1ae3e310d5214a0307581995227b36";
+      };
+    }
+    {
+      name = "jest_resolve_dependencies___jest_resolve_dependencies_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_resolve_dependencies___jest_resolve_dependencies_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz";
+        sha1 = "19eec3241f2045d3f990dba331d0d7526acff8e0";
+      };
+    }
+    {
+      name = "jest_resolve___jest_resolve_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_resolve___jest_resolve_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.8.0.tgz";
+        sha1 = "84b8e5408c1f6a11539793e2b5feb1b6e722439f";
+      };
+    }
+    {
+      name = "jest_runner___jest_runner_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_runner___jest_runner_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.8.0.tgz";
+        sha1 = "4f9ae07b767db27b740d7deffad0cf67ccb4c5bb";
+      };
+    }
+    {
+      name = "jest_runtime___jest_runtime_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_runtime___jest_runtime_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.8.0.tgz";
+        sha1 = "05f94d5b05c21f6dc54e427cd2e4980923350620";
+      };
+    }
+    {
+      name = "jest_serializer___jest_serializer_24.4.0.tgz";
+      path = fetchurl {
+        name = "jest_serializer___jest_serializer_24.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz";
+        sha1 = "f70c5918c8ea9235ccb1276d232e459080588db3";
+      };
+    }
+    {
+      name = "jest_snapshot___jest_snapshot_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_snapshot___jest_snapshot_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.8.0.tgz";
+        sha1 = "3bec6a59da2ff7bc7d097a853fb67f9d415cb7c6";
+      };
+    }
+    {
+      name = "jest_transform_graphql___jest_transform_graphql_2.1.0.tgz";
+      path = fetchurl {
+        name = "jest_transform_graphql___jest_transform_graphql_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-transform-graphql/-/jest-transform-graphql-2.1.0.tgz";
+        sha1 = "903cb66bb27bc2772fd3e5dd4f7e9b57230f5829";
+      };
+    }
+    {
+      name = "jest_util___jest_util_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_util___jest_util_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-util/-/jest-util-24.8.0.tgz";
+        sha1 = "41f0e945da11df44cc76d64ffb915d0716f46cd1";
+      };
+    }
+    {
+      name = "jest_validate___jest_validate_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_validate___jest_validate_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.8.0.tgz";
+        sha1 = "624c41533e6dfe356ffadc6e2423a35c2d3b4849";
+      };
+    }
+    {
+      name = "jest_watcher___jest_watcher_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest_watcher___jest_watcher_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.8.0.tgz";
+        sha1 = "58d49915ceddd2de85e238f6213cef1c93715de4";
+      };
+    }
+    {
+      name = "jest_worker___jest_worker_24.6.0.tgz";
+      path = fetchurl {
+        name = "jest_worker___jest_worker_24.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz";
+        sha1 = "7f81ceae34b7cde0c9827a6980c35b7cdc0161b3";
+      };
+    }
+    {
+      name = "jest___jest_24.8.0.tgz";
+      path = fetchurl {
+        name = "jest___jest_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/jest/-/jest-24.8.0.tgz";
+        sha1 = "d5dff1984d0d1002196e9b7f12f75af1b2809081";
+      };
+    }
+    {
+      name = "jmespath___jmespath_0.15.0.tgz";
+      path = fetchurl {
+        name = "jmespath___jmespath_0.15.0.tgz";
+        url  = "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz";
+        sha1 = "a3f222a9aae9f966f5d27c796510e28091764217";
+      };
+    }
+    {
+      name = "jquery_ujs___jquery_ujs_1.2.2.tgz";
+      path = fetchurl {
+        name = "jquery_ujs___jquery_ujs_1.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/jquery-ujs/-/jquery-ujs-1.2.2.tgz";
+        sha1 = "6a8ef1020e6b6dda385b90a4bddc128c21c56397";
+      };
+    }
+    {
+      name = "jquery.caret___jquery.caret_0.3.1.tgz";
+      path = fetchurl {
+        name = "jquery.caret___jquery.caret_0.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/jquery.caret/-/jquery.caret-0.3.1.tgz";
+        sha1 = "9c093318faf327eff322e826ca9f3241368bc7b8";
+      };
+    }
+    {
+      name = "jquery.waitforimages___jquery.waitforimages_2.2.0.tgz";
+      path = fetchurl {
+        name = "jquery.waitforimages___jquery.waitforimages_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/jquery.waitforimages/-/jquery.waitforimages-2.2.0.tgz";
+        sha1 = "63f23131055a1b060dc913e6d874bcc9b9e6b16b";
+      };
+    }
+    {
+      name = "jquery___jquery_3.4.1.tgz";
+      path = fetchurl {
+        name = "jquery___jquery_3.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz";
+        sha1 = "714f1f8d9dde4bdfa55764ba37ef214630d80ef2";
+      };
+    }
+    {
+      name = "js_base64___js_base64_2.5.1.tgz";
+      path = fetchurl {
+        name = "js_base64___js_base64_2.5.1.tgz";
+        url  = "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz";
+        sha1 = "1efa39ef2c5f7980bb1784ade4a8af2de3291121";
+      };
+    }
+    {
+      name = "js_beautify___js_beautify_1.10.3.tgz";
+      path = fetchurl {
+        name = "js_beautify___js_beautify_1.10.3.tgz";
+        url  = "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.10.3.tgz";
+        sha1 = "c73fa10cf69d3dfa52d8ed624f23c64c0a6a94c1";
+      };
+    }
+    {
+      name = "js_cookie___js_cookie_2.2.1.tgz";
+      path = fetchurl {
+        name = "js_cookie___js_cookie_2.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz";
+        sha1 = "69e106dc5d5806894562902aa5baec3744e9b2b8";
+      };
+    }
+    {
+      name = "js_tokens___js_tokens_4.0.0.tgz";
+      path = fetchurl {
+        name = "js_tokens___js_tokens_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz";
+        sha1 = "19203fb59991df98e3a287050d4647cdeaf32499";
+      };
+    }
+    {
+      name = "js_yaml___js_yaml_3.13.1.tgz";
+      path = fetchurl {
+        name = "js_yaml___js_yaml_3.13.1.tgz";
+        url  = "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz";
+        sha1 = "aff151b30bfdfa8e49e05da22e7415e9dfa37847";
+      };
+    }
+    {
+      name = "js2xmlparser___js2xmlparser_3.0.0.tgz";
+      path = fetchurl {
+        name = "js2xmlparser___js2xmlparser_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-3.0.0.tgz";
+        sha1 = "3fb60eaa089c5440f9319f51760ccd07e2499733";
+      };
+    }
+    {
+      name = "jsbn___jsbn_0.1.1.tgz";
+      path = fetchurl {
+        name = "jsbn___jsbn_0.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz";
+        sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
+      };
+    }
+    {
+      name = "jsdoc_vue___jsdoc_vue_1.0.0.tgz";
+      path = fetchurl {
+        name = "jsdoc_vue___jsdoc_vue_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/jsdoc-vue/-/jsdoc-vue-1.0.0.tgz";
+        sha1 = "ff3ac1ba6bc4a74079bb79058a7bf0066e346235";
+      };
+    }
+    {
+      name = "jsdoc___jsdoc_3.5.5.tgz";
+      path = fetchurl {
+        name = "jsdoc___jsdoc_3.5.5.tgz";
+        url  = "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.5.5.tgz";
+        sha1 = "484521b126e81904d632ff83ec9aaa096708fa4d";
+      };
+    }
+    {
+      name = "jsdom___jsdom_11.12.0.tgz";
+      path = fetchurl {
+        name = "jsdom___jsdom_11.12.0.tgz";
+        url  = "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz";
+        sha1 = "1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8";
+      };
+    }
+    {
+      name = "jsesc___jsesc_2.5.2.tgz";
+      path = fetchurl {
+        name = "jsesc___jsesc_2.5.2.tgz";
+        url  = "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz";
+        sha1 = "80564d2e483dacf6e8ef209650a67df3f0c283a4";
+      };
+    }
+    {
+      name = "jsesc___jsesc_0.5.0.tgz";
+      path = fetchurl {
+        name = "jsesc___jsesc_0.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz";
+        sha1 = "e7dee66e35d6fc16f710fe91d5cf69f70f08911d";
+      };
+    }
+    {
+      name = "json_parse_better_errors___json_parse_better_errors_1.0.2.tgz";
+      path = fetchurl {
+        name = "json_parse_better_errors___json_parse_better_errors_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz";
+        sha1 = "bb867cfb3450e69107c131d1c514bab3dc8bcaa9";
+      };
+    }
+    {
+      name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
+      path = fetchurl {
+        name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
+        sha1 = "69f6a87d9513ab8bb8fe63bdb0979c448e684660";
+      };
+    }
+    {
+      name = "json_schema___json_schema_0.2.3.tgz";
+      path = fetchurl {
+        name = "json_schema___json_schema_0.2.3.tgz";
+        url  = "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz";
+        sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
+      };
+    }
+    {
+      name = "json_stable_stringify_without_jsonify___json_stable_stringify_without_jsonify_1.0.1.tgz";
+      path = fetchurl {
+        name = "json_stable_stringify_without_jsonify___json_stable_stringify_without_jsonify_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz";
+        sha1 = "9db7b59496ad3f3cfef30a75142d2d930ad72651";
+      };
+    }
+    {
+      name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
+      path = fetchurl {
+        name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
+        sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
+      };
+    }
+    {
+      name = "json3___json3_3.3.2.tgz";
+      path = fetchurl {
+        name = "json3___json3_3.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz";
+        sha1 = "3c0434743df93e2f5c42aee7b19bcb483575f4e1";
+      };
+    }
+    {
+      name = "json5___json5_2.1.0.tgz";
+      path = fetchurl {
+        name = "json5___json5_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz";
+        sha1 = "e7a0c62c48285c628d20a10b85c89bb807c32850";
+      };
+    }
+    {
+      name = "json5___json5_1.0.1.tgz";
+      path = fetchurl {
+        name = "json5___json5_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz";
+        sha1 = "779fb0018604fa854eacbf6252180d83543e3dbe";
+      };
+    }
+    {
+      name = "jsonfile___jsonfile_4.0.0.tgz";
+      path = fetchurl {
+        name = "jsonfile___jsonfile_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz";
+        sha1 = "8771aae0799b64076b76640fca058f9c10e33ecb";
+      };
+    }
+    {
+      name = "jsprim___jsprim_1.4.1.tgz";
+      path = fetchurl {
+        name = "jsprim___jsprim_1.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz";
+        sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
+      };
+    }
+    {
+      name = "jszip_utils___jszip_utils_0.0.2.tgz";
+      path = fetchurl {
+        name = "jszip_utils___jszip_utils_0.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/jszip-utils/-/jszip-utils-0.0.2.tgz";
+        sha1 = "457d5cbca60a1c2e0706e9da2b544e8e7bc50bf8";
+      };
+    }
+    {
+      name = "jszip___jszip_3.1.3.tgz";
+      path = fetchurl {
+        name = "jszip___jszip_3.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/jszip/-/jszip-3.1.3.tgz";
+        sha1 = "8a920403b2b1651c0fc126be90192d9080957c37";
+      };
+    }
+    {
+      name = "karma_chrome_launcher___karma_chrome_launcher_3.0.0.tgz";
+      path = fetchurl {
+        name = "karma_chrome_launcher___karma_chrome_launcher_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.0.0.tgz";
+        sha1 = "5c3a7f877a304e90781c28fcd9a49e334a890f42";
+      };
+    }
+    {
+      name = "karma_coverage_istanbul_reporter___karma_coverage_istanbul_reporter_2.1.0.tgz";
+      path = fetchurl {
+        name = "karma_coverage_istanbul_reporter___karma_coverage_istanbul_reporter_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.1.0.tgz";
+        sha1 = "5f1bcc13c5e14ee1d91821ee8946861674f54c75";
+      };
+    }
+    {
+      name = "karma_jasmine___karma_jasmine_1.1.2.tgz";
+      path = fetchurl {
+        name = "karma_jasmine___karma_jasmine_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.2.tgz";
+        sha1 = "394f2b25ffb4a644b9ada6f22d443e2fd08886c3";
+      };
+    }
+    {
+      name = "karma_junit_reporter___karma_junit_reporter_1.2.0.tgz";
+      path = fetchurl {
+        name = "karma_junit_reporter___karma_junit_reporter_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/karma-junit-reporter/-/karma-junit-reporter-1.2.0.tgz";
+        sha1 = "4f9c40cedfb1a395f8aef876abf96189917c6396";
+      };
+    }
+    {
+      name = "karma_mocha_reporter___karma_mocha_reporter_2.2.5.tgz";
+      path = fetchurl {
+        name = "karma_mocha_reporter___karma_mocha_reporter_2.2.5.tgz";
+        url  = "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz";
+        sha1 = "15120095e8ed819186e47a0b012f3cd741895560";
+      };
+    }
+    {
+      name = "karma_sourcemap_loader___karma_sourcemap_loader_0.3.7.tgz";
+      path = fetchurl {
+        name = "karma_sourcemap_loader___karma_sourcemap_loader_0.3.7.tgz";
+        url  = "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz";
+        sha1 = "91322c77f8f13d46fed062b042e1009d4c4505d8";
+      };
+    }
+    {
+      name = "karma_webpack___karma_webpack_4.0.2.tgz";
+      path = fetchurl {
+        name = "karma_webpack___karma_webpack_4.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-4.0.2.tgz";
+        sha1 = "23219bd95bdda853e3073d3874d34447c77bced0";
+      };
+    }
+    {
+      name = "karma___karma_4.2.0.tgz";
+      path = fetchurl {
+        name = "karma___karma_4.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/karma/-/karma-4.2.0.tgz";
+        sha1 = "27e88b310cde090d016980ff5444e3a239196fca";
+      };
+    }
+    {
+      name = "katex___katex_0.10.0.tgz";
+      path = fetchurl {
+        name = "katex___katex_0.10.0.tgz";
+        url  = "https://registry.yarnpkg.com/katex/-/katex-0.10.0.tgz";
+        sha1 = "da562e5d0d5cc3aa602e27af8a9b8710bfbce765";
+      };
+    }
+    {
+      name = "killable___killable_1.0.1.tgz";
+      path = fetchurl {
+        name = "killable___killable_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz";
+        sha1 = "4c8ce441187a061c7474fb87ca08e2a638194892";
+      };
+    }
+    {
+      name = "kind_of___kind_of_3.2.2.tgz";
+      path = fetchurl {
+        name = "kind_of___kind_of_3.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz";
+        sha1 = "31ea21a734bab9bbb0f32466d893aea51e4a3c64";
+      };
+    }
+    {
+      name = "kind_of___kind_of_4.0.0.tgz";
+      path = fetchurl {
+        name = "kind_of___kind_of_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz";
+        sha1 = "20813df3d712928b207378691a45066fae72dd57";
+      };
+    }
+    {
+      name = "kind_of___kind_of_5.1.0.tgz";
+      path = fetchurl {
+        name = "kind_of___kind_of_5.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz";
+        sha1 = "729c91e2d857b7a419a1f9aa65685c4c33f5845d";
+      };
+    }
+    {
+      name = "kind_of___kind_of_6.0.2.tgz";
+      path = fetchurl {
+        name = "kind_of___kind_of_6.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz";
+        sha1 = "01146b36a6218e64e58f3a8d66de5d7fc6f6d051";
+      };
+    }
+    {
+      name = "klaw___klaw_2.0.0.tgz";
+      path = fetchurl {
+        name = "klaw___klaw_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/klaw/-/klaw-2.0.0.tgz";
+        sha1 = "59c128e0dc5ce410201151194eeb9cbf858650f6";
+      };
+    }
+    {
+      name = "kleur___kleur_3.0.3.tgz";
+      path = fetchurl {
+        name = "kleur___kleur_3.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz";
+        sha1 = "a79c9ecc86ee1ce3fa6206d1216c501f147fc07e";
+      };
+    }
+    {
+      name = "known_css_properties___known_css_properties_0.14.0.tgz";
+      path = fetchurl {
+        name = "known_css_properties___known_css_properties_0.14.0.tgz";
+        url  = "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.14.0.tgz";
+        sha1 = "d7032b4334a32dc22e6e46b081ec789daf18756c";
+      };
+    }
+    {
+      name = "latest_version___latest_version_3.1.0.tgz";
+      path = fetchurl {
+        name = "latest_version___latest_version_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz";
+        sha1 = "a205383fea322b33b5ae3b18abee0dc2f356ee15";
+      };
+    }
+    {
+      name = "lcid___lcid_1.0.0.tgz";
+      path = fetchurl {
+        name = "lcid___lcid_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz";
+        sha1 = "308accafa0bc483a3867b4b6f2b9506251d1b835";
+      };
+    }
+    {
+      name = "lcid___lcid_2.0.0.tgz";
+      path = fetchurl {
+        name = "lcid___lcid_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz";
+        sha1 = "6ef5d2df60e52f82eb228a4c373e8d1f397253cf";
+      };
+    }
+    {
+      name = "left_pad___left_pad_1.3.0.tgz";
+      path = fetchurl {
+        name = "left_pad___left_pad_1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz";
+        sha1 = "5b8a3a7765dfe001261dde915589e782f8c94d1e";
+      };
+    }
+    {
+      name = "leven___leven_2.1.0.tgz";
+      path = fetchurl {
+        name = "leven___leven_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz";
+        sha1 = "c2e7a9f772094dee9d34202ae8acce4687875580";
+      };
+    }
+    {
+      name = "leven___leven_3.1.0.tgz";
+      path = fetchurl {
+        name = "leven___leven_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz";
+        sha1 = "77891de834064cccba82ae7842bb6b14a13ed7f2";
+      };
+    }
+    {
+      name = "levenary___levenary_1.1.1.tgz";
+      path = fetchurl {
+        name = "levenary___levenary_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz";
+        sha1 = "842a9ee98d2075aa7faeedbe32679e9205f46f77";
+      };
+    }
+    {
+      name = "levn___levn_0.3.0.tgz";
+      path = fetchurl {
+        name = "levn___levn_0.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz";
+        sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
+      };
+    }
+    {
+      name = "lie___lie_3.1.1.tgz";
+      path = fetchurl {
+        name = "lie___lie_3.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz";
+        sha1 = "9a436b2cc7746ca59de7a41fa469b3efb76bd87e";
+      };
+    }
+    {
+      name = "lightercollective___lightercollective_0.3.0.tgz";
+      path = fetchurl {
+        name = "lightercollective___lightercollective_0.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/lightercollective/-/lightercollective-0.3.0.tgz";
+        sha1 = "1f07638642ec645d70bdb69ab2777676f35a28f0";
+      };
+    }
+    {
+      name = "linkify_it___linkify_it_2.1.0.tgz";
+      path = fetchurl {
+        name = "linkify_it___linkify_it_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.1.0.tgz";
+        sha1 = "c4caf38a6cd7ac2212ef3c7d2bde30a91561f9db";
+      };
+    }
+    {
+      name = "load_json_file___load_json_file_1.1.0.tgz";
+      path = fetchurl {
+        name = "load_json_file___load_json_file_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz";
+        sha1 = "956905708d58b4bab4c2261b04f59f31c99374c0";
+      };
+    }
+    {
+      name = "load_json_file___load_json_file_2.0.0.tgz";
+      path = fetchurl {
+        name = "load_json_file___load_json_file_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz";
+        sha1 = "7947e42149af80d696cbf797bcaabcfe1fe29ca8";
+      };
+    }
+    {
+      name = "load_json_file___load_json_file_4.0.0.tgz";
+      path = fetchurl {
+        name = "load_json_file___load_json_file_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz";
+        sha1 = "2f5f45ab91e33216234fd53adab668eb4ec0993b";
+      };
+    }
+    {
+      name = "loader_runner___loader_runner_2.4.0.tgz";
+      path = fetchurl {
+        name = "loader_runner___loader_runner_2.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz";
+        sha1 = "ed47066bfe534d7e84c4c7b9998c2a75607d9357";
+      };
+    }
+    {
+      name = "loader_utils___loader_utils_1.2.3.tgz";
+      path = fetchurl {
+        name = "loader_utils___loader_utils_1.2.3.tgz";
+        url  = "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz";
+        sha1 = "1ff5dc6911c9f0a062531a4c04b609406108c2c7";
+      };
+    }
+    {
+      name = "loader_utils___loader_utils_1.4.0.tgz";
+      path = fetchurl {
+        name = "loader_utils___loader_utils_1.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz";
+        sha1 = "c579b5e34cb34b1a74edc6c1fb36bfa371d5a613";
+      };
+    }
+    {
+      name = "locate_path___locate_path_2.0.0.tgz";
+      path = fetchurl {
+        name = "locate_path___locate_path_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz";
+        sha1 = "2b568b265eec944c6d9c0de9c3dbbbca0354cd8e";
+      };
+    }
+    {
+      name = "locate_path___locate_path_3.0.0.tgz";
+      path = fetchurl {
+        name = "locate_path___locate_path_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz";
+        sha1 = "dbec3b3ab759758071b58fe59fc41871af21400e";
+      };
+    }
+    {
+      name = "locate_path___locate_path_5.0.0.tgz";
+      path = fetchurl {
+        name = "locate_path___locate_path_5.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz";
+        sha1 = "1afba396afd676a6d42504d0a67a3a7eb9f62aa0";
+      };
+    }
+    {
+      name = "lodash.camelcase___lodash.camelcase_4.3.0.tgz";
+      path = fetchurl {
+        name = "lodash.camelcase___lodash.camelcase_4.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz";
+        sha1 = "b28aa6288a2b9fc651035c7711f65ab6190331a6";
+      };
+    }
+    {
+      name = "lodash.clonedeep___lodash.clonedeep_4.5.0.tgz";
+      path = fetchurl {
+        name = "lodash.clonedeep___lodash.clonedeep_4.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz";
+        sha1 = "e23f3f9c4f8fbdde872529c1071857a086e5ccef";
+      };
+    }
+    {
+      name = "lodash.differencewith___lodash.differencewith_4.5.0.tgz";
+      path = fetchurl {
+        name = "lodash.differencewith___lodash.differencewith_4.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.differencewith/-/lodash.differencewith-4.5.0.tgz";
+        sha1 = "bafafbc918b55154e179176a00bb0aefaac854b7";
+      };
+    }
+    {
+      name = "lodash.escaperegexp___lodash.escaperegexp_4.1.2.tgz";
+      path = fetchurl {
+        name = "lodash.escaperegexp___lodash.escaperegexp_4.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz";
+        sha1 = "64762c48618082518ac3df4ccf5d5886dae20347";
+      };
+    }
+    {
+      name = "lodash.flatten___lodash.flatten_4.4.0.tgz";
+      path = fetchurl {
+        name = "lodash.flatten___lodash.flatten_4.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz";
+        sha1 = "f31c22225a9632d2bbf8e4addbef240aa765a61f";
+      };
+    }
+    {
+      name = "lodash.isequal___lodash.isequal_4.5.0.tgz";
+      path = fetchurl {
+        name = "lodash.isequal___lodash.isequal_4.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz";
+        sha1 = "415c4478f2bcc30120c22ce10ed3226f7d3e18e0";
+      };
+    }
+    {
+      name = "lodash.isplainobject___lodash.isplainobject_4.0.6.tgz";
+      path = fetchurl {
+        name = "lodash.isplainobject___lodash.isplainobject_4.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz";
+        sha1 = "7c526a52d89b45c45cc690b88163be0497f550cb";
+      };
+    }
+    {
+      name = "lodash.isstring___lodash.isstring_4.0.1.tgz";
+      path = fetchurl {
+        name = "lodash.isstring___lodash.isstring_4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz";
+        sha1 = "d527dfb5456eca7cc9bb95d5daeaf88ba54a5451";
+      };
+    }
+    {
+      name = "lodash.kebabcase___lodash.kebabcase_4.1.1.tgz";
+      path = fetchurl {
+        name = "lodash.kebabcase___lodash.kebabcase_4.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz";
+        sha1 = "8489b1cb0d29ff88195cceca448ff6d6cc295c36";
+      };
+    }
+    {
+      name = "lodash.mergewith___lodash.mergewith_4.6.2.tgz";
+      path = fetchurl {
+        name = "lodash.mergewith___lodash.mergewith_4.6.2.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz";
+        sha1 = "617121f89ac55f59047c7aec1ccd6654c6590f55";
+      };
+    }
+    {
+      name = "lodash.snakecase___lodash.snakecase_4.1.1.tgz";
+      path = fetchurl {
+        name = "lodash.snakecase___lodash.snakecase_4.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz";
+        sha1 = "39d714a35357147837aefd64b5dcbb16becd8f8d";
+      };
+    }
+    {
+      name = "lodash.sortby___lodash.sortby_4.7.0.tgz";
+      path = fetchurl {
+        name = "lodash.sortby___lodash.sortby_4.7.0.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz";
+        sha1 = "edd14c824e2cc9c1e0b0a1b42bb5210516a42438";
+      };
+    }
+    {
+      name = "lodash.upperfirst___lodash.upperfirst_4.3.1.tgz";
+      path = fetchurl {
+        name = "lodash.upperfirst___lodash.upperfirst_4.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz";
+        sha1 = "1365edf431480481ef0d1c68957a5ed99d49f7ce";
+      };
+    }
+    {
+      name = "lodash___lodash_4.17.15.tgz";
+      path = fetchurl {
+        name = "lodash___lodash_4.17.15.tgz";
+        url  = "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz";
+        sha1 = "b447f6670a0455bbfeedd11392eff330ea097548";
+      };
+    }
+    {
+      name = "log_symbols___log_symbols_2.2.0.tgz";
+      path = fetchurl {
+        name = "log_symbols___log_symbols_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz";
+        sha1 = "5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a";
+      };
+    }
+    {
+      name = "log_symbols___log_symbols_3.0.0.tgz";
+      path = fetchurl {
+        name = "log_symbols___log_symbols_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz";
+        sha1 = "f3a08516a5dea893336a7dee14d18a1cfdab77c4";
+      };
+    }
+    {
+      name = "log4js___log4js_4.5.1.tgz";
+      path = fetchurl {
+        name = "log4js___log4js_4.5.1.tgz";
+        url  = "https://registry.yarnpkg.com/log4js/-/log4js-4.5.1.tgz";
+        sha1 = "e543625e97d9e6f3e6e7c9fc196dd6ab2cae30b5";
+      };
+    }
+    {
+      name = "loglevel___loglevel_1.6.7.tgz";
+      path = fetchurl {
+        name = "loglevel___loglevel_1.6.7.tgz";
+        url  = "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.7.tgz";
+        sha1 = "b3e034233188c68b889f5b862415306f565e2c56";
+      };
+    }
+    {
+      name = "longest_streak___longest_streak_2.0.2.tgz";
+      path = fetchurl {
+        name = "longest_streak___longest_streak_2.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.2.tgz";
+        sha1 = "2421b6ba939a443bb9ffebf596585a50b4c38e2e";
+      };
+    }
+    {
+      name = "loose_envify___loose_envify_1.4.0.tgz";
+      path = fetchurl {
+        name = "loose_envify___loose_envify_1.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz";
+        sha1 = "71ee51fa7be4caec1a63839f7e682d8132d30caf";
+      };
+    }
+    {
+      name = "loud_rejection___loud_rejection_1.6.0.tgz";
+      path = fetchurl {
+        name = "loud_rejection___loud_rejection_1.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz";
+        sha1 = "5b46f80147edee578870f086d04821cf998e551f";
+      };
+    }
+    {
+      name = "lower_case___lower_case_1.1.4.tgz";
+      path = fetchurl {
+        name = "lower_case___lower_case_1.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz";
+        sha1 = "9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac";
+      };
+    }
+    {
+      name = "lowercase_keys___lowercase_keys_1.0.0.tgz";
+      path = fetchurl {
+        name = "lowercase_keys___lowercase_keys_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz";
+        sha1 = "4e3366b39e7f5457e35f1324bdf6f88d0bfc7306";
+      };
+    }
+    {
+      name = "lowlight___lowlight_1.11.0.tgz";
+      path = fetchurl {
+        name = "lowlight___lowlight_1.11.0.tgz";
+        url  = "https://registry.yarnpkg.com/lowlight/-/lowlight-1.11.0.tgz";
+        sha1 = "1304d83005126d4e8b1dc0f07981e9b689ec2efc";
+      };
+    }
+    {
+      name = "lru_cache___lru_cache_4.1.5.tgz";
+      path = fetchurl {
+        name = "lru_cache___lru_cache_4.1.5.tgz";
+        url  = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz";
+        sha1 = "8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd";
+      };
+    }
+    {
+      name = "lru_cache___lru_cache_5.1.1.tgz";
+      path = fetchurl {
+        name = "lru_cache___lru_cache_5.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz";
+        sha1 = "1da27e6710271947695daf6848e847f01d84b920";
+      };
+    }
+    {
+      name = "lz_string___lz_string_1.4.4.tgz";
+      path = fetchurl {
+        name = "lz_string___lz_string_1.4.4.tgz";
+        url  = "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz";
+        sha1 = "c0d8eaf36059f705796e1e344811cf4c498d3a26";
+      };
+    }
+    {
+      name = "make_dir___make_dir_1.3.0.tgz";
+      path = fetchurl {
+        name = "make_dir___make_dir_1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz";
+        sha1 = "79c1033b80515bd6d24ec9933e860ca75ee27f0c";
+      };
+    }
+    {
+      name = "make_dir___make_dir_2.1.0.tgz";
+      path = fetchurl {
+        name = "make_dir___make_dir_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz";
+        sha1 = "5f0310e18b8be898cc07009295a30ae41e91e6f5";
+      };
+    }
+    {
+      name = "make_dir___make_dir_3.0.0.tgz";
+      path = fetchurl {
+        name = "make_dir___make_dir_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz";
+        sha1 = "1b5f39f6b9270ed33f9f054c5c0f84304989f801";
+      };
+    }
+    {
+      name = "make_error___make_error_1.3.5.tgz";
+      path = fetchurl {
+        name = "make_error___make_error_1.3.5.tgz";
+        url  = "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz";
+        sha1 = "efe4e81f6db28cadd605c70f29c831b58ef776c8";
+      };
+    }
+    {
+      name = "makeerror___makeerror_1.0.11.tgz";
+      path = fetchurl {
+        name = "makeerror___makeerror_1.0.11.tgz";
+        url  = "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz";
+        sha1 = "e01a5c9109f2af79660e4e8b9587790184f5a96c";
+      };
+    }
+    {
+      name = "mamacro___mamacro_0.0.3.tgz";
+      path = fetchurl {
+        name = "mamacro___mamacro_0.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz";
+        sha1 = "ad2c9576197c9f1abf308d0787865bd975a3f3e4";
+      };
+    }
+    {
+      name = "map_age_cleaner___map_age_cleaner_0.1.3.tgz";
+      path = fetchurl {
+        name = "map_age_cleaner___map_age_cleaner_0.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz";
+        sha1 = "7d583a7306434c055fe474b0f45078e6e1b4b92a";
+      };
+    }
+    {
+      name = "map_cache___map_cache_0.2.2.tgz";
+      path = fetchurl {
+        name = "map_cache___map_cache_0.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz";
+        sha1 = "c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf";
+      };
+    }
+    {
+      name = "map_obj___map_obj_1.0.1.tgz";
+      path = fetchurl {
+        name = "map_obj___map_obj_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz";
+        sha1 = "d933ceb9205d82bdcf4886f6742bdc2b4dea146d";
+      };
+    }
+    {
+      name = "map_obj___map_obj_2.0.0.tgz";
+      path = fetchurl {
+        name = "map_obj___map_obj_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz";
+        sha1 = "a65cd29087a92598b8791257a523e021222ac1f9";
+      };
+    }
+    {
+      name = "map_visit___map_visit_1.0.0.tgz";
+      path = fetchurl {
+        name = "map_visit___map_visit_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz";
+        sha1 = "ecdca8f13144e660f1b5bd41f12f3479d98dfb8f";
+      };
+    }
+    {
+      name = "markdown_escapes___markdown_escapes_1.0.2.tgz";
+      path = fetchurl {
+        name = "markdown_escapes___markdown_escapes_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.2.tgz";
+        sha1 = "e639cbde7b99c841c0bacc8a07982873b46d2122";
+      };
+    }
+    {
+      name = "markdown_it___markdown_it_9.0.1.tgz";
+      path = fetchurl {
+        name = "markdown_it___markdown_it_9.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/markdown-it/-/markdown-it-9.0.1.tgz";
+        sha1 = "aafe363c43718720b6575fd10625cde6e4ff2d47";
+      };
+    }
+    {
+      name = "markdown_it___markdown_it_8.4.2.tgz";
+      path = fetchurl {
+        name = "markdown_it___markdown_it_8.4.2.tgz";
+        url  = "https://registry.yarnpkg.com/markdown-it/-/markdown-it-8.4.2.tgz";
+        sha1 = "386f98998dc15a37722aa7722084f4020bdd9b54";
+      };
+    }
+    {
+      name = "markdown_table___markdown_table_1.1.2.tgz";
+      path = fetchurl {
+        name = "markdown_table___markdown_table_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.2.tgz";
+        sha1 = "c78db948fa879903a41bce522e3b96f801c63786";
+      };
+    }
+    {
+      name = "markdownlint_cli___markdownlint_cli_0.18.0.tgz";
+      path = fetchurl {
+        name = "markdownlint_cli___markdownlint_cli_0.18.0.tgz";
+        url  = "https://registry.yarnpkg.com/markdownlint-cli/-/markdownlint-cli-0.18.0.tgz";
+        sha1 = "bd1cee72739049d42dcea5f6db0c0f57c6eb8096";
+      };
+    }
+    {
+      name = "markdownlint___markdownlint_0.16.0.tgz";
+      path = fetchurl {
+        name = "markdownlint___markdownlint_0.16.0.tgz";
+        url  = "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.16.0.tgz";
+        sha1 = "69f73cc755a44231fbe5dc7c37a5909cedc0ac6e";
+      };
+    }
+    {
+      name = "marked___marked_0.3.19.tgz";
+      path = fetchurl {
+        name = "marked___marked_0.3.19.tgz";
+        url  = "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz";
+        sha1 = "5d47f709c4c9fc3c216b6d46127280f40b39d790";
+      };
+    }
+    {
+      name = "mathml_tag_names___mathml_tag_names_2.1.1.tgz";
+      path = fetchurl {
+        name = "mathml_tag_names___mathml_tag_names_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.1.tgz";
+        sha1 = "6dff66c99d55ecf739ca53c492e626f1d12a33cc";
+      };
+    }
+    {
+      name = "md5.js___md5.js_1.3.4.tgz";
+      path = fetchurl {
+        name = "md5.js___md5.js_1.3.4.tgz";
+        url  = "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz";
+        sha1 = "e9bdbde94a20a5ac18b04340fc5764d5b09d901d";
+      };
+    }
+    {
+      name = "md5___md5_2.2.1.tgz";
+      path = fetchurl {
+        name = "md5___md5_2.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz";
+        sha1 = "53ab38d5fe3c8891ba465329ea23fac0540126f9";
+      };
+    }
+    {
+      name = "mdast_util_compact___mdast_util_compact_1.0.2.tgz";
+      path = fetchurl {
+        name = "mdast_util_compact___mdast_util_compact_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-1.0.2.tgz";
+        sha1 = "c12ebe16fffc84573d3e19767726de226e95f649";
+      };
+    }
+    {
+      name = "mdurl___mdurl_1.0.1.tgz";
+      path = fetchurl {
+        name = "mdurl___mdurl_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz";
+        sha1 = "fe85b2ec75a59037f2adfec100fd6c601761152e";
+      };
+    }
+    {
+      name = "media_typer___media_typer_0.3.0.tgz";
+      path = fetchurl {
+        name = "media_typer___media_typer_0.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz";
+        sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
+      };
+    }
+    {
+      name = "mem___mem_4.3.0.tgz";
+      path = fetchurl {
+        name = "mem___mem_4.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz";
+        sha1 = "461af497bc4ae09608cdb2e60eefb69bff744178";
+      };
+    }
+    {
+      name = "memory_fs___memory_fs_0.2.0.tgz";
+      path = fetchurl {
+        name = "memory_fs___memory_fs_0.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz";
+        sha1 = "f2bb25368bc121e391c2520de92969caee0a0290";
+      };
+    }
+    {
+      name = "memory_fs___memory_fs_0.4.1.tgz";
+      path = fetchurl {
+        name = "memory_fs___memory_fs_0.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz";
+        sha1 = "3a9a20b8462523e447cfbc7e8bb80ed667bfc552";
+      };
+    }
+    {
+      name = "meow___meow_3.7.0.tgz";
+      path = fetchurl {
+        name = "meow___meow_3.7.0.tgz";
+        url  = "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz";
+        sha1 = "72cb668b425228290abbfa856892587308a801fb";
+      };
+    }
+    {
+      name = "meow___meow_5.0.0.tgz";
+      path = fetchurl {
+        name = "meow___meow_5.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz";
+        sha1 = "dfc73d63a9afc714a5e371760eb5c88b91078aa4";
+      };
+    }
+    {
+      name = "merge_descriptors___merge_descriptors_1.0.1.tgz";
+      path = fetchurl {
+        name = "merge_descriptors___merge_descriptors_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz";
+        sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61";
+      };
+    }
+    {
+      name = "merge_source_map___merge_source_map_1.1.0.tgz";
+      path = fetchurl {
+        name = "merge_source_map___merge_source_map_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz";
+        sha1 = "2fdde7e6020939f70906a68f2d7ae685e4c8c646";
+      };
+    }
+    {
+      name = "merge_stream___merge_stream_1.0.1.tgz";
+      path = fetchurl {
+        name = "merge_stream___merge_stream_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz";
+        sha1 = "4041202d508a342ba00174008df0c251b8c135e1";
+      };
+    }
+    {
+      name = "merge2___merge2_1.2.3.tgz";
+      path = fetchurl {
+        name = "merge2___merge2_1.2.3.tgz";
+        url  = "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz";
+        sha1 = "7ee99dbd69bb6481689253f018488a1b902b0ed5";
+      };
+    }
+    {
+      name = "mermaid___mermaid_8.4.8.tgz";
+      path = fetchurl {
+        name = "mermaid___mermaid_8.4.8.tgz";
+        url  = "https://registry.yarnpkg.com/mermaid/-/mermaid-8.4.8.tgz";
+        sha1 = "8adcfdbc505d6bca52df167cff690427c9727b60";
+      };
+    }
+    {
+      name = "methods___methods_1.1.2.tgz";
+      path = fetchurl {
+        name = "methods___methods_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz";
+        sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
+      };
+    }
+    {
+      name = "micromatch___micromatch_3.1.10.tgz";
+      path = fetchurl {
+        name = "micromatch___micromatch_3.1.10.tgz";
+        url  = "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz";
+        sha1 = "70859bc95c9840952f359a068a3fc49f9ecfac23";
+      };
+    }
+    {
+      name = "micromatch___micromatch_4.0.2.tgz";
+      path = fetchurl {
+        name = "micromatch___micromatch_4.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz";
+        sha1 = "4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259";
+      };
+    }
+    {
+      name = "miller_rabin___miller_rabin_4.0.1.tgz";
+      path = fetchurl {
+        name = "miller_rabin___miller_rabin_4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz";
+        sha1 = "f080351c865b0dc562a8462966daa53543c78a4d";
+      };
+    }
+    {
+      name = "mime_db___mime_db_1.40.0.tgz";
+      path = fetchurl {
+        name = "mime_db___mime_db_1.40.0.tgz";
+        url  = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz";
+        sha1 = "a65057e998db090f732a68f6c276d387d4126c32";
+      };
+    }
+    {
+      name = "mime_types___mime_types_2.1.24.tgz";
+      path = fetchurl {
+        name = "mime_types___mime_types_2.1.24.tgz";
+        url  = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz";
+        sha1 = "b6f8d0b3e951efb77dedeca194cff6d16f676f81";
+      };
+    }
+    {
+      name = "mime___mime_1.6.0.tgz";
+      path = fetchurl {
+        name = "mime___mime_1.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz";
+        sha1 = "32cd9e5c64553bd58d19a568af452acff04981b1";
+      };
+    }
+    {
+      name = "mime___mime_2.4.4.tgz";
+      path = fetchurl {
+        name = "mime___mime_2.4.4.tgz";
+        url  = "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz";
+        sha1 = "bd7b91135fc6b01cde3e9bae33d659b63d8857e5";
+      };
+    }
+    {
+      name = "mimic_fn___mimic_fn_2.1.0.tgz";
+      path = fetchurl {
+        name = "mimic_fn___mimic_fn_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz";
+        sha1 = "7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b";
+      };
+    }
+    {
+      name = "minify___minify_4.1.2.tgz";
+      path = fetchurl {
+        name = "minify___minify_4.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/minify/-/minify-4.1.2.tgz";
+        sha1 = "88755f4faa5f7ab6d0c64fdd659aa34ea658f180";
+      };
+    }
+    {
+      name = "minimalistic_assert___minimalistic_assert_1.0.0.tgz";
+      path = fetchurl {
+        name = "minimalistic_assert___minimalistic_assert_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz";
+        sha1 = "702be2dda6b37f4836bcb3f5db56641b64a1d3d3";
+      };
+    }
+    {
+      name = "minimalistic_crypto_utils___minimalistic_crypto_utils_1.0.1.tgz";
+      path = fetchurl {
+        name = "minimalistic_crypto_utils___minimalistic_crypto_utils_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz";
+        sha1 = "f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a";
+      };
+    }
+    {
+      name = "minimatch___minimatch_3.0.4.tgz";
+      path = fetchurl {
+        name = "minimatch___minimatch_3.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz";
+        sha1 = "5166e286457f03306064be5497e8dbb0c3d32083";
+      };
+    }
+    {
+      name = "minimist_options___minimist_options_3.0.2.tgz";
+      path = fetchurl {
+        name = "minimist_options___minimist_options_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz";
+        sha1 = "fba4c8191339e13ecf4d61beb03f070103f3d954";
+      };
+    }
+    {
+      name = "minimist___minimist_0.0.8.tgz";
+      path = fetchurl {
+        name = "minimist___minimist_0.0.8.tgz";
+        url  = "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz";
+        sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
+      };
+    }
+    {
+      name = "minimist___minimist_1.1.3.tgz";
+      path = fetchurl {
+        name = "minimist___minimist_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz";
+        sha1 = "3bedfd91a92d39016fcfaa1c681e8faa1a1efda8";
+      };
+    }
+    {
+      name = "minimist___minimist_1.2.0.tgz";
+      path = fetchurl {
+        name = "minimist___minimist_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz";
+        sha1 = "a35008b20f41383eec1fb914f4cd5df79a264284";
+      };
+    }
+    {
+      name = "minipass_collect___minipass_collect_1.0.2.tgz";
+      path = fetchurl {
+        name = "minipass_collect___minipass_collect_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz";
+        sha1 = "22b813bf745dc6edba2576b940022ad6edc8c617";
+      };
+    }
+    {
+      name = "minipass_flush___minipass_flush_1.0.5.tgz";
+      path = fetchurl {
+        name = "minipass_flush___minipass_flush_1.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz";
+        sha1 = "82e7135d7e89a50ffe64610a787953c4c4cbb373";
+      };
+    }
+    {
+      name = "minipass_pipeline___minipass_pipeline_1.2.2.tgz";
+      path = fetchurl {
+        name = "minipass_pipeline___minipass_pipeline_1.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz";
+        sha1 = "3dcb6bb4a546e32969c7ad710f2c79a86abba93a";
+      };
+    }
+    {
+      name = "minipass___minipass_2.3.5.tgz";
+      path = fetchurl {
+        name = "minipass___minipass_2.3.5.tgz";
+        url  = "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz";
+        sha1 = "cacebe492022497f656b0f0f51e2682a9ed2d848";
+      };
+    }
+    {
+      name = "minipass___minipass_3.1.1.tgz";
+      path = fetchurl {
+        name = "minipass___minipass_3.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz";
+        sha1 = "7607ce778472a185ad6d89082aa2070f79cedcd5";
+      };
+    }
+    {
+      name = "minizlib___minizlib_1.2.1.tgz";
+      path = fetchurl {
+        name = "minizlib___minizlib_1.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz";
+        sha1 = "dd27ea6136243c7c880684e8672bb3a45fd9b614";
+      };
+    }
+    {
+      name = "mississippi___mississippi_3.0.0.tgz";
+      path = fetchurl {
+        name = "mississippi___mississippi_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz";
+        sha1 = "ea0a3291f97e0b5e8776b363d5f0a12d94c67022";
+      };
+    }
+    {
+      name = "mitt___mitt_1.2.0.tgz";
+      path = fetchurl {
+        name = "mitt___mitt_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz";
+        sha1 = "cb24e6569c806e31bd4e3995787fe38a04fdf90d";
+      };
+    }
+    {
+      name = "mixin_deep___mixin_deep_1.3.2.tgz";
+      path = fetchurl {
+        name = "mixin_deep___mixin_deep_1.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz";
+        sha1 = "1120b43dc359a785dce65b55b82e257ccf479566";
+      };
+    }
+    {
+      name = "https___registry.npmjs.org_mkdirp___mkdirp_0.5.1.tgz";
+      path = fetchurl {
+        name = "https___registry.npmjs.org_mkdirp___mkdirp_0.5.1.tgz";
+        url  = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
+        sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
+      };
+    }
+    {
+      name = "moment_mini___moment_mini_2.22.1.tgz";
+      path = fetchurl {
+        name = "moment_mini___moment_mini_2.22.1.tgz";
+        url  = "https://registry.yarnpkg.com/moment-mini/-/moment-mini-2.22.1.tgz";
+        sha1 = "bc32d73e43a4505070be6b53494b17623183420d";
+      };
+    }
+    {
+      name = "moment___moment_2.24.0.tgz";
+      path = fetchurl {
+        name = "moment___moment_2.24.0.tgz";
+        url  = "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz";
+        sha1 = "0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b";
+      };
+    }
+    {
+      name = "monaco_editor_webpack_plugin___monaco_editor_webpack_plugin_1.7.0.tgz";
+      path = fetchurl {
+        name = "monaco_editor_webpack_plugin___monaco_editor_webpack_plugin_1.7.0.tgz";
+        url  = "https://registry.yarnpkg.com/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-1.7.0.tgz";
+        sha1 = "920cbeecca25f15d70d568a7e11b0ba4daf1ae83";
+      };
+    }
+    {
+      name = "monaco_editor___monaco_editor_0.18.1.tgz";
+      path = fetchurl {
+        name = "monaco_editor___monaco_editor_0.18.1.tgz";
+        url  = "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.18.1.tgz";
+        sha1 = "ced7c305a23109875feeaf395a504b91f6358cfc";
+      };
+    }
+    {
+      name = "mousetrap___mousetrap_1.4.6.tgz";
+      path = fetchurl {
+        name = "mousetrap___mousetrap_1.4.6.tgz";
+        url  = "https://registry.yarnpkg.com/mousetrap/-/mousetrap-1.4.6.tgz";
+        sha1 = "eaca72e22e56d5b769b7555873b688c3332e390a";
+      };
+    }
+    {
+      name = "move_concurrently___move_concurrently_1.0.1.tgz";
+      path = fetchurl {
+        name = "move_concurrently___move_concurrently_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz";
+        sha1 = "be2c005fda32e0b29af1f05d7c4b33214c701f92";
+      };
+    }
+    {
+      name = "ms___ms_2.0.0.tgz";
+      path = fetchurl {
+        name = "ms___ms_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz";
+        sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
+      };
+    }
+    {
+      name = "ms___ms_2.1.1.tgz";
+      path = fetchurl {
+        name = "ms___ms_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz";
+        sha1 = "30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a";
+      };
+    }
+    {
+      name = "multicast_dns_service_types___multicast_dns_service_types_1.1.0.tgz";
+      path = fetchurl {
+        name = "multicast_dns_service_types___multicast_dns_service_types_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz";
+        sha1 = "899f11d9686e5e05cb91b35d5f0e63b773cfc901";
+      };
+    }
+    {
+      name = "multicast_dns___multicast_dns_6.1.1.tgz";
+      path = fetchurl {
+        name = "multicast_dns___multicast_dns_6.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.1.1.tgz";
+        sha1 = "6e7de86a570872ab17058adea7160bbeca814dde";
+      };
+    }
+    {
+      name = "mute_stream___mute_stream_0.0.8.tgz";
+      path = fetchurl {
+        name = "mute_stream___mute_stream_0.0.8.tgz";
+        url  = "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz";
+        sha1 = "1630c42b2251ff81e2a283de96a5497ea92e5e0d";
+      };
+    }
+    {
+      name = "nan___nan_2.14.0.tgz";
+      path = fetchurl {
+        name = "nan___nan_2.14.0.tgz";
+        url  = "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz";
+        sha1 = "7818f722027b2459a86f0295d434d1fc2336c52c";
+      };
+    }
+    {
+      name = "nanomatch___nanomatch_1.2.13.tgz";
+      path = fetchurl {
+        name = "nanomatch___nanomatch_1.2.13.tgz";
+        url  = "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz";
+        sha1 = "b87a8aa4fc0de8fe6be88895b38983ff265bd119";
+      };
+    }
+    {
+      name = "natural_compare___natural_compare_1.4.0.tgz";
+      path = fetchurl {
+        name = "natural_compare___natural_compare_1.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz";
+        sha1 = "4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7";
+      };
+    }
+    {
+      name = "needle___needle_2.4.0.tgz";
+      path = fetchurl {
+        name = "needle___needle_2.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz";
+        sha1 = "6833e74975c444642590e15a750288c5f939b57c";
+      };
+    }
+    {
+      name = "negotiator___negotiator_0.6.2.tgz";
+      path = fetchurl {
+        name = "negotiator___negotiator_0.6.2.tgz";
+        url  = "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz";
+        sha1 = "feacf7ccf525a77ae9634436a64883ffeca346fb";
+      };
+    }
+    {
+      name = "neo_async___neo_async_2.6.1.tgz";
+      path = fetchurl {
+        name = "neo_async___neo_async_2.6.1.tgz";
+        url  = "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz";
+        sha1 = "ac27ada66167fa8849a6addd837f6b189ad2081c";
+      };
+    }
+    {
+      name = "nice_try___nice_try_1.0.5.tgz";
+      path = fetchurl {
+        name = "nice_try___nice_try_1.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz";
+        sha1 = "a3378a7696ce7d223e88fc9b764bd7ef1089e366";
+      };
+    }
+    {
+      name = "no_case___no_case_2.3.2.tgz";
+      path = fetchurl {
+        name = "no_case___no_case_2.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz";
+        sha1 = "60b813396be39b3f1288a4c1ed5d1e7d28b464ac";
+      };
+    }
+    {
+      name = "node_ensure___node_ensure_0.0.0.tgz";
+      path = fetchurl {
+        name = "node_ensure___node_ensure_0.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/node-ensure/-/node-ensure-0.0.0.tgz";
+        sha1 = "ecae764150de99861ec5c810fd5d096b183932a7";
+      };
+    }
+    {
+      name = "node_fetch___node_fetch_2.6.0.tgz";
+      path = fetchurl {
+        name = "node_fetch___node_fetch_2.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz";
+        sha1 = "e633456386d4aa55863f676a7ab0daa8fdecb0fd";
+      };
+    }
+    {
+      name = "node_forge___node_forge_0.9.0.tgz";
+      path = fetchurl {
+        name = "node_forge___node_forge_0.9.0.tgz";
+        url  = "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz";
+        sha1 = "d624050edbb44874adca12bb9a52ec63cb782579";
+      };
+    }
+    {
+      name = "node_gyp___node_gyp_3.8.0.tgz";
+      path = fetchurl {
+        name = "node_gyp___node_gyp_3.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz";
+        sha1 = "540304261c330e80d0d5edce253a68cb3964218c";
+      };
+    }
+    {
+      name = "node_int64___node_int64_0.4.0.tgz";
+      path = fetchurl {
+        name = "node_int64___node_int64_0.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz";
+        sha1 = "87a9065cdb355d3182d8f94ce11188b825c68a3b";
+      };
+    }
+    {
+      name = "node_libs_browser___node_libs_browser_2.2.1.tgz";
+      path = fetchurl {
+        name = "node_libs_browser___node_libs_browser_2.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz";
+        sha1 = "b64f513d18338625f90346d27b0d235e631f6425";
+      };
+    }
+    {
+      name = "node_modules_regexp___node_modules_regexp_1.0.0.tgz";
+      path = fetchurl {
+        name = "node_modules_regexp___node_modules_regexp_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz";
+        sha1 = "8d9dbe28964a4ac5712e9131642107c71e90ec40";
+      };
+    }
+    {
+      name = "node_notifier___node_notifier_5.4.0.tgz";
+      path = fetchurl {
+        name = "node_notifier___node_notifier_5.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.0.tgz";
+        sha1 = "7b455fdce9f7de0c63538297354f3db468426e6a";
+      };
+    }
+    {
+      name = "node_pre_gyp___node_pre_gyp_0.12.0.tgz";
+      path = fetchurl {
+        name = "node_pre_gyp___node_pre_gyp_0.12.0.tgz";
+        url  = "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz";
+        sha1 = "39ba4bb1439da030295f899e3b520b7785766149";
+      };
+    }
+    {
+      name = "node_releases___node_releases_1.1.50.tgz";
+      path = fetchurl {
+        name = "node_releases___node_releases_1.1.50.tgz";
+        url  = "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.50.tgz";
+        sha1 = "803c40d2c45db172d0410e4efec83aa8c6ad0592";
+      };
+    }
+    {
+      name = "node_sass___node_sass_4.12.0.tgz";
+      path = fetchurl {
+        name = "node_sass___node_sass_4.12.0.tgz";
+        url  = "https://registry.yarnpkg.com/node-sass/-/node-sass-4.12.0.tgz";
+        sha1 = "0914f531932380114a30cc5fa4fa63233a25f017";
+      };
+    }
+    {
+      name = "nodemon___nodemon_1.18.9.tgz";
+      path = fetchurl {
+        name = "nodemon___nodemon_1.18.9.tgz";
+        url  = "https://registry.yarnpkg.com/nodemon/-/nodemon-1.18.9.tgz";
+        sha1 = "90b467efd3b3c81b9453380aeb2a2cba535d0ead";
+      };
+    }
+    {
+      name = "nopt___nopt_3.0.6.tgz";
+      path = fetchurl {
+        name = "nopt___nopt_3.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz";
+        sha1 = "c6465dbf08abcd4db359317f79ac68a646b28ff9";
+      };
+    }
+    {
+      name = "nopt___nopt_4.0.1.tgz";
+      path = fetchurl {
+        name = "nopt___nopt_4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz";
+        sha1 = "d0d4685afd5415193c8c7505602d0d17cd64474d";
+      };
+    }
+    {
+      name = "nopt___nopt_1.0.10.tgz";
+      path = fetchurl {
+        name = "nopt___nopt_1.0.10.tgz";
+        url  = "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz";
+        sha1 = "6ddd21bd2a31417b92727dd585f8a6f37608ebee";
+      };
+    }
+    {
+      name = "normalize_package_data___normalize_package_data_2.5.0.tgz";
+      path = fetchurl {
+        name = "normalize_package_data___normalize_package_data_2.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz";
+        sha1 = "e66db1838b200c1dfc233225d12cb36520e234a8";
+      };
+    }
+    {
+      name = "normalize_path___normalize_path_2.1.1.tgz";
+      path = fetchurl {
+        name = "normalize_path___normalize_path_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz";
+        sha1 = "1ab28b556e198363a8c1a6f7e6fa20137fe6aed9";
+      };
+    }
+    {
+      name = "normalize_path___normalize_path_3.0.0.tgz";
+      path = fetchurl {
+        name = "normalize_path___normalize_path_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz";
+        sha1 = "0dcd69ff23a1c9b11fd0978316644a0388216a65";
+      };
+    }
+    {
+      name = "normalize_range___normalize_range_0.1.2.tgz";
+      path = fetchurl {
+        name = "normalize_range___normalize_range_0.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz";
+        sha1 = "2d10c06bdfd312ea9777695a4d28439456b75942";
+      };
+    }
+    {
+      name = "normalize_selector___normalize_selector_0.2.0.tgz";
+      path = fetchurl {
+        name = "normalize_selector___normalize_selector_0.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz";
+        sha1 = "d0b145eb691189c63a78d201dc4fdb1293ef0c03";
+      };
+    }
+    {
+      name = "npm_bundled___npm_bundled_1.0.6.tgz";
+      path = fetchurl {
+        name = "npm_bundled___npm_bundled_1.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz";
+        sha1 = "e7ba9aadcef962bb61248f91721cd932b3fe6bdd";
+      };
+    }
+    {
+      name = "npm_packlist___npm_packlist_1.4.1.tgz";
+      path = fetchurl {
+        name = "npm_packlist___npm_packlist_1.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz";
+        sha1 = "19064cdf988da80ea3cee45533879d90192bbfbc";
+      };
+    }
+    {
+      name = "npm_run_path___npm_run_path_2.0.2.tgz";
+      path = fetchurl {
+        name = "npm_run_path___npm_run_path_2.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz";
+        sha1 = "35a9232dfa35d7067b4cb2ddf2357b1871536c5f";
+      };
+    }
+    {
+      name = "npmlog___npmlog_4.1.2.tgz";
+      path = fetchurl {
+        name = "npmlog___npmlog_4.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz";
+        sha1 = "08a7f2a8bf734604779a9efa4ad5cc717abb954b";
+      };
+    }
+    {
+      name = "num2fraction___num2fraction_1.2.2.tgz";
+      path = fetchurl {
+        name = "num2fraction___num2fraction_1.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz";
+        sha1 = "6f682b6a027a4e9ddfa4564cd2589d1d4e669ede";
+      };
+    }
+    {
+      name = "number_is_nan___number_is_nan_1.0.1.tgz";
+      path = fetchurl {
+        name = "number_is_nan___number_is_nan_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz";
+        sha1 = "097b602b53422a522c1afb8790318336941a011d";
+      };
+    }
+    {
+      name = "nwsapi___nwsapi_2.0.9.tgz";
+      path = fetchurl {
+        name = "nwsapi___nwsapi_2.0.9.tgz";
+        url  = "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz";
+        sha1 = "77ac0cdfdcad52b6a1151a84e73254edc33ed016";
+      };
+    }
+    {
+      name = "oauth_sign___oauth_sign_0.9.0.tgz";
+      path = fetchurl {
+        name = "oauth_sign___oauth_sign_0.9.0.tgz";
+        url  = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz";
+        sha1 = "47a7b016baa68b5fa0ecf3dee08a85c679ac6455";
+      };
+    }
+    {
+      name = "object_assign___object_assign_4.1.1.tgz";
+      path = fetchurl {
+        name = "object_assign___object_assign_4.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz";
+        sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
+      };
+    }
+    {
+      name = "object_component___object_component_0.0.3.tgz";
+      path = fetchurl {
+        name = "object_component___object_component_0.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz";
+        sha1 = "f0c69aa50efc95b866c186f400a33769cb2f1291";
+      };
+    }
+    {
+      name = "object_copy___object_copy_0.1.0.tgz";
+      path = fetchurl {
+        name = "object_copy___object_copy_0.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz";
+        sha1 = "7e7d858b781bd7c991a41ba975ed3812754e998c";
+      };
+    }
+    {
+      name = "object_inspect___object_inspect_1.7.0.tgz";
+      path = fetchurl {
+        name = "object_inspect___object_inspect_1.7.0.tgz";
+        url  = "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz";
+        sha1 = "f4f6bd181ad77f006b5ece60bd0b6f398ff74a67";
+      };
+    }
+    {
+      name = "object_keys___object_keys_1.1.1.tgz";
+      path = fetchurl {
+        name = "object_keys___object_keys_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz";
+        sha1 = "1c47f272df277f3b1daf061677d9c82e2322c60e";
+      };
+    }
+    {
+      name = "object_visit___object_visit_1.0.1.tgz";
+      path = fetchurl {
+        name = "object_visit___object_visit_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz";
+        sha1 = "f79c4493af0c5377b59fe39d395e41042dd045bb";
+      };
+    }
+    {
+      name = "object.assign___object.assign_4.1.0.tgz";
+      path = fetchurl {
+        name = "object.assign___object.assign_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz";
+        sha1 = "968bf1100d7956bb3ca086f006f846b3bc4008da";
+      };
+    }
+    {
+      name = "object.entries___object.entries_1.1.1.tgz";
+      path = fetchurl {
+        name = "object.entries___object.entries_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz";
+        sha1 = "ee1cf04153de02bb093fec33683900f57ce5399b";
+      };
+    }
+    {
+      name = "object.getownpropertydescriptors___object.getownpropertydescriptors_2.0.3.tgz";
+      path = fetchurl {
+        name = "object.getownpropertydescriptors___object.getownpropertydescriptors_2.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz";
+        sha1 = "8758c846f5b407adab0f236e0986f14b051caa16";
+      };
+    }
+    {
+      name = "object.pick___object.pick_1.3.0.tgz";
+      path = fetchurl {
+        name = "object.pick___object.pick_1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz";
+        sha1 = "87a10ac4c1694bd2e1cbf53591a66141fb5dd747";
+      };
+    }
+    {
+      name = "object.values___object.values_1.1.0.tgz";
+      path = fetchurl {
+        name = "object.values___object.values_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz";
+        sha1 = "bf6810ef5da3e5325790eaaa2be213ea84624da9";
+      };
+    }
+    {
+      name = "obuf___obuf_1.1.2.tgz";
+      path = fetchurl {
+        name = "obuf___obuf_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz";
+        sha1 = "09bea3343d41859ebd446292d11c9d4db619084e";
+      };
+    }
+    {
+      name = "on_finished___on_finished_2.3.0.tgz";
+      path = fetchurl {
+        name = "on_finished___on_finished_2.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz";
+        sha1 = "20f1336481b083cd75337992a16971aa2d906947";
+      };
+    }
+    {
+      name = "on_headers___on_headers_1.0.2.tgz";
+      path = fetchurl {
+        name = "on_headers___on_headers_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz";
+        sha1 = "772b0ae6aaa525c399e489adfad90c403eb3c28f";
+      };
+    }
+    {
+      name = "once___once_1.4.0.tgz";
+      path = fetchurl {
+        name = "once___once_1.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz";
+        sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
+      };
+    }
+    {
+      name = "onetime___onetime_5.1.0.tgz";
+      path = fetchurl {
+        name = "onetime___onetime_5.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz";
+        sha1 = "fff0f3c91617fe62bb50189636e99ac8a6df7be5";
+      };
+    }
+    {
+      name = "opener___opener_1.5.1.tgz";
+      path = fetchurl {
+        name = "opener___opener_1.5.1.tgz";
+        url  = "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz";
+        sha1 = "6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed";
+      };
+    }
+    {
+      name = "opn___opn_5.5.0.tgz";
+      path = fetchurl {
+        name = "opn___opn_5.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz";
+        sha1 = "fc7164fab56d235904c51c3b27da6758ca3b9bfc";
+      };
+    }
+    {
+      name = "optimism___optimism_0.10.3.tgz";
+      path = fetchurl {
+        name = "optimism___optimism_0.10.3.tgz";
+        url  = "https://registry.yarnpkg.com/optimism/-/optimism-0.10.3.tgz";
+        sha1 = "163268fdc741dea2fb50f300bedda80356445fd7";
+      };
+    }
+    {
+      name = "optimist___optimist_0.6.1.tgz";
+      path = fetchurl {
+        name = "optimist___optimist_0.6.1.tgz";
+        url  = "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz";
+        sha1 = "da3ea74686fa21a19a111c326e90eb15a0196686";
+      };
+    }
+    {
+      name = "optionator___optionator_0.8.3.tgz";
+      path = fetchurl {
+        name = "optionator___optionator_0.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz";
+        sha1 = "84fa1d036fe9d3c7e21d99884b601167ec8fb495";
+      };
+    }
+    {
+      name = "orderedmap___orderedmap_1.0.0.tgz";
+      path = fetchurl {
+        name = "orderedmap___orderedmap_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/orderedmap/-/orderedmap-1.0.0.tgz";
+        sha1 = "d90fc2ba1ed085190907d601dec6e6a53f8d41ba";
+      };
+    }
+    {
+      name = "original___original_1.0.2.tgz";
+      path = fetchurl {
+        name = "original___original_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz";
+        sha1 = "e442a61cffe1c5fd20a65f3261c26663b303f25f";
+      };
+    }
+    {
+      name = "os_browserify___os_browserify_0.3.0.tgz";
+      path = fetchurl {
+        name = "os_browserify___os_browserify_0.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz";
+        sha1 = "854373c7f5c2315914fc9bfc6bd8238fdda1ec27";
+      };
+    }
+    {
+      name = "os_homedir___os_homedir_1.0.2.tgz";
+      path = fetchurl {
+        name = "os_homedir___os_homedir_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz";
+        sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
+      };
+    }
+    {
+      name = "os_locale___os_locale_1.4.0.tgz";
+      path = fetchurl {
+        name = "os_locale___os_locale_1.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz";
+        sha1 = "20f9f17ae29ed345e8bde583b13d2009803c14d9";
+      };
+    }
+    {
+      name = "os_locale___os_locale_3.1.0.tgz";
+      path = fetchurl {
+        name = "os_locale___os_locale_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz";
+        sha1 = "a802a6ee17f24c10483ab9935719cef4ed16bf1a";
+      };
+    }
+    {
+      name = "os_tmpdir___os_tmpdir_1.0.2.tgz";
+      path = fetchurl {
+        name = "os_tmpdir___os_tmpdir_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
+        sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
+      };
+    }
+    {
+      name = "osenv___osenv_0.1.5.tgz";
+      path = fetchurl {
+        name = "osenv___osenv_0.1.5.tgz";
+        url  = "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz";
+        sha1 = "85cdfafaeb28e8677f416e287592b5f3f49ea410";
+      };
+    }
+    {
+      name = "p_defer___p_defer_1.0.0.tgz";
+      path = fetchurl {
+        name = "p_defer___p_defer_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz";
+        sha1 = "9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c";
+      };
+    }
+    {
+      name = "p_each_series___p_each_series_1.0.0.tgz";
+      path = fetchurl {
+        name = "p_each_series___p_each_series_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz";
+        sha1 = "930f3d12dd1f50e7434457a22cd6f04ac6ad7f71";
+      };
+    }
+    {
+      name = "p_finally___p_finally_1.0.0.tgz";
+      path = fetchurl {
+        name = "p_finally___p_finally_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz";
+        sha1 = "3fbcfb15b899a44123b34b6dcc18b724336a2cae";
+      };
+    }
+    {
+      name = "p_is_promise___p_is_promise_2.1.0.tgz";
+      path = fetchurl {
+        name = "p_is_promise___p_is_promise_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz";
+        sha1 = "918cebaea248a62cf7ffab8e3bca8c5f882fc42e";
+      };
+    }
+    {
+      name = "p_limit___p_limit_1.2.0.tgz";
+      path = fetchurl {
+        name = "p_limit___p_limit_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz";
+        sha1 = "0e92b6bedcb59f022c13d0f1949dc82d15909f1c";
+      };
+    }
+    {
+      name = "p_limit___p_limit_2.2.2.tgz";
+      path = fetchurl {
+        name = "p_limit___p_limit_2.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz";
+        sha1 = "61279b67721f5287aa1c13a9a7fbbc48c9291b1e";
+      };
+    }
+    {
+      name = "p_locate___p_locate_2.0.0.tgz";
+      path = fetchurl {
+        name = "p_locate___p_locate_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz";
+        sha1 = "20a0103b222a70c8fd39cc2e580680f3dde5ec43";
+      };
+    }
+    {
+      name = "p_locate___p_locate_3.0.0.tgz";
+      path = fetchurl {
+        name = "p_locate___p_locate_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz";
+        sha1 = "322d69a05c0264b25997d9f40cd8a891ab0064a4";
+      };
+    }
+    {
+      name = "p_locate___p_locate_4.1.0.tgz";
+      path = fetchurl {
+        name = "p_locate___p_locate_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz";
+        sha1 = "a3428bb7088b3a60292f66919278b7c297ad4f07";
+      };
+    }
+    {
+      name = "p_map___p_map_2.1.0.tgz";
+      path = fetchurl {
+        name = "p_map___p_map_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz";
+        sha1 = "310928feef9c9ecc65b68b17693018a665cea175";
+      };
+    }
+    {
+      name = "p_map___p_map_3.0.0.tgz";
+      path = fetchurl {
+        name = "p_map___p_map_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz";
+        sha1 = "d704d9af8a2ba684e2600d9a215983d4141a979d";
+      };
+    }
+    {
+      name = "p_reduce___p_reduce_1.0.0.tgz";
+      path = fetchurl {
+        name = "p_reduce___p_reduce_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz";
+        sha1 = "18c2b0dd936a4690a529f8231f58a0fdb6a47dfa";
+      };
+    }
+    {
+      name = "p_retry___p_retry_3.0.1.tgz";
+      path = fetchurl {
+        name = "p_retry___p_retry_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz";
+        sha1 = "316b4c8893e2c8dc1cfa891f406c4b422bebf328";
+      };
+    }
+    {
+      name = "p_try___p_try_1.0.0.tgz";
+      path = fetchurl {
+        name = "p_try___p_try_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz";
+        sha1 = "cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3";
+      };
+    }
+    {
+      name = "p_try___p_try_2.2.0.tgz";
+      path = fetchurl {
+        name = "p_try___p_try_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz";
+        sha1 = "cb2868540e313d61de58fafbe35ce9004d5540e6";
+      };
+    }
+    {
+      name = "package_json___package_json_4.0.1.tgz";
+      path = fetchurl {
+        name = "package_json___package_json_4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz";
+        sha1 = "8869a0401253661c4c4ca3da6c2121ed555f5eed";
+      };
+    }
+    {
+      name = "pako___pako_1.0.6.tgz";
+      path = fetchurl {
+        name = "pako___pako_1.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz";
+        sha1 = "0101211baa70c4bca4a0f63f2206e97b7dfaf258";
+      };
+    }
+    {
+      name = "parallel_transform___parallel_transform_1.1.0.tgz";
+      path = fetchurl {
+        name = "parallel_transform___parallel_transform_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz";
+        sha1 = "d410f065b05da23081fcd10f28854c29bda33b06";
+      };
+    }
+    {
+      name = "param_case___param_case_2.1.1.tgz";
+      path = fetchurl {
+        name = "param_case___param_case_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz";
+        sha1 = "df94fd8cf6531ecf75e6bef9a0858fbc72be2247";
+      };
+    }
+    {
+      name = "parent_module___parent_module_1.0.1.tgz";
+      path = fetchurl {
+        name = "parent_module___parent_module_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz";
+        sha1 = "691d2709e78c79fae3a156622452d00762caaaa2";
+      };
+    }
+    {
+      name = "parse_asn1___parse_asn1_5.1.0.tgz";
+      path = fetchurl {
+        name = "parse_asn1___parse_asn1_5.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz";
+        sha1 = "37c4f9b7ed3ab65c74817b5f2480937fbf97c712";
+      };
+    }
+    {
+      name = "parse_color___parse_color_1.0.0.tgz";
+      path = fetchurl {
+        name = "parse_color___parse_color_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/parse-color/-/parse-color-1.0.0.tgz";
+        sha1 = "7b748b95a83f03f16a94f535e52d7f3d94658619";
+      };
+    }
+    {
+      name = "parse_entities___parse_entities_1.2.0.tgz";
+      path = fetchurl {
+        name = "parse_entities___parse_entities_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.0.tgz";
+        sha1 = "9deac087661b2e36814153cb78d7e54a4c5fd6f4";
+      };
+    }
+    {
+      name = "parse_json___parse_json_2.2.0.tgz";
+      path = fetchurl {
+        name = "parse_json___parse_json_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz";
+        sha1 = "f480f40434ef80741f8469099f8dea18f55a4dc9";
+      };
+    }
+    {
+      name = "parse_json___parse_json_4.0.0.tgz";
+      path = fetchurl {
+        name = "parse_json___parse_json_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz";
+        sha1 = "be35f5425be1f7f6c747184f98a788cb99477ee0";
+      };
+    }
+    {
+      name = "parse_passwd___parse_passwd_1.0.0.tgz";
+      path = fetchurl {
+        name = "parse_passwd___parse_passwd_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz";
+        sha1 = "6d5b934a456993b23d37f40a382d6f1666a8e5c6";
+      };
+    }
+    {
+      name = "parse5___parse5_4.0.0.tgz";
+      path = fetchurl {
+        name = "parse5___parse5_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz";
+        sha1 = "6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608";
+      };
+    }
+    {
+      name = "parse5___parse5_5.0.0.tgz";
+      path = fetchurl {
+        name = "parse5___parse5_5.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/parse5/-/parse5-5.0.0.tgz";
+        sha1 = "4d02710d44f3c3846197a11e205d4ef17842b81a";
+      };
+    }
+    {
+      name = "parseqs___parseqs_0.0.5.tgz";
+      path = fetchurl {
+        name = "parseqs___parseqs_0.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz";
+        sha1 = "d5208a3738e46766e291ba2ea173684921a8b89d";
+      };
+    }
+    {
+      name = "parseuri___parseuri_0.0.5.tgz";
+      path = fetchurl {
+        name = "parseuri___parseuri_0.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz";
+        sha1 = "80204a50d4dbb779bfdc6ebe2778d90e4bce320a";
+      };
+    }
+    {
+      name = "parseurl___parseurl_1.3.3.tgz";
+      path = fetchurl {
+        name = "parseurl___parseurl_1.3.3.tgz";
+        url  = "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz";
+        sha1 = "9da19e7bee8d12dff0513ed5b76957793bc2e8d4";
+      };
+    }
+    {
+      name = "pascalcase___pascalcase_0.1.1.tgz";
+      path = fetchurl {
+        name = "pascalcase___pascalcase_0.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz";
+        sha1 = "b363e55e8006ca6fe21784d2db22bd15d7917f14";
+      };
+    }
+    {
+      name = "path_browserify___path_browserify_0.0.1.tgz";
+      path = fetchurl {
+        name = "path_browserify___path_browserify_0.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz";
+        sha1 = "e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a";
+      };
+    }
+    {
+      name = "path_dirname___path_dirname_1.0.2.tgz";
+      path = fetchurl {
+        name = "path_dirname___path_dirname_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz";
+        sha1 = "cc33d24d525e099a5388c0336c6e32b9160609e0";
+      };
+    }
+    {
+      name = "path_exists___path_exists_2.1.0.tgz";
+      path = fetchurl {
+        name = "path_exists___path_exists_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz";
+        sha1 = "0feb6c64f0fc518d9a754dd5efb62c7022761f4b";
+      };
+    }
+    {
+      name = "path_exists___path_exists_3.0.0.tgz";
+      path = fetchurl {
+        name = "path_exists___path_exists_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz";
+        sha1 = "ce0ebeaa5f78cb18925ea7d810d7b59b010fd515";
+      };
+    }
+    {
+      name = "path_exists___path_exists_4.0.0.tgz";
+      path = fetchurl {
+        name = "path_exists___path_exists_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz";
+        sha1 = "513bdbe2d3b95d7762e8c1137efa195c6c61b5b3";
+      };
+    }
+    {
+      name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
+      path = fetchurl {
+        name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
+        sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
+      };
+    }
+    {
+      name = "path_is_inside___path_is_inside_1.0.2.tgz";
+      path = fetchurl {
+        name = "path_is_inside___path_is_inside_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz";
+        sha1 = "365417dede44430d1c11af61027facf074bdfc53";
+      };
+    }
+    {
+      name = "path_key___path_key_2.0.1.tgz";
+      path = fetchurl {
+        name = "path_key___path_key_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz";
+        sha1 = "411cadb574c5a140d3a4b1910d40d80cc9f40b40";
+      };
+    }
+    {
+      name = "path_parse___path_parse_1.0.6.tgz";
+      path = fetchurl {
+        name = "path_parse___path_parse_1.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz";
+        sha1 = "d62dbb5679405d72c4737ec58600e9ddcf06d24c";
+      };
+    }
+    {
+      name = "path_to_regexp___path_to_regexp_0.1.7.tgz";
+      path = fetchurl {
+        name = "path_to_regexp___path_to_regexp_0.1.7.tgz";
+        url  = "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
+        sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c";
+      };
+    }
+    {
+      name = "path_type___path_type_1.1.0.tgz";
+      path = fetchurl {
+        name = "path_type___path_type_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz";
+        sha1 = "59c44f7ee491da704da415da5a4070ba4f8fe441";
+      };
+    }
+    {
+      name = "path_type___path_type_2.0.0.tgz";
+      path = fetchurl {
+        name = "path_type___path_type_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz";
+        sha1 = "f012ccb8415b7096fc2daa1054c3d72389594c73";
+      };
+    }
+    {
+      name = "path_type___path_type_3.0.0.tgz";
+      path = fetchurl {
+        name = "path_type___path_type_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz";
+        sha1 = "cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f";
+      };
+    }
+    {
+      name = "pbkdf2___pbkdf2_3.0.14.tgz";
+      path = fetchurl {
+        name = "pbkdf2___pbkdf2_3.0.14.tgz";
+        url  = "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz";
+        sha1 = "a35e13c64799b06ce15320f459c230e68e73bade";
+      };
+    }
+    {
+      name = "pdfjs_dist___pdfjs_dist_2.1.266.tgz";
+      path = fetchurl {
+        name = "pdfjs_dist___pdfjs_dist_2.1.266.tgz";
+        url  = "https://registry.yarnpkg.com/pdfjs-dist/-/pdfjs-dist-2.1.266.tgz";
+        sha1 = "cded02268b389559e807f410d2a729db62160026";
+      };
+    }
+    {
+      name = "performance_now___performance_now_2.1.0.tgz";
+      path = fetchurl {
+        name = "performance_now___performance_now_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz";
+        sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
+      };
+    }
+    {
+      name = "picomatch___picomatch_2.0.7.tgz";
+      path = fetchurl {
+        name = "picomatch___picomatch_2.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz";
+        sha1 = "514169d8c7cd0bdbeecc8a2609e34a7163de69f6";
+      };
+    }
+    {
+      name = "pify___pify_2.3.0.tgz";
+      path = fetchurl {
+        name = "pify___pify_2.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz";
+        sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
+      };
+    }
+    {
+      name = "pify___pify_3.0.0.tgz";
+      path = fetchurl {
+        name = "pify___pify_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz";
+        sha1 = "e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176";
+      };
+    }
+    {
+      name = "pify___pify_4.0.1.tgz";
+      path = fetchurl {
+        name = "pify___pify_4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz";
+        sha1 = "4b2cd25c50d598735c50292224fd8c6df41e3231";
+      };
+    }
+    {
+      name = "pikaday___pikaday_1.8.0.tgz";
+      path = fetchurl {
+        name = "pikaday___pikaday_1.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/pikaday/-/pikaday-1.8.0.tgz";
+        sha1 = "ce930e257042e852e6aadee1115e01554b2d71c5";
+      };
+    }
+    {
+      name = "pinkie_promise___pinkie_promise_2.0.1.tgz";
+      path = fetchurl {
+        name = "pinkie_promise___pinkie_promise_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
+        sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
+      };
+    }
+    {
+      name = "pinkie___pinkie_2.0.4.tgz";
+      path = fetchurl {
+        name = "pinkie___pinkie_2.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz";
+        sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
+      };
+    }
+    {
+      name = "pirates___pirates_4.0.1.tgz";
+      path = fetchurl {
+        name = "pirates___pirates_4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz";
+        sha1 = "643a92caf894566f91b2b986d2c66950a8e2fb87";
+      };
+    }
+    {
+      name = "pixelmatch___pixelmatch_4.0.2.tgz";
+      path = fetchurl {
+        name = "pixelmatch___pixelmatch_4.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz";
+        sha1 = "8f47dcec5011b477b67db03c243bc1f3085e8854";
+      };
+    }
+    {
+      name = "pkg_dir___pkg_dir_2.0.0.tgz";
+      path = fetchurl {
+        name = "pkg_dir___pkg_dir_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz";
+        sha1 = "f6d5d1109e19d63edf428e0bd57e12777615334b";
+      };
+    }
+    {
+      name = "pkg_dir___pkg_dir_3.0.0.tgz";
+      path = fetchurl {
+        name = "pkg_dir___pkg_dir_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz";
+        sha1 = "2749020f239ed990881b1f71210d51eb6523bea3";
+      };
+    }
+    {
+      name = "pkg_dir___pkg_dir_4.2.0.tgz";
+      path = fetchurl {
+        name = "pkg_dir___pkg_dir_4.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz";
+        sha1 = "f099133df7ede422e81d1d8448270eeb3e4261f3";
+      };
+    }
+    {
+      name = "pn___pn_1.1.0.tgz";
+      path = fetchurl {
+        name = "pn___pn_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz";
+        sha1 = "e2f4cef0e219f463c179ab37463e4e1ecdccbafb";
+      };
+    }
+    {
+      name = "pngjs___pngjs_3.3.3.tgz";
+      path = fetchurl {
+        name = "pngjs___pngjs_3.3.3.tgz";
+        url  = "https://registry.yarnpkg.com/pngjs/-/pngjs-3.3.3.tgz";
+        sha1 = "85173703bde3edac8998757b96e5821d0966a21b";
+      };
+    }
+    {
+      name = "pofile___pofile_1.0.11.tgz";
+      path = fetchurl {
+        name = "pofile___pofile_1.0.11.tgz";
+        url  = "https://registry.yarnpkg.com/pofile/-/pofile-1.0.11.tgz";
+        sha1 = "35aff58c17491d127a07336d5522ebc9df57c954";
+      };
+    }
+    {
+      name = "popper.js___popper.js_1.16.1.tgz";
+      path = fetchurl {
+        name = "popper.js___popper.js_1.16.1.tgz";
+        url  = "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz";
+        sha1 = "2a223cb3dc7b6213d740e40372be40de43e65b1b";
+      };
+    }
+    {
+      name = "portal_vue___portal_vue_2.1.6.tgz";
+      path = fetchurl {
+        name = "portal_vue___portal_vue_2.1.6.tgz";
+        url  = "https://registry.yarnpkg.com/portal-vue/-/portal-vue-2.1.6.tgz";
+        sha1 = "a7d4790b14a79af7fd159a60ec88c30cddc6c639";
+      };
+    }
+    {
+      name = "portfinder___portfinder_1.0.25.tgz";
+      path = fetchurl {
+        name = "portfinder___portfinder_1.0.25.tgz";
+        url  = "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz";
+        sha1 = "254fd337ffba869f4b9d37edc298059cb4d35eca";
+      };
+    }
+    {
+      name = "posix_character_classes___posix_character_classes_0.1.1.tgz";
+      path = fetchurl {
+        name = "posix_character_classes___posix_character_classes_0.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz";
+        sha1 = "01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab";
+      };
+    }
+    {
+      name = "postcss_html___postcss_html_0.36.0.tgz";
+      path = fetchurl {
+        name = "postcss_html___postcss_html_0.36.0.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-html/-/postcss-html-0.36.0.tgz";
+        sha1 = "b40913f94eaacc2453fd30a1327ad6ee1f88b204";
+      };
+    }
+    {
+      name = "postcss_jsx___postcss_jsx_0.36.2.tgz";
+      path = fetchurl {
+        name = "postcss_jsx___postcss_jsx_0.36.2.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-jsx/-/postcss-jsx-0.36.2.tgz";
+        sha1 = "34bcd6752426a60b8df73f069e7595383060a794";
+      };
+    }
+    {
+      name = "postcss_less___postcss_less_3.1.4.tgz";
+      path = fetchurl {
+        name = "postcss_less___postcss_less_3.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-less/-/postcss-less-3.1.4.tgz";
+        sha1 = "369f58642b5928ef898ffbc1a6e93c958304c5ad";
+      };
+    }
+    {
+      name = "postcss_markdown___postcss_markdown_0.36.0.tgz";
+      path = fetchurl {
+        name = "postcss_markdown___postcss_markdown_0.36.0.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-markdown/-/postcss-markdown-0.36.0.tgz";
+        sha1 = "7f22849ae0e3db18820b7b0d5e7833f13a447560";
+      };
+    }
+    {
+      name = "postcss_media_query_parser___postcss_media_query_parser_0.2.3.tgz";
+      path = fetchurl {
+        name = "postcss_media_query_parser___postcss_media_query_parser_0.2.3.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz";
+        sha1 = "27b39c6f4d94f81b1a73b8f76351c609e5cef244";
+      };
+    }
+    {
+      name = "postcss_modules_extract_imports___postcss_modules_extract_imports_2.0.0.tgz";
+      path = fetchurl {
+        name = "postcss_modules_extract_imports___postcss_modules_extract_imports_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz";
+        sha1 = "818719a1ae1da325f9832446b01136eeb493cd7e";
+      };
+    }
+    {
+      name = "postcss_modules_local_by_default___postcss_modules_local_by_default_2.0.6.tgz";
+      path = fetchurl {
+        name = "postcss_modules_local_by_default___postcss_modules_local_by_default_2.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz";
+        sha1 = "dd9953f6dd476b5fd1ef2d8830c8929760b56e63";
+      };
+    }
+    {
+      name = "postcss_modules_scope___postcss_modules_scope_2.2.0.tgz";
+      path = fetchurl {
+        name = "postcss_modules_scope___postcss_modules_scope_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz";
+        sha1 = "385cae013cc7743f5a7d7602d1073a89eaae62ee";
+      };
+    }
+    {
+      name = "postcss_modules_values___postcss_modules_values_2.0.0.tgz";
+      path = fetchurl {
+        name = "postcss_modules_values___postcss_modules_values_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz";
+        sha1 = "479b46dc0c5ca3dc7fa5270851836b9ec7152f64";
+      };
+    }
+    {
+      name = "postcss_reporter___postcss_reporter_6.0.1.tgz";
+      path = fetchurl {
+        name = "postcss_reporter___postcss_reporter_6.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-6.0.1.tgz";
+        sha1 = "7c055120060a97c8837b4e48215661aafb74245f";
+      };
+    }
+    {
+      name = "postcss_resolve_nested_selector___postcss_resolve_nested_selector_0.1.1.tgz";
+      path = fetchurl {
+        name = "postcss_resolve_nested_selector___postcss_resolve_nested_selector_0.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz";
+        sha1 = "29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e";
+      };
+    }
+    {
+      name = "postcss_safe_parser___postcss_safe_parser_4.0.1.tgz";
+      path = fetchurl {
+        name = "postcss_safe_parser___postcss_safe_parser_4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz";
+        sha1 = "8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea";
+      };
+    }
+    {
+      name = "postcss_sass___postcss_sass_0.3.5.tgz";
+      path = fetchurl {
+        name = "postcss_sass___postcss_sass_0.3.5.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.3.5.tgz";
+        sha1 = "6d3e39f101a53d2efa091f953493116d32beb68c";
+      };
+    }
+    {
+      name = "postcss_scss___postcss_scss_2.0.0.tgz";
+      path = fetchurl {
+        name = "postcss_scss___postcss_scss_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-2.0.0.tgz";
+        sha1 = "248b0a28af77ea7b32b1011aba0f738bda27dea1";
+      };
+    }
+    {
+      name = "postcss_selector_parser___postcss_selector_parser_3.1.1.tgz";
+      path = fetchurl {
+        name = "postcss_selector_parser___postcss_selector_parser_3.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz";
+        sha1 = "4f875f4afb0c96573d5cf4d74011aee250a7e865";
+      };
+    }
+    {
+      name = "postcss_selector_parser___postcss_selector_parser_5.0.0.tgz";
+      path = fetchurl {
+        name = "postcss_selector_parser___postcss_selector_parser_5.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz";
+        sha1 = "249044356697b33b64f1a8f7c80922dddee7195c";
+      };
+    }
+    {
+      name = "postcss_selector_parser___postcss_selector_parser_6.0.2.tgz";
+      path = fetchurl {
+        name = "postcss_selector_parser___postcss_selector_parser_6.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz";
+        sha1 = "934cf799d016c83411859e09dcecade01286ec5c";
+      };
+    }
+    {
+      name = "postcss_syntax___postcss_syntax_0.36.2.tgz";
+      path = fetchurl {
+        name = "postcss_syntax___postcss_syntax_0.36.2.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz";
+        sha1 = "f08578c7d95834574e5593a82dfbfa8afae3b51c";
+      };
+    }
+    {
+      name = "postcss_value_parser___postcss_value_parser_3.3.1.tgz";
+      path = fetchurl {
+        name = "postcss_value_parser___postcss_value_parser_3.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz";
+        sha1 = "9ff822547e2893213cf1c30efa51ac5fd1ba8281";
+      };
+    }
+    {
+      name = "postcss_value_parser___postcss_value_parser_4.0.0.tgz";
+      path = fetchurl {
+        name = "postcss_value_parser___postcss_value_parser_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.0.tgz";
+        sha1 = "99a983d365f7b2ad8d0f9b8c3094926eab4b936d";
+      };
+    }
+    {
+      name = "postcss___postcss_7.0.27.tgz";
+      path = fetchurl {
+        name = "postcss___postcss_7.0.27.tgz";
+        url  = "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz";
+        sha1 = "cc67cdc6b0daa375105b7c424a85567345fc54d9";
+      };
+    }
+    {
+      name = "postcss___postcss_7.0.30.tgz";
+      path = fetchurl {
+        name = "postcss___postcss_7.0.30.tgz";
+        url  = "https://registry.yarnpkg.com/postcss/-/postcss-7.0.30.tgz";
+        sha1 = "cc9378beffe46a02cbc4506a0477d05fcea9a8e2";
+      };
+    }
+    {
+      name = "prelude_ls___prelude_ls_1.1.2.tgz";
+      path = fetchurl {
+        name = "prelude_ls___prelude_ls_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz";
+        sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
+      };
+    }
+    {
+      name = "prepend_http___prepend_http_1.0.4.tgz";
+      path = fetchurl {
+        name = "prepend_http___prepend_http_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz";
+        sha1 = "d4f4562b0ce3696e41ac52d0e002e57a635dc6dc";
+      };
+    }
+    {
+      name = "prettier___prettier_1.16.3.tgz";
+      path = fetchurl {
+        name = "prettier___prettier_1.16.3.tgz";
+        url  = "https://registry.yarnpkg.com/prettier/-/prettier-1.16.3.tgz";
+        sha1 = "8c62168453badef702f34b45b6ee899574a6a65d";
+      };
+    }
+    {
+      name = "prettier___prettier_1.18.2.tgz";
+      path = fetchurl {
+        name = "prettier___prettier_1.18.2.tgz";
+        url  = "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz";
+        sha1 = "6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea";
+      };
+    }
+    {
+      name = "pretty_format___pretty_format_24.8.0.tgz";
+      path = fetchurl {
+        name = "pretty_format___pretty_format_24.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.8.0.tgz";
+        sha1 = "8dae7044f58db7cb8be245383b565a963e3c27f2";
+      };
+    }
+    {
+      name = "pretty___pretty_2.0.0.tgz";
+      path = fetchurl {
+        name = "pretty___pretty_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/pretty/-/pretty-2.0.0.tgz";
+        sha1 = "adbc7960b7bbfe289a557dc5f737619a220d06a5";
+      };
+    }
+    {
+      name = "prismjs___prismjs_1.6.0.tgz";
+      path = fetchurl {
+        name = "prismjs___prismjs_1.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/prismjs/-/prismjs-1.6.0.tgz";
+        sha1 = "118d95fb7a66dba2272e343b345f5236659db365";
+      };
+    }
+    {
+      name = "private___private_0.1.8.tgz";
+      path = fetchurl {
+        name = "private___private_0.1.8.tgz";
+        url  = "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz";
+        sha1 = "2381edb3689f7a53d653190060fcf822d2f368ff";
+      };
+    }
+    {
+      name = "process_nextick_args___process_nextick_args_1.0.7.tgz";
+      path = fetchurl {
+        name = "process_nextick_args___process_nextick_args_1.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz";
+        sha1 = "150e20b756590ad3f91093f25a4f2ad8bff30ba3";
+      };
+    }
+    {
+      name = "process_nextick_args___process_nextick_args_2.0.1.tgz";
+      path = fetchurl {
+        name = "process_nextick_args___process_nextick_args_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
+        sha1 = "7820d9b16120cc55ca9ae7792680ae7dba6d7fe2";
+      };
+    }
+    {
+      name = "process___process_0.11.10.tgz";
+      path = fetchurl {
+        name = "process___process_0.11.10.tgz";
+        url  = "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz";
+        sha1 = "7332300e840161bda3e69a1d1d91a7d4bc16f182";
+      };
+    }
+    {
+      name = "progress___progress_2.0.3.tgz";
+      path = fetchurl {
+        name = "progress___progress_2.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz";
+        sha1 = "7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8";
+      };
+    }
+    {
+      name = "promise_inflight___promise_inflight_1.0.1.tgz";
+      path = fetchurl {
+        name = "promise_inflight___promise_inflight_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz";
+        sha1 = "98472870bf228132fcbdd868129bad12c3c029e3";
+      };
+    }
+    {
+      name = "prompts___prompts_2.1.0.tgz";
+      path = fetchurl {
+        name = "prompts___prompts_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/prompts/-/prompts-2.1.0.tgz";
+        sha1 = "bf90bc71f6065d255ea2bdc0fe6520485c1b45db";
+      };
+    }
+    {
+      name = "prosemirror_commands___prosemirror_commands_1.0.7.tgz";
+      path = fetchurl {
+        name = "prosemirror_commands___prosemirror_commands_1.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.0.7.tgz";
+        sha1 = "e5a2ba821e29ea7065c88277fe2c3d7f6b0b9d37";
+      };
+    }
+    {
+      name = "prosemirror_dropcursor___prosemirror_dropcursor_1.1.1.tgz";
+      path = fetchurl {
+        name = "prosemirror_dropcursor___prosemirror_dropcursor_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.1.1.tgz";
+        sha1 = "c60ed1ed6c58804a06a75db06a0d993b087b7622";
+      };
+    }
+    {
+      name = "prosemirror_gapcursor___prosemirror_gapcursor_1.0.3.tgz";
+      path = fetchurl {
+        name = "prosemirror_gapcursor___prosemirror_gapcursor_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/prosemirror-gapcursor/-/prosemirror-gapcursor-1.0.3.tgz";
+        sha1 = "acc6537fc5a35e9b38966f91a199a382dfc715c4";
+      };
+    }
+    {
+      name = "prosemirror_history___prosemirror_history_1.0.3.tgz";
+      path = fetchurl {
+        name = "prosemirror_history___prosemirror_history_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/prosemirror-history/-/prosemirror-history-1.0.3.tgz";
+        sha1 = "5fb8591adfc272afaaf0b41bec64ee7d9522a118";
+      };
+    }
+    {
+      name = "prosemirror_inputrules___prosemirror_inputrules_1.0.1.tgz";
+      path = fetchurl {
+        name = "prosemirror_inputrules___prosemirror_inputrules_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-1.0.1.tgz";
+        sha1 = "f63305fd966379f218e82ca76a2a9b328b66dc7b";
+      };
+    }
+    {
+      name = "prosemirror_keymap___prosemirror_keymap_1.0.1.tgz";
+      path = fetchurl {
+        name = "prosemirror_keymap___prosemirror_keymap_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.0.1.tgz";
+        sha1 = "03ef32b828e3a859dfb570eb84928bf2e5330bc2";
+      };
+    }
+    {
+      name = "prosemirror_markdown___prosemirror_markdown_1.3.0.tgz";
+      path = fetchurl {
+        name = "prosemirror_markdown___prosemirror_markdown_1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/prosemirror-markdown/-/prosemirror-markdown-1.3.0.tgz";
+        sha1 = "a100d14c27da7d8fb70818230d786898eeadb7fa";
+      };
+    }
+    {
+      name = "prosemirror_model___prosemirror_model_1.6.4.tgz";
+      path = fetchurl {
+        name = "prosemirror_model___prosemirror_model_1.6.4.tgz";
+        url  = "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.6.4.tgz";
+        sha1 = "2ac37a629448a7dbfd1635450e2fdd63c3450d7d";
+      };
+    }
+    {
+      name = "prosemirror_schema_list___prosemirror_schema_list_1.0.1.tgz";
+      path = fetchurl {
+        name = "prosemirror_schema_list___prosemirror_schema_list_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-1.0.1.tgz";
+        sha1 = "f216e0cf4809b6074aa27912449ac89897f1ae94";
+      };
+    }
+    {
+      name = "prosemirror_state___prosemirror_state_1.2.2.tgz";
+      path = fetchurl {
+        name = "prosemirror_state___prosemirror_state_1.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.2.2.tgz";
+        sha1 = "8df26d95fd6fd327c0f9984a760e84d863204154";
+      };
+    }
+    {
+      name = "prosemirror_tables___prosemirror_tables_0.7.10.tgz";
+      path = fetchurl {
+        name = "prosemirror_tables___prosemirror_tables_0.7.10.tgz";
+        url  = "https://registry.yarnpkg.com/prosemirror-tables/-/prosemirror-tables-0.7.10.tgz";
+        sha1 = "4b0f623422b4b8f84cdc9c559f8a87579846b3ba";
+      };
+    }
+    {
+      name = "prosemirror_transform___prosemirror_transform_1.1.3.tgz";
+      path = fetchurl {
+        name = "prosemirror_transform___prosemirror_transform_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.1.3.tgz";
+        sha1 = "28cfdf1f9ee514edc40466be7b7db39eed545fdf";
+      };
+    }
+    {
+      name = "prosemirror_utils___prosemirror_utils_0.7.5.tgz";
+      path = fetchurl {
+        name = "prosemirror_utils___prosemirror_utils_0.7.5.tgz";
+        url  = "https://registry.yarnpkg.com/prosemirror-utils/-/prosemirror-utils-0.7.5.tgz";
+        sha1 = "11b477647b672ec8f10679ab298a5823dad6457a";
+      };
+    }
+    {
+      name = "prosemirror_view___prosemirror_view_1.6.8.tgz";
+      path = fetchurl {
+        name = "prosemirror_view___prosemirror_view_1.6.8.tgz";
+        url  = "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.6.8.tgz";
+        sha1 = "33fc1a6e2731633e5d6dc1af1967378f15810b74";
+      };
+    }
+    {
+      name = "proto_list___proto_list_1.2.4.tgz";
+      path = fetchurl {
+        name = "proto_list___proto_list_1.2.4.tgz";
+        url  = "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz";
+        sha1 = "212d5bfe1318306a420f6402b8e26ff39647a849";
+      };
+    }
+    {
+      name = "proxy_addr___proxy_addr_2.0.5.tgz";
+      path = fetchurl {
+        name = "proxy_addr___proxy_addr_2.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz";
+        sha1 = "34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34";
+      };
+    }
+    {
+      name = "prr___prr_1.0.1.tgz";
+      path = fetchurl {
+        name = "prr___prr_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz";
+        sha1 = "d3fc114ba06995a45ec6893f484ceb1d78f5f476";
+      };
+    }
+    {
+      name = "pseudomap___pseudomap_1.0.2.tgz";
+      path = fetchurl {
+        name = "pseudomap___pseudomap_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz";
+        sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3";
+      };
+    }
+    {
+      name = "psl___psl_1.1.29.tgz";
+      path = fetchurl {
+        name = "psl___psl_1.1.29.tgz";
+        url  = "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz";
+        sha1 = "60f580d360170bb722a797cc704411e6da850c67";
+      };
+    }
+    {
+      name = "pstree.remy___pstree.remy_1.1.6.tgz";
+      path = fetchurl {
+        name = "pstree.remy___pstree.remy_1.1.6.tgz";
+        url  = "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.6.tgz";
+        sha1 = "73a55aad9e2d95814927131fbf4dc1b62d259f47";
+      };
+    }
+    {
+      name = "public_encrypt___public_encrypt_4.0.0.tgz";
+      path = fetchurl {
+        name = "public_encrypt___public_encrypt_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz";
+        sha1 = "39f699f3a46560dd5ebacbca693caf7c65c18cc6";
+      };
+    }
+    {
+      name = "pump___pump_2.0.1.tgz";
+      path = fetchurl {
+        name = "pump___pump_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz";
+        sha1 = "12399add6e4cf7526d973cbc8b5ce2e2908b3909";
+      };
+    }
+    {
+      name = "pump___pump_3.0.0.tgz";
+      path = fetchurl {
+        name = "pump___pump_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz";
+        sha1 = "b4a2116815bde2f4e1ea602354e8c75565107a64";
+      };
+    }
+    {
+      name = "pumpify___pumpify_1.5.1.tgz";
+      path = fetchurl {
+        name = "pumpify___pumpify_1.5.1.tgz";
+        url  = "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz";
+        sha1 = "36513be246ab27570b1a374a5ce278bfd74370ce";
+      };
+    }
+    {
+      name = "punycode___punycode_1.3.2.tgz";
+      path = fetchurl {
+        name = "punycode___punycode_1.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz";
+        sha1 = "9653a036fb7c1ee42342f2325cceefea3926c48d";
+      };
+    }
+    {
+      name = "punycode___punycode_1.4.1.tgz";
+      path = fetchurl {
+        name = "punycode___punycode_1.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz";
+        sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
+      };
+    }
+    {
+      name = "punycode___punycode_2.1.1.tgz";
+      path = fetchurl {
+        name = "punycode___punycode_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz";
+        sha1 = "b58b010ac40c22c5657616c8d2c2c02c7bf479ec";
+      };
+    }
+    {
+      name = "qjobs___qjobs_1.2.0.tgz";
+      path = fetchurl {
+        name = "qjobs___qjobs_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz";
+        sha1 = "c45e9c61800bd087ef88d7e256423bdd49e5d071";
+      };
+    }
+    {
+      name = "qs___qs_6.7.0.tgz";
+      path = fetchurl {
+        name = "qs___qs_6.7.0.tgz";
+        url  = "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz";
+        sha1 = "41dc1a015e3d581f1621776be31afb2876a9b1bc";
+      };
+    }
+    {
+      name = "qs___qs_6.5.2.tgz";
+      path = fetchurl {
+        name = "qs___qs_6.5.2.tgz";
+        url  = "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz";
+        sha1 = "cb3ae806e8740444584ef154ce8ee98d403f3e36";
+      };
+    }
+    {
+      name = "querystring_es3___querystring_es3_0.2.1.tgz";
+      path = fetchurl {
+        name = "querystring_es3___querystring_es3_0.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz";
+        sha1 = "9ec61f79049875707d69414596fd907a4d711e73";
+      };
+    }
+    {
+      name = "querystring___querystring_0.2.0.tgz";
+      path = fetchurl {
+        name = "querystring___querystring_0.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz";
+        sha1 = "b209849203bb25df820da756e747005878521620";
+      };
+    }
+    {
+      name = "querystringify___querystringify_2.1.0.tgz";
+      path = fetchurl {
+        name = "querystringify___querystringify_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.0.tgz";
+        sha1 = "7ded8dfbf7879dcc60d0a644ac6754b283ad17ef";
+      };
+    }
+    {
+      name = "quick_lru___quick_lru_1.1.0.tgz";
+      path = fetchurl {
+        name = "quick_lru___quick_lru_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz";
+        sha1 = "4360b17c61136ad38078397ff11416e186dcfbb8";
+      };
+    }
+    {
+      name = "randombytes___randombytes_2.0.6.tgz";
+      path = fetchurl {
+        name = "randombytes___randombytes_2.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz";
+        sha1 = "d302c522948588848a8d300c932b44c24231da80";
+      };
+    }
+    {
+      name = "randomfill___randomfill_1.0.4.tgz";
+      path = fetchurl {
+        name = "randomfill___randomfill_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz";
+        sha1 = "c92196fc86ab42be983f1bf31778224931d61458";
+      };
+    }
+    {
+      name = "range_parser___range_parser_1.2.1.tgz";
+      path = fetchurl {
+        name = "range_parser___range_parser_1.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz";
+        sha1 = "3cf37023d199e1c24d1a55b84800c2f3e6468031";
+      };
+    }
+    {
+      name = "raphael___raphael_2.2.7.tgz";
+      path = fetchurl {
+        name = "raphael___raphael_2.2.7.tgz";
+        url  = "https://registry.yarnpkg.com/raphael/-/raphael-2.2.7.tgz";
+        sha1 = "231b19141f8d086986d8faceb66f8b562ee2c810";
+      };
+    }
+    {
+      name = "raw_body___raw_body_2.4.0.tgz";
+      path = fetchurl {
+        name = "raw_body___raw_body_2.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz";
+        sha1 = "a1ce6fb9c9bc356ca52e89256ab59059e13d0332";
+      };
+    }
+    {
+      name = "raw_loader___raw_loader_4.0.0.tgz";
+      path = fetchurl {
+        name = "raw_loader___raw_loader_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.0.tgz";
+        sha1 = "d639c40fb9d72b5c7f8abc1fb2ddb25b29d3d540";
+      };
+    }
+    {
+      name = "rc___rc_1.2.8.tgz";
+      path = fetchurl {
+        name = "rc___rc_1.2.8.tgz";
+        url  = "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz";
+        sha1 = "cd924bf5200a075b83c188cd6b9e211b7fc0d3ed";
+      };
+    }
+    {
+      name = "react_is___react_is_16.8.6.tgz";
+      path = fetchurl {
+        name = "react_is___react_is_16.8.6.tgz";
+        url  = "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz";
+        sha1 = "5bbc1e2d29141c9fbdfed456343fe2bc430a6a16";
+      };
+    }
+    {
+      name = "read_pkg_up___read_pkg_up_1.0.1.tgz";
+      path = fetchurl {
+        name = "read_pkg_up___read_pkg_up_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz";
+        sha1 = "9d63c13276c065918d57f002a57f40a1b643fb02";
+      };
+    }
+    {
+      name = "read_pkg_up___read_pkg_up_2.0.0.tgz";
+      path = fetchurl {
+        name = "read_pkg_up___read_pkg_up_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz";
+        sha1 = "6b72a8048984e0c41e79510fd5e9fa99b3b549be";
+      };
+    }
+    {
+      name = "read_pkg_up___read_pkg_up_3.0.0.tgz";
+      path = fetchurl {
+        name = "read_pkg_up___read_pkg_up_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz";
+        sha1 = "3ed496685dba0f8fe118d0691dc51f4a1ff96f07";
+      };
+    }
+    {
+      name = "read_pkg_up___read_pkg_up_4.0.0.tgz";
+      path = fetchurl {
+        name = "read_pkg_up___read_pkg_up_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz";
+        sha1 = "1b221c6088ba7799601c808f91161c66e58f8978";
+      };
+    }
+    {
+      name = "read_pkg___read_pkg_1.1.0.tgz";
+      path = fetchurl {
+        name = "read_pkg___read_pkg_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz";
+        sha1 = "f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28";
+      };
+    }
+    {
+      name = "read_pkg___read_pkg_2.0.0.tgz";
+      path = fetchurl {
+        name = "read_pkg___read_pkg_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz";
+        sha1 = "8ef1c0623c6a6db0dc6713c4bfac46332b2368f8";
+      };
+    }
+    {
+      name = "read_pkg___read_pkg_3.0.0.tgz";
+      path = fetchurl {
+        name = "read_pkg___read_pkg_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz";
+        sha1 = "9cbc686978fee65d16c00e2b19c237fcf6e38389";
+      };
+    }
+    {
+      name = "readable_stream___readable_stream_2.3.6.tgz";
+      path = fetchurl {
+        name = "readable_stream___readable_stream_2.3.6.tgz";
+        url  = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz";
+        sha1 = "b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf";
+      };
+    }
+    {
+      name = "readable_stream___readable_stream_3.0.6.tgz";
+      path = fetchurl {
+        name = "readable_stream___readable_stream_3.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.0.6.tgz";
+        sha1 = "351302e4c68b5abd6a2ed55376a7f9a25be3057a";
+      };
+    }
+    {
+      name = "readable_stream___readable_stream_2.0.6.tgz";
+      path = fetchurl {
+        name = "readable_stream___readable_stream_2.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz";
+        sha1 = "8f90341e68a53ccc928788dacfcd11b36eb9b78e";
+      };
+    }
+    {
+      name = "readdir_enhanced___readdir_enhanced_2.2.4.tgz";
+      path = fetchurl {
+        name = "readdir_enhanced___readdir_enhanced_2.2.4.tgz";
+        url  = "https://registry.yarnpkg.com/readdir-enhanced/-/readdir-enhanced-2.2.4.tgz";
+        sha1 = "773fb8a8de5f645fb13d9403746d490d4facb3e6";
+      };
+    }
+    {
+      name = "readdirp___readdirp_2.2.1.tgz";
+      path = fetchurl {
+        name = "readdirp___readdirp_2.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz";
+        sha1 = "0e87622a3325aa33e892285caf8b4e846529a525";
+      };
+    }
+    {
+      name = "readdirp___readdirp_3.1.1.tgz";
+      path = fetchurl {
+        name = "readdirp___readdirp_3.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/readdirp/-/readdirp-3.1.1.tgz";
+        sha1 = "b158123ac343c8b0f31d65680269cc0fc1025db1";
+      };
+    }
+    {
+      name = "realpath_native___realpath_native_1.1.0.tgz";
+      path = fetchurl {
+        name = "realpath_native___realpath_native_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz";
+        sha1 = "2003294fea23fb0672f2476ebe22fcf498a2d65c";
+      };
+    }
+    {
+      name = "redent___redent_1.0.0.tgz";
+      path = fetchurl {
+        name = "redent___redent_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz";
+        sha1 = "cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde";
+      };
+    }
+    {
+      name = "redent___redent_2.0.0.tgz";
+      path = fetchurl {
+        name = "redent___redent_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz";
+        sha1 = "c1b2007b42d57eb1389079b3c8333639d5e1ccaa";
+      };
+    }
+    {
+      name = "regenerate_unicode_properties___regenerate_unicode_properties_8.1.0.tgz";
+      path = fetchurl {
+        name = "regenerate_unicode_properties___regenerate_unicode_properties_8.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz";
+        sha1 = "ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e";
+      };
+    }
+    {
+      name = "regenerate___regenerate_1.4.0.tgz";
+      path = fetchurl {
+        name = "regenerate___regenerate_1.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz";
+        sha1 = "4a856ec4b56e4077c557589cae85e7a4c8869a11";
+      };
+    }
+    {
+      name = "regenerator_transform___regenerator_transform_0.14.1.tgz";
+      path = fetchurl {
+        name = "regenerator_transform___regenerator_transform_0.14.1.tgz";
+        url  = "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz";
+        sha1 = "3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb";
+      };
+    }
+    {
+      name = "regex_not___regex_not_1.0.2.tgz";
+      path = fetchurl {
+        name = "regex_not___regex_not_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz";
+        sha1 = "1f4ece27e00b0b65e0247a6810e6a85d83a5752c";
+      };
+    }
+    {
+      name = "regexpp___regexpp_2.0.1.tgz";
+      path = fetchurl {
+        name = "regexpp___regexpp_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz";
+        sha1 = "8d19d31cf632482b589049f8281f93dbcba4d07f";
+      };
+    }
+    {
+      name = "regexpu_core___regexpu_core_4.6.0.tgz";
+      path = fetchurl {
+        name = "regexpu_core___regexpu_core_4.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz";
+        sha1 = "2037c18b327cfce8a6fea2a4ec441f2432afb8b6";
+      };
+    }
+    {
+      name = "registry_auth_token___registry_auth_token_3.3.2.tgz";
+      path = fetchurl {
+        name = "registry_auth_token___registry_auth_token_3.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz";
+        sha1 = "851fd49038eecb586911115af845260eec983f20";
+      };
+    }
+    {
+      name = "registry_url___registry_url_3.1.0.tgz";
+      path = fetchurl {
+        name = "registry_url___registry_url_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz";
+        sha1 = "3d4ef870f73dde1d77f0cf9a381432444e174942";
+      };
+    }
+    {
+      name = "regjsgen___regjsgen_0.5.0.tgz";
+      path = fetchurl {
+        name = "regjsgen___regjsgen_0.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz";
+        sha1 = "a7634dc08f89209c2049adda3525711fb97265dd";
+      };
+    }
+    {
+      name = "regjsparser___regjsparser_0.6.0.tgz";
+      path = fetchurl {
+        name = "regjsparser___regjsparser_0.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz";
+        sha1 = "f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c";
+      };
+    }
+    {
+      name = "relateurl___relateurl_0.2.7.tgz";
+      path = fetchurl {
+        name = "relateurl___relateurl_0.2.7.tgz";
+        url  = "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz";
+        sha1 = "54dbf377e51440aca90a4cd274600d3ff2d888a9";
+      };
+    }
+    {
+      name = "remark_parse___remark_parse_6.0.3.tgz";
+      path = fetchurl {
+        name = "remark_parse___remark_parse_6.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/remark-parse/-/remark-parse-6.0.3.tgz";
+        sha1 = "c99131052809da482108413f87b0ee7f52180a3a";
+      };
+    }
+    {
+      name = "remark_stringify___remark_stringify_6.0.4.tgz";
+      path = fetchurl {
+        name = "remark_stringify___remark_stringify_6.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-6.0.4.tgz";
+        sha1 = "16ac229d4d1593249018663c7bddf28aafc4e088";
+      };
+    }
+    {
+      name = "remark___remark_10.0.1.tgz";
+      path = fetchurl {
+        name = "remark___remark_10.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/remark/-/remark-10.0.1.tgz";
+        sha1 = "3058076dc41781bf505d8978c291485fe47667df";
+      };
+    }
+    {
+      name = "remove_trailing_separator___remove_trailing_separator_1.1.0.tgz";
+      path = fetchurl {
+        name = "remove_trailing_separator___remove_trailing_separator_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz";
+        sha1 = "c24bce2a283adad5bc3f58e0d48249b92379d8ef";
+      };
+    }
+    {
+      name = "repeat_element___repeat_element_1.1.3.tgz";
+      path = fetchurl {
+        name = "repeat_element___repeat_element_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz";
+        sha1 = "782e0d825c0c5a3bb39731f84efee6b742e6b1ce";
+      };
+    }
+    {
+      name = "repeat_string___repeat_string_1.6.1.tgz";
+      path = fetchurl {
+        name = "repeat_string___repeat_string_1.6.1.tgz";
+        url  = "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz";
+        sha1 = "8dcae470e1c88abc2d600fff4a776286da75e637";
+      };
+    }
+    {
+      name = "repeating___repeating_2.0.1.tgz";
+      path = fetchurl {
+        name = "repeating___repeating_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz";
+        sha1 = "5214c53a926d3552707527fbab415dbc08d06dda";
+      };
+    }
+    {
+      name = "replace_ext___replace_ext_1.0.0.tgz";
+      path = fetchurl {
+        name = "replace_ext___replace_ext_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz";
+        sha1 = "de63128373fcbf7c3ccfa4de5a480c45a67958eb";
+      };
+    }
+    {
+      name = "request_promise_core___request_promise_core_1.1.1.tgz";
+      path = fetchurl {
+        name = "request_promise_core___request_promise_core_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz";
+        sha1 = "3eee00b2c5aa83239cfb04c5700da36f81cd08b6";
+      };
+    }
+    {
+      name = "request_promise_native___request_promise_native_1.0.5.tgz";
+      path = fetchurl {
+        name = "request_promise_native___request_promise_native_1.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz";
+        sha1 = "5281770f68e0c9719e5163fd3fab482215f4fda5";
+      };
+    }
+    {
+      name = "request___request_2.88.0.tgz";
+      path = fetchurl {
+        name = "request___request_2.88.0.tgz";
+        url  = "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz";
+        sha1 = "9c2fca4f7d35b592efe57c7f0a55e81052124fef";
+      };
+    }
+    {
+      name = "require_directory___require_directory_2.1.1.tgz";
+      path = fetchurl {
+        name = "require_directory___require_directory_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz";
+        sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42";
+      };
+    }
+    {
+      name = "require_main_filename___require_main_filename_1.0.1.tgz";
+      path = fetchurl {
+        name = "require_main_filename___require_main_filename_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz";
+        sha1 = "97f717b69d48784f5f526a6c5aa8ffdda055a4d1";
+      };
+    }
+    {
+      name = "require_main_filename___require_main_filename_2.0.0.tgz";
+      path = fetchurl {
+        name = "require_main_filename___require_main_filename_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz";
+        sha1 = "d0b329ecc7cc0f61649f62215be69af54aa8989b";
+      };
+    }
+    {
+      name = "require_package_name___require_package_name_2.0.1.tgz";
+      path = fetchurl {
+        name = "require_package_name___require_package_name_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz";
+        sha1 = "c11e97276b65b8e2923f75dabf5fb2ef0c3841b9";
+      };
+    }
+    {
+      name = "requires_port___requires_port_1.0.0.tgz";
+      path = fetchurl {
+        name = "requires_port___requires_port_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz";
+        sha1 = "925d2601d39ac485e091cf0da5c6e694dc3dcaff";
+      };
+    }
+    {
+      name = "requizzle___requizzle_0.2.1.tgz";
+      path = fetchurl {
+        name = "requizzle___requizzle_0.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.1.tgz";
+        sha1 = "6943c3530c4d9a7e46f1cddd51c158fc670cdbde";
+      };
+    }
+    {
+      name = "resize_observer_polyfill___resize_observer_polyfill_1.5.1.tgz";
+      path = fetchurl {
+        name = "resize_observer_polyfill___resize_observer_polyfill_1.5.1.tgz";
+        url  = "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz";
+        sha1 = "0e9020dd3d21024458d4ebd27e23e40269810464";
+      };
+    }
+    {
+      name = "resolve_cwd___resolve_cwd_2.0.0.tgz";
+      path = fetchurl {
+        name = "resolve_cwd___resolve_cwd_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz";
+        sha1 = "00a9f7387556e27038eae232caa372a6a59b665a";
+      };
+    }
+    {
+      name = "resolve_dir___resolve_dir_1.0.1.tgz";
+      path = fetchurl {
+        name = "resolve_dir___resolve_dir_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz";
+        sha1 = "79a40644c362be82f26effe739c9bb5382046f43";
+      };
+    }
+    {
+      name = "resolve_from___resolve_from_3.0.0.tgz";
+      path = fetchurl {
+        name = "resolve_from___resolve_from_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz";
+        sha1 = "b22c7af7d9d6881bc8b6e653335eebcb0a188748";
+      };
+    }
+    {
+      name = "resolve_from___resolve_from_4.0.0.tgz";
+      path = fetchurl {
+        name = "resolve_from___resolve_from_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz";
+        sha1 = "4abcd852ad32dd7baabfe9b40e00a36db5f392e6";
+      };
+    }
+    {
+      name = "resolve_from___resolve_from_5.0.0.tgz";
+      path = fetchurl {
+        name = "resolve_from___resolve_from_5.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz";
+        sha1 = "c35225843df8f776df21c57557bc087e9dfdfc69";
+      };
+    }
+    {
+      name = "resolve_url___resolve_url_0.2.1.tgz";
+      path = fetchurl {
+        name = "resolve_url___resolve_url_0.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz";
+        sha1 = "2c637fe77c893afd2a663fe21aa9080068e2052a";
+      };
+    }
+    {
+      name = "resolve___resolve_1.1.7.tgz";
+      path = fetchurl {
+        name = "resolve___resolve_1.1.7.tgz";
+        url  = "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz";
+        sha1 = "203114d82ad2c5ed9e8e0411b3932875e889e97b";
+      };
+    }
+    {
+      name = "resolve___resolve_1.15.0.tgz";
+      path = fetchurl {
+        name = "resolve___resolve_1.15.0.tgz";
+        url  = "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz";
+        sha1 = "1b7ca96073ebb52e741ffd799f6b39ea462c67f5";
+      };
+    }
+    {
+      name = "restore_cursor___restore_cursor_3.1.0.tgz";
+      path = fetchurl {
+        name = "restore_cursor___restore_cursor_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz";
+        sha1 = "39f67c54b3a7a58cea5236d95cf0034239631f7e";
+      };
+    }
+    {
+      name = "ret___ret_0.1.15.tgz";
+      path = fetchurl {
+        name = "ret___ret_0.1.15.tgz";
+        url  = "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz";
+        sha1 = "b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc";
+      };
+    }
+    {
+      name = "retry___retry_0.12.0.tgz";
+      path = fetchurl {
+        name = "retry___retry_0.12.0.tgz";
+        url  = "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz";
+        sha1 = "1b42a6266a21f07421d1b0b54b7dc167b01c013b";
+      };
+    }
+    {
+      name = "rfdc___rfdc_1.1.4.tgz";
+      path = fetchurl {
+        name = "rfdc___rfdc_1.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.4.tgz";
+        sha1 = "ba72cc1367a0ccd9cf81a870b3b58bd3ad07f8c2";
+      };
+    }
+    {
+      name = "rimraf___rimraf_2.7.1.tgz";
+      path = fetchurl {
+        name = "rimraf___rimraf_2.7.1.tgz";
+        url  = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz";
+        sha1 = "35797f13a7fdadc566142c29d4f07ccad483e3ec";
+      };
+    }
+    {
+      name = "rimraf___rimraf_2.6.3.tgz";
+      path = fetchurl {
+        name = "rimraf___rimraf_2.6.3.tgz";
+        url  = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz";
+        sha1 = "b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab";
+      };
+    }
+    {
+      name = "ripemd160___ripemd160_2.0.1.tgz";
+      path = fetchurl {
+        name = "ripemd160___ripemd160_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz";
+        sha1 = "0f4584295c53a3628af7e6d79aca21ce57d1c6e7";
+      };
+    }
+    {
+      name = "rope_sequence___rope_sequence_1.2.2.tgz";
+      path = fetchurl {
+        name = "rope_sequence___rope_sequence_1.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/rope-sequence/-/rope-sequence-1.2.2.tgz";
+        sha1 = "49c4e5c2f54a48e990b050926771e2871bcb31ce";
+      };
+    }
+    {
+      name = "rsvp___rsvp_4.8.4.tgz";
+      path = fetchurl {
+        name = "rsvp___rsvp_4.8.4.tgz";
+        url  = "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.4.tgz";
+        sha1 = "b50e6b34583f3dd89329a2f23a8a2be072845911";
+      };
+    }
+    {
+      name = "run_async___run_async_2.3.0.tgz";
+      path = fetchurl {
+        name = "run_async___run_async_2.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz";
+        sha1 = "0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0";
+      };
+    }
+    {
+      name = "run_queue___run_queue_1.0.3.tgz";
+      path = fetchurl {
+        name = "run_queue___run_queue_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz";
+        sha1 = "e848396f057d223f24386924618e25694161ec47";
+      };
+    }
+    {
+      name = "rw___rw_1.3.3.tgz";
+      path = fetchurl {
+        name = "rw___rw_1.3.3.tgz";
+        url  = "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz";
+        sha1 = "3f862dfa91ab766b14885ef4d01124bfda074fb4";
+      };
+    }
+    {
+      name = "rxjs___rxjs_6.5.4.tgz";
+      path = fetchurl {
+        name = "rxjs___rxjs_6.5.4.tgz";
+        url  = "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz";
+        sha1 = "e0777fe0d184cec7872df147f303572d414e211c";
+      };
+    }
+    {
+      name = "safe_buffer___safe_buffer_5.1.2.tgz";
+      path = fetchurl {
+        name = "safe_buffer___safe_buffer_5.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz";
+        sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d";
+      };
+    }
+    {
+      name = "safe_regex___safe_regex_1.1.0.tgz";
+      path = fetchurl {
+        name = "safe_regex___safe_regex_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz";
+        sha1 = "40a3669f3b077d1e943d44629e157dd48023bf2e";
+      };
+    }
+    {
+      name = "safer_buffer___safer_buffer_2.1.2.tgz";
+      path = fetchurl {
+        name = "safer_buffer___safer_buffer_2.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz";
+        sha1 = "44fa161b0187b9549dd84bb91802f9bd8385cd6a";
+      };
+    }
+    {
+      name = "sane___sane_4.1.0.tgz";
+      path = fetchurl {
+        name = "sane___sane_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz";
+        sha1 = "ed881fd922733a6c461bc189dc2b6c006f3ffded";
+      };
+    }
+    {
+      name = "sanitize_html___sanitize_html_1.22.0.tgz";
+      path = fetchurl {
+        name = "sanitize_html___sanitize_html_1.22.0.tgz";
+        url  = "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.22.0.tgz";
+        sha1 = "9df779c53cf5755adb2322943c21c1c1dffca7bf";
+      };
+    }
+    {
+      name = "sass_graph___sass_graph_2.2.4.tgz";
+      path = fetchurl {
+        name = "sass_graph___sass_graph_2.2.4.tgz";
+        url  = "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz";
+        sha1 = "13fbd63cd1caf0908b9fd93476ad43a51d1e0b49";
+      };
+    }
+    {
+      name = "sax___sax_1.2.1.tgz";
+      path = fetchurl {
+        name = "sax___sax_1.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz";
+        sha1 = "7b8e656190b228e81a66aea748480d828cd2d37a";
+      };
+    }
+    {
+      name = "sax___sax_1.2.4.tgz";
+      path = fetchurl {
+        name = "sax___sax_1.2.4.tgz";
+        url  = "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz";
+        sha1 = "2816234e2378bddc4e5354fab5caa895df7100d9";
+      };
+    }
+    {
+      name = "schema_utils___schema_utils_0.4.5.tgz";
+      path = fetchurl {
+        name = "schema_utils___schema_utils_0.4.5.tgz";
+        url  = "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz";
+        sha1 = "21836f0608aac17b78f9e3e24daff14a5ca13a3e";
+      };
+    }
+    {
+      name = "schema_utils___schema_utils_1.0.0.tgz";
+      path = fetchurl {
+        name = "schema_utils___schema_utils_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz";
+        sha1 = "0b79a93204d7b600d4b2850d1f66c2a34951c770";
+      };
+    }
+    {
+      name = "schema_utils___schema_utils_2.6.4.tgz";
+      path = fetchurl {
+        name = "schema_utils___schema_utils_2.6.4.tgz";
+        url  = "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.4.tgz";
+        sha1 = "a27efbf6e4e78689d91872ee3ccfa57d7bdd0f53";
+      };
+    }
+    {
+      name = "scope_css___scope_css_1.2.1.tgz";
+      path = fetchurl {
+        name = "scope_css___scope_css_1.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/scope-css/-/scope-css-1.2.1.tgz";
+        sha1 = "c35768bc900cad030a3e0d663a818c0f6a57f40e";
+      };
+    }
+    {
+      name = "scss_tokenizer___scss_tokenizer_0.2.3.tgz";
+      path = fetchurl {
+        name = "scss_tokenizer___scss_tokenizer_0.2.3.tgz";
+        url  = "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz";
+        sha1 = "8eb06db9a9723333824d3f5530641149847ce5d1";
+      };
+    }
+    {
+      name = "select_hose___select_hose_2.0.0.tgz";
+      path = fetchurl {
+        name = "select_hose___select_hose_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz";
+        sha1 = "625d8658f865af43ec962bfc376a37359a4994ca";
+      };
+    }
+    {
+      name = "select2___select2_3.5.2_browserify.tgz";
+      path = fetchurl {
+        name = "select2___select2_3.5.2_browserify.tgz";
+        url  = "https://registry.yarnpkg.com/select2/-/select2-3.5.2-browserify.tgz";
+        sha1 = "dc4dafda38d67a734e8a97a46f0d3529ae05391d";
+      };
+    }
+    {
+      name = "select___select_1.1.2.tgz";
+      path = fetchurl {
+        name = "select___select_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz";
+        sha1 = "0e7350acdec80b1108528786ec1d4418d11b396d";
+      };
+    }
+    {
+      name = "selfsigned___selfsigned_1.10.7.tgz";
+      path = fetchurl {
+        name = "selfsigned___selfsigned_1.10.7.tgz";
+        url  = "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz";
+        sha1 = "da5819fd049d5574f28e88a9bcc6dbc6e6f3906b";
+      };
+    }
+    {
+      name = "semver_diff___semver_diff_2.1.0.tgz";
+      path = fetchurl {
+        name = "semver_diff___semver_diff_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz";
+        sha1 = "4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36";
+      };
+    }
+    {
+      name = "semver___semver_5.7.1.tgz";
+      path = fetchurl {
+        name = "semver___semver_5.7.1.tgz";
+        url  = "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz";
+        sha1 = "a954f931aeba508d307bbf069eff0c01c96116f7";
+      };
+    }
+    {
+      name = "semver___semver_7.0.0.tgz";
+      path = fetchurl {
+        name = "semver___semver_7.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz";
+        sha1 = "5f3ca35761e47e05b206c6daff2cf814f0316b8e";
+      };
+    }
+    {
+      name = "semver___semver_6.3.0.tgz";
+      path = fetchurl {
+        name = "semver___semver_6.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz";
+        sha1 = "ee0a64c8af5e8ceea67687b133761e1becbd1d3d";
+      };
+    }
+    {
+      name = "semver___semver_5.3.0.tgz";
+      path = fetchurl {
+        name = "semver___semver_5.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz";
+        sha1 = "9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f";
+      };
+    }
+    {
+      name = "send___send_0.17.1.tgz";
+      path = fetchurl {
+        name = "send___send_0.17.1.tgz";
+        url  = "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz";
+        sha1 = "c1d8b059f7900f7466dd4938bdc44e11ddb376c8";
+      };
+    }
+    {
+      name = "serialize_javascript___serialize_javascript_2.1.2.tgz";
+      path = fetchurl {
+        name = "serialize_javascript___serialize_javascript_2.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz";
+        sha1 = "ecec53b0e0317bdc95ef76ab7074b7384785fa61";
+      };
+    }
+    {
+      name = "serve_index___serve_index_1.9.1.tgz";
+      path = fetchurl {
+        name = "serve_index___serve_index_1.9.1.tgz";
+        url  = "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz";
+        sha1 = "d3768d69b1e7d82e5ce050fff5b453bea12a9239";
+      };
+    }
+    {
+      name = "serve_static___serve_static_1.14.1.tgz";
+      path = fetchurl {
+        name = "serve_static___serve_static_1.14.1.tgz";
+        url  = "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz";
+        sha1 = "666e636dc4f010f7ef29970a88a674320898b2f9";
+      };
+    }
+    {
+      name = "set_blocking___set_blocking_2.0.0.tgz";
+      path = fetchurl {
+        name = "set_blocking___set_blocking_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz";
+        sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
+      };
+    }
+    {
+      name = "set_value___set_value_2.0.1.tgz";
+      path = fetchurl {
+        name = "set_value___set_value_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz";
+        sha1 = "a18d40530e6f07de4228c7defe4227af8cad005b";
+      };
+    }
+    {
+      name = "setimmediate___setimmediate_1.0.5.tgz";
+      path = fetchurl {
+        name = "setimmediate___setimmediate_1.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz";
+        sha1 = "290cbb232e306942d7d7ea9b83732ab7856f8285";
+      };
+    }
+    {
+      name = "setprototypeof___setprototypeof_1.0.3.tgz";
+      path = fetchurl {
+        name = "setprototypeof___setprototypeof_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz";
+        sha1 = "66567e37043eeb4f04d91bd658c0cbefb55b8e04";
+      };
+    }
+    {
+      name = "setprototypeof___setprototypeof_1.1.1.tgz";
+      path = fetchurl {
+        name = "setprototypeof___setprototypeof_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz";
+        sha1 = "7e95acb24aa92f5885e0abef5ba131330d4ae683";
+      };
+    }
+    {
+      name = "sha.js___sha.js_2.4.10.tgz";
+      path = fetchurl {
+        name = "sha.js___sha.js_2.4.10.tgz";
+        url  = "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.10.tgz";
+        sha1 = "b1fde5cd7d11a5626638a07c604ab909cfa31f9b";
+      };
+    }
+    {
+      name = "shallow_clone___shallow_clone_3.0.1.tgz";
+      path = fetchurl {
+        name = "shallow_clone___shallow_clone_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz";
+        sha1 = "8f2981ad92531f55035b01fb230769a40e02efa3";
+      };
+    }
+    {
+      name = "shebang_command___shebang_command_1.2.0.tgz";
+      path = fetchurl {
+        name = "shebang_command___shebang_command_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz";
+        sha1 = "44aac65b695b03398968c39f363fee5deafdf1ea";
+      };
+    }
+    {
+      name = "shebang_regex___shebang_regex_1.0.0.tgz";
+      path = fetchurl {
+        name = "shebang_regex___shebang_regex_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz";
+        sha1 = "da42f49740c0b42db2ca9728571cb190c98efea3";
+      };
+    }
+    {
+      name = "shellwords___shellwords_0.1.1.tgz";
+      path = fetchurl {
+        name = "shellwords___shellwords_0.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz";
+        sha1 = "d6b9181c1a48d397324c84871efbcfc73fc0654b";
+      };
+    }
+    {
+      name = "sigmund___sigmund_1.0.1.tgz";
+      path = fetchurl {
+        name = "sigmund___sigmund_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz";
+        sha1 = "3ff21f198cad2175f9f3b781853fd94d0d19b590";
+      };
+    }
+    {
+      name = "signal_exit___signal_exit_3.0.2.tgz";
+      path = fetchurl {
+        name = "signal_exit___signal_exit_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz";
+        sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
+      };
+    }
+    {
+      name = "sisteransi___sisteransi_1.0.0.tgz";
+      path = fetchurl {
+        name = "sisteransi___sisteransi_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz";
+        sha1 = "77d9622ff909080f1c19e5f4a1df0c1b0a27b88c";
+      };
+    }
+    {
+      name = "slash___slash_1.0.0.tgz";
+      path = fetchurl {
+        name = "slash___slash_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz";
+        sha1 = "c41f2f6c39fc16d1cd17ad4b5d896114ae470d55";
+      };
+    }
+    {
+      name = "slash___slash_2.0.0.tgz";
+      path = fetchurl {
+        name = "slash___slash_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz";
+        sha1 = "de552851a1759df3a8f206535442f5ec4ddeab44";
+      };
+    }
+    {
+      name = "slash___slash_3.0.0.tgz";
+      path = fetchurl {
+        name = "slash___slash_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz";
+        sha1 = "6539be870c165adbd5240220dbe361f1bc4d4634";
+      };
+    }
+    {
+      name = "slice_ansi___slice_ansi_2.1.0.tgz";
+      path = fetchurl {
+        name = "slice_ansi___slice_ansi_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz";
+        sha1 = "cacd7693461a637a5788d92a7dd4fba068e81636";
+      };
+    }
+    {
+      name = "slugify___slugify_1.3.1.tgz";
+      path = fetchurl {
+        name = "slugify___slugify_1.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/slugify/-/slugify-1.3.1.tgz";
+        sha1 = "f572127e8535329fbc6c1edb74ab856b61ad7de2";
+      };
+    }
+    {
+      name = "smooshpack___smooshpack_0.0.62.tgz";
+      path = fetchurl {
+        name = "smooshpack___smooshpack_0.0.62.tgz";
+        url  = "https://registry.yarnpkg.com/smooshpack/-/smooshpack-0.0.62.tgz";
+        sha1 = "cb31b9f808f73de3146b050f84d044eb353b5503";
+      };
+    }
+    {
+      name = "snapdragon_node___snapdragon_node_2.1.1.tgz";
+      path = fetchurl {
+        name = "snapdragon_node___snapdragon_node_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz";
+        sha1 = "6c175f86ff14bdb0724563e8f3c1b021a286853b";
+      };
+    }
+    {
+      name = "snapdragon_util___snapdragon_util_3.0.1.tgz";
+      path = fetchurl {
+        name = "snapdragon_util___snapdragon_util_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz";
+        sha1 = "f956479486f2acd79700693f6f7b805e45ab56e2";
+      };
+    }
+    {
+      name = "snapdragon___snapdragon_0.8.2.tgz";
+      path = fetchurl {
+        name = "snapdragon___snapdragon_0.8.2.tgz";
+        url  = "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz";
+        sha1 = "64922e7c565b0e14204ba1aa7d6964278d25182d";
+      };
+    }
+    {
+      name = "socket.io_adapter___socket.io_adapter_1.1.1.tgz";
+      path = fetchurl {
+        name = "socket.io_adapter___socket.io_adapter_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz";
+        sha1 = "2a805e8a14d6372124dd9159ad4502f8cb07f06b";
+      };
+    }
+    {
+      name = "socket.io_client___socket.io_client_2.1.1.tgz";
+      path = fetchurl {
+        name = "socket.io_client___socket.io_client_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz";
+        sha1 = "dcb38103436ab4578ddb026638ae2f21b623671f";
+      };
+    }
+    {
+      name = "socket.io_parser___socket.io_parser_3.2.0.tgz";
+      path = fetchurl {
+        name = "socket.io_parser___socket.io_parser_3.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz";
+        sha1 = "e7c6228b6aa1f814e6148aea325b51aa9499e077";
+      };
+    }
+    {
+      name = "socket.io___socket.io_2.1.1.tgz";
+      path = fetchurl {
+        name = "socket.io___socket.io_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz";
+        sha1 = "a069c5feabee3e6b214a75b40ce0652e1cfb9980";
+      };
+    }
+    {
+      name = "sockjs_client___sockjs_client_1.4.0.tgz";
+      path = fetchurl {
+        name = "sockjs_client___sockjs_client_1.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz";
+        sha1 = "c9f2568e19c8fd8173b4997ea3420e0bb306c7d5";
+      };
+    }
+    {
+      name = "sockjs___sockjs_0.3.19.tgz";
+      path = fetchurl {
+        name = "sockjs___sockjs_0.3.19.tgz";
+        url  = "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz";
+        sha1 = "d976bbe800af7bd20ae08598d582393508993c0d";
+      };
+    }
+    {
+      name = "sortablejs___sortablejs_1.10.2.tgz";
+      path = fetchurl {
+        name = "sortablejs___sortablejs_1.10.2.tgz";
+        url  = "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.10.2.tgz";
+        sha1 = "6e40364d913f98b85a14f6678f92b5c1221f5290";
+      };
+    }
+    {
+      name = "source_list_map___source_list_map_2.0.0.tgz";
+      path = fetchurl {
+        name = "source_list_map___source_list_map_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz";
+        sha1 = "aaa47403f7b245a92fbc97ea08f250d6087ed085";
+      };
+    }
+    {
+      name = "source_map_resolve___source_map_resolve_0.5.2.tgz";
+      path = fetchurl {
+        name = "source_map_resolve___source_map_resolve_0.5.2.tgz";
+        url  = "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz";
+        sha1 = "72e2cc34095543e43b2c62b2c4c10d4a9054f259";
+      };
+    }
+    {
+      name = "source_map_support___source_map_support_0.5.13.tgz";
+      path = fetchurl {
+        name = "source_map_support___source_map_support_0.5.13.tgz";
+        url  = "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz";
+        sha1 = "31b24a9c2e73c2de85066c0feb7d44767ed52932";
+      };
+    }
+    {
+      name = "source_map_url___source_map_url_0.4.0.tgz";
+      path = fetchurl {
+        name = "source_map_url___source_map_url_0.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz";
+        sha1 = "3e935d7ddd73631b97659956d55128e87b5084a3";
+      };
+    }
+    {
+      name = "source_map___source_map_0.5.0.tgz";
+      path = fetchurl {
+        name = "source_map___source_map_0.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/source-map/-/source-map-0.5.0.tgz";
+        sha1 = "0fe96503ac86a5adb5de63f4e412ae4872cdbe86";
+      };
+    }
+    {
+      name = "source_map___source_map_0.4.4.tgz";
+      path = fetchurl {
+        name = "source_map___source_map_0.4.4.tgz";
+        url  = "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz";
+        sha1 = "eba4f5da9c0dc999de68032d8b4f76173652036b";
+      };
+    }
+    {
+      name = "source_map___source_map_0.5.7.tgz";
+      path = fetchurl {
+        name = "source_map___source_map_0.5.7.tgz";
+        url  = "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz";
+        sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
+      };
+    }
+    {
+      name = "source_map___source_map_0.6.1.tgz";
+      path = fetchurl {
+        name = "source_map___source_map_0.6.1.tgz";
+        url  = "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz";
+        sha1 = "74722af32e9614e9c287a8d0bbde48b5e2f1a263";
+      };
+    }
+    {
+      name = "source_map___source_map_0.7.3.tgz";
+      path = fetchurl {
+        name = "source_map___source_map_0.7.3.tgz";
+        url  = "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz";
+        sha1 = "5302f8169031735226544092e64981f751750383";
+      };
+    }
+    {
+      name = "spdx_correct___spdx_correct_1.0.2.tgz";
+      path = fetchurl {
+        name = "spdx_correct___spdx_correct_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz";
+        sha1 = "4b3073d933ff51f3912f03ac5519498a4150db40";
+      };
+    }
+    {
+      name = "spdx_expression_parse___spdx_expression_parse_1.0.4.tgz";
+      path = fetchurl {
+        name = "spdx_expression_parse___spdx_expression_parse_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz";
+        sha1 = "9bdf2f20e1f40ed447fbe273266191fced51626c";
+      };
+    }
+    {
+      name = "spdx_license_ids___spdx_license_ids_1.2.2.tgz";
+      path = fetchurl {
+        name = "spdx_license_ids___spdx_license_ids_1.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz";
+        sha1 = "c9df7a3424594ade6bd11900d596696dc06bac57";
+      };
+    }
+    {
+      name = "spdy_transport___spdy_transport_3.0.0.tgz";
+      path = fetchurl {
+        name = "spdy_transport___spdy_transport_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz";
+        sha1 = "00d4863a6400ad75df93361a1608605e5dcdcf31";
+      };
+    }
+    {
+      name = "spdy___spdy_4.0.1.tgz";
+      path = fetchurl {
+        name = "spdy___spdy_4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz";
+        sha1 = "6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2";
+      };
+    }
+    {
+      name = "specificity___specificity_0.4.1.tgz";
+      path = fetchurl {
+        name = "specificity___specificity_0.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz";
+        sha1 = "aab5e645012db08ba182e151165738d00887b019";
+      };
+    }
+    {
+      name = "split_string___split_string_3.1.0.tgz";
+      path = fetchurl {
+        name = "split_string___split_string_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz";
+        sha1 = "7cb09dda3a86585705c64b39a6466038682e8fe2";
+      };
+    }
+    {
+      name = "sprintf_js___sprintf_js_1.0.3.tgz";
+      path = fetchurl {
+        name = "sprintf_js___sprintf_js_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz";
+        sha1 = "04e6926f662895354f3dd015203633b857297e2c";
+      };
+    }
+    {
+      name = "sql.js___sql.js_0.4.0.tgz";
+      path = fetchurl {
+        name = "sql.js___sql.js_0.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/sql.js/-/sql.js-0.4.0.tgz";
+        sha1 = "23be9635520eb0ff43a741e7e830397266e88445";
+      };
+    }
+    {
+      name = "srcset___srcset_2.0.1.tgz";
+      path = fetchurl {
+        name = "srcset___srcset_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/srcset/-/srcset-2.0.1.tgz";
+        sha1 = "8f842d357487eb797f413d9c309de7a5149df5ac";
+      };
+    }
+    {
+      name = "sshpk___sshpk_1.15.2.tgz";
+      path = fetchurl {
+        name = "sshpk___sshpk_1.15.2.tgz";
+        url  = "https://registry.yarnpkg.com/sshpk/-/sshpk-1.15.2.tgz";
+        sha1 = "c946d6bd9b1a39d0e8635763f5242d6ed6dcb629";
+      };
+    }
+    {
+      name = "ssri___ssri_6.0.1.tgz";
+      path = fetchurl {
+        name = "ssri___ssri_6.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz";
+        sha1 = "2a3c41b28dd45b62b63676ecb74001265ae9edd8";
+      };
+    }
+    {
+      name = "ssri___ssri_7.1.0.tgz";
+      path = fetchurl {
+        name = "ssri___ssri_7.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz";
+        sha1 = "92c241bf6de82365b5c7fb4bd76e975522e1294d";
+      };
+    }
+    {
+      name = "stack_utils___stack_utils_1.0.2.tgz";
+      path = fetchurl {
+        name = "stack_utils___stack_utils_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz";
+        sha1 = "33eba3897788558bebfc2db059dc158ec36cebb8";
+      };
+    }
+    {
+      name = "state_toggle___state_toggle_1.0.1.tgz";
+      path = fetchurl {
+        name = "state_toggle___state_toggle_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.1.tgz";
+        sha1 = "c3cb0974f40a6a0f8e905b96789eb41afa1cde3a";
+      };
+    }
+    {
+      name = "static_extend___static_extend_0.1.2.tgz";
+      path = fetchurl {
+        name = "static_extend___static_extend_0.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz";
+        sha1 = "60809c39cbff55337226fd5e0b520f341f1fb5c6";
+      };
+    }
+    {
+      name = "statuses___statuses_1.5.0.tgz";
+      path = fetchurl {
+        name = "statuses___statuses_1.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz";
+        sha1 = "161c7dac177659fd9811f43771fa99381478628c";
+      };
+    }
+    {
+      name = "statuses___statuses_1.3.1.tgz";
+      path = fetchurl {
+        name = "statuses___statuses_1.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz";
+        sha1 = "faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e";
+      };
+    }
+    {
+      name = "stdout_stream___stdout_stream_1.4.1.tgz";
+      path = fetchurl {
+        name = "stdout_stream___stdout_stream_1.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz";
+        sha1 = "5ac174cdd5cd726104aa0c0b2bd83815d8d535de";
+      };
+    }
+    {
+      name = "stealthy_require___stealthy_require_1.1.1.tgz";
+      path = fetchurl {
+        name = "stealthy_require___stealthy_require_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz";
+        sha1 = "35b09875b4ff49f26a777e509b3090a3226bf24b";
+      };
+    }
+    {
+      name = "stickyfilljs___stickyfilljs_2.1.0.tgz";
+      path = fetchurl {
+        name = "stickyfilljs___stickyfilljs_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/stickyfilljs/-/stickyfilljs-2.1.0.tgz";
+        sha1 = "46dabb599d8275d185bdb97db597f86a2e3afa7b";
+      };
+    }
+    {
+      name = "stream_browserify___stream_browserify_2.0.1.tgz";
+      path = fetchurl {
+        name = "stream_browserify___stream_browserify_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz";
+        sha1 = "66266ee5f9bdb9940a4e4514cafb43bb71e5c9db";
+      };
+    }
+    {
+      name = "stream_each___stream_each_1.2.2.tgz";
+      path = fetchurl {
+        name = "stream_each___stream_each_1.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz";
+        sha1 = "8e8c463f91da8991778765873fe4d960d8f616bd";
+      };
+    }
+    {
+      name = "stream_http___stream_http_2.8.2.tgz";
+      path = fetchurl {
+        name = "stream_http___stream_http_2.8.2.tgz";
+        url  = "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.2.tgz";
+        sha1 = "4126e8c6b107004465918aa2fc35549e77402c87";
+      };
+    }
+    {
+      name = "stream_shift___stream_shift_1.0.0.tgz";
+      path = fetchurl {
+        name = "stream_shift___stream_shift_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz";
+        sha1 = "d5c752825e5367e786f78e18e445ea223a155952";
+      };
+    }
+    {
+      name = "streamroller___streamroller_1.0.6.tgz";
+      path = fetchurl {
+        name = "streamroller___streamroller_1.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/streamroller/-/streamroller-1.0.6.tgz";
+        sha1 = "8167d8496ed9f19f05ee4b158d9611321b8cacd9";
+      };
+    }
+    {
+      name = "string_length___string_length_2.0.0.tgz";
+      path = fetchurl {
+        name = "string_length___string_length_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz";
+        sha1 = "d40dbb686a3ace960c1cffca562bf2c45f8363ed";
+      };
+    }
+    {
+      name = "string_width___string_width_1.0.2.tgz";
+      path = fetchurl {
+        name = "string_width___string_width_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz";
+        sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
+      };
+    }
+    {
+      name = "string_width___string_width_2.1.1.tgz";
+      path = fetchurl {
+        name = "string_width___string_width_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz";
+        sha1 = "ab93f27a8dc13d28cac815c462143a6d9012ae9e";
+      };
+    }
+    {
+      name = "string_width___string_width_3.1.0.tgz";
+      path = fetchurl {
+        name = "string_width___string_width_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz";
+        sha1 = "22767be21b62af1081574306f69ac51b62203961";
+      };
+    }
+    {
+      name = "string_width___string_width_4.1.0.tgz";
+      path = fetchurl {
+        name = "string_width___string_width_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/string-width/-/string-width-4.1.0.tgz";
+        sha1 = "ba846d1daa97c3c596155308063e075ed1c99aff";
+      };
+    }
+    {
+      name = "string.prototype.trimleft___string.prototype.trimleft_2.1.1.tgz";
+      path = fetchurl {
+        name = "string.prototype.trimleft___string.prototype.trimleft_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz";
+        sha1 = "9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74";
+      };
+    }
+    {
+      name = "string.prototype.trimright___string.prototype.trimright_2.1.1.tgz";
+      path = fetchurl {
+        name = "string.prototype.trimright___string.prototype.trimright_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz";
+        sha1 = "440314b15996c866ce8a0341894d45186200c5d9";
+      };
+    }
+    {
+      name = "string_decoder___string_decoder_1.1.1.tgz";
+      path = fetchurl {
+        name = "string_decoder___string_decoder_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz";
+        sha1 = "9cf1611ba62685d7030ae9e4ba34149c3af03fc8";
+      };
+    }
+    {
+      name = "string_decoder___string_decoder_0.10.31.tgz";
+      path = fetchurl {
+        name = "string_decoder___string_decoder_0.10.31.tgz";
+        url  = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz";
+        sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
+      };
+    }
+    {
+      name = "stringify_entities___stringify_entities_1.3.2.tgz";
+      path = fetchurl {
+        name = "stringify_entities___stringify_entities_1.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.2.tgz";
+        sha1 = "a98417e5471fd227b3e45d3db1861c11caf668f7";
+      };
+    }
+    {
+      name = "strip_ansi___strip_ansi_3.0.1.tgz";
+      path = fetchurl {
+        name = "strip_ansi___strip_ansi_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz";
+        sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
+      };
+    }
+    {
+      name = "strip_ansi___strip_ansi_4.0.0.tgz";
+      path = fetchurl {
+        name = "strip_ansi___strip_ansi_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz";
+        sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
+      };
+    }
+    {
+      name = "strip_ansi___strip_ansi_5.2.0.tgz";
+      path = fetchurl {
+        name = "strip_ansi___strip_ansi_5.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz";
+        sha1 = "8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae";
+      };
+    }
+    {
+      name = "strip_bom___strip_bom_2.0.0.tgz";
+      path = fetchurl {
+        name = "strip_bom___strip_bom_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz";
+        sha1 = "6219a85616520491f35788bdbf1447a99c7e6b0e";
+      };
+    }
+    {
+      name = "strip_bom___strip_bom_3.0.0.tgz";
+      path = fetchurl {
+        name = "strip_bom___strip_bom_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz";
+        sha1 = "2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3";
+      };
+    }
+    {
+      name = "strip_css_comments___strip_css_comments_3.0.0.tgz";
+      path = fetchurl {
+        name = "strip_css_comments___strip_css_comments_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/strip-css-comments/-/strip-css-comments-3.0.0.tgz";
+        sha1 = "7a5625eff8a2b226cf8947a11254da96e13dae89";
+      };
+    }
+    {
+      name = "strip_eof___strip_eof_1.0.0.tgz";
+      path = fetchurl {
+        name = "strip_eof___strip_eof_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz";
+        sha1 = "bb43ff5598a6eb05d89b59fcd129c983313606bf";
+      };
+    }
+    {
+      name = "strip_indent___strip_indent_1.0.1.tgz";
+      path = fetchurl {
+        name = "strip_indent___strip_indent_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz";
+        sha1 = "0c7962a6adefa7bbd4ac366460a638552ae1a0a2";
+      };
+    }
+    {
+      name = "strip_indent___strip_indent_2.0.0.tgz";
+      path = fetchurl {
+        name = "strip_indent___strip_indent_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz";
+        sha1 = "5ef8db295d01e6ed6cbf7aab96998d7822527b68";
+      };
+    }
+    {
+      name = "strip_json_comments___strip_json_comments_3.0.1.tgz";
+      path = fetchurl {
+        name = "strip_json_comments___strip_json_comments_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz";
+        sha1 = "85713975a91fb87bf1b305cca77395e40d2a64a7";
+      };
+    }
+    {
+      name = "strip_json_comments___strip_json_comments_2.0.1.tgz";
+      path = fetchurl {
+        name = "strip_json_comments___strip_json_comments_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz";
+        sha1 = "3c531942e908c2697c0ec344858c286c7ca0a60a";
+      };
+    }
+    {
+      name = "style_loader___style_loader_1.1.3.tgz";
+      path = fetchurl {
+        name = "style_loader___style_loader_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.3.tgz";
+        sha1 = "9e826e69c683c4d9bf9db924f85e9abb30d5e200";
+      };
+    }
+    {
+      name = "style_search___style_search_0.1.0.tgz";
+      path = fetchurl {
+        name = "style_search___style_search_0.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz";
+        sha1 = "7958c793e47e32e07d2b5cafe5c0bf8e12e77902";
+      };
+    }
+    {
+      name = "stylelint_config_recommended___stylelint_config_recommended_2.2.0.tgz";
+      path = fetchurl {
+        name = "stylelint_config_recommended___stylelint_config_recommended_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-2.2.0.tgz";
+        sha1 = "46ab139db4a0e7151fd5f94af155512886c96d3f";
+      };
+    }
+    {
+      name = "stylelint_scss___stylelint_scss_3.9.2.tgz";
+      path = fetchurl {
+        name = "stylelint_scss___stylelint_scss_3.9.2.tgz";
+        url  = "https://registry.yarnpkg.com/stylelint-scss/-/stylelint-scss-3.9.2.tgz";
+        sha1 = "5435174a57696ee52eae40146778a4e62f7ed3a3";
+      };
+    }
+    {
+      name = "stylelint___stylelint_10.1.0.tgz";
+      path = fetchurl {
+        name = "stylelint___stylelint_10.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/stylelint/-/stylelint-10.1.0.tgz";
+        sha1 = "1bc4c4ce878107e7c396b19226d91ba28268911a";
+      };
+    }
+    {
+      name = "sugarss___sugarss_2.0.0.tgz";
+      path = fetchurl {
+        name = "sugarss___sugarss_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/sugarss/-/sugarss-2.0.0.tgz";
+        sha1 = "ddd76e0124b297d40bf3cca31c8b22ecb43bc61d";
+      };
+    }
+    {
+      name = "supports_color___supports_color_6.1.0.tgz";
+      path = fetchurl {
+        name = "supports_color___supports_color_6.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz";
+        sha1 = "0764abc69c63d5ac842dd4867e8d025e880df8f3";
+      };
+    }
+    {
+      name = "supports_color___supports_color_2.0.0.tgz";
+      path = fetchurl {
+        name = "supports_color___supports_color_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz";
+        sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
+      };
+    }
+    {
+      name = "supports_color___supports_color_5.5.0.tgz";
+      path = fetchurl {
+        name = "supports_color___supports_color_5.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz";
+        sha1 = "e2e69a44ac8772f78a1ec0b35b689df6530efc8f";
+      };
+    }
+    {
+      name = "supports_color___supports_color_7.1.0.tgz";
+      path = fetchurl {
+        name = "supports_color___supports_color_7.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz";
+        sha1 = "68e32591df73e25ad1c4b49108a2ec507962bfd1";
+      };
+    }
+    {
+      name = "svg_tags___svg_tags_1.0.0.tgz";
+      path = fetchurl {
+        name = "svg_tags___svg_tags_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz";
+        sha1 = "58f71cee3bd519b59d4b2a843b6c7de64ac04764";
+      };
+    }
+    {
+      name = "svg4everybody___svg4everybody_2.1.9.tgz";
+      path = fetchurl {
+        name = "svg4everybody___svg4everybody_2.1.9.tgz";
+        url  = "https://registry.yarnpkg.com/svg4everybody/-/svg4everybody-2.1.9.tgz";
+        sha1 = "5bd9f6defc133859a044646d4743fabc28db7e2d";
+      };
+    }
+    {
+      name = "swagger_ui_dist___swagger_ui_dist_3.24.3.tgz";
+      path = fetchurl {
+        name = "swagger_ui_dist___swagger_ui_dist_3.24.3.tgz";
+        url  = "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-3.24.3.tgz";
+        sha1 = "99754d11b0ddd314a1a50db850acb415e4b0a0c6";
+      };
+    }
+    {
+      name = "symbol_observable___symbol_observable_1.2.0.tgz";
+      path = fetchurl {
+        name = "symbol_observable___symbol_observable_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz";
+        sha1 = "c22688aed4eab3cdc2dfeacbb561660560a00804";
+      };
+    }
+    {
+      name = "symbol_tree___symbol_tree_3.2.2.tgz";
+      path = fetchurl {
+        name = "symbol_tree___symbol_tree_3.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz";
+        sha1 = "ae27db38f660a7ae2e1c3b7d1bc290819b8519e6";
+      };
+    }
+    {
+      name = "table___table_5.4.4.tgz";
+      path = fetchurl {
+        name = "table___table_5.4.4.tgz";
+        url  = "https://registry.yarnpkg.com/table/-/table-5.4.4.tgz";
+        sha1 = "6e0f88fdae3692793d1077fd172a4667afe986a6";
+      };
+    }
+    {
+      name = "taffydb___taffydb_2.6.2.tgz";
+      path = fetchurl {
+        name = "taffydb___taffydb_2.6.2.tgz";
+        url  = "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz";
+        sha1 = "7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268";
+      };
+    }
+    {
+      name = "tapable___tapable_0.1.10.tgz";
+      path = fetchurl {
+        name = "tapable___tapable_0.1.10.tgz";
+        url  = "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz";
+        sha1 = "29c35707c2b70e50d07482b5d202e8ed446dafd4";
+      };
+    }
+    {
+      name = "tapable___tapable_1.1.3.tgz";
+      path = fetchurl {
+        name = "tapable___tapable_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz";
+        sha1 = "a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2";
+      };
+    }
+    {
+      name = "tar___tar_2.2.2.tgz";
+      path = fetchurl {
+        name = "tar___tar_2.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz";
+        sha1 = "0ca8848562c7299b8b446ff6a4d60cdbb23edc40";
+      };
+    }
+    {
+      name = "tar___tar_4.4.8.tgz";
+      path = fetchurl {
+        name = "tar___tar_4.4.8.tgz";
+        url  = "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz";
+        sha1 = "b19eec3fde2a96e64666df9fdb40c5ca1bc3747d";
+      };
+    }
+    {
+      name = "term_size___term_size_1.2.0.tgz";
+      path = fetchurl {
+        name = "term_size___term_size_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz";
+        sha1 = "458b83887f288fc56d6fffbfad262e26638efa69";
+      };
+    }
+    {
+      name = "terser_webpack_plugin___terser_webpack_plugin_1.4.3.tgz";
+      path = fetchurl {
+        name = "terser_webpack_plugin___terser_webpack_plugin_1.4.3.tgz";
+        url  = "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz";
+        sha1 = "5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c";
+      };
+    }
+    {
+      name = "terser___terser_4.3.1.tgz";
+      path = fetchurl {
+        name = "terser___terser_4.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/terser/-/terser-4.3.1.tgz";
+        sha1 = "09820bcb3398299c4b48d9a86aefc65127d0ed65";
+      };
+    }
+    {
+      name = "test_exclude___test_exclude_5.0.0.tgz";
+      path = fetchurl {
+        name = "test_exclude___test_exclude_5.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.0.0.tgz";
+        sha1 = "cdce7cece785e0e829cd5c2b27baf18bc583cfb7";
+      };
+    }
+    {
+      name = "text_table___text_table_0.2.0.tgz";
+      path = fetchurl {
+        name = "text_table___text_table_0.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz";
+        sha1 = "7f5ee823ae805207c00af2df4a84ec3fcfa570b4";
+      };
+    }
+    {
+      name = "textextensions___textextensions_2.2.0.tgz";
+      path = fetchurl {
+        name = "textextensions___textextensions_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/textextensions/-/textextensions-2.2.0.tgz";
+        sha1 = "38ac676151285b658654581987a0ce1a4490d286";
+      };
+    }
+    {
+      name = "three_orbit_controls___three_orbit_controls_82.1.0.tgz";
+      path = fetchurl {
+        name = "three_orbit_controls___three_orbit_controls_82.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/three-orbit-controls/-/three-orbit-controls-82.1.0.tgz";
+        sha1 = "11a7f33d0a20ecec98f098b37780f6537374fab4";
+      };
+    }
+    {
+      name = "three_stl_loader___three_stl_loader_1.0.4.tgz";
+      path = fetchurl {
+        name = "three_stl_loader___three_stl_loader_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/three-stl-loader/-/three-stl-loader-1.0.4.tgz";
+        sha1 = "6b3319a31e3b910aab1883d19b00c81a663c3e03";
+      };
+    }
+    {
+      name = "three___three_0.84.0.tgz";
+      path = fetchurl {
+        name = "three___three_0.84.0.tgz";
+        url  = "https://registry.yarnpkg.com/three/-/three-0.84.0.tgz";
+        sha1 = "95be85a55a0fa002aa625ed559130957dcffd918";
+      };
+    }
+    {
+      name = "throat___throat_4.1.0.tgz";
+      path = fetchurl {
+        name = "throat___throat_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz";
+        sha1 = "89037cbc92c56ab18926e6ba4cbb200e15672a6a";
+      };
+    }
+    {
+      name = "throttle_debounce___throttle_debounce_2.1.0.tgz";
+      path = fetchurl {
+        name = "throttle_debounce___throttle_debounce_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-2.1.0.tgz";
+        sha1 = "257e648f0a56bd9e54fe0f132c4ab8611df4e1d5";
+      };
+    }
+    {
+      name = "through2___through2_2.0.5.tgz";
+      path = fetchurl {
+        name = "through2___through2_2.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz";
+        sha1 = "01c1e39eb31d07cb7d03a96a70823260b23132cd";
+      };
+    }
+    {
+      name = "through___through_2.3.8.tgz";
+      path = fetchurl {
+        name = "through___through_2.3.8.tgz";
+        url  = "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz";
+        sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
+      };
+    }
+    {
+      name = "thunky___thunky_0.1.0.tgz";
+      path = fetchurl {
+        name = "thunky___thunky_0.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz";
+        sha1 = "bf30146824e2b6e67b0f2d7a4ac8beb26908684e";
+      };
+    }
+    {
+      name = "timeago.js___timeago.js_4.0.2.tgz";
+      path = fetchurl {
+        name = "timeago.js___timeago.js_4.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/timeago.js/-/timeago.js-4.0.2.tgz";
+        sha1 = "724e8c8833e3490676c7bb0a75f5daf20e558028";
+      };
+    }
+    {
+      name = "timed_out___timed_out_4.0.1.tgz";
+      path = fetchurl {
+        name = "timed_out___timed_out_4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz";
+        sha1 = "f32eacac5a175bea25d7fab565ab3ed8741ef56f";
+      };
+    }
+    {
+      name = "timers_browserify___timers_browserify_2.0.10.tgz";
+      path = fetchurl {
+        name = "timers_browserify___timers_browserify_2.0.10.tgz";
+        url  = "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz";
+        sha1 = "1d28e3d2aadf1d5a5996c4e9f95601cd053480ae";
+      };
+    }
+    {
+      name = "timezone_mock___timezone_mock_1.0.8.tgz";
+      path = fetchurl {
+        name = "timezone_mock___timezone_mock_1.0.8.tgz";
+        url  = "https://registry.yarnpkg.com/timezone-mock/-/timezone-mock-1.0.8.tgz";
+        sha1 = "1b9f7af13f2bf84b7aa3d3d6e24aa17255b6037d";
+      };
+    }
+    {
+      name = "tiny_emitter___tiny_emitter_2.0.2.tgz";
+      path = fetchurl {
+        name = "tiny_emitter___tiny_emitter_2.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.0.2.tgz";
+        sha1 = "82d27468aca5ade8e5fd1e6d22b57dd43ebdfb7c";
+      };
+    }
+    {
+      name = "tiptap_commands___tiptap_commands_1.4.0.tgz";
+      path = fetchurl {
+        name = "tiptap_commands___tiptap_commands_1.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/tiptap-commands/-/tiptap-commands-1.4.0.tgz";
+        sha1 = "0cfb3ac138ee3099de56114cb119abd841fbcbe7";
+      };
+    }
+    {
+      name = "tiptap_extensions___tiptap_extensions_1.8.0.tgz";
+      path = fetchurl {
+        name = "tiptap_extensions___tiptap_extensions_1.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/tiptap-extensions/-/tiptap-extensions-1.8.0.tgz";
+        sha1 = "3067620a024f1a9e5fae4450790b143d7ebe4394";
+      };
+    }
+    {
+      name = "tiptap_utils___tiptap_utils_1.1.1.tgz";
+      path = fetchurl {
+        name = "tiptap_utils___tiptap_utils_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/tiptap-utils/-/tiptap-utils-1.1.1.tgz";
+        sha1 = "e7aad3e84eb35f7abed704d15da0420029789d0d";
+      };
+    }
+    {
+      name = "tiptap___tiptap_1.8.0.tgz";
+      path = fetchurl {
+        name = "tiptap___tiptap_1.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/tiptap/-/tiptap-1.8.0.tgz";
+        sha1 = "c671188075ffa5ee4f86470f95818fd9ce6f1040";
+      };
+    }
+    {
+      name = "tmp___tmp_0.0.33.tgz";
+      path = fetchurl {
+        name = "tmp___tmp_0.0.33.tgz";
+        url  = "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz";
+        sha1 = "6d34335889768d21b2bcda0aa277ced3b1bfadf9";
+      };
+    }
+    {
+      name = "tmpl___tmpl_1.0.4.tgz";
+      path = fetchurl {
+        name = "tmpl___tmpl_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz";
+        sha1 = "23640dd7b42d00433911140820e5cf440e521dd1";
+      };
+    }
+    {
+      name = "to_array___to_array_0.1.4.tgz";
+      path = fetchurl {
+        name = "to_array___to_array_0.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz";
+        sha1 = "17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890";
+      };
+    }
+    {
+      name = "to_arraybuffer___to_arraybuffer_1.0.1.tgz";
+      path = fetchurl {
+        name = "to_arraybuffer___to_arraybuffer_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz";
+        sha1 = "7d229b1fcc637e466ca081180836a7aabff83f43";
+      };
+    }
+    {
+      name = "to_fast_properties___to_fast_properties_2.0.0.tgz";
+      path = fetchurl {
+        name = "to_fast_properties___to_fast_properties_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz";
+        sha1 = "dc5e698cbd079265bc73e0377681a4e4e83f616e";
+      };
+    }
+    {
+      name = "to_object_path___to_object_path_0.3.0.tgz";
+      path = fetchurl {
+        name = "to_object_path___to_object_path_0.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz";
+        sha1 = "297588b7b0e7e0ac08e04e672f85c1f4999e17af";
+      };
+    }
+    {
+      name = "to_regex_range___to_regex_range_2.1.1.tgz";
+      path = fetchurl {
+        name = "to_regex_range___to_regex_range_2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz";
+        sha1 = "7c80c17b9dfebe599e27367e0d4dd5590141db38";
+      };
+    }
+    {
+      name = "to_regex_range___to_regex_range_5.0.1.tgz";
+      path = fetchurl {
+        name = "to_regex_range___to_regex_range_5.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz";
+        sha1 = "1648c44aae7c8d988a326018ed72f5b4dd0392e4";
+      };
+    }
+    {
+      name = "to_regex___to_regex_3.0.2.tgz";
+      path = fetchurl {
+        name = "to_regex___to_regex_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz";
+        sha1 = "13cfdd9b336552f30b51f33a8ae1b42a7a7599ce";
+      };
+    }
+    {
+      name = "toggle_selection___toggle_selection_1.0.6.tgz";
+      path = fetchurl {
+        name = "toggle_selection___toggle_selection_1.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz";
+        sha1 = "6e45b1263f2017fa0acc7d89d78b15b8bf77da32";
+      };
+    }
+    {
+      name = "toidentifier___toidentifier_1.0.0.tgz";
+      path = fetchurl {
+        name = "toidentifier___toidentifier_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz";
+        sha1 = "7e1be3470f1e77948bc43d94a3c8f4d7752ba553";
+      };
+    }
+    {
+      name = "touch___touch_3.1.0.tgz";
+      path = fetchurl {
+        name = "touch___touch_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz";
+        sha1 = "fe365f5f75ec9ed4e56825e0bb76d24ab74af83b";
+      };
+    }
+    {
+      name = "tough_cookie___tough_cookie_2.4.3.tgz";
+      path = fetchurl {
+        name = "tough_cookie___tough_cookie_2.4.3.tgz";
+        url  = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz";
+        sha1 = "53f36da3f47783b0925afa06ff9f3b165280f781";
+      };
+    }
+    {
+      name = "tr46___tr46_1.0.1.tgz";
+      path = fetchurl {
+        name = "tr46___tr46_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz";
+        sha1 = "a8b13fd6bfd2489519674ccde55ba3693b706d09";
+      };
+    }
+    {
+      name = "tributejs___tributejs_4.1.3.tgz";
+      path = fetchurl {
+        name = "tributejs___tributejs_4.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/tributejs/-/tributejs-4.1.3.tgz";
+        sha1 = "2e1be7d9a1e403ed4c394f91d859812267e4691c";
+      };
+    }
+    {
+      name = "trim_newlines___trim_newlines_1.0.0.tgz";
+      path = fetchurl {
+        name = "trim_newlines___trim_newlines_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz";
+        sha1 = "5887966bb582a4503a41eb524f7d35011815a613";
+      };
+    }
+    {
+      name = "trim_newlines___trim_newlines_2.0.0.tgz";
+      path = fetchurl {
+        name = "trim_newlines___trim_newlines_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz";
+        sha1 = "b403d0b91be50c331dfc4b82eeceb22c3de16d20";
+      };
+    }
+    {
+      name = "trim_trailing_lines___trim_trailing_lines_1.1.1.tgz";
+      path = fetchurl {
+        name = "trim_trailing_lines___trim_trailing_lines_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.1.tgz";
+        sha1 = "e0ec0810fd3c3f1730516b45f49083caaf2774d9";
+      };
+    }
+    {
+      name = "trim___trim_0.0.1.tgz";
+      path = fetchurl {
+        name = "trim___trim_0.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz";
+        sha1 = "5858547f6b290757ee95cccc666fb50084c460dd";
+      };
+    }
+    {
+      name = "trough___trough_1.0.3.tgz";
+      path = fetchurl {
+        name = "trough___trough_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/trough/-/trough-1.0.3.tgz";
+        sha1 = "e29bd1614c6458d44869fc28b255ab7857ef7c24";
+      };
+    }
+    {
+      name = "true_case_path___true_case_path_1.0.3.tgz";
+      path = fetchurl {
+        name = "true_case_path___true_case_path_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz";
+        sha1 = "f813b5a8c86b40da59606722b144e3225799f47d";
+      };
+    }
+    {
+      name = "try_catch___try_catch_2.0.0.tgz";
+      path = fetchurl {
+        name = "try_catch___try_catch_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/try-catch/-/try-catch-2.0.0.tgz";
+        sha1 = "a491141d597f8b72b46757fe1c47059341a16aed";
+      };
+    }
+    {
+      name = "try_to_catch___try_to_catch_1.1.1.tgz";
+      path = fetchurl {
+        name = "try_to_catch___try_to_catch_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/try-to-catch/-/try-to-catch-1.1.1.tgz";
+        sha1 = "770162dd13b9a0e55da04db5b7f888956072038a";
+      };
+    }
+    {
+      name = "tryer___tryer_1.0.0.tgz";
+      path = fetchurl {
+        name = "tryer___tryer_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/tryer/-/tryer-1.0.0.tgz";
+        sha1 = "027b69fa823225e551cace3ef03b11f6ab37c1d7";
+      };
+    }
+    {
+      name = "ts_invariant___ts_invariant_0.3.2.tgz";
+      path = fetchurl {
+        name = "ts_invariant___ts_invariant_0.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.3.2.tgz";
+        sha1 = "89a2ffeb70879b777258df1df1c59383c35209b0";
+      };
+    }
+    {
+      name = "ts_invariant___ts_invariant_0.4.4.tgz";
+      path = fetchurl {
+        name = "ts_invariant___ts_invariant_0.4.4.tgz";
+        url  = "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz";
+        sha1 = "97a523518688f93aafad01b0e80eb803eb2abd86";
+      };
+    }
+    {
+      name = "ts_jest___ts_jest_24.0.0.tgz";
+      path = fetchurl {
+        name = "ts_jest___ts_jest_24.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.0.0.tgz";
+        sha1 = "3f26bf2ec1fa584863a5a9c29bd8717d549efbf6";
+      };
+    }
+    {
+      name = "tslib___tslib_1.11.1.tgz";
+      path = fetchurl {
+        name = "tslib___tslib_1.11.1.tgz";
+        url  = "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz";
+        sha1 = "eb15d128827fbee2841549e171f45ed338ac7e35";
+      };
+    }
+    {
+      name = "tsutils___tsutils_3.17.1.tgz";
+      path = fetchurl {
+        name = "tsutils___tsutils_3.17.1.tgz";
+        url  = "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz";
+        sha1 = "ed719917f11ca0dee586272b2ac49e015a2dd759";
+      };
+    }
+    {
+      name = "tty_browserify___tty_browserify_0.0.0.tgz";
+      path = fetchurl {
+        name = "tty_browserify___tty_browserify_0.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz";
+        sha1 = "a157ba402da24e9bf957f9aa69d524eed42901a6";
+      };
+    }
+    {
+      name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
+      path = fetchurl {
+        name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
+        sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
+      };
+    }
+    {
+      name = "tweetnacl___tweetnacl_0.14.5.tgz";
+      path = fetchurl {
+        name = "tweetnacl___tweetnacl_0.14.5.tgz";
+        url  = "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz";
+        sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
+      };
+    }
+    {
+      name = "type_check___type_check_0.3.2.tgz";
+      path = fetchurl {
+        name = "type_check___type_check_0.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz";
+        sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
+      };
+    }
+    {
+      name = "type_fest___type_fest_0.5.2.tgz";
+      path = fetchurl {
+        name = "type_fest___type_fest_0.5.2.tgz";
+        url  = "https://registry.yarnpkg.com/type-fest/-/type-fest-0.5.2.tgz";
+        sha1 = "d6ef42a0356c6cd45f49485c3b6281fc148e48a2";
+      };
+    }
+    {
+      name = "type_fest___type_fest_0.8.1.tgz";
+      path = fetchurl {
+        name = "type_fest___type_fest_0.8.1.tgz";
+        url  = "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz";
+        sha1 = "09e249ebde851d3b1e48d27c105444667f17b83d";
+      };
+    }
+    {
+      name = "type_is___type_is_1.6.18.tgz";
+      path = fetchurl {
+        name = "type_is___type_is_1.6.18.tgz";
+        url  = "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz";
+        sha1 = "4e552cd05df09467dcbc4ef739de89f2cf37c131";
+      };
+    }
+    {
+      name = "typedarray___typedarray_0.0.6.tgz";
+      path = fetchurl {
+        name = "typedarray___typedarray_0.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz";
+        sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
+      };
+    }
+    {
+      name = "typescript___typescript_3.3.4000.tgz";
+      path = fetchurl {
+        name = "typescript___typescript_3.3.4000.tgz";
+        url  = "https://registry.yarnpkg.com/typescript/-/typescript-3.3.4000.tgz";
+        sha1 = "76b0f89cfdbf97827e1112d64f283f1151d6adf0";
+      };
+    }
+    {
+      name = "uc.micro___uc.micro_1.0.5.tgz";
+      path = fetchurl {
+        name = "uc.micro___uc.micro_1.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz";
+        sha1 = "0c65f15f815aa08b560a61ce8b4db7ffc3f45376";
+      };
+    }
+    {
+      name = "uglify_js___uglify_js_3.6.0.tgz";
+      path = fetchurl {
+        name = "uglify_js___uglify_js_3.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz";
+        sha1 = "704681345c53a8b2079fb6cec294b05ead242ff5";
+      };
+    }
+    {
+      name = "ultron___ultron_1.1.1.tgz";
+      path = fetchurl {
+        name = "ultron___ultron_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz";
+        sha1 = "9fe1536a10a664a65266a1e3ccf85fd36302bc9c";
+      };
+    }
+    {
+      name = "undefsafe___undefsafe_2.0.2.tgz";
+      path = fetchurl {
+        name = "undefsafe___undefsafe_2.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.2.tgz";
+        sha1 = "225f6b9e0337663e0d8e7cfd686fc2836ccace76";
+      };
+    }
+    {
+      name = "underscore_contrib___underscore_contrib_0.3.0.tgz";
+      path = fetchurl {
+        name = "underscore_contrib___underscore_contrib_0.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/underscore-contrib/-/underscore-contrib-0.3.0.tgz";
+        sha1 = "665b66c24783f8fa2b18c9f8cbb0e2c7d48c26c7";
+      };
+    }
+    {
+      name = "underscore___underscore_1.6.0.tgz";
+      path = fetchurl {
+        name = "underscore___underscore_1.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz";
+        sha1 = "8b38b10cacdef63337b8b24e4ff86d45aea529a8";
+      };
+    }
+    {
+      name = "underscore___underscore_1.8.3.tgz";
+      path = fetchurl {
+        name = "underscore___underscore_1.8.3.tgz";
+        url  = "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz";
+        sha1 = "4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022";
+      };
+    }
+    {
+      name = "unfetch___unfetch_4.1.0.tgz";
+      path = fetchurl {
+        name = "unfetch___unfetch_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/unfetch/-/unfetch-4.1.0.tgz";
+        sha1 = "6ec2dd0de887e58a4dee83a050ded80ffc4137db";
+      };
+    }
+    {
+      name = "unherit___unherit_1.1.1.tgz";
+      path = fetchurl {
+        name = "unherit___unherit_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/unherit/-/unherit-1.1.1.tgz";
+        sha1 = "132748da3e88eab767e08fabfbb89c5e9d28628c";
+      };
+    }
+    {
+      name = "unicode_canonical_property_names_ecmascript___unicode_canonical_property_names_ecmascript_1.0.4.tgz";
+      path = fetchurl {
+        name = "unicode_canonical_property_names_ecmascript___unicode_canonical_property_names_ecmascript_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz";
+        sha1 = "2619800c4c825800efdd8343af7dd9933cbe2818";
+      };
+    }
+    {
+      name = "unicode_match_property_ecmascript___unicode_match_property_ecmascript_1.0.4.tgz";
+      path = fetchurl {
+        name = "unicode_match_property_ecmascript___unicode_match_property_ecmascript_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz";
+        sha1 = "8ed2a32569961bce9227d09cd3ffbb8fed5f020c";
+      };
+    }
+    {
+      name = "unicode_match_property_value_ecmascript___unicode_match_property_value_ecmascript_1.1.0.tgz";
+      path = fetchurl {
+        name = "unicode_match_property_value_ecmascript___unicode_match_property_value_ecmascript_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz";
+        sha1 = "5b4b426e08d13a80365e0d657ac7a6c1ec46a277";
+      };
+    }
+    {
+      name = "unicode_property_aliases_ecmascript___unicode_property_aliases_ecmascript_1.0.4.tgz";
+      path = fetchurl {
+        name = "unicode_property_aliases_ecmascript___unicode_property_aliases_ecmascript_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz";
+        sha1 = "5a533f31b4317ea76f17d807fa0d116546111dd0";
+      };
+    }
+    {
+      name = "unified___unified_7.1.0.tgz";
+      path = fetchurl {
+        name = "unified___unified_7.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/unified/-/unified-7.1.0.tgz";
+        sha1 = "5032f1c1ee3364bd09da12e27fdd4a7553c7be13";
+      };
+    }
+    {
+      name = "union_value___union_value_1.0.1.tgz";
+      path = fetchurl {
+        name = "union_value___union_value_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz";
+        sha1 = "0b6fe7b835aecda61c6ea4d4f02c14221e109847";
+      };
+    }
+    {
+      name = "uniq___uniq_1.0.1.tgz";
+      path = fetchurl {
+        name = "uniq___uniq_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz";
+        sha1 = "b31c5ae8254844a3a8281541ce2b04b865a734ff";
+      };
+    }
+    {
+      name = "unique_filename___unique_filename_1.1.1.tgz";
+      path = fetchurl {
+        name = "unique_filename___unique_filename_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz";
+        sha1 = "1d69769369ada0583103a1e6ae87681b56573230";
+      };
+    }
+    {
+      name = "unique_slug___unique_slug_2.0.0.tgz";
+      path = fetchurl {
+        name = "unique_slug___unique_slug_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz";
+        sha1 = "db6676e7c7cc0629878ff196097c78855ae9f4ab";
+      };
+    }
+    {
+      name = "unique_string___unique_string_1.0.0.tgz";
+      path = fetchurl {
+        name = "unique_string___unique_string_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz";
+        sha1 = "9e1057cca851abb93398f8b33ae187b99caec11a";
+      };
+    }
+    {
+      name = "unist_util_find_all_after___unist_util_find_all_after_1.0.2.tgz";
+      path = fetchurl {
+        name = "unist_util_find_all_after___unist_util_find_all_after_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-1.0.2.tgz";
+        sha1 = "9be49cfbae5ca1566b27536670a92836bf2f8d6d";
+      };
+    }
+    {
+      name = "unist_util_is___unist_util_is_2.1.2.tgz";
+      path = fetchurl {
+        name = "unist_util_is___unist_util_is_2.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.2.tgz";
+        sha1 = "1193fa8f2bfbbb82150633f3a8d2eb9a1c1d55db";
+      };
+    }
+    {
+      name = "unist_util_remove_position___unist_util_remove_position_1.1.2.tgz";
+      path = fetchurl {
+        name = "unist_util_remove_position___unist_util_remove_position_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.2.tgz";
+        sha1 = "86b5dad104d0bbfbeb1db5f5c92f3570575c12cb";
+      };
+    }
+    {
+      name = "unist_util_stringify_position___unist_util_stringify_position_1.1.2.tgz";
+      path = fetchurl {
+        name = "unist_util_stringify_position___unist_util_stringify_position_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz";
+        sha1 = "3f37fcf351279dcbca7480ab5889bb8a832ee1c6";
+      };
+    }
+    {
+      name = "unist_util_visit_parents___unist_util_visit_parents_2.0.1.tgz";
+      path = fetchurl {
+        name = "unist_util_visit_parents___unist_util_visit_parents_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.0.1.tgz";
+        sha1 = "63fffc8929027bee04bfef7d2cce474f71cb6217";
+      };
+    }
+    {
+      name = "unist_util_visit___unist_util_visit_1.4.1.tgz";
+      path = fetchurl {
+        name = "unist_util_visit___unist_util_visit_1.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz";
+        sha1 = "4724aaa8486e6ee6e26d7ff3c8685960d560b1e3";
+      };
+    }
+    {
+      name = "universalify___universalify_0.1.2.tgz";
+      path = fetchurl {
+        name = "universalify___universalify_0.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz";
+        sha1 = "b646f69be3942dabcecc9d6639c80dc105efaa66";
+      };
+    }
+    {
+      name = "unpipe___unpipe_1.0.0.tgz";
+      path = fetchurl {
+        name = "unpipe___unpipe_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz";
+        sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
+      };
+    }
+    {
+      name = "unset_value___unset_value_1.0.0.tgz";
+      path = fetchurl {
+        name = "unset_value___unset_value_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz";
+        sha1 = "8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559";
+      };
+    }
+    {
+      name = "unzip_response___unzip_response_2.0.1.tgz";
+      path = fetchurl {
+        name = "unzip_response___unzip_response_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz";
+        sha1 = "d2f0f737d16b0615e72a6935ed04214572d56f97";
+      };
+    }
+    {
+      name = "upath___upath_1.2.0.tgz";
+      path = fetchurl {
+        name = "upath___upath_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz";
+        sha1 = "8f66dbcd55a883acdae4408af8b035a5044c1894";
+      };
+    }
+    {
+      name = "update_notifier___update_notifier_2.5.0.tgz";
+      path = fetchurl {
+        name = "update_notifier___update_notifier_2.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz";
+        sha1 = "d0744593e13f161e406acb1d9408b72cad08aff6";
+      };
+    }
+    {
+      name = "upper_case___upper_case_1.1.3.tgz";
+      path = fetchurl {
+        name = "upper_case___upper_case_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz";
+        sha1 = "f6b4501c2ec4cdd26ba78be7222961de77621598";
+      };
+    }
+    {
+      name = "uri_js___uri_js_4.2.2.tgz";
+      path = fetchurl {
+        name = "uri_js___uri_js_4.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz";
+        sha1 = "94c540e1ff772956e2299507c010aea6c8838eb0";
+      };
+    }
+    {
+      name = "urix___urix_0.1.0.tgz";
+      path = fetchurl {
+        name = "urix___urix_0.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz";
+        sha1 = "da937f7a62e21fec1fd18d49b35c2935067a6c72";
+      };
+    }
+    {
+      name = "url_loader___url_loader_3.0.0.tgz";
+      path = fetchurl {
+        name = "url_loader___url_loader_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/url-loader/-/url-loader-3.0.0.tgz";
+        sha1 = "9f1f11b371acf6e51ed15a50db635e02eec18368";
+      };
+    }
+    {
+      name = "url_parse_lax___url_parse_lax_1.0.0.tgz";
+      path = fetchurl {
+        name = "url_parse_lax___url_parse_lax_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz";
+        sha1 = "7af8f303645e9bd79a272e7a14ac68bc0609da73";
+      };
+    }
+    {
+      name = "url_parse___url_parse_1.4.4.tgz";
+      path = fetchurl {
+        name = "url_parse___url_parse_1.4.4.tgz";
+        url  = "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.4.tgz";
+        sha1 = "cac1556e95faa0303691fec5cf9d5a1bc34648f8";
+      };
+    }
+    {
+      name = "url_search_params_polyfill___url_search_params_polyfill_5.1.0.tgz";
+      path = fetchurl {
+        name = "url_search_params_polyfill___url_search_params_polyfill_5.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/url-search-params-polyfill/-/url-search-params-polyfill-5.1.0.tgz";
+        sha1 = "f0405dcc2e921bf7f5fdf8c4e616f1e8088ef31b";
+      };
+    }
+    {
+      name = "url___url_0.10.3.tgz";
+      path = fetchurl {
+        name = "url___url_0.10.3.tgz";
+        url  = "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz";
+        sha1 = "021e4d9c7705f21bbf37d03ceb58767402774c64";
+      };
+    }
+    {
+      name = "url___url_0.11.0.tgz";
+      path = fetchurl {
+        name = "url___url_0.11.0.tgz";
+        url  = "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz";
+        sha1 = "3838e97cfc60521eb73c525a8e55bfdd9e2e28f1";
+      };
+    }
+    {
+      name = "use___use_3.1.1.tgz";
+      path = fetchurl {
+        name = "use___use_3.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz";
+        sha1 = "d50c8cac79a19fbc20f2911f56eb973f4e10070f";
+      };
+    }
+    {
+      name = "useragent___useragent_2.3.0.tgz";
+      path = fetchurl {
+        name = "useragent___useragent_2.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz";
+        sha1 = "217f943ad540cb2128658ab23fc960f6a88c9972";
+      };
+    }
+    {
+      name = "util_deprecate___util_deprecate_1.0.2.tgz";
+      path = fetchurl {
+        name = "util_deprecate___util_deprecate_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz";
+        sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
+      };
+    }
+    {
+      name = "util.promisify___util.promisify_1.0.0.tgz";
+      path = fetchurl {
+        name = "util.promisify___util.promisify_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz";
+        sha1 = "440f7165a459c9a16dc145eb8e72f35687097030";
+      };
+    }
+    {
+      name = "util___util_0.10.3.tgz";
+      path = fetchurl {
+        name = "util___util_0.10.3.tgz";
+        url  = "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz";
+        sha1 = "7afb1afe50805246489e3db7fe0ed379336ac0f9";
+      };
+    }
+    {
+      name = "util___util_0.11.1.tgz";
+      path = fetchurl {
+        name = "util___util_0.11.1.tgz";
+        url  = "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz";
+        sha1 = "3236733720ec64bb27f6e26f421aaa2e1b588d61";
+      };
+    }
+    {
+      name = "utils_merge___utils_merge_1.0.1.tgz";
+      path = fetchurl {
+        name = "utils_merge___utils_merge_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz";
+        sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
+      };
+    }
+    {
+      name = "uuid___uuid_3.3.2.tgz";
+      path = fetchurl {
+        name = "uuid___uuid_3.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz";
+        sha1 = "1b4af4955eb3077c501c23872fc6513811587131";
+      };
+    }
+    {
+      name = "v8_compile_cache___v8_compile_cache_2.0.3.tgz";
+      path = fetchurl {
+        name = "v8_compile_cache___v8_compile_cache_2.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz";
+        sha1 = "00f7494d2ae2b688cfe2899df6ed2c54bef91dbe";
+      };
+    }
+    {
+      name = "validate_npm_package_license___validate_npm_package_license_3.0.1.tgz";
+      path = fetchurl {
+        name = "validate_npm_package_license___validate_npm_package_license_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz";
+        sha1 = "2804babe712ad3379459acfbe24746ab2c303fbc";
+      };
+    }
+    {
+      name = "vary___vary_1.1.2.tgz";
+      path = fetchurl {
+        name = "vary___vary_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz";
+        sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc";
+      };
+    }
+    {
+      name = "verror___verror_1.10.0.tgz";
+      path = fetchurl {
+        name = "verror___verror_1.10.0.tgz";
+        url  = "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz";
+        sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
+      };
+    }
+    {
+      name = "vfile_location___vfile_location_2.0.4.tgz";
+      path = fetchurl {
+        name = "vfile_location___vfile_location_2.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.4.tgz";
+        sha1 = "2a5e7297dd0d9e2da4381464d04acc6b834d3e55";
+      };
+    }
+    {
+      name = "vfile_message___vfile_message_1.1.1.tgz";
+      path = fetchurl {
+        name = "vfile_message___vfile_message_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz";
+        sha1 = "5833ae078a1dfa2d96e9647886cd32993ab313e1";
+      };
+    }
+    {
+      name = "vfile___vfile_3.0.1.tgz";
+      path = fetchurl {
+        name = "vfile___vfile_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/vfile/-/vfile-3.0.1.tgz";
+        sha1 = "47331d2abe3282424f4a4bb6acd20a44c4121803";
+      };
+    }
+    {
+      name = "visibilityjs___visibilityjs_1.2.4.tgz";
+      path = fetchurl {
+        name = "visibilityjs___visibilityjs_1.2.4.tgz";
+        url  = "https://registry.yarnpkg.com/visibilityjs/-/visibilityjs-1.2.4.tgz";
+        sha1 = "bff8663da62c8c10ad4ee5ae6a1ae6fac4259d63";
+      };
+    }
+    {
+      name = "vm_browserify___vm_browserify_1.1.0.tgz";
+      path = fetchurl {
+        name = "vm_browserify___vm_browserify_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz";
+        sha1 = "bd76d6a23323e2ca8ffa12028dc04559c75f9019";
+      };
+    }
+    {
+      name = "void_elements___void_elements_2.0.1.tgz";
+      path = fetchurl {
+        name = "void_elements___void_elements_2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz";
+        sha1 = "c066afb582bb1cb4128d60ea92392e94d5e9dbec";
+      };
+    }
+    {
+      name = "vue_apollo___vue_apollo_3.0.3.tgz";
+      path = fetchurl {
+        name = "vue_apollo___vue_apollo_3.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/vue-apollo/-/vue-apollo-3.0.3.tgz";
+        sha1 = "7f29558df76eec0f03251847eef153816a261827";
+      };
+    }
+    {
+      name = "vue_eslint_parser___vue_eslint_parser_7.0.0.tgz";
+      path = fetchurl {
+        name = "vue_eslint_parser___vue_eslint_parser_7.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.0.0.tgz";
+        sha1 = "a4ed2669f87179dedd06afdd8736acbb3a3864d6";
+      };
+    }
+    {
+      name = "vue_functional_data_merge___vue_functional_data_merge_3.1.0.tgz";
+      path = fetchurl {
+        name = "vue_functional_data_merge___vue_functional_data_merge_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz";
+        sha1 = "08a7797583b7f35680587f8a1d51d729aa1dc657";
+      };
+    }
+    {
+      name = "vue_hot_reload_api___vue_hot_reload_api_2.3.0.tgz";
+      path = fetchurl {
+        name = "vue_hot_reload_api___vue_hot_reload_api_2.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.0.tgz";
+        sha1 = "97976142405d13d8efae154749e88c4e358cf926";
+      };
+    }
+    {
+      name = "vue_jest___vue_jest_4.0.0_beta.2.tgz";
+      path = fetchurl {
+        name = "vue_jest___vue_jest_4.0.0_beta.2.tgz";
+        url  = "https://registry.yarnpkg.com/vue-jest/-/vue-jest-4.0.0-beta.2.tgz";
+        sha1 = "f2120ea9d24224aad3a100c2010b0760d47ee6fe";
+      };
+    }
+    {
+      name = "vue_loader___vue_loader_15.9.0.tgz";
+      path = fetchurl {
+        name = "vue_loader___vue_loader_15.9.0.tgz";
+        url  = "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.0.tgz";
+        sha1 = "5d4b0378a4606188fc83e587ed23c94bc3a10998";
+      };
+    }
+    {
+      name = "vue_router___vue_router_3.0.2.tgz";
+      path = fetchurl {
+        name = "vue_router___vue_router_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/vue-router/-/vue-router-3.0.2.tgz";
+        sha1 = "dedc67afe6c4e2bc25682c8b1c2a8c0d7c7e56be";
+      };
+    }
+    {
+      name = "vue_runtime_helpers___vue_runtime_helpers_1.1.2.tgz";
+      path = fetchurl {
+        name = "vue_runtime_helpers___vue_runtime_helpers_1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/vue-runtime-helpers/-/vue-runtime-helpers-1.1.2.tgz";
+        sha1 = "446b7b820888ab0c5264d2c3a32468e72e4100f3";
+      };
+    }
+    {
+      name = "vue_style_loader___vue_style_loader_4.1.0.tgz";
+      path = fetchurl {
+        name = "vue_style_loader___vue_style_loader_4.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.0.tgz";
+        sha1 = "7588bd778e2c9f8d87bfc3c5a4a039638da7a863";
+      };
+    }
+    {
+      name = "vue_template_compiler___vue_template_compiler_2.6.10.tgz";
+      path = fetchurl {
+        name = "vue_template_compiler___vue_template_compiler_2.6.10.tgz";
+        url  = "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz";
+        sha1 = "323b4f3495f04faa3503337a82f5d6507799c9cc";
+      };
+    }
+    {
+      name = "vue_template_es2015_compiler___vue_template_es2015_compiler_1.9.1.tgz";
+      path = fetchurl {
+        name = "vue_template_es2015_compiler___vue_template_es2015_compiler_1.9.1.tgz";
+        url  = "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz";
+        sha1 = "1ee3bc9a16ecbf5118be334bb15f9c46f82f5825";
+      };
+    }
+    {
+      name = "vue_virtual_scroll_list___vue_virtual_scroll_list_1.4.4.tgz";
+      path = fetchurl {
+        name = "vue_virtual_scroll_list___vue_virtual_scroll_list_1.4.4.tgz";
+        url  = "https://registry.yarnpkg.com/vue-virtual-scroll-list/-/vue-virtual-scroll-list-1.4.4.tgz";
+        sha1 = "5fca7a13f785899bbfb70471ec4fe222437d8495";
+      };
+    }
+    {
+      name = "vue___vue_2.6.10.tgz";
+      path = fetchurl {
+        name = "vue___vue_2.6.10.tgz";
+        url  = "https://registry.yarnpkg.com/vue/-/vue-2.6.10.tgz";
+        sha1 = "a72b1a42a4d82a721ea438d1b6bf55e66195c637";
+      };
+    }
+    {
+      name = "vuedraggable___vuedraggable_2.23.0.tgz";
+      path = fetchurl {
+        name = "vuedraggable___vuedraggable_2.23.0.tgz";
+        url  = "https://registry.yarnpkg.com/vuedraggable/-/vuedraggable-2.23.0.tgz";
+        sha1 = "1f4a5a601675a5dbf0d96ee61aebfffa43445262";
+      };
+    }
+    {
+      name = "vuex___vuex_3.1.0.tgz";
+      path = fetchurl {
+        name = "vuex___vuex_3.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/vuex/-/vuex-3.1.0.tgz";
+        sha1 = "634b81515cf0cfe976bd1ffe9601755e51f843b9";
+      };
+    }
+    {
+      name = "w3c_hr_time___w3c_hr_time_1.0.1.tgz";
+      path = fetchurl {
+        name = "w3c_hr_time___w3c_hr_time_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz";
+        sha1 = "82ac2bff63d950ea9e3189a58a65625fedf19045";
+      };
+    }
+    {
+      name = "w3c_keyname___w3c_keyname_1.1.8.tgz";
+      path = fetchurl {
+        name = "w3c_keyname___w3c_keyname_1.1.8.tgz";
+        url  = "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-1.1.8.tgz";
+        sha1 = "4e2219663760fd6535b7a1550f1552d71fc9372c";
+      };
+    }
+    {
+      name = "walker___walker_1.0.7.tgz";
+      path = fetchurl {
+        name = "walker___walker_1.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz";
+        sha1 = "2f7f9b8fd10d677262b18a884e28d19618e028fb";
+      };
+    }
+    {
+      name = "watchpack___watchpack_1.6.0.tgz";
+      path = fetchurl {
+        name = "watchpack___watchpack_1.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz";
+        sha1 = "4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00";
+      };
+    }
+    {
+      name = "wbuf___wbuf_1.7.3.tgz";
+      path = fetchurl {
+        name = "wbuf___wbuf_1.7.3.tgz";
+        url  = "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz";
+        sha1 = "c1d8d149316d3ea852848895cb6a0bfe887b87df";
+      };
+    }
+    {
+      name = "webidl_conversions___webidl_conversions_4.0.2.tgz";
+      path = fetchurl {
+        name = "webidl_conversions___webidl_conversions_4.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz";
+        sha1 = "a855980b1f0b6b359ba1d5d9fb39ae941faa63ad";
+      };
+    }
+    {
+      name = "webpack_bundle_analyzer___webpack_bundle_analyzer_3.6.0.tgz";
+      path = fetchurl {
+        name = "webpack_bundle_analyzer___webpack_bundle_analyzer_3.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.0.tgz";
+        sha1 = "39b3a8f829ca044682bc6f9e011c95deb554aefd";
+      };
+    }
+    {
+      name = "webpack_cli___webpack_cli_3.3.11.tgz";
+      path = fetchurl {
+        name = "webpack_cli___webpack_cli_3.3.11.tgz";
+        url  = "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.11.tgz";
+        sha1 = "3bf21889bf597b5d82c38f215135a411edfdc631";
+      };
+    }
+    {
+      name = "webpack_dev_middleware___webpack_dev_middleware_3.7.2.tgz";
+      path = fetchurl {
+        name = "webpack_dev_middleware___webpack_dev_middleware_3.7.2.tgz";
+        url  = "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz";
+        sha1 = "0019c3db716e3fa5cecbf64f2ab88a74bab331f3";
+      };
+    }
+    {
+      name = "webpack_dev_server___webpack_dev_server_3.10.3.tgz";
+      path = fetchurl {
+        name = "webpack_dev_server___webpack_dev_server_3.10.3.tgz";
+        url  = "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz";
+        sha1 = "f35945036813e57ef582c2420ef7b470e14d3af0";
+      };
+    }
+    {
+      name = "webpack_log___webpack_log_2.0.0.tgz";
+      path = fetchurl {
+        name = "webpack_log___webpack_log_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz";
+        sha1 = "5b7928e0637593f119d32f6227c1e0ac31e1b47f";
+      };
+    }
+    {
+      name = "webpack_sources___webpack_sources_1.4.3.tgz";
+      path = fetchurl {
+        name = "webpack_sources___webpack_sources_1.4.3.tgz";
+        url  = "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz";
+        sha1 = "eedd8ec0b928fbf1cbfe994e22d2d890f330a933";
+      };
+    }
+    {
+      name = "webpack_stats_plugin___webpack_stats_plugin_0.3.1.tgz";
+      path = fetchurl {
+        name = "webpack_stats_plugin___webpack_stats_plugin_0.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/webpack-stats-plugin/-/webpack-stats-plugin-0.3.1.tgz";
+        sha1 = "1103c39a305a4e6ba15d5078db84bc0b35447417";
+      };
+    }
+    {
+      name = "webpack___webpack_4.42.0.tgz";
+      path = fetchurl {
+        name = "webpack___webpack_4.42.0.tgz";
+        url  = "https://registry.yarnpkg.com/webpack/-/webpack-4.42.0.tgz";
+        sha1 = "b901635dd6179391d90740a63c93f76f39883eb8";
+      };
+    }
+    {
+      name = "websocket_driver___websocket_driver_0.6.5.tgz";
+      path = fetchurl {
+        name = "websocket_driver___websocket_driver_0.6.5.tgz";
+        url  = "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz";
+        sha1 = "5cb2556ceb85f4373c6d8238aa691c8454e13a36";
+      };
+    }
+    {
+      name = "websocket_extensions___websocket_extensions_0.1.1.tgz";
+      path = fetchurl {
+        name = "websocket_extensions___websocket_extensions_0.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz";
+        sha1 = "76899499c184b6ef754377c2dbb0cd6cb55d29e7";
+      };
+    }
+    {
+      name = "whatwg_encoding___whatwg_encoding_1.0.5.tgz";
+      path = fetchurl {
+        name = "whatwg_encoding___whatwg_encoding_1.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz";
+        sha1 = "5abacf777c32166a51d085d6b4f3e7d27113ddb0";
+      };
+    }
+    {
+      name = "whatwg_mimetype___whatwg_mimetype_2.3.0.tgz";
+      path = fetchurl {
+        name = "whatwg_mimetype___whatwg_mimetype_2.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz";
+        sha1 = "3d4b1e0312d2079879f826aff18dbeeca5960fbf";
+      };
+    }
+    {
+      name = "whatwg_url___whatwg_url_6.5.0.tgz";
+      path = fetchurl {
+        name = "whatwg_url___whatwg_url_6.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz";
+        sha1 = "f2df02bff176fd65070df74ad5ccbb5a199965a8";
+      };
+    }
+    {
+      name = "whatwg_url___whatwg_url_7.0.0.tgz";
+      path = fetchurl {
+        name = "whatwg_url___whatwg_url_7.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz";
+        sha1 = "fde926fa54a599f3adf82dff25a9f7be02dc6edd";
+      };
+    }
+    {
+      name = "which_module___which_module_1.0.0.tgz";
+      path = fetchurl {
+        name = "which_module___which_module_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz";
+        sha1 = "bba63ca861948994ff307736089e3b96026c2a4f";
+      };
+    }
+    {
+      name = "which_module___which_module_2.0.0.tgz";
+      path = fetchurl {
+        name = "which_module___which_module_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz";
+        sha1 = "d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a";
+      };
+    }
+    {
+      name = "which___which_1.3.1.tgz";
+      path = fetchurl {
+        name = "which___which_1.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz";
+        sha1 = "a45043d54f5805316da8d62f9f50918d3da70b0a";
+      };
+    }
+    {
+      name = "wide_align___wide_align_1.1.3.tgz";
+      path = fetchurl {
+        name = "wide_align___wide_align_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz";
+        sha1 = "ae074e6bdc0c14a431e804e624549c633b000457";
+      };
+    }
+    {
+      name = "widest_line___widest_line_2.0.0.tgz";
+      path = fetchurl {
+        name = "widest_line___widest_line_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz";
+        sha1 = "0142a4e8a243f8882c0233aa0e0281aa76152273";
+      };
+    }
+    {
+      name = "word_wrap___word_wrap_1.2.3.tgz";
+      path = fetchurl {
+        name = "word_wrap___word_wrap_1.2.3.tgz";
+        url  = "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz";
+        sha1 = "610636f6b1f703891bd34771ccb17fb93b47079c";
+      };
+    }
+    {
+      name = "wordwrap___wordwrap_0.0.3.tgz";
+      path = fetchurl {
+        name = "wordwrap___wordwrap_0.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz";
+        sha1 = "a3d5da6cd5c0bc0008d37234bbaf1bed63059107";
+      };
+    }
+    {
+      name = "worker_farm___worker_farm_1.7.0.tgz";
+      path = fetchurl {
+        name = "worker_farm___worker_farm_1.7.0.tgz";
+        url  = "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz";
+        sha1 = "26a94c5391bbca926152002f69b84a4bf772e5a8";
+      };
+    }
+    {
+      name = "worker_loader___worker_loader_2.0.0.tgz";
+      path = fetchurl {
+        name = "worker_loader___worker_loader_2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/worker-loader/-/worker-loader-2.0.0.tgz";
+        sha1 = "45fda3ef76aca815771a89107399ee4119b430ac";
+      };
+    }
+    {
+      name = "wrap_ansi___wrap_ansi_2.1.0.tgz";
+      path = fetchurl {
+        name = "wrap_ansi___wrap_ansi_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz";
+        sha1 = "d8fc3d284dd05794fe84973caecdd1cf824fdd85";
+      };
+    }
+    {
+      name = "wrap_ansi___wrap_ansi_5.1.0.tgz";
+      path = fetchurl {
+        name = "wrap_ansi___wrap_ansi_5.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz";
+        sha1 = "1fd1f67235d5b6d0fee781056001bfb694c03b09";
+      };
+    }
+    {
+      name = "wrappy___wrappy_1.0.2.tgz";
+      path = fetchurl {
+        name = "wrappy___wrappy_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz";
+        sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
+      };
+    }
+    {
+      name = "write_file_atomic___write_file_atomic_2.4.1.tgz";
+      path = fetchurl {
+        name = "write_file_atomic___write_file_atomic_2.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz";
+        sha1 = "d0b05463c188ae804396fd5ab2a370062af87529";
+      };
+    }
+    {
+      name = "write___write_1.0.3.tgz";
+      path = fetchurl {
+        name = "write___write_1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz";
+        sha1 = "0800e14523b923a387e415123c865616aae0f5c3";
+      };
+    }
+    {
+      name = "ws___ws_5.2.2.tgz";
+      path = fetchurl {
+        name = "ws___ws_5.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz";
+        sha1 = "dffef14866b8e8dc9133582514d1befaf96e980f";
+      };
+    }
+    {
+      name = "ws___ws_6.2.1.tgz";
+      path = fetchurl {
+        name = "ws___ws_6.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz";
+        sha1 = "442fdf0a47ed64f59b6a5d8ff130f4748ed524fb";
+      };
+    }
+    {
+      name = "ws___ws_3.3.3.tgz";
+      path = fetchurl {
+        name = "ws___ws_3.3.3.tgz";
+        url  = "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz";
+        sha1 = "f1cf84fe2d5e901ebce94efaece785f187a228f2";
+      };
+    }
+    {
+      name = "x_is_string___x_is_string_0.1.0.tgz";
+      path = fetchurl {
+        name = "x_is_string___x_is_string_0.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz";
+        sha1 = "474b50865af3a49a9c4657f05acd145458f77d82";
+      };
+    }
+    {
+      name = "xdg_basedir___xdg_basedir_3.0.0.tgz";
+      path = fetchurl {
+        name = "xdg_basedir___xdg_basedir_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz";
+        sha1 = "496b2cc109eca8dbacfe2dc72b603c17c5870ad4";
+      };
+    }
+    {
+      name = "xml_name_validator___xml_name_validator_3.0.0.tgz";
+      path = fetchurl {
+        name = "xml_name_validator___xml_name_validator_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz";
+        sha1 = "6ae73e06de4d8c6e47f9fb181f78d648ad457c6a";
+      };
+    }
+    {
+      name = "xml2js___xml2js_0.4.19.tgz";
+      path = fetchurl {
+        name = "xml2js___xml2js_0.4.19.tgz";
+        url  = "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz";
+        sha1 = "686c20f213209e94abf0d1bcf1efaa291c7827a7";
+      };
+    }
+    {
+      name = "xml___xml_1.0.1.tgz";
+      path = fetchurl {
+        name = "xml___xml_1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz";
+        sha1 = "78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5";
+      };
+    }
+    {
+      name = "xmlbuilder___xmlbuilder_8.2.2.tgz";
+      path = fetchurl {
+        name = "xmlbuilder___xmlbuilder_8.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-8.2.2.tgz";
+        sha1 = "69248673410b4ba42e1a6136551d2922335aa773";
+      };
+    }
+    {
+      name = "xmlbuilder___xmlbuilder_9.0.7.tgz";
+      path = fetchurl {
+        name = "xmlbuilder___xmlbuilder_9.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz";
+        sha1 = "132ee63d2ec5565c557e20f4c22df9aca686b10d";
+      };
+    }
+    {
+      name = "xmlcreate___xmlcreate_1.0.2.tgz";
+      path = fetchurl {
+        name = "xmlcreate___xmlcreate_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-1.0.2.tgz";
+        sha1 = "fa6bf762a60a413fb3dd8f4b03c5b269238d308f";
+      };
+    }
+    {
+      name = "xmlhttprequest_ssl___xmlhttprequest_ssl_1.5.5.tgz";
+      path = fetchurl {
+        name = "xmlhttprequest_ssl___xmlhttprequest_ssl_1.5.5.tgz";
+        url  = "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz";
+        sha1 = "c2876b06168aadc40e57d97e81191ac8f4398b3e";
+      };
+    }
+    {
+      name = "xtend___xtend_4.0.2.tgz";
+      path = fetchurl {
+        name = "xtend___xtend_4.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz";
+        sha1 = "bb72779f5fa465186b1f438f674fa347fdb5db54";
+      };
+    }
+    {
+      name = "xterm___xterm_3.5.0.tgz";
+      path = fetchurl {
+        name = "xterm___xterm_3.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/xterm/-/xterm-3.5.0.tgz";
+        sha1 = "ba3f464bc5730c9d259ebe62131862224db9ddcc";
+      };
+    }
+    {
+      name = "y18n___y18n_3.2.1.tgz";
+      path = fetchurl {
+        name = "y18n___y18n_3.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz";
+        sha1 = "6d15fba884c08679c0d77e88e7759e811e07fa41";
+      };
+    }
+    {
+      name = "y18n___y18n_4.0.0.tgz";
+      path = fetchurl {
+        name = "y18n___y18n_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz";
+        sha1 = "95ef94f85ecc81d007c264e190a120f0a3c8566b";
+      };
+    }
+    {
+      name = "yallist___yallist_2.1.2.tgz";
+      path = fetchurl {
+        name = "yallist___yallist_2.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz";
+        sha1 = "1c11f9218f076089a47dd512f93c6699a6a81d52";
+      };
+    }
+    {
+      name = "yallist___yallist_3.0.3.tgz";
+      path = fetchurl {
+        name = "yallist___yallist_3.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz";
+        sha1 = "b4b049e314be545e3ce802236d6cd22cd91c3de9";
+      };
+    }
+    {
+      name = "yallist___yallist_4.0.0.tgz";
+      path = fetchurl {
+        name = "yallist___yallist_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz";
+        sha1 = "9bb92790d9c0effec63be73519e11a35019a3a72";
+      };
+    }
+    {
+      name = "yargs_parser___yargs_parser_10.1.0.tgz";
+      path = fetchurl {
+        name = "yargs_parser___yargs_parser_10.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz";
+        sha1 = "7202265b89f7e9e9f2e5765e0fe735a905edbaa8";
+      };
+    }
+    {
+      name = "yargs_parser___yargs_parser_11.1.1.tgz";
+      path = fetchurl {
+        name = "yargs_parser___yargs_parser_11.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz";
+        sha1 = "879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4";
+      };
+    }
+    {
+      name = "yargs_parser___yargs_parser_13.1.1.tgz";
+      path = fetchurl {
+        name = "yargs_parser___yargs_parser_13.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz";
+        sha1 = "d26058532aa06d365fe091f6a1fc06b2f7e5eca0";
+      };
+    }
+    {
+      name = "yargs_parser___yargs_parser_5.0.0.tgz";
+      path = fetchurl {
+        name = "yargs_parser___yargs_parser_5.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz";
+        sha1 = "275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a";
+      };
+    }
+    {
+      name = "yargs___yargs_12.0.5.tgz";
+      path = fetchurl {
+        name = "yargs___yargs_12.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz";
+        sha1 = "05f5997b609647b64f66b81e3b4b10a368e7ad13";
+      };
+    }
+    {
+      name = "yargs___yargs_13.2.4.tgz";
+      path = fetchurl {
+        name = "yargs___yargs_13.2.4.tgz";
+        url  = "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz";
+        sha1 = "0b562b794016eb9651b98bd37acf364aa5d6dc83";
+      };
+    }
+    {
+      name = "yargs___yargs_7.1.0.tgz";
+      path = fetchurl {
+        name = "yargs___yargs_7.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz";
+        sha1 = "6ba318eb16961727f5d284f8ea003e8d6154d0c8";
+      };
+    }
+    {
+      name = "yarn_check_webpack_plugin___yarn_check_webpack_plugin_1.2.0.tgz";
+      path = fetchurl {
+        name = "yarn_check_webpack_plugin___yarn_check_webpack_plugin_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/yarn-check-webpack-plugin/-/yarn-check-webpack-plugin-1.2.0.tgz";
+        sha1 = "0eb00cdcdb430f0494222a3eab1d2832737840cc";
+      };
+    }
+    {
+      name = "yarn_deduplicate___yarn_deduplicate_1.1.1.tgz";
+      path = fetchurl {
+        name = "yarn_deduplicate___yarn_deduplicate_1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/yarn-deduplicate/-/yarn-deduplicate-1.1.1.tgz";
+        sha1 = "19b4a87654b66f55bf3a4bd6b153b4e4ab1b6e6d";
+      };
+    }
+    {
+      name = "yeast___yeast_0.1.2.tgz";
+      path = fetchurl {
+        name = "yeast___yeast_0.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz";
+        sha1 = "008e06d8094320c372dbc2f8ed76a0ca6c8ac419";
+      };
+    }
+    {
+      name = "zen_observable_ts___zen_observable_ts_0.8.18.tgz";
+      path = fetchurl {
+        name = "zen_observable_ts___zen_observable_ts_0.8.18.tgz";
+        url  = "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.18.tgz";
+        sha1 = "ade44b1060cc4a800627856ec10b9c67f5f639c8";
+      };
+    }
+    {
+      name = "zen_observable___zen_observable_0.8.11.tgz";
+      path = fetchurl {
+        name = "zen_observable___zen_observable_0.8.11.tgz";
+        url  = "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.11.tgz";
+        sha1 = "d3415885eeeb42ee5abb9821c95bb518fcd6d199";
+      };
+    }
+    {
+      name = "zrender___zrender_4.2.0.tgz";
+      path = fetchurl {
+        name = "zrender___zrender_4.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/zrender/-/zrender-4.2.0.tgz";
+        sha1 = "d001302e155f28de1f9fc7fcd5c254bad28471cf";
+      };
+    }
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/version-management/gitless/default.nix b/nixpkgs/pkgs/applications/version-management/gitless/default.nix
new file mode 100644
index 000000000000..0cead50f0326
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitless/default.nix
@@ -0,0 +1,27 @@
+{ fetchFromGitHub, python, stdenv }:
+
+with python.pkgs;
+buildPythonApplication rec {
+  pname = "gitless";
+  version = "0.8.8";
+
+  src = fetchFromGitHub {
+    owner = "sdg-mit";
+    repo = "gitless";
+    rev = "v${version}";
+    sha256 = "1q6y38f8ap6q1livvfy0pfnjr0l8b68hyhc9r5v87fmdyl7y7y8g";
+  };
+
+  propagatedBuildInputs = with pythonPackages; [ sh pygit2 clint ];
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = "https://gitless.com/";
+    description = "A version control system built on top of Git";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = [ maintainers.cransom ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/version-management/gitolite/default.nix b/nixpkgs/pkgs/applications/version-management/gitolite/default.nix
new file mode 100644
index 000000000000..60fed6954dc5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitolite/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchFromGitHub, git, lib, makeWrapper, nettools, perl }:
+
+stdenv.mkDerivation rec {
+  pname = "gitolite";
+  version = "3.6.11";
+
+  src = fetchFromGitHub {
+    owner = "sitaramc";
+    repo = "gitolite";
+    rev = "v${version}";
+    sha256 = "1rkj7gknwjlc5ij9w39zf5mr647bm45la57yjczydmvrb8c56yrh";
+  };
+
+  buildInputs = [ nettools perl ];
+  nativeBuildInputs = [ makeWrapper ];
+  propagatedBuildInputs = [ git ];
+
+  dontBuild = true;
+
+  postPatch = ''
+    substituteInPlace ./install --replace " 2>/dev/null" ""
+    substituteInPlace src/lib/Gitolite/Hooks/PostUpdate.pm \
+      --replace /usr/bin/perl "${perl}/bin/perl"
+    substituteInPlace src/lib/Gitolite/Hooks/Update.pm \
+      --replace /usr/bin/perl "${perl}/bin/perl"
+    substituteInPlace src/lib/Gitolite/Setup.pm \
+      --replace hostname "${nettools}/bin/hostname"
+  '';
+
+  postFixup = ''
+    wrapProgram $out/bin/gitolite-shell \
+      --prefix PATH : "${git}/bin"
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    perl ./install -to $out/bin
+    echo ${version} > $out/bin/VERSION
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Finely-grained git repository hosting";
+    homepage    = "https://gitolite.com/gitolite/index.html";
+    license     = licenses.gpl2;
+    platforms   = platforms.unix;
+    maintainers = [ maintainers.thoughtpolice maintainers.lassulus maintainers.tomberek ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/gitstats/default.nix b/nixpkgs/pkgs/applications/version-management/gitstats/default.nix
new file mode 100644
index 000000000000..b7432385a232
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gitstats/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchzip, perl, python, gnuplot, coreutils, gnugrep }:
+
+stdenv.mkDerivation rec {
+  pname = "gitstats";
+  version = "2016-01-08";
+
+  # upstream does not make releases
+  src = fetchzip {
+    url = "https://github.com/hoxu/gitstats/archive/55c5c285558c410bb35ebf421245d320ab9ee9fa.zip";
+    sha256 = "1bfcwhksylrpm88vyp33qjby4js31zcxy7w368dzjv4il3fh2i59";
+    name = "${pname}-${version}" + "-src";
+  };
+
+  buildInputs = [ perl python ];
+
+  postPatch = ''
+    sed -e "s|gnuplot_cmd = .*|gnuplot_cmd = '${gnuplot}/bin/gnuplot'|" \
+        -e "s|\<wc\>|${coreutils}/bin/wc|g" \
+        -e "s|\<grep\>|${gnugrep}/bin/grep|g" \
+        -i gitstats
+  '';
+
+  buildPhase = ''
+    make man VERSION="${version}"
+  '';
+
+  installPhase = ''
+    make install PREFIX="$out" VERSION="${version}"
+    install -Dm644 doc/gitstats.1 "$out"/share/man/man1/gitstats.1
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://gitstats.sourceforge.net/";
+    description = "Git history statistics generator";
+    license = licenses.gpl2Plus;
+    platforms = platforms.all;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/gogs/default.nix b/nixpkgs/pkgs/applications/version-management/gogs/default.nix
new file mode 100644
index 000000000000..48667ad8be39
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gogs/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, makeWrapper
+, git, bash, gzip, openssh, pam
+, sqliteSupport ? true
+, pamSupport ? true
+}:
+
+with stdenv.lib;
+
+buildGoPackage rec {
+  pname = "gogs";
+  version = "0.11.91";
+
+  src = fetchFromGitHub {
+    owner = "gogs";
+    repo = "gogs";
+    rev = "v${version}";
+    sha256 = "1yfimgjg9n773kdml17119539w9736mi66bivpv5yp3cj2hj9mlj";
+  };
+
+  patches = [ ./static-root-path.patch ];
+
+  postPatch = ''
+    patchShebangs .
+    substituteInPlace pkg/setting/setting.go --subst-var data
+  '';
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildInputs = optional pamSupport pam;
+
+  buildFlags = [ "-tags" ];
+
+  buildFlagsArray =
+    (  optional sqliteSupport "sqlite"
+    ++ optional pamSupport "pam");
+
+  outputs = [ "out" "data" ];
+
+  postInstall = ''
+    mkdir $data
+    cp -R $src/{public,templates} $data
+
+    wrapProgram $out/bin/gogs \
+      --prefix PATH : ${makeBinPath [ bash git gzip openssh ]}
+  '';
+
+  goPackagePath = "github.com/gogs/gogs";
+
+  meta = {
+    description = "A painless self-hosted Git service";
+    homepage = "https://gogs.io";
+    license = licenses.mit;
+    maintainers = [ maintainers.schneefux ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/gogs/static-root-path.patch b/nixpkgs/pkgs/applications/version-management/gogs/static-root-path.patch
new file mode 100644
index 000000000000..9eaa72a0c85d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gogs/static-root-path.patch
@@ -0,0 +1,13 @@
+diff --git a/pkg/setting/setting.go b/pkg/setting/setting.go
+index f206592d..796da6ef 100644
+--- a/pkg/setting/setting.go
++++ b/pkg/setting/setting.go
+@@ -474,7 +474,7 @@ func NewContext() {
+ 	LocalURL = sec.Key("LOCAL_ROOT_URL").MustString(string(Protocol) + "://localhost:" + HTTPPort + "/")
+ 	OfflineMode = sec.Key("OFFLINE_MODE").MustBool()
+ 	DisableRouterLog = sec.Key("DISABLE_ROUTER_LOG").MustBool()
+-	StaticRootPath = sec.Key("STATIC_ROOT_PATH").MustString(workDir)
++	StaticRootPath = sec.Key("STATIC_ROOT_PATH").MustString("@data@")
+ 	AppDataPath = sec.Key("APP_DATA_PATH").MustString("data")
+ 	EnableGzip = sec.Key("ENABLE_GZIP").MustBool()
+ 
diff --git a/nixpkgs/pkgs/applications/version-management/gource/default.nix b/nixpkgs/pkgs/applications/version-management/gource/default.nix
new file mode 100644
index 000000000000..683ad8711bf0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/gource/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, SDL2, ftgl, pkgconfig, libpng, libjpeg, pcre
+, SDL2_image, freetype, glew, libGLU, libGL, boost, glm
+}:
+
+stdenv.mkDerivation rec {
+  version = "0.51";
+  pname = "gource";
+
+  src = fetchurl {
+    url = "https://github.com/acaudwell/Gource/releases/download/${pname}-${version}/${pname}-${version}.tar.gz";
+    sha256 = "16p7b1x4r0915w883lp374jcdqqja37fnb7m8vnsfnl2n64gi8qr";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    glew SDL2 ftgl libpng libjpeg pcre SDL2_image libGLU libGL
+    boost glm freetype
+  ];
+
+  configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://gource.io/";
+    description = "A Software version control visualization tool";
+    license = licenses.gpl3Plus;
+    longDescription = ''
+      Software projects are displayed by Gource as an animated tree with
+      the root directory of the project at its centre. Directories
+      appear as branches with files as leaves. Developers can be seen
+      working on the tree at the times they contributed to the project.
+
+      Currently Gource includes built-in log generation support for Git,
+      Mercurial and Bazaar and SVN. Gource can also parse logs produced
+      by several third party tools for CVS repositories.
+    '';
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ pSub ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/guitone/default.nix b/nixpkgs/pkgs/applications/version-management/guitone/default.nix
new file mode 100644
index 000000000000..1ff1030150f3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/guitone/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchmtn, qt4, qmake4Hook, pkgconfig, graphviz }:
+
+let version = "1.0-mtn-head"; in
+stdenv.mkDerivation {
+  pname = "guitone";
+  inherit version;
+
+  #src = fetchurl {
+  #  url = "${meta.homepage}/count.php/from=default/${version}/${name}.tgz";
+  #  sha256 = "08kcyar6p6v5z4dq6q6c1dhyxc2jj49qcd6lj3rdn1rb9hz4n7ms";
+  #};
+
+  src = fetchmtn {
+    dbs = ["mtn://code.monotone.ca/guitone"];
+    selector = "3a728afdbd3943b1d86c2a249b1e2ede7bf64c27";
+    sha256 = "01vs8m00phs5pl75mjkpdarynfpkqrg0qf4rsn95czi3q6nxiaq5";
+    branch = "net.venge.monotone.guitone";
+  };
+
+  patches = [ ./parallel-building.patch ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ qt4 qmake4Hook graphviz ];
+
+  qmakeFlags = [ "guitone.pro" ];
+
+  meta = {
+    description = "Qt4 based GUI for monotone";
+    homepage = "https://guitone.thomaskeller.biz";
+    downloadPage = "https://code.monotone.ca/p/guitone/";
+    license = stdenv.lib.licenses.gpl3;
+    inherit (qt4.meta) platforms;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/guitone/parallel-building.patch b/nixpkgs/pkgs/applications/version-management/guitone/parallel-building.patch
new file mode 100644
index 000000000000..f0e924cbfb81
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/guitone/parallel-building.patch
@@ -0,0 +1,7 @@
+Without this `make tmp/AttributesView.o` fails with
+src/view/dialogs/AddEditAttribute.h:22:35: fatal error: ui_add_edit_attribute.h: No such file or directory
+--- a/guitone.pro
++++ b/guitone.pro
+@@ -215 +215,2 @@ help.commands = @echo Available targets: $${QMAKE_EXTRA_TARGETS}
+ QMAKE_EXTRA_TARGETS += help
++CONFIG += depend_includepath
diff --git a/nixpkgs/pkgs/applications/version-management/meld/default.nix b/nixpkgs/pkgs/applications/version-management/meld/default.nix
new file mode 100644
index 000000000000..3c46db6352e8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/meld/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, fetchurl, itstool, python3, intltool, wrapGAppsHook
+, libxml2, gobject-introspection, gtk3, gtksourceview, gnome3
+, gsettings-desktop-schemas, dbus, xvfb_run
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "meld";
+  version = "3.20.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "0a0x156zr3w2yg0rnhwy39giy3xnfm6sqcfa4xcw4i6ahvwqa2dc";
+  };
+
+  nativeBuildInputs = [
+    intltool itstool libxml2 gobject-introspection wrapGAppsHook
+  ];
+  buildInputs = [
+    gtk3 gtksourceview gsettings-desktop-schemas gnome3.adwaita-icon-theme
+    gobject-introspection # fixes https://github.com/NixOS/nixpkgs/issues/56943 for now
+  ];
+  propagatedBuildInputs = with python3.pkgs; [ pygobject3 pycairo ];
+  checkInputs = [ xvfb_run python3.pkgs.pytest dbus gtksourceview gtk3 ];
+
+  installPhase = ''
+    runHook preInstall
+    ${python3.interpreter} setup.py install --prefix=$out
+    runHook postInstall
+  '';
+
+  checkPhase = ''
+    runHook preCheck
+
+    # Unable to create user data directory '/homeless-shelter/.local/share' for storing the recently used files list: Permission denied
+    mkdir test-home
+    export HOME=$(pwd)/test-home
+
+    # GLib.GError: gtk-icon-theme-error-quark: Icon 'meld-change-apply-right' not present in theme Adwaita
+    export XDG_DATA_DIRS="$out/share:$XDG_DATA_DIRS"
+
+    # ModuleNotFoundError: No module named 'meld'
+    export PYTHONPATH=$out/${python3.sitePackages}:$PYTHONPATH
+
+    # Gtk-CRITICAL **: gtk_icon_theme_get_for_screen: assertion 'GDK_IS_SCREEN (screen)' failed
+    xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
+      --config-file=${dbus.daemon}/share/dbus-1/session.conf \
+      py.test
+
+    runHook postCheck
+  '';
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Visual diff and merge tool";
+    homepage = "http://meldmerge.org/";
+    license = licenses.gpl2;
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = with maintainers; [ jtojnar mimame ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/mercurial/4.9.nix b/nixpkgs/pkgs/applications/version-management/mercurial/4.9.nix
new file mode 100644
index 000000000000..f0918ab69a62
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/mercurial/4.9.nix
@@ -0,0 +1,71 @@
+{ stdenv, fetchurl, python2Packages, makeWrapper, unzip
+, guiSupport ? false, tk ? null
+, ApplicationServices
+, mercurialSrc ? fetchurl rec {
+    meta.name = "mercurial-${meta.version}";
+    meta.version = "4.9.1";
+    url = "https://mercurial-scm.org/release/${meta.name}.tar.gz";
+    sha256 = "0iybbkd9add066729zg01kwz5hhc1s6lhp9rrnsmzq6ihyxj3p8v";
+  }
+}:
+
+let
+  inherit (python2Packages) docutils hg-git dulwich python;
+
+in python2Packages.buildPythonApplication {
+
+  inherit (mercurialSrc.meta) name version;
+  src = mercurialSrc;
+
+  format = "other";
+
+  inherit python; # pass it so that the same version can be used in hg2git
+
+  buildInputs = [ makeWrapper docutils unzip ]
+    ++ stdenv.lib.optionals stdenv.isDarwin [ ApplicationServices ];
+
+  propagatedBuildInputs = [ hg-git dulwich ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  postInstall = (stdenv.lib.optionalString guiSupport
+    ''
+      mkdir -p $out/etc/mercurial
+      cp contrib/hgk $out/bin
+      cat >> $out/etc/mercurial/hgrc << EOF
+      [extensions]
+      hgk=$out/lib/${python.libPrefix}/site-packages/hgext/hgk.py
+      EOF
+      # setting HG so that hgk can be run itself as well (not only hg view)
+      WRAP_TK=" --set TK_LIBRARY ${tk}/lib/${tk.libPrefix}
+                --set HG $out/bin/hg
+                --prefix PATH : ${tk}/bin "
+    '') +
+    ''
+      for i in $(cd $out/bin && ls); do
+        wrapProgram $out/bin/$i \
+          $WRAP_TK
+      done
+
+      # copy hgweb.cgi to allow use in apache
+      mkdir -p $out/share/cgi-bin
+      cp -v hgweb.cgi contrib/hgweb.wsgi $out/share/cgi-bin
+      chmod u+x $out/share/cgi-bin/hgweb.cgi
+
+      # install bash/zsh completions
+      install -v -m644 -D contrib/bash_completion $out/share/bash-completion/completions/_hg
+      install -v -m644 -D contrib/zsh_completion $out/share/zsh/site-functions/_hg
+    '';
+
+  meta = {
+    inherit (mercurialSrc.meta) version;
+    description = "A fast, lightweight SCM system for very large distributed projects";
+    homepage = "https://www.mercurial-scm.org";
+    downloadPage = "https://www.mercurial-scm.org/release/";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.eraserhd ];
+    updateWalker = true;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/version-management/mercurial/default.nix b/nixpkgs/pkgs/applications/version-management/mercurial/default.nix
new file mode 100644
index 000000000000..47453cb5e6fe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/mercurial/default.nix
@@ -0,0 +1,66 @@
+{ stdenv, fetchurl, python3Packages, makeWrapper, unzip
+, guiSupport ? false, tk ? null
+, ApplicationServices
+}:
+
+let
+  inherit (python3Packages) docutils dulwich python;
+
+in python3Packages.buildPythonApplication rec {
+  pname = "mercurial";
+  version = "5.4.1";
+
+  src = fetchurl {
+    url = "https://mercurial-scm.org/release/mercurial-${version}.tar.gz";
+    sha256 = "1ilam0dz121nn4852jgkgyzyrvk3hn5cqnivy8gk1qg815mh4763";
+  };
+
+  format = "other";
+
+  inherit python; # pass it so that the same version can be used in hg2git
+
+  buildInputs = [ makeWrapper docutils unzip ]
+    ++ stdenv.lib.optionals stdenv.isDarwin [ ApplicationServices ];
+
+  propagatedBuildInputs = [ dulwich ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  postInstall = (stdenv.lib.optionalString guiSupport ''
+    mkdir -p $out/etc/mercurial
+    cp contrib/hgk $out/bin
+    cat >> $out/etc/mercurial/hgrc << EOF
+    [extensions]
+    hgk=$out/lib/${python.libPrefix}/site-packages/hgext/hgk.py
+    EOF
+    # setting HG so that hgk can be run itself as well (not only hg view)
+    WRAP_TK=" --set TK_LIBRARY ${tk}/lib/${tk.libPrefix}
+              --set HG $out/bin/hg
+              --prefix PATH : ${tk}/bin "
+  '') + ''
+    for i in $(cd $out/bin && ls); do
+      wrapProgram $out/bin/$i \
+        $WRAP_TK
+    done
+
+    # copy hgweb.cgi to allow use in apache
+    mkdir -p $out/share/cgi-bin
+    cp -v hgweb.cgi contrib/hgweb.wsgi $out/share/cgi-bin
+    chmod u+x $out/share/cgi-bin/hgweb.cgi
+
+    # install bash/zsh completions
+    install -v -m644 -D contrib/bash_completion $out/share/bash-completion/completions/_hg
+    install -v -m644 -D contrib/zsh_completion $out/share/zsh/site-functions/_hg
+  '';
+
+  meta = {
+    inherit version;
+    description = "A fast, lightweight SCM system for very large distributed projects";
+    homepage = "https://www.mercurial-scm.org";
+    downloadPage = "https://www.mercurial-scm.org/release/";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.eelco ];
+    updateWalker = true;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/monotone-viz/default.nix b/nixpkgs/pkgs/applications/version-management/monotone-viz/default.nix
new file mode 100644
index 000000000000..03b98694eaf3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/monotone-viz/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchurl, ocamlPackages, gnome2, pkgconfig, makeWrapper, glib
+, libtool, libpng, yacc, expat, fontconfig, gd, pango, libjpeg, libwebp, xlibsWrapper, libXaw
+}:
+# We need an old version of Graphviz for format compatibility reasons.
+# This version is vulnerable, but monotone-viz will never feed it bad input.
+let graphviz_2_0 = import ./graphviz-2.0.nix {
+      inherit stdenv fetchurl pkgconfig xlibsWrapper libpng libjpeg expat libXaw
+        yacc libtool fontconfig pango gd libwebp;
+    }; in
+let inherit (gnome2) libgnomecanvas; in
+let inherit (ocamlPackages) ocaml lablgtk camlp4; in
+stdenv.mkDerivation rec {
+  version = "1.0.2";
+  pname = "monotone-viz";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ocaml lablgtk libgnomecanvas glib graphviz_2_0 makeWrapper camlp4];
+  src = fetchurl {
+    url = "http://oandrieu.nerim.net/monotone-viz/${pname}-${version}-nolablgtk.tar.gz";
+    sha256 = "1l5x4xqz5g1aaqbc1x80mg0yzkiah9ma9k9mivmn08alkjlakkdk";
+  };
+
+  prePatch="ln -s . a; ln -s . b";
+  patchFlags = ["-p0"];
+  patches = [
+    (fetchurl {
+      url = "https://src.fedoraproject.org/cgit/rpms/monotone-viz.git/plain/monotone-viz-1.0.2-dot.patch";
+      sha256 = "0risfy8iqmkr209hmnvpv57ywbd3rvchzzd0jy2lfyqrrrm6zknw";
+    })
+    (fetchurl {
+      url = "https://src.fedoraproject.org/cgit/rpms/monotone-viz.git/plain/monotone-viz-1.0.2-new-stdio.patch";
+      sha256 = "16bj0ppzqd45an154dr7sifjra7lv4m9anxfw3c56y763jq7fafa";
+    })
+    (fetchurl {
+      url = "https://src.fedoraproject.org/cgit/rpms/monotone-viz.git/plain/monotone-viz-1.0.2-typefix.patch";
+      sha256 = "1gfp82rc7pawb5x4hh2wf7xh1l1l54ib75930xgd1y437la4703r";
+    })
+  ];
+
+  preConfigure = ''
+    configureFlags="$configureFlags --with-lablgtk-dir=$(echo ${lablgtk}/lib/ocaml/*/site-lib/lablgtk2)"
+  '';
+
+  postInstall = ''
+    wrapProgram "$out/bin/monotone-viz" --prefix PATH : "${graphviz_2_0}/bin/"
+  '';
+
+  meta = {
+    inherit version;
+    description = ''Monotone ancestry visualiser'';
+    license = stdenv.lib.licenses.gpl2Plus ;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/monotone-viz/graphviz-2.0.nix b/nixpkgs/pkgs/applications/version-management/monotone-viz/graphviz-2.0.nix
new file mode 100644
index 000000000000..816bfcde67f7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/monotone-viz/graphviz-2.0.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, pkgconfig, xlibsWrapper, libpng, libjpeg, expat, libXaw
+, yacc, libtool, fontconfig, pango, gd, libwebp
+}:
+
+assert libpng != null && libjpeg != null && expat != null;
+
+stdenv.mkDerivation rec {
+  name = "graphviz-2.0";
+
+  src = fetchurl {
+    url = "http://www.graphviz.org/pub/graphviz/ARCHIVE/${name}.tar.gz";
+    sha256 = "39b8e1f2ba4cc1f5bdc8e39c7be35e5f831253008e4ee2c176984f080416676c";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    xlibsWrapper libpng libjpeg expat libXaw yacc
+    libtool fontconfig pango gd libwebp
+  ];
+
+  hardeningDisable = [ "format" "fortify" ];
+
+  configureFlags =
+    [ "--with-pngincludedir=${libpng.dev}/include"
+      "--with-pnglibdir=${libpng.out}/lib"
+      "--with-jpegincludedir=${libjpeg.dev}/include"
+      "--with-jpeglibdir=${libjpeg.out}/lib"
+      "--with-expatincludedir=${expat.dev}/include"
+      "--with-expatlibdir=${expat.out}/lib"
+      "--with-ltdl-include=${libtool}/include"
+      "--with-ltdl-lib=${libtool.lib}/lib"
+    ]
+    ++ stdenv.lib.optional (xlibsWrapper == null) "--without-x";
+
+  meta = {
+    description = "A program for visualising graphs";
+    homepage = "http://www.graphviz.org/";
+    branch = "2.0";
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/monotone/default.nix b/nixpkgs/pkgs/applications/version-management/monotone/default.nix
new file mode 100644
index 000000000000..bf8e5652d99c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/monotone/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, boost, zlib, botan, libidn
+, lua, pcre, sqlite, perl, pkgconfig, expect
+, bzip2, gmp, openssl
+}:
+
+let
+  version = "1.1";
+  perlVersion = stdenv.lib.getVersion perl;
+in
+
+assert perlVersion != "";
+
+stdenv.mkDerivation rec {
+  pname = "monotone";
+  inherit version;
+
+  src = fetchurl {
+    url = "http://monotone.ca/downloads/${version}/monotone-${version}.tar.bz2";
+    sha256 = "124cwgi2q86hagslbk5idxbs9j896rfjzryhr6z63r6l485gcp7r";
+  };
+
+  patches = [ ./monotone-1.1-Adapt-to-changes-in-pcre-8.42.patch ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ boost zlib botan libidn lua pcre sqlite expect
+    openssl gmp bzip2 ];
+
+  postInstall = ''
+    mkdir -p $out/share/${pname}-${version}
+    cp -rv contrib/ $out/share/${pname}-${version}/contrib
+    mkdir -p $out/${perl.libPrefix}/${perlVersion}
+    cp -v contrib/Monotone.pm $out/${perl.libPrefix}/${perlVersion}
+  '';
+
+  #doCheck = true; # some tests fail (and they take VERY long)
+
+  meta = with stdenv.lib; {
+    description = "A free distributed version control system";
+    maintainers = [ maintainers.raskin ];
+    platforms = platforms.unix;
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/monotone/default.upstream b/nixpkgs/pkgs/applications/version-management/monotone/default.upstream
new file mode 100644
index 000000000000..e0d01fb190c6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/monotone/default.upstream
@@ -0,0 +1,8 @@
+url http://www.monotone.ca/downloads.php
+
+do_overwrite(){
+  ensure_version
+  ensure_hash
+  set_var_value version $CURRENT_VERSION
+  set_var_value sha256 $CURRENT_HASH
+}
diff --git a/nixpkgs/pkgs/applications/version-management/monotone/monotone-1.1-Adapt-to-changes-in-pcre-8.42.patch b/nixpkgs/pkgs/applications/version-management/monotone/monotone-1.1-Adapt-to-changes-in-pcre-8.42.patch
new file mode 100644
index 000000000000..1ecda436c251
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/monotone/monotone-1.1-Adapt-to-changes-in-pcre-8.42.patch
@@ -0,0 +1,66 @@
+From 70f209ad582121750d54e3692b1e62c7f36af6f9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
+Date: Mon, 7 May 2018 14:09:06 +0200
+Subject: [PATCH] Adapt to changes in pcre-8.42
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+pcre-8.42 replaced internal real_pcre with real_pcre8_or_16. This
+broke monotone that decided not to use the public "pcre" type.
+
+This patch adapts monotone to the pcre >= 8.42.
+
+Signed-off-by: Petr Písař <ppisar@redhat.com>
+---
+ src/pcrewrap.cc | 4 ++--
+ src/pcrewrap.hh | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/pcrewrap.cc b/src/pcrewrap.cc
+index 8c0c9d1..30bafff 100644
+--- a/src/pcrewrap.cc
++++ b/src/pcrewrap.cc
+@@ -74,7 +74,7 @@ get_capturecount(void const * bd)
+ namespace pcre
+ {
+   typedef map<char const *,
+-              pair<struct real_pcre const *, struct pcre_extra const *> >
++              pair<struct real_pcre8_or_16 const *, struct pcre_extra const *> >
+               regex_cache;
+ 
+   class regex_cache_manager
+@@ -86,7 +86,7 @@ public:
+       }
+ 
+     void store(char const * pattern,
+-               pair<struct real_pcre const *, struct pcre_extra const *>
++               pair<struct real_pcre8_or_16 const *, struct pcre_extra const *>
+                data)
+       {
+         cache[pattern] = data;
+diff --git a/src/pcrewrap.hh b/src/pcrewrap.hh
+index 3359cdd..5008e88 100644
+--- a/src/pcrewrap.hh
++++ b/src/pcrewrap.hh
+@@ -18,7 +18,7 @@
+ // definitions and so we don't actually expose it here. Unfortunately, this
+ // means we have to hope this pair of forward declarations will not change...
+ 
+-struct real_pcre;
++struct real_pcre8_or_16;
+ struct pcre_extra;
+ 
+ namespace pcre
+@@ -61,7 +61,7 @@ namespace pcre
+     regex & operator=(regex const &);
+ 
+     // data
+-    struct real_pcre const * basedat;
++    struct real_pcre8_or_16 const * basedat;
+     struct pcre_extra const * extradat;
+ 
+     // used by constructors
+-- 
+2.14.3
+
diff --git a/nixpkgs/pkgs/applications/version-management/mr/default.nix b/nixpkgs/pkgs/applications/version-management/mr/default.nix
new file mode 100644
index 000000000000..05ef7021f164
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/mr/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchgit, perl }:
+
+stdenv.mkDerivation {
+  pname = "mr";
+  version = "1.20180726";
+
+  src = fetchgit {
+    url = "git://myrepos.branchable.com/";
+    # the repository moved its tags at least once
+    # when updating please continue using the revision hash here
+    rev = "0ad7a17bb455de1fec3b2375c7aac72ab2a22ac4";
+    sha256 = "0jphw61plm8cgklja6hs639xhdvxgvjwbr6jpvjwpp7hc5gmhms5";
+  };
+
+  postPatch = ''
+    patchShebangs .
+  '';
+
+  buildInputs = [ perl ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = {
+    description = "Multiple Repository management tool";
+    longDescription = ''
+      mr is a tool to manage all your version control repos. It can
+      checkout, update, or perform other actions on a set of
+      repositories as if they were one combined repository. It
+      supports any combination of subversion, git, cvs, mercurial,
+      bzr, darcs, fossil and veracity repositories, and support for
+      other version control systems can easily be added.
+    '';
+    homepage = "http://myrepos.branchable.com/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = with stdenv.lib.maintainers; [ antono henrytill ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/nbstripout/default.nix b/nixpkgs/pkgs/applications/version-management/nbstripout/default.nix
new file mode 100644
index 000000000000..07f9b442a74a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/nbstripout/default.nix
@@ -0,0 +1,38 @@
+{lib, python, git, mercurial, coreutils}:
+
+with python.pkgs;
+buildPythonApplication rec {
+  version = "0.3.7";
+  pname = "nbstripout";
+
+  # Mercurial should be added as a build input but because it's a Python
+  # application, it would mess up the Python environment. Thus, don't add it
+  # here, instead add it to PATH when running unit tests
+  checkInputs = [ pytest pytest-flake8 git ];
+  nativeBuildInputs = [ pytestrunner ];
+  propagatedBuildInputs = [ ipython nbformat ];
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "13w2zhw8vrfv6637bw5ygygj1dky55fvvncz11hq0abwkkzb3wb2";
+  };
+
+  # for some reason, darwin uses /bin/sh echo native instead of echo binary, so
+  # force using the echo binary
+  postPatch = ''
+    substituteInPlace tests/test-git.t --replace "echo" "${coreutils}/bin/echo"
+  '';
+
+  # ignore flake8 tests for the nix wrapped setup.py
+  checkPhase = ''
+    PATH=$PATH:$out/bin:${mercurial}/bin pytest .
+  '';
+
+  meta = {
+    inherit version;
+    description = "Strip output from Jupyter and IPython notebooks";
+    homepage = "https://github.com/kynan/nbstripout";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ jluttine ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/nitpick/default.nix b/nixpkgs/pkgs/applications/version-management/nitpick/default.nix
new file mode 100644
index 000000000000..bcb16ea86788
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/nitpick/default.nix
@@ -0,0 +1,40 @@
+{ fetchFromGitHub
+, buildPythonPackage
+, stdenv
+, isPy27
+}:
+
+buildPythonPackage rec {
+  pname = "nitpick";
+  version = "1.1";
+
+  format = "other";
+  disabled = !isPy27;
+  
+  src = fetchFromGitHub {
+    owner = "travisb-ca";
+    repo = pname;
+    rev = version;
+    sha256 = "11gn6nc6ypwivy20bx1r0rm2giblwx6jv485zk875a9pdbcwbrf6";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/src
+    install -m 755 -t $out/share/src nitpick.py
+  
+    mkdir -p $out/bin
+    ln -s $out/share/src/nitpick.py $out/bin/nitpick
+  '';
+
+  meta = {
+    description = "A distributed issue tracker";
+    longDescription = ''
+      Nitpick is a distributed issue tracker. It helps keep track of which nits you
+      should pick. It's intended to be used with source code such that the issues can
+      follow the code via whatever VCS or distribution mechanism.
+    '';
+    homepage = "http://travisbrown.ca/projects/nitpick/docs/nitpick.html";
+    license = with stdenv.lib.licenses; gpl2;
+    maintainers = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/p4v/default.nix b/nixpkgs/pkgs/applications/version-management/p4v/default.nix
new file mode 100644
index 000000000000..148f122f7c8b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/p4v/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchurl, lib, qtbase, qtmultimedia, qtscript, qtsensors, qtwebkit, openssl_1_0_2, xkeyboard_config, wrapQtAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "p4v";
+  version = "2017.3.1601999";
+
+  src = fetchurl {
+    url = "https://cdist2.perforce.com/perforce/r17.3/bin.linux26x86_64/p4v.tgz";
+    sha256 = "9ded42683141e1808535ec3e87d3149f890315c192d6e97212794fd54862b9a4";
+  };
+
+  dontBuild = true;
+  nativeBuildInputs = [ wrapQtAppsHook ];
+
+  ldLibraryPath = lib.makeLibraryPath [
+      stdenv.cc.cc.lib
+      qtbase
+      qtmultimedia
+      qtscript
+      qtsensors
+      qtwebkit
+      openssl_1_0_2
+  ];
+
+  dontWrapQtApps = true;
+  installPhase = ''
+    mkdir $out
+    cp -r bin $out
+    mkdir -p $out/lib/p4v
+    cp -r lib/p4v/P4VResources $out/lib/p4v
+
+    for f in $out/bin/*.bin ; do
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $f
+
+      wrapQtApp $f \
+        --suffix LD_LIBRARY_PATH : ${ldLibraryPath} \
+        --suffix QT_XKB_CONFIG_ROOT : ${xkeyboard_config}/share/X11/xkb
+    done
+  '';
+
+  meta = {
+    description = "Perforce Visual Client";
+    homepage = "https://www.perforce.com";
+    license = stdenv.lib.licenses.unfreeRedistributable;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with stdenv.lib.maintainers; [ nathyong nioncode ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/peru/default.nix b/nixpkgs/pkgs/applications/version-management/peru/default.nix
new file mode 100644
index 000000000000..4cf2a2e864ca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/peru/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "peru";
+  version = "1.2.0";
+
+  disabled = python3Packages.pythonOlder "3.5";
+
+  src = fetchFromGitHub {
+    owner = "buildinspace";
+    repo = "peru";
+    rev = version;
+    sha256 = "0p4j51m89glx12cd65lcnbwpvin0v49wkhrx06755skr7v37pm2a";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ pyyaml docopt ];
+
+  # No tests in archive
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/buildinspace/peru";
+    description = "A tool for including other people's code in your projects";
+    license = licenses.mit;
+    platforms = platforms.unix;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/version-management/pijul/default.nix b/nixpkgs/pkgs/applications/version-management/pijul/default.nix
new file mode 100644
index 000000000000..74b793f0e77b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/pijul/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, fetchurl, rustPlatform, darwin, openssl, libsodium, nettle, clang, libclang, pkgconfig }:
+
+let
+  # nettle-sys=1.0.1 requires the des-compat.h header, but it was removed in
+  # nettle 3.5.  See https://nest.pijul.com/pijul_org/pijul/discussions/416
+  # Remove with the next release
+  nettle_34 = nettle.overrideAttrs (_oldAttrs: rec {
+    version = "3.4.1";
+    src = fetchurl {
+      url = "mirror://gnu/nettle/nettle-${version}.tar.gz";
+      sha256 = "1bcji95n1iz9p9vsgdgr26v6s7zhpsxfbjjwpqcihpfd6lawyhgr";
+    };
+  });
+in rustPlatform.buildRustPackage rec {
+  pname = "pijul";
+  version = "0.12.0";
+
+  src = fetchurl {
+    url = "https://pijul.org/releases/${pname}-${version}.tar.gz";
+    sha256 = "1rm787kkh3ya8ix0rjvj7sbrg9armm0rnpkga6gjmsbg5bx20y4q";
+  };
+
+  cargoSha256 = "0rf8qmgzgyl718yznbskzafyg963ygibjmqncd93zdandgl9nj5v";
+
+  # N.B. The cargo depfile checker expects us to have unpacked the src tarball
+  # into the standard dirname "source".
+  cargoDepsHook = ''
+    ln -s ${pname}-${version} source
+  '';
+
+  # TODO: Delete once pijul fixes upstream:
+  # https://nest.pijul.com/pijul_org/pijul/discussions/447
+  postPatch = ''
+    pushd ../${pname}-${version}-vendor.tar.gz/thrussh/
+    patch -p1 < ${./thrussh-build-fix.patch}
+    substituteInPlace .cargo-checksum.json --replace \
+      9696ed2422a483cd8de48ac241178a0441be6636909c76174c536b8b1cba9d45 \
+      a199f2bba520d56e11607b77be4dde0cfae576c90badb9fbd39af4784e8120d1
+    popd
+  '';
+
+  nativeBuildInputs = [ pkgconfig clang ];
+
+  postInstall = ''
+    mkdir -p $out/share/{bash-completion/completions,zsh/site-functions,fish/vendor_completions.d}
+    $out/bin/pijul generate-completions --bash > $out/share/bash-completion/completions/pijul
+    $out/bin/pijul generate-completions --zsh > $out/share/zsh/site-functions/_pijul
+    $out/bin/pijul generate-completions --fish > $out/share/fish/vendor_completions.d/pijul.fish
+  '';
+
+  LIBCLANG_PATH = libclang + "/lib";
+
+  buildInputs = [ openssl libsodium nettle_34 libclang ] ++ stdenv.lib.optionals stdenv.isDarwin
+    (with darwin.apple_sdk.frameworks; [ CoreServices Security ]);
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A distributed version control system";
+    homepage = "https://pijul.org";
+    license = with licenses; [ gpl2Plus ];
+    maintainers = [ maintainers.gal_bolle ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/pijul/thrussh-build-fix.patch b/nixpkgs/pkgs/applications/version-management/pijul/thrussh-build-fix.patch
new file mode 100644
index 000000000000..3989639620bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/pijul/thrussh-build-fix.patch
@@ -0,0 +1,12 @@
+--- a/src/client/connection.rs	2020-02-04 12:48:43.845299096 +0100
++++ b/src/client/connection.rs	2020-02-04 12:50:00.140329310 +0100
+@@ -546,8 +546,8 @@
+                 &[msg::NEWKEYS],
+                 &mut session.0.write_buffer,
+             );
+-            session.0.kex = Some(Kex::NewKeys(newkeys));
+             newkeys.sent = true;
++            session.0.kex = Some(Kex::NewKeys(newkeys));
+         }
+         Ok(())
+     }
diff --git a/nixpkgs/pkgs/applications/version-management/rabbitvcs/default.nix b/nixpkgs/pkgs/applications/version-management/rabbitvcs/default.nix
new file mode 100644
index 000000000000..2c58e15c443d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/rabbitvcs/default.nix
@@ -0,0 +1,42 @@
+{ fetchFromGitHub, lib, python2Packages, meld, subversion, gvfs, xdg_utils }:
+python2Packages.buildPythonApplication rec {
+  pname = "rabbitvcs";
+  version = "0.17.1";
+  namePrefix = "";
+
+  src = fetchFromGitHub {
+    owner = "rabbitvcs";
+    repo = "rabbitvcs";
+    rev = "v${version}";
+    sha256 = "01cr16zf3gzsci1hhfli79m34fcx5m1pvswl16rkxxn212yc9fhy";
+  };
+
+  pythonPath = with python2Packages; [ configobj dbus-python pygobject2 pygtk simplejson pysvn dulwich tkinter gvfs xdg_utils ];
+
+  prePatch = ''
+      sed -ie 's|if sys\.argv\[1\] == "install":|if False:|' ./setup.py
+      sed -ie "s|PREFIX = sys.prefix|PREFIX = \"$out\"|" ./setup.py
+      sed -ie 's|/usr/bin/meld|${meld}/bin/meld|' ./rabbitvcs/util/configspec/configspec.ini
+      sed -ie 's|/usr/bin/svnadmin|${subversion.out}/bin/svnadmin|' ./rabbitvcs/ui/create.py
+      sed -ie "s|/usr/share/doc|$out/share/doc|" ./rabbitvcs/ui/about.py
+      sed -ie "s|gnome-open|xdg-open|" ./rabbitvcs/util/helper.py
+    '';
+
+  outputs = [ "out" "cli" ];
+
+  postInstall = ''
+    mkdir -p $cli/bin
+    cp clients/cli/rabbitvcs $cli/bin
+    wrapPythonProgramsIn $cli "$out $pythonPath"
+  '';
+
+  doCheck = false;
+
+  meta = {
+    description = "Graphical tools for working with version control systems";
+    homepage = "http://rabbitvcs.org/";
+    license = lib.licenses.gpl2Plus;
+    platforms = lib.platforms.linux;
+    maintainers = [ lib.maintainers.mathnerd314 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/rapidsvn/default.nix b/nixpkgs/pkgs/applications/version-management/rapidsvn/default.nix
new file mode 100644
index 000000000000..fc6a8adc2add
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/rapidsvn/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, wxGTK, subversion, apr, aprutil, python }:
+
+stdenv.mkDerivation rec {
+  pname = "rapidsvn";
+  version = "0.12.1";
+
+  src = fetchurl {
+    url = "http://www.rapidsvn.org/download/release/${version}/${pname}-${version}.tar.gz";
+    sha256 = "1bmcqjc12k5w0z40k7fkk8iysqv4fw33i80gvcmbakby3d4d4i4p";
+  };
+
+  buildInputs = [ wxGTK subversion apr aprutil python ];
+
+  configureFlags = [ "--with-svn-include=${subversion.dev}/include"
+    "--with-svn-lib=${subversion.out}/lib" ];
+
+  patches = [
+    ./fix-build.patch
+  ];
+
+  meta = {
+    description = "Multi-platform GUI front-end for the Subversion revision system";
+    homepage = "http://rapidsvn.tigris.org/";
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = [ stdenv.lib.maintainers.viric ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/rapidsvn/fix-build.patch b/nixpkgs/pkgs/applications/version-management/rapidsvn/fix-build.patch
new file mode 100644
index 000000000000..ca4bc394c2c6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/rapidsvn/fix-build.patch
@@ -0,0 +1,122 @@
+--- a/src/svncpp/client_ls.cpp
++++ b/src/svncpp/client_ls.cpp
+@@ -25,6 +25,7 @@
+ #include "svn_client.h"
+ #include "svn_path.h"
+ #include "svn_sorts.h"
++#include "svn_version.h"
+ //#include "svn_utf.h"
+ 
+ // svncpp
+@@ -35,6 +36,7 @@
+ #include "m_is_empty.hpp"
+ 
+ 
++#if SVN_VER_MAJOR == 1 && SVN_VER_MINOR < 8
+ static int
+ compare_items_as_paths(const svn_sort__item_t *a, const svn_sort__item_t *b)
+ {
+@@ -84,6 +86,72 @@ namespace svn
+   }
+ }
+ 
++#else
++
++#include <algorithm>
++
++static svn_error_t* store_entry(
++        void *baton,
++        const char *path,
++        const svn_dirent_t *dirent,
++        const svn_lock_t *,
++        const char *abs_path,
++        const char *,
++        const char *,
++        apr_pool_t *scratch_pool)
++{
++  svn::DirEntries *entries = reinterpret_cast<svn::DirEntries*>(baton);
++  if (path[0] == '\0') {
++    if (dirent->kind == svn_node_file) {
++      // for compatibility with svn_client_ls behaviour, listing a file
++      // stores that file name
++      entries->push_back(svn::DirEntry(svn_path_basename(abs_path, scratch_pool), dirent));
++    }
++  } else {
++    entries->push_back(svn::DirEntry(path, dirent));
++  }
++  return SVN_NO_ERROR;
++}
++
++static bool sort_by_path(svn::DirEntry const& a, svn::DirEntry const& b)
++{
++  return svn_path_compare_paths(a.name(), b.name()) < 0;
++}
++
++namespace svn
++{
++  DirEntries
++  Client::list(const char * pathOrUrl,
++               svn_opt_revision_t * revision,
++               bool recurse) throw(ClientException)
++  {
++    Pool pool;
++    DirEntries entries;
++
++    svn_error_t * error =
++      svn_client_list3(pathOrUrl,
++                       revision,
++                       revision,
++                       SVN_DEPTH_INFINITY_OR_IMMEDIATES(recurse),
++                       SVN_DIRENT_ALL,
++                       FALSE, // fetch locks
++                       FALSE, // include externals
++                       &store_entry,
++                       &entries,
++                       *m_context,
++                       pool);
++
++    if (error != SVN_NO_ERROR)
++      throw ClientException(error);
++
++    std::sort(entries.begin(), entries.end(), &sort_by_path);
++
++    return entries;
++  }
++}
++
++#endif
++
+ /* -----------------------------------------------------------------
+  * local variables:
+  * eval: (load-file "../../rapidsvn-dev.el")
+--- a/src/svncpp/dirent.cpp	2017-03-19 15:48:58.956827337 +0100
++++ b/src/svncpp/dirent.cpp	2017-03-19 15:50:19.111527279 +0100
+@@ -47,7 +47,7 @@
+     {
+     }
+ 
+-    Data(const char * _name, svn_dirent_t * dirEntry)
++    Data(const char * _name, const svn_dirent_t * dirEntry)
+         : name(_name), kind(dirEntry->kind), size(dirEntry->size),
+         hasProps(dirEntry->has_props != 0),
+         createdRev(dirEntry->created_rev), time(dirEntry->time)
+@@ -78,7 +78,7 @@
+   {
+   }
+ 
+-  DirEntry::DirEntry(const char * name, svn_dirent_t * DirEntry)
++  DirEntry::DirEntry(const char * name, const svn_dirent_t * DirEntry)
+       : m(new Data(name, DirEntry))
+   {
+   }
+--- a/include/svncpp/dirent.hpp	2017-03-19 15:50:54.860506116 +0100
++++ b/include/svncpp/dirent.hpp	2017-03-19 15:50:58.314407598 +0100
+@@ -41,7 +41,7 @@
+     /**
+      * constructor for existing @a svn_dirent_t entries
+      */
+-    DirEntry(const char * name, svn_dirent_t * dirEntry);
++    DirEntry(const char * name, const svn_dirent_t * dirEntry);
+ 
+     /**
+      * copy constructor
diff --git a/nixpkgs/pkgs/applications/version-management/rcs/default.nix b/nixpkgs/pkgs/applications/version-management/rcs/default.nix
new file mode 100644
index 000000000000..404d6ae09bce
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/rcs/default.nix
@@ -0,0 +1,73 @@
+{ stdenv, fetchurl, fetchpatch, ed }:
+
+stdenv.mkDerivation rec {
+  name = "rcs-5.9.4";
+
+  src = fetchurl {
+    url = "mirror://gnu/rcs/${name}.tar.xz";
+    sha256 = "1zsx7bb0rgvvvisiy4zlixf56ay8wbd9qqqcp1a1g0m1gl6mlg86";
+  };
+
+  buildInputs = [ ed ];
+
+  patches = stdenv.lib.optionals stdenv.isDarwin [
+    # This failure appears unrelated to the subject of the test. This
+    # test seems to rely on a bash bug where `test $x -nt $y` ignores
+    # subsecond values in timetamps. This bug has been fixed in Bash
+    # 5, and seemingly doesn't affect Darwin.
+    ./disable-t810.patch
+
+    (fetchpatch {
+      url = "https://raw.githubusercontent.com/macports/macports-ports/b76d1e48dac/editors/nano/files/secure_snprintf.patch";
+      extraPrefix = "";
+      sha256 = "1wy9pjw3vvp8fv8a7pmkqmiapgacfx54qj9fvsc5gwry0vv7vnc3";
+    })
+
+    # Expected to appear in the next release
+    (fetchpatch {
+      url = "https://raw.githubusercontent.com/Homebrew/formula-patches/3fff7c990b8df4174045834b9c1210e7736ff5a4/rcs/noreturn.patch";
+      sha256 = "10zniqrd6xagf3q03i1vksl0vd9nla3qcj0840n3m8z6jd4aypcx";
+    })
+  ];
+
+  doCheck = true;
+
+  checkFlags = [ "VERBOSE=1" ];
+
+  checkPhase = ''
+    # If neither LOGNAME or USER are set, rcs will default to
+    # getlogin(), which is unreliable on macOS. It will often return
+    # things like `_spotlight`, or `_mbsetupuser`. macOS sets both
+    # environment variables in user sessions, so this is unlikely to
+    # affect regular usage.
+
+    export LOGNAME=$(id -un)
+
+    print_logs_and_fail() {
+      grep -nH -e . -r tests/*.d/{out,err}
+      return 1
+    }
+
+    make $checkFlags check || print_logs_and_fail
+  '';
+
+  NIX_CFLAGS_COMPILE = "-std=c99";
+
+  hardeningDisable = stdenv.lib.optional stdenv.cc.isClang "format";
+
+  meta = {
+    homepage = "https://www.gnu.org/software/rcs/";
+    description = "Revision control system";
+    longDescription =
+      '' The GNU Revision Control System (RCS) manages multiple revisions of
+         files. RCS automates the storing, retrieval, logging,
+         identification, and merging of revisions.  RCS is useful for text
+         that is revised frequently, including source code, programs,
+         documentation, graphics, papers, and form letters.
+      '';
+
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = with stdenv.lib.maintainers; [ eelco ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/rcs/disable-t810.patch b/nixpkgs/pkgs/applications/version-management/rcs/disable-t810.patch
new file mode 100644
index 000000000000..745f1868a369
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/rcs/disable-t810.patch
@@ -0,0 +1,10 @@
+--- rcs-5.9.4-orig/tests/Makefile.in	2015-01-22 19:40:36.000000000 +0900
++++ rcs-5.9.4/tests/Makefile.in	2019-04-16 20:04:30.557626000 +0900
+@@ -1372,7 +1372,6 @@
+  t803 \
+  t804 \
+  t805 \
+- t810 \
+  t900 \
+  t999
+ 
diff --git a/nixpkgs/pkgs/applications/version-management/redmine/Gemfile b/nixpkgs/pkgs/applications/version-management/redmine/Gemfile
new file mode 100644
index 000000000000..beff147c374a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/redmine/Gemfile
@@ -0,0 +1,75 @@
+source 'https://rubygems.org'
+
+ruby '>= 2.3.0', '< 2.7.0' if Bundler::VERSION >= '1.12.0'
+gem "bundler", ">= 1.5.0"
+
+gem 'rails', '5.2.4.2'
+gem 'sprockets', '~> 3.7.2' if RUBY_VERSION < '2.5'
+gem "rouge", "~> 3.12.0"
+gem "request_store", "~> 1.4.1"
+gem "mini_mime", "~> 1.0.1"
+gem "actionpack-xml_parser"
+gem "roadie-rails", (RUBY_VERSION < "2.5" ? "~> 1.3.0" : "~> 2.1.0")
+gem "mimemagic"
+gem "mail", "~> 2.7.1"
+gem "csv", "~> 3.1.1"
+gem "nokogiri", "~> 1.10.0"
+gem "i18n", "~> 1.6.0"
+gem "rbpdf", "~> 1.20.0"
+
+# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
+gem 'tzinfo-data', platforms: [:mingw, :x64_mingw, :mswin]
+
+# Optional gem for LDAP authentication
+group :ldap do
+  gem "net-ldap", "~> 0.16.0"
+end
+
+# Optional gem for OpenID authentication
+group :openid do
+  gem "ruby-openid", "~> 2.9.2", :require => "openid"
+  gem "rack-openid"
+end
+
+# Optional gem for exporting the gantt to a PNG file
+group :minimagick do
+  gem "mini_magick", "~> 4.9.5"
+end
+
+# Optional Markdown support, not for JRuby
+group :markdown do
+  gem "redcarpet", "~> 3.5.0"
+end
+
+# Include database gems for the database adapters NixOS supports
+gem "mysql2", "~> 0.5.0", :platforms => [:mri, :mingw, :x64_mingw]
+gem "pg", "~> 1.1.4", :platforms => [:mri, :mingw, :x64_mingw]
+
+group :development do
+  gem "yard"
+end
+
+group :test do
+  gem "rails-dom-testing"
+  gem 'mocha', '>= 1.4.0'
+  gem "simplecov", "~> 0.17.0", :require => false
+  gem "ffi", platforms: [:mingw, :x64_mingw, :mswin]
+  # For running system tests
+  gem 'puma', '~> 3.7'
+  gem "capybara", (RUBY_VERSION < "2.4" ? "~> 3.15.1" : "~> 3.25.0")
+  gem "selenium-webdriver"
+  # RuboCop
+  gem 'rubocop', '~> 0.76.0'
+  gem 'rubocop-performance', '~> 1.5.0'
+  gem 'rubocop-rails', '~> 2.3.0'
+end
+
+local_gemfile = File.join(File.dirname(__FILE__), "Gemfile.local")
+if File.exists?(local_gemfile)
+  eval_gemfile local_gemfile
+end
+
+# Load plugins' Gemfiles
+Dir.glob File.expand_path("../plugins/*/{Gemfile,PluginGemfile}", __FILE__) do |file|
+  eval_gemfile file
+end
diff --git a/nixpkgs/pkgs/applications/version-management/redmine/Gemfile.lock b/nixpkgs/pkgs/applications/version-management/redmine/Gemfile.lock
new file mode 100644
index 000000000000..60aed5e17922
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/redmine/Gemfile.lock
@@ -0,0 +1,231 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    actioncable (5.2.4.2)
+      actionpack (= 5.2.4.2)
+      nio4r (~> 2.0)
+      websocket-driver (>= 0.6.1)
+    actionmailer (5.2.4.2)
+      actionpack (= 5.2.4.2)
+      actionview (= 5.2.4.2)
+      activejob (= 5.2.4.2)
+      mail (~> 2.5, >= 2.5.4)
+      rails-dom-testing (~> 2.0)
+    actionpack (5.2.4.2)
+      actionview (= 5.2.4.2)
+      activesupport (= 5.2.4.2)
+      rack (~> 2.0, >= 2.0.8)
+      rack-test (>= 0.6.3)
+      rails-dom-testing (~> 2.0)
+      rails-html-sanitizer (~> 1.0, >= 1.0.2)
+    actionpack-xml_parser (2.0.1)
+      actionpack (>= 5.0)
+      railties (>= 5.0)
+    actionview (5.2.4.2)
+      activesupport (= 5.2.4.2)
+      builder (~> 3.1)
+      erubi (~> 1.4)
+      rails-dom-testing (~> 2.0)
+      rails-html-sanitizer (~> 1.0, >= 1.0.3)
+    activejob (5.2.4.2)
+      activesupport (= 5.2.4.2)
+      globalid (>= 0.3.6)
+    activemodel (5.2.4.2)
+      activesupport (= 5.2.4.2)
+    activerecord (5.2.4.2)
+      activemodel (= 5.2.4.2)
+      activesupport (= 5.2.4.2)
+      arel (>= 9.0)
+    activestorage (5.2.4.2)
+      actionpack (= 5.2.4.2)
+      activerecord (= 5.2.4.2)
+      marcel (~> 0.3.1)
+    activesupport (5.2.4.2)
+      concurrent-ruby (~> 1.0, >= 1.0.2)
+      i18n (>= 0.7, < 2)
+      minitest (~> 5.1)
+      tzinfo (~> 1.1)
+    addressable (2.7.0)
+      public_suffix (>= 2.0.2, < 5.0)
+    arel (9.0.0)
+    ast (2.4.0)
+    builder (3.2.4)
+    capybara (3.25.0)
+      addressable
+      mini_mime (>= 0.1.3)
+      nokogiri (~> 1.8)
+      rack (>= 1.6.0)
+      rack-test (>= 0.6.3)
+      regexp_parser (~> 1.5)
+      xpath (~> 3.2)
+    childprocess (3.0.0)
+    concurrent-ruby (1.1.6)
+    crass (1.0.6)
+    css_parser (1.7.1)
+      addressable
+    csv (3.1.2)
+    docile (1.3.2)
+    erubi (1.9.0)
+    globalid (0.4.2)
+      activesupport (>= 4.2.0)
+    htmlentities (4.3.4)
+    i18n (1.6.0)
+      concurrent-ruby (~> 1.0)
+    jaro_winkler (1.5.4)
+    json (2.3.0)
+    loofah (2.5.0)
+      crass (~> 1.0.2)
+      nokogiri (>= 1.5.9)
+    mail (2.7.1)
+      mini_mime (>= 0.1.1)
+    marcel (0.3.3)
+      mimemagic (~> 0.3.2)
+    method_source (1.0.0)
+    mimemagic (0.3.4)
+    mini_magick (4.9.5)
+    mini_mime (1.0.2)
+    mini_portile2 (2.4.0)
+    minitest (5.14.0)
+    mocha (1.11.2)
+    mysql2 (0.5.3)
+    net-ldap (0.16.2)
+    nio4r (2.5.2)
+    nokogiri (1.10.9)
+      mini_portile2 (~> 2.4.0)
+    parallel (1.19.1)
+    parser (2.7.1.0)
+      ast (~> 2.4.0)
+    pg (1.1.4)
+    public_suffix (4.0.4)
+    puma (3.12.4)
+    rack (2.2.2)
+    rack-openid (1.4.2)
+      rack (>= 1.1.0)
+      ruby-openid (>= 2.1.8)
+    rack-test (1.1.0)
+      rack (>= 1.0, < 3)
+    rails (5.2.4.2)
+      actioncable (= 5.2.4.2)
+      actionmailer (= 5.2.4.2)
+      actionpack (= 5.2.4.2)
+      actionview (= 5.2.4.2)
+      activejob (= 5.2.4.2)
+      activemodel (= 5.2.4.2)
+      activerecord (= 5.2.4.2)
+      activestorage (= 5.2.4.2)
+      activesupport (= 5.2.4.2)
+      bundler (>= 1.3.0)
+      railties (= 5.2.4.2)
+      sprockets-rails (>= 2.0.0)
+    rails-dom-testing (2.0.3)
+      activesupport (>= 4.2.0)
+      nokogiri (>= 1.6)
+    rails-html-sanitizer (1.3.0)
+      loofah (~> 2.3)
+    railties (5.2.4.2)
+      actionpack (= 5.2.4.2)
+      activesupport (= 5.2.4.2)
+      method_source
+      rake (>= 0.8.7)
+      thor (>= 0.19.0, < 2.0)
+    rainbow (3.0.0)
+    rake (13.0.1)
+    rbpdf (1.20.1)
+      htmlentities
+      rbpdf-font (~> 1.19.0)
+    rbpdf-font (1.19.1)
+    redcarpet (3.5.0)
+    regexp_parser (1.7.0)
+    request_store (1.4.1)
+      rack (>= 1.4)
+    roadie (4.0.0)
+      css_parser (~> 1.4)
+      nokogiri (~> 1.8)
+    roadie-rails (2.1.1)
+      railties (>= 5.1, < 6.1)
+      roadie (>= 3.1, < 5.0)
+    rouge (3.12.0)
+    rubocop (0.76.0)
+      jaro_winkler (~> 1.5.1)
+      parallel (~> 1.10)
+      parser (>= 2.6)
+      rainbow (>= 2.2.2, < 4.0)
+      ruby-progressbar (~> 1.7)
+      unicode-display_width (>= 1.4.0, < 1.7)
+    rubocop-performance (1.5.2)
+      rubocop (>= 0.71.0)
+    rubocop-rails (2.3.2)
+      rack (>= 1.1)
+      rubocop (>= 0.72.0)
+    ruby-openid (2.9.2)
+    ruby-progressbar (1.10.1)
+    rubyzip (2.3.0)
+    selenium-webdriver (3.142.7)
+      childprocess (>= 0.5, < 4.0)
+      rubyzip (>= 1.2.2)
+    simplecov (0.17.1)
+      docile (~> 1.1)
+      json (>= 1.8, < 3)
+      simplecov-html (~> 0.10.0)
+    simplecov-html (0.10.2)
+    sprockets (4.0.0)
+      concurrent-ruby (~> 1.0)
+      rack (> 1, < 3)
+    sprockets-rails (3.2.1)
+      actionpack (>= 4.0)
+      activesupport (>= 4.0)
+      sprockets (>= 3.0.0)
+    thor (1.0.1)
+    thread_safe (0.3.6)
+    tzinfo (1.2.7)
+      thread_safe (~> 0.1)
+    unicode-display_width (1.6.1)
+    websocket-driver (0.7.1)
+      websocket-extensions (>= 0.1.0)
+    websocket-extensions (0.1.4)
+    xpath (3.2.0)
+      nokogiri (~> 1.8)
+    yard (0.9.24)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  actionpack-xml_parser
+  bundler (>= 1.5.0)
+  capybara (~> 3.25.0)
+  csv (~> 3.1.1)
+  ffi
+  i18n (~> 1.6.0)
+  mail (~> 2.7.1)
+  mimemagic
+  mini_magick (~> 4.9.5)
+  mini_mime (~> 1.0.1)
+  mocha (>= 1.4.0)
+  mysql2 (~> 0.5.0)
+  net-ldap (~> 0.16.0)
+  nokogiri (~> 1.10.0)
+  pg (~> 1.1.4)
+  puma (~> 3.7)
+  rack-openid
+  rails (= 5.2.4.2)
+  rails-dom-testing
+  rbpdf (~> 1.20.0)
+  redcarpet (~> 3.5.0)
+  request_store (~> 1.4.1)
+  roadie-rails (~> 2.1.0)
+  rouge (~> 3.12.0)
+  rubocop (~> 0.76.0)
+  rubocop-performance (~> 1.5.0)
+  rubocop-rails (~> 2.3.0)
+  ruby-openid (~> 2.9.2)
+  selenium-webdriver
+  simplecov (~> 0.17.0)
+  tzinfo-data
+  yard
+
+RUBY VERSION
+   ruby 2.6.6p146
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/applications/version-management/redmine/default.nix b/nixpkgs/pkgs/applications/version-management/redmine/default.nix
new file mode 100644
index 000000000000..2344e8dbd4b8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/redmine/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchurl, bundlerEnv, ruby }:
+
+let
+  version = "4.1.1";
+  rubyEnv = bundlerEnv {
+    name = "redmine-env-${version}";
+
+    inherit ruby;
+    gemdir = ./.;
+    groups = [ "development" "ldap" "markdown" "minimagick" "openid" "test" ];
+  };
+in
+  stdenv.mkDerivation rec {
+    pname = "redmine";
+    inherit version;
+
+    src = fetchurl {
+      url = "https://www.redmine.org/releases/${pname}-${version}.tar.gz";
+      sha256 = "1nndy5hz8zvfglxf1f3bsb1pkrfwinfxzkdan1vjs3rkckkszyh5";
+    };
+
+    buildInputs = [ rubyEnv rubyEnv.wrappedRuby rubyEnv.bundler ];
+
+    buildPhase = ''
+      mv config config.dist
+      mv public/themes public/themes.dist
+    '';
+
+    installPhase = ''
+      mkdir -p $out/share
+      cp -r . $out/share/redmine
+      for i in config files log plugins public/plugin_assets public/themes tmp; do
+        rm -rf $out/share/redmine/$i
+        ln -fs /run/redmine/$i $out/share/redmine/$i
+      done
+    '';
+
+    meta = with stdenv.lib; {
+      homepage = "https://www.redmine.org/";
+      platforms = platforms.linux;
+      maintainers = [ maintainers.aanderse ];
+      license = licenses.gpl2;
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/version-management/redmine/gemset.nix b/nixpkgs/pkgs/applications/version-management/redmine/gemset.nix
new file mode 100644
index 000000000000..9a4deb7e155a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/redmine/gemset.nix
@@ -0,0 +1,878 @@
+{
+  actioncable = {
+    dependencies = ["actionpack" "nio4r" "websocket-driver"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0q4by8d41n972j8cdcddrwsh7qphcki50xvgm1syrawyck6w1f5v";
+      type = "gem";
+    };
+    version = "5.2.4.2";
+  };
+  actionmailer = {
+    dependencies = ["actionpack" "actionview" "activejob" "mail" "rails-dom-testing"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0kg2nayy8wmxhfp52217h80yqr0mcg793xw3cjlfg9lkvdh0nb5z";
+      type = "gem";
+    };
+    version = "5.2.4.2";
+  };
+  actionpack = {
+    dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1w1l9i6q9xns4yl41l582pyc5i1xi40yyyq802drm58gwylv3wax";
+      type = "gem";
+    };
+    version = "5.2.4.2";
+  };
+  actionpack-xml_parser = {
+    dependencies = ["actionpack" "railties"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1rnm6jrw3mzcf2g3q498igmhsn0kfkxq79w0nm532iclx4g4djs0";
+      type = "gem";
+    };
+    version = "2.0.1";
+  };
+  actionview = {
+    dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fp3my6216lb9gp800s46y0404jwfl6xb3j9rvx4zf087497q8lp";
+      type = "gem";
+    };
+    version = "5.2.4.2";
+  };
+  activejob = {
+    dependencies = ["activesupport" "globalid"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qsvb89rwqrp779mvpn67qbzidg2q6d1fa8kwybvpc93nzb9zpvi";
+      type = "gem";
+    };
+    version = "5.2.4.2";
+  };
+  activemodel = {
+    dependencies = ["activesupport"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jcfdv00kmifj86d0z347nw55q1f8vwzr1aa9jrfnwz47ndi22di";
+      type = "gem";
+    };
+    version = "5.2.4.2";
+  };
+  activerecord = {
+    dependencies = ["activemodel" "activesupport" "arel"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yaqrh23c8krrjw6rvxv7pvnkpp46nk5aq9z2daby640si4xpmp5";
+      type = "gem";
+    };
+    version = "5.2.4.2";
+  };
+  activestorage = {
+    dependencies = ["actionpack" "activerecord" "marcel"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1d51zp17c9k4brivm8y46rszcz07s5rb75gmkm0dpzg3rz3v38s9";
+      type = "gem";
+    };
+    version = "5.2.4.2";
+  };
+  activesupport = {
+    dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0y1397g5xxinjyxjsdmp8c92yn0y3bd2hl4wbmmrpd08bggy6flc";
+      type = "gem";
+    };
+    version = "5.2.4.2";
+  };
+  addressable = {
+    dependencies = ["public_suffix"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy";
+      type = "gem";
+    };
+    version = "2.7.0";
+  };
+  arel = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0";
+      type = "gem";
+    };
+    version = "9.0.0";
+  };
+  ast = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7";
+      type = "gem";
+    };
+    version = "2.4.0";
+  };
+  builder = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr";
+      type = "gem";
+    };
+    version = "3.2.4";
+  };
+  capybara = {
+    dependencies = ["addressable" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bq1y3gy98rqgw8z69b42isc2klb75fvlwvpi36vycf1yk0sfmmx";
+      type = "gem";
+    };
+    version = "3.25.0";
+  };
+  childprocess = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ic028k8xgm2dds9mqnvwwx3ibaz32j8455zxr9f4bcnviyahya5";
+      type = "gem";
+    };
+    version = "3.0.0";
+  };
+  concurrent-ruby = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "094387x4yasb797mv07cs3g6f08y56virc2rjcpb1k79rzaj3nhl";
+      type = "gem";
+    };
+    version = "1.1.6";
+  };
+  crass = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pfl5c0pyqaparxaqxi6s4gfl21bdldwiawrc0aknyvflli60lfw";
+      type = "gem";
+    };
+    version = "1.0.6";
+  };
+  css_parser = {
+    dependencies = ["addressable"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04c4dl8cm5rjr50k9qa6yl9r05fk9zcb1zxh0y0cdahxlsgcydfw";
+      type = "gem";
+    };
+    version = "1.7.1";
+  };
+  csv = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00szzw96bqz59r0kaab4p75qb0wq54iahmq37wpdg96bxc8y80f5";
+      type = "gem";
+    };
+    version = "3.1.2";
+  };
+  docile = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qrwiyagxzl8zlx3dafb0ay8l14ib7imb2rsmx70i5cp420v8gif";
+      type = "gem";
+    };
+    version = "1.3.2";
+  };
+  erubi = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nwzxnqhr31fn7nbqmffcysvxjdfl3bhxi0bld5qqhcnfc1xd13x";
+      type = "gem";
+    };
+    version = "1.9.0";
+  };
+  globalid = {
+    dependencies = ["activesupport"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1";
+      type = "gem";
+    };
+    version = "0.4.2";
+  };
+  htmlentities = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj";
+      type = "gem";
+    };
+    version = "4.3.4";
+  };
+  i18n = {
+    dependencies = ["concurrent-ruby"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hfxnlyr618s25xpafw9mypa82qppjccbh292c4l3bj36az7f6wl";
+      type = "gem";
+    };
+    version = "1.6.0";
+  };
+  jaro_winkler = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh";
+      type = "gem";
+    };
+    version = "1.5.4";
+  };
+  json = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nrmw2r4nfxlfgprfgki3hjifgrcrs3l5zvm3ca3gb4743yr25mn";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+  loofah = {
+    dependencies = ["crass" "nokogiri"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jk9fgn5ayzbqvzqm11gbkqvas77zdbpkvynlylyiwynclgrn040";
+      type = "gem";
+    };
+    version = "2.5.0";
+  };
+  mail = {
+    dependencies = ["mini_mime"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc";
+      type = "gem";
+    };
+    version = "2.7.1";
+  };
+  marcel = {
+    dependencies = ["mimemagic"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx";
+      type = "gem";
+    };
+    version = "0.3.3";
+  };
+  method_source = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  mimemagic = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0frrfvz52fh4v1sb2xr9pyxhrxm5f7jppqxagpmd7c5ific66l9p";
+      type = "gem";
+    };
+    version = "0.3.4";
+  };
+  mini_magick = {
+    groups = ["minimagick"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qy09qrd5bwh8mkbj514n5vcw9ni73218h9s3zmvbpmdwrnzi8j4";
+      type = "gem";
+    };
+    version = "4.9.5";
+  };
+  mini_mime = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1axm0rxyx3ss93wbmfkm78a6x03l8y4qy60rhkkiq0aza0vwq3ha";
+      type = "gem";
+    };
+    version = "1.0.2";
+  };
+  mini_portile2 = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy";
+      type = "gem";
+    };
+    version = "2.4.0";
+  };
+  minitest = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0g73x65hmjph8dg1h3rkzfg7ys3ffxm35hj35grw75fixmq53qyz";
+      type = "gem";
+    };
+    version = "5.14.0";
+  };
+  mocha = {
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hxmkm8qxd04vwj8mqnpyrf2dwy7g1k9zipdfhl4y71cw7ijm9n4";
+      type = "gem";
+    };
+    version = "1.11.2";
+  };
+  mysql2 = {
+    groups = ["default"];
+    platforms = [{
+      engine = "maglev";
+    } {
+      engine = "mingw";
+    } {
+      engine = "mingw";
+    } {
+      engine = "ruby";
+    }];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0d14pcy5m4hjig0zdxnl9in5f4izszc7v9zcczf2gyi5kiyxk8jw";
+      type = "gem";
+    };
+    version = "0.5.3";
+  };
+  net-ldap = {
+    groups = ["ldap"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vzfhivjfr9q65hkln7xig3qcba6fw9y4kb4384fpm7d7ww0b7xg";
+      type = "gem";
+    };
+    version = "0.16.2";
+  };
+  nio4r = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c";
+      type = "gem";
+    };
+    version = "2.5.2";
+  };
+  nokogiri = {
+    dependencies = ["mini_portile2"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12j76d0bp608932xkzmfi638c7aqah57l437q8494znzbj610qnm";
+      type = "gem";
+    };
+    version = "1.10.9";
+  };
+  parallel = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12jijkap4akzdv11lm08dglsc8jmc87xcgq6947i1s3qb69f4zn2";
+      type = "gem";
+    };
+    version = "1.19.1";
+  };
+  parser = {
+    dependencies = ["ast"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "07awrcwm2xibglrh7qwpj24vwzn9p64m7bmfr9xbrlffaznr0ii7";
+      type = "gem";
+    };
+    version = "2.7.1.0";
+  };
+  pg = {
+    groups = ["default"];
+    platforms = [{
+      engine = "maglev";
+    } {
+      engine = "mingw";
+    } {
+      engine = "mingw";
+    } {
+      engine = "ruby";
+    }];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fmnyxcyrvgdbgq7m09whgn9i8rwfybk0w8aii1nc4g5kqw0k2jy";
+      type = "gem";
+    };
+    version = "1.1.4";
+  };
+  public_suffix = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1l1kqw75asziwmzrig8rywxswxz8l91sc3pvns02ffsqac1a3wiz";
+      type = "gem";
+    };
+    version = "4.0.4";
+  };
+  puma = {
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mg8yh478mh55pg7pv8z7xyvk35ra98hy61z9lwkfr8fzyyz57zs";
+      type = "gem";
+    };
+    version = "3.12.4";
+  };
+  rack = {
+    groups = ["default" "openid" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10mp9s48ssnw004aksq90gvhdvwczh8j6q82q2kqiqq92jd1zxbp";
+      type = "gem";
+    };
+    version = "2.2.2";
+  };
+  rack-openid = {
+    dependencies = ["rack" "ruby-openid"];
+    groups = ["openid"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0sg85yn981j3a0iri3ch4znzdwscvz29l7vrk3dafqw4fdg31llc";
+      type = "gem";
+    };
+    version = "1.4.2";
+  };
+  rack-test = {
+    dependencies = ["rack"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  rails = {
+    dependencies = ["actioncable" "actionmailer" "actionpack" "actionview" "activejob" "activemodel" "activerecord" "activestorage" "activesupport" "railties" "sprockets-rails"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1x8k6n4yziwf386prhvr9d9plc9fwv0j8spw2bnmkwhf54v2ias4";
+      type = "gem";
+    };
+    version = "5.2.4.2";
+  };
+  rails-dom-testing = {
+    dependencies = ["activesupport" "nokogiri"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i";
+      type = "gem";
+    };
+    version = "2.0.3";
+  };
+  rails-html-sanitizer = {
+    dependencies = ["loofah"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1icpqmxbppl4ynzmn6dx7wdil5hhq6fz707m9ya6d86c7ys8sd4f";
+      type = "gem";
+    };
+    version = "1.3.0";
+  };
+  railties = {
+    dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p2rnd1xdqlk19k3m5gd058yzvwjj25k5hwn4km683b5dhylpd16";
+      type = "gem";
+    };
+    version = "5.2.4.2";
+  };
+  rainbow = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk";
+      type = "gem";
+    };
+    version = "3.0.0";
+  };
+  rake = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0w6qza25bq1s825faaglkx1k6d59aiyjjk3yw3ip5sb463mhhai9";
+      type = "gem";
+    };
+    version = "13.0.1";
+  };
+  rbpdf = {
+    dependencies = ["htmlentities" "rbpdf-font"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0sdj8frakpdms820rwlil38h9bh3p24xmwnjrxsjc1p9irc3za71";
+      type = "gem";
+    };
+    version = "1.20.1";
+  };
+  rbpdf-font = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pxlr0l4vf785qpy55m439dyii63a26l0sd0yyhbwwcy9zm9hd1v";
+      type = "gem";
+    };
+    version = "1.19.1";
+  };
+  redcarpet = {
+    groups = ["markdown"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0skcyx1h8b5ms0rp2zm3ql6g322b8c1adnkwkqyv7z3kypb4bm7k";
+      type = "gem";
+    };
+    version = "3.5.0";
+  };
+  regexp_parser = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0l2vcj9qffj5b3v9jsyi4k994bdj3rjz7l9ql8x04lndqxfrrrv2";
+      type = "gem";
+    };
+    version = "1.7.0";
+  };
+  request_store = {
+    dependencies = ["rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1963330z03fk382fi8y231ygcbnh86m91dqlp5rh1mwy9ihzzl6d";
+      type = "gem";
+    };
+    version = "1.4.1";
+  };
+  roadie = {
+    dependencies = ["css_parser" "nokogiri"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01kld3drqfiih5x8c13cvr6dpvdl7jml0v9bcw4fsy322lax3kn0";
+      type = "gem";
+    };
+    version = "4.0.0";
+  };
+  roadie-rails = {
+    dependencies = ["railties" "roadie"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fmn7kkbpgipjsx65rw7hqa3bwinlqykx5qf1x28ya9ag8v2q0ph";
+      type = "gem";
+    };
+    version = "2.1.1";
+  };
+  rouge = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08fpnxbhqv5sqpnfjasl1ysxafssyq4q1yhcqamqqzmb9czj1czw";
+      type = "gem";
+    };
+    version = "3.12.0";
+  };
+  rubocop = {
+    dependencies = ["jaro_winkler" "parallel" "parser" "rainbow" "ruby-progressbar" "unicode-display_width"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "07x51ixlx76y194xsszh5lbkaqakz44ykbrjxg3qaggbs18790q0";
+      type = "gem";
+    };
+    version = "0.76.0";
+  };
+  rubocop-performance = {
+    dependencies = ["rubocop"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fk9nd3b24avgsqp726hy2pl1iyfjrh6jni97wkky6kqy0lq6zq2";
+      type = "gem";
+    };
+    version = "1.5.2";
+  };
+  rubocop-rails = {
+    dependencies = ["rack" "rubocop"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1q7ffsq1cjm4m949nh935kjzv4zf1pacnrl00siwh8flhcn3mmjf";
+      type = "gem";
+    };
+    version = "2.3.2";
+  };
+  ruby-openid = {
+    groups = ["openid"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "190p1m0bxd9xkfk1j6cpcv3x5c367g36nsglg4m1fcwqdd13k3kz";
+      type = "gem";
+    };
+    version = "2.9.2";
+  };
+  ruby-progressbar = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf";
+      type = "gem";
+    };
+    version = "1.10.1";
+  };
+  rubyzip = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0590m2pr9i209pp5z4mx0nb1961ishdiqb28995hw1nln1d1b5ji";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+  selenium-webdriver = {
+    dependencies = ["childprocess" "rubyzip"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0adcvp86dinaqq3nhf8p3m0rl2g6q0a4h52k0i7kdnsg1qz9k86y";
+      type = "gem";
+    };
+    version = "3.142.7";
+  };
+  simplecov = {
+    dependencies = ["docile" "json" "simplecov-html"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1135k46nik05sdab30yxb8264lqiz01c8v000g16cl9pjc4mxrdw";
+      type = "gem";
+    };
+    version = "0.17.1";
+  };
+  simplecov-html = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn";
+      type = "gem";
+    };
+    version = "0.10.2";
+  };
+  sprockets = {
+    dependencies = ["concurrent-ruby" "rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jm37zpvvm1arxjwrd6am0wrdbfhrhc5y0l4p2i3p11z04bsvgap";
+      type = "gem";
+    };
+    version = "4.0.0";
+  };
+  sprockets-rails = {
+    dependencies = ["actionpack" "activesupport" "sprockets"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ab42pm8p5zxpv3sfraq45b9lj39cz9mrpdirm30vywzrwwkm5p1";
+      type = "gem";
+    };
+    version = "3.2.1";
+  };
+  thor = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xbhkmyhlxwzshaqa7swy2bx6vd64mm0wrr8g3jywvxy7hg0cwkm";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  thread_safe = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
+      type = "gem";
+    };
+    version = "0.3.6";
+  };
+  tzinfo = {
+    dependencies = ["thread_safe"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1i3jh086w1kbdj3k5l60lc3nwbanmzdf8yjj3mlrx9b2gjjxhi9r";
+      type = "gem";
+    };
+    version = "1.2.7";
+  };
+  unicode-display_width = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1pppclzq4qb26g321553nm9xqca3zgllvpwb2kqxsdadwj51s09x";
+      type = "gem";
+    };
+    version = "1.6.1";
+  };
+  websocket-driver = {
+    dependencies = ["websocket-extensions"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2";
+      type = "gem";
+    };
+    version = "0.7.1";
+  };
+  websocket-extensions = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00i624ng1nvkz1yckj3f8yxxp6hi7xaqf40qh9q3hj2n1l9i8g6m";
+      type = "gem";
+    };
+    version = "0.1.4";
+  };
+  xpath = {
+    dependencies = ["nokogiri"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd";
+      type = "gem";
+    };
+    version = "3.2.0";
+  };
+  yard = {
+    groups = ["development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1g0bw2qcl48fxawrdf68l229508z53mrqisavji2lkxzv4w4j2pp";
+      type = "gem";
+    };
+    version = "0.9.24";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/version-management/reposurgeon/default.nix b/nixpkgs/pkgs/applications/version-management/reposurgeon/default.nix
new file mode 100644
index 000000000000..f52fd30d8391
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/reposurgeon/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchurl, makeWrapper, python27Packages, git
+, docbook_xml_dtd_412, docbook_xsl, asciidoc, xmlto, pypy
+, breezy ? null, cvs ? null, darcs ? null, fossil ? null
+, mercurial ? null, monotone ? null, rcs ? null
+, subversion ? null, cvs_fast_export ? null }:
+
+with stdenv; with lib;
+let
+  inherit (python27Packages) python;
+in mkDerivation rec {
+  name = "reposurgeon-${meta.version}";
+  meta = {
+    description = "A tool for editing version-control repository history";
+    version = "3.44";
+    license = licenses.bsd3;
+    homepage = "http://www.catb.org/esr/reposurgeon/";
+    maintainers = with maintainers; [ dfoxfranke ];
+    platforms = platforms.all;
+  };
+
+  src = fetchurl {
+    url = "http://www.catb.org/~esr/reposurgeon/reposurgeon-3.44.tar.xz";
+    sha256 = "0il6hwrsm2qgg0vp5fcjh478y2x4zyw3mx2apcwc7svfj86pf7pn";
+  };
+
+  # install fails because the files README.md, NEWS, and TODO were not included in the source distribution
+  patches = [ ./fix-makefile.patch ];
+
+  buildInputs =
+    [ docbook_xml_dtd_412 docbook_xsl asciidoc xmlto makeWrapper pypy ];
+
+  preBuild = ''
+    makeFlagsArray=(
+      XML_CATALOG_FILES="${docbook_xml_dtd_412}/xml/dtd/docbook/catalog.xml ${docbook_xsl}/xml/xsl/docbook/catalog.xml"
+      prefix="$out"
+      pyinclude="-I${python}/include/python2.7"
+      pylib="-L${python}/lib -lpython2.7"
+    )
+  '';
+
+  postInstall =
+    let
+      binpath = makeBinPath (
+        filter (x: x != null)
+        [ out git breezy cvs darcs fossil mercurial
+          monotone rcs src subversion cvs_fast_export ]
+      );
+      pythonpath = makeSearchPathOutput "lib" python.sitePackages (
+        filter (x: x != null)
+        [ python27Packages.readline or null python27Packages.hglib or null ]
+      );
+    in ''
+      for prog in reposurgeon repodiffer repotool; do
+        wrapProgram $out/bin/$prog \
+          --prefix PATH : "${binpath}" \
+          --prefix PYTHONPATH : "${pythonpath}"
+      done
+    ''
+  ;
+}
diff --git a/nixpkgs/pkgs/applications/version-management/reposurgeon/fix-makefile.patch b/nixpkgs/pkgs/applications/version-management/reposurgeon/fix-makefile.patch
new file mode 100644
index 000000000000..0a659c93406d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/reposurgeon/fix-makefile.patch
@@ -0,0 +1,12 @@
+diff -Naur reposurgeon-3.44/Makefile reposurgeon-3.44-new/Makefile
+--- reposurgeon-3.44/Makefile	2018-04-29 12:27:43.000000000 -0700
++++ reposurgeon-3.44-new/Makefile	2018-08-01 17:38:15.582789739 -0700
+@@ -36,7 +36,7 @@
+ MANPAGES = reposurgeon.1 repotool.1 repodiffer.1 repomapper.1 repocutter.1
+ HTMLFILES = $(MANPAGES:.1=.html) \
+             dvcs-migration-guide.html features.html reporting-bugs.html
+-SHARED    = README.md NEWS TODO reposurgeon-git-aliases $(HTMLFILES)
++SHARED    = reposurgeon-git-aliases $(HTMLFILES)
+ 
+ all:  $(MANPAGES) $(HTMLFILES)
+ 
diff --git a/nixpkgs/pkgs/applications/version-management/sit/default.nix b/nixpkgs/pkgs/applications/version-management/sit/default.nix
new file mode 100644
index 000000000000..67bda7a4fddc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/sit/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, rustPlatform, cmake, libzip, gnupg,
+  # Darwin
+  libiconv, CoreFoundation, Security }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "sit";
+  version = "0.4.1";
+
+  src = fetchFromGitHub {
+    owner = "sit-fyi";
+    repo = "sit";
+    rev = "v${version}";
+    sha256 = "06xkhlfix0h6di6cnvc4blbj3mjy90scbh89dvywbx16wjlc79pf";
+  };
+
+  buildInputs = [ cmake libzip gnupg ] ++
+    (if stdenv.isDarwin then [ libiconv CoreFoundation Security ] else []);
+
+  preCheck = ''
+    export HOME=$(mktemp -d)
+  '';
+
+  cargoSha256 = "092yfpr2svp1qy7xis1q0sdkbsjmmswmdwb0rklrc0yhydcsghp9";
+
+  meta = with stdenv.lib; {
+    description = "Serverless Information Tracker";
+    homepage = "https://sit.fyi/";
+    license = with licenses; [ asl20 /* or */ mit ];
+    maintainers = with maintainers; [ dywedir yrashk ];
+    platforms = platforms.all;
+    # Upstream has not had a release in several years, and dependencies no
+    # longer compile with the latest Rust compiler.
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/smartgithg/default.nix b/nixpkgs/pkgs/applications/version-management/smartgithg/default.nix
new file mode 100644
index 000000000000..51fe70d3952f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/smartgithg/default.nix
@@ -0,0 +1,94 @@
+{ stdenv
+, fetchurl
+, makeDesktopItem
+, jre
+, gtk3
+, glib
+, gnome3
+, wrapGAppsHook
+, libXtst
+, which
+}:
+
+stdenv.mkDerivation rec {
+  pname = "smartgithg";
+  version = "19.1.1";
+
+  src = fetchurl {
+    url = "https://www.syntevo.com/downloads/smartgit/smartgit-linux-${builtins.replaceStrings [ "." ] [ "_" ] version}.tar.gz";
+    sha256 = "0i0dvyy9d63f4hk8czlyk83ai0ywhqp7wbdkq3s87l7irwgs42jy";
+  };
+
+  nativeBuildInputs = [ wrapGAppsHook ];
+
+  buildInputs = [ jre gnome3.adwaita-icon-theme gtk3 ];
+
+  preFixup = with stdenv.lib; ''
+    gappsWrapperArgs+=( \
+      --prefix PATH : ${makeBinPath [ jre which ]} \
+      --prefix LD_LIBRARY_PATH : ${makeLibraryPath [
+        gtk3
+        glib
+        libXtst
+      ]} \
+      --prefix JRE_HOME : ${jre} \
+      --prefix JAVA_HOME : ${jre} \
+      --prefix SMARTGITHG_JAVA_HOME : ${jre} \
+    ) \
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    sed -i '/ --login/d' bin/smartgit.sh
+    mkdir -pv $out/{bin,share/applications,share/icons/hicolor/scalable/apps/}
+    cp -av ./{dictionaries,lib} $out/
+    cp -av bin/smartgit.sh $out/bin/smartgit
+    ln -sfv $out/bin/smartgit $out/bin/smartgithg
+
+    cp -av $desktopItem/share/applications/* $out/share/applications/
+    for icon_size in 32 48 64 128 256; do
+        path=$icon_size'x'$icon_size
+        icon=bin/smartgit-$icon_size.png
+        mkdir -p $out/share/icons/hicolor/$path/apps
+        cp $icon $out/share/icons/hicolor/$path/apps/smartgit.png
+    done
+
+    cp -av bin/smartgit.svg $out/share/icons/hicolor/scalable/apps/
+
+    runHook postInstall
+  '';
+
+  desktopItem = with stdenv.lib; makeDesktopItem rec {
+    name = "smartgit";
+    exec = "smartgit";
+    comment = meta.description;
+    icon = "smartgit";
+    desktopName = "SmartGit";
+    categories = concatStringsSep ";" [
+      "Application"
+      "Development"
+      "RevisionControl"
+    ];
+    mimeType = concatStringsSep ";" [
+      "x-scheme-handler/git"
+      "x-scheme-handler/smartgit"
+      "x-scheme-handler/sourcetree"
+    ];
+    startupNotify = "true";
+    extraEntries = ''
+      Keywords=git
+      StartupWMClass=${name}
+      Version=1.0
+      Encoding=UTF-8
+    '';
+  };
+
+  meta = with stdenv.lib; {
+    description = "GUI for Git, Mercurial, Subversion";
+    homepage = "https://www.syntevo.com/smartgit/";
+    license = licenses.unfree;
+    platforms = platforms.linux;
+    maintainers = with stdenv.lib.maintainers; [ jraygauthier ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/sourcehut/builds.nix b/nixpkgs/pkgs/applications/version-management/sourcehut/builds.nix
new file mode 100644
index 000000000000..1bf78c548ee8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/sourcehut/builds.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchgit, buildPythonPackage
+, python
+, buildGoModule
+, srht, redis, celery, pyyaml, markdown }:
+
+let
+  version = "0.56.13";
+
+  buildWorker = src: buildGoModule {
+    inherit src version;
+    pname = "builds-sr-ht-worker";
+    goPackagePath = "git.sr.ht/~sircmpwn/builds.sr.ht/worker";
+
+  vendorSha256 = "0prdlihcy5yz760llwyby747yy2981dn3gy401a48df7ndlfj6lp";
+  };
+in buildPythonPackage rec {
+  inherit version;
+  pname = "buildsrht";
+
+  src = fetchgit {
+    url = "https://git.sr.ht/~sircmpwn/builds.sr.ht";
+    rev = version;
+    sha256 = "0la9i93fxxphi4gf913ccjiqlfn92h3nbpl9gxcwcplm2vvi4nmq";
+  };
+
+  patches = [
+    ./use-srht-path.patch
+  ];
+
+  nativeBuildInputs = srht.nativeBuildInputs;
+
+  propagatedBuildInputs = [
+    srht
+    redis
+    celery
+    pyyaml
+    markdown
+  ];
+
+  preBuild = ''
+    export PKGVER=${version}
+    export SRHT_PATH=${srht}/${python.sitePackages}/srht
+  '';
+
+  postInstall = ''
+    mkdir -p $out/lib
+    mkdir -p $out/bin/builds.sr.ht
+
+    cp -r images $out/lib
+    cp contrib/submit_image_build $out/bin/builds.sr.ht
+    cp ${buildWorker "${src}/worker"}/bin/worker $out/bin/builds.sr.ht-worker
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://git.sr.ht/~sircmpwn/builds.sr.ht";
+    description = "Continuous integration service for the sr.ht network";
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ eadwu ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/version-management/sourcehut/core.nix b/nixpkgs/pkgs/applications/version-management/sourcehut/core.nix
new file mode 100644
index 000000000000..0023eb407b3a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/sourcehut/core.nix
@@ -0,0 +1,70 @@
+{ stdenv, fetchgit, fetchNodeModules, buildPythonPackage
+, pgpy, flask, bleach, misaka, humanize, html5lib, markdown, psycopg2, pygments
+, requests, sqlalchemy, cryptography, beautifulsoup4, sqlalchemy-utils, prometheus_client
+, celery, alembic, importlib-metadata
+, sassc, nodejs
+, writeText }:
+
+buildPythonPackage rec {
+  pname = "srht";
+  version = "0.59.13";
+
+  src = fetchgit {
+    url = "https://git.sr.ht/~sircmpwn/core.sr.ht";
+    rev = version;
+    sha256 = "1rgndpr0w25mxg0d8x54lay82d0p01aygallsgr1lw5zs4r3ldz6";
+  };
+
+  node_modules = fetchNodeModules {
+    src = "${src}/srht";
+    nodejs = nodejs;
+    sha256 = "0gwa2xb75g7fclrsr7r131kj8ri5gmhd96yw1iws5pmgsn2rlqi1";
+  };
+
+  patches = [
+    ./disable-npm-install.patch
+  ];
+
+  nativeBuildInputs = [
+    sassc
+    nodejs
+  ];
+
+  propagatedBuildInputs = [
+    pgpy
+    flask
+    bleach
+    misaka
+    humanize
+    html5lib
+    markdown
+    psycopg2
+    pygments
+    requests
+    sqlalchemy
+    cryptography
+    beautifulsoup4
+    sqlalchemy-utils
+    prometheus_client
+
+    # Unofficial runtime dependencies?
+    celery
+    alembic
+    importlib-metadata
+  ];
+
+  PKGVER = version;
+
+  preBuild = ''
+    cp -r ${node_modules} srht/node_modules
+  '';
+
+  dontUseSetuptoolsCheck = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://git.sr.ht/~sircmpwn/srht";
+    description = "Core modules for sr.ht";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ eadwu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/sourcehut/default.nix b/nixpkgs/pkgs/applications/version-management/sourcehut/default.nix
new file mode 100644
index 000000000000..f6de0036afe0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/sourcehut/default.nix
@@ -0,0 +1,39 @@
+{ python37, openssl
+, callPackage, recurseIntoAttrs }:
+
+# To expose the *srht modules, they have to be a python module so we use `buildPythonModule`
+# Then we expose them through all-packages.nix as an application through `toPythonApplication`
+# https://github.com/NixOS/nixpkgs/pull/54425#discussion_r250688781
+
+let
+  fetchNodeModules = callPackage ./fetchNodeModules.nix { };
+
+  python = python37.override {
+    packageOverrides = self: super: {
+      srht = self.callPackage ./core.nix { inherit fetchNodeModules; };
+
+      buildsrht = self.callPackage ./builds.nix { };
+      dispatchsrht = self.callPackage ./dispatch.nix { };
+      gitsrht = self.callPackage ./git.nix { };
+      hgsrht = self.callPackage ./hg.nix { };
+      listssrht = self.callPackage ./lists.nix { };
+      mansrht = self.callPackage ./man.nix { };
+      metasrht = self.callPackage ./meta.nix { };
+      pastesrht = self.callPackage ./paste.nix { };
+      todosrht = self.callPackage ./todo.nix { };
+
+      scmsrht = self.callPackage ./scm.nix { };
+    };
+  };
+in with python.pkgs; recurseIntoAttrs {
+  inherit python;
+  buildsrht = toPythonApplication buildsrht;
+  dispatchsrht = toPythonApplication dispatchsrht;
+  gitsrht = toPythonApplication gitsrht;
+  hgsrht = toPythonApplication hgsrht;
+  listssrht = toPythonApplication listssrht;
+  mansrht = toPythonApplication mansrht;
+  metasrht = toPythonApplication metasrht;
+  pastesrht = toPythonApplication pastesrht;
+  todosrht = toPythonApplication todosrht;
+}
diff --git a/nixpkgs/pkgs/applications/version-management/sourcehut/disable-npm-install.patch b/nixpkgs/pkgs/applications/version-management/sourcehut/disable-npm-install.patch
new file mode 100644
index 000000000000..3a8d1c82b341
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/sourcehut/disable-npm-install.patch
@@ -0,0 +1,14 @@
+diff --git a/setup.py b/setup.py
+index d63bac8..e1d0c35 100755
+--- a/setup.py
++++ b/setup.py
+@@ -5,9 +5,6 @@ import glob
+ import os
+ import sys
+ 
+-if subprocess.call(["npm", "i"], cwd="srht") != 0:
+-    sys.exit(1)
+-
+ ver = os.environ.get("PKGVER") or subprocess.run(['git', 'describe', '--tags'],
+       stdout=subprocess.PIPE).stdout.decode().strip()
+ 
diff --git a/nixpkgs/pkgs/applications/version-management/sourcehut/dispatch.nix b/nixpkgs/pkgs/applications/version-management/sourcehut/dispatch.nix
new file mode 100644
index 000000000000..1531a6e69b56
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/sourcehut/dispatch.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchgit, buildPythonPackage
+, python
+, srht, pyyaml, PyGithub }:
+
+buildPythonPackage rec {
+  pname = "dispatchsrht";
+  version = "0.14.1";
+
+  src = fetchgit {
+    url = "https://git.sr.ht/~sircmpwn/dispatch.sr.ht";
+    rev = version;
+    sha256 = "0h3nn73qvxspqv0myiss0y5i8jynh2rh9m57awy89vv6rwgai7vq";
+  };
+
+  patches = [
+    ./use-srht-path.patch
+  ];
+
+  nativeBuildInputs = srht.nativeBuildInputs;
+
+  propagatedBuildInputs = [
+    srht
+    pyyaml
+    PyGithub
+  ];
+
+  preBuild = ''
+    export PKGVER=${version}
+    export SRHT_PATH=${srht}/${python.sitePackages}/srht
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://dispatch.sr.ht/~sircmpwn/dispatch.sr.ht";
+    description = "Task dispatcher and service integration tool for the sr.ht network";
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ eadwu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/sourcehut/fetchNodeModules.nix b/nixpkgs/pkgs/applications/version-management/sourcehut/fetchNodeModules.nix
new file mode 100644
index 000000000000..047890a932ca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/sourcehut/fetchNodeModules.nix
@@ -0,0 +1,26 @@
+{ stdenv, jq }: { src, nodejs, sha256 }:
+
+# Only npm >= 5.4.2 is deterministic, see:
+# https://github.com/npm/npm/issues/17979#issuecomment-332701215
+assert stdenv.lib.versionAtLeast nodejs.version "8.9.0";
+
+stdenv.mkDerivation {
+  name = "node_modules";
+
+  outputHashAlgo = "sha256";
+  outputHash = sha256;
+  outputHashMode = "recursive";
+
+  nativeBuildInputs = [ jq nodejs ];
+
+  buildCommand = ''
+    cp -r ${src}/* .
+    HOME=. npm install --force --ignore-scripts --only=production
+    for f in $(find node_modules -name package.json); do
+      # https://github.com/npm/npm/issues/10393
+      jq -S 'delpaths(keys | map(select(startswith("_")) | [.]))' $f > $f.tmp
+      mv $f.tmp $f
+    done
+    mv node_modules $out
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/version-management/sourcehut/git.nix b/nixpkgs/pkgs/applications/version-management/sourcehut/git.nix
new file mode 100644
index 000000000000..992b889c831c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/sourcehut/git.nix
@@ -0,0 +1,82 @@
+{ stdenv, fetchgit, buildPythonPackage
+, python
+, buildGoModule
+, srht, minio, pygit2, scmsrht }:
+
+let
+  version = "0.50.3";
+
+  buildShell = src: buildGoModule {
+    inherit src version;
+    pname = "gitsrht-shell";
+    goPackagePath = "git.sr.ht/~sircmpwn/git.sr.ht/gitsrht-shell";
+
+  vendorSha256 = "1zvbqn4r940mibn4h1cqz94gbr476scm281ps361n0rfqlimw8g5";
+  };
+
+  buildDispatcher = src: buildGoModule {
+    inherit src version;
+    pname = "gitsrht-dispatcher";
+    goPackagePath = "git.sr.ht/~sircmpwn/git.sr.ht/gitsrht-dispatch";
+
+  vendorSha256 = "1lzkf13m54pq0gnn3bcxc80nfg76hgck4l8q8jpaicrsiwgcyrd9";
+  };
+
+  buildKeys = src: buildGoModule {
+    inherit src version;
+    pname = "gitsrht-keys";
+    goPackagePath = "git.sr.ht/~sircmpwn/git.sr.ht/gitsrht-keys";
+
+  vendorSha256 = "16j7kpar318s4766pln8xn6d51xqblwig5n1jywhj0sl80qjl5cv";
+  };
+
+  buildUpdateHook = src: buildGoModule {
+    inherit src version;
+    pname = "gitsrht-update-hook";
+    goPackagePath = "git.sr.ht/~sircmpwn/git.sr.ht/gitsrht-update-hook";
+
+  vendorSha256 = "1rmv3p60g6w4h4v9wx99jkyx0q02snslyjrjy9n1flardjs01b63";
+  };
+in buildPythonPackage rec {
+  inherit version;
+  pname = "gitsrht";
+
+  src = fetchgit {
+    url = "https://git.sr.ht/~sircmpwn/git.sr.ht";
+    rev = version;
+    sha256 = "0rxsr8cizac5xv8bgx2s1p2q4n8i5s51p9qbqdjad9z1xmwi6rvn";
+  };
+
+  patches = [
+    ./use-srht-path.patch
+  ];
+
+  nativeBuildInputs = srht.nativeBuildInputs;
+
+  propagatedBuildInputs = [
+    srht
+    minio
+    pygit2
+    scmsrht
+  ];
+
+  preBuild = ''
+    export PKGVER=${version}
+    export SRHT_PATH=${srht}/${python.sitePackages}/srht
+  '';
+
+  postInstall = ''
+    mkdir -p $out/bin
+    cp ${buildShell "${src}/gitsrht-shell"}/bin/gitsrht-shell $out/bin/gitsrht-shell
+    cp ${buildDispatcher "${src}/gitsrht-dispatch"}/bin/gitsrht-dispatch $out/bin/gitsrht-dispatch
+    cp ${buildKeys "${src}/gitsrht-keys"}/bin/gitsrht-keys $out/bin/gitsrht-keys
+    cp ${buildUpdateHook "${src}/gitsrht-update-hook"}/bin/gitsrht-update-hook $out/bin/gitsrht-update-hook
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://git.sr.ht/~sircmpwn/git.sr.ht";
+    description = "Git repository hosting service for the sr.ht network";
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ eadwu ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/version-management/sourcehut/hg.nix b/nixpkgs/pkgs/applications/version-management/sourcehut/hg.nix
new file mode 100644
index 000000000000..bddc065eacfd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/sourcehut/hg.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchhg, buildPythonPackage
+, python
+, srht, hglib, scmsrht, unidiff }:
+
+buildPythonPackage rec {
+  pname = "hgsrht";
+  version = "0.26.0";
+
+  src = fetchhg {
+    url = "https://hg.sr.ht/~sircmpwn/hg.sr.ht";
+    rev = version;
+    sha256 = "06sgd7pzjabwv66i4v5abqdnx955lqgjmbxxqkhhyq9k45jhlzci";
+  };
+
+  patches = [
+    ./use-srht-path.patch
+  ];
+
+  nativeBuildInputs = srht.nativeBuildInputs;
+
+  propagatedBuildInputs = [
+    srht
+    hglib
+    scmsrht
+    unidiff
+  ];
+
+  preBuild = ''
+    export PKGVER=${version}
+    export SRHT_PATH=${srht}/${python.sitePackages}/srht
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://git.sr.ht/~sircmpwn/hg.sr.ht";
+    description = "Mercurial repository hosting service for the sr.ht network";
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ eadwu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/sourcehut/lists.nix b/nixpkgs/pkgs/applications/version-management/sourcehut/lists.nix
new file mode 100644
index 000000000000..b1446bbebc8a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/sourcehut/lists.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchgit, buildPythonPackage
+, python
+, srht, asyncpg, aiosmtpd, pygit2, emailthreads }:
+
+buildPythonPackage rec {
+  pname = "listssrht";
+  version = "0.41.8";
+
+  src = fetchgit {
+    url = "https://git.sr.ht/~sircmpwn/lists.sr.ht";
+    rev = version;
+    sha256 = "0x49i1fdgi4nawnl362hp4d9ki5phh221zr1lxhidjm9vfv7lsqs";
+  };
+
+  patches = [
+    ./use-srht-path.patch
+  ];
+
+  nativeBuildInputs = srht.nativeBuildInputs;
+
+  propagatedBuildInputs = [
+    srht
+    pygit2
+    asyncpg
+    aiosmtpd
+    emailthreads
+  ];
+
+  preBuild = ''
+    export PKGVER=${version}
+    export SRHT_PATH=${srht}/${python.sitePackages}/srht
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://git.sr.ht/~sircmpwn/lists.sr.ht";
+    description = "Mailing list service for the sr.ht network";
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ eadwu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/sourcehut/man.nix b/nixpkgs/pkgs/applications/version-management/sourcehut/man.nix
new file mode 100644
index 000000000000..9b8e5901d9ef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/sourcehut/man.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchgit, buildPythonPackage
+, python
+, srht, pygit2 }:
+
+buildPythonPackage rec {
+  pname = "mansrht";
+  version = "0.14.7";
+
+  src = fetchgit {
+    url = "https://git.sr.ht/~sircmpwn/man.sr.ht";
+    rev = version;
+    sha256 = "1ys9186lbxhbg5ms9sxjk3va5qwjrsd4nzrz6zx50gzng9axd988";
+  };
+
+  patches = [
+    ./use-srht-path.patch
+  ];
+
+  nativeBuildInputs = srht.nativeBuildInputs;
+
+  propagatedBuildInputs = [
+    srht
+    pygit2
+  ];
+
+  preBuild = ''
+    export PKGVER=${version}
+    export SRHT_PATH=${srht}/${python.sitePackages}/srht
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://git.sr.ht/~sircmpwn/man.sr.ht";
+    description = "Wiki service for the sr.ht network";
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ eadwu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/sourcehut/meta.nix b/nixpkgs/pkgs/applications/version-management/sourcehut/meta.nix
new file mode 100644
index 000000000000..e2d155e1a066
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/sourcehut/meta.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchgit, buildPythonPackage
+, python
+, pgpy, srht, redis, bcrypt, qrcode, stripe, zxcvbn, alembic, pystache
+, sshpubkeys, weasyprint }:
+
+buildPythonPackage rec {
+  pname = "metasrht";
+  version = "0.42.13";
+
+  src = fetchgit {
+    url = "https://git.sr.ht/~sircmpwn/meta.sr.ht";
+    rev = version;
+    sha256 = "0bnrhk4w35w9dndihfqki66vyk123my98p4jqic4ypxcyffs1dd7";
+  };
+
+  nativeBuildInputs = srht.nativeBuildInputs;
+
+  propagatedBuildInputs = [
+    pgpy
+    srht
+    redis
+    bcrypt
+    qrcode
+    stripe
+    zxcvbn
+    alembic
+    pystache
+    sshpubkeys
+    weasyprint
+  ];
+
+  patches = [
+    ./use-srht-path.patch
+  ];
+
+  preBuild = ''
+    export PKGVER=${version}
+    export SRHT_PATH=${srht}/${python.sitePackages}/srht
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://git.sr.ht/~sircmpwn/meta.sr.ht";
+    description = "Account management service for the sr.ht network";
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ eadwu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/sourcehut/paste.nix b/nixpkgs/pkgs/applications/version-management/sourcehut/paste.nix
new file mode 100644
index 000000000000..26650156c5cd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/sourcehut/paste.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchgit, buildPythonPackage
+, python
+, srht, pyyaml }:
+
+buildPythonPackage rec {
+  pname = "pastesrht";
+  version = "0.10.3";
+
+  src = fetchgit {
+    url = "https://git.sr.ht/~sircmpwn/paste.sr.ht";
+    rev = version;
+    sha256 = "0sbs591ackrml09jmml4jspnbbqxqdmqy1c1j2rrvms6jcpkhlwb";
+  };
+
+  patches = [
+    ./use-srht-path.patch
+  ];
+
+  nativeBuildInputs = srht.nativeBuildInputs;
+
+  propagatedBuildInputs = [
+    srht
+    pyyaml
+  ];
+
+  preBuild = ''
+    export PKGVER=${version}
+    export SRHT_PATH=${srht}/${python.sitePackages}/srht
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://git.sr.ht/~sircmpwn/paste.sr.ht";
+    description = "Ad-hoc text file hosting service for the sr.ht network";
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ eadwu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/sourcehut/scm.nix b/nixpkgs/pkgs/applications/version-management/sourcehut/scm.nix
new file mode 100644
index 000000000000..788c90e4872a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/sourcehut/scm.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchgit, buildPythonPackage
+, srht, redis, pyyaml, buildsrht
+, writeText }:
+
+buildPythonPackage rec {
+  pname = "scmsrht";
+  version = "0.19.11";
+
+  src = fetchgit {
+    url = "https://git.sr.ht/~sircmpwn/scm.sr.ht";
+    rev = version;
+    sha256 = "0wqqqfp8f0gq0jqz3ac6kfkax2bw7yp8wznvsdw8mpmzqdjlhhkb";
+  };
+
+  nativeBuildInputs = srht.nativeBuildInputs;
+
+  propagatedBuildInputs = [
+    srht
+    redis
+    pyyaml
+    buildsrht
+  ];
+
+  preBuild = ''
+    export PKGVER=${version}
+  '';
+
+  dontUseSetuptoolsCheck = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://git.sr.ht/~sircmpwn/git.sr.ht";
+    description = "Shared support code for sr.ht source control services.";
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ eadwu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/sourcehut/todo.nix b/nixpkgs/pkgs/applications/version-management/sourcehut/todo.nix
new file mode 100644
index 000000000000..53cd8756ad3b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/sourcehut/todo.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchgit, buildPythonPackage
+, python
+, srht, redis, alembic, pystache
+, pytest, factory_boy, writeText }:
+
+buildPythonPackage rec {
+  pname = "todosrht";
+  version = "0.57.14";
+
+  src = fetchgit {
+    url = "https://git.sr.ht/~sircmpwn/todo.sr.ht";
+    rev = version;
+    sha256 = "15x78rl0zh1rw0izc36k47b27l75k7iyina5ajm3mgkslpndym4y";
+  };
+
+  patches = [
+    ./use-srht-path.patch
+  ];
+
+  nativeBuildInputs = srht.nativeBuildInputs;
+
+  propagatedBuildInputs = [
+    srht
+    redis
+    alembic
+    pystache
+  ];
+
+  preBuild = ''
+    export PKGVER=${version}
+    export SRHT_PATH=${srht}/${python.sitePackages}/srht
+  '';
+
+  # pytest tests fail
+  checkInputs = [
+    pytest
+    factory_boy
+  ];
+
+  dontUseSetuptoolsCheck = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://todo.sr.ht/~sircmpwn/todo.sr.ht";
+    description = "Ticket tracking service for the sr.ht network";
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ eadwu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/sourcehut/update.sh b/nixpkgs/pkgs/applications/version-management/sourcehut/update.sh
new file mode 100755
index 000000000000..fdc0639c4c6e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/sourcehut/update.sh
@@ -0,0 +1,54 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i bash -p git mercurial common-updater-scripts
+
+cd "$(dirname "${BASH_SOURCE[0]}")"
+root=../../../..
+
+default() {
+  (cd "$root" && nix-instantiate --eval --strict -A "sourcehut.python.pkgs.$1.meta.position" | sed -re 's/^"(.*):[0-9]+"$/\1/')
+}
+
+version() {
+  (cd "$root" && nix-instantiate --eval --strict -A "sourcehut.python.pkgs.$1.version" | tr -d '"')
+}
+
+src_url() {
+  (cd "$root" && nix-instantiate --eval --strict -A "sourcehut.python.pkgs.$1.src.drvAttrs.url" | tr -d '"')
+}
+
+get_latest_version() {
+  src="$(src_url "$1")"
+  tmp=$(mktemp -d)
+
+  if [ "$1" = "hgsrht" ]; then
+    hg clone "$src" "$tmp" &> /dev/null
+    printf "%s" "$(cd "$tmp" && hg log --limit 1 --template '{latesttag}')"
+  else
+    git clone "$src" "$tmp"
+    printf "%s" "$(cd "$tmp" && git describe $(git rev-list --tags --max-count=1))"
+  fi
+}
+
+update_version() {
+  default_nix="$(default "$1")"
+  version_old="$(version "$1")"
+  version="$(get_latest_version "$1")"
+
+  (cd "$root" && update-source-version "sourcehut.python.pkgs.$1" "$version")
+
+  git add "$default_nix"
+  git commit -m "$1: $version_old -> $version"
+}
+
+services=( "srht" "buildsrht" "dispatchsrht" "gitsrht" "hgsrht" "listssrht" "mansrht" "metasrht"
+           "pastesrht" "todosrht" "scmsrht" )
+
+# Whether or not a specific service is requested
+if [ -n "$1" ]; then
+  version="$(get_latest_version "$1")"
+  (cd "$root" && update-source-version "sourcehut.python.pkgs.$1" "$version")
+else
+  for service in "${services[@]}"; do
+    update_version "$service"
+  done
+fi
diff --git a/nixpkgs/pkgs/applications/version-management/sourcehut/use-srht-path.patch b/nixpkgs/pkgs/applications/version-management/sourcehut/use-srht-path.patch
new file mode 100644
index 000000000000..43b494bf9d21
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/sourcehut/use-srht-path.patch
@@ -0,0 +1,43 @@
+diff --git a/setup.py b/setup.py
+index e6ecfb6..89fa92a 100755
+--- a/setup.py
++++ b/setup.py
+@@ -5,28 +5,16 @@ import os
+ import site
+ import sys
+ 
+-if hasattr(site, 'getsitepackages'):
+-    pkg_dirs = site.getsitepackages()
+-    if site.getusersitepackages():
+-        pkg_dirs.append(site.getusersitepackages())
+-    for pkg_dir in pkg_dirs:
+-        srht_path = os.path.join(pkg_dir, "srht")
+-        if os.path.isdir(srht_path):
+-            break
+-    else:
+-        raise Exception("Can't find core srht module in your site packages "
+-            "directories. Please install it first.")
+-else:
+-    srht_path = os.getenv("SRHT_PATH")
+-    if not srht_path:
+-        raise Exception("You're running inside a virtual environment. "
+-            "Due to virtualenv limitations, you need to set the "
+-            "$SRHT_PATH environment variable to the path of the "
+-            "core srht module.")
+-    elif not os.path.isdir(srht_path):
+-        raise Exception(
+-            "The $SRHT_PATH environment variable points to an invalid "
+-            "directory: {}".format(srht_path))
++srht_path = os.getenv("SRHT_PATH")
++if not srht_path:
++    raise Exception("You're running inside a virtual environment. "
++        "Due to virtualenv limitations, you need to set the "
++        "$SRHT_PATH environment variable to the path of the "
++        "core srht module.")
++elif not os.path.isdir(srht_path):
++    raise Exception(
++        "The $SRHT_PATH environment variable points to an invalid "
++        "directory: {}".format(srht_path))
+ 
+ subp = subprocess.run(["make", "SRHT_PATH=" + srht_path])
+ if subp.returncode != 0:
diff --git a/nixpkgs/pkgs/applications/version-management/src/default.nix b/nixpkgs/pkgs/applications/version-management/src/default.nix
new file mode 100644
index 000000000000..58549fed73a3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/src/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, python, rcs, git, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "src";
+  version = "1.28";
+
+  src = fetchurl {
+    url = "http://www.catb.org/~esr/src/${pname}-${version}.tar.gz";
+    sha256 = "1fkr5z3mlj13djz9w1sb644wc7r1fywz52qq97byw1yyw0bqyi7f";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ python rcs git ];
+
+  preConfigure = ''
+    patchShebangs .
+  '';
+
+  makeFlags = [ "prefix=${placeholder "out"}" ];
+
+  postInstall = ''
+    wrapProgram $out/bin/src \
+      --suffix PATH ":" "${rcs}/bin"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple single-file revision control";
+    longDescription = ''
+      SRC, acronym of Simple Revision Control, is RCS/SCCS reloaded with a
+      modern UI, designed to manage single-file solo projects kept more than one
+      to a directory. Use it for FAQs, ~/bin directories, config files, and the
+      like. Features integer sequential revision numbers, a command set that
+      will seem familiar to Subversion/Git/hg users, and no binary blobs
+      anywhere.
+    '';
+    homepage = "http://www.catb.org/esr/src/";
+    changelog = "https://gitlab.com/esr/src/raw/${version}/NEWS";
+    license = licenses.bsd2;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ calvertvl AndersonTorres ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/srcml/default.nix b/nixpkgs/pkgs/applications/version-management/srcml/default.nix
new file mode 100644
index 000000000000..6deca94fc15c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/srcml/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, cmake, libxml2, libxslt, boost, libarchive, python, antlr,
+  curl
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  version = "0.9.5_beta";
+  pname = "srcml";
+
+  src = fetchurl {
+    url = "http://www.sdml.cs.kent.edu/lmcrs/srcML-${version}-src.tar.gz";
+    sha256 = "13pswdi75qjsw7z75lz7l3yjsvb58drihla2mwj0f9wfahaj3pam";
+  };
+
+  prePatch = ''
+    patchShebangs .
+    substituteInPlace CMake/install.cmake --replace /usr/local $out
+    '';
+
+  patches = [
+    ./gcc6.patch
+  ];
+
+  nativeBuildInputs = [ cmake antlr ];
+  buildInputs = [ libxml2 libxslt boost libarchive python curl ];
+
+  meta = {
+    description = "Infrastructure for exploration, analysis, and manipulation of source code";
+    homepage = "https://www.srcml.org";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ leenaars ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/srcml/gcc6.patch b/nixpkgs/pkgs/applications/version-management/srcml/gcc6.patch
new file mode 100644
index 000000000000..7cd596d9ea78
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/srcml/gcc6.patch
@@ -0,0 +1,26 @@
+diff --git i/CMake/config.cmake w/CMake/config.cmake
+index 28f8047..c596cf8 100644
+--- i/CMake/config.cmake
++++ w/CMake/config.cmake
+@@ -95,7 +95,7 @@ else()
+     find_package(LibXml2 REQUIRED)
+     find_package(CURL REQUIRED)
+     set(Boost_NO_BOOST_CMAKE ON)
+-    set(Boost_USE_STATIC_LIBS ON)
++    set(Boost_USE_STATIC_LIBS OFF)
+     find_package(Boost COMPONENTS program_options filesystem system thread regex date_time REQUIRED)
+ 
+     # add include directories
+diff --git i/src/libsrcml/srcml_reader_handler.hpp w/src/libsrcml/srcml_reader_handler.hpp
+index 0b23fed..c02dfef 100644
+--- i/src/libsrcml/srcml_reader_handler.hpp
++++ w/src/libsrcml/srcml_reader_handler.hpp
+@@ -456,7 +456,7 @@ public :
+ 
+             if(uri == SRCML_CPP_NS_URI) {
+ 
+-                if(archive->language != 0) {
++                if(srcml_check_language(archive->language->c_str()) != 0) {
+ 
+                     if(*archive->language == "C++" || *archive->language == "C" || *archive->language == "Objective-C")
+                         archive->options |= SRCML_OPTION_CPP | SRCML_OPTION_CPP_NOMACRO;
diff --git a/nixpkgs/pkgs/applications/version-management/sublime-merge/common.nix b/nixpkgs/pkgs/applications/version-management/sublime-merge/common.nix
new file mode 100644
index 000000000000..f20ebbeae3f9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/sublime-merge/common.nix
@@ -0,0 +1,117 @@
+{ buildVersion, sha256, dev ? false }:
+
+{ fetchurl, stdenv, xorg, glib, libGL, glibcLocales, gtk3, cairo, pango, libredirect, makeWrapper, wrapGAppsHook
+, pkexecPath ? "/run/wrappers/bin/pkexec"
+, writeScript, common-updater-scripts, curl, gnugrep, coreutils
+}:
+
+let
+  pname = "sublime-merge";
+  packageAttribute = "sublime-merge${stdenv.lib.optionalString dev "-dev"}";
+  binaries = [ "sublime_merge" "crash_reporter" "git-credential-sublime" "ssh-askpass-sublime" ];
+  primaryBinary = "sublime_merge";
+  primaryBinaryAliases = [ "smerge" ];
+  downloadUrl = "https://download.sublimetext.com/sublime_merge_build_${buildVersion}_${arch}.tar.xz";
+  versionUrl = "https://www.sublimemerge.com/${if dev then "dev" else "download"}";
+  versionFile = builtins.toString ./default.nix;
+  archSha256 = sha256;
+  arch = "x64";
+
+  libPath = stdenv.lib.makeLibraryPath [ xorg.libX11 glib gtk3 cairo pango ];
+  redirects = [ "/usr/bin/pkexec=${pkexecPath}" "/bin/true=${coreutils}/bin/true" ];
+in let
+  binaryPackage = stdenv.mkDerivation {
+    pname = "${pname}-bin";
+    version = buildVersion;
+
+    src = fetchurl {
+      url = downloadUrl;
+      sha256 = archSha256;
+    };
+
+    dontStrip = true;
+    dontPatchELF = true;
+    buildInputs = [ glib gtk3 ]; # for GSETTINGS_SCHEMAS_PATH
+    nativeBuildInputs = [ makeWrapper wrapGAppsHook ];
+
+    buildPhase = ''
+      runHook preBuild
+
+      for binary in ${ builtins.concatStringsSep " " binaries }; do
+        patchelf \
+          --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath ${libPath}:${libGL}/lib:${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"} \
+          $binary
+      done
+
+      # Rewrite pkexec argument. Note that we cannot delete bytes in binary.
+      sed -i -e 's,/bin/cp\x00,cp\x00\x00\x00\x00\x00\x00,g' ${primaryBinary}
+
+      runHook postBuild
+    '';
+
+    installPhase = ''
+      runHook preInstall
+
+      mkdir -p $out
+      cp -r * $out/
+
+      runHook postInstall
+    '';
+
+    dontWrapGApps = true; # non-standard location, need to wrap the executables manually
+
+    postFixup = ''
+      wrapProgram $out/${primaryBinary} \
+        --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
+        --set NIX_REDIRECTS ${builtins.concatStringsSep ":" redirects} \
+        --set LOCALE_ARCHIVE "${glibcLocales.out}/lib/locale/locale-archive" \
+        "''${gappsWrapperArgs[@]}"
+    '';
+  };
+in stdenv.mkDerivation (rec {
+  inherit pname;
+  version = buildVersion;
+
+  phases = [ "installPhase" ];
+
+  ${primaryBinary} = binaryPackage;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    makeWrapper "''$${primaryBinary}/${primaryBinary}" "$out/bin/${primaryBinary}"
+  '' + builtins.concatStringsSep "" (map (binaryAlias: "ln -s $out/bin/${primaryBinary} $out/bin/${binaryAlias}\n") primaryBinaryAliases) + ''
+    mkdir -p "$out/share/applications"
+    substitute "''$${primaryBinary}/${primaryBinary}.desktop" "$out/share/applications/${primaryBinary}.desktop" --replace "/opt/${primaryBinary}/${primaryBinary}" "$out/bin/${primaryBinary}"
+    for directory in ''$${primaryBinary}/Icon/*; do
+      size=$(basename $directory)
+      mkdir -p "$out/share/icons/hicolor/$size/apps"
+      ln -s ''$${primaryBinary}/Icon/$size/* $out/share/icons/hicolor/$size/apps
+    done
+  '';
+
+  passthru.updateScript = writeScript "${pname}-update-script" ''
+    #!${stdenv.shell}
+    set -o errexit
+    PATH=${stdenv.lib.makeBinPath [ common-updater-scripts curl gnugrep ]}
+
+    latestVersion=$(curl -s ${versionUrl} | grep -Po '(?<=<p class="latest"><i>Version:</i> Build )([0-9]+)')
+
+    for platform in ${stdenv.lib.concatStringsSep " " meta.platforms}; do
+        # The script will not perform an update when the version attribute is up to date from previous platform run
+        # We need to clear it before each run
+        update-source-version ${packageAttribute}.${primaryBinary} 0 0000000000000000000000000000000000000000000000000000000000000000 --file=${versionFile} --version-key=buildVersion --system=$platform
+        update-source-version ${packageAttribute}.${primaryBinary} $latestVersion --file=${versionFile} --version-key=buildVersion --system=$platform
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Git client from the makers of Sublime Text";
+    homepage = "https://www.sublimemerge.com";
+    maintainers = with maintainers; [ zookatron ];
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+  };
+})
diff --git a/nixpkgs/pkgs/applications/version-management/sublime-merge/default.nix b/nixpkgs/pkgs/applications/version-management/sublime-merge/default.nix
new file mode 100644
index 000000000000..a8fb944319cc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/sublime-merge/default.nix
@@ -0,0 +1,16 @@
+{ callPackage }:
+
+let
+  common = opts: callPackage (import ./common.nix opts);
+in {
+  sublime-merge = common {
+    buildVersion = "2020";
+    sha256 = "0r5qqappaiicc4srk08az2vx42m7b6a75yn2ji5pv4w4085hlrzp";
+  } {};
+
+  sublime-merge-dev = common {
+    buildVersion = "2011";
+    sha256 = "0r5qqappaiicc4srk08az2vx42m7b6a75yn2ji5pv4w4085hlrzp";
+    dev = true;
+  } {};
+}
diff --git a/nixpkgs/pkgs/applications/version-management/subversion/apr-1.patch b/nixpkgs/pkgs/applications/version-management/subversion/apr-1.patch
new file mode 100644
index 000000000000..240d94f3f977
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/subversion/apr-1.patch
@@ -0,0 +1,11 @@
+--- a/subversion/bindings/swig/perl/native/Makefile.PL.in
++++ b/subversion/bindings/swig/perl/native/Makefile.PL.in
+@@ -72,7 +72,7 @@
+ # According to the log of r7937, the flags guarded by the conditional break
+ # the build on FreeBSD if not conditionalized.
+ my $apr_ldflags = '@SVN_APR_LIBS@'
+-   if $^O eq 'darwin' or $^O eq 'cygwin';
++   if $^O eq 'darwin' or $^O eq 'cygwin' or $^O eq 'linux';
+ 
+ chomp $apr_shlib_path_var;
+ 
diff --git a/nixpkgs/pkgs/applications/version-management/subversion/default.nix b/nixpkgs/pkgs/applications/version-management/subversion/default.nix
new file mode 100644
index 000000000000..dffe3fadd74b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/subversion/default.nix
@@ -0,0 +1,130 @@
+{ bdbSupport ? true # build support for Berkeley DB repositories
+, httpServer ? false # build Apache DAV module
+, httpSupport ? true # client must support http
+, pythonBindings ? false
+, perlBindings ? false
+, javahlBindings ? false
+, saslSupport ? false
+, stdenv, fetchurl, apr, aprutil, zlib, sqlite, openssl, lz4, utf8proc
+, apacheHttpd ? null, expat, swig ? null, jdk ? null, python ? null, perl ? null
+, sasl ? null, serf ? null
+}:
+
+assert bdbSupport -> aprutil.bdbSupport;
+assert httpServer -> apacheHttpd != null;
+assert pythonBindings -> swig != null && python != null;
+assert javahlBindings -> jdk != null && perl != null;
+
+let
+
+  common = { version, sha256, extraBuildInputs ? [ ] }: stdenv.mkDerivation (rec {
+    inherit version;
+    pname = "subversion";
+
+    src = fetchurl {
+      url = "mirror://apache/subversion/${pname}-${version}.tar.bz2";
+      inherit sha256;
+    };
+
+    # Can't do separate $lib and $bin, as libs reference bins
+    outputs = [ "out" "dev" "man" ];
+
+    buildInputs = [ zlib apr aprutil sqlite openssl ]
+      ++ extraBuildInputs
+      ++ stdenv.lib.optional httpSupport serf
+      ++ stdenv.lib.optional pythonBindings python
+      ++ stdenv.lib.optional perlBindings perl
+      ++ stdenv.lib.optional saslSupport sasl;
+
+    patches = [ ./apr-1.patch ];
+
+    # We are hitting the following issue even with APR 1.6.x
+    # -> https://issues.apache.org/jira/browse/SVN-4813
+    # "-P" CPPFLAG is needed to build Python bindings and subversionClient
+    CPPFLAGS = [ "-P" ];
+
+    configureFlags = [
+      (stdenv.lib.withFeature bdbSupport "berkeley-db")
+      (stdenv.lib.withFeatureAs httpServer "apxs" "${apacheHttpd.dev}/bin/apxs")
+      (stdenv.lib.withFeatureAs (pythonBindings || perlBindings) "swig" swig)
+      (stdenv.lib.withFeatureAs saslSupport "sasl" sasl)
+      (stdenv.lib.withFeatureAs httpSupport "serf" serf)
+      "--disable-keychain"
+      "--with-zlib=${zlib.dev}"
+      "--with-sqlite=${sqlite.dev}"
+    ] ++ stdenv.lib.optionals javahlBindings [
+      "--enable-javahl"
+      "--with-jdk=${jdk}"
+    ];
+
+    preBuild = ''
+      makeFlagsArray=(APACHE_LIBEXECDIR=$out/modules)
+    '';
+
+    postInstall = ''
+      if test -n "$pythonBindings"; then
+          make swig-py swig_pydir=$(toPythonPath $out)/libsvn swig_pydir_extra=$(toPythonPath $out)/svn
+          make install-swig-py swig_pydir=$(toPythonPath $out)/libsvn swig_pydir_extra=$(toPythonPath $out)/svn
+      fi
+
+      if test -n "$perlBindings"; then
+          make swig-pl-lib
+          make install-swig-pl-lib
+          cd subversion/bindings/swig/perl/native
+          perl Makefile.PL PREFIX=$out
+          make install
+          cd -
+      fi
+
+      mkdir -p $out/share/bash-completion/completions
+      cp tools/client-side/bash_completion $out/share/bash-completion/completions/subversion
+
+      for f in $out/lib/*.la $out/lib/python*/site-packages/*/*.la; do
+        substituteInPlace $f \
+          --replace "${expat.dev}/lib" "${expat.out}/lib" \
+          --replace "${zlib.dev}/lib" "${zlib.out}/lib" \
+          --replace "${sqlite.dev}/lib" "${sqlite.out}/lib" \
+          --replace "${openssl.dev}/lib" "${openssl.out}/lib"
+      done
+    '';
+
+    inherit perlBindings pythonBindings;
+
+    enableParallelBuilding = true;
+
+    checkInputs = [ python ];
+    doCheck = false; # fails 10 out of ~2300 tests
+
+    meta = with stdenv.lib; {
+      description = "A version control system intended to be a compelling replacement for CVS in the open source community";
+      license = licenses.asl20;
+      homepage = "http://subversion.apache.org/";
+      maintainers = with maintainers; [ eelco lovek323 ];
+      platforms = platforms.linux ++ platforms.darwin;
+    };
+
+  } // stdenv.lib.optionalAttrs stdenv.isDarwin {
+    CXX = "clang++";
+    CC = "clang";
+    CPP = "clang -E";
+    CXXCPP = "clang++ -E";
+  });
+
+in {
+  subversion19 = common {
+    version = "1.9.12";
+    sha256 = "15z33gdnfiqblm5515020wfdwnp2837r3hnparava6m2fgyiafiw";
+  };
+
+  subversion_1_10 = common {
+    version = "1.10.6";
+    sha256 = "19zc215mhpnm92mlyl5jbv57r5zqp6cavr3s2g9yglp6j4kfgj0q";
+    extraBuildInputs = [ lz4 utf8proc ];
+  };
+
+  subversion = common {
+    version = "1.12.2";
+    sha256 = "0wgpw3kzsiawzqk4y0xgh1z93kllxydgv4lsviim45y5wk4bbl1v";
+    extraBuildInputs = [ lz4 utf8proc ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/tailor/default.nix b/nixpkgs/pkgs/applications/version-management/tailor/default.nix
new file mode 100644
index 000000000000..c769ec0a66d6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/tailor/default.nix
@@ -0,0 +1,19 @@
+{ fetchurl, python2Packages }:
+
+python2Packages.buildPythonApplication rec {
+  pname = "tailor";
+  version = "0.9.35";
+
+  src = fetchurl {
+    urls = [
+      "http://darcs.arstecnica.it/tailor/tailor-${version}.tar.gz"
+      "https://src.fedoraproject.org/repo/pkgs/tailor/tailor-${version}.tar.gz/58a6bc1c1d922b0b1e4579c6440448d1/tailor-${version}.tar.gz"
+    ];
+    sha256 = "061acapxxn5ab3ipb5nd3nm8pk2xj67bi83jrfd6lqq3273fmdjh";
+  };
+
+  meta = {
+    description = "Version control tools integration tool";
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/version-management/tkcvs/default.nix b/nixpkgs/pkgs/applications/version-management/tkcvs/default.nix
new file mode 100644
index 000000000000..d2a7299bcd9e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/tkcvs/default.nix
@@ -0,0 +1,28 @@
+{stdenv, fetchurl, tcl, tk}:
+
+stdenv.mkDerivation
+{
+  name = "tkcvs-8.2.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/tkcvs/tkcvs_8_2_1.tar.gz";
+    sha256 = "0kvj6rcx1153wq0n1lmd8imbrki6xy5wxghwzlb9i15l65sclg3i";
+  };
+
+  buildInputs = [ tcl tk ];
+
+  patchPhase = ''
+    sed -e 's@exec wish@exec ${tk}/bin/wish@' -i tkcvs/tkcvs.tcl tkdiff/tkdiff
+  '';
+
+  installPhase = ''
+    ./doinstall.tcl $out
+  '';
+
+  meta = {
+    homepage = "https://tkcvs.sourceforge.io";
+    description = "TCL/TK GUI for cvs and subversion";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/tortoisehg/default.nix b/nixpkgs/pkgs/applications/version-management/tortoisehg/default.nix
new file mode 100644
index 000000000000..2743d4f827fb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/tortoisehg/default.nix
@@ -0,0 +1,52 @@
+{ lib, fetchurl, python3Packages
+, mercurial, qt5
+}@args:
+let
+  tortoisehgSrc = fetchurl rec {
+    meta.name = "tortoisehg-${meta.version}";
+    meta.version = "5.2.1";
+    url = "https://bitbucket.org/tortoisehg/thg/get/14221e991a5b623e0072d3bd340b759dbe9072ca.tar.gz";
+    sha256 = "01rpzf5z99izcdda1ps9bhqvhw6qghagd8c1y7x19rv223zi05dv";
+  };
+
+  tortoiseMercurial = mercurial.overridePythonAttrs (old: rec {
+    inherit (tortoisehgSrc.meta) version;
+    src = fetchurl {
+      url = "https://mercurial-scm.org/release/mercurial-${version}.tar.gz";
+      sha256 = "1pxkd37b0a1mi2zakk1hi122lgz1ffy2fxdnbs8acwlqpw55bc8q";
+    };
+  });
+
+in python3Packages.buildPythonApplication {
+    inherit (tortoisehgSrc.meta) name version;
+    src = tortoisehgSrc;
+
+    propagatedBuildInputs = with python3Packages; [
+      tortoiseMercurial qscintilla-qt5 iniparse
+    ];
+    nativeBuildInputs = [ qt5.wrapQtAppsHook ];
+
+    doCheck = false; # tests fail with "thg: cannot connect to X server"
+    postInstall = ''
+      mkdir -p $out/share/doc/tortoisehg
+      cp COPYING.txt $out/share/doc/tortoisehg/Copying.txt
+      # convenient alias
+      ln -s $out/bin/thg $out/bin/tortoisehg
+      wrapQtApp $out/bin/thg
+    '';
+
+    checkPhase = ''
+      echo "test: thg version"
+      $out/bin/thg version
+    '';
+
+    passthru.mercurial = tortoiseMercurial;
+
+    meta = {
+      description = "Qt based graphical tool for working with Mercurial";
+      homepage = "https://tortoisehg.bitbucket.io/";
+      license = lib.licenses.gpl2;
+      platforms = lib.platforms.linux;
+      maintainers = with lib.maintainers; [ danbst ];
+    };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/vcprompt/default.nix b/nixpkgs/pkgs/applications/version-management/vcprompt/default.nix
new file mode 100644
index 000000000000..85fe83996da3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/vcprompt/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchhg, autoconf, sqlite }:
+
+stdenv.mkDerivation rec {
+  pname = "vcprompt";
+  version = "1.2.1";
+
+  src = fetchhg {
+    url = "http://hg.gerg.ca/vcprompt/";
+    rev = version;
+    sha256 = "03xqvp6bfl98bpacrw4n82qv9cw6a4fxci802s3vrygas989v1kj";
+  };
+
+  buildInputs = [ sqlite autoconf ];
+
+  preConfigure = ''
+    autoconf
+    makeFlags="$makeFlags PREFIX=$out"
+  '';
+
+  meta = with stdenv.lib; {
+    description = ''
+      A little C program that prints a short string with barebones information
+      about the current working directory for various version control systems
+    '';
+    homepage    = "http://hg.gerg.ca/vcprompt";
+    maintainers = with maintainers; [ cstrahan ];
+    platforms   = with platforms; linux ++ darwin;
+    license = licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/vcsh/default.nix b/nixpkgs/pkgs/applications/version-management/vcsh/default.nix
new file mode 100644
index 000000000000..c4af492decea
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/vcsh/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, which, git, ronn, perlPackages }:
+
+stdenv.mkDerivation {
+  version = "1.20170915";       # date of commit we're pulling
+  pname = "vcsh";
+
+  src = fetchFromGitHub {
+    owner = "RichiH";
+    repo = "vcsh";
+    rev = "eadb8df6aa71a76e5be36492edcadb118bd862ac";
+    sha256 = "1wfzp8167lcq6akdpbi8fikjv0z3h1i5minh3423dljc04q0klm1";
+  };
+
+  buildInputs = [ which git ronn ]
+    ++ (with perlPackages; [ perl ShellCommand TestMost TestDifferences TestDeep TestException TestWarn ]);
+
+  installPhase = "make install PREFIX=$out";
+
+  meta = with stdenv.lib; {
+    description = "Version Control System for $HOME";
+    homepage = "https://github.com/RichiH/vcsh";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ ttuegel ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/version-management/yadm/default.nix b/nixpkgs/pkgs/applications/version-management/yadm/default.nix
new file mode 100644
index 000000000000..fab89d663fa7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/version-management/yadm/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, git, gnupg }:
+
+let version = "2.4.0"; in
+stdenv.mkDerivation {
+  pname = "yadm";
+  inherit version;
+
+  buildInputs = [ git gnupg ];
+
+  src = fetchFromGitHub {
+    owner  = "TheLocehiliosan";
+    repo   = "yadm";
+    rev    = version;
+    sha256 = "0kpahznrkxkyj92vrhwjvldg2affi1askgwvpgbs4mg40f92szlp";
+  };
+
+  dontConfigure = true;
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+    install -Dt $out/bin $src/yadm
+    install -Dt $out/share/man/man1 $src/yadm.1
+    install -D $src/completion/yadm.zsh_completion $out/share/zsh/site-functions/_yadm
+    install -D $src/completion/yadm.bash_completion $out/share/bash-completion/completions/yadm.bash
+    runHook postInstall
+  '';
+
+  meta = {
+    homepage = "https://github.com/TheLocehiliosan/yadm";
+    description = "Yet Another Dotfiles Manager";
+    longDescription = ''
+      yadm is a dotfile management tool with 3 main features:
+      * Manages files across systems using a single Git repository.
+      * Provides a way to use alternate files on a specific OS or host.
+      * Supplies a method of encrypting confidential data so it can safely be stored in your repository.
+    '';
+    license = stdenv.lib.licenses.gpl3;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/aegisub/default.nix b/nixpkgs/pkgs/applications/video/aegisub/default.nix
new file mode 100644
index 000000000000..64c7dc20f355
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/aegisub/default.nix
@@ -0,0 +1,131 @@
+{ config
+, stdenv
+, fetchurl
+, fetchpatch
+, libX11
+, wxGTK
+, libiconv
+, fontconfig
+, freetype
+, libGLU
+, libGL
+, libass
+, fftw
+, ffms
+, ffmpeg_3
+, pkg-config
+, zlib
+, icu
+, boost
+, intltool
+
+, spellcheckSupport ? true
+, hunspell ? null
+
+, automationSupport ? true
+, lua ? null
+
+, openalSupport ? false
+, openal ? null
+
+, alsaSupport ? stdenv.isLinux
+, alsaLib ? null
+
+, pulseaudioSupport ? config.pulseaudio or stdenv.isLinux
+, libpulseaudio ? null
+
+, portaudioSupport ? false
+, portaudio ? null
+}:
+
+assert spellcheckSupport -> (hunspell != null);
+assert automationSupport -> (lua != null);
+assert openalSupport -> (openal != null);
+assert alsaSupport -> (alsaLib != null);
+assert pulseaudioSupport -> (libpulseaudio != null);
+assert portaudioSupport -> (portaudio != null);
+
+with stdenv.lib;
+stdenv.mkDerivation
+ rec {
+  pname = "aegisub";
+  version = "3.2.2";
+
+  src = fetchurl {
+    url = "http://ftp.aegisub.org/pub/releases/${pname}-${version}.tar.xz";
+    sha256 = "11b83qazc8h0iidyj1rprnnjdivj1lpphvpa08y53n42bfa36pn5";
+  };
+
+  patches = [
+    # Compatibility with ICU 59
+    (fetchpatch {
+      url = "https://github.com/Aegisub/Aegisub/commit/dd67db47cb2203e7a14058e52549721f6ff16a49.patch";
+      sha256 = "07qqlckiyy64lz8zk1as0vflk9kqnjb340420lp9f0xj93ncssj7";
+    })
+
+    # Compatbility with Boost 1.69
+    (fetchpatch {
+      url = "https://github.com/Aegisub/Aegisub/commit/c3c446a8d6abc5127c9432387f50c5ad50012561.patch";
+      sha256 = "1n8wmjka480j43b1pr30i665z8hdy6n3wdiz1ls81wyv7ai5yygf";
+    })
+  ];
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = with stdenv.lib; [
+    libX11
+    wxGTK
+    fontconfig
+    freetype
+    libGLU
+    libGL
+    libass
+    fftw
+    ffms
+    ffmpeg_3
+    zlib
+    icu
+    boost
+    libiconv
+  ]
+    ++ optional spellcheckSupport hunspell
+    ++ optional automationSupport lua
+    ++ optional openalSupport openal
+    ++ optional alsaSupport alsaLib
+    ++ optional pulseaudioSupport libpulseaudio
+    ++ optional portaudioSupport portaudio
+    ;
+
+  enableParallelBuilding = true;
+
+  hardeningDisable = [ "bindnow" "relro" ];
+
+  # compat with icu61+ https://github.com/unicode-org/icu/blob/release-64-2/icu4c/readme.html#L554
+  CXXFLAGS = [ "-DU_USING_ICU_NAMESPACE=1" ];
+
+  # this is fixed upstream though not yet in an officially released version,
+  # should be fine remove on next release (if one ever happens)
+  NIX_LDFLAGS = "-lpthread";
+
+  postInstall = "ln -s $out/bin/aegisub-* $out/bin/aegisub";
+
+  meta = {
+    description = "An advanced subtitle editor";
+    longDescription = ''
+      Aegisub is a free, cross-platform open source tool for creating and
+      modifying subtitles. Aegisub makes it quick and easy to time subtitles to
+      audio, and features many powerful tools for styling them, including a
+      built-in real-time video preview.
+    '';
+    homepage = "http://www.aegisub.org/";
+    # The Aegisub sources are itself BSD/ISC,
+    # but they are linked against GPL'd softwares
+    # - so the resulting program will be GPL
+    license = licenses.bsd3;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/avidemux/bootstrap_logging.patch b/nixpkgs/pkgs/applications/video/avidemux/bootstrap_logging.patch
new file mode 100644
index 000000000000..8f45251d26c2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/avidemux/bootstrap_logging.patch
@@ -0,0 +1,26 @@
+diff --git a/bootStrap.bash b/bootStrap.bash
+index 646a5e048..6429199ba 100644
+--- a/bootStrap.bash
++++ b/bootStrap.bash
+@@ -4,6 +4,7 @@
+ #
+ # By default we use qt5 now
+ #
++set -e # hard fail if something fails
+ packages_ext=""
+ rebuild=0
+ do_core=1
+@@ -66,10 +67,10 @@ Process()
+         fi
+         cd $BUILDDIR 
+         cmake $COMPILER $PKG $FAKEROOT $QT_FLAVOR -DCMAKE_EDIT_COMMAND=vim $INSTALL_PREFIX $EXTRA $BUILD_QUIRKS $ASAN $DEBUG -G "$BUILDER" $SOURCEDIR || fail cmakeZ
+-        make  $PARAL >& /tmp/log$BUILDDIR || fail "make, result in /tmp/log$BUILDDIR"
+-	if  [ "x$PKG" != "x" ] ; then
++        make  $PARAL
++        if  [ "x$PKG" != "x" ] ; then
+           $FAKEROOT_COMMAND make package DESTDIR=$FAKEROOT_DIR/tmp || fail package
+-	fi
++        fi
+         # we need the make install so that other packcges can be built against this one
+         make install DESTDIR=$FAKEROOT_DIR
+ }
diff --git a/nixpkgs/pkgs/applications/video/avidemux/default.nix b/nixpkgs/pkgs/applications/video/avidemux/default.nix
new file mode 100644
index 000000000000..9374d2dbc790
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/avidemux/default.nix
@@ -0,0 +1,99 @@
+{ stdenv, lib, fetchurl, cmake, pkgconfig
+, zlib, gettext, libvdpau, libva, libXv, sqlite
+, yasm, freetype, fontconfig, fribidi
+, makeWrapper, libXext, libGLU, qttools, qtbase, wrapQtAppsHook
+, alsaLib
+, withX265 ? true, x265
+, withX264 ? true, x264
+, withXvid ? true, xvidcore
+, withLAME ? true, lame
+, withFAAC ? false, faac
+, withVorbis ? true, libvorbis
+, withPulse ? true, libpulseaudio
+, withFAAD ? true, faad2
+, withOpus ? true, libopus
+, withVPX ? true, libvpx
+, withQT ? true
+, withCLI ? true
+, default ? "qt5"
+, withPlugins ? true
+}:
+
+assert withQT -> qttools != null && qtbase != null;
+assert default != "qt5" -> default == "cli";
+assert !withQT -> default != "qt5";
+
+stdenv.mkDerivation rec {
+  pname = "avidemux";
+  version = "2.7.4";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/avidemux/avidemux/${version}/avidemux_${version}.tar.gz";
+    sha256 = "1acdb3m37vdzzbm8mwyibcn8msi7birb5v30qfi7jli5r00src3x";
+  };
+
+  patches = [
+    ./dynamic_install_dir.patch
+    ./bootstrap_logging.patch
+  ];
+
+  nativeBuildInputs =
+    [ yasm cmake pkgconfig ]
+    ++ lib.optional withQT wrapQtAppsHook;
+  buildInputs = [
+    zlib gettext libvdpau libva libXv sqlite fribidi fontconfig
+    freetype alsaLib libXext libGLU makeWrapper
+  ] ++ lib.optional withX264 x264
+    ++ lib.optional withX265 x265
+    ++ lib.optional withXvid xvidcore
+    ++ lib.optional withLAME lame
+    ++ lib.optional withFAAC faac
+    ++ lib.optional withVorbis libvorbis
+    ++ lib.optional withPulse libpulseaudio
+    ++ lib.optional withFAAD faad2
+    ++ lib.optional withOpus libopus
+    ++ lib.optionals withQT [ qttools qtbase ]
+    ++ lib.optional withVPX libvpx;
+
+  buildCommand = let
+    qtVersion = "5.${stdenv.lib.versions.minor qtbase.version}";
+    wrapWith = makeWrapper: filename:
+      "${makeWrapper} ${filename} --set ADM_ROOT_DIR $out --prefix LD_LIBRARY_PATH : ${libXext}/lib";
+    wrapQtApp = wrapWith "wrapQtApp";
+    wrapProgram = wrapWith "wrapProgram";
+  in ''
+    unpackPhase
+    cd "$sourceRoot"
+    patchPhase
+
+    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${libXext}/lib"
+    ${stdenv.shell} bootStrap.bash \
+      --with-core \
+      ${if withQT then "--with-qt" else "--without-qt"} \
+      ${if withCLI then "--with-cli" else "--without-cli"} \
+      ${if withPlugins then "--with-plugins" else "--without-plugins"}
+
+    mkdir $out
+    cp -R install/usr/* $out
+
+    ${wrapProgram "$out/bin/avidemux3_cli"}
+
+    ${stdenv.lib.optionalString withQT ''
+      ${wrapQtApp "$out/bin/avidemux3_qt5"}
+      ${wrapQtApp "$out/bin/avidemux3_jobs_qt5"}
+    ''}
+
+    ln -s "$out/bin/avidemux3_${default}" "$out/bin/avidemux"
+
+    fixupPhase
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://fixounet.free.fr/avidemux/";
+    description = "Free video editor designed for simple video editing tasks";
+    maintainers = with maintainers; [ abbradar ma27 ];
+    # "CPU not supported" errors on AArch64
+    platforms = [ "i686-linux" "x86_64-linux" ];
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/avidemux/dynamic_install_dir.patch b/nixpkgs/pkgs/applications/video/avidemux/dynamic_install_dir.patch
new file mode 100644
index 000000000000..803cde02ec2e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/avidemux/dynamic_install_dir.patch
@@ -0,0 +1,12 @@
+diff -ru3 avidemux_2.6.15-old/avidemux_core/ADM_core/src/ADM_folder_linux.cpp avidemux_2.6.15/avidemux_core/ADM_core/src/ADM_folder_linux.cpp
+--- avidemux_2.6.15-old/avidemux_core/ADM_core/src/ADM_folder_linux.cpp	2016-11-23 02:13:41.406566362 +0300
++++ avidemux_2.6.15/avidemux_core/ADM_core/src/ADM_folder_linux.cpp	2016-11-23 02:14:33.433566147 +0300
+@@ -92,7 +92,7 @@
+ 
+ char *ADM_getInstallRelativePath(const char *base1, const char *base2, const char *base3)
+ {
+-	return ADM_getRelativePath(ADM_INSTALL_DIR, base1, base2, base3);
++	return ADM_getRelativePath(getenv("ADM_ROOT_DIR"), base1, base2, base3);
+ }
+ const std::string ADM_getI8NDir(const std::string &flavor)
+ {
diff --git a/nixpkgs/pkgs/applications/video/avxsynth/default.nix b/nixpkgs/pkgs/applications/video/avxsynth/default.nix
new file mode 100644
index 000000000000..e818ef585c17
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/avxsynth/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig
+, cairo, ffmpeg_3, ffms, libjpeg, log4cpp, pango
+, avxeditSupport ? false, qt4 ? null
+}:
+
+let
+  inherit (stdenv.lib) enableFeature optional;
+in
+
+stdenv.mkDerivation {
+  pname = "avxsynth";
+  version = "2015-04-07";
+
+  src = fetchFromGitHub {
+    owner = "avxsynth";
+    repo = "avxsynth";
+    rev = "80dcb7ec8d314bc158130c92803308aa8e5e9242";
+    sha256 = "0kckggvgv68b0qjdi7ms8vi97b46dl63n60qr96d2w67lf2nk87z";
+  };
+
+  configureFlags = [
+    "--enable-autocrop"
+    "--enable-framecapture"
+    "--enable-subtitle"
+    "--enable-ffms2"
+    (enableFeature avxeditSupport "avxedit")
+    "--with-jpeg=${libjpeg.out}/lib"
+  ];
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+
+  buildInputs = [ cairo ffmpeg_3 ffms libjpeg log4cpp pango ]
+    ++ optional avxeditSupport qt4;
+
+  meta = with stdenv.lib; {
+    description = "A script system that allows advanced non-linear editing";
+    homepage = "https://github.com/avxsynth/avxsynth";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ codyopel ];
+    platforms = platforms.linux;
+    broken = true; # 2018-04-10
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/bino3d/default.nix b/nixpkgs/pkgs/applications/video/bino3d/default.nix
new file mode 100644
index 000000000000..4554bea61571
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/bino3d/default.nix
@@ -0,0 +1,25 @@
+{ mkDerivation, lib, fetchurl, pkgconfig, ffmpeg, glew, libass, openal, qtbase }:
+
+mkDerivation rec {
+  pname = "bino";
+  version = "1.6.7";
+
+  src = fetchurl {
+    url = "https://bino3d.org/releases/${pname}-${version}.tar.xz";
+    sha256 = "04yl7ibnhajlli4a5x77az8jxbzw6b2wjay8aa6px551nmiszn9k";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ ffmpeg glew libass openal qtbase ];
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "Stereoscopic 3D and multi-display video player";
+    homepage = "https://bino3d.org/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/bombono/default.nix b/nixpkgs/pkgs/applications/video/bombono/default.nix
new file mode 100644
index 000000000000..2ae3722fff2e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/bombono/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchFromGitHub, wrapGAppsHook, gtk2, boost, gtkmm2, scons,
+mjpegtools, libdvdread, dvdauthor, gettext, dvdplusrwtools, libxmlxx, ffmpeg_3,
+enca, pkgconfig, fetchpatch }:
+
+let fetchPatchFromAur = {name, sha256}:
+fetchpatch {
+  inherit name sha256;
+  url = "https://aur.archlinux.org/cgit/aur.git/plain/${name}?h=e6cc6bc80c672aaa1a2260abfe8823da299a192c";
+}; in
+stdenv.mkDerivation rec {
+  pname = "bombono";
+  version = "1.2.4";
+  src = fetchFromGitHub {
+    owner = "muravjov";
+    repo = "bombono-dvd";
+    rev = version;
+    sha256 = "1lz1vik6abn1i1pvxhm55c9g47nxxv755wb2ijszwswwrwgvq5b9";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "bombono-dvd-1.2.4-scons3.patch";
+      url = "https://svnweb.mageia.org/packages/cauldron/bombono-dvd/current/SOURCES/bombono-dvd-1.2.4-scons-python3.patch?revision=1447925&view=co&pathrev=1484457";
+      sha256 = "081116d0if6s2r1rgqfr1n5gl3kpvzk01pf4v2k7gg2rnid83qp4";
+    })
+  ] ++ (map fetchPatchFromAur [
+    {name="fix_ffmpeg_codecid.patch";         sha256="1asfc0lqzk4gjssrvjmsi1xr53ygnsx2sh7c8yzp5r3j2bagxhp7";}
+    {name="fix_ptr2bool_cast.patch";          sha256="0iqzrmbg38ikh4x9cmx0v0rnm7a9lcq0kd8sh1z9yfmnz71qqahg";}
+    {name="fix_c++11_literal_warnings.patch"; sha256="1zbf12i77p0j0090pz5lzg4a7kyahahzqssybv7vi0xikwvw57w9";}
+    {name="autoptr2uniqueptr.patch";          sha256="0a3wvwfplmqvi8fnj929y85z3h1iq7baaz2d4v08h1q2wbmakqdm";}
+    {name="fix_deprecated_boost_api.patch";   sha256="184gdz3w95ihhsd8xscpwvq77xd4il47kvmv6wslax77xyw50gm8";}
+    {name="fix_throw_specifications.patch";   sha256="1f5gi3qwm843hsxvijq7sjy0s62xm7rnr1vdp7f242fi0ldq6c1n";}
+    {name="fix_operator_ambiguity.patch";     sha256="0r4scsbsqfg6wgzsbfxxpckamvgyrida0n1ypg1klx24pk5dc7n7";}
+    {name="fix_ffmpeg30.patch";               sha256="1irva7a9bpbzs60ga8ypa3la9y84i5rz20jnd721qmfqp2yip8dw";}
+  ]);
+
+  nativeBuildInputs = [ wrapGAppsHook scons pkgconfig gettext ];
+
+  buildInputs = [
+    gtk2 gtkmm2 mjpegtools libdvdread dvdauthor boost dvdplusrwtools
+    libxmlxx ffmpeg_3 enca
+    ];
+
+  prefixKey = "PREFIX=";
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "a DVD authoring program for personal computers";
+    homepage = "http://www.bombono.org/";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [ symphorien ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/bomi/default.nix b/nixpkgs/pkgs/applications/video/bomi/default.nix
new file mode 100644
index 000000000000..d812ac488742
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/bomi/default.nix
@@ -0,0 +1,118 @@
+{ mkDerivation, config, stdenv, fetchFromGitHub
+, fetchpatch, pkgconfig, perl, python, which
+, libX11, libxcb, libGLU, libGL
+, qtbase, qtdeclarative, qtquickcontrols, qttools, qtx11extras, qmake
+, libchardet
+, ffmpeg
+
+, mpg123
+, libass
+, libdvdread
+, libdvdnav
+, icu
+, libquvi
+, alsaLib
+, libvdpau, libva
+, libbluray
+, jackSupport ? false, jack ? null
+, portaudioSupport ? false, portaudio ? null
+, pulseSupport ? config.pulseaudio or stdenv.isLinux, libpulseaudio ? null
+, cddaSupport ? false, libcdda ? null
+, youtubeSupport ? true, youtube-dl ? null
+}:
+
+with stdenv.lib;
+
+assert jackSupport -> jack != null;
+assert portaudioSupport -> portaudio != null;
+assert pulseSupport -> libpulseaudio != null;
+assert cddaSupport -> libcdda != null;
+assert youtubeSupport -> youtube-dl != null;
+
+mkDerivation rec {
+  pname = "bomi";
+  version = "0.9.11";
+
+  src = fetchFromGitHub {
+    owner = "xylosper";
+    repo = "bomi";
+    rev = "v${version}";
+    sha256 = "0a7n46gn3n5098lxxvl3s29s8jlkzss6by9074jx94ncn9cayf2h";
+  };
+
+  patches = [
+    (fetchpatch rec {
+      name = "bomi-compilation-fix.patch";
+      url = "https://svnweb.mageia.org/packages/cauldron/bomi/current/SOURCES/${name}?revision=995725&view=co&pathrev=995725";
+      sha256 = "1dwryya5ljx35dbx6ag9d3rjjazni2mfn3vwirjdijdy6yz22jm6";
+    })
+    (fetchpatch rec {
+      name = "bomi-fix-expected-unqualified-id-before-numeric-constant-unix.patch";
+      url = "https://svnweb.mageia.org/packages/cauldron/bomi/current/SOURCES/${name}?revision=995725&view=co&pathrev=995725";
+      sha256 = "0n3xsrdrggimzw30gxlnrr088ndbdjqlqr46dzmfv8zan79lv5ri";
+    })
+  ];
+
+  buildInputs = with stdenv.lib;
+                [ libX11
+                  libxcb
+                  libGLU libGL
+                  qtbase
+                  qtx11extras
+                  qtdeclarative
+                  qtquickcontrols
+                  ffmpeg
+                  libchardet
+
+                  mpg123
+                  libass
+                  libdvdread
+                  libdvdnav
+                  icu
+                  libquvi
+                  alsaLib
+                  libvdpau
+                  libva
+                  libbluray
+                ]
+                ++ optional jackSupport jack
+                ++ optional portaudioSupport portaudio
+                ++ optional pulseSupport libpulseaudio
+                ++ optional cddaSupport libcdda
+                ;
+
+  preConfigure = ''
+    patchShebangs configure
+  '';
+
+  preBuild = ''
+    patchShebangs src/mpv/waf
+    patchShebangs build-mpv
+  '';
+
+  dontWrapQtApps = true;
+  postInstall = ''
+    wrapQtApp $out/bin/bomi \
+      ${optionalString youtubeSupport "--prefix PATH ':' '${youtube-dl}/bin'"}
+  '';
+
+  dontUseQmakeConfigure = true;
+
+  configureFlags = with stdenv.lib;
+                   [ "--qmake=qmake" ]
+                   ++ optional jackSupport "--enable-jack"
+                   ++ optional portaudioSupport "--enable-portaudio"
+                   ++ optional pulseSupport "--enable-pulseaudio"
+                   ++ optional cddaSupport "--enable-cdda"
+                   ;
+
+  nativeBuildInputs = [ pkgconfig perl python which qttools qmake ];
+
+  meta = with stdenv.lib; {
+    description = "Powerful and easy-to-use multimedia player";
+    homepage = "https://bomi-player.github.io/";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.abbradar ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/byzanz/add-amflags.patch b/nixpkgs/pkgs/applications/video/byzanz/add-amflags.patch
new file mode 100644
index 000000000000..aeaa195798a4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/byzanz/add-amflags.patch
@@ -0,0 +1,12 @@
+diff --git a/Makefile.am b/Makefile.am
+index 6eedb51..7b54313 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,5 +1,7 @@
+ SUBDIRS = macros data gifenc src po
+ 
++ACLOCAL_AMFLAGS = -I macros
++
+ EXTRA_DIST = \
+ 	MAINTAINERS \
+ 	depcomp \
diff --git a/nixpkgs/pkgs/applications/video/byzanz/default.nix b/nixpkgs/pkgs/applications/video/byzanz/default.nix
new file mode 100644
index 000000000000..f5d40a5c34cc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/byzanz/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchgit, wrapGAppsHook, which, gnome3, glib, intltool, pkgconfig, libtool, cairo, gtk3, gst_all_1, xorg }:
+
+stdenv.mkDerivation {
+  version = "0.2.3.alpha";
+  pname = "byzanz";
+
+  src = fetchgit {
+    url = "git://github.com/GNOME/byzanz";
+    rev = "1875a7f6a3903b83f6b1d666965800f47db9286a";
+    sha256 = "0a72fw2mxl8vdcdnzy0bwis4jk28pd7nc8qgr4vhyw5pd48dynvh";
+  };
+
+  patches = [ ./add-amflags.patch ];
+
+  preBuild = ''
+    ./autogen.sh --prefix=$out
+  '';
+
+  NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ which gnome3.gnome-common glib intltool libtool cairo gtk3 xorg.xwininfo ]
+  ++ (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-bad gst-plugins-good gst-plugins-ugly gst-libav wrapGAppsHook ]);
+
+  meta = with stdenv.lib; {
+    description = "Tool to record a running X desktop to an animation suitable for presentation in a web browser";
+    homepage = "https://github.com/GNOME/byzanz";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/catt/default.nix b/nixpkgs/pkgs/applications/video/catt/default.nix
new file mode 100644
index 000000000000..7f2b85511518
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/catt/default.nix
@@ -0,0 +1,31 @@
+{ buildPythonApplication, fetchPypi, lib
+, youtube-dl
+, PyChromecast
+, click
+, ifaddr
+, requests
+}:
+
+buildPythonApplication rec {
+  pname = "catt";
+  version = "0.11.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1vq1wg79b7855za6v6bsfgypm0v3b4wakap4rash45mhzbgjj0kq";
+  };
+
+  propagatedBuildInputs = [
+    youtube-dl PyChromecast click ifaddr requests
+  ];
+
+  doCheck = false; # attempts to access various URLs
+
+  meta = with lib; {
+    description = "Cast All The Things allows you to send videos from many, many online sources to your Chromecast";
+    homepage = "https://github.com/skorokithakis/catt";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/video/ccextractor/default.nix b/nixpkgs/pkgs/applications/video/ccextractor/default.nix
new file mode 100644
index 000000000000..91c47516521e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/ccextractor/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, pkgconfig, cmake
+, glew, glfw3, leptonica, libiconv, tesseract3, zlib }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  pname = "ccextractor";
+  version = "0.88";
+
+  src = fetchFromGitHub {
+    owner = "CCExtractor";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1sya45hvv4d46bk7541yimmafgvgyhkpsvwfz9kv6pm4yi1lz6nb";
+  };
+
+  sourceRoot = "source/src";
+
+  nativeBuildInputs = [ pkgconfig cmake ];
+
+  buildInputs = [ glew glfw3 leptonica tesseract3 zlib ] ++ stdenv.lib.optional (!stdenv.isLinux) libiconv;
+
+  meta = {
+    homepage = "https://www.ccextractor.org";
+    description = "Tool that produces subtitles from closed caption data in videos";
+    longDescription = ''
+      A tool that analyzes video files and produces independent subtitle files from
+      closed captions data. CCExtractor is portable, small, and very fast.
+      It works on Linux, Windows, and OSX.
+    '';
+    platforms = platforms.unix;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ titanous ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/celluloid/default.nix b/nixpkgs/pkgs/applications/video/celluloid/default.nix
new file mode 100644
index 000000000000..208cbb7f4e6a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/celluloid/default.nix
@@ -0,0 +1,64 @@
+{ stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, python3
+, gettext
+, pkgconfig
+, desktop-file-utils
+, wrapGAppsHook
+, appstream-glib
+, epoxy
+, glib
+, gtk3
+, mpv
+}:
+
+stdenv.mkDerivation rec {
+  pname = "celluloid";
+  version = "0.19";
+
+  src = fetchFromGitHub {
+    owner = "celluloid-player";
+    repo = "celluloid";
+    rev = "v${version}";
+    sha256 = "1jdmwljckajqb3ys8azd1nyy49nvq9kb2knrrqdcfnvzq0m5lpqr";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    python3
+    appstream-glib
+    gettext
+    pkgconfig
+    desktop-file-utils
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    epoxy
+    glib
+    gtk3
+    mpv
+  ];
+
+  postPatch = ''
+    patchShebangs meson-post-install.py src/generate-authors.py
+  '';
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    description = "Simple GTK frontend for the mpv video player";
+    longDescription = ''
+      GNOME MPV interacts with mpv via the client API exported by libmpv,
+      allowing access to mpv's powerful playback capabilities through an
+      easy-to-use user interface.
+    '';
+    homepage = "https://github.com/celluloid-player/celluloid";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ worldofpeace ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/cinelerra/default.nix b/nixpkgs/pkgs/applications/video/cinelerra/default.nix
new file mode 100644
index 000000000000..22533b182a0f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/cinelerra/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchFromGitHub, autoconf, automake, libtool
+, pkgconfig, faad2, faac, a52dec, alsaLib, fftw, lame, libavc1394
+, libiec61883, libraw1394, libsndfile, libvorbis, libogg, libjpeg
+, libtiff, freetype, mjpegtools, x264, gettext, openexr
+, libXext, libXxf86vm, libXv, libXi, libX11, libXft, xorgproto, libtheora, libpng
+, libdv, libuuid, file, nasm, perl
+, fontconfig, intltool }:
+
+stdenv.mkDerivation {
+  name = "cinelerra-cv-2018-05-16";
+
+  src = fetchFromGitHub {
+    owner = "ratopi";
+    repo = "CinelerraCV";
+    rev = "d9c0dbf4393717f0a42f4b91c3e1ed5b16f955dc";
+    sha256 = "0a8kfm1v96sv6jh4568crg6nkr6n3579i9xksfj8w199s6yxzsbk";
+  };
+
+  preConfigure = ''
+    find -type f -print0 | xargs --null sed -e "s@/usr/bin/perl@${perl}/bin/perl@" -i
+    ./autogen.sh
+    sed -i -e "s@/usr/bin/file@${file}/bin/file@" ./configure
+  '';
+
+  ## fix bug with parallel building
+  preBuild = ''
+    make -C cinelerra versioninfo.h
+  '';
+  enableParallelBuilding = true;
+
+  buildInputs =
+    [ automake
+      autoconf libtool pkgconfig file
+      faad2 faac
+      a52dec alsaLib   fftw lame libavc1394 libiec61883
+      libraw1394 libsndfile libvorbis libogg libjpeg libtiff freetype
+      mjpegtools x264 gettext openexr
+      libXext libXxf86vm libXv libXi libX11 libXft xorgproto
+      libtheora libpng libdv libuuid
+      nasm
+      perl
+      fontconfig intltool
+    ];
+
+  meta = {
+    description = "Video Editor";
+    homepage = "http://www.cinelerra.org";
+    maintainers = [ stdenv.lib.maintainers.marcweber ];
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/clickshare-csc1/default.nix b/nixpkgs/pkgs/applications/video/clickshare-csc1/default.nix
new file mode 100644
index 000000000000..e4e72704fb0b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/clickshare-csc1/default.nix
@@ -0,0 +1,124 @@
+{ lib
+, stdenv
+, fetchurl
+, alsaLib
+, autoPatchelfHook
+, binutils-unwrapped
+, gnutar
+, libav_0_8
+, libnotify
+, libresample
+, libusb1
+, qt4
+, rpmextract
+, unzip
+, xorg
+, usersGroup ? "clickshare"  # for udev access rules
+}:
+
+
+# This fetches the latest firmware version that
+# contains a linux-compatible client binary.
+# Barco no longer supports linux, so updates are unlikely:
+# https://www.barco.com/de/support/clickshare-csc-1/knowledge-base/KB1191
+
+
+stdenv.mkDerivation rec {
+  pname = "clickshare-csc1";
+  version = "01.07.00.033";
+  src = fetchurl {
+    name = "clickshare-csc1-${version}.zip";
+    url = "https://www.barco.com/services/website/de/TdeFiles/Download?FileNumber=R33050020&TdeType=3&MajorVersion=01&MinorVersion=07&PatchVersion=00&BuildVersion=033";
+    sha256 = "0h4jqidqvk4xkaky5bizi7ilz4qzl2mh68401j21y3djnzx09br3";
+  };
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+    binutils-unwrapped
+    gnutar
+    rpmextract
+    unzip
+  ];
+  buildInputs = [
+    alsaLib
+    libav_0_8
+    libnotify
+    libresample
+    libusb1
+    qt4
+    xorg.libX11
+    xorg.libXdamage
+    xorg.libXfixes
+    xorg.libXinerama
+    xorg.libXtst
+  ];
+  sourceRoot = ".";
+
+  # The source consists of nested archives.
+  # We extract them archive by archive.
+  # If the filename contains version numbers,
+  # we use a wildcard and check that there
+  # is actually only one file matching.
+  postUnpack =
+    let
+      rpmArch =
+        if stdenv.hostPlatform.isx86_32 then "i386" else
+        if stdenv.hostPlatform.isx86_64 then "x86_64" else
+        throw "unsupported system: ${stdenv.hostPlatform.system}";
+    in
+      ''
+        ls clickshare_baseunit_*.*_all.signed_release.ipk | wc --lines | xargs test 1 =
+        tar --verbose --extract --one-top-level=dir1 < clickshare_baseunit_*.*_all.signed_release.ipk
+        mkdir dir2
+        ( cd dir2 ; ar xv ../dir1/firmware.ipk )
+        tar --verbose --gzip --extract --one-top-level=dir3 --exclude='dev/*' < dir2/data.tar.gz
+        ls dir3/clickshare/clickshare-*-*.${rpmArch}.rpm | wc --lines | xargs test 1 =
+        mkdir dir4
+        cd dir4
+        rpmextract ../dir3/clickshare/clickshare-*-*.${rpmArch}.rpm
+      '';
+
+  installPhase = ''
+    runHook preInstall
+    mkdir --verbose --parents $out
+    mv --verbose --target-directory=. usr/*
+    rmdir --verbose usr
+    cp --verbose --recursive --target-directory=$out *
+    runHook postInstall
+  '';
+
+  # Default udev rule restricts access to the
+  # clickshare USB dongle to the `wheel` group.
+  # We replace it with the group
+  # stated in the package arguments.
+  # Also, we patch executable and icon paths in .desktop files.
+  preFixup = ''
+    substituteInPlace \
+        $out/lib/udev/rules.d/99-clickshare.rules \
+        --replace wheel ${usersGroup}
+    substituteInPlace \
+        $out/share/applications/clickshare.desktop \
+        --replace Exec= Exec=$out/bin/ \
+        --replace =/usr =$out
+    substituteInPlace \
+        $out/etc/xdg/autostart/clickshare-launcher.desktop \
+        --replace =/usr =$out
+  '';
+
+  meta = {
+    homepage = "https://www.barco.com/de/support/clickshare-csc-1/drivers";
+    downloadPage = "https://www.barco.com/de/Support/software/R33050020";
+    platforms = [ "i686-linux" "x86_64-linux" ];
+    license = lib.licenses.unfree;
+    maintainers = [ lib.maintainers.yarny ];
+    description = "Linux driver/client for Barco ClickShare CSC-1";
+    longDescription = ''
+      Barco ClickShare is a wireless presentation system
+      where a USB dongle transmits to a base station
+      that is connected with a beamer.
+      The USB dongle requires proprietary software that
+      captures the screen and sends it to the dongle.
+      This package provides the necessary software for Linux.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/clipgrab/default.nix b/nixpkgs/pkgs/applications/video/clipgrab/default.nix
new file mode 100644
index 000000000000..fc752f1bd1fd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/clipgrab/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchurl, makeDesktopItem, ffmpeg_3
+, qmake, qttools, mkDerivation
+, qtbase, qtdeclarative, qtlocation, qtquickcontrols2, qtwebchannel, qtwebengine
+}:
+
+mkDerivation rec {
+  pname = "clipgrab";
+  version = "3.8.11";
+
+  src = fetchurl {
+    sha256 = "0jpfdmyzjasq4x1xvk7b1cmhhq6fz6ydvvbwz2wclph367x496xk";
+    # The .tar.bz2 "Download" link is a binary blob, the source is the .tar.gz!
+    url = "https://download.clipgrab.org/${pname}-${version}.tar.gz";
+  };
+
+  buildInputs = [ ffmpeg_3 qtbase qtdeclarative qtlocation qtquickcontrols2 qtwebchannel qtwebengine ];
+  nativeBuildInputs = [ qmake qttools ];
+
+  postPatch = stdenv.lib.optionalString (ffmpeg_3 != null) ''
+  substituteInPlace converter_ffmpeg.cpp \
+    --replace '"ffmpeg"' '"${ffmpeg_3.bin}/bin/ffmpeg"' \
+    --replace '"ffmpeg ' '"${ffmpeg_3.bin}/bin/ffmpeg '
+  '';
+
+  qmakeFlags = [ "clipgrab.pro" ];
+
+  enableParallelBuilding = true;
+
+  desktopItem = makeDesktopItem rec {
+    name = "clipgrab";
+    exec = name;
+    icon = name;
+    desktopName = "ClipGrab";
+    comment = meta.description;
+    genericName = "Web video downloader";
+    categories = "Qt;AudioVideo;Audio;Video";
+  };
+
+  installPhase = ''
+    install -Dm755 clipgrab $out/bin/clipgrab
+    install -Dm644 icon.png $out/share/pixmaps/clipgrab.png
+    cp -r ${desktopItem}/share/applications $out/share
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Video downloader for YouTube and other sites";
+    longDescription = ''
+      ClipGrab is a free downloader and converter for YouTube, Vimeo, Metacafe,
+      Dailymotion and many other online video sites. It converts downloaded
+      videos to MPEG4, MP3 or other formats in just one easy step.
+    '';
+    homepage = "https://clipgrab.org/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/coriander/default.nix b/nixpkgs/pkgs/applications/video/coriander/default.nix
new file mode 100644
index 000000000000..a094bfd904ab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/coriander/default.nix
@@ -0,0 +1,26 @@
+{stdenv, fetchurl, pkgconfig, glib, gtk2, libgnomeui, libXv, libraw1394, libdc1394
+, SDL, automake, GConf }:
+
+stdenv.mkDerivation {
+  name = "coriander-2.0.1";
+
+  src = fetchurl {
+    url = "http://damien.douxchamps.net/ieee1394/coriander/archives/coriander-2.0.1.tar.gz";
+    sha256 = "0l6hpfgy5r4yardilmdrggsnn1fbfww516sk5a90g1740cd435x5";
+  };
+
+  preConfigure = ''
+    cp ${automake}/share/automake-*/mkinstalldirs .
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ glib gtk2 libgnomeui libXv libraw1394 libdc1394 SDL GConf ];
+  
+  meta = {
+    homepage = "https://damien.douxchamps.net/ieee1394/coriander/";
+    description = "GUI for controlling a Digital Camera through the IEEE1394 bus";
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/devede/default.nix b/nixpkgs/pkgs/applications/video/devede/default.nix
new file mode 100644
index 000000000000..9bb5518e80f7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/devede/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchFromGitHub, python3Packages, ffmpeg_3, mplayer, vcdimager, cdrkit, dvdauthor
+, gtk3, gettext, wrapGAppsHook, gdk-pixbuf, gobject-introspection }:
+
+let
+  inherit (python3Packages) dbus-python buildPythonApplication pygobject3 urllib3 setuptools;
+
+in buildPythonApplication {
+  name = "devede-4.8.8";
+  namePrefix = "";
+
+  src = fetchFromGitHub {
+    owner = "rastersoft";
+    repo = "devedeng";
+    rev = "c518683fbcd793aa92249e4fecafc3c3fea7da68";
+    sha256 = "0ncb8nykchrjlllbzfjpvirmfvfaps9qhilc56kvcw3nzqrnkx8q";
+  };
+
+  # Temporary fix
+  # See https://github.com/NixOS/nixpkgs/issues/61578
+  # and https://github.com/NixOS/nixpkgs/issues/56943
+  strictDeps = false;
+
+  nativeBuildInputs = [
+    gettext wrapGAppsHook
+
+    # Temporary fix
+    # See https://github.com/NixOS/nixpkgs/issues/61578
+    # and https://github.com/NixOS/nixpkgs/issues/56943
+    gobject-introspection
+  ];
+
+  buildInputs = [
+    ffmpeg_3
+  ];
+
+  propagatedBuildInputs = [
+    gtk3 pygobject3 gdk-pixbuf dbus-python ffmpeg_3 mplayer dvdauthor vcdimager cdrkit urllib3 setuptools
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py --replace "'/usr'," ""
+    substituteInPlace src/devedeng/configuration_data.py \
+      --replace "/usr/share" "$out/share" \
+      --replace "/usr/local/share" "$out/share"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "DVD Creator for Linux";
+    homepage = "http://www.rastersoft.com/programas/devede.html";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.bdimcheff ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/dvb-apps/default.nix b/nixpkgs/pkgs/applications/video/dvb-apps/default.nix
new file mode 100644
index 000000000000..8fa88e324494
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/dvb-apps/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, perl }:
+
+stdenv.mkDerivation {
+  name = "dvb-apps-7f68f9c8d311";
+
+  src = fetchurl {
+    url = "https://linuxtv.org/hg/dvb-apps/archive/7f68f9c8d311.tar.gz";
+    sha256 = "0a6c5jjq6ad98bj0r954l3n7zjb2syw9m19jksg06z4zg1z8yg82";
+  };
+
+  buildInputs = [ perl ];
+
+  dontConfigure = true; # skip configure
+
+  installPhase = "make prefix=$out install";
+
+  meta = {
+    description = "Linux DVB API applications and utilities";
+    homepage = "https://linuxtv.org/";
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.gpl2;
+    broken = true; # 2018-04-10
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/dvd-slideshow/default.nix b/nixpkgs/pkgs/applications/video/dvd-slideshow/default.nix
new file mode 100644
index 000000000000..e35d95d54d6f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/dvd-slideshow/default.nix
@@ -0,0 +1,72 @@
+{ stdenv, lib, fetchurl, writeScript, cdrtools, dvdauthor, ffmpeg_3, imagemagick, lame, mjpegtools, sox, transcode, vorbis-tools, runtimeShell }:
+
+let
+  binPath = lib.makeBinPath [ cdrtools dvdauthor ffmpeg_3 imagemagick lame mjpegtools sox transcode vorbis-tools ];
+
+  wrapper = writeScript "dvd-slideshow.sh" ''
+      #!${runtimeShell}
+      # wrapper script for dvd-slideshow programs
+      export PATH=${binPath}:$PATH
+
+      dir=`dirname "$0"`
+      exe=`basename "$0"`
+      case "$exe" in
+        dvd-slideshow)
+          # use mpeg2enc by default as ffmpeg is known to crash.
+          # run dvd-slideshow.ffmpeg to force ffmpeg.
+          "$dir/dvd-slideshow.real" -mpeg2enc $@
+          ;;
+
+        dvd-slideshow.ffmpeg)
+          "$dir/dvd-slideshow.real" $@
+          ;;
+
+        *)
+          "$dir/$exe.real" $@
+          ;;
+      esac
+    '';
+
+in stdenv.mkDerivation rec {
+  pname = "dvd-slideshow";
+  version = "0.8.4-2";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/dvd-slideshow/files/${pname}-${version}.tar.gz";
+    sha256 = "17c09aqvippiji2sd0pcxjg3nb1mnh9k5nia4gn5lhcvngjcp1q5";
+  };
+
+  patchPhase = ''
+    # fix upstream typos
+    substituteInPlace dvd-slideshow \
+      --replace "version='0.8.4-1'" "version='0.8.4-2'" \
+      --replace "mymyecho" "myecho"
+  '';
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    cp dvd-slideshow         "$out/bin/dvd-slideshow.real"
+    cp dvd-menu              "$out/bin/dvd-menu.real"
+    cp dir2slideshow         "$out/bin/dir2slideshow.real"
+    cp gallery1-to-slideshow "$out/bin/gallery1-to-slideshow.real"
+    cp jigl2slideshow        "$out/bin/jigl2slideshow.real"
+
+    cp ${wrapper} "$out/bin/dvd-slideshow.sh"
+    ln -s dvd-slideshow.sh "$out/bin/dvd-slideshow"
+    ln -s dvd-slideshow.sh "$out/bin/dvd-slideshow.ffmpeg"
+    ln -s dvd-slideshow.sh "$out/bin/dvd-menu"
+    ln -s dvd-slideshow.sh "$out/bin/dir2slideshow"
+    ln -s dvd-slideshow.sh "$out/bin/gallery1-to-slideshow"
+    ln -s dvd-slideshow.sh "$out/bin/jigl2slideshow"
+
+    cp -a man "$out/"
+  '';
+
+  meta = {
+    description = "Suite of command line programs that creates a slideshow-style video from groups of pictures";
+    homepage = "http://dvd-slideshow.sourceforge.net/wiki/Main_Page";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.robbinch ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/dvdauthor/default.nix b/nixpkgs/pkgs/applications/video/dvdauthor/default.nix
new file mode 100644
index 000000000000..af1fe24cbbf4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/dvdauthor/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, imagemagick, libdvdread, libxml2, freetype, fribidi, libpng, zlib, pkgconfig
+, flex, bison }:
+
+stdenv.mkDerivation rec {
+  name = "dvdauthor-0.7.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/dvdauthor/${name}.tar.gz";
+    sha256 = "1s8zqlim0s3hk5sbdsilip3qqh0yv05l1jwx49d9rsy614dv27sh";
+  };
+
+  buildInputs = [ libpng freetype libdvdread libxml2 zlib fribidi imagemagick flex bison];
+  nativeBuildInputs = [ pkgconfig ];
+
+  patches = [
+    ./dvdauthor-0.7.1-automake-1.13.patch
+    ./dvdauthor-0.7.1-mga-strndup.patch
+    ./dvdauthor-imagemagick-0.7.0.patch
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Tools for generating DVD files to be played on standalone DVD players";
+    homepage = "http://dvdauthor.sourceforge.net/";
+    license = licenses.gpl2;
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-0.7.1-automake-1.13.patch b/nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-0.7.1-automake-1.13.patch
new file mode 100644
index 000000000000..786f0c968556
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-0.7.1-automake-1.13.patch
@@ -0,0 +1,10 @@
+--- dvdauthor/configure.ac~	2013-01-04 08:27:40.713197029 +0800
++++ dvdauthor/configure.ac	2013-01-04 08:27:53.273525273 +0800
+@@ -1,6 +1,6 @@
+ AC_INIT(DVDAuthor,0.7.1,dvdauthor-users@lists.sourceforge.net)
+ 
+-AM_CONFIG_HEADER(src/config.h)
++AC_CONFIG_HEADERS(src/config.h)
+ AC_CONFIG_AUX_DIR(autotools)
+ 
+ AM_INIT_AUTOMAKE
diff --git a/nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-0.7.1-mga-strndup.patch b/nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-0.7.1-mga-strndup.patch
new file mode 100644
index 000000000000..5f77a68081a4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-0.7.1-mga-strndup.patch
@@ -0,0 +1,24 @@
+Index: dvdauthor/src/dvdvml.l
+===================================================================
+--- dvdauthor/src/dvdvml.l
++++ dvdauthor/src/dvdvml.l      2014-09-14 19:36:05.098847465 +0000
+@@ -19,6 +19,7 @@
+  * USA
+  */
+ 
++#include "config.h"
+ #include "compat.h" /* needed for bool */
+ #include "dvdvm.h"
+ #include "dvdvmy.h"
+Index: dvdauthor/src/dvdvmy.y
+===================================================================
+--- dvdauthor/src/dvdvmy.y
++++ dvdauthor/src/dvdvmy.y      2014-09-14 19:36:28.251618378 +0000
+@@ -19,6 +19,7 @@
+  * USA
+  */
+ 
++#include "config.h"
+ #include "compat.h" /* needed for bool */
+ #include "dvdvm.h"
+ 
diff --git a/nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-imagemagick-0.7.0.patch b/nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-imagemagick-0.7.0.patch
new file mode 100644
index 000000000000..52b6cc44cd59
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-imagemagick-0.7.0.patch
@@ -0,0 +1,11 @@
+--- dvdauthor/configure.ac.orig	2010-10-23 04:26:49.000000000 +0200
++++ dvdauthor/configure.ac	2010-10-24 14:37:45.489064778 +0200
+@@ -31,7 +31,7 @@
+ 
+ usemagick=0
+ 
+-AC_CHECK_PROGS(MAGICKCONFIG, [Magick-config])
++AC_CHECK_PROGS(MAGICKCONFIG, [MagickCore-config])
+ if test -n "$MAGICKCONFIG"; then
+     ac_save_CPPFLAGS="$CPPFLAGS"
+     ac_save_LIBS="$LIBS"
diff --git a/nixpkgs/pkgs/applications/video/dvdbackup/default.nix b/nixpkgs/pkgs/applications/video/dvdbackup/default.nix
new file mode 100644
index 000000000000..e129031fd49c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/dvdbackup/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, libdvdread, libdvdcss, dvdauthor }:
+
+stdenv.mkDerivation rec {
+  version = "0.4.2";
+  pname = "dvdbackup";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/dvdbackup/${pname}-${version}.tar.xz";
+    sha256 = "1rl3h7waqja8blmbpmwy01q9fgr5r0c32b8dy3pbf59bp3xmd37g";
+  };
+
+  buildInputs = [ libdvdread libdvdcss dvdauthor ];
+
+  meta = {
+    description = "A tool to rip video DVDs from the command line";
+    homepage = "http://dvdbackup.sourceforge.net/";
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = [ stdenv.lib.maintainers.bradediger ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/dvdstyler/default.nix b/nixpkgs/pkgs/applications/video/dvdstyler/default.nix
new file mode 100644
index 000000000000..b78f9ed816b7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/dvdstyler/default.nix
@@ -0,0 +1,85 @@
+{ stdenv, fetchurl, pkgconfig
+, flex, bison, gettext
+, xineUI, wxSVG
+, fontconfig
+, xmlto, docbook5, zip
+, cdrtools, dvdauthor, dvdplusrwtools
+, dvdisasterSupport ? true, dvdisaster ? null
+, thumbnailSupport ? true, libgnomeui ? null
+, udevSupport ? true, udev ? null
+, dbusSupport ? true, dbus ? null
+, makeWrapper }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+
+  pname = "dvdstyler";
+  srcName = "DVDStyler-${version}";
+  version = "3.1.2";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/dvdstyler/dvdstyler/${version}/${srcName}.tar.bz2";
+    sha256 = "03lsblqficcadlzkbyk8agh5rqcfz6y6dqvy9y866wqng3163zq4";
+  };
+
+  nativeBuildInputs =
+  [ pkgconfig ];
+
+  packagesToBinPath =
+  [ cdrtools dvdauthor dvdplusrwtools ];
+
+  buildInputs =
+  [ flex bison gettext xineUI
+    wxSVG fontconfig xmlto
+    docbook5 zip makeWrapper ]
+  ++ packagesToBinPath
+  ++ optionals dvdisasterSupport [ dvdisaster ]
+  ++ optionals udevSupport [ udev ]
+  ++ optionals dbusSupport [ dbus ]
+  ++ optionals thumbnailSupport [ libgnomeui ];
+
+  binPath = makeBinPath packagesToBinPath;
+
+  postInstall = ''
+    wrapProgram $out/bin/dvdstyler \
+      --prefix PATH ":" "${binPath}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A DVD authoring software";
+    longDescription = ''
+    DVDStyler is a cross-platform free DVD authoring application for the
+    creation of professional-looking DVDs. It allows not only burning of video
+    files on DVD that can be played practically on any standalone DVD player,
+    but also creation of individually designed DVD menus. It is Open Source
+    Software and is completely free.
+
+    Some of its features include:
+    -  create and burn DVD video with interactive menus
+    - design your own DVD menu or select one from the list of ready to use menu
+      templates
+    - create photo slideshow
+    - add multiple subtitle and audio tracks
+    - support of AVI, MOV, MP4, MPEG, OGG, WMV and other file formats
+    - support of MPEG-2, MPEG-4, DivX, Xvid, MP2, MP3, AC-3 and other audio and
+      video formats
+    - support of multi-core processor
+    - use MPEG and VOB files without reencoding
+    - put files with different audio/video format on one DVD (support of
+      titleset)
+    - user-friendly interface with support of drag & drop
+    - flexible menu creation on the basis of scalable vector graphic
+    - import of image file for background
+    - place buttons, text, images and other graphic objects anywhere on the menu
+      screen
+    - change the font/color and other parameters of buttons and graphic objects
+    - scale any button or graphic object
+    - copy any menu object or whole menu
+    - customize navigation using DVD scripting
+    '';
+    homepage = "http://www.dvdstyler.org/";
+    license = with licenses; gpl2;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/ffmpeg-normalize/default.nix b/nixpkgs/pkgs/applications/video/ffmpeg-normalize/default.nix
new file mode 100644
index 000000000000..411ab9e6bc28
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/ffmpeg-normalize/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonApplication
+, fetchPypi
+, ffmpeg_3
+, tqdm
+}:
+
+buildPythonApplication rec {
+  pname = "ffmpeg-normalize";
+  version = "1.19.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "18dpck9grnr3wgbjvdh4mjlx0zfwcxpy4rnpmc39in0yk3w7li2x";
+  };
+
+  propagatedBuildInputs = [ ffmpeg_3 tqdm ];
+
+  checkPhase = ''
+    $out/bin/ffmpeg-normalize --help > /dev/null
+  '';
+
+  meta = with lib; {
+    description = "Normalize audio via ffmpeg";
+    homepage = "https://github.com/slhck/ffmpeg-normalize";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ prusnak ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/gnome-mplayer/default.nix b/nixpkgs/pkgs/applications/video/gnome-mplayer/default.nix
new file mode 100644
index 000000000000..3bd7785f201c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/gnome-mplayer/default.nix
@@ -0,0 +1,33 @@
+{stdenv, substituteAll, fetchFromGitHub, pkgconfig, gettext, glib, gtk3, gmtk, dbus, dbus-glib
+, libnotify, libpulseaudio, mplayer, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-mplayer";
+  version = "1.0.9";
+
+  src = fetchFromGitHub {
+    owner = "kdekorte";
+    repo = "gnome-mplayer";
+    rev = "v${version}";
+    sha256 = "0qvy9fllvg1mad6y1j79iaqa6khs0q2cb0z62yfg4srbr07fi8xr";
+  };
+
+  nativeBuildInputs = [ pkgconfig gettext wrapGAppsHook ];
+  buildInputs = [ glib gtk3 gmtk dbus dbus-glib libnotify libpulseaudio ];
+
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      mencoder = "${mplayer}/bin/mencoder";
+      mplayer = "${mplayer}/bin/mplayer";
+    })
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Gnome MPlayer, a simple GUI for MPlayer";
+    homepage = "https://sites.google.com/site/kdekorte2/gnomemplayer";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/gnome-mplayer/fix-paths.patch b/nixpkgs/pkgs/applications/video/gnome-mplayer/fix-paths.patch
new file mode 100644
index 000000000000..ede4991c4662
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/gnome-mplayer/fix-paths.patch
@@ -0,0 +1,87 @@
+--- a/src/gui.c
++++ b/src/gui.c
+@@ -7470,7 +7470,7 @@
+         filename = g_strdup_printf("%s/00000001.jpg", dirname);
+         g_free(basepath);
+         // run mplayer and try to get the first frame and convert it to a jpeg
+-        av[ac++] = g_strdup_printf("mplayer");
++        av[ac++] = g_strdup_printf("@mplayer@");
+         av[ac++] = g_strdup_printf("-vo");
+         av[ac++] = g_strdup_printf("jpeg:outdir=%s", dirname);
+         av[ac++] = g_strdup_printf("-ao");
+--- a/src/property_page_common.c
++++ b/src/property_page_common.c
+@@ -80,7 +80,7 @@
+     MetaData *ret;
+     ret = g_new0(MetaData, 1);
+ 
+-    av[ac++] = g_strdup_printf("mplayer");
++    av[ac++] = g_strdup_printf("@mplayer@");
+     av[ac++] = g_strdup_printf("-vo");
+     av[ac++] = g_strdup_printf("null");
+     av[ac++] = g_strdup_printf("-ao");
+--- a/src/support.c
++++ b/src/support.c
+@@ -566,7 +566,7 @@
+     } else {
+         playlist = FALSE;
+         if (mplayer_bin == NULL || !g_file_test(mplayer_bin, G_FILE_TEST_EXISTS)) {
+-            av[ac++] = g_strdup_printf("mplayer");
++            av[ac++] = g_strdup_printf("@mplayer@");
+         } else {
+             av[ac++] = g_strdup_printf("%s", mplayer_bin);
+         }
+@@ -728,7 +728,7 @@
+         playlist = FALSE;
+         // run mplayer and try to get the first frame and convert it to a jpeg
+         if (mplayer_bin == NULL || !g_file_test(mplayer_bin, G_FILE_TEST_EXISTS)) {
+-            av[ac++] = g_strdup_printf("mplayer");
++            av[ac++] = g_strdup_printf("@mplayer@");
+         } else {
+             av[ac++] = g_strdup_printf("%s", mplayer_bin);
+         }
+@@ -825,7 +825,7 @@
+         playlist = FALSE;
+ 
+         if (mplayer_bin == NULL || !g_file_test(mplayer_bin, G_FILE_TEST_EXISTS)) {
+-            av[ac++] = g_strdup_printf("mplayer");
++            av[ac++] = g_strdup_printf("@mplayer@");
+         } else {
+             av[ac++] = g_strdup_printf("%s", mplayer_bin);
+         }
+@@ -1251,7 +1251,7 @@
+     gm_log(verbose, G_LOG_LEVEL_INFO, "getting file metadata for %s", name);
+ 
+     if (mplayer_bin == NULL || !g_file_test(mplayer_bin, G_FILE_TEST_EXISTS)) {
+-        av[ac++] = g_strdup_printf("mplayer");
++        av[ac++] = g_strdup_printf("@mplayer@");
+     } else {
+         av[ac++] = g_strdup_printf("%s", mplayer_bin);
+     }
+@@ -1532,7 +1532,7 @@
+         return 0;
+ 
+     if (mplayer_bin == NULL || !g_file_test(mplayer_bin, G_FILE_TEST_EXISTS)) {
+-        av[ac++] = g_strdup_printf("mplayer");
++        av[ac++] = g_strdup_printf("@mplayer@");
+     } else {
+         av[ac++] = g_strdup_printf("%s", mplayer_bin);
+     }
+@@ -1597,7 +1597,7 @@
+ 
+     if (control_id == 0) {
+         ac = 0;
+-        av[ac++] = g_strdup_printf("mencoder");
++        av[ac++] = g_strdup_printf("@mencoder@");
+         av[ac++] = g_strdup_printf("-ovc");
+         av[ac++] = g_strdup_printf("copy");
+         av[ac++] = g_strdup_printf("-oac");
+@@ -2830,7 +2830,7 @@
+     gboolean ret = TRUE;
+ 
+     if (mplayer_bin == NULL || !g_file_test(mplayer_bin, G_FILE_TEST_EXISTS)) {
+-        av[ac++] = g_strdup_printf("mplayer");
++        av[ac++] = g_strdup_printf("@mplayer@");
+     } else {
+         av[ac++] = g_strdup_printf("%s", mplayer_bin);
+     }
diff --git a/nixpkgs/pkgs/applications/video/gnomecast/default.nix b/nixpkgs/pkgs/applications/video/gnomecast/default.nix
new file mode 100644
index 000000000000..3a3ca044bb88
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/gnomecast/default.nix
@@ -0,0 +1,28 @@
+{ lib, python3Packages, gtk3, gobject-introspection, ffmpeg_3, wrapGAppsHook }:
+
+with python3Packages;
+buildPythonApplication rec {
+  pname = "gnomecast";
+  version = "1.4.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0mn03gqbwmhch0055bzgdwkzsl304qdyqwrgyiq0k5c5d2gyala5";
+  };
+
+  nativeBuildInputs = [ wrapGAppsHook ];
+  propagatedBuildInputs = [
+    PyChromecast bottle pycaption paste html5lib pygobject3 dbus-python
+    gtk3 gobject-introspection
+  ];
+
+  preFixup = ''
+    gappsWrapperArgs+=(--prefix PATH : ${lib.makeBinPath [ ffmpeg_3 ]})
+  '';
+
+  meta = with lib; {
+    description = "A native Linux GUI for Chromecasting local files";
+    homepage = "https://github.com/keredson/gnomecast";
+    license = with licenses; [ gpl3 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/gpac/default.nix b/nixpkgs/pkgs/applications/video/gpac/default.nix
new file mode 100644
index 000000000000..e587a5999054
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/gpac/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, pkgconfig, zlib }:
+
+stdenv.mkDerivation rec {
+  version = "0.8.0";
+  pname = "gpac";
+
+  src = fetchFromGitHub {
+    owner = "gpac";
+    repo = "gpac";
+    rev = "v${version}";
+    sha256 = "1w1dyrn6900yi8ngchfzy5hvxr6yc60blvdq8y8mczimmmq8khb5";
+  };
+
+  # this is the bare minimum configuration, as I'm only interested in MP4Box
+  # For most other functionality, this should probably be extended
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ zlib ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Open Source multimedia framework for research and academic purposes";
+    longDescription = ''
+      GPAC is an Open Source multimedia framework for research and academic purposes.
+      The project covers different aspects of multimedia, with a focus on presentation
+      technologies (graphics, animation and interactivity) and on multimedia packaging
+      formats such as MP4.
+
+      GPAC provides three sets of tools based on a core library called libgpac:
+
+      A multimedia player, called Osmo4 / MP4Client,
+      A multimedia packager, called MP4Box,
+      And some server tools included in MP4Box and MP42TS applications.
+    '';
+    homepage = "https://gpac.wp.imt.fr";
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ bluescreen303 mgdelacroix ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/handbrake/default.nix b/nixpkgs/pkgs/applications/video/handbrake/default.nix
new file mode 100644
index 000000000000..b56c26dff78d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/handbrake/default.nix
@@ -0,0 +1,142 @@
+# Upstream distributes HandBrake with bundle of according versions of libraries and patches to them.
+#
+# Derivation patches HandBrake to use Nix closure dependencies.
+#
+# NOTE: 2019-07-19: This derivation does not currently support the native macOS
+# GUI--it produces the "HandbrakeCLI" CLI version only. In the future it would
+# be nice to add the native GUI (and/or the GTK GUI) as an option too, but that
+# requires invoking the Xcode build system, which is non-trivial for now.
+
+{ stdenv, lib, fetchFromGitHub,
+  # Main build tools
+  pkgconfig, autoconf, automake, libtool, m4, lzma, python3,
+  numactl,
+  # Processing, video codecs, containers
+  ffmpeg-full, nv-codec-headers, libogg, x264, x265, libvpx, libtheora, dav1d,
+  # Codecs, audio
+  libopus, lame, libvorbis, a52dec, speex, libsamplerate,
+  # Text processing
+  libiconv, fribidi, fontconfig, freetype, libass, jansson, libxml2, harfbuzz,
+  # Optical media
+  libdvdread, libdvdnav, libdvdcss, libbluray,
+  # Darwin-specific
+  AudioToolbox ? null,
+  Foundation ? null,
+  libobjc ? null,
+  VideoToolbox ? null,
+  # GTK
+  # NOTE: 2019-07-19: The gtk3 package has a transitive dependency on dbus,
+  # which in turn depends on systemd. systemd is not supported on Darwin, so
+  # for now we disable GTK GUI support on Darwin. (It may be possible to remove
+  # this restriction later.)
+  useGtk ? !stdenv.isDarwin, wrapGAppsHook ? null,
+  intltool ? null,
+  glib ? null,
+  gtk3 ? null,
+  libappindicator-gtk3 ? null,
+  libnotify ? null,
+  gst_all_1 ? null,
+  dbus-glib ? null,
+  udev ? null,
+  libgudev ? null,
+  hicolor-icon-theme ? null,
+  # FDK
+  useFdk ? false, fdk_aac ? null
+}:
+
+assert stdenv.isDarwin -> AudioToolbox != null
+       && Foundation != null
+       && libobjc != null
+       && VideoToolbox != null;
+
+stdenv.mkDerivation rec {
+  pname = "handbrake";
+  version = "1.3.3";
+
+  src = fetchFromGitHub {
+    owner = "HandBrake";
+    repo = "HandBrake";
+    rev = version;
+    sha256 = "0bsmk37543zv3p32a7wxnh2w483am23ha2amj339q3nnb4142krn";
+    extraPostFetch = ''
+      echo "DATE=$(date +"%F %T %z" -r $out/NEWS.markdown)" > $out/version.txt
+    '';
+  };
+
+  # we put as little as possible in src.extraPostFetch as it's much easier to
+  # add to it here without having to fiddle with src.sha256
+  # only DATE and HASH are absolutely necessary
+  postPatch = ''
+    cat >> version.txt <<_EOF
+HASH=${src.rev}
+SHORTHASH=${src.rev}
+TAG=${version}
+URL=${src.meta.homepage}
+_EOF
+
+    patchShebangs scripts
+
+    substituteInPlace libhb/module.defs \
+      --replace /usr/include/libxml2 ${libxml2.dev}/include/libxml2
+
+    # Force using nixpkgs dependencies
+    sed -i '/MODULES += contrib/d' make/include/main.defs
+    sed -e 's/^[[:space:]]*\(meson\|ninja\|nasm\)[[:space:]]*= ToolProbe.*$//g' \
+        -e '/    ## Additional library and tool checks/,/    ## MinGW specific library and tool checks/d' \
+        -i make/configure.py
+  '';
+
+  nativeBuildInputs = [
+    pkgconfig autoconf automake libtool m4 python3
+  ] ++ lib.optionals useGtk [ intltool wrapGAppsHook ];
+
+  buildInputs = [
+    ffmpeg-full libogg libtheora x264 x265 libvpx dav1d
+    libopus lame libvorbis a52dec speex libsamplerate
+    libiconv fribidi fontconfig freetype libass jansson libxml2 harfbuzz
+    libdvdread libdvdnav libdvdcss libbluray lzma numactl
+  ] ++ lib.optionals useGtk [
+    glib gtk3 libappindicator-gtk3 libnotify
+    gst_all_1.gstreamer gst_all_1.gst-plugins-base dbus-glib udev
+    libgudev hicolor-icon-theme
+  ] ++ lib.optional useFdk fdk_aac
+  ++ lib.optionals stdenv.isDarwin [ AudioToolbox Foundation libobjc VideoToolbox ]
+  # NOTE: 2018-12-27: Handbrake supports nv-codec-headers for Linux only,
+  # look at ./make/configure.py search "enable_nvenc"
+  ++ lib.optional stdenv.isLinux nv-codec-headers;
+
+  enableParallelBuilding = true;
+
+  configureFlags = [
+    "--disable-df-fetch"
+    "--disable-df-verify"
+    (if useGtk          then "--disable-gtk-update-checks" else "--disable-gtk")
+    (if useFdk          then "--enable-fdk-aac"            else "")
+    (if stdenv.isDarwin then "--disable-xcode"             else "")
+  ] ++ lib.optional (stdenv.isx86_32 || stdenv.isx86_64) "--harden";
+
+  # NOTE: 2018-12-27: Check NixOS HandBrake test if changing
+  NIX_LDFLAGS = [
+    "-lx265"
+  ];
+
+  preBuild = ''
+    cd build
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://handbrake.fr/";
+    description = "A tool for converting video files and ripping DVDs";
+    longDescription = ''
+      Tool for converting and remuxing video files
+      into selection of modern and widely supported codecs
+      and containers. Very versatile and customizable.
+      Package provides:
+      CLI - `HandbrakeCLI`
+      GTK GUI - `ghb`
+    '';
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ Anton-Latukha wmertens ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/default.nix b/nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/default.nix
new file mode 100644
index 000000000000..de9310740912
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, buildPythonApplication, fetchFromGitHub, fetchurl
+, mpv, python-mpv-jsonipc, jellyfin-apiclient-python
+, pillow, tkinter, pystray, jinja2, pywebview }:
+
+buildPythonApplication rec {
+  pname = "jellyfin-mpv-shim";
+  version = "1.4.2";
+
+  src = fetchFromGitHub {
+    owner = "iwalton3";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1cnii5wj0pgqg3dqk5cm6slpbs3730x8ippps4cjbsxcsrmqjpx6";
+    fetchSubmodules = true; # needed for display_mirror css file
+  };
+
+  # override $HOME directory:
+  #   error: [Errno 13] Permission denied: '/homeless-shelter'
+  #
+  # remove jellyfin_mpv_shim/win_utils.py:
+  #   ModuleNotFoundError: No module named 'win32gui'
+  preCheck = ''
+    export HOME=$TMPDIR
+
+    rm jellyfin_mpv_shim/win_utils.py
+  '';
+
+  propagatedBuildInputs = [
+    jellyfin-apiclient-python
+    mpv
+    pillow
+    python-mpv-jsonipc
+
+    # gui dependencies
+    pystray
+    tkinter
+
+    # display_mirror dependencies
+    jinja2
+    pywebview
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/iwalton3/jellyfin-mpv-shim";
+    description = "Allows casting of videos to MPV via the jellyfin mobile and web app.";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ jojosch ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/jftui/default.nix b/nixpkgs/pkgs/applications/video/jftui/default.nix
new file mode 100644
index 000000000000..eb572bac4e34
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/jftui/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, fetchFromGitHub
+, pkg-config
+, curl
+, mpv
+, yajl
+}:
+
+stdenv.mkDerivation rec {
+  pname = "jftui";
+  version = "0.3.0";
+
+  src = fetchFromGitHub {
+    owner = "Aanok";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1az737q5i24ylvkx4g3xlq8k48ni91nz5hhbif97g4nlhwl5cqb6";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+  ];
+
+  buildInputs = [
+    curl
+    mpv
+    yajl
+  ];
+
+  installPhase = ''
+    install -Dm555 build/jftui $out/bin/jftui
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Jellyfin Terminal User Interface ";
+    homepage = "https://github.com/Aanok/jftui";
+    license = licenses.unlicense;
+    maintainers = [ maintainers.nyanloutre ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/k9copy/default.nix b/nixpkgs/pkgs/applications/video/k9copy/default.nix
new file mode 100644
index 000000000000..317505185d0d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/k9copy/default.nix
@@ -0,0 +1,63 @@
+{ stdenv, fetchurl
+, cmake
+, dvdauthor, xineLib, libmpeg2, libav, libdvdread, libdvdnav, dvdplusrwtools
+, phonon, qtx11extras
+, extra-cmake-modules, kio, kiconthemes, ki18n, kdesu, kdoctools, solid
+}:
+
+stdenv.mkDerivation rec {
+  version = "3.0.3";
+  pname = "k9copy";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/k9copy-reloaded/${pname}-${version}.tar.gz";
+    sha256 = "0dp06rwihks50c57bbv04d6bj2qc88isl91971r4lii2xp0qn7sg";
+  };
+
+  patches = [
+    ./gcc6.patch
+  ];
+
+  cmakeFlags = [
+    "-DQT5_BUILD=ON"
+    "-DCMAKE_MINIMUM_REQUIRED_VERSION=3.0"
+  ];
+
+  # Hack to disable documentation
+  preConfigure = ''
+   substituteInPlace ./CMakeLists.txt \
+     --replace "add_subdirectory(doc)" ""
+  '';
+
+  buildInputs = [
+    cmake
+    dvdauthor
+    xineLib
+    libmpeg2
+    libav
+    libdvdread
+    libdvdnav
+    dvdplusrwtools
+    #automoc4
+    phonon
+    extra-cmake-modules
+    kio
+    solid
+    qtx11extras
+    kiconthemes
+    ki18n
+    kdesu
+  ];
+  nativeBuildInputs = [ kdoctools ];
+
+  meta = {
+    description = "DVD backup and DVD authoring program";
+    homepage = "http://k9copy-reloaded.sourceforge.net/";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [ flosse ];
+    platforms = stdenv.lib.platforms.unix;
+    # TODO: The software is deprecated and the build is broken, see:
+    # https://github.com/NixOS/nixpkgs/pull/63260#issuecomment-503506487
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/k9copy/gcc6.patch b/nixpkgs/pkgs/applications/video/k9copy/gcc6.patch
new file mode 100644
index 000000000000..d0c9c2a8035e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/k9copy/gcc6.patch
@@ -0,0 +1,26 @@
+diff --git c/src/backup/k9dvdbackup.cpp i/src/backup/k9dvdbackup.cpp
+index f5e4859..82fa392 100755
+--- c/src/backup/k9dvdbackup.cpp
++++ i/src/backup/k9dvdbackup.cpp
+@@ -907,7 +907,7 @@ k9Vobu * k9DVDBackup::remapOffset(uint32_t _sector,uint32_t *_offset,int _dir) {
+ 
+ 
+         if ((vobu1 !=NULL) && (vobu2!=NULL)) {
+-            *_offset = abs(vobu1->newSector - vobu2->newSector)  | maskOffset1 ;
++            *_offset = (vobu1->newSector - vobu2->newSector)  | maskOffset1 ;
+             *_offset |= maskOffset2;
+             return vobu2;
+         }
+diff --git c/src/backup/k9execcopy.cpp i/src/backup/k9execcopy.cpp
+index d59222c..35de923 100644
+--- c/src/backup/k9execcopy.cpp
++++ i/src/backup/k9execcopy.cpp
+@@ -306,7 +306,7 @@ void k9ExecCopy::createMkv(k9DVDTitle *_title,const QString &_filename,QMultiMap
+ 
+ #if QT_VERSION >= 0x050000
+     m_progressDialog=new QProgressDialog(k9Dialogs::getMainWidget() );
+-    m_progressDialog->setCancelButton(false);
++    m_progressDialog->setCancelButton(0);
+ 
+ #else
+     m_progressDialog=new KProgressDialog(k9Dialogs::getMainWidget() );
diff --git a/nixpkgs/pkgs/applications/video/kazam/default.nix b/nixpkgs/pkgs/applications/video/kazam/default.nix
new file mode 100644
index 000000000000..0cdd3db85257
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/kazam/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchurl, substituteAll, python3, gst_all_1, wrapGAppsHook, gobject-introspection
+, gtk3, libwnck3, keybinder3, intltool, libcanberra-gtk3, libappindicator-gtk3, libpulseaudio
+, fetchpatch }:
+
+python3.pkgs.buildPythonApplication rec {
+  name = "kazam-${version}";
+  version = "1.4.5";
+  namePrefix = "";
+
+  src = fetchurl {
+    url = "https://launchpad.net/kazam/stable/${version}/+download/kazam-${version}.tar.gz";
+    sha256 = "1qygnrvm6aqixbyivhssp70hs0llxwk7lh3j7idxa2jbkk06hj4f";
+  };
+
+  nativeBuildInputs = [ gobject-introspection python3.pkgs.distutils_extra intltool wrapGAppsHook ];
+  buildInputs = [
+    gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gtk3 libwnck3
+    keybinder3 libappindicator-gtk3
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [ pygobject3 pyxdg pycairo dbus-python ];
+ 
+  # workaround https://github.com/NixOS/nixpkgs/issues/56943
+  strictDeps = false;
+
+  patches = [
+    # Fix paths
+    (substituteAll {
+      src = ./fix-paths.patch;
+      libcanberra = libcanberra-gtk3;
+      inherit libpulseaudio;
+    })
+    # https://github.com/hzbd/kazam/pull/21
+    (fetchpatch {
+      url = "https://github.com/hzbd/kazam/commit/37e53a5aa61f4223a9ea03ceeda26eeba2b9d37b.patch";
+      sha256 = "1q5dpmdm6cvgzw8xa7bwclnqa05xc73ja1lszwmwv5glyik0fk4z";
+    })
+  ];
+
+  # no tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A screencasting program created with design in mind";
+    homepage = "https://code.launchpad.net/kazam";
+    license = licenses.lgpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.domenkozar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/kazam/fix-paths.patch b/nixpkgs/pkgs/applications/video/kazam/fix-paths.patch
new file mode 100644
index 000000000000..43e360830ab5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/kazam/fix-paths.patch
@@ -0,0 +1,22 @@
+--- a/kazam/backend/grabber.py
++++ b/kazam/backend/grabber.py
+@@ -72,7 +72,7 @@
+         #
+         if prefs.shutter_sound and (not self.god):
+             soundfile = os.path.join(prefs.datadir, 'sounds', prefs.sound_files[prefs.shutter_type])
+-            subprocess.call(['/usr/bin/canberra-gtk-play', '-f', soundfile])
++            subprocess.call(['@libcanberra@/bin/canberra-gtk-play', '-f', soundfile])
+ 
+         if self.xid:
+             if prefs.capture_borders_pic:
+--- a/kazam/pulseaudio/ctypes_pulseaudio.py
++++ b/kazam/pulseaudio/ctypes_pulseaudio.py
+@@ -20,7 +20,7 @@
+ #       MA 02110-1301, USA.
+ 
+ from ctypes import *
+-PA = CDLL('libpulse.so.0')
++PA = CDLL('@libpulseaudio@/lib/libpulse.so.0')
+ 
+ #
+ # Pulse Audio constants and defines
diff --git a/nixpkgs/pkgs/applications/video/kino/default.nix b/nixpkgs/pkgs/applications/video/kino/default.nix
new file mode 100644
index 000000000000..3f41e73dfa75
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/kino/default.nix
@@ -0,0 +1,95 @@
+# is this configure option of interest?
+#--enable-udev-rules-dir=PATH
+#                        Where to install udev rules (/etc/udev/rules.d)
+
+#TODO shared version?
+
+
+# This is my config output.. Much TODO ?
+#source path               /tmp/nix-31998-1/kino-1.2.0/ffmpeg
+#C compiler                gcc
+#make                      make
+#.align is power-of-two    no
+#ARCH                      x86_64 (generic)
+#build suffix              -kino
+#big-endian                no
+#MMX enabled               yes
+#CMOV enabled              no
+#CMOV is fast              no
+#gprof enabled             no
+#debug symbols             yes
+#strip symbols             yes
+#optimize                  yes
+#static                    yes
+#shared                    no
+#postprocessing support    no
+#software scaler enabled   yes
+#video hooking             no
+#network support           no
+#threading support         no
+#SDL support               no
+#Sun medialib support      no
+#AVISynth enabled          no
+#liba52 support            no
+#liba52 dlopened           no
+#libdts support            no
+#libfaac enabled           no
+#libfaad enabled           no
+#faadbin enabled           no
+#libgsm enabled            no
+#libmp3lame enabled        no
+#libnut enabled            no
+#libogg enabled            no
+#libtheora enabled         no
+#libvorbis enabled         no
+#x264 enabled              no
+#XviD enabled              no
+#zlib enabled              no
+#AMR-NB float support      no
+#AMR-NB fixed support      no
+#AMR-WB float support      no
+#AMR-WB IF2 support        no
+
+{ stdenv, fetchurl, gtk2, libglade, libxml2, libraw1394, libsamplerate, libdv
+, pkgconfig, perlPackages, libavc1394, libiec61883, libXv, gettext
+, libX11, glib, cairo, intltool, ffmpeg, libv4l
+}:
+
+stdenv.mkDerivation {
+  name = "kino-1.3.4";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/kino/kino-1.3.4.tar.gz";
+    sha256 = "020s05k0ma83rq2kfs8x474pqicaqp9spar81qc816ddfrnh8k8i";
+  };
+
+  buildInputs = [ gtk2 libglade libxml2 libraw1394 libsamplerate libdv
+      pkgconfig libavc1394 libiec61883 intltool libXv gettext libX11 glib cairo ffmpeg libv4l ] # TODOoptional packages
+    ++ (with perlPackages; [ perl XMLParser ]);
+
+  configureFlags = [ "--enable-local-ffmpeg=no" ];
+
+  hardeningDisable = [ "format" ];
+
+  NIX_LDFLAGS = "-lavcodec -lavutil";
+
+  patches = [ ./kino-1.3.4-v4l1.patch ./kino-1.3.4-libav-0.7.patch ./kino-1.3.4-libav-0.8.patch ]; #./kino-1.3.4-libavcodec-pkg-config.patch ];
+
+  postInstall = "
+    rpath=`patchelf --print-rpath \$out/bin/kino`;
+    for i in $buildInputs; do
+      echo adding \$i/lib
+      rpath=\$rpath\${rpath:+:}\$i/lib
+    done
+    for i in \$out/bin/*; do
+      patchelf --set-rpath \"\$rpath\" \"\$i\"
+    done
+  ";
+
+  meta = {
+      description = "Non-linear DV editor for GNU/Linux";
+      homepage = "http://www.kinodv.org/";
+      license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libav-0.7.patch b/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libav-0.7.patch
new file mode 100644
index 000000000000..65c5bc38276d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libav-0.7.patch
@@ -0,0 +1,60 @@
+--- kino-1.3.4.orig/src/frame.cc	2011-07-17 14:54:59.089481638 +0200
++++ kino-1.3.4/src/frame.cc	2011-07-17 15:09:23.199481714 +0200
+@@ -1063,7 +1063,12 @@
+ 	AVPicture dest;
+ 	int got_picture;
+ 
+-	avcodec_decode_video( libavcodec, frame, &got_picture, data, GetFrameSize() );
++	AVPacket pkt;
++	av_init_packet(&pkt);
++	pkt.data = data;
++	pkt.size = GetFrameSize();
++
++	avcodec_decode_video2( libavcodec, frame, &got_picture, &pkt );
+ 	if ( got_picture )
+ 	{
+ 		avpicture_fill( &dest, static_cast<uint8_t*>( rgb ), PIX_FMT_RGB24, GetWidth(), GetHeight() );
+@@ -1123,7 +1128,12 @@
+ 	AVPicture output;
+ 	int got_picture;
+ 
+-	avcodec_decode_video( libavcodec, frame, &got_picture, data, GetFrameSize() );
++	AVPacket pkt;
++	av_init_packet(&pkt);
++	pkt.data = data;
++	pkt.size = GetFrameSize();
++
++	avcodec_decode_video2( libavcodec, frame, &got_picture, &pkt );
+ 	if ( got_picture )
+ 	{
+ 		avpicture_fill( &output, static_cast<uint8_t*>( yuv ), PIX_FMT_YUV422, GetWidth(), GetHeight() );
+@@ -1156,7 +1166,12 @@
+ 	AVFrame *frame = avcodec_alloc_frame();
+ 	int got_picture;
+ 
+-	avcodec_decode_video( libavcodec, frame, &got_picture, data, GetFrameSize() );
++        AVPacket pkt;
++        av_init_packet(&pkt);
++        pkt.data = data;
++        pkt.size = GetFrameSize();
++
++        avcodec_decode_video2( libavcodec, frame, &got_picture, &pkt );
+ 
+ 	int width = GetWidth(), height = GetHeight();
+ 
+@@ -1319,12 +1334,12 @@
+ #if defined(HAVE_LIBAVCODEC)
+ 	if ( avformatEncoder == NULL )
+ 	{
+-		avformatEncoder = av_alloc_format_context();
++		avformatEncoder = avformat_alloc_context();
+ 		if ( avformatEncoder )
+ 		{
+-			avformatEncoder->oformat = guess_format( "dv", NULL, NULL );
++			avformatEncoder->oformat = av_guess_format( "dv", NULL, NULL );
+ 			AVStream* vst = av_new_stream( avformatEncoder, 0 );
+-			vst->codec->codec_type = CODEC_TYPE_VIDEO;
++			vst->codec->codec_type = AVMEDIA_TYPE_VIDEO;
+ 			vst->codec->codec_id = CODEC_ID_DVVIDEO;
+ 			vst->codec->bit_rate = 25000000;
+			vst->start_time = 0;
diff --git a/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libav-0.8.patch b/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libav-0.8.patch
new file mode 100644
index 000000000000..f98cbda0bc49
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libav-0.8.patch
@@ -0,0 +1,57 @@
+--- kino-1.3.4.orig/src/frame.cc	2012-05-14 19:55:42.153772418 -0700
++++ kino-1.3.4/src/frame.cc	2012-05-14 20:28:34.448838653 -0700
+@@ -101,8 +101,9 @@
+ #if defined(HAVE_LIBAVCODEC)
+ 	pthread_mutex_lock( &avcodec_mutex );
+ 	av_register_all();
+-	libavcodec = avcodec_alloc_context();
+-	avcodec_open( libavcodec, avcodec_find_decoder( CODEC_ID_DVVIDEO ) );
++	libavcodec = avcodec_alloc_context3(NULL);
++	avcodec_open2( libavcodec,
++                       avcodec_find_decoder( CODEC_ID_DVVIDEO ), NULL );
+ 	pthread_mutex_unlock( &avcodec_mutex );
+ 	data = ( unsigned char* ) av_mallocz( 144000 );
+ #if defined(HAVE_SWSCALE)
+@@ -1338,7 +1339,7 @@
+ 		if ( avformatEncoder )
+ 		{
+ 			avformatEncoder->oformat = av_guess_format( "dv", NULL, NULL );
+-			AVStream* vst = av_new_stream( avformatEncoder, 0 );
++			AVStream* vst = avformat_new_stream( avformatEncoder, NULL );
+ 			vst->codec->codec_type = AVMEDIA_TYPE_VIDEO;
+ 			vst->codec->codec_id = CODEC_ID_DVVIDEO;
+ 			vst->codec->bit_rate = 25000000;
+@@ -1364,12 +1365,10 @@
+ 			vst->sample_aspect_ratio = avcodecEncoder->sample_aspect_ratio;
+ #endif
+ 			avcodecEncoder->thread_count = 2;
+-			avcodec_thread_init( avcodecEncoder, avcodecEncoder->thread_count );
+ 			avcodecEncoder->time_base= isPAL ? ( AVRational ){ 1, 25 } : ( AVRational ){ 1001, 30000 };
+ 			avcodecEncoder->pix_fmt = isPAL ? PIX_FMT_YUV420P : PIX_FMT_YUV411P;
+ 			avcodecEncoder->flags |= CODEC_FLAG_INTERLACED_DCT;
+-			av_set_parameters( avformatEncoder, NULL );
+-			avcodec_open( avcodecEncoder, avcodec_find_encoder( CODEC_ID_DVVIDEO ) );
++			avcodec_open2( avcodecEncoder, avcodec_find_encoder( CODEC_ID_DVVIDEO ), NULL );
+ 			av_new_packet( &avpacketEncoder, 144000 );
+ 			tempImage = ( uint8_t* ) av_malloc(
+ 				avpicture_get_size( avcodecEncoder->pix_fmt, avcodecEncoder->width, avcodecEncoder->height ) );
+@@ -1475,16 +1474,16 @@
+ 
+ 			// Encode
+ 			bytesInFrame = avcodec_encode_video( avcodecEncoder, avpacketEncoder.data, size, output );
+-			url_open_buf( &avformatEncoder->pb, data, bytesInFrame, URL_WRONLY );
++                        avformatEncoder->pb = avio_alloc_context(data, bytesInFrame, 0, NULL, NULL, NULL, NULL);
+ 			avpacketEncoder.size = bytesInFrame;
+ 			if ( !isEncoderHeaderWritten )
+ 			{
+-				av_write_header( avformatEncoder );
++				avformat_write_header( avformatEncoder, NULL );
+ 				isEncoderHeaderWritten = true;
+ 			}
+ 			av_write_frame( avformatEncoder, &avpacketEncoder );
+ #if LIBAVFORMAT_VERSION_INT >= ((52<<16)+(0<<8)+0)
+-			url_close_buf( avformatEncoder->pb );
++			avio_close( avformatEncoder->pb );
+ #else
+ 			url_close_buf( &avformatEncoder->pb );
+ #endif
diff --git a/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libavcodec-pkg-config.patch b/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libavcodec-pkg-config.patch
new file mode 100644
index 000000000000..d6a8953cf00a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libavcodec-pkg-config.patch
@@ -0,0 +1,11 @@
+--- a/kino-1.3.4/configure.in	2009-09-08 02:35:23.000000000 -0400
++++ b/kino-1.3.4/configure.in	2014-01-27 14:53:01.366063037 -0500
+@@ -221,7 +221,7 @@
+ 		if (test "x$avcodec_include" != x) || (test "x$avcodec_lib" != x) ; then
+ 			local_legacy_ffmpeg_test
+ 		else
+-			PKG_CHECK_MODULES(AVCODEC, libavformat,
++			PKG_CHECK_MODULES(AVCODEC, [libavcodec libavformat libavutil],
+ 			[
+ 				AC_DEFINE(HAVE_LIBAVCODEC, 1, [Enable FFMPEG libavcodec])
+ 				AC_SUBST(AVCODEC_LIBS)
diff --git a/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-v4l1.patch b/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-v4l1.patch
new file mode 100644
index 000000000000..05ec7386709e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-v4l1.patch
@@ -0,0 +1,21 @@
+no-1.3.3.orig/ffmpeg/libavdevice/v4l.c	2011-05-17 02:20:37.161004916 +0400
++++ kino-1.3.3.orig/ffmpeg/libavdevice/v4l.c	2011-05-17 02:21:57.302377529 +0400
+@@ -26,7 +26,7 @@ 
+ #include <sys/mman.h>
+ #include <sys/time.h>
+ #define _LINUX_TIME_H 1
+-#include <linux/videodev.h>
++#include <libv4l1-videodev.h>
+ #include <time.h>
+ 
+ typedef struct {
+--- kino-1.3.3.orig/src/v4l.h	2011-05-17 02:20:38.896969666 +0400
++++ kino-1.3.3.orig/src/v4l.h	2011-05-17 02:21:39.922730395 +0400
+@@ -40,7 +40,7 @@ 
+ 
+ #define _DEVICE_H_
+ #define _LINUX_TIME_H
+-#include <linux/videodev.h>
++#include <libv4l1-videodev.h>
+ 
+ #include "displayer.h"
diff --git a/nixpkgs/pkgs/applications/video/kmplayer/default.nix b/nixpkgs/pkgs/applications/video/kmplayer/default.nix
new file mode 100644
index 000000000000..274ff7cdeab7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/kmplayer/default.nix
@@ -0,0 +1,48 @@
+{
+  mkDerivation, lib, fetchurl,
+  extra-cmake-modules, makeWrapper,
+  libpthreadstubs, libXdmcp,
+  qtsvg, qtx11extras, ki18n, kdelibs4support, kio, kmediaplayer, kwidgetsaddons,
+  phonon, cairo, mplayer
+}:
+
+mkDerivation rec {
+  majorMinorVersion = "0.12";
+  patchVersion = "0b";
+  version = "${majorMinorVersion}.${patchVersion}";
+  pname = "kmplayer";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/kmplayer/${majorMinorVersion}/kmplayer-${version}.tar.bz2";
+    sha256 = "0wzdxym4fc83wvqyhcwid65yv59a2wvp1lq303cn124mpnlwx62y";
+  };
+
+  patches = [
+    ./kmplayer_part-plugin_metadata.patch # Qt 5.9 doesn't like an empty string for the optional "FILE" argument of "Q_PLUGIN_METADATA"
+    ./no-docs.patch # Don't build docs due to errors (kdelibs4support propagates kdoctools)
+  ];
+
+  postPatch = ''
+    sed -i src/kmplayer.desktop \
+      -e "s,^Exec.*,Exec=$out/bin/kmplayer -qwindowtitle %c %i %U,"
+  '';
+
+  nativeBuildInputs = [ extra-cmake-modules makeWrapper ];
+
+  buildInputs = [
+    libpthreadstubs libXdmcp
+    qtsvg qtx11extras ki18n kdelibs4support kio kmediaplayer kwidgetsaddons
+    phonon cairo
+  ];
+
+  postInstall = ''
+    wrapProgram $out/bin/kmplayer --suffix PATH : ${mplayer}/bin
+  '';
+
+  meta = with lib; {
+    description = "MPlayer front-end for KDE";
+    license = with licenses; [ gpl2 lgpl2 fdl12 ];
+    homepage = "https://kmplayer.kde.org/";
+    maintainers = with maintainers; [ sander zraexy ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/kmplayer/kmplayer_part-plugin_metadata.patch b/nixpkgs/pkgs/applications/video/kmplayer/kmplayer_part-plugin_metadata.patch
new file mode 100644
index 000000000000..9b6652b0be58
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/kmplayer/kmplayer_part-plugin_metadata.patch
@@ -0,0 +1,11 @@
+--- a/src/kmplayer_part.h
++++ b/src/kmplayer_part.h
+@@ -36,7 +36,7 @@
+ 
+ class KMPlayerFactory : public KPluginFactory {
+     Q_OBJECT
+-    Q_PLUGIN_METADATA(IID "org.kde.KPluginFactory" FILE "")
++    Q_PLUGIN_METADATA(IID "org.kde.KPluginFactory")
+     Q_INTERFACES(KPluginFactory)
+ public:
+     KMPlayerFactory();
diff --git a/nixpkgs/pkgs/applications/video/kmplayer/no-docs.patch b/nixpkgs/pkgs/applications/video/kmplayer/no-docs.patch
new file mode 100644
index 000000000000..c93453f908c9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/kmplayer/no-docs.patch
@@ -0,0 +1,12 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -79,9 +79,6 @@
+ 
+ add_subdirectory(src)
+ add_subdirectory(icons)
+-if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/doc" AND KF5DocTools_VERSION)
+-  add_subdirectory(doc)
+-endif(KF5DocTools_VERSION)
+ add_subdirectory(data)
+ 
+ if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/po")
diff --git a/nixpkgs/pkgs/applications/video/kodi/default.nix b/nixpkgs/pkgs/applications/video/kodi/default.nix
new file mode 100644
index 000000000000..1ef3c9ee70f2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/kodi/default.nix
@@ -0,0 +1,295 @@
+{ stdenv, lib, fetchpatch, fetchurl, fetchFromGitHub, autoconf, automake, libtool, makeWrapper, linuxHeaders
+, pkgconfig, cmake, gnumake, yasm, python2Packages
+, libgcrypt, libgpgerror, libunistring
+, boost, avahi, lame, autoreconfHook
+, gettext, pcre-cpp, yajl, fribidi, which
+, openssl, gperf, tinyxml2, taglib, libssh, swig, jre
+, libxml2, systemd
+, alsaLib, libGLU, libGL, glew, fontconfig, freetype, ftgl
+, libjpeg, libpng, libtiff
+, libmpeg2, libsamplerate, libmad
+, libogg, libvorbis, flac, libxslt
+, lzo, libcdio, libmodplug, libass, libbluray
+, sqlite, libmysqlclient, nasm, gnutls, libva, libdrm
+, curl, bzip2, zip, unzip, glxinfo
+, libcec, libcec_platform, dcadec, libuuid
+, libcrossguid, libmicrohttpd
+, bluez, doxygen, giflib, glib, harfbuzz, lcms2, libidn, libpthreadstubs, libtasn1
+, libplist, p11-kit, zlib, flatbuffers, fmt, fstrcmp, rapidjson
+, lirc
+, x11Support ? true, libX11, xorgproto, libXt, libXmu, libXext, libXinerama, libXrandr, libXtst, libXfixes, xdpyinfo, libXdmcp
+, dbusSupport ? true, dbus ? null
+, joystickSupport ? true, cwiid ? null
+, nfsSupport ? true, libnfs ? null
+, pulseSupport ? true, libpulseaudio ? null
+, rtmpSupport ? true, rtmpdump ? null
+, sambaSupport ? true, samba ? null
+, udevSupport ? true, udev ? null
+, usbSupport  ? false, libusb-compat-0_1 ? null
+, vdpauSupport ? true, libvdpau ? null
+, useWayland ? false, wayland ? null, wayland-protocols ? null
+, waylandpp ?  null, libxkbcommon ? null
+, useGbm ? false, mesa ? null, libinput ? null
+, buildPackages
+}:
+
+assert dbusSupport  -> dbus != null;
+assert nfsSupport   -> libnfs != null;
+assert pulseSupport -> libpulseaudio != null;
+assert rtmpSupport  -> rtmpdump != null;
+assert sambaSupport -> samba != null;
+assert udevSupport  -> udev != null;
+assert usbSupport   -> libusb-compat-0_1 != null && ! udevSupport; # libusb-compat-0_1 won't be used if udev is avaliable
+assert vdpauSupport -> libvdpau != null;
+assert useWayland -> wayland != null && wayland-protocols != null && waylandpp != null && libxkbcommon != null;
+
+let
+  kodiReleaseDate = "20200301";
+  kodiVersion = "18.6";
+  rel = "Leia";
+
+  kodi_src = fetchFromGitHub {
+    owner  = "xbmc";
+    repo   = "xbmc";
+    rev    = "${kodiVersion}-${rel}";
+    sha256 = "0rwymipn5hljy5xrslzmrljmj6f9wb191wi7gjw20wl6sv44d0bk";
+  };
+
+  cmakeProto = fetchurl {
+    url = "https://raw.githubusercontent.com/pramsey/libght/ca9b1121c352ea10170636e170040e1af015bad1/cmake/modules/CheckPrototypeExists.cmake";
+    sha256  = "1zai82gm5x55n3xvdv7mns3ja6a2k81x9zz0nk42j6s2yb0fkjxh";
+  };
+
+  cmakeProtoPatch = ''
+    # get rid of windows headers as they will otherwise be found first
+    rm -rf msvc
+
+    cp ${cmakeProto} cmake/${cmakeProto.name}
+    # we need to enable support for C++ for check_prototype_exists to do its thing
+    substituteInPlace CMakeLists.txt --replace 'LANGUAGES C' 'LANGUAGES C CXX'
+    if [ -f cmake/CheckHeadersSTDC.cmake ]; then
+      sed -i cmake/CheckHeadersSTDC.cmake \
+        -e '7iinclude(CheckPrototypeExists)'
+    fi
+  '';
+
+  kodiDependency = { name, version, rev, sha256, ... } @attrs:
+    let
+      attrs' = builtins.removeAttrs attrs ["name" "version" "rev" "sha256"];
+    in stdenv.mkDerivation ({
+      name = "kodi-${lib.toLower name}-${version}";
+      src = fetchFromGitHub {
+        owner = "xbmc";
+        repo  = name;
+        inherit rev sha256;
+      };
+      enableParallelBuilding = true;
+    } // attrs');
+
+  ffmpeg = kodiDependency rec {
+    name    = "FFmpeg";
+    version = "4.0.3";
+    rev     = "${version}-${rel}-18.2";
+    sha256  = "1krsjlr949iy5l6ljxancza1yi6w1annxc5s6k283i9mb15qy8cy";
+    preConfigure = ''
+      cp ${kodi_src}/tools/depends/target/ffmpeg/{CMakeLists.txt,*.cmake} .
+      sed -i 's/ --cpu=''${CPU}//' CMakeLists.txt
+      sed -i 's/--strip=''${CMAKE_STRIP}/--strip=''${CMAKE_STRIP} --ranlib=''${CMAKE_RANLIB}/' CMakeLists.txt
+    '';
+    cmakeFlags = lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
+      "-DCROSSCOMPILING=ON"
+      "-DCPU=${stdenv.hostPlatform.parsed.cpu.name}"
+      "-DOS=${stdenv.hostPlatform.parsed.kernel.name}"
+      "-DPKG_CONFIG_EXECUTABLE=pkgconfig"
+    ];
+    buildInputs = [ libidn libtasn1 p11-kit zlib libva ]
+      ++ lib.optional  vdpauSupport    libvdpau;
+    nativeBuildInputs = [ cmake nasm pkgconfig gnutls ];
+  };
+
+  # We can build these externally but FindLibDvd.cmake forces us to build it
+  # them, so we currently just use them for the src.
+  libdvdcss = kodiDependency rec {
+    name              = "libdvdcss";
+    version           = "1.4.2";
+    rev               = "${version}-${rel}-Beta-5";
+    sha256            = "0j41ydzx0imaix069s3z07xqw9q95k7llh06fc27dcn6f7b8ydyl";
+    buildInputs       = [ linuxHeaders ];
+    nativeBuildInputs = [ cmake pkgconfig ];
+    postPatch = ''
+      rm -rf msvc
+
+      substituteInPlace config.h.cm \
+        --replace '#cmakedefine O_BINARY "''${O_BINARY}"' '#define O_BINARY 0'
+    '';
+    cmakeFlags = [
+      "-DBUILD_SHARED_LIBS=1"
+      "-DHAVE_LINUX_DVD_STRUCT=1"
+    ];
+  };
+
+  libdvdnav = kodiDependency rec {
+    name              = "libdvdnav";
+    version           = "6.0.0";
+    rev               = "${version}-${rel}-Alpha-3";
+    sha256            = "0qwlf4lgahxqxk1r2pzl866mi03pbp7l1fc0rk522sc0ak2s9jhb";
+    buildInputs       = [ libdvdcss libdvdread ];
+    nativeBuildInputs = [ cmake pkgconfig ];
+    postPatch         = cmakeProtoPatch;
+    postInstall = ''
+      mv $out/lib/liblibdvdnav.so $out/lib/libdvdnav.so
+    '';
+  };
+
+  libdvdread = kodiDependency rec {
+    name              = "libdvdread";
+    version           = "6.0.0";
+    rev               = "${version}-${rel}-Alpha-3";
+    sha256            = "1xxn01mhkdnp10cqdr357wx77vyzfb5glqpqyg8m0skyi75aii59";
+    buildInputs       = [ libdvdcss ];
+    nativeBuildInputs = [ cmake pkgconfig ];
+    configureFlags    = [ "--with-libdvdcss" ];
+    postPatch         = cmakeProtoPatch;
+  };
+
+in stdenv.mkDerivation {
+    name = "kodi-${lib.optionalString useWayland "wayland-"}${kodiVersion}";
+
+    src = kodi_src;
+
+    buildInputs = [
+      gnutls libidn libtasn1 nasm p11-kit
+      libxml2 python2Packages.python
+      boost libmicrohttpd
+      gettext pcre-cpp yajl fribidi libva libdrm
+      openssl gperf tinyxml2 taglib libssh
+      alsaLib libGL libGLU fontconfig freetype ftgl
+      libjpeg libpng libtiff
+      libmpeg2 libsamplerate libmad
+      libogg libvorbis flac libxslt systemd
+      lzo libcdio libmodplug libass libbluray
+      sqlite libmysqlclient avahi lame
+      curl bzip2 zip unzip glxinfo
+      libcec libcec_platform dcadec libuuid
+      libgcrypt libgpgerror libunistring
+      libcrossguid libplist
+      bluez giflib glib harfbuzz lcms2 libpthreadstubs
+      ffmpeg flatbuffers fmt fstrcmp rapidjson
+      lirc
+      # libdvdcss libdvdnav libdvdread
+    ]
+    ++ lib.optional x11Support [
+      libX11 xorgproto libXt libXmu libXext.dev libXdmcp
+      libXinerama libXrandr.dev libXtst libXfixes
+    ]
+    ++ lib.optional  dbusSupport     dbus
+    ++ lib.optional joystickSupport cwiid
+    ++ lib.optional  nfsSupport      libnfs
+    ++ lib.optional  pulseSupport    libpulseaudio
+    ++ lib.optional  rtmpSupport     rtmpdump
+    ++ lib.optional  sambaSupport    samba
+    ++ lib.optional  udevSupport     udev
+    ++ lib.optional  usbSupport      libusb-compat-0_1
+    ++ lib.optional  vdpauSupport    libvdpau
+    ++ lib.optionals useWayland [
+      wayland 
+      waylandpp.dev 
+      wayland-protocols
+      # Not sure why ".dev" is needed here, but CMake doesn't find libxkbcommon otherwise
+      libxkbcommon.dev
+    ]
+    ++ lib.optional useGbm [
+      libxkbcommon.dev
+      mesa.dev
+      libinput.dev
+    ];
+
+    nativeBuildInputs = [
+      cmake
+      doxygen
+      makeWrapper
+      which
+      pkgconfig gnumake
+      autoconf automake libtool # still needed for some components. Check if that is the case with 19.0
+      jre yasm gettext python2Packages.python flatbuffers
+
+      # for TexturePacker
+      giflib zlib libpng libjpeg lzo
+    ] ++ lib.optionals useWayland [ wayland-protocols waylandpp.bin ];
+
+    depsBuildBuild = [
+      buildPackages.stdenv.cc
+    ];
+
+    cmakeFlags = [
+      "-Dlibdvdcss_URL=${libdvdcss.src}"
+      "-Dlibdvdnav_URL=${libdvdnav.src}"
+      "-Dlibdvdread_URL=${libdvdread.src}"
+      "-DGIT_VERSION=${kodiReleaseDate}"
+      "-DENABLE_EVENTCLIENTS=ON"
+      "-DENABLE_INTERNAL_CROSSGUID=OFF"
+      "-DENABLE_OPTICAL=ON"
+      "-DLIRC_DEVICE=/run/lirc/lircd"
+      "-DSWIG_EXECUTABLE=${buildPackages.swig}/bin/swig"
+      "-DFLATBUFFERS_FLATC_EXECUTABLE=${buildPackages.flatbuffers}/bin/flatc"
+      "-DPYTHON_EXECUTABLE=${buildPackages.python2Packages.python}/bin/python"
+    ] ++ lib.optional useWayland [
+      "-DCORE_PLATFORM_NAME=wayland"
+      "-DWAYLAND_RENDER_SYSTEM=gl"
+      "-DWAYLANDPP_SCANNER=${buildPackages.waylandpp}/bin/wayland-scanner++"
+    ] ++ lib.optional useGbm [
+      "-DCORE_PLATFORM_NAME=gbm"
+      "-DGBM_RENDER_SYSTEM=gles"
+    ];
+
+    enableParallelBuilding = true;
+
+    # 14 tests fail but the biggest issue is that every test takes 30 seconds -
+    # I'm guessing there is a thing waiting to time out
+    doCheck = false;
+
+    # Need these tools on the build system when cross compiling,
+    # hacky, but have found no other way.
+    preConfigure = lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
+      CXX=c++ LD=ld make -C tools/depends/native/JsonSchemaBuilder
+      cmakeFlags+=" -DWITH_JSONSCHEMABUILDER=$PWD/tools/depends/native/JsonSchemaBuilder/bin"
+
+      CXX=c++ LD=ld make EXTRA_CONFIGURE= -C tools/depends/native/TexturePacker
+      cmakeFlags+=" -DWITH_TEXTUREPACKER=$PWD/tools/depends/native/TexturePacker/bin"
+    '';
+
+    postPatch = ''
+      substituteInPlace xbmc/platform/linux/LinuxTimezone.cpp \
+        --replace 'usr/share/zoneinfo' 'etc/zoneinfo'
+    '';
+
+    postInstall = ''
+      for p in $(ls $out/bin/) ; do
+        wrapProgram $out/bin/$p \
+          --prefix PATH            ":" "${lib.makeBinPath ([ python2Packages.python glxinfo ] ++ lib.optional x11Support xdpyinfo)}" \
+          --prefix LD_LIBRARY_PATH ":" "${lib.makeLibraryPath
+              ([ curl systemd libmad libvdpau libcec libcec_platform libass ]
+                 ++ lib.optional nfsSupport libnfs
+                 ++ lib.optional rtmpSupport rtmpdump)}"
+      done
+
+      substituteInPlace $out/share/xsessions/kodi.desktop \
+        --replace kodi-standalone $out/bin/kodi-standalone
+    '';
+
+    doInstallCheck = true;
+
+    installCheckPhase = "$out/bin/kodi --version";
+
+    passthru = {
+      pythonPackages = python2Packages;
+    };
+
+    meta = with stdenv.lib; {
+      description = "Media center";
+      homepage    = "https://kodi.tv/";
+      license     = licenses.gpl2;
+      platforms   = platforms.linux;
+      maintainers = with maintainers; [ domenkozar titanous edwtjo peterhoeg sephalon ];
+    };
+}
diff --git a/nixpkgs/pkgs/applications/video/kodi/plugins.nix b/nixpkgs/pkgs/applications/video/kodi/plugins.nix
new file mode 100644
index 000000000000..0e23eac9a866
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/kodi/plugins.nix
@@ -0,0 +1,552 @@
+{ stdenv, callPackage, fetchFromGitHub
+, cmake, kodiPlain, libcec_platform, tinyxml, rapidxml
+, steam, udev, libusb1, jsoncpp, libhdhomerun, zlib
+, python2Packages, expat, glib, nspr, nss, openssl
+, libssh, libarchive, lzma, bzip2, lz4, lzo }:
+
+with stdenv.lib;
+
+let self = rec {
+
+  pluginDir = "/share/kodi/addons";
+  rel = "Leia";
+
+  kodi = kodiPlain;
+
+  # Convert derivation to a kodi module. Stolen from ../../../top-level/python-packages.nix
+  toKodiPlugin = drv: drv.overrideAttrs(oldAttrs: {
+    # Use passthru in order to prevent rebuilds when possible.
+    passthru = (oldAttrs.passthru or {})// {
+      kodiPluginFor = kodi;
+      requiredKodiPlugins = requiredKodiPlugins drv.propagatedBuildInputs;
+    };
+  });
+
+  # Check whether a derivation provides a Kodi plugin.
+  hasKodiPlugin = drv: drv ? kodiPluginFor && drv.kodiPluginFor == kodi;
+
+  # Get list of required Kodi plugins given a list of derivations.
+  requiredKodiPlugins = drvs: let
+      modules = filter hasKodiPlugin drvs;
+    in unique (modules ++ concatLists (catAttrs "requiredKodiPlugins" modules));
+
+  kodiWithPlugins = func: callPackage ./wrapper.nix {
+    inherit kodi;
+    plugins = requiredKodiPlugins (func self);
+  };
+
+  kodi-platform = stdenv.mkDerivation rec {
+    project = "kodi-platform";
+    version = "17.1";
+    name = "${project}-${version}";
+
+    src = fetchFromGitHub {
+      owner = "xbmc";
+      repo = project;
+      rev = "c8188d82678fec6b784597db69a68e74ff4986b5";
+      sha256 = "1r3gs3c6zczmm66qcxh9mr306clwb3p7ykzb70r3jv5jqggiz199";
+    };
+
+    buildInputs = [ cmake kodiPlain libcec_platform tinyxml ];
+  };
+
+  mkKodiPlugin = { plugin, namespace, version, sourceDir ? null, ... }@args:
+  toKodiPlugin (stdenv.mkDerivation ({
+    name = "kodi-plugin-${plugin}-${version}";
+
+    dontStrip = true;
+
+    extraRuntimeDependencies = [ ];
+
+    installPhase = ''
+      ${if sourceDir == null then "" else "cd $src/$sourceDir"}
+      d=$out${pluginDir}/${namespace}
+      mkdir -p $d
+      sauce="."
+      [ -d ${namespace} ] && sauce=${namespace}
+      cp -R "$sauce/"* $d
+    '';
+  } // args));
+
+  mkKodiABIPlugin = { plugin, namespace, version, extraBuildInputs ? [],
+    extraRuntimeDependencies ? [], extraInstallPhase ? "", ... }@args:
+  toKodiPlugin (stdenv.mkDerivation ({
+    name = "kodi-plugin-${plugin}-${version}";
+
+    dontStrip = true;
+
+    buildInputs = [ cmake kodiPlain kodi-platform libcec_platform ]
+               ++ extraBuildInputs;
+
+    inherit extraRuntimeDependencies;
+
+    # disables check ensuring install prefix is that of kodi
+    cmakeFlags = [
+      "-DOVERRIDE_PATHS=1"
+    ];
+
+    # kodi checks for plugin .so libs existance in the addon folder (share/...)
+    # and the non-wrapped kodi lib/... folder before even trying to dlopen
+    # them. Symlinking .so, as setting LD_LIBRARY_PATH is of no use
+    installPhase = let n = namespace; in ''
+      make install
+      ln -s $out/lib/addons/${n}/${n}.so.${version} $out${pluginDir}/${n}/${n}.so.${version}
+      ${extraInstallPhase}
+    '';
+  } // args));
+
+  advanced-launcher = mkKodiPlugin rec {
+
+    plugin = "advanced-launcher";
+    namespace = "plugin.program.advanced.launcher";
+    version = "2.5.8";
+
+    src = fetchFromGitHub {
+      owner = "edwtjo";
+      repo = plugin;
+      rev = version;
+      sha256 = "142vvgs37asq5m54xqhjzqvgmb0xlirvm0kz6lxaqynp0vvgrkx2";
+    };
+
+    meta = {
+      homepage = "https://forum.kodi.tv/showthread.php?tid=85724";
+      description = "A program launcher for Kodi";
+      longDescription = ''
+        Advanced Launcher allows you to start any Linux, Windows and
+        macOS external applications (with command line support or not)
+        directly from the Kodi GUI. Advanced Launcher also give you
+        the possibility to edit, download (from Internet resources)
+        and manage all the meta-data (informations and images) related
+        to these applications.
+      '';
+      platforms = platforms.all;
+      maintainers = with maintainers; [ edwtjo ];
+    };
+
+  };
+
+  advanced-emulator-launcher = mkKodiPlugin rec {
+
+    plugin = "advanced-emulator-launcher";
+    namespace = "plugin.program.advanced.emulator.launcher";
+    version = "0.9.6";
+
+    src = fetchFromGitHub {
+      owner = "Wintermute0110";
+      repo = namespace;
+      rev = version;
+      sha256 = "1sv9z77jj6bam6llcnd9b3dgkbvhwad2m1v541rv3acrackms2z2";
+    };
+
+    meta = {
+      homepage = "https://forum.kodi.tv/showthread.php?tid=287826";
+      description = "A program launcher for Kodi";
+      longDescription = ''
+        Advanced Emulator Launcher is a multi-emulator front-end for Kodi
+        scalable to collections of thousands of ROMs. Includes offline scrapers
+        for MAME and No-Intro ROM sets and also supports scrapping ROM metadata
+        and artwork online. ROM auditing for No-Intro ROMs using No-Intro XML
+        DATs. Launching of games and standalone applications is also available.
+      '';
+      platforms = platforms.all;
+      maintainers = with maintainers; [ edwtjo ];
+    };
+
+  };
+
+  controllers = let
+    pname = "game-controller";
+    version = "1.0.3";
+
+    src = fetchFromGitHub {
+      owner = "kodi-game";
+      repo = "kodi-game-controllers";
+      rev = "01acb5b6e8b85392b3cb298b034aadb1b24ccf18";
+      sha256 = "0sbc0w0fwbp7rbmbgb6a1kglhnn5g85hijcbbvf5x6jdq9v3f1qb";
+    };
+
+    meta = {
+      description = "Add support for different gaming controllers.";
+      platforms = platforms.all;
+      maintainers = with maintainers; [ edwtjo ];
+    };
+
+    mkController = controller: {
+        ${controller} = mkKodiPlugin rec {
+          plugin = pname + "-" + controller;
+          namespace = "game.controller." + controller;
+          sourceDir = "addons/" + namespace;
+          inherit version src meta;
+        };
+      };
+    in (mkController "default")
+    // (mkController "dreamcast")
+    // (mkController "gba")
+    // (mkController "genesis")
+    // (mkController "mouse")
+    // (mkController "n64")
+    // (mkController "nes")
+    // (mkController "ps")
+    // (mkController "snes");
+
+  hyper-launcher = let
+    pname = "hyper-launcher";
+    version = "1.5.2";
+    src = fetchFromGitHub rec {
+      name = pname + "-" + version + ".tar.gz";
+      owner = "teeedubb";
+      repo = owner + "-xbmc-repo";
+      rev = "f958ba93fe85b9c9025b1745d89c2db2e7dd9bf6";
+      sha256 = "1dvff24fbas25k5kvca4ssks9l1g5rfa3hl8lqxczkaqi3pp41j5";
+    };
+    meta = {
+      homepage = "https://forum.kodi.tv/showthread.php?tid=258159";
+      description = "A ROM launcher for Kodi that uses HyperSpin assets.";
+      maintainers = with maintainers; [ edwtjo ];
+    };
+  in {
+    service = mkKodiPlugin {
+      plugin = pname + "-service";
+      version = "1.2.1";
+      namespace = "service.hyper.launcher";
+      inherit src meta;
+    };
+    plugin = mkKodiPlugin {
+      plugin = pname;
+      namespace = "plugin.hyper.launcher";
+      inherit version src meta;
+    };
+  };
+
+  joystick = mkKodiABIPlugin rec {
+    namespace = "peripheral.joystick";
+    version = "1.4.7";
+    plugin = namespace;
+
+    src = fetchFromGitHub {
+      owner = "xbmc";
+      repo = namespace;
+      rev = "v${version}";
+      sha256 = "03gsp4kg41s3n4ib4wsv7m3krfipgwc2z07i4mnd5zvg0c4xrmap";
+    };
+
+    meta = {
+      description = "Binary addon for raw joystick input.";
+      platforms = platforms.all;
+      maintainers = with maintainers; [ edwtjo ];
+    };
+
+    extraBuildInputs = [ udev ];
+  };
+
+  simpleplugin = mkKodiPlugin rec {
+    plugin = "simpleplugin";
+    namespace = "script.module.simpleplugin";
+    version = "2.3.2";
+
+    src = fetchFromGitHub {
+      owner = "romanvm";
+      repo = namespace;
+      rev = "v.${version}";
+      sha256 = "0myar8dqjigb75pcc8zx3i5z79p1ifgphgb82s5syqywk0zaxm3j";
+    };
+
+    meta = {
+      homepage = src.meta.homepage;
+      description = "Simpleplugin API";
+      license = licenses.gpl3;
+    };
+  };
+
+  svtplay = mkKodiPlugin rec {
+
+    plugin = "svtplay";
+    namespace = "plugin.video.svtplay";
+    version = "4.0.48";
+
+    src = fetchFromGitHub {
+      name = plugin + "-" + version + ".tar.gz";
+      owner = "nilzen";
+      repo = "xbmc-" + plugin;
+      rev = "dc18ad002cd69257611d0032fba91f57bb199165";
+      sha256 = "0klk1jpjc243ak306k94mag4b4s17w68v69yb8lzzydszqkaqa7x";
+    };
+
+    meta = {
+      homepage = "https://forum.kodi.tv/showthread.php?tid=67110";
+      description = "Watch content from SVT Play";
+      longDescription = ''
+        With this addon you can stream content from SVT Play
+        (svtplay.se). The plugin fetches the video URL from the SVT
+        Play website and feeds it to the Kodi video player. HLS (m3u8)
+        is the preferred video format by the plugin.
+      '';
+      platforms = platforms.all;
+      maintainers = with maintainers; [ edwtjo ];
+    };
+
+  };
+
+  steam-controller = mkKodiABIPlugin rec {
+    namespace = "peripheral.steamcontroller";
+    version = "0.10.0";
+    plugin = namespace;
+
+    src = fetchFromGitHub {
+      owner = "kodi-game";
+      repo = namespace;
+      rev = "ea345392ab5aa4485f3a48d2037fa8a8e8ab82de";
+      sha256 = "1hbd8fdvn7xkr9csz1g9wah78nhnq1rkazl4zwa31y70830k3279";
+    };
+
+    extraBuildInputs = [ libusb1 ];
+
+    meta = {
+      description = "Binary addon for steam controller.";
+      platforms = platforms.all;
+      maintainers = with maintainers; [ edwtjo ];
+    };
+
+  };
+
+  steam-launcher = mkKodiPlugin {
+
+    plugin = "steam-launcher";
+    namespace = "script.steam.launcher";
+    version = "3.1.4";
+
+    src = fetchFromGitHub rec {
+      owner = "teeedubb";
+      repo = owner + "-xbmc-repo";
+      rev = "db67704c3e16bdcdd3bdfe2926c609f1f6bdc4fb";
+      sha256 = "001a7zs3a4jfzj8ylxv2klc33mipmqsd5aqax7q81fbgwdlndvbm";
+    };
+
+    propagatedBuildInputs = [ steam ];
+
+    meta = {
+      homepage = "https://forum.kodi.tv/showthread.php?tid=157499";
+      description = "Launch Steam in Big Picture Mode from Kodi";
+      longDescription = ''
+        This add-on will close/minimise Kodi, launch Steam in Big
+        Picture Mode and when Steam BPM is exited (either by quitting
+        Steam or returning to the desktop) Kodi will
+        restart/maximise. Running pre/post Steam scripts can be
+        configured via the addon.
+      '';
+      maintainers = with maintainers; [ edwtjo ];
+    };
+  };
+
+  pdfreader = mkKodiPlugin rec {
+    plugin = "pdfreader";
+    namespace = "plugin.image.pdf";
+    version = "1.0.2";
+
+    src = fetchFromGitHub rec {
+      name = plugin + "-" + version + ".tar.gz";
+      owner = "teeedubb";
+      repo = owner + "-xbmc-repo";
+      rev = "0a405b95208ced8a1365ad3193eade8d1c2117ce";
+      sha256 = "1iv7d030z3xvlflvp4p5v3riqnwg9g0yvzxszy63v1a6x5kpjkqa";
+    };
+
+    meta = {
+      homepage = "https://forum.kodi.tv/showthread.php?tid=187421";
+      description = "A comic book reader";
+      maintainers = with maintainers; [ edwtjo ];
+    };
+  };
+
+  pvr-hts = mkKodiABIPlugin rec {
+
+    plugin = "pvr-hts";
+    namespace = "pvr.hts";
+    version = "4.4.14";
+
+    src = fetchFromGitHub {
+      owner = "kodi-pvr";
+      repo = "pvr.hts";
+      rev = "${version}-${rel}";
+      sha256 = "1bcwcwd2yjhw85yk6lyhf0iqiclrsz7r7vpbxgc650fwqbb146gr";
+    };
+
+    meta = {
+      homepage = "https://github.com/kodi-pvr/pvr.hts";
+      description = "Kodi's Tvheadend HTSP client addon";
+      platforms = platforms.all;
+      maintainers = with maintainers; [ cpages ];
+    };
+
+  };
+
+  pvr-hdhomerun = mkKodiABIPlugin rec {
+
+    plugin = "pvr-hdhomerun";
+    namespace = "pvr.hdhomerun";
+    version = "3.5.0";
+
+    src = fetchFromGitHub {
+      owner = "kodi-pvr";
+      repo = "pvr.hdhomerun";
+      rev = "${version}-${rel}";
+      sha256 = "1zrkvfn0im2qmvqm93pa3cg8xkxv61sxlj8nsz4r5z9v9nhqadf6";
+    };
+
+    meta = {
+      homepage = "https://github.com/kodi-pvr/pvr.hdhomerun";
+      description = "Kodi's HDHomeRun PVR client addon";
+      platforms = platforms.all;
+      maintainers = with maintainers; [ titanous ];
+    };
+
+    extraBuildInputs = [ jsoncpp libhdhomerun ];
+
+  };
+
+  pvr-iptvsimple = mkKodiABIPlugin rec {
+
+    plugin = "pvr-iptvsimple";
+    namespace = "pvr.iptvsimple";
+    version = "3.5.7";
+
+    src = fetchFromGitHub {
+      owner = "kodi-pvr";
+      repo = "pvr.iptvsimple";
+      rev = "${version}-${rel}";
+      sha256 = "17znib7c491h2ii4gagxradh0jyvgga0d548gbk4yjj2nc9qqc6d";
+    };
+
+    meta = {
+      homepage = "https://github.com/kodi-pvr/pvr.iptvsimple";
+      description = "Kodi's IPTV Simple client addon";
+      platforms = platforms.all;
+      maintainers = with maintainers; [ ];
+      license = licenses.gpl2Plus;
+    };
+
+    extraBuildInputs = [ zlib rapidxml ];
+  };
+
+  osmc-skin = mkKodiPlugin rec {
+
+    plugin = "osmc-skin";
+    namespace = "skin.osmc";
+    version = "18.0.0";
+
+    src = fetchFromGitHub {
+      owner = "osmc";
+      repo = namespace;
+      rev = "40a6c318641e2cbeac58fb0e7dde9c2beac737a0";
+      sha256 = "1l7hyfj5zvjxjdm94y325bmy1naak455b9l8952sb0gllzrcwj6s";
+    };
+
+    meta = {
+      homepage = "https://github.com/osmc/skin.osmc";
+      description = "The default skin for OSMC";
+      platforms = platforms.all;
+      maintainers = with maintainers; [ worldofpeace ];
+      license = licenses.cc-by-nc-sa-30;
+    };
+  };
+
+  yatp = python2Packages.toPythonModule (mkKodiPlugin rec {
+    plugin = "yatp";
+    namespace = "plugin.video.yatp";
+    version = "3.3.2";
+
+    src = fetchFromGitHub {
+      owner = "romanvm";
+      repo = "kodi.yatp";
+      rev = "v.${version}";
+      sha256 = "12g1f57sx7dy6wy7ljl7siz2qs1kxcmijcg7xx2xpvmq61x9qa2d";
+    };
+
+    patches = [ ./yatp/dont-monkey.patch ];
+
+    propagatedBuildInputs = [
+      simpleplugin
+      python2Packages.requests
+      python2Packages.libtorrentRasterbar
+    ];
+
+    meta = {
+      homepage = src.meta.homepage;
+      description = "Yet Another Torrent Player: libtorrent-based torrent streaming for Kodi";
+      license = licenses.gpl3;
+    };
+  });
+
+  inputstream-adaptive = mkKodiABIPlugin rec {
+
+    plugin = "inputstream-adaptive";
+    namespace = "inputstream.adaptive";
+    version = "2.3.12";
+
+    src = fetchFromGitHub {
+      owner = "peak3d";
+      repo = "inputstream.adaptive";
+      rev = version;
+      sha256 = "09d9b35mpaf3g5m51viyan9hv7d2i8ndvb9wm0j7rs5gwsf0k71z";
+    };
+
+    extraBuildInputs = [ expat ];
+
+    extraRuntimeDependencies = [ glib nspr nss stdenv.cc.cc.lib ];
+
+    extraInstallPhase = let n = namespace; in ''
+      ln -s $out/lib/addons/${n}/libssd_wv.so $out/${pluginDir}/${n}/libssd_wv.so
+    '';
+
+    meta = {
+      homepage = "https://github.com/peak3d/inputstream.adaptive";
+      description = "Kodi inputstream addon for several manifest types";
+      platforms = platforms.all;
+      maintainers = with maintainers; [ sephalon ];
+    };
+  };
+
+  vfs-sftp = mkKodiABIPlugin rec {
+    namespace = "vfs.sftp";
+    version = "1.0.6";
+    plugin = namespace;
+
+    src = fetchFromGitHub {
+      owner = "xbmc";
+      repo = namespace;
+      rev = "${version}-${rel}";
+      sha256 = "044kkzcpzvbyih4vys33r4hqw38xa82snmvl4qj1r80wnszc8af1";
+    };
+
+    meta = with stdenv.lib; {
+      description = "SFTP Virtual Filesystem add-on for Kodi";
+      license = licenses.gpl2Plus;
+      platforms = platforms.all;
+      maintainers = with maintainers; [ minijackson ];
+    };
+
+    extraBuildInputs = [ openssl libssh zlib ];
+  };
+
+  vfs-libarchive = mkKodiABIPlugin rec {
+    namespace = "vfs.libarchive";
+    version = "1.0.7";
+    plugin = namespace;
+
+    src = fetchFromGitHub {
+      owner = "xbmc";
+      repo = namespace;
+      rev = "${version}-${rel}";
+      sha256 = "01qhv095h5j67ispm4iw18pd3kl7a0mnjkgm92al9qqiyif8lzgh";
+    };
+
+    meta = with stdenv.lib; {
+      description = "LibArchive Virtual Filesystem add-on for Kodi";
+      license = licenses.gpl2Plus;
+      platforms = platforms.all;
+      maintainers = with maintainers; [ minijackson ];
+    };
+
+    extraBuildInputs = [ libarchive lzma bzip2 zlib lz4 lzo openssl ];
+  };
+}; in self
diff --git a/nixpkgs/pkgs/applications/video/kodi/wrapper.nix b/nixpkgs/pkgs/applications/video/kodi/wrapper.nix
new file mode 100644
index 000000000000..6a0b1cbdf739
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/kodi/wrapper.nix
@@ -0,0 +1,30 @@
+{ stdenv, lib, makeWrapper, buildEnv, kodi, plugins }:
+
+let
+  drvName = builtins.parseDrvName kodi.name;
+in buildEnv {
+  name = "${drvName.name}-with-plugins-${drvName.version}";
+
+  paths = [ kodi ] ++ plugins;
+  pathsToLink = [ "/share" ];
+
+  buildInputs = [ makeWrapper ];
+
+  postBuild = ''
+    mkdir $out/bin
+    for exe in kodi{,-standalone}
+    do
+      makeWrapper ${kodi}/bin/$exe $out/bin/$exe \
+        --prefix PYTHONPATH : ${kodi.pythonPackages.makePythonPath plugins} \
+        --prefix KODI_HOME : $out/share/kodi \
+        --prefix LD_LIBRARY_PATH ":" "${lib.makeLibraryPath
+          (stdenv.lib.concatMap
+            (plugin: plugin.extraRuntimeDependencies) plugins)}"
+    done
+  '';
+
+  meta = kodi.meta // {
+    description = kodi.meta.description
+                + " (with plugins: ${lib.concatMapStringsSep ", " (x: x.name) plugins})";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/kodi/yatp/dont-monkey.patch b/nixpkgs/pkgs/applications/video/kodi/yatp/dont-monkey.patch
new file mode 100644
index 000000000000..62d5d0c0d4c0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/kodi/yatp/dont-monkey.patch
@@ -0,0 +1,29 @@
+diff --git a/plugin.video.yatp/server.py b/plugin.video.yatp/server.py
+index 1adcbb5..488b72c 100644
+--- a/plugin.video.yatp/server.py
++++ b/plugin.video.yatp/server.py
+@@ -20,24 +20,8 @@ addon = Addon()
+ _ = addon.initialize_gettext()
+ addon.log_notice('Starting Torrent Server...')
+ 
+-# A monkey-patch to set the necessary librorrent version
+-librorrent_addon = Addon('script.module.libtorrent')
+-orig_custom_version = librorrent_addon.get_setting('custom_version', False)
+-orig_set_version = librorrent_addon.get_setting('set_version', False)
+-librorrent_addon.set_setting('custom_version', 'true')
+-if addon.libtorrent_version == '1.0.9':
+-    librorrent_addon.set_setting('set_version', '4')
+-elif addon.libtorrent_version == '1.1.0':
+-    librorrent_addon.set_setting('set_version', '5')
+-elif addon.libtorrent_version == '1.1.1':
+-    librorrent_addon.set_setting('set_version', '6')
+-else:
+-    librorrent_addon.set_setting('set_version', '0')
+-
+ from libs.server import wsgi_app
+ 
+-librorrent_addon.set_setting('custom_version', orig_custom_version)
+-librorrent_addon.set_setting('set_version', orig_set_version)
+ # ======
+ 
+ if addon.enable_limits:
diff --git a/nixpkgs/pkgs/applications/video/lightworks/default.nix b/nixpkgs/pkgs/applications/video/lightworks/default.nix
new file mode 100644
index 000000000000..ae156574f5da
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/lightworks/default.nix
@@ -0,0 +1,87 @@
+{ stdenv, fetchurl, dpkg, makeWrapper, buildFHSUserEnv
+, gtk3, gdk-pixbuf, cairo, libjpeg_original, glib, gnome2, libGLU
+, nvidia_cg_toolkit, zlib, openssl, portaudio
+}:
+let
+  fullPath = stdenv.lib.makeLibraryPath [
+    stdenv.cc.cc
+    gtk3
+    gdk-pixbuf
+    cairo
+    libjpeg_original
+    glib
+    gnome2.pango
+    libGLU
+    nvidia_cg_toolkit
+    zlib
+    openssl
+    portaudio
+  ];
+
+  lightworks = stdenv.mkDerivation rec {
+    version = "14.0.0";
+    pname = "lightworks";
+
+    src =
+      if stdenv.hostPlatform.system == "x86_64-linux" then
+        fetchurl {
+          url = "http://downloads.lwks.com/v14/lwks-14.0.0-amd64.deb";
+          sha256 = "66eb9f9678d979db76199f1c99a71df0ddc017bb47dfda976b508849ab305033";
+        }
+      else throw "${pname}-${version} is not supported on ${stdenv.hostPlatform.system}";
+
+    buildInputs = [ dpkg makeWrapper ];
+
+    phases = [ "unpackPhase" "installPhase" ];
+    unpackPhase = "dpkg-deb -x ${src} ./";
+
+    installPhase = ''
+      mkdir -p $out/bin
+      substitute usr/bin/lightworks $out/bin/lightworks \
+        --replace "/usr/lib/lightworks" "$out/lib/lightworks"
+      chmod +x $out/bin/lightworks
+
+      cp -r usr/lib $out
+
+      # /usr/share/fonts is not normally searched
+      # This adds it to lightworks' search path while keeping the default
+      # using the FONTCONFIG_FILE env variable
+      echo "<?xml version='1.0'?>
+      <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+      <fontconfig>
+          <dir>/usr/share/fonts/truetype</dir>
+          <include>/etc/fonts/fonts.conf</include>
+      </fontconfig>" > $out/lib/lightworks/fonts.conf
+
+      patchelf \
+        --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        $out/lib/lightworks/ntcardvt
+
+      wrapProgram $out/lib/lightworks/ntcardvt \
+        --prefix LD_LIBRARY_PATH : ${fullPath}:$out/lib/lightworks \
+        --set FONTCONFIG_FILE $out/lib/lightworks/fonts.conf
+
+      cp -r usr/share $out/share
+    '';
+
+    dontPatchELF = true;
+  };
+
+# Lightworks expects some files in /usr/share/lightworks
+in buildFHSUserEnv {
+  name = lightworks.name;
+
+  targetPkgs = pkgs: [
+      lightworks
+  ];
+
+  runScript = "lightworks";
+
+  meta = {
+    description = "Professional Non-Linear Video Editor";
+    homepage = "https://www.lwks.com/";
+    license = stdenv.lib.licenses.unfree;
+    maintainers = [ stdenv.lib.maintainers.antonxy ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/linuxstopmotion/default.nix b/nixpkgs/pkgs/applications/video/linuxstopmotion/default.nix
new file mode 100644
index 000000000000..3a2d1b79e9e0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/linuxstopmotion/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchgit, pkgconfig, qt4, SDL, SDL_image, libvorbis, libtar, libxml2
+, gamin, qmake4Hook
+}:
+
+stdenv.mkDerivation rec {
+  version = "0.8";
+  pname = "linuxstopmotion";
+  
+  src = fetchgit {
+    url = "git://git.code.sf.net/p/linuxstopmotion/code";
+    rev = "refs/tags/${version}";
+    sha256 = "19v9d0v3laiwi0f1n92lvj2s5s1mxsrfygna0xyw9pkcnk3b26q6";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ qt4 SDL SDL_image libvorbis libtar libxml2 gamin qmake4Hook ];
+
+  patches = [ ./linuxstopmotion-fix-wrong-isProcess-logic.patch ];
+
+  # Installation breaks without this
+  preInstall = ''
+    mkdir -p "$out/share/stopmotion/translations/"
+    cp -v build/*.qm "$out/share/stopmotion/translations/"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Create stop-motion animation movies";
+    homepage = "http://linuxstopmotion.org/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/linuxstopmotion/linuxstopmotion-fix-wrong-isProcess-logic.patch b/nixpkgs/pkgs/applications/video/linuxstopmotion/linuxstopmotion-fix-wrong-isProcess-logic.patch
new file mode 100644
index 000000000000..caab48d0e2d9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/linuxstopmotion/linuxstopmotion-fix-wrong-isProcess-logic.patch
@@ -0,0 +1,33 @@
+From b23b7dab1d540b0710fcb9ded1c6256a49844906 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= <bjorn.forsman@gmail.com>
+Date: Wed, 20 Aug 2014 22:22:00 +0200
+Subject: [PATCH] Fix wrong "isProcess" logic
+
+Stopmotion wrongly thinks that uvccapture should be run as a daemon,
+even though configuration for uvccapture has no "daemon-like" command
+line to be run (according to "preferences"). The result is an error
+popup instead of video/image grabbing.
+
+This brings back the "isProcess" logic that was in stopmotion v0.7.2,
+because it seems to work, while the current logic (v0.8.0) seems to
+fail.
+---
+ src/presentation/frontends/qtfrontend/frameview.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/presentation/frontends/qtfrontend/frameview.cpp b/src/presentation/frontends/qtfrontend/frameview.cpp
+index e44dca7..d2c41fd 100644
+--- a/src/presentation/frontends/qtfrontend/frameview.cpp
++++ b/src/presentation/frontends/qtfrontend/frameview.cpp
+@@ -270,7 +270,7 @@ bool FrameView::on() {
+ 	Preference device(QString("device%1")
+ 			.arg(activeDev).toLatin1().constData(), "");
+ 	QString pre = QString(prepoll.get()).replace("$VIDEODEVICE", device.get());
+-	bool isProcess = startDaemon.get();
++	bool isProcess = (strcmp(startDaemon.get(), "") == 0) ? false : true;
+ 
+ 	bool isCameraReady = true;
+ 	this->grabber = new CommandLineGrabber(capturedFile.path(), isProcess);
+-- 
+2.0.2
+
diff --git a/nixpkgs/pkgs/applications/video/lxdvdrip/default.nix b/nixpkgs/pkgs/applications/video/lxdvdrip/default.nix
new file mode 100644
index 000000000000..16ade40f0b5a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/lxdvdrip/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, libdvdread }:
+
+stdenv.mkDerivation rec {
+  name = "lxdvdrip-1.76";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/lxdvdrip/${name}.tgz";
+    sha256 = "0vgslc7dapfrbgslnaicc8bggdccyrvcgjv1dwi19qswhh7jkzj6";
+  };
+
+  prePatch = ''
+    sed -i -e s,/usr/local,$out, -e s,/etc,$out/etc,g Makefile
+    sed -i -e s,/usr/local,$out, buffer/Makefile
+    makeFlags="$makeFlags PREFIX=$out"
+  '';
+
+  preInstall = ''
+    mkdir -p $out/man/man1 $out/bin $out/share $out/etc
+  '';
+
+  buildInputs = [ libdvdread ];
+
+  meta = { 
+    description = "Command line tool to make a copy from a video DVD for private use";
+    homepage = "https://sourceforge.net/projects/lxdvdrip";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/makemkv/default.nix b/nixpkgs/pkgs/applications/video/makemkv/default.nix
new file mode 100644
index 000000000000..56247b278260
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/makemkv/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, mkDerivation, fetchurl, autoPatchelfHook
+, ffmpeg_3, openssl, qtbase, zlib, pkgconfig
+}:
+
+let
+  version = "1.15.1";
+  # Using two URLs as the first one will break as soon as a new version is released
+  src_bin = fetchurl {
+    urls = [
+      "http://www.makemkv.com/download/makemkv-bin-${version}.tar.gz"
+      "http://www.makemkv.com/download/old/makemkv-bin-${version}.tar.gz"
+    ];
+    sha256 = "0c9661sdlld8b1g2pk8lbn3gz7cikh9bjqss11ffkriwii1x9fw0";
+  };
+  src_oss = fetchurl {
+    urls = [
+      "http://www.makemkv.com/download/makemkv-oss-${version}.tar.gz"
+      "http://www.makemkv.com/download/old/makemkv-oss-${version}.tar.gz"
+    ];
+    sha256 = "0rm1zykqagy2g8hb7pjrc6akdsym8pgdnx66hnna161jbah3sssy";
+  };
+in mkDerivation {
+  pname = "makemkv";
+  inherit version;
+
+  srcs = [ src_bin src_oss ];
+
+  sourceRoot = "makemkv-oss-${version}";
+
+  nativeBuildInputs = [ autoPatchelfHook pkgconfig ];
+
+  buildInputs = [ ffmpeg_3 openssl qtbase zlib ];
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm555 -t $out/bin           out/makemkv ../makemkv-bin-${version}/bin/amd64/makemkvcon
+    install -D     -t $out/lib           out/lib{driveio,makemkv,mmbd}.so.*
+    install -D     -t $out/share/MakeMKV ../makemkv-bin-${version}/src/share/*
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Convert blu-ray and dvd to mkv";
+    longDescription = ''
+      makemkv is a one-click QT application that transcodes an encrypted
+      blu-ray or DVD disc into a more portable set of mkv files, preserving
+      subtitles, chapter marks, all video and audio tracks.
+
+      Program is time-limited -- it will stop functioning after 60 days. You
+      can always download the latest version from makemkv.com that will reset the
+      expiration date.
+    '';
+    license = licenses.unfree;
+    homepage = "http://makemkv.com";
+    platforms = [ "x86_64-linux" ];
+    maintainers = [ maintainers.titanous ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/manim/default.nix b/nixpkgs/pkgs/applications/video/manim/default.nix
new file mode 100644
index 000000000000..667b2bb2b885
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/manim/default.nix
@@ -0,0 +1,64 @@
+{ lib, buildPythonApplication, fetchFromGitHub, pythonOlder, file, fetchpatch
+, cairo, ffmpeg_3, sox, xdg_utils, texlive
+, colour, numpy, pillow, progressbar, scipy, tqdm, opencv , pycairo, pydub
+, pbr, fetchPypi
+}:
+buildPythonApplication rec {
+  pname = "manim";
+  version = "0.1.10";
+
+  src = fetchPypi {
+    pname = "manimlib";
+    inherit version;
+    sha256 = "0vg9b3rwypq5zir74pi0pmj47yqlcg7hrvscwrpjzjbqq2yihn49";
+  };
+
+  patches = [ ./remove-dependency-constraints.patch ];
+
+  nativeBuildInputs = [ pbr ];
+
+  propagatedBuildInputs = [
+    colour
+    numpy
+    pillow
+    progressbar
+    scipy
+    tqdm
+    opencv
+    pycairo
+    pydub
+
+    cairo sox ffmpeg_3 xdg_utils
+  ];
+
+  # Test with texlive to see whether it works but don't propagate
+  # because it's huge and optional
+  # TODO: Use smaller TexLive distribution
+  #       Doesn't need everything but it's hard to figure out what it needs
+  checkInputs = [ cairo sox ffmpeg_3 xdg_utils texlive.combined.scheme-full ];
+
+  # Simple test and complex test with LaTeX
+  checkPhase = ''
+    for scene in SquareToCircle OpeningManimExample
+    do
+      python3 manim.py example_scenes.py $scene -l
+      tail -n 20 files/Tex/*.log  # Print potential LaTeX erorrs
+      ${file}/bin/file videos/example_scenes/480p15/$scene.mp4 \
+        | tee | grep -F "ISO Media, MP4 Base Media v1 [IS0 14496-12:2003]"
+    done
+  '';
+
+  disabled = pythonOlder "3.7";
+
+  meta = {
+    description = "Animation engine for explanatory math videos";
+    longDescription = ''
+      Manim is an animation engine for explanatory math videos. It's used to
+      create precise animations programmatically, as seen in the videos of
+      3Blue1Brown on YouTube.
+    '';
+    homepage = "https://github.com/3b1b/manim";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ johnazoidberg ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/manim/remove-dependency-constraints.patch b/nixpkgs/pkgs/applications/video/manim/remove-dependency-constraints.patch
new file mode 100644
index 000000000000..4a7da45d0f57
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/manim/remove-dependency-constraints.patch
@@ -0,0 +1,26 @@
+diff --git i/requirements.txt w/requirements.txt
+index 556122ad..11fd49d5 100644
+--- i/requirements.txt
++++ w/requirements.txt
+@@ -1,11 +1,10 @@
+-argparse==1.4.0
+-colour==0.1.5
+-numpy==1.15.0
+-Pillow==5.2.0
+-progressbar==2.5
+-scipy==1.1.0
+-tqdm==4.24.0
+-opencv-python==3.4.2.17
+-pycairo==1.17.1; sys_platform == 'linux'
+-pycairo>=1.18.0; sys_platform == 'win32'
+-pydub==0.23.0
++colour
++numpy
++Pillow
++progressbar
++scipy
++tqdm
++pycairo
++pycairo>=1.18.1; sys_platform == 'win32'
++pydub
++pyreadline==2.1; sys_platform == 'win32'
diff --git a/nixpkgs/pkgs/applications/video/mapmap/default.nix b/nixpkgs/pkgs/applications/video/mapmap/default.nix
new file mode 100644
index 000000000000..20ab4d750326
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/mapmap/default.nix
@@ -0,0 +1,64 @@
+{ stdenv 
+, fetchFromGitHub
+, qttools
+, qtmultimedia
+, liblo
+, gst_all_1
+, qmake
+, pkgconfig
+}:
+
+with stdenv;
+
+mkDerivation rec {
+
+  version = "0.6.1";
+  pname = "mapmap";
+
+  src = fetchFromGitHub {
+    owner = "mapmapteam";
+    repo = "mapmap";
+    rev = version;
+    sha256 = "15km6xmfkxhrflq4sl9m9r85zi4shrr4k5h15x17v7x0qkc3xgsh";
+  };
+
+  nativeBuildInputs = [
+    qmake
+    pkgconfig
+  ];
+
+  buildInputs = [
+    qttools
+    qtmultimedia
+    liblo
+    gst_all_1.gstreamer
+    gst_all_1.gstreamermm
+    gst_all_1.gst-libav
+    gst_all_1.gst-vaapi
+  ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp mapmap $out/bin/mapmap
+    mkdir -p $out/share/applications/
+    sed 's|Icon=/usr/share/icons/hicolor/scalable/apps/mapmap.svg|Icon=mapmap|g' resources/texts/mapmap.desktop > $out/share/applications/mapmap.desktop
+    mkdir -p $out/share/icons/hicolor/scalable/apps/
+    cp resources/images/logo/mapmap.* $out/share/icons/hicolor/scalable/apps/
+  '';
+
+  # RPATH in /tmp hack
+  # preFixup = ''
+  #   rm -r $NIX_BUILD_TOP/__nix_qt5__
+  # '';
+
+  meta = with stdenv.lib; {
+    description = "Open source video mapping software";
+    homepage = "https://github.com/mapmapteam/mapmap";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.erictapen ];
+    platforms = platforms.linux;
+    # binary segfaults at the moment
+    broken = true;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/video/mediathekview/default.nix b/nixpkgs/pkgs/applications/video/mediathekview/default.nix
new file mode 100644
index 000000000000..7c7ceb914ae7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/mediathekview/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, makeWrapper, jre }:
+
+stdenv.mkDerivation rec {
+  version = "13.5.1";
+  pname = "mediathekview";
+  src = fetchurl {
+    url = "https://download.mediathekview.de/stabil/MediathekView-${version}-linux.tar.gz";
+    sha256 = "0fixr6drim0wmh4q44zikcla4mrnm44nm95d5naqsgx6idalddrc";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/{bin,lib}
+
+    install -m644 MediathekView.jar $out/lib
+
+    makeWrapper ${jre}/bin/java $out/bin/mediathek \
+      --add-flags "-Xmx1G -jar $out/lib/MediathekView.jar"
+
+    makeWrapper ${jre}/bin/java $out/bin/MediathekView \
+      --add-flags "-Xmx1G -jar $out/lib/MediathekView.jar"
+
+    makeWrapper ${jre}/bin/java $out/bin/MediathekView_ipv4 \
+      --add-flags "-Xmx1G -Djava.net.preferIPv4Stack=true -jar $out/lib/MediathekView.jar"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Offers access to the Mediathek of different tv stations (ARD, ZDF, Arte, etc.)";
+    homepage = "https://mediathekview.de/";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ moredread ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/minitube/default.nix b/nixpkgs/pkgs/applications/video/minitube/default.nix
new file mode 100644
index 000000000000..690b8355340c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/minitube/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, wrapQtAppsHook, phonon, phonon-backend-vlc, qtbase, qmake
+, qtdeclarative, qttools, qtx11extras, mpv
+
+# "Free" key generated by nckx <github@tobias.gr>. I no longer have a Google
+# account. You'll need to generate (and please share :-) a new one if it breaks.
+, withAPIKey ? "AIzaSyBtFgbln3bu1swQC-naMxMtKh384D3xJZE" }:
+
+stdenv.mkDerivation rec {
+  pname = "minitube";
+  version = "3.2";
+
+  src = fetchFromGitHub {
+    sha256 = "0175sgqmszakqd631bni4aqjpx68h6n49zjvg23fb1yyancnkn4c";
+    rev = version;
+    repo = "minitube";
+    owner = "flaviotordini";
+    fetchSubmodules = true;
+  };
+
+  buildInputs = [ phonon phonon-backend-vlc qtbase qtdeclarative qttools qtx11extras mpv ];
+  nativeBuildInputs = [ wrapQtAppsHook qmake ];
+
+  qmakeFlags = [ "DEFINES+=APP_GOOGLE_API_KEY=${withAPIKey}" ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Stand-alone YouTube video player";
+    longDescription = ''
+      Watch YouTube videos in a new way: you type a keyword, Minitube gives
+      you an endless video stream. Minitube is not about cloning the YouTube
+      website, it aims to create a new TV-like experience.
+    '';
+    homepage = "https://flavio.tordini.org/minitube";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/mjpg-streamer/default.nix b/nixpkgs/pkgs/applications/video/mjpg-streamer/default.nix
new file mode 100644
index 000000000000..d1efae4a9244
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/mjpg-streamer/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, cmake, libjpeg }:
+
+stdenv.mkDerivation {
+  pname = "mjpg-streamer";
+  version = "unstable-2019-05-24";
+
+  src = fetchFromGitHub {
+    owner = "jacksonliam";
+    repo = "mjpg-streamer";
+    rev = "501f6362c5afddcfb41055f97ae484252c85c912";
+    sha256 = "1cl159svfs1zzzrd3zgn4x7qy6751bvlnxfwf5hn5fmg4iszajw7";
+  };
+
+  prePatch = ''
+    cd mjpg-streamer-experimental
+  '';
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ libjpeg ];
+
+  postFixup = ''
+    patchelf --set-rpath "$(patchelf --print-rpath $out/bin/mjpg_streamer):$out/lib/mjpg-streamer" $out/bin/mjpg_streamer
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/jacksonliam/mjpg-streamer";
+    description = "MJPG-streamer takes JPGs from Linux-UVC compatible webcams, filesystem or other input plugins and streams them as M-JPEG via HTTP to webbrowsers, VLC and other software";
+    platforms = platforms.linux;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ gebner ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/mkclean/default.nix b/nixpkgs/pkgs/applications/video/mkclean/default.nix
new file mode 100644
index 000000000000..4a3cbc81b35e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/mkclean/default.nix
@@ -0,0 +1,37 @@
+{ dos2unix, fetchurl, stdenv }:
+
+stdenv.mkDerivation rec {
+  pname = "mkclean";
+  version = "0.8.10";
+
+  hardeningDisable = [ "format" ];
+  nativeBuildInputs = [ dos2unix ];
+
+  src = fetchurl {
+    url = "mirror://sourceforge/matroska/${pname}-${version}.tar.bz2";
+    sha256 = "0zbpi4sm68zb20d53kbss93fv4aafhcmz7dsd0zdf01vj1r3wxwn";
+  };
+
+  configurePhase = ''
+    dos2unix ./mkclean/configure.compiled
+    ./mkclean/configure.compiled
+  '';
+
+  buildPhase = ''
+    make -C mkclean
+  '';
+
+  installPhase = ''
+    mkdir -p $out/{bin,lib}
+    mv release/gcc_linux_*/*.* $out/lib
+    mv release/gcc_linux_*/* $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "mkclean is a command line tool to clean and optimize Matroska (.mkv / .mka / .mks / .mk3d) and WebM (.webm / .weba) files that have already been muxed.";
+    homepage = "https://www.matroska.org";
+    license = licenses.bsdOriginal;
+    maintainers = with maintainers; [ chrisaw ];
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/mkvtoolnix/default.nix b/nixpkgs/pkgs/applications/video/mkvtoolnix/default.nix
new file mode 100644
index 000000000000..68f3cac1bfac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/mkvtoolnix/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, fetchFromGitLab, pkgconfig, autoconf, automake, libiconv, drake
+, ruby, docbook_xsl, file, xdg_utils, gettext, expat, boost, libebml, zlib
+, fmt, libmatroska, libogg, libvorbis, flac, libxslt, cmark
+, withGUI ? true
+  , qtbase ? null
+  , qtmultimedia ? null
+  , wrapQtAppsHook ? null
+}:
+
+assert withGUI -> qtbase != null && qtmultimedia != null && wrapQtAppsHook != null;
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "mkvtoolnix";
+  version = "47.0.0";
+
+  src = fetchFromGitLab {
+    owner  = "mbunkus";
+    repo   = "mkvtoolnix";
+    rev    = "release-${version}";
+    sha256 = "1s8y9khyfjg06mr7rmm26pk0b3nbkcrs56r29a9l57wbkqyl7qp9";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig autoconf automake gettext
+    drake ruby docbook_xsl libxslt
+  ];
+
+  buildInputs = [
+    expat file xdg_utils boost libebml zlib fmt
+    libmatroska libogg libvorbis flac cmark
+  ] ++ optional  stdenv.isDarwin libiconv
+    ++ optionals withGUI [ qtbase qtmultimedia wrapQtAppsHook ];
+
+  preConfigure = "./autogen.sh; patchShebangs .";
+  buildPhase   = "drake -j $NIX_BUILD_CORES";
+  installPhase = "drake install -j $NIX_BUILD_CORES";
+
+  configureFlags = [
+    "--enable-magic"
+    "--enable-optimization"
+    "--with-boost-libdir=${boost.out}/lib"
+    "--disable-debug"
+    "--disable-profiling"
+    "--disable-precompiled-headers"
+    "--disable-static-qt"
+    "--with-gettext"
+    "--with-docbook-xsl-root=${docbook_xsl}/share/xml/docbook-xsl"
+    (enableFeature withGUI "qt")
+  ];
+
+  CXXFLAGS = optional stdenv.cc.isClang "-std=c++17";
+
+  dontWrapQtApps = true;
+  postFixup = optionalString withGUI ''
+    wrapQtApp $out/bin/mkvtoolnix-gui
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Cross-platform tools for Matroska";
+    homepage    = "http://www.bunkus.org/videotools/mkvtoolnix/";
+    license     = licenses.gpl2;
+    maintainers = with maintainers; [ codyopel rnhmjoj ];
+    platforms   = platforms.linux
+      ++ optionals (!withGUI) platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/mlv-app/aarch64-flags.patch b/nixpkgs/pkgs/applications/video/mlv-app/aarch64-flags.patch
new file mode 100644
index 000000000000..b8c025b3b3fc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/mlv-app/aarch64-flags.patch
@@ -0,0 +1,13 @@
+diff --git a/platform/qt/MLVApp.pro b/platform/qt/MLVApp.pro
+index ebdc552..3e37573 100644
+--- a/platform/qt/MLVApp.pro
++++ b/platform/qt/MLVApp.pro
+@@ -84,7 +84,7 @@ win32{
+
+ # Linux
+ linux-g++*{
+-    QMAKE_CFLAGS += -O3 -fopenmp -msse4.1 -mssse3 -msse3 -msse2 -msse -std=c99
++    QMAKE_CFLAGS += -O3 -fopenmp -march=native -std=c99
+     QMAKE_CXXFLAGS += -fopenmp
+     LIBS += -lgomp
+ }
diff --git a/nixpkgs/pkgs/applications/video/mlv-app/default.nix b/nixpkgs/pkgs/applications/video/mlv-app/default.nix
new file mode 100644
index 000000000000..757759b1146f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/mlv-app/default.nix
@@ -0,0 +1,62 @@
+{ fetchFromGitHub
+, lib
+, mkDerivation
+, qmake
+, qtbase
+, qtmultimedia
+, stdenv
+}:
+
+mkDerivation rec {
+  pname = "mlv-app";
+  version = "1.11";
+
+  src = fetchFromGitHub {
+    owner = "ilia3101";
+    repo = "MLV-App";
+    rev = "QTv${version}";
+    sha256 = "0s5sjdxi8a17ddvih4ara7mlb2xrc9xqx52jmhfaca6ng341gi4x";
+  };
+
+  patches = if stdenv.isAarch64 then ./aarch64-flags.patch else null;
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm555 -t $out/bin                mlvapp
+    install -Dm444 -t $out/share/applications mlvapp.desktop
+    install -Dm444 -t $out/share/icons/hicolor/512x512/apps RetinaIMG/MLVAPP.png
+    runHook postInstall
+  '';
+
+  qmakeFlags = [ "MLVApp.pro" ];
+
+  preConfigure = ''
+    export HOME=$TMPDIR
+    cd platform/qt/
+  '';
+
+  buildInputs = [
+    qtmultimedia
+    qtbase
+  ];
+
+  dontWrapQtApps = true;
+
+  preFixup = ''
+    wrapQtApp "$out/bin/mlvapp"
+  '';
+
+  nativeBuildInputs = [
+    qmake
+  ];
+
+  meta = with lib; {
+    description = "All in one MLV processing app that is pretty great";
+    homepage = "https://mlv.app";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [
+      kiwi
+    ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/motion/default.nix b/nixpkgs/pkgs/applications/video/motion/default.nix
new file mode 100644
index 000000000000..175958afb7e0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/motion/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig
+, ffmpeg_3, libjpeg, libmicrohttpd }:
+
+stdenv.mkDerivation rec {
+  pname = "motion";
+  version = "4.3.0";
+
+  src = fetchFromGitHub {
+    owner  = "Motion-Project";
+    repo   = "motion";
+    rev    = "Release-${version}";
+    sha256 = "08mm7ajgs0qnrydywxxyzcll09z80crjnjkjnckdi6ljsj6s96j8";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+
+  buildInputs = [ ffmpeg_3 libjpeg libmicrohttpd ];
+
+  meta = with stdenv.lib; {
+    description = "Monitors the video signal from cameras";
+    homepage = "https://motion-project.github.io/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ puffnfresh veprbl ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/mpc-qt/default.nix b/nixpkgs/pkgs/applications/video/mpc-qt/default.nix
new file mode 100644
index 000000000000..07b4c79a5b3d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/mpc-qt/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, mkDerivation, fetchFromGitLab, pkgconfig, qmake, qtx11extras, qttools, mpv }:
+
+mkDerivation rec {
+  pname = "mpc-qt";
+  version = "2019-06-09";
+
+  src = fetchFromGitLab {
+    owner = "mpc-qt";
+    repo = "mpc-qt";
+    rev = "2abe6e7fc643068d50522468fe75d614861555ad";
+    sha256 = "1cis8dl9pm91mpnp696zvwsfp96gkwr8jgs45anbwd7ldw78w4x5";
+  };
+
+  nativeBuildInputs = [ pkgconfig qmake qttools ];
+
+  buildInputs = [ mpv qtx11extras ];
+
+  qmakeFlags = [ "QMAKE_LUPDATE=${qttools.dev}/bin/lupdate" ];
+
+  meta = with stdenv.lib; {
+    description = "Media Player Classic Qute Theater";
+    homepage = "https://gitlab.com/mpc-qt/mpc-qt";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/mplayer/default.nix b/nixpkgs/pkgs/applications/video/mplayer/default.nix
new file mode 100644
index 000000000000..f00b5aabf977
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/mplayer/default.nix
@@ -0,0 +1,226 @@
+{ config, stdenv, fetchurl, pkgconfig, freetype, yasm, ffmpeg_3
+, aalibSupport ? true, aalib ? null
+, fontconfigSupport ? true, fontconfig ? null, freefont_ttf ? null
+, fribidiSupport ? true, fribidi ? null
+, x11Support ? true, libX11 ? null, libXext ? null, libGLU, libGL ? null
+, xineramaSupport ? true, libXinerama ? null
+, xvSupport ? true, libXv ? null
+, alsaSupport ? stdenv.isLinux, alsaLib ? null
+, screenSaverSupport ? true, libXScrnSaver ? null
+, vdpauSupport ? false, libvdpau ? null
+, cddaSupport ? !stdenv.isDarwin, cdparanoia ? null
+, dvdnavSupport ? !stdenv.isDarwin, libdvdnav ? null
+, dvdreadSupport ? true, libdvdread ? null
+, bluraySupport ? true, libbluray ? null
+, amrSupport ? false, amrnb ? null, amrwb ? null
+, cacaSupport ? true, libcaca ? null
+, lameSupport ? true, lame ? null
+, speexSupport ? true, speex ? null
+, theoraSupport ? true, libtheora ? null
+, x264Support ? false, x264 ? null
+, jackaudioSupport ? false, libjack2 ? null
+, pulseSupport ? config.pulseaudio or false, libpulseaudio ? null
+, bs2bSupport ? false, libbs2b ? null
+# For screenshots
+, libpngSupport ? true, libpng ? null
+, libjpegSupport ? true, libjpeg ? null
+, useUnfreeCodecs ? false
+, darwin ? null
+, buildPackages
+}:
+
+assert fontconfigSupport -> (fontconfig != null);
+assert (!fontconfigSupport) -> (freefont_ttf != null);
+assert fribidiSupport -> (fribidi != null);
+assert x11Support -> (libX11 != null && libXext != null && libGLU != null && libGL != null);
+assert xineramaSupport -> (libXinerama != null && x11Support);
+assert xvSupport -> (libXv != null && x11Support);
+assert alsaSupport -> alsaLib != null;
+assert screenSaverSupport -> libXScrnSaver != null;
+assert vdpauSupport -> libvdpau != null;
+assert cddaSupport -> cdparanoia != null;
+assert dvdnavSupport -> libdvdnav != null;
+assert dvdreadSupport -> libdvdread != null;
+assert bluraySupport -> libbluray != null;
+assert amrSupport -> (amrnb != null && amrwb != null);
+assert cacaSupport -> libcaca != null;
+assert lameSupport -> lame != null;
+assert speexSupport -> speex != null;
+assert theoraSupport -> libtheora != null;
+assert x264Support -> x264 != null;
+assert jackaudioSupport -> libjack2 != null;
+assert pulseSupport -> libpulseaudio != null;
+assert bs2bSupport -> libbs2b != null;
+assert libpngSupport -> libpng != null;
+assert libjpegSupport -> libjpeg != null;
+
+let
+
+  codecs_src =
+    let
+      dir = "http://www.mplayerhq.hu/MPlayer/releases/codecs/";
+      version = "20071007";
+    in
+    if stdenv.hostPlatform.system == "i686-linux" then fetchurl {
+      url = "${dir}/essential-${version}.tar.bz2";
+      sha256 = "18vls12n12rjw0mzw4pkp9vpcfmd1c21rzha19d7zil4hn7fs2ic";
+    } else if stdenv.hostPlatform.system == "x86_64-linux" then fetchurl {
+      url = "${dir}/essential-amd64-${version}.tar.bz2";
+      sha256 = "13xf5b92w1ra5hw00ck151lypbmnylrnznq9hhb0sj36z5wz290x";
+    } else if stdenv.hostPlatform.system == "powerpc-linux" then fetchurl {
+      url = "${dir}/essential-ppc-${version}.tar.bz2";
+      sha256 = "18mlj8dp4wnz42xbhdk1jlz2ygra6fbln9wyrcyvynxh96g1871z";
+    } else null;
+
+  codecs = if codecs_src != null then stdenv.mkDerivation {
+    pname = "MPlayer-codecs-essential";
+
+    src = codecs_src;
+
+    installPhase = ''
+      mkdir $out
+      cp -prv * $out
+    '';
+
+    meta.license = stdenv.lib.licenses.unfree;
+  } else null;
+
+  crossBuild = stdenv.hostPlatform != stdenv.buildPlatform;
+
+in
+
+stdenv.mkDerivation rec {
+  pname = "mplayer";
+  version = "1.4";
+
+  src = fetchurl {
+    url = "http://www.mplayerhq.hu/MPlayer/releases/MPlayer-${version}.tar.xz";
+    sha256 = "0j5mflr0wnklxsvnpmxvk704hscyn2785hvvihj2i3a7b3anwnc2";
+  };
+
+  prePatch = ''
+    sed -i /^_install_strip/d configure
+
+    rm -rf ffmpeg
+  '';
+
+  depsBuildBuild = [ buildPackages.stdenv.cc ];
+  nativeBuildInputs = [ pkgconfig yasm ];
+  buildInputs = with stdenv.lib;
+    [ freetype ffmpeg_3 ]
+    ++ optional aalibSupport aalib
+    ++ optional fontconfigSupport fontconfig
+    ++ optional fribidiSupport fribidi
+    ++ optionals x11Support [ libX11 libXext libGLU libGL ]
+    ++ optional alsaSupport alsaLib
+    ++ optional xvSupport libXv
+    ++ optional theoraSupport libtheora
+    ++ optional cacaSupport libcaca
+    ++ optional xineramaSupport libXinerama
+    ++ optional dvdnavSupport libdvdnav
+    ++ optional dvdreadSupport libdvdread
+    ++ optional bluraySupport libbluray
+    ++ optional cddaSupport cdparanoia
+    ++ optional jackaudioSupport libjack2
+    ++ optionals amrSupport [ amrnb amrwb ]
+    ++ optional x264Support x264
+    ++ optional pulseSupport libpulseaudio
+    ++ optional screenSaverSupport libXScrnSaver
+    ++ optional lameSupport lame
+    ++ optional vdpauSupport libvdpau
+    ++ optional speexSupport speex
+    ++ optional libpngSupport libpng
+    ++ optional libjpegSupport libjpeg
+    ++ optional bs2bSupport libbs2b
+    ++ (with darwin.apple_sdk.frameworks; optionals stdenv.isDarwin [ Cocoa OpenGL ])
+    ;
+
+  configurePlatforms = [ ];
+  configureFlags = with stdenv.lib; [
+    "--enable-freetype"
+    (if fontconfigSupport then "--enable-fontconfig" else "--disable-fontconfig")
+    (if x11Support then "--enable-x11 --enable-gl" else "--disable-x11 --disable-gl")
+    (if xineramaSupport then "--enable-xinerama" else "--disable-xinerama")
+    (if xvSupport then "--enable-xv" else "--disable-xv")
+    (if alsaSupport then "--enable-alsa" else "--disable-alsa")
+    (if screenSaverSupport then "--enable-xss" else "--disable-xss")
+    (if vdpauSupport then "--enable-vdpau" else "--disable-vdpau")
+    (if cddaSupport then "--enable-cdparanoia" else "--disable-cdparanoia")
+    (if dvdnavSupport then "--enable-dvdnav" else "--disable-dvdnav")
+    (if bluraySupport then "--enable-bluray" else "--disable-bluray")
+    (if amrSupport then "--enable-libopencore_amrnb" else "--disable-libopencore_amrnb")
+    (if cacaSupport then "--enable-caca" else "--disable-caca")
+    (if lameSupport then "--enable-mp3lame --disable-mp3lame-lavc" else "--disable-mp3lame --enable-mp3lame-lavc")
+    (if speexSupport then "--enable-speex" else "--disable-speex")
+    (if theoraSupport then "--enable-theora" else "--disable-theora")
+    (if x264Support then "--enable-x264 --disable-x264-lavc" else "--disable-x264 --enable-x264-lavc")
+    (if jackaudioSupport then "" else "--disable-jack")
+    (if pulseSupport then "--enable-pulse" else "--disable-pulse")
+    "--disable-xanim"
+    "--disable-ivtv"
+    "--disable-xvid --disable-xvid-lavc"
+    "--disable-ossaudio"
+    "--disable-ffmpeg_a"
+    "--yasm=${buildPackages.yasm}/bin/yasm"
+    # Note, the `target` vs `host` confusion is intensional.
+    "--target=${stdenv.hostPlatform.config}"
+  ] ++ optional
+         (useUnfreeCodecs && codecs != null && !crossBuild)
+         "--codecsdir=${codecs}"
+    ++ optional
+         ((stdenv.hostPlatform.isi686 || stdenv.hostPlatform.isx86_64) && !crossBuild)
+         "--enable-runtime-cpudetection"
+    ++ optional fribidiSupport "--enable-fribidi"
+    ++ optional stdenv.isLinux "--enable-vidix"
+    ++ optional stdenv.isLinux "--enable-fbdev"
+    ++ optionals (crossBuild) [
+    "--enable-cross-compile"
+    "--disable-vidix-pcidb"
+    "--with-vidix-drivers=no"
+  ];
+
+  preConfigure = ''
+    configureFlagsArray+=(
+      "--cc=$CC"
+      "--host-cc=$CC_FOR_BUILD"
+      "--as=$AS"
+      "--nm=$NM"
+      "--ar=$AR"
+      "--ranlib=$RANLIB"
+      "--windres=$WINDRES"
+    )
+  '';
+
+  postConfigure = ''
+    echo CONFIG_MPEGAUDIODSP=yes >> config.mak
+  '';
+
+  NIX_LDFLAGS = with stdenv.lib; toString (
+       optional  fontconfigSupport "-lfontconfig"
+    ++ optional  fribidiSupport "-lfribidi"
+    ++ optionals x11Support [ "-lX11" "-lXext" ]
+    ++ [ "-lfreetype" ]
+  );
+
+  installTargets = [ "install" ] ++ stdenv.lib.optional x11Support "install-gui";
+
+  enableParallelBuilding = true;
+
+  # Provide a reasonable standard font when not using fontconfig. Maybe we should symlink here.
+  postInstall = stdenv.lib.optionalString (!fontconfigSupport)
+    ''
+      mkdir -p $out/share/mplayer
+      cp ${freefont_ttf}/share/fonts/truetype/FreeSans.ttf $out/share/mplayer/subfont.ttf
+      if test -f $out/share/applications/mplayer.desktop ; then
+        echo "NoDisplay=True" >> $out/share/applications/mplayer.desktop
+      fi
+    '';
+
+  meta = {
+    description = "A movie player that supports many video formats";
+    homepage = "http://mplayerhq.hu";
+    license = "GPL";
+    maintainers = [ stdenv.lib.maintainers.eelco ];
+    platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/mpv/default.nix b/nixpkgs/pkgs/applications/video/mpv/default.nix
new file mode 100644
index 000000000000..697a468f8908
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/mpv/default.nix
@@ -0,0 +1,237 @@
+{ config, stdenv, fetchurl, fetchFromGitHub, fetchpatch
+, addOpenGLRunpath, docutils, perl, pkgconfig, python3, wafHook, which
+, ffmpeg, freefont_ttf, freetype, libass, libpthreadstubs, mujs
+, nv-codec-headers, lua, libuchardet, libiconv ? null
+, CoreFoundation, Cocoa, CoreAudio, MediaPlayer
+
+, waylandSupport ? stdenv.isLinux
+  , wayland           ? null
+  , wayland-protocols ? null
+  , libxkbcommon      ? null
+
+, x11Support ? stdenv.isLinux
+  , libGLU, libGL ? null
+  , libX11          ? null
+  , libXext         ? null
+  , libXxf86vm      ? null
+  , libXrandr       ? null
+
+, cddaSupport ? false
+  , libcdio          ? null
+  , libcdio-paranoia ? null
+
+, vulkanSupport ? stdenv.isLinux
+  , libplacebo     ? null
+  , shaderc        ? null
+  , vulkan-headers ? null
+  , vulkan-loader  ? null
+
+, drmSupport ? stdenv.isLinux
+  , libdrm ? null
+  , mesa   ? null
+
+, alsaSupport        ? stdenv.isLinux, alsaLib       ? null
+, bluraySupport      ? true,           libbluray     ? null
+, bs2bSupport        ? true,           libbs2b       ? null
+, cacaSupport        ? true,           libcaca       ? null
+, cmsSupport         ? true,           lcms2         ? null
+, dvdnavSupport      ? stdenv.isLinux, libdvdnav     ? null
+, libpngSupport      ? true,           libpng        ? null
+, pulseSupport       ? config.pulseaudio or stdenv.isLinux, libpulseaudio ? null
+, rubberbandSupport  ? stdenv.isLinux, rubberband    ? null
+# NOTE: samba support should be removed on the next mpv release, see also:
+# https://github.com/NixOS/nixpkgs/pull/89145#issuecomment-636424362
+# Please remove this line on the next mpv release.
+, sambaSupport       ? false,          samba         ? null
+, screenSaverSupport ? true,           libXScrnSaver ? null
+, sdl2Support        ? true,           SDL2          ? null
+, sndioSupport       ? true,           sndio         ? null
+, speexSupport       ? true,           speex         ? null
+, swiftSupport       ? false,          swift         ? null
+, theoraSupport      ? true,           libtheora     ? null
+, vaapiSupport       ? stdenv.isLinux, libva         ? null
+, vdpauSupport       ? true,           libvdpau      ? null
+, xineramaSupport    ? stdenv.isLinux, libXinerama   ? null
+, xvSupport          ? stdenv.isLinux, libXv         ? null
+, zimgSupport        ? true,           zimg          ? null
+, archiveSupport     ? true,           libarchive    ? null
+, jackaudioSupport   ? false,          libjack2      ? null
+, openalSupport      ? true,           openalSoft    ? null
+, vapoursynthSupport ? false,          vapoursynth   ? null
+}:
+
+with stdenv.lib;
+
+let
+  available = x: x != null;
+in
+assert alsaSupport        -> available alsaLib;
+assert archiveSupport     -> available libarchive;
+assert bluraySupport      -> available libbluray;
+assert bs2bSupport        -> available libbs2b;
+assert cacaSupport        -> available libcaca;
+assert cddaSupport        -> all available [ libcdio libcdio-paranoia ];
+assert cmsSupport         -> available lcms2;
+assert drmSupport         -> all available [ libdrm mesa ];
+assert dvdnavSupport      -> available libdvdnav;
+assert jackaudioSupport   -> available libjack2;
+assert libpngSupport      -> available libpng;
+assert openalSupport      -> available openalSoft;
+assert pulseSupport       -> available libpulseaudio;
+assert rubberbandSupport  -> available rubberband;
+assert screenSaverSupport -> available libXScrnSaver;
+assert sambaSupport       -> available samba;
+assert sdl2Support        -> available SDL2;
+assert sndioSupport       -> available sndio;
+assert speexSupport       -> available speex;
+assert theoraSupport      -> available libtheora;
+assert vaapiSupport       -> available libva;
+assert vapoursynthSupport -> available vapoursynth;
+assert vdpauSupport       -> available libvdpau;
+assert vulkanSupport      -> all available [ libplacebo shaderc vulkan-headers vulkan-loader ];
+assert waylandSupport     -> all available [ wayland wayland-protocols libxkbcommon ];
+assert x11Support         -> all available [ libGLU libGL libX11 libXext libXxf86vm libXrandr ];
+assert xineramaSupport    -> x11Support && available libXinerama;
+assert xvSupport          -> x11Support && available libXv;
+assert zimgSupport        -> available zimg;
+
+let
+  luaEnv = lua.withPackages (ps: with ps; [ luasocket ]);
+
+in stdenv.mkDerivation rec {
+  pname = "mpv";
+  version = "0.32.0";
+
+  src = fetchFromGitHub {
+    owner  = "mpv-player";
+    repo   = "mpv";
+    rev    = "v${version}";
+    sha256 = "0kmy1q0hp87vq4rpv7py04x8bpg1wmlzaibavmkf713jqp6qy596";
+  };
+
+  postPatch = ''
+    patchShebangs ./TOOLS/
+  '';
+
+  passthru = {
+    inherit
+    # The wrapper consults luaEnv and lua.version
+    luaEnv
+    lua
+    # In the wrapper, we want to reference vapoursynth which has the
+    # `python3` passthru attribute (which has the `sitePrefix`
+    # attribute). This way we'll be sure that in the wrapper we'll
+    # use the same python3.sitePrefix used to build vapoursynth.
+    vapoursynthSupport
+    vapoursynth
+    ;
+  };
+
+  NIX_LDFLAGS = optionalString x11Support "-lX11 -lXext "
+              + optionalString stdenv.isDarwin "-framework CoreFoundation";
+
+  wafConfigureFlags = [
+    "--enable-libmpv-shared"
+    "--enable-manpage-build"
+    "--disable-libmpv-static"
+    "--disable-static-build"
+    "--disable-build-date" # Purity
+    (enableFeature archiveSupport  "libarchive")
+    (enableFeature cddaSupport     "cdda")
+    (enableFeature dvdnavSupport   "dvdnav")
+    (enableFeature openalSupport   "openal")
+    (enableFeature sambaSupport    "libsmbclient")
+    (enableFeature sdl2Support     "sdl2")
+    (enableFeature sndioSupport    "sndio")
+    (enableFeature vaapiSupport    "vaapi")
+    (enableFeature waylandSupport  "wayland")
+    (enableFeature stdenv.isLinux  "dvbin")
+  ] # Disable whilst Swift isn't supported
+    ++ stdenv.lib.optional (!swiftSupport) "--disable-macos-cocoa-cb";
+
+  nativeBuildInputs = [
+    addOpenGLRunpath docutils perl pkgconfig python3 wafHook which
+  ]
+    ++ optional swiftSupport swift;
+
+  buildInputs = [
+    ffmpeg freetype libass libpthreadstubs
+    luaEnv libuchardet mujs
+  ] ++ optional alsaSupport        alsaLib
+    ++ optional archiveSupport     libarchive
+    ++ optional bluraySupport      libbluray
+    ++ optional bs2bSupport        libbs2b
+    ++ optional cacaSupport        libcaca
+    ++ optional cmsSupport         lcms2
+    ++ optional jackaudioSupport   libjack2
+    ++ optional libpngSupport      libpng
+    ++ optional openalSupport      openalSoft
+    ++ optional pulseSupport       libpulseaudio
+    ++ optional rubberbandSupport  rubberband
+    ++ optional sambaSupport       samba
+    ++ optional screenSaverSupport libXScrnSaver
+    ++ optional sdl2Support        SDL2
+    ++ optional sndioSupport       sndio
+    ++ optional speexSupport       speex
+    ++ optional theoraSupport      libtheora
+    ++ optional vaapiSupport       libva
+    ++ optional vapoursynthSupport vapoursynth
+    ++ optional vdpauSupport       libvdpau
+    ++ optional xineramaSupport    libXinerama
+    ++ optional xvSupport          libXv
+    ++ optional zimgSupport        zimg
+    ++ optional stdenv.isDarwin    libiconv
+    ++ optional stdenv.isLinux     nv-codec-headers
+    ++ optionals cddaSupport       [ libcdio libcdio-paranoia ]
+    ++ optionals drmSupport        [ libdrm mesa ]
+    ++ optionals dvdnavSupport     [ libdvdnav libdvdnav.libdvdread ]
+    ++ optionals waylandSupport    [ wayland wayland-protocols libxkbcommon ]
+    ++ optionals x11Support        [ libX11 libXext libGLU libGL libXxf86vm libXrandr ]
+    ++ optionals vulkanSupport     [ libplacebo shaderc vulkan-headers vulkan-loader ]
+    ++ optionals stdenv.isDarwin   [ CoreFoundation Cocoa CoreAudio MediaPlayer ];
+
+  enableParallelBuilding = true;
+
+  postBuild = optionalString stdenv.isDarwin ''
+    python3 TOOLS/osxbundle.py -s build/mpv
+  '';
+
+  patches = stdenv.lib.optionals stdenv.isDarwin [
+    # Fix cocoa backend. Remove with the next release
+    (fetchpatch {
+      url = "https://github.com/mpv-player/mpv/commit/188169854313b99d01da8f69fe129f0a487eb7c4.patch";
+      sha256 = "062sz4666prb2wg1rn5q8brqkzlq6lxn8sxic78a8lb0125c01f7";
+    })
+  ];
+
+  postInstall = ''
+    # Use a standard font
+    mkdir -p $out/share/mpv
+    ln -s ${freefont_ttf}/share/fonts/truetype/FreeSans.ttf $out/share/mpv/subfont.ttf
+
+    cp TOOLS/umpv $out/bin
+  '' + optionalString stdenv.isDarwin ''
+    mkdir -p $out/Applications
+    cp -r build/mpv.app $out/Applications
+  '';
+
+  # Set RUNPATH so that libcuda in /run/opengl-driver(-32)/lib can be found.
+  # See the explanation in addOpenGLRunpath.
+  postFixup = optionalString stdenv.isLinux ''
+    addOpenGLRunpath $out/bin/mpv
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A media player that supports many video formats (MPlayer and mplayer2 fork)";
+    homepage = "https://mpv.io";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ AndersonTorres fpletz globin ma27 tadeokondrak ];
+    platforms = platforms.darwin ++ platforms.linux;
+
+    longDescription = ''
+      mpv is a free and open-source general-purpose video player,
+      based on the MPlayer and mplayer2 projects, with great
+      improvements above both.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/mpv/scripts/convert.nix b/nixpkgs/pkgs/applications/video/mpv/scripts/convert.nix
new file mode 100644
index 000000000000..ce0695203328
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/mpv/scripts/convert.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchgit, lib
+, yad, mkvtoolnix-cli, libnotify }:
+
+stdenv.mkDerivation {
+  pname = "mpv-convert-script";
+  version = "2016-03-18";
+  src = fetchgit {
+    url = "https://gist.github.com/Zehkul/25ea7ae77b30af959be0";
+    rev = "f95cee43e390e843a47e8ec9d1711a12a8cd343d";
+    sha256 = "13m7l4sy2r8jv2sfrb3vvqvnim4a9ilnv28q5drlg09v298z3mck";
+  };
+
+  patches = [ ./convert.patch ];
+
+  postPatch =
+    let
+      t = k: v: '' 'local ${k} = "${v}"' '';
+      subs = var: orig: repl: "--replace " + t var orig + t var repl;
+    in ''
+      substituteInPlace convert_script.lua \
+        ${subs "NOTIFY_CMD" "notify-send" "${libnotify}/bin/notify-send"} \
+        ${subs "YAD_CMD" "yad" "${yad}/bin/yad"} \
+        ${subs "MKVMERGE_CMD" "mkvmerge" "${mkvtoolnix-cli}/bin/mkvmerge"}
+  '';
+
+  dontBuild = true;
+  installPhase = ''
+    mkdir -p $out/share/mpv/scripts
+    cp convert_script.lua $out/share/mpv/scripts
+  '';
+  passthru.scriptName = "convert_script.lua";
+
+  meta = {
+    description = "Convert parts of a video while you are watching it in mpv";
+    homepage = "https://gist.github.com/Zehkul/25ea7ae77b30af959be0";
+    maintainers = [ lib.maintainers.Profpatsch ];
+    longDescription = ''
+      When this script is loaded into mpv, you can hit Alt+W to mark the beginning
+      and Alt+W again to mark the end of the clip. Then a settings window opens.
+    '';
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/video/mpv/scripts/convert.patch b/nixpkgs/pkgs/applications/video/mpv/scripts/convert.patch
new file mode 100644
index 000000000000..82171210b415
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/mpv/scripts/convert.patch
@@ -0,0 +1,67 @@
+--- convert/convert_script.lua	2016-03-18 19:30:49.675401969 +0100
++++ convert_script.lua	2016-03-19 01:18:00.801897043 +0100
+@@ -3,6 +3,10 @@
+ local opt = require 'mp.options'
+ local utils = require 'mp.utils'
+ 
++local NOTIFY_CMD = "notify-send"
++local YAD_CMD = "yad"
++local MKVMERGE_CMD = "mkvmerge"
++
+ -- default options, convert_script.conf is read
+ local options = {
+     bitrate_multiplier = 0.975,			-- to make sure the file won’t go over the target file size, set it to 1 if you don’t care
+@@ -247,12 +247,12 @@
+     if string.len(vf) > 0 then
+         vf = vf .. ","
+     end
+-    local sub_file_table = mp.get_property_native("options/sub-file")
++    local sub_file_table = mp.get_property_native("options/sub-files")
+     local sub_file = ""
+     for index, param in pairs(sub_file_table) do
+         sub_file = sub_file .. " --sub-file='" .. string.gsub(tostring(param), "'", "'\\''") .. "'"
+     end
+-    local audio_file_table = mp.get_property_native("options/audio-file")
++    local audio_file_table = mp.get_property_native("options/audio-files")
+     local audio_file = ""
+     for index, param in pairs(audio_file_table) do
+         audio_file = audio_file .. " --audio-file='" .. string.gsub(tostring(param), "'", "'\\''") .. "'"
+@@ -354,9 +358,9 @@
+     if ovc == "gif" then
+         full_command = full_command .. ' --vf-add=lavfi=graph=\\"framestep=' .. framestep .. '\\" && convert ' 
+         .. tmpfolder .. '/*.png -set delay ' .. delay .. ' -loop 0 -fuzz ' .. fuzz .. '% ' .. dither .. ' -layers optimize '
+-        .. full_output_path .. ' && rm -rf ' .. tmpfolder .. ' && notify-send "Gif done") & disown'
++        .. full_output_path .. ' && rm -rf ' .. tmpfolder .. ' && ' .. NOTIFY_CMD .. ' "Gif done") & disown'
+     else
+-        full_command = full_command .. ' && notify-send "Encoding done"; mkvpropedit '
++        full_command = full_command .. ' && ' .. NOTIFY_CMD .. ' "Encoding done"; mkvpropedit '
+         .. full_output_path .. ' -s title="' .. metadata_title .. '") & disown'
+     end
+     
+@@ -409,7 +413,7 @@
+     sep = ",+"
+     
+     if enc then
+-        local command = "mkvmerge '" .. video .. "' " .. mkvmerge_parts .. " -o " .. full_output_path
++        local command = MKVMERGE_CMD .. " '" .. video .. "' " .. mkvmerge_parts .. " -o " .. full_output_path
+         msg.info(command)
+         os.execute(command)
+         clear()
+@@ -508,7 +512,7 @@
+     end
+     
+     
+-    local yad_command = [[LC_NUMERIC=C yad --title="Convert Script" --center --form --fixed --always-print-result \
++    local yad_command = [[LC_NUMERIC=C ]] .. YAD_CMD .. [[ --title="Convert Script" --center --form --fixed --always-print-result \
+     --name "convert script" --class "Convert Script" --field="Resize to height:NUM" "]] .. scale_sav		--yad_table 1
+     .. [[" --field="Resize to width instead:CHK" ]] .. resize_to_width_instead .. " "				--yad_table 2
+     if options.legacy_yad then
+@@ -543,7 +547,7 @@
+     yad_command = yad_command .. [[ --button="Crop:1" --button="gtk-cancel:2" --button="gtk-ok:0"; ret=$? && echo $ret]]
+     
+     if gif_dialog then
+-        yad_command = [[echo $(LC_NUMERIC=C yad --title="Gif settings" --name "convert script" --class "Convert Script" \
++        yad_command = [[echo $(LC_NUMERIC=C ]] .. YAD_CMD .. [[ --title="Gif settings" --name "convert script" --class "Convert Script" \
+         --center --form --always-print-result --separator="…" \
+         --field="Fuzz Factor:NUM" '1!0..100!0.5!1' \
+         --field="Framestep:NUM" '3!1..3!1' \
diff --git a/nixpkgs/pkgs/applications/video/mpv/scripts/mpris.nix b/nixpkgs/pkgs/applications/video/mpv/scripts/mpris.nix
new file mode 100644
index 000000000000..f19db554d045
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/mpv/scripts/mpris.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchpatch, fetchFromGitHub, pkgconfig, glib, mpv }:
+
+stdenv.mkDerivation rec {
+  pname = "mpv-mpris";
+  version = "0.5";
+
+  src = fetchFromGitHub {
+    owner = "hoyon";
+    repo = "mpv-mpris";
+    rev = version;
+    sha256 = "07p6li5z38pkfd40029ag2jqx917vyl3ng5p2i4v5a0af14slcnk";
+  };
+  patches = [
+    # Enables to "make SCRIPTS_DIR=... install" https://github.com/hoyon/mpv-mpris/pull/38
+    (fetchpatch {
+      url = "https://github.com/hoyon/mpv-mpris/commit/f1482350868bf20e4575f923943ec998469b255e.patch";
+      sha256 = "1lqy867wpmj6hv3zgi6g679a7x3dv5skpw24hwd05b28galnyd4l";
+    })
+  ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ glib mpv ];
+
+  installFlags = [ "SCRIPTS_DIR=$(out)/share/mpv/scripts" ];
+
+  # Otherwise, the shared object isn't `strip`ped. See:
+  # https://discourse.nixos.org/t/debug-why-a-derivation-has-a-reference-to-gcc/7009
+  stripDebugList = [ "share/mpv/scripts" ];
+  passthru.scriptName = "mpris.so";
+
+  meta = with stdenv.lib; {
+    description = "MPRIS plugin for mpv";
+    homepage = "https://github.com/hoyon/mpv-mpris";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ jfrankenau ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/mpv/scripts/simple-mpv-webui.nix b/nixpkgs/pkgs/applications/video/mpv/scripts/simple-mpv-webui.nix
new file mode 100644
index 000000000000..d51434e241c9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/mpv/scripts/simple-mpv-webui.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, fetchFromGitHub }:
+stdenv.mkDerivation rec {
+  pname = "simple-mpv-ui";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "open-dynaMIX";
+    repo = "simple-mpv-webui";
+    rev = "v${version}";
+    sha256 = "1glrnnl1slcl0ri0zs4j64lc9aa52p9ffh6av0d81fk95nm98917";
+  };
+
+  dontBuild = true;
+  installPhase = ''
+    mkdir -p $out/share/mpv/scripts
+    cp -r webui.lua webui-page $out/share/mpv/scripts/
+  '';
+  passthru.scriptName = "webui.lua";
+
+  meta = with stdenv.lib; {
+    description = "A web based user interface with controls for the mpv mediaplayer";
+    homepage = "https://github.com/open-dynaMIX/simple-mpv-webui";
+    maintainers = [ maintainers.cript0nauta ];
+    longDescription = ''
+      You can access the webui when accessing http://127.0.0.1:8080 or
+      http://[::1]:8080 in your webbrowser. By default it listens on
+      0.0.0.0:8080 and [::0]:8080
+    '';
+    license = licenses.mit;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/video/mpv/wrapper.nix b/nixpkgs/pkgs/applications/video/mpv/wrapper.nix
new file mode 100644
index 000000000000..5b3ad7a98311
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/mpv/wrapper.nix
@@ -0,0 +1,83 @@
+# Arguments that this derivation gets when it is created with `callPackage`
+{ stdenv
+, lib
+, symlinkJoin
+, makeWrapper
+, youtube-dl
+}:
+
+# the unwrapped mpv derivation - 1st argument to `wrapMpv`
+mpv:
+
+let
+  # arguments to the function (called `wrapMpv` in all-packages.nix)
+  wrapper = {
+    extraMakeWrapperArgs ? [],
+    youtubeSupport ? true,
+    # a set of derivations (probably from `mpvScripts`) where each is
+    # expected to have a `scriptName` passthru attribute that points to the
+    # name of the script that would reside in the script's derivation's
+    # `$out/share/mpv/scripts/`.
+    scripts ? [],
+    extraUmpvWrapperArgs ? []
+  }:
+  let
+    binPath = lib.makeBinPath ([
+      mpv.luaEnv
+    ] ++ lib.optionals youtubeSupport [
+      youtube-dl
+    ] ++ lib.optionals mpv.vapoursynthSupport [
+      mpv.vapoursynth.python3
+    ]);
+    # All arguments besides the input and output binaries (${mpv}/bin/mpv and
+    # $out/bin/mpv). These are used by the darwin specific makeWrapper call
+    # used to wrap $out/Applications/mpv.app/Contents/MacOS/mpv as well.
+    mostMakeWrapperArgs = lib.strings.escapeShellArgs ([ "--argv0" "'$0'"
+      # These are always needed (TODO: Explain why)
+      "--prefix" "LUA_CPATH" ";" "${mpv.luaEnv}/lib/lua/${mpv.lua.luaversion}/?.so"
+      "--prefix" "LUA_PATH" ";" "${mpv.luaEnv}/share/lua/${mpv.lua.luaversion}/?.lua"
+    ] ++ lib.optionals mpv.vapoursynthSupport [
+      "--prefix" "PYTHONPATH" ":" "${mpv.vapoursynth}/lib/${mpv.vapoursynth.python3.sitePackages}"
+    ] ++ lib.optionals (binPath != "") [
+      "--prefix" "PATH" ":" binPath
+    ] ++ (lib.lists.flatten (map
+      # For every script in the `scripts` argument, add the necessary flags to the wrapper
+      (script:
+        [
+          "--add-flags"
+          # Here we rely on the existence of the `scriptName` passthru
+          # attribute of the script derivation from the `scripts`
+          "--script=${script}/share/mpv/scripts/${script.scriptName}"
+        ]
+      ) scripts
+    )) ++ extraMakeWrapperArgs)
+    ;
+    umpvWrapperArgs = lib.strings.escapeShellArgs ([
+      "--argv0" "'$0'"
+      "--set" "MPV" "${placeholder "out"}/bin/mpv"
+    ] ++ extraUmpvWrapperArgs)
+    ;
+  in
+    symlinkJoin {
+      name = "mpv-with-scripts-${mpv.version}";
+
+      paths = [ mpv ];
+
+      buildInputs = [ makeWrapper ];
+
+      passthru.unwrapped = mpv;
+
+      postBuild = ''
+        # wrapProgram can't operate on symlinks
+        rm "$out/bin/mpv"
+        makeWrapper "${mpv}/bin/mpv" "$out/bin/mpv" ${mostMakeWrapperArgs}
+        rm "$out/bin/umpv"
+        makeWrapper "${mpv}/bin/umpv" "$out/bin/umpv" ${umpvWrapperArgs}
+      '' + lib.optionalString stdenv.isDarwin ''
+        # wrapProgram can't operate on symlinks
+        rm "$out/Applications/mpv.app/Contents/MacOS/mpv"
+        makeWrapper "${mpv}/Applications/mpv.app/Contents/MacOS/mpv" "$out/Applications/mpv.app/Contents/MacOS/mpv" ${mostMakeWrapperArgs}
+      '';
+    };
+in
+  lib.makeOverridable wrapper
diff --git a/nixpkgs/pkgs/applications/video/mythtv/default.nix b/nixpkgs/pkgs/applications/video/mythtv/default.nix
new file mode 100644
index 000000000000..2f1d3a3a1c91
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/mythtv/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, mkDerivation, fetchFromGitHub, which, qtbase, qtwebkit, qtscript, xlibsWrapper
+, libpulseaudio, fftwSinglePrec , lame, zlib, libGLU, libGL, alsaLib, freetype
+, perl, pkgconfig , libsamplerate, libbluray, lzo, libX11, libXv, libXrandr, libXvMC, libXinerama, libXxf86vm
+, libXmu , yasm, libuuid, taglib, libtool, autoconf, automake, file, exiv2, linuxHeaders
+, libXNVCtrl, enableXnvctrl ? false
+}:
+
+mkDerivation rec {
+  pname = "mythtv";
+  version = "30.0";
+
+  src = fetchFromGitHub {
+    owner = "MythTV";
+    repo = "mythtv";
+    rev = "v${version}";
+    sha256 = "1pfzjb07xwd3mfgmbr4kkiyfyvwy9fkl13ik7bvqds86m0ws5bw4";
+  };
+
+  patches = [
+    # Fixes build with exiv2 0.27.1.
+    ./exiv2.patch
+    # Disables OS detection used while checking for xnvctrl support.
+    ./disable-os-detection.patch
+  ];
+
+  setSourceRoot = ''sourceRoot=$(echo */mythtv)'';
+
+  buildInputs = [
+    freetype qtbase qtwebkit qtscript lame zlib xlibsWrapper libGLU libGL
+    perl libsamplerate libbluray lzo alsaLib libpulseaudio fftwSinglePrec libX11 libXv libXrandr libXvMC
+    libXmu libXinerama libXxf86vm libXmu libuuid taglib exiv2
+  ] ++ stdenv.lib.optional enableXnvctrl libXNVCtrl;
+  nativeBuildInputs = [ pkgconfig which yasm libtool autoconf automake file ];
+
+  configureFlags = 
+    [ "--dvb-path=${linuxHeaders}/include" ]
+    ++ stdenv.lib.optionals (!enableXnvctrl) [  "--disable-xnvctrl" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.mythtv.org/";
+    description = "Open Source DVR";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.titanous ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/mythtv/disable-os-detection.patch b/nixpkgs/pkgs/applications/video/mythtv/disable-os-detection.patch
new file mode 100644
index 000000000000..5a35dc2d1ddf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/mythtv/disable-os-detection.patch
@@ -0,0 +1,51 @@
+--- a/configure	1970-01-01 01:00:01.000000000 +0100
++++ b/configure	2019-10-26 11:54:01.920776490 +0200
+@@ -6642,29 +6642,29 @@
+     require libXinerama X11/extensions/Xinerama.h XineramaQueryExtension -lXinerama
+     require libXext "X11/Xdefs.h X11/Xlib.h X11/extensions/Xext.h" XMissingExtension -lXext
+     if enabled xnvctrl; then
+-        case $target_os in
+-            linux)
++#        case $target_os in
++#            linux)
+                 # Bah. Suse linux doesn't have xnvctrl.
+-                . /etc/os-release
+-                case $ID in
+-                    *suse*)
++#                . /etc/os-release
++#                case $ID in
++#                    *suse*)
+ 			# This is hopefully temporary.
+-			disable xnvctrl_external
+-			;;
+-		    *)
+-                        require XNVctrl "X11/Xlib.h NVCtrl/NVCtrl.h NVCtrl/NVCtrlLib.h" XNVCTRLIsNvScreen -lXNVCtrl || disable xnvctrl
+-                        ;;
+-                esac
+-                ;;
+-            freebsd)
++#			disable xnvctrl_external
++#			;;
++#		    *)
++        require XNVctrl "X11/Xlib.h NVCtrl/NVCtrl.h NVCtrl/NVCtrlLib.h" XNVCTRLIsNvScreen -lXNVCtrl || disable xnvctrl
++#                        ;;
++#                esac
++#                ;;
++#            freebsd)
+                 # This is hopefully temporary, and will eventually
+                 # check for a system library too.
+-                disable xnvctrl_external
+-                ;;
+-            *)
+-                disable xnvctrl
+-                ;;
+-        esac
++#                disable xnvctrl_external
++#                ;;
++#            *)
++#                disable xnvctrl
++#                ;;
++#        esac
+     fi
+ fi
+ 
diff --git a/nixpkgs/pkgs/applications/video/mythtv/exiv2.patch b/nixpkgs/pkgs/applications/video/mythtv/exiv2.patch
new file mode 100644
index 000000000000..29bf1f5967bb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/mythtv/exiv2.patch
@@ -0,0 +1,19 @@
+Patch source: https://aur.archlinux.org/cgit/aur.git/plain/004-exiv2.patch?h=mythtv&id=76ea37f8556805b205878772ad7874e487c0d946
+--- a/libs/libmythmetadata/imagemetadata.cpp
++++ b/libs/libmythmetadata/imagemetadata.cpp
+@@ -7,14 +7,7 @@
+ #include "exitcodes.h"        // for ffprobe
+ 
+ // libexiv2 for Exif metadata
+-//#include <exiv2/exiv2.hpp>
+-// Note: Older versions of Exiv2 don't have the exiv2.hpp include
+-// file.  Using image.hpp instead seems to work.
+-#ifdef _MSC_VER
+-#include <exiv2/src/image.hpp>
+-#else
+-#include <exiv2/image.hpp>
+-#endif
++#include <exiv2/exiv2.hpp>
+ 
+ // To read FFMPEG Metadata
+ extern "C" {
diff --git a/nixpkgs/pkgs/applications/video/natron/config.pri b/nixpkgs/pkgs/applications/video/natron/config.pri
new file mode 100644
index 000000000000..c0d236c6b975
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/natron/config.pri
@@ -0,0 +1,20 @@
+boost: LIBS += -lboost_serialization
+expat: LIBS += -lexpat
+expat: PKGCONFIG -= expat
+cairo {
+        PKGCONFIG += cairo
+        LIBS -=  $$system(pkg-config --variable=libdir cairo)/libcairo.a
+}
+pyside {
+        PKGCONFIG -= pyside
+        INCLUDEPATH += $$system(pkg-config --variable=includedir pyside)
+        INCLUDEPATH += $$system(pkg-config --variable=includedir pyside)/QtCore
+        INCLUDEPATH += $$system(pkg-config --variable=includedir pyside)/QtGui
+        INCLUDEPATH += $$system(pkg-config --variable=includedir QtGui)
+        LIBS += -lpyside-python2.7
+}
+shiboken {
+        PKGCONFIG -= shiboken
+        INCLUDEPATH += $$system(pkg-config --variable=includedir shiboken)
+        LIBS += -lshiboken-python2.7
+}
diff --git a/nixpkgs/pkgs/applications/video/natron/default.nix b/nixpkgs/pkgs/applications/video/natron/default.nix
new file mode 100644
index 000000000000..dede7d6b29e0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/natron/default.nix
@@ -0,0 +1,129 @@
+{ lib, stdenv, fetchurl, qt4, pkgconfig, boost, expat, cairo, python2Packages,
+  cmake, flex, bison, pango, librsvg, librevenge, libxml2, libcdr, libzip,
+  poppler, imagemagick, openexr, ffmpeg_3, opencolorio, openimageio,
+  qmake4Hook, libpng, libGL, lndir }:
+
+let
+  minorVersion = "2.1";
+  version = "${minorVersion}.9";
+  OpenColorIO-Configs = fetchurl {
+    url = "https://github.com/MrKepzie/OpenColorIO-Configs/archive/Natron-v${minorVersion}.tar.gz";
+    sha256 = "9eec5a02ca80c9cd8e751013cb347ea982fdddd592a4a9215cce462e332dac51";
+  };
+  seexpr = stdenv.mkDerivation rec {
+    version = "1.0.1";
+    pname = "seexpr";
+    src = fetchurl {
+      url = "https://github.com/wdas/SeExpr/archive/rel-${version}.tar.gz";
+      sha256 = "1ackh0xs4ip7mk34bam8zd4qdymkdk0dgv8x0f2mf6gbyzzyh7lp";
+    };
+    nativeBuildInputs = [ cmake ];
+    buildInputs = [ libpng flex bison ];
+  };
+  buildPlugin = { pluginName, sha256, nativeBuildInputs ? [], buildInputs ? [], preConfigure ? "" }:
+    stdenv.mkDerivation {
+      name = "openfx-${pluginName}-${version}";
+      src = fetchurl {
+        url = "https://github.com/MrKepzie/Natron/releases/download/${version}/openfx-${pluginName}-${version}.tar.xz";
+        inherit sha256;
+      };
+      inherit nativeBuildInputs buildInputs;
+      preConfigure = ''
+        makeFlagsArray+=("CONFIG=release")
+        makeFlagsArray+=("PLUGINPATH=$out/Plugins/OFX/Natron")
+        ${preConfigure}
+      '';
+    };
+  lodepngcpp = fetchurl {
+    url = "https://raw.githubusercontent.com/lvandeve/lodepng/a70c086077c0eaecbae3845e4da4424de5f43361/lodepng.cpp";
+    sha256 = "1dxkkr4jbmvlwfr7m16i1mgcj1pqxg9s1a7y3aavs9rrk0ki8ys2";
+  };
+  lodepngh = fetchurl {
+    url = "https://raw.githubusercontent.com/lvandeve/lodepng/a70c086077c0eaecbae3845e4da4424de5f43361/lodepng.h";
+    sha256 = "14drdikd0vws3wwpyqq7zzm5z3kg98svv4q4w0hr45q6zh6hs0bq";
+  };
+  CImgh = fetchurl {
+    url = "https://raw.githubusercontent.com/dtschump/CImg/572c12d82b2f59ece21be8f52645c38f1dd407e6/CImg.h";
+    sha256 = "0n4qfxj8j6rmj4svf68gg2pzg8d1pb74bnphidnf8i2paj6lwniz";
+  };
+  plugins = map buildPlugin [
+    ({
+      pluginName = "arena";
+      sha256 = "0qba13vn9qdfax7nqlz1ps27zspr5kh795jp1xvbmwjzjzjpkqkf";
+      nativeBuildInputs = [ pkgconfig ];
+      buildInputs = [
+        pango librsvg librevenge libcdr opencolorio libxml2 libzip
+        poppler imagemagick
+      ];
+      preConfigure = ''
+        sed -i 's|pkg-config poppler-glib|pkg-config poppler poppler-glib|g' Makefile.master
+        for i in Extra Bundle; do
+          cp ${lodepngcpp} $i/lodepng.cpp
+          cp ${lodepngh} $i/lodepng.h
+        done
+      '';
+    })
+    ({
+      pluginName = "io";
+      sha256 = "0s196i9fkgr9iw92c94mxgs1lkxbhynkf83vmsgrldflmf0xjky7";
+      nativeBuildInputs = [ pkgconfig ];
+      buildInputs = [
+        libpng ffmpeg_3 openexr opencolorio openimageio boost libGL
+        seexpr
+      ];
+    })
+    ({
+      pluginName = "misc";
+      sha256 = "02h79jrll0c17azxj16as1mks3lmypm4m3da4mms9sg31l3n82qi";
+      buildInputs = [
+        libGL
+      ];
+      preConfigure = ''
+        cp ${CImgh} CImg/CImg.h
+      '';
+    })
+  ];
+in
+stdenv.mkDerivation {
+  inherit version;
+  name = "natron-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/MrKepzie/Natron/releases/download/${version}/Natron-${version}.tar.xz";
+    sha256 = "1wdc0zqriw2jhlrhzs6af3kagrv22cm086ffnbr1x43mgc9hfhjp";
+  };
+
+  nativeBuildInputs = [ qmake4Hook pkgconfig python2Packages.wrapPython ];
+
+  buildInputs = [
+    qt4 boost expat cairo python2Packages.pyside python2Packages.pysideShiboken
+  ];
+
+  preConfigure = ''
+    export MAKEFLAGS=-j$NIX_BUILD_CORES
+    cp ${./config.pri} config.pri
+    mkdir OpenColorIO-Configs
+    tar -xf ${OpenColorIO-Configs} --strip-components=1 -C OpenColorIO-Configs
+  '';
+
+  postFixup = ''
+    for i in ${lib.escapeShellArgs plugins}; do
+      ${lndir}/bin/lndir $i $out
+    done
+    wrapProgram $out/bin/Natron \
+      --set PYTHONPATH "$PYTHONPATH"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Node-graph based, open-source compositing software";
+    longDescription = ''
+      Node-graph based, open-source compositing software. Similar in
+      functionalities to Adobe After Effects and Nuke by The Foundry.
+    '';
+    homepage = "https://natron.fr/";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ maintainers.puffnfresh ];
+    platforms = platforms.linux;
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/obs-studio/default.nix b/nixpkgs/pkgs/applications/video/obs-studio/default.nix
new file mode 100644
index 000000000000..8a2cd1728227
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/obs-studio/default.nix
@@ -0,0 +1,107 @@
+{ config, stdenv
+, mkDerivation
+, fetchFromGitHub
+, addOpenGLRunpath
+, cmake
+, fdk_aac
+, ffmpeg
+, jansson
+, libjack2
+, libxkbcommon
+, libpthreadstubs
+, libXdmcp
+, qtbase
+, qtx11extras
+, qtsvg
+, speex
+, libv4l
+, x264
+, curl
+, xorg
+, makeWrapper
+, pkgconfig
+, vlc
+, mbedtls
+
+, scriptingSupport ? true
+, luajit
+, swig
+, python3
+
+, alsaSupport ? stdenv.isLinux
+, alsaLib
+, pulseaudioSupport ? config.pulseaudio or stdenv.isLinux
+, libpulseaudio
+}:
+
+let
+  inherit (stdenv.lib) optional optionals;
+
+in mkDerivation rec {
+  pname = "obs-studio";
+  version = "25.0.8";
+
+  src = fetchFromGitHub {
+    owner = "obsproject";
+    repo = "obs-studio";
+    rev = version;
+    sha256 = "0j2k65q3wfyfxhvkl6icz4qy0s3kfqhksizy2i3ah7yml266axbj";
+  };
+
+  nativeBuildInputs = [ addOpenGLRunpath cmake pkgconfig ];
+
+  buildInputs = [
+    curl
+    fdk_aac
+    ffmpeg
+    jansson
+    libjack2
+    libv4l
+    libxkbcommon
+    libpthreadstubs
+    libXdmcp
+    qtbase
+    qtx11extras
+    qtsvg
+    speex
+    x264
+    vlc
+    makeWrapper
+    mbedtls
+  ]
+  ++ optionals scriptingSupport [ luajit swig python3 ]
+  ++ optional alsaSupport alsaLib
+  ++ optional pulseaudioSupport libpulseaudio;
+
+  # obs attempts to dlopen libobs-opengl, it fails unless we make sure
+  # DL_OPENGL is an explicit path. Not sure if there's a better way
+  # to handle this.
+  cmakeFlags = [
+    "-DCMAKE_CXX_FLAGS=-DDL_OPENGL=\\\"$(out)/lib/libobs-opengl.so\\\""
+    "-DOBS_VERSION_OVERRIDE=${version}"
+    "-Wno-dev" # kill dev warnings that are useless for packaging
+  ];
+
+  postInstall = ''
+      wrapProgram $out/bin/obs \
+        --prefix "LD_LIBRARY_PATH" : "${xorg.libX11.out}/lib:${vlc}/lib"
+  '';
+
+  postFixup = stdenv.lib.optionalString stdenv.isLinux ''
+      addOpenGLRunpath $out/lib/lib*.so
+      addOpenGLRunpath $out/lib/obs-plugins/*.so
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Free and open source software for video recording and live streaming";
+    longDescription = ''
+      This project is a rewrite of what was formerly known as "Open Broadcaster
+      Software", software originally designed for recording and streaming live
+      video content, efficiently
+    '';
+    homepage = "https://obsproject.com";
+    maintainers = with maintainers; [ jb55 MP2E ];
+    license = licenses.gpl2;
+    platforms = [ "x86_64-linux" "i686-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/obs-studio/fix-search-path.patch b/nixpkgs/pkgs/applications/video/obs-studio/fix-search-path.patch
new file mode 100644
index 000000000000..4503447ff5dc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/obs-studio/fix-search-path.patch
@@ -0,0 +1,13 @@
+diff --git a/external/FindLibObs.cmake b/external/FindLibObs.cmake
+index ab0a3de..19c63ee 100644
+--- a/external/FindLibObs.cmake
++++ b/external/FindLibObs.cmake
+@@ -95,7 +95,7 @@ if(LIBOBS_FOUND)
+ 
+ 	set(LIBOBS_INCLUDE_DIRS ${LIBOBS_INCLUDE_DIR} ${W32_PTHREADS_INCLUDE_DIR})
+ 	set(LIBOBS_LIBRARIES ${LIBOBS_LIB} ${W32_PTHREADS_LIB})
+-	include(${LIBOBS_INCLUDE_DIR}/../cmake/external/ObsPluginHelpers.cmake)
++	include(external/ObsPluginHelpers.cmake)
+ 
+ 	# allows external plugins to easily use/share common dependencies that are often included with libobs (such as FFmpeg)
+ 	if(NOT DEFINED INCLUDED_LIBOBS_CMAKE_MODULES)
diff --git a/nixpkgs/pkgs/applications/video/obs-studio/hardcode-ndi-path.patch b/nixpkgs/pkgs/applications/video/obs-studio/hardcode-ndi-path.patch
new file mode 100644
index 000000000000..caef96c381f2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/obs-studio/hardcode-ndi-path.patch
@@ -0,0 +1,17 @@
+diff --git a/src/obs-ndi.cpp b/src/obs-ndi.cpp
+index 493831c..7b0f8db 100644
+--- a/src/obs-ndi.cpp
++++ b/src/obs-ndi.cpp
+@@ -197,11 +197,7 @@ const char* obs_module_description()
+ const NDIlib_v4* load_ndilib()
+ {
+ 	QStringList locations;
+-	locations << QString(qgetenv(NDILIB_REDIST_FOLDER));
+-#if defined(__linux__) || defined(__APPLE__)
+-	locations << "/usr/lib";
+-	locations << "/usr/local/lib";
+-#endif
++	locations << "@NDI@/lib";
+ 
+ 	for (QString path : locations) {
+ 		blog(LOG_INFO, "Trying '%s'", path.toUtf8().constData());
diff --git a/nixpkgs/pkgs/applications/video/obs-studio/linuxbrowser.nix b/nixpkgs/pkgs/applications/video/obs-studio/linuxbrowser.nix
new file mode 100644
index 000000000000..a33383937fb8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/obs-studio/linuxbrowser.nix
@@ -0,0 +1,49 @@
+# We don't have a wrapper which can supply obs-studio plugins so you have to
+# somewhat manually install this:
+
+# nix-env -f . -iA obs-linuxbrowser
+# mkdir -p ~/.config/obs-studio/plugins
+# ln -s ~/.nix-profile/share/obs/obs-plugins/obs-linuxbrowser ~/.config/obs-studio/plugins/
+
+{ stdenv, fetchFromGitHub, obs-studio, cmake, libcef }:
+
+stdenv.mkDerivation rec {
+  pname = "obs-linuxbrowser";
+  version = "0.6.1-6-gf86dba6";
+
+  src = fetchFromGitHub {
+    owner = "bazukas";
+    repo = "obs-linuxbrowser";
+    rev = version;
+    sha256 = "08d7qz0721va88bcyia8p0ycw50f6x3yk97s3vzhsc9xpq691kpi";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ obs-studio ];
+  postUnpack = ''
+    mkdir -p cef/Release cef/Resources cef/libcef_dll_wrapper/
+    for i in ${libcef}/share/cef/*; do
+      ln -s $i cef/Release/
+      ln -s $i cef/Resources/
+    done
+    ln -s ${libcef}/lib/libcef.so cef/Release/
+    ln -s ${libcef}/lib/libcef_dll_wrapper.a cef/libcef_dll_wrapper/
+    ln -s ${libcef}/include cef/
+  '';
+  cmakeFlags = [
+    "-DCEF_ROOT_DIR=../../cef"
+    "-DOBS_INCLUDE_SEARCH_DIR=${obs-studio}/include/obs"
+  ];
+  installPhase = ''
+    mkdir -p $out/share/obs/obs-plugins
+    cp -r build/obs-linuxbrowser $out/share/obs/obs-plugins/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Browser source plugin for obs-studio based on Chromium Embedded Framework";
+    homepage = "https://github.com/bazukas/obs-linuxbrowser";
+    maintainers = with maintainers; [ puffnfresh ];
+    license = licenses.gpl2;
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/obs-studio/obs-ndi.nix b/nixpkgs/pkgs/applications/video/obs-studio/obs-ndi.nix
new file mode 100644
index 000000000000..79f38fa8fe40
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/obs-studio/obs-ndi.nix
@@ -0,0 +1,41 @@
+# We don't have a wrapper which can supply obs-studio plugins so you have to
+# somewhat manually install this:
+
+# nix-env -f "<nixpkgs>" -iA obs-ndi
+# mkdir -p ~/.config/obs-studio/plugins/bin
+# ln -s ~/.nix-profile/lib/obs-plugins/obs-ndi.so ~/.config/obs-studio/plugins/bin/
+
+{ stdenv, fetchFromGitHub, obs-studio, cmake, qt5, ndi }:
+
+stdenv.mkDerivation rec {
+  pname = "obs-ndi";
+  version = "4.7.1";
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ obs-studio qt5.qtbase ndi ];
+
+  src = fetchFromGitHub {
+    owner = "Palakis";
+    repo = "obs-ndi";
+    rev = version;
+    sha256 = "040fkbf3f3qgqcrd3072y3zrjb4fwga8zr10jym744xd7bgyylqh";
+  };
+
+  patches = [ ./fix-search-path.patch ./hardcode-ndi-path.patch ];
+
+  postPatch = "sed -i -e s,@NDI@,${ndi},g src/obs-ndi.cpp";
+
+  cmakeFlags = [
+    "-DLIBOBS_INCLUDE_DIR=${obs-studio}/include/obs"
+    "-DLIBOBS_LIB=${obs-studio}/lib"
+    "-DCMAKE_CXX_FLAGS=-I${obs-studio.src}/UI/obs-frontend-api"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Network A/V plugin for OBS Studio";
+    homepage = "https://github.com/Palakis/obs-ndi";
+    maintainers = with maintainers; [ peti ];
+    license = licenses.gpl2;
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/obs-studio/v4l2sink.nix b/nixpkgs/pkgs/applications/video/obs-studio/v4l2sink.nix
new file mode 100644
index 000000000000..97eae68b6e72
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/obs-studio/v4l2sink.nix
@@ -0,0 +1,55 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, fetchpatch
+, cmake
+, qtbase
+, obs-studio
+}:
+
+stdenv.mkDerivation rec {
+  pname = "obs-v4l2sink";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "CatxFish";
+    repo = "obs-v4l2sink";
+    rev = version;
+    sha256 = "0l4lavaywih5lzwgxcbnvdrxhpvkrmh56li06s3aryikngxwsk3z";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ qtbase obs-studio ];
+
+  patches = [
+    # Fixes the segfault when stopping the plugin
+    (fetchpatch {
+      url = "https://github.com/CatxFish/obs-v4l2sink/commit/6604f01796d1b84a95714730ea51a6b8ac0e450b.diff";
+      sha256 = "0crcvw02dj0aqy7hnhizjdsnhiw03zmg6cbdkasxz2mrrbyc3s88";
+    })
+  ];
+
+  cmakeFlags = with lib; [
+    "-DLIBOBS_INCLUDE_DIR=${obs-studio.src}/libobs"
+  ];
+
+  # obs-studio expects the shared object to be located in bin/32bit or bin/64bit
+  # https://github.com/obsproject/obs-studio/blob/d60c736cb0ec0491013293c8a483d3a6573165cb/libobs/obs-nix.c#L48
+  postInstall = let
+    pluginPath = {
+      i686-linux = "bin/32bit";
+      x86_64-linux = "bin/64bit";
+    }.${stdenv.targetPlatform.system} or (throw "Unsupported system: ${stdenv.targetPlatform.system}");
+  in ''
+    mkdir -p $out/share/obs/obs-plugins/v4l2sink/${pluginPath}
+    ln -s $out/lib/obs-plugins/v4l2sink.so $out/share/obs/obs-plugins/v4l2sink/${pluginPath}
+  '';
+
+  meta = with lib; {
+    description = "obs studio output plugin for Video4Linux2 device";
+    homepage = "https://github.com/CatxFish/obs-v4l2sink";
+    maintainers = with maintainers; [ colemickens peelz ];
+    license = licenses.gpl2;
+    platforms = [ "x86_64-linux" "i686-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/obs-studio/wlrobs.nix b/nixpkgs/pkgs/applications/video/obs-studio/wlrobs.nix
new file mode 100644
index 000000000000..77ef09d3c24d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/obs-studio/wlrobs.nix
@@ -0,0 +1,42 @@
+# (the following is somewhat lifted from ./linuxbrowser.nix)
+# We don't have a wrapper which can supply obs-studio plugins so you have to
+# somewhat manually install this:
+
+# nix-env -f . -iA obs-wlrobs
+# mkdir -p ~/.config/obs-studio/plugins/wlrobs/bin/64bit
+# ln -s ~/.nix-profile/share/obs/obs-plugins/wlrobs/bin/64bit/libwlrobs.so ~/.config/obs-studio/plugins/wlrobs/bin/64bit
+{ stdenv, fetchhg, wayland, obs-studio
+, meson, ninja, pkgconfig, libX11
+, dmabufSupport ? false, libdrm ? null, libGL ? null}:
+
+assert dmabufSupport -> libdrm != null && libGL != null;
+
+stdenv.mkDerivation {
+  pname = "obs-wlrobs";
+  version = "20200111";
+
+  src = fetchhg {
+    url = "https://hg.sr.ht/~scoopta/wlrobs";
+    rev = "8345bf985e390896d89e35e2feae1fa37722f4be";
+    sha256 = "0j01wkhwhhla4qx8mwyrq2qj9cfhxksxaq2k8rskmy2qbdkvvdpb";
+  };
+
+  buildInputs = [ libX11 libGL libdrm meson ninja pkgconfig wayland obs-studio ];
+
+  installPhase = ''
+    mkdir -p $out/share/obs/obs-plugins/wlrobs/bin/64bit
+    cp ./libwlrobs.so $out/share/obs/obs-plugins/wlrobs/bin/64bit/
+  '';
+
+  mesonFlags = [
+    "-Duse_dmabuf=${if dmabufSupport then "true" else "false"}"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "An obs-studio plugin that allows you to screen capture on wlroots based wayland compositors";
+    homepage = "https://hg.sr.ht/~scoopta/wlrobs";
+    maintainers = with maintainers; [ grahamc ];
+    license = licenses.gpl3;
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/ogmtools/default.nix b/nixpkgs/pkgs/applications/video/ogmtools/default.nix
new file mode 100644
index 000000000000..c9c5190dc539
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/ogmtools/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, libogg, libvorbis, libdvdread }:
+
+stdenv.mkDerivation rec {
+  name = "ogmtools-1.5";
+
+  src = fetchurl {
+    url = "https://www.bunkus.org/videotools/ogmtools/${name}.tar.bz2";
+    sha256 = "1spx81p5wf59ksl3r3gvf78d77sh7gj8a6lw773iv67bphfivmn8";
+  };
+
+  buildInputs = [libogg libvorbis libdvdread];
+
+  meta = {
+    description = "Tools for modifying and inspecting OGG media streams";
+    longDescription = ''
+      These tools allow information about (ogminfo) or extraction from
+      (ogmdemux) or creation of (ogmmerge) OGG media streams. Includes dvdxchap
+      tool for extracting chapter information from DVD.
+    '';
+    homepage = "https://www.bunkus.org/videotools/ogmtools/";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/olive-editor/default.nix b/nixpkgs/pkgs/applications/video/olive-editor/default.nix
new file mode 100644
index 000000000000..b1e70cd037c7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/olive-editor/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, pkgconfig, which, qmake, mkDerivation,
+  qtmultimedia, wrapQtAppsHook, frei0r, opencolorio, ffmpeg-full,
+  CoreFoundation }:
+
+mkDerivation rec {
+  pname = "olive-editor";
+  version = "0.1.2";
+
+  src = fetchFromGitHub {
+    owner = "olive-editor";
+    repo = "olive";
+    rev = version;
+    sha256 = "151g6jwhipgbq4llwib92sq23p1s9hm6avr7j4qq3bvykzrm8z1a";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    which
+    qmake
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    ffmpeg-full
+    frei0r
+    opencolorio
+    qtmultimedia
+  ] ++ stdenv.lib.optional stdenv.isDarwin CoreFoundation;
+
+  meta = with stdenv.lib; {
+    description = "Professional open-source NLE video editor";
+    homepage = "https://www.olivevideoeditor.org/";
+    downloadPage = "https://www.olivevideoeditor.org/download.php";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.balsoft ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/omxplayer/default.nix b/nixpkgs/pkgs/applications/video/omxplayer/default.nix
new file mode 100644
index 000000000000..28df8ead0c80
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/omxplayer/default.nix
@@ -0,0 +1,86 @@
+{ stdenv, fetchurl
+, raspberrypifw, pcre, boost, freetype, zlib
+}:
+
+let
+  ffmpeg = stdenv.mkDerivation rec {
+    name = "ffmpeg-1.1.3";
+    
+    src = fetchurl {
+      url = "http://www.ffmpeg.org/releases/${name}.tar.bz2";
+      sha256 = "03s1zsprz5p6gjgwwqcf7b6cvzwwid6l8k7bamx9i0f1iwkgdm0j";
+    };
+    
+    configurePlatforms = [];
+    configureFlags = [
+      "--arch=${stdenv.hostPlatform.parsed.cpu.name}"
+    ] ++ stdenv.lib.optionals stdenv.hostPlatform.isAarch32 [
+      # TODO be better with condition
+      "--cpu=arm1176jzf-s"
+    ] ++ [
+      "--disable-muxers"
+      "--enable-muxer=spdif"
+      "--enable-muxer=adts"
+      "--disable-encoders"
+      "--enable-encoder=ac3"
+      "--enable-encoder=aac"
+      "--disable-decoder=mpeg_xvmc"
+      "--disable-devices"
+      "--disable-ffprobe"
+      "--disable-ffplay"
+      "--disable-ffserver"
+      "--disable-ffmpeg"
+      "--enable-shared"
+      "--disable-doc"
+      "--enable-postproc"
+      "--enable-gpl"
+      "--enable-protocol=http"
+      "--enable-pthreads"
+      "--disable-runtime-cpudetect"
+      "--enable-pic"
+      "--disable-armv5te"
+      "--disable-neon"
+      "--enable-armv6t2"
+      "--enable-armv6"
+      "--enable-hardcoded-tables"
+      "--disable-runtime-cpudetect"
+      "--disable-debug"
+      "--arch=${stdenv.hostPlatform.parsed.cpu.name}"
+      "--target_os=${stdenv.hostPlatform.parsed.kernel.name}"
+    ] ++ stdenv.lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
+      "--cross-prefix=${stdenv.cc.targetPrefix}"
+      "--enable-cross-compile"
+    ];
+
+    enableParallelBuilding = true;
+
+    meta = {
+      homepage = "http://www.ffmpeg.org/";
+      description = "A complete, cross-platform solution to record, convert and stream audio and video";
+    };
+  };
+in
+stdenv.mkDerivation rec {
+  name = "omxplayer-20130328-fbee325dc2";
+  src = fetchurl {
+    url = "https://github.com/huceke/omxplayer/tarball/fbee325dc2";
+    name = "${name}.tar.gz";
+    sha256 = "0fkvv8il7ffqxki2gp8cxa5shh6sz9jsy5vv3f4025g4gss6afkg";
+  };
+  patchPhase = ''
+    sed -i 1d Makefile
+    export INCLUDES="-I${raspberrypifw}/include/interface/vcos/pthreads -I${raspberrypifw}/include/interface/vmcs_host/linux/"
+  '';
+  installPhase = ''
+    mkdir -p $out/bin
+    cp omxplayer.bin $out/bin
+  '';
+  buildInputs = [ raspberrypifw ffmpeg pcre boost freetype zlib ];
+
+  meta = {
+    homepage = "https://github.com/huceke/omxplayer";
+    description = "Commandline OMX player for the Raspberry Pi";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.arm;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/openshot-qt/default.nix b/nixpkgs/pkgs/applications/video/openshot-qt/default.nix
new file mode 100644
index 000000000000..cd3176249f8a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/openshot-qt/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, mkDerivationWith, fetchFromGitHub, fetchpatch
+, doxygen, python3Packages, libopenshot
+, wrapGAppsHook, gtk3 }:
+
+mkDerivationWith python3Packages.buildPythonApplication rec {
+  pname = "openshot-qt";
+  version = "2.5.1";
+
+  src = fetchFromGitHub {
+    owner = "OpenShot";
+    repo = "openshot-qt";
+    rev = "v${version}";
+    sha256 = "0qc5i0ay6j2wab1whl41sjb71cj02pg6y79drf7asrprq8b2rmfq";
+  };
+
+  nativeBuildInputs = [ doxygen wrapGAppsHook ];
+
+  buildInputs = [ gtk3 ];
+
+  propagatedBuildInputs = with python3Packages; [ libopenshot pyqt5_with_qtwebkit requests sip httplib2 pyzmq ];
+
+  dontWrapGApps = true;
+  dontWrapQtApps = true;
+
+  preConfigure = ''
+    # tries to create caching directories during install
+    export HOME=$(mktemp -d)
+  '';
+
+  postFixup = ''
+    wrapProgram $out/bin/openshot-qt \
+      "''${gappsWrapperArgs[@]}" \
+      "''${qtWrapperArgs[@]}"
+  '';
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = "http://openshot.org/";
+    description = "Free, open-source video editor";
+    longDescription = ''
+      OpenShot Video Editor is a free, open-source video editor for Linux.
+      OpenShot can take your videos, photos, and music files and help you
+      create the film you have always dreamed of. Easily add sub-titles,
+      transitions, and effects, and then export your film to DVD, YouTube,
+      Vimeo, Xbox 360, and many other common formats.
+    '';
+    license = with licenses; gpl3Plus;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/openshot-qt/libopenshot-audio.nix b/nixpkgs/pkgs/applications/video/openshot-qt/libopenshot-audio.nix
new file mode 100644
index 000000000000..d1a368b43ba2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/openshot-qt/libopenshot-audio.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, pkgconfig, cmake, doxygen, alsaLib , libX11, libXft, libXrandr, libXinerama, libXext, libXcursor }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  pname = "libopenshot-audio";
+  version = "0.2.0";
+
+  src = fetchFromGitHub {
+    owner = "OpenShot";
+    repo = "libopenshot-audio";
+    rev = "v${version}";
+    sha256 = "13if0m5mvlqly8gmbhschzb9papkgp3yqivklhb949dhy16m8zgf";
+  };
+
+  nativeBuildInputs =
+  [ pkgconfig cmake doxygen ];
+
+  buildInputs =
+  [ alsaLib libX11 libXft libXrandr libXinerama libXext libXcursor ];
+
+  doCheck = false;
+
+  meta = {
+    homepage = "http://openshot.org/";
+    description = "High-quality sound editing library";
+    longDescription = ''
+      OpenShot Audio Library (libopenshot-audio) is a program that allows the
+      high-quality editing and playback of audio, and is based on the amazing
+      JUCE library.
+    '';
+    license = with licenses; gpl3Plus;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/openshot-qt/libopenshot.nix b/nixpkgs/pkgs/applications/video/openshot-qt/libopenshot.nix
new file mode 100644
index 000000000000..e24b6ee41f85
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/openshot-qt/libopenshot.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchFromGitHub
+, pkgconfig, cmake, doxygen
+, libopenshot-audio, imagemagick, ffmpeg_3
+, swig, python3
+, unittest-cpp, cppzmq, zeromq
+, qtbase, qtmultimedia }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  pname = "libopenshot";
+  version = "0.2.5";
+
+  src = fetchFromGitHub {
+    owner = "OpenShot";
+    repo = "libopenshot";
+    rev = "v${version}";
+    sha256 = "1mxjkgjmjzgf628y3rscc6rqf55hxgjpmvwxlncfk1216i5xskwp";
+  };
+
+  patchPhase = ''
+    sed -i 's/{UNITTEST++_INCLUDE_DIR}/ENV{UNITTEST++_INCLUDE_DIR}/g' tests/CMakeLists.txt
+    sed -i 's/{_REL_PYTHON_MODULE_PATH}/ENV{_REL_PYTHON_MODULE_PATH}/g' src/bindings/python/CMakeLists.txt
+    export _REL_PYTHON_MODULE_PATH=$(toPythonPath $out)
+  '';
+
+  nativeBuildInputs = [ pkgconfig cmake doxygen ];
+
+  buildInputs =
+  [ imagemagick ffmpeg_3 swig python3 unittest-cpp
+    cppzmq zeromq qtbase qtmultimedia ];
+
+  LIBOPENSHOT_AUDIO_DIR = libopenshot-audio;
+  "UNITTEST++_INCLUDE_DIR" = "${unittest-cpp}/include/UnitTest++";
+
+  doCheck = false;
+
+  cmakeFlags = [ "-DENABLE_RUBY=OFF" ];
+
+  meta = {
+    homepage = "http://openshot.org/";
+    description = "Free, open-source video editor library";
+    longDescription = ''
+      OpenShot Library (libopenshot) is an open-source project dedicated to
+      delivering high quality video editing, animation, and playback solutions
+      to the world. API currently supports C++, Python, and Ruby.
+    '';
+    license = with licenses; gpl3Plus;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/p2pvc/default.nix b/nixpkgs/pkgs/applications/video/p2pvc/default.nix
new file mode 100644
index 000000000000..91468ea1ee60
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/p2pvc/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, pkgconfig, fetchFromGitHub, opencv2, ncurses, portaudio }:
+
+stdenv.mkDerivation {
+  name = "p2pvc";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ opencv2 ncurses portaudio ];
+
+  enableParallelBuilding = true;
+
+  installPhase = "mkdir -p $out/bin; cp p2pvc $out/bin/";
+
+  src = fetchFromGitHub {
+    owner = "mofarrell";
+    repo = "p2pvc";
+    rev = "d7b1c70288a7750fc8f9a22dbddbe51d34b5b9e5";
+    sha256 = "0d4vvrsjad5gk4rrjwgydn9ffj12jfb4aksw2px6jw75hp9pzmka";
+  };
+
+  meta = {
+    description = "A point to point color terminal video chat";
+    homepage = "https://github.com/mofarrell/p2pvc";
+    license = stdenv.lib.licenses.mit;
+    maintainers = with stdenv.lib.maintainers; [ trino ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/peek/default.nix b/nixpkgs/pkgs/applications/video/peek/default.nix
new file mode 100644
index 000000000000..24c44c248f58
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/peek/default.nix
@@ -0,0 +1,78 @@
+{ stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, gettext
+, desktop-file-utils
+, appstream-glib
+, pkgconfig
+, txt2man
+, gzip
+, vala
+, wrapGAppsHook
+, gsettings-desktop-schemas
+, gtk3
+, glib
+, cairo
+, keybinder3
+, ffmpeg_3
+, python3
+, libxml2
+, gst_all_1
+, which
+, gifski
+}:
+
+stdenv.mkDerivation rec {
+  pname = "peek";
+  version = "1.5.1";
+
+  src = fetchFromGitHub {
+    owner = "phw";
+    repo = "peek";
+    rev = version;
+    sha256 = "1xwlfizga6hvjqq127py8vabaphsny928ar7mwqj9cyqfl6fx41x";
+  };
+
+  nativeBuildInputs = [
+    appstream-glib
+    desktop-file-utils
+    gettext
+    gzip
+    meson
+    ninja
+    libxml2
+    pkgconfig
+    txt2man
+    python3
+    vala
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    cairo
+    glib
+    gsettings-desktop-schemas
+    gtk3
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-good
+    gst_all_1.gst-plugins-ugly
+    keybinder3
+  ];
+
+  postPatch = ''
+    patchShebangs build-aux/meson/postinstall.py data/man/build_man.sh
+  '';
+
+  preFixup = ''
+    gappsWrapperArgs+=(--prefix PATH : ${stdenv.lib.makeBinPath [ which ffmpeg_3 gifski ]})
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/phw/peek";
+    description = "Simple animated GIF screen recorder with an easy to use interface";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ puffnfresh worldofpeace ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/pitivi/default.nix b/nixpkgs/pkgs/applications/video/pitivi/default.nix
new file mode 100644
index 000000000000..276c2fa787f2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/pitivi/default.nix
@@ -0,0 +1,81 @@
+{ stdenv, fetchFromGitHub, fetchurl, pkgconfig, intltool, itstool, python3, wrapGAppsHook
+, python3Packages, gst_all_1, gtk3
+, gobject-introspection, librsvg, gnome3, libnotify, gsound
+, meson, ninja, gsettings-desktop-schemas
+}:
+
+let
+  version = "0.999";
+
+  # gst-transcoder will eventually be merged with gstreamer (according to
+  # gst-transcoder 1.8.0 release notes). For now the only user is pitivi so we
+  # don't bother exposing the package to all of nixpkgs.
+  gst-transcoder = stdenv.mkDerivation rec {
+    version = "1.14.1";
+    pname = "gst-transcoder";
+    src = fetchFromGitHub {
+      owner = "pitivi";
+      repo = "gst-transcoder";
+      rev = version;
+      sha256 = "16skiz9akavssii529v9nr8zd54w43livc14khdyzv164djg9q8f";
+    };
+    nativeBuildInputs = [ pkgconfig meson ninja gobject-introspection python3 ];
+    buildInputs = with gst_all_1; [ gstreamer gst-plugins-base ];
+  };
+
+in python3Packages.buildPythonApplication rec {
+  name = "pitivi-${version}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/pitivi/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
+    sha256 = "0mxp2p4gg976fp1vj3rb5rmpl5mqfzncm9vw2719irl32f1qlvyb";
+  };
+
+  format = "other";
+
+  patches = [
+    # By default, the build picks up environment variables like PYTHONPATH
+    # and saves them to the generated binary. This would make the build-time
+    # dependencies part of the closure so we remove it.
+    ./prevent-closure-contamination.patch
+  ];
+
+  postPatch = ''
+    patchShebangs ./getenvvar.py
+  '';
+
+  nativeBuildInputs = [ meson ninja pkgconfig intltool itstool python3 wrapGAppsHook ];
+
+  buildInputs = [
+    gobject-introspection gtk3 librsvg gnome3.gnome-desktop gsound
+    gnome3.adwaita-icon-theme
+    gsettings-desktop-schemas libnotify
+    gst-transcoder
+  ] ++ (with gst_all_1; [
+    gstreamer gst-editing-services
+    gst-plugins-base (gst-plugins-good.override { gtkSupport = true; })
+    gst-plugins-bad gst-plugins-ugly gst-libav gst-validate
+  ]);
+
+  pythonPath = with python3Packages; [ pygobject3 gst-python pyxdg numpy pycairo matplotlib dbus-python ];
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = "pitivi";
+      versionPolicy = "none"; # we are using dev version, since the stable one is too old
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Non-Linear video editor utilizing the power of GStreamer";
+    homepage = "http://pitivi.org/";
+    longDescription = ''
+      Pitivi is a video editor built upon the GStreamer Editing Services.
+      It aims to be an intuitive and flexible application
+      that can appeal to newbies and professionals alike.
+    '';
+    license = licenses.lgpl21Plus;
+    maintainers = with maintainers; [];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/pitivi/prevent-closure-contamination.patch b/nixpkgs/pkgs/applications/video/pitivi/prevent-closure-contamination.patch
new file mode 100644
index 000000000000..0025ecd0a4cf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/pitivi/prevent-closure-contamination.patch
@@ -0,0 +1,23 @@
+--- a/meson.build
++++ b/meson.build
+@@ -26,15 +26,15 @@
+ geteenvvar = find_program('getenvvar.py')
+ cdata = configuration_data()
+ cdata.set('CONFIGURED_PYTHONPATH',
+-          run_command(geteenvvar, 'PYTHONPATH').stdout().strip())
++          '')
+ cdata.set('CONFIGURED_GI_TYPELIB_PATH',
+-          run_command(geteenvvar, 'GI_TYPELIB_PATH').stdout().strip())
++          '')
+ cdata.set('CONFIGURED_LD_LIBRARY_PATH',
+-          run_command(geteenvvar, 'LD_LIBRARY_PATH').stdout().strip())
++          '')
+ cdata.set('CONFIGURED_GST_PLUGIN_PATH',
+-          run_command(geteenvvar, 'GST_PLUGIN_PATH').stdout().strip())
++          '')
+ cdata.set('CONFIGURED_GST_PLUGIN_SYSTEM_PATH',
+-          run_command(geteenvvar, 'GST_PLUGIN_SYSTEM_PATH').stdout().strip())
++          '')
+ cdata.set('LIBDIR', join_paths(get_option('prefix'), get_option('libdir')))
+ cdata.set('DATADIR', join_paths(get_option('prefix'), get_option('datadir')))
+ cdata.set('PACKAGE_NAME', 'Pitivi')
diff --git a/nixpkgs/pkgs/applications/video/plex-media-player/default.nix b/nixpkgs/pkgs/applications/video/plex-media-player/default.nix
new file mode 100644
index 000000000000..d08a4a852428
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/plex-media-player/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchFromGitHub, fetchurl, pkgconfig, cmake, python3, mkDerivation
+, libX11, libXrandr, qtbase, qtwebchannel, qtwebengine, qtx11extras
+, libvdpau, SDL2, mpv, libGL }:
+let
+  # During compilation, a CMake bundle is downloaded from `artifacts.plex.tv`,
+  # which then downloads a handful of web client-related files. To enable
+  # sandboxed builds, we manually download them and save them so these files
+  # are fetched ahead-of-time instead of during the CMake build. To update
+  # plex-media-player use the update.sh script, so the versions and hashes
+  # for these files are are also updated!
+  depSrcs = import ./deps.nix { inherit fetchurl; };
+in mkDerivation rec {
+  pname = "plex-media-player";
+  version = "2.55.0.1069";
+  vsnHash = "2369bed9";
+
+  src = fetchFromGitHub {
+    owner = "plexinc";
+    repo = "plex-media-player";
+    rev = "v${version}-${vsnHash}";
+    sha256 = "1jq4592sgaia0xy2h7n3vh5i7c84sdh4l64fdc774r4i0bmg66qi";
+  };
+
+  nativeBuildInputs = [ pkgconfig cmake python3 ];
+  buildInputs = [ libX11 libXrandr qtbase qtwebchannel qtwebengine qtx11extras
+                  libvdpau SDL2 mpv libGL ];
+
+  preConfigure = with depSrcs; ''
+    mkdir -p build/dependencies
+    ln -s ${webClient} build/dependencies/buildid-${webClientBuildId}.cmake
+    ln -s ${webClientDesktopHash} build/dependencies/web-client-desktop-${webClientDesktopBuildId}.tar.xz.sha1
+    ln -s ${webClientDesktop} build/dependencies/web-client-desktop-${webClientDesktopBuildId}.tar.xz
+    ln -s ${webClientTvHash} build/dependencies/web-client-tv-${webClientTvBuildId}.tar.xz.sha1
+    ln -s ${webClientTv} build/dependencies/web-client-tv-${webClientTvBuildId}.tar.xz
+  '';
+
+  cmakeFlags = [ "-DCMAKE_BUILD_TYPE=RelWithDebInfo" "-DQTROOT=${qtbase}" ];
+
+  passthru.updateScript = ./update.sh;
+
+  meta = with stdenv.lib; {
+    description = "Streaming media player for Plex";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ kylewlacy ];
+    homepage = "https://plex.tv";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/plex-media-player/deps.nix b/nixpkgs/pkgs/applications/video/plex-media-player/deps.nix
new file mode 100644
index 000000000000..26b57532615a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/plex-media-player/deps.nix
@@ -0,0 +1,28 @@
+{ fetchurl }:
+
+rec {
+  webClientBuildId = "180-afec74de50e175";
+  webClientDesktopBuildId = "4.29.2-e50e175";
+  webClientTvBuildId = "4.29.3-afec74d";
+
+  webClient = fetchurl {
+    url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/buildid.cmake";
+    sha256 = "0rabrg3lk9vgpswk8npa54hzqf2v8ghqqnysxpwn12wrp1pc2rr9";
+  };
+  webClientDesktopHash = fetchurl {
+    url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz.sha1";
+    sha256 = "02b5yq4yc411qlg2dkw5j9lrr3cn2y4d27sin0skf6qza180473g";
+  };
+  webClientDesktop = fetchurl {
+    url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz";
+    sha256 = "0l3xv48kr2rx878a40zrgwif2ga2ikv6fdcbq9pylycnmm41pxmh";
+  };
+  webClientTvHash = fetchurl {
+    url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz.sha1";
+    sha256 = "0wq115y2xrgwqrzr43nhkq8ba237z20yfp426ki2kdypsq8fjqka";
+  };
+  webClientTv = fetchurl {
+    url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz";
+    sha256 = "1wax1qslm226l2w53m2fnl849jw349qhg3rjghx7vip5pmb43vw9";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/plex-media-player/update.sh b/nixpkgs/pkgs/applications/video/plex-media-player/update.sh
new file mode 100755
index 000000000000..a8493a16c989
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/plex-media-player/update.sh
@@ -0,0 +1,71 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl common-updater-scripts nix-prefetch-scripts jq
+
+set -xeuo pipefail
+
+nixpkgs="$(git rev-parse --show-toplevel)"
+
+oldVersion="$(nix-instantiate --eval -E "with import $nixpkgs {}; plex-media-player.version or (builtins.parseDrvName plex-media-player.name).version" | tr -d '"')"
+latestTag="$(curl -s https://api.github.com/repos/plexinc/plex-media-player/tags  | jq -r '.[] | .name' | sort --version-sort | tail -1)"
+latestVersion="$(expr $latestTag : 'v\(.*\)-.*')"
+latestHash="$(expr $latestTag : 'v.*-\(.*\)')"
+
+if [ ! "$oldVersion" = "$latestVersion" ]; then
+  # update default.nix with the new version and hash
+  expectedHash=$(nix-prefetch-git --url https://github.com/plexinc/plex-media-player.git --rev $latestTag --quiet | jq -r '.sha256')
+  update-source-version plex-media-player --version-key=vsnHash "${latestHash}" 0000
+  update-source-version plex-media-player "${latestVersion}" $expectedHash
+
+  # extract the webClientBuildId from the source folder
+  src="$(nix-build --no-out-link $nixpkgs -A plex-media-player.src)"
+  webClientBuildId="$(grep 'set(WEB_CLIENT_BUILD_ID' $src/CMakeModules/WebClient.cmake | cut -d' ' -f2 | tr -d ')')"
+
+  # retreive the included cmake file and hash
+  { read -r webClientBuildIdHash; read -r webClientBuildIdPath; } < \
+    <(nix-prefetch-url --print-path "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/buildid.cmake")
+  webClientDesktopBuildId="$(grep 'set(DESKTOP_VERSION' $webClientBuildIdPath | cut -d' ' -f2 | tr -d ')')"
+  webClientTvBuildId="$(grep 'set(TV_VERSION' $webClientBuildIdPath | cut -d' ' -f2 | tr -d ')')"
+
+  # get the hashes for the other files
+  webClientDesktopHash="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz.sha1")"
+  webClientDesktop="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz")"
+  webClientTvHash="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz.sha1")"
+  webClientTv="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz")"
+
+  # update deps.nix
+  cat > $nixpkgs/pkgs/applications/video/plex-media-player/deps.nix <<EOF
+{ fetchurl }:
+
+rec {
+  webClientBuildId = "${webClientBuildId}";
+  webClientDesktopBuildId = "${webClientDesktopBuildId}";
+  webClientTvBuildId = "${webClientTvBuildId}";
+
+  webClient = fetchurl {
+    url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/buildid.cmake";
+    sha256 = "${webClientBuildIdHash}";
+  };
+  webClientDesktopHash = fetchurl {
+    url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-desktop-\${webClientDesktopBuildId}.tar.xz.sha1";
+    sha256 = "${webClientDesktopHash}";
+  };
+  webClientDesktop = fetchurl {
+    url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-desktop-\${webClientDesktopBuildId}.tar.xz";
+    sha256 = "${webClientDesktop}";
+  };
+  webClientTvHash = fetchurl {
+    url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-tv-\${webClientTvBuildId}.tar.xz.sha1";
+    sha256 = "${webClientTvHash}";
+  };
+  webClientTv = fetchurl {
+    url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-tv-\${webClientTvBuildId}.tar.xz";
+    sha256 = "${webClientTv}";
+  };
+}
+EOF
+
+  git add "$nixpkgs"/pkgs/applications/video/plex-media-player/{default,deps}.nix
+  git commit -m "plex-media-player: ${oldVersion} -> ${latestVersion}"
+else
+  echo "plex-media-player is already up-to-date"
+fi
diff --git a/nixpkgs/pkgs/applications/video/plex-mpv-shim/default.nix b/nixpkgs/pkgs/applications/video/plex-mpv-shim/default.nix
new file mode 100644
index 000000000000..993bdd67b0d0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/plex-mpv-shim/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonApplication, fetchFromGitHub, mpv, requests, python-mpv-jsonipc }:
+
+buildPythonApplication rec {
+  pname = "plex-mpv-shim";
+  version = "1.8.0";
+
+  src = fetchFromGitHub {
+    owner = "iwalton3";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0fi0glnl7nr6754r9jk7d7dsnjbdm7civvhcj2l009yxiv2rxzj3";
+  };
+
+  propagatedBuildInputs = [ mpv requests python-mpv-jsonipc ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/iwalton3/plex-mpv-shim";
+    description = "Allows casting of videos to MPV via the Plex mobile and web app.";
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/pyca/default.nix b/nixpkgs/pkgs/applications/video/pyca/default.nix
new file mode 100644
index 000000000000..0fed17bb9999
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/pyca/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonApplication, fetchFromGitHub, pycurl, dateutil, configobj, sqlalchemy, sdnotify, flask }:
+
+buildPythonApplication rec {
+  pname = "pyca";
+  version = "2.1";
+
+  src = fetchFromGitHub {
+    owner = "opencast";
+    repo = "pyCA";
+    rev = "v${version}";
+    sha256 = "0cvkmdlcax9da9iw4ls73vw0pxvm8wvchab5gwdy9w9ibqdpcmwh";
+  };
+
+  propagatedBuildInputs = [
+    pycurl
+    dateutil
+    configobj
+    sqlalchemy
+    sdnotify
+    flask
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A fully functional Opencast capture agent written in Python";
+    homepage = "https://github.com/opencast/pyCA";
+    license = licenses.lgpl3;
+    maintainers = with maintainers; [ pmiddend ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/video/qarte/default.nix b/nixpkgs/pkgs/applications/video/qarte/default.nix
new file mode 100644
index 000000000000..26b3153019fb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/qarte/default.nix
@@ -0,0 +1,42 @@
+{ mkDerivation, lib, fetchbzr, python3, rtmpdump }:
+
+let
+  pythonEnv = python3.withPackages (ps: with ps; [ pyqt5_with_qtmultimedia ]);
+in mkDerivation {
+  name = "qarte-4.6.0";
+  src = fetchbzr {
+    url = "http://bazaar.launchpad.net/~vincent-vandevyvre/qarte/qarte-4";
+    rev = "22";
+    sha256 = "0v4zpj8w67ydvnmanxbl8pwvn0cfv70c0mlw36a1r4n0rvgxffcn";
+  };
+
+  buildInputs = [ pythonEnv ];
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/bin
+    mv qarte $out/bin/
+    substituteInPlace $out/bin/qarte \
+      --replace '/usr/share' "$out/share"
+
+    mkdir -p $out/share/man/man1/
+    mv qarte.1 $out/share/man/man1/
+
+    mkdir -p $out/share/qarte
+    mv * $out/share/qarte/
+    runHook postInstall
+  '';
+
+  postFixup = ''
+    wrapQtApp $out/bin/qarte \
+      --prefix PATH : ${rtmpdump}/bin
+  '';
+
+  meta = {
+    homepage = "https://launchpad.net/qarte";
+    description = "A recorder for Arte TV Guide and Arte Concert";
+    license = lib.licenses.gpl3;
+    maintainers = with lib.maintainers; [ vbgl ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/qmediathekview/default.nix b/nixpkgs/pkgs/applications/video/qmediathekview/default.nix
new file mode 100644
index 000000000000..7556727a80d3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/qmediathekview/default.nix
@@ -0,0 +1,32 @@
+{ mkDerivation, stdenv, fetchFromGitHub, qtbase, qttools, xz, boost, qmake, pkgconfig }:
+
+mkDerivation rec {
+  pname = "QMediathekView";
+  version = "2019-01-06";
+
+  src = fetchFromGitHub {
+    owner = "adamreichold";
+    repo = pname;
+    rev = "e098aaec552ec4e367078bf19953a08067316b4b";
+    sha256 = "0i9hac9alaajbra3lx23m0iiq6ww4is00lpbzg5x70agjrwj0nd6";
+  };
+
+  postPatch = ''
+    substituteInPlace ${pname}.pro \
+      --replace /usr ""
+  '';
+
+  buildInputs = [ qtbase qttools xz boost ];
+
+  nativeBuildInputs = [ qmake pkgconfig ];
+
+  installFlags = [ "INSTALL_ROOT=$(out)" ];
+
+  meta = with stdenv.lib; {
+    description = "An alternative Qt-based front-end for the database maintained by the MediathekView project";
+    inherit (src.meta) homepage;
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/qstopmotion/default.nix b/nixpkgs/pkgs/applications/video/qstopmotion/default.nix
new file mode 100644
index 000000000000..dbb2128b50bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/qstopmotion/default.nix
@@ -0,0 +1,82 @@
+{ stdenv
+, mkDerivation
+, fetchurl
+, qtbase
+, qtmultimedia
+, qtquickcontrols
+, qtimageformats
+, qtxmlpatterns
+, ffmpeg_3
+, guvcview
+, cmake
+, ninja
+, libxml2
+, gettext
+, pkgconfig
+, libgphoto2
+, gphoto2
+, v4l-utils
+, libv4l
+, pcre
+, qwt
+, extra-cmake-modules
+}:
+
+mkDerivation rec {
+  pname = "qstopmotion";
+  version = "2.4.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/${pname}/Version_${builtins.replaceStrings ["."] ["_"] version}/${pname}-${version}-Source.tar.gz";
+    sha256 = "03r6jxyq0bak2vsy2b78nk27m7fm96hnl8cx11l3l17704j4iglh";
+  };
+
+  buildInputs = [
+    qtbase
+    qtmultimedia
+    qtquickcontrols
+    qtimageformats
+    qtxmlpatterns
+    v4l-utils
+    libv4l
+    pcre
+    ffmpeg_3
+    guvcview
+    qwt
+  ];
+
+  nativeBuildInputs = [
+    pkgconfig
+    cmake
+    extra-cmake-modules
+    ninja
+    gettext
+    libgphoto2
+    gphoto2
+    libxml2
+    libv4l
+  ];
+
+  patchPhase = ''
+    substituteInPlace CMakeLists.txt \
+      --replace "find_package(Qt5 REQUIRED COMPONENTS Core Widgets Xml" \
+                "find_package(Qt5 REQUIRED COMPONENTS Core Widgets Xml Multimedia"
+    grep -rl 'qwt' . | xargs sed -i 's@<qwt/qwt_slider.h>@<qwt_slider.h>@g'
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.qstopmotion.org";
+    description = "Create stopmotion animation with a (web)camera";
+    longDescription = ''
+      Qstopmotion is a tool to create stopmotion
+      animation. Its users are able to create stop-motions from pictures
+      imported from a camera or from the harddrive and export the
+      animation to different video formats such as mpeg or avi.
+    '';
+
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [ maintainers.leenaars ];
+    broken = stdenv.isAarch64;
+    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/quvi/library.nix b/nixpkgs/pkgs/applications/video/quvi/library.nix
new file mode 100644
index 000000000000..c4926bedd727
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/quvi/library.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pkgconfig, lua5, curl, quvi_scripts, libproxy, libgcrypt, glib }:
+
+stdenv.mkDerivation rec {
+  pname = "libquvi";
+  version="0.9.4";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/quvi/libquvi-${version}.tar.xz";
+    sha256 = "1cl1kbgxl1jnx2nwx4z90l0lap09lnnj1fg7hxsxk3m6aj4y4grd";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ lua5 curl quvi_scripts libproxy libgcrypt glib ];
+
+  meta = {
+    description = "Web video downloader";
+    homepage = "http://quvi.sf.net";
+    license = stdenv.lib.licenses.lgpl21Plus;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/quvi/scripts.nix b/nixpkgs/pkgs/applications/video/quvi/scripts.nix
new file mode 100644
index 000000000000..462c2df9962c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/quvi/scripts.nix
@@ -0,0 +1,21 @@
+{stdenv, fetchurl, pkgconfig}:
+
+stdenv.mkDerivation rec {
+  pname = "quvi-scripts";
+  version="0.9.20131130";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/quvi/libquvi-scripts-${version}.tar.xz";
+    sha256 = "1qvp6z5k1qgcys7vf7jd6fm0g07xixmciwj14ypn1kqhmjgizwhp";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = {
+    description = "Web video downloader";
+    homepage = "http://quvi.sf.net";
+    license = stdenv.lib.licenses.lgpl21Plus;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/quvi/tool.nix b/nixpkgs/pkgs/applications/video/quvi/tool.nix
new file mode 100644
index 000000000000..b2746ef82333
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/quvi/tool.nix
@@ -0,0 +1,25 @@
+{stdenv, fetchurl, pkgconfig, lua5, curl, quvi_scripts, libquvi, lua5_sockets, glib, makeWrapper}:
+
+stdenv.mkDerivation rec {
+  pname = "quvi";
+  version="0.9.5";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/quvi/quvi-${version}.tar.xz";
+    sha256 = "1h52s265rp3af16dvq1xlscp2926jqap2l4ah94vrfchv6m1hffb";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ lua5 curl quvi_scripts libquvi glib makeWrapper ];
+  postInstall = ''
+      wrapProgram $out/bin/quvi --set LUA_PATH "${lua5_sockets}/share/lua/${lua5.luaversion}/?.lua"
+  '';
+
+  meta = {
+    description = "Web video downloader";
+    homepage = "http://quvi.sf.net";
+    license = stdenv.lib.licenses.lgpl21Plus;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/screenkey/default.nix b/nixpkgs/pkgs/applications/video/screenkey/default.nix
new file mode 100644
index 000000000000..7e2bc3a3ec0c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/screenkey/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, substituteAll
+, buildPythonApplication
+, fetchFromGitHub
+, distutils_extra
+, setuptools-git
+, intltool
+, pygtk
+, libX11
+, libXtst
+, wrapGAppsHook
+, gnome3
+}:
+buildPythonApplication rec {
+  pname = "screenkey";
+  version = "0.9";
+
+  src = fetchFromGitHub {
+    owner = "wavexx";
+    repo = "screenkey";
+    rev = "screenkey-${version}";
+    sha256 = "14g7fiv9n7m03djwz1pp5034pffi87ssvss9bc1q8vq0ksn23vrw";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./paths.patch;
+      inherit libX11 libXtst;
+    })
+  ];
+
+  nativeBuildInputs = [
+    distutils_extra
+    setuptools-git
+    intltool
+
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gnome3.adwaita-icon-theme
+  ];
+
+  propagatedBuildInputs = [
+    pygtk
+  ];
+
+  # screenkey does not have any tests
+  doCheck = false;
+
+  meta = with lib; {
+    homepage = "https://www.thregr.org/~wavexx/software/screenkey/";
+    description = "A screencast tool to display your keys inspired by Screenflick";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.rasendubi ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/screenkey/paths.patch b/nixpkgs/pkgs/applications/video/screenkey/paths.patch
new file mode 100644
index 000000000000..7e5ed47fc19d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/screenkey/paths.patch
@@ -0,0 +1,20 @@
+--- a/Screenkey/xlib.py
++++ b/Screenkey/xlib.py
+@@ -6,7 +6,7 @@
+ from ctypes import *
+ 
+ ## base X11
+-libX11 = CDLL('libX11.so.6')
++libX11 = CDLL('@libX11@/lib/libX11.so.6')
+ 
+ # types
+ Atom = c_ulong
+@@ -278,7 +278,7 @@
+ 
+ 
+ ## record extensions
+-libXtst = CDLL('libXtst.so.6')
++libXtst = CDLL('@libXtst@/lib/libXtst.so.6')
+ 
+ # types
+ XPointer = String
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/video/shotcut/0001-encodedock.cpp-connect-to-VAAPI-via-DRM-not-X11.patch b/nixpkgs/pkgs/applications/video/shotcut/0001-encodedock.cpp-connect-to-VAAPI-via-DRM-not-X11.patch
new file mode 100644
index 000000000000..475788ba3a40
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/shotcut/0001-encodedock.cpp-connect-to-VAAPI-via-DRM-not-X11.patch
@@ -0,0 +1,33 @@
+From 247baa7e9210bbe5462b6155014c3dcd4a60e56a Mon Sep 17 00:00:00 2001
+From: Peter Simons <simons@cryp.to>
+Date: Tue, 24 Sep 2019 10:27:17 +0200
+Subject: [PATCH] encodedock.cpp: connect to VAAPI via DRM, not X11
+
+---
+ src/docks/encodedock.cpp | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/docks/encodedock.cpp b/src/docks/encodedock.cpp
+index f2d64fc8..63d20787 100644
+--- a/src/docks/encodedock.cpp
++++ b/src/docks/encodedock.cpp
+@@ -766,7 +766,6 @@ Mlt::Properties* EncodeDock::collectProperties(int realtime)
+                     setIfNotSet(p, "pix_fmt", "nv12");
+                 } else if (vcodec.endsWith("_vaapi")) {
+                     setIfNotSet(p, "vprofile", "main");
+-                    setIfNotSet(p, "connection_type", "x11");
+                 }
+             }
+             setIfNotSet(p, "width", ui->widthSpinner->value());
+@@ -1890,7 +1889,7 @@ void EncodeDock::on_hwencodeCheckBox_clicked(bool checked)
+             QStringList args;
+             args << "-hide_banner" << "-f" << "lavfi" << "-i" << "color=s=640x360" << "-frames" << "1" << "-an";
+             if (codec.endsWith("_vaapi"))
+-                args << "-init_hw_device" << "vaapi=vaapi0:,connection_type=x11" << "-filter_hw_device" << "vaapi0" << "-vf" << "format=nv12,hwupload";
++                args << "-init_hw_device" << "vaapi=vaapi0" << "-filter_hw_device" << "vaapi0" << "-vf" << "format=nv12,hwupload";
+             else if (codec == "hevc_qsv")
+                 args << "-load_plugin" << "hevc_hw";
+             args << "-c:v" << codec << "-f" << "rawvideo" << "pipe:";
+-- 
+2.24.1
+
diff --git a/nixpkgs/pkgs/applications/video/shotcut/default.nix b/nixpkgs/pkgs/applications/video/shotcut/default.nix
new file mode 100644
index 000000000000..9c0435a351c8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/shotcut/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, fetchFromGitHub, fetchpatch, mkDerivation, SDL2, frei0r, gettext, mlt
+, jack1, pkgconfig, qtbase, qtmultimedia, qtwebkit, qtx11extras, qtwebsockets
+, qtquickcontrols, qtgraphicaleffects, libmlt, qmake, qttools
+}:
+
+assert stdenv.lib.versionAtLeast libmlt.version "6.18.0";
+assert stdenv.lib.versionAtLeast mlt.version "6.18.0";
+
+mkDerivation rec {
+  pname = "shotcut";
+  version = "20.04.12";
+
+  src = fetchFromGitHub {
+    owner = "mltframework";
+    repo = "shotcut";
+    rev = "v${version}";
+    sha256 = "05yyv9192f722j8fhfjrphxadgp3crvbq4pi23ln560zh9s1m8r4";
+  };
+
+  patches = [ ./0001-encodedock.cpp-connect-to-VAAPI-via-DRM-not-X11.patch ];
+
+  enableParallelBuilding = true;
+  nativeBuildInputs = [ pkgconfig qmake ];
+  buildInputs = [
+    SDL2 frei0r gettext mlt libmlt
+    qtbase qtmultimedia qtwebkit qtx11extras qtwebsockets qtquickcontrols
+    qtgraphicaleffects
+  ];
+
+  NIX_CFLAGS_COMPILE = "-I${libmlt}/include/mlt++ -I${libmlt}/include/mlt";
+  qmakeFlags = [ "QMAKE_LRELEASE=${stdenv.lib.getDev qttools}/bin/lrelease" "SHOTCUT_VERSION=${version}" ];
+
+  prePatch = ''
+    sed 's_shotcutPath, "qmelt"_"${mlt}/bin/melt"_' -i src/jobs/meltjob.cpp
+    sed 's_shotcutPath, "ffmpeg"_"${mlt.ffmpeg}/bin/ffmpeg"_' -i src/jobs/ffmpegjob.cpp
+    sed 's_qApp->applicationDirPath(), "ffmpeg"_"${mlt.ffmpeg}/bin/ffmpeg"_' -i src/docks/encodedock.cpp
+    NICE=$(type -P nice)
+    sed "s_/usr/bin/nice_''${NICE}_" -i src/jobs/meltjob.cpp src/jobs/ffmpegjob.cpp
+  '';
+
+  qtWrapperArgs = [
+    "--prefix FREI0R_PATH : ${frei0r}/lib/frei0r-1"
+    "--prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath [jack1 SDL2]}"
+    "--prefix PATH : ${mlt}/bin"
+    ];
+
+  postInstall = ''
+    mkdir -p $out/share/shotcut
+    cp -r src/qml $out/share/shotcut/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A free, open source, cross-platform video editor";
+    longDescription = ''
+      An official binary for Shotcut, which includes all the
+      dependencies pinned to specific versions, is provided on
+      http://shotcut.org.
+
+      If you encounter problems with this version, please contact the
+      nixpkgs maintainer(s). If you wish to report any bugs upstream,
+      please use the official build from shotcut.org instead.
+    '';
+    homepage = "https://shotcut.org";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ goibhniu woffs peti ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/simplescreenrecorder/default.nix b/nixpkgs/pkgs/applications/video/simplescreenrecorder/default.nix
new file mode 100644
index 000000000000..7176f5e2f09c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/simplescreenrecorder/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, mkDerivation, fetchurl, alsaLib, ffmpeg_3, libjack2, libX11, libXext, qtx11extras
+, libXfixes, libGLU, libGL, pkgconfig, libpulseaudio, qtbase, cmake, ninja
+}:
+
+mkDerivation rec {
+  pname = "simplescreenrecorder";
+  version = "0.3.11";
+
+  src = fetchurl {
+    url = "https://github.com/MaartenBaert/ssr/archive/${version}.tar.gz";
+    sha256 = "0l6irdadqpajvv0dj3ngs1231n559l0y1pykhs2h7526qm4w7xal";
+  };
+
+  cmakeFlags = [ "-DWITH_QT5=TRUE" ];
+
+  patches = [ ./fix-paths.patch ];
+
+  postPatch = ''
+    for i in scripts/ssr-glinject src/AV/Input/GLInjectInput.cpp; do
+      substituteInPlace $i \
+        --subst-var out \
+        --subst-var-by sh ${stdenv.shell}
+    done
+  '';
+
+  nativeBuildInputs = [ pkgconfig cmake ninja ];
+  buildInputs = [
+    alsaLib ffmpeg_3 libjack2 libX11 libXext libXfixes libGLU libGL
+    libpulseaudio qtbase qtx11extras
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A screen recorder for Linux";
+    homepage = "https://www.maartenbaert.be/simplescreenrecorder";
+    license = licenses.gpl3;
+    platforms = [ "x86_64-linux" ];
+    maintainers = [ maintainers.goibhniu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/simplescreenrecorder/fix-paths.patch b/nixpkgs/pkgs/applications/video/simplescreenrecorder/fix-paths.patch
new file mode 100644
index 000000000000..ba02240ce1f2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/simplescreenrecorder/fix-paths.patch
@@ -0,0 +1,35 @@
+diff --git a/scripts/ssr-glinject b/scripts/ssr-glinject
+index 48be48d..5038d4c 100755
+--- a/scripts/ssr-glinject
++++ b/scripts/ssr-glinject
+@@ -59,6 +59,6 @@ do
+ 	fi
+ done
+ 
+-echo "ssr-glinject: LD_PRELOAD = $LD_PRELOAD:libssr-glinject.so"
++echo "ssr-glinject: LD_PRELOAD = $LD_PRELOAD:@out@/lib/libssr-glinject.so"
+ echo "ssr-glinject: command = $@"
+-LD_PRELOAD="$LD_PRELOAD:libssr-glinject.so" "$@"
++LD_PRELOAD="$LD_PRELOAD:@out@/lib/libssr-glinject.so" "$@"
+diff --git a/src/AV/Input/GLInjectInput.cpp b/src/AV/Input/GLInjectInput.cpp
+index 6b378f8..cbcf82b 100644
+--- a/src/AV/Input/GLInjectInput.cpp
++++ b/src/AV/Input/GLInjectInput.cpp
+@@ -96,7 +96,7 @@ void GLInjectInput::SetCapturing(bool capturing) {
+ bool GLInjectInput::LaunchApplication(const QString& channel, bool relax_permissions, const QString& command, const QString& working_directory) {
+ 
+ 	// prepare command
+-	QString full_command = "LD_PRELOAD=\"libssr-glinject.so\" ";
++	QString full_command = "LD_PRELOAD=\"@out@/lib/libssr-glinject.so\" ";
+ 	full_command += "SSR_CHANNEL=\"" + ShellEscape(channel) + "\" ";
+ 	if(relax_permissions)
+ 		full_command += "SSR_STREAM_RELAX_PERMISSIONS=1 ";
+@@ -106,7 +106,7 @@ bool GLInjectInput::LaunchApplication(const QString& channel, bool relax_permiss
+ 	QStringList args;
+ 	args.push_back("-c");
+ 	args.push_back(full_command);
+-	return QProcess::startDetached("/bin/sh", args, working_directory);
++	return QProcess::startDetached("@sh@", args, working_directory);
+ 
+ }
+ 
diff --git a/nixpkgs/pkgs/applications/video/smplayer/default.nix b/nixpkgs/pkgs/applications/video/smplayer/default.nix
new file mode 100644
index 000000000000..85c71e86a649
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/smplayer/default.nix
@@ -0,0 +1,26 @@
+{ lib, mkDerivation, fetchurl, qmake, qtscript }:
+
+mkDerivation rec {
+  pname = "smplayer";
+  version = "20.4.2";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.bz2";
+    sha256 = "0kqdx6q2274gm83rycvdcglka60ymdk4iw2lc39iw7z1zgsv6ky3";
+  };
+
+  buildInputs = [ qtscript ];
+  nativeBuildInputs = [ qmake ];
+
+  dontUseQmakeConfigure = true;
+
+  makeFlags = [ "PREFIX=${placeholder "out"}" ];
+
+  meta = {
+    description = "A complete front-end for MPlayer";
+    longDescription = "Either mplayer or mpv should also be installed for smplayer to play medias";
+    homepage = "https://www.smplayer.info";
+    license = lib.licenses.gpl3Plus;
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/smtube/default.nix b/nixpkgs/pkgs/applications/video/smtube/default.nix
new file mode 100644
index 000000000000..1cd6fb693e81
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/smtube/default.nix
@@ -0,0 +1,28 @@
+{ lib, mkDerivation, fetchurl, qmake, qtscript, qtwebkit }:
+
+mkDerivation rec {
+  version = "20.1.0";
+  pname = "smtube";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/smtube/SMTube/${version}/${pname}-${version}.tar.bz2";
+    sha256 = "00x7gyk06d01hrr1lcqbrffbkkpj2j0j1fy9mkxc7slbzqcl27dz";
+  };
+
+  makeFlags = [
+    "PREFIX=$(out)"
+  ];
+
+  dontUseQmakeConfigure = true;
+
+  nativeBuildInputs = [ qmake ];
+  buildInputs = [ qtscript qtwebkit ];
+
+  meta = with lib; {
+    description = "Play and download Youtube videos";
+    homepage = "http://smplayer.sourceforge.net/smtube.php";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ vbgl ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/streamlink/default.nix b/nixpkgs/pkgs/applications/video/streamlink/default.nix
new file mode 100644
index 000000000000..c1066bf283a4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/streamlink/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, pythonPackages, fetchFromGitHub, rtmpdump, ffmpeg_3 }:
+
+pythonPackages.buildPythonApplication rec {
+  version = "1.4.1";
+  pname = "streamlink";
+
+  src = fetchFromGitHub {
+    owner = "streamlink";
+    repo = "streamlink";
+    rev = version;
+    sha256 = "1q3h48qwf7vs2wnbkwv0xnm6s65mkcyqdz7z6z3vrsmif2sb19l2";
+  };
+
+  checkInputs = with pythonPackages; [ pytest mock requests-mock freezegun ];
+
+  propagatedBuildInputs = (with pythonPackages; [ pycryptodome requests iso-639 iso3166 websocket_client isodate ]) ++ [ rtmpdump ffmpeg_3 ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/streamlink/streamlink";
+    description = "CLI for extracting streams from various websites to video player of your choosing";
+    longDescription = ''
+      Streamlink is a CLI utility that pipes flash videos from online
+      streaming services to a variety of video players such as VLC, or
+      alternatively, a browser.
+
+      Streamlink is a fork of the livestreamer project.
+    '';
+    license = licenses.bsd2;
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = with maintainers; [ dezgeg zraexy enzime ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/subdl/default.nix b/nixpkgs/pkgs/applications/video/subdl/default.nix
new file mode 100644
index 000000000000..b2b020a20d23
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/subdl/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, python3 }:
+
+stdenv.mkDerivation {
+  name = "subdl-0.0pre.2017.11.06";
+
+  src = fetchFromGitHub {
+    owner = "alexanderwink";
+    repo = "subdl";
+    rev = "4cf5789b11f0ff3f863b704b336190bf968cd471";
+    sha256 = "0kmk5ck1j49q4ww0lvas2767kwnzhkq0vdwkmjypdx5zkxz73fn8";
+  };
+
+  meta = {
+    homepage = "https://github.com/alexanderwink/subdl";
+    description = "A command-line tool to download subtitles from opensubtitles.org";
+    platforms = stdenv.lib.platforms.all;
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.exfalso ];
+  };
+
+  buildInputs = [ python3 ];
+
+  installPhase = ''
+    install -vD subdl $out/bin/subdl
+  '';  
+}
diff --git a/nixpkgs/pkgs/applications/video/subtitleeditor/default.nix b/nixpkgs/pkgs/applications/video/subtitleeditor/default.nix
new file mode 100644
index 000000000000..29e2de6b6c0a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/subtitleeditor/default.nix
@@ -0,0 +1,64 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, intltool, file,
+  desktop-file-utils, enchant, gtk3, gtkmm3, gst_all_1, hicolor-icon-theme,
+  libsigcxx, libxmlxx, xdg_utils, isocodes, wrapGAppsHook
+}:
+
+let
+  version = "0.54.0";
+in
+
+stdenv.mkDerivation {
+  pname = "subtitleeditor";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "kitone";
+    repo = "subtitleeditor";
+    rev = version;
+    sha256 = "0vxcscc9m6gymgj173ahk2g9hlk9588z5fdaavmkpyriqdlhwm11";
+  };
+
+  nativeBuildInputs =  [
+    autoreconfHook
+    pkgconfig
+    intltool
+    file
+    wrapGAppsHook
+  ];
+
+  buildInputs =  [
+    desktop-file-utils
+    enchant
+    gtk3
+    gtkmm3
+    gst_all_1.gstreamer
+    gst_all_1.gstreamermm
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+    hicolor-icon-theme
+    libsigcxx
+    libxmlxx
+    xdg_utils
+    isocodes
+  ];
+
+  enableParallelBuilding = true;
+
+  preConfigure = "substituteInPlace ./configure --replace /usr/bin/file ${file}/bin/file";
+
+  configureFlags = [ "--disable-debug" ];
+
+  meta = {
+    description = "GTK 3 application to edit video subtitles";
+    longDescription = ''
+      Subtitle Editor is a GTK 3 tool to edit subtitles for GNU/Linux/*BSD. It
+      can be used for new subtitles or as a tool to transform, edit, correct
+      and refine existing subtitle. This program also shows sound waves, which
+      makes it easier to synchronise subtitles to voices.
+      '';
+    homepage = "http://kitone.github.io/subtitleeditor/";
+    license = stdenv.lib.licenses.gpl3Plus;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.plcplc ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/tartube/default.nix b/nixpkgs/pkgs/applications/video/tartube/default.nix
new file mode 100644
index 000000000000..23ee76eb4693
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/tartube/default.nix
@@ -0,0 +1,74 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, gdk-pixbuf
+, gobject-introspection
+, gtk3
+, libnotify
+, pango
+, python3Packages
+, wrapGAppsHook
+, youtube-dl
+, glib
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "tartube";
+  version = "2.1.0";
+
+  src = fetchFromGitHub {
+    owner = "axcore";
+    repo = "tartube";
+    rev = "v${version}";
+    sha256 = "1klqjwqm29y2f6nc8gn222ykfvb5d64z1w2kifw9bq5bv0np9bda";
+  };
+
+  nativeBuildInputs = [
+    gobject-introspection
+    wrapGAppsHook
+  ];
+
+  strictDeps = false;
+
+  propagatedBuildInputs = with python3Packages; [
+    moviepy
+    pygobject3
+    pyxdg
+    requests
+    feedparser
+    playsound
+  ];
+
+  buildInputs = [
+    gdk-pixbuf
+    gtk3
+    glib
+    libnotify
+    pango
+  ];
+
+  postPatch = ''
+    sed -i "/^\s*install_requires/s/, 'gi'\|'gi', \|'gi'//" setup.py
+  '';
+
+  postInstall = ''
+    mkdir -p $out/share/{man/man1,applications,pixmaps}
+    cp pack/tartube.1 $out/share/man/man1
+    cp pack/tartube.desktop $out/share/applications
+    cp pack/tartube.{png,xpm} $out/share/pixmaps
+  '';
+
+  doCheck = false;
+
+  makeWrapperArgs = [
+    "--prefix PATH : ${stdenv.lib.makeBinPath [ youtube-dl ]}"
+  ];
+
+  meta = with lib; {
+    description = "A GUI front-end for youtube-dl";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ mkg20001 luc65r ];
+    homepage = "https://tartube.sourceforge.io/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/tivodecode/default.nix b/nixpkgs/pkgs/applications/video/tivodecode/default.nix
new file mode 100644
index 000000000000..33e04b77c4b4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/tivodecode/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl }:
+
+let
+  version = "0.2pre4";
+
+in
+
+stdenv.mkDerivation {
+  pname = "tivodecode";
+  inherit version;
+
+  src = fetchurl {
+    url = "mirror://sourceforge/tivodecode/tivodecode/${version}/tivodecode-${version}.tar.gz";
+    sha256 = "1pww5r2iygscqn20a1cz9xbfh18p84a6a5ifg4h5nvyn9b63k23q";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Converts a .TiVo file (produced by TiVoToGo) to a normal MPEG file";
+    homepage = "http://tivodecode.sourceforge.net";
+    platforms = platforms.unix;
+    license = licenses.bsd3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/uvccapture/default.nix b/nixpkgs/pkgs/applications/video/uvccapture/default.nix
new file mode 100644
index 000000000000..f52ffa923d28
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/uvccapture/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchurl, libjpeg }:
+
+let
+  debianPatches = fetchurl {
+    url = "mirror://debian/pool/main/u/uvccapture/uvccapture_0.5-3.debian.tar.gz";
+    sha256 = "0m29by13nw1r8sch366qzdxg5rsd1k766kqg1nj2pdb8f7pwjh9r";
+  };
+
+in
+
+stdenv.mkDerivation {
+  name = "uvccapture-0.5";
+
+  src = fetchurl {
+    url = "mirror://debian/pool/main/u/uvccapture/uvccapture_0.5.orig.tar.gz";
+    sha256 = "1b3akkcmr3brbf93akr8xi20w8zqf2g0qfq928500wy04qi6jqpi";
+  };
+
+  buildInputs = [ libjpeg ];
+
+  patchPhase = ''
+    tar xvf "${debianPatches}"
+    for fname in debian/patches/fix_videodev_include_FTBFS.patch \
+                 debian/patches/warnings.patch \
+                 debian/patches/numbuffers.patch
+    do
+        echo "Applying patch $fname"
+        patch < "$fname"
+    done
+  '';
+
+  makeFlagsArray = [ "PREFIX=$(out)/bin/" ];
+
+  preInstall = ''
+    mkdir -p "$out/bin"
+  '';
+
+  # Upstream has no man page, install one from Debian
+  postInstall = ''
+    mkdir -p "$out/share/man/man1"
+    cp -v debian/uvccapture.1 "$out/share/man/man1/"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Capture image from USB webcam at a specified interval";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/vdr/default.nix b/nixpkgs/pkgs/applications/video/vdr/default.nix
new file mode 100644
index 000000000000..d025554835ef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/vdr/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchurl, fontconfig, libjpeg, libcap, freetype, fribidi, pkgconfig
+, gettext, systemd, perl, lib
+, enableSystemd ? true
+, enableBidi ? true
+}: stdenv.mkDerivation rec {
+
+  pname = "vdr";
+  version = "2.4.1";
+
+  src = fetchurl {
+    url = "ftp://ftp.tvdr.de/vdr/${pname}-${version}.tar.bz2";
+    sha256 = "1p51b14aqzncx3xpfg0rjplc48pg7520035i5p6r5zzkqhszihr5";
+  };
+
+  enableParallelBuilding = true;
+
+  postPatch = "substituteInPlace Makefile --replace libsystemd-daemon libsystemd";
+
+  buildInputs = [ fontconfig libjpeg libcap freetype perl ]
+  ++ lib.optional enableSystemd systemd
+  ++ lib.optional enableBidi fribidi;
+
+  buildFlags = [ "vdr" "i18n" ]
+  ++ lib.optional enableSystemd "SDNOTIFY=1"
+  ++ lib.optional enableBidi "BIDI=1";
+
+  nativeBuildInputs = [ perl ];
+
+  # plugins uses the same build environment as vdr
+  propagatedNativeBuildInputs = [ pkgconfig gettext ];
+
+  installFlags = [
+    "DESTDIR=$(out)"
+    "PREFIX=" # needs to be empty, otherwise plugins try to install at same prefix
+  ];
+
+  installTargets = [ "install-pc" "install-bin" "install-doc" "install-i18n"
+    "install-includes" ];
+
+  postInstall = ''
+    mkdir -p $out/lib/vdr # only needed if vdr is started without any plugin
+    mkdir -p $out/share/vdr/conf
+    cp *.conf $out/share/vdr/conf
+    '';
+
+  outputs = [ "out" "dev" "man" ];
+
+  meta = with lib; {
+    homepage = "http://www.tvdr.de/";
+    description = "Video Disc Recorder";
+    maintainers = [ maintainers.ck3d ];
+    platforms = [ "i686-linux" "x86_64-linux" ];
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/vdr/plugins.nix b/nixpkgs/pkgs/applications/video/vdr/plugins.nix
new file mode 100644
index 000000000000..2ae4cbac4d73
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/vdr/plugins.nix
@@ -0,0 +1,338 @@
+{ stdenv, fetchurl, fetchgit, vdr, alsaLib, fetchFromGitHub
+, libvdpau, libxcb, xcbutilwm, graphicsmagick, libav, pcre, xorgserver, ffmpeg_3
+, libiconv, boost, libgcrypt, perl, utillinux, groff, libva, xorg, ncurses
+, callPackage
+}: let
+  mkPlugin = name: stdenv.mkDerivation {
+    name = "vdr-${vdr.version}-${name}";
+    inherit (vdr) src;
+    buildInputs = [ vdr ];
+    preConfigure = "cd PLUGINS/src/${name}";
+    installFlags = [ "DESTDIR=$(out)" ];
+  };
+in {
+
+  xineliboutput = callPackage ./xineliboutput {};
+
+  skincurses = (mkPlugin "skincurses").overrideAttrs(oldAttr: {
+    buildInputs = oldAttr.buildInputs ++ [ ncurses ];
+  });
+
+  inherit (stdenv.lib.genAttrs [
+    "epgtableid0" "hello" "osddemo" "pictures" "servicedemo" "status" "svdrpdemo"
+  ] mkPlugin);
+
+  femon = stdenv.mkDerivation rec {
+
+    name = "vdr-femon-2.4.0";
+
+    buildInputs = [ vdr ];
+
+    src = fetchurl {
+      url = "http://www.saunalahti.fi/~rahrenbe/vdr/femon/files/${name}.tgz";
+      sha256 = "1hra1xslj8s68zbyr8zdqp8yap0aj1p6rxyc6cwy1j122kwcnapp";
+    };
+
+    postPatch = "substituteInPlace Makefile --replace /bin/true true";
+
+    makeFlags = [ "DESTDIR=$(out)" ];
+
+    meta = with stdenv.lib; {
+      homepage = "http://www.saunalahti.fi/~rahrenbe/vdr/femon/";
+      description = "DVB Frontend Status Monitor plugin for VDR";
+      maintainers = [ maintainers.ck3d ];
+      license = licenses.gpl2;
+      platforms = [ "i686-linux" "x86_64-linux" ];
+    };
+
+  };
+
+  vaapidevice = stdenv.mkDerivation {
+
+    name = "vdr-vaapidevice-0.7.0";
+
+    buildInputs = [
+      vdr libxcb xcbutilwm ffmpeg_3
+      alsaLib
+      libvdpau # vdpau
+      libva # va-api
+    ] ++ (with xorg; [ libxcb libX11 ]);
+
+    makeFlags = [ "DESTDIR=$(out)" ];
+
+    postPatch = ''
+      substituteInPlace softhddev.c --replace /usr/bin/X ${xorgserver}/bin/X
+    '';
+
+    src = fetchFromGitHub {
+      owner = "pesintta";
+      repo = "vdr-plugin-vaapidevice";
+      sha256 = "072y61fpkh3i2dragg0nsd4g3malgwxkwpdrb1ykdljyzf52s5hs";
+      rev = "c99afc23a53e6d91f9afaa99af59b30e68e626a8";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "https://github.com/pesintta/vdr-plugin-vaapidevice";
+      description = "VDR SoftHDDevice Plug-in (with VA-API VPP additions)";
+      maintainers = [ maintainers.ck3d ];
+      license = licenses.gpl2;
+      platforms = [ "i686-linux" "x86_64-linux" ];
+    };
+
+  };
+
+
+  markad = stdenv.mkDerivation rec {
+    name = "vdr-markad-2017-03-13";
+
+    src = fetchgit {
+      url = "git://projects.vdr-developer.org/vdr-plugin-markad.git";
+      sha256 = "0jvy70r8bcmbs7zdqilfz019z5xkz5c6rs57h1dsgv8v6x86c2i4";
+      rev = "ea2e182ec798375f3830f8b794e7408576f139ad";
+    };
+
+    buildInputs = [ vdr libav ];
+
+    postPatch = ''
+      substituteInPlace command/Makefile --replace '$(DESTDIR)/usr' '$(DESTDIR)'
+
+      substituteInPlace plugin/markad.cpp \
+        --replace "/usr/bin" "$out/bin" \
+        --replace "/var/lib/markad" "$out/var/lib/markad"
+
+      substituteInPlace command/markad-standalone.cpp \
+        --replace "/var/lib/markad" "$out/var/lib/markad"
+    '';
+
+    preBuild = ''
+      mkdir -p $out/lib/vdr
+    '';
+
+    buildFlags = [
+      "DESTDIR=$(out)"
+      "LIBDIR=$(out)/lib/vdr"
+      "VDRDIR=${vdr.dev}/include/vdr"
+      "LOCALEDIR=$(DESTDIR)/share/locale"
+    ];
+
+    installFlags = buildFlags;
+
+    meta = with stdenv.lib; {
+      homepage = "https://projects.vdr-developer.org/projects/plg-markad";
+      description = "Ein Programm zum automatischen Setzen von Schnittmarken bei Werbeeinblendungen während einer Sendung.";
+      maintainers = [ maintainers.ck3d ];
+      license = licenses.gpl2;
+      platforms = [ "i686-linux" "x86_64-linux" ];
+    };
+
+  };
+
+  epgsearch = stdenv.mkDerivation rec {
+    pname = "vdr-epgsearch";
+    version = "2.4.0";
+
+    src = fetchurl {
+      url = "https://projects.vdr-developer.org/git/vdr-plugin-epgsearch.git/snapshot/vdr-plugin-epgsearch-${version}.tar.bz2";
+      sha256 = "0xfgn17vicyjwdf0rbkrik4q16mnfi305d4wmi8f0qk825pa0z3y";
+    };
+
+    postPatch = ''
+      for f in *.sh; do
+        patchShebangs "$f"
+      done
+    '';
+
+    nativeBuildInputs = [
+      perl # for pod2man and pos2html
+      utillinux
+      groff
+    ];
+
+    buildInputs = [
+      vdr
+      pcre
+    ];
+
+    buildFlags = [
+      "SENDMAIL="
+      "REGEXLIB=pcre"
+    ];
+
+    installFlags = [
+      "DESTDIR=$(out)"
+    ];
+
+    outputs = [ "out" "man" ];
+
+    meta = with stdenv.lib; {
+      homepage = "http://winni.vdr-developer.org/epgsearch";
+      description = "Searchtimer and replacement of the VDR program menu";
+      maintainers = [ maintainers.ck3d ];
+      license = licenses.gpl2;
+      platforms = [ "i686-linux" "x86_64-linux" ];
+    };
+
+  };
+
+  vnsiserver = let
+    name = "vnsiserver";
+    version = "1.8.0";
+  in stdenv.mkDerivation {
+    name = "vdr-${name}-${version}";
+
+    buildInputs = [ vdr ];
+
+    installFlags = [ "DESTDIR=$(out)" ];
+
+    src = fetchFromGitHub {
+      repo = "vdr-plugin-${name}";
+      owner = "FernetMenta";
+      rev = "v${version}";
+      sha256 = "0n7idpxqx7ayd63scl6xwdx828ik4kb2mwz0c30cfjnmnxxd45lw";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = "https://github.com/FernetMenta/vdr-plugin-vnsiserver";
+      description = "VDR plugin to handle KODI clients.";
+      maintainers = [ maintainers.ck3d ];
+      license = licenses.gpl2;
+      platforms = [ "i686-linux" "x86_64-linux" ];
+    };
+
+  };
+
+  text2skin = stdenv.mkDerivation {
+    name = "vdr-text2skin-1.3.4-20170702";
+
+    src = fetchgit {
+      url = "git://projects.vdr-developer.org/vdr-plugin-text2skin.git";
+      sha256 = "19hkwmaw6nwak38bv6cm2vcjjkf4w5yjyxb98qq6zfjjh5wq54aa";
+      rev = "8f7954da2488ced734c30e7c2704b92a44e6e1ad";
+    };
+
+    buildInputs = [ vdr graphicsmagick ];
+
+    buildFlags = [
+      "DESTDIR=$(out)"
+      "IMAGELIB=graphicsmagic"
+      "VDRDIR=${vdr.dev}/include/vdr"
+      "LOCALEDIR=$(DESTDIR)/share/locale"
+      "LIBDIR=$(DESTDIR)/lib/vdr"
+    ];
+
+    preBuild = ''
+      mkdir -p $out/lib/vdr
+    '';
+
+    installPhase = ":";
+
+    meta = with stdenv.lib; {
+      homepage = "https://projects.vdr-developer.org/projects/plg-text2skin";
+      description = "VDR Text2Skin Plugin";
+      maintainers = [ maintainers.ck3d ];
+      license = licenses.gpl2;
+      platforms = [ "i686-linux" "x86_64-linux" ];
+    };
+  };
+
+  fritzbox = let
+    libconvpp = stdenv.mkDerivation {
+      name = "jowi24-libconv++-20130216";
+      propagatedBuildInputs = [ libiconv ];
+      CXXFLAGS = "-std=gnu++11 -Os";
+      src = fetchFromGitHub {
+        owner = "jowi24";
+        repo = "libconvpp";
+        rev = "90769b2216bc66c5ea5e41a929236c20d367c63b";
+        sha256 = "0bf0dwxrzd42l84p8nxcsjdk1gvzlhad93nsbn97z6kr61n4cr33";
+      };
+      installPhase = ''
+        mkdir -p $out/lib $out/include/libconv++
+        cp source.a $out/lib/libconv++.a
+        cp *.h $out/include/libconv++
+      '';
+    };
+
+    liblogpp = stdenv.mkDerivation {
+      name = "jowi24-liblogpp-20130216";
+      CXXFLAGS = "-std=gnu++11 -Os";
+      src = fetchFromGitHub {
+        owner = "jowi24";
+        repo = "liblogpp";
+        rev = "eee4046d2ae440974bcc8ceec00b069f0a2c62b9";
+        sha256 = "01aqvwmwh5kk3mncqpim8llwha9gj5qq0c4cvqfn4h8wqi3d9l3p";
+      };
+      installPhase = ''
+        mkdir -p $out/lib $out/include/liblog++
+        cp source.a $out/lib/liblog++.a
+        cp *.h $out/include/liblog++
+      '';
+    };
+
+    libnetpp = stdenv.mkDerivation {
+      name = "jowi24-libnet++-20180628";
+      CXXFLAGS = "-std=gnu++11 -Os";
+      src = fetchFromGitHub {
+        owner = "jowi24";
+        repo = "libnetpp";
+        rev = "212847f0efaeffee8422059b8e202d844174aaf3";
+        sha256 = "0vjl6ld6aj25rzxm26yjv3h2gy7gp7qnbinpw6sf1shg2xim9x0b";
+      };
+      installPhase = ''
+        mkdir -p $out/lib $out/include/libnet++
+        cp source.a $out/lib/libnet++.a
+        cp *.h $out/include/libnet++
+      '';
+      buildInputs = [ boost liblogpp libconvpp ];
+    };
+
+    libfritzpp = stdenv.mkDerivation {
+      name = "jowi24-libfritzpp-20131201";
+      CXXFLAGS = "-std=gnu++11 -Os";
+      src = fetchFromGitHub {
+        owner = "jowi24";
+        repo = "libfritzpp";
+        rev = "ca19013c9451cbac7a90155b486ea9959ced0f67";
+        sha256 = "0jk93zm3qzl9z96gfs6xl1c8ip8lckgbzibf7jay7dbgkg9kyjfg";
+      };
+      installPhase = ''
+        mkdir -p $out/lib $out/include/libfritz++
+        cp source.a $out/lib/libfritz++.a
+        cp *.h $out/include/libfritz++
+      '';
+      propagatedBuildInputs = [ libgcrypt ];
+      buildInputs = [ boost liblogpp libconvpp libnetpp ];
+    };
+
+  in stdenv.mkDerivation rec {
+    pname = "vdr-fritzbox";
+
+    version = "1.5.3";
+
+    src = fetchFromGitHub {
+      owner = "jowi24";
+      repo = "vdr-fritz";
+      rev = version;
+      sha256 = "0wab1kyma9jzhm6j33cv9hd2a5d1334ghgdi2051nmr1bdcfcsw8";
+    };
+
+    postUnpack = ''
+      cp ${libfritzpp}/lib/* $sourceRoot/libfritz++
+      cp ${liblogpp}/lib/* $sourceRoot/liblog++
+      cp ${libnetpp}/lib/* $sourceRoot/libnet++
+      cp ${libconvpp}/lib/* $sourceRoot/libconv++
+    '';
+
+    buildInputs = [ vdr boost libconvpp libfritzpp libnetpp liblogpp ];
+
+    installFlags = [ "DESTDIR=$(out)" ];
+
+    meta = with stdenv.lib; {
+      homepage = "https://github.com/jowi24/vdr-fritz";
+      description = "A plugin for VDR to access AVMs Fritz Box routers";
+      maintainers = [ maintainers.ck3d ];
+      license = licenses.gpl2;
+      platforms = [ "i686-linux" "x86_64-linux" ];
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/vdr/wrapper.nix b/nixpkgs/pkgs/applications/video/vdr/wrapper.nix
new file mode 100644
index 000000000000..50d3b9d65a8d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/vdr/wrapper.nix
@@ -0,0 +1,30 @@
+{ symlinkJoin, lib, makeWrapper, vdr
+, plugins ? []
+}: let
+
+  makeXinePluginPath = l: lib.concatStringsSep ":" (map (p: "${p}/lib/xine/plugins") l);
+
+  requiredXinePlugins = lib.flatten (map (p: p.passthru.requiredXinePlugins or []) plugins);
+
+in symlinkJoin {
+
+  name = "vdr-with-plugins-${lib.getVersion vdr}";
+
+  paths = [ vdr ] ++ plugins;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  postBuild = ''
+    wrapProgram $out/bin/vdr \
+      --add-flags "-L $out/lib/vdr --localedir=$out/share/locale" \
+      --prefix XINE_PLUGIN_PATH ":" ${makeXinePluginPath requiredXinePlugins}
+  '';
+
+  meta = with vdr.meta; {
+    inherit license homepage;
+    description = description
+    + " (with plugins: "
+    + lib.concatStrings (lib.intersperse ", " (map (x: ""+x.name) plugins))
+    + ")";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/vdr/xineliboutput/default.nix b/nixpkgs/pkgs/applications/video/vdr/xineliboutput/default.nix
new file mode 100644
index 000000000000..950cb253c129
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/vdr/xineliboutput/default.nix
@@ -0,0 +1,69 @@
+{ stdenv, fetchurl, lib, vdr
+, libav, libcap, libvdpau
+, xineLib, libjpeg, libextractor, libglvnd, libGLU
+, libX11, libXext, libXrender, libXrandr
+, makeWrapper
+}: let
+  makeXinePluginPath = l: lib.concatStringsSep ":" (map (p: "${p}/lib/xine/plugins") l);
+
+  self =  stdenv.mkDerivation rec {
+    pname = "vdr-xineliboutput";
+    version = "2.2.0";
+
+    src = fetchurl {
+      url = "mirror://sourceforge/project/xineliboutput/xineliboutput/${pname}-${version}/${pname}-${version}.tgz";
+      sha256 = "0a24hs5nr7ncf51c5agyfn1xrvb4p70y3i0s6dlyyd9bwbfjldns";
+    };
+
+    postPatch = ''
+      # pkg-config is called with opengl, which do not contain needed glx symbols
+      substituteInPlace configure \
+        --replace "X11  opengl" "X11  gl"
+    '';
+
+    # configure don't accept argument --prefix
+    dontAddPrefix = true;
+
+    postConfigure = ''
+      sed -i config.mak \
+        -e 's,XINEPLUGINDIR=/[^/]*/[^/]*/[^/]*/,XINEPLUGINDIR=/,'
+    '';
+
+    makeFlags = [ "DESTDIR=$(out)" ];
+
+    postFixup = ''
+      for f in $out/bin/*; do
+        wrapProgram $f \
+          --prefix XINE_PLUGIN_PATH ":" "${makeXinePluginPath [ "$out" xineLib ]}"
+      done
+    '';
+
+    nativeBuildInputs = [ makeWrapper ];
+
+    buildInputs = [
+      libav
+      libcap
+      libextractor
+      libjpeg
+      libglvnd
+      libGLU
+      libvdpau
+      libXext
+      libXrandr
+      libXrender
+      libX11
+      vdr
+      xineLib
+    ];
+
+    passthru.requiredXinePlugins = [ xineLib self ];
+
+    meta = with lib;{
+      homepage = "https://sourceforge.net/projects/xineliboutput/";
+      description = "Xine-lib based software output device for VDR";
+      maintainers = [ maintainers.ck3d ];
+      license = licenses.gpl2;
+      inherit (vdr.meta) platforms;
+    };
+  };
+in self
diff --git a/nixpkgs/pkgs/applications/video/vlc/default.nix b/nixpkgs/pkgs/applications/video/vlc/default.nix
new file mode 100644
index 000000000000..91fb36c39748
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/vlc/default.nix
@@ -0,0 +1,103 @@
+{ stdenv, fetchurl, autoreconfHook
+, libarchive, perl, xorg, libdvdnav, libbluray
+, zlib, a52dec, libmad, faad2, ffmpeg_3, alsaLib
+, pkgconfig, dbus, fribidi, freefont_ttf, libebml, libmatroska
+, libvorbis, libtheora, speex, lua5, libgcrypt, libgpgerror, libupnp
+, libcaca, libpulseaudio, flac, schroedinger, libxml2, librsvg
+, mpeg2dec, systemd, gnutls, avahi, libcddb, libjack2, SDL, SDL_image
+, libmtp, unzip, taglib, libkate, libtiger, libv4l, samba, libssh2, liboggz
+, libass, libva, libdvbpsi, libdc1394, libraw1394, libopus
+, libvdpau, libsamplerate, live555, fluidsynth, wayland, wayland-protocols
+, onlyLibVLC ? false
+, withQt5 ? true, qtbase ? null, qtsvg ? null, qtx11extras ? null, wrapQtAppsHook ? null
+, jackSupport ? false
+, removeReferencesTo
+, chromecastSupport ? true, protobuf, libmicrodns
+}:
+
+# chromecastSupport requires TCP port 8010 to be open for it to work.
+# If your firewall is enabled, make sure to have something like:
+#   networking.firewall.allowedTCPPorts = [ 8010 ];
+
+with stdenv.lib;
+
+assert (withQt5 -> qtbase != null && qtsvg != null && qtx11extras != null && wrapQtAppsHook != null);
+
+stdenv.mkDerivation rec {
+  pname = "vlc";
+  version = "3.0.11";
+
+  src = fetchurl {
+    url = "http://get.videolan.org/vlc/${version}/${pname}-${version}.tar.xz";
+    sha256 = "06a9hfl60f6l0fs5c9ma5s8np8kscm4ala6m2pdfji9lyfna351y";
+  };
+
+  # VLC uses a *ton* of libraries for various pieces of functionality, many of
+  # which are not included here for no other reason that nobody has mentioned
+  # needing them
+  buildInputs = [
+    zlib a52dec libmad faad2 ffmpeg_3 alsaLib libdvdnav libdvdnav.libdvdread
+    libbluray dbus fribidi libvorbis libtheora speex lua5 libgcrypt libgpgerror
+    libupnp libcaca libpulseaudio flac schroedinger libxml2 librsvg mpeg2dec
+    systemd gnutls avahi libcddb SDL SDL_image libmtp unzip taglib libarchive
+    libkate libtiger libv4l samba libssh2 liboggz libass libdvbpsi libva
+    xorg.xlibsWrapper xorg.libXv xorg.libXvMC xorg.libXpm xorg.xcbutilkeysyms
+    libdc1394 libraw1394 libopus libebml libmatroska libvdpau libsamplerate
+    fluidsynth wayland wayland-protocols
+  ] ++ optional (!stdenv.hostPlatform.isAarch64) live555
+    ++ optionals withQt5    [ qtbase qtsvg qtx11extras ]
+    ++ optional jackSupport libjack2
+    ++ optionals chromecastSupport [ protobuf libmicrodns ];
+
+  nativeBuildInputs = [ autoreconfHook perl pkgconfig removeReferencesTo ]
+    ++ optionals withQt5 [ wrapQtAppsHook ];
+
+  enableParallelBuilding = true;
+
+  LIVE555_PREFIX = if (!stdenv.hostPlatform.isAarch64) then live555 else null;
+
+  # vlc depends on a c11-gcc wrapper script which we don't have so we need to
+  # set the path to the compiler
+  BUILDCC = "${stdenv.cc}/bin/gcc";
+
+  postPatch = ''
+    substituteInPlace configure \
+      --replace /bin/echo echo
+
+    substituteInPlace modules/text_renderer/freetype/platform_fonts.h --replace \
+      /usr/share/fonts/truetype/freefont ${freefont_ttf}/share/fonts/truetype
+  '';
+
+  # - Touch plugins (plugins cache keyed off mtime and file size:
+  #     https://github.com/NixOS/nixpkgs/pull/35124#issuecomment-370552830
+  # - Remove references to the Qt development headers (used in error messages)
+  postFixup = ''
+    find $out/lib/vlc/plugins -exec touch -d @1 '{}' ';'
+    $out/lib/vlc/vlc-cache-gen $out/vlc/plugins
+  '' + optionalString withQt5 ''
+    remove-references-to -t "${qtbase.dev}" $out/lib/vlc/plugins/gui/libqt_plugin.so
+  '';
+
+  # Most of the libraries are auto-detected so we don't need to set a bunch of
+  # "--enable-foo" flags here
+  configureFlags = [
+    "--with-kde-solid=$out/share/apps/solid/actions"
+  ] ++ optional onlyLibVLC "--disable-vlc"
+    ++ optionals chromecastSupport [
+    "--enable-sout"
+    "--enable-chromecast"
+    "--enable-microdns"
+  ];
+
+  # Remove runtime dependencies on libraries
+  postConfigure = ''
+    sed -i 's|^#define CONFIGURE_LINE.*$|#define CONFIGURE_LINE "<removed>"|g' config.h
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Cross-platform media player and streaming server";
+    homepage = "http://www.videolan.org/vlc/";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/vokoscreen/default.nix b/nixpkgs/pkgs/applications/video/vokoscreen/default.nix
new file mode 100644
index 000000000000..0cd3c814b173
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/vokoscreen/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchFromGitHub, mkDerivation
+, pkgconfig, qtbase, qttools, qmake, qtmultimedia, qtx11extras, alsaLib, libv4l, libXrandr
+, ffmpeg_3
+}:
+
+mkDerivation rec {
+
+  pname = "vokoscreen";
+  version = "2.5.8-beta";
+
+  src = fetchFromGitHub {
+    owner   = "vkohaupt";
+    repo    = "vokoscreen";
+    rev     = version;
+    sha256  = "1a85vbsi53mhzva49smqwcs61c51wv3ic410nvb9is9nlsbifwan";
+  };
+
+  nativeBuildInputs = [ pkgconfig qmake ];
+  buildInputs = [
+    alsaLib
+    libv4l
+    qtbase
+    qtmultimedia
+    qttools
+    qtx11extras
+    libXrandr
+  ];
+
+  patches = [
+    ./ffmpeg-out-of-box.patch
+  ];
+
+  preConfigure = ''
+    sed -i 's/lrelease-qt5/lrelease/g' vokoscreen.pro
+  '';
+
+  postConfigure = ''
+    substituteInPlace settings/QvkSettings.cpp --subst-var-by ffmpeg ${ffmpeg_3}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple GUI screencast recorder, using ffmpeg";
+    homepage = "https://linuxecke.volkoh.de/vokoscreen/vokoscreen.html";
+    longDescription = ''
+      vokoscreen is an easy to use screencast creator to record
+      educational videos, live recordings of browser, installation,
+      videoconferences, etc.
+    '';
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.league ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/vokoscreen/ffmpeg-out-of-box.patch b/nixpkgs/pkgs/applications/video/vokoscreen/ffmpeg-out-of-box.patch
new file mode 100644
index 000000000000..afcee3f9715f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/vokoscreen/ffmpeg-out-of-box.patch
@@ -0,0 +1,24 @@
+diff --git a/settings/QvkSettings.cpp b/settings/QvkSettings.cpp
+index 3008e62..07485bd 100644
+--- a/settings/QvkSettings.cpp
++++ b/settings/QvkSettings.cpp
+@@ -66,17 +66,8 @@ void QvkSettings::readAll()
+       Minimized = settings.value( "Minimized", 0 ).toUInt();
+       MinimizedByStart = settings.value( "MinimizedByStart", 0 ).toUInt();
+       Countdown = settings.value( "Countdown", 0 ).toUInt();
+-      QFile file;
+-      if ( file.exists( qApp->applicationDirPath().append( "/bin/ffmpeg" ) ) == true )
+-      {
+-        vokoscreenWithLibs = true;
+-        Recorder = qApp->applicationDirPath().append( "/bin/ffmpeg" );
+-      }
+-      else
+-      {
+-        vokoscreenWithLibs = false;
+-        Recorder = settings.value( "Recorder", "ffmpeg" ).toString();
+-      }
++      vokoscreenWithLibs = true;
++      Recorder = settings.value( "Recorder", "@ffmpeg@/bin/ffmpeg" ).toString();
+     settings.endGroup();
+     
+     settings.beginGroup( "Videooptions" );
diff --git a/nixpkgs/pkgs/applications/video/w_scan/default.nix b/nixpkgs/pkgs/applications/video/w_scan/default.nix
new file mode 100644
index 000000000000..7710c7d67a31
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/w_scan/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "w_scan";
+  version = "20170107";
+
+  src = fetchurl {
+    url = "http://wirbel.htpc-forum.de/w_scan/${pname}-${version}.tar.bz2";
+    sha256 = "1zkgnj2sfvckix360wwk1v5s43g69snm45m0drnzyv7hgf5g7q1q";
+  };
+
+  meta = {
+    description = "Small CLI utility to scan DVB and ATSC transmissions";
+    homepage = "http://wirbel.htpc-forum.de/w_scan/index_en.html";
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.nico202 ] ;
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/webcamoid/default.nix b/nixpkgs/pkgs/applications/video/webcamoid/default.nix
new file mode 100644
index 000000000000..41304c21ac30
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/webcamoid/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub, pkgconfig, libxcb, mkDerivation, qmake
+, qtbase, qtdeclarative, qtquickcontrols, qtquickcontrols2
+, ffmpeg-full, gstreamer, gst_all_1, libpulseaudio, alsaLib, jack2
+, v4l-utils }:
+mkDerivation rec {
+  pname = "webcamoid";
+  version = "8.7.1";
+
+  src = fetchFromGitHub {
+    sha256 = "1d8g7mq0wf0ycds87xpdhr3zkljgjmb94n3ak9kkxj2fqp9242d2";
+    rev = version;
+    repo = "webcamoid";
+    owner = "webcamoid";
+  };
+
+  buildInputs = [
+    libxcb
+    qtbase qtdeclarative qtquickcontrols qtquickcontrols2
+    ffmpeg-full
+    gstreamer gst_all_1.gst-plugins-base
+    alsaLib libpulseaudio jack2
+    v4l-utils
+  ];
+
+  nativeBuildInputs = [ pkgconfig qmake ];
+
+  qmakeFlags = [
+    "Webcamoid.pro"
+    "INSTALLQMLDIR=${placeholder "out"}/lib/qt/qml"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Webcam Capture Software";
+    longDescription = "Webcamoid is a full featured and multiplatform webcam suite.";
+    homepage = "https://github.com/webcamoid/webcamoid/";
+    license = [ licenses.gpl3Plus ];
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ robaca ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/webtorrent_desktop/default.nix b/nixpkgs/pkgs/applications/video/webtorrent_desktop/default.nix
new file mode 100644
index 000000000000..24c17daa759d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/webtorrent_desktop/default.nix
@@ -0,0 +1,88 @@
+{
+  alsaLib, atk, cairo, cups, dbus, dpkg, expat, fetchurl, fontconfig, freetype,
+  gdk-pixbuf, glib, gnome2, libX11, libXScrnSaver, libXcomposite, libXcursor,
+  libXdamage, libXext, libXfixes, libXi, libXrandr, libXrender, libXtst,
+  libxcb, nspr, nss, stdenv, udev
+}:
+
+  let
+    rpath = stdenv.lib.makeLibraryPath ([
+    alsaLib
+    atk
+    cairo
+    cups
+    dbus
+    expat
+    fontconfig
+    freetype
+    gdk-pixbuf
+    glib
+    gnome2.GConf
+    gnome2.gtk
+    gnome2.pango
+    libX11
+    libXScrnSaver
+    libXcomposite
+    libXcursor
+    libXdamage
+    libXext
+    libXfixes
+    libXi
+    libXrandr
+    libXrender
+    libXtst
+    libxcb
+    nspr
+    nss
+    stdenv.cc.cc
+    udev
+    ]);
+  in stdenv.mkDerivation rec {
+    pname = "webtorrent-desktop";
+    version = "0.20.0";
+
+    src =
+      if stdenv.hostPlatform.system == "x86_64-linux" then
+        fetchurl {
+          url = "https://github.com/webtorrent/webtorrent-desktop/releases/download/v0.20.0/webtorrent-desktop_${version}-1_amd64.deb";
+          sha256 = "1kkrnbimiip5pn2nwpln35bbdda9gc3cgrjwphq4fqasbjf2781k";
+        }
+        else
+          throw "Webtorrent is not currently supported on ${stdenv.hostPlatform.system}";
+    phases = [ "unpackPhase" "installPhase" ];
+    nativeBuildInputs = [ dpkg ];
+    unpackPhase = "dpkg-deb -x $src .";
+    installPhase = ''
+      mkdir -p $out
+      cp -R opt $out
+
+      mv ./usr/share $out/share
+      mv $out/opt/webtorrent-desktop $out/libexec
+      chmod +x $out/libexec/WebTorrent
+      rmdir $out/opt
+
+      chmod -R g-w $out
+
+      # Patch WebTorrent
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+               --set-rpath ${rpath}:$out/libexec $out/libexec/WebTorrent
+
+      # Symlink to bin
+      mkdir -p $out/bin
+      ln -s $out/libexec/WebTorrent $out/bin/WebTorrent
+
+      # Fix the desktop link
+      substituteInPlace $out/share/applications/webtorrent-desktop.desktop \
+        --replace /opt/webtorrent-desktop $out/bin
+    '';
+
+    meta = with stdenv.lib; {
+      description = "Streaming torrent app for Mac, Windows, and Linux.";
+      homepage = "https://webtorrent.io/desktop";
+      license = licenses.mit;
+      maintainers = [ maintainers.flokli ];
+      platforms = [
+        "x86_64-linux"
+      ];
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/video/wf-recorder/default.nix b/nixpkgs/pkgs/applications/video/wf-recorder/default.nix
new file mode 100644
index 000000000000..09b67149f5a9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/wf-recorder/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, meson, ninja, pkg-config, wayland, scdoc
+, wayland-protocols, ffmpeg, x264, libpulseaudio, ocl-icd, opencl-headers
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wf-recorder";
+  version = "0.2.1";
+
+  src = fetchFromGitHub {
+    owner = "ammen99";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1cw6kpcbl33wh95pvy32xrsrm6kkk1awccr3phyh885xjs3b3iim";
+  };
+
+  nativeBuildInputs = [ meson ninja pkg-config wayland scdoc ];
+  buildInputs = [
+    wayland-protocols ffmpeg x264 libpulseaudio ocl-icd opencl-headers
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Utility program for screen recording of wlroots-based compositors";
+    inherit (src.meta) homepage;
+    changelog = "https://github.com/ammen99/wf-recorder/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ primeos CrazedProgrammer ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/wxcam/default.nix b/nixpkgs/pkgs/applications/video/wxcam/default.nix
new file mode 100644
index 000000000000..32712d5b9b07
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/wxcam/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchurl
+, pkgconfig
+, intltool
+, libX11, libXv, libSM
+, gtk, libglade
+, wxGTK
+, perlPackages
+, xvidcore
+, mjpegtools
+, alsaLib
+, libv4l
+, cimg }:
+
+stdenv.mkDerivation rec {
+
+  pname = "wxcam";
+  version = "1.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/wxcam/wxcam/${version}/${pname}-${version}.tar.gz";
+    sha256 = "1765bvc65fpzn9ycnnj5hais9xkx9v0sm6a878d35x54bpanr859";
+  };
+
+  buildInputs = with stdenv.lib;
+  [ pkgconfig intltool libX11 libXv libSM gtk libglade wxGTK perlPackages.XMLParser xvidcore mjpegtools alsaLib libv4l cimg ];
+
+  NIX_CFLAGS_COMPILE="-I ${cimg}/include/cimg";
+
+  postUnpack = ''
+    sed -ie 's|/usr/share/|'"$out/share/"'|g' $sourceRoot/Makefile.in
+  '';
+
+  installPhase = ''
+    make install prefix="$out" wxcamdocdir="$out/share/doc/wxcam"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An open-source, wxGTK-based webcam app for Linux";
+    longDescription = ''
+    wxCam is a webcam application for linux. It supports video recording
+    (avi uncompressed and Xvid formats), snapshot taking, and some special
+    commands for philips webcams, so you can also use it for astronomy purposes.
+    It supports both video4linux 1 and 2 drivers,
+    so it should work on a very large number of devices.
+    '';
+    homepage = "http://wxcam.sourceforge.net/";
+    license = licenses.gpl3Plus;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/xawtv/default.nix b/nixpkgs/pkgs/applications/video/xawtv/default.nix
new file mode 100644
index 000000000000..a82ea0444073
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/xawtv/default.nix
@@ -0,0 +1,60 @@
+{ stdenv
+, fetchurl
+, ncurses
+, libjpeg
+, libX11
+, libXt
+, alsaLib
+, aalib
+, libXft
+, xorgproto
+, libv4l
+, libFS
+, libXaw
+, libXpm
+, libXext
+, libSM
+, libICE
+, perl
+}:
+
+stdenv.mkDerivation rec {
+  name = "xawtv-3.107";
+
+  src = fetchurl {
+    url = "https://linuxtv.org/downloads/xawtv/${name}.tar.bz2";
+    sha256 = "055p0wia0xsj073l8mg4ifa6m81dmv6p45qyh99brramq5iylfy5";
+  };
+
+  buildInputs = [
+    ncurses
+    libjpeg
+    libX11
+    libXt
+    libXft
+    xorgproto
+    libFS
+    perl
+    alsaLib
+    aalib
+    libXaw
+    libXpm
+    libXext
+    libSM
+    libICE
+    libv4l
+  ];
+
+  makeFlags = [
+    "SUID_ROOT=" # do not try to setuid
+    "resdir=${placeholder ''out''}/share/X11"
+  ];
+
+  meta = {
+    description = "TV application for Linux with apps and tools such as a teletext browser";
+    license = stdenv.lib.licenses.gpl2;
+    homepage = "https://www.kraxel.org/blog/linux/xawtv/";
+    maintainers = with stdenv.lib.maintainers; [ domenkozar ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/xine-ui/default.nix b/nixpkgs/pkgs/applications/video/xine-ui/default.nix
new file mode 100644
index 000000000000..f52db04928a4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/xine-ui/default.nix
@@ -0,0 +1,34 @@
+{stdenv, fetchurl, pkgconfig, xorg, libpng, xineLib, readline, ncurses, curl
+, lirc, shared-mime-info, libjpeg }:
+
+stdenv.mkDerivation rec {
+  name = "xine-ui-0.99.12";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/xine/${name}.tar.xz";
+    sha256 = "10zmmss3hm8gjjyra20qhdc0lb1m6sym2nb2w62bmfk8isfw9gsl";
+  };
+
+  nativeBuildInputs = [ pkgconfig shared-mime-info ];
+
+  buildInputs =
+    [ xineLib libpng readline ncurses curl lirc libjpeg
+      xorg.xlibsWrapper xorg.libXext xorg.libXv xorg.libXxf86vm xorg.libXtst xorg.xorgproto
+      xorg.libXinerama xorg.libXi xorg.libXft
+    ];
+
+  patchPhase = ''sed -e '/curl\/types\.h/d' -i src/xitk/download.c'';
+
+  configureFlags = [ "--with-readline=${readline.dev}" ];
+
+  LIRC_CFLAGS="-I${lirc}/include";
+  LIRC_LIBS="-L ${lirc}/lib -llirc_client";
+#NIX_LDFLAGS = "-lXext -lgcc_s";
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.xine-project.org/";
+    description = "Xlib-based interface to Xine, a video player";
+    platforms = platforms.linux;
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/xscast/default.nix b/nixpkgs/pkgs/applications/video/xscast/default.nix
new file mode 100644
index 000000000000..f9e6a3d6521f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/xscast/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, makeWrapper, ffmpeg_3, imagemagick, dzen2, xorg }:
+
+stdenv.mkDerivation {
+  pname = "xscast-unstable";
+  version = "2016-07-26";
+
+  src = fetchFromGitHub {
+    owner = "KeyboardFire";
+    repo = "xscast";
+    rev = "9e6fd3c28d3f5ae630619f6dbccaf1f6ca594b21";
+    sha256 = "0br27bq9bpglfdpv63h827bipgvhlh10liyhmhcxls4227kagz72";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm755 xscast.sh $out/bin/xscast
+    install -Dm644 xscast.1 $out/share/man/man1/xscast.1
+    patchShebangs $out/bin
+
+    wrapProgram "$out/bin/xscast" \
+      --prefix PATH : ${stdenv.lib.makeBinPath [ ffmpeg_3 dzen2 xorg.xwininfo xorg.xinput xorg.xmodmap imagemagick ]}
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/KeyboardFire/xscast";
+    license = licenses.mit;
+    description = "Screencasts of windows with list of keystrokes overlayed";
+    maintainers = with maintainers; [ ma27 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/xvidcap/default.nix b/nixpkgs/pkgs/applications/video/xvidcap/default.nix
new file mode 100644
index 000000000000..20d4d84741cc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/xvidcap/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, perlPackages, pkgconfig, gtk2
+, scrollkeeper, libglade, libXmu, libX11, libXext, gettext
+, lame, libXfixes, libXdamage }:
+
+stdenv.mkDerivation {
+  name = "xvidcap-1.1.7";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/xvidcap/xvidcap-1.1.7.tar.gz";
+    sha256 = "0p8rhpyhxgy37crf1xk1046z4p663jg7ww776jw92pld3s024ihm";
+  };
+
+  patches = [ ./xlib.patch ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    gtk2 scrollkeeper
+    libglade libXmu gettext lame libXdamage libXfixes libXext libX11
+  ] ++ (with perlPackages; [ perl XMLParser ]);
+
+  # !!! don't know why this is necessary
+  NIX_LDFLAGS = "-lXext -lX11 -lz -lgcc_s";
+
+  meta = with stdenv.lib; {
+    description = "Screencast video catpuring tool";
+    homepage = "http://xvidcap.sourceforge.net/";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/xvidcap/xlib.patch b/nixpkgs/pkgs/applications/video/xvidcap/xlib.patch
new file mode 100644
index 000000000000..eb97854386b2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/xvidcap/xlib.patch
@@ -0,0 +1,15 @@
+diff --git a/src/app_data.c b/src/app_data.c
+index 5a44363..482b115 100644
+--- a/src/app_data.c
++++ b/src/app_data.c
+@@ -52,9 +52,9 @@
+ #include <pthread.h>
+ #include <signal.h>
+ 
++#include <X11/Xlib.h>
+ #ifdef HAVE_LIBXFIXES
+ #include <X11/X.h>
+-#include <X11/Xlib.h>
+ #include <X11/Xlibint.h>
+ #include <X11/Xproto.h>
+ #include <X11/Xutil.h>
diff --git a/nixpkgs/pkgs/applications/virtualization/8086tiny/builder.sh b/nixpkgs/pkgs/applications/virtualization/8086tiny/builder.sh
new file mode 100644
index 000000000000..210f11e1328d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/8086tiny/builder.sh
@@ -0,0 +1,30 @@
+
+source $stdenv/setup
+
+unpackPhase
+cd $sourceRoot
+
+make 8086tiny
+
+if [ $bios ]; then
+    cd bios_source
+    nasm -f bin bios.asm -o bios
+    cd ..
+fi
+
+mkdir -p $out/bin $out/share/$name $out/share/doc/$name/images
+
+install -m 755 8086tiny $out/bin
+install -m 644 fd.img $out/share/$name/8086tiny-floppy.img
+install -m 644 bios_source/bios.asm  $out/share/$name/8086tiny-bios-src.asm
+install -m 644 docs/8086tiny.css  $out/share/doc/$name
+install -m 644 docs/doc.html  $out/share/doc/$name
+for i in docs/images/*.gif
+do
+    install -m 644 $i $out/share/doc/$name/images
+done
+if [ $bios ]; then
+    install -m 644 bios_source/bios $out/share/$name/8086tiny-bios
+else
+    install -m 644 bios $out/share/$name/8086tiny-bios
+fi
diff --git a/nixpkgs/pkgs/applications/virtualization/8086tiny/default.nix b/nixpkgs/pkgs/applications/virtualization/8086tiny/default.nix
new file mode 100644
index 000000000000..db76efb96e5f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/8086tiny/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub
+, localBios ? true, nasm ? null
+, sdlSupport ? true, SDL ? null }:
+
+assert sdlSupport -> (SDL != null);
+
+stdenv.mkDerivation rec {
+
+  pname = "8086tiny";
+  version = "1.25";
+
+  src = fetchFromGitHub {
+    owner = "adriancable";
+    repo = pname;
+    rev = "c79ca2a34d96931d55ef724c815b289d0767ae3a";
+    sha256 = "00aydg8f28sgy8l3rd2a7jvp56lx3b63hhak43p7g7vjdikv495w";
+  };
+
+  buildInputs = with stdenv.lib;
+  optionals localBios [ nasm ]
+  ++  optionals sdlSupport [ SDL ];
+  
+  bios = localBios;
+  
+  builder = ./builder.sh;
+
+  meta = with stdenv.lib; {
+    description = "An open-source small 8086 emulator";
+    longDescription = ''
+      8086tiny is a tiny, open-source (MIT), portable (little-endian hosts)
+      Intel PC emulator, powerful enough to run DOS, Windows 3.0, Excel, MS
+      Flight Simulator, AutoCAD, Lotus 1-2-3, and similar applications. 8086tiny
+      emulates a "late 80's era" PC XT-type machine.
+
+      8086tiny is based on an IOCCC 2013 winning entry. In fact that is the
+      "unobfuscated" version :)
+    '';
+    homepage = "https://github.com/adriancable/8086tiny";
+    license = licenses.mit;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/OVMF/default.nix b/nixpkgs/pkgs/applications/virtualization/OVMF/default.nix
new file mode 100644
index 000000000000..19ba8ced4973
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/OVMF/default.nix
@@ -0,0 +1,62 @@
+{ stdenv, lib, edk2, utillinux, nasm, iasl
+, csmSupport ? false, seabios ? null
+, secureBoot ? false
+}:
+
+assert csmSupport -> seabios != null;
+
+let
+
+  projectDscPath = if stdenv.isi686 then
+    "OvmfPkg/OvmfPkgIa32.dsc"
+  else if stdenv.isx86_64 then
+    "OvmfPkg/OvmfPkgX64.dsc"
+  else if stdenv.isAarch64 then
+    "ArmVirtPkg/ArmVirtQemu.dsc"
+  else
+    throw "Unsupported architecture";
+
+  version = lib.getVersion edk2;
+in
+
+edk2.mkDerivation projectDscPath {
+  name = "OVMF-${version}";
+
+  outputs = [ "out" "fd" ];
+
+  buildInputs = [ utillinux nasm iasl ];
+
+  hardeningDisable = [ "format" "stackprotector" "pic" "fortify" ];
+
+  buildFlags =
+    lib.optional secureBoot "-DSECURE_BOOT_ENABLE=TRUE"
+    ++ lib.optionals csmSupport [ "-D CSM_ENABLE" "-D FD_SIZE_2MB" ];
+
+  postPatch = lib.optionalString csmSupport ''
+    cp ${seabios}/Csm16.bin OvmfPkg/Csm/Csm16/Csm16.bin
+  '';
+
+  postFixup = if stdenv.isAarch64 then ''
+    mkdir -vp $fd/FV
+    mkdir -vp $fd/AAVMF
+    mv -v $out/FV/QEMU_{EFI,VARS}.fd $fd/FV
+
+    # Uses Fedora dir layout: https://src.fedoraproject.org/cgit/rpms/edk2.git/tree/edk2.spec
+    # FIXME: why is it different from Debian dir layout? https://salsa.debian.org/qemu-team/edk2/blob/debian/debian/rules
+    dd of=$fd/AAVMF/QEMU_EFI-pflash.raw       if=/dev/zero bs=1M    count=64
+    dd of=$fd/AAVMF/QEMU_EFI-pflash.raw       if=$fd/FV/QEMU_EFI.fd conv=notrunc
+    dd of=$fd/AAVMF/vars-template-pflash.raw if=/dev/zero bs=1M    count=64
+  '' else ''
+    mkdir -vp $fd/FV
+    mv -v $out/FV/OVMF{,_CODE,_VARS}.fd $fd/FV
+  '';
+
+  dontPatchELF = true;
+
+  meta = {
+    description = "Sample UEFI firmware for QEMU and KVM";
+    homepage = "https://github.com/tianocore/tianocore.github.io/wiki/OVMF";
+    license = stdenv.lib.licenses.bsd2;
+    platforms = ["x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin"];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/aqemu/default.nix b/nixpkgs/pkgs/applications/virtualization/aqemu/default.nix
new file mode 100644
index 000000000000..9177f2645028
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/aqemu/default.nix
@@ -0,0 +1,26 @@
+{ mkDerivation, cmake, fetchFromGitHub, libvncserver, qemu, qtbase, stdenv
+}:
+
+mkDerivation rec {
+  pname = "aqemu";
+  version = "0.9.2";
+
+  src = fetchFromGitHub {
+    owner = "tobimensch";
+    repo = "aqemu";
+    rev = "v${version}";
+    sha256 = "1h1mcw8x0jir5p39bs8ka0lcisiyi4jq61fsccgb9hsvl1i8fvk5";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ libvncserver qtbase qemu ];
+
+  meta = with stdenv.lib; {
+    description = "A virtual machine manager GUI for qemu";
+    homepage = "https://github.com/tobimensch/aqemu";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ hrdinka ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/arion/default.nix b/nixpkgs/pkgs/applications/virtualization/arion/default.nix
new file mode 100644
index 000000000000..f144ec976779
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/arion/default.nix
@@ -0,0 +1,83 @@
+{ pkgs
+, lib
+, haskellPackages
+, haskell
+, runCommand
+}:
+
+let
+
+  /* This derivation builds the arion tool.
+
+     It is based on the arion-compose Haskell package, but adapted and extended to
+       - have the correct name
+       - have a smaller closure size
+       - have functions to use Arion from inside Nix: arion.eval and arion.build
+       - make it self-contained by including docker-compose
+   */
+  arion =
+    justStaticExecutables (
+      overrideCabal
+        arion-compose
+        cabalOverrides
+      );
+
+  inherit (haskell.lib) justStaticExecutables overrideCabal;
+
+  inherit (haskellPackages) arion-compose;
+
+  cabalOverrides = o: {
+    buildTools = (o.buildTools or []) ++ [pkgs.makeWrapper];
+    passthru = (o.passthru or {}) // {
+      inherit eval build;
+    };
+    # Patch away the arion-compose name. Unlike the Haskell library, the program
+    # is called arion (arion was already taken on hackage).
+    pname = "arion";
+    src = arion-compose.src;
+
+    # PYTHONPATH
+    #
+    # We close off the python module search path!
+    #
+    # Accepting directories from the environment into the search path
+    # tends to break things. Docker Compose does not have a plugin
+    # system as far as I can tell, so I don't expect this to break a
+    # feature, but rather to make the program more robustly self-
+    # contained.
+
+    postInstall = ''${o.postInstall or ""}
+      mkdir -p $out/libexec
+      mv $out/bin/arion $out/libexec
+      makeWrapper $out/libexec/arion $out/bin/arion \
+        --unset PYTHONPATH \
+        --prefix PATH : ${lib.makeBinPath [ pkgs.docker-compose ]} \
+        ;
+    '';
+  };
+
+  # Unpacked sources for evaluation by `eval`
+  srcUnpacked = runCommand "arion-src" {}
+    "mkdir $out; tar -C $out --strip-components=1 -xf ${arion-compose.src}";
+
+  /* Function for evaluating a composition
+
+     Re-uses this Nixpkgs evaluation instead of `arion-pkgs.nix`.
+
+     Returns the module system's `config` and `options` variables.
+   */
+  eval = args@{...}:
+    import (srcUnpacked + "/src/nix/eval-composition.nix")
+      ({ inherit pkgs; } // args);
+
+  /* Function to derivation of the docker compose yaml file
+     NOTE: The output will change: https://github.com/hercules-ci/arion/issues/82
+
+    This function is particularly useful on CI, although the references
+    to image tarballs may not always be desirable.
+   */
+  build = args@{...}:
+    let composition = eval args;
+    in composition.config.out.dockerComposeYaml;
+
+in arion
diff --git a/nixpkgs/pkgs/applications/virtualization/bochs/bochs-2.6.11-glibc-2.26.patch b/nixpkgs/pkgs/applications/virtualization/bochs/bochs-2.6.11-glibc-2.26.patch
new file mode 100644
index 000000000000..e662913574db
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/bochs/bochs-2.6.11-glibc-2.26.patch
@@ -0,0 +1,13 @@
+diff -Naur bochs-2.6.10.orig/iodev/network/slirp/slirp.h bochs-2.6.10.mod/iodev/network/slirp/slirp.h
+--- bochs-2.6.10.orig/iodev/network/slirp/slirp.h	2019-11-02 16:30:39.843938000 -0300
++++ bochs-2.6.10.mod/iodev/network/slirp/slirp.h	2019-12-29 12:55:49.541630697 -0300
+@@ -44,8 +44,8 @@
+ #endif
+ 
+ #include <sys/types.h>
+-#if defined(__OpenBSD__) || defined(__linux__)
+ #include <stdint.h>
++#if defined(__OpenBSD__) || defined(__linux__)
+ #include <sys/wait.h>
+ #endif
+ #ifdef HAVE_SYS_BITYPES_H
diff --git a/nixpkgs/pkgs/applications/virtualization/bochs/default.nix b/nixpkgs/pkgs/applications/virtualization/bochs/default.nix
new file mode 100644
index 000000000000..e9982d61391d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/bochs/default.nix
@@ -0,0 +1,129 @@
+{ stdenv, fetchurl
+, pkgconfig, libtool
+, gtk2, libGLU, libGL, readline, libX11, libXpm
+, docbook_xml_dtd_45, docbook_xsl
+, sdlSupport ? true, SDL2 ? null
+, termSupport ? true, ncurses ? null
+, wxSupport ? true, wxGTK ? null
+, wgetSupport ? false, wget ? null
+, curlSupport ? false, curl ? null
+}:
+
+assert sdlSupport -> (SDL2 != null);
+assert termSupport -> (ncurses != null);
+assert wxSupport -> (gtk2 != null && wxGTK != null);
+assert wgetSupport -> (wget != null);
+assert curlSupport -> (curl != null);
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+
+  pname = "bochs";
+  version = "2.6.11";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/bochs/bochs/${version}/${pname}-${version}.tar.gz";
+    sha256 = "0ql8q6y1k356li1g9gbvl21448mlxphxxi6kjb2b3pxvzd0pp2b3";
+  };
+
+  patches = [ ./bochs-2.6.11-glibc-2.26.patch ./fix-build-smp.patch ];
+
+  buildInputs =
+  [ pkgconfig libtool gtk2 libGLU libGL readline libX11 libXpm docbook_xml_dtd_45 docbook_xsl ]
+  ++ optionals termSupport [ ncurses ]
+  ++ optionals sdlSupport [ SDL2 ]
+  ++ optionals wxSupport [ wxGTK ]
+  ++ optionals wgetSupport [ wget ]
+  ++ optionals curlSupport [ curl ];
+
+  configureFlags = [
+    "--with-x=yes"
+    "--with-x11=yes"
+
+    "--with-rfb=no"
+    "--with-vncsrv=no"
+    "--with-svga=no" # it doesn't compile on NixOS
+
+    # These will always be "yes" on NixOS
+    "--enable-ltdl-install=yes"
+    "--enable-readline=yes"
+    "--enable-all-optimizations=yes"
+    "--enable-logging=yes"
+    "--enable-xpm=yes"
+
+    # ... whereas these, always "no"!
+    "--enable-cpp=no"
+    "--enable-instrumentation=no"
+
+    "--enable-docbook=no" # Broken - it requires docbook2html
+
+    # Dangerous options - they are marked as "incomplete/experimental" on Bochs documentation
+    "--enable-3dnow=no"
+    "--enable-monitor-mwait=no"
+    "--enable-raw-serial=no" ]
+    # Boolean flags
+    ++ optionals termSupport [ "--with-term" ]
+    ++ optionals sdlSupport [ "--with-sdl2" ]
+    ++ optionals wxSupport [ "--with-wx" ]
+    # These are completely configurable, and they don't depend of external tools
+    ++ [ "--enable-cpu-level=6" # from 3 to 6
+         "--enable-largefile"
+         "--enable-idle-hack"
+         "--enable-plugins=no" # Plugins are a bit buggy in Bochs
+         "--enable-a20-pin"
+         "--enable-x86-64"
+         "--enable-smp"
+         "--enable-large-ramfile"
+         "--enable-repeat-speedups"
+         "--enable-handlers-chaining"
+         "--enable-trace-linking"
+         "--enable-configurable-msrs"
+         "--enable-show-ips"
+         "--enable-debugger" #conflicts with gdb-stub option
+         "--enable-disasm"
+         "--enable-debugger-gui"
+         "--enable-gdb-stub=no" # conflicts with debugger option
+         "--enable-iodebug"
+         "--enable-fpu"
+         "--enable-svm"
+         "--enable-avx"
+         "--enable-evex"
+         "--enable-x86-debugger"
+         "--enable-pci"
+         "--enable-usb"
+         "--enable-usb-ohci"
+         "--enable-usb-ehci"
+         "--enable-usb-xhci"
+         "--enable-ne2000"
+         "--enable-pnic"
+         "--enable-e1000"
+         "--enable-clgd54xx"
+         "--enable-voodoo"
+         "--enable-cdrom"
+         "--enable-sb16"
+         "--enable-es1370"
+         "--enable-busmouse" ];
+
+  NIX_CFLAGS_COMPILE="-I${gtk2.dev}/include/gtk-2.0/ -I${libtool}/include/";
+  NIX_LDFLAGS="-L${libtool.lib}/lib";
+
+  hardeningDisable = [ "format" ];
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "An open-source IA-32 (x86) PC emulator";
+    longDescription = ''
+      Bochs is an open-source (LGPL), highly portable IA-32 PC emulator, written
+      in C++, that runs on most popular platforms. It includes emulation of the
+      Intel x86 CPU, common I/O devices, and a custom BIOS.
+    '';
+    homepage = "http://bochs.sourceforge.net/";
+    license = licenses.lgpl2Plus;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = platforms.unix;
+  };
+}
+# TODO: plugins
+# TODO: svga support - the Bochs sources explicitly cite /usr/include/vga.h
+# TODO: a better way to organize the options
diff --git a/nixpkgs/pkgs/applications/virtualization/bochs/fix-build-smp.patch b/nixpkgs/pkgs/applications/virtualization/bochs/fix-build-smp.patch
new file mode 100644
index 000000000000..faa2acfa5129
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/bochs/fix-build-smp.patch
@@ -0,0 +1,21 @@
+Description: A fix for SMP-enable configurations
+Inspired in: https://sourceforge.net/p/bochs/code/13778/
+
+============
+diff -Naur bochs-2.6.11-old/bx_debug/dbg_main.cc bochs-2.6.11-new/bx_debug/dbg_main.cc
+--- bochs-2.6.11-old/bx_debug/dbg_main.cc	2019-12-20 04:57:59.818924000 -0300
++++ bochs-2.6.11-new/bx_debug/dbg_main.cc	2020-03-30 23:20:29.402195707 -0300
+@@ -1494,11 +1494,11 @@
+ {
+   char cpu_param_name[16];
+ 
+-  Bit32u index = BX_ITLB_INDEX_OF(laddr);
++  Bit32u index = BX_CPU(dbg_cpu)->ITLB.get_index_of(laddr);
+   sprintf(cpu_param_name, "ITLB.entry%d", index);
+   bx_dbg_show_param_command(cpu_param_name, 0);
+ 
+-  index = BX_DTLB_INDEX_OF(laddr, 0);
++  index = BX_CPU(dbg_cpu)->DTLB.get_index_of(laddr);
+   sprintf(cpu_param_name, "DTLB.entry%d", index);
+   bx_dbg_show_param_command(cpu_param_name, 0);
+ }
diff --git a/nixpkgs/pkgs/applications/virtualization/charliecloud/default.nix b/nixpkgs/pkgs/applications/virtualization/charliecloud/default.nix
new file mode 100644
index 000000000000..a316952a010d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/charliecloud/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchFromGitHub, python }:
+
+stdenv.mkDerivation rec {
+
+  version = "0.12";
+  pname = "charliecloud";
+
+  src = fetchFromGitHub {
+    owner = "hpc";
+    repo = "charliecloud";
+    rev = "v${version}";
+    sha256 = "177rcf1klcxsp6x9cw75cmz3y2izgd1hvi1rb9vc6iz9qx1nmk3v";
+  };
+
+  buildInputs = [ python ];
+
+  preConfigure = ''
+    substituteInPlace Makefile --replace '/bin/bash' '${stdenv.shell}'
+    patchShebangs test/
+  '';
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "LIBEXEC_DIR=lib/charliecloud"
+  ];
+
+  postInstall = ''
+    mkdir -p $out/share/charliecloud
+    mv $out/lib/charliecloud/examples $out/share/charliecloud
+    mv $out/lib/charliecloud/test $out/share/charliecloud
+  '';
+
+  meta = {
+    description = "User-defined software stacks (UDSS) for high-performance computing (HPC) centers";
+    longDescription = ''
+      Charliecloud uses Linux user namespaces to run containers with no
+      privileged operations or daemons and minimal configuration changes on
+      center resources. This simple approach avoids most security risks
+      while maintaining access to the performance and functionality already
+      on offer.
+    '';
+    homepage = "https://hpc.github.io/charliecloud";
+    license = stdenv.lib.licenses.asl20;
+    maintainers = [ stdenv.lib.maintainers.bzizou ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/cntr/default.nix b/nixpkgs/pkgs/applications/virtualization/cntr/default.nix
new file mode 100644
index 000000000000..e3ab1c6c2f80
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/cntr/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, rustPlatform, fetchFromGitHub }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cntr";
+  version = "1.2.1";
+
+  src = fetchFromGitHub {
+    owner = "Mic92";
+    repo = "cntr";
+    rev = version;
+    sha256 = "0dhfz7aj3cqi974ybf0axchih40rzrs9m8bxhwz1hgig57aisfc0";
+  };
+
+  cargoSha256 = "088drkpkgq8psv5j6igxyhfvvbalzg6nd98r9z0nxkawck5i2clz";
+
+  meta = with stdenv.lib; {
+    description = "A container debugging tool based on FUSE";
+    homepage = "https://github.com/Mic92/cntr";
+    license = licenses.mit;
+    # aarch64 support will be fixed soon
+    platforms = [ "x86_64-linux" ];
+    maintainers = [ maintainers.mic92 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/conmon/default.nix b/nixpkgs/pkgs/applications/virtualization/conmon/default.nix
new file mode 100644
index 000000000000..d5abb569e7b1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/conmon/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, fetchFromGitHub
+, pkg-config
+, glib
+, glibc
+, systemd
+, nixosTests
+}:
+
+stdenv.mkDerivation rec {
+  pname = "conmon";
+  version = "2.0.18";
+
+  src = fetchFromGitHub {
+    owner = "containers";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0f32g048jamfhrds68vzirx8iqizr45wf2d4bfvdsk176amrj4k0";
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ glib systemd ]
+  ++ stdenv.lib.optionals (!stdenv.hostPlatform.isMusl) [ glibc glibc.static ];
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  passthru.tests.podman = nixosTests.podman;
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/containers/conmon";
+    description = "An OCI container runtime monitor";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ] ++ teams.podman.members;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/containerd/default.nix b/nixpkgs/pkgs/applications/virtualization/containerd/default.nix
new file mode 100644
index 000000000000..4210994f4352
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/containerd/default.nix
@@ -0,0 +1,52 @@
+{ lib, fetchFromGitHub, buildGoPackage, btrfs-progs, go-md2man, installShellFiles, utillinux }:
+
+with lib;
+
+buildGoPackage rec {
+  pname = "containerd";
+  version = "1.2.13";
+  # git commit for the above version's tag
+  commit = "7ad184331fa3e55e52b890ea95e65ba581ae3429";
+
+  src = fetchFromGitHub {
+    owner = "containerd";
+    repo = "containerd";
+    rev = "v${version}";
+    sha256 = "1rac3iak3jpz57yarxc72bxgxvravwrl0j6s6w2nxrmh2m3kxqzn";
+  };
+
+  goPackagePath = "github.com/containerd/containerd";
+  outputs = [ "out" "man" ];
+
+  nativeBuildInputs = [ go-md2man installShellFiles utillinux ];
+
+  buildInputs = [ btrfs-progs ];
+
+  buildFlags = [ "VERSION=v${version}" "REVISION=${commit}" ];
+
+  BUILDTAGS = []
+    ++ optional (btrfs-progs == null) "no_btrfs";
+
+  buildPhase = ''
+    cd go/src/${goPackagePath}
+    patchShebangs .
+    make binaries $buildFlags
+  '';
+
+  installPhase = ''
+    for b in bin/*; do
+      install -Dm555 $b $out/$b
+    done
+
+    make man
+    installManPage man/*.[1-9]
+  '';
+
+  meta = {
+    homepage = "https://containerd.io/";
+    description = "A daemon to control runC";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ offline vdemeester ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/cri-o/default.nix b/nixpkgs/pkgs/applications/virtualization/cri-o/default.nix
new file mode 100644
index 000000000000..95f8580cb397
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/cri-o/default.nix
@@ -0,0 +1,67 @@
+{ stdenv
+, btrfs-progs
+, buildGoModule
+, fetchFromGitHub
+, glibc
+, gpgme
+, installShellFiles
+, libapparmor
+, libseccomp
+, libselinux
+, lvm2
+, pkg-config
+}:
+
+buildGoModule rec {
+  pname = "cri-o";
+  version = "1.18.1";
+
+  src = fetchFromGitHub {
+    owner = "cri-o";
+    repo = "cri-o";
+    rev = "v${version}";
+    sha256 = "1fd7ix329kqimysqfh8yl29c0hwrddlirq9bnz95mrllhsgn8kw2";
+  };
+  vendorSha256 = null;
+  outputs = [ "out" "man" ];
+  nativeBuildInputs = [ installShellFiles pkg-config ];
+
+  buildInputs = [
+    btrfs-progs
+    gpgme
+    libapparmor
+    libseccomp
+    libselinux
+    lvm2
+  ] ++ stdenv.lib.optionals (glibc != null) [ glibc glibc.static ];
+
+  BUILDTAGS = "apparmor seccomp selinux containers_image_openpgp containers_image_ostree_stub";
+  buildPhase = ''
+    patchShebangs .
+
+    sed -i '/version.buildDate/d' Makefile
+
+    make binaries docs BUILDTAGS="$BUILDTAGS"
+  '';
+
+  installPhase = ''
+    install -Dm755 bin/* -t $out/bin
+
+    for shell in bash fish zsh; do
+      installShellCompletion --$shell completions/$shell/*
+    done
+
+    installManPage docs/*.[1-9]
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://cri-o.io";
+    description = ''
+      Open Container Initiative-based implementation of the
+      Kubernetes Container Runtime Interface
+    '';
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ] ++ teams.podman.members;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/cri-o/wrapper.nix b/nixpkgs/pkgs/applications/virtualization/cri-o/wrapper.nix
new file mode 100644
index 000000000000..1578eaf4f585
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/cri-o/wrapper.nix
@@ -0,0 +1,53 @@
+{ cri-o-unwrapped
+, runCommand
+, makeWrapper
+, lib
+, extraPackages ? []
+, cri-o
+, runc # Default container runtime
+, crun # Container runtime (default with cgroups v2 for podman/buildah)
+, conmon # Container runtime monitor
+, utillinux # nsenter
+, cni-plugins # not added to path
+, iptables
+, socat
+}:
+
+let
+  cri-o = cri-o-unwrapped;
+
+  binPath = lib.makeBinPath ([
+    runc
+    crun
+    conmon
+    utillinux
+    iptables
+    socat
+  ] ++ extraPackages);
+
+in runCommand cri-o.name {
+  name = "${cri-o.pname}-wrapper-${cri-o.version}";
+  inherit (cri-o) pname version;
+
+  meta = builtins.removeAttrs cri-o.meta [ "outputsToInstall" ];
+
+  outputs = [
+    "out"
+    "man"
+  ];
+
+  nativeBuildInputs = [
+    makeWrapper
+  ];
+
+} ''
+  ln -s ${cri-o.man} $man
+
+  mkdir -p $out/bin
+  ln -s ${cri-o-unwrapped}/share $out/share
+
+  for p in ${cri-o-unwrapped}/bin/*; do
+    makeWrapper $p $out/bin/''${p##*/} \
+      --prefix PATH : ${binPath}
+  done
+''
diff --git a/nixpkgs/pkgs/applications/virtualization/crosvm/default-seccomp-policy-dir.diff b/nixpkgs/pkgs/applications/virtualization/crosvm/default-seccomp-policy-dir.diff
new file mode 100644
index 000000000000..f1aa50ee102c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/crosvm/default-seccomp-policy-dir.diff
@@ -0,0 +1,15 @@
+diff --git a/src/crosvm.rs b/src/crosvm.rs
+index b7055df..5989c87 100644
+--- a/src/crosvm.rs
++++ b/src/crosvm.rs
+@@ -141,7 +141,9 @@ impl Default for Config {
+             x_display: None,
+             shared_dirs: Vec::new(),
+             sandbox: !cfg!(feature = "default-no-sandbox"),
+-            seccomp_policy_dir: PathBuf::from(SECCOMP_POLICY_DIR),
++            seccomp_policy_dir: PathBuf::from(
++                option_env!("DEFAULT_SECCOMP_POLICY_DIR").unwrap_or(SECCOMP_POLICY_DIR),
++            ),
+             seccomp_log_failures: false,
+             cras_audio: false,
+             cras_capture: false,
diff --git a/nixpkgs/pkgs/applications/virtualization/crosvm/default.nix b/nixpkgs/pkgs/applications/virtualization/crosvm/default.nix
new file mode 100644
index 000000000000..38ce277bf3ff
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/crosvm/default.nix
@@ -0,0 +1,93 @@
+{ stdenv, lib, rustPlatform, fetchgit, runCommand, symlinkJoin
+, pkgconfig, minijail, dtc, libusb1, libcap, linux
+}:
+
+let
+
+  upstreamInfo = with builtins; fromJSON (readFile ./upstream-info.json);
+
+  arch = with stdenv.hostPlatform;
+    if isAarch64 then "arm"
+    else if isx86_64 then "x86_64"
+    else throw "no seccomp policy files available for host platform";
+
+  crosvmSrc = fetchgit {
+    inherit (upstreamInfo.components."chromiumos/platform/crosvm")
+      url rev sha256 fetchSubmodules;
+  };
+
+  adhdSrc = fetchgit {
+    inherit (upstreamInfo.components."chromiumos/third_party/adhd")
+      url rev sha256 fetchSubmodules;
+  };
+
+in
+
+  rustPlatform.buildRustPackage rec {
+    pname = "crosvm";
+    inherit (upstreamInfo) version;
+
+    unpackPhase = ''
+      runHook preUnpack
+
+      mkdir -p chromiumos/platform chromiumos/third_party
+
+      pushd chromiumos/platform
+      unpackFile ${crosvmSrc}
+      mv ${crosvmSrc.name} crosvm
+      popd
+
+      pushd chromiumos/third_party
+      unpackFile ${adhdSrc}
+      mv ${adhdSrc.name} adhd
+      popd
+
+      chmod -R u+w -- "$sourceRoot"
+
+      runHook postUnpack
+    '';
+
+    sourceRoot = "chromiumos/platform/crosvm";
+
+    patches = [
+      ./default-seccomp-policy-dir.diff
+    ];
+
+    cargoSha256 = "0lhivwvdihslwp81i3sa5q88p5hr83bzkvklrcgf6x73arwk8kdz";
+
+    nativeBuildInputs = [ pkgconfig ];
+
+    buildInputs = [ dtc libcap libusb1 minijail ];
+
+    postPatch = ''
+      sed -i "s|/usr/share/policy/crosvm/|$out/share/policy/|g" \
+             seccomp/*/*.policy
+    '';
+
+    preBuild = ''
+      export DEFAULT_SECCOMP_POLICY_DIR=$out/share/policy
+    '';
+
+    postInstall = ''
+      mkdir -p $out/share/policy/
+      cp seccomp/${arch}/* $out/share/policy/
+    '';
+
+    CROSVM_CARGO_TEST_KERNEL_BINARY =
+      lib.optionalString (stdenv.buildPlatform == stdenv.hostPlatform)
+        "${linux}/${stdenv.hostPlatform.platform.kernelTarget}";
+
+    passthru = {
+      inherit adhdSrc;
+      src = crosvmSrc;
+      updateScript = ./update.py;
+    };
+
+    meta = with lib; {
+      description = "A secure virtual machine monitor for KVM";
+      homepage = "https://chromium.googlesource.com/chromiumos/platform/crosvm/";
+      maintainers = with maintainers; [ qyliss ];
+      license = licenses.bsd3;
+      platforms = [ "aarch64-linux" "x86_64-linux" ];
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/virtualization/crosvm/update.py b/nixpkgs/pkgs/applications/virtualization/crosvm/update.py
new file mode 100755
index 000000000000..29e68b9f5790
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/crosvm/update.py
@@ -0,0 +1,91 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -p nix-prefetch-git "python3.withPackages (ps: with ps; [ lxml ])"
+#! nix-shell -i python
+
+import base64
+import json
+import re
+import subprocess
+from codecs import iterdecode
+from os.path import dirname, splitext
+from lxml import etree
+from lxml.etree import HTMLParser
+from urllib.request import urlopen
+
+# ChromiumOS components required to build crosvm.
+components = ['chromiumos/platform/crosvm', 'chromiumos/third_party/adhd']
+
+git_root = 'https://chromium.googlesource.com/'
+manifest_versions = f'{git_root}chromiumos/manifest-versions'
+buildspecs_url = f'{manifest_versions}/+/refs/heads/master/full/buildspecs/'
+
+# CrOS version numbers look like this:
+# [<chrome-major-version>.]<tip-build>.<branch-build>.<branch-branch-build>
+#
+# As far as I can tell, branches are where internal Google
+# modifications are added to turn Chromium OS into Chrome OS, and
+# branch branches are used for fixes for specific devices.  So for
+# Chromium OS they will always be 0.  This is a best guess, and is not
+# documented.
+with urlopen('https://cros-updates-serving.appspot.com/') as resp:
+    document = etree.parse(resp, HTMLParser())
+    # bgcolor="lightgreen" is set on the most up-to-date version for
+    # each channel, so find a lightgreen cell in the "Stable" column.
+    (platform_version, chrome_version) = document.xpath("""
+        (//table[@id="cros-updates"]/tr/td[1 + count(
+            //table[@id="cros-updates"]/thead/tr[1]/th[text() = "Stable"]
+            /preceding-sibling::*)
+        ][@bgcolor="lightgreen"])[1]/text()
+    """)
+
+chrome_major_version = re.match(r'\d+', chrome_version)[0]
+chromeos_tip_build = re.match(r'\d+', platform_version)[0]
+
+# Find the most recent buildspec for the stable Chrome version and
+# Chromium OS build number.  Its branch build and branch branch build
+# numbers will (almost?) certainly be 0.  It will then end with an rc
+# number -- presumably these are release candidates, one of which
+# becomes the final release.  Presumably the one with the highest rc
+# number.
+with urlopen(f'{buildspecs_url}{chrome_major_version}/?format=TEXT') as resp:
+    listing = base64.decodebytes(resp.read()).decode('utf-8')
+    buildspecs = [(line.split('\t', 1)[1]) for line in listing.splitlines()]
+    buildspecs = [s for s in buildspecs if s.startswith(chromeos_tip_build)]
+    buildspecs.sort(reverse=True)
+    buildspec = splitext(buildspecs[0])[0]
+
+revisions = {}
+
+# Read the buildspec, and extract the git revisions for each component.
+with urlopen(f'{buildspecs_url}{chrome_major_version}/{buildspec}.xml?format=TEXT') as resp:
+    xml = base64.decodebytes(resp.read())
+    root = etree.fromstring(xml)
+    for project in root.findall('project'):
+        revisions[project.get('name')] = project.get('revision')
+
+# Initialize the data that will be output from this script.  Leave the
+# rc number in buildspec so nobody else is subject to the same level
+# of confusion I have been.
+data = {'version': f'{chrome_major_version}.{buildspec}', 'components': {}}
+
+# Fill in the 'components' dictionary with the output from
+# nix-prefetch-git, which can be passed straight to fetchGit when
+# imported by Nix.
+for component in components:
+    argv = ['nix-prefetch-git',
+            '--url', git_root + component,
+            '--rev', revisions[component]]
+
+    output = subprocess.check_output(argv)
+    data['components'][component] = json.loads(output.decode('utf-8'))
+
+# Find the path to crosvm's default.nix, so the srcs data can be
+# written into the same directory.
+argv = ['nix-instantiate', '--eval', '--json', '-A', 'crosvm.meta.position']
+position = json.loads(subprocess.check_output(argv).decode('utf-8'))
+filename = re.match(r'[^:]*', position)[0]
+
+# Finally, write the output.
+with open(dirname(filename) + '/upstream-info.json', 'w') as out:
+    json.dump(data, out, indent=2)
+    out.write('\n')
diff --git a/nixpkgs/pkgs/applications/virtualization/crosvm/upstream-info.json b/nixpkgs/pkgs/applications/virtualization/crosvm/upstream-info.json
new file mode 100644
index 000000000000..bb9cc8841b4a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/crosvm/upstream-info.json
@@ -0,0 +1,23 @@
+{
+  "version": "81.12871.0.0-rc1",
+  "components": {
+    "chromiumos/platform/crosvm": {
+      "url": "https://chromium.googlesource.com/chromiumos/platform/crosvm",
+      "rev": "8b8c01e1ad31718932491e4aee63f56109a138e2",
+      "date": "2020-01-25T02:28:10+00:00",
+      "sha256": "1qmf1k06pwynh15c3nr9m6v90z2pkk930xniwvlvbvnazrk4rllg",
+      "fetchSubmodules": false,
+      "deepClone": false,
+      "leaveDotGit": false
+    },
+    "chromiumos/third_party/adhd": {
+      "url": "https://chromium.googlesource.com/chromiumos/third_party/adhd",
+      "rev": "f361d5b02623274723bff251dafa1e2a2887b013",
+      "date": "2020-01-23T18:37:46+00:00",
+      "sha256": "1p8iwjwgmcgmzri03ik2jaid8l0ch0bzn6z9z64dix1hlrvrlliw",
+      "fetchSubmodules": false,
+      "deepClone": false,
+      "leaveDotGit": false
+    }
+  }
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/crun/default.nix b/nixpkgs/pkgs/applications/virtualization/crun/default.nix
new file mode 100644
index 000000000000..a11d5d356d14
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/crun/default.nix
@@ -0,0 +1,75 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, autoreconfHook
+, go-md2man
+, pkgconfig
+, libcap
+, libseccomp
+, python3
+, systemd
+, yajl
+, nixosTests
+}:
+
+let
+  # these tests require additional permissions
+  disabledTests = [
+    "test_capabilities.py"
+    "test_cwd.py"
+    "test_detach.py"
+    "test_exec.py"
+    "test_hooks.py"
+    "test_hostname.py"
+    "test_paths.py"
+    "test_pid.py"
+    "test_pid_file.py"
+    "test_preserve_fds.py"
+    "test_start.py"
+    "test_uid_gid.py"
+    "test_update.py"
+    "tests_libcrun_utils"
+  ];
+
+in
+stdenv.mkDerivation rec {
+  pname = "crun";
+  version = "0.13";
+
+  src = fetchFromGitHub {
+    owner = "containers";
+    repo = pname;
+    rev = version;
+    sha256 = "0c5acf916yv2zv3xjvxk1sa4h3n2wljc5hw61php7q37pbjc1ppn";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ autoreconfHook go-md2man pkgconfig python3 ];
+
+  buildInputs = [ libcap libseccomp systemd yajl ];
+
+  enableParallelBuilding = true;
+
+  # we need this before autoreconfHook does its thing in order to initialize
+  # config.h with the correct values
+  postPatch = ''
+    echo ${version} > .tarball-version
+    echo '#define GIT_VERSION "${src.rev}"' > git-version.h
+
+    ${lib.concatMapStringsSep "\n" (e:
+      "substituteInPlace Makefile.am --replace 'tests/${e}' ''"
+    ) disabledTests}
+  '';
+
+  doCheck = true;
+
+  passthru.tests.podman = nixosTests.podman;
+
+  meta = with lib; {
+    description = "A fast and lightweight fully featured OCI runtime and C library for running containers";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    inherit (src.meta) homepage;
+    maintainers = with maintainers; [ ] ++ teams.podman.members;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/docker-compose/default.nix b/nixpkgs/pkgs/applications/virtualization/docker-compose/default.nix
new file mode 100644
index 000000000000..71359467c5c6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/docker-compose/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, buildPythonApplication, fetchPypi, pythonOlder
+, installShellFiles
+, mock, pytest, nose
+, pyyaml, backports_ssl_match_hostname, colorama, docopt
+, dockerpty, docker, ipaddress, jsonschema, requests
+, six, texttable, websocket_client, cached-property
+, enum34, functools32, paramiko
+}:
+
+buildPythonApplication rec {
+  version = "1.25.5";
+  pname = "docker-compose";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1ijhg93zs3lswkljnm0rhww7gdy0g94psvsya2741prz2zcbcbks";
+  };
+
+  # lots of networking and other fails
+  doCheck = false;
+  nativeBuildInputs = [ installShellFiles ];
+  checkInputs = [ mock pytest nose ];
+  propagatedBuildInputs = [
+    pyyaml backports_ssl_match_hostname colorama dockerpty docker
+    ipaddress jsonschema requests six texttable websocket_client
+    docopt cached-property paramiko
+  ] ++
+    stdenv.lib.optional (pythonOlder "3.4") enum34 ++
+    stdenv.lib.optional (pythonOlder "3.2") functools32;
+
+  postPatch = ''
+    # Remove upper bound on requires, see also
+    # https://github.com/docker/compose/issues/4431
+    sed -i "s/, < .*',$/',/" setup.py
+  '';
+
+  postInstall = ''
+    installShellCompletion --bash contrib/completion/bash/docker-compose
+    installShellCompletion --zsh contrib/completion/zsh/_docker-compose
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://docs.docker.com/compose/";
+    description = "Multi-container orchestration for Docker";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ Frostman ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/docker-slim/default.nix b/nixpkgs/pkgs/applications/virtualization/docker-slim/default.nix
new file mode 100644
index 000000000000..996d52bacab2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/docker-slim/default.nix
@@ -0,0 +1,50 @@
+{ stdenv
+, buildGoPackage
+, fetchFromGitHub
+, makeWrapper
+}:
+
+buildGoPackage rec {
+  pname = "docker-slim";
+  version = "1.29.0";
+
+  goPackagePath = "github.com/docker-slim/docker-slim";
+
+  src = fetchFromGitHub {
+    owner = "docker-slim";
+    repo = "docker-slim";
+    rev = version;
+    sha256 = "0qfjmwqxgghp9pqj4s2z71cmn8mi1l6655z6nbhh72yqaxh5a6ia";
+  };
+
+  subPackages = [ "cmd/docker-slim" "cmd/docker-slim-sensor" ];
+
+  nativeBuildInputs = [
+    makeWrapper
+  ];
+
+  buildFlagsArray = [
+    ''-ldflags=
+        -s -w -X ${goPackagePath}/pkg/version.appVersionTag=${version}
+              -X ${goPackagePath}/pkg/version.appVersionRev=${src.rev}
+    ''
+  ];
+
+  # docker-slim tries to create its state dir next to the binary (inside the nix
+  # store), so we set it to use the working directory at the time of invocation
+  postInstall = ''
+    wrapProgram "$out/bin/docker-slim" --add-flags '--state-path "$(pwd)"'
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Minify and secure Docker containers";
+    homepage = "https://dockersl.im/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ filalex77 marsam mbrgm ];
+    # internal/app/sensor/monitors/ptrace/monitor.go:151:16: undefined:
+    #     system.CallNumber
+    # internal/app/sensor/monitors/ptrace/monitor.go:161:15: undefined:
+    #     system.CallReturnValue
+    badPlatforms = [ "aarch64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/docker/default.nix b/nixpkgs/pkgs/applications/virtualization/docker/default.nix
new file mode 100644
index 000000000000..da414cd55464
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/docker/default.nix
@@ -0,0 +1,210 @@
+{ stdenv, lib, fetchFromGitHub, makeWrapper, removeReferencesTo, installShellFiles, pkgconfig
+, go-md2man, go, containerd, runc, docker-proxy, tini, libtool
+, sqlite, iproute, lvm2, systemd
+, btrfs-progs, iptables, e2fsprogs, xz, utillinux, xfsprogs, git
+, procps, libseccomp
+}:
+
+with lib;
+
+rec {
+  dockerGen = {
+      version, rev, sha256
+      , runcRev, runcSha256
+      , containerdRev, containerdSha256
+      , tiniRev, tiniSha256
+    } :
+  let
+    docker-runc = runc.overrideAttrs (oldAttrs: {
+      name = "docker-runc-${version}";
+      inherit version;
+      src = fetchFromGitHub {
+        owner = "opencontainers";
+        repo = "runc";
+        rev = runcRev;
+        sha256 = runcSha256;
+      };
+      # docker/runc already include these patches / are not applicable
+      patches = [];
+    });
+
+    docker-containerd = containerd.overrideAttrs (oldAttrs: {
+      name = "docker-containerd-${version}";
+      inherit version;
+      src = fetchFromGitHub {
+        owner = "docker";
+        repo = "containerd";
+        rev = containerdRev;
+        sha256 = containerdSha256;
+      };
+    });
+
+    docker-tini = tini.overrideAttrs  (oldAttrs: {
+      name = "docker-init-${version}";
+      inherit version;
+      src = fetchFromGitHub {
+        owner = "krallin";
+        repo = "tini";
+        rev = tiniRev;
+        sha256 = tiniSha256;
+      };
+
+      # Do not remove static from make files as we want a static binary
+      patchPhase = ''
+      '';
+
+      NIX_CFLAGS_COMPILE = "-DMINIMAL=ON";
+    });
+  in
+    stdenv.mkDerivation ((optionalAttrs (stdenv.isLinux) {
+
+    inherit docker-runc docker-containerd docker-proxy docker-tini;
+
+    DOCKER_BUILDTAGS = []
+      ++ optional (systemd != null) [ "journald" ]
+      ++ optional (btrfs-progs == null) "exclude_graphdriver_btrfs"
+      ++ optional (lvm2 == null) "exclude_graphdriver_devicemapper"
+      ++ optional (libseccomp != null) "seccomp";
+
+   }) // {
+    inherit version rev;
+
+    name = "docker-${version}";
+
+    src = fetchFromGitHub {
+      owner = "docker";
+      repo = "docker-ce";
+      rev = "v${version}";
+      sha256 = sha256;
+    };
+
+    nativeBuildInputs = [ installShellFiles pkgconfig ];
+    buildInputs = [
+      makeWrapper removeReferencesTo go-md2man go libtool
+    ] ++ optionals (stdenv.isLinux) [
+      sqlite lvm2 btrfs-progs systemd libseccomp
+    ];
+
+    dontStrip = true;
+
+    buildPhase = ''
+      export GOCACHE="$TMPDIR/go-cache"
+    '' + (optionalString (stdenv.isLinux) ''
+      # build engine
+      cd ./components/engine
+      export AUTO_GOPATH=1
+      export DOCKER_GITCOMMIT="${rev}"
+      export VERSION="${version}"
+      ./hack/make.sh dynbinary
+      cd -
+    '') + ''
+      # build cli
+      cd ./components/cli
+      # Mimic AUTO_GOPATH
+      mkdir -p .gopath/src/github.com/docker/
+      ln -sf $PWD .gopath/src/github.com/docker/cli
+      export GOPATH="$PWD/.gopath:$GOPATH"
+      export GITCOMMIT="${rev}"
+      export VERSION="${version}"
+      source ./scripts/build/.variables
+      export CGO_ENABLED=1
+      go build -tags pkcs11 --ldflags "$LDFLAGS" github.com/docker/cli/cmd/docker
+      cd -
+    '';
+
+    # systemd 230 no longer has libsystemd-journal as a separate entity from libsystemd
+    patchPhase = ''
+      substituteInPlace ./components/cli/scripts/build/.variables --replace "set -eu" ""
+    '' + optionalString (stdenv.isLinux) ''
+      patchShebangs .
+      substituteInPlace ./components/engine/hack/make.sh                   --replace libsystemd-journal libsystemd
+      substituteInPlace ./components/engine/daemon/logger/journald/read.go --replace libsystemd-journal libsystemd
+    '';
+
+    outputs = ["out" "man"];
+
+    extraPath = optionals (stdenv.isLinux) (makeBinPath [ iproute iptables e2fsprogs xz xfsprogs procps utillinux git ]);
+
+    installPhase = optionalString (stdenv.isLinux) ''
+      install -Dm755 ./components/engine/bundles/dynbinary-daemon/dockerd $out/libexec/docker/dockerd
+
+      makeWrapper $out/libexec/docker/dockerd $out/bin/dockerd \
+        --prefix PATH : "$out/libexec/docker:$extraPath"
+
+      # docker uses containerd now
+      ln -s ${docker-containerd}/bin/containerd $out/libexec/docker/containerd
+      ln -s ${docker-containerd}/bin/containerd-shim $out/libexec/docker/containerd-shim
+      ln -s ${docker-runc}/bin/runc $out/libexec/docker/runc
+      ln -s ${docker-proxy}/bin/docker-proxy $out/libexec/docker/docker-proxy
+      ln -s ${docker-tini}/bin/tini-static $out/libexec/docker/docker-init
+
+      # systemd
+      install -Dm644 ./components/engine/contrib/init/systemd/docker.service $out/etc/systemd/system/docker.service
+    '' + ''
+      install -Dm755 ./components/cli/docker $out/libexec/docker/docker
+
+      makeWrapper $out/libexec/docker/docker $out/bin/docker \
+        --prefix PATH : "$out/libexec/docker:$extraPath"
+
+      # completion (cli)
+      installShellCompletion --bash ./components/cli/contrib/completion/bash/docker
+      installShellCompletion --fish ./components/cli/contrib/completion/fish/docker.fish
+      installShellCompletion --zsh ./components/cli/contrib/completion/zsh/_docker
+
+      # Include contributed man pages (cli)
+      # Generate man pages from cobra commands
+      echo "Generate man pages from cobra"
+      cd ./components/cli
+      mkdir -p ./man/man1
+      go build -o ./gen-manpages github.com/docker/cli/man
+      ./gen-manpages --root . --target ./man/man1
+
+      # Generate legacy pages from markdown
+      echo "Generate legacy manpages"
+      ./man/md2man-all.sh -q
+
+      installManPage man/*/*.[1-9]
+    '';
+
+    preFixup = ''
+      find $out -type f -exec remove-references-to -t ${go} -t ${stdenv.cc.cc} '{}' +
+    '' + optionalString (stdenv.isLinux) ''
+      find $out -type f -exec remove-references-to -t ${stdenv.glibc.dev} '{}' +
+    '';
+
+    meta = {
+      homepage = "https://www.docker.com/";
+      description = "An open source project to pack, ship and run any application as a lightweight container";
+      license = licenses.asl20;
+      maintainers = with maintainers; [ nequissimus offline tailhook vdemeester periklis ];
+      platforms = with platforms; linux ++ darwin;
+    };
+  });
+
+  # Get revisions from
+  # https://github.com/docker/docker-ce/tree/${version}/components/engine/hack/dockerfile/install/*
+
+  docker_18_09 = makeOverridable dockerGen {
+    version = "18.09.9";
+    rev = "039a7df9ba8097dd987370782fcdd6ea79b26016";
+    sha256 = "0wqhjx9qs96q2jd091wffn3cyv2aslqn2cvpdpgljk8yr9s0yg7h";
+    runcRev = "3e425f80a8c931f88e6d94a8c831b9d5aa481657";
+    runcSha256 = "18psc830b2rkwml1x6vxngam5b5wi3pj14mw817rshpzy87prspj";
+    containerdRev = "894b81a4b802e4eb2a91d1ce216b8817763c29fb";
+    containerdSha256 = "0sp5mn5wd3xma4svm6hf67hyhiixzkzz6ijhyjkwdrc4alk81357";
+    tiniRev = "fec3683b971d9c3ef73f284f176672c44b448662";
+    tiniSha256 = "1h20i3wwlbd8x4jr2gz68hgklh0lb0jj7y5xk1wvr8y58fip1rdn";
+  };
+
+  docker_19_03 = makeOverridable dockerGen {
+    version = "19.03.11";
+    rev = "42e35e61f352e527082521280d5ea3761f0dee50";
+    sha256 = "0q4l4z2bg269hj1dqaq02f84zgp3p8idw1cxczw383cjl0ra8xgq";
+    runcRev = "dc9208a3303feef5b3839f4323d9beb36df0a9dd"; # v1.0.0-rc10
+    runcSha256 = "0pi3rvj585997m4z9ljkxz2z9yxf9p2jr0pmqbqrc7bc95f5hagk";
+    containerdRev = "7ad184331fa3e55e52b890ea95e65ba581ae3429"; # v1.2.13
+    containerdSha256 = "1rac3iak3jpz57yarxc72bxgxvravwrl0j6s6w2nxrmh2m3kxqzn";
+    tiniRev = "fec3683b971d9c3ef73f284f176672c44b448662"; # v0.18.0
+    tiniSha256 = "1h20i3wwlbd8x4jr2gz68hgklh0lb0jj7y5xk1wvr8y58fip1rdn";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/docker/distribution.nix b/nixpkgs/pkgs/applications/virtualization/docker/distribution.nix
new file mode 100644
index 000000000000..a408d20f3ba0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/docker/distribution.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "distribution";
+  version = "2.7.1";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/docker/distribution";
+
+  src = fetchFromGitHub {
+    owner = "docker";
+    repo = "distribution";
+    inherit rev;
+    sha256 = "1nx8b5a68rn81alp8wkkw6qd5v32mgf0fk23mxm60zdf63qk1nzw";
+  };
+
+  meta = with stdenv.lib; {
+    description = "The Docker toolset to pack, ship, store, and deliver content";
+    license = licenses.asl20;
+    maintainers = [ maintainers.globin ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/docker/gc.nix b/nixpkgs/pkgs/applications/virtualization/docker/gc.nix
new file mode 100644
index 000000000000..08cfba59918f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/docker/gc.nix
@@ -0,0 +1,33 @@
+{ stdenv, lib, fetchFromGitHub, makeWrapper, docker, coreutils, procps, gnused, findutils, gnugrep }:
+
+with lib;
+
+stdenv.mkDerivation rec {
+  name = "docker-gc-${rev}";
+  rev = "b0cc52aa3da2e2ac0080794e0be6e674b1f063fc";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "spotify";
+    repo = "docker-gc";
+    sha256 = "07wf9yn0f771xkm3x12946x5rp83hxjkd70xgfgy35zvj27wskzm";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp docker-gc $out/bin
+    chmod +x $out/bin/docker-gc
+    wrapProgram $out/bin/docker-gc \
+        --prefix PATH : "${stdenv.lib.makeBinPath [ docker coreutils procps gnused findutils gnugrep ]}"
+  '';
+
+  meta = {
+    description = "Docker garbage collection of containers and images";
+    license = licenses.asl20;
+    homepage = "https://github.com/spotify/docker-gc";
+    maintainers = with maintainers; [offline];
+    platforms = docker.meta.platforms;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/docker/proxy.nix b/nixpkgs/pkgs/applications/virtualization/docker/proxy.nix
new file mode 100644
index 000000000000..cb3518d7d3da
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/docker/proxy.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "docker-proxy-${rev}";
+  rev = "7b2b1feb1de4817d522cc372af149ff48d25028e";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "docker";
+    repo = "libnetwork";
+    sha256 = "1ng577k11cyv207bp0vaz5jjfcn2igd6w95zn4izcq1nldzp5935";
+  };
+
+  goPackagePath = "github.com/docker/libnetwork";
+
+  goDeps = null;
+
+  installPhase = ''
+    install -m755 -D ./go/bin/proxy $out/bin/docker-proxy
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Docker proxy binary to forward traffic between host and containers";
+    license = licenses.asl20;
+    homepage = "https://github.com/docker/libnetwork";
+    maintainers = with maintainers; [vdemeester];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/driver/win-pvdrivers/default.nix b/nixpkgs/pkgs/applications/virtualization/driver/win-pvdrivers/default.nix
new file mode 100644
index 000000000000..faa1076e2998
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/driver/win-pvdrivers/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchgit }:
+
+stdenv.mkDerivation  {
+  name = "win-pvdrivers-git-20150701";
+  version = "20150701";
+
+  src = fetchgit {
+    url = "https://github.com/ts468/win-pvdrivers";
+    rev = "3054d645fc3ee182bea3e97ff01869f01cc3637a";
+    sha256 = "6232ca2b7c9af874abbcb9262faf2c74c819727ed2eb64599c790879df535106";
+  };
+
+  buildPhase =
+    let unpack = x: "tar xf $src/${x}.tar; mkdir -p x86/${x} amd64/${x}; cp ${x}/x86/* x86/${x}/.; cp ${x}/x64/* amd64/${x}/.";
+    in stdenv.lib.concatStringsSep "\n" (map unpack ["xenbus" "xeniface" "xenvif" "xennet" "xenvbd"]);
+
+  installPhase = ''
+    mkdir -p $out
+    cp -r x86 $out/.
+    cp -r amd64 $out/.
+    '';
+
+  meta = with stdenv.lib; {
+    description = "Xen Subproject: Windows PV Driver";
+    homepage = "http://xenproject.org/downloads/windows-pv-drivers.html";
+    maintainers = [ maintainers.tstrobel ];
+    platforms = platforms.linux;
+    license = licenses.bsd3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/driver/win-qemu/default.nix b/nixpkgs/pkgs/applications/virtualization/driver/win-qemu/default.nix
new file mode 100644
index 000000000000..97a1f0b3039b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/driver/win-qemu/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, p7zip }:
+
+stdenv.mkDerivation  {
+  name = "win-qemu-0.1.105-1";
+  version = "0.1.105-1";
+
+  phases = [ "buildPhase" "installPhase" ];
+
+  src = fetchurl {
+    url = "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.105-1/virtio-win.iso";
+    sha256 = "065gz7s77y0q9kfqbr27451sr28rm9azpi88sqjkfph8c6r8q3wc";
+  };
+
+  buildPhase = ''
+    ${p7zip}/bin/7z x $src
+    '';
+
+  installPhase =
+    let
+      copy_pvpanic = arch: version: "mkdir -p $out/${arch}/qemupanic; cp pvpanic/${version}/${arch}/* $out/${arch}/qemupanic/. \n";
+      copy_pciserial = arch: "mkdir -p $out/${arch}/qemupciserial; cp qemupciserial/* $out/${arch}/qemupciserial/. \n";
+      copy_agent = arch: ''
+        mkdir -p $out/${arch}/qemuagent
+        cp guest-agent/${if arch=="x86" then "qemu-ga-x86.msi" else "qemu-ga-x64.msi"} $out/${arch}/qemuagent/qemu-guest-agent.msi
+        (cd $out/${arch}/qemuagent; ${p7zip}/bin/7z x qemu-guest-agent.msi; rm qemu-guest-agent.msi)
+        '';
+      copy = arch: version: (copy_pvpanic arch version) + (copy_pciserial arch) + (copy_agent arch);
+    in
+      (copy "amd64" "w8.1") + (copy "x86" "w8.1");
+
+  meta = with stdenv.lib; {
+    description = "Windows QEMU Drivers";
+    homepage = "https://fedoraproject.org/wiki/Windows_Virtio_Drivers";
+    maintainers = [ maintainers.tstrobel ];
+    platforms = platforms.linux;
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/driver/win-signed-gplpv-drivers/default.nix b/nixpkgs/pkgs/applications/virtualization/driver/win-signed-gplpv-drivers/default.nix
new file mode 100644
index 000000000000..c4684a20914f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/driver/win-signed-gplpv-drivers/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, p7zip }:
+
+let
+  src_x86 = fetchurl {
+    url = "http://apt.univention.de/download/addons/gplpv-drivers/gplpv_Vista2008x32_signed_0.11.0.373.msi";
+    sha256 = "04r11xw8ikjmcdhrsk878c86g0d0pvras5arsas3zs6dhgjykqap";
+  };
+
+  src_amd64 = fetchurl {
+    url = "http://apt.univention.de/download/addons/gplpv-drivers/gplpv_Vista2008x64_signed_0.11.0.373.msi";
+    sha256 = "00k628mg9b039p8lmg2l9n81dr15svy70p3m6xmq6f0frmci38ph";
+  };
+in
+
+stdenv.mkDerivation  {
+  name = "gplpv-0.11.0.373";
+  version = "0.11.0.373";
+
+  phases = [ "buildPhase" "installPhase" ];
+
+  buildPhase = ''
+    mkdir -p x86
+    (cd x86; ${p7zip}/bin/7z e ${src_x86})
+    mkdir -p amd64
+    (cd amd64; ${p7zip}/bin/7z e ${src_amd64})
+    '';
+
+  installPhase = ''
+    mkdir -p $out/x86 $out/amd64
+    cp x86/* $out/x86/.
+    cp amd64/* $out/amd64/.
+    '';
+
+  meta = with stdenv.lib; {
+    description = ''
+      A collection of open source Window PV drivers that allow
+      Windows to be para-virtualized.
+      The drivers are signed by Univention with a Software Publishers
+      Certificate obtained from the VeriSign CA.
+      '';
+    homepage = "http://wiki.univention.de/index.php?title=Installing-signed-GPLPV-drivers";
+    maintainers = [ maintainers.tstrobel ];
+    platforms = platforms.linux;
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/driver/win-spice/default.nix b/nixpkgs/pkgs/applications/virtualization/driver/win-spice/default.nix
new file mode 100644
index 000000000000..f327512b128e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/driver/win-spice/default.nix
@@ -0,0 +1,70 @@
+{ stdenv, fetchurl, p7zip, win-virtio }:
+
+let
+  src_usbdk_x86 = fetchurl {
+    url = "https://www.spice-space.org/download/windows/usbdk/UsbDk_1.0.4_x86.msi";
+    sha256 = "17hv8034wk1xqnanm5jxs4741nl7asps1fdz6lhnrpp6gvj6yg9y";
+  };
+
+  src_usbdk_amd64 = fetchurl {
+    url = "https://www.spice-space.org/download/windows/usbdk/UsbDk_1.0.4_x64.msi";
+    sha256 = "0alcqsivp33pm8sy0lmkvq7m5yh6mmcmxdl39zjxjra67kw8r2sd";
+  };
+
+  src_qxlwddm = fetchurl {
+    url = "https://people.redhat.com/~vrozenfe/qxlwddm/qxlwddm-0.11.zip";
+    sha256 = "082zdpbh9i3bq2ds8g33rcbcw390jsm7cqf46rrlx02x8r03dm98";
+  };
+
+  src_vdagent_x86 = fetchurl {
+    url = "https://www.spice-space.org/download/windows/vdagent/vdagent-win-0.7.3/vdagent_0_7_3_x86.zip";
+    sha256 = "0d928g49rf4dl79jmvnqh6g864hp1flw1f0384sfp82himm3bxjs";
+  };
+
+  src_vdagent_amd64 = fetchurl {
+    url = "https://www.spice-space.org/download/windows/vdagent/vdagent-win-0.7.3/vdagent_0_7_3_x64.zip";
+    sha256 = "0djmvm66jcmcyhhbjppccbai45nqpva7vyvry6w8nyc0fwi1vm9l";
+  };
+in
+
+stdenv.mkDerivation  {
+  # use version number of qxlwddm as qxlwddm is the most important component
+  name = "win-spice-0.11";
+  version = "0.11";
+
+  phases = [ "buildPhase" "installPhase" ];
+
+  buildPhase = ''
+    mkdir -p usbdk/x86 usbdk/amd64
+    (cd usbdk/x86; ${p7zip}/bin/7z x ${src_usbdk_x86})
+    (cd usbdk/amd64; ${p7zip}/bin/7z x ${src_usbdk_amd64})
+
+    mkdir -p vdagent/x86 vdagent/amd64
+    (cd vdagent/x86; ${p7zip}/bin/7z x ${src_vdagent_x86}; mv vdagent_0_7_3_x86/* .; rm -r vdagent_0_7_3_x86)
+    (cd vdagent/amd64; ${p7zip}/bin/7z x ${src_vdagent_amd64}; mv vdagent_0_7_3_x64/* .; rm -r vdagent_0_7_3_x64)
+
+    mkdir -p qxlwddm
+    (cd qxlwddm; ${p7zip}/bin/7z x ${src_qxlwddm}; mv Win8 w8.1; cd w8.1; mv x64 amd64)
+    '';
+
+  installPhase =
+    let
+      copy_qxl = arch: version: "mkdir -p $out/${arch}/qxl; cp qxlwddm/${version}/${arch}/* $out/${arch}/qxl/. \n";
+      copy_usbdk = arch: "mkdir -p $out/${arch}/usbdk; cp usbdk/${arch}/* $out/${arch}/usbdk/. \n";
+      copy_vdagent = arch: "mkdir -p $out/${arch}/vdagent; cp vdagent/${arch}/* $out/${arch}/vdagent/. \n";
+      # SPICE needs vioserial
+      # TODO: Link windows version in win-spice (here) to version used in win-virtio.
+      #       That way it would never matter whether vioserial is installed from win-virtio or win-spice.
+      copy_vioserial = arch: "mkdir -p $out/${arch}/vioserial; cp ${win-virtio}/${arch}/vioserial/* $out/${arch}/vioserial/. \n";
+      copy = arch: version: (copy_qxl arch version) + (copy_usbdk arch) + (copy_vdagent arch) + (copy_vioserial arch);
+    in
+      (copy "amd64" "w8.1") + (copy "x86" "w8.1");
+
+  meta = with stdenv.lib; {
+    description = "Windows SPICE Drivers";
+    homepage = "https://www.spice-space.org/";
+    license = [ licenses.asl20 ]; # See https://github.com/vrozenfe/qxl-dod
+    maintainers = [ maintainers.tstrobel ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/driver/win-virtio/default.nix b/nixpkgs/pkgs/applications/virtualization/driver/win-virtio/default.nix
new file mode 100644
index 000000000000..f8a52f5b898d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/driver/win-virtio/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, p7zip }:
+stdenv.mkDerivation rec {
+  pname = "win-virtio";
+  version = "0.1.141-1";
+
+  phases = [ "buildPhase" "installPhase" ];
+
+  src = fetchurl {
+    url = "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-${version}/virtio-win.iso";
+    sha256 = "0mn5gcgb9dk59nrw9scdza628yiji4vdkxmixikn9v02kgwnkja3";
+  };
+
+  buildPhase = ''
+    ${p7zip}/bin/7z x $src
+    '';
+
+  installPhase =
+    let
+      copy = arch: version: {input, output}: "mkdir -p $out/${arch}/${output}; cp ${input}/${version}/${arch}/* $out/${arch}/${output}/.";
+      virtio = [{input="Balloon"; output="vioballoon";}
+                {input="NetKVM"; output="vionet";}
+                {input="vioscsi"; output="vioscsi";}
+                {input="vioserial"; output="vioserial";}
+                {input="viostor"; output="viostor";}
+                {input="viorng"; output="viorng";}
+               ];
+    in
+      stdenv.lib.concatStringsSep "\n" ((map (copy "amd64" "w8.1") virtio) ++ (map (copy "x86" "w8.1") virtio));
+
+  meta = with stdenv.lib; {
+    description = "Windows VirtIO Drivers";
+    homepage = "https://fedoraproject.org/wiki/Windows_Virtio_Drivers";
+    maintainers = [ maintainers.tstrobel ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/dumb-init/default.nix b/nixpkgs/pkgs/applications/virtualization/dumb-init/default.nix
new file mode 100644
index 000000000000..c7be90222c2e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/dumb-init/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, glibc }:
+
+stdenv.mkDerivation rec {
+  pname = "dumb-init";
+  version = "1.2.2";
+
+  src = fetchFromGitHub {
+    owner = "Yelp";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "15hgl8rz5dmrl5gx21sq5269l1hq539qn68xghjx0bv9hgbx0g20";
+  };
+
+  buildInputs = [ glibc.static ];
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm755 -t $out/bin dumb-init
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A minimal init system for Linux containers";
+    homepage = "https://github.com/Yelp/dumb-init";
+    license = licenses.mit;
+    maintainers = [ maintainers.marsam ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/dynamips/default.nix b/nixpkgs/pkgs/applications/virtualization/dynamips/default.nix
new file mode 100644
index 000000000000..6f35257b50fd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/dynamips/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, cmake, libelf, libpcap }:
+
+stdenv.mkDerivation rec {
+  pname = "dynamips";
+  version = "0.2.21";
+
+  src = fetchFromGitHub {
+    owner = "GNS3";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0pvdqs6kjz0x0wqb5f1k3r25dg82wssm7wz4psm0m6bxsvf5l0i5";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ libelf libpcap ];
+
+  cmakeFlags = [ "-DDYNAMIPS_CODE=stable" ];
+
+  meta = with stdenv.lib; {
+    description = "A Cisco router emulator";
+    longDescription = ''
+      Dynamips is an emulator computer program that was written to emulate Cisco
+      routers.
+    '';
+    inherit (src.meta) homepage;
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/ecs-agent/default.nix b/nixpkgs/pkgs/applications/virtualization/ecs-agent/default.nix
new file mode 100644
index 000000000000..691c74301e39
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/ecs-agent/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, buildGoPackage }:
+
+buildGoPackage rec {
+  pname   = "amazon-ecs-agent";
+  version = "1.18.0";
+
+  goPackagePath = "github.com/aws/${pname}";
+  subPackages   = [ "agent" ];
+
+  src = fetchFromGitHub {
+    rev    = "v${version}";
+    owner  = "aws";
+    repo   = pname;
+    sha256 = "1l6c2if6wpjmq2hh6k818w38s1rsbwgd6igqy948dwcrb1g1mixr";
+  };
+
+  meta = with stdenv.lib; {
+    description = "The agent that runs on AWS EC2 container instances and starts containers on behalf of Amazon ECS";
+    homepage    = "https://github.com/aws/amazon-ecs-agent";
+    license     = licenses.asl20;
+    platforms   = platforms.unix;
+    maintainers = with maintainers; [ copumpkin ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/virtualization/firecracker/default.nix b/nixpkgs/pkgs/applications/virtualization/firecracker/default.nix
new file mode 100644
index 000000000000..79d1b606bcba
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/firecracker/default.nix
@@ -0,0 +1,61 @@
+{ fetchurl, stdenv }:
+
+let
+  version = "0.21.1";
+
+  suffix = {
+    x86_64-linux  = "x86_64";
+    aarch64-linux = "aarch64";
+  }."${stdenv.hostPlatform.system}" or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
+
+  baseurl = "https://github.com/firecracker-microvm/firecracker/releases/download";
+  fetchbin = name: sha256: fetchurl {
+    url    = "${baseurl}/v${version}/${name}-v${version}-${suffix}";
+    sha256 = sha256."${stdenv.hostPlatform.system}";
+  };
+
+  firecracker-bin = fetchbin "firecracker" {
+    x86_64-linux = "0g4fja3bz1fsyz8vj99199yblkn46ygf33ldwd1ssw8f957vbwnb";
+    aarch64-linux = "1qyppcxnh7f42fs4px5rvkk6lza57h2sq9naskvqn5zy4vsvq89s";
+  };
+
+  jailer-bin = fetchbin "jailer" {
+    x86_64-linux = "0x89pfmqci9d3i9fi9b9zm94yr2v7pq7kp3drlb952jkdfj0njyk";
+    aarch64-linux = "03fx9sk88jm23wqm8fraqd1ccfhbqvc310mkfv1f5p2ykhq2ahrk";
+  };
+
+in
+stdenv.mkDerivation {
+  pname = "firecracker";
+  inherit version;
+  srcs = [ firecracker-bin jailer-bin ];
+
+  unpackPhase    = ":";
+  configurePhase = ":";
+
+  buildPhase     = ''
+    cp ${firecracker-bin} firecracker
+    cp ${jailer-bin}      jailer
+    chmod +x firecracker jailer
+  '';
+
+  doCheck = true;
+  checkPhase = ''
+    ./firecracker --version
+    ./jailer --version
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install -D firecracker $out/bin/firecracker
+    install -D jailer      $out/bin/jailer
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Secure, fast, minimal micro-container virtualization";
+    homepage    = "http://firecracker-microvm.io";
+    license     = licenses.asl20;
+    platforms   = [ "x86_64-linux" "aarch64-linux" ];
+    maintainers = with maintainers; [ thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/firectl/default.nix b/nixpkgs/pkgs/applications/virtualization/firectl/default.nix
new file mode 100644
index 000000000000..47ae4637b57e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/firectl/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "firectl";
+  version = "0.1.0";
+
+  patches = [ ./gomod.patch ];
+
+  src = fetchFromGitHub {
+    owner = "firecracker-microvm";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1ni3yx4rjhrkqk2038c6hkb2jwsdj2llx233wd5wgpvb6c57652p";
+  };
+
+  vendorSha256 = "1xbpck1gvzl75xgrajf5yzl199l4f2f6j3mac5586i7b00b9jxqj";
+
+  meta = with stdenv.lib; {
+    description = "A command-line tool to run Firecracker microVMs";
+    homepage = "https://github.com/firecracker-microvm/firectl";
+    license = licenses.asl20;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ xrelkd ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/virtualization/firectl/gomod.patch b/nixpkgs/pkgs/applications/virtualization/firectl/gomod.patch
new file mode 100644
index 000000000000..96c65e728221
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/firectl/gomod.patch
@@ -0,0 +1,15 @@
+diff --git a/go.mod b/go.mod
+index 1044001..7bafeda 100644
+--- a/go.mod
++++ b/go.mod
+@@ -1,7 +1,10 @@
+ module github.com/firecracker-microvm/firectl
+ 
++go 1.14
++
+ require (
+ 	github.com/firecracker-microvm/firecracker-go-sdk v0.15.1
++	github.com/go-openapi/strfmt v0.17.1
+ 	github.com/jessevdk/go-flags v1.4.0
+ 	github.com/pkg/errors v0.8.0
+ 	github.com/sirupsen/logrus v1.1.1
diff --git a/nixpkgs/pkgs/applications/virtualization/gvisor/containerd-shim.nix b/nixpkgs/pkgs/applications/virtualization/gvisor/containerd-shim.nix
new file mode 100644
index 000000000000..97623511222f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/gvisor/containerd-shim.nix
@@ -0,0 +1,36 @@
+{ lib, fetchFromGitHub, buildGoModule }:
+
+buildGoModule rec {
+  name = "gvisor-containerd-shim-${version}";
+  version = "2019-10-09";
+
+  src = fetchFromGitHub {
+    owner  = "google";
+    repo   = "gvisor-containerd-shim";
+    rev    = "f299b553afdd8455a0057862004061ea12e660f5";
+    sha256 = "077bhrmjrpcxv1z020yxhx2c4asn66j21gxlpa6hz0av3lfck9lm";
+  };
+
+  vendorSha256 = "11jai5jl024k7wbhz4a3zzdbvl0si07jwgwmyr8bn4i0nqx8ig2k";
+
+  buildPhase = ''
+    make
+  '';
+
+  doCheck = true;
+  checkPhase = ''
+    make test
+  '';
+
+  installPhase = ''
+    make install DESTDIR="$out"
+  '';
+
+  meta = with lib; {
+    description = "containerd shim for gVisor";
+    homepage    = "https://github.com/google/gvisor-containerd-shim";
+    license     = licenses.asl20;
+    maintainers = with maintainers; [ andrew-d ];
+    platforms   = [ "x86_64-linux" ];
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/virtualization/gvisor/default.nix b/nixpkgs/pkgs/applications/virtualization/gvisor/default.nix
new file mode 100644
index 000000000000..74a408952a22
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/gvisor/default.nix
@@ -0,0 +1,101 @@
+{ stdenv
+, buildBazelPackage
+, fetchFromGitHub
+, cacert
+, git
+, glibcLocales
+, go
+, iproute
+, iptables
+, makeWrapper
+, procps
+, python3
+}:
+
+let
+  preBuild = ''
+    patchShebangs .
+
+    # Tell rules_go to use the Go binary found in the PATH
+    sed -E -i \
+      -e 's|go_version\s*=\s*"[^"]+",|go_version = "host",|g' \
+      WORKSPACE
+
+    # The gazelle Go tooling needs CA certs
+    export SSL_CERT_FILE="${cacert}/etc/ssl/certs/ca-bundle.crt"
+
+    # If we don't reset our GOPATH, the rules_go stdlib builder tries to
+    # install something into it. Ideally that wouldn't happen, but for now we
+    # can also get around it by unsetting GOPATH entirely, since rules_go
+    # doesn't need it.
+    export GOPATH=
+  '';
+
+in buildBazelPackage rec {
+  name = "gvisor-${version}";
+  version = "2019-11-14";
+
+  src = fetchFromGitHub {
+    owner = "google";
+    repo  = "gvisor";
+    rev   = "release-20191114.0";
+    sha256 = "0kyixjjlws9iz2r2srgpdd4rrq94vpxkmh2rmmzxd9mcqy2i9bg1";
+  };
+
+  nativeBuildInputs = [ git glibcLocales go makeWrapper python3 ];
+
+  bazelTarget = "//runsc:runsc";
+
+  # gvisor uses the Starlark implementation of rules_cc, not the built-in one,
+  # so we shouldn't delete it from our dependencies.
+  removeRulesCC = false;
+
+  fetchAttrs = {
+    inherit preBuild;
+
+    preInstall = ''
+      # Remove the go_sdk (it's just a copy of the go derivation) and all
+      # references to it from the marker files. Bazel does not need to download
+      # this sdk because we have patched the WORKSPACE file to point to the one
+      # currently present in PATH. Without removing the go_sdk from the marker
+      # file, the hash of it will change anytime the Go derivation changes and
+      # that would lead to impurities in the marker files which would result in
+      # a different sha256 for the fetch phase.
+      rm -rf $bazelOut/external/{go_sdk,\@go_sdk.marker}
+
+      # Remove the gazelle tools, they contain go binaries that are built
+      # non-deterministically. As long as the gazelle version matches the tools
+      # should be equivalent.
+      rm -rf $bazelOut/external/{bazel_gazelle_go_repository_tools,\@bazel_gazelle_go_repository_tools.marker}
+
+      # Remove the gazelle repository cache
+      chmod -R +w $bazelOut/external/bazel_gazelle_go_repository_cache
+      rm -rf $bazelOut/external/{bazel_gazelle_go_repository_cache,\@bazel_gazelle_go_repository_cache.marker}
+
+      # Remove log file(s)
+      rm -f "$bazelOut"/java.log "$bazelOut"/java.log.*
+    '';
+
+    sha256 = "164r8m95g7njh232xfc7zcn1nssaw9bnin9k7ssj9mk6z7z9zy5v";
+  };
+
+  buildAttrs = {
+    inherit preBuild;
+
+    installPhase = ''
+      install -Dm755 bazel-bin/runsc/*_pure_stripped/runsc $out/bin/runsc
+
+      # Needed for the 'runsc do' subcomand
+      wrapProgram $out/bin/runsc \
+        --prefix PATH : ${stdenv.lib.makeBinPath [ iproute iptables procps ]}
+    '';
+  };
+
+  meta = with stdenv.lib; {
+    description = "Container Runtime Sandbox";
+    homepage = "https://github.com/google/gvisor";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ andrew-d ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/hercules/default.nix b/nixpkgs/pkgs/applications/virtualization/hercules/default.nix
new file mode 100644
index 000000000000..901e2f0b6ec0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/hercules/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "hercules";
+  version = "3.13";
+
+  src = fetchurl {
+    url = "http://downloads.hercules-390.eu/${pname}-${version}.tar.gz";
+    sha256 = "0zg6rwz8ib4alibf8lygi8qn69xx8n92kbi8b3jhi1ymb32mf349";
+  };
+
+  meta = with stdenv.lib; {
+    description = "IBM mainframe emulator";
+    homepage = "http://www.hercules-390.eu";
+    license = licenses.qpl;
+    maintainers = [ maintainers.dkudriavtsev ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/lkl/default.nix b/nixpkgs/pkgs/applications/virtualization/lkl/default.nix
new file mode 100644
index 000000000000..7a6ccc67bb50
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/lkl/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, fetchFromGitHub, bc, python, bison, flex, fuse, libarchive
+, buildPackages }:
+
+stdenv.mkDerivation rec {
+  pname = "lkl";
+  version = "2019-10-04";
+  rev  = "06ca3ddb74dc5b84fa54fa1746737f2df502e047";
+
+  outputs = [ "dev" "lib" "out" ];
+
+  nativeBuildInputs = [ bc bison flex python ];
+
+  buildInputs = [ fuse libarchive ];
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner  = "lkl";
+    repo   = "linux";
+    sha256 = "0qjp0r338bwgrqdsvy5mkdh7ryas23m47yvxfwdknfyl0k3ylq62";
+  };
+
+  # Fix a /usr/bin/env reference in here that breaks sandboxed builds
+  prePatch = "patchShebangs arch/lkl/scripts";
+  # Fixup build with newer Linux headers: https://github.com/lkl/linux/pull/484
+  postPatch = "sed '1i#include <linux/sockios.h>' -i tools/lkl/lib/hijack/xlate.c";
+
+  installPhase = ''
+    mkdir -p $out/bin $lib/lib $dev
+
+    cp tools/lkl/bin/lkl-hijack.sh $out/bin
+    sed -i $out/bin/lkl-hijack.sh \
+        -e "s,LD_LIBRARY_PATH=.*,LD_LIBRARY_PATH=$lib/lib,"
+
+    cp tools/lkl/{cptofs,fs2tar,lklfuse} $out/bin
+    ln -s cptofs $out/bin/cpfromfs
+    cp -r tools/lkl/include $dev/
+    cp tools/lkl/liblkl.a \
+       tools/lkl/lib/liblkl.so \
+       tools/lkl/lib/hijack/liblkl-hijack.so $lib/lib
+  '';
+
+  # We turn off format and fortify because of these errors (fortify implies -O2, which breaks the jitter entropy code):
+  #   fs/xfs/xfs_log_recover.c:2575:3: error: format not a string literal and no format arguments [-Werror=format-security]
+  #   crypto/jitterentropy.c:54:3: error: #error "The CPU Jitter random number generator must not be compiled with optimizations. See documentation. Use the compiler switch -O0 for compiling jitterentropy.c."
+  hardeningDisable = [ "format" "fortify" ];
+
+  makeFlags = [
+    "-C tools/lkl"
+    "CC=${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc"
+    "HOSTCC=${buildPackages.stdenv.cc}/bin/${buildPackages.stdenv.cc.targetPrefix}cc"
+    "CROSS_COMPILE=${stdenv.cc.targetPrefix}"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "The Linux kernel as a library";
+    longDescription = ''
+      LKL (Linux Kernel Library) aims to allow reusing the Linux kernel code as
+      extensively as possible with minimal effort and reduced maintenance
+      overhead
+    '';
+    homepage    = "https://github.com/lkl/linux/";
+    platforms   = [ "x86_64-linux" "aarch64-linux" "armv7l-linux" "armv6l-linux" ]; # Darwin probably works too but I haven't tested it
+    license     = licenses.gpl2;
+    maintainers = with maintainers; [ copumpkin ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/looking-glass-client/default.nix b/nixpkgs/pkgs/applications/virtualization/looking-glass-client/default.nix
new file mode 100644
index 000000000000..a0ec55dd895b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/looking-glass-client/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchFromGitHub, fetchpatch
+, cmake, pkgconfig, SDL2, SDL, SDL2_ttf, openssl, spice-protocol, fontconfig
+, libX11, freefont_ttf, nettle, libconfig, wayland, libpthreadstubs, libXdmcp
+, libXfixes, libbfd
+}:
+
+stdenv.mkDerivation rec {
+  pname = "looking-glass-client";
+  version = "B1";
+
+  src = fetchFromGitHub {
+    owner = "gnif";
+    repo = "LookingGlass";
+    rev = version;
+    sha256 = "0vykv7yjz4fima9d82m83acd8ab72nq4wyzyfs1c499i27wz91ia";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [
+    SDL SDL2 SDL2_ttf openssl spice-protocol fontconfig
+    libX11 freefont_ttf nettle libconfig wayland libpthreadstubs
+    libXdmcp libXfixes libbfd cmake
+  ];
+
+  enableParallelBuilding = true;
+
+  sourceRoot = "source/client";
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mv looking-glass-client $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A KVM Frame Relay (KVMFR) implementation";
+    longDescription = ''
+      Looking Glass is an open source application that allows the use of a KVM
+      (Kernel-based Virtual Machine) configured for VGA PCI Pass-through
+      without an attached physical monitor, keyboard or mouse. This is the final
+      step required to move away from dual booting with other operating systems
+      for legacy programs that require high performance graphics.
+    '';
+    homepage = "https://looking-glass.hostfission.com/";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.alexbakker ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/nvidia-docker/config.toml b/nixpkgs/pkgs/applications/virtualization/nvidia-docker/config.toml
new file mode 100644
index 000000000000..bbd166995f36
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/nvidia-docker/config.toml
@@ -0,0 +1,13 @@
+disable-require = false
+#swarm-resource = "DOCKER_RESOURCE_GPU"
+
+[nvidia-container-cli]
+#root = "/run/nvidia/driver"
+#path = "/usr/bin/nvidia-container-cli"
+environment = []
+#debug = "/var/log/nvidia-container-runtime-hook.log"
+ldcache = "/tmp/ld.so.cache"
+load-kmods = true
+#no-cgroups = false
+#user = "root:video"
+ldconfig = "@@glibcbin@/bin/ldconfig"
diff --git a/nixpkgs/pkgs/applications/virtualization/nvidia-docker/default.nix b/nixpkgs/pkgs/applications/virtualization/nvidia-docker/default.nix
new file mode 100644
index 000000000000..b56b88cf87ef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/nvidia-docker/default.nix
@@ -0,0 +1,84 @@
+{ stdenv, lib, fetchFromGitHub, fetchpatch, callPackage, makeWrapper
+, buildGoPackage, runc, glibc }:
+
+with lib; let
+
+  glibc-ldconf = glibc.overrideAttrs (oldAttrs: {
+    # ldconfig needs help reading libraries that have been patchelf-ed, as the
+    # .dynstr section is no longer in the first LOAD segment. See also
+    # https://sourceware.org/bugzilla/show_bug.cgi?id=23964 and
+    # https://github.com/NixOS/patchelf/issues/44
+    patches = oldAttrs.patches ++ [ (fetchpatch {
+      name = "ldconfig-patchelf.patch";
+      url = "https://sourceware.org/bugzilla/attachment.cgi?id=11444";
+      sha256 = "0nzzmq7pli37iyjrgcmvcy92piiwjybpw245ds7q43pbgdm7lc3s";
+    })];
+  });
+
+  libnvidia-container = callPackage ./libnvc.nix { };
+
+  nvidia-container-runtime = fetchFromGitHub {
+    owner = "NVIDIA";
+    repo = "nvidia-container-runtime";
+    rev = "runtime-v2.0.0";
+    sha256 = "0jcj5xxbg7x7gyhbb67h3ds6vly62gx7j02zm6lg102h34jajj7a";
+  };
+
+  nvidia-container-runtime-hook = buildGoPackage {
+    pname = "nvidia-container-runtime-hook";
+    version = "1.4.0";
+
+    goPackagePath = "nvidia-container-runtime-hook";
+
+    src = "${nvidia-container-runtime}/hook/nvidia-container-runtime-hook";
+  };
+
+  nvidia-runc = runc.overrideAttrs (oldAttrs: rec {
+    name = "nvidia-runc";
+    version = "1.0.0-rc6";
+    src = fetchFromGitHub {
+      owner = "opencontainers";
+      repo = "runc";
+      rev = "v${version}";
+      sha256 = "1jwacb8xnmx5fr86gximhbl9dlbdwj3rpf27hav9q1si86w5pb1j";
+    };
+    patches = [ "${nvidia-container-runtime}/runtime/runc/3f2f8b84a77f73d38244dd690525642a72156c64/0001-Add-prestart-hook-nvidia-container-runtime-hook-to-t.patch" ];
+  });
+
+in stdenv.mkDerivation rec {
+  pname = "nvidia-docker";
+  version = "2.0.3";
+
+  src = fetchFromGitHub {
+    owner = "NVIDIA";
+    repo = "nvidia-docker";
+    rev = "v${version}";
+    sha256 = "1vx5m591mnvcb9vy0196x5lh3r8swjsk0fnlv5h62m7m4m07v6wx";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildPhase = ''
+    mkdir bin
+    cp nvidia-docker bin
+    cp ${libnvidia-container}/bin/nvidia-container-cli bin
+    cp ${nvidia-container-runtime-hook}/bin/nvidia-container-runtime-hook bin
+    cp ${nvidia-runc}/bin/runc bin/nvidia-container-runtime
+  '';
+
+  installPhase = ''
+    mkdir -p $out/{bin,etc}
+    cp -r bin $out
+    wrapProgram $out/bin/nvidia-container-cli \
+      --prefix LD_LIBRARY_PATH : /run/opengl-driver/lib:/run/opengl-driver-32/lib
+    cp ${./config.toml} $out/etc/config.toml
+    substituteInPlace $out/etc/config.toml --subst-var-by glibcbin ${lib.getBin glibc-ldconf}
+  '';
+
+  meta = {
+    homepage = "https://github.com/NVIDIA/nvidia-docker";
+    description = "NVIDIA container runtime for Docker";
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/nvidia-docker/libnvc-ldconfig-and-path-fixes.patch b/nixpkgs/pkgs/applications/virtualization/nvidia-docker/libnvc-ldconfig-and-path-fixes.patch
new file mode 100644
index 000000000000..9ae8d6b5e756
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/nvidia-docker/libnvc-ldconfig-and-path-fixes.patch
@@ -0,0 +1,130 @@
+diff --git a/src/ldcache.c b/src/ldcache.c
+index 38bab05..e1abc89 100644
+--- a/src/ldcache.c
++++ b/src/ldcache.c
+@@ -108,40 +108,27 @@ ldcache_close(struct ldcache *ctx)
+ 
+ int
+ ldcache_resolve(struct ldcache *ctx, uint32_t arch, const char *root, const char * const libs[],
+-    char *paths[], size_t size, ldcache_select_fn select, void *select_ctx)
++    char *paths[], size_t size, const char* version)
+ {
+         char path[PATH_MAX];
+-        struct header_libc6 *h;
+-        int override;
++        char dir[PATH_MAX];
++        char lib[PATH_MAX];
+ 
+-        h = (struct header_libc6 *)ctx->ptr;
+         memset(paths, 0, size * sizeof(*paths));
+ 
+-        for (uint32_t i = 0; i < h->nlibs; ++i) {
+-                int32_t flags = h->libs[i].flags;
+-                char *key = (char *)ctx->ptr + h->libs[i].key;
+-                char *value = (char *)ctx->ptr + h->libs[i].value;
+-
+-                if (!(flags & LD_ELF) || (flags & LD_ARCH_MASK) != arch)
++        for (size_t j = 0; j < size; ++j) {
++                snprintf(dir, 100, "/run/opengl-driver%s/lib",
++                    arch == LD_I386_LIB32 ? "-32" : "");
++                if (!strncmp(libs[j], "libvdpau_nvidia.so", 100))
++                  strcat(dir, "/vdpau");
++                snprintf(lib, 100, "%s/%s.%s", dir, libs[j], version);
++                if (path_resolve_full(ctx->err, path, "/", lib) < 0)
++                        return (-1);
++                if (!file_exists(ctx->err, path))
+                         continue;
+-
+-                for (size_t j = 0; j < size; ++j) {
+-                        if (!str_has_prefix(key, libs[j]))
+-                                continue;
+-                        if (path_resolve(ctx->err, path, root, value) < 0)
+-                                return (-1);
+-                        if (paths[j] != NULL && str_equal(paths[j], path))
+-                                continue;
+-                        if ((override = select(ctx->err, select_ctx, root, paths[j], path)) < 0)
+-                                return (-1);
+-                        if (override) {
+-                                free(paths[j]);
+-                                paths[j] = xstrdup(ctx->err, path);
+-                                if (paths[j] == NULL)
+-                                        return (-1);
+-                        }
+-                        break;
+-                }
++                paths[j] = xstrdup(ctx->err, path);
++                if (paths[j] == NULL)
++                        return (-1);
+         }
+         return (0);
+ }
+diff --git a/src/ldcache.h b/src/ldcache.h
+index 33d78dd..2b087db 100644
+--- a/src/ldcache.h
++++ b/src/ldcache.h
+@@ -50,6 +50,6 @@ void ldcache_init(struct ldcache *, struct error *, const char *);
+ int  ldcache_open(struct ldcache *);
+ int  ldcache_close(struct ldcache *);
+ int  ldcache_resolve(struct ldcache *, uint32_t, const char *, const char * const [],
+-    char *[], size_t, ldcache_select_fn, void *);
++    char *[], size_t, const char*);
+ 
+ #endif /* HEADER_LDCACHE_H */
+diff --git a/src/nvc_info.c b/src/nvc_info.c
+index 30e3cfd..6d12a50 100644
+--- a/src/nvc_info.c
++++ b/src/nvc_info.c
+@@ -167,15 +167,13 @@ find_library_paths(struct error *err, struct nvc_driver_info *info, const char *
+         if (path_resolve_full(err, path, root, ldcache) < 0)
+                 return (-1);
+         ldcache_init(&ld, err, path);
+-        if (ldcache_open(&ld) < 0)
+-                return (-1);
+ 
+         info->nlibs = size;
+         info->libs = array_new(err, size);
+         if (info->libs == NULL)
+                 goto fail;
+         if (ldcache_resolve(&ld, LIB_ARCH, root, libs,
+-            info->libs, info->nlibs, select_libraries, info) < 0)
++            info->libs, info->nlibs, info->nvrm_version) < 0)
+                 goto fail;
+ 
+         info->nlibs32 = size;
+@@ -183,13 +181,11 @@ find_library_paths(struct error *err, struct nvc_driver_info *info, const char *
+         if (info->libs32 == NULL)
+                 goto fail;
+         if (ldcache_resolve(&ld, LIB32_ARCH, root, libs,
+-            info->libs32, info->nlibs32, select_libraries, info) < 0)
++            info->libs32, info->nlibs32, info->nvrm_version) < 0)
+                 goto fail;
+         rv = 0;
+ 
+  fail:
+-        if (ldcache_close(&ld) < 0)
+-                return (-1);
+         return (rv);
+ }
+ 
+@@ -203,7 +199,7 @@ find_binary_paths(struct error *err, struct nvc_driver_info *info, const char *r
+         char path[PATH_MAX];
+         int rv = -1;
+ 
+-        if ((env = secure_getenv("PATH")) == NULL) {
++        if ((env = "/run/nvidia-docker/bin:/run/nvidia-docker/extras/bin") == NULL) {
+                 error_setx(err, "environment variable PATH not found");
+                 return (-1);
+         }
+diff --git a/src/nvc_ldcache.c b/src/nvc_ldcache.c
+index 6ff380f..cbe6a69 100644
+--- a/src/nvc_ldcache.c
++++ b/src/nvc_ldcache.c
+@@ -340,7 +340,7 @@ nvc_ldcache_update(struct nvc_context *ctx, const struct nvc_container *cnt)
+         if (validate_args(ctx, cnt != NULL) < 0)
+                 return (-1);
+ 
+-        argv = (char * []){cnt->cfg.ldconfig, cnt->cfg.libs_dir, cnt->cfg.libs32_dir, NULL};
++        argv = (char * []){cnt->cfg.ldconfig, "-f", "/tmp/ld.so.conf.nvidia-host", "-C", "/tmp/ld.so.cache.nvidia-host", cnt->cfg.libs_dir, cnt->cfg.libs32_dir, NULL};
+         if (*argv[0] == '@') {
+                 /*
+                  * We treat this path specially to be relative to the host filesystem.
diff --git a/nixpkgs/pkgs/applications/virtualization/nvidia-docker/libnvc.nix b/nixpkgs/pkgs/applications/virtualization/nvidia-docker/libnvc.nix
new file mode 100644
index 000000000000..5b97d7fffa29
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/nvidia-docker/libnvc.nix
@@ -0,0 +1,55 @@
+{ stdenv, lib, fetchFromGitHub, pkgconfig, libelf, libcap, libseccomp }:
+
+with lib; let
+
+  modp-ver = "396.51";
+
+  nvidia-modprobe = fetchFromGitHub {
+    owner = "NVIDIA";
+    repo = "nvidia-modprobe";
+    rev = modp-ver;
+    sha256 = "1fw2qwc84k64agw6fx2v0mjf88aggph9c6qhs4cv7l3gmflv8qbk";
+  };
+
+in stdenv.mkDerivation rec {
+  pname = "libnvidia-container";
+  version = "1.0.6";
+
+  src = fetchFromGitHub {
+    owner = "NVIDIA";
+    repo = "libnvidia-container";
+    rev = "v${version}";
+    sha256 = "1pnpc9knwh8d1zqb28zc3spkjc00w0z10vd3jna8ksvpl35jl7w3";
+  };
+
+  # locations of nvidia-driver libraries are not resolved via ldconfig which
+  # doesn't get used on NixOS. Additional support binaries like nvidia-smi are
+  # not resolved via the environment PATH but via the derivation output path.
+  patches = [ ./libnvc-ldconfig-and-path-fixes.patch ];
+
+  makeFlags = [
+    "WITH_LIBELF=yes"
+    "prefix=$(out)"
+  ];
+
+  postPatch = ''
+    sed -i 's/^REVISION :=.*/REVISION = ${src.rev}/' mk/common.mk
+    sed -i 's/^COMPILER :=.*/COMPILER = $(CC)/' mk/common.mk
+
+    mkdir -p deps/src/nvidia-modprobe-${modp-ver}
+    cp -r ${nvidia-modprobe}/* deps/src/nvidia-modprobe-${modp-ver}
+    chmod -R u+w deps/src
+    touch deps/src/nvidia-modprobe-${modp-ver}/.download_stamp
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ libelf libcap libseccomp ];
+
+  meta = {
+    homepage = "https://github.com/NVIDIA/libnvidia-container";
+    description = "NVIDIA container runtime library";
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/open-vm-tools/default.nix b/nixpkgs/pkgs/applications/virtualization/open-vm-tools/default.nix
new file mode 100644
index 000000000000..84f74ef6dd03
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/open-vm-tools/default.nix
@@ -0,0 +1,76 @@
+{ stdenv, lib, fetchFromGitHub, makeWrapper, autoreconfHook,
+  fuse, libmspack, openssl, pam, xercesc, icu, libdnet, procps,
+  libX11, libXext, libXinerama, libXi, libXrender, libXrandr, libXtst,
+  pkgconfig, glib, gtk3, gtkmm3, iproute, dbus, systemd, which,
+  withX ? true }:
+
+stdenv.mkDerivation rec {
+  pname = "open-vm-tools";
+  version = "11.0.5";
+
+  src = fetchFromGitHub {
+    owner  = "vmware";
+    repo   = "open-vm-tools";
+    rev    = "stable-${version}";
+    sha256 = "0idh8dqwb1df2di689090k9x1iap35jk3wg8yb1g70byichmscqb";
+  };
+
+  sourceRoot = "${src.name}/open-vm-tools";
+
+  outputs = [ "out" "dev" ];
+
+  nativeBuildInputs = [ autoreconfHook makeWrapper pkgconfig ];
+  buildInputs = [ fuse glib icu libdnet libmspack openssl pam procps xercesc ]
+      ++ lib.optionals withX [ gtk3 gtkmm3 libX11 libXext libXinerama libXi libXrender libXrandr libXtst ];
+
+  patches = [ ./recognize_nixos.patch ];
+  postPatch = ''
+     # Build bugfix for 10.1.0, stolen from Arch PKGBUILD
+     mkdir -p common-agent/etc/config
+     sed -i 's|.*common-agent/etc/config/Makefile.*|\\|' configure.ac
+
+     sed -i 's,etc/vmware-tools,''${prefix}/etc/vmware-tools,' Makefile.am
+     sed -i 's,^confdir = ,confdir = ''${prefix},' scripts/Makefile.am
+     sed -i 's,etc/vmware-tools,''${prefix}/etc/vmware-tools,' services/vmtoolsd/Makefile.am
+     sed -i 's,$(PAM_PREFIX),''${prefix}/$(PAM_PREFIX),' services/vmtoolsd/Makefile.am
+     sed -i 's,$(UDEVRULESDIR),''${prefix}/$(UDEVRULESDIR),' udev/Makefile.am
+
+     # Avoid a glibc >= 2.25 deprecation warning that gets fatal via -Werror.
+     sed 1i'#include <sys/sysmacros.h>' -i lib/wiper/wiperPosix.c
+
+     # Make reboot work, shutdown is not in /sbin on NixOS
+     sed -i 's,/sbin/shutdown,shutdown,' lib/system/systemLinux.c
+  '';
+
+  configureFlags = [ "--without-kernel-modules" "--without-xmlsecurity" ]
+    ++ lib.optional (!withX) "--without-x";
+
+  enableParallelBuilding = true;
+
+  NIX_CFLAGS_COMPILE = builtins.toString [
+    # igrone glib-2.62 deprecations
+    # Drop in next stable release.
+    "-DGLIB_DISABLE_DEPRECATION_WARNINGS"
+
+    # fix build with gcc9
+    "-Wno-error=address-of-packed-member"
+    "-Wno-error=format-overflow"
+  ];
+
+  postInstall = ''
+    wrapProgram "$out/etc/vmware-tools/scripts/vmware/network" \
+      --prefix PATH ':' "${lib.makeBinPath [ iproute dbus systemd which ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/vmware/open-vm-tools";
+    description = "Set of tools for VMWare guests to improve host-guest interaction";
+    longDescription = ''
+      A set of services and modules that enable several features in VMware products for
+      better management of, and seamless user interactions with, guests.
+    '';
+    license = licenses.gpl2;
+    platforms =  [ "x86_64-linux" "i686-linux" ];
+    maintainers = with maintainers; [ joamaki ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/open-vm-tools/recognize_nixos.patch b/nixpkgs/pkgs/applications/virtualization/open-vm-tools/recognize_nixos.patch
new file mode 100644
index 000000000000..95b0951b5853
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/open-vm-tools/recognize_nixos.patch
@@ -0,0 +1,33 @@
+diff --git a/lib/include/guest_os.h b/lib/include/guest_os.h
+index 868dec68..0b9a2ad7 100644
+--- a/lib/include/guest_os.h
++++ b/lib/include/guest_os.h
+@@ -278,6 +278,7 @@ Bool Gos_InSetArray(uint32 gos, const uint32 *set);
+ #define STR_OS_MANDRAKE_FULL      "Mandrake Linux"
+ #define STR_OS_MANDRIVA           "mandriva"
+ #define STR_OS_MKLINUX            "MkLinux"
++#define STR_OS_NIXOS              "NixOS"
+ #define STR_OS_NOVELL             "nld9"
+ #define STR_OS_NOVELL_FULL        "Novell Linux Desktop 9"
+ #define STR_OS_ORACLE6            "oraclelinux6"
+diff --git a/lib/misc/hostinfoPosix.c b/lib/misc/hostinfoPosix.c
+index 348a67ec..5f8beb2b 100644
+--- a/lib/misc/hostinfoPosix.c
++++ b/lib/misc/hostinfoPosix.c
+@@ -203,6 +203,7 @@ static const DistroInfo distroArray[] = {
+    { "Mandrake",           "/etc/mandrake-release"      },
+    { "Mandriva",           "/etc/mandriva-release"      },
+    { "MkLinux",            "/etc/mklinux-release"       },
++   { "NixOS",              "/etc/os-release"            },
+    { "Novell",             "/etc/nld-release"           },
+    { "OracleLinux",        "/etc/oracle-release"        },
+    { "Photon",             "/etc/lsb-release"           },
+@@ -865,6 +866,8 @@ HostinfoGetOSShortName(const char *distro,      // IN: full distro name
+       }
+    } else if (strstr(distroLower, "mandrake")) {
+       Str_Strcpy(distroShort, STR_OS_MANDRAKE, distroShortSize);
++   } else if (strstr(distroLower, "nixos")) {
++      Str_Strcpy(distroShort, STR_OS_NIXOS, distroShortSize);
+    } else if (strstr(distroLower, "turbolinux")) {
+       Str_Strcpy(distroShort, STR_OS_TURBO, distroShortSize);
+    } else if (strstr(distroLower, "sun")) {
diff --git a/nixpkgs/pkgs/applications/virtualization/podman-compose/default.nix b/nixpkgs/pkgs/applications/virtualization/podman-compose/default.nix
new file mode 100644
index 000000000000..de3d944bacb1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/podman-compose/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonApplication, fetchPypi, pyyaml }:
+
+buildPythonApplication rec {
+  version = "0.1.5";
+  pname = "podman-compose";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1sgbc889zq127qhxa9frhswa1mid19fs5qnyzfihx648y5i968pv";
+  };
+
+  propagatedBuildInputs = [ pyyaml ];
+
+  meta = {
+    description = "An implementation of docker-compose with podman backend";
+    homepage = "https://github.com/containers/podman-compose";
+    license = lib.licenses.gpl2;
+    platforms = lib.platforms.linux;
+    maintainers = [ lib.maintainers.sikmir ] ++ lib.teams.podman.members;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/podman/default.nix b/nixpkgs/pkgs/applications/virtualization/podman/default.nix
new file mode 100644
index 000000000000..3ed029e55fb4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/podman/default.nix
@@ -0,0 +1,68 @@
+{ stdenv
+, fetchFromGitHub
+, pkg-config
+, installShellFiles
+, buildGoModule
+, gpgme
+, lvm2
+, btrfs-progs
+, libapparmor
+, libseccomp
+, libselinux
+, systemd
+, go-md2man
+, nixosTests
+}:
+
+buildGoModule rec {
+  pname = "podman";
+  version = "1.9.3";
+
+  src = fetchFromGitHub {
+    owner = "containers";
+    repo = "libpod";
+    rev = "v${version}";
+    sha256 = "0gbp12xn1vliyawkw2w2bpn6b5h2cm41g3nj72vk4jyhis0igq1s";
+  };
+
+  vendorSha256 = null;
+
+  outputs = [ "out" "man" ];
+
+  nativeBuildInputs = [ pkg-config go-md2man installShellFiles ];
+
+  buildInputs = stdenv.lib.optionals stdenv.isLinux [
+    btrfs-progs
+    gpgme
+    libapparmor
+    libseccomp
+    libselinux
+    lvm2
+    systemd
+  ];
+
+  buildPhase = ''
+    patchShebangs .
+    ${if stdenv.isDarwin
+      then "make CGO_ENABLED=0 BUILDTAGS='remoteclient containers_image_openpgp exclude_graphdriver_devicemapper' varlink_generate all"
+      else "make podman docs"}
+  '';
+
+  installPhase = ''
+    install -Dm555 bin/podman $out/bin/podman
+    installShellCompletion --bash completions/bash/podman
+    installShellCompletion --zsh completions/zsh/_podman
+    MANDIR=$man/share/man make install.man
+  '';
+
+  passthru.tests.podman = nixosTests.podman;
+
+  meta = with stdenv.lib; {
+    homepage = "https://podman.io/";
+    description = "A program for managing pods, containers and container images";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ marsam ] ++ teams.podman.members;
+    platforms = platforms.unix;
+    broken = stdenv.isDarwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/podman/wrapper.nix b/nixpkgs/pkgs/applications/virtualization/podman/wrapper.nix
new file mode 100644
index 000000000000..d97d182496a4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/podman/wrapper.nix
@@ -0,0 +1,52 @@
+{ podman-unwrapped
+, runCommand
+, makeWrapper
+, lib
+, extraPackages ? []
+, podman # Docker compat
+, runc # Default container runtime
+, crun # Container runtime (default with cgroups v2 for podman/buildah)
+, conmon # Container runtime monitor
+, slirp4netns # User-mode networking for unprivileged namespaces
+, fuse-overlayfs # CoW for images, much faster than default vfs
+, utillinux # nsenter
+, cni-plugins # not added to path
+, iptables
+}:
+
+let
+  podman = podman-unwrapped;
+
+  binPath = lib.makeBinPath ([
+    runc
+    crun
+    conmon
+    slirp4netns
+    fuse-overlayfs
+    utillinux
+    iptables
+  ] ++ extraPackages);
+
+in runCommand podman.name {
+  name = "${podman.pname}-wrapper-${podman.version}";
+  inherit (podman) pname version passthru;
+
+  meta = builtins.removeAttrs podman.meta [ "outputsToInstall" ];
+
+  outputs = [
+    "out"
+    "man"
+  ];
+
+  nativeBuildInputs = [
+    makeWrapper
+  ];
+
+} ''
+  ln -s ${podman.man} $man
+
+  mkdir -p $out/bin
+  ln -s ${podman-unwrapped}/share $out/share
+  makeWrapper ${podman-unwrapped}/bin/podman $out/bin/podman \
+    --prefix PATH : ${binPath}
+''
diff --git a/nixpkgs/pkgs/applications/virtualization/qboot/default.nix b/nixpkgs/pkgs/applications/virtualization/qboot/default.nix
new file mode 100644
index 000000000000..8d1f9dac2e51
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/qboot/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, meson, ninja, fetchFromGitHub, nixosTests }:
+
+stdenv.mkDerivation {
+  name = "qboot-20200423";
+
+  src = fetchFromGitHub {
+    owner = "bonzini";
+    repo = "qboot";
+    rev = "de50b5931c08f5fba7039ddccfb249a5b3b0b18d";
+    sha256 = "1d0h29zz535m0pq18k3aya93q7lqm2858mlcp8mlfkbq54n8c5d8";
+  };
+
+  nativeBuildInputs = [ meson ninja ];
+
+  installPhase = ''
+    mkdir -p $out
+    cp bios.bin bios.bin.elf $out/.
+  '';
+
+  hardeningDisable = [ "stackprotector" "pic" ];
+
+  passthru.tests = { qboot = nixosTests.qboot; };
+
+  meta = {
+    description = "A simple x86 firmware for booting Linux";
+    homepage = "https://github.com/bonzini/qboot";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [ tstrobel ];
+    platforms = ["x86_64-linux" "i686-linux"];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/qemu/9p-ignore-noatime.patch b/nixpkgs/pkgs/applications/virtualization/qemu/9p-ignore-noatime.patch
new file mode 100644
index 000000000000..03e47a57863c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/qemu/9p-ignore-noatime.patch
@@ -0,0 +1,44 @@
+commit cdc3e7eeafa9f683214d2c15d52ef384c3de6611
+Author: aszlig <aszlig@nix.build>
+Date:   Mon Mar 18 13:21:01 2019 +0100
+
+    9pfs: Ignore O_NOATIME open flag
+    
+    Since Linux 4.19, overlayfs uses the O_NOATIME flag on its lowerdir,
+    which in turn causes errors when the Nix store is mounted in the guest
+    because the file owner of the store paths typically don't match the
+    owner of the QEMU process.
+    
+    After submitting a patch to the overlayfs mailing list[1], it turns out
+    that my patch was incomplete[2] and needs a bit more rework.
+    
+    So instead of using an incomplete kernel patch in nixpkgs, which affects
+    *all* users of overlayfs, not just NixOS VM tests, I decided that for
+    now it's better to patch QEMU instead.
+    
+    The change here really only ignores the O_NOATIME flag so that the
+    behaviour is similar to what NFS does. From open(2):
+    
+      This flag may not be effective on all filesystems. One example is NFS,
+      where the server maintains the access time.
+    
+    This change is therefore only temporary until the final fix lands in the
+    stable kernel releases.
+    
+    [1]: https://www.spinics.net/lists/linux-unionfs/msg06755.html
+    [2]: https://www.spinics.net/lists/linux-unionfs/msg06756.html
+    
+    Signed-off-by: aszlig <aszlig@nix.build>
+
+diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c
+index 55821343e5..0b8425fe18 100644
+--- a/hw/9pfs/9p.c
++++ b/hw/9pfs/9p.c
+@@ -127,7 +127,6 @@ static int dotl_to_open_flags(int flags)
+         { P9_DOTL_LARGEFILE, O_LARGEFILE },
+         { P9_DOTL_DIRECTORY, O_DIRECTORY },
+         { P9_DOTL_NOFOLLOW, O_NOFOLLOW },
+-        { P9_DOTL_NOATIME, O_NOATIME },
+         { P9_DOTL_SYNC, O_SYNC },
+     };
+ 
diff --git a/nixpkgs/pkgs/applications/virtualization/qemu/default.nix b/nixpkgs/pkgs/applications/virtualization/qemu/default.nix
new file mode 100644
index 000000000000..c5dcc2fafc68
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/qemu/default.nix
@@ -0,0 +1,166 @@
+{ stdenv, fetchurl, fetchpatch, python, zlib, pkgconfig, glib
+, ncurses, perl, pixman, vde2, alsaLib, texinfo, flex
+, bison, lzo, snappy, libaio, gnutls, nettle, curl
+, makeWrapper
+, attr, libcap, libcap_ng
+, CoreServices, Cocoa, Hypervisor, rez, setfile
+, numaSupport ? stdenv.isLinux && !stdenv.isAarch32, numactl
+, seccompSupport ? stdenv.isLinux, libseccomp
+, pulseSupport ? !stdenv.isDarwin, libpulseaudio
+, sdlSupport ? !stdenv.isDarwin, SDL2
+, gtkSupport ? !stdenv.isDarwin && !xenSupport, gtk3, gettext, vte, wrapGAppsHook
+, vncSupport ? true, libjpeg, libpng
+, smartcardSupport ? true, libcacard
+, spiceSupport ? !stdenv.isDarwin, spice, spice-protocol
+, usbredirSupport ? spiceSupport, usbredir
+, xenSupport ? false, xen
+, cephSupport ? false, ceph
+, openGLSupport ? sdlSupport, mesa, epoxy, libdrm
+, virglSupport ? openGLSupport, virglrenderer
+, smbdSupport ? false, samba
+, hostCpuOnly ? false
+, hostCpuTargets ? (if hostCpuOnly
+                    then (stdenv.lib.optional stdenv.isx86_64 "i386-softmmu"
+                          ++ ["${stdenv.hostPlatform.qemuArch}-softmmu"])
+                    else null)
+, nixosTestRunner ? false
+}:
+
+with stdenv.lib;
+let
+  audio = optionalString (hasSuffix "linux" stdenv.hostPlatform.system) "alsa,"
+    + optionalString pulseSupport "pa,"
+    + optionalString sdlSupport "sdl,";
+
+in
+
+stdenv.mkDerivation rec {
+  version = "5.0.0";
+  pname = "qemu"
+    + stdenv.lib.optionalString xenSupport "-xen"
+    + stdenv.lib.optionalString hostCpuOnly "-host-cpu-only"
+    + stdenv.lib.optionalString nixosTestRunner "-for-vm-tests";
+
+  src = fetchurl {
+    url= "https://download.qemu.org/qemu-${version}.tar.xz";
+    sha256 = "1dlcwyshdp94fwd30pddxf9bn2q8dfw5jsvry2gvdj551wmaj4rg";
+  };
+
+  nativeBuildInputs = [ python python.pkgs.sphinx pkgconfig flex bison ]
+    ++ optionals gtkSupport [ wrapGAppsHook ];
+  buildInputs =
+    [ zlib glib ncurses perl pixman
+      vde2 texinfo makeWrapper lzo snappy
+      gnutls nettle curl
+    ]
+    ++ optionals stdenv.isDarwin [ CoreServices Cocoa Hypervisor rez setfile ]
+    ++ optionals seccompSupport [ libseccomp ]
+    ++ optionals numaSupport [ numactl ]
+    ++ optionals pulseSupport [ libpulseaudio ]
+    ++ optionals sdlSupport [ SDL2 ]
+    ++ optionals gtkSupport [ gtk3 gettext vte ]
+    ++ optionals vncSupport [ libjpeg libpng ]
+    ++ optionals smartcardSupport [ libcacard ]
+    ++ optionals spiceSupport [ spice-protocol spice ]
+    ++ optionals usbredirSupport [ usbredir ]
+    ++ optionals stdenv.isLinux [ alsaLib libaio libcap_ng libcap attr ]
+    ++ optionals xenSupport [ xen ]
+    ++ optionals cephSupport [ ceph ]
+    ++ optionals openGLSupport [ mesa epoxy libdrm ]
+    ++ optionals virglSupport [ virglrenderer ]
+    ++ optionals smbdSupport [ samba ];
+
+  enableParallelBuilding = true;
+
+  outputs = [ "out" "ga" ];
+
+  patches = [
+    ./no-etc-install.patch
+    ./fix-qemu-ga.patch
+    ./9p-ignore-noatime.patch
+  ] ++ optional nixosTestRunner ./force-uid0-on-9p.patch
+    ++ optionals stdenv.hostPlatform.isMusl [
+    (fetchpatch {
+      url = "https://raw.githubusercontent.com/alpinelinux/aports/2bb133986e8fa90e2e76d53369f03861a87a74ef/main/qemu/xattr_size_max.patch";
+      sha256 = "1xfdjs1jlvs99hpf670yianb8c3qz2ars8syzyz8f2c2cp5y4bxb";
+    })
+    (fetchpatch {
+      url = "https://raw.githubusercontent.com/alpinelinux/aports/2bb133986e8fa90e2e76d53369f03861a87a74ef/main/qemu/musl-F_SHLCK-and-F_EXLCK.patch";
+      sha256 = "1gm67v41gw6apzgz7jr3zv9z80wvkv0jaxd2w4d16hmipa8bhs0k";
+    })
+    ./sigrtminmax.patch
+    (fetchpatch {
+      url = "https://raw.githubusercontent.com/alpinelinux/aports/2bb133986e8fa90e2e76d53369f03861a87a74ef/main/qemu/fix-sigevent-and-sigval_t.patch";
+      sha256 = "0wk0rrcqywhrw9hygy6ap0lfg314m9z1wr2hn8338r5gfcw75mav";
+    })
+  ];
+
+  hardeningDisable = [ "stackprotector" ];
+
+  preConfigure = ''
+    unset CPP # intereferes with dependency calculation
+  '' + optionalString stdenv.hostPlatform.isMusl ''
+    NIX_CFLAGS_COMPILE+=" -D_LINUX_SYSINFO_H"
+  '';
+
+  configureFlags =
+    [ "--audio-drv-list=${audio}"
+      "--sysconfdir=/etc"
+      "--localstatedir=/var"
+      "--enable-docs"
+      "--enable-tools"
+      "--enable-guest-agent"
+    ]
+    # disable sysctl check on darwin.
+    ++ optional stdenv.isDarwin "--cpu=x86_64"
+    ++ optional numaSupport "--enable-numa"
+    ++ optional seccompSupport "--enable-seccomp"
+    ++ optional smartcardSupport "--enable-smartcard"
+    ++ optional spiceSupport "--enable-spice"
+    ++ optional usbredirSupport "--enable-usb-redir"
+    ++ optional (hostCpuTargets != null) "--target-list=${stdenv.lib.concatStringsSep "," hostCpuTargets}"
+    ++ optional stdenv.isDarwin "--enable-cocoa"
+    ++ optional stdenv.isDarwin "--enable-hvf"
+    ++ optional stdenv.isLinux "--enable-linux-aio"
+    ++ optional gtkSupport "--enable-gtk"
+    ++ optional xenSupport "--enable-xen"
+    ++ optional cephSupport "--enable-rbd"
+    ++ optional openGLSupport "--enable-opengl"
+    ++ optional virglSupport "--enable-virglrenderer"
+    ++ optional smbdSupport "--smbd=${samba}/bin/smbd";
+
+  doCheck = false; # tries to access /dev
+  dontWrapGApps = true;
+
+  postFixup = ''
+      # copy qemu-ga (guest agent) to separate output
+      mkdir -p $ga/bin
+      cp $out/bin/qemu-ga $ga/bin/
+    '' + optionalString gtkSupport ''
+      # wrap GTK Binaries
+      for f in $out/bin/qemu-system-*; do
+        wrapGApp $f
+      done
+    '';
+
+  # Add a ‘qemu-kvm’ wrapper for compatibility/convenience.
+  postInstall = ''
+    if [ -x $out/bin/qemu-system-${stdenv.hostPlatform.qemuArch} ]; then
+      makeWrapper $out/bin/qemu-system-${stdenv.hostPlatform.qemuArch} \
+                  $out/bin/qemu-kvm \
+                  --add-flags "\$([ -e /dev/kvm ] && echo -enable-kvm)"
+    fi
+  '';
+
+  passthru = {
+    qemu-system-i386 = "bin/qemu-system-i386";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.qemu.org/";
+    description = "A generic and open source machine emulator and virtualizer";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ eelco ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/qemu/fix-qemu-ga.patch b/nixpkgs/pkgs/applications/virtualization/qemu/fix-qemu-ga.patch
new file mode 100644
index 000000000000..0b2dd0ee5ece
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/qemu/fix-qemu-ga.patch
@@ -0,0 +1,36 @@
+diff -Naur a/qga/commands-posix.c b/qga/commands-posix.c
+--- a/qga/commands-posix.c
++++ b/qga/commands-posix.c
+@@ -109,6 +109,8 @@
+         reopen_fd_to_null(1);
+         reopen_fd_to_null(2);
+ 
++        execle("/run/current-system/sw/bin/shutdown", "shutdown", "-h", shutdown_flag, "+0",
++               "hypervisor initiated shutdown", (char*)NULL, environ);
+         execle("/sbin/shutdown", "shutdown", "-h", shutdown_flag, "+0",
+                "hypervisor initiated shutdown", (char*)NULL, environ);
+         _exit(EXIT_FAILURE);
+@@ -157,11 +159,13 @@
+     pid_t pid;
+     Error *local_err = NULL;
+     struct timeval tv;
++    static const char hwclock_path_nix[] = "/run/current-system/sw/bin/hwclock";
+     static const char hwclock_path[] = "/sbin/hwclock";
+     static int hwclock_available = -1;
+ 
+     if (hwclock_available < 0) {
+-        hwclock_available = (access(hwclock_path, X_OK) == 0);
++        hwclock_available = (access(hwclock_path_nix, X_OK) == 0) ||
++                            (access(hwclock_path, X_OK) == 0);
+     }
+ 
+     if (!hwclock_available) {
+@@ -207,6 +211,8 @@
+ 
+         /* Use '/sbin/hwclock -w' to set RTC from the system time,
+          * or '/sbin/hwclock -s' to set the system time from RTC. */
++        execle(hwclock_path_nix, "hwclock", has_time ? "-w" : "-s",
++               NULL, environ);
+         execle(hwclock_path, "hwclock", has_time ? "-w" : "-s",
+                NULL, environ);
+         _exit(EXIT_FAILURE);
diff --git a/nixpkgs/pkgs/applications/virtualization/qemu/force-uid0-on-9p.patch b/nixpkgs/pkgs/applications/virtualization/qemu/force-uid0-on-9p.patch
new file mode 100644
index 000000000000..33c4ffff6fe5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/qemu/force-uid0-on-9p.patch
@@ -0,0 +1,81 @@
+diff --git a/hw/9pfs/9p-local.c b/hw/9pfs/9p-local.c
+index 45e9a1f9b0..494ee00c66 100644
+--- a/hw/9pfs/9p-local.c
++++ b/hw/9pfs/9p-local.c
+@@ -84,6 +84,23 @@ static void unlinkat_preserve_errno(int dirfd, const char *path, int flags)
+ 
+ #define VIRTFS_META_DIR ".virtfs_metadata"
+ 
++static int is_in_store_path(const char *path)
++{
++    static char *store_path = NULL;
++    int store_path_len = -1;
++
++    if (store_path_len == -1) {
++        if ((store_path = getenv("NIX_STORE")) != NULL)
++            store_path_len = strlen(store_path);
++        else
++            store_path_len = 0;
++    }
++
++    if (store_path_len > 0)
++        return strncmp(path, store_path, strlen(store_path)) == 0;
++    return 0;
++}
++
+ static FILE *local_fopenat(int dirfd, const char *name, const char *mode)
+ {
+     int fd, o_mode = 0;
+@@ -161,6 +178,8 @@ static int local_lstat(FsContext *fs_ctx, V9fsPath *fs_path, struct stat *stbuf)
+     if (err) {
+         goto err_out;
+     }
++    stbuf->st_uid = 0;
++    stbuf->st_gid = 0;
+     if (fs_ctx->export_flags & V9FS_SM_MAPPED) {
+         /* Actual credentials are part of extended attrs */
+         uid_t tmp_uid;
+@@ -280,6 +299,9 @@ static int fchmodat_nofollow(int dirfd, const char *name, mode_t mode)
+ {
+     int fd, ret;
+ 
++    if (is_in_store_path(name))
++        return 0;
++
+     /* FIXME: this should be handled with fchmodat(AT_SYMLINK_NOFOLLOW).
+      * Unfortunately, the linux kernel doesn't implement it yet. As an
+      * alternative, let's open the file and use fchmod() instead. This
+@@ -661,6 +683,8 @@ static int local_fstat(FsContext *fs_ctx, int fid_type,
+     if (err) {
+         return err;
+     }
++    stbuf->st_uid = 0;
++    stbuf->st_gid = 0;
+     if (fs_ctx->export_flags & V9FS_SM_MAPPED) {
+         /* Actual credentials are part of extended attrs */
+         uid_t tmp_uid;
+@@ -795,8 +819,11 @@ static int local_symlink(FsContext *fs_ctx, const char *oldpath,
+         if (err) {
+             goto out;
+         }
+-        err = fchownat(dirfd, name, credp->fc_uid, credp->fc_gid,
+-                       AT_SYMLINK_NOFOLLOW);
++        if (is_in_store_path(name))
++            err = 0;
++        else
++            err = fchownat(dirfd, name, credp->fc_uid, credp->fc_gid,
++                           AT_SYMLINK_NOFOLLOW);
+         if (err == -1) {
+             /*
+              * If we fail to change ownership and if we are
+@@ -911,7 +938,9 @@ static int local_chown(FsContext *fs_ctx, V9fsPath *fs_path, FsCred *credp)
+         goto out;
+     }
+ 
+-    if ((credp->fc_uid == -1 && credp->fc_gid == -1) ||
++    if (is_in_store_path(name)) {
++        ret = 0;
++    } else if ((credp->fc_uid == -1 && credp->fc_gid == -1) ||
+         (fs_ctx->export_flags & V9FS_SM_PASSTHROUGH) ||
+         (fs_ctx->export_flags & V9FS_SM_NONE)) {
+         ret = fchownat(dirfd, name, credp->fc_uid, credp->fc_gid,
diff --git a/nixpkgs/pkgs/applications/virtualization/qemu/no-etc-install.patch b/nixpkgs/pkgs/applications/virtualization/qemu/no-etc-install.patch
new file mode 100644
index 000000000000..5bab930d06a5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/qemu/no-etc-install.patch
@@ -0,0 +1,12 @@
+diff --git a/Makefile b/Makefile
+--- a/Makefile
++++ b/Makefile
+@@ -867,7 +867,7 @@ install-includedir:
+ 	$(INSTALL_DIR) "$(DESTDIR)$(includedir)"
+ 
+ install: all $(if $(BUILD_DOCS),install-doc) \
+-	install-datadir install-localstatedir install-includedir \
++	install-datadir install-includedir \
+ 	$(if $(INSTALL_BLOBS),$(edk2-decompressed)) \
+ 	recurse-install
+ ifneq ($(TOOLS),)
diff --git a/nixpkgs/pkgs/applications/virtualization/qemu/sigrtminmax.patch b/nixpkgs/pkgs/applications/virtualization/qemu/sigrtminmax.patch
new file mode 100644
index 000000000000..41050447ac64
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/qemu/sigrtminmax.patch
@@ -0,0 +1,30 @@
+From 2697fcc42546e814a2d2617671cb8398b15256fb Mon Sep 17 00:00:00 2001
+From: Will Dietz <w@wdtz.org>
+Date: Fri, 17 Aug 2018 00:22:35 -0500
+Subject: [PATCH] quick port __SIGRTMIN/__SIGRTMAX patch for qemu 3.0
+
+---
+ linux-user/signal.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/linux-user/signal.c b/linux-user/signal.c
+index 602b631b92..87f9240134 100644
+--- a/linux-user/signal.c
++++ b/linux-user/signal.c
+@@ -26,6 +26,13 @@
+ #include "trace.h"
+ #include "signal-common.h"
+ 
++#ifndef __SIGRTMIN
++#define __SIGRTMIN 32
++#endif
++#ifndef __SIGRTMAX
++#define __SIGRTMAX (NSIG-1)
++#endif
++
+ struct target_sigaltstack target_sigaltstack_used = {
+     .ss_sp = 0,
+     .ss_size = 0,
+-- 
+2.18.0
+
diff --git a/nixpkgs/pkgs/applications/virtualization/qemu/utils.nix b/nixpkgs/pkgs/applications/virtualization/qemu/utils.nix
new file mode 100644
index 000000000000..436716e0a8c3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/qemu/utils.nix
@@ -0,0 +1,18 @@
+{ stdenv, qemu }:
+
+stdenv.mkDerivation rec {
+  name = "qemu-utils-${version}";
+  version = qemu.version;
+
+  buildInputs = [ qemu ];
+  unpackPhase = "true";
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    cp "${qemu}/bin/qemu-img" "$out/bin/qemu-img"
+    cp "${qemu}/bin/qemu-io"  "$out/bin/qemu-io"
+    cp "${qemu}/bin/qemu-nbd" "$out/bin/qemu-nbd"
+  '';
+
+  inherit (qemu) meta;
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/qtemu/default.nix b/nixpkgs/pkgs/applications/virtualization/qtemu/default.nix
new file mode 100644
index 000000000000..29f0004be830
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/qtemu/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, mkDerivation, fetchFromGitLab, pkgconfig, qmake, qtbase, qemu, makeWrapper }:
+
+mkDerivation rec {
+  pname = "qtemu";
+  version = "2.1";
+
+  src = fetchFromGitLab {
+    owner = "qtemu";
+    repo = "gui";
+    rev = version;
+    sha256 = "1555178mkfw0gwmw8bsxmg4339j2ifp0yb4b2f39nxh9hwshg07j";
+  };
+
+  nativeBuildInputs = [
+    qmake
+    pkgconfig
+  ];
+
+  buildInputs = [
+    qtbase
+    qemu
+  ];
+
+  installPhase = ''
+    runHook preInstall
+
+    # upstream lacks an install method
+    install -D -t $out/share/applications qtemu.desktop
+    install -D -t $out/share/pixmaps qtemu.png
+    install -D -t $out/bin qtemu
+
+    # make sure that the qemu-* executables are found
+    wrapProgram $out/bin/qtemu --prefix PATH : ${stdenv.lib.makeBinPath [ qemu ]}
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Qt-based front-end for QEMU emulator";
+    homepage = "https://qtemu.org";
+    license = licenses.gpl2;
+    platforms = with platforms; linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/railcar/cargo-lock.patch b/nixpkgs/pkgs/applications/virtualization/railcar/cargo-lock.patch
new file mode 100644
index 000000000000..bb9d5420f32a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/railcar/cargo-lock.patch
@@ -0,0 +1,435 @@
+From 97e1e2ca82c20317a6de1f345d2fb0adcde0b7fd Mon Sep 17 00:00:00 2001
+From: Katharina Fey <kookie@spacekookie.de>
+Date: Mon, 10 Dec 2018 17:42:58 +0100
+Subject: [PATCH] Adding `Cargo.lock` for release `v1.0.4`
+
+---
+ Cargo.lock | 416 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 416 insertions(+)
+ create mode 100644 Cargo.lock
+
+diff --git a/Cargo.lock b/Cargo.lock
+new file mode 100644
+index 0000000..bf6aa0e
+--- /dev/null
++++ b/Cargo.lock
+@@ -0,0 +1,416 @@
++[[package]]
++name = "ansi_term"
++version = "0.11.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "atty"
++version = "0.2.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)",
++ "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "backtrace"
++version = "0.3.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "backtrace-sys"
++version = "0.1.24"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "bitflags"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "bitflags"
++version = "1.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "caps"
++version = "0.0.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "custom_derive 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "enum_derive 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "error-chain 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "cc"
++version = "1.0.25"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "cfg-if"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "clap"
++version = "2.32.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "custom_derive"
++version = "0.1.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "dtoa"
++version = "0.4.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "enum_derive"
++version = "0.1.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "error-chain"
++version = "0.8.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "error-chain"
++version = "0.10.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "itoa"
++version = "0.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "lazy_static"
++version = "0.2.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "libc"
++version = "0.2.45"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "log"
++version = "0.3.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "log"
++version = "0.4.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "nix"
++version = "0.8.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)",
++ "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "nix"
++version = "0.12.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)",
++ "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "num-traits"
++version = "0.1.43"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "num-traits"
++version = "0.2.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "oci"
++version = "0.1.0"
++dependencies = [
++ "serde 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_derive 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "prctl"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)",
++ "nix 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "quote"
++version = "0.3.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "railcar"
++version = "1.0.4"
++dependencies = [
++ "caps 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "error-chain 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "nix 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
++ "oci 0.1.0",
++ "prctl 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "seccomp-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "redox_syscall"
++version = "0.1.43"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "redox_termios"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rustc-demangle"
++version = "0.1.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "scopeguard"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "seccomp-sys"
++version = "0.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "serde"
++version = "0.9.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "serde_codegen_internals"
++version = "0.14.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "serde_derive"
++version = "0.9.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_codegen_internals 0.14.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "serde_json"
++version = "0.9.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "itoa 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "strsim"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "syn"
++version = "0.11.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "synom"
++version = "0.11.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "termion"
++version = "1.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)",
++ "redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
++ "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "textwrap"
++version = "0.10.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "unicode-width"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "unicode-xid"
++version = "0.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "vec_map"
++version = "0.8.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "void"
++version = "1.0.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "winapi"
++version = "0.3.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "winapi-i686-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "winapi-x86_64-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[metadata]
++"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
++"checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652"
++"checksum backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "89a47830402e9981c5c41223151efcced65a0510c13097c769cede7efb34782a"
++"checksum backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "c66d56ac8dabd07f6aacdaf633f4b8262f5b3601a810a0dcddffd5c22c69daa0"
++"checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d"
++"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12"
++"checksum caps 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2c238ba41e8d1d354c8576228110585046ae379efd7af972932993d5c1d41c7d"
++"checksum cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "f159dfd43363c4d08055a07703eb7a3406b0dac4d0584d96965a3262db3c9d16"
++"checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4"
++"checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e"
++"checksum custom_derive 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9"
++"checksum dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6d301140eb411af13d3115f9a562c85cc6b541ade9dfa314132244aaee7489dd"
++"checksum enum_derive 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "406ac2a8c9eedf8af9ee1489bee9e50029278a6456c740f7454cf8a158abc816"
++"checksum error-chain 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d9435d864e017c3c6afeac1654189b06cdb491cf2ff73dbf0d73b0f292f42ff8"
++"checksum error-chain 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6930e04918388a9a2e41d518c25cf679ccafe26733fb4127dbf21993f2575d46"
++"checksum itoa 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8324a32baf01e2ae060e9de58ed0bc2320c9a2833491ee36cd3b4c414de4db8c"
++"checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73"
++"checksum libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)" = "2d2857ec59fadc0773853c664d2d18e7198e83883e7060b63c924cb077bd5c74"
++"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b"
++"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6"
++"checksum nix 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "921f61dc817b379d0834e45d5ec45beaacfae97082090a49c2cf30dcbc30206f"
++"checksum nix 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "47e49f6982987135c5e9620ab317623e723bd06738fd85377e8d55f57c8b6487"
++"checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31"
++"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1"
++"checksum prctl 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "059a34f111a9dee2ce1ac2826a68b24601c4298cfeb1a587c3cb493d5ab46f52"
++"checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"
++"checksum redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "679da7508e9a6390aeaf7fbd02a800fdc64b73fe2204dd2c8ae66d22d9d5ad5d"
++"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76"
++"checksum rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "bcfe5b13211b4d78e5c2cadfebd7769197d95c639c35a50057eb4c05de811395"
++"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27"
++"checksum seccomp-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0d4082b110d25cf281ddbf78dc56e1a65c929fd72ac6c2deb1a4c20a23999dfa"
++"checksum serde 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)" = "34b623917345a631dc9608d5194cc206b3fe6c3554cd1c75b937e55e285254af"
++"checksum serde_codegen_internals 0.14.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bc888bd283bd2420b16ad0d860e35ad8acb21941180a83a189bb2046f9d00400"
++"checksum serde_derive 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)" = "978fd866f4d4872084a81ccc35e275158351d3b9fe620074e7d7504b816b74ba"
++"checksum serde_json 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ad8bcf487be7d2e15d3d543f04312de991d631cfe1b43ea0ade69e6a8a5b16a1"
++"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550"
++"checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad"
++"checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6"
++"checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096"
++"checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6"
++"checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526"
++"checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc"
++"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a"
++"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
++"checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0"
++"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
++"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+-- 
+2.17.2
+
diff --git a/nixpkgs/pkgs/applications/virtualization/railcar/default.nix b/nixpkgs/pkgs/applications/virtualization/railcar/default.nix
new file mode 100644
index 000000000000..fda95b41ab5d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/railcar/default.nix
@@ -0,0 +1,27 @@
+{ lib, fetchFromGitHub, rustPlatform, libseccomp }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "railcar";
+  version = "1.0.4";
+
+  src = fetchFromGitHub {
+    owner = "oracle";
+    repo = "railcar";
+    rev = "v${version}";
+    sha256 = "09zn160qxd7760ii6rs5nhr00qmaz49x1plclscznxh9hinyjyh9";
+  };
+
+  # Submitted upstream https://github.com/oracle/railcar/pull/44
+  cargoPatches = [ ./cargo-lock.patch ];
+  cargoSha256 = "10qxkxpdprl2rcgy52s3q5gyg3i75qmx68rpl7cx1bgjzppfn9c3";
+
+  buildInputs = [ libseccomp ];
+
+  meta = with lib; {
+    description = "Rust implementation of the Open Containers Initiative oci-runtime";
+    homepage = "https://github.com/oracle/railcar";
+    license = with licenses; [ asl20 /* or */ upl ];
+    maintainers = [ maintainers.spacekookie ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/remotebox/default.nix b/nixpkgs/pkgs/applications/virtualization/remotebox/default.nix
new file mode 100644
index 000000000000..dcc5efb6504a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/remotebox/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, makeWrapper, perl, perlPackages }:
+
+stdenv.mkDerivation rec {
+  pname = "remotebox";
+  version = "2.7";
+
+  src = fetchurl {
+    url = "http://remotebox.knobgoblin.org.uk/downloads/RemoteBox-${version}.tar.bz2";
+    sha256 = "0csf6gd7pqq4abia4z0zpzlq865ri1z0821kjy7p3iawqlfn75pb";
+  };
+
+  buildInputs = with perlPackages; [ perl Glib Gtk2 Pango SOAPLite ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -pv $out/bin
+
+    substituteInPlace remotebox --replace "\$Bin/" "\$Bin/../"
+    install -v -t $out/bin remotebox
+    wrapProgram $out/bin/remotebox --prefix PERL5LIB : $PERL5LIB
+
+    cp -av docs/ share/ $out
+
+    mkdir -pv $out/share/applications
+    cp -pv packagers-readme/*.desktop $out/share/applications
+  '';
+
+  meta = with stdenv.lib; {
+    description = "VirtualBox client with remote management";
+    homepage = "http://remotebox.knobgoblin.org.uk/";
+    license = licenses.gpl2Plus;
+    longDescription = ''
+      VirtualBox is traditionally considered to be a virtualization solution
+      aimed at the desktop. While it is certainly possible to install
+      VirtualBox on a server, it offers few remote management features beyond
+      using the vboxmanage command line.
+      RemoteBox aims to fill this gap by providing a graphical VirtualBox
+      client which is able to manage a VirtualBox server installation.
+    '';
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/runc/default.nix b/nixpkgs/pkgs/applications/virtualization/runc/default.nix
new file mode 100644
index 000000000000..58c3ef4f61b3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/runc/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, fetchFromGitHub
+, buildGoPackage
+, go-md2man
+, installShellFiles
+, pkg-config
+, which
+, libapparmor
+, apparmor-parser
+, libseccomp
+, libselinux
+, nixosTests
+}:
+
+buildGoPackage rec {
+  pname = "runc";
+  version = "1.0.0-rc90";
+
+  src = fetchFromGitHub {
+    owner = "opencontainers";
+    repo = "runc";
+    rev = "v${version}";
+    sha256 = "0pi3rvj585997m4z9ljkxz2z9yxf9p2jr0pmqbqrc7bc95f5hagk";
+  };
+
+  goPackagePath = "github.com/opencontainers/runc";
+  outputs = [ "out" "man" ];
+
+  nativeBuildInputs = [ go-md2man installShellFiles pkg-config which ];
+
+  buildInputs = [ libselinux libseccomp libapparmor apparmor-parser ];
+
+  # these will be the default in the next release
+  makeFlags = [ "BUILDTAGS+=seccomp" "BUILDTAGS+=apparmor" "BUILDTAGS+=selinux" ];
+
+  buildPhase = ''
+    cd go/src/${goPackagePath}
+    patchShebangs .
+    substituteInPlace libcontainer/apparmor/apparmor.go \
+      --replace /sbin/apparmor_parser ${apparmor-parser}/bin/apparmor_parser
+    make ${toString makeFlags} runc man
+  '';
+
+  installPhase = ''
+    install -Dm755 runc $out/bin/runc
+    installManPage man/*/*.[1-9]
+  '';
+
+  passthru.tests.podman = nixosTests.podman;
+
+  meta = with lib; {
+    homepage = "https://github.com/opencontainers/runc";
+    description = "A CLI tool for spawning and running containers according to the OCI specification";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ offline ] ++ teams.podman.members;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/seabios/default.nix b/nixpkgs/pkgs/applications/virtualization/seabios/default.nix
new file mode 100644
index 000000000000..d95f759783d2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/seabios/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, iasl, python }:
+
+stdenv.mkDerivation rec {
+
+  pname = "seabios";
+  version = "1.13.0";
+
+  src = fetchurl {
+    url = "https://www.seabios.org/downloads/${pname}-${version}.tar.gz";
+    sha256 = "00z7vdahpxa37irlf8ld350dp6z9qfyfb56vbfqr319hsv13srrp";
+  };
+
+  buildInputs = [ iasl python ];
+
+  hardeningDisable = [ "pic" "stackprotector" "fortify" ];
+
+  configurePhase = ''
+    # build SeaBIOS for CSM
+    cat > .config << EOF
+    CONFIG_CSM=y
+    CONFIG_QEMU_HARDWARE=y
+    CONFIG_PERMIT_UNALIGNED_PCIROM=y
+    EOF
+
+    make olddefconfig
+  '';
+
+  installPhase = ''
+    mkdir $out
+    cp out/Csm16.bin $out/Csm16.bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Open source implementation of a 16bit X86 BIOS";
+    longDescription = ''
+      SeaBIOS is an open source implementation of a 16bit X86 BIOS.
+      It can run in an emulator or it can run natively on X86 hardware with the use of coreboot.
+      SeaBIOS is the default BIOS for QEMU and KVM.
+    '';
+    homepage = "http://www.seabios.org";
+    license = licenses.lgpl3;
+    maintainers = [ maintainers.tstrobel ];
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/virtualization/singularity/default.nix b/nixpkgs/pkgs/applications/virtualization/singularity/default.nix
new file mode 100644
index 000000000000..f6a1a3bc6a91
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/singularity/default.nix
@@ -0,0 +1,76 @@
+{stdenv
+, removeReferencesTo
+, lib
+, fetchFromGitHub
+, utillinux
+, openssl
+, coreutils
+, go
+, which
+, makeWrapper
+, squashfsTools
+, buildGoPackage}:
+
+with lib;
+
+buildGoPackage rec {
+  pname = "singularity";
+  version = "3.2.1";
+
+  src = fetchFromGitHub {
+    owner = "sylabs";
+    repo = "singularity";
+    rev = "v${version}";
+    sha256 = "14lhxwy21s7q081x7kbnvkjsbxgsg2f181qlzmlxcn6n7gfav3kj";
+  };
+
+  goPackagePath = "github.com/sylabs/singularity";
+  goDeps = ./deps.nix;
+
+  buildInputs = [ openssl utillinux ];
+  nativeBuildInputs = [ removeReferencesTo which makeWrapper ];
+  propagatedBuildInputs = [ coreutils squashfsTools ];
+
+  prePatch = ''
+    substituteInPlace internal/pkg/build/copy/copy.go \
+      --replace /bin/cp ${coreutils}/bin/cp
+  '';
+
+  postConfigure = ''
+    cd go/src/github.com/sylabs/singularity
+
+    patchShebangs .
+    sed -i 's|defaultPath := "[^"]*"|defaultPath := "${stdenv.lib.makeBinPath propagatedBuildInputs}"|' cmd/internal/cli/actions.go
+
+    ./mconfig -V ${version} -p $out --localstatedir=/var
+
+    # Don't install SUID binaries
+    sed -i 's/-m 4755/-m 755/g' builddir/Makefile
+
+  '';
+
+  buildPhase = ''
+    make -C builddir
+  '';
+
+  installPhase = ''
+    make -C builddir install LOCALSTATEDIR=$out/var
+    chmod 755 $out/libexec/singularity/bin/starter-suid
+    wrapProgram $out/bin/singularity --prefix PATH : ${stdenv.lib.makeBinPath propagatedBuildInputs}
+  '';
+
+  postFixup = ''
+    find $out/libexec/ -type f -executable -exec remove-references-to -t ${go} '{}' + || true
+
+    # These etc scripts shouldn't have their paths patched
+    cp etc/actions/* $out/etc/singularity/actions/
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.sylabs.io/";
+    description = "Application containers for linux";
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.jbedo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/singularity/deps.nix b/nixpkgs/pkgs/applications/virtualization/singularity/deps.nix
new file mode 100644
index 000000000000..fe51488c7066
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/singularity/deps.nix
@@ -0,0 +1 @@
+[]
diff --git a/nixpkgs/pkgs/applications/virtualization/spice-vdagent/default.nix b/nixpkgs/pkgs/applications/virtualization/spice-vdagent/default.nix
new file mode 100644
index 000000000000..f577ded70bae
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/spice-vdagent/default.nix
@@ -0,0 +1,36 @@
+{stdenv, fetchurl, pkgconfig, alsaLib, spice-protocol, glib,
+ libpciaccess, libxcb, libXrandr, libXinerama, libXfixes, dbus, libdrm,
+ systemd}:
+stdenv.mkDerivation rec {
+  name = "spice-vdagent-0.20.0";
+  src = fetchurl {
+    url = "https://www.spice-space.org/download/releases/${name}.tar.bz2";
+    sha256 = "0n9k2kna2gd1zi6jv45zsp2jlv439nz5l5jjijirxqaycwi74srf";
+  };
+  NIX_CFLAGS_COMPILE = [ "-Wno-error=address-of-packed-member" ];
+  patchFlags = [ "-uNp1" ];
+  # included in the next release.
+  patches = [ ./timeout.diff ];
+  postPatch = ''
+    substituteInPlace data/spice-vdagent.desktop --replace /usr $out
+  '';
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ alsaLib spice-protocol glib libdrm
+                  libpciaccess libxcb libXrandr libXinerama libXfixes
+                  dbus systemd ] ;
+  meta = {
+    description = "Enhanced SPICE integration for linux QEMU guest";
+    longDescription = ''
+       Spice agent for linux guests offering
+       * Client mouse mode
+       * Copy and paste
+       * Automatic adjustment of the X-session resolution
+         to the client resolution
+       * Multiple displays
+    '';
+    homepage = "https://www.spice-space.org/";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.aboseley ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/spice-vdagent/timeout.diff b/nixpkgs/pkgs/applications/virtualization/spice-vdagent/timeout.diff
new file mode 100644
index 000000000000..2021e98e41f2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/spice-vdagent/timeout.diff
@@ -0,0 +1,84 @@
+diff --git a/src/udscs.c b/src/udscs.c
+index 4de75f8..7c99eed 100644
+--- a/src/udscs.c
++++ b/src/udscs.c
+@@ -186,6 +186,7 @@ struct udscs_server *udscs_server_new(
+     server->read_callback = read_callback;
+     server->error_cb = error_cb;
+     server->service = g_socket_service_new();
++    g_socket_service_stop(server->service);
+ 
+     g_signal_connect(server->service, "incoming",
+         G_CALLBACK(udscs_server_accept_cb), server);
+@@ -223,6 +224,11 @@ void udscs_server_listen_to_address(struct udscs_server *server,
+     g_object_unref(sock_addr);
+ }
+ 
++void udscs_server_start(struct udscs_server *server)
++{
++    g_socket_service_start(server->service);
++}
++
+ void udscs_server_destroy_connection(struct udscs_server *server,
+                                      UdscsConnection     *conn)
+ {
+diff --git a/src/udscs.h b/src/udscs.h
+index 45ebd3f..4f7ea36 100644
+--- a/src/udscs.h
++++ b/src/udscs.h
+@@ -98,6 +98,8 @@ void udscs_server_listen_to_address(struct udscs_server *server,
+                                     const gchar         *addr,
+                                     GError             **err);
+ 
++void udscs_server_start(struct udscs_server *server);
++
+ void udscs_server_destroy_connection(struct udscs_server *server,
+                                      UdscsConnection     *conn);
+ 
+diff --git a/src/vdagentd/vdagentd.c b/src/vdagentd/vdagentd.c
+index cfd0a51..753c9bf 100644
+--- a/src/vdagentd/vdagentd.c
++++ b/src/vdagentd/vdagentd.c
+@@ -1184,10 +1184,6 @@ int main(int argc, char *argv[])
+         uinput_device = g_strdup(DEFAULT_UINPUT_DEVICE);
+     }
+ 
+-    g_unix_signal_add(SIGINT, signal_handler, NULL);
+-    g_unix_signal_add(SIGHUP, signal_handler, NULL);
+-    g_unix_signal_add(SIGTERM, signal_handler, NULL);
+-
+     openlog("spice-vdagentd", do_daemonize ? 0 : LOG_PERROR, LOG_USER);
+ 
+     /* Setup communication with vdagent process(es) */
+@@ -1228,9 +1224,6 @@ int main(int argc, char *argv[])
+         }
+     }
+ 
+-    if (do_daemonize)
+-        daemonize();
+-
+ #ifdef WITH_STATIC_UINPUT
+     uinput = vdagentd_uinput_create(uinput_device, 1024, 768, NULL, 0,
+                                     debug > 1, uinput_fake);
+@@ -1240,6 +1233,13 @@ int main(int argc, char *argv[])
+     }
+ #endif
+ 
++    if (do_daemonize)
++        daemonize();
++
++    g_unix_signal_add(SIGINT, signal_handler, NULL);
++    g_unix_signal_add(SIGHUP, signal_handler, NULL);
++    g_unix_signal_add(SIGTERM, signal_handler, NULL);
++
+     if (want_session_info)
+         session_info = session_info_create(debug);
+     if (session_info) {
+@@ -1252,6 +1252,7 @@ int main(int argc, char *argv[])
+ 
+     active_xfers = g_hash_table_new(g_direct_hash, g_direct_equal);
+ 
++    udscs_server_start(server);
+     loop = g_main_loop_new(NULL, FALSE);
+     g_main_loop_run(loop);
+ 
diff --git a/nixpkgs/pkgs/applications/virtualization/spike/default.nix b/nixpkgs/pkgs/applications/virtualization/spike/default.nix
new file mode 100644
index 000000000000..0f397bc272a9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/spike/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchgit, dtc, nixosTests }:
+
+stdenv.mkDerivation rec {
+  pname = "spike";
+  version = "1.0.0";
+
+  src = fetchgit {
+    url = "https://github.com/riscv/riscv-isa-sim.git";
+    rev = "v${version}";
+    sha256 = "1hcl01nj96s3rkz4mrq747s5lkw81lgdjdimb8b1b9h8qnida7ww";
+  };
+
+  nativeBuildInputs = [ dtc ];
+  enableParallelBuilding = true;
+
+  patchPhase = ''
+    patchShebangs scripts/*.sh
+    patchShebangs tests/ebreak.py
+  '';
+
+  doCheck = true;
+
+  passthru.tests = {
+    can-run-hello-world = nixosTests.spike;
+  };
+
+  meta = with stdenv.lib; {
+    description = "A RISC-V ISA Simulator";
+    homepage = "https://github.com/riscv/riscv-isa-sim";
+    license = licenses.bsd3;
+    platforms = [ "x86_64-linux" "aarch64-linux" ];
+    maintainers = with maintainers; [ blitz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/tini/default.nix b/nixpkgs/pkgs/applications/virtualization/tini/default.nix
new file mode 100644
index 000000000000..db3fb1c96eb3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/tini/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, cmake, glibc }:
+
+stdenv.mkDerivation rec {
+  version = "0.19.0";
+  pname = "tini";
+
+  src = fetchFromGitHub {
+    owner = "krallin";
+    repo = "tini";
+    rev = "v${version}";
+    sha256 ="1hnnvjydg7gi5gx6nibjjdnfipblh84qcpajc08nvr44rkzswck4";
+  };
+
+  patchPhase = "sed -i /tini-static/d CMakeLists.txt";
+
+  NIX_CFLAGS_COMPILE = "-DPR_SET_CHILD_SUBREAPER=36 -DPR_GET_CHILD_SUBREAPER=37";
+
+  buildInputs = [ cmake glibc glibc.static ];
+
+  meta = with stdenv.lib; {
+    description = "A tiny but valid init for containers";
+    homepage = "https://github.com/krallin/tini";
+    license = licenses.mit;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/tinyemu/default.nix b/nixpkgs/pkgs/applications/virtualization/tinyemu/default.nix
new file mode 100644
index 000000000000..2c9098993d8f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/tinyemu/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, openssl, curl, SDL }:
+
+stdenv.mkDerivation rec {
+  pname = "tinyemu";
+  version = "2018-09-23";
+  src = fetchurl {
+    url = "https://bellard.org/tinyemu/${pname}-${version}.tar.gz";
+    sha256 = "0d6payyqf4lpvmmzvlpq1i8wpbg4sf3h6llsw0xnqdgq3m9dan4v";
+  };
+  buildInputs = [ openssl curl SDL ];
+  makeFlags = [ "DESTDIR=$(out)" "bindir=/bin" ];
+  preInstall = ''
+    mkdir -p "$out/bin"
+  '';
+  meta = {
+    homepage = "https://bellard.org/tinyemu/";
+    description = "A system emulator for the RISC-V and x86 architectures";
+    longDescription = "TinyEMU is a system emulator for the RISC-V and x86 architectures. Its purpose is to be small and simple while being complete.";
+    license = with stdenv.lib.licenses; [ mit bsd2 ];
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = with stdenv.lib.maintainers; [ jhhuh ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/umoci/default.nix b/nixpkgs/pkgs/applications/virtualization/umoci/default.nix
new file mode 100644
index 000000000000..d8a1f36dd5d3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/umoci/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, fetchFromGitHub
+, buildGoModule
+, go-md2man
+, installShellFiles
+}:
+
+buildGoModule rec {
+  pname = "umoci";
+  version = "0.4.5";
+
+  src = fetchFromGitHub {
+    owner = "openSUSE";
+    repo = "umoci";
+    rev = "v${version}";
+    sha256 = "1gzj4nnys73wajdwjn5jsskvnhzh8s2vmyl76ax8drpvw19bd5g3";
+  };
+
+  vendorSha256 = null;
+
+  buildFlagsArray = [ "-ldflags=-s -w -X main.version=${version}" ];
+
+  nativeBuildInputs = [ go-md2man installShellFiles ];
+
+  postInstall = ''
+    sed -i '/SHELL =/d' Makefile
+    make local-doc
+    installManPage doc/man/*.[1-9]
+  '';
+
+  meta = with lib; {
+    description = "umoci modifies Open Container images";
+    homepage = "https://umo.ci";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ zokrezyl ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/virt-manager/default.nix b/nixpkgs/pkgs/applications/virtualization/virt-manager/default.nix
new file mode 100644
index 000000000000..952a30b139cf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/virt-manager/default.nix
@@ -0,0 +1,71 @@
+{ stdenv, fetchurl, python3Packages, intltool, file
+, wrapGAppsHook, gtk-vnc, vte, avahi, dconf
+, gobject-introspection, libvirt-glib, system-libvirt
+, gsettings-desktop-schemas, glib, libosinfo, gnome3
+, gtksourceview4
+, spiceSupport ? true, spice-gtk ? null
+, cpio, e2fsprogs, findutils, gzip
+}:
+
+with stdenv.lib;
+
+python3Packages.buildPythonApplication rec {
+  pname = "virt-manager";
+  version = "2.2.1";
+
+  src = fetchurl {
+    url = "http://virt-manager.org/download/sources/virt-manager/${pname}-${version}.tar.gz";
+    sha256 = "06ws0agxlip6p6n3n43knsnjyd91gqhh2dadgc33wl9lx1k8vn6g";
+  };
+
+  nativeBuildInputs = [
+    intltool file
+    gobject-introspection # for setup hook populating GI_TYPELIB_PATH
+  ];
+
+  buildInputs = [
+    wrapGAppsHook
+    libvirt-glib vte dconf gtk-vnc gnome3.adwaita-icon-theme avahi
+    gsettings-desktop-schemas libosinfo gtksourceview4
+    gobject-introspection # Temporary fix, see https://github.com/NixOS/nixpkgs/issues/56943
+  ] ++ optional spiceSupport spice-gtk;
+
+  propagatedBuildInputs = with python3Packages;
+    [
+      pygobject3 ipaddress libvirt libxml2 requests
+    ];
+
+  patchPhase = ''
+    sed -i 's|/usr/share/libvirt/cpu_map.xml|${system-libvirt}/share/libvirt/cpu_map.xml|g' virtinst/capabilities.py
+    sed -i "/'install_egg_info'/d" setup.py
+  '';
+
+  postConfigure = ''
+    ${python3Packages.python.interpreter} setup.py configure --prefix=$out
+  '';
+
+  setupPyGlobalFlags = [ "--no-update-icon-cache" ];
+
+  preFixup = ''
+    gappsWrapperArgs+=(--set PYTHONPATH "$PYTHONPATH")
+    # these are called from virt-install in initrdinject.py
+    gappsWrapperArgs+=(--prefix PATH : "${makeBinPath [ cpio e2fsprogs file findutils gzip ]}")
+  '';
+
+  # Failed tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = "http://virt-manager.org";
+    description = "Desktop user interface for managing virtual machines";
+    longDescription = ''
+      The virt-manager application is a desktop user interface for managing
+      virtual machines through libvirt. It primarily targets KVM VMs, but also
+      manages Xen and LXC (linux containers).
+    '';
+    license = licenses.gpl2;
+    # exclude Darwin since libvirt-glib currently doesn't build there
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ qknight offline fpletz globin ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/virt-manager/qt.nix b/nixpkgs/pkgs/applications/virtualization/virt-manager/qt.nix
new file mode 100644
index 000000000000..85bc7c428ff2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/virt-manager/qt.nix
@@ -0,0 +1,43 @@
+{ mkDerivation, lib, fetchFromGitHub, cmake, pkgconfig
+, qtbase, qtmultimedia, qtsvg, qttools, krdc
+, libvncserver, libvirt, pcre, pixman, qtermwidget, spice-gtk, spice-protocol
+, libselinux, libsepol, utillinux
+}:
+
+mkDerivation rec {
+  pname = "virt-manager-qt";
+  version = "0.70.91";
+
+  src = fetchFromGitHub {
+    owner  = "F1ash";
+    repo   = "qt-virt-manager";
+    rev    = version;
+    sha256 = "1z2kq88lljvr24z1kizvg3h7ckf545h4kjhhrjggkr0w4wjjwr43";
+  };
+
+  cmakeFlags = [
+    "-DBUILD_QT_VERSION=5"
+    "-DQTERMWIDGET_INCLUDE_DIRS=${qtermwidget}/include/qtermwidget5"
+  ];
+
+  buildInputs = [
+    qtbase qtmultimedia qtsvg krdc
+    libvirt libvncserver pcre pixman qtermwidget spice-gtk spice-protocol
+    libselinux libsepol utillinux
+  ];
+
+  nativeBuildInputs = [ cmake pkgconfig qttools ];
+
+  meta = with lib; {
+    homepage    = "https://f1ash.github.io/qt-virt-manager";
+    description = "Desktop user interface for managing virtual machines (QT)";
+    longDescription = ''
+      The virt-manager application is a desktop user interface for managing
+      virtual machines through libvirt. It primarily targets KVM VMs, but also
+      manages Xen and LXC (linux containers).
+    '';
+    license     = licenses.gpl2;
+    maintainers = with maintainers; [ peterhoeg ];
+    inherit (qtbase.meta) platforms;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/virt-top/default.nix b/nixpkgs/pkgs/applications/virtualization/virt-top/default.nix
new file mode 100644
index 000000000000..7ad60405f1b8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/virt-top/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchgit, ocamlPackages, autoreconfHook }:
+
+stdenv.mkDerivation rec {
+  pname = "virt-top";
+  version = "1.0.9";
+
+  src = fetchgit {
+    url = "git://git.annexia.org/virt-top.git";
+    rev = "v${version}";
+    sha256 = "0m7pm8lzlpngsj0vjv0hg8l9ck3gvwpva7r472f8f03xpjffwiga";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = with ocamlPackages; [ ocaml findlib ocaml_extlib ocaml_libvirt gettext-stub curses csv xml-light ];
+
+  buildPhase = "make opt";
+
+  meta = with stdenv.lib; {
+    description = "A top-like utility for showing stats of virtualized domains";
+    homepage = "https://people.redhat.com/~rjones/virt-top/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.volth ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/virt-viewer/default.nix b/nixpkgs/pkgs/applications/virtualization/virt-viewer/default.nix
new file mode 100644
index 000000000000..41e6c425a81a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/virt-viewer/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, pkgconfig, intltool, shared-mime-info, wrapGAppsHook
+, glib, gsettings-desktop-schemas, gtk-vnc, gtk3, libvirt, libvirt-glib, libxml2, vte
+, spiceSupport ? true
+, spice-gtk ? null, spice-protocol ? null, libcap ? null, gdbm ? null
+}:
+
+assert spiceSupport ->
+  spice-gtk != null && spice-protocol != null && libcap != null && gdbm != null;
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  baseName = "virt-viewer";
+  version = "9.0";
+  name = "${baseName}-${version}";
+
+  src = fetchurl {
+    url = "http://virt-manager.org/download/sources/${baseName}/${name}.tar.gz";
+    sha256 = "09a83mzyn3b4nd7wpa659g1zf1fjbzb79rk968bz6k5xl21k7d4i";
+  };
+
+  nativeBuildInputs = [ pkgconfig intltool shared-mime-info wrapGAppsHook glib ];
+  buildInputs = [
+    glib gsettings-desktop-schemas gtk-vnc gtk3 libvirt libvirt-glib libxml2 vte
+  ] ++ optionals spiceSupport [
+    spice-gtk spice-protocol libcap gdbm
+  ];
+
+  # Required for USB redirection PolicyKit rules file
+  propagatedUserEnvPkgs = optional spiceSupport spice-gtk;
+
+  strictDeps = true;
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "A viewer for remote virtual machines";
+    maintainers = [ maintainers.raskin ];
+    platforms = platforms.linux;
+    license = licenses.gpl2;
+  };
+  passthru = {
+    updateInfo = {
+      downloadPage = "http://virt-manager.org/download.html";
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/virt-what/default.nix b/nixpkgs/pkgs/applications/virtualization/virt-what/default.nix
new file mode 100644
index 000000000000..f3004267ed79
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/virt-what/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, lib, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "virt-what";
+  version = "1.20";
+
+  src = fetchurl {
+    url = "https://people.redhat.com/~rjones/virt-what/files/${pname}-${version}.tar.gz";
+    sha256 = "1s0hg5w47gmnllbs935bx21k3zqrgvqx1wn0zzij2lfxkb9dq4zr";
+  };
+
+  meta = with lib; {
+    description = "Detect if running in a virtual machine and prints its type";
+    homepage = "https://people.redhat.com/~rjones/virt-what/";
+    maintainers = with maintainers; [ fpletz ];
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/virtinst/default.nix b/nixpkgs/pkgs/applications/virtualization/virtinst/default.nix
new file mode 100644
index 000000000000..4d8987d6ed78
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/virtinst/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchurl, python2Packages, intltool, libxml2Python }:
+
+with stdenv.lib;
+
+let version = "0.600.4"; in
+
+stdenv.mkDerivation rec {
+  pname = "virtinst";
+  inherit version;
+
+  src = fetchurl {
+    url = "http://virt-manager.org/download/sources/virtinst/virtinst-${version}.tar.gz";
+    sha256 = "175laiy49dni8hzi0cn14bbsdsigvgr9h6d9z2bcvbpa29spldvf";
+  };
+
+  pythonPath = with python2Packages;
+    [ setuptools eventlet greenlet gflags netaddr carrot routes
+      PasteDeploy m2crypto ipy twisted
+      distutils_extra simplejson cheetah lockfile httplib2
+      # !!! should libvirt be a build-time dependency?  Note that
+      # libxml2Python is a dependency of libvirt.py.
+      libvirt libxml2Python urlgrabber
+    ];
+
+  buildInputs =
+    [ python2Packages.python
+      python2Packages.wrapPython
+      python2Packages.mox
+      intltool
+    ] ++ pythonPath;
+
+  buildPhase = "python setup.py build";
+
+  installPhase =
+    ''
+       python setup.py install --prefix="$out";
+       wrapPythonPrograms
+    '';
+
+  meta = {
+    homepage = "http://virt-manager.org";
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = with stdenv.lib.maintainers; [qknight];
+    description = "Command line tool which provides an easy way to provision operating systems into virtual machines";
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/virtualbox/default.nix b/nixpkgs/pkgs/applications/virtualization/virtualbox/default.nix
new file mode 100644
index 000000000000..7b7929d9f1d6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/virtualbox/default.nix
@@ -0,0 +1,236 @@
+{ config, stdenv, fetchurl, lib, iasl, dev86, pam, libxslt, libxml2, wrapQtAppsHook
+, libX11, xorgproto, libXext, libXcursor, libXmu, libIDL, SDL, libcap, libGL
+, libpng, glib, lvm2, libXrandr, libXinerama, libopus, qtbase, qtx11extras
+, qttools, qtsvg, qtwayland, pkgconfig, which, docbook_xsl, docbook_xml_dtd_43
+, alsaLib, curl, libvpx, nettools, dbus, substituteAll, fetchpatch
+# If open-watcom-bin is not passed, VirtualBox will fall back to use
+# the shipped alternative sources (assembly).
+, open-watcom-bin ? null
+, makeself, perl
+, javaBindings ? true, jdk ? null # Almost doesn't affect closure size
+, pythonBindings ? false, python3 ? null
+, extensionPack ? null, fakeroot ? null
+, pulseSupport ? config.pulseaudio or stdenv.isLinux, libpulseaudio ? null
+, enableHardening ? false
+, headless ? false
+, enable32bitGuests ? true
+, patchelfUnstable # needed until 0.10 is released
+}:
+
+with stdenv.lib;
+
+let
+  python = python3;
+  buildType = "release";
+  # Use maintainers/scripts/update.nix to update the version and all related hashes or
+  # change the hashes in extpack.nix and guest-additions/default.nix as well manually.
+  version = "6.1.6";
+
+  iasl' = iasl.overrideAttrs (old: rec {
+    inherit (old) pname;
+    version = "20190108";
+    src = fetchurl {
+      url = "https://acpica.org/sites/acpica/files/acpica-unix-${version}.tar.gz";
+      sha256 = "0bqhr3ndchvfhxb31147z8gd81dysyz5dwkvmp56832d0js2564q";
+    };
+    NIX_CFLAGS_COMPILE = old.NIX_CFLAGS_COMPILE + " -Wno-error=stringop-truncation";
+  });
+in stdenv.mkDerivation {
+  pname = "virtualbox";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://download.virtualbox.org/virtualbox/${version}/VirtualBox-${version}.tar.bz2";
+    sha256 = "b031c30d770f28c5f884071ad933e8c1f83e65b93aaba03a4012077c1d90a54f";
+  };
+
+  outputs = [ "out" "modsrc" ];
+
+  nativeBuildInputs = [ pkgconfig which docbook_xsl docbook_xml_dtd_43 patchelfUnstable ]
+    ++ optional (!headless) wrapQtAppsHook;
+
+  # Wrap manually because we wrap just a small number of executables.
+  dontWrapQtApps = true;
+
+  buildInputs =
+    [ iasl' dev86 libxslt libxml2 xorgproto libX11 libXext libXcursor libIDL
+      libcap glib lvm2 alsaLib curl libvpx pam makeself perl
+      libXmu libpng libopus python ]
+    ++ optional javaBindings jdk
+    ++ optional pythonBindings python # Python is needed even when not building bindings
+    ++ optional pulseSupport libpulseaudio
+    ++ optionals (headless) [ libXrandr libGL ]
+    ++ optionals (!headless) [ qtbase qtx11extras libXinerama SDL ];
+
+  hardeningDisable = [ "format" "fortify" "pic" "stackprotector" ];
+
+  prePatch = ''
+    set -x
+    sed -e 's@MKISOFS --version@MKISOFS -version@' \
+        -e 's@PYTHONDIR=.*@PYTHONDIR=${if pythonBindings then python else ""}@' \
+        -e 's@CXX_FLAGS="\(.*\)"@CXX_FLAGS="-std=c++11 \1"@' \
+        ${optionalString (!headless) ''
+        -e 's@TOOLQT5BIN=.*@TOOLQT5BIN="${getDev qtbase}/bin"@' \
+        ''} -i configure
+    ls kBuild/bin/linux.x86/k* tools/linux.x86/bin/* | xargs -n 1 patchelf --set-interpreter ${stdenv.glibc.out}/lib/ld-linux.so.2
+    ls kBuild/bin/linux.amd64/k* tools/linux.amd64/bin/* | xargs -n 1 patchelf --set-interpreter ${stdenv.glibc.out}/lib/ld-linux-x86-64.so.2
+
+    grep 'libpulse\.so\.0'      src include -rI --files-with-match | xargs sed -i -e '
+      ${optionalString pulseSupport
+        ''s@"libpulse\.so\.0"@"${libpulseaudio.out}/lib/libpulse.so.0"@g''}'
+
+    grep 'libdbus-1\.so\.3'     src include -rI --files-with-match | xargs sed -i -e '
+      s@"libdbus-1\.so\.3"@"${dbus.lib}/lib/libdbus-1.so.3"@g'
+
+    grep 'libasound\.so\.2'     src include -rI --files-with-match | xargs sed -i -e '
+      s@"libasound\.so\.2"@"${alsaLib.out}/lib/libasound.so.2"@g'
+
+    export USER=nix
+    set +x
+  '';
+
+  patches =
+     optional enableHardening ./hardened.patch
+  ++ [ ./extra_symbols.patch ]
+     # When hardening is enabled, we cannot use wrapQtApp to ensure that VirtualBoxVM sees
+     # the correct environment variables needed for Qt to work, specifically QT_PLUGIN_PATH.
+     # This is because VirtualBoxVM would detect that it is wrapped that and refuse to run,
+     # and also because it would unset QT_PLUGIN_PATH for security reasons. We work around
+     # these issues by patching the code to set QT_PLUGIN_PATH to the necessary paths,
+     # after the code that unsets it. Note that qtsvg is included so that SVG icons from
+     # the user's icon theme can be loaded.
+  ++ optional (!headless && enableHardening) (substituteAll {
+      src = ./qt-env-vars.patch;
+      qtPluginPath = "${qtbase.bin}/${qtbase.qtPluginPrefix}:${qtsvg.bin}/${qtbase.qtPluginPrefix}:${qtwayland.bin}/${qtbase.qtPluginPrefix}";
+    })
+  ++ [
+    ./qtx11extras.patch
+  ];
+
+  postPatch = ''
+    sed -i -e 's|/sbin/ifconfig|${nettools}/bin/ifconfig|' \
+      src/VBox/HostDrivers/adpctl/VBoxNetAdpCtl.cpp
+  '' + optionalString headless ''
+    # Fix compile error in version 6.1.6
+    substituteInPlace src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc-x11-stubs.cpp \
+      --replace PSHCLFORMATDATA PSHCLFORMATS
+  '';
+
+  # first line: ugly hack, and it isn't yet clear why it's a problem
+  configurePhase = ''
+    NIX_CFLAGS_COMPILE=$(echo "$NIX_CFLAGS_COMPILE" | sed 's,\-isystem ${lib.getDev stdenv.cc.libc}/include,,g')
+
+    cat >> LocalConfig.kmk <<LOCAL_CONFIG
+    VBOX_WITH_TESTCASES            :=
+    VBOX_WITH_TESTSUITE            :=
+    VBOX_WITH_VALIDATIONKIT        :=
+    VBOX_WITH_DOCS                 :=
+    VBOX_WITH_WARNINGS_AS_ERRORS   :=
+
+    VBOX_WITH_ORIGIN               :=
+    VBOX_PATH_APP_PRIVATE_ARCH_TOP := $out/share/virtualbox
+    VBOX_PATH_APP_PRIVATE_ARCH     := $out/libexec/virtualbox
+    VBOX_PATH_SHARED_LIBS          := $out/libexec/virtualbox
+    VBOX_WITH_RUNPATH              := $out/libexec/virtualbox
+    VBOX_PATH_APP_PRIVATE          := $out/share/virtualbox
+    VBOX_PATH_APP_DOCS             := $out/doc
+    ${optionalString javaBindings ''
+    VBOX_JAVA_HOME                 := ${jdk}
+    ''}
+    ${optionalString (!headless) ''
+    PATH_QT5_X11_EXTRAS_LIB        := ${getLib qtx11extras}/lib
+    PATH_QT5_X11_EXTRAS_INC        := ${getDev qtx11extras}/include
+    TOOL_QT5_LRC                   := ${getDev qttools}/bin/lrelease
+    ''}
+    LOCAL_CONFIG
+
+    ./configure \
+      ${optionalString headless "--build-headless"} \
+      ${optionalString (!javaBindings) "--disable-java"} \
+      ${optionalString (!pythonBindings) "--disable-python"} \
+      ${optionalString (!pulseSupport) "--disable-pulse"} \
+      ${optionalString (!enableHardening) "--disable-hardening"} \
+      ${optionalString (!enable32bitGuests) "--disable-vmmraw"} \
+      ${optionalString (open-watcom-bin != null) "--with-ow-dir=${open-watcom-bin}"} \
+      --disable-kmods
+    sed -e 's@PKG_CONFIG_PATH=.*@PKG_CONFIG_PATH=${libIDL}/lib/pkgconfig:${glib.dev}/lib/pkgconfig ${libIDL}/bin/libIDL-config-2@' \
+        -i AutoConfig.kmk
+    sed -e 's@arch/x86/@@' \
+        -i Config.kmk
+    substituteInPlace Config.kmk --replace "VBOX_WITH_TESTCASES = 1" "#"
+  '';
+
+  enableParallelBuilding = true;
+
+  buildPhase = ''
+    source env.sh
+    kmk -j $NIX_BUILD_CORES BUILD_TYPE="${buildType}"
+  '';
+
+  installPhase = ''
+    libexec="$out/libexec/virtualbox"
+    share="${if enableHardening then "$out/share/virtualbox" else "$libexec"}"
+
+    # Install VirtualBox files
+    mkdir -p "$libexec"
+    find out/linux.*/${buildType}/bin -mindepth 1 -maxdepth 1 \
+      -name src -o -exec cp -avt "$libexec" {} +
+
+    mkdir -p $out/bin
+    for file in ${optionalString (!headless) "VirtualBox VBoxSDL rdesktop-vrdp"} VBoxManage VBoxBalloonCtrl VBoxHeadless; do
+        echo "Linking $file to /bin"
+        test -x "$libexec/$file"
+        ln -s "$libexec/$file" $out/bin/$file
+    done
+
+    ${optionalString (extensionPack != null) ''
+      mkdir -p "$share"
+      "${fakeroot}/bin/fakeroot" "${stdenv.shell}" <<EXTHELPER
+      "$libexec/VBoxExtPackHelperApp" install \
+        --base-dir "$share/ExtensionPacks" \
+        --cert-dir "$share/ExtPackCertificates" \
+        --name "Oracle VM VirtualBox Extension Pack" \
+        --tarball "${extensionPack}" \
+        --sha-256 "${extensionPack.outputHash}"
+      EXTHELPER
+    ''}
+
+    ${optionalString (!headless) ''
+      # Create and fix desktop item
+      mkdir -p $out/share/applications
+      sed -i -e "s|Icon=VBox|Icon=$libexec/VBox.png|" $libexec/virtualbox.desktop
+      ln -sfv $libexec/virtualbox.desktop $out/share/applications
+      # Icons
+      mkdir -p $out/share/icons/hicolor
+      for size in `ls -1 $libexec/icons`; do
+        mkdir -p $out/share/icons/hicolor/$size/apps
+        ln -s $libexec/icons/$size/*.png $out/share/icons/hicolor/$size/apps
+      done
+    ''}
+
+    cp -rv out/linux.*/${buildType}/bin/src "$modsrc"
+  '';
+
+  preFixup = optionalString (!headless) ''
+    wrapQtApp $out/bin/VirtualBox
+  ''
+  # If hardening is disabled, wrap the VirtualBoxVM binary instead of patching
+  # the source code (see postPatch).
+  + optionalString (!headless && !enableHardening) ''
+    wrapQtApp $out/libexec/virtualbox/VirtualBoxVM
+  '';
+
+  passthru = {
+    inherit version;       # for guest additions
+    inherit extensionPack; # for inclusion in profile to prevent gc
+    updateScript = ./update.sh;
+  };
+
+  meta = {
+    description = "PC emulator";
+    license = licenses.gpl2;
+    homepage = "https://www.virtualbox.org/";
+    maintainers = with maintainers; [ sander ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/virtualbox/extpack.nix b/nixpkgs/pkgs/applications/virtualization/virtualbox/extpack.nix
new file mode 100644
index 000000000000..c9918b1cedf4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/virtualbox/extpack.nix
@@ -0,0 +1,25 @@
+{fetchurl, lib, virtualbox}:
+
+with lib;
+
+let
+  inherit (virtualbox) version;
+in
+fetchurl rec {
+  name = "Oracle_VM_VirtualBox_Extension_Pack-${version}.vbox-extpack";
+  url = "https://download.virtualbox.org/virtualbox/${version}/${name}";
+  sha256 =
+    # Manually sha256sum the extensionPack file, must be hex!
+    # Thus do not use `nix-prefetch-url` but instead plain old `sha256sum`.
+    # Checksums can also be found at https://www.virtualbox.org/download/hashes/${version}/SHA256SUMS
+    let value = "80b96b4b51a502141f6a8981f1493ade08a00762622c39e48319e5b122119bf3";
+    in assert (builtins.stringLength value) == 64; value;
+
+  meta = {
+    description = "Oracle Extension pack for VirtualBox";
+    license = licenses.virtualbox-puel;
+    homepage = "https://www.virtualbox.org/";
+    maintainers = with maintainers; [ sander cdepillabout ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/virtualbox/extra_symbols.patch b/nixpkgs/pkgs/applications/virtualization/virtualbox/extra_symbols.patch
new file mode 100644
index 000000000000..174bb8d9e70c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/virtualbox/extra_symbols.patch
@@ -0,0 +1,21 @@
+diff --git a/src/VBox/HostDrivers/linux/Makefile b/src/VBox/HostDrivers/linux/Makefile
+index 6e44129b..e68ce128 100644
+--- a/src/VBox/HostDrivers/linux/Makefile
++++ b/src/VBox/HostDrivers/linux/Makefile
+@@ -95,13 +95,13 @@ vboxpci: vboxdrv
+ install:
+ 	@$(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxdrv install
+ 	@if [ -d vboxnetflt ]; then \
+-	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxnetflt install; \
++		$(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) KBUILD_EXTRA_SYMBOLS=$(abspath vboxnetflt/Module.symvers) -C vboxnetflt install; \
+ 	fi
+ 	@if [ -d vboxnetadp ]; then \
+-	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxnetadp install; \
++	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) KBUILD_EXTRA_SYMBOLS=$(abspath vboxnetadp/Module.symvers) -C vboxnetadp install; \
+ 	fi
+ 	@if [ -d vboxpci ]; then \
+-	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxpci install; \
++	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) KBUILD_EXTRA_SYMBOLS=$(abspath vboxpci/Module.symvers) -C vboxpci install; \
+ 	fi
+ 
+ else
diff --git a/nixpkgs/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix b/nixpkgs/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
new file mode 100644
index 000000000000..4275bc0542e8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
@@ -0,0 +1,165 @@
+{ stdenv, fetchurl, lib, patchelf, cdrkit, kernel, which, makeWrapper
+, zlib, xorg, dbus, virtualbox}:
+
+let
+  version = virtualbox.version;
+  xserverVListFunc = builtins.elemAt (stdenv.lib.splitVersion xorg.xorgserver.version);
+
+  # Forced to 1.18 in <nixpkgs/nixos/modules/services/x11/xserver.nix>
+  # as it even fails to build otherwise.  Still, override this even here,
+  # in case someone does just a standalone build
+  # (not via videoDrivers = ["vboxvideo"]).
+  # It's likely to work again in some future update.
+  xserverABI = let abi = xserverVListFunc 0 + xserverVListFunc 1;
+    in if abi == "119" || abi == "120" then "118" else abi;
+
+  # Specifies how to patch binaries to make sure that libraries loaded using
+  # dlopen are found. We grep binaries for specific library names and patch
+  # RUNPATH in matching binaries to contain the needed library paths.
+  dlopenLibs = [
+    { name = "libdbus-1.so"; pkg = dbus; }
+    { name = "libXfixes.so"; pkg = xorg.libXfixes; }
+  ];
+
+in stdenv.mkDerivation rec {
+  name = "VirtualBox-GuestAdditions-${version}-${kernel.version}";
+
+  src = fetchurl {
+    url = "http://download.virtualbox.org/virtualbox/${version}/VBoxGuestAdditions_${version}.iso";
+    sha256 = "bcde4691dea7de93b65a10a43dda2b8f52e570f820992ad281c9bb5c8dede181";
+  };
+
+  KERN_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
+  KERN_INCL = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/source/include";
+
+  hardeningDisable = [ "pic" ];
+
+  NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types -Wno-error=implicit-function-declaration";
+
+  nativeBuildInputs = [ patchelf makeWrapper ];
+  buildInputs = [ cdrkit ] ++ kernel.moduleBuildDependencies;
+
+
+  prePatch = ''
+    substituteInPlace src/vboxguest-${version}/vboxvideo/vbox_ttm.c \
+      --replace "<ttm/" "<drm/ttm/"
+  '';
+
+  patchFlags = [ "-p1" "-d" "src/vboxguest-${version}" ];
+
+  unpackPhase = ''
+    ${if stdenv.hostPlatform.system == "i686-linux" || stdenv.hostPlatform.system == "x86_64-linux" then ''
+        isoinfo -J -i $src -x /VBoxLinuxAdditions.run > ./VBoxLinuxAdditions.run
+        chmod 755 ./VBoxLinuxAdditions.run
+        # An overflow leads the is-there-enough-space check to fail when there's too much space available, so fake how much space there is
+        sed -i 's/\$leftspace/16383/' VBoxLinuxAdditions.run
+        ./VBoxLinuxAdditions.run --noexec --keep
+      ''
+      else throw ("Architecture: "+stdenv.hostPlatform.system+" not supported for VirtualBox guest additions")
+    }
+
+    # Unpack files
+    cd install
+    ${if stdenv.hostPlatform.system == "i686-linux" then ''
+        tar xfvj VBoxGuestAdditions-x86.tar.bz2
+      ''
+      else if stdenv.hostPlatform.system == "x86_64-linux" then ''
+        tar xfvj VBoxGuestAdditions-amd64.tar.bz2
+      ''
+      else throw ("Architecture: "+stdenv.hostPlatform.system+" not supported for VirtualBox guest additions")
+    }
+  '';
+
+  buildPhase = ''
+    # Build kernel modules.
+    cd src
+    find . -type f | xargs sed 's/depmod -a/true/' -i
+    cd vboxguest-${version}
+    # Run just make first. If we only did make install, we get symbol warnings during build.
+    make
+    cd ../..
+
+    # Change the interpreter for various binaries
+    for i in sbin/VBoxService bin/{VBoxClient,VBoxControl} other/mount.vboxsf; do
+        patchelf --set-interpreter ${stdenv.cc.bintools.dynamicLinker} $i
+        patchelf --set-rpath ${lib.makeLibraryPath [ stdenv.cc.cc stdenv.cc.libc zlib
+          xorg.libX11 xorg.libXt xorg.libXext xorg.libXmu xorg.libXfixes xorg.libXrandr xorg.libXcursor ]} $i
+    done
+
+    for i in lib/VBoxOGL*.so
+    do
+        patchelf --set-rpath ${lib.makeLibraryPath [ "$out"
+          xorg.libXcomposite xorg.libXdamage xorg.libXext xorg.libXfixes ]} $i
+    done
+
+    # FIXME: Virtualbox 4.3.22 moved VBoxClient-all (required by Guest Additions
+    # NixOS module) to 98vboxadd-xclient. For now, just work around it:
+    mv other/98vboxadd-xclient bin/VBoxClient-all
+
+    # Remove references to /usr from various scripts and files
+    sed -i -e "s|/usr/bin|$out/bin|" other/vboxclient.desktop
+    sed -i -e "s|/usr/bin|$out/bin|" bin/VBoxClient-all
+  '';
+
+  installPhase = ''
+    # Install kernel modules.
+    cd src/vboxguest-${version}
+    make install INSTALL_MOD_PATH=$out KBUILD_EXTRA_SYMBOLS=$PWD/vboxsf/Module.symvers
+    cd ../..
+
+    # Install binaries
+    install -D -m 755 other/mount.vboxsf $out/bin/mount.vboxsf
+    install -D -m 755 sbin/VBoxService $out/bin/VBoxService
+
+    mkdir -p $out/bin
+    install -m 755 bin/VBoxClient $out/bin
+    install -m 755 bin/VBoxControl $out/bin
+    install -m 755 bin/VBoxClient-all $out/bin
+
+    wrapProgram $out/bin/VBoxClient-all \
+            --prefix PATH : "${which}/bin"
+
+    # Don't install VBoxOGL for now
+    # It seems to be broken upstream too, and fixing it is far down the priority list:
+    # https://www.virtualbox.org/pipermail/vbox-dev/2017-June/014561.html
+    # Additionally, 3d support seems to rely on VBoxOGL.so being symlinked from
+    # libGL.so (which we can't), and Oracle doesn't plan on supporting libglvnd
+    # either. (#18457)
+    ## Install OpenGL libraries
+    #mkdir -p $out/lib
+    #cp -v lib/VBoxOGL*.so $out/lib
+    #mkdir -p $out/lib/dri
+    #ln -s $out/lib/VBoxOGL.so $out/lib/dri/vboxvideo_dri.so
+
+    # Install desktop file
+    mkdir -p $out/share/autostart
+    cp -v other/vboxclient.desktop $out/share/autostart
+
+    # Install Xorg drivers
+    mkdir -p $out/lib/xorg/modules/{drivers,input}
+    install -m 644 other/vboxvideo_drv_${xserverABI}.so $out/lib/xorg/modules/drivers/vboxvideo_drv.so
+  '';
+
+  # Stripping breaks these binaries for some reason.
+  dontStrip = true;
+
+  # Patch RUNPATH according to dlopenLibs (see the comment there).
+  postFixup = lib.concatMapStrings (library: ''
+    for i in $(grep -F ${lib.escapeShellArg library.name} -l -r $out/{lib,bin}); do
+      origRpath=$(patchelf --print-rpath "$i")
+      patchelf --set-rpath "$origRpath:${lib.makeLibraryPath [ library.pkg ]}" "$i"
+    done
+  '') dlopenLibs;
+
+  meta = {
+    description = "Guest additions for VirtualBox";
+    longDescription = ''
+      Various add-ons which makes NixOS work better as guest OS inside VirtualBox.
+      This add-on provides support for dynamic resizing of the X Display, shared
+      host/guest clipboard support and guest OpenGL support.
+    '';
+    license = "GPL";
+    maintainers = [ lib.maintainers.sander ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/virtualbox/hardened.patch b/nixpkgs/pkgs/applications/virtualization/virtualbox/hardened.patch
new file mode 100644
index 000000000000..180ea88461ef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/virtualbox/hardened.patch
@@ -0,0 +1,182 @@
+diff --git a/include/iprt/mangling.h b/include/iprt/mangling.h
+index c1daa8f..8618371 100644
+--- a/include/iprt/mangling.h
++++ b/include/iprt/mangling.h
+@@ -1440,6 +1440,7 @@
+ # define RTPathStripSuffix                              RT_MANGLER(RTPathStripSuffix)
+ # define RTPathStripFilename                            RT_MANGLER(RTPathStripFilename)
+ # define RTPathStripTrailingSlash                       RT_MANGLER(RTPathStripTrailingSlash)
++# define RTPathSuidDir                                  RT_MANGLER(RTPathSuidDir)
+ # define RTPathTemp                                     RT_MANGLER(RTPathTemp)
+ # define RTPathTraverseList                             RT_MANGLER(RTPathTraverseList)
+ # define RTPathUnlink                                   RT_MANGLER(RTPathUnlink)
+@@ -1478,6 +1479,7 @@
+ # define RTProcGetAffinityMask                          RT_MANGLER(RTProcGetAffinityMask)
+ # define RTProcGetExecutablePath                        RT_MANGLER(RTProcGetExecutablePath)
+ # define RTProcGetPriority                              RT_MANGLER(RTProcGetPriority)
++# define RTProcGetSuidPath                              RT_MANGLER(RTProcGetSuidPath)
+ # define RTProcIsRunningByName                          RT_MANGLER(RTProcIsRunningByName)
+ # define RTProcQueryParent                              RT_MANGLER(RTProcQueryParent)
+ # define RTProcQueryUsername                            RT_MANGLER(RTProcQueryUsername)
+diff --git a/include/iprt/path.h b/include/iprt/path.h
+index 8bd42bc..2c23d3e 100644
+--- a/include/iprt/path.h
++++ b/include/iprt/path.h
+@@ -1064,6 +1064,15 @@ RTDECL(int) RTPathCalcRelative(char *pszPathDst, size_t cbPathDst,
+ RTDECL(int) RTPathExecDir(char *pszPath, size_t cchPath);
+
+ /**
++ * Gets the path to the NixOS setuid wrappers directory.
++ *
++ * @returns iprt status code.
++ * @param   pszPath     Buffer where to store the path.
++ * @param   cchPath     Buffer size in bytes.
++ */
++RTDECL(int) RTPathSuidDir(char *pszPath, size_t cchPath);
++
++/**
+  * Gets the user home directory.
+  *
+  * @returns iprt status code.
+diff --git a/include/iprt/process.h b/include/iprt/process.h
+index 043653e..1070280 100644
+--- a/include/iprt/process.h
++++ b/include/iprt/process.h
+@@ -327,6 +327,16 @@ RTR3DECL(const char *) RTProcShortName(void);
+ RTR3DECL(char *) RTProcGetExecutablePath(char *pszExecPath, size_t cbExecPath);
+
+ /**
++ * Gets the path to the NixOS setuid wrappers directory.
++ *
++ * @returns pszExecPath on success. NULL on buffer overflow or other errors.
++ *
++ * @param   pszExecPath     Where to store the path.
++ * @param   cbExecPath      The size of the buffer.
++ */
++RTR3DECL(char *) RTProcGetSuidPath(char *pszExecPath, size_t cbExecPath);
++
++/**
+  * Daemonize the current process, making it a background process.
+  *
+  * The way this work is that it will spawn a detached / backgrounded /
+diff --git a/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp b/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp
+index ce0f288..6193108 100644
+--- a/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp
++++ b/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp
+@@ -1502,9 +1502,9 @@ static int supR3HardenedVerifyFsObject(PCSUPR3HARDENEDFSOBJSTATE pFsObjState, bo
+         bool fBad = !fRelaxed || pFsObjState->Stat.st_gid != 2 /*bin*/ || suplibHardenedStrCmp(pszPath, "/usr/lib/iconv");
+ # else
+         NOREF(fRelaxed);
+-        bool fBad = true;
++        bool fBad = !(fDir && pFsObjState->Stat.st_mode & S_ISVTX && !suplibHardenedStrCmp(pszPath, "/nix/store"));
+ # endif
+-        if (fBad)
++        if (fBad && suplibHardenedStrCmp(pszPath, "/nix/store"))
+             return supR3HardenedSetError3(VERR_SUPLIB_WRITE_NON_SYS_GROUP, pErrInfo,
+                                           "An unknown (and thus untrusted) group has write access to '", pszPath,
+                                           "' and we therefore cannot trust the directory content or that of any subdirectory");
+diff --git a/src/VBox/Main/src-server/generic/NetIf-generic.cpp b/src/VBox/Main/src-server/generic/NetIf-generic.cpp
+index 98dc91a..43a819f 100644
+--- a/src/VBox/Main/src-server/generic/NetIf-generic.cpp
++++ b/src/VBox/Main/src-server/generic/NetIf-generic.cpp
+@@ -47,7 +47,7 @@ static int NetIfAdpCtl(const char * pcszIfName, const char *pszAddr, const char
+     const char *args[] = { NULL, pcszIfName, pszAddr, pszOption, pszMask, NULL };
+
+     char szAdpCtl[RTPATH_MAX];
+-    int rc = RTPathExecDir(szAdpCtl, sizeof(szAdpCtl) - sizeof("/" VBOXNETADPCTL_NAME));
++    int rc = RTPathSuidDir(szAdpCtl, sizeof(szAdpCtl) - sizeof("/" VBOXNETADPCTL_NAME));
+     if (RT_FAILURE(rc))
+     {
+         LogRel(("NetIfAdpCtl: failed to get program path, rc=%Rrc.\n", rc));
+@@ -89,7 +89,7 @@ static int NetIfAdpCtl(HostNetworkInterface * pIf, const char *pszAddr, const ch
+ int NetIfAdpCtlOut(const char * pcszName, const char * pcszCmd, char *pszBuffer, size_t cBufSize)
+ {
+     char szAdpCtl[RTPATH_MAX];
+-    int rc = RTPathExecDir(szAdpCtl, sizeof(szAdpCtl) - sizeof("/" VBOXNETADPCTL_NAME " ") - strlen(pcszCmd));
++    int rc = RTPathSuidDir(szAdpCtl, sizeof(szAdpCtl) - sizeof("/" VBOXNETADPCTL_NAME " ") - strlen(pcszCmd));
+     if (RT_FAILURE(rc))
+     {
+         LogRel(("NetIfAdpCtlOut: Failed to get program path, rc=%Rrc\n", rc));
+@@ -201,7 +201,7 @@ int NetIfCreateHostOnlyNetworkInterface(VirtualBox *pVirtualBox,
+             progress.queryInterfaceTo(aProgress);
+
+             char szAdpCtl[RTPATH_MAX];
+-            int rc = RTPathExecDir(szAdpCtl, sizeof(szAdpCtl) - sizeof("/" VBOXNETADPCTL_NAME " add"));
++            int rc = RTPathSuidDir(szAdpCtl, sizeof(szAdpCtl) - sizeof("/" VBOXNETADPCTL_NAME " add"));
+             if (RT_FAILURE(rc))
+             {
+                 progress->i_notifyComplete(E_FAIL,
+diff --git a/src/VBox/Runtime/r3/path.cpp b/src/VBox/Runtime/r3/path.cpp
+index 944848e..744a261 100644
+--- a/src/VBox/Runtime/r3/path.cpp
++++ b/src/VBox/Runtime/r3/path.cpp
+@@ -81,6 +81,12 @@ RTDECL(int) RTPathExecDir(char *pszPath, size_t cchPath)
+ }
+
+
++RTDECL(int) RTPathSuidDir(char *pszPath, size_t cchPath)
++{
++    return RTStrCopy(pszPath, cchPath, "/run/wrappers/bin");
++}
++
++
+ RTDECL(int) RTPathAppPrivateNoArch(char *pszPath, size_t cchPath)
+ {
+ #if !defined(RT_OS_WINDOWS) && defined(RTPATH_APP_PRIVATE)
+diff --git a/src/VBox/Runtime/r3/process.cpp b/src/VBox/Runtime/r3/process.cpp
+index 2aab645..9795f21 100644
+--- a/src/VBox/Runtime/r3/process.cpp
++++ b/src/VBox/Runtime/r3/process.cpp
+@@ -111,6 +111,26 @@ RTR3DECL(char *) RTProcGetExecutablePath(char *pszExecPath, size_t cbExecPath)
+     return NULL;
+ }
+
++/*
++ * Note the / at the end! This is important, because the functions using this
++ * will cut off everything after the rightmost / as this function is analogous
++ * to RTProcGetExecutablePath().
++ */
++#define SUIDDIR "/run/wrappers/bin/"
++
++RTR3DECL(char *) RTProcGetSuidPath(char *pszExecPath, size_t cbExecPath)
++{
++    if (cbExecPath >= sizeof(SUIDDIR))
++    {
++        memcpy(pszExecPath, SUIDDIR, sizeof(SUIDDIR));
++        pszExecPath[sizeof(SUIDDIR)] = '\0';
++        return pszExecPath;
++    }
++
++    AssertMsgFailed(("Buffer too small (%zu <= %zu)\n", cbExecPath, sizeof(SUIDDIR)));
++    return NULL;
++}
++
+
+ RTR3DECL(const char *) RTProcShortName(void)
+ {
+diff --git a/src/VBox/Main/src-server/NetworkServiceRunner.cpp b/src/VBox/Main/src-server/NetworkServiceRunner.cpp
+index 2e57690..3272c84 100644
+--- a/src/VBox/Main/src-server/NetworkServiceRunner.cpp
++++ b/src/VBox/Main/src-server/NetworkServiceRunner.cpp
+@@ -188,7 +188,7 @@ int NetworkServiceRunner::start(bool aKillProcessOnStop)
+      * ASSUME it is relative to the directory that holds VBoxSVC.
+      */
+     char szExePath[RTPATH_MAX];
+-    AssertReturn(RTProcGetExecutablePath(szExePath, RTPATH_MAX), VERR_FILENAME_TOO_LONG);
++    AssertReturn(RTProcGetSuidPath(szExePath, RTPATH_MAX), VERR_FILENAME_TOO_LONG);
+     RTPathStripFilename(szExePath);
+     int vrc = RTPathAppend(szExePath, sizeof(szExePath), m->pszProcName);
+     AssertLogRelRCReturn(vrc, vrc);
+diff --git a/src/VBox/Main/src-all/MachineLaunchVMCommonWorker.cpp b/src/VBox/Main/src-all/MachineLaunchVMCommonWorker.cpp
+index 2991d3a7..d042a08b 100644
+--- a/src/VBox/Main/src-all/MachineLaunchVMCommonWorker.cpp
++++ b/src/VBox/Main/src-all/MachineLaunchVMCommonWorker.cpp
+@@ -90,7 +90,7 @@ int MachineLaunchVMCommonWorker(const Utf8Str &aNameOrId,
+ 
+     /* Get the path to the executable directory w/ trailing slash: */
+     char szPath[RTPATH_MAX];
+-    int vrc = RTPathAppPrivateArch(szPath, sizeof(szPath));
++    int vrc = RTStrCopy(szPath, sizeof(szPath) - 1, "/run/wrappers/bin");
+     AssertRCReturn(vrc, vrc);
+     size_t cbBufLeft = RTPathEnsureTrailingSeparator(szPath, sizeof(szPath));
+     AssertReturn(cbBufLeft > 0, VERR_FILENAME_TOO_LONG);
diff --git a/nixpkgs/pkgs/applications/virtualization/virtualbox/qt-env-vars.patch b/nixpkgs/pkgs/applications/virtualization/virtualbox/qt-env-vars.patch
new file mode 100644
index 000000000000..ad1d1fd11f87
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/virtualbox/qt-env-vars.patch
@@ -0,0 +1,14 @@
+--- a/src/VBox/HostDrivers/Support/SUPR3HardenedMain.cpp
++++ b/src/VBox/HostDrivers/Support/SUPR3HardenedMain.cpp
+@@ -2131,6 +2131,11 @@ static void supR3HardenedMainPurgeEnvironment(char **envp)
+         /** @todo Call NT API to do the same. */
+ #endif
+     }
++
++    /*
++     * NixOS hack: Set QT_PLUGIN_PATH to make Qt find plugins.
++     */
++    setenv("QT_PLUGIN_PATH", "@qtPluginPath@", /*overwrite=*/ 1);
+ }
+ 
+ 
diff --git a/nixpkgs/pkgs/applications/virtualization/virtualbox/qtx11extras.patch b/nixpkgs/pkgs/applications/virtualization/virtualbox/qtx11extras.patch
new file mode 100644
index 000000000000..a3aa98b081d1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/virtualbox/qtx11extras.patch
@@ -0,0 +1,16 @@
+diff --git a/kBuild/units/qt5.kmk b/kBuild/units/qt5.kmk
+index 71b96a3..73391f0 100644
+--- a/kBuild/units/qt5.kmk
++++ b/kBuild/units/qt5.kmk
+@@ -1054,9 +1054,9 @@ else
+    $(eval $(target)_LIBS   += $(PATH_SDK_QT5_LIB)/$(qt_prefix)qtmain$(qt_infix)$(SUFF_LIB) )
+   endif
+  else
+-  $(eval $(target)_LIBS    += $(foreach module,$(qt_modules), $(PATH_SDK_QT5_LIB)/lib$(qt_prefix)Qt5$(module)$(qt_infix)$(SUFF_DLL)) )
++  $(eval $(target)_LIBS    += $(foreach module,$(qt_modules), $(if $(filter X11Extras,$(module)),$(PATH_QT5_X11_EXTRAS_LIB),$(PATH_SDK_QT5_LIB))/lib$(qt_prefix)Qt5$(module)$(qt_infix)$(SUFF_DLL)) )
+  endif
+- $(eval $(target)_INCS     += $(addprefix $(PATH_SDK_QT5_INC)/Qt,$(qt_modules)) $(PATH_SDK_QT5_INC) )
++ $(eval $(target)_INCS     += $(addprefix $(PATH_SDK_QT5_INC)/Qt,$(qt_modules)) $(PATH_SDK_QT5_INC) $(PATH_QT5_X11_EXTRAS_INC)/QtX11Extras )
+ endif
+ $(eval $(target)_DEFS      += $(foreach module,$(toupper $(qt_modules)), QT_$(module)_LIB) )
+
diff --git a/nixpkgs/pkgs/applications/virtualization/virtualbox/update.sh b/nixpkgs/pkgs/applications/virtualization/virtualbox/update.sh
new file mode 100755
index 000000000000..fcd02ae8a27b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/virtualbox/update.sh
@@ -0,0 +1,44 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl common-updater-scripts nix-prefetch-scripts jq
+
+set -xeuo pipefail
+
+nixpkgs="$(git rev-parse --show-toplevel)"
+
+attr=virtualbox
+oldVersion="$(nix-instantiate --eval -E "with import $nixpkgs {}; $attr.version or (builtins.parseDrvName $attr.name).version" | tr -d '"')"
+latestVersion="$(curl -sS https://download.virtualbox.org/virtualbox/LATEST.TXT)"
+
+function fileShaSum() {
+  echo "$1" | grep -w $2 | cut -f1 -d' '
+}
+function oldHash() {
+  nix-instantiate --eval --strict -A "$1.drvAttrs.outputHash" | tr -d '"'
+}
+function nixFile() {
+  nix-instantiate --eval --strict -A "${1}.meta.position" | sed -re 's/^"(.*):[0-9]+"$/\1/'
+}
+
+if [ ! "$oldVersion" = "$latestVersion" ]; then
+  shaSums=$(curl -sS https://download.virtualbox.org/virtualbox/$latestVersion/SHA256SUMS)
+
+  virtualBoxShaSum=$(fileShaSum "$shaSums" "VirtualBox-$latestVersion.tar.bz2")
+  extpackShaSum=$(fileShaSum "$shaSums" "Oracle_VM_VirtualBox_Extension_Pack-$latestVersion.vbox-extpack")
+  guestAdditionsShaSum=$(fileShaSum "$shaSums" "*VBoxGuestAdditions_$latestVersion.iso")
+
+  virtualboxNixFile=$(nixFile ${attr})
+  extpackNixFile=$(nixFile ${attr}Extpack)
+  guestAdditionsNixFile=$(nixFile linuxPackages.${attr}GuestAdditions)
+
+  extpackOldShaSum=$(oldHash ${attr}Extpack)
+  guestAdditionsOldShaSum=$(oldHash linuxPackages.${attr}GuestAdditions.src)
+
+  update-source-version $attr $latestVersion $virtualBoxShaSum
+  sed -i -e 's|value = "'$extpackOldShaSum'"|value = "'$extpackShaSum'"|' $extpackNixFile
+  sed -i -e 's|sha256 = "'$guestAdditionsOldShaSum'"|sha256 = "'$guestAdditionsShaSum'"|' $guestAdditionsNixFile
+
+  git add $virtualboxNixFile $extpackNixFile $guestAdditionsNixFile
+  git commit -m "$attr: ${oldVersion} -> ${latestVersion}"
+else
+  echo "$attr is already up-to-date"
+fi
diff --git a/nixpkgs/pkgs/applications/virtualization/vpcs/default.nix b/nixpkgs/pkgs/applications/virtualization/vpcs/default.nix
new file mode 100644
index 000000000000..464fe46b499c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/vpcs/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, glibc }:
+
+stdenv.mkDerivation rec {
+  pname = "vpcs";
+  version = "0.8";
+
+  src = fetchurl {
+    name = "${pname}-${version}.tar.bz2";
+    url = "mirror://sourceforge/project/${pname}/${version}/${pname}-${version}-src.tbz";
+    sha256 = "14y9nflcyq486vvw0na0fkfmg5dac004qb332v4m5a0vaz8059nw";
+  };
+
+  patches = [ ./vpcs-0.8-glibc-2.26.patch ];
+
+  buildInputs = [ glibc.static ];
+
+  buildPhase = ''(
+    cd src
+    ./mk.sh ${stdenv.buildPlatform.platform.kernelArch}
+  )'';
+
+  installPhase = ''
+    install -D -m555 src/vpcs $out/bin/vpcs;
+    install -D -m444 man/vpcs.1 $out/share/man/man1/vpcs.1;
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Virtual PC simulator";
+    longDescription = ''
+      The VPCS can simulate up to 9 PCs. You can ping/traceroute them, or
+      ping/traceroute the other hosts/routers from the VPCS when you study the
+      Cisco routers in the dynamips.
+    '';
+    homepage = "https://sourceforge.net/projects/vpcs/";
+    license = licenses.bsd2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/vpcs/vpcs-0.8-glibc-2.26.patch b/nixpkgs/pkgs/applications/virtualization/vpcs/vpcs-0.8-glibc-2.26.patch
new file mode 100644
index 000000000000..d94a39ccd64d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/vpcs/vpcs-0.8-glibc-2.26.patch
@@ -0,0 +1,14 @@
+diff --git a/src/getopt.h b/src/getopt.h
+index 4394aa2..bf59e10 100644
+--- a/src/getopt.h
++++ b/src/getopt.h
+@@ -49,9 +49,6 @@ extern int optind;
+ extern int opterr;
+ extern int optopt;
+ 
+-#ifndef FreeBSD
+-int getopt(int argc, char** argv, char* optstr);
+-#endif
+ int arg_to_int(const char* arg, int min, int max, int defalt);
+ 
+ #ifdef __cplusplus
diff --git a/nixpkgs/pkgs/applications/virtualization/x11docker/default.nix b/nixpkgs/pkgs/applications/virtualization/x11docker/default.nix
new file mode 100644
index 000000000000..cbaa0a579926
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/x11docker/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, makeWrapper, nx-libs, xorg, getopt, gnugrep, gawk, ps, mount, iproute }:
+stdenv.mkDerivation rec {
+  pname = "x11docker";
+  version = "6.6.2";
+  src = fetchFromGitHub {
+    owner = "mviereck";
+    repo = "x11docker";
+    rev = "v${version}";
+    sha256 = "1skdgr2hipd7yx9c7r7nr3914gm9cm1xj6h3qdsa9f92xxm3aml1";
+  };
+  nativeBuildInputs = [ makeWrapper ];
+
+  dontBuild = true;
+
+  # Don't install `x11docker-gui`, because requires `kaptain` dependency
+  installPhase = ''
+    install -D x11docker "$out/bin/x11docker";
+    wrapProgram "$out/bin/x11docker" \
+      --prefix PATH : "${stdenv.lib.makeBinPath [ getopt gnugrep gawk ps mount iproute nx-libs xorg.xdpyinfo xorg.xhost xorg.xinit ]}"
+  '';
+
+  meta = {
+    description = "Run graphical applications with Docker";
+    homepage = "https://github.com/mviereck/x11docker";
+    license = stdenv.lib.licenses.mit;
+    maintainers = with stdenv.lib.maintainers; [ jD91mZM2 ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/xen/0000-fix-install-python.patch b/nixpkgs/pkgs/applications/virtualization/xen/0000-fix-install-python.patch
new file mode 100644
index 000000000000..53821c0d9c51
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/xen/0000-fix-install-python.patch
@@ -0,0 +1,16 @@
+tools/python/install-wrap script brakes shebangs patching, disable
+
+diff --git a/tools/Rules.mk b/tools/Rules.mk
+index 87a56dc..a7da869 100644
+--- a/tools/Rules.mk
++++ b/tools/Rules.mk
+@@ -90,8 +90,7 @@ CFLAGS += $(CFLAGS-y)
+ 
+ CFLAGS += $(EXTRA_CFLAGS_XEN_TOOLS)
+ 
+-INSTALL_PYTHON_PROG = \
+-	$(XEN_ROOT)/tools/python/install-wrap "$(PYTHON_PATH)" $(INSTALL_PROG)
++INSTALL_PYTHON_PROG = $(INSTALL_PROG)
+ 
+ %.opic: %.c
+ 	$(CC) $(CPPFLAGS) -DPIC $(CFLAGS) $(CFLAGS_$*.opic) -fPIC -c -o $@ $< $(APPEND_CFLAGS)
diff --git a/nixpkgs/pkgs/applications/virtualization/xen/0000-fix-ipxe-src.patch b/nixpkgs/pkgs/applications/virtualization/xen/0000-fix-ipxe-src.patch
new file mode 100644
index 000000000000..072338b87aba
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/xen/0000-fix-ipxe-src.patch
@@ -0,0 +1,27 @@
+hack to make etherboot use prefetched ipxe
+
+diff --git a/tools/firmware/etherboot/Makefile b/tools/firmware/etherboot/Makefile
+index a0578d2..64428a0 100644
+--- a/tools/firmware/etherboot/Makefile
++++ b/tools/firmware/etherboot/Makefile
+@@ -16,6 +16,7 @@ IPXE_TARBALL_URL ?= $(XEN_EXTFILES_URL)/ipxe-git-$(IPXE_GIT_TAG).tar.gz
+ 
+ D=ipxe
+ T=ipxe.tar.gz
++G=ipxe.git
+ 
+ ROMS = $(addprefix $D/src/bin/, $(addsuffix .rom, $(ETHERBOOT_NICS)))
+ 
+@@ -36,9 +37,9 @@ $T:
+ 	fi
+ 	mv _$T $T
+ 
+-$D/src/arch/i386/Makefile: $T Config
+-	rm -rf $D
+-	gzip -dc $T | tar xf -
++$D/src/arch/i386/Makefile: $G Config
++	mkdir $D
++	cp -a $G/* $D
+ 	for i in $$(cat patches/series) ; do                 \
+ 	    patch -d $D -p1 --quiet <patches/$$i || exit 1 ; \
+ 	done
diff --git a/nixpkgs/pkgs/applications/virtualization/xen/0000-qemu-seabios-enable-ATA_DMA.patch b/nixpkgs/pkgs/applications/virtualization/xen/0000-qemu-seabios-enable-ATA_DMA.patch
new file mode 100644
index 000000000000..339972a2cdeb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/xen/0000-qemu-seabios-enable-ATA_DMA.patch
@@ -0,0 +1,19 @@
+diff -uNr a/src/Kconfig b/src/Kconfig
+--- a/src/Kconfig	2015-08-31 10:15:13.231134858 +0200
++++ b/src/Kconfig	2015-08-31 10:14:24.039180178 +0200
+@@ -144,13 +144,13 @@
+     config ATA_DMA
+         depends on ATA
+         bool "ATA DMA"
+-        default n
++        default y
+         help
+             Detect and try to use ATA bus mastering DMA controllers.
+     config ATA_PIO32
+         depends on ATA
+         bool "ATA 32bit PIO"
+-        default n
++        default y
+         help
+             Use 32bit PIO accesses on ATA (minor optimization on PCI transfers).
+     config AHCI
diff --git a/nixpkgs/pkgs/applications/virtualization/xen/0001-libxl-Spice-image-compression-setting-support-for-up.patch b/nixpkgs/pkgs/applications/virtualization/xen/0001-libxl-Spice-image-compression-setting-support-for-up.patch
new file mode 100644
index 000000000000..67b7ac777b5d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/xen/0001-libxl-Spice-image-compression-setting-support-for-up.patch
@@ -0,0 +1,104 @@
+From bd71555985efc423b1a119b6a3177de855763453 Mon Sep 17 00:00:00 2001
+From: Fabio Fantoni <fabio.fantoni@m2r.biz>
+Date: Tue, 20 Jan 2015 11:26:30 +0100
+Subject: [PATCH] libxl: Spice image compression setting support for upstream
+ qemu
+
+Usage:
+spice_image_compression=[auto_glz|auto_lz|quic|glz|lz|off]
+
+Specifies what image compression is to be used by spice (if given),
+otherwise the qemu default will be used.
+
+Signed-off-by: Fabio Fantoni <fabio.fantoni@m2r.biz>
+Acked-by: Wei Liu <wei.liu2@citrix.com>
+---
+ docs/man/xl.cfg.pod.5       |  6 ++++++
+ tools/libxl/libxl.h         | 11 +++++++++++
+ tools/libxl/libxl_dm.c      |  4 ++++
+ tools/libxl/libxl_types.idl |  1 +
+ tools/libxl/xl_cmdimpl.c    |  2 ++
+ 5 files changed, 24 insertions(+)
+
+diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5
+index e2f91fc..0c2cbac 100644
+--- a/docs/man/xl.cfg.pod.5
++++ b/docs/man/xl.cfg.pod.5
+@@ -1427,6 +1427,12 @@ for redirection of up to 4 usb devices from spice client to domU's qemu.
+ It requires an usb controller and if not defined it will automatically adds
+ an usb2 controller. The default is disabled (0).
+ 
++=item B<spice_image_compression=[auto_glz|auto_lz|quic|glz|lz|off]>
++
++Specifies what image compression is to be used by spice (if given), otherwise
++the qemu default will be used. Please see documentations of your current qemu
++version for details.
++
+ =back
+ 
+ =head3 Miscellaneous Emulated Hardware
+diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
+index 0a123f1..b8e0b67 100644
+--- a/tools/libxl/libxl.h
++++ b/tools/libxl/libxl.h
+@@ -528,6 +528,17 @@ typedef struct libxl__ctx libxl_ctx;
+ #define LIBXL_HAVE_SPICE_USBREDIREDIRECTION 1
+ 
+ /*
++ * LIBXL_HAVE_SPICE_IMAGECOMPRESSION
++ *
++ * If defined, then the libxl_spice_info structure will contain a string type
++ * field: image_compression. This value defines what Spice image compression
++ * is used.
++ *
++ * If this is not defined, the Spice image compression setting support is ignored.
++ */
++#define LIBXL_HAVE_SPICE_IMAGECOMPRESSION 1
++
++/*
+  * LIBXL_HAVE_DOMAIN_CREATE_RESTORE_PARAMS 1
+  *
+  * If this is defined, libxl_domain_create_restore()'s API has changed to
+diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
+index c2b0487..40c8649 100644
+--- a/tools/libxl/libxl_dm.c
++++ b/tools/libxl/libxl_dm.c
+@@ -398,6 +398,10 @@ static char *dm_spice_options(libxl__gc *gc,
+     if (!libxl_defbool_val(spice->clipboard_sharing))
+         opt = libxl__sprintf(gc, "%s,disable-copy-paste", opt);
+ 
++    if (spice->image_compression)
++        opt = libxl__sprintf(gc, "%s,image-compression=%s", opt,
++                             spice->image_compression);
++
+     return opt;
+ }
+ 
+diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
+index 1214d2e..052ded9 100644
+--- a/tools/libxl/libxl_types.idl
++++ b/tools/libxl/libxl_types.idl
+@@ -241,6 +241,7 @@ libxl_spice_info = Struct("spice_info", [
+     ("vdagent",     libxl_defbool),
+     ("clipboard_sharing", libxl_defbool),
+     ("usbredirection", integer),
++    ("image_compression", string),
+     ])
+ 
+ libxl_sdl_info = Struct("sdl_info", [
+diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
+index 0b02a6c..00aa69d 100644
+--- a/tools/libxl/xl_cmdimpl.c
++++ b/tools/libxl/xl_cmdimpl.c
+@@ -1948,6 +1948,8 @@ skip_vfb:
+                             &b_info->u.hvm.spice.clipboard_sharing, 0);
+         if (!xlu_cfg_get_long (config, "spiceusbredirection", &l, 0))
+             b_info->u.hvm.spice.usbredirection = l;
++        xlu_cfg_replace_string (config, "spice_image_compression",
++                                &b_info->u.hvm.spice.image_compression, 0);
+         xlu_cfg_get_defbool(config, "nographic", &b_info->u.hvm.nographic, 0);
+         xlu_cfg_get_defbool(config, "gfx_passthru",
+                             &b_info->u.hvm.gfx_passthru, 0);
+-- 
+1.9.2
+
diff --git a/nixpkgs/pkgs/applications/virtualization/xen/0002-libxl-Spice-streaming-video-setting-support-for-upst.patch b/nixpkgs/pkgs/applications/virtualization/xen/0002-libxl-Spice-streaming-video-setting-support-for-upst.patch
new file mode 100644
index 000000000000..acf9cff99251
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/xen/0002-libxl-Spice-streaming-video-setting-support-for-upst.patch
@@ -0,0 +1,104 @@
+From 296c7f3284efe655d95a8ae045a5dc1a20d6fff0 Mon Sep 17 00:00:00 2001
+From: Fabio Fantoni <fabio.fantoni@m2r.biz>
+Date: Tue, 20 Jan 2015 11:33:17 +0100
+Subject: [PATCH] libxl: Spice streaming video setting support for upstream
+ qemu
+
+Usage:
+spice_streaming_video=[filter|all|off]
+
+Specifies what streaming video setting is to be used by spice (if
+given),
+otherwise the qemu default will be used.
+
+Signed-off-by: Fabio Fantoni <fabio.fantoni@m2r.biz>
+Acked-by: Wei Liu <wei.liu2@citrix.com>
+---
+ docs/man/xl.cfg.pod.5       |  5 +++++
+ tools/libxl/libxl.h         | 11 +++++++++++
+ tools/libxl/libxl_dm.c      |  4 ++++
+ tools/libxl/libxl_types.idl |  1 +
+ tools/libxl/xl_cmdimpl.c    |  2 ++
+ 5 files changed, 23 insertions(+)
+
+diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5
+index 0c2cbac..408653f 100644
+--- a/docs/man/xl.cfg.pod.5
++++ b/docs/man/xl.cfg.pod.5
+@@ -1433,6 +1433,11 @@ Specifies what image compression is to be used by spice (if given), otherwise
+ the qemu default will be used. Please see documentations of your current qemu
+ version for details.
+ 
++=item B<spice_streaming_video=[filter|all|off]>
++
++Specifies what streaming video setting is to be used by spice (if given),
++otherwise the qemu default will be used.
++
+ =back
+ 
+ =head3 Miscellaneous Emulated Hardware
+diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
+index b8e0b67..c219f59 100644
+--- a/tools/libxl/libxl.h
++++ b/tools/libxl/libxl.h
+@@ -539,6 +539,17 @@ typedef struct libxl__ctx libxl_ctx;
+ #define LIBXL_HAVE_SPICE_IMAGECOMPRESSION 1
+ 
+ /*
++ * LIBXL_HAVE_SPICE_STREAMINGVIDEO
++ *
++ * If defined, then the libxl_spice_info structure will contain a string type
++ * field: streaming_video. This value defines what Spice streaming video setting
++ * is used.
++ *
++ * If this is not defined, the Spice streaming video setting support is ignored.
++ */
++#define LIBXL_HAVE_SPICE_STREAMINGVIDEO 1
++
++/*
+  * LIBXL_HAVE_DOMAIN_CREATE_RESTORE_PARAMS 1
+  *
+  * If this is defined, libxl_domain_create_restore()'s API has changed to
+diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
+index 40c8649..d8d6f0c 100644
+--- a/tools/libxl/libxl_dm.c
++++ b/tools/libxl/libxl_dm.c
+@@ -402,6 +402,10 @@ static char *dm_spice_options(libxl__gc *gc,
+         opt = libxl__sprintf(gc, "%s,image-compression=%s", opt,
+                              spice->image_compression);
+ 
++    if (spice->streaming_video)
++        opt = libxl__sprintf(gc, "%s,streaming-video=%s", opt,
++                             spice->streaming_video);
++
+     return opt;
+ }
+ 
+diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
+index 052ded9..02be466 100644
+--- a/tools/libxl/libxl_types.idl
++++ b/tools/libxl/libxl_types.idl
+@@ -242,6 +242,7 @@ libxl_spice_info = Struct("spice_info", [
+     ("clipboard_sharing", libxl_defbool),
+     ("usbredirection", integer),
+     ("image_compression", string),
++    ("streaming_video", string),
+     ])
+ 
+ libxl_sdl_info = Struct("sdl_info", [
+diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
+index 00aa69d..b7eac29 100644
+--- a/tools/libxl/xl_cmdimpl.c
++++ b/tools/libxl/xl_cmdimpl.c
+@@ -1950,6 +1950,8 @@ skip_vfb:
+             b_info->u.hvm.spice.usbredirection = l;
+         xlu_cfg_replace_string (config, "spice_image_compression",
+                                 &b_info->u.hvm.spice.image_compression, 0);
++        xlu_cfg_replace_string (config, "spice_streaming_video",
++                                &b_info->u.hvm.spice.streaming_video, 0);
+         xlu_cfg_get_defbool(config, "nographic", &b_info->u.hvm.nographic, 0);
+         xlu_cfg_get_defbool(config, "gfx_passthru",
+                             &b_info->u.hvm.gfx_passthru, 0);
+-- 
+1.9.2
+
diff --git a/nixpkgs/pkgs/applications/virtualization/xen/0003-Add-qxl-vga-interface-support-for-upstream-qem.patch b/nixpkgs/pkgs/applications/virtualization/xen/0003-Add-qxl-vga-interface-support-for-upstream-qem.patch
new file mode 100644
index 000000000000..1771b662bc3a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/xen/0003-Add-qxl-vga-interface-support-for-upstream-qem.patch
@@ -0,0 +1,165 @@
+From 161212ef02312c0681d2d809c8ff1e1f0ea6f6f9 Mon Sep 17 00:00:00 2001
+From: Fabio Fantoni <fabio.fantoni@m2r.biz>
+Date: Wed, 29 Apr 2015 11:20:28 +0200
+Subject: [PATCH] libxl: Add qxl vga interface support for upstream qemu
+
+Usage:
+vga="qxl"
+
+Qxl vga support many resolutions that not supported by stdvga,
+mainly the 16:9 ones and other high up to 2560x1600.
+With QXL you can get improved performance and smooth video also
+with high resolutions and high quality.
+Require their drivers installed in the domU and spice used
+otherwise act as a simple stdvga.
+
+Signed-off-by: Fabio Fantoni <fabio.fantoni@m2r.biz>
+Signed-off-by: Zhou Peng <zpengxen@gmail.com>
+Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
+Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
+Acked-by: George Dunlap <george.dunlap@eu.citrix.com>
+---
+ docs/man/xl.cfg.pod.5       | 10 +++++++++-
+ tools/libxl/libxl.h         | 10 ++++++++++
+ tools/libxl/libxl_create.c  | 13 +++++++++++++
+ tools/libxl/libxl_dm.c      |  8 ++++++++
+ tools/libxl/libxl_types.idl |  1 +
+ tools/libxl/xl_cmdimpl.c    |  2 ++
+ 6 files changed, 43 insertions(+), 1 deletion(-)
+
+diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5
+index f936dfc..8e4154f 100644
+--- a/docs/man/xl.cfg.pod.5
++++ b/docs/man/xl.cfg.pod.5
+@@ -1360,6 +1360,9 @@ qemu-xen-traditional device-model, the amount of video RAM is fixed at 4 MB,
+ which is sufficient for 1024x768 at 32 bpp. For the upstream qemu-xen
+ device-model, the default and minimum is 8 MB.
+ 
++For B<qxl> vga, the default is both default and minimal 128MB.
++If B<videoram> is set less than 128MB, an error will be triggered.
++
+ =item B<stdvga=BOOLEAN>
+ 
+ Select a standard VGA card with VBE (VESA BIOS Extensions) as the
+@@ -1371,9 +1374,14 @@ This option is deprecated, use vga="stdvga" instead.
+ 
+ =item B<vga="STRING">
+ 
+-Selects the emulated video card (none|stdvga|cirrus).
++Selects the emulated video card (none|stdvga|cirrus|qxl).
+ The default is cirrus.
+ 
++In general, QXL should work with the Spice remote display protocol
++for acceleration, and QXL driver is necessary in guest in this case.
++QXL can also work with the VNC protocol, but it will be like a standard
++VGA without acceleration.
++
+ =item B<vnc=BOOLEAN>
+ 
+ Allow access to the display via the VNC protocol.  This enables the
+diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
+index 44bd8e2..efc0617 100644
+--- a/tools/libxl/libxl.h
++++ b/tools/libxl/libxl.h
+@@ -535,6 +535,16 @@ typedef struct libxl__ctx libxl_ctx;
+ #define LIBXL_HAVE_DOMINFO_OUTSTANDING_MEMKB 1
+ 
+ /*
++ * LIBXL_HAVE_QXL
++ *
++ * If defined, then the libxl_vga_interface_type will contain another value:
++ * "QXL". This value define if qxl vga is supported.
++ *
++ * If this is not defined, the qxl vga support is missed.
++ */
++#define LIBXL_HAVE_QXL 1
++
++/*
+  * LIBXL_HAVE_SPICE_VDAGENT
+  *
+  * If defined, then the libxl_spice_info structure will contain a boolean type:
+diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
+index e5a343f..188f7df 100644
+--- a/tools/libxl/libxl_create.c
++++ b/tools/libxl/libxl_create.c
+@@ -248,6 +248,10 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc,
+                 if (b_info->video_memkb == LIBXL_MEMKB_DEFAULT)
+                     b_info->video_memkb = 0;
+                 break;
++            case LIBXL_VGA_INTERFACE_TYPE_QXL:
++                LOG(ERROR,"qemu upstream required for qxl vga");
++                return ERROR_INVAL;
++                break;
+             case LIBXL_VGA_INTERFACE_TYPE_STD:
+                 if (b_info->video_memkb == LIBXL_MEMKB_DEFAULT)
+                     b_info->video_memkb = 8 * 1024;
+@@ -272,6 +276,15 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc,
+                 if (b_info->video_memkb == LIBXL_MEMKB_DEFAULT)
+                     b_info->video_memkb = 0;
+                 break;
++            case LIBXL_VGA_INTERFACE_TYPE_QXL:
++                if (b_info->video_memkb == LIBXL_MEMKB_DEFAULT) {
++                    b_info->video_memkb = (128 * 1024);
++                } else if (b_info->video_memkb < (128 * 1024)) {
++                    LOG(ERROR,
++                        "128 Mib videoram is the minimum for qxl default");
++                    return ERROR_INVAL;
++                }
++                break;
+             case LIBXL_VGA_INTERFACE_TYPE_STD:
+                 if (b_info->video_memkb == LIBXL_MEMKB_DEFAULT)
+                     b_info->video_memkb = 16 * 1024;
+diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
+index 30c1578..58c9b99 100644
+--- a/tools/libxl/libxl_dm.c
++++ b/tools/libxl/libxl_dm.c
+@@ -251,6 +251,8 @@ static char ** libxl__build_device_model_args_old(libxl__gc *gc,
+         case LIBXL_VGA_INTERFACE_TYPE_NONE:
+             flexarray_append_pair(dm_args, "-vga", "none");
+             break;
++        case LIBXL_VGA_INTERFACE_TYPE_QXL:
++            break;
+         }
+ 
+         if (b_info->u.hvm.boot) {
+@@ -625,6 +627,12 @@ static char ** libxl__build_device_model_args_new(libxl__gc *gc,
+             break;
+         case LIBXL_VGA_INTERFACE_TYPE_NONE:
+             break;
++        case LIBXL_VGA_INTERFACE_TYPE_QXL:
++            /* QXL have 2 ram regions, ram and vram */
++            flexarray_append_pair(dm_args, "-device",
++                GCSPRINTF("qxl-vga,vram_size_mb=%"PRIu64",ram_size_mb=%"PRIu64,
++                (b_info->video_memkb/2/1024), (b_info->video_memkb/2/1024) ) );
++            break;
+         }
+ 
+         if (b_info->u.hvm.boot) {
+diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
+index 117b61d..023b21e 100644
+--- a/tools/libxl/libxl_types.idl
++++ b/tools/libxl/libxl_types.idl
+@@ -183,6 +183,7 @@ libxl_vga_interface_type = Enumeration("vga_interface_type", [
+     (1, "CIRRUS"),
+     (2, "STD"),
+     (3, "NONE"),
++    (4, "QXL"),
+     ], init_val = "LIBXL_VGA_INTERFACE_TYPE_CIRRUS")
+ 
+ libxl_vendor_device = Enumeration("vendor_device", [
+diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
+index 648ca08..526a1f6 100644
+--- a/tools/libxl/xl_cmdimpl.c
++++ b/tools/libxl/xl_cmdimpl.c
+@@ -2115,6 +2115,8 @@ skip_vfb:
+                 b_info->u.hvm.vga.kind = LIBXL_VGA_INTERFACE_TYPE_CIRRUS;
+             } else if (!strcmp(buf, "none")) {
+                 b_info->u.hvm.vga.kind = LIBXL_VGA_INTERFACE_TYPE_NONE;
++            } else if (!strcmp(buf, "qxl")) {
++                b_info->u.hvm.vga.kind = LIBXL_VGA_INTERFACE_TYPE_QXL;
+             } else {
+                 fprintf(stderr, "Unknown vga \"%s\" specified\n", buf);
+                 exit(1);
+-- 
+1.9.2
+
diff --git a/nixpkgs/pkgs/applications/virtualization/xen/4.10.nix b/nixpkgs/pkgs/applications/virtualization/xen/4.10.nix
new file mode 100644
index 000000000000..7e3c73fb11d5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/xen/4.10.nix
@@ -0,0 +1,181 @@
+{ stdenv, callPackage, fetchurl, fetchpatch, fetchgit
+, ocaml-ng
+, withInternalQemu ? true
+, withInternalTraditionalQemu ? true
+, withInternalSeabios ? true
+, withSeabios ? !withInternalSeabios, seabios ? null
+, withInternalOVMF ? false # FIXME: tricky to build
+, withOVMF ? false, OVMF
+, withLibHVM ? true
+
+# qemu
+, udev, pciutils, xorg, SDL, pixman, acl, glusterfs, spice-protocol, usbredir
+, alsaLib, glib, python2
+, ... } @ args:
+
+assert withInternalSeabios -> !withSeabios;
+assert withInternalOVMF -> !withOVMF;
+
+with stdenv.lib;
+
+# Patching XEN? Check the XSAs at
+# https://xenbits.xen.org/xsa/
+# and try applying all the ones we don't have yet.
+
+let
+  xsa = import ./xsa-patches.nix { inherit fetchpatch; };
+
+  qemuMemfdBuildFix = fetchpatch {
+    name = "xen-4.8-memfd-build-fix.patch";
+    url = "https://github.com/qemu/qemu/commit/75e5b70e6b5dcc4f2219992d7cffa462aa406af0.patch";
+    sha256 = "0gaz93kb33qc0jx6iphvny0yrd17i8zhcl3a9ky5ylc2idz0wiwa";
+  };
+
+  qemuDeps = [
+    udev pciutils xorg.libX11 SDL pixman acl glusterfs spice-protocol usbredir
+    alsaLib glib python2
+  ];
+in
+
+callPackage (import ./generic.nix (rec {
+  version = "4.10.4";
+
+  src = fetchurl {
+    url = "https://downloads.xenproject.org/release/xen/${version}/xen-${version}.tar.gz";
+    sha256 = "0ipkr7b3v3y183n6nfmz7q3gnzxa20011df4jpvxi6pmr8cpnkwh";
+  };
+
+  # Sources needed to build tools and firmwares.
+  xenfiles = optionalAttrs withInternalQemu {
+    qemu-xen = {
+      src = fetchgit {
+        url = "https://xenbits.xen.org/git-http/qemu-xen.git";
+        # rev = "refs/tags/qemu-xen-${version}";
+        # use revision hash - reproducible but must be updated with each new version
+        rev = "qemu-xen-${version}";
+        sha256 = "0laxvhdjz1njxjvq3jzw2yqvdr9gdn188kqjf2gcrfzgih7xv2ym";
+      };
+      buildInputs = qemuDeps;
+      postPatch = ''
+        # needed in build but /usr/bin/env is not available in sandbox
+        substituteInPlace scripts/tracetool.py \
+          --replace "/usr/bin/env python" "${python2}/bin/python"
+      '';
+      meta.description = "Xen's fork of upstream Qemu";
+    };
+  } // optionalAttrs withInternalTraditionalQemu {
+    qemu-xen-traditional = {
+      src = fetchgit {
+        url = "https://xenbits.xen.org/git-http/qemu-xen-traditional.git";
+        # rev = "refs/tags/xen-${version}";
+        # use revision hash - reproducible but must be updated with each new version
+        rev = "c8ea0457495342c417c3dc033bba25148b279f60";
+        sha256 = "0v5nl3c08kpjg57fb8l191h1y57ykp786kz6l525jgplif28vx13";
+      };
+      buildInputs = qemuDeps;
+      patches = [
+      ];
+      postPatch = ''
+        substituteInPlace xen-hooks.mak \
+          --replace /usr/include/pci ${pciutils}/include/pci
+      '';
+      meta.description = "Xen's fork of upstream Qemu that uses old device model";
+    };
+  } // optionalAttrs withInternalSeabios {
+    "firmware/seabios-dir-remote" = {
+      src = fetchgit {
+        url = "https://xenbits.xen.org/git-http/seabios.git";
+        rev = "f0cdc36d2f2424f6b40438f7ee7cc502c0eff4df";
+        sha256 = "1wq5pjkjrfzqnq3wyr15mcn1l4c563m65gdyf8jm97kgb13pwwfm";
+      };
+      patches = [ ./0000-qemu-seabios-enable-ATA_DMA.patch ];
+      meta.description = "Xen's fork of Seabios";
+    };
+  } // optionalAttrs withInternalOVMF {
+    "firmware/ovmf-dir-remote" = {
+      src = fetchgit {
+        url = "https://xenbits.xen.org/git-http/ovmf.git";
+        rev = "173bf5c847e3ca8b42c11796ce048d8e2e916ff8";
+        sha256 = "07zmdj90zjrzip74fvd4ss8n8njk6cim85s58mc6snxmqqv7gmcr";
+      };
+      meta.description = "Xen's fork of OVMF";
+    };
+  } // {
+    # TODO: patch Xen to make this optional?
+    "firmware/etherboot/ipxe.git" = {
+      src = fetchgit {
+        url = "https://git.ipxe.org/ipxe.git";
+        rev = "356f6c1b64d7a97746d1816cef8ca22bdd8d0b5d";
+        sha256 = "15n400vm3id5r8y3k6lrp9ab2911a9vh9856f5gvphkazfnmns09";
+      };
+      meta.description = "Xen's fork of iPXE";
+    };
+  } // optionalAttrs withLibHVM {
+    xen-libhvm-dir-remote = {
+      src = fetchgit {
+        name = "xen-libhvm";
+        url = "https://github.com/michalpalka/xen-libhvm";
+        rev = "83065d36b36d6d527c2a4e0f5aaf0a09ee83122c";
+        sha256 = "1jzv479wvgjkazprqdzcdjy199azmx2xl3pnxli39kc5mvjz3lzd";
+      };
+      buildPhase = ''
+        make
+        cd biospt
+        cc -Wall -g -D_LINUX -Wstrict-prototypes biospt.c -o biospt -I../libhvm -L../libhvm -lxenhvm
+      '';
+      installPhase = ''
+        make install
+        cp biospt/biospt $out/bin/
+      '';
+      meta = {
+        description = ''
+          Helper library for reading ACPI and SMBIOS firmware values
+          from the host system for use with the HVM guest firmware
+          pass-through feature in Xen'';
+        license = licenses.bsd2;
+      };
+    };
+  };
+
+  configureFlags = []
+    ++ optional (!withInternalQemu) "--with-system-qemu" # use qemu from PATH
+    ++ optional (withInternalTraditionalQemu) "--enable-qemu-traditional"
+    ++ optional (!withInternalTraditionalQemu) "--disable-qemu-traditional"
+
+    ++ optional (withSeabios) "--with-system-seabios=${seabios}"
+    ++ optional (!withInternalSeabios && !withSeabios) "--disable-seabios"
+
+    ++ optional (withOVMF) "--with-system-ovmf=${OVMF.fd}/FV/OVMF.fd"
+    ++ optional (withInternalOVMF) "--enable-ovmf";
+
+  NIX_CFLAGS_COMPILE = toString [
+    # Fix build on Glibc 2.24.
+    "-Wno-error=deprecated-declarations"
+    # Fix build with GCC 8
+    "-Wno-error=maybe-uninitialized"
+    "-Wno-error=stringop-truncation"
+    "-Wno-error=format-truncation"
+    "-Wno-error=array-bounds"
+    # Fix build with GCC 9
+    "-Wno-error=address-of-packed-member"
+    "-Wno-error=format-overflow"
+    "-Wno-error=absolute-value"
+  ];
+
+  postPatch = ''
+    # Avoid a glibc >= 2.25 deprecation warnings that get fatal via -Werror.
+    sed 1i'#include <sys/sysmacros.h>' \
+      -i tools/blktap2/control/tap-ctl-allocate.c \
+      -i tools/libxl/libxl_device.c
+    # Makefile didn't include previous PKG_CONFIG_PATH so glib wasn't found
+    substituteInPlace tools/Makefile \
+      --replace 'PKG_CONFIG_PATH=$(XEN_ROOT)/tools/pkg-config' 'PKG_CONFIG_PATH=$(XEN_ROOT)/tools/pkg-config:$(PKG_CONFIG_PATH)'
+  '';
+
+  passthru = {
+    qemu-system-i386 = if withInternalQemu
+      then "lib/xen/bin/qemu-system-i386"
+      else throw "this xen has no qemu builtin";
+  };
+
+})) ({ ocamlPackages = ocaml-ng.ocamlPackages_4_05; } // args)
diff --git a/nixpkgs/pkgs/applications/virtualization/xen/4.8.nix b/nixpkgs/pkgs/applications/virtualization/xen/4.8.nix
new file mode 100644
index 000000000000..6fa30462df08
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/xen/4.8.nix
@@ -0,0 +1,198 @@
+{ stdenv, callPackage, fetchurl, fetchpatch, fetchgit
+, ocaml-ng
+, withInternalQemu ? true
+, withInternalTraditionalQemu ? true
+, withInternalSeabios ? true
+, withSeabios ? !withInternalSeabios, seabios ? null
+, withInternalOVMF ? false # FIXME: tricky to build
+, withOVMF ? false, OVMF
+, withLibHVM ? true
+
+# qemu
+, udev, pciutils, xorg, SDL, pixman, acl, glusterfs, spice-protocol, usbredir
+, alsaLib
+, ... } @ args:
+
+assert withInternalSeabios -> !withSeabios;
+assert withInternalOVMF -> !withOVMF;
+
+with stdenv.lib;
+
+# Patching XEN? Check the XSAs at
+# https://xenbits.xen.org/xsa/
+# and try applying all the ones we don't have yet.
+
+let
+  xsa = import ./xsa-patches.nix { inherit fetchpatch; };
+
+  xenlockprofpatch = (fetchpatch {
+    name = "xenlockprof-gcc7.patch";
+    url = "https://xenbits.xen.org/gitweb/?p=xen.git;a=patch;h=f49fa658b53580cf2ad354d2bf1796766cc11222";
+    sha256 = "1lvzfvkqirknivm8q4cg5byfqz49s16zjk65fkwl3kwb03chky70";
+  });
+
+  xenpmdpatch = (fetchpatch {
+    name = "xenpmd-gcc7.patch";
+    url = "https://xenbits.xen.org/gitweb/?p=xen.git;a=patch;h=2d78f78a14528752266982473c07118f1bc336e3";
+    sha256 = "1ki295pymbcfc64sjb9wqfwpv19p8vwgmnxankada3vm4fxg2rhq";
+  });
+
+  qemuMemfdBuildFix = fetchpatch {
+    name = "xen-4.8-memfd-build-fix.patch";
+    url = "https://github.com/qemu/qemu/commit/75e5b70e6b5dcc4f2219992d7cffa462aa406af0.patch";
+    sha256 = "0gaz93kb33qc0jx6iphvny0yrd17i8zhcl3a9ky5ylc2idz0wiwa";
+  };
+
+  # Ported from
+  #"https://xenbits.xen.org/gitweb/?p=qemu-xen.git;a=patch;h=e014dbe74e0484188164c61ff6843f8a04a8cb9d";
+  #"https://xenbits.xen.org/gitweb/?p=qemu-xen.git;a=patch;h=0e3b891fefacc0e49f3c8ffa3a753b69eb7214d2";
+  qemuGlusterfs6Fix = ./qemu-gluster-6-compat.diff;
+
+  qemuDeps = [
+    udev pciutils xorg.libX11 SDL pixman acl glusterfs spice-protocol usbredir
+    alsaLib
+  ];
+in
+
+callPackage (import ./generic.nix (rec {
+  version = "4.8.5";
+
+  src = fetchurl {
+    url = "https://downloads.xenproject.org/release/xen/${version}/xen-${version}.tar.gz";
+    sha256 = "04xcf01jad1lpqnmjblzhnjzp0bss9fjd9awgcycjx679arbaxqz";
+  };
+
+  # Sources needed to build tools and firmwares.
+  xenfiles = optionalAttrs withInternalQemu {
+    qemu-xen = {
+      src = fetchgit {
+        url = "https://xenbits.xen.org/git-http/qemu-xen.git";
+        rev = "refs/tags/qemu-xen-${version}";
+        sha256 = "0lb7zd5nvr6znx47z93nbq4gj8xfb3622s8r2cvmpqmwnmlc3nd4";
+      };
+      patches = [
+        qemuMemfdBuildFix
+        qemuGlusterfs6Fix
+      ];
+      buildInputs = qemuDeps;
+      meta.description = "Xen's fork of upstream Qemu";
+    };
+  } // optionalAttrs withInternalTraditionalQemu {
+    qemu-xen-traditional = {
+      src = fetchgit {
+        url = "https://xenbits.xen.org/git-http/qemu-xen-traditional.git";
+        rev = "refs/tags/xen-${version}";
+        sha256 = "0mryap5y53r09m7qc0b821f717ghwm654r8c3ik1w7adzxr0l5qk";
+      };
+      buildInputs = qemuDeps;
+      patches = [
+      ];
+      postPatch = ''
+        substituteInPlace xen-hooks.mak \
+          --replace /usr/include/pci ${pciutils}/include/pci
+      '';
+      meta.description = "Xen's fork of upstream Qemu that uses old device model";
+    };
+  } // optionalAttrs withInternalSeabios {
+    "firmware/seabios-dir-remote" = {
+      src = fetchgit {
+        url = "https://xenbits.xen.org/git-http/seabios.git";
+        rev = "f0cdc36d2f2424f6b40438f7ee7cc502c0eff4df";
+        sha256 = "1wq5pjkjrfzqnq3wyr15mcn1l4c563m65gdyf8jm97kgb13pwwfm";
+      };
+      patches = [ ./0000-qemu-seabios-enable-ATA_DMA.patch ];
+      meta.description = "Xen's fork of Seabios";
+    };
+  } // optionalAttrs withInternalOVMF {
+    "firmware/ovmf-dir-remote" = {
+      src = fetchgit {
+        url = "https://xenbits.xen.org/git-http/ovmf.git";
+        rev = "173bf5c847e3ca8b42c11796ce048d8e2e916ff8";
+        sha256 = "07zmdj90zjrzip74fvd4ss8n8njk6cim85s58mc6snxmqqv7gmcr";
+      };
+      meta.description = "Xen's fork of OVMF";
+    };
+  } // {
+    # TODO: patch Xen to make this optional?
+    "firmware/etherboot/ipxe.git" = {
+      src = fetchgit {
+        url = "https://git.ipxe.org/ipxe.git";
+        rev = "356f6c1b64d7a97746d1816cef8ca22bdd8d0b5d";
+        sha256 = "15n400vm3id5r8y3k6lrp9ab2911a9vh9856f5gvphkazfnmns09";
+      };
+      meta.description = "Xen's fork of iPXE";
+    };
+  } // optionalAttrs withLibHVM {
+    xen-libhvm-dir-remote = {
+      src = fetchgit {
+        name = "xen-libhvm";
+        url = "https://github.com/michalpalka/xen-libhvm";
+        rev = "83065d36b36d6d527c2a4e0f5aaf0a09ee83122c";
+        sha256 = "1jzv479wvgjkazprqdzcdjy199azmx2xl3pnxli39kc5mvjz3lzd";
+      };
+      buildPhase = ''
+        make
+        cd biospt
+        cc -Wall -g -D_LINUX -Wstrict-prototypes biospt.c -o biospt -I../libhvm -L../libhvm -lxenhvm
+      '';
+      installPhase = ''
+        make install
+        cp biospt/biospt $out/bin/
+      '';
+      meta = {
+        description = ''
+          Helper library for reading ACPI and SMBIOS firmware values
+          from the host system for use with the HVM guest firmware
+          pass-through feature in Xen'';
+        license = licenses.bsd2;
+      };
+    };
+  };
+
+  configureFlags = []
+    ++ optional (!withInternalQemu) "--with-system-qemu" # use qemu from PATH
+    ++ optional (withInternalTraditionalQemu) "--enable-qemu-traditional"
+    ++ optional (!withInternalTraditionalQemu) "--disable-qemu-traditional"
+
+    ++ optional (withSeabios) "--with-system-seabios=${seabios}"
+    ++ optional (!withInternalSeabios && !withSeabios) "--disable-seabios"
+
+    ++ optional (withOVMF) "--with-system-ovmf=${OVMF.fd}/FV/OVMF.fd"
+    ++ optional (withInternalOVMF) "--enable-ovmf";
+
+  patches = with xsa; flatten [
+    # 253: 4.8 not affected
+    # 254: no patch supplied by xen project (Meltdown/Spectre)
+    xenlockprofpatch
+    xenpmdpatch
+  ];
+
+  NIX_CFLAGS_COMPILE = toString [
+    # Fix build on Glibc 2.24
+    "-Wno-error=deprecated-declarations"
+    # Fix build with GCC8
+    "-Wno-error=maybe-uninitialized"
+    "-Wno-error=stringop-truncation"
+    "-Wno-error=format-truncation"
+    "-Wno-error=array-bounds"
+    # Fix build with GCC9
+    "-Wno-error=address-of-packed-member"
+    "-Wno-error=format-overflow"
+    "-Wno-error=absolute-value"
+  ];
+
+  postPatch = ''
+    # Avoid a glibc >= 2.25 deprecation warnings that get fatal via -Werror.
+    sed 1i'#include <sys/sysmacros.h>' \
+      -i tools/blktap2/control/tap-ctl-allocate.c \
+      -i tools/libxl/libxl_device.c \
+      ${optionalString withInternalQemu "-i tools/qemu-xen/hw/9pfs/9p.c"}
+
+    sed -i -e '/sys\/sysctl\.h/d' tools/blktap2/drivers/block-remus.c
+  '';
+
+  passthru.qemu-system-i386 = if withInternalQemu
+      then "lib/xen/bin/qemu-system-i386"
+      else throw "this xen has no qemu builtin";
+
+})) ({ ocamlPackages = ocaml-ng.ocamlPackages_4_05; } // args)
diff --git a/nixpkgs/pkgs/applications/virtualization/xen/acpica-utils-20180427.patch b/nixpkgs/pkgs/applications/virtualization/xen/acpica-utils-20180427.patch
new file mode 100644
index 000000000000..aa4fd494082d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/xen/acpica-utils-20180427.patch
@@ -0,0 +1,63 @@
+From 858dbaaeda33b05c1ac80aea0ba9a03924e09005 Mon Sep 17 00:00:00 2001
+From: =?utf8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
+Date: Wed, 9 May 2018 11:08:12 +0100
+Subject: [PATCH] libacpi: fixes for iasl >= 20180427
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf8
+Content-Transfer-Encoding: 8bit
+
+New versions of iasl have introduced improved C file generation, as
+reported in the changelog:
+
+iASL: Enhanced the -tc option (which creates an AML hex file in C,
+suitable for import into a firmware project):
+  1) Create a unique name for the table, to simplify use of multiple
+SSDTs.
+  2) Add a protection #ifdef in the file, similar to a .h header file.
+
+The net effect of that on generated files is:
+
+-unsigned char AmlCode[] =
++#ifndef __SSDT_S4_HEX__
++#define __SSDT_S4_HEX__
++
++unsigned char ssdt_s4_aml_code[] =
+
+The above example is from ssdt_s4.asl.
+
+Fix the build with newer versions of iasl by stripping the '_aml_code'
+suffix from the variable name on generated files.
+
+Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
+Reviewed-by: Wei Liu <wei.liu2@citrix.com>
+Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
+Release-acked-by: Juergen Gross <jgross@suse.com>
+---
+ tools/libacpi/Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tools/libacpi/Makefile b/tools/libacpi/Makefile
+index a47a658a25..c17f3924cc 100644
+--- a/tools/libacpi/Makefile
++++ b/tools/libacpi/Makefile
+@@ -43,7 +43,7 @@ all: $(C_SRC) $(H_SRC)
+ 
+ $(H_SRC): $(ACPI_BUILD_DIR)/%.h: %.asl iasl
+ 	iasl -vs -p $(ACPI_BUILD_DIR)/$*.$(TMP_SUFFIX) -tc $<
+-	sed -e 's/AmlCode/$*/g' $(ACPI_BUILD_DIR)/$*.hex >$@
++	sed -e 's/AmlCode/$*/g' -e 's/_aml_code//g' $(ACPI_BUILD_DIR)/$*.hex >$@
+ 	rm -f $(addprefix $(ACPI_BUILD_DIR)/, $*.aml $*.hex)
+  
+ $(MK_DSDT): mk_dsdt.c
+@@ -76,7 +76,7 @@ $(ACPI_BUILD_DIR)/dsdt_anycpu_arm.asl: $(MK_DSDT)
+ 
+ $(C_SRC): $(ACPI_BUILD_DIR)/%.c: iasl $(ACPI_BUILD_DIR)/%.asl
+ 	iasl -vs -p $(ACPI_BUILD_DIR)/$*.$(TMP_SUFFIX) -tc $(ACPI_BUILD_DIR)/$*.asl
+-	sed -e 's/AmlCode/$*/g' $(ACPI_BUILD_DIR)/$*.hex > $@.$(TMP_SUFFIX)
++	sed -e 's/AmlCode/$*/g' -e 's/_aml_code//g' $(ACPI_BUILD_DIR)/$*.hex > $@.$(TMP_SUFFIX)
+ 	echo "int $*_len=sizeof($*);" >> $@.$(TMP_SUFFIX)
+ 	mv -f $@.$(TMP_SUFFIX) $@
+ 	rm -f $(addprefix $(ACPI_BUILD_DIR)/, $*.aml $*.hex)
+-- 
+2.11.0
+
diff --git a/nixpkgs/pkgs/applications/virtualization/xen/generic.nix b/nixpkgs/pkgs/applications/virtualization/xen/generic.nix
new file mode 100644
index 000000000000..854debc458a3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/xen/generic.nix
@@ -0,0 +1,240 @@
+config:
+{ stdenv, cmake, pkgconfig, which
+
+# Xen
+, bison, bzip2, checkpolicy, dev86, figlet, flex, gettext, glib
+, iasl, libaio, libiconv, libuuid, ncurses, openssl, perl
+, python2Packages
+# python2Packages.python
+, xz, yajl, zlib
+
+# Xen Optional
+, ocamlPackages
+
+# Scripts
+, coreutils, gawk, gnused, gnugrep, diffutils, multipath-tools
+, iproute, inetutils, iptables, bridge-utils, openvswitch, nbd, drbd
+, lvm2, utillinux, procps, systemd
+
+# Documentation
+# python2Packages.markdown
+, transfig, ghostscript, texinfo, pandoc
+
+, ...} @ args:
+
+with stdenv.lib;
+
+let
+  #TODO: fix paths instead
+  scriptEnvPath = concatMapStringsSep ":" (x: "${x}/bin") [
+    which perl
+    coreutils gawk gnused gnugrep diffutils utillinux multipath-tools
+    iproute inetutils iptables bridge-utils openvswitch nbd drbd
+  ];
+
+  withXenfiles = f: concatStringsSep "\n" (mapAttrsToList f config.xenfiles);
+
+  withTools = a: f: withXenfiles (name: x: optionalString (hasAttr a x) ''
+    echo "processing ${name}"
+    __do() {
+      cd "tools/${name}"
+      ${f name x}
+    }
+    ( __do )
+  '');
+in
+
+stdenv.mkDerivation (rec {
+  inherit (config) version;
+
+  name = "xen-${version}";
+
+  dontUseCmakeConfigure = true;
+
+  hardeningDisable = [ "stackprotector" "fortify" "pic" ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    cmake which
+
+    # Xen
+    bison bzip2 checkpolicy dev86 figlet flex gettext glib iasl libaio
+    libiconv libuuid ncurses openssl perl python2Packages.python xz yajl zlib
+
+    # oxenstored
+    ocamlPackages.findlib ocamlPackages.ocaml systemd
+
+    # Python fixes
+    python2Packages.wrapPython
+
+    # Documentation
+    python2Packages.markdown transfig ghostscript texinfo pandoc
+
+    # Others
+  ] ++ (concatMap (x: x.buildInputs or []) (attrValues config.xenfiles))
+    ++ (config.buildInputs or []);
+
+  prePatch = ''
+    ### Generic fixes
+
+    # Xen's stubdoms, tools and firmwares need various sources that
+    # are usually fetched at build time using wget and git. We can't
+    # have that, so we prefetch them in nix-expression and setup
+    # fake wget and git for debugging purposes.
+
+    mkdir fake-bin
+
+    # Fake git: just print what it wants and die
+    cat > fake-bin/wget << EOF
+    #!${stdenv.shell} -e
+    echo ===== FAKE WGET: Not fetching \$*
+    [ -e \$3 ]
+    EOF
+
+    # Fake git: just print what it wants and die
+    cat > fake-bin/git << EOF
+    #!${stdenv.shell}
+    echo ===== FAKE GIT: Not cloning \$*
+    [ -e \$3 ]
+    EOF
+
+    chmod +x fake-bin/*
+    export PATH=$PATH:$PWD/fake-bin
+
+    # Remove in-tree qemu stuff in case we build from a tar-ball
+    rm -rf tools/qemu-xen tools/qemu-xen-traditional
+
+    # Fix shebangs, mainly for build-scipts
+    # We want to do this before getting prefetched stuff to speed things up
+    # (prefetched stuff has lots of files)
+    find . -type f | xargs sed -i 's@/usr/bin/\(python\|perl\)@/usr/bin/env \1@g'
+    find . -type f -not -path "./tools/hotplug/Linux/xendomains.in" \
+      | xargs sed -i 's@/bin/bash@${stdenv.shell}@g'
+
+    # Get prefetched stuff
+    ${withXenfiles (name: x: ''
+      echo "${x.src} -> tools/${name}"
+      cp -r ${x.src} tools/${name}
+      chmod -R +w tools/${name}
+    '')}
+  '';
+
+  patches = [ ./0000-fix-ipxe-src.patch
+              ./0000-fix-install-python.patch
+            ] ++ optional (versionOlder version "4.8.5") ./acpica-utils-20180427.patch
+            ++ (config.patches or []);
+
+  postPatch = ''
+    ### Hacks
+
+    # Work around a bug in our GCC wrapper: `gcc -MF foo -v' doesn't
+    # print the GCC version number properly.
+    substituteInPlace xen/Makefile \
+      --replace '$(CC) $(CFLAGS) -v' '$(CC) -v'
+
+    # Hack to get `gcc -m32' to work without having 32-bit Glibc headers.
+    mkdir -p tools/include/gnu
+    touch tools/include/gnu/stubs-32.h
+
+    ### Fixing everything else
+
+    substituteInPlace tools/libfsimage/common/fsimage_plugin.c \
+      --replace /usr $out
+
+    substituteInPlace tools/blktap2/lvm/lvm-util.c \
+      --replace /usr/sbin/vgs ${lvm2}/bin/vgs \
+      --replace /usr/sbin/lvs ${lvm2}/bin/lvs
+
+    substituteInPlace tools/misc/xenpvnetboot \
+      --replace /usr/sbin/mount ${utillinux}/bin/mount \
+      --replace /usr/sbin/umount ${utillinux}/bin/umount
+
+    substituteInPlace tools/xenmon/xenmon.py \
+      --replace /usr/bin/pkill ${procps}/bin/pkill
+
+    substituteInPlace tools/xenstat/Makefile \
+      --replace /usr/include/curses.h ${ncurses.dev}/include/curses.h
+
+    ${optionalString (builtins.compareVersions config.version "4.8" >= 0) ''
+      substituteInPlace tools/hotplug/Linux/launch-xenstore.in \
+        --replace /bin/mkdir mkdir
+    ''}
+
+    ${optionalString (builtins.compareVersions config.version "4.6" < 0) ''
+      # TODO: use this as a template and support our own if-up scripts instead?
+      substituteInPlace tools/hotplug/Linux/xen-backend.rules.in \
+        --replace "@XEN_SCRIPT_DIR@" $out/etc/xen/scripts
+
+      # blktap is not provided by xen, but by xapi
+      sed -i '/blktap/d' tools/hotplug/Linux/xen-backend.rules.in
+    ''}
+
+    ${withTools "patches" (name: x: ''
+      ${concatMapStringsSep "\n" (p: ''
+        echo "# Patching with ${p}"
+        patch -p1 < ${p}
+      '') x.patches}
+    '')}
+
+    ${withTools "postPatch" (name: x: x.postPatch)}
+
+    ${config.postPatch or ""}
+  '';
+
+  postConfigure = ''
+    substituteInPlace tools/hotplug/Linux/xendomains \
+      --replace /bin/ls ls
+  '';
+
+  # TODO: Flask needs more testing before enabling it by default.
+  #makeFlags = [ "XSM_ENABLE=y" "FLASK_ENABLE=y" "PREFIX=$(out)" "CONFIG_DIR=/etc" "XEN_EXTFILES_URL=\\$(XEN_ROOT)/xen_ext_files" ];
+  makeFlags = [ "PREFIX=$(out) CONFIG_DIR=/etc" "XEN_SCRIPT_DIR=/etc/xen/scripts" ]
+           ++ (config.makeFlags or []);
+
+  buildFlags = [ "xen" "tools" ];
+
+  postBuild = ''
+    make -C docs man-pages
+
+    ${withTools "buildPhase" (name: x: x.buildPhase)}
+  '';
+
+  installPhase = ''
+    mkdir -p $out $out/share $out/share/man
+    cp -prvd dist/install/nix/store/*/* $out/
+    cp -prvd dist/install/boot $out/boot
+    cp -prvd dist/install/etc $out
+    cp -dR docs/man1 docs/man5 $out/share/man/
+
+    ${withTools "installPhase" (name: x: x.installPhase)}
+
+    # Hack
+    substituteInPlace $out/etc/xen/scripts/hotplugpath.sh \
+      --replace SBINDIR=\"$out/sbin\" SBINDIR=\"$out/bin\"
+
+    wrapPythonPrograms
+    # We also need to wrap pygrub, which lies in lib
+    wrapPythonProgramsIn "$out/lib" "$out $pythonPath"
+
+    shopt -s extglob
+    for i in $out/etc/xen/scripts/!(*.sh); do
+      sed -i "2s@^@export PATH=$out/bin:${scriptEnvPath}\n@" $i
+    done
+  '';
+
+  enableParallelBuilding = true;
+
+  # TODO(@oxij): Stop referencing args here
+  meta = {
+    homepage = "http://www.xen.org/";
+    description = "Xen hypervisor and related components"
+                + optionalString (args ? meta && args.meta ? description)
+                                 " (${args.meta.description})";
+    longDescription = (args.meta.longDescription or "")
+                    + "\nIncludes:\n"
+                    + withXenfiles (name: x: ''* ${name}: ${x.meta.description or "(No description)"}.'');
+    platforms = [ "x86_64-linux" ];
+    maintainers = with stdenv.lib.maintainers; [ eelco tstrobel oxij ];
+    license = stdenv.lib.licenses.gpl2;
+  } // (config.meta or {});
+} // removeAttrs config [ "xenfiles" "buildInputs" "patches" "postPatch" "meta" ])
diff --git a/nixpkgs/pkgs/applications/virtualization/xen/packages.nix b/nixpkgs/pkgs/applications/virtualization/xen/packages.nix
new file mode 100644
index 000000000000..e30006fbcc1a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/xen/packages.nix
@@ -0,0 +1,105 @@
+{ callPackage
+, stdenv, overrideCC
+}:
+
+# TODO(@oxij) on new Xen version: generalize this to generate [vanilla slim
+# light] for each ./<version>.nix.
+
+rec {
+  xen_4_8-vanilla = callPackage ./4.8.nix {
+    meta = {
+      description = "vanilla";
+      longDescription = ''
+        Vanilla version of Xen. Uses forks of Qemu and Seabios bundled
+        with Xen. This gives vanilla experince, but wastes space and
+        build time: typical NixOS setup that runs lots of VMs will
+        build three different versions of Qemu when using this (two
+        forks and upstream).
+      '';
+    };
+  };
+
+  xen_4_8-slim = xen_4_8-vanilla.override {
+    withInternalQemu = false;
+    withInternalTraditionalQemu = true;
+    withInternalSeabios = false;
+    withSeabios = true;
+
+    meta = {
+      description = "slim";
+      longDescription = ''
+        Slimmed-down version of Xen that reuses nixpkgs packages as
+        much as possible. Different parts may get out of sync, but
+        this builds faster and uses less space than vanilla. Use with
+        `qemu_xen` from nixpkgs.
+      '';
+    };
+  };
+
+  xen_4_8-light = xen_4_8-vanilla.override {
+    withInternalQemu = false;
+    withInternalTraditionalQemu = false;
+    withInternalSeabios = false;
+    withSeabios = true;
+
+    meta = {
+      description = "light";
+      longDescription = ''
+        Slimmed-down version of Xen without `qemu-traditional` (you
+        don't need it if you don't know what it is). Use with
+        `qemu_xen-light` from nixpkgs.
+      '';
+    };
+  };
+
+  xen_4_10-vanilla = callPackage ./4.10.nix {
+    meta = {
+      description = "vanilla";
+      longDescription = ''
+        Vanilla version of Xen. Uses forks of Qemu and Seabios bundled
+        with Xen. This gives vanilla experince, but wastes space and
+        build time: typical NixOS setup that runs lots of VMs will
+        build three different versions of Qemu when using this (two
+        forks and upstream).
+      '';
+    };
+  };
+
+  xen_4_10-slim = xen_4_10-vanilla.override {
+    withInternalQemu = false;
+    withInternalTraditionalQemu = true;
+    withInternalSeabios = false;
+    withSeabios = true;
+
+    meta = {
+      description = "slim";
+      longDescription = ''
+        Slimmed-down version of Xen that reuses nixpkgs packages as
+        much as possible. Different parts may get out of sync, but
+        this builds faster and uses less space than vanilla. Use with
+        `qemu_xen` from nixpkgs.
+      '';
+    };
+  };
+
+  xen_4_10-light = xen_4_10-vanilla.override {
+    withInternalQemu = false;
+    withInternalTraditionalQemu = false;
+    withInternalSeabios = false;
+    withSeabios = true;
+
+    meta = {
+      description = "light";
+      longDescription = ''
+        Slimmed-down version of Xen without `qemu-traditional` (you
+        don't need it if you don't know what it is). Use with
+        `qemu_xen-light` from nixpkgs.
+      '';
+    };
+  };
+
+  xen-vanilla = xen_4_8-vanilla;
+  xen-slim = xen_4_8-slim;
+  xen-light = xen_4_8-light;
+
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/xen/qemu-gluster-6-compat.diff b/nixpkgs/pkgs/applications/virtualization/xen/qemu-gluster-6-compat.diff
new file mode 100644
index 000000000000..7ec6ad3aba66
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/xen/qemu-gluster-6-compat.diff
@@ -0,0 +1,95 @@
+diff --git a/block/gluster.c b/block/gluster.c
+index 01b479fbb9..29552e1186 100644
+--- a/block/gluster.c
++++ b/block/gluster.c
+@@ -15,6 +15,10 @@
+ #include "qemu/uri.h"
+ #include "qemu/error-report.h"
+ 
++#ifdef CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT
++# define glfs_ftruncate(fd, offset) glfs_ftruncate(fd, offset, NULL, NULL)
++#endif
++
+ #define GLUSTER_OPT_FILENAME        "filename"
+ #define GLUSTER_OPT_VOLUME          "volume"
+ #define GLUSTER_OPT_PATH            "path"
+@@ -613,7 +617,11 @@ static void qemu_gluster_complete_aio(void *opaque)
+ /*
+  * AIO callback routine called from GlusterFS thread.
+  */
+-static void gluster_finish_aiocb(struct glfs_fd *fd, ssize_t ret, void *arg)
++static void gluster_finish_aiocb(struct glfs_fd *fd, ssize_t ret,
++#ifdef CONFIG_GLUSTERFS_IOCB_HAS_STAT
++                                 struct glfs_stat *pre, struct glfs_stat *post,
++#endif
++                                 void *arg)
+ {
+     GlusterAIOCB *acb = (GlusterAIOCB *)arg;
+ 
+diff --git a/configure b/configure
+index 4b808f9d17..89fb27fd0d 100755
+--- a/configure
++++ b/configure
+@@ -301,6 +301,8 @@ glusterfs=""
+ glusterfs_xlator_opt="no"
+ glusterfs_discard="no"
+ glusterfs_zerofill="no"
++glusterfs_ftruncate_has_stat="no"
++glusterfs_iocb_has_stat="no"
+ archipelago="no"
+ gtk=""
+ gtkabi=""
+@@ -3444,6 +3446,38 @@ if test "$glusterfs" != "no" ; then
+     if $pkg_config --atleast-version=6 glusterfs-api; then
+       glusterfs_zerofill="yes"
+     fi
++    cat > $TMPC << EOF
++#include <glusterfs/api/glfs.h>
++
++int
++main(void)
++{
++	/* new glfs_ftruncate() passes two additional args */
++	return glfs_ftruncate(NULL, 0, NULL, NULL);
++}
++EOF
++    if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then
++      glusterfs_ftruncate_has_stat="yes"
++    fi
++    cat > $TMPC << EOF
++#include <glusterfs/api/glfs.h>
++
++/* new glfs_io_cbk() passes two additional glfs_stat structs */
++static void
++glusterfs_iocb(glfs_fd_t *fd, ssize_t ret, struct glfs_stat *prestat, struct glfs_stat *poststat, void *data)
++{}
++
++int
++main(void)
++{
++	glfs_io_cbk iocb = &glusterfs_iocb;
++	iocb(NULL, 0 , NULL, NULL, NULL);
++	return 0;
++}
++EOF
++    if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then
++      glusterfs_iocb_has_stat="yes"
++    fi
+   else
+     if test "$glusterfs" = "yes" ; then
+       feature_not_found "GlusterFS backend support" \
+@@ -5415,6 +5449,14 @@ if test "$archipelago" = "yes" ; then
+   echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
+ fi
+ 
++if test "$glusterfs_ftruncate_has_stat" = "yes" ; then
++  echo "CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT=y" >> $config_host_mak
++fi
++
++if test "$glusterfs_iocb_has_stat" = "yes" ; then
++  echo "CONFIG_GLUSTERFS_IOCB_HAS_STAT=y" >> $config_host_mak
++fi
++
+ if test "$libssh2" = "yes" ; then
+   echo "CONFIG_LIBSSH2=m" >> $config_host_mak
+   echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
diff --git a/nixpkgs/pkgs/applications/virtualization/xen/xsa-patches.nix b/nixpkgs/pkgs/applications/virtualization/xen/xsa-patches.nix
new file mode 100644
index 000000000000..26cdbc1f65f7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/xen/xsa-patches.nix
@@ -0,0 +1,488 @@
+{ fetchpatch }:
+
+let
+  xsaPatch = { name , sha256 }: (fetchpatch {
+    url = "https://xenbits.xen.org/xsa/xsa${name}.patch";
+    inherit sha256;
+  });
+in {
+  # 4.5
+  XSA_190 = (xsaPatch {
+    name = "190-4.5";
+    sha256 = "0f8pw38kkxky89ny3ic5h26v9zsjj9id89lygx896zc3w1klafqm";
+  });
+
+  # 4.5
+  XSA_191 = (xsaPatch {
+    name = "191-4.6";
+    sha256 = "1wl1ndli8rflmc44pkp8cw4642gi8z7j7gipac8mmlavmn3wdqhg";
+  });
+
+  # 4.5
+  XSA_192 = (xsaPatch {
+    name = "192-4.5";
+    sha256 = "0m8cv0xqvx5pdk7fcmaw2vv43xhl62plyx33xqj48y66x5z9lxpm";
+  });
+
+  # 4.5
+  XSA_193 = (xsaPatch {
+    name = "193-4.5";
+    sha256 = "0k9mykhrpm4rbjkhv067f6s05lqmgnldcyb3vi8cl0ndlyh66lvr";
+  });
+
+  # 4.5
+  XSA_195 = (xsaPatch {
+    name = "195";
+    sha256 = "0m0g953qnjy2knd9qnkdagpvkkgjbk3ydgajia6kzs499dyqpdl7";
+  });
+
+  # 4.5
+  XSA_196 = [
+    (xsaPatch {
+      name = "196-0001-x86-emul-Correct-the-IDT-entry-calculation-in-inject";
+      sha256 = "0z53nzrjvc745y26z1qc8jlg3blxp7brawvji1hx3s74n346ssl6";
+    })
+    (xsaPatch {
+      name = "196-0002-x86-svm-Fix-injection-of-software-interrupts";
+      sha256 = "11cqvr5jn2s92wsshpilx9qnfczrd9hnyb5aim6qwmz3fq3hrrkz";
+    })
+  ];
+
+  # 4.5
+  XSA_198 = (xsaPatch {
+    name = "198";
+    sha256 = "0d1nndn4p520c9xa87ixnyks3mrvzcri7c702d6mm22m8ansx6d9";
+  });
+
+  # 4.5
+  XSA_200 = (xsaPatch {
+    name = "200-4.6";
+    sha256 = "0k918ja83470iz5k4vqi15293zjvz2dipdhgc9sy9rrhg4mqncl7";
+  });
+
+  # 4.5
+  XSA_202_45 = (xsaPatch {
+    name = "202-4.6";
+    sha256 = "0nnznkrvfbbc8z64dr9wvbdijd4qbpc0wz2j5vpmx6b32sm7932f";
+  });
+
+  # 4.5
+  XSA_204_45 = (xsaPatch {
+    name = "204-4.5";
+    sha256 = "083z9pbdz3f532fnzg7n2d5wzv6rmqc0f4mvc3mnmkd0rzqw8vcp";
+  });
+
+  # 4.5
+  XSA_206_45 = [
+    (xsaPatch {
+      name = "206-4.5/0001-xenstored-apply-a-write-transaction-rate-limit";
+      sha256 = "07vsm8mlbxh2s01ny2xywnm1bqhhxas1az31fzwb6f1g14vkzwm4";
+    })
+    (xsaPatch {
+      name = "206-4.5/0002-xenstored-Log-when-the-write-transaction-rate-limit-";
+      sha256 = "17pnvxjmhny22abwwivacfig4vfsy5bqlki07z236whc2y7yzbsx";
+    })
+    (xsaPatch {
+      name = "206-4.5/0003-oxenstored-refactor-putting-response-on-wire";
+      sha256 = "0xf566yicnisliy82cydb2s9k27l3bxc43qgmv6yr2ir3ixxlw5s";
+    })
+    (xsaPatch {
+      name = "206-4.5/0004-oxenstored-remove-some-unused-parameters";
+      sha256 = "16cqx9i0w4w3x06qqdk9rbw4z96yhm0kbc32j40spfgxl82d1zlk";
+    })
+    (xsaPatch {
+      name = "206-4.5/0005-oxenstored-refactor-request-processing";
+      sha256 = "1g2hzlv7w03sqnifbzda85mwlz3bw37rk80l248180sv3k7k6bgv";
+    })
+    (xsaPatch {
+      name = "206-4.5/0006-oxenstored-keep-track-of-each-transaction-s-operatio";
+      sha256 = "0n65yfxvpfd4cz95dpbwqj3nablyzq5g7a0klvi2y9zybhch9cmg";
+    })
+    (xsaPatch {
+      name = "206-4.5/0007-oxenstored-move-functions-that-process-simple-operat";
+      sha256 = "0qllvbc9rnj7jhhlslxxs35gvphvih0ywz52jszj4irm23ka5vnz";
+    })
+    (xsaPatch {
+      name = "206-4.5/0008-oxenstored-replay-transaction-upon-conflict";
+      sha256 = "0lixkxjfzciy9l0f980cmkr8mcsx14c289kg0mn5w1cscg0hb46g";
+    })
+    (xsaPatch {
+      name = "206-4.5/0009-oxenstored-log-request-and-response-during-transacti";
+      sha256 = "09ph8ddcx0k7rndd6hx6kszxh3fhxnvdjsq13p97n996xrpl1x7b";
+    })
+    (xsaPatch {
+      name = "206-4.5/0010-oxenstored-allow-compilation-prior-to-OCaml-3.12.0";
+      sha256 = "1y0m7sqdz89z2vs4dfr45cyvxxas323rxar0xdvvvivgkgxawvxj";
+    })
+    (xsaPatch {
+      name = "206-4.5/0011-oxenstored-comments-explaining-some-variables";
+      sha256 = "1d3n0y9syya4kaavrvqn01d3wsn85gmw7qrbylkclznqgkwdsr2p";
+    })
+    (xsaPatch {
+      name = "206-4.5/0012-oxenstored-handling-of-domain-conflict-credit";
+      sha256 = "12zgid5y9vrhhpk2syxp0x01lzzr6447fa76n6rjmzi1xgdzpaf8";
+    })
+    (xsaPatch {
+      name = "206-4.5/0013-oxenstored-ignore-domains-with-no-conflict-credit";
+      sha256 = "0v3g9pm60w6qi360hdqjcw838s0qcyywz9qpl8gzmhrg7a35avxl";
+    })
+    (xsaPatch {
+      name = "206-4.5/0014-oxenstored-add-transaction-info-relevant-to-history-";
+      sha256 = "0vv3w0h5xh554i9v2vbc8gzm8wabjf2vzya3dyv5yzvly6ygv0sb";
+    })
+    (xsaPatch {
+      name = "206-4.5/0015-oxenstored-support-commit-history-tracking";
+      sha256 = "1iv2vy29g437vj73x9p33rdcr5ln2q0kx1b3pgxq202ghbc1x1zj";
+    })
+    (xsaPatch {
+      name = "206-4.5/0016-oxenstored-only-record-operations-with-side-effects-";
+      sha256 = "1cjkw5ganbg6lq78qsg0igjqvbgph3j349faxgk1p5d6nr492zzy";
+    })
+    (xsaPatch {
+      name = "206-4.5/0017-oxenstored-discard-old-commit-history-on-txn-end";
+      sha256 = "0lm15lq77403qqwpwcqvxlzgirp6ffh301any9g401hs98f9y4ps";
+    })
+    (xsaPatch {
+      name = "206-4.5/0018-oxenstored-track-commit-history";
+      sha256 = "1jh92p6vjhkm3bn5vz260npvsjji63g2imsxflxs4f3r69sz1nkd";
+    })
+    (xsaPatch {
+      name = "206-4.5/0019-oxenstored-blame-the-connection-that-caused-a-transa";
+      sha256 = "17k264pk0fvsamj85578msgpx97mw63nmj0j9v5hbj4bgfazvj4h";
+    })
+    (xsaPatch {
+      name = "206-4.5/0020-oxenstored-allow-self-conflicts";
+      sha256 = "15z3rd49q0pa72si0s8wjsy2zvbm613d0hjswp4ikc6nzsnsh4qy";
+    })
+    (xsaPatch {
+      name = "206-4.5/0021-oxenstored-do-not-commit-read-only-transactions";
+      sha256 = "04wpzazhv90lg3228z5i6vnh1z4lzd08z0d0fvc4br6pkd0w4va8";
+    })
+    (xsaPatch {
+      name = "206-4.5/0022-oxenstored-don-t-wake-to-issue-no-conflict-credit";
+      sha256 = "1shbrn0w68rlywcc633zcgykfccck1a77igmg8ydzwjsbwxsmsjy";
+    })
+    (xsaPatch {
+      name = "206-4.5/0023-oxenstored-transaction-conflicts-improve-logging";
+      sha256 = "1086y268yh8047k1vxnxs2nhp6izp7lfmq01f1gq5n7jiy1sxcq7";
+    })
+    (xsaPatch {
+      name = "206-4.5/0024-oxenstored-trim-history-in-the-frequent_ops-function";
+      sha256 = "014zs6i4gzrimn814k5i7gz66vbb0adkzr2qyai7i4fxc9h9r7w8";
+    })
+  ];
+
+  # 4.5 - 4.8
+  XSA_207 = (xsaPatch {
+    name = "207";
+    sha256 = "0wdlhijmw9mdj6a82pyw1rwwiz605dwzjc392zr3fpb2jklrvibc";
+  });
+
+  # 4.5 - 4.8
+  XSA_212 = (xsaPatch {
+    name = "212";
+    sha256 = "1ggjbbym5irq534a3zc86md9jg8imlpc9wx8xsadb9akgjrr1r8d";
+  });
+
+  # 4.5
+  XSA_213_45 = (xsaPatch {
+    name = "213-4.5";
+    sha256 = "1vnqf89ydacr5bq3d6z2r33xb2sn5vsd934rncyc28ybc9rvj6wm";
+  });
+
+  # 4.5 - 4.8
+  XSA_214 = (xsaPatch {
+    name = "214";
+    sha256 = "0qapzx63z0yl84phnpnglpkxp6b9sy1y7cilhwjhxyigpfnm2rrk";
+  });
+
+  # 4.5
+  XSA_215 = (xsaPatch {
+    name = "215";
+    sha256 = "0sv8ccc5xp09f1w1gj5a9n3mlsdsh96sdb1n560vh31f4kkd61xs";
+  });
+
+  # 4.5
+  XSA_217_45 = (xsaPatch {
+    name = "217-4.5";
+    sha256 = "067pgsfrb9py2dhm1pk9g8f6fs40vyfrcxhj8c12vzamb6svzmn4";
+  });
+
+  # 4.5
+  XSA_218_45 = [
+    (xsaPatch {
+      name = "218-4.5/0001-IOMMU-handle-IOMMU-mapping-and-unmapping-failures";
+      sha256 = "00y6j3yjxw0igpldsavikmhlxw711k2jsj1qx0s05w2k608gadkq";
+    })
+    (xsaPatch {
+      name = "218-4.5/0002-gnttab-fix-unmap-pin-accounting-race";
+      sha256 = "0qbbfnnjlpdcd29mzmacfmi859k92c213l91q7w1rg2k6pzx928k";
+    })
+    (xsaPatch {
+      name = "218-4.5/0003-gnttab-Avoid-potential-double-put-of-maptrack-entry";
+      sha256 = "1cndzvyhf41mk4my6vh3bk9jvh2y4gpmqdhvl9zhxhmppszslqkc";
+    })
+    (xsaPatch {
+      name = "218-4.5/0004-gnttab-correct-maptrack-table-accesses";
+      sha256 = "02zpb0ffigijacqvyyjylwx3qpgibwslrka7mbxwnclf4s9c03a2";
+    })
+  ];
+
+  # 4.5
+  XSA_219_45 = (xsaPatch {
+    name = "219-4.5";
+    sha256 = "003msr5vhsc66scmdpgn0lp3p01g4zfw5vj86y5lw9ajkbaywdsm";
+  });
+
+  # 4.5
+  XSA_220_45 = (xsaPatch {
+    name = "220-4.5";
+    sha256 = "1dj9nn6lzxlipjb3nb7b9m4337fl6yn2bd7ap1lqrjn8h9zkk1pp";
+  });
+
+  # 4.5 - 4.8
+  XSA_221 = (xsaPatch {
+    name = "221";
+    sha256 = "1mcr1nqgxyjrkywdg7qhlfwgz7vj2if1dhic425vgd41p9cdgl26";
+  });
+
+  # 4.5
+  XSA_222_45 = [
+    (xsaPatch {
+      name = "222-1-4.6";
+      sha256 = "1g4dqm5qx4wqlv1520jpfiscph95vllcp4gqp1rdfailk8xi0mcf";
+    })
+    (xsaPatch {
+      name = "222-2-4.5";
+      sha256 = "1hw8rhc7q4v309f4w11gxfsn5x1pirvxkg7s4kr711fnmvp9hkzd";
+    })
+  ];
+
+  # 4.5 - 4.8
+  XSA_223 = (xsaPatch {
+    name = "223";
+    sha256 = "0803gjgcbq9vaz2mq0v5finf1fq8iik1g4hqsjqhjxvspn8l70c5";
+  });
+
+  # 4.5
+  XSA_224_45 = [
+    (xsaPatch {
+      name = "224-4.5/0001-gnttab-Fix-handling-of-dev_bus_addr-during-unmap";
+      sha256 = "1aislj66ss4cb3v2bh12mrqsyrf288d4h54rj94jjq7h1hnycw7h";
+    })
+    (xsaPatch {
+      name = "224-4.5/0002-gnttab-never-create-host-mapping-unless-asked-to";
+      sha256 = "1j6fgm1ccb07gg0mi5qmdr0vqwwc3n12z433g1jrija2gbk1x8aq";
+    })
+    (xsaPatch {
+      name = "224-4.5/0003-gnttab-correct-logic-to-get-page-references-during-m";
+      sha256 = "166kmicwx280fjqjvgigbmhabjksa0hhvqx5h4v6kjlcjpmxqy08";
+    })
+    (xsaPatch {
+      name = "224-4.5/0004-gnttab-__gnttab_unmap_common_complete-is-all-or-noth";
+      sha256 = "1skc0yj1zsn8xgyq1y57bdc0scvvlmd0ynrjwwf1zkias1wlilav";
+    })
+  ];
+
+  # 4.5
+  XSA_226_45 = [
+    (xsaPatch {
+      name = "226-4.5/0001-gnttab-dont-use-possibly-unbounded-tail-calls";
+      sha256 = "1hx47ppv5q33cw4dwp82lgvv4fp28gx7rxijw0iaczsv8bvb8vcg";
+    })
+    (xsaPatch {
+      name = "226-4.5/0002-gnttab-fix-transitive-grant-handling";
+      sha256 = "1gzp8m2zfihwlk71c3lqyd0ajh9h11pvkhzhw0mawckxy0qksvlc";
+    })
+  ];
+
+  # 4.5
+  XSA_227_45 = (xsaPatch {
+    name = "227-4.5";
+    sha256 = "1qfjfisgqm4x98qw54x2qrvgjnvvzizx9p1pjhcnsps9q6g1y3x8";
+  });
+
+  # 4.5 - 4.9
+  XSA_230 = (xsaPatch {
+    name = "230";
+    sha256 = "10x0j7wmzkrwycs1ng89fgjzvzh8vsdd4c5nb68b3j1azdx4ld83";
+  });
+
+  # 4.5
+  XSA_231_45 = (xsaPatch {
+    name = "231-4.5";
+    sha256 = "06gwx2f1lg51dfk2b4zxp7wv9c4pxdi87pg2asvmxqc78ir7l5s6";
+  });
+
+  # 4.5 - 4.9
+  XSA_232 = (xsaPatch {
+    name = "232";
+    sha256 = "0n6irjpmraa3hbxxm64a1cplc6y6g07x7v2fmlpvn70ql3fs0220";
+  });
+
+  # 4.5 - 4.9
+  XSA_233 = (xsaPatch {
+    name = "233";
+    sha256 = "1w3m8349cqav56av63w6jzvlsv4jw5rimwvskr9pq2rcbk2dx8kf";
+  });
+
+  # 4.5
+  XSA_234_45 = (xsaPatch {
+    name = "234-4.5";
+    sha256 = "1ji6hbgybb4gbgz5l5fis9midnvjbddzam8d63377rkzdyb3yz9f";
+  });
+
+  # 4.5
+  XSA_235_45 = (xsaPatch {
+    name = "235-4.5";
+    sha256 = "0hhgnql2gji111020z4wiyzg23wqs6ymanb67rg11p4qad1fp3ff";
+  });
+
+  # 4.5
+  XSA_236_45 = (xsaPatch {
+    name = "236-4.5";
+    sha256 = "0hcla86x81wykssd2967gblp7fzx61290p4ls4v0hcyxdg2bs2yz";
+  });
+
+  # 4.5
+  XSA_237_45 = [
+    (xsaPatch {
+      name = "237-4.5/0001-x86-dont-allow-MSI-pIRQ-mapping-on-unowned-device";
+      sha256 = "0hjxs20jhls4i0iph45a0qpw4znkm04gv74jmwhw84gy4hrhzq3b";
+    })
+    (xsaPatch {
+      name = "237-4.5/0002-x86-enforce-proper-privilege-when-mapping-pIRQ-s";
+      sha256 = "0ki8nmbc2g1l9wnqsph45a2k4c6dk5s7jvdlxg3zznyiyxjcv8yn";
+    })
+    (xsaPatch {
+      name = "237-4.5/0003-x86-MSI-disallow-redundant-enabling";
+      sha256 = "1hdz83qrjaqnihz8ji186dypxiblbfpgyb01j9m5alhk4whjqvp1";
+    })
+    (xsaPatch {
+      name = "237-4.5/0004-x86-IRQ-conditionally-preserve-irq-pirq-mapping-on-error";
+      sha256 = "0csdfn9kzn1k94pg3fcwsgqw14wcd4myi1jkcq5alj1fmkhw4wmk";
+    })
+    (xsaPatch {
+      name = "237-4.5/0005-x86-FLASK-fix-unmap-domain-IRQ-XSM-hook";
+      sha256 = "14b73rkvbkd1a2gh9kp0zrvv2d3kfwkiv24fg9agh4hrf2w3nx7y";
+    })
+  ];
+
+  # 4.5
+  XSA_238_45 = (xsaPatch {
+    name = "238-4.5";
+    sha256 = "1x2fg5vfv5jc084h5gjm6fq0nxjpzvi96px3sqzz4pvsvy4y4i1z";
+  });
+
+  # 4.5
+  XSA_239_45 = (xsaPatch {
+    name = "239-4.5";
+    sha256 = "06bi8q3973yajxsdj7pcqarvb56q2gisxdiy0cpbyffbmpkfv3h6";
+  });
+
+  # 4.5
+  XSA_240_45 = [
+    (xsaPatch {
+      name = "240-4.5/0001-x86-limit-linear-page-table-use-to-a-single-level";
+      sha256 = "0pmf10mbnmb88y7mly8s2l0j88cg0ayhkcnmj1zbjrkjmpccv395";
+    })
+    (xsaPatch {
+      name = "240-4.5/0002-x86-mm-Disable-PV-linear-pagetables-by-default";
+      sha256 = "19f096ra3xndvzkjjasx73p2g25hfkm905px0p3yakwll0qzd029";
+    })
+  ];
+
+  # 4.5 - 4.8
+  XSA_241 = (xsaPatch {
+    name = "241-4.8";
+    sha256 = "16zb75kzs98f4mdxhbyczk5mbh9dvn6j3yhfafki34x1dfdnq4pj";
+  });
+
+  # 4.5 - 4.9
+  XSA_242 = (xsaPatch {
+    name = "242-4.9";
+    sha256 = "0yx3x0i2wybsm7lzdffxa2mm866bjl4ipbb9vipnw77dyg705zpr";
+  });
+
+  # 4.5
+  XSA_243_45 = [
+    (xsaPatch {
+      name = "243-4.6-1";
+      sha256 = "1cqanpyysa7px0j645z4jw9yqsvv6cbh7yq1b86ap134axfifcan";
+    })
+    (xsaPatch {
+      name = "243-4.5-2";
+      sha256 = "0wbcgw4m0nzm2902jnda2020l7bd5adkq8j5myi1zmsfzbq03hwn";
+    })
+  ];
+
+  # 4.5
+  XSA_244_45 = (xsaPatch {
+    name = "244-4.5";
+    sha256 = "05ci3vdl1ywfjpzcvsy1k52whxjk8pxzj7dh3r94yqasr56i5v2l";
+  });
+
+  # 4.5 - 4.9
+  XSA_245 = [
+    (xsaPatch {
+      name = "245/0001-xen-page_alloc-Cover-memory-unreserved-after-boot-in";
+      sha256 = "12brsgbn7xwakalsn10afykgqmx119mqg6vjj3v2b1pnmf4ss0w8";
+    })
+    (xsaPatch {
+      name = "245/0002-xen-arm-Correctly-report-the-memory-region-in-the-du";
+      sha256 = "1k6z5r7wnrswsczn2j3a1mc4nvxqm4ydj6n6rvgqizk2pszdkqg8";
+    })
+  ];
+
+  # 4.5 - 4.7
+  XSA_246_45 = [
+    (xsaPatch {
+      name = "246-4.7";
+      sha256 = "13rad4k8z3bq15d67dhgy96kdbrjiq9sy8px0jskbpx9ygjdahkn";
+    })
+  ];
+
+  # 4.5
+  XSA_247_45 = [
+    (xsaPatch {
+      name = "247-4.5/0001-p2m-Always-check-to-see-if-removing-a-p2m-entry-actu";
+      sha256 = "0h1mp5s9si8aw2gipds317f27h9pi7bgnhj0bcmw11p0ch98sg1m";
+    })
+    (xsaPatch {
+      name = "247-4.5/0002-p2m-Check-return-value-of-p2m_set_entry-when-decreas";
+      sha256 = "0vjjybxbcm4xl26wbqvcqfiyvvlayswm4f98i1fr5a9abmljn5sb";
+    })
+  ];
+
+	# 4.5
+  XSA_248_45 = [
+    (xsaPatch {
+      name = "248-4.5";
+      sha256 = "0csxg6h492ddsa210b45av28iqf7cn2dfdqk4zx10zwf1pv2shyn";
+    })
+  ];
+
+  # 4.5 .. 4.9
+  XSA_249 = [
+   (xsaPatch {
+      name = "249";
+      sha256 = "0v6ngzqhkz7yv4n83xlpxfbkr2qyg5b1cds7ikkinm86hiqy6agl";
+    })
+  ];
+
+  # 4.5
+  XSA_250_45 = [
+   (xsaPatch {
+      name = "250-4.5";
+      sha256 = "0pqldl6qnl834gvfp90z247q9xcjh3835s2iffnajz7jhjb2145d";
+    })
+  ];
+
+  # 4.5
+  XSA_251_45 = [
+   (xsaPatch {
+      name = "251-4.5";
+      sha256 = "0lc94cx271z09r0mhxaypyd9d4740051p28idf5calx5228dqjgm";
+    })
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/virtualization/xhyve/default.nix b/nixpkgs/pkgs/applications/virtualization/xhyve/default.nix
new file mode 100644
index 000000000000..db9a7ef82577
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/xhyve/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, lib, fetchFromGitHub, Hypervisor, vmnet, xpc, libobjc, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "xhyve";
+  version = "20191001";
+
+  src = fetchFromGitHub {
+    owner = "machyve";
+    repo = "xhyve";
+    rev = "1f46a3d0bbeb6c90883f302425844fcc3800a776";
+    sha256 = "0mm9xa0v6n7xl2qypnppq5abdncd31vffiklrhcrlni5ymyh9ia5";
+  };
+
+  buildInputs = [ Hypervisor vmnet xpc libobjc zlib ];
+
+  # Don't use git to determine version
+  prePatch = ''
+    substituteInPlace Makefile \
+      --replace 'shell git describe --abbrev=6 --dirty --always --tags' "$version"
+  '';
+
+
+  makeFlags = [ "CFLAGS+=-Wno-shift-sign-overflow" ''CFLAGS+=-DVERSION=\"${version}\"'' ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp build/xhyve $out/bin
+  '';
+
+  meta = with lib; {
+    description = "Lightweight Virtualization on macOS Based on bhyve";
+    homepage = "https://github.com/mist64/xhyve";
+    maintainers = [ maintainers.lnl7 ];
+    license = licenses.bsd2;
+    platforms = platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/2bwm/default.nix b/nixpkgs/pkgs/applications/window-managers/2bwm/default.nix
new file mode 100644
index 000000000000..0a2dd63130eb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/2bwm/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, patches
+, libxcb, xcbutilkeysyms, xcbutilwm
+, libX11, xcbutil, xcbutilxrm }:
+
+stdenv.mkDerivation rec {
+  version = "0.3";
+  pname = "2bwm";
+
+  src = fetchFromGitHub {
+    owner  = "venam";
+    repo   = "2bwm";
+    rev    = "v${version}";
+    sha256 = "1xwib612ahv4rg9yl5injck89dlpyp5475xqgag0ydfd0r4sfld7";
+  };
+
+  # Allow users set their own list of patches
+  inherit patches;
+
+  buildInputs = [ libxcb xcbutilkeysyms xcbutilwm libX11 xcbutil xcbutilxrm ];
+
+  installPhase = "make install DESTDIR=$out PREFIX=\"\"";
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/venam/2bwm";
+    description = "A fast floating WM written over the XCB library and derived from mcwm";
+    license = licenses.mit;
+    maintainers =  [ maintainers.sternenseemann ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/afterstep/default.nix b/nixpkgs/pkgs/applications/window-managers/afterstep/default.nix
new file mode 100644
index 000000000000..001e624e1bed
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/afterstep/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchurl, pkgconfig
+, libjpeg, libtiff, libpng, freetype
+, fltk, gtk
+, libX11, libXext, libICE
+, dbus
+, fetchpatch
+}:
+
+stdenv.mkDerivation rec {
+
+  pname = "afterstep";
+  version = "2.2.12";
+  sourceName = "AfterStep-${version}";
+
+  src = fetchurl {
+    urls = [ "ftp://ftp.afterstep.org/stable/${sourceName}.tar.bz2" ];
+    sha256 = "1j7vkx1ig4kzwffdxnkqv3kld9qi3sam4w2nhq18waqjsi8xl5gz";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://salsa.debian.org/debian/afterstep/raw/master/debian/patches/44-Fix-build-with-gcc-5.patch";
+      sha256 = "1vipy2lzzd2gqrsqk85pwgcdhargy815fxlbn57hsm45zglc3lj4";
+    })
+  ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libjpeg libtiff libpng freetype fltk gtk libX11 libXext libICE dbus dbus ];
+
+  # A strange type of bug: dbus is not immediately found by pkgconfig
+  preConfigure = ''
+     export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config dbus-1 --cflags)"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A NEXTStep-inspired window manager";
+    longDescription = ''
+      AfterStep is a window manager for the Unix X Window
+      System. Originally based on the look and feel of the NeXTStep
+      interface, it provides end users with a consistent, clean, and
+      elegant desktop. The goal of AfterStep development is to provide
+      for flexibility of desktop configuration, improving aestetics,
+      and efficient use of system resources.
+    '';
+    homepage = "http://www.afterstep.org/";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/awesome/default.nix b/nixpkgs/pkgs/applications/window-managers/awesome/default.nix
new file mode 100644
index 000000000000..609723b42d41
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/awesome/default.nix
@@ -0,0 +1,92 @@
+{ stdenv, fetchFromGitHub, luaPackages, cairo, librsvg, cmake, imagemagick, pkgconfig, gdk-pixbuf
+, xorg, libstartup_notification, libxdg_basedir, libpthreadstubs
+, xcb-util-cursor, makeWrapper, pango, gobject-introspection
+, which, dbus, nettools, git, doxygen
+, xmlto, docbook_xml_dtd_45, docbook_xsl, findXMLCatalogs
+, libxkbcommon, xcbutilxrm, hicolor-icon-theme
+, asciidoctor
+, fontsConf
+, gtk3Support ? false, gtk3 ? null
+}:
+
+# needed for beautiful.gtk to work
+assert gtk3Support -> gtk3 != null;
+
+stdenv.mkDerivation rec {
+  lgi = luaPackages.lgi;
+  lua = luaPackages.lua;
+  ldoc = luaPackages.ldoc;
+  pname = "awesome";
+  version = "4.3";
+
+  src = fetchFromGitHub {
+    owner = "awesomewm";
+    repo = "awesome";
+    rev = "v${version}";
+    sha256 = "1i7ajmgbsax4lzpgnmkyv35x8vxqi0j84a14k6zys4blx94m9yjf";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    doxygen
+    imagemagick
+    makeWrapper
+    pkgconfig
+    xmlto docbook_xml_dtd_45
+    docbook_xsl findXMLCatalogs
+    asciidoctor
+    ldoc
+  ];
+
+  outputs = [ "out" "doc" ];
+
+  FONTCONFIG_FILE = toString fontsConf;
+
+  propagatedUserEnvPkgs = [ hicolor-icon-theme ];
+  buildInputs = [ cairo librsvg dbus gdk-pixbuf gobject-introspection
+                  git lgi libpthreadstubs libstartup_notification
+                  libxdg_basedir lua nettools pango xcb-util-cursor
+                  xorg.libXau xorg.libXdmcp xorg.libxcb xorg.libxshmfence
+                  xorg.xcbutil xorg.xcbutilimage xorg.xcbutilkeysyms
+                  xorg.xcbutilrenderutil xorg.xcbutilwm libxkbcommon
+                  xcbutilxrm ]
+                  ++ stdenv.lib.optional gtk3Support gtk3;
+
+  cmakeFlags = [
+    #"-DGENERATE_MANPAGES=ON"
+    "-DOVERRIDE_VERSION=${version}"
+  ] ++ stdenv.lib.optional luaPackages.isLuaJIT "-DLUA_LIBRARY=${lua}/lib/libluajit-5.1.so"
+  ;
+
+  GI_TYPELIB_PATH = "${pango.out}/lib/girepository-1.0";
+  # LUA_CPATH and LUA_PATH are used only for *building*, see the --search flags
+  # below for how awesome finds the libraries it needs at runtime.
+  LUA_CPATH = "${lgi}/lib/lua/${lua.luaversion}/?.so";
+  LUA_PATH  = "${lgi}/share/lua/${lua.luaversion}/?.lua;;";
+
+  postInstall = ''
+    # Don't use wrapProgram or the wrapper will duplicate the --search
+    # arguments every restart
+    mv "$out/bin/awesome" "$out/bin/.awesome-wrapped"
+    makeWrapper "$out/bin/.awesome-wrapped" "$out/bin/awesome" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --add-flags '--search ${lgi}/lib/lua/${lua.luaversion}' \
+      --add-flags '--search ${lgi}/share/lua/${lua.luaversion}' \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH"
+
+    wrapProgram $out/bin/awesome-client \
+      --prefix PATH : "${which}/bin"
+  '';
+
+  passthru = {
+    inherit lua;
+  };
+
+  meta = with stdenv.lib; {
+    description = "Highly configurable, dynamic window manager for X";
+    homepage    = "https://awesomewm.org/";
+    license     = licenses.gpl2Plus;
+    maintainers = with maintainers; [ lovek323 rasendubi ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/berry/default.nix b/nixpkgs/pkgs/applications/window-managers/berry/default.nix
new file mode 100644
index 000000000000..2a41a3d3c073
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/berry/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchFromGitHub
+, libX11, libXft, libXinerama, fontconfig, freetype }:
+
+stdenv.mkDerivation rec {
+  pname = "berry";
+  version = "0.1.5";
+
+  src = fetchFromGitHub {
+    owner = "JLErvin";
+    repo = "berry";
+    rev = version;
+    sha256 = "1wxbjzpwqb9x7vd7kb095fiqj271rki980dnwcxjxpqlmmrmjzyl";
+  };
+
+  buildInputs = [ libX11 libXft libXinerama fontconfig freetype ];
+
+  preBuild = ''
+    makeFlagsArray+=( PREFIX="${placeholder "out"}"
+                      X11INC="${libX11.dev}/include"
+                      X11LIB="${libX11}/lib"
+                      XINERAMALIBS="-lXinerama"
+                      XINERAMAFLAGS="-DXINERAMA"
+                      FREETYPELIBS="-lfontconfig -lXft"
+                      FREETYPEINC="${freetype.dev}/include/freetype2" )
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A healthy, bite-sized window manager";
+    longDescription = ''
+      berry is a healthy, bite-sized window manager written in C for unix
+      systems. Its main features include:
+
+      - Controlled via a powerful command-line client, allowing users to control
+        windows via a hotkey daemon such as sxhkd or expand functionality via
+        shell scripts.
+      - Small, hackable source code.
+      - Extensible themeing options with double borders, title bars, and window
+        text.
+      - Intuitively place new windows in unoccupied spaces.
+      - Virtual desktops.
+    '';
+    homepage = "https://berrywm.org/";
+    license = licenses.mit;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/bevelbar/default.nix b/nixpkgs/pkgs/applications/window-managers/bevelbar/default.nix
new file mode 100644
index 000000000000..40cebb572af3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/bevelbar/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, libX11, libXrandr, libXft }:
+
+stdenv.mkDerivation rec {
+  pname = "bevelbar";
+  version = "16.11";
+
+  src = fetchFromGitHub {
+    owner = "vain";
+    repo = "bevelbar";
+    rev = "v${version}";
+    sha256 = "1hbwg3vdxw9fyshy85skv476p0zr4ynvhcz2xkijydpzm2j3rmjm";
+  };
+
+  buildInputs = [ libX11 libXrandr libXft ];
+
+  installFlags = [ "prefix=$(out)" ];
+
+  meta = with stdenv.lib; {
+    description = "An X11 status bar with fancy schmancy 1985-ish beveled borders";
+    inherit (src.meta) homepage;
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = [ maintainers.neeasade ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/bspwm/default.nix b/nixpkgs/pkgs/applications/window-managers/bspwm/default.nix
new file mode 100644
index 000000000000..52f522810437
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/bspwm/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, libxcb, libXinerama
+, xcbutil, xcbutilkeysyms, xcbutilwm
+}:
+
+stdenv.mkDerivation rec {
+  pname = "bspwm";
+  version = "0.9.9";
+
+  src = fetchFromGitHub {
+    owner  = "baskerville";
+    repo   = "bspwm";
+    rev    = version;
+    sha256 = "1i7crmljk1vra1r6alxvj6lqqailjjcv0llyg7a0gm23rbv4a42g";
+  };
+
+  buildInputs = [ libxcb libXinerama xcbutil xcbutilkeysyms xcbutilwm ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    description = "A tiling window manager based on binary space partitioning";
+    homepage = "https://github.com/baskerville/bspwm";
+    maintainers = with maintainers; [ meisternu epitrochoid rvolosatovs ];
+    license = licenses.bsd2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/bspwm/unstable.nix b/nixpkgs/pkgs/applications/window-managers/bspwm/unstable.nix
new file mode 100644
index 000000000000..e52e33ec544a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/bspwm/unstable.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, libxcb, libXinerama, xcbutil, xcbutilkeysyms, xcbutilwm }:
+
+stdenv.mkDerivation {
+  name = "bspwm-unstable-2016-09-30";
+
+
+  src = fetchFromGitHub {
+    owner   = "baskerville";
+    repo    = "bspwm";
+    rev     = "8664c007e44de162c1597fd7e163635b274fb747";
+    sha256  = "0clvpz32z38i8kr10hqlifa661szpfn93c63m2aq2h4dwmr44slz";
+  };
+
+  buildInputs = [ libxcb libXinerama xcbutil xcbutilkeysyms xcbutilwm ];
+
+  buildPhase = ''
+    make PREFIX=$out
+  '';
+
+  installPhase = ''
+    make PREFIX=$out install
+  '';
+
+  meta = {
+    description = "A tiling window manager based on binary space partitioning (git version)";
+    homepage = "https://github.com/baskerville/bspwm";
+    maintainers = [ stdenv.lib.maintainers.meisternu stdenv.lib.maintainers.epitrochoid ];
+    license = stdenv.lib.licenses.bsd2;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/btops/default.nix b/nixpkgs/pkgs/applications/window-managers/btops/default.nix
new file mode 100644
index 000000000000..132e2ba6ddd3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/btops/default.nix
@@ -0,0 +1,25 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+{ stdenv, buildGoPackage, fetchgit }:
+
+buildGoPackage rec {
+  pname = "btops";
+  version = "0.1.0";
+
+  goPackagePath = "github.com/cmschuetz/btops";
+
+  src = fetchgit {
+    url = "https://github.com/cmschuetz/btops.git";
+    rev = version;
+    sha256 = "1ilidvpy7gz49zqp6rf0q7wjrc3r0brdrcp4r5f6i6p9cwybqkbq";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    description = "bspwm desktop management that supports dymanic appending, removing, and renaming";
+    homepage = "https://github.com/cmschuetz/btops";
+    maintainers = with maintainers; [ mnacamura ];
+    license = licenses.mit;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/btops/deps.nix b/nixpkgs/pkgs/applications/window-managers/btops/deps.nix
new file mode 100644
index 000000000000..a893d40e2107
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/btops/deps.nix
@@ -0,0 +1,120 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+[
+  {
+    goPackagePath = "github.com/fsnotify/fsnotify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/hcl";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/hcl";
+      rev = "ef8a98b0bbce4a65b5aa4c368430a80ddc533168";
+      sha256 = "1qalfsc31fra7hcw2lc3s20aj7al62fq3j5fn5kga3mg99b82nyr";
+    };
+  }
+  {
+    goPackagePath = "github.com/magiconair/properties";
+    fetch = {
+      type = "git";
+      url = "https://github.com/magiconair/properties";
+      rev = "c2353362d570a7bfa228149c62842019201cfb71";
+      sha256 = "1a10362wv8a8qwb818wygn2z48lgzch940hvpv81hv8gc747ajxn";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/mapstructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/mapstructure";
+      rev = "bb74f1db0675b241733089d5a1faa5dd8b0ef57b";
+      sha256 = "1aqk9qr46bwgdc5j7n7als61xvssvyjf4qzfsvhacl4izpygqnw7";
+    };
+  }
+  {
+    goPackagePath = "github.com/pelletier/go-toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pelletier/go-toml";
+      rev = "66540cf1fcd2c3aee6f6787dfa32a6ae9a870f12";
+      sha256 = "1n8na0yg90gm0rpifmzrby5r385vvd62cdam3ls7ssy02bjvfw15";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/afero";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/afero";
+      rev = "63644898a8da0bc22138abf860edaf5277b6102e";
+      sha256 = "13piahaq4vw1y1sklq5scrsflqx0a8hzmdqfz1fy4871kf2gl8qw";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/cast";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cast";
+      rev = "8965335b8c7107321228e3e3702cab9832751bac";
+      sha256 = "177bk7lq40jbgv9p9r80aydpaccfk8ja3a7jjhfwiwk9r1pa4rr2";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/jwalterweatherman";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/jwalterweatherman";
+      rev = "7c0cea34c8ece3fbeb2b27ab9b59511d360fb394";
+      sha256 = "132p84i20b9s5r6fs597lsa6648vd415ch7c0d018vm8smzqpd0h";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev = "583c0c0531f06d5278b7d917446061adc344b5cd";
+      sha256 = "0nr4mdpfhhk94hq4ymn5b2sxc47b29p1akxd8b0hx4dvdybmipb5";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/viper";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/viper";
+      rev = "15738813a09db5c8e5b60a19d67d3f9bd38da3a4";
+      sha256 = "1mjfzg8zvnxckaq6l8gw99i2msrfqn9yr04dc3b7kd5bpxi6zr4v";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "7c87d13f8e835d2fb3a70a2912c811ed0c1d241b";
+      sha256 = "03fhkng37rczqwfgah5hd7d373jps3hcfx79dmky2fh62yvpcyn3";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "5c1cf69b5978e5a34c5f9ba09a83e56acc4b7877";
+      sha256 = "03br8p1sb1ffr02l8hyrgcyib7ms0z06wy3v4r1dj2l6q4ghwzfs";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "5420a8b6744d3b0345ab293f6fcba19c978f1183";
+      sha256 = "0dwjrs2lp2gdlscs7bsrmyc5yf6mm4fvgw71bzr9mv2qrd2q73s1";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/window-managers/cage/default.nix b/nixpkgs/pkgs/applications/window-managers/cage/default.nix
new file mode 100644
index 000000000000..0d9e3335f2c9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/cage/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchFromGitHub, fetchpatch
+, meson, ninja, pkgconfig, makeWrapper
+, wlroots, wayland, wayland-protocols, pixman, libxkbcommon
+, systemd, libGL, libX11
+, xwayland ? null
+}:
+
+stdenv.mkDerivation rec {
+  pname = "cage-unstable";
+  version = "2020-01-18";
+  # The last stable release (0.1.1) would require at least the following 3 patches:
+  # - https://github.com/Hjdskes/cage/commit/33bb3c818c5971777b6f09d8821e7f078d38d262.patch
+  # - https://github.com/Hjdskes/cage/commit/51e6c760da51e2b885737d61a61cdc965bb9269d.patch
+  # - https://github.com/Hjdskes/cage/commit/84216ca2a417b237ad61c11e2f3ebbcb91681ece.patch
+  # Which need to be adapted due to other changes. At this point it seems
+  # better to use the current master version until the next stable release.
+
+  src = fetchFromGitHub {
+    owner = "Hjdskes";
+    repo = "cage";
+    rev = "cc1f975c442ebd691b70196d76aa120ead717810";
+    sha256 = "1gkqx26pvlw00b3fgx6sh87yyjfzyj51jwxvbf9k117npkrf4b2g";
+  };
+
+  nativeBuildInputs = [ meson ninja pkgconfig makeWrapper wayland ];
+
+  buildInputs = [
+    wlroots wayland wayland-protocols pixman libxkbcommon
+    # TODO: Not specified but required:
+    systemd libGL libX11
+  ];
+
+  enableParallelBuilding = true;
+
+  mesonFlags = [ "-Dxwayland=${stdenv.lib.boolToString (xwayland != null)}" ];
+
+  postFixup = stdenv.lib.optionalString (xwayland != null) ''
+    wrapProgram $out/bin/cage --prefix PATH : "${xwayland}/bin"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A Wayland kiosk";
+    homepage    = "https://www.hjdskes.nl/projects/cage/";
+    license     = licenses.mit;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/clfswm/default.nix b/nixpkgs/pkgs/applications/window-managers/clfswm/default.nix
new file mode 100644
index 000000000000..e3864319f7bb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/clfswm/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchgit, autoconf, sbcl, lispPackages, xdpyinfo, texinfo4
+, makeWrapper }:
+
+stdenv.mkDerivation {
+  name = "clfswm";
+
+  src = fetchgit {
+    url = "https://gitlab.common-lisp.net/clfswm/clfswm.git";
+    rev = "refs/heads/master";
+    sha256 = "0hynzh3a1zr719cxfb0k4cvh5lskzs616hwn7p942isyvhwzhynd";
+  };
+
+  buildInputs = [
+    texinfo4 makeWrapper autoconf
+    sbcl
+    lispPackages.clx
+    lispPackages.cl-ppcre
+    xdpyinfo
+  ];
+
+  patches = [ ./require-clx.patch ];
+
+  # Stripping destroys the generated SBCL image
+  dontStrip = true;
+
+  configurePhase = ''
+    substituteInPlace load.lisp --replace \
+      ";; (setf *contrib-dir* \"/usr/local/lib/clfswm/\")" \
+      "(setf *contrib-dir* \"$out/lib/clfswm/\")"
+  '';
+
+  installPhase = ''
+    mkdir -pv $out/bin
+    make DESTDIR=$out install
+
+    # Paths in the compressed image $out/bin/clfswm are not
+    # recognized by Nix. Add explicit reference here.
+    mkdir $out/nix-support
+    echo ${xdpyinfo} ${lispPackages.clx} ${lispPackages.cl-ppcre} > $out/nix-support/depends
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A(nother) Common Lisp FullScreen Window Manager";
+    homepage    = "https://common-lisp.net/project/clfswm/";
+    license     = licenses.gpl3;
+    maintainers = with maintainers; [ robgssp ];
+    platforms   = platforms.linux;
+    broken      = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/clfswm/require-clx.patch b/nixpkgs/pkgs/applications/window-managers/clfswm/require-clx.patch
new file mode 100644
index 000000000000..ae2234461d25
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/clfswm/require-clx.patch
@@ -0,0 +1,13 @@
+diff --git a/load.lisp b/load.lisp
+index c8c4cf0..8c9ca2e 100644
+--- a/load.lisp
++++ b/load.lisp
+@@ -111,6 +111,8 @@ from $XDG_CONFIG_HOME/clfswm/clfswmrc")
+ ;;;------------------
+ (load-info "Requiring CLX")
+ 
++(require 'clx)
++
+ ;;; Loading clisp dynamic module. This part needs clisp >= 2.50
+ ;;#+(AND CLISP (not CLX))
+ ;;(when (fboundp 'require)
diff --git a/nixpkgs/pkgs/applications/window-managers/cwm/default.nix b/nixpkgs/pkgs/applications/window-managers/cwm/default.nix
new file mode 100644
index 000000000000..27aacd78e9fa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/cwm/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, libX11, libXinerama, libXrandr, libXft, yacc, pkgconfig }:
+
+stdenv.mkDerivation rec {
+
+  pname = "cwm";
+  version = "6.7";
+
+  src = fetchFromGitHub {
+    owner = "leahneukirchen";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0f9xmki2hx10k8iisfzc7nm1l31zkf1r06pdgn06ar9w9nizrld9";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libX11 libXinerama libXrandr libXft yacc ];
+
+  prePatch = ''sed -i "s@/usr/local@$out@" Makefile'';
+
+  meta = with stdenv.lib; {
+    description = "A lightweight and efficient window manager for X11";
+    homepage    = "https://github.com/leahneukirchen/cwm";
+    maintainers = with maintainers; [ maintainers."0x4A6F" mkf ];
+    license     = licenses.isc;
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/dwm/default.nix b/nixpkgs/pkgs/applications/window-managers/dwm/default.nix
new file mode 100644
index 000000000000..8f9c28c78511
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/dwm/default.nix
@@ -0,0 +1,30 @@
+{stdenv, fetchurl, libX11, libXinerama, libXft, patches ? []}:
+
+let
+  name = "dwm-6.2";
+in
+stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchurl {
+    url = "https://dl.suckless.org/dwm/${name}.tar.gz";
+    sha256 = "03hirnj8saxnsfqiszwl2ds7p0avg20izv9vdqyambks00p2x44p";
+  };
+
+  buildInputs = [ libX11 libXinerama libXft ];
+
+  prePatch = ''sed -i "s@/usr/local@$out@" config.mk'';
+
+  # Allow users set their own list of patches
+  inherit patches;
+
+  buildPhase = " make ";
+
+  meta = {
+    homepage = "https://suckless.org/";
+    description = "Dynamic window manager for X";
+    license = stdenv.lib.licenses.mit;
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.platforms; all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/dwm/dwm-status.nix b/nixpkgs/pkgs/applications/window-managers/dwm/dwm-status.nix
new file mode 100644
index 000000000000..176c2a0ddff9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/dwm/dwm-status.nix
@@ -0,0 +1,37 @@
+{ stdenv, lib, rustPlatform, fetchFromGitHub, dbus, gdk-pixbuf, libnotify, makeWrapper, pkgconfig, xorg
+, enableAlsaUtils ? true, alsaUtils, coreutils
+, enableNetwork ? true, dnsutils, iproute, wirelesstools }:
+
+let
+  bins = lib.optionals enableAlsaUtils [ alsaUtils coreutils ]
+    ++ lib.optionals enableNetwork [ dnsutils iproute wirelesstools ];
+in
+
+rustPlatform.buildRustPackage rec {
+  pname = "dwm-status";
+  version = "1.7.0";
+
+  src = fetchFromGitHub {
+    owner = "Gerschtli";
+    repo = "dwm-status";
+    rev = version;
+    sha256 = "1a3dpawxgi8d2a6w5jzvzm5q13rvqd656ris8mz77gj6f8qp7ddl";
+  };
+
+  nativeBuildInputs = [ makeWrapper pkgconfig ];
+  buildInputs = [ dbus gdk-pixbuf libnotify xorg.libX11 ];
+
+  cargoSha256 = "12b6fdhj13axhwf854n071dpiycg73g4kvl7igk1qn7l3gqwsfqn";
+
+  postInstall = lib.optionalString (bins != [])  ''
+    wrapProgram $out/bin/dwm-status --prefix "PATH" : "${stdenv.lib.makeBinPath bins}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Highly performant and configurable DWM status service";
+    homepage = "https://github.com/Gerschtli/dwm-status";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ gerschtli ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/dwm/git.nix b/nixpkgs/pkgs/applications/window-managers/dwm/git.nix
new file mode 100644
index 000000000000..3751a8de69f7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/dwm/git.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchgit, libX11, libXinerama, libXft, patches ? [], conf ? null }:
+
+let
+  name = "dwm-git-20180602";
+in
+
+stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchgit {
+    url = "git://git.suckless.org/dwm";
+    rev = "b69c870a3076d78ab595ed1cd4b41cf6b03b2610";
+    sha256 = "10i079h79l4gdch1qy2vrrb2xxxkgkjmgphr5r9a75jbbagwvz0k";
+  };
+
+  buildInputs = [ libX11 libXinerama libXft ];
+
+  prePatch = ''sed -i "s@/usr/local@$out@" config.mk'';
+
+  # Allow users set their own list of patches
+  inherit patches;
+
+  # Allow users to override the entire config file AFTER appying the patches
+  postPatch = stdenv.lib.optionalString (conf!=null) ''
+    echo -n '${conf}' > config.def.h
+  '';
+
+  buildPhase = "make";
+
+  meta = with stdenv.lib; {
+    homepage = "https://suckless.org/";
+    description = "Dynamic window manager for X, development version";
+    license = licenses.mit;
+    maintainers = with maintainers; [xeji];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/dzen2/default.nix b/nixpkgs/pkgs/applications/window-managers/dzen2/default.nix
new file mode 100644
index 000000000000..367c78ec5cac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/dzen2/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, pkgconfig, libX11, libXft, libXinerama, libXpm }:
+
+stdenv.mkDerivation {
+  name = "dzen2-0.9.5";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libX11 libXft libXinerama libXpm ];
+
+  src = fetchurl {
+    url = "https://github.com/robm/dzen/tarball/master/dzen2-0.9.5git.tar.gz";
+    sha256 = "d4f7943cd39dc23fd825eb684b49dc3484860fa8443d30b06ee38af72a53b556";
+  };
+
+  patchPhase = ''
+    CFLAGS=" -Wall -Os ''${INCS} -DVERSION=\"''${VERSION}\" -DDZEN_XINERAMA -DDZEN_XPM -DDZEN_XFT `pkg-config --cflags xft`"
+    LIBS=" -L/usr/lib -lc -lXft -lXpm -lXinerama -lX11"
+    echo "CFLAGS=$CFLAGS" >>config.mk
+    echo "LIBS=$LIBS" >>config.mk
+    echo "LDFLAGS=$LIBS" >>config.mk
+    substituteInPlace config.mk --replace /usr/local "$out"
+    substituteInPlace gadgets/config.mk --replace /usr/local "$out"
+  '';
+
+  buildPhase = ''
+    mkdir -p $out/bin $out/man/man1
+    make clean install
+    cd gadgets
+    make clean install
+  '';
+
+  meta = {
+    homepage = "https://github.com/robm/dzen";
+    license = stdenv.lib.licenses.mit;
+    description = "X notification utility";
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/evilwm/default.nix b/nixpkgs/pkgs/applications/window-managers/evilwm/default.nix
new file mode 100644
index 000000000000..64dc784e812f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/evilwm/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl,  libX11, libXext, libXrandr, libXrender,
+  xorgproto, patches ? [] }:
+
+stdenv.mkDerivation rec {
+  name = "evilwm-1.1.1";
+
+  src = fetchurl {
+    url = "http://www.6809.org.uk/evilwm/${name}.tar.gz";
+    sha256 = "79589c296a5915ee0bae1d231e8912601fc794d9f0a9cacb6b648ff9a5f2602a";
+  };
+
+  buildInputs = [ libX11 libXext libXrandr libXrender
+                  xorgproto ];
+
+  prePatch = ''substituteInPlace ./Makefile --replace /usr $out \
+                                            --replace "CC = gcc" "#CC = gcc"'';
+
+  # Allow users set their own list of patches
+  inherit patches;
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.6809.org.uk/evilwm/";
+    description = "Minimalist window manager for the X Window System";
+
+    license = {
+      shortName = "evilwm";
+      fullName = "Custom, inherited from aewm and 9wm";
+      url = "http://www.6809.org.uk/evilwm/";
+      free = true;
+    };  # like BSD/MIT, but Share-Alike'y; See README.
+
+    maintainers = with maintainers; [ amiloradovsky ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/fbpanel/default.nix b/nixpkgs/pkgs/applications/window-managers/fbpanel/default.nix
new file mode 100644
index 000000000000..cf45dfa86407
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/fbpanel/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, pkgconfig
+, libX11, libXmu, libXpm, gtk2, libpng, libjpeg, libtiff, librsvg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "fbpanel";
+  version = "6.1";
+  src = fetchurl {
+    url = "mirror://sourceforge/fbpanel/${pname}-${version}.tbz2";
+    sha256 = "e14542cc81ea06e64dd4708546f5fd3f5e01884c3e4617885c7ef22af8cf3965";
+  };
+  buildInputs =
+    [ pkgconfig libX11 libXmu libXpm gtk2 libpng libjpeg libtiff librsvg ];
+
+  preConfigure = "patchShebangs .";
+
+  NIX_LDFLAGS="-lX11";
+
+  meta = with stdenv.lib; {
+    description = "A stand-alone panel";
+    maintainers = with maintainers; [ raskin ];
+    platforms = platforms.linux;
+    license = licenses.mit;
+  };
+
+  passthru = {
+    updateInfo = {
+      downloadPage = "fbpanel.sourceforge.net";
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/fluxbox/default.nix b/nixpkgs/pkgs/applications/window-managers/fluxbox/default.nix
new file mode 100644
index 000000000000..b1a11d7153c2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/fluxbox/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchurl, pkgconfig
+, freetype, fribidi
+, libXext, libXft, libXpm, libXrandr, libXrender, xorgproto
+, libXinerama
+, imlib2 }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+
+  pname = "fluxbox";
+  version = "1.3.7";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/fluxbox/${pname}-${version}.tar.xz";
+    sha256 = "1h1f70y40qd225dqx937vzb4k2cz219agm1zvnjxakn5jkz7b37w";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ freetype fribidi libXext libXft libXpm libXrandr libXrender xorgproto libXinerama imlib2 ];
+
+  enableParallelBuilding = true;
+
+  preConfigure = ''
+    substituteInPlace util/fluxbox-generate_menu.in \
+      --subst-var-by PREFIX "$out"
+  '';
+  
+  meta = {
+    description = "Full-featured, light-resource X window manager";
+    longDescription = ''
+      Fluxbox is a X window manager based on Blackbox 0.61.1 window
+      manager sources.  It is very light on resources and easy to
+      handle but yet full of features to make an easy, and extremely
+      fast, desktop experience. It is written in C++ and licensed
+      under MIT license.
+    '';
+    homepage = "http://fluxbox.org/";
+    license = licenses.mit;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
+  };
+}
+# Many thanks Jack Ryan from Nix-dev mailing list!
diff --git a/nixpkgs/pkgs/applications/window-managers/fvwm/default.nix b/nixpkgs/pkgs/applications/window-managers/fvwm/default.nix
new file mode 100644
index 000000000000..6b3f40297550
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/fvwm/default.nix
@@ -0,0 +1,33 @@
+{ gestures ? false
+, stdenv, fetchurl, pkgconfig
+, cairo, fontconfig, freetype, libXft, libXcursor, libXinerama
+, libXpm, libXt, librsvg, libpng, fribidi, perl
+, libstroke ? null
+}:
+
+assert gestures -> libstroke != null;
+
+stdenv.mkDerivation rec {
+  pname = "fvwm";
+  version = "2.6.9";
+
+  src = fetchurl {
+    url = "https://github.com/fvwmorg/fvwm/releases/download/${version}/${pname}-${version}.tar.gz";
+    sha256 = "1bliqcnap7vb3m2rn8wvxyfhbf35h9x34s41fl4301yhrkrlrihv";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    cairo fontconfig freetype
+    libXft libXcursor libXinerama libXpm libXt
+    librsvg libpng fribidi perl
+  ] ++ stdenv.lib.optional gestures libstroke;
+
+  meta = {
+    homepage = "http://fvwm.org";
+    description = "A multiple large virtual desktop window manager";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = with stdenv.lib.maintainers; [ edanaher ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/herbstluftwm/default.nix b/nixpkgs/pkgs/applications/window-managers/herbstluftwm/default.nix
new file mode 100644
index 000000000000..e547cea3c54c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/herbstluftwm/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchurl, cmake, pkgconfig, glib, libX11, libXext, libXinerama, libXrandr
+, withDoc ? stdenv.buildPlatform == stdenv.targetPlatform, asciidoc ? null }:
+
+# Doc generation is disabled by default when cross compiling because asciidoc
+# does not cross compile for now
+
+assert withDoc -> asciidoc != null;
+
+stdenv.mkDerivation rec {
+  pname = "herbstluftwm";
+  version = "0.8.3";
+
+  src = fetchurl {
+    url = "https://herbstluftwm.org/tarballs/herbstluftwm-${version}.tar.gz";
+    sha256 = "1qmb4pjf2f6g0dvcg11cw9njwmxblhqzd70ai8qnlgqw1iz3nkm1";
+  };
+
+  outputs = [
+    "out"
+  ] ++ stdenv.lib.optionals withDoc [
+    "doc"
+    "man"
+  ];
+
+  cmakeFlags = [
+    "-DCMAKE_INSTALL_SYSCONF_PREFIX=${placeholder "out"}/etc"
+  ] ++ stdenv.lib.optional (!withDoc) "-DWITH_DOCUMENTATION=OFF";
+
+  nativeBuildInputs = [
+    cmake
+    pkgconfig
+  ] ++ stdenv.lib.optional withDoc asciidoc;
+
+  buildInputs = [
+    libX11
+    libXext
+    libXinerama
+    libXrandr
+  ];
+
+  meta = {
+    description = "A manual tiling window manager for X";
+    homepage = "https://herbstluftwm.org/";
+    license = stdenv.lib.licenses.bsd2;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/hikari/default.nix b/nixpkgs/pkgs/applications/window-managers/hikari/default.nix
new file mode 100644
index 000000000000..274c75a3c13c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/hikari/default.nix
@@ -0,0 +1,75 @@
+{ stdenv, fetchzip,
+  pkgconfig, bmake,
+  cairo, glib, libevdev, libinput, libxkbcommon, linux-pam, pango, pixman,
+  libucl, wayland, wayland-protocols, wlroots,
+  features ? {
+    gammacontrol = true;
+    layershell   = true;
+    screencopy   = true;
+    xwayland     = true;
+  }
+}:
+
+let
+  pname = "hikari";
+  version = "2.0.2";
+in
+
+stdenv.mkDerivation {
+  inherit pname version;
+
+  src = fetchzip {
+    url = "https://hikari.acmelabs.space/releases/${pname}-${version}.tar.gz";
+    sha256 = "1a3i01936pw11hrmjmrhzzwpndl1jqjgx376m5m724wd1j9awm68";
+  };
+
+  nativeBuildInputs = [ pkgconfig bmake ];
+
+  buildInputs = [
+    cairo
+    glib
+    libevdev
+    libinput
+    libxkbcommon
+    linux-pam
+    pango
+    pixman
+    libucl
+    wayland
+    wayland-protocols
+    wlroots
+  ];
+
+  enableParallelBuilding = true;
+
+  # Must replace GNU Make by bmake
+  buildPhase = with stdenv.lib; concatStringsSep " " (
+    [ "bmake" "-j$NIX_BUILD_CORES" "PREFIX=$out" ]
+    ++ optional stdenv.isLinux "WITH_POSIX_C_SOURCE=YES"
+    ++ mapAttrsToList (feat: enabled:
+         optionalString enabled "WITH_${toUpper feat}=YES"
+       ) features
+  );
+
+  # Can't suid in nix store
+  # Run hikari as root (it will drop privileges as early as possible), or create
+  # a systemd unit to give it the necessary permissions/capabilities.
+  patchPhase = ''
+    substituteInPlace Makefile --replace '4555' '555'
+  '';
+
+  installPhase = ''
+    bmake \
+      PREFIX=$out \
+      install
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Stacking Wayland compositor which is actively developed on FreeBSD but also supports Linux";
+    homepage    = "https://hikari.acmelabs.space";
+    license     = licenses.bsd2;
+    platforms   = platforms.linux ++ platforms.freebsd;
+    maintainers = with maintainers; [ jpotier ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/blocks-gaps.nix b/nixpkgs/pkgs/applications/window-managers/i3/blocks-gaps.nix
new file mode 100644
index 000000000000..4a91865fecac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/i3/blocks-gaps.nix
@@ -0,0 +1,51 @@
+{ fetchFromGitHub, stdenv, perl, makeWrapper
+, iproute, acpi, sysstat, alsaUtils
+, scripts ? [ "bandwidth" "battery" "cpu_usage" "disk" "iface"
+              "load_average" "memory" "volume" "wifi" ]
+}:
+
+with stdenv.lib;
+
+let
+  perlscripts = [ "battery" "cpu_usage" "openvpn" "temperature" ];
+  contains_any = l1: l2: 0 < length( intersectLists l1 l2 );
+
+in
+stdenv.mkDerivation rec {
+  pname = "i3blocks-gaps";
+  version = "1.4";
+
+  src = fetchFromGitHub {
+    owner = "Airblader";
+    repo = "i3blocks-gaps";
+    rev = "4cfdf93c75f729a2c96d471004d31734e923812f";
+    sha256 = "0v9307ij8xzwdaxay3r75sd2cp453s3qb6q7dy9fks2p6wwqpazi";
+  };
+
+  makeFlags = [ "all" ];
+  installFlags = [ "PREFIX=\${out}" "VERSION=${version}" ];
+
+  buildInputs = optional (contains_any scripts perlscripts) perl;
+  nativeBuildInputs = [ makeWrapper ];
+
+  postFixup = ''
+    wrapProgram $out/libexec/i3blocks/bandwidth \
+      --prefix PATH : ${makeBinPath (optional (elem "bandwidth" scripts) iproute)}
+    wrapProgram $out/libexec/i3blocks/battery \
+      --prefix PATH : ${makeBinPath (optional (elem "battery" scripts) acpi)}
+    wrapProgram $out/libexec/i3blocks/cpu_usage \
+      --prefix PATH : ${makeBinPath (optional (elem "cpu_usage" scripts) sysstat)}
+    wrapProgram $out/libexec/i3blocks/iface \
+      --prefix PATH : ${makeBinPath (optional (elem "iface" scripts) iproute)}
+    wrapProgram $out/libexec/i3blocks/volume \
+      --prefix PATH : ${makeBinPath (optional (elem "volume" scripts) alsaUtils)}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A flexible scheduler for your i3bar blocks -- this is a fork to use with i3-gaps";
+    homepage = "https://github.com/Airblader/i3blocks-gaps";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ carlsverre ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/blocks.nix b/nixpkgs/pkgs/applications/window-managers/i3/blocks.nix
new file mode 100644
index 000000000000..bfd76b444375
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/i3/blocks.nix
@@ -0,0 +1,33 @@
+{ fetchFromGitHub, fetchpatch, stdenv, autoreconfHook, pkg-config }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation {
+  pname = "i3blocks";
+  version = "1.5";
+
+  src = fetchFromGitHub {
+    owner = "vivien";
+    repo = "i3blocks";
+    rev = "3417602a2d8322bc866861297f535e1ef80b8cb0";
+    sha256 = "0v8mwnm8qzpv6xnqvrk43s4b9iyld4naqzbaxk4ldq1qkhai0wsv";
+  };
+
+  patches = [
+    # XDG_CONFIG_DIRS can contain multiple elements separated by colons, which should be searched in order.
+    (fetchpatch {
+      # https://github.com/vivien/i3blocks/pull/405
+      url = "https://github.com/edef1c/i3blocks/commit/d57b32f9a364aeaf36869efdd54240433c737e57.patch";
+      sha256 = "102xb0ax0hmg82dz2gzfag470dkckzf2yizai0izacvrz0d3ngj1";
+    })
+  ];
+
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
+
+  meta = {
+    description = "A flexible scheduler for your i3bar blocks";
+    homepage = "https://github.com/vivien/i3blocks";
+    license = licenses.gpl3;
+    platforms = with platforms; freebsd ++ linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/default.nix b/nixpkgs/pkgs/applications/window-managers/i3/default.nix
new file mode 100644
index 000000000000..3888e10f2585
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/i3/default.nix
@@ -0,0 +1,74 @@
+{ fetchurl, stdenv, which, pkgconfig, makeWrapper, installShellFiles, libxcb, xcbutilkeysyms
+, xcbutil, xcbutilwm, xcbutilxrm, libstartup_notification, libX11, pcre, libev
+, yajl, xcb-util-cursor, perl, pango, perlPackages, libxkbcommon
+, xorgserver, xvfb_run }:
+
+stdenv.mkDerivation rec {
+  pname = "i3";
+  version = "4.18.1";
+
+  src = fetchurl {
+    url = "https://i3wm.org/downloads/${pname}-${version}.tar.bz2";
+    sha256 = "0z709cianlzw0x0qwq4361347354xd9ckj1v7vjvhb1zh3x91gws";
+  };
+
+  nativeBuildInputs = [ which pkgconfig makeWrapper installShellFiles ];
+
+  buildInputs = [
+    libxcb xcbutilkeysyms xcbutil xcbutilwm xcbutilxrm libxkbcommon
+    libstartup_notification libX11 pcre libev yajl xcb-util-cursor perl pango
+    perlPackages.AnyEventI3 perlPackages.X11XCB perlPackages.IPCRun
+    perlPackages.ExtUtilsPkgConfig perlPackages.InlineC
+    xorgserver xvfb_run
+  ];
+
+  configureFlags = [ "--disable-builddir" ];
+
+  enableParallelBuilding = true;
+
+  postPatch = ''
+    patchShebangs .
+  '';
+
+  # Tests have been failing (at least for some people in some cases)
+  # and have been disabled until someone wants to fix them. Some
+  # initial digging uncovers that the tests call out to `git`, which
+  # they shouldn't, and then even once that's fixed have some
+  # perl-related errors later on. For more, see
+  # https://github.com/NixOS/nixpkgs/issues/7957
+  doCheck = false; # stdenv.hostPlatform.system == "x86_64-linux";
+
+  checkPhase = stdenv.lib.optionalString (stdenv.hostPlatform.system == "x86_64-linux")
+  ''
+    (cd testcases && xvfb-run ./complete-run.pl -p 1 --keep-xserver-output)
+    ! grep -q '^not ok' testcases/latest/complete-run.log
+  '';
+
+  postInstall = ''
+    wrapProgram "$out/bin/i3-save-tree" --prefix PERL5LIB ":" "$PERL5LIB"
+    for program in $out/bin/i3-sensible-*; do
+      sed -i 's/which/command -v/' $program
+    done
+
+    installManPage man/*.1
+  '';
+
+  separateDebugInfo = true;
+
+  meta = with stdenv.lib; {
+    description = "A tiling window manager";
+    homepage    = "https://i3wm.org";
+    maintainers = with maintainers; [ modulistic fpletz globin ];
+    license     = licenses.bsd3;
+    platforms   = platforms.all;
+
+    longDescription = ''
+      A tiling window manager primarily targeted at advanced users and
+      developers. Based on a tree as data structure, supports tiling,
+      stacking, and tabbing layouts, handled dynamically, as well as
+      floating windows. Configured via plain text file. Multi-monitor.
+      UTF-8 clean.
+    '';
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/easyfocus.nix b/nixpkgs/pkgs/applications/window-managers/i3/easyfocus.nix
new file mode 100644
index 000000000000..5c7a22eb7694
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/i3/easyfocus.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, pkgconfig, xorgproto, libxcb, xcbutilkeysyms
+, xorg , i3ipc-glib , glib
+}:
+
+stdenv.mkDerivation {
+  pname = "i3easyfocus";
+  version = "20190411";
+
+  src = fetchFromGitHub {
+    owner = "cornerman";
+    repo = "i3-easyfocus";
+    rev = "fffb468f7274f9d7c9b92867c8cb9314ec6cf81a";
+    sha256 = "1db23vzzmp0hnfss1fkd80za6d2pajx7hdwikw50pk95jq0w8wfm";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libxcb xcbutilkeysyms xorgproto xorg.libX11.dev i3ipc-glib glib.dev ];
+
+  # Makefile has no rule for 'install'
+  installPhase = ''
+    mkdir -p $out/bin
+    cp i3-easyfocus $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Focus and select windows in i3";
+    homepage = "https://github.com/cornerman/i3-easyfocus";
+    maintainers = with maintainers; [teto];
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/gaps.nix b/nixpkgs/pkgs/applications/window-managers/i3/gaps.nix
new file mode 100644
index 000000000000..7be037ca8333
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/i3/gaps.nix
@@ -0,0 +1,33 @@
+{ fetchurl, stdenv, i3, autoreconfHook }:
+
+i3.overrideAttrs (oldAttrs : rec {
+
+  name = "i3-gaps-${version}";
+  version = "4.18.1";
+
+  src = fetchurl {
+    url = "https://github.com/Airblader/i3/releases/download/${version}/i3-${version}.tar.bz2";
+    sha256 = "1cxwsrdzp18r5hj0ymg9fbzp1mhkj4m9h6i0b9cdg79cjbacba9k";
+  };
+
+  nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [ autoreconfHook ];
+
+  # fatal error: GENERATED_config_enums.h: No such file or directory
+  enableParallelBuilding = false;
+
+  meta = with stdenv.lib; {
+    description = "A fork of the i3 tiling window manager with some additional features";
+    homepage    = "https://github.com/Airblader/i3";
+    maintainers = with maintainers; [ fmthoma ];
+    license     = licenses.bsd3;
+    platforms   = platforms.all;
+
+    longDescription = ''
+      Fork of i3wm, a tiling window manager primarily targeted at advanced users
+      and developers. Based on a tree as data structure, supports tiling,
+      stacking, and tabbing layouts, handled dynamically, as well as floating
+      windows. This fork adds a few features such as gaps between windows.
+      Configured via plain text file. Multi-monitor. UTF-8 clean.
+    '';
+  };
+})
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/i3ipc-glib.nix b/nixpkgs/pkgs/applications/window-managers/i3/i3ipc-glib.nix
new file mode 100644
index 000000000000..7e6a18c93c56
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/i3/i3ipc-glib.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, pkgconfig, xorgproto, libxcb
+, autoreconfHook, json-glib, gtk-doc, which
+, gobject-introspection
+}:
+
+stdenv.mkDerivation rec {
+
+  pname = "i3ipc-glib";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "acrisci";
+    repo = "i3ipc-glib";
+    rev = "v${version}";
+    sha256 = "1gmk1zjafrn6jh4j7r0wkwrpwvf9drl1lcw8vya23i1f4zbk0wh4";
+  };
+
+  nativeBuildInputs = [ autoreconfHook which pkgconfig ];
+
+  buildInputs = [ libxcb json-glib gtk-doc xorgproto gobject-introspection ];
+
+
+  preAutoreconf = ''
+    gtkdocize
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A C interface library to i3wm";
+    homepage = "https://github.com/acrisci/i3ipc-glib";
+    maintainers = with maintainers; [teto];
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/layout-manager.nix b/nixpkgs/pkgs/applications/window-managers/i3/layout-manager.nix
new file mode 100644
index 000000000000..f4c2a53b7a29
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/i3/layout-manager.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, vim, makeWrapper, jq, rofi, xrandr, xdotool, i3, gawk, libnotify }:
+
+let
+  path = stdenv.lib.makeBinPath [ vim jq rofi xrandr xdotool i3 gawk libnotify ];
+in
+
+stdenv.mkDerivation rec {
+  pname = "i3-layout-manager";
+  version = "unstable-2019-12-06";
+
+  src = fetchFromGitHub {
+    owner = "klaxalk";
+    repo = pname;
+    rev = "064e13959413ba2d706185478a394e5852c0dc53";
+    sha256 = "1qm35sp1cfi3xj5j7xwa05dkb3353gwq4xh69ryc6382xx3wszg6";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D layout_manager.sh $out/bin/layout_manager
+    wrapProgram $out/bin/layout_manager \
+      --prefix PATH : "${path}"
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/klaxalk/i3-layout-manager";
+    description = "Saving, loading and managing layouts for i3wm.";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/lock-color.nix b/nixpkgs/pkgs/applications/window-managers/i3/lock-color.nix
new file mode 100644
index 000000000000..c5e203ab1a58
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/i3/lock-color.nix
@@ -0,0 +1,62 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, libxcb,
+  xcbutilkeysyms , xcbutilimage, pam, libX11, libev, cairo, libxkbcommon,
+  libxkbfile, libjpeg_turbo, xcbutilxrm
+}:
+
+stdenv.mkDerivation rec {
+  version = "2.12.c.4";
+  pname = "i3lock-color";
+
+  src = fetchFromGitHub {
+    owner = "PandorasFox";
+    repo = "i3lock-color";
+    rev = version;
+    sha256 = "1jbk7kd49vgmakbldwwnbsp484fwh1pbzg8k8qvbq4dzbzf3q5hs";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ libxcb xcbutilkeysyms xcbutilimage pam libX11
+    libev cairo libxkbcommon libxkbfile libjpeg_turbo xcbutilxrm ];
+
+  makeFlags = [ "all" ];
+  preInstall = ''
+    mkdir -p $out/share/man/man1
+  '';
+  installFlags = [ "PREFIX=\${out}" "SYSCONFDIR=\${out}/etc" "MANDIR=\${out}/share/man" ];
+  postInstall = ''
+    mv $out/bin/i3lock $out/bin/i3lock-color
+    mv $out/share/man/man1/i3lock.1 $out/share/man/man1/i3lock-color.1
+    sed -i 's/\(^\|\s\|"\)i3lock\(\s\|$\)/\1i3lock-color\2/g' $out/share/man/man1/i3lock-color.1
+  '';
+  meta = with stdenv.lib; {
+    description = "A simple screen locker like slock, enhanced version with extra configuration options";
+    longDescription = ''
+      Simple screen locker. After locking, a colored background (default: white) or
+      a configurable image is shown, and a ring-shaped unlock-indicator gives feedback
+      for every keystroke. After entering your password, the screen is unlocked again.
+
+      i3lock-color is forked from i3lock (https://i3wm.org/i3lock/) with the following
+      enhancements / additional configuration options:
+
+      - indicator:
+        - shape: ring or bar
+        - size: configurable
+        - all colors: configurable
+        - all texts: configurable
+        - visibility: can be always visible, can be restricted to some screens
+
+      - background: optionally show a blurred screen instead of a single color
+
+      - more information: show text at configurable positions:
+        - clock: time/date with configurable format
+        - keyboard-layout
+    '';
+    homepage = "https://github.com/PandorasFox/i3lock-color";
+    maintainers = with maintainers; [ malyn ];
+    license = licenses.bsd3;
+
+    # Needs the SSE2 instruction set. See upstream issue
+    # https://github.com/chrjguill/i3lock-color/issues/44
+    platforms = platforms.x86;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/lock-fancy.nix b/nixpkgs/pkgs/applications/window-managers/i3/lock-fancy.nix
new file mode 100644
index 000000000000..9b9b2dea1328
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/i3/lock-fancy.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, coreutils, scrot, imagemagick, gawk
+, i3lock-color, getopt, fontconfig
+}:
+
+stdenv.mkDerivation rec {
+  rev = "7accfb2aa2f918d1a3ab975b860df1693d20a81a";
+  name = "i3lock-fancy-unstable-2018-11-25_rev${builtins.substring 0 7 rev}";
+  src = fetchFromGitHub {
+    owner = "meskarune";
+    repo = "i3lock-fancy";
+    inherit rev;
+    sha256 = "00lqsvz1knb8iqy8lnkn3sf4c2c4nzb0smky63qf48m8za5aw9b1";
+  };
+  patchPhase = ''
+    sed -i -e "s|mktemp|${coreutils}/bin/mktemp|" i3lock-fancy
+    sed -i -e "s|'rm -f |'${coreutils}/bin/rm -f |" i3lock-fancy
+    sed -i -e "s|scrot -z |${scrot}/bin/scrot -z |" i3lock-fancy
+    sed -i -e "s|convert |${imagemagick.out}/bin/convert |" i3lock-fancy
+    sed -i -e "s|awk -F|${gawk}/bin/awk -F|" i3lock-fancy
+    sed -i -e "s| awk | ${gawk}/bin/awk |" i3lock-fancy
+    sed -i -e "s|i3lock -i |${i3lock-color}/bin/i3lock-color -i |" i3lock-fancy
+    sed -i -e 's|icon="/usr/share/i3lock-fancy/icons/lockdark.png"|icon="'$out'/share/i3lock-fancy/icons/lockdark.png"|' i3lock-fancy
+    sed -i -e 's|icon="/usr/share/i3lock-fancy/icons/lock.png"|icon="'$out'/share/i3lock-fancy/icons/lock.png"|' i3lock-fancy
+    sed -i -e "s|getopt |${getopt}/bin/getopt |" i3lock-fancy
+    sed -i -e "s|fc-match |${fontconfig.bin}/bin/fc-match |" i3lock-fancy
+    sed -i -e "s|shot=(import -window root)|shot=(${scrot}/bin/scrot -z -o)|" i3lock-fancy
+    rm Makefile
+  '';
+  installPhase = ''
+    mkdir -p $out/bin $out/share/i3lock-fancy/icons
+    cp i3lock-fancy $out/bin/i3lock-fancy
+    cp icons/lock*.png $out/share/i3lock-fancy/icons
+  '';
+  meta = with stdenv.lib; {
+    description = "i3lock is a bash script that takes a screenshot of the desktop, blurs the background and adds a lock icon and text.";
+    homepage = "https://github.com/meskarune/i3lock-fancy";
+    maintainers = with maintainers; [ ];
+    license = licenses.mit;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/lock.nix b/nixpkgs/pkgs/applications/window-managers/i3/lock.nix
new file mode 100644
index 000000000000..2bca01eeefa7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/i3/lock.nix
@@ -0,0 +1,37 @@
+{ fetchurl, stdenv, which, pkgconfig, libxcb, xcbutilkeysyms, xcbutilimage,
+  xcbutilxrm, pam, libX11, libev, cairo, libxkbcommon, libxkbfile }:
+
+stdenv.mkDerivation rec {
+  pname = "i3lock";
+  version = "2.12";
+
+  src = fetchurl {
+    url = "https://i3wm.org/i3lock/${pname}-${version}.tar.bz2";
+    sha256 = "02dwaqxpclcwiwvpvq7zwz4sxcv9c15dbf17ifalj1p8djls3cnh";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ which libxcb xcbutilkeysyms xcbutilimage xcbutilxrm
+    pam libX11 libev cairo libxkbcommon libxkbfile ];
+
+  makeFlags = [ "all" ];
+  installFlags = [ "PREFIX=\${out}" "SYSCONFDIR=\${out}/etc" ];
+  postInstall = ''
+    mkdir -p $out/share/man/man1
+    cp *.1 $out/share/man/man1
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A simple screen locker like slock";
+    longDescription = ''
+      Simple screen locker. After locking, a colored background (default: white) or
+      a configurable image is shown, and a ring-shaped unlock-indicator gives feedback
+      for every keystroke. After entering your password, the screen is unlocked again.
+    '';
+    homepage = "https://i3wm.org/i3lock/";
+    maintainers = with maintainers; [ malyn domenkozar ];
+    license = licenses.bsd3;
+    platforms = platforms.all;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/pystatus.nix b/nixpkgs/pkgs/applications/window-managers/i3/pystatus.nix
new file mode 100644
index 000000000000..beefdaf891c6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/i3/pystatus.nix
@@ -0,0 +1,59 @@
+{ stdenv
+, fetchFromGitHub
+, libpulseaudio
+, libnotify
+, gobject-introspection
+, python3Packages
+, wrapGAppsHook
+, extraLibs ? [] }:
+
+python3Packages.buildPythonApplication rec {
+  # i3pystatus moved to rolling release:
+  # https://github.com/enkore/i3pystatus/issues/584
+  version = "unstable-2020-06-12";
+  pname = "i3pystatus";
+
+  src = fetchFromGitHub {
+    owner = "enkore";
+    repo = "i3pystatus";
+    rev = "dad5eb0c5c8a2ecd20c37ade4732586c6e53f44b";
+    sha256 = "18ygvkl92yr69kxsym57k1mc90asdxpz4b943i61qr0s4fc5n4mq";
+  };
+
+  buildInputs = [ libpulseaudio libnotify gobject-introspection ];
+
+  propagatedBuildInputs = with python3Packages; [
+    keyring colour netifaces psutil basiciw pygobject3
+  ] ++ extraLibs;
+
+  makeWrapperArgs = [
+    # LC_TIME != C results in locale.Error: unsupported locale setting
+    "--set" "LC_TIME" "C"
+    "--suffix" "LD_LIBRARY_PATH" ":" "${stdenv.lib.makeLibraryPath [ libpulseaudio ]}"
+  ];
+
+  postPatch = ''
+    makeWrapperArgs+=(--set GI_TYPELIB_PATH "$GI_TYPELIB_PATH")
+  '';
+
+  postInstall = ''
+    makeWrapper ${python3Packages.python.interpreter} $out/bin/${pname}-python-interpreter \
+      --prefix PYTHONPATH : "$PYTHONPATH" \
+      ''${makeWrapperArgs[@]}
+  '';
+
+  # no tests in tarball
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/enkore/i3pystatus";
+    description = "A complete replacement for i3status";
+    longDescription = ''
+      i3pystatus is a growing collection of python scripts for status output compatible
+      to i3status / i3bar of the i3 window manager.
+    '';
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.igsha ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/status-rust.nix b/nixpkgs/pkgs/applications/window-managers/i3/status-rust.nix
new file mode 100644
index 000000000000..8bd3d581434e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/i3/status-rust.nix
@@ -0,0 +1,30 @@
+{ stdenv, rustPlatform, fetchFromGitHub, pkgconfig, dbus, libpulseaudio }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "i3status-rust";
+  version = "0.14.1";
+
+  src = fetchFromGitHub {
+    owner = "greshake";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "11qhzjml04njhfa033v98m4yd522zj91s6ffvrm0m6sk7m0wyjsc";
+  };
+
+  cargoSha256 = "0jmmxld4rsjj6p5nazi3d8j1hh7r34q6kyfqq4wv0sjc77gcpaxd";
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ dbus libpulseaudio ];
+
+  # Currently no tests are implemented, so we avoid building the package twice
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Very resource-friendly and feature-rich replacement for i3status";
+    homepage = "https://github.com/greshake/i3status-rust";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ backuitist globin ma27 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/status.nix b/nixpkgs/pkgs/applications/window-managers/i3/status.nix
new file mode 100644
index 000000000000..6005ca3ab3a6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/i3/status.nix
@@ -0,0 +1,29 @@
+{ fetchurl, stdenv, libconfuse, yajl, alsaLib, libpulseaudio, libnl, pkgconfig, asciidoc, xmlto, docbook_xml_dtd_45, docbook_xsl }:
+
+stdenv.mkDerivation rec {
+  name = "i3status-2.13";
+
+  src = fetchurl {
+    url = "https://i3wm.org/i3status/${name}.tar.bz2";
+    sha256 = "0rhlzb96mw64z2jnhwz9nibc7pxg549626lz5642xxk5hpzwk2ff";
+  };
+
+  nativeBuildInputs = [ pkgconfig asciidoc xmlto docbook_xml_dtd_45 docbook_xsl ];
+  buildInputs = [ libconfuse yajl alsaLib libpulseaudio libnl ];
+
+  makeFlags = [ "all" "PREFIX=$(out)" ];
+
+  # This hack is needed because for unknown reasons configure generates a broken makefile on the 2.13 release under nixos
+  preBuild = ''
+    sed -i -e 's/\$(TEST_LOGS) \$(TEST_LOGS/\$(TEST_LOGS)/g' Makefile
+  '';
+
+  meta = {
+    description = "Generates a status line for i3bar, dzen2, xmobar or lemonbar";
+    homepage = "https://i3wm.org";
+    maintainers = [ ];
+    license = stdenv.lib.licenses.bsd3;
+    platforms = stdenv.lib.platforms.all;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/wk-switch.nix b/nixpkgs/pkgs/applications/window-managers/i3/wk-switch.nix
new file mode 100644
index 000000000000..51881975266d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/i3/wk-switch.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "i3-wk-switch";
+  version = "2020-03-18";
+
+  src = fetchFromGitHub {
+    owner = "tmfink";
+    repo = pname;
+    rev = "a618cb8f52120aa8d533bb7c0c8de3ff13b3dc06";
+    sha256 = "0ci0w5igjk5xa8x4rx17cpgmdkamwjmavxhp0vp6213cl93ybjhz";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ i3ipc ];
+
+  dontBuild = true;
+  doCheck = false;
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    cp i3-wk-switch.py "$out/bin/i3-wk-switch"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "XMonad-like workspace switching for i3 and sway";
+    maintainers = with maintainers; [ synthetica ];
+    platforms = platforms.linux;
+    license = licenses.mit;
+    homepage = "https://travisf.net/i3-wk-switcher";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/wmfocus.nix b/nixpkgs/pkgs/applications/window-managers/i3/wmfocus.nix
new file mode 100644
index 000000000000..c4e22546d1c4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/i3/wmfocus.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, rustPlatform
+, xorg, python3, pkgconfig, cairo, libxkbcommon }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "wmfocus";
+  version = "1.1.3";
+
+  src = fetchFromGitHub {
+    owner = "svenstaro";
+    repo = pname;
+    rev = version;
+    sha256 = "17qdsqp9072yr7rcm6g1h620rff95ldawr8ldpkbjmkh0rc86skn";
+  };
+
+  cargoSha256 = "1nsdvzrsgprwq7lsvfpymqslhggdzfk3840y8x92qjb0l2g4jhw1";
+
+  nativeBuildInputs = [ python3 pkgconfig ];
+  buildInputs = [ cairo libxkbcommon xorg.xcbutilkeysyms ];
+
+  # For now, this is the only available featureset. This is also why the file is
+  # in the i3 folder, even though it might be useful for more than just i3
+  # users.
+  cargoBuildFlags = [ "--features i3" ];
+
+  meta = with stdenv.lib; {
+    description = "Visually focus windows by label";
+    homepage = "https://github.com/svenstaro/wmfocus";
+    license = licenses.mit;
+    maintainers = with maintainers; [ synthetica ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/icewm/default.nix b/nixpkgs/pkgs/applications/window-managers/icewm/default.nix
new file mode 100644
index 000000000000..bacfb9674f6a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/icewm/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchFromGitHub, cmake, gettext, perl, asciidoc
+, libjpeg, libtiff, libungif, libpng, imlib, expat
+, freetype, fontconfig, pkgconfig, gdk-pixbuf, gdk-pixbuf-xlib, glib
+, mkfontdir, libX11, libXft, libXext, libXinerama
+, libXrandr, libICE, libSM, libXpm, libXdmcp, libxcb
+, libpthreadstubs, pcre, libXdamage, libXcomposite, libXfixes
+, libsndfile, fribidi }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  pname = "icewm";
+  version = "1.6.6";
+
+  src = fetchFromGitHub {
+    owner  = "bbidulock";
+    repo   = "icewm";
+    rev    = version;
+    sha256 = "05jg2gs5cdxn2kfm2y6yrqxpza5s1zsgb52168psmzhb4nakpv42";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig perl asciidoc ];
+
+  buildInputs = [
+    gettext libjpeg libtiff libungif libpng imlib expat
+    freetype fontconfig gdk-pixbuf gdk-pixbuf-xlib glib mkfontdir libX11
+    libXft libXext libXinerama libXrandr libICE libSM libXpm
+    libXdmcp libxcb libpthreadstubs pcre libsndfile fribidi
+    libXdamage libXcomposite libXfixes
+  ];
+
+  cmakeFlags = [ "-DPREFIX=$out" "-DCFGDIR=/etc/icewm" ];
+
+  # install legacy themes
+  postInstall = ''
+    cp -r ../lib/themes/{gtk2,Natural,nice,nice2,warp3,warp4,yellowmotif} $out/share/icewm/themes/
+  '';
+
+  meta = {
+    description = "A simple, lightweight X window manager";
+    longDescription = ''
+      IceWM is a window manager for the X Window System. The goal of
+      IceWM is speed, simplicity, and not getting in the user's way.
+    '';
+    homepage = "https://www.ice-wm.org/";
+    license = licenses.lgpl2;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/ion-3/default.nix b/nixpkgs/pkgs/applications/window-managers/ion-3/default.nix
new file mode 100644
index 000000000000..57c91c2cfb72
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/ion-3/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl, xlibsWrapper, lua, gettext, groff }:
+
+stdenv.mkDerivation {
+  name = "ion-3-20090110";
+  meta = {
+    description = "Tiling tabbed window manager designed with keyboard users in mind";
+    homepage = "http://modeemi.fi/~tuomov/ion";
+    platforms = with stdenv.lib.platforms; linux;
+    license = stdenv.lib.licenses.lgpl21;
+  };
+  src = fetchurl {
+    url = "http://tuomov.iki.fi/software/dl/ion-3-20090110.tar.gz";
+    sha256 = "1nkks5a95986nyfkxvg2rik6zmwx0lh7szd5fji7yizccwzc9xns";
+  };
+  buildInputs = [ xlibsWrapper lua gettext groff ];
+  buildFlags = [ "LUA_DIR=${lua}" "X11_PREFIX=/no-such-path" "PREFIX=\${out}" ];
+  installFlags = [ "PREFIX=\${out}" ];
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/jwm/default.nix b/nixpkgs/pkgs/applications/window-managers/jwm/default.nix
new file mode 100644
index 000000000000..601cf3cded6c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/jwm/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, pkgconfig, automake, autoconf, libtool,
+  gettext, which, xorg, libX11, libXext, libXinerama, libXpm, libXft,
+  libXau, libXdmcp, libXmu, libpng, libjpeg, expat, xorgproto,
+  librsvg, freetype, fontconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "jwm";
+  version = "1685";
+  
+  src = fetchFromGitHub {
+    owner = "joewing";
+    repo = "jwm";
+    rev = "s${version}";
+    sha256 = "1kyvy022sij898g2hm5spy5vq0kw6aqd7fsnawl2xyh06gwh29wg";
+  };
+
+  nativeBuildInputs = [ pkgconfig automake autoconf libtool gettext which ];
+
+  buildInputs = [ libX11 libXext libXinerama libXpm libXft xorg.libXrender
+    libXau libXdmcp libXmu libpng libjpeg expat xorgproto
+    librsvg freetype fontconfig ];
+
+  enableParallelBuilding = true;
+
+  preConfigure = "./autogen.sh";
+
+  meta = {
+    homepage = "http://joewing.net/projects/jwm/";
+    description = "Joe's Window Manager is a light-weight X11 window manager";
+    license = stdenv.lib.licenses.gpl2;
+    platforms   = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/jwm/jwm-settings-manager.nix b/nixpkgs/pkgs/applications/window-managers/jwm/jwm-settings-manager.nix
new file mode 100644
index 000000000000..d6fe5b4200c4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/jwm/jwm-settings-manager.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, gettext, libXpm, libGL, fltk, hicolor-icon-theme, glib, gnome2, which }:
+
+stdenv.mkDerivation {
+  pname = "jwm-settings-manager";
+  version = "2018-10-19";
+  
+  src = fetchFromGitHub {
+    owner = "Israel-D";
+    repo = "jwm-settings-manager";
+    rev = "cb32a70563cf1f3927339093481542b85ec3c8c8";
+    sha256 = "0d5bqf74p8zg8azns44g46q973blhmp715k8kcd73x88g7sfir8s";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkgconfig
+    gettext
+  ];
+
+  buildInputs = [
+    libXpm
+    libGL
+    fltk
+    hicolor-icon-theme
+    which # needed at runtime to locate optional programs
+    glib.bin # provides gsettings
+    gnome2.GConf # provides gconftool-2
+  ];
+
+  postPatch = ''
+    substituteInPlace CMakeLists.txt \
+      --replace 'CMAKE_INSTALL_PREFIX "/usr"' "CMAKE_INSTALL_PREFIX $out"
+    substituteInPlace data/CMakeLists.txt \
+      --replace 'DESTINATION usr/share' "DESTINATION share"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A full configuration manager for JWM";
+    homepage = "https://joewing.net/projects/jwm";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/kbdd/default.nix b/nixpkgs/pkgs/applications/window-managers/kbdd/default.nix
new file mode 100644
index 000000000000..de1a68a56bfb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/kbdd/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub, pkgconfig, dbus-glib, autoreconfHook, xorg }:
+
+stdenv.mkDerivation {
+  pname = "kbdd";
+  version = "unstable-2017-01-29";
+
+  src = fetchFromGitHub {
+    owner = "qnikst";
+    repo = "kbdd";
+    rev = "0e1056f066ab6e3c74fd0db0c9710a9a2b2538c3";
+    sha256 = "068iqkqxh7928xlmz2pvnykszn9bcq2qgkkiwf37k1vm8fdmgzlj";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ xorg.libX11 dbus-glib ];
+
+  meta = {
+    description = "Simple daemon and library to make per window layout using XKB";
+    homepage = "https://github.com/qnikst/kbdd";
+    license = stdenv.lib.licenses.gpl3;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.wedens ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/larswm/default.nix b/nixpkgs/pkgs/applications/window-managers/larswm/default.nix
new file mode 100644
index 000000000000..b918c28938c1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/larswm/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, imake, gccmakedep, libX11, libXext, libXmu }:
+
+stdenv.mkDerivation {
+  name = "larswm-7.5.3";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/larswm/larswm-7.5.3.tar.gz";
+    sha256 = "1xmlx9g1nhklxjrg0wvsya01s4k5b9fphnpl9zdwp29mm484ni3v";
+  };
+
+  nativeBuildInputs = [ imake gccmakedep ];
+  buildInputs = [ libX11 libXext libXmu ];
+
+  makeFlags = [ "BINDIR=$(out)/bin" "MANPATH=$(out)/share/man" ];
+  installTargets = [ "install" "install.man" ];
+
+  meta = {
+    homepage = "http://www.fnurt.net/larswm";
+    description = "9wm-like tiling window manager";
+    license = stdenv.lib.licenses.free;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/leftwm/default.nix b/nixpkgs/pkgs/applications/window-managers/leftwm/default.nix
new file mode 100644
index 000000000000..ade3904b95c2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/leftwm/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, rustPlatform, libX11, libXinerama, makeWrapper }:
+
+let
+    rpath = stdenv.lib.makeLibraryPath [ libXinerama libX11 ];
+in
+
+rustPlatform.buildRustPackage rec {
+  pname = "leftwm";
+  version = "0.2.2";
+
+  src = fetchFromGitHub {
+    owner = "leftwm";
+    repo = "leftwm";
+    rev = version;
+    sha256 = "0x8cqc7zay19jxy7cshayjjwwjrcblqpmqrxipm2g5hhyjghk6q0";
+  };
+
+  cargoSha256 = "1kphv3vnr8ij7raf0niwz3rwly986xi5fgwqg2ya0r46ifqkgvrc";
+
+  buildInputs = [ makeWrapper libX11 libXinerama ];
+
+  postInstall = ''
+    wrapProgram $out/bin/leftwm --prefix LD_LIBRARY_PATH : "${rpath}"
+    wrapProgram $out/bin/leftwm-state --prefix LD_LIBRARY_PATH : "${rpath}"
+    wrapProgram $out/bin/leftwm-worker --prefix LD_LIBRARY_PATH : "${rpath}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Leftwm - A tiling window manager for the adventurer";
+    homepage = "https://github.com/leftwm/leftwm";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ mschneider ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/lemonbar/default.nix b/nixpkgs/pkgs/applications/window-managers/lemonbar/default.nix
new file mode 100644
index 000000000000..89b4fecc2067
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/lemonbar/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, perl, libxcb }:
+
+stdenv.mkDerivation {
+  name = "lemonbar-1.3";
+  
+  src = fetchurl {
+    url    = "https://github.com/LemonBoy/bar/archive/v1.3.tar.gz";
+    sha256 = "0zd3v8ys4jzi60pm3wq7p3pbbd5y0acimgiq46qx1ckmwg2q9rza";
+  };
+  
+  buildInputs = [ libxcb perl ];
+  
+  prePatch = ''sed -i "s@/usr@$out@" Makefile'';
+  
+  meta = with stdenv.lib; {
+    description = "A lightweight xcb based bar";
+    homepage = "https://github.com/LemonBoy/bar";
+    maintainers = [ maintainers.meisternu ];
+    license = "Custom";   
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/lemonbar/xft.nix b/nixpkgs/pkgs/applications/window-managers/lemonbar/xft.nix
new file mode 100644
index 000000000000..a70e5a4dc5c0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/lemonbar/xft.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, perl, libxcb, libXft }:
+
+stdenv.mkDerivation {
+  name = "lemonbar-xft-unstable-2016-02-17";
+
+  src = fetchFromGitHub {
+    owner  = "krypt-n";
+    repo   = "bar";
+    rev    = "a43b801ddc0f015ce8b1211f4c062fad12cd63a9";
+    sha256 = "0iqas07qjvabxyvna2m9aj5bcwnkdii1izl9jxha63vz0zlsc4gd";
+  };
+
+  buildInputs = [ libxcb libXft perl ];
+
+  prePatch = ''sed -i "s@/usr@$out@" Makefile'';
+
+  meta = {
+    description = "A lightweight xcb based bar with XFT-support";
+    homepage = "https://github.com/krypt-n/bar";
+    license = "Custom";
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/lwm/default.nix b/nixpkgs/pkgs/applications/window-managers/lwm/default.nix
new file mode 100644
index 000000000000..49cdc81b9ce0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/lwm/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl
+, imake, libX11, libSM, libXext, libICE }:
+
+stdenv.mkDerivation rec {
+  pname = "lwm";
+  version = "1.2.4";
+
+  src = fetchurl {
+    url = "http://www.jfc.org.uk/files/lwm/${pname}-${version}.tar.gz";
+    sha256 = "1bcdr173f0gl61fyl43p3gr145angci7lvjqb8rl00y9f9amvh3y";
+  };
+
+  nativeBuildInputs = [ imake ];
+
+  buildInputs = [ libX11 libSM libXext libICE ];
+
+  dontConfigure = true;
+
+  preBuild = ''
+    sed -i 's|^LOCAL_LIBRARIES.*|& $(ICELIB)|' Imakefile
+    xmkmf
+  '';
+
+  installPhase = ''
+    install -dm755 $out/bin $out/share/man/man1
+    install -m755 lwm $out/bin/lwm
+    install -m644 lwm.man $out/share/man/man1/lwm.1
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Lightweight Window Manager";
+    longDescription = ''
+      lwm is a window manager for X that tries to keep out of your face. There
+      are no icons, no button bars, no icon docks, no root menus, no nothing: if
+      you want all that, then other programs can provide it. There's no
+      configurability either: if you want that, you want a different window
+      manager; one that helps your operating system in its evil conquest of your
+      disc space and its annexation of your physical memory.
+    '';
+    homepage = "http://www.jfc.org.uk/software/lwm.html";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/matchbox/default.nix b/nixpkgs/pkgs/applications/window-managers/matchbox/default.nix
new file mode 100644
index 000000000000..3c537d6c931b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/matchbox/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pkgconfig, libmatchbox, libX11, libXext }:
+
+stdenv.mkDerivation rec {
+  pname = "matchbox";
+  version = "1.2";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libmatchbox ];
+  NIX_LDFLAGS = "-lX11 -L${libX11}/lib -lXext -L${libXext}/lib";
+
+  src = fetchurl {
+    url = "https://downloads.yoctoproject.org/releases/matchbox/matchbox-window-manager/${version}/matchbox-window-manager-${version}.tar.bz2";
+    sha256 = "1zyfq438b466ygcz78nvsmnsc5bhg4wcfnpxb43kbkwpyx53m8l1";
+  };
+
+  meta = {
+    description = "X window manager for non-desktop embedded systems";
+    homepage = "https://www.yoctoproject.org/software-item/matchbox/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/neocomp/default.nix b/nixpkgs/pkgs/applications/window-managers/neocomp/default.nix
new file mode 100644
index 000000000000..57968922c390
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/neocomp/default.nix
@@ -0,0 +1,85 @@
+{ stdenv
+, fetchFromGitHub
+, asciidoc
+, docbook_xml_dtd_45
+, docbook_xsl
+, freetype
+, judy
+, libGL
+, libconfig
+, libdrm
+, libxml2
+, libxslt
+, libXcomposite
+, libXdamage
+, libXext
+, libXinerama
+, libXrandr
+, libXrender
+, pcre
+, pkgconfig
+}:
+let
+  rev   = "v0.6-17-g271e784";
+in
+stdenv.mkDerivation rec {
+  pname = "neocomp-unstable";
+  version = "2019-03-12";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner  = "DelusionalLogic";
+    repo   = "NeoComp";
+    sha256 = "1mp338vz1jm5pwf7pi5azx4hzykmvpkwzx1kw6a9anj272f32zpg";
+  };
+
+  buildInputs = [
+    asciidoc
+    docbook_xml_dtd_45
+    docbook_xsl
+    freetype
+    judy
+    libGL
+    libconfig
+    libdrm
+    libxml2
+    libxslt
+    libXcomposite
+    libXdamage
+    libXext
+    libXinerama
+    libXrandr
+    libXrender
+    pcre
+    pkgconfig
+  ];
+
+  makeFlags = [
+    "PREFIX=${placeholder "out"}"
+    "CFGDIR=${placeholder "out"}/etc/xdg/neocomp"
+    "ASTDIR=${placeholder "out"}/share/neocomp/assets"
+    "COMPTON_VERSION=git-${rev}-${version}"
+  ];
+
+  postPatch = ''
+    substituteInPlace src/compton.c --replace \
+      "assets_add_path(\"./assets/\");" \
+      "assets_add_path(\"$out/share/neocomp/assets/\");"
+    substituteInPlace src/assets/assets.c --replace \
+      "#define MAX_PATH_LENGTH 64" \
+      "#define MAX_PATH_LENGTH 128"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage        = "https://github.com/DelusionalLogic/NeoComp";
+    license         = licenses.gpl3;
+    maintainers     = with maintainers; [ twey ];
+    platforms       = platforms.linux;
+    description     = "A fork of Compton, a compositor for X11";
+    longDescription = ''
+      NeoComp is a (hopefully) fast and (hopefully) simple compositor
+      for X11, focused on delivering frames from the window to the
+      framebuffer as quickly as possible.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/notion/default.nix b/nixpkgs/pkgs/applications/window-managers/notion/default.nix
new file mode 100644
index 000000000000..c18b2129f098
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/notion/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, pkgconfig
+, lua, gettext, which, groff, xmessage, xterm
+, readline, fontconfig, libX11, libXext, libSM
+, libXinerama, libXrandr, libXft
+, xlibsWrapper, makeWrapper
+}:
+
+stdenv.mkDerivation rec {
+  pname = "notion";
+  version = "4.0.0";
+
+  src = fetchFromGitHub {
+    owner = "raboof";
+    repo = pname;
+    rev = version;
+    sha256 = "0rqfvwkj0j862hf6i4wsmb6185xibsskfj9kwy896qcpcg8w4kk7";
+  };
+
+  nativeBuildInputs = [ pkgconfig makeWrapper groff ];
+  buildInputs = [ lua gettext which readline fontconfig libX11 libXext libSM
+                  libXinerama libXrandr libXft xlibsWrapper ];
+
+  buildFlags = [ "LUA_DIR=${lua}" "X11_PREFIX=/no-such-path" ];
+
+  makeFlags = [ "NOTION_RELEASE=${version}" "PREFIX=\${out}" ];
+
+  postInstall = ''
+    wrapProgram $out/bin/notion \
+      --prefix PATH ":" "${xmessage}/bin:${xterm}/bin" \
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Tiling tabbed window manager";
+    homepage = "https://notionwm.net";
+    license   = licenses.lgpl21;
+    maintainers = with maintainers; [ jfb AndersonTorres raboof ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/openbox/default.nix b/nixpkgs/pkgs/applications/window-managers/openbox/default.nix
new file mode 100644
index 000000000000..39329e8004c5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/openbox/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, fetchurl, autoreconfHook, pkgconfig, python3
+, libxml2, libXinerama, libXcursor, libXau, libXrandr, libICE, libSM
+, imlib2, pango, libstartup_notification, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "openbox";
+  version = "3.6.1";
+
+  nativeBuildInputs = [
+    autoreconfHook
+    pkgconfig
+    makeWrapper
+    python3.pkgs.wrapPython
+  ];
+
+  buildInputs = [
+    libxml2
+    libXinerama libXcursor libXau libXrandr libICE libSM
+    libstartup_notification
+    python3
+  ];
+
+  propagatedBuildInputs = [
+    pango imlib2
+  ];
+
+  pythonPath = with python3.pkgs; [
+    pyxdg
+  ];
+
+  src = fetchurl {
+    url = "http://openbox.org/dist/openbox/${pname}-${version}.tar.gz";
+    sha256 = "1xvyvqxlhy08n61rjkckmrzah2si1i7nmc7s8h07riqq01vc0jlb";
+  };
+
+  setlayoutSrc = fetchurl {
+    url = "http://openbox.org/dist/tools/setlayout.c";
+    sha256 = "1ci9lq4qqhl31yz1jwwjiawah0f7x0vx44ap8baw7r6rdi00pyiv";
+  };
+
+  patches = [
+    # Use fetchurl to avoid "fetchpatch: ignores file renames" #32084
+    # This patch adds python3 support
+    (fetchurl {
+      url = "https://git.archlinux.org/svntogit/community.git/plain/openbox/trunk/py3.patch?id=90cb57ef53d952bb6ab4c33a184f815bbe1791c0";
+      sha256 = "1ks99awlkhd5ph9kz94s1r6m1bfvh42g4rmxd14dyg5b421p1ljc";
+    })
+  ];
+
+  postBuild = "gcc -O2 -o setlayout $(pkg-config --cflags --libs x11) $setlayoutSrc";
+
+  # Openbox needs XDG_DATA_DIRS set or it can't find its default theme
+  postInstall = ''
+    cp -a setlayout "$out"/bin
+    wrapProgram "$out/bin/openbox" --prefix XDG_DATA_DIRS : "$out/share"
+    wrapProgram "$out/bin/openbox-session" --prefix XDG_DATA_DIRS : "$out/share"
+    wrapProgram "$out/bin/openbox-gnome-session" --prefix XDG_DATA_DIRS : "$out/share"
+    wrapProgram "$out/bin/openbox-kde-session" --prefix XDG_DATA_DIRS : "$out/share"
+    wrapPythonProgramsIn "$out/libexec" "$out $pythonPath"
+  '';
+
+  meta = {
+    description = "X window manager for non-desktop embedded systems";
+    homepage = "http://openbox.org/";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/oroborus/default.nix b/nixpkgs/pkgs/applications/window-managers/oroborus/default.nix
new file mode 100644
index 000000000000..21b18a4917bd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/oroborus/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, pkgconfig
+, freetype, fribidi
+, libSM, libICE, libXt, libXaw, libXmu
+, libXext, libXft, libXpm, libXrandr
+, libXrender, xorgproto, libXinerama }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+
+  pname = "oroborus";
+  version = "2.0.20";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ freetype fribidi libSM libICE libXt libXaw libXmu libXext
+                  libXft libXpm libXrandr libXrender xorgproto libXinerama ];
+
+  src = fetchurl {
+    url = "http://ftp.debian.org/debian/pool/main/o/oroborus/oroborus_${version}.tar.gz";
+    sha256 = "12bvk8x8rfnymbfbwmdcrd9g8m1zxbcq7rgvfdkjr0gnpi0aa82j";
+  };
+
+  meta = {
+    description = "A really minimalistic X window manager";
+    homepage = "https://www.oroborus.org/";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/pekwm/default.nix b/nixpkgs/pkgs/applications/window-managers/pekwm/default.nix
new file mode 100644
index 000000000000..da2c11c873b1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/pekwm/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, pkgconfig
+, libpng, libjpeg
+, libXext, libXft, libXpm, libXrandr, libXinerama }:
+
+stdenv.mkDerivation rec {
+
+  pname = "pekwm";
+  version = "0.1.17";
+
+  src = fetchurl {
+    url = "https://www.pekwm.org/projects/pekwm/files/${pname}-${version}.tar.bz2";
+    sha256 = "003x6bxj1lb2ljxz3v414bn0rdl6z68c0r185fxwgs1qkyzx67wa";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libpng libjpeg
+  libXext libXft libXpm libXrandr libXinerama ];
+
+  meta = with stdenv.lib; {
+    description = "A lightweight window manager";
+    longDescription = ''
+      pekwm is a window manager that once upon a time was based on the
+      aewm++ window manager, but it has evolved enough that it no
+      longer resembles aewm++ at all. It has a much expanded
+      feature-set, including window grouping (similar to ion, pwm, or
+      fluxbox), autoproperties, xinerama, keygrabber that supports
+      keychains, and much more.      
+      - Lightweight and Unobtrusive, a window manager shouldn't be
+        noticed.
+      - Very configurable, we all work and think in different ways.
+      - Automatic properties, for all the lazy people, make things
+        appear as they should when starting applications.
+      - Chainable Keygrabber, usability for everyone.
+    '';
+      homepage = "http://www.pekwm.org";
+      license = licenses.gpl2;
+      maintainers = [ maintainers.AndersonTorres ];
+      platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/picom/default.nix b/nixpkgs/pkgs/applications/window-managers/picom/default.nix
new file mode 100644
index 000000000000..8ea724aa694a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/picom/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, lib, fetchFromGitHub, pkgconfig, uthash, asciidoc, docbook_xml_dtd_45
+, docbook_xsl, libxslt, libxml2, makeWrapper, meson, ninja
+, xorgproto, libxcb ,xcbutilrenderutil, xcbutilimage, pixman, libev
+, dbus, libconfig, libdrm, libGL, pcre, libX11
+, libXinerama, libXext, xwininfo, libxdg_basedir }:
+
+stdenv.mkDerivation rec {
+  pname = "picom";
+  version = "8";
+
+  src = fetchFromGitHub {
+    owner  = "yshui";
+    repo   = "picom";
+    rev    = "v${version}";
+    sha256 = "04svbv7v73q8yn9la69451rda6l2pgxcphv2zlkdqaxxdbp69195";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    meson ninja
+    pkgconfig
+    uthash
+    asciidoc
+    docbook_xml_dtd_45
+    docbook_xsl
+    makeWrapper
+  ];
+
+  buildInputs = [
+    dbus libX11 libXext
+    xorgproto
+    libXinerama libdrm pcre libxml2 libxslt libconfig libGL
+    libxcb xcbutilrenderutil xcbutilimage
+    pixman libev
+    libxdg_basedir
+  ];
+
+  NIX_CFLAGS_COMPILE = "-fno-strict-aliasing";
+
+  mesonFlags = [
+    "-Dbuild_docs=true"
+  ];
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  postInstall = ''
+    wrapProgram $out/bin/picom-trans \
+      --prefix PATH : ${lib.makeBinPath [ xwininfo ]}
+  '';
+
+  meta = with lib; {
+    description = "A fork of XCompMgr, a sample compositing manager for X servers";
+    longDescription = ''
+      A fork of XCompMgr, which is a sample compositing manager for X
+      servers supporting the XFIXES, DAMAGE, RENDER, and COMPOSITE
+      extensions. It enables basic eye-candy effects. This fork adds
+      additional features, such as additional effects, and a fork at a
+      well-defined and proper place.
+    '';
+    license = licenses.mit;
+    homepage = "https://github.com/yshui/picom";
+    maintainers = with maintainers; [ ertes enzime twey ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/qtile/0001-Substitution-vars-for-absolute-paths.patch b/nixpkgs/pkgs/applications/window-managers/qtile/0001-Substitution-vars-for-absolute-paths.patch
new file mode 100644
index 000000000000..219d6dcbe207
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/qtile/0001-Substitution-vars-for-absolute-paths.patch
@@ -0,0 +1,30 @@
+diff --git a/libqtile/pangocffi.py b/libqtile/pangocffi.py
+index 1e8f5c04..e860d43a 100644
+--- a/libqtile/pangocffi.py
++++ b/libqtile/pangocffi.py
+@@ -58,9 +58,9 @@ except ImportError:
+     else:
+         raise ImportError("No module named libqtile._ffi_pango, be sure to run `python ./libqtile/ffi_build.py`")
+ 
+-gobject = ffi.dlopen('libgobject-2.0.so.0')
+-pango = ffi.dlopen('libpango-1.0.so.0')
+-pangocairo = ffi.dlopen('libpangocairo-1.0.so.0')
++gobject = ffi.dlopen('@glib@/lib/libgobject-2.0.so.0')
++pango = ffi.dlopen('@pango@/lib/libpango-1.0.so.0')
++pangocairo = ffi.dlopen('@pango@/lib/libpangocairo-1.0.so.0')
+ 
+ 
+ def CairoContext(cairo_t):
+diff --git a/libqtile/xcursors.py b/libqtile/xcursors.py
+index f1133555..3e61204a 100644
+--- a/libqtile/xcursors.py
++++ b/libqtile/xcursors.py
+@@ -112,7 +112,7 @@ class Cursors(dict):
+ 
+     def _setup_xcursor_binding(self):
+         try:
+-            xcursor = ffi.dlopen('libxcb-cursor.so.0')
++            xcursor = ffi.dlopen('@xcb-cursor@/lib/libxcb-cursor.so.0')
+         except OSError:
+             logger.warning("xcb-cursor not found, fallback to font pointer")
+             return False
diff --git a/nixpkgs/pkgs/applications/window-managers/qtile/0002-Restore-PATH-and-PYTHONPATH.patch b/nixpkgs/pkgs/applications/window-managers/qtile/0002-Restore-PATH-and-PYTHONPATH.patch
new file mode 100644
index 000000000000..a01f14062f1d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/qtile/0002-Restore-PATH-and-PYTHONPATH.patch
@@ -0,0 +1,60 @@
+diff --git a/bin/qshell b/bin/qshell
+index 2ba7e61c..0ac2a2ef 100755
+--- a/bin/qshell
++++ b/bin/qshell
+@@ -28,5 +28,6 @@ base_dir = os.path.abspath(os.path.join(this_dir, ".."))
+ sys.path.insert(0, base_dir)
+ 
+ if __name__ == '__main__':
++    __import__("importlib").import_module("libqtile.utils").restore_os_environment()
+     from libqtile.scripts import qshell
+     qshell.main()
+diff --git a/bin/qtile b/bin/qtile
+index 3e82814d..335b5cea 100755
+--- a/bin/qtile
++++ b/bin/qtile
+@@ -29,5 +29,6 @@ base_dir = os.path.abspath(os.path.join(this_dir, ".."))
+ sys.path.insert(0, base_dir)
+ 
+ if __name__ == '__main__':
++    __import__("importlib").import_module("libqtile.utils").restore_os_environment()
+     from libqtile.scripts import qtile
+     qtile.main()
+diff --git a/bin/qtile-run b/bin/qtile-run
+index e4b121be..1c203bc9 100755
+--- a/bin/qtile-run
++++ b/bin/qtile-run
+@@ -8,5 +8,6 @@ base_dir = os.path.abspath(os.path.join(this_dir, ".."))
+ sys.path.insert(0, base_dir)
+ 
+ if __name__ == '__main__':
++    __import__("importlib").import_module("libqtile.utils").restore_os_environment()
+     from libqtile.scripts import qtile_run
+     qtile_run.main()
+diff --git a/bin/qtile-top b/bin/qtile-top
+index 5316e0e7..272c6430 100755
+--- a/bin/qtile-top
++++ b/bin/qtile-top
+@@ -8,5 +8,6 @@ base_dir = os.path.abspath(os.path.join(this_dir, ".."))
+ sys.path.insert(0, base_dir)
+ 
+ if __name__ == '__main__':
++    __import__("importlib").import_module("libqtile.utils").restore_os_environment()
+     from libqtile.scripts import qtile_top
+     qtile_top.main()
+diff --git a/libqtile/utils.py b/libqtile/utils.py
+index 550ed02677e..1358a66f3df 100644
+--- a/libqtile/utils.py
++++ b/libqtile/utils.py
+@@ -272,3 +272,11 @@ def safe_import(module_names, class_name, globals_, fallback=None):
+         logger.debug("%s", traceback.format_exc())
+         if fallback:
+             globals_[class_name] = fallback(module_path, class_name, error)
++
++
++def restore_os_environment():
++    pythonpath = os.environ.pop("QTILE_SAVED_PYTHONPATH", "")
++    os.environ["PYTHONPATH"] = pythonpath
++    path = os.environ.pop("QTILE_SAVED_PATH", None)
++    if path:
++        os.environ["PATH"] = path
diff --git a/nixpkgs/pkgs/applications/window-managers/qtile/0003-Restart-executable.patch b/nixpkgs/pkgs/applications/window-managers/qtile/0003-Restart-executable.patch
new file mode 100644
index 000000000000..87fd19773794
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/qtile/0003-Restart-executable.patch
@@ -0,0 +1,13 @@
+diff --git a/libqtile/manager.py b/libqtile/manager.py
+index fc198e9bae7..860b97d8db1 100644
+--- a/libqtile/manager.py
++++ b/libqtile/manager.py
+@@ -1402,7 +1402,7 @@ class Qtile(command.CommandObject):
+             logger.error("Unable to pickle qtile state")
+         argv = [s for s in argv if not s.startswith('--with-state')]
+         argv.append('--with-state=' + buf.getvalue().decode())
+-        self._restart = (sys.executable, argv)
++        self._restart = (os.environ.get("QTILE_WRAPPER", "@out@/bin/qtile"), argv[1:])
+         self.stop()
+ 
+     def cmd_spawn(self, cmd):
diff --git a/nixpkgs/pkgs/applications/window-managers/qtile/default.nix b/nixpkgs/pkgs/applications/window-managers/qtile/default.nix
new file mode 100644
index 000000000000..eb56e9c16390
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/qtile/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchFromGitHub, python37Packages, glib, cairo, pango, pkgconfig, libxcb, xcbutilcursor }:
+
+let cairocffi-xcffib = python37Packages.cairocffi.override {
+    withXcffib = true;
+  };
+in
+
+python37Packages.buildPythonApplication rec {
+  name = "qtile-${version}";
+  version = "0.13.0";
+
+  src = fetchFromGitHub {
+    owner = "qtile";
+    repo = "qtile";
+    rev = "v${version}";
+    sha256 = "1lyclnn8hs6wl4w9v5b4hh2q0pvmsn7cyibpskhbpw0cgv7bvi90";
+  };
+
+  patches = [
+    ./0001-Substitution-vars-for-absolute-paths.patch
+    ./0002-Restore-PATH-and-PYTHONPATH.patch
+    ./0003-Restart-executable.patch
+  ];
+
+  postPatch = ''
+    substituteInPlace libqtile/manager.py --subst-var-by out $out
+    substituteInPlace libqtile/pangocffi.py --subst-var-by glib ${glib.out}
+    substituteInPlace libqtile/pangocffi.py --subst-var-by pango ${pango.out}
+    substituteInPlace libqtile/xcursors.py --subst-var-by xcb-cursor ${xcbutilcursor.out}
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ glib libxcb cairo pango python37Packages.xcffib ];
+
+  pythonPath = with python37Packages; [ xcffib cairocffi-xcffib setuptools ];
+
+  postInstall = ''
+    wrapProgram $out/bin/qtile \
+      --run 'export QTILE_WRAPPER=$0' \
+      --run 'export QTILE_SAVED_PYTHONPATH=$PYTHONPATH' \
+      --run 'export QTILE_SAVED_PATH=$PATH'
+  '';
+
+  doCheck = false; # Requires X server.
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.qtile.org/";
+    license = licenses.mit;
+    description = "A small, flexible, scriptable tiling window manager written in Python";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ kamilchm ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/ratpoison/default.nix b/nixpkgs/pkgs/applications/window-managers/ratpoison/default.nix
new file mode 100644
index 000000000000..4c7cdf1069f9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/ratpoison/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, fetchurl, pkgconfig, perl, autoconf, automake
+, libX11, xorgproto, libXt, libXpm, libXft, libXtst, libXi
+, libXrandr, fontconfig, freetype, readline
+}:
+
+stdenv.mkDerivation rec {
+  pname = "ratpoison";
+  version = "1.4.9";
+
+  src = fetchurl {
+    url = "mirror://savannah/ratpoison/${pname}-${version}.tar.xz";
+    sha256 = "1wfir1gvh5h7izgvx2kd1pr2k7wlncd33zq7qi9s9k2y0aza93yr";
+  };
+
+  outputs = [ "out" "contrib" "man" "doc" "info" ];
+
+  configureFlags = [
+    # >=1.4.9 requires this even with readline in inputs
+    "--enable-history"
+  ];
+
+  nativeBuildInputs = [ pkgconfig autoconf automake ];
+
+  buildInputs =
+    [ perl
+      libX11 xorgproto libXt libXpm libXft libXtst libXi libXrandr
+      fontconfig freetype readline ];
+
+  postInstall = ''
+    mkdir -p $contrib/{bin,share}
+    mv $out/bin/rpws $contrib/bin
+    mv $out/share/ratpoison $contrib/share
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.nongnu.org/ratpoison/";
+    description = "Simple mouse-free tiling window manager";
+    license = licenses.gpl2Plus;
+
+    longDescription = ''
+       Ratpoison is a simple window manager with no fat library
+       dependencies, no fancy graphics, no window decorations, and no
+       rodent dependence.  It is largely modelled after GNU Screen which
+       has done wonders in the virtual terminal market.
+
+       The screen can be split into non-overlapping frames.  All windows
+       are kept maximized inside their frames to take full advantage of
+       your precious screen real estate.
+
+       All interaction with the window manager is done through keystrokes.
+       Ratpoison has a prefix map to minimize the key clobbering that
+       cripples Emacs and other quality pieces of software.
+    '';
+
+    platforms = platforms.unix;
+    maintainers = [ maintainers.AndersonTorres ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/sawfish/default.nix b/nixpkgs/pkgs/applications/window-managers/sawfish/default.nix
new file mode 100644
index 000000000000..18c3d22f944e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/sawfish/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl
+, pkgconfig, which, autoreconfHook
+, rep-gtk, pango, gdk-pixbuf
+, imlib, gettext, texinfo
+, libXinerama, libXrandr, libXtst, libICE, libSM
+, makeWrapper
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+
+  pname = "sawfish";
+  version = "1.12.90";
+  sourceName = "sawfish_${version}";
+
+  src = fetchurl {
+    url = "https://download.tuxfamily.org/sawfish/${sourceName}.tar.xz";
+    sha256 = "18p8srqqj9vjffg13qhspfz2gr1h4vfs10qzlv89g76r289iam31";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ which
+    rep-gtk pango gdk-pixbuf imlib gettext texinfo
+    libXinerama libXrandr libXtst libICE libSM
+    makeWrapper ];
+
+  patchPhase = ''
+    sed -e 's|REP_DL_LOAD_PATH=|REP_DL_LOAD_PATH=$(REP_DL_LOAD_PATH):|g' -i Makedefs.in
+    sed -e 's|$(repexecdir)|$(libdir)/rep|g' -i src/Makefile.in
+  '';
+
+  postInstall = ''
+    for i in $out/lib/sawfish/sawfish-menu $out/bin/sawfish-about  $out/bin/sawfish-client $out/bin/sawfish-config $out/bin/sawfish; do
+      wrapProgram $i \
+        --prefix REP_DL_LOAD_PATH : "$out/lib/rep" \
+        --set REP_LOAD_PATH "$out/share/sawfish/lisp"
+    done
+  '';
+
+  meta = {
+    description = "An extensible, Lisp-based window manager";
+    longDescription = ''
+      Sawfish is an extensible window manager using a Lisp-based scripting language.
+      Its policy is very minimal compared to most window managers. Its aim is simply
+      to manage windows in the most flexible and attractive manner possible.
+      All high-level WM functions are implemented in Lisp for future extensibility
+      or redefinition.
+    '';
+    homepage = "http://sawfish.wikia.com";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.AndersonTorres ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/smallwm/default.nix b/nixpkgs/pkgs/applications/window-managers/smallwm/default.nix
new file mode 100644
index 000000000000..b6d3821e8d06
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/smallwm/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub
+, doxygen, graphviz, libX11, libXrandr }:
+
+stdenv.mkDerivation rec {
+
+  pname = "smallwm";
+  version = "2020-02-28";
+
+  src = fetchFromGitHub {
+    owner = "adamnew123456";
+    repo = "SmallWM";
+    rev = "c2dc72afa87241bcf7e646630f4aae216ce78613";
+    sha256 = "0cqhy81ymdcdyvgi55a401rr96h2akskcxi9ddzjbln4a71yjlz8";
+  };
+
+  nativeBuildInputs = [ doxygen graphviz ];
+  buildInputs = [ libX11 libXrandr ];
+
+  dontConfigure = true;
+
+  makeFlags = [ "CC=${stdenv.cc}/bin/cc" "CXX=${stdenv.cc}/bin/c++" ];
+
+  buildFlags = [ "all" "doc" ];
+
+  installPhase = ''
+    install -dm755 $out/bin $out/share/doc/${pname}-${version}
+    install -m755 bin/smallwm -t $out/bin
+    cp -r README.markdown doc/html doc/latex $out/share/doc/${pname}-${version}
+  '';
+
+  meta = with stdenv.lib;{
+    description = "A small X window manager, extended from tinywm";
+    homepage = "https://github.com/adamnew123456/SmallWM";
+    license = licenses.bsd2;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/spectrwm/default.nix b/nixpkgs/pkgs/applications/window-managers/spectrwm/default.nix
new file mode 100644
index 000000000000..b38cb9906178
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/spectrwm/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchFromGitHub, pkgconfig, xorg }:
+
+stdenv.mkDerivation {
+  pname = "spectrwm";
+  version = "3.3.0";
+
+  src = fetchFromGitHub {
+    owner = "conformal";
+    repo = "spectrwm";
+    rev = "SPECTRWM_3_3_0";
+    sha256 = "139mswlr0z5dbp5migm98qqg84syq0py1qladp3226xy6q3bnn08";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = with xorg; [
+    libXrandr
+    libXcursor
+    libXft
+    libXt
+    xcbutil
+    xcbutilkeysyms
+    xcbutilwm
+  ];
+
+  sourceRoot = let
+    subdir = if stdenv.isDarwin then "osx" else "linux";
+  in "source/${subdir}";
+
+  makeFlags = [ "PREFIX=${placeholder "out"}" ];
+
+  meta = with stdenv.lib; {
+    description = "A tiling window manager";
+    homepage    = "https://github.com/conformal/spectrwm";
+    maintainers = with maintainers; [ christianharke ];
+    license     = licenses.isc;
+    platforms   = platforms.all;
+
+    longDescription = ''
+      spectrwm is a small dynamic tiling window manager for X11. It
+      tries to stay out of the way so that valuable screen real estate
+      can be used for much more important stuff. It has sane defaults
+      and does not require one to learn a language to do any
+      configuration. It was written by hackers for hackers and it
+      strives to be small, compact and fast.
+    '';
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/stalonetray/default.nix b/nixpkgs/pkgs/applications/window-managers/stalonetray/default.nix
new file mode 100644
index 000000000000..ad0baeb97dd2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/stalonetray/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, libX11, xorgproto }:
+
+stdenv.mkDerivation rec {
+  pname = "stalonetray";
+  version = "0.8.3";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/stalonetray/${pname}-${version}.tar.bz2";
+    sha256 = "0k7xnpdb6dvx25d67v0crlr32cdnzykdsi9j889njiididc8lm1n";
+  };
+
+  buildInputs = [ libX11 xorgproto ];
+
+  hardeningDisable = [ "format" ];
+
+  meta = with stdenv.lib; {
+    description = "Stand alone tray";
+    homepage = "http://stalonetray.sourceforge.net";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ raskin ];
+  };
+
+  passthru = {
+    updateInfo = {
+      downloadPage = "https://sourceforge.net/projects/stalonetray/files/";
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/stumpish/default.nix b/nixpkgs/pkgs/applications/window-managers/stumpish/default.nix
new file mode 100644
index 000000000000..c76a9ba762ef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/stumpish/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, substituteAll, fetchFromGitHub, gnused, ncurses, xorg, rlwrap }:
+
+stdenv.mkDerivation {
+  pname = "stumpish";
+  version = "0.0.1";
+
+  src = fetchFromGitHub {
+    owner = "stumpwm";
+    repo = "stumpwm-contrib";
+    rev = "9f5f06652c480159ec57d1fd8751b16f02db06dc";
+    sha256 = "1dxzsnir3158p8y2128s08r9ca0ywr9mcznivmhn1lycw8mg4nfl";
+  };
+
+  buildInputs = [
+    gnused xorg.xprop rlwrap ncurses
+  ];
+
+  patches = [
+    (substituteAll {
+      src = ./paths.patch;
+      sed = "${gnused}/bin/sed";
+      xprop = "${xorg.xprop}/bin/xprop";
+      rlwrap = "${rlwrap}/bin/rlwrap";
+      tput = "${ncurses}/bin/tput";
+    })
+  ];
+
+  buildPhase = ''
+    mkdir -p $out/bin
+  '';
+
+  installPhase = ''
+    cp util/stumpish/stumpish $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/stumpwm/stumpwm-contrib";
+    description = "STUMPwm Interactive SHell";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.ebzzry ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/stumpish/paths.patch b/nixpkgs/pkgs/applications/window-managers/stumpish/paths.patch
new file mode 100644
index 000000000000..d18392037015
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/stumpish/paths.patch
@@ -0,0 +1,87 @@
+diff --git a/util/stumpish/stumpish b/util/stumpish/stumpish
+index 830cb1b..64213dc 100755
+--- a/util/stumpish/stumpish
++++ b/util/stumpish/stumpish
+@@ -28,8 +28,8 @@ then
+ fi
+ 
+ # replace -E with -r option for old versions of GNU sed
+-if ! sed -E 1p /dev/null 2>/dev/null; then
+-    sed() { shift; command sed -r "$@"; }
++if ! @sed@ -E 1p /dev/null 2>/dev/null; then
++    sed() { shift; command @sed@ -r "$@"; }
+ fi
+ 
+ # parse C-style backslash sequences by default
+@@ -41,9 +41,9 @@ wait_result ()
+ {
+     while true
+     do
+-	RESULT=$(xprop -root -f STUMPWM_COMMAND_RESULT 8s \
++	RESULT=$(@xprop@ -root -f STUMPWM_COMMAND_RESULT 8s \
+ 	    STUMPWM_COMMAND_RESULT 2>/dev/null |
+-	    sed -E 's/\\([[:digit:]]+)/\\0\1/g')
++	    @sed@ -E 's/\\([[:digit:]]+)/\\0\1/g')
+ 	if echo "$RESULT" | grep -v -q 'not found.$'
+ 	then
+ 	    break
+@@ -52,7 +52,7 @@ wait_result ()
+ 	sleep $DELAY
+     done
+ 
+-    xprop -root -remove STUMPWM_COMMAND_RESULT
++    @xprop@ -root -remove STUMPWM_COMMAND_RESULT
+ 
+     if echo "$RESULT" | grep -q '= $'
+     then
+@@ -60,7 +60,7 @@ wait_result ()
+     fi
+ 
+     echo "$RESULT" |
+-    sed -E 's/[^"\\n]+"//
++    @sed@ -E 's/[^"\\n]+"//
+             /^"[[:space:]]*$/d
+             s/(^|[^\\])\\n/\1\
+ /g
+@@ -80,7 +80,7 @@ send_cmd ()
+ 	exit
+     fi
+ 
+-    xprop -root -f STUMPWM_COMMAND 8s -set STUMPWM_COMMAND "$cmd"
++    @xprop@ -root -f STUMPWM_COMMAND 8s -set STUMPWM_COMMAND "$cmd"
+ 
+     wait_result
+ }
+@@ -123,8 +123,8 @@ tput ()
+     local cap1=$1 cap2=$2
+     shift 2
+ 
+-    command tput $cap1 $@ 2>/dev/null ||
+-    command tput $cap2 $@ 2>/dev/null
++    command @tput@ $cap1 $@ 2>/dev/null ||
++    command @tput@ $cap2 $@ 2>/dev/null
+ }
+ 
+ READLINE=yes
+@@ -156,18 +156,18 @@ then
+ else
+     if [ -t 0 ]
+     then
+-	if ! type rlwrap 2>/dev/null >&2
++	if ! type @rlwrap@ 2>/dev/null >&2
+ 	then
+ 	    warn rlwrap not found, command completion won\'t work
+ 	elif [ $READLINE = yes ]
+ 	then
+ 	    COMMANDS="${TMPDIR:-/tmp}/stumpish.commands.$$"
+ 	    echo $(send_cmd "commands") |
+-	    sed -E 's/[[:space:]]+/\
++	    @sed@ -E 's/[[:space:]]+/\
+ /g' |
+ 	    sort > "$COMMANDS"
+ 	    trap 'rm -f "$COMMANDS"' exit int term
+-	    rlwrap -b '' -f "$COMMANDS" "$0" -r
++	    @rlwrap@ -b '' -f "$COMMANDS" "$0" -r
+ 	    exit
+ 	fi
+ 
diff --git a/nixpkgs/pkgs/applications/window-managers/stumpwm/default.nix b/nixpkgs/pkgs/applications/window-managers/stumpwm/default.nix
new file mode 100644
index 000000000000..b059423c23c4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/stumpwm/default.nix
@@ -0,0 +1,103 @@
+{ stdenv, fetchgit, autoconf, sbcl, lispPackages, xdpyinfo, texinfo4
+, makeWrapper , rlwrap, gnused, gnugrep, coreutils, xprop
+, extraModulePaths ? []
+, version }:
+
+let
+  contrib = (fetchgit {
+    url = "https://github.com/stumpwm/stumpwm-contrib.git";
+    rev = "9bebe3622b2b6c31a6bada9055ef3862fa79b86f";
+    sha256 = "1ml6mjk2fsfv4sf65fdbji3q5x0qiq99g1k8w7a99gsl2i8h60gc";
+  });
+  versionSpec = {
+    latest = {
+      name = "1.0.0";
+      rev = "refs/tags/1.0.0";
+      sha256 = "16r0lwhxl8g71masmfbjr7s7m7fah4ii4smi1g8zpbpiqjz48ryb";
+      patches = [];
+    };
+    "0.9.9" = {
+      name = "0.9.9";
+      rev = "refs/tags/0.9.9";
+      sha256 = "0hmvbdk2yr5wrkiwn9dfzf65s4xc2qifj0sn6w2mghzp96cph79k";
+      patches = [ ./fix-module-path.patch ];
+    };
+    git = {
+        name = "git-20170203";
+        rev = "d20f24e58ab62afceae2afb6262ffef3cc318b97";
+        sha256 = "1gi29ds1x6dq7lz8lamnhcvcrr3cvvrg5yappfkggyhyvib1ii70";
+        patches = [];
+    };
+  }.${version};
+in
+stdenv.mkDerivation {
+  name = "stumpwm-${versionSpec.name}";
+
+  src = fetchgit {
+    url = "https://github.com/stumpwm/stumpwm";
+    rev = versionSpec.rev;
+    sha256 = versionSpec.sha256;
+  };
+
+  # NOTE: The patch needs an update for the next release.
+  # `(stumpwm:set-module-dir "@MODULE_DIR@")' needs to be in it.
+  patches = versionSpec.patches;
+
+  buildInputs = [
+    texinfo4 makeWrapper autoconf
+    sbcl
+    lispPackages.clx
+    lispPackages.cl-ppcre
+    lispPackages.alexandria
+    xdpyinfo
+  ];
+
+
+  # Stripping destroys the generated SBCL image
+  dontStrip = true;
+
+  configurePhase = ''
+    ./autogen.sh
+    ./configure --prefix=$out --with-module-dir=$out/share/stumpwm/modules
+  '';
+
+  preBuild = ''
+    cp -r --no-preserve=mode ${contrib} modules
+    substituteInPlace  head.lisp \
+      --replace 'run-shell-command "xdpyinfo' 'run-shell-command "${xdpyinfo}/bin/xdpyinfo'
+  '';
+
+  installPhase = ''
+    mkdir -pv $out/bin
+    make install
+
+    mkdir -p $out/share/stumpwm/modules
+    cp -r modules/* $out/share/stumpwm/modules/
+    for d in ${stdenv.lib.concatStringsSep " " extraModulePaths}; do
+      cp -r --no-preserve=mode "$d" $out/share/stumpwm/modules/
+    done
+
+    # Copy stumpish;
+    cp $out/share/stumpwm/modules/util/stumpish/stumpish $out/bin/
+    chmod +x $out/bin/stumpish
+    wrapProgram $out/bin/stumpish \
+      --prefix PATH ":" "${stdenv.lib.makeBinPath [ rlwrap gnused gnugrep coreutils xprop ]}"
+
+    # Paths in the compressed image $out/bin/stumpwm are not
+    # recognized by Nix. Add explicit reference here.
+    mkdir $out/nix-support
+    echo ${xdpyinfo} > $out/nix-support/xdpyinfo
+  '';
+
+  passthru = {
+    inherit sbcl lispPackages contrib;
+  };
+
+  meta = with stdenv.lib; {
+    description = "A tiling window manager for X11";
+    homepage    = "https://github.com/stumpwm/";
+    license     = licenses.gpl2Plus;
+    platforms   = platforms.linux;
+    broken = true; # 2018-04-11
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/stumpwm/fix-module-path.patch b/nixpkgs/pkgs/applications/window-managers/stumpwm/fix-module-path.patch
new file mode 100644
index 000000000000..79bfaad3dec3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/stumpwm/fix-module-path.patch
@@ -0,0 +1,16 @@
+diff --git a/make-image.lisp.in b/make-image.lisp.in
+index 121e9d6..2210242 100644
+--- a/make-image.lisp.in
++++ b/make-image.lisp.in
+@@ -2,7 +2,10 @@
+ 
+ (load "load-stumpwm.lisp")
+ 
+-#-ecl (stumpwm:set-module-dir "@CONTRIB_DIR@")
++(setf asdf::*immutable-systems*
++      (uiop:list-to-hash-set (asdf:already-loaded-systems)))
++
++#-ecl (stumpwm:set-module-dir "@MODULE_DIR@")
+ 
+ #+sbcl
+ (sb-ext:save-lisp-and-die "stumpwm" :toplevel (lambda ()
diff --git a/nixpkgs/pkgs/applications/window-managers/sway/bg.nix b/nixpkgs/pkgs/applications/window-managers/sway/bg.nix
new file mode 100644
index 000000000000..86301492c468
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/sway/bg.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub
+, meson, ninja, pkgconfig, scdoc
+, wayland, wayland-protocols, cairo, gdk-pixbuf
+}:
+
+stdenv.mkDerivation rec {
+  pname = "swaybg";
+  version = "1.0";
+
+  src = fetchFromGitHub {
+    owner = "swaywm";
+    repo = "swaybg";
+    rev = version;
+    sha256 = "1lmqz5bmig90gq2m7lwf02d2g7z4hzf8fhqz78c8vk92c6p4xwbc";
+  };
+
+  nativeBuildInputs = [ meson ninja pkgconfig scdoc ];
+  buildInputs = [ wayland wayland-protocols cairo gdk-pixbuf ];
+
+  mesonFlags = [
+    "-Dgdk-pixbuf=enabled" "-Dman-pages=enabled"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Wallpaper tool for Wayland compositors";
+    longDescription = ''
+      A wallpaper utility for Wayland compositors, that is compatible with any
+      Wayland compositor which implements the following Wayland protocols:
+      wlr-layer-shell, xdg-output, and xdg-shell.
+    '';
+    inherit (src.meta) homepage;
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/sway/contrib.nix b/nixpkgs/pkgs/applications/window-managers/sway/contrib.nix
new file mode 100644
index 000000000000..e2c27fb470f7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/sway/contrib.nix
@@ -0,0 +1,107 @@
+{ stdenv
+
+, fetchurl
+, coreutils
+, makeWrapper
+, sway-unwrapped
+, installShellFiles
+, wl-clipboard
+, libnotify
+, slurp
+, grim
+, jq
+
+, python3Packages
+}:
+
+{
+
+grimshot = stdenv.mkDerivation rec {
+  pname = "grimshot";
+  version = "2020-05-08";
+  rev = "b1d08db5f5112ab562f89564825e3e791b0682c4";
+
+  # master has new fixes and features, and a man page
+  # after sway-1.5 these may be switched to sway-unwrapped.src
+  bsrc = fetchurl {
+    url = "https://raw.githubusercontent.com/swaywm/sway/${rev}/contrib/grimshot";
+    sha256 = "1awzmzkib8a7q5s78xyh8za03lplqfpbasqp3lidqqmjqs882jq9";
+  };
+
+  msrc = fetchurl {
+    url = "https://raw.githubusercontent.com/swaywm/sway/${rev}/contrib/grimshot.1";
+    sha256 = "191xxjfhf61gkxl3b0f694h0nrwd7vfnyp5afk8snhhr6q7ia4jz";
+  };
+
+  dontBuild = true;
+  dontUnpack = true;
+  dontConfigure = true;
+
+  outputs = [ "out" "man" ];
+
+  nativeBuildInputs = [ makeWrapper installShellFiles ];
+
+  installPhase = ''
+    installManPage ${msrc}
+
+    install -Dm 0755 ${bsrc} $out/bin/grimshot
+    wrapProgram $out/bin/grimshot --set PATH \
+      "${stdenv.lib.makeBinPath [
+        sway-unwrapped
+        wl-clipboard
+        coreutils
+        libnotify
+        slurp
+        grim
+        jq
+        ] }"
+  '';
+
+  doInstallCheck = true;
+
+  installCheckPhase = ''
+    # check always returns 0
+    if [[ $($out/bin/grimshot check | grep "NOT FOUND") ]]; then false
+    else
+      echo "grimshot check passed"
+    fi
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A helper for screenshots within sway";
+    homepage = "https://github.com/swaywm/sway/tree/master/contrib";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = with maintainers; [
+      sway-unwrapped.meta.maintainers
+      evils
+    ];
+  };
+};
+
+
+inactive-windows-transparency = python3Packages.buildPythonApplication rec {
+  # long name is long
+  lname = "inactive-windows-transparency";
+  pname = "sway-${lname}";
+  version = sway-unwrapped.version;
+
+  src = sway-unwrapped.src;
+
+  format = "other";
+  dontBuild = true;
+  dontConfigure = true;
+
+  propagatedBuildInputs = [ python3Packages.i3ipc ];
+
+  installPhase = ''
+    install -Dm 0755 $src/contrib/${lname}.py $out/bin/${lname}.py
+  '';
+
+  meta = sway-unwrapped.meta // {
+    description = "It makes inactive sway windows transparent";
+    homepage    = "https://github.com/swaywm/sway/tree/${sway-unwrapped.version}/contrib";
+  };
+};
+
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/sway/default.nix b/nixpkgs/pkgs/applications/window-managers/sway/default.nix
new file mode 100644
index 000000000000..9dcb0339f2ce
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/sway/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, lib, fetchFromGitHub, makeWrapper
+, meson, ninja
+, pkgconfig, scdoc
+, wayland, libxkbcommon, pcre, json_c, libevdev, pango, cairo, libinput, librsvg
+, wlroots, wayland-protocols
+
+, gdkPixbufSupport ? true, gdk-pixbuf
+, xwaylandSupport ? !(lib.elem "-Dxwayland=disabled" (wlroots.mesonFlags or []))
+}:
+
+stdenv.mkDerivation rec {
+  pname = "sway-unwrapped";
+  version = "1.4";
+
+  src = fetchFromGitHub {
+    owner = "swaywm";
+    repo = "sway";
+    rev = version;
+    sha256 = "11qf89y3q92g696a6f4d23qb44gqixg6qxq740vwv2jw59ms34ja";
+  };
+
+  patches = [
+    ./sway-config-no-nix-store-references.patch
+    ./load-configuration-from-etc.patch
+  ];
+
+  nativeBuildInputs = [
+    pkgconfig meson ninja scdoc
+  ];
+
+  buildInputs = [
+    wayland libxkbcommon pcre json_c libevdev pango cairo libinput librsvg
+    wlroots wayland-protocols
+  ] ++ lib.optional gdkPixbufSupport gdk-pixbuf;
+
+  enableParallelBuilding = true;
+
+  mesonFlags =
+    [ "-Ddefault-wallpaper=false" "-Dtray=enabled" "-Dman-pages=enabled" ]
+    ++ lib.optional gdkPixbufSupport "-Dgdk-pixbuf=enabled"
+    ++ lib.optional xwaylandSupport "-Dxwayland=enabled";
+
+  meta = with lib; {
+    description = "i3-compatible tiling Wayland compositor";
+    homepage    = "https://swaywm.org";
+    license     = licenses.mit;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ primeos synthetica ma27 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/sway/idle.nix b/nixpkgs/pkgs/applications/window-managers/sway/idle.nix
new file mode 100644
index 000000000000..486ab79598df
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/sway/idle.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub
+, meson, ninja, pkgconfig, scdoc
+, wayland, wayland-protocols, systemd
+}:
+
+stdenv.mkDerivation rec {
+  pname = "swayidle";
+  version = "1.6";
+
+  src = fetchFromGitHub {
+    owner = "swaywm";
+    repo = "swayidle";
+    rev = version;
+    sha256 = "1nd3v8r9549lykdwh4krldfl59lzaspmmai5k1icy7dvi6kkr18r";
+  };
+
+  postPatch = ''
+    substituteInPlace meson.build \
+      --replace "version: '1.5'" "version: '${version}'"
+  '';
+
+  nativeBuildInputs = [ meson ninja pkgconfig scdoc ];
+  buildInputs = [ wayland wayland-protocols systemd ];
+
+  mesonFlags = [ "-Dman-pages=enabled" "-Dlogind=enabled" ];
+
+  meta = with stdenv.lib; {
+    description = "Idle management daemon for Wayland";
+    longDescription = ''
+      Sway's idle management daemon. It is compatible with any Wayland
+      compositor which implements the KDE idle protocol.
+    '';
+    inherit (src.meta) homepage;
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/sway/load-configuration-from-etc.patch b/nixpkgs/pkgs/applications/window-managers/sway/load-configuration-from-etc.patch
new file mode 100644
index 000000000000..26a3d40d66cb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/sway/load-configuration-from-etc.patch
@@ -0,0 +1,42 @@
+From 26f9c65ef037892977a824f0d7d7111066856b53 Mon Sep 17 00:00:00 2001
+From: Michael Weiss <dev.primeos@gmail.com>
+Date: Sat, 27 Apr 2019 14:26:16 +0200
+Subject: [PATCH] Load configs from /etc but fallback to /nix/store
+
+This change will load all configuration files from /etc, to make it easy
+to override them, but fallback to /nix/store/.../etc/sway/config to make
+Sway work out-of-the-box with the default configuration on non NixOS
+systems.
+---
+ meson.build   | 3 ++-
+ sway/config.c | 1 +
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 02b5d606..c03a9c0f 100644
+--- a/meson.build
++++ b/meson.build
+@@ -129,7 +129,8 @@ if scdoc.found()
+ 	endforeach
+ endif
+ 
+-add_project_arguments('-DSYSCONFDIR="/@0@"'.format(join_paths(prefix, sysconfdir)), language : 'c')
++add_project_arguments('-DSYSCONFDIR="/@0@"'.format(sysconfdir), language : 'c')
++add_project_arguments('-DNIX_SYSCONFDIR="/@0@"'.format(join_paths(prefix, sysconfdir)), language : 'c')
+ 
+ version = '"@0@"'.format(meson.project_version())
+ if git.found()
+diff --git a/sway/config.c b/sway/config.c
+index 4cd21bbc..dd855753 100644
+--- a/sway/config.c
++++ b/sway/config.c
+@@ -317,6 +317,7 @@ static char *get_config_path(void) {
+ 		"$XDG_CONFIG_HOME/i3/config",
+ 		SYSCONFDIR "/sway/config",
+ 		SYSCONFDIR "/i3/config",
++		NIX_SYSCONFDIR "/sway/config",
+ 	};
+ 
+ 	char *config_home = getenv("XDG_CONFIG_HOME");
+-- 
+2.19.2
diff --git a/nixpkgs/pkgs/applications/window-managers/sway/lock-effects.nix b/nixpkgs/pkgs/applications/window-managers/sway/lock-effects.nix
new file mode 100644
index 000000000000..e07080497f43
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/sway/lock-effects.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub,
+  meson, ninja, pkgconfig, scdoc,
+  wayland, wayland-protocols, libxkbcommon,
+  cairo, gdk-pixbuf, pam
+}:
+
+stdenv.mkDerivation rec {
+  pname = "swaylock-effects";
+  version = "v1.6-0";
+
+  src = fetchFromGitHub {
+    owner = "mortie";
+    repo = "swaylock-effects";
+    rev = version;
+    sha256 = "15lshqq3qj9m3yfac65hjcciaf9zdfh3ir7hgh0ach7gpi3rbk13";
+
+  };
+
+  postPatch = ''
+    sed -iE "s/version: '1\.3',/version: '${version}',/" meson.build
+  '';
+
+  nativeBuildInputs = [ meson ninja pkgconfig scdoc ];
+  buildInputs = [ wayland wayland-protocols libxkbcommon cairo gdk-pixbuf pam ];
+
+  mesonFlags = [
+    "-Dpam=enabled" "-Dgdk-pixbuf=enabled" "-Dman-pages=enabled"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Screen locker for Wayland";
+    longDescription = ''
+      swaylock-effects is a screen locking utility for Wayland compositors.
+    '';
+    inherit (src.meta) homepage;
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ gnxlxnxx ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/sway/lock-fancy.nix b/nixpkgs/pkgs/applications/window-managers/sway/lock-fancy.nix
new file mode 100644
index 000000000000..338d626d9908
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/sway/lock-fancy.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchFromGitHub, coreutils, grim, gawk, swaylock
+, imagemagick, getopt, fontconfig, makeWrapper
+}:
+
+let
+  depsPath = stdenv.lib.makeBinPath [
+    coreutils
+    grim
+    gawk
+    swaylock
+    imagemagick
+    getopt
+    fontconfig
+  ];
+in stdenv.mkDerivation rec {
+  pname = "swaylock-fancy-unstable";
+  version = "2020-02-22";
+
+  src = fetchFromGitHub {
+    owner = "Big-B";
+    repo = "swaylock-fancy";
+    rev = "5cf977b12f372740aa7b7e5a607d583f93f1e028";
+    sha256 = "0laqwzi6069sgz91i69438ns0g2nq4zkqickavrf80h4g3gcs8vm";
+  };
+
+  postPatch = ''
+    substituteInPlace swaylock-fancy \
+      --replace "/usr/share" "$out/share"
+  '';
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  makeFlags = [ "PREFIX=${placeholder "out"}" ];
+
+  postInstall = ''
+    wrapProgram $out/bin/swaylock-fancy \
+      --prefix PATH : "${depsPath}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "This is an swaylock bash script that takes a screenshot of the desktop, blurs the background and adds a lock icon and text";
+    homepage = "https://github.com/Big-B/swaylock-fancy";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ma27 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/sway/lock.nix b/nixpkgs/pkgs/applications/window-managers/sway/lock.nix
new file mode 100644
index 000000000000..7cbba5e981bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/sway/lock.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub
+, meson, ninja, pkgconfig, scdoc
+, wayland, wayland-protocols, libxkbcommon, cairo, gdk-pixbuf, pam
+}:
+
+stdenv.mkDerivation rec {
+  pname = "swaylock";
+  version = "1.5";
+
+  src = fetchFromGitHub {
+    owner = "swaywm";
+    repo = "swaylock";
+    rev = version;
+    sha256 = "0r95p4w11dwm5ra614vddz83r8j7z6gd120z2vcchy7m9b0f15kf";
+  };
+
+  postPatch = ''
+    substituteInPlace meson.build \
+      --replace "version: '1.4'" "version: '${version}'"
+  '';
+
+  nativeBuildInputs = [ meson ninja pkgconfig scdoc ];
+  buildInputs = [ wayland wayland-protocols libxkbcommon cairo gdk-pixbuf pam ];
+
+  mesonFlags = [
+    "-Dpam=enabled" "-Dgdk-pixbuf=enabled" "-Dman-pages=enabled"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Screen locker for Wayland";
+    longDescription = ''
+      swaylock is a screen locking utility for Wayland compositors.
+      Important note: If you don't use the Sway module (programs.sway.enable)
+      you need to set "security.pam.services.swaylock = {};" manually.
+    '';
+    inherit (src.meta) homepage;
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/sway/sway-config-no-nix-store-references.patch b/nixpkgs/pkgs/applications/window-managers/sway/sway-config-no-nix-store-references.patch
new file mode 100644
index 000000000000..009c12959430
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/sway/sway-config-no-nix-store-references.patch
@@ -0,0 +1,21 @@
+diff --git a/config.in b/config.in
+--- a/config.in
++++ b/config.in
+@@ -21,8 +21,8 @@ set $menu dmenu_path | dmenu | xargs swaymsg exec
+ 
+ ### Output configuration
+ #
+-# Default wallpaper (more resolutions are available in @datadir@/backgrounds/sway/)
+-output * bg @datadir@/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
++# Default wallpaper
++#output * bg ~/.config/sway/backgrounds/Sway_Wallpaper_Blue_1920x1080.png fill
+ #
+ # Example configuration:
+ #
+@@ -213,5 +213,3 @@ bar {
+         inactive_workspace #32323200 #32323200 #5c5c5c
+     }
+ }
+-
+-include @sysconfdir@/sway/config.d/*
+
diff --git a/nixpkgs/pkgs/applications/window-managers/sway/wrapper.nix b/nixpkgs/pkgs/applications/window-managers/sway/wrapper.nix
new file mode 100644
index 000000000000..fe78e1a9ff96
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/sway/wrapper.nix
@@ -0,0 +1,53 @@
+{ lib, stdenv
+, sway-unwrapped, swaybg
+, makeWrapper, symlinkJoin, writeShellScriptBin
+, withBaseWrapper ? true, extraSessionCommands ? "", dbus
+, withGtkWrapper ? false, wrapGAppsHook, gdk-pixbuf, glib, gtk3
+, extraOptions ? [] # E.g.: [ "--verbose" ]
+}:
+
+assert extraSessionCommands != "" -> withBaseWrapper;
+
+with lib;
+
+let
+  baseWrapper = writeShellScriptBin "sway" ''
+     set -o errexit
+     if [ ! "$_SWAY_WRAPPER_ALREADY_EXECUTED" ]; then
+       ${extraSessionCommands}
+       export _SWAY_WRAPPER_ALREADY_EXECUTED=1
+     fi
+     if [ "$DBUS_SESSION_BUS_ADDRESS" ]; then
+       export DBUS_SESSION_BUS_ADDRESS
+       exec ${sway-unwrapped}/bin/sway "$@"
+     else
+       exec ${dbus}/bin/dbus-run-session ${sway-unwrapped}/bin/sway "$@"
+     fi
+   '';
+in symlinkJoin {
+  name = "sway-${sway-unwrapped.version}";
+
+  paths = (optional withBaseWrapper baseWrapper)
+    ++ [ sway-unwrapped ];
+
+  nativeBuildInputs = [ makeWrapper ]
+    ++ (optional withGtkWrapper wrapGAppsHook);
+
+  buildInputs = optionals withGtkWrapper [ gdk-pixbuf glib gtk3 ];
+
+  # We want to run wrapProgram manually
+  dontWrapGApps = true;
+
+  postBuild = ''
+    ${optionalString withGtkWrapper "gappsWrapperArgsHook"}
+
+    wrapProgram $out/bin/sway \
+      --prefix PATH : "${swaybg}/bin" \
+      ${optionalString withGtkWrapper ''"''${gappsWrapperArgs[@]}"''} \
+      ${optionalString (extraOptions != []) "${concatMapStrings (x: " --add-flags " + x) extraOptions}"}
+  '';
+
+  passthru.providedSessions = [ "sway" ];
+
+  inherit (sway-unwrapped) meta;
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/sxhkd/default.nix b/nixpkgs/pkgs/applications/window-managers/sxhkd/default.nix
new file mode 100644
index 000000000000..2404129b165d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/sxhkd/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, asciidoc, libxcb, xcbutil, xcbutilkeysyms
+, xcbutilwm
+}:
+
+stdenv.mkDerivation rec {
+  pname = "sxhkd";
+  version = "0.6.1";
+
+  src = fetchFromGitHub {
+    owner = "baskerville";
+    repo = "sxhkd";
+    rev = version;
+    sha256 = "0j7bl2l06r0arrjzpz7al9j6cwzc730knbsijp7ixzz96pq7xa2h";
+  };
+
+  buildInputs = [ asciidoc libxcb xcbutil xcbutilkeysyms xcbutilwm ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    description = "Simple X hotkey daemon";
+    homepage = "https://github.com/baskerville/sxhkd";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ vyp ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/tabbed/default.nix b/nixpkgs/pkgs/applications/window-managers/tabbed/default.nix
new file mode 100644
index 000000000000..f0a427e68395
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/tabbed/default.nix
@@ -0,0 +1,33 @@
+{stdenv, fetchgit, xorgproto, libX11, libXft, customConfig ? null, patches ? [] }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation {
+  name = "tabbed-20180310";
+
+  src = fetchgit {
+    url = "https://git.suckless.org/tabbed";
+    rev = "b5f9ec647aae2d9a1d3bd586eb7523a4e0a329a3";
+    sha256 = "0frj2yjaf0mfjwgyfappksfir52mx2xxd3cdg5533m5d88vbmxss";
+  };
+
+  inherit patches;
+
+  postPatch = stdenv.lib.optionalString (customConfig != null) ''
+    cp ${builtins.toFile "config.h" customConfig} ./config.h
+  '';
+
+  buildInputs = [ xorgproto libX11 libXft ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+  ];
+
+  meta = {
+    homepage = "https://tools.suckless.org/tabbed";
+    description = "Simple generic tabbed fronted to xembed aware applications";
+    license = licenses.mit;
+    maintainers = with maintainers; [ vrthra ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/taffybar/default.nix b/nixpkgs/pkgs/applications/window-managers/taffybar/default.nix
new file mode 100644
index 000000000000..681a5baec82c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/taffybar/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, ghcWithPackages, makeWrapper, packages ? (x: []) }:
+
+let
+taffybarEnv = ghcWithPackages (self: [ self.taffybar ] ++ packages self);
+in stdenv.mkDerivation {
+  name = "taffybar-with-packages-${taffybarEnv.version}";
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildCommand = ''
+    mkdir -p $out/bin
+    makeWrapper ${taffybarEnv}/bin/taffybar $out/bin/taffybar \
+      --set NIX_GHC "${taffybarEnv}/bin/ghc"
+  '';
+
+  meta = {
+    platforms = stdenv.lib.platforms.unix;
+    license = stdenv.lib.licenses.bsd3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/tinywm/default.nix b/nixpkgs/pkgs/applications/window-managers/tinywm/default.nix
new file mode 100644
index 000000000000..d6ff4ad51a2e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/tinywm/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchFromGitHub
+, libX11 }:
+
+stdenv.mkDerivation rec {
+  pname = "tinywm";
+  version = "2014-04-22";
+
+  src = fetchFromGitHub {
+    owner = "mackstann";
+    repo = pname;
+    rev = "9d05612f41fdb8bc359f1fd9cc930bf16315abb1";
+    sha256 = "1s7r4f2d3lk1i8h089v2vyrr02hh0y9i3ihl9kqgk9s87hqw8q5b";
+  };
+
+  buildInputs = [ libX11 ];
+
+  dontConfigure = true;
+
+  buildPhase = ''
+    ${stdenv.cc}/bin/cc -Wall -pedantic -I${libX11}/include tinywm.c -L${libX11}/lib -lX11 -o tinywm
+  '';
+
+  installPhase = ''
+    install -dm755 $out/bin $out/share/doc/${pname}-${version}
+    install -m755 tinywm -t $out/bin/
+    # The annotated source code is a piece of documentation
+    install -m644 annotated.c README -t $out/share/doc/${pname}-${version}
+  '';
+
+  meta = with stdenv.lib;{
+    description = "A tiny window manger for X11";
+    longDescription = ''
+
+      TinyWM is a tiny window manager that I created as an exercise in
+      minimalism. It is also maybe helpful in learning some of the very basics
+      of creating a window manager. It is only around 50 lines of C. There is
+      also a Python version using python-xlib.
+
+      It lets you do four basic things:
+
+      - Move windows interactively with Alt+Button1 drag (left mouse button)
+      - Resize windows interactively with Alt+Button3 drag (right mouse button)
+      - Raise windows with Alt+F1 (not high on usability I know, but I needed a
+        keybinding in there somewhere)
+      - Focus windows with the mouse pointer (X does this on its own)
+    '';
+    homepage = "http://incise.org/tinywm.html";
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = libX11.meta.platforms;
+    license = licenses.publicDomain;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/trayer/default.nix b/nixpkgs/pkgs/applications/window-managers/trayer/default.nix
new file mode 100644
index 000000000000..5c3d8710e35d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/trayer/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, pkgconfig, gdk-pixbuf, gtk2 }:
+
+stdenv.mkDerivation rec {
+  name = "trayer-1.1.8";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gdk-pixbuf gtk2 ];
+
+  src = fetchFromGitHub {
+    owner = "sargon";
+    repo = "trayer-srg";
+    rev = name;
+    sha256 = "1mvhwaqa9bng9wh3jg3b7y8gl7nprbydmhg963xg0r076jyzv0cg";
+  };
+
+  preConfigure = ''
+    patchShebangs configure
+  '';
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/sargon/trayer-srg";
+    license = licenses.mit;
+    description = "A lightweight GTK2-based systray for UNIX desktop";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ pSub ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/window-managers/vwm/default.nix b/nixpkgs/pkgs/applications/window-managers/vwm/default.nix
new file mode 100644
index 000000000000..8eb42bb9a97d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/vwm/default.nix
@@ -0,0 +1,33 @@
+{stdenv, fetchurl, ncurses, pkgconfig, glib, libviper, libpseudo, gpm,
+libvterm}:
+
+stdenv.mkDerivation rec {
+  name = "vwm-2.1.3";
+ 
+  src = fetchurl {
+    url = "mirror://sourceforge/vwm/${name}.tar.gz";
+    sha256 = "1r5wiqyfqwnyx7dfihixlnavbvg8rni36i4gq169aisjcg7laxaf";
+  };
+
+  prePatch = ''
+    sed -i -e s@/usr/local@$out@ \
+      -e s@/usr/lib@$out/lib@ \
+      -e 's@tic vwmterm@tic -o '$out/lib/terminfo' vwmterm@' \
+      -e /ldconfig/d Makefile modules/*/Makefile vwm.h
+  '';
+
+  preInstall = ''
+    mkdir -p $out/bin $out/include
+  '';
+ 
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ ncurses glib libviper libpseudo gpm libvterm ];
+ 
+  meta = with stdenv.lib; {
+    homepage = "http://vwm.sourceforge.net/";
+    description = "Dynamic window manager for the console";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/weston/default.nix b/nixpkgs/pkgs/applications/window-managers/weston/default.nix
new file mode 100644
index 000000000000..4a09cac9344a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/weston/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl, meson, ninja, pkgconfig
+, wayland, libGL, mesa, libxkbcommon, cairo, libxcb
+, libXcursor, xlibsWrapper, udev, libdrm, mtdev, libjpeg, pam, dbus, libinput, libevdev
+, colord, lcms2, pipewire ? null
+, pango ? null, libunwind ? null, freerdp ? null, vaapi ? null, libva ? null
+, libwebp ? null, xwayland ? null, wayland-protocols
+# beware of null defaults, as the parameters *are* supplied by callPackage by default
+}:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  pname = "weston";
+  version = "8.0.0";
+
+  src = fetchurl {
+    url = "https://wayland.freedesktop.org/releases/${pname}-${version}.tar.xz";
+    sha256 = "0j3q0af3595g4wcicldgy749zm2g2b6bswa6ya8k075a5sdv863m";
+  };
+
+  nativeBuildInputs = [ meson ninja pkgconfig ];
+  buildInputs = [
+    wayland libGL mesa libxkbcommon cairo libxcb libXcursor xlibsWrapper udev libdrm
+    mtdev libjpeg pam dbus libinput libevdev pango libunwind freerdp vaapi libva
+    libwebp wayland-protocols
+    colord lcms2 pipewire
+  ];
+
+  mesonFlags= [
+    "-Dbackend-drm-screencast-vaapi=${boolToString (vaapi != null)}"
+    "-Dbackend-rdp=${boolToString (freerdp != null)}"
+    "-Dxwayland=${boolToString (xwayland != null)}" # Default is true!
+    "-Dremoting=false" # TODO
+    "-Dpipewire=${boolToString (pipewire != null)}"
+    "-Dimage-webp=${boolToString (libwebp != null)}"
+    "-Ddemo-clients=false"
+    "-Dsimple-clients="
+    "-Dtest-junit-xml=false"
+    # TODO:
+    #"--enable-clients"
+    #"--disable-setuid-install" # prevent install target to chown root weston-launch, which fails
+  ] ++ optionals (xwayland != null) [
+    "-Dxwayland-path=${xwayland.out}/bin/Xwayland"
+  ];
+
+  passthru.providedSessions = [ "weston" ];
+
+  meta = {
+    description = "Reference implementation of a Wayland compositor";
+    homepage = "https://wayland.freedesktop.org/";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/windowlab/default.nix b/nixpkgs/pkgs/applications/window-managers/windowlab/default.nix
new file mode 100644
index 000000000000..d0a1de7f6006
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/windowlab/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, pkgconfig
+, libX11, libXext, libXft }:
+
+let version = "1.40"; in
+stdenv.mkDerivation {
+  pname = "windowlab";
+  inherit version;
+
+  src = fetchurl {
+    url = "http://nickgravgaard.com/windowlab/windowlab-${version}.tar";
+    sha256 = "1fx4jwq4s98p2wpvawsiww7d6568bpjgcjpks61dzfj8p2j32s4d";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libX11 libXext libXft ];
+
+  postPatch =
+    ''
+      mv Makefile Makefile.orig
+      echo \
+         "
+          DEFINES += -DXFT
+          EXTRA_INC += $(pkg-config --cflags xft)
+          EXTRA_LIBS += $(pkg-config --libs xft)
+         " > Makefile
+      sed "s|/usr/local|$out|g" Makefile.orig >> Makefile
+    '';
+
+  meta = with stdenv.lib;
+    { description = "Small and simple stacking window manager";
+      homepage    = "http://nickgravgaard.com/windowlab/";
+      license     = licenses.gpl2;
+      maintainers = with maintainers; [ ehmry ];
+      platforms   = platforms.linux;
+    };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/window-managers/windowmaker/default.nix b/nixpkgs/pkgs/applications/window-managers/windowmaker/default.nix
new file mode 100644
index 000000000000..64783ac5fbe8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/windowmaker/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchurl, pkgconfig
+, libX11, libXext, libXft, libXmu, libXinerama, libXrandr, libXpm
+, imagemagick, libpng, libjpeg, libexif, libtiff, libungif, libwebp }:
+
+stdenv.mkDerivation rec {
+  pname = "windowmaker";
+  version = "0.95.8";
+  srcName = "WindowMaker-${version}";
+
+  src = fetchurl {
+    url = "http://windowmaker.org/pub/source/release/${srcName}.tar.gz";
+    sha256 = "12p8kljqgx5hnic0zvs5mxwp7kg21sb6qjagb2qw8ydvf5amrgwx";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ libX11 libXext libXft libXmu libXinerama libXrandr libXpm
+                  imagemagick libpng libjpeg libexif libtiff libungif libwebp ];
+
+  configureFlags = [
+    "--with-x"
+    "--enable-modelock"
+    "--enable-randr"
+    "--enable-magick"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://windowmaker.org/";
+    description = "NeXTSTEP-like window manager";
+    longDescription = ''
+      Window Maker is an X11 window manager originally designed to
+      provide integration support for the GNUstep Desktop
+      Environment. In every way possible, it reproduces the elegant look
+      and feel of the NEXTSTEP user interface. It is fast, feature rich,
+      easy to configure, and easy to use. It is also free software, with
+      contributions being made by programmers from around the world.
+    '';
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.AndersonTorres ];
+  };
+}
+
+# TODO: investigate support for WEBP (its autodetection is failing)
diff --git a/nixpkgs/pkgs/applications/window-managers/windowmaker/dockapps/alsamixer.app.nix b/nixpkgs/pkgs/applications/window-managers/windowmaker/dockapps/alsamixer.app.nix
new file mode 100644
index 000000000000..4e1256399e76
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/windowmaker/dockapps/alsamixer.app.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchgit, pkgconfig, libX11, libXpm, libXext, alsaLib }:
+
+stdenv.mkDerivation {
+  name = "alsamixer.app-0.2.1";
+  src = fetchgit {
+     url = "git://repo.or.cz/dockapps.git";
+     rev = "38c74350b02f35824554ce0c4f0f251d71762040";
+     sha256 = "0g9cwhlqg065fbhav4g4n16a4cqkk9jykl3y0zwbn5whhacfqyhl";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libX11 libXpm libXext alsaLib ];
+
+  postUnpack = "sourceRoot=\${sourceRoot}/AlsaMixer.app";
+
+  installPhase = ''
+    mkdir -pv $out/bin;
+    cp AlsaMixer.app $out/bin/AlsaMixer;
+    '';
+
+  meta = {
+    description = "Alsa mixer application for Windowmaker";
+    homepage = "http://windowmaker.org/dockapps/?name=AlsaMixer.app";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.bstrik ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/windowmaker/dockapps/wmcalclock.nix b/nixpkgs/pkgs/applications/window-managers/windowmaker/dockapps/wmcalclock.nix
new file mode 100644
index 000000000000..48f4753d674b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/windowmaker/dockapps/wmcalclock.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, pkgconfig, libX11, libXpm, libXext }:
+
+stdenv.mkDerivation {
+  name = "wmCalClock-1.25";
+  src = fetchurl {
+     url = "http://www.cs.mun.ca/~gstarkes/wmaker/dockapps/files/wmCalClock-1.25.tar.gz";
+     sha256 = "4b42b55bb7c1d7c58b5ee1f0058c683d3e4f3e3380d3a69c54a50b983c7c1b3f";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libX11 libXpm libXext ];
+
+  postUnpack = "sourceRoot=\${sourceRoot}/Src";
+
+  buildPhase=''
+    make prefix=$out
+  '';
+
+  installPhase = ''
+    mkdir -pv $out/bin
+    mkdir -pv $out/man/man1
+    make DESTDIR=$out install
+  '';
+
+  meta = {
+    description = "Clock for Windowmaker";
+    homepage = "http://www.cs.mun.ca/~gstarkes/wmaker/dockapps/time.html#wmcalclock";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.bstrik ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/windowmaker/dockapps/wmsm.app.nix b/nixpkgs/pkgs/applications/window-managers/windowmaker/dockapps/wmsm.app.nix
new file mode 100644
index 000000000000..ad255414a692
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/windowmaker/dockapps/wmsm.app.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, pkgconfig, libX11, libXpm, libXext }:
+
+stdenv.mkDerivation {
+  name = "wmsm.app-0.2.1";
+  src = fetchurl {
+     url = "http://linux-bsd-unix.strefa.pl/wmsm.app-0.2.1.tar.bz2";
+     sha256 = "369a8f2e5673c6b7ab0cf85166f38fbf553dd966c3c1cfeec0e32837defd32c7";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libX11 libXpm libXext ];
+
+  postUnpack = "sourceRoot=\${sourceRoot}/wmsm";
+
+  NIX_CFLAGS_COMPILE = "-std=gnu89";
+
+  installPhase = ''
+    substituteInPlace Makefile --replace "PREFIX	= /usr/X11R6/bin" "" --replace "/usr/bin/install" "install"
+    mkdir -pv $out/bin;
+    make PREFIX=$out/bin install;
+    '';
+
+  meta = {
+    description = "System monitor for Windowmaker";
+    homepage = "http://linux-bsd-unix.strefa.pl";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.bstrik ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/windowmaker/dockapps/wmsystemtray.nix b/nixpkgs/pkgs/applications/window-managers/windowmaker/dockapps/wmsystemtray.nix
new file mode 100644
index 000000000000..3e073cd8e91b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/windowmaker/dockapps/wmsystemtray.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, pkgconfig, libX11, libXpm, libXext, libXfixes, libXmu }:
+
+stdenv.mkDerivation {
+  name = "wmsystemtray-1.4";
+  src = fetchurl {
+     url = "mirror://sourceforge/project/wmsystemtray/wmsystemtray/wmsystemtray-1.4.tar.gz";
+     sha256 = "8edef43691e9fff071000e29166c7c1ad420c0956e9068151061e881c8ac97e9";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libX11 libXpm libXext libXfixes libXmu ];
+
+  meta = {
+    description = "Systemtray for Windowmaker";
+    homepage = "http://wmsystemtray.sourceforge.net";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.bstrik ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/wmfs/default.nix b/nixpkgs/pkgs/applications/window-managers/wmfs/default.nix
new file mode 100644
index 000000000000..a53fc560abca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/wmfs/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchFromGitHub, gnumake,
+  libX11, libXinerama, libXrandr, libXpm, libXft, imlib2 }:
+stdenv.mkDerivation {
+  pname = "wmfs";
+
+  version = "201902";
+
+  src = fetchFromGitHub {
+    owner = "xorg62";
+    repo = "wmfs";
+    sha256 = "1m7dsmmlhq2qipim659cp9aqlriz1cwrrgspl8baa5pncln0gd5c";
+    rev = "b7b8ff812d28c79cb22a73db2739989996fdc6c2";
+  };
+
+  nativeBuildInputs = [
+    gnumake
+  ];
+
+  buildInputs = [
+    imlib2
+    libX11
+    libXinerama
+    libXrandr
+    libXpm
+    libXft
+  ];
+
+  preConfigure = "substituteInPlace configure --replace '-lxft' '-lXft'";
+
+  makeFlags = [
+    "PREFIX=${placeholder "out"}"
+    "XDG_CONFIG_DIR=${placeholder "out"}/etc/xdg"
+    "MANPREFIX=${placeholder "out"}/share/man"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Window manager from scratch";
+    license = licenses.bsd2;
+    maintainers = [ maintainers.balsoft ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/wmii-hg/default.nix b/nixpkgs/pkgs/applications/window-managers/wmii-hg/default.nix
new file mode 100644
index 000000000000..721e618b1d43
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/wmii-hg/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchurl, unzip, pkgconfig, libixp_hg, txt2tags, dash, python, which
+, libX11 , libXrender, libXext, libXinerama, libXrandr, libXft }:
+
+stdenv.mkDerivation rec {
+  rev = "2823";
+  version = "hg-2012-12-09";
+  pname = "wmii";
+
+  src = fetchurl {
+    url = "https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/wmii/source-archive.zip";
+    sha256 = "1wmkq14zvmfrmydl8752xz852cy7agrx3qp4fy2cc5asb2r9abaz";
+  };
+
+  # for dlopen-ing
+  patchPhase = ''
+    substituteInPlace lib/libstuff/x11/xft.c --replace "libXft.so" "$(pkg-config --variable=libdir xft)/libXft.so.2"
+    substituteInPlace cmd/wmii.sh.sh --replace "\$(which which)" "${which}/bin/which"
+  '';
+
+  configurePhase = ''
+    for file in $(grep -lr '#!.*sh'); do
+      sed -i 's|#!.*sh|#!${dash}/bin/dash|' $file
+    done
+
+    cat <<EOF >> config.mk
+    PREFIX = $out
+    LIBIXP = ${libixp_hg}/lib/libixp.a
+    BINSH = ${dash}/bin/dash
+    EOF
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ unzip libixp_hg txt2tags dash python which
+                  libX11 libXrender libXext libXinerama libXrandr libXft ];
+
+  # For some reason including mercurial in buildInputs did not help
+  makeFlags = [ "WMII_HGVERSION=hg${rev}" ];
+
+  meta = {
+    homepage = "https://suckless.org/"; # https://wmii.suckless.org/ does not exist anymore
+    description = "A small window manager controlled by a 9P filesystem";
+    maintainers = with stdenv.lib.maintainers; [ kovirobi ];
+    license = stdenv.lib.licenses.mit;
+    inherit version;
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/xmonad/log-applet/default.nix b/nixpkgs/pkgs/applications/window-managers/xmonad/log-applet/default.nix
new file mode 100644
index 000000000000..7c6041b576e3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/xmonad/log-applet/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchFromGitHub, pkgconfig, autoreconfHook, glib, dbus-glib
+, desktopSupport ? "gnomeflashback", xorg
+, gtk2
+, gtk3, gnome3, mate
+, libxfce4util, xfce4-panel
+}:
+
+assert desktopSupport == "gnomeflashback" || desktopSupport == "mate"  || desktopSupport == "xfce4";
+
+stdenv.mkDerivation rec {
+  version = "unstable-2017-09-15";
+  pname = "xmonad-log-applet";
+  name = "${pname}-${desktopSupport}-${version}";
+
+  src = fetchFromGitHub {
+    owner = "kalj";
+    repo = pname;
+    rev = "a1b294cad2f266e4f18d9de34167fa96a0ffdba8";
+    sha256 = "042307grf4zvn61gnflhsj5xsjykrk9sjjsprprm4iij0qpybxcw";
+  };
+
+  buildInputs = [ glib dbus-glib xorg.xcbutilwm ]
+    ++ stdenv.lib.optionals (desktopSupport == "gnomeflashback") [ gtk3 gnome3.gnome-panel ]
+    ++ stdenv.lib.optionals (desktopSupport == "mate") [ gtk3 mate.mate-panel ]
+    ++ stdenv.lib.optionals (desktopSupport == "xfce4") [ gtk2 libxfce4util xfce4-panel ]
+  ;
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+
+  configureFlags =  [ "--with-panel=${desktopSupport}" ];
+
+  patches = [ ./fix-paths.patch ];
+
+  # Setup hook replaces ${prefix} in pc files so we cannot use
+  # --define-variable=prefix=$prefix
+  PKG_CONFIG_LIBXFCE4PANEL_1_0_LIBDIR = "$(out)/lib";
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/kalj/xmonad-log-applet";
+    license = licenses.bsd3;
+    description = "An applet that will display XMonad log information (${desktopSupport} version)";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/window-managers/xmonad/log-applet/fix-paths.patch b/nixpkgs/pkgs/applications/window-managers/xmonad/log-applet/fix-paths.patch
new file mode 100644
index 000000000000..5e1fc7114dc8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/xmonad/log-applet/fix-paths.patch
@@ -0,0 +1,57 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -20,7 +20,7 @@
+ PKG_CHECK_MODULES(XCB, xcb xcb-ewmh)
+ 
+ PKG_CHECK_MODULES(DBUS_GLIB, dbus-glib-1 >= 0.80)
+-SESSION_BUS_SERVICES_DIR=`$PKG_CONFIG --variable=session_bus_services_dir dbus-1`
++SESSION_BUS_SERVICES_DIR=$prefix/share/dbus-1/services
+ AC_SUBST([SESSION_BUS_SERVICES_DIR])
+ 
+ AC_ARG_WITH(
+@@ -32,35 +32,35 @@
+ AS_IF(
+     [test "x$panel" = xgnome2],
+         [PKG_CHECK_MODULES(LIBPANEL, libpanelapplet-3.0 >= 2.32.0)]
+-        LIBPANEL_APPLET_DIR=`$PKG_CONFIG --variable=prefix libpanelapplet-3.0`/share/gnome-panel/applets
+-        PLUGIN_DIR=`$PKG_CONFIG --variable=prefix libpanelapplet-3.0`/libexec
++        LIBPANEL_APPLET_DIR=$prefix/share/gnome-panel/applets
++        PLUGIN_DIR=$prefix/libexec
+         [AC_DEFINE(PANEL_GNOME, 1, [panel type])]
+         [AC_DEFINE(PANEL_GNOME2, 1, [panel type])]
+         ,
+     [test "x$panel" = xgnome3],
+         [PKG_CHECK_MODULES(LIBPANEL, libpanelapplet-4.0 >= 3.0.0)]
+-        LIBPANEL_APPLET_DIR=`$PKG_CONFIG --variable=libpanel_applet_dir libpanelapplet-4.0`
+-        PLUGIN_DIR=`$PKG_CONFIG --variable=prefix libpanelapplet-4.0`/libexec
++        LIBPANEL_APPLET_DIR=`$PKG_CONFIG --define-variable=prefix=$prefix --variable=libpanel_applet_dir libpanelapplet-4.0`
++        PLUGIN_DIR=$prefix/libexec
+         [AC_DEFINE(PANEL_GNOME, 1, [panel type])]
+         [AC_DEFINE(PANEL_GNOME3, 1, [panel type])]
+         ,
+     [test "x$panel" = xgnomeflashback],
+         [PKG_CHECK_MODULES(LIBPANEL, libpanel-applet >= 3.0.0)]
+-        LIBPANEL_APPLET_DIR=`$PKG_CONFIG --variable=libpanel_applet_dir libpanel-applet`
+-        PLUGIN_DIR=`$PKG_CONFIG --variable=prefix libpanel-applet`/libexec
++        LIBPANEL_APPLET_DIR=`$PKG_CONFIG --define-variable=prefix=$prefix --variable=libpanel_applet_dir libpanel-applet`
++        PLUGIN_DIR=$prefix/libexec
+         [AC_DEFINE(PANEL_GNOME, 1, [panel type])]
+         [AC_DEFINE(PANEL_GNOMEFLASHBACK, 1, [panel type])]
+         ,
+     [test "x$panel" = xmate],
+         [PKG_CHECK_MODULES(LIBPANEL, libmatepanelapplet-4.0 >= 1.4.0)]
+-        LIBPANEL_APPLET_DIR=`$PKG_CONFIG --variable=prefix libmatepanelapplet-4.0`/share/mate-panel/applets
+-        PLUGIN_DIR=`$PKG_CONFIG --variable=prefix libmatepanelapplet-4.0`/libexec
++        LIBPANEL_APPLET_DIR=$prefix/share/mate-panel/applets
++        PLUGIN_DIR=$prefix/libexec
+         [AC_DEFINE(PANEL_MATE, 1, [panel type])]
+         ,
+     [test "x$panel" = xxfce4],
+         [PKG_CHECK_MODULES(LIBPANEL, libxfce4panel-1.0 >= 4.6.0)]
+-        LIBPANEL_APPLET_DIR=`$PKG_CONFIG --variable=prefix libxfce4panel-1.0`/share/xfce4/panel-plugins
+-        PLUGIN_DIR=`$PKG_CONFIG --variable=libdir libxfce4panel-1.0`/xfce4/panel/plugins
++        LIBPANEL_APPLET_DIR=$prefix/share/xfce4/panel-plugins
++        PLUGIN_DIR=`$PKG_CONFIG --define-variable=prefix=$prefix --variable=libdir libxfce4panel-1.0`/xfce4/panel/plugins
+         [AC_DEFINE(PANEL_XFCE4, 1, [panel type])]
+         ,
+     [AC_MSG_ERROR([Unknown panel type, use gnome2, gnome3, gnomeflashback, mate or xfce4])]
diff --git a/nixpkgs/pkgs/applications/window-managers/xmonad/wrapper.nix b/nixpkgs/pkgs/applications/window-managers/xmonad/wrapper.nix
new file mode 100644
index 000000000000..f5c9f12a23f6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/xmonad/wrapper.nix
@@ -0,0 +1,20 @@
+{ stdenv, ghcWithPackages, xmessage, makeWrapper, packages }:
+
+let
+xmonadEnv = ghcWithPackages (self: [ self.xmonad ] ++ packages self);
+in stdenv.mkDerivation {
+  name = "xmonad-with-packages-${xmonadEnv.version}";
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildCommand = ''
+    install -D ${xmonadEnv}/share/man/man1/xmonad.1.gz $out/share/man/man1/xmonad.1.gz
+    makeWrapper ${xmonadEnv}/bin/xmonad $out/bin/xmonad \
+      --set NIX_GHC "${xmonadEnv}/bin/ghc" \
+      --set XMONAD_XMESSAGE "${xmessage}/bin/xmessage"
+  '';
+
+  # trivial derivation
+  preferLocalBuild = true;
+  allowSubstitutes = false;
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/yabar/build.nix b/nixpkgs/pkgs/applications/window-managers/yabar/build.nix
new file mode 100644
index 000000000000..10806ba78cfe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/yabar/build.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchFromGitHub, cairo, gdk-pixbuf, libconfig, pango, pkgconfig
+, xcbutilwm, alsaLib, wirelesstools, asciidoc, libxslt, makeWrapper, docbook_xsl
+, configFile ? null, lib
+, rev, sha256, version, patches ? []
+}:
+
+stdenv.mkDerivation {
+  pname = "yabar";
+  inherit version;
+
+  src = fetchFromGitHub {
+    inherit rev sha256;
+
+    owner = "geommer";
+    repo  = "yabar";
+  };
+
+  inherit patches;
+
+  hardeningDisable = [ "format" ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    cairo gdk-pixbuf libconfig pango xcbutilwm docbook_xsl
+    alsaLib wirelesstools asciidoc libxslt makeWrapper
+  ];
+
+  postPatch = ''
+    substituteInPlace ./Makefile \
+      --replace "\$(shell git describe)" "${version}" \
+      --replace "a2x" "${asciidoc}/bin/a2x --no-xmllint"
+  '';
+
+  makeFlags = [ "DESTDIR=$(out)" "PREFIX=/" ];
+
+  postInstall = ''
+    mkdir -p $out/share/yabar/examples
+    cp -v examples/*.config $out/share/yabar/examples
+
+    ${lib.optionalString (configFile != null)
+      ''
+        wrapProgram "$out/bin/yabar" \
+          --add-flags "-c ${configFile}"
+      ''
+    }
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A modern and lightweight status bar for X window managers";
+    homepage    = "https://github.com/geommer/yabar";
+    license     = licenses.mit;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ ma27 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/yabar/default.nix b/nixpkgs/pkgs/applications/window-managers/yabar/default.nix
new file mode 100644
index 000000000000..a33a75676ee9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/yabar/default.nix
@@ -0,0 +1,18 @@
+{ callPackage, attrs ? {}, fetchpatch }:
+
+let
+  overrides = rec {
+    version = "0.4.0";
+
+    rev = version;
+    sha256 = "1nw9dar1caqln5fr0dqk7dg6naazbpfwwzxwlkxz42shsc3w30a6";
+
+    patches = [
+      (fetchpatch {
+        url = "https://github.com/geommer/yabar/commit/9779a5e04bd6e8cdc1c9fcf5d7ac31416af85a53.patch";
+        sha256 = "1szhr3k1kq6ixgnp74wnzgfvgxm6r4zpc3ny2x2wzy6lh2czc07s";
+      })
+    ];
+
+  } // attrs;
+in callPackage ./build.nix overrides
diff --git a/nixpkgs/pkgs/applications/window-managers/yabar/unstable.nix b/nixpkgs/pkgs/applications/window-managers/yabar/unstable.nix
new file mode 100644
index 000000000000..47c8f6c5e568
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/yabar/unstable.nix
@@ -0,0 +1,25 @@
+{ fetchpatch, playerctl, libxkbcommon, callPackage, attrs ? {} }:
+
+let
+  pkg = callPackage ./build.nix ({
+    version = "unstable-2018-01-18";
+
+    rev    = "c516e8e78d39dd2b339acadc4c175347171150bb";
+    sha256 = "1p9lx78cayyn7qc2q66id2xfs76jyddnqv2x1ypsvixaxwcvqgdb";
+  } // attrs);
+in pkg.overrideAttrs (o: {
+  buildInputs = o.buildInputs ++ [
+    playerctl libxkbcommon
+  ];
+
+  makeFlags = o.makeFlags ++ [
+    "PLAYERCTL=1"
+  ];
+
+  patches = (o.patches or []) ++ [
+    (fetchpatch {
+      url = "https://github.com/geommer/yabar/commit/008dc1420ff684cf12ce2ef3ac9d642e054e39f5.patch";
+      sha256 = "1q7nd66ai6nr2m6iqxn55gvbr4r5gjc00c8wyjc3riv31qcbqbhv";
+    })
+  ];
+})
diff --git a/nixpkgs/pkgs/applications/window-managers/yeahwm/default.nix b/nixpkgs/pkgs/applications/window-managers/yeahwm/default.nix
new file mode 100644
index 000000000000..a8323ff1d386
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/yeahwm/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, fetchurl
+, lesstif
+, libX11, libXext, libXmu, libXinerama }:
+
+stdenv.mkDerivation rec {
+
+  pname = "yeahwm";
+  version = "0.3.5";
+
+  src = fetchurl {
+    url = "http://phrat.de/${pname}_${version}.tar.gz";
+    sha256 = "01gfzjvb40n16m2ja4238nk08k4l203y6a61cydqvf68924fjb69";
+  };
+
+  buildInputs = [ lesstif libX11 libXext libXinerama libXmu ];
+
+  dontConfigure = true;
+
+  preBuild = ''
+    makeFlagsArray+=( CC="${stdenv.cc}/bin/cc" \
+                      XROOT="${libX11}" \
+                      INCLUDES="-I${libX11.dev}/include -I${libXext.dev}/include -I${libXinerama.dev}/include -I${libXmu.dev}/include" \
+                      LDPATH="-L${libX11}/lib -L${libXext}/lib -L${libXinerama}/lib -L${libXmu}/lib" \
+                      prefix="${placeholder "out"}" )
+  '';
+
+  postInstall = ''
+    gzip -9 --stdout yeahwm.1 > yeahwm.1.gz
+    install -m644 yeahwm.1.gz ${placeholder "out"}/share/man/man1/
+  '';
+
+  meta = with stdenv.lib;{
+    description = "An X window manager based on evilwm and aewm";
+    longDescription = ''
+      YeahWM is a h* window manager for X based on evilwm and aewm.
+
+      Features
+      - Sloppy Focus.
+      - BeOS-like tabbed titles, which can be repositioned.
+      - Support for Xinerama.
+      - Simple Appearance.
+      - Good keyboard control.
+      - Creative usage of the mouse.
+      - Respects aspect size hints.
+      - Solid resize and move operations.
+      - Virtual Desktops.
+      - "Magic" Screen edges for desktop switching.
+      - Snapping to other windows and screen borders when moving windows.
+      - Small binary size(ca. 23kb).
+      - Little resource usage.
+      - It's slick.
+    '';
+    homepage = "http://phrat.de/index.html";
+    license = licenses.isc;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = libX11.meta.platforms;
+  };
+}